diff --git a/.clang-format b/.clang-format index 70d6d17bc23..83d6a56f8d9 100644 --- a/.clang-format +++ b/.clang-format @@ -1,3 +1,3 @@ -Language: JavaScript -BasedOnStyle: Google -ColumnLimit: 80 +Language: JavaScript +BasedOnStyle: Google +ColumnLimit: 80 diff --git a/.eslintignore b/.eslintignore index 45e036d9c2c..fa42e8d1942 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,19 +1,19 @@ -*_compressed*.js -/msg/* -/build/* -/dist/* -/tests/blocks/* -/tests/themes/* -/tests/compile/* -/tests/jsunit/* -/tests/generators/* -/tests/mocha/run_mocha_tests_in_browser.js -/tests/screenshot/* -/tests/test_runner.js -/tests/workspace_svg/* -/generators/* -/demos/* -/appengine/* -/externs/* -/closure/* -/scripts/gulpfiles/* +*_compressed*.js +/msg/* +/build/* +/dist/* +/tests/blocks/* +/tests/themes/* +/tests/compile/* +/tests/jsunit/* +/tests/generators/* +/tests/mocha/run_mocha_tests_in_browser.js +/tests/screenshot/* +/tests/test_runner.js +/tests/workspace_svg/* +/generators/* +/demos/* +/appengine/* +/externs/* +/closure/* +/scripts/gulpfiles/* diff --git a/.eslintrc.json b/.eslintrc.json index 5a98b4b4312..1a1e4b7dde7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,88 +1,88 @@ -{ - "rules": { - "curly": ["error"], - "eol-last": ["error"], - "keyword-spacing": ["error"], - "linebreak-style": ["error", "unix"], - "max-len": [ - "error", - { - "code": 100, - "tabWidth": 4, - "ignoreStrings": true, - "ignoreRegExpLiterals": true, - "ignoreUrls": true - } - ], - "no-trailing-spaces": ["error", { "skipBlankLines": true }], - "no-unused-vars": [ - "warn", - { - "args": "after-used", - // Ignore vars starting with an underscore. - "varsIgnorePattern": "^_", - // Ignore arguments starting with an underscore. - "argsIgnorePattern": "^_" - } - ], - // Blockly uses for exporting symbols. no-self-assign added in eslint 5. - "no-self-assign": ["off"], - // Blockly uses single quotes except for JSON blobs, which must use double quotes. - "quotes": ["off"], - "semi": ["error", "always"], - // Blockly doesn't have space before function paren when defining functions. - "space-before-function-paren": ["error", "never"], - // Blockly doesn't have space before function paren when calling functions. - "func-call-spacing": ["error", "never"], - "space-infix-ops": ["error"], - // Blockly uses 'use strict' in files. - "strict": ["off"], - // Closure style allows redeclarations. - "no-redeclare": ["off"], - "valid-jsdoc": ["error", {"requireReturn": false}], - "no-console": ["off"], - "no-multi-spaces": ["error", { "ignoreEOLComments": true }], - "operator-linebreak": ["error", "after"], - "spaced-comment": ["error", "always", { - "block": { - "balanced": true - }, - "exceptions": ["*"] - }], - // Blockly uses prefixes for optional arguments and test-only functions. - "camelcase": ["error", { - "properties": "never", - "allow": ["^opt_", "^_opt_", "^testOnly_"] - }], - // Use clang-format for indentation by running `npm run format`. - "indent": ["off"], - // Blockly uses capital letters for some non-constructor namespaces. - // Keep them for legacy reasons. - "new-cap": ["off"], - // Mostly use default rules for brace style, but allow single-line blocks. - "brace-style": ["error", "1tbs", { "allowSingleLine": true }], - // Blockly uses objects as maps, but uses Object.create(null) to - // instantiate them. - "guard-for-in": ["off"], - "prefer-spread": ["off"], - "comma-dangle": ["error", { - "arrays": "always-multiline", - "objects": "always-multiline", - "imports": "always-multiline", - "exports": "always-multiline", - "functions": "ignore" - }] - }, - "env": { - "es2020": true, - "browser": true - }, - "globals": { - "Blockly": true, - "goog": true, - "exports": true - }, - "extends": [ - "eslint:recommended", "google" - ] -} +{ + "rules": { + "curly": ["error"], + "eol-last": ["error"], + "keyword-spacing": ["error"], + "linebreak-style": ["error", "unix"], + "max-len": [ + "error", + { + "code": 100, + "tabWidth": 4, + "ignoreStrings": true, + "ignoreRegExpLiterals": true, + "ignoreUrls": true + } + ], + "no-trailing-spaces": ["error", { "skipBlankLines": true }], + "no-unused-vars": [ + "warn", + { + "args": "after-used", + // Ignore vars starting with an underscore. + "varsIgnorePattern": "^_", + // Ignore arguments starting with an underscore. + "argsIgnorePattern": "^_" + } + ], + // Blockly uses for exporting symbols. no-self-assign added in eslint 5. + "no-self-assign": ["off"], + // Blockly uses single quotes except for JSON blobs, which must use double quotes. + "quotes": ["off"], + "semi": ["error", "always"], + // Blockly doesn't have space before function paren when defining functions. + "space-before-function-paren": ["error", "never"], + // Blockly doesn't have space before function paren when calling functions. + "func-call-spacing": ["error", "never"], + "space-infix-ops": ["error"], + // Blockly uses 'use strict' in files. + "strict": ["off"], + // Closure style allows redeclarations. + "no-redeclare": ["off"], + "valid-jsdoc": ["error", {"requireReturn": false}], + "no-console": ["off"], + "no-multi-spaces": ["error", { "ignoreEOLComments": true }], + "operator-linebreak": ["error", "after"], + "spaced-comment": ["error", "always", { + "block": { + "balanced": true + }, + "exceptions": ["*"] + }], + // Blockly uses prefixes for optional arguments and test-only functions. + "camelcase": ["error", { + "properties": "never", + "allow": ["^opt_", "^_opt_", "^testOnly_"] + }], + // Use clang-format for indentation by running `npm run format`. + "indent": ["off"], + // Blockly uses capital letters for some non-constructor namespaces. + // Keep them for legacy reasons. + "new-cap": ["off"], + // Mostly use default rules for brace style, but allow single-line blocks. + "brace-style": ["error", "1tbs", { "allowSingleLine": true }], + // Blockly uses objects as maps, but uses Object.create(null) to + // instantiate them. + "guard-for-in": ["off"], + "prefer-spread": ["off"], + "comma-dangle": ["error", { + "arrays": "always-multiline", + "objects": "always-multiline", + "imports": "always-multiline", + "exports": "always-multiline", + "functions": "ignore" + }] + }, + "env": { + "es2020": true, + "browser": true + }, + "globals": { + "Blockly": true, + "goog": true, + "exports": true + }, + "extends": [ + "eslint:recommended", "google" + ] +} diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index fcd866043f5..e8bf0da1199 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,40 +1,40 @@ -# Contributing to Blockly - -Want to contribute? Great! -- First, read this page (including the small print at the end). -- Second, please make pull requests against develop, not master. If your patch - needs to go into master immediately, include a note in your PR. - -For more information on style guide and other details, head over to the [Blockly Developers site](https://developers.google.com/blockly/guides/modify/contributing). - -### Before you contribute -Before we can use your code, you must sign the -[Google Individual Contributor License Agreement](https://cla.developers.google.com/about/google-individual) -(CLA), which you can do online. The CLA is necessary mainly because you own the -copyright to your changes, even after your contribution becomes part of our -codebase, so we need your permission to use and distribute your code. We also -need to be sure of various other things—for instance that you'll tell us if you -know that your code infringes on other people's patents. You don't have to sign -the CLA until after you've submitted your code for review and a member has -approved it, but you must do it before we can put your code into our codebase. - -### Larger changes -Before you start working on a larger contribution, you should get in touch with -us first through the issue tracker with your idea so that we can help out and -possibly guide you. Coordinating up front makes it much easier to avoid -frustration later on. - -### Code reviews -All submissions, including submissions by project members, require review. We -use Github pull requests for this purpose. - -### Browser compatibility -We care strongly about making Blockly work on all browsers. As of 2017 we -support IE 10 and 11, Edge, Chrome, Safari, and Firefox. We will not accept -changes that only work on a subset of those browsers. You can check [caniuse.com](https://caniuse.com/) -for compatibility information. - -### The small print -Contributions made by corporations are covered by a different agreement than -the one above, the -[Software Grant and Corporate Contributor License Agreement](https://cla.developers.google.com/about/google-corporate). +# Contributing to Blockly + +Want to contribute? Great! +- First, read this page (including the small print at the end). +- Second, please make pull requests against develop, not master. If your patch + needs to go into master immediately, include a note in your PR. + +For more information on style guide and other details, head over to the [Blockly Developers site](https://developers.google.com/blockly/guides/modify/contributing). + +### Before you contribute +Before we can use your code, you must sign the +[Google Individual Contributor License Agreement](https://cla.developers.google.com/about/google-individual) +(CLA), which you can do online. The CLA is necessary mainly because you own the +copyright to your changes, even after your contribution becomes part of our +codebase, so we need your permission to use and distribute your code. We also +need to be sure of various other things—for instance that you'll tell us if you +know that your code infringes on other people's patents. You don't have to sign +the CLA until after you've submitted your code for review and a member has +approved it, but you must do it before we can put your code into our codebase. + +### Larger changes +Before you start working on a larger contribution, you should get in touch with +us first through the issue tracker with your idea so that we can help out and +possibly guide you. Coordinating up front makes it much easier to avoid +frustration later on. + +### Code reviews +All submissions, including submissions by project members, require review. We +use Github pull requests for this purpose. + +### Browser compatibility +We care strongly about making Blockly work on all browsers. As of 2017 we +support IE 10 and 11, Edge, Chrome, Safari, and Firefox. We will not accept +changes that only work on a subset of those browsers. You can check [caniuse.com](https://caniuse.com/) +for compatibility information. + +### The small print +Contributions made by corporations are covered by a different agreement than +the one above, the +[Software Grant and Corporate Contributor License Agreement](https://cla.developers.google.com/about/google-corporate). diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 6f2e01b3fa6..c1603d20254 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,65 +1,65 @@ ---- -name: Bug Report -about: Create a report to help us improve -labels: 'type: bug, issue: triage' -assignees: '' - ---- - - - -**Describe the bug** - - - -**To Reproduce** - - -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** - - - -**Screenshots** - - - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Stack Traces** - - - -``` -Replace with error stack trace. -``` - -**Additional context** - - +--- +name: Bug Report +about: Create a report to help us improve +labels: 'type: bug, issue: triage' +assignees: '' + +--- + + + +**Describe the bug** + + + +**To Reproduce** + + +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** + + + +**Screenshots** + + + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Stack Traces** + + + +``` +Replace with error stack trace. +``` + +**Additional context** + + diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 17ed2a34d18..6506723df41 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,7 +1,7 @@ -contact_links: - - name: Blockly Forum - url: https://groups.google.com/forum/#!forum/blockly - about: The Blockly developer forum, where you can ask and answer questions. - - name: Plugins and examples - url: https://github.com/google/blockly-samples/issues/new/choose - about: File bugs or feature requests about plugins and samples in our blockly-samples repository. +contact_links: + - name: Blockly Forum + url: https://groups.google.com/forum/#!forum/blockly + about: The Blockly developer forum, where you can ask and answer questions. + - name: Plugins and examples + url: https://github.com/google/blockly-samples/issues/new/choose + about: File bugs or feature requests about plugins and samples in our blockly-samples repository. diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md index 343defc1228..6ffe7b8a797 100644 --- a/.github/ISSUE_TEMPLATE/documentation.md +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -1,44 +1,44 @@ ---- -name: Documentation -about: Report an issue with our documentation -labels: 'type: documentation, issue: triage' -assignees: '' - ---- - - - -**Where** - - - -**What** - - - -- [ ] Text -- [ ] Image or Gif -- [ ] Other - -**Old content** - - - -**Suggested content** - - - -**Additional context** - - +--- +name: Documentation +about: Report an issue with our documentation +labels: 'type: documentation, issue: triage' +assignees: '' + +--- + + + +**Where** + + + +**What** + + + +- [ ] Text +- [ ] Image or Gif +- [ ] Other + +**Old content** + + + +**Suggested content** + + + +**Additional context** + + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 668e1adb166..777847c7ab1 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,23 +1,23 @@ ---- -name: Feature request -about: Suggest an idea for this project -labels: 'type: feature request, issue: triage' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** - - - -**Describe the solution you'd like** - - - -**Describe alternatives you've considered** - - - -**Additional context** - - +--- +name: Feature request +about: Suggest an idea for this project +labels: 'type: feature request, issue: triage' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** + + + +**Describe the solution you'd like** + + + +**Describe alternatives you've considered** + + + +**Additional context** + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 94e643cfa03..5546b600764 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,52 +1,52 @@ - - -## The basics - - - -- [ ] I branched from develop -- [ ] My pull request is against develop -- [ ] My code follows the [style guide](https://developers.google.com/blockly/guides/modify/web/style-guide) -- [ ] I ran `npm run format` and `npm run lint` - -## The details -### Resolves - - - -### Proposed Changes - - - -#### Behavior Before Change - - - -#### Behavior After Change - - - -### Reason for Changes - - - -### Test Coverage - - - -### Documentation - - - -### Additional Information - - + + +## The basics + + + +- [ ] I branched from develop +- [ ] My pull request is against develop +- [ ] My code follows the [style guide](https://developers.google.com/blockly/guides/modify/web/style-guide) +- [ ] I ran `npm run format` and `npm run lint` + +## The details +### Resolves + + + +### Proposed Changes + + + +#### Behavior Before Change + + + +#### Behavior After Change + + + +### Reason for Changes + + + +### Test Coverage + + + +### Documentation + + + +### Additional Information + + diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 65f8104c44f..f6e961b5984 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,33 +1,33 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "npm" # See documentation for possible values - directory: "/" # Location of package manifests - target-branch: "develop" - schedule: - interval: "weekly" - ignore: - - dependency-name: "jsdom" - # For jsdom, ignore all updates for version 16. - # We should test that this does not cause issue - # google/blockly-samples#665 when version 17 is released. - versions: "16.x" - commit-message: - prefix: "chore(deps)" - labels: - - "PR: chore" - - "PR: dependencies" - - package-ecosystem: "github-actions" # See documentation for possible values - directory: "/" - target-branch: "develop" - schedule: - interval: "weekly" - commit-message: - prefix: "chore(deps)" - labels: - - "PR: chore" - - "PR: dependencies" +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "npm" # See documentation for possible values + directory: "/" # Location of package manifests + target-branch: "develop" + schedule: + interval: "weekly" + ignore: + - dependency-name: "jsdom" + # For jsdom, ignore all updates for version 16. + # We should test that this does not cause issue + # google/blockly-samples#665 when version 17 is released. + versions: "16.x" + commit-message: + prefix: "chore(deps)" + labels: + - "PR: chore" + - "PR: dependencies" + - package-ecosystem: "github-actions" # See documentation for possible values + directory: "/" + target-branch: "develop" + schedule: + interval: "weekly" + commit-message: + prefix: "chore(deps)" + labels: + - "PR: chore" + - "PR: dependencies" diff --git a/.github/release-please.yml b/.github/release-please.yml index 0115689b288..146bcf01274 100644 --- a/.github/release-please.yml +++ b/.github/release-please.yml @@ -1,6 +1,6 @@ -primaryBranch: develop -releaseType: node -packageName: blockly -manifest: true -manifestConfig: release-please-config.json -manifestFile: .release-please-manifest.json +primaryBranch: develop +releaseType: node +packageName: blockly +manifest: true +manifestConfig: release-please-config.json +manifestFile: .release-please-manifest.json diff --git a/.github/release.yml b/.github/release.yml index 4147d3f547c..656d28080b0 100644 --- a/.github/release.yml +++ b/.github/release.yml @@ -1,26 +1,26 @@ -# release.yml - -changelog: - exclude: - labels: - - ignore-for-release - authors: - - dependabot - categories: - - title: Breaking Changes 🛠 - labels: - - breaking change - - title: New Features - labels: - - "PR: feature" - - title: Bug fixes - labels: - - "PR: fix" - - title: Cleanup ♻️ - labels: - - "PR: chore" - - "PR: docs" - - "PR: refactor" - - title: Other Changes - labels: - - "*" +# release.yml + +changelog: + exclude: + labels: + - ignore-for-release + authors: + - dependabot + categories: + - title: Breaking Changes 🛠 + labels: + - breaking change + - title: New Features + labels: + - "PR: feature" + - title: Bug fixes + labels: + - "PR: fix" + - title: Cleanup ♻️ + labels: + - "PR: chore" + - "PR: docs" + - "PR: refactor" + - title: Other Changes + labels: + - "*" diff --git a/.github/workflows/appengine_deploy.yml b/.github/workflows/appengine_deploy.yml index f768874a31e..91e8619fb33 100644 --- a/.github/workflows/appengine_deploy.yml +++ b/.github/workflows/appengine_deploy.yml @@ -1,54 +1,54 @@ -# Workflow that prepares files and deploys to appengine - -name: Deploy to App Engine - -# Controls when the workflow will run -on: - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -jobs: - prepare: - name: Prepare - runs-on: ubuntu-latest - - steps: - # Checks-out the repository under $GITHUB_WORKSPACE. - # When running manually this checks out the master branch. - - uses: actions/checkout@v2 - - - name: Prepare demo files - # Install all dependencies, then copy all the files needed for demos. - run: | - npm install - npm run prepareDemos - - - name: Upload - uses: actions/upload-artifact@v2 - with: - name: appengine_files - path: _deploy/ - - deploy: - name: Deploy - runs-on: ubuntu-latest - # The prepare step must succeed for this step to run. - needs: prepare - steps: - - name: Download prepared files - uses: actions/download-artifact@v2 - with: - name: appengine_files - path: _deploy/ - - - name: Deploy to App Engine - uses: google-github-actions/deploy-appengine@v0.2.0 - # For parameters see: - # https://github.com/google-github-actions/deploy-appengine#inputs - with: - working_directory: _deploy/ - deliverables: app.yaml - project_id: ${{ secrets.GCP_PROJECT }} - credentials: ${{ secrets.GCP_SA_KEY }} - promote: false - version: vtest +# Workflow that prepares files and deploys to appengine + +name: Deploy to App Engine + +# Controls when the workflow will run +on: + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + prepare: + name: Prepare + runs-on: ubuntu-latest + + steps: + # Checks-out the repository under $GITHUB_WORKSPACE. + # When running manually this checks out the master branch. + - uses: actions/checkout@v2 + + - name: Prepare demo files + # Install all dependencies, then copy all the files needed for demos. + run: | + npm install + npm run prepareDemos + + - name: Upload + uses: actions/upload-artifact@v2 + with: + name: appengine_files + path: _deploy/ + + deploy: + name: Deploy + runs-on: ubuntu-latest + # The prepare step must succeed for this step to run. + needs: prepare + steps: + - name: Download prepared files + uses: actions/download-artifact@v2 + with: + name: appengine_files + path: _deploy/ + + - name: Deploy to App Engine + uses: google-github-actions/deploy-appengine@v0.2.0 + # For parameters see: + # https://github.com/google-github-actions/deploy-appengine#inputs + with: + working_directory: _deploy/ + deliverables: app.yaml + project_id: ${{ secrets.GCP_PROJECT }} + credentials: ${{ secrets.GCP_SA_KEY }} + promote: false + version: vtest diff --git a/.github/workflows/assign_reviewers.yml b/.github/workflows/assign_reviewers.yml index 2395a085d4f..933a3baf1ed 100644 --- a/.github/workflows/assign_reviewers.yml +++ b/.github/workflows/assign_reviewers.yml @@ -1,41 +1,41 @@ -name: Assign requested reviewers - -# This workflow adds requested reviewers as assignees. If you remove a -# requested reviewer, it will not remove them as an assignee. -# -# See https://github.com/google/blockly/issues/5643 for more -# information on why this was added. -# -# N.B.: Runs with a read-write repo token. Do not check out the -# submitted branch! -on: - pull_request_target: - types: [review_requested] - -jobs: - requested-reviewer: - runs-on: ubuntu-latest - steps: - - name: Assign requested reviewer - uses: actions/github-script@v5 - with: - script: | - try { - if (context.payload.pull_request === undefined) { - throw new Error("Can't get pull_request payload. " + - 'Check a request reviewer event was triggered.'); - } - const reviewers = context.payload.pull_request.requested_reviewers; - // Assignees takes in a list of logins rather than the - // reviewer object. - const reviewerNames = reviewers.map(reviewer => reviewer.login); - const {number:issue_number} = context.payload.pull_request; - github.rest.issues.addAssignees({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: issue_number, - assignees: reviewerNames - }); - } catch (error) { - core.setFailed(error.message); - } +name: Assign requested reviewers + +# This workflow adds requested reviewers as assignees. If you remove a +# requested reviewer, it will not remove them as an assignee. +# +# See https://github.com/google/blockly/issues/5643 for more +# information on why this was added. +# +# N.B.: Runs with a read-write repo token. Do not check out the +# submitted branch! +on: + pull_request_target: + types: [review_requested] + +jobs: + requested-reviewer: + runs-on: ubuntu-latest + steps: + - name: Assign requested reviewer + uses: actions/github-script@v5 + with: + script: | + try { + if (context.payload.pull_request === undefined) { + throw new Error("Can't get pull_request payload. " + + 'Check a request reviewer event was triggered.'); + } + const reviewers = context.payload.pull_request.requested_reviewers; + // Assignees takes in a list of logins rather than the + // reviewer object. + const reviewerNames = reviewers.map(reviewer => reviewer.login); + const {number:issue_number} = context.payload.pull_request; + github.rest.issues.addAssignees({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue_number, + assignees: reviewerNames + }); + } catch (error) { + core.setFailed(error.message); + } diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 289542ecef6..4f44d070f64 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,69 +1,69 @@ -# This workflow will do a clean install, start the selenium server, and run -# all of our tests. - -name: Node.js CI - -on: [pull_request] - -permissions: - contents: read - -jobs: - build: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - # TODO (#2114): re-enable osx build. - # os: [ubuntu-latest, macos-latest] - os: [ubuntu-latest] - node-version: [12.x, 14.x, 16.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v2 - with: - persist-credentials: false - - - name: Reconfigure git to use HTTP authentication - run: > - git config --global url."https://github.com/".insteadOf - ssh://git@github.com/ - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - - name: Npm Install - run: npm install - - - name: Linux Test Setup - if: runner.os == 'Linux' - run: source ./tests/scripts/setup_linux_env.sh - - - name: MacOS Test Setup - if: runner.os == 'macOS' - run: source ./tests/scripts/setup_osx_env.sh - - - name: Run - run: npm run test - - env: - CI: true - - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Use Node.js 16.x - uses: actions/setup-node@v1 - with: - node-version: 16.x - - - name: Npm Install - run: npm install - - - name: Lint - run: npm run lint +# This workflow will do a clean install, start the selenium server, and run +# all of our tests. + +name: Node.js CI + +on: [pull_request] + +permissions: + contents: read + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + # TODO (#2114): re-enable osx build. + # os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest] + node-version: [12.x, 14.x, 16.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v2 + with: + persist-credentials: false + + - name: Reconfigure git to use HTTP authentication + run: > + git config --global url."https://github.com/".insteadOf + ssh://git@github.com/ + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Npm Install + run: npm install + + - name: Linux Test Setup + if: runner.os == 'Linux' + run: source ./tests/scripts/setup_linux_env.sh + + - name: MacOS Test Setup + if: runner.os == 'macOS' + run: source ./tests/scripts/setup_osx_env.sh + + - name: Run + run: npm run test + + env: + CI: true + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js 16.x + uses: actions/setup-node@v1 + with: + node-version: 16.x + + - name: Npm Install + run: npm install + + - name: Lint + run: npm run lint diff --git a/.github/workflows/check_clang_format.yml b/.github/workflows/check_clang_format.yml index 58fd73b2ca5..66373e1ca4f 100644 --- a/.github/workflows/check_clang_format.yml +++ b/.github/workflows/check_clang_format.yml @@ -1,28 +1,28 @@ -name: Check clang format - -# N.B.: Runs with a read-only repo token. Safe(ish) to check out the -# submitted branch. -on: [pull_request] - -permissions: - contents: read - -jobs: - clang-formatter: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - uses: DoozyX/clang-format-lint-action@v0.13 - with: - source: 'core' - extensions: 'js,ts' - # This should be as close as possible to the version that the npm - # package supports. This can be found by running: - # npx clang-format --version. - clangFormatVersion: 13 - - # The Report clang format workflow (report_clang_format.yml) will - # run (if required) after this one to post a comment to the PR. - # (Note that the version of that workflow run will be the one on - # the master (default) branch, not the PR target branch.) +name: Check clang format + +# N.B.: Runs with a read-only repo token. Safe(ish) to check out the +# submitted branch. +on: [pull_request] + +permissions: + contents: read + +jobs: + clang-formatter: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - uses: DoozyX/clang-format-lint-action@v0.13 + with: + source: 'core' + extensions: 'js,ts' + # This should be as close as possible to the version that the npm + # package supports. This can be found by running: + # npx clang-format --version. + clangFormatVersion: 13 + + # The Report clang format workflow (report_clang_format.yml) will + # run (if required) after this one to post a comment to the PR. + # (Note that the version of that workflow run will be the one on + # the master (default) branch, not the PR target branch.) diff --git a/.github/workflows/develop_freeze.yml b/.github/workflows/develop_freeze.yml index d049b9f5104..07f86dea82b 100644 --- a/.github/workflows/develop_freeze.yml +++ b/.github/workflows/develop_freeze.yml @@ -1,26 +1,26 @@ -# This workflow will comment on pull requests that are submitted while develop -# is frozen during the week of release. Skips any pull requests that have the -# label 'ignore-freeze'. -# This workflow should be enabled only while develop is frozen. - -name: Develop Freeze PR Comment - -on: - # Trigger the workflow on pull request on develop branch - pull_request: - types: - - opened - - reopened - branches: - - develop - -jobs: - freeze-comment: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'ignore-freeze') }} - runs-on: ubuntu-latest - steps: - - name: PR Comment - uses: github-actions-up-and-running/pr-comment@f1f8ab2bf00dce6880a369ce08758a60c61d6c0b - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - message: "Thanks for the PR! The develop branch is currently frozen in preparation for the release so it may not be addressed until after release week." +# This workflow will comment on pull requests that are submitted while develop +# is frozen during the week of release. Skips any pull requests that have the +# label 'ignore-freeze'. +# This workflow should be enabled only while develop is frozen. + +name: Develop Freeze PR Comment + +on: + # Trigger the workflow on pull request on develop branch + pull_request: + types: + - opened + - reopened + branches: + - develop + +jobs: + freeze-comment: + if: ${{ !contains(github.event.pull_request.labels.*.name, 'ignore-freeze') }} + runs-on: ubuntu-latest + steps: + - name: PR Comment + uses: github-actions-up-and-running/pr-comment@f1f8ab2bf00dce6880a369ce08758a60c61d6c0b + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + message: "Thanks for the PR! The develop branch is currently frozen in preparation for the release so it may not be addressed until after release week." diff --git a/.github/workflows/tag_module_cleanup.yml b/.github/workflows/tag_module_cleanup.yml index 0265070af9c..30e70bf8a99 100644 --- a/.github/workflows/tag_module_cleanup.yml +++ b/.github/workflows/tag_module_cleanup.yml @@ -1,38 +1,38 @@ -# For new pull requests against the goog_module branch, adds the 'type: cleanup' -# label and sets the milestone to q3 2021 release. - -name: Tag module cleanup - -# Trigger on pull requests against goog_module branch only -# Uses pull_request_target to get write permissions so that it can write labels. -on: - pull_request_target: - branches: - - goog_module - -jobs: - tag-module-cleanup: - - # Add the type: cleanup label - runs-on: ubuntu-latest - steps: - - uses: actions/github-script@a3e7071a34d7e1f219a8a4de9a5e0a34d1ee1293 - with: - script: | - // Note that pull requests are considered issues and "shared" - // actions for both features, like manipulating labels and - // milestones are provided within the issues API. - await github.issues.update({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - // 2021 q3 release milestone. - // https://github.com/google/blockly/milestone/18 - milestone: 18 - }) - await github.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - labels: ['type: cleanup'] - }) +# For new pull requests against the goog_module branch, adds the 'type: cleanup' +# label and sets the milestone to q3 2021 release. + +name: Tag module cleanup + +# Trigger on pull requests against goog_module branch only +# Uses pull_request_target to get write permissions so that it can write labels. +on: + pull_request_target: + branches: + - goog_module + +jobs: + tag-module-cleanup: + + # Add the type: cleanup label + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@a3e7071a34d7e1f219a8a4de9a5e0a34d1ee1293 + with: + script: | + // Note that pull requests are considered issues and "shared" + // actions for both features, like manipulating labels and + // milestones are provided within the issues API. + await github.issues.update({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + // 2021 q3 release milestone. + // https://github.com/google/blockly/milestone/18 + milestone: 18 + }) + await github.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + labels: ['type: cleanup'] + }) diff --git a/.github/workflows/update_metadata.yml b/.github/workflows/update_metadata.yml index 3ca15405786..66cd23211f3 100644 --- a/.github/workflows/update_metadata.yml +++ b/.github/workflows/update_metadata.yml @@ -1,46 +1,46 @@ -# This workflow updates the check_metadata.sh script, which compares the current -# size of build artifacts against their size in the previous version of Blockly. - -name: Update Metadata - -on: [workflow_dispatch] - -permissions: - contents: read - -jobs: - update-metadata: - permissions: - contents: write # for peter-evans/create-pull-request to create branch - pull-requests: write # for peter-evans/create-pull-request to create a PR - runs-on: ubuntu-latest - - steps: - - name: Check Out Blockly - uses: actions/checkout@v2 - with: - ref: 'develop' - - - name: Use Node.js 16.x - uses: actions/setup-node@v1 - with: - node-version: 16.x - - - name: Build Blockly - run: npm run build:compressed - - - name: Build Blockly blocks - run: npm run build:blocks - - - name: Update Metadata - run: source ./tests/scripts/update_metadata.sh - - - name: Create Pull Request - uses: peter-evans/create-pull-request@9825ae65b1cb54b543b938503728b432a0176d29 - with: - commit-message: Update build artifact sizes in check_metadata.sh - delete-branch: true - title: Update build artifact sizes in check_metadata.sh - - - name: View Pull Request +# This workflow updates the check_metadata.sh script, which compares the current +# size of build artifacts against their size in the previous version of Blockly. + +name: Update Metadata + +on: [workflow_dispatch] + +permissions: + contents: read + +jobs: + update-metadata: + permissions: + contents: write # for peter-evans/create-pull-request to create branch + pull-requests: write # for peter-evans/create-pull-request to create a PR + runs-on: ubuntu-latest + + steps: + - name: Check Out Blockly + uses: actions/checkout@v2 + with: + ref: 'develop' + + - name: Use Node.js 16.x + uses: actions/setup-node@v1 + with: + node-version: 16.x + + - name: Build Blockly + run: npm run build:compressed + + - name: Build Blockly blocks + run: npm run build:blocks + + - name: Update Metadata + run: source ./tests/scripts/update_metadata.sh + + - name: Create Pull Request + uses: peter-evans/create-pull-request@9825ae65b1cb54b543b938503728b432a0176d29 + with: + commit-message: Update build artifact sizes in check_metadata.sh + delete-branch: true + title: Update build artifact sizes in check_metadata.sh + + - name: View Pull Request run: echo "View Pull Request - ${{ steps.cpr.outputs.pull-request-url }}" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 844805ddb47..7a0f6b2c098 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,20 @@ -node_modules -npm-debug.log -build-debug.log -.DS_Store -.settings -.project -*.gz -*.pyc -*.komodoproject -/nbproject/private/ - -tests/compile/main_compressed.js -tests/compile/main_compressed.js.map -tests/compile/*compiler*.jar -tests/screenshot/outputs/* -local_build/*compiler*.jar -local_build/local_*_compressed.js -chromedriver -build/ -dist/ +node_modules +npm-debug.log +build-debug.log +.DS_Store +.settings +.project +*.gz +*.pyc +*.komodoproject +/nbproject/private/ + +tests/compile/main_compressed.js +tests/compile/main_compressed.js.map +tests/compile/*compiler*.jar +tests/screenshot/outputs/* +local_build/*compiler*.jar +local_build/local_*_compressed.js +chromedriver +build/ +dist/ diff --git a/.npmrc b/.npmrc index 214c29d1395..538f0f0318d 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1 @@ -registry=https://registry.npmjs.org/ +registry=https://registry.npmjs.org/ diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 32ac6588bfd..7e9c4cd0a86 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ -{ - ".": "8.0.0" -} +{ + ".": "8.0.0" +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000000..22f60ba4516 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "ros.distro": "foxy" +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index cbe1c7ee290..21efcda46b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,77 +1,77 @@ -# Changelog - -## [8.0.0](https://github.com/google/blockly/compare/blockly-v7.20211209.0...blockly-v8.0.0) (2022-03-31) - - -### ⚠ BREAKING CHANGES - -* change paste to return the pasted thing to support keyboard nav (#5996) -* **blocks:** ...and rename Blockly.blocks.all (blocks/all.js) to Blockly.libraryBlocks (blocks/blocks.js -* * refactor(blocks): Make loopTypes a Set -* allows previously internal constants to be configurable (#5897) -* * refactor(blocks): Make loopTypes a Set -* remove unused constants from internalConstants (#5889) - -### Features - -* add mocha failure messages to console output ([#5984](https://github.com/google/blockly/issues/5984)) ([7d250fa](https://github.com/google/blockly/commit/7d250fa9cfb30f95e7af523720b66c8b001df15c)) -* Allow developers to set a custom tooltip rendering function. ([#5956](https://github.com/google/blockly/issues/5956)) ([6841ccc](https://github.com/google/blockly/commit/6841ccc99fdbcc5f6d5a63bb36cb3b6ebd2be246)) -* **blocks:** Export block definitions ([#5908](https://github.com/google/blockly/issues/5908)) ([ffb8907](https://github.com/google/blockly/commit/ffb8907db8d0f11609c1fe14b2a450d3e639a871)) -* make mocha fail if it encounters 0 tests ([#5981](https://github.com/google/blockly/issues/5981)) ([0b2bf3a](https://github.com/google/blockly/commit/0b2bf3ae9d0c777f4d13d47692f5ae224dff1ec8)) -* **tests:** Add a test to validate `scripts/migration/renamings.js` ([#5980](https://github.com/google/blockly/issues/5980)) ([3c723f0](https://github.com/google/blockly/commit/3c723f0199b1f3b5eaac58f064b02d52b60d0ddb)) -* **tests:** Use official semver.org RegExp ([#5990](https://github.com/google/blockly/issues/5990)) ([afc4088](https://github.com/google/blockly/commit/afc4088ce278f97585f9ff5e65a921f7c4c65531)) - - -### Bug Fixes - -* Adds check for changedTouches ([#5869](https://github.com/google/blockly/issues/5869)) ([3f4f505](https://github.com/google/blockly/commit/3f4f5057919fdb4a329e9d2b15378c5c5831ae3b)) -* advanced playground and playground to work when hosted ([#6021](https://github.com/google/blockly/issues/6021)) ([364bf14](https://github.com/google/blockly/commit/364bf14ce6932f426591e3f53c1d066771ddcb8e)) -* always rename caller to legal name ([#6014](https://github.com/google/blockly/issues/6014)) ([c430800](https://github.com/google/blockly/commit/c4308007bc4b58d51adf1fda7b51ffa9f1d3f093)) -* **blocks:** correct the callType_ of procedures_defreturn ([#5974](https://github.com/google/blockly/issues/5974)) ([b34db5b](https://github.com/google/blockly/commit/b34db5bd01f7b532ebabc80264ca9fc804a76c75)) -* **build:** Correctly handle deep export paths in UMD wrapper ([#5945](https://github.com/google/blockly/issues/5945)) ([71ab146](https://github.com/google/blockly/commit/71ab146bc21aef9bdd6b2385c1df5f51e3ff5b58)) -* bumping a block after duplicate breaking undo ([#5844](https://github.com/google/blockly/issues/5844)) ([5204569](https://github.com/google/blockly/commit/5204569cff58c1ead7c15165a1351fa6a2ba2ad3)) -* change getCandidate_ and showInsertionMarker_ to be more dynamic ([#5722](https://github.com/google/blockly/issues/5722)) ([68d8113](https://github.com/google/blockly/commit/68d81132b851d20884ee9da41719fa62cdfce0ee)) -* change paste to return the pasted thing to support keyboard nav ([#5996](https://github.com/google/blockly/issues/5996)) ([20f1475](https://github.com/google/blockly/commit/20f1475afc1abf4b5e600219c2981150fc621ba5)) -* Change the truthy tests of width and height in WorkspaceSvg.setCachedParentSvgSize to actual comparisons with null so that zero value can be saved into the cache ([#5997](https://github.com/google/blockly/issues/5997)) ([fec44d9](https://github.com/google/blockly/commit/fec44d917e4b8475beba28e4769a50982425e887)) -* comments not being restored when dragging ([#6011](https://github.com/google/blockly/issues/6011)) ([85ce3b8](https://github.com/google/blockly/commit/85ce3b82c6c32e8a2a1608c6d604262ea0e5c38d)) -* convert the common renderer to an ES6 class ([#5978](https://github.com/google/blockly/issues/5978)) ([c1004be](https://github.com/google/blockly/commit/c1004be1f24debe1df1566e6067cf2f6769d51aa)) -* convert the Workspace class to an ES6 class ([#5977](https://github.com/google/blockly/issues/5977)) ([e2eaebe](https://github.com/google/blockly/commit/e2eaebec47b08a83eb36d0d04cefa254d1c5d666)) -* custom block context menus ([#5976](https://github.com/google/blockly/issues/5976)) ([8058df2](https://github.com/google/blockly/commit/8058df2a71dcecdc1190ae1d6f5dcccfafc980e8)) -* Don't throw if drag surface is empty. ([#5695](https://github.com/google/blockly/issues/5695)) ([769a25f](https://github.com/google/blockly/commit/769a25f4badffd2409ce19535344c98f5d8b01c9)) -* export Blockly.Names.NameType and Blockly.Input.Align correctly ([#6030](https://github.com/google/blockly/issues/6030)) ([2c15d00](https://github.com/google/blockly/commit/2c15d002ababcba7f34c526c05f231735e3e0169)) -* Export loopTypes from Blockly.blocks.loops ([#5900](https://github.com/google/blockly/issues/5900)) ([4f74210](https://github.com/google/blockly/commit/4f74210e74ef0b06216ab0f288268192674d69c9)) -* Export loopTypes from Blockly.blocks.loops ([#5900](https://github.com/google/blockly/issues/5900)) ([74ef1cb](https://github.com/google/blockly/commit/74ef1cbf521f7c6447ea9672ddbfe861d2292e5f)) -* Fix bug where workspace comments could not be created. ([#6024](https://github.com/google/blockly/issues/6024)) ([2cf8eb8](https://github.com/google/blockly/commit/2cf8eb87dcb029ba152b63b01ee7e4df431d1bb6)) -* Fix downloading screenshots on the playground. ([#6025](https://github.com/google/blockly/issues/6025)) ([ca6e590](https://github.com/google/blockly/commit/ca6e590101d511a8d98a5c5438af32ff6749e020)) -* fix keycodes type ([#5805](https://github.com/google/blockly/issues/5805)) ([0a96543](https://github.com/google/blockly/commit/0a96543a1179636e4efeb3c654c075952aca0c9f)) -* Fixed the label closure on demo/blockfactory ([#5833](https://github.com/google/blockly/issues/5833)) ([e8ea2e9](https://github.com/google/blockly/commit/e8ea2e9902fb9f642459e7341c3d59e19f359fca)) -* **generators:** Fix an operator precedence issue in the math_number_property generators to remove extra parentheses ([#5685](https://github.com/google/blockly/issues/5685)) ([a31003f](https://github.com/google/blockly/commit/a31003fab964e529152389029ec3126a3802851b)) -* incorrect module for event data in renamings database ([#6012](https://github.com/google/blockly/issues/6012)) ([e502eaa](https://github.com/google/blockly/commit/e502eaa6e1c88b2bb34e9a87917a15098b81cfa3)) -* Move [@alias](https://github.com/alias) onto classes instead of constructors ([#6003](https://github.com/google/blockly/issues/6003)) ([1647a32](https://github.com/google/blockly/commit/1647a3299ac48b5924f987015d8f3c47593922af)) -* move test helpers from samples into core ([#5969](https://github.com/google/blockly/issues/5969)) ([2edd228](https://github.com/google/blockly/commit/2edd22811752f05e16c68d593e5d1b809e24ed25)) -* move the dropdown div to a namespace instead of a class with only static properties ([#5979](https://github.com/google/blockly/issues/5979)) ([543cb8e](https://github.com/google/blockly/commit/543cb8e1b1c1a7fca5a1629f42f71c9b18e1a255)) -* msg imports in type definitions ([#5858](https://github.com/google/blockly/issues/5858)) ([07a75de](https://github.com/google/blockly/commit/07a75dee8de13b6c5a02959325a0155d413d6712)) -* opening/closing the mutators ([#6000](https://github.com/google/blockly/issues/6000)) ([243fc52](https://github.com/google/blockly/commit/243fc52a96e1089aad89ff6b642c6605d8f71afd)) -* playground access to Blockly ([9e1cda8](https://github.com/google/blockly/commit/9e1cda8f45cea1707c5a228d5ce79b4cd81566f8)) -* playground test blocks, text area listeners, and show/hide buttons ([#6015](https://github.com/google/blockly/issues/6015)) ([7abf3de](https://github.com/google/blockly/commit/7abf3de910a35e1a6086a3243570627a41e73339)) -* procedure param edits breaking undo ([#5845](https://github.com/google/blockly/issues/5845)) ([8a71f87](https://github.com/google/blockly/commit/8a71f879504503f4aec1140fe653d93602c664df)) -* re-expose HSV_VALUE and HSV_SATURATION as settable properties on Blockly ([#5821](https://github.com/google/blockly/issues/5821)) ([0e5f3ce](https://github.com/google/blockly/commit/0e5f3ce6074fbbb2923e9a62bffefeae0a813be8)) -* re-expose HSV_VALUE and HSV_SATURATION as settable properties on Blockly ([#5821](https://github.com/google/blockly/issues/5821)) ([6fc3316](https://github.com/google/blockly/commit/6fc3316309534270106050f0e1fecb7a09b8e62c)) -* revert "Delete events should animate when played ([#5919](https://github.com/google/blockly/issues/5919))" ([#6031](https://github.com/google/blockly/issues/6031)) ([c4a25eb](https://github.com/google/blockly/commit/c4a25eb3c432b0e8a9a18aae42839d163a177c48)) -* revert converting test helpers to es modules ([#5982](https://github.com/google/blockly/issues/5982)) ([01d4597](https://github.com/google/blockly/commit/01d45972d4df8b5e4afa4a19d93defb8961fea57)) -* setting null for a font style on a theme ([#5831](https://github.com/google/blockly/issues/5831)) ([835fb02](https://github.com/google/blockly/commit/835fb02343df0a4b9dab7704a4b3d8be8e9a497c)) -* **tests:** Enable --debug for test:compile:advanced; fix some errors ([#5959](https://github.com/google/blockly/issues/5959)) ([88334be](https://github.com/google/blockly/commit/88334bea80aa26c08705f16aba5e79dd708158f9)) -* **tests:** Enable `--debug` for `test:compile:advanced`; fix some errors (and demote the rest to warnings) ([#5983](https://github.com/google/blockly/issues/5983)) ([e11b583](https://github.com/google/blockly/commit/e11b5834e5e4e8fe991be32afb08eafa7c8adffd)) -* TypeScript exporting of the serialization functions ([#5890](https://github.com/google/blockly/issues/5890)) ([5d7c890](https://github.com/google/blockly/commit/5d7c890243ba7d0501514ba48778715097ce5a3b)) -* undo/redo for auto disabling if-return blocks ([#6018](https://github.com/google/blockly/issues/6018)) ([c7a359a](https://github.com/google/blockly/commit/c7a359a8424287f139752573a27a8a6eb97cb7b3)) -* update the playground to load compressed when hosted ([#5835](https://github.com/google/blockly/issues/5835)) ([2adf326](https://github.com/google/blockly/commit/2adf326c230589800880faa9599eca2ecc94d283)) -* Update typings for q1 2022 release ([#6051](https://github.com/google/blockly/issues/6051)) ([69f3d4a](https://github.com/google/blockly/commit/69f3d4ae89ce16a558443dd0a772e35b62c096d3)) -* Use correct namespace for svgMath functions ([#5813](https://github.com/google/blockly/issues/5813)) ([b8cc983](https://github.com/google/blockly/commit/b8cc983324338b2cbd536425c93ff3e7d512751e)) -* Use correct namespace for svgMath functions ([#5813](https://github.com/google/blockly/issues/5813)) ([025bab6](https://github.com/google/blockly/commit/025bab656669f99ebdb8b95bea39ebae296f1495)) - - -### Code Refactoring - -* allows previously internal constants to be configurable ([#5897](https://github.com/google/blockly/issues/5897)) ([4b5733e](https://github.com/google/blockly/commit/4b5733e7c85f2e196719550a3cfdcbcbd61739df)) -* **blocks:** Rename Blockly.blocks.* modules to Blockly.libraryBlocks.* ([#5953](https://github.com/google/blockly/issues/5953)) ([5078dcb](https://github.com/google/blockly/commit/5078dcbc6d4d48422313732e87191b29569b5eed)) -* remove unused constants from internalConstants ([#5889](https://github.com/google/blockly/issues/5889)) ([f0b1077](https://github.com/google/blockly/commit/f0b10776eb0657a5446adcfc62ad13f419c14271)) +# Changelog + +## [8.0.0](https://github.com/google/blockly/compare/blockly-v7.20211209.0...blockly-v8.0.0) (2022-03-31) + + +### ⚠ BREAKING CHANGES + +* change paste to return the pasted thing to support keyboard nav (#5996) +* **blocks:** ...and rename Blockly.blocks.all (blocks/all.js) to Blockly.libraryBlocks (blocks/blocks.js +* * refactor(blocks): Make loopTypes a Set +* allows previously internal constants to be configurable (#5897) +* * refactor(blocks): Make loopTypes a Set +* remove unused constants from internalConstants (#5889) + +### Features + +* add mocha failure messages to console output ([#5984](https://github.com/google/blockly/issues/5984)) ([7d250fa](https://github.com/google/blockly/commit/7d250fa9cfb30f95e7af523720b66c8b001df15c)) +* Allow developers to set a custom tooltip rendering function. ([#5956](https://github.com/google/blockly/issues/5956)) ([6841ccc](https://github.com/google/blockly/commit/6841ccc99fdbcc5f6d5a63bb36cb3b6ebd2be246)) +* **blocks:** Export block definitions ([#5908](https://github.com/google/blockly/issues/5908)) ([ffb8907](https://github.com/google/blockly/commit/ffb8907db8d0f11609c1fe14b2a450d3e639a871)) +* make mocha fail if it encounters 0 tests ([#5981](https://github.com/google/blockly/issues/5981)) ([0b2bf3a](https://github.com/google/blockly/commit/0b2bf3ae9d0c777f4d13d47692f5ae224dff1ec8)) +* **tests:** Add a test to validate `scripts/migration/renamings.js` ([#5980](https://github.com/google/blockly/issues/5980)) ([3c723f0](https://github.com/google/blockly/commit/3c723f0199b1f3b5eaac58f064b02d52b60d0ddb)) +* **tests:** Use official semver.org RegExp ([#5990](https://github.com/google/blockly/issues/5990)) ([afc4088](https://github.com/google/blockly/commit/afc4088ce278f97585f9ff5e65a921f7c4c65531)) + + +### Bug Fixes + +* Adds check for changedTouches ([#5869](https://github.com/google/blockly/issues/5869)) ([3f4f505](https://github.com/google/blockly/commit/3f4f5057919fdb4a329e9d2b15378c5c5831ae3b)) +* advanced playground and playground to work when hosted ([#6021](https://github.com/google/blockly/issues/6021)) ([364bf14](https://github.com/google/blockly/commit/364bf14ce6932f426591e3f53c1d066771ddcb8e)) +* always rename caller to legal name ([#6014](https://github.com/google/blockly/issues/6014)) ([c430800](https://github.com/google/blockly/commit/c4308007bc4b58d51adf1fda7b51ffa9f1d3f093)) +* **blocks:** correct the callType_ of procedures_defreturn ([#5974](https://github.com/google/blockly/issues/5974)) ([b34db5b](https://github.com/google/blockly/commit/b34db5bd01f7b532ebabc80264ca9fc804a76c75)) +* **build:** Correctly handle deep export paths in UMD wrapper ([#5945](https://github.com/google/blockly/issues/5945)) ([71ab146](https://github.com/google/blockly/commit/71ab146bc21aef9bdd6b2385c1df5f51e3ff5b58)) +* bumping a block after duplicate breaking undo ([#5844](https://github.com/google/blockly/issues/5844)) ([5204569](https://github.com/google/blockly/commit/5204569cff58c1ead7c15165a1351fa6a2ba2ad3)) +* change getCandidate_ and showInsertionMarker_ to be more dynamic ([#5722](https://github.com/google/blockly/issues/5722)) ([68d8113](https://github.com/google/blockly/commit/68d81132b851d20884ee9da41719fa62cdfce0ee)) +* change paste to return the pasted thing to support keyboard nav ([#5996](https://github.com/google/blockly/issues/5996)) ([20f1475](https://github.com/google/blockly/commit/20f1475afc1abf4b5e600219c2981150fc621ba5)) +* Change the truthy tests of width and height in WorkspaceSvg.setCachedParentSvgSize to actual comparisons with null so that zero value can be saved into the cache ([#5997](https://github.com/google/blockly/issues/5997)) ([fec44d9](https://github.com/google/blockly/commit/fec44d917e4b8475beba28e4769a50982425e887)) +* comments not being restored when dragging ([#6011](https://github.com/google/blockly/issues/6011)) ([85ce3b8](https://github.com/google/blockly/commit/85ce3b82c6c32e8a2a1608c6d604262ea0e5c38d)) +* convert the common renderer to an ES6 class ([#5978](https://github.com/google/blockly/issues/5978)) ([c1004be](https://github.com/google/blockly/commit/c1004be1f24debe1df1566e6067cf2f6769d51aa)) +* convert the Workspace class to an ES6 class ([#5977](https://github.com/google/blockly/issues/5977)) ([e2eaebe](https://github.com/google/blockly/commit/e2eaebec47b08a83eb36d0d04cefa254d1c5d666)) +* custom block context menus ([#5976](https://github.com/google/blockly/issues/5976)) ([8058df2](https://github.com/google/blockly/commit/8058df2a71dcecdc1190ae1d6f5dcccfafc980e8)) +* Don't throw if drag surface is empty. ([#5695](https://github.com/google/blockly/issues/5695)) ([769a25f](https://github.com/google/blockly/commit/769a25f4badffd2409ce19535344c98f5d8b01c9)) +* export Blockly.Names.NameType and Blockly.Input.Align correctly ([#6030](https://github.com/google/blockly/issues/6030)) ([2c15d00](https://github.com/google/blockly/commit/2c15d002ababcba7f34c526c05f231735e3e0169)) +* Export loopTypes from Blockly.blocks.loops ([#5900](https://github.com/google/blockly/issues/5900)) ([4f74210](https://github.com/google/blockly/commit/4f74210e74ef0b06216ab0f288268192674d69c9)) +* Export loopTypes from Blockly.blocks.loops ([#5900](https://github.com/google/blockly/issues/5900)) ([74ef1cb](https://github.com/google/blockly/commit/74ef1cbf521f7c6447ea9672ddbfe861d2292e5f)) +* Fix bug where workspace comments could not be created. ([#6024](https://github.com/google/blockly/issues/6024)) ([2cf8eb8](https://github.com/google/blockly/commit/2cf8eb87dcb029ba152b63b01ee7e4df431d1bb6)) +* Fix downloading screenshots on the playground. ([#6025](https://github.com/google/blockly/issues/6025)) ([ca6e590](https://github.com/google/blockly/commit/ca6e590101d511a8d98a5c5438af32ff6749e020)) +* fix keycodes type ([#5805](https://github.com/google/blockly/issues/5805)) ([0a96543](https://github.com/google/blockly/commit/0a96543a1179636e4efeb3c654c075952aca0c9f)) +* Fixed the label closure on demo/blockfactory ([#5833](https://github.com/google/blockly/issues/5833)) ([e8ea2e9](https://github.com/google/blockly/commit/e8ea2e9902fb9f642459e7341c3d59e19f359fca)) +* **generators:** Fix an operator precedence issue in the math_number_property generators to remove extra parentheses ([#5685](https://github.com/google/blockly/issues/5685)) ([a31003f](https://github.com/google/blockly/commit/a31003fab964e529152389029ec3126a3802851b)) +* incorrect module for event data in renamings database ([#6012](https://github.com/google/blockly/issues/6012)) ([e502eaa](https://github.com/google/blockly/commit/e502eaa6e1c88b2bb34e9a87917a15098b81cfa3)) +* Move [@alias](https://github.com/alias) onto classes instead of constructors ([#6003](https://github.com/google/blockly/issues/6003)) ([1647a32](https://github.com/google/blockly/commit/1647a3299ac48b5924f987015d8f3c47593922af)) +* move test helpers from samples into core ([#5969](https://github.com/google/blockly/issues/5969)) ([2edd228](https://github.com/google/blockly/commit/2edd22811752f05e16c68d593e5d1b809e24ed25)) +* move the dropdown div to a namespace instead of a class with only static properties ([#5979](https://github.com/google/blockly/issues/5979)) ([543cb8e](https://github.com/google/blockly/commit/543cb8e1b1c1a7fca5a1629f42f71c9b18e1a255)) +* msg imports in type definitions ([#5858](https://github.com/google/blockly/issues/5858)) ([07a75de](https://github.com/google/blockly/commit/07a75dee8de13b6c5a02959325a0155d413d6712)) +* opening/closing the mutators ([#6000](https://github.com/google/blockly/issues/6000)) ([243fc52](https://github.com/google/blockly/commit/243fc52a96e1089aad89ff6b642c6605d8f71afd)) +* playground access to Blockly ([9e1cda8](https://github.com/google/blockly/commit/9e1cda8f45cea1707c5a228d5ce79b4cd81566f8)) +* playground test blocks, text area listeners, and show/hide buttons ([#6015](https://github.com/google/blockly/issues/6015)) ([7abf3de](https://github.com/google/blockly/commit/7abf3de910a35e1a6086a3243570627a41e73339)) +* procedure param edits breaking undo ([#5845](https://github.com/google/blockly/issues/5845)) ([8a71f87](https://github.com/google/blockly/commit/8a71f879504503f4aec1140fe653d93602c664df)) +* re-expose HSV_VALUE and HSV_SATURATION as settable properties on Blockly ([#5821](https://github.com/google/blockly/issues/5821)) ([0e5f3ce](https://github.com/google/blockly/commit/0e5f3ce6074fbbb2923e9a62bffefeae0a813be8)) +* re-expose HSV_VALUE and HSV_SATURATION as settable properties on Blockly ([#5821](https://github.com/google/blockly/issues/5821)) ([6fc3316](https://github.com/google/blockly/commit/6fc3316309534270106050f0e1fecb7a09b8e62c)) +* revert "Delete events should animate when played ([#5919](https://github.com/google/blockly/issues/5919))" ([#6031](https://github.com/google/blockly/issues/6031)) ([c4a25eb](https://github.com/google/blockly/commit/c4a25eb3c432b0e8a9a18aae42839d163a177c48)) +* revert converting test helpers to es modules ([#5982](https://github.com/google/blockly/issues/5982)) ([01d4597](https://github.com/google/blockly/commit/01d45972d4df8b5e4afa4a19d93defb8961fea57)) +* setting null for a font style on a theme ([#5831](https://github.com/google/blockly/issues/5831)) ([835fb02](https://github.com/google/blockly/commit/835fb02343df0a4b9dab7704a4b3d8be8e9a497c)) +* **tests:** Enable --debug for test:compile:advanced; fix some errors ([#5959](https://github.com/google/blockly/issues/5959)) ([88334be](https://github.com/google/blockly/commit/88334bea80aa26c08705f16aba5e79dd708158f9)) +* **tests:** Enable `--debug` for `test:compile:advanced`; fix some errors (and demote the rest to warnings) ([#5983](https://github.com/google/blockly/issues/5983)) ([e11b583](https://github.com/google/blockly/commit/e11b5834e5e4e8fe991be32afb08eafa7c8adffd)) +* TypeScript exporting of the serialization functions ([#5890](https://github.com/google/blockly/issues/5890)) ([5d7c890](https://github.com/google/blockly/commit/5d7c890243ba7d0501514ba48778715097ce5a3b)) +* undo/redo for auto disabling if-return blocks ([#6018](https://github.com/google/blockly/issues/6018)) ([c7a359a](https://github.com/google/blockly/commit/c7a359a8424287f139752573a27a8a6eb97cb7b3)) +* update the playground to load compressed when hosted ([#5835](https://github.com/google/blockly/issues/5835)) ([2adf326](https://github.com/google/blockly/commit/2adf326c230589800880faa9599eca2ecc94d283)) +* Update typings for q1 2022 release ([#6051](https://github.com/google/blockly/issues/6051)) ([69f3d4a](https://github.com/google/blockly/commit/69f3d4ae89ce16a558443dd0a772e35b62c096d3)) +* Use correct namespace for svgMath functions ([#5813](https://github.com/google/blockly/issues/5813)) ([b8cc983](https://github.com/google/blockly/commit/b8cc983324338b2cbd536425c93ff3e7d512751e)) +* Use correct namespace for svgMath functions ([#5813](https://github.com/google/blockly/issues/5813)) ([025bab6](https://github.com/google/blockly/commit/025bab656669f99ebdb8b95bea39ebae296f1495)) + + +### Code Refactoring + +* allows previously internal constants to be configurable ([#5897](https://github.com/google/blockly/issues/5897)) ([4b5733e](https://github.com/google/blockly/commit/4b5733e7c85f2e196719550a3cfdcbcbd61739df)) +* **blocks:** Rename Blockly.blocks.* modules to Blockly.libraryBlocks.* ([#5953](https://github.com/google/blockly/issues/5953)) ([5078dcb](https://github.com/google/blockly/commit/5078dcbc6d4d48422313732e87191b29569b5eed)) +* remove unused constants from internalConstants ([#5889](https://github.com/google/blockly/issues/5889)) ([f0b1077](https://github.com/google/blockly/commit/f0b10776eb0657a5446adcfc62ad13f419c14271)) diff --git a/LICENSE b/LICENSE index d6456956733..75b52484ea4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,202 +1,202 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 03528f62bc7..d3f13299f29 100644 --- a/README.md +++ b/README.md @@ -1,88 +1,98 @@ -# Blockly [![Build Status]( https://travis-ci.org/google/blockly.svg?branch=master)](https://travis-ci.org/google/blockly) - -Google's Blockly is a library that adds a visual code editor to web and mobile apps. The Blockly editor uses interlocking, graphical blocks to represent code concepts like variables, logical expressions, loops, and more. It allows users to apply programming principles without having to worry about syntax or the intimidation of a blinking cursor on the command line. All code is free and open source. - -![](https://developers.google.com/blockly/images/sample.png) - -## Getting Started with Blockly - -Blockly has many resources for learning how to use the library. Start at our [Google Developers Site](https://developers.google.com/blockly) to read the documentation on how to get started, configure Blockly, and integrate it into your application. The developers site also contains links to: - -* [Getting Started article](https://developers.google.com/blockly/guides/get-started/web) -* [Getting Started codelab](https://blocklycodelabs.dev/codelabs/getting-started/index.html#0) -* [More codelabs](https://blocklycodelabs.dev/) -* [Demos and plugins](https://google.github.io/blockly-samples/) - -Help us focus our development efforts by telling us [what you are doing with -Blockly](https://developers.google.com/blockly/registration). The questionnaire only takes -a few minutes and will help us better support the Blockly community. - -### Installing Blockly - -Blockly is [available on npm](https://www.npmjs.com/package/blockly). - -```bash -npm install blockly -``` - -For more information on installing and using Blockly, see the [Getting Started article](https://developers.google.com/blockly/guides/get-started/web). - -### Getting Help -* [Report a bug](https://developers.google.com/blockly/guides/modify/contribute/write_a_good_issue) or file a feature request on GitHub -* Ask a question, or search others' questions, on our [developer forum](https://groups.google.com/forum/#!forum/blockly). You can also drop by to say hello and show us your prototypes; collectively we have a lot of experience and can offer hints which will save you time. We actively monitor the forums and typically respond to questions within 2 working days. - -### blockly-samples - -We have a number of resources such as example code, demos, and plugins in another repository called [blockly-samples](https://github.com/google/blockly-samples/). A plugin is a self-contained piece of code that adds functionality to Blockly. Plugins can add fields, define themes, create renderers, and much more. For more information, see the [Plugins documentation](https://developers.google.com/blockly/guides/plugins/overview). - -## Contributing to Blockly - -Want to make Blockly better? We welcome contributions to Blockly in the form of pull requests, bug reports, documentation, answers on the forum, and more! Check out our [Contributing Guidelines](https://developers.google.com/blockly/guides/modify/contributing) for more information. You might also want to look for issues tagged "[Help Wanted](https://github.com/google/blockly/labels/help%20wanted)" which are issues we think would be great for external contributors to help with. - -## Releases - -The next major release will be during the last week of **March 2022**. - -We release by pushing the latest code to the master branch, followed by updating the npm package, our [docs](https://developers.google.com/blockly), and [demo pages](https://google.github.io/blockly-samples/). We typically release a new version of Blockly once a quarter (every 3 months). If there are breaking bugs, such as a crash when performing a standard action or a rendering issue that makes Blockly unusable, we will cherry-pick fixes to master between releases to fix them. The [releases page](https://github.com/google/blockly/releases) has a list of all releases. - -Releases are tagged by the release date (YYYYMMDD) with a leading major version number and a trailing '.0' in case we ever need a major or patch version (such as [2.20190722.1](https://github.com/google/blockly/tree/2.20190722.1)). Releases that have breaking changes or are otherwise not backwards compatible will have a new major version. Patch versions are reserved for bug-fix patches between scheduled releases. - -We now have a [beta release on npm](https://www.npmjs.com/package/blockly?activeTab=versions). If you'd like to test the upcoming release, or try out a not-yet-released new API, you can use the beta channel with: - -```bash -npm install blockly@beta -``` -As it is a beta channel, it may be less stable, and the APIs there are subject to change. - -### Branches - -There are two main branches for Blockly. - -**[master](https://github.com/google/blockly)** - This is the (mostly) stable current release of Blockly. - -**[develop](https://github.com/google/blockly/tree/develop)** - This is where most of our work happens. Pull requests should always be made against develop. This branch will generally be usable, but may be less stable than the master branch. Once something is in develop we expect it to merge to master in the next release. - -**other branches:** - Larger changes may have their own branches until they are good enough for people to try out. These will be developed separately until we think they are almost ready for release. These branches typically get merged into develop immediately after a release to allow extra time for testing. - -### New APIs - -Once a new API is merged into master it is considered beta until the following release. We generally try to avoid changing an API after it has been merged to master, but sometimes we need to make changes after seeing how an API is used. If an API has been around for at least two releases we'll do our best to avoid breaking it. - -Unreleased APIs may change radically. Anything that is in `develop` but not `master` is subject to change without warning. - -## Issues and Milestones - -We typically triage all bugs within 2 working days, which includes adding any appropriate labels and assigning it to a milestone. Please keep in mind, we are a small team so even feature requests that everyone agrees on may not be prioritized. - -### Milestones - -**Upcoming release** - The upcoming release milestone is for all bugs we plan on fixing before the next release. This typically has the form of `year_quarter_release` (such as `2019_q2_release`). Some bugs will be added to this release when they are triaged, others may be added closer to a release. - -**Bug Bash Backlog** - These are bugs that we're still prioritizing. They haven't been added to a specific release yet, but we'll consider them for each release depending on relative priority and available time. - -**Icebox** - These are bugs that we do not intend to spend time on. They are either too much work or minor enough that we don't expect them to ever take priority. We are still happy to accept pull requests for these bugs. - -## Good to Know - -* Cross-browser Testing Platform and Open Source <3 Provided by [Sauce Labs](https://saucelabs.com) -* We support IE11 and test it using [BrowserStack](https://browserstack.com) +# Blockly [![Build Status]( https://travis-ci.org/google/blockly.svg?branch=master)](https://travis-ci.org/google/blockly) + +Google's Blockly is a library that adds a visual code editor to web and mobile apps. The Blockly editor uses interlocking, graphical blocks to represent code concepts like variables, logical expressions, loops, and more. It allows users to apply programming principles without having to worry about syntax or the intimidation of a blinking cursor on the command line. All code is free and open source. + +![](https://developers.google.com/blockly/images/sample.png) + +## Getting Started with Blockly + +Blockly has many resources for learning how to use the library. Start at our [Google Developers Site](https://developers.google.com/blockly) to read the documentation on how to get started, configure Blockly, and integrate it into your application. The developers site also contains links to: + +* [Getting Started article](https://developers.google.com/blockly/guides/get-started/web) +* [Getting Started codelab](https://blocklycodelabs.dev/codelabs/getting-started/index.html#0) +* [More codelabs](https://blocklycodelabs.dev/) +* [Demos and plugins](https://google.github.io/blockly-samples/) + +Help us focus our development efforts by telling us [what you are doing with +Blockly](https://developers.google.com/blockly/registration). The questionnaire only takes +a few minutes and will help us better support the Blockly community. + +### Building Blockly + +```bash +npm run package +``` + +Comentário em [https://github.com/google/blockly/issues/6403](https://github.com/google/blockly/issues/6403) + +Renomear dist/ para blockly/ + +### Installing Blockly + +Blockly is [available on npm](https://www.npmjs.com/package/blockly). + +```bash +npm install https://gitpkg.now.sh/NTU-AI/ntu-blockly/blockly?master +``` + +For more information on installing and using Blockly, see the [Getting Started article](https://developers.google.com/blockly/guides/get-started/web). + +### Getting Help +* [Report a bug](https://developers.google.com/blockly/guides/modify/contribute/write_a_good_issue) or file a feature request on GitHub +* Ask a question, or search others' questions, on our [developer forum](https://groups.google.com/forum/#!forum/blockly). You can also drop by to say hello and show us your prototypes; collectively we have a lot of experience and can offer hints which will save you time. We actively monitor the forums and typically respond to questions within 2 working days. + +### blockly-samples + +We have a number of resources such as example code, demos, and plugins in another repository called [blockly-samples](https://github.com/google/blockly-samples/). A plugin is a self-contained piece of code that adds functionality to Blockly. Plugins can add fields, define themes, create renderers, and much more. For more information, see the [Plugins documentation](https://developers.google.com/blockly/guides/plugins/overview). + +## Contributing to Blockly + +Want to make Blockly better? We welcome contributions to Blockly in the form of pull requests, bug reports, documentation, answers on the forum, and more! Check out our [Contributing Guidelines](https://developers.google.com/blockly/guides/modify/contributing) for more information. You might also want to look for issues tagged "[Help Wanted](https://github.com/google/blockly/labels/help%20wanted)" which are issues we think would be great for external contributors to help with. + +## Releases + +The next major release will be during the last week of **March 2022**. + +We release by pushing the latest code to the master branch, followed by updating the npm package, our [docs](https://developers.google.com/blockly), and [demo pages](https://google.github.io/blockly-samples/). We typically release a new version of Blockly once a quarter (every 3 months). If there are breaking bugs, such as a crash when performing a standard action or a rendering issue that makes Blockly unusable, we will cherry-pick fixes to master between releases to fix them. The [releases page](https://github.com/google/blockly/releases) has a list of all releases. + +Releases are tagged by the release date (YYYYMMDD) with a leading major version number and a trailing '.0' in case we ever need a major or patch version (such as [2.20190722.1](https://github.com/google/blockly/tree/2.20190722.1)). Releases that have breaking changes or are otherwise not backwards compatible will have a new major version. Patch versions are reserved for bug-fix patches between scheduled releases. + +We now have a [beta release on npm](https://www.npmjs.com/package/blockly?activeTab=versions). If you'd like to test the upcoming release, or try out a not-yet-released new API, you can use the beta channel with: + +```bash +npm install blockly@beta +``` +As it is a beta channel, it may be less stable, and the APIs there are subject to change. + +### Branches + +There are two main branches for Blockly. + +**[master](https://github.com/google/blockly)** - This is the (mostly) stable current release of Blockly. + +**[develop](https://github.com/google/blockly/tree/develop)** - This is where most of our work happens. Pull requests should always be made against develop. This branch will generally be usable, but may be less stable than the master branch. Once something is in develop we expect it to merge to master in the next release. + +**other branches:** - Larger changes may have their own branches until they are good enough for people to try out. These will be developed separately until we think they are almost ready for release. These branches typically get merged into develop immediately after a release to allow extra time for testing. + +### New APIs + +Once a new API is merged into master it is considered beta until the following release. We generally try to avoid changing an API after it has been merged to master, but sometimes we need to make changes after seeing how an API is used. If an API has been around for at least two releases we'll do our best to avoid breaking it. + +Unreleased APIs may change radically. Anything that is in `develop` but not `master` is subject to change without warning. + +## Issues and Milestones + +We typically triage all bugs within 2 working days, which includes adding any appropriate labels and assigning it to a milestone. Please keep in mind, we are a small team so even feature requests that everyone agrees on may not be prioritized. + +### Milestones + +**Upcoming release** - The upcoming release milestone is for all bugs we plan on fixing before the next release. This typically has the form of `year_quarter_release` (such as `2019_q2_release`). Some bugs will be added to this release when they are triaged, others may be added closer to a release. + +**Bug Bash Backlog** - These are bugs that we're still prioritizing. They haven't been added to a specific release yet, but we'll consider them for each release depending on relative priority and available time. + +**Icebox** - These are bugs that we do not intend to spend time on. They are either too much work or minor enough that we don't expect them to ever take priority. We are still happy to accept pull requests for these bugs. + +## Good to Know + +* Cross-browser Testing Platform and Open Source <3 Provided by [Sauce Labs](https://saucelabs.com) +* We support IE11 and test it using [BrowserStack](https://browserstack.com) diff --git a/appengine/.gcloudignore b/appengine/.gcloudignore index 00d3868b177..22e2cfe04e2 100644 --- a/appengine/.gcloudignore +++ b/appengine/.gcloudignore @@ -1,20 +1,20 @@ -# Do not upload these files. -.* -*.soy -*.komodoproject -deploy -/static/appengine/ -/static/demos/plane/soy/*.jar -/static/demos/plane/xlf/ -/static/externs/ -/static/msg/json/ -/static/scripts/ -/static/typings/ - -/static/eslintrc.json -/static/gulpfile.js -/static/jsconfig.json -/static/LICENSE -/static/package-lock.json -/static/package.json -/static/README.md +# Do not upload these files. +.* +*.soy +*.komodoproject +deploy +/static/appengine/ +/static/demos/plane/soy/*.jar +/static/demos/plane/xlf/ +/static/externs/ +/static/msg/json/ +/static/scripts/ +/static/typings/ + +/static/eslintrc.json +/static/gulpfile.js +/static/jsconfig.json +/static/LICENSE +/static/package-lock.json +/static/package.json +/static/README.md diff --git a/appengine/README.txt b/appengine/README.txt index caaa8e7b763..48dd5a0d075 100644 --- a/appengine/README.txt +++ b/appengine/README.txt @@ -1,42 +1,42 @@ - - Running an App Engine server - -This directory contains the files needed to setup the optional Blockly server. -Although Blockly itself is 100% client-side, the server enables cloud storage -and sharing. Store your programs in Datastore and get a unique URL that allows -you to load the program on any computer. - -To run your own App Engine instance you'll need to create this directory -structure: - -blockly/ - |- app.yaml - |- deploy - |- index.yaml - |- main.py - |- README.txt - |- requirements.txt - |- storage.js - |- storage.py - `- static/ - |- blocks/ - |- core/ - |- demos/ - |- generators/ - |- media/ - |- msg/ - |- tests/ - |- blockly_compressed.js - |- blockly_uncompressed.js - |- blocks_compressed.js - |- dart_compressed.js - |- javascript_compressed.js - |- lua_compressed.js - |- php_compressed.js - `- python_compressed.js - -Go to https://appengine.google.com/ and create your App Engine application. -Modify the 'PROJECT' name in the 'deploy' file to your App Engine application name. - -Finally, upload this directory structure to your App Engine account, -then go to http://YOURAPPNAME.appspot.com/ + + Running an App Engine server + +This directory contains the files needed to setup the optional Blockly server. +Although Blockly itself is 100% client-side, the server enables cloud storage +and sharing. Store your programs in Datastore and get a unique URL that allows +you to load the program on any computer. + +To run your own App Engine instance you'll need to create this directory +structure: + +blockly/ + |- app.yaml + |- deploy + |- index.yaml + |- main.py + |- README.txt + |- requirements.txt + |- storage.js + |- storage.py + `- static/ + |- blocks/ + |- core/ + |- demos/ + |- generators/ + |- media/ + |- msg/ + |- tests/ + |- blockly_compressed.js + |- blockly_uncompressed.js + |- blocks_compressed.js + |- dart_compressed.js + |- javascript_compressed.js + |- lua_compressed.js + |- php_compressed.js + `- python_compressed.js + +Go to https://appengine.google.com/ and create your App Engine application. +Modify the 'PROJECT' name in the 'deploy' file to your App Engine application name. + +Finally, upload this directory structure to your App Engine account, +then go to http://YOURAPPNAME.appspot.com/ diff --git a/appengine/add_timestamps.py b/appengine/add_timestamps.py index af877f3d6e9..07fcbe1875a 100644 --- a/appengine/add_timestamps.py +++ b/appengine/add_timestamps.py @@ -1,69 +1,69 @@ -"""Blockly Demo: Add timestamps - -Copyright 2020 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" - -"""A script to get all Xml entries in the datastore for Blockly demos -and reinsert any that do not have a last_accessed time. - -This script should only need to be run once, but may take a long time -to complete. - -NDB does not provide a way to query for all entities that are missing a -given property, so we have to get all of them and discard any that -already have a last_accessed time. - -Auth: `gcloud auth login` - -Set the correct project: `gcloud config set project blockly-demo` - -See the current project: `gcloud config get-value project` - -Start a venv: `python3 -m venv venv && source venv/bin/activate` -Inside your vm run `pip install google-cloud-ndb` -Run the script: `python3 add_timestamps.py` -""" - -__author__ = "fenichel@google.com (Rachel Fenichel)" - - -from google.cloud import ndb -from storage import Xml -import datetime - -PAGE_SIZE = 1000 - -def handle_results(results): - for x in results: - if (x.last_accessed is None): - x.put() - -def run_query(): - client = ndb.Client() - with client.context(): - query = Xml.query() - print(f'Total entries: {query.count()}') - cursor = None - more = True - page_count = 0 - result_count = 0 - while more: - results, cursor, more = query.fetch_page(PAGE_SIZE, start_cursor=cursor) - handle_results(results) - page_count = page_count + 1 - result_count = result_count + len(results) - print(f'{datetime.datetime.now().strftime("%I:%M:%S %p")} : page {page_count} : {result_count}') - -run_query() +"""Blockly Demo: Add timestamps + +Copyright 2020 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +"""A script to get all Xml entries in the datastore for Blockly demos +and reinsert any that do not have a last_accessed time. + +This script should only need to be run once, but may take a long time +to complete. + +NDB does not provide a way to query for all entities that are missing a +given property, so we have to get all of them and discard any that +already have a last_accessed time. + +Auth: `gcloud auth login` + +Set the correct project: `gcloud config set project blockly-demo` + +See the current project: `gcloud config get-value project` + +Start a venv: `python3 -m venv venv && source venv/bin/activate` +Inside your vm run `pip install google-cloud-ndb` +Run the script: `python3 add_timestamps.py` +""" + +__author__ = "fenichel@google.com (Rachel Fenichel)" + + +from google.cloud import ndb +from storage import Xml +import datetime + +PAGE_SIZE = 1000 + +def handle_results(results): + for x in results: + if (x.last_accessed is None): + x.put() + +def run_query(): + client = ndb.Client() + with client.context(): + query = Xml.query() + print(f'Total entries: {query.count()}') + cursor = None + more = True + page_count = 0 + result_count = 0 + while more: + results, cursor, more = query.fetch_page(PAGE_SIZE, start_cursor=cursor) + handle_results(results) + page_count = page_count + 1 + result_count = result_count + len(results) + print(f'{datetime.datetime.now().strftime("%I:%M:%S %p")} : page {page_count} : {result_count}') + +run_query() diff --git a/appengine/app.yaml b/appengine/app.yaml index 2fd93c49440..400648f2f97 100644 --- a/appengine/app.yaml +++ b/appengine/app.yaml @@ -1,53 +1,53 @@ -runtime: python37 - -handlers: -# Redirect obsolete URLs. -# Blockly files moved from /blockly to /static on 5 Dec 2012. -- url: /blockly/.* - static_files: redirect.html - upload: redirect.html -# Code, Maze and Turtle moved from demos on 29 Dec 2012. -- url: /static/demos/(maze|turtle)/.* - static_files: redirect.html - upload: redirect.html -# Apps was disbanded on 20 Nov 2014. -- url: /static/apps/.* - static_files: redirect.html - upload: redirect.html - -# Blockly files. -- url: /static - static_dir: static - secure: always - -# Storage API. -- url: /storage\.js - static_files: storage.js - upload: storage\.js - secure: always - -# Favicon. -- url: /favicon\.ico - static_files: favicon.ico - upload: favicon\.ico - secure: always - expiration: "30d" - -# Apple icon. -- url: /apple-touch-icon\.png - static_files: apple-touch-icon.png - upload: apple-touch-icon\.png - secure: always - expiration: "30d" - -# robot.txt -- url: /robots\.txt - static_files: robots.txt - upload: robots\.txt - secure: always - -# Dynamic content. -- url: /.* - script: auto - secure: always +runtime: python37 + +handlers: +# Redirect obsolete URLs. +# Blockly files moved from /blockly to /static on 5 Dec 2012. +- url: /blockly/.* + static_files: redirect.html + upload: redirect.html +# Code, Maze and Turtle moved from demos on 29 Dec 2012. +- url: /static/demos/(maze|turtle)/.* + static_files: redirect.html + upload: redirect.html +# Apps was disbanded on 20 Nov 2014. +- url: /static/apps/.* + static_files: redirect.html + upload: redirect.html + +# Blockly files. +- url: /static + static_dir: static + secure: always + +# Storage API. +- url: /storage\.js + static_files: storage.js + upload: storage\.js + secure: always + +# Favicon. +- url: /favicon\.ico + static_files: favicon.ico + upload: favicon\.ico + secure: always + expiration: "30d" + +# Apple icon. +- url: /apple-touch-icon\.png + static_files: apple-touch-icon.png + upload: apple-touch-icon\.png + secure: always + expiration: "30d" + +# robot.txt +- url: /robots\.txt + static_files: robots.txt + upload: robots\.txt + secure: always + +# Dynamic content. +- url: /.* + script: auto + secure: always \ No newline at end of file diff --git a/appengine/expiration.py b/appengine/expiration.py index 89d4a7a8d5d..1afa5512d46 100644 --- a/appengine/expiration.py +++ b/appengine/expiration.py @@ -1,52 +1,52 @@ -""" -Copyright 2020 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" - -"""Delete expired XML. -""" - -__author__ = "fenichel@google.com (Rachel Fenichel)" - - -import storage -import datetime - -from google.cloud import ndb - - -EXPIRATION_DAYS = 365 -# Limit the query to avoid timeouts. -QUERY_LIMIT = 1000 - -def delete_expired(): - """Deletes entries that have not been accessed in more than a year.""" - bestBefore = datetime.datetime.utcnow() - datetime.timedelta(days=EXPIRATION_DAYS) - client = ndb.Client() - with client.context(): - query = storage.Xml.query(storage.Xml.last_accessed < bestBefore) - results = query.fetch(limit=QUERY_LIMIT, keys_only=True) - for x in results: - x.delete() - return len(results) - - -def app(environ, start_response): - headers = [ - ("Content-Type", "text/plain") - ] - start_response("200 OK", headers) - n = delete_expired() - out = "%d records deleted." % n - return [out.encode("utf-8")] +""" +Copyright 2020 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +"""Delete expired XML. +""" + +__author__ = "fenichel@google.com (Rachel Fenichel)" + + +import storage +import datetime + +from google.cloud import ndb + + +EXPIRATION_DAYS = 365 +# Limit the query to avoid timeouts. +QUERY_LIMIT = 1000 + +def delete_expired(): + """Deletes entries that have not been accessed in more than a year.""" + bestBefore = datetime.datetime.utcnow() - datetime.timedelta(days=EXPIRATION_DAYS) + client = ndb.Client() + with client.context(): + query = storage.Xml.query(storage.Xml.last_accessed < bestBefore) + results = query.fetch(limit=QUERY_LIMIT, keys_only=True) + for x in results: + x.delete() + return len(results) + + +def app(environ, start_response): + headers = [ + ("Content-Type", "text/plain") + ] + start_response("200 OK", headers) + n = delete_expired() + out = "%d records deleted." % n + return [out.encode("utf-8")] diff --git a/appengine/index.yaml b/appengine/index.yaml index a3b9e05e351..3ec808cd529 100644 --- a/appengine/index.yaml +++ b/appengine/index.yaml @@ -1,11 +1,11 @@ -indexes: - -# AUTOGENERATED - -# This index.yaml is automatically updated whenever the dev_appserver -# detects that a new type of query is run. If you want to manage the -# index.yaml file manually, remove the above marker line (the line -# saying "# AUTOGENERATED"). If you want to manage some indexes -# manually, move them above the marker line. The index.yaml file is -# automatically uploaded to the admin console when you next deploy -# your application using appcfg.py. +indexes: + +# AUTOGENERATED + +# This index.yaml is automatically updated whenever the dev_appserver +# detects that a new type of query is run. If you want to manage the +# index.yaml file manually, remove the above marker line (the line +# saying "# AUTOGENERATED"). If you want to manage some indexes +# manually, move them above the marker line. The index.yaml file is +# automatically uploaded to the admin console when you next deploy +# your application using appcfg.py. diff --git a/appengine/main.py b/appengine/main.py index 765087c612c..7a5a4a0ac06 100644 --- a/appengine/main.py +++ b/appengine/main.py @@ -1,39 +1,39 @@ -""" -Copyright 2020 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" - -import storage -import expiration - - -# Route to requested handler. -def app(environ, start_response): - if environ["PATH_INFO"] == "/": - return redirect(environ, start_response) - if environ["PATH_INFO"] == "/storage": - return storage.app(environ, start_response) - if environ["PATH_INFO"] == "/expiration": - return expiration.app(environ, start_response) - start_response("404 Not Found", []) - return [b"Page not found."] - - -# Redirect for root directory. -def redirect(environ, start_response): - headers = [ - ("Location", "static/demos/index.html") - ] - start_response("301 Found", headers) - return [] +""" +Copyright 2020 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +import storage +import expiration + + +# Route to requested handler. +def app(environ, start_response): + if environ["PATH_INFO"] == "/": + return redirect(environ, start_response) + if environ["PATH_INFO"] == "/storage": + return storage.app(environ, start_response) + if environ["PATH_INFO"] == "/expiration": + return expiration.app(environ, start_response) + start_response("404 Not Found", []) + return [b"Page not found."] + + +# Redirect for root directory. +def redirect(environ, start_response): + headers = [ + ("Location", "static/demos/index.html") + ] + start_response("301 Found", headers) + return [] diff --git a/appengine/redirect.html b/appengine/redirect.html index 110a56aa327..035d4dd5c14 100644 --- a/appengine/redirect.html +++ b/appengine/redirect.html @@ -1,68 +1,68 @@ - - - - - - + + + + + + diff --git a/appengine/requirements.txt b/appengine/requirements.txt index 99d5d110e57..55a83cefcb4 100644 --- a/appengine/requirements.txt +++ b/appengine/requirements.txt @@ -1 +1 @@ -google-cloud-ndb +google-cloud-ndb diff --git a/appengine/robots.txt b/appengine/robots.txt index 428c409a757..9610890ff99 100644 --- a/appengine/robots.txt +++ b/appengine/robots.txt @@ -1,2 +1,2 @@ -User-agent: * -Disallow: /storage +User-agent: * +Disallow: /storage diff --git a/appengine/storage.js b/appengine/storage.js index 10db4f20be1..43bdea490b3 100644 --- a/appengine/storage.js +++ b/appengine/storage.js @@ -1,188 +1,188 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Loading and saving blocks with localStorage and cloud storage. - */ -'use strict'; - -// Create a namespace. -var BlocklyStorage = {}; - -/** - * Backup code blocks to localStorage. - * @param {!Blockly.WorkspaceSvg} workspace Workspace. - * @private - */ -BlocklyStorage.backupBlocks_ = function(workspace) { - if ('localStorage' in window) { - var xml = Blockly.Xml.workspaceToDom(workspace); - // Gets the current URL, not including the hash. - var url = window.location.href.split('#')[0]; - window.localStorage.setItem(url, Blockly.Xml.domToText(xml)); - } -}; - -/** - * Bind the localStorage backup function to the unload event. - * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. - */ -BlocklyStorage.backupOnUnload = function(opt_workspace) { - var workspace = opt_workspace || Blockly.getMainWorkspace(); - window.addEventListener('unload', - function() {BlocklyStorage.backupBlocks_(workspace);}, false); -}; - -/** - * Restore code blocks from localStorage. - * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. - */ -BlocklyStorage.restoreBlocks = function(opt_workspace) { - var url = window.location.href.split('#')[0]; - if ('localStorage' in window && window.localStorage[url]) { - var workspace = opt_workspace || Blockly.getMainWorkspace(); - var xml = Blockly.Xml.textToDom(window.localStorage[url]); - Blockly.Xml.domToWorkspace(xml, workspace); - } -}; - -/** - * Save blocks to database and return a link containing key to XML. - * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. - */ -BlocklyStorage.link = function(opt_workspace) { - var workspace = opt_workspace || Blockly.getMainWorkspace(); - var xml = Blockly.Xml.workspaceToDom(workspace, true); - // Remove x/y coordinates from XML if there's only one block stack. - // There's no reason to store this, removing it helps with anonymity. - if (workspace.getTopBlocks(false).length === 1 && xml.querySelector) { - var block = xml.querySelector('block'); - if (block) { - block.removeAttribute('x'); - block.removeAttribute('y'); - } - } - var data = Blockly.Xml.domToText(xml); - BlocklyStorage.makeRequest_('/storage', 'xml', data, workspace); -}; - -/** - * Retrieve XML text from database using given key. - * @param {string} key Key to XML, obtained from href. - * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. - */ -BlocklyStorage.retrieveXml = function(key, opt_workspace) { - var workspace = opt_workspace || Blockly.getMainWorkspace(); - BlocklyStorage.makeRequest_('/storage', 'key', key, workspace); -}; - -/** - * Global reference to current AJAX request. - * @type {XMLHttpRequest} - * @private - */ -BlocklyStorage.httpRequest_ = null; - -/** - * Fire a new AJAX request. - * @param {string} url URL to fetch. - * @param {string} name Name of parameter. - * @param {string} content Content of parameter. - * @param {!Blockly.WorkspaceSvg} workspace Workspace. - * @private - */ -BlocklyStorage.makeRequest_ = function(url, name, content, workspace) { - if (BlocklyStorage.httpRequest_) { - // AJAX call is in-flight. - BlocklyStorage.httpRequest_.abort(); - } - BlocklyStorage.httpRequest_ = new XMLHttpRequest(); - BlocklyStorage.httpRequest_.name = name; - BlocklyStorage.httpRequest_.onreadystatechange = - BlocklyStorage.handleRequest_; - BlocklyStorage.httpRequest_.open('POST', url); - BlocklyStorage.httpRequest_.setRequestHeader('Content-Type', - 'application/x-www-form-urlencoded'); - BlocklyStorage.httpRequest_.send(name + '=' + encodeURIComponent(content)); - BlocklyStorage.httpRequest_.workspace = workspace; -}; - -/** - * Callback function for AJAX call. - * @private - */ -BlocklyStorage.handleRequest_ = function() { - if (BlocklyStorage.httpRequest_.readyState === 4) { - if (BlocklyStorage.httpRequest_.status !== 200) { - BlocklyStorage.alert(BlocklyStorage.HTTPREQUEST_ERROR + '\n' + - 'httpRequest_.status: ' + BlocklyStorage.httpRequest_.status); - } else { - var data = BlocklyStorage.httpRequest_.responseText.trim(); - if (BlocklyStorage.httpRequest_.name === 'xml') { - window.location.hash = data; - BlocklyStorage.alert(BlocklyStorage.LINK_ALERT.replace('%1', - window.location.href)); - } else if (BlocklyStorage.httpRequest_.name === 'key') { - if (!data.length) { - BlocklyStorage.alert(BlocklyStorage.HASH_ERROR.replace('%1', - window.location.hash)); - } else { - BlocklyStorage.loadXml_(data, BlocklyStorage.httpRequest_.workspace); - } - } - BlocklyStorage.monitorChanges_(BlocklyStorage.httpRequest_.workspace); - } - BlocklyStorage.httpRequest_ = null; - } -}; - -/** - * Start monitoring the workspace. If a change is made that changes the XML, - * clear the key from the URL. Stop monitoring the workspace once such a - * change is detected. - * @param {!Blockly.WorkspaceSvg} workspace Workspace. - * @private - */ -BlocklyStorage.monitorChanges_ = function(workspace) { - var startXmlDom = Blockly.Xml.workspaceToDom(workspace); - var startXmlText = Blockly.Xml.domToText(startXmlDom); - function change() { - var xmlDom = Blockly.Xml.workspaceToDom(workspace); - var xmlText = Blockly.Xml.domToText(xmlDom); - if (startXmlText !== xmlText) { - window.location.hash = ''; - workspace.removeChangeListener(change); - } - } - workspace.addChangeListener(change); -}; - -/** - * Load blocks from XML. - * @param {string} xml Text representation of XML. - * @param {!Blockly.WorkspaceSvg} workspace Workspace. - * @private - */ -BlocklyStorage.loadXml_ = function(xml, workspace) { - try { - xml = Blockly.Xml.textToDom(xml); - } catch (e) { - BlocklyStorage.alert(BlocklyStorage.XML_ERROR + '\nXML: ' + xml); - return; - } - // Clear the workspace to avoid merge. - workspace.clear(); - Blockly.Xml.domToWorkspace(xml, workspace); -}; - -/** - * Present a text message to the user. - * Designed to be overridden if an app has custom dialogs, or a butter bar. - * @param {string} message Text to alert. - */ -BlocklyStorage.alert = function(message) { - window.alert(message); -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Loading and saving blocks with localStorage and cloud storage. + */ +'use strict'; + +// Create a namespace. +var BlocklyStorage = {}; + +/** + * Backup code blocks to localStorage. + * @param {!Blockly.WorkspaceSvg} workspace Workspace. + * @private + */ +BlocklyStorage.backupBlocks_ = function(workspace) { + if ('localStorage' in window) { + var xml = Blockly.Xml.workspaceToDom(workspace); + // Gets the current URL, not including the hash. + var url = window.location.href.split('#')[0]; + window.localStorage.setItem(url, Blockly.Xml.domToText(xml)); + } +}; + +/** + * Bind the localStorage backup function to the unload event. + * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. + */ +BlocklyStorage.backupOnUnload = function(opt_workspace) { + var workspace = opt_workspace || Blockly.getMainWorkspace(); + window.addEventListener('unload', + function() {BlocklyStorage.backupBlocks_(workspace);}, false); +}; + +/** + * Restore code blocks from localStorage. + * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. + */ +BlocklyStorage.restoreBlocks = function(opt_workspace) { + var url = window.location.href.split('#')[0]; + if ('localStorage' in window && window.localStorage[url]) { + var workspace = opt_workspace || Blockly.getMainWorkspace(); + var xml = Blockly.Xml.textToDom(window.localStorage[url]); + Blockly.Xml.domToWorkspace(xml, workspace); + } +}; + +/** + * Save blocks to database and return a link containing key to XML. + * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. + */ +BlocklyStorage.link = function(opt_workspace) { + var workspace = opt_workspace || Blockly.getMainWorkspace(); + var xml = Blockly.Xml.workspaceToDom(workspace, true); + // Remove x/y coordinates from XML if there's only one block stack. + // There's no reason to store this, removing it helps with anonymity. + if (workspace.getTopBlocks(false).length === 1 && xml.querySelector) { + var block = xml.querySelector('block'); + if (block) { + block.removeAttribute('x'); + block.removeAttribute('y'); + } + } + var data = Blockly.Xml.domToText(xml); + BlocklyStorage.makeRequest_('/storage', 'xml', data, workspace); +}; + +/** + * Retrieve XML text from database using given key. + * @param {string} key Key to XML, obtained from href. + * @param {Blockly.WorkspaceSvg=} opt_workspace Workspace. + */ +BlocklyStorage.retrieveXml = function(key, opt_workspace) { + var workspace = opt_workspace || Blockly.getMainWorkspace(); + BlocklyStorage.makeRequest_('/storage', 'key', key, workspace); +}; + +/** + * Global reference to current AJAX request. + * @type {XMLHttpRequest} + * @private + */ +BlocklyStorage.httpRequest_ = null; + +/** + * Fire a new AJAX request. + * @param {string} url URL to fetch. + * @param {string} name Name of parameter. + * @param {string} content Content of parameter. + * @param {!Blockly.WorkspaceSvg} workspace Workspace. + * @private + */ +BlocklyStorage.makeRequest_ = function(url, name, content, workspace) { + if (BlocklyStorage.httpRequest_) { + // AJAX call is in-flight. + BlocklyStorage.httpRequest_.abort(); + } + BlocklyStorage.httpRequest_ = new XMLHttpRequest(); + BlocklyStorage.httpRequest_.name = name; + BlocklyStorage.httpRequest_.onreadystatechange = + BlocklyStorage.handleRequest_; + BlocklyStorage.httpRequest_.open('POST', url); + BlocklyStorage.httpRequest_.setRequestHeader('Content-Type', + 'application/x-www-form-urlencoded'); + BlocklyStorage.httpRequest_.send(name + '=' + encodeURIComponent(content)); + BlocklyStorage.httpRequest_.workspace = workspace; +}; + +/** + * Callback function for AJAX call. + * @private + */ +BlocklyStorage.handleRequest_ = function() { + if (BlocklyStorage.httpRequest_.readyState === 4) { + if (BlocklyStorage.httpRequest_.status !== 200) { + BlocklyStorage.alert(BlocklyStorage.HTTPREQUEST_ERROR + '\n' + + 'httpRequest_.status: ' + BlocklyStorage.httpRequest_.status); + } else { + var data = BlocklyStorage.httpRequest_.responseText.trim(); + if (BlocklyStorage.httpRequest_.name === 'xml') { + window.location.hash = data; + BlocklyStorage.alert(BlocklyStorage.LINK_ALERT.replace('%1', + window.location.href)); + } else if (BlocklyStorage.httpRequest_.name === 'key') { + if (!data.length) { + BlocklyStorage.alert(BlocklyStorage.HASH_ERROR.replace('%1', + window.location.hash)); + } else { + BlocklyStorage.loadXml_(data, BlocklyStorage.httpRequest_.workspace); + } + } + BlocklyStorage.monitorChanges_(BlocklyStorage.httpRequest_.workspace); + } + BlocklyStorage.httpRequest_ = null; + } +}; + +/** + * Start monitoring the workspace. If a change is made that changes the XML, + * clear the key from the URL. Stop monitoring the workspace once such a + * change is detected. + * @param {!Blockly.WorkspaceSvg} workspace Workspace. + * @private + */ +BlocklyStorage.monitorChanges_ = function(workspace) { + var startXmlDom = Blockly.Xml.workspaceToDom(workspace); + var startXmlText = Blockly.Xml.domToText(startXmlDom); + function change() { + var xmlDom = Blockly.Xml.workspaceToDom(workspace); + var xmlText = Blockly.Xml.domToText(xmlDom); + if (startXmlText !== xmlText) { + window.location.hash = ''; + workspace.removeChangeListener(change); + } + } + workspace.addChangeListener(change); +}; + +/** + * Load blocks from XML. + * @param {string} xml Text representation of XML. + * @param {!Blockly.WorkspaceSvg} workspace Workspace. + * @private + */ +BlocklyStorage.loadXml_ = function(xml, workspace) { + try { + xml = Blockly.Xml.textToDom(xml); + } catch (e) { + BlocklyStorage.alert(BlocklyStorage.XML_ERROR + '\nXML: ' + xml); + return; + } + // Clear the workspace to avoid merge. + workspace.clear(); + Blockly.Xml.domToWorkspace(xml, workspace); +}; + +/** + * Present a text message to the user. + * Designed to be overridden if an app has custom dialogs, or a butter bar. + * @param {string} message Text to alert. + */ +BlocklyStorage.alert = function(message) { + window.alert(message); +}; diff --git a/appengine/storage.py b/appengine/storage.py index e90375bf1e7..6cd659329d7 100644 --- a/appengine/storage.py +++ b/appengine/storage.py @@ -1,99 +1,99 @@ -"""Blockly Demo: Storage - -Copyright 2012 Google LLC - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" - -"""Store and retrieve XML with App Engine. -""" - -__author__ = "q.neutron@gmail.com (Quynh Neutron)" - -import cgi -import hashlib -from random import randint -from google.cloud import ndb - - -class Xml(ndb.Model): - # A row in the database. - xml_hash = ndb.IntegerProperty() - xml_content = ndb.TextProperty() - last_accessed = ndb.DateTimeProperty(auto_now=True) - -def keyGen(): - # Generate a random string of length KEY_LEN. - KEY_LEN = 6 - CHARS = "abcdefghijkmnopqrstuvwxyz23456789" # Exclude l, 0, 1. - max_index = len(CHARS) - 1 - return "".join([CHARS[randint(0, max_index)] for x in range(KEY_LEN)]) - - -def xmlToKey(xml_content): - # Store XML and return a generated key. - xml_hash = int(hashlib.sha1(xml_content.encode("utf-8")).hexdigest(), 16) - xml_hash = int(xml_hash % (2 ** 64) - (2 ** 63)) - lookup_query = Xml.query(Xml.xml_hash == xml_hash) - client = ndb.Client() - with client.context(): - lookup_result = lookup_query.get() - if lookup_result: - xml_key = lookup_result.key.string_id() - else: - trials = 0 - result = True - while result: - trials += 1 - if trials == 100: - raise Exception("Sorry, the generator failed to get a key for you.") - xml_key = keyGen() - result = Xml.get_by_id(xml_key) - row = Xml(id = xml_key, xml_hash = xml_hash, xml_content = xml_content) - row.put() - return xml_key - - -def keyToXml(key_provided): - # Retrieve stored XML based on the provided key. - # Normalize the string. - key_provided = key_provided.lower().strip() - # Check datastore for a match. - client = ndb.Client() - with client.context(): - result = Xml.get_by_id(key_provided) - if not result: - xml = "" - else: - # Put it back into the datastore immediately, which updates the last - # accessed time. - with client.context(): - result.put() - xml = result.xml_content - return xml - - -def app(environ, start_response): - forms = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ) - if "xml" in forms: - out = xmlToKey(forms["xml"].value) - elif "key" in forms: - out = keyToXml(forms["key"].value) - else: - out = "" - - headers = [ - ("Content-Type", "text/plain") - ] - start_response("200 OK", headers) - return [out.encode("utf-8")] +"""Blockly Demo: Storage + +Copyright 2012 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +"""Store and retrieve XML with App Engine. +""" + +__author__ = "q.neutron@gmail.com (Quynh Neutron)" + +import cgi +import hashlib +from random import randint +from google.cloud import ndb + + +class Xml(ndb.Model): + # A row in the database. + xml_hash = ndb.IntegerProperty() + xml_content = ndb.TextProperty() + last_accessed = ndb.DateTimeProperty(auto_now=True) + +def keyGen(): + # Generate a random string of length KEY_LEN. + KEY_LEN = 6 + CHARS = "abcdefghijkmnopqrstuvwxyz23456789" # Exclude l, 0, 1. + max_index = len(CHARS) - 1 + return "".join([CHARS[randint(0, max_index)] for x in range(KEY_LEN)]) + + +def xmlToKey(xml_content): + # Store XML and return a generated key. + xml_hash = int(hashlib.sha1(xml_content.encode("utf-8")).hexdigest(), 16) + xml_hash = int(xml_hash % (2 ** 64) - (2 ** 63)) + lookup_query = Xml.query(Xml.xml_hash == xml_hash) + client = ndb.Client() + with client.context(): + lookup_result = lookup_query.get() + if lookup_result: + xml_key = lookup_result.key.string_id() + else: + trials = 0 + result = True + while result: + trials += 1 + if trials == 100: + raise Exception("Sorry, the generator failed to get a key for you.") + xml_key = keyGen() + result = Xml.get_by_id(xml_key) + row = Xml(id = xml_key, xml_hash = xml_hash, xml_content = xml_content) + row.put() + return xml_key + + +def keyToXml(key_provided): + # Retrieve stored XML based on the provided key. + # Normalize the string. + key_provided = key_provided.lower().strip() + # Check datastore for a match. + client = ndb.Client() + with client.context(): + result = Xml.get_by_id(key_provided) + if not result: + xml = "" + else: + # Put it back into the datastore immediately, which updates the last + # accessed time. + with client.context(): + result.put() + xml = result.xml_content + return xml + + +def app(environ, start_response): + forms = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ) + if "xml" in forms: + out = xmlToKey(forms["xml"].value) + elif "key" in forms: + out = keyToXml(forms["key"].value) + else: + out = "" + + headers = [ + ("Content-Type", "text/plain") + ] + start_response("200 OK", headers) + return [out.encode("utf-8")] diff --git a/blockly/README.md b/blockly/README.md new file mode 100644 index 00000000000..9494865223c --- /dev/null +++ b/blockly/README.md @@ -0,0 +1,77 @@ +# Blockly + +Google's Blockly is a web-based, visual programming editor. Users can drag +blocks together to build programs. All code is free and open source. + +The source for this module is in the [Blockly repo](http://github.com/google/blockly). + +## Installation + +You can install this package either via ``npm`` or ``unpkg``. + +### npm +```bash +npm install blockly +``` + +### unpkg +```html + +``` + +## Example Usage + +```js +import Blockly from 'blockly'; +Blockly.inject('blocklyDiv', { + ... +}) +``` + +## Samples + +For samples on how to integrate Blockly into your project, view the list of samples at [blockly-samples](https://github.com/google/blockly-samples). + + +### Importing Blockly + +When you import Blockly with ``import * as Blockly from 'blockly';`` you'll get the default modules: +Blockly core, Blockly built-in blocks, the JavaScript generator and the English lang files. + +If you need more flexibility, you'll want to define your imports more carefully: + +#### Blockly Core + +```js +import * as Blockly from 'blockly/core'; +``` + +#### Blockly built in blocks + +```js +import 'blockly/blocks'; +``` + +#### Blockly Generators +If your application needs to generate code from the Blockly blocks, you'll want to include a generator. + +```js +import 'blockly/python'; +``` +to include the Python generator, you can also import ``blockly/javascript``, ``blockly/php``, ``blockly/dart`` and ``blockly/lua``. + +#### Blockly Languages + +```js +import * as Fr from 'blockly/msg/fr'; +Blockly.setLocale(Fr); +``` + +To import the French lang files. Once you've imported the specific lang module, you'll also want to set the locale in Blockly. + +For a full list of supported Blockly locales, see: [https://github.com/google/blockly/tree/master/msg/js](https://github.com/google/blockly/tree/master/msg/js) + + +## License + +Apache 2.0 diff --git a/blockly/blockly.d.ts b/blockly/blockly.d.ts new file mode 100644 index 00000000000..c7af13054b3 --- /dev/null +++ b/blockly/blockly.d.ts @@ -0,0 +1,26127 @@ +declare module "core/utils/colour" { + /** + * Get the richness of block colours, regardless of the hue. + * @alias Blockly.utils.colour.getHsvSaturation + * @return {number} The current richness. + * @package + */ + export function getHsvSaturation(): number; + /** + * Set the richness of block colours, regardless of the hue. + * @param {number} newSaturation The new richness, in the range of 0 + * (inclusive) to 1 (exclusive) + * @alias Blockly.utils.colour.setHsvSaturation + * @package + */ + export function setHsvSaturation(newSaturation: number): void; + /** + * Get the intensity of block colours, regardless of the hue. + * @alias Blockly.utils.colour.getHsvValue + * @return {number} The current intensity. + * @package + */ + export function getHsvValue(): number; + /** + * Set the intensity of block colours, regardless of the hue. + * @param {number} newValue The new intensity, in the range of 0 + * (inclusive) to 1 (exclusive) + * @alias Blockly.utils.colour.setHsvValue + * @package + */ + export function setHsvValue(newValue: number): void; + /** + * Parses a colour from a string. + * .parse('red') -> '#ff0000' + * .parse('#f00') -> '#ff0000' + * .parse('#ff0000') -> '#ff0000' + * .parse('0xff0000') -> '#ff0000' + * .parse('rgb(255, 0, 0)') -> '#ff0000' + * @param {string|number} str Colour in some CSS format. + * @return {?string} A string containing a hex representation of the colour, + * or null if can't be parsed. + * @alias Blockly.utils.colour.parse + */ + export function parse(str: string | number): string | null; + /** + * Converts a colour from RGB to hex representation. + * @param {number} r Amount of red, int between 0 and 255. + * @param {number} g Amount of green, int between 0 and 255. + * @param {number} b Amount of blue, int between 0 and 255. + * @return {string} Hex representation of the colour. + * @alias Blockly.utils.colour.rgbToHex + */ + export function rgbToHex(r: number, g: number, b: number): string; + /** + * Converts a colour to RGB. + * @param {string} colour String representing colour in any + * colour format ('#ff0000', 'red', '0xff000', etc). + * @return {!Array} RGB representation of the colour. + * @alias Blockly.utils.colour.hexToRgb + */ + export function hexToRgb(colour: string): Array; + /** + * Converts an HSV triplet to hex representation. + * @param {number} h Hue value in [0, 360]. + * @param {number} s Saturation value in [0, 1]. + * @param {number} v Brightness in [0, 255]. + * @return {string} Hex representation of the colour. + * @alias Blockly.utils.colour.hsvToHex + */ + export function hsvToHex(h: number, s: number, v: number): string; + /** + * Blend two colours together, using the specified factor to indicate the + * weight given to the first colour. + * @param {string} colour1 First colour. + * @param {string} colour2 Second colour. + * @param {number} factor The weight to be given to colour1 over colour2. + * Values should be in the range [0, 1]. + * @return {?string} Combined colour represented in hex. + * @alias Blockly.utils.colour.blend + */ + export function blend(colour1: string, colour2: string, factor: number): string | null; + /** + * A map that contains the 16 basic colour keywords as defined by W3C: + * https://www.w3.org/TR/2018/REC-css-color-3-20180619/#html4 + * The keys of this map are the lowercase "readable" names of the colours, + * while the values are the "hex" values. + * + * @type {!Object} + * @alias Blockly.utils.colour.names + */ + export const names: { + [x: string]: string; + }; + /** + * Convert a hue (HSV model) into an RGB hex triplet. + * @param {number} hue Hue on a colour wheel (0-360). + * @return {string} RGB code, e.g. '#5ba65b'. + * @alias Blockly.utils.colour.hueToHex + */ + export function hueToHex(hue: number): string; +} +declare module "core/utils/string" { + /** + * Fast prefix-checker. + * Copied from Closure's goog.string.startsWith. + * @param {string} str The string to check. + * @param {string} prefix A string to look for at the start of `str`. + * @return {boolean} True if `str` begins with `prefix`. + * @alias Blockly.utils.string.startsWith + */ + export function startsWith(str: string, prefix: string): boolean; + /** + * Given an array of strings, return the length of the shortest one. + * @param {!Array} array Array of strings. + * @return {number} Length of shortest string. + * @alias Blockly.utils.string.shortestStringLength + */ + export function shortestStringLength(array: Array): number; + /** + * Given an array of strings, return the length of the common prefix. + * Words may not be split. Any space after a word is included in the length. + * @param {!Array} array Array of strings. + * @param {number=} opt_shortest Length of shortest string. + * @return {number} Length of common prefix. + * @alias Blockly.utils.string.commonWordPrefix + */ + export function commonWordPrefix(array: Array, opt_shortest?: number | undefined): number; + /** + * Given an array of strings, return the length of the common suffix. + * Words may not be split. Any space after a word is included in the length. + * @param {!Array} array Array of strings. + * @param {number=} opt_shortest Length of shortest string. + * @return {number} Length of common suffix. + * @alias Blockly.utils.string.commonWordSuffix + */ + export function commonWordSuffix(array: Array, opt_shortest?: number | undefined): number; + /** + * Wrap text to the specified width. + * @param {string} text Text to wrap. + * @param {number} limit Width to wrap each line. + * @return {string} Wrapped text. + * @alias Blockly.utils.string.wrap + */ + export function wrap(text: string, limit: number): string; + /** + * Is the given string a number (includes negative and decimals). + * @param {string} str Input string. + * @return {boolean} True if number, false otherwise. + * @alias Blockly.utils.string.isNumber + */ + export function isNumber(str: string): boolean; +} +declare module "core/msg" { + /** + * A dictionary of localised messages. + * @type {!Object} + */ + export const Msg: any; +} +declare module "core/utils/parsing" { + /** + * Parse a string with any number of interpolation tokens (%1, %2, ...). + * It will also replace string table references (e.g., %{bky_my_msg} and + * %{BKY_MY_MSG} will both be replaced with the value in + * Msg['MY_MSG']). Percentage sign characters '%' may be self-escaped + * (e.g., '%%'). + * @param {string} message Text which might contain string table references and + * interpolation tokens. + * @return {!Array} Array of strings and numbers. + * @alias Blockly.utils.parsing.tokenizeInterpolation + */ + export function tokenizeInterpolation(message: string): Array; + /** + * Replaces string table references in a message, if the message is a string. + * For example, "%{bky_my_msg}" and "%{BKY_MY_MSG}" will both be replaced with + * the value in Msg['MY_MSG']. + * @param {string|?} message Message, which may be a string that contains + * string table references. + * @return {string} String with message references replaced. + * @alias Blockly.utils.parsing.replaceMessageReferences + */ + export function replaceMessageReferences(message: string | unknown): string; + /** + * Validates that any %{MSG_KEY} references in the message refer to keys of + * the Msg string table. + * @param {string} message Text which might contain string table references. + * @return {boolean} True if all message references have matching values. + * Otherwise, false. + * @alias Blockly.utils.parsing.checkMessageReferences + */ + export function checkMessageReferences(message: string): boolean; + /** + * Parse a block colour from a number or string, as provided in a block + * definition. + * @param {number|string} colour HSV hue value (0 to 360), #RRGGBB string, + * or a message reference string pointing to one of those two values. + * @return {{hue: ?number, hex: string}} An object containing the colour as + * a #RRGGBB string, and the hue if the input was an HSV hue value. + * @throws {Error} If the colour cannot be parsed. + * @alias Blockly.utils.parsing.parseBlockColour + */ + export function parseBlockColour(colour: number | string): { + hue: number | null; + hex: string; + }; +} +declare module "core/utils/aria" { + /** + * * + */ + export type Role = string; + export namespace Role { + const GRID: string; + const GRIDCELL: string; + const GROUP: string; + const LISTBOX: string; + const MENU: string; + const MENUITEM: string; + const MENUITEMCHECKBOX: string; + const OPTION: string; + const PRESENTATION: string; + const ROW: string; + const TREE: string; + const TREEITEM: string; + } + /** + * * + */ + export type State = string; + export namespace State { + const ACTIVEDESCENDANT: string; + const COLCOUNT: string; + const DISABLED: string; + const EXPANDED: string; + const INVALID: string; + const LABEL: string; + const LABELLEDBY: string; + const LEVEL: string; + const ORIENTATION: string; + const POSINSET: string; + const ROWCOUNT: string; + const SELECTED: string; + const SETSIZE: string; + const VALUEMAX: string; + const VALUEMIN: string; + } + /** + * Sets the role of an element. + * + * Similar to Closure's goog.a11y.aria + * + * @param {!Element} element DOM node to set role of. + * @param {!Role} roleName Role name. + * @alias Blockly.utils.aria.setRole + */ + export function setRole(element: Element, roleName: Role): void; + /** + * Sets the state or property of an element. + * Copied from Closure's goog.a11y.aria + * @param {!Element} element DOM node where we set state. + * @param {!State} stateName State attribute being set. + * Automatically adds prefix 'aria-' to the state name if the attribute is + * not an extra attribute. + * @param {string|boolean|number|!Array} value Value + * for the state attribute. + * @alias Blockly.utils.aria.setState + */ + export function setState(element: Element, stateName: State, value: string | boolean | number | Array): void; +} +declare module "core/utils/global" { + /** + * Reference to the global object. + * + * More info on this implementation here: + * https://docs.google.com/document/d/1NAeW4Wk7I7FV0Y2tcUFvQdGMc89k2vdgSXInw8_nvCI + */ + export var globalThis: any; +} +declare module "core/utils/useragent" { + /** + * The raw useragent string. + * @type {string} + */ + let rawUserAgent: string; + /** @type {boolean} */ + let isIe: boolean; + /** @type {boolean} */ + let isEdge: boolean; + /** @type {boolean} */ + let isJavaFx: boolean; + /** @type {boolean} */ + let isChrome: boolean; + /** @type {boolean} */ + let isWebKit: boolean; + /** @type {boolean} */ + let isGecko: boolean; + /** @type {boolean} */ + let isAndroid: boolean; + /** @type {boolean} */ + let isIPad: boolean; + /** @type {boolean} */ + let isIPod: boolean; + /** @type {boolean} */ + let isIPhone: boolean; + /** @type {boolean} */ + let isMac: boolean; + /** @type {boolean} */ + let isTablet: boolean; + /** @type {boolean} */ + let isMobile: boolean; + export { rawUserAgent as raw, isIe as IE, isEdge as EDGE, isJavaFx as JavaFx, isChrome as CHROME, isWebKit as WEBKIT, isGecko as GECKO, isAndroid as ANDROID, isIPad as IPAD, isIPod as IPOD, isIPhone as IPHONE, isMac as MAC, isTablet as TABLET, isMobile as MOBILE }; +} +declare module "core/utils/svg" { + /** + * A name with the type of the SVG element stored in the generic. + * @template T + * @alias Blockly.utils.Svg + */ + export class Svg { + /** + * @param {string} tagName The SVG element tag name. + * @package + */ + constructor(tagName: string); + /** + * @type {string} + * @private + */ + private tagName_; + /** + * Returns the SVG element tag name. + * @return {string} The name. + */ + toString(): string; + } + export namespace Svg { + const ANIMATE: Svg; + const CIRCLE: Svg; + const CLIPPATH: Svg; + const DEFS: Svg; + const FECOMPOSITE: Svg; + const FECOMPONENTTRANSFER: Svg; + const FEFLOOD: Svg; + const FEFUNCA: Svg; + const FEGAUSSIANBLUR: Svg; + const FEPOINTLIGHT: Svg; + const FESPECULARLIGHTING: Svg; + const FILTER: Svg; + const FOREIGNOBJECT: Svg; + const G: Svg; + const IMAGE: Svg; + const LINE: Svg; + const PATH: Svg; + const PATTERN: Svg; + const POLYGON: Svg; + const RECT: Svg; + const SVG: Svg; + const TEXT: Svg; + const TSPAN: Svg; + } +} +declare module "core/utils/dom" { + /** + * Required name space for SVG elements. + * @const + * @alias Blockly.utils.dom.SVG_NS + */ + export const SVG_NS: "http://www.w3.org/2000/svg"; + /** + * Required name space for HTML elements. + * @const + * @alias Blockly.utils.dom.HTML_NS + */ + export const HTML_NS: "http://www.w3.org/1999/xhtml"; + /** + * Required name space for XLINK elements. + * @const + * @alias Blockly.utils.dom.XLINK_NS + */ + export const XLINK_NS: "http://www.w3.org/1999/xlink"; + /** + * * + */ + export type NodeType = number; + export namespace NodeType { + const ELEMENT_NODE: number; + const TEXT_NODE: number; + const COMMENT_NODE: number; + const DOCUMENT_POSITION_CONTAINED_BY: number; + } + /** + * Helper method for creating SVG elements. + * @param {string|Svg} name Element's tag name. + * @param {!Object} attrs Dictionary of attribute names and values. + * @param {Element=} opt_parent Optional parent on which to append the element. + * @return {T} Newly created SVG element. The return type is {!SVGElement} if + * name is a string or a more specific type if it a member of Svg. + * @template T + * @alias Blockly.utils.dom.createSvgElement + */ + export function createSvgElement(name: string | Svg, attrs: Object, opt_parent?: Element | undefined): T; + /** + * Add a CSS class to a element. + * Similar to Closure's goog.dom.classes.add, except it handles SVG elements. + * @param {!Element} element DOM element to add class to. + * @param {string} className Name of class to add. + * @return {boolean} True if class was added, false if already present. + * @alias Blockly.utils.dom.addClass + */ + export function addClass(element: Element, className: string): boolean; + /** + * Removes multiple calsses from an element. + * @param {!Element} element DOM element to remove classes from. + * @param {string} classNames A string of one or multiple class names for an + * element. + * @alias Blockly.utils.dom.removeClasses + */ + export function removeClasses(element: Element, classNames: string): void; + /** + * Remove a CSS class from a element. + * Similar to Closure's goog.dom.classes.remove, except it handles SVG elements. + * @param {!Element} element DOM element to remove class from. + * @param {string} className Name of class to remove. + * @return {boolean} True if class was removed, false if never present. + * @alias Blockly.utils.dom.removeClass + */ + export function removeClass(element: Element, className: string): boolean; + /** + * Checks if an element has the specified CSS class. + * Similar to Closure's goog.dom.classes.has, except it handles SVG elements. + * @param {!Element} element DOM element to check. + * @param {string} className Name of class to check. + * @return {boolean} True if class exists, false otherwise. + * @alias Blockly.utils.dom.hasClass + */ + export function hasClass(element: Element, className: string): boolean; + /** + * Removes a node from its parent. No-op if not attached to a parent. + * @param {?Node} node The node to remove. + * @return {?Node} The node removed if removed; else, null. + * @alias Blockly.utils.dom.removeNode + */ + export function removeNode(node: Node | null): Node | null; + /** + * Insert a node after a reference node. + * Contrast with node.insertBefore function. + * @param {!Element} newNode New element to insert. + * @param {!Element} refNode Existing element to precede new node. + * @alias Blockly.utils.dom.insertAfter + */ + export function insertAfter(newNode: Element, refNode: Element): void; + /** + * Whether a node contains another node. + * @param {!Node} parent The node that should contain the other node. + * @param {!Node} descendant The node to test presence of. + * @return {boolean} Whether the parent node contains the descendant node. + * @alias Blockly.utils.dom.containsNode + */ + export function containsNode(parent: Node, descendant: Node): boolean; + /** + * Sets the CSS transform property on an element. This function sets the + * non-vendor-prefixed and vendor-prefixed versions for backwards compatibility + * with older browsers. See https://caniuse.com/#feat=transforms2d + * @param {!Element} element Element to which the CSS transform will be applied. + * @param {string} transform The value of the CSS `transform` property. + * @alias Blockly.utils.dom.setCssTransform + */ + export function setCssTransform(element: Element, transform: string): void; + /** + * Start caching text widths. Every call to this function MUST also call + * stopTextWidthCache. Caches must not survive between execution threads. + * @alias Blockly.utils.dom.startTextWidthCache + */ + export function startTextWidthCache(): void; + /** + * Stop caching field widths. Unless caching was already on when the + * corresponding call to startTextWidthCache was made. + * @alias Blockly.utils.dom.stopTextWidthCache + */ + export function stopTextWidthCache(): void; + /** + * Gets the width of a text element, caching it in the process. + * @param {!Element} textElement An SVG 'text' element. + * @return {number} Width of element. + * @alias Blockly.utils.dom.getTextWidth + */ + export function getTextWidth(textElement: Element): number; + /** + * Gets the width of a text element using a faster method than `getTextWidth`. + * This method requires that we know the text element's font family and size in + * advance. Similar to `getTextWidth`, we cache the width we compute. + * @param {!Element} textElement An SVG 'text' element. + * @param {number} fontSize The font size to use. + * @param {string} fontWeight The font weight to use. + * @param {string} fontFamily The font family to use. + * @return {number} Width of element. + * @alias Blockly.utils.dom.getFastTextWidth + */ + export function getFastTextWidth(textElement: Element, fontSize: number, fontWeight: string, fontFamily: string): number; + /** + * Gets the width of a text element using a faster method than `getTextWidth`. + * This method requires that we know the text element's font family and size in + * advance. Similar to `getTextWidth`, we cache the width we compute. + * This method is similar to ``getFastTextWidth`` but expects the font size + * parameter to be a string. + * @param {!Element} textElement An SVG 'text' element. + * @param {string} fontSize The font size to use. + * @param {string} fontWeight The font weight to use. + * @param {string} fontFamily The font family to use. + * @return {number} Width of element. + * @alias Blockly.utils.dom.getFastTextWidthWithSizeString + */ + export function getFastTextWidthWithSizeString(textElement: Element, fontSize: string, fontWeight: string, fontFamily: string): number; + /** + * Measure a font's metrics. The height and baseline values. + * @param {string} text Text to measure the font dimensions of. + * @param {string} fontSize The font size to use. + * @param {string} fontWeight The font weight to use. + * @param {string} fontFamily The font family to use. + * @return {{height: number, baseline: number}} Font measurements. + * @alias Blockly.utils.dom.measureFontMetrics + */ + export function measureFontMetrics(text: string, fontSize: string, fontWeight: string, fontFamily: string): { + height: number; + baseline: number; + }; + import { Svg } from "core/utils/svg"; +} +declare module "core/blocks" { + /** + * A block definition. For now this very lose, but it can potentially + * be refined e.g. by replacing this typedef with a class definition. + */ + export type BlockDefinition = any; + /** + * A block definition. For now this very lose, but it can potentially + * be refined e.g. by replacing this typedef with a class definition. + * @typedef {!Object} + */ + // export let BlockDefinition: any; + /** + * A mapping of block type names to block prototype objects. + * @type {!Object} + * @alias Blockly.blocks.Blocks + */ + export const Blocks: { + [x: string]: BlockDefinition; + }; +} +declare module "core/utils/idgenerator" { + namespace internal { + /** + * Generate a random unique ID. This should be globally unique. + * 87 characters ^ 20 length > 128 bits (better than a UUID). + * @return {string} A globally unique ID string. + */ + function genUid(): string; + } + /** + * Generate the next unique element IDs. + * IDs are compatible with the HTML4 id attribute restrictions: + * Use only ASCII letters, digits, '_', '-' and '.' + * + * For UUIDs use genUid (below) instead; this ID generator should + * primarily be used for IDs that end up in the DOM. + * + * @return {string} The next unique identifier. + * @alias Blockly.utils.idGenerator.getNextUniqueId + */ + export function getNextUniqueId(): string; + /** + * Generate a random unique ID. + * @see internal.genUid + * @return {string} A globally unique ID string. + * @alias Blockly.utils.idGenerator.genUid + */ + export function genUid(): string; + export { internal as TEST_ONLY }; +} +declare module "core/utils/array" { + /** + * Removes the first occurrence of a particular value from an array. + * @param {!Array} arr Array from which to remove value. + * @param {*} value Value to remove. + * @return {boolean} True if an element was removed. + * @alias Blockly.array.removeElem + * @package + */ + export function removeElem(arr: any[], value: any): boolean; +} +declare module "core/utils/math" { + /** + * Converts degrees to radians. + * Copied from Closure's goog.math.toRadians. + * @param {number} angleDegrees Angle in degrees. + * @return {number} Angle in radians. + * @alias Blockly.utils.math.toRadians + */ + export function toRadians(angleDegrees: number): number; + /** + * Converts radians to degrees. + * Copied from Closure's goog.math.toDegrees. + * @param {number} angleRadians Angle in radians. + * @return {number} Angle in degrees. + * @alias Blockly.utils.math.toDegrees + */ + export function toDegrees(angleRadians: number): number; + /** + * Clamp the provided number between the lower bound and the upper bound. + * @param {number} lowerBound The desired lower bound. + * @param {number} number The number to clamp. + * @param {number} upperBound The desired upper bound. + * @return {number} The clamped number. + * @alias Blockly.utils.math.clamp + */ + export function clamp(lowerBound: number, number: number, upperBound: number): number; +} +declare module "core/serialization/priorities" { + /** + * The priority for deserializing variables. + * @type {number} + * @const + * @alias Blockly.serialization.priorities.VARIABLES + */ + export const VARIABLES: number; + /** + * The priority for deserializing blocks. + * @type {number} + * @const + * @alias Blockly.serialization.priorities.BLOCKS + */ + export const BLOCKS: number; +} +declare module "core/interfaces/i_serializer" { + /** + * Serializes and deserializes a plugin or system. + * @interface + * @alias Blockly.serialization.ISerializer.ISerializer + */ + export class ISerializer { + /** + * A priority value used to determine the order of deserializing state. + * More positive priorities are deserialized before less positive + * priorities. Eg if you have priorities (0, -10, 10, 100) the order of + * deserialiation will be (100, 10, 0, -10). + * If two serializers have the same priority, they are deserialized in an + * arbitrary order relative to each other. + * @type {number} + */ + priority: number; + /** + * Saves the state of the plugin or system. + * @param {!Workspace} workspace The workspace the system to serialize is + * associated with. + * @return {?} A JS object containing the system's state, or null if + * there is no state to record. + */ + save(workspace: Workspace): unknown; + /** + * Loads the state of the plugin or system. + * @param {?} state The state of the system to deserialize. This will always + * be non-null. + * @param {!Workspace} workspace The workspace the system to deserialize is + * associated with. + */ + load(state: unknown, workspace: Workspace): void; + /** + * Clears the state of the plugin or system. + * @param {!Workspace} workspace The workspace the system to clear the state + * of is associated with. + */ + clear(workspace: Workspace): void; + } + import { Workspace } from "core/workspace"; +} +declare module "core/serialization/registry" { + /** + * Registers the given serializer so that it can be used for serialization and + * deserialization. + * @param {string} name The name of the serializer to register. + * @param {ISerializer} serializer The serializer to register. + * @alias Blockly.serialization.registry.register + */ + export function register(name: string, serializer: ISerializer): void; + /** + * Unregisters the serializer associated with the given name. + * @param {string} name The name of the serializer to unregister. + * @alias Blockly.serialization.registry.unregister + */ + export function unregister(name: string): void; + import { ISerializer } from "core/interfaces/i_serializer"; +} +declare module "core/serialization/exceptions" { + /** + * @alias Blockly.serialization.exceptions.DeserializationError + */ + export class DeserializationError extends Error { + } + /** + * Represents an error where the serialized state is expected to provide a + * block type, but it is not provided. + * @alias Blockly.serialization.exceptions.MissingBlockType + */ + export class MissingBlockType extends DeserializationError { + /** + * @param {!State} state The state object which is missing the block type. + * @package + */ + constructor(state: any); + /** + * The state object containing the bad name. + * @type {!State} + */ + state: any; + } + /** + * Represents an error where deserialization encountered a block that did + * not have a connection that was defined in the serialized state. + * @alias Blockly.serialization.exceptions.MissingConnection + */ + export class MissingConnection extends DeserializationError { + /** + * @param {string} connection The name of the connection that is missing. E.g. + * 'IF0', or 'next'. + * @param {!Block} block The block missing the connection. + * @param {!State} state The state object containing the bad connection. + * @package + */ + constructor(connection: string, block: Block, state: any); + /** + * The block missing the connection. + * @type {!Block} + */ + block: Block; + /** + * The state object containing the bad name. + * @type {!State} + */ + state: any; + } + /** + * Represents an error where deserialization tried to connect two connections + * that were not compatible. + * @alias Blockly.serialization.exceptions.BadConnectionCheck + */ + export class BadConnectionCheck extends DeserializationError { + /** + * @param {string} reason The reason the connections were not compatible. + * @param {string} childConnection The name of the incompatible child + * connection. E.g. 'output' or 'previous'. + * @param {!Block} childBlock The child block that could not connect + * to its parent. + * @param {!State} childState The state object representing the child block. + * @package + */ + constructor(reason: string, childConnection: string, childBlock: Block, childState: any); + /** + * The block that could not connect to its parent. + * @type {!Block} + */ + childBlock: Block; + /** + * The state object representing the block that could not connect to its + * parent. + * @type {!State} + */ + childState: any; + } + /** + * Represents an error where deserialization encountered a real block as it + * was deserializing children of a shadow. + * This is an error because it is an invariant of Blockly that shadow blocks + * do not have real children. + * @alias Blockly.serialization.exceptions.RealChildOfShadow + */ + export class RealChildOfShadow extends DeserializationError { + /** + * @param {!State} state The state object representing the real block. + * @package + */ + constructor(state: any); + /** + * The state object representing the real block. + * @type {!State} + */ + state: any; + } + import { Block } from "core/block"; +} +declare module "core/utils/rect" { + /** + * Class for representing rectangular regions. + * @alias Blockly.utils.Rect + */ + export const Rect: { + new (top: number, bottom: number, left: number, right: number): { + /** @type {number} */ + top: number; + /** @type {number} */ + bottom: number; + /** @type {number} */ + left: number; + /** @type {number} */ + right: number; + /** + * Tests whether this rectangle contains a x/y coordinate. + * + * @param {number} x The x coordinate to test for containment. + * @param {number} y The y coordinate to test for containment. + * @return {boolean} Whether this rectangle contains given coordinate. + */ + contains(x: number, y: number): boolean; + /** + * Tests whether this rectangle intersects the provided rectangle. + * Assumes that the coordinate system increases going down and left. + * @param {!Rect} other The other rectangle to check for + * intersection with. + * @return {boolean} Whether this rectangle intersects the provided rectangle. + */ + intersects(other: any): boolean; + }; + }; +} +declare module "core/utils/size" { + /** + * Class for representing sizes consisting of a width and height. + * @alias Blockly.utils.Size + */ + export const Size: { + new (width: number, height: number): { + /** + * Width + * @type {number} + */ + width: number; + /** + * Height + * @type {number} + */ + height: number; + }; + /** + * Compares sizes for equality. + * @param {?Size} a A Size. + * @param {?Size} b A Size. + * @return {boolean} True iff the sizes have equal widths and equal + * heights, or if both are null. + */ + equals(a: { + /** + * Width + * @type {number} + */ + width: number; + /** + * Height + * @type {number} + */ + height: number; + } | null, b: { + /** + * Width + * @type {number} + */ + width: number; + /** + * Height + * @type {number} + */ + height: number; + } | null): boolean; + }; +} +declare module "core/dialog" { + /** + * Wrapper to window.alert() that app developers may override via setAlert to + * provide alternatives to the modal browser window. + * @param {string} message The message to display to the user. + * @param {function()=} opt_callback The callback when the alert is dismissed. + * @alias Blockly.dialog.alert + */ + export function alert(message: string, opt_callback?: (() => any) | undefined): void; + /** + * Sets the function to be run when Blockly.dialog.alert() is called. + * @param {!function(string, function()=)} alertFunction The function to be run. + * @see Blockly.dialog.alert + * @alias Blockly.dialog.setAlert + */ + export function setAlert(alertFunction: (arg0: string, arg1: (() => any) | undefined) => any): void; + /** + * Wrapper to window.confirm() that app developers may override via setConfirm + * to provide alternatives to the modal browser window. + * @param {string} message The message to display to the user. + * @param {!function(boolean)} callback The callback for handling user response. + * @alias Blockly.dialog.confirm + */ + export function confirm(message: string, callback: (arg0: boolean) => any): void; + /** + * Sets the function to be run when Blockly.dialog.confirm() is called. + * @param {!function(string, !function(boolean))} confirmFunction The function + * to be run. + * @see Blockly.dialog.confirm + * @alias Blockly.dialog.setConfirm + */ + export function setConfirm(confirmFunction: (arg0: string, arg1: (arg0: boolean) => any) => any): void; + /** + * Wrapper to window.prompt() that app developers may override via setPrompt to + * provide alternatives to the modal browser window. Built-in browser prompts + * are often used for better text input experience on mobile device. We strongly + * recommend testing mobile when overriding this. + * @param {string} message The message to display to the user. + * @param {string} defaultValue The value to initialize the prompt with. + * @param {!function(?string)} callback The callback for handling user response. + * @alias Blockly.dialog.prompt + */ + export function prompt(message: string, defaultValue: string, callback: (arg0: string | null) => any): void; + /** + * Sets the function to be run when Blockly.dialog.prompt() is called. + * @param {!function(string, string, !function(?string))} promptFunction The + * function to be run. + * @see Blockly.dialog.prompt + * @alias Blockly.dialog.setPrompt + */ + export function setPrompt(promptFunction: (arg0: string, arg1: string, arg2: (arg0: string | null) => any) => any): void; +} +declare module "core/utils/xml" { + /** + * Namespace for Blockly's XML. + * @alias Blockly.utils.xml.NAME_SPACE + */ + export const NAME_SPACE: "https://developers.google.com/blockly/xml"; + /** + * Get the document object to use for XML serialization. + * @return {!Document} The document object. + * @alias Blockly.utils.xml.getDocument + */ + export function getDocument(): Document; + /** + * Get the document object to use for XML serialization. + * @param {!Document} document The document object to use. + * @alias Blockly.utils.xml.setDocument + */ + export function setDocument(document: Document): void; + /** + * Create DOM element for XML. + * @param {string} tagName Name of DOM element. + * @return {!Element} New DOM element. + * @alias Blockly.utils.xml.createElement + */ + export function createElement(tagName: string): Element; + /** + * Create text element for XML. + * @param {string} text Text content. + * @return {!Text} New DOM text node. + * @alias Blockly.utils.xml.createTextNode + */ + export function createTextNode(text: string): Text; + /** + * Converts an XML string into a DOM tree. + * @param {string} text XML string. + * @return {Document} The DOM document. + * @throws if XML doesn't parse. + * @alias Blockly.utils.xml.textToDomDocument + */ + export function textToDomDocument(text: string): Document; + /** + * Converts a DOM structure into plain text. + * Currently the text format is fairly ugly: all one line with no whitespace. + * @param {!Node} dom A tree of XML nodes. + * @return {string} Text representation. + * @alias Blockly.utils.xml.domToText + */ + export function domToText(dom: Node): string; +} +declare module "core/events/events_var_base" { + /** + * Abstract class for a variable event. + * @extends {AbstractEvent} + * @alias Blockly.Events.VarBase + */ + export class VarBase extends AbstractEvent { + /** + * @param {!VariableModel=} opt_variable The variable this event + * corresponds to. Undefined for a blank event. + */ + constructor(opt_variable?: VariableModel | undefined); + /** + * The variable id for the variable this event pertains to. + * @type {string} + */ + varId: string; + } + import { Abstract as AbstractEvent } from "core/events/events_abstract"; + import { VariableModel } from "core/variable_model"; +} +declare module "core/events/events_var_create" { + /** + * Class for a variable creation event. + * @extends {VarBase} + * @alias Blockly.Events.VarCreate + */ + export class VarCreate extends VarBase { + varType: string | undefined; + varName: string | undefined; + } + import { VarBase } from "core/events/events_var_base"; +} +declare module "core/variable_model" { + /** + * Class for a variable model. + * Holds information for the variable including name, ID, and type. + * @see {Blockly.FieldVariable} + * @alias Blockly.VariableModel + */ + export class VariableModel { + /** + * A custom compare function for the VariableModel objects. + * @param {VariableModel} var1 First variable to compare. + * @param {VariableModel} var2 Second variable to compare. + * @return {number} -1 if name of var1 is less than name of var2, 0 if equal, + * and 1 if greater. + * @package + */ + static compareByName(var1: VariableModel, var2: VariableModel): number; + /** + * @param {!Workspace} workspace The variable's workspace. + * @param {string} name The name of the variable. This is the user-visible + * name (e.g. 'my var' or '私の変数'), not the generated name. + * @param {string=} opt_type The type of the variable like 'int' or 'string'. + * Does not need to be unique. Field_variable can filter variables based + * on their type. This will default to '' which is a specific type. + * @param {string=} opt_id The unique ID of the variable. This will default to + * a UUID. + */ + constructor(workspace: Workspace, name: string, opt_type?: string | undefined, opt_id?: string | undefined); + /** + * The workspace the variable is in. + * @type {!Workspace} + */ + workspace: Workspace; + /** + * The name of the variable, typically defined by the user. It may be + * changed by the user. + * @type {string} + */ + name: string; + /** + * The type of the variable, such as 'int' or 'sound_effect'. This may be + * used to build a list of variables of a specific type. By default this is + * the empty string '', which is a specific type. + * @see {Blockly.FieldVariable} + * @type {string} + */ + type: string; + /** + * A unique ID for the variable. This should be defined at creation and + * not change, even if the name changes. In most cases this should be a + * UUID. + * @type {string} + * @private + */ + private id_; + /** + * @return {string} The ID for the variable. + */ + getId(): string; + } + import { Workspace } from "core/workspace"; +} +declare module "core/variables" { + /** + * String for use in the "custom" attribute of a category in toolbox XML. + * This string indicates that the category should be dynamically populated with + * variable blocks. + * See also Blockly.Procedures.CATEGORY_NAME and + * Blockly.VariablesDynamic.CATEGORY_NAME. + * @const {string} + * @alias Blockly.Variables.CATEGORY_NAME + */ + export const CATEGORY_NAME: "VARIABLE"; + /** + * Find all user-created variables that are in use in the workspace. + * For use by generators. + * To get a list of all variables on a workspace, including unused variables, + * call Workspace.getAllVariables. + * @param {!Workspace} ws The workspace to search for variables. + * @return {!Array} Array of variable models. + * @alias Blockly.Variables.allUsedVarModels + */ + export function allUsedVarModels(ws: Workspace): Array; + /** + * Find all developer variables used by blocks in the workspace. + * Developer variables are never shown to the user, but are declared as global + * variables in the generated code. + * To declare developer variables, define the getDeveloperVariables function on + * your block and return a list of variable names. + * For use by generators. + * @param {!Workspace} workspace The workspace to search. + * @return {!Array} A list of non-duplicated variable names. + * @alias Blockly.Variables.allDeveloperVariables + */ + export function allDeveloperVariables(workspace: Workspace): Array; + /** + * Construct the elements (blocks and button) required by the flyout for the + * variable category. + * @param {!WorkspaceSvg} workspace The workspace containing variables. + * @return {!Array} Array of XML elements. + * @alias Blockly.Variables.flyoutCategory + */ + export function flyoutCategory(workspace: WorkspaceSvg): Array; + /** + * Construct the blocks required by the flyout for the variable category. + * @param {!Workspace} workspace The workspace containing variables. + * @return {!Array} Array of XML block elements. + * @alias Blockly.Variables.flyoutCategoryBlocks + */ + export function flyoutCategoryBlocks(workspace: Workspace): Array; + /** + * @alias Blockly.Variables.VAR_LETTER_OPTIONS + */ + export const VAR_LETTER_OPTIONS: "ijkmnopqrstuvwxyzabcdefgh"; + /** + * Return a new variable name that is not yet being used. This will try to + * generate single letter variable names in the range 'i' to 'z' to start with. + * If no unique name is located it will try 'i' to 'z', 'a' to 'h', + * then 'i2' to 'z2' etc. Skip 'l'. + * @param {!Workspace} workspace The workspace to be unique in. + * @return {string} New variable name. + * @alias Blockly.Variables.generateUniqueName + */ + export function generateUniqueName(workspace: Workspace): string; + /** + * Returns a unique name that is not present in the usedNames array. This + * will try to generate single letter names in the range a -> z (skip l). It + * will start with the character passed to startChar. + * @param {string} startChar The character to start the search at. + * @param {!Array} usedNames A list of all of the used names. + * @return {string} A unique name that is not present in the usedNames array. + * @alias Blockly.Variables.generateUniqueNameFromOptions + */ + export function generateUniqueNameFromOptions(startChar: string, usedNames: Array): string; + /** + * Handles "Create Variable" button in the default variables toolbox category. + * It will prompt the user for a variable name, including re-prompts if a name + * is already in use among the workspace's variables. + * + * Custom button handlers can delegate to this function, allowing variables + * types and after-creation processing. More complex customization (e.g., + * prompting for variable type) is beyond the scope of this function. + * + * @param {!Workspace} workspace The workspace on which to create the + * variable. + * @param {function(?string=)=} opt_callback A callback. It will be passed an + * acceptable new variable name, or null if change is to be aborted (cancel + * button), or undefined if an existing variable was chosen. + * @param {string=} opt_type The type of the variable like 'int', 'string', or + * ''. This will default to '', which is a specific type. + * @alias Blockly.Variables.createVariableButtonHandler + */ + export function createVariableButtonHandler(workspace: Workspace, opt_callback?: ((arg0: (string | null) | undefined) => any) | undefined, opt_type?: string | undefined): void; + /** + * Opens a prompt that allows the user to enter a new name for a variable. + * Triggers a rename if the new name is valid. Or re-prompts if there is a + * collision. + * @param {!Workspace} workspace The workspace on which to rename the + * variable. + * @param {!VariableModel} variable Variable to rename. + * @param {function(?string=)=} opt_callback A callback. It will + * be passed an acceptable new variable name, or null if change is to be + * aborted (cancel button), or undefined if an existing variable was chosen. + * @alias Blockly.Variables.renameVariable + */ + export function renameVariable(workspace: Workspace, variable: VariableModel, opt_callback?: ((arg0: (string | null) | undefined) => any) | undefined): void; + /** + * Prompt the user for a new variable name. + * @param {string} promptText The string of the prompt. + * @param {string} defaultText The default value to show in the prompt's field. + * @param {function(?string)} callback A callback. It will return the new + * variable name, or null if the user picked something illegal. + * @alias Blockly.Variables.promptName + */ + export function promptName(promptText: string, defaultText: string, callback: (arg0: string | null) => any): void; + /** + * Check whether there exists a variable with the given name of any type. + * @param {string} name The name to search for. + * @param {!Workspace} workspace The workspace to search for the + * variable. + * @return {?VariableModel} The variable with the given name, + * or null if none was found. + * @alias Blockly.Variables.nameUsedWithAnyType + */ + export function nameUsedWithAnyType(name: string, workspace: Workspace): VariableModel | null; + /** + * Generate DOM objects representing a variable field. + * @param {!VariableModel} variableModel The variable model to + * represent. + * @return {?Element} The generated DOM. + * @alias Blockly.Variables.generateVariableFieldDom + */ + export function generateVariableFieldDom(variableModel: VariableModel): Element | null; + /** + * Helper function to look up or create a variable on the given workspace. + * If no variable exists, creates and returns it. + * @param {!Workspace} workspace The workspace to search for the + * variable. It may be a flyout workspace or main workspace. + * @param {?string} id The ID to use to look up or create the variable, or null. + * @param {string=} opt_name The string to use to look up or create the + * variable. + * @param {string=} opt_type The type to use to look up or create the variable. + * @return {!VariableModel} The variable corresponding to the given ID + * or name + type combination. + * @alias Blockly.Variables.getOrCreateVariablePackage + */ + export function getOrCreateVariablePackage(workspace: Workspace, id: string | null, opt_name?: string | undefined, opt_type?: string | undefined): VariableModel; + /** + * Look up a variable on the given workspace. + * Always looks in the main workspace before looking in the flyout workspace. + * Always prefers lookup by ID to lookup by name + type. + * @param {!Workspace} workspace The workspace to search for the + * variable. It may be a flyout workspace or main workspace. + * @param {?string} id The ID to use to look up the variable, or null. + * @param {string=} opt_name The string to use to look up the variable. + * Only used if lookup by ID fails. + * @param {string=} opt_type The type to use to look up the variable. + * Only used if lookup by ID fails. + * @return {?VariableModel} The variable corresponding to the given ID + * or name + type combination, or null if not found. + * @alias Blockly.Variables.getVariable + */ + export function getVariable(workspace: Workspace, id: string | null, opt_name?: string | undefined, opt_type?: string | undefined): VariableModel | null; + /** + * Helper function to get the list of variables that have been added to the + * workspace after adding a new block, using the given list of variables that + * were in the workspace before the new block was added. + * @param {!Workspace} workspace The workspace to inspect. + * @param {!Array} originalVariables The array of + * variables that existed in the workspace before adding the new block. + * @return {!Array} The new array of variables that + * were freshly added to the workspace after creating the new block, + * or [] if no new variables were added to the workspace. + * @alias Blockly.Variables.getAddedVariables + * @package + */ + export function getAddedVariables(workspace: Workspace, originalVariables: Array): Array; + import { Workspace } from "core/workspace"; + import { VariableModel } from "core/variable_model"; + import { WorkspaceSvg } from "core/workspace_svg"; +} +declare module "core/events/events_ui_base" { + /** + * Base class for a UI event. + * UI events are events that don't need to be sent over the wire for multi-user + * editing to work (e.g. scrolling the workspace, zooming, opening toolbox + * categories). + * UI events do not undo or redo. + * @extends {AbstractEvent} + * @alias Blockly.Events.UiBase + */ + export class UiBase extends AbstractEvent { + /** + * @param {string=} opt_workspaceId The workspace identifier for this event. + * Undefined for a blank event. + */ + constructor(opt_workspaceId?: string | undefined); + } + import { Abstract as AbstractEvent } from "core/events/events_abstract"; +} +declare module "core/events/events_bubble_open" { + /** + * Class for a bubble open event. + * @extends {UiBase} + * @alias Blockly.Events.BubbleOpen + */ + export class BubbleOpen extends UiBase { + /** + * @param {BlockSvg} opt_block The associated block. Undefined for a + * blank event. + * @param {boolean=} opt_isOpen Whether the bubble is opening (false if + * closing). Undefined for a blank event. + * @param {string=} opt_bubbleType The type of bubble. One of 'mutator', + * 'comment' + * or 'warning'. Undefined for a blank event. + */ + constructor(opt_block: BlockSvg, opt_isOpen?: boolean | undefined, opt_bubbleType?: string | undefined); + blockId: string | null; + /** + * Whether the bubble is opening (false if closing). + * @type {boolean|undefined} + */ + isOpen: boolean | undefined; + /** + * The type of bubble. One of 'mutator', 'comment', or 'warning'. + * @type {string|undefined} + */ + bubbleType: string | undefined; + } + import { UiBase } from "core/events/events_ui_base"; + import { BlockSvg } from "core/block_svg"; +} +declare module "core/block_animations" { + /** + * Play some UI effects (sound, animation) when disposing of a block. + * @param {!BlockSvg} block The block being disposed of. + * @alias Blockly.blockAnimations.disposeUiEffect + * @package + */ + export function disposeUiEffect(block: BlockSvg): void; + /** + * Play some UI effects (sound, ripple) after a connection has been established. + * @param {!BlockSvg} block The block being connected. + * @alias Blockly.blockAnimations.connectionUiEffect + * @package + */ + export function connectionUiEffect(block: BlockSvg): void; + /** + * Play some UI effects (sound, animation) when disconnecting a block. + * @param {!BlockSvg} block The block being disconnected. + * @alias Blockly.blockAnimations.disconnectUiEffect + * @package + */ + export function disconnectUiEffect(block: BlockSvg): void; + /** + * Stop the disconnect UI animation immediately. + * @alias Blockly.blockAnimations.disconnectUiStop + * @package + */ + export function disconnectUiStop(): void; + import { BlockSvg } from "core/block_svg"; +} +declare module "core/connection_type" { + /** + * * + */ + export type ConnectionType = number; + export namespace ConnectionType { + const INPUT_VALUE: number; + const OUTPUT_VALUE: number; + const NEXT_STATEMENT: number; + const PREVIOUS_STATEMENT: number; + } +} +declare module "core/internal_constants" { + /** + * Number of characters to truncate a collapsed block to. + * @alias Blockly.internalConstants.COLLAPSE_CHARS + */ + export const COLLAPSE_CHARS: 30; + /** + * When dragging a block out of a stack, split the stack in two (true), or drag + * out the block healing the stack (false). + * @alias Blockly.internalConstants.DRAG_STACK + */ + export const DRAG_STACK: true; + /** + * Lookup table for determining the opposite type of a connection. + * @const + * @alias Blockly.internalConstants.OPPOSITE_TYPE + */ + export const OPPOSITE_TYPE: any[]; + /** + * String for use in the dropdown created in field_variable. + * This string indicates that this option in the dropdown is 'Rename + * variable...' and if selected, should trigger the prompt to rename a variable. + * @const {string} + * @alias Blockly.internalConstants.RENAME_VARIABLE_ID + */ + export const RENAME_VARIABLE_ID: "RENAME_VARIABLE_ID"; + /** + * String for use in the dropdown created in field_variable. + * This string indicates that this option in the dropdown is 'Delete the "%1" + * variable' and if selected, should trigger the prompt to delete a variable. + * @const {string} + * @alias Blockly.internalConstants.DELETE_VARIABLE_ID + */ + export const DELETE_VARIABLE_ID: "DELETE_VARIABLE_ID"; +} +declare module "core/utils/deprecation" { + /** + * Warn developers that a function or property is deprecated. + * @param {string} name The name of the function or property. + * @param {string} deprecationDate The date of deprecation. + * Prefer 'month yyyy' or 'quarter yyyy' format. + * @param {string} deletionDate The date of deletion, in the same format as the + * deprecation date. + * @param {string=} opt_use The name of a function or property to use instead, + * if any. + * @alias Blockly.utils.deprecation.warn + * @package + */ + export function warn(name: string, deprecationDate: string, deletionDate: string, opt_use?: string | undefined): void; +} +declare module "core/utils/coordinate" { + /** + * Class for representing coordinates and positions. + * @alias Blockly.utils.Coordinate + */ + export const Coordinate: { + new (x: number, y: number): { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + }; + /** + * Compares coordinates for equality. + * @param {?Coordinate} a A Coordinate. + * @param {?Coordinate} b A Coordinate. + * @return {boolean} True iff the coordinates are equal, or if both are null. + */ + equals(a: { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + } | null, b: { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + } | null): boolean; + /** + * Returns the distance between two coordinates. + * @param {!Coordinate} a A Coordinate. + * @param {!Coordinate} b A Coordinate. + * @return {number} The distance between `a` and `b`. + */ + distance(a: { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + }, b: { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + }): number; + /** + * Returns the magnitude of a coordinate. + * @param {!Coordinate} a A Coordinate. + * @return {number} The distance between the origin and `a`. + */ + magnitude(a: { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + }): number; + /** + * Returns the difference between two coordinates as a new + * Coordinate. + * @param {!Coordinate|!SVGPoint} a An x/y coordinate. + * @param {!Coordinate|!SVGPoint} b An x/y coordinate. + * @return {!Coordinate} A Coordinate representing the difference + * between `a` and `b`. + */ + difference(a: { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + } | SVGPoint, b: { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + } | SVGPoint): { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + }; + /** + * Returns the sum of two coordinates as a new Coordinate. + * @param {!Coordinate|!SVGPoint} a An x/y coordinate. + * @param {!Coordinate|!SVGPoint} b An x/y coordinate. + * @return {!Coordinate} A Coordinate representing the sum of + * the two coordinates. + */ + sum(a: { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + } | SVGPoint, b: { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + } | SVGPoint): { + /** + * X-value + * @type {number} + */ + x: number; + /** + * Y-value + * @type {number} + */ + y: number; + /** + * Creates a new copy of this coordinate. + * @return {!Coordinate} A copy of this coordinate. + */ + clone(): any; + /** + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Coordinate} This coordinate after scaling. + */ + scale(s: number): any; + /** + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Coordinate} This coordinate after translating. + */ + translate(tx: number, ty: number): any; + }; + }; +} +declare module "core/utils/style" { + /** + * Gets the height and width of an element. + * Similar to Closure's goog.style.getSize + * @param {!Element} element Element to get size of. + * @return {!Size} Object with width/height properties. + * @alias Blockly.utils.style.getSize + */ + export function getSize(element: Element): { + width: number; + height: number; + }; + /** + * Retrieves a computed style value of a node. It returns empty string if the + * value cannot be computed (which will be the case in Internet Explorer) or + * "none" if the property requested is an SVG one and it has not been + * explicitly set (firefox and webkit). + * + * Copied from Closure's goog.style.getComputedStyle + * + * @param {!Element} element Element to get style of. + * @param {string} property Property to get (camel-case). + * @return {string} Style value. + * @alias Blockly.utils.style.getComputedStyle + */ + export function getComputedStyle(element: Element, property: string): string; + /** + * Gets the cascaded style value of a node, or null if the value cannot be + * computed (only Internet Explorer can do this). + * + * Copied from Closure's goog.style.getCascadedStyle + * + * @param {!Element} element Element to get style of. + * @param {string} style Property to get (camel-case). + * @return {string} Style value. + * @alias Blockly.utils.style.getCascadedStyle + */ + export function getCascadedStyle(element: Element, style: string): string; + /** + * Returns a Coordinate object relative to the top-left of the HTML document. + * Similar to Closure's goog.style.getPageOffset + * @param {!Element} el Element to get the page offset for. + * @return {!Coordinate} The page offset. + * @alias Blockly.utils.style.getPageOffset + */ + export function getPageOffset(el: Element): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Calculates the viewport coordinates relative to the document. + * Similar to Closure's goog.style.getViewportPageOffset + * @return {!Coordinate} The page offset of the viewport. + * @alias Blockly.utils.style.getViewportPageOffset + */ + export function getViewportPageOffset(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Shows or hides an element from the page. Hiding the element is done by + * setting the display property to "none", removing the element from the + * rendering hierarchy so it takes up no space. To show the element, the default + * inherited display property is restored (defined either in stylesheets or by + * the browser's default style rules). + * Copied from Closure's goog.style.getViewportPageOffset + * + * @param {!Element} el Element to show or hide. + * @param {*} isShown True to render the element in its default style, + * false to disable rendering the element. + * @alias Blockly.utils.style.setElementShown + */ + export function setElementShown(el: Element, isShown: any): void; + /** + * Returns true if the element is using right to left (RTL) direction. + * Copied from Closure's goog.style.isRightToLeft + * + * @param {!Element} el The element to test. + * @return {boolean} True for right to left, false for left to right. + * @alias Blockly.utils.style.isRightToLeft + */ + export function isRightToLeft(el: Element): boolean; + /** + * Gets the computed border widths (on all sides) in pixels + * Copied from Closure's goog.style.getBorderBox + * @param {!Element} element The element to get the border widths for. + * @return {!Object} The computed border widths. + * @alias Blockly.utils.style.getBorderBox + */ + export function getBorderBox(element: Element): Object; + /** + * Changes the scroll position of `container` with the minimum amount so + * that the content and the borders of the given `element` become visible. + * If the element is bigger than the container, its top left corner will be + * aligned as close to the container's top left corner as possible. + * Copied from Closure's goog.style.scrollIntoContainerView + * + * @param {!Element} element The element to make visible. + * @param {!Element} container The container to scroll. If not set, then the + * document scroll element will be used. + * @param {boolean=} opt_center Whether to center the element in the container. + * Defaults to false. + * @alias Blockly.utils.style.scrollIntoContainerView + */ + export function scrollIntoContainerView(element: Element, container: Element, opt_center?: boolean | undefined): void; + /** + * Calculate the scroll position of `container` with the minimum amount so + * that the content and the borders of the given `element` become visible. + * If the element is bigger than the container, its top left corner will be + * aligned as close to the container's top left corner as possible. + * Copied from Closure's goog.style.getContainerOffsetToScrollInto + * + * @param {!Element} element The element to make visible. + * @param {!Element} container The container to scroll. If not set, then the + * document scroll element will be used. + * @param {boolean=} opt_center Whether to center the element in the container. + * Defaults to false. + * @return {!Coordinate} The new scroll position of the container, + * in form of goog.math.Coordinate(scrollLeft, scrollTop). + * @alias Blockly.utils.style.getContainerOffsetToScrollInto + */ + export function getContainerOffsetToScrollInto(element: Element, container: Element, opt_center?: boolean | undefined): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; +} +declare module "core/utils/svg_math" { + export namespace TEST_ONLY { + export { XY_REGEX }; + export { XY_STYLE_REGEX }; + } + /** + * Return the coordinates of the top-left corner of this element relative to + * its parent. Only for SVG elements and children (e.g. rect, g, path). + * @param {!Element} element SVG element to find the coordinates of. + * @return {!Coordinate} Object with .x and .y properties. + * @alias Blockly.utils.svgMath.getRelativeXY + */ + export function getRelativeXY(element: Element): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Return the coordinates of the top-left corner of this element relative to + * the div Blockly was injected into. + * @param {!Element} element SVG element to find the coordinates of. If this is + * not a child of the div Blockly was injected into, the behaviour is + * undefined. + * @return {!Coordinate} Object with .x and .y properties. + * @alias Blockly.utils.svgMath.getInjectionDivXY + */ + export function getInjectionDivXY(element: Element): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Check if 3D transforms are supported by adding an element + * and attempting to set the property. + * @return {boolean} True if 3D transforms are supported. + * @alias Blockly.utils.svgMath.is3dSupported + */ + export function is3dSupported(): boolean; + /** + * Get the position of the current viewport in window coordinates. This takes + * scroll into account. + * @return {!Rect} An object containing window width, height, and + * scroll position in window coordinates. + * @alias Blockly.utils.svgMath.getViewportBBox + * @package + */ + export function getViewportBBox(): { + top: number; + bottom: number; + left: number; + right: number; + contains(x: number, y: number): boolean; + intersects(other: any): boolean; + }; + /** + * Gets the document scroll distance as a coordinate object. + * Copied from Closure's goog.dom.getDocumentScroll. + * @return {!Coordinate} Object with values 'x' and 'y'. + * @alias Blockly.utils.svgMath.getDocumentScroll + */ + export function getDocumentScroll(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Converts screen coordinates to workspace coordinates. + * @param {!WorkspaceSvg} ws The workspace to find the coordinates on. + * @param {!Coordinate} screenCoordinates The screen coordinates to + * be converted to workspace coordinates + * @return {!Coordinate} The workspace coordinates. + * @alias Blockly.utils.svgMath.screenToWsCoordinates + */ + export function screenToWsCoordinates(ws: WorkspaceSvg, screenCoordinates: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Returns the dimensions of the specified SVG image. + * @param {!SVGElement} svg SVG image. + * @return {!Size} Contains width and height properties. + * @deprecated Use workspace.getCachedParentSvgSize. (2021 March 5) + * @alias Blockly.utils.svgMath.svgSize + */ + export function svgSize(svg: SVGElement): { + width: number; + height: number; + }; + /** + * Static regex to pull the x,y values out of an SVG translate() directive. + * Note that Firefox and IE (9,10) return 'translate(12)' instead of + * 'translate(12, 0)'. + * Note that IE (9,10) returns 'translate(16 8)' instead of 'translate(16, 8)'. + * Note that IE has been reported to return scientific notation (0.123456e-42). + * @type {!RegExp} + */ + const XY_REGEX: RegExp; + /** + * Static regex to pull the x,y values out of a translate() or translate3d() + * style property. + * Accounts for same exceptions as XY_REGEX. + * @type {!RegExp} + */ + const XY_STYLE_REGEX: RegExp; + import { WorkspaceSvg } from "core/workspace_svg"; + export {}; +} +declare module "core/block_drag_surface" { + /** + * Class for a drag surface for the currently dragged block. This is a separate + * SVG that contains only the currently moving block, or nothing. + * @alias Blockly.BlockDragSurfaceSvg + */ + export const BlockDragSurfaceSvg: { + new (container: Element): { + /** + * The SVG drag surface. Set once by BlockDragSurfaceSvg.createDom. + * @type {?SVGElement} + * @private + */ + SVG_: SVGElement | null; + /** + * This is where blocks live while they are being dragged if the drag + * surface is enabled. + * @type {?SVGElement} + * @private + */ + dragGroup_: SVGElement | null; + /** + * Containing HTML element; parent of the workspace and the drag surface. + * @type {!Element} + * @private + */ + container_: Element; + /** + * Cached value for the scale of the drag surface. + * Used to set/get the correct translation during and after a drag. + * @type {number} + * @private + */ + scale_: number; + /** + * Cached value for the translation of the drag surface. + * This translation is in pixel units, because the scale is applied to the + * drag group rather than the top-level SVG. + * @type {?Coordinate} + * @private + */ + surfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + } | null; + /** + * Cached value for the translation of the child drag surface in pixel + * units. Since the child drag surface tracks the translation of the + * workspace this is ultimately the translation of the workspace. + * @type {!Coordinate} + * @private + */ + childSurfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Create the drag surface and inject it into the container. + */ + createDom(): void; + /** + * Set the SVG blocks on the drag surface's group and show the surface. + * Only one block group should be on the drag surface at a time. + * @param {!SVGElement} blocks Block or group of blocks to place on the drag + * surface. + */ + setBlocksAndShow(blocks: SVGElement): void; + /** + * Translate and scale the entire drag surface group to the given position, to + * keep in sync with the workspace. + * @param {number} x X translation in pixel coordinates. + * @param {number} y Y translation in pixel coordinates. + * @param {number} scale Scale of the group. + */ + translateAndScaleGroup(x: number, y: number, scale: number): void; + /** + * Translate the drag surface's SVG based on its internal state. + * @private + */ + translateSurfaceInternal_(): void; + /** + * Translates the entire surface by a relative offset. + * @param {number} deltaX Horizontal offset in pixel units. + * @param {number} deltaY Vertical offset in pixel units. + */ + translateBy(deltaX: number, deltaY: number): void; + /** + * Translate the entire drag surface during a drag. + * We translate the drag surface instead of the blocks inside the surface + * so that the browser avoids repainting the SVG. + * Because of this, the drag coordinates must be adjusted by scale. + * @param {number} x X translation for the entire surface. + * @param {number} y Y translation for the entire surface. + */ + translateSurface(x: number, y: number): void; + /** + * Reports the surface translation in scaled workspace coordinates. + * Use this when finishing a drag to return blocks to the correct position. + * @return {!Coordinate} Current translation of the surface. + */ + getSurfaceTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Provide a reference to the drag group (primarily for + * BlockSvg.getRelativeToSurfaceXY). + * @return {?SVGElement} Drag surface group element. + */ + getGroup(): SVGElement | null; + /** + * Returns the SVG drag surface. + * @returns {?SVGElement} The SVG drag surface. + */ + getSvgRoot(): SVGElement | null; + /** + * Get the current blocks on the drag surface, if any (primarily + * for BlockSvg.getRelativeToSurfaceXY). + * @return {?Element} Drag surface block DOM element, or null if no blocks + * exist. + */ + getCurrentBlock(): Element | null; + /** + * Gets the translation of the child block surface + * This surface is in charge of keeping track of how much the workspace has + * moved. + * @return {!Coordinate} The amount the workspace has been moved. + */ + getWsTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Clear the group and hide the surface; move the blocks off onto the provided + * element. + * If the block is being deleted it doesn't need to go back to the original + * surface, since it would be removed immediately during dispose. + * @param {Element=} opt_newSurface Surface the dragging blocks should be + * moved to, or null if the blocks should be removed from this surface + * without being moved to a different surface. + */ + clearAndHide(opt_newSurface?: Element | undefined): void; + }; + }; +} +declare module "core/events/events_comment_change" { + /** + * Class for a comment change event. + * @extends {CommentBase} + * @alias Blockly.Events.CommentChange + */ + export class CommentChange extends CommentBase { + /** + * @param {!WorkspaceComment=} opt_comment The comment that is being + * changed. Undefined for a blank event. + * @param {string=} opt_oldContents Previous contents of the comment. + * @param {string=} opt_newContents New contents of the comment. + */ + constructor(opt_comment?: WorkspaceComment | undefined, opt_oldContents?: string | undefined, opt_newContents?: string | undefined); + oldContents_: string | undefined; + newContents_: string | undefined; + } + import { CommentBase } from "core/events/events_comment_base"; + import { WorkspaceComment } from "core/workspace_comment"; +} +declare module "core/events/events_comment_delete" { + /** + * Class for a comment deletion event. + * @extends {CommentBase} + * @alias Blockly.Events.CommentDelete + */ + export class CommentDelete extends CommentBase { + xml: Element | undefined; + } + import { CommentBase } from "core/events/events_comment_base"; +} +declare module "core/workspace_comment" { + /** + * Class for a workspace comment. + * @alias Blockly.WorkspaceComment + */ + export class WorkspaceComment { + /** + * Fire a create event for the given workspace comment, if comments are + * enabled. + * @param {!WorkspaceComment} comment The comment that was just created. + * @package + */ + static fireCreateEvent(comment: WorkspaceComment): void; + /** + * Decode an XML comment tag and create a comment on the workspace. + * @param {!Element} xmlComment XML comment element. + * @param {!Workspace} workspace The workspace. + * @return {!WorkspaceComment} The created workspace comment. + * @package + */ + static fromXml(xmlComment: Element, workspace: Workspace): WorkspaceComment; + /** + * Decode an XML comment tag and return the results in an object. + * @param {!Element} xml XML comment element. + * @return {{w: number, h: number, x: number, y: number, content: string}} An + * object containing the id, size, position, and comment string. + * @package + */ + static parseAttributes(xml: Element): { + w: number; + h: number; + x: number; + y: number; + content: string; + }; + /** + * @param {!Workspace} workspace The block's workspace. + * @param {string} content The content of this workspace comment. + * @param {number} height Height of the comment. + * @param {number} width Width of the comment. + * @param {string=} opt_id Optional ID. Use this ID if provided, otherwise + * create a new ID. + */ + constructor(workspace: Workspace, content: string, height: number, width: number, opt_id?: string | undefined); + /** @type {string} */ + id: string; + /** + * The comment's position in workspace units. (0, 0) is at the workspace's + * origin; scale does not change this value. + * @type {!Coordinate} + * @protected + */ + protected xy_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * The comment's height in workspace units. Scale does not change this + * value. + * @type {number} + * @protected + */ + protected height_: number; + /** + * The comment's width in workspace units. Scale does not change this + * value. + * @type {number} + * @protected + */ + protected width_: number; + /** + * @type {!Workspace} + */ + workspace: Workspace; + /** + * @protected + * @type {boolean} + */ + protected RTL: boolean; + /** + * @type {boolean} + * @private + */ + private deletable_; + /** + * @type {boolean} + * @private + */ + private movable_; + /** + * @type {boolean} + * @private + */ + private editable_; + /** + * @protected + * @type {string} + */ + protected content_: string; + /** + * Whether this comment has been disposed. + * @protected + * @type {boolean} + */ + protected disposed_: boolean; + /** + * @package + * @type {boolean} + */ + isComment: boolean; + /** + * Dispose of this comment. + * @package + */ + dispose(): void; + /** + * Get comment height. + * @return {number} Comment height. + * @package + */ + getHeight(): number; + /** + * Set comment height. + * @param {number} height Comment height. + * @package + */ + setHeight(height: number): void; + /** + * Get comment width. + * @return {number} Comment width. + * @package + */ + getWidth(): number; + /** + * Set comment width. + * @param {number} width comment width. + * @package + */ + setWidth(width: number): void; + /** + * Get stored location. + * @return {!Coordinate} The comment's stored location. + * This is not valid if the comment is currently being dragged. + * @package + */ + getXY(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Move a comment by a relative offset. + * @param {number} dx Horizontal offset, in workspace units. + * @param {number} dy Vertical offset, in workspace units. + * @package + */ + moveBy(dx: number, dy: number): void; + /** + * Get whether this comment is deletable or not. + * @return {boolean} True if deletable. + * @package + */ + isDeletable(): boolean; + /** + * Set whether this comment is deletable or not. + * @param {boolean} deletable True if deletable. + * @package + */ + setDeletable(deletable: boolean): void; + /** + * Get whether this comment is movable or not. + * @return {boolean} True if movable. + * @package + */ + isMovable(): boolean; + /** + * Set whether this comment is movable or not. + * @param {boolean} movable True if movable. + * @package + */ + setMovable(movable: boolean): void; + /** + * Get whether this comment is editable or not. + * @return {boolean} True if editable. + */ + isEditable(): boolean; + /** + * Set whether this comment is editable or not. + * @param {boolean} editable True if editable. + */ + setEditable(editable: boolean): void; + /** + * Returns this comment's text. + * @return {string} Comment text. + * @package + */ + getContent(): string; + /** + * Set this comment's content. + * @param {string} content Comment content. + * @package + */ + setContent(content: string): void; + /** + * Encode a comment subtree as XML with XY coordinates. + * @param {boolean=} opt_noId True if the encoder should skip the comment ID. + * @return {!Element} Tree of XML elements. + * @package + */ + toXmlWithXY(opt_noId?: boolean | undefined): Element; + /** + * Encode a comment subtree as XML, but don't serialize the XY coordinates. + * This method avoids some expensive metrics-related calls that are made in + * toXmlWithXY(). + * @param {boolean=} opt_noId True if the encoder should skip the comment ID. + * @return {!Element} Tree of XML elements. + * @package + */ + toXml(opt_noId?: boolean | undefined): Element; + } + import { Workspace } from "core/workspace"; +} +declare module "core/events/events_comment_create" { + /** + * Class for a comment creation event. + * @extends {CommentBase} + * @alias Blockly.Events.CommentCreate + */ + export class CommentCreate extends CommentBase { + xml: Element | undefined; + } + import { CommentBase } from "core/events/events_comment_base"; +} +declare module "core/events/events_comment_base" { + /** + * Abstract class for a comment event. + * @extends {AbstractEvent} + * @alias Blockly.Events.CommentBase + */ + export class CommentBase extends AbstractEvent { + /** + * Helper function for Comment[Create|Delete] + * @param {!CommentCreate|!CommentDelete} event + * The event to run. + * @param {boolean} create if True then Create, if False then Delete + */ + static CommentCreateDeleteHelper(event: CommentCreate | CommentDelete, create: boolean): void; + /** + * @param {!WorkspaceComment=} opt_comment The comment this event + * corresponds to. Undefined for a blank event. + */ + constructor(opt_comment?: WorkspaceComment | undefined); + /** + * The ID of the comment this event pertains to. + * @type {string} + */ + commentId: string; + } + import { Abstract as AbstractEvent } from "core/events/events_abstract"; + import { CommentCreate } from "core/events/events_comment_create"; + import { CommentDelete } from "core/events/events_comment_delete"; + import { WorkspaceComment } from "core/workspace_comment"; +} +declare module "core/events/events_comment_move" { + /** + * Class for a comment move event. Created before the move. + * @extends {CommentBase} + * @alias Blockly.Events.CommentMove + */ + export class CommentMove extends CommentBase { + /** + * The comment that is being moved. Will be cleared after recording the new + * location. + * @type {WorkspaceComment} + */ + comment_: WorkspaceComment; + /** + * The location before the move, in workspace coordinates. + * @type {!Coordinate} + */ + oldCoordinate_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * The location after the move, in workspace coordinates. + * @type {Coordinate} + */ + newCoordinate_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Record the comment's new location. Called after the move. Can only be + * called once. + */ + recordNew(): void; + /** + * Override the location before the move. Use this if you don't create the + * event until the end of the move, but you know the original location. + * @param {!Coordinate} xy The location before the move, + * in workspace coordinates. + */ + setOldCoordinate(xy: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + } + import { CommentBase } from "core/events/events_comment_base"; + import { WorkspaceComment } from "core/workspace_comment"; +} +declare module "core/interfaces/i_component" { + /** + * The interface for a workspace component that can be registered with the + * ComponentManager. + * @interface + * @alias Blockly.IComponent + */ + export function IComponent(): void; + export namespace IComponent { + const id: string; + } +} +declare module "core/interfaces/i_autohideable" { + /** + * Interface for a component that can be automatically hidden. + * @extends {IComponent} + * @interface + * @alias Blockly.IAutoHideable + */ + export class IAutoHideable {} +} +declare module "core/interfaces/i_deletable" { + /** + * The interface for an object that can be deleted. + * @interface + * @alias Blockly.IDeletable + */ + export class IDeletable {} +} +declare module "core/interfaces/i_draggable" { + /** + * The interface for an object that can be dragged. + * @extends {IDeletable} + * @interface + * @alias Blockly.IDraggable + */ + export class IDraggable {} +} +declare module "core/interfaces/i_drag_target" { + /** + * Interface for a component with custom behaviour when a block or bubble is + * dragged over or dropped on top of it. + * @extends {IComponent} + * @interface + * @alias Blockly.IDragTarget + */ + export class IDragTarget {} +} +declare module "core/interfaces/i_delete_area" { + /** + * Interface for a component that can delete a block or bubble that is dropped + * on top of it. + * @extends {IDragTarget} + * @interface + * @alias Blockly.IDeleteArea + */ + export class IDeleteArea {} +} +declare module "core/interfaces/i_registrable" { + /** + * The interface for a Blockly component that can be registered. + * @interface + * @alias Blockly.IRegistrable + */ + export class IRegistrable {} +} +declare module "core/interfaces/i_flyout" { + export class IFlyout { + /** + * Whether the flyout is laid out horizontally or not. + * @type {boolean} + */ + horizontalLayout: boolean; + /** + * Is RTL vs LTR. + * @type {boolean} + */ + RTL: boolean; + /** + * The target workspace + * @type {?WorkspaceSvg} + */ + targetWorkspace: WorkspaceSvg | null; + /** + * Margin around the edges of the blocks in the flyout. + * @type {number} + * @const + */ + MARGIN: number; + /** + * Does the flyout automatically close when a block is created? + * @type {boolean} + */ + autoClose: boolean; + /** + * Corner radius of the flyout background. + * @type {number} + * @const + */ + CORNER_RADIUS: number; + } + import { WorkspaceSvg } from "core/workspace_svg"; +} +declare module "core/utils/metrics" { + /** + * @record + * @alias Blockly.utils.Metrics + */ + export class Metrics { + /** + * Height of the visible portion of the workspace. + * @type {number} + */ + viewHeight: number; + /** + * Width of the visible portion of the workspace. + * @type {number} + */ + viewWidth: number; + /** + * Height of the content. + * @type {number} + */ + contentHeight: number; + /** + * Width of the content. + * @type {number} + */ + contentWidth: number; + /** + * Height of the scroll area. + * @type {number} + */ + scrollHeight: number; + /** + * Width of the scroll area. + * @type {number} + */ + scrollWidth: number; + /** + * Top-edge of the visible portion of the workspace, relative to the workspace + * origin. + * @type {number} + */ + viewTop: number; + /** + * Left-edge of the visible portion of the workspace, relative to the workspace + * origin. + * @type {number} + */ + viewLeft: number; + /** + * Top-edge of the content, relative to the workspace origin. + * @type {number} + */ + contentTop: number; + /** + * Left-edge of the content relative to the workspace origin. + * @type {number} + */ + contentLeft: number; + /** + * Top-edge of the scroll area, relative to the workspace origin. + * @type {number} + */ + scrollTop: number; + /** + * Left-edge of the scroll area relative to the workspace origin. + * @type {number} + */ + scrollLeft: number; + /** + * Top-edge of the visible portion of the workspace, relative to the blocklyDiv. + * @type {number} + */ + absoluteTop: number; + /** + * Left-edge of the visible portion of the workspace, relative to the + * blocklyDiv. + * @type {number} + */ + absoluteLeft: number; + /** + * Height of the Blockly div (the view + the toolbox, simple of otherwise). + * @type {number} + */ + svgHeight: number; + /** + * Width of the Blockly div (the view + the toolbox, simple or otherwise). + * @type {number} + */ + svgWidth: number; + /** + * Width of the toolbox, if it exists. Otherwise zero. + * @type {number} + */ + toolboxWidth: number; + /** + * Height of the toolbox, if it exists. Otherwise zero. + * @type {number} + */ + toolboxHeight: number; + /** + * Top, bottom, left or right. Use TOOLBOX_AT constants to compare. + * @type {number} + */ + toolboxPosition: number; + /** + * Width of the flyout if it is always open. Otherwise zero. + * @type {number} + */ + flyoutWidth: number; + /** + * Height of the flyout if it is always open. Otherwise zero. + * @type {number} + */ + flyoutHeight: number; + } +} +declare module "core/interfaces/i_metrics_manager" { + /** + * Interface for a metrics manager. + * @interface + * @alias Blockly.IMetricsManager + */ + export class IMetricsManager {} +} +declare module "core/interfaces/i_toolbox_item" { + /** + * Interface for an item in the toolbox. + * @interface + * @alias Blockly.IToolboxItem + */ + export class IToolboxItem {} +} +declare module "core/interfaces/i_toolbox" { + /** + * Interface for a toolbox. + * @extends {IRegistrable} + * @interface + * @alias Blockly.IToolbox + */ + export class IToolbox {} +} +declare module "core/metrics_manager" { + /** + * The manager for all workspace metrics calculations. + * @implements {IMetricsManager} + * @alias Blockly.MetricsManager + */ + export class MetricsManager implements IMetricsManager { + /** + * @param {!WorkspaceSvg} workspace The workspace to calculate metrics + * for. + */ + constructor(workspace: WorkspaceSvg); + /** + * The workspace to calculate metrics for. + * @type {!WorkspaceSvg} + * @protected + */ + protected workspace_: WorkspaceSvg; + /** + * Gets the dimensions of the given workspace component, in pixel coordinates. + * @param {?IToolbox|?IFlyout} elem The element to get the + * dimensions of, or null. It should be a toolbox or flyout, and should + * implement getWidth() and getHeight(). + * @return {!Size} An object containing width and height + * attributes, which will both be zero if elem did not exist. + * @protected + */ + protected getDimensionsPx_(elem: ((() => void) | (IFlyout | null)) | null): { + width: number; + height: number; + }; + /** + * Gets the width and the height of the flyout on the workspace in pixel + * coordinates. Returns 0 for the width and height if the workspace has a + * category toolbox instead of a simple toolbox. + * @param {boolean=} opt_own Whether to only return the workspace's own + * flyout. + * @return {!MetricsManager.ToolboxMetrics} The width and height of the + * flyout. + * @public + */ + public getFlyoutMetrics(opt_own?: boolean | undefined): MetricsManager.ToolboxMetrics; + /** + * Gets the width, height and position of the toolbox on the workspace in + * pixel coordinates. Returns 0 for the width and height if the workspace has + * a simple toolbox instead of a category toolbox. To get the width and height + * of a + * simple toolbox @see {@link getFlyoutMetrics}. + * @return {!MetricsManager.ToolboxMetrics} The object with the width, + * height and position of the toolbox. + * @public + */ + public getToolboxMetrics(): MetricsManager.ToolboxMetrics; + /** + * Gets the width and height of the workspace's parent SVG element in pixel + * coordinates. This area includes the toolbox and the visible workspace area. + * @return {!Size} The width and height of the workspace's parent + * SVG element. + * @public + */ + public getSvgMetrics(): { + width: number; + height: number; + }; + /** + * Gets the absolute left and absolute top in pixel coordinates. + * This is where the visible workspace starts in relation to the SVG + * container. + * @return {!MetricsManager.AbsoluteMetrics} The absolute metrics for + * the workspace. + * @public + */ + public getAbsoluteMetrics(): MetricsManager.AbsoluteMetrics; + /** + * Gets the metrics for the visible workspace in either pixel or workspace + * coordinates. The visible workspace does not include the toolbox or flyout. + * @param {boolean=} opt_getWorkspaceCoordinates True to get the view metrics + * in workspace coordinates, false to get them in pixel coordinates. + * @return {!MetricsManager.ContainerRegion} The width, height, top and + * left of the viewport in either workspace coordinates or pixel + * coordinates. + * @public + */ + public getViewMetrics(opt_getWorkspaceCoordinates?: boolean | undefined): MetricsManager.ContainerRegion; + /** + * Gets content metrics in either pixel or workspace coordinates. + * The content area is a rectangle around all the top bounded elements on the + * workspace (workspace comments and blocks). + * @param {boolean=} opt_getWorkspaceCoordinates True to get the content + * metrics in workspace coordinates, false to get them in pixel + * coordinates. + * @return {!MetricsManager.ContainerRegion} The + * metrics for the content container. + * @public + */ + public getContentMetrics(opt_getWorkspaceCoordinates?: boolean | undefined): MetricsManager.ContainerRegion; + /** + * Returns whether the scroll area has fixed edges. + * @return {boolean} Whether the scroll area has fixed edges. + * @package + */ + hasFixedEdges(): boolean; + /** + * Computes the fixed edges of the scroll area. + * @param {!MetricsManager.ContainerRegion=} opt_viewMetrics The view + * metrics if they have been previously computed. Passing in null may + * cause the view metrics to be computed again, if it is needed. + * @return {!MetricsManager.FixedEdges} The fixed edges of the scroll + * area. + * @protected + */ + protected getComputedFixedEdges_(opt_viewMetrics?: MetricsManager.ContainerRegion | undefined): MetricsManager.FixedEdges; + /** + * Returns the content area with added padding. + * @param {!MetricsManager.ContainerRegion} viewMetrics The view + * metrics. + * @param {!MetricsManager.ContainerRegion} contentMetrics The content + * metrics. + * @return {{top: number, bottom: number, left: number, right: number}} The + * padded content area. + * @protected + */ + protected getPaddedContent_(viewMetrics: MetricsManager.ContainerRegion, contentMetrics: MetricsManager.ContainerRegion): { + top: number; + bottom: number; + left: number; + right: number; + }; + /** + * Returns the metrics for the scroll area of the workspace. + * @param {boolean=} opt_getWorkspaceCoordinates True to get the scroll + * metrics in workspace coordinates, false to get them in pixel + * coordinates. + * @param {!MetricsManager.ContainerRegion=} opt_viewMetrics The view + * metrics if they have been previously computed. Passing in null may + * cause the view metrics to be computed again, if it is needed. + * @param {!MetricsManager.ContainerRegion=} opt_contentMetrics The + * content metrics if they have been previously computed. Passing in null + * may cause the content metrics to be computed again, if it is needed. + * @return {!MetricsManager.ContainerRegion} The metrics for the scroll + * container. + */ + getScrollMetrics(opt_getWorkspaceCoordinates?: boolean | undefined, opt_viewMetrics?: MetricsManager.ContainerRegion | undefined, opt_contentMetrics?: MetricsManager.ContainerRegion | undefined): MetricsManager.ContainerRegion; + /** + * Returns common metrics used by UI elements. + * @return {!MetricsManager.UiMetrics} The UI metrics. + */ + getUiMetrics(): MetricsManager.UiMetrics; + /** + * Returns an object with all the metrics required to size scrollbars for a + * top level workspace. The following properties are computed: + * Coordinate system: pixel coordinates, -left, -up, +right, +down + * .viewHeight: Height of the visible portion of the workspace. + * .viewWidth: Width of the visible portion of the workspace. + * .contentHeight: Height of the content. + * .contentWidth: Width of the content. + * .scrollHeight: Height of the scroll area. + * .scrollWidth: Width of the scroll area. + * .svgHeight: Height of the Blockly div (the view + the toolbox, + * simple or otherwise), + * .svgWidth: Width of the Blockly div (the view + the toolbox, + * simple or otherwise), + * .viewTop: Top-edge of the visible portion of the workspace, relative to + * the workspace origin. + * .viewLeft: Left-edge of the visible portion of the workspace, relative to + * the workspace origin. + * .contentTop: Top-edge of the content, relative to the workspace origin. + * .contentLeft: Left-edge of the content relative to the workspace origin. + * .scrollTop: Top-edge of the scroll area, relative to the workspace origin. + * .scrollLeft: Left-edge of the scroll area relative to the workspace origin. + * .absoluteTop: Top-edge of the visible portion of the workspace, relative + * to the blocklyDiv. + * .absoluteLeft: Left-edge of the visible portion of the workspace, relative + * to the blocklyDiv. + * .toolboxWidth: Width of the toolbox, if it exists. Otherwise zero. + * .toolboxHeight: Height of the toolbox, if it exists. Otherwise zero. + * .flyoutWidth: Width of the flyout if it is always open. Otherwise zero. + * .flyoutHeight: Height of the flyout if it is always open. Otherwise zero. + * .toolboxPosition: Top, bottom, left or right. Use TOOLBOX_AT constants to + * compare. + * @return {!Metrics} Contains size and position metrics of a top + * level workspace. + * @public + */ + public getMetrics(): Metrics; + } + export namespace MetricsManager { + /** + * Describes the width, height and location of the toolbox on the main + * workspace. + */ + type ToolboxMetrics = { + width: number; + height: number; + position: toolboxUtils.Position; + }; + /** + * Describes where the viewport starts in relation to the workspace SVG. + */ + type AbsoluteMetrics = { + left: number; + top: number; + }; + /** + * All the measurements needed to describe the size and location of a + * container. + */ + type ContainerRegion = { + height: number; + width: number; + top: number; + left: number; + }; + /** + * Describes fixed edges of the workspace. + */ + type FixedEdges = { + top: (number | undefined); + bottom: (number | undefined); + left: (number | undefined); + right: (number | undefined); + }; + /** + * Common metrics used for UI elements. + */ + type UiMetrics = { + viewMetrics: MetricsManager.ContainerRegion; + absoluteMetrics: MetricsManager.AbsoluteMetrics; + toolboxMetrics: MetricsManager.ToolboxMetrics; + }; + } + import { IMetricsManager } from "core/interfaces/i_metrics_manager"; + import { WorkspaceSvg } from "core/workspace_svg"; + import { IFlyout } from "core/interfaces/i_flyout"; + import { Metrics } from "core/utils/metrics"; + import * as toolboxUtils from "core/utils/toolbox"; +} +declare module "core/interfaces/i_positionable" { + /** + * Interface for a component that is positioned on top of the workspace. + * @extends {IComponent} + * @interface + * @alias Blockly.IPositionable + */ + export class IPositionable {} +} +declare module "core/component_manager" { + /** + * Manager for all items registered with the workspace. + * @alias Blockly.ComponentManager + */ + export class ComponentManager { + /** + * A map of the components registered with the workspace, mapped to id. + * @type {!Object} + * @private + */ + private componentData_; + /** + * A map of capabilities to component IDs. + * @type {!Object>} + * @private + */ + private capabilityToComponentIds_; + /** + * Adds a component. + * @param {!ComponentManager.ComponentDatum} componentInfo The data for + * the component to register. + * @param {boolean=} opt_allowOverrides True to prevent an error when + * overriding an already registered item. + */ + addComponent(componentInfo: ComponentManager.ComponentDatum, opt_allowOverrides?: boolean | undefined): void; + /** + * Removes a component. + * @param {string} id The ID of the component to remove. + */ + removeComponent(id: string): void; + /** + * Adds a capability to a existing registered component. + * @param {string} id The ID of the component to add the capability to. + * @param {string|!ComponentManager.Capability} capability The + * capability to add. + * @template T + */ + addCapability(id: string, capability: string | { + /** + * @type {string} + * @private + */ + name_: string; + /** + * Returns the name of the capability. + * @return {string} The name. + * @override + */ + toString(): string; + }): void; + /** + * Removes a capability from an existing registered component. + * @param {string} id The ID of the component to remove the capability from. + * @param {string|!ComponentManager.Capability} capability The + * capability to remove. + * @template T + */ + removeCapability(id: string, capability: string | { + /** + * @type {string} + * @private + */ + name_: string; + /** + * Returns the name of the capability. + * @return {string} The name. + * @override + */ + toString(): string; + }): void; + /** + * Returns whether the component with this id has the specified capability. + * @param {string} id The ID of the component to check. + * @param {string|!ComponentManager.Capability} capability The + * capability to check for. + * @return {boolean} Whether the component has the capability. + * @template T + */ + hasCapability(id: string, capability: string | { + /** + * @type {string} + * @private + */ + name_: string; + /** + * Returns the name of the capability. + * @return {string} The name. + * @override + */ + toString(): string; + }): boolean; + /** + * Gets the component with the given ID. + * @param {string} id The ID of the component to get. + * @return {!IComponent|undefined} The component with the given name + * or undefined if not found. + */ + getComponent(id: string): { + (): void; + id: string; + } | undefined; + /** + * Gets all the components with the specified capability. + * @param {string|!ComponentManager.Capability + * } capability The capability of the component. + * @param {boolean} sorted Whether to return list ordered by weights. + * @return {!Array} The components that match the specified capability. + * @template T + */ + getComponents(capability: string | { + /** + * @type {string} + * @private + */ + name_: string; + /** + * Returns the name of the capability. + * @return {string} The name. + * @override + */ + toString(): string; + }, sorted: boolean): T_4[]; + } + export namespace ComponentManager { + export { Capability }; + /** + * An object storing component information. + */ + export type ComponentDatum = { + component: { + (): void; + id: string; + }; + capabilities: (Array); + weight: number; + }; + } + class Capability { + /** + * @param {string} name The name of the component capability. + */ + constructor(name: string); + /** + * @type {string} + * @private + */ + private name_; + /** + * Returns the name of the capability. + * @return {string} The name. + * @override + */ + toString(): string; + } + export {}; +} +declare module "core/interfaces/i_contextmenu" { + /** + * @interface + * @alias Blockly.IContextMenu + */ + export class IContextMenu {} +} +declare module "core/interfaces/i_bubble" { + /** + * A bubble interface. + * @interface + * @extends {IDraggable} + * @extends {IContextMenu} + * @alias Blockly.IBubble + */ + export class IBubble {} +} +declare module "core/css" { + /** + * Add some CSS to the blob that will be injected later. Allows optional + * components such as fields and the toolbox to store separate CSS. + * @param {string|!Array} cssContent Multiline CSS string or an array of + * single lines of CSS. + * @alias Blockly.Css.register + */ + export function register(cssContent: string | Array): void; + /** + * Inject the CSS into the DOM. This is preferable over using a regular CSS + * file since: + * a) It loads synchronously and doesn't force a redraw later. + * b) It speeds up loading by not blocking on a separate HTTP transfer. + * c) The CSS content may be made dynamic depending on init options. + * @param {boolean} hasCss If false, don't inject CSS + * (providing CSS becomes the document's responsibility). + * @param {string} pathToMedia Path from page to the Blockly media directory. + * @alias Blockly.Css.inject + */ + export function inject(hasCss: boolean, pathToMedia: string): void; + /** + * The CSS content for Blockly. + * @alias Blockly.Css.content + */ + export let content: string; +} +declare module "core/interfaces/i_bounded_element" { + /** + * A bounded element interface. + * @interface + * @alias Blockly.IBoundedElement + */ + export class IBoundedElement {} +} +declare module "core/interfaces/i_movable" { + /** + * The interface for an object that is movable. + * @interface + * @alias Blockly.IMovable + */ + export class IMovable {} +} +declare module "core/interfaces/i_selectable" { + export class ISelectable { + /** + * @type {string} + */ + id: string; + } +} +declare module "core/interfaces/i_copyable" { + /** + * @extends {ISelectable} + * @interface + * @alias Blockly.ICopyable + */ + export class ICopyable {} + export namespace ICopyable { + /** + * Copy Metadata. + */ + type CopyData = { + saveInfo: (Object | Element); + source: WorkspaceSvg; + typeCounts: Object | null; + }; + } + import { WorkspaceSvg } from "core/workspace_svg"; +} +declare module "core/events/events_selected" { + /** + * Class for a selected event. + * @extends {UiBase} + * @alias Blockly.Events.Selected + */ + export class Selected extends UiBase { + /** + * @param {?string=} opt_oldElementId The ID of the previously selected + * element. Null if no element last selected. Undefined for a blank event. + * @param {?string=} opt_newElementId The ID of the selected element. Null if + * no element currently selected (deselect). Undefined for a blank event. + * @param {string=} opt_workspaceId The workspace identifier for this event. + * Null if no element previously selected. Undefined for a blank event. + */ + constructor(opt_oldElementId?: (string | null) | undefined, opt_newElementId?: (string | null) | undefined, opt_workspaceId?: string | undefined); + /** + * The id of the last selected element. + * @type {?string|undefined} + */ + oldElementId: (string | undefined) | null; + /** + * The id of the selected element. + * @type {?string|undefined} + */ + newElementId: (string | undefined) | null; + } + import { UiBase } from "core/events/events_ui_base"; +} +declare module "core/workspace_comment_svg" { + /** + * Class for a workspace comment's SVG representation. + * @extends {WorkspaceComment} + * @implements {IBoundedElement} + * @implements {IBubble} + * @implements {ICopyable} + * @alias Blockly.WorkspaceCommentSvg + */ + export class WorkspaceCommentSvg extends WorkspaceComment implements IBoundedElement, IBubble, ICopyable { + /** + * Decode an XML comment tag and create a rendered comment on the workspace. + * @param {!Element} xmlComment XML comment element. + * @param {!WorkspaceSvg} workspace The workspace. + * @param {number=} opt_wsWidth The width of the workspace, which is used to + * position comments correctly in RTL. + * @return {!WorkspaceCommentSvg} The created workspace comment. + * @package + */ + static fromXmlRendered(xmlComment: Element, workspace: WorkspaceSvg, opt_wsWidth?: number | undefined): WorkspaceCommentSvg; + /** + * @param {!WorkspaceSvg} workspace The block's workspace. + * @param {string} content The content of this workspace comment. + * @param {number} height Height of the comment. + * @param {number} width Width of the comment. + * @param {string=} opt_id Optional ID. Use this ID if provided, otherwise + * create a new ID. + */ + constructor(workspace: WorkspaceSvg, content: string, height: number, width: number, opt_id?: string | undefined); + /** + * Mouse up event data. + * @type {?browserEvents.Data} + * @private + */ + private onMouseUpWrapper_; + /** + * Mouse move event data. + * @type {?browserEvents.Data} + * @private + */ + private onMouseMoveWrapper_; + /** + * Whether event handlers have been initialized. + * @type {boolean} + * @private + */ + private eventsInit_; + /** + * @type {?Element} + * @private + */ + private textarea_; + /** + * @type {?SVGRectElement} + * @private + */ + private svgRectTarget_; + /** + * @type {?SVGRectElement} + * @private + */ + private svgHandleTarget_; + /** + * @type {?SVGForeignObjectElement} + * @private + */ + private foreignObject_; + /** + * @type {?SVGGElement} + * @private + */ + private resizeGroup_; + /** + * @type {?SVGGElement} + * @private + */ + private deleteGroup_; + /** + * @type {?SVGCircleElement} + * @private + */ + private deleteIconBorder_; + /** + * @type {boolean} + * @private + */ + private focused_; + /** + * @type {boolean} + * @private + */ + private autoLayout_; + /** + * @type {!SVGElement} + * @private + */ + private svgGroup_; + svgRect_: SVGRectElement; + /** + * Whether the comment is rendered onscreen and is a part of the DOM. + * @type {boolean} + * @private + */ + private rendered_; + /** + * Whether to move the comment to the drag surface when it is dragged. + * True if it should move, false if it should be translated directly. + * @type {boolean} + * @private + */ + private useDragSurface_; + /** + * Create and initialize the SVG representation of a workspace comment. + * May be called more than once. + * + * @param {boolean=} opt_noSelect Text inside text area will be selected if + * false + * + * @package + */ + initSvg(opt_noSelect?: boolean | undefined): void; + /** + * Handle a mouse-down on an SVG comment. + * @param {!Event} e Mouse down event or touch start event. + * @private + */ + private pathMouseDown_; + /** + * Show the context menu for this workspace comment. + * @param {!Event} e Mouse event. + * @package + */ + showContextMenu(e: Event): void; + /** + * Select this comment. Highlight it visually. + * @package + */ + select(): void; + /** + * Unselect this comment. Remove its highlighting. + * @package + */ + unselect(): void; + /** + * Select this comment. Highlight it visually. + * @package + */ + addSelect(): void; + /** + * Unselect this comment. Remove its highlighting. + * @package + */ + removeSelect(): void; + /** + * Focus this comment. Highlight it visually. + * @package + */ + addFocus(): void; + /** + * Unfocus this comment. Remove its highlighting. + * @package + */ + removeFocus(): void; + /** + * Return the coordinates of the top-left corner of this comment relative to + * the drawing surface's origin (0,0), in workspace units. + * If the comment is on the workspace, (0, 0) is the origin of the workspace + * coordinate system. + * This does not change with workspace scale. + * @return {!Coordinate} Object with .x and .y properties in + * workspace coordinates. + * @package + */ + getRelativeToSurfaceXY(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Transforms a comment by setting the translation on the transform attribute + * of the block's SVG. + * @param {number} x The x coordinate of the translation in workspace units. + * @param {number} y The y coordinate of the translation in workspace units. + * @package + */ + translate(x: number, y: number): void; + /** + * Move this comment to its workspace's drag surface, accounting for + * positioning. Generally should be called at the same time as + * setDragging(true). Does nothing if useDragSurface_ is false. + * @package + */ + moveToDragSurface(): void; + /** + * Move this comment during a drag, taking into account whether we are using a + * drag surface to translate blocks. + * @param {BlockDragSurfaceSvg} dragSurface The surface that carries + * rendered items during a drag, or null if no drag surface is in use. + * @param {!Coordinate} newLoc The location to translate to, in + * workspace coordinates. + * @package + */ + moveDuringDrag(dragSurface: { + SVG_: SVGElement | null; + dragGroup_: SVGElement | null; + container_: Element; + scale_: number; + surfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + } | null; + childSurfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + createDom(): void; /** + * @type {?SVGRectElement} + * @private + */ + setBlocksAndShow(blocks: SVGElement): void; /** + * @type {boolean} + * @private + */ + translateAndScaleGroup(x: number, y: number, scale: number): void; + translateSurfaceInternal_(): void; + translateBy(deltaX: number, deltaY: number): void; + translateSurface(x: number, y: number): void; + getSurfaceTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + getGroup(): SVGElement | null; + getSvgRoot(): SVGElement | null; + getCurrentBlock(): Element | null; + getWsTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + clearAndHide(opt_newSurface?: Element | undefined): void; + }, newLoc: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Move the bubble group to the specified location in workspace coordinates. + * @param {number} x The x position to move to. + * @param {number} y The y position to move to. + * @package + */ + moveTo(x: number, y: number): void; + /** + * Clear the comment of transform="..." attributes. + * Used when the comment is switching from 3d to 2d transform or vice versa. + * @private + */ + private clearTransformAttributes_; + /** + * Returns the coordinates of a bounding box describing the dimensions of this + * comment. + * Coordinate system: workspace coordinates. + * @return {!Rect} Object with coordinates of the bounding box. + * @package + */ + getBoundingRectangle(): { + top: number; + bottom: number; + left: number; + right: number; + contains(x: number, y: number): boolean; + intersects(other: any): boolean; + }; + /** + * Add or remove the UI indicating if this comment is movable or not. + * @package + */ + updateMovable(): void; + /** + * Recursively adds or removes the dragging class to this node and its + * children. + * @param {boolean} adding True if adding, false if removing. + * @package + */ + setDragging(adding: boolean): void; + /** + * Return the root node of the SVG or null if none exists. + * @return {!SVGElement} The root SVG node (probably a group). + * @package + */ + getSvgRoot(): SVGElement; + /** + * Update the cursor over this comment by adding or removing a class. + * @param {boolean} enable True if the delete cursor should be shown, false + * otherwise. + * @package + */ + setDeleteStyle(enable: boolean): void; + /** + * Set whether auto-layout of this bubble is enabled. The first time a bubble + * is shown it positions itself to not cover any blocks. Once a user has + * dragged it to reposition, it renders where the user put it. + * @param {boolean} _enable True if auto-layout should be enabled, false + * otherwise. + * @package + */ + setAutoLayout(_enable: boolean): void; + /** + * Encode a comment for copying. + * @return {!ICopyable.CopyData} Copy metadata. + * @package + */ + toCopyData(): ICopyable.CopyData; + /** + * Returns a bounding box describing the dimensions of this comment. + * @return {!{height: number, width: number}} Object with height and width + * properties in workspace units. + * @package + */ + getHeightWidth(): { + height: number; + width: number; + }; + /** + * Renders the workspace comment. + * @package + */ + render(): void; + /** + * Create the text area for the comment. + * @return {!Element} The top-level node of the editor. + * @private + */ + private createEditor_; + /** + * Add the resize icon to the DOM + * @private + */ + private addResizeDom_; + /** + * Add the delete icon to the DOM + * @private + */ + private addDeleteDom_; + /** + * Handle a mouse-down on comment's resize corner. + * @param {!Event} e Mouse down event. + * @private + */ + private resizeMouseDown_; + /** + * Handle a mouse-down on comment's delete icon. + * @param {!Event} e Mouse down event. + * @private + */ + private deleteMouseDown_; + /** + * Handle a mouse-out on comment's delete icon. + * @param {!Event} _e Mouse out event. + * @private + */ + private deleteMouseOut_; + /** + * Handle a mouse-up on comment's delete icon. + * @param {!Event} e Mouse up event. + * @private + */ + private deleteMouseUp_; + /** + * Stop binding to the global mouseup and mousemove events. + * @private + */ + private unbindDragEvents_; + /** + * Handle a mouse-up event while dragging a comment's border or resize handle. + * @param {!Event} _e Mouse up event. + * @private + */ + private resizeMouseUp_; + /** + * Resize this comment to follow the mouse. + * @param {!Event} e Mouse move event. + * @private + */ + private resizeMouseMove_; + /** + * Callback function triggered when the comment has resized. + * Resize the text area accordingly. + * @private + */ + private resizeComment_; + /** + * Set size + * @param {number} width width of the container + * @param {number} height height of the container + * @private + */ + private setSize_; + /** + * Dispose of any rendered comment components. + * @private + */ + private disposeInternal_; + /** + * Set the focus on the text area. + * @package + */ + setFocus(): void; + /** + * Remove focus from the text area. + * @package + */ + blurFocus(): void; + } + export namespace WorkspaceCommentSvg { + const DEFAULT_SIZE: number; + const TOP_OFFSET: number; + } + import { IBoundedElement } from "core/interfaces/i_bounded_element"; + import { IBubble } from "core/interfaces/i_bubble"; + import { ICopyable } from "core/interfaces/i_copyable"; + import { WorkspaceComment } from "core/workspace_comment"; + import { WorkspaceSvg } from "core/workspace_svg"; +} +declare module "core/scrollbar" { + /** + * A note on units: most of the numbers that are in CSS pixels are scaled if the + * scrollbar is in a mutator. + */ + /** + * Class for a pure SVG scrollbar. + * This technique offers a scrollbar that is guaranteed to work, but may not + * look or behave like the system's scrollbars. + * @alias Blockly.Scrollbar + */ + export class Scrollbar { + /** + * @param {!Metrics} first An object containing computed + * measurements of a workspace. + * @param {!Metrics} second Another object containing computed + * measurements of a workspace. + * @return {boolean} Whether the two sets of metrics are equivalent. + * @private + */ + private static metricsAreEquivalent_; + /** + * @param {!WorkspaceSvg} workspace Workspace to bind the scrollbar to. + * @param {boolean} horizontal True if horizontal, false if vertical. + * @param {boolean=} opt_pair True if scrollbar is part of a horiz/vert pair. + * @param {string=} opt_class A class to be applied to this scrollbar. + * @param {number=} opt_margin The margin to apply to this scrollbar. + */ + constructor(workspace: WorkspaceSvg, horizontal: boolean, opt_pair?: boolean | undefined, opt_class?: string | undefined, opt_margin?: number | undefined); + /** + * The workspace this scrollbar is bound to. + * @type {!WorkspaceSvg} + * @private + */ + private workspace_; + /** + * Whether this scrollbar is part of a pair. + * @type {boolean} + * @private + */ + private pair_; + /** + * Whether this is a horizontal scrollbar. + * @type {boolean} + * @private + */ + private horizontal_; + /** + * Margin around the scrollbar (between the scrollbar and the edge of the + * viewport in pixels). + * @type {number} + * @const + * @private + */ + private margin_; + /** + * Previously recorded metrics from the workspace. + * @type {?Metrics} + * @private + */ + private oldHostMetrics_; + /** + * The ratio of handle position offset to workspace content displacement. + * @type {?number} + * @package + */ + ratio: number | null; + /** + * The location of the origin of the workspace that the scrollbar is in, + * measured in CSS pixels relative to the injection div origin. This is + * usually (0, 0). When the scrollbar is in a flyout it may have a + * different origin. + * @type {Coordinate} + * @private + */ + private origin_; + /** + * The position of the mouse along this scrollbar's major axis at the start + * of the most recent drag. Units are CSS pixels, with (0, 0) at the top + * left of the browser window. For a horizontal scrollbar this is the x + * coordinate of the mouse down event; for a vertical scrollbar it's the y + * coordinate of the mouse down event. + * @type {number} + * @private + */ + private startDragMouse_; + /** + * The length of the scrollbars (including the handle and the background), + * in CSS pixels. This is equivalent to scrollbar background length and the + * area within which the scrollbar handle can move. + * @type {number} + * @private + */ + private scrollbarLength_; + /** + * The length of the scrollbar handle in CSS pixels. + * @type {number} + * @private + */ + private handleLength_; + /** + * The offset of the start of the handle from the scrollbar position, in CSS + * pixels. + * @type {number} + * @private + */ + private handlePosition_; + /** + * @type {number} + * @private + */ + private startDragHandle; + /** + * Whether the scrollbar handle is visible. + * @type {boolean} + * @private + */ + private isVisible_; + /** + * Whether the workspace containing this scrollbar is visible. + * @type {boolean} + * @private + */ + private containerVisible_; + /** + * @type {?SVGRectElement} + * @private + */ + private svgBackground_; + /** + * @type {?SVGRectElement} + * @private + */ + private svgHandle_; + /** + * @type {?SVGSVGElement} + * @private + */ + private outerSvg_; + /** + * @type {?SVGGElement} + * @private + */ + private svgGroup_; + /** + * The upper left corner of the scrollbar's SVG group in CSS pixels relative + * to the scrollbar's origin. This is usually relative to the injection div + * origin. + * @type {Coordinate} + * @package + */ + position: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + lengthAttribute_: string; + positionAttribute_: string; + onMouseDownBarWrapper_: any[][]; + onMouseDownHandleWrapper_: any[][]; + /** + * Dispose of this scrollbar. + * Unlink from all DOM elements to prevent memory leaks. + * @suppress {checkTypes} + */ + dispose(): void; + /** + * Constrain the handle's length within the minimum (0) and maximum + * (scrollbar background) values allowed for the scrollbar. + * @param {number} value Value that is potentially out of bounds, in CSS + * pixels. + * @return {number} Constrained value, in CSS pixels. + * @private + */ + private constrainHandleLength_; + /** + * Set the length of the scrollbar's handle and change the SVG attribute + * accordingly. + * @param {number} newLength The new scrollbar handle length in CSS pixels. + * @private + */ + private setHandleLength_; + /** + * Constrain the handle's position within the minimum (0) and maximum values + * allowed for the scrollbar. + * @param {number} value Value that is potentially out of bounds, in CSS + * pixels. + * @return {number} Constrained value, in CSS pixels. + * @private + */ + private constrainHandlePosition_; + /** + * Set the offset of the scrollbar's handle from the scrollbar's position, and + * change the SVG attribute accordingly. + * @param {number} newPosition The new scrollbar handle offset in CSS pixels. + */ + setHandlePosition(newPosition: number): void; + /** + * Set the size of the scrollbar's background and change the SVG attribute + * accordingly. + * @param {number} newSize The new scrollbar background length in CSS pixels. + * @private + */ + private setScrollbarLength_; + /** + * Set the position of the scrollbar's SVG group in CSS pixels relative to the + * scrollbar's origin. This sets the scrollbar's location within the + * workspace. + * @param {number} x The new x coordinate. + * @param {number} y The new y coordinate. + * @package + */ + setPosition(x: number, y: number): void; + /** + * Recalculate the scrollbar's location and its length. + * @param {Metrics=} opt_metrics A data structure of from the + * describing all the required dimensions. If not provided, it will be + * fetched from the host object. + */ + resize(opt_metrics?: Metrics | undefined): void; + /** + * Returns whether the a resizeView is necessary by comparing the passed + * hostMetrics with cached old host metrics. + * @param {!Metrics} hostMetrics A data structure describing all + * the required dimensions, possibly fetched from the host object. + * @return {boolean} Whether a resizeView is necessary. + * @private + */ + private requiresViewResize_; + /** + * Recalculate a horizontal scrollbar's location and length. + * @param {!Metrics} hostMetrics A data structure describing all + * the required dimensions, possibly fetched from the host object. + * @private + */ + private resizeHorizontal_; + /** + * Recalculate a horizontal scrollbar's location on the screen and path + * length. This should be called when the layout or size of the window has + * changed. + * @param {!Metrics} hostMetrics A data structure describing all + * the required dimensions, possibly fetched from the host object. + */ + resizeViewHorizontal(hostMetrics: Metrics): void; + /** + * Recalculate a horizontal scrollbar's location within its path and length. + * This should be called when the contents of the workspace have changed. + * @param {!Metrics} hostMetrics A data structure describing all + * the required dimensions, possibly fetched from the host object. + */ + resizeContentHorizontal(hostMetrics: Metrics): void; + /** + * Recalculate a vertical scrollbar's location and length. + * @param {!Metrics} hostMetrics A data structure describing all + * the required dimensions, possibly fetched from the host object. + * @private + */ + private resizeVertical_; + /** + * Recalculate a vertical scrollbar's location on the screen and path length. + * This should be called when the layout or size of the window has changed. + * @param {!Metrics} hostMetrics A data structure describing all + * the required dimensions, possibly fetched from the host object. + */ + resizeViewVertical(hostMetrics: Metrics): void; + /** + * Recalculate a vertical scrollbar's location within its path and length. + * This should be called when the contents of the workspace have changed. + * @param {!Metrics} hostMetrics A data structure describing all + * the required dimensions, possibly fetched from the host object. + */ + resizeContentVertical(hostMetrics: Metrics): void; + /** + * Create all the DOM elements required for a scrollbar. + * The resulting widget is not sized. + * @param {string=} opt_class A class to be applied to this scrollbar. + * @private + */ + private createDom_; + /** + * Is the scrollbar visible. Non-paired scrollbars disappear when they aren't + * needed. + * @return {boolean} True if visible. + */ + isVisible(): boolean; + /** + * Set whether the scrollbar's container is visible and update + * display accordingly if visibility has changed. + * @param {boolean} visible Whether the container is visible + */ + setContainerVisible(visible: boolean): void; + /** + * Set whether the scrollbar is visible. + * Only applies to non-paired scrollbars. + * @param {boolean} visible True if visible. + */ + setVisible(visible: boolean): void; + /** + * Update visibility of scrollbar based on whether it thinks it should + * be visible and whether its containing workspace is visible. + * We cannot rely on the containing workspace being hidden to hide us + * because it is not necessarily our parent in the DOM. + */ + updateDisplay_(): void; + /** + * Scroll by one pageful. + * Called when scrollbar background is clicked. + * @param {!Event} e Mouse down event. + * @private + */ + private onMouseDownBar_; + /** + * Start a dragging operation. + * Called when scrollbar handle is clicked. + * @param {!Event} e Mouse down event. + * @private + */ + private onMouseDownHandle_; + /** + * Drag the scrollbar's handle. + * @param {!Event} e Mouse up event. + * @private + */ + private onMouseMoveHandle_; + /** + * Release the scrollbar handle and reset state accordingly. + * @private + */ + private onMouseUpHandle_; + /** + * Hide chaff and stop binding to mouseup and mousemove events. Call this to + * wrap up loose ends associated with the scrollbar. + * @private + */ + private cleanUp_; + /** + * Helper to calculate the ratio of handle position to scrollbar view size. + * @return {number} Ratio. + * @package + */ + getRatio_(): number; + /** + * Updates workspace metrics based on new scroll ratio. Called when scrollbar + * is moved. + * @private + */ + private updateMetrics_; + /** + * Set the scrollbar handle's position. + * @param {number} value The content displacement, relative to the view in + * pixels. + * @param {boolean=} updateMetrics Whether to update metrics on this set call. + * Defaults to true. + */ + set(value: number, updateMetrics?: boolean | undefined): void; + /** + * Record the origin of the workspace that the scrollbar is in, in pixels + * relative to the injection div origin. This is for times when the scrollbar + * is used in an object whose origin isn't the same as the main workspace + * (e.g. in a flyout.) + * @param {number} x The x coordinate of the scrollbar's origin, in CSS + * pixels. + * @param {number} y The y coordinate of the scrollbar's origin, in CSS + * pixels. + */ + setOrigin(x: number, y: number): void; + } + export namespace Scrollbar { + const scrollbarThickness: number; + const DEFAULT_SCROLLBAR_MARGIN: number; + } + import { Metrics } from "core/utils/metrics"; + import { WorkspaceSvg } from "core/workspace_svg"; +} +declare module "core/bubble" { + /** + * Class for UI bubble. + * @implements {IBubble} + * @alias Blockly.Bubble + */ + export const Bubble: { + new (workspace: WorkspaceSvg, content: Element, shape: Element, anchorXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }, bubbleWidth: number | null, bubbleHeight: number | null): { + workspace_: WorkspaceSvg; + content_: Element; + shape_: Element; + /** + * Flag to stop incremental rendering during construction. + * @type {boolean} + * @private + */ + rendered_: boolean; + /** + * The SVG group containing all parts of the bubble. + * @type {SVGGElement} + * @private + */ + bubbleGroup_: SVGGElement; + /** + * The SVG path for the arrow from the bubble to the icon on the block. + * @type {SVGPathElement} + * @private + */ + bubbleArrow_: SVGPathElement; + /** + * The SVG rect for the main body of the bubble. + * @type {SVGRectElement} + * @private + */ + bubbleBack_: SVGRectElement; + /** + * The SVG group for the resize hash marks on some bubbles. + * @type {SVGGElement} + * @private + */ + resizeGroup_: SVGGElement; + /** + * Absolute coordinate of anchor point, in workspace coordinates. + * @type {Coordinate} + * @private + */ + anchorXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Relative X coordinate of bubble with respect to the anchor's centre, + * in workspace units. + * In RTL mode the initial value is negated. + * @type {number} + * @private + */ + relativeLeft_: number; + /** + * Relative Y coordinate of bubble with respect to the anchor's centre, in + * workspace units. + * @type {number} + * @private + */ + relativeTop_: number; + /** + * Width of bubble, in workspace units. + * @type {number} + * @private + */ + width_: number; + /** + * Height of bubble, in workspace units. + * @type {number} + * @private + */ + height_: number; + /** + * Automatically position and reposition the bubble. + * @type {boolean} + * @private + */ + autoLayout_: boolean; + /** + * Method to call on resize of bubble. + * @type {?function()} + * @private + */ + resizeCallback_: (() => any) | null; + /** + * Method to call on move of bubble. + * @type {?function()} + * @private + */ + moveCallback_: (() => any) | null; + /** + * Mouse down on bubbleBack_ event data. + * @type {?browserEvents.Data} + * @private + */ + onMouseDownBubbleWrapper_: any[][] | null; + /** + * Mouse down on resizeGroup_ event data. + * @type {?browserEvents.Data} + * @private + */ + onMouseDownResizeWrapper_: any[][] | null; + /** + * Describes whether this bubble has been disposed of (nodes and event + * listeners removed from the page) or not. + * @type {boolean} + * @package + */ + disposed: boolean; + arrow_radians_: number; + /** + * Create the bubble's DOM. + * @param {!Element} content SVG content for the bubble. + * @param {boolean} hasResize Add diagonal resize gripper if true. + * @return {!SVGElement} The bubble's SVG group. + * @private + */ + createDom_(content: Element, hasResize: boolean): SVGElement; + /** + * Return the root node of the bubble's SVG group. + * @return {!SVGElement} The root SVG node of the bubble's group. + */ + getSvgRoot(): SVGElement; + /** + * Expose the block's ID on the bubble's top-level SVG group. + * @param {string} id ID of block. + */ + setSvgId(id: string): void; + /** + * Handle a mouse-down on bubble's border. + * @param {!Event} e Mouse down event. + * @private + */ + bubbleMouseDown_(e: Event): void; + /** + * Show the context menu for this bubble. + * @param {!Event} _e Mouse event. + * @package + */ + showContextMenu(_e: Event): void; + /** + * Get whether this bubble is deletable or not. + * @return {boolean} True if deletable. + * @package + */ + isDeletable(): boolean; + /** + * Update the style of this bubble when it is dragged over a delete area. + * @param {boolean} _enable True if the bubble is about to be deleted, false + * otherwise. + */ + setDeleteStyle(_enable: boolean): void; + /** + * Handle a mouse-down on bubble's resize corner. + * @param {!Event} e Mouse down event. + * @private + */ + resizeMouseDown_(e: Event): void; + /** + * Resize this bubble to follow the mouse. + * @param {!Event} e Mouse move event. + * @private + */ + resizeMouseMove_(e: Event): void; + /** + * Register a function as a callback event for when the bubble is resized. + * @param {!Function} callback The function to call on resize. + */ + registerResizeEvent(callback: Function): void; + /** + * Register a function as a callback event for when the bubble is moved. + * @param {!Function} callback The function to call on move. + */ + registerMoveEvent(callback: Function): void; + /** + * Move this bubble to the top of the stack. + * @return {boolean} Whether or not the bubble has been moved. + * @package + */ + promote(): boolean; + /** + * Notification that the anchor has moved. + * Update the arrow and bubble accordingly. + * @param {!Coordinate} xy Absolute location. + */ + setAnchorLocation(xy: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Position the bubble so that it does not fall off-screen. + * @private + */ + layoutBubble_(): void; + /** + * Calculate the what percentage of the bubble overlaps with the visible + * workspace (what percentage of the bubble is visible). + * @param {!{x: number, y: number}} relativeMin The position of the top-left + * corner of the bubble relative to the anchor point. + * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics + * of the workspace the bubble will appear in. + * @return {number} The percentage of the bubble that is visible. + * @private + */ + getOverlap_(relativeMin: { + x: number; + y: number; + }, viewMetrics: MetricsManager.ContainerRegion): number; + /** + * Calculate what the optimal horizontal position of the top-left corner of + * the bubble is (relative to the anchor point) so that the most area of the + * bubble is shown. + * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics + * of the workspace the bubble will appear in. + * @return {number} The optimal horizontal position of the top-left corner + * of the bubble. + * @private + */ + getOptimalRelativeLeft_(viewMetrics: MetricsManager.ContainerRegion): number; + /** + * Calculate what the optimal vertical position of the top-left corner of + * the bubble is (relative to the anchor point) so that the most area of the + * bubble is shown. + * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics + * of the workspace the bubble will appear in. + * @return {number} The optimal vertical position of the top-left corner + * of the bubble. + * @private + */ + getOptimalRelativeTop_(viewMetrics: MetricsManager.ContainerRegion): number; + /** + * Move the bubble to a location relative to the anchor's centre. + * @private + */ + positionBubble_(): void; + /** + * Move the bubble group to the specified location in workspace coordinates. + * @param {number} x The x position to move to. + * @param {number} y The y position to move to. + * @package + */ + moveTo(x: number, y: number): void; + /** + * Triggers a move callback if one exists at the end of a drag. + * @param {boolean} adding True if adding, false if removing. + * @package + */ + setDragging(adding: boolean): void; + /** + * Get the dimensions of this bubble. + * @return {!Size} The height and width of the bubble. + */ + getBubbleSize(): { + width: number; + height: number; + }; + /** + * Size this bubble. + * @param {number} width Width of the bubble. + * @param {number} height Height of the bubble. + */ + setBubbleSize(width: number, height: number): void; + /** + * Draw the arrow between the bubble and the origin. + * @private + */ + renderArrow_(): void; + /** + * Change the colour of a bubble. + * @param {string} hexColour Hex code of colour. + */ + setColour(hexColour: string): void; + /** + * Dispose of this bubble. + */ + dispose(): void; + /** + * Move this bubble during a drag, taking into account whether or not there is + * a drag surface. + * @param {BlockDragSurfaceSvg} dragSurface The surface that carries + * rendered items during a drag, or null if no drag surface is in use. + * @param {!Coordinate} newLoc The location to translate to, in + * workspace coordinates. + * @package + */ + moveDuringDrag(dragSurface: { + SVG_: SVGElement | null; + dragGroup_: SVGElement | null; + container_: Element; + scale_: number; + surfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + } | null; + childSurfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + createDom(): void; + setBlocksAndShow(blocks: SVGElement): void; + translateAndScaleGroup(x: number, y: number, scale: number): void; + translateSurfaceInternal_(): void; + translateBy(deltaX: number, deltaY: number): void; + translateSurface(x: number, y: number): void; + getSurfaceTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + getGroup(): SVGElement | null; + getSvgRoot(): SVGElement | null; + getCurrentBlock(): Element | null; + getWsTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + clearAndHide(opt_newSurface?: Element | undefined): void; + }, newLoc: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Return the coordinates of the top-left corner of this bubble's body + * relative to the drawing surface's origin (0,0), in workspace units. + * @return {!Coordinate} Object with .x and .y properties. + */ + getRelativeToSurfaceXY(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Set whether auto-layout of this bubble is enabled. The first time a bubble + * is shown it positions itself to not cover any blocks. Once a user has + * dragged it to reposition, it renders where the user put it. + * @param {boolean} enable True if auto-layout should be enabled, false + * otherwise. + * @package + */ + setAutoLayout(enable: boolean): void; + }; + /** + * Stop binding to the global mouseup and mousemove events. + * @private + */ + unbindDragEvents_(): void; + /** + * Handle a mouse-up event while dragging a bubble's border or resize handle. + * @param {!Event} _e Mouse up event. + * @private + */ + bubbleMouseUp_(_e: Event): void; + /** + * Create the text for a non editable bubble. + * @param {string} text The text to display. + * @return {!SVGTextElement} The top-level node of the text. + * @package + */ + textToDom(text: string): SVGTextElement; + /** + * Creates a bubble that can not be edited. + * @param {!SVGTextElement} paragraphElement The text element for the non + * editable bubble. + * @param {!BlockSvg} block The block that the bubble is attached to. + * @param {!Coordinate} iconXY The coordinate of the icon. + * @return {!Bubble} The non editable bubble. + * @package + */ + createNonEditableBubble(paragraphElement: SVGTextElement, block: BlockSvg, iconXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): { + workspace_: WorkspaceSvg; + content_: Element; + shape_: Element; + /** + * Flag to stop incremental rendering during construction. + * @type {boolean} + * @private + */ + rendered_: boolean; + /** + * The SVG group containing all parts of the bubble. + * @type {SVGGElement} + * @private + */ + bubbleGroup_: SVGGElement; + /** + * The SVG path for the arrow from the bubble to the icon on the block. + * @type {SVGPathElement} + * @private + */ + bubbleArrow_: SVGPathElement; + /** + * The SVG rect for the main body of the bubble. + * @type {SVGRectElement} + * @private + */ + bubbleBack_: SVGRectElement; + /** + * The SVG group for the resize hash marks on some bubbles. + * @type {SVGGElement} + * @private + */ + resizeGroup_: SVGGElement; + /** + * Absolute coordinate of anchor point, in workspace coordinates. + * @type {Coordinate} + * @private + */ + anchorXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Relative X coordinate of bubble with respect to the anchor's centre, + * in workspace units. + * In RTL mode the initial value is negated. + * @type {number} + * @private + */ + relativeLeft_: number; + /** + * Relative Y coordinate of bubble with respect to the anchor's centre, in + * workspace units. + * @type {number} + * @private + */ + relativeTop_: number; + /** + * Width of bubble, in workspace units. + * @type {number} + * @private + */ + width_: number; + /** + * Height of bubble, in workspace units. + * @type {number} + * @private + */ + height_: number; + /** + * Automatically position and reposition the bubble. + * @type {boolean} + * @private + */ + autoLayout_: boolean; + /** + * Method to call on resize of bubble. + * @type {?function()} + * @private + */ + resizeCallback_: (() => any) | null; + /** + * Method to call on move of bubble. + * @type {?function()} + * @private + */ + moveCallback_: (() => any) | null; + /** + * Mouse down on bubbleBack_ event data. + * @type {?browserEvents.Data} + * @private + */ + onMouseDownBubbleWrapper_: any[][] | null; + /** + * Mouse down on resizeGroup_ event data. + * @type {?browserEvents.Data} + * @private + */ + onMouseDownResizeWrapper_: any[][] | null; + /** + * Describes whether this bubble has been disposed of (nodes and event + * listeners removed from the page) or not. + * @type {boolean} + * @package + */ + disposed: boolean; + arrow_radians_: number; + /** + * Create the bubble's DOM. + * @param {!Element} content SVG content for the bubble. + * @param {boolean} hasResize Add diagonal resize gripper if true. + * @return {!SVGElement} The bubble's SVG group. + * @private + */ + createDom_(content: Element, hasResize: boolean): SVGElement; + /** + * Return the root node of the bubble's SVG group. + * @return {!SVGElement} The root SVG node of the bubble's group. + */ + getSvgRoot(): SVGElement; + /** + * Expose the block's ID on the bubble's top-level SVG group. + * @param {string} id ID of block. + */ + setSvgId(id: string): void; + /** + * Handle a mouse-down on bubble's border. + * @param {!Event} e Mouse down event. + * @private + */ + bubbleMouseDown_(e: Event): void; + /** + * Show the context menu for this bubble. + * @param {!Event} _e Mouse event. + * @package + */ + showContextMenu(_e: Event): void; + /** + * Get whether this bubble is deletable or not. + * @return {boolean} True if deletable. + * @package + */ + isDeletable(): boolean; + /** + * Update the style of this bubble when it is dragged over a delete area. + * @param {boolean} _enable True if the bubble is about to be deleted, false + * otherwise. + */ + setDeleteStyle(_enable: boolean): void; + /** + * Handle a mouse-down on bubble's resize corner. + * @param {!Event} e Mouse down event. + * @private + */ + resizeMouseDown_(e: Event): void; + /** + * Resize this bubble to follow the mouse. + * @param {!Event} e Mouse move event. + * @private + */ + resizeMouseMove_(e: Event): void; + /** + * Register a function as a callback event for when the bubble is resized. + * @param {!Function} callback The function to call on resize. + */ + registerResizeEvent(callback: Function): void; + /** + * Register a function as a callback event for when the bubble is moved. + * @param {!Function} callback The function to call on move. + */ + registerMoveEvent(callback: Function): void; + /** + * Move this bubble to the top of the stack. + * @return {boolean} Whether or not the bubble has been moved. + * @package + */ + promote(): boolean; + /** + * Notification that the anchor has moved. + * Update the arrow and bubble accordingly. + * @param {!Coordinate} xy Absolute location. + */ + setAnchorLocation(xy: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Position the bubble so that it does not fall off-screen. + * @private + */ + layoutBubble_(): void; + /** + * Calculate the what percentage of the bubble overlaps with the visible + * workspace (what percentage of the bubble is visible). + * @param {!{x: number, y: number}} relativeMin The position of the top-left + * corner of the bubble relative to the anchor point. + * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics + * of the workspace the bubble will appear in. + * @return {number} The percentage of the bubble that is visible. + * @private + */ + getOverlap_(relativeMin: { + x: number; + y: number; + }, viewMetrics: MetricsManager.ContainerRegion): number; + /** + * Calculate what the optimal horizontal position of the top-left corner of + * the bubble is (relative to the anchor point) so that the most area of the + * bubble is shown. + * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics + * of the workspace the bubble will appear in. + * @return {number} The optimal horizontal position of the top-left corner + * of the bubble. + * @private + */ + getOptimalRelativeLeft_(viewMetrics: MetricsManager.ContainerRegion): number; + /** + * Calculate what the optimal vertical position of the top-left corner of + * the bubble is (relative to the anchor point) so that the most area of the + * bubble is shown. + * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics + * of the workspace the bubble will appear in. + * @return {number} The optimal vertical position of the top-left corner + * of the bubble. + * @private + */ + getOptimalRelativeTop_(viewMetrics: MetricsManager.ContainerRegion): number; + /** + * Move the bubble to a location relative to the anchor's centre. + * @private + */ + positionBubble_(): void; + /** + * Move the bubble group to the specified location in workspace coordinates. + * @param {number} x The x position to move to. + * @param {number} y The y position to move to. + * @package + */ + moveTo(x: number, y: number): void; + /** + * Triggers a move callback if one exists at the end of a drag. + * @param {boolean} adding True if adding, false if removing. + * @package + */ + setDragging(adding: boolean): void; + /** + * Get the dimensions of this bubble. + * @return {!Size} The height and width of the bubble. + */ + getBubbleSize(): { + width: number; + height: number; + }; + /** + * Size this bubble. + * @param {number} width Width of the bubble. + * @param {number} height Height of the bubble. + */ + setBubbleSize(width: number, height: number): void; + /** + * Draw the arrow between the bubble and the origin. + * @private + */ + renderArrow_(): void; + /** + * Change the colour of a bubble. + * @param {string} hexColour Hex code of colour. + */ + setColour(hexColour: string): void; + /** + * Dispose of this bubble. + */ + dispose(): void; + /** + * Move this bubble during a drag, taking into account whether or not there is + * a drag surface. + * @param {BlockDragSurfaceSvg} dragSurface The surface that carries + * rendered items during a drag, or null if no drag surface is in use. + * @param {!Coordinate} newLoc The location to translate to, in + * workspace coordinates. + * @package + */ + moveDuringDrag(dragSurface: { + SVG_: SVGElement | null; + dragGroup_: SVGElement | null; + container_: Element; + scale_: number; + surfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + } | null; + childSurfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + createDom(): void; + setBlocksAndShow(blocks: SVGElement): void; + translateAndScaleGroup(x: number, y: number, scale: number): void; + translateSurfaceInternal_(): void; + translateBy(deltaX: number, deltaY: number): void; + translateSurface(x: number, y: number): void; + getSurfaceTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + getGroup(): SVGElement | null; + getSvgRoot(): SVGElement | null; + getCurrentBlock(): Element | null; + getWsTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + clearAndHide(opt_newSurface?: Element | undefined): void; + }, newLoc: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Return the coordinates of the top-left corner of this bubble's body + * relative to the drawing surface's origin (0,0), in workspace units. + * @return {!Coordinate} Object with .x and .y properties. + */ + getRelativeToSurfaceXY(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Set whether auto-layout of this bubble is enabled. The first time a bubble + * is shown it positions itself to not cover any blocks. Once a user has + * dragged it to reposition, it renders where the user put it. + * @param {boolean} enable True if auto-layout should be enabled, false + * otherwise. + * @package + */ + setAutoLayout(enable: boolean): void; + }; + /** + * Width of the border around the bubble. + */ + BORDER_WIDTH: number; + /** + * Determines the thickness of the base of the arrow in relation to the size + * of the bubble. Higher numbers result in thinner arrows. + */ + ARROW_THICKNESS: number; + /** + * The number of degrees that the arrow bends counter-clockwise. + */ + ARROW_ANGLE: number; + /** + * The sharpness of the arrow's bend. Higher numbers result in smoother arrows. + */ + ARROW_BEND: number; + /** + * Distance between arrow point and anchor point. + */ + ANCHOR_RADIUS: number; + /** + * Mouse up event data. + * @type {?browserEvents.Data} + * @private + */ + onMouseUpWrapper_: any[][] | null; + /** + * Mouse move event data. + * @type {?browserEvents.Data} + * @private + */ + onMouseMoveWrapper_: any[][] | null; + }; + import { WorkspaceSvg } from "core/workspace_svg"; + import { MetricsManager } from "core/metrics_manager"; + import { BlockSvg } from "core/block_svg"; +} +declare module "core/constants" { + /** + * The language-neutral ID given to the collapsed input. + * @const {string} + * @alias Blockly.constants.COLLAPSED_INPUT_NAME + */ + export const COLLAPSED_INPUT_NAME: "_TEMP_COLLAPSED_INPUT"; + /** + * The language-neutral ID given to the collapsed field. + * @const {string} + * @alias Blockly.constants.COLLAPSED_FIELD_NAME + */ + export const COLLAPSED_FIELD_NAME: "_TEMP_COLLAPSED_FIELD"; +} +declare module "core/bubble_dragger" { + /** + * Class for a bubble dragger. It moves things on the bubble canvas around the + * workspace when they are being dragged by a mouse or touch. These can be + * block comments, mutators, warnings, or workspace comments. + * @alias Blockly.BubbleDragger + */ + export const BubbleDragger: { + new (bubble: () => void, workspace: WorkspaceSvg): { + /** + * The item on the bubble canvas that is being dragged. + * @type {!IBubble} + * @private + */ + draggingBubble_: () => void; + /** + * The workspace on which the bubble is being dragged. + * @type {!WorkspaceSvg} + * @private + */ + workspace_: WorkspaceSvg; + /** + * Which drag target the mouse pointer is over, if any. + * @type {?IDragTarget} + * @private + */ + dragTarget_: (() => void) | null; + /** + * Whether the bubble would be deleted if dropped immediately. + * @type {boolean} + * @private + */ + wouldDeleteBubble_: boolean; + /** + * The location of the top left corner of the dragging bubble's body at the + * beginning of the drag, in workspace coordinates. + * @type {!Coordinate} + * @private + */ + startXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * The drag surface to move bubbles to during a drag, or null if none should + * be used. Block dragging and bubble dragging use the same surface. + * @type {BlockDragSurfaceSvg} + * @private + */ + dragSurface_: { + SVG_: SVGElement | null; + dragGroup_: SVGElement | null; + container_: Element; + scale_: number; + surfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + } | null; + childSurfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + createDom(): void; + setBlocksAndShow(blocks: SVGElement): void; + translateAndScaleGroup(x: number, y: number, scale: number): void; + translateSurfaceInternal_(): void; + translateBy(deltaX: number, deltaY: number): void; + translateSurface(x: number, y: number): void; + getSurfaceTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + getGroup(): SVGElement | null; + getSvgRoot(): SVGElement | null; + getCurrentBlock(): Element | null; + getWsTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + clearAndHide(opt_newSurface?: Element | undefined): void; + }; + /** + * Sever all links from this object. + * @package + * @suppress {checkTypes} + */ + dispose(): void; + /** + * Start dragging a bubble. This includes moving it to the drag surface. + * @package + */ + startBubbleDrag(): void; + /** + * Execute a step of bubble dragging, based on the given event. Update the + * display accordingly. + * @param {!Event} e The most recent move event. + * @param {!Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at the start of the drag, in pixel units. + * @package + */ + dragBubble(e: Event, currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Whether ending the drag would delete the bubble. + * @param {?IDragTarget} dragTarget The drag target that the bubblee is + * currently over. + * @return {boolean} Whether dropping the bubble immediately would delete the + * block. + * @private + */ + shouldDelete_(dragTarget: (() => void) | null): boolean; + /** + * Update the cursor (and possibly the trash can lid) to reflect whether the + * dragging bubble would be deleted if released immediately. + * @private + */ + updateCursorDuringBubbleDrag_(): void; + /** + * Finish a bubble drag and put the bubble back on the workspace. + * @param {!Event} e The mouseup/touchend event. + * @param {!Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at the start of the drag, in pixel units. + * @package + */ + endBubbleDrag(e: Event, currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Fire a move event at the end of a bubble drag. + * @private + */ + fireMoveEvent_(): void; + /** + * Convert a coordinate object from pixels to workspace units, including a + * correction for mutator workspaces. + * This function does not consider differing origins. It simply scales the + * input's x and y values. + * @param {!Coordinate} pixelCoord A coordinate with x and y + * values in CSS pixel units. + * @return {!Coordinate} The input coordinate divided by the + * workspace scale. + * @private + */ + pixelsToWorkspaceUnits_(pixelCoord: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Move the bubble onto the drag surface at the beginning of a drag. Move the + * drag surface to preserve the apparent location of the bubble. + * @private + */ + moveToDragSurface_(): void; + }; + }; + import { WorkspaceSvg } from "core/workspace_svg"; +} +declare module "core/config" { + /** + * Object holding all the values on Blockly that we expect developers to be + * able to change. + * @type {Config} + */ + export const config: Config; + /** + * All the values that we expect developers to be able to change + * before injecting Blockly. + */ + type Config = { + dragRadius: number; + flyoutDragRadius: number; + snapRadius: number; + currentConnectionPreference: number; + bumpDelay: number; + connectingSnapRadius: number; + }; + /** + * All the values that we expect developers to be able to change + * before injecting Blockly. + * @typedef {{ + * dragRadius: number, + * flyoutDragRadius: number, + * snapRadius: number, + * currentConnectionPreference: number, + * bumpDelay: number, + * connectingSnapRadius: number + * }} + */ + let Config: any; + export {}; +} +declare module "core/interfaces/i_block_dragger" { + /** + * A block dragger interface. + * @interface + * @alias Blockly.IBlockDragger + */ + export function IBlockDragger(): void; +} +declare module "core/workspace_dragger" { + /** + * Class for a workspace dragger. It moves the workspace around when it is + * being dragged by a mouse or touch. + * Note that the workspace itself manages whether or not it has a drag surface + * and how to do translations based on that. This simply passes the right + * commands based on events. + * @alias Blockly.WorkspaceDragger + */ + export class WorkspaceDragger { + /** + * @param {!WorkspaceSvg} workspace The workspace to drag. + */ + constructor(workspace: WorkspaceSvg); + /** + * @type {!WorkspaceSvg} + * @private + */ + private workspace_; + /** + * Whether horizontal scroll is enabled. + * @type {boolean} + * @private + */ + private horizontalScrollEnabled_; + /** + * Whether vertical scroll is enabled. + * @type {boolean} + * @private + */ + private verticalScrollEnabled_; + /** + * The scroll position of the workspace at the beginning of the drag. + * Coordinate system: pixel coordinates. + * @type {!Coordinate} + * @protected + */ + protected startScrollXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Sever all links from this object. + * @package + * @suppress {checkTypes} + */ + dispose(): void; + /** + * Start dragging the workspace. + * @package + */ + startDrag(): void; + /** + * Finish dragging the workspace and put everything back where it belongs. + * @param {!Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at the start of the drag, in pixel coordinates. + * @package + */ + endDrag(currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Move the workspace based on the most recent mouse movements. + * @param {!Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at the start of the drag, in pixel coordinates. + * @package + */ + drag(currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + } + import { WorkspaceSvg } from "core/workspace_svg"; +} +declare module "core/events/events_viewport" { + /** + * Class for a viewport change event. + * @extends {UiBase} + * @alias Blockly.Events.ViewportChange + */ + export class ViewportChange extends UiBase { + /** + * @param {number=} opt_top Top-edge of the visible portion of the workspace, + * relative to the workspace origin. Undefined for a blank event. + * @param {number=} opt_left Left-edge of the visible portion of the + * workspace relative to the workspace origin. Undefined for a blank + * event. + * @param {number=} opt_scale The scale of the workspace. Undefined for a + * blank event. + * @param {string=} opt_workspaceId The workspace identifier for this event. + * Undefined for a blank event. + * @param {number=} opt_oldScale The old scale of the workspace. Undefined for + * a blank event. + */ + constructor(opt_top?: number | undefined, opt_left?: number | undefined, opt_scale?: number | undefined, opt_workspaceId?: string | undefined, opt_oldScale?: number | undefined); + /** + * Top-edge of the visible portion of the workspace, relative to the + * workspace origin. + * @type {number|undefined} + */ + viewTop: number | undefined; + /** + * Left-edge of the visible portion of the workspace, relative to the + * workspace origin. + * @type {number|undefined} + */ + viewLeft: number | undefined; + /** + * The scale of the workspace. + * @type {number|undefined} + */ + scale: number | undefined; + /** + * The old scale of the workspace. + * @type {number|undefined} + */ + oldScale: number | undefined; + } + import { UiBase } from "core/events/events_ui_base"; +} +declare module "core/bump_objects" { + /** + * Bumps the given object that has passed out of bounds. + * @param {!WorkspaceSvg} workspace The workspace containing the object. + * @param {!MetricsManager.ContainerRegion} scrollMetrics Scroll metrics + * in workspace coordinates. + * @param {!IBoundedElement} object The object to bump. + * @return {boolean} True if block was bumped. + * @alias Blockly.bumpObjects.bumpIntoBounds + */ + function bumpObjectIntoBounds(workspace: WorkspaceSvg, scrollMetrics: MetricsManager.ContainerRegion, object: () => void): boolean; + /** + * Creates a handler for bumping objects when they cross fixed bounds. + * @param {!WorkspaceSvg} workspace The workspace to handle. + * @return {function(Abstract)} The event handler. + * @alias Blockly.bumpObjects.bumpIntoBoundsHandler + */ + export function bumpIntoBoundsHandler(workspace: WorkspaceSvg): (arg0: Abstract) => any; + /** + * Bumps the top objects in the given workspace into bounds. + * @param {!WorkspaceSvg} workspace The workspace. + * @alias Blockly.bumpObjects.bumpTopObjectsIntoBounds + */ + export function bumpTopObjectsIntoBounds(workspace: WorkspaceSvg): void; + import { WorkspaceSvg } from "core/workspace_svg"; + import { MetricsManager } from "core/metrics_manager"; + import { Abstract } from "core/events/events_abstract"; + export { bumpObjectIntoBounds as bumpIntoBounds }; +} +declare module "core/events/events_block_base" { + /** + * Abstract class for a block event. + * @extends {AbstractEvent} + * @alias Blockly.Events.BlockBase + */ + export class BlockBase extends AbstractEvent { + /** + * @param {!Block=} opt_block The block this event corresponds to. + * Undefined for a blank event. + */ + constructor(opt_block?: Block | undefined); + /** + * The block ID for the block this event pertains to + * @type {string} + */ + blockId: string; + } + import { Abstract as AbstractEvent } from "core/events/events_abstract"; + import { Block } from "core/block"; +} +declare module "core/events/events_block_move" { + /** + * Class for a block move event. Created before the move. + * @extends {BlockBase} + * @alias Blockly.Events.BlockMove + */ + export class BlockMove extends BlockBase { + oldParentId: any; + oldInputName: any; + oldCoordinate: any; + newParentId: any; + newInputName: any; + newCoordinate: any; + /** + * Record the block's new location. Called after the move. + */ + recordNew(): void; + /** + * Returns the parentId and input if the block is connected, + * or the XY location if disconnected. + * @return {!Object} Collection of location info. + * @private + */ + private currentLocation_; + } + import { BlockBase } from "core/events/events_block_base"; +} +declare module "core/utils/svg_paths" { + /** + * Create a string representing the given x, y pair. It does not matter whether + * the coordinate is relative or absolute. The result has leading + * and trailing spaces, and separates the x and y coordinates with a comma but + * no space. + * @param {number} x The x coordinate. + * @param {number} y The y coordinate. + * @return {string} A string of the format ' x,y ' + * @alias Blockly.utils.svgPaths.point + */ + export function point(x: number, y: number): string; + /** + * Draw a cubic or quadratic curve. See + * developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Cubic_B%C3%A9zier_Curve + * These coordinates are unitless and hence in the user coordinate system. + * @param {string} command The command to use. + * Should be one of: c, C, s, S, q, Q. + * @param {!Array} points An array containing all of the points to pass + * to the curve command, in order. The points are represented as strings of + * the format ' x, y '. + * @return {string} A string defining one or more Bezier curves. See the MDN + * documentation for exact format. + * @alias Blockly.utils.svgPaths.curve + */ + export function curve(command: string, points: Array): string; + /** + * Move the cursor to the given position without drawing a line. + * The coordinates are absolute. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands + * @param {number} x The absolute x coordinate. + * @param {number} y The absolute y coordinate. + * @return {string} A string of the format ' M x,y ' + * @alias Blockly.utils.svgPaths.moveTo + */ + export function moveTo(x: number, y: number): string; + /** + * Move the cursor to the given position without drawing a line. + * Coordinates are relative. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands + * @param {number} dx The relative x coordinate. + * @param {number} dy The relative y coordinate. + * @return {string} A string of the format ' m dx,dy ' + * @alias Blockly.utils.svgPaths.moveBy + */ + export function moveBy(dx: number, dy: number): string; + /** + * Draw a line from the current point to the end point, which is the current + * point shifted by dx along the x-axis and dy along the y-axis. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands + * @param {number} dx The relative x coordinate. + * @param {number} dy The relative y coordinate. + * @return {string} A string of the format ' l dx,dy ' + * @alias Blockly.utils.svgPaths.lineTo + */ + export function lineTo(dx: number, dy: number): string; + /** + * Draw multiple lines connecting all of the given points in order. This is + * equivalent to a series of 'l' commands. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands + * @param {!Array} points An array containing all of the points to + * draw lines to, in order. The points are represented as strings of the + * format ' dx,dy '. + * @return {string} A string of the format ' l (dx,dy)+ ' + * @alias Blockly.utils.svgPaths.line + */ + export function line(points: Array): string; + /** + * Draw a horizontal or vertical line. + * The first argument specifies the direction and whether the given position is + * relative or absolute. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#LineTo_path_commands + * @param {string} command The command to prepend to the coordinate. This + * should be one of: V, v, H, h. + * @param {number} val The coordinate to pass to the command. It may be + * absolute or relative. + * @return {string} A string of the format ' command val ' + * @alias Blockly.utils.svgPaths.lineOnAxis + */ + export function lineOnAxis(command: string, val: number): string; + /** + * Draw an elliptical arc curve. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Elliptical_Arc_Curve + * @param {string} command The command string. Either 'a' or 'A'. + * @param {string} flags The flag string. See the MDN documentation for a + * description and examples. + * @param {number} radius The radius of the arc to draw. + * @param {string} point The point to move the cursor to after drawing the arc, + * specified either in absolute or relative coordinates depending on the + * command. + * @return {string} A string of the format 'command radius radius flags point' + * @alias Blockly.utils.svgPaths.arc + */ + export function arc(command: string, flags: string, radius: number, point: string): string; +} +declare module "core/interfaces/i_connection_checker" { + /** + * Class for connection type checking logic. + * @interface + * @alias Blockly.IConnectionChecker + */ + export class IConnectionChecker {} +} +declare module "core/connection_db" { + /** + * Database of connections. + * Connections are stored in order of their vertical component. This way + * connections in an area may be looked up quickly using a binary search. + * @alias Blockly.ConnectionDB + */ + export class ConnectionDB { + /** + * Initialize a set of connection DBs for a workspace. + * @param {!IConnectionChecker} checker The workspace's + * connection checker, used to decide if connections are valid during a + * drag. + * @return {!Array} Array of databases. + */ + static init(checker: () => void): Array; + /** + * @param {!IConnectionChecker} checker The workspace's + * connection type checker, used to decide if connections are valid during + * a drag. + */ + constructor(checker: () => void); + /** + * Array of connections sorted by y position in workspace units. + * @type {!Array} + * @private + */ + private connections_; + /** + * The workspace's connection type checker, used to decide if connections + * are valid during a drag. + * @type {!IConnectionChecker} + * @private + */ + private connectionChecker_; + /** + * Add a connection to the database. Should not already exist in the database. + * @param {!RenderedConnection} connection The connection to be added. + * @param {number} yPos The y position used to decide where to insert the + * connection. + * @package + */ + addConnection(connection: RenderedConnection, yPos: number): void; + /** + * Finds the index of the given connection. + * + * Starts by doing a binary search to find the approximate location, then + * linearly searches nearby for the exact connection. + * @param {!RenderedConnection} conn The connection to find. + * @param {number} yPos The y position used to find the index of the + * connection. + * @return {number} The index of the connection, or -1 if the connection was + * not found. + * @private + */ + private findIndexOfConnection_; + /** + * Finds the correct index for the given y position. + * @param {number} yPos The y position used to decide where to + * insert the connection. + * @return {number} The candidate index. + * @private + */ + private calculateIndexForYPos_; + /** + * Remove a connection from the database. Must already exist in DB. + * @param {!RenderedConnection} connection The connection to be removed. + * @param {number} yPos The y position used to find the index of the + * connection. + * @throws {Error} If the connection cannot be found in the database. + */ + removeConnection(connection: RenderedConnection, yPos: number): void; + /** + * Find all nearby connections to the given connection. + * Type checking does not apply, since this function is used for bumping. + * @param {!RenderedConnection} connection The connection whose + * neighbours should be returned. + * @param {number} maxRadius The maximum radius to another connection. + * @return {!Array} List of connections. + */ + getNeighbours(connection: RenderedConnection, maxRadius: number): Array; + /** + * Is the candidate connection close to the reference connection. + * Extremely fast; only looks at Y distance. + * @param {number} index Index in database of candidate connection. + * @param {number} baseY Reference connection's Y value. + * @param {number} maxRadius The maximum radius to another connection. + * @return {boolean} True if connection is in range. + * @private + */ + private isInYRange_; + /** + * Find the closest compatible connection to this connection. + * @param {!RenderedConnection} conn The connection searching for a compatible + * mate. + * @param {number} maxRadius The maximum radius to another connection. + * @param {!Coordinate} dxy Offset between this connection's + * location in the database and the current location (as a result of + * dragging). + * @return {!{connection: RenderedConnection, radius: number}} + * Contains two properties: 'connection' which is either another + * connection or null, and 'radius' which is the distance. + */ + searchForClosest(conn: RenderedConnection, maxRadius: number, dxy: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): { + connection: RenderedConnection; + radius: number; + }; + } + import { RenderedConnection } from "core/rendered_connection"; +} +declare module "core/rendered_connection" { + /** + * Class for a connection between blocks that may be rendered on screen. + * @extends {Connection} + * @alias Blockly.RenderedConnection + */ + export class RenderedConnection extends Connection { + /** + * @param {!BlockSvg} source The block establishing this connection. + * @param {number} type The type of the connection. + */ + constructor(source: BlockSvg, type: number); + /** + * Connection database for connections of this type on the current + * workspace. + * @const {!ConnectionDB} + * @private + */ + private db_; + /** + * Connection database for connections compatible with this type on the + * current workspace. + * @const {!ConnectionDB} + * @private + */ + private dbOpposite_; + /** + * Workspace units, (0, 0) is top left of block. + * @type {!Coordinate} + * @private + */ + private offsetInBlock_; + /** + * Describes the state of this connection's tracked-ness. + * @type {RenderedConnection.TrackedState} + * @private + */ + private trackedState_; + /** + * Returns the distance between this connection and another connection in + * workspace units. + * @param {!Connection} otherConnection The other connection to measure + * the distance to. + * @return {number} The distance between connections, in workspace units. + */ + distanceFrom(otherConnection: Connection): number; + /** + * Move the block(s) belonging to the connection to a point where they don't + * visually interfere with the specified connection. + * @param {!RenderedConnection} staticConnection The connection to move away + * from. + * @package + */ + bumpAwayFrom(staticConnection: RenderedConnection): void; + /** + * Change the connection's coordinates. + * @param {number} x New absolute x coordinate, in workspace coordinates. + * @param {number} y New absolute y coordinate, in workspace coordinates. + */ + moveTo(x: number, y: number): void; + /** + * Change the connection's coordinates. + * @param {number} dx Change to x coordinate, in workspace units. + * @param {number} dy Change to y coordinate, in workspace units. + */ + moveBy(dx: number, dy: number): void; + /** + * Move this connection to the location given by its offset within the block + * and the location of the block's top left corner. + * @param {!Coordinate} blockTL The location of the top left + * corner of the block, in workspace coordinates. + */ + moveToOffset(blockTL: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Set the offset of this connection relative to the top left of its block. + * @param {number} x The new relative x, in workspace units. + * @param {number} y The new relative y, in workspace units. + */ + setOffsetInBlock(x: number, y: number): void; + /** + * Get the offset of this connection relative to the top left of its block. + * @return {!Coordinate} The offset of the connection. + * @package + */ + getOffsetInBlock(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Move the blocks on either side of this connection right next to each other. + * @package + */ + tighten(): void; + /** + * Find the closest compatible connection to this connection. + * All parameters are in workspace units. + * @param {number} maxLimit The maximum radius to another connection. + * @param {!Coordinate} dxy Offset between this connection's location + * in the database and the current location (as a result of dragging). + * @return {!{connection: ?Connection, radius: number}} Contains two + * properties: 'connection' which is either another connection or null, + * and 'radius' which is the distance. + */ + closest(maxLimit: number, dxy: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): { + connection: Connection | null; + radius: number; + }; + /** + * Add highlighting around this connection. + */ + highlight(): void; + /** + * Remove the highlighting around this connection. + */ + unhighlight(): void; + /** + * Set whether this connections is tracked in the database or not. + * @param {boolean} doTracking If true, start tracking. If false, stop + * tracking. + * @package + */ + setTracking(doTracking: boolean): void; + /** + * Stop tracking this connection, as well as all down-stream connections on + * any block attached to this connection. This happens when a block is + * collapsed. + * + * Also closes down-stream icons/bubbles. + * @package + */ + stopTrackingAll(): void; + /** + * Start tracking this connection, as well as all down-stream connections on + * any block attached to this connection. This happens when a block is + * expanded. + * @return {!Array} List of blocks to render. + */ + startTrackingAll(): Array; + } + export namespace RenderedConnection { + namespace TrackedState { + const WILL_TRACK: number; + const UNTRACKED: number; + const TRACKED: number; + } + /** + * Enum for different kinds of tracked states. + * + * WILL_TRACK means that this connection will add itself to + * the db on the next moveTo call it receives. + * + * UNTRACKED means that this connection will not add + * itself to the database until setTracking(true) is explicitly called. + * + * TRACKED means that this connection is currently being tracked. + */ + type TrackedState = number; + } + import { Connection } from "core/connection"; + import { Block } from "core/block"; + import { BlockSvg } from "core/block_svg"; +} +declare module "core/insertion_marker_manager" { + /** + * Class that controls updates to connections during drags. It is primarily + * responsible for finding the closest eligible connection and highlighting or + * unhighlighting it as needed during a drag. + * @alias Blockly.InsertionMarkerManager + */ + export class InsertionMarkerManager { + /** + * @param {!BlockSvg} block The top block in the stack being dragged. + */ + constructor(block: BlockSvg); + /** + * The top block in the stack being dragged. + * Does not change during a drag. + * @type {!BlockSvg} + * @private + */ + private topBlock_; + /** + * The workspace on which these connections are being dragged. + * Does not change during a drag. + * @type {!WorkspaceSvg} + * @private + */ + private workspace_; + /** + * The last connection on the stack, if it's not the last connection on the + * first block. + * Set in initAvailableConnections, if at all. + * @type {RenderedConnection} + * @private + */ + private lastOnStack_; + /** + * The insertion marker corresponding to the last block in the stack, if + * that's not the same as the first block in the stack. + * Set in initAvailableConnections, if at all + * @type {BlockSvg} + * @private + */ + private lastMarker_; + /** + * The insertion marker that shows up between blocks to show where a block + * would go if dropped immediately. + * @type {BlockSvg} + * @private + */ + private firstMarker_; + /** + * The connection that this block would connect to if released immediately. + * Updated on every mouse move. + * This is not on any of the blocks that are being dragged. + * @type {RenderedConnection} + * @private + */ + private closestConnection_; + /** + * The connection that would connect to this.closestConnection_ if this + * block were released immediately. Updated on every mouse move. This is on + * the top block that is being dragged or the last block in the dragging + * stack. + * @type {RenderedConnection} + * @private + */ + private localConnection_; + /** + * Whether the block would be deleted if it were dropped immediately. + * Updated on every mouse move. + * @type {boolean} + * @private + */ + private wouldDeleteBlock_; + /** + * Connection on the insertion marker block that corresponds to + * this.localConnection_ on the currently dragged block. + * @type {RenderedConnection} + * @private + */ + private markerConnection_; + /** + * The block that currently has an input being highlighted, or null. + * @type {BlockSvg} + * @private + */ + private highlightedBlock_; + /** + * The block being faded to indicate replacement, or null. + * @type {BlockSvg} + * @private + */ + private fadedBlock_; + /** + * The connections on the dragging blocks that are available to connect to + * other blocks. This includes all open connections on the top block, as + * well as the last connection on the block stack. Does not change during a + * drag. + * @type {!Array} + * @private + */ + private availableConnections_; + /** + * Sever all links from this object. + * @package + */ + dispose(): void; + /** + * Update the available connections for the top block. These connections can + * change if a block is unplugged and the stack is healed. + * @package + */ + updateAvailableConnections(): void; + /** + * Return whether the block would be deleted if dropped immediately, based on + * information from the most recent move event. + * @return {boolean} True if the block would be deleted if dropped + * immediately. + * @package + */ + wouldDeleteBlock(): boolean; + /** + * Return whether the block would be connected if dropped immediately, based + * on information from the most recent move event. + * @return {boolean} True if the block would be connected if dropped + * immediately. + * @package + */ + wouldConnectBlock(): boolean; + /** + * Connect to the closest connection and render the results. + * This should be called at the end of a drag. + * @package + */ + applyConnections(): void; + /** + * Update connections based on the most recent move location. + * @param {!Coordinate} dxy Position relative to drag start, + * in workspace units. + * @param {?IDragTarget} dragTarget The drag target that the block is + * currently over. + * @package + */ + update(dxy: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }, dragTarget: (() => void) | null): void; + /** + * Create an insertion marker that represents the given block. + * @param {!BlockSvg} sourceBlock The block that the insertion marker + * will represent. + * @return {!BlockSvg} The insertion marker that represents the given + * block. + * @private + */ + private createMarkerBlock_; + /** + * Populate the list of available connections on this block stack. This + * should only be called once, at the beginning of a drag. If the stack has + * more than one block, this function will populate lastOnStack_ and create + * the corresponding insertion marker. + * @return {!Array} A list of available + * connections. + * @private + */ + private initAvailableConnections_; + /** + * Whether the previews (insertion marker and replacement marker) should be + * updated based on the closest candidate and the current drag distance. + * @param {!Object} candidate An object containing a local connection, a + * closest connection, and a radius. Returned by getCandidate_. + * @param {!Coordinate} dxy Position relative to drag start, + * in workspace units. + * @return {boolean} Whether the preview should be updated. + * @private + */ + private shouldUpdatePreviews_; + /** + * Find the nearest valid connection, which may be the same as the current + * closest connection. + * @param {!Coordinate} dxy Position relative to drag start, + * in workspace units. + * @return {!Object} An object containing a local connection, a closest + * connection, and a radius. + * @private + */ + private getCandidate_; + /** + * Decide the radius at which to start searching for the closest connection. + * @return {number} The radius at which to start the search for the closest + * connection. + * @private + */ + private getStartRadius_; + /** + * Whether ending the drag would delete the block. + * @param {!Object} candidate An object containing a local connection, a + * closest + * connection, and a radius. + * @param {?IDragTarget} dragTarget The drag target that the block is + * currently over. + * @return {boolean} Whether dropping the block immediately would delete the + * block. + * @private + */ + private shouldDelete_; + /** + * Show an insertion marker or replacement highlighting during a drag, if + * needed. + * At the beginning of this function, this.localConnection_ and + * this.closestConnection_ should both be null. + * @param {!Object} candidate An object containing a local connection, a + * closest connection, and a radius. + * @private + */ + private maybeShowPreview_; + /** + * A preview should be shown. This function figures out if it should be a + * block highlight or an insertion marker, and shows the appropriate one. + * @private + */ + private showPreview_; + /** + * Show an insertion marker or replacement highlighting during a drag, if + * needed. + * At the end of this function, this.localConnection_ and + * this.closestConnection_ should both be null. + * @param {!Object} candidate An object containing a local connection, a + * closest connection, and a radius. + * @private + */ + private maybeHidePreview_; + /** + * A preview should be hidden. This function figures out if it is a block + * highlight or an insertion marker, and hides the appropriate one. + * @private + */ + private hidePreview_; + /** + * Shows an insertion marker connected to the appropriate blocks (based on + * manager state). + * @private + */ + private showInsertionMarker_; + /** + * Disconnects and hides the current insertion marker. Should return the + * blocks to their original state. + * @private + */ + private hideInsertionMarker_; + /** + * Shows an outline around the input the closest connection belongs to. + * @private + */ + private showInsertionInputOutline_; + /** + * Hides any visible input outlines. + * @private + */ + private hideInsertionInputOutline_; + /** + * Shows a replacement fade affect on the closest connection's target block + * (the block that is currently connected to it). + * @private + */ + private showReplacementFade_; + /** + * Hides/Removes any visible fade affects. + * @private + */ + private hideReplacementFade_; + /** + * Get a list of the insertion markers that currently exist. Drags have 0, 1, + * or 2 insertion markers. + * @return {!Array} A possibly empty list of insertion + * marker blocks. + * @package + */ + getInsertionMarkers(): Array; + } + export namespace InsertionMarkerManager { + namespace PREVIEW_TYPE { + const INSERTION_MARKER: number; + const INPUT_OUTLINE: number; + const REPLACEMENT_FADE: number; + } + /** + * An enum describing different kinds of previews the InsertionMarkerManager + * could display. + */ + type PREVIEW_TYPE = number; + } + import { BlockSvg } from "core/block_svg"; +} +declare module "core/events/events_block_drag" { + /** + * Class for a block drag event. + * @extends {UiBase} + * @alias Blockly.Events.BlockDrag + */ + export class BlockDrag extends UiBase { + /** + * @param {!Block=} opt_block The top block in the stack that is being + * dragged. Undefined for a blank event. + * @param {boolean=} opt_isStart Whether this is the start of a block drag. + * Undefined for a blank event. + * @param {!Array=} opt_blocks The blocks affected by this + * drag. Undefined for a blank event. + */ + constructor(opt_block?: Block | undefined, opt_isStart?: boolean | undefined, opt_blocks?: Array | undefined); + blockId: string | null; + /** + * Whether this is the start of a block drag. + * @type {boolean|undefined} + */ + isStart: boolean | undefined; + /** + * The blocks affected by this drag event. + * @type {!Array|undefined} + */ + blocks: Array | undefined; + } + import { UiBase } from "core/events/events_ui_base"; + import { Block } from "core/block"; +} +declare module "core/block_dragger" { + /** + * Class for a block dragger. It moves blocks around the workspace when they + * are being dragged by a mouse or touch. + * @implements {IBlockDragger} + * @alias Blockly.BlockDragger + */ + export const BlockDragger: { + new (block: BlockSvg, workspace: WorkspaceSvg): { + /** + * The top block in the stack that is being dragged. + * @type {!BlockSvg} + * @protected + */ + draggingBlock_: BlockSvg; + /** + * The workspace on which the block is being dragged. + * @type {!WorkspaceSvg} + * @protected + */ + workspace_: WorkspaceSvg; + /** + * Object that keeps track of connections on dragged blocks. + * @type {!InsertionMarkerManager} + * @protected + */ + draggedConnectionManager_: InsertionMarkerManager; + /** + * Which drag area the mouse pointer is over, if any. + * @type {?IDragTarget} + * @private + */ + dragTarget_: (() => void) | null; + /** + * Whether the block would be deleted if dropped immediately. + * @type {boolean} + * @protected + */ + wouldDeleteBlock_: boolean; + /** + * The location of the top left corner of the dragging block at the + * beginning of the drag in workspace coordinates. + * @type {!Coordinate} + * @protected + */ + startXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * A list of all of the icons (comment, warning, and mutator) that are + * on this block and its descendants. Moving an icon moves the bubble that + * extends from it if that bubble is open. + * @type {Array} + * @protected + */ + dragIconData_: Array; + /** + * Sever all links from this object. + * @package + */ + dispose(): void; + /** + * Start dragging a block. This includes moving it to the drag surface. + * @param {!Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at mouse down, in pixel units. + * @param {boolean} healStack Whether or not to heal the stack after + * disconnecting. + * @public + */ + startDrag(currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }, healStack: boolean): void; + /** + * Whether or not we should disconnect the block when a drag is started. + * @param {boolean} healStack Whether or not to heal the stack after + * disconnecting. + * @return {boolean} True to disconnect the block, false otherwise. + * @protected + */ + shouldDisconnect_(healStack: boolean): boolean; + /** + * Disconnects the block and moves it to a new location. + * @param {boolean} healStack Whether or not to heal the stack after + * disconnecting. + * @param {!Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at mouse down, in pixel units. + * @protected + */ + disconnectBlock_(healStack: boolean, currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Fire a UI event at the start of a block drag. + * @protected + */ + fireDragStartEvent_(): void; + /** + * Execute a step of block dragging, based on the given event. Update the + * display accordingly. + * @param {!Event} e The most recent move event. + * @param {!Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at the start of the drag, in pixel units. + * @public + */ + drag(e: Event, currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Finish a block drag and put the block back on the workspace. + * @param {!Event} e The mouseup/touchend event. + * @param {!Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at the start of the drag, in pixel units. + * @public + */ + endDrag(e: Event, currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Calculates the drag delta and new location values after a block is dragged. + * @param {!Coordinate} currentDragDeltaXY How far the pointer has + * moved from the start of the drag, in pixel units. + * @return {{delta: !Coordinate, newLocation: + * !Coordinate}} New location after drag. delta is in + * workspace units. newLocation is the new coordinate where the block + * should end up. + * @protected + */ + getNewLocationAfterDrag_(currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): { + delta: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + newLocation: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + }; + /** + * May delete the dragging block, if allowed. If `this.wouldDeleteBlock_` is + * not true, the block will not be deleted. This should be called at the end + * of a block drag. + * @return {boolean} True if the block was deleted. + * @protected + */ + maybeDeleteBlock_(): boolean; + /** + * Updates the necessary information to place a block at a certain location. + * @param {!Coordinate} delta The change in location from where + * the block started the drag to where it ended the drag. + * @protected + */ + updateBlockAfterMove_(delta: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Fire a UI event at the end of a block drag. + * @protected + */ + fireDragEndEvent_(): void; + /** + * Adds or removes the style of the cursor for the toolbox. + * This is what changes the cursor to display an x when a deletable block is + * held over the toolbox. + * @param {boolean} isEnd True if we are at the end of a drag, false + * otherwise. + * @protected + */ + updateToolboxStyle_(isEnd: boolean): void; + /** + * Fire a move event at the end of a block drag. + * @protected + */ + fireMoveEvent_(): void; + /** + * Update the cursor (and possibly the trash can lid) to reflect whether the + * dragging block would be deleted if released immediately. + * @protected + */ + updateCursorDuringBlockDrag_(): void; + /** + * Convert a coordinate object from pixels to workspace units, including a + * correction for mutator workspaces. + * This function does not consider differing origins. It simply scales the + * input's x and y values. + * @param {!Coordinate} pixelCoord A coordinate with x and y + * values in CSS pixel units. + * @return {!Coordinate} The input coordinate divided by the + * workspace scale. + * @protected + */ + pixelsToWorkspaceUnits_(pixelCoord: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + /** + * Move all of the icons connected to this drag. + * @param {!Coordinate} dxy How far to move the icons from their + * original positions, in workspace units. + * @protected + */ + dragIcons_(dxy: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + /** + * Get a list of the insertion markers that currently exist. Drags have 0, 1, + * or 2 insertion markers. + * @return {!Array} A possibly empty list of insertion + * marker blocks. + * @public + */ + getInsertionMarkers(): Array; + }; + }; + import { BlockSvg } from "core/block_svg"; + import { WorkspaceSvg } from "core/workspace_svg"; + import { InsertionMarkerManager } from "core/insertion_marker_manager"; +} +declare module "core/events/events_click" { + /** + * Class for a click event. + * @extends {UiBase} + * @alias Blockly.Events.Click + */ + export class Click extends UiBase { + /** + * @param {?Block=} opt_block The affected block. Null for click events + * that do not have an associated block (i.e. workspace click). Undefined + * for a blank event. + * @param {?string=} opt_workspaceId The workspace identifier for this event. + * Not used if block is passed. Undefined for a blank event. + * @param {string=} opt_targetType The type of element targeted by this click + * event. Undefined for a blank event. + */ + constructor(opt_block?: (Block | null) | undefined, opt_workspaceId?: (string | null) | undefined, opt_targetType?: string | undefined); + blockId: string | null; + /** + * The type of element targeted by this click event. + * @type {string|undefined} + */ + targetType: string | undefined; + } + import { UiBase } from "core/events/events_ui_base"; + import { Block } from "core/block"; +} +declare module "core/gesture" { + /** + * Note: In this file "start" refers to touchstart, mousedown, and pointerstart + * events. "End" refers to touchend, mouseup, and pointerend events. + */ + /** + * Class for one gesture. + * @alias Blockly.Gesture + */ + export class Gesture { + /** + * Is a drag or other gesture currently in progress on any workspace? + * @return {boolean} True if gesture is occurring. + */ + static inProgress(): boolean; + /** + * @param {!Event} e The event that kicked off this gesture. + * @param {!WorkspaceSvg} creatorWorkspace The workspace that created + * this gesture and has a reference to it. + */ + constructor(e: Event, creatorWorkspace: WorkspaceSvg); + /** + * The position of the mouse when the gesture started. Units are CSS + * pixels, with (0, 0) at the top left of the browser window (mouseEvent + * clientX/Y). + * @type {Coordinate} + * @private + */ + private mouseDownXY_; + /** + * How far the mouse has moved during this drag, in pixel units. + * (0, 0) is at this.mouseDownXY_. + * @type {!Coordinate} + * @private + */ + private currentDragDeltaXY_; + /** + * The bubble that the gesture started on, or null if it did not start on a + * bubble. + * @type {IBubble} + * @private + */ + private startBubble_; + /** + * The field that the gesture started on, or null if it did not start on a + * field. + * @type {Field} + * @private + */ + private startField_; + /** + * The block that the gesture started on, or null if it did not start on a + * block. + * @type {BlockSvg} + * @private + */ + private startBlock_; + /** + * The block that this gesture targets. If the gesture started on a + * shadow block, this is the first non-shadow parent of the block. If the + * gesture started in the flyout, this is the root block of the block group + * that was clicked or dragged. + * @type {BlockSvg} + * @private + */ + private targetBlock_; + /** + * The workspace that the gesture started on. There may be multiple + * workspaces on a page; this is more accurate than using + * Blockly.common.getMainWorkspace(). + * @type {WorkspaceSvg} + * @protected + */ + protected startWorkspace_: WorkspaceSvg; + /** + * The workspace that created this gesture. This workspace keeps a + * reference to the gesture, which will need to be cleared at deletion. This + * may be different from the start workspace. For instance, a flyout is a + * workspace, but its parent workspace manages gestures for it. + * @type {!WorkspaceSvg} + * @private + */ + private creatorWorkspace_; + /** + * Whether the pointer has at any point moved out of the drag radius. + * A gesture that exceeds the drag radius is a drag even if it ends exactly + * at its start point. + * @type {boolean} + * @private + */ + private hasExceededDragRadius_; + /** + * Whether the workspace is currently being dragged. + * @type {boolean} + * @private + */ + private isDraggingWorkspace_; + /** + * Whether the block is currently being dragged. + * @type {boolean} + * @private + */ + private isDraggingBlock_; + /** + * Whether the bubble is currently being dragged. + * @type {boolean} + * @private + */ + private isDraggingBubble_; + /** + * The event that most recently updated this gesture. + * @type {!Event} + * @private + */ + private mostRecentEvent_; + /** + * A handle to use to unbind a mouse move listener at the end of a drag. + * Opaque data returned from Blockly.bindEventWithChecks_. + * @type {?browserEvents.Data} + * @protected + */ + protected onMoveWrapper_: any[][] | null; + /** + * A handle to use to unbind a mouse up listener at the end of a drag. + * Opaque data returned from Blockly.bindEventWithChecks_. + * @type {?browserEvents.Data} + * @protected + */ + protected onUpWrapper_: any[][] | null; + /** + * The object tracking a bubble drag, or null if none is in progress. + * @type {BubbleDragger} + * @private + */ + private bubbleDragger_; + /** + * The object tracking a block drag, or null if none is in progress. + * @type {?IBlockDragger} + * @private + */ + private blockDragger_; + /** + * The object tracking a workspace or flyout workspace drag, or null if none + * is in progress. + * @type {WorkspaceDragger} + * @private + */ + private workspaceDragger_; + /** + * The flyout a gesture started in, if any. + * @type {IFlyout} + * @private + */ + private flyout_; + /** + * Boolean for sanity-checking that some code is only called once. + * @type {boolean} + * @private + */ + private calledUpdateIsDragging_; + /** + * Boolean for sanity-checking that some code is only called once. + * @type {boolean} + * @private + */ + private hasStarted_; + /** + * Boolean used internally to break a cycle in disposal. + * @type {boolean} + * @protected + */ + protected isEnding_: boolean; + /** + * Boolean used to indicate whether or not to heal the stack after + * disconnecting a block. + * @type {boolean} + * @private + */ + private healStack_; + /** + * Sever all links from this object. + * @package + */ + dispose(): void; + /** + * Update internal state based on an event. + * @param {!Event} e The most recent mouse or touch event. + * @private + */ + private updateFromEvent_; + /** + * DO MATH to set currentDragDeltaXY_ based on the most recent mouse position. + * @param {!Coordinate} currentXY The most recent mouse/pointer + * position, in pixel units, with (0, 0) at the window's top left corner. + * @return {boolean} True if the drag just exceeded the drag radius for the + * first time. + * @private + */ + private updateDragDelta_; + /** + * Update this gesture to record whether a block is being dragged from the + * flyout. + * This function should be called on a mouse/touch move event the first time + * the drag radius is exceeded. It should be called no more than once per + * gesture. If a block should be dragged from the flyout this function creates + * the new block on the main workspace and updates targetBlock_ and + * startWorkspace_. + * @return {boolean} True if a block is being dragged from the flyout. + * @private + */ + private updateIsDraggingFromFlyout_; + /** + * Update this gesture to record whether a bubble is being dragged. + * This function should be called on a mouse/touch move event the first time + * the drag radius is exceeded. It should be called no more than once per + * gesture. If a bubble should be dragged this function creates the necessary + * BubbleDragger and starts the drag. + * @return {boolean} True if a bubble is being dragged. + * @private + */ + private updateIsDraggingBubble_; + /** + * Update this gesture to record whether a block is being dragged. + * This function should be called on a mouse/touch move event the first time + * the drag radius is exceeded. It should be called no more than once per + * gesture. If a block should be dragged, either from the flyout or in the + * workspace, this function creates the necessary BlockDragger and starts the + * drag. + * @return {boolean} True if a block is being dragged. + * @private + */ + private updateIsDraggingBlock_; + /** + * Update this gesture to record whether a workspace is being dragged. + * This function should be called on a mouse/touch move event the first time + * the drag radius is exceeded. It should be called no more than once per + * gesture. If a workspace is being dragged this function creates the + * necessary WorkspaceDragger and starts the drag. + * @private + */ + private updateIsDraggingWorkspace_; + /** + * Update this gesture to record whether anything is being dragged. + * This function should be called on a mouse/touch move event the first time + * the drag radius is exceeded. It should be called no more than once per + * gesture. + * @private + */ + private updateIsDragging_; + /** + * Create a block dragger and start dragging the selected block. + * @private + */ + private startDraggingBlock_; + /** + * Create a bubble dragger and start dragging the selected bubble. + * @private + */ + private startDraggingBubble_; + /** + * Start a gesture: update the workspace to indicate that a gesture is in + * progress and bind mousemove and mouseup handlers. + * @param {!Event} e A mouse down or touch start event. + * @package + */ + doStart(e: Event): void; + /** + * Bind gesture events. + * @param {!Event} e A mouse down or touch start event. + * @package + */ + bindMouseEvents(e: Event): void; + /** + * Handle a mouse move or touch move event. + * @param {!Event} e A mouse move or touch move event. + * @package + */ + handleMove(e: Event): void; + /** + * Handle a mouse up or touch end event. + * @param {!Event} e A mouse up or touch end event. + * @package + */ + handleUp(e: Event): void; + /** + * Cancel an in-progress gesture. If a workspace or block drag is in + * progress, end the drag at the most recent location. + * @package + */ + cancel(): void; + /** + * Handle a real or faked right-click event by showing a context menu. + * @param {!Event} e A mouse move or touch move event. + * @package + */ + handleRightClick(e: Event): void; + /** + * Handle a mousedown/touchstart event on a workspace. + * @param {!Event} e A mouse down or touch start event. + * @param {!WorkspaceSvg} ws The workspace the event hit. + * @package + */ + handleWsStart(e: Event, ws: WorkspaceSvg): void; + /** + * Fires a workspace click event. + * @param {!WorkspaceSvg} ws The workspace that a user clicks on. + * @private + */ + private fireWorkspaceClick_; + /** + * Handle a mousedown/touchstart event on a flyout. + * @param {!Event} e A mouse down or touch start event. + * @param {!IFlyout} flyout The flyout the event hit. + * @package + */ + handleFlyoutStart(e: Event, flyout: IFlyout): void; + /** + * Handle a mousedown/touchstart event on a block. + * @param {!Event} e A mouse down or touch start event. + * @param {!BlockSvg} block The block the event hit. + * @package + */ + handleBlockStart(e: Event, block: BlockSvg): void; + /** + * Handle a mousedown/touchstart event on a bubble. + * @param {!Event} e A mouse down or touch start event. + * @param {!IBubble} bubble The bubble the event hit. + * @package + */ + handleBubbleStart(e: Event, bubble: () => void): void; + /** + * Execute a bubble click. + * @private + */ + private doBubbleClick_; + /** + * Execute a field click. + * @private + */ + private doFieldClick_; + /** + * Execute a block click. + * @private + */ + private doBlockClick_; + /** + * Execute a workspace click. When in accessibility mode shift clicking will + * move the cursor. + * @param {!Event} _e A mouse up or touch end event. + * @private + */ + private doWorkspaceClick_; + /** + * Move the dragged/clicked block to the front of the workspace so that it is + * not occluded by other blocks. + * @private + */ + private bringBlockToFront_; + /** + * Record the field that a gesture started on. + * @param {Field} field The field the gesture started on. + * @package + */ + setStartField(field: Field): void; + /** + * Record the bubble that a gesture started on + * @param {IBubble} bubble The bubble the gesture started on. + * @package + */ + setStartBubble(bubble: () => void): void; + /** + * Record the block that a gesture started on, and set the target block + * appropriately. + * @param {BlockSvg} block The block the gesture started on. + * @package + */ + setStartBlock(block: BlockSvg): void; + /** + * Record the block that a gesture targets, meaning the block that will be + * dragged if this turns into a drag. If this block is a shadow, that will be + * its first non-shadow parent. + * @param {BlockSvg} block The block the gesture targets. + * @private + */ + private setTargetBlock_; + /** + * Record the workspace that a gesture started on. + * @param {WorkspaceSvg} ws The workspace the gesture started on. + * @private + */ + private setStartWorkspace_; + /** + * Record the flyout that a gesture started on. + * @param {IFlyout} flyout The flyout the gesture started on. + * @private + */ + private setStartFlyout_; + /** + * Whether this gesture is a click on a bubble. This should only be called + * when ending a gesture (mouse up, touch end). + * @return {boolean} Whether this gesture was a click on a bubble. + * @private + */ + private isBubbleClick_; + /** + * Whether this gesture is a click on a block. This should only be called + * when ending a gesture (mouse up, touch end). + * @return {boolean} Whether this gesture was a click on a block. + * @private + */ + private isBlockClick_; + /** + * Whether this gesture is a click on a field. This should only be called + * when ending a gesture (mouse up, touch end). + * @return {boolean} Whether this gesture was a click on a field. + * @private + */ + private isFieldClick_; + /** + * Whether this gesture is a click on a workspace. This should only be called + * when ending a gesture (mouse up, touch end). + * @return {boolean} Whether this gesture was a click on a workspace. + * @private + */ + private isWorkspaceClick_; + /** + * Whether this gesture is a drag of either a workspace or block. + * This function is called externally to block actions that cannot be taken + * mid-drag (e.g. using the keyboard to delete the selected blocks). + * @return {boolean} True if this gesture is a drag of a workspace or block. + * @package + */ + isDragging(): boolean; + /** + * Whether this gesture has already been started. In theory every mouse down + * has a corresponding mouse up, but in reality it is possible to lose a + * mouse up, leaving an in-process gesture hanging. + * @return {boolean} Whether this gesture was a click on a workspace. + * @package + */ + hasStarted(): boolean; + /** + * Get a list of the insertion markers that currently exist. Block drags have + * 0, 1, or 2 insertion markers. + * @return {!Array} A possibly empty list of insertion + * marker blocks. + * @package + */ + getInsertionMarkers(): Array; + /** + * Gets the current dragger if an item is being dragged. Null if nothing is + * being dragged. + * @return {!WorkspaceDragger|!BubbleDragger|!IBlockDragger|null} + * The dragger that is currently in use or null if no drag is in progress. + */ + getCurrentDragger(): WorkspaceDragger | { + draggingBubble_: () => void; + workspace_: WorkspaceSvg; + dragTarget_: (() => void) | null; + wouldDeleteBubble_: boolean; + startXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + dragSurface_: { + SVG_: SVGElement | null; + dragGroup_: SVGElement | null; + container_: Element; + scale_: number; + surfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + } | null; + childSurfaceXY_: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + createDom(): void; + setBlocksAndShow(blocks: SVGElement): void; + translateAndScaleGroup(x: number, y: number, scale: number): void; + translateSurfaceInternal_(): void; + translateBy(deltaX: number, deltaY: number): void; + translateSurface(x: number, y: number): void; + getSurfaceTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + getGroup(): SVGElement | null; + getSvgRoot(): SVGElement | null; + getCurrentBlock(): Element | null; + getWsTranslation(): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + clearAndHide(opt_newSurface?: Element | undefined): void; + }; + dispose(): void; + startBubbleDrag(): void; + dragBubble(e: Event, currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + shouldDelete_(dragTarget: (() => void) | null): boolean; + updateCursorDuringBubbleDrag_(): void; + endBubbleDrag(e: Event, currentDragDeltaXY: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): void; + fireMoveEvent_(): void; + pixelsToWorkspaceUnits_(pixelCoord: { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }): { + x: number; + y: number; + clone(): any; + scale(s: number): any; + translate(tx: number, ty: number): any; + }; + moveToDragSurface_(): void; + } | (() => void) | null; + } + import { WorkspaceSvg } from "core/workspace_svg"; + import { IFlyout } from "core/interfaces/i_flyout"; + import { BlockSvg } from "core/block_svg"; + import { Field } from "core/field"; + import { WorkspaceDragger } from "core/workspace_dragger"; +} +declare module "core/touch" { + /** + * Whether touch is enabled in the browser. + * Copied from Closure's goog.events.BrowserFeature.TOUCH_ENABLED + * @const + */ + export const TOUCH_ENABLED: boolean; + /** + * The TOUCH_MAP lookup dictionary specifies additional touch events to fire, + * in conjunction with mouse events. + * @type {Object} + * @alias Blockly.Touch.TOUCH_MAP + */ + export let TOUCH_MAP: Object; + /** + * Context menus on touch devices are activated using a long-press. + * Unfortunately the contextmenu touch event is currently (2015) only supported + * by Chrome. This function is fired on any touchstart event, queues a task, + * which after about a second opens the context menu. The tasks is killed + * if the touch event terminates early. + * @param {!Event} e Touch start event. + * @param {Gesture} gesture The gesture that triggered this longStart. + * @alias Blockly.Touch.longStart + * @package + */ + export function longStart(e: Event, gesture: Gesture): void; + /** + * Nope, that's not a long-press. Either touchend or touchcancel was fired, + * or a drag hath begun. Kill the queued long-press task. + * @alias Blockly.Touch.longStop + * @package + */ + export function longStop(): void; + /** + * Clear the touch identifier that tracks which touch stream to pay attention + * to. This ends the current drag/gesture and allows other pointers to be + * captured. + * @alias Blockly.Touch.clearTouchIdentifier + */ + export function clearTouchIdentifier(): void; + /** + * Decide whether Blockly should handle or ignore this event. + * Mouse and touch events require special checks because we only want to deal + * with one touch stream at a time. All other events should always be handled. + * @param {!Event} e The event to check. + * @return {boolean} True if this event should be passed through to the + * registered handler; false if it should be blocked. + * @alias Blockly.Touch.shouldHandleEvent + */ + export function shouldHandleEvent(e: Event): boolean; + /** + * Get the touch identifier from the given event. If it was a mouse event, the + * identifier is the string 'mouse'. + * @param {!Event} e Mouse event or touch event. + * @return {string} The touch identifier from the first changed touch, if + * defined. Otherwise 'mouse'. + * @alias Blockly.Touch.getTouchIdentifierFromEvent + */ + export function getTouchIdentifierFromEvent(e: Event): string; + /** + * Check whether the touch identifier on the event matches the current saved + * identifier. If there is no identifier, that means it's a mouse event and + * we'll use the identifier "mouse". This means we won't deal well with + * multiple mice being used at the same time. That seems okay. + * If the current identifier was unset, save the identifier from the + * event. This starts a drag/gesture, during which touch events with other + * identifiers will be silently ignored. + * @param {!Event} e Mouse event or touch event. + * @return {boolean} Whether the identifier on the event matches the current + * saved identifier. + * @alias Blockly.Touch.checkTouchIdentifier + */ + export function checkTouchIdentifier(e: Event): boolean; + /** + * Set an event's clientX and clientY from its first changed touch. Use this to + * make a touch event work in a mouse event handler. + * @param {!Event} e A touch event. + * @alias Blockly.Touch.setClientFromTouch + */ + export function setClientFromTouch(e: Event): void; + /** + * Check whether a given event is a mouse or touch event. + * @param {!Event} e An event. + * @return {boolean} True if it is a mouse or touch event; false otherwise. + * @alias Blockly.Touch.isMouseOrTouchEvent + */ + export function isMouseOrTouchEvent(e: Event): boolean; + /** + * Check whether a given event is a touch event or a pointer event. + * @param {!Event} e An event. + * @return {boolean} True if it is a touch event; false otherwise. + * @alias Blockly.Touch.isTouchEvent + */ + export function isTouchEvent(e: Event): boolean; + /** + * Split an event into an array of events, one per changed touch or mouse + * point. + * @param {!Event} e A mouse event or a touch event with one or more changed + * touches. + * @return {!Array} An array of mouse or touch events. Each touch + * event will have exactly one changed touch. + * @alias Blockly.Touch.splitEventByTouches + */ + export function splitEventByTouches(e: Event): Array; + import { Gesture } from "core/gesture"; +} +declare module "core/browser_events" { + /** + * Blockly opaque event data used to unbind events when using + * `bind` and `conditionalBind`. + */ + export type Data = Array; + /** + * Blockly opaque event data used to unbind events when using + * `bind` and `conditionalBind`. + * @typedef {!Array} + * @alias Blockly.browserEvents.Data + */ + export let Data: any; + /** + * Bind an event handler that can be ignored if it is not part of the active + * touch stream. + * Use this for events that either start or continue a multi-part gesture (e.g. + * mousedown or mousemove, which may be part of a drag or click). + * @param {!EventTarget} node Node upon which to listen. + * @param {string} name Event name to listen to (e.g. 'mousedown'). + * @param {?Object} thisObject The value of 'this' in the function. + * @param {!Function} func Function to call when event is triggered. + * @param {boolean=} opt_noCaptureIdentifier True if triggering on this event + * should not block execution of other event handlers on this touch or + * other simultaneous touches. False by default. + * @param {boolean=} opt_noPreventDefault True if triggering on this event + * should prevent the default handler. False by default. If + * opt_noPreventDefault is provided, opt_noCaptureIdentifier must also be + * provided. + * @return {!Data} Opaque data that can be passed to + * unbindEvent_. + * @alias Blockly.browserEvents.conditionalBind + */ + export function conditionalBind(node: EventTarget, name: string, thisObject: Object | null, func: Function, opt_noCaptureIdentifier?: boolean | undefined, opt_noPreventDefault?: boolean | undefined): any[][]; + /** + * Bind an event handler that should be called regardless of whether it is part + * of the active touch stream. + * Use this for events that are not part of a multi-part gesture (e.g. + * mouseover for tooltips). + * @param {!EventTarget} node Node upon which to listen. + * @param {string} name Event name to listen to (e.g. 'mousedown'). + * @param {?Object} thisObject The value of 'this' in the function. + * @param {!Function} func Function to call when event is triggered. + * @return {!Data} Opaque data that can be passed to + * unbindEvent_. + * @alias Blockly.browserEvents.bind + */ + export function bind(node: EventTarget, name: string, thisObject: Object | null, func: Function): any[][]; + /** + * Unbind one or more events event from a function call. + * @param {!Data} bindData Opaque data from bindEvent_. + * This list is emptied during the course of calling this function. + * @return {!Function} The function call. + * @alias Blockly.browserEvents.unbind + */ + export function unbind(bindData: any[][]): Function; + /** + * Returns true if this event is targeting a text input widget? + * @param {!Event} e An event. + * @return {boolean} True if text input. + * @alias Blockly.browserEvents.isTargetInput + */ + export function isTargetInput(e: Event): boolean; + /** + * Returns true this event is a right-click. + * @param {!Event} e Mouse event. + * @return {boolean} True if right-click. + * @alias Blockly.browserEvents.isRightButton + */ + export function isRightButton(e: Event): boolean; + /** + * Returns the converted coordinates of the given mouse event. + * The origin (0,0) is the top-left corner of the Blockly SVG. + * @param {!Event} e Mouse event. + * @param {!Element} svg SVG element. + * @param {?SVGMatrix} matrix Inverted screen CTM to use. + * @return {!SVGPoint} Object with .x and .y properties. + * @alias Blockly.browserEvents.mouseToSvg + */ + export function mouseToSvg(e: Event, svg: Element, matrix: SVGMatrix | null): SVGPoint; + /** + * Returns the scroll delta of a mouse event in pixel units. + * @param {!Event} e Mouse event. + * @return {{x: number, y: number}} Scroll delta object with .x and .y + * properties. + * @alias Blockly.browserEvents.getScrollDeltaPixels + */ + export function getScrollDeltaPixels(e: Event): { + x: number; + y: number; + }; +} +declare module "core/tooltip" { + /** + * A type which can define a tooltip. + * Either a string, an object containing a tooltip property, or a function which + * returns either a string, or another arbitrarily nested function which + * eventually unwinds to a string. + */ + export type TipInfo = string | { + tooltip: any; + } | (() => (string | Function)); + /** + * A type which can define a tooltip. + * Either a string, an object containing a tooltip property, or a function which + * returns either a string, or another arbitrarily nested function which + * eventually unwinds to a string. + * @typedef {string|{tooltip}|function(): (string|!Function)} + * @alias Blockly.Tooltip.TipInfo + */ + export let TipInfo: any; + /** + * A function that renders custom tooltip UI. + * 1st parameter: the div element to render content into. + * 2nd parameter: the element being moused over (i.e., the element for which the + * tooltip should be shown). + */ + export type CustomTooltip = (arg0: Element, arg1: Element) => any; + /** + * A function that renders custom tooltip UI. + * 1st parameter: the div element to render content into. + * 2nd parameter: the element being moused over (i.e., the element for which the + * tooltip should be shown). + * @typedef {function(!Element, !Element)} + * @alias Blockly.Tooltip.CustomTooltip + */ + export let CustomTooltip: any; + /** + * Sets a custom function that will be called if present instead of the default + * tooltip UI. + * @param {!CustomTooltip} customFn A custom tooltip used to render an alternate + * tooltip UI. + * @alias Blockly.Tooltip.setCustomTooltip + */ + export function setCustomTooltip(customFn: CustomTooltip): void; + /** + * Gets the custom tooltip function. + * @returns {!CustomTooltip|undefined} The custom tooltip function, if defined. + */ + export function getCustomTooltip(): CustomTooltip | undefined; + /** + * Returns whether or not a tooltip is showing + * @returns {boolean} True if a tooltip is showing + * @alias Blockly.Tooltip.isVisible + */ + export function isVisible(): boolean; + /** + * Maximum width (in characters) of a tooltip. + * @alias Blockly.Tooltip.LIMIT + */ + export const LIMIT: 50; + /** + * Horizontal offset between mouse cursor and tooltip. + * @alias Blockly.Tooltip.OFFSET_X + */ + export const OFFSET_X: 0; + /** + * Vertical offset between mouse cursor and tooltip. + * @alias Blockly.Tooltip.OFFSET_Y + */ + export const OFFSET_Y: 10; + /** + * Radius mouse can move before killing tooltip. + * @alias Blockly.Tooltip.RADIUS_OK + */ + export const RADIUS_OK: 10; + /** + * Delay before tooltip appears. + * @alias Blockly.Tooltip.HOVER_MS + */ + export const HOVER_MS: 750; + /** + * Horizontal padding between tooltip and screen edge. + * @alias Blockly.Tooltip.MARGINS + */ + export const MARGINS: 5; + /** + * Returns the HTML tooltip container. + * @returns {?HTMLDivElement} The HTML tooltip container. + * @alias Blockly.Tooltip.getDiv + */ + export function getDiv(): HTMLDivElement | null; + /** + * Returns the tooltip text for the given element. + * @param {?Object} object The object to get the tooltip text of. + * @return {string} The tooltip text of the element. + * @alias Blockly.Tooltip.getTooltipOfObject + */ + export function getTooltipOfObject(object: Object | null): string; + /** + * Create the tooltip div and inject it onto the page. + * @alias Blockly.Tooltip.createDom + */ + export function createDom(): void; + /** + * Binds the required mouse events onto an SVG element. + * @param {!Element} element SVG element onto which tooltip is to be bound. + * @alias Blockly.Tooltip.bindMouseEvents + */ + export function bindMouseEvents(element: Element): void; + /** + * Unbinds tooltip mouse events from the SVG element. + * @param {!Element} element SVG element onto which tooltip is bound. + * @alias Blockly.Tooltip.unbindMouseEvents + */ + export function unbindMouseEvents(element: Element): void; + /** + * Dispose of the tooltip. + * @alias Blockly.Tooltip.dispose + * @package + */ + export function dispose(): void; + /** + * Hide the tooltip. + * @alias Blockly.Tooltip.hide + */ + export function hide(): void; + /** + * Hide any in-progress tooltips and block showing new tooltips until the next + * call to unblock(). + * @alias Blockly.Tooltip.block + * @package + */ + export function block(): void; + /** + * Unblock tooltips: allow them to be scheduled and shown according to their own + * logic. + * @alias Blockly.Tooltip.unblock + * @package + */ + export function unblock(): void; +} +declare module "core/utils/object" { + /** + * Inherit the prototype methods from one constructor into another. + * @param {!Function} childCtor Child class. + * @param {!Function} parentCtor Parent class. + * @suppress {strictMissingProperties} superClass_ is not defined on Function. + * @alias Blockly.utils.object.inherits + */ + export function inherits(childCtor: Function, parentCtor: Function): void; + /** + * Copies all the members of a source object to a target object. + * @param {!Object} target Target. + * @param {!Object} source Source. + * @alias Blockly.utils.object.mixin + */ + export function mixin(target: Object, source: Object): void; + /** + * Complete a deep merge of all members of a source object with a target object. + * @param {!Object} target Target. + * @param {!Object} source Source. + * @return {!Object} The resulting object. + * @alias Blockly.utils.object.deepMerge + */ + export function deepMerge(target: Object, source: Object): Object; + /** + * Returns an array of a given object's own enumerable property values. + * @param {!Object} obj Object containing values. + * @return {!Array} Array of values. + * @alias Blockly.utils.object.values + */ + export function values(obj: Object): any[]; +} +declare module "core/theme" { + /** + * Class for a theme. + * @alias Blockly.Theme + */ + export class Theme { + /** + * Define a new Blockly theme. + * @param {string} name The name of the theme. + * @param {!Object} themeObj An object containing theme properties. + * @return {!Theme} A new Blockly theme. + */ + static defineTheme(name: string, themeObj: Object): Theme; + /** + * @param {string} name Theme name. + * @param {!Object=} opt_blockStyles A map + * from style names (strings) to objects with style attributes for blocks. + * @param {!Object=} opt_categoryStyles A + * map from style names (strings) to objects with style attributes for + * categories. + * @param {!Theme.ComponentStyle=} opt_componentStyles A map of Blockly + * component names to style value. + */ + constructor(name: string, opt_blockStyles?: { + [x: string]: Theme.BlockStyle; + } | undefined, opt_categoryStyles?: { + [x: string]: Theme.CategoryStyle; + } | undefined, opt_componentStyles?: Theme.ComponentStyle | undefined); + /** + * The theme name. This can be used to reference a specific theme in CSS. + * @type {string} + */ + name: string; + /** + * The block styles map. + * @type {!Object} + * @package + */ + blockStyles: { + [x: string]: Theme.BlockStyle; + }; + /** + * The category styles map. + * @type {!Object} + * @package + */ + categoryStyles: { + [x: string]: Theme.CategoryStyle; + }; + /** + * The UI components styles map. + * @type {!Theme.ComponentStyle} + * @package + */ + componentStyles: Theme.ComponentStyle; + /** + * The font style. + * @type {!Theme.FontStyle} + * @package + */ + fontStyle: Theme.FontStyle; + /** + * Whether or not to add a 'hat' on top of all blocks with no previous or + * output connections. + * @type {?boolean} + * @package + */ + startHats: boolean | null; + /** + * Gets the class name that identifies this theme. + * @return {string} The CSS class name. + * @package + */ + getClassName(): string; + /** + * Overrides or adds a style to the blockStyles map. + * @param {string} blockStyleName The name of the block style. + * @param {Theme.BlockStyle} blockStyle The block style. + */ + setBlockStyle(blockStyleName: string, blockStyle: Theme.BlockStyle): void; + /** + * Overrides or adds a style to the categoryStyles map. + * @param {string} categoryStyleName The name of the category style. + * @param {Theme.CategoryStyle} categoryStyle The category style. + */ + setCategoryStyle(categoryStyleName: string, categoryStyle: Theme.CategoryStyle): void; + /** + * Gets the style for a given Blockly UI component. If the style value is a + * string, we attempt to find the value of any named references. + * @param {string} componentName The name of the component. + * @return {?string} The style value. + */ + getComponentStyle(componentName: string): string | null; + /** + * Configure a specific Blockly UI component with a style value. + * @param {string} componentName The name of the component. + * @param {*} styleValue The style value. + */ + setComponentStyle(componentName: string, styleValue: any): void; + /** + * Configure a theme's font style. + * @param {Theme.FontStyle} fontStyle The font style. + */ + setFontStyle(fontStyle: Theme.FontStyle): void; + /** + * Configure a theme's start hats. + * @param {boolean} startHats True if the theme enables start hats, false + * otherwise. + */ + setStartHats(startHats: boolean): void; + } + export namespace Theme { + /** + * A block style. + */ + type BlockStyle = { + colourPrimary: string; + colourSecondary: string; + colourTertiary: string; + hat: string; + }; + /** + * A category style. + */ + type CategoryStyle = { + colour: string; + }; + /** + * A component style. + */ + type ComponentStyle = { + workspaceBackgroundColour: string | null; + toolboxBackgroundColour: string | null; + toolboxForegroundColour: string | null; + flyoutBackgroundColour: string | null; + flyoutForegroundColour: string | null; + flyoutOpacity: number | null; + scrollbarColour: string | null; + scrollbarOpacity: number | null; + insertionMarkerColour: string | null; + insertionMarkerOpacity: number | null; + markerColour: string | null; + cursorColour: string | null; + selectedGlowColour: string | null; + selectedGlowOpacity: number | null; + replacementGlowColour: string | null; + replacementGlowOpacity: number | null; + }; + /** + * A font style. + */ + type FontStyle = { + family: string | null; + weight: string | null; + size: number | null; + }; + } +} +declare module "core/renderers/common/constants" { + /** + * An object that provides constants for rendering blocks. + * @alias Blockly.blockRendering.ConstantProvider + */ + export class ConstantProvider { + /** + * The size of an empty spacer. + * @type {number} + */ + NO_PADDING: number; + /** + * The size of small padding. + * @type {number} + */ + SMALL_PADDING: number; + /** + * The size of medium padding. + * @type {number} + */ + MEDIUM_PADDING: number; + /** + * The size of medium-large padding. + * @type {number} + */ + MEDIUM_LARGE_PADDING: number; + /** + * The size of large padding. + * @type {number} + */ + LARGE_PADDING: number; + /** + * Offset from the top of the row for placing fields on inline input rows + * and statement input rows. + * Matches existing rendering (in 2019). + * @type {number} + */ + TALL_INPUT_FIELD_OFFSET_Y: number; + /** + * The height of the puzzle tab used for input and output connections. + * @type {number} + */ + TAB_HEIGHT: number; + /** + * The offset from the top of the block at which a puzzle tab is positioned. + * @type {number} + */ + TAB_OFFSET_FROM_TOP: number; + /** + * Vertical overlap of the puzzle tab, used to make it look more like a + * puzzle piece. + * @type {number} + */ + TAB_VERTICAL_OVERLAP: number; + /** + * The width of the puzzle tab used for input and output connections. + * @type {number} + */ + TAB_WIDTH: number; + /** + * The width of the notch used for previous and next connections. + * @type {number} + */ + NOTCH_WIDTH: number; + /** + * The height of the notch used for previous and next connections. + * @type {number} + */ + NOTCH_HEIGHT: number; + /** + * The minimum width of the block. + * @type {number} + */ + MIN_BLOCK_WIDTH: number; + EMPTY_BLOCK_SPACER_HEIGHT: number; + /** + * The minimum height of a dummy input row. + * @type {number} + */ + DUMMY_INPUT_MIN_HEIGHT: number; + /** + * The minimum height of a dummy input row in a shadow block. + * @type {number} + */ + DUMMY_INPUT_SHADOW_MIN_HEIGHT: number; + /** + * Rounded corner radius. + * @type {number} + */ + CORNER_RADIUS: number; + /** + * Offset from the left side of a block or the inside of a statement input + * to the left side of the notch. + * @type {number} + */ + NOTCH_OFFSET_LEFT: number; + /** + * Additional offset added to the statement input's width to account for the + * notch. + * @type {number} + */ + STATEMENT_INPUT_NOTCH_OFFSET: number; + STATEMENT_BOTTOM_SPACER: number; + STATEMENT_INPUT_PADDING_LEFT: number; + /** + * Vertical padding between consecutive statement inputs. + * @type {number} + */ + BETWEEN_STATEMENT_PADDING_Y: number; + /** + * The top row's minimum height. + * @type {number} + */ + TOP_ROW_MIN_HEIGHT: number; + /** + * The top row's minimum height if it precedes a statement. + * @type {number} + */ + TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT: number; + /** + * The bottom row's minimum height. + * @type {number} + */ + BOTTOM_ROW_MIN_HEIGHT: number; + /** + * The bottom row's minimum height if it follows a statement input. + * @type {number} + */ + BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT: number; + /** + * Whether to add a 'hat' on top of all blocks with no previous or output + * connections. Can be overridden by 'hat' property on Theme.BlockStyle. + * @type {boolean} + */ + ADD_START_HATS: boolean; + /** + * Height of the top hat. + * @type {number} + */ + START_HAT_HEIGHT: number; + /** + * Width of the top hat. + * @type {number} + */ + START_HAT_WIDTH: number; + SPACER_DEFAULT_HEIGHT: number; + MIN_BLOCK_HEIGHT: number; + EMPTY_INLINE_INPUT_PADDING: number; + /** + * The height of an empty inline input. + * @type {number} + */ + EMPTY_INLINE_INPUT_HEIGHT: number; + EXTERNAL_VALUE_INPUT_PADDING: number; + /** + * The height of an empty statement input. Note that in the old rendering + * this varies slightly depending on whether the block has external or + * inline inputs. In the new rendering this is consistent. It seems + * unlikely that the old behaviour was intentional. + * @type {number} + */ + EMPTY_STATEMENT_INPUT_HEIGHT: number; + START_POINT: string; + /** + * Height of SVG path for jagged teeth at the end of collapsed blocks. + * @type {number} + */ + JAGGED_TEETH_HEIGHT: number; + /** + * Width of SVG path for jagged teeth at the end of collapsed blocks. + * @type {number} + */ + JAGGED_TEETH_WIDTH: number; + /** + * Point size of text. + * @type {number} + */ + FIELD_TEXT_FONTSIZE: number; + /** + * Text font weight. + * @type {string} + */ + FIELD_TEXT_FONTWEIGHT: string; + /** + * Text font family. + * @type {string} + */ + FIELD_TEXT_FONTFAMILY: string; + /** + * Height of text. This constant is dynamically set in + * ``setFontConstants_`` to be the height of the text based on the font + * used. + * @type {number} + */ + FIELD_TEXT_HEIGHT: number; + /** + * Text baseline. This constant is dynamically set in ``setFontConstants_`` + * to be the baseline of the text based on the font used. + * @type {number} + */ + FIELD_TEXT_BASELINE: number; + /** + * A field's border rect corner radius. + * @type {number} + */ + FIELD_BORDER_RECT_RADIUS: number; + /** + * A field's border rect default height. + * @type {number} + */ + FIELD_BORDER_RECT_HEIGHT: number; + /** + * A field's border rect X padding. + * @type {number} + */ + FIELD_BORDER_RECT_X_PADDING: number; + /** + * A field's border rect Y padding. + * @type {number} + */ + FIELD_BORDER_RECT_Y_PADDING: number; + /** + * The backing colour of a field's border rect. + * @type {string} + * @package + */ + FIELD_BORDER_RECT_COLOUR: string; + /** + * A field's text element's dominant baseline. + * @type {boolean} + */ + FIELD_TEXT_BASELINE_CENTER: boolean; + /** + * A dropdown field's border rect height. + * @type {number} + */ + FIELD_DROPDOWN_BORDER_RECT_HEIGHT: number; + /** + * Whether or not a dropdown field should add a border rect when in a shadow + * block. + * @type {boolean} + */ + FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW: boolean; + /** + * Whether or not a dropdown field's div should be coloured to match the + * block colours. + * @type {boolean} + */ + FIELD_DROPDOWN_COLOURED_DIV: boolean; + /** + * Whether or not a dropdown field uses a text or SVG arrow. + * @type {boolean} + */ + FIELD_DROPDOWN_SVG_ARROW: boolean; + /** + * A dropdown field's SVG arrow padding. + * @type {number} + */ + FIELD_DROPDOWN_SVG_ARROW_PADDING: number; + /** + * A dropdown field's SVG arrow size. + * @type {number} + */ + FIELD_DROPDOWN_SVG_ARROW_SIZE: number; + /** + * A dropdown field's SVG arrow datauri. + * @type {string} + */ + FIELD_DROPDOWN_SVG_ARROW_DATAURI: string; + /** + * Whether or not to show a box shadow around the widget div. This is only a + * feature of full block fields. + * @type {boolean} + */ + FIELD_TEXTINPUT_BOX_SHADOW: boolean; + /** + * Whether or not the colour field should display its colour value on the + * entire block. + * @type {boolean} + */ + FIELD_COLOUR_FULL_BLOCK: boolean; + /** + * A colour field's default width. + * @type {number} + */ + FIELD_COLOUR_DEFAULT_WIDTH: number; + /** + * A colour field's default height. + * @type {number} + */ + FIELD_COLOUR_DEFAULT_HEIGHT: number; + /** + * A checkbox field's X offset. + * @type {number} + */ + FIELD_CHECKBOX_X_OFFSET: number; + /** + * A random identifier used to ensure a unique ID is used for each + * filter/pattern for the case of multiple Blockly instances on a page. + * @type {string} + * @package + */ + randomIdentifier: string; + /** + * The defs tag that contains all filters and patterns for this Blockly + * instance. + * @type {?SVGElement} + * @private + */ + private defs_; + /** + * The ID of the emboss filter, or the empty string if no filter is set. + * @type {string} + * @package + */ + embossFilterId: string; + /** + * The element to use for highlighting, or null if not set. + * @type {SVGElement} + * @private + */ + private embossFilter_; + /** + * The ID of the disabled pattern, or the empty string if no pattern is set. + * @type {string} + * @package + */ + disabledPatternId: string; + /** + * The element to use for disabled blocks, or null if not set. + * @type {SVGElement} + * @private + */ + private disabledPattern_; + /** + * The ID of the debug filter, or the empty string if no pattern is set. + * @type {string} + * @package + */ + debugFilterId: string; + /** + * The element to use for a debug highlight, or null if not set. + * @type {SVGElement} + * @private + */ + private debugFilter_; + /** + * The + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blockly/msg/ab.js b/blockly/msg/ab.js new file mode 100644 index 00000000000..53bcde4c9dc --- /dev/null +++ b/blockly/msg/ab.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Иацҵатәуп ахцәажәара"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ишәыԥсах аҵакы"; +Blockly.Msg["CLEAN_UP"] = "Иқәгатәуп аблокқәа"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Иеикәрҳәтәуп Аблокқәа"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Иеикәрҳәтәуп Аблокқәа"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "аԥштәы 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "аԥштәы 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "аԥштәы 1 ахәҭа"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "еилаҵатәуп"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ab.wikipedia.org/wiki/Аԥштәы"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Иалышәх аԥштәы"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "иарбанзаалакь аԥштәы"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Иалнахуеит аԥштәы машәыршақә"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "жәҩангәԥштәы"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "аиаҵәа"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "аҟаԥшь"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "аԥштәы аҟынтәи"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ацикл иҭыҵтәуп"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ииастәуп ацикл анаҩстәи ашьаҿахьы"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Иааннакылоит абри ацикл."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Агәҽанҵара:Ари аблок ахархәара амоуп ацикл аҩныҵҟа мацара."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "ацикл %1 ала %2 инаркны %3 рҟынӡа ашьаҿа %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Иацнаҵоит аҭагыазаашьа аблок \"акәзар\" ахь"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "акәымзар"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "акәымзар"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "акәзар"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Аҭагылазаашьа иашазар, инанагӡоит акомандақәа."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Аҭагылазаашьа иашазар, инанагӡоит актәи аблок акомандақәа. Акәымзар инанагӡоит аҩбатәи аблок акомандақәа."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ab.wikipedia.org/wiki/Ацикл"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "инагӡатәуп"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "инагӡалатәуп %1 - нтә"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Инанагӡоит акомандақәа кырынтә"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "инагӡалатәуп акәымзар"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "инагӡалатәуп акәзар"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Аҭагылазаашьа мцнаҵы, инанагӡалоит акомандақәа."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Аҭагылазаашьа иашанаҵ, инанагӡалоит акомандақәа."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ианыхтәуп аблокқәа (%1) зегьы?"; +Blockly.Msg["DELETE_BLOCK"] = "Ианыхтәуп аблок"; +Blockly.Msg["DELETE_VARIABLE"] = "Ианыхтәуп аҽеиҭак '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Ианыхтәуп %1 блокк"; +Blockly.Msg["DIALOG_CANCEL"] = "Аҟәыхра"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Иаҿыхтәуп Аблок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Акопиа ахыхтәуп"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Иаҿыхтәуп Аблокқәа"; +Blockly.Msg["EXPAND_ALL"] = "Иаарԥштәуп Аблокқәа"; +Blockly.Msg["EXPAND_BLOCK"] = "Иаарԥштәуп Аблокқәа"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Ацхыраара"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "иаԥцатәуп иҭацәу ахьӡынҵа"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ахьӡынҵа"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "иаԥҵатәуп ахьӡынҵа аҟынтәи"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Иацнаҵоит аелемент ахьӡынҵахьы"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "актәи"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ анҵәамнҭа аҟынтәи"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "игатәуп"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "иалхны ианыхтәуп"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "аҵыхәтәантәи"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "иарбанзаалакь"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ианыхтәуп"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Иҳанаҭоит ахьӡынҵа актәи аелемент."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Иҳанаҭоит ахьӡынҵа аҵыхәтәантәи аелемент."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Иҳанаҭоит ахьӡынҵа иарбанзаалакь елементк."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Ианнахәуеит ахьӡынҵа актәи аелемент."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Ианнахәуеит ахьӡынҵа аҵыхәтәантәи аелемент."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Ианнахәуеит ахьӡынҵа иарбанзаалакь елементк."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "№ ала"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - аҵыхәтәантәи аелемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - актәи аелемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "ахьӡынҵа аҟны"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ҭацәуп"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Иҳанаҭоит аиаша, ахьӡынҵа ҭацәызар."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "аура %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Иҳанаҭоит ахьӡынҵа аура."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "="; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ибжьаргылатәуп"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "иаҭатәуп"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Иацнаҵоит аелемент ахьӡынҵа анҵәамҭахь."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "еиҵоу-еиҳауала"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "еиҳау-еиҵоуала"; +Blockly.Msg["LISTS_SORT_TITLE"] = "еилыԥшаатәуп %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Еилыԥшаатәуп ахьӡынҵа акопиа."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ахыԥхьаӡаратәи"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "алфавитла"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "еизгатәуп атеқст ахьӡынҵа аҟынтәи"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "амц"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Иҳанаҭоит аҵакы аиаша ма амц"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "аиаша"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ru.wikipedia.org/wiki/Аиҟарамра"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟаразар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар ма иаҟаразар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Иҳанаҭоит иҵоуроу аҵакы, актәи иҭагалоу аҩбатәи аасҭа еиҵазар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҵазар ма иаҟаразар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟарамзар."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 акәӡам"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Иҳанаҭоит аҵакы аиаша, иҭагалоу мцызар. Иҳанаҭоит аҵакы амц, иҭагалоу иашазар."; +Blockly.Msg["LOGIC_NULL"] = "акагьы"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Иҳанаҭоит акагьы"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ма"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Иҳанаҭоит аҵакы аиаша, иҭагалоу аҩбагьы иашазар."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Иҳанаҭоит аҵакы аиаша, иҭагалоу руак иашазар."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "иалхтәуп ала"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "амц акәзар"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "аиаша акәзар"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ab.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак реицҵалыҵ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак ршалыҵ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак реигырхалыҵ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак рышьҭыхлыҵ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "иеизырҳатәуп %1 %2 рыла"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Иацнаҵоит ахыԥхьаӡара аҽеиҭак '%1' ахь."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ab.wikipedia.org/wiki/Аматематикатә_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Иҳанаҭооит аконстантақәа руак: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) ма ∞ (аҵыхәаԥҵәарадара)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ишоит ала"; +Blockly.Msg["MATH_IS_EVEN"] = "еиҩшо"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "иҵоурам"; +Blockly.Msg["MATH_IS_ODD"] = "еиҩымшо"; +Blockly.Msg["MATH_IS_POSITIVE"] = "иҵоуроу"; +Blockly.Msg["MATH_IS_PRIME"] = "имариоу"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "аибга"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ru.wikipedia.org/wiki/Ашара_цәынхала"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ацәынха %1 : %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Иҳанаҭоит ацәынха ҩ-хыԥхьаӡарак ршараан."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ab.wikipedia.org/wiki/Ахыԥхьаӡара"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ахыԥхьаӡара."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ахьӡынҵа арифметикатә бжьара"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ахьӡынҵа аҟны иреиҳау"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ахьӡынҵа амедиана"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ахьӡынҵа аҟны иреиҵо"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ахьӡынҵа амода"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ахьӡынҵа иарбанзаалакь аелемент"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ахьӡынҵа аицҵалыҵ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рарифметикатә бжьара."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Иҳанаҭоит ахьӡынҵа аҟны иреиҳау ахыԥхьаӡара."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рмедиана."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Иҳанаҭоит ахьӡынҵа аҟны иреицо ахыԥхьаӡара."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Иҳанаҭоит ахьӡынҵа аҟны иарбанзаалакь елементк."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Иҳанаҭоит ахьӡынҵа иаҵанакуа ахыԥхьаӡарақәа зегьы реицҵалыҵ."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "иарбанзаалакь ахыԥхьашара 0 инаркны (иалаҵаны) 1 аҟынӡа"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Иҳанаҭоит иарбанзаалакь ахыԥхьаӡара 0.0 инаркны (иалаҵаны) 1.0 аҟынӡа."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "иарбанзаалакь еибгоу ахыԥхьаӡара %1 инаркны %2 нӡа"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ab.wikipedia.org/wiki/Ахыркәшара"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ихыркәшатәуп"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ихыркәшатәуп еиҵоу ахь"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ихыркәшатәуп еиҳау ахь"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "амодуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Иҳанаҭоит ахыԥхьаӡара амодуль."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Иҳанаҭоит ахыԥхьаӡара иԥсабаратәу алогарифм."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Иҳанаҭоит ахыԥхьаӡара ажәабатә логарифм."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Иҳанаҭоит иаҿагыло ахыԥхьаӡара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ab.wikipedia.org/wiki/Атригонометриатә_функциа"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Иҳанаҭоит арккосинус градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Иҳанаҭоит арксинус градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Иҳанаҭоит арктангенс градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Иҳанаҭоит акосинус градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Иҳанаҭоит асинус градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Иҳанаҭоит атангенс градусла."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Иаԥҵатәуп аҽеиҭак"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Аҽеиҭак ахьӡ ҿыц:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "аоператорқәа азин рыҭара"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "аҟынтәи:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "аҟынтәи:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Иаԥҵатәуп ааԥхьара '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Абри афункциа ахҳәа азыҟашәҵа..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "иҟаҵатәуп џьара акы"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "азы"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Иаԥнаҵоит апроцедура, аҵакы ҳазымҭо."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ирхынҳәтәуп"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Иаԥнаҵоит апроцедура, аҵакы ҳазҭо."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Актәи аҵакы иашазар, иҳанаҭоит аҩбатәи аҵакы."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Агәаҽанҵара: Ари аблок ахархәара ауеит афункциа аԥҵара аҟны."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "апараметр ахьӡ:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "апараметрқәа"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Аиҭаҟаҵара"; +Blockly.Msg["REMOVE_COMMENT"] = "Ианыхтәуп ахцәажәара"; +Blockly.Msg["RENAME_VARIABLE"] = "Аҽеиҭак ахьӡ ԥсахтәуп"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Аҽеиҭакқәа'%1' зегь рыхьӡ ԥсахтәуп аҟны:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 ахьы иацҵатәуп атеқст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Иацҵатәуп атеқст аҽеиҭак «%1» ахь."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "игатәуп актәи анбан"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "игатәуп анбан № анҵәамҭа аҟынтәи"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "игатәуп анбан №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "игатәуп аҵыхәтәантәи анбан"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "игатәуп иарбанзаалакь нбанк"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "атеқст %1 %2 аҟны"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Иҳанаҭоит анбан иарбоу апозициа аҟны"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Иацҵатәуп аелемент атеқст ахь."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "иеиԥшьтәуп"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "анбан № ала"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "аҵыхәтәантәи анбан ала"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "атеқст аҟны"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Иҳанаҭоит атеқст аҟны иарбоу ахәҭа."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "атеқст %1 %2 %3 аҟны"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ҭацәуп"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Иҳанаҭоит аҵакы аиаша, иҟоу атеқст ҭацәызар."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "иаԥҵатәуп атеқст аҟынтәи"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "аура %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Иҳанаҭоит асимволқәа рхыԥхьаӡара (абжьажьқәа алаҵаны) иҟоу атеқст аҟны."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "икьыԥхьтәуп %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Иакьыԥхьуеит атеқст, ахыԥхьаӡара ма даҽа обиеқтк."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "иԥсахтәуп %1 %2 ала %3 аҟны"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ab.wikipedia.org/wiki/Ацәаҳәатә_хкы"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Анбан, ажәа ма ацәаҳәа атеқст аҟны."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Иахьа"; +Blockly.Msg["UNDO"] = "Иаҟәыхтәуп"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "аелемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Иаԥҵатәуп аблок \"иаҭатәуп %1\" азы"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Иҳанаҭоит аҽеиҭак аҵакы."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "иаҭатәуп %1 = %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Аҽеиҭак ахьӡ '%1' змоу ыҟоуп."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ace.js b/blockly/msg/ace.js new file mode 100644 index 00000000000..6c085eacac5 --- /dev/null +++ b/blockly/msg/ace.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Peubateuë"; +Blockly.Msg["DIALOG_OK"] = "Ka got"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/af.js b/blockly/msg/af.js new file mode 100644 index 00000000000..cf50d484f01 --- /dev/null +++ b/blockly/msg/af.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Voeg kommentaar by"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Wysig waarde:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "verwyder al %1 blokke?"; +Blockly.Msg["DELETE_BLOCK"] = "verwyder blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Wissig %1 gebruike van die '%2' veranderlike?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "verwyder %1 blokke"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "Oukei"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "duplikaat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliseer kommentaar"; +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Hulp"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Skep kleur veranderlike"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Skep numeriese veranderlike"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Skep teks veranderlike"; +Blockly.Msg["NEW_VARIABLE"] = "Skep veranderlike"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nuwe veranderlike naam:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nuwe veranderlike tipe:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Doen weer"; +Blockly.Msg["REMOVE_COMMENT"] = "Verwyder kommentaar"; +Blockly.Msg["RENAME_VARIABLE"] = "Hernoem veranderlike..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Hernoem al %1 veranderlikes na:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "vandag"; +Blockly.Msg["UNDO"] = "Ontdaan"; +Blockly.Msg["UNNAMED_KEY"] = "onbenoem"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'n Veranderlike met die naam '%1' bestaan reeds."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'n Veranderlike met die naam '%1' bestaan reeds vir 'n ander tipe veranderlike: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/am.js b/blockly/msg/am.js new file mode 100644 index 00000000000..20a41a79c1c --- /dev/null +++ b/blockly/msg/am.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ማስታወሻ ያክሉ"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "ብሎኮቹን ይሰድሩ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "የብሎኮቹን መረጃዎች ያሳጥሩ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "የብሎኩን መረጃ ያሳጥሩ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "%1 ያህል ብሎኮች ይሰረዙ?"; +Blockly.Msg["DELETE_BLOCK"] = "ብሎኩን ይሰርዙ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ብሎኮች ይሰርዙ"; +Blockly.Msg["DIALOG_CANCEL"] = "ይቅር"; +Blockly.Msg["DIALOG_OK"] = "እሺ"; +Blockly.Msg["DISABLE_BLOCK"] = "ብሎኩን ለጊዜው ያጥፉ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ቅጂ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ማስታወሻውን ይቅዱ"; +Blockly.Msg["ENABLE_BLOCK"] = "ብሎኩን ደግመው ያስጀምሩ"; +Blockly.Msg["EXPAND_ALL"] = "የብሎኮቹን መረጃዎች ዳግም ያስረዝሙ"; +Blockly.Msg["EXPAND_BLOCK"] = "የብሎኩን መረጃ ዳግም ያስረዝሙ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "የውጪ ግብዓቶች"; +Blockly.Msg["HELP"] = "እገዛ"; +Blockly.Msg["INLINE_INPUTS"] = "የውስጥ ግብዓቶች"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ከእንደገና"; +Blockly.Msg["REMOVE_COMMENT"] = "ማስታወሻ ያጥፉ"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ዛሬ"; +Blockly.Msg["UNDO"] = "ይቀልብሱ"; +Blockly.Msg["UNNAMED_KEY"] = "ያልተሰየመ"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ar.js b/blockly/msg/ar.js new file mode 100644 index 00000000000..6a4da2a61c2 --- /dev/null +++ b/blockly/msg/ar.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "أضف تعليقًا"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "لايمكن حذف متغير \"%1\" بسبب انه جزء من الدالة \"%2\""; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "تغيير قيمة:"; +Blockly.Msg["CLEAN_UP"] = "ترتيب القطع"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "الكتل المطوية تحتوي على تحذيرات."; +Blockly.Msg["COLLAPSE_ALL"] = "إخفاء القطع"; +Blockly.Msg["COLLAPSE_BLOCK"] = "إخفاء القطعة"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "اللون 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "اللون 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبة"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "دمج"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دمج لونين ببعضهما البعض بنسبة (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ar.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "اختر لون من اللوحة."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "لون عشوائي"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "اختر لون بشكل عشوائي."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "أزرق"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "أخضر"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "أحمر"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "لون مع"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "إنشئ لون بالكمية المحددة من الأحمر, الأخضر والأزرق. بحيث يجب تكون كافة القيم بين 0 و 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "اخرج من الحلقة"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "استمر ابتداءا من التكرار التالي من الحلقة"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "اخرج من الحلقة الحالية."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "تخط ما تبقى من هذه الحلقة، واستمر ابتداءا من التكرار التالي."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "تحذير: يمكن استخدام هذه القطعة فقط داخل حلقة."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "لكل عنصر %1 في قائمة %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "لكل عنصر في قائمة ما، عين المتغير '%1' لهذا الغنصر، ومن ثم نفذ بعض الأوامر."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "عد بـ %1 من %2 إلى %3 بمعدل %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "اجعل المتغير %1 يأخذ القيم من رقم البداية الى رقم النهاية، وقم بالعد داخل المجال المحدد، وطبق أوامر القطع المحددة."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "إضف شرطا إلى القطعة الشرطية \"إذا\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "أضف شرط \"نهاية، إجمع\" إلى القطعة الشرطية \"إذا\"."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة الشرطية \"إذا\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "والا"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "وإﻻ إذا"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "إذا"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "إذا كانت قيمة ما تساوي صحيح, إذن قم بتنفيذ أمر ما."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "إذا كانت قيمة ما تساوي \"صحيح\"، إذن قم بتنفيذ أول قطعة من الأوامر. والا ،قم بتنفيذ القطعة الثانية من الأوامر."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا, إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا , إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر. إذا لم تكن هناك أي قيمة تساوي صحيح, قم بتنفيذ آخر قطعة من الأوامر."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ar.wikipedia.org/wiki/حلقة_تكرار"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "نفّذ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "كرر %1 مرات"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "نفّذ بعض الأوامر عدة مرات."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "اكرّر حتى"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "اكرّر طالما"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "بما ان القيمة خاطئة, نفّذ بعض الأوامر."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "بما ان القيمة صحيحة, نفّذ بعض الأوامر."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "حذف %1 قطعة؟"; +Blockly.Msg["DELETE_BLOCK"] = "احذف القطعة"; +Blockly.Msg["DELETE_VARIABLE"] = "حذف المتغير %1"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "حذف%1 1 استخدامات المتغير '%2'؟"; +Blockly.Msg["DELETE_X_BLOCKS"] = "احذف %1 قطع"; +Blockly.Msg["DIALOG_CANCEL"] = "إلغاء"; +Blockly.Msg["DIALOG_OK"] = "موافق"; +Blockly.Msg["DISABLE_BLOCK"] = "عطّل القطعة"; +Blockly.Msg["DUPLICATE_BLOCK"] = "مكرر"; +Blockly.Msg["DUPLICATE_COMMENT"] = "تعليق مكرر"; +Blockly.Msg["ENABLE_BLOCK"] = "أعد تفعيل القطعة"; +Blockly.Msg["EXPAND_ALL"] = "وسٌّع القطع"; +Blockly.Msg["EXPAND_BLOCK"] = "وسٌّع القطعة"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ادخال خارجي"; +Blockly.Msg["HELP"] = "مساعدة"; +Blockly.Msg["INLINE_INPUTS"] = "ادخال خطي"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "إنشئ قائمة فارغة"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "تقوم بإرجاع قائمة، طولها 0, لا تحتوي على أية سجلات البيانات"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "قائمة"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة قائمة القطع التالية."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "أتشئ قائمة مع"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "أضف عنصرا إلى القائمة."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "أنشىء قائمة من أي عدد من العناصر."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "أول"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# من نهاية"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "احصل على"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "احصل على و ازل"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "أخير"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "عشوائي"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ازل"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "يرجع العنصر الأول في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "يقوم بإرجاع العنصر في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "يرجع العنصر الأخير في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "يرجع عنصرا عشوائيا في قائمة."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "يزيل ويرجع العنصر الأول في قائمة."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "يزيل ويقوم بإرجاع العنصر في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "يزيل ويرجع العنصر الأخير في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "يزيل و يرجع عنصرا عشوائيا في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "يزيل العنصر الأول في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "يزيل العنصر الموجود في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "يزيل العنصر الأخير في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "يزيل عنصرا عشوائيا في قائمة ما."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "إلى # من نهاية"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "إلى #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "إلى الأخير"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "احصل على قائمة فرعية من الأول"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "احصل على قائمة فرعية من # من نهاية"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "احصل على قائمة فرعية من #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "يقوم بإنشاء نسخة من الجزء المحدد من قائمة ما."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 هو العنصر الأخير."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 هو العنصر الأول."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "ابحث على على التواجد الأول للعنصر"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "ابحث على التواجد الأخير للعنصر"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "تقوم بإرجاع مؤشر التواجد الأول/الأخير في القائمة. تقوم بإرجاع %1 إذا لم يتم العثور على النص."; +Blockly.Msg["LISTS_INLIST"] = "في قائمة"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 فارغ"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "يرجع \"صحيح\" إذا كانت القائمة فارغة."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "الطول من %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "تقوم بإرجاع طول قائمة."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "إنشئ قائمة مع العنصر %1 %2 مرات"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "انشئ قائمة تتألف من القيمة المعطاة متكررة لعدد محدد من المرات."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "عكس %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "عكس نسخة من القائمة."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "مثل"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "أدخل في"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "تعيين"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "يقوم بإدراج هذا العنصر في بداية قائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "يقوم بإدخال العنصر في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "ألصق هذا العنصر بنهاية قائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "ادخل العنصر عشوائياً في القائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "يحدد العنصر الأول في قائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "يحدد العنصر في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "يحدد العنصر الأخير في قائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "يحدد عنصرا عشوائيا في قائمة."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "تصاعديا"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "تنازليا"; +Blockly.Msg["LISTS_SORT_TITLE"] = "رتب %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "فرز نسخة من القائمة."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "أبجديا، وتجاهل الحالة"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "رقمي"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "أبجديًا"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "إعداد قائمة من النصوص"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "إعداد نص من القائمة"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ضم قائمة النصوص في نص واحد، مفصولة بواسطة محدد."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "تقسيم النص إلى قائمة من النصوص، وكسر في كل محدد"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "مع محدد"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "خاطئ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "يرجع صحيح أو خاطئ."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "صحيح"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ar.wikipedia.org/wiki/متباينة_(جبر)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "يرجع صحيح إذا كان كلا المدخلات مساوية بعضها البعض."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "يرجع صحيح إذا كان الإدخال الأول أكبر من الإدخال الثاني."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "يرجع صحيح إذا كان الإدخال الأول أكبر من أو يساوي الإدخال الثاني."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "يرجع صحيح إذا كان الإدخال الأول أصغر من الإدخال الثاني."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "يرجع صحيح إذا كان الإدخال الأول أصغر من أو يساوي الإدخال الثاني."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "يرجع صحيح إذا كانت كلا المدخلات غير مساوية لبعضها البعض."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ليس %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "يرجع صحيح إذا كان الإدخال خاطئ . يرجع خاطئ إذا كان الإدخال صحيح."; +Blockly.Msg["LOGIC_NULL"] = "فارغ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ترجع ملغى."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "أو"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ترجع صحيح إذا كان كلا المٌدخلات صحيح."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ترجع صحيح إذا كان واحد على الأقل من المدخلات صحيح."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "اختبار"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = ":https://ar.wikipedia.org/wiki/%3F"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "إذا كانت العبارة خاطئة"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "إذا كانت العبارة صحيحة"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "تحقق الشرط في 'الاختبار'. إذا كان الشرط صحيح، يقوم بإرجاع قيمة 'اذا كانت العبارة صحيحة'؛ خلاف ذلك يرجع قيمة 'اذا كانت العبارة خاطئة'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ar.wikipedia.org/wiki/حسابيات"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "يرجع مجموع الرقمين."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "يرجع حاصل قسمة الرقمين."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "يرجع الفرق بين الرقمين."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "يرجع حاصل ضرب الرقمين."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "يرجع الرقم الأول مرفوع إلى تربيع الرقم الثاني."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 من X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "عودة قوس ظل النقطة (س، ص) بالدرجات من -180 إلى 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "غير %1 بـ %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "إضف رقم إلى متغير '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ar.wikipedia.org/wiki/ثابت رياضي"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ير جع واحد من الثوابت الشائعة : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "تقيد %1 منخفض %2 مرتفع %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "تقييد العددليكون بين الحدود المحددة (ضمناً)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "قابل للقسمة"; +Blockly.Msg["MATH_IS_EVEN"] = "هو زوجي"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "هو سالب"; +Blockly.Msg["MATH_IS_ODD"] = "هو فرذي"; +Blockly.Msg["MATH_IS_POSITIVE"] = "هو موجب"; +Blockly.Msg["MATH_IS_PRIME"] = "هو أولي"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "تحقق إذا كان عدد ما زوجيا، فرذيا, أوليا، صحيحا،موجبا أو سالبا، أو إذا كان قابلا للقسمة على عدد معين. يرجع صحيح أو خاطئ."; +Blockly.Msg["MATH_IS_WHOLE"] = "هو صحيح"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://tr.wikipedia.org/wiki/عامل_قسمة_مع_باقي"; +Blockly.Msg["MATH_MODULO_TITLE"] = "باقي %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "يرجع الباقي من قسمة الرقمين."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ar.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "عدد ما."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "متوسط القائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "الحد الأقصى لقائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "متوسط القائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "الحد الأدنى من قائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "منوال القائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "عنصر عشوائي من القائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "الانحراف المعياري للقائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "مجموع القائمة"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "يرجع المعدل (الوسط الحسابي) للقيم الرقمية في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "يرجع أكبر عدد في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "يرجع وسيط العدد في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "يرجع أصغر رقم في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "يرجع قائمة من العنصر أو العناصر الأكثر شيوعاً في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "يرجع عنصر عشوائي من القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "يرجع الانحراف المعياري للقائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "يرجع مجموع كافة الأرقام الموجودة في القائمة."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "كسر عشوائي"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "يرجع جزء عشوائي بين 0.0 (ضمنياً) و 1.0 (خارجيا)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = " عدد صحيح عشوائي من %1 إلى %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "يرجع عدد صحيح عشوائي بين حدين محددين, ضمنيا."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ar.wikipedia.org/wiki/تقريب_(رياضيات)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "تقريب"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "تقريب إلى اصغر عدد صحيح"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "تقريب الى اكبر عدد صحيح"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "تقريب الى اكبر عدد صحيح أو الى اصغر عدد صحيح."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ar.wikipedia.org/wiki/جذر_تربيعي"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "الجذر التربيعي"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "يرجع القيمة المطلقة لرقم."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "يرجع ه‍ (e) مرفوعا لأس بقيمة الرقم المدخل."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "يرجع اللوغاريتم الطبيعي لرقم."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "يرجع لوغاريتم عدد معين للاساس 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "يرجع عدد سالب."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "يرجع مضروب الرقم 10 في نفسه ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "يرجع الجذر التربيعي للرقم."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "جيب تمام"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ar.wikipedia.org/wiki/دوال_مثلثية"; +Blockly.Msg["MATH_TRIG_SIN"] = "جيب"; +Blockly.Msg["MATH_TRIG_TAN"] = "ظل"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "يرجع قوس جيب التمام لرقم."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "يرجع قوس الجيب للرقم."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "يرجع قوس الظل للرقم."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "يرجع جيب التمام لدرجة (لا زواية نصف قطرية)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "يرجع جيب التمام لدرجة (لا زواية نصف قطرية)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "يرجع الظل لدرجة (لا دائرة نصف قطرية)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "انشاء متغير لوني..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "انشاء متغير رقمي..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "انشاء متغير نصي..."; +Blockly.Msg["NEW_VARIABLE"] = "إنشاء متغير..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "اسم المتغير الجديد:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "نوع متغير جديد:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اسمح بالبيانات"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "مع:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ar.wikipedia.org/wiki/دالة_(برمجة)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "تشغيل الدالة المعرفة من قبل المستخدم '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ar.wikipedia.org/wiki/دالة_(برمجة)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "تشغيل الدالة المعرفة من قبل المستخدم %1 واستخدام مخرجاتها."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "مع:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "إنشئ '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "صف هذه الوظيفة..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://ar.wikipedia.org/wiki/دالة_(برمجة)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "القيام بشيء ما"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "إلى"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "انشئ دالة بدون مخرجات ."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/دالة_(برمجة)"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "يرجع"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "انشئ دالة مع المخرجات."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "تحذير: هذه الدالة تحتوي على معلمات مكررة."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "تسليط الضوء على تعريف الدالة"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "إذا كانت القيمة صحيحة ، اذان قم بارجاع القيمة الثانية."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "تحذير:هذه القطعة تستخدم فقط داخل تعريف دالة."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "اسم الإدخال:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "أضف مدخلا إلى الوظيفة."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "المدخلات"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "إضافة أو إزالة أو إعادة ترتيب المدخلات لهذه المهمة."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "إعادة"; +Blockly.Msg["REMOVE_COMMENT"] = "أزل التعليق"; +Blockly.Msg["RENAME_VARIABLE"] = "إعادة تسمية المتغير..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "إعادة تسمية كافة المتغيرات '%1' إلى:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "إلى %1 إلصق نص %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "إلصق جزءا من النص إلى متغير '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "الى حروف صغيرة"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "الى حروف العنوان"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "الى حروف كبيرة"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "يرجع نسخة من النص في حالة مختلفة."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "احصل على الحرف الأول"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "الحصول على الحرف # من نهاية"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "الحصول على الحرف #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "احصل على آخر حرف"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "الحصول على حرف عشوائي"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "في النص %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "يرجع حرف ما في الموضع المحدد."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "العدد %1 في %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "احسب كم عدد بعض النصوص تتكرر ضمن نص اخر."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "إضف عنصر إلى النص."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "الانضمام إلى"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "أضف, إحذف, أو أعد ترتيب المقاطع لإعادة تكوين النص من القطع التالية."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "إلى حرف # من نهاية"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "إلى حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "إلى آخر حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "في النص"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "الحصول على سلسلة فرعية من الحرف الأول"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "الحصول على سلسلة حروف فرعية من الحرف # من نهاية"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "الحصول على سلسلة حروف فرعية من الحرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "يرجع جزء معين من النص."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ابحث عن التواجد الأول للنص"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ابحث عن التواجد الأخير للنص"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "في النص %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "تقوم بإرجاع مؤشر التواجد الأول/الأخير للنص الأول في النص الثاني. تقوم بإرجاع %1 إذا لم يتم العثور على النص."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 فارغ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "يرجع \"صحيح\" إذا كان النص المقدم فارغ."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "انشئ نص مع"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "أنشئ جزء من النص بالصاق أي عدد من العناصر ببعضها البعض."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "تقوم بإرجاع عدد الاحرف (بما في ذلك الفراغات) في النص المقدم."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "اطبع %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "اطبع النص المحدد أو العدد أو قيمة أخرى."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "انتظر ادخال المستخذم لرقم ما."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "انتظر ادخال المستخدم لنص ما."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "انتظر ادخال المستخدم لرقم ما مع اظهار رسالة"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "انتظر ادخال المستخدم لنص ما مع اظهار رسالة"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "بدل %1 ب %2 في %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "استبدل جميع حالات حدوث بعض النصوص داخل نص آخر."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "عكس %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "يعكس ترتيب حروف النص"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ar.wikipedia.org/wiki/سلسلة_(علم_الحاسوب)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "حرف أو كلمة أو سطر من النص."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "إزالة الفراغات من كلا الجانبين"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "إزالة الفراغات من الجانب الأيسر من"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "إزالة الفراغات من الجانب الأيمن من"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "يرجع نسخة من النص مع حذف من أحد أو كلا الفراغات من أطرافه."; +Blockly.Msg["TODAY"] = "اليوم"; +Blockly.Msg["UNDO"] = "رجوع"; +Blockly.Msg["UNNAMED_KEY"] = "غير مسمى"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "البند"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "انشئ 'التعيين %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "يرجع قيمة هذا المتغير."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "تعيين %1 إلى %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "انشئ 'احصل على %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "تعيين هذا المتغير لتكون مساوية للقيمة المدخلة."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "المتغير '%1' موجود بالفعل"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "متغير بأسم '%1' معرف من نوع اخر : '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "مساحة عمل بلوكلي"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "قل شيئا..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ast.js b/blockly/msg/ast.js new file mode 100644 index 00000000000..a5d813aba43 --- /dev/null +++ b/blockly/msg/ast.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Encaboxar"; +Blockly.Msg["DIALOG_OK"] = "Aceutar"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/az.js b/blockly/msg/az.js new file mode 100644 index 00000000000..269e0bfa916 --- /dev/null +++ b/blockly/msg/az.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Şərh əlavə et"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' dəyişənini silmək mümkün deyil, çünki o '%2' funksiyasının təyin hissəsidir"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Qiyməti dəyiş:"; +Blockly.Msg["CLEAN_UP"] = "Blokları təmizlə"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Blokları yığ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bloku yığ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "rəng 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "rəng 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "nisbət"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "qarışdır"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "İki rəngi verilmiş nisbətdə (0,0 - 1,0) qarışdırır."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://az.wikipedia.org/wiki/Rəng"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Palitradan bir rəng seçin."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "təsadüfi rəng"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Təsadüfi bir rəng seçin."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "mavi"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "yaşıl"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "qırmızı"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "rənglə"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Qırmızı, yaşıl və mavinin göstərilən miqdarı ilə bir rəng düzəlt. Bütün qiymətlər 0 ilə 100 arasında olmalıdır."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "dövrdən çıx"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "dövrün növbəti addımından davam et"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Cari dövrdən çıx."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Bu dövrün qalanını ötür və növbəti addımla davam et."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Xəbərdarlıq: Bu blok ancaq dövr daxilində istifadə oluna bilər."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "hər element üçün %1 siyahıda %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Siyahıdakı hər element üçün \"%1\" dəyişənini elementə mənimsət və bundan sonra bəzi əmrləri yerinə yetir."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "say: %1 %2 ilə başlayıb, %3 qiymətinə kimi %4 qədər dəyiş"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "\"%1\" dəyişəni başlanğıc ədəddən son ədədə qədər göstərilən aralıqla qiymətlər aldıqca göstərilən blokları yerinə yetir."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"Əgər\" blokuna bir şərt əlavə et."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "\"Əgər\" blokuna qalan bütün halları əhatə edəb son bir şərt əlavə et."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Bu \"əgər\" blokunu dəyişdirmək üçün bölümlərin yenisini əlavə et, sil və ya yerini dəyiş."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "əks halda"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "əks halda əgər"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "əgər"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Əgər qiymət doğrudursa, onda bəzi əmrləri yerinə yetir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Əgər qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda isə ikinci əmrlər blokunu yerinə yetir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir. Əgər qiymətlərdən heç biri doğru deyilsə, onda axırıncı əmrlər blokunu yerinə yetir."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://az.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "icra et"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 dəfə təkrar et"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Bəzi əmrləri bir neçə dəfə yerinə yetir."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "təkrar et, ta ki"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "təkrar et, hələ ki"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Hələ ki, qiymət \"yalan\"dır, bəzi əmrləri yerinə yetir."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Hələ ki, qiymət \"doğru\"dur, bəzi əmrləri yerinə yetir."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Bütün %1 blok silinsin?"; +Blockly.Msg["DELETE_BLOCK"] = "Bloku sil"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' adlı dəyişəni sil"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' dəyişəninin %1 istifadəsini silək?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 bloku sil"; +Blockly.Msg["DIALOG_CANCEL"] = "Ləğv et"; +Blockly.Msg["DIALOG_OK"] = "TAMAM"; +Blockly.Msg["DISABLE_BLOCK"] = "Bloku söndür"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dublikat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Şərhin nüsxəsini yarat"; +Blockly.Msg["ENABLE_BLOCK"] = "Bloku aktivləşdir"; +Blockly.Msg["EXPAND_ALL"] = "Blokları aç"; +Blockly.Msg["EXPAND_BLOCK"] = "Bloku aç"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Xarici girişlər"; +Blockly.Msg["HELP"] = "Kömək"; +Blockly.Msg["INLINE_INPUTS"] = "Sətiriçi girişlər"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "boş siyahı düzəlt"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Heç bir verilən qeyd olunmamış, uzunluğu 0 olan bir siyahı verir"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "siyahı"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Bu siyahı blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "bunlardan siyahı düzəlt"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Siyahıya element əlavə edin."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "İstənilən ölçülü siyahı yaradın."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "birinci"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "axırdan # nömrəli"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "götür"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "götür və sil"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "axırıncı"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "təsadüfi"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "yığışdır"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Siyahının ilk elementini qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Siyahıdan təyin olunmuş indeksli elementi qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Siyahının son elementini qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Siyahıdan hər hansı təsadüfi elementi qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Siyahıdan ilk elementi silir və qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Siyahıdan təyin olunmuş indeksli elementi silir və qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Siyahıdan son elementi silir və qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Siyahıdan təsadufi elementi silir və qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Siyahıdan ilk elementi silir."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Siyahıdan təyin olunmuş indeksli elementi silir."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Siyahıdan son elementi silir."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Siyahıdan təsadüfi bir elementi silir."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "sondan # nömrəliyə"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# nömrəliyə"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "Sonuncuya"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Birincidən alt-siyahını alın"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# sonuncudan alt-siyahını alın"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# - dən alt-siyahını alın"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Siyahının təyin olunmuş hissəsinin surətini yaradın."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 son elementdir."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ilk elementdir."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Element ilə ilk rastlaşma indeksini müəyyən edin"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "Element ilə son rastlaşma indeksini müəyyən edin"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Elementin siyahıda ilk/son rastlaşma indeksini qaytarır. Əgər siyahıda mətn tapılmadısa, %1 qaytarılır."; +Blockly.Msg["LISTS_INLIST"] = "siyahıda"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 boşdur"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Siyahı boşdursa \"doğru\" cavabını qaytarır."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 siyahısının uzunluğu"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Siyahının uzunluğunu verir."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 elementinin %2 dəfə təkrarlandığı siyahı düzəlt"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Təyin olunmuş elementin/qiymətin təyin olunmuş sayda təkrarlandığı siyahını yaradır."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "əksinə dəyiş %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Siyahının nüsxəsini əksinə dəyiş."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "Kimi"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "daxil et"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "təyin et"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Elementi siyahının əvvəlinə daxil edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Elementi siyahıda göstərilən yerə daxil edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Elementi siyahının sonuna artırır."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Elementi siyahıda təsadüfi seçilmiş bir yerə atır."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Siyahıda birinci elementi təyin edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Siyahının göstərilən yerdəki elementini təyin edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Siyahının sonuncu elementini təyin edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Siyahının təsadüfi seçilmiş bir elementini təyin edir."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "artan üzrə"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "azalan üzrə"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 sortlaşdır"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Siyahının nüsxəsini sortlaşdır."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "əlifba üzrə, registrı nəzərə almadan"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "say üzrə"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "əlifba üzrə"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "mətndən siyahı düzəlt"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "siyahıdan mətn düzəlt"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Mətnlər siyahısından ayırıcılarla birgə bir mətn yaradır."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Mətni ayırıcılara görə bölərək mətnlər siyahısı yaradır."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ayırıcıyla"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "səhf"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "\"doğru\" və ya \"səhf\" cavanını qaytarır."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "doğru"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://az.wikipedia.org/wiki/bərabərsizlik_(riyazi)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Girişlər bir birinə bərabərdirsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Birinci giriş ikincidən böyükdürsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Birinci giriş ikincidən böyük və ya bərarbərdirsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Birinci giriş ikincidən kiçikdirsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Birinci giriş ikincidən kiçik və ya bərarbərdirsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Girişlər bərabər deyillərsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 deyil"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Giriş \"yalan\"-dursa \"doğru\" cavabını qaytarır. Giriş \"doğru\"-dursa \"səhf\" cavabını qaytarır."; +Blockly.Msg["LOGIC_NULL"] = "boş"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Boş cavab qaytarır."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "və"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "və ya"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Hər iki giriş \"doğru\"-dursa \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Girişlərdən heç olmasa biri \"doğru\"-dursa \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "əgər səhvdirsə"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "əgər doğrudursa"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'Yoxla' əmrindəki şərtə nəzər yetirin. Əgər şərt \"doğru\"-dursa \"əgər doğru\", əks halda isə \"əgər yalan\" cavabını qaytarır."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://az.wikipedia.org/wiki/Hesab"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "İki ədədin cəmini qaytarır."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "İki ədədin nisbətini qaytarır."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "İki ədədin fərqini qaytarır."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "İki ədədin hasilini verir."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Birinci ədədin ikinci ədəd dərəcəsindən qüvvətini qaytarır."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "(X,Y) nöqtələrinin -180 - 180 dərəcədə arktangensini hesabla."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "dəyiş: %1 buna: %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "'%1' dəyişəninin üzərinə bir ədəd artır."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://az.wikipedia.org/wiki/Riyazi_sabitlər"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ümumi sabitlərdən birini qaytarır π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), və ya ∞ (sonsuzluq)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 üçün ən aşağı %2, ən yuxarı %3 olmağı tələb et"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Bir ədədin verilmiş iki ədəd arasında olmasını tələb edir (sərhədlər də daxil olmaqla)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "bölünür"; +Blockly.Msg["MATH_IS_EVEN"] = "cütdür"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "mənfidir"; +Blockly.Msg["MATH_IS_ODD"] = "təkdir"; +Blockly.Msg["MATH_IS_POSITIVE"] = "müsbətdir"; +Blockly.Msg["MATH_IS_PRIME"] = "sadədir"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Bir ədədin cüt, tək, sadə, tam, müsbət, mənfi olmasını və ya müəyyən bir ədədə bölünməsini yoxlayır. \"Doğru\" və ya \"yalan\" qiymətini qaytarır."; +Blockly.Msg["MATH_IS_WHOLE"] = "tamdır"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 bölməsinin qalığı"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "İki ədədin nisbətindən alınan qalığı qaytarır."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://az.wikipedia.org/wiki/Ədəd"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ədəd."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "siyahının ədədi ortası"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "siyahının maksimumu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "siyahının medianı"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "siyahının minimumu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Siyahı modları( Ən çox rastlaşılan elementləri)"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "siyahıdan təsadüfi seçilmiş bir element"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Siyahının standart deviasiyası"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Siyahının cəmi"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Siyahıdaki ədədlərin ədədi ortasını qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Siyahıdaki ən böyük elementi qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Siyahının median elementini qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Siyahıdaki ən kiçik ədədi qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Siyahıdaki ən çox rastlanan element(lər)dən ibarət siyahı qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Siyahıdan təsadüfi bir element qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Siyahının standart deviasiyasını qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Siyahıdakı bütün ədədlərin cəmini qaytarır."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "təsadüfi kəsr"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (daxil olmaqla) və 1.0 (daxil olmamaqla) ədədlərinin arasından təsadüfi bir kəsr ədəd qaytarır."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1 ilə %2 arasından təsadüfi tam ədəd"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Verilmiş iki ədəd arasından (ədədrlər də daxil olmaqla) təsadüfi bir tam ədəd qaytarır."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "yuvarlaqlaşdır"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "aşağı yuvarlaqlaşdır"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "yuxarı yuvarlaqlaşdır"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Ədədi aşağı və ya yuxari yuvarlaqşdır."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://az.wikipedia.org/wiki/Kvadrat_kökləri"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "modul"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadrat kök"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ədədin modulunu qaytarır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "e sabitinin verilmiş ədədə qüvvətini qaytarır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ədədin natural loqarifmini tapır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ədədin 10-cu dərəcədən loqarifmini tapır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Ədədin əksini qaytarır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10-un verilmiş ədədə qüvvətini qaytarır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ədədin kvadrat kökünü qaytarır."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://az.wikipedia.org/wiki/Triqonometrik_funksiyalar"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tg"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ədədin arccosinusunu qaytarır."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ədədin arcsinusunu qaytarır."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ədədin arctanqensini qaytarır."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Dərəcənin kosinusunu qaytarır (radianın yox)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Dərəcənin sinusunu qaytar (radianın yox)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Dərəcənin tangensini qaytar (radianın yox)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Yeni rəng dəyişəni..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Yeni rəqəm dəyişəni..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Yeni sətir dəyişəni..."; +Blockly.Msg["NEW_VARIABLE"] = "Yeni dəyişən..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Yeni dəyişənin adı:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Yeni dəyişənin tipi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "operatorlara icazə"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ilə:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Yaradılmış '%1' funksiyasını çalışdır."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Yaradılmış '%1' funksiyasını çalışdır və nəticəni istifadə et."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ilə:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' yarat"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Bu funksiyanı təsvir et"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "hansısa əməliyyat"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "icra et:"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Nəticəsi olmayan funksiya yaradır."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "qaytar"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Nəticəsi olan funksiya yaradır."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Xəbərdarlıq: Bu funksiyanın təkrar olunmuş parametrləri var."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Funksiyanın təyinatını vurğula"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Əgər bir dəyər \"doğru\"-dursa onda ikinci dəyəri qaytar."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Xəbərdarlıq: Bu blok ancaq bir funksiyanın təyinatı daxilində işlədilə bilər."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Giriş adı:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Funksiyaya giriş parametrləri əlavə et."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "girişlər"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bu funksiyanın giriş parametrləri üçün əlavə et, sil, və ya yenilə."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "İrəli"; +Blockly.Msg["REMOVE_COMMENT"] = "Şərhi sil"; +Blockly.Msg["RENAME_VARIABLE"] = "Dəyişənin adını dəyiş..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Bütün '%1' dəyişənlərinin adını buna dəyiş:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "bu mətnin sonuna: %1 bu mətni əlavə et: %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' dəyişəninin sonuna nəsə əlavə et."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "kiçik hərflərlə"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Baş Hərflərlə"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "BÖYÜK HƏRFLƏRLƏ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Mətndə hərflərin böyük-kiçikliyini dəyiş."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "birinci hərfi götür"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "axırdan bu nömrəli hərfi götür"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "bu nömrəli hərfi götür"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "axırıncı hərfi götür"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "təsadüfi hərf götür"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "mətndə %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Göstərilən mövqedəki hərfi qaytarır."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2 içindən %1 sayını hesabla"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Hesablayaq, mətnin bu hissəsi başqa mətndə neçə dəfə rast gəlinir."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Mətnə bir element əlavə et."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "birləşdir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Bu mətn blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "axırdan bu nömrəli hərfə qədər"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bu nömrəli hərfə qədər"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "son hərfə qədər"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "mətndə"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "Mətnin surətini ilk hərfdən"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "Mətnin surətini sondan bu nömrəli # hərfdən"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "Mətnin surətini bu nömrəli hərfdən"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Mətnin təyin olunmuş hissəsini qaytarır."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "Bu mətn ilə ilk rastlaşmanı tap:"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "Bu mətn ilə son rastlaşmanı tap:"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "mətndə %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Birinci mətnin ikinci mətndə ilk/son rastlaşma indeksini qaytarır. Əgər rastlaşma baş verməzsə, %1 qaytarır."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 boşdur"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Verilmiş mətn boşdursa, doğru qiymətini qaytarır."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "Verilmişlərlə mətn yarat"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "İxtiyari sayda elementlərinin birləşməsi ilə mətn parçası yarat."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 - ın uzunluğu"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Verilmiş mətndəki hərflərin(sözlər arası boşluqlar sayılmaqla) sayını qaytarır."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 - i çap elə"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Təyin olunmuş mətn, ədəd və ya hər hansı bir başqa elementi çap elə."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "İstifadəçiyə ədəd daxil etməsi üçün sorğu/tələb göndərin."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "İstifadəçiyə mətn daxil etməsi üçün sorğu/tələb göndərin."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "İstifadəçiyə ədəd daxil etməsi üçün sorğunu/tələbi ismarıc kimi göndərin"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "İstifadəçiyə mətn daxil etməsi üçün sorğunu/tələbi ismarıc ilə göndərin"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%3 -də %1 əvəz et %2"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Bütün uyğunluqlu bəzi mətnlərin digər bəzi mətnlərə dəyişdirilməsi."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "əksinə dəyiş %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Mətndəki simvolların ardıcıllığını əksinə dəyiş."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Mətndəki hərf, söz və ya sətir."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "boşluqları hər iki tərəfdən pozun"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "boşluqlari yalnız sol tərəfdən pozun"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "boşluqları yalnız sağ tərəfdən pozun"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Mətnin hər iki və ya yalnız bir tərəfdən olan boşluqları pozulmuş surətini qaytarın."; +Blockly.Msg["TODAY"] = "Bugün"; +Blockly.Msg["UNDO"] = "Geri"; +Blockly.Msg["UNNAMED_KEY"] = "adsız"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 - i təyin et' - i yarat"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Bu dəyişənin qiymətini qaytarır."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "%1 - i bu qiymət ilə təyin et: %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 - i götür' - ü yarat"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Bu dəyişəni daxil edilmiş qiymətə bərabər edir."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' adlı dəyişən artıq mövcuddur."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' adlı dəyişən artıq '%2': tipində istifadə edilir ."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Buraya nə isə yaz..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ba.js b/blockly/msg/ba.js new file mode 100644 index 00000000000..416aad60bb1 --- /dev/null +++ b/blockly/msg/ba.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Фекер өҫтәргә"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Мәғәнәне үҙгәртегеҙ:"; +Blockly.Msg["CLEAN_UP"] = "Блоктарҙы таҙартырға"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Блоктарҙы төрөргә"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Блокты төрөргә"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1-се төҫ"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2-се төҫ"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "1-се төҫтөң өлөшө"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ҡатнаштырырға"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Ике төҫтө бирелгән нисбәттә болғата (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Төҫ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Палитранан төҫ һайлағыҙ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "осраҡлы төҫ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Төҫтө осраҡлылыҡ буйынса һайлай."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "зәңгәр"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "йәшелдән"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ҡыҙылдан"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ошонан төҫ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Бирелгән нисбәттәрҙә ҡыҙылдан, йәшелдән һәм зәңгәрҙән төҫ барлыҡҡа килә. Бөтә мәғәнәләр 0 менән 100 араһында булырға тейеш."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "циклдан сығырға"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "циклдың киләһе аҙымына күсергә"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Был циклды өҙә."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Циклдың ҡалдығын төшөрөп ҡалдыра һәм киләһе аҙымға күсә."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Иҫкәртеү: был блок цикл эсендә генә ҡулланыла ала."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "һәр элемент өсөн %1 исемлектә %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Исемлектәге һәр элемент өсөн үҙгәреүсәнгә элементтың '%1' мәғәнәһен бирә һәм күрһәтелгән командаларҙы үтәй."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Үҙгәреүсәнгә башынан аҙағына тиклем тәғәйен аҙым менән %1 мәғәнәне бирә һәм күрһәтелгән командаларҙы үтәй."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"Әгәр\" блогына шарт өҫтәй"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Бер шарт та дөрөҫ булмаған осраҡҡа йомғаҡлау ярҙамсы блогын өҫтәргә."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "\"Әгәр\" блогын ҡабаттан төҙөү өсөн киҫәктәрҙе өҫтәгеҙ, юйҙырығыҙ, урындарын алмаштырығыҙ."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "юғиһә"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "юғиһә, әгәр"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "әгәр"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Мәғәнә дөрөҫ булғанда, командаларҙы үтәй."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Шарт дөрөҫ булғанда, командаларҙың беренсе блогын үтәй. Улай булмаһа, командаларҙың икенсе блогы үтәлә."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Әгәр икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй. Бер шарт та дөрөҫ булмаһа, команда блоктарының һуңғыһын үтәй."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/Цикл_(программалау)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "үтәргә"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = " %1 тапҡыр ҡабатларға"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Командаларҙы бер нисә тапҡыр үтәй."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ҡабатларға, әлегә юҡ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ҡабатларға, әлегә"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Мәғәнә ялған булғанда, командаларҙы ҡабатлай."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Мәғәнә дөрөҫ булғанда, командаларҙы ҡабатлай."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Бөтә %1 блоктарҙы юйырғамы?"; +Blockly.Msg["DELETE_BLOCK"] = "Блокты юйҙырырға"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = " %1 блокты юйҙырырға"; +Blockly.Msg["DIALOG_CANCEL"] = " Баш тартыу"; +Blockly.Msg["DIALOG_OK"] = "Яҡшы"; +Blockly.Msg["DISABLE_BLOCK"] = "Блокты һүндерергә"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Күсереп алырға"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Блокты тоҡандырырға"; +Blockly.Msg["EXPAND_ALL"] = "Блоктарҙы йәйергә"; +Blockly.Msg["EXPAND_BLOCK"] = "Блокты йәйергә"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Тышҡы өҫтәлмә"; +Blockly.Msg["HELP"] = "Ярҙам"; +Blockly.Msg["INLINE_INPUTS"] = "Эске өҫтәлмә"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "исемлек"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "менән исемлек төҙөргә"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "беренсе"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# аҙағынан"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "алырға"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "алырға һәм юйырға"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "аҙаҡҡы"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "осраҡлы"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "юйырға"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "исемлеккә"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 буш"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "оҙонлоғо %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "кеүек"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "өҫтәп ҡуйырға"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "йыйылма"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ялған"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Дөрөҫ йәки ялғанды ҡайтара."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "дөрөҫ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(математика)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Өҫтәмәләр тигеҙ булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Беренсе өҫтәмә икенсеһенән ҙурыраҡ булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Беренсе өҫтәмә икенсеһенән бәләкәйерәк булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Өҫтәмәләр тигеҙ булмаһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 түгел"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Өҫтәлмә ялған булһа, дөрөҫ аңлатманы ҡайтара. Өҫтәлмә дөрөҫ булһа, ялған аңлатманы ҡайтара."; +Blockly.Msg["LOGIC_NULL"] = "нуль"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Нулде ҡайтара."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "һәм"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "йәки"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Әгәр ҙә ике өҫтәлмә лә тап килһә, дөрөҫ аңлатманы кире ҡайтара."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Өҫтәлмәләрҙең береһе генә дөрөҫ булһа, дөрөҫ аңлатманы ҡайтара."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тест"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "әгәр ялған булһа"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "әгәр дөрөҫ булһа"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Һайлау шартын тикшерә. Әгәр ул дөрөҫ булһа, беренсе мәғәнәне, хата булһа, икенсе мәғәнәне ҡайтара."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ba.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ике һандың суммаһын ҡайтара."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ике һандың бүлендеген ҡайтара."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ике һандың айырмаһын ҡайтара."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ике һандың ҡабатландығын ҡайтара."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Дәрәжәгә күтәрелгән икенсе һандан тәүгеһенә ҡайтара."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ba.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 тан %2 ҡа арттырырға"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Үҙгәреүсән һанға өҫтәй '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ba.wikipedia.org/wiki/Математик_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Таралған константаның береһен күрһәтә: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) йәки ∞ (сикһеҙлек)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "сикләргә %1 аҫтан %2 өҫтән %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Һанды аҫтан һәм өҫтән сикләй (сиктәгеләрен индереп)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "бүленә"; +Blockly.Msg["MATH_IS_EVEN"] = "тағы"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "тиҫкәре"; +Blockly.Msg["MATH_IS_ODD"] = "сәйер"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ыңғай"; +Blockly.Msg["MATH_IS_PRIME"] = "ябай"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Һандың йоп, таҡ, ябай, бөтөн, ыңғай, кире йәки билдәле һанға ҡарата ниндәй булыуын тикшерә. Дөрөҫ йә ялған мәғәнәһен күрһәтә."; +Blockly.Msg["MATH_IS_WHOLE"] = "бөтөн"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ba.wikipedia.org/wiki/Ҡалдыҡ_менән_бүлеү"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ҡалдыҡ %1 : %2 араһында"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Ике һанды бүлеү ҡалдығын күрһәтә."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ba.wikipedia.org/wiki/Һан"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Рәт."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "исемлектең уртаса арифметик дәүмәле"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "исемлектәге иң ҙуры"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "исемлек медианаһы"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Исемлектәге иң бәләкәйе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "исемлек модалары"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "исемлектең осраҡлы элементы"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "исемлекте стандарт кире ҡағыу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "исемлек суммаһы"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Исемлектең уртаса арифметик дәүмәле күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Исемлектең иң ҙур һанын күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Исемлек медианаһын күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Исемлектәге иң бәләкәй һанды күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Исемлектең иң күп осраған элементтарын күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Исемлектең осраҡлы элементын күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Исемлекте стандарт кире ҡағыуҙы күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Исемлектәрҙәге һандар суммаһын күрһәтә."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "0 (үҙен дә индереп) һәм 1 араһындағы осраҡлы һан"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1-ҙән %2-гә тиклем осраҡлы бөтөн һан"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Ике бирелгән һан араһындағы (үҙҙәрен дә индереп) осраҡлы һанды күрһәтә."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ba.wikipedia.org/wiki/Т=Түңәрәкләү"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "түңәрәк"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "бәләкәйгә тиклем түңәрәкләргә"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ҙурына тиклем түңәрәкләргә"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Һанды ҙурына йә бәләкәйенә тиклем түңәрәкләргә."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ba.wikipedia.org/wiki/Квадрат_тамыр"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "абсолют"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадрат тамыр"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Һандың модулен ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Күрһәтелгән дәрәжәлә ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Һандың натураль логаритмын ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Һандың унынсы логаритмын ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Кире һанды ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Күрһәтелгән 10-сы дәрәжәлә ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Һандың квадрат тамырын ҡайтара."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ba..wikipedia.org/wiki/Тригонометрик_функциялар"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Арккосинусты градустарҙа күрһәтә."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Арксинусты градустарҙа күрһәтә."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Арктангенсты градустарҙа күрһәтә."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Мөйөштөң косинусын градустарҙа ҡайтара."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Мөйөштөң синусын градустарҙа ҡайтара."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Мөйөштөң тангенсын градустарҙа күрһәтә."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Яңы үҙгәреүсән..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Яңы үҙгәреүсәндең исеме:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' төҙөргә"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "кире ҡайтарыу"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "инеү исеме:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "инеү"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "документтарҙы үҙгәртергә"; +Blockly.Msg["REMOVE_COMMENT"] = "Аңлатмаларҙы юйырға"; +Blockly.Msg["RENAME_VARIABLE"] = "Үҙгәреүсәндең исемен алмаштырырға..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Бөтә '%1' үҙгәреүсәндәрҙең исемен ошолай алмаштырырға:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Үҙгәреүсән «%1»-гә текст өҫтәргә."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "тәүге хәрефте алырға"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "№ хәрефен аҙаҡтан алырға"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "хат алырға #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "һуңғы хәрефте алырға"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "осраҡлы хәрефте алырға"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Текстҡа элемент өҫтәү."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ҡушылығыҙ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# хатҡа"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "һуңғы хәрефкә тиклем"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "текста"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "текстың тәүге инеүен табырға"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "Текстың һуңғы инеүен табырға"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "текстҡа %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 буш"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "текст төҙөргә"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Элементтарҙың теләһә күпме һанын берләштереп текст фрагментын булдыра."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "оҙонлоғо %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Бирелгән текстағы символдар һанын (буш урындар менән бергә) кире ҡайтара."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 баҫтырырға"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Текстың хәрефе, һүҙе йәки юлы."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Бөгөн"; +Blockly.Msg["UNDO"] = "Кире алырға"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/bcc.js b/blockly/msg/bcc.js new file mode 100644 index 00000000000..73d268769ca --- /dev/null +++ b/blockly/msg/bcc.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "افزودن نظر"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "تغییر مقدار:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "فروپاشی بلوک‌ها"; +Blockly.Msg["COLLAPSE_BLOCK"] = "فروپاشی بلوک"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ ۱"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ ۲"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "مخلوط"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "انتخاب یک رنگ از تخته‌رنگ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رنگ تصادفی"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "انتخاب یک رنگ به شکل تصادفی."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "آبی"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سبز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "قرمز"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رنگ با"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "شکستن حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ادامه با تکرار بعدی حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "شکستن حلقهٔ شامل."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "برای هر مورد %1 در فهرست %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "با تعداد %1 از %2 به %3 با گام‌های %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "افزودن یک شرط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "آنگاه"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "اگر آنگاه"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AD%D9%84%D9%82%D9%87_%D9%81%D9%88%D8%B1"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "انجام"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 بار تکرار"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "انجام چند عبارت چندین بار."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تکرار تا"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تکرار در حالی که"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "حذف بلوک"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "حذف بلوک‌های %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "غیرفعال‌سازی بلوک"; +Blockly.Msg["DUPLICATE_BLOCK"] = "تکراری"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "فعال‌سازی بلوک"; +Blockly.Msg["EXPAND_ALL"] = "گسترش بلوک‌ها"; +Blockly.Msg["EXPAND_BLOCK"] = "گسترش بلوک"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ورودی‌های خارجی"; +Blockly.Msg["HELP"] = "کومک"; +Blockly.Msg["INLINE_INPUTS"] = "ورودی‌های درون خطی"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ایجاد فهرست خالی"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لیست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ایجاد فهرست با"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "اضافه‌کردن یک مورد به فهرست."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "فهرستی از هر عددی از موارد می‌سازد."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "اولین"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# از انتها"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گرفتن"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گرفتن و حذف‌کردن"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "اهرین"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "یکپارگی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حذف‌کردن"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "اولین مورد یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "موردی در محل مشخص‌شده بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "آخرین مورد در یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "یک مورد تصادفی در یک فهرست بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "اولین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "آخرین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "یک مورد تصادفی را یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "به # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "به #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "به آخرین"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "گرفتن زیرمجموعه‌ای از ابتدا"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "چݔر چیزے گِرَگ چہ # ءِ آھرا"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "گرفتن زیرمجموعه‌ای از #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 آخرین مورد است."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 اولین مورد است."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "آھری نبشتانکء بیتگݔنا درگݔج"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "یافتن آخرین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر متن موجود نبود."; +Blockly.Msg["LISTS_INLIST"] = "مہ لیست‌ئا"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "اگر فهرست خالی است مقدار صجیج بر می‌گرداند."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "طول یک فهرست را برمی‌گرداند."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "به‌عنوان"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "جاہ دیگ مہ"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "مجموعه"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "موردی به ته فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "موردی به ته فهرست الحاق می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "مورد را به صورت تصادفی در یک فهرست می‌افزاید."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "اولین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "مورد مشخص‌شده در یک فهرست را قرار می‌دهد."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "آخرین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "یک مورد تصادفی در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ناصحیح"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "بازگرداندن یکی از صحیح یا ناصحیح."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "صحیح"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد."; +Blockly.Msg["LOGIC_NULL"] = "تهی"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "تهی بازمی‌گرداند."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمایش"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر ناصحیح"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر صحیح"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "بازگرداندن مقدار جمع دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "بازگرداندن باقی‌ماندهٔ دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "بازگرداندن تفاوت دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "بازگرداندن حاصلضرب دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "تغییر %1 با %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "افزودن یک عدد به متغیر '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "محدودکردن %1 پایین %2 بالا %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "تقسیم شده بر"; +Blockly.Msg["MATH_IS_EVEN"] = "زوج است"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی است"; +Blockly.Msg["MATH_IS_ODD"] = "فرد است"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت است"; +Blockly.Msg["MATH_IS_PRIME"] = "عدد اول است"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند."; +Blockly.Msg["MATH_IS_WHOLE"] = "کامل است"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87"; +Blockly.Msg["MATH_MODULO_TITLE"] = "باقی‌ماندهٔ %1 + %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "یک عدد."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "میانگین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بزرگ‌ترین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "میانهٔ فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "کوچکترین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "مد فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "مورد تصادفی از فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "انحراف معیار فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جمع فهرست"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "بزرگ‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "میانهٔ عدد در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "کوچک‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "موردی تصادفی از فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "انحراف معیار فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "جمع همهٔ عددهای فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "کسر تصادفی"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "عدد صحیح تصادفی بین %1 تا %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گردکردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "گرد به پایین"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "گرد به بالا"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "گردکردن یک عدد به بالا یا پایین."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ریشهٔ دوم"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "قدر مطلق یک عدد را بازمی‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "بازگرداندن توان e یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "لوگاریتم طبیعی یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "منفی‌شدهٔ یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "بازگرداندن توان ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ریشهٔ دوم یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "بازگرداندن آرک‌کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "بازگرداندن آرک‌سینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "بازگرداندن آرک‌تانژانت درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "بازگرداندن کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "بازگرداندن سینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "بازگرداندن تانژانت یک درجه (نه رادیان)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "متغیر تازه..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نام متغیر تازه:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اجازه اظهارات"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1»."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "ساختن «%1»"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "انجام چیزی"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "به"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "تابعی می‌سازد بدون هیچ خروجی."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "بازگشت"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "تابعی با یک خروجی می‌سازد."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "اخطار: این تابعی پارامتر تکراری دارد."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "برجسته‌سازی تعریف تابع"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نام ورودی:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "اضافه کردن ورودی به تابع."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ورودی‌ها"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "حذف نظر"; +Blockly.Msg["RENAME_VARIABLE"] = "تغییر نام متغیر..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تغییر نام همهٔ متغیرهای «%1» به:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "به %1 الحاق متن %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "الحاق متنی به متغیر «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "به حروف کوچک"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "به حروف بزرگ عنوان"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "به حروف بزرگ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "بازگرداندن کپی متن در حالتی متفاوت."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "گرفتن اولین حرف"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "گرفتن حرف # از آخر"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "گرفتن حرف #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "گرفتن آخرین حرف"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "گرفتن حرف تصادفی"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "حرفی در موقعیت مشخص‌شده بر می‌گرداند."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "افزودن یک مورد به متن."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "عضویت"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "به حرف # از انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "به حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "گرفتن آخرین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "مہ نبشتہ‌ئا"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "گرفتن زیرمتن از اولین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "گرفتن زیرمتن از حرف # به انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "گرفتن زیرمتن از حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "اولی نبشتانکء بیتگݔنا درگݔج"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "آھری نبشتانکء بیتگݔنا درگݔج"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "در متن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ایجاد متن با"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "چاپ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "اعلان برای کاربر با یک عدد."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "اعلان برای کاربر برای یک متن."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "اعلان برای عدد با پیام"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "اعلان برای متن با پیام"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "یک حرف، کلمه یا خطی از متن."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "تراشیدن فاصله‌ها از هر دو طرف"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "مورد"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "درست‌کردن «تنظیم %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "مقدار این متغیر را بر می‌گرداند."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "مجموعه %1 به %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "درست‌کردن «تنظیم %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "متغیر برابر با خروجی را مشخص می‌کند."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/be-tarask.js b/blockly/msg/be-tarask.js new file mode 100644 index 00000000000..3434ead22cf --- /dev/null +++ b/blockly/msg/be-tarask.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Дадаць камэнтар"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Немагчыма выдаліць зьменную «%1», таму што яна зьяўляецца часткай вызначэньня функцыі «%2»"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Зьмяніць значэньне:"; +Blockly.Msg["CLEAN_UP"] = "Ачысьціць блёкі"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Згорнутыя блёкі ўтрымліваюць папярэджаньні."; +Blockly.Msg["COLLAPSE_ALL"] = "Згарнуць блёкі"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Згарнуць блёк"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "колер 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "колер 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "дзеля"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "зьмяшаць"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Зьмешвае два колеры ў дадзенай прапорцыі (0.0 — 1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%B5%D1%80"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Абярыце колер з палітры."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "выпадковы колер"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Абраць выпадковы колер."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "сіняга"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зялёнага"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "чырвонага"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "колер з"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Стварыць колер з абранымі прапорцыямі чырвонага, зялёнага і сіняга. Усе значэньні павінны быць ад 0 да 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "перарваць цыкль"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "працягнуць з наступнага кроку цыклю"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Спыніць гэты цыкль."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Прапусьціць рэшту цыклю і перайсьці да наступнага кроку."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Увага: гэты блёк можа быць выкарыстаны толькі ў цыклі."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для кожнага элемэнта %1 у сьпісе %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для кожнага элемэнту сьпісу прысвойвае зьменнай '%1' ягонае значэньне і выконвае пэўныя апэрацыі."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "лічыць з %1 ад %2 да %3 па %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Прысвойвае зьменнай \"%1\" значэньні ад пачатковага да канчатковага значэньня, улічваючы зададзены крок, і выконвае абраныя блёкі."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Дадаць умову да блёку «калі»."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Дадаць заключную ўмову для ўсіх астатніх варыянтаў блёку «калі»."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку «калі»."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "інакш"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "інакш, калі"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "калі"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Калі значэньне ісьціна, выканаць пэўныя апэрацыі."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Калі значэньне ісьціна, выканаць першы блёк апэрацыяў, інакш выканаць другі блёк."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў. Калі ніводнае з значэньняў не сапраўднае, выканаць апошні блёк апэрацыяў."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "выканаць"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "паўтарыць %1 раз(ы)"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Выконвае апэрацыі некалькі разоў."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "паўтараць, пакуль не"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "паўтараць, пакуль"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Пакуль значэньне хлусьня, выконваць пэўныя апэрацыі."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Пакуль значэньне ісьціна, выконваць пэўныя апэрацыі."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Выдаліць усе блёкі %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Выдаліць блёк"; +Blockly.Msg["DELETE_VARIABLE"] = "Выдаліць зьменную «%1»"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Выдаліць %1 выкарыстаньняў зьменнай «%2»?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Выдаліць %1 блёкі"; +Blockly.Msg["DIALOG_CANCEL"] = "Скасаваць"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Адключыць блёк"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Капіяваць"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Прадубляваць камэнтар"; +Blockly.Msg["ENABLE_BLOCK"] = "Уключыць блёк"; +Blockly.Msg["EXPAND_ALL"] = "Разгарнуць блёкі"; +Blockly.Msg["EXPAND_BLOCK"] = "Разгарнуць блёк"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Зьнешнія ўваходы"; +Blockly.Msg["HELP"] = "Дапамога"; +Blockly.Msg["INLINE_INPUTS"] = "Унутраныя ўваходы"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "стварыць пусты сьпіс"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Вяртае сьпіс даўжынёй 0, які ня ўтрымлівае запісаў зьвестак"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "сьпіс"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "стварыць сьпіс з"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Дадаць элемэнт да сьпісу."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ставарае сьпіс зь любой колькасьцю элемэнтаў."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "першы"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ з канца"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "атрымаць"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "атрымаць і выдаліць"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "апошні"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "выпадковы"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "выдаліць"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Вяртае першы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Вяртае элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Вяртае апошні элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Вяртае выпадковы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Выдаляе і вяртае першы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Выдаляе і вяртае элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Выдаляе і вяртае апошні элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Выдаляе і вяртае выпадковы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Выдаляе першы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Выдаляе элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Выдаляе апошні элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Выдаляе выпадковы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "па № з канца"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "да #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "да апошняга"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "атрымаць падсьпіс зь першага"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "атрымаць падсьпіс з № з канца"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "атрымаць падсьпіс з №"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Стварае копію пазначанай часткі сьпісу."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "№%1 — апошні элемэнт."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "№%1 — першы элемэнт."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "знайсьці першае ўваходжаньне элемэнту"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "знайсьці апошняе ўваходжаньне элемэнту"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Вяртае індэкс першага/апошняга ўваходжаньня элемэнту ў сьпіс. Вяртае %1, калі элемэнт ня знойдзены."; +Blockly.Msg["LISTS_INLIST"] = "у сьпісе"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 пусты"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Вяртае значэньне ісьціна, калі сьпіс пусты."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "даўжыня %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Вяртае даўжыню сьпісу."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "стварыць сьпіс з элемэнту %1, які паўтараецца %2 разоў"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Стварае сьпіс, які ўтрымлівае пададзеную колькасьць копіяў элемэнту."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "адваротна %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Зьмяняе парадак копіі сьпісу на адваротны."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "як"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "уставіць у"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "усталяваць"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Устаўляе элемэнт у пачатак сьпісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Устаўляе элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Дадае элемэнт у канец сьпісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Выпадковым чынам устаўляе элемэнт у сьпіс."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Задае першы элемэнт у сьпісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Задае элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Задае апошні элемэнт у сьпісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Задае выпадковы элемэнт у сьпісе."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "па павелічэньні"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "па зьмяншэньні"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сартаваць %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сартаваць копію сьпісу."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "паводле альфабэту, ігнараваць рэгістар"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "як лікі"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "паводле альфабэту"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "стварыць сьпіс з тэксту"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "стварыць тэкст са сьпісу"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Аб’ядноўвае сьпіс тэкстаў у адзін тэкст па падзяляльніках."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Падзяліць тэкст у сьпіс тэкстаў, па падзяляльніках."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "з падзяляльнікам"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "хлусьня"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Вяртае «ісьціна» ці «хлусьня»."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ісьціна"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9D%D1%8F%D1%80%D0%BE%D1%9E%D0%BD%D0%B0%D1%81%D1%8C%D1%86%D1%8C"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Вяртае «ісьціна», калі абодва ўводы роўныя."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Вяртае «ісьціна», калі першы ўвод большы за другі."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Вяртае «ісьціна», калі першы ўвод большы ці роўны другому."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Вяртае «ісьціна», калі першы ўвод меншы за другі."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Вяртае «ісьціна», калі першы ўвод меншы ці роўны другому."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Вяртае «ісьціна», калі абодва ўводы ня роўныя."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Вяртае «ісьціна», калі ўвод непраўдзівы. Вяртае «хлусьня», калі ўвод праўдзівы."; +Blockly.Msg["LOGIC_NULL"] = "нічога"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Вяртае нічога."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "і"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ці"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Вяртае «ісьціна», калі абодва ўводы праўдзівыя."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Вяртае «ісьціна», калі прынамсі адзін з уводаў праўдзівы."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тэст"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "калі хлусьня"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "калі ісьціна"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Праверыць умову ў 'тэст'. Калі ўмова праўдзівая, будзе вернутае значэньне «калі ісьціна»; інакш будзе вернутае «калі хлусьня»."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%82%D0%BC%D1%8D%D1%82%D1%8B%D0%BA%D0%B0"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Вяртае суму двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Вяртае дзель двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Вяртае рознасьць двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Вяртае здабытак двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Вяртае першы лік у ступені другога ліку."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ад X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Вяртае арктангенс пункту (X, Y) у градусах ад -180 да 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "зьмяніць %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Дадае лічбу да зьменнай '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%8D%D0%BC%D0%B0%D1%82%D1%8B%D1%87%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B0"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Вяртае адну з агульных канстантаў: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0,707...) або ∞ (бясконцасьць)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "абмежаваць %1 зьнізу %2 зьверху %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Абмяжоўвае колькасьць ніжняй і верхняй межамі (уключна)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "дзеліцца на"; +Blockly.Msg["MATH_IS_EVEN"] = "парная"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "адмоўная"; +Blockly.Msg["MATH_IS_ODD"] = "няпарная"; +Blockly.Msg["MATH_IS_POSITIVE"] = "дадатная"; +Blockly.Msg["MATH_IS_PRIME"] = "простая"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Правярае, ці зьяўляецца лік парным, няпарным, простым, станоўчым, адмоўным, ці ён дзеліцца на пэўны лік без астатку. Вяртае значэньне ісьціна або няпраўда."; +Blockly.Msg["MATH_IS_WHOLE"] = "цэлая"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "рэшта дзяленьня %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Вяртае рэшту дзяленьня двух лікаў."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9B%D1%96%D0%BA"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Лік."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "сярэдняя ў сьпісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "мінімальная ў сьпісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "мэдыяна сьпісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "мінімальная ў сьпісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "рэжымы сьпісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "выпадковы элемэнт сьпісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартнае адхіленьне сьпісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Сума сьпісу"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Вяртае сярэднеарытмэтычнае значэньне лікавых значэньняў у сьпісе."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Вяртае найменшы лік у сьпісе."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Вяртае мэдыяну сьпісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Вяртае найменшы лік у сьпісе."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Вяртае сьпіс самых распаўсюджаных элемэнтаў у сьпісе."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Вяртае выпадковы элемэнт сьпісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Вяртае стандартнае адхіленьне сьпісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Вяртае суму ўсіх лікаў у сьпісе."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "выпадковая дроб"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Вяртае выпадковую дроб у дыяпазоне ад 0,0 (уключна) да 1,0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "выпадковая цэлая з %1 для %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Вяртае выпадковы цэлы лік паміж двума зададзенымі абмежаваньнямі ўключна."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "акругліць"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "акругліць да меншага"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "акругліць да большага"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Акругленьне ліку да большага ці меншага."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D1%8B_%D0%BA%D0%BE%D1%80%D0%B0%D0%BD%D1%8C"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратны корань"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Вяртае модуль ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Вяртае e ў ступені ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Вяртае натуральны лягарытм ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Вяртае дзесятковы лягарытм ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Вяртае супрацьлеглы лік."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Вяртае 10 у ступені ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Вяртае квадратны корань ліку."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%A2%D1%80%D1%8B%D0%B3%D0%B0%D0%BD%D0%B0%D0%BC%D1%8D%D1%82%D1%80%D1%8B%D1%8F#.D0.A2.D1.80.D1.8B.D0.B3.D0.B0.D0.BD.D0.B0.D0.BC.D1.8D.D1.82.D1.80.D1.8B.D1.87.D0.BD.D1.8B.D1.8F_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.8B.D1.96"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Вяртае арккосынус ліку."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Вяртае арксынус ліку."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Вяртае арктангэнс ліку."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Вяртае косынус кута ў градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Вяртае сынус кута ў градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Вяртае тангэнс кута ў градусах."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Стварыць зьменную колеру…"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Стварыць лікавую зьменную…"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Стварыць радковую зьменную…"; +Blockly.Msg["NEW_VARIABLE"] = "Стварыць зьменную…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Імя новай зьменнай:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Новы тып зьменнай:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дазволіць зацьвярджэньне"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Запусьціць функцыю вызначаную карыстальнікам '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Запусьціць функцыю вызначаную карыстальнікам '%1' і выкарыстаць яе вынік."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Стварыць '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Апішыце гэтую функцыю…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "зрабіць што-небудзь"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "да"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Стварае функцыю бяз выніку."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "вярнуць"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Стварае функцыю з вынікам."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Увага: гэтая функцыя мае парамэтры-дублікаты."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Падсьвяціць вызначэньне функцыі"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Калі значэньне ісьціна, вярнуць другое значэньне."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Папярэджаньне: гэты блёк можа выкарыстоўвацца толькі ў вызначанай функцыі."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "назва парамэтру:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Дадаць уваходныя парамэтры ў функцыю."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "парамэтры"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Дадаць, выдаліць ці запісаць чаргу ўваходных парамэтраў для гэтай функцыі."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Паўтарыць"; +Blockly.Msg["REMOVE_COMMENT"] = "Выдаліць камэнтар"; +Blockly.Msg["RENAME_VARIABLE"] = "Перайменаваць зьменную…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Перайменаваць усе назвы зьменных '%1' на:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "да %1 дадаць тэкст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Дадаць які-небудзь тэкст да зьменнай '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "да ніжняга рэгістру"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Вялікія Першыя Літары"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "да ВЕРХНЯГА РЭГІСТРУ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Вярнуць копію тэксту зь іншай велічынёй літар."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "узяць першую літару"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "узяць літару № з канца"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "узяць літару №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "узяць апошнюю літару"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "узяць выпадковую літару"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "у тэксьце %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Вяртае літару ў пазначанай пазыцыі."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "падлічыць %1 сярод %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Падлічвае колькі разоў нейкі тэкст сустракаецца ўнутры нейкага іншага тэксту."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Дадаць элемэнт да тэксту."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "далучыць"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Дадайце, выдаліце ці зьмяніце парадак разьдзелаў для перадачы тэкставага блёку."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "да літары № з канца"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "да літары №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "да апошняй літары"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тэксьце"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "атрымаць падрадок зь першай літары"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "узяць падрадок зь літары № з канца"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "узяць падрадок зь літары №"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Вяртае пазначаную частку тэксту."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "знайсьці першае ўваходжаньне тэксту"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "знайсьці апошняе ўваходжаньне тэксту"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тэксьце %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Вяртае індэкс першага/апошняга ўваходжаньня першага тэксту ў другі тэкст. Вяртае %1, калі тэкст ня знойдзены."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 пусты"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Вяртае значэньне ісьціна, калі тэкст пусты."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "стварыць тэкст з"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Стварае фрагмэнт тэксту аб’яднаньнем любой колькасьці элемэнтаў."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "даўжыня %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Вяртае колькасьць літараў (у тым ліку прабелы) у пададзеным тэксьце."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "друкаваць %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Надрукаваць пазначаны тэкст, лічбу ці іншыя сымбалі."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запытаць у карыстальніка лічбу."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запытаць у карыстальніка тэкст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запытаць лічбу з падказкай"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запытаць тэкст з падказкай"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замяніць %1 на %2 у %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замяняе ўсе выпадкі нейкага тэксту на іншы тэкст."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "адваротна %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Мяняе парадак сымбаляў у тэксьце на адваротны."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Літара, слова ці радок тэксту."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "абрэзаць прабелы з абодвух бакоў"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "абрэзаць прабелы зь левага боку"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "абрэзаць прабелы з правага боку"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Вяртае копію тэксту з прабеламі, выдаленымі ад аднаго ці абодвух бакоў."; +Blockly.Msg["TODAY"] = "Сёньня"; +Blockly.Msg["UNDO"] = "Скасаваць"; +Blockly.Msg["UNNAMED_KEY"] = "безназоўны"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "аб’ект"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Стварыць блёк «усталяваць %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Вяртае значэньне гэтай зьменнай."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "усталяваць %1 да %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Стварыць блёк «атрымаць %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Надаць гэтай зьменнай значэньне ўстаўкі."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Зьменная з назвай «%1» ужо існуе."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Зьменная з назвай «%1» ужо існуе зь іншым тыпам: «%2»."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Працоўная прастора Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Напішыце што-небудзь…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/be.js b/blockly/msg/be.js new file mode 100644 index 00000000000..fd2971807b5 --- /dev/null +++ b/blockly/msg/be.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Дадаць каментарый"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Немагчыма выдаліць пераменную '%1', паколькі яна з’яўляецца часткай вызначэння функцыі '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Змяніць значэння:"; +Blockly.Msg["CLEAN_UP"] = "Выраўнаваць блокі"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Згарнуць блокі"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Згарнуць блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "колер 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "колер 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "суадносіны"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "змяшаць"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Змешвае два колеры разам у паказаных суадносінах (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://be.wikipedia.org/wiki/Колер"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Выбраць колер з палітры."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "выпадковы колер"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Выбраць колер наўздагад."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "сіні"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зялёны"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "чырвоны"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "колер з"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Стварыць колер з названымі ўзроўнямі чырвонага, зялёнага і сіняга. Усе значэння павінны быць ад 0 да 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "перарваць цыкл"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "прадоўжыць з наступнай ітэрацыі цыклу"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Перарваць выкананне цыкла."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Прапусціць рэшту гэтага цыкла і перайсці да выканання наступнай ітэрацыі."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Папярэджанне: гэты блок можа быць выкарыстаны толькі ў межах цыклу."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для кожнага элемента %1 у спісе %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для кожнага элемента ў спісе пераменная '%1' атрымлівае значэнне элемента, а затым выконваюцца пэўныя дзеянні."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "лічыць з %1 ад %2 да %3 праз %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Наяўная пераменная '%1' прымае значэнні ад пачатковага да канчатковага, улічваючы зададзены інтэрвал, і выконваюцца названыя блокі."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Дадайце ўмову да блоку 'калі'"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Дадаць канчатковую, ўсёабдымную ўмову ў блок 'калі'."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Дадайце, выдаліце або змяніце парадак секцыяў, каб пераналадзіць гэты блок 'калі'."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "інакш"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "інакш калі"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "калі"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Калі значэнне ісцінае, то выканаць пэўныя дзеянні."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Калі значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку выконваецца другі блок аператараў."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў. Калі ні адно з значэнняў не з’яўляецца ісціным, то выконваецца апошні блок аператараў."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://be.wikipedia.org/wiki/Цыкл_(праграмаванне)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "выканаць"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "паўтарыць %1 разоў"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Выканаць пэўныя дзеянні некалькі разоў."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "паўтараць, пакуль не"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "паўтараць, пакуль"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Пакуль значэнне ілжывае, выконваць пэўныя дзеянні."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Пакуль значэнне ісцінае, выконваць пэўныя дзеянні."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Выдаліць усе блокі %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Выдаліць блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Выдаліць пераменную '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Выдаліць %1 выкарыстання пераменнай '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Выдаліць %1 блокаў"; +Blockly.Msg["DIALOG_CANCEL"] = "Адмяніць"; +Blockly.Msg["DIALOG_OK"] = "Добра"; +Blockly.Msg["DISABLE_BLOCK"] = "Адключыць блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дубляваць"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Уключыць блок"; +Blockly.Msg["EXPAND_ALL"] = "Разгарнуць блокі"; +Blockly.Msg["EXPAND_BLOCK"] = "Разгарнуць блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Знешнія ўваходы"; +Blockly.Msg["HELP"] = "Даведка"; +Blockly.Msg["INLINE_INPUTS"] = "Убудаваныя ўваходы"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "стварыць пусты спіс"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Вяртае спіс даўжыні 0, які не ўтрымлівае дадзеных"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "спіс"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Дадайце, выдаліце, перастаўце элементы для пераробкі блока спісу."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "стварыць спіс з"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Дадае элемент да спісу."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Стварае спіс з любым лікам элементаў."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "першы"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# з канца"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "узяць"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "узяць і выдаліць"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "апошні"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "адвольны"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "выдаліць"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Вяртае першы элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Вяртае элемент ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Вяртае апошні элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Вяртае выпадковы элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Видаляє і повертає перший елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Выдаляе і вяртае элемент ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Видаляє і повертає апошні элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Видаляє і повертає выпадковы элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Видаляє першы элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Видаляє элемент ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Видаляє апошні элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Видаляє выпадковы элемент спіса."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "па # з канца"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "па #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "па апошні"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "узяць падспіс з першага"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "узяць падспіс з # з канца"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "узяць падспіс з #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Стварае копію ўказанай частцы спісу."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - апошні элемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - першы элемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "знайсці першае ўваходжанне элемента"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "знайсці апошняе ўваходжанне элемента"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Вяртае нумар пазіцыі першага/апошняга ўваходжання элемента ў спісе. Вяртае %1, калі элемент не знойдзены."; +Blockly.Msg["LISTS_INLIST"] = "у спісе"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 пусты"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Вяртае значэнне ісціна, калі спіс пусты."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "даўжыня %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Вяртае даўжыню спісу."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "стварыць спіс з элемента %1, паўтаральнага %2 разоў"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Стварае спіс, які складаецца з зададзенага ліку копій элемента."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "змяніць парадак на зваротны %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Змяніць парадак спісу на адваротны."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "="; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "уставіць у"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "прысабечыць"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Устаўляе элемент у пачатак спіса."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Устаўляе элемент ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Дадае элемент у канец спісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Устаўляе элемент у выпадковае месца ў спісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Прысабечвае значэнне элемента спісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Прысабечвае значэнне элемента ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Прысабечвае значэнне элемента спісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Прысабечвае значэнне элемента спісу."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "па ўзрастанню"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "па спаданню"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сартаваць %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сартаваць копію спісу."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "па алфавіце, без уліку рэгістра"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "лікавая"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "па алфавіце"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "зрабіць спіс з тэксту"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "сабраць тэкст са спісу"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Злучае спіс тэкстаў у адзін тэкст з падзельнікамі."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Разбівае тэкст у спіс тэкстаў па падзельнікам."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "з падзельнікам"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "хлусня"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Вяртае значэнне ісціна або хлусня."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ісціна"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://be.wikipedia.org/wiki/Няроўнасць"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Вяртае станоўчае значэнне, калі абодва ўводы роўныя адзін аднаму."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Вяртае значэнне ісціна, калі першая ўстаўка больш другой."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Вяртае значэнне ісціна, калі першая ўстаўка больш або роўная другой."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Вяртае станоўчае значэнне, калі першы ўвод менш другога."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Вяртае значэнне ісціна, калі першая ўстаўка менш або роўная другі."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Вяртае станоўчае значэнне, калі ўводы не роўныя."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Вяртае значэнне ісціна, калі устаўка ілжывая. Вяртае значэнне хлусня, калі устаўка ісцінная."; +Blockly.Msg["LOGIC_NULL"] = "нішто"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Вяртае нішто."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "і"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ці"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Вяртае значэнне ісціна, калі абедзве ўстаўкі ісцінныя."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Вяртае значэнне ісціна, калі хаця б адна з уставак ісцінная."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "абраць па"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "калі хлусня"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "калі ісціна"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Правярае ўмову выбару. Калі ўмова ісцінная, вяртае першае значэнне, у адваротным выпадку вяртае другое значэнне."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://be.wikipedia.org/wiki/Арыфметыка"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Вяртае суму двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Вяртае дзель ад дзялення першага ліку на другое."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Вяртае рознасць двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Вяртае твор двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Вяртае першы лік, узведзены ў ступень другога ліку."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://be.wikipedia.org/wiki/Ідыёма (праграмаванне)"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "павялічыць %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Дадае лік да пераменнай '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://be.wikipedia.org/wiki/Матэматычная_канстанта"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Вяртае адну з распаўсюджаных канстант: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), або ∞ (бясконцасць)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "абмежаваць %1 знізу %2 зверху %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Абмяжоўвае лік ніжняй і верхняй межамі (уключна)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "дзеліцца на"; +Blockly.Msg["MATH_IS_EVEN"] = "цотнае"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "адмоўнае"; +Blockly.Msg["MATH_IS_ODD"] = "няцотнае"; +Blockly.Msg["MATH_IS_POSITIVE"] = "станоўчае"; +Blockly.Msg["MATH_IS_PRIME"] = "простае"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Правярае, ці з’яўляецца лік цотным, няцотным, простым, цэлым, станоўчым, адмоўным ці яно кратнае пэўнаму ліку. Вяртае значэнне ісціна або хлусня."; +Blockly.Msg["MATH_IS_WHOLE"] = "цэлае"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://be.wikipedia.org/wiki/Дзяленне_з_астаткам"; +Blockly.Msg["MATH_MODULO_TITLE"] = "астатак ад %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Вяртае астатак ад дзялення двух лікаў."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://be.wikipedia.org/wiki/Лік"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Лік."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "сярэдняе арыфметычнае спісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "найбольшы ў спісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медыяна спіса"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "найменшы ў спісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "моды спіса"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "выпадковы элемент спіса"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартнае адхіленне спіса"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сума спіса"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Вяртае сярэдняе арыфметычнае спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Вяртае найбольшы лік спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Вяртае медыяну спісуа."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Вяртае найменшы лік спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Вяртае спіс найбольш часта сустракаемых элементаў спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Вяртае выпадковы элемент спіса."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Вяртае стандартнае адхіленне спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Вяртае суму ўсіх лікаў у спісе."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "выпадковы лік ад 0 (уключна) да 1"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Вяртае выпадковы лік ад 0.0 (уключна) да 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "выпадковы цэлы лік ад %1 для %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Вяртае выпадковы лік паміж двума зададзенымі межамі (уключаючы і іх)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://be.wikipedia.org/wiki/Акругленне"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "акругліць"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "акругліць да меншага"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "акругліць да большага"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Акругляе лік да большага ці меншага."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://be.wikipedia.org/wiki/Квадратны_корань"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратны корань"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Вяртае модуль ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Вяртае е ва ўказанай ступені."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Вяртае натуральны лагарыфм ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Вяртае дзесятковы лагарыфм ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Вяртае супрацьлеглы лік."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Вяртае 10 ва ўказанай ступені."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Вяртае квадратны корань ліку."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://be.wikipedia.org/wiki/Трыганаметрычныя_функцыі"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Вяртае арккосінус у градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Вяртае арксінус у градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Вяртае арктангенс у градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Вяртае косінус рага ў градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Вяртае сінус рага ў градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Вяртае тангенс рага ў градусах."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Стварыць пераменную..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Новая назва пераменнай:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дазволіць аператары"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://be.wikipedia.org/wiki/Падпраграма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Выконвае вызначаную карыстальнікам працэдуру '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://be.wikipedia.org/wiki/Падпраграма"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Выконвае вызначаную карыстальнікам працэдуру '%1' і вяртае вылічанае значэнне."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Стварыць выклік '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Апішыце гэтую функцыю..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "выканаць нешта"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "каб"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Стварыць працэдуру, якая ня вяртае значэнне."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "вярнуць"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Стварыць працэдуру, якая вяртае значэнне."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Папярэджанне: гэтая функцыя мае паўтаральныя параметры."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Вылучыць вызначэнне працэдуры"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Калі першае значэнне ісцінае, вяртае другое значэнне."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Папярэджанне: гэты блок можа выкарыстоўвацца толькі ўнутры вызначэння функцыі."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "імя параметра:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Дадаць уваходны параметр ў функцыю."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "параметры"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Дадаць, выдаліць або змяніць парадак уваходных параметраў для гэтай функцыі."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Паўтарыць"; +Blockly.Msg["REMOVE_COMMENT"] = "Выдаліць каментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Перайменаваць пераменную..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Перайменаваць усе пераменныя '%1' да:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "да %1 дадаць тэкст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Дадаць тэкст да пераменнай '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "у малыя літары"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "у Загалоўныя Пачатковыя Літары"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "у ВЯЛІКІХ ЛІТАРАЎ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Вяртае копію тэксту з ВЯЛІКІМІ або малымі літарамі."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "узяць першую літару"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "узяць літару # з канца"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "узяць літару #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "узяць апошнюю літару"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "узяць выпадковую літару"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "у тэксце %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Вяртае літару ў названай пазіцыі."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "падлічыць колькасць %1 у %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Падлічыць, колькі разоў урывак тэксту з’яўляецца ў іншым тэксце."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Дадаць элемент да тэксту."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "спалучыць"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Дадайце, выдаліце, перастаўце фрагменты для пераробкі тэкставага блока."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "па літару # з канца"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "па літару #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "па апошнюю літару"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тэксце"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "узяць падрадок з першай літары"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "узяць падрадок з літары # з канца"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "узяць падрадок з літары #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Вяртае указаную частку тэксту."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "знайсці першае ўваходжанне тэксту"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "знайсці апошняе ўваходжанне тэксту"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тэксце %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Вяртае нумар пазіцыі першага/апошняга ўваходжання першага тэксту ў другім. Вяртае %1, калі тэкст не знойдзены."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 пусты"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Вяртае значэнне ісціна, калі пададзены тэкст пусты."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "стварыць тэкст з"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Стварае фрагмент тэксту, аб'ядноўваючы любы лік элементаў."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "даўжыня %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Вяртае колькасць сімвалаў (уключаючы прабелы) у зададзеным тэксце."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "надрукаваць %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Друкуе тэкст, лік або іншы аб'ект."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запытаць у карыстальніка лік."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запытаць у карыстальніка тэкст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запытаць лік з падказкай"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запытаць тэкст з падказкай"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замяніць %1 на %2 у %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замяніць усе ўваходжанні некаторага тэксту іншым тэкстам."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "змяніць парадак на зваротны %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Мяняе парадак знакаў у тэксце на адваротны."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://be.wikipedia.org/wiki/Радковы_тып"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Літара, слова або радок тэксту."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "абрэзаць прагалы з двух бакоў"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "абрэзаць прагалы злева"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "абрэзаць прагалы справа"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Вяртае копію тэксту з прагаламі, выдаленымі з аднаго або абодвух канцоў."; +Blockly.Msg["TODAY"] = "Сёння"; +Blockly.Msg["UNDO"] = "Адкаціць"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Стварыць блок \"прысабечыць\" для %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Вяртае значэнне гэтай пераменнай."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "прысабечыць %1 = %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Стварыць устаўку %1"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Прысабечвае пераменнай значэнне ўстаўкі."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Пераменная з назвай '%1' ужо існуе."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Назва пераменнай '%1' ужо выкарыстоўваецца іншай пераменнай тыпу '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/bg.js b/blockly/msg/bg.js new file mode 100644 index 00000000000..33017654753 --- /dev/null +++ b/blockly/msg/bg.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Добави коментар"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Променливата '%1' не може да бъде изтрита, защото е част от определението на функцията '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Промени стойността:"; +Blockly.Msg["CLEAN_UP"] = "Премахни блокове"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Свитите блокове съдържат предупреждения."; +Blockly.Msg["COLLAPSE_ALL"] = "Скрий блокове"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Скрий блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "цвят 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "цвят 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "съотношение"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "смеси"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Смесва два цвят в дадено съотношение (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://bg.wikipedia.org/wiki/Цвят_(оптика)"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Избери цвят от палитрата."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случаен цвят"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Избери цвят на случаен принцип."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "син"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелен"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "червен"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "оцвети с"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Създай цвят с избраните пропорции, червено, зелено и синьо. Всички стойности трябва да бъдат от 0 до 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "прекъсни цикъла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "премини към следващата стъпка от цикъла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Прекъсни цикъла, в който се съдържа тази команда."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Премини към следващата стъпка от цикъла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Предупреждение: Този блок може да се използва само в цикъл."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "за всеки елемент %1 в списъка %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "За всеки елемент в даден списък, присвои елемента на променливата „%1“ и след това изпълни командите."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "преброй чрез %1 от %2 до %3 през %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Нека променлива '%1' премине през стойностите от началното до крайното число през зададената стъпка и изпълни избраните блокове."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Добави условие към „ако“ блока."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Добави окончателно, прихващащо всички останали случаи условие към блок „ако“."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Добави, премахни или пренареди частите, за да промениш този „ако“ блок."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "иначе"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "иначе ако"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ако"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ако стойността е вярна, изпълни операциите."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ако стойността е вярна, изпълни първият блок. Иначе, изпълни вторият блок."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ако първата стойност е вярна, изпълни първия блок. Иначе, ако втората стойност е вярна, изпълни втория блок."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ако първата стойност е вярна, изпълни първия блок. В противен случай, ако втората стойност е вярна, изпълни втория блок. Ако нито една от стойностите не е вярна, изпълни последния блок."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://bg.wikipedia.org/wiki/Цикъл_(програмиране)#For_.D1.86.D0.B8.D0.BA.D1.8A.D0.BB.D1.8A.D1.82"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "изпълни"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Повтори %1 пъти"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Изпълнява команди няколко пъти."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повтаряй докато"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повтаряй докато е вярно, че"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Изпълни командите, ако стойността не е вярна."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Изпълни командите, ако стойността е вярна."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Изтриване на всички 1% блокове?"; +Blockly.Msg["DELETE_BLOCK"] = "Изтрий блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Изтриване на променливата \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Изтриване на %1 използване на променлива '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Изтрий %1 блока"; +Blockly.Msg["DIALOG_CANCEL"] = "Отказ"; +Blockly.Msg["DIALOG_OK"] = "ОК"; +Blockly.Msg["DISABLE_BLOCK"] = "Деактивирай блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Копирай"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дублиране на коментара"; +Blockly.Msg["ENABLE_BLOCK"] = "Активирай блок"; +Blockly.Msg["EXPAND_ALL"] = "Покажи блокове"; +Blockly.Msg["EXPAND_BLOCK"] = "Покажи блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Външни входове"; +Blockly.Msg["HELP"] = "Помощ"; +Blockly.Msg["INLINE_INPUTS"] = "Вътрешни входове"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "създай празен списък"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Връща списък с дължина 0, не съдържащ данни"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "списък"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Добави, премахни или пренареди частите, за да промениш този списъчен блок."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "създай списък с"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Добави елемент към текста."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Създай списък с произволен брой елементи."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "първия"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ от края"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "вземи"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "вземи и премахни"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последния"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "произволен"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "премахни"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Връща първия елемент в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Връща елемента на определената позиция в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Връща последния елемент в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Връща случаен елемент от списъка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Премахва и връща първия елемент в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Премахва и връща елемента на определена позиция в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Премахва и връща последния елемент в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Премахва и връща случаен елемент от списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Премахва първия елемент от списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Премахва елемент на определена позиция от списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Премахва последния елемент от списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Премахва случаен елемент от списък."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "до № открая"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "до №"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "до края"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "вземи подсписък от първия"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "вземи подсписък от № от края"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "вземи подсписък от №"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Копира част от списък."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 е последният елемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 е първият елемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "намери първата поява на елемента"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "намери последната поява на елемента"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Връща индекса на първото/последното появяване на елемента в списъка. Връща %1, ако елементът не е намерен."; +Blockly.Msg["LISTS_INLIST"] = "в списъка"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 е празен"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Връща стойност вярно, ако списъкът е празен."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "дължината на %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Връща дължината на списък."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "създай списък от %1 повторен %2 пъти"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Създава списък, състоящ се от определен брой копия на елемента."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "промени реда на обратно %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Промени реда на списъка на обратно."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "следното"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вмъкни на позиция"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "промени"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Вмъква елемент в началото на списъка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Вмъква елемент на определена позиция в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Добави елемент в края на списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Вмъква елемент на произволно място в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Променя първия елемент в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Променя елемента на определена позиция в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Променя последния елемент в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Променя случаен елемент от списък."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "възходящо"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "низходящо"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сортиране по %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Подреди копие на списъка."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "по азбучен ред, без отчитане на малки и главни букви"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "в числов ред"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "по азбучен ред"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Направи списък от текст"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "направи текст от списък"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Събира списък от текстове в един текст, раделени с разделител."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Разделя текст в списък на текстове, по всеки разделител."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "с разделител"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "невярно"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Връща вярно или невярно."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "вярно"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Върни вярно, ако двата параметъра са еднакви."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Върни истина, ако първия параметър е по-голям от втория."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Върни истина, ако първия параметър е по-голям или равен на втория."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Върни вярно, ако първият параметър е по-малък от втория."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Върни истина, ако първия параметър е по-малък или равен на втория."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Върни вярно, ако двата параметъра са различни."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Върни вярно, ако параметърът е неверен. Върни невярно, ако параметърът е верен."; +Blockly.Msg["LOGIC_NULL"] = "нула"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Връща нула."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Върни вярно, ако и двата параметъра са верни."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Върни „вярно“, ако поне един от входовете е верен."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тест"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "Ако е невярно"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "Ако е вярно"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Провери условието в „тест“. Ако условието е истина, върни стойността „ако е вярно“, иначе върни стойността „ако е невярно“."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://bg.wikipedia.org/wiki/Аритметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Върни сумата на двете числа."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Върни частното на двете числа."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Върни разликата на двете числа."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Върни произведението на двете числа."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Върни първото число, повдигнато на степен на второто число."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 от X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Връща аркустангенс на точка (X, Y) в градуси от -180 до 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://bg.wikipedia.org/wiki/Събиране"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "промени %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Добави число към променлива „%1“."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "http://bg.wikipedia.org/wiki/Константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Връща една от често срещаните константи: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (безкрайност)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ограничи %1 между %2 и %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ограничи число да бъде в определените граници (включително)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "се дели на"; +Blockly.Msg["MATH_IS_EVEN"] = "е четно"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "е отрицателно"; +Blockly.Msg["MATH_IS_ODD"] = "е нечетно"; +Blockly.Msg["MATH_IS_POSITIVE"] = "е положително"; +Blockly.Msg["MATH_IS_PRIME"] = "е просто"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверете дали дадено число е четно, нечетно, просто, цяло, положително, отрицателно или дали се дели на друго число. Връща вярно или невярно."; +Blockly.Msg["MATH_IS_WHOLE"] = "е цяло"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "http://bg.wikipedia.org/wiki/Остатък"; +Blockly.Msg["MATH_MODULO_TITLE"] = "остатъка от делението на %1 на %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Върни остатъка от деление на две числа."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://bg.wikipedia.org/wiki/Число"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Число."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "средната стойност на числата в списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "най-голямата стойност в списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медианата на списък"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "най-малката стойност в списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "режими на списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случаен елемент от списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартно отклонение на списък"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сума на списъка"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Върни средната стойност (аритметичното средно) на числата в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Върни най-голямото число в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Върни медианата в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Върни най-малкото число в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Върни списък на най-често срещаните елементи в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Върни случаен елемент от списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Връща стандартното отклонение на списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Върни сумата на всички числа в списъка."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "случайно дробно число"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Върни случайно дробно число между 0.0 (включително) и 1.0 (без да го включва)"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "случайно цяло число между %1 и %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Върни случайно число в определените граници (включително)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "закръгли"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "закръгли надолу"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "закръгли нагоре"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Закръгли число нагоре или надолу."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "абсолютна"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "корен квадратен"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Връща абсолютната стойност на число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Върни е (неперовото число) на степен зададеното число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Върни натуралния логаритъм от число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Върни десетичния логаритъм на число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Върни числото с обърнат знак."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Върни 10 на степен зададеното число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Връща корен квадратен от число."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://bg.wikipedia.org/wiki/Тригонометрична_функция"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Върни аркускосинус от число."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Върни аркуссинус от число."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Върни аркустангенс от число."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Върни косинус от ъгъл в градуси (не в радиани)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Върни синус от ъгъл в градуси (не в радиани)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Върни тангенс от ъгъл в градуси (не в радиани)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Създаване на цветова променлива..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Създаване на числова променлива..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Създаване на низова променлива..."; +Blockly.Msg["NEW_VARIABLE"] = "Създаване на променлива..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ново име на променливата:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Тип на новата променлива:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "позволи операциите"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "с:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://bg.wikipedia.org/wiki/Подпрограма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Изпълни дефинирана от потребителя функция „%1“."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://bg.wikipedia.org/wiki/Подпрограма"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Изпълни дефинирана от потребителя функция „%1“ и използвай резултата."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "с:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Създай '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишете тази функция..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "направиш"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "за да"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Създава функция, която не връща резултат."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "върни"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Създава функция, която връща резултат."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Предупреждение: Тази функция има дублиращи се параметри."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Покажи дефиницията на функцията"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ако стойността е вярна, върни втората стойност."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Предупреждение: Този блок може да се използва само във функция."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "име на параметър:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Добавяне на параметър към функцията."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "вход"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Добави, премахни или пренареди входните параметри за тази функция."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Повторение"; +Blockly.Msg["REMOVE_COMMENT"] = "Премахни коментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Преименувай променливата..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Преименувай всички '%1' променливи на:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "добавете текст %2 към %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Добави текст към променливата „%1“."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "с малки букви"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "с Главна Буква На Всяка Дума"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "с ГЛАВНИ БУКВИ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Връща копие на текста със сменени малки и главни букви."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "вземи първата буква"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "вземи буква № от края"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "вземи буква №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "вземи последната буква"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "вземи произволна буква"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "в текст %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Връща буквата в определена позиция."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "пресмята броя на %1 в %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Преброй колко пъти даден текст се среща в друг текст."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Добави елемент към текста."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "свържи"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Добави, премахни или пренареди частите, за да промениш този текстов блок."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "до буква № от края"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "до буква №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "до последната буква."; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "в текста"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "вземи текста от първата буква"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "вземи текста от буква № (броено отзад-напред)"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "вземи текста от буква №"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Връща определена част от текста."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "намери първата поява на текста"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "намери последната поява на текста"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "в текст %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Връща индекса на първото/последното срещане на първия текст във втория текст. Връща %1, ако текстът не е намерен."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 е празен"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Връща вярно, ако текста е празен."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "създай текст с"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Създай текст като съчетаеш няколко елемента."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "дължината на %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Връща броя на символите (включително и интервалите) в текста."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "отпечатай %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Отпечатай текста, числото или друга стойност."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Питай потребителя за число."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Питай потребителя за текст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "питай за число със съобщение"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "питай за текст със съобщение"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замяна на %1 с %2 в %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замени всички появи на даден текст в друг текст."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "промени реда на обратно %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Промени реда на знаците в текста на обратно."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://bg.wikipedia.org/wiki/Низ"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Буква, дума или ред"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "премахни интервалите от двете страни"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "премахни интервалите отляво"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "премахни интервалите отдясно"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Връща копие на текста с премахнати интервали от единия или двата края."; +Blockly.Msg["TODAY"] = "Днес"; +Blockly.Msg["UNDO"] = "Отмяна"; +Blockly.Msg["UNNAMED_KEY"] = "без име"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "елемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Създай „промени стойността на %1“"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Връща стойността на тази променлива."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "нека %1 бъде %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Създай „вземи стойността на %1“"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Установява променливата със стойността на входа."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Променлива с име '%1' вече съществува."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Променлива с име '%1' вече съществува за друг тип: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Работна област на Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Коментирайте нещо..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/bn.js b/blockly/msg/bn.js new file mode 100644 index 00000000000..a0c8d3bff6f --- /dev/null +++ b/blockly/msg/bn.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "মন্তব্য যোগ করুন"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' চলক অপসারণ করা যাবে না কারণ এটি '%2' কার্যপ্রণালীর সংজ্ঞার অংশ"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "মান পরিবর্তন করুন:"; +Blockly.Msg["CLEAN_UP"] = "ব্লকসমূহ পরিস্কার করুন"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ব্লকসমূহ সঙ্কুচিত করুন"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ব্লক সঙ্কুচিত করুন"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "রং ১"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "রং ২"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "অনুপাত"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "মিশ্রণ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "প্রদত্ত অনুপাত(০.০ - ১.০) অনুসারে দুটি রং একসাথে মিশ্রিত করুন।"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://bn.wikipedia.org/wiki/রং"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "প্যালেট থেকে একটি রং পছন্দ করুন"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "এলোমেলো রং"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "এলোমেলোভাবে একটি রং পছন্দ করুন।"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "নীল"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "সবুজ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "লাল"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "রং সহ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "একটি রং তৈরি করুন নির্দিষ্ট পরিমাণে লাল, সবুজ এবং নীল রং মিশ্রিত করে। প্রত্যেকটির মান অবশ্যই ০ থেকে ১০০ এর মধ্যে হতে হবে।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "প্রবেশপথ থেকে চলে অাসুন"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "পুনরাবৃত্তি চালিয়ে যান পরবর্তী প্রবেশপথে"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "সংশ্লিষ্ট প্রবেশপথ থেকে চলে অাসুন"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "এই প্রবেশপথের অবশিষ্ট অংশ বাদ দিন এবং পরবর্তী প্রচেষ্টা চালিয়ে যান।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "সর্তকীবার্তা: এই ব্লকটি শুধুমাত্র লুপের মধ্যে ব্যবহার করা যাবে।"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "প্রত্যেকটি পদের জন্য %1 তালিকার মধ্যে %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "কোন তালিকায় প্রতিবারের জন্য, আইটেমের সাথে চলক '%1' বসান এবং কিছু বিবরণ দিন।"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "গণনা কর %1 %4 দিয়ে %2 থেকে %3"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "চলক %1 প্রস্তুত করুন, শুরু থেকে শেষ পর্যন্ত সংখ্যা গ্রহন করতে যা নির্দেশিত বিরতি গণনা করছে এবং নির্দেশিত ব্লক সমূহ সম্পন্ন করতে।"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "যদি নামক ব্লক এ একটি শর্ত যোগ করুন।"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "নতুবা"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "নতুবা যদি"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "যদি"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "যদি একটি মূল্যমাস সত্য হয়, তবে কিছু বিবরণ দিন"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "যদি একটি মূল্যমান সত্য হয়, তবে বিবৃতিসমূহের প্রথম ব্লকটা অন্যথায় বিবৃতির দ্বিতীয় ব্লক।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "যদি প্রথম মূল্যমান সঠিক হয়, তবে বর্ণিত প্রথম ব্লকটি সম্পন্ন করুন। অন্যথায়, দ্বিতীয় মূল্যমান সঠিক হয়, দ্বিতীয় ব্লক সম্পন্ন করুন।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://bn.wikipedia.org/wiki/প্রবেশ_পথ"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "করুন"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 বার পুনরাবৃত্তি করো"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "কিছু বিবরণ বারবার দিন।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "অাবার করুন যতক্ষণ না"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "অাবার করুন যখন"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "যখন একটি মূল্যমান মিথ্যা, তখন কিছু বিবৃতি দিন।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "যখন একটি মূল্যমান সঠিক, তখন কিছু বিবরণ দিন।"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "সব %1টি ব্লক অপসারণ করবেন?"; +Blockly.Msg["DELETE_BLOCK"] = "ব্লকটি মুছে ফেল"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' চলকটি অপসারণ করুন"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' চলকের '%1'টি ব্যবহার অপসারণ করবেন?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ব্লক অপসারণ কর"; +Blockly.Msg["DIALOG_CANCEL"] = "বাতিল"; +Blockly.Msg["DIALOG_OK"] = "ঠিক আছে"; +Blockly.Msg["DISABLE_BLOCK"] = "ব্লকটি বিকল কর"; +Blockly.Msg["DUPLICATE_BLOCK"] = "প্রতিলিপি"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ব্লকটি সচল কর"; +Blockly.Msg["EXPAND_ALL"] = "ব্লকগুলো সম্প্রসারিত কর"; +Blockly.Msg["EXPAND_BLOCK"] = "ব্লকটি সম্প্রসারিত কর"; +Blockly.Msg["EXTERNAL_INPUTS"] = "বহি:স্থ ইনপুট"; +Blockly.Msg["HELP"] = "সাহায্য"; +Blockly.Msg["INLINE_INPUTS"] = "সারি ইনপুট"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "খালি তালিকা তৈরি করুন"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "পাঠাবে একটি তালিকা, দের্ঘ্য হবে ০, কোন উপাত্ত থাকবে না"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "তালিকা"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "তালিকায় একটি পদ যোগ করুন।"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "যেকোন সংখ্যক পদ নিয়ে একটি তালিকা তৈরি করুন।"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "প্রথম"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# শেষ থেকে"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "নিন"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "নিন ও সরান"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "শেষ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "এলোমেলো"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "অপসারণ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "তালিকার প্রথম পদটি পাঠাবে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "তালিকার শেষ পদটি পাঠাবে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "এলোমেলোভাবে তালিকার যেকোন একটি পদ পাঠাবে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "অপসারণ করুন এবং তালিকার প্রথম পদটি পাঠান।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "অপসারণ করুন এবং তালিকার শেষ পদটি পাঠান।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "অপসারণ করুন এবং তালিকার এলোমেলো একটি পদ পাঠান।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "তালিকার প্রথম পদটি অপসারণ করা হয়েছে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "তালিকার শেষ পদটি অপসারণ করা হয়েছে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "তালিকা থেকে এলোমেলো একটি পদ অপসারণ করা হয়েছে।"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "আইটেমের প্রথম সংঘটন খুঁজুন"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "আইটেমের শেষ সংঘটন খুঁজুন"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "তালিকার মধ্যে"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 খালি"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "পাঠাবে সত্য যদি তালিকাটি খালি হয়।"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1-এর দৈর্ঘ্য"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "একটি তালিকার দৈর্ঘ্য পাঠাবে।"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "একটি তালিকার একটি অনুলিপি উল্টান"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "লিখা থেকে তালিকা তৈরি করুন"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "তালিকা থেকে লিখা তৈরি করুন"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "মিথ্যা"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "পাঠাবে হয় সত্য অথবা মিথ্যা।"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "সত্য"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "পাঠাবে সত্য যদি উভয় ইনপুটই সমান হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় অথবা সমান হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট অথবা সমান হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "পাঠাবে সত্য যদি উভয় ইনপুটই সমান না হয়।"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 নয়"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "পাঠাবে সত্য যদি ইনপুট মিথ্যা হয়। পাঠাবে মিথ্যা যদি ইনপুট সত্য হয়।"; +Blockly.Msg["LOGIC_NULL"] = "কিছু না"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "কিছু ফেরত দিবে না।"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "এবং"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "অথবা"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "পাঠাবে সত্য যদি উভয় ইনপুটই সত্য হয়।"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "পাঠাবে সত্য যদি অন্ততপক্ষে যেকোন একটি ইনপুট সত্য হয়।"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "পরীক্ষা"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "যদি মিথ্যা হয়"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "যদি সত্য হয়"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "পাঠাবে দুটি সংখ্যার যোগফল।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "পাঠাবে দুটি সংখ্যার ভাগফল।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "পাঠাবে দুটি সংখ্যার বিয়োগফল।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "পাঠাবে দুটি সংখ্যার গুণফল।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "%2 দ্বারা %1 পরিবর্তন"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "দ্বারা বিভাজ্য"; +Blockly.Msg["MATH_IS_EVEN"] = "জোড় সংখ্যা"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "নেতিবাচক"; +Blockly.Msg["MATH_IS_ODD"] = "বিজোড় সংখ্যা"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ইতিবাচক"; +Blockly.Msg["MATH_IS_PRIME"] = "মৌলিক সংখ্যা"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 এর ভাগশেষ"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://bn.wikipedia.org/wiki/সংখ্যা"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "একটি সংখ্যা।"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "তালিকার গড়"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "তালিকার মধ্যে সর্বোচ্চ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "তালিকার মধ্যমা"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "তালিকার মধ্যে সর্বনিম্ন"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "তালিকার এলোমেলো পদ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "তালিকার যোগফল"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "পাঠাবে তালিকার সব সংখ্যার গড়।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "তালিকার মধ্যে সর্বোচ্চ সংখ্যাটি পাঠাও"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "তালিকার মধ্যমা সংখ্যাটি পাঠাবে।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "তালিকার মধ্যে সর্বনিম্ন সংখ্যাটি পাঠাও"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "তালিকা থেকে এলোমেলোভাবে একটি পদ পাঠাবে।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "পাঠাবে তালিকার সব সংখ্যার যোগফল।"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "এলোমেলো ভগ্নাংশ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "পরম"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "বর্গমূল"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "পাঠাবে সংখ্যার পরমমান।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "পাঠাবে একটি সংখ্যার বর্গমূল।"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "চলক তৈরি করুন..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "নতুন চলকের নাম:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "এতে"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "আউটপুট ছাড়া একটি ক্রিয়া তৈরি করুন।"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "পাঠাবে"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "আউটপুট সহ একটি ক্রিয়া তৈরি করুন।"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "ক্রিয়ার সংজ্ঞা উজ্জল করুন"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "যদি মান সত্য হয় তাহলে দ্বিতীয় মান পাঠাবে।"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ইনপুটের নাম:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ক্রিয়াতে একটি ইনপুট যোগ করুন।"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "পুনরায় করুন"; +Blockly.Msg["REMOVE_COMMENT"] = "মন্তব্য সরাও"; +Blockly.Msg["RENAME_VARIABLE"] = "চলকের নাম পরিবর্তন..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "'%1' চলকগুলোর নতুন নাম দিন:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ছোটহাতের অক্ষরে"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "বড়হাতের অক্ষরে"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "লেখাটিতে একটি পদ যোগ করুন।"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "যোগ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 খালি"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "পাঠাবে সত্য যদি সরবরাহকৃত লেখাটি খালি হয়।"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1-এর দৈর্ঘ্য"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 মুদ্রণ করুন"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 উল্টান"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "একটি অক্ষর, শব্দ অথবা বাক্য।"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "উভয় পাশ থেকে খালি অংশ ছাটাই"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "বামপাশ থেকে খালি অংশ ছাটাই"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ডানপাশ থেকে খালি অংশ ছাটাই"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "আজ"; +Blockly.Msg["UNDO"] = "পূর্বাবস্থা"; +Blockly.Msg["UNNAMED_KEY"] = "নামহীন"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "পদ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 নিন' তৈরি করুন"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' নামের চলক পূর্ব থেকে অাছে।"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' নামের চলক '%2' ধরনের চলকের জন্য পূর্ব থেকেই অাছে।"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/br.js b/blockly/msg/br.js new file mode 100644 index 00000000000..5b81d3364d4 --- /dev/null +++ b/blockly/msg/br.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ouzhpennañ un evezhiadenn"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne ch'aller ket dilemel an argemmenn \"%1\" dre m'eo lod eus dielfennadur an arc'hwel \"%2\""; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Kemmañ an dalvoudenn :"; +Blockly.Msg["CLEAN_UP"] = "Naetaat ar bloc'hoù"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Kemennoù-diwall zo er bloc'hadoù pleget."; +Blockly.Msg["COLLAPSE_ALL"] = "Bihanaat ar bloc'hoù"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bihanaat ar bloc'h"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "liv 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "liv 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "feur"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "meskañ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "a gemmesk daou liv gant ur feur roet(0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://br.wikipedia.org/wiki/Liv"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Dibab ul liv diwar al livaoueg."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "liv dargouezhek"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tennañ ul liv d'ar sord"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "glas"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "gwer"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruz"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "liv gant"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Krouiñ ul liv gant ar c'hementad spisaet a ruz, a wer hag a c'hlas. Etre 0 ha 100 e tle bezañ an holl dalvoudoù."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Mont e-maez an adlañsañ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "Kenderc'hel gant iteradur nevez ar rodell"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Mont e-maez ar boukl engronnus."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Lammat ar rest eus ar rodell, ha kenderc'hel gant an iteradur war-lerc'h."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Diwallit : ne c'hall ar bloc'h-mañ bezañ implijet nemet e-barzh ur boukl."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "evit pep elfenn %1 er roll %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Evit pep elfenn en ur roll, reiñ talvoud an elfenn d'an argemmenn '%1', ha seveniñ urzhioù zo da c'houde."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "kontañ gant %1 eus %2 da %3 dre %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ober e doare ma kemero an argemmenn \"%1\" an talvoudennoù adalek niverenn an deroù betek niverenn an dibenn, en ur inkremantiñ an esaouenn, ha seveniñ an urzhioù spisaet."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ouzhpennañ un amplegad d'ar bloc'h ma."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ouzhpennañ un amplegad dibenn lak-pep-tra d'ar bloc'h ma."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h ma."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "a-hend-all"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mod all ma"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ma"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ma vez gwir un dalvoudenn, seveniñ ar c'henañ bloc'had urzhioù neuze. Anez seveniñ an eil bloc'had urzhioù."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had urzhioù neuze. Anez ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had. Anez, ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù. Ma ne vez gwir talvoudenn ebet, seveniñ ar bloc'had diwezhañ a urzhioù."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ober"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "adober %1 gwech"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Seveniñ urzhioù zo meur a wech"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "adober betek"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "adober keit ha ma"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Keit ha ma vez faos un dalvoudenn, seveniñ urzhioù zo neuze."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Keit ha ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Diverkañ an holl vloc'hoù %1 ?"; +Blockly.Msg["DELETE_BLOCK"] = "Dilemel ar bloc'h"; +Blockly.Msg["DELETE_VARIABLE"] = "Lemel an argemm '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Lemel %1 implij eus an argemm '%2' ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Dilemel %1 bloc'h"; +Blockly.Msg["DIALOG_CANCEL"] = "Nullañ"; +Blockly.Msg["DIALOG_OK"] = "Mat eo"; +Blockly.Msg["DISABLE_BLOCK"] = "Diweredekaat ar bloc'h"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Eiladuriñ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Eiladiñ an eilenn"; +Blockly.Msg["ENABLE_BLOCK"] = "Gweredekaat ar bloc'h"; +Blockly.Msg["EXPAND_ALL"] = "Astenn ar bloc'hoù"; +Blockly.Msg["EXPAND_BLOCK"] = "Astenn ar bloc'h"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Monedoù diavaez"; +Blockly.Msg["HELP"] = "Skoazell"; +Blockly.Msg["INLINE_INPUTS"] = "Monedoù enlinenn"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "krouiñ ur roll goullo"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Distreiñ ul listenn, 0 a hirder, n'eus enrolladenn ebet enni"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "roll"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h listenn-mañ."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "krouiñ ur roll gant"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ouzhpennañ un elfenn d'ar roll"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Krouiñ ur roll gant un niver bennak a elfennoù."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "kentañ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# adalek ar fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "tapout"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "tapout ha lemel"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "diwezhañ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "dre zegouezh"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "lemel"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Distreiñ an elfenn gentañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Distreiñ an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Distreiñ un elfenn diwezhañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Distreiñ un elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Lemel ha distreiñ a ra an elfenn gentañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Lemel ha distreiñ a ra an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Lemel ha distreiñ a ra an elfenn diwezhañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Lemel ha distreiñ a ra an elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Lemel a ra an elfenn gentañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Lemel a ra an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Lemel a ra an elfenn diwezhañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Lemel a ra un elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "betek # adalek an dibenn"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "da #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "betek ar fin"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Kaout an islistenn adalek an deroù"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "Kaout an islistenn adalek # adalek an dibenn"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "Kaout an islistenn adalek #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Krouiñ un eilad eus lodenn spisaet ul listenn."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 eo an elfenn gentañ."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 eo an elfenn gentañ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "kavout reveziadenn gentañ un elfenn"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "kavout reveziadenn diwezhañ un elfenn"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus an elfenn en ul listenn. Distreiñ %1 ma n'eo ket kavet an destenn."; +Blockly.Msg["LISTS_INLIST"] = "el listenn"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 zo goullo"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Distreiñ gwir m'eo goullo al listenn."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "hirder %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Distreiñ hirder ul listenn."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Krouiñ ul listenn gant an elfenn %1 arreet %2 div wech"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Krouiñ ul listenn a c'hoarvez eus an dalvoudenn roet arreet an niver a wech meneget"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "eilpennañ %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Eilpennañ un eilskrid eus ur roll."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "evel"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ensoc'hañ evel"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "termenañ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ensoc'hañ a ra an elfenn e deroù ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ensoc'hañ a ra an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ouzhpennañ a ra an elfenn e fin al listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ensoc'hañ a ra an elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Termenañ a ra an elfenn gentañ en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Termenañ a ra an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Termenañ a ra an elfenn diwezhañ en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Termenañ a ra un elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "war gresk"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "war zigresk"; +Blockly.Msg["LISTS_SORT_TITLE"] = "Rummañ%1,%2,%3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Rummañ un eilenn eus ar roll"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "Dre urzh al lizherenneg, hep derc'hel kont eus an direnneg"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "niverel"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Dre urzh al lizherenneg"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Krouiñ ul listenn diwar an destenn"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "Krouiñ un destenn diwar al listenn"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Bodañ ul listennad testennoù en ul listenn hepken, o tispartiañ anezho gant un dispartier."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Troc'hañ un destenn en ul listennad testennoù, o troc'hañ e pep dispartier."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "gant an dispartier"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "gaou"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Distreiñ pe gwir pe faos"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "gwir"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Distreiñ gwir m'eo par an daou voned."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil pe par dezhañ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil pe m'eo par dezhañ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Distreiñ gwir ma n'eo ket par an daou voned."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nann %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Distreiñ gwir m'eo faos ar moned. Distreiñ faos m'eo gwir ar moned."; +Blockly.Msg["LOGIC_NULL"] = "Null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Distreiñ null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ha(g)"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "pe"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Distreiñ gwir m'eo gwir an da daou voned."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Distreiñ gwir m'eo gwir unan eus an daou voned da nebeutañ."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "amprouad"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "m'eo gaou"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "m'eo gwir"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Gwiriañ an amplegad e 'prouad'. M'eo gwir an amplegad, distreiñ an dalvoudenn 'm'eo gwir'; anez distreiñ ar moned 'm'eo faos'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://br.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Distreiñ sammad daou niver."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Distreiñ rannad daou niver."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Distreiñ diforc'h daou niver"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Distreiñ liesad daou niver."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Distreiñ an niver kentañ lakaet dindan gallouter an eil niver."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://fr.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 eus X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Adkas a ra ark tangent ar poent (X, Y) e derezioù etre -180 ha 180"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "kemmañ %1 gant %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ouzhpennañ un niver d'an argemmenn '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Distreiñ unan eus digemmennoù red : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (anvevenn)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "destrizhañ %1 etre %2 ha %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Destrizhañ un niver da vezañ etre ar bevennoù spisaet (enlakaet)"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "a zo rannadus dre"; +Blockly.Msg["MATH_IS_EVEN"] = "zo par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "a zo negativel"; +Blockly.Msg["MATH_IS_ODD"] = "zo ampar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "a zo pozitivel"; +Blockly.Msg["MATH_IS_PRIME"] = "zo kentañ"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Gwiriañ m'eo par, anpar, kentañ, muiel, leiel un niverenn pe ma c'haller rannañ anezhi dre un niver roet zo. Distreiñ gwir pe faos."; +Blockly.Msg["MATH_IS_WHOLE"] = "zo anterin"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "rest eus %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Distreiñ dilerc'h rannadur an div niver"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://br.wikipedia.org/wiki/Niver"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un niver."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Keitat al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Uc'hegenn al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Kreizad al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Izegenn al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modoù stankañ el listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Elfennn eus al listenn tennet d'ar sord"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "forc'had standart eus al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Sammad al listenn"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Distreiñ keitad (niveroniel) an talvoudennoù niverel el listenn."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Distreiñ an niver brasañ el listenn."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Distreiñ an niver kreiz el listenn"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Distreiñ an niver bihanañ el listenn"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Distreiñ ul listennad elfennoù stankoc'h el listenn."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Distreiñ un elfenn zargouezhek el listenn"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Distreiñ forc'had standart al listenn."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Distreiñ sammad an holl niveroù zo el listenn."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Rann dargouezhek"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Distreiñ ur rann dargouezhek etre 0.0 (enkaelat) hag 1.0 (ezkaelat)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "anterin dargouezhek etre %1 ha %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Distreiñ un anterin dargouezhek etre an div vevenn spisaet, endalc'het."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "Rontaat"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Rontaat dindan"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Rontaat a-us"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rontaat un niver dindan pe a-us"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://br.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "dizave"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "gwrizienn garrez"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Distreiñ talvoud dizave un niver."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Distreiñ galloudad un niver."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Distreiñ logaritm naturel un niver"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Distreiñ logaritm diazez 10 un niver"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Distreiñ enebad un niver"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Distreiñ 10 da c'halloudad un niver."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Distreiñ gwrizienn garrez un niver"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://br.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Distreiñ ark kosinuz un niver"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Distreiñ ark sinuz un niver"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Distreiñ ark tangent un niver"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Distreiñ kosinuz ur c'horn (ket e radianoù)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Distreiñ sinuz ur c'horn (ket e radianoù)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Distreiñ tangent ur c'horn (ket e radianoù)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Krouiñ un argemmenn liv..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Krouiñ un argemm niver..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Krouiñ un argemmenn chadenn..."; +Blockly.Msg["NEW_VARIABLE"] = "Krouiñ un argemmenn nevez..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Anv an argemmenn nevez :"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Doare nevez a argemm:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "aotren an disklêriadurioù"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "gant :"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Seveniñ an arc'hwel '%1' termenet gant an implijer."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Seveniñ an arc'hwel '%1' termenet gant an implijer hag implijout e zisoc'h."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "gant :"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Krouiñ '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Deskrivañ an arc'hwel-mañ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ober un dra bennak"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "da"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Krouiñ un arc'hwel hep mont er-maez."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "distreiñ"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Kouiñ un arc'hwel gant ur mont er-maez"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Diwallit : an arc'hwel-mañ en deus arventennoù eiladet."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Dreislinennañ termenadur an arc'hwel"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ma'z eo gwir un dalvoudenn, distreiñ un eil talvoudenn neuze."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Diwallit : Gallout a rafe ar bloc'h bezañ implijet e termenadur un arc'hwel hepken."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Anv ar moned"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ouzhpennañ ur moned d'an arc'hwel."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Monedoù"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Ouzhpennañ, lemel, pe adkempenn monedoù an arc'hwel-mañ."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Adober"; +Blockly.Msg["REMOVE_COMMENT"] = "Lemel an evezhiadenn kuit"; +Blockly.Msg["RENAME_VARIABLE"] = "Adenvel an argemmenn..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Adenvel an holl argemmennoù '%1' e :"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "Ouzhpennañ an destenn %2 da %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Ouzhpennañ testenn d'an argemmenn'%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "e lizherennoù bihan"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Gant Ur Bennlizherenn E Deroù Pep Ger"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "e PENNLIZHERENNOÙ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Distreiñ un eilenn eus an eilenn en un direnneg all"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "tapout al lizherenn gentañ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "Kaout al lizherenn # adalek an dibenn."; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "Kaout al lizherenn #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "tapout al lizherenn ziwezhañ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "Kaout ul lizherenn dre zegouezh"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "en destenn %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Distreiñ al lizherenn d'al lec'h spisaet."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "niver %1 war %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Kontañ pet gwech e c'hoarvez un destenn bennak en un destenn bennak all."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ouzhpennañ un elfenn d'an destenn."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "stagañ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h testenn-mañ."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "Betek al lizherenn # adalek an dibenn."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "betek al lizherenn #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "d'al lizherenn diwezhañ"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en destenn"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "Kaout an ischadenn adalek al lizherenn gentañ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "Kaout an ischadenn adalek al lizherenn # betek an dibenn"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "Kaout an ischadenn adalek al lizherenn #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Distreiñ un tamm spisaet eus an destenn."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "kavout reveziadenn gentañ an destenn"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "kavout reveziadenn diwezhañ an destenn"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en destenn %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus ar chadenn gentañ en eil chadenn. Distreiñ %1 ma n'eo ket kavet ar chadenn."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 zo goullo"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Adkas gwir m'eo goullo an destenn roet."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "krouiñ un destenn gant"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Krouit un tamm testenn en ur gevelstrollañ un niver bennak a elfennoù"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "hirder %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Distreiñ an niver a lizherennoù(en ur gontañ an esaouennoù e-barzh) en destenn roet."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "moullañ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Moullañ an destenn, an niverenn pe un dalvoudenn spisaet all"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Goulenn un niver gant an implijer."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Goulenn un destenn gant an implijer."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pedadenn evit un niver gant ur c'hemennad"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "goulenn un destenn gant ur gemennadenn"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "erlec'hiañ %1 gant %2 e %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Erlec'hiañ holl reveziadennoù un destenn bennak gant un destenn all."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "eilpennañ %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Eilpennañ urzh an arouezennoù en destenn."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Ul lizherenn, ur ger pe ul linennad testenn."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "Lemel an esaouennoù en daou du"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "Lemel an esaouennoù eus an tu kleiz"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "Lemel an esaouennoù eus an tu dehou"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Distreiñ un eilenn eus an destenn gant an esaouennoù lamet eus un tu pe eus an daou du"; +Blockly.Msg["TODAY"] = "Hiziv"; +Blockly.Msg["UNDO"] = "Dizober"; +Blockly.Msg["UNNAMED_KEY"] = "dizanv"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elfenn"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Krouiñ 'termenañ %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Distreiñ talvoud an argemm-mañ."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "termenañ %1 da %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Krouiñ 'kaout %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Termenañ a ra argemm-mañ evit ma vo par da dalvoudenn ar moned."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Un argemmenn anvet '%1' zo anezhi dija."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Un argemenn anvet '%1' zo c'hoazh evit un argemenn all eus ar seurt : '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Takad labour Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Lavaret un dra bennak..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/bs.js b/blockly/msg/bs.js new file mode 100644 index 00000000000..0e06ff6df49 --- /dev/null +++ b/blockly/msg/bs.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne mogu izbrisati varijablu \"%1\" jer je dio definicije funckije \"%2\""; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Promijeni vrijednost:"; +Blockly.Msg["CLEAN_UP"] = "Očisti blokove"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Skupi blokove"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Skupi blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "boju 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "boju 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "odnos"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "pomiješaj"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Pomiješaj dvije boje zajedno sa zadanim odnosom (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://bs.wikipedia.org/wiki/Boja"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izaberi boju sa palete."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "nasumična boja"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Odaberi boju nasumično."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "plavom"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelenom"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "crvenom"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "boja sa"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Napravi boju s određenom količinom crvene, zelene i plave boje. Sve vrijednosti moraju biti između 0 i 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "izađi iz petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nastavi sa sljedećom iteracijom petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Napusti petlju koja sadrži ovaj blok."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči ostatak ove petlje i nastavi sa sljedećom iteracijom."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozorenje: Ovaj blok se može koristiti samo unutar petlje."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za svaku stavku %1 na spisku %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za svaku stavku na spisku, dodjeljuje vrijednost stavke varijabli \"%1\", a zatim izvršava neke naredbe."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "broji sa %1 od %2 do %3 po %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Neka varijabla \"%1\" uzima vrijednosti od početnog do krajnjeg broja, brojeći po određenom intervalu i neka izvršava određene blokove."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodajte uslov bloku \"ako\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "inače"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inače ako"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ako"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ako je vrijednost tačna, izvršava neke naredbe."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ako je vrijednost tačna, izvršava neke naredbe. U suprotnom, izvršava drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izvrši"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1 puta"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Izvrši neku naredbu nekoliko puta."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljati do"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljati dok"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dok je vrijednost netačna, izvršava neke naredbe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dok je vrijednost tačna, izvršava neke naredbe."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Izbrisati svih %1 blokova?"; +Blockly.Msg["DELETE_BLOCK"] = "Obriši blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Izbriši varijablu \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Izbrisati %1 upotrebu varijable \"%2\"?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Obriši %1 blokova"; +Blockly.Msg["DIALOG_CANCEL"] = "Otkaži"; +Blockly.Msg["DIALOG_OK"] = "U redu"; +Blockly.Msg["DISABLE_BLOCK"] = "Onemogući blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliciraj"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kopiraj komentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Omogući blok"; +Blockly.Msg["EXPAND_ALL"] = "Proširi blokove"; +Blockly.Msg["EXPAND_BLOCK"] = "Proširi blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Vanjski ulazi"; +Blockly.Msg["HELP"] = "Pomoć"; +Blockly.Msg["INLINE_INPUTS"] = "Redni ulazi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "pronađi prvo pojavljivanje stavke"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "pronađi posljednje pojavljivanje stavke"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "na spisku"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazan"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vraća \"tačno\" ako je spisak prazan."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dužina spiska %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vraća dužinu spiska."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "netačno"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vraća ili tačno ili netačno."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tačno"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://bs.wikipedia.org/wiki/Nejednakost"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nije %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "bez vrijednosti"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vraća \"bez vrijednosti\"."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ili"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ako je netačno"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ako je tačno"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://bs.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vraća zbir dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vraća količnik dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vraća razliku dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vraća proizvod dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vraća prvi broj na eksponent drugog broja."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "promijeni %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodaj broj varijabli \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://bs.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vraća jednu od uobičajenih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) ili ∞ (beskonačnost)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je djeljiv sa"; +Blockly.Msg["MATH_IS_EVEN"] = "je paran"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativan"; +Blockly.Msg["MATH_IS_ODD"] = "je neparan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivan"; +Blockly.Msg["MATH_IS_PRIME"] = "je prost"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Provjerava da li je broj paran, neparan, prost, cijeli, pozitivan, negativan ili je djeljiv s određenim brojem. Vraća tačno ili netačno."; +Blockly.Msg["MATH_IS_WHOLE"] = "je cijeli"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://bs.wikipedia.org/wiki/Broj"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Broj."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zbir spiska"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vraća zbir svih brojeva sa spiska."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokruži"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokruži naniže"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokruži naviše"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokružuje broj na veću ili manju vrijednost."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://bs.wikipedia.org/wiki/Kvadratni_korijen"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "apsolutno"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni korijen"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vraća absolutnu vrijednost broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vraća e na eksponent broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vraća prirodni logoritam broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vraća logoritam broja za bazu 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vraća negaciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vraća 10 na eksponent broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vraća kvadratni korijen broja"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://bs.wikipedia.org/wiki/Trigonometrijska_funkcija"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vraća arkuskosinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vraća arkussinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vraća arkustangens broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vraća kosinus stepena (ne radijana)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vraća sinus stepena (ne radijana)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vraća tangens stepena (ne radijana)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Napravi varijablu boje..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Napravi varijablu broja..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Napravi varijablu niza..."; +Blockly.Msg["NEW_VARIABLE"] = "Napravi varijablu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove varijable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Vrsta nove varijable:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ime ulaza:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Ponovi"; +Blockly.Msg["REMOVE_COMMENT"] = "Ukloni komentare"; +Blockly.Msg["RENAME_VARIABLE"] = "Preimenuj varijablu..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj sve \"%1\" varijable u:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazan"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dužina teksta %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Danas"; +Blockly.Msg["UNDO"] = "Poništi"; +Blockly.Msg["UNNAMED_KEY"] = "neimenovano"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "stavka"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Varijabla s imenom \"%1\" već postoji."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Varijabla s imenom \"%1\" već postoji za drugu vrstu: \"%2\"."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ca.js b/blockly/msg/ca.js new file mode 100644 index 00000000000..9f5c21aaa86 --- /dev/null +++ b/blockly/msg/ca.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Afegeix un comentari"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "No podem esborrar la variable '%1' perquè forma part de la definició de la funció '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Canvia valor:"; +Blockly.Msg["CLEAN_UP"] = "Netejar blocs"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Els blocs plegats contenen avisos."; +Blockly.Msg["COLLAPSE_ALL"] = "Contraure blocs"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Contraure bloc"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporció"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "barreja"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Barreja dos colors amb una proporció donada (0,0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ca.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolliu un color de la paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatori"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolliu un color a l'atzar."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verd"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "vermell"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "color amb"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crear un color amb les quantitats especificades de vermell, verd i blau. Tots els valors han de ser entre 0 i 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "sortir del bucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar amb la següent iteració del bucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sortir del bucle interior."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ometre la resta d'aquest bucle, i continuar amb la següent iteració."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Advertència: Aquest bloc només es pot utilitzar dins d'un bucle."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per a cada element %1 en la llista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Per a cada element en la llista, desar l'element dins la variable '%1', i llavors executar unes sentències."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "comptar amb %1 des de %2 fins a %3 en increments de %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fer que la variable \"%1\" prengui els valors des del nombre inicial fins al nombre final, incrementant a cada pas l'intèrval indicat, i executar els blocs especificats."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Afegeix una condició al bloc 'si'."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Afegeix una condició final, que recull qualsevol altra possibilitat, al bloc 'si'."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc 'si'."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "si no"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "si no, si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor és cert, llavors executar unes sentències."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor és cert, llavors executar el primer bloc de sentències. En cas contrari, executar el segon bloc de sentències."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències. Si cap dels valors és cert, executar l'últim bloc de sentències."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ca.wikipedia.org/wiki/Bucle_For"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fer"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 vegades"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Executar unes sentències diverses vegades."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir fins que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mentre"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Mentre un valor sigui fals, llavors executar unes sentències."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Mentre un valor sigui cert, llavors executar unes sentències."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Esborrar els %1 blocs?"; +Blockly.Msg["DELETE_BLOCK"] = "Esborra bloc"; +Blockly.Msg["DELETE_VARIABLE"] = "Esborrar la variable '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Esborrar '%1' crides de la variable '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Esborra %1 blocs"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel·la"; +Blockly.Msg["DIALOG_OK"] = "D'acord"; +Blockly.Msg["DISABLE_BLOCK"] = "Desactiva bloc"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplica"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Comentari duplicat"; +Blockly.Msg["ENABLE_BLOCK"] = "Activa bloc"; +Blockly.Msg["EXPAND_ALL"] = "Expandir blocs"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir bloc"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entrades externes"; +Blockly.Msg["HELP"] = "Ajuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entrades en línia"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear llista buida"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna una llista, de longitud 0, que no conté cap dada."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "llista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc de llista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear llista amb"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Afegeix un element a la llista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crea una llista amb qualsevol nombre d'elements."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primer"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "núm.# des del final"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "recupera"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "recupera i esborra"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "últim"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "a l'atzar"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "esborra"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna el primer element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna l'element de la posició especificada a la llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna l'últim element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna un element a l'atzar d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Esborra i retorna el primer element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Esborra i retorna l'element de la posició especificada de la llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Esborra i retorna l'últim element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Esborra i retorna un element a l'atzar d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Esborra el primer element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Esborra l'element de la posició especificada de la llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Esborra l'últim element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Esborra un element a l'atzar d'una llista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "fins # des del final"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fins #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "fins l'últim"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "recupera sub-llista des del principi"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "recupera sub-llista des de # des del final"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "recupera sub-llista des de #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea una còpia de la part especificada d'una llista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 és l'últim element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 és el primer element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "buscar primera aparició d'un element"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "buscar última aparició d'un element"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna l'índex de la primera/última aparició d'un element a la llista. Retorna %1 si no s'hi troba l'element."; +Blockly.Msg["LISTS_INLIST"] = "en la llista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 és buida"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retorna cert si la llista és buida."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitud de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna la longitud d'una llista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "crea llista amb element %1 repetit %2 vegades"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea una llista formada pel valor donat, repetit tantes vegades com s'indiqui."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "invertir %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Invertir la còpia d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "com"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insereix a"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "modifica"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insereix l'element al principi d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insereix l'element a la posició especificada d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Afegeix l'element al final d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insereix l'element en una posició a l'atzar d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Modifica el primer element d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Modifica l'element de la posició especificada d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Modifica l'últim element d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Modifica un element a l'atzar d'una llista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendent"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendent"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordenar %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordena la còpia d'una llista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabètic, ignorant majúscules"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numèric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabètic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fer una llista d'un text"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fer un text d'una llista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ajunta una llista de textos en un text, separats per un delimitador."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Parteix el text en una llista de textos, trencant-lo a cada delimitador."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "amb delimitador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fals"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna o bé cert o bé fals."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "cert"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ca.wikipedia.org/wiki/Inequaci%C3%B3"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retorna cert si totes dues entrades són iguals."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retorna cert si la primera entrada és més gran que la segona entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retorna cert si la primera entrada és més gran o igual a la segona entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retorna cert si la primera entrada és més petita que la segona entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retorna cert si la primera entra és més petita o igual a la segona entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retorna cert si totes dues entrades són diferents."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "no %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retorna cert si l'entrada és falsa. Retorna fals si l'entrada és certa."; +Blockly.Msg["LOGIC_NULL"] = "nul"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nul."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retorna cer si totes dues entrades són certes."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retorna cert si almenys una de les entrades és certa."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "condició"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si és fals"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si és cert"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Comprova la condició de 'condició'. Si la condició és certa, retorna el valor 'si és cert'; en cas contrari, retorna el valor 'si és fals'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ca.wikipedia.org/wiki/Aritm%C3%A8tica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna la suma dels dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna el quocient dels dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna la diferència entre els dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna el producte del dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna el primer nombre elevat a la potència indicada pel segon nombre."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://ca.wikipedia.org/wiki/Inverses_de_les_funcions_trigonom%C3%A8triques#L'arctangent_amb_dos_arguments"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Torna l'arctangent del punt (X,Y) en graus de -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ca.wikipedia.org/wiki/Suma"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "canvia %1 per %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Afegeix un nombre a la variable '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ca.wikipedia.org/wiki/Constant_matem%C3%A0tica"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna una de les constants més habituals: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…), o ∞ (infinit)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limitar %1 entre %2 i %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limita un nombre perquè estigui entre els límits especificats (inclosos)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "és divisible per"; +Blockly.Msg["MATH_IS_EVEN"] = "és parell"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "és negatiu"; +Blockly.Msg["MATH_IS_ODD"] = "és senar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "és positiu"; +Blockly.Msg["MATH_IS_PRIME"] = "és primer"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Comprova si un nombre és parell, senar, enter, positium negatiu, o si és divisible per un cert nombre. Retorna cert o fals."; +Blockly.Msg["MATH_IS_WHOLE"] = "és enter"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ca.wikipedia.org/wiki/Residu_%28aritm%C3%A8tica%29"; +Blockly.Msg["MATH_MODULO_TITLE"] = "residu de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retorna el residu de dividir els dos nombres."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ca.wikipedia.org/wiki/Nombre"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nombre."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mitjana de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "màxim de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mínim de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element aleatori de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desviació estàndard de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma de llista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retorna la mitjana (mitjana aritmètica) dels valors numèrics de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna el nombre més gran de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retorna la mediana de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna el nombre més petit de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retorna una llista dels elements que apareixen més vegades a la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retorna un element aleatori de la lllista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retorna la desviació estàndard de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna la suma de tots els nombres de la llista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fracció aleatòria"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Retorna una fracció aleatòria entre 0,0 (inclòs) i 1,0 (exclòs)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "nombre aleatori entre %1 i %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retorna un nombre aleatori entre els dos límits especificats, inclosos."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ca.wikipedia.org/wiki/Arrodoniment"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrodonir"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrodonir cap avall"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrodonir cap amunt"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrodonir un nombre cap amunt o cap avall."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ca.wikipedia.org/wiki/Arrel_quadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "arrel quadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna el valor absolut d'un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna ''e'' elevat a la potència del nombre indicat."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna el logaritme natural d'un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna el logaritme en base 10 d'un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna l'oposat d'un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevat a la potència del nombre indicat."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna l'arrel quadrada d'un nombre."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ca.wikipedia.org/wiki/Funci%C3%B3_trigonom%C3%A8trica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna l'arccosinus d'un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna l'arcsinus d'un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna l'arctangent d'un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna el cosinus d'un grau (no radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna el sinus d'un grau (no radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna la tangent d'un grau (no radiant)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear variable de color..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crea variable numèrica..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear variable de cadena…"; +Blockly.Msg["NEW_VARIABLE"] = "Crea una variable…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nou nom de variable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nou tipus de variable:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permetre declaracions"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "amb:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executa la funció definida per usuari '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executa la funció definida per l'usuari '%1' i utilitza la seva sortida."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "amb:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descriure aquesta funció..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fes alguna cosa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "a"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea una funció sense sortida."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorna"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea una funció amb una sortida."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advertència: Aquesta funció té paràmetres duplicats."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Iluminar la definició de la funció"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si el valor és cert, llavors retorna un segon valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advertència: Aquest bloc només es pot utilitzar dins de la definició d'una funció."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nom d'entrada:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Afegir una entrada per la funció."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entrades"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Afegir, eliminar o canviar l'ordre de les entrades per aquesta funció."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Refer"; +Blockly.Msg["REMOVE_COMMENT"] = "Elimina el comentari"; +Blockly.Msg["RENAME_VARIABLE"] = "Reanomena variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Reanomena totes les variables '%1' a:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 afegir text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Afegir un text a la variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "a minúscules"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "a Text De Títol"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "a MAJÚSCULES"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retorna una còpia del text amb diferents majúscules/minúscules."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "recupera la primera lletra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "recupera la lletra núm.# des del final"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "recupera la lletra núm.#"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "recupera l'última lletra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "recupera una lletra a l'atzar"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "en el text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Recupera la lletra de la posició especificada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "comptar %1 en %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Compta quantes vegades hi ha un text dins d'un altre text."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Afegeix un element al text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Afegeix, esborrar o reordenar seccions per reconfigurar aquest bloc de text."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "fins a la lletra núm.# des del final"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "fins a la lletra núm.#"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "fins a l'última lletra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en el text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "recupera subcadena des de la primera lletra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "recupera subcadena des de la lletra núm.# des del final"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "recupera subcadena des de la lletra núm.#"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Recupera una part especificada del text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trobar la primera aparició del text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trobar l'última aparició del text"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en el text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna l'índex de la primera/última aparició del primer text dins el segon. Retorna %1 si no es troba el text."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 està buit"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna cert si el text proporcionat està buit."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear text amb"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crea un tros de text per unió de qualsevol nombre d'elements."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "llargària de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Retorna el nombre de lletres (espais inclosos) en el text proporcionat."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprimir %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprimir el text, el nombre o altre valor especificat."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Demana que l'usuari introdueixi un nombre."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Demana que l'usuari introdueixi un text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "demanar un nombre amb el missatge"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "demanar text amb el missatge"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "substituir %1 amb %2 en %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Substitueix totes les aparicions d'un text dins d'un altre text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "invertir %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverteix l'ordre dels caràcters en el text."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ca.wikipedia.org/wiki/Cadena_%28inform%C3%A0tica%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una lletra, paraula o línia de text."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "retalla espais de tots dos extrems de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "retalla espais de l'esquerra de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "retalla espais de la dreta de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retorna una còpia del text on s'han esborrat els espais d'un o dels dos extrems."; +Blockly.Msg["TODAY"] = "Avui"; +Blockly.Msg["UNDO"] = "Desfer"; +Blockly.Msg["UNNAMED_KEY"] = "sense nom"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crea 'modifica %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna el valor d'aquesta variable."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "modifica %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'recupera %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Modifica aquesta variable al valor introduït."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Ja existeix una variable anomenada '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Una variable anomenada '%1' ja existeix per al tipus '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espai de treball Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Digues alguna cosa..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/cdo.js b/blockly/msg/cdo.js new file mode 100644 index 00000000000..22da6cbf814 --- /dev/null +++ b/blockly/msg/cdo.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "確定"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/cs.js b/blockly/msg/cs.js new file mode 100644 index 00000000000..adc8c40bef3 --- /dev/null +++ b/blockly/msg/cs.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Přidat komentář"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Proměnnou '%1' není možné odstranit, protože je součástí definice funkce '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Změnit hodnotu:"; +Blockly.Msg["CLEAN_UP"] = "Uspořádat bloky"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Sbalit bloky"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Sbalit blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "barva 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "barva 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "poměr"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "smíchat"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Smíchá dvě barvy v daném poměru (0.0–1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://cs.wikipedia.org/wiki/Barva"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Vyberte barvu z palety."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "náhodná barva"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zvolte barvu náhodně."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "modrá"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelená"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "červená"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "obarvěte barvou"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Vytvoř barvu se zadaným množstvím červené, zelené a modré. Všechny hodnoty musí být mezi 0 a 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "vyskočit ze smyčky"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "pokračuj dalším opakováním smyčky"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Vyskoč z vnitřní smyčky."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Přeskoč zbytek této smyčky a pokračuj dalším opakováním."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozornění: Tento blok může být použit pouze uvnitř smyčky."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pro každou položku %1 v seznamu %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pro každou položku v seznamu nastavte do proměnné '%1' danou položku a proveďte nějaké operace."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "počítat s %1 od %2 do %3 po %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Nechá proměnnou '%1' nabývat hodnot od počátečního do koncového čísla po daném přírůstku a provádí příslušné bloky."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Přidat podmínku do \"pokud\" bloku."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Přidej konečnou podmínku zahrnující ostatní případy do bloku \"pokud\"."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Přidej, odstraň či uspořádej sekce k přenastavení tohoto bloku \"pokud\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "jinak"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "nebo pokud"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "pokud"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Je-li hodnota pravda, proveď určité příkazy."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Je-li hodnota pravda, proveď první blok příkazů. V opačném případě proveď druhý blok příkazů."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Je-li první hodnota pravdivá, proveď první blok příkazů. V opačném případě, je-li pravdivá druhá hodnota, proveď druhý blok příkazů."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Je-li první hodnota pravda, proveď první blok příkazů. Je-li druhá hodnota pravda, proveď druhý blok příkazů. Pokud žádná hodnota není pravda, proveď poslední blok příkazů."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://cs.wikipedia.org/wiki/Cyklus_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "dělej"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "opakuj %1 krát"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Proveď určité příkazy několikrát."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "opakovat dokud"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "opakovat když"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dokud je hodnota nepravdivá, prováděj určité příkazy."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dokud je hodnota pravdivá, prováděj určité příkazy."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Smazat všech %1 bloků?"; +Blockly.Msg["DELETE_BLOCK"] = "Smazat blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Odstranit proměnnou '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Odstranit %1 použití proměnné '%2'"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Smazat %1 bloků"; +Blockly.Msg["DIALOG_CANCEL"] = "Zrušit"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Deaktivovat blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikovat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplikovat komentář"; +Blockly.Msg["ENABLE_BLOCK"] = "Povolit blok"; +Blockly.Msg["EXPAND_ALL"] = "Rozbalit bloky"; +Blockly.Msg["EXPAND_BLOCK"] = "Rozbalit blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "vnější vstupy"; +Blockly.Msg["HELP"] = "Nápověda"; +Blockly.Msg["INLINE_INPUTS"] = "Vložené vstupy"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "vytvořit prázdný seznam"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vrátí seznam nulové délky, který neobsahuje žádné datové záznamy"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "seznam"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Přidat, odebrat nebo změnit pořadí oddílů tohoto seznamu bloku."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "vytvořit seznam s"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Přidat položku do seznamu."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Vytvoř seznam s libovolným počtem položek."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "první"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od konce"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "získat"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "získat a odstranit"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "poslední"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "náhodné"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "odstranit"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vrátí první položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Získá položku z určené pozice v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vrátí poslední položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vrátí náhodnou položku ze seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Odstraní a vrátí první položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Odstraní a získá položku z určené pozice v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Odstraní a vrátí poslední položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Odstraní a vrátí náhodnou položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Odstraní první položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Odebere položku na konkrétním místě v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Odstraní poslední položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Odstraní náhodou položku v seznamu."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od konce"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "jako poslední"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "získat podseznam od první položky"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "získat podseznam od # od konce"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "získat podseznam od #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Vytvoří kopii určené části seznamu."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je poslední položka."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je první položka."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "najít první výskyt položky"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "najít poslední výskyt položky"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vrací index prvního/posledního výskytu položky v seznamu. Vrací %1, pokud položka nebyla nalezena."; +Blockly.Msg["LISTS_INLIST"] = "v seznamu"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prázdné"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vrátí hodnotu pravda, pokud je seznam prázdný."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "délka %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vrací počet položek v seznamu."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "vytvoř seznam s položkou %1 opakovanou %2 krát"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Vytváří seznam obsahující danou hodnotu n-krát."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "jako"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "vložit na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "nastavit"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Vložit položku na začátek seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Vloží položku na určenou pozici v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Připojí položku na konec seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Připojí položku náhodně do seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Nastaví první položku v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Nastaví položku na konkrétní místo v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Nastaví poslední položku v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Nastaví náhodnou položku v seznamu."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "vzestupně"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "sestupně"; +Blockly.Msg["LISTS_SORT_TITLE"] = "seřadit %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Seřadit kopii seznamu."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecedně, na velikosti písmen nezáleží"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "číselné"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abecedně"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "udělat z textu seznam"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "udělat ze seznamu text"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Spojit seznam textů do jednoho textu, rozdělaného oddělovači."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Rozdělit text do seznamu textů, lámání na oddělovačích."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "s oddělovačem"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "nepravda"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vrací pravda nebo nepravda."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "pravda"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://cs.wikipedia.org/wiki/Nerovnost_(matematika)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vrátí hodnotu pravda, pokud se oba vstupy rovnají jeden druhému."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Navrátí hodnotu pravda, pokud první vstup je větší než druhý vstup."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Navrátí hodnotu pravda, pokud je první vstup větší a nebo rovný druhému vstupu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Navrátí hodnotu pravda, pokud je první vstup menší než druhý vstup."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Navrátí hodnotu pravda, pokud je první vstup menší a nebo rovný druhému vstupu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vrátí hodnotu pravda, pokud se oba vstupy nerovnají sobě navzájem."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Navrátí hodnotu pravda, pokud je vstup nepravda. Navrátí hodnotu nepravda, pokud je vstup pravda."; +Blockly.Msg["LOGIC_NULL"] = "prázdný"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vrátí prázdnou hodnotu"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "a"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "nebo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vrátí hodnotu pravda, pokud oba dva vstupy jsou pravdivé."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vrátí hodnotu pravda, pokud alespoň jeden ze vstupů má hodnotu pravda."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://cs.wikipedia.org/wiki/Ternární operátor (programování)"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "pokud nepravda"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "pokud pravda"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Zkontroluje podmínku v \"testu\". Když je podmínka pravda, vrátí hodnotu \"pokud pravda\"; v opačném případě vrátí hodnotu \"pokud nepravda\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://cs.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vrátí součet dvou čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vrátí podíl dvou čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vrátí rozdíl dvou čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vrátí součin dvou čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vrátí první číslo umocněné na druhé číslo."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://cs.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 z X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vrací arkustangens bodu (X, Y) ve stupních od -180 do 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "zaměň %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Přičti číslo k proměnné '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vraťte jednu z následujících konstant: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (nekonečno)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "omez %1 na rozmezí od %2 do %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Omezí číslo tak, aby bylo ve stanovených mezích (včetně)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je dělitelné číslem"; +Blockly.Msg["MATH_IS_EVEN"] = "je sudé"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je záporné"; +Blockly.Msg["MATH_IS_ODD"] = "je liché"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je kladné"; +Blockly.Msg["MATH_IS_PRIME"] = "je prvočíslo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrola, zda je číslo sudé, liché, prvočíslo, celé, kladné, záporné nebo zda je dělitelné daným číslem. Vrací pravdu nebo nepravdu."; +Blockly.Msg["MATH_IS_WHOLE"] = "je celé"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://cs.wikipedia.org/wiki/Modul%C3%A1rn%C3%AD_aritmetika"; +Blockly.Msg["MATH_MODULO_TITLE"] = "zbytek po dělení %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vrátí zbytek po dělení dvou čísel."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://cs.wikipedia.org/wiki/Číslo"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Číslo."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "průměr v seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "největší v seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medián v seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "nejmenší v seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "nejčastější ze seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "náhodná položka seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "směrodatná odchylka ze seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma seznamu"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vrátí průměr (aritmetický průměr) číselných hodnot v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vrátí největší číslo v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vrátí medián seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vrátí nejmenší číslo v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vrátí seznam nejčastějších položek seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vrátí náhodnou položku ze seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vrátí směrodatnou odchylku seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vrátí součet všech čísel v seznamu."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "náhodné číslo mezi 0 (včetně) do 1"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vrátí náhodné číslo mezi 0,0 (včetně) až 1,0"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "náhodné celé číslo od %1 do %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vrací náhodné celé číslo mezi dvěma určenými mezemi, včetně mezních hodnot."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokrouhlit"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokrouhlit dolů"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokrouhlit nahoru"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokrouhlit číslo nahoru nebo dolů."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://cs.wikipedia.org/wiki/Druhá_odmocnina"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolutní hodnota"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "druhá odmocnina"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vrátí absolutní hodnotu čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vrátí mocninu čísla e."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vrátí přirozený logaritmus čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vrátí desítkový logaritmus čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vrátí zápornou hodnotu čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vrátí mocninu čísla 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vrátí druhou odmocninu čísla."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vrátí arkus kosinus čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vrátí arkus sinus čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vrátí arkus tangens čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vrátí kosinus úhlu ve stupních."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vrátí sinus úhlu ve stupních."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vrátí tangens úhlu ve stupních."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Vytvořit proměnnou pro barvu..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Vytvořit číselnou proměnnou..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Vytvořit textovou proměnnou..."; +Blockly.Msg["NEW_VARIABLE"] = "Vytvořit proměnnou..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nový název proměnné:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nový typ proměnné:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "povolit příkazy"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://cs.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Spustí uživatelem definovanou funkci '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://cs.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Spustí uživatelem definovanou funkci '%1' a použije její výstup."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Vytvořit '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Popište tuto funkci..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "proveď něco"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "k provedení"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Vytvořit funkci bez výstupu."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "navrátit"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Vytvořit funkci s výstupem."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozornění: Tato funkce má duplicitní parametry."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Zvýraznit definici funkce"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Je-li hodnota pravda, pak vrátí druhou hodnotu."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Varování: Tento blok může být použit pouze uvnitř definici funkce."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "vstupní jméno:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Přidat vstupy do funkce."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "vstupy"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Přidat, odebrat nebo změnit pořadí vstupů této funkce."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Znovu"; +Blockly.Msg["REMOVE_COMMENT"] = "Odstranit komentář"; +Blockly.Msg["RENAME_VARIABLE"] = "Přejmenovat proměnnou..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Přejmenuj všech '%1' proměnných na:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "do %1 přidat text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Přidá určitý text k proměnné '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na malá písmena"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Počáteční Velká Písmena"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na VELKÁ PÍSMENA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vrátí kopii textu s jinou velikostí písmen."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "získat první písmeno"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "získat # písmeno od konce"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "získat písmeno #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "získat poslední písmeno"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "získat náhodné písmeno"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "v textu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Získat písmeno na konkrétní pozici."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Přidat položku do textu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "spojit"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Přidat, odebrat nebo změnit pořadí oddílů tohoto textového bloku."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do # písmene od konce"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do písmene #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do posledního písmene"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "v textu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "získat podřetězec od prvního písmene"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "získat podřetězec od písmene # od konce"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "získat podřetězec od písmene #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Získat zadanou část textu."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "najít první výskyt textu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "najít poslední výskyt textu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "v textu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vypíše %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prázdný"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vrátí pravda pokud je zadaný text prázdný."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "vytvořit text s"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Vytvoří kousek textu spojením libovolného počtu položek."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "délka %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vrátí počet písmen (včetně mezer) v zadaném textu."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "tisk %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Tisk zadaného textu, čísla nebo jiné hodnoty."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Výzva pro uživatele k zadání čísla."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Výzva pro uživatele k zadání nějakého textu."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "výzva k zadání čísla se zprávou"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "výzva k zadání textu se zprávou"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://cs.wikipedia.org/wiki/Textov%C3%BD_%C5%99et%C4%9Bzec"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Písmeno, slovo nebo řádek textu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "odstranit mezery z obou stran"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "odstranit mezery z levé strany"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "odstranit mezery z pravé strany"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vrátí kopii textu s odstraněnými mezerami z jednoho nebo obou konců."; +Blockly.Msg["TODAY"] = "Dnes"; +Blockly.Msg["UNDO"] = "Zpět"; +Blockly.Msg["UNNAMED_KEY"] = "nepojmenovaný"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "položka"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Vytvořit \"nastavit %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vrátí hodnotu této proměnné."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "nastavit %1 na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Vytvořit \"získat %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Nastaví tuto proměnnou, aby se rovnala vstupu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Proměnná jménem '%1' již existuje"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Proměnná pojmenovaná jako '%1' již existuje pro jiný typ: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/da.js b/blockly/msg/da.js new file mode 100644 index 00000000000..fd5b1e25af1 --- /dev/null +++ b/blockly/msg/da.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Tilføj Kommentar"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kan ikke slette variablen »%1« da den er en del af definitionen af funktionen »%2«"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Skift værdi:"; +Blockly.Msg["CLEAN_UP"] = "Ryd op i blokke"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Fold blokkene sammen"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Fold blokken sammen"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "farve 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "farve 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "i forholdet"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "bland"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blander to farver sammen i et bestemt forhold (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://da.wikipedia.org/wiki/Farve"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Vælg en farve fra paletten."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "tilfældig farve"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Vælg en tilfældig farve."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blå"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grøn"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rød"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "farve med"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Lav en farve med den angivne mængde af rød, grøn og blå. Alle værdier skal være mellem 0 og 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "bryd ud af løkken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fortsæt med den næste gentagelse i løkken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bryd ud af den omgivende løkke."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Spring resten af denne løkke over, og fortsæt med den næste gentagelse."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Advarsel: Denne blok kan kun bruges i en løkke."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for hvert element %1 i listen %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For hvert element i en liste, sæt variablen '%1' til elementet, og udfør derefter nogle kommandoer."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "tæl med %1 fra %2 til %3 med %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Få variablen \"%1\" til at have værdierne fra startværdien til slutværdien, mens der tælles med det angivne interval, og udfør de angivne blokke."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tilføj en betingelse til denne \"hvis\" blok."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tilføj en sidste fang-alt betingelse, til denne \"hvis\" blok."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne \"hvis\" blok."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ellers"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ellers hvis"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "hvis"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Hvis en værdi er sand, så udfør nogle kommandoer."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Hvis en værdi er sand, så udfør den første blok af kommandoer. Ellers udfør den anden blok af kommandoer."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer. Hvis ingen af værdierne er sande, så udfør den sidste blok af kommandoer."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://da.wikipedia.org/wiki/For-l%C3%B8kke"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "udfør"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "gentag %1 gange"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Udfør nogle kommandoer flere gange."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "gentag indtil"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "gentag sålænge"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Udfør nogle kommandoer, sålænge en værdi er falsk."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Udfør nogle kommandoer, sålænge en værdi er sand."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Slet alle %1 blokke?"; +Blockly.Msg["DELETE_BLOCK"] = "Slet blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Slet variablen »%1«"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Slet %1's brug af variablen »%2«?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Slet %1 blokke"; +Blockly.Msg["DIALOG_CANCEL"] = "Afbryd"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Deaktivér blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikér"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplikér Kommentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktivér blok"; +Blockly.Msg["EXPAND_ALL"] = "Fold blokkene ud"; +Blockly.Msg["EXPAND_BLOCK"] = "Fold blokken ud"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Udvendige inputs"; +Blockly.Msg["HELP"] = "Hjælp"; +Blockly.Msg["INLINE_INPUTS"] = "Indlejrede inputs"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "opret en tom liste"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returnerer en liste af længde 0, som ikke indeholder nogen data"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne blok."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "opret liste med"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Føj et element til listen."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Opret en liste med et vilkårligt antal elementer."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "første"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# fra slutningen"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "hent"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hent og fjern"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "sidste"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "tilfældig"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fjern"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnerer det første element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returnerer elementet på den angivne position på en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnerer den sidste element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returnerer et tilfældigt element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fjerner og returnerer det første element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fjerner og returnerer elementet på den angivne position på en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fjerner og returnerer det sidste element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fjerner og returnerer et tilfældigt element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fjerner det første element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fjerner elementet på den angivne position på en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fjerner sidste element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fjerner et tilfældigt element i en liste."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "til # fra slutningen"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "til #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "til sidste"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "hent underliste fra første"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "hent underliste fra # fra slutningen"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "hent underliste fra #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Opretter en kopi af den angivne del af en liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 er det sidste element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 er det første element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find første forekomst af elementet"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find sidste forekomst af elementet"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returnerer indeks for første/sidste forekomst af elementet i listen. Returnerer %1, hvis elementet ikke kan findes."; +Blockly.Msg["LISTS_INLIST"] = "i listen"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 er tom"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnerer sand, hvis listen er tom."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "længden af %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnerer længden af en liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "opret liste med elementet %1 gentaget %2 gange"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Opretter en liste bestående af den givne værdi gentaget et bestemt antal gange."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "vend %1 om"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Vend en kopi af en liste om."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "som"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "indsæt ved"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "sæt"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Indsætter elementet i starten af en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Indsætter elementet på den angivne position i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Føj elementet til slutningen af en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Indsætter elementet tilfældigt i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sætter det første element i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sætter elementet på den angivne position i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sætter det sidste element i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sætter et tilfældigt element i en liste."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "stigende"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "faldende"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sorter %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sorter en kopi af en liste."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetisk, ignorer store/små bogstaver"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "nummerorden"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetisk"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lav tekst til liste"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "lav liste til tekst"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Saml en liste af tekster til én tekst, der er adskilt af et skilletegn."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Bryd tekst op i en liste af tekster med brud ved hvert skilletegn."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "med skilletegn"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsk"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnerer enten sand eller falsk."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "sand"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://da.wikipedia.org/wiki/Ulighed_(matematik)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Returnere sand, hvis begge inputs er lig med hinanden."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Returnere sand, hvis det første input er større end det andet input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Returnere sand, hvis det første input er større end eller lig med det andet input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Returnere sand, hvis det første input er mindre end det andet input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Returnere sand, hvis det første input er mindre end eller lig med det andet input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Returnere sand, hvis begge inputs ikke er lig med hinanden."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ikke %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returnerer sand, hvis input er falsk. Returnerer falsk, hvis input er sandt."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returnerer null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "og"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "eller"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Returnere sand, hvis begge inputs er sande."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Returnere sand, hvis mindst et af inputtene er sande."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "hvis falsk"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "hvis sand"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontrollér betingelsen i 'test'. Hvis betingelsen er sand, returnér \"hvis sand\" værdien; ellers returnér \"hvis falsk\" værdien."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://da.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnere summen af de to tal."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returnere kvotienten af de to tal."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returnere forskellen mellem de to tal."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returnere produktet af de to tal."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Returnere det første tal opløftet til potensen af det andet tal."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 af X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "skift %1 med %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Læg et tal til variablen '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://da.wikipedia.org/wiki/Matematisk_konstant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Returnere en af de ofte brugte konstanter: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (uendeligt)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begræns %1 til mellem %2 og %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begræns et tal til at være mellem de angivne grænser (inklusiv)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = ":"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "er deleligt med"; +Blockly.Msg["MATH_IS_EVEN"] = "er lige"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "er negativt"; +Blockly.Msg["MATH_IS_ODD"] = "er ulige"; +Blockly.Msg["MATH_IS_POSITIVE"] = "er positivt"; +Blockly.Msg["MATH_IS_PRIME"] = "er et primtal"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollere, om et tal er lige, ulige, primtal, helt, positivt, negativt, eller om det er deleligt med bestemt tal. Returnere sandt eller falskt."; +Blockly.Msg["MATH_IS_WHOLE"] = "er helt"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://da.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resten af %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Returner resten fra at dividere de to tal."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://da.wikipedia.org/wiki/Tal"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Et tal."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "gennemsnit af listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "største tal i listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "listens median"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mindste tal i listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "listens typetal"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "tilfældigt element fra listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardafvigelsen for listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summen af listen"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Returner gennemsnittet (middelværdien) af de numeriske værdier i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Returner det største tal i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Returner listens median."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Returner det mindste tal i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Returner en liste over de mest almindelige elementer på listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returner et tilfældigt element fra listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Returner standardafvigelsen for listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Returner summen af alle tal i listen."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://da.wikipedia.org/wiki/Tilfældighedsgenerator"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "tilfældigt decimaltal (mellem 0 og 1)"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Returner et tilfældigt decimaltal mellem 0,0 (inklusiv) og 1,0 (eksklusiv)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://da.wikipedia.org/wiki/Tilfældighedsgenerator"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "tilfældigt heltal mellem %1 og %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Returner et tilfældigt heltal mellem de to angivne grænser (inklusiv)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://da.wikipedia.org/wiki/Afrunding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "afrund"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rund ned"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rund op"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Runde et tal op eller ned."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://da.wikipedia.org/wiki/Kvadratrod"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratrod"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returnere den absolutte værdi af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Returnere e til potensen af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Returnere den naturlige logaritme af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returnere 10-talslogaritmen af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returnere negationen af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Returnere 10 til potensen af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returnere kvadratroden af et tal."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://da.wikipedia.org/wiki/Trigonometrisk_funktion"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Returnere arcus cosinus af et tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Returnere arcus sinus af et tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Returnere arcus tangens af et tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Returnere cosinus af en vinkel (i grader)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Returnere sinus af en vinkel (i grader)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Returnere tangens af en vinkel (i grader)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Opret farvevariabel ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Opret nummervariabel ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Opret strengvariabel ..."; +Blockly.Msg["NEW_VARIABLE"] = "Opret variabel ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Navn til den nye variabel:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ny variabeltype:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "tillad erklæringer"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kør den brugerdefinerede funktion '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kør den brugerdefinerede funktion '%1' og brug dens returværdi."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Opret '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beskriv denne funktion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "gøre noget"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "for at"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Opretter en funktion der ikke har nogen returværdi."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returnér"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Opretter en funktion der har en returværdi."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advarsel: Denne funktion har dublerede parametre."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markér funktionsdefinitionen"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Hvis en værdi er sand, så returnér en anden værdi."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advarsel: Denne blok kan kun anvendes inden for en funktionsdefinition."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "parameternavn:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tilføj en parameter til funktionen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "parametre"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tilføje, fjerne eller ændre rækkefølgen af parametre til denne funktion."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Omgør"; +Blockly.Msg["REMOVE_COMMENT"] = "Fjern Kommentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Omdøb variabel..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Omdøb alle '%1' variabler til:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "til %1 tilføj tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tilføj noget tekst til variablen '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "til små bogstaver"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "til Stort Begyndelsesbogstav"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "til STORE BOGSTAVER"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Returner en kopi af teksten hvor bogstaverne enten er udelukkende store eller små, eller hvor første bogstav i hvert ord er stort."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hent første bogstav"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hent bogstav # fra slutningen"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hent bogstav #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hent sidste bogstav"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hent tilfældigt bogstav"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "i tekst %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returnerer bogstavet på den angivne placering."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "tæl %1 i %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Tæl hvor mange gange noget tekst fremgår i en anden tekst."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Føj et element til teksten."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sammenføj"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne tekstblok."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "til bogstav # fra slutningen"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "til bogstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "til sidste bogstav"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "i teksten"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "hent delstreng fra første bogstav"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hent delstreng fra bogstav # fra slutningen"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hent delstreng fra bogstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returnerer den angivne del af teksten."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find første forekomst af teksten"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find sidste forekomst af teksten"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "i tekst %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returnerer indeks for første/sidste forekomst af første tekst i den anden tekst. Returnerer %1, hvis teksten ikke kan findes."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 er tom"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnerer sand, hvis den angivne tekst er tom."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "lav en tekst med"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Lav et stykke tekst ved at sætte et antal elementer sammen."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "længden af %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returnerer antallet af bogstaver (herunder mellemrum) i den angivne tekst."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "skriv %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Skriv den angivne tekst, tal eller anden værdi."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Spørg brugeren efter et tal"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Spørg brugeren efter en tekst"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "spørg efter et tal med meddelelsen"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "spørg efter tekst med meddelelsen"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "erstat %1 med %2 i %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Erstat alle forekomster af noget tekst i en anden tekst."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "vend %1 om"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Vender rækkefølgen om for tegnene i teksten."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://da.wikipedia.org/wiki/Tekststreng"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En bogstav, et ord eller en linje med tekst."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "fjern mellemrum fra begge sider af"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "fjern mellemrum fra venstre side af"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "fjern mellemrum fra højre side af"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returner en kopi af teksten med mellemrum fjernet fra den ene eller begge sider."; +Blockly.Msg["TODAY"] = "I dag"; +Blockly.Msg["UNDO"] = "Fortryd"; +Blockly.Msg["UNNAMED_KEY"] = "unavngivet"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Opret 'sæt %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnerer værdien af denne variabel."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "sæt %1 til %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Opret 'hent %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sætter denne variabel til at være lig med input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "En variabel med navnet »%1« findes allerede."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "En variabel med navnet »%1« findes allerede for en anden type: »%2«."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sig noget ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/de.js b/blockly/msg/de.js new file mode 100644 index 00000000000..9cd3f904c38 --- /dev/null +++ b/blockly/msg/de.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Kommentar hinzufügen"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Die Variable „%1“ kann nicht gelöscht werden, da sie Teil der Definition der Funktion „%2“ ist."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Wert ändern:"; +Blockly.Msg["CLEAN_UP"] = "Bausteine aufräumen"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Eingeklappte Blöcke enthalten Warnungen."; +Blockly.Msg["COLLAPSE_ALL"] = "Alle Bausteine zusammenfalten"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Baustein zusammenfalten"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Farbe 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "und Farbe 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "im Verhältnis"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mische"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Vermischt 2 Farben mit konfigurierbarem Farbverhältnis (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://de.wikipedia.org/wiki/Farbe"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Wählt eine Farbe aus der Palette aus."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "zufällige Farbe"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Erzeugt eine Farbe nach dem Zufallsprinzip."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grün"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rot"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Farbe aus"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Erzeugt eine Farbe mit selbst definierten Rot-, Grün- und Blauwerten. Alle Werte müssen zwischen 0 und 100 liegen."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://de.wikipedia.org/wiki/Kontrollstruktur"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "die Schleife abbrechen"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "sofort mit nächstem Schleifendurchlauf fortfahren"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Die umgebende Schleife beenden."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Diese Anweisung abbrechen und mit dem nächsten Schleifendurchlauf fortfahren."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warnung: Dieser Baustein kann nur in einer Schleife verwendet werden."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://de.wikipedia.org/wiki/For-Schleife"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "für jeden Wert %1 aus der Liste %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Führt eine Anweisung für jeden Wert in der Liste aus und setzt dabei die Variable \"%1\" auf den aktuellen Listenwert."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://de.wikipedia.org/wiki/For-Schleife"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "zähle %1 von %2 bis %3 in Schritten von %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Zählt die Variable \"%1\" von einem Startwert bis zu einem Endwert und führt für jeden Wert eine Anweisung aus."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Eine weitere Bedingung hinzufügen."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Eine sonst-Bedingung hinzufügen. Führt eine Anweisung aus, falls keine Bedingung zutrifft."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Hinzufügen, entfernen oder sortieren von Sektionen"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sonst"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sonst falls"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "falls"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Führt eine Anweisung aus, falls eine Bedingung wahr ist."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Führt die erste Anweisung aus, falls eine Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Führt die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Führe die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist. Führt die dritte Anweisung aus, falls keine der beiden Bedingungen wahr ist"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://de.wikipedia.org/wiki/For-Schleife"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "mache"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "wiederhole %1 mal:"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Eine Anweisung mehrfach ausführen."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://de.wikipedia.org/wiki/Schleife_%28Programmierung%29"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "wiederhole bis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "wiederhole solange"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Führt Anweisungen aus solange die Bedingung unwahr ist."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Führt Anweisungen aus solange die Bedingung wahr ist."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Alle %1 Bausteine löschen?"; +Blockly.Msg["DELETE_BLOCK"] = "Baustein löschen"; +Blockly.Msg["DELETE_VARIABLE"] = "Die Variable „%1“ löschen"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1 Verwendungen der Variable „%2“ löschen?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 Bausteine löschen"; +Blockly.Msg["DIALOG_CANCEL"] = "Abbrechen"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Baustein deaktivieren"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopieren"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kommentar duplizieren"; +Blockly.Msg["ENABLE_BLOCK"] = "Baustein aktivieren"; +Blockly.Msg["EXPAND_ALL"] = "Alle Bausteine entfalten"; +Blockly.Msg["EXPAND_BLOCK"] = "Baustein entfalten"; +Blockly.Msg["EXTERNAL_INPUTS"] = "externe Eingänge"; +Blockly.Msg["HELP"] = "Hilfe"; +Blockly.Msg["INLINE_INPUTS"] = "interne Eingänge"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "erzeuge eine leere Liste"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Erzeugt eine leere Liste ohne Inhalt."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "Liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Hinzufügen, entfernen und sortieren von Elementen."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "erzeuge Liste mit"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ein Element zur Liste hinzufügen."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Erzeugt eine Liste aus den angegebenen Elementen."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "Erste"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "von hinten das"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "das"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "nimm"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "nimm und entferne"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "Letzte"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "Zufällig"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "entferne"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "Element"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Extrahiert das erste Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Extrahiert das Element an der angegebenen Position in der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Extrahiert das letzte Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Extrahiert ein zufälliges Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Extrahiert und entfernt das erste Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Extrahiert und entfernt das Element an der angegebenen Position aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Extrahiert und entfernt das letzte Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Extrahiert und entfernt ein zufälliges Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Entfernt das erste Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Entfernt das Element an der angegebenen Position aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Entfernt das letzte Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Entfernt ein zufälliges Element aus der Liste."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "bis von hinten"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "bis"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "bis letztes"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "nimm Teilliste ab erstes"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "nimm Teilliste ab von hinten"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "nimm Teilliste ab"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "Element"; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Erstellt eine Kopie mit dem angegebenen Abschnitt der Liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ist das letzte Element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ist das erste Element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "suche erstes Auftreten von"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "suche letztes Auftreten von"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Sucht die Position (Index) eines Elementes in der Liste. Gibt %1 zurück, falls kein Element gefunden wurde."; +Blockly.Msg["LISTS_INLIST"] = "in der Liste"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ist leer"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ist wahr, falls die Liste leer ist."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "Länge von %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Die Anzahl von Elementen in der Liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "erzeuge Liste mit %2 mal dem Element %1​"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Erzeugt eine Liste mit einer variablen Anzahl von Elementen"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "kehre %1 um"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Kehre eine Kopie einer Liste um."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ein"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "füge als"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "setze für"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Fügt das Element an den Anfang der Liste an."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Fügt das Element an der angegebenen Position in die Liste ein."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Fügt das Element ans Ende der Liste an."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Fügt das Element zufällig in die Liste ein."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Setzt das erste Element in der Liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setzt das Element an der angegebenen Position in der Liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setzt das letzte Element in die Liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setzt ein zufälliges Element in der Liste."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "aufsteigend"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "absteigend"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 sortieren"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Eine Kopie einer Liste sortieren."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetisch, Großschreibung ignorieren"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerisch"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetisch"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Liste aus Text erstellen"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "Text aus Liste erstellen"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Liste mit Texten in einen Text vereinen, getrennt durch ein Trennzeichen."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Text in eine Liste mit Texten aufteilen, unterbrochen bei jedem Trennzeichen."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "mit Trennzeichen"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsch"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ist entweder wahr oder falsch"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "wahr"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://de.wikipedia.org/wiki/Vergleich_%28Zahlen%29"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ist wahr, falls beide Werte gleich sind."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ist wahr, falls der erste Wert größer als der zweite Wert ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ist wahr, falls der erste Wert größer als oder gleich groß wie der zweite Wert ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ist wahr, falls der erste Wert kleiner als der zweite Wert ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ist wahr, falls der erste Wert kleiner als oder gleich groß wie der zweite Wert ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ist wahr, falls beide Werte unterschiedlich sind."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nicht %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ist wahr, falls der Eingabewert unwahr ist. Ist unwahr, falls der Eingabewert wahr ist."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://de.wikipedia.org/wiki/Nullwert"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Ist \"null\"."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "und"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "oder"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ist wahr, falls beide Werte wahr sind."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ist wahr, falls einer der beiden Werte wahr ist."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "prüfe"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://de.wikipedia.org/wiki/%3F:#Auswahloperator"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "falls falsch"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "falls wahr"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Überprüft eine Bedingung \"prüfe\". Falls die Bedingung wahr ist, wird der \"falls wahr\" Wert zurückgegeben, andernfalls der \"falls unwahr\" Wert"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://de.wikipedia.org/wiki/Grundrechenart"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ist die Summe zweier Zahlen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ist der Quotient zweier Zahlen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ist die Differenz zweier Zahlen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ist das Produkt zweier Zahlen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ist die erste Zahl potenziert mit der zweiten Zahl."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://de.wikipedia.org/wiki/Arctan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 von X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Gibt den Arkustangens des Punktes (X, Y) in Grad von -180 bis 180 zurück."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://de.wikipedia.org/wiki/Inkrement_und_Dekrement"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "erhöhe %1 um %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Addiert eine Zahl zu \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://de.wikipedia.org/wiki/Mathematische_Konstante"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Mathematische Konstanten wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begrenze %1 zwischen %2 und %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begrenzt eine Zahl auf den Wertebereich zwischen zwei anderen Zahlen (inklusiv)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ist teilbar durch"; +Blockly.Msg["MATH_IS_EVEN"] = "ist gerade"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ist negativ"; +Blockly.Msg["MATH_IS_ODD"] = "ist ungerade"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ist positiv"; +Blockly.Msg["MATH_IS_PRIME"] = "ist eine Primzahl"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Überprüft ob eine Zahl gerade, ungerade, eine Primzahl, ganzzahlig, positiv, negativ oder durch eine zweite Zahl teilbar ist. Gibt wahr oder falsch zurück."; +Blockly.Msg["MATH_IS_WHOLE"] = "ist eine ganze Zahl"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://de.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "Rest von %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Der Rest nach einer Division."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://de.wikipedia.org/wiki/Zahl"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Eine Zahl."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = "http://www.sysplus.ch/einstieg.php?links=menu&seite=4125&grad=Crash&prog=Excel"; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Mittelwert der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Maximalwert der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Median der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Minimalwert der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "am häufigsten in der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Zufallswert aus der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Standardabweichung der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Summe über die Liste"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ist der Durchschnittswert aller Zahlen in einer Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ist die größte Zahl in einer Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Ist der Median aller Zahlen in einer Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ist die kleinste Zahl in einer Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Findet die Werte mit dem häufigstem Vorkommen in der Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Gibt einen zufälligen Wert aus der Liste zurück."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ist die Standardabweichung aller Werte in der Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ist die Summe aller Zahlen in einer Liste."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://de.wikipedia.org/wiki/Zufallszahlen"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Zufallszahl (0.0 - 1.0)"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Erzeugt eine Zufallszahl zwischen 0.0 (inklusiv) und 1.0 (exklusiv)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://de.wikipedia.org/wiki/Zufallszahlen"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ganzzahlige Zufallszahl zwischen %1 und %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Erzeugt eine ganzzahlige Zufallszahl zwischen zwei Zahlen (inklusiv)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://de.wikipedia.org/wiki/Runden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "runde"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "runde ab"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "runde auf"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Eine Zahl auf- oder abrunden."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://de.wikipedia.org/wiki/Quadratwurzel"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "Betrag"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Quadratwurzel"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ist der Betrag einer Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ist Wert der Exponentialfunktion einer Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ist der natürliche Logarithmus einer Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ist der dekadische Logarithmus einer Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Negiert eine Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Rechnet 10 hoch eine Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ist die Quadratwurzel einer Zahl."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://de.wikipedia.org/wiki/Trigonometrie"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ist der Arkuskosinus des Eingabewertes."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ist der Arkussinus des Eingabewertes."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ist der Arkustangens des Eingabewertes."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ist der Kosinus des Winkels."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ist der Sinus des Winkels (nicht Radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ist der Tangens des Winkels (nicht Radiant)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Farbvariable erstellen …"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Zahlenvariable erstellen …"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Zeichenfolgenvariable erstellen …"; +Blockly.Msg["NEW_VARIABLE"] = "Variable erstellen …"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Name der neuen Variable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Neuer Variablentyp:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "."; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "Anweisungen erlauben"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "mit:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Unterprogramm"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Rufe einen Funktionsblock ohne Rückgabewert auf."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Unterprogramm"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Rufe einen Funktionsblock mit Rückgabewert auf."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "mit:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Erzeuge \"Aufruf %1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beschreibe diese Funktion …"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "etwas tun"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "um"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ein Funktionsblock ohne Rückgabewert."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "gib zurück"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ein Funktionsblock mit Rückgabewert."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warnung: Dieser Funktionsblock hat zwei gleich benannte Parameter."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markiere Funktionsblock"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Gibt den zweiten Wert zurück und verlässt die Funktion, falls der erste Wert wahr ist."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warnung: Dieser Block darf nur innerhalb eines Funktionsblocks genutzt werden."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Variable:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Eine Eingabe zur Funktion hinzufügen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Parameter"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Die Eingaben zu dieser Funktion hinzufügen, entfernen oder neu anordnen."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Wiederholen"; +Blockly.Msg["REMOVE_COMMENT"] = "Kommentar entfernen"; +Blockly.Msg["RENAME_VARIABLE"] = "Variable umbenennen …"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Alle \"%1\" Variablen umbenennen in:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "zu %1 Text %2 anhängen"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Text an die Variable \"%1\" anhängen."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "wandel um in kleinbuchstaben"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "wandel um in Substantive"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "wandel um in GROSSBUCHSTABEN"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Wandelt Schreibweise von Texten um, in Großbuchstaben, Kleinbuchstaben oder den ersten Buchstaben jedes Wortes groß und die anderen klein."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "nimm ersten"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "nimm von hinten"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "nimm"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "nimm letzten"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "nimm zufälligen"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "Buchstaben"; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "im Text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Extrahiert einen Buchstaben von einer bestimmten Position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "zähle %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Zähle, wie oft ein Text innerhalb eines anderen Textes vorkommt."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ein Element zum Text hinzufügen."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "verbinden"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Hinzufügen, entfernen und sortieren von Elementen."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "bis von hinten"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bis"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "bis letzter"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "im Text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "nimm Teil ab erster"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "nimm Teil ab von hinten"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "nimm Teil ab"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "Buchstabe"; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Gibt den angegebenen Textabschnitt zurück."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "suche erstes Auftreten des Begriffs"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "suche letztes Auftreten des Begriffs"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "im Text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Findet das erste / letzte Auftreten eines Suchbegriffs in einem Text. Gibt die Position des Begriffs zurück oder %1 falls der Suchbegriff nicht gefunden wurde."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ist leer"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Ist wahr, falls der Text keine Zeichen enthält."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = ""; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "erstelle Text aus"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Erstellt einen Text durch das Verbinden von mehreren Textelementen."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "Länge von %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Die Anzahl von Zeichen in einem Text (inkl. Leerzeichen)."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "gib aus %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Gibt den Text aus."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Fragt den Benutzer nach einer Zahl."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Fragt den Benutzer nach einem Text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "frage nach Zahl mit Hinweis"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "frage nach Text mit Hinweis"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "ersetze %1 durch %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ersetze alle Vorkommen eines Textes innerhalb eines anderen Textes."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "kehre %1 um"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Kehre die Reihenfolge der Zeichen im Text um."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://de.wikipedia.org/wiki/Zeichenkette"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Ein Buchstabe, Text oder Satz."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "entferne Leerzeichen vom Anfang und vom Ende (links und rechts)"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "entferne Leerzeichen vom Anfang (links)"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "entferne Leerzeichen vom Ende (rechts)"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Entfernt Leerzeichen vom Anfang und / oder Ende eines Textes."; +Blockly.Msg["TODAY"] = "Heute"; +Blockly.Msg["UNDO"] = "Rückgängig"; +Blockly.Msg["UNNAMED_KEY"] = "unbenannt"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Erzeuge \"Schreibe %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Gibt den Wert der Variable zurück."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "setze %1 auf %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Erzeuge \"Lese %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setzt den Wert einer Variable."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Eine Variable namens „%1“ ist bereits vorhanden."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Eine Variable namens „%1“ ist bereits für einen anderen Typ vorhanden: „%2“."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Arbeitsbereich"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Teile etwas mit…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/diq.js b/blockly/msg/diq.js new file mode 100644 index 00000000000..13fcc48a6a1 --- /dev/null +++ b/blockly/msg/diq.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Tefsir cı ke"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Vurniyaye '%1' nêşeno besteriyo, çıke parçeyê şınasnayışiyê fonksiyonê '%2'yo"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Erci bıvurne:"; +Blockly.Msg["CLEAN_UP"] = "Blokan pak ke"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Blokan teng ke"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bloki teng ke"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "reng 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "reng 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "nısbet"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "tewde"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://diq.wikipedia.org/wiki/Reng"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Şıma palet ra yew reng weçinê."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rengo rastameye"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tesadufi yu ren bıweçin"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "kewe"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "kıho"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "sur"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "komponentên rengan"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Şıma renganê sûr, aşıl u kohoy ra rengê do spesifik vırazê. Gani ê pêro 0 u 100 miyan de bıbê."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Çerxen ra vec"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "Gama bin da çerxeni ra dewam ke"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Öujtewada çerxeni ra bıvıci"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Diqat: No bloke şeno teyna yew çerxiyayış miyan de bıgırweyo."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "Lista %2 de her item %1 rê"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Yew lista de her item rê, varyansê '%1' itemi rê vırazê, u dıma tayê akerdışi (beyani) bıdê"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Pê amarêno %1 %2 ra %3 rê , herg gam de %4 vurnayışi"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Bloq da if'i rê yu şert dekerê de."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "eke çıniyo"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "eke nêyo"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "eke"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Eger yew vaye raşto, o taw şıma tayê akerdışi kerê."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "bıke"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 fıni tekrar ke"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Şıma tayêna reyi akerdışi kerê."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "hend tekrar ke"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Tekrar kerdış de"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Yew erc xırabo se tay beyanati bıd"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Yew erc raşto se yu beyanat bıd."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Pêro %1 bloki besteriyê?"; +Blockly.Msg["DELETE_BLOCK"] = "Bloki bestere"; +Blockly.Msg["DELETE_VARIABLE"] = "Şıma vırnaoğê '%1'i besterê"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1 ke vırnayışê '%2'i gırweneno, besteriyo?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 blokan bestere"; +Blockly.Msg["DIALOG_CANCEL"] = "Bıtexelne"; +Blockly.Msg["DIALOG_OK"] = "TEMAM"; +Blockly.Msg["DISABLE_BLOCK"] = "Çengi devre ra vec"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Zewnc"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Mışewreyo zewnc"; +Blockly.Msg["ENABLE_BLOCK"] = "Bloki feal ke"; +Blockly.Msg["EXPAND_ALL"] = "Blokan hera ke"; +Blockly.Msg["EXPAND_BLOCK"] = "Bloki hera ke"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Cıkewtışê xarıciy"; +Blockly.Msg["HELP"] = "Peşti"; +Blockly.Msg["INLINE_INPUTS"] = "Cıkerdışê xomiyani"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "lista venge vıraze"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Liste ya vıraz"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Yew işaret liste ke."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "verên"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# peyniye ra"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "bıgê"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "Bıgi u wedarne"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "peyên"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "raştameye"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "wedare"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Lista de obcey sıfteyıni tadano"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Lista de obcey peyêni tadano"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Lista de obcey raşt ameyayi tadano"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Lista de obcey sıfteyıni wedareno"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Lista de obcey peyêni wedareno"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Lista de obcey raşt ameyayi wedareno"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "Peyni # ra hetana"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "#'ya"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "Hetana pey"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "verênde lista bınêne bıgêrê"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "lista # ra lista bınêne bıgêrê"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 objeyo peyên o"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 objeyo sıfteyên o"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "vıraştışê işaretê verêni bıvêne"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "vıraştışê nuşteyê verêni bıvêne"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "lista de"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 vengo"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Eger kı lista venga se raşt keno çerğ"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dergiya %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Derganiya yu lister dano."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 dimlaşt kerê"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Yew kopyaya yew lista dimlaşt kerê."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "zey"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "De fi"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ca ke"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Lista de obcey sıfteyıni eyar keno"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Lista de obcey peyêni eyar keno"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Lista de obcey raşt ameyayi eyar keno"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "zeydıyen"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "Kemeyen"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 weçine"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Kopyay yew lista rêz kerê"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetik, nezeri mekerên"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "Amoriyal"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Alfabetik"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "metini ra lista bıkerê"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "Lista ra metin bıkerê"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "Hududoxi ya"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ğelet"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Raşt yana çep erc dano"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "raşt"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Debiyaye dı erci zey pêyêse ercê \"True\" dane."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 niyo"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "veng"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Veng çarneno ra."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "û"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ya zi"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Eger her dı cıkewtışi zi raştê, şıma ageyrê."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "eke ğeleto"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "eke raşto"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Şerta'test'i test keno. Eger ke şert raşta se erca 'raşt'i çarneno, çepo se erca 'çep' çarneno."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Arêdayışê dı amara tadê"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Letey iya dı amara tadê"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ferqê dı amara tadê"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Reyina dı amara tadê"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://diq.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2, X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%2, keno %1 vurneno"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Sabitanê wertağan ra yew açarne: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (bêpeyniye)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "Leteyêno"; +Blockly.Msg["MATH_IS_EVEN"] = "zewnco"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatifo"; +Blockly.Msg["MATH_IS_ODD"] = "kıto"; +Blockly.Msg["MATH_IS_POSITIVE"] = "pozitifo"; +Blockly.Msg["MATH_IS_PRIME"] = "bıngehên"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "tamo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 ra menden"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Mendeyan ra teqsimkerdışê dı amaran açarne."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://diq.wikipedia.org/wiki/Numre"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Yew numre."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Averacê lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Tewr gırdê lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Wertey lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Tewr qıcê lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "listey modi"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Raştamaye objeya lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Standart ferqıziya lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "koma liste"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Lista de amara tewr qıckeke tadê"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Lista ra amara werti tadê"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Lista de tewr qıckek amar tadê"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Liste ra yew elemento rastameye açarne."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Raştamaye nimande amor"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "gılor ke"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Loğê cêri ke"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Loğê cori ke"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Yu amorer loğê cêri yana cori ke"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "mutlaq"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "karekok"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ercê mutlaqê yew amarer tadê"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "E quwetê yew amar tadano."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Tebi algoritmaya yew amarer tadê"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Logaritmay 10i yew amari rê peyser tadê"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Nêrazibiyena yew amari açarne."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Quweta yew amariya 10ıne tade."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Karerêçê yew amarer tadê"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://diq.wikipedia.org/wiki/Fonksiyonê_trigonometriye"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Arkkosinusê yew amari açarne."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Arksinusê yew amari açarne."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Arktangensê yew amari açarne."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Derecey yew kosinusi tadê (radyan niyo)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Sinusi yew derece tadê (radyan niyo)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Tanjantê yew derecey tadê (radyan niyo)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Vurriyayoğê rengi vıraze..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Vurriyayoğê amari vıraze..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Vurriyayoğê rêze vıraze..."; +Blockly.Msg["NEW_VARIABLE"] = "Vuriyayeyo bıvıraz..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Tewrê vurriyayoğê neweyi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tewrê vurriyayoğê neweyi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ifade rê mısade bıde"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ebe:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ebe:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' vıraze"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Nê fonksiyoni beyan ke..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Çıyê bık"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "rê"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Yew fonksiyono çap nêdate vırazeno"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "peyser biya"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Yew fonksiyono çap daye vırazeno"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Tembe: Nê fonksiyoni de parametreyê dıleti estê."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "namey cıkewtışi:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Funksiyoni rê yew cıkewtış ilawe ke."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "cıkewtışi"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Newe ke"; +Blockly.Msg["REMOVE_COMMENT"] = "Tefsiri Wedare"; +Blockly.Msg["RENAME_VARIABLE"] = "Vuriyayey fına name ke..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Pêro vırnayışê '%1' reyna name ke:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "rê %1 Metin dek %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "Herfanê werdiyana"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Ser herf gırd"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "HERFANÊ GIRDANA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "Herfa sıfti bıgi"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "herfa # peyêne ra bıgê"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "Herfa # bıgi"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "herfa peyêne bıgê"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "Raştamaye yu herf bıgi"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "metın de %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Şınasnaye pozisyon de yu herfer çerğ keno"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 miyan de %2 bımare"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Yew işaret nuşteyi ke."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "gıre de"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "heta herfa # peyêne"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "heta herfa #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "heta herfa peyêne"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "metın de"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "rêza bınêne herfa # peyêne ra bıgê"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "rêza bınêne herfa # ra bıgê"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Tay letey metini çerğ keno"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "vıraştışê nuşteyê verêni bıvêne"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "vıraştışê nuşteyê verêni bıvêne"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "metın de %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 vengo"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ya metin vıraz"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dergiya %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 çap"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Seba yew numreya karber persiyê"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Seba tay metinan karberi persiyê"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 heruna ra zerrey %3 zerrey %2 ya bıvurne"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "karakteranê %1 weçarne"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Yu herfa, satır yana çekuya metini"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Ewro"; +Blockly.Msg["UNDO"] = "Peyser bıgê"; +Blockly.Msg["UNNAMED_KEY"] = "bêname"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "unsur"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 bınuse' vıraze"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Ercê nê vurnayoği tadano"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "%1 ra %2 rê eyar kerê"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 bıwane' vıraze"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Yew vırnayış be namey '%1' xora est."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Vurnaye be nameyê '%1' ra be babetê bini ra esto: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Caygurenayışi"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Çiyê vace..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/dty.js b/blockly/msg/dty.js new file mode 100644 index 00000000000..19aa15d36fb --- /dev/null +++ b/blockly/msg/dty.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "टिप्पणी थप्दे"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "मान बदल"; +Blockly.Msg["CLEAN_UP"] = "ब्लकनलाई हटाओ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ब्लक भत्काओ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ब्लक भत्का"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "रंग 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "रंग 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "अनुपात"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "मिश्रण गर"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "दियाका अनुपात (0.0 - 1.0) का साथ दुई रंगहरूको मिश्रण गरन्छ ।"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "पैलेट बाट एक रंग चुन ।"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "जुनसुकै रङ्ग"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "रैन्डम्ली एक रंग चयन गर ।"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "निलो"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "हरियो"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "रातो"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "यै रङ्गको"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "रातो, हरियो और नीलोको निर्दिष्ट मात्राकी साथ एक रंग बनाओ । सबै मान ० देखि १०० का बीच हुनु पडन्छ ।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "लूप बाट भाइर निकलौं"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "लूपको अर्को आईटरेशन जारी राख"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "भीत्री लूप बाट बाहिर निस्कने"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "बचेका लूपलाई छोड, और अर्को आईटरेशन जारी राख ।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "सावधान: यो ब्लक केवल लूप भित्रमात्र प्रयोग गद्द सकिन्छ ।"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 सूचीमी भयाः प्रत्येक आइटम %1 खिलाइ"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "सूचीको प्रत्येक आइटमको लागी, आइटममी चरको मान '%1' राखौं और पाछा क्यै कथन लेख ।"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "गन्ती गर %1 देखी %2 %3 %4 सम्म"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "यदि ब्लकमा एक शर्त जोडौं ।"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "एल्स"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "एल्स इफ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "इफ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "यदि एक मान सत्य छ भण्या कथनहरूको प्रथम खण्ड बणाओ । अन्यथा कथनहरूको अर्को भाग निर्मित गर ।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "डू"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 पल्ट दोसराओ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "क्यै स्टेट्मन्ट कैयों पल्ट चलाओ ।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "दोहराओ जब तलक"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "दोहराओ जब की"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "जब तक मान फॉल्स छ, तब तक क्यै स्टेट्मेंट्स चलाओ ।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "सबै %1 ब्लकनलाई हटाउन्या ?"; +Blockly.Msg["DELETE_BLOCK"] = "ब्लक हटाउन्या"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' भेरिएबल मेट:"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' भेरिएबला %1 प्रयोग मेट्ट्या?"; +Blockly.Msg["DELETE_X_BLOCKS"] = " %1 ब्लकहरू हटाउन्या"; +Blockly.Msg["DIALOG_CANCEL"] = "खारेजी"; +Blockly.Msg["DIALOG_OK"] = "हुन्छ"; +Blockly.Msg["DISABLE_BLOCK"] = "ब्लकलाई निश्क्रिय पाड्डे"; +Blockly.Msg["DUPLICATE_BLOCK"] = "कपी गर"; +Blockly.Msg["DUPLICATE_COMMENT"] = "हूबहू टिप्पणी"; +Blockly.Msg["ENABLE_BLOCK"] = "ब्लकलाई सक्रिय पाड्डे"; +Blockly.Msg["EXPAND_ALL"] = "ब्लकनलाई फैलाओ"; +Blockly.Msg["EXPAND_BLOCK"] = "ब्लकनलाई फैलाओ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "भाइरका इन्पुटहरू"; +Blockly.Msg["HELP"] = "सहायता"; +Blockly.Msg["INLINE_INPUTS"] = "इनलाइन इन्पुटहरू"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "असत्य"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "सत्य या असत्य फिर्ता अरन्छ।"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "सत्य"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "यदी दुवै इनपुट एक अर्काका बराबर छन् भण्या टु रिटर्न गर ।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "पैल्लो इनपुट दोसरा इनपुट है ठुलो भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "पैल्लो इनपुट दोसरा इनपुट है ठुलो या उइ सित बराबर भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "पैल्लो इनपुट दोसरा इनपुट है नानो भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "पैल्लो इनपुट दोसरा इनपुट है नानो या उइ सित बराबर भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "यदी दुवै इनपुट एक अर्काको बराबर नाइथिन् भणया टु रिटर्न गर ।"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "इनपुट असत्य भयाले सन्य फिर्ता अरन्छ। इनपुट सत्य भयाले असत्य फिर्ता अरन्छ।"; +Blockly.Msg["LOGIC_NULL"] = "शू्य"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "शून्य फिर्ता अरन्छ।"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "रे"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "या"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "दुएइ इनपुट ट्रू भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "कम्तीमी लै १ इनपुट सत्य भयाले सत्य फिर्ता अर।"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "भेरिएवल बना:"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "नयाँ भेरिबलको नाम:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "पुन: कायम गद्दे"; +Blockly.Msg["REMOVE_COMMENT"] = "टिप्पणी हटाउन्या"; +Blockly.Msg["RENAME_VARIABLE"] = "भेरिबललाई पुनः नामांकन गर..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "सबै भेरिबलनका %1 नाम बदल्न्या:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "आज"; +Blockly.Msg["UNDO"] = "रद्द गर्न्या"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "वस्तु"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' नाउँ अरियाऽ भेरिएबल पैली बठेइ छ।"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "केयि भँण..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ee.js b/blockly/msg/ee.js new file mode 100644 index 00000000000..2711e52eb34 --- /dev/null +++ b/blockly/msg/ee.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ŋlɔ Numeɖeɖe"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Mate ŋu atutu teaŋutrɔna '%1' o elabe ewɔ akpa aɖe le teaŋutrɔna '%2' me."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Trɔ nuŋlɔdzesiawo:"; +Blockly.Msg["CLEAN_UP"] = "Tutu Nuawo"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Hatsotsoawo Me Nuwo Nebu"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Hatsotso Me Nuwo Nebu"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "amedede 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "amadede 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "agbɔsɔsɔ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "tsaka"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Tsaka amadede eve kple agbɔsɔsɔ si nye (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ee.wikipedia.org/wiki/Amadede"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Tia amadede ɖeka le amadedetiaƒea."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "amadede aɖe ko"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tia amadede aɖe ko."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blɔ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "gbemumu"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "dzĩ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "de amae kple"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "tsaka"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Nedo le wɔtiaɖenua me"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "neyi edzi kple wɔtiaɖenua si kplɔe ɖo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Nedo le wɔtiaɖenua si me wòlea me."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Neto wɔtiaɖenu sia susɔea ta wòayi bubu dzi."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Nuxlɔ̃ame: Wɔtiaɖenu me ko woate ŋu azã ƒuƒoƒo sia le."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "nu sia nu natso %2 me ayi %1 me"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Tia teaŋutrɔna '%1' na nuawo dometɔ ɖe sia ɖe si li, eye nàŋlɔ gbedeasi aɖe."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Xlẽ %1 tso %2 yi %3 to %4 dzi"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Xexlẽdzesi tɔtrɔ '%1' nenye xexlẽdzesi si dze egɔme kple esiwo kplɔe ɖo va se ɖe mamlɛtɔ dzi, nebu dometsotso si wofia kple nyatakaka suetɔ siwo wofia asii."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tsɔ biabia aɖe kpe ne ƒuƒoƒo la."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tsɔ lé wo katã ƒe ne ƒe ƒuƒoƒo kpe biabia mamlɛa."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tsɔ kpee, ɖee le eme alo gbugbɔ akpawo ɖo nàtsɔ asi le ne ƒe ƒuƒoƒoa ŋu."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ke boŋ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "Ke boŋ ne"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "Ne"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ne asime aɖe le eme la, ke taɖodzinya aɖewo neva eme."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ne asime aɖe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ne menye nenem o la, ke taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ne asime gbãtɔe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Gake ne asime eveliae le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia boŋ neva eme."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ne asime gbãtɔ le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ke ne taɖodzinyawo ƒe ƒuƒoƒo evelia boŋue le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme. Ne taɖodzinya aɖeke mele eme o la,taɖodzinyawo ƒe ƒuƒoƒo mamlɛtɔ neva eme."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ee.wikipedia.org/wiki/Na_nogo"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "wɔ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Wɔe zi %1"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Gbugbɔ biabia aɖewo zi geɖe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "gbugbɔ wɔe va se ɖe"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "gbugbɔ wɔe ne"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Ne nyatakaka dea, ke wɔ biabia aɖewo."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Ne nyatakaka dea, ke wɔ biabia aɖewo."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Èdi be netutu nu %1 katã?"; +Blockly.Msg["DELETE_BLOCK"] = "Tutu Hatsotsoa"; +Blockly.Msg["DELETE_VARIABLE"] = "Tutu teaŋutrɔna '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Netutu %1 ŋkɔ si nètsɔ na teaŋutrɔna '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Tutu Hatsotso %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Natasii"; +Blockly.Msg["DIALOG_OK"] = "Yoo"; +Blockly.Msg["DISABLE_BLOCK"] = "Tsi Hatsotsoa"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Gbugbɔe Wɔ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kɔpi Numeɖeɖea"; +Blockly.Msg["ENABLE_BLOCK"] = "Si Hatsotsoa"; +Blockly.Msg["EXPAND_ALL"] = "Hatsotsoawo Me Nuwo Nedze"; +Blockly.Msg["EXPAND_BLOCK"] = "Hatsotsoa Me Nuwo Nedze"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Gotakpeɖeŋunuwo"; +Blockly.Msg["HELP"] = "Kpekpeɖeŋu"; +Blockly.Msg["INLINE_INPUTS"] = "Interdzikpeɖeŋuwo"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "gbãtɔ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# tso nuwuwu"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "mamlɛtɔ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ɖe sia ɖe ko"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ɖee ɖa"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Aʋu nu gbãtɔ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Aʋu nua le afi si wòle le nuwo dome."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Aʋu nu mamlɛtɔ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Aʋu nu ɖe sia ɖe aɖe ko."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Eɖea nu gbãtɔ ɖa eye eya kee gaʋua nu gbãtɔ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Aɖe nua ɖa eye wòaʋu nua le afi si wòle le nuawo dome."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Eɖea nu mamlɛtɔ ɖa eye eya kee gaʋua nu mamlɛtɔ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "yi # tso nuwuwu"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "yi #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "yi mamlɛtɔ"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 nye nu mamlɛtɔ."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 nye nu gbãtɔ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 le ƒuƒlu"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "dzi yim"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ɖiɖim"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "mademadea"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Nefia dedia alo mademadea."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "dedia"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Masɔmasɔ_(akɔntabubu)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo sɔ kple wo nɔewo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia alo sɔ kplii."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o alo sɔ kplii."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo mesɔ kple wo nɔewo o."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "menye %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ŋuɖoɖoa nenye nyateƒe ne nudemea menye nyateƒe o. Ŋuɖoɖoa nenye aʋatso ne nudemea nye nyateƒe."; +Blockly.Msg["LOGIC_NULL"] = "ɖeke o"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Mekpɔ ɖeke o."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "eye"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "alo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo nye nyateƒe."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme ɖeka teti nye nyateƒe."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "dodokpɔ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "nenye dedietɔ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "nenye nyuitɔ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kpɔ nu si dze le \"dodokpɔ\" me. Ne dediae dze la, tia \"ne dedia\"; ke ne manyomanyotɔe la, tia \"ne mademadea.\""; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ee.wikipedia.org/wiki/Xexlẽdzesibubu"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Bu xexlẽdzesi evea ƒoƒo ƒu ƒe akɔnta."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Bu xexlẽdzesi ɖeka mama ɖe xexlẽdzesi evelia me ƒe akɔnta."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Bu xexlẽdzesi ɖeka ɖeɖe le evelia me ƒe akɔnta."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Bu xexlẽdzesi gbãtɔ teƒe evelia ƒe akɔnta."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Na be xexlẽdzesi gbãtɔ nadzi eɖokui ɖe edzi zigbɔzi xexlẽdzesi evelia."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "woate ŋu amae ɖe"; +Blockly.Msg["MATH_IS_EVEN"] = "enye eve ƒomevi"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "enye xexlẽme megbeyitɔ"; +Blockly.Msg["MATH_IS_ODD"] = "enye etɔ̃ ƒomevi"; +Blockly.Msg["MATH_IS_POSITIVE"] = "enye xexlẽme ŋgɔgbeyitɔ"; +Blockly.Msg["MATH_IS_PRIME"] = " enye xexlẽme blibo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "enye blibo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ee.wikipedia.org/wiki/Xexlẽdzesi"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Xexlẽdzesi aɖe"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "gãtɔ le nuwo dome"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "suetɔ le wo dome"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Neʋu xexlẽdzesi gãtɔ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Neʋu suetɔ le nuwo dome."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/dzidziɖedzi_eɖokui zigbɔzi eve"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "xexlẽ blibo"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "eƒe teƒe eve"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Nena xexlẽdzesi aɖe nanye xexlẽ blibo."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Nebu e-teƒe-e zigbɔzi xexlẽdzesia."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Xexlẽdzesia nedzi ɖe edzi eɖokui zigbzi e."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Nebu zigbɔzi neni 10-teƒe-10 awɔ xexlẽdzesia."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Nena xexlẽdzesi aɖe nanye xexlẽdzesi madenanekeo."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = " Nebu ewo-teƒe-ewo zigbɔzi xexlẽdzesia."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Xexlẽdzesia nedzi ɖe edzi teƒe eɖokui"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Nebu dzogɔe le digri me (menye radiã o)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Wɔ amadede teaŋutrɔna..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Wɔ xexlẽdzesi teaŋutrɔna..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Wɔ nya teaŋutrɔna..."; +Blockly.Msg["NEW_VARIABLE"] = "Wɔ teaŋutrɔna..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nuŋlɔdzesi tɔtrɔa yeye ƒe ŋkɔ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Teaŋutrɔna ƒomevi yeye:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "kple:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "kple:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Trɔ Wɔe"; +Blockly.Msg["REMOVE_COMMENT"] = "Ɖe Numeɖeɖea Ɖa"; +Blockly.Msg["RENAME_VARIABLE"] = "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa '%1' yi:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Egbe"; +Blockly.Msg["UNDO"] = "Gbugbɔe"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "nu"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Teaŋutrɔna si ŋkɔe nye '%1' li xoxo."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Teaŋutrɔna '%1' li xoxo eye wotsɔ ŋkɔ sia xoxo na bubu si nye: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/el.js b/blockly/msg/el.js new file mode 100644 index 00000000000..01cb9441ee9 --- /dev/null +++ b/blockly/msg/el.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Προσθήκη σχολίου"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Δεν μπορώ να διαγράψω την μεταβλητή '%1' διότι είναι μέρος του ορισμού της λειτουργίας '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Άλλαξε την τιμή:"; +Blockly.Msg["CLEAN_UP"] = "Ταξινομείστε τα Μπλοκ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Υπάρχουν προειδοποιήσεις για συμπτυγμένα μπλοκ."; +Blockly.Msg["COLLAPSE_ALL"] = "Σύμπτυξε Όλα Τα Μπλοκ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Σύμπτυξε Το Μπλοκ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "χρώμα 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "χρώμα 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "αναλογία"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "μείγμα"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Συνδυάζει δύο χρώματα μαζί με μια δεδομένη αναλογία (0.0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Επιτρέπει επιλογή χρώματος από την παλέτα."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "τυχαίο χρώμα"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Επιλέγει χρώμα τυχαία."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "μπλε"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "πράσινο"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "κόκκινο"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "χρώμα με"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Δημιουργήστε ένα χρώμα με την καθορισμένη ποσότητα κόκκινου, πράσινου και μπλε. Όλες οι τιμές πρέπει να είναι μεταξύ 0 και 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "φεύγει από το μπλοκ επαναλήψεως"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "συνέχισε με την επόμενη επανάληψη του μπλοκ επαναλήψεως"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ξεφεύγει (βγαίνει έξω) από την επανάληψη."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Παραλείπει το υπόλοιπο τμήμα αυτού του μπλοκ επαναλήψεως, και συνεχίζει με την επόμενη επανάληψη."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο μέσα σε μια επανάληψη."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "για κάθε στοιχείο %1 στη λίστα %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Για κάθε στοιχείο σε μια λίστα, ορίζει τη μεταβλητή «%1» στο στοιχείο και, στη συνέχεια, εκτελεί κάποιες εντολές."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "μέτρησε με %1 από το %2 έως το %3 ανά %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Η μεταβλητή «%1» παίρνει τιμές ξεκινώντας από τον αριθμό έναρξης μέχρι τον αριθμό τέλους αυξάνοντας κάθε φορά με το καθορισμένο βήμα και εκτελώντας το καθορισμένο μπλοκ."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Πρόσθετει μια κατάσταση/συνθήκη στο μπλοκ «εάν»."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Προσθέτει μια τελική κατάσταση/συνθήκη, που πιάνει όλες τις άλλες περιπτώσεις, στο μπλοκ «εάν»."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ «εάν»."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "αλλιώς"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "εναλλακτικά εάν"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "εάν"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Αν μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Αν μια τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, εκτελεί το δεύτερο τμήμα εντολών."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο μπλοκ εντολών."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο τμήμα εντολών. Αν καμία από τις τιμές δεν είναι αληθής, εκτελεί το τελευταίο τμήμα εντολών."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "κάνε"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "επανάλαβε %1 φορές"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Εκτελεί κάποιες εντολές αρκετές φορές."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "επανάλαβε μέχρι"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "επανάλαβε ενώ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Εφόσον μια τιμή είναι ψευδής, τότε εκτελεί κάποιες εντολές."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Εφόσον μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Να διαγραφούν όλα τα %1 μπλοκ;"; +Blockly.Msg["DELETE_BLOCK"] = "Διαγραφή μπλοκ"; +Blockly.Msg["DELETE_VARIABLE"] = "Διαγράψτε την μεταβλητή '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Θέλετε να διαγράψετε το %1 που χρησιμοποιείτε από την μεταβλητή '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Διαγραφή %1 μπλοκ"; +Blockly.Msg["DIALOG_CANCEL"] = "Ακύρωση"; +Blockly.Msg["DIALOG_OK"] = "Εντάξει"; +Blockly.Msg["DISABLE_BLOCK"] = "Απενεργοποίησε Το Μπλοκ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Διπλότυπο"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Αντιγραφή σχόλιου"; +Blockly.Msg["ENABLE_BLOCK"] = "Ενεργοποίησε Το Μπλοκ"; +Blockly.Msg["EXPAND_ALL"] = "Επέκτεινε Όλα Τα Μπλοκ"; +Blockly.Msg["EXPAND_BLOCK"] = "Επέκτεινε Το Μπλοκ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Εξωτερικές προσθήκες"; +Blockly.Msg["HELP"] = "Βοήθεια"; +Blockly.Msg["INLINE_INPUTS"] = "Εσωτερικές προσθήκες"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "δημιούργησε κενή λίστα"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Επιστρέφει μια λίστα, με μήκος 0, η οποία δεν περιέχει εγγραφές δεδομένων"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "λίστα"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ λίστας."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "δημιούργησε λίστα με"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Προσθέτει αντικείμενο στη λίστα."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Δημιουργεί λίστα με οποιονδήποτε αριθμό αντικειμένων."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "πρώτο"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# από το τέλος"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "πάρε"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "πάρε και αφαίρεσε"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "τελευταίο"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "τυχαίο"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "αφαίρεσε"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Επιστρέφει το πρώτο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Επιστρέφει το τελευταίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Καταργεί και επιστρέφει το πρώτο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Καταργεί και επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Καταργεί και επιστρέφει το τελευταίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Καταργεί και επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Καταργεί το πρώτο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Καταργεί το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Καταργεί το τελευταίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Καταργεί ένα τυχαίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "έως # από το τέλος"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "έως #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "έως το τελευταίο"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "Blockly"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "πάρε υπολίστα από την αρχή"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "πάρε υπολίστα από # από το τέλος"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "πάρε υπολίστα από #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Δημιουργεί ένα αντίγραφο του καθορισμένου τμήματος μιας λίστας."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Το %1 είναι το τελευταίο στοιχείο."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Το %1 είναι το πρώτο στοιχείο."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "βρες την πρώτη εμφάνιση του στοιχείου"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "Blockly"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "βρες την τελευταία εμφάνιση του στοιχείου"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του στοιχείου στη λίστα. Επιστρέφει τιμή %1, αν το στοιχείο δεν βρεθεί."; +Blockly.Msg["LISTS_INLIST"] = "στη λίστα"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "το %1 είναι κενό"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Επιστρέφει αληθής αν η λίστα είναι κενή."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "Blockly"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "το μήκος του %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Επιστρέφει το μήκος μιας λίστας."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "Blockly"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "δημιούργησε λίστα με το στοιχείο %1 να επαναλαμβάνεται %2 φορές"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Δημιουργεί μια λίστα που αποτελείται από την δεδομένη τιμή που επαναλαμβάνεται για συγκεκριμένο αριθμό επαναλήψεων."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "ανάκληση %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Α"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "σε"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "είσαγε στο"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "όρισε"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Εισάγει το στοιχείο στην αρχή μιας λίστας."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Εισάγει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Αναθέτει το στοιχείο στο τέλος μιας λίστας."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Εισάγει το στοιχείο τυχαία σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ορίζει το πρώτο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ορίζει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ορίζει το τελευταίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ορίζει ένα τυχαίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "Αύξουσα"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "Φθίνουσα"; +Blockly.Msg["LISTS_SORT_TITLE"] = "επιλογή %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Επιλέξετε ένα αντίγραφο της λίστας."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "αλφαβητικά, αγνοήστε το στοιχείο"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "αριθμητικό"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Αλφαβητικά"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "κάνετε λίστα από το κείμενο"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "κάνετε κείμενο από τη λίστα"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ενώστε μια λίστα κειμένων σε ένα κείμενο, που χωρίζονται από ένα διαχωριστικό."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Διαίρεση του κειμένου σε μια λίστα κειμένων, με σπάσιμο σε κάθε διαχωριστικό."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "με διαχωριστικό"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ψευδής"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Επιστρέφει είτε αληθής είτε ψευδής."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "αληθής"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι ίσες μεταξύ τους."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μεγαλύτερη από τη δεύτερη είσοδο."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη ή ίση με τη δεύτερη είσοδο."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από τη δεύτερη είσοδο."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από ή ίση με τη δεύτερη είσοδο."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Επιστρέφει αληθής αν και οι δύο είσοδοι δεν είναι ίσες μεταξύ τους."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "όχι %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Επιστρέφει αληθής αν η είσοδος είναι ψευδής. Επιστρέφει ψευδής αν η είσοδος είναι αληθής."; +Blockly.Msg["LOGIC_NULL"] = "κενό"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Επιστρέφει κενό."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "και"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "ή"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι αληθής."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Επιστρέφει αληθής αν τουλάχιστον μια από τις εισόδους είναι αληθής."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "έλεγχος"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "εάν είναι ψευδής"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "εάν είναι αληθής"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Ελέγχει την κατάσταση/συνθήκη στον «έλεγχο». Αν η κατάσταση/συνθήκη είναι αληθής, επιστρέφει την τιμή «εάν αληθής», διαφορετικά επιστρέφει την τιμή «εάν ψευδής»."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CE%B7%CF%84%CE%B9%CE%BA%CE%AE"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Επιστρέφει το άθροισμα των δύο αριθμών."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Επιστρέφει το πηλίκο των δύο αριθμών."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Επιστρέφει τη διαφορά των δύο αριθμών."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Επιστρέφει το γινόμενο των δύο αριθμών."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Επιστρέφει τον πρώτο αριθμό υψωμένο στη δύναμη του δεύτερου αριθμού."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 από X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Επιστρέφει την διαφορά τόξου των σημείων (X, Y) σε μοίρες από -180 σε 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A0%CF%81%CF%8C%CF%83%CE%B8%CE%B5%CF%83%CE%B7"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "άλλαξε %1 αυξάνοντας κατά %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Προσθέτει έναν αριθμό στη μεταβλητή «%1»."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Επιστρέφει μία από τις κοινές σταθερές: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...), ή ∞ (άπειρο)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "περιόρισε %1 χαμηλή %2 υψηλή %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Περιορίζει έναν αριθμό μεταξύ των προβλεπόμενων ορίων (χωρίς αποκλεισμούς)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "είναι διαιρετός από το"; +Blockly.Msg["MATH_IS_EVEN"] = "είναι άρτιος"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "είναι αρνητικός"; +Blockly.Msg["MATH_IS_ODD"] = "είναι περιττός"; +Blockly.Msg["MATH_IS_POSITIVE"] = "είναι θετικός"; +Blockly.Msg["MATH_IS_PRIME"] = "είναι πρώτος"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Ελέγχει αν ένας αριθμός είναι άρτιος, περιττός, πρώτος, ακέραιος, θετικός, αρνητικός, ή αν είναι διαιρετός από έναν ορισμένο αριθμό. Επιστρέφει αληθής ή ψευδής."; +Blockly.Msg["MATH_IS_WHOLE"] = "είναι ακέραιος"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "υπόλοιπο της %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Επιστρέφει το υπόλοιπο της διαίρεσης των δύο αριθμών."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ένας αριθμός."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "μέσος όρος λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "μεγαλύτερος λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "διάμεσος λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "μικρότερος λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "μορφές λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "τυχαίο στοιχείο λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "τυπική απόκλιση λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "άθροισμα λίστας"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Επιστρέφει τον αριθμητικό μέσο όρο από τις αριθμητικές τιμές στη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Επιστρέφει τον μεγαλύτερο αριθμό στη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Επιστρέφει τον διάμεσο της λίστας."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Επιστρέφει τον μικρότερο αριθμό στη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Επιστρέφει μια λίστα με τα πιο κοινά στοιχεία στη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Επιστρέφει ένα τυχαίο στοιχείο από τη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Επιστρέφει την τυπική απόκλιση της λίστας."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Επιστρέφει το άθροισμα όλων των αριθμών στη λίστα."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^ ύψωση σε δύναμη"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%93%CE%B5%CE%BD%CE%BD%CE%AE%CF%84%CF%81%CE%B9%CE%B1_%CE%A4%CF%85%CF%87%CE%B1%CE%AF%CF%89%CE%BD_%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8E%CE%BD"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "τυχαίο κλάσμα"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Επιστρέψει ένα τυχαία κλάσμα μεταξύ 0,0 (κλειστό) και 1,0 (ανοικτό)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "τυχαίος ακέραιος από το %1 έως το %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Επιστρέφει έναν τυχαίο ακέραιο αριθμό μεταξύ δύο συγκεκριμένων ορίων (εντός - συμπεριλαμβανομένων και των ακραίων τιμών)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "στρογγυλοποίησε"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "στρογγυλοποίησε προς τα κάτω"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "στρογγυλοποίησε προς τα πάνω"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Στρογγυλοποιεί έναν αριθμό προς τα πάνω ή προς τα κάτω."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A4%CE%B5%CF%84%CF%81%CE%B1%CE%B3%CF%89%CE%BD%CE%B9%CE%BA%CE%AE_%CF%81%CE%AF%CE%B6%CE%B1"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "απόλυτη"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "τετραγωνική ρίζα"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Επιστρέφει την απόλυτη τιμή ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Επιστρέφει το e υψωμένο στη δύναμη ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Επιστρέφει τον νεπέρειο λογάριθμο ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Επιστρέφει τον λογάριθμο με βάση το 10 ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Επιστρέφει την αρνητική ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Επιστρέφει το 10 υψωμένο στη δύναμη ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Επιστρέφει την τετραγωνική ρίζα ενός αριθμού."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "συν"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A4%CF%81%CE%B9%CE%B3%CF%89%CE%BD%CE%BF%CE%BC%CE%B5%CF%84%CF%81%CE%B9%CE%BA%CE%AE_%CF%83%CF%85%CE%BD%CE%AC%CF%81%CF%84%CE%B7%CF%83%CE%B7"; +Blockly.Msg["MATH_TRIG_SIN"] = "ημ"; +Blockly.Msg["MATH_TRIG_TAN"] = "εφ"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Επιστρέφει το τόξο συνημίτονου ενός αριθμού."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Επιστρέφει το τόξο ημίτονου ενός αριθμού."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Επιστρέφει το τόξο εφαπτομένης ενός αριθμού."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Επιστρέφει το συνημίτονο ενός βαθμού (όχι ακτινίου)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Επιστρέφει το ημίτονο ενός βαθμού (όχι ακτινίου)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Επιστρέφει την εφαπτομένη ενός βαθμού (όχι ακτινίου)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Δημιουργία μεταβλητής χρώματος..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Δημιουργία μεταβλητής αριθμού..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Δημιουργία μεταβλητή συμβολοσειράς..."; +Blockly.Msg["NEW_VARIABLE"] = "Δημιουργήστε μεταβλητή..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Νέο όνομα μεταβλητής:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Νέος τύπος μεταβλητής:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "να επιτρέπονται οι δηλώσεις"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "με:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1»."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1» και χρησιμοποίησε την έξοδό της."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "με:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Δημιούργησε «%1»"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Περιγράψετε αυτήν την ιδιότητα.."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "κάνε κάτι"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "στο"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Δημιουργεί μια συνάρτηση χωρίς έξοδο."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "επέστρεψε"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Δημιουργεί μια συνάρτηση με μια έξοδο."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Προειδοποίηση: Αυτή η συνάρτηση έχει διπλότυπες παραμέτρους."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Επισημάνετε τον ορισμό συνάρτησης"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Αν μια τιμή είναι αληθής, τότε επιστρέφει τη δεύτερη τιμή."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο στον ορισμό μιας συνάρτησης."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "όνομα εισόδου:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Πρόσθεσε μια είσοδος στη συνάρτηση"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "είσοδοι"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει εισόδους σε αυτήν τη λειτουργία"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Ακύρωση αναίρεσης"; +Blockly.Msg["REMOVE_COMMENT"] = "Αφαίρεση σχολίου"; +Blockly.Msg["RENAME_VARIABLE"] = "Μετονόμασε τη μεταβλητή..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Μετονόμασε όλες τις μεταβλητές «%1» σε:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "έως %1 ανάθεσε κείμενο %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Αναθέτει κείμενο στη μεταβλητή «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "σε πεζά"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "σε Λέξεις Με Πρώτα Κεφαλαία"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "σε ΚΕΦΑΛΑΙΑ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Επιστρέφει ένα αντίγραφο του κειμένου σε διαφορετική μορφή γραμμάτων."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "πάρε το πρώτο γράμμα"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "πάρε το γράμμα # από το τέλος"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "πάρε το γράμμα #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "πάρε το τελευταίο γράμμα"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "πάρε τυχαίο γράμμα"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "στο κείμενο %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Επιστρέφει το γράμμα στην καθορισμένη θέση."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "αριθμός %1 σε %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Μετρά πόσες φορές κάποιο κείμενο εμφανίζεται μέσα σε ένα άλλο κείμενο."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Προσθέτει ένα στοιχείο στο κείμενο."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ένωσε"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει τους τομείς για να αναδιαμορφώσει αυτό το μπλοκ κειμένου."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "μέχρι το # γράμμα από το τέλος"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "μέχρι το # γράμμα"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "μέχρι το τελευταίο γράμμα"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "στο κείμενο"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "πάρε τη δευτερεύουσα συμβολοσειρά από το πρώτο γράμμα"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα από το τέλος"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Επιστρέφει ένα συγκεκριμένο τμήμα του κειμένου."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "βρες την πρώτη εμφάνιση του κειμένου"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "βρες την τελευταία εμφάνιση του κειμένου"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "στο κείμενο %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του πρώτου κειμένου στο δεύτερο κείμενο. Επιστρέφει τιμή %1, αν δε βρει το κείμενο."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "το %1 είναι κενό"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Επιστρέφει αληθής αν το παρεχόμενο κείμενο είναι κενό."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "δημιούργησε κείμενο με"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Δημιουργεί ένα κομμάτι κειμένου ενώνοντας έναν απεριόριστο αριθμό αντικειμένων."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "το μήκος του %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Επιστρέφει το πλήθος των γραμμάτων (συμπεριλαμβανομένων και των κενών διαστημάτων) στο παρεχόμενο κείμενο."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "εκτύπωσε %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Εκτυπώνει το καθορισμένο κείμενο, αριθμό ή άλλη τιμή."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Δημιουργεί προτροπή για τον χρήστη για να δώσει ένα αριθμό."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Δημιουργεί προτροπή για το χρήστη για να δώσει κάποιο κείμενο."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "πρότρεψε με μήνυμα για να δοθεί αριθμός"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "πρότρεψε με μήνυμα για να δοθεί κείμενο"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "αντικαταστήσετε το %1 με %2 σε %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Αντικαταστήστε όλα τα ήδη υπάρχοντα στοιχεία μέρους του κειμένου με κάποιο άλλο κείμενο"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "ανάκληση %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Αναγραμματισμός των χαρακτήρων του κειμένου"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A3%CF%85%CE%BC%CE%B2%CE%BF%CE%BB%CE%BF%CF%83%CE%B5%CE%B9%CF%81%CE%AC"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Ένα γράμμα, μια λέξη ή μια γραμμή κειμένου."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "περίκοψε τα κενά και από τις δυο πλευρές του"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "περίκοψε τα κενά από την αριστερή πλευρά του"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "περίκοψε τα κενά από την δεξιά πλευρά του"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Επιστρέφει ένα αντίγραφο του κειμένου με αφαιρεμένα τα κενά από το ένα ή και τα δύο άκρα."; +Blockly.Msg["TODAY"] = "Σήμερα"; +Blockly.Msg["UNDO"] = "Αναίρεση"; +Blockly.Msg["UNNAMED_KEY"] = "χωρίς όνομα"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "αντικείμενο"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Δημιούργησε «όρισε %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Επιστρέφει την τιμή αυτής της μεταβλητής."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "ανάθεσε στην %1 το %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Δημιούργησε «πάρε %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ορίζει αυτή τη μεταβλητή να είναι ίση με την είσοδο."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Η μεταβλητή με το όνομα '%1' υπάρχει ήδη."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Μια μεταβλητή με όνομα '%1' υπάρχει πάντα για έναν άλλο τύπο: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Χώρος εργασίας Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Πείτε κάτι..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/en-gb.js b/blockly/msg/en-gb.js new file mode 100644 index 00000000000..90d678a83e4 --- /dev/null +++ b/blockly/msg/en-gb.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Colour"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; +Blockly.Msg["HELP"] = "Help"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; +Blockly.Msg["MATH_IS_EVEN"] = "is even"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; +Blockly.Msg["TODAY"] = "Today"; +Blockly.Msg["UNDO"] = "Undo"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/en.js b/blockly/msg/en.js new file mode 100644 index 00000000000..cca77423383 --- /dev/null +++ b/blockly/msg/en.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; +Blockly.Msg["CALL_TEXT"] = "call"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "red"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; +Blockly.Msg["HELP"] = "Help"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; +Blockly.Msg["LISTS_INLIST"] = "in list"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; +Blockly.Msg["MATH_IS_EVEN"] = "is even"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; +Blockly.Msg["REDO"] = "Redo"; +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; +Blockly.Msg["RETURN_TEXT"] = "return"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; +Blockly.Msg["TODAY"] = "Today"; +Blockly.Msg["UNDO"] = "Undo"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/eo.js b/blockly/msg/eo.js new file mode 100644 index 00000000000..6d262461be3 --- /dev/null +++ b/blockly/msg/eo.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Aldoni komenton"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne povas forigi la variablon '%1' ĉar ĝi estas parto de la difino de la funkcio '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ŝangi valoron:"; +Blockly.Msg["CLEAN_UP"] = "Purigi blokojn"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Falditaj blokoj enhavas avertojn."; +Blockly.Msg["COLLAPSE_ALL"] = "Faldi blokojn"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Faldi blokon"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "koloro 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "koloro 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporcio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "miksi"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Kunmiksas du kolorojn laŭ specifita proporcio (0,0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://eo.wikipedia.org/wiki/Koloro"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Elekti koloron el la paletro."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "hazarda koloro"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Elekti hazardan koloron."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blua"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verda"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruĝa"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "kolorigi per"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kreas koloron kun specifita kvanto de ruĝo, verdo, kaj bluo. Ĉiuj valoroj devas esti inter 0 kaj 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "eliri el la ciklo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "daŭrigi je la venonta ripeto de la ciklo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Eliri el la enhava ciklo."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Pretersalti la ceteron de tiu ĉi ciklo kaj daŭrigi je la venonta ripeto."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Averto: tiu ĉi bloko uzeblas nur ene de ciklo."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "por ĉiu elemento %1 en la listo %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pri ĉiu elemento en listo, difinas la variablon '%1' al la elemento, kaj faras kelkajn ordonojn."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "kalkuli kun variablo %1 ekde %2 ĝis %3 per diferenco %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Varias la variablon '%1', ekde la komenca nombro ĝis la fina nombro, laŭ la specifita diferenco; dume rulas la specifitajn blokojn."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Aldoni kondiĉon al la bloko 'se'"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Aldoni 'aliokaze' kondiĉon al la 'se' bloko."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Aldoni, forigi aŭ reorganizi partojn por reagordi la 'se'-blokon."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "alie"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "alie se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Plenumi ordonojn se la valoro estas vero."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Plenumi la unuan blokon de ordonoj se la valoro estas vero, se ne, la duan."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj. Se neniu el la du valoroj estas vero, do faras la lastan blokon de ordonoj."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://eo.wikipedia.org/wiki/Iteracio"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fari"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ripeti %1 fojojn"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Plenumas kelkajn ordonojn plurfoje."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ripeti ĝis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ripeti dum"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Plenumi ordonojn dum valoro egalas malvero."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Plenumi ordonojn dum la valoro egalas veron."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ĉu forigi ĉiujn %1 blokojn?"; +Blockly.Msg["DELETE_BLOCK"] = "Forigi blokon"; +Blockly.Msg["DELETE_VARIABLE"] = "Forigi la variablon '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ĉu forigi %1 uzojn de la variablo '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Forigi %1 blokojn"; +Blockly.Msg["DIALOG_CANCEL"] = "Nuligi"; +Blockly.Msg["DIALOG_OK"] = "Bone"; +Blockly.Msg["DISABLE_BLOCK"] = "Malŝalti blokon"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duobligi"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duobligi Komenton"; +Blockly.Msg["ENABLE_BLOCK"] = "Ŝalti blokon"; +Blockly.Msg["EXPAND_ALL"] = "Malfaldi blokojn"; +Blockly.Msg["EXPAND_BLOCK"] = "Malfaldi blokon"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Eksteraj eniroj"; +Blockly.Msg["HELP"] = "Helpo"; +Blockly.Msg["INLINE_INPUTS"] = "Entekstaj eniroj"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "krei malplenan liston"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Liveri liston, de longo 0, sen datenaj rikordoj"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listo"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Aldoni, forigi aŭ ordigi partojn por reagordi la listan blokon."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "krei liston kun"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Aldoni elementon al la listo."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Krei liston kun ajna nombro de elementoj."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "unuan"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "#el la fino"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "akiri"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "akiri kaj forigi"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "lastan"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "hazardan"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "forigi"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "La unua elemento en la listo esto liverita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Liveri la elementon ĉe la specifita pozicio en listo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Liveri la lastan elementon en la listo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Hazarda elemento en la listo estos liverita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "La unua elemento en la listo estos liverita kaj forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Liveri kaj forigi la elementon en la specifita pozicio de la listo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Forigi kaj liveri la lastan elementon en listo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Hazarda elemento en la listo estos liverita kaj forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "La unua elemento en la listo estos forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "La elemento en la specifita pozicio en la listo estos forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "La lasta elemento en la listo estos forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Hazarda elemento en la listo estos forigita."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ĝis elemento de inversa numero"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ĝis elemento de numero"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ĝis la lasta elemento"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "akiri subliston ekde la unua elemento"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "akiri subliston ekde elemento de inversa numero"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "akiri subliston ekde elemento de numero"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Kreas kopion de la specifita parto de listo."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 estas la lasta elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 estas la unua elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trovi la unuan aperon de elemento"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trovi la lastan aperon de elemento"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "La indekso de la unua/lasta apero de la elemento en la listo estos liverita. %1 estos liverita se la elemento ne estas trovita."; +Blockly.Msg["LISTS_INLIST"] = "en la listo"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 malplenas"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Liveri veron, se la listo malplenas."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longo de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Liveri la longon de listo."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "krei liston kun elemento %1 ripetita %2 fojojn"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Listo kun la specifita nombro de elementoj, kiuj havos la donitan valoron, estos kreita."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inversigi liston %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inversigi kopion de listo."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kiel"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "enmeti je"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "difini"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Antaŭaldonas la elementon ĉe la komenco de listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Enigas la elementon ĉe specifita pozicio en listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Postaldonas la elementon ĉe la fino de listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Enigas la elementon hazarde en listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Difinas la unua elementon en listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Difinas la elementon ĉe la specifita pozicio en listo"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Difinas la lastan elementon en listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Difinas hazardan elementon en listo."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "kreskante"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "malkreskante"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordigi %1 %2 liston %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordigas kopion de listo."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabete, ignorante usklon"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "nombre"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabete"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fari liston el teksto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fari tekston el listo"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Kunigas liston de tekstoj en unu tekston, kun apartigilo inter la elementoj."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Disdividas tekston en liston da tekstoj, laŭ apartigilo."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "kun apartigilo"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsa"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Liveri ĉu veron ĉu malveron."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "vera"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://eo.wikipedia.org/wiki/Neegala%C4%B5o_(pli_granda,_malpli_granda)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Liveri veron, se la du eniroj egalas."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Liveri veron, se la unua eniro estas pli granda ol la dua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vero estos liverita, se la unua eniro estas pli granda aŭ egala al la dua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Liveri veron, se la unua eniro estas pli malgranda ol la dua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vero estos liverita, se la unua eniro estas pli eta aŭ egala al la dua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Liveri veron, se la du eniroj ne egalas."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "maligi %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Liveri veron, se la eniro egalas malveron. Liveri malveron, se la eniro egalas veron."; +Blockly.Msg["LOGIC_NULL"] = "senvalora"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Liveras senvaloron."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "kaj"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "aŭ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Liveri veron, se la du eniroj egalas veron."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Liveri veron, se almenaŭ unu el la eniroj egalas veron."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "testi"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se estas malvero"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se estas vero"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontroli la kondiĉon en 'testo'. Se la kondiĉo egalas veron, liveri la valoron 'se estas vero', aliokaze liveri la valoron 'se estas malvero'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://eo.wikipedia.org/wiki/Aritmetiko"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Liveri la sumon de la du nombroj."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Liveri la kvocienton de la du nombroj."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Liveri la diferencon inter la du nombroj."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "La produto de la du numeroj estos liverita."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Livero la tian potencon de la unua nombro, kia la dua nombro estas"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://eo.wikipedia.org/wiki/Inversa_trigonometria_funkcio#Duargumenta_varianto_de_tangentarko"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Liveras la arkotangenton de punkto (X, Y) en gradoj inter -180 kaj 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://eo.wikipedia.org/wiki/Kremento"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "krementi %1 per %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Aldoni nombron al variablo '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://eo.wikipedia.org/wiki/Matematika_konstanto"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Liveras unu el la ofte uzataj konstantoj: π (3,141…), e (2,718…), φ (1,618…), √2 (1,414…), √½ (0,707…), aŭ ∞ (malfinio)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limigi %1 inter %2 kaj %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "La nombro estos limigita tiel ke ĝi egalas la limojn aŭ troviĝas inter ili."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "estas dividebla de"; +Blockly.Msg["MATH_IS_EVEN"] = "estas para"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "estas negativa"; +Blockly.Msg["MATH_IS_ODD"] = "estas nepara"; +Blockly.Msg["MATH_IS_POSITIVE"] = "estas pozitiva"; +Blockly.Msg["MATH_IS_PRIME"] = "estas primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Vero aŭ malvero estos liverita, depende de la rezulto de kontrolo, ĉu nombro estas para, nepara, pozitiva, negativa, aŭ dividebla de iu nombro."; +Blockly.Msg["MATH_IS_WHOLE"] = "estas entjero"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://eo.wikipedia.org/wiki/Resto"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Liveri la reston de la divido de la du nombroj."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://eo.wikipedia.org/wiki/Nombro"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Nombro."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "listmezumo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "listmaksimumo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediano de listo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "listminimumo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modoj de listo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "hazarda elemento el la listo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Norma devio de la listo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sumo de listo"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Liveri la aritmetikan meznombron de la nombroj en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Liveri la plej grandan nombron en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Liveras la medianan nombron en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Liveri la plej malgrandan nombron en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Liveras liston de la plej ofta(j) elemento(j) en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Liveri hazardan elementon el la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Liveri la norman devion de la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Liveri la sumon de ĉiuj nombroj en la listo."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://eo.wikipedia.org/wiki/Hazardo"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "hazarda frakcio"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Liveras hazardan frakcion inter 0,0 (inkluzive) kaj 1,0 (ekskluzive)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "hazarda entjero inter %1 kaj %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Nombro estos hazarde liverita, tiel ke ĝi egalas la limojn aŭ troviĝas inter ili."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "rondigi"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rondigi malsupren"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Rondigi supren"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rondigi nombroj, supren aŭ malsupren."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://eo.wikipedia.org/wiki/Kvadrata_radiko"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluta"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadrata radiko"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Liveri la absolutan valoron de nombro."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Liveri potencon de e."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Liveri la naturan logaritmon de nombro."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "La dekbaza logaritmo de numero estos liverita."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "La negativigo de numero estos liverita."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Liveri tian potencon de 10, kia la eniro estas."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Liveri la kvadratan radikon de nombro."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://eo.wikipedia.org/wiki/Trigonometria_funkcio"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Liveras la arkokosinuson de nombro."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "La sinusarko de nombro estos liverita."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "La targentarko de nombro estos liverita."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Liveras la kosinuson de angulo en gradoj (ne radianoj)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Liveras la sinuson de angulo en gradoj (ne radianoj)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Liveras la tangenton de angulo en gradoj (ne radianoj)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Krei koloran variablon..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Krei nombran variablon..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Krei signoĉenan variablon..."; +Blockly.Msg["NEW_VARIABLE"] = "Nova variablo..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nova nomo de variablo:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo de nova variablo:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permesi ordonojn"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "kun:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://eo.wikipedia.org/wiki/Subprogramo"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ruli la uzanto-difinitan funkcion '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://eo.wikipedia.org/wiki/Subprogramo"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ruli la uzanto-difinitan funkcion '%1' kaj uzi ĝian eliron."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "kun:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Krei '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Priskribi ĉi tiun funkcion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fari ion"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "por"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Krei funkcion sen eliro."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "liveri"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Krei funkcion kun unu eliro."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Averto: la funkcio havas du parametrojn kun la sama nomo."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Emfazi difinon de funkcio"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se valoro estas vero, do liveras duan valoron."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Averto: Ĉi tiu bloko estas uzebla nur en difino de funkcio."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nomo de enigo:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Aldoni eniron al la funkcio."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "eniroj"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Aldoni, forigi, aŭ reorganizi enirojn je ĉi tiu funkcio."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Refari"; +Blockly.Msg["REMOVE_COMMENT"] = "Forigi komenton"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomi variablon..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomi ĉiujn '%1' variablojn kiel:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "al %1 postaldoni tekston %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Postapendi iom da teksto al variablo '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "minuskligi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Nomuskligi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "MAJUSKLIGI"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Liveras kopion de la teksto je alia usklo."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "akiri unuan literon"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "akiri literon de inversa numero"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "akiri literon de numero"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "akiri lastan literon"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "akiri hazardan literon"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "en la teksto %1, %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Liveras literon ĉe specifita loko."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "kalkuli la okazojn de %1 en %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Kalkuli kiomfoje iu teksto okazas en iu alia teksto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Aldoni eron al la teksto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "kunigi"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Aldonu, forigu, aŭ reorganizu partojn por reagordi la tekstan blokon."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ĝis litero de inversa numero"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ĝis litero de numero"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ĝis lasta litero"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en la teksto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "akiri subsignoĉenon ekde la unua litero"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "akiri subsignoĉenon ekde litero de inversa numero"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "akiri subsignoĉenon ekde litero de numero"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Liveri specifitan parto de la teksto."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trovi la unuan okazon de teksto"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trovi la lastan okazon de teksto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en la teksto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Liveras indekson de la unua/lasta okazo de la unua teksto en la dua teksto. Liveras %1 se la unua teksto ne okazas en la dua teksto."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 malplenas"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Liveras veron, se la provizita teksto estas malplena."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "krei tekston kun"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Krei pecon de teksto per kunigi ajnan nombron de eroj."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longo de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Liveras la nombron de literoj (inkluzive de spacetoj) en la provizita teksto."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "presi %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Presi la specifitan tekston, nombron aŭ alian valoron."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Peti nombron al uzanto."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Peti tekston al uzanto."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "ricevi nombron per mesaĝo"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ricevi tekston per mesaĝo"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "anstataŭigi tekston %1 per %2 en %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Anstataŭigi ĉiujn okazojn de iu teksto en alia teksto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inversigi tekston %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inversigi la ordon de la skribsignoj en la teksto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://eo.wikipedia.org/wiki/Signoĉeno"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Litero, vorto, aŭ linio da teksto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "forigi spacetojn for de ambaŭ finoj de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "forigi spacetojn for de maldekstra fino de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "forigi spacetojn for de dekstra fino de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Liveras kopion de teksto, de kies fino(j) spacetoj foriĝis."; +Blockly.Msg["TODAY"] = "Hodiaŭ"; +Blockly.Msg["UNDO"] = "Malfari"; +Blockly.Msg["UNNAMED_KEY"] = "nenomita"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Krei blokon 'difini variablon %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Liveras la valoron de ĉi tiu variablo."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "difini %1 kiel %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Krei blokon 'akiri variablon %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Difinas ĉi tiun variablon kiel la eniron."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Jam ekzistas variablo kun la nomo '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Jam ekzistas variablo kun la nomo '%1' por alia tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Laborspaco de Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Diru ion…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/es.js b/blockly/msg/es.js new file mode 100644 index 00000000000..598a4fd41c2 --- /dev/null +++ b/blockly/msg/es.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Añadir comentario"; +Blockly.Msg["CALL_TEXT"] = "llamar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "No se puede eliminar la variable '%1' porque es parte de la definición de la función '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar el valor:"; +Blockly.Msg["CLEAN_UP"] = "Limpiar los bloques"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Bloques colapsados contienen advertencias."; +Blockly.Msg["COLLAPSE_ALL"] = "Contraer bloques"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Contraer bloque"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporción"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "combinar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Combina dos colores con una proporción determinada (0,0-1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://es.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Elige un color de la paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatorio"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Elige un color al azar."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rojo"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorear con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crea un color con cantidades específicas de rojo, verde y azul. Todos los valores deben encontrarse entre 0 y 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "romper el bucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar con la siguiente iteración del bucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Romper el bucle que lo contiene."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Saltar el resto de este bucle, y continuar con la siguiente iteración."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atención: este bloque puede usarse solamente dentro de un bucle."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://es.wikipedia.org/wiki/Foreach"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "para cada elemento %1 en la lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para cada elemento en una lista, establecer la variable '%1' al elemento y luego hacer algunas declaraciones."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar con %1 desde %2 hasta %3 de a %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Hacer que la variable \"%1\" tome los valores desde el número de inicio hasta el número final, contando con el intervalo especificado, y hacer los bloques especificados."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Agregar una condición a este bloque."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Agregar una condición general final a este bloque."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sino"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sino si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor es verdadero, entonces hacer algunas declaraciones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, hacer el segundo bloque de declaraciones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones. Si ninguno de los valores son verdaderos, hacer el último bloque de declaraciones."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://es.wikipedia.org/wiki/Bucle_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "hacer"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 veces"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Hacer algunas declaraciones varias veces."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir hasta"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mientras"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Mientras un valor sea falso, entonces hacer algunas declaraciones."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Mientras un valor sea verdadero, entonces hacer algunas declaraciones."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "¿Eliminar todos los %1 bloques?"; +Blockly.Msg["DELETE_BLOCK"] = "Eliminar bloque"; +Blockly.Msg["DELETE_VARIABLE"] = "Borrar la variable \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "¿Borrar %1 usos de la variable '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Eliminar %1 bloques"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; +Blockly.Msg["DIALOG_OK"] = "Aceptar"; +Blockly.Msg["DISABLE_BLOCK"] = "Desactivar bloque"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar comentario"; +Blockly.Msg["ENABLE_BLOCK"] = "Activar bloque"; +Blockly.Msg["EXPAND_ALL"] = "Expandir bloques"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir bloque"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas"; +Blockly.Msg["HELP"] = "Ayuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas en línea"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear lista vacía"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Devuelve una lista, de longitud 0, sin ningún dato"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Agregar, eliminar o reorganizar las secciones para reconfigurar este bloque de lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear lista con"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Agregar un elemento a la lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crear una lista con cualquier número de elementos."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primero"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# del final"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obtener"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obtener y eliminar"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "último"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatorio"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "eliminar"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Devuelve el primer elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Devuelve el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Devuelve el último elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Devuelve un elemento aleatorio en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Elimina y devuelve el primer elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Elimina y devuelve el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Elimina y devuelve el último elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Elimina y devuelve un elemento aleatorio en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Elimina el primer elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Elimina el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Elimina el último elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Elimina un elemento aleatorio en una lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "hasta # del final"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "hasta #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "hasta el último"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtener sublista desde el primero"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtener sublista desde # del final"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtener sublista desde #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea una copia de la parte especificada de una lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es el último elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es el primer elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "encontrar la primera aparición del elemento"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "encontrar la última aparición del elemento"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Devuelve el índice de la primera/última aparición del elemento en la lista. Devuelve %1 si el elemento no se encuentra."; +Blockly.Msg["LISTS_INLIST"] = "en la lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 está vacía"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Devuelve verdadero si la lista está vacía."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitud de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Devuelve la longitud de una lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "crear lista con el elemento %1 repetido %2 veces"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea una lista que consta de un valor dado repetido el número de veces especificado."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "invertir %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Invertir una copia de una lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insertar en"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "establecer"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserta el elemento al inicio de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserta el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Añade el elemento al final de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserta el elemento aleatoriamente en una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Establece el primer elemento de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Establece el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Establece el último elemento de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Establece un elemento aleatorio en una lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "orden %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordenar una copia de una lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabético, ignorar mayúscula/minúscula"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérico"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabético"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "hacer lista a partir de texto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "hacer texto a partir de lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Unir una lista de textos en un solo texto, separado por un delimitador."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividir el texto en una lista de textos, separando en cada delimitador."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con delimitador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Devuelve verdadero o falso."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadero"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://es.wikipedia.org/wiki/Desigualdad_matemática"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Devuelve verdadero si ambas entradas son iguales."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Devuelve verdadero si la primera entrada es mayor que la segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Devuelve verdadero si la primera entrada es mayor o igual a la segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Devuelve verdadero si la primera entrada es menor que la segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Devuelve verdadero si la primera entrada es menor que o igual a la segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Devuelve verdadero si ambas entradas son distintas."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "no %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Devuelve verdadero si la entrada es falsa. Devuelve falso si la entrada es verdadera."; +Blockly.Msg["LOGIC_NULL"] = "nulo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Devuelve nulo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "y"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Devuelve verdadero si ambas entradas son verdaderas."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Devuelve verdadero si al menos una de las entradas es verdadera."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "prueba"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si es falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si es verdadero"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Comprueba la condición en \"prueba\". Si la condición es verdadera, devuelve el valor \"si es verdadero\"; de lo contrario, devuelve el valor \"si es falso\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://es.wikipedia.org/wiki/Aritmética"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Devuelve la suma de ambos números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Devuelve el cociente de ambos números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Devuelve la diferencia de ambos números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Devuelve el producto de ambos números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Devuelve el primer número elevado a la potencia del segundo."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://es.wikipedia.org/wiki/Arcotangente_de_dos_par%C3%A1metros"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "Arcotangente de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Regresar el arcotangente del punto (X,Y) en grados de -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "añadir %2 a %1"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Añadir un número a la variable «%1»."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://es.wikipedia.org/wiki/Anexo:Constantes_matemáticas"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Devuelve una de las constantes comunes: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limitar %1 entre %2 y %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limitar un número entre los límites especificados (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "es divisible por"; +Blockly.Msg["MATH_IS_EVEN"] = "es par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "es negativo"; +Blockly.Msg["MATH_IS_ODD"] = "es impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "es positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "es primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Comprueba si un número es par, impar, primo, entero, positivo, negativo, o si es divisible por un número determinado. Devuelve verdadero o falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "es entero"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Devuelve el resto al dividir los dos números."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://es.wikipedia.org/wiki/Número"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un número."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "promedio de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "máximo de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mínimo de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modas de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "elemento aleatorio de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desviación estándar de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma de la lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Devuelve el promedio (media aritmética) de los valores numéricos en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Devuelve el número más grande en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Devuelve la mediana en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Devuelve el número más pequeño en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Devuelve una lista de los elementos más comunes en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Devuelve un elemento aleatorio de la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Devuelve la desviación estándar de la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Devuelve la suma de todos los números en la lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fracción aleatoria"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Devuelve una fracción aleatoria entre 0,0 (ambos inclusive) y 1.0 (exclusivo)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "entero aleatorio de %1 a %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Devuelve un entero aleatorio entre los dos límites especificados, inclusive."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://es.wikipedia.org/wiki/Redondeo"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "redondear"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "redondear a la baja"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "redondear al alza"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Redondear un número al alza o a la baja."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://es.wikipedia.org/wiki/Ra%C3%ADz_cuadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz cuadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Devuelve el valor absoluto de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Devuelve e a la potencia de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Devuelve el logaritmo natural de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Devuelve el logaritmo base 10 de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Devuelve la negación de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Devuelve 10 a la potencia de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Devuelve la raíz cuadrada de un número."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://es.wikipedia.org/wiki/Función_trigonométrica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Devuelve el arcocoseno de un número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Devuelve el arcoseno de un número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Devuelve el arcotangente de un número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Devuelve el coseno de un grado (no radián)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Devuelve el seno de un grado (no radián)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Devuelve la tangente de un grado (no radián)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear una variable de color..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crear una variable de número..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear una cadena variable..."; +Blockly.Msg["NEW_VARIABLE"] = "Crear variable…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nombre de variable nueva:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nuevo tipo de variable:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitir declaraciones"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://es.wikipedia.org/wiki/Subrutina"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ejecuta la función definida por el usuario '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://es.wikipedia.org/wiki/Subrutina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ejecuta la función definida por el usuario '%1' y usa su salida."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe esta función..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "hacer algo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "para"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea una función sin salida."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "devuelve"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea una función con una salida."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advertencia: Esta función tiene parámetros duplicados."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Destacar definición de la función"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si un valor es verdadero, entonces devuelve un segundo valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advertencia: Este bloque solo puede ser utilizado dentro de la definición de una función."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Funciones principales"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nombre de entrada:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Añadir una entrada a la función."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Añadir, eliminar o reordenar entradas para esta función."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Ejecución"; +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Bloque que contine los bloques de ejecución del programa."; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Inicialización do Supervisório"; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Bloque que contine los bloques de inicialización del supervisório."; +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Inicialización"; +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Bloque que contine los bloques de inicialización del programa."; +Blockly.Msg["REDO"] = "Rehacer"; +Blockly.Msg["REMOVE_COMMENT"] = "Eliminar comentario"; +Blockly.Msg["RENAME_VARIABLE"] = "Cambiar nombre de variable…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renombrar todas las variables «%1» a:"; +Blockly.Msg["RETURN_TEXT"] = "retornar"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 añade el texto %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Añadir texto a la variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "a minúsculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "a Mayúsculas Cada Palabra"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "a MAYÚSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Devuelve una copia del texto en un tamaño diferente."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obtener la primera letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obtener la letra # del final"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obtener la letra #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obtener la última letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obtener letra aleatoria"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "en el texto %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Devuelve la letra en la posición especificada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "contar %1 en %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Cuantas veces aparece un texto dentro de otro texto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Agregar un elemento al texto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque de texto."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "hasta la letra # del final"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "hasta la letra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "hasta la última letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en el texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obtener subcadena desde la primera letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obtener subcadena desde la letra # del final"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obtener subcadena desde la letra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Devuelve una porción determinada del texto."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "encontrar la primera aparición del texto"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "encontrar la última aparición del texto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en el texto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Devuelve el índice de la primera/última aparición del primer texto en el segundo texto. Devuelve %1 si el texto no se encuentra."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 está vacío"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Devuelve verdadero si el texto proporcionado está vacío."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear texto con"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crear un fragmento de texto al unir cualquier número de elementos."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longitud de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Devuelve el número de letras (espacios incluidos) del texto proporcionado."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprimir %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprimir el texto, número u otro valor especificado."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Solicitar al usuario un número."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Solicitar al usuario un texto."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "solicitar número con el mensaje"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "solicitar texto con el mensaje"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "reemplazar %1 con %2 en %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Reemplazar todas las veces que un texto dentro de otro texto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "invertir %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Invierte el orden de los caracteres en el texto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://es.wikipedia.org/wiki/Cadena_de_caracteres"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una letra, palabra o línea de texto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "quitar espacios de ambos lados de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "quitar espacios iniciales de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "quitar espacios finales de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Devuelve una copia del texto sin los espacios de uno o ambos extremos."; +Blockly.Msg["TODAY"] = "Hoy"; +Blockly.Msg["UNDO"] = "Deshacer"; +Blockly.Msg["UNNAMED_KEY"] = "Sin nombre"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Llama un método de la variable actual con retorno."; +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Llama un método de la variable actual."; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crear 'establecer %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Devuelve el valor de esta variable."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Llamadas de métodos"; +Blockly.Msg["VARIABLES_SET"] = "establecer %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'obtener %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Establece esta variable para que sea igual a la entrada."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Ya existe una variable llamada '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Ya existe una variable nombrada '%1' para otra variable del tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espacio de trabajo de Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Di algo…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/et.js b/blockly/msg/et.js new file mode 100644 index 00000000000..83dca5f5460 --- /dev/null +++ b/blockly/msg/et.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Lisa kommentaar"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Muutujat '%1' ei saa kustutada, sest see on osa funktsiooni '%2' määratlusest"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muuda väärtust:"; +Blockly.Msg["CLEAN_UP"] = "Korista plokid kokku"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Kokkuvajunud plokid sisaldavad hoiatusi."; +Blockly.Msg["COLLAPSE_ALL"] = "Tõmba plokid kokku"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Tõmba plokk kokku"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1. värvist"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2. värvist"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "suhtega"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "segu"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Segab kaks värvi määratud suhtega (0.0 - 1.0) kokku."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Valitud värv paletist."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "juhuslik värv"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Juhuslikult valitud värv."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "sinisest"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "rohelisest"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "punasest"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "segu"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Tekitab värvi määratud hulgast punasest, rohelisest ja sinisest. Kõik väärtused peavad olema 0 ja 100 vahel."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "välju kordusest"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "katkesta see kordus ja liigu järgmisele"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Väljub kordusest ja liigub edasi korduse järel oleva koodi käivitamisele."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Katkestab korduses oleva koodi käivitamise ja käivitab järgmise korduse."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Hoiatus: Seda plokki saab kasutada ainult korduse sees."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "iga elemendiga %1 loendis %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Iga elemendiga loendis anna muutujale '%1' elemendi väärtus ja kõivita plokis olevad käsud."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "loendus muutujaga %1 alates %2 kuni %3, %4 kaupa"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Annab muutujale '%1' väärtused ühest numbrist teiseni, muutes seda intervalli kaupa ja käivitab igal muudatusel ploki sees oleva koodi."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Lisab „kui“ plokile tingimuse."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Lisab „kui“ plokile lõpliku tingimuseta koodiploki."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Selle „kui“ ploki muutmine sektsioonide lisamise, eemaldamise ja järjestamisega."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "vastasel juhul"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "vastasel juhul, kui"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "kui"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Kui avaldis on tõene, käivita ploki sees olevad käsud."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Kui avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul käivita käsud teisest plokist."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist. Kui ükski avaldistest pole tõene, käivita käsud viimasest plokist."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "käivita"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 korda"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Plokis olevate käskude käivitamine määratud arv kordi."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "seni kuni pole"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "seni kuni on"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Plokis olevaid käske korratakse seni kui avaldis pole tõene."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Plokis olevaid käske korratakse seni kui avaldis on tõene."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Kas kustutada kõik %1 plokki?"; +Blockly.Msg["DELETE_BLOCK"] = "Kustuta plokk"; +Blockly.Msg["DELETE_VARIABLE"] = "Kustuta muutuja '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Kas kustutada %1 kohas kasutatav muutuja '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Kustuta %1 plokki"; +Blockly.Msg["DIALOG_CANCEL"] = "Loobu"; +Blockly.Msg["DIALOG_OK"] = "Sobib"; +Blockly.Msg["DISABLE_BLOCK"] = "Keela ploki kasutamine"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Tekita duplikaat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dubleeri kommentaar"; +Blockly.Msg["ENABLE_BLOCK"] = "Luba ploki kasutamine"; +Blockly.Msg["EXPAND_ALL"] = "Laota plokid laiali"; +Blockly.Msg["EXPAND_BLOCK"] = "Laota plokk laiali"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Sisendid ploki taga"; +Blockly.Msg["HELP"] = "Abi"; +Blockly.Msg["INLINE_INPUTS"] = "Sisendid ploki sees"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tühi loend"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Tagastab loendi, mille pikkus on 0 ja milles pole ühtegi elementi."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "loend"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Loendiploki elementide lisamine, eemaldamine või järjestuse muutmine."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "uus loend"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Elemendi lisamine loendisse."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Tekitab mistahes arvust elementidest loendi."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "esimene element"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "element # (lõpust)"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "element #"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "võetud"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "võetud ja eemaldatud"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "viimane element"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "juhuslik element"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "eemalda"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Tagastab loendi esimese elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Tagastab loendis määratud asukohal oleva elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Tagastab loendi viimase elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Tagastab loendi juhusliku elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Tagastab ja eemaldab loendist esimese elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Tagastab ja eemaldab loendist määratud asukohal oleva elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Tagastab ja eemaldab loendist viimase elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Tagastab ja eemaldab loendist juhusliku elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Eemaldab loendist esimese elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Eemaldab loendist määratud asukohal oleva elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Eemaldab loendist viimase elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Eemaldab loendist juhusliku elemendi."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "elemendini # (lõpust)"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "elemendini #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "lõpuni"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "alamloend algusest"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "alamloend elemendist # (lõpust)"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "alamloend elemendist #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Tekitab loendi määratud osast koopia."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Viimane element on %1."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Esimene element on %1."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "esimene leitud"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "viimase leitud"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Tagastab esimese/viimase loendist leitud objekti asukoha (objekti järjekorranumbri loendis). Kui objekti ei leita, tagastab %1."; +Blockly.Msg["LISTS_INLIST"] = "loendis"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 on tühi"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Tagastab „tõene“ kui loend on tühi."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 pikkus"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Tagastab loendi pikkuse."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "loend pikkusega %2 elemendist %1"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Tekitab uue loendi, millesse lisatakse ühte elementi pikkusega määratud arv kordi."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Loendi koopia ümberpööramine."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = ", väärtus"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "lisa asukohale"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "asenda"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Lisab loendi algusesse uue elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Lisab määratud asukohale loendis uue elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Lisab loendi lõppu uue elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Lisab juhuslikule kohale loendis uue elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Asendab loendis esimese elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Asendab loendis määratud kohal oleva elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Asendab loendis viimase elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Asendab loendis juhusliku elemendi."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "kasvavalt"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "kahanevalt"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 sorteeritud %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Loendi koopia sorteerimine."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "tähestiku järgi (tähesuurust eirates)"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "arvväärtuste järgi"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "tähestiku järgi"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "loend, tekitatud tekstist"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tekst, tekitatud loendist"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ühendab tekstide loendis olevad tükid üheks tekstiks, asetades tükkide vahele eraldaja."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tükeldab teksti eraldajade kohalt ja asetab tükid tekstide loendisse."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "eraldajaga"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "väär"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Tagastab tõeväärtuse – kas „tõene“ või „väär“."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tõene"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Tagastab „tõene“, kui avaldiste väärtused on võrdsed."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Tagastab „tõene“, kui esimese avaldise väärtus on suurem kui teise väärtus."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Tagastab „tõene“, kui esimese avaldise väärtus on suurem või võrdne teise väärtusega."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem kui teise väärtus."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem või võrdne teise väärtusega."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Tagastab „tõene“, kui avaldiste väärtused pole võrdsed."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "pole %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Tagastab „tõene“, kui avaldis on väär. Tagastab „väär“, kui avaldis on tõene."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Tagastab nulli."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ja"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "või"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Tagastab „tõene“, kui mõlemad avaldised on tõesed."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Tagastab „tõene“, kui vähemalt üks avaldistest on tõene."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "tingimus"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "kui väär"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "kui tõene"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kui tingimuse väärtus on tõene, tagastab „kui tõene“ väärtuse, vastasel juhul „kui väär“ väärtuse."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://et.wikipedia.org/wiki/Aritmeetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Tagastab kahe arvu summa."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Tagastab kahe arvu jagatise."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Tagastab kahe arvu vahe."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Tagastab kahe arvu korrutise."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Tagastab esimese arvu teise arvu astmes."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2(X:%1, Y:%2)"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Tagastab punkti (X, Y) arkustangentsit kraadides vahemikus -180 kuni 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "muuda %1 %2 võrra"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lisab arvu muutujale '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Tagastab ühe konstantidest: π (3,141…), e (2,718…), φ (1.618…), √2) (1,414…), √½ (0,707…), või ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 piirang %2 ja %3 vahele"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Piirab arvu väärtuse toodud piiridesse (piirarvud kaasa arvatud)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "jagub arvuga"; +Blockly.Msg["MATH_IS_EVEN"] = "on paarisarv"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "on negatiivne arv"; +Blockly.Msg["MATH_IS_ODD"] = "on paaritu arv"; +Blockly.Msg["MATH_IS_POSITIVE"] = "on positiivne arv"; +Blockly.Msg["MATH_IS_PRIME"] = "on algarv"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollib kas arv on paarisarv, paaritu arv, algarv, täisarv, positiivne, negatiivne või jagub kindla arvuga. Tagastab „tõene“ või „väär“."; +Blockly.Msg["MATH_IS_WHOLE"] = "on täisarv"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 jääk"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Tagastab esimese numbri teisega jagamisel tekkiva jäägi."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://et.wikipedia.org/wiki/Arv"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Arv."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "loendi keskmine"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "loendi maksimum"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "loendi mediaan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "loendi miinimum"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "loendi moodid"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "juhuslik element loendist"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "loendi standardhälve"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "loendi summa"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Tagastab loendis olevate arvväärtuste aritmeetilise keskmise."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Tagastab suurima loendis oleva arvu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Tagastab väikseima loendis oleva arvu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Tagastab loendi kõige sagedamini esinevate loendi liikmetega."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Tagastab juhusliku elemendi loendist."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Tagastab loendi standardhälbe."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Tagastab kõigi loendis olevate arvude summa."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "juhuslik murdosa"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Tagastab juhusliku murdosa 0.0 (kaasa arvatud) and 1.0 (välja arvatud) vahel."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "juhuslik täisarv %1 ja %2 vahel"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Tagastab juhusliku täisarvu toodud piiride vahel (piirarvud kaasa arvatud)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ümarda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ümarda alla"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ümarda üles"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Ümardab arvu üles või alla."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://et.wikipedia.org/wiki/Ruutjuur"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluutväärtus"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ruutjuur"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Tagastab arvu absoluutväärtuse."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Tagasta e arvu astmes."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Tagastab arvu naturaallogaritmi."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Tagastab arvu kümnendlogaritm."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Tagastab arvu vastandväärtuse."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Tagastab 10 arvu astmes."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Tagastab arvu ruutjuure."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://et.wikipedia.org/wiki/Trigonomeetrilised_funktsioonid"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Tagastab arvu arkuskoosiinuse."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Tagastab arvu arkussiinuse."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Tagastab arvu arkustangensi."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Tagastab arvu (kraadid) kosiinuse."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Tagastab arvu (kraadid) siinuse."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Tagastab arvu (kraadid) tangensi."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Loo muutuja värvina..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Loo muutuja arvuna..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Loo muutuja sõnena..."; +Blockly.Msg["NEW_VARIABLE"] = "Uus muutuja ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Uue muutuja nimi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Uue muutuja tüüp:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "kood plokis"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "sisenditega:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://et.wikipedia.org/wiki/Alamprogramm"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Käivitab kasutaja defineeritud funktsiooni '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://et.wikipedia.org/wiki/Alamprogramm"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "sisenditega:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Tekita '%1' plokk"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Funktsiooni kirjeldus ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "teeme midagi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "funktsioon"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Tekitab funktsiooni, mis ei tagasta midagi."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "tagasta"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Tekitab funktsiooni, mis tagastab midagi."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Hoiatus: Sel funktsioonil on mitu sama nimega sisendit."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Tõsta funktsiooni definitsioon esile"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Kui väärtus on tõene, tagastatakse teine väärtus."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Hoiatus: Seda plokki saab kasutada ainult funktsiooni definitsioonis."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "sisend nimega:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Lisab funktsioonile sisendi."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "sisendid"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Funktsiooni sisendite lisamine, eemaldamine või järjestuse muutmine."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Tee uuesti"; +Blockly.Msg["REMOVE_COMMENT"] = "Eemalda kommentaar"; +Blockly.Msg["RENAME_VARIABLE"] = "Nimeta muutuja ümber ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Muutuja „%1“ uus nimi:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "lisa muutuja %1 lõppu tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Lisab teksti muutuja „%1“ väärtuse lõppu."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "väikeste tähtedega"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Suurte Esitähtedega"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "SUURTE TÄHTEDEGA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Tagastab muudetud tähesuurusega teksti koopia."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "esimene sümbol"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "lõpust sümbol #"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "sümbol #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "viimane sümbol"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "juhuslik sümbol"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "tekstis %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Tagastab tekstis määratud asukohal oleva sümboli."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "loenda %1 %2-ses"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Loenda, mitu korda mingi tekst esineb teise teksti sees."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Objekti lisamine tekstile."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ühenda"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tekstiploki muutmine sektsioonide lisamise, eemaldamise või järjestuse muutmisega."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "kuni (lõpust) sümbolini #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "kuni sümbolini #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "kuni viimase sümbolini"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "tekstist"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "alates esimesest sümbolist"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "alates (lõpust) sümbolist #"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "alates sümbolist #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Tagastab määratud tüki tekstist."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "esimese leitud tekstitüki"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "viimase leitud tekstitüki"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekstist %1 %2 %3 asukoht"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Tagastab esimesest tekstist esimese/viimase leitud teise teksti asukoha (indeksi). Kui teksti ei leita, tagastab %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 on tühi"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Tagastab „tõene“, kui tekstis pole ühtegi sümbolit."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "tekita tekst"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tekitab teksti ühendades mistahes arvu elemente."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 pikkus"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Tagastab sümbolite aru (ka tühikud) toodud tekstis."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "trüki %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Trükib määratud teksti, numbri või mõne muu objekti väärtuse."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Küsib kasutajalt teadet näidates mingit arvu."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Küsib kasutajalt teadet näidates mingit teksti."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "kasutajalt küsitud arv teatega"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "kasutajalt küsitud tekst teatega"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "asenda %1 %2-ga %3-s"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Asenda mõne teksti esinemine mõnes muus tekstis."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "ümberpöördud %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Pöörab tekstis tähemärkide järjestuse ümber."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Täht, sõna või rida teksti."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "mõlemalt poolt eemaldatud tühikutega"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "algusest eemaldatud tühikutega"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "lõpust eemaldatud tühikutega"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Tagastab koopia tekstist, millel on tühikud ühelt või mõlemalt poolt eemaldatud."; +Blockly.Msg["TODAY"] = "Täna"; +Blockly.Msg["UNDO"] = "Võta tagasi"; +Blockly.Msg["UNNAMED_KEY"] = "nimetu"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "objekt"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Tekita 'määra „%1“ väärtuseks' plokk"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Tagastab selle muutuja väärtuse."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "määra %1 väärtuseks %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Tekita '„%1“ väärtus' plokk"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Määrab selle muutuja väärtuse võrdseks sisendi väärtusega."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1'-nimeline muutuja on juba olemas."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Muutuja nimega '%1' juba eksisteerib teise tüübina: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly tööruum"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Ütle midagi..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/eu.js b/blockly/msg/eu.js new file mode 100644 index 00000000000..fb59a496102 --- /dev/null +++ b/blockly/msg/eu.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Iruzkina gehitu"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ezin da '%1' aldagaia ezabatu '%2' funtzioaren definizioaren zati delako."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Aldatu balioa:"; +Blockly.Msg["CLEAN_UP"] = "Blokeak garbitu"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Blokeak kolapsatu"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Blokea kolapsatu"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1 Kolorea"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2 Kolorea"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "Ratioa"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "Nahastu"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Bi koloreko nahasketak erlazio jakin batekin nahasten ditu (0.0-1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://eu.wikipedia.org/wiki/Kolore"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Hautatu kolore bat paletatik."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ausazko kolorea"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Aukeratu ausaz kolore bat."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "urdina"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "berdea"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "gorria"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Sortu kolorea zehaztutako gorriz, berdearekin eta urdinekin. Balio guztiak 0 eta 100 artean egon behar dira."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "begizta eten"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "jarraitu hurrengo begizta iterazioarekin"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Agertzen den begiztatik ihes egin."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%1 elementu bakoitzeko %2 zerrendan"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Zerrendako elementu bakoitzarentzat, ezarri %1 aldagaia elementura, eta egin adierazpen batzuk."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 zenbatu %2-tik %3-ra %4-ra"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "%1 aldagaiak hasierako zenbakiaren eta amaierako zenbakirako balioak hartzen ditu, zehaztutako tartea zenbatzen du eta zehaztutako blokeak egin."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Gehitu, ezabatu, ala berrantolatu aukeraketak \"ba\" bloke hau berrezartzeko."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "bestela"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "bestela baldin eta"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "baldin eta"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Balorea egia den bitartean, egin adierazpen batzuk."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, egin ezazu bigarren adierazpen blokea."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea. Baloreetako bat ere ez bada egia, egin ezazu adierazpenen azkeneko blokea."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://eu.wikipedia.org/wiki/For_begizta"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "egin"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "errepikatu %1 aldiz"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Adierazpen batzuk hainbat aldiz egin."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "arte errepikatu"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "bitartean errepikatu"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Balorea gezurra den bitartean, egin adierazpen batzuk."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Balorea egia den bitartean, egin adierazpen batzuk."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ezabatu %1 blokeak?"; +Blockly.Msg["DELETE_BLOCK"] = "Ezabatu blokea"; +Blockly.Msg["DELETE_VARIABLE"] = "%1 parametro izena ezabatu."; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ezabatu %2 aldagaiaren %1 erabilerak?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Ezabatu %1 bloke"; +Blockly.Msg["DIALOG_CANCEL"] = "Utzi"; +Blockly.Msg["DIALOG_OK"] = "Ados"; +Blockly.Msg["DISABLE_BLOCK"] = "Ezgaitu blokea"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Bikoiztu"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Iruzkina bikoiztu"; +Blockly.Msg["ENABLE_BLOCK"] = "Gaitu blokea"; +Blockly.Msg["EXPAND_ALL"] = "Blokeak Hedatu"; +Blockly.Msg["EXPAND_BLOCK"] = "Blokea Hedatu"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Kanpoko sarrerak"; +Blockly.Msg["HELP"] = "Laguntza"; +Blockly.Msg["INLINE_INPUTS"] = "Inpuntak Linean"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "sortu zerrenda hutsa"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Zerrenda bat itzultzen du, 0 luzera duena, daturik gabekoa"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "zerrenda"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Zerrenda sortu hurrengoarekin"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "lehena"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "lortu"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "lortu eta kendu"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "azkena"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ausazkoa"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "kendu"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Lehenengo artikulua zerrendara bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Artikulua zerrendako posizio zehatz batera bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Azken artikulua zerrendara bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Artikulu aleatorioa zerrendara bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Lehenengo artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Zerrendako azken artikulua kentzen eta bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Artikulu aleatorio bat zerrendatik kentzen eta bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Lehenengo artikulua zerrendatik kentzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Artikulua zerrendako posizio zehatz batetik kentzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Azken artikulua zerrendatik kentzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Artikulu aleatorioa zerrendatik kentzen du."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 azken artikulua da."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 lehenengo artikulua da."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "zerrendan"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 hutsik dago"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "egia itzultzen du zerrenda hutsik badago."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "zerrendaren luzera"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "zerrendaren luzera itzultzen du"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "honela"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ezarri"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "goranzkoa"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "beheranzkoa"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "Zenbakizkoa"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Alfabetikoki"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Testuatik lista sortu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "listatik testua sortu"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "gezurra"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "egia"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://eu.wikipedia.org/wiki/Desberdintza"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ez %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "nulu"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "eta"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "edo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "Froga"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "gezurra bada"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "egia bada"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://eu.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Bi zenbakien batura ematen du."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Bi zenbakien zatidura ematen du."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Bi zenbakien kendura ematen du."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Bi zenbakien biderkadura ematen du."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "aldatu %1 %2(e)ra"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Gehitu zenbakia '%1' aldagaiari."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Konstante ohikoenetako bat itzultzen du: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), edo ∞ (infinitua)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "honakoaz zatigarria da"; +Blockly.Msg["MATH_IS_EVEN"] = "bikoitia da"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatiboa da"; +Blockly.Msg["MATH_IS_ODD"] = "bakoitia da"; +Blockly.Msg["MATH_IS_POSITIVE"] = "positiboa da"; +Blockly.Msg["MATH_IS_PRIME"] = "zenbaki lehena da"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "zenbaki osoa da"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2(r)en oroigarria"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://eu.wikipedia.org/wiki/Zenbaki"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Zenbaki bat."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "zerrendaren batazbestekoa"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "zerrendako maximoa"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "zerrendako mediana"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "zerrendako minimoa"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "zerrendako modak"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "zerrendako artikulu aleatorioa"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "zerrendako deribazio estandarra"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zerrendaren batura"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Zerrendako zenbakizko balioen batazbestekoa (aritmetikoa) itzultzen du."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Eman zerrendako zenbakirik handiena."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Eman zerrendako zenbaki media."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Eman zerrendako zenbakirik txikiena."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Bueltatu artikulurik ohikoenetarikoen zerrenda."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Itzuli zerrendako elementu aleatorioa."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Eman zerrendako zenbaki guztien batura."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "zatiki aleatorioa"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://eu.wikipedia.org/wiki/Biribiltze"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "biribildu"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "gutxiagoz biribildu"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "gehiagoz biribildu"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zenbaki bat gehiagoz edo gutxiagoz biribildu."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://eu.wikipedia.org/wiki/Erro_karratu"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolutua"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "erro karratua"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Zenbaki baten balio absolutua ematen du."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Zenbaki baten logaritmo naturala ematen du."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Zenbaki baten erro karratua ematen du."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://eu.wikipedia.org/wiki/Funtzio_trigonometriko"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Zenbaki baten arku kosinua ematen du."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Zenbaki baten arku sinua ematen du."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Zenbaki baten arku tangentea ematen du."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Kolore aldagaia sortu..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Zenbaki aldagaia sortu..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Kate aldakorra sortu..."; +Blockly.Msg["NEW_VARIABLE"] = "Aldagaia sortu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Aldagai berriaren izena:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Aldagai mota berria:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "honekin"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Azpierrutina"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Azpierrutina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "honekin"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' sortu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "egin zerbait"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "honi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "itzuli"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Abisua: Funtzio honek parametro bikoiztuak dauzka."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Balioa egiazkoa bada, orduan itzuli bigarren baliora."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "sarreraren izena:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "sarrerak"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Berregin"; +Blockly.Msg["REMOVE_COMMENT"] = "Iruzkina ezabatu"; +Blockly.Msg["RENAME_VARIABLE"] = "Aldatu aldagaiaren izena..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Aldatu '%1' aldagai guztien izenak eta izen hau eman:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1tik testu atxikita %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hartu lehenengo letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hartu # letra bukaeratik"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hartu # letra"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hartu azkenengo letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "letra aleatorioa lortu"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "testuan %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Gehitu artikulu bat testura."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "elkartu"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Gehitu, ezabatu, ala berrantolatu aukeraketak testu bloke hau berrezartzeko."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "testuan"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "bilatu testuaren lehenengo agerpena"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "bilatu testuaren azkenengo agerpena"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "testuan %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 hutsik dago"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "Testua sortu hurrengoarekin"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1(r)en luzeera"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "inprimatu %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "zehaztutako testua, zenbakia edo bestelako balioa inprimatzen du."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1(e)ri buelta eman"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Letra bat, hitza edo testuko lerroa."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Gaur"; +Blockly.Msg["UNDO"] = "Desegin"; +Blockly.Msg["UNNAMED_KEY"] = "izenik gabe"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elementua"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "%1 izeneko aldagaia dagoeneko existitzen da."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "%1 izeneko aldagaia dagoeneko existitzen da %2 motako beste aldagai batekin."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Esan zerbait..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/fa.js b/blockly/msg/fa.js new file mode 100644 index 00000000000..91c1599619b --- /dev/null +++ b/blockly/msg/fa.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "افزودن نظر"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "متغیر '%1' را نمی‌توان پاک کرد، زیرا جزیی از تعریف تابع '%2' می‌باشد"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "تغییر مقدار:"; +Blockly.Msg["CLEAN_UP"] = "تمیز کردن بلوک‌ها"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "فروپاشی بلوک‌ها"; +Blockly.Msg["COLLAPSE_BLOCK"] = "فروپاشی بلوک"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ ۱"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ ۲"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "مخلوط"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "انتخاب یک رنگ از تخته‌رنگ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رنگ تصادفی"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "انتخاب یک رنگ به شکل تصادفی."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "آبی"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سبز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "قرمز"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رنگ با"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "خروج از حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ادامه با تکرار بعدی حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "شکستن حلقهٔ شامل."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "برای هر مورد %1 در فهرست %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "با تعداد %1 از %2 به %3 با گام‌های %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "افزودن یک شرط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "اضافه کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "درغیر اینصورت"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "درغیر اینصورت اگر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://fa.wikipedia.org/wiki/حلقه_فور"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "انجام"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 بار تکرار"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "انجام چند عبارت چندین بار."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تکرار تا زمانی که"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تکرار در حالی که"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "حذف همهٔ بلاک‌های %1؟"; +Blockly.Msg["DELETE_BLOCK"] = "حذف بلوک"; +Blockly.Msg["DELETE_VARIABLE"] = "متغیر '%1'را پاک کنید"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "تعداد %1 استفاده از متغیر '%2' پاک شود؟"; +Blockly.Msg["DELETE_X_BLOCKS"] = "حذف بلوک‌های %1"; +Blockly.Msg["DIALOG_CANCEL"] = "لغو"; +Blockly.Msg["DIALOG_OK"] = "تأیید"; +Blockly.Msg["DISABLE_BLOCK"] = "غیرفعال‌سازی بلوک"; +Blockly.Msg["DUPLICATE_BLOCK"] = "تکراری"; +Blockly.Msg["DUPLICATE_COMMENT"] = "دیدگاه تکراری"; +Blockly.Msg["ENABLE_BLOCK"] = "فعال‌سازی بلوک"; +Blockly.Msg["EXPAND_ALL"] = "گسترش بلوک‌ها"; +Blockly.Msg["EXPAND_BLOCK"] = "گسترش بلوک"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ورودی‌های خارجی"; +Blockly.Msg["HELP"] = "راهنما"; +Blockly.Msg["INLINE_INPUTS"] = "ورودی‌های درون خطی"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ایجاد فهرست خالی"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "فهرست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "اضافه کردن، حذف کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ایجاد فهرست با"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "اضافه کردن یک مورد به فهرست."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "فهرستی از هر عددی از موارد می‌سازد."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "اولین"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# از انتها"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گرفتن"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گرفتن و حذف‌کردن"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخرین"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "تصادفی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حذف‌کردن"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "اولین مورد یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "موردی در محل مشخص‌شده بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "آخرین مورد در یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "یک مورد تصادفی در یک فهرست بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "اولین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "آخرین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "یک مورد تصادفی را یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "به # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "به #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "به آخرین"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "گرفتن زیرمجموعه‌ای از ابتدا"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "گرفتن زیرمجموعه‌ای از # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "گرفتن زیرمجموعه‌ای از #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 آخرین مورد است."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 اولین مورد است."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "یافتن اولین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "یافتن آخرین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود."; +Blockly.Msg["LISTS_INLIST"] = "در فهرست"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "اگر فهرست خالی است مقدار صجیج بر می‌گرداند."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "طول یک فهرست را برمی‌گرداند."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "معکوس %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "یک کپی از لیست را معکوس کنید."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "به عنوان"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "درج در"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "اعمال"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "موردی به ته فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "موردی به ته فهرست الحاق می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "مورد را به صورت تصادفی در یک فهرست می‌افزاید."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "اولین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "مورد مشخص‌شده در یک فهرست را قرار می‌دهد."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "آخرین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "یک مورد تصادفی در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "صعودی"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "نزولی"; +Blockly.Msg["LISTS_SORT_TITLE"] = "مرتب‌سازی%1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "یک کپی از لیست را مرتب کنید."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "حروفی ، رد کردن مورد"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "عددی"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "حروفی ، الفبایی"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ایجاد فهرست از متن"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ایجاد متن از فهرست"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "چسباندن یک فهرست از متن‌ها و تشکیل یک متن که با یک جداکننده جدا شده‌اند"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "شکستن متن به فهرستی از متن‌ها، شکستن در محل جداکننده"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "همراه جداساز"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ناصحیح"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "بازگرداندن یکی از صحیح یا ناصحیح."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "صحیح"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد."; +Blockly.Msg["LOGIC_NULL"] = "تهی"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "تهی بازمی‌گرداند."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمایش"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر ناصحیح"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر صحیح"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "بازگرداندن مقدار جمع دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "بازگرداندن باقی‌ماندهٔ دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "بازگرداندن تفاوت دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "بازگرداندن حاصلضرب دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "تغییر %1 با %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "افزودن یک عدد به متغیر '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "یکی از مقادیر ثابت جهانی را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "محدودکردن %1 پایین %2 بالا %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "تقسیم شده بر"; +Blockly.Msg["MATH_IS_EVEN"] = "زوج است"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی است"; +Blockly.Msg["MATH_IS_ODD"] = "فرد است"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت است"; +Blockly.Msg["MATH_IS_PRIME"] = "عدد اول است"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند."; +Blockly.Msg["MATH_IS_WHOLE"] = "کامل است"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87"; +Blockly.Msg["MATH_MODULO_TITLE"] = "باقی‌ماندهٔ %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "یک عدد."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "میانگین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بزرگ‌ترین عدد در فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "میانهٔ فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "کوچک‌ترین عدد در فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "مد فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "مورد تصادفی از فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "انحراف معیار فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جمع فهرست"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "بزرگ‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "میانهٔ عدد در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "کوچک‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "موردی تصادفی از فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "انحراف معیار فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "جمع همهٔ عددهای فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "کسر تصادفی"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "عدد صحیح تصادفی بین %1 تا %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گردکردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "گرد به پایین"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "گرد به بالا"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "گردکردن یک عدد به بالا یا پایین."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ریشهٔ دوم"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "قدر مطلق یک عدد را بازمی‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "بازگرداندن توان e یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "لوگاریتم طبیعی یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "منفی‌شدهٔ یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "بازگرداندن توان ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ریشهٔ دوم یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "بازگرداندن آرک‌کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "بازگرداندن آرک‌سینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "بازگرداندن آرک‌تانژانت درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "بازگرداندن کسینوس یک زاویه درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "بازگرداندن سینوس یک زاویه به درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "بازگرداندن تانژانت یک زاویه به درجه (نه رادیان)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ساخت متغیر رنگ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ساخت متغیر عددی..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "ساخت متغیر رشته..."; +Blockly.Msg["NEW_VARIABLE"] = "ایجاد متغیر..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نام متغیر تازه:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "نوع متغیر جدید:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اجازه اظهارات"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_(%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1»."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "ساختن «%1»"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "توصیف این عملکرد..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "انجام چیزی"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "به"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "تابعی می‌سازد بدون هیچ خروجی."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "بازگشت"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "تابعی با یک خروجی می‌سازد."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "اخطار: این تابعی پارامتر تکراری دارد."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "برجسته‌سازی تعریف تابع"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نام ورودی:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "اضافه کردن ورودی به تابع."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ورودی‌ها"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "انجام دوباره"; +Blockly.Msg["REMOVE_COMMENT"] = "حذف نظر"; +Blockly.Msg["RENAME_VARIABLE"] = "تغییر نام متغیر..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تغییر نام همهٔ متغیرهای «%1» به:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "به %1 الحاق متن %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "الحاق متنی به متغیر «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "به حروف کوچک"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "به حروف بزرگ عنوان"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "به حروف بزرگ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "بازگرداندن کپی متن در حالتی متفاوت."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "گرفتن اولین حرف"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "گرفتن حرف # از آخر"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "گرفتن حرف #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "گرفتن آخرین حرف"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "گرفتن حرف تصادفی"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "در متن %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "حرفی در موقعیت مشخص‌شده بر می‌گرداند."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "تعداد %1 را در %2 بشمار"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "تعداد دفعاتی که یک متن درون یک متن دیگر تکرار شده است را برمی‌گرداند"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "افزودن یک مورد به متن."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "عضویت"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "اضافه کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "به حرف # از انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "به حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "به آخرین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "در متن"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "گرفتن زیرمتن از اولین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "گرفتن زیرمتن از حرف # به انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "گرفتن زیرمتن از حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "اولین رخداد متن را بیاب"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "آخرین رخداد متن را بیاب"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "در متن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "اضافه کردن صحیح اگر متن فراهم‌شده خالی است."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ایجاد متن با"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "چاپ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "اعلان برای کاربر با یک عدد."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "اعلان برای کاربر برای یک متن."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "اعلان برای عدد با پیام"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "اعلان برای متن با پیام"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "درون %3، متن %1 را با %2 جایگزین کن"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "جایگزین کردن تمام مواردی که از متنی درون متن دیگر وجود دارد"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "معکوس %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "چینش کاراکترها درون متن را برعکس می‌کند"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "یک حرف، کلمه یا خطی از متن."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "تراشیدن فاصله‌ها از هر دو طرف"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; +Blockly.Msg["TODAY"] = "امروز"; +Blockly.Msg["UNDO"] = "واگردانی"; +Blockly.Msg["UNNAMED_KEY"] = "بدون نام"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "مورد"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "درست‌کردن «تنظیم %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "مقدار این متغیر را بر می‌گرداند."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "مجموعه %1 به %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "درست‌کردن «گرفتن %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "متغیر برابر با خروجی را مشخص می‌کند."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "متغیری با نام '%1' هم اکنون وجود دارد"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "در حال حاضر یک متغیر با نام '%1' برای متغیر دیگری از نوع '%2' وجود دارد."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "یک چیزی بگو..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/fi.js b/blockly/msg/fi.js new file mode 100644 index 00000000000..6b8f8a1e6ec --- /dev/null +++ b/blockly/msg/fi.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Lisää kommentti"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ei voida poistaa muuttujaa '%1' koska se on osa funktion määritelmää '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muuta arvoa:"; +Blockly.Msg["CLEAN_UP"] = "Siivoa lohkot"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Supistetut lohkot sisältävät varoituksia."; +Blockly.Msg["COLLAPSE_ALL"] = "Sulje lohkot"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Sulje lohko"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "väri 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "väri 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "suhde"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "sekoitus"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sekoittaa kaksi väriä keskenään annetussa suhteessa (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fi.wikipedia.org/wiki/V%C3%A4ri"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Valitse väri paletista."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "satunnainen väri"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Valitse väri sattumanvaraisesti."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "sininen"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "vihreä"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "punainen"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "väri, jossa on"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Luo väri, jossa on tietty määrä punaista, vihreää ja sinistä. Kaikkien arvojen tulee olla välillä 0 - 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "poistu silmukasta"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "jatka silmukan seuraavaan toistoon"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Poistu sisemmästä silmukasta."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ohita loput tästä silmukasta ja siirry seuraavaan toistoon."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Varoitus: Tätä lohkoa voi käyttää vain silmukan sisällä."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "kullekin kohteelle %1 listassa %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Aseta muuttujan %1 arvoksi kukin listan kohde vuorollaan ja suorita joukko lausekkeita."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "laske %1 Väli %2-%3 %4:n välein"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Aseta muuttujaan \"%1\" arvot alkuarvosta loppuarvoon annetun askeleen välein ja suorita joka askeleella annettu koodilohko."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Lisää ehto \"jos\" lohkoon."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Lisää lopullinen \"muuten\" lohko \"jos\" lohkoon."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Lisää, poista tai järjestele osioita tässä \"jos\" lohkossa."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "muuten"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "muuten jos"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jos"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jos arvo on tosi, suorita lauseke."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jos arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten suorita toinen lohko lausekkeita."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita. Jos mikään arvoista ei ole tosi, suorita viimeinen lohko lausekkeita."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "tee"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "toista %1 kertaa"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Suorita joukko lausekkeita useampi kertaa."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "toista kunnes"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "toista niin kauan kuin"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Niin kauan kuin arvo on epätosi, suorita joukko lausekkeita."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Niin kauan kuin arvo on tosi, suorita joukko lausekkeita."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Poistetaanko kaikki %1 lohkoa?"; +Blockly.Msg["DELETE_BLOCK"] = "Poista lohko"; +Blockly.Msg["DELETE_VARIABLE"] = "Poista muuttuja '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Poistetaanko %1 käyttöä muuttujalta '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Poista %1 lohkoa"; +Blockly.Msg["DIALOG_CANCEL"] = "Peru"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Passivoi lohko"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kaksoiskappale"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kahdenna kommentti"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktivoi lohko"; +Blockly.Msg["EXPAND_ALL"] = "Laajenna lohkot"; +Blockly.Msg["EXPAND_BLOCK"] = "Laajenna lohko"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ulkoiset syötteet"; +Blockly.Msg["HELP"] = "Apua"; +Blockly.Msg["INLINE_INPUTS"] = "Tuo syötteet"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Luo tyhjä lista"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Palauta tyhjä lista, pituus 0"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Listää, poista tai järjestele uudestaan osioita tässä lohkossa."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "luo lista"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Lisää kohde listaan."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Luo lista, jossa on mikä tahansa määrä kohteita."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ensimmäinen"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "nro (lopusta laskien)"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "nro"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "hae"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hae ja poista"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "viimeinen"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "satunnainen"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "poista"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Palauta ensimmäinen kohde listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Palauta kohde annetusta kohdasta listaa."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Palauttaa listan viimeisen kohteen."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Palauttaa satunnaisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Poistaa ja palauttaa ensimmäisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Poistaa ja palauttaa kohteen listan annetusta kohdasta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Poistaa ja palauttaa viimeisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Poistaa ja palauttaa satunnaisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Poistaa ensimmäisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Poistaa kohteen listalta annetusta kohtaa."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Poistaa viimeisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Poistaa satunnaisen kohteen listalta."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "päättyen kohtaan (lopusta laskien)"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "päättyen kohtaan"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "viimeinen"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "hae osalista alkaen alusta"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "hae osalista alkaen kohdasta (lopusta laskien)"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "hae osalista alkaen kohdasta"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Luo kopio määrätystä kohden listaa."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Numero %1 tarkoittaa listan viimeistä kohdetta."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Numero %1 tarkoittaa listan ensimmäistä kohdetta."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "etsi ensimmäinen esiintymä kohteelle"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "etsi viimeinen esiintymä kohteelle"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Palauttaa kohteen ensimmäisen/viimeisen esiintymän kohdan listassa. Palauttaa %1 jos kohdetta ei löydy."; +Blockly.Msg["LISTS_INLIST"] = "listassa"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 on tyhjä"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Palauttaa tosi, jos lista on tyhjä."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1:n pituus"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Palauttaa listan pituuden."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "luo lista, jossa kohde %1 toistuu %2 kertaa"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Luo listan, jossa annettu arvo toistuu määrätyn monta kertaa."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 takaperin"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Palauta käännetty kopio listasta."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kohteeksi"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "lisää kohtaan"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "aseta"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Lisää kohteen listan kärkeen."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Lisää kohteen annettuun kohtaan listassa."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Lisää kohteen listan loppuun."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Lisää kohteen satunnaiseen kohtaan listassa."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Asettaa listan ensimmäisen kohteen."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Asettaa kohteen annettuun kohtaan listassa."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Asettaa listan viimeisen kohteen."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Asettaa satunnaisen kohteen listassa."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "nouseva"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "laskeva"; +Blockly.Msg["LISTS_SORT_TITLE"] = "lajittele %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Lajittele kopio luettelosta."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "aakkosjärjestyksessä, välittämättä kirjainkoosta"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeerinen"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "aakkosjärjestys"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "tee lista tekstistä"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tee listasta teksti"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Yhdistä luettelon tekstit yhdeksi tekstiksi, erotettuina välimerkillä."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Jaa teksti osiin erotinmerkin perusteella ja järjestä osat listaksi."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "erottimen kanssa"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "epätosi"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Palauttaa joko tosi tai epätosi."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tosi"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fi.wikipedia.org/wiki/Ep%C3%A4yht%C3%A4l%C3%B6"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Palauta tosi, jos syötteet ovat keskenään samat."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Palauttaa tosi, jos ensimmäinen syöte on suurempi, kuin toinen."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Palauttaa tosi, jos ensimmäinen syöte on suurempi tai yhtä suuri, kuin toinen."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Palauttaa tosi, jos ensimmäinen syöte on pienempi, kuin toinen."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Palauttaa tosi, jos ensimmäinen syöte on pienempi tai yhtä suuri, kuin toinen."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Palauttaa tosi, jos syötteet eivät ole keskenään samoja."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ei %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Palauttaa tosi, jos syöte on epätosi. Palauttaa epätosi, jos syöte on tosi."; +Blockly.Msg["LOGIC_NULL"] = "ei mitään"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Palauttaa \"ei mitään\"-arvon."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ja"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "tai"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Palauttaa tosi, jos kummatkin syötteet ovat tosia."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Palauttaa tosi, jos ainakin yksi syötteistä on tosi."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "testi"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jos epätosi"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jos tosi"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Tarkistaa testin ehdon. Jos ehto on tosi, palauttaa \"jos tosi\" arvon, muuten palauttaa \"jos epätosi\" arvon."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "http://fi.wikipedia.org/wiki/Aritmetiikka"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Palauttaa kahden luvun summan."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Palauttaa jakolaskun osamäärän."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Palauttaa kahden luvun erotuksen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Palauttaa kertolaskun tulon."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Palauttaa ensimmäisen luvun korotettuna toisen luvun potenssiin."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan(X:%1,Y:%2)"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Palauta pisteen (X,Y) arkustangentti välillä -180–180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fi.wikipedia.org/wiki/Yhteenlasku"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "muuta %1 arvolla %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lisää arvo muuttujaan '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Palauttaa jonkin seuraavista vakioista: π (3.141…), e (2.718…), φ (1.618…), neliöjuuri(2) (1.414…), neliöjuuri(½) (0.707…), or ∞ (ääretön)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "rajoita %1 vähintään %2 enintään %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Rajoittaa arvon annetulle suljetulle välille."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "on jaollinen luvulla"; +Blockly.Msg["MATH_IS_EVEN"] = "on parillinen"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "on negatiivinen"; +Blockly.Msg["MATH_IS_ODD"] = "on pariton"; +Blockly.Msg["MATH_IS_POSITIVE"] = "on positiivinen"; +Blockly.Msg["MATH_IS_PRIME"] = "on alkuluku"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Tarkistaa onko numero parillinen, pariton, alkuluku, kokonaisluku, positiivinen, negatiivinen, tai jos se on jaollinen toisella luvulla. Palauttaa tosi tai epätosi."; +Blockly.Msg["MATH_IS_WHOLE"] = "on kokonaisluku"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 jakojäännös"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Palauttaa jakolaskun jakojäännöksen."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "⋅"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fi.wikipedia.org/wiki/Luku"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Luku."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "keskiarvo luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "suurin luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "keskiluku luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "pienin luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "tyyppiarvo luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "satunnainen valinta luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "keskihajonta luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa luvuista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Palauttaa aritmeettisen keskiarvon annetuista luvuista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Palauttaa suurimman annetuista luvuista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Palauttaa annettujen lukujen keskiluvun."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Palauttaa pienimmän annetuista luvuista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Palauttaa luettelon yleisimmistä luvuista annetussa listassa."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Palauttaa satunnaisesti valitun luvun annetuista luvuista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Palauttaa annettujen lukujen keskihajonnan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Palauttaa kaikkien annettujen lukujen summan."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fi.wikipedia.org/wiki/Satunnaisluku"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "satunnainen murtoluku"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Palauttaa satunnaisen luvun oikealta puoliavoimesta välistä [0.0, 1.0)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fi.wikipedia.org/wiki/Satunnaisluku"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "Palauttaa satunnaisen kokonaisluvun väliltä %1-%2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Palauttaa satunnaisen kokonaisluvun kahden annetun arvon suljetulta väliltä."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fi.wikipedia.org/wiki/Py%C3%B6rist%C3%A4minen"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "pyöristä"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "pyöristä alaspäin"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "pyöristä ylöspäin"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Pyöristää luvun ylös- tai alaspäin."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fi.wikipedia.org/wiki/Neli%C3%B6juuri"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "itseisarvo"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "neliöjuuri"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Palauttaa luvun itseisarvon."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Palauttaa e potenssiin luku."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Palauttaa luvun luonnollisen logaritmin."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Palauttaa luvun kymmenkantaisen logaritmin."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Palauttaa numeron vastaluvun."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Palauttaa 10 potenssiin luku."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Palauttaa luvun neliöjuuren."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fi.wikipedia.org/wiki/Trigonometrinen_funktio"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Palauttaa luvun arkuskosinin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Palauttaa luvun arkussinin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Palauttaa luvun arkustangentin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Palauttaa asteluvun (ei radiaanin) kosinin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Palauttaa asteluvun (ei radiaanin) sinin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Palauttaa asteluvun (ei radiaanin) tangentin."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Luo värimuuttuja..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Luo numeromuuttuja..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Luo merkkijonomuuttuja..."; +Blockly.Msg["NEW_VARIABLE"] = "Luo muuttuja..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Uuden muuttujan nimi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Uuden muuttujan tyyppi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "salli kommentit"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "parametrit:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fi.wikipedia.org/wiki/Aliohjelma"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Suorittaa käyttäjän määrittelemä funktio '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fi.wikipedia.org/wiki/Aliohjelma"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Suorittaa käyttäjän määrittelemän funktion '%1' ja käyttää sen tuotosta."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "parametrit:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Luo '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Kuvaile tämä funktio..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "tee jotain"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "tehdäksesi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Luo funktio, jolla ei ole tuotosta."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "palauta"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Luo funktio, jolla ei ole tuotosta."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Varoitus: tällä funktiolla on sama parametri useamman kerran."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Korosta funktion määritelmä"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jos arvo on tosi, palauta toinen arvo."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Varoitus: tätä lohkoa voi käyttää vain funktion määrityksessä."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "syötteen nimi:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Lisää sisääntulon funktioon."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "syötteet"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Lisää, poista tai järjestele uudelleen tämän toiminnon tulot."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Tee uudelleen"; +Blockly.Msg["REMOVE_COMMENT"] = "Poista kommentti"; +Blockly.Msg["RENAME_VARIABLE"] = "Nimeä uudelleen muuttuja..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Nimeä uudelleen kaikki '%1' muuttujaa:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "muuttujaan %1 lisää teksti %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Lisää tekstiä muuttujaan '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "pienet kirjaimet"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "isot alkukirjaimet"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "isot kirjaimet"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Palauttaa kopion tekstistä eri kirjainkoossa."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hae ensimmäinen kirjain"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "Hae kirjain nro (lopusta laskien)"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "Hae kirjain nro"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hae viimeinen kirjain"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hae satunnainen kirjain"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "tekstissä %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Palauttaa annetussa kohdassa olevan kirjaimen."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "laske määrä '%1' '%2' sisällä"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Laske kuinka monta kertaa jokin teksti esiintyy jossakin toisessa tekstissä."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Lisää kohteen tekstiin."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "liitä"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Lisää, poista tai uudelleen järjestä osioita tässä lohkossa."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "kirjaimeen nro (lopusta laskien)"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "kirjaimeen nro"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "viimeiseen kirjaimeen"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "merkkijonosta"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "hae osa alkaen ensimmäisestä kirjaimesta"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hae osa alkaen kirjaimesta nro (lopusta laskien)"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hae osa alkaen kirjaimesta nro"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Palauttaa määrätyn osan tekstistä."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "etsi ensimmäinen esiintymä merkkijonolle"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "etsi viimeinen esiintymä merkkijonolle"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekstissä %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Palauttaa ensin annetun tekstin ensimmäisen/viimeisen esiintymän osoitteen toisessa tekstissä. Palauttaa osoitteen %1 jos tekstiä ei löytynyt."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 on tyhjä"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Palauttaa tosi, jos annettu teksti on tyhjä."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "luo teksti"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Luo merkkijonon liittämällä yhteen minkä tahansa määrän kohteita."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1:n pituus"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Palauttaa annetussa tekstissä olevien merkkien määrän (välilyönnit mukaan lukien)."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "tulosta %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Tulostaa annetun tekstin, numeron tai muun arvon."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Kehottaa käyttäjää syöttämään numeron."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Kehottaa käyttäjää syöttämään tekstiä."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "käyttäen annettua viestiä, kehottaa syöttämään numeron"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "käyttäen annettua viestiä, kehottaa syöttämään tekstiä"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "Korvaa teksti %1 tekstillä %2 tekstissä %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Korvaa tietyn tekstin ilmentymät tekstin sisällä."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 takaperin"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Muuttaa tekstin kirjainten järjestyksen toisin päin."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fi.wikipedia.org/wiki/Merkkijono"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Kirjain, sana tai rivi tekstiä."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "poistaa välilyönnit kummaltakin puolelta"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "poistaa välilyönnit vasemmalta puolelta"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "poistaa välilyönnit oikealta puolelta"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Palauttaa kopion tekstistä siten, että välilyönnit on poistettu yhdestä tai molemmista päistä."; +Blockly.Msg["TODAY"] = "Tänään"; +Blockly.Msg["UNDO"] = "Kumoa"; +Blockly.Msg["UNNAMED_KEY"] = "nimetön"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "kohde"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Luo 'aseta %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Palauttaa muuttujan arvon."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "aseta %1 arvoksi %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Luo 'hae %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Asettaa muutujan arvoksi annetun syötteen."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Muuttuja nimeltään '%1' on jo olemassa."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Muuttuja nimeltä '%1' on jo olemassa toiselle tyypille: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklyn työnäkymä"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sano jotakin..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/fo.js b/blockly/msg/fo.js new file mode 100644 index 00000000000..60ea0fa3651 --- /dev/null +++ b/blockly/msg/fo.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Viðmerk"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kann ikki strika variabulin '%1', tí hann er partur av allýsingini av funktiónini '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Broyt virði:"; +Blockly.Msg["CLEAN_UP"] = "Rudda blokkar"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Fell blokkar saman"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Fell blokk saman"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Strika allar %1 blokkar?"; +Blockly.Msg["DELETE_BLOCK"] = "Strika blokk"; +Blockly.Msg["DELETE_VARIABLE"] = "Strika '%1' variabulin"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Strika %1 brúk av '%2' variablinum?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Strika %1 blokkar"; +Blockly.Msg["DIALOG_CANCEL"] = "Angra"; +Blockly.Msg["DIALOG_OK"] = "Í lagi"; +Blockly.Msg["DISABLE_BLOCK"] = "Ger blokk óvirknan"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Tvífalda"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Tvífalda viðmerking"; +Blockly.Msg["ENABLE_BLOCK"] = "Ger blokk virknan"; +Blockly.Msg["EXPAND_ALL"] = "Víðka blokkar"; +Blockly.Msg["EXPAND_BLOCK"] = "Víðka blokk"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Innputt uttanifrá"; +Blockly.Msg["HELP"] = "Hjálp"; +Blockly.Msg["INLINE_INPUTS"] = "Innlinju innputt"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ger litvariabul..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ger talvariabul..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ger strongvariabul..."; +Blockly.Msg["NEW_VARIABLE"] = "Ger variabul..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Navn á nýggjum variabli:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nýtt variabulslag:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Ger umaftur"; +Blockly.Msg["REMOVE_COMMENT"] = "Strika viðmerking"; +Blockly.Msg["RENAME_VARIABLE"] = "Broyt navn á variabli..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Broyt navnið á øllum '%1' variablum til:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Í dag"; +Blockly.Msg["UNDO"] = "Angra"; +Blockly.Msg["UNNAMED_KEY"] = "ónevnt"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "lutur"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Ein variabul við navninum '%1' finst longu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Ein variabul við navninum '%1' finst longu fyri eina aðra typu: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/fr.js b/blockly/msg/fr.js new file mode 100644 index 00000000000..868fea7a185 --- /dev/null +++ b/blockly/msg/fr.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ajouter un commentaire"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Impossible de supprimer la variable « %1 » parce qu’elle fait partie de la définition de la fonction « %2 »"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modifier la valeur :"; +Blockly.Msg["CLEAN_UP"] = "Nettoyer les blocs"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Les blocs repliés contiennent des avertissements."; +Blockly.Msg["COLLAPSE_ALL"] = "Réduire les blocs"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Réduire le bloc"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "couleur 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "couleur 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "taux"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mélanger"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mélange deux couleurs dans une proportion donnée (de 0.0 à 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fr.wikipedia.org/wiki/Couleur"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choisir une couleur dans la palette."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "couleur aléatoire"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choisir une couleur au hasard."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "bleu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "vert"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rouge"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorier en"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Créer une couleur avec la quantité spécifiée de rouge, vert et bleu. Les valeurs doivent être comprises entre 0 et 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "quitter la boucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "passer à l’itération de boucle suivante"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sortir de la boucle englobante."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sauter le reste de cette boucle, et poursuivre avec l’itération suivante."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Attention : ce bloc ne devrait être utilisé que dans une boucle."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pour chaque élément %1 dans la liste %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pour chaque élément d’une liste, assigner la valeur de l’élément à la variable « %1 », puis exécuter des instructions."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "compter avec %1 de %2 à %3 par %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Faire prendre successivement à la variable « %1 » les valeurs entre deux nombres de début et de fin par incrément du pas spécifié et exécuter les instructions spécifiées."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ajouter une condition au bloc conditionnel."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ajouter une condition finale déclenchée dans tous les autres cas au bloc conditionnel."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ajouter, supprimer ou réordonner les sections pour reconfigurer ce bloc conditionnel."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sinon"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sinon si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si une valeur est vraie, alors exécuter certaines instructions."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si une valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, exécuter le second bloc d’instructions."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instructions."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instruction. Si aucune des valeurs n’est vraie, exécuter le dernier bloc d’instruction."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://fr.wikipedia.org/wiki/Boucle_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "faire"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "répéter %1 fois"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Exécuter des instructions plusieurs fois."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "répéter jusqu’à ce que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "répéter tant que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Tant qu’une valeur est fausse, alors exécuter des instructions."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Tant qu’une valeur est vraie, alors exécuter des instructions."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Supprimer ces %1 blocs ?"; +Blockly.Msg["DELETE_BLOCK"] = "Supprimer le bloc"; +Blockly.Msg["DELETE_VARIABLE"] = "Supprimer la variable « %1 »"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Supprimer %1 utilisations de la variable « %2 » ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Supprimer %1 blocs"; +Blockly.Msg["DIALOG_CANCEL"] = "Annuler"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Désactiver le bloc"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliquer"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliquer le commentaire"; +Blockly.Msg["ENABLE_BLOCK"] = "Activer le bloc"; +Blockly.Msg["EXPAND_ALL"] = "Développer les blocs"; +Blockly.Msg["EXPAND_BLOCK"] = "Développer le bloc"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entrées externes"; +Blockly.Msg["HELP"] = "Aide"; +Blockly.Msg["INLINE_INPUTS"] = "Entrées en ligne"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "créer une liste vide"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Renvoyer une liste, de longueur 0, ne contenant aucun enregistrement de données"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Ajouter, supprimer, ou réordonner les sections pour reconfigurer ce bloc de liste."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "créer une liste avec"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ajouter un élément à la liste."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Créer une liste avec un nombre quelconque d’éléments."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "premier"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "n° depuis la fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "nº"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obtenir"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obtenir et supprimer"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "dernier"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "au hasard"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "supprimer"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Renvoie le premier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Renvoie l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Renvoie le dernier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Renvoie un élément au hasard dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Supprime et renvoie le premier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Supprime et renvoie l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Supprime et renvoie le dernier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Supprime et renvoie un élément au hasard dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Supprime le premier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Supprime l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Supprime le dernier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Supprime un élément au hasard dans une liste."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "jusqu’au n° depuis la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "jusqu’au n°"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "jusqu’à la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtenir la sous-liste depuis le début"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtenir la sous-liste depuis le n° depuis la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtenir la sous-liste depuis le n°"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crée une copie de la partie spécifiée d’une liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 est le dernier élément."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 est le premier élément."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trouver la première occurrence de l’élément"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trouver la dernière occurrence de l’élément"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Renvoie l’index de la première/dernière occurrence de l’élément dans la liste. Renvoie %1 si l’élément n’est pas trouvé."; +Blockly.Msg["LISTS_INLIST"] = "dans la liste"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 est vide"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Renvoie vrai si la liste est vide."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longueur de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Renvoie la longueur d’une liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "créer une liste avec l’élément %1 répété %2 fois"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crée une liste consistant en la valeur fournie répétée le nombre de fois indiqué."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverser %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverser la copie d’une liste."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "comme"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insérer en"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "mettre"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insère l’élément au début d’une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insère l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ajoute l’élément à la fin d’une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insère l’élément au hasard dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Définit le premier élément dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Définit l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Définit le dernier élément dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Définit un élément au hasard dans une liste."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "croissant"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "décroissant"; +Blockly.Msg["LISTS_SORT_TITLE"] = "trier %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Trier une copie d’une liste."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabétique, en ignorant la casse"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérique"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabétique"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "créer une liste depuis le texte"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "créer un texte depuis la liste"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Réunir une liste de textes en un seul, en les joignant par un séparateur."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Couper un texte en une liste de textes, en coupant à chaque séparateur."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "avec séparateur"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "faux"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Renvoie soit vrai soit faux."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "vrai"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fr.wikipedia.org/wiki/In%C3%A9galit%C3%A9_(math%C3%A9matiques)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Renvoyer vrai si les deux entrées sont égales."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Renvoyer vrai si la première entrée est plus grande que la seconde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Renvoyer true si la première entrée est supérieure ou égale à la seconde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Renvoyer vrai si la première entrée est plus petite que la seconde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Renvoyer vrai si la première entrée est plus petite ou égale à la seconde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Renvoyer vrai si les deux entrées sont différentes."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Renvoie vrai si l’entrée est fausse. Renvoie faux si l’entrée est vraie."; +Blockly.Msg["LOGIC_NULL"] = "nul"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Renvoie nul."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "et"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Renvoyer vrai si les deux entrées sont vraies."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Renvoyer vrai si au moins une des entrées est vraie."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F%3A"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si faux"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si vrai"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Vérifie la condition indiquée dans « test ». Si elle est vraie, renvoie la valeur « si vrai » ; sinon renvoie la valeur « si faux »."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://fr.wikipedia.org/wiki/Arithm%C3%A9tique"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Renvoie la somme des deux nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Renvoie le quotient des deux nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Renvoie la différence des deux nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Renvoie le produit des deux nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Renvoie le premier nombre élevé à la puissance du second."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://fr.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de (x : %1 ; y : %2)"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Renvoie l’arc-tangente du point (X, Y) en degrés entre -180 et 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fr.wikipedia.org/wiki/Idiome_de_programmation"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "incrémenter %1 de %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ajouter un nombre à la variable « %1 »."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://fr.wikipedia.org/wiki/Table_de_constantes_math%C3%A9matiques"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Renvoie une des constantes courantes : π (3,141...), e (2,718...), φ (nom d’or : ½(1+√5) = 1,618…), √2 (1,414...), √½ (0,707...), ou ∞ (infini)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "contraindre %1 entre %2 et %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Contraindre un nombre à rester entre les limites spécifiées (incluses)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "est divisible par"; +Blockly.Msg["MATH_IS_EVEN"] = "est pair"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "est négatif"; +Blockly.Msg["MATH_IS_ODD"] = "est impair"; +Blockly.Msg["MATH_IS_POSITIVE"] = "est positif"; +Blockly.Msg["MATH_IS_PRIME"] = "est premier"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Vérifier si un nombre est pair, impair, premier, entier, positif, négatif ou s’il est divisible par un certain nombre. Renvoie vrai ou faux."; +Blockly.Msg["MATH_IS_WHOLE"] = "est entier"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://fr.wikipedia.org/wiki/Modulo_(op%C3%A9ration)"; +Blockly.Msg["MATH_MODULO_TITLE"] = "reste de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Renvoyer le reste de la division euclidienne des deux nombres."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fr.wikipedia.org/wiki/Nombre"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nombre."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "moyenne de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximum de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "médiane de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "majoritaires de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "élément aléatoire de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "écart type de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "somme de la liste"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Renvoyer la moyenne (arithmétique) des valeurs numériques dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Renvoyer le plus grand nombre dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Renvoyer le nombre médian de la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Renvoyer le plus petit nombre dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Renvoyer une liste d’un ou plusieurs éléments les plus fréquents dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Renvoyer un élément au hasard dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Renvoyer l’écart type de la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Renvoyer la somme de tous les nombres dans la liste."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraction aléatoire"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Renvoyer une fraction aléatoire entre 0,0 (inclus) et 1,0 (exclus)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "entier aléatoire entre %1 et %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Renvoyer un entier aléatoire entre les deux limites spécifiées, incluses."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrondir"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrondir par défaut (à l’entier inférieur le plus proche)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrondir par excès (à l’entier supérieur le plus proche)"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrondir un nombre au-dessus ou au-dessous."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fr.wikipedia.org/wiki/Racine_carr%C3%A9e"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "valeur absolue"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "racine carrée"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Renvoie la valeur absolue d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Renvoie e à la puissance d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Renvoie le logarithme naturel d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Renvoie le logarithme décimal d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Renvoie l’opposé d’un nombre"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Renvoie 10 à la puissance d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Renvoie la racine carrée d’un nombre."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "−"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fr.wikipedia.org/wiki/Fonction_trigonom%C3%A9trique"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Renvoie l’arccosinus d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Renvoie l’arcsinus d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Renvoie l’arctangente d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Renvoie le cosinus d’un angle en degrés (pas en radians)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Renvoie le sinus d’un angle en degrés (pas en radians)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Renvoie la tangente d’un angle en degrés (pas en radians)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Créer une variable de couleur..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Créer une variable numérique..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Créer une variable de chaîne..."; +Blockly.Msg["NEW_VARIABLE"] = "Créer une variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nom de la nouvelle variable :"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nouveau type de variable :"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "autoriser les ordres"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "avec :"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Exécuter la fonction « %1 » définie par l’utilisateur."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Exécuter la fonction « %1 » définie par l’utilisateur et utiliser son résultat."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "avec :"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Créer « %1 »"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Décrivez cette fonction..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "faire quelque chose"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "pour"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crée une fonction sans sortie."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retourner"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crée une fonction avec une sortie."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Attention : cette fonction a des paramètres en doublon."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Surligner la définition de la fonction"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si une valeur est vraie, alors renvoyer une seconde valeur."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Attention : ce bloc ne peut être utilisé que dans une définition de fonction."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nom de l’entrée :"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ajouter une entrée à la fonction."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entrées"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Ajouter, supprimer, ou réarranger les entrées de cette fonction."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Refaire"; +Blockly.Msg["REMOVE_COMMENT"] = "Supprimer un commentaire"; +Blockly.Msg["RENAME_VARIABLE"] = "Renommer la variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renommer toutes les variables « %1 » en :"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "ajouter le texte %2 à %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Ajouter du texte à la variable « %1 »."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "en minuscules"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "en Capitale Initiale Pour Chaque Mot"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "en MAJUSCULES"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Renvoyer une copie du texte dans une autre casse."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obtenir la première lettre"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obtenir la lettre nº (depuis la fin)"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obtenir la lettre nº"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obtenir la dernière lettre"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obtenir une lettre au hasard"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "%2 dans le texte %1"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Renvoie la lettre à la position indiquée."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "nombre %1 sur %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Compter combien de fois un texte donné apparaît dans un autre."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ajouter un élément au texte."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "joindre"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Ajouter, supprimer, ou réordonner des sections pour reconfigurer ce bloc de texte."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "jusqu’à la lettre nº (depuis la fin)"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "jusqu’à la lettre nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "jusqu’à la dernière lettre"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "dans le texte"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obtenir la sous-chaîne depuis la première lettre"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obtenir la sous-chaîne depuis la lettre nº (depuis la fin)"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obtenir la sous-chaîne depuis la lettre nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Renvoie une partie indiquée du texte."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trouver la première occurrence de la chaîne"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trouver la dernière occurrence du texte"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "%2 %3 dans le texte %1"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Renvoie l’index de la première/dernière occurrence de la première chaîne dans la seconde. Renvoie %1 si la chaîne n’est pas trouvée."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 est vide"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Renvoie vrai si le texte fourni est vide."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "créer un texte avec"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Créer un morceau de texte en joignant bout à bout et successivement un nombre quelconque d’éléments dans le même ordre."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longueur de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Renvoie le nombre de lettres (chiffres, ponctuations, symboles et espaces compris) dans le texte fourni."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "afficher %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Afficher le texte, le nombre ou une autre valeur spécifiée."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Demander un nombre à l’utilisateur."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Demander un texte à l’utilisateur."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "demander un nombre avec un message"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "demander un texte avec un message"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "remplacer %1 par %2 dans %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Remplacer toutes les occurrences d’un texte par un autre."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "renverser %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Renverse l’ordre des caractères dans le texte."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fr.wikipedia.org/wiki/Cha%C3%AEne_de_caract%C3%A8res"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Une lettre, un mot ou une ligne de texte."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "supprimer les espaces des deux côtés de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "supprimer les espaces du côté gauche de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "supprimer les espaces du côté droit de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Renvoyer une copie du texte avec les espaces supprimés d’un ou des deux bouts."; +Blockly.Msg["TODAY"] = "Aujourd'hui"; +Blockly.Msg["UNDO"] = "Annuler"; +Blockly.Msg["UNNAMED_KEY"] = "non nommé"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "élément"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Créer « définir %1 »"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Renvoie la valeur de cette variable."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "définir %1 à %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Créer « obtenir %1 »"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Définit cette variable pour qu’elle soit égale à la valeur de l’entrée."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Une variable nommée « %1 » existe déjà."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Une variable nommée « %1 » existe déjà pour un autre type : « %2 »."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espace de travail de Blocky"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Expliquez quelque chose..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/frr.js b/blockly/msg/frr.js new file mode 100644 index 00000000000..1147f06d6df --- /dev/null +++ b/blockly/msg/frr.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/gl.js b/blockly/msg/gl.js new file mode 100644 index 00000000000..de666c06f6b --- /dev/null +++ b/blockly/msg/gl.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Engadir un comentario"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar o valor:"; +Blockly.Msg["CLEAN_UP"] = "Limpar os bloques"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Contraer os bloques"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Contraer o bloque"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporción"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mesturar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mestura dúas cores ca proporción indicada (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://gl.wikipedia.org/wiki/Cor"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolle unha cor da paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor ó chou"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolle unha cor ao chou."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "vermello"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorar con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senón"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mais se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "facer"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faga algunhas instrucións varias veces."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir ata"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mentres"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Queres eliminar os %1 bloques?"; +Blockly.Msg["DELETE_BLOCK"] = "Borrar o bloque"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Borrar %1 bloques"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; +Blockly.Msg["DIALOG_OK"] = "Aceptar"; +Blockly.Msg["DISABLE_BLOCK"] = "Desactivar o bloque"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar o comentario"; +Blockly.Msg["ENABLE_BLOCK"] = "Activar o bloque"; +Blockly.Msg["EXPAND_ALL"] = "Expandir os bloques"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir o bloque"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas"; +Blockly.Msg["HELP"] = "Axuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas en liña"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listaxe"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "derradeiro"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ó chou"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o derradeiro elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "na listaxe"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 atópase baleira"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retona verdadeiro se a listaxe atópase baleira."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir en"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordear unha copia dunha listaxe."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabética, iñorar maiúsculas/minúsculas"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérica"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabética"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "nulo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retornar nulo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "proba"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://gl.wikipedia.org/wiki/Aritmética"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a suma de dous números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o cociente da división de dous números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferenza de dous números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto de dous números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado á potencia do segundo número."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "mudar %1 por %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Suma un número á variábel '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://gl.wikipedia.org/wiki/Constante_matemática"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna unha das constantes comúns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisíbel por"; +Blockly.Msg["MATH_IS_EVEN"] = "é par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo"; +Blockly.Msg["MATH_IS_ODD"] = "é impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "é primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se un número é par, impar, primo, enteiro, positivo, negativo, ou se é divisíbel por outro número. Retorna verdadeiro ou falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "é enteiro"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un número."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media dunha listaxe"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior dunha listaxe"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor dunha listaxe"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma da listaxe"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da listaxe"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da listaxe."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a suma de tódolos números da listaxe."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://gl.wikipedia.org/wiki/Arredondamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda cara abaixo"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda cara arriba"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda un número cara enriba ou cara abaixo."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://gl.wikipedia.org/wiki/Raíz_cadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz cadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado á potencia dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logarítmo natural dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logarítmo en base 10 dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado á potencia dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raíz cadrada dun número."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://gl.m.wikipedia.org/wiki/Función_trigonométrica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco coseno dun número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno dum número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tanxente dun número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o coseno dun grao (non radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno dun grao (non radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tanxente dun grao (non radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crar unha variábel de cadea..."; +Blockly.Msg["NEW_VARIABLE"] = "Crear a variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "facer algo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "cara"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retornar"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Refacer"; +Blockly.Msg["REMOVE_COMMENT"] = "Eliminar o comentario"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomear a variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variables \"%1\" a:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Hoxe"; +Blockly.Msg["UNDO"] = "Desfacer"; +Blockly.Msg["UNNAMED_KEY"] = "innominada"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/gn.js b/blockly/msg/gn.js new file mode 100644 index 00000000000..60de5590fef --- /dev/null +++ b/blockly/msg/gn.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ñeimo'ã"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Tepy ñemoambueː"; +Blockly.Msg["CLEAN_UP"] = "Toñemopotĩ Atýra kuéra"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Toñemomichĩ Atýra kuéra"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Toñemomichĩ Atýra"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "sa'y 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "sa'y 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "jojaha"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mbopara"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "hovy"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "hovyũ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "pytã"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ejapo hag̃ua peteĩ sa'y eñembopara pytã, hovyũ ha hovy. Opa papaha oĩ va'erã 0 ha 100 imbytépe."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "japo"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Reipe'asépa opa %1 atýra?"; +Blockly.Msg["DELETE_BLOCK"] = "Tojeipe'a Atýra"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Tojeipe'a %1 Atýra"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "Oĩma"; +Blockly.Msg["DISABLE_BLOCK"] = "Toñemboiko'ỹ Atýra"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Momokõi"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Toñemokõi Ñeimo'ã"; +Blockly.Msg["ENABLE_BLOCK"] = "Toñemboiko Atýra"; +Blockly.Msg["EXPAND_ALL"] = "Toñembotuicha Atýra kuéra"; +Blockly.Msg["EXPAND_BLOCK"] = "Toñembotuicha Atýra"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Jeikeha Okapegua"; +Blockly.Msg["HELP"] = "Pytyvõhára"; +Blockly.Msg["INLINE_INPUTS"] = "Jeikeha Pypegua"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "tysýi"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "achengety rupi, taiguasu ha tai'i jehecha'ỹre"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "papaha rupi"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "achengety rupi"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "japu"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "añete"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "mba'evegua"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "ha"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "térã"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ñeha'ã"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ijapúrõ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "iñañetérõ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://es.wikipedia.org/wiki/Aritmética"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Jey"; +Blockly.Msg["REMOVE_COMMENT"] = "Toipe'a Ñeimo'ã"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 inandi"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Ko ára"; +Blockly.Msg["UNDO"] = "Tojehara"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "temimoĩmby"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/gor.js b/blockly/msg/gor.js new file mode 100644 index 00000000000..03be61b6731 --- /dev/null +++ b/blockly/msg/gor.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Moduhenga tuladu"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ubawa nilai"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Mohe'uto Blok"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Mohe'uto Blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "laku 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "laku 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "rasio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "Ulawuwa"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mongulawu dulo laku pe'eenta wolo rasio (0.0-1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Laku"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Piliya laku lonto daputari lo laku"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "Laku acak"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Piliya laku acak"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "wahu'ente"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "moyidu"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "meela"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "wolo laku"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Pohutuwa laku wolo jumula u tilantu monto u meela, moyidu wawu wahu'ente. Nga'amila musi o woolota 0 wawu 100"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Mokaluwari lonto u'uulangiya"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "uweewo"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "wonu uweewo"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "wonu"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "pohutuwa"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulangiya %1 kali"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulangiya sambe"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Ulangiya wonu"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Wonu nilai diya banari, pohutuwa parenta"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Wonu nilai banari, pohutuwa po'ongoolo"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Luluta nga'amila %1 blocks?"; +Blockly.Msg["DELETE_BLOCK"] = "Moluluto Blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Moluluto %1 Blok"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "Moberenti Blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Momulayi Blok"; +Blockly.Msg["EXPAND_ALL"] = "Lolade Blok"; +Blockly.Msg["EXPAND_BLOCK"] = "Lolade Blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "tuwanga lonto eksternal"; +Blockly.Msg["HELP"] = "Tuulungi"; +Blockly.Msg["INLINE_INPUTS"] = "tuwanga lo inline"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "tala"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "banari"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "diila %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "noolo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "wawu"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "meyalo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "yimontalo"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "wonu tala"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "wonu banari"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Noomoro"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "akar pangkat dua"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Variabel bohu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Tanggulo Variabel bohu"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Pohutu '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Mohinggi tuladu"; +Blockly.Msg["RENAME_VARIABLE"] = "Tangguli uulangi variabel"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tangguli uulangi nga'amila % variabel ode:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "mowali hurupu kiki'o"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "mowali HURUPU DAMANGO"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hama tulade bungaliyo"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hama hurupu # monto wuleya"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hama hurupu #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hama tulade pulitiyo"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hama tulade ambulati"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "wayito"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Duhengi, yinggila, meyalo susungiya ulangi tuladu blok."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ode tuladu # monto wuleya"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ode hurupu"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to tulade pulitiyo"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "to delomo tuladu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "lolohe u yilowali bohuliyo to delomo tuladu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "lolohe u yilowali pulitiyo to delomo tuladu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 koosongi"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Pohalinga banari wonu tuladu u sadi-sadia koosongi."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "haya'o lo %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Engontiye"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ha.js b/blockly/msg/ha.js new file mode 100644 index 00000000000..924657ea85c --- /dev/null +++ b/blockly/msg/ha.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Daɗa Sharhi"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "An kasa goge siffa '%1' sabo da tana daga sashi na bayanin aikin '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Canza kima:"; +Blockly.Msg["CLEAN_UP"] = "A share Bululluka"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Rusa Bululluka"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Rusa Bulo"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "launi na 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "launi na 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "lissafi"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "gauraya"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Ana gauraya launuka biyu tare da wani lissafi da aka bayar (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Zaɓi launi daga faifan launuka."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "launuka da aka hargitsa"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zaɓi launi daga wanɗanda aka hargitsa."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "shuɗi"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "kore"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ja"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "launi tare da"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ƙirƙiri launi tare da wani yawa da aka fayyace na ja, kore, da shuɗi. Duk kimomin dole su zamo tsakanin 0 da 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ɓalle daga cikin kewaye"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fara da maimaitawa ta gaba ta kewaye"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ɓalle daga kewaye wanda ya ƙunsa."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Tsallake sauran wannan kewaye, sannan kuma a ci gaba da maimaitawa ta gaba ta kewaye."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Gargaɗi: Wannan bulon za a iya amfani da shi ne kawai a wajen kewaye."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ga kowane abu %1 a cikin jeri %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Ga kowane abu a jeri, saka siffar '%1' zuwa ga abin, sannan a maimaita wasu lambobin."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Ƙirga da %1 daga %2 zuwa %3 ƙara %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Sami siffar '%1' ta ɗauki kowa ce kima daga lambar da aka fara da ita zuwa lambar da aka ƙare da ita, ana ƙirgawa daga wata tazara da aka fayyace. Maimaita wannan lamba a kowane lokaci:"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Daɗa sharaɗi zuwa idan bulo."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Daɗa na ƙarshe, sharaɗin kama-duk zuwa idan bulo."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan idan bulo."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "wani"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "wani idan"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "idan"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Idan kima gaskiya ce, to a yi wasu maganganu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Idan kimar gaskiya ce, to a yi bulo na farko na maganganu. Idan ba haka ba, yi bulo na biyu na maganganu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun. Idan babu kimar da take gaskiya, yi bulo na ƙarshe na maganganun."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "yi"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "maimaita sau %1"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Yi wasu bayanai sau da dama."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "maimaita har sai"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "maimaita yayin da"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Yayin da wata kima ta zama ƙarya, maimaita wasu lambobi."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Yayin da wata kima ta zama gaskiya, maimaita wasu lambobi."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "A goge duk bululluka %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Goge Bulo"; +Blockly.Msg["DELETE_VARIABLE"] = "A goge siffar '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "A goge amfanunnukan %1 na siffar '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Goge Bulo %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Kashe Bulo"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Yi kwafi"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kwafi Sharhi"; +Blockly.Msg["ENABLE_BLOCK"] = "Kunna Bulo"; +Blockly.Msg["EXPAND_ALL"] = "Faɗaɗa Bulullaka"; +Blockly.Msg["EXPAND_BLOCK"] = "Faɗaɗa Bulo"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Bayanan Waje"; +Blockly.Msg["HELP"] = "Taimako"; +Blockly.Msg["INLINE_INPUTS"] = "Bayanai na Cikin layi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ƙirƙiri jeri wanda babu komai"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ya dawo da jeri, na tsawon 0, wanda bai ƙunshi ajiye bayanai ba"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "jeri"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ƙirƙiri jeri"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Daɗa wani kaya zuwa jerin."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ƙiƙiri jeri tare da kowace lamba na kayayyaki."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "farko"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# daga ƙarshe"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "samowa"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "samowa da cirewa"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ƙarshe"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "bazuwa"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "cire"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Ya dawo da wani abu na farko a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ya dawo da abin a wani gurbi da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Ya dawo da wani abu na ƙarshe a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Ya dawo da wani abu a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Ya cire kuma ya dawo da abin farko a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Ya cire kuma ya dawo da abin a gurbin da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Ya cire kuma ya dawo da abin ƙarshe a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Ya cire kuma ya dawo abu mai bazuwa a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Ya cire abin farko a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Ya cire wani abin a wani gurbi da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Ya cire abin ƙarshe a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Ya cire abu mai bazuwa a cikin jeri."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "zuwa # daga ƙarshe"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "zuwa #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "zuwa ƙarshe"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "sami sashin jeri daga farko"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "sami sashin jeri daga # daga ƙarshe"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "sami sashin jeri daga #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ƙirƙiri kwafi na ɓangaren da aka fayyace daga wani jeri."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 shine wani abu na ƙarshe."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 shine wani abu na farko."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "nemo afkuwar farko daga wani abu"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "nemo afkuwar ƙarshe daga wani abu"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Ya dawo da jeri na farkon/ƙarshen afkuwa na wani abu a cikin jerin. Ya dawo da %1 idan ba a sami wani abin ba."; +Blockly.Msg["LISTS_INLIST"] = "a jeri"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 babu komai"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ya dawo gaskiya idan jerin babu komai."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "tsawo na %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Ya dawo da tsawon wani jeri."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ƙirƙiri jeri tare da wani abu %1 da aka maimaita sau %2"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ya ƙirƙiri jeri da ya ƙunshi wata kima da aka bayar da aka maimaita yawan lambar da aka fayyace."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "juya %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Sauya tsarin kwafi daga jeri."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "a matsayin"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "cusa a"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "shirya"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ya cusa wani abin a farko na jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ya cusa wani abin a wani gurbi da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ya maƙala wani abin a ƙarshe na jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Cusa wani abu ta hanyar bazawa a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ya shirya abin farko a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ya shirya wani abin a wani gurbi da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ya shirya abin ƙarshe a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ya shirya abu mai bazuwa a cikin jeri."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "hawa"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "sauka"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ware %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ware kwafi na jeri."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "na haruffa, a=A"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "na lamba"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "na haruffa"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "yi jeri daga rubutu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "yi rubutu daga jeri"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Haɗa jerin rubututtuka zuwa rubutu guda ɗaya, a raba tare da mai raba rubutu."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tsaga rubutu zuwa jerin rubututtuka, a karya a kowane mai raba kalmomi."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "tare da mai raba kalmomi"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ƙarya"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ya koma kodai gaskiya ko ƙarya."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "gaskiya"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Koma gaskiya idan duk bayanan sun yi dai dai da juna."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Koma gaskiya idan bayanin farko ya fi bayani na biyu yawa."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Koma gaskiya idan bayanin farko ya fi ko ya yi dai dai da bayani na biyu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Koma gaskiya idan bayanin farko ya fi na biyu ƙanƙanta."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Koma gaskiya idan bayanin farko ya fi ƙanƙanta ko dai dai da bayani na biyu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Koma gaskiya idan duk bayanan ba su yi dai dai da juna ba."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ba %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Koma gaskiya idan bayanin ƙarya ne. Koma ƙarya idan bayanin gaskiya ne."; +Blockly.Msg["LOGIC_NULL"] = "maras amfani"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Ya koma maras amfani."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "kuma"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ko"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Koma gaskiya idan duk bayanan gaskiya ne."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Koma gaskiya idan a ƙalla ɗayan bayanan gaskiya ne."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "gwaji"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "idan ƙarya ne"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "idan gaskiya ne"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Duba sharaɗin a cikin 'gwaji'. Idan sharaɗin gaskiya ne, mayar da kimar 'idan gaskiya ne'; idan ba haka ba mayar da kimar 'idan ƙarya ne'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Dawo da jumlar lambobin guda biyu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Dawo da sakamakon lambobin guda biyu bayan an raba su da juna."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Dawo da bambancin lambobin guda biyu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Dawo da ruɓin lambobin guda biyu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Dawo da lambar farko wadda aka ɗaga ta zuwa ƙarfin lamba ta biyu."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 na X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Dawo da arctangent na tsinin (X, Y) a gwargwado daga -180 zuwa 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "canza %1 da %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Daɗa wata lamba zuwa siffa '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Dawo da ɗaya daga cikin sanannen zaunannen lissafi: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ko ∞ (maras iyaka)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ƙarfi %1 ƙasa %2 sama %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Tsare lamba tsakanin lambobi da aka fayyace masu ƙarama da babbar kima (haɗawa)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "lamba ce da za a iya rabawa da"; +Blockly.Msg["MATH_IS_EVEN"] = "lamba da za a iya rabawa da biyu"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "lamba ce da bata kai sufuli ba"; +Blockly.Msg["MATH_IS_ODD"] = "lamba ce da ba za a iya rabawa da biyu ba"; +Blockly.Msg["MATH_IS_POSITIVE"] = "lamba ce da tafi sufuli"; +Blockly.Msg["MATH_IS_PRIME"] = "lamba ce da kawai za a iya rabawa da kanta"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Duba idan lamba ce da za a iya rabawa da biyu, lamba wadda ba za a iya rabawa da biyu ba, lamba ce kawai da za a iya rabawa da kanta, lamba ce cikakkiya,lamba ce da tafi sufuli, lamba ce da bata kai sufuli ba, lamba ce da za a iya rabawa da wata lamba. Ta dawo da gaskiya ko ƙarya."; +Blockly.Msg["MATH_IS_WHOLE"] = "lamba ce cikakkiya"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "saura daga raba %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Dawo da saura daga raba lambobin guda biyu."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Lambda."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Tsaka-tsaki na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "cikakke na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "tsakiyar jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Taƙaicewa na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mai yawan bayyana na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "bazuwar kaya na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "matakan bambance-bambance na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "jumlar jeri"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Dawo da tsaka-tsaki (matsakaicin lissafi) na kimar lambobi dake cikin jerin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Dawo da babbar lamba dake cikin jerin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Dawo da lambar tsakiya ta cikin jeri."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Dawo da lambobi ƙanana a cikin jerin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Dawo da jeri na abubuwan da suka fi bayyana a cikin jeri."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Dawo da bazuwar kaya daga jerin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Dawo da matakan bambance-bambance na jeri."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Dawo da jumlar duk lambobi na cikin jerin."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "ɓangare mai buzuwa"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Dawo da ɓangare mai bazuwa tsakanin 0.0 (haɗawa) da 1.0 (rabewa)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "bazuwar cikakkiyar lamba daga %1 zuwa %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Dawo da bazuwar cikakkiyar lamba tsakanin wani gwargwado da aka fayyace, haɗawa."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "cika"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "cika ƙasa"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "cika sama"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Cika lamba sama ko ƙasa."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "cikakkiya"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "lamba da ta ruɓanya kanta"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Dawo da cikakkiyar kima na wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Dawo da e zuwa ƙarfin wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Dawo da jerin lambobi da aka tara ko aka ɗebe."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Dawo da tushe 10 na jerin lambobi da aka tara ko aka ɗebe na wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Dawo da kishiya na wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Dawo da 10 zuwa ƙarfin wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Dawo da wata lamba da ta ruɓanya kanta."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Dawo da arccosine na wata lamba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Dawo da arcsine na wata lamba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Dawo da arctangent na wata lamba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Dawo da cosine na wani gwargwado (banda layin kusurwar waje)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Dawo da sine na wani gwargwado (banda layin kusurwar waje)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Dawo da tangent na wani gwargwado (banda layin kusurwar waje)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ƙirƙiri siffa ta launi..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ƙirƙiri siffa ta lamba..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ƙiriƙiri kalmar siffa..."; +Blockly.Msg["NEW_VARIABLE"] = "Ƙirƙiri siffofi..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Sunan sabuwar siffa:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Irin sabuwar siffa:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ƙyale bayanai"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "tare da:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Gudanar da aiki '%1' wanda mai amfani ya ayyana."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Gudanar da aiki '%1' kuma a yi amfani da sakamakon sa."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "tare da:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ƙirƙiri '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Kwatanta wannan aiki..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "yi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "da"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ya ƙirƙiri wani aiki ba tare da sakamako ba."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "mayar"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ya ƙirƙiri wani aiki ba tare da wani sakamako ba."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Gardaɗi: Wannan aikin yana da ruɓi na gazawa."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Bayar da haske na bayanin aiki"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Idan wata kima gaskiya ce, to dawo da kima ta biyu."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Gargaɗi: Za a iya amfani da wannan bulo ne kawai a cikin bayani na wani aiki."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "saka suna:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Daɗa wani bayani ga aikin."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "bayani"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Daɗa, cire, ko sake tsarin bayani na wannan aiki."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Sake"; +Blockly.Msg["REMOVE_COMMENT"] = "Cire Sharhi"; +Blockly.Msg["RENAME_VARIABLE"] = "Sake sunan siffa..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Sake sunnan duk siffofi '%1' zuwa:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "zuwa %1 daɗa rubutu %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Daɗa wani rubutu zuwa siffa ta '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "zuwa ƙananan baƙaƙe"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "zuwa Baƙaƙe Dake nuna Suna"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "zuwa MANYAN BAƘAƘE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "sami harafin farko"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "sami harafin # daga ƙarshe"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "sami harafin #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "sami harafin ƙarshe"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "sami harafi mai bazuwa"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ta rubutu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Ya dawo da harafi a gurbi da aka fayyace."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "ƙirga %1 a cikin %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Ƙirga sau nawa wani rubutu ya afku a cikin sauran wasu rubutu."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Daɗa wani kaya zuwa ga rubutun."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "haɗa"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo na rubutu."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "zuwa harafin # daga ƙarshe"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "zuwa harafin #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "zuwa harafi na ƙarshe"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ta rubutu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "sami sashin jumla daga harafin farko"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "sami sashin jumla daga harafin # daga ƙarshe"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "sami sashin jumla daga harafin #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Ya dawo da ɓangaren rubutu da aka fayyace."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "nemo afkuwar farko ta rubutu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "nemo afkuwar ƙarshe ta rubutu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ta rubutu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "nemo a cikin rubutu. Returns %1 if text is not found."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 babu komai"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Ya dawo gaskiya idan rubutun da aka bayar babu komai."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ƙirƙiri rubutu da"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ƙirƙiri guntun rubutu ta haɗa kowace lamba ta kayayyaki."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "tsawon %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Ya dawo lamba ta haruffa (da ya haɗa da sarari) a cikin rubutun da aka bayar."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "buga %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Buga rubutun da aka fayyace, lamba ko wata kima."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Samo wani mai amfani domin wata lamba."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Samo wani mai amfani domin wani rubutu."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "samo lamba tare da saƙo"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "samo rubutu tare da saƙo"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "maye gurbin %1 da %2 a cikin %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Maye gurbin duk afkuwa na wani rubutu a cikin wasu rubutu."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "juya %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Ya juya tsari na haruffa a cikin rubutu."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Harafi, kalma, ko layi na rubutu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "datse sarari daga ɓangarori guda biyu na"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "datse sarari daga ɓangaren hagu na"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "datse sarari daga ɓangaren dama na"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Dawo da kwafin rubutu tare da sauran sarari da aka cire daga ƙarshe ɗaya ko biyu."; +Blockly.Msg["TODAY"] = "Yau"; +Blockly.Msg["UNDO"] = "Fasa"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "waniabu"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ƙirƙiri 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Ya dawo da kima na wannan siffa."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "saita %1 zuwa %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Ƙirƙiri 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ya saita wannan siffa ta zama dai dai da bayanin."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Tuni akwai sunnan siffa da aka kira '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Tuni akwai sunan siffa da aka kira '%1' domin wata iri ta: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Faɗi wani abu..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/hak.js b/blockly/msg/hak.js new file mode 100644 index 00000000000..c94fcf6a7bd --- /dev/null +++ b/blockly/msg/hak.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "加上解釋"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "刪忒封鎖"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "刪忒 %1 封鎖"; +Blockly.Msg["DIALOG_CANCEL"] = "取消"; +Blockly.Msg["DIALOG_OK"] = "確定"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "複製"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "多行輸入"; +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "單行輸入"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "移忒解釋"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "變量"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/he.js b/blockly/msg/he.js new file mode 100644 index 00000000000..530a180ed2f --- /dev/null +++ b/blockly/msg/he.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "הוסף תגובה"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "אי אפשר למחוק את המשתנה \"%1\", מכיוון שהגדרת הפונקציה \"%2\" משתמשת בו."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "שנה ערך:"; +Blockly.Msg["CLEAN_UP"] = "סידור בלוקים"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "קוביות מצומצמות מכילות אזהרות."; +Blockly.Msg["COLLAPSE_ALL"] = "צמצם קטעי קוד"; +Blockly.Msg["COLLAPSE_BLOCK"] = "צמצום קוביה"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "צבע 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "צבע 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "יחס"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ערבב"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "מערבב שני צבעים יחד עם יחס נתון(0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://he.wikipedia.org/wiki/%D7%A6%D7%91%D7%A2"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "בחר צבע מן הצבעים."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "צבע אקראי"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "בחר צבא אקראי."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "כחול"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ירוק"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "אדום"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "צבע עם"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "צור צבע עם הסכום המצוין של אדום, ירוק וכחול. כל הערכים חייבים להיות בין 0 ל100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "צא מהלולאה"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "המשך עם האיטרציה הבאה של הלולאה"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "צא אל מחוץ ללולאה הכוללת."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "דלג על שאר הלולאה והמשך עם האיטרציה הבאה."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "אזהרה: קוביה זו עשויה לשמש רק בתוך לולאה."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "לכל פריט %1 ברשימה %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "לכל פריט ברשימה, להגדיר את המשתנה '%1' לפריט הזה, ולאחר מכן לעשות כמה פעולות."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "תספור עם %1 מ־%2 עד %3 בצעדי %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "לעשות שהערך ‚%1’ יקבל את הערכים מהמספר ההתחלתי עד המספר הסופי, בהתאם למרווח שהוגדר, ולבצע את הקוביות הנבחרות."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "תוסיף תנאי לבלוק If."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ניתן להוסיף תנאי סופי שלוכד את כולם לקוביית ההתניה (If)."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ניתן להוסיף, למחוק או לסדר מחדש כדי להגדיר מחדש את קוביית ההתניה (If)."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "אחרת"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "אחרת אם"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "אם"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "אם ערך נכון, לבצע כמה פעולות."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "אם הערך הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, לבצע את קוביית הפעולות השנייה."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה. אם אף אחד מהם אינו נכון, לבצע את קוביית הפעולות האחרונה."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "http://he.wikipedia.org/wiki/בקרת_זרימה"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "תעשה"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "חזור על הפעולה %1 פעמים"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "לעשות כמה פעולות מספר פעמים."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "חזור עד ש..."; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "חזור כל עוד"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "בזמן שהערך שווה לשגוי, תעשה מספר חישובים."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "כל עוד הערך הוא אמת, לעשות כמה פעולות."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "האם למחוק את כל %1 הקוביות?"; +Blockly.Msg["DELETE_BLOCK"] = "מחיקת קוביה"; +Blockly.Msg["DELETE_VARIABLE"] = "מחק את משתנה ה'%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "למחוק %1 שימושים במשתנה ‚%2’?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "מחק %1 קטעי קוד"; +Blockly.Msg["DIALOG_CANCEL"] = "ביטול"; +Blockly.Msg["DIALOG_OK"] = "אישור"; +Blockly.Msg["DISABLE_BLOCK"] = "השבתת קוביה"; +Blockly.Msg["DUPLICATE_BLOCK"] = "שכפל"; +Blockly.Msg["DUPLICATE_COMMENT"] = "שכפול ההערה"; +Blockly.Msg["ENABLE_BLOCK"] = "הפעל קטע קוד"; +Blockly.Msg["EXPAND_ALL"] = "הרחב קטעי קוד"; +Blockly.Msg["EXPAND_BLOCK"] = "הרחבת קוביה"; +Blockly.Msg["EXTERNAL_INPUTS"] = "קלטים חיצוניים"; +Blockly.Msg["HELP"] = "עזרה"; +Blockly.Msg["INLINE_INPUTS"] = "קלטים פנימיים"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "צור רשימה ריקה"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "החזר רשימה,באורך 0, המכילה רשומות נתונים"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "רשימה"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "ניתן להוסיף, למחוק או לסדר מחדש סעיפים כדי להגדיר מחדש את קוביית הרשימה הזאת."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "צור רשימה עם"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "הוסף פריט לרשימה."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "צור רשימה עם כל מספר של פריטים."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ראשון"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# מהסוף"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "לקבל"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "קבל ומחק"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "אחרון"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "אקראי"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "הסרה"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "מחזיר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "מחזיר פריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "מחזיר את הפריט האחרון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "מחזיר פריט אקראי מהרשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "מסיר ומחזיר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "מסיר ומחזיר את הפריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "מסיר ומחזיר את הפריט האחרון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "מחק והחזר פריט אקראי מהרשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "הסר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "מחזיר פריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "הסר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "הסר פריט אקראי ברשימה."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ל # מהסוף"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ל #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "לאחרון"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "לקבל חלק מהרשימה החל מהתחלה"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "לקבל חלק מהרשימה החל מ-# עד הסוף"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "לקבל חלק מהרשימה החל מ-#"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "יוצרת עותק של חלק מסוים מהרשימה."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 הוא הפריט האחרון."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 הוא הפריט הראשון."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "מחזירה את המיקום הראשון של פריט ברשימה"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "מחזירה את המיקום האחרון של פריט ברשימה"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "מחזירה את האינדקס של המופע הראשון/האחרון של הפריט ברשימה. מחזירה %1 אם הפריט אינו נמצא."; +Blockly.Msg["LISTS_INLIST"] = "ברשימה"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 הוא ריק"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "מחזיר אמת אם הרשימה ריקה."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "אורכו של %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "מחזירה את האורך של רשימה."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ליצור רשימה עם הפריט %1 %2 פעמים"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "יוצר רשימה המורכבת מהערך נתון חוזר מספר פעמים שצוין."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "היפוך %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "היפוך עותק של רשימה."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "כמו"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "הכנס ב"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "הגדר"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "מכניס את הפריט בתחילת רשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "מכניס את הפריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "מוסיף את הפריט בסוף רשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "הוסף פריט באופן אקראי ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "מגדיר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "מגדיר את הפריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "מגדיר את הפריט האחרון ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "מגדיר פריט אקראי ברשימה."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "סדר עולה"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "סדר יורד"; +Blockly.Msg["LISTS_SORT_TITLE"] = "מיון %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "מיון עותק של הרשימה."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "סדר אלפביתי, לא תלוי רישיות"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "נומרי"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "סדר אלפביתי"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "יצירת רשימה מטקסט"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "יצירת טקסט מרשימה"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "צירוף רשימת טקסטים לטקסט אחד, מופרדים בתו הפרדה."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "פיצול טקסט לרשימה של טקסטים, יחתכו לפי תו הפרדה."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "עם מפריד"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "שגוי"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "מחזיר או האם נכון או האם שגוי."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "נכון"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://he.wikipedia.org/wiki/אי-שוויון_(מתמטיקה)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "תחזיר נכון אם שני הקלטים שווים אחד לשני."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "תחזיר נכון אם הקלט הראשון גדול יותר מהקלט השני."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "תחזיר נכון אם הקלט הראשון גדול יותר או שווה לכניסה השנייה."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "תחזיר אמת (true) אם הקלט הראשון הוא קטן יותר מאשר הקלט השני."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "תחזיר אמת אם הקלט הראשון הוא קטן יותר או שווה לקלט השני."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "תחזיר אמת אם שני הקלטים אינם שווים זה לזה."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "לא %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "החזר אמת אם הקלט הוא שקר. החזר שקר אם הקלט אמת."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "תחזיר ריק."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "וגם"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "או"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "תחזיר נכון אם שני הקלטים נכונים."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "תחזיר נכון אם מתקיים לפחות אחד מהקלטים נכונים."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "בדיקה"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "אם שגוי"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "אם נכון"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "בדוק את התנאי ב'מבחן'. אם התנאי נכון, תחזיר את הערך 'אם נכון'; אחרת תחזיר את הערך 'אם שגוי'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://he.wikipedia.org/wiki/ארבע_פעולות_החשבון"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "תחזיר את סכום שני המספרים."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "החזרת המנה של שני המספרים."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "החזרת ההפרש בין שני מספרים."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "החזרת תוצאת הכפל בין שני מספרים."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "החזרת המספר הראשון בחזקת המספר השני."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 של X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "מחזיר את הארכטנגנס של נקודה (X, Y) במעלות מ־‎-180 עד 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "שינוי %1 על־ידי %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "הוסף מספר למשתנה '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://he.wikipedia.org/wiki/קבוע_מתמטי"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "החזרת אחד מהקבועים המקובלים: π (3.141…),‏ e (2.718…),‏ φ (1.618…),‏ sqrt(2) (1.414…),‏ sqrt(½) (0.707…)‏ או ∞ (אינסוף)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "הגבל %1 בין %2 ל %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "הגבלת מספר כך שיהיה בין המגבלות שמוגדרות (כולל)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "מתחלק ב"; +Blockly.Msg["MATH_IS_EVEN"] = "זוגי"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "שלילי"; +Blockly.Msg["MATH_IS_ODD"] = "אי-זוגי"; +Blockly.Msg["MATH_IS_POSITIVE"] = "חיובי"; +Blockly.Msg["MATH_IS_PRIME"] = "ראשוני"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "בדיקה האם מספר הוא זוגי, אי־זוגי, ראשוני, שלם, חיובי, שלילי או אם ניתן לחלק אותו במספר כלשהו. מחזירה אמת או שקר."; +Blockly.Msg["MATH_IS_WHOLE"] = "שלם"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://he.wikipedia.org/wiki/חשבון_מודולרי"; +Blockly.Msg["MATH_MODULO_TITLE"] = "שארית החילוק %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "החזרת השארית מחלוקת שני המספרים."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://he.wikipedia.org/wiki/מספר_ממשי"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "מספר."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ממוצע של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "מקסימום של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "חציון של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "מינימום של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "שכיחי הרשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "פריט אקראי מרשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "סטיית תקן של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "סכום של רשימה"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "החזרת הממוצע (ממוצע חשבוני) של הערכים המספריים שברשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "תחזיר את המספר הגדול ביותר ברשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "תחזיר את המספר החיצוני ביותר ברשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "תחזיר את המספר הקטן ביותר ברשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "החזרת רשימה של הפריטים הנפוצים ביותר ברשימה"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "תחזיר רכיב אקראי מרשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "מחזיר את סטיית התקן של הרשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "החזרת הסכום של המספרים ברשימה."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "שבר אקראי"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "מחזיר שבר אקראי בין 0.0 (כולל) עד 1.0 (כולל)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "מספר שלם אקראי בין %1 ל-%2 (כולל)"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "החזרת מספר שלם, חיובי ואקראי בין שני הגבולות שהוגדרו, כולל."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://he.wikipedia.org/wiki/עיגול_(אריתמטיקה)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "עיגול"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "עיגול למטה"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "עיגול למעלה"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "עיגול מספר למעלה או למטה."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://he.wikipedia.org/wiki/שורש_ריבועי"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ערך מוחלט"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "שורש ריבועי"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "החזרת הערך המוחלט של מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "החזרת e בחזקת מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "החזרת הלוגריתם הטבעי של מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "החזרת הלוגריתם לפי בסיס עשר של מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "החזרת הערך הנגדי של מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "החזרת 10 בחזקת מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "החזרת השורש הריבועי של מספר."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://he.wikipedia.org/wiki/פונקציות_טריגונומטריות"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "החזרת הארק-קוסינוס של מספר."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "החזרת הארק-סינוס של מספר."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "החזרת הארק-טנגנס של מספר."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "החזרת הקוסינוס של מעלה (לא רדיאן)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "החזרת הסינוס של מעלה (לא רדיאן)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "החזרת הטנגס של מעלה (לא רדיאן)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "יצירת משתנה צבע..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "צור משתנה מחרוזת"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "צור משתנה מחרוזת"; +Blockly.Msg["NEW_VARIABLE"] = "צור משתנה..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "שם המשתנה החדש:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "סוג המשתנה החדש:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "לאפשר פעולות"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "עם:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://he.wikipedia.org/wiki/שגרה_(תכנות)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://he.wikipedia.org/wiki/שגרה_(תכנות)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1' ולהשתמש הפלט שלה."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "עם:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "ליצור '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "תאר את הפונקציה הזאת..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "לעשות משהו"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "לביצוע:"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "יצירת פונקציה ללא פלט."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "להחזיר"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "יצירת פונקציה עם פלט."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "אזהרה: לפונקציה זו יש פרמטרים כפולים."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "הדגש הגדרה של פונקציה"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "אם ערך נכון, אז להחזיר ערך שני."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "אזהרה: קוביה זו עשויה לשמש רק בתוך הגדרה של פונקציה."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "שם הקלט:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "הוסף קלט לפונקציה"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "מקורות קלט"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "הוסף, הסר או סדר מחדש קלטים לפונקציה זו"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ביצוע חוזר"; +Blockly.Msg["REMOVE_COMMENT"] = "הסר תגובה"; +Blockly.Msg["RENAME_VARIABLE"] = "שנה את שם המשתנה..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "שנה את שם כל '%1' המשתנים ל:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "אל %1 הוספת טקסט %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "הוספת טקסט למשתנה ‚%1’."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "לאותיות קטנות (עבור טקסט באנגלית)"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "לאותיות גדולות בתחילת כל מילה (עבור טקסט באנגלית)"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "לאותיות גדולות (עבור טקסט באנגלית)"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "החזרת עותק של הטקסט בשינוי רישיות."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "לקבל את האות הראשונה"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "קבלת אות מס׳ מהסוף"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "קבלת אות מס׳"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "לקבל את האות האחרונה"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "לקבל אות אקראית"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "בטקסט %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "מחזיר את האות במיקום שהוגדר."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "לספור %1 ב־%2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "סופרת כמה פעמים טקסט מסוים מופיע בתוך טקסט אחר."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "הוספת פריט לטקסט."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "צירוף"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "ניתן להוסיף, להסיר או לסדר מחדש סעיפים כדי להגדיר את קוביית הטקסט הזאת מחדש."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "לאות # מהסוף"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "לאות #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "עד האות האחרונה"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "בתוך הטקסט"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "קבלת תת־מחרוזת מהאות הראשונה"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "קבלת מחרוזת מאות מס׳ מהסוף"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "קבלת תת־מחרוזת מאות מס׳"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "החזרת קטע מסוים מהטקסט."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "איתור המופע הראשון של טקסט"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "איתור המופע האחרון של טקסט"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "בטקסט %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "מחזירה את האינדקס של המופע הראשון/האחרון בטקסט הראשון לתוך הטקסט השני. מחזירה %1 אם הטקסט אינו נמצא."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 הוא ריק"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "מחזירה אמת אם הטקסט שצוין ריק."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "יצירת טקסט עם"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "יצירת מקטע טקסט על ידי צירוף של כמות כלשהי של פריטים יחדיו."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "אורכו של %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "מחזיר את מספר התווים (אותיות, רווחים וכו') בטקסט שהוזן."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "הדפס %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "להדפיס טקסט, מספר או ערך אחר שצוין"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "בקש מהמשתמש מספר."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "בקשה למשתמש להזין טקסט כלשהו."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "בקשה למספר עם הודעה"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "בקשה להזנת טקסט עם הודעה"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "החלפת %1 בביטוי %2 בתוך %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "מחליפה את כל המופעים של טקסט מסוים בתוך טקסט אחר."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "היפוך %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "הופכת את הסדר של התווים בטקסט."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://he.wikipedia.org/wiki/מחרוזת_(מדעי_המחשב)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "אות, מילה, או שורת טקסט."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "למחוק רווחים משני הקצוות"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "למחוק רווחים מימין"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "למחוק רווחים משמאל"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "להחזיר עותק של הטקסט לאחר מחיקת רווחים מאחד או משני הקצוות."; +Blockly.Msg["TODAY"] = "היום"; +Blockly.Msg["UNDO"] = "ביטול"; +Blockly.Msg["UNNAMED_KEY"] = "ללא שם"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "פריט"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "ליצור 'הגדר %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "להחזיר את הערך של משתנה זה."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "הגדר %1 ל- %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "ליצור 'קרא %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "מגדיר משתנה זה להיות שווה לקלט."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "קיים כבר משתנה בשם \"%1\"."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "קיים כבר משתנה בשם \"%1\" מסוג אחר: \"%2\""; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "סביבת העבודה בלוקלי"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "נא להזין הערה..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/hi.js b/blockly/msg/hi.js new file mode 100644 index 00000000000..bc181a3af23 --- /dev/null +++ b/blockly/msg/hi.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "टिप्पणी छोड़ें"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "चर '%1' को नहीं हटा सकता क्योंकि यह फ़ंक्शन '%2' की परिभाषा का हिस्सा है"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "मान परिवर्तित करें:"; +Blockly.Msg["CLEAN_UP"] = "खानों को साफ करें"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ब्लॉक संक्षिप्त करें"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ब्लॉक को संक्षिप्त करें"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "रंग 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "रंग 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "अनुपात"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "मिश्रण करें"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "दिए गए अनुपात (0.0 - 1.0) के साथ दो रंगों का मिश्रण करता है।"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "पैलेट से एक रंग चुनें।"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "कोई भी रंग"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "कोई भी एक रंग का चयन करें।"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "नीला"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "हरा"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "लाल"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "इसके साथ रंग करें"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "लाल, हरा और नीले की निर्दिष्ट मात्रा के साथ एक रंग बनायें। सभी मान ० से १०० के बीच होने चाहिए।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "फंदे से बाहर निकलें"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "फंदे की अगली यात्रा के साथ जारी रखें"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "भीतरी फंदे से बाहर निकलें।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "बाकी बचे फंदे को छोड़ें, और अगली यात्रा जारी रखें।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "सावधान: ये ब्लॉक केवल लूप के अंदर इस्तेमाल किया जा सकता है।"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "प्रत्येक वस्तु के लिए %1 सूची में %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "सूची के प्रत्येक वस्तु के लिए, वस्तु में चर का मान '%1' रखें और बाद में कुछ कथन लिखें।"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 से %2 से %3 तक %4 के साथ गिनती करें"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "क्या चर '%1' प्रारंभ संख्या से अंत संख्या तक मानों को लेता है, निर्दिष्ट अंतराल के अनुसार गिनती करता है, और निर्दिष्ट रुकावटों को करता है।"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "एक शर्त जोड़ें यदि ब्लॉक है।"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "यदि ब्लॉक है तो इसके लिए एक अंतिम, कैच-सभी स्थिति जोड़ें।"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "अन्य"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "यदि अन्य"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "यदि"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "यदी मान सही है, तो कुछ विवरण चलाएँ।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "यदि एक मान सत्य है तो कथनों का प्रथम खण्ड बनायें। अन्यथा कथनों का दूसरा भाग निर्मित करें।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "यदि पहले मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "यदि पहला मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें। यदि कोई भी मान सही नहीं है, तो बयानों का अंतिम खंड करें।"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "करें"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 बार दोहराएँ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "कुछ विवरण कई बार चलाएँ।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "दोहराएँ जब तक"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "दोहराएँ जब कि"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "जब तक मान गलत है, तब तक कुछ विवरण चलाएँ।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "जब तक मान सही है, तब तक कुछ विवरण चलाएँ।"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "सभी %1 खानों को हटा दें?"; +Blockly.Msg["DELETE_BLOCK"] = "ब्लॉक हटाएँ"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' चर को हटाएँ"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' चर के %1 उपयोग को हटाएँ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ब्लॉक हटाएँ"; +Blockly.Msg["DIALOG_CANCEL"] = "रद्द करें"; +Blockly.Msg["DIALOG_OK"] = "ठीक है"; +Blockly.Msg["DISABLE_BLOCK"] = "ब्लॉक को अक्षम करें"; +Blockly.Msg["DUPLICATE_BLOCK"] = "कॉपी करें"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ब्लॉक को सक्षम करें"; +Blockly.Msg["EXPAND_ALL"] = "ब्लॉक विस्तार करें"; +Blockly.Msg["EXPAND_BLOCK"] = "ब्लॉक का विस्तार करें"; +Blockly.Msg["EXTERNAL_INPUTS"] = "बाहरी इनपुट"; +Blockly.Msg["HELP"] = "सहायता"; +Blockly.Msg["INLINE_INPUTS"] = "इनलाइन इनपुट"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "खाली सूची बनाएँ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "0 लंबाई की, कोई भी डेटा ना रखने वाली एक सूची लौटती है"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "सूची"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "इस सूची ब्लॉक को पुन: आकार देने के लिए वर्गों को जोड़ें, निकालें, या पुन: क्रमित करें।"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "इसके सूची बनाएँ"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "सूची मे एक आइटम जोड़ें।"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "कितने भी आइटम वाली एक सूची बनाएँ।"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "पहला"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "अंत से #"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "प्राप्त"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "प्राप्त करे और हटाए"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "आखिरी"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "रैन्डम"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "निकालें"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "सूची का पहला आइटम रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "एक सूची में निर्दिष्ट स्थान पर वस्तु को लौटाता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "सूची का आखरी आइटम रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "सूची से रैन्डम आइटम रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "सूची का पहला आइटम निकालता है और रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "एक सूची में निर्दिष्ट स्थिति में आइटम निकालता है और लौटाता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "सूची का आखरी आइटम निकालता है और रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "सूची से रैन्डम आइटम निकालता है और रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "सूची का पहला आइटम निकालता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "एक सूची में निर्दिष्ट स्थान पर आइटम निकाल देता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "सूची का आखरी आइटम निकालता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "सूची से रैन्डम आइटम निकालता है।"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "अंतिम से # को"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# को"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "अंत से"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "प्रथम से उप-सूची प्राप्त करें"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "अंत से # से उप-सूची प्राप्त करें"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# से उप-सूची प्राप्त करें"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "सूची के बताए गये भाग की कॉपी बनता है।"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 आखिरी वस्तु है।"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 पहली वस्तु है।"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "आइटम पहली बार जहाँ आया है उसे ढूढ़े"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "आइटम आखरी बार जहाँ आया है उसे ढूढ़े"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "सूची में आइटम की पहली/अंतिम घटना का सूचक देता है। यदि आइटम नहीं मिला है तो %1 रिटर्न होता है।"; +Blockly.Msg["LISTS_INLIST"] = "सूची में"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 खाली है"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "यदि सूची खाली है तो ट्रू रिटर्न करता है।"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 की लंबाई"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "सूची की लंबाई रिटर्न करता है।"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "वस्तु %1 के साथ %2 बार दोहराई गयी सूची बनाएं"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "निर्धारित मान की बार-बार दोहराई गई एक सूची बनाता है।"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 को बदल दें"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "एक सूची की एक प्रति को छांटे।"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "बतौर"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "पर डालें"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "सैट करें"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "आइटम को सूची के शुरू में इनसर्ट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "सूची मे बताए गये स्थान में आइटम इनसर्ट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "आइटम को सूची के अंत में जोड़ता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "आइटम को सूची में रैन्डम्ली इनसर्ट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "सूची में पहला आइटम सैट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "सूची मे बताए गये स्थान में आइटम सैट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "सूची में आखरी आइटम सैट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "सूची में रैन्डम आइटम सैट करता है।"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "बढ़ते क्रम"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "बढ़ते क्रम में"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 को छांटे"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "एक सूची की एक प्रति को छांटे।"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "वर्णक्रमानुसार, मामले की अनदेखी करें"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "अंकीय"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "वर्णक्रमानुसार"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "पाठ से एक सूची बनाएं"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "सूची से एक पाठ बनाएं"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ग्रंथों की एक सूची में शामिल करें, जो एक सीमांकक से अलग हो।"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "ग्रंथों की सूची में पाठ को विभाजित करें, प्रत्येक सीमांकक पर तोड़कर।"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "सीमांकक के साथ"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "गलत"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ट्रू या फॉल्स रिटर्न करता है।"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "सही"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर हों।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो या बराबर हो।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो या बराबर हो।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर नहीं हों।"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "NOT (पूरक) %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ट्रू रिटर्न करता है यदि इनपुट फॉल्स है। फॉल्स रिटर्न करता है यदि इनपुट ट्रू है।"; +Blockly.Msg["LOGIC_NULL"] = "NULL (अमान्य)"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "null (अमान्य) रिटर्न करता है।"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "AND (तथा)"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "OR (अथवा)"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ट्रू रिटर्न करें यदि दोनो इनपुट ट्रू हों।"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ट्रू रिटर्न करें यदि दोनो मे से इक इनपुट ट्रू हो।"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "टेस्ट"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "यदि गलत है"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "यदि सही है"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'परीक्षण' में हालत की जांच करें। यदि स्थिति सही है, तो 'सच' मान लौटाता है; अन्यथा वापस लौटता 'अगर झूठा'मान देता है।"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "दो संख्याओं का योग रिटर्न करें।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "दो संख्याओं का भागफल रिटर्न करें।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "दो संख्याओं का अंतर रिटर्न करें।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "दो संख्याओं का गुणन रिटर्न करें।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "दूसरे नंबर की शक्ति को उठाए गए पहले नंबर पर लौटें"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 को %2 से बदलें"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "संख्या को चर '%1' से जोड़ें।"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "सामान्य स्थिरांक में से एक को वापस लौटें:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)।"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 कम %2 उच्च %3 बाधित करें"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "एक संख्या को निर्दिष्ट सीमा (सम्मिलित) के बीच बाधित करें।"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "इसके द्वारा विभाज्य है"; +Blockly.Msg["MATH_IS_EVEN"] = "सम है"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ऋणात्मक है"; +Blockly.Msg["MATH_IS_ODD"] = "विषम है"; +Blockly.Msg["MATH_IS_POSITIVE"] = "धनात्मक है"; +Blockly.Msg["MATH_IS_PRIME"] = "अभाज्य है"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "जांचें कि क्या कोई संख्या एक सम, विषम, मुख्य, संपूर्ण, सकारात्मक, नकारात्मक है या यदि वह निश्चित संख्या से विभाजित है। वास्तविक या गलत रिटर्न देता है।"; +Blockly.Msg["MATH_IS_WHOLE"] = "पूर्णांक है"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 का शेषफल"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "दो संख्याओं के भाग का शेषफल रिटर्न करें।"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "एक संख्या।"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "सूची का औसत मान"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "सूची मे अधिकतम"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "सूची की माध्यिका"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "सूची मे न्यूनतम"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "सूची का मोड"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "सूची का रैन्डम आइटम"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "सूची का मानक विचलन"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "सूची का योग"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "सूची में संख्यात्मक मानों का औसत (अंकगणित माध्य) लौटें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "सूची में सबसे बड़ी संख्या रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "सूची की माध्यिका संख्या रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "सूची मे सबसे छोटी संख्या रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "सूची मे सबसे आम आइटम(s) की सूची रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "सूची से एक रैन्डम आइटम रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "सूची का मानक विचलन रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "सूची की सभी संख्याओं का योग रिटर्न करें।"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "रैन्डम अंश"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (समावेशी) और 1.0 (विशिष्ट) के बीच एक यादृच्छिक अंश पर लौटें।"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1 से %2 तक रैन्डम पूर्णांक"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "दो निर्दिष्ट सीमाओं, समावेशी के बीच एक यादृच्छिक पूर्णांक लौटें।"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "पूर्णांक बनाएँ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "घटा के पूर्णांक बनाएँ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "बड़ा के पूर्णांक बनाएँ"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "संख्या को बड़ा या घटा के पूर्णांक बनाएँ।"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "परम"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "वर्गमूल"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "संख्या का परम मान रिटर्न करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "किसी संख्या की शक्ति को वापस ई करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "संख्या का प्राकृतिक लघुगणक रिटर्न करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "संख्या का मूल 10 लघुगणक रिटर्न करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "संख्या का निषेध मान रिटर्न करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "किसी संख्या की शक्ति पर 10 लौटें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "संख्या का वर्गमूल रिटर्न करें।"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "संख्या का आर्ककोसाइन रिटर्न करें।"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "संख्या का आर्कसाइन रिटर्न करें।"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "संख्या का आर्कटैन्जन्ट रिटर्न करें।"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "डिग्री का कोसाइन रिटर्न करें (रेडियन नही)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "डिग्री का साइन रिटर्न करें (रेडियन नही)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "डिग्री का टैन्जन्ट रिटर्न करें (रेडियन नही)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "रंग चर बनाएँ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "संख्या चर बनायें..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "लड़ी चर बनायें..."; +Blockly.Msg["NEW_VARIABLE"] = "चर बनाएँ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "नए चर का नाम:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "नए चर का नाम:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "बयानों की अनुमति दें"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = ": के साथ"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ।"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ और उसका आउटपुट इस्तेमाल करें।"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = ": के साथ"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' बनाएँ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "इस फंकशन को समझाएँ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "कुछ करें"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "को"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "बिना आउटपुट वाला एक फ़ंक्शन बनाता है।"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "वापस आएं"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "आउटपुट वाला एक फ़ंक्शन बनाता है।"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "सावधान: इस फ़ंक्शन मे डुप्लिकेट पैरामीटर हैं।"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "फ़ंक्शन परिभाषा को हाइलाइट करें"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "यदि एक मान ट्रू है तो, दूसरा मान रिटर्न करें।"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "सावधान: ये ब्लॉक फ़ंक्शन परिभाषा के अंदर ही इस्तेमाल किया जा सकता।"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "इनपुट का नाम:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "फंगक्शन को इनपुट प्रदान करें।"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "इनपुट"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "इस फ़ंक्शन में इनपुट जोड़ें, निकालें, या पुन: क्रमित करें।"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "फिर से करें"; +Blockly.Msg["REMOVE_COMMENT"] = "टिप्पणी हटायें"; +Blockly.Msg["RENAME_VARIABLE"] = "चर का नाम बदलें..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "सभी '%1' चरों के नाम बदलें:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 में पाठ %2 को जोड़ें"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "कुछ टेक्स्ट इस चर '%1' से जोड़ें।"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "छोटे अक्षर मे"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "टाइटल केस मे"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "बड़े अक्षर मे"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "टेक्स्ट की कॉपी भिन्न केस (अक्षर से संबंधित) मे रिटर्न करें।"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "पहला अक्षर पाएँ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "आखिर से अक्षर # पाएँ"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "अक्षर # पाएँ"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "आखरी अक्षर पाएँ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "रैन्डम अक्षर पाएँ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "पाठ %1 %2 में"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "बताई गयी जगह से अक्षर रिटर्न करता है"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 को %2 में गिने"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "गिने, कितनी बार कुछ पाठ कुछ अन्य पाठ के अंदर समाहित होता है।"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "सूची मे एक आइटम जोड़ें।"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "जोड़"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "आखिर से यहाँ तक अक्षर #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "यहाँ तक अक्षर #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "यहाँ तक आखरी अक्षर"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "इस टेक्स्ट मे"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "पहले अक्षर से सबस्ट्रिंग पाएँ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "आखरी अक्षर # से सबस्ट्रिंग पाएँ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "अक्षर # से सबस्ट्रिंग पाएँ"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "टेक्स्ट का बताया गया अंश रिटर्न करता है"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "टेक्स्ट पहली बार जहाँ आया है उसे ढूढ़े"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "टेक्स्ट आखरी बार जहाँ आया है उसे ढूढ़े"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "पाठ %1 %2 %3 में"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "दूसरे पाठ में पहले पाठ की पहली/अंतिम घटना का सूचक देता है। यदि पाठ नहीं मिला है तो %1 रिटर्न होता है।"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 खाली है"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "ट्रू रिटर्न करता है यदि दिया गया टेक्स्ट खाली है।"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "इसके साथ टेक्स्ट बनाएँ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "किसी भी संख्या के मदों को एक साथ जोड़ कर पाठ का एक टुकड़ा बनाएं।"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 की लंबाई"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "दिए गये टेक्स्ट मे अक्षरों की संख्या रिटर्न करता है (खाली स्थान मिला के)।"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "प्रिंट करें %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "दिया गया टेक्स्ट प्रिंट करें, संख्या या अन्य मान।"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "यूज़र से संख्या के लिए प्रॉम्प्ट करें।"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "यूज़र से कुछ टेक्स्ट के लिए प्रॉम्प्ट करें।"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "सूचना के साथ संख्या के लिए प्रॉम्प्ट करें"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "सूचना के साथ टेक्स्ट के लिए प्रॉम्प्ट करें"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 को %2 के साथ %3 में बदलें"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "कुछ अन्य पाठ के अंदर कुछ पाठ की सभी जगहों को बदलें।"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 को बदल दें"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "पाठ में वर्णों के क्रम को उलट देता है।"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "एक अक्षर, शब्द, या टेक्स्ट की पंक्ति।"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "रिक्त स्थान को इस टेक्स्ट के दोनों तरफ से निकालें"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "रिक्त स्थान को इस टेक्स्ट के बायें तरफ से निकालें"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "रिक्त स्थान को इस टेक्स्ट के दाईं तरफ से निकालें"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "एक या दोनों सिरों से हटाए गए रिक्त स्थान के साथ पाठ की एक प्रति लौटाएं।"; +Blockly.Msg["TODAY"] = "आज"; +Blockly.Msg["UNDO"] = "पूर्ववत करें"; +Blockly.Msg["UNNAMED_KEY"] = "अज्ञात"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "वस्तु"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "सेट '%1' बनाएँ"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "इस चर का मान रिटर्न करता है।"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "सेट करें %1 को %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'प्राप्त करें %1' बनाएं"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "इस चर को इनपुट के बराबर सेट करता है।"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "प्राचल नाम '%1' पहले से मौजूद है।"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' नाम का एक चर पहले से '%2' प्रकार के अन्य चर के लिए मौजूद है।"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/hr.js b/blockly/msg/hr.js new file mode 100644 index 00000000000..70ecace3191 --- /dev/null +++ b/blockly/msg/hr.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne mogu obrisati varijablu '%1' zato što je dio definicije funkcije '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Promijeni vrijednost:"; +Blockly.Msg["CLEAN_UP"] = "Uredi blokove"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Sažeti blokovi sadrže upozorenje"; +Blockly.Msg["COLLAPSE_ALL"] = "Skupi blokove"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Sažmi blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "boja 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "boja 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "omjer"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "pomiješaj"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Miješa dvije boje u zadanom omjeru (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hr.wikipedia.org/wiki/Boja"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Odaberi boju iz palete."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "slučajna boja"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Odaberi boju nasumično."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "plavo"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zeleno"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "crveno"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "boja sa"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Stvori boju sa zadanom količinom crvene, zelene i plave. Sve vrijednosti moraju biti između 0 i 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "izađi iz petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nastavi sa sljedećim ponavljanjem u petlji"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Prekinite postojeću petlju"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči ostatak petlje i nastavi sa sljedećim ponavljanjem"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozorenje: Ovaj blok se može koristiti samo u petlji."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za svaki član %1 u listi %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za svaki član u listi daje varijabli '%1' vrijednost člana i zatim izvrši neke naredbe"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "broji s %1 od %2 do %3 za %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Varijabla '%1' poprima vrijednosti od početnog broja do završnog broja, brojeći u zadanim intervalima i izvršavajući odabrane blokove."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodaj uvjet bloku."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodaj završni, \"vrijedi za sve\" uvjet bloku."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj blok."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "onda"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inače ako"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ako"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ako je vrijednost istinita izvrši neke naredbe"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ako je vrijednost istina, tada izvrši prvi blok naredbi. Inače izvrši drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi. Ako niti jedna vrijednost nije istina, izvrši zadnji blok naredbi."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://hr.wikipedia.org/wiki/For_petlja"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "radi"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1 puta"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Ponovi zadane naredbe više puta."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljaj do"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljaj dok"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dok je vrijednost lažna, izvrši izjave."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dok je vrijednost istinita, izvrši izjave."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Obrisati svih %1 blokova?"; +Blockly.Msg["DELETE_BLOCK"] = "Obriši blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Obriši varijablu '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Obriši %1 korištenja varijable '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Obriši %1 blokova"; +Blockly.Msg["DIALOG_CANCEL"] = "Odustani"; +Blockly.Msg["DIALOG_OK"] = "U redu"; +Blockly.Msg["DISABLE_BLOCK"] = "Onemogući blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kloniraj"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliciraj komentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Omogući blok"; +Blockly.Msg["EXPAND_ALL"] = "Proširi blokove"; +Blockly.Msg["EXPAND_BLOCK"] = "Proširi blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Vanjski Ulazi"; +Blockly.Msg["HELP"] = "Pomoć"; +Blockly.Msg["INLINE_INPUTS"] = "Poravnati Ulazi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "stvori praznu listu"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vraća listu, duljine 0, koja ne sadrži podatke"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Dodaj, ukloni ili promijeni redoslijed kako biste presložili blok liste"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "stvori listu s"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Dodaj član u listu"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Stvara listu s bilo kojim brojem članova"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prvi"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od kraja"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "dohvati"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "uzmi i ukloni"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "posljednji"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "slučajno"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ukloni"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vraća prvi član liste"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vraća član sa zadanog mjesta u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vraća zadnji član liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vraća slučajno odabrani član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Uklanja i vraća prvi član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Uklanja i vraća član na zadanom mjestu u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Uklanja i vraća zadnji član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Uklanja i vraća slučajno odabrani član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Uklanja prvi član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Uklanja član na odabranom mjestu u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Uklanja zadnji član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Uklanja slučajno odabrani član u listi."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od kraja"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do zadnjeg"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "dohvati podlistu od prvog"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "uzmi podlistu od # od kraja"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "dohvati podlistu od #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Stvara kopiju odabranog dijela liste"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je zadnji član."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je prvi član."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "nađi prvo pojavljivanje člana"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "nađi zadnje pojavljivanje člana"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vraća indeks prvog/zadnjeg pojavljivanja člana u listi. Vraća %1 ako član nije pronađen."; +Blockly.Msg["LISTS_INLIST"] = "u listi"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazno"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vraća istinu ako je lista prazna."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "duljina %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vraća duljinu liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "stvori listu s članom %1 ponovljenim %2 puta"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Stvara listu ponavljanjem dane vrijednosti zadani broj puta."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrnuto %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrnuta kopija liste"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kao"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "umetni na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "postavi"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Umeće član na početak liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Umeće član na odabrano mjesto u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Dodaje član na kraj liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Umeće član na slučajno odabrano mjesto u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Postavlja prvi član u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Postavlja član na odabrano mjesto u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Postavlja zadnji član u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Postavlja slučajno odabrani član u listi."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "uzlazno"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "silazno"; +Blockly.Msg["LISTS_SORT_TITLE"] = "Sortiraj %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortiraj kopiju liste"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "po abecedi, zanemari mala/velika slova"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "kao brojeve"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "po abecedi"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "napravi listu od teksta"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "napravi tekst od liste"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Poveži niz tekstova u jedan tekst podijeljen razdjelnikom"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Podijeli tekst u niz tekstova prema razdjelniku"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "S razdjelnikom"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "laž"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vraća ili istina ili laž."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "istina"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vraća istina ako su obje ulazne vrijednosti jednake jedna drugoj."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vraća istina ako je prva ulazna vrijednost veća od druge."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vraća istina ako je prva ulazna vrijednost veća ili jednaka od druge."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vraća istina ako je prva ulazna vrijednost manja od druge."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vraća istina ako je prva ulazna vrijednost manja ili jednaka od druge."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vraća istina ako obje ulazne vrijednosti nisu jednake jedna drugoj."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vraća istina ako je ulazna vrijednost lažna. Vraća laž ako je ulazna vrijednost istinita."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vraća null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ili"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vraća istina ako su obje ulazne vrijednosti istinite."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vraća istina ako je barem jedna od ulaznih vrijednosti istinita."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "izraz"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ako je laž"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ako je istina"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Provjerite uvjet u \"izrazu\". Ako je uvjet istinit, vraća vrijednost \"ako je istinito\"; inače vraća vrijednost \"ako je lažno\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hr.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vraća zbroj dvaju brojeva."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vraća kvocijent dvaju brojeva."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vraća razliku dvaju brojeva."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vraća umnožak dvaju brojeva."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vraća prvi broj podignut na potenciju drugog broja."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 od X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vraća vrijednost arkus tangensa točke (X, Y) u stupnjevima od -180 do 180"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "promijeni %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodaj broj varijabli '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hr.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vraća jednu od uobičajenih konstanti: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(1/2) (0.707...) ili ∞ (beskonačnost)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ograniči %1 od %2 do %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ograničava broj da bude unutar zadanih granica (uključivši rubne vrijednosti)"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je djeljiv s"; +Blockly.Msg["MATH_IS_EVEN"] = "je paran"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativan"; +Blockly.Msg["MATH_IS_ODD"] = "je neparan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivan"; +Blockly.Msg["MATH_IS_PRIME"] = "je prost broj"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Provjerava je li broj paran, neparan, prim, cijeli, pozitivan, negativan ili je djeljiv određenim brojem. Vraća istina ili laž."; +Blockly.Msg["MATH_IS_WHOLE"] = "je cijeli broj"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ostatak pri dijeljenju %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vraća ostatak pri dijeljenju dvaju brojeva."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hr.wikipedia.org/wiki/Broj"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "broj"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "prosječna vrijednost liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "najveća vrijednost u listi"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medijan liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "najmanja vrijednost u listi"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mod liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "slučajno odabran član liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardna devijacija liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zbroj liste"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vraća prosjek (aritmetičku sredinu) numeričkih vrijednosti liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vraća najveći broj u listi."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vraća srednji broj u listi."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vraća najmanji broj u listi."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vraća listu najčešćih vrijednosti (mod) u listi"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vraća slučajan član liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vraća standardnu devijaciju liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vraća zbroj svih brojeva u listi."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slučajan razlomak"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vraća slučajan razlomak vrijednosti između 0.0 (uključivo) i 1.0 (isključivo)"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "slučajan cijeli broj između %1 i %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vraća slučajan cijeli broj između dviju zadanih vrijednosti, uključivši i rubne vrijednosti."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokružiti"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokružiti na manje"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokružiti na više"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokružuje broj na više ili manje"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://hr.wikipedia.org/wiki/Kvadratni_korijen"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "apsolutna vrijednost"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni korijen"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vraća apsolutnu vrijednost broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vraća e na potenciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vraća prirodni logaritam broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vraća logaritam po bazi 10 zadanog broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vraća negaciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vraća 10 na potenciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vraća drugi korijen broja."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vraća arkus kosinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vraća arkus sinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vraća arkus tangens broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vraća kosinus stupnjeva (ne radijana)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vraća sinus stupnjeva (ne radijana)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vraća tangens stupnjeva (ne radijana)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Kreiraj varijablu s bojama"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Kreiraj varijablu s brojkama"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Kreiraj varijablu s nizom slova"; +Blockly.Msg["NEW_VARIABLE"] = "Kreiraj varijablu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove varijable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Novi tip varijable:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "Dopustite izjave"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Pokrenite korisnički definiranu funkciju '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Pokrenite korisnički definiranu funkciju '%1' i upotrijebite njenu izlaznu vrijednost"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Stvori '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opis funkcije"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "napravi nešto"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "za"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Stvaranje funkcije bez izlazne vrijednosti"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "Vrati"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Stvara funkciju s izlaznom vrijednošću"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozorenje: Ova funkcija ima varijable istog imena"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Označavanje definicije funkcije"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Iako je vrijednost istina, tada vrati drugu vrijednost"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Upozorenje: Ovaj blok se može koristiti samo u definiciji funkcije"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Naziv ulazne varijable"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Dodajte ulaznu varijablu funkcije"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Ulazne varijable"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Dodajte, uklonite ili promijenite redoslijed ulaznih varijabli funkcije"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Ponovi"; +Blockly.Msg["REMOVE_COMMENT"] = "Obriši komentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Preimenovanje varijable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj svih %1 varijabli u:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "varijabli %1 dodajte tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Dodajte neki tekst varijabli '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "u mala slova"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "u Prvo Veliko Slovo"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "u VELIKA SLOVA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vraća kopiju teksta s malim ili velikim slovima"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "dohvati prvo slovo"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "dohvati slovo # od kraja"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "dohvati slovo #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "dohvati zadnje slovo"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "dohvati slučajno slovo"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "u tekstu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vraća slovo koje je na zadanom mjestu"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "prebroji %1 u %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Prebrojava koliko puta se neki tekst pojavljuje u drugom tekstu"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Dodajte stavku u tekst"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "poveži"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj tekstualni blok"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do slova # od kraja"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do slova #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do zadnjeg slova"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "u tekstu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "dohvati podtekst od prvog slova"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "dohvati podtekst od slova # od kraja"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "dohvati podtekst od slova #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Daje traženi dio teksta"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "nađi prvo pojavljivanje teksta"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "nađi zadnje pojavljivanje teksta"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "u tekstu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vraća indeks prvog/zadnjeg pojavljivanja prvog teksta u drugom tekstu. Vraća vrijednost %1 ako tekst nije pronađen."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazno"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vraća vrijednost istina ako je dani tekst prazan"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "stvori tekst od"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Stvara tekst povezivanjem bilo kojeg broja dijelova"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "duljina %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vraća broj slova (uključivši razmake) teksta"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "ispiši %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Ispisuje određeni tekst, broj ili drugu vrijednost."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Zatraži broj od korisnika."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Zatraži tekst od korisnika"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Zatraži broj porukom"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Zatraži tekst porukom"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamijeni %1 s %2 u %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zamijeni sva pojavljivanja nekog teksta u drugom tekstu."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "obrnuto %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Okreće redoslijed znakova u tekstu"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Slovo, riječ ili linija teksta"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ukloni razmake s obje strane od"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ukloni razmake s lijeve strane od"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ukloni razmake s desne strane od"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vraća kopiju teksta s uklonjenim razmakom s početka ili kraja"; +Blockly.Msg["TODAY"] = "Danas"; +Blockly.Msg["UNDO"] = "Poništi"; +Blockly.Msg["UNNAMED_KEY"] = "neimenovano"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "stavka"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Stvori 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vraća vrijednost varijable"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "Postavi %1 na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Stvori 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Postavi vrijednost varijable jednaku izlaznoj vrijednosti"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Varijabla s nazivom '%1' već postoji."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Varijabla pod nazivom '%1' već postoji za drugi tip: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Radni prostor Blocklyja"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Recite nešto"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/hrx.js b/blockly/msg/hrx.js new file mode 100644 index 00000000000..60731e28542 --- /dev/null +++ b/blockly/msg/hrx.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Kommentar hinzufüche"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Neie Variable..."; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Blocke zusammerfalte"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Block zusammerfalte"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Farreb 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "mit Farreb 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "im Verhältniss"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "misch"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Vermischt 2 Farwe mit konfigurierbare Farrebverhältniss (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hrx.wikipedia.org/wiki/Farreb"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Wähl en Farreb von der Palett."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "zufälliche Farwe"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Wähl en Farreb noh dem Zufallsprinzip."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grün"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rot"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Färreb mit"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kreiere ene Farreb mit sellrbst definierte rot, grün und blau Wearte. All Wearte müsse zwischich 0 und 100 liehe."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ausbreche aus der Schleif"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "mit der nächste Iteration fortfoohre aus der Schleifa"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Die umgebne Schleif beenne."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Die Oonweisung abbreche und mit der nächste Schleifiteration fortfoohre."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warnung: Die block sollt nuar in en Schleif verwennet sin."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "Für Weart %1 aus der List %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Füahr en Oonweisung für jede Weart in der List aus und setzt dabei die Variable \"%1\" uff den aktuelle List Weart."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Zähl %1 von %2 bis %3 mit %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Zähl die Variable \"%1\" von enem Startweart bis zu enem Zielweart und füahrefür jede Weart en Oonweisung aus."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "En weitre Bedingung hinzufüche."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "En orrer Bedingung hinzufüche, füahrt en Oonweisung aus falls ken Bedingung zutrifft."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Hinzufüche, entferne orrer sortiere von Sektione"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "orrer"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "orrer wenn"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "wenn"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Wenn en Bedingung woahr (true) ist, dann füahr en Oonweisung aus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Wenn en Bedingung woahr (true) ist, dann füahr die earscht Oonweisung aus. Ansonscht füahr die zwooite Oonweisung aus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Wenn der erschte Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Wenn der erscht Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus. Falls ken der beide Bedingungen woahr (true) ist, dann füahr die dritte Oonweisung aus."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://hrx.wikipedia.org/wiki/For-Schleif"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "mach"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "wiederhol %1 mol"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "En Oonweisung meahrfach ausführe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "Repetiere bis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Repetier solang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Füahr die Oonweisung solang aus wie die Bedingung falsch (false) ist."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Füahr die Oonweisung solang aus wie die Bedingung woahr (true) ist."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "All %1 Bausten lösche?"; +Blockly.Msg["DELETE_BLOCK"] = "Block lösche"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Block %1 lösche"; +Blockly.Msg["DIALOG_CANCEL"] = "Abbreche"; +Blockly.Msg["DIALOG_OK"] = "Okay"; +Blockly.Msg["DISABLE_BLOCK"] = "Block deaktivieren"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopieren"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Block aktivieren"; +Blockly.Msg["EXPAND_ALL"] = "Blocke expandiere"; +Blockly.Msg["EXPAND_BLOCK"] = "Block entfalte"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputsexterne Ingänge"; +Blockly.Msg["HELP"] = "Hellef"; +Blockly.Msg["INLINE_INPUTS"] = "interne Ingänge"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Generier/erzeich en leear List"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Generier/erzeich en leear List ohne Inhalt."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "List"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Hinzufüche, entferne und sortiere von Elemente."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Erzeich List mit"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "En Element zur List hinzufüche."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Generier/erzeich en List mit konfigurierte Elemente."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "earste"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "#te von hinne"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "Nehm"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "Nehm und entfern"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "letzte"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "zufälliches"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "Entfern"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Extrahiert das earste Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Extrahiert das Element zu en definierte Stell von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Extrahiert das letzte Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Extrahiert en zufälliches Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Extrahiert und entfernt das earste Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Extrahiert und entfernt das Element zu en definierte Stell von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Extrahiert und entfernt das letzte Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Extrahiert und entfernt en zufälliches Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Entfernt das earste Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Entfernt das Element zu en definierte Stell von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Entfernt das letzte Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Entfernt en zufälliches Element von der List."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "zu # vom End"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "zu #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "zum Letzte"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "hol Unnerliste vom Earste"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "hol Unnerliste von # vom End"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "hol Unnerlist von #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Generiert en Kopie von en definierte Tel von en List."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ist das letzte Element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ist das earschte Element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Such earstes Voarkommniss"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "Such letztes Voarkommniss"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Sucht die Position (index) von en Element in der List Gebt %1 zurück wenn nixs gefunn woard."; +Blockly.Msg["LISTS_INLIST"] = "in der List"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ist leear?"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ist woahr (true), wenn die List leear ist."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "länge %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Die Oonzoohl von Elemente in der List."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Erzich List mit Element %1 wiederhol das %2 mol"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Erzeicht en List mit en variable Oonzoohl von Elemente"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "uff"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "tue ren setz an"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "setz"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Tut das Element an en Oonfang von en List ren setze."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Tut das Element ren setze an en definierte Stell an en List."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Oonhängt das Element zu en List sei End."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Tut das Element zufällich an en List ren setze."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list.Setzt das earschte Element an en list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setzt das Element zu en definierte Stell in en List."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setzt das letzte Element an en List."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setzt en zufälliches Element an en List."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsch"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ist entweder woahr (true) orrer falsch (false)"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "woahr"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://hrx.wikipedia.org/wiki/Vergleich_%28Zahlen%29"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ist woahr (true) wenn beide Wearte identisch sind."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ist woahr (true) wenn der erschte Weart grösser als der zwooite Weart ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ist woahr (true) wenn der erschte Weart grösser als orrer gleich gross wie zwooite Weart ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ist woahr (true) wenn der earschte Weart klener als der zwooite Weart ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ist woahr (true) wenn der earscht Weart klener als orrer gleich gross wie zwooite Weart ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ist woahr (true) wenn beide Wearte unnerschiedlich sind."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "net %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ist woahr (true) wenn der Ingäweweart falsch (false) ist. Ist falsch (false) wenn der Ingäweweart woahr (true) ist."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Is NULL."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "und"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "orrer"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ist woahr (true) wenn beide Wearte woahr (true) sind."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ist woahr (true) wenn en von der beide Wearte woahr (true) ist."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "wenn falsch"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "wenn woahr"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Üwerprüft en Bedingung \"test\". Wenn die Bedingung woahr ist weerd der \"wenn woahr\" Weart zurückgeb, annerfalls der \"wenn falsch\" Weart"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hrx.wikipedia.org/wiki/Grundrechenoort"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ist die Summe zwooier Wearte."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ist der Quotient zwooier Wearte."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ist die Differenz zwooier Wearte."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ist das Produkt zwooier Wearte."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ist der earschte Weart potenziert mit dem zoiten Weart."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://hrx.wikipedia.org/wiki/Inkrement_und_Dekrement"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "mach höcher / erhöhe %1 um %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Addiert en Weart zur Variable \"%1\" hinzu."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hrx.wikipedia.org/wiki/Mathematische_Konstante"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Mathematische Konstante wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begrenze %1 von %2 bis %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begrenzt den Weartebereich mittels von / bis Wearte. (inklusiv)"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ist telbar/kann getelt sin doorrich"; +Blockly.Msg["MATH_IS_EVEN"] = "ist grood"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ist negativ"; +Blockly.Msg["MATH_IS_ODD"] = "ist ungrood"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ist positiv"; +Blockly.Msg["MATH_IS_PRIME"] = "ist en Primenzoohl"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Üwerprüft ob en Zoohl grood, ungrood, en Primenzoohl, ganzzoohlich, positiv, negativ orrer doorrich en zwooite Zoohl telbar ist. Gebt woahr (true) orrer falsch (false) zurück."; +Blockly.Msg["MATH_IS_WHOLE"] = "ganze Zoohl"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://hrx.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "Rest von %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Der Rest noh en Division."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hrx.wikipedia.org/wiki/Zoohl"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "En Zoohl."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Mittelweart en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Maximalweart en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Median von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Minimalweart von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Restweart von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Zufallsweart von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Standart/Padrong Abweichung von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Summe von en List"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ist der Doorrichschnittsweart von aller Wearte in en List."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ist der grösste Weart in en List."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Ist der Zentralweart von aller Wearte in en List."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ist der klenste Weart in en List."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Findt den am häifichste voarkommend Weart in en List. Falls ken Weart öftersch voarkomme als all annre, weard die originale List zurückgeche"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Geb en Zufallsweart aus der List zurück."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ist die standartiesierte/padronisierte Standartabweichung/Padrongabweichung von aller Wearte in der List"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ist die Summ aller Wearte in en List."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://hex.wikipedia.org/wiki/Zufallszoohle"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Zufallszoohl (0.0 -1.0)"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Generier/erzeich en Zufallszoohl zwischich 0.0 (inklusiv) und 1.0 (exklusiv)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://hrx.wikipedia.org/wiki/Zufallszahlen"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ganzoohlicher Zufallswearte zwischich %1 bis %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Generier/erzeich en ganzähliche Zufallsweart zwischich zwooi Wearte (inklusiv)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://hrx.wikipedia.org/wiki/Runden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "runde"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ab runde"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "uff runde"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "En Zoohl uff orrer ab runde."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://hrx.wikipedia.org/wiki/Quadratwoorzel"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "Absolutweart"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Quadratwoorzel"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ist der Absolutweart von en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ist Weart von der Exponentialfunktion von en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ist der natüarliche Logarithmus von en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ist der dekoodische Logarithmus von en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Negiert en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Rechnet 10 hoch Ingäbweart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ist die Qudratwoorzel von en Weart."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://hrx.wikipedia.org/wiki/Trigonometrie"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ist der Arcuscosinus von en Ingabweart."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ist der Arcussinus von en Ingäbweart."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ist der Arcustangens von en Ingäbweart."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ist der Cosinus von en Winkel."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ist der Sinus von en Winkel."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ist der Tangens von en Winkel."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Neie Variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Die neie Variable sei Noome:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "mit:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ruf en Funktionsblock ohne Rückgäweart uff."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ruf en Funktionsblock mit Rückgäbweart uff."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "mit:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Generier/erzeich \"Uffruf %1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Funktionsblock"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "zu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "En Funktionsblock ohne Rückgäbweart."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "geb zurück"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "En Funktionsblock mit Rückgäbweart."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warnung: die Funktionsblock hot doppelt Parameter."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markiear Funktionsblock"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Wenn der earste Weart woahr (true) ist, Geb den zwooite Weart zurück."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warnung: Der Block därref nuar innich en Funktionsblock genutzt sin."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Markiear Funktionsblock"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Generier/erzeich \"Uffruf %1\""; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Parameter"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Variable:"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Kommentar entferne"; +Blockly.Msg["RENAME_VARIABLE"] = "Die neie Variable sei Noome:"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "All \"%1\" Variable umbenenne in:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "An %1 Text oonhänge %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Text an die Variable \"%1\" oonhänge."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "umwandle in klenbuchstoobe"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "umwandle in Wörter"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "umwandle in GROSSBUCHSTOOBE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Wandelt Schreibweise von Texte um, in Grossbuchstoobe, Klenbuchstoobe orrer den earste Buchstoob von jedes Wort gross und die annre klen."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hol earschte Buchstoob"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hol Buchstoob # von End"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hol Buchstoob #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hol letztes Wort"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hol zufälliches Buchstoob"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Extrahiear en Buchstoob von en spezifizierte Position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "En Element zum Text hinzufüche."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "verbinne"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Hinzufüche, entfernne und sortiere von Elemente."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "bis #te Buchstoob von hinne"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bis Buchstoob #te"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "bis letzte Buchstoob"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in Text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "earschte Buchstoob"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hol #te Buchstoob von hinne"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hol substring Buchstoob #te"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Schickt en bestimmstes Tel von dem Text retuar."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "Such der Begriff sein earstes Voarkommniss"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "Suche der Begriff sein letztes Vorkommniss."; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "im Text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Findt das earste / letzte Voarkommniss von en Suchbegriffes in enem Text. Gebt die Position von dem Begriff orrer %1 zurück."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ist leer?"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Ist woahr (true), wenn der Text leer ist."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "Erstell Text aus"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Erstellt en Text doorrich das verbinne von mehre Textelemente."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "läng %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Die Oonzoohl von Zeiche in enem Text. (inkl. Leerzeiche)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "Ausgäb %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Geb den Inhalt von en Variable aus."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Frocht den Benutzer noh en Zoohl."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Frocht den Benutzer noh enem Text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Frächt noh Zoohl mit Hinweis"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Frocht noh Text mit Hinweis"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)https://hrx.wikipedia.org/wiki/Zeichenkette"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En Buchstoob, Text orrer Satz."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "entfern Leerzeiche von Oonfang und End Seite"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "entferne Leerzeiche von Oonfang Seite"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "entferne Leerzeiche von End Seite von"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Entfernt Leerzeiche vom Oonfang und / orrer End von en Text."; +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Generier/erzeiche \"Schreibe %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Gebt der Variable sein Weart zurück."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "Schreib %1 zu %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Generier/erzeich \"Lese %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setzt en Variable sei Weart."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/hu.js b/blockly/msg/hu.js new file mode 100644 index 00000000000..19f8a4426ca --- /dev/null +++ b/blockly/msg/hu.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Megjegyzés hozzáadása"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "A(z) „%1” változó nem törölhető, mert része a(z) „%2” függvény definíciójának."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Érték módosítása:"; +Blockly.Msg["CLEAN_UP"] = "Blokkok kiürítése"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Az összecsukott blokk figyelmeztetéseket tartalmaz."; +Blockly.Msg["COLLAPSE_ALL"] = "Blokkok összecsukása"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Blokk összecsukása"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "szín 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "szín 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "arány"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "színkeverés"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Két színt kever össze a megadott arányban (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hu.wikipedia.org/wiki/Szín"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Válassz színt a palettáról."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "véletlen szín"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Véletlenszerűen kiválasztott szín."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "kék"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zöld"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "vörös"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Szín"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Szín előállítása a megadott vörös, zöld, és kék értékekkel. Minden értéknek 0 és 100 közé kell esnie."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "befejezi az ismétlést"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "folytatja a következővel"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Megszakítja az utasítást tartalmazó ciklust."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Kihagyja a ciklus további részét, és elölről kezdi a következő elemmel."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Figyelem: Ez a blokk csak cikluson belül használható."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "minden %1 elemre a %2 listában"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "A '%1' változó minden lépésben megkapja a lista adott elemének értékét, és végrehajt vele néhány utasítást."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "számolj %1 értékével %2 és %3 között %4 lépésközzel"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "A(z) '%1' változó felveszi a kezdőérték és a végérték közötti értékeket a meghatározott lépésközzel. Eközben a meghatározott blokkokat hajtja végre."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Feltétel hozzáadása a ha blokkhoz."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Végső feltétel hozzáadása a ha blokkhoz."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "A ha blokk testreszabásához bővítsd, töröld vagy rendezd át a részeit."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "különben"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "különben ha"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ha"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ha a kifejezés igaz, akkor végrehajtja az utasításokat."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ha a kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben a második utasításblokk kerül végrehajtásra."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ha az első kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben, ha a második kifejezés igaz, akkor végrehajtja a második utasítás blokkot."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ha az első kifejezés igaz, akkor végrehajtjuk az első utasítás blokkot. Ha a második kifejezés igaz, akkor végrehajtjuk a második utasítás blokkot. Amennyiben egyik kifejezés sem igaz, akkor az utolsó utasítás blokk kerül végrehajtásra."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://hu.wikipedia.org/wiki/Ciklus_(programoz%C3%A1s)#Sz.C3.A1ml.C3.A1l.C3.B3s_.28FOR.29_ciklus"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = ""; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ismételd %1 alkalommal"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Megadott kódrészlet ismételt végrehajtása."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ismételd amíg"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ismételd amíg"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Amíg a feltétel hamis, végrehajtja az utasításokat."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Amíg a feltétel igaz, végrehajtja az utasításokat."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Az összes %1 blokk törlése?"; +Blockly.Msg["DELETE_BLOCK"] = "Blokk törlése"; +Blockly.Msg["DELETE_VARIABLE"] = "A(z) „%1” változó törlése"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "A(z) „%2” változó %1 használatának törlése?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 blokk törlése"; +Blockly.Msg["DIALOG_CANCEL"] = "Mégse"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Blokk letiltása"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Másolat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Blokk engedélyezése"; +Blockly.Msg["EXPAND_ALL"] = "Blokkok kinyitása"; +Blockly.Msg["EXPAND_BLOCK"] = "Blokk kinyitása"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Külső kapcsolatok"; +Blockly.Msg["HELP"] = "Súgó"; +Blockly.Msg["INLINE_INPUTS"] = "Belső kapcsolatok"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "üres lista"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Elemeket nem tartalmazó üres listát ad eredményül"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Lista készítés, elemek:"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Elem hozzáadása listához."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Listát készít a megadott elemekből."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "az első"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "a végétől számított"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "az elejétől számított"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "listából értéke"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "listából kivétele"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "az utolsó"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "bármely"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "listából törlése"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "elemnek"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "A lista első elemét adja eredményül."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "A lista megadott sorszámú elemét adja eredményül."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "A lista utolsó elemét adja eredményül."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "A lista véletlenszerűen választott elemét adja eredményül."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Az első elem kivétele a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "A megadott sorszámú elem kivétele a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Az utolsó elem kivétele a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Véletlenszerűen választott elem kivétele a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Az első elem törlése a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "A megadott sorszámú elem törlése a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Az utolsó elem törlése a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Véletlenszerűen választott elem törlése a listából."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "és a végétől számított"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "és az elejétől számított"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "és az utolsó"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "részlistája az első"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "részlistája a végétől számított"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "részlistája az elejétől számított"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "elem között"; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "A lista adott részéről másolat."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 az utolsó elemet jelenti."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 az első elemet jelenti."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "listában első előfordulásaː"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "listában utolsó előfordulásaː"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "A megadott elem első vagy utolsó előfordulásával tér vissza. Ha nem talál ilyen elemet, akkor %1 a visszatérési érték."; +Blockly.Msg["LISTS_INLIST"] = "A(z)"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 üres lista?"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Az eredmény igaz, ha a lista nem tartalmaz elemeket."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 lista hossza"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "A lista elemszámát adja eredményül."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Lista készítése %1 elemet %2 alkalommal hozzáadva"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "A megadtott elem felhasználásával n elemű listát készít"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 megfordítása"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Megfordítja a lista másolatát."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "elemkéntː"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "listába szúrd be"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "listába állítsd be"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Beszúrás a lista elejére."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Beszúrás a megadott sorszámú elem elé a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Beszúrás a lista végére."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Beszúrás véletlenszerűen választott elem elé a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Az első elem cseréje a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "A megadott sorszámú elem cseréje a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Az utolsó elem cseréje a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Véletlenszerűen választott elem cseréje a listában."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "növekvő"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "csökkenő"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 rendezés"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Egy lista egy másolatának rendezése."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "betűrendben nagybetű figyelmen kívül hagyásával"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerikus"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "betűrendben"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lista készítése szövegből"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "sztring készítése listából"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "A lista elemeit összefűzi szöveggé a határoló karaktereket is felhasználva."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Listát készít a határoló karaktereknél törve a szöveget."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "határoló karakter"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "hamis"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Igaz, vagy hamis érték"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "igaz"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://hu.wikipedia.org/wiki/Egyenl%C5%91tlens%C3%A9g"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Igaz, ha a kifejezés két oldala egyenlő."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Igaz, ha a bal oldali kifejezés nagyobb, mint a jobb oldali."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Igaz, ha a bal oldali kifejezés nagyobb vagy egyenlő, mint a jobb oldali."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Igaz, ha a bal oldali kifejezés kisebb, mint a jobb oldali."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Igaz, ha a bal oldali kifejezés kisebb vagy egyenlő, mint a jobb oldali."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Igaz, ha a kifejezés két oldala nem egyenlő.."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nem %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Igaz, ha a kifejezés hamis. Hamis, ha a kifejezés igaz."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "null érték."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "és"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "vagy"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Igaz, ha mindkét kifejezés igaz."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Igaz, ha legalább az egyik kifejezés igaz."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "vizsgáld meg:"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "érték, ha hamis:"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "érték, ha igaz:"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kiértékeli a megvizsgálandó kifejezést. Ha a kifejezés igaz, visszatér az \"érték, ha igaz\" értékkel, különben az \"érték, ha hamis\" értékkel."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hu.wikipedia.org/wiki/Matematikai_m%C5%B1velet"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Két szám összege."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Két szám hányadosa."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Két szám különbsége."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Két szám szorzata."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Az első számnak a második számmal megegyező hatványa."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://hu.wikipedia.org/wiki/Arctg2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "Arctg2 X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Az (X,Y) pont arkusz tangens értéke fokban -180 és 180 között."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://hu.wikipedia.org/wiki/JavaScript#Aritmetikai_oper.C3.A1torok"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "növeld %1 értékét %2 -vel"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "A \"%1\" változó értékének növelése egy számmal."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hu.wikipedia.org/wiki/Matematikai_konstans"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ismert matematikai konstans: π (3.141…), e (2.718…), φ (1.618…), gyök(2) (1.414…), gyök(½) (0.707…), vagy ∞ (végtelen)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "korlátozd %1-t %2 és %3 közé"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Egy változó értékének korlátozása a megadott zárt intervallumra."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "-nek osztója"; +Blockly.Msg["MATH_IS_EVEN"] = "páros"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatív"; +Blockly.Msg["MATH_IS_ODD"] = "páratlan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "pozitív"; +Blockly.Msg["MATH_IS_PRIME"] = "prím"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Ellenőrzi, hogy a szám páros, páratlan, prím, egész, pozitív vagy negatív-e, illetve osztható-e a másodikkal. Igaz, vagy hamis értéket ad eredményül."; +Blockly.Msg["MATH_IS_WHOLE"] = "egész"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Als.C3.B3_eg.C3.A9szr.C3.A9sz"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 maradéka"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Az egész osztás maradékát adja eredméynül."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hu.wikipedia.org/wiki/Sz%C3%A1m"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Egy szám."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "lista elemeinek átlaga"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "lista legnagyobb eleme"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "lista mediánja"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "lista legkisebb eleme"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "lista módusza"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "lista véletlen eleme"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "lista elemeinek szórása"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "lista elemeinek összege"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "A lista elemeinek átlagát adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "A lista legnagyobb elemét adja vissza."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "A lista elemeinek mediánját adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "A lista legkisebb elemét adja vissza."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "A lista elemeinek móduszát adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "A lista egy véletlen elemét adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "A lista elemeinek szórását adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "A lista elemeinek összegét adja eredményül."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://hu.wikipedia.org/wiki/V%C3%A9letlen"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "véletlen tört"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Véletlen tört érték 0.0 és 1.0 között."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://hu.wikipedia.org/wiki/V%C3%A9letlen"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "véletlen egész szám %1 között %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Véletlen egész szám a megadott zárt intervallumon belül."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Kerek.C3.ADt.C3.A9s"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "kerekítsd"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "kerekítsd lefelé"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "kerekítsd felfelé"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Egy szám kerekítése felfelé vagy lefelé."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://hu.wikipedia.org/wiki/Gy%C3%B6kvon%C3%A1s"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "abszolútérték"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "négyzetgyök"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "A szám abszolútértéke."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Az e megadott számú hatványa."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "A szám természetes alapú logaritmusa."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "A szám 10-es alapú logaritmusa."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "A szám -1 szerese."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "A 10 megadott számú hatványa."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "A szám négyzetgyöke."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://hu.wikipedia.org/wiki/Sz%C3%B6gf%C3%BCggv%C3%A9nyek"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "A fokban megadott szög arkusz koszinusz értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "A fokban megadott szög arkusz szinusz értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "A fokban megadott szög arkusz tangens értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "A fokban megadott szög koszinusz értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "A fokban megadott szög szinusz értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "A fokban megadott szög tangens értéke."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Változó létrehozása…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Az új változó neve:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Az új változó típusa:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "."; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "utasítások engedélyezése"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "paraméterlistaː"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Végrehajtja az eljárást."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Meghívja a függvényt."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "paraméterlistaː"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "„%1” létrehozása"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Írj erről a funkcióról..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "név"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "Eljárás"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Eljárás (nem ad vissza eredményt)."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "eredménye"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Függvény eredménnyel."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Figyelem: Az eljárásban azonos elnevezésű paramétert adtál meg."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Függvénydefiníció kiemelése"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ha az érték igaz, akkor visszatér a függvény értékével."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Figyelem: Ez a blokk csak függvénydefiníción belül használható."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "változó:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Bemenet hozzáadása a függvényhez."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "paraméterek"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bemenetek hozzáadása, eltávolítása vagy átrendezése ehhez a függvényhez."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Újra"; +Blockly.Msg["REMOVE_COMMENT"] = "Megjegyzés eltávolítása"; +Blockly.Msg["RENAME_VARIABLE"] = "Változó átnevezése…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Minden „%1” változó átnevezése erre:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "A %1 szövegéhez fűzd hozzá %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Szöveget fűz a \"%1\" változó értékéhez."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "kisbetűs"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Címként Formázott"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "NAGYBETŰS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "első"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hátulról"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "elölről"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "utolsó"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "véletlen"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "karaktere"; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "a szövegben: %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "A szöveg egy megadott karakterét adja eredményül."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 száma ebben: %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "A szöveg előfordulásainak megszámolása egy másik szövegben."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Elem hozzáfűzése a szöveghez."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "fűzd össze"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Összefűzéssel, törléssel vagy rendezéssel kapcsolato sblokkok szöveg szerkesztéséhez."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "betűtől a hátulról számított"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "betűtől a(z)"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "betűtől az utolsó"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "a"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "szövegben válaszd ki az első"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "szövegben válaszd ki a hátulról a(z)"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "szövegben válaszd ki a(z)"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "betűig tartó betűsort"; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "A megadott szövegrészletet adja eredményül."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "szövegben az első előfordulásának helye"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "szövegben az utolsó előfordulásának helye"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "A(z) %1 %2 %3 szövegnek"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "A keresett szöveg első vagy utolsó előfordulásával tér vissza. %1 esetén a szövegrészlet nem található."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 üres"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Igaz, ha a vizsgált szöveg hossza 0."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "fűzd össze"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tetszőleges számú szövegrészletet fűz össze egybefüggő szöveggé."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 hossza"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "A megadott szöveg karaktereinek számát adja eredményül (beleértve a szóközöket)."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "Üzenet %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Megejelníti a megadott kaakterláncot üzenetként a képernyőn."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Számot kér be a felhasználótól."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Szöveget kér be a felhasználótól."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Kérj be számot"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Kérj be szöveget"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 cseréje %2-vel %3-ban"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "A szöveg összes előfordulásának cseréje egy másik szöveggel."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 megfordítása"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Megfordítja a karakterek sorrendjét a szövegben."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://hu.wikipedia.org/wiki/String"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Egy betű, szó vagy szöveg egy sora."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "szóközök levágása mindkét végéről"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "szóközök levágása az elejéről"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "szóközök levágása a végéről"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Levágja a megadott szöveg végeiről a szóközöket."; +Blockly.Msg["TODAY"] = "Ma"; +Blockly.Msg["UNDO"] = "Visszavonás"; +Blockly.Msg["UNNAMED_KEY"] = "névtelen"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "változó"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Készíts \"%1=\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A változó értékét adja eredményül."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "%1 %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Készíts \"%1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "A változónak adhatunk értéket."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A(z) „%1” nevű változó már létezik."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Egy „%1” nevű változó már létezik egy másik típussal: „%2”."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly munkaterület"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Mondj valamit..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/hy.js b/blockly/msg/hy.js new file mode 100644 index 00000000000..af890b29cf8 --- /dev/null +++ b/blockly/msg/hy.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ավելացնել մեկնաբանություն"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Հնարավոր չի ջնջել %1 փոփոխականը, որովհետև այն '%2' ֆունկցիայի հայտարարման մասն է"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Փոխել նշանակություն:"; +Blockly.Msg["CLEAN_UP"] = "Մաքրել բլոկները"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Քանդել բլոկները"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Կրճատել բլոկը"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "գույն 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "գույն 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "հարաբերակցություն"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "խառնել"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Խառնում է երկու գույները միմյանց հետ տրված հարաբերակցությամբ (0.0 - 1.0):"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hy.wikipedia.org/wiki/Գույն"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Ընտրիր գույն ներկապնակից:"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "պատահական գույն"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Ընտրում է գույն պատահականության սկզբունքով:"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "կապույտ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "կանաչ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "կարմիր"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "գույնը"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ստեղծում է գույն կարմիրի, կանաչի և կապույտի նշված քանակություններով: Բոլոր արժեքները պետք է լինեն 0-ի և 100-ի միջև:"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "դուրս գալ ցիկլից"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "անցնել կրկնության հաջորդ կատարմանը"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Դադարեցնում է տվյալ կրկնությունը"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Դադարեցնում կրկնության մնացած մասը և անցնում է հաջորդ քայլին։"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ցիկլի ներսում:"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "յուրաքանչյուր %1 էլեմենտի համար %2 ցանկից"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Ցանկի յուրաքանչյուր անդամի արժեքը վերագրում է '%1' փոփոխականին և կատարում նշված հրամանները։"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "հաշվել %1-ը, %2֊ից մինչև %3, քայլը %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "'%1' փոփոխականին վերագրում է արժեքներ, սկսելով նախնական արժեքից, տրված քայլով և կատարում է նշված հրամանները"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ավելացնում է պայման «եթե» բլոկին:"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ավելացնել վերջնական ենթաբլոկ (այն կաշխատի, եթե բոլոր պայմանները կեղծ են)"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ավելացնել, հեռացնել կամ փոխել հերթականությունը այս \"եթե\" բլոկը վերակարգավորելու համար։"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "հակառակ դեպքում"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "հակառակ դեպքում, եթե"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "եթե"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Եթե պայմանը ճշմարիտ է, կատարում է որոշ հրահանգներ:"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Եթե պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում կատարում է հրահանգների երկրորդ բլոկը:"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը:"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը: Եթե պայմաններից ոչ մեկը ճշմարիտ չեն, ապա կատարում է հրահանգների վերջին բլոկը:"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "կատարել"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "կրկնել %1 անգամ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Կատարում է որոշ հրահանգներ մի քանի անգամ:"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "կրկնել, քանի դեռ չի"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "կրկնել, քանի դեռ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Քանի դեռ արժեքը կեղծ է, կատարում է որոշակի հրահանգներ:"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Քանի դեռ արժեքը ճշմարիտ է, կատարում է հրահանգները:"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ջնջե՞լ բոլոր %1 բլոկները:"; +Blockly.Msg["DELETE_BLOCK"] = "Ջնջել բլոկը"; +Blockly.Msg["DELETE_VARIABLE"] = "Հեռացնել '%1' փոփոխականը"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ջնջե՞լ '%2' փոփոխականի %1 կիրառությունները"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Ջնջել %1 բլոկ"; +Blockly.Msg["DIALOG_CANCEL"] = "Չեղարկել"; +Blockly.Msg["DIALOG_OK"] = "Լավ"; +Blockly.Msg["DISABLE_BLOCK"] = "Անջատել բլոկը"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Պատճենել"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Կրկնօրինակել մեկնաբանությունը"; +Blockly.Msg["ENABLE_BLOCK"] = "Միացնել բլոկը"; +Blockly.Msg["EXPAND_ALL"] = "Բացել բլոկները"; +Blockly.Msg["EXPAND_BLOCK"] = "Բացել բլոկը"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Արտաքին մուտքեր"; +Blockly.Msg["HELP"] = "Օգնություն"; +Blockly.Msg["INLINE_INPUTS"] = "Գծային մուտք"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ստեղծել դատարկ ցանկ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Վերադարձնում է 0 երկարությամբ ցանկ, որը տվյալներ չի պարունակում:"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ցանկ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Այս ցանկ բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հաջորդականությունը։"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ստեղծել ցանկ"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ավելացնել տարր ցանկին:"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ստեղծում է ցանկ ցանկացած քանակությամբ տվյալներով:"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "առաջինը"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ վերջից"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "վերցնել"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "վերցնել և հեռացնել"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "վերջինը"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "պատահական"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "հեռացնել"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Վերադարձնում է ցանկի առաջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Վերադարձնում է ցանկի վերջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Վերադարձնում է ցանկի պատահական տարր:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Հեռացնում և վերադարձնում է ցանկի առաջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Հեռացնում և վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Հեռացնում և վերադարձնում է ցանկի վերջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Հեռացնում և վերադարձնում է ցանկի պատահական տարր:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Հեռացնում է ցանկի առաջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Ցանկից հեռացնում է նշված դիրքում գտնվող անդամը։"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Հեռացնում է ցանկի վերջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Հեռացնում է ցանկից պատահական տարր:"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "մինչև # վերջից"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "մինչև #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "մինչև վերջ"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "վերցնել ենթա֊ցանկ սկզբից"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "վերցնել ենթացանկ, սկսած # վերջից"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "վերցնել ենթացանկ, սկսած #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ստեղծում է ցանկի նշված մասի պատճենը։"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 վերջին տարրն է:"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 առաջին տարրն է:"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "գտնել անդամի առաջին հանդիպման դիրքը"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "գտնել անդամի վերջին հանդիպման դիրքը"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Վերադարձնում է ցանկում անդամի առաջին/վերջին հանդիպման դիրքը։ Վերադարձնում է %1, եթե անդամը չի գտնվել։"; +Blockly.Msg["LISTS_INLIST"] = "ցանկում"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 դատարկ է"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Վերադարձնում է \"ճշմարիտ\" եթե ցանկը դատարկ է։"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1֊ի երկարությունը"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Վերադարձնում է ցանկի երկարությունը:"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ստեղծել ցանկ, %1 արժեքը կրկնելով %2 անգամ"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Տրված արժեքը նշված քանակով կրկնելու միջոցով, ստեղծում է ցանկ։"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "շրջել %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Շրջում է ցանկի պատճենը։"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "որպես"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ներմուծել"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "դնել"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ներմուծում է անդամը ցանկի սկզբում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ներմուծում է անդամը ցանկի նշված դիրքում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ավելացնում է անդամ ցանկի վերջում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ներմուծում է անդամը ցանկի պատահական դիրքում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Սահմանում է ցանկի առաջին տարրը:"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Տեղադրում է անդամը ցանկի նշված դիրքում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Սահմանում է ցանկի վերջին տարրը:"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Սահմանում է ցանկից պատահական տարր:"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "աճման կարգ"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "նվազման կարգ"; +Blockly.Msg["LISTS_SORT_TITLE"] = "դասավորել %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Դասավորում է ցանկի պատճենը"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "այբենական, անտեսել ռեգիստրը"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "թվային կարգ"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "այբբենական կարգ"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ստեղծել ցանկ տեքստից"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ստեղծել տեքստ ցանկից"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ցանկից ստեղծվում է միացյալ տեքստ, ցանկի անդամները միացվում են բաժանարարներով։"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Տեքստը վեր է ածվում ցանկի, նշված բաժանարարով։"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "բաժանարարով"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "կեղծ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Վերադարձնում է ճշմարիտ կամ կեղծ արժեք:"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ճշմարիտ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://hy.wikipedia.org/wiki/Անհավասարություն"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար են միմյանց:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ է երկրորդից:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ կամ հավասար է երկրորդին:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից առաջինը փոքր է երկրորդից:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը փոքր կամ հավասար է երկրորդին:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար չեն միմյանց:"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ոչ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքը կեղծ է: Վերադարձնում է կեղծ արժեք, եթե մուտքը ճշմարիտ է:"; +Blockly.Msg["LOGIC_NULL"] = "ոչինչ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Վերադարձնում է null (ոչինչ)"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "և"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "կամ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ ճշմարիտ են:"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից գոնե մեկը ճշմարիտ է:"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ստուգում"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "եթե կեղծ է"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "եթե ճշմարիտ է"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Ստուգում է ընտրության պայմանը։ Եթե այն ճշմարիտ է, վերադարձնում է առաջին արժեքը, հակառակ դեպքում ՝ երկրորդը։"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hy.wikipedia.org/wiki/Թվաբանություն"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Վերադարձնում է երկու թվերի գումարը:"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Վերադարձնում է քանորդը"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Վերադարձնում է երկու թվերի տարբերությունը:"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Վերադարձնում է երկու թվերի արտադրյալը"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Վերադարձնում է առաջին թիվի աստիճանը"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 ֊ի atan2֊ը"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Վերադարձնում է (X, Y) կետի արկտանգենսը աստիճաններով -180-ից մինչև 180:"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "փոխել %1-ի արժեքը %2֊ով"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ավելացնում է թիվ %1 փոփոխականին:"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hy.wikipedia.org/wiki/Մաթեմատիկական_հաստատուն"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Վերադարձնում է տարածված հաստատուններից մեկը՝ π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), կամ ∞ (անվերջություն):"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "սահմանափակել %1֊ը %2֊ի և %3֊ի միջև"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Սահմանափակել թիվը երկու արժեքներով (ներառյալ)"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "բաժանվում է"; +Blockly.Msg["MATH_IS_EVEN"] = "զույգ է"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "բացասական է"; +Blockly.Msg["MATH_IS_ODD"] = "կենտ է"; +Blockly.Msg["MATH_IS_POSITIVE"] = "դրական է"; +Blockly.Msg["MATH_IS_PRIME"] = "պարզ է"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Ստուգում է, թե թիվը զույգ է, կենտ է, պարզ է, ամբողջ է, դրական է, բացասական է կամ թե այն բաժանվում է որոշակի թվի վրա: Վերադարձնում է ճշմարիտ կամ կեղծ:"; +Blockly.Msg["MATH_IS_WHOLE"] = "ամբողջ է"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "%1֊ի և %2֊ի բաժանման մնացորդը"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Վերադարձնում է երկու թվերի բաժանման մնացորդը:"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hy.wikipedia.org/wiki/Թիվ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Թիվ"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ցանկի միջինը"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ցանկի առավելագույնը"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ցանկի միջնարժեք"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ցանկի նվազագույնը"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ցանկի մոդան"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ցանկի պատահական տարր"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ցանկի ստանդարտ շեղում"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ցանկի գումարը"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Վերադարձնում է ցանկում գտնվող արժեքների թվաբանական միջինը"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Վերադարձնում է ցանկի արժեքներից առավելագույնը"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Վերադարձնում է ցանկի միջնարժեք:"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Վերադարձնում է ցանկի արժեքներից նվազագույնը"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Վերադարձնում է ցանկի առավել հաճախ հանդիպող անդամների ցանկը։"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Վերադարձնում է պատահական տարր ցանկից:"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Վերադարձնում է ցանկի ստանդարտ շեղումը:"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Վերադարձնում է ցանկի բոլոր թվերի գումարը:"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Պատահական_թվերի_գեներատոր"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "պատահական կոտորակ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Վերադարձնում է պատահական թիվ 0.0-ից (ներառյալ) 1.0 միջակայքից:"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "պատահական ամբողջ թիվ %1 -ից %2 -ը"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Վերադարձնում է պատահական ամբողջ թիվ տրված երկու թվերի միջև (ներառյալ):"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Կլորացում"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "կլորացնել"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "կլորացնել ցած"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "կլորացնել վեր"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Կլորացնում է թիվը վերև կամ ներքև:"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "բացարձակ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Քառակուսի արմատ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Վերադարձնում է թվի բացարձակ արժեքը:"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Վերադարձնում է թվի աստիճանը։"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Վերադարձնում է թվի բնական լոգարիթմը:"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Վերադարձնում է թվի 10 հիմքով լոգարիթմը:"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Վերադարձնում է ժխտված թիվը:"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Վերադարձնում է 10֊ի նշված աստիճանը։"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Վերադարձնում է թվի քառակուսի աստիճանը"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://hy.wikipedia.org/wiki/Եռանկյունաչափական_ֆունկցիաներ"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Վերադարձնում է թվի արկկոսինուսը:"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Վերադարձնում է թվի արկսինուսը(աստիճաններով):"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Վերադարձնում է թվի արկտանգենսը:"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Վերադարձնում է անկյան կոսինուսը աստիճաններով (ոչ ռադիաններով):"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Վերադարձնում է անկյան սինուսը աստիճաններով(ոչ ռադիաններով):"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Վերադարձնում է անկյան տանգենսը աստիճաններով (ոչ ռադիաններով):"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ստեղծել գույնի փոփոխական"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ստեղծել թվային փոփոխական"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ստեղծել տեքստային փոփոխական"; +Blockly.Msg["NEW_VARIABLE"] = "Ստեղծել փոփոխական..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Նոր փոփոխականի անունը՝"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Փոփոխականի նոր տիպ"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "թույլատրել արտահայտությունները"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "պարամետրերի ցանկ՝"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Կատարում է %1 ֆունկցիան"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Կատարում է '%1' ֆունկցիան և օգտագործում դրա արդյունքը։"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "պարամետրերի ցանկ՝"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ստեղծել '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Նկարագրիր այս ֆունկցիան..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "կատարել որևէ բան"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ֆունկցիա"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ստեղծում է ֆունկցիա, որը արժեք չի վերադարձնում:"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "վերադարձնել"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ստեղծում է ֆունկցիա, որը վերադարձնում է արժեք:"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Զգուշացում։ Այս ֆունկցիան ունի կրկնվող պարամտերեր։"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Ընդգծել ֆունկցիայի հայտարարումը"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Եթե արժեքը ճշմարիտ է, վերադարձնում է երկորդ արժեքը:"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ֆունկցիայի սահմանման ներսում:"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "մուտքի անուն՝"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ֆունկցիային ավելալցնել մուտք (պարամետր)։"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "մուտքեր"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Ավելացնել, հեռացնել կամ վերադասավորել է այս ֆունկցիայի մուտքերը (պարամետրերը)։"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Կրկին անել"; +Blockly.Msg["REMOVE_COMMENT"] = "Հեռացնել մեկնաբանությունը"; +Blockly.Msg["RENAME_VARIABLE"] = "Վերանվանել փոփոխականը..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1֊ին կցել %2 տեքստը"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Կցել տեքստ '%1' փոփոխականին"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "բերել փոքրատառերի"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "բերել Սկզբնա Մեծատառերի"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "բերել ՄԵԾԱՏԱՌԵՐԻ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Վերադարձնում է տեքստի կրկնօրինակը, ՄԵԾԱՏԱՌԵՐՈՎ կամ փոքրատառերով"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "վերցնել առաջին տառը"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "վերցնել տառ № վերջից"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "վերցնել տառ №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "վերցնել վերջին տառը"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "վերցնել պատահական տառ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "տեքստում %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Վերադարձնում է նշված դիրքի տառը"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "հաշվել %1 %2֊ում"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Հաշվել, թե քանի անգամ է տեքստը հանդիպում մեկ այլ տեքստի մեջ։"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ավելացնել էլեմենտ տեքստին:"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "կցել"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Այս տեքստային բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հերթականությունը"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "մինչև # տառը, վերջից"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "մինչև # տառը"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "մինչև վերջին տառը"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "տեքստում"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "տալիս է ենթատող առաջին տառից"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "տալիս է ենթատող # տառից սկսած, վերջից"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "տալիս է ենթատող սկսելով # տառից"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Վերադարձնում է տեքստի նշված մասը։"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "գտնել տեքստի առաջին հանդիպումը"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "գտնել տեքստի վերջին հանդիպումը"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "Տեքստում %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Վերադարձնում է առաջին տեքստի հանդիպման առաջին (կամ վերջին) դիրքը երկրորդ տեքստում։ Վերադարձնում է %1, եթե տեքստը չի գտնվել։"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 -ը դատարկ է"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Վերադարձնում է ճշմարիտ արժեք, եթե տրամադրված տեքստը դատարկ է:"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ստեղծել տեքստ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ստեղծում է տեքստի մաս՝ միմյանց կցելով ցանկացած քանակությամբ տարրեր:"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 -ի երկարությունը"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Վերադարձնում է տրված տեքստի տառերի քանակը (ներառյալ բացատները)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "տպել %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Տպում է նշված տեքստը, թիվը կամ այլ արժեք․"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Հարցնել թիվ օգտատիրոջից։"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Հարցնել տեքստ օգտատիրոջից։"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "հացնել թիվ, հուշումով"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "հարցնել տեքստ, հուշումով"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "փոխարինել %1֊ը %2֊ով %3֊ում"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Փոխարինել տեքստի բոլոր գտնված տարբերակները մեկ այլ տեսքով։"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "շրջել %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Փոխում է տեքստում տառերի հաջորդականությունը։"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Տառ, բառ կամ տեքստի տող:"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "կտրում է բացատները երկու կողմերից"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "կտրում է բացատները ձախ կողմից"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "կտրում է բացատները աջ կողմից"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Վերադարձնում է տեքստի կրկնօրինակը, առանց սկզբի կամ/և վերջի բացատների։"; +Blockly.Msg["TODAY"] = "Այսօր"; +Blockly.Msg["UNDO"] = "Հետ շրջել"; +Blockly.Msg["UNNAMED_KEY"] = "անանուն"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "տարր"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ստեղծել 'վերագրել %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Վերադարձնում է այս փոփոխականի արժեքը:"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "վերագրել %1֊ին %2 արժեքը"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "ստեղծել 'ստանալ %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Փոփոխականին վերագրում է ներմուծված արժեքը։"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' անունով փոփոխական արդեն գոյություն ունի"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' անունով փոփոխական արդեն գոյություն ունի այլ տիպի համար: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Մի բան ասա ․․․"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ia.js b/blockly/msg/ia.js new file mode 100644 index 00000000000..d6ca7cabee8 --- /dev/null +++ b/blockly/msg/ia.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Adder commento"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Impossibile deler le variabile '%1' perque illo face parte del definition del function '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar valor:"; +Blockly.Msg["CLEAN_UP"] = "Rangiar le blocos"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blocos plicate contine advertimentos."; +Blockly.Msg["COLLAPSE_ALL"] = "Plicar blocos"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Plicar bloco"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ration"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "miscer"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Misce duo colores con un ration specificate (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ia.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Elige un color del paletta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatori"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Eliger un color al hasardo."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rubie"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorar con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crear un color con le quantitate specificate de rubie, verde e blau. Tote le valores debe esser inter 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "escappar del bucla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar con le proxime iteration del bucla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Escappar del bucla continente."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Saltar le resto de iste bucla e continuar con le proxime iteration."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Attention: Iste bloco pote solmente esser usate in un bucla."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pro cata elemento %1 in lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pro cata elemento in un lista, mitter lo in le variabile '%1' e exequer certe instructiones."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar con %1 de %2 a %3 per %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Mitter in le variabile '%1' le valores ab le numero initial usque al numero final, con passos secundo le intervallo specificate, e exequer le blocos specificate."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Adder un condition al bloco \"si\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Adder un condition final de reserva al bloco \"si\"."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Adde, remove o reordina sectiones pro reconfigurar iste bloco \"si\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "si non"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "si non si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor es ver, exequer certe instructiones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor es ver, exequer le prime bloco de instructiones. Si non, exequer le secunde bloco de instructiones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones. Si necun del valores es ver, exequer le ultime bloco de instructiones."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ia.wikipedia.org/wiki/Bucla_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "face"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeter %1 vices"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Exequer certe instructiones plure vices."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeter usque a"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeter durante que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Durante que un valor es false, exequer certe instructiones."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Durante que un valor es ver, exequer certe instructiones."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Deler tote le %1 blocos?"; +Blockly.Msg["DELETE_BLOCK"] = "Deler bloco"; +Blockly.Msg["DELETE_VARIABLE"] = "Deler le variabile '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Deler %1 usos del variabile '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Deler %1 blocos"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancellar"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disactivar bloco"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar commento"; +Blockly.Msg["ENABLE_BLOCK"] = "Activar bloco"; +Blockly.Msg["EXPAND_ALL"] = "Displicar blocos"; +Blockly.Msg["EXPAND_BLOCK"] = "Displicar bloco"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entrata externe"; +Blockly.Msg["HELP"] = "Adjuta"; +Blockly.Msg["INLINE_INPUTS"] = "Entrata interne"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear un lista vacue"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna un lista, de longitude 0, sin datos."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Adde, remove o reordina sectiones pro reconfigurar iste bloco de listas."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear lista con"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Adder un elemento al lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crear un lista con un numero qualcunque de elementos."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prime"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ ab fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "prender"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "prender e remover"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ultime"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatori"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remover"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna le prime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna le elemento presente al position specificate in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna le ultime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna un elemento aleatori in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Remove e retorna le prime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Remove e retorna le elemento presente al position specificate in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Remove e retorna le ultime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Remove e retorna un elemento aleatori in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Remove le prime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Remove le elemento presente al position specificate in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Remove le ultime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Remove un elemento aleatori in un lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "usque al № ab fin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "usque al №"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "usque al ultime"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "prender sublista ab initio"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "prender sublista ab № a partir del fin"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "prender sublista ab №"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea un copia del parte specificate de un lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es le ultime elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es le prime elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "cercar le prime occurrentia del elemento"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "cercar le ultime occurrentia del elemento"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna le indice del prime/ultime occurrentia del elemento in le lista. Retorna %1 si le elemento non es trovate."; +Blockly.Msg["LISTS_INLIST"] = "in lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 es vacue"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retorna ver si le lista es vacue."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitude de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna le longitude de un lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "crear lista con elemento %1 repetite %2 vices"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea un lista que contine le valor fornite, repetite le numero specificate de vices."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverter un copia de un lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "a"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserer in"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "mitter"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insere le elemento al initio de un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insere le elemento al position specificate in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Adjunge le elemento al fin de un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insere le elemento a un position aleatori in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Defini le valor del prime elemento in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Defini le valor del elemento al position specificate in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Defini le valor del ultime elemento in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Defini le valor de un elemento aleatori in un lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordinamento %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordinar un copia de un lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignorar majuscula/minuscula"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "crear lista ab texto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "crear texto ab lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Unir un lista de textos, separate per un delimitator, in un sol texto."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Divider texto in un lista de textos, separante lo a cata delimitator."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con delimitator"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna o ver o false."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ver"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ia.wikipedia.org/wiki/Inequalitate_(mathematica)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retornar ver si le duo entratas es equal."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retornar ver si le prime entrata es major que le secunde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retornar ver si le prime entrata es major que o equal al secunde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retornar ver si le prime entrata es minor que le secunde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retornar ver si le prime entrata es minor que o equal al secunde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retornar ver si le duo entratas non es equal."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retornar ver si le entrata es false. Retornar false si le entrata es ver."; +Blockly.Msg["LOGIC_NULL"] = "nulle"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nulle."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retornar ver si ambe entratas es ver."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retornar ver si al minus un del entratas es ver."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si false"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si ver"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Verificar le condition in 'test'. Si le condition es ver, retorna le valor de 'si ver'; si non, retorna le valor de 'si false'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ia.wikipedia.org/wiki/Arithmetica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retornar le summa del duo numeros."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retornar le quotiente del duo numeros."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retornar le differentia del duo numeros."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retornar le producto del duo numeros."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retornar le prime numero elevate al potentia del secunde numero."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Retornar le arco tangente del puncto (X, Y) in grados de -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "cambiar %1 per %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Adder un numero al variabile '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ia.wikipedia.org/wiki/Constante_mathematic"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retornar un del constantes commun: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…) o ∞ (infinite)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limitar %1 inter %2 e %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limitar un numero a esser inter le limites specificate (incluse)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "es divisibile per"; +Blockly.Msg["MATH_IS_EVEN"] = "es par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "es negative"; +Blockly.Msg["MATH_IS_ODD"] = "es impare"; +Blockly.Msg["MATH_IS_POSITIVE"] = "es positive"; +Blockly.Msg["MATH_IS_PRIME"] = "es prime"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verificar si un numero es par, impare, prime, integre, positive, negative, o divisibile per un certe numero. Retorna ver o false."; +Blockly.Msg["MATH_IS_WHOLE"] = "es integre"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "resto de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retornar le resto del division del duo numeros."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ia.wikipedia.org/wiki/Numero"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un numero."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximo del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimo del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modas del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "elemento aleatori del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviation standard del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa del lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retornar le media arithmetic del valores numeric in le lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retornar le numero le plus grande in le lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retornar le numero median del lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retornar le numero le plus parve in le lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retornar un lista del elemento(s) le plus commun in le lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retornar un elemento aleatori del lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retornar le deviation standard del lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retornar le summa de tote le numeros in le lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraction aleatori"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Retornar un fraction aleatori inter 0.0 (incluse) e 1.0 (excluse)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "numero integre aleatori inter %1 e %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retornar un numero integre aleatori inter le duo limites specificate, incluse."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ia.wikipedia.org/wiki/Rotundamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrotundar"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrotundar a infra"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrotundar a supra"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrotundar un numero a supra o a infra."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ia.wikipedia.org/wiki/Radice_quadrate"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "radice quadrate"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retornar le valor absolute de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retornar e elevate al potentia de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retornar le logarithmo natural de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retornar le logarithmo in base 10 de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retornar le negation de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retornar 10 elevate al potentia de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retornar le radice quadrate de un numero."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retornar le arcocosino de un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retornar le arcosino de un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retornar le arcotangente de un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retornar le cosino de un grado (non radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retornar le sino de un grado (non radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retornar le tangente de un grado (non radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear variabile de color..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crear variabile numeric..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear variabile textual..."; +Blockly.Msg["NEW_VARIABLE"] = "Crear variabile..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nomine del nove variabile:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nove typo de variabile:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitter declarationes"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executar le function '%1' definite per le usator."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executar le function '%1' definite per le usator e usar su resultato."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe iste function..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "facer qualcosa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "pro"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea un function que non retorna un valor."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retornar"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea un function que retorna un valor."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Attention: Iste function ha parametros duplicate."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Accentuar le definition del function"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si un valor es ver, alora retornar un secunde valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Attention: Iste bloco pote solmente esser usate in le definition de un function."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nomine del entrata:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adder un entrata al function."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entratas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adder, remover o reordinar le entratas pro iste function."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Refacer"; +Blockly.Msg["REMOVE_COMMENT"] = "Remover commento"; +Blockly.Msg["RENAME_VARIABLE"] = "Renominar variabile..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renominar tote le variabiles '%1' a:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 adjunger texto %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Adjunger un texto al variabile '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "in minusculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "con Initiales Majuscule"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "in MAJUSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retornar un copia del texto con differente majusculas/minusculas."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "prender le prime littera"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "prender ab le fin le littera №"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "prender le littera №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "prender le ultime littera"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "prender un littera aleatori"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in le texto %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Retorna le littera presente al position specificate."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "contar %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Contar quante vices un texto occurre intra un altere texto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Adder un elemento al texto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Adde, remove o reordina sectiones pro reconfigurar iste bloco de texto."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ab le fin usque al littera №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "usque al littera №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "usque al ultime littera"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in le texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "prender subcatena ab le prime littera"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "prender subcatena ab le fin ab le littera №"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "prender subcatena ab le littera №"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Retorna le parte specificate del texto."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "cercar le prime occurrentia del texto"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "cercar le ultime occurrentia del texto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in le texto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna le indice del prime/ultime occurrentia del prime texto in le secunde texto. Retorna %1 si le texto non es trovate."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 es vacue"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna ver si le texto fornite es vacue."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear texto con"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crear un pecia de texto uniente un certe numero de elementos."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longitude de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Retorna le numero de litteras (incluse spatios) in le texto fornite."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "scriber %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Scriber le texto, numero o altere valor specificate."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Peter un numero al usator."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Peter un texto al usator."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "peter un numero con le message"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "peter un texto con le message"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "reimplaciar %1 per %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Reimplaciar tote le occurrentias de un texto intra un altere texto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverte le ordine del characteres in le texto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Un littera, parola o linea de texto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "remover spatios de ambe lateres de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "remover spatios del sinistre latere de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "remover spatios del dextre latere de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retornar un copia del texto con spatios eliminate de un extremitate o ambes."; +Blockly.Msg["TODAY"] = "Hodie"; +Blockly.Msg["UNDO"] = "Disfacer"; +Blockly.Msg["UNNAMED_KEY"] = "sin nomine"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "cosa"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crea 'mitter %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna le valor de iste variabile."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "mitter %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'prender %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Mitte iste variabile al valor del entrata."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Un variabile con le nomine '%1' jam existe."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Un variabile con le nomine '%1' jam existe pro un altere typo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Spatio de travalio de Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Dice qualcosa..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/id.js b/blockly/msg/id.js new file mode 100644 index 00000000000..4f9c8159cf8 --- /dev/null +++ b/blockly/msg/id.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Tambahkan Komentar"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Tidak bisa menghapus variabel '%1' karena variabel ini bagian dari sebuah definisi dari fungsi '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ubah nilai:"; +Blockly.Msg["CLEAN_UP"] = "Bersihkan Blok"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blok yang diciutkan memiliki peringatan."; +Blockly.Msg["COLLAPSE_ALL"] = "Ciutkan Blok"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Ciutkan Blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "warna 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "warna 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "rasio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "campur"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Campur dua warna secara bersamaan dengan perbandingan (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Pilih warna dari daftar warna."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "Warna acak"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Pilih warna secara acak."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "biru"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "hijau"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "merah"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Dengan warna"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Buatlah warna dengan jumlah yang ditentukan dari merah, hijau dan biru. Semua nilai harus antarai 0 sampai 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "keluar dari perulangan"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "lanjutkan dengan langkah perulangan berikutnya"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Keluar dari perulangan."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Abaikan sisa dari perulangan ini, dan lanjutkan dengan langkah berikutnya."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Peringatan: Blok ini hanya dapat digunakan dalam perulangan."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "untuk setiap item %1 di dalam list %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Untuk tiap-tiap item di dalam list, tetapkan variabel '%1' ke dalam item, selanjutnya kerjakan beberapa statement."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Cacah dengan %1 dari %2 ke %3 dengan step / penambahan %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Menggunakan variabel \"%1\" dengan mengambil nilai dari batas awal hingga ke batas akhir, dengan interval tertentu, dan mengerjakan block tertentu."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tambahkan prasyarat ke dalam blok IF."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Terakhir, tambahkan kondisi tangkap-semua kedalam blok IF."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tambahkan, hapus, atau susun kembali bagian untuk mengkonfigurasi blok IF ini."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "lainnya"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "atau jika"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jika"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jika nilainya benar, maka lakukan beberapa perintah."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jika nilainya benar, maka kerjakan perintah blok pertama. Jika tidak, kerjakan perintah blok kedua."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua. Jika dua-duanya tidak benar, kerjakan perintah blok terakhir."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "kerjakan"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulangi %1 kali"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Lakukan beberapa perintah beberapa kali."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulangi sampai"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ulangi jika"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Selagi nilainya salah, maka lakukan beberapa perintah."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Selagi nilainya benar, maka lakukan beberapa perintah."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hapus semua %1 blok?"; +Blockly.Msg["DELETE_BLOCK"] = "Hapus Blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Hapus variabel '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Hapus %1 yang digunakan pada variabel '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Hapus %1 Blok"; +Blockly.Msg["DIALOG_CANCEL"] = "Batal"; +Blockly.Msg["DIALOG_OK"] = "Oke"; +Blockly.Msg["DISABLE_BLOCK"] = "Nonaktifkan Blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplikat Komentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktifkan Blok"; +Blockly.Msg["EXPAND_ALL"] = "Kembangkan Blok"; +Blockly.Msg["EXPAND_BLOCK"] = "Kembangkan Blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Input Eksternal"; +Blockly.Msg["HELP"] = "Bantuan"; +Blockly.Msg["INLINE_INPUTS"] = "Input Inline"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "buat list kosong"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Kembalikan list, dengan panjang 0, tidak berisi data"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tambahkan, hapus, atau susun ulang bagian untuk mengkonfigurasi blok list ini."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "buat list dengan"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tambahkan sebuah item ke list."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Buat sebuah list dengan sejumlah item."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pertama"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dari akhir"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "dapatkan"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "dapatkan dan hapus"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "terakhir"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "acak"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "Hapus"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Kembalikan item pertama dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Kembalikan item di posisi tertentu dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Kembalikan item terakhir dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Kembalikan item acak dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Hapus dan kembalikan item pertama dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Hapus dan kembalikan item di posisi tertentu dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Hapus dan kembalikan item terakhir dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Hapus dan kembalikan item acak dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Hapus item pertama dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Hapus item di posisi tertentu dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Hapus item terakhir dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Hapus sebuah item acak dalam list."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ke # dari akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ke #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ke yang paling akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "dapatkan sub-list dari pertama"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "dapatkan sub-list dari nomor # dari akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "dapatkan sub-list dari #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Buat salinan bagian tertentu dari list."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 adalah item terakhir."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 adalah item pertama."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "cari kejadian pertama item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "cari kejadian terakhir item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Kembalikan indeks dari item pertama/terakhir kali muncul dalam list. Kembalikan %1 jika item tidak ditemukan."; +Blockly.Msg["LISTS_INLIST"] = "dalam list"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 kosong"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika list kosong."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "panjang dari %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Kembalikan panjang list."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "buat list dengan item %1 diulang %2 kali"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Buat sebuah list yang terdiri dari nilai yang diberikan diulang sebanyak jumlah yang ditentukan."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "balikkan %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Balikkan salinan dari daftar."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sebagai"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "sisipkan di"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "tetapkan"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Sisipkan item di bagian awal dari list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Sisipkan item ke dalam posisi yang telah ditentukan di dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Tambahkan item ke bagian akhir list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Sisipkan item secara acak ke dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Tetapkan item pertama di dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Tetapkan item ke dalam posisi yang telah ditentukan di dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Menetapkan item terakhir dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Tetapkan secara acak sebuah item dalam list."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "menaik"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "menurun"; +Blockly.Msg["LISTS_SORT_TITLE"] = "urutkan %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Urutkan salinan dari daftar"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "sesuai abjad, abaikan kasus"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "sesuai nomor"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "sesuai abjad"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "buat list dari teks"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "buat teks dari list"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Gabung daftar teks menjadi satu teks, yang dipisahkan oleh pembatas."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Membagi teks ke dalam daftar teks, pisahkan pada setiap pembatas."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "dengan pembatas"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "salah"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Kembalikan benar atau salah."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "benar"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Kembalikan benar jika kedua input sama satu dengan lainnya."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Kembalikan benar jika input pertama lebih besar dari input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Kembalikan benar jika input pertama lebih besar dari atau sama dengan input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Kembalikan benar jika input pertama lebih kecil dari input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Kembalikan benar jika input pertama lebih kecil atau sama dengan input kedua ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Kembalikan benar jika kedua input tidak sama satu dengan lainnya."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "bukan (not) %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Kembalikan benar jika input salah. Kembalikan salah jika input benar."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Kembalikan null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "dan"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "atau"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Kembalikan benar jika kedua input adalah benar."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Kembalikan benar jika minimal satu input nilainya benar."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jika salah"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jika benar"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Periksa kondisi di 'test'. Jika kondisi benar, kembalikan nilai 'if true'; jika sebaliknya kembalikan nilai 'if false'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://id.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Kembalikan jumlah dari kedua angka."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Kembalikan hasil bagi dari kedua angka."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Kembalikan selisih dari kedua angka."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Kembalikan perkalian dari kedua angka."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Kembalikan angka pertama pangkat angka kedua."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Kembalikan arctangen titik (X, Y) dalam derajat dari -180 hingga 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "ubah %1 oleh %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Tambahkan angka kedalam variabel '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Kembalikan salah satu konstanta: π (3,141…), e (2,718…), φ (1,618…), akar(2) (1,414…), akar(½) (0.707…), atau ∞ (tak terhingga)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "Batasi %1 rendah %2 tinggi %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Batasi angka antara batas yang ditentukan (inklusif)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "dapat dibagi oleh"; +Blockly.Msg["MATH_IS_EVEN"] = "adalah bilangan genap"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "adalah bilangan negatif"; +Blockly.Msg["MATH_IS_ODD"] = "adalah bilangan ganjil"; +Blockly.Msg["MATH_IS_POSITIVE"] = "adalah bilangan positif"; +Blockly.Msg["MATH_IS_PRIME"] = "adalah bilangan pokok"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Periksa apakah angka adalah bilangan genap, bilangan ganjil, bilangan pokok, bilangan bulat, bilangan positif, bilangan negatif, atau apakan bisa dibagi oleh angka tertentu. Kembalikan benar atau salah."; +Blockly.Msg["MATH_IS_WHOLE"] = "adalah bilangan bulat"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "sisa dari %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Kembalikan sisa dari pembagian ke dua angka."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Suatu angka."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "rata-rata dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mode-mode dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "item acak dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviasi standar dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "jumlah dari list"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Kembalikan rata-rata (mean aritmetik) dari nilai numerik dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Kembalikan angka terbesar dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Kembalikan median dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Kembalikan angka terkecil dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Kembalikan list berisi item yang paling umum dari dalam list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Kembalikan elemen acak dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Kembalikan standard deviasi dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Kembalikan jumlah dari seluruh bilangan dari list."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "nilai pecahan acak"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Kembalikan nilai pecahan acak antara 0.0 (inklusif) dan 1.0 (eksklusif)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "acak bulat dari %1 sampai %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Kembalikan bilangan acak antara dua batas yang ditentukan, inklusif."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "membulatkan"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "membulatkan kebawah"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "membulatkan keatas"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Bulatkan suatu bilangan naik atau turun."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "mutlak"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "akar"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Kembalikan nilai absolut angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Kembalikan 10 pangkat angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Kembalikan logaritma natural dari angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Kembalikan dasar logaritma 10 dari angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Kembalikan penyangkalan terhadap angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Kembalikan 10 pangkat angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Kembalikan akar dari angka."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Kembalikan acosine dari angka."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Kembalikan asin dari angka."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Kembalikan atan dari angka."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kembalikan cosinus dari derajat (bukan radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Kembalikan sinus dari derajat (bukan radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Kembalikan tangen dari derajat (bukan radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Buat variabel warna..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Buat variabel number..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Buat variabel string..."; +Blockly.Msg["NEW_VARIABLE"] = "Buat variabel..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nama variabel baru:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipe variabel baru:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "memungkinkan pernyataan"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "dengan:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Menjalankan fungsi '%1' yang ditetapkan pengguna."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Menjalankan fungsi '%1' yang ditetapkan pengguna dan menggunakan outputnya."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "dengan:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Buat '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Jelaskan fungsi ini..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "buat sesuatu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "untuk"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Buat sebuah fungsi tanpa output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "kembali"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Buat sebuah fungsi dengan satu output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Peringatan: Fungsi ini memiliki parameter duplikat."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sorot definisi fungsi"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jika nilai yang benar, kemudian kembalikan nilai kedua."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Peringatan: Blok ini dapat digunakan hanya dalam definisi fungsi."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "masukan Nama:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tambahkan masukan ke fungsi."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "input"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Menambah, menghapus, atau menyusun ulang masukan untuk fungsi ini."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Lakukan ulang"; +Blockly.Msg["REMOVE_COMMENT"] = "Hapus Komentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Ubah nama variabel..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Ubah nama semua variabel '%1' menjadi:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "untuk %1 tambahkan teks %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tambahkan beberapa teks ke variabel '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "menjadi huruf kecil"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "menjadi huruf pertama kapital"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "menjadi huruf kapital"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Kembalikan kopi dari text dengan kapitalisasi yang berbeda."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ambil huruf pertama"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ambil huruf nomor # dari belakang"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "ambil huruf ke #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "ambil huruf terakhir"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ambil huruf secara acak"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "dalam teks %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Kembalikan karakter dari posisi tertentu."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "hitung %1 dalam %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Hitung berapa banyak teks muncul dalam teks lain."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Tambahkan suatu item ke dalam teks."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tambah, ambil, atau susun ulang teks blok."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "pada huruf nomer # dari terakhir"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "pada huruf #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "pada huruf terakhir"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in teks"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ambil bagian teks (substring) dari huruf pertama"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "ambil bagian teks (substring) dari huruf ke # dari terakhir"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "ambil bagian teks (substring) dari huruf no #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Kembalikan spesifik bagian dari teks."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "temukan kejadian pertama dalam teks"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "temukan kejadian terakhir dalam teks"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "dalam teks %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Kembalikan indeks pertama dan terakhir dari kejadian pertama/terakhir dari teks pertama dalam teks kedua. Kembalikan %1 jika teks tidak ditemukan."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 kosong"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika teks yang disediakan kosong."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "buat teks dengan"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Buat teks dengan cara gabungkan sejumlah item."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "panjang dari %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Kembalikan sejumlah huruf (termasuk spasi) dari teks yang disediakan."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "cetak %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Cetak teks yant ditentukan, angka atau ninlai lainnya."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Meminta pengguna untuk memberi sebuah angka."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Meminta pengguna untuk memberi beberapa teks."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Meminta angka dengan pesan"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "meminta teks dengan pesan"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "ganti %1 dengan %2 dalam %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ganti semua kemunculan teks dalam teks lain."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "balikkan %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Balikkan urutan huruf dalam teks."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Huruf, kata atau baris teks."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "pangkas ruang dari kedua belah sisi"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "pangkas ruang dari sisi kiri"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "pangkas ruang dari sisi kanan"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Kembali salinan teks dengan spasi dihapus dari satu atau kedua ujungnya."; +Blockly.Msg["TODAY"] = "Hari ini"; +Blockly.Msg["UNDO"] = "Urungkan"; +Blockly.Msg["UNNAMED_KEY"] = "tanpa nama"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Buat 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Kembalikan nilai variabel ini."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "tetapkan %1 untuk %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Buat 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "tetapkan variabel ini dengan input yang sama."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Sebuah variabel dengan nama '%1' sudah ada."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Variabel yg bernama '%1' sudah ada untuk tipe lain: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Ruang Kerja Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Ucapkan sesuatu..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ig.js b/blockly/msg/ig.js new file mode 100644 index 00000000000..c29f72f0d51 --- /dev/null +++ b/blockly/msg/ig.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Tịnye okwu"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Agaghị ekpochapụlị agbanwe '%1' maka nsonye ya na nkọwa nke ọrụ ahụ '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Gbanwee akara:"; +Blockly.Msg["CLEAN_UP"] = "Hichapụ ngọngọ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Kwada Ngọngọ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Kwada Ngọngọ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "agba 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "agba 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "oke"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ngwakọta"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Na ngwakọta agba abụọ ọnụ na na oke enyere (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Họrọ agba site na palette."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "agba ọbụla"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Họrọ agba na-nke ọbụla."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "bluu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "akwụkwọ ndụ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "uhie"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "agba ya na"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Mepụta agba nwere ọnụ ọgụgụ kpọmkwem nke agba uhie, akwụkwọ ndụ, na akara niile ga-adịrịrị n'etiti 0 rụọ 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "gbapuo na meghachi a"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "malite na nsoghari nke meghachi ozo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Gba puo na gburugburu nke ọdị n’ime ya."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Wụọ mkpụchị meghachi ndị a fọdụrụ, ma gaa n'ihu na nsoghari nke aka."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Ịdọ aka ná ntị: Enwere ike iji ngọngọ a naanị n'ime meghachi."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "maka ihe ọ bụla %1 n'ime ndepụta %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Maka ihe ọ bụla n'ime ndepụta, debe agbanwe '%1' na ihe ahụ, wee degharịa ụfọdụ koodu."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "gụọ na %1 site na %2 rụọ %3 tupu %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Nwere ngwakọta '%1' na akara ọbụla sịte na mbịdo ọnụọgụgụ rụọ na ngwụcha ọnụọgụgụ, na-ngụta sịtere na nkeji oge kpọmkwem. megharịa koodu oge ọbụla:"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tinye ọnọdụ na ngọngọ ma ọ bụrụ."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tinye ngwucha, ọnọdụ jide-niile na ngọngọ ma ọ bụrụ."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearịa nke a ma ọ bụrụ na ngọngọ."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ọzọ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ọzọ ma ọ bụrụ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ọ bụrụ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ọ bụrụ na akara bụ ezịọkwụ, mezie ụfọdụ okwu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ọ bụrụ na akara bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, mezie ngọngọ nke abụọ nke okwu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu. Ọ bụrụ na onweghị akara bụ ezịọkwụ, mee ngọngọ okwu ikpeazụ."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "mee"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "meghachi ụgbọ %1"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Mee ụfọdụ okwu ọtụtụ ugboro."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "megharịa tụpụ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "megharịa mgbe"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Ọ bụ ebe akara bụ ụgha, megharịa ụfọdụ koodu."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Ọ bụ ebe akara bụ ezịọkwụ, megharịa ụfọdụ koodu."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Mkpọchi %1 ngọngọ niile?"; +Blockly.Msg["DELETE_BLOCK"] = "Kpochapụ Ngọngọ"; +Blockly.Msg["DELETE_VARIABLE"] = "Kpochapụ agbanwe ‘%1' ahu"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Kpochapụ %1 ojịjị nke agbanwe '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Kpochapụ %1 Ngọngọ"; +Blockly.Msg["DIALOG_CANCEL"] = "Hapụ̀"; +Blockly.Msg["DIALOG_OK"] = "Ọ DỊ MMA"; +Blockly.Msg["DISABLE_BLOCK"] = "Gbanyụọ Ngọngọ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Ntụgharị"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Tụgharịa okwu"; +Blockly.Msg["ENABLE_BLOCK"] = "Gbanye Ngọngọ"; +Blockly.Msg["EXPAND_ALL"] = "Gbasaa Ngọngọ"; +Blockly.Msg["EXPAND_BLOCK"] = "Gbasaa Ngọngọ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ntinye Mpụta"; +Blockly.Msg["HELP"] = "Enyemaka"; +Blockly.Msg["INLINE_INPUTS"] = "Ntinye N'ahịrị"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "mepụta ndepụta efu"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Weghachite ndepụta, nke ogologo 0, nke enweghị ndekọ data"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ndepụta"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "mepụta ndepụta"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tinye ihe na ndepụta."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Mepụta ndepụta na nọmba ọ bụla."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "mbu"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# site na njedebe"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "nweta"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "nweta ma wepu"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ikpeazụ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "nke ọ bụla"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "wepu"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Weghachitere ihe mbụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Weghachitere ihe na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Weghachitere ihe ikpeazụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Weghachitere ihe ọbụla n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Wepu ma weghachite ihe mbu na ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Wepu ma weghachite ihe na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Wepu ma weghachite ihe ikpeazụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Wepu ma weghachite ihe ọbụla n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Wepu ihe mbụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Wepu ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Wepu ihe ikpeazụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Wepu ihe ọbụla n'ime ndepụta."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "rụọ # site na njedebe"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "rụọ #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "rụọ na ngwụcha"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "nweta akụkụ ndepụta site na mbịdo"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "nweta akụkụ ndepụta site na # site na njedebe"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "nweta akụkụ ndepụta site na #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Na-emepụta otu akụkụ a kapịrị ọnụ nke ndepụta."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 bụ ihe ikpeazụ."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 bụ ihe mbụ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "chọta ihe mbu nke ihe"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "chọta ihe ikpeazụ nke ihe"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe."; +Blockly.Msg["LISTS_INLIST"] = "n’ime ndepụta"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ghe oghe"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Weghachite eziokwu ma ọ bụrụ na ndepụta ahụ dị n’efu."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "ogo nke %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Weghachite ogo nke ndepụta."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "mepụta ndepụta na ihe %1 emegharịrị ugboro %2"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Na-emepụta listi ndepụta gụnyere akara a nyere ya ugboro ugboro."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "gbanwe %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Tụgharịa otu akụkụ ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "dị ka"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "tinye na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Na-etinye ihe ahụ na mmalite nke ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Na-etinye ihe na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Na-etinye ihe ahụ na ngwụcha nke ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Na-etinye ihe ahụ na ebe ọbụla nke ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Debe ihe mbụ n'ime ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Debe ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Debe ihe ikpeazụ n'ime ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Debe ihe ọbụla n'ime ndepụta."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "arịgo"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "agbada"; +Blockly.Msg["LISTS_SORT_TITLE"] = "hazie %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Tọọ otu akụkụ ndepụta ahụ."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "mkpụrụ edemede, leghara ọnọdụ anya"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "nọmba"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "mkpụrụ edemede"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "mee ndepụta site na ederede"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "mee ederede site na ndepụta"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Jikọọ ndepụta nke ederede gaa na otu ederede, nke oihe nkewa kewara."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Kewaa ederede n'ime ndepụta nke ederede, na-agbasa na ihe nkwea ọ bụla."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "na ihe nkewa"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ụgha"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Weghachitere ezịọkwụ ma ọ bụ ụgha."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ezịọkwụ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye hatara onwe ha."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ntinye nke abụọ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ma ọ bụ hatara ntinye nke abụọ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ntinye nke abụọ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ma ọ bụ hatara ntinye nke abụọ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye aghataghị onwe ha."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ma ọ bụghị %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Weghachitere ezịọkwụ ma ọ bụrụ na ntinye bụ ụgha. Weghachitere ụgha ma ọ bụrụ na ntinye bụ ezịọkwụ."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Weghachitere nkịtị."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ma"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ma ọ bụrụ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye abụọ a bụ ezịọkwụ."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Weghachi ezịọkwụ ma ọ bụrụ na ọdịkarịa ala otu n’ime ntinye a bụ ezịọkwụ."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ule"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ọ bụrụ ụgha"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ọ bụrụ na eziokwu"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Lelee ọnọdụ na 'ule'. Ọ bụrụ na ọnọdụ ahụ bụ eziokwu, weghachitere akara 'ọ bụrụ na eziokwu’; ma ọ bụghị ya weghachitere akara 'ọ bụrụ ụgha'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Weghachite ngụkọ ọnụ ọgụgụ abụọ ahụ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Weghachite kwenye ọnụ ọgụgụ abụọ ahụ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Weghachite nwepụ ọnụ ọgụgụ abụọ ahụ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Weghachite mụbaa ọnụ ọgụgụ abụọ ahụ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Weghachite nọmba mbu nke emeturu ike nke nọmba nke abụọ."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 nke X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Weghachite aktanjentị nke isi (X, Y) na ogo site na -180 rụọ 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "gbanwee %1 site na %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Tinye nọmba na agbanwe '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Weghachite otu n'ime kọnstant ndị nkịtị: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "gbochịe %1 ala %2 elu %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Gbochịe ọnụọgụgụ dị n'etiti nọmba dị oke ala na nọmba dị oke elu (gụnyere)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ga ekenwụ"; +Blockly.Msg["MATH_IS_EVEN"] = "bụ ịvụn"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "bụ negetịf"; +Blockly.Msg["MATH_IS_ODD"] = "bụ ọd"; +Blockly.Msg["MATH_IS_POSITIVE"] = "bu posịtịf"; +Blockly.Msg["MATH_IS_PRIME"] = "bụ praim"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Tụlee ma nọmba ọ bụ ịvụn, ọd, praim, zuru ezu, posịtịf, negetịf, ma e nwere nọmba ga ekenwu ya. Weghachitere eziokwu ma ọ bụ ụgha."; +Blockly.Msg["MATH_IS_WHOLE"] = "zuru ezu"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ihe fọdụrụ nke %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Weghachite ihe fọdụrụ site na nkewa nọmba abụọ."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ọnụọgụgụ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "agbaetiti nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ọkacha ukwuu nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "etiti nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "opekempe nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ụdị ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Ihe ọbụla nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ntughari usoro nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "nchịkọta nke ndepụta"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Weghachite agbaetiti (nchịkọta mpụta) nke akara ọnụọgụ na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Weghachite nọmba kacha ukwuu na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Weghachite nọmba agbaetiti na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Weghachite nọmba kacha obere na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Weghachite ndepụta nke nke ihe kachasị mkpa na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Weghachite Ihe ọbụla site na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Weghachite ntughari usoro nke ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Weghachite nchịkọta nke nọmba niile na ndepụta."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "nkewa ọbụla"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Weghachite ọnụọgụgụ ọbụla dị n'etiti 0.0 (gụnyere) na 1.0 (agụnyeghị)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ọnụọgụgụ ọbụla site na %1 rụọ %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Weghachite ọnụọgụgụ ọbụla dị n'etiti ihe abụọ a kapịrị ọnụ, agụnyere."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "gbaarịa"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "gbatụọ ala"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "gbaago elu"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Gbaago nọmba n'elu ma ọ bụ ala."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ozụzụ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Isi ngụkọ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Weghachite akara ozụzụ nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Weghachite na ike nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Weghachite lọgarịdịm nke di na nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Weghachite isi lọgarịdịm 10 nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Weghachite njụ nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Weghachite 10 na ike nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Weghachite Isi ngụkọ nke nọmba."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Weghachite akosaịn nke nọmba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Weghachite aksaịn nke nọmba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Weghachite aktanjentị nke nọmba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Weghachite kosaịn nke ogo (ọ bụghị redian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Weghachite saịn nke ogo (ọ bụghị redian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Weghachite tanjentị nke ogo (ọ bụghị redian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Mepụta agba agbanwe..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Mepụta nọmba agbanwe..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Mepụta njikọ agbanwe..."; +Blockly.Msg["NEW_VARIABLE"] = "Mepụta agbanwe..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Aha agbanwe ọhụụ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ụdị agbanwe ọhụụ:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "kwe ka okwu"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "na:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Gbaa ọrụ a kọwaa onye-ọrụ '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Gbaa ọrụ a kọwaa onye-ọrụ '%1' ma jiri mmepụta ya."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "na:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Mepụta '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Kọwaa ọrụ a..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "megharịa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ga na"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Na emepụta ọrụ na-enweghị mmepụta."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "weghachite"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Na emepụta ọrụ nwere mmepụta."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Nkọwapụta njirimara ọrụ"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Weghachite akara nke agbanwe a."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "tinye aha:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tinye ntinye aka na ọrụ ahụ."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ntinye"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tinye, wepu, ma ọ bụ tugharịa ntinye na ọrụ a."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Megharịa"; +Blockly.Msg["REMOVE_COMMENT"] = "Wepu okwu"; +Blockly.Msg["RENAME_VARIABLE"] = "Nyegharịa agbanwe aha..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Nyegharịa agbanwe '%1' nille ga:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "iji %1 tinye ederede %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tinye ederede na mgbanwee '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na ahịrị elu"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Aha Ahịrị"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na AHỊRỊ ELU"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "AA <-> aa"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "nweta akwụkwọ ozi mbu"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "nweta akwụkwọ ozi # site na njedebe"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "nweta akwụkwọ ozi #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "nweta akwụkwọ ozi ikpeazụ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "nweta akwụkwọ ozi ọbụla"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "chọta na ederede %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Weghachite akwụkwọ ozi ahụ na ọnọdụ a kapịrị ọnụ."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "gụọ %1 n’ime %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Gụọ ugboro ole ụfọdụ ederede na’apụta n’ụfọdụ ederede ọzọ."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Tinye ihe na ederede."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "jikọta"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "na akwụkwọ ozi # site na njedebe"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "na akwụkwọ ozi #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "na leta ikpeazụ"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "chọta na ederede"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "nweta njịkọ-ala na akwụkwọ ozi mbu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "nweta njịkọ-ala na akwụkwọ ozi # site na njedebe"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "nweta njịkọ-ala na akwụkwọ ozi #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Weghachite akụkụ nke akọwapụtara ederede."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "chọta ihe omume mbu nke ederede"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "chọta ihe omume ikpeazụ nke ederede"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "chọta na ederede %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 di n’efu"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Weghachitere ezịọkwụ ma ọ bụrụ na ederede enyere di n’efu."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "mepụta ederede na"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Mepụta otu ederede site na ijikọta ọnụ ọgụgụ ihe ọ bụla."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "ogologo nke %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Weghachitere nọmba nke akwụkwọ ozi (gụnyere oghere) na ederede enyere."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "bipụta %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Bipụta ederede a kapịrị ọnụ, nọmba ma ọ bụ akara ọzọ."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Mepụta ngwa onye ọrụ maka nọmba."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Mepụta ngwa onye ọrụ maka ederede."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Mepụta ngwa maka maka nọmba na ozi"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Mepụta ngwa maka iji ederede na ozi"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "dochie %1 na %2 n’ime %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Dochie ihe omuma nke ederede ufodu n'ime ufodu ederede ozo."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "gbanwe %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Na-agbanwe iwu nke ndị odide na ederede."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Akwụkwọ ozi, okwu, ma ọ bụ akara ederede."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "belata oghere dị mkpụmkpụ si n'akụkụ abụọ nke"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "belata oghere dị mkpụmkpụ si n'akụkụ aka ịkpa nke"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "belata oghere dị mkpụmkpụ si n'akụkụ aka nrị nke"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Weghachite otu ederede ya na oghere ọzọ wepụrụ site n'otu ma ọ bụ akụkụ mechị abụọ."; +Blockly.Msg["TODAY"] = "Taa"; +Blockly.Msg["UNDO"] = "Me la àzụ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ihe"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Mepụta 'dozie %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Weghachite akara nke agbanwe a."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "dozie %1 ga na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Mepụta 'nweta uru %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Debe mgbanwe a ka ọ ghata ihe ntinye."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Agbanwe akpọrọ '%1' dị adị."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Agbanwe akpọrọ '%1' dị adị na ụdị ozo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Kwuo ihe ọ bụla..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/inh.js b/blockly/msg/inh.js new file mode 100644 index 00000000000..4e3b8e21d67 --- /dev/null +++ b/blockly/msg/inh.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ТӀатоха алар (комментари)"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Хувцалушъяр %1 дӀайоаккхалац, хӀана аьлча %2 функце къоастаяра дакъа да из."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "МаIан хувца:"; +Blockly.Msg["CLEAN_UP"] = "ДӀаяха блокаш"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ДIахьулъе блокаш"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ДIахьулъе блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "бос 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "бос 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "беса дáкъа 1"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "кегаде"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Ши бос беззача боарамах вӀашагӀтох (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://inh.wikipedia.org/wiki/Бос"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Харжа палитра чура бос."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ца ховш нийсбенна бос"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Укхо бос хьахоржа дагадоацача тайпара"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "сийнача"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "баьццарара"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "цIеча"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "бесах"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ӏооттабаьчча боарамах цӀеи, баьццареи, сийнеи бесаш тохаш бос хьакхолла. Деррига боарамаш 0-и 100-ненни юкъе хила деза."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "вешта"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "вешта нагахьа"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "нагахьа санна"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Цикл_(программирование)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "кхоачашде"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "юхаде %1-зза"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ДӀаяккха еррига блокаш (%1)?"; +Blockly.Msg["DELETE_BLOCK"] = "ДӀаяккха блок"; +Blockly.Msg["DELETE_VARIABLE"] = "%1 хувцалушър дӀаяккха"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' хувцалушъяр %1 лелаяр дӀаяккха езий?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "ДӀаяккха %1 блокаш"; +Blockly.Msg["DIALOG_CANCEL"] = "Эшац"; +Blockly.Msg["DIALOG_OK"] = "Мег"; +Blockly.Msg["DISABLE_BLOCK"] = "ДIайоае блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Кеп яккха"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Комментарий шолхаяккха"; +Blockly.Msg["ENABLE_BLOCK"] = "Хьалотае блок"; +Blockly.Msg["EXPAND_ALL"] = "Хьайоаржае блокаш"; +Blockly.Msg["EXPAND_BLOCK"] = "Хьайоаржае блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Арахьара юкъеоттадаьраш"; +Blockly.Msg["HELP"] = "Новкъoстал"; +Blockly.Msg["INLINE_INPUTS"] = "Чухьнахьара юкъеоттадаьраш"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "харцдар"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "бакъдар"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "цхьаккха"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Цхьаккха доаца хIама юхадерзаду."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "иштта"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "e"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "нагахьа харца дале"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "нагахьа бакъа дале"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://inh.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://inh.wikipedia.org/wiki/Таьрахь"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Таьрахь."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Хьакхолла беса хувцалушъяр"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Хьакхолла таьрахьа хувцалушъяр..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Хьакхолла мугӀара хувцалушъяр..."; +Blockly.Msg["NEW_VARIABLE"] = "Хьакхолла керда хувцалушъяр..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Керда хувцалушъяра цIи:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Хувцалушъяра керда тайпа:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Хьакхолла дIакхайкар '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Юхадоаладе"; +Blockly.Msg["REMOVE_COMMENT"] = "ДӀадаккха алар (комментари)"; +Blockly.Msg["RENAME_VARIABLE"] = "Хувцалушъяра цIи хувца..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Хувца ерригача хувцалушъяраша цIераш укх цIерах '%1':"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Тахан"; +Blockly.Msg["UNDO"] = "Юхадаккха"; +Blockly.Msg["UNNAMED_KEY"] = "цӀи яц"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' яхаш йола хувцалушъяр йолаш я."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' яхаш йола хувцалушъяр кхыча тайпан йолаш я: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/is.js b/blockly/msg/is.js new file mode 100644 index 00000000000..1afddc78132 --- /dev/null +++ b/blockly/msg/is.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Skrifa skýringu"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Breyta gildi:"; +Blockly.Msg["CLEAN_UP"] = "Hreinsa kubba"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Loka kubbum"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Loka kubbi"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "litur 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "litur 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "hlutfall"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blöndun"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blandar tveimur litum í gefnu hlutfalli (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Velja lit úr litakorti."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "einhver litur"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Velja einhvern lit af handahófi."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blátt"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grænt"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rauður"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "litur"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Búa til lit úr tilteknu magni af rauðu, grænu og bláu. Allar tölurnar verða að vera á bilinu 0 til 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "fara út úr lykkju"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fara beint í næstu umferð lykkjunnar"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Fara út úr umlykjandi lykkju."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sleppa afganginum af lykkjunni og fara beint í næstu umferð hennar."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Aðvörun: Þennan kubb má aðeins nota innan lykkju."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "fyrir hvert %1 í lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Fyrir hvert atriði í lista er breyta '%1' stillt á atriðið og skipanir gerðar."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "telja með %1 frá %2 til %3 um %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Láta breytuna '%1' taka inn gildi frá fyrstu tölu til síðustu tölu, hlaupandi á tiltekna bilinu og gera tilteknu kubbana."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Bæta skilyrði við EF kubbinn."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Bæta við hluta EF kubbs sem grípur öll tilfelli sem uppfylla ekki hin skilyrðin."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Bæta við, fjarlægja eða umraða til að breyta skipan þessa EF kubbs."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "annars"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "annars ef"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ef"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ef gildi er satt skal gera einhverjar skipanir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ef gildi er satt skal gera skipanir í fyrri kubbnum. Annars skal gera skipanir í seinni kubbnum."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, þá skal gera skipanir í seinni kubbnum."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, skal gera skipanir í seinni kubbnum. Ef hvorugt gildið er satt, skal gera skipanir í síðasta kubbnum."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "gera"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "endurtaka %1 sinnum"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Gera eitthvað aftur og aftur."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "endurtaka þar til"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "endurtaka á meðan"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Endurtaka eitthvað á meðan gildi er ósatt."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Endurtaka eitthvað á meðan gildi er satt."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Eyða öllum %1 kubbunum?"; +Blockly.Msg["DELETE_BLOCK"] = "Eyða kubbi"; +Blockly.Msg["DELETE_VARIABLE"] = "Eyða '%1' breytunni"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Eyða %1 kubbum"; +Blockly.Msg["DIALOG_CANCEL"] = "Hætta við"; +Blockly.Msg["DIALOG_OK"] = "Í lagi"; +Blockly.Msg["DISABLE_BLOCK"] = "Óvirkja kubb"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Afrita"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Tvítaka athugasemd"; +Blockly.Msg["ENABLE_BLOCK"] = "Virkja kubb"; +Blockly.Msg["EXPAND_ALL"] = "Opna kubba"; +Blockly.Msg["EXPAND_BLOCK"] = "Opna kubb"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ytri inntök"; +Blockly.Msg["HELP"] = "Hjálp"; +Blockly.Msg["INLINE_INPUTS"] = "Innri inntök"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "búa til tóman lista"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Skilar lista með lengdina 0 án gagna"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listi"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa listakubbs."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "búa til lista með"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Bæta atriði við listann."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Búa til lista með einhverjum fjölda atriða."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "fyrsta"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# frá enda"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "sækja"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "sækja og fjarlægja"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "síðasta"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "eitthvert"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fjarlægja"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Skilar fyrsta atriði í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Skilar atriðinu í hinum tiltekna stað í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Skilar síðasta atriði í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Skilar einhverju atriði úr lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fjarlægir og skilar fyrsta atriðinu í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fjarlægir og skilar atriðinu á hinum tiltekna stað í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fjarlægir og skilar síðasta atriðinu í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fjarlægir og skilar einhverju atriði úr lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fjarlægir fyrsta atriðið í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fjarlægir atriðið á hinum tiltekna stað í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fjarlægir síðasta atriðið í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fjarlægir eitthvert atriði úr lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "til # frá enda"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "til #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "til síðasta"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "sækja undirlista frá fyrsta"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "sækja undirlista frá # frá enda"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "sækja undirlista frá #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Býr til afrit af tilteknum hluta lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 er síðasta atriðið."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 er fyrsta atriðið."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "finna fyrsta tilfelli atriðis"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "finna síðasta tilfelli atriðis"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Finnur hvar atriðið kemur fyrir fyrst/síðast í listanum og skilar sæti þess. Skilar %1 ef atriðið finnst ekki."; +Blockly.Msg["LISTS_INLIST"] = "í lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 er tómur"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Skilar sönnu ef listinn er tómur."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lengd %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Skilar lengd lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "búa til lista með atriði %1 endurtekið %2 sinnum"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Býr til lista sem inniheldur tiltekna gildið endurtekið tiltekið oft."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "snúa við %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Snúa við afriti lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sem"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "bæta við"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "setja í"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Bætir atriðinu fremst í listann."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Bætir atriðinu í listann á tilteknum stað."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Bætir atriðinu aftan við listann."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Bætir atriðinu einhversstaðar við listann."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Setur atriðið í fyrsta sæti lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setur atriðið í tiltekna sætið í listanum."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setur atriðið í síðasta sæti lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setur atriðið í eitthvert sæti lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "hækkandi"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "lækkandi"; +Blockly.Msg["LISTS_SORT_TITLE"] = "raða %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Raða afriti lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "í stafrófsröð án tillits til stafstöðu"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "í númeraröð"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "í stafrófsröð"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "gera lista úr texta"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "gera texta úr lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Sameinar lista af textum í einn texta, með skiltákn á milli."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Skiptir texta í lista af textum, með skil við hvert skiltákn."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "með skiltákni"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ósatt"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Skilar annað hvort sönnu eða ósönnu."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "satt"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Skila sönnu ef inntökin eru jöfn."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Skila sönnu ef fyrra inntakið er stærra en seinna inntakið."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Skila sönnu ef fyrra inntakið er stærra en eða jafnt og seinna inntakið."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Skila sönnu ef fyrra inntakið er minna en seinna inntakið."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Skila sönnu ef fyrra inntakið er minna en eða jafnt og seinna inntakið."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Skila sönnu ef inntökin eru ekki jöfn."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ekki %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Skilar sönnu ef inntakið er ósatt. Skilar ósönnu ef inntakið er satt."; +Blockly.Msg["LOGIC_NULL"] = "tómagildi"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Skilar tómagildi."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "og"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "eða"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Skila sönnu ef bæði inntökin eru sönn."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Skila sönnu ef að minnsta kosti eitt inntak er satt."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "prófun"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ef ósatt"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ef satt"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kanna skilyrðið í 'prófun'. Skilar 'ef satt' gildinu ef skilyrðið er satt, en skilar annars 'ef ósatt' gildinu."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Skila summu talnanna tveggja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Skila deilingu talnanna."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Skila mismun talnanna."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Skila margfeldi talnanna."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Skila fyrri tölunni í veldinu seinni talan."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "breyta %1 um %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Bæta tölu við breytu '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Skila algengum fasta: π (3.141…), e (2.718…), φ (1.618…), kvrót(2) (1.414…), kvrót(½) (0.707…) eða ∞ (óendanleika)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "þröngva %1 lægst %2 hæst %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Þröngva tölu til að vera innan hinna tilgreindu marka (að báðum meðtöldum)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "er\u00A0deilanleg með"; +Blockly.Msg["MATH_IS_EVEN"] = "er\u00A0jöfn tala"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "er neikvæð"; +Blockly.Msg["MATH_IS_ODD"] = "er oddatala"; +Blockly.Msg["MATH_IS_POSITIVE"] = "er jákvæð"; +Blockly.Msg["MATH_IS_PRIME"] = "er prímtala"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kanna hvort tala sé jöfn tala, oddatala, jákvæð, neikvæð eða deilanleg með tiltekinni tölu. Skilar sönnu eða ósönnu."; +Blockly.Msg["MATH_IS_WHOLE"] = "er heiltala"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "afgangur af %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Skila afgangi deilingar með tölunum."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Tala."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "meðaltal lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "stærst í lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "miðgildi lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minnst í lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "tíðast í lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "eitthvað úr lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "staðalfrávik lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Skila meðaltali talna í listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Skila stærstu tölu í listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Skila miðgildi listans."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Skila minnstu tölu í listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Skila lista yfir tíðustu gildin í listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Skila einhverju atriði úr listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Skila staðalfráviki lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Skila summu allra talna í listanum."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slembibrot"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Skila broti sem er valið af handahófi úr tölum á bilinu frá og með 0.0 til (en ekki með) 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "slembitala frá %1 til %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Skila heiltölu sem valin er af handahófi og er innan tilgreindra marka, að báðum meðtöldum."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "námunda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "námunda niður"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "námunda upp"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Námunda tölu upp eða niður."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "algildi"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvaðratrót"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Skila algildi tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Skila e í veldi tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Skila náttúrlegum lógaritma tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Skila tugalógaritma tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Skila neitun tölu (tölunni með öfugu formerki)."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Skila 10 í veldi tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Skila kvaðratrót tölu."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Skila arkarkósínusi tölu."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Skila arkarsínusi tölu."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Skila arkartangensi tölu."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Skila kósínusi horns gefnu í gráðum."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Skila sínusi horns gefnu í gráðum."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Skila tangensi horns gefnu í gráðum."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Búa til breytu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Heiti nýrrar breytu:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "leyfa setningar"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "með:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Keyra heimatilbúna fallið '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Keyra heimatilbúna fallið '%1' og nota úttak þess."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "með:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Búa til '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Lýstu þessari aðgerð/falli..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "gera eitthvað"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "til að"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Býr til fall sem skilar engu."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "skila"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Býr til fall sem skilar úttaki."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Aðvörun: Þetta fall er með tvítekna stika."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sýna skilgreiningu falls"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ef gildi er satt, skal skila öðru gildi."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Aðvörun: Þennan kubb má aðeins nota í skilgreiningu falls."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "heiti inntaks:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Bæta inntaki við fallið."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inntök"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bæta við, fjarlægja eða umraða inntökum fyrir þetta fall."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Endurtaka"; +Blockly.Msg["REMOVE_COMMENT"] = "Fjarlægja skýringu"; +Blockly.Msg["RENAME_VARIABLE"] = "Endurnefna breytu..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Endurnefna allar '%1' breyturnar:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "við %1 bæta texta %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Bæta texta við breytuna '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "í lágstafi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "í Upphafstafi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "í HÁSTAFI"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Skila afriti af textanum með annarri stafastöðu."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "sækja fyrsta staf"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "sækja staf # frá enda"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "sækja staf #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "sækja síðasta staf"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "sækja einhvern staf"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "í texta %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Skila staf á tilteknum stað."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "fjöldi %1 í %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Bæta atriði við textann."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "tengja"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa textakubbs."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "að staf # frá enda"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "að staf #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "að síðasta staf"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "í texta"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "sækja textabút frá fyrsta staf"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "sækja textabút frá staf # frá enda"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "sækja textabút frá staf #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Skilar tilteknum hluta textans."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "finna fyrsta tilfelli texta"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "finna síðasta tilfelli texta"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "í texta %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Finnur fyrsta/síðasta tilfelli fyrri textans í seinni textanum og skilar sæti hans. Skilar %1 ef textinn finnst ekki."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 er tómur"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Skilar sönnu ef gefni textinn er tómur."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "búa til texta með"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Búa til texta með því að tengja saman einhvern fjölda atriða."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lengd %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Skilar fjölda stafa (með bilum) í gefna textanum."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "prenta %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Prenta tiltekinn texta, tölu eða annað gildi."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Biðja notandann um tölu."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Biðja notandann um texta."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "biðja um tölu með skilaboðum"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "biðja um texta með skilaboðum"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "skipta %1 út með %2 í %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "snúa við %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Snýr við röð stafanna í textanum."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Stafur, orð eða textalína."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "eyða bilum báðum megin við"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "eyða bilum vinstra megin við"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "eyða bilum hægra megin við"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Skila afriti af textanum þar sem möguleg bil við báða enda hafa verið fjarlægð."; +Blockly.Msg["TODAY"] = "Í dag"; +Blockly.Msg["UNDO"] = "Afturkalla"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "atriði"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Búa til 'stilla %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Skilar gildi þessarar breytu."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "stilla %1 á %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Búa til 'sækja %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Stillir þessa breytu á innihald inntaksins."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Breyta með heitinu '%1' er þegar til staðar."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Segðu eitthvað..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/it.js b/blockly/msg/it.js new file mode 100644 index 00000000000..19e690976d4 --- /dev/null +++ b/blockly/msg/it.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Aggiungi commento"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Non si può cancellare la variabile '%1' perché è parte della definizione della funzione '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modifica valore:"; +Blockly.Msg["CLEAN_UP"] = "Pulisci i blocchi"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "I blocchi compressi contengono avvertimenti."; +Blockly.Msg["COLLAPSE_ALL"] = "Comprimi blocchi"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Comprimi blocco"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colore 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colore 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "rapporto"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "miscela"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mescola due colori insieme con un determinato rapporto (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://it.wikipedia.org/wiki/Colore"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Scegli un colore dalla tavolozza."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "colore casuale"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Scegli un colore a caso."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rosso"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colora con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crea un colore con la quantità specificata di rosso, verde e blu. Tutti i valori devono essere compresi tra 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "esce dal ciclo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "prosegui con la successiva iterazione del ciclo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Esce dal ciclo."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Salta il resto di questo ciclo e prosegue con la successiva iterazione."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Attenzioneː Questo blocco può essere usato solo in un ciclo."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per ogni elemento %1 nella lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Per ogni elemento in una lista, imposta la variabile '%1' pari all'elemento e quindi esegue alcune istruzioni."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "conta con %1 da %2 a %3 per %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fa sì che la variabile '%1' prenda tutti i valori a partire dal numero di partenza fino a quello di arrivo, con passo pari all'intervallo specificato, ed esegue il blocco indicato."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Aggiungi una condizione al blocco se."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Aggiungi una condizione finale pigliatutto al blocco se."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Aggiungi, elimina o riordina le sezioni per riconfigurare questo blocco se."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "altrimenti"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "altrimenti se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Se un valore è vero allora esegue alcune istruzioni."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Se un valore è vero allora esegue il primo blocco di istruzioni. Altrimenti esegue il secondo blocco di istruzioni."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni. Se nessuno dei valori è vero esegue l'ultimo blocco di istruzioni."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://it.wikipedia.org/wiki/Ciclo_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fai"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ripeti %1 volte"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Esegue alcune istruzione diverse volte."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ripeti fino a che"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ripeti mentre"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Finché un valore è falso, esegue alcune istruzioni."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Finché un valore è vero, esegue alcune istruzioni."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Cancellare tutti i %1 blocchi?"; +Blockly.Msg["DELETE_BLOCK"] = "Cancella blocco"; +Blockly.Msg["DELETE_VARIABLE"] = "Cancella la variabile '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Cancella %1 usi della variabile '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Cancella %1 blocchi"; +Blockly.Msg["DIALOG_CANCEL"] = "Annulla"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disattiva blocco"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplica"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplica commento"; +Blockly.Msg["ENABLE_BLOCK"] = "Attiva blocco"; +Blockly.Msg["EXPAND_ALL"] = "Espandi blocchi"; +Blockly.Msg["EXPAND_BLOCK"] = "Espandi blocco"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ingressi esterni"; +Blockly.Msg["HELP"] = "Aiuto"; +Blockly.Msg["INLINE_INPUTS"] = "Ingressi in linea"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crea lista vuota"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Restituisce una lista, di lunghezza 0, contenente nessun record di dati"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Aggiungi, rimuovi o riordina le sezioni per riconfigurare il blocco lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crea lista con"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Aggiunge un elemento alla lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crea una lista con un certo numero di elementi."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primo"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dalla fine"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "prendi"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "prendi e rimuovi"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ultimo"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "casuale"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "rimuovi"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Restituisce il primo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Restituisce l'elemento nella posizione indicata della lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Restituisce l'ultimo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Restituisce un elemento casuale in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Rimuove e restituisce il primo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Rimuove e restituisce l'elemento nella posizione indicata in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Restituisce e rimuove l'ultimo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Restituisce e rimuove un elemento casuale in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Rimuove il primo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Rimuove l'elemento nella posizione indicata in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Rimuove l'ultimo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Rimuove un elemento casuale in una lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "da # dalla fine"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fino a #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "dagli ultimi"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "prendi sotto-lista dall'inizio"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "prendi sotto-lista da # dalla fine"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "prendi sotto-lista da #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea una copia della porzione specificata di una lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 corrisponde all'ultimo elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 corrisponde al primo elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trova la prima occorrenza dell'elemento"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trova l'ultima occorrenza dell'elemento"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Restituisce l'indice della prima/ultima occorrenza dell'elemento nella lista. Restituisce %1 se l'elemento non viene trovato."; +Blockly.Msg["LISTS_INLIST"] = "nella lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 è vuota"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Restituisce vero se la lista è vuota."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lunghezza di %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Restituisce la lunghezza della lista"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "crea una lista con l'elemento %1 ripetuto %2 volte"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea una lista costituita dal valore indicato ripetuto per il numero di volte specificato."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverti %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverti una copia di un elenco."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "come"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserisci in"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "imposta"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserisci l'elemento all'inizio della lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserisci un elemento nella posizione indicata in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Aggiungi un elemento alla fine di una lista"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserisce l'elemento casualmente in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Imposta il primo elemento in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Imposta l'elemento nella posizione indicata di una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Imposta l'ultimo elemento in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Imposta un elemento casuale in una lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "crescente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "decrescente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordinamento %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordina una copia di un elenco."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetico, ignorare differenze maiuscole e minuscole"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerico"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetico"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "crea lista da testo"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "crea testo da lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Unisci una lista di testi in un unico testo, separato da un delimitatore."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividi il testo in un elenco di testi, interrompendo ad ogni delimitatore."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con delimitatore"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Restituisce vero o falso."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "vero"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://it.wikipedia.org/wiki/Disuguaglianza"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Restituisce vero se gli input sono uno uguale all'altro."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Restituisce vero se il primo input è maggiore o uguale al secondo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Restituisce uguale se il primo input è maggiore o uguale al secondo input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Restituisce vero se il primo input è minore del secondo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Restituisce vero se il primo input è minore o uguale al secondo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Restituisce vero se gli input non sono uno uguale all'altro."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Restituisce vero se l'input è falso. Restituisce falso se l'input è vero."; +Blockly.Msg["LOGIC_NULL"] = "nullo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Restituisce valore nullo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Restituisce vero se entrambi gli input sono veri."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Restituisce vero se almeno uno degli input è vero."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se vero"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Verifica la condizione in 'test'. Se questa è vera restituisce il valore 'se vero' altrimenti restituisce il valore 'se falso'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://it.wikipedia.org/wiki/Aritmetica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Restituisce la somma dei due numeri."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Restituisce il quoziente dei due numeri."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Restituisce la differenza dei due numeri."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Restituisce il prodotto dei due numeri."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Restituisce il primo numero elevato alla potenza del secondo numero."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://it.wikipedia.org/wiki/Arcotangente2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 di X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Restituisce l'arcotangente del punto (X, Y) in gradi da -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://it.wikipedia.org/wiki/Addizione"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "cambia %1 di %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Aggiunge un numero alla variabile '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://it.wikipedia.org/wiki/Costante_matematica"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Restituisce una delle costanti comuniː π (3.141…), e (2.718…), φ (1.618…), radq(2) (1.414…), radq(½) (0.707…) o ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "costringi %1 da %2 a %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Costringe un numero all'interno dei limiti indicati (compresi)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "è divisibile per"; +Blockly.Msg["MATH_IS_EVEN"] = "è pari"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "è negativo"; +Blockly.Msg["MATH_IS_ODD"] = "è dispari"; +Blockly.Msg["MATH_IS_POSITIVE"] = "è positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "è primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se un numero è pari, dispari, primo, intero, positivo, negativo o se è divisibile per un certo numero. Restituisce vero o falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "è intero"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://it.wikipedia.org/wiki/Resto"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto di %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Restituisce il resto della divisione di due numeri."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://it.wikipedia.org/wiki/Numero"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un numero."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "massimo della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimo della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mode della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "elemento casuale della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviazione standard della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "somma la lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Restituisce la media (media aritmetica) dei valori numerici nella lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Restituisce il più grande numero della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Restituisce il valore mediano della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Restituisce il più piccolo numero della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Restituisce una lista degli elementi più frequenti nella lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Restituisce un elemento casuale della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Restituisce la deviazione standard della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Restituisce la somma si tutti i numeri nella lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "frazione casuale"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Restituisce una frazione compresa fra 0.0 (incluso) e 1.0 (escluso)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "intero casuale da %1 a %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Restituisce un numero intero casuale compreso tra i due limiti indicati (inclusi)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://it.wikipedia.org/wiki/Arrotondamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrotonda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrotonda verso il basso"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrotonda verso l'alto"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrotonda un numero verso l'alto o verso il basso."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://it.wikipedia.org/wiki/Radice_quadrata"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "assoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "radice quadrata"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Restituisce il valore assoluto del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Restituisce e elevato alla potenza del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Restituisce il logaritmo naturale del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Restituisce il logaritmo in base 10 del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Restituisce l'opposto del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Restituisce 10 elevato alla potenza del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Restituisce la radice quadrata del numero."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://it.wikipedia.org/wiki/Funzione_trigonometrica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Restituisce l'arco-coseno di un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Restituisce l'arco-seno di un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Restituisce l'arco-tangente di un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Restituisce il coseno di un angolo espresso in gradi (non radianti)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Restituisce il seno di un angolo espresso in gradi (non radianti)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Restituisce la tangente di un angolo espresso in gradi (non radianti)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crea variabile colore..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crea variabile numero..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crea variabile stringa..."; +Blockly.Msg["NEW_VARIABLE"] = "Crea variabile..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome della nuova variabile:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo della nuova variabile:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "consenti dichiarazioni"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "conː"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://it.wikipedia.org/wiki/Funzione (informatica)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Esegue la funzione definita dall'utente '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://it.wikipedia.org/wiki/Funzione (informatica)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Esegue la funzione definita dall'utente '%1' ed usa il suo output."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "conː"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crea '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descrivi questa funzione..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fai qualcosa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "per"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea una funzione senza output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ritorna"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea una funzione con un output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Attenzioneː Questa funzione ha parametri duplicati."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Evidenzia definizione di funzione"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se un valore è vero allora restituisce un secondo valore."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Attenzioneː Questo blocco può essere usato solo all'interno di una definizione di funzione."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nome inputː"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Aggiungi un input alla funzione."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "input"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Aggiungi, rimuovi o riordina input alla funzione."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Ripeti"; +Blockly.Msg["REMOVE_COMMENT"] = "Rimuovi commento"; +Blockly.Msg["RENAME_VARIABLE"] = "Rinomina variabile..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rinomina tutte le variabili '%1' in:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 aggiungi il testo %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Aggiunge del testo alla variabile '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "in minuscolo"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "con Iniziali Maiuscole"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "in MAIUSCOLO"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Restituisce una copia del testo in un diverso formato maiuscole/minuscole."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "prendi la prima lettera"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "prendi la lettera # dalla fine"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "prendi la lettera #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "prendi l'ultima lettera"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "prendi lettera casuale"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "nel testo %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Restituisce la lettera nella posizione indicata."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "conta %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Contare quante volte una parte di testo si ripete all'interno di qualche altro testo."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Aggiungi un elemento al testo."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unisci"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Aggiungi, rimuovi o riordina le sezioni per riconfigurare questo blocco testo."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "alla lettera # dalla fine"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "alla lettera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "all'ultima lettera"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "nel testo"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "prendi sotto-stringa dalla prima lettera"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "prendi sotto-stringa dalla lettera # dalla fine"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "prendi sotto-stringa dalla lettera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Restituisce la porzione di testo indicata."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trova la prima occorrenza del testo"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trova l'ultima occorrenza del testo"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "nel testo %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Restituisce l'indice della prima occorrenza del primo testo all'interno del secondo testo. Restituisce %1 se il testo non viene trovato."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 è vuoto"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Restituisce vero se il testo fornito è vuoto."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crea testo con"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crea un blocco di testo unendo un certo numero di elementi."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lunghezza di %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Restituisce il numero di lettere (inclusi gli spazi) nel testo fornito."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "scrivi %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Scrive il testo, numero o altro valore indicato."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Richiedi un numero all'utente."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Richiede del testo da parte dell'utente."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "richiedi numero con messaggio"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "richiedi testo con messaggio"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "sostituisci %1 con %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "sostituisci tutte le occorrenze di un certo testo con qualche altro testo."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverti %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverte l'ordine dei caratteri nel testo."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://it.wikipedia.org/wiki/Stringa_(informatica)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una lettera, una parola o una linea di testo."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "rimuovi spazi da entrambi gli estremi"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "rimuovi spazi a sinistra"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "rimuovi spazi a destra"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Restituisce una copia del testo con gli spazi rimossi ad uno o entrambe le estremità."; +Blockly.Msg["TODAY"] = "Oggi"; +Blockly.Msg["UNDO"] = "Annulla"; +Blockly.Msg["UNNAMED_KEY"] = "senza nome"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crea 'imposta %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Restituisce il valore di una variabile."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "imposta %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crea 'prendi %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Imposta questa variabile ad essere pari all'input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Una variabile denominata '%1' esiste già."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Una variabile nominata '%1' esiste già per un altro tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Area di lavoro di Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Scrivi qualcosa..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ja.js b/blockly/msg/ja.js new file mode 100644 index 00000000000..972fc2444b8 --- /dev/null +++ b/blockly/msg/ja.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "コメントを追加"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "変数 '%1' は関数 '%2' の定義の一部であるため、削除できません"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "値を変える:"; +Blockly.Msg["CLEAN_UP"] = "ブロックを整理する"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "つぶしたブロックには警告が入っています。"; +Blockly.Msg["COLLAPSE_ALL"] = "ブロックを折りたたむ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ブロックを折りたたむ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "色 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "色 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "比率"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ブレンド"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "2色を与えられた比率(0.0~1.0)で混ぜます。"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ja.wikipedia.org/wiki/色"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "パレットから色を選んでください。"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ランダムな色"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ランダムに色を選ぶ。"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "青"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "緑"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "赤"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "色:"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "赤、緑、および青の指定された量で色を作成します。すべての値は 0 ~ 100 の間でなければなりません。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ループから抜け出す"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ループの次の反復処理を続行します"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "入っているループから抜け出します。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "このループの残りの部分をスキップして、ループの繰り返しを続けます。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "注意: このブロックは、ループ内でのみ使用できます。"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "リスト%2の各項目%1について"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "リストの各項目について、その項目を変数'%1'として、いくつかのステートメントを実行します。"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 を %2 から %3 まで %4 ずつカウントする"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "変数 '%1' が開始番号から終了番号まで指定した間隔での値をとって、指定したブロックを実行する。"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "「もしも」のブロックに条件を追加します。"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ifブロックに、すべてをキャッチする条件を追加。"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "追加、削除、またはセクションを順序変更して、ブロックをこれを再構成します。"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "そうでなければ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "そうでなくもし"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "もし"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "値が true の場合、ステートメントを実行します。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合は、2番目のステートメントのブロックを実行します。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。すべての値が true でない場合は、最後のステートメントのブロックを実行します。"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ja.wikipedia.org/wiki/for文"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "実行"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 回繰り返す"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "いくつかのステートメントを数回実行します。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "繰り返す:終わる条件"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "繰り返す:続ける条件"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "値がfalseの間、いくつかのステートメントを実行する。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "値がtrueの間、いくつかのステートメントを実行する。"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "%1個あるすべてのブロックを削除しますか?"; +Blockly.Msg["DELETE_BLOCK"] = "ブロックを削除"; +Blockly.Msg["DELETE_VARIABLE"] = "変数 '%1' を削除"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1か所で使われている変数 '%2' を削除しますか?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1個のブロックを削除"; +Blockly.Msg["DIALOG_CANCEL"] = "キャンセル"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "ブロックを無効にする"; +Blockly.Msg["DUPLICATE_BLOCK"] = "複製"; +Blockly.Msg["DUPLICATE_COMMENT"] = "コメントを複製"; +Blockly.Msg["ENABLE_BLOCK"] = "ブロックを有効にする"; +Blockly.Msg["EXPAND_ALL"] = "ブロックを展開する"; +Blockly.Msg["EXPAND_BLOCK"] = "ブロックを展開する"; +Blockly.Msg["EXTERNAL_INPUTS"] = "外部入力"; +Blockly.Msg["HELP"] = "ヘルプ"; +Blockly.Msg["INLINE_INPUTS"] = "インライン入力"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "空のリストを作成"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "長さ0でデータ・レコードを含まない空のリストを返す"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "リスト"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "追加、削除、またはセクションの順序変更をして、このリスト・ブロックを再構成する。"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "以下を使ってリストを作成:"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "リストに項目を追加。"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "項目数が不定のリストを作成。"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "最初"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "位置:後ろから"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得して削除"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最後"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ランダム"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "削除"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "リストの最初の項目を返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "リスト内の指定位置にある項目を返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "リストの最後の項目を返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "ランダム アイテム リストを返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "リスト内の最初の項目を削除し返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "リスト内の指定位置にある項目を削除し、返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "リスト内の最後の項目を削除したあと返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "リストのランダムなアイテムを削除し返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "リスト内の最初の項目を削除します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "リスト内の指定された項目を削除します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "リスト内の最後の項目を削除します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "リスト内にあるアイテムをランダムに削除します。"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "終了位置:後ろから"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "終了位置:"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "最後まで"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "最初からサブリストを取得する。"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "端から #のサブリストを取得します。"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# からサブディレクトリのリストを取得します。"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "リストの指定された部分のコピーを作成します。"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 は、最後の項目です。"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 は、最初の項目です。"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "で以下のアイテムの最初の出現箇所を検索:"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "で以下のテキストの最後の出現箇所を検索:"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "リスト項目の最初/最後に出現するインデックス位置を返します。項目が見つからない場合は %1 を返します。"; +Blockly.Msg["LISTS_INLIST"] = "リスト"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1が空"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "リストが空の場合は、true を返します。"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1の長さ"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "リストの長さを返します。"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "項目%1を%2回繰り返したリストを作成"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "与えられた値を指定された回数繰り返してリストを作成。"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1を逆順に"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "リストのコピーを逆順にする。"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "値:"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "挿入位置:"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "セット"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "リストの先頭に項目を挿入します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "リスト内の指定位置に項目を挿入します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "リストの末尾に項目を追加します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "リストに項目をランダムに挿入します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "リスト内に最初の項目を設定します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "リスト内の指定された位置に項目を設定します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "リスト内の最後の項目を設定します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "リスト内にランダムなアイテムを設定します。"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "昇順"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降順"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 ( %2 ) に %3 を並び替える"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "リストのコピーを並べ替え"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "アルファベット順(大文字・小文字の区別無し)"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "数値順"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "アルファベット順"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "テキストからリストを作る"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "リストからテキストを作る"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "テキストのリストを区切り記号で区切られた一つのテキストにする"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "テキストを区切り記号で分割したリストにする"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "区切り記号"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "true または false を返します。"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ja.wikipedia.org/wiki/不等式"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "両方の入力が互いに等しい場合に true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "最初の入力が 2 番目の入力よりも大きい場合は true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "最初の入力が 2 番目の入力以上の場合に true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "最初の入力が 2 番目の入力よりも小さい場合は true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "最初の入力が 2 番目の入力以下の場合に true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "両方の入力が互いに等しくない場合に true を返します。"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1ではない"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "入力が false の場合は、true を返します。入力が true の場合は false を返します。"; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "null を返します。"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "かつ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "または"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "両方の入力が true のときに true を返します。"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "少なくとも 1 つの入力が true のときに true を返します。"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "テスト"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://ja.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "false の場合"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "true の場合"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'テスト' の条件をチェックします。条件が true の場合、'true' の値を返します。それ以外の場合 'false' のを返します。"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ja.wikipedia.org/wiki/算術"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "2 つの数の合計を返します。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "2 つの数の商を返します。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "2 つの数の差を返します。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "2 つの数の積を返します。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "最初の数を2 番目の値で累乗した結果を返します。"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://ja.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2のatan2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "アークタンジェントを用いて、点 (X, Y) の角度を -180度から 180度で返します。"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ja.wikipedia.org/wiki/加法"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 を %2 増やす"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "変数'%1'に数をたす。"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ja.wikipedia.org/wiki/数学定数"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "いずれかの共通の定数のを返す: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (無限)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 を %2 以上 %3 以下の範囲に制限"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "指定した上限と下限の間に値を制限する(上限と下限の値を含む)。"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "は以下で割りきれる:"; +Blockly.Msg["MATH_IS_EVEN"] = "は偶数"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "は負"; +Blockly.Msg["MATH_IS_ODD"] = "は奇数"; +Blockly.Msg["MATH_IS_POSITIVE"] = "は正"; +Blockly.Msg["MATH_IS_PRIME"] = "は素数"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "数字が、偶数、奇数、素数、整数、正数、負数、または特定の数で割り切れるかどうかを判定し、true か false を返します。"; +Blockly.Msg["MATH_IS_WHOLE"] = "は整数"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ja.wikipedia.org/wiki/剰余演算"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1÷%2の余り"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "2つの数値の割り算の余りを返す。"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ja.wikipedia.org/wiki/数"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "数です。"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "リストの平均"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "リストの最大値"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "リストの中央値"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "リストの最小値"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "リストの最頻値"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "リストからランダムに選ばれた項目"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "リストの標準偏差"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "リストの合計"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "リストの数値の平均 (算術平均) を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "リストの最大値を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "リストの中央値を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "リストの最小値を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "リスト中の最頻項目のリストを返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "リストからランダムに選ばれた要素を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "リストの標準偏差を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "リストの数値を足して返す。"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ja.wikipedia.org/wiki/疑似乱数"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "1未満の正の乱数"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0以上で1.0未満の範囲の乱数を返します。"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ja.wikipedia.org/wiki/疑似乱数"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1から%2までのランダムな整数"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "指定された(上下限を含む)範囲のランダムな整数を返します。"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ja.wikipedia.org/wiki/端数処理"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四捨五入"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "切り捨て"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "切り上げ"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "数値を切り上げるか切り捨てる"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ja.wikipedia.org/wiki/平方根"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "絶対値"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "平方根"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "絶対値を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "ネイピア数eの数値乗を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "数値の自然対数を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "底が10の対数を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "負の数を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10の数値乗を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "平方根を返す。"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ja.wikipedia.org/wiki/三角関数"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "アークコサイン(arccosin)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "アークサイン(arcsin)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "アークタンジェント(arctan)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "(ラジアンではなく)度数の余弦(cosin)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "(ラジアンではなく)度数の正弦(sin)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "(ラジアンではなく)度数の正接(tan)を返す。"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "色の変数を作る..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "数の変数を作る..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "文字列の変数を作る..."; +Blockly.Msg["NEW_VARIABLE"] = "変数の作成…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "新しい変数の名前:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新しい変数の型:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ステートメントを許可"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "引数:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ja.wikipedia.org/wiki/サブルーチン"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "ユーザー定義関数 '%1' を実行します。"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ja.wikipedia.org/wiki/サブルーチン"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "ユーザー定義関数 '%1' を実行し、その出力を使用します。"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "引数:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' を作成"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "この関数の説明…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "何かする"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "関数"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "出力なしの関数を作成します。"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返す"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "一つの出力を持つ関数を作成します。"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告: この関数には重複するパラメーターがあります。"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "関数の内容を強調表示します。"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "1番目の値が true の場合、2番目の値を返します。"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告: このブロックは、関数定義内でのみ使用できます。"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "入力名:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "関数への入力の追加。"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "入力"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "この関数への入力の追加、削除、順番変更。"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "やり直す"; +Blockly.Msg["REMOVE_COMMENT"] = "コメントを削除"; +Blockly.Msg["RENAME_VARIABLE"] = "変数の名前を変える…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "選択した%1個すべての変数の名前を変える:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "項目 %1 へテキストを追加 %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "変数 '%1' にテキストを追加。"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "小文字に"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "タイトル ケースに"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "大文字に"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "別のケースに、テキストのコピーを返します。"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "最初の文字を得る"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "の、後ろから以下の数字番目の文字:"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "の、以下の数字番目の文字:"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "最後の文字を得る"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ランダムな文字を得る"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "テキスト %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "指定された位置に文字を返します。"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2に含まれる%1の数を数える"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "とある文が別の文のなかに使われた回数を数える。"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "テキストへ項目を追加。"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "結合"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "セクションを追加、削除、または順序変更して、ブロックを再構成。"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "終了位置:後ろから"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "終了位置:"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "最後の文字"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "テキスト"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "の部分文字列を取得;最初から"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "の部分文字列を取得;開始位置:後ろから"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "の部分文字列を取得;開始位置:"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "テキストの指定部分を返します。"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "で以下のテキストの最初の出現箇所を検索:"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "で以下のテキストの最後の出現箇所を検索:"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "テキスト %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "二番目のテキストの中で一番目のテキストが最初/最後に出現したインデックスを返す。テキストが見つからない場合は%1を返す。"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1が空"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "与えられたテキストが空の場合は true を返す。"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "テキストの作成:"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "任意の数の項目一部を一緒に接合してテキストを作成。"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1の長さ"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "与えられたテキストの(スペースを含む)文字数を返す。"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 を表示"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "指定したテキスト、番号または他の値を印刷します。"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "ユーザーに数値のインプットを求める。"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "ユーザーにテキスト入力を求める。"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "メッセージで番号の入力を求める"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "メッセージでテキスト入力を求める"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%3に含まれる%1を%2に置換"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "文に含まれるキーワードを置換する。"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1を逆順に"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "文の文字を逆順にする。"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ja.wikipedia.org/wiki/文字列"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "文字、単語、または行のテキスト。"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "両端のスペースを取り除く"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "左端のスペースを取り除く"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "右端のスペースを取り除く"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "スペースを 1 つまたは両方の端から削除したのち、テキストのコピーを返します。"; +Blockly.Msg["TODAY"] = "今日"; +Blockly.Msg["UNDO"] = "取り消す"; +Blockly.Msg["UNNAMED_KEY"] = "名前なし"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "項目"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'セット%1を作成します。"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "この変数の値を返します。"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "%1 に %2 をセット"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 を取得' を作成します。"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "この入力を変数と等しくなるように設定します。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "変数名 '%1' は既に存在しています。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%2' 型の '%1' という名前の変数が既に存在します。"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklyワークスペース"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ここへ入力"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ka.js b/blockly/msg/ka.js new file mode 100644 index 00000000000..01ae2ec42dc --- /dev/null +++ b/blockly/msg/ka.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "კარგი"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ბლოკის ჩართვა"; +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "სიის ჯამი"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/kab.js b/blockly/msg/kab.js new file mode 100644 index 00000000000..7b6e5cac378 --- /dev/null +++ b/blockly/msg/kab.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Rnu awennit"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ur izmir ara ad yekkes amutti '%1' acku yedda di tbadut n twuri '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Beddel azal:"; +Blockly.Msg["CLEAN_UP"] = "Sfeḍ iḥedran"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Iḥedran yettin gebren ilɣa."; +Blockly.Msg["COLLAPSE_ALL"] = "Fneẓ iḥedran"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Fneẓ iḥder"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ini 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ini 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "afmiḍi"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "rkec"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sexleḍ sin n yiniten d tesmekta (gar 0.0 ar 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://kab.wikipedia.org/wiki/Ini"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Fren ini seg ugalis."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ini agacuran"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Fren ini s wudem agacuran."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "anili"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "azegzaw"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "azeggaɣ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ini s"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Rnu ini s tnecta yettunefk s tesmekta n uzeggaɣ, azegzaw, akked unili. Yessefk akk azalen ad ilin gar 0 akked 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ffeɣ seg tneddict"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "kemmel s wallus d tneddict d-iteddun"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ffeɣ si tneddict tamagbart."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Zgel ayen i d-yeqqimen di tneddict-a, sakin kemmel allus d-itteddun."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Ɣur-k: Iḥder-a yessefk ad yettwaseqdec di tneddict."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "i yal aferdis %1 di tebdart %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "I yal aferdis n tebdart, mudd azal n uferdis i umutti '%1', sakin selkem tinaḍin."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "siḍen akked %1 seg %2 ar %3 s %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Mudd i umutti '%1' azalen seg umḍan n tazwara armi d amḍan n taggara, s tmerna n usurif yettunefken, sakin selkem tinaḍin yettunefken."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Rnu tawtilt i yiḥder ma."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Rnu tawtilt taneggarut i yiḥder ma igebren akk tinaḍin."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Rnu, kkes, neq ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a ma."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "neɣ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "neɣ ma"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ma"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "mayella azal d idetti, ihi selkem kra n tinaḍin."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Mayella azal d idetti, selkem iḥder amezwaru. Neɣ ma ulac, selkem iḥder wis sin."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ ma azal wis sin d ucciḍ, selkem iḥder wis sin."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ, mayella azal wis sin d idetti, selkem iḥder wis sin. Mayella ula d yiwen seg-sen ur yelli d idetti, selkem iḥder aneggaru."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "eg"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Ales %1 n tikkal"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Selkem ddeqs n tinaḍin ddeqs n tikal."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ales armi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ales skud"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Skud azal d ucciḍ, selkem ihi tinadin."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Skud azal d idetti, selkem ihi tinadin."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Kkes akk %1 n yiḥedran?"; +Blockly.Msg["DELETE_BLOCK"] = "Kkes iḥder"; +Blockly.Msg["DELETE_VARIABLE"] = "Kkes amutti '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Kkes %1 n useqdec n umutti '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Kkes %1 n yiḥedran"; +Blockly.Msg["DIALOG_CANCEL"] = "Sefsex"; +Blockly.Msg["DIALOG_OK"] = "IH"; +Blockly.Msg["DISABLE_BLOCK"] = "Sens iḥder"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Sleg"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Sleg awennit"; +Blockly.Msg["ENABLE_BLOCK"] = "Sens iḥedran"; +Blockly.Msg["EXPAND_ALL"] = "Snefli iḥedran"; +Blockly.Msg["EXPAND_BLOCK"] = "Snefli iḥder"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Inekcam izɣarayen"; +Blockly.Msg["HELP"] = "Tallelt"; +Blockly.Msg["INLINE_INPUTS"] = "Inekcam srid"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "rnu tabdart tilemt"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ad d-yerr tabdart n teɣzi 0 ur yegbiren ara ikalasen"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "tabdart"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a n tebdart."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "rnu tabdart s"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ad yernu aferdis ɣer tebdart."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ad yernu tabdart s umḍan n yiferdisen."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "amezwaru"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# si taggara"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "awi"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "awi rnu kkes"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "aneggaru"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "agacuran"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "kkes"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Ad d-yerr aferdis amezwaru n tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ad d-yerr aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Ad d-yerr aferdis aneggaru di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Ad yerr aferdis agacuran di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Ad yekkes sakin ad -yerr aferdis amezwaru di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Ad yekkes syin ad d-yerr aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Ad yekkes sakin ad yerr aferdis aneggaru di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Ad yekkes sakin ad d-yerr aferdis agacuran di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Ad yekkes aferdis amezwaru n tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Ad yekkes aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Ad yekkes aferdis aneggaru di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Ad yekkes aferdis agacuran di tebdart."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ar # si tagara"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ar #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ar taggara"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "awi-d tabdart tasnawant si tazwara"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "awi-d tabdart tasnawant seg # si taggara"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "awi-d tabdart tasnawant seg #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ad yernu anɣel n uḥric yettwamlen n tebdart."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 d aferdis aneggaru."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 d aferdis amezwaru."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "af-d timeḍriwt tamezwarut n uferdis"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "af-d timeḍriwt taneggarut n uferdis"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uferdis amezwaru deg tebdart. Ad d-yerr %1 ma yella ulac aferdis."; +Blockly.Msg["LISTS_INLIST"] = "di tebdart"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 d ilem"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ad d-yerr idetti mayella tabdart d tilemt."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "teɣzi n %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Ad d-yerr teɣzi n tebdart."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ad yernu tabdart s uferdis %1 s tmeḍriwt %2"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ad yernu tabdart inetmen n wazal yettunefken ddeqs n tikal s umḍan yettwammlen."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "tti %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Tti anɣel n tebdart."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "am"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ger s"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "sbadu"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ad iger aferdis di tazwara n tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ad iger aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ad yernu aferdis ar taggara n tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ad iger aferdis s wudem agacuran deg tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ad d-yerr aferdis amezwaru di tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ad yesbadu aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ad d-yerr aferdis aneggaru di tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ad yesbadu aferdis agacuran di tebdart."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "igemmen"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "amnusruy"; +Blockly.Msg["LISTS_SORT_TITLE"] = "smizzwer %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Smizzwer anɣel n tebdart."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "agemmayan, anef i truẓi n usekkil"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "umḍin"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "agemmayan"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "rnu tabdart seg uḍris"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "rnu aḍris si tebdart"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ad yesdukel tabdart n yiḍrisen deg yiwen s usnabraz."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Ad yegzem aḍris ɣef ddeqs n tebdarin n yiḍrisen, s unegzum yal anabraz."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "s unabraz"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ucciḍ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ad d-yerr idetti neɣ ucciḍ"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "idetti"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ad yerr idetti ma yella i sin n yinekcam d imegduya."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ad d-yerr idetti ma anekcam amezwaru meqqer ɣef wis sin."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ad d-yerr idetti ma anekcam amezwaru meqqer neɣ yegda wis sin."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy ɣef wis sin."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy neɣ yegda wis sin."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ad d-yerr idetti mayella i sin n yinekcam mačči d imegduya."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "mačči %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ad d-yerr idetti ma anekcam d ucciḍ. Ad d-yerr ucciḍ ma yella anekcam d idetti."; +Blockly.Msg["LOGIC_NULL"] = "Ilem"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Ad d-yerr ilem"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "akked"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "neɣ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ad d-yerr idetti ma inekcam d idettiyen."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ad d-yerr idetti ma ɣarsum yiwen seg yinekcam d idetti."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "sekyed"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ma d ucciḍ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ma d idetti"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Senqed tawtilt deg 'sekyed'. Ma d idetti, ad d-yerr azal 'ma idetti', ma ulac ad d-yerr azam 'ma ucciḍ'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ad d-yerr tmerni n sin n yimiḍanen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ad d-yerr aful n sin n yimḍanen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ad d-yerr tmernit n sin n yimiḍanen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ad d-yerr tukksa gar sin n yimiḍanen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ad d-yerr amḍan amezwaru uzmir wis sin."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://kab.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 seg X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Ad d-yerr arctangent n waggaz (X, Y) s tfesniwin deg -180 ɣer 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "snifel %1 s %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Rnu amḍan i umutti '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ad d-yerr yiwet seg tmezgiyin yettwasnen : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), neɣ ∞ (ifeḍ)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "Err tamara i %1 gar %2 akked %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Err tamara n umḍan akken ad yili gar snat n tlisa (ddant)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "d ubṭay ɣef"; +Blockly.Msg["MATH_IS_EVEN"] = "d ayugan"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "d uzdir"; +Blockly.Msg["MATH_IS_ODD"] = "d aryugan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "d ufrar"; +Blockly.Msg["MATH_IS_PRIME"] = "d amenzu"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Senqed ma amḍan d ayugan, d aryugan, d amenzu, d ummid, d ufrar, d uzdir, neɣ d ubṭay ɣef kra n umḍan. Ad d-yerr idetti neɣ ucciḍ."; +Blockly.Msg["MATH_IS_WHOLE"] = "d ummid"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "tasagert n %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Ad d-yerr tasagert n beṭṭu n sin n yimḍanen."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Amḍan."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "talemmast n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "afellay n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "tanammast n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "adday n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Tiggtiwin n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "aferdis agacuran n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "azza n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Timernit n tebdart"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ad d-yerr talemmas( tasnamḍant) n wazalen umḍinen di tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ad d-yerr amḍan ameqqran di tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Ad d-yerr amḍan n unammas n tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ad d-yerr amḍan ameẓẓyan di tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Ad d-yerr tabdart n yiferdisen i d-yettuɣalen s waṭas di tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Ad d-yerr aferdis seg tebdart s wudem agacuran."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ad d-yerr azza n tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ad d-yerr timernit n yimḍanen meṛṛa deg tebdart."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "tirẓi tagacurant"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Ad d-yerr tirẓi tagacurant gar 0.0 (yedda) akked 1.0 (ur yeddi ara)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ummid agacuran gar %1 akked %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Ad d-yerr ummid agacuran gar snat n tlisa, ddant."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "Saẓ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Saẓ d akesser"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Saẓ d asawen"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Saẓ amiḍan d asawen neɣ d akesser."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "azal amagdez"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "aẓar uzmir 2"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ad d-yerr azal amagdez n umiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ad d-yerr e uzmir amiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ad d-yerr alugaritm agamawan n umiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ad d-yerr alugaritm 10 n umiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Ad d-yerr ugmiḍ n umḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Ad d-yerr 10 uzmir amiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ad d-yerr aẓar uzmir sin n umḍan."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ad d-yerr taganzi n ukusinus n umḍan."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ad d-yerr taganzi n usinus n umḍan."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ad d-yerr taganzi n teslayt n umiḍan."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ad d-yerr akusinus n teɣmert s tfesna (mačči aṛadyan)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ad d-yerr asinus n teɣmert s tfesna (mačči aṛadyan)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ad d-yerr taslayt n teɣmert s tfesna (mačči aṛadyan)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Rnu amutti ini..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Rnu amutti amḍan..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Rnu amutti azrir n yisekkilen..."; +Blockly.Msg["NEW_VARIABLE"] = "Rnu amutti..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Isem amaynut n wazal:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Anaw amaynut n umutti:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "Sireg asmizzwer"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Selkem tawuri '%1' i yesbadu useqdac."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Selkem tawuri '%1' i yesbadu useqdac sakin seqdec agmuḍ-is."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Rnu '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Seglem tawuri-a..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "eg kra"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "i"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Rnu tawuri s war anekcam."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "tuɣalin"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "ad yernu tawuri s tuffɣa."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ɣur-k: Tawuri-a ɣur-s iɣewwaṛen usligen."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sebrureq tabadut n twuri"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ma yella azal d idetti, ad d-yerr azal-nniḍen wis sin."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Ɣur-k: Iḥder-a yezmer ur yettwaseqdac ara anagar deg tebadut n twuri-a."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "isem n unekcum:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "rnu anekcam ɣer twuri-a."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inekcam"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Rnu, kkes neɣ ales asmizzwer n yinekcam i twuri-a."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Uɣal"; +Blockly.Msg["REMOVE_COMMENT"] = "Kkes awennit"; +Blockly.Msg["RENAME_VARIABLE"] = "Beddel isem n umutti..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Beddel akk isem n yimuttiyen '%1' ar:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "Rnu aḍris %2 ɣer %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Rnu aḍris ɣer umutti '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "s usekkil ameẓẓyan"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "s Umeqqran Di Tazwara n Yal Awal."; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "s USEKKIL AMEQQRAN"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Ad d-yerr anɣel n uḍris s truẓi-nniḍen."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "awi-d asekkil amezwaru"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "awi-d asekkil # si taggara"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "awi asekkel #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "awi-d asekkil aneggaru"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "awi-d asekkil s wudem agacuran"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "deg uḍris %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Ad d-yerr asekkil deg wuṭṭun yettwamlen."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "amḍan %1 ɣef %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Ad isiḍen amḍan n tmeḍriwt n uḍris deg wayeḍ."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Rnu aferdis ɣer uḍris."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sdukkel"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "armi d asekkil # si taggara"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "armi d asekkil #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "armi d asekkil aneggaru"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "deg uḍris"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "awi-d azrir asnawan seg usekkil amezwaru"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "awi-d azrir asnawan seg usekkil # si taggara"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "awi-d azrir asnawan seg usekkil #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Ad d-yerr aḥric yettwamlen deg uḍris."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "af-d timeḍriwt tamezwarut n uḍris"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "af-d timeḍriwt taneggarut deg uḍris"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "deg uḍris %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uḍris amezwaru deg uḍris wis sin. Ad d-yerr %1 ma yella ulac aḍris."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 d ilem"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Add d-yerr idetti ma yella aḍris d ilem."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "rnu aḍris s"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ad yernu taceqquft n uḍris s usdukel gar yal amḍan n yiferdisen."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "teɣzi n %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Ad d-yerr amḍan n yisekkilen (ddan ula d imellalen) deg uḍris d-ittunefken."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "ad d-yesken %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Sken aḍris, amḍan neɣ azal-nniḍen d-ittunefken."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Suter amḍan i useqdac."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Suter aḍris i useqdac."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "aneftaɣ i umḍan s yizen"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "aneftaɣ i uḍris s yizen"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "semselsi %1 s %2 di %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ad isemselsi akk timeḍriwin n uḍris s wayeḍ."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "tti %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Ad yetti asmizzwer n yisekkilen deg uḍris."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Asekkil, awal neɣ izirig n uḍris."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "Tukksa n yisekkilen imellalen seg sin n yidisan"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "tukksa n yisekkilen seg uzelmaḍ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "tukksa n yisekkilen seg uyeffus"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Ad d-yerr anɣel n uḍris s yisekkilen ilmawen yettwakksen seg yixf neɣ i sin."; +Blockly.Msg["TODAY"] = "Ass-a"; +Blockly.Msg["UNDO"] = "Err-d"; +Blockly.Msg["UNNAMED_KEY"] = "war isem"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "aferdis"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Rnu 'sbadu %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Ad d-yerr azal n umutti-a."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "sbadu %1 ar %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Rnu 'awi-d %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ad yesbadu amutti-a akken ad yegdu azal n unekcam."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Amutti s yisem '%1' yella yakan."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Amutti s yisem '%1' yella yakan i wanaw-nniḍen: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Tallunt n umahel Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Ini kra..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/kbd-cyrl.js b/blockly/msg/kbd-cyrl.js new file mode 100644 index 00000000000..18350578ca8 --- /dev/null +++ b/blockly/msg/kbd-cyrl.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "КIэщIэтхэн"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Блокхэр зэкIуэцIылъхьэн"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Блокыр зэкIуэцIылъхьэн"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1 плъыфэ"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2 плъыфэ"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "1 плъыфэм щыщу"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "зэхэпщэн"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ПлъыфитIыр епт зэхущытыкIэмкIэ хэхэпщэн (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ru.wikipedia.org/wiki/Цвет"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Плъыфэхэм узыхуейр къыхэх."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "сыт хуэдэ плъыфэми"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Плъыфэр езыр-езыру къыхегъэхын."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "щIыхуу"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "удзыфэу"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "плъыжьу"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "плъыфэхэм щыщ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "армырамэ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "армырамэ щыпкъэу"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "щыпкъэу"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Цикл_(программирование)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "гъэзэщIэн"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 къытегъэзэжын"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Унафэр зыбжанэрэ егъэзащIэ."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "къытегъэзэжын, къихьэх"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Блокыр тегъэкIын"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Блоку %1 тегъэкIын"; +Blockly.Msg["DIALOG_CANCEL"] = "ЩӀегъуэжын"; +Blockly.Msg["DIALOG_OK"] = "ХЪУАЩ"; +Blockly.Msg["DISABLE_BLOCK"] = "Блокыр гъэуфIынкIын"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ЩIэтхыкIын"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Блокыр щIэгъэнэн"; +Blockly.Msg["EXPAND_ALL"] = "Блокхэр зэкIуэц1ыхын"; +Blockly.Msg["EXPAND_BLOCK"] = "Блокыр зэкIуэц1ыхын"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "ДэӀэпыкъуэгъуэ"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "пцIы"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Е щыпкъэ е пцIы къуетыж."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "щыпкъэ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "зыри"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Зыри къуетыж."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "икIи"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "е"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ru.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "БжыгъитIыр зэхелъхьэри къыщIэкIар къуетыж."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Япэ бжыгъэр етIуанэмкIэ егуэшри къыщIэкIар къуетыж."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "БжыгъитIыр зэхехри къыщIэкIар къуетыж."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "БжыгъитIыр зэхуегъэбагъуэри къыщIэкIар къуетыж."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ru.wikipedia.org/wiki/Математическая_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "мыбыкIэ мэгуэш"; +Blockly.Msg["MATH_IS_EVEN"] = "зэпэбж"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "зэпэмыбж"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "къызэрыгуэкI"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "бжыгъэ псо"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ru.wikipedia.org/wiki/Деление_с_остатком"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 бгуэшмэ къыдэхуэр"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "БжыгъитIыр зэхуэбгуэшмэ къыдэхуэр къуетыж."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ru.wikipedia.org/wiki/Число"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Бжыгъэ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "къебжэкIым и нэхъыбэр"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "къебжэкIым и нэхъ мащIэр"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "къебжэкIыр зэхэлъхьауэ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "КъебжэкIым и нэхъыбэр къуетыж."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "КъебжэкIым и нэхъ мащIэр къуетыж."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ru.wikipedia.org/wiki/Округление"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ru.wikipedia.org/wiki/Квадратный_корень"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ru.wikipedia.org/wiki/Тригонометрические_функции"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "игъусэр:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Функция_%28программирование%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Функция_%28программирование%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "игъусэр:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "КIэщIэтхэр тегъэкIыжын"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "япэу къыщыхэщыр къэгъуэтын"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "иужьыу къыщыхэщыр къэгъуэтын"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 нэщIщ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 и кIыхьагъыр"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ru.wikipedia.org/wiki/Строковый_тип"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Iыхьэ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/km.js b/blockly/msg/km.js new file mode 100644 index 00000000000..b2d9ce2f525 --- /dev/null +++ b/blockly/msg/km.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "បន្ថែម​មតិ"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ប្ដូរ​តម្លៃ៖"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ជ្រើស​ពណ៌​មួយ​ពី​បន្ទះ​ពណ៌"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "លុបប្លុក %1 ទាំងអស់?"; +Blockly.Msg["DELETE_BLOCK"] = "លុបប្លុក"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "លុបប្លុក %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "យល់ព្រម"; +Blockly.Msg["DISABLE_BLOCK"] = "បិទប្លុក"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ធ្វើស្ទួន"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "បើកប្លុក"; +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "ធាតុបញ្ចូលខាងក្រៅ"; +Blockly.Msg["HELP"] = "ជំនួយ"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "បង្កើតអថេរ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ឈ្មោះ​អថេរ​ថ្មី៖"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ធ្វើ​វិញ"; +Blockly.Msg["REMOVE_COMMENT"] = "ដក​មតិ​ចេញ"; +Blockly.Msg["RENAME_VARIABLE"] = "ដក​អថេរ​ចេញ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ប្ដូរ​ឈ្មោះ​អថេរ​ទាំង '%1' ទៅ​ជា៖"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ថ្ងៃនេះ"; +Blockly.Msg["UNDO"] = "មិន​ធ្វើ​វិញ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ធាតុ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/kn.js b/blockly/msg/kn.js new file mode 100644 index 00000000000..e459a3d224a --- /dev/null +++ b/blockly/msg/kn.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ಟಿಪ್ಪಣಿ ಸೇರಿಸು"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ. ಏಕೆಂದರೆ ಇದು '%2' ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದ ಭಾಗವಾಗಿದೆ"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ಮೌಲ್ಯ ಬದಲಾಯಿಸು:"; +Blockly.Msg["CLEAN_UP"] = "ಬ್ಲಾಕ್‍ಗಳನ್ನೆಲ್ಲಾ ಒಪ್ಪವಾಗಿರಿಸು"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "ಸಂಕುಚಿತಗೊಂಡ ಬ್ಲಾಕ್ ಗಳು ಎಚ್ಚರಿಕೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ."; +Blockly.Msg["COLLAPSE_ALL"] = "ಬ್ಲಾಕ್‍ಗಳನ್ನು ಮಡಿಸಿಬಿಡು"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ಬ್ಲಾಕ್‍ನ್ನು ಮಡಿಸಿಬಿಡು"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ಬಣ್ಣ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ಬಣ್ಣ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ಅನುಪಾತ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ಮಿಶ್ರಣಮಾಡು"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ಕೊಟ್ಟಿರುವ ಅನುಪಾತದಂತೆ(0.0 - 1.0) ಎರಡು ಬಣ್ಣಗಳನ್ನು ಮಿಶ್ರಣ ಮಾಡುತ್ತದೆ."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ವರ್ಣಫಲಕದಿಂದ ಬಣ್ಣವನ್ನು ಆರಿಸು."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ಯಾದೃಚ್ಛಿಕ ಬಣ್ಣ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ಯಾದೃಚ್ಛಿಕವಾಗಿ ಯಾವುದಾದರೂ ಒಂದು ಬಣ್ಣವನ್ನು ಆರಿಸು."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ನೀಲಿ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ಹಸಿರು"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ಕೆಂಪು"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ಬಣ್ಣದಿಂದ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟ ಪ್ರಮಾಣದಲ್ಲಿ ಕೆಂಪು, ಹಸಿರು ಮತ್ತು ನೀಲಿಯನ್ನು ಹೊಂದಿದ ಒಂದು ಬಣ್ಣವನ್ನು ರಚಿಸಿ. ಎಲ್ಲಾ ಮೌಲ್ಯಗಳು 0 ಮತ್ತು 100 ರ ನಡುವೆ ಇರಲಿ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ಪುನರಾವರ್ತನೆಯಿಂದ ನಿರ್ಗಮಿಸು"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ಲೂಪ್ ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರೆಯಲಿ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ಒಳಹೊಕ್ಕಿರುವ ಲೂಪಿನಿಂದ ನಿರ್ಗಮಿಸು."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ಈ ಲೂಪಿನ ಉಳಿದ ಭಾಗವನ್ನು ಬಿಟ್ಟು, ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರಿಸಿ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕನ್ನು ಲೂಪ್‌ನಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿ %1 ಅಂಶಕ್ಕೆ"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಅಂಶಕ್ಕೆ, ಚರಾಂಶ '%1'ನ್ನು ಅಂಶಕ್ಕೆ ಜೋಡಿಸಿ, ತದನಂತರ ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 ಜೊತೆ ಎಣಿಸು %2 ಇಂದ %3 ತನಕ %4 ಪ್ರಮಾಣದಲ್ಲಿ"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ಚರಾಂಶವಾದ %1 ಪ್ರಾರಂಭ ಸಂಖ್ಯೆಯಿಂದ ಅಂತಿಮ ಸಂಖ್ಯೆಯವರೆಗೆ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಿ, ನಿರ್ದಿಷ್ಟ ಮಧ್ಯಂತರದಿಂದ ಎಣಿಸಿ, ಮತ್ತು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಬ್ಲಾಕ್ ಗಳನ್ನು ಮಾಡಲಿ."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಒಂದು ಷರತ್ತು ಸೇರಿಸಿ."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ಅಂತಿಮವಾದ, ಎಲ್ಲವನ್ನೂ-ಹಿಡಿ ಷರತ್ತನ್ನು 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಸೇರಿಸಿ."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ಈ 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ಇಲ್ಲದಿದ್ದರೆ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ಆಗಿರದಿದ್ದರೆ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ಆಗಿದ್ದರೆ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು, ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ಮೊದಲನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ. ಇಲ್ಲದಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ಮೊದಲನೆಯ ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಒಂದುವೇಳೆ ಯಾವುದೇ ಮೌಲ್ಯವೂ ಸತ್ಯವಾಗಿರದಿದ್ದರೆ, ಕೊನೆಯ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ಮಾಡು"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 ಬಾರಿ ಪುನರಾವರ್ತಿಸು"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಹಲವಾರು ಬಾರಿ ಮಾಡು."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ತನಕ ಪುನರಾವರ್ತಿಸು"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ಷರತ್ತು 'ಸತ್ಯ' ಆಗಿರುವವರೆಗೆ ಪುನರಾವರ್ತಿಸು"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ಮೌಲ್ಯವು ಸುಳ್ಳಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ಎಲ್ಲಾ %1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸುವುದೇ ?"; +Blockly.Msg["DELETE_BLOCK"] = "ಬ್ಲಾಕನ್ನು ಅಳಿಸು"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸು"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' ಚರಾಂಶದ '%1' ಉಪಯೋಗಗಳನ್ನು ಅಳಿಸುವುದೇ ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸು"; +Blockly.Msg["DIALOG_CANCEL"] = "ರದ್ದುಮಾಡಿ"; +Blockly.Msg["DIALOG_OK"] = "ಸರಿ"; +Blockly.Msg["DISABLE_BLOCK"] = "ಬ್ಲಾಕನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ಪ್ರತಿ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ಟಿಪ್ಪಣಿಯ ಪ್ರತಿ ಮಾಡು"; +Blockly.Msg["ENABLE_BLOCK"] = "ಬ್ಲಾಕನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು"; +Blockly.Msg["EXPAND_ALL"] = "ಬ್ಲಾಕ್‍ಗಳನ್ನು ವಿಸ್ತರಿಸು"; +Blockly.Msg["EXPAND_BLOCK"] = "ಬ್ಲಾಕನ್ನು ವಿಸ್ತರಿಸು"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ಬಾಹ್ಯ ಒಳಾಂಶಗಳು"; +Blockly.Msg["HELP"] = "ಸಹಾಯ"; +Blockly.Msg["INLINE_INPUTS"] = "ಸಾಲಿನಲ್ಲಿರುವ ಒಳಾoಶಗಳು"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ಖಾಲಿ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "ಯಾವುದೇ ದತ್ತಾಂಶ ದಾಖಲೆಗಳನ್ನು ಹೊಂದಿರದ, 0 ಉದ್ದದ, ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ಪಟ್ಟಿ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "ಈ ಪಟ್ಟಿಯ ಬ್ಲಾಕ್ ಅನ್ನು ಮರುಸಂರಚಿಸಲು ವಿಭಾಗಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ಇದರೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ."; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "ಪಟ್ಟಿಗೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "ಹಲವು ಅಂಶಗಳೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ಮೊದಲ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# ಕೊನೆಯಿಂದ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "ಪಡೆಯಿರಿ"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "ಪಡೆಯಿರಿ ಮತ್ತು ತೆಗೆದುಹಾಕಿ"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ಕೊನೆಯ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ಯಾದೃಚ್ಛಿಕ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ತೆಗೆ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಇರುವ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿರುವ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ಕೊನೆಯಿಂದ # ವರೆಗೆ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# ವರೆಗೆ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ಕೊನೆಯವರೆಗೂ"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ಮೊದಲಿನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "ಪಟ್ಟಿಯ ನಿರ್ದಿಷ್ಟ ಭಾಗದ ಪ್ರತಿಯನ್ನು ರಚಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ಕೊನೆಯ ಅಂಶ ಆಗಿದೆ."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ಮೊದಲ ಅಂಶ ಆಗಿದೆ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "ಅಂಶದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "ಅಂಶದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಅಂಶದ ಮೊದಲ/ಕೊನೆಯ ಸಂಭಾವ್ಯದ ಸೂಚಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಅಂಶ ಕಂಡುಬರದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_INLIST"] = "ಪಟ್ಟಿಯಲ್ಲಿ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ಖಾಲಿಯಾಗಿದೆ"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "ಪಟ್ಟಿ ಖಾಲಿಯಾಗಿದ್ದರೆ ಸತ್ಯ ಎಂದು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 ರ ಉದ್ದ"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "ಪಟ್ಟಿಯ ಉದ್ದವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 ಅಂಶದೊಂದಿಗೆ %2 ಬಾರಿ ಪುನರಾವರ್ತಿತಗೊಂಡ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ."; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "ಕೊಟ್ಟಿರುವ ಮೌಲ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟ ಬಾರಿ ಪುನರಾವರ್ತಿಸುವ ಪಟ್ಟಿಯನ್ನು ರಚಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 ನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ಹಾಗೆ"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ನಲ್ಲಿ ಸೇರಿಸಿ"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ಗೊತ್ತುಪಡಿಸಿ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "ಪಟ್ಟಿಯ ಪ್ರಾರಂಭದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "ಅಂಶವನ್ನು ಪಟ್ಟಿಯ ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "ಅಂಶವನ್ನು ಪಟ್ಟಿಯಲ್ಲಿ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಒಳಸೇರಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿ ಮೊದಲ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿ ಕೊನೆಯ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ಆರೋಹಣ"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ಅವರೋಹಣ"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 ವಿಂಗಡಿಸಿ"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ವಿಂಗಡಿಸಿ."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ವರ್ಣಮಾಲೆಯ, ದೊಡ್ಡಕ್ಷರ/ಸಣ್ಣಕ್ಷರವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ಸಂಖ್ಯಾತ್ಮಕ"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "ವರ್ಣಮಾಲೆಯ"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ಪಠ್ಯದಿಂದ ಪಟ್ಟಿಯನ್ನು ಮಾಡಿ"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ಪಟ್ಟಿಯಿಂದ ಪಠ್ಯವನ್ನು ಮಾಡಿ"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಿಂದ ಬೇರ್ಪಡಿಸಲಾಗಿರುವ ಪಠ್ಯಗಳ ಪಟ್ಟಿಯನ್ನೆಲ್ಲಾ ಒಂದು ಪಠ್ಯಕ್ಕೆ ಸೇರಿಸಿ."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಲ್ಲಿ ಮುರಿದು, ಪಠ್ಯವನ್ನು ವಿಭಜಿಸಿ ಪಠ್ಯಗಳ ಪಟ್ಟಿಮಾಡಿ."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯೊಡನೆ"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ಸುಳ್ಳು"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಎರಡರಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ಸತ್ಯ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿದ್ದರೆ, ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದ್ದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿರದಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 ಅಲ್ಲ"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ಒದಗಿಸುವ ಅಂಶ ಸುಳ್ಳಾಗಿದ್ದರೆ ಸರಿಯೆನ್ನಿ. ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ತಪ್ಪೆನ್ನಿ."; +Blockly.Msg["LOGIC_NULL"] = "ಶೂನ್ಯ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ಶೂನ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ಮತ್ತು"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ಅಥವಾ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ಒದಗಿಸುವ ಎರಡೂ ಅಂಶಗಳು ಸರಿಯಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ಯಾವುದಾದರೂ ಒಂದು ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ಪರೀಕ್ಷೆ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ಸುಳ್ಳು ಆಗಿದ್ದರೆ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ಸತ್ಯ ಆಗಿದ್ದರೆ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'ಪರೀಕ್ಷೆ'ಯಲ್ಲಿನ ಷರತ್ತನ್ನು ಪರಿಶೀಲಿಸಿ. ಷರತ್ತು ಸರಿಯಾಗಿದ್ದರೆ, 'ಸತ್ಯವಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನು; ಇಲ್ಲದಿದ್ದರೆ 'ಸುಳ್ಳಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನೂ ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ಭಾಗಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ವ್ಯತ್ಯಾಸವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ಗುಣಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "ಮೊದಲ ಸಂಖ್ಯೆಯ ಘಾತಾಂಶ ಎರಡನೇ ಸಂಖ್ಯೆಯಾದಾಗಿನ ಫಲಿತಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 ಬಿಂದುವಿನ ಆರ್ಕ್ ಟ್ಯಾನ್"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "ಬಿಂದು (X,Y) ನ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ನ್ನು -180 ರಿಂದ 180 ರವರೆಗಿನ ಡಿಗ್ರಿಗಳಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 ಅನ್ನು %2 ರಿಂದ ಬದಲಾಯಿಸಿ"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "ಚರಾಂಶ '%1' ಕ್ಕೆ ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕಗಳಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸಿ:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1ಅನ್ನು ಕಡಿಮೆ %2 ಹೆಚ್ಚಿನ %3 ಮೌಲ್ಯಗಳ ನಡುವೆ ನಿರ್ಬಂಧಿಸಿ"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "ನಿಗದಿತ ಮಿತಿಗಳ ನಡುವೆ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸಿ(ಒಳಗೊ೦ಡ)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ಇದರಿಂದ ಭಾಗಿಸಬಹುದೇ?"; +Blockly.Msg["MATH_IS_EVEN"] = "ಸಮ ಸಂಖ್ಯೆಯೇ?"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ಋಣಾತ್ಮಕವೇ?"; +Blockly.Msg["MATH_IS_ODD"] = "ಬೆಸ ಸಂಖ್ಯೆಯೇ?"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ಧನಾತ್ಮಕವೇ?"; +Blockly.Msg["MATH_IS_PRIME"] = "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆಯೇ?"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "ಒಂದು ಸಂಖ್ಯೆ ಸಮ, ಬೆಸ, ಅವಿಭಾಜ್ಯ, ಪೂರ್ಣ, ಧನಾತ್ಮಕ, ಋಣಾತ್ಮಕವಾಗಿದೆಯೇ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯಿಂದ ಭಾಗಿಸ ಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_IS_WHOLE"] = "ಪೂರ್ಣಸಂಖ್ಯೆಯೇ?"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 ರ ಶೇಷ"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ವಿಭಜನೆಯ ಶೇಷವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ಒಂದು ಸಂಖ್ಯೆ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ಪಟ್ಟಿಯ ಸರಾಸರಿ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ಪಟ್ಟಿಯ ಗರಿಷ್ಠ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ಪಟ್ಟಿಯ ಮಧ್ಯಾಂಕ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ಪಟ್ಟಿಯ ಕನಿಷ್ಠ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಆಗಾಗ್ಗೆ ಕಾಣಿಸಿಕೊಳ್ಳುವ ಸಂಖ್ಯೆಗಳು"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ಪಟ್ಟಿಯ ಮೊತ್ತ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಸಂಖ್ಯಾ ಮೌಲ್ಯಗಳ ಸರಾಸರಿ (ಅಂಕಗಣಿತದ ಸರಾಸರಿ) ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮಧ್ಯಾಂಕ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಕನಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಸಾಮಾನ್ಯ ಅಂಶಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (ಒಳಗೊಂಡ) ಮತ್ತು 1.0 (ವಿಶೇಷ) ನಡುವೆ ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕ %1 ರಿಂದ %2 ರವರೆಗೆ"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "ಎರಡು ನಿರ್ದಿಷ್ಟ ಮಿತಿಗಳ ನಡುವೆ ಇರುವ ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ಸುತ್ತು"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ."; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ಮೇಲಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ."; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಮೇಲಿನ ಅಥವಾ ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ಪರಿಪೂರ್ಣ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ವರ್ಗಮೂಲ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "ಸಂಖ್ಯೆಯೊಂದರ ಪರಿಪೂರ್ಣ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "ಒಂದು ಸಂಖ್ಯೆಯ e ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ಸಂಖ್ಯೆಯ ನೈಸರ್ಗಿಕ ಲಾಗರಿಥಮ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ಒಂದು ಸಂಖ್ಯೆಯ ಆಧಾರ 10 ಲಾಗರಿಥಮನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ಸಂಖ್ಯೆಯೊಂದರ ನಿರಾಕರಣೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "ಒಂದು ಸಂಖ್ಯೆಯ 10ರ ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ಸಂಖ್ಯೆಯ ವರ್ಗಮೂಲವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "ಕೋನವೊಂದರ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "ಕೋನವೊಂದರ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "ಕೋನವೊಂದರ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ಬಣ್ಣದ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ಸಂಖ್ಯಾ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "ಚಿಹ್ನೆಗಳ ಸರಣಿಯ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು..."; +Blockly.Msg["NEW_VARIABLE"] = "ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ಹೊಸ ಚರಾಂಶದ ಹೆಸರು:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ಹೊಸ ಚರಾಂಶದ ಡೇಟಾಪ್ರಕಾರ:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ಹೇಳಿಕೆಗಳನ್ನು ಅನುಮತಿಸಿ"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ಜೊತೆ:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ ಮತ್ತು ಅದರ ಹೊರಾಂಶವನ್ನು ಉಪಯೋಗಿಸಿ"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ಜೊತೆ:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' ರಚಿಸಿ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "ಈ ಕಾರ್ಯಘಟಕವನ್ನು ವಿವರಿಸಿ ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ಏನಾದರೂ ಮಾಡಿ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ಗೆ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "ಯಾವುದೇ ಹೊರಾಂಶ ಇಲ್ಲದ ಕಾರ್ಯಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ಹಿಂತಿರುಗಿಸಿ"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "ಹೊರಾಂಶ ಇರುವ ಕಾರ್ಯ ಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯಘಟಕವು ನಕಲಿ ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿದೆ."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ಒಂದು ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕ್ ಅನ್ನು ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ಒಳಾoಶದ ಹೆಸರು:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ಕಾರ್ಯಘಟಕಕ್ಕೆ ಒಳಾoಶವನ್ನು ಸೇರಿಸಿ."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ಒಳಾoಶಗಳು"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "ಈ ಕಾರ್ಯಕ್ಕೆ ಒಳಾoಶಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ಮತ್ತೆ ಮಾಡು"; +Blockly.Msg["REMOVE_COMMENT"] = "ಟಿಪ್ಪಣಿ ಅಳಿಸು"; +Blockly.Msg["RENAME_VARIABLE"] = "ಚರಾಂಶವನ್ನು ಮರುಹೆಸರಿಸು..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ಎಲ್ಲ '%1' ಚರಾಂಶಗಳನ್ನು ಮರುಹೆಸರಿಸು:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = " %1 ಕ್ಕೆ ಪಠ್ಯ %2 ನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ."; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' ಚರಾಂಶಕ್ಕೆ ಕೆಲವು ಪಠ್ಯವನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ಸಣ್ಣಕ್ಷರಕ್ಕೆ"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "ಶೀರ್ಷಿಕೆಯ ಅಕ್ಷರವಾಗಿ"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "ದೊಡ್ಡಕ್ಷರಕ್ಕೆ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಪ್ರಸ್ತುತಕ್ಕೆ ವಿರುದ್ಡವಾದ ದೊಡ್ಡಕ್ಷರ ಅಥವಾ ಸಣ್ಣಕ್ಷರದಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ಮೊದಲ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ಕೊನೆಯಿಂದ # ಅಕ್ಷರ ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# ಅಕ್ಷರ ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "ಕೊನೆಯ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ಯಾದೃಚ್ಛಿತ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ಪಠ್ಯದಲ್ಲಿ %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಕ್ಷರವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2 ರಲ್ಲಿ %1 ಅನ್ನು ಎಣಿಸಿ"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "ಬೇರೆ ಕೆಲವು ಪಠ್ಯಗಳಲ್ಲಿ ಕೆಲವು ಪಠ್ಯವು ಎಷ್ಟು ಬಾರಿ ಸಂಭವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಎಣಿಸಿ."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "ಪಠ್ಯಕ್ಕೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ಸೇರಿಸು"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "ಈ ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ಕೊನೆಯಿಂದ # ಅಕ್ಷರದವರೆಗೆ"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# ಅಕ್ಷರದವರೆಗೆ"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ಕೊನೆಯ ಅಕ್ಷರದವರೆಗೆ"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ಪಠ್ಯದಲ್ಲಿ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ಮೊದಲ ಅಕ್ಷರದಿಂದ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "ಪಠ್ಯದ ನಿರ್ದಿಷ್ಟ ಭಾಗವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ಪಠ್ಯದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ಪಠ್ಯದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ಪಠ್ಯದಲ್ಲಿ %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "ಎರಡನೇ ಪಠ್ಯದಲ್ಲಿ ಮೊದಲ ಪಠ್ಯದ ಸಂಭಾವ್ಯದ, ಮೊದಲ/ಕೊನೆಯ ಸೂಚ್ಯಂಕವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಪಠ್ಯ ಕಂಡುಬಂದಿಲ್ಲದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ಖಾಲಿಯಿದೆ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "ಒದಗಿಸಿದ ಪಠ್ಯ ಖಾಲಿಯಾಗಿದ್ದರೆ 'ಸತ್ಯ' ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ಇದರೊಂದಿಗೆ ಪಠ್ಯವನ್ನು ರಚಿಸಿ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "ಹಲವಾರು ಅಂಶಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸುವ ಮೂಲಕ ಪಠ್ಯದ ತುಣುಕನ್ನು ರಚಿಸಿ."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1ರ ಉದ್ದ"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "ಒದಗಿಸಿದ ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಸಂಖ್ಯೆಯನ್ನು (ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ) ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 ಮುದ್ರಿಸಿ"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪಠ್ಯ, ಸಂಖ್ಯೆ ಅಥವಾ ಇತರ ಮೌಲ್ಯವನ್ನು ಮುದ್ರಿಸಿ."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "ಬಳಕೆದಾರರಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "ಬಳಕೆದಾರರಿಗೆ ಕೆಲವು ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "ಸಂದೇಶದೊಂದಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ಸಂದೇಶದೊಂದಿಗೆ ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 ಅನ್ನು %3 ರಲ್ಲಿ %2 ರೊಂದಿಗೆ ಬದಲಾಯಿಸಿ."; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "ಬೇರೆ ಪಠ್ಯದೊಳಗಿನ ಎಲ್ಲಾ ಕೆಲವು ಪಠ್ಯದ ಸಂಭಾವ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಿ."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 ಅನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ."; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಕ್ರಮವನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "ಒಂದು ಅಕ್ಷರ, ಪದ ಅಥವಾ ಪಠ್ಯದ ಸಾಲು."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ಎರಡೂ ಕಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ಎಡಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ಬಲಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "ಒಂದು ಅಥವಾ ಎರಡೂ ತುದಿಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾದ ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TODAY"] = "ಇಂದು"; +Blockly.Msg["UNDO"] = "ಹಿಂದಿನಂತೆ ಮಾಡು"; +Blockly.Msg["UNNAMED_KEY"] = "ಹೆಸರಿಡದ"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ಅಂಶ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 ಬದಲಿಸಿ' ರಚಿಸಿ"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "ಈ ಚರಾಂಶದ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "%1 ನ್ನು %2 ಕ್ಕೆ ಬದಲಿಸಿ"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 ಪಡೆಯಿರಿ' ರಚಿಸಿ"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "ಈ ಚರಾಂಶವನ್ನು ಸೇರಿಸುವ ಅಂಶಕ್ಕೆ ಸಮಾನವಾಗಿ ಬದಲಿಸುತ್ತದೆ."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ '%2' ಡೇಟಾ ಪ್ರಕಾರದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "ಬ್ಲಾಕ್ಲಿ ಕಾರ್ಯಕ್ಷೇತ್ರ"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ಏನಾದರು ಹೇಳಿ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ko.js b/blockly/msg/ko.js new file mode 100644 index 00000000000..590e596218d --- /dev/null +++ b/blockly/msg/ko.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "주석 추가"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%2' 함수 정의의 일부이기 때문에 '%1' 변수를 삭제할 수 없습니다"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "값 바꾸기:"; +Blockly.Msg["CLEAN_UP"] = "블록 정리"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "접힌 블록이 경고를 포함하고 있습니다."; +Blockly.Msg["COLLAPSE_ALL"] = "블록 축소"; +Blockly.Msg["COLLAPSE_BLOCK"] = "블록 축소"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "색 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "색 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "비율"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "혼합"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "두 색을 주어진 비율로 혼합 (0.0 - 1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ko.wikipedia.org/wiki/색"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "팔레트에서 색을 고릅니다"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "무작위 색상"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "무작위로 색을 고릅니다."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "파랑"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "초록"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "빨강"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "색"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "빨강,파랑,초록의 값을 이용하여 색을 만드십시오. 모든 값은 0과 100 사이에 있어야 합니다."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://ko.wikipedia.org/wiki/%EC%A0%9C%EC%96%B4_%ED%9D%90%EB%A6%84"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "반복 중단"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "다음 반복"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "현재 반복 실행 블럭을 빠져나갑니다."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "나머지 반복 부분을 더 이상 실행하지 않고, 다음 반복을 수행합니다."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "경고 : 이 블록은 반복 실행 블럭 안에서만 사용됩니다."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84#.EC.9E.84.EC.9D.98.EC.9D.98_.EC.A7.91.ED.95.A9"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "각 항목에 대해 %1 목록으로 %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "리스트 안에 들어있는 각 아이템들을, 순서대로 변수 '%1' 에 한 번씩 저장시키고, 그 때 마다 명령을 실행합니다."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "으로 계산 %1 %2에서 %4을 이용하여 %3로"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "변수 \"%1\"은 지정된 간격으로 시작 수에서 끝 수까지를 세어 지정된 블록을 수행해야 합니다."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"만약\" 블럭에 조건 검사를 추가합니다."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "\"만약\" 블럭의 마지막에, 모든 검사 결과가 거짓인 경우 실행할 부분을 추가합니다."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%AC%B8"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "섹션을 추가, 제거하거나 순서를 변경하여 이 if 블럭을 재구성합니다."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "아니라면"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "다른 경우"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "만약"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "조건식의 계산 결과가 참이면, 명령을 실행합니다."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 그렇지 않으면 두 번째 블럭의 명령을 실행합니다."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행합니다."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행하고, ... , 어떤 조건식의 계산 결과도 참이 아니면, 마지막 블럭의 명령을 실행합니다."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ko.wikipedia.org/wiki/For_루프"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "하기"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1회 반복"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "여러 번 반복해 명령들을 실행합니다."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://ko.wikipedia.org/wiki/While_%EB%A3%A8%ED%94%84"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "다음까지 반복"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "동안 반복"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "값이 거짓일 때, 몇 가지 선언을 합니다."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "값이 참일 때, 몇 가지 선언을 합니다."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "모든 블록 %1개를 삭제하겠습니까?"; +Blockly.Msg["DELETE_BLOCK"] = "블록 삭제"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' 변수를 삭제합니다"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' 변수에서 %1을(를) 삭제하시겠습니까?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "블록 %1개 삭제"; +Blockly.Msg["DIALOG_CANCEL"] = "취소"; +Blockly.Msg["DIALOG_OK"] = "확인"; +Blockly.Msg["DISABLE_BLOCK"] = "블록 비활성화"; +Blockly.Msg["DUPLICATE_BLOCK"] = "복제"; +Blockly.Msg["DUPLICATE_COMMENT"] = "주석 복제하기"; +Blockly.Msg["ENABLE_BLOCK"] = "블록 활성화"; +Blockly.Msg["EXPAND_ALL"] = "블록 확장"; +Blockly.Msg["EXPAND_BLOCK"] = "블록 확장"; +Blockly.Msg["EXTERNAL_INPUTS"] = "외부 입력"; +Blockly.Msg["HELP"] = "도움말"; +Blockly.Msg["INLINE_INPUTS"] = "내부 입력"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "빈 리스트 생성"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "데이터 레코드가 없는, 길이가 0인 목록을 반환합니다."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "리스트"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "섹션을 추가, 제거하거나 순서를 변경하여 이 리스트 블럭을 재구성합니다."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "리스트 만들기"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "아이템을 리스트에 추가합니다."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "원하는 수의 항목들로 목록을 생성합니다."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "첫 번째"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "마지막 번째 위치부터, # 번째"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "가져오기"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "잘라 내기"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "마지막"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "임의로"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "삭제"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "첫 번째 아이템을 찾아 돌려줍니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "목록에서 특정 위치의 항목을 반환합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "마지막 아이템을 찾아 돌려줍니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "리스트의 아이템들 중, 랜덤으로 선택해 돌려줍니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "첫 번째 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "목록의 특정 위치에 있는 항목을 제거하고 반환합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "마지막 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "목록에서 임의 위치의 아이템을 찾아내 삭제하고 돌려줍니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "리스트에서 첫 번째 아이템을 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "목록에서 특정 위치의 항목을 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "리스트에서 마지막 아이템을 찾아 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "리스트에서 랜덤하게 아이템을 삭제합니다."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "끝에서부터 # 번째로"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "앞에서부터 # 번째로"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "마지막으로"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "첫 번째 위치부터, 서브 리스트 추출"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "마지막부터 # 번째 위치부터, 서브 리스트 추출"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "처음 # 번째 위치부터, 서브 리스트 추출"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "목록의 특정 부분에 대한 복사본을 만듭니다."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1은(는) 마지막 항목입니다."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1은 첫 번째 항목입니다."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "처음으로 나타난 위치"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "마지막으로 나타난 위치"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "목록에서 항목이 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 항목이 없으면 %1을 반환합니다."; +Blockly.Msg["LISTS_INLIST"] = "리스트"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1이 비어 있습니다"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "목록이 비었을 때 참을 반환합니다."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1의 길이"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "목록의 길이를 반환합니다."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1을 %2번 넣어, 리스트 생성"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "지정된 값을, 지정된 개수 만큼 넣어, 목록을 생성합니다."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 뒤집기"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "리스트의 복사본을 뒤집습니다."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "에"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "에서 원하는 위치에 삽입"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "에서 설정"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "항목을 목록의 처음 위치에 삽입합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "목록의 특정 위치에 항목을 삽입합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "리스트의 마지막에 아이템을 추가합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "목록에서 임의 위치에 아이템을 삽입합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "첫 번째 위치의 아이템으로 설정합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "목록의 특정 위치에 있는 항목으로 설정합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "마지막 아이템으로 설정합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "목록에서 임의 위치의 아이템을 설정합니다."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "오름차순"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "내림차순"; +Blockly.Msg["LISTS_SORT_TITLE"] = "정렬 %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "목록의 사본을 정렬합니다."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "알파벳순 (대소문자 구분 안 함)"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "숫자순"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "알파벳순"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "텍스트에서 목록 만들기"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "목록에서 텍스트 만들기"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "구분 기호로 구분하여 텍스트 목록을 하나의 텍스트에 병합합니다."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "각 속보, 텍스트의 목록들에서 텍스트를 분할합니다."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "분리와"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "거짓"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://ko.wikipedia.org/wiki/%EC%A7%84%EB%A6%BF%EA%B0%92"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "참 혹은 거짓 모두 반환합니다."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "참"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ko.wikipedia.org/wiki/부등식"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "두 값이 같으면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "첫 번째 값이 두 번째 값보다 크면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "첫 번째 값이 두 번째 값보다 크거나 같으면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "첫 번째 값이 두 번째 값보다 작으면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "첫 번째 값이 두 번째 값보다 작거나 같으면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "두 값이 서로 다르면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B6%80%EC%A0%95"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1가 아닙니다"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "입력값이 거짓이라면 참을 반환합니다. 참이라면 거짓을 반환합니다."; +Blockly.Msg["LOGIC_NULL"] = "빈 값"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "빈 값을 반환합니다."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "그리고"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B6%88_%EB%85%BC%EB%A6%AC"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "또는"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "두 값이 모두 참(true) 값이면, 참 값을 돌려줍니다."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "적어도 하나의 값이 참일 경우 참을 반환합니다."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "테스트"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://ko.wikipedia.org/wiki/물음표"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "만약 거짓이라면"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "만약 참이라면"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'test'의 조건을 검사합니다. 조건이 참이면 'if true' 값을 반환합니다. 거짓이면 'if false' 값을 반환합니다."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ko.wikipedia.org/wiki/산술"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "두 수의 합을 반환합니다."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "두 수의 나눈 결과를 반환합니다."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "두 수간의 차이를 반환합니다."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "두 수의 곱을 반환합니다."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "첫 번째 수를 두 번째 수 만큼, 거듭제곱 한 결과값을 돌려줍니다."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2의 atan2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "점 (X, Y)의 아크탄젠트를 -180에서 180까지 도 단위로 반환합니다."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "바꾸기 %1 만큼 %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "변수 '%1' 에 저장되어있는 값에, 어떤 수를 더해, 변수에 다시 저장합니다."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ko.wikipedia.org/wiki/수학_상수"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "일반적인 상수 값들 중 하나를 돌려줍니다. : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://ko.wikipedia.org/wiki/클램핑_(그래픽)"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1의 값을, 최소 %2 최대 %3으로 조정"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "어떤 수를, 특정 범위의 값이 되도록 강제로 조정합니다."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "가 다음 수로 나누어 떨어지면 :"; +Blockly.Msg["MATH_IS_EVEN"] = "가 짝수(even) 이면"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "가 음(-)수 이면"; +Blockly.Msg["MATH_IS_ODD"] = "가 홀수(odd) 이면"; +Blockly.Msg["MATH_IS_POSITIVE"] = "가 양(+)수 이면"; +Blockly.Msg["MATH_IS_PRIME"] = "가 소수(prime) 이면"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "어떤 수가 짝 수, 홀 수, 소 수, 정 수, 양 수, 음 수, 나누어 떨어지는 수 인지 검사해 결과값을 돌려줍니다. 참(true) 또는 거짓(false) 값을 돌려줌."; +Blockly.Msg["MATH_IS_WHOLE"] = "가 정수이면"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2의 나머지"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "첫 번째 수를 두 번째 수로 나눈, 나머지 값을 돌려줍니다."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ko.wikipedia.org/wiki/수_(수학)"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "수"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "평균값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "최대값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "중간값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "최소값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "가장 여러 개 있는 값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "목록의 임의 항목"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "표준 편차"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "합"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "리스트에 들어있는 수(값)들에 대해, 산술 평균(arithmetic mean) 한 값을 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "리스트에 들어있는 수(값) 들 중, 가장 큰(max) 수(값)를 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "리스트에 들어있는 수(값) 들 중, 중간(median) 수(값)를 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "리스트에 들어있는 수(값) 들 중, 가장 작은(min) 수(값)를 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "리스트에 들어있는 아이템들 중에서, 가장 여러 번 들어있는 아이템들을 리스트로 만들어 돌려줍니다. (최빈값, modes)"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "목록에서 임의의 아이템을 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "이 리스트의 표준 편차를 반환합니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "리스트에 들어있는 수(값)들을, 모두 합(sum) 한, 총합(sum)을 돌려줍니다."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "임의 분수"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (포함)과 1.0 (배타적) 사이의 임의 분수 값을 돌려줍니다."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "랜덤정수(%1<= n <=%2)"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "두 주어진 제한된 범위 사이의 임의 정수값을 돌려줍니다."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ko.wikipedia.org/wiki/반올림"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "반올림"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "버림"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "올림"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "어떤 수를 반올림/올림/버림한 결과를, 정수값으로 돌려줍니다."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ko.wikipedia.org/wiki/제곱근"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "절대값"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "제곱근"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "어떤 수의 절대값(absolute)을 계산한 결과를, 정수값으로 돌려줍니다."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "e의 거듭제곱 값을 반환합니다."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "어떤 수의, 자연로그(natural logarithm) 값을 돌려줍니다.(밑 e, 예시 log e x)"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "어떤 수의, 기본로그(logarithm) 값을 돌려줍니다.(밑 10, 예시 log 10 x)"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "음(-)/양(+), 부호를 반대로 하여 값을 돌려줍니다."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10의 거듭제곱 값을 반환합니다."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "숫자의 제곱근을 반환합니다."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ko.wikipedia.org/wiki/삼각함수"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "어떤 수에 대한, acos(arccosine) 값을 돌려줍니다."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "어떤 수에 대한, asin(arcsine) 값을 돌려줍니다."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "어떤 수에 대한, atan(arctangent) 값을 돌려줍니다."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "각도의 코사인을 반환합니다. (라디안 아님)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "각도의 사인을 반환합니다. (라디안 아님)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "각도의 탄젠트를 반환합니다. (라디안 아님)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "색 변수 만들기..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "숫자 변수 만들기...."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "문자열 변수 만들기..."; +Blockly.Msg["NEW_VARIABLE"] = "변수 만들기..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "새 변수 이름:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "새 변수 유형:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "서술 허가"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "사용:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/함수_(프로그래밍)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "미리 정의해 둔 '%1' 함수를 실행합니다."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/함수_(프로그래밍)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "미리 정의해 둔 '%1' 함수를 실행하고, 함수를 실행한 결과 값을 돌려줍니다."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "사용:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' 생성"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "이 함수를 설명하세요..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "함수 이름"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "함수"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "실행 후, 결과 값을 돌려주지 않는 함수를 만듭니다."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "다음을 돌려줌"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "실행 후, 결과 값을 돌려주는 함수를 만듭니다."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "경고: 이 함수에는, 같은 이름을 사용하는 매개 변수들이 있습니다."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "함수 정의 찾기"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "값이 참이라면, 두 번째 값을 반환합니다."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "경고: 이 블럭은, 함수 정의 블럭 안에서만 사용할 수 있습니다."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "매개 변수:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "함수에 값을 더합니다."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "매개 변수들"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "이 함수를 추가, 삭제, 혹은 재정렬합니다."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "다시 실행"; +Blockly.Msg["REMOVE_COMMENT"] = "주석 제거"; +Blockly.Msg["RENAME_VARIABLE"] = "변수 이름 바꾸기:"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "'%1' 변수 이름을 바꾸기:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "다음 %1 내용 덧붙이기 %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' 변수의 끝에 일부 텍스트를 덧붙입니다."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "소문자로"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "첫 문자만 대문자로"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "대문자로"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "영문 대소문자 형태를 변경해 돌려줍니다."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "에서, 첫 번째 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "에서, 마지막부터 # 번째 위치의 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "에서, 앞에서부터 # 번째 위치의 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "에서, 마지막 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "에서, 랜덤하게 한 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "텍스트 %1 %2에서"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "특정 번째 위치에서, 문자를 얻어내 돌려줍니다."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2에서 %1 숫자 세기"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "다른 어떤 텍스트에서 어떤 텍스트가 나타난 횟수를 셉니다."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "텍스트에 항목을 추가합니다."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "가입"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "섹션을 추가, 제거하거나 순서를 변경하여 이 텍스트 블럭을 재구성합니다."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "끝에서부터 # 번째 문자까지"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# 번째 문자까지"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "마지막 문자까지"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "문장"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "에서, 처음부터 얻어냄"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "에서, 마지막에서 # 번째부터 얻어냄"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "에서, 처음부터 # 번째 문자부터 얻어냄"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "문장 중 일부를 얻어내 돌려줍니다."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "에서 다음 문장이 처음으로 나타난 위치 찾기 :"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "에서 다음 문장이 마지막으로 나타난 위치 찾기 :"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "문장 %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "두 번째 텍스트에서 첫 번째 텍스트가 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 텍스트가 없으면 %1을 반환합니다."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1이 비어 있습니다"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "입력된 문장이, 빈 문장(\"\")이면 참(true) 값을 돌려줍니다."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "텍스트 만들기"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "여러 개의 아이템들을 연결해(묶어), 새로운 문장을 만듭니다."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "다음 문장의 문자 개수 %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "입력된 문장의, 문자 개수를 돌려줍니다.(공백문자 포함)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "다음 내용 출력 %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "원하는 문장, 수, 값 등을 출력합니다."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "수에 대해 사용자의 입력을 받습니다."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "문장에 대해 사용자의 입력을 받습니다."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "메시지를 활용해 수 입력"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "메시지를 활용해 문장 입력"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%3에서 %2을(를) %1(으)로 바꾸기"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "다른 텍스트 내에서 일부 텍스트의 모든 발생을 치환합니다."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 뒤집기"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "텍스트 안의 문자의 순서를 반전시킵니다."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ko.wikipedia.org/wiki/문자열"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "문자, 단어, 문장."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "양쪽의 공백 문자 제거"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "왼쪽의 공백 문자 제거"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "오른쪽의 공백 문자 제거"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "문장의 왼쪽/오른쪽/양쪽에서 스페이스 문자를 제거해 돌려줍니다."; +Blockly.Msg["TODAY"] = "오늘"; +Blockly.Msg["UNDO"] = "실행 취소"; +Blockly.Msg["UNNAMED_KEY"] = "이름이 없는"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "항목"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'집합 %1' 생성"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "변수에 저장 되어있는 값을 돌려줍니다."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "%1를 %2로 설정"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 값 읽기' 블럭 생성"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "변수의 값을 입력한 값으로 변경해 줍니다."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' 변수는 이미 존재합니다."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' 변수는 다른 유형에 대해 이미 존재합니다: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly 워크스페이스"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "말해 보세요..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ksh.js b/blockly/msg/ksh.js new file mode 100644 index 00000000000..f84792638a2 --- /dev/null +++ b/blockly/msg/ksh.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Dä Wäät tuusche:"; +Blockly.Msg["CLEAN_UP"] = "Klözjer opprühme"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Donn di Klözjer zesammefallde"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Donn dat Klözje zesammefallde"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "eezte Färv"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "zwaite Färv"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "Verhhälltneß"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mesch zwai Färve med enem beschtempte Verhältneß (zwesche 0.0 un 1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "en föhfälleje Färv"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Söhg en Färv pä Zohfall uß."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blou"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "jröhn"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruhd"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "enfärve met"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "zäll %1 vun %2 noh %3 en Schredde vun %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sönst"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "maach"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 Mohl widerhole"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "widerholl bes"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "widderholl, esu lang wi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Schmiiß dat Klözje fott"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Schmiiß %1 Klözjer fott"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "Jebongt!"; +Blockly.Msg["DISABLE_BLOCK"] = "Donn dat Klözje ußschallde"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Donn dat Klözje enschallde"; +Blockly.Msg["EXPAND_ALL"] = "Donn di Klözjer opfallde"; +Blockly.Msg["EXPAND_BLOCK"] = "Donn dat Klözje opfallde"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Hölp"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es de Läzde en de Leß."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es de Eezde en de Leß."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 es läddesch"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Jitt „Wohr“ us, wann en dä Leß nix dren es."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "opwääts"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "rökwääts zottehre"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "donn dä Wääd_en %1 öm %2 ändere"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "säz der Wäät en %1 op %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ku-latn.js b/blockly/msg/ku-latn.js new file mode 100644 index 00000000000..ed745219365 --- /dev/null +++ b/blockly/msg/ku-latn.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Şîroveyekê lê zêde bike"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "reng 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "reng 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rengeke ketober"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "şîn"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "kesk"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "sor"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "heke"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Betal bike"; +Blockly.Msg["DIALOG_OK"] = "Baş e"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Alîkarî"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lîste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ya pêşîn"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ya paşîn"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ketober"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 vala ye"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "nerast"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "rast"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "û"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "an"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "heke nerast be"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "heke rast be"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Biafirîne '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vegere"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "beşdarî"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 vala ye"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "çap %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Îro"; +Blockly.Msg["UNDO"] = "Betal bike"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Tiştek bibêje..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ky.js b/blockly/msg/ky.js new file mode 100644 index 00000000000..7e181819193 --- /dev/null +++ b/blockly/msg/ky.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Пикириңизди кошуңуз"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "маанисин өзгөрт"; +Blockly.Msg["CLEAN_UP"] = "Блокторду тазалоо"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Блокторду жашыруу"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Блокту жашыруу"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1-түс"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2-түс"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "катышы"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "аралаштыруу"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Эки түстү берилген катыш (0.0 - 1.0) менен аралаштыр."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "палитрадан түс танда"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "тушкелди түс"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Түстү тушкелди тандоо."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "көк"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "жашыл"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "кызыл"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "түсү менен"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Кызыл, жашыл жана көк түстөрдөн жаңы түс жаса. Ар бир түстүн мааниси 0 менен 100 арасында болуусу керек."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 катарынын ар бир элементи %1 үчүн"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 менен %2 ден %3 кө чейин %4 төн эсепте"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "башка"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "же болбосо"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "эгерде"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "жаса"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 жолу кайтала"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Билдирүүнү бир канча жолу кайтала"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "Кайтала чейин"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Кайтала эгерде"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Маани ката болгон учурда билдирүүлөрдү кайтала"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Маани туура болгон учурда билдирүүлөрдү кайтала"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "1% блоктордун баарын өчүрүү, йа?"; +Blockly.Msg["DELETE_BLOCK"] = "Блокту Өчүрүү"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Блоктун 1%ын Өчүрүү"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Блок жараксыз"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дубликат"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Блок жарактуу"; +Blockly.Msg["EXPAND_ALL"] = "Блокторду кеңейтүү"; +Blockly.Msg["EXPAND_BLOCK"] = "Блокту кеңейтүү"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Тышкы Толуктоолор"; +Blockly.Msg["HELP"] = "Жардам"; +Blockly.Msg["INLINE_INPUTS"] = "Ички Толуктоолор"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = " %1 эмес"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "же"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "текшерүү"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ката болсо"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "туура болсо"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ky.wikipedia.org/wiki/Тригонометриялык_функциялар"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "жаңы өзгөрмө"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Жаңы өзгөрмөнүн аты"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Жорумду өчүрүү"; +Blockly.Msg["RENAME_VARIABLE"] = "Өзгөрмөнүн атын алмаштыруу"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Баардык '%1' өзгөрмөнүнүн атын алмаштыр"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 бош"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Бүгүн"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/la.js b/blockly/msg/la.js new file mode 100644 index 00000000000..c055286a9bc --- /dev/null +++ b/blockly/msg/la.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "ASSENTIOR"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/lb.js b/blockly/msg/lb.js new file mode 100644 index 00000000000..f83bb0c6c6b --- /dev/null +++ b/blockly/msg/lb.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Bemierkung derbäisetzen"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Wäert änneren:"; +Blockly.Msg["CLEAN_UP"] = "Bléck opraumen"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Bléck zesummeklappen"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Block zesummeklappen"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Faarf 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "Faarf 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mëschen"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Sicht eng Faarf an der Palette eraus."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "zoufälleg Faarf"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Eng zoufälleg Faarf eraussichen."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blo"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "gréng"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rout"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "fierwe mat"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "fir all Element %1 an der Lëscht %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "zielt mat %1 vun %2 bis %3 mat %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "soss"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "wann"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "maach"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1-mol widderhuelen"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "widderhuele bis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Widderhuel soulaang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Féiert d'Uweisungen aus, soulaang wéi de Wäert falsch ass."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Féiert d'Uweisungen aus, soulaang wéi de Wäert richteg ass"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Block läschen"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 Bléck läschen"; +Blockly.Msg["DIALOG_CANCEL"] = "Ofbriechen"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Block desaktivéieren"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Eng Kopie maachen"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Bemierkung kopéieren"; +Blockly.Msg["ENABLE_BLOCK"] = "Block aktivéieren"; +Blockly.Msg["EXPAND_ALL"] = "Bléck opklappen"; +Blockly.Msg["EXPAND_BLOCK"] = "Block opklappen"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Hëllef"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "Lëscht"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "En Element op d'Lëscht derbäisetzen."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "éischt"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# vun hannen"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "lescht"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "Zoufall"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ewechhuelen"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Schéckt en zoufällegt Element aus enger Lëscht zréck."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Hëlt dat lescht Element aus enger Lëscht eraus."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Hëlt en zoufällegt Element aus enger Lëscht eraus."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ass dat éischt Element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ass dat éischt Element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "an der Lëscht"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ass eidel"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "Längt vu(n) %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 ëmdréinen"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "als"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "asetzen op"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Setzt d'Element um Enn vun enger Lëscht derbäi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Setzt d'Element op eng zoufälleg Plaz an d'Lëscht derbäi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setzt en zoufällegt Element an eng Lëscht."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 zortéieren"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeresch"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetesch"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsch"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Schéckt entweder richteg oder falsch zréck."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "wouer"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "net %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "an"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "oder"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "Test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "wa falsch"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "wa wouer"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Den Total vun den zwou Zuelen zréckginn."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "D'Produkt vun den zwou Zuelen zréckginn."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "änneren %1 ëm %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "ass gerued"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ass negativ"; +Blockly.Msg["MATH_IS_ODD"] = "ass ongerued"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ass positiv"; +Blockly.Msg["MATH_IS_PRIME"] = "ass eng Primzuel"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "ass eng ganz Zuel"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "Rescht vu(n) %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Eng Zuel."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Moyenne vun der Lëscht"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Maximum aus der Lëscht"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "zoufällegt Element vun enger Lëscht"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Schéckt de gréisste Wäert aus enger Lëscht zréck."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "zoufälleg ganz Zuel tëscht %1 a(n) %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "opronnen"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ofrënnen"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "oprënnen"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Eng Zuel op- oder ofrënnen."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://lb.wikipedia.org/wiki/Racine carrée"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Quadratwuerzel"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Variabel uleeën..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Neie variabelen Numm:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "mat:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "mat:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' uleeën"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Dës Funktioun beschreiwen..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "eppes maachen"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "zréck"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Widderhuelen"; +Blockly.Msg["REMOVE_COMMENT"] = "Bemierkung ewechhuelen"; +Blockly.Msg["RENAME_VARIABLE"] = "Variabel ëmbenennen..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "All '%1' Variabelen ëmbenennen op:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "am Text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "En Element bei den Text derbäisetzen."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bis bei de Buschtaf #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "bis bei de leschte Buschtaf"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "am Text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "am Text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ass eidel"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "Längt vu(n) %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 drécken"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Frot de Benotzer no engem Text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 duerch %2 a(n) %3 ersetzen"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "All Kéiers wou e bestëmmten Text do ass duerch en aneren Text ersetzen."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Dréint d'Reiefolleg vun den Zeechen am Text ëm."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "E Buschtaf, e Wuert oder eng Textzeil."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Haut"; +Blockly.Msg["UNDO"] = "Réckgängeg maachen"; +Blockly.Msg["UNNAMED_KEY"] = "ouni Numm"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sot eppes..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/lki.js b/blockly/msg/lki.js new file mode 100644 index 00000000000..85e6deb1a4f --- /dev/null +++ b/blockly/msg/lki.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "گةپ دائن"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "تةغییر مقدار:"; +Blockly.Msg["CLEAN_UP"] = "تمیزکردن بلاکةل"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "چؤیچانن/پشکانن بلاکةل"; +Blockly.Msg["COLLAPSE_BLOCK"] = "چؤیچانن/پشکانن بلاک"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رةنگ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رةنگ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "قاتی پاتی"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lki.wikipedia.org/wiki/ڕەنگ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "رةنگێ إژ تةختة رةنگ انتخاب کةن"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رةنگ بةختةکی"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = ".رةنگئ بةختةکی انتخاب کةن"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "کاوو"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سؤز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "سۆر"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رةنگ وة"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ساخت یک رنگ با مقدار مشخص‌شده‌ای از سۆر، سؤز و کاوو. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "شکانِن حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ادامه با تکرار بعدی حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "شکستن حلقهٔ شامل."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ئةرا هر مورد %1 وۀ نام لیست%2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "با تعداد %1 از %2 به %3 با گام‌های %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "افزودن یک شرط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "آنگاه"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "اگر آنگاه"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://lki.wikipedia.org/wiki/حلقه_فور"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "انجوم بی"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%بار تکرار 1"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "انجام چةن عبارت چندین گِل."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تکرار تا وةختێ گإ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تکرار در حالی که"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "حةذف کؤل %1 بلاکةل?"; +Blockly.Msg["DELETE_BLOCK"] = "پاک کردن بلاک"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "حةذف %1 بلاکةل"; +Blockly.Msg["DIALOG_CANCEL"] = "ئآهووسانن/لغو"; +Blockly.Msg["DIALOG_OK"] = "تأیید"; +Blockly.Msg["DISABLE_BLOCK"] = "إ کار کةتن(غیرفعال‌سازی) بلاک"; +Blockly.Msg["DUPLICATE_BLOCK"] = "کؤپی کردن"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "إ کارآشتن(فعال)بلاک"; +Blockly.Msg["EXPAND_ALL"] = "کةلنگآ کردِن بلاکةل"; +Blockly.Msg["EXPAND_BLOCK"] = "کةلنگآ کردِن بلاک"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ورودیةل خروجی"; +Blockly.Msg["HELP"] = "کؤمةک"; +Blockly.Msg["INLINE_INPUTS"] = "ورودیةل نوم جا"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ایجاد فهرست خالی"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لیست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ایجاد فهرست با"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "اضافه‌کردن یک مورد به فهرست."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "فهرستی از هر عددی از موارد می‌سازد."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "إژ أؤةل"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# إژ دؤما آخر"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گِرتِن"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گِرتِن و حةذف کردن"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "دؤمائن/آخرین"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "بةختةکی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حةذف کردن"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "اولین مورد یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "موردی در محل مشخص‌شده بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "آخرین مورد در یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "یک مورد تصادفی در یک فهرست بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "اولین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "آخرین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "یک مورد تصادفی را یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "به # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "به #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "به آخرین"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "گرفتن زیرمجموعه‌ای از ابتدا"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "گرفتن زیرمجموعه‌ای از # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "گرفتن زیرمجموعه‌ای از #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 آخرین مورد است."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 اولین مورد است."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "یافتن اولین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "یافتن آخرین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود."; +Blockly.Msg["LISTS_INLIST"] = "در فهرست"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "اگر فهرست خالی است مقدار صجیج بر می‌گرداند."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "طول یک فهرست را برمی‌گرداند."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "به عنوان"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "درج در"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "مجموعه"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "موردی به ته فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "موردی به ته فهرست الحاق می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "مورد را به صورت تصادفی در یک فهرست می‌افزاید."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "اولین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "مورد مشخص‌شده در یک فهرست را قرار می‌دهد."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "آخرین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "یک مورد تصادفی در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ساخت لیست إژ متن"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ساخت متن إژ لیست"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "همراه جداساز"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "نادرست"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "بازگرداندن یکی از صحیح یا ناصحیح."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "درست"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد."; +Blockly.Msg["LOGIC_NULL"] = "پةتی/خالی"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "تهی باز می گرداند"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمائشت"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر نادرست"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر درست"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "بازگرداندن مقدار جمع دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "بازگرداندن باقی‌ماندهٔ دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "بازگرداندن تفاوت دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "بازگرداندن حاصلضرب دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "تغییر %1 با %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "افزودن یک عدد به متغیر '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "محدودکردن %1 پایین %2 بالا %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "تقسیم شده بر"; +Blockly.Msg["MATH_IS_EVEN"] = "زوج است"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی است"; +Blockly.Msg["MATH_IS_ODD"] = "فرد است"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت است"; +Blockly.Msg["MATH_IS_PRIME"] = "عدد اول است"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند."; +Blockly.Msg["MATH_IS_WHOLE"] = "کامل است"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "باقی‌ماندهٔ %1 + %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "شؤمارە یەک"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "میانگین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بزرگ‌ترین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "میانهٔ فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "گوجةرتةرین لیست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "مد فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "مورد تصادفی از فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "انحراف معیار فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جمع لیست"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "بزرگ‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "میانهٔ عدد در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "کوچک‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "موردی تصادفی از فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "انحراف معیار فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "جمع همهٔ عددهای فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "کسر تصادفی"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "عدد صحیح تصادفی بین %1 تا %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گردکردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "گرد به پایین"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "گرد به بالا"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "گردکردن یک عدد به بالا یا پایین."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ریشهٔ دوم"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "قدر مطلق یک عدد را بازمی‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "بازگرداندن توان e یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "لوگاریتم طبیعی یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "منفی‌شدهٔ یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "بازگرداندن توان ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ریشهٔ دوم یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "بازگرداندن آرک‌کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = ".(بازگرداندن آرک‌سینوس درجه (نه رادیان"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "بازگرداندن آرک‌تانژانت درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "بازگرداندن کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "بازگرداندن سینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "بازگرداندن تانژانت یک درجه (نه رادیان)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "متغیر تازه..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نام متغیر تازه:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اجازه اظهارات"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1»."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "ساختن «%1»"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "انجام چیزی"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "به"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "تابعی می‌سازد بدون هیچ خروجی."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "بازگشت"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "تابعی با یک خروجی می‌سازد."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "اخطار: این تابعی پارامتر تکراری دارد."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "برجسته‌سازی تعریف تابع"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نام ورودی:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "اضافه کردن ورودی به تابع."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ورودی‌ها"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "پاک کردن گةپةل/قِسةل"; +Blockly.Msg["RENAME_VARIABLE"] = "تغییر نام متغیر..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تغییر نام همهٔ متغیرهای «%1» به:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "به %1 چسباندن متن %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "الحاق متنی به متغیر «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "به حروف کوچک"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "به حروف بزرگ عنوان"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "به حروف بزرگ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "بازگرداندن کپی متن در حالتی متفاوت."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "گرفتن اولین حرف"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "گرفتن حرف # از آخر"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "گرفتن حرف #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "گرفتن آخرین حرف"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "گرفتن حرف تصادفی"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "حرفی در موقعیت مشخص‌شده بر می‌گرداند."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "افزودن یک مورد به متن."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "نام نؤیسی"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "اضافه‌کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "به حرف # از انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "به حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "به آخرین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "در متن"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "گرفتن زیرمتن از اولین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "گرفتن زیرمتن از حرف # به انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "گرفتن زیرمتن از حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "اولین رخداد متن را بیاب"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "آخرین رخداد متن را بیاب"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "در متن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ایجاد متن با"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "چاپ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "اعلان برای کاربر با یک عدد."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "اعلان برای کاربر برای یک متن."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "اعلان برای عدد با پیام"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "اعلان برای متن با پیام"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "یک حرف، کلمه یا خطی از متن."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "تراشیدن فاصله‌ها از هر دو طرف"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; +Blockly.Msg["TODAY"] = "ایمڕۆ"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "آیتم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "درست‌کردن «تنظیم %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "مقدار این متغیر را بر می‌گرداند."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "مجموعه %1 به %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "درست‌کردن «گرفتن %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "متغیر برابر با خروجی را مشخص می‌کند."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/lo.js b/blockly/msg/lo.js new file mode 100644 index 00000000000..1c9e96c707b --- /dev/null +++ b/blockly/msg/lo.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ເພີ່ມຄຳອະທິບາຍ"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ປ່ຽນຄ່າ:"; +Blockly.Msg["CLEAN_UP"] = "ຈັດລຽນບລັອກໃຫ້ເປັນແຖວ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ຍຸບບລັອກ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ຍຸບບລັອກ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ສີ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ສີ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ອັດຕາສ່ວນ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ປະສົມ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ປະສົມສອງສີເຂົ້າກັນດ້ວຍອັດຕາສ່ວນ (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lo.wikipedia.org/wiki/ສີ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ເລືອກສີຈາກຈານສີ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ສຸ່ມສີ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ເລືອກສີແບບສຸ່ມ."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ຄ່າສີນ້ຳເງິນ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ຄ່າສີຂຽວ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ຄ່າສີແດງ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ສີທີ່ປະກອບດ້ວຍ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ສ້າງສີດ້ວຍການກຳນົດຄ່າສີແດງ, ສີຂຽວ, ແລະສີນ້ຳເງິນ. ຄ່າທັງໝົດຕ້ອງຢູ່ລະຫວ່າງ 0 ເຖິງ 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ອອກຈາກການວົນຊ້ຳ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ອອກຈາກການວົນຊ້ຳທີ່ຢູ່."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ຂ້າມຜ່ານຄຳສັ່ງທີ່ເຫຼືອຢູ່, ແລະເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ຄຳເຕືອນ: ບລັອກນີ້ໃຊ້ງານໄດ້ພາຍໃນການວົນຊ້ຳເທົ່ານັ້ນ."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ຈາກທຸກລາຍການ %1 ໃນລາຍຊື່ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "ສຳລັບທຸກລາຍການໃນລາຍຊື່, ໃຫ້ຕັ້ງຄ່າຕົວແປ '%1' ເປັນລາຍການ, ແລະເຮັດຕາມຄຳສັ່ງທີ່ກຳນົດໄວ້."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "ນັບດ້ວຍ %1 ຈາກ %2 ເຖິງ %3 ປ່ຽນຄ່າທີລະ %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ຕົວແປ '%1' ຈະເລີ່ມຈາກຈຳນວນເລີ່ມຕົ້ນໄປຫາຈຳນວນສຸດທ້າຍ, ນັບຕາມຊ່ວງໄລຍະທີ່ກຳນົດ, ແລະເຮັດຕາມບລັອກທີ່ກຳນົດໄວ້."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "ເພີ່ມເງື່ອນໄຂລົງໃນບລັອກ \"ຖ້າ\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ເພີ່ມສິ່ງສຸດທ້າຍ, ກວດຫາຄວາມເປັນໄປໄດ້ທັງໝົດຂອງບລັອກ \"ຖ້າ\"."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ເພີ່ມ, ລຶບ, ຫຼື ຈັດລຽງບລັອກ \"ຖ້າ\" ນີ້ໃໝ່."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ນອກຈາກນີ້"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ນອກຈາກນີ້ ຖ້າ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ຖ້າ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ຖ້າເງື່ອນໄຂເປັນຈິງ, ກໍຈະເຮັດຕາມທີ່ກຳນົດ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ເຮັດ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ເຮັດຄືນ %1 ຄັ້ງ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ເຮັດຄຳສັ່ງບາງຄຳສັ່ງຄືນຫຼາຍໆຄັ້ງ."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ເຮັດຄືນຈົນກະທັ່ງ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ເຮັດຄືນຂະນະທີ່"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ຂະນະທີ່ຄ່າເປັນເທັດ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ຂະນະທີ່ຄ່າເປັນຈິງ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ລຶບ %1 ບລັອກທັງໝົດຫຼືບໍ່?"; +Blockly.Msg["DELETE_BLOCK"] = "ລຶບບລັອກ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "ລຶບ %1 ບລັອກ"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ປິດໃຊ້ງານບລັອກ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ເຮັດສຳເນົາ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ເປີດໃຊ້ງານບລັອກ"; +Blockly.Msg["EXPAND_ALL"] = "ຂະຫຍາຍບລັອກ"; +Blockly.Msg["EXPAND_BLOCK"] = "ຂະຫຍາຍບລັອກ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ອິນພຸດພາຍນອກ"; +Blockly.Msg["HELP"] = "ຊ່ວຍເຫຼືອ"; +Blockly.Msg["INLINE_INPUTS"] = "ອິນພຸດໃນບັນທັດ"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ເທັດ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ຄືນຄ່າເປັນຈິງ ຫຼື ເທັດ."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ຈິງ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://​​lo.wikipedia.org/wiki/ອະສົມຜົນ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນເທົ່າກັນ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າຄ່າທີ່ສອງ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າຄ່າທີ່ສອງ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນບໍ່ເທົ່າກັນ."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ບໍ່ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທີ່ໃສ່ເປັນເທັດ. ຄືນຄ່າເປັນເທັດຖ້າຄ່າທີ່ໃສ່ເປັນຈິງ."; +Blockly.Msg["LOGIC_NULL"] = "ບໍ່ກຳນົດ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ຄືນຄ່າບໍ່ກຳນົດ."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ແລະ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ຫຼື"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທັງສອງເປັນຈິງ."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ຄືນຄ່າເປັນຈິງຖ້າມີຄ່າຢ່າງນ້ອຍໜຶ່ງຄ່າທີ່ເປັນຈິງ."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ທົດສອບ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ຖ້າ ເປັນເທັດ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ຖ້າ ເປັນຈິງ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "ກວດສອບເງື່ອນໄຂໃນ 'ທົດສອບ'. ຖ້າເງື່ອນໄຂເປັນຈິງ, ຄືນຄ່າ 'ຖ້າ ເປັນຈິງ'; ຖ້າເງື່ອນໄຂເປັນເທັດ, ໃຫ້ຄືນຄ່າ 'ຖ້າ ເປັນເທັດ'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://lo.wikipedia.org/wiki/ຈຳນວນ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ຈຳນວນໜຶ່ງ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ຊື່ຕົວແປໃໝ່:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ເຮັດຄືນ"; +Blockly.Msg["REMOVE_COMMENT"] = "ເອົາຄຳອະທິບາຍອອກ"; +Blockly.Msg["RENAME_VARIABLE"] = "ປ່ຽນຊື່ຕົວແປ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ປ່ຽນຊື່ຕົວແປ '%1' ທັງໝົດເປັນ:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ມື້ນີ້"; +Blockly.Msg["UNDO"] = "ກັບຄືນ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ລາຍການ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/lrc.js b/blockly/msg/lrc.js new file mode 100644 index 00000000000..0a0db810119 --- /dev/null +++ b/blockly/msg/lrc.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "نٱزٱرتو ناْ اْزاف بٱکؽت"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ٱرزشت آلشت کو:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "کوچک کردن برشتؽا"; +Blockly.Msg["COLLAPSE_BLOCK"] = "کوچک کردن برشت"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رٱنڳ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رٱنڳ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسڤٱت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "شؽڤسٱ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "هٱر کوم د رٱنڳؽا ناْ ڤا نسڤٱت داٛئٱ بٱ بٱشؽڤن(0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "یاٛ رٱنڳ د رٱنڳدو اْنتخاو بٱکؽت"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رٱنڳ بٱختٱکی"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "یاٛ ٱنڳ بٱختٱکی اْنتخاو بٱکؽت"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "آوئی"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سۉز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "سۏز"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رٱنڳ ڤا"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "هٱلقٱ ناْ خراو کو"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "هٱلقٱ شومل بیٱ ناْ خراو کو"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "سی هٱر قلٱم %1 د نومگٱ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "شماردن وا %1 د %2 سی %3 ڤا %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "هنی"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "هنی ٱر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ٱر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ٱنجوم باٛ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 تکرار کو چٱن بار"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تا تکرار کو"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تا تکرار کو"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "پاکسا کردن برشت"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "پاکسا کردن%1 د برشتؽا"; +Blockly.Msg["DIALOG_CANCEL"] = "رٱد كردن"; +Blockly.Msg["DIALOG_OK"] = "خۊئٱ"; +Blockly.Msg["DISABLE_BLOCK"] = "ناکشتگر کردن برشت"; +Blockly.Msg["DUPLICATE_BLOCK"] = "کپی کردن"; +Blockly.Msg["DUPLICATE_COMMENT"] = "نٱزٱر تکراری"; +Blockly.Msg["ENABLE_BLOCK"] = "کنشتگر کردن برشت"; +Blockly.Msg["EXPAND_ALL"] = "گٱپ کردن برشتؽا"; +Blockly.Msg["EXPAND_BLOCK"] = "گٱپ کردن برشت"; +Blockly.Msg["EXTERNAL_INPUTS"] = "دادٱیا ڤ دری"; +Blockly.Msg["HELP"] = "هومياری"; +Blockly.Msg["INLINE_INPUTS"] = "دادٱیا مؽنجا"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "یاٛ نومگٱ هالٛی دۏرس بٱکؽت"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "نومگٱ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ٱڤلی"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# تا آخر"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گرتن"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گرتن ۉ جا ڤ جا بیئن"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخر"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "بٱختٱکی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ڤرداشتن"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "سی#"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "سی آخر"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "د نومگٱ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 هالٛیٱ"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "چی"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "بٱنؽ د"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "غلٱت"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "هٱم غلٱت ۉ هٱم دۏرس ڤرگٱردن"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "راس ۉ دۏرس"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نٱ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "خونسا"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "ۉ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزماشت کردن"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ٱر غلٱت بی"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ٱر دۏرس بی"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ڤاْ ٱندازٱ دۏ شمارٱ ڤرگٱردن."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "آلشت بٱکؽت %1 وا %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "یٱ ڤا بٱئر بیٱ"; +Blockly.Msg["MATH_IS_EVEN"] = "همیشٱ هؽسش"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "مٱنفی ٱ"; +Blockly.Msg["MATH_IS_ODD"] = "تٱنڳؽا ٱ"; +Blockly.Msg["MATH_IS_POSITIVE"] = "موسبٱتٱ"; +Blockly.Msg["MATH_IS_PRIME"] = "ڤٱ ٱڤلٱ"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "همٱشٱ"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "یاٛ شمارٱ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "مؽنجاگٱ نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بؽشترونٱ د نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "مؽنجا نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "کٱمترونٱ د نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "بؽشری د نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جٱم کردن نومگٱ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گرد کردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ڤ هار گرد کردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ڤ رۉ گرد کردن"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "تموم ۉ کمال"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "چارسوک ریشٱ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "آلشتگر تازٱ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نوم آلشتگر تازٱ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "نوع آلشتگر تازٱ"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ڤا:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ڤا:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "دۏرس کردن%1"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "یاٛ کار ٱنجوم باٛئؽت"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "سی"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ڤرگٱردنیئن"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نوم دادٱ:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "دادٱیا"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "د نۊ ٱنجوم داٛئن"; +Blockly.Msg["REMOVE_COMMENT"] = "هٱزف نٱزٱر"; +Blockly.Msg["RENAME_VARIABLE"] = "د نۊ نوم نؽاین آلشتگر..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "د نو نوم نؽاین %1 د تموم آلشتگریا د:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "سی ڤاج کوچک"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "سی هٱرف گٱپ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "پاٛڤٱسن"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "سی ڤاج# تا آخر"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "سی ڤاج#"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "سی آخری ڤاج"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "د مٱتن"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "د مٱتن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 هالٛیٱ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "دۏرس کردن مٱتن ڤا"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "اؽمرۊ"; +Blockly.Msg["UNDO"] = "ٱنجوم نٱداٛئن"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "قلٱم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "میزوکاری %1 سی %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/lt.js b/blockly/msg/lt.js new file mode 100644 index 00000000000..506d764c2c1 --- /dev/null +++ b/blockly/msg/lt.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Palikti komentarą"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Negalima ištrinti kintamojo '%1', nes jis yra dalis funkcijos '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Keisti reikšmę:"; +Blockly.Msg["CLEAN_UP"] = "Išvalyti blokus"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Suskleisti blokus"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Suskleisti bloką"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1 spalva"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2 spalva"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "santykis"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "sumaišyk"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sumaišo dvi spalvas su pateiktu santykiu (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lt.wikipedia.org/wiki/Spalva"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Pasirinkti spalvą iš paletės."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "atsitiktinė spalva"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Pasirinkti spalvą atsitiktinai."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "mėlyna"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "žalia"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "raudona"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "spalva su"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Spalvą galima sudaryti iš raudonos, žalios ir mėlynos dedamųjų. Kiekvienos intensyvumas nuo 0 iki 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "nutraukti kartojimą"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "šį kartą praleisti likusius veiksmus ir tęsti kartojimą"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Nutraukia (artimiausią) vykstantį kartojimą."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Praleidžia žemiau išvardintus kartojimo veiksmus (ir tęsia darbą nuo kartojimo pradinio veiksmo)."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atsargiai: šis blokas gali būt naudojamas tik kartojimo bloko viduje."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "kartok su kiekvienu %1 iš sąrašo %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Kartok veiksmus, kol kintamasis \"%1\" paeiliui gauna kiekvieną sąrašo reikšmę."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "kartok, kai %1 kinta nuo %2 iki %3 po %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Imama kintamoji '%1' reikšmė nuo pradinio skaičiaus iki pabaigos skaičiaus, skaičiuojant nustatytais intervalais ir atliekant nustatytus blokus."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Pridėti sąlygą „jei“ blokui."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Pridėti veiksmų vykdymo variantą/\"šaką\", kai netenkinama nė viena sąlyga."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Galite pridėt/pašalinti/pertvarkyti sąlygų \"šakas\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "kitu atveju"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "arba jei"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jei"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jeigu sąlyga tenkinama, tai atlik veiksmus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jei sąlyga tenkinama, atlikti jai priklausančius veiksmus, o jei ne -- atlikti kitus nurodytus veiksmus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus. Kitais atvejais -- atlikti paskutinio bloko veiksmus."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "daryti"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "pakartokite %1 kartus"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Leidžia atlikti išvardintus veiksmus kelis kartus."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "kartok, kol pasieksi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "kartok kol"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Kartoja veiksmus, kol bus pasiekta nurodyta sąlyga."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Kartoja veiksmus, kol sąlyga tenkinama."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ištrinti visus %1 blokus?"; +Blockly.Msg["DELETE_BLOCK"] = "Ištrinti bloką"; +Blockly.Msg["DELETE_VARIABLE"] = "Ištrinti „%1“ kintamąjį"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ištrinti %1 '%2' panaudojimus?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Ištrinti %1 blokus"; +Blockly.Msg["DIALOG_CANCEL"] = "Atšaukti"; +Blockly.Msg["DIALOG_OK"] = "Gerai"; +Blockly.Msg["DISABLE_BLOCK"] = "Išjungti bloką"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopijuoti"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dubliuoti Komentarą"; +Blockly.Msg["ENABLE_BLOCK"] = "Įjungti bloką"; +Blockly.Msg["EXPAND_ALL"] = "Išskleisti blokus"; +Blockly.Msg["EXPAND_BLOCK"] = "Išskleisti bloką"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Išdėstyti stulpeliu, kai daug parametrų"; +Blockly.Msg["HELP"] = "Pagalba"; +Blockly.Msg["INLINE_INPUTS"] = "Išdėstyti vienoje eilutėje"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tuščias sąrašas"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Grąžina sąrašą, ilgio 0, neturintį duomenų"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "sąrašas"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "sukurti sąrašą su"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Pridėti elementą į sąrašą."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Sukurti sąrašą iš bet kokio skaičiaus elementų."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pirmas"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# nuo galo"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "paimk"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "paimk ir ištrink"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "paskutinis"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "atsitiktinis"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "pašalinti"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Grąžina pirmąjį sąrašo elementą."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Gražina objektą į nurodyta poziciją sąraše."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Grąžina paskutinį elementą iš sąrašo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Grąžina atsitiktinį elementą iš sąrašo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Pašalina pirmą objektą sąraše."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Pašalina objektą iš nurodytos vietos sąraše."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Pašalina paskutinį objektą sąraše."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Pašalina atsitiktinį objektą sąraše."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "iki # nuo galo"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "iki #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "iki galo"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "sąrašo dalis nuo pradžios"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "sąrašo dalis nuo # nuo galo"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "sąrašo dalis nuo #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Sukuria nurodytos sąrašo dalies kopiją."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 yra paskutinis objektas."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 yra pirmasis objektas."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "rask pirmą reikšmę"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "rask paskutinę reikšmę"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Grąžina pirmos/paskutinės reikšmės eilės nr. sąraše. Grąžina %1, jei reikšmės neranda."; +Blockly.Msg["LISTS_INLIST"] = "sąraše"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 yra tuščias"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Grąžina „true“, jeigu sąrašas tuščias."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "ilgis %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Grąžina sąrašo ilgį."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "sukurk sąrašą, kuriame %1 bus %2 kartus"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kaip"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "įterpk į vietą"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "priskirk elementui"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Įterpia objektą į sąrašo pradžią."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Įterpią objektą į nurodytą poziciją sąraše."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Įterpia objektą į atsitiktinę sąrašo vietą."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "didėjančia tvarka"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "mažėjančia tvarka"; +Blockly.Msg["LISTS_SORT_TITLE"] = "rūšiuoti %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Rūšiuoti sąrašo kopiją."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecėlės, ignoruoti raidžių dydį"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "skaitmeninis"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abėcėlės"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "su dalikliu"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "klaidinga"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Reikšmė gali būti \"teisinga\"/\"Taip\" arba \"klaidinga\"/\"Ne\"."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tiesa"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Tenkinama, jei abu reiškiniai lygūs."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Grįžti tiesa, jei pirmoji įvestis didesnė nei antroji įvestis."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Grįžti tiesa, jei pirma įvestis didesnė arba lygi antrajai įvesčiai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Grįžti tiesa, jei pirma įvestis mažesnė nei antra įvestis."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Grįžti tiesa, jei pirma įvestis mažesnė arba lygi antrajai įvesčiai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Grįžti tiesa, jeigu abi įvestys ne lygios tarpusavyje."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Grįžti tiesa, jei įvestis klaidinga. Grįžti klaidinga, jei įvestis teisinga."; +Blockly.Msg["LOGIC_NULL"] = "nieko"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Reikšmė nebuvo nurodyta..."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ir"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "arba"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Bus teisinga, kai abi sąlygos bus tenkinamos."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Grįžti tiesa, jei bent viena įvestis teisinga."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "sąlyga"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jei ne"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jei taip"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Jeigu sąlygą tenkinama, grąžina pirmą reikšmę, o jei ne - antrąją."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Grąžina dviejų skaičių sumą."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Grąžina dviejų skaičių dalmenį."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Grąžina dviejų skaičių skirtumą."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Grąžina dviejų skaičių sandaugą."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Grąžina pirmą skaičių pakeltą laipsniu pagal antrą skaičių."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "padidink %1 (emptypage) %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Prideda skaičių prie kintamojo '%1'. Kai skaičius neigiamas - gaunasi atimtis."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Grįžti viena iš pagrindinių konstantų: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (begalybė)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "apribok %1 tarp %2 ir %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Apriboti skaičių, kad būtų tarp nustatytų ribų (imtinai)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "yra dalus iš"; +Blockly.Msg["MATH_IS_EVEN"] = "yra lyginis"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "yra neigiamas"; +Blockly.Msg["MATH_IS_ODD"] = "yra nelyginis"; +Blockly.Msg["MATH_IS_POSITIVE"] = "yra teigiamas"; +Blockly.Msg["MATH_IS_PRIME"] = "yra pirminis"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Patikrina skaičiaus savybę: (ne)lyginis/pirminis/sveikasis/teigiamas/neigiamas/dalus iš x."; +Blockly.Msg["MATH_IS_WHOLE"] = "yra sveikasis"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "dalybos liekana %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Grįžti likučiu nuo dviejų skaičių dalybos."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://lt.wikipedia.org/wiki/Skaičius"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Skaičius."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "vidurkis"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "didžiausia reikšmė sąraše"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana sąrašui"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mažiausia reikšmė sąraše"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "statistinė moda sąrašui"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "atsitiktinis elementas iš sąrašo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standartinis nuokrypis sąraše"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Grįžti vidurkiu (aritmetinis vidurkis) iš skaitinių reikšmių sąraše."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Grįžti didžiausiu skaičiumi sąraše."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Grąžinti sąrašo medianą."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Grįžti mažiausiu skaičiumi sąraše."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Grąžinti sąrašą dažniausių elementų sąraše."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Grąžinti atsitiktinį elementą iš sąrašo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Grįžti standartine pakraipa iš sąrašo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "didžiausia reikšmė"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "atsitiktinė trupmena"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Atsitiktinė trupmena nuo 0 (imtinai) iki 1 (neimtinai)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "atsitiktinis sveikas sk. nuo %1 iki %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Grįžti atsitiktinį sveikąjį skaičių tarp dviejų nustatytų ribų, imtinai."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://lt.wikipedia.org/wiki/Apvalinimas"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "apvalink"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "apvalink žemyn"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "apvalink aukštyn"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Suapvalinti skaičių į žemesnę ar aukštesnę reikšmę."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "modulis"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratinė šaknis"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Skaičiaus modulis - reikšmė be ženklo (panaikina minusą)."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Grąžinti skaičių laipsniu e."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Grąžinti skaičiaus natūrinį logaritmą."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Grįžti 10 pagrindinių logaritmų iš skaičiaus."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Grąžina skaičiui priešingą skaičių."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Grąžinti skaičių laipsniu 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Grįžti kvadratinę šaknį iš skaičiaus."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://lt.wikipedia.org/wiki/Trigonometrinės_funkcijos"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Grąžinti skaičiaus arkkosinusą."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Grąžinti skaičiaus arksinusą."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Grąžinti skaičiaus arktangentą."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Grąžinti laipsnio kosinusą (ne radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Grąžinti laipsnio sinusą (ne radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Grąžinti laipsnio tangentą (ne radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Sukurti spalvos kintamąjį..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Sukurti skaičiaus kintamąjį..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Sukurti kintamąjį"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Naujo kintamojo pavadinimas:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Naujas kintamojo tipas:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "leisti vidinius veiksmus"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "pagal:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Vykdyti sukurtą komandą \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Įvykdyti komandą \"%1\" ir naudoti jos suskaičiuotą (atiduotą) reikšmę."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "su:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Sukurti \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Apibūdinkite šią funkciją..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "daryk kažką"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "komanda:"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Sukuria procedūrą - komandą, kuri nepateikia jokio rezultato (tik atlieka veiksmus)."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "duok"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Sukuria funkciją - komandą, kuri ne tik atlieka veiksmus bet ir pateikia (grąžina/duoda) rezultatą."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ši komanda turi du vienodus gaunamų duomenų pavadinimus."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jeigu pirma reikšmė yra teisinga (sąlyga tenkinama), grąžina antrą reikšmę."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Perspėjimas: šis blokas gali būti naudojamas tik aprašant funkciją."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "parametro pavadinimas:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Pridėti funkcijos parametrą (gaunamų duomenų pavadinimą)."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "gaunami duomenys (parametrai)"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tvarkyti komandos gaunamus duomenis (parametrus)."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Atkurti"; +Blockly.Msg["REMOVE_COMMENT"] = "Pašalinti komentarą"; +Blockly.Msg["RENAME_VARIABLE"] = "Pervardyti kintamajį..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Pervadinti visus '%1' kintamuosius į:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "prie %1 pridėk tekstą %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Pridėti tekstą prie kintamojo '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = " mažosiom raidėm"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = " Pavadinimo Raidėmis"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = " DIDŽIOSIOM RAIDĖM"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Kitu atvėju, grąžina teksto kopiją."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "gauti pirmą raidę"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "raidė nuo galo #"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "gauti raidę #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "gauti paskutinę raidę"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "gauti atsitiktinę raidę"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Grąžina raidę į tam tikrą poziciją."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "skaičius %1 iš %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Suskaičiuoti, kiek kartų šis tekstas kartojasi kitame tekste."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Pridėti teksto elementą."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sujunk"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "iki raidės nuo galo #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "iki raidės #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "iki pabaigos"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "tekste"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "dalis nuo pradžios"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "dalis nuo raidės #"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "dalis nuo raidės #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Grąžina tam tikrą teksto dalį."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "rask,kur pirmą kartą paminėta"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "rask,kur paskutinį kartą paminėta"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekste %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Grąžina pirmą/paskutinę pirmo teksto reikšmę antrame tekste. Grąžina %1, jei tekstas nerastas."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 yra tuščias"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Grįžti tiesa, jei numatytas tekstas tuščias."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "sukurti tekstą su"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Sukurti teksto fragmentą sujungiant bet kokį skaičių fragmentų."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "teksto %1 ilgis"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Suranda teksto simbolių kiekį (įskaitant ir tarpus)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "spausdinti %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Spausdinti nurodytą tekstą, skaičių ar kitą reikšmę."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prašyti vartotoją įvesti skaičių."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prašyti vartotoją įvesti tekstą."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "paprašyk įvesti skaičių :"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "paprašyk įvesti tekstą :"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "pakeisti %1 į %2 šiame %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Pašalinti visas teksto dalis kitame tekste."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "atbulai %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Apversti teksto simbolių tvarką."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Tekstas (arba žodis, ar raidė)"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "išvalyk tarpus šonuose"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "išvalyk tarpus pradžioje"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "išvalyk tarpus pabaigoje"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Grąžina teksto kopiją, pašalinus tarpus iš vieno ar abiejų kraštų."; +Blockly.Msg["TODAY"] = "Šiandien"; +Blockly.Msg["UNDO"] = "Anuliuoti"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elementas"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Sukurk \"priskirk %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "priskirk %1 = %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Sukurti 'kintamasis %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Kintamasis, pavadinimu '%1', jau egzistuoja."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Kintamasis, pavadinimu '%1', jau egzistuoja kaip kitas tipas: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Kažką pasakykite..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/lv.js b/blockly/msg/lv.js new file mode 100644 index 00000000000..ca7940946b1 --- /dev/null +++ b/blockly/msg/lv.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Pievienot komentāru"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nevar izdzēst mainīgo '%1', jo tā ir daļa no funkcijas '%2' definīcijas."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Mainīt vērtību:"; +Blockly.Msg["CLEAN_UP"] = "Sakopt blokus"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Sakļautie bloki satur brīdinājumus."; +Blockly.Msg["COLLAPSE_ALL"] = "Sakļaut blokus"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Sakļaut bloku"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1. krāsa"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2. krāsa"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "attiecība"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "sajaukt"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sajauc kopā divas krāsas ar doto attiecību (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lv.wikipedia.org/wiki/Krāsa"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izvēlēties krāsu no paletes."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "nejauša krāsa"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Izvēlēties krāsu pēc nejaušības principa."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "zila"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zaļa"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "sarkana"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "veido krāsu no"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Izveidot krāsu ar norādīto daudzumu sarkanā, zaļā un zilā toņu. Visas vērtības ir starp 0 un 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "iet ārā no cikla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "turpināt ar cikla nākamo iterāciju"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Iet ārā no iekļaujošā cikla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Nepildīt atlikušo cikla daļu bet sākt nākamo iterāciju."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Brīdinājums: šo bloku drīkst izmantot tikai cikla iekšienē."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "visiem %1 no saraksta %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Katram objektam no saraksta piešķirt mainīgajam '%1' šo objektu un izpildīt komandas."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "skaitīt %1 no %2 līdz %3 ar soli %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ļauj mainīgajam '%1' pieņemt vērtības no sākuma līdz beigu vērtībai, un izpildīt iekļautos blokus katrai no šīm pieņemtajām vērtībām."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Pievienot nosacījumu \"ja\" blokam."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Pievienot gala nosacījumu \"ja\" blokam."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Pievienot, noņemt vai mainīt sekciju secību šim \"ja\" blokam."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "citādi"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "citādi, ja"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ja"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ja vērtība ir patiesa, tad izpildīt komandas."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ja vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi izpildīt otro bloku ar komandām."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām. Ja neviena no vertībām nav patiesa, tad izpildīt pēdējo bloku ar komandām."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://lv.wikipedia.org/wiki/Cikls"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izpildi"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "atkārtot %1 reizes"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Izpildīt komandas vairākas reizes."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "atkārtot līdz"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "atkārtot kamēr"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Izpildīt komandas, kamēr vērtība ir nepatiesa."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Izpildīt komandas, kamēr vērtība ir patiesa."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Izdzēst visus %1 blokus?"; +Blockly.Msg["DELETE_BLOCK"] = "Izmest bloku"; +Blockly.Msg["DELETE_VARIABLE"] = "Izdzēst mainīgo \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Mainīgais \"%2\" tiek izmantots %1 vietās. Dzēst?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Izmest %1 blokus"; +Blockly.Msg["DIALOG_CANCEL"] = "Atcelt"; +Blockly.Msg["DIALOG_OK"] = "Labi"; +Blockly.Msg["DISABLE_BLOCK"] = "Atspējot bloku"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dublēt"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Izveidot komentāra duplikātu"; +Blockly.Msg["ENABLE_BLOCK"] = "Iespējot bloku"; +Blockly.Msg["EXPAND_ALL"] = "Izvērst blokus"; +Blockly.Msg["EXPAND_BLOCK"] = "Izvērst bloku"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ārējie ievaddati"; +Blockly.Msg["HELP"] = "Palīdzība"; +Blockly.Msg["INLINE_INPUTS"] = "Iekšējie ievaddati"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "izveidot tukšu sarakstu"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Izveidot sarakstu bez elementiem tajā."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "saraksts"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Pievienot, noņemt vai mainīt sekciju secību šim \"saraksta\" blokam."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "izveidot sarakstu no"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Pievienot objektu sarakstam."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Izveidot sarakstu no jebkura skaita vienību."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pirmo"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "no beigām numur"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "paņemt"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "paņemt uz dzēst"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "pēdējo"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "nejauši izvēlētu"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "dzēst"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Atgriež pirmo saraksta elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Atgriež norādīto elementu no saraksta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Atgriež pēdējo saraksta elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Atgriež nejauši izvēlētu saraksta elementu"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Atgriež un izdzēš saraksta pirmo elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Atgriež un izdzēš no saraksta norādīto elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Atgriež un izdzēš saraksta pēdējo elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Atgriež un izdzēš no saraksta nejauši izvēlētu elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Izdēš pirmo saraksta elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Izdēš norādīto elementu no saraksta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Izdēš pēdējo saraksta elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Izdzēš no saraksta nejauši izvēlētu elementu."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "līdz pozīcijai no beigām"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "līdz pozīcijai"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "līdz beigām"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "paņemt apakšsarakstu no sākuma"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "paņemt apakšsarakstu no beigām no pozīcijas"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "paņemt apakšsarakstu no pozīcijas"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Nokopēt daļu no dotā saraksta."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Saraksta elementu numerācija no beigām sākas no %1"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Saraksta elementu numerācija sākas no %1"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "atrast pirmo elementu, kas vienāds ar"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "atrast pēdējo elementu, kas vienāds ar"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Atgriež pozīciju sarakstā, kurā atrodas dotais objekts. Atgriež %1 ja objekts neatrodas sarakstā."; +Blockly.Msg["LISTS_INLIST"] = "sarakstā"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ir tukšs"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Patiess, ja saraksts ir tukšs."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 garums"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Atgriež elementu skaitu srakstā."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "saraksts no %1 atkārtots %2 reizes"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Izveido sarakstu, kas sastāv no dotās vērtības noteiktu reižu skaita."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "apgriezt otrādi %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Apgriezt otrādi saraksta kopiju"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kā"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ievieto"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "aizvieto"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ievieto elementu saraksta sākumā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ievieto sarakstā elementu norādītajā pozīcijā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Pievieno elementu saraksta beigās."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ievieto sarakstā jaunu elementu nejauši izvēlētā pozīcijā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Aizvieto elementu saraksta sākumā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Aizvieto sarakstā elementu norādītajā pozīcijā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Aizvieto elementu saraksta beigās."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Aizvieto sarakstā elementu nejauši izvēlētā pozīcijā."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "augošā"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "dilstošā"; +Blockly.Msg["LISTS_SORT_TITLE"] = "Sakārtot sarakstu no %3 elementiem %2 secībā %1"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Saraksta sakārtota kopija."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "pēc alfabēta, ignorēt mazos/lielos burtus"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "skaitliski"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "pēc alfabēta"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "vārdu saraksts no teksta"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "izveidot tekstu no saraksta"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Apvienot tekstu izmantojot atdalītāju."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Sadalīt tekstu vārdos izmantojot atdalītāju."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ar atdalītāju"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "aplams"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Atgriež rezultātu \"patiess\" vai \"aplams\"."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "patiess"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Patiess, ja abas puses ir vienādas."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Patiess, ja kreisā puse ir lielāka par labo pusi."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Patiess, ja kreisā puse ir lielāka vai vienāda ar labo pusi."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Patiess, ja kreisā puse ir mazāka par labo pusi."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Patiess, ja kreisā puse ir mazāka vai vienāda ar labo pusi."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Patiess, ja abas puses nav vienādas."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Patiess, ja arguments ir aplams."; +Blockly.Msg["LOGIC_NULL"] = "nekas"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Atgriež neko."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "un"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "vai"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Patiess, ja abas puses ir patiesas."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Patiess, ja vismaz viena puse ir patiesa."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "nosacījums"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ja aplams"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ja patiess"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Pārbaudīt nosacījumu. Ja 'nosacījums' ir patiess, atgriež vērtību 'ja patiess', pretējā gadījumā vērtību 'ja aplams'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Atgriež divu skaitļu summu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Atgriež divu skaitļu dalījumu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Atgriež divu skaitļu starpību."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Atgriež divu skaitļu reizinājumu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Atgriež pirmo skaitli kāpinātu pakāpē otrais skaitlis."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "ATAN2 no X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Atgriezt arktangensu punktam (X, Y) grādos no -180 līdz 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "izmainīt %1 par %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Pieskaitīt doto skaitli mainīgajam '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Atgriež kādu no matemātikas konstantēm: π (3.141…), e (2.718…), φ (1.618…), √(2) (1.414…), √(½) (0.707…), ∞ (bezgalība)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ierobežot %1 no %2 līdz %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ierobežo skaitli no noteiktajās robežās (ieskaitot galapunktus)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "dalās bez atlikuma ar"; +Blockly.Msg["MATH_IS_EVEN"] = "ir pāra"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ir negatīvs"; +Blockly.Msg["MATH_IS_ODD"] = "ir nepāra"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ir pozitīvs"; +Blockly.Msg["MATH_IS_PRIME"] = "ir pirmskaitlis"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Pārbauda, vai skaitlis ir pāra, nepāra, vesels, pozitīvs, negatīvs vai dalās ar noteiktu skaitli. Atgriež \"patiess\" vai \"aplams\"."; +Blockly.Msg["MATH_IS_WHOLE"] = "ir vesels"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "atlikums no %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Atlikums no divu skaitļu dalījuma."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://lv.wikipedia.org/wiki/Skaitlis"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Skaitlis."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "vidējais"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "lielākais"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediāna"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mazākais"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "nejaušs"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standartnovirze"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Atgriež dotā saraksta vidējo aritmētisko vērtību."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Atgriež lielāko vērtību no saraksta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Atgriež dotā saraksta mediānas vērtību."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Atgriež mazāko vērtību no saraksta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Atgriež dotā saraksta biežāk sastopamās vērtības (modas)."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Atgriež nejauši izvēlētu vērtību no dotā saraksta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Atgriež dotā saraksta standartnovirzi."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Saskaitīt visus skaitļus no dotā saraksta."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "nejaušs skaitlis [0..1)"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Atgriež nejaušu reālo skaitli robežās no 0 (iekļaujot) līdz 1 (neiekļaujot)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "nejaušs vesels skaitlis no %1 līdz %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Atgriež nejaušu veselu skaitli dotajās robežās (iekļaujot galapunktus)"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "noapaļot"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "apaļot uz leju"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "apaļot uz augšu"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Noapaļot skaitli uz augšu vai uz leju."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolūtā vērtība"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadrātsakne"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Atgriež skaitļa absolūto vērtību."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Atgriež e pakāpē dotais skaitlis."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Atgriež skaitļa naturālo logaritmu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Atgriež skaitļa logaritmu pie bāzes 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Atgriež pretējo skaitli."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Atgriež 10 pakāpē dotais skaitlis."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Atgriež skaitļa kvadrātsakni."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Arkkosinuss (grādos)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Arksinuss (grādos)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Arktangenss (grādos)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kosinuss no grādiem (nevis radiāniem)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Sinuss no grādiem (nevis radiāniem)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Tangenss no grādiem (nevis radiāniem)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Izveidot krāsas mainīgo..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Izveidot skaitļa mainīgo..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Izveidot virknes mainīgo..."; +Blockly.Msg["NEW_VARIABLE"] = "Izveidot mainīgo..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Jaunā mainīgā vārds:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Jauns mainīgā tips:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "atļaut apakškomandas"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ar:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Izpildīt iepriekš definētu funkcju '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Izpildīt iepriekš definētu funkcju '%1' un izmantot tās rezultātu."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ar:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Izveidot '%1' izsaukumu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Funkcijas apraksts..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "darīt kaut ko"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "funkcija"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Izveido funkciju, kas neatgriež rezultātu."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "atgriezt"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Izveido funkciju, kas atgriež rezultātu."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Brīdinājums: funkcijai ir vienādi argumenti."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Izcelt funkcijas definīciju"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ja pirmā vērtība ir \"patiesa\", tad atgriezt otro vērtību."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Brīdinājums: Šo bloku var izmantot tikai funkcijas definīcijā."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "arguments:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Pievienot funkcijai argumentu."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "argumenti"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Pievienot, pārkārtot vai dzēst funkcijas argumentus."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Atcelt atsaukšanu"; +Blockly.Msg["REMOVE_COMMENT"] = "Noņemt komentāru"; +Blockly.Msg["RENAME_VARIABLE"] = "Pārdēvēt mainīgo..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Pārdēvējiet visus '%1' mainīgos:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "tekstam %1 pievienot tekstu %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Pievienot tekstu mainīgajam '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "kā mazie burti"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "kā Nosaukuma Burti"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "kā LIELIE BURTI"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Atgriež teksta kopiju ar mainītiem lielajiem/mazajiem burtiem."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "paņemt pirmo burtu"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "paņemt no beigām burtu #"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "paņemt burtu #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "paņemt pēdējo burtu"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "paņemt nejaušu burtu"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "tekstā %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Atgriež burtu dotajā pozīcijā."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "skaitīt %1 iekš %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Saskaitīt, cik reizes kāds teksts atrodas iekš kāda cita teksta."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Pievienot tekstam objektu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "savienot"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Pievienot, noņemt vai mainīt sekciju secību šim \"teksta\" blokam."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "līdz burtam nr (no beigām)"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "līdz burtam nr"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "līdz pēdējam burtam"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no teksta"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "paņemt apakšvirkni no sākuma"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "paņemt apakšvirkni no beigām sākot ar burta nr"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "paņemt apakšvirkni sākot no burta nr"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Atgriež norādīto teksta daļu."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "meklēt pirmo vietu, kur sākas teksts"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "meklēt pēdējo vietu, kur sākas teksts"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekstā %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Meklē pirmā teksta rindu otrajā tekstā. Atgriež pozīciju otrajā tekstā, kurā sākas pirmais teksts. Atgriež %1 ja pirmā teksta rinda nav atrasta."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ir tukšs"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Patiess, ja teksts ir tukšs."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "veidot tekstu no"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Izveidot tekstu savienojot dotos argumentus."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "garums tekstam %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Atgriež burtu skaitu (ieskaitot atstarpes) dotajā tekstā."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "parādīt %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Parādīt norādīto tekstu vai skaitli."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Palūgt lietotāju ievadīt skaitli."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Palūgt lietotāju ievadīt tekstu."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "palūgt ievadīt skaitli ar ziņu"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "palūgt ievadīt tekstu ar ziņu"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "apmainīt %1 ar %2 iekš %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Apmainīt kāda teksta fragmentus citā tekstā."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "apgriezt otrādi %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Apgriež otrādi teksta rakstzīmju kārtu."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Burts, vārds vai jebkāda teksta rinda."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "Dzēst atstarpes no abām pusēm"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "Dzēst atstarpes no sākuma"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "Dzēst atstarpes no beigām"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Atgriež teksta kopiju ar noņemtām atstarpēm vienā vai otrā galā."; +Blockly.Msg["TODAY"] = "Šodiena"; +Blockly.Msg["UNDO"] = "Atsaukt"; +Blockly.Msg["UNNAMED_KEY"] = "nenosaukts"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "vienums"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Izveidot piešķiršanu mainīgajam %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Atgriež mainīgā vērtību."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "piešķirt mainīgajam %1 vērtību %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Izveidot 'ņem %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Piešķirt mainīgajam vērtību."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Mainīgais '%1' jau eksistē."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Mainīgais ar nosaukumu '%1' jau pastāv citam tipam: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Darbavieta"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Saki kaut ko..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/mg.js b/blockly/msg/mg.js new file mode 100644 index 00000000000..a149d5d1508 --- /dev/null +++ b/blockly/msg/mg.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Hanampy resaka"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Hanova sanda:"; +Blockly.Msg["CLEAN_UP"] = "Hanadio bilaoky"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "loko 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "loko 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "taha"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "afangaro"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "loko kisendra"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "manga"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "maitso"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "mena"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "raha tsy izany raha"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "raha tsy izany"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "raha"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "atao"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hamafa ny bilaoky %1 rehetra ?"; +Blockly.Msg["DELETE_BLOCK"] = "Hamafa bilaoky"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Hamafa bilaoky %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Aoka ihany"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Hanajanona ny bilaoky"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Tahahana"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Handefa ny bilaoky"; +Blockly.Msg["EXPAND_ALL"] = "Hanitatra bilaoky"; +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "Iditra ivelany"; +Blockly.Msg["HELP"] = "Fanoroana"; +Blockly.Msg["INLINE_INPUTS"] = "Iditra an'andalana"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "diso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "marina"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "tsy %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "foana"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Mamerina sanda foana"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "sady"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "na"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "andrana"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "raha diso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "raha marina"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Laharana."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "lehibe indrindra amin'ny lisitra"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "kely indrindra amin'ny lisitra"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "tambatry ny lisitra"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "boriboriana"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "boriboriana amin'ny sanda ambany"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "boriboriana amin'ny sanda ambony"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Averina atao"; +Blockly.Msg["REMOVE_COMMENT"] = "Hanala resaka"; +Blockly.Msg["RENAME_VARIABLE"] = "Hanova anarana ny ova..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Androany"; +Blockly.Msg["UNDO"] = "Esorina"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Zavatra"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/mk.js b/blockly/msg/mk.js new file mode 100644 index 00000000000..3973e8d3185 --- /dev/null +++ b/blockly/msg/mk.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Додај коментар:"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Променливата '%1' не може се избрише бидејќи е дел од определението на функцијата '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Смена на вредност:"; +Blockly.Msg["CLEAN_UP"] = "Исчисти блокови"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Собери блокови"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Собери блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "боја 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "боја 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "сооднос"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "смешај"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Меша две бои во даден сооднос (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://mk.wikipedia.org/wiki/Боја"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Изберете боја од палетата."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случајна боја"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Избери боја на тепка."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "сина"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелена"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "црвена"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "боја со"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Создајте боја со укажаните износи на црвена, зелена и сина. Сите вредности мора да бидат помеѓу 0 и 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "излези од јамката"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "продолжи со следното повторување на јамката"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Излези од содржечката јамка."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "за секој елемент %1 на списокот %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Му ја задава променливата „%1“ на секој елемент на списокот, а потоа исполнува наредби."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "број со %1 од %2 до %3 со %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Променливата „%1“ да ги земе вредностите од почетниот до завршниот број, броејќи според укажаниот интервал и ги исполнува укажаните блокови."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Додај услов кон „ако“ блокот."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Додава, отстранува или прередува делови за прераспоредување на овој блок „ако“."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "инаку"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "инаку ако"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ако"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ако вредноста е вистинита, исполни некои наредби."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://mk.wikipedia.org/wiki/For-јамка"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "исполни"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "повтори %1 пати"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Исполнува наредби неколку пати."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повторувај сè до"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повторувај додека"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Додека вредноста е невистинита, исполнува наредби."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Додека вредноста е вистинита, исполнува наредби."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Да ги избришам сите %1 блокчиња?"; +Blockly.Msg["DELETE_BLOCK"] = "Избриши блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Избриши ја променливата \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Избриши %1 блока"; +Blockly.Msg["DIALOG_CANCEL"] = "Откажи"; +Blockly.Msg["DIALOG_OK"] = "ОК"; +Blockly.Msg["DISABLE_BLOCK"] = "Исклучи блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Ископирај"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дуплирај коментар"; +Blockly.Msg["ENABLE_BLOCK"] = "Вклучи блок"; +Blockly.Msg["EXPAND_ALL"] = "Рашири блокови"; +Blockly.Msg["EXPAND_BLOCK"] = "Рашири го блокови"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Надворешен внос"; +Blockly.Msg["HELP"] = "Помош"; +Blockly.Msg["INLINE_INPUTS"] = "Внатрешен внос"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "создај празен список"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "список"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „список“."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "создај список со"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Додај ставка кон списокот."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "прв"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# од крајот"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последен"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "случаен"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "отстрани"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "во списокот"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 е празен"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "должина на %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "како"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вметни на"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "задај"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "подреди %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "невистина"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Дава или вистина или невистина."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "вистина"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://mk.wikipedia.org/wiki/Неравенство"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Дава вистина ако обата вноса се еднакви."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Дава вистина ако првиот внос е поголем од вториот."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Дава вистина ако првиот внос е поголем или еднаков на вториот."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Дава вистина ако првиот внос е помал од вториот."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Дава вистина ако првиот внос е помал или еднаков на вториот."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Дава вистина ако обата вноса не се еднакви."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Дава вистина ако вносот е невистинит. Дава невистина ако вносот е вистинит."; +Blockly.Msg["LOGIC_NULL"] = "ништо"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Дава ништо."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Дава вистина ако обата вноса се вистинити."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Дава вистина ако барем еден од вносовите е вистинит."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "испробај"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ако е невистинито"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ако е вистинито"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://mk.wikipedia.org/wiki/Аритметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter?uselang=mk"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "повиши %1 за %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ѝ додава број на променливата „%1“."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://mk.wikipedia.org/wiki/Математичка_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Дава една од вообичаените константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконечност)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "е делив со"; +Blockly.Msg["MATH_IS_EVEN"] = "е парен"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "е негативен"; +Blockly.Msg["MATH_IS_ODD"] = "е непарен"; +Blockly.Msg["MATH_IS_POSITIVE"] = "е позитивен"; +Blockly.Msg["MATH_IS_PRIME"] = "е прост"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверува дали бројот е парен, непарен, прост, цел, позитивен, негативен или делив со некој број. Дава вистина или невистина."; +Blockly.Msg["MATH_IS_WHOLE"] = "е цел"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://mk.wikipedia.org/wiki/Број"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Број."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "просек на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "најголем на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медијана на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "најмал на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "модул на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случајна ставка од списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "збир од списокот"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Дава просек (аритметичка средина) од броевите на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Го дава најголемиот број на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Дава медијана од броевите на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Го дава најмалиот број на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Дава список на најзастапен(и) елемент(и) на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Дава збир од сите броеви на списокот."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://mk.wikipedia.org/wiki/Заокружување"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "заокружи"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "заокружи на помало"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "заокружи на поголемо"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Го заокружува бројот на поголем или помал."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "апсолутна"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "корен квадратен"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ја дава апсолутната вредност на број."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Дава корен квадратен од број."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://mk.wikipediа.org/wiki/Тригонометриски_функции"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Создај променлива на низа..."; +Blockly.Msg["NEW_VARIABLE"] = "Создај променлива..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Назив на новата променлива:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Тип на новата променлива:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дозволи тврдења"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "со:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://mk.wikipedia.org/wiki/Потпрограма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "со:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Создај го '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишете ја оваа функција..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "направиш"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "за да"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "назад"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Додај, отстрани или пренареди ги влезните параметри за оваа функција."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Повтори"; +Blockly.Msg["REMOVE_COMMENT"] = "Отстрани коментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Преименувај променлива..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Преименувај ги сите променливи „%1“ во:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "во текст %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "пресметка на %1 во %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Додај ставка кон текстот."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "поврзи"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „текст“."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "во текстот"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "во текст %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 е празен"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "создај текст со"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "должина на %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замени го %1 со %2 во %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Денес"; +Blockly.Msg["UNDO"] = "Откажи"; +Blockly.Msg["UNNAMED_KEY"] = "без име"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "елемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Создај „задавање на %1“"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "задај %1 на %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Променлива со име '%1' веќе постои."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Променлива со име '%1' веќе постои за друг тип: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Работен простор на Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ml.js b/blockly/msg/ml.js new file mode 100644 index 00000000000..9bd651b65f1 --- /dev/null +++ b/blockly/msg/ml.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "അഭിപ്രായം ചേർക്കുക"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ഒന്നാം നിറം"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "രണ്ടാം നിറം"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "അനുപാതം"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ക്രമരഹിത നിറം"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ക്രമരഹിതമായി ഒരു നിറം തിരഞ്ഞെടുക്കുക."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "നീല"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "പച്ച"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ചുവപ്പ്"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "കുരുക്കിന് പുറത്തുകടക്കുക"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 തവണ ആവർത്തിക്കുക"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ചില വരികൾ കൂടുതൽ തവണ ചെയ്യുക."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "ശരി"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "പകർപ്പ്"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "സഹായം"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "നിറം ചരം സൃഷ്ടിക്കുക..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ക്രമസംഖ്യ ചരം സൃഷ്ടിക്കുക..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "സ്ട്രിങ് ചരം സൃഷ്ടിക്കുക..."; +Blockly.Msg["NEW_VARIABLE"] = "ചരം സൃഷ്ടിക്കുക..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "പുതിയ ചരത്തിന്റെ പേര്:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "വീണ്ടും ചെയ്യുക"; +Blockly.Msg["REMOVE_COMMENT"] = "അഭിപ്രായം ഒഴിവാക്കുക"; +Blockly.Msg["RENAME_VARIABLE"] = "ചരത്തിന്റെ പേര് മാറ്റുക..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ഇന്ന്"; +Blockly.Msg["UNDO"] = "തിരസ്കരിക്കുക"; +Blockly.Msg["UNNAMED_KEY"] = "പേരില്ലാത്തവ"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ഇനം"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "\"%1\" എന്ന പേരിലുള്ള ചരം നിലവിലുണ്ട്."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/mnw.js b/blockly/msg/mnw.js new file mode 100644 index 00000000000..1da8114470f --- /dev/null +++ b/blockly/msg/mnw.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "စုတ် လညာတ်"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "မပြံင်လှာဲ '%1' ဂှ် ဇိုတ်ပလီု ဟွံဂွံ၊ ဟိုတ်နူ ဍေဟ်ဂှ် ဆက်စပ်ဒၟံင် ကုဝှင်ရှေန် '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "သၠာဲ ဍာ်ဒကေဝ်"; +Blockly.Msg["CLEAN_UP"] = "ဖအး ဗလံက်"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ဖဍိုန်ဖ္ဍောတ် ဗလံက်ဂမၠိုင်"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ဖဍိုန်ဖ္ဍောတ် ဗလံက်"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "အသာ် ၁"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "အသာ် ၂"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ဗၞတ်ဗ္ၜတ်"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ပနှဴ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ပနှဴ အသာ် ၜါ နကဵု ဗၞတ်ဗ္ၜတ် (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ရုဲကေတ် အသာ် မွဲ နူကဵု ဖလာတ်"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ဇျောမ်ကေတ် အသာ်"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ရုဲစှ်ကေတ် အသာ် မွဲ ပ္ဍဲ ဇဟောမ်"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "သာ်ဍီု"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "သာ်ၚေက်"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ဗကေတ်"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "နကဵု အသာ်"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ခၞံကၠောန်ကေတ် အသာ်တၟေင် အကြာ ဗကေတ်၊ သာ်ၚေက်၊ သာ်ဍီု၊၊ ဍာ်ဒကေဝ် သီုဖအိုတ် သ္ဒးဒှ် အကြာ ၀ ကဵု ၁၀၀၊၊"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ကၟာတ်ထောအ် loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ဆက်ကၠောန် နကဵု ပရေင်ချဳဒရာင်ဗွဲအပ္ဍဲ loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "သွက်ဇၟာပ် ဒကုတ် %1 ပ္ဍဲ စရင် %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "သွက်ဇၟာပ် ဒကုတ် ပ္ဍဲစရင်မွဲ မစုတ်လဝ် ပရေင်ပြံင်လှာဲ %1 သွက် ဒကုတ်၊ တုဲမ္ဂး ကၠောန်ပ တင်ဂရင်ဗ္တီ၊၊"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "ရိုဟ်လၟိဟ် %1 နူ %2 စဵုကဵု %3 နကဵု %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ကလိဂွံ ပရေင်အပြံင်အလှာဲ '%1'ဏအ် ကေတ် ဍာ်ဒကေဝ် နူကဵု လၟိဟ်ဂၞန်စ စဵုကဵု လၟိဟ်ဂၞန်အိုတ်၊ မရိုဟ်လၟိဟ် နကဵုဗၞတ်ဗ္ၜတ် ဗွဲတၟေင် တုဲ ကၠောန်ပ ဗလံက် ဗွဲတၟေင်၊၊"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ထပ်, ပတိတ်, ဟွံသေၚ် ကလေၚ်ဖျေံလၟေၚ် ရုဲစှ် သွက်ဂွံကလေၚ်ထမံက်ဣဏံ ယဝ်ရကၟာတ်မ္ဂး"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "မုနွံ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ယဝ်နွံမံၚ်ဏီ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ယဝ်ရ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ပ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ထပ်ဂလိုင်ပတိုန် %1 နာဍဳ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ကၠောန်ပတိတ် လလောင်တြး မဂၠိုင် ကုအလန်၊၊"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ထပ်ဂလိုင်ပတိုန် စဵုကဵု"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ထပ်ဂလိုင်ပတိုန် အခိင်"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ဍာ်ဒကေဝ် ဍေဟ် ဗၠေတ်၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ဍာ်ဒကေတ် ဍေဟ် ဒး၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ဇိုတ်ပလီု %1 ဗလံက် သီုဖအိုတ်ဟာ?"; +Blockly.Msg["DELETE_BLOCK"] = "ဇိုတ်ပလီု ဗလံက်"; +Blockly.Msg["DELETE_VARIABLE"] = "ဇိုတ်ပလီု အပြံင်အလှာဲ '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "ဇိုတ်ပလီု %1 တုဲ ရပ်စပ် '%2' နဒဒှ်မပြံင်လှာဲဟာ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "ဇိုတ်ပလီု %1 ဗလံက်ဂမၠိုင်"; +Blockly.Msg["DIALOG_CANCEL"] = "တးပဲါ"; +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ပဟွံသၟဟ်အစောံ ဗလံက်"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ချာဲ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ချာဲ လညာတ်"; +Blockly.Msg["ENABLE_BLOCK"] = "ပသၟဟ်အစောံ ဗလံက်"; +Blockly.Msg["EXPAND_ALL"] = "ဗဇာပတိုန် ဗလံက်ဂမၠိုင်"; +Blockly.Msg["EXPAND_BLOCK"] = "ဗဇာပတိုန် ဗလံက်"; +Blockly.Msg["EXTERNAL_INPUTS"] = "မစုတ် ဗွဲမ္ၚး"; +Blockly.Msg["HELP"] = "ရီု"; +Blockly.Msg["INLINE_INPUTS"] = "မစုတ် ဗွဲအပ္ဍဲ"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ဗၠေတ်"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ကလေၚ် ဍာံလေဝ်ဟွံသေၚ် ဗၠောတ်လေဝ်ဟွံသေၚ်"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ဍာံ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/ဟွံညဳသၟဟ်_(သၚ်္ချာဂမၠိုၚ်)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ဟွံသေၚ် %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ကလေၚ်မဍာံတေံ ယဝ်ရတၚ်စုတ်ဏံဗၠေတ်မ္ဂး. ကလေၚ်မဗၠောတ်တေံ ယဝ်ရတၚ်စုတ်ဏံဒးမ္ဂး"; +Blockly.Msg["LOGIC_NULL"] = "ကၠိခန်"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ကလေၚ်ဟွံလုပ်အဝေါၚ်"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ကေုာံ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ဟွံသေင်မ္ဂး"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "စမ်ၜတ်"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ယဝ်ဗၠေတ်"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ယဝ်ဍာံ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "မဂၞန်မွဲ"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ဍာံဍာံ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် အသာ်..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် လၟိဟ်ဂၞန်..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "အဃောမပြံင်လှာဲကၠောန်ဒၟံင် လၟေင်..."; +Blockly.Msg["NEW_VARIABLE"] = "အဃောမပြံင်လှာဲဒၟံင်..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ယၟု မပြံင်လှာဲလဝ် တၟိ -"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ဗီုပြင် မပြံင်လှာဲလဝ် တၟိ -"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ကလေင်ပ"; +Blockly.Msg["REMOVE_COMMENT"] = "ပဲါပ္တိတ် လညာတ်"; +Blockly.Msg["RENAME_VARIABLE"] = "ကလေင်ကဵုယၟု မပြံင်လှာဲ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "'%1' သီုဖအိုတ်ဂှ် ကဵုယၟုတၟိ ပြံင်လှာဲထောအ်:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "တ္ၚဲဏအ်"; +Blockly.Msg["UNDO"] = "ဟွံပ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ဒကုတ်"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ၊၊"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ နကဵုဗီုပြင်တၞဟ် - '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ms.js b/blockly/msg/ms.js new file mode 100644 index 00000000000..052051c3b45 --- /dev/null +++ b/blockly/msg/ms.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Berikan Komen"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ubah nilai:"; +Blockly.Msg["CLEAN_UP"] = "Kemaskan Blok"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Lipat Blok²"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Lipat Blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "warna 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "warna 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "nisbah"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "adun"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Campurkan dua warna sekali pada nisbah yang ditentukan (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ms.wikipedia.org/wiki/Warna"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Pilih satu warna daripada palet."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "warna rawak"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Pilih satu warna secara rawak."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "biru"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "hijau"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "merah"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "warnakan"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Peroleh satu warna dengan menentukan amaun campuran merah, hijau dan biru. Kesemua nilai haruslah antara 0 hingga 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "hentikan gelung"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "teruskan dengan lelaran gelung seterusnya"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Keluar dari gelung pengandung."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Langkau seluruh gelung yang tinggal dan bersambung dengan lelaran seterusnya."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Amaran: Blok ini hanya boleh digunakan dalam satu gelung."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "untuk setiap perkara %1 dalam senarai %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Untuk setiap perkara dalam senarai, tetapkan pembolehubah '%1' pada perkara, kemudian lakukan beberapa perintah."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "kira dengan %1 dari %2 hingga %3 selang %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Gunakan pembolehubah '%1' pada nilai-nilai dari nombor pangkal hingga nombor hujung, mengira mengikut selang yang ditentukan, dan lakukan blok-blok yang tertentu."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tambah satu syarat kepada blok jika."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tambah yang terakhir, alihkan semua keadaan ke blok jika."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula blok jika."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "lain"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "lain jika"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jika"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jika nilai yang benar, lakukan beberapa penyata."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jika suatu nilai benar, lakukan penyata blok pertama. Jika tidak, bina penyata blok kedua."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jika nilai yang pertama adalah benar, lakukan penyata pertama blok. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jika nilai yang pertama adalah benar, lakukan penyata blok pertama. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua. Jika tiada nilai adalah benar, lakukan penyata blok terakhir."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "lakukan"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulang %1 kali"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Lakukan perintah berulang kali."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulangi sehingga"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ulangi apabila"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Lakukan beberapa perintah apabila nilainya palsu (false)."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Lakukan beberapa perintah apabila nilainya benar (true)."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hapuskan kesemua %1 blok?"; +Blockly.Msg["DELETE_BLOCK"] = "Hapuskan Blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Hapuskan %1 Blok"; +Blockly.Msg["DIALOG_CANCEL"] = "Batalkan"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Matikan Blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Pendua"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Hidupkan Blok"; +Blockly.Msg["EXPAND_ALL"] = "Buka Blok²"; +Blockly.Msg["EXPAND_BLOCK"] = "Buka Blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Input Luaran"; +Blockly.Msg["HELP"] = "Bantuan"; +Blockly.Msg["INLINE_INPUTS"] = "Input Sebaris"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Wujudkan senarai kosong"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Kembalikan senarai panjang 0, yang tidak mengandungi rekod data"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "senarai"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula senarai blok."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "wujudkan senarai dengan"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tambah item ke dalam senarai."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Wujudkan senarai dengan apa jua nombor item."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pertama"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dari akhir"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "dapatkan"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "dapat dan alihkan"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "terakhir"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "rawak"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "alihkan"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Kembalikan item pertama dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Kembalikan item dalam kedudukan yang ditetapkan dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Kembalikan item pertama dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Kembalikan item rawak dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Alihkan dan kembalikan item pertama dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Alihkan dan kembalikan item mengikut spesifikasi posisi dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Alihkan dan kembalikan item terakhir dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Alihkan dan kembalikan item rawak dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Alihkan item pertama dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Alihkan item pada posisi mengikut spesifikasi dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Alihkan item terakhir dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Alihkan item rawak dalam senarai."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ke # dari akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ke #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ke akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "dapatkan sub-senarai daripada pertama"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "dapatkan sub-senarai daripada # daripada terakhir"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "dapatkan sub-senarai daripada #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Wujudkan salinan bahagian yang ditentukan dari senarai."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ialah item terakhir."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ialah item pertama."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "cari pertama item kejadian"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "cari kejadian akhir item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Menyatakan indeks kejadian pertama/terakhir item berkenaan dalam senarai. Menyatakan %1 jika item berkenaan tidak ditemui."; +Blockly.Msg["LISTS_INLIST"] = "dalam senarai"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 adalah kosong"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika senarai kosong."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "panjang %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Kembalikan panjang senarai"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "wujudkan senarai dengan item %1 diulangi %2 kali"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Wujudkan senarai yang terdiri daripada nilai berulang mengikut nombor yang ditentukan."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sebagai"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "masukkan pada"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Selit item pada permulaan senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Masukkan item pada posisi yand ditentukan dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Tambahkan item dalam senarai akhir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Selit item secara rawak di dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Set item pertama dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Masukkan item pada posisi yang ditentukan dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Set item terakhir dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Set item rawak dalam senarai."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "buat senarai dgn teks"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "buat teks drpd senarai"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Cantumkan senarai teks menjadi satu teks, dipecahkan oleh delimiter."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Pecahkan teks kepada senarai teks, berpecah di setiap delimiter."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "dengan delimiter"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "palsu"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Kembalikan samada benar atau palsu."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "benar"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://id.wikipedia.org/wiki/Pertidaksamaan"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Kembali benar jika kedua-dua input benar antara satu sama lain."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Kembali benar jika input pertama adalah lebih besar daripada input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Kembali benar jika input pertama adalah lebih besar daripada atau sama dengan input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Kembali benar jika input pertama adalah lebih kecil daripada input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Kembali benar jika input pertama adalah lebih kecil daripada atau sama dengan input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Taip balik benar jika kedua-dua input tidak sama."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "bukan %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "'Benar' akan dibalas jika inputnya salah. 'Salah' akan dibalas jika inputnya benar."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "dan"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "atau"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "Jika palsu"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "Jika benar"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ms.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Kembalikan jumlah kedua-dua bilangan."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Taip balik hasil bahagi dua nombor tersebut."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Taip balik hasil tolak dua nombor tersebut."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Taip balik hasil darab dua nombor tersebut."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://id.wikipedia.org/wiki/Perjumlahan"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "perubahan %1 oleh %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Tambah nombor kepada pembolehubah '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ms.wikipedia.org/wiki/Pemalar_matematik"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "Boleh dibahagikan dengan"; +Blockly.Msg["MATH_IS_EVEN"] = "Adalah genap"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatif"; +Blockly.Msg["MATH_IS_ODD"] = "aneh"; +Blockly.Msg["MATH_IS_POSITIVE"] = "adalah positif"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://id.wikipedia.org/wiki/Operasi_modulus"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Taip balik baki yang didapat daripada pembahagian dua nombor tersebut."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ms.wikipedia.org/wiki/Nombor"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Suatu nombor."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "purata daripada senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Max senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Median senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min dalam senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "jenis senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Item rawak daripada senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "sisihan piawai bagi senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Jumlah senarai"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Kembalikan purata (min aritmetik) nilai-nilai angka di dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Pulangkan jumlah terbesar dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Kembalikan nombor median dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Kembalikan nombor terkecil dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Kembali senarai item yang paling biasa dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Kembalikan elemen rawak daripada senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Kembali dengan sisihan piawai daripada senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Kembalikan jumlah semua nombor dalam senarai."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "pecahan rawak"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Kembali sebahagian kecil rawak antara 0.0 (inklusif) dan 1.0 (eksklusif)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "integer rawak dari %1ke %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Kembalikan integer rawak diantara dua had yang ditentukan, inklusif."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "pusingan"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Pusingan ke bawah"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "pusingan ke atas"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Bulat nombor yang naik atau turun."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ms.wikipedia.org/wiki/Punca_kuasa_dua"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "mutlak"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Punca kuasa dua"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Kembalikan nilai mutlak suatu nombor."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Kembalikan e kepada kuasa nombor."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Kembali dalam logaritma nombor asli."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Kembali logarithm 10 asas nombor."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Kembalikan nombor yang songsang."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Kembalikan 10 kepada kuasa nombor."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Kembalikan punca kuasa nombor."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ms.wikipedia.org/wiki/Fungsi_trigonometri"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Kembali arccosine beberapa nombor."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Kembalikan arcsince beberapa nombor."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Kembalikan beberapa nombor arctangent."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kembalikan darjah kosinus (bukan radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Kembalikan darjah sine (bukan radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Kembalikan darjah tangen (bukan radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Pembolehubah baru..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nama pembolehubah baru:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "bolehkan kenyataan"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "dengan:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ms.wikipedia.org/wiki/Fungsi"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ms.wikipedia.org/wiki/Fungsi"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "dengan:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Hasilkan '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Terangkan fungsi ini..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Buat sesuatu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "Untuk"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Menghasilkan suatu fungsi tanpa output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "kembali"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Mencipta satu fungsi dengan pengeluaran."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Amaran: Fungsi ini mempunyai parameter yang berganda."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Serlahkan definisi fungsi"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Amaran: Blok ini hanya boleh digunakan dalam fungsi definisi."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Nama input:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tambah satu input pada fungsi."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Input-input"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tambah, alih keluar atau susun semula input pada fungsi ini."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Padamkan Komen"; +Blockly.Msg["RENAME_VARIABLE"] = "Tukar nama pembolehubah..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tukar nama semua pembolehubah '%1' kepada:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "Kepada huruf kecil"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "Kepada HURUF BESAR"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "Dapatkan abjad terakhir"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "Dapatkan abjad rawak"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "Sertai"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "untuk huruf terakhir"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "dalam teks"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "mencari kejadian pertama teks"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "mencari kejadian terakhir teks"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "dalam teks %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Kembalikan Indeks kejadian pertama/terakhir dari teks pertama ke dalam teks kedua. Kembalikan %1 Jika teks tidak ditemui."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 adalah kosong"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika teks yang disediakan adalah kosong."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "hasilkan teks dengan"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Hasilkan sebahagian teks dengan menghubungkan apa jua nombor item."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "panjang %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Kembalikan jumlah huruf (termasuk ruang) dalam teks yang disediakan."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "cetak %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Cetak teks yang ditentukan, nombor atau nilai lain."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Peringatan kepada pengguna untuk nombor."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Peringatkan pengguna untuk sebahagian teks."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Prom untuk nombor dengan mesej"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Prom untuk teks dengan mesej"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ms.wikipedia.org/wiki/Rentetan"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Huruf, perkataan, atau baris teks."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "mengurangkan kawasan dari kedua-dua belah"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "mengurangkan ruang dari sebelah kiri"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "mengurangkan kawasan dari sisi kanan"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Kembali salinan teks dengan ruang yang dikeluarkan daripada satu atau hujung kedua belah."; +Blockly.Msg["TODAY"] = "Hari ini"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Perkara"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Hasilkan 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Kembalikan nilai pemboleh ubah ini."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 ke %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Hasilkan 'set %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Set pembolehubah ini supaya sama dengan input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/msg.d.ts b/blockly/msg/msg.d.ts new file mode 100644 index 00000000000..c0e97cc61cb --- /dev/null +++ b/blockly/msg/msg.d.ts @@ -0,0 +1,456 @@ +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Type definitions for Blockly Messages. + * @author samelh@google.com (Sam El-Husseini) + */ + + +declare namespace Blockly.Msg { + let ADD_COMMENT : string ; + let CANNOT_DELETE_VARIABLE_PROCEDURE : string ; + let CHANGE_VALUE_TITLE : string ; + let CLEAN_UP : string ; + let COLLAPSED_WARNINGS_WARNING : string ; + let COLLAPSE_ALL : string ; + let COLLAPSE_BLOCK : string ; + let COLOUR_BLEND_COLOUR1 : string ; + let COLOUR_BLEND_COLOUR2 : string ; + let COLOUR_BLEND_HELPURL : string ; + let COLOUR_BLEND_RATIO : string ; + let COLOUR_BLEND_TITLE : string ; + let COLOUR_BLEND_TOOLTIP : string ; + let COLOUR_HUE : string ; + let COLOUR_PICKER_HELPURL : string ; + let COLOUR_PICKER_TOOLTIP : string ; + let COLOUR_RANDOM_HELPURL : string ; + let COLOUR_RANDOM_TITLE : string ; + let COLOUR_RANDOM_TOOLTIP : string ; + let COLOUR_RGB_BLUE : string ; + let COLOUR_RGB_GREEN : string ; + let COLOUR_RGB_HELPURL : string ; + let COLOUR_RGB_RED : string ; + let COLOUR_RGB_TITLE : string ; + let COLOUR_RGB_TOOLTIP : string ; + let CONTROLS_FLOW_STATEMENTS_HELPURL : string ; + let CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK : string ; + let CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE : string ; + let CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK : string ; + let CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE : string ; + let CONTROLS_FLOW_STATEMENTS_WARNING : string ; + let CONTROLS_FOREACH_HELPURL : string ; + let CONTROLS_FOREACH_INPUT_DO : string ; + let CONTROLS_FOREACH_TITLE : string ; + let CONTROLS_FOREACH_TOOLTIP : string ; + let CONTROLS_FOR_HELPURL : string ; + let CONTROLS_FOR_INPUT_DO : string ; + let CONTROLS_FOR_TITLE : string ; + let CONTROLS_FOR_TOOLTIP : string ; + let CONTROLS_IF_ELSEIF_TITLE_ELSEIF : string ; + let CONTROLS_IF_ELSEIF_TOOLTIP : string ; + let CONTROLS_IF_ELSE_TITLE_ELSE : string ; + let CONTROLS_IF_ELSE_TOOLTIP : string ; + let CONTROLS_IF_HELPURL : string ; + let CONTROLS_IF_IF_TITLE_IF : string ; + let CONTROLS_IF_IF_TOOLTIP : string ; + let CONTROLS_IF_MSG_ELSE : string ; + let CONTROLS_IF_MSG_ELSEIF : string ; + let CONTROLS_IF_MSG_IF : string ; + let CONTROLS_IF_MSG_THEN : string ; + let CONTROLS_IF_TOOLTIP_1 : string ; + let CONTROLS_IF_TOOLTIP_2 : string ; + let CONTROLS_IF_TOOLTIP_3 : string ; + let CONTROLS_IF_TOOLTIP_4 : string ; + let CONTROLS_REPEAT_HELPURL : string ; + let CONTROLS_REPEAT_INPUT_DO : string ; + let CONTROLS_REPEAT_TITLE : string ; + let CONTROLS_REPEAT_TOOLTIP : string ; + let CONTROLS_WHILEUNTIL_HELPURL : string ; + let CONTROLS_WHILEUNTIL_INPUT_DO : string ; + let CONTROLS_WHILEUNTIL_OPERATOR_UNTIL : string ; + let CONTROLS_WHILEUNTIL_OPERATOR_WHILE : string ; + let CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL : string ; + let CONTROLS_WHILEUNTIL_TOOLTIP_WHILE : string ; + let DELETE_ALL_BLOCKS : string ; + let DELETE_BLOCK : string ; + let DELETE_VARIABLE : string ; + let DELETE_VARIABLE_CONFIRMATION : string ; + let DELETE_X_BLOCKS : string ; + let DISABLE_BLOCK : string ; + let DUPLICATE_BLOCK : string ; + let DUPLICATE_COMMENT : string ; + let ENABLE_BLOCK : string ; + let EXPAND_ALL : string ; + let EXPAND_BLOCK : string ; + let EXTERNAL_INPUTS : string ; + let HELP : string ; + let INLINE_INPUTS : string ; + let IOS_CANCEL : string ; + let IOS_ERROR : string ; + let IOS_OK : string ; + let IOS_PROCEDURES_ADD_INPUT : string ; + let IOS_PROCEDURES_ALLOW_STATEMENTS : string ; + let IOS_PROCEDURES_DUPLICATE_INPUTS_ERROR : string ; + let IOS_PROCEDURES_INPUTS : string ; + let IOS_VARIABLES_ADD_BUTTON : string ; + let IOS_VARIABLES_ADD_VARIABLE : string ; + let IOS_VARIABLES_DELETE_BUTTON : string ; + let IOS_VARIABLES_EMPTY_NAME_ERROR : string ; + let IOS_VARIABLES_RENAME_BUTTON : string ; + let IOS_VARIABLES_VARIABLE_NAME : string ; + let LISTS_CREATE_EMPTY_HELPURL : string ; + let LISTS_CREATE_EMPTY_TITLE : string ; + let LISTS_CREATE_EMPTY_TOOLTIP : string ; + let LISTS_CREATE_WITH_CONTAINER_TITLE_ADD : string ; + let LISTS_CREATE_WITH_CONTAINER_TOOLTIP : string ; + let LISTS_CREATE_WITH_HELPURL : string ; + let LISTS_CREATE_WITH_INPUT_WITH : string ; + let LISTS_CREATE_WITH_ITEM_TITLE : string ; + let LISTS_CREATE_WITH_ITEM_TOOLTIP : string ; + let LISTS_CREATE_WITH_TOOLTIP : string ; + let LISTS_GET_INDEX_FIRST : string ; + let LISTS_GET_INDEX_FROM_END : string ; + let LISTS_GET_INDEX_FROM_START : string ; + let LISTS_GET_INDEX_GET : string ; + let LISTS_GET_INDEX_GET_REMOVE : string ; + let LISTS_GET_INDEX_HELPURL : string ; + let LISTS_GET_INDEX_INPUT_IN_LIST : string ; + let LISTS_GET_INDEX_LAST : string ; + let LISTS_GET_INDEX_RANDOM : string ; + let LISTS_GET_INDEX_REMOVE : string ; + let LISTS_GET_INDEX_TAIL : string ; + let LISTS_GET_INDEX_TOOLTIP_GET_FIRST : string ; + let LISTS_GET_INDEX_TOOLTIP_GET_FROM : string ; + let LISTS_GET_INDEX_TOOLTIP_GET_LAST : string ; + let LISTS_GET_INDEX_TOOLTIP_GET_RANDOM : string ; + let LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST : string ; + let LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM : string ; + let LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST : string ; + let LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM : string ; + let LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST : string ; + let LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM : string ; + let LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST : string ; + let LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM : string ; + let LISTS_GET_SUBLIST_END_FROM_END : string ; + let LISTS_GET_SUBLIST_END_FROM_START : string ; + let LISTS_GET_SUBLIST_END_LAST : string ; + let LISTS_GET_SUBLIST_HELPURL : string ; + let LISTS_GET_SUBLIST_INPUT_IN_LIST : string ; + let LISTS_GET_SUBLIST_START_FIRST : string ; + let LISTS_GET_SUBLIST_START_FROM_END : string ; + let LISTS_GET_SUBLIST_START_FROM_START : string ; + let LISTS_GET_SUBLIST_TAIL : string ; + let LISTS_GET_SUBLIST_TOOLTIP : string ; + let LISTS_HUE : string ; + let LISTS_INDEX_FROM_END_TOOLTIP : string ; + let LISTS_INDEX_FROM_START_TOOLTIP : string ; + let LISTS_INDEX_OF_FIRST : string ; + let LISTS_INDEX_OF_HELPURL : string ; + let LISTS_INDEX_OF_INPUT_IN_LIST : string ; + let LISTS_INDEX_OF_LAST : string ; + let LISTS_INDEX_OF_TOOLTIP : string ; + let LISTS_INLIST : string ; + let LISTS_ISEMPTY_HELPURL : string ; + let LISTS_ISEMPTY_TITLE : string ; + let LISTS_ISEMPTY_TOOLTIP : string ; + let LISTS_LENGTH_HELPURL : string ; + let LISTS_LENGTH_TITLE : string ; + let LISTS_LENGTH_TOOLTIP : string ; + let LISTS_REPEAT_HELPURL : string ; + let LISTS_REPEAT_TITLE : string ; + let LISTS_REPEAT_TOOLTIP : string ; + let LISTS_REVERSE_HELPURL : string ; + let LISTS_REVERSE_MESSAGE0 : string ; + let LISTS_REVERSE_TOOLTIP : string ; + let LISTS_SET_INDEX_HELPURL : string ; + let LISTS_SET_INDEX_INPUT_IN_LIST : string ; + let LISTS_SET_INDEX_INPUT_TO : string ; + let LISTS_SET_INDEX_INSERT : string ; + let LISTS_SET_INDEX_SET : string ; + let LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST : string ; + let LISTS_SET_INDEX_TOOLTIP_INSERT_FROM : string ; + let LISTS_SET_INDEX_TOOLTIP_INSERT_LAST : string ; + let LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM : string ; + let LISTS_SET_INDEX_TOOLTIP_SET_FIRST : string ; + let LISTS_SET_INDEX_TOOLTIP_SET_FROM : string ; + let LISTS_SET_INDEX_TOOLTIP_SET_LAST : string ; + let LISTS_SET_INDEX_TOOLTIP_SET_RANDOM : string ; + let LISTS_SORT_HELPURL : string ; + let LISTS_SORT_ORDER_ASCENDING : string ; + let LISTS_SORT_ORDER_DESCENDING : string ; + let LISTS_SORT_TITLE : string ; + let LISTS_SORT_TOOLTIP : string ; + let LISTS_SORT_TYPE_IGNORECASE : string ; + let LISTS_SORT_TYPE_NUMERIC : string ; + let LISTS_SORT_TYPE_TEXT : string ; + let LISTS_SPLIT_HELPURL : string ; + let LISTS_SPLIT_LIST_FROM_TEXT : string ; + let LISTS_SPLIT_TEXT_FROM_LIST : string ; + let LISTS_SPLIT_TOOLTIP_JOIN : string ; + let LISTS_SPLIT_TOOLTIP_SPLIT : string ; + let LISTS_SPLIT_WITH_DELIMITER : string ; + let LOGIC_BOOLEAN_FALSE : string ; + let LOGIC_BOOLEAN_HELPURL : string ; + let LOGIC_BOOLEAN_TOOLTIP : string ; + let LOGIC_BOOLEAN_TRUE : string ; + let LOGIC_COMPARE_HELPURL : string ; + let LOGIC_COMPARE_TOOLTIP_EQ : string ; + let LOGIC_COMPARE_TOOLTIP_GT : string ; + let LOGIC_COMPARE_TOOLTIP_GTE : string ; + let LOGIC_COMPARE_TOOLTIP_LT : string ; + let LOGIC_COMPARE_TOOLTIP_LTE : string ; + let LOGIC_COMPARE_TOOLTIP_NEQ : string ; + let LOGIC_HUE : string ; + let LOGIC_NEGATE_HELPURL : string ; + let LOGIC_NEGATE_TITLE : string ; + let LOGIC_NEGATE_TOOLTIP : string ; + let LOGIC_NULL : string ; + let LOGIC_NULL_HELPURL : string ; + let LOGIC_NULL_TOOLTIP : string ; + let LOGIC_OPERATION_AND : string ; + let LOGIC_OPERATION_HELPURL : string ; + let LOGIC_OPERATION_OR : string ; + let LOGIC_OPERATION_TOOLTIP_AND : string ; + let LOGIC_OPERATION_TOOLTIP_OR : string ; + let LOGIC_TERNARY_CONDITION : string ; + let LOGIC_TERNARY_HELPURL : string ; + let LOGIC_TERNARY_IF_FALSE : string ; + let LOGIC_TERNARY_IF_TRUE : string ; + let LOGIC_TERNARY_TOOLTIP : string ; + let LOOPS_HUE : string ; + let MATH_ADDITION_SYMBOL : string ; + let MATH_ARITHMETIC_HELPURL : string ; + let MATH_ARITHMETIC_TOOLTIP_ADD : string ; + let MATH_ARITHMETIC_TOOLTIP_DIVIDE : string ; + let MATH_ARITHMETIC_TOOLTIP_MINUS : string ; + let MATH_ARITHMETIC_TOOLTIP_MULTIPLY : string ; + let MATH_ARITHMETIC_TOOLTIP_POWER : string ; + let MATH_ATAN2_HELPURL : string ; + let MATH_ATAN2_TITLE : string ; + let MATH_ATAN2_TOOLTIP : string ; + let MATH_CHANGE_HELPURL : string ; + let MATH_CHANGE_TITLE : string ; + let MATH_CHANGE_TITLE_ITEM : string ; + let MATH_CHANGE_TOOLTIP : string ; + let MATH_CONSTANT_HELPURL : string ; + let MATH_CONSTANT_TOOLTIP : string ; + let MATH_CONSTRAIN_HELPURL : string ; + let MATH_CONSTRAIN_TITLE : string ; + let MATH_CONSTRAIN_TOOLTIP : string ; + let MATH_DIVISION_SYMBOL : string ; + let MATH_HUE : string ; + let MATH_IS_DIVISIBLE_BY : string ; + let MATH_IS_EVEN : string ; + let MATH_IS_NEGATIVE : string ; + let MATH_IS_ODD : string ; + let MATH_IS_POSITIVE : string ; + let MATH_IS_PRIME : string ; + let MATH_IS_TOOLTIP : string ; + let MATH_IS_WHOLE : string ; + let MATH_MODULO_HELPURL : string ; + let MATH_MODULO_TITLE : string ; + let MATH_MODULO_TOOLTIP : string ; + let MATH_MULTIPLICATION_SYMBOL : string ; + let MATH_NUMBER_HELPURL : string ; + let MATH_NUMBER_TOOLTIP : string ; + let MATH_ONLIST_HELPURL : string ; + let MATH_ONLIST_OPERATOR_AVERAGE : string ; + let MATH_ONLIST_OPERATOR_MAX : string ; + let MATH_ONLIST_OPERATOR_MEDIAN : string ; + let MATH_ONLIST_OPERATOR_MIN : string ; + let MATH_ONLIST_OPERATOR_MODE : string ; + let MATH_ONLIST_OPERATOR_RANDOM : string ; + let MATH_ONLIST_OPERATOR_STD_DEV : string ; + let MATH_ONLIST_OPERATOR_SUM : string ; + let MATH_ONLIST_TOOLTIP_AVERAGE : string ; + let MATH_ONLIST_TOOLTIP_MAX : string ; + let MATH_ONLIST_TOOLTIP_MEDIAN : string ; + let MATH_ONLIST_TOOLTIP_MIN : string ; + let MATH_ONLIST_TOOLTIP_MODE : string ; + let MATH_ONLIST_TOOLTIP_RANDOM : string ; + let MATH_ONLIST_TOOLTIP_STD_DEV : string ; + let MATH_ONLIST_TOOLTIP_SUM : string ; + let MATH_POWER_SYMBOL : string ; + let MATH_RANDOM_FLOAT_HELPURL : string ; + let MATH_RANDOM_FLOAT_TITLE_RANDOM : string ; + let MATH_RANDOM_FLOAT_TOOLTIP : string ; + let MATH_RANDOM_INT_HELPURL : string ; + let MATH_RANDOM_INT_TITLE : string ; + let MATH_RANDOM_INT_TOOLTIP : string ; + let MATH_ROUND_HELPURL : string ; + let MATH_ROUND_OPERATOR_ROUND : string ; + let MATH_ROUND_OPERATOR_ROUNDDOWN : string ; + let MATH_ROUND_OPERATOR_ROUNDUP : string ; + let MATH_ROUND_TOOLTIP : string ; + let MATH_SINGLE_HELPURL : string ; + let MATH_SINGLE_OP_ABSOLUTE : string ; + let MATH_SINGLE_OP_ROOT : string ; + let MATH_SINGLE_TOOLTIP_ABS : string ; + let MATH_SINGLE_TOOLTIP_EXP : string ; + let MATH_SINGLE_TOOLTIP_LN : string ; + let MATH_SINGLE_TOOLTIP_LOG10 : string ; + let MATH_SINGLE_TOOLTIP_NEG : string ; + let MATH_SINGLE_TOOLTIP_POW10 : string ; + let MATH_SINGLE_TOOLTIP_ROOT : string ; + let MATH_SUBTRACTION_SYMBOL : string ; + let MATH_TRIG_ACOS : string ; + let MATH_TRIG_ASIN : string ; + let MATH_TRIG_ATAN : string ; + let MATH_TRIG_COS : string ; + let MATH_TRIG_HELPURL : string ; + let MATH_TRIG_SIN : string ; + let MATH_TRIG_TAN : string ; + let MATH_TRIG_TOOLTIP_ACOS : string ; + let MATH_TRIG_TOOLTIP_ASIN : string ; + let MATH_TRIG_TOOLTIP_ATAN : string ; + let MATH_TRIG_TOOLTIP_COS : string ; + let MATH_TRIG_TOOLTIP_SIN : string ; + let MATH_TRIG_TOOLTIP_TAN : string ; + let NEW_COLOUR_VARIABLE : string ; + let NEW_NUMBER_VARIABLE : string ; + let NEW_STRING_VARIABLE : string ; + let NEW_VARIABLE : string ; + let NEW_VARIABLE_TITLE : string ; + let NEW_VARIABLE_TYPE_TITLE : string ; + let ORDINAL_NUMBER_SUFFIX : string ; + let PROCEDURES_ALLOW_STATEMENTS : string ; + let PROCEDURES_BEFORE_PARAMS : string ; + let PROCEDURES_CALLNORETURN_HELPURL : string ; + let PROCEDURES_CALLNORETURN_TOOLTIP : string ; + let PROCEDURES_CALLRETURN_HELPURL : string ; + let PROCEDURES_CALLRETURN_TOOLTIP : string ; + let PROCEDURES_CALL_BEFORE_PARAMS : string ; + let PROCEDURES_CREATE_DO : string ; + let PROCEDURES_DEFNORETURN_COMMENT : string ; + let PROCEDURES_DEFNORETURN_DO : string ; + let PROCEDURES_DEFNORETURN_HELPURL : string ; + let PROCEDURES_DEFNORETURN_PROCEDURE : string ; + let PROCEDURES_DEFNORETURN_TITLE : string ; + let PROCEDURES_DEFNORETURN_TOOLTIP : string ; + let PROCEDURES_DEFRETURN_COMMENT : string ; + let PROCEDURES_DEFRETURN_DO : string ; + let PROCEDURES_DEFRETURN_HELPURL : string ; + let PROCEDURES_DEFRETURN_PROCEDURE : string ; + let PROCEDURES_DEFRETURN_RETURN : string ; + let PROCEDURES_DEFRETURN_TITLE : string ; + let PROCEDURES_DEFRETURN_TOOLTIP : string ; + let PROCEDURES_DEF_DUPLICATE_WARNING : string ; + let PROCEDURES_HIGHLIGHT_DEF : string ; + let PROCEDURES_HUE : string ; + let PROCEDURES_IFRETURN_HELPURL : string ; + let PROCEDURES_IFRETURN_TOOLTIP : string ; + let PROCEDURES_IFRETURN_WARNING : string ; + let PROCEDURES_MUTATORARG_TITLE : string ; + let PROCEDURES_MUTATORARG_TOOLTIP : string ; + let PROCEDURES_MUTATORCONTAINER_TITLE : string ; + let PROCEDURES_MUTATORCONTAINER_TOOLTIP : string ; + let REDO : string ; + let REMOVE_COMMENT : string ; + let RENAME_VARIABLE : string ; + let RENAME_VARIABLE_TITLE : string ; + let TEXTS_HUE : string ; + let TEXT_APPEND_HELPURL : string ; + let TEXT_APPEND_TITLE : string ; + let TEXT_APPEND_TOOLTIP : string ; + let TEXT_APPEND_VARIABLE : string ; + let TEXT_CHANGECASE_HELPURL : string ; + let TEXT_CHANGECASE_OPERATOR_LOWERCASE : string ; + let TEXT_CHANGECASE_OPERATOR_TITLECASE : string ; + let TEXT_CHANGECASE_OPERATOR_UPPERCASE : string ; + let TEXT_CHANGECASE_TOOLTIP : string ; + let TEXT_CHARAT_FIRST : string ; + let TEXT_CHARAT_FROM_END : string ; + let TEXT_CHARAT_FROM_START : string ; + let TEXT_CHARAT_HELPURL : string ; + let TEXT_CHARAT_LAST : string ; + let TEXT_CHARAT_RANDOM : string ; + let TEXT_CHARAT_TAIL : string ; + let TEXT_CHARAT_TITLE : string ; + let TEXT_CHARAT_TOOLTIP : string ; + let TEXT_COUNT_HELPURL : string ; + let TEXT_COUNT_MESSAGE0 : string ; + let TEXT_COUNT_TOOLTIP : string ; + let TEXT_CREATE_JOIN_ITEM_TITLE_ITEM : string ; + let TEXT_CREATE_JOIN_ITEM_TOOLTIP : string ; + let TEXT_CREATE_JOIN_TITLE_JOIN : string ; + let TEXT_CREATE_JOIN_TOOLTIP : string ; + let TEXT_GET_SUBSTRING_END_FROM_END : string ; + let TEXT_GET_SUBSTRING_END_FROM_START : string ; + let TEXT_GET_SUBSTRING_END_LAST : string ; + let TEXT_GET_SUBSTRING_HELPURL : string ; + let TEXT_GET_SUBSTRING_INPUT_IN_TEXT : string ; + let TEXT_GET_SUBSTRING_START_FIRST : string ; + let TEXT_GET_SUBSTRING_START_FROM_END : string ; + let TEXT_GET_SUBSTRING_START_FROM_START : string ; + let TEXT_GET_SUBSTRING_TAIL : string ; + let TEXT_GET_SUBSTRING_TOOLTIP : string ; + let TEXT_INDEXOF_HELPURL : string ; + let TEXT_INDEXOF_OPERATOR_FIRST : string ; + let TEXT_INDEXOF_OPERATOR_LAST : string ; + let TEXT_INDEXOF_TITLE : string ; + let TEXT_INDEXOF_TOOLTIP : string ; + let TEXT_ISEMPTY_HELPURL : string ; + let TEXT_ISEMPTY_TITLE : string ; + let TEXT_ISEMPTY_TOOLTIP : string ; + let TEXT_JOIN_HELPURL : string ; + let TEXT_JOIN_TITLE_CREATEWITH : string ; + let TEXT_JOIN_TOOLTIP : string ; + let TEXT_LENGTH_HELPURL : string ; + let TEXT_LENGTH_TITLE : string ; + let TEXT_LENGTH_TOOLTIP : string ; + let TEXT_PRINT_HELPURL : string ; + let TEXT_PRINT_TITLE : string ; + let TEXT_PRINT_TOOLTIP : string ; + let TEXT_PROMPT_HELPURL : string ; + let TEXT_PROMPT_TOOLTIP_NUMBER : string ; + let TEXT_PROMPT_TOOLTIP_TEXT : string ; + let TEXT_PROMPT_TYPE_NUMBER : string ; + let TEXT_PROMPT_TYPE_TEXT : string ; + let TEXT_REPLACE_HELPURL : string ; + let TEXT_REPLACE_MESSAGE0 : string ; + let TEXT_REPLACE_TOOLTIP : string ; + let TEXT_REVERSE_HELPURL : string ; + let TEXT_REVERSE_MESSAGE0 : string ; + let TEXT_REVERSE_TOOLTIP : string ; + let TEXT_TEXT_HELPURL : string ; + let TEXT_TEXT_TOOLTIP : string ; + let TEXT_TRIM_HELPURL : string ; + let TEXT_TRIM_OPERATOR_BOTH : string ; + let TEXT_TRIM_OPERATOR_LEFT : string ; + let TEXT_TRIM_OPERATOR_RIGHT : string ; + let TEXT_TRIM_TOOLTIP : string ; + let TODAY : string ; + let UNDO : string ; + let UNNAMED_KEY : string ; + let VARIABLES_DEFAULT_NAME : string ; + let VARIABLES_DYNAMIC_HUE : string ; + let VARIABLES_GET_CREATE_SET : string ; + let VARIABLES_GET_HELPURL : string ; + let VARIABLES_GET_TOOLTIP : string ; + let VARIABLES_HUE : string ; + let VARIABLES_SET : string ; + let VARIABLES_SET_CREATE_GET : string ; + let VARIABLES_SET_HELPURL : string ; + let VARIABLES_SET_TOOLTIP : string ; + let VARIABLE_ALREADY_EXISTS : string ; + let VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE : string ; + let WORKSPACE_ARIA_LABEL : string ; + let WORKSPACE_COMMENT_DEFAULT_TEXT : string ; + + let VARIABLES_CALL_TOOLTIP : string ; + let VARIABLES_CALL_OUT_TOOLTIP : string ; + let CALL_TEXT: string; + let RETURN_TEXT: string; + let PROCEDURES_SETUP_TOOLTIP : string; + let PROCEDURES_SETUP_SUPERVISOR_TOOLTIP : string; + let PROCEDURES_RUN_TOOLTIP : string; + let PROCEDURES_SETUP_TITLE: string; + let PROCEDURES_SETUP_SUPERVISOR_TITLE: string; + let PROCEDURES_RUN_TITLE: string; + let VARIABLES_METHODS_CALLS: string +} + diff --git a/blockly/msg/my.js b/blockly/msg/my.js new file mode 100644 index 00000000000..078e3011998 --- /dev/null +++ b/blockly/msg/my.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "မှတ်ချက် ပေါင်းထည့်ရန်"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "လုပ်ဆောင်ချက် \"%2%\" ၏ သတ်မှတ်ချက်တစ်စိတ်တစ်ပိုင်း ဖြစ်သောကြောင့် ကိန်းရှင် \"%1\" ကို ဖျက်လို့မရပါ။"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "တန်ဖိုး ပြောင်းလဲရန်:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "အရောင် ၁"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "အရောင် ၂"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "အချိုး"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://my.wikipedia.org/wiki/အရောင်"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ကျပန်း အရောင်"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ကျပန်းပုံစံဖြင့် အရောင်ရွေးပါ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "အပြာရောင်"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "အစိမ်း"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "အနီ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "ကိန်းရှင် \"%1\" ကို ဖျက်ရန်"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "ဖျက်မည်။"; +Blockly.Msg["DIALOG_OK"] = "အိုကေ"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "ထပ်ပွား"; +Blockly.Msg["DUPLICATE_COMMENT"] = "မှတ်ချက်ပွားရန်"; +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "အ​ကူ​အ​ညီ​"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ပထမဆုံး"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "နောက်ဆုံး"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ကျပန်း"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ဖယ်ရှားရန်"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ငယ်စဉ်ကြီးလိုက်"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ကြီးစဉ်ငယ်လိုက်"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 အဖြစ် စီစဉ်ရန်"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "နှင့်"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "သို့မဟုတ်"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://my.wikipedia.org/wiki/ဂဏန်းသင်္ချာ"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://my.wikipedia.org/wiki/ကိန်း"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ကိန်းတစ်ခု။"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://my.wikipedia.org/wiki/စတုရန်း"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "အရောင်ကိန်းရှင် ဖန်တီးရန်"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ဂဏန်းကိန်းရှင် ဖန်တီးရန်"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ကိန်းရှင် ဖန်တီးရန်"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ကိန်းရှင်အသစ်နာမည်"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ကိန်းရှင်အမျိုးအစားသစ်:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' ကို ဖန်တီးရန်"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ရှေ့သို့ ပြန်ပြင်ရန်"; +Blockly.Msg["REMOVE_COMMENT"] = "မှတ်ချက် ဖယ်ရှားရန်"; +Blockly.Msg["RENAME_VARIABLE"] = "ကိန်းရှင် အမည်ပြောင်းရန်"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ကိန်းရှင် %1 ခုကို အမည်ပြောင်းရန်"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ယနေ့"; +Blockly.Msg["UNDO"] = "နောက်ပြန် ပြန်ပြင်ရန်"; +Blockly.Msg["UNNAMED_KEY"] = "အမည်မဲ့"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ကိန်းရှင်၏အမည် %1 သည် ရှိပြီးသားဖြစ်သည်။"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ကိန်းရှင်အမည် \"%1\" သည် အခြားအမျိုးအစား \"%2%\" အတွက် ရှိပြီးသားဖြစ်သည်။"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "လုပ်ငန်းခွင်ပိတ်ဆို့မှု"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "တစ်ခုခု ပြောခဲ့ပါ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/mzn.js b/blockly/msg/mzn.js new file mode 100644 index 00000000000..89a6919f778 --- /dev/null +++ b/blockly/msg/mzn.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "خا"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/nb.js b/blockly/msg/nb.js new file mode 100644 index 00000000000..089c331030d --- /dev/null +++ b/blockly/msg/nb.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Legg til kommentar"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kan ikke slette variabelen «%1» fordi den er del av definisjonen for funksjonen «%2»"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Bytt verdi:"; +Blockly.Msg["CLEAN_UP"] = "Rydd opp Blocks"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Skjul blokker"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Skjul blokk"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "farge 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "farge 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "forhold"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blande"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blander to farger sammen med et gitt forhold (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Velg en farge fra paletten."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "tilfeldig farge"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Velg en tilfeldig farge."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blå"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grønn"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rød"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "farge med"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Lag en farge med angitt verdi av rød, grønn og blå. Alle verdier må være mellom 0 og 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "bryt ut av løkken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fortsett med neste gjentakelse av løkken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bryt ut av den gjeldende løkken."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Hopp over resten av denne løkken og fortsett med neste gjentakelse."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Advarsel: Denne blokken kan kun brukes innenfor en løkke."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for hvert element %1 i listen %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For hvert element i en liste, angi variabelen '%1' til elementet, og deretter lag noen setninger."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "tell med %1 fra %2 til %3 med %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ha variabel \"%1\" ta verdiene fra start nummer til slutt nummer, telle med spesifisert intervall og lag de spesifiserte blokkene."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Legg til en betingelse til hvis blokken."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Legg til hva som skal skje hvis de andre ikke slår til."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Legg til, fjern eller flytt seksjoner i denne hvis-blokken."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ellers"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ellers hvis"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "hvis"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Hvis dette er sant, så gjør følgende."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Hvis dette er sant, så utfør den første blokken av instruksjoner. Hvis ikke, utfør den andre blokken."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Hvis det første stemmer, så utfør den første blokken av instruksjoner. Ellers, hvis det andre stemmer, utfør den andre blokken av instruksjoner."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Hvis den første verdien er sann, så utfør den første blokken med setninger. Ellers, hvis den andre verdien er sann, så utfør den andre blokken med setninger. Hvis ingen av verdiene er sanne, så utfør den siste blokken med setninger."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "gjør"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "gjenta %1 ganger"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Gjenta noen instruksjoner flere ganger."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "gjenta til"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "gjenta mens"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Så lenge et utsagn ikke stemmer, gjør noen instruksjoner."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Så lenge et utsagn stemmer, utfør noen instruksjoner."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Slett alle %1 blokker?"; +Blockly.Msg["DELETE_BLOCK"] = "Slett blokk"; +Blockly.Msg["DELETE_VARIABLE"] = "Slett variabelen «%1»"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Slett %1 bruk av variabelen «%2»?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Slett %1 blokker"; +Blockly.Msg["DIALOG_CANCEL"] = "Avbryt"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Deaktiver blokk"; +Blockly.Msg["DUPLICATE_BLOCK"] = "duplikat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliser kommentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktiver blokk"; +Blockly.Msg["EXPAND_ALL"] = "Utvid blokker"; +Blockly.Msg["EXPAND_BLOCK"] = "Utvid blokk"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Eksterne kilder"; +Blockly.Msg["HELP"] = "Hjelp"; +Blockly.Msg["INLINE_INPUTS"] = "Interne kilder"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "opprett en tom liste"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returnerer en tom liste, altså med lengde 0"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Legg til, fjern eller endre rekkefølgen for å endre på denne delen av listen."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "lag en liste med"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tilføy et element til listen."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Lag en liste med et vilkårlig antall elementer."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "først"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# fra slutten"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "hent"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hent og fjern"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "siste"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "tilfeldig"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fjern"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnerer det første elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returner elementet på den angitte posisjonen i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnerer det siste elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returnerer et tilfeldig element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fjerner og returnerer det første elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fjerner og returnerer elementet ved en gitt posisjon i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fjerner og returnerer det siste elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fjerner og returnerer et tilfeldig element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fjerner det første elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fjerner et element ved en gitt posisjon i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fjerner det siste elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fjerner et tilfeldig element i en liste."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "til # fra slutten"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "til #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "til siste"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Hent en del av listen"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "Hent de siste # elementene"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "Hent del-listen fra #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Kopiérer en ønsket del av en liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 er det siste elementet."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 er det første elementet."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "finn første forekomst av elementet"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "finn siste forekomst av elementet"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returnerer indeksen av den første/siste forekomsten av elementet i lista. Returnerer %1 hvis ikke funnet."; +Blockly.Msg["LISTS_INLIST"] = "i listen"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 er tom"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnerer sann hvis listen er tom."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lengden på %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnerer lengden til en liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Lag en liste hvor elementet %1 forekommer %2 ganger"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Lager en liste hvor den gitte verdien gjentas et antall ganger."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverser %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverser en kopi av ei liste."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "som"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "sett inn ved"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "sett"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Setter inn elementet i starten av en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Setter inn elementet ved den angitte posisjonen i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Tilføy elementet til slutten av en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Setter inn elementet ved en tilfeldig posisjon i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Angir det første elementet i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setter inn elementet ved den angitte posisjonen i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Angir det siste elementet i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Angir et tilfeldig element i en liste."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "stigende"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "synkende"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sorter %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sorter en kopi av en liste."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetisk, ignorert store/små bokstaver"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerisk"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetisk"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lag liste av tekst"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "lag tekst av liste"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Føy sammen en liste tekster til én tekst, avskilt av en avgrenser."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Splitt teksten til en liste med tekster, brutt ved hver avgrenser."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "med avgrenser"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "usann"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnerer enten sann eller usann."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "sann"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Returnerer sann hvis begge inputene er like hverandre."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Returnerer sant hvis det første argumentet er større enn den andre argumentet."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Returnerer sant hvis det første argumentet er større enn eller likt det andre argumentet."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Returnerer sant hvis det første argumentet er mindre enn det andre argumentet."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Returnerer sant hvis det første argumentet er mindre enn eller likt det andre argumentet."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Returnerer sant hvis begge argumentene er ulike hverandre."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ikke %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returnerer sant hvis argumentet er usant. Returnerer usant hvis argumentet er sant."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returnerer null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "og"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "eller"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Returnerer sant hvis begge argumentene er sanne."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Returnerer sant hvis minst ett av argumentene er sant."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "hvis usant"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "hvis sant"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Sjekk betingelsen i 'test'. Hvis betingelsen er sann, da returneres 'hvis sant' verdien. Hvis ikke returneres 'hvis usant' verdien."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://no.wikipedia.org/wiki/Aritmetikk"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnerer summen av to tall."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returner kvotienten av to tall."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returner differansen mellom to tall."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returner produktet av to tall."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Returner det første tallet opphøyd i den andre tallet."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 av X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "endre %1 ved %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Addere et tall til variabelen '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Returner en av felleskonstantene π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), eller ∞ (uendelig)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begrense %1 lav %2 høy %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begrens et tall til å være mellom de angitte grenseverdiene (inklusiv)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "er delelig med"; +Blockly.Msg["MATH_IS_EVEN"] = "er et partall"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "er negativer negativt"; +Blockly.Msg["MATH_IS_ODD"] = "er et oddetall"; +Blockly.Msg["MATH_IS_POSITIVE"] = "er positivt"; +Blockly.Msg["MATH_IS_PRIME"] = "er et primtall"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Sjekk om et tall er et partall, oddetall, primtall, heltall, positivt, negativt, eller om det er delelig med et annet tall. Returnerer sant eller usant."; +Blockly.Msg["MATH_IS_WHOLE"] = "er et heltall"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resten av %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Returner resten fra delingen av to tall."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Et tall."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "gjennomsnittet av listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum av liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medianen til listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum av listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Listens typetall"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "tilfeldig element i listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardavviket til listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summen av listen"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Returner det aritmetiske gjennomsnittet av tallene i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Returner det største tallet i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Returner listens median."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Returner det minste tallet i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Returner en liste av de vanligste elementene i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returner et tilfeldig element fra listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Returner listens standardavvik."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Returner summen av alle tallene i listen."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "tilfeldig flyttall"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Returner et tilfeldig flyttall mellom 0.0 (inkludert) og 1.0 (ikke inkludert)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "Et tilfeldig heltall mellom %1 og %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Returner et tilfeldig tall mellom de to spesifiserte grensene, inkludert de to."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "avrunding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rund ned"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rund opp"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Avrund et tall ned eller opp."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluttverdi"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratrot"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returner absoluttverdien av et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Returner e opphøyd i et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Returner den naturlige logaritmen til et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returner base-10 logaritmen til et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returner det negative tallet."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Returner 10 opphøyd i et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returner kvadratroten av et tall."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Returner arccosinus til et tall."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Returner arcsinus til et tall."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Returner arctangens til et tall."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Returner cosinus av en vinkel (ikke radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Returner sinus av en vinkel (ikke radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Returner tangenten av en vinkel (ikke radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Oppretter fargevariabel …"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Oppretter tallvariabel …"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Oppretter strengvariabel …"; +Blockly.Msg["NEW_VARIABLE"] = "Opprett variabel…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nytt variabelnavn:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ny variabeltype:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "tillat uttalelser"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kjør den brukerdefinerte funksjonen '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kjør den brukerdefinerte funksjonen'%1' og bruk resultatet av den."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Opprett '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beskriv denne funksjonen…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "gjør noe"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "til"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Opprett en funksjon som ikke har noe resultat."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returner"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Oppretter en funksjon som har et resultat."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advarsel: Denne funksjonen har duplikate parametere."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Marker funksjonsdefinisjonen"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Hvis en verdi er sann, returner da en annen verdi."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advarsel: Denne blokken kan bare benyttes innenfor en funksjonsdefinisjon."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Navn på parameter:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Legg til en input til funksjonen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "parametere"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Legg til, fjern eller endre rekkefølgen på input til denne funksjonen."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Gjør om"; +Blockly.Msg["REMOVE_COMMENT"] = "Fjern kommentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Gi nytt navn til variabel…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Endre navnet til alle '%1' variabler til:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "til %1, legg til teksten %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tilføy tekst til variabelen '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "til små bokstaver"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "til store forbokstaver"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "til STORE BOKSTAVER"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Returnerer en kopi av teksten der store og små bokstaver er byttet om."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hent første bokstav"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hent bokstav # fra slutten"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hent bokstav #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hent den siste bokstaven"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hent en tilfeldig bokstav"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "i teksten %1, %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returnerer bokstaven på angitt plassering."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "tell %1 i %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Tell hvor mange ganger noe tekst dukker opp i annen tekst."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Legg til et element til teksten."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "føy sammen"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Legg til, fjern eller forandre rekkefølgen for å forandre på denne tekstblokken."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "til bokstav # fra slutten"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "til bokstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "til siste bokstav"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "i tekst"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "hent delstreng fra første bokstav"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hent delstreng fra bokstav # fra slutten"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hent delstreng fra bokstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returnerer den angitte delen av teksten."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "finn første forekomst av tekst"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "finn siste forekomst av tekst"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "i teksten %1, %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returnerer posisjonen for første/siste forekomsten av den første tekst i den andre teksten. Returnerer %1 hvis teksten ikke blir funnet."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 er tom"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnerer sann hvis den angitte teksten er tom."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "lag tekst med"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Opprett en tekst ved å sette sammen et antall elementer."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lengden av %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returnerer antall bokstaver (inkludert mellomrom) i den angitte teksten."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "skriv ut %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Skriv ut angitt tekst, tall eller annet innhold."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Be brukeren om et tall."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Spør brukeren om tekst."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "spør om et tall med en melding"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "spør om tekst med en melding"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "erstatt %1 med %2 i %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Erstatter alle forekomster av noe tekst i en annen tekst."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverser %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverserer rekkefølgen på tegnene i teksten."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En bokstav, ett ord eller en linje med tekst."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "fjern mellomrom fra begge sider av"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "fjern mellomrom fra venstre side av"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "fjern mellomrom fra høyre side av"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returner en kopi av teksten med mellomrom fjernet fra en eller begge sidene."; +Blockly.Msg["TODAY"] = "I dag"; +Blockly.Msg["UNDO"] = "Angre"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Opprett 'sett %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnerer verdien av denne variabelen."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "sett %1 til %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Opprett 'hent %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setter verdien av denne variablen lik parameteren."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "En variabel med navn «%1» finnes allerede."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "En variabel med navn «%1» finnes allerede for en annen type: «%2»."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Si noe …"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ne.js b/blockly/msg/ne.js new file mode 100644 index 00000000000..c4bfc96c789 --- /dev/null +++ b/blockly/msg/ne.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "टिप्पणी थप्ने"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "मान बदल्नुहोस :"; +Blockly.Msg["CLEAN_UP"] = "ब्लकहरू हटाउनुहोस्"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ब्लक भत्काउनुहोस्"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ब्लक भत्काउनुहोस्"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = " रङ्ग १"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "रङ्ग २"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "अनुपात"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "जुनसुकै रङ्ग"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "निलो"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "हरियो"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "रातो"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "यस रङ्गको"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "ब्लक हटाउने"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = " %1 ब्लकहरू हटाउने"; +Blockly.Msg["DIALOG_CANCEL"] = "रद्द गर्ने"; +Blockly.Msg["DIALOG_OK"] = "हुन्छ"; +Blockly.Msg["DISABLE_BLOCK"] = "ब्लकलाई सक्रिय पार्ने"; +Blockly.Msg["DUPLICATE_BLOCK"] = "प्रतिलिपी गर्ने"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ब्लकलाई निश्कृयपार्ने"; +Blockly.Msg["EXPAND_ALL"] = "ब्लकहरू फिजाउने"; +Blockly.Msg["EXPAND_BLOCK"] = "ब्लकहरू फिजाउने"; +Blockly.Msg["EXTERNAL_INPUTS"] = "बाह्य इन्पुटहरू"; +Blockly.Msg["HELP"] = "सहायता"; +Blockly.Msg["INLINE_INPUTS"] = "इनलाइन इन्पुटहरू"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "जोर संख्या हो"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ऋणात्मक संख्या हो"; +Blockly.Msg["MATH_IS_ODD"] = "बिजोर संख्या हो"; +Blockly.Msg["MATH_IS_POSITIVE"] = "धनात्मक संख्या हो"; +Blockly.Msg["MATH_IS_PRIME"] = "रुढ संख्या हो"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "नयाँ भेरिएबल ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "नयाँ भेरिएबल नाम:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "इन्पुटहरू"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "पुन: कायम गर्ने"; +Blockly.Msg["REMOVE_COMMENT"] = "टिप्पणी हटाउने"; +Blockly.Msg["RENAME_VARIABLE"] = "भेरिएबल पुन: नामाकरण गर्ने ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "आज"; +Blockly.Msg["UNDO"] = "रद्द गर्ने"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "वस्तु"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/nl.js b/blockly/msg/nl.js new file mode 100644 index 00000000000..4b8dcfc2543 --- /dev/null +++ b/blockly/msg/nl.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Opmerking toevoegen"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "De variabele \"%1\" kan niet verwijderd worden omdat die onderdeel uitmaakt van de definitie van de functie \"%2\""; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Waarde wijzigen:"; +Blockly.Msg["CLEAN_UP"] = "Blokken opschonen"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Samengevouwen blokken bevatten waarschuwingen."; +Blockly.Msg["COLLAPSE_ALL"] = "Blokken samenvouwen"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Blok samenvouwen"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "kleur 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "kleur 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "verhouding"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mengen"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mengt twee kleuren samen met een bepaalde verhouding (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://nl.wikipedia.org/wiki/Kleur"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Kies een kleur in het palet."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "willekeurige kleur"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Kies een willekeurige kleur."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blauw"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "groen"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rood"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "kleuren met"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Maak een kleur met de opgegeven hoeveelheid rood, groen en blauw. Alle waarden moeten tussen 0 en 100 liggen."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "uit lus breken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "doorgaan met de volgende iteratie van de lus"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Uit de bovenliggende lus breken."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "De rest van deze lus overslaan en doorgaan met de volgende herhaling."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Waarschuwing: dit blok mag alleen gebruikt worden in een lus."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "voor ieder item %1 in lijst %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Voor ieder item in een lijst, stel de variabele \"%1\" in op het item en voer daarna opdrachten uit."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "rekenen met %1 van %2 tot %3 in stappen van %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Laat de variabele \"%1\" de waarden aannemen van het beginnummer tot het laatste nummer, tellende met het opgegeven interval, en met uitvoering van de opgegeven blokken."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Voeg een voorwaarde toe aan het als-blok."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Voeg een laatste, vang-alles conditie toe aan het als-statement."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Voeg stukken toe, verwijder of wijzig de volgorde om dit \"als\"-blok te wijzigen."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "anders"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "anders als"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "als"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Als een waarde waar is, voer dan opdrachten uit."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Als een waarde waar is, voert dan het eerste blok met opdrachten uit. Voer andere het tweede blok met opdrachten uit."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Als de eerste waarde waar is, voer dan het eerste blok met opdrachten uit. Voer anders, als de tweede waarde waar is, het tweede blok met opdrachten uit."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Als de eerste waarde \"waar\" is, voer dan het eerste blok uit. Voer anders wanneer de tweede waarde \"waar\" is, het tweede blok uit. Als geen van beide waarden waar zijn, voer dan het laatste blok uit."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://nl.wikipedia.org/wiki/Repetitie_(informatica)#For_en_Foreach"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "voer uit"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 keer herhalen"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Voer een aantal opdrachten meerdere keren uit."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "herhalen totdat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "herhalen zolang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Terwijl een waarde onwaar is de volgende opdrachten uitvoeren."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Terwijl een waarde waar is de volgende opdrachten uitvoeren."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Alle %1 blokken verwijderen?"; +Blockly.Msg["DELETE_BLOCK"] = "Blok verwijderen"; +Blockly.Msg["DELETE_VARIABLE"] = "Verwijder de variabele \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1 gebruiken van de variabele \"%2\" verwijderen?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 blokken verwijderen"; +Blockly.Msg["DIALOG_CANCEL"] = "Annuleren"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Blok uitschakelen"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliceren"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Opmerking dupliceren"; +Blockly.Msg["ENABLE_BLOCK"] = "Blok inschakelen"; +Blockly.Msg["EXPAND_ALL"] = "Blokken uitvouwen"; +Blockly.Msg["EXPAND_BLOCK"] = "Blok uitvouwen"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Externe invoer"; +Blockly.Msg["HELP"] = "Hulp"; +Blockly.Msg["INLINE_INPUTS"] = "Inline invoer"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "maak een lege lijst"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Geeft een lijst terug met lengte 0, zonder items"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lijst"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Voeg stukken toe, verwijder ze of wijzig de volgorde om dit lijstblok aan te passen."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "maak een lijst met"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Voeg iets toe aan de lijst."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Maak een lijst met een willekeurig aantal items."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "eerste"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# van einde"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "haal op"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "haal op en verwijder"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "laatste"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "willekeurig"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "verwijder"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Geeft het eerste item in een lijst terug."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Geeft het item op de opgegeven positie in een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Geeft het laatste item in een lijst terug."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Geeft een willekeurig item uit een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Geeft het laatste item in een lijst terug en verwijdert het."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Geeft het item op de opgegeven positie in een lijst terug en verwijdert het."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Geeft het laatste item uit een lijst terug en verwijdert het."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Geeft een willekeurig item in een lijst terug en verwijdert het."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Verwijdert het eerste item in een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Verwijdert het item op de opgegeven positie in een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Verwijdert het laatste item uit een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Verwijdert een willekeurig item uit een lijst."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "naar # vanaf einde"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "naar item"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "naar laatste"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "haal sublijst op vanaf eerste"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "haal sublijst op van positie vanaf einde"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "haal sublijst op vanaf positie"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Maakt een kopie van het opgegeven deel van de lijst."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Item %1 is het laatste item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Item %1 is het eerste item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "zoek eerste voorkomen van item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "zoek laatste voorkomen van item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Geeft de index terug van het eerste of laatste voorkomen van een item in de lijst. Geeft %1 terug als het item niet is gevonden."; +Blockly.Msg["LISTS_INLIST"] = "in lijst"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is leeg"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Geeft waar terug als de lijst leeg is."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lengte van %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Geeft de lengte van een lijst terug."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Maak lijst met item %1, %2 keer herhaald"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Maakt een lijst die bestaat uit de opgegeven waarde, het opgegeven aantal keer herhaald."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 omkeren"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Keert een kopie van een lijst om."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "als"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "tussenvoegen op"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "stel in"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Voegt het item toe aan het begin van de lijst."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Voegt het item op een opgegeven positie in een lijst in."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Voeg het item aan het einde van een lijst toe."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Voegt het item op een willekeurige positie in de lijst in."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Stelt het eerste item in een lijst in."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Zet het item op de opgegeven positie in de lijst."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Stelt het laatste item van een lijst in."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Stelt een willekeurig item uit de lijst in."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "oplopend"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "aflopend"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sorteer %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sorteer een kopie van een lijst."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetisch, negeer hoofd-/kleine letters"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeriek"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetisch"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lijst maken van tekst"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tekst maken van lijst"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Lijst van tekstdelen samenvoegen in één stuk tekst, waarbij de tekstdelen gescheiden zijn door een scheidingsteken."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tekst splitsen in een lijst van teksten op basis van een scheidingsteken."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "met scheidingsteken"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "onwaar"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Geeft \"waar\" of \"onwaar\" terug."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "waar"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://nl.wikipedia.org/wiki/Ongelijkheid_(wiskunde)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Geeft \"waar\", als beide waarden gelijk aan elkaar zijn."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Geeft \"waar\" terug als de eerste invoer meer is dan de tweede invoer."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Geeft \"waar\" terug als de eerste invoer groter is of gelijk aan de tweede invoer."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Geeft \"waar\" als de eerste invoer kleiner is dan de tweede invoer."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Geeft \"waar\" terug als de eerste invoer kleiner of gelijk is aan de tweede invoer."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Geeft \"waar\" terug als de waarden niet gelijk zijn aan elkaar."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "niet %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Geeft \"waar\" terug als de invoer \"onwaar\" is. Geeft \"onwaar\" als de invoer \"waar\" is."; +Blockly.Msg["LOGIC_NULL"] = "niets"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Geeft niets terug."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "en"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "of"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Geeft waar als beide waarden waar zijn."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Geeft \"waar\" terug als in ieder geval één van de waarden waar is."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "als onwaar"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "als waar"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Test de voorwaarde in \"test\". Als de voorwaarde \"waar\" is, geef de waarde van \"als waar\" terug; geef anders de waarde van \"als onwaar\" terug."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://nl.wikipedia.org/wiki/Rekenen"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Geeft de som van 2 getallen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Geeft de gedeelde waarde van twee getallen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Geeft het verschil van de twee getallen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Geeft het product terug van de twee getallen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Geeft het eerste getal tot de macht van het tweede getal."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 van X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Geef de boogtangens van punt (X, Y) terug in graden tussen -180 naar 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 wijzigen met %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Voegt een getal toe aan variabele \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://nl.wikipedia.org/wiki/Wiskundige_constante"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Geeft een van de vaak voorkomende constante waardes: π (3.141…), e (2.718…), φ (1.618…), √2 (1.414…), √½ (0.707…), of ∞ (oneindig)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "beperk %1 van minimaal %2 tot maximaal %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Beperk een getal tussen de twee opgegeven limieten (inclusief)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is deelbaar door"; +Blockly.Msg["MATH_IS_EVEN"] = "is even"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negatief"; +Blockly.Msg["MATH_IS_ODD"] = "is oneven"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positief"; +Blockly.Msg["MATH_IS_PRIME"] = "is priemgetal"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Test of een getal even, oneven, een priemgetal, geheel, positief of negatief is, of deelbaar is door een bepaald getal. Geeft \"waar\" of \"onwaar\"."; +Blockly.Msg["MATH_IS_WHOLE"] = "is geheel getal"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://nl.wikipedia.org/wiki/Modulair_rekenen"; +Blockly.Msg["MATH_MODULO_TITLE"] = "restgetal van %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Geeft het restgetal van het resultaat van de deling van de twee getallen."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://nl.wikipedia.org/wiki/Getal_%28wiskunde%29"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Een getal."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "gemiddelde van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "hoogste uit lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediaan van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "laagste uit lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modi van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "willekeurige item van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standaarddeviatie van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "som van lijst"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Geeft het gemiddelde terug van de numerieke waardes in een lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Geeft het grootste getal in een lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Geeft de mediaan in de lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Geeft het kleinste getal uit een lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Geeft een lijst van de meest voorkomende onderdelen in de lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Geeft een willekeurig item uit de lijst terug."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Geeft de standaardafwijking van de lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Geeft de som van alle getallen in de lijst."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://nl.wikipedia.org/wiki/Toevalsgenerator"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "willekeurige fractie"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Geeft een willekeurige fractie tussen 0.0 (inclusief) en 1.0 (exclusief)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://nl.wikipedia.org/wiki/Toevalsgenerator"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "willekeurig geheel getal van %1 tot %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Geeft een willekeurig getal tussen de 2 opgegeven limieten in, inclusief."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://nl.wikipedia.org/wiki/Afronden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "afronden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "naar beneden afronden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "omhoog afronden"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rondt een getal af omhoog of naar beneden."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://nl.wikipedia.org/wiki/Vierkantswortel"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "wortel"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Geeft de absolute waarde van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Geeft e tot de macht van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Geeft het natuurlijk logaritme van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Geeft het logaritme basis 10 van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Geeft de negatief van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Geeft 10 tot de macht van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Geeft de wortel van een getal."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://nl.wikipedia.org/wiki/Goniometrische_functie"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Geeft de arccosinus van een getal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Geeft de arcsinus van een getal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Geeft de arctangens van een getal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Geeft de cosinus van een graad (geen radialen)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Geeft de sinus van een graad (geen radialen)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Geeft de tangens van een graad (geen radialen)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Creëer kleurvariabele"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Creëer numeriek variabele"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Creëer tekstvariabele"; +Blockly.Msg["NEW_VARIABLE"] = "Variabele maken..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nieuwe variabelenaam:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nieuw soort variabele"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "statements toestaan"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "met:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Voer de door de gebruiker gedefinieerde functie \"%1\" uit."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Voer de door de gebruiker gedefinieerde functie \"%1\" uit en gebruik de uitvoer."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "met:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Maak \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Deze functie beschrijven..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "doe iets"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "om"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Maakt een functie zonder uitvoer."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "uitvoeren"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Maakt een functie met een uitvoer."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Waarschuwing: deze functie heeft parameters met dezelfde naam."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Accentueer functiedefinitie"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Als de eerste waarde \"waar\" is, geef dan de tweede waarde terug."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Waarschuwing: dit blok mag alleen gebruikt worden binnen de definitie van een functie."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "invoernaam:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Een invoer aan de functie toevoegen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ingangen"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Invoer van deze functie toevoegen, verwijderen of herordenen."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Opnieuw"; +Blockly.Msg["REMOVE_COMMENT"] = "Opmerking verwijderen"; +Blockly.Msg["RENAME_VARIABLE"] = "Variabele hernoemen..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Alle variabelen \"%1\" hernoemen naar:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "voor%1 voeg tekst toe van %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Voeg tekst toe aan de variabele \"%1\"."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "naar kleine letters"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "naar Hoofdletter Per Woord"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "naar HOOFDLETTERS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Geef een kopie van de tekst met veranderde hoofdletters terug."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "haal eerste letter op"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "haal letter # op vanaf einde"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "haal letter # op"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "haal laatste letter op"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "haal willekeurige letter op"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in tekst %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Geeft de letter op de opgegeven positie terug."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 in %2 tellen"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Tel hoe vaak bepaalde tekst voorkomt in andere tekst."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Voegt een item aan de tekst toe."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "samenvoegen"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Toevoegen, verwijderen of volgorde wijzigen van secties om dit tekstblok opnieuw in te stellen."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "van letter # tot einde"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "naar letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "naar laatste letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in tekst"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "haal subtekst op van eerste letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "haal subtekst op vanaf letter # vanaf einde"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "haal subtekst op vanaf letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Geeft het opgegeven onderdeel van de tekst terug."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "zoek eerste voorkomen van tekst"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "zoek het laatste voorkomen van tekst"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in tekst %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Geeft de index terug van het eerste of laatste voorkomen van de eerste tekst in de tweede tekst. Geeft %1 terug als de tekst niet gevonden is."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is leeg"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Geeft \"waar\" terug, als de opgegeven tekst leeg is."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "maak tekst met"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Maakt een stuk tekst door één of meer items samen te voegen."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lengte van %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Geeft het aantal tekens terug (inclusief spaties) in de opgegeven tekst."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "tekst weergeven: %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Drukt de opgegeven tekst, getal of een andere waarde af."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Vraagt de gebruiker om een getal in te voeren."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Vraagt de gebruiker om invoer."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "vraagt de gebruiker om een getal met de tekst"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "vraagt om invoer met bericht"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "vervang %1 door %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Vervang alle voorkomens van tekst in een andere tekst."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 omkeren"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Keert de volgorde van de tekens in de tekst om."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://nl.wikipedia.org/wiki/String_%28informatica%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Een letter, woord of een regel tekst."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "spaties van beide kanten afhalen van"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "spaties van de linkerkant verwijderen van"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "spaties van de rechterkant verwijderen van"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Geeft een kopie van de tekst met verwijderde spaties van één of beide kanten."; +Blockly.Msg["TODAY"] = "Vandaag"; +Blockly.Msg["UNDO"] = "Ongedaan maken"; +Blockly.Msg["UNNAMED_KEY"] = "zonder naam"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Maak \"verander %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Geeft de waarde van deze variabele."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "stel %1 in op %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Maak 'opvragen van %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Verandert de waarde van de variabele naar de waarde van de invoer."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Er bestaat al een variabele met de naam \"%1\"."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Een variabele met de naam '%1' bestaat al voor een ander soort variabele: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly werkruimte"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Zeg iets..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/oc.js b/blockly/msg/oc.js new file mode 100644 index 00000000000..1a5735d7b87 --- /dev/null +++ b/blockly/msg/oc.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Apondre un comentari"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modificar la valor :"; +Blockly.Msg["CLEAN_UP"] = "Netejar los blòts"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Redusir los blòts"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Redusir lo blòt"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mesclar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://oc.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Causir una color dins la paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatòria"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Causir una color a l'azard."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verd"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "roge"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "coloriar amb"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "quitar la bocla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "passar a l’iteracion de bocla seguenta"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sortir de la bocla englobanta."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per cada element %1 dins la lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "comptar amb %1 de %2 a %3 per %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Apondre una condicion al blòt 'se'."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "siquenon"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "siquenon se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://oc.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "far"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 còps"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir fins a"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir tant que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Suprimir totes los %1 blòts ?"; +Blockly.Msg["DELETE_BLOCK"] = "Suprimir lo blòt"; +Blockly.Msg["DELETE_VARIABLE"] = "Suprimir la variabla '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Suprimir %1 blòts"; +Blockly.Msg["DIALOG_CANCEL"] = "Anullar"; +Blockly.Msg["DIALOG_OK"] = "D'acòrdi"; +Blockly.Msg["DISABLE_BLOCK"] = "Desactivar lo blòt"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Activar lo blòt"; +Blockly.Msg["EXPAND_ALL"] = "Desvolopar los blòts"; +Blockly.Msg["EXPAND_BLOCK"] = "Desvolopar lo blòt"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas extèrnas"; +Blockly.Msg["HELP"] = "Ajuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas en linha"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear una lista voida"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear una lista amb"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Apondre un element a la lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primièr"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dempuèi la fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obténer"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obténer e suprimir"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "darrièr"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatòri"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "suprimit"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Renvia lo primièr element dins una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Renvia l'element de la posicion especificada dins la lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "fins a # dempuèi la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fins a #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "fins a la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es lo darrièr element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es lo primièr element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "dins la lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 es voida"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitud de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inversar %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inversar la còpia d’una lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "coma"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir en"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "metre"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "creissent"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descreissent"; +Blockly.Msg["LISTS_SORT_TITLE"] = "triar %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "amb lo separador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fals"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Renvia siá verai siá fals."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verai"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fr.wikipedia.org/wiki/Inegalite_(mathematiques)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Renviar verai se las doas entradas son egalas."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Renviar verai se las doas entradas son diferentas."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "pas %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "nul"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Renvia nul."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Renviar verai se las doas entradas son vertadièras."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "tèst"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se fals"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verai"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://oc.wikipedia.org/wiki/Aritmetica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Renvia la soma dels dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "incrementar %1 per %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrénher %1 entre %2 e %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "es devesible per"; +Blockly.Msg["MATH_IS_EVEN"] = "es par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "es negatiu"; +Blockly.Msg["MATH_IS_ODD"] = "es impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "es positiu"; +Blockly.Msg["MATH_IS_PRIME"] = "es primièr"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "es entièr"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "residú de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://oc.wikipedia.org/wiki/Nombre"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nombre."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mejana de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximum de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "majoritaris de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element aleatòri de lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "escart-tipe de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma de la lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraccion aleatòria"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredondir"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredondir a l’inferior"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredondir al superior"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fr.wikipedia.org/wiki/Racine_carree"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raiç carrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Renvia la valor absoluda d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Renvia a la poténcia d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Renvia lo logaritme natural d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Renvia lo logaritme decimal d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Renvia l’opausat d’un nombre"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Renvia 10 a la poténcia d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Renvia la raiç carrada d’un nombre."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Renvia l’arccosinus d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Renvia l’arcsinus d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Renvia l’arctangenta d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Renvia lo cosinus d’un angle en grases (pas en radians)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Renvia lo sinus d’un angle en grases (pas en radians)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Renvia la tangenta d’un angle en grases (pas en radians)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear una variabla color…"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crear una variabla nombre…"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear una variabla cadena…"; +Blockly.Msg["NEW_VARIABLE"] = "Crear una variabla..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nom de la novèla variabla :"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Novèl tipe de variabla :"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "autorizar los òrdres"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "amb :"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "amb :"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "far quicòm"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "a"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorn"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nom de l’entrada :"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Refar"; +Blockly.Msg["REMOVE_COMMENT"] = "Suprimir un comentari"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomenar la variabla…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomenar totas las variablas « %1 » a :"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 apondre lo tèxte %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "en minusculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "en Majuscula Al Començament De Cada Mot"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "en MAJUSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obténer la primièra letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obténer la letra # dempuèi la fin"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obténer la letra #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obténer la darrièra letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obténer una letra a l'azard"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "dins lo tèxte %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Renvia la letra a la posicion indicada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "nombre %1 sus %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "jónher"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "fins a la letra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "fins a la darrièra letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "dins lo tèxte"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "dins lo tèxte %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 es void"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear un tèxte amb"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longor de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "afichar %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inversar %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una letra, un mot o una linha de tèxte."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "suprimir los espacis dels dos costats"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Uèi"; +Blockly.Msg["UNDO"] = "Anullar"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crear 'fixar %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "fixar %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'obténer %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Existís ja una variabla nomenada \"%1\"."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/olo.js b/blockly/msg/olo.js new file mode 100644 index 00000000000..ae11c026ba6 --- /dev/null +++ b/blockly/msg/olo.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ližätä kommentarii"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muuttua merkitys:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "väri 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "väri 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "sinine"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "vihandu"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruskei"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Väri"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sit"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sit gu"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "gu"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "rua"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Hylgiä"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopiiruija"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Kyzy abuu"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "valeh"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tozi"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "da"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "libo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ei olle tozi"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ollou tozi"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "on negatiivine"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "on pozitiivine"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Poistua kommentarii"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "eči kirjain #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "luaji tekstu"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Kirjain, sana libo riädy tekstua."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Tänäpäi"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/pa.js b/blockly/msg/pa.js new file mode 100644 index 00000000000..38f329cc0c8 --- /dev/null +++ b/blockly/msg/pa.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ਟਿੱਪਣੀ ਕਰੋ"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ਮੁੱਲ ਬਦਲੋ:"; +Blockly.Msg["CLEAN_UP"] = "ਬਲਾਕ ਸਾਫ਼ ਕਰੋ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ਬਲਾਕਾਂ ਨੂੰ ਸਮੇਟੋ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ਬਲਾਕ ਸਮੇਟੋ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ਰੰਗ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ਰੰਗ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ਅਨੁਪਾਤ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ਮਿਸ਼ਰਣ ਕਰੋ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ਦਿੱਤੇ ਅਨੁਪਾਤ (0.0 - 1.0) ਅਨੁਸਾਰ ਦੋ ਰੰਗ ਮਿਲਾਓ।"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ਰੰਗ-ਫੱਟੀ ਵਿੱਚੋਂ ਰੰਗ ਚੁਣੋ"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ਰਲ਼ਵਾਂ ਰੰਗ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ਰਲ਼ਵਾਂ ਰੰਗ ਚੁਣੋ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ਨੀਲਾ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ਹਰਾ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ਲਾਲ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ਰੰਗ ਬਣਾਉਣ ਲਈ ਲਾਲ, ਹਰੇ ਅਤੇ ਨੀਲੇ ਨੂੰ ਨਿਰਧਾਰਿਤ ਮਾਤਰਾ ਵਿੱਚ ਮਿਲਾਓ। ਰਲਾਉਣ ਦੀ ਮਾਤਰਾ ਦਾ ਮੁੱਲ 0 ਤੋਂ 100 ਦੇ ਵਿਚਕਾਰ ਹੀ ਰੱਖੋ।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ਹੋਰ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ਜੇ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ਕਰੋ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 ਵਾਰੀ ਦੁਹਰਾਉ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ਕੀ ਸਾਰੇ %1 ਬਲਾਕ ਮਿਟਾਉਣੇ ਹਨ?"; +Blockly.Msg["DELETE_BLOCK"] = "ਬਲਾਕ ਮਿਟਾਉ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ਬਲਾਕ ਮਿਟਾਉ"; +Blockly.Msg["DIALOG_CANCEL"] = "ਰੱਦ ਕਰੋ"; +Blockly.Msg["DIALOG_OK"] = "ਠੀਕ ਹੈ।"; +Blockly.Msg["DISABLE_BLOCK"] = "ਬਲਾਕ ਬੰਦ ਕਰੋ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ਨਕਲ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ਬਲਾਕ ਚਾਲੂ ਕਰੋ"; +Blockly.Msg["EXPAND_ALL"] = "ਬਲਾਕਾਂ ਨੂੰ ਫੈਲਾਉ"; +Blockly.Msg["EXPAND_BLOCK"] = "ਬਲਾਕ ਫੈਲਾਉ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ਬਾਹਰੀ ਇੱਨਪੁੱਟ"; +Blockly.Msg["HELP"] = "ਮਦਦ"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ਪਹਿਲਾ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ਆਖ਼ਰੀ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ਰਲ਼ਵਾਂ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ਘਟਦੇ ਕ੍ਰਮ ਵਿੱਚ"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ਝੂਠ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ਸੱਚ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "ਨੱਲ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ਨੱਲ ਮੋੜਦਾ ਹੈ।"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ਅਤੇ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ਜਾਂ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ਟੈਸਟ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ਜੇ ਝੂਠ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ਜੇ ਸੱਚ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://pa.wikipedia.org/wiki/ਗਿਣਤੀ"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ਦੋ ਅੰਕਾੰ ਦਾ ਜੋੜ ਮੋੜੋ।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ਇੱਕ ਅੰਕ"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://pa.wikipedia.org/wiki/ਵਰਗ_ਮੂਲ"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ਵਰਗ ਮੂਲ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ਇੱਕ ਅੰਕ ਦਾ ਵਰਗ ਮੂਲ ਮੋੜੋ।"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ਮੋੜੋ"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ਮੁੜ ਕਰੋ"; +Blockly.Msg["REMOVE_COMMENT"] = "ਟਿੱਪਣੀ ਹਟਾਉ"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ਅੱਜ"; +Blockly.Msg["UNDO"] = "ਅਣਕੀਤਾ ਕਰੋ"; +Blockly.Msg["UNNAMED_KEY"] = "ਬੇਨਾਮ"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ਸਮੱਗਰੀ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/pl.js b/blockly/msg/pl.js new file mode 100644 index 00000000000..bf61beed16e --- /dev/null +++ b/blockly/msg/pl.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj Komentarz"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nie można usunąć zmiennej '%1', ponieważ jest częścią definicji funkcji '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Zmień wartość:"; +Blockly.Msg["CLEAN_UP"] = "Uporządkuj Bloki"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Zwinięte bloki zawierają ostrzeżenia."; +Blockly.Msg["COLLAPSE_ALL"] = "Zwiń Bloki"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Zwiń Klocek"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "kolor 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "kolor 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporcja"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "wymieszaj"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Miesza dwa kolory w danej proporcji (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Wybierz kolor z palety."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "losowy kolor"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Wybierz kolor w sposób losowy."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "niebieski"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zielony"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "czerwony"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "kolor z"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Utwórz kolor składający sie z podanej ilości czerwieni, zieleni i błękitu. Zakres wartości: 0 do 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "przerwij pętlę"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "przejdź do kolejnej iteracji pętli"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Przerwij działanie pętli."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Pomiń resztę pętli i kontynuuj w kolejnej iteracji."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Uwaga: Ten klocek może być użyty tylko wewnątrz pętli."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "dla każdego elementu %1 listy %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Przypisz zmiennej '%1' kolejno wartość każdego elementu listy, a następnie wykonaj kilka instrukcji."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "licz z %1 od %2 do %3 co %4 (wartość kroku)"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Zmiennej '%1' przypisuje wartości z podanego zakresu z podanym interwałem i wykonuje zadane bloki."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodaj warunek do klocka „jeśli”."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodaj ostatni zawsze prawdziwy warunek do klocka „jeśli”."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność czynności, żeby zmodyfikować ten klocek „jeśli”."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "w przeciwnym razie"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "w przeciwnym razie, jeśli"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jeśli"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jeśli warunek jest spełniony, wykonaj zadane czynności."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jeśli warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, wykonaj drugi blok instrukcji."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, jeśli drugi warunek jest spełniony, wykonaj drugi blok instrukcji."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok czynności. W przeciwnym razie jeśli drugi warunek jest spełniony, wykonaj drugi blok czynności. Jeżeli żaden z warunków nie zostanie spełniony, wykonaj ostatni blok czynności."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "wykonaj"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "powtórz %1 razy"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Wykonaj niektóre instrukcje kilka razy."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "powtarzaj aż do"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "powtarzaj dopóki"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dopóki wyrażenie jest nieprawdziwe, wykonaj zadane czynności."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dopóki wyrażenie jest prawdziwe, wykonaj zadane czynności."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Usunąć wszystkie klocki z %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Usuń Klocek"; +Blockly.Msg["DELETE_VARIABLE"] = "Usuń zmienną '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Usunąć %1 wystąpień zmiennej '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Usuń %1 Bloki(ów)"; +Blockly.Msg["DIALOG_CANCEL"] = "Anuluj"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Wyłącz Klocek"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Powiel"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Zduplikowany komentarz"; +Blockly.Msg["ENABLE_BLOCK"] = "Włącz Blok"; +Blockly.Msg["EXPAND_ALL"] = "Rozwiń Bloki"; +Blockly.Msg["EXPAND_BLOCK"] = "Rozwiń Klocek"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Zewnętrzne Wejścia"; +Blockly.Msg["HELP"] = "Pomoc"; +Blockly.Msg["INLINE_INPUTS"] = "Wbudowane Wejścia"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "utwórz pustą listę"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Zwraca listę o długości 0, nie zawierającą danych"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność sekcji aby przekonfigurować blok tej listy."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "utwórz listę z"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Dodaj element do listy."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Utwórz listę z dowolną ilością elementów."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pierwszy"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od końca"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "pobierz"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "zabierz"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ostatni"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "losowy"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "usuń"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Zwraca pierwszy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Zwraca element z konkretnej pozycji na liście."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Zwraca ostatni element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Zwraca losowy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Usuwa i zwraca pierwszy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Usuwa i zwraca element z określonej pozycji na liście."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Usuwa i zwraca ostatni element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Usuwa i zwraca losowy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Usuwa pierwszy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Usuwa element z określonej pozycji na liście."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Usuwa ostatni element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Usuwa losowy element z listy."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od końca"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do ostatniego"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "utwórz listę podrzędną od pierwszego"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "utwórz listę podrzędną z # od końca"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "utwórz listę podrzędną z #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Tworzy kopię żądanej części listy."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 to ostatni element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 to pierwszy element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "znajdź pierwsze wystąpienie elementu"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "znajdź ostatanie wystąpienie elementu"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Zwraca indeks pierwszego/ostatniego wystąpienia elementu z listy. Zwraca %1, jeśli nie zostanie znaleziony."; +Blockly.Msg["LISTS_INLIST"] = "na liście"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 jest pusta"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Zwraca \"prawda\" jeśli lista jest pusta."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "długość %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Zwraca długość listy."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "utwórz listę powtarzając %1 %2 razy."; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Tworzy listę zawierającą podaną wartość powtórzoną żądaną ilość razy."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "odwróć %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Odwraca kolejność danych w kopii listy."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "jako"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "wstaw w"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ustaw"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Wstawia element na początku listy."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Wstawia element na żądanej pozycji listy."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Dodaj element na koniec listy."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Wstawia element w losowym miejscu na liście."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ustawia pierwszy element na liście."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ustawia element w określonym miejscu na liście."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ustawia ostatni element na liście."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ustawia losowy element na liście."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "rosnąco"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "malejąco"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sortuj %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortuj kopię listy."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetycznie, ignoruj wielkość liter"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerycznie"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetycznie"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "utwórz listę z tekstu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "utwórz tekst z listy"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Łączy listę tekstów w jeden tekst, rozdzielany separatorem."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Rozdziela tekst zgodnie z separatorem tworząc listę z powstałych elementów."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "z separatorem"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fałsz"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Zwraca 'prawda' lub 'fałsz'."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "prawda"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://pl.wikipedia.org/wiki/Nierówność"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Zwraca \"prawda\", jeśli wejścia są identyczne."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Zwraca \"prawda\" jeśli pierwsze wejście jest większe od drugiego."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Zwraca \"prawda\", jeśli pierwsze wejście jest większe lub równe drugiemu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Zwraca \"prawda\" jeśli pierwsze wejście jest mniejsze od drugiego."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Zwraca \"prawda\", jeśli pierwsze wejście jest mniejsze lub równe drugiemu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Zwraca \"prawda\", jeśli wejścia nie są identyczne."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nie %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Zwraca \"prawda\", jeśli wejściu jest \"fałsz\". Zwraca \"fałsz\", jeśli na wejściu jest \"prawda\"."; +Blockly.Msg["LOGIC_NULL"] = "nic"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Zwraca nic."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "lub"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Zwraca \"prawda\" jeśli na obydwóch wejściach jest \"prawda\"."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Zwraca \"prawda\" jeśli co najmniej na jednyk wejściu jest \"prawda\"."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jeśli fałsz"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jeśli prawda"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Sprawdź warunek w „test”. Jeśli warunek jest prawdziwy, to zwróci „jeśli prawda”; jeśli nie jest prawdziwy to zwróci „jeśli fałsz”."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://pl.wikipedia.org/wiki/Arytmetyka"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Zwróć sumę dwóch liczb."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Zwróć iloraz dwóch liczb."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Zwróć różnicę dwóch liczb."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Zwróć iloczyn dwóch liczb."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Zwróć pierwszą liczbę podniesioną do potęgi o wykładniku drugiej liczby."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Zwraca arcus tangens punktu (X, Y) w stopniach od -180 do 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "zmień %1 o %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodaj liczbę do zmiennej '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://pl.wikipedia.org/wiki/Stała_(matematyka)"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Zwróć jedną wspólną stałą: π (3.141), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) lub ∞ (nieskończoność)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ogranicz %1 z dołu %2 z góry %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ogranicz liczbę, aby była w określonych granicach (włącznie)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "/"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "jest podzielna przez"; +Blockly.Msg["MATH_IS_EVEN"] = "jest parzysta"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "jest ujemna"; +Blockly.Msg["MATH_IS_ODD"] = "jest nieparzysta"; +Blockly.Msg["MATH_IS_POSITIVE"] = "jest dodatnia"; +Blockly.Msg["MATH_IS_PRIME"] = "jest liczbą pierwszą"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Sprawdź, czy liczba jest parzysta, nieparzysta, pierwsza, całkowita, dodatnia, ujemna, lub czy jest podzielna przez podaną liczbę. Zwraca wartość \"prawda\" lub \"fałsz\"."; +Blockly.Msg["MATH_IS_WHOLE"] = "jest liczbą całkowitą"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://pl.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "reszta z dzielenia %1 przez %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Zwróć resztę z dzielenia dwóch liczb przez siebie."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Liczba."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "średnia elementów listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksymalna wartość z listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimalna wartość z listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "dominanty listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "losowy element z listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "odchylenie standardowe listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma elementów listy"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Zwróć średnią (średnią arytmetyczną) wartości liczbowych z listy."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Zwróć największą liczbę w liście."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Zwróć medianę listy."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Zwróć najmniejszą liczbę w liście."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Zwróć listę najczęściej występujących elementów w liście."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Zwróć losowy element z listy."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Zwróć odchylenie standardowe listy."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Zwróć sumę wszystkich liczb z listy."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "losowy ułamek"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Zwróć losowy ułamek między 0.0 (włącznie), a 1.0 (wyłącznie)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "losowa liczba całkowita od %1 do %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Zwróć losową liczbę całkowitą w ramach dwóch wyznaczonych granic, włącznie."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://pl.wikipedia.org/wiki/Zaokrąglanie"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokrąglij"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokrąglij w dół"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokrąglij w górę"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokrąglij w górę lub w dół."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://pl.wikipedia.org/wiki/Pierwiastek_kwadratowy"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "wartość bezwzględna"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "pierwiastek kwadratowy"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Zwróć wartość bezwzględną danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Zwróć e do potęgi danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Zwróć logarytm naturalny danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Zwraca logarytm dziesiętny danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Zwróć negację danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Zwróć 10 do potęgi danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Zwróć pierwiastek kwadratowy danej liczby."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctg"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://pl.wikipedia.org/wiki/Funkcje_trygonometryczne"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tg"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Zwróć arcus cosinus danej liczby."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Zwróć arcus sinus danej liczby."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Zwróć arcus tangens danej liczby."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Zwróć wartość cosinusa o stopniu (nie w radianach)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Zwróć wartość sinusa o stopniu (nie w radianach)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Zwróć tangens o stopniu (nie w radianach)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Utwórz zmienną colour"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Utwórz zmienną typu number"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Utwórz zmienną typu string"; +Blockly.Msg["NEW_VARIABLE"] = "Utwórz zmienną..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nowa nazwa zmiennej:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nowy typ zmiennej:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "zezwól na czynności"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "z:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://pl.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Uruchom zdefiniowaną przez użytkownika funkcję '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://pl.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Uruchom zdefiniowaną przez użytkownika funkcję '%1' i użyj jej wyjścia."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "z:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Utwórz '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opisz tę funkcję..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "zrób coś"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "do"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Tworzy funkcję nie posiadającą wyjścia."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "zwróć"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Tworzy funkcję posiadającą wyjście."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Uwaga: Ta funkcja ma powtórzone parametry."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Podświetl definicję funkcji"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jeśli warunek jest spełniony zwróć drugą wartość."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Uwaga: Ten klocek może być używany tylko w definicji funkcji."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nazwa wejścia:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Dodaj wejście do funkcji."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "wejścia"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność wejść tej funkcji."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Ponów"; +Blockly.Msg["REMOVE_COMMENT"] = "Usuń komentarz"; +Blockly.Msg["RENAME_VARIABLE"] = "Zmień nazwę zmiennej..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Zmień nazwy wszystkich '%1' zmiennych na:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "dodaj tekst %2 do %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Dołącz tekst do zmiennej '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na małe litery"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Pierwsza Duża"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na WIELKIE LITERY"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Zwraca kopię tekstu z odwruconą wielkością liter."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "pobierz pierwszą literę"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "pobierz literę # od końca"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "pobierz literę #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "pobierz ostatnią literę"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "pobierz losową literę"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "w tekście %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Zwraca literę z określonej pozycji."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "policz %1 w %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Liczy ile razy dany tekst występuje w innym tekście."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Dodaj element do tekstu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "połącz"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność sekcji, aby zmodyfikować klocek tekstowy."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do # litery od końca"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do # litery"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do ostatniej litery"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "w tekście"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "pobierz podciąg od pierwszej litery"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "pobierz podciąg od # litery od końca"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "pobierz podciąg od # litery"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Zwraca określoną część tekstu."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "znajdź pierwsze wystąpienie tekstu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "znajdź ostatnie wystąpienie tekstu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "w tekście %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Zwraca indeks pierwszego/ostatniego wystąpienia pierwszego tekstu w drugim tekście. Zwraca wartość %1, jeśli tekst nie został znaleziony."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 jest pusty"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Zwraca prawda (true), jeśli podany tekst jest pusty."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "utwórz tekst z"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tworzy fragment tekstu, łącząc ze sobą dowolną liczbę tekstów."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "długość %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Zwraca liczbę liter (łącznie ze spacjami) w podanym tekście."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "wydrukuj %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Wyświetl określony tekst, liczbę lub inną wartość."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Zapytaj użytkownika o liczbę."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Zapytaj użytkownika o jakiś tekst."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "poproś o liczbę z tą wiadomością"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "poproś o tekst z tą wiadomością"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamień %1 na %2 w %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zastąp wszystkie wystąpienia danego tekstu innym."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "odwróć %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Odwraca kolejność znaków w tekście."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://pl.wikipedia.org/wiki/Tekstowy_typ_danych"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Litera, wyraz lub linia tekstu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "usuń spacje po obu stronach"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "usuń spacje z lewej strony"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "usuń spacje z prawej strony"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Zwraca kopię tekstu z usuniętymi spacjami z jednego lub z obu końców tekstu."; +Blockly.Msg["TODAY"] = "Dzisiaj"; +Blockly.Msg["UNDO"] = "Cofnij"; +Blockly.Msg["UNNAMED_KEY"] = "bez nazwy"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Utwórz klocek 'ustaw %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Zwraca wartość tej zmiennej."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "przypisz %1 wartość %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Utwórz klocek 'pobierz %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Wartości zmiennej i wejście będą identyczne."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Zmienna o nazwie '%1' już istnieje."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Zmienna o nazwie '%1' już istnieje i jest typu '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Powiedz coś..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/pms.js b/blockly/msg/pms.js new file mode 100644 index 00000000000..47d2cf8aae5 --- /dev/null +++ b/blockly/msg/pms.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Gionté un coment"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "As peul nen eliminesse la variàbil '%1' përchè a l'é part ëd la definission dla fonsion '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modifiché ël valor:"; +Blockly.Msg["CLEAN_UP"] = "Dëscancelé ij blòch"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Ij blòch sarà a conten-o dj'avertense."; +Blockly.Msg["COLLAPSE_ALL"] = "Arduve ij blòch"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Arduve ël blòch"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "rapòrt"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mës-cé"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "A mës-cia doi color ansema con un rapòrt dàit (0,0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Serne un color ant la taulòssa."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color a asar"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Serne un color a asar."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "bleu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verd"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ross"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "coloré con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Creé un color con la quantità spessificà ëd ross, verd e bleu. Tuti ij valor a devo esse antra 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "seurte da la liassa"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continué con l'iterassion sucessiva dla liassa"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Seurte da la liassa anglobanta."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sauté ël rest ëd sa liassa, e continué con l'iterassion apress."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atension: Ës blòch a peul mach esse dovrà andrinta a na liassa."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "për minca n'element %1 ant la lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Për minca element an na lista, dé ël valor ëd l'element a la variàbil '%1', peui eseguì chèiche anstrussion."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "conté con %1 da %2 a %3 për %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fé an manera che la variàbil \"%1\" a pija ij valor dal nùmer inissial fin-a al nùmer final, an contand për l'antërval ëspessificà, e eseguì ij bloch ëspessificà."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Gionté na condission al blòch si."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Gionté na condission final ch'a cheuj tut al blòch si."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Gionté, gavé o riordiné le session për cinfiguré torna ës blòch si."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "dësnò"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "dësnò si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor a l'é ver, antlora eseguì chèiche anstrussion."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor a l'é ver, antlora eseguì ël prim blòch d'anstrussion. Dësnò, eseguì ël second blòch d'anstrussion."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòch d'anstrussion."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòcj d'anstrussion. Si gnun dij valor a l'é ver, fé andé l'ùltim blòch d'anstrussion."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fé"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "arpete %1 vire"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Eseguì chèiche anstrussion vàire vire."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "arpete fin-a a"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "arpete antramentre che"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Cand un valor a l'é fàuss, eseguì chèiche anstrussion."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Cand un valor a l'é ver, eseguì chèiche anstrussion."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Scancelé tuti ij %1 blòch?"; +Blockly.Msg["DELETE_BLOCK"] = "Scancelé ël blòch"; +Blockly.Msg["DELETE_VARIABLE"] = "Eliminé la variàbil '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Eliminé %1 utilisassion ëd la variàbil '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Scancelé %1 blòch"; +Blockly.Msg["DIALOG_CANCEL"] = "Anulé"; +Blockly.Msg["DIALOG_OK"] = "Va bin"; +Blockly.Msg["DISABLE_BLOCK"] = "Disativé ël blòch"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliché"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliché ël coment"; +Blockly.Msg["ENABLE_BLOCK"] = "Ativé ël blòch"; +Blockly.Msg["EXPAND_ALL"] = "Dësvlupé ij blòch"; +Blockly.Msg["EXPAND_BLOCK"] = "Dësvlupé ël blòch"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Imission esterne"; +Blockly.Msg["HELP"] = "Agiut"; +Blockly.Msg["INLINE_INPUTS"] = "Imission an linia"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "creé na lista veuida"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Smon-e na lista, ëd longheur 0, ch'a conten gnun-a argistrassion"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Gionté, gavé o riordiné le session për configuré torna cost blòch ëd lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "creé na lista con"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Gionté n'element a la lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Creé na lista con un nùmer qualsëssìa d'element."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prim"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# da la fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "oten-e"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "oten-e e eliminé"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ùltim"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "a l'ancàpit"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "eliminé"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "A smon ël prim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "A smon l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "A smon l'ùltim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "A smon n'element a l'ancàpit an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "A gava e a smon ël prim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "A gava e a smon l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "A gava e a smon l'ùltim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "A gava e a smon n'element a l'ancàpit an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "A gava ël prim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "A gava l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "A gava l'ùltim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "A gava n'element a l'ancàpit da na lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "fin-a a # da la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fin-a a #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "fin-a a l'ùltim"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "oten-e la sot-lista dal prim"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "oten-e la sot-lista da # da la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "oten-e la sot-lista da #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "A crea na còpia dël tòch ëspessificà ëd na lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 a l'é l'ùltim element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 a l'é ël prim element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trové la prima ocorensa dl'element"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trové l'ùltima ocorensa dl'element"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "A smon l'ìndes ëd la prima/ùltima ocorensa dl'element ant la lista. A smon %1 se l'element a l'é nen trovà."; +Blockly.Msg["LISTS_INLIST"] = "ant la lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 a l'é veuid"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "A smon ver se la lista a l'é veuida."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longheur ëd %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "A smon la longheur ¨d na lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "creé na lista con l'element %1 arpetù %2 vire"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "A crea na lista ch'a consist dël valor dàit arpetù ël nùmer ëspessificà ëd vire."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "anversé %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Anversé na còpia ëd na lista"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "tanme"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "anserì an"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "buté"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "A anseriss l'element al prinsipi ëd na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "A anseriss l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Gionté l'element a la fin ëd na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "A anseriss l'element a l'ancàpit an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "A fissa ël prim element an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "A fissa l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "A fissa l'ùltim element an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "A fissa n'element a l'ancàpit an na lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "chërsent"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "calant"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordiné %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordiné na còpia ëd na lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabétich, ignorand ël caràter minùscol o majùscol"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérich"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabétich"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fé na lista da 'n test"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fé 'n test da na lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Gionze na lista ëd test ant un test sol, separandje con un separator."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Divide un test an na lista ëd test, tajand a minca 'n separator."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con ël separator"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fàuss"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "A rëspond ver o fàuss."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ver"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Rësponde ver si le doe imission a son uguaj."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Rësponde ver si la prima imission a l'é pi granda che la sconda."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Rësponde ver si la prima imission a l'é pi granda o ugual a la sconda."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Rësponde ver si la prima imission a l'é pi cita dla sconda."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Rësponde ver si la prima imission a l'é pi cita o ugual a la sconda."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Rësponde ver si le doe imission a son nen uguaj."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nen %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "A rëspond ver se l'imission a l'é fàussa. A rëspond fàuss se l'imission a l'é vera."; +Blockly.Msg["LOGIC_NULL"] = "gnente"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "A rëspond gnente."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Rësponde ver se tute doe j'imission a son vere."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Rësponde ver se almanch un-a d'imission a l'é vera."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "preuva"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se fàuss"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se ver"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Controlé la condission an 'preuva'. Se la condission a l'é vera, a rëspond con ël valor 'se ver'; dësnò a rëspond con ël valor 'se fàuss'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "A smon la soma ëd doi nùmer."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "A smon ël cossient dij doi nùmer."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "A smon la diferensa dij doi nùmer."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "A smon ël prodot dij doi nùmer."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "A smon ël prim nùmer alvà a la potensa dël second."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ëd X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "A rëspond con l'arch-tangent dël pont (X, Y) an gre da -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "ancrementé %1 për %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Gionté un nùmer a la variàbil '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "A smon un-a dle costante comun-e π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinì)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limité %1 antra %2 e %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limité un nùmer a esse antra le limitassion ëspessificà (comprèise)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "a l'é divisìbil për"; +Blockly.Msg["MATH_IS_EVEN"] = "a l'é cobi"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "a l'é negativ"; +Blockly.Msg["MATH_IS_ODD"] = "a l'é dëscobi"; +Blockly.Msg["MATH_IS_POSITIVE"] = "a l'é positiv"; +Blockly.Msg["MATH_IS_PRIME"] = "a l'é prim"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "A contròla si un nùmer a l'é cobi, dëscobi, prim, antreghm positiv, negativ, o s'a l'é divisìbil për un nùmer dàit. A rëspond ver o fàuss."; +Blockly.Msg["MATH_IS_WHOLE"] = "a l'é antregh"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resta ëd %1:%2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "A smon la resta ëd la division dij doi nùmer."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nùmer."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media dla lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "màssim ëd la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mesan-a dla lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mìnim ëd la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mòde dla lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element a l'ancàpit ëd la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviassion ëstàndard ëd la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma dla lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "A smon la media (aritmética) dij valor numérich ant la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "A smon ël pi gròss nùmer ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "A smon ël nùmer mesan ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "A smon ël pi cit nùmer ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "A smon na lista dj'element pi frequent ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "A smon n'element a l'ancàpit da la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "A smon la deviassion ëstàndard ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "A smon la soma ëd tuti ij nùmer ant la lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "frassion aleatòria"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "A smon na frassion aleatòria antra 0,0 (comprèis) e 1,0 (esclus)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "antregh aleatòri antra %1 e %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "A smon n'antregh aleatòri antra ij doi lìmit ëspessificà, comprèis."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ariondé"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ariondé për difet"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ariondé për ecess"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "A arionda un nùmer për difet o ecess."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "assolù"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "rèis quadra"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "A smon ël valor assolù d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "A smon e a la potensa d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "A smon ël logaritm natural d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "A smon ël logaritm an base 10 d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "A smon l'opòst d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "A smon 10 a la potensa d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "A smon la rèis quadra d'un nùmer."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "A smon l'arch-cosen d'un nùmer."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "A smon l'arch-sen d'un nùmer."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "A smon l'arch-tangenta d'un nùmer."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "A smon ël cosen ëd n'àngol an gré (pa an radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "A smon ël sen ëd n'àngol an gré (pa an radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "A smon la tangenta ëd n'àngol an gré (pa an radiant)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Creé na variàbil ëd color..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Creé na variàbil numérica..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Creé na variàbil dë stringa..."; +Blockly.Msg["NEW_VARIABLE"] = "Creé na variàbil..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nòm ëd la neuva variàbil:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Neuva sòrt ëd variàbil:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "përmëtte le diciairassion"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Eseguì la fonsion '%1' definìa da l'utent."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Eseguì la fonsion '%1' definìa da l'utent e dovré sò arzultà."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Creé '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descrive sa fonsion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fé cheicòs"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "a"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "A crea na fonsion sensa surtìa."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "artorn"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "A crea na fonsion con na surtìa."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Atension: Costa fonsion a l'ha dij paràmeter duplicà."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sot-ligné la definission dla fonsion"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se un valor a l'é ver, antlora smon-e un second valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Atension: Ës blòch a podria esse dovrà mach an na definission ëd fonsion."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nòm ëd l'imission:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Gionté n'imission a la fonsion."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "imission"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Gionté, gavé o riordiné j'imission ëd sa fonsion."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Fé torna"; +Blockly.Msg["REMOVE_COMMENT"] = "Scancelé un coment"; +Blockly.Msg["RENAME_VARIABLE"] = "Arnomé la variàbil..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Arnomé tute le variàbij '%1' 'me:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 taché ël test %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Taché dël test a la variàbil '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "an minùscul"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "an Majùscol A L'Ancamin Ëd Minca Paròla"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "an MAJÙSCOL"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "A smon na còpia dël test ant un caràter diferent."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "oten-e la prima litra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "oten-e la litra # da la fin"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "oten-e la litra #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "oten-e l'ùltima litra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "oten-e na litra a l'ancàpit"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ant ël test %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "A smon la litra ant la posission ëspessificà."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "nùmer %1 su %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Conté vàire vire un test dàit a compariss an n'àutr test."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Gionté n'element al test."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "gionze"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Gionté, gavé o riordiné le session për configuré torna ës blòch ëd test."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "fin-a a la litra # da la fin"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "fin-a a la litra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "fin-a a l'ùltima litra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ant ël test"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "oten-e la sota-stringa da la prima litra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "oten-e la sota-stringa da la litra # da la fin"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "oten-e la sota-stringa da la litra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "A smon un tòch ëspessificà dël test."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trové la prima ocorensa dël test"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trové l'ùltima ocorensa dël test"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ant ël test %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "A smon l'ìndes dla prima/ùltima ocorensa dël prim test ant ël second test. A smon %1 se ël test a l'é nen trovà."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 a l'é veuid"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "A smon ver se ël test fornì a l'é veuid."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "creé ël test con"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Creé un tòch ëd test an gionzend un nùmer qualsëssìa d'element."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longheur ëd %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "A smon ël nùmer ëd litre (spassi comprèis) ant ël test fornì."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "smon-e %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Smon-e ël test, ël nùmer o n'àutr valor ëspessificà."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Ciamé un nùmer a l'utent."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Ciamé un test a l'utent."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "anvit për un nùmer con un mëssagi"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "anvit për un test con un mëssagi"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "rampiassé %1 con %2 an %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Rampiassé tute j'ocorense d'un test con n'àutr."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "Anversé %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Anversé l'òrdin dij caràter ant ël test."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Na litra, na paròla o na linia ëd test."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "gavé jë spassi da le doe bande ëd"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "gavé jë spassi da la banda snistra ëd"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "gavé jë spassi da la banda drita ëd"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "A smon na còpia dël test con jë spassi gavà da n'estremità o da tute doe."; +Blockly.Msg["TODAY"] = "Ancheuj"; +Blockly.Msg["UNDO"] = "Anulé"; +Blockly.Msg["UNNAMED_KEY"] = "anònim"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Creé 'fissé %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A smon ël valor ëd sa variàbil."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "fissé %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Creé 'oten-e %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Fissé costa variàbil ugual al valor d'imission."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Na variàbil con ël nòm '%1' a esist già."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Na variàbil ciamà '%1' a esist già për n'àutra sòrt: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Spassi ëd travaj ëd Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Dì cheicòs..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ps.js b/blockly/msg/ps.js new file mode 100644 index 00000000000..48717fc6d69 --- /dev/null +++ b/blockly/msg/ps.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "تبصره ورگډول"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ارزښت بدلول:"; +Blockly.Msg["CLEAN_UP"] = "بلاکونه پاکول"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "بلاکونه پرځول"; +Blockly.Msg["COLLAPSE_BLOCK"] = "بلاک پرځول"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ps.wikipedia.org/wiki/رنگ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ناټاکلی رنگ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "شين"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "زرغون"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "سور"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "د رنگ سره"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "که"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "بلاک ړنگول"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 بلاکونه ړنگول"; +Blockly.Msg["DIALOG_CANCEL"] = "ناگارل"; +Blockly.Msg["DIALOG_OK"] = "ښه"; +Blockly.Msg["DISABLE_BLOCK"] = "بلاک ناچارنول"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "بلاک چارنول"; +Blockly.Msg["EXPAND_ALL"] = "بلاکونه غځول"; +Blockly.Msg["EXPAND_BLOCK"] = "بلاک غځول"; +Blockly.Msg["EXTERNAL_INPUTS"] = "باندنۍ ننوېستنې"; +Blockly.Msg["HELP"] = "لارښود"; +Blockly.Msg["INLINE_INPUTS"] = "پرکرښه ننوېستنې"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لړليک"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "لومړنی"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "ترلاسه کول"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "وروستنی"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ناټاکلی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 تش دی"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "لکه"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ناسم"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سم"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "او"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "يا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمويل"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' جوړول"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "بياکړل"; +Blockly.Msg["REMOVE_COMMENT"] = "تبصره غورځول"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "په متن کې"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "نن"; +Blockly.Msg["UNDO"] = "ناکړل"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "توکی"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/pt-br.js b/blockly/msg/pt-br.js new file mode 100644 index 00000000000..89099a0c3e5 --- /dev/null +++ b/blockly/msg/pt-br.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Adicionar comentário"; +Blockly.Msg["CALL_TEXT"] = "chamar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Não se pode deletar a variável '%1' porque é parte da definição da função '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Mudar valor:"; +Blockly.Msg["CLEAN_UP"] = "Limpar blocos"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Bloqueios recolhidos contêm avisos."; +Blockly.Msg["COLLAPSE_ALL"] = "Colapsar Blocos"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Colapsar Bloco"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporção"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "misturar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mistura duas cores em uma dada proporção (0,0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://pt.wikipedia.org/wiki/Cor"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolher uma cor da palheta de cores."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor aleatória"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolher cor de forma aleatória."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "vermelho"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorir com"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Criar uma cor com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "encerra o laço"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continua com a próxima iteração do laço"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Encerra o laço."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ignora o resto deste laço, e continua com a próxima iteração."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atenção: Este bloco só pode ser usado dentro de um laço."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "para cada item %1 na lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para cada item em uma lista, atribua o item à variável '%1' e então realize algumas instruções."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar com %1 de %2 até %3 por %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Faça com que a variável '%1' assuma os valores do número inicial ao número final, contando de acordo com o intervalo especificado e execute os blocos especificados."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Acrescente uma condição para o bloco se."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Acrescente uma condição final para o bloco se."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Acrescente, remova ou reordene seções para reconfigurar este bloco."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senão"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "senão se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Se um valor for verdadeiro, então realize algumas instruções."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Se um valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se o primeiro valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "faça"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repita %1 vezes"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faça algumas instruções várias vezes."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repita até"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repita enquanto"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Enquanto um valor for falso, então faça algumas instruções."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Enquanto um valor for verdadeiro, então faça algumas instruções."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Deletar todos os blocos %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Deletar bloco"; +Blockly.Msg["DELETE_VARIABLE"] = "Deletar a variável '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Deletar %1 usos da variável '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Deletar %1 blocos"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Desabilitar bloco"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar comentário"; +Blockly.Msg["ENABLE_BLOCK"] = "Habilitar bloco"; +Blockly.Msg["EXPAND_ALL"] = "Expandir blocos"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir bloco"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas"; +Blockly.Msg["HELP"] = "Ajuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas incorporadas"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "criar lista vazia"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna uma lista, de tamanho 0, contendo nenhum registro"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Acrescenta, remove ou reordena seções para reconfigurar este bloco de lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "criar lista com"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Acrescenta um item à lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Cria uma lista com a quantidade de itens informada."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "nº a partir do final"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "nº"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obter"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obter e remover"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "último"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatório"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remover"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna o primeiro item em uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna o item da lista na posição especificada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna o último item em uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Remove e retorna o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Remove e retorna o item na posição especificada em uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Remove e retorna o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Remove e retorna um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Remove o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Remove o item na posição especificada em uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Remove o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Remove um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "até nº a partir do final"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "até nº"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "até último"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtém sublista a partir do primeiro"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtém sublista de nº a partir do final"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtém sublista de nº"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Cria uma cópia da porção especificada de uma lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o último item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "encontre a primeira ocorrência do item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "encontre a última ocorrência do item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna o índice da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado."; +Blockly.Msg["LISTS_INLIST"] = "na lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 é vazia"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retorna ao verdadeiro se a lista estiver vazia."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "tamanho de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna o tamanho de uma lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "criar lista com item %1 repetido %2 vezes"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Cria uma lista consistindo no valor informado repetido o número de vezes especificado."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Listas#invertendo-uma-lista"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverter uma cópia da lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir em"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insere o item no início de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insere o item na posição especificada em uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Insere o item no final de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insere o item em uma posição qualquer de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Define o primeiro item de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Define o item da posição especificada de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Define o último item de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Define um item aleatório de uma lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordenar %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordenar uma cópia de uma lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabético, ignorar maiúscula/minúscula"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérico"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabético"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Fazer uma lista a partir do texto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fazer um texto a partir da lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Juntar uma lista de textos em um único texto, separado por um delimitador."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividir o texto em uma lista de textos, separando-o em cada delimitador."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "com delimitador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna verdadeiro ou falso."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retorna verdadeiro se ambas as entradas forem iguais."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retorna verdadeiro se ambas as entradas forem diferentes."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "não %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retorna verdadeiro se a entrada for falsa. Retorna falsa se a entrada for verdadeira."; +Blockly.Msg["LOGIC_NULL"] = "nulo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nulo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retorna verdadeiro se ambas as entradas forem verdadeiras."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retorna verdadeiro se uma das estradas for verdadeira."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "teste"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://pt.wikipedia.org/wiki/Aritm%C3%A9tica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a soma dos dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o quociente da divisão dos dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferença entre os dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto dos dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado à potência do segundo número."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Retorne o arco tangente do ponto (X, Y) em graus de -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "alterar %1 por %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Soma um número à variável \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "restringe %1 inferior %2 superior %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Restringe um número entre os limites especificados (inclusivo)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisível por"; +Blockly.Msg["MATH_IS_EVEN"] = "é par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo"; +Blockly.Msg["MATH_IS_ODD"] = "é ímpar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "é primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se um número é par, ímpar, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "é inteiro"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto da divisão de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retorna o resto da divisão de dois números."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://pt.wikipedia.org/wiki/N%C3%BAmero"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Um número."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "média da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "item aleatório da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desvio padrão da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma de uma lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retorna a média aritmética dos números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retorna a mediana dos números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retorna uma lista do(s) item(ns) mais comum(ns) da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retorna um elemento aleatório da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retorna o desvio padrão dos números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a soma de todos os números na lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fração aleatória"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Retorna uma fração aleatória entre 0.0 (inclusivo) e 1.0 (exclusivo)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "inteiro aleatório entre %1 e %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retorna um número inteiro entre os dois limites informados, inclusivo."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://pt.wikipedia.org/wiki/Arredondamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda para baixo"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda para cima"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda um número para cima ou para baixo."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://pt.wikipedia.org/wiki/Raiz_quadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raiz quadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado à potência de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logaritmo natural de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logaritmo em base 10 de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado à potência de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raiz quadrada de um número."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco cosseno de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tangente de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o cosseno de um grau (não radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno de um grau (não radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tangente de um grau (não radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Criar variável colorida..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Criar variável numérica..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Criar variável de segmentos de texto..."; +Blockly.Msg["NEW_VARIABLE"] = "Criar variável..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variável:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo da nova variável:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitir declarações"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "com:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executa a função definida pelo usuário \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/Sub-rotina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executa a função definida pelo usuário \"%1\" e usa seu retorno."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "com:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Criar \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descreva esta função..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "faça algo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "para"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Cria uma função que não tem retorno."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorna"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Cria uma função que possui um valor de retorno."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Atenção: Esta função tem parâmetros duplicados."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Destacar definição da função"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se um valor é verdadeiro, então retorna um valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Atenção: Este bloco só pode ser utilizado dentro da definição de uma função."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Funções principais"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nome da entrada:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adiciona uma entrada para esta função"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adiciona, remove, ou reordena as entradas para esta função."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Execução"; +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Bloco que contem os blocos de execução do programa."; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Inicialização do Supervisório"; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Bloco que contem os blocos de inicialização do supervisório."; +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Inicialização"; +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Bloco que contem os blocos de inicialização do programa."; +Blockly.Msg["REDO"] = "Refazer"; +Blockly.Msg["REMOVE_COMMENT"] = "Remover comentário"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomear variável..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variáveis '%1' para:"; +Blockly.Msg["RETURN_TEXT"] = "retornar"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "para %1 anexar texto %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Acrescentar um pedaço de texto à variável \"%1\"."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "para minúsculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "para Nomes Próprios"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "para MAIÚSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retorna uma cópia do texto em um formato diferente."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obter primeira letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obter letra # a partir do final"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obter letra nº"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obter última letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obter letra aleatória"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "no texto %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Retorna a letra na posição especificada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "Contar %1 em %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Calcule quantas vezes algum texto aparece centro de algum outro texto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Acrescentar um item ao texto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "até letra nº a partir do final"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "até letra nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "até última letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obter trecho de primeira letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obter trecho de letra nº a partir do final"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obter trecho de letra nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Retorna o trecho de texto especificado."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "encontre a primeira ocorrência do item"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "encontre a última ocorrência do texto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "no texto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 é vazio"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna verdadeiro se o texto fornecido for vazio."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "criar texto com"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Criar um pedaço de texto juntando qualquer número de itens."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "tamanho de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Retorna o número de letras (incluindo espaços) no texto fornecido."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprime o texto, número ou valor especificado."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pede ao usuário um número."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pede ao usuário um texto."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Pede um número com uma mensagem"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Pede um texto com uma mensagem"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Texto#substituindo-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "substituir %1 por %2 em %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Substitua todas as ocorrências de algum texto dentro de algum outro texto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Texto#invertendo-texto"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverter a ordem dos caracteres no texto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://pt.wikipedia.org/wiki/Cadeia_de_caracteres"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Uma letra, palavra ou linha de texto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "remover espaços de ambos os lados de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "remover espaços à esquerda de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "remover espaços à direita de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retorna uma cópia do texto com os espaços removidos de uma ou ambas extremidades."; +Blockly.Msg["TODAY"] = "Hoje"; +Blockly.Msg["UNDO"] = "Desfazer"; +Blockly.Msg["UNNAMED_KEY"] = "Sem título"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Chama um método da variável atual com retorno."; +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Chama um método da variável atual"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Criar \"definir %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna o valor desta variável."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Chamadas de métodos"; +Blockly.Msg["VARIABLES_SET"] = "definir %1 para %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Criar \"obter %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Define esta variável para o valor da entrada."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variável chamada '%1' já existe."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Já existe uma variável chamada '%1' para outra do tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espaço de trabalho do Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Diz algo..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/pt.js b/blockly/msg/pt.js new file mode 100644 index 00000000000..e4fe01e7254 --- /dev/null +++ b/blockly/msg/pt.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Adicionar Comentário"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Não se pode eliminar a variável '%1' porque faz parte da definição da função '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Alterar valor:"; +Blockly.Msg["CLEAN_UP"] = "Limpar Blocos"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Os blocos ocultados contêm avisos."; +Blockly.Msg["COLLAPSE_ALL"] = "Ocultar Blocos"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Ocultar Bloco"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporção"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "misturar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mistura duas cores com a proporção indicada (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://pt.wikipedia.org/wiki/Cor"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolha uma cor da paleta de cores."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor aleatória"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolha uma cor aleatoriamente."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "vermelho"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "pinte com"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Cria uma cor de acordo com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "sair do ciclo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar com a próxima iteração do ciclo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sair do ciclo que está contido."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ignorar o resto deste ciclo, e continuar com a próxima iteração."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Aviso: Este bloco só pode ser usado dentro de um ciclo."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "para cada item %1 na lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para cada item numa lista, define a variável \"%1\" para o item e então faz algumas instruções."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar com %1 de %2 até %3 por %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Faz com que a variável \"%1\" assuma os valores desde o número inicial até ao número final, contando de acordo com o intervalo especificado e executa os blocos especificados."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Acrescente uma condição ao bloco se."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Acrescente uma condição de excepação final para o bloco se."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Acrescente, remova ou reordene secções para reconfigurar este bloco se."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senão"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "senão se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Se um valor é verdadeiro, então realize alguns passos."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Se um valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "http://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "faça"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 vez"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faça algumas instruções várias vezes."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir até"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir enquanto"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Enquanto um valor for falso, então faça algumas instruções."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Enquanto um valor for verdadeiro, então faça algumas instruções."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Eliminar todos os %1 blocos?"; +Blockly.Msg["DELETE_BLOCK"] = "Eliminar Bloco"; +Blockly.Msg["DELETE_VARIABLE"] = "Eliminar a variável '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Eliminar %1 utilizações da variável '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Eliminar %1 Blocos"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Desativar Bloco"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar comentário"; +Blockly.Msg["ENABLE_BLOCK"] = "Ativar Bloco"; +Blockly.Msg["EXPAND_ALL"] = "Expandir Blocos"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir Bloco"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas Externas"; +Blockly.Msg["HELP"] = "Ajuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas Em Linhas"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "criar lista vazia"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna uma lista, de tamanho 0, contendo nenhum registo"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Acrescente, remova ou reordene as seções para reconfigurar este bloco lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "criar lista com"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Acrescenta um item à lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Cria uma lista com qualquer número de itens."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# a partir do final"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obter"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obter e remover"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "último"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatório"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remover"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna o item na posição especificada da lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Remove e retorna o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Remove e retorna o item na posição especificada de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Remove e retorna o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Remove e retorna um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Remove o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Remove o item de uma posição especifica da lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Remove o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Remove um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "até #, a partir do final"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "até #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "para o último"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtem sublista da primeira lista"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtem sublista de # a partir do final"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtem sublista de #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Cria uma cópia da porção especificada de uma lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o último item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "encontre a primeira ocorrência do item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "encontre a última ocorrência do item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna a posição da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado."; +Blockly.Msg["LISTS_INLIST"] = "na lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 está vazia"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retona verdadeiro se a lista estiver vazia."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "tamanho de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna o tamanho de uma lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "criar lista com o item %1 repetido %2 vezes"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Cria uma lista constituída por um dado valor repetido o número de vezes especificado."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverter uma cópia da lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir em"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insere o item no início da lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insere o item numa posição especificada numa lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Insere o item no final da lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insere o item numa posição aleatória de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Define o primeiro item de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Define o item na posição especificada de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Define o último item de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Define um item aleatório de uma lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordenar %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordenar uma cópia de uma lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabética, ignorar maiúsculas/minúsculas"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérica"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabética"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fazer lista a partir de texto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fazer texto a partir da lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Juntar uma lista de textos num único texto, separado por um delimitador."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividir o texto numa lista de textos, separando-o em cada delimitador."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "com delimitador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna verdadeiro ou falso."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "http://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retorna verdadeiro se ambas as entradas forem iguais entre si."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retorna verdadeiro se ambas as entradas forem diferentes entre si."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "não %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retorna verdadeiro se a entrada for falsa. Retorna falso se a entrada for verdadeira."; +Blockly.Msg["LOGIC_NULL"] = "nulo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "http://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nulo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retorna verdadeiro se ambas as entradas forem verdadeiras."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retorna verdadeiro se pelo menos uma das estradas for verdadeira."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "teste"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "http://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "http://pt.wikipedia.org/wiki/Aritm%C3%A9tica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a soma de dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o quociente da divisão de dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferença de dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto de dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado à potência do segundo número."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Devolver o arco tangente do ponto (X, Y) em graus entre -180 e 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "http://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "alterar %1 por %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Soma um número à variável \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "http://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "restringe %1 inferior %2 superior %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Restringe um número entre os limites especificados (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisível por"; +Blockly.Msg["MATH_IS_EVEN"] = "é par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo"; +Blockly.Msg["MATH_IS_ODD"] = "é impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "é primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se um número é par, impar, primo, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "é inteiro"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "http://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto da divisão de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retorna o resto da divisão de dois números."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "http://pt.wikipedia.org/wiki/N%C3%BAmero"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Um número."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "média de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "item aleatório de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desvio padrão de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma da lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retorna a média aritmética dos valores números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retorna a mediana da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retorna a lista de item(ns) mais comum(ns) da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retorna um elemento aleatório da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retorna o desvio padrão dos números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a soma de todos os números da lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fração aleatória"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Insere uma fração aleatória entre 0.0 (inclusive) e 1.0 (exclusive)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "inteiro aleatório entre %1 e %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retorna um número inteiro entre os dois limites especificados, inclusive."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "http://pt.wikipedia.org/wiki/Arredondamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda para baixo"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda para cima"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda um número para cima ou para baixo."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "http://pt.wikipedia.org/wiki/Raiz_quadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz quadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado à potência de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logarítmo natural de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logarítmo em base 10 de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado à potência de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raiz quadrada de um número."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "http://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco cosseno de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tangente de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o cosseno de um grau (não radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno de um grau (não radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tangente de um grau (não radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Criar variável colorida..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Criar variável numérica..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Criar variável de segmentos de texto..."; +Blockly.Msg["NEW_VARIABLE"] = "Criar variável…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variável:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo da nova variável:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitir declarações"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "com:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/Sub-rotina"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executa a função \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/Sub-rotina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executa a função \"%1\" e usa o seu retorno."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "com:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Criar \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descreva esta função..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "faz algo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "para"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Cria uma função que não tem retorno."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorna"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Cria uma função que possui um valor de retorno."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Aviso: Esta função tem parâmetros duplicados."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Destacar definição da função"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "se o valor é verdadeiro, então retorna um segundo valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Aviso: Este bloco só pode ser utilizado dentro da definição de uma função."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nome da entrada:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adicionar uma entrada para a função."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adicionar, remover ou reordenar as entradas para esta função."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Refazer"; +Blockly.Msg["REMOVE_COMMENT"] = "Remover Comentário"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomear variável..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variáveis '%1' para:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "para %1 acrescentar texto %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Acrescentar um pedaço de texto à variável \"%1\"."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "para minúsculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "para Iniciais Maiúsculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "para MAIÚSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retorna uma cópia do texto em formato diferente."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obter primeira letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obter letra nº a partir do final"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obter letra nº"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obter última letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obter letra aleatória"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "no texto %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Retorna a letra na posição especificada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "contar %1 em %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Conte quantas vezes um certo texto aparece dentro de algum outro texto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Acrescentar um item ao texto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "até letra nº a partir do final"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "até letra nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "até última letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obter subsequência a partir da primeira letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obter subsequência de tamanho # a partir do final"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obter subsequência de tamanho #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Retorna a parte especificada do texto."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "primeira ocorrência do texto"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "última ocorrência do texto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "no texto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 está vazio"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna verdadeiro se o texto fornecido estiver vazio."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "criar texto com"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Criar um pedaço de texto juntando qualquer número de itens."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "tamanho de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Devolve o número de letras (incluindo espaços) do texto fornecido."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprime o texto, número ou outro valor especificado."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pede ao utilizador um número."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pede ao utilizador um texto."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pede um número com a mensagem"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Pede um texto com a mensagem"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "substituir %1 por %2 em %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Substituir todas as ocorrências de um certo texto dentro de algum outro texto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverte a ordem dos caracteres no texto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "http://pt.wikipedia.org/wiki/Cadeia_de_caracteres"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Uma letra, palavra ou linha de texto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "remover espaços de ambos os lados"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "remover espaços à esquerda de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "remover espaços à direita"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retorna uma cópia do texto com os espaços removidos de uma ou ambas as extremidades."; +Blockly.Msg["TODAY"] = "Hoje"; +Blockly.Msg["UNDO"] = "Desfazer"; +Blockly.Msg["UNNAMED_KEY"] = "sem nome"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Criar \"definir %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna o valor desta variável."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "definir %1 para %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Criar \"obter %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Define esta variável para o valor inserido."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Já existe uma variável com o nome de '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Já existe uma variável chamada '%1' para outra do tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espaço de trabalho de Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Diz algo..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ro.js b/blockly/msg/ro.js new file mode 100644 index 00000000000..a07448a0dbb --- /dev/null +++ b/blockly/msg/ro.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Adaugă un comentariu"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nu se poate șterge variabila '%1' deoarece face parte din definiția funcției '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Schimbați valoarea:"; +Blockly.Msg["CLEAN_UP"] = "Curăță blocări"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blocurile blocate conțin avertismente."; +Blockly.Msg["COLLAPSE_ALL"] = "Restrange blocurile"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Restrange blocul"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "culoare 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "culoare 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "Raport"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "amestec"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Amestecă două culori cu un raport dat (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ro.wikipedia.org/wiki/Culoare"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Alege o culoare din paleta de culori."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "culoare aleatorie"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Alege o culoare la întâmplare."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "albastru"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "roșu"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorează cu"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Creează o culoare cu suma specificată de roșu, verde și albastru. Toate valorile trebuie să fie între 0 și 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ieși din buclă"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuă cu următoarea iterație a buclei"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ieși din buclă."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sari peste restul acestei bucle și continuă cu următoarea iterație."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Avertisment: Acest bloc pote fi utilizat numai în interiorul unei bucle."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pentru fiecare element %1 în listă %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pentru fiecare element din listă, setați variabila „%1” ca valoarea elementului, și apoi faceți unele declarații."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "numără cu %1 de la %2 la %3 prin %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Cu variablia \"%1\" ia o valoare din numărul început la numărul final, numara in intervalul specificat, apoi face blocurile specificate."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Adăugați o condiție în blocul if."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Adauga o stare finala, cuprinde toata conditia din blocul if."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc if."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "altfel"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "altfel dacă"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "dacă"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Dacă o valoare este adevărată, atunci fă unele declarații."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Dacă o valoare este adevărat, atunci face primul bloc de declarații. Altfel, face al doilea bloc de declarații."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații. În cazul în care niciuna din valori nu este adevărat, face ultimul bloc de declarații."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fă"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetă de %1 ori"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Face unele afirmații de mai multe ori."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "Repetați până când"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetă în timp ce"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Atâta timp cât o valoare este adevărat, atunci face unele declarații."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Atâta timp cât o valoare este adevărat, atunci face unele declarații."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ștergi toate cele %1 (de) blocuri?"; +Blockly.Msg["DELETE_BLOCK"] = "Șterge Bloc"; +Blockly.Msg["DELETE_VARIABLE"] = "Ștergeți variabila '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Șterge %1 utilizările variabilei '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Ștergeți %1 Blocuri"; +Blockly.Msg["DIALOG_CANCEL"] = "Revocare"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Dezactivați bloc"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Coment duplicat"; +Blockly.Msg["ENABLE_BLOCK"] = "Permite bloc"; +Blockly.Msg["EXPAND_ALL"] = "Extinde blocuri"; +Blockly.Msg["EXPAND_BLOCK"] = "Extinde bloc"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Intrări externe"; +Blockly.Msg["HELP"] = "Ajutor"; +Blockly.Msg["INLINE_INPUTS"] = "Intrări în linie"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "creează listă goală"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returnează o listă, de lungime 0, care nu conține înregistrări de date"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listă"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc de listă."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "creează listă cu"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Adăugați un element la listă."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Creați o listă cu orice număr de elemente."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primul"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# de la sfârșit"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obține"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obține și elimină"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ultimul"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleator"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "elimină"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnează primul element dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returnează elementul de la poziția specificată dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnează ultimul element într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returneaza un element aleatoriu într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Elimină și returnează primul element dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Elimină și returnează elementul de la poziția specificată dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Elimină și returnează ultimul element dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Elimină și returnează un element aleatoriu într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Elimină primul element într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Elimină elementul de la poziția specificată dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Elimină ultimul element într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Elimină un element aleatoriu într-o listă."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "la # de la sfarsit"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "la #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "la ultima"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obține sub-lista de la primul"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obține sub-lista de la # de la sfârșit"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obține sub-lista de la #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creează o copie a porțiunii specificate dintr-o listă."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 este ultimul element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 este primul element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Găsește prima apariție a elementului"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "găsește ultima apariție a elementului"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returnează indexul primei/ultimei apariții a articolului din listă. Returnează %1 dacă elementul nu este găsit."; +Blockly.Msg["LISTS_INLIST"] = "în listă"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 este gol"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnează adevărat dacă lista este goală."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lungime de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnează lungimea unei liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "creaza lista cu %1 elemente repetate de %2 ori"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creează o listă alcătuită dintr-o anumită valoare repetată de numărul specificat de ori."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inversă %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inversați copia unei liste."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ca"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "introduceți la"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "seteaza"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserează elementul la începutul unei liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserează elementul la poziția specificată într-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Adaugă elementul la sfârșitul unei liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserează elementul aleatoriu într-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Setează primul element într-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setează elementul de la poziția specificată dintr-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setează ultimul element într-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setează un element aleator într-o listă."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "crescător"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descrescător"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sortați %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortați o copie a unei liste."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetic, ignorați cazul"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "convertește textul în listă"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "convertește lista în text"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Concatenează o listă de texte (alternate cu separatorul) într-un text unic"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Împarte textul într-o listă de texte, despărțite prin fiecare separator"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "cu separatorul"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fals"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnează adevărat sau fals."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "adevărat"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Returnează adevărat dacă ambele intrări sunt egale."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Returnează adevărat dacă prima intrare este mai mare decât a doua intrare."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Returnează adevărat dacă prima intrare este mai mare sau egală cu a doua intrare."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Returnează adevărat dacă prima intrare este mai mică decât a doua intrare."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Returnează adevărat dacă prima intrare este mai mică sau egală cu a doua intrare."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Returnează adevărat daca cele două intrări nu sunt egale."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returnează adevărat dacă intrarea este falsă. Returnează fals dacă intrarea este adevărată."; +Blockly.Msg["LOGIC_NULL"] = "nul"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "returnează nul."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "și"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "sau"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Returnează adevărat daca ambele intrări sunt adevărate."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Returnează adevărat dacă cel puțin una din intrări este adevărată."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "dacă este fals"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "dacă este adevărat"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Verifică condiția din „test”. Dacă condiția este adevărată, returnează valoarea „în cazul în care adevărat”; în caz contrar întoarce valoarea „în cazul în care e fals”."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ro.wikipedia.org/wiki/Aritmetic%C4%83"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnează suma a două numere."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returnează câtul celor două numere."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returnează diferența dintre cele două numere."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returnează produsul celor două numere."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Returneaza numărul rezultat prin ridicarea primului număr la puterea celui de-al doilea."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Întoarceți arctangentul punctului (X, Y) în grade de la -180 la 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "schimbă %1 de %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Adaugă un număr variabilei '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ro.wikipedia.org/wiki/Constant%C4%83_matematic%C4%83"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Întoarcă una din constantele comune: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) sau ∞ (infinitate)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrânge %1 redus %2 ridicat %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrânge un număr să fie între limitele specificate (inclusiv)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "este divizibil cu"; +Blockly.Msg["MATH_IS_EVEN"] = "este par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "este negativ"; +Blockly.Msg["MATH_IS_ODD"] = "este impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "este pozitiv"; +Blockly.Msg["MATH_IS_PRIME"] = "este prim"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifică dacă un număr este un par, impar, prim, întreg, pozitiv, negativ, sau dacă este divizibil cu un anumit număr. Returnează true sau false."; +Blockly.Msg["MATH_IS_WHOLE"] = "este întreg"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "restul la %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Întoarce restul din împărțirea celor două numere."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un număr."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximul listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "media listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimul listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moduri de listă"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element aleatoriu din lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviația standard a listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma listei"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Întoarce media (aritmetică) a valorilor numerice în listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Întoarce cel mai mare număr din listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Întoarce numărul median în listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Returnează cel mai mic număr din listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Returnează o listă cu cel(e) mai frecvent(e) element(e) din listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returnează un element aleatoriu din listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Întoarce deviația standard a listei."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Returnează suma tuturor numerelor din lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fracții aleatorii"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Returnează o fracție aleatoare între 0.0 (inclusiv) și 1.0 (exclusiv)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "un număr întreg aleator de la %1 la %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Returnează un număr întreg aleator aflat între cele două limite specificate, inclusiv."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "rotund"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rotunjit"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rotunjește în sus"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rotunjirea unui număr în sus sau în jos."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolută"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "rădăcina pătrată"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returnează valoarea absolută a unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Returnează e la puterea unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Întoarce logaritmul natural al unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returnează logaritmul în baza 10 a unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returnează negația unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Returnează 10 la puterea unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returnează rădăcina pătrată a unui număr."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctg"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ro.wikipedia.org/wiki/Funcții_trigonometrice"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tg"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Returnează arccosinusul unui număr."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Returnează arcsinusul unui număr."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Returnează arctangenta unui număr."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Întoarce cosinusul unui grad (nu radianul)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Întoarce cosinusul unui grad (nu radianul)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Întoarce tangenta unui grad (nu radianul)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crează o variabilă culoare"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crează o variabilă număr"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crează o variabilă string"; +Blockly.Msg["NEW_VARIABLE"] = "Crează variabilă"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Noul nume de variabilă:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tip nou de variabilă"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permite declarațiile"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "cu:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executați funcția '%1 'definită de utilizator."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executați funcția „%1” definită de utilizator și folosiți producția sa."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "cu:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Creați „%1”"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descrieți această funcție ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fă ceva"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "la"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crează o funcție cu nicio ieșire."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://ro.wikipedia.org/wiki/Subrutină"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returnează"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creează o funcție cu o ieșire."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Atenție: Această funcție are parametri duplicați."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Evidențiază definiția funcției"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Dacă o valoare este adevărată, atunci returnează valoarea a doua."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Avertisment: Acest bloc poate fi utilizat numai în definiția unei funcții."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nume de intrare:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adaugă un parametru de intrare pentru funcție."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "intrări"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adăugă, șterge sau reordonează parametrii de intrare ai acestei funcții."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Refă"; +Blockly.Msg["REMOVE_COMMENT"] = "Elimină comentariu"; +Blockly.Msg["RENAME_VARIABLE"] = "Redenumirea variabilei..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Redenumește toate variabilele „%1” în:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "la %1 adăugați text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Adăugați text la variabila „%1”."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "la litere mici"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "către Titlul de caz"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "la MAJUSCULE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Întoarce o copie a textului într-un caz diferit."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obține prima literă"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obține litera # de la sfârșit"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obtine litera #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obține o literă oarecare"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obtine o litera oarecare"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "în text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returnează litera la poziția specificată."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "numără %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Aflați de câte ori apare un text într-un alt text."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Adaugă un element în text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "alăturați-vă"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Adaugă, elimină sau reordonează secțiuni ca să reconfigureze blocul text."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "la litera # de la sfarsit"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "la litera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "la ultima literă"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "în text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obține un subșir de la prima literă"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obține un subșir de la litera # de la sfârșit"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obține subșir de la litera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returnează o anumită parte din text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "găsește prima apariție a textului"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "găsește ultima apariție a textului"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "în text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returnează indicele primei/ultimei apariții din primul text în al doilea text. Returnează %1 dacă textul nu este găsit."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 este gol"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnează adevărat dacă textul furnizat este gol."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crează text cu"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Creați o bucată de text prin unirea oricărui număr de elemente."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lungime de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returnează numărul de litere (inclusiv spațiile) în textul furnizat."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprimare %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Afișează textul specificat, numărul sau altă valoare."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Solicită utilizatorul pentru un număr."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Solicită utilizatorul pentru text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "solicită pentru număr cu mesaj"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "solicită pentru text cu mesaj"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "înlocuiți %1 cu %2 în %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Înlocuiți toate aparițiile anumitor texte într-un alt text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inversă %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inversează ordinea caracterelor din text."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "O literă, cuvânt sau linie de text."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "taie spațiile de pe ambele părți ale"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "tăiați spațiile din partea stângă a"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "taie spațiile din partea dreaptă a"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returnează o copie a textului fără spațiile de la unul sau ambele capete."; +Blockly.Msg["TODAY"] = "Astăzi"; +Blockly.Msg["UNDO"] = "Anulează"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crează 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnează valoarea acestei variabile."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "seteaza %1 la %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crează 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setează această variabilă sa fie egală la intrare."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "O variabilă cu numele '%1' există deja."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "o variabilă numită '%1' există deja pentru alt tip: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Spune ceva..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ru.js b/blockly/msg/ru.js new file mode 100644 index 00000000000..f9476f8a102 --- /dev/null +++ b/blockly/msg/ru.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Добавить комментарий"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Невозможно удалить переменную '%1', поскольку она является частью определения функции '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Измените значение:"; +Blockly.Msg["CLEAN_UP"] = "Очистить блоки"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Свёрнутые блоки содержат предупреждения."; +Blockly.Msg["COLLAPSE_ALL"] = "Свернуть блоки"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Свернуть блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "цвет 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "цвет 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "доля цвета 1"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "смешать"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Смешивает два цвета в заданном соотношении (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ru.wikipedia.org/wiki/Цвет"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Выберите цвет из палитры."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случайный цвет"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Выбирает цвет случайным образом."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "синего"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелёного"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "красного"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "цвет из"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Создаёт цвет с указанной пропорцией красного, зелёного и синего. Все значения должны быть между 0 и 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "выйти из цикла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "перейти к следующему шагу цикла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Прерывает этот цикл."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Пропускает остаток цикла и переходит к следующему шагу."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Предупреждение: этот блок может использоваться только внутри цикла."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для каждого элемента %1 в списке %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для каждого элемента в списке, присваивает переменной '%1' значение элемента и выполняет указанные команды."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "цикл по %1 от %2 до %3 с шагом %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Присваивает переменной '%1' значения от начального до конечного с заданным шагом и выполняет указанные команды."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Добавляет условие к блоку \"если\""; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Добавить заключительный подблок для случая, когда все условия ложны."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Добавьте, удалите, переставьте фрагменты для переделки блока \"если\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "иначе"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "иначе если"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "если"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Если условие истинно, выполняет команды."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Если условие истинно, выполняет первый блок команд. Иначе выполняется второй блок команд."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Если первое условие истинно, то выполняет первый блок команд. Иначе, если второе условие истинно, выполняет второй блок команд."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Если первое условие истинно, то выполняет первый блок команд. В противном случае, если второе условие истинно, выполняет второй блок команд. Если ни одно из условий не истинно, выполняет последний блок команд."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Цикл_(программирование)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "выполнить"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "повторить %1 раз"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Выполняет некоторые команды несколько раз."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повторять, пока не"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повторять, пока"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Пока значение ложно, выполняет команды"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Пока значение истинно, выполняет команды."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Удалить все блоки (%1)?"; +Blockly.Msg["DELETE_BLOCK"] = "Удалить блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Удалить переменную '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Удалить %1 использований переменной '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Удалить %1 блоков"; +Blockly.Msg["DIALOG_CANCEL"] = "Отмена"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Отключить блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дублировать"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дублировать комментарий"; +Blockly.Msg["ENABLE_BLOCK"] = "Включить блок"; +Blockly.Msg["EXPAND_ALL"] = "Развернуть блоки"; +Blockly.Msg["EXPAND_BLOCK"] = "Развернуть блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Вставки снаружи"; +Blockly.Msg["HELP"] = "Справка"; +Blockly.Msg["INLINE_INPUTS"] = "Вставки внутри"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "создать пустой список"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Возвращает список длины 0, не содержащий данных"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "список"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Добавьте, удалите, переставьте элементы для переделки блока списка."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "создать список из"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Добавляет элемент к списку."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Создаёт список с любым числом элементов."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "первый"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ с конца"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "взять"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "взять и удалить"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последний"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "произвольный"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "удалить"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Возвращает первый элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Возвращает элемент в указанной позиции списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Возвращает последний элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Возвращает случайный элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Удаляет и возвращает первый элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Удаляет и возвращает элемент в указанной позиции списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Удаляет и возвращает последний элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Удаляет и возвращает случайный элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Удаляет первый элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Удаляет элемент в указанной позиции списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Удаляет последний элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Удаляет случайный элемент списка."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "по № с конца"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "по №"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "по последний"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "взять подсписок с первого"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "взять подсписок с № с конца"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "взять подсписок с №"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Создаёт копию указанной части списка."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - последний элемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - первый элемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "найти первое вхождение элемента"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "найти последнее вхождение элемента"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Возвращает номер позиции первого/последнего вхождения элемента в списке. Возвращает %1, если элемент не найден."; +Blockly.Msg["LISTS_INLIST"] = "в списке"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 пуст"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Возвращает значение истина, если список пуст."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "длина %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Возвращает длину списка."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "создать список из элемента %1, повторяющегося %2 раз"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Создаёт список, состоящий из заданного числа копий элемента."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "изменить порядок на обратный %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Изменить порядок списка на обратный."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "="; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вставить в"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "присвоить"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Вставляет элемент в начало списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Вставляет элемент в указанной позиции списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Добавляет элемент в конец списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Вставляет элемент в случайное место в списке."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Присваивает значение первому элементу списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Присваивает значение элементу в указанной позиции списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Присваивает значение последнему элементу списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Присваивает значение случайному элементу списка."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "по возрастанию"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "по убыванию"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сортировать %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сортировать копию списка."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "по алфавиту, без учёта регистра"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "числовая"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "по алфавиту"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "сделать список из текста"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "собрать текст из списка"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Соединяет список текстов в один текст с разделителями."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Разбивает текст в список текстов, по разделителям."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "с разделителем"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ложь"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Возвращает значение истина или ложь."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "истина"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ru.wikipedia.org/wiki/Неравенство"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Возвращает положительное значение, если вводы равны."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Возвращает значение истина, если первая вставка больше второй."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Возвращает значение истина, если первая вставка больше или равна второй."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Возвращает положительное значение, если первый ввод меньше второго."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Возвращает значение истина, если первая вставка меньше или равна второй."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Возвращает положительное значение, если вводы не равны."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Возвращает значение истина, если вставка ложна. Возвращает значение ложь, если вставка истинна."; +Blockly.Msg["LOGIC_NULL"] = "ничто"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Возвращает ничто."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Возвращает значение истина, если обе вставки истинны."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Возвращает значение истина, если хотя бы одна из вставок истинна."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "выбрать по"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://ru.wikipedia.org/wiki/Тернарная_условная_операция"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "если ложь"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "если истина"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Проверяет условие выбора. Если условие истинно, возвращает первое значение, в противном случае возвращает второе значение."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ru.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Возвращает сумму двух чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Возвращает частное от деления первого числа на второе."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Возвращает разность двух чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Возвращает произведение двух чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Возвращает первое число, возведённое в степень второго числа."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 от X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Возвращает арктангенс точки (X, Y) в градусах от -180 до 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "увеличить %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Добавляет число к переменной '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ru.wikipedia.org/wiki/Математическая_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Возвращает одну из распространённых констант: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (бесконечность)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ограничить %1 снизу %2 сверху %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ограничивает число нижней и верхней границами (включительно)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "делится на"; +Blockly.Msg["MATH_IS_EVEN"] = "чётное"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "отрицательное"; +Blockly.Msg["MATH_IS_ODD"] = "нечётное"; +Blockly.Msg["MATH_IS_POSITIVE"] = "положительное"; +Blockly.Msg["MATH_IS_PRIME"] = "простое"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверяет, является ли число чётным, нечётным, простым, целым, положительным, отрицательным или оно кратно определённому числу. Возвращает значение истина или ложь."; +Blockly.Msg["MATH_IS_WHOLE"] = "целое"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ru.wikipedia.org/wiki/Деление_с_остатком"; +Blockly.Msg["MATH_MODULO_TITLE"] = "остаток от %1 : %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Возвращает остаток от деления двух чисел."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ru.wikipedia.org/wiki/Число"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Число."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "среднее арифметическое списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "наибольшее в списке"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медиана списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "наименьшее в списке"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "моды списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случайный элемент списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартное отклонение списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сумма списка"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Возвращает среднее арифметическое списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Возвращает наибольшее число списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Возвращает медиану списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Возвращает наименьшее число списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Возвращает список наиболее часто встречающихся элементов списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Возвращает случайный элемент списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Возвращает стандартное отклонение списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Возвращает сумму всех чисел в списке."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "случайное число от 0 (включительно) до 1"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Возвращает случайное число от 0.0 (включительно) до 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "случайное целое число от %1 для %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Возвращает случайное число между двумя заданными пределами (включая и их)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ru.wikipedia.org/wiki/Округление"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "округлить"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "округлить к меньшему"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "округлить к большему"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Округляет число до большего или меньшего."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ru.wikipedia.org/wiki/Квадратный_корень"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратный корень"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Возвращает модуль числа"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Возвращает е в указанной степени."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Возвращает натуральный логарифм числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Возвращает десятичный логарифм числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Возвращает противоположное число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Возвращает 10 в указанной степени."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Возвращает квадратный корень числа."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ru.wikipedia.org/wiki/Тригонометрические_функции"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Возвращает арккосинус (в градусах)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Возвращает арксинус (в градусах)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Возвращает арктангенс (в градусах)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Возвращает косинус угла в градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Возвращает синус угла в градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Возвращает тангенс угла в градусах."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Создать переменную цвета..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Создать числовую переменную..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Создать строковую переменную..."; +Blockly.Msg["NEW_VARIABLE"] = "Создать переменную…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Имя новой переменной:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Новый тип переменной:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "разрешить операторы"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "с:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Подпрограмма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Исполняет определённую пользователем процедуру '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Подпрограмма"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Исполняет определённую пользователем процедуру '%1' и возвращает вычисленное значение."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "с:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Создать вызов '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишите эту функцию…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "выполнить что-то"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "чтобы"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Создаёт процедуру, не возвращающую значение."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "вернуть"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Создаёт процедуру, возвращающую значение."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Предупреждение: эта функция имеет повторяющиеся параметры."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Выделить определение процедуры"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Если первое значение истинно, возвращает второе значение."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Предупреждение: Этот блок может использоваться только внутри определения функции."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "имя параметра:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Добавить входной параметр в функцию."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "параметры"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Добавить, удалить или изменить порядок входных параметров для этой функции."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Повторить"; +Blockly.Msg["REMOVE_COMMENT"] = "Удалить комментарий"; +Blockly.Msg["RENAME_VARIABLE"] = "Переименовать переменную…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Переименовать все переменные '%1' в:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "к %1 добавить текст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Добавить текст к переменной «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "в строчные буквы"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "в Заглавные Начальные Буквы"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "в ЗАГЛАВНЫЕ БУКВЫ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Возвращает копию текста с ЗАГЛАВНЫМИ или строчными буквами."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "взять первую букву"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "взять букву № с конца"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "взять букву №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "взять последнюю букву"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "взять случайную букву"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "в тексте %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Возвращает букву в указанной позиции."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "подсчитать количество %1 в %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Подсчитать, сколько раз отрывок текста появляется в другом тексте."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Добавить элемент к тексту."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "соединить"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Добавьте, удалите, переставьте фрагменты для переделки текстового блока."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "по букву № с конца"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "по букву №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "по последнюю букву"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "в тексте"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "взять подстроку с первой буквы"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "взять подстроку с буквы № с конца"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "взять подстроку с буквы №"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Возвращает указанную часть текста."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "найти первое вхождение текста"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "найти последнее вхождение текста"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "в тексте %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Возвращает номер позиции первого/последнего вхождения первого текста во втором. Возвращает %1, если текст не найден."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 пуст"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Возвращает значение истина, если предоставленный текст пуст."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "создать текст из"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Создаёт фрагмент текста, объединяя любое число элементов"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "длина %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Возвращает число символов (включая пробелы) в заданном тексте."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "напечатать %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Печатает текст, число или другой объект."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запросить у пользователя число."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запросить у пользователя текст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запросить число с подсказкой"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запросить текст с подсказкой"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "заменить %1 на %2 в %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Заменить все вхождения некоторого текста другим текстом."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "изменить порядок на обратный %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Меняет порядок символов в тексте на обратный."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ru.wikipedia.org/wiki/Строковый_тип"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Буква, слово или строка текста."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "обрезать пробелы с двух сторон"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "обрезать пробелы слева"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "обрезать пробелы справа"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Возвращает копию текста с пробелами, удалёнными с одного или обоих концов."; +Blockly.Msg["TODAY"] = "Сегодня"; +Blockly.Msg["UNDO"] = "Отменить"; +Blockly.Msg["UNNAMED_KEY"] = "без названия"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Создать блок \"присвоить\" для %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Возвращает значение этой переменной."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "присвоить %1 = %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Создать вставку %1"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Присваивает переменной значение вставки."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Переменная с именем '%1' уже существует."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Название переменной '%1' уже используется другой типа: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Рабочая область Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Напишите здесь что-нибудь..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sc.js b/blockly/msg/sc.js new file mode 100644 index 00000000000..5af077bc6f2 --- /dev/null +++ b/blockly/msg/sc.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Agiunghe unu cumentu"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muda valori:"; +Blockly.Msg["CLEAN_UP"] = "Lìmpia is brocus"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Serra e stringi Brocus"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Serra e stringi Brocu"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colori 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colori 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "raportu"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mestura"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Amestura duus coloris cun unu raportu (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Scebera unu colori de sa tauledda."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "Unu colori a brítiu"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Scebera unu colori a brítiu."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "birdi"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "arrùbiu"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colora cun"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Cuncorda unu colori cun su tanti de arrubiu, birdi, e blue. Totu is valoris depint essi intra 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "sàrtiat a foras de sa lòriga"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "sighit cun su repicu afatànti"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bessit de sa lòriga."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sartiat su chi abarrat de sa loriga, e sighit cun su repicu afatànti."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Amonestu: Custu brocu ddu podis ponni sceti aintru de una lòriga."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "po dònnia item %1 in lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Po dònnia item in sa lista, ponit sa variàbili '%1' pari a s'item, e tandu fait pariga de cumandus."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "po %1 de %2 fintzas %3 a passus de %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fait pigai a sa variàbili \"%1\" i valoris de su primu numeru a s'urtimu, a su passu impostau e fait su brocu."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Aciungi una cunditzioni a su brocu si."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Aciungi una urtima cunditzioni piga-totu a su brocu si."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu si."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sinuncas"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sinuncas si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si su valori est berus, tandu fait pariga de cumandus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si su valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, fai su segundu brocu de is cumandus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si su primu valori est beridadi, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est beridadi, fai su segundu brocu de is cumandus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si su primu valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est berus, fai su segundu brocu de is cumandus. Si mancu unu valori est berus, tandu fai s'urtimu brocu de is cumandus."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fai"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repiti %1 bortas"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Fait pariga de cumandus prus bortas."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repiti fintzas"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repiti interis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Interis su valori est frassu, tandu fai pariga de cumandus."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Interis su valori est berus, tandu fai pariga de cumandus."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Scancellu su %1 de is brocus?"; +Blockly.Msg["DELETE_BLOCK"] = "Fùlia Blocu"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Fulia %1 Blocus"; +Blockly.Msg["DIALOG_CANCEL"] = "Annulla"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disabìlita Blocu"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dùplica"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Abìlita Blocu"; +Blockly.Msg["EXPAND_ALL"] = "Aberi Brocus"; +Blockly.Msg["EXPAND_BLOCK"] = "Aberi Brocu"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Intradas esternas"; +Blockly.Msg["HELP"] = "Agiudu"; +Blockly.Msg["INLINE_INPUTS"] = "Intradas in lìnia"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "fait una lista buida"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Torrat una lista, de longària 0, chena records de datus."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "fait una lista cun"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Acciungi unu item a sa lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Fait una lista cun calisiollat numeru de items."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primu"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# de sa fini"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "piga"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "piga e fùlia"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "urtimu"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "a brìtiu (random)"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fùlia"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Torrat su primu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Torrat s'elementu de su postu inditau de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Torrat s'urtimu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Torrat un'elementu a brìtiu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fùliat e torrat su primu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fùliat e torrat s'elementu de su postu inditau de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fùliat e torrat s'urtimu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fùliat e torrat un'elementu a brìtiu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fùliat su primu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fùliat s'elementu de su postu inditau de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fùliat s'urtimu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fùliat unu elementu a brìtiu de una lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "a # de sa fini"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fintzas a #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "a s'urtimu"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "bogandi suta-lista de su primu"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "bogandi suta-lista de # de sa fini."; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "bogandi suta-lista de #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Fait una copia de sa parti inditada de sa lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 est po s'urtimu elementu."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 est po su primu elementu."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "circa prima ocasioni de s'item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "circa urtima ocasioni de s'item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Torrat s'indixi de sa primu/urtima ocasioni de s'item in sa lista. Torrat %1 si s'item non s'agatat."; +Blockly.Msg["LISTS_INLIST"] = "in lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 est buidu"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Torrat berus si sa lista est buida."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longària de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Torrat sa longària de una lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "fait una lista cun item %1 repitiu %2 bortas"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Fait una lista cun unu numeru giau repitiu su tanti de is bortas inditadas."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "a"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserta a"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "imposta"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insertat s'elementu a su cumintzu de sa lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insertat s'elementu in su postu inditau in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Aciungit s'elementu a sa fini de sa lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Aciungit s'elementu a brítiu in sa lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Impostat su primu elementu in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Impostat s'elementu in su postu inditau de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Impostat s'urtimu elementu in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Impostat unu elementu random in una lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fai una lista de unu testu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fai unu testu de una lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Auni una lista de testus in d-unu sceti, ponendi separadoris."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividi su testu in un'elencu de testus, firmendi po dònnia separadori."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "cun separadori"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "frassu"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Torrat berus o frassu."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "berus"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Torrat berus si is inputs funt unu uguali a s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Torrat berus si su primu input est prus mannu de s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Torrat berus si su primu input est prus mannu o uguali a s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Torrat berus si su primu input est prus piticu de s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Torrat berus si su primu input est prus piticu o uguali a s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Torrat berus si is inputs non funt unu uguali a s'àteru."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Torrat berus si s'input est frassu. Torrat frassu si s'input est berus."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Torrat null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Torrat berus si ambos is inputs funt berus."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Torrat berus si assumancu unu de is inputs est berus."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "cumpròa"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si frassu"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si berus"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "‎Cumproa sa cunditzioni in 'cumproa'. Si sa cunditzioni est berus, torrat su valori 'si berus'; sinuncas torrat su valori 'si frassu'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Torrat sa summa de is duus nùmerus."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Torrat su cuotzienti de is duus nùmerus."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Torrat sa diferèntzia de is duus nùmerus."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Torrat su produtu de is duus nùmerus."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Torrat su primu numeru artziau a sa potenza de su segundu nùmeru."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "muda %1 de %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Aciungi unu numeru a sa variabili '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Torrat una de is costantis comunas: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), o ∞ (infiniu)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "custringi %1 de %2 a %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Custringi unu numeru aintru de is liminaxus giaus (cumprendius)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "fait a ddu dividi po"; +Blockly.Msg["MATH_IS_EVEN"] = "est paris"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "est negativu"; +Blockly.Msg["MATH_IS_ODD"] = "est dísparu"; +Blockly.Msg["MATH_IS_POSITIVE"] = "est positivu"; +Blockly.Msg["MATH_IS_PRIME"] = "est primu"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Cumprova si unu numeru est paris, dìsparis, primu, intreu, positivu, negativu o si fait a ddu dividi po unu numeru giau. Torrat berus o frassu."; +Blockly.Msg["MATH_IS_WHOLE"] = "est intreu"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "arrestu de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Torrat s'arrestu de sa divisioni de duus numerus."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Unu numeru"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mèdia de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "massimu de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medianu de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimu de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modas de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "unu item a brìtiu de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviadura standard de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma sa lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Torrat sa mèdia (aritimètica) de is valoris de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Torrat su numeru prus mannu de sa lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Torrat su numeru medianu de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Torrat su numeru prus piticu de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Torrat una lista de is itams prus frecuentis de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Torrat unu item a brìtiu de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Torrat sa deviadura standard de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Torrat sa suma de totu is numerus de sa lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "una fratzioni a brìtiu"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Torrat una fratzioni a brìtiu intra 0.0 (cumpresu) e 1.0 (bogau)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "numeru intreu a brítiu de %1 a %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Torrat unu numeru intreu a brìtiu intra duus nùmerus giaus (cumpresus)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arretunda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arretunda faci a bàsciu."; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Arretunda faci a susu"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arretunda unu numeru faci a susu o faci a bàsciu."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "assolutu"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "arraxina cuadra"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Torrat su valori assolútu de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Torrat (e) a sa potèntzia de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Torrat su logaritmu naturali de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Torrat su logaritmu a basi 10 de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Torrat su valori negau de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Torrat (10) a sa potèntzia de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Torrat s'arraxina cuadra de unu numeru."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Torrat su arccosinu de unu numeru."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Torrat su arcsinu de unu numeru."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Torrat su arctangenti de unu numeru."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Torrat su cosinu de unu gradu (no radianti)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Torrat su sinu de unu gradu (no radianti)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Torrat sa tangenti de unu gradu (no radianti)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Variabili noa..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nòmini de sa variabili noa:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permiti decraratzionis"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Arròllia sa funtzione '%1' cuncordada dae s'impitadore."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Arròllia sa funtzione '%1' cuncordada dae s'impitadore e imprea s'output suu."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "cun"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ingenerau'%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fait calincuna cosa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "po"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Fait una funtzioni chena output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "torrat"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Fait una funtzioni cun output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Amonestu: Custa funtzioni tenit parametrus duplicaus."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Marca sa definitzioni de funtzioni."; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si unu valori est berus, tandu torrat unu segundu valori."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Amonestu: Custu brocu ddu podis ponni sceti aintru de una funtzioni."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nomini input:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Aciungi un input a sa funtzioni."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Aciungi, fùlia, o assenta is inputs a custa funtzioni."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Fùlia unu cumentu"; +Blockly.Msg["RENAME_VARIABLE"] = "Muda nòmini a variabili..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "A is variabilis '%1' muda nòmini a:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 acciungi su testu %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Aciungit testu a sa variàbili '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "a minúdu"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "cun Primu lìtera a Mauschínu"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "a mauschínu"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Torrat una copia de su testu inditau mudendi mauschínu/minúdu."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "piga sa prima lìtera"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "piga sa lìtera # de sa fini"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "piga sa lìtera #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "piga s'urtima lìtera"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "piga una lìtera a brìtiu"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Torrat sa lìtera de su postu giau."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Acciungi unu item a su testu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "auni a pari"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu de testu."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "a sa lìtera # de sa fini"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "a sa lìtera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "a s'urtima lìtera"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in su testu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "piga suta-stringa de sa primu lìtera"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "piga suta-stringa de sa lìtera # fintzas a fini"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "piga suta-stringa de sa lìtera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Torrat su testu inditau."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "circa prima ocasioni de su testu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "circa urtima ocasioni de su testu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in su testu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Torrat s'indixi de sa primu/urtima ocasioni de su primu testu in su segundu testu. Torrat %1 si su testu no ddu agatat."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 est buidu"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Torrat berus si su testu giau est buidu."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "scri testu cun"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Fait unu testu ponendi a pari parigas de items."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longària de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Torrat su numeru de lìteras (cun is spàtzius) in su testu giau."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "scri %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Scri su testu, numeru o àteru valori."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pregonta unu nùmeru a s'impitadore."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pregonta testu a s'impitadore."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pregonta po unu numeru"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "pregonta po su testu"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una lìtera, paràula, o linia de testu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "bogat spàtzius de ambus càbudus de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "bogat spàtzius de su càbudu de manca de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "bogat spàtzius de su càbudu de dereta de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Torrat una copia de su testu bogaus is spàtzius de unu o de ambus is càbudus."; +Blockly.Msg["TODAY"] = "Oe"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Fait 'imposta %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Torrat su valori de custa variabili."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "imposta %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Fait 'piga %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Imposta custa variabili uguali a s'input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sco.js b/blockly/msg/sco.js new file mode 100644 index 00000000000..db41d06978f --- /dev/null +++ b/blockly/msg/sco.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Eik aen input tae the function."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Eik, remuiv, or reorder inputs tae this function."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sd.js b/blockly/msg/sd.js new file mode 100644 index 00000000000..0a37e89045b --- /dev/null +++ b/blockly/msg/sd.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "رايو ڏيو"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "قدر بدلايو"; +Blockly.Msg["CLEAN_UP"] = "بلاڪ صاف ڪيو"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "بلاڪَ ڍڪيو"; +Blockly.Msg["COLLAPSE_BLOCK"] = "بلاڪ ڍڪيو"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "تناسب"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "گڏيل"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ڄاڻايل تناسب سان ٻہ رنگ پاڻ ۾ ملايو (0.0-1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "رنگ دٻيءَ مان رنگ چونڊيو."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "بنا ترتيب رنگ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ڪو بہ ‌رنگ چونڊيو."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "نيرو"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سائو"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ڳاڙهو"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "سان رڱيو"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ڳاڙهي، سائي، ۽ نيري جو مقدار ڄاڻائي گھربل رنگ ٺاهيو. سمورا قدر 0 ۽ 100 جي وچ ۾ هجن."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "چڪر مان ٻاهر نڪرو"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "چڪر جاري رکندي نئين ڦيري پايو"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "نہ تہ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "نہ تہ جي"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "جيڪڏهن"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ڪريو"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "1٪ ڀيرا ورجايو"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ورجايو جيستائين"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ورجايو جڏهن"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "سڀ %1 بلاڪ ڊاھيون؟"; +Blockly.Msg["DELETE_BLOCK"] = "بلاڪ ڊاهيو"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "1٪ بلاڪ ڊاهيو"; +Blockly.Msg["DIALOG_CANCEL"] = "رد"; +Blockly.Msg["DIALOG_OK"] = "ٺيڪ"; +Blockly.Msg["DISABLE_BLOCK"] = "بلاڪ کي غيرفعال بڻايو"; +Blockly.Msg["DUPLICATE_BLOCK"] = "نقل"; +Blockly.Msg["DUPLICATE_COMMENT"] = "نقل رايو"; +Blockly.Msg["ENABLE_BLOCK"] = "بلاڪ کي فعال بڻايو"; +Blockly.Msg["EXPAND_ALL"] = "بلاڪَ نمايو"; +Blockly.Msg["EXPAND_BLOCK"] = "بلاڪ نمايو"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ٻاهريون داخلائون"; +Blockly.Msg["HELP"] = "مدد"; +Blockly.Msg["INLINE_INPUTS"] = "اِنلائين اِن پٽس"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "خالي فهرست تخليق ڪريو"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لسٽ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "سان فهرست تخليق ڪيو"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "فهرست ۾ ڪا شي شامل ڪريو."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "پهريون"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# آخر کان"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخري"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "بي ترتيب"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "هٽايو"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ڏانهن # آخر کان"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ڏانهن #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "آخري ڏانهن"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "فهرست ۾"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالي آهي"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "جيان"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "تي داخل ڪريو"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ميڙ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "اُڀو (اَسينڊنگ)"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "ترتيب ڏيو %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "الف ب وار (الفابيٽڪ)"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ڪُوڙ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "درست يا غير درست وراڻي ٿو."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سچ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "جيڪڏهن ٻئي ان پُٽس برابر آهن تہ درست وراڻيو"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي تہ درست وراڻيو."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي يا ٻئي برابر آهن تہ درست وراڻيو."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي تہ درست وراڻيو"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي يا ٻئي برابر آهن تہ درست وراڻيو"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "جيڪڏهن ٻئي ان پُٽس اڻ برابر آهن تہ درست وراڻيو"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نڪي %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ان پُٽ غير درست آهي تہ درست وراڻيو. ان پُٽ درست آهي تہ غير درست وراڻيو."; +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "۽"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "يا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "جيڪڏهن ٻئي ان پُٽ درست آهن تہ درست وراڻيو."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "جيڪڏهن ٻنهي ان پُٽس مان ڪو هڪ بہ درست آهي تہ درست وراڻيو."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "پرک (ٽيسٽ)"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "جيڪڏهن ڪوڙو"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "جيڪڏهن سچو"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ٻن انگن جي جوڙ اپت ڏيو."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "ٻنهي انگن جي ونڊ ڏيو."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "ٻنهي انگن جو تفاوت ڏيو."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "ٻنهي انگن جي ضرب اُپت ڏيو."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 کي %2 سان مَٽايو"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/رياضياتي استقلال"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "سان ونڊجندڙ آهي"; +Blockly.Msg["MATH_IS_EVEN"] = "ٻڌي آهي"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ڪاٽو آهي"; +Blockly.Msg["MATH_IS_ODD"] = "اِڪي آهي"; +Blockly.Msg["MATH_IS_POSITIVE"] = "واڌو آهي"; +Blockly.Msg["MATH_IS_PRIME"] = "مفرد آهي"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "سڄو آهي"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ڪو انگ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "لسٽ جي سراسري"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "لسٽ جو وڏي ۾ وڏو قدر"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "لسٽ جو مڌيان"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "لسٽ جو ننڍي ۾ ننڍو قدر"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "فهرست جا طريقيڪا (موڊز آف لسٽ)"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "بي ترتيب جذن جي فهرست (رينڊم آئيٽم آف لسٽ)"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "فهرست جو وچور"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "لسٽ ۾ وڏي کان وڏو قدر ڄاڻايو."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "لسٽ جو مڌيان انگ ڄاڻايو."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "لسٽ ۾ ننڍي کان ننڍو قدر ڄاڻايو."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "هيٺ ڦيرايو (رائونڊ ڊائون)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ويڙهيو (رائونڊ اَپ)"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/ٻيون مول"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ٺپ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ٻيون مول"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ڪنهن انگ جو قدرتي لاگ ڄاڻايو."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ڪنهن انگ جو 10 بنيادي لاگ ڄاڻايو."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ڪنهن انگ جو ڪاٽو ڄاڻايو."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ڪنهن انگ جو ٻيون مول ڄاڻايو."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/ٽڪنڊور ڪاڄ"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "نئون ڦرڻو..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ڦرڻي جو نئون نالو:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "سان:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "سان:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "تخليق ڪريو '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ڪجھ ڪريو"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ڏانهن"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "واپس ورو"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ان پُٽس"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ٻيهر ڪريو"; +Blockly.Msg["REMOVE_COMMENT"] = "رايو ڊاهيو"; +Blockly.Msg["RENAME_VARIABLE"] = "ڦرڻي کي نئون نالو ڏيو..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ننڍن اکر ڏانهن"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "وڏن اکرن ڏانهن"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "ڳڻيو %1 ۾ %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "شامل ٿيو"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "متن ۾"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "۾ متن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "سان مواد تخليق ڪيو (ڪريئيٽ ٽيڪسٽ وِد)"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "ڇاپيو %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "ڄاڻايل تحرير، انگ يا ڪو ٻيو قدر ڇاپيو."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "اڄ"; +Blockly.Msg["UNDO"] = "اڻڪريو"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "اسم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/shn.js b/blockly/msg/shn.js new file mode 100644 index 00000000000..9ee2ae49537 --- /dev/null +++ b/blockly/msg/shn.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "သႂ်ႇၶေႃႈၶႆႈၸႂ်"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "လႅၵ်ႈလၢႆႈၼမ်ႉၵတ်ႉ"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "လွင်ႈႁႄႉတတ်းၸိူဝ်းလႅဝ်"; +Blockly.Msg["COLLAPSE_BLOCK"] = "လွင်ႈႁႄႉတတ်းလႅဝ်"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "သီ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "သီ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "သႅၼ်း"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "လေႃးလႄး"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ဢဝ်သီသွင်ဢၼ်လေႃးၵၼ် ၸွမ်းၼမ် သႅၼ်းဢၼ်ပၼ်ဝႆႉ (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color သီ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "လိူၵ်ႈသီ တမ်ႈတီႈ ၽႃးလႅတ်ႉ"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "သီလၢမ်းလိမ်း"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "လိူၵ်ႈသီတမ်ႈတီႈလွၵ်းလၢမ်းလိမ်း"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "သွမ်ႇ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ၶဵဝ်"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "လီင်"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ႁူမ်ႈၵိုၵ်းသီ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ႁဵတ်းတူၺ်း သီဢၼ်ၼိုင်ႈ ၸွမ်းၼင်ႇမၵ်းမၼ်ႈဝႆႉ ၼႂ်းၶႂၢင်ႇ သီလႅင်, ၶဵဝ် လႄႈ သွမ်ႇ။ ၼမ်ႉၼၵ်းသီ တေလႆႈမီးၼႂ်းဝူင်ႈၵၢင် 0 တေႃႇ 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ဢွၵ်ႇတီႈၶွပ်ႇမူၼ်း"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "သိုပ်ႇပၼ်ႇထႅင်ႈ ၶွပ်ႇမူၼ်းတၢင်ႇဢၼ်"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ၵိုတ်းပႅတ်ႈ ၶွပ်ႇမူၼ်း ဢၼ်မီးဝႆႉ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ဝဵၼ်ႉဝႆႉ ၶွပ်ႇမူၼ်း ဢၼ်ၵိုတ်းၸိူဝ်ႈဝႆႉ, သေ သိုပ်ႇထႅင်ႈတၢင်ႇဢၼ်"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ၾၢင်ႉ: ပလွၵ်ႉဢၼ်ၼႆႉ ၵူၺ်းၸႂ်ႉလူၺ်ႈတႃႇ ၶွပ်ႇမူၼ်းၵူၺ်း"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "တႃႇၵူႈဢၼ်ဢၼ် ၼႂ်း %1 သဵၼ်ႈမၢႆ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "တႄႇဢၢၼ်ႇၵိုၵ်း %1 တေႃႇ %2 တေႃႇ %3 လူၺ်ႈ %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "သင်ဝႃႈ ပလွၵ်ႉၸိုင် သႂ်ႇပၼ်လွင်ႈတၢင်းမၼ်း တမ်ႈ"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "သႂ်ႇၵမ်းလိုၼ်း, သင်ဝႃႈ ပလွၵ်ႉၸိုင် ဢဝ်လွင်ႈတၢင်းမၼ်းတင်းသဵင်ႈ တမ်ႈ"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "လိူဝ်သေၼၼ်ႉ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "သင်ဝႃႈ လိူဝ်သေၼၼ်ႉ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "သင်ဝႃႈ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႉၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆသွင်မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ, သင်ဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢႆသွင် မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ) ဢမ်ႇမီးလွင်ႈမၢၼ်ႇမႅၼ်ႈ သင်ၸိုင် ႁဵတ်းပႅတ်ႈပလွၵ်ႉ ၵမ်းလိုမ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop တႃႇတူင်ႇမူၼ်း"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ႁဵတ်း"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ပၼ်ႇၶိုၼ်း %1 ၵမ်း"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ တင်းၼမ်"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "တိုၵ်ႉလိုမ်ႉထိုင်"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ၶၢဝ်းတိုၵ်ႉလိုမ်ႉ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ဢမ်ႇမၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ် ၵမ်ႈၽွင်ႈ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "မွတ်ႇပလွၵ်ႉ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "မွတ်ႇလွင်ႈႁႄႉတတ်း %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ဢိုတ်းၸႂ်ႉ လွင်ႈႁႄႉတတ်း"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ထုတ်ႇ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ပိုတ်ႇၸႂ်ႉ လွင်ႈႁႄႉတတ်း"; +Blockly.Msg["EXPAND_ALL"] = "ၶႂၢၵ်ႈၸိူဝ်းႁႄႉတတ်း"; +Blockly.Msg["EXPAND_BLOCK"] = "ၶႂၢၵ်ႈလွင်ႈႁႄႉတတ်း"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ၶိူင်ႈဢၼ်လုၵ်ႉတၢင်းၼွၵ်ႈၶဝ်ႈမႃး"; +Blockly.Msg["HELP"] = "ၸွႆႈထႅမ်"; +Blockly.Msg["INLINE_INPUTS"] = "ၶိူင်ႈဢၼ်ၶဝ်ႈမႃးၸွမ်းလႅင်း"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ဢမ်ႇၼႅၼ်ႈၼႃ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "မၢၼ်ႇမႅၼ်ႈလႄႈသင် ဢမ်ႇၼႅၼ်ႈၼႃလႄႈသင် ႁူၼ်ၶိုၼ်း"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "မၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(ပၢႆးၼပ်ႉ)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် မိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် ဢမ်ႇမိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ဢမ်ႇၸႂ်ႈ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢမ်ႇၼႅၼ်ႈၼႃၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ။ သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢၼ်ႇမႅၼ်ႈၸိုင် ၶိုၼ်းမူၼ်ႉမႄး ႁႂ်ႈၼႅၼ်ႈၼႃ"; +Blockly.Msg["LOGIC_NULL"] = "ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "လဵဝ်ၶိုၼ်း ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "လႄႈ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ဢမ်ႇၼၼ်"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင်ဢၼ် မၢၼ်ႇမႅၼ်ႈၸိုင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ၵမ်းလိုၼ်းသုတ်း မၢၼ်ႇမႅၼ်ႈၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ၸၢမ်း"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "သင်ဝႃႈ ဢမ်ႇၼႅၼ်ႈၼႃ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "သင်ဝႃႈ မၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "ၸၢမ်းၵူတ်ႇတူၺ်း သၢႆငၢႆ။ သင်ဝႃႈ သၢႆငၢႆမၢၼ်ႇမႅၼ်ႈ, လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်မၢၼ်ႇမႅၼ်ႈ'; လိူဝ်ၼၼ်ႉ လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်ဢမ်ႇၼႅၼ်ႈၼႃ'။"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/ပၢႆးၼပ်ႉ"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "လဵဝ်ၶိုၼ်း တၢင်းၼမ် ၼႂ်းမၢႆၼပ်ႉ သွင်"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "လဵဝ်ၶိုၼ်း ပမႃႇၼ ၼႂ်းမၢႆၼပ်ႉ သွင်"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "လဵဝ်ၶိုၼ်း ဢၼ်ပႅၵ်ႇပိူင်ႈ ၼႂ်းမၢႆၼပ်ႉ သွင်"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "လဵဝ်ၶိုၼ်း ဢၼ်ဢဝ်ဢွၵ်ႇ ၼႂ်းမၢႆၼပ်ႉ သွင်"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "လဵဝ်ၶိုၼ်း တူဝ်ၼပ်ႉမၢႆၼိုင်ႈၼႆႉ ၸွႆႈႁႅင်းပၼ် တူဝ်ၼပ်ႉမၢႆသွင်"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "ပဵၼ်ၵူပ်ႉ"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "ပဵၼ်ၵိၵ်ႈ"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/မၢႆၼပ်ႉ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "မၢႆၼပ်ႉ ၼိုင်ႈဢၼ်"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root (မၢႆတူပ်ႉမိူၼ်)"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ပၵတိ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "မၢႆတူပ်ႉမိူၼ်"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ပၵတိ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "လဵဝ်ၶိုၼ်း e ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "လဵဝ်ၶိုၼ်း လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "လဵဝ်ၶိုၼ်း ပိုၼ်ႉထၢၼ် 10 လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "လဵဝ်ၶိုၼ်း ဢၼ်သၢၼ်ၶတ်း ၼႂ်း မၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "လဵဝ်ၶိုၼ်း 10 ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "လဵဝ်ၶိုၼ်း မၢႆတူပ်ႉမိူၼ် ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ၵေႃႇသၢင်ႈ တူဝ်ၼိုင်..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ၸိုဝ်ႈဢၼ်လၢႆႈမႂ်ႇ"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "ထွၼ်ပႅတ်ႈ ၶေႃႈၶႆႈၸႂ်"; +Blockly.Msg["RENAME_VARIABLE"] = "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇ"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇၸိူဝ်းၼၼ်ႉ '%1' ထိုင်"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "မိူဝ်ႈၼႆႉ"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ဢၼ်"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/si.js b/blockly/msg/si.js new file mode 100644 index 00000000000..512d3a18017 --- /dev/null +++ b/blockly/msg/si.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "නිල්"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "කොළ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "රතු"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "රූපතහඩු %1 මකාදමන්න"; +Blockly.Msg["DIALOG_CANCEL"] = "අවලංගු කරන්න"; +Blockly.Msg["DIALOG_OK"] = "හරි"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "රූපතහඩු විහිදන්න"; +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "උදව්"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "අයිතමය"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sk.js b/blockly/msg/sk.js new file mode 100644 index 00000000000..c201946ed08 --- /dev/null +++ b/blockly/msg/sk.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Pridať komentár"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nie je možné zmazať premennú „%1“, pretože je súčasťou definície funkcie „%2“"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Zmeniť hodnotu:"; +Blockly.Msg["CLEAN_UP"] = "Narovnať bloky"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Zrútené bloky obsahujú varovanie."; +Blockly.Msg["COLLAPSE_ALL"] = "Zvinúť bloky"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Zvinúť blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "farba 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "farba 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "pomer"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "zmiešať"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Zmieša dve farby v danom pomere (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Zvoľte farbu z palety."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "náhodná farba"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zvoliť farbu náhodne."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "modrá"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelená"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "červená"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ofarbiť s"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Vytvoriť farbu pomocou zadaného množstva červenej, zelenej a modrej. Množstvo musí byť medzi 0 a 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "opustiť slučku"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "prejdi na nasledujúce opakovanie slučky"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Opustiť túto slučku."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Vynechať zvyšok tejto slučky a pokračovať ďalším opakovaním."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozornenie: Tento blok sa môže používať len v rámci slučky."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pre každý prvok %1 v zozname %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pre každý prvok v zozname priraď jeho hodnotu do premenej '%1' a vykonaj príkazy."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "počítať s %1 od %2 do %3 o %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Nechá premennú '%1' nadobúdať hodnoty od začiatočného čísla po konečné s daným medzikrokom a vykoná zadané bloky."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Pridať podmienku k \"ak\" bloku."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Pridať poslednú záchytnú podmienku k \"ak\" bloku."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Pridať, odstrániť alebo zmeniť poradie oddielov tohto \"ak\" bloku."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "inak"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inak ak"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ak"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ak je hodnota pravda, vykonaj príkazy."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ak je hodnota pravda, vykonaj príkazy v prvom bloku. Inak vykonaj príkazy v druhom bloku."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku. Ak ani jedna hodnota nie je pravda, vykonaj príkazy v poslednom bloku."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "rob"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "opakuj %1 krát"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Opakuj určité príkazy viackrát."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "opakuj kým nebude"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "opakuj kým"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Kým je hodnota nepravdivá, vykonávaj príkazy."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Kým je hodnota pravdivá, vykonávaj príkazy."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Zmazať všetkých %1 dielcov?"; +Blockly.Msg["DELETE_BLOCK"] = "Odstrániť blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Odstrániť premennú '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Odstrániť %1 použití premennej '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Odstrániť %1 blokov"; +Blockly.Msg["DIALOG_CANCEL"] = "Zrušiť"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Vypnúť blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikovať"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicitný komentár"; +Blockly.Msg["ENABLE_BLOCK"] = "Povoliť blok"; +Blockly.Msg["EXPAND_ALL"] = "Rozvinúť bloky"; +Blockly.Msg["EXPAND_BLOCK"] = "Rozvinúť blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Vonkajšie vstupy"; +Blockly.Msg["HELP"] = "Pomoc"; +Blockly.Msg["INLINE_INPUTS"] = "Riadkové vstupy"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "prázdny zoznam"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vráti zoznam nulovej dĺžky, ktorý neobsahuje žiadne prvky."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "zoznam"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Pridaj, odstráň alebo zmeň poradie v tomto zoznamovom bloku."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "vytvor zoznam s"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Pridaj prvok do zoznamu."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Vytvor zoznam s ľubovoľným počtom prvkov."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prvý"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od konca"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "zisti"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "zisti a odstráň"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "posledný"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "náhodný"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "odstráň"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vráti počiatočný prvok zoznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vráti prvok na určenej pozícii v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vráti posledný prvok zoznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vráti náhodný prvok zoznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Odstráni a vráti prvý prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Odstráni a vráti prvok z určenej pozície v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Odstráni a vráti posledný prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Odstráni a vráti náhodný prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Odstráni prvý prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Odstráni prvok na určenej pozícii v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Odstráni posledný prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Odstráni náhodný prvok v zozname."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "po # od konca"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "po #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "po koniec"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Získať podzoznam od začiatku"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "Získať podzoznam od # od konca"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "získať podzoznam od #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Skopíruje určený úsek zoznamu."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je posledný prvok."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je počiatočný prvok."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "nájdi prvý výskyt prvku"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "nájdi posledný výskyt prvku"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vráti index prvého/posledného výskytu prvku v zozname. Ak sa nič nenašlo, vráti %1."; +Blockly.Msg["LISTS_INLIST"] = "v zozname"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prázdny"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vráti pravda, ak je zoznam prázdny."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dĺžka %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vráti dĺžku zoznamu"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "vytvor zoznam s prvkom %1 opakovaným %2 krát"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Vytvorí zoznam s niekoľkými rovnakými prvkami s danou hodnotou."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrátiť %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrátiť kópiu zoznamu."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ako"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "vložiť na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "nastaviť"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Vsunie prvok na začiatok zoznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Vsunie prvok na určenú pozíciu v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Pripojí prvok na koniec zoznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Vsunie prvok na náhodné miesto v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Nastaví prvý prvok v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Nastaví prvok na určenej pozícii v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Nastaví posledný prvok v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Nastaví posledný prvok v zozname."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "Vzostupne"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "Zostupne"; +Blockly.Msg["LISTS_SORT_TITLE"] = "zoradiť %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Zoradiť kópiu zoznamu."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecedne, ignorovať veľkosť písmen"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numericky"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abecedne"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "vytvoriť zoznam z textu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "vytvoriť text zo zoznamu"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Spojiť zoznam textov do jedného textu s oddeľovačmi."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Rozdelenie textu do zoznamu textov, lámanie na oddeľovačoch."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "s oddeľovačom"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "nepravda"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vráť buď hodnotu pravda alebo nepravda."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "pravda"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vráť hodnotu pravda, ak sú vstupy rovnaké."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vráť hodnotu pravda ak prvý vstup je väčší než druhý."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vráť hodnotu pravda ak prvý vstup je väčší alebo rovný druhému."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vráť hodnotu pravda, ak prvý vstup je menší než druhý."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vráť hodnotu pravda ak prvý vstup je menší alebo rovný druhému."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vráť hodnotu pravda, ak vstupy nie sú rovnaké."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nie je %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vráti hodnotu pravda, ak je vstup nepravda. Vráti hodnotu nepravda ak je vstup pravda."; +Blockly.Msg["LOGIC_NULL"] = "nič"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vráti hodnotu nula."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "a"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "alebo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vráť hodnotu pravda, ak sú vstupy pravdivé."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vráť hodnotu pravda, ak je aspoň jeden vstup pravda."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ak nepravda"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ak pravda"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Skontroluj podmienku testom. Ak je podmienka pravda, vráť hodnotu \"ak pravda\", inak vráť hodnotu \"ak nepravda\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vráť súčet dvoch čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vráť podiel dvoch čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vráť rozdiel dvoch čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vráť súčin dvoch čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vráť prvé číslo umocnené druhým."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vráťte arktangent bodu (X, Y) v stupňoch od -180 do 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "zmeniť %1 o %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Pridaj číslo do premennej \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant‎"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vráť jednu zo zvyčajných konštánt: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), alebo ∞ (nekonečno)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "obmedz %1 od %2 do %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Obmedzí číslo do zadaných hraníc (vrátane)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je deliteľné"; +Blockly.Msg["MATH_IS_EVEN"] = "je párne"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je záporné"; +Blockly.Msg["MATH_IS_ODD"] = "je nepárne"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je kladné"; +Blockly.Msg["MATH_IS_PRIME"] = "je prvočíslo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Skontroluj či je číslo párne, nepárne, celé, kladné, záporné alebo deliteľné určitým číslom. Vráť hodnotu pravda alebo nepravda."; +Blockly.Msg["MATH_IS_WHOLE"] = "je celé číslo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "zvyšok po delení %1 + %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vráť zvyšok po delení jedného čísla druhým."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Číslo."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "priemer zoznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "najväčšie v zozname"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medián zoznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "najmenšie v zozname"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "najčastejšie v zozname"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "náhodný prvok zoznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "smerodajná odchýlka zoznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "súčet zoznamu"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vráť aritmetický priemer čísel v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vrátiť najväčšie číslo v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vráť medián čísel v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vrátiť najmenšie číslo v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vrátiť najčastejší prvok v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vráť náhodne zvolený prvok zoznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vráť smeroddajnú odchýlku zoznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vráť súčet všetkých čísel v zozname."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "náhodné číslo od 0 do 1"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vráť náhodné číslo z intervalu 0.0 (vrátane) až 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "náhodné celé číslo od %1 do %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vráť náhodné celé číslo z určeného intervalu (vrátane)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokrúhli"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokrúhli nadol"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokrúhli nahor"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokrúhli číslo nahor alebo nadol."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolútna hodnota"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "druhá odmocnina"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vráť absolútnu hodnotu čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vráť e umocnené číslom."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vráť prirodzený logaritmus čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vráť logaritmus čísla so základom 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vráť opačné číslo."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vráť 10 umocnené číslom."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vráť druhú odmocninu čísla."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vráť arkus kosínus čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vráť arkus sínus čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vráť arkus tangens čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vráť kosínus uhla (v stupňoch)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vráť sínus uhla (v stupňoch)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vráť tangens uhla (v stupňoch)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "vytvoriť farbu premennej"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Vytvoriť číselnú premennú..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Vytvoriť reťazovú premennú..."; +Blockly.Msg["NEW_VARIABLE"] = "Vytvoriť premennú..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Názov novej premennej:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "nový typ premennej"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "povoliť príkazy"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://sk.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Spustí používateľom definovanú funkciu '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://sk.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Spustí používateľom definovanú funkciu '%1' a použije jej výstup."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Vytvoriť '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Doplň, čo robí táto funkcia..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "urob niečo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "na"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Vytvorí funciu bez výstupu."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vrátiť"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Vytvorí funkciu s výstupom."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozornenie: Táto funkcia má duplicitné parametre."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Zvýrazniť definíciu funkcie"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ak je hodnota pravda, tak vráti druhú hodnotu."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Upozornenie: Tento blok môže byť len vo vnútri funkcie."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "názov vstupu:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Pridať vstup do funkcie."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "vstupy"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Pridať, odstrániť alebo zmeniť poradie vstupov tejto funkcie."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Znova"; +Blockly.Msg["REMOVE_COMMENT"] = "Odstrániť komentár"; +Blockly.Msg["RENAME_VARIABLE"] = "Premenovať premennú..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Premenovať všetky premenné '%1' na:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "do %1 pridaj text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Pridaj určitý text do premennej '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na malé písmená"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Veľké Začiatočné Písmená"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na VEĽKÉ PÍSMENÁ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vráť kópiu textu s inou veľkosťou písmen."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "zisti prvé písmeno"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "zisti # písmeno od konca"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "zisti písmeno #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "zisti posledné písmeno"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "vyber náhodné písmeno"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "v texte %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vráti písmeno na určenej pozícii."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "počet výskytov %1 v %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Počet výskytov textu nachádzajúcom sa v inom texte."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Pridaj prvok do textu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "spoj"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Pridaj, odstráň alebo zmeň poradie oddielov v tomto textovom bloku."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "po # písmeno od konca"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "po písmeno #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "po koniec"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "v texte"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "vyber podreťazec od začiatku"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "vyber podreťazec od # písmena od konca"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "vyber podreťazec od písmena #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Vráti určenú časť textu."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "nájdi prvý výskyt textu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "nájdi posledný výskyt textu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "v texte %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vráti index prvého/posledného výskytu prvého textu v druhom texte. Ak nenájde, vráti %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prázdny"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vráti hodnotu pravda, ak zadaný text je prázdny."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "vytvor text z"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Vytvor text spojením určitého počtu prvkov."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dĺžka %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vráti počet písmen (s medzerami) v zadanom texte."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "píš %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Napíš zadaný text, číslo alebo hodnotu."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Výzva pre používateľa na zadanie čísla."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Výzva pre používateľa na zadanie textu."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "výzva na zadanie čísla so správou"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "výzva za zadanie textu so správou"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zameniť %1 za %2 v reťazci %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zameniť všetky výskyty textu za iný text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "text odzadu %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Obrátiť poradie písmen v texte."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Písmeno, slovo alebo riadok textu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "odstráň medzery z oboch strán"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "odstráň medzery z ľavej strany"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "odstráň medzery z pravej strany"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vráť kópiu textu bez medzier na jednom alebo oboch koncoch."; +Blockly.Msg["TODAY"] = "Dnes"; +Blockly.Msg["UNDO"] = "Späť"; +Blockly.Msg["UNNAMED_KEY"] = "nepomenované"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "prvok"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Vytvoriť \"nastaviť %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vráti hodnotu tejto premennej."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "nastaviť %1 na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Vytvoriť \"získať %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Nastaví túto premennú, aby sa rovnala vstupu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Premenná s názvom %1 už existuje."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Premenná s názvom '%1' už existuje pre inú premennú typu '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Pracovisko Bloskly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Povedz niečo..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/skr-arab.js b/blockly/msg/skr-arab.js new file mode 100644 index 00000000000..a39648c89ca --- /dev/null +++ b/blockly/msg/skr-arab.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "تبصرہ کرو"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ویلیو تبدیل کرو:"; +Blockly.Msg["CLEAN_UP"] = "بلاک صاف کرو"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "بلاک کٹھے کرو"; +Blockly.Msg["COLLAPSE_BLOCK"] = "بلا ک کٹھے کرو"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "مرکب"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "بنا ترتيب رنگ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "نیلا"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ساوا"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "رتا"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "نال رن٘گ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "گھیرے کنوں ٻاہر نکلݨ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "وکھرا"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ٻیا اگر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "جے"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "کرو"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تائیں دہرائے"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "بھلا %1 بلاکاں کوں مٹاؤں؟"; +Blockly.Msg["DELETE_BLOCK"] = "بلاک مٹاؤ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 بلاکاں کوں مٹاؤ"; +Blockly.Msg["DIALOG_CANCEL"] = "منسوخ"; +Blockly.Msg["DIALOG_OK"] = "ٹھیک ہے"; +Blockly.Msg["DISABLE_BLOCK"] = "بلاک ہٹاؤ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ڈپلیکیٹ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "بلاک فعال کرو"; +Blockly.Msg["EXPAND_ALL"] = "بلاکوں کوں کھنڈاؤ"; +Blockly.Msg["EXPAND_BLOCK"] = "بلاک کھنڈاؤ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "باہرلے انپٹ"; +Blockly.Msg["HELP"] = "مدد"; +Blockly.Msg["INLINE_INPUTS"] = "ان لائن ان پٹ"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "خالی تندیر بݨاؤ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "فہرست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "پہلا"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# چھیکڑ کنوں"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گھنو"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گھنو تے ہٹاؤ"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "چھیکڑی"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "قُݨے نال"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ہٹاؤ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "فہرست وچ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی ہے"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "بطور"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "تے درج کرو"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "سیٹ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "چڑھدا ہویا"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "لہندا ہویا"; +Blockly.Msg["LISTS_SORT_TITLE"] = "سارٹ کرو%1%2%3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "عددی"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "الف بے دی"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "غلط"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سچ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 کائنی"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "کوئی وی کائنی"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "اتے"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ٹیسٹ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر کوڑ ہے"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر سچ ہے"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "جفت ہے"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی ہے"; +Blockly.Msg["MATH_IS_ODD"] = "طاق ہے"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت ہے"; +Blockly.Msg["MATH_IS_PRIME"] = "مفرد ہے"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "مکمل ہے"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ہک عدد"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "فہرست دی اوسط"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "لسٹ وچوں سب توں ودھ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "لسٹ وچوں سب توں گھٹ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "لسٹ دا مجموعہ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "مربعی جذر"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "متغیر بݨاؤ۔۔۔"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نواں متغیر ناں:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "نال:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "نال:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "کوں"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "واپس آ ونڄو"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ان پُٹ ناں:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ولدا کرو"; +Blockly.Msg["REMOVE_COMMENT"] = "رائے مٹاؤ"; +Blockly.Msg["RENAME_VARIABLE"] = "متغیر دا ولدا ناں رکھو۔۔۔"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "پہلا حرف گھنو"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# حرف گھنو"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "چھیکڑی حرف گھنو"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "شامل تھیوو"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ٹیکسٹ وچ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی ہے"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 دی لمباݨ"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 چھاپو"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "اڄ"; +Blockly.Msg["UNDO"] = "واپس"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "آئٹم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' نامی متغیر پہلے موجود ہے۔"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sl.js b/blockly/msg/sl.js new file mode 100644 index 00000000000..729fb2cc5f8 --- /dev/null +++ b/blockly/msg/sl.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ni mogoče izbrisati spremenljivke »%1«, ker je uporabljena v definiciji funkcije »%2«."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Spremeni vrednost:"; +Blockly.Msg["CLEAN_UP"] = "Ponastavi bloke"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Skrčeni bloki vsebujejo opozorila."; +Blockly.Msg["COLLAPSE_ALL"] = "Skrči bloke"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Skrči blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "barva 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "barva 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "razmerje"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mešanica"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Zmeša dve barvi v določene razmerju (0,0 – 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sl.wikipedia.org/wiki/Barva"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izberite barvo s palete."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "naključna barva"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Izberite naključno barvo."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "modra"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelena"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rdeča"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "določena barva"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ustvari barvo z določeno količino rdeče, zelene in modre. Vse vrednosti morajo biti med 0 in 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "prekini zanko"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nadaljuj z naslednjo ponovitvijo zanke"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Prekine vsebujočo zanko."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči preostanek te zanke in nadaljuje z naslednjo ponovitvijo."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Pozor: Ta blok lahko uporabite znotraj zanke samo enkrat."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za vsak element %1 v seznamu %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za vsak element v seznamu nastavi spremenljivko »%1« na ta element. Pri tem se izvedejo določeni stavki."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "štej s/z %1 od %2 do %3 po %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Vrednost spremenljivke »%1« se v določenem koraku spreminja od začetnega do končnega števila. Pri tem se izvedejo določeni bloki."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodajte bloku »če« pogoj."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodajte bloku »če« končni pogoj."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodajte, odstranite ali spremenite vrstni red odsekov za ponovno nastavitev bloka »če«."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sicer"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sicer če"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "če"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Če je vrednost resnična, izvedi določene stavke."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Če je vrednost resnična, izvedi prvo skupino stavkov. Sicer izvedi drugo skupino stavkov."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov. Če ni resnična nobena od vrednosti, izvedi zadnjo skupino stavkov."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://sl.wikipedia.org/wiki/Zanka_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izvedi"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1-krat"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Določeni stavki se izvedejo večkrat."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljaj, dokler ni"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljaj, dokler"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Določeni stavki se izvajajo, dokler je vrednost neresnična."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Določeni stavki se izvajajo, dokler je vrednost resnična."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Izbrišem vse bloke (%1)?"; +Blockly.Msg["DELETE_BLOCK"] = "Izbriši blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Izbriši spremenljivko »%1«"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Izbrišem %1 uporab spremenljivke »%2«?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Izbriši bloke (%1)"; +Blockly.Msg["DIALOG_CANCEL"] = "Prekliči"; +Blockly.Msg["DIALOG_OK"] = "V redu"; +Blockly.Msg["DISABLE_BLOCK"] = "Onemogoči blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Podvoji"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Podvoji komentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Omogoči blok"; +Blockly.Msg["EXPAND_ALL"] = "Razširi bloke"; +Blockly.Msg["EXPAND_BLOCK"] = "Razširi blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Zunanji vnosi"; +Blockly.Msg["HELP"] = "Pomoč"; +Blockly.Msg["INLINE_INPUTS"] = "Vrstični vnosi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ustvari prazen seznam"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vrne seznam dolžine 0, ki ne vsebuje nobenih podatkovnih zapisov."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "seznam"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Doda, odstrani ali spremeni vrstni red blokov seznama."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ustvari seznam iz"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Doda element v seznam."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ustvari seznam s poljubnim številom elementov."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prvo mesto"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "mesto št. od konca"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "št."; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "vrni"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "odstrani in vrni"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "zadnje mesto"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "naključno mesto"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "odstrani"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vrne prvi element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vrne element na določenem mestu v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vrne zadnji element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vrne naključni element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Odstrani in vrne prvi element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Odstrani in vrne element na določenem mestu v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Odstrani in vrne zadnji element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Odstrani in vrne naključni element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Odstrani prvi element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Odstrani element na določenem mestu v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Odstrani zadnji element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Odstrani naključni element seznama."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do mesta št. od konca"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do mesta št."; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do zadnjega mesta"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ustvari podseznam od prvega mesta"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "ustvari podseznam od mesta št. od konca"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "ustvari podseznam od mesta št."; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ustvari kopijo določenega dela seznama."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Zadnji element je št. %1."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Prvi element je št. %1."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "najdi prvo pojavitev elementa"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "najdi zadnjo pojavitev elementa"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vrne mesto (indeks) prve/zadnje pojavitve elementa v seznamu. Če elementa ne najde, vrne %1."; +Blockly.Msg["LISTS_INLIST"] = "v seznamu"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazen"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vrne resnično, če je seznam prazen."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dolžina %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vrne dolžino seznama."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ustvari seznam z elementom %1, ki se ponovi %2-krat"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ustvari seznam iz dane vrednosti z določenim številom ponovitev."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrni %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrne kopijo seznama."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "element"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "vstavi na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "nastavi na"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Vstavi element na začetek seznama."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Vstavi element na določeno mesto v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Doda element na konec seznama."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Vstavi element na naključno mesto v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Nastavi prvi element seznama."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Nastavi element na določenem mestu v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Nastavi zadnji element seznama."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Nastavi naključni element seznama."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "naraščajoče"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "padajoče"; +Blockly.Msg["LISTS_SORT_TITLE"] = "uredi %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Uredi kopijo seznama."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecedno, prezri velikost črk"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "številsko"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abecedno"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ustvari seznam iz besedila"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ustvari besedilo iz seznama"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Združi seznam besedil v eno besedilo z ločilom med besedili."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Razdruži besedilo v seznam besedil s prelomom pri vsakem ločilu."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "z ločilom"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "neresnično"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vrne resnično ali neresnično."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "resnično"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vrne resnično, če sta vnosa enaka."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vrne resnično, če je prvi vnos večji od drugega."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vrne resnično, če je prvi vnos večji ali enak drugemu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vrne resnično, če je prvi vnos manjši od drugega."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vrne resnično, če je prvi vnos manjši ali enak drugemu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vrne resnično, če vnosa nista enaka."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vrne resnično, če je vnos neresničen. Vrne neresnično, če je vnos resničen."; +Blockly.Msg["LOGIC_NULL"] = "prazno"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vrne prazno."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "in"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "ali"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vrne resnično, če sta oba vnosa resnična."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vrne resnično, če je vsaj eden od vnosov resničen."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "če neresnično"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "če resnično"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Preveri pogoj v »testu«. Če je pogoj resničen, potem vrne vrednost »če resnično«; sicer vrne vrednost »če neresnično«."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://sl.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vrne vsoto dveh števil."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vrne količnik dveh števil."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vrne razliko dveh števil."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vrne zmnožek dveh števil."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vrne prvo število na potenco drugega števila."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://sl.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 koordinat X: %1 in Y: %2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vrne arkus tangens točke (X, Y) v stopinjah med −180 in 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Increment_and_decrement_operators"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "spremeni %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Prišteje število k spremenljivki »%1«."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sl.wikipedia.org/wiki/Matematična_konstanta"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vrne eno izmed pogostih konstant: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707 ...) ali ∞ (neskončno)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "omeji %1 na najmanj %2 in največ %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Omeji število, da bo med določenima (vključenima) mejama."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je deljivo s/z"; +Blockly.Msg["MATH_IS_EVEN"] = "je sodo"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativno"; +Blockly.Msg["MATH_IS_ODD"] = "je liho"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivno"; +Blockly.Msg["MATH_IS_PRIME"] = "je praštevilo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Preveri, ali je število sodo, liho, praštevilo, celo, pozitivno, negativno ali če je deljivo z določenim številom. Vrne resnično ali neresnično."; +Blockly.Msg["MATH_IS_WHOLE"] = "je celo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sl.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ostanek pri %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vrne ostanek pri deljenju dveh števil."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://sl.wikipedia.org/wiki/%C5%A0tevilo"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Število."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "povprečje seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modus seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "naključni element seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardni odmik seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "vsota seznama"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vrne povprečje (aritmetično sredino) števil v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vrne največje število v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vrne mediano število v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vrne najmanjše število v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vrne seznam najpogostejšega(ih) elementa(-ov) v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vrne naključno število izmed števil v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vrne standardni odmik elementov v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vrne vsoto vseh števil v seznamu."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "naključni ulomek"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vrne naključni ulomek med (vključno) 0,0 in 1,0 (izključno)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "naključno število med %1 in %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vrne naključno število med dvema določenima mejama, vključno z mejama."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sl.wikipedia.org/wiki/Zaokro%C5%BEanje"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokroži"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokroži navzdol"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokroži navzgor"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokroži število navzgor ali navzdol."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sl.wikipedia.org/wiki/Kvadratni_koren"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolutno"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni koren"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vrne absolutno vrednost števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vrne e na potenco števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vrne naravni logaritem števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vrne desetiški logaritem števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vrne negacijo števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vrne 10 na potenco števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vrne kvadratni koren števila."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sl.wikipedia.org/wiki/Trigonometrična_funkcija"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vrne arkus kosinus števila."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vrne arkus sinus števila."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vrne arkus tangens števila."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vrne kosinus kota v stopinjah (ne radianih)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vrne sinus kota v stopinjah (ne radianih)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vrne tangens kota v stopinjah (ne radianih)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ustvari spremenljivko barve ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ustvari spremenljivko števila ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ustvari spremenljivko niza ..."; +Blockly.Msg["NEW_VARIABLE"] = "Ustvari spremenljivko ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove spremenljivke:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Vrsta nove spremenljivke:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "dovoli stavke"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s/z:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://sl.wikipedia.org/wiki/Subrutina"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Izvede uporabniško določeno funkcijo »%1«."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://sl.wikipedia.org/wiki/Subrutina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Izvede uporabniško funkcijo »%1« in uporabi njen izhod."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s/z:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ustvari »%1«"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opiši funkcijo ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "nekaj"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "izvedi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ustvari funkcijo brez izhoda."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vrni"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ustvari funkcijo z izhodom."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Pozor: Ta funkcija ima podvojene parametre."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Označi blok funkcije"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Če je vrednost resnična, vrne drugo vrednost."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Pozor: Ta blok lahko uporabite samo v bloku funkcije."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ime vnosa:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Funkciji doda vnos."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "vnosi"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Doda, odstrani ali spremeni vrstni red vnosov za to funkcijo."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Ponovi"; +Blockly.Msg["REMOVE_COMMENT"] = "Odstrani komentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Preimenuj spremenljivko ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj vse spremenljivke »%1« v:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "k %1 dodaj besedilo %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Doda besedilo k spremenljivki »%1«."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "v male črke"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "v Velike Začetnice"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "v VELIKE ČRKE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vrne kopijo besedila v drugi obliki."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "vrni prvo črko"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "vrni črko št. od konca"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "vrni črko št."; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "vrni zadnjo črko"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "vrni naključno črko"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "v besedilu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vrne črko na določenem mestu."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "preštej %1 v %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Preštej, kolikokrat se neko besedilo pojavi v drugem besedilu."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Doda element k besedilu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "združi"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Doda, odstrani ali spremeni vrstni red odsekov za ponovno nastavitev tega bloka besedila."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do črke št. od konca"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do črke št."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do zadnje črke"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "iz besedila"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "vrni podniz od prve črke"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "vrni podniz od črke št. od konca"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "vrni podniz od črke št."; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Vrne določen del besedila."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "najdi prvo pojavitev besedila"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "najdi zadnjo pojavitev besedila"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "v besedilu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vrne mesto (indeks) prve/zadnje pojavitve drugega besedila v prvem besedilu. Če besedila ne najde, vrne %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazno"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vrne resnično, če je določeno besedilo prazno."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ustvari besedilo iz"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ustvari besedilo tako, da združi poljubno število elementov."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dolžina %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vrne število znakov (vključno s presledki) v določenem besedilu."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "izpiši %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Izpiše določeno besedilo, številko ali drugo vrednost."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Vpraša uporabnika za vnos številke."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Vpraša uporabnika za vnos besedila."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "vprašaj za številko s sporočilom"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "vprašaj za besedilo s sporočilom"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamenjaj %1 z %2 v %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zamenja vse pojavitve besedila v drugem besedilu."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "obrni %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Obrne vrstni red znakov v besedilu."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sl.wikipedia.org/wiki/Niz"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Črka, beseda ali vrstica besedila."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "odstrani presledke z obeh strani"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "odstrani presledke z leve strani"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "odstrani presledke z desne strani"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vrne kopijo besedila z odstranjenimi presledki z ene ali obeh strani."; +Blockly.Msg["TODAY"] = "Danes"; +Blockly.Msg["UNDO"] = "Razveljavi"; +Blockly.Msg["UNNAMED_KEY"] = "nepoimenovano"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ustvari »nastavi %1«"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vrne vrednost spremenljivke."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "nastavi %1 na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Ustvari »vrni %1«"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Nastavi, da je vrednost spremenljivke enaka vnosu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Spremenljivka »%1« že obstaja."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Spremenljivka z imenom »%1« za tip »%2« že obstaja."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklyjev delovni prostor"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Povej nekaj ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/smn.js b/blockly/msg/smn.js new file mode 100644 index 00000000000..6febc0b5848 --- /dev/null +++ b/blockly/msg/smn.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Lasseet komment"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ij lah máhđulâš sikkođ muttojeijee '%1' tanen ko tot lii uási funktio miäruštâllâm '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Mute áárvu:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ivne 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ivne 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "koskâvuotâ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "siävuttâs"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Siävvut kyevti ivne koskânis adelum koskâvuođâst (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://smn.wikipedia.org/wiki/Ivne"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Valjii ivne paletist."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "säti-ivne"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Valjii ivne sätioornigist."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "čuovjâd"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ruánáá"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruopsâd"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ivne, mast lii"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Räähti ivne, mast lii tiätu meeri ruopsâd, ruánáá já čuovjâd. Puoh áárvuh kalgeh leđe 0 já 100 kooskâst."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "mudoi"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mudoi jis"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jis"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "poorgâ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "kiärdut %1 tove"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "kiärdut tassaaš ko"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "kiärdut ton puudâ ko"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Siho muttojeijee '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Sikkop-uv %1 kevttim muttojeijeest '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Jooskâ"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Jyemeehpittá"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dublikist komment"; +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "Olgoldâs fáluseh"; +Blockly.Msg["HELP"] = "Iše"; +Blockly.Msg["INLINE_INPUTS"] = "Pyevti fálusijd"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listo"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "vuosmuš"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "majemuš"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "sätinálásâš"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "siho"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "listoost"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "epituotâ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tuotâ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ij %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "ij maiden"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "já"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "teikkâ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "testâ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jis epituotâ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jis tuotâ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "mute %1 árvoin %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lasseet áárvu muttojeijen '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "puáhtá jyehiđ lovvoin"; +Blockly.Msg["MATH_IS_EVEN"] = "lii parâlâš"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "lii negatiivlâš"; +Blockly.Msg["MATH_IS_ODD"] = "lii parâttem"; +Blockly.Msg["MATH_IS_POSITIVE"] = "lii positiivlâš"; +Blockly.Msg["MATH_IS_PRIME"] = "lii algâloho"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Täärhist lii-uv nummeer parâlâs, parâttem, algâloho, olesloho, positiivlâš, negatiivlâš, teikkâ jis tom puáhtá jyehiđ nube lovvoin. Maaccât tuotâ teikkâ epituotâ."; +Blockly.Msg["MATH_IS_WHOLE"] = "lii olesloho"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Loho."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "koskâárvu lovoin"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "stuárráámus lovoin"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediaan lovoin"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ucemus lovoin"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summe lovoin"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Maaccât aritmaattisâš koskâáárvu adelum lovoin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Maaccât stuárráámuu adelum lovoin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Maaccât adelum lovoi mediaan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Maaccât ucemuu adelum lovoin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Maaccât puoh adelum lovoi sume."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "jurbii"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "jurbii vuáluskulij"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "jurbii pajaskulij"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Jorbee lovo pajas- teikkâ vuáluskulij."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "jiešárvu"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "neljihâšruotâs"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Räähti ivnemuttojeijee..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Räähti nummeermuttojeijee..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Räähti merkkâráiđumuttojeijee..."; +Blockly.Msg["NEW_VARIABLE"] = "Räähti muttojeijee..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Uđđâ muttojeijee nommâ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Uđđâ muttojeijee tijppâ:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "parameettereh:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "parameettereh:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Valdâl taam funktio..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "poorgâ maidnii"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Räähti puáđushánnáá leijee funktio."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "maaccât"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "fáálus nommâ:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "fáluseh"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Räähti uđđâsist"; +Blockly.Msg["REMOVE_COMMENT"] = "Siho komment"; +Blockly.Msg["RENAME_VARIABLE"] = "Noomât uđđâsist muttojeijee..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Noomât uđđâsist puoh '%1' muttojeijee:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "labde"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Onne"; +Blockly.Msg["UNDO"] = "Koomeet"; +Blockly.Msg["UNNAMED_KEY"] = "nomâttem"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "tiŋgâ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Muttojeijee mon nommâ lii '%1' lii jo lemin."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Muttojeijee, mon nommâ lii '%1', lii jo lemin nube tiijpân: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Eeđâ maidnii..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sq.js b/blockly/msg/sq.js new file mode 100644 index 00000000000..e67efbc96bb --- /dev/null +++ b/blockly/msg/sq.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Vendos nje Koment"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nuk mund të fshihet variabla '%1' sepse është pjesë e definicionit të funksionit '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ndrysho Vlerat:"; +Blockly.Msg["CLEAN_UP"] = "Pastro blloqet"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blloqet e shembura përmbajnë paralajmërime."; +Blockly.Msg["COLLAPSE_ALL"] = "Mbyll blloqet"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Mbyll bllokun"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Ngjyra 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "Ngjyra 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "Perpjesetim"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "Përzierje"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Perzien dy ngjyra së bashku me një raport të dhënë (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Zgjidh nje ngjyre nga nje game ngjyrash."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ngjyre e rastesishme"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zgjidhni një ngjyrë në mënyrë të rastësishme."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "jeshile"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "e kuqe"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ngjyre me"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Krijo një ngjyrë me shumën e specifikuar te te kuqes, te gjelbëres, dhe bluse. Te gjitha vlerat duhet te jene mes 0 dhe 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "dil nga nje faze perseritese"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "vazhdo me elementin tjeter te nje faze perseritese"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ndahu nga unaza."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Kapërce pjesën e mbetur të unazës, dhe vazhdo me ripërsëritjen tjetër."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Paralajmërim: Ky bllok mund të përdoret vetëm brenda unazës."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per cdo produkt %1 ne liste %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Per cdo produkt ne nje \"liste\" \"vendos\" ndryshoren '%1' produktit, dhe pastaj bej disa deklarata."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "numero me %1 nga %2 ne %3 me nga %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Bëje identifikuesin \"%1\" që ta ketë vlerat prej numrit të fillimit deri tek numri i fundit, duke numëruar nga intervali i specifikuar, dhe ti bëj blloqet e specifikuara."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"Vendos\" \"kushtein\"tek \"pjesa\" \"if\""; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Shto një përfundues, që i mbërrin të gjitha kushtet në bllokun nëse."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këte bllok nëse."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "përndryshe"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "përndryshe nëse"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "nëse"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Nëse një vlerë është e saktë, atëherë ekzekuto disa fjali."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Nëse një vlerë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, ekzekuto bllokun e dytë të fjalive."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive. Nëse asnjëra nga vlerat nuk është e saktë, ekzekuto bllokun e fundit të fjalive."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "http://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ekzekuto"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "përsërit %1 herë"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Ekzekuto disa fjali disa herë."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "përsërit derisa"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "përsërit përderisa"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Përderisa një vlerë është e pasaktë, atëherë ekzekuto disa fjali."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Përderisa një vlerë është e saktë, atëherë ekzekuto disa fjali."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Fshijë të gjitha %1 të blloqeve?"; +Blockly.Msg["DELETE_BLOCK"] = "Fshij bllokun"; +Blockly.Msg["DELETE_VARIABLE"] = "Fshi variablën '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Fshi përdorimin %1 të variablës '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Fshij %1 blloqe"; +Blockly.Msg["DIALOG_CANCEL"] = "Anulo"; +Blockly.Msg["DIALOG_OK"] = "Në rregull"; +Blockly.Msg["DISABLE_BLOCK"] = "Çaktivizo bllokun"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopjo"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Koment Dublikatë"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktivizo bllokun"; +Blockly.Msg["EXPAND_ALL"] = "Zmadho blloqet"; +Blockly.Msg["EXPAND_BLOCK"] = "Zmadho bllokun"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Hyrjet e jashtme"; +Blockly.Msg["HELP"] = "Ndihmë"; +Blockly.Msg["INLINE_INPUTS"] = "Hyrjet e brendshme"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "krijo një listë të zbrazët"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Kthen një listë, te gjatësisë 0, duke mos përmbajtur asnjë regjistrim të të dhënave"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listë"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok të listës."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "krijo listë me"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Shto një send në listë."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Krijo një listë me ndonjë numbër të sendeve."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "i parë"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# nga fundi"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "merr"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "merr dhe fshij"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "i fundit"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "i rastësishëm"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "largo"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Rikthen tek artikulli i par në list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Kthen një send në pozicionin e specifikuar në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Kthen artikullin e fundit në list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Kthen një send të rastësishëm në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fshin dhe kthen sendin e parë në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fshin dhe kthen sendin në pozicionin e specifikuar në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fshin dhe kthen sendin e fundit në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fshin dhe kthen një send të rastësishëm në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fshin sendin e parë në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fshin sendin në pozicionin e specifikuar në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fshin sendin e fundit në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Kthen një send të rastësishëm në listë."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "tek # nga fundi"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "tek #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "tek i fundit"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "merr nën-listën nga i pari"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "merr nën listën nga # nga fundi"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "merr nën-listën nga #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Krijon në kopje të pjesës së specifikuar të listës."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 është sendi i fundit."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 është sendi i parë."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "gjen ndodhjen e parë të sendit"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "gjen ndodhjen e fundit të sendit"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Kthen indeksin e ndodhjes së parë/fudit të sendit në listë. Kthen %1 nëse teksti nuk është gjetur."; +Blockly.Msg["LISTS_INLIST"] = "në listë"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 është e zbraztë"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Kthehet i saktë nëse lista është e zbraztë."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "gjatësia e %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Kthen gjatësinë e listës."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "krijo listën me sendin %1 të përsëritur %2 herë"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Krijon në listë qe përmban vlerën e dhënë të përsëritur aq herë sa numri i specifikuar."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "kthe %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Ndërro renditjen e një kopjeje të listës."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sikurse"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "fut në"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "vendos"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Fut sendin në fillim të listës."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Fut sendin në pozicionin e specifikuar të listës."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Bashkangjit sendin në fund të listës."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Fut sendin rastësisht në listë."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Vendos sendin e parë në listë."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Vendos sendin në pozicionin e specifikuar në listë."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Vendos sendin e fundit në listë."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Vendos një send të rastësishëm në listë."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ngjitje"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "zbritje"; +Blockly.Msg["LISTS_SORT_TITLE"] = "rendit %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Rendit një kopje të listës."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetike, injoro madhësinë e shkronjave"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerike"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetike"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "bëj listë nga teksti"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "bëj tekst nga lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ngjit një listë tekstesh në një, të ndara me ndarës."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Ndaj tekstin në një listë tekstesh, duke ndarë në secilin ndarës."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "me ndarës"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "e pasaktë"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Kthehet ose të saktë ose të pasaktë."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "e saktë"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "http://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ktheje të saktë nëse të dy hyrjet janë të barabarta me njëra-tjetrën."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ktheje të saktë nëse hyrja e parë është më e madhe se hyrja e dytë."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ktheje të saktë nëse hyrja e parë është më e madhe ose e barabartë me hyrjen e dytë."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ktheje të saktë nëse hyrja e parë është më e vogël se hyrja e dytë."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ktheje të saktë nëse hyrja e parë është më e vogël ose e barabartë me hyrjen e dytë."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ktheje të saktë nëse të dy hyrjet nuk janë të barabarta me njëra-tjetrën."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "jo %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Kthehet e saktë nëse hyrja është e pasaktë. Kthehet e pasaktë nëse hyrja është e saktë."; +Blockly.Msg["LOGIC_NULL"] = "pavlerë"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "http://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Kthehet e pavlerë."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "dhe"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ose"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Kthehet të saktë nëse të dy hyrjet janë të sakta."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Kthehet e saktë nëse së paku njëra nga hyrjet është e saktë."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "http://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "nëse e pasaktë"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "nëse e saktë"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontrollo kushtin në 'test'. Nëse kushti është i saktë, kthen vlerën 'nëse e saktë'; përndryshe kthen vlerën 'nëse e pasaktë'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "http://sq.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Kthen shumën e dy numrave."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Kthen herësin e dy numrave."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Kthen ndryshimin e dy numrave."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Kthen produktin e dy numrave."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Kthen numrin e parë të ngritur në fuqinë e numrit të dytë."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Ktheni arkangjentin e pikës (X, Y) në gradë nga -180 në 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "http://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "ndrysho %1 nga %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Shto një numër në ndryshoren '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "http://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Kthen një nga konstantet e përbashkëta: : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infiniti)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "detyro %1 e ulët %2 e lartë %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Vëni një numër që të jetë në mes të kufive të specifikuara(përfshirëse)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "është i pjestueshme me"; +Blockly.Msg["MATH_IS_EVEN"] = "është çift"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "është negativ"; +Blockly.Msg["MATH_IS_ODD"] = "është tek"; +Blockly.Msg["MATH_IS_POSITIVE"] = "është pozitiv"; +Blockly.Msg["MATH_IS_PRIME"] = "është prim"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollo nëse një numër është çift, tek, prim, i plotë, pozitiv, negativ, ose nëse është i pjestueshëm me një numër të caktuar. Kthehet e saktë ose e pasaktë."; +Blockly.Msg["MATH_IS_WHOLE"] = "është i plotë"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "http://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "mbetësi i %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Kthen mbetësin nga pjestimi i dy numrave."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "http://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Një numër."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mesatarja e listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "numri më i madh i listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana e listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "numri më i ulët i listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modat e listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "send i rastësishëm i listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "devijimi standard i listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "mbledhja e listës"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Kthen mesatarën (kuptimi aritmetik) i vlerave numerike të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Kthe numrin më të madh të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Kthe numrin median të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Kthe numrin me të vogël të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Kthe listën e sendit(eve) më të zakonshme të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Kthe një element të rastësishëm nga lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Kthe devijimin standard të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Kthe shumën e të gjithë numrave të listës."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "http://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraksioni i rastësishëm"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Kthe fraksionin e rastësishëm në mes të 0.0 (përfshirëse) dhe 1.0 (jopërfshirëse)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "http://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "numër i plotë i rastësishëm nga %1 deri në %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Kthe një numër të plotë të rastësishëm të dy kufijve të specifikuar, të përfshirë."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "http://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "rrumbullakësimi"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rrumbullakësimi i ulët"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rrumbullakësimi i lartë"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rrumbullakësimi i numrit të lartë ose të ulët."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "http://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "rrënja katrore"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Kthen vlerën absolute të një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Kthen e në fuqinë e një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Kthen logaritmën natyrale të një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Kthen 10 logaritmet bazë të një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Kthe negacionin e një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Kthen 10 në fuqinë e një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Kthen rrënjën katrore të një numri."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acosinus"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asinus"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atangjentë"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "http://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Rikthe cos-1 e nje numeri."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Rikthe sin-1 e nje numeri."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Kthe tg-1 e nje numeri."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kthe kosinusin e nje grade (jo ne radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Kthe kosinusin e nje kendi (jo ne radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Kthe tangentin e nje kendi (jo radiant)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Krijo variabël ngjyrë..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Krijo variabël numër"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Krijo variabël varg"; +Blockly.Msg["NEW_VARIABLE"] = "Krijo variabël..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Emri i identifikatorit të ri:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tip i ri i variablës:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "lejo deklaratat"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "me:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Lësho funksionin e definuar nga përdoruesi '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Lëho funksionin e definuar nga përdoruesi '%1' dhe përdor daljen e tij."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "me:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Krijo '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Përshkruaj këtë funksion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "bëj diqka"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "te"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Krijon një funksion pa dalje."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "rikthe"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Krijon një funksion me një dalje."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Paralajmërim: Ky funksion ka parametra të dyfishuar."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Thekso definicionin e funksionit"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Nëse një vlerë është e saktë, atëherë kthe një vlerë të dytë."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Paralajmërim: Ky bllok mund të përdoret vetëm brenda definicionit të funksionit."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Fut emrin:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Shto një input në këtë funksion."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Informacioni i futur"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Shto, hiq, ose rirendit inputet e këtij funksioni."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Ribëj"; +Blockly.Msg["REMOVE_COMMENT"] = "Fshij komentin"; +Blockly.Msg["RENAME_VARIABLE"] = "Ndrysho emrin variables..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Ndrysho emrin e te gjitha '%1' variablave ne :"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "ne %1 shto tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "shto tekst tek varibla '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "me shkronja te vogla shtypi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Fillimi me shkronje te madhe shtypi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "me shkronja te medha shtypi"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Kthe nje kopje te tekstit ne nje rast te ndryshem."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "merr shkronjen e pare"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "merr shkronjen # nga fundi"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "merr shkronjen #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "merr shkronjen e fundit"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "merr nje shkronje te rastesishme"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "në tekst %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Kthe nje shkronje nga nje pozicion i caktuar."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "numro %1 në %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Numrin sa herë paraqitet një tekst brenda një teksti tjetër."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Shto nje gje ne tekst"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "bashkangjit"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok teksti."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ne shkronjen # nga fundi"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ne shkronjen #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "tek shkronja e fundit"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ne tekst"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "merr vlerat qe vazhdojne me shkronjen e pare"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "merr nenvargun nga shkronja # nga fundi"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "Merr nenvargun nga shkronja #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Pergjigjet me nje pjese te caktuar teksti."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "gjej rastisjen e pare te tekstit"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "gjej rastisjen e fundit te tekstit"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ne tekst %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Pergjigjet me indeksin e pare/fundit te rastisjes se tekstit te pare ne tekstin e dyte. Pergjigjet me %1 ne qofte se teksti nuk u gjet."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 eshte bosh"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Kthehet e vertete neqoftese teksti i dhene eshte bosh."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "krijo tekst me"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Krijo nje pjese te tekstit duke bashkuar se bashku disa sende"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "gjatesi %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Pergjigjet me nje numer shkronjash (duke perfshire hapesire) ne tekstin e dhene."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "printo %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Printo tekstin e caktuar, numer ose vlere tjeter."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Kerkoji perdoruesit nje numer."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Kerkoji perdoruesit ca tekst."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "kerko nje numer me njoftim"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "kerko tekst me njoftim"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zëvendëso %1 me %2 në %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zëvendëso të gjitha paraqitjet e një teksti brenda një teksti tjetër."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "kthe %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Kthen renditjen e karaktereve në tekst."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "http://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Nje shkronje, fjale, ose rresht teksti."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "prit hapesirat nga te dyja anet"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "prit hapesirat nga ana e majte"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "prit hapesirat nga ana e djathte"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Pergjigju me nje kopje te tekstit me hapesira te fshira nga njera ane ose te dyja anet."; +Blockly.Msg["TODAY"] = "Sot"; +Blockly.Msg["UNDO"] = "Zhbëj"; +Blockly.Msg["UNNAMED_KEY"] = "pa emër"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "send"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Krijo 'vendos %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Pergjigjet me nje vlere te kesaj variable."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "vendos %1 ne %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Krijo 'merr %1"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Vendos kete variable te jete e barabarte me te dhenat ne hyrje."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Një variabël e quajtur '%1' tashmë ekziston."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Një variabël me emrin '%1' veç ekziston për një tip tjetër: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Hapësira e punës e Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Thuaj dicka..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sr-latn.js b/blockly/msg/sr-latn.js new file mode 100644 index 00000000000..e847b293f85 --- /dev/null +++ b/blockly/msg/sr-latn.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne mogu da obrišem varijablu ’%1’ jer je deo definicije funkcije ’%2’"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Promeni vrednost:"; +Blockly.Msg["CLEAN_UP"] = "Ukloni blokove"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Skupi blokove"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Skupi blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "boja 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "boja 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "odnos"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "pomešaj"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Pomešati dve boje zajedno sa datim odnosom (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sr.wikipedia.org/wiki/Boja"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izaberite boju sa palete."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "slučajna boja"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Izaberite boju nasumice."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "plava"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelena"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "crvena"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "boja sa"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kreiraj boju sa određenom količinom crvene,zelene, i plave. Sve vrednosti moraju biti između 0 i 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Izađite iz petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nastavi sa sledećom iteracijom petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Napusti sadržaj petlje."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči ostatak ove petlje, i nastavi sa sledećom iteracijom(ponavljanjem)."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozorenje: Ovaj blok može da se upotrebi samo unutar petlje."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za svaku stavku %1 na spisku %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za svaku stavku unutar liste, podesi promenjivu '%1' po stavci, i onda načini neke izjave-naredbe."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "prebroj sa %1 od %2 do %3 od %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Imaj promenjivu \"%1\" uzmi vrednosti od početnog broja do zadnjeg broja, brojeći po određenom intervalu, i izvrši određene blokove."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodajte uslov bloku „ako“."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodaj konačni, catch-all (uhvati sve) uslove if bloka."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodaj, ukloni, ili preuredi delove kako bih rekonfigurisali ovaj if blok."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "inače"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inače-ako"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ako"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ako je vrednost tačna, onda izvrši neke naredbe-izjave."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ako je vrednost tačna, onda izvrši prvi blok naredbi, U suprotnom, izvrši drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi. Ako ni jedna od vrednosti nije tačna, izvrši poslednji blok naredbi."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://sr.wikipedia.org/wiki/For_petlja"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izvrši"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1 puta"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Odraditi neke naredbe nekoliko puta."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljati do"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljati dok"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dok vrednost nije tačna, onda izvršiti neke naredbe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dok je vrednost tačna, onda izvršite neke naredbe."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Da obrišem svih %1 blokova?"; +Blockly.Msg["DELETE_BLOCK"] = "Obriši blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Obriši promenljivu '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Da obrišem %1 upotreba promenljive '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Obriši %1 blokova"; +Blockly.Msg["DIALOG_CANCEL"] = "Otkaži"; +Blockly.Msg["DIALOG_OK"] = "U redu"; +Blockly.Msg["DISABLE_BLOCK"] = "Onemogući blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliraj"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Omogući blok"; +Blockly.Msg["EXPAND_ALL"] = "Proširi blokove"; +Blockly.Msg["EXPAND_BLOCK"] = "Proširi blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Spoljni ulazi"; +Blockly.Msg["HELP"] = "Pomoć"; +Blockly.Msg["INLINE_INPUTS"] = "Unutrašnji ulazi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "napravi prazan spisak"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "vraća listu, dužine 0, ne sadržavajući evidenciju podataka"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "spisak"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Dodajte, izbrišite, ili preuredite delove kako bi se reorganizovali ovaj blok liste."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "napravi spisak sa"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Dodajte stavku na spisak."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Kreiraj listu sa bilo kojim brojem stavki."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prva"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# sa kraja"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "preuzmi"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "preuzmi i ukloni"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "poslednja"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "slučajna"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ukloni"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vraća prvu stavku na spisku."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vraća stavku na određenu poziciju na listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vraća poslednju stavku na spisku."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vraća slučajnu stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Uklanja i vraća prvu stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Uklanja i vraća stavku sa određenog položaja na spisku."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Uklanja i vraća poslednju stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Uklanja i vraća slučajnu stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Uklanja prvu stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Uklanja stavku sa određenog položaja na spisku."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Uklanja poslednju stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Uklanja slučajnu stavku sa spiska."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od kraja"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do poslednje"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "preuzmi podspisak od prve"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "preuzmi podspisak iz # sa kraja"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "preuzmi podspisak od #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Pravi kopiju određenog dela liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je poslednja stavka."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je prva stavka."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "pronađi prvo pojavljivanje stavke"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "pronađi poslednje pojavljivanje stavke"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vraća broj prvog i/poslednjeg ulaska elementa u listu. Vraća %1 Ako element nije pronađen."; +Blockly.Msg["LISTS_INLIST"] = "na spisku"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazan"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vraća vrednost tačno ako je lista prazna."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dužina spiska %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vraća dužinu spiska."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Napraviti listu sa stavkom %1 koja se ponavlja %2 puta"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Pravi listu koja se sastoji od zadane vrednosti koju ponavljamo određeni broj šuta."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrnuto %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrni kopiju spiska."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kao"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ubaci na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "postavi"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ubacuje stavku na početak spiska."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ubacuje stavku na određeni položaj na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Dodajte stavku na kraj spiska."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ubacuje stavku na slučajno mesto na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Postavlja prvu stavku na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Postavlja stavku na određeni položaj na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Postavlja poslednju stavku na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Postavlja slučajnu stavku na spisku."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "rastuće"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "opadajuće"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sortiraj %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortirajte kopiju spiska."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "azbučno, ignoriši mala i velika slova"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "kao brojeve"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "azbučno"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "napravite listu sa teksta"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "da tekst iz liste"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Da se pridruži listu tekstova u jedan tekst, podeljenih za razdvajanje."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Podeliti tekst u listu tekstova, razbijanje na svakom graničnik."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "sa razdvajanje"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "netačno"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vraća ili tačno ili netačno."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tačno"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://sr.wikipedia.org/wiki/Nejednakost"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vraća vrednost „tačno“ ako su oba ulaza jednaka."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vraća vrednost „tačno“ ako je prvi ulaz veći od drugog."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vraća vrednost „tačno“ ako je prvi ulaz veći ili jednak drugom."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vraća vrednost „tačno“ ako je prvi ulaz manji od drugog."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vraća vrednost „tačno“ ako je prvi ulaz manji ili jednak drugom."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vraća vrednost „tačno“ ako su oba ulaza nejednaka."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nije %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vraća vrednost „tačno“ ako je ulaz netačan. Vraća vrednost „netačno“ ako je ulaz tačan."; +Blockly.Msg["LOGIC_NULL"] = "bez vrednosti"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vraća „bez vrednosti“."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ili"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vraća vrednost „tačno“ ako su oba ulaza tačna."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vraća vrednost „tačno“ ako je bar jedan od ulaza tačan."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "proba"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ako je netačno"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ako je tačno"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Proveri uslov u 'test'. Ako je uslov tačan, tada vraća 'if true' vrednost; u drugom slučaju vraća 'if false' vrednost."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vratite zbir dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vraća količnik dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vraća razliku dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vraća proizvod dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vraća prvi broj stepenovan drugim."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "promeni %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodajte broj promenljivoj „%1“."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sr.wikipedia.org/wiki/Matematička_konstanta"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "vrati jednu od zajedničkih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ili ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ograniči %1 nisko %2 visoko %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ograničava broj na donje i gornje granice (uključivo)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je deljiv sa"; +Blockly.Msg["MATH_IS_EVEN"] = "je paran"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativan"; +Blockly.Msg["MATH_IS_ODD"] = "je neparan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivan"; +Blockly.Msg["MATH_IS_PRIME"] = "je prost"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Provjerava da li je broj paran, neparan, prost, cio, pozitivan, negativan, ili da li je deljiv sa određenim brojem. Vraća tačno ili netačno."; +Blockly.Msg["MATH_IS_WHOLE"] = "je ceo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sr.wikipedia.org/wiki/Kongruencija"; +Blockly.Msg["MATH_MODULO_TITLE"] = "podsetnik od %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vraća podsetnik od deljenja dva broja."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Neki broj."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "prosek spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maks. spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medijana spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min. spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modus spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "slučajna stavka spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardna devijacija spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zbir spiska"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vraća prosek numeričkih vrednosti sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vraća najveći broj sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vraća medijanu sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vraća najmanji broj sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vraća najčešće stavke sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vraća slučajni element sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vraća standardnu devijaciju spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vraća zbir svih brojeva sa spiska."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slučajni razlomak"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vraća slučajni razlomak između 0.0 (uključivo) i 1.0 (isključivo)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "sličajno odabrani cijeli broj od %1 do %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vraća slučajno odabrani celi broj između dve određene granice, uključivo."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sr.wikipedia.org/wiki/Zaokruživanje"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokruži"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokruži naniže"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokruži naviše"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokružite broj na veću ili manju vrednost."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sr.wikipedia.org/wiki/Kvadratni_koren"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "apsolutan"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni koren"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vraća apsolutnu vrednost broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "vratiti e na vlasti broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vraća prirodni logaritam broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vraća logaritam broja sa osnovom 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vraća negaciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vraća 10-ti stepen broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vraća kvadratni koren broja."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arc cos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arc sin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arc tan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sr.wikipedia.org/wiki/Trigonometrijske_funkcije"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vraća arkus kosinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vraća arkus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vraća arkus tangens broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vraća kosinus stepena (ne radijan)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vraća sinus stepena (ne radijan)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vraća tangens stepena (ne radijan)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Napravi promenljivu…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove promenljive:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "dozvoliti izreke"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "sa:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Pokrenite prilagođenu funkciju „%1“."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Pokrenite prilagođenu funkciju „%1“ i koristi njen izlaz."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "sa:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Napravi „%1“"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opisati ovu funkciju..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "uradite nešto"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "da"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Pravi funkciju bez izlaza."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vrati"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Pravi funkciju sa izlazom."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozorenje: Ova funkcija ima duplikate parametara."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Istakni definiciju funkcije"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ukoliko je vrednost tačna, vrati drugu vrednost."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Upozorenje: Ovaj blok se može koristiti jedino u definiciji funkcije."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "naziv ulaza:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Dodajte ulazna funkcija."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ulazi"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Da dodate, uklonite ili pereuporяdočitь ulaza za ovu funkciju."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Ponovi"; +Blockly.Msg["REMOVE_COMMENT"] = "Ukloni komentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Preimenuj promenljivu…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj sve „%1“ promenljive u:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "na %1 dodaj tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Dodajte tekst na promenljivu „%1“."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "malim slovima"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "svaka reč velikim slovom"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "velikim slovima"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vraća primerak teksta sa drugačijom veličinom slova."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "preuzmi prvo slovo"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "preuzmi slovo # sa kraja"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "preuzmi slovo #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "preuzmi poslednje slovo"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "preuzmi slučajno slovo"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "u tekstu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vraća slovo na određeni položaj."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "broj %1 u %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Broji koliko puta se neki tekst pojavljuje unutar nekog drugog teksta."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Dodajte stavku u tekst."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "spajanjem"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Dodaj, ukloni, ili drugačije poredaj odjelke kako bi iznova postavili ovaj tekst blok."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "slovu # sa kraja"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "slovu #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "poslednjem slovu"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "u tekstu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "preuzmi podnisku iz prvog slova"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "preuzmi podnisku iz slova # sa kraja"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "preuzmi podnisku iz slova #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Vraća određeni deo teksta."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "pronađi prvo pojavljivanje teksta"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "pronađi poslednje pojavljivanje teksta"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "u tekstu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vraća odnos prvog/zadnjeg pojavljivanja teksta u drugom tekstu. Vrađa %1 ako tekst nije pronađen."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazan"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vraća tačno ako je dostavljeni tekst prazan."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "napiši tekst sa"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Napraviti dio teksta spajajući različite stavke."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dužina teksta %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vraća broj slova (uključujući razmake) u datom tekstu."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "prikaži %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Prikažite određeni tekst, broj ili drugu vrednost na ekranu."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pitajte korisnika za broj."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pitajte korisnika za unos teksta."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pitaj za broj sa porukom"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "pitaj za tekst sa porukom"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamena %1 sa %2 u %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zamena svih pojava nekog teksta unutar nekog drugog teksta."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "obrnuto %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Obrće redosled karaktera u tekstu."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sr.wikipedia.org/wiki/Niska"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Slovo, reč ili red teksta."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim praznine sa obe strane"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "skratiti prostor sa leve strane"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "skratiti prostor sa desne strane"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vraća kopiju teksta sa uklonjenim prostorom sa jednog od dva kraja."; +Blockly.Msg["TODAY"] = "Danas"; +Blockly.Msg["UNDO"] = "Opozovi"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "stavka"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Napravi „postavi %1“"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vraća vrednost ove promenljive."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "postavi %1 u %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Napravi „preuzmi %1“"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Postavlja promenljivu tako da bude jednaka ulazu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Promenljiva pod imenom '%1' već postoji."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Varijabla po imenu '%1' već postoji za drugu varijablu tipa '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sr.js b/blockly/msg/sr.js new file mode 100644 index 00000000000..fe17c630c87 --- /dev/null +++ b/blockly/msg/sr.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Додај коментар"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Није могуће избрисати променљиву „%1” јер је део дефиниције функције „%2”"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Промена вредности:"; +Blockly.Msg["CLEAN_UP"] = "Очисти блокове"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Срушени блокови садрже упозорења."; +Blockly.Msg["COLLAPSE_ALL"] = "Скупи блокове"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Скупи блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "боја 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "боја 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "однос"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "помешај"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Меша две боје заједно са датим односом (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sr.wikipedia.org/wiki/Боја"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Одаберите боју са палете."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случајна боја"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Одаберите боју насумично."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "плава"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелена"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "црвена"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "боја са"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Направите боју са одређеном количином црвене, зелене и плаве. Све вредности морају бити између 0 и 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "изађи из петље"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "настави са следећом итерацијом петље"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Напусти садржај петље."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Прескочи остатак ове петље, и настави са следећом итерацијом(понављанјем)."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Упозорење: Овај блок може да се употреби само унутар петље."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "за сваку ставку %1 на списку %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "За сваку ставку унутар листе, подеси промењиву '%1' по ставци, и онда начини неке изјаве-наредбе."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "преброј са %1 од %2 до %3 од %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Имај промењиву \"%1\" узми вредности од почетног броја до задњег броја, бројећи по одређеном интервалу, и изврши одређене блокове."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Додајте услов блоку „ако“."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Додај коначни, catch-all (ухвати све) услове иф блока."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Додај, уклони, или преуреди делове како бих реконфигурисали овај иф блок."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "иначе"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "иначе-ако"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ако"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ако је вредност тачна, онда изврши неке наредбе-изјаве."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ако је вредност тачна, онда изврши први блок наредби, У супротном, изврши други блок наредби."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби. Ако ни једна од вредности није тачна, изврши последнји блок наредби."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://sr.wikipedia.org/wiki/For_петља"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "изврши"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "понови %1 пута"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Изврши неке наредбе неколико пута."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "понављати до"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "понављати док"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Док је вредност нетачна, извршава неке наредбе."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Док је вредност тачна, извршава неке наредбе."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Избрисати свих %1 блокова?"; +Blockly.Msg["DELETE_BLOCK"] = "Избриши блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Избриши променљиву ’%1’"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Избрисати %1 употребу променљиве „%2”?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Избриши %1 блокова"; +Blockly.Msg["DIALOG_CANCEL"] = "Откажи"; +Blockly.Msg["DIALOG_OK"] = "У реду"; +Blockly.Msg["DISABLE_BLOCK"] = "Онемогући блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дуплирај"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дуплирај коментар"; +Blockly.Msg["ENABLE_BLOCK"] = "Омогући блок"; +Blockly.Msg["EXPAND_ALL"] = "Прошири блокове"; +Blockly.Msg["EXPAND_BLOCK"] = "Прошири блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Спољашњи улази"; +Blockly.Msg["HELP"] = "Помоћ"; +Blockly.Msg["INLINE_INPUTS"] = "Редни улази"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "направи празан списак"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Враћа списак, дужине 0, без података"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "списак"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Додајте, избришите, или преуредите делове како би се реорганизовали овај блок листе."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "направи списак са"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Додајте ставку на списак."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Направите списак са било којим бројем ставки."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "прва"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# са краја"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "преузми"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "преузми и уклони"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последња"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "случајна"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "уклони"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Враћа прву ставку на списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Враћа ставку на одређену позицију на списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Враћа последњу ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Враћа случајну ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Уклања и враћа прву ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Уклања и враћа ставку са одређеног положаја са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Уклања и враћа последњу ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Уклања и враћа случајну ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Уклања прву ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Уклања ставку са одређеног положаја са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Уклања последњу ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Уклања случајну ставку са списка."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "до # од краја"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "до #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "до последње"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "преузми подсписак од прве"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "преузми подсписак из # са краја"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "преузми подсписак од #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Прави копију одређеног дела списка."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 је последња ставка."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 је прва ставка."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "пронађи прво појављивање ставке"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "пронађи последње појављивање ставке"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Враћа индекс прве/последње појаве ставке на списку. Враћа %1 ако ставка није пронађена."; +Blockly.Msg["LISTS_INLIST"] = "на списку"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 је празан"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Враћа вредност „тачно” ако је списак празан."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "дужина списка %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Враћа дужину списка."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Направити списак са ставком %1 која се понавља %2 пута"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Прави листу која се састоји од задане вредности коју понавлјамо одређени број шута."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "обрнуто %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Обрни копију списка."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "као"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "убаци на"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "постави"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Убацује ставку на почетак списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Убацује ставку на одређени положај на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Додајте ставку на крај списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Убацује ставку на случајно место на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Поставља прву ставку на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Поставља ставку на одређени положај на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Поставља последњу ставку на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Поставља случајну ставку на списку."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "растуће"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "опадајуће"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сортирај %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сортирајте копију списка."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "азбучно, игнориши мала и велика слова"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "као бројеве"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "азбучно"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "направите листу са текста"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "направи текст из списка"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Спаја списак текстова у један текст, раздвојених граничником."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Раздваја текст у списак текстова, преламањем на сваком граничнику."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "са граничником"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "нетачно"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Враћа или „тачно“ или „нетачно“."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "тачно"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://sr.wikipedia.org/wiki/Неједнакост"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Враћа вредност „тачно“ ако су оба улаза једнака."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Враћа вредност „тачно“ ако је први унос већи од другог."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Враћа вредност „тачно“ ако је први унос већи или једнак другом."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Враћа вредност „тачно“ ако је први унос мањи од другог."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Враћа вредност „тачно“ ако је први унос мањи или једнак другом."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Враћа вредност „тачно“ ако су оба уноса неједнака."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "није %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Враћа вредност „тачно“ ако је унос нетачан. Враћа вредност „нетачно“ ако је унос тачан."; +Blockly.Msg["LOGIC_NULL"] = "без вредности"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Враћа „без вредности“."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Враћа вредност „тачно“ ако су оба уноса тачна."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Враћа вредност „тачно“ ако је бар један од уноса тачан."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "проба"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ако је нетачно"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ако је тачно"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Проверите услов у „проба”. Ако је услов тачан, тада враћа „ако је тачно” вредност; у другом случају враћа „ако је нетачно” вредност."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://sr.wikipedia.org/wiki/Аритметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Враћа збир два броја."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Враћа количник два броја."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Враћа разлику два броја."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Враћа производ два броја."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Враћа први број степенован другим."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "атан2 од X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Врати арктангенту тачке (X, Y) у степенима од -180 до 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "промени %1 за %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Додаје број променљивој „%1”."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sr.wikipedia.org/wiki/Математичка_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Враћа једну од заједничких константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконачно)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ограничи %1 ниско %2 високо %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ограничава број на доње и горње границе (укључиво)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "је дељив са"; +Blockly.Msg["MATH_IS_EVEN"] = "је паран"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "је негативан"; +Blockly.Msg["MATH_IS_ODD"] = "је непаран"; +Blockly.Msg["MATH_IS_POSITIVE"] = "је позитиван"; +Blockly.Msg["MATH_IS_PRIME"] = "је прост"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверава да ли је број паран, непаран, прост, цео, позитиван, негативан, или дељив са одређеним бројем. Враћа „тачно” или „нетачно”."; +Blockly.Msg["MATH_IS_WHOLE"] = "је цео"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sr.wikipedia.org/wiki/Конгруенција"; +Blockly.Msg["MATH_MODULO_TITLE"] = "подсетник од %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Враћа подсетник од дељења два броја."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://sr.wikipedia.org/wiki/Број"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Број."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "просек списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "макс. списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медијана списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "мин. списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "модус списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случајна ставка списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандардна девијација списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "збир списка"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Враћа просек (аритметичку средину) бројева са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Враћа највећи број са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Враћа медијану са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Враћа најмањи број са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Враћа списак најчешћих ставки на списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Враћа случајни елемент са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Враћа стандардну девијацију списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Враћа збир свих бројева са списка."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "случајни разломак"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Враћа случајни разломак између 0.0 (укључиво) и 1.0 (искључиво)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "сличајно одабрани цијели број од %1 до %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Враћа случајно одабрани цели број између две одређене границе, уклјучиво."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sr.wikipedia.org/wiki/Заокруживање"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "заокружи"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "заокружи наниже"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "заокружи навише"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Заокружује број на већу или мању вредност."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sr.wikipedia.org/wiki/Квадратни_корен"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "апсолутно"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратни корен"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Враћа апсолутну вредност броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Враћа е-број на степен броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Враћа природни логаритам броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Враћа логаритам броја са основом 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Враћа негацију броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Враћа 10-ти степен броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Враћа квадратни корен броја."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "арц цос"; +Blockly.Msg["MATH_TRIG_ASIN"] = "арц син"; +Blockly.Msg["MATH_TRIG_ATAN"] = "арц тан"; +Blockly.Msg["MATH_TRIG_COS"] = "цос"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sr.wikipedia.org/wiki/Тригонометријске_функције"; +Blockly.Msg["MATH_TRIG_SIN"] = "син"; +Blockly.Msg["MATH_TRIG_TAN"] = "тан"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Враћа аркус косинус броја."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Враћа аркус синус броја."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Враћа аркус тангенс броја."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Враћа косинус степена (не радијан)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Враћа синус степена (не радијан)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Враћа тангенс степена (не радијан)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Направи променљиву боје..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Направи променљиву броја..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Направи променљиву ниске..."; +Blockly.Msg["NEW_VARIABLE"] = "Направи променљиву…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Име нове променљиве:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Нова врста променљиве:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дозволи изјаве"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "са:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://sr.wikipedia.org/wiki/Потпрограм"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Покреће кориснички дефинисану функцију „%1”."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://sr.wikipedia.org/wiki/Потпрограм"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Покреће кориснички дефинисану функцију „%1” и користи њен излаз."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "са:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Направи „%1”"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишите ову функцију…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "урадите нешто"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "до"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Прави функцију без излаза."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "врати"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Прави функцију са излазом."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Упозорење: Ова функција има дуплиране параметре."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Истакни дефиницију функције"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ако је прва вредност тачна, враћа другу вредност."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Упозорење: Овај блок се може користити једино унутар дефиниције функције."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "име параметра:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Додајте улазни параметар финкцији."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "улази"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Додајте, уклоните или преуредите уносе за ову функцију."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Понови"; +Blockly.Msg["REMOVE_COMMENT"] = "Уклони коментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Преименуј променљиву…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Преименуј све ’%1’ променљиве у:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "на %1 додај текст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Додаје текст променљивој „%1”."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "малим словима"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "свака реч великим словом"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "великим словима"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Враћа примерак текста са другачијом величином слова."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "преузми прво слово"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "преузми слово # са краја"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "преузми слово #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "преузми последње слово"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "преузми случајно слово"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "у тексту %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Враћа слово на одређени положај."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "број %1 у %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Броји колико пута се неки текст појављује унутар неког другог текста."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Додајте ставку у текст."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "спој"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Додај, уклони, или другачије поредај одјелке како би изнова поставили овај текст блок."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "слову # са краја"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "слову #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "последњем слову"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тексту"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "преузми подниску из првог слова"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "преузми подниску из слова # са краја"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "преузми подниску из слова #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Враћа одређени део текста."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "пронађи прво појављивање текста"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "пронађи последње појављивање текста"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тексту %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Враћа индекс првог/задњег појављивања првог текста у другом тексту. Враћа %1 ако текст није пронађен."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 је празан"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Враћа „тачно” ако је достављени текст празан."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "напиши текст са"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Направити дио текста спајајући различите ставке."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "дужина текста %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Враћа број слова (уклјучујући размаке) у датом тексту."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "прикажи %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Прикажите одређени текст, број или другу вредност на екрану."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Питајте корисника за број."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Питајте корисника за унос текста."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "питај за број са поруком"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "питај за текст са поруком"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замена %1 са %2 у %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замена свих појава неког текста унутар неког другог текста."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "обрнуто %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Обрће редослед карактера у тексту."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sr.wikipedia.org/wiki/Ниска"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Слово, реч или ред текста."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "трим празнине са обе стране"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "скратити простор са леве стране"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "скратити простор са десне стране"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Враћа копију текста са уклонјеним простором са једног од два краја."; +Blockly.Msg["TODAY"] = "Данас"; +Blockly.Msg["UNDO"] = "Опозови"; +Blockly.Msg["UNNAMED_KEY"] = "неименовано"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ставка"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Направи блок за доделу вредности %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Враћа вредност ове променљиве."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "постави %1 у %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Направи блок за преузимање вредности из „%1”"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Поставља променљиву тако да буде једнака улазу."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Променљива под именом ’%1’ већ постоји."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Променљива под именом ’%1’ већ постоји за други тип: ’%2’."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Блоклијев радни простор"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Кажите нешто…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sv.js b/blockly/msg/sv.js new file mode 100644 index 00000000000..83dd687fe5c --- /dev/null +++ b/blockly/msg/sv.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Lägg till kommentar"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kan inte radera variabeln '%1' eftersom den är en del av definition för funktionen '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ändra värde:"; +Blockly.Msg["CLEAN_UP"] = "Städa upp block"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Hopfällda block innehåller varningar."; +Blockly.Msg["COLLAPSE_ALL"] = "Fäll ihop block"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Fäll ihop block"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "färg 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "färg 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "förhållande"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blanda"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blandar ihop två färger med ett bestämt förhållande (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sv.wikipedia.org/wiki/Färg"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Välj en färg från paletten."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "slumpfärg"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Slumpa fram en färg."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blå"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grön"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "röd"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "färg med"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Skapa en färg med det angivna mängden röd, grön och blå. Alla värden måste vara mellan 0 och 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "bryt ut ur loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fortsätta med nästa upprepning av loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bryt ut ur den innehållande upprepningen."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Hoppa över resten av denna loop och fortsätt med nästa loop."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Varning: Detta block kan endast användas i en loop."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "för varje föremål %1 i listan %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "För varje objekt i en lista, ange variabeln '%1' till objektet, och utför sedan några kommandon."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "räkna med %1 från %2 till %3 med %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Låt variabeln \"%1\" anta värden från starttalet till sluttalet, beräknat med det angivna intervallet, och utför de angivna blocken."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Lägg till ett villkor blocket \"om\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Lägg till ett sista villkor som täcker alla alternativ som är kvar för \"if\"-blocket."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera blocket \"om\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "annars"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "annars om"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "om"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Om ett värde är sant, utför några kommandon."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Om värdet är sant, utför det första kommandoblocket. Utför annars det andra kommandoblocket."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket. Om ingen av värdena är sanna, utför det sista kommandoblocket."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "utför"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "upprepa %1 gånger"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Utför några kommandon flera gånger."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "upprepa tills"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "upprepa så länge"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Medan ett värde är falskt, utför några kommandon."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Medan ett värde är sant, utför några kommandon."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Radera alla %1 block?"; +Blockly.Msg["DELETE_BLOCK"] = "Radera block"; +Blockly.Msg["DELETE_VARIABLE"] = "Radera variabeln \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Radera %1 användningar av variabeln \"%2\"?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Radera %1 block"; +Blockly.Msg["DIALOG_CANCEL"] = "Avbryt"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Inaktivera block"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicera"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicera kommentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktivera block"; +Blockly.Msg["EXPAND_ALL"] = "Fäll ut block"; +Blockly.Msg["EXPAND_BLOCK"] = "Fäll ut block"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Externa inmatningar"; +Blockly.Msg["HELP"] = "Hjälp"; +Blockly.Msg["INLINE_INPUTS"] = "Radinmatning"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "skapa tom lista"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ger tillbaka en lista utan någon data, alltså med längden 0"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Lägg till, ta bort eller ändra ordningen på objekten för att göra om det här \"list\"-blocket."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "skapa lista med"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Lägg till ett föremål till listan."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Skapa en lista med valfritt antal föremål."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "första"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# från slutet"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "hämta"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hämta och ta bort"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "sista"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "slumpad"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ta bort"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnerar det första objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ger tillbaka objektet på den efterfrågade positionen i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnerar det sista objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returnerar ett slumpmässigt objekt i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Tar bort och återställer det första objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Tar bort och återställer objektet på den specificerade positionen i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Tar bort och återställer det sista objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Tar bort och återställer ett slumpmässigt objekt i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Tar bort det första objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Tar bort objektet på den specificerade positionen i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Tar bort det sista objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Tar bort en slumpmässig post i en lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "till # från slutet"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "till #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "till sista"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "få underlista från första"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "få underlista från # från slutet"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "få underlista från #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Skapar en kopia av den specificerade delen av en lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 är det sista objektet."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 är det första objektet."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "hitta första förekomsten av objektet"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "hitta sista förekomsten av objektet"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Ger tillbaka den första/sista förekomsten av objektet i listan. Returnerar %1 om objektet inte hittas."; +Blockly.Msg["LISTS_INLIST"] = "i listan"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 är tom"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnerar sant om listan är tom."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "längden på %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnerar längden på en lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "skapa lista med föremålet %1 upprepat %2 gånger"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Skapar en lista som innehåller ett valt värde upprepat ett bestämt antalet gånger."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "vänd på %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Vänd på en kopia av en lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "som"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "Sätt in vid"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ange"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "sätter in objektet i början av en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Sätter in objektet vid en specificerad position i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Lägg till objektet i slutet av en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "sätter in objektet på en slumpad position i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Anger det första objektet i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sätter in objektet vid en specificerad position i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Anger det sista elementet i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sätter in ett slumpat objekt i en lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "stigande"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "fallande"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sortera %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortera en kopia av en lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetiskt, ignorera skiftläge"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeriskt"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetiskt"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "skapa lista från text"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "skapa text från lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Sammanfoga en textlista till en text, som separeras av en avgränsare."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dela upp text till en textlista och bryt vid varje avgränsare."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "med avgränsare"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falskt"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnerar antingen sant eller falskt."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "sant"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://sv.wikipedia.org/wiki/Olikhet"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ger tillbaka sant om båda värdena är lika med varandra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ger tillbaka sant om det första värdet är större än det andra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ger tillbaka sant om det första värdet är större än eller lika med det andra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ger tillbaka sant om det första värdet är mindre än det andra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ger tillbaka sant om det första värdet är mindre än eller lika med det andra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ger tillbaka sant om båda värdena inte är lika med varandra."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "inte %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ger tillbaka sant om inmatningen är falsk. Ger tillbaka falskt och inmatningen är sann."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://sv.wikipedia.org/wiki/Null"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returnerar null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "och"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "eller"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ger tillbaka sant om båda värdena är sanna."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ger tillbaka sant om minst ett av värdena är sant."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "om falskt"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "om sant"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontrollera villkoret i \"test\". Om villkoret är sant, ge tillbaka \"om sant\"-värdet; annars ge tillbaka \"om falskt\"-värdet."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://sv.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnerar summan av de två talen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returnerar kvoten av de två talen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returnerar differensen mellan de två talen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returnerar produkten av de två talen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ger tillbaka det första talet upphöjt till det andra talet."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 av X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Returnerar arcustangens av punkt (X, Y) i grader från -180 till 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "ändra %1 med %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lägg till ett tal till variabeln '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sv.wikipedia.org/wiki/Matematisk_konstant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Returnerar en av de vanliga konstanterna: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (oändligt)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begränsa %1 till mellan %2 och %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begränsa ett tal till att mellan de angivna gränsvärden (inkluderande)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "är delbart med"; +Blockly.Msg["MATH_IS_EVEN"] = "är jämnt"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "är negativt"; +Blockly.Msg["MATH_IS_ODD"] = "är ojämnt"; +Blockly.Msg["MATH_IS_POSITIVE"] = "är positivt"; +Blockly.Msg["MATH_IS_PRIME"] = "är ett primtal"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollera om ett tal är jämnt, ojämnt, helt, positivt, negativt eller det är delbart med ett bestämt tal. Returnerar med sant eller falskt."; +Blockly.Msg["MATH_IS_WHOLE"] = "är helt"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sv.wikipedia.org/wiki/Modulär_aritmetik"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resten av %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Returnerar kvoten från divisionen av de två talen."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://sv.wikipedia.org/wiki/Tal"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ett tal."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "medelvärdet av listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "högsta talet i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medianen av listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minsta talet i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "typvärdet i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "slumpmässigt objekt i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardavvikelsen i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summan av listan"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ger tillbaka medelvärdet (aritmetiskt) av de numeriska värdena i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ger tillbaka det största talet i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Returnerar medianen av talen i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ger tillbaka det minsta talet i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Ger tillbaka en lista med de(t) vanligaste objekte(t/n) i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returnerar ett slumpmässigt element från listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ger tillbaka standardavvikelsen i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ger tillbaka summan av alla talen i listan."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://sv.wikipedia.org/wiki/Slumptalsgenerator"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slumpat decimaltal"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Ger tillbaka ett slumpat decimaltal mellan 0.0 (inkluderat) och 1.0 (exkluderat)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://sv.wikipedia.org/wiki/Slumptalsgenerator"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "slumpartat heltal från %1 till %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Ger tillbaka ett slumpat heltal mellan två värden, inkluderande."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sv.wikipedia.org/wiki/Avrundning"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "avrunda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "avrunda nedåt"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "avrunda uppåt"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Avrunda ett tal uppåt eller nedåt."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sv.wikipedia.org/wiki/Kvadratrot"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratrot"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returnerar absolutvärdet av ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ger tillbaka e upphöjt i ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Returnera den naturliga logaritmen av ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returnerar logaritmen för bas 10 av ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returnerar negationen av ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Ger tillbaka 10 upphöjt i ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returnerar kvadratroten av ett tal."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sv.wikipedia.org/wiki/Trigonometrisk_funktion"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ger tillbaka arcus cosinus (arccos) för ett tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ger tillbaka arcus sinus (arcsin) för ett tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ger tillbaka arcus tangens (arctan) av ett tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ger tillbaka cosinus för en grad (inte radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ger tillbaka sinus för en grad (inte radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ger tillbaka tangens för en grad (inte radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Skapa färgvariabel..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Skapa siffervariabel..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Skapa strängvariabel..."; +Blockly.Msg["NEW_VARIABLE"] = "Skapa variabel..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nytt variabelnamn:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ny variabeltyp:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "tillåta uttalanden"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kör den användardefinierade funktionen \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kör den användardefinierade funktionen \"%1\" och använd resultatet av den."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Skapa '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beskriv denna funktion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://sv.wikipedia.org/wiki/Funktion_(programmering)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "göra något"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "för att"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Skapar en funktion utan output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://sv.wikipedia.org/wiki/Funktion_(programmering)"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returnera"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Skapar en funktion med output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Varning: Denna funktion har dubbla parametrar."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markera funktionsdefinition"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Om ett värde är sant returneras ett andra värde."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Varning: Detta block får användas endast i en funktionsdefinition."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "inmatningsnamn:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Lägg till en inmatning till funktionen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inmatningar"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Lägg till, ta bort och ändra ordningen för inmatningar till denna funktion."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Gör om"; +Blockly.Msg["REMOVE_COMMENT"] = "Radera kommentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Byt namn på variabel..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Byt namn på alla'%1'-variabler till:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "för att %1 lägga till text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Lägg till lite text till variabeln '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "till gemener"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "till Versala Initialer"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "till VERSALER"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Returnerar en kopia av texten i ett annat skiftläge."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hämta första bokstaven"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hämta bokstaven # från slutet"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hämta bokstaven #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hämta sista bokstaven"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hämta slumpad bokstav"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "i texten %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Ger tillbaka bokstaven på den specificerade positionen."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "räkna %1 i %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Räkna hur många gånger en text förekommer inom en annan text."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Lägg till ett föremål till texten."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sammanfoga"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera detta textblock."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "till bokstav # från slutet"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "till bokstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "till sista bokstaven"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "i texten"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "få textdel från första bokstaven"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "få textdel från bokstav # från slutet"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "få textdel från bokstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Ger tillbaka en viss del av texten."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "hitta första förekomsten av texten"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "hitta sista förekomsten av texten"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "i texten %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Ger tillbaka indexet för den första/sista förekomsten av första texten i den andra texten. Ger tillbaka %1 om texten inte hittas."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 är tom"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnerar sant om den angivna texten är tom."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "skapa text med"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Skapa en textbit genom att sammanfoga ett valfritt antal föremål."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "längden på %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Ger tillbaka antalet bokstäver (inklusive mellanslag) i den angivna texten."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "skriv %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Skriv den angivna texten, talet eller annat värde."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Fråga användaren efter ett tal."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Fråga användaren efter lite text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "fråga efter ett tal med meddelande"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "fråga efter text med meddelande"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "ersätt %1 med %2 i %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ersätt alla förekomster av en text inom en annan text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "vänd på %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Vänder på teckenordningen i texten."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sv.wikipedia.org/wiki/Str%C3%A4ng_%28data%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En bokstav, ord eller textrad."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ta bort mellanrum från båda sidorna av"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ta bort mellanrum från vänstra sidan av"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ta bort mellanrum från högra sidan av"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returnerar en kopia av texten med borttagna mellanrum från en eller båda ändar."; +Blockly.Msg["TODAY"] = "Idag"; +Blockly.Msg["UNDO"] = "Ångra"; +Blockly.Msg["UNNAMED_KEY"] = "namnlös"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "föremål"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Skapa \"välj %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnerar värdet av denna variabel."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "ange %1 till %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Skapa 'hämta %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Gör så att den här variabeln blir lika med inputen."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "En variabel med namnet \"%1\" finns redan."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "En variabel med namnet \"%1\" finns redan för en annan typ: \"%2\"."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklys arbetsyta"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Säg någonting..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/sw.js b/blockly/msg/sw.js new file mode 100644 index 00000000000..ae6634f3120 --- /dev/null +++ b/blockly/msg/sw.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "Sawa"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Msaada"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Leo"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ta.js b/blockly/msg/ta.js new file mode 100644 index 00000000000..f271cd0a7ed --- /dev/null +++ b/blockly/msg/ta.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "கருத்தை சேர்"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "மதிப்பை மாற்றவும்:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "உறுப்புகளை மரை"; +Blockly.Msg["COLLAPSE_BLOCK"] = "உறுப்பை மரை"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "நிறம் 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "நிறம் 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "விகிதம்"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "கலப்பு (வண்ணம்)"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "கொடுக்கப்பட்ட விகதத்தில் (0.0 - 1.0) இரு நிறங்களை கலக்குக."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "வண்ண தட்டிலிருந்து ஒரு நிறத்தைத் தேர்ந்தெடுக்கவும்."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "தற்போக்கு நிறம்"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "தற்போக்கில் ஒரு நிறத்தை தேர்ந்தெடுக்கவும்."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "நீலம்"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "பச்சை"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "சிகப்பு"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "நிறத்துடன்"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "குறிப்பிட்ட அளவு சிவப்பு,பச்சை மற்றும் நீலம் சேர்த்து புது நிறம் உருவாக்கு. மதிப்புகள் 0 முதல் 100 வரை மட்டுமே இருக்க வேண்டும்."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "மடக்கு கட்டளையை நிறுத்து."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "மடக்கு கட்டளையின் அடுத்த இயக்கநிலைக்கு செல்"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "மடக்கு கட்டளையின் இயக்கத்தில் இருந்து நிறுத்து."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "மடக்கு கட்டளையின் மீதியை விட்டுவிட்டு அடுத்த இயக்கநிலைக்கு செல்"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "எச்சரிக்கை : மடக்கு கூற்றில் இந்த தொகுதி ஒரு முறை மட்டுமே செயல்படுத்தப் படலாம்."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "உருப்படி ஒவ்வொன்றாக %1 பட்டியலில் உள்ள %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "பட்டியலில் உள்ள உருப்படியில் ஒவ்வொன்றாக, மாறியின் பொருள் '%1' ஆக வைக்க."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "மாறியை வைத்து எண்ண %1 %2 இல் இருந்து %3 வரை %4-இன் படியாக"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "முதல் எண்ணில் இருந்து கடை எண் வரை எடுத்துக்கொள்ள ஒரு மாறியை வைத்துக்கொள், குறித்த இடைவெளியை சேர்த்தவறே தொகுதிகளை செயலாக்கு."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "ஆனால் தொகுப்பிற்கு நிபந்தனை சேர்க்க"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ஆனால் தொகுப்பிற்கு விதிவிலக்கு காப்பை சேர்க்க"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "கட்டளைகளை தொகுப்பு திருத்துதம் செய்"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "இல்லையெனில்"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "இல்லைஆனால்"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "எனில்"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை இயக்கு."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு. இரண்டும் இல்லை என்றால் கடைசி தொகுப்பு இயக்கு."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "செய்க"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "'%1' முரை திரும்ப செய்"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "கட்டளைகளை பல முரை செய்ய"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "பலமுரை திரும்ப செய் (முடயேனில்)"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "பலமுரை திரும்ப செய் (வரை)"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "மாறி பொய் ஆக உள்ள வரை, கட்டளைகளை இயக்கு"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "அனைத்து %1 நிரல் துண்டுகளையும் அழிக்கவா??"; +Blockly.Msg["DELETE_BLOCK"] = "உறுப்பை நீக்கு"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 உறுப்பை நீக்கு"; +Blockly.Msg["DIALOG_CANCEL"] = "இரத்து செய்"; +Blockly.Msg["DIALOG_OK"] = "சரி"; +Blockly.Msg["DISABLE_BLOCK"] = "உறுப்பை இயங்காது செய்"; +Blockly.Msg["DUPLICATE_BLOCK"] = "மறுநகல்"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "உறுப்பை இயங்குமாரு செய்"; +Blockly.Msg["EXPAND_ALL"] = "உறுப்புகளை காட்டு"; +Blockly.Msg["EXPAND_BLOCK"] = "உறுப்பை காட்டு"; +Blockly.Msg["EXTERNAL_INPUTS"] = "வெளி கருவிகளுடன் உள்ளீடு"; +Blockly.Msg["HELP"] = "உதவி"; +Blockly.Msg["INLINE_INPUTS"] = "சூழமைவில் உள்ளீடு"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "காலி பட்டியல் உருவாக்க"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "காலி பட்டியல் பின்கொடு."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "பட்டியல்"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "கட்டளைகளை தொகுப்பு திருத்துதம் செய்"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "வைத்து பட்டியல் உருவாக்க"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "பட்டியலில் ஒரு பொருளை சேர்க்க."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "இவ்வளவு உருப்படிகளை கொண்டு வேண்டுமாலும் ஒரு பட்டியலை உருவாக்கு."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "முதல்"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "கடைசியில் இருந்து #"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "எடு"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "பெற்று நீக்குக"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "கடைசி"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ஏதோ ஒன்று"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "நீக்குக"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "பட்டியல் முதல் உருப்படியை பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "பட்டியலில் இடத்தில் உருப்படி பின்கொடு."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "பட்டியல் கடைசி உருப்படியை பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "பட்டியல் சீரற்ற உருப்படியை பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "பட்டியல் முதல் உருப்படியை நீக்கியபின் பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கி பின்கொடு."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "பட்டியல் இறுதி உருப்படியை நீக்கியபின் பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "பட்டியல் சீரற்ற உருப்படியை நீக்கியபின் பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "பட்டியலில் முதல் உருப்படியை நீக்கு"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கு."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "பட்டியலில் கடைசி உருப்படியை நீக்கு"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "பட்டியல் சீரற்ற உருப்படியை நீக்கு,"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "முடிவில் இருந்து # வரை"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# வரை"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "முடிவு வரை"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "# முதலில் இருந்து பகுதி பட்டியலை கொடு"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# கடைசியில் இருந்து பகுதி பட்டியலை கொடு"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "பகுதி பட்டியலை # இடத்தில் இருந்து கொடு"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "குறிப்பட்ட பகுதி பட்டியலின் நகலை கொடு"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 கடைசி உருப்படி.ி"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 முதல் உருப்படி."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "உரையில் முதல் தோற்ற இடத்தை காட்டு"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "உரையில் கடைசி தோற்ற இடத்தை காட்டு"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "பட்டியலில் மதிப்பின் முதல், கடைசி தோற்ற இடத்தை பின்கொடு. காணாவிட்டால் %1 பின்கொடு."; +Blockly.Msg["LISTS_INLIST"] = "பட்டியலில் உள்ள"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 காலியானது"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "பட்டியல் காலியானது மெய் பின்கொடு,"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 இன் நீளம்"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "பட்டியல் நீளம் பின்கொடு"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "உருப்படி %1-யை, %2 தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "கொடுக்க பட்ட மதிப்பை, கூறியுள்ள தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "இதுபொல"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "அவ்விடத்தில் நுழை"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "நியமி"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "மதிப்பை பட்டியலின் முதலில் நுழை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "பட்டியலில் கேட்ட இடத்தில் உருப்படியை நுழை."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "மதிப்பை பட்டியலின் முடிவில் நுழை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "மதிப்பை பட்டியலின் சீற்ற இடத்தில் நுழை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "மதிப்பை பட்டியலில் முதல் உருப்படியில் வை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "பட்டியலில் கேட்ட இடத்தில் உருப்படியை வை."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "மதிப்பை பட்டியலில் கடைசி உருப்படியில் வை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "மதிப்பை பட்டியலில் சீரற்ற உருப்படியில் வை"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ஏறுவரிசை"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "இறங்குவரிசை"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "எண்வரிசை"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "அகரவரிசை"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "உரையில் இருந்து பட்டியல் உருவாக்கு"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "பட்டியலில் இருந்து உரை உருவாக்கு"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "வரம்புச் சுட்டியை இடையில் இட்டு, உரைதுண்டுகளை ஒன்று சேர்"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "உரையை வரம்புச் சுட்டி கொண்டு துண்டாக்கு."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "தடை எழுத்து"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "பொய்"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "மெய், அல்லது பொய் பின்கொடு."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "மெய்"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "இரண்டு மாறியும் ஈடானால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக இருந்தால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக இருந்தால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "இரண்டு மாறியும் ஈடாகாவிட்டால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 இல்லை"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "மெய் ஆனால், பொய் பின்கொடு. பொய் ஆனால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_NULL"] = "பூஜியம்"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "பூஜியம் பின்கொடு"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "மற்றும்"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "அல்லது"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "இரண்டு மாறியும் மெய் ஆனால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ஏதேனும் ஒரு மதிப்பு மெய் ஆனால், மெய் பின்கொடு"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "சோதனை"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "பொய்யெனில்"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "மெய்யெனில்"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'test' உள்ள நிபந்தனையை சரிபார்க்கவும், நிபந்தனை மெய்யானால்,'if true'வை பின்கொடுக்கும் இல்லையெனில் 'if false'வை பின்கொடுக்கும்."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4%E0%AE%AE%E0%AF%8D"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "இரு எண்களின் கூட்டை பின்கொடு"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "இரு எண்களின் வகுத்தல் பின்கொடு"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "இரு எண்களின் கழிப்பை பின்கொடு"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "இரு எண்களின் பெருக்கலை பின்கொடு"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "முதல் உள்ளீடு இரண்டாவது எண் அளவான அடுக்கு பெருக்கை கணித்து பின்கொடு."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "மாற்று %1 மூலம் %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "எண்னை '%1' மதிப்பால் கூட்டு,"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4_%E0%AE%AE%E0%AE%BE%E0%AE%B1%E0%AE%BF%E0%AE%B2%E0%AE%BF"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ஒரு மாறிலியை பின்கொடு π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (முடிவிலி)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 மாறியை %2 மேலும் %3 கீழும் வற்புறுத்து"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "எண் மாறி வீசுகளம் உள்ளடங்கிய வாறு வற்புறுத்து"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ஆல் வகுபடக் கூடியது"; +Blockly.Msg["MATH_IS_EVEN"] = "2-ஆல் பகும்"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "எண் குறைவானதா ?"; +Blockly.Msg["MATH_IS_ODD"] = "2-ஆல் பகாத"; +Blockly.Msg["MATH_IS_POSITIVE"] = "எண் நேர்ம முழுதானதா ?"; +Blockly.Msg["MATH_IS_PRIME"] = "எண் பகாத்தனிதானதா?"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "எண் முழுதானதா?"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2ன் மீதி"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "இரண்டு எண்கள் மூலம் பிரிவில் இருந்து எஞ்சியதை பின்கொடு."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ஒரு எண்."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "பட்டியலின் எண் சராசரி"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "பட்டியலின் மிகுதி"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "பட்டியலின் நடுக்கோடு"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "பட்டியலின் கறைவு"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "பட்டியலின் பொதுவகைகள்"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "பட்டியலின் நியமவிலகல்"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "பட்டியலின் கூட்டு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "முழு பட்டியலின் எண் சராசரி பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "பட்டியலின் அதிகமான எண் பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "பட்டியலின் நடுக்கோடு பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "பட்டியலின் குறைவான எண் பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "பட்டியலின் பொதுவகைகள் பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "பட்டியலின் நியமவிலகலை பின்கொடு."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "முழு பட்டியலின் எண் சமம் பின்கொடு,"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "சீரற்ற எண் பின்னம்"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "சீரற்ற எண் பின்னம், 0.0 இல் இருந்து 1.0 உட்பட, பின்கொடு."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "வீசுகளம் %1 இல் இருந்து %2 உள்ளடங்கிய வாறு சீரற்ற எண்"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "வீசுகளம் இல் இருந்த (உள்ளடங்கிய) வாறு சீரற்ற எண் பின்கொடு."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "முழுமையாக்கு"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "கீழ்வழி முழுமையாக்கு"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "மேல்வழி முழுமையாக்கு"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "மேல்/கீழ் வழி முழு எண் ஆக மாற்று."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%B5%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%AE%E0%AF%82%E0%AE%B2%E0%AE%AE%E0%AF%8D"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "தனித்த"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "வர்க்கமூலம்"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "ஒரு எண்ணின் தனித்த மதிப்பை பின்கொடு"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "e-இன் எண் அடுக்கு பெருக்கை பின்கொடு."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ஒரு எண்ணின் (இயற்கை) மடக்கை மதிப்பை பின்கொடு."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ஒரு எண்ணின் (10) மடக்கை மதிப்பை பின்கொடு."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ஒரு எண்ணின் எதிர்மறை மதிப்பை பின்கொடு"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10-இன் எண் அடுக்கு பெருக்கை பின்கொடு."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ஒரு எண்ணின் வர்க்கமூலத்தைத் தரும்."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%AE%E0%AF%81%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%8B%E0%AE%A3%E0%AE%B5%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D_%E0%AE%9A%E0%AE%BE%E0%AE%B0%E0%AF%8D%E0%AE%AA%E0%AF%81%E0%AE%95%E0%AE%B3%E0%AF%8D"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "மதிப்பின் நேர்மாறு கோசைன் பின்கொடு"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "மதிப்பின் நேர்மாறு சைன் பின்கொடு"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "மதிப்பின் நேர்மாறு டேஞ்சன்டு பின்கொடு"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "டிகிரீ கோசைன் மதிப்பை பின்கொடு"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "டிகிரீ சைன் மதிப்பை பின்கொடு."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "டிகிரீ டேஞ்சன்டு மதிப்பை பின்கொடு"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "மாறிலியை உருவாக்குக..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "புதிய மாறிலியின் பெயர்:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "புதிய மாறிலியின் பெயர்:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "வாக்குமூலங்களை அனுமதிக்கவும்"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "இத்துடன்"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "பயனரின் '%1' செயற்கூற்றை ஓட்டு."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "பயனரின் '%1' செயற்கூற்றை ஓட்டி வரும் வெளியீட்டை பயன்படுத்து."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "இத்துடன்:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' உருவாக்குக"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "கட்டளைகள் செய்ய (இடம்காட்டி)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "இந்த மாறியிற்கு"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "வெளியீடு இல்லாத ஒரு செயல்பாடு உருவாக்குகிறது"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "பின்கொடு"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "வெளியீடு உள்ள ஒரு செயல்பாடு உருவாக்குகிறது"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "எச்சரிக்கை: இந்த செயற்கூறில் போலியான அளபுருக்கள் உண்டு."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "நிரல்பாகத்தை விளக்கமாக காட்டு"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "மதிப்பு உண்மையானால், இரண்டாவது மதிப்பை பின்கொடு."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "பெயரை உள்ளிடுக:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "செயல்கூறுக்கு ஒரு உள்ளீட்டை சேர்."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "உள்ளீடுகள்"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "செயல்கூறுகளின் உள்ளீட்டை சேர், நீக்கு, or மீண்டும் வரிசை செய்."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "மீண்டும் செய்"; +Blockly.Msg["REMOVE_COMMENT"] = "கருத்தை நீக்கு"; +Blockly.Msg["RENAME_VARIABLE"] = "மாறிலியை மறுபெயரிடுக..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "அனைத்து '%1' மாறிலிகளையும் பின்வருமாறு மறுபெயரிடுக:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "இந்த மாறியிற்கு %1 உரை சேர்க்க %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' மாறியில் உரையை சேர்"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "சின்ன எழுத்துக்கு மாற்று"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "தலைப்பு எழுத்துக்கு மாற்று"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "பொரிய எழுத்துக்கு மாற்று"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "உரை நகல் எடுத்து பொரிய/சின்ன எழுத்து மாற்றி பின்கொடு."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "முதல் எழுத்தைப் பெறுக"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "முடிவில் இருந்து # எழுத்தை எடு"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# எழுத்தை எடு"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "இறுதி எழுத்தைப் பெறுக"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "சமவாய்ப்புள்ள எழுத்தை எடு"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "கூறிய இடத்தில் உள்ள எழுத்தை எடு"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "உருபடியை உரையில் சேர்க்க."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "சேர்க்க"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "தொகுப்பு உரை திருத்துதம் செய்"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "எழுத்து கடைசியில் இருந்து # வரை"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "எழுத்து # வரை"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "கடைசி எழுத்து வரை"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "உரையில்"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "-இல் உட்கணம் முதல் எழுத்திலிருந்து"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "-இல் உட்கணம் கடைசி # எழுத்திலிருந்து"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "-இல் உட்கணம் # எழுத்திலிருந்து"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "உரையின் குறியிடப்பட்ட சரம் பின்கொடு"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "உரையில் முதல் தோற்ற இடத்தை பின்கொடு"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "உரையில் கடைசி தோற்ற இடத்தை பின்கொடு"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "உரையில் %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "இரண்டாவது உரையில் முதல் உரையின் முதல்/கடை இருக்கை குறிஎண்ணை பின்கொடு."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 காலியானது"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "காலியானது என்றால் மெய் மதிப்பை பின்கொடு"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "வைத்து உரை உருவாக்க"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "பல பொருட்களை ஒன்றாக சேர்வதன் மூலம் உரை உருவாக்க."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1ன் நீளம்"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "தொடரில் உள்ள எழுத்துக்களின் (இடைவெளிகளையும் சேர்த்து) எண்ணிகையை பின்கொடு."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 அச்சிடுக"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "மதிப்பை அச்சிடு"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "எண்-உள்ளீடு தூண்டுதலை காட்டு"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "உரை-உள்ளீடு தூண்டுதலை காட்டு"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "உரை கொண்டு எண்-உள்ளீடு தூண்டுதலை காட்டு"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "உரை கொண்டு உரை-உள்ளீடு தூண்டுதலை காட்டு"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%B0%E0%AE%AE%E0%AF%8D_%28%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A9%E0%AE%BF%E0%AE%AF%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "எழுத்து, சரம், சொல், அல்லது உரை சொற்தொடர்."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "இரு பக்கத்திலும் இடைவெளி எழுத்து நேர்த்தி செய்."; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "இடது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்."; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "வலது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்."; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "உரை நகல் எடுத்து இடைவெளி எழுத்து நீக்கி பின்கொடு."; +Blockly.Msg["TODAY"] = "இன்று"; +Blockly.Msg["UNDO"] = "மீளமை"; +Blockly.Msg["UNNAMED_KEY"] = "பெயரிடப்படாதது"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "உருப்படி"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 நியமி' உருவாக்கு"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "இந்த மாறி மதிப்பை பின்கொடு"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "நியமி %1 இந்த மாறியிற்கு %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'எடு %1' உருவாக்கு"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "மாறியின் மதிப்பாய் உள்ளீட்டு மதிப்பை வை."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ஏதாகினும் பகர்க..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/tcy.js b/blockly/msg/tcy.js new file mode 100644 index 00000000000..b5d44068879 --- /dev/null +++ b/blockly/msg/tcy.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ಟಿಪ್ಪಣಿ ಸೇರ್ಸಲೆ"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ಮೌಲ್ಯೊನು ಬದಲ್ ಮಲ್ಪು"; +Blockly.Msg["CLEAN_UP"] = "ಬ್ಲಾಕ್‍ಲೆನ್ ಸ್ವೊಚ್ಚೊ ಮಲ್ಪುಲೆ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಎಲ್ಯ ಮಲ್ಪು"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ಎಲ್ಯೆ ಮಲ್ತ್‌ದ್ ತಡೆಲೆ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ಬಣ್ಣೊ ೧(ಒಂಜಿ)"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ಬಣ್ಣೊ ೨(ರಡ್ಡ್)"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ಅನುಪಾತೊ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ಬೆರಕ್ಕೆ ಮಲ್ಪು"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ಕೊರಿನ ಅನುಪಾತೊಡು (0.0- 1.0) ರಡ್ಡ್ ಬಣ್ಣೊಲೆನ್ ಬೆರಕೆ ಮಲ್ಪುಂಡು."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/ಬಣ್ಣೊ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ಬಣ್ಣೊ ಪಟೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ಒವ್ವೇ ಒಂಜಿ ಬಣ್ಣೊ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ನೀಲಿ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ಪಚ್ಚೆ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ಕೆಂಪು"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ಬಣ್ಣೊದ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ತೊಜಪಾಯಿನ ಪ್ರಮಾಣೊದ ಕೆಂಪು, ಪಚ್ಚೆ ಬೊಕ್ಕ ನೀಲಿ ಬಣ್ಣೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಉಂಡು ಮಲ್ಪುಲೆ. ಮಾತಾ ಮೌಲ್ಯೊಲು 0 ಬುಕ್ಕೊ 100 ತ ನಡುಟೆ ಇಪ್ಪೊಡು."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ಲೂಪ್ ಕಡಿಯುನಿ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ಬೊಕ್ಕದ ಲೂಪ್ ಪುನರಾವರ್ತನೆದೊಟ್ಟುಗು ದುಂಬರಿಲೆ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ಇತ್ತಿನ ಲೂಪ್‍ಡ್ದ್ ಪದಿಯಿ ಬಲೆ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ಈ ಲೂಪುನು ಅರ್ದೊಡೆ ಬುಡುದ್ ಬೊಕ್ಕ ನನತ್ತ ಪುನರಾವರ್ತನೆಗ್ ದುಂಬರಿಲೆ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ಎಚ್ಚರೊ: ಈ ತಡೆನ್ ಕಾಲಿ ಒಂಜಿ ಲೂಪುದುಲಯಿ ಮಾತ್ರ ಗಳಸೊಲಿ."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 ಪಟ್ಟಿಡ್ ಪ್ರತಿ ಒಂಜಿ ವಿಸಯ %1 ಗ್"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಪ್ರತಿ ವಿಸಯೊಗು, '%1' ವ್ಯತ್ಯಾಯೊನು ವಿಸಯೊಗು ಜೋಡಾಲೆ, ಬೊಕ್ಕ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪುಲೆ."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%2 ಡ್ದ್ %3 ಮುಟ %4 ಸರ್ತಿ %1 ದ ಒಟ್ಟುಗು ಗೆನ್ಪು"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ನಿರ್ದಿಸ್ಟೊ ಮದ್ಯಂತರೊದ ಮೂಲಕೊ ದೆತೊಂದು '%1' ವ್ಯತ್ಯಯೊಡ್ ಸುರುತ್ತ ಅಂಕೆಡ್ದ್ ಕಡೆತ್ತ ಅಂಕೆ ಮುಟ್ಟದ ಮೌಲ್ಯೊನು ದೆತ್ತೊನಾವ್ ಬೊಕ್ಕ ನಿಗಂಟ್ ಮಲ್ತಿನ ತಡೆಕ್ಲೆನ್ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಶರ್ತನ್ ಸೇರಾವ್"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಕಡೆತ್ತ ಮಾತೆನ್ಲಾ-ಪತ್ತ್ (catch-all) ಶರ್ತನ್ ಸೇರಾವ್"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ಸೇರಾವ್, ದೆತ್ತ್‌ ಬುಡು, ಅತ್ತಂಡ ಈ 'ಒಂಜಿ ವೇಲೆ' ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ಅತ್ತಂಡ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ಅತ್ತಂಡ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ಒಂಜಿ ವೇಲೆ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ಸುರುತ್ತ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ಸುರುತ್ತ ಮೌಲ್ಯೊ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆದ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು. ಒಂಜೇಲೆ ಒವ್ವೇ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತಿಜಿಂಡ, ಪಾತೆರೊಲೆನ ಕಡೆತ್ತ ತಡೆ ಮಲ್ಪು."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ಮಲ್ಪುಲೆ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = " %1 ಸರ್ತಿ ಕೂಡೊರ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಸ್ತ್ ಸರ್ತಿ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ಉಂದು ನಿಜ ಆಪಿಲೆಕೊ ಕುಡೊರ ಮಲ್ಪು:"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ಉಂದು ನಿಜ ಆಂಡ ಕುಡೊರ ಮಲ್ಪು:"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ಮೌಲ್ಯ ತಪ್ಪು ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ಮಾತ %1 ಬ್ಲಾಕ್‍ಲೆನ್ ದೆತ್ತ್‌ದ್ ಬುಡೊಡೆ?"; +Blockly.Msg["DELETE_BLOCK"] = "ಬ್ಲಾಕ್‍ನ್ ಮಾಜಾವು"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' ವ್ಯತ್ಯಯೊನು ಮಾಜಾಲೆ"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' ವ್ಯತ್ಯಯೊದ %1 ಉಪಯೋಗೊಲೆನ್ ಮಾಜಾವೊಡೆ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ಬ್ಲಾಕ್‍ಲೆನ್ ಮಾಜಾವು"; +Blockly.Msg["DIALOG_CANCEL"] = "ಉಂತಾಲೆ"; +Blockly.Msg["DIALOG_OK"] = "ಅವು"; +Blockly.Msg["DISABLE_BLOCK"] = "ಬ್ಲಾಕ್‍ನ್ ದೆತ್ತ್‌ಪಾಡ್"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ನಕಲ್"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ತಡೆನ್ ಸಕ್ರಿಯೊ ಮಲ್ಪು"; +Blockly.Msg["EXPAND_ALL"] = "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಪರಡಾವು"; +Blockly.Msg["EXPAND_BLOCK"] = "ಬ್ಲಾಕ್‍ದ ಮಾಹಿತಿನ್ ಪರಡಾವು"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ಪಿದಯಿದ ಪರಿಪು"; +Blockly.Msg["HELP"] = "ಸಹಾಯೊ"; +Blockly.Msg["INLINE_INPUTS"] = "ಉಳಸಾಲ್‍ದ ಉಳಪರಿಪು"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ಕಾಲಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "ಒಂಜಿ ಪಟ್ಟಿ, ೦ ಉದ್ದೊದ, ಒವ್ವೇ ಮಾಹಿತಿ ದಾಂತಿನ ದಾಖಲೆ ಪಿರಕೊರು."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ಪಟ್ಟಿ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "ಈ ಪಟ್ಟಿ ತಡೆನ್ ಕುಡ ಸಂರಚನೆ ಮಲ್ಪೆರೆ ಸೇರಾಲೆ, ದೆತ್ತ್ ಬುಡುಲೆ, ಅತ್ತಂಡ ವಿಬಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ಒಟ್ಟುಗು ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "ಪಟ್ಟಿಗ್ ಒಂಜಿ ವಿಸಯೊನು ಸೇರಾಲೆ."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "ಏತೇ ವಿಸಯೊಲುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ಸುರುತ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "ಅಕೇರಿಡ್ದ್ #"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "ದೆತೊನು"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "ದೆತ್ತೊನು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡು"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ಕಡೆತ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ಒವ್ವಾಂಡಲ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ದೆಪ್ಪುಲೆ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ಅಕೇರಿಡ್ದ್ # ಗ್"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# ಗ್"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ಅಕೇರಿಗ್"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ಸುರುಡ್ದು ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "ಅಕೇರಿಡ್ದ್ # ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "ಪಟ್ಯೊದ ನಿರ್ದಿಷ್ಟ ಬಾಗೊದ ಪ್ರತಿನ್ ಉಂಡುಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ಅಕೇರಿತ ವಿಸಯೊ"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ಸುರುತ ವಿಸಯೊ"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "ವಿಸಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "ವಿಸಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ವಿಸಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರ್ಪುಂಡು. ವಿಸಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_INLIST"] = "ಪಟ್ಟಿಡ್"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ಕಾಲಿ"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 ಉದ್ದೊ"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "ಪಟ್ಟಿದ ಉದ್ದೊನು ಪಿರಕೊರು."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 ವಿಸಯೊ %2 ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ."; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "ಕೊರಿನ ಮೌಲ್ಯೊ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಕ್ಯೆದಾತ್ ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ಲೆಕ"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ಸೇರಾವ್"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ಸೆಟ್ ಮಲ್ಪು"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿದ ಸುರುಕ್ಕು ವಿಸಯೊನು ಸೇರಾವುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿದ ಅಕೇರಿಗ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಓಲಾಂಡಲ ವಿಸಯೊನು ಸೇರಾವುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ಏರುನು"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ಜಪ್ಪುನು"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 ಇಂಗಡಿಪು"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "ಒಂಜಿ ಪಟ್ಟಿದ ಒಂಜಿ ಪ್ರತಿನ್ ಇಂಗಡಿಪು"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ಅಕ್ಷರೊ, ನಮೂನೆ (case) ಅಲಕ್ಷ್ಯೊ ಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ಸಂಖ್ಯೆ"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "ಅಕ್ಷರೊ"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ಪಟ್ಯೊಲೆ ಪಟ್ಟಿನ್ ತಯಾರ್ ಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ಪಟ್ಟಿದ ಪಟ್ಯೊನು ತಯಾರ್ ಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಮಿತಿಸೂಚಕೊದ ಮೂಲಕೊ ಬೇತೆ ಮಲ್ತ್‌ದ್ ಒಂಜಿ ಪಟ್ಯೊಗು ಸೇರಾಲೆ."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "ಪಟ್ಯೊಲೆನ್ ಪ್ರತಿ ಮಿತಿಸೂಚಕೊಡು ತುಂಡು ಮಲ್ತ್‌ದ್ ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿಗ್ ಬಾಗೊ ಮಲ್ಪುಲೆ."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ಮಿತಿಸೂಚಕೊದ ಒಟ್ಟುಗು"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ಸುಲ್ಲು"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ಒಂಜೆ ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ಸತ್ಯೊ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಅತ್ತಾಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 ಅತ್ತ್"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ಇನ್‌ಪುಟ್ ಸುಲ್ಲಾದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು. ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ಸುಲ್ಲು'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["LOGIC_NULL"] = "ಸೊನ್ನೆ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ಸೊನ್ನೆನ್ ಪಿರಕೊರ್ಪುಂಡು"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ಬುಕ್ಕೊ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ಅತ್ತಂಡ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ರಡ್ಡ್‌ಲಾ ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಇನ್‌ಪುಟ್ ನಿಜ ಆಂಡಲಾ, 'ನಿಜ'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ಪರೀಕ್ಷೆ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'ಪರೀಕ್ಷೆ'ಡ್ ಶರ್ತನ್ ಸರಿತೂಲೆ. ಶರ್ತ ನಿಜವಾದಿತ್ತ್ಂಡ, 'ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು; ಇಜ್ಜಿಂಡ 'ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/ಅಂಕಗಣಿತ"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ರಡ್ಡ್ ಸಂಖ್ಯೆದ ಮೊತ್ತನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "ಸಂಖ್ಯೆದ ಭಾಗಲಬ್ದೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "ರಡ್ಡ ಸ್ಂಖ್ಯೆದ ವ್ಯತ್ಯಾಸೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "ಸಂಖ್ಯೆದ ಗುಣಲಬ್ಧೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "ಸುರುತ್ತ ಸಂಖ್ಯೆದ ಘಾತೊನು ರಡ್ಡನೆ ಸಂಖ್ಯೆಗ್ ಏರ್ಪಾದ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 ನ್ %2 ಟ್ ಬದಲ್ ಮಲ್ಪು"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "'%1' ವ್ಯತ್ಯಯೊಗು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಸೇರಾವ್"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/ಗಣಿತ_ನಿರಂತರ"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ಒಂಜಿ ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕೊನು ಪಿರಕೊರು: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%2 ಕಮ್ಮಿ %3 ಜಾಸ್ತಿ %1 ನಿರ್ಬಂಧ ಮಲ್ಪು"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "ನಿಗದಿತ ಮಿತಿತ ನಡುಟು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ನಿರ್ಬಂಧ ಮಲ್ಪು"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ಭಾಗಿಪೊಲಿ"; +Blockly.Msg["MATH_IS_EVEN"] = "ಸಮ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ಋಣ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_ODD"] = "ಬೆಸ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ಧನ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_PRIME"] = "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "ಒಂಜಿ ಸಂಖ್ಯೆ ಸಮನಾ, ಬೆಸನಾ, ಅವಿಭಾಜ್ಯನಾ, ಪೂರ್ಣನಾ, ಧನನಾ, ಋಣನಾ, ಅತ್ತಂಡ ಅವೆನ್ ಬೇತೆ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಡ್ದ್ ಭಾಗಿಪೊಲಿಯಾ ಪಂದ್ ಪರೀಕ್ಷೆ ಮಲ್ಪು. ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["MATH_IS_WHOLE"] = "ಪೂರ್ಣ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/ಮೋಡ್ಯುಲೊ_ಒಪರೇಶನ್"; +Blockly.Msg["MATH_MODULO_TITLE"] = " %1 ÷ %2 ತ ಶೇಷ"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "ರಡ್ಡ್ ಸಂಖ್ಯೆಲೆನ್ ಭಾಗ ಮಲ್ತ್‌ದ್ ಶೇಷೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ಅ ನಂಬ್ರೊ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ಪಟ್ಟಿದ ಸರಾಸರಿ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ಪಟ್ಟಿಡ್ ಮಲ್ಲವ್"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ಪಟ್ಟಿದ ನಡುತ್ತವ್"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ಪಟ್ಟಿಡ್ ಕಿಞ್ಞವ್"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ಪಟ್ಟಿದ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ಮೌಲ್ಯ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಷಯ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ಪಟ್ಟಿದ ಮೊತ್ತ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಸರಾಸರಿನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಲ್ಲ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ನಡುತ್ತ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಕಿಞ್ಞ ಸಂಕ್ಯೆನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ವಿಷಯೊನು ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಂಶೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನೊನು ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಮೊತ್ತನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (ಸೇರ್‌ದ್) ಬೊಕ್ಕ 1.0 (ಸೇರಂದೆ) ನಡುತ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = " %1 ಡ್ದ್ %2 ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊ"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "ರಡ್ಡ್ ನಿಗದಿತ ಮಿತಿತ ನಡುತ್ತ ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊನು ಪಿರಕೊರು"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/ಪೂರ್ಣಾಂಕೊ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ರೌಂಡ್"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ತಿರ್ತ್‌ಗ್ ರೌಂಡ್"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ಮಿತ್ತ್‌ಗ್ ರೌಂಡ್"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಮಿತ್ತ್‌ಗ್ ಅತ್ತಂಡ ತಿರ್ತ್‌ಗ್ ರೌಂಡ್ ಮಲ್ಪು"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ಸಂಪೂರ್ನೊ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ವರ್ಗಮೂಲೊ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "ಸಂಖ್ಯೆದ ಸರಿಯಾಯಿನ ಮೌಲ್ಯೊನು ಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು 'e'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ಸಂಖ್ಯೆದ ಪ್ರಾಕೃತಿಕ ಲಘುಗಣಕನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ಸಂಖ್ಯೆದ ದಶಮಾನ ಲಘುಗಣಕನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ಸಂಖ್ಯೆದ ನಿಷೇಧೊನು ಪಿರಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು ೧೦ನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ಸಂಖ್ಯೆದ ವರ್ಗಮೂಲೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/ತ್ರಿಕೋನಮಿತಿದ_ಕಾರ್ಯೊಲು"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌‌ಕೊಸೈನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಸೈನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಟ್ಯಾನ್‌ಜ್ಂಟ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "ಒಂಜಿ ಡಿಗ್ರಿದ ಕೊಸೈನ್ (cosine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "ಒಂಜಿ ಡಿಗ್ರಿದ ಸೈನ್ (sine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "ಒಂಜಿ ಡಿಗ್ರಿದ ಟ್ಯಾನ್‌ಜೆಂಟ್ (tangent) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ವ್ಯತ್ಯಯೊನು ಉಂಡು ಮಲ್ಪುಲೆ"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ಪೊಸ ವ್ಯತ್ಯಯೊದ ಪುದರ್:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ಹೇಳಿಕೆಗ್ ಅವಕಾಸೊ"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ಒಟ್ಟುಗು:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "'%1' ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊನು ನಡಪಾಲೆ."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = " ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊ '%1' ನು ನಡಪಾಲೆ ಬುಕ್ಕೊ ಅಯಿತ ಉತ್ಪಾದನೆನ್ ಗಲಸ್‌ಲೆ."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ಒಟ್ಟುಗು:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = " '%1'ನ್ ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "ಈ ಕಾರ್ಯೊನು ಇವರಿಪುಲೆ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ಎಂಚಿನಾಂಡಲ ಮಲ್ಪುಲೆ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ಇಂದೆಕ್"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "ಔಟ್‌ಪುಟ್ ದಾಂತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ಪಿರಕೊರು"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "ಔಟ್‌ಪುಟ್ ಇತ್ತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯೊಡು ನಕಲಿ ಮಾನದಂಡೊ ಉಂಡು."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "ದೆರ್ತ್ ತೋಜುನ ಕಾರ್ಯೊದ ವ್ಯಾಕ್ಯಾನೊ"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ಮೌಲ್ಯೊ ಸತ್ಯೊ ಆಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯೊನು ಪಿರಕೊರು."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಒಂಜಿ ಕಾರ್ಯ ವ್ಯಾಕ್ಯಾನೊದುಲಯಿ ಮಾತ್ರ ಈ ತಡೆನ್ ಗಲಸೊಲಿ."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ಉಲಪರಿಪುದ ಪುದರ್:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ಕಾರ್ಯೊಗು ಒಂಜಿ ಉಲಪರಿಪುನು ಸೇರಲೆ."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ಉಲಪರಿಪು"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "ಸೇರಾಲೆ, ದೆತ್ತ್‌ ಬುಡುಲೆ, ಅತ್ತಂಡ ಈ ಕಾರ್ಯೊಗು ಉಲಪರಿಪುಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ಕುಡ ಮಲ್ಪು"; +Blockly.Msg["REMOVE_COMMENT"] = "ಟಿಪ್ಪಣಿನ್ ದೆತ್ತ್‌ದ್ ಬುಡ್ಲೆ"; +Blockly.Msg["RENAME_VARIABLE"] = "ವ್ಯತ್ಯಯೊಗು ಕುಡೊರ ಪುದರ್ ದೀಲೆ"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ಮಾತಾ '%1' ವ್ಯತ್ಯಯೊಲೆನ ಪುದರ್‌ನ್ ನೆಕ್ಕ್ ಬದಲ್ ಮಲ್ಪುಲೆ:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "ಇಂದೆಕ್ %1 ಪಟ್ಯೊನು ಸೇರವೆ %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "%1 ವ್ಯತ್ಯಯೊಗು ಕೆಲವು ಪಟ್ಯೊಲೆನ್ ಸೇರಾವ್"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ಎಲ್ಯ ಅಕ್ಷರೊಗು"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "ತರೆಬರವುದ ಅಕ್ಷರೊಗು"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "ಮಲ್ಲ ಅಕ್ಷರೊಗು"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "ಪಟ್ಯೊದ ಒಂಜಿ ನಕಲ್‍ನ್ ಬೇತೆ ನಮೂನೆಡ್ (case) ಪಿರಕೊರು."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ಸುರುತ್ತ ಅಕ್ಷರೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ನ್ ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "ಅಕ್ಸರೊ #ನ್ ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "ಅಕೇರಿದ ಅಕ್ಷರೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಕ್ಷರೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "%1 %2 ಪದೊಟ್ಟು"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "ಅಕ್ಷರೊನು ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "ಪಟ್ಯೊಗು ಒಂಜಿ ವಿಷಯೊನು ಸೇರಾವ್"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ಸೇರಾವ್"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "ಈ ಪಠ್ಯ ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ, ಸೇರಾವ್, ದೆತ್ತ್ ಬುಡು, ಅತ್ತಂಡ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪು."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಗು"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ಅಕ್ಷರೊ #ಗು"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ಅಕೇರಿದ ಅಕ್ಷರೊಗು"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ಪಟ್ಯೊಡು"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ಸುರುತ್ತ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊ ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "ಪಟ್ಯೊದ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಬಾಗೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ಪಟ್ಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ಪಟ್ಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ಪಟ್ಯೊಡು %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "ರಡ್ಡನೆ ಪಟ್ಯೊಡು ಉಪ್ಪುನ ಸುರುತ ಪಟ್ಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರು. ಪಟ್ಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರು."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ಖಾಲಿ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "ಕೊರಿನ ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ನೆಡ್ದ್ ಪಟ್ಯೊನು ಉಂಡು ಮಲ್ಪು"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "ಏತಾಂಡಲ ವಿಷಯಲೆನ್ ಒಟ್ಟುಗು ಸೇರಾದ್ ಒಂಜಿ ಪಟ್ಯೊದ ತುಂಡುನು ಉಂಡುಮಲ್ಪು."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 ಉದ್ದೊ"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "ಕೊರಿನ ಪಟ್ಯೊದ ಅಕ್ಷರೊಲೆನ (ಅಂತರೊಲು ಸೇರ್‌ದ್) ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 ಮುದ್ರಣ"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟ ಪಟ್ಯೊ, ಸಂಖ್ಯೆ ಅತ್ತಂಡ ಬೇತೆ ಮೌಲ್ಯೊನು ಮುದ್ರಿಪುಲೆ."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "ಒಂಜಿ ಸಂಖ್ಯೆಗ್ ಸದಸ್ಯೆರೆನ್ ಕೇನ್"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "ಕೆಲವು ಪಟ್ಯೊಗು ಸದಸ್ಯೆರೆನ್ ಕೇನ್."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "ಸಂದೇಶೊದೊಟ್ಟುಗು ಸಂಕ್ಯೆನ್ ಕೇನ್"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ಸಂದೇಶೊದೊಟ್ಟುಗು ಪಟ್ಯೊಗು ಕೇನ್."; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/ಸ್ಟ್ರಿಂಗ್_(ಕಂಪ್ಯೂಟರ್_ಸೈನ್ಸ್)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "ಒಂಜಿ ಅಕ್ಷರೊ, ಪದೊ ಅತ್ತಂಡ ಪಾಟೊದ ಒಂಜಿ ಸಾಲ್"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ರಡ್ಡ್ ಮೆಯಿತ್ತಲ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್."; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ಎಡತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್."; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ಬಲತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್."; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "ಒಂಜಿ ಅತ್ತಂಡ ರಡ್ಡ್ ಕೊಡಿಡ್ದ್ ಅಂತರೊಲೆನ್ (space) ದೆತ್ತ್‌ದ್ ಪಟ್ಯೊದ ಪ್ರತಿನ್ ಪಿರಕೊರು."; +Blockly.Msg["TODAY"] = "ಇನಿ"; +Blockly.Msg["UNDO"] = "ದುಂಬುದಲೆಕೊ"; +Blockly.Msg["UNNAMED_KEY"] = "ಪುದರ್ ಇಜ್ಜಂತಿನವು"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ವಸ್ತು"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'ಸೆಟ್ %1' ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "ಈ ವ್ಯತ್ಯಯೊದ ಮೌಲ್ಯೊನು ಪಿರಕೊರು."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "%1 ನ್ %2 ಕ್ಕ್ ಸೆಟ್ ಮಲ್ಪುಲೆ"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'ದೆತ್ತೊನು %1' ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "ಈ ವ್ಯತ್ಯಯೊನು ಇನ್‌ಪುಟ್‌ಗ್ ಸಮ ಆಪಿಲೆಕ ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' ಪನ್ಪಿ ಪುದರ್‌ದ ವ್ಯತ್ಯಯೊ ದುಂಬೆ ಅಸ್ತಿತ್ವೊಡು ಉಂಡು."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ದಾದಾಂಡಲ ಪನ್ಲೇ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/te.js b/blockly/msg/te.js new file mode 100644 index 00000000000..9dcd3d8b83e --- /dev/null +++ b/blockly/msg/te.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "వ్యాఖ్య చేర్చు"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "విలువ మార్చు"; +Blockly.Msg["CLEAN_UP"] = "నిరోదనలను శుభ్రపరుచు"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "నిరోదనలను కూల్చు"; +Blockly.Msg["COLLAPSE_BLOCK"] = "నరోదన కూల్చు"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "రంగు 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "రంగు 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "నిష్పత్తి"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "మిశ్రమం"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "రెండు రంగులను (0.0 - 1.0) నిష్పత్తిలో మిశ్రమించాలి."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://te.wikipedia.org/wiki/రంగు"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "చిత్రకారుడు ఉపయోగించే రంగుల నుండి ఒక దానిని ఎంచుకో."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "యాదృచ్ఛిక రంగు"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "యాదృచ్ఛికంగా ఒక రంగును ఎంచుకో."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "నీలం"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ఆకుపచ్చ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ఎరుపు"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "తో రంగు"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ఎరుపు,పచ్చ మరియు బులుగు రంగులను సమంగా ఉపయోగించి ఒక రంగును సృష్ఠించండి.అన్ని విలువలు 0 నుండి 100 మధ్యలో ఉండాలి."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ఒక అంశం కోసం %1 జాబితా లో %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "దీనితో లెక్కించు %1 నుండి %2 వరకు %3 తో %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "అయితే"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://te.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "చేయు"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 సార్లు మళ్ళీ కొనసాగించు"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "కొన్ని నివేదికలు లేదా ప్రతిపాదనలు అనేక మార్లు చెయ్యండి."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "అంతవరకు మళ్ళీ కొనసాగించండి"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ఒక వె తప్పైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ఒక వెల నిజమైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "మెుత్తం %1నిరోదనలను తొలగించు?"; +Blockly.Msg["DELETE_BLOCK"] = "నిరోదన తొలగించు"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1నిరోదనలను తోలగించు"; +Blockly.Msg["DIALOG_CANCEL"] = "రద్దు"; +Blockly.Msg["DIALOG_OK"] = "సరే"; +Blockly.Msg["DISABLE_BLOCK"] = "నిరోదన పని చేయకుండా చేయు"; +Blockly.Msg["DUPLICATE_BLOCK"] = "నకలు"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "నిరోదన ప్రారంబించు"; +Blockly.Msg["EXPAND_ALL"] = "నిరోదనలను విస్తరించు"; +Blockly.Msg["EXPAND_BLOCK"] = "నిరోదన విస్తరించు"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "సహాయం"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "జాబితా"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "మొదటి"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "#చివరి నుండి"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "పొందు"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "తెచ్చుకుని, తీసెయ్యి"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "చివరి"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "యాదృచ్చిక"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "తొలగించు"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "చివరి నుండి # వరకు"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# కు"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "తుదకు"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "జాబితాలో"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "గా"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "అసత్యం"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "సత్యం"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 కాదు"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "చెల్లని"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "మరియు"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "లేదా"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "పరీక్షించు"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "అసత్యమైతే"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "సత్యమైతే"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://te.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "రెండు సంఖ్యల మొత్తానికి తిరిగి వెళ్ళండి."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "రెండు సంఖ్యల తేడాకి తిరిగి వెళ్ళండి"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "దీనితో భాగించబడును"; +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "ప్రతికూలంగా ఉంది"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "అనుకూలంగా ఉంది"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ఒ సంఖ్య."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "జాబితా సగటు"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "జాబితా మొత్తం"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "కొత్త వ్యత్యాసం..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "కొత్త వ్యత్యాసం పేరు:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "తో:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "తో:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ఏదో ఒకటి చేయి"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "కు"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "తిరిగి వెళ్ళు"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "మళ్ళీ చెయ్యి"; +Blockly.Msg["REMOVE_COMMENT"] = "వ్యాఖ్యను తొలగించు"; +Blockly.Msg["RENAME_VARIABLE"] = "పునఃనామకరణ వ్యత్యాసం..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "మొత్తం వ్యత్యాసాలను '%1' దీనికి పునఃనామకరణించు:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "మొదటి వర్ణాన్ని పొందు"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "చివరి వర్ణాన్ని పొందు"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "యాదృశ్చిక వర్ణాన్ని పొందు"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "చేరు"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "% 1 ఖాళీ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 పొడువు"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "నేడు"; +Blockly.Msg["UNDO"] = "రద్దుచెయ్యి"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "అంశం"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/th.js b/blockly/msg/th.js new file mode 100644 index 00000000000..4a1c5ccd1a9 --- /dev/null +++ b/blockly/msg/th.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ใส่คำอธิบาย"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "ไม่สามารถลบตัวแปร '%1' ได้เนื่องจากเป็นส่วนหนึ่งของนิยามของฟังก์ชัน '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "เปลี่ยนค่า:"; +Blockly.Msg["CLEAN_UP"] = "จัดเรียงบล็อกให้เป็นแถว"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "บล็อกที่ถูกพับมีคำเตือนอยู่ข้างใน."; +Blockly.Msg["COLLAPSE_ALL"] = "ย่อบล็อก"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ย่อบล็อก"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "สีที่ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "สีที่ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "อัตราส่วน"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ผสม"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ผสมสองสีเข้าด้วยกันด้วยอัตราส่วน (0.0 - 1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://th.wikipedia.org/wiki/สี"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "เลือกสีจากจานสี"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "สุ่มสี"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "เลือกสีแบบสุ่ม"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ค่าสีน้ำเงิน"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ค่าสีเขียว"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ค่าสีแดง"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "สีที่ประกอบด้วย"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "สร้างสีด้วยการกำหนดค่าสีแดง เขียว และน้ำเงิน ค่าทั้งหมดต้องอยู่ระหว่าง 0 ถึง 100"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ออกจากการวนซ้ำ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "เริ่มการวนซ้ำรอบต่อไป"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ออกจากการวนซ้ำที่อยู่"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ข้ามคำสั่งที่เหลืออยู่ และเริ่มต้นวนซ้ำรอบต่อไป"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "คำเตือน: บล็อกนี้ใช้งานได้ภายในการวนซ้ำเท่านั้น"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "จากทุกรายการ %1 ในรายชื่อ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "จากทุกรายการในรายชื่อ ตั้งค่าตัวแปร \"%1\" เป็นรายการ และทำตามคำสั่งที่กำหนดไว้"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "นับด้วย %1 จาก %2 จนถึง %3 เปลี่ยนค่าทีละ %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ตัวแปร '%1' จะเริ่มจากจำนวนเริ่มต้น ไปจนถึงจำนวนสุดท้าย ตามระยะที่กำหนด และ ทำบล็อกที่กำหนดไว้"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "กำหนดเงื่อนไขของบล็อก \"ถ้า\""; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "เพิ่มสิ่งสุดท้าย ที่จะตรวจจับความเป็นไปได้ทั้งหมดของบล็อก \"ถ้า\""; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "เพิ่ม ลบ หรือจัดเรียงบล็อก \"ถ้า\" นี้ใหม่"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "นอกเหนือจากนี้"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "นอกเหนือจากนี้ ถ้า"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ถ้า"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด แต่ถ้าเงื่อนไขเป็นเท็จก็จะทำ \"นอกเหนือจากนี้\""; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำตามคำสั่งในบล็อกแรก แต่ถ้าไม่ก็จะไปตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามเงื่อนไขในบล็อกที่สองนี้"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำคำสั่งในบล็อกแรก จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าเงื่อนไขแรกเป็นเท็จ ก็จะทำการตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามคำสั่งในบล็อกที่สอง จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าทั้งเงื่อนไขแรกและเงื่อนไขที่สองเป็นเท็จทั้งหมด ก็จะมาทำบล็อกที่สาม"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ทำ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ทำซ้ำ %1 ครั้ง"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ทำซ้ำบางคำสั่งหลายครั้ง"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ทำซ้ำจนกระทั่ง"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ทำซ้ำขณะที่"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ขณะที่ค่าเป็นเท็จ ก็จะทำบางคำสั่ง"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ขณะที่ค่าเป็นจริง ก็จะทำบางคำสั่ง"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ลบ %1 บล็อกทั้งหมด?"; +Blockly.Msg["DELETE_BLOCK"] = "ลบบล็อก"; +Blockly.Msg["DELETE_VARIABLE"] = "ลบตัวแปร '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "ลบการใช้ตัวแปร %2 %1 ครั้งหรือไม่"; +Blockly.Msg["DELETE_X_BLOCKS"] = "ลบ %1 บล็อก"; +Blockly.Msg["DIALOG_CANCEL"] = "ยกเลิก"; +Blockly.Msg["DIALOG_OK"] = "ตกลง"; +Blockly.Msg["DISABLE_BLOCK"] = "ปิดใช้งานบล็อก"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ทำสำเนา"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ทำสำเนาความเห็น"; +Blockly.Msg["ENABLE_BLOCK"] = "เปิดใช้งานบล็อก"; +Blockly.Msg["EXPAND_ALL"] = "ขยายบล็อก"; +Blockly.Msg["EXPAND_BLOCK"] = "ขยายบล็อก"; +Blockly.Msg["EXTERNAL_INPUTS"] = "อินพุตภายนอก"; +Blockly.Msg["HELP"] = "ช่วยเหลือ"; +Blockly.Msg["INLINE_INPUTS"] = "อินพุตในบรรทัด"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "สร้างรายการเปล่า"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "สร้างรายการเปล่า (ความยาวเป็น 0) ยังไม่มีข้อมูลใดๆ อยู่"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "รายการ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "เพิ่ม ลบ หรือจัดเรียงบล็อกรายการนี้ใหม่"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "สร้างข้อความด้วย"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "เพิ่มไอเท็มเข้าไปในรายการ"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "สร้างรายการพร้อมด้วยไอเท็ม"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "แรกสุด"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# จากท้าย"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "เรียกดู"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "เรียกดูและเอาออก"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ท้ายสุด"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "สุ่ม"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "เอาออก"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "คืนค่าไอเท็มอันแรกในรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "คืนค่าไอเท็มอันสุดท้ายในรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "คืนค่าไอเท็มแบบสุ่มจากรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "เอาออก และคืนค่าไอเท็มอันแรกในรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "เอาออก และคืนค่าไอเท็มในตำแหน่งที่ระบุจากรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "เอาออก และคืนค่าไอเท็มอันสุดท้ายในรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "เอาออก และคืนค่าไอเท็มแบบสุ่มจากรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "เอาไอเท็มแรกสุดในรายการออก"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "เอาไอเท็มอันท้ายสุดในรายการออก"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "เอาไอเท็มแบบสุ่มจากรายการออก"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ถึง # จากท้ายสุด"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "จนถึง #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ถึง ท้ายสุด"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ดึงรายการย่อยทั้งแต่แรกสุด"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "ดึงรายการย่อยจาก # จากท้ายสุด"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "ดึงรายการย่อยจาก #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "สร้างสำเนารายการในช่วงที่กำหนด"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 คือไอเท็มอันท้ายสุด"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 คือไอเท็มอันแรกสุด"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "หาอันแรกที่พบ"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "หาอันสุดท้ายที่พบ"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "คืนค่าตำแหน่งของไอเท็มอันแรก/สุดท้ายที่พบในรายการ คืนค่า %1 ถ้าหาไม่พบ"; +Blockly.Msg["LISTS_INLIST"] = "ในรายการ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ว่างเปล่า"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "คืนค่าเป็นจริง ถ้ารายการยังว่างเปล่า"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "ความยาวของ %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "ส่งคืนค่าความยาวของรายการ"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "สร้างรายการที่มีไอเท็ม %1 จำนวน %2"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "สร้างรายการที่ประกอบด้วยค่าตามที่ระบุในจำนวนตามที่ต้องการ"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "เรียง %1 แบบย้อนกลับ"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "เรียงลำดับสำเนาของรายชื่อแบบย้อนกลับ"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "เป็น"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "แทรกที่"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "กำหนด"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "แทรกไอเท็มเข้าไปเป็นอันแรกสุดของรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "แทรกไอเท็มเข้าไปในตำแหน่งที่กำหนด"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "เพิ่มไอเท็มเข้าไปท้ายสุดของรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "เพิ่มไอเท็มเข้าไปในรายการแบบสุ่ม"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "กำหนดไอเท็มอันแรกในรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "กำหนดไอเท็มในตำแหน่งที่ระบุในรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "กำหนดไอเท็มอันสุดท้ายในรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "กำหนดไอเท็มแบบสุ่มในรายการ"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "น้อยไปหามาก"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "มากไปหาน้อย"; +Blockly.Msg["LISTS_SORT_TITLE"] = "เรียงลำดับ %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "เรียงลำดับสำเนาของรายชื่อ"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ตัวอักษร"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ตัวเลข"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "ตัวอักษร"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "สร้างรายการจากข้อความ"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "สร้างข้อความจากรายการ"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "รวมรายการข้อความเป็นข้อความเดียว แบ่งด้วยตัวคั่น"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "แบ่งข้อความเป็นรายการข้อความ แยกแต่ละรายการด้วยตัวคั่น"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ด้วยตัวคั่น"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "เท็จ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "คืนค่าเป็นจริงหรือเท็จ"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "จริง"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://th.wikipedia.org/wiki/อสมการ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นเท่ากัน"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าค่าที่สอง"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าหรือเท่ากับค่าที่สอง"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าค่าที่สอง"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าหรือเท่ากับค่าที่สอง"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นไม่เท่ากัน"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ไม่ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่เป็นเท็จ คืนค่าเป็น \"เท็จ\" ถ้าค่าที่ใส่เป็นจริง"; +Blockly.Msg["LOGIC_NULL"] = "ไม่กำหนด"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "คืนค่า \"ไม่กำหนด\""; +Blockly.Msg["LOGIC_OPERATION_AND"] = "และ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "หรือ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "คืนค่าเป็น \"จริง\" ถ้าค่าทั้งสองค่าเป็นจริง"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "คืนค่าเป็น \"จริง\" ถ้ามีอย่างน้อยหนึ่งค่าที่เป็นจริง"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ทดสอบ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ถ้า เป็นเท็จ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ถ้า เป็นจริง"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "ตรวจสอบเงื่อนไขใน \"ทดสอบ\" ถ้าเงื่อนไขเป็นจริง จะคืนค่า \"ถ้า เป็นจริง\" ถ้าเงื่อนไขเป็นเท็จ จะคืนค่า \"ถ้า เป็นเท็จ\""; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://th.wikipedia.org/wiki/เลขคณิต"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "คืนค่าผลรวมของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "คืนค่าผลหารของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "คืนค่าผลต่างของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "คืนค่าผลคูณของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "คืนค่าผลการยกกำลัง โดยตัวเลขแรกเป็นฐาน และตัวเลขที่สองเป็นเลขชี้กำลัง"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ของ X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "เปลี่ยนอาร์กแทนเจนต์ของชุด (X, Y) จากองศา 180 เป็น -180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "เปลี่ยนค่า %1 เป็น %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "เพิ่มค่าของตัวแปร \"%1\""; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://th.wikipedia.org/wiki/ค่าคงตัวทางคณิตศาสตร์"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "คืนค่าคงตัวทางคณิตศาสตร์ที่พบบ่อยๆ เช่น π (3.141…), e (2.718…), φ (1.618…), รากที่สอง (1.414…), รากที่ ½ (0.707…), ∞ (อนันต์)"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "จำกัดค่า %1 ต่ำสุด %2 สูงสุด %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "จำกัดค่าของตัวเลขให้อยู่ในช่วงที่กำหนด"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "หารลงตัว"; +Blockly.Msg["MATH_IS_EVEN"] = "เป็นจำนวนคู่"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "เป็นเลขติดลบ"; +Blockly.Msg["MATH_IS_ODD"] = "เป็นจำนวนคี่"; +Blockly.Msg["MATH_IS_POSITIVE"] = "เป็นเลขบวก"; +Blockly.Msg["MATH_IS_PRIME"] = "เป็นจำนวนเฉพาะ"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "ตรวจว่าตัวเลขเป็นจำนวนคู่ จำนวนคี่ จำนวนเฉพาะ จำนวนเต็ม เลขบวก เลขติดลบ หรือหารด้วยเลขที่กำหนดลงตัวหรือไม่ คืนค่าเป็นจริงหรือเท็จ"; +Blockly.Msg["MATH_IS_WHOLE"] = "เป็นเลขจำนวนเต็ม"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "เศษของ %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "คืนค่าเศษที่ได้จากการหารของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://th.wikipedia.org/wiki/จำนวน"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "จำนวน"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ค่าเฉลี่ยของรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "มากที่สุดในรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ค่ามัธยฐานของรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "น้อยที่สุดในรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ฐานนิยมของรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "สุ่มรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ส่วนเบี่ยงเบนมาตรฐานของรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ผลรวมของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "คืนค่าเฉลี่ยของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "คืนค่าตัวเลขที่มากที่สุดในรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "คืนค่ามัธยฐานของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "คืนค่าตัวเลขที่น้อยที่สุดในรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "คืนค่าฐานนิยมของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "สุ่มคืนค่าสิ่งที่อยู่ในรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "คืนค่าส่วนเบี่ยงเบนมาตรฐานของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "คืนค่าผลรวมของตัวเลขทั้งหมดในรายการ"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "สุ่มเลขเศษส่วน"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "สุ่มเลขเศษส่วน ตั้งแต่ 0.0 แต่ไม่เกิน 1.0"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "สุ่มเลขจำนวนเต็มตั้งแต่ %1 จนถึง %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "สุ่มเลขจำนวนเต็มจากช่วงที่กำหนด"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://th.wikipedia.org/wiki/การปัดเศษ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ปัดเศษ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ปัดเศษลง"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ปัดเศษขึ้น"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "ปัดเศษของตัวเลขขึ้นหรือลง"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ค่าสัมบูรณ์"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "รากที่สอง"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "คืนค่าค่าสัมบูรณ์ของตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "คืนค่า e ยกกำลังด้วยตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "คืนค่าลอการิทึมธรรมชาติของตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "คืนค่าลอการิทึมฐานสิบของตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "คืนค่าติดลบของตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "คืนค่า 10 ยกกำลังด้วยตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "คืนค่ารากที่สองของตัวเลข"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://th.wikipedia.org/wiki/ฟังก์ชันตรีโกณมิติ"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "คืนค่า arccosine ของตัวเลข"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "คืนค่า arcsine ของตัวเลข"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "คืนค่า arctangent ของตัวเลข"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "คืนค่า cosine ขององศา (ไม่ใช่เรเดียน)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "คืนค่า sine ขององศา (ไม่ใช่เรเดียน)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "คืนค่า tangent ขององศา (ไม่ใช่เรเดียน)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "สร้างตัวแปรสี"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "สร้างตัวแปรจำนวน"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "สร้างตัวแปร string"; +Blockly.Msg["NEW_VARIABLE"] = "สร้างตัวแปร..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ชื่อตัวแปรใหม่:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ชนิดตัวแปรใหม่"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ข้อความที่ใช้ได้"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ด้วย:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://th.wikipedia.org/wiki/ซับรู้ทีน"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\""; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://th.wikipedia.org/wiki/ซับรูทีน"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\" และใช้ผลลัพธ์ของมัน"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ด้วย:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "สร้าง \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "อธิบายฟังก์ชันนี้"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ทำอะไรบางอย่าง"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ถึง"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "สร้างฟังก์ชันที่ไม่มีผลลัพธ์"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "คืนค่า"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "สร้างฟังก์ชันที่มีผลลัพธ์"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ระวัง: ฟังก์ชันนี้มีพารามิเตอร์ที่มีชื่อซ้ำกัน"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "เน้นฟังก์ชันนิยาม"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ถ้ามีค่าเป็นจริง ให้คืนค่าที่สอง"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ระวัง: บล็อกนี้ใช้เฉพาะในการสร้างฟังก์ชันเท่านั้น"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ชื่อนำเข้า:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "เพิ่มค่าป้อนเข้าฟังก์ชัน"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "นำเข้า"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "เพิ่ม, ลบ, หรือจัดเรียง ข้อมูลที่ป้อนเข้าฟังก์ชันนี้"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ทำซ้ำ"; +Blockly.Msg["REMOVE_COMMENT"] = "เอาคำอธิบายออก"; +Blockly.Msg["RENAME_VARIABLE"] = "เปลี่ยนชื่อตัวแปร..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "เปลี่ยนชื่อตัวแปร '%1' ทั้งหมดเป็น:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "นำเอา %1 ต่อด้วยข้อความ %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "ต่อข้อความให้ตัวแปร \"%1\""; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "เปลี่ยนเป็น ตัวพิมพ์เล็ก"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "เปลี่ยนเป็น ตัวอักษรแรกเป็นตัวพิมพ์ใหญ่"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "เปลี่ยนเป็น ตัวพิมพ์ใหญ่"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "คืนค่าสำเนาของข้อความในกรณีต่างๆ"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ดึง ตัวอักษรตัวแรก"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ดึง ตัวอักษรตัวที่ # จากท้าย"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "ดึง ตัวอักษรตัวที่"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "ดึง ตัวอักษรตัวสุดท้าย"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ถึงตัวอักษรแบบสุ่ม"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ในข้อความ %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "คืนค่าตัวอักษรจากตำแหน่งที่ระบุ"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "นับ %1 ภายใน %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "นับจำนวนข้อความแรกที่พบอยู่ในข้อความที่สอง"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "เพิ่มรายการเข้าไปในข้อความ"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "รวม"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "เพิ่ม ลบ หรือจัดเรียงบล็อกข้อความนี้ใหม่"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "จนถึง ตัวอักษรที่ # จากท้าย"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "จนถึง ตัวอักษรที่"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "จนถึง ตัวอักษรสุดท้าย"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ในข้อความ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "แยกข้อความย่อยตั้งแต่ ตัวอักษรแรก"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่ # จากท้าย"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "คืนค่าบางส่วนของข้อความ"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "หาข้อความแรกที่พบ"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "หาข้อความสุดท้ายที่พบ"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ในข้อความ %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "คืนค่าตำแหน่งที่พบข้อความแรกอยู่ในข้อความที่สอง คืนค่า %1 ถ้าหาไม่พบ"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ว่าง"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "คืนค่าจริง ถ้าข้อความยังว่างเปล่า"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "สร้างข้อความด้วย"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "สร้างข้อความด้วยการรวมจำนวนของรายการเข้าด้วยกัน"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "ความยาวของ %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "คืนค่าความยาวของข้อความ (รวมช่องว่าง)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "พิมพ์ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "พิมพ์ข้อความ ตัวเลข หรือค่าอื่นๆ"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "แสดงหน้าต่างให้ผู้ใช้ใส่ตัวเลข"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "แสดงหน้าต่างให้ผู้ใช้ใส่ข้อความ"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "แสดงหน้าต่างตัวเลข"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "แสดงหน้าต่างข้อความ"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "แทนที่ %1 ด้วย %2 ใน %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "แทนที่ข้อความแรกทั้งหมดที่พบในข้อความที่สอง"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "เรียง %1 แบบย้อนกลับ"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "เรียงตัวอักษรทั้งหมดของข้อความแบบย้อนกลับ"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://th.wikipedia.org/wiki/สายอักขระ"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "ตัวหนังสือ คำ หรือข้อความ"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ลบช่องว่างทั้งสองข้างของ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ลบช่องว่างด้านหน้าของ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ลบช่องว่างข้างท้ายของ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "คืนค่าสำเนาของข้อความที่ลบเอาช่องว่างหน้าและหลังข้อความออกแล้ว"; +Blockly.Msg["TODAY"] = "วันนี้"; +Blockly.Msg["UNDO"] = "ย้อนกลับ"; +Blockly.Msg["UNNAMED_KEY"] = "ไม่มีชื่อ"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "รายการ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "สร้าง \"กำหนด %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "คืนค่าของตัวแปรนี้"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "กำหนด %1 จนถึง %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "สร้าง \"get %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "กำหนดให้ตัวแปรนี้เท่ากับการป้อนข้อมูล"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "มีตัวแปรชื่อ '%1' อยู่แล้ว"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ตัวแปรชื่อ '%1' มีอยู่แล้วสำหรับตัวแปรอื่นของชนิด: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "พื้นที่ทำงาน Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "เขียนอะไรสักอย่าง"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ti.js b/blockly/msg/ti.js new file mode 100644 index 00000000000..cffb7e2b4bc --- /dev/null +++ b/blockly/msg/ti.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ርኢቶ ሃብ"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ዋጋ ቀይር"; +Blockly.Msg["CLEAN_UP"] = "ሳንዱቅ ፅረግ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ሳንዱቃት ኣንእስ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ሳንዱቅ ኣንእስ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ሕብሪ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ሕብሪ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "መጠን"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ዕፀፍ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ግምታዊ ሕብሪ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ብግምት ሕብሪ ምረፅ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ሰማያዊ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ሓምለዋይ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ቀይሕ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "በዚ ቀልም"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "በቶም ዝተገለፁ መጠናት ቀይሕ፣ ሓምለዋይን ሰማያውን ሕብሪ ፍጠር። ኩሎም ዋጋታት ኣብ መንጎ 0ን 100ን ክኾኑ ኣለዎም።"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ስራሕ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "ሳንዱቅ ኣወግድ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "ኣትርፍ"; +Blockly.Msg["DIALOG_OK"] = "ሕራይ"; +Blockly.Msg["DISABLE_BLOCK"] = "ሳንዱቅ ኣልምስ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ደጋግም"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ርኢቶ ድገም"; +Blockly.Msg["ENABLE_BLOCK"] = "ሳንዱቅ ኣክእል"; +Blockly.Msg["EXPAND_ALL"] = "ሳንዱቃት ዘርግሕ"; +Blockly.Msg["EXPAND_BLOCK"] = "ሳንዱቅ ዘርግሕ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ናይ ደገ እታወታት"; +Blockly.Msg["HELP"] = "ሓገዝ"; +Blockly.Msg["INLINE_INPUTS"] = "መስመራዊ እታወታት"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ሃውራዊ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ሕብሪ ተተካኢ ፍጠር"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ቁፅሪ ተተካኢ ፍጠር"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "ስትሪንግ ተተካኢ ፍጠር"; +Blockly.Msg["NEW_VARIABLE"] = "ተተካኢ ፍጠር"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ስም ሓዱሽ ተተካኢ"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ሓዱሽ ዓይነት ተተካኢ"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "እንደገና ፈጽም"; +Blockly.Msg["REMOVE_COMMENT"] = "ርኢቶ ኣወግድ"; +Blockly.Msg["RENAME_VARIABLE"] = "ስም ተተካኢ ቀይር"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ሎሚ"; +Blockly.Msg["UNDO"] = "ምለስ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ዓይነት"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/tl.js b/blockly/msg/tl.js new file mode 100644 index 00000000000..a27a6becd29 --- /dev/null +++ b/blockly/msg/tl.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dagdag komento"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "pagbago ng value:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "bloke"; +Blockly.Msg["COLLAPSE_BLOCK"] = "bloke"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "kulay 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "kulay 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporsyon"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "halo"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Paghalo ng dalawang kulay kasama ng ibinigay na proporsyon (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "pagpili ng kulay sa paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "iba ibang kulay"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "pagpili ng iba't ibang kulay."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "asul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "berde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "pula"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "kulayan ng"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "gumawa ng kulay ng may espisipikong dami ng kulay pula, berde, at asul. lahat ng halaga ay dapat sa pagitan ng 0 at 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "putulin ang paulit ulit"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "Magpatuloy sa susunod na pag-ulit ng loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Hatiin ang nilalaman ng loop."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Laktawan ang natitirang bahagi ng loop, at magpatuloy sa susunod na pag-ulit."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Babala: Ang block ito ay maaari lamang magamit sa loob ng loop."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "sa bawat bagay %1 sa listahan %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para sa bawat item sa isang list, i-set ang variable ng '%1' sa mga item, at pagkatapos ay gumawa ng ilang mga statements."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "bilangin %1 mula %2 hanggang %3 ng %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Magkaroon ng mga variable na \"%1\" na tanggalin ng mga halaga mula sa simulang numero hanggang sa dulong numero, at bilangin sa pamamagitan ng tinukoy na agwat, at gawin ang mga tinukoy na mga blocks."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Mag dagdag ng condition sa if block."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Mag Add ng final, kunin lahat ng condition sa if block."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Mag Add, remove o kaya mag reorder ng sections para maayos ang if block."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "kung"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "kung ang value ay true, gagawin ang do statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Kung ang value ay true, gagawin ang unang block ng do statements. Kung hindi, gagawin ang pangalawang block ng statement."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Kung ang unang value ay true, gagawin ang first block ng statement. Kung hindi, kung ang second value ay true, gagawin ang second block ng statement."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Kung ang first value ay true, gagawin ang first block ng statement. Kung hindi true ang second value, gagawin ang second block ng statement. Kung wala sa mga values ay true, gagawin ang last block ng statements."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "gawin"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulitin %1 beses"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "gumawa ng ilang pangungusap ng ilang ulit."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulitin hanggang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ulitin habang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Habang ang value ay false, gagawin ang ibang statements."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Habang ang value ay true, gagawin ang ibang statements."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "burahin ang bloke"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "burahin %1 ng bloke"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "Ipangwalang bisa ang Block"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kaparehas"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Bigyan ng bisa ang Block"; +Blockly.Msg["EXPAND_ALL"] = "Palawakin ang Blocks"; +Blockly.Msg["EXPAND_BLOCK"] = "Palawakin ang Block"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Panlabas na Inputs"; +Blockly.Msg["HELP"] = "Tulong"; +Blockly.Msg["INLINE_INPUTS"] = "Inline na Inputs"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Gumawa ng walang laman na list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ibabalik ang list, na may haba na 0, nag lalaman ng walang data records"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Magdagdag, mag tanggal or mag ayos ng sections para muling maayos ang listahan ng block."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "gumawa ng list kasama"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Mag dagdag ng item sa list."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Gumawa ng list na may kahit anong number ng items."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "Una"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# mula katapusan"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "kunin"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "kunin at tanggalin"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "huli"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "nang hindi pinipili"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "tanggalin"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Ibalik ang unang item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ibalik ang item sa itinakdang posisyon sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Ibalik ang huling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Nag babalik ng hindi pinipiling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Nag tatanggal at nag babalik ng mga unang item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Nag tatanggal at nag babalik ng mga items sa tinukoy na posisyon sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Nag tatanggal at nag babalik ng huling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Nag tatanggal at nag babalik ng mga hindi pinipiling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Nag tatanggal ng unang item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Nag tatanggal ng item sa tinukoy na posisyon sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Nag tatanggal ng huling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Nag tatanggal ng item mula sa walang pinipiling list."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "mula # hanggang huli"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "mula #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "hanggang huli"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "pag kuha ng sub-list mula sa una"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "pag kuha ng sub-list mula sa # mula huli"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "pag kuha ng sub-list mula #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Gumagawa ng kopya ng tinukoy na bahagi ng list."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ay ang huling item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ay ang unang item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Hanapin ang unang pangyayari ng item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "hanapin ang huling pangyayari ng item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Pagbalik ng index ng una/huli pangyayari ng item sa list. Pagbalik ng %1 kung ang item ay hindi makita."; +Blockly.Msg["LISTS_INLIST"] = "sa list"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ay walang laman"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Nagbabalik ng true kung ang list ay walang laman."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "haba ng %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Pag balik ng haba ng list."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "pag gawa ng list kasama ng item %1 inuulit %2 beses"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Pag gawa ng list na binubuo ng binigay na value at inulit na tinuloy na bilang ng beses."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "gaya ng"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "isingit sa"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Nag singit ng item sa simula ng list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Nag singit ng item sa tinukoy na posistion sa list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Idagdag ang item sa huli ng isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Isingit ang item ng walang pinipili sa isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Pag set ng unang item sa isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Pag set ng item sa tinukoy na position sa isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Pag set sa huling item sa isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Pag set ng walang pinipiling item sa isang list."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "mali"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Nag babalik ng true or false."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tama"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Nag babalik ng true kung ang pinasok ay parehong magkatumbas."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Nagbabalik ng true kung ang unang pinasok ay mas malaki kaysa pangalawang pinasok."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Nag babalik ng true kung ang unang pinasok ay mas malaki or katumbas ng pangalawang pinasok."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Nag babalik ng true kung ang unang pinasok ay maliit kaysa sa pangalawang pinasok."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Nag babalik ng true kung ang unang pinasok ay maliit sa o katumbas sa pangalawang pinasok."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "blangko"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "at"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "kung mali"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "kung tama"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "baguhin %1 by %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "ay negatibo"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "ay positibo"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/tlh.js b/blockly/msg/tlh.js new file mode 100644 index 00000000000..c7bb805d6ef --- /dev/null +++ b/blockly/msg/tlh.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "QInHom chel"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "choH:"; +Blockly.Msg["CLEAN_UP"] = "ngoghmeyvaD tlhegh rurmoH"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ngoghmey DejmoH"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ngogh DejmoH"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "rItlh wa'"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "rItlh cha'"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "'ar"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "DuD"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rItlh vISaHbe'"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "chal rItlh"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "tI rItlh"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "'Iw rItlh"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "rItlh wIv"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "gho Haw'"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "gho taHqa'"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "yIqIm! ghoDaq neH ngoghvam lo'laH vay'."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ngIq Doch %1 ngaSbogh tetlh %2 nuDDI'"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "togh %1 mung %2 ghoch %3 Do %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "pagh"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "pagh teHchugh"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "teHchugh"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ruch"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1-logh qaSmoH"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "teHpa' qaSmoH"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "teHtaHvIS qaSmoH"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hoch %1 ngoghmey Qaw'?"; +Blockly.Msg["DELETE_BLOCK"] = "ngogh Qaw'"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ngoghmey Qaw'"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ngogh Qotlh"; +Blockly.Msg["DUPLICATE_BLOCK"] = "velqa' chenmoH"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ngogh QotlhHa'"; +Blockly.Msg["EXPAND_ALL"] = "ngoghmey DejHa'moH"; +Blockly.Msg["EXPAND_BLOCK"] = "ngogh DejHa'moH"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Hur rar"; +Blockly.Msg["HELP"] = "QaH"; +Blockly.Msg["INLINE_INPUTS"] = "qoD rar"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tetlh chIm"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "tetlh"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "tetlh ghom"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "wa'DIch"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# Qav"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "Suq"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "Suq vaj pej"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "Qav"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "Sahbe'"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "pej"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "mojaQ # Qav"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "mojaQ #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "mojaQ Qav"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "tetlhHom moHaq wa'DIch"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "tetlhHom moHaq # Qav"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "tetlhHom moHaq #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "Suq"; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Doch sam wa'DIch"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "Doch sam Qav"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "tetlhDaq"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 chIm'a'"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "chuq %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "tetlh ghom %2 Dochmey %1 pus"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "Dos"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "lIH"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "choH"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "tetlh ghermeH ghItlh wav"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ghItlh chenmoHmeH tetlh gherHa'"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "rarwI'Hom lo'"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "teHbe'"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "teH"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "yoymoH %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "paghna'"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "'ej"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "qoj"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "chov"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "teHbe'chugh"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "teHchugh"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "choH %1 chel %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "jon %1 bIng %2 Dung %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "wav'a'"; +Blockly.Msg["MATH_IS_EVEN"] = "lang'a' mI'"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "bIng pagh"; +Blockly.Msg["MATH_IS_ODD"] = "ror'a' mI'"; +Blockly.Msg["MATH_IS_POSITIVE"] = "Dung pagh"; +Blockly.Msg["MATH_IS_PRIME"] = "potlh'a' mI'"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "ngoHlaHbe''a'"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "ratlwI' SIm %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "beQwI' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "tInwI''a' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "beQwI'botlh SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "machwI''a' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "beQwI' motlh SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "SaHbe' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "motlhbe'wI' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "chelwI' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "mI'HomSaHbe'"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ngoH mI'SaHbe' bIng %1 Dung %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ngoH"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "bIng ngoH"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Dung ngoH"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "Dung pagh choH"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "cha'DIch wav"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "lIw chu'..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "lIw chu' pong:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "mu'tlhegh chaw'"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "qel:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "qel:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "chel '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "mIw yIDel..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "mIw"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ruch"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "chegh"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ghuHmoHna': qelwI' cha'logh chen."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "mIwna' wew"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ghoHmoHna': ngoghvam ngaSbe' mIwDaq."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "pong:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "qelwI'mey"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "vangqa'"; +Blockly.Msg["REMOVE_COMMENT"] = "QInHom chelHa'"; +Blockly.Msg["RENAME_VARIABLE"] = "lIw pong choH..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Hoch \"%1\" lIwmey pongmey choH:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "chel %1 ghItlh %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "machchoH"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "DojchoH"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "tInchoH"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "mu'Hom wa'DIch"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "mu'Hom # Qav"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "mu'Hom #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "mu'Hom Qav"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "mu'Hom SaHbe'"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "Suq"; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ghom"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "mojaq mu'Hom # Qav"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "mojaq mu'Hom #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "mojaq mu'Hom Qav"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ghItlhDaq"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ghItlhHom moHaq mu'Hom wa'DIch"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "ghItlhHom moHaq mu'Hom # Qav"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "ghItlhHom moHaq mu'Hom #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "Suq"; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ghItlh wa'DIch Sam"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ghItlh Qav Sam"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ghItlhDaq %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 chIm'a'"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ghItlh ghom"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "chuq %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "maq %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "mI' tlhob 'ej maq"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ghItln tlhob 'ej maq"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "poSnIHlogh pei"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "poSlogh pei"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "nIHlogh pei"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "DaHjaj"; +Blockly.Msg["UNDO"] = "vangHa'"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Doch"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "chel 'choH %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "choH %1 %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "chel 'Suq %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/tr.js b/blockly/msg/tr.js new file mode 100644 index 00000000000..9529cb37040 --- /dev/null +++ b/blockly/msg/tr.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Yorum Ekle"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' değişkeni, '%2' fonksiyonunun tanımının bir parçası olduğu için silinemez"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Değeri değiştir:"; +Blockly.Msg["CLEAN_UP"] = "Blokları Temizle"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Daraltılmış bloklar uyarı içerir."; +Blockly.Msg["COLLAPSE_ALL"] = "Blokları Daralt"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bloğu Daralt"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1. renk"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2. renk"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "oran"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "karıştır"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Verilen bir orana (0.0 - 1.0) bağlı olarak iki rengi karıştırır."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://tr.wikipedia.org/wiki/Renk"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Paletten bir renk seç."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rastgele renk"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Rastgele bir renk seç."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "mavi"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "yeşil"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "kırmızı"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "renk değerleri"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kırmızı, yeşil ve mavinin belirli miktarıyla bir renk oluştur. Tüm değerler 0 ile 100 arasında olmalıdır."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "döngüden çık"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "döngünün sonraki adımından devam et"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "İçeren döngüden çık."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Bu döngünün geri kalanını atlayın ve sonraki adım ile devam edin."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Uyarı: Bu blok yalnızca bir döngü içinde kullanılabilir."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "her öğe için %1 listede %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Bir listedeki her öğe için '%1' değişkenini maddeye atayın ve bundan sonra bazı açıklamalar yapın."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "ile sayılır %1 %2 den %3 ye, her adımda %4 değişim"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Başlangıç sayısından bitiş sayısına kadar belirtilen aralık ve belirtilen engeller ile devam eden değerler alan '%1' değişkeni oluştur."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "If bloğuna bir koşul ekleyin."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "If bloğuna kalan durumları \"yakalayan\" bir son ekle."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "If bloğuna ekle, kaldır veya yeniden düzenleme yap."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "değilse"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "değilse eğer"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "eğer"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Eğer değişken true, yani gerçekleşmiş ise ardından gelen işlemi yerine getir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Eğer değişken true, yani gerçekleşiyor ise ilk bloktaki işlemleri yerine getir. Aksi halde ikinci bloktaki işlemleri yerine getir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Eğer ilk değişken true, yani koşul gerçekleşmiş ise ilk blok içerisindeki işlemi gerçekleştir. Eğer ikinci değişken true ise, ikinci bloktaki işlemi gerçekleştir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Eğer ilk değer true, yani olumlu ise, ilk bloktaki işlemi gerçekleştir. İlk değer true değil ama ikinci değer true ise, ikinci bloktaki işlemi gerçekleştir. Eğer değerlerin hiçbiri true değil ise son bloktaki işlemi gerçekleştir."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://tr.wikipedia.org/wiki/For_döngüsü"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "yap"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 kez tekrarla"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Bazı işlemleri birkaç kez yap."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "kadar tekrarla"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "tekrar ederken"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Bir değer yanlış olduğunda bazı beyanlarda bulun."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Bir değer doğru olduğunda bazı beyanlarda bulun."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Tüm %1 blokları silinsin mi?"; +Blockly.Msg["DELETE_BLOCK"] = "Bloğu Sil"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' değişkenini silmek istiyor musunuz?"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' değişkeninin %1 kullanımını silmek istiyor musunuz?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 Bloğunu Sil"; +Blockly.Msg["DIALOG_CANCEL"] = "İptal"; +Blockly.Msg["DIALOG_OK"] = "Tamam"; +Blockly.Msg["DISABLE_BLOCK"] = "Bloğu Devre Dışı Bırak"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Yinelenen"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Yinelenen Yorum"; +Blockly.Msg["ENABLE_BLOCK"] = "Bloğu Etkinleştir"; +Blockly.Msg["EXPAND_ALL"] = "Blokları Genişlet"; +Blockly.Msg["EXPAND_BLOCK"] = "Bloğu Genişlet"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Harici Girişler"; +Blockly.Msg["HELP"] = "Yardım"; +Blockly.Msg["INLINE_INPUTS"] = "Satır içi Girişler"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "boş liste oluştur"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Veri kaydı içermeyen 0 uzunluğunda bir liste döndürür"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Bu liste bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ile liste oluştur"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Listeye bir öğe ekleyin."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "İstediğiniz sayıda öğe içeren bir liste oluşturun."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ilk"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# sonundan"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "# Kare"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "al"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "al ve kaldır"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "son"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "rastgele"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "kaldır"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Listedeki ilk öğeyi döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Listede belirtilen konumda bulunan öğeyi döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Listedeki son öğeyi döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Listedeki rastgele bir öğeyi döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Listedeki ilk öğeyi kaldırır ve döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Öğeyi bir listede belirtilen konumda kaldırır ve döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Listedeki son öğeyi kaldırır ve döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Listedeki rastgele bir öğeyi kaldırır ve döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Listedeki ilk öğeyi kaldırır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Listede belirtilen konumda bulunan öğeyi kaldırır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Listedeki son öğeyi kaldırır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Listedeki rastgele bir öğeyi kaldırır."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "sonuna kadar #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "sona"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ilk önce alt listeyi al"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# listesinden alt listeyi al"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# listesinden alt liste al"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Listenin belirtilen bölümünün bir kopyasını oluşturur."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 son öğedir."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ilk öğedir."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "öğenin ilk oluşumunu bul"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "öğenin son tekrarlamasını bul"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Listedeki öğenin ilk/son oluşumunun dizinini döndürür. Öğe bulunmazsa %1 değerini döndürür."; +Blockly.Msg["LISTS_INLIST"] = "listede"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 boş"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Liste boşsa true değerini döndürür."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 uzunluğu"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Bir listenin uzunluğunu döndürür."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 tekrarlanan %2 öğeyle liste oluştur"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Belirtilen sayıda tekrarlanan belirli bir değerden oluşan bir liste oluşturur."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 ters çevirin"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Listenin bir kopyasını ters çevirin."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "olarak"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "yerleştir"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ayarla"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Öğeyi listenin başına ekler."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Öğeyi bir listede belirtilen konuma ekler."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Öğeyi listenin sonuna ekleyin."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Öğeyi bir listeye rastgele ekler."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Listedeki ilk öğeyi ayarlar."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Öğeyi bir listede belirtilen konuma ayarlar."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Listedeki son öğeyi ayarlar."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Listede rastgele bir öğe ayarlar."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "artan"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "azalan"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sıra %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Listenin bir kopyasını sıralayın."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetik, görmezden gelin"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "sayısal"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetik"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "metinden liste yap"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "listeden metin yap"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Metin listesini bir sınırlayıcı ile ayrılmış tek bir metinde birleştirin."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Metni, her bir sınırlayıcıyı kırarak bir metin listesine bölün."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "sınırlayıcı ile"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "True veya false değerini döndürür."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://tr.wikipedia.org/wiki/Eşitsizlikler"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Her iki giriş de birbirine eşitse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "İlk giriş ikinci girişten büyükse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "İlk giriş ikinci girişten büyük veya ona eşitse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "İlk giriş ikinci girişten küçükse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "İlk giriş ikinci girişten küçük veya ona eşitse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Her iki giriş de birbirine eşit değilse true değerini döndürün."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 değil"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Giriş yanlışsa true değerini döndürür. Giriş doğruysa false değerini döndürür."; +Blockly.Msg["LOGIC_NULL"] = "boş"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://tr.wikipedia.org/wiki/Sıfırlanabilir_tip"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Boş değerini döndürür."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ve"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "veya"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Her iki giriş de doğruysa true döndür."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Girişlerden en az biri doğru olduğunda true değerini döndürün."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "deneme"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://tr.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'test' durumunu kontrol edin. Koşul true olursa, 'if true' değerini döndürür; aksi takdirde 'if false' değerini döndürür."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://tr.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "İki sayının toplamını döndürün."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "İki sayının bölümünü döndürün."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "İki sayının farkını döndürün."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "İki sayının çarpımını döndürün."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Yükseltilen ilk sayıyı ikinci sayının gücüne döndürün."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://tr.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2, X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "-180'den 180'e derece cinsinden nokta (X, Y) arktanjantını döndürün."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://tr.wikipedia.org/wiki/Programlama_deyimi"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 %2 göre değiştir"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "'%1' değişkenine bir sayı ekle."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://tr.wikipedia.org/wiki/Matematiksel_sabit"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ortak sabitlerden birini döndür: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (sonsuzluk)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 en düşük %2 en yüksek %3 ile sınırla"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Bir sayıyı belirtilen sınırlar arasında (dahil) ile sınırlandırın."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "bölünebilir"; +Blockly.Msg["MATH_IS_EVEN"] = "çift"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatif"; +Blockly.Msg["MATH_IS_ODD"] = "tek"; +Blockly.Msg["MATH_IS_POSITIVE"] = "pozitif"; +Blockly.Msg["MATH_IS_PRIME"] = "asal"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Bir sayının çift, tek, asal, bütün, pozitif, negatif veya belirli bir sayıya bölünebilir olup olmadığını kontrol edin. True veya false değerini döndürür."; +Blockly.Msg["MATH_IS_WHOLE"] = "bütün"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://tr.wikipedia.org/wiki/Modulo_işlemi"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 geri kalan kısım"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Kalanı iki sayıyı bölmekten döndürün."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://tr.wikipedia.org/wiki/Sayı"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Sayı."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "liste ortalaması"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "listenin medyanı"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "listenin en küçüğü"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "liste modları"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "listenin rastgele öğesi"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "listenin standart sapması"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "listenin toplamı"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Listedeki sayısal değerlerin ortalamasını (aritmetik ortalama) döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Listedeki en büyük sayıyı döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Listeden ortanca numarayı döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Listedeki en küçük sayıyı döndür."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Listedeki en yaygın öğenin bir listesini döndürür."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Listeden rastgele bir öğe döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Listenin standart sapmasını döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Listedeki tüm sayıların toplamını döndürün."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "üst alma"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "rastgele kesir"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (dahil) ve 1.0 (hariç) arasında rastgele bir kesir döndürün."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1 ile %2 rastgele tam sayı üretin"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Belirtilen iki sınır arasında rastgele bir tamsayı döndürün."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://tr.wikipedia.org/wiki/Yuvarlatma"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "yuvarla"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "aşağı yuvarla"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "yukarı yuvarla"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Bir sayıyı yukarı veya aşağı yuvarlayın."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://tr.wikipedia.org/wiki/Karekök"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "kesin"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kare kök"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Bir sayının mutlak değerini döndürür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "E'yi bir sayının gücüne döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Bir sayının doğal logaritmasını döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Bir sayının 10 logaritmasını geri döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Bir sayının reddini döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10'u sayının gücüne döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Bir sayının karekökünü döndürür."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "tire"; +Blockly.Msg["MATH_TRIG_ACOS"] = "akosünüs"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asinüs"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atanjant"; +Blockly.Msg["MATH_TRIG_COS"] = "kosünüs"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://tr.wikipedia.org/wiki/Trigonometrik_fonksiyonlar"; +Blockly.Msg["MATH_TRIG_SIN"] = "Sinüs"; +Blockly.Msg["MATH_TRIG_TAN"] = "tanjant"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Bir sayının arkosinini döndürün."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Bir sayının ark sinüsünü döndürün."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Bir sayının arktanjantını döndürün."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Bir derecenin kosinüsünü döndürün (radyan değil)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Sinüsü bir derece döndürün (radyan değil)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Bir derecenin tanjantını döndürün (radyan değil)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Renk değişkeni oluştur..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Sayı değişkeni oluştur..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Dizi değişkeni oluştur..."; +Blockly.Msg["NEW_VARIABLE"] = "Değişken oluştur..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Yeni değişken ismi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Yeni değişken tipi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ifadelere izin ver"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ile:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Alt_program"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kullanıcı tanımlı '%1' işlevini çalıştırın."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Alt_program"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kullanıcı tanımlı '%1' işlevini çalıştırın ve çıkışını kullanın."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ile:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' oluştur"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Bu işlevi açıklayın..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Altyordam"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "bir şey yap"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "-"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Çıkışı olmayan bir işlev oluşturur."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Altyordam"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "dönüş"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Çıkışa sahip bir işlev oluşturur."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Uyarı: Bu işlev yinelenen parametrelere sahiptir."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Vurgulama işlevi tanımı"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Bir değer true ise, ikinci bir değer döndürün."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Uyarı: Bu blok yalnızca bir işlev tanımı içinde kullanılabilir."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "giriş adı:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "İşleve bir giriş ekleyin."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "girişler"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bu işleve giriş ekleyin, kaldırın veya yeniden sıralayın."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Yinele"; +Blockly.Msg["REMOVE_COMMENT"] = "Yorumu Sil"; +Blockly.Msg["RENAME_VARIABLE"] = "Değişkeni yeniden adlandır..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tüm '%1' değişkenini yeniden adlandır:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 için %2 metnini ekle."; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' değişkenine bir metin ekleyin."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "küçük harfe"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Başlık Vakasına"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "ÜST DURUMA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Metnin bir kopyasını farklı bir durumda döndürün."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ilk harfini al"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "# sona harfleri al"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# harfini al"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "son harfi al"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "rastgele harf al"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "%1 içinde %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Belirtilen konumdaki harfi döndürür."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 içinde %2 say."; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Bazı metnin başka bir metnin içinde kaç kez oluştuğunu sayın."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Metne bir öğe ekleyin."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "katıl"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Bu metin bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "en başından # harfi"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# harfe"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "son harfe"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "metinde"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ilk harfinden alt dize al"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "# harfinden alt dize al"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "# harfinden alt dize al"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Metnin belirli bir bölümünü döndürür."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "metnin ilk oluşumunu bul"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "metnin son tekrarlamasını bul"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "%1 metni içinde %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "İkinci metindeki ilk metnin ilk/son oluşumunun dizinini döndürür. Metin bulunmazsa %1 değerini döndürür."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 boş"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Sağlanan metin boşsa true değerini döndürür."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ile metin oluştur"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "İstediğiniz sayıda öğeyi birleştirerek bir metin parçası oluşturun."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 uzunluğu"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Sağlanan metindeki harflerin (boşluklar dahil) sayısını döndürür."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 yaz"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Belirtilen metni, sayıyı veya başka bir değeri yazdırın."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Bir numara için kullanıcı sor."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Bazı metinler için kullanıcı sor."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "mesaj içeren numara istemi"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "mesaj içeren metin istemi"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 yerine %3 içindeki %2 ile değiştir"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Bazı metnin tüm tekrarlarını başka bir metnin içinde değiştirin."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 ters çevirin"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Metindeki karakterlerin sırasını tersine çevirir."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://tr.wikipedia.org/wiki/Dize_(bilgisayar_bilimi)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Bir harf, kelime veya metin satırı."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "her iki tarafından da kırpın"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "sol tarafındaki boşlukları kırpın"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "sağ tarafındaki boşlukları kırp"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Bir veya her iki uçtan boşluklar kaldırılmış olarak metnin bir kopyasını döndürün."; +Blockly.Msg["TODAY"] = "Bugün"; +Blockly.Msg["UNDO"] = "Geri al"; +Blockly.Msg["UNNAMED_KEY"] = "isimsiz"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "öge"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'set %1' oluştur"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Bu değişkenin değerini döndürür."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "%1 %2 ayarla"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'get %1' oluştur"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Bu değişkeni girişe eşit olacak şekilde ayarlar."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' isimli değişken adı zaten var."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' isimli değişken '%2' tipli başka bir değişkende tanımlı."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Çalışma Alanı"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Bir şeyler söyle..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ug-arab.js b/blockly/msg/ug-arab.js new file mode 100644 index 00000000000..1d450eb4819 --- /dev/null +++ b/blockly/msg/ug-arab.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ئىزاھات قوشۇش"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "قىممەت ئۆزگەرتىش:"; +Blockly.Msg["CLEAN_UP"] = "بۆلەكنى رەتلەش"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "قاتلىنىش بۆلىكى"; +Blockly.Msg["COLLAPSE_BLOCK"] = "قاتلىنىش بۆلىكى"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رەڭ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رەڭ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نىسبەت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ئارىلاش"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/رەڭگى"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = " تاختىدىن رەڭنى تاللاڭ"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "خالىغان رەڭ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ئىختىيارىي بىر رەڭنى تاللاڭ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "كۆك"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "يېشىل"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "قىزىل"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رەڭگى"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ئۈزۈلۈپ ئايلىنىش"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = " كىيىنكى قېتىم داۋاملىق ئايلىنىشن"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ئۇنىڭ دەۋرىي ئۈزۈلۈش ئۆز ئىچىگە ئالىدۇ ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "بۇ ئايلىنىشنىڭ قالغان قىسمى ئاتلاپ ئۆتۈپ كېتىدۇ ، ھەمدە داۋاملىق كېلەر قېتىملىق ئىتېراتسىيە ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ئاگاھلاندۇرۇش : بۇ پەقەت بىر ئايلىنىش دەۋرى ئىچىدە ئىشلىتىشكە بولىدۇ ."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "بۇ بىلمەيمىز جۈملە بۆلىكى قوشۇلۇپ بىر if شەرتى ."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ئەڭ ئاخىرقى قوشۇش ، ھەممە ئەھۋالنى ئۆز ئىچىگە ئالىدۇ بايرىمىدا بىلمەيمىز ifپارچىلىرى ."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "كۆپۈيۈپ كىتىدۇ، ئۆچۈرۈش ياكى قايتا تىزىلغان بايرام « if ( سۆزىنىڭ پارچە قايتىدىن تەقسىملەش ."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ئۇنداق بولمىسا"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ئۇنداق بولمىسا ئەگەر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ئەگەر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ئەگەر قىممىتى ھەقىقەتەن ، بەزى جۈملە ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ئەگەر قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئىككىنچى جۈملىسى ئىجرا قىلىندى ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، ئۇنداقتا ئىككىنچى پارچىنىڭ جۈملە ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، بولسا ئىجرا قىلىش جۈملىسى ئىشككى پارچە . ئەگەر قىممىتى يوق ، ئۇنداقتا ئەڭ ئاخىرقى بىر جۈملىسى ."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/Forئايلىنىش"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ئىجرا"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "تەكرار %1قېتىم"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تەكرارلىقى"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تەكرار بولۇش"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ھەممىنى ئۆچۈرۈش %1 پارچىمۇ؟"; +Blockly.Msg["DELETE_BLOCK"] = "بۆلەك ئۆچۈرۈش"; +Blockly.Msg["DELETE_VARIABLE"] = "“%1” ئۆزگەرگۈچى مىقدارنى ئۆچۈرۈش"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "ئۆچۈرۈش “%2” ئۆزگەرگۈچى مىقدار%1 ئىشلىتىلىش ئورنى بارمۇ؟"; +Blockly.Msg["DELETE_X_BLOCKS"] = "بۆلەك %1 نى ئۆچۈرۈش"; +Blockly.Msg["DIALOG_CANCEL"] = "ۋاز كەچ"; +Blockly.Msg["DIALOG_OK"] = "ماقۇل"; +Blockly.Msg["DISABLE_BLOCK"] = "چەكلەنگەن بۆلەك"; +Blockly.Msg["DUPLICATE_BLOCK"] = "كۆچۈرۈش"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "قوزغىتىلغان بۆلەك"; +Blockly.Msg["EXPAND_ALL"] = "ئېچىلىش بۆلىكى"; +Blockly.Msg["EXPAND_BLOCK"] = "ئېچىلىش بۆلىكى"; +Blockly.Msg["EXTERNAL_INPUTS"] = "سىرتقى كىرگۈزۈش"; +Blockly.Msg["HELP"] = "ياردەم"; +Blockly.Msg["INLINE_INPUTS"] = "تاق قۇرلۇق كىرگۈزۈش"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "تۇنجى"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "قولغا كەلتۈرۈش"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ئاخىرقى"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "خالىغانچە"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "چىقىرىۋىتىش"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "قىستۇرۇڭ"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "تەڭشەك"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "يۇقىرىغا"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "تۆۋەنگە"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ھەرب بويىچە تىزىل، چوڭ كىچىك يېزىلىش ھېساپ قىلىنمايدۇ"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "سان بويىچە تىزىل"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = " ھەرپ بويىچە تىزىل"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "يالغان"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "راست ياكى يالغان قايتىش"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ھەقىقىي"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/ تەڭ ئەمەس"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولسا ، راستىنلا كەينىگە قايتسا."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىشككىنچى چوڭ بولسا راستىنلا كەينىگە قايتسا ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىككىنچى كىرگۈزۈش نەتىجىسى تىن تۆۋەن ياكى شۇنىڭغا تەڭ بولسا راستىنلا كەينىگە قايتسا ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولمايدۇ ، بەك كەلدى ."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ئەمەس%1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "قۇرۇق"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = " نۆلگە قايتىش"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ۋە"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ياكى"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "سىناق"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ئەگەر يالغان بولسا"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ئەگەر راست بولسا"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/ئارىفمېتىكىلىق"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiقوشۇش"; +Blockly.Msg["MATH_CHANGE_TITLE"] = " ئۆزگەرتىش %1 دىن %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/ماتېماتىكا تۇراقلىق سانى"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "پۈتۈن بۆلۈنۈش"; +Blockly.Msg["MATH_IS_EVEN"] = "جۈپ سان"; +Blockly.Msg["MATH_IS_NEGATIVE"] = " مەنپى"; +Blockly.Msg["MATH_IS_ODD"] = " تاق سان"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مۇسبەت"; +Blockly.Msg["MATH_IS_PRIME"] = "تۈپ سان"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "پۈتۈن سان"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/مودېل ھېسابى"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/سان"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "بىر سان."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "جەدۋەل ئىچىدىكى ئوتتۇرىچە سان"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = " جەدۋەلدىكى ئەڭ چوڭ قىممەت"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "جەدۋەلدىكى ئوتتۇرا سان"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "جەدۋەل ئىچىدىكى ئەڭ كىچىك قىممەت"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = " جەدۋەل ھالىتى"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = " جەدۋەلدىكى ئوتتۇرا سانغا قايتىش"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = " جەدۋەلدىكى ئەڭ كىچىك سانغا قايتىش"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/سانلىق قىممەت تۈزىتىش"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "تۆۋەنگە تارتىڭ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "تۆۋەنگە تارتىڭ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = " تۆۋەنگە تارتىڭ"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/كۋادرات يىلتىز"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مۇتلەق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = " كۋادرات يىلتىز"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/ترىگونومېتىرىيىلىك فۇنكسىيە"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ئۆزگەرگۈچى مىقدار ... قۇرۇش"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "يېڭى ئۆزگەرگۈچى مىقدار نامى:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "قايتىلاش"; +Blockly.Msg["REMOVE_COMMENT"] = "ئىزاھاتنى ئۆچۈرۈش"; +Blockly.Msg["RENAME_VARIABLE"] = "ئۆزگەرگۈچى مىقدارغا قايتا نام قويۇش"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "بارلىق بۆلەك “%1\" ئۆزگەرگۈچى مىقدار قايتا ناملىنىپ :"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = " قوشۇش"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "بۈگۈن"; +Blockly.Msg["UNDO"] = "يېنىۋال"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "تۈر"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ئىسم مەۋجۇت “%1” ئۆزگەرگۈچى"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ئىسىملىك“%1” ئۆزگەرگۈچى مىقدار مەۋجۇت بولۇپ تۇرىدۇ ، لېكىن يەنە بىر ئۆزگەرگۈچى مىقدار تىپى بولۇش سۈپىتى بىلەن “%2” مەۋجۇت ."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/uk.js b/blockly/msg/uk.js new file mode 100644 index 00000000000..c135dc6e6e4 --- /dev/null +++ b/blockly/msg/uk.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Додати коментар"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Неможливо видалити змінну '%1', тому що це частина визначення функції '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Змінити значення:"; +Blockly.Msg["CLEAN_UP"] = "Очистити блоки"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Звернуті блоки містять попередження."; +Blockly.Msg["COLLAPSE_ALL"] = "Згорнути блоки"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Згорнути блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "колір 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "колір 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "співвідношення"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "змішати"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Змішує два кольори разом у вказаному співвідношені (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://uk.wikipedia.org/wiki/Колір"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Вибрати колір з палітри."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "випадковий колір"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Вибрати колір навмання."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "синій"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелений"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "червоний"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "колір з"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Створити колір зі вказаними рівнями червоного, зеленого та синього. Усі значення мають бути від 0 до 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "перервати цикл"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "продовжити з наступної ітерації циклу"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Перервати виконання циклу."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Пропустити залишок цього циклу і перейти до виконання наступної ітерації."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Попередження: цей блок може бути використаний тільки в межах циклу."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для кожного елемента %1 у списку %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для кожного елемента в списку змінна '%1' отримує значення елемента, а потім виконуються певні дії."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "рахувати з %1 від %2 до %3 через %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Наявна змінна \"%1\" набуває значень від початкового до кінцевого, враховуючи заданий інтервал, і виконуються вказані блоки."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Додайте умову до блока 'якщо'."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Додати остаточну, всеосяжну умову до блоку 'якщо'."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Додайте, вилучіть або змініть порядок секцій, щоб переналаштувати цей блок 'якщо'."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "інакше"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "інакше якщо"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "якщо"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Якщо значення істинне, то виконати певні дії."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Якщо значення істинне, то виконується перший блок операторів. В іншому випадку виконується другий блок операторів."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істина, то виконується другий блок операторів."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істинне, то виконується другий блок операторів. Якщо жодне із значень не є істинним, то виконується останній блок операторів."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://uk.wikipedia.org/wiki/Цикл_(програмування)#.D0.A6.D0.B8.D0.BA.D0.BB_.D0.B7_.D0.BB.D1.96.D1.87.D0.B8.D0.BB.D1.8C.D0.BD.D0.B8.D0.BA.D0.BE.D0.BC"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "виконати"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "повторити %1 разів"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Виконати певні дії декілька разів."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повторювати, доки не"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повторювати поки"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Поки значення хибне, виконувати певні дії."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Поки значення істинне, виконувати певні дії."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Вилучити всі блоки %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Видалити блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Вилучити змінну '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Вилучити %1 використання змінної '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Видалити %1 блоків"; +Blockly.Msg["DIALOG_CANCEL"] = "Скасувати"; +Blockly.Msg["DIALOG_OK"] = "Гаразд"; +Blockly.Msg["DISABLE_BLOCK"] = "Вимкнути блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дублювати"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дублювати примітку"; +Blockly.Msg["ENABLE_BLOCK"] = "Увімкнути блок"; +Blockly.Msg["EXPAND_ALL"] = "Розгорнути блоки"; +Blockly.Msg["EXPAND_BLOCK"] = "Розгорнути блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Зовнішні входи"; +Blockly.Msg["HELP"] = "Довідка"; +Blockly.Msg["INLINE_INPUTS"] = "Вбудовані входи"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "створити порожній список"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Повертає список, довжиною 0, що не містить записів даних"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "список"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Додайте, вилучіть або змініть порядок секцій для переналаштування блока списку."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "створити список з"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Додати елемент до списку."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Створює список з будь-якою кількістю елементів."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "перший"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# з кінця"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "отримати"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "отримати і вилучити"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "останній"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "випадковий"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "вилучити"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "-ий."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Повертає перший елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Повертає елемент у заданій позиції у списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Повертає останній елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Повертає випадковий елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Видаляє і повертає перший елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Видаляє і повертає елемент у заданій позиції у списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Видаляє і повертає останній елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Видаляє і повертає випадковий елемент списоку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Вилучає перший елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Вилучає зі списку елемент у вказаній позиції."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Вилучає останній елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Вилучає випадковий елемент списку."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "до # з кінця"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "до #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "до останнього"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "отримати вкладений список з першого"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "отримати вкладений список від # з кінця"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "отримати вкладений список з #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "символу."; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Створює копію вказаної частини списку."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - це останній елемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - це перший елемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "знайти перше входження елемента"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "знайти останнє входження елемента"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Повертає індекс першого/останнього входження елемента у списку. Повертає %1, якщо елемент не знайдено."; +Blockly.Msg["LISTS_INLIST"] = "у списку"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 є порожнім"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Повертає істину, якщо список порожній."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "довжина %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Повертає довжину списку."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "створити список з елемента %1 повтореного %2 разів"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Створює список, що складається з заданого значення повтореного задану кількість разів."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "розвернути %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Змінити порядок копії списку на зворотний."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "як"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вставити в"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "встановити"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Вставляє елемент на початок списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Вставка елемента у вказану позицію списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Додає елемент у кінці списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Випадковим чином вставляє елемент у список."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Задає перший елемент списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Задає елемент списку у вказаній позиції."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Задає останній елемент списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Задає випадковий елемент у списку."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "за зростанням"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "за спаданням"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сортувати %3 %1 %2"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сортувати копію списку."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "за абеткою, ігноруючи регістр"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "як числа"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "за абеткою"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "зробити з тексту список"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "зробити зі списку текст"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Злити список текстів у єдиний текст, відокремивши розділювачами."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Поділити текст на список текстів, розриваючи на кожному розділювачі."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "з розділювачем"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "хибність"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Повертає значення істина або хибність."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "істина"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://uk.wikipedia.org/wiki/Нерівність"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Повертає істину, якщо обидва входи рівні один одному."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Повертає істину, якщо перше вхідне значення більше, ніж друге."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Повертає істину, якщо перше вхідне значення більше або дорівнює другому."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Повертає істину, якщо перше вхідне значення менше, ніж друге."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Повертає істину, якщо перше вхідне значення менше або дорівнює другому."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Повертає істину, якщо обидва входи не дорівнюють один одному."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Повертає істину, якщо вхідне значення хибне. Повертає хибність, якщо вхідне значення істинне."; +Blockly.Msg["LOGIC_NULL"] = "ніщо"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Повертає ніщо."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "та"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "або"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Повертає істину, якщо обидва входи істинні."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Повертає істину, якщо принаймні один з входів істинний."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тест"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "якщо хибність"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "якщо істина"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Перевіряє умову в 'тест'. Якщо умова істинна, то повертає значення 'якщо істина'; в іншому випадку повертає значення 'якщо хибність'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://uk.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Повертає суму двох чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Повертає частку двох чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Повертає різницю двох чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Повертає добуток двох чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Повертає перше число, піднесене до степеня, вираженого другим числом."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 по X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Повертає арктангенс точки (X, Y) у градусах від -180 до 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "змінити %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Додати число до змінної '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://uk.wikipedia.org/wiki/Математична_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Повертає одну з поширених констант: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) або ∞ (нескінченність)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "обмежити %1 від %2 до %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Обмежує число вказаними межами (включно)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ділиться на"; +Blockly.Msg["MATH_IS_EVEN"] = "парне"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "від'ємне"; +Blockly.Msg["MATH_IS_ODD"] = "непарне"; +Blockly.Msg["MATH_IS_POSITIVE"] = "додатне"; +Blockly.Msg["MATH_IS_PRIME"] = "просте"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Перевіряє, чи число парне, непарне, просте, ціле, додатне, від'ємне або чи воно ділиться на певне число без остачі. Повертає істину або хибність."; +Blockly.Msg["MATH_IS_WHOLE"] = "ціле"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://uk.wikipedia.org/wiki/Ділення_з_остачею"; +Blockly.Msg["MATH_MODULO_TITLE"] = "остача від %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Повертає остачу від ділення двох чисел."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://uk.wikipedia.org/wiki/Число"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Число."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = "http://www.mapleprimes.com/questions/100441-Applying-Function-To-List-Of-Numbers"; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "середнє списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "максимум списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медіана списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "мінімум списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "моди списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "випадковий елемент списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартне відхилення списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сума списку"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Повертає середнє (арифметичне) числових значень у списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Повертає найбільше число у списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Повертає медіану списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Повертає найменше число у списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Повертає перелік найпоширеніших елементів у списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Повертає випадковий елемент зі списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Повертає стандартне відхилення списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Повертає суму всіх чисел у списку."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "випадковий дріб"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Повертає випадковий дріб від 0,0 (включно) та 1.0 (не включно)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "випадкове ціле число від %1 до %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Повертає випадкове ціле число між двома заданими межами включно."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://uk.wikipedia.org/wiki/Округлення"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "округлити"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "округлити до меншого"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "округлити до більшого"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Округлення числа до більшого або до меншого."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://uk.wikipedia.org/wiki/Квадратний_корінь"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратний корінь"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Повертає модуль числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Повертає e у степені."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Повертає натуральний логарифм числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Повертає десятковий логарифм числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Повертає протилежне число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Повертає 10 у степені."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Повертає квадратний корінь з числа."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://uk.wikipedia.org/wiki/Тригонометричні_функції"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Повертає арккосинус числа."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Повертає арксинус числа."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Повертає арктангенс числа."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Повертає косинус кута в градусах (не в радіанах)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Повертає синус кута в градусах (не в радіанах)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Повертає тангенс кута в градусах (не в радіанах)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Створити колірну змінну..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Створити числову змінну..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Створити рядкову змінну..."; +Blockly.Msg["NEW_VARIABLE"] = "Створити змінну..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Нова назва змінної:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Тип нової змінної:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "-ий."; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дозволити дії"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Запустити користувацьку функцію \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Запустити користувацьку функцію \"%1\" і використати її вивід."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Створити \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишіть цю функцію..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "блок тексту"; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "щось зробити"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "до"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Створює функцію без виводу."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "повернути"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Створює функцію з виводом."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Увага: ця функція має дубльовані параметри."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Підсвітити визначення функції"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Якщо значення істинне, то повернути друге значення."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Попередження: цей блок може використовуватися лише в межах визначення функції."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "назва входу:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Додати до функції вхідні параметри."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "входи"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Додайте, вилучіть або змініть порядок вхідних параметрів для цієї функції."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Повторити"; +Blockly.Msg["REMOVE_COMMENT"] = "Видалити коментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Перейменувати змінну..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Перейменувати усі змінні \"%1\" до:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "до %1 додати текст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Додати деякий текст до змінної '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "до нижнього регістру"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Великі Перші Букви"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "до ВЕРХНЬОГО регістру"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "В іншому випадку повертає копію тексту."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "отримати перший символ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "отримати символ # з кінця"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "отримати символ #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "отримати останній символ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "отримати випадковий символ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "-ий."; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "з тексту %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Повертає символ у зазначеній позиції."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "кількість %1 в %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Підраховує, скільки разів деякий текст з'являється в іншому тексті."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Додати елемент до тексту."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "приєднати"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Додайте, вилучіть або змініть порядок секцій для переналаштування текстового блоку."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "до символу # з кінця"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "до символу #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "до останнього символу"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тексті"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "отримати підрядок від першого символу"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "отримати підрядок від символу # з кінця"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "отримати підрядок від символу #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "-ого."; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Повертає заданий фрагмент тексту."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "знайти перше входження тексту"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "знайти останнє входження тексту"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тексті %1 %2 %3."; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Повертає індекс першого/останнього входження першого тексту в другий. Повертає %1, якщо текст не знайдено."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 є порожнім"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Повертає істину, якщо вказаний текст порожній."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "створити текст з"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Створити фрагмент тексту шляхом з'єднування будь-якого числа елементів."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "довжина %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Повертає число символів (включно з пропусками) у даному тексті."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "друк %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Надрукувати заданий текст, числа або інші значення."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запитати у користувача число."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запитати у користувача деякий текст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запит числа з повідомленням"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запит тексту з повідомленням"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замінити %1 на %2 в %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замінює всі входження деякого тексту іншим текстом."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "розвернути %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Змінює на протилежний порядок символів у тексті."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://uk.wikipedia.org/wiki/Рядок_(програмування)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Символ, слово або рядок тексту."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "вилучити крайні пропуски з обох кінців"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "вилучити пропуски з лівого боку"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "вилучити пропуски з правого боку"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Повертає копію тексту з вилученими пропусками з одного або обох кінців."; +Blockly.Msg["TODAY"] = "Сьогодні"; +Blockly.Msg["UNDO"] = "Скасувати"; +Blockly.Msg["UNNAMED_KEY"] = "без назви"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "елемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Створити 'встановити %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Повертає значення цієї змінної."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "встановити %1 до %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Створити 'отримати %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Задає цю змінну рівною входу."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Змінна з назвою '%1' вже існує."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Змінна з назвою '%1' вже існує в іншому типі: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Робоча область Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Скажіть щось..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/ur.js b/blockly/msg/ur.js new file mode 100644 index 00000000000..53966c99290 --- /dev/null +++ b/blockly/msg/ur.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "کمنٹ کریں"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "متغیر '٪ 1' کو حذف نہیں کر سکتا کیونکہ یہ فنکشن کی تعریف کا حصہ ہے '٪ 2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ویلیو تبدیل کریں:"; +Blockly.Msg["CLEAN_UP"] = "بلاکس صاف کریں"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "بند کرو بلاکس"; +Blockly.Msg["COLLAPSE_BLOCK"] = "بند کرو بلاک"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ریشیو"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "مرکب"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دیئے گئے ریشیو میں دو رنگوں کو مرکب کریں (0.0-1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "پیلیٹ سے رنگ منتخب کریں"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ناسیدھا رنگ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "کسی بھی رنگ کو منتجب کریں"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "نیلا"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سبز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "سرخ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "کے ساتھ رنگ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "مخصوص، سرخ، سبز اور نیلے رنگ کے ساتھ ایک رنگ بنائیں. تمام اقدار 0 اور 100 کے درمیان ہونا ضروری ہے."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "لوپ سے باہر نکلنا"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "مشتمل لوپ کے باہر توڑ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "انتباہ: اس بلاک کو صرف لوپ میں استعمال کیا جاسکتا ہے۔"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "प्रत्येक چیز کیلئے %1 فہرست ميں %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "فہرست میں ہر آئٹم کے لئے، '%1' متغیر کو آئٹم پہ لگائے،اور پھر کچھ جملے کہے"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 سے %2 سے %3 تک %4 کے ساتھ گنتی کریں"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "کیا چر '%1' ابتدا عدد سے اختتام عدد تک मानों کو لیتا ہے، निर्दिष्ट अंतराल کے تحت گنتی کرتا ہے، اور निर्दिष्ट रुकावटों کو کرتا ہے۔"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "دوسراں"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "دوسراں اگر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "کریں"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 مرتبہ دہرائے"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "کچھ جملوں کو کہیں مرتبہ کریں۔"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تک دہرائے"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "کے دوران دہرائے"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "تمام%1 بلاکس کو حذف کریں؟"; +Blockly.Msg["DELETE_BLOCK"] = "حذف بلاک"; +Blockly.Msg["DELETE_VARIABLE"] = "'٪ 1' متغیر کو حذف کریں"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%2 متغیر کے %1 استعمال کو حذف کریں؟"; +Blockly.Msg["DELETE_X_BLOCKS"] = " بلاکوں کو حذف کریں %1"; +Blockly.Msg["DIALOG_CANCEL"] = "منسوخ"; +Blockly.Msg["DIALOG_OK"] = "ٹھیک ہے"; +Blockly.Msg["DISABLE_BLOCK"] = "بلاک کو غیرفعال کریں"; +Blockly.Msg["DUPLICATE_BLOCK"] = "نقل"; +Blockly.Msg["DUPLICATE_COMMENT"] = " نقل تبصرہ"; +Blockly.Msg["ENABLE_BLOCK"] = "بلاک کو فعال کریں"; +Blockly.Msg["EXPAND_ALL"] = "بلاکوں میں توسیع کریں"; +Blockly.Msg["EXPAND_BLOCK"] = "بلاک میں توسیع کریں"; +Blockly.Msg["EXTERNAL_INPUTS"] = "خارجی دخل اندازی"; +Blockly.Msg["HELP"] = "مدد"; +Blockly.Msg["INLINE_INPUTS"] = "بین السطور داخل کریں"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "فہرست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "کے ساتھ فہرست بنائیں"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "پہلا"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "آخر سے"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "حاصل کریں"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخری"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "غیرمتعین"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حذف کریں"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "پہلے آئٹم کو فہرست میں لوٹائے"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "فہرست میں"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 کی لمبائی"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "بطور"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "میں درج کریں"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "تعین کریں"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "فہرست میں پہلا آئٹم کا تعین کریں"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "غلط"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سچ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 نہیں"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "اور"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ٹیسٹ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر غلط ہے"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگ سچ ہے"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ایک نمبر."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "بالکل"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "اسکویر روٹ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "رنگ متغیر بنائیں"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "عدد متغیر بناییں"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "متغیر بنائیں String"; +Blockly.Msg["NEW_VARIABLE"] = "متغیر بنائیں"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نیا ویریابل نام:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = " نئی متغیر قسم"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "سمیت:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "سمیت:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "کچھ کرو"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "کو"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "بغیر آوٹ پٹ کا فنکشن بنائیں"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "واپس آ جائیں"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "بغیر آوٹ پٹ کا فنکشن بنائیں"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "دہرائیں"; +Blockly.Msg["REMOVE_COMMENT"] = "تبصرہ کو ہٹا دیں"; +Blockly.Msg["RENAME_VARIABLE"] = "دوبار نام دیں ویریابل کو..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تمام %1 متغیروں کو دوبارہ نام دے:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# حرف حاصل کریں"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "آج"; +Blockly.Msg["UNDO"] = "کیا ہوا کام کینسل کرے"; +Blockly.Msg["UNNAMED_KEY"] = "نامعلوم"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "آئٹم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ایک متغیر نام %1 پہلے سے ہی موجود ہے."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ایک متغیر نام %1 کسی دوسرے قسم کے لئے پہلے ہی موجود ہے: %2."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/uz.js b/blockly/msg/uz.js new file mode 100644 index 00000000000..55596f55fde --- /dev/null +++ b/blockly/msg/uz.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Qiymatni o'zgartirish:"; +Blockly.Msg["CLEAN_UP"] = "Bloklarni tozalash"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Bloklarni yopish"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Blokni yopish"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "tasodifiy rang"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tasodifiy rangni tanlang."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ko'k"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "yashil"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "qizil"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Barcha %1 bloklar o'chirilsinmi?"; +Blockly.Msg["DELETE_BLOCK"] = "Blokni o'chirish"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' o'zgaruvchisini o'chirib tashlang"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 bloklarini o‘chirish"; +Blockly.Msg["DIALOG_CANCEL"] = "Bekor qilish"; +Blockly.Msg["DIALOG_OK"] = "Mayli"; +Blockly.Msg["DISABLE_BLOCK"] = "Bloklashni o‘chirish"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Bloklashni yoqish"; +Blockly.Msg["EXPAND_ALL"] = "Bloklarni kengaytirish"; +Blockly.Msg["EXPAND_BLOCK"] = "Blokni kengaytirish"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Yordam"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Rang o'zgaruvchisini yaratish ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Raqam o'zgaruvchisini yarating ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "String o'zgaruvchisini yaratish ..."; +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Yangi o'zgaruvchining nomi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Yangi o'zgaruvchining turi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Qaytarish"; +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Bekor qilish"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' nomli o'zgaruvchi mavjud."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' nomli o'zgaruvchi boshqa tur uchun allaqachon mavjud: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/vi.js b/blockly/msg/vi.js new file mode 100644 index 00000000000..f6ff02da4dd --- /dev/null +++ b/blockly/msg/vi.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Thêm Chú Giải"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Không thể xóa giá trị '%1' vì nó được bao gồm trong định nghĩa của chức năng '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Thay giá trị thành:"; +Blockly.Msg["CLEAN_UP"] = "Sắp xếp lại các khối"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Các khối bị sập có chứa cảnh báo."; +Blockly.Msg["COLLAPSE_ALL"] = "Thu Nhỏ Mọi Mảnh"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Thu Nhỏ Mảnh"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "màu 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "màu 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "tỉ lệ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "pha"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Pha hai màu với nhau theo tỉ lệ (0 - 100)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://vi.wikipedia.org/wiki/M%C3%A0u_s%E1%BA%AFc"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Chọn một màu từ bảng màu."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "màu bất kỳ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "chọn một màu bất kỳ."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "màu xanh dương"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "màu xanh lá cây"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "màu đỏ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "tạo màu từ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Tạo màu từ ba màu: đỏ, xanh lá cây, xanh dương với số lượng cụ thể. Mỗi số phải có giá trị từ 0 đến 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "thoát"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "sang lần lặp tiếp theo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Thoát khỏi vòng lặp hiện tại."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Bỏ qua phần còn lại trong vòng lặp này, và sang lần lặp tiếp theo."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Chú ý: Mảnh này chỉ có thế dùng trong các vòng lặp."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "với mỗi thành phần %1 trong danh sách %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Trong một danh sách, lấy từng thành phần, gán vào biến \"%1\", rồi thực hiện một số lệnh."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "đếm theo %1 từ %2 đến %3 mỗi lần thêm %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Cho biến '%1' lấy các giá trị từ số bắt đầu đến số kết thúc, đếm theo khoảng thời gian đã chỉ định và thực hiện các khối được chỉ định."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Thêm một điều kiện vào mảnh nếu."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Cuối cùng, khi không điều kiện nào đúng."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Thêm, bỏ, hoặc đổi thứ tự các mảnh con để tạo cấu trúc mới cho mảnh nếu."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "nếu không"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "nếu không nếu"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "nếu"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Nếu điều kiện đúng, thực hiện các lệnh."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu sai, thực hiện các lệnh sau."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai. Nếu không điều kiện nào đúng, thực hiện các lệnh cuối cùng."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "thực hiện"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "lặp lại %1 lần"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Thực hiện các lệnh vài lần."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "lặp lại cho đến khi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "lặp lại trong khi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Miễn là điều kiện còn sai, thì thực hiện các lệnh. Khi điều kiện đúng thì ngưng."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Miễn là điều kiện còn đúng, thì thực hiện các lệnh."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Xóa hết %1 mảnh?"; +Blockly.Msg["DELETE_BLOCK"] = "Xóa Mảnh Này"; +Blockly.Msg["DELETE_VARIABLE"] = "Xóa giá trị '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Xóa %1 lần dùng của giá trị '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Xóa %1 Mảnh"; +Blockly.Msg["DIALOG_CANCEL"] = "Hủy"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Ngưng Tác Dụng"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Tạo Bản Sao"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Bình luận trùng"; +Blockly.Msg["ENABLE_BLOCK"] = "Phục Hồi Tác Dụng"; +Blockly.Msg["EXPAND_ALL"] = "Mở Lớn Mọi Mảnh"; +Blockly.Msg["EXPAND_BLOCK"] = "Mở Lớn Mảnh"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Chỗ Gắn Bên Ngoài"; +Blockly.Msg["HELP"] = "Trợ Giúp"; +Blockly.Msg["INLINE_INPUTS"] = "Chỗ Gắn Cùng Dòng"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tạo danh sách trống"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Hoàn trả một danh sách, với độ dài 0, không có thành tố nào cả"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "danh sách"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh danh sách này."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "tạo danh sách gồm"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Thêm vật vào danh sách."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Tạo một danh sách bao gồm nhiều vậts, với một số lượng bất kỳ."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "đầu tiên"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "(đếm từ cuối) thứ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "thứ"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "lấy thành tố"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "lấy và xóa thành tố"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "cuối cùng"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "bất kỳ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "xóa thành tố"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Hoàn trả thành tố đầu tiên trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Hoàn trả thành tố trong danh sách ở vị trí ấn định."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Hoàn trả thành tố cuối cùng trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Hoàn trả một thành tố bất kỳ trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Hoàn trả và xóa thành tố đầu tiên trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Hoàn trả và xóa thành tố trong danh sách ở vị trí ấn định."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Hoàn trả và xóa thành tố cuối cùng trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Hoàn trả và xóa mộtthành tố bất kỳ trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Xóa thành tố đầu tiên trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Xóa thành tố trong danh sách ở vị trí ấn định."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Xóa thành tố cuối cùng trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Xóa thành tố bất kỳ trong danh sách."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "đến (đếm từ cuối) thứ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "đến thứ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "đến cuối cùng"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "lấy một danh sách con từ đầu tiên"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "lấy một danh sách con từ (đếm từ cuối) từ vị trí thứ"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "lấy một danh sách con từ vị trí thứ"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Lấy một mảng của danh sách này để tạo danh sách con."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 là thành tố cuối cùng."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 là thành tố đầu tiên."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "tìm sự có mặt đầu tiên của vật"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "tìm sự có mặt cuối cùng của vật"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Hoàn trả vị trí xuất hiện đầu tiên/cuối cùng của vật trong danh sách. Nếu không tìm thấy thì hoàn trả số %1."; +Blockly.Msg["LISTS_INLIST"] = "trong dánh sách"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 trống rỗng"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Hoàn trả “đúng\" nếu danh sách không có thành tử nào."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "độ dài của %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Hoàn trả độ dài của một danh sách."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "tạo danh sách gồm một vật %1 lặp lại %2 lần"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Tạo danh sách gồm một số lượng vật nhất định với mỗi vật đều giống nhau."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "đảo ngược %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Đảo ngược bản sao chép của một danh sách."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "giá trị"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "chèn vào vị trí"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "đặt"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Chèn vật vào đầu danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Chèn vật vào danh sách theo vị trí ấn định."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Gắn thêm vật vào cuối danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Gắn chèn vật vào danh sách ở vị trí ngẫu nhiên."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Đặt giá trị của thành tố đầu tiên trong danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Đặt giá trị của thành tố ở vị trí ấn định trong một danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Đặt giá trị của thành tố cuối cùng trong danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Đặt giá trị của thành tố ngẫu nhiên trong danh sách."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "tăng dần"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "giảm dần"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sắp xếp %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sắp xếp một bản sao của một danh sách."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "chữ cái, không phân biệt hoa/thường"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "số"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "chữ cái"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "tạo danh sách từ văn bản"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tạo văn bản từ danh sách"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Liên kết một danh sách các văn bản vào một văn bản, cách nhau bằng dấu phân cách."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tách văn bản thành một danh sách các văn bản nhỏ, ngắt bởi các ký tự phân cách."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "với ký tự phân cách"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "sai"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Hoàn trả \"đúng\" hoặc \"sai\"."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "đúng"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://vi.wikipedia.org/wiki/B%E1%BA%A5t_%C4%91%E1%BA%B3ng_th%E1%BB%A9c"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào bằng nhau."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn đầu vào thứ hai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn hoặc bằng đầu vào thứ hai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn đầu vào thứ hai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn hoặc bằng đầu vào thứ hai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào không bằng nhau."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "không %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Hoàn trả \"đúng\" (true) nếu đầu vào sai. Hoàn trả \"sai\" (false) nếu đầu vào đúng."; +Blockly.Msg["LOGIC_NULL"] = "trống không"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Hoàn trả trống không."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "và"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "hoặc"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Hoàn trả \"đúng\" (true) nếu cả hai đầu vào đều đúng."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Hoàn trả \"đúng\" (true) nếu ít nhất một trong hai đầu vào đúng."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "kiểm tra"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "nếu sai"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "nếu đúng"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kiểm tra điều kiện. Nếu điều kiện đúng, hoàn trả giá trị từ mệnh đề \"nếu đúng\" nếu không đúng, hoàn trả giá trị từ mệnh đề \"nếu sai\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://vi.wikipedia.org/wiki/S%E1%BB%91_h%E1%BB%8Dc"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Hoàn trả tổng của hai con số."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Hoàn trả thương của hai con số."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Hoàn trả hiệu của hai con số."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Hoàn trả tích của hai con số."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Hoàn trả số lũy thừa với số thứ nhất là cơ số và số thứ hai là số mũ."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 của X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Trả về arctangent của điểm (X, Y) trong khoảng từ -180 độ đến 180 độ."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://vi.wikipedia.org/wiki/Ph%C3%A9p_c%E1%BB%99ng"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "cộng vào %1 giá trị %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Cộng số đầu vào vào biến \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Hoàn trả các đẳng số thường gặp: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (vô cực)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "giới hạn %1 không dưới %2 không hơn %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Giới hạn số đầu vào để không dưới số thứ nhất và không hơn số thứ hai."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "chia hết cho"; +Blockly.Msg["MATH_IS_EVEN"] = "là số chẵn"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "là số âm"; +Blockly.Msg["MATH_IS_ODD"] = "là số lẻ"; +Blockly.Msg["MATH_IS_POSITIVE"] = "là số dương"; +Blockly.Msg["MATH_IS_PRIME"] = "là số nguyên tố"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kiểm tra con số xem nó có phải là số chẵn, lẻ, nguyên tố, nguyên, dương, âm, hay xem nó có chia hết cho số đầu vào hay không. Hoàn trả đúng hay sai."; +Blockly.Msg["MATH_IS_WHOLE"] = "là số nguyên"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "số dư của %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Chia số thứ nhất cho số thứ hai rồi hoàn trả số dư từ."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://vi.wikipedia.org/wiki/S%E1%BB%91"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Một con số."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "giá trị trung bình của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "số lớn nhât của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "số trung vị của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "số nhỏ nhất của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "các mode của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "một số bất kỳ của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "độ lệch chuẩn của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "tổng của một danh sách"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Hoàn trả giá trị trung bình từ của danh sách số."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Hoàn trả số lớn nhất trong tất cả các số trong danh sách."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Hoàn trả số trung vị của danh sách số."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Hoàn trả số nhỏ nhất trong tất cả các số trong danh sách."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Hoàn trả các số có mặt nhiều nhất trong danh sách."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Hoàn trả một số bất kỳ từ các số trong danh sách."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Hoàn trả độ lệch chuẩn của danh sách số."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Hoàn trả tổng số của tất cả các số trong danh sách."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "phân số bất kỳ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Hoàn trả một phân số bất kỳ không nhỏ hơn 0.0 và không lớn hơn 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "Một số nguyên bất kỳ từ %1 đến %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Hoàn trả một số nguyên bất kỳ lớn hơn hoặc bằng số đầu và nhỏ hơn hoặc bằng số sau."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "làm tròn"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "làm tròn xuống"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "làm tròn lên"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Làm tròn lên hoặc tròn xuống số đầu vào."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://vi.wikipedia.org/wiki/C%C4%83n_b%E1%BA%ADc_hai"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "giá trị tuyệt đối"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "căn bật hai"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Hoàn trả giá trị tuyệt đối của số đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Hoàn trả lũy thừa của số e với số mũ đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Hoàn trả lôgarit tự nhiên của số đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Hoàn trả lôgarit cơ số 10 của số đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Đổi dấu của số đầu vào: âm thành dương và dương thành âm, và hoàn trả số mới."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Hoàn trả lũy thừa của số 10 với số mũ đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Hoàn trả căn bật hai của số đầu vào."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://vi.wikipedia.org/wiki/H%C3%A0m_l%C6%B0%E1%BB%A3ng_gi%C3%A1c"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Hoàn trả Arccos của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Hoàn trả Arcsin của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Hoàn trả Arctang của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Hoàn trả Cos của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Hoàn trả Sin của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Hoàn trả Tang của một góc (theo độ)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Tạo một giá trị màu sắc..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Tạo một giá trị số..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Tạo một giá trị dạng chuỗi..."; +Blockly.Msg["NEW_VARIABLE"] = "Tạo biến..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Tên của biến mới:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Kiểu giá trị mới:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "cho phép báo cáo"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "với:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Chạy một thủ tục không có giá trị hoàn trả."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Chạy một thủ tục có giá trị hoàn trả."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "với:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Tạo mảnh \"thực hiện %1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Mô tả hàm này..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "làm gì đó"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "thủ tục để"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Một thủ tục không có giá trị hoàn trả."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "hoàn trả"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Một thủ tục có giá trị hoàn trả."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Chú ý: Thủ tục này có lặp lại tên các tham số."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Làm nổi bật thủ tục"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Khi điều kiện đúng thì hoàn trả một giá trị."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Chú ý: Mảnh này chỉ có thể dùng trong một thủ tục."; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "biến:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Thêm một đầu vào cho hàm."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "các tham số"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Thêm, xóa hoặc sắp xếp lại các đầu vào cho hàm này."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Làm lại"; +Blockly.Msg["REMOVE_COMMENT"] = "Xóa Chú Giải"; +Blockly.Msg["RENAME_VARIABLE"] = "Thay tên biến..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Thay tên tất cả các biến \"%1\" thành:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "ở cuối %1 thêm văn bản %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Thêm một mảng văn bản vào biến \"%1\"."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "thành chữ thường"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "thành Chữ In Đầu Mỗi Từ"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "thành CHỮ IN HOA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Hoàn trả văn bản sau khi chuyển đổi chữ in hoa hay thường."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "lấy ký tự đầu tiên"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "lấy từ phía cuối, ký tự thứ"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "lấy ký tự thứ"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "lấy ký tự cuối cùng"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "lấy ký tự bất kỳ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "trong văn bản %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Hoàn trả ký tự ở vị trí đặt ra."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "đến %1 trong %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Đếm số lần một đoạn văn bản xuất hiện trong một đoạn văn bản khác."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "thêm vật mới vào văn bản."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "kết nối"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh văn bản này."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "đến từ phía cuối, ký tự thứ"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "đến ký tự thứ"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "đến ký tự cuối cùng"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "trong văn bản"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "lấy từ ký tự đầu tiên"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "lấy từ phía cuối, ký tự thứ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "lấy từ ký tự thứ"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Hoàn trả một mảng ký tự ấn định từ trong văn bản."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "tìm sự có mặt đầu tiên của"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "tìm sự có mặt cuối cùng của"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "trong văn bản %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Hoàn trả vị trí xuất hiện đầu/cuối của văn bản thứ nhất trong văn bản thứ hai. Nếu không tìm thấy thì hoàn trả số %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 trống không"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Hoàn trả “đúng nếu văn bản không có ký tự nào."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = ""; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "tạo văn bản từ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tạo một văn bản từ các thành phần."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "độ dài của %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Hoàn trả số lượng ký tự (kể cả khoảng trắng) trong văn bản đầu vào."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "in lên màng hình %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "In ra màng hình một văn bản, con số, hay một giá trị đầu vào khác."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Xin người dùng nhập vào một con số."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Xin người dùng nhập vào một văn bản."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Xin người dùng nhập vào con số với dòng hướng dẫn"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Xin người dùng nhập vào văn bản với dòng hướng dẫn"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "thay thế %1 bằng %2 trong %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Thay thế tất cả các lần xuất hiện của văn bản bằng văn bản khác."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "đảo ngược %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Đảo ngược thứ tự của các chữ cái trong văn bản."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/string_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Một ký tự, một từ, hay một dòng."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "cắt các không gian từ cả hai mặt của"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "cắt các không gian từ bên trái của"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "cắt các không gian từ bên phải của"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Hoàn trả bản sao của văn bản sau khi xóa khoảng trắng từ một hoặc hai bên."; +Blockly.Msg["TODAY"] = "Hôm nay"; +Blockly.Msg["UNDO"] = "Hoàn tác"; +Blockly.Msg["UNNAMED_KEY"] = "không tên"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "vật"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Tạo mảnh \"đặt vào %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Hoàn trả giá trị của."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "cho %1 bằng %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Tạo mảnh \"lấy %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Đặt giá trị của biến này thành..."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Một biến có tên '%1' đã tồn tại."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Giá trị '%1' đã tồn tại dưới dạng: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Không gian làm việc Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Hãy nói gì đó..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/xmf.js b/blockly/msg/xmf.js new file mode 100644 index 00000000000..cb8f0de884e --- /dev/null +++ b/blockly/msg/xmf.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "კომენტარიშ გეძინა"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "შანულობაშ თირუა:"; +Blockly.Msg["CLEAN_UP"] = "ბლოკეფიშ გოუქვაფა"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ბლოკეფიშ ინოკიჩუა"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ბლოკიშ ტყობინაფა"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ფერი 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ფერი 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ფერი 1-შ წილი"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ესვარუა"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ჟირ ფერს ართიანს უწყორუანს მოჩამილი ზჷმათ (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://xmf.wikipedia.org/wiki/ფერი"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "გეგშაგორით ფერი პალიტრაშე."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "შემთხვევითი ფერი"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ფერიშ შემთხვევითო გიშაგორუა."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ლენი"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "წვანე"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ჭითა"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ფერიː"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "აკოქიმინით ფერი მოჩამილი ჭითა, წვანე დო ლენი ფერეფიშ პროპორციეფით. არძა შანულობა 0 დო 100 შქას ოკო რდას."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ციკლშე გიშულა"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ციკლიშ გეჸვენჯი ბიჯგშა გინულა"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "თე ციკლიშ მეჭყორიდუა."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ხვილაფა: თე ბლოკიშ გჷმორინაფა ხვალე ციკლიშ დინოხოლე შილებე."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "მათირეფონი '%1'-ის მითმურჩქინანს შანულობას მოჩამილი ბიჯგეფით დუდშე ბოლოშა დო მეწურაფილ ზოჯუეფს არსულენს."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "შხვანერო"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "შხვანერო თუ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "თუ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "პიჯალეფი ნანდული ქორე-და, ზოჯუეფს არსულენს."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/ციკლი_(პროგრამირაფა)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "რსულება"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 შა გომაჟირაფა"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "მუსხირენ ზოჯუაშ მუსხირენშა რსულება."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "გომაჟირაფა, სოიშახ ვა"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "გომაჟირაფა, სოიშახ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "სოიშახ შანულობა ტყურა რე, ზოჯუეფიშ რსულება"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "სოიშახ შანულობა ნანდული რე, ზოჯუეფიშ რსულება."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "არძა (%1) ბლოკი ბლასათო?"; +Blockly.Msg["DELETE_BLOCK"] = "ბლოკიშ ლასუა"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' მათირეფონიშ ლასუა"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' მათირეფონიშ გჷმორინაფა %1 ბლასათო?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ბლოკიშ ლასუა"; +Blockly.Msg["DIALOG_CANCEL"] = "გოუქვაფა"; +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ბლოკიშ თიშუა"; +Blockly.Msg["DUPLICATE_BLOCK"] = "კოპირაფა"; +Blockly.Msg["DUPLICATE_COMMENT"] = "კომენტარიშ დუბლირაფა"; +Blockly.Msg["ENABLE_BLOCK"] = "ბლოკიშ ჩართება"; +Blockly.Msg["EXPAND_ALL"] = "ბლოკეფიშ გჷმოფაჩუა"; +Blockly.Msg["EXPAND_BLOCK"] = "ბლოკიშ გჷმოფაჩუა"; +Blockly.Msg["EXTERNAL_INPUTS"] = "გალეშე დინოხუნაფა"; +Blockly.Msg["HELP"] = "მოხვარა"; +Blockly.Msg["INLINE_INPUTS"] = "დინოხოლე დინოხუნაფა"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ცარიელი რე"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ტყურა"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ნანდული"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "მუთუნ ვარი"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "დჷთმართინუანს მუთუნ ვარს."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "დო"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ვარდა"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://xmf.wikipedia.org/wiki/არითმეტიკა"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "ჭკობა რე"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "უარყოფითი რე"; +Blockly.Msg["MATH_IS_ODD"] = "ცანდი რე"; +Blockly.Msg["MATH_IS_POSITIVE"] = "დადებითი რე"; +Blockly.Msg["MATH_IS_PRIME"] = "უკაჭული რე"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "ნთელი რე"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://xmf.wikipedia.org/wiki/რიცხუ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "რიცხუ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "მოდული"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "კვადრატული ჯინჯი"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "აკოქიმინი მათირეფონი..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ახალი მათირეფონიშ ჯოხო:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ოშხონაფა"; +Blockly.Msg["REMOVE_COMMENT"] = "კომენტარიშ გოუქვაფა"; +Blockly.Msg["RENAME_VARIABLE"] = "ჯოხოშ თირუა მათირეფონი…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "არძა მათირეფონი '%1' ჯოხოშ თირუა -შა:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ამდღა"; +Blockly.Msg["UNDO"] = "გოუქვაფა"; +Blockly.Msg["UNNAMED_KEY"] = "ჯოხოშ უმუშო"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ელემენტი"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "მათირეფონი ჯოხოთი '%1' უკვე არსენებს."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/yo.js b/blockly/msg/yo.js new file mode 100644 index 00000000000..6655d708aae --- /dev/null +++ b/blockly/msg/yo.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ṣe afikun ọrọ iwoye"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "E ko lee paa Oniruuru rẹ ' %1' nitori wipe o je ara itumọ isise eto yi '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ṣe ayipada iye:"; +Blockly.Msg["CLEAN_UP"] = "Nu Bulọọku kuro"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Bi awọn Bulọọku ṣubu"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bi Bulọọku ṣubu"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "awọ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "awọ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ipin"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "apapọ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Da awo meji papo pelu ipin (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Yan awọ kan lati inu patako awọ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "awọ àrìnàkò"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Yan awọ kan ni ọna àrìnàkò."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "alawọ omi aro"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "alawọ ewe"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "awọ pupu"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "awọ pelu:"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ṣe idasile awọ kan pelu iye awọ pupu, alawọ ewe, ati alawọ omi aro. Gbogbo iye re gbọdọ je laarin 0 and 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ya kuro ninu lupu"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "beere pelu aṣiṣe lupu"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ya kuro ninu akojọ lupu."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ṣe afoda awon lupu to ku yii, kii o si tesiwaju pelu awon aṣiṣe lupu."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Ikilo: Bulọọku yii se lo ninu aṣiṣe lupu yii nikan."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "fun nigba kọọkan %1 ni akojọ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Fun nkan kọọkan ninu akojọ kan, ṣe eto oriṢiriṢi '%1' si nkan naa, ki o si tun koodu naa ṣe."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "iyipada %1 lati %2 si %3 fifi kun %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ni awon oriṣiriṣi '%1' ṣe imulo lori iye kọọkan lati ori nọmba tio beere titi de eyin to pari nọmba, kaa ni pase aarin kan pato. Tun koodu yi se nigba kọọkan:"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ṣe afikun si ipo yii bi bulọọku."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ṣe afikun ipari, mu-gbogbo ipo si bulọọku."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ṣe afikun, se ayọkuro, tabi se a tun beere abala yii lati se a tun gbejade bulọọku yii."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "bibẹẹkọ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "bibẹẹkọ bi"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "bi"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Bi iye yii ba je otito, lẹyinna ṣe awọn alaye."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Bi iye yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, ṣe alaye akọkọ bulọọku keji."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji. Bi eyikeyi iye naa ko ba je otito, ṣe alaye akọkọ bulọọku ti o gbeyin."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ṣe"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Iye igba %1 ti tun ṣe"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Ṣe awon alaye ni igba pupo."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "tun ṣe titi ti"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "tun ṣe nigbati"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Nigbati awon iye kan ba iro, tun awon koodu kan ṣe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Nigbati iye kan ba je otito, tun awon koodu kan ṣe."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Paa gbogbo %1 bulọọku rẹ?"; +Blockly.Msg["DELETE_BLOCK"] = "Paa Bulọọku rẹ"; +Blockly.Msg["DELETE_VARIABLE"] = "Paa awon '%1' Oniruuru rẹ"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Paa %1 lilo '%2' oniruuru rẹ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Paa %1 awọn Bulọọku rẹ"; +Blockly.Msg["DIALOG_CANCEL"] = "Fagilé"; +Blockly.Msg["DIALOG_OK"] = "O DARA"; +Blockly.Msg["DISABLE_BLOCK"] = "Sọ Bulọọku di alaiṣiṣẹ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Ṣe ẹẹda"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Ṣe ẹẹda afikun ọrọ iwoye"; +Blockly.Msg["ENABLE_BLOCK"] = "Muu Bulọọku ṣiṣẹ"; +Blockly.Msg["EXPAND_ALL"] = "Fẹ awọn Bulọọku"; +Blockly.Msg["EXPAND_BLOCK"] = "Fẹ Bulọọku"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Awon afikun okeere"; +Blockly.Msg["HELP"] = "Iranwọ"; +Blockly.Msg["INLINE_INPUTS"] = "Afiku tẹle n tẹle"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Ṣẹda akojọ aṣayan tio ṣofo"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Da akojọ pada, ti gigun 0, ko ni awon akosile alaye"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "akojọ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Fikun, yọ, tabi yọ, tunṣe awọn apakan lati akojọ bulooku yii."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ṣẹda akojọ"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Fi nkan kun akojọ."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ṣẹda akojọ pẹlu nọmba eyikeyi ti awọn akojo."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "àkọ́kọ́"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# lati opin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "gba"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "gba ati yọ"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "tógbẹ̀yìn"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "àrìnàkò"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "yọ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Da akojọ akọkọ pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Da akojọ ti o kẹhin pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Da ohun àrìnàkò kan pada ninu akojọ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Yọ ki o si da akojọ kuro ni akọkọ pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Yọ ki o si da akojọ ti o kẹhin pada"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Yọ ki o si da akojọ ti o kẹhin àrìnàkò pada"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Da akojọ akọkọ pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Da akojọ ti o kẹhin pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Da ohun àrìnàkò kan pada ninu akojọ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "sii # lati opin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "sii #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "sii opin"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "gba ipin -akojọ lati akọkọ"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "gba ipin -akojọ lati # lati opin"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "gba ipin -akojọ lati #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ṣẹda ẹda ti apa kan ti o wa ninu akojọ."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 jẹ ohun ti o kẹhin."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 jẹ ohun akọkọ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "wa awon nkan akọkọ ti o sele"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "wa iṣẹlẹ ti o kẹhin ti akojọ"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri."; +Blockly.Msg["LISTS_INLIST"] = "ni akojọ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je ofo"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Da otitọ pada nigbati akojọ ba ṣofo."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "gigun ti %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Da gigun ti akojo pada."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ṣẹda akojọ pẹlu nkan %1 tun ṣe %2 igba"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ṣẹda akojọ kan ti o wa fun iye tun nọmba kan pato ti akoko ti a ti yan."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "Ṣe iyipada %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Ṣe iyipada ẹda ti akojọ kan."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "bii"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "fi sii ni"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ṣeto"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Fi ohun kan sii ni ibẹrẹ akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Fi ohun kan sii ipo kan pato ti a ti yan ni akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Fi ohun kan kun si opin akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Fi ohun kan kun si àrìnàkò akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Fi ohun kan sii ni ibẹrẹ akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ṣeto ohun akọkọ sii ipo kan pato ti a ti yan ni akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Fi ohun kan kun si opin akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Fi ohun kan kun si àrìnàkò akojọ."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "si oke"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "si isalẹ"; +Blockly.Msg["LISTS_SORT_TITLE"] = "to %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "To ẹda akojọ lẹsẹẹsẹ."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "awon alfabeti, fojufo irufe"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "awọn nọmba"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "awon alfabeti"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ṣe akojọ lati inu ọrọ"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ṣe ọrọ lati akojọ"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Darapọ mọ akojọ awọn ọrọ sinu ọrọ kan, ti a pin nipase delimita."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Pin ọrọ sinu akojọ awọn ọrọ kan, fọ ni dẹlimita kọọkan."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "pẹlu dẹlimita"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "irọ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Da pada bi o je otito tabi iro."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "otitọ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Da otito pada b iafikun mejeji ba dogba bakanna."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Da otito pada bi afikun akooko ba tobi ju afiku keji lo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Da otito pada bi afikun akooko ba tobi ju tabi dogba pelu afiku keji lo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Da otito pada bi afikun akooko ba kere ju afiku keji lo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Da otito pada bi afikun akooko ba kere ju tabi dogba pelu afiku keji lo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Da otito pada bi afikun mejeji ko ba dogba bakanna."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "kii ṣe %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Da otitọ pada bi afikun ba je irọ. Da iro pada bi afikun ba je otito."; +Blockly.Msg["LOGIC_NULL"] = "ofo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Da ofo pada."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ati"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "tabi"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Da otito pada bi afikun mejeji ba je otito."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Da otitọ pada bi o kere ju afikun kan ba je otito."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "idanwo"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "bi irọ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "bi otitọ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Ṣe ayewo ipo naa ni 'idanwo'. Bi ipo nab a je otito, Da pada 'bi otito' iye; bibẹẹkọ da pada 'bi iro' iye."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://yo.wikipedia.org/wiki/Ìṣírò"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Da apapo awọn nọmba meji pada."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Da adarọ iye ti awọn nọmba meji pada."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Da iyatọ awọn nọmba meji naa pada."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Da abajade awọn nọmba meji naa pada."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Da nọmba akọkọ ti a gbe si agbara ti nọmba keji pada."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Da ojuami arctangent pada (X, Y) ni awon digiri lati -180 si 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "iyipada %1 nipasẹ %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Se afiku si nọmba orisirisi '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Da ọkan ninu awọn aiyipada ti o wọpọ pada: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (ailopin)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "atokọ %1 kukuru %2 giga %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ṣe atokọ nọmba laarin awọn nọmba kukuru ati giga. (ini afikun)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je sisee pin pẹlu"; +Blockly.Msg["MATH_IS_EVEN"] = "je se e pin"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je ai dara"; +Blockly.Msg["MATH_IS_ODD"] = "je ai se e pin"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je di dara"; +Blockly.Msg["MATH_IS_PRIME"] = "je nọ́mbà àkọ́kọ́"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Ṣe ayẹwo boya nọmba jẹ eyi to se pin, ai se pin, akori, odidi, ti o dara, ti ko dara, tabi ti o ba se e pin pelu nọmba kan. Pada otitọ tabi irọ."; +Blockly.Msg["MATH_IS_WHOLE"] = "je odidi"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "iyokù %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Da iyokù lati pinpin awọn nọmba meji pada."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://yo.wikipedia.org/wiki/Nọ́mbà"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Nọ́mbà kan."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "idameji akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "akojọ ti o pọ ju"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "agbedemeji akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "akojọ ti o kere ju"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "awọn ipo ti akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "àrìnàkò nkan ti akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "iṣiro deede ti akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "apao akojọ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Da idameji pada (ipin isiro) ti awọn nọmba iye inu akojọ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Da nọmba ti o tobi julọ ninu akojọ pada."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Da agbedemeji nọmba inu akojọ pada."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Da nọmba ti o kere julọ ninu akojọ pada."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Da akojọ ti eyi ti o wọpọ julọ ninu akojọ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Da àrìnàkò ida ipilẹ nkan lati inu akojọ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Da iṣiro deede ti akojọ pada."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Da apapo gbogbo awọn nọmba inu akojọ pada."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "oniruru ipin"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Da àrìnàkò ida pada laarin 0.0 (ini afikun) ati 1.0 (iyasọtọ)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "oniruru abala lati %1 si %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Da àrìnàkò abala laarin awon opin pato meji pada, ini afikun."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "pa ju de"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "pa ju de si isalẹ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "pa ju de soke"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Pa oju nọmba de soke tabi si isalẹ."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://yo.wikipedia.org/wiki/Gb%C3%B2ngb%C3%B2_al%C3%A1gb%C3%A1ram%C3%A9j%C3%AC"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "patapata"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Ipilẹ onihamẹrin"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Da iye patapata ti nọmba kan pada."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Da e pada si agbara ti nọmba kan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Da lọgaridimu adayeba ti nọmba kan pada."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Da ipilẹ 10 lọgaridimu nọmba kan pada."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Da ilodisi ti nọmba kan pada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Da 10 pada si agbara nọmba kan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Da Ipilẹ onihamẹrin nọmba kan pada."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Da arccosine ti digiri pada."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Da arcsine ti digiri pada."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Da arctangent ti digiri pada."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Da cosine ti digiri pada (kii ṣe Radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Da sine ti digiri pada (kii ṣe Radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Da tangent ti digiri pada (kii ṣe Radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ṣe idasile awọ oniruuru..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ṣe idasile nọ́mbà oniruru..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ṣe idasile asopọ oniruru..."; +Blockly.Msg["NEW_VARIABLE"] = "Ṣe idasile oniruuru..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Orukọ oniruuru tuntun:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Iru oniruuru tuntun:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "gba alaye laaye"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "pẹlu:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ṣe ṣalaye-iṣẹ ti olumulo '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ṣe ṣalaye-iṣẹ ti olumulo '%1' kii o sii lo iṣagbejade rẹ."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "pẹlu:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ṣe idasile '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Ṣe apejuwe iṣẹ yii..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Ṣe awon alaye ni igba pupo."; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "sii"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ṣẹda iṣẹ kan lai si iṣagbejade."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "tun tẹ"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ṣẹda iṣẹ pẹlu iṣagbejade kan."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ikilo: Isẹ yii ni awọn ẹda odiwọn."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Ṣafihan iṣẹ isọtunmọ"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ti iye ba jẹ otitọ, lẹhinna da iye keji pada."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Ikilo: Bulọọki yii le ṣee lo nikan laarin itumọ iṣẹ kan"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "igbewọle orukọ:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ṣe afikun kan sii igbewọle si iṣẹ yii."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "igbewọle"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Fikun, yọ kuro, tabi tun beere awọn igbewọle si iṣẹ yii."; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "Tun ṣe"; +Blockly.Msg["REMOVE_COMMENT"] = "Yọ afikun ọrọ iwoye"; +Blockly.Msg["RENAME_VARIABLE"] = "Tun orukọ oniruuru kọ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tun orukọ gbogbo '%1' v oniruru kọ si:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "si %1 fikun ọrọ %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Ṣe afikun awon ọrọ oniruru '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "si alfabeti kekere"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "si Alfabeti Aarin"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "si ALFABETI NLA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "aa <-> AA"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "gba lẹta akọkọ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "gba lẹta # lati opin"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "gba lẹta #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "gba lẹta ti o kẹhin"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "gba lẹta àrìnàkò"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ninu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Da lẹta naa pada si ipo ti a ti sọ tẹlẹ."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "ka %1 ni %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Ka iye igba diẹ ninu awọn ọrọ kan waye laarin awọn ọrọ miiran."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ṣe afikun nkan si ọrọ naa."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "darapọ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Fikun, yọ kuro, tabi ṣe atunṣe awọn apakan lati se atunkọ ọrọ bulooku yii."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "si lẹta # lati opin"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "si lẹta #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "si lẹta kẹhin"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ninu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "gba substring lati lẹta akọkọ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "gba substring lati lẹta # lati opin"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "gba substring lati lẹta #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Da ipin kan pato ti ọrọ naa pada."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "wa isele akọkọ ti o wa ninu ọrọ"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "wa isele igbeyin ti o wa ninu ọrọ"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ninu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je isofo"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Da otitọ pada ti ọrọ ti a pese ba ṣofo."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ṣẹ ẹda ọrọ pẹlu"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ṣẹda ọrọ kan nipa ṣiṣepọ gbogbo awọn ohun kan."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "Gigun ti %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Da nọmba awọn lẹta pada (pẹlu awọn alafo) ninu ọrọ ti a pese."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "tẹ ọrọ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Tẹ ọrọ kan pato, nọmba tabi iye awon miiran."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Kiakia fun olumulo fun nọmba."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Kiakia fun olumulo fun awon ifiranṣẹ."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "kiakia fun nọmba pẹlu ifiranṣẹ"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "kiakia fun ọrọ pẹlu ifiranṣẹ"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "Ṣe iropọ %1 pelu %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ṣe iropo gbogbo awọn iṣẹlẹ ti o sele ninu awọn ọrọ laarin awọn ọrọ miiran."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "Ṣe iyipada %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Ṣe iyipada aṣẹ awọn ohun kikọ inu ọrọ naa."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Lẹta, ọrọ, tabi ila ọrọ."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ge awọn alafo lati awọn igun mejeji ti"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ge awọn alafo lati apa osi ti"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ge awọn alafo lati apa otun ti"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Da ẹda ti ọrọ naa pada pẹlu awọn alafo miiran ti o kuro lati ọkan tabi awọn opin mejeeji."; +Blockly.Msg["TODAY"] = "Loni"; +Blockly.Msg["UNDO"] = "Maa ṣe"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "nkan"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ṣe idasile 'ṣeto %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Da iye orisirisi yii pada."; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "ṣeto %1 sii %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Ṣe idasile 'gba %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ṣeto oniruru yii lati je bakanna sii igbasilẹ."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ fun iru miran: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sọ nkankan..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/yue.js b/blockly/msg/yue.js new file mode 100644 index 00000000000..b854d50cbe8 --- /dev/null +++ b/blockly/msg/yue.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh-yue.wikipedia.org/wiki/色"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh-yue.wikipedia.org/wiki/For_迴圈"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "取消"; +Blockly.Msg["DIALOG_OK"] = "仲可以"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "幫手"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "是但"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "復原"; +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "今日"; +Blockly.Msg["UNDO"] = "還原"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/zgh.js b/blockly/msg/zgh.js new file mode 100644 index 00000000000..4c01f059c28 --- /dev/null +++ b/blockly/msg/zgh.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ⵔⵏⵓ ⴰⵅⴼⴰⵡⴰⵍ"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ⵙⵏⴼⵍ ⴰⵣⴰⵍ:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ⴰⴽⵍⵓ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ⴰⴽⵍⵓ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ⴰⵙⵙⴰⵖ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ⵙⵎⵔⴽⵙ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "ⴰⵏⵉⵍⵉ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ⴰⵣⴳⵣⴰ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ⴰⵣⴳⴳⵯⴰⵖ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ⴽⵍⵓ ⵙ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ⴰⵣⴰⵍⵏ ⵉⴼⵓⴽⴽ ⴰⴷ ⵉⵍⵉⵏ ⴳⵔ 0 ⴷ 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ⵎⴽ ⴷ ⵓⵀⵓ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ⵉⵙ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ⵎⴽ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ⴳ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ⴰⵍⵙ %1 ⵜⵉⴽⴽⴰⵍ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ⴰⵍⵙ ⴰⵔⴷ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ⴰⵍⵙ ⴰⴷⴷⴰⴳ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ⴽⵓⴷ ⵉⴷⵜⵜⴰ ⵡⴰⵣⴰⵍ, ⵙⵙⵍⴽⵎ ⴽⵔⴰ ⵏ ⵡⴰⵏⴰⴹⵏ."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ ⵎⴰⵕⵕⴰ?"; +Blockly.Msg["DELETE_BLOCK"] = "ⴽⴽⵙ ⴰⴱⵍⵓⴽ"; +Blockly.Msg["DELETE_VARIABLE"] = "ⴽⴽⵙ ⴰⵎⵙⴽⵉⵍ '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ"; +Blockly.Msg["DIALOG_CANCEL"] = "ⵙⵔ"; +Blockly.Msg["DIALOG_OK"] = "ⵡⴰⵅⵅⴰ"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "ⵜⵉⵡⵉⵙⵉ"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ⴰⵎⵣⵡⴰⵔⵓ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# ⵙⴳ ⵜⵉⴳⵉⵔⴰ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ⴰⵎⴳⴳⴰⵔⵓ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ⵙⵉⵜⵜⵢ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ⴰⵔ #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ⴰⵔ ⵜⴳⵉⵔⴰ"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "ⴳ ⵜⵍⴳⴰⵎⵜ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "ⵜⵉⵖⵣⵉ ⵏ %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ⴰⵎ"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ⴰⵎⵓⵟⵟⵓⵏ"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ⴰⵔⵎⵉⴷⵉ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ⴰⵎⵉⴷⵉ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ⵓⵔ ⴷ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "ⵢⵓⵔⴰ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "ⴷ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ⵏⵖ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ⴰⵔⵎ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ⵎⴽ ⵓⵔ ⵉⴷⵜⵜⵉ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ⵎⴽ ⵉⴷⵜⵜⴰ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ⵙⴳ X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "ⵙⵏⴼⵍ %1 ⵙ %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "ⵔⵏⵓ ⵢⴰⵏ ⵓⵎⴹⴰⵏ ⵖⵔ ⵓⵎⵙⴽⵉⵍ '%1'"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ⴽⵔⴰ ⵏ ⵓⵎⴹⴰⵏ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ⵙⴽⵔ ⴰⴽⵍⵓ ⴰⵎⵙⴽⵉⵍ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ⵙⴽⵔ ⴰⵎⴹⴰⵏ ⴰⵎⵙⴽⵉⵍ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ⵙⴽⵔ ⴰⵎⵙⴽⵉⵍ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ ⴰⵎⴰⵢⵏⵓ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ⴰⵏⴰⵡ ⴰⵎⴰⵢⵏⵓ ⵏ ⵓⵎⵙⴽⵉⵍ:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ⵙ:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ⵙ:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ⴳ ⴽⵔⴰ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ⵉ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ⵔⵏⵓ ⴰⵏⴽⵛⴰⵎ ⵖⵔ ⵜⵙⵖⵏⵜ."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "ⴰⵍⵙ"; +Blockly.Msg["REMOVE_COMMENT"] = "ⴽⴽⵙ ⴰⵅⴼⴰⵡⴰⵍ"; +Blockly.Msg["RENAME_VARIABLE"] = "ⵙⵏⴼⵍ ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ⵙⵏⴼⵍ ⵉⵎⵙⴽⵉⵍⵏ ⴰⴽⴽ '%1' ⵖⵔ:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ⵍⴽⵎ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ⴰⵔ ⴰⵙⴽⴽⵉⵍ ⴰⵏⴳⴳⴰⵔⵓ"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ⴳ ⵓⴹⵕⵉⵚ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ⴳ ⵓⴹⵕⵉⵚ %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ⵙⵏⴼⵍⵓⵍ ⴰⴹⵕⵉⵚ ⵙ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "ⵜⵉⵖⵣⵉ ⵏ %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ⴰⵙⵙⴰ"; +Blockly.Msg["UNDO"] = "ⵙⵔ"; +Blockly.Msg["UNNAMED_KEY"] = "ⴰⵔⵉⵙⵎ"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ⴰⴼⵔⴷⵉⵙ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/zh-hans.js b/blockly/msg/zh-hans.js new file mode 100644 index 00000000000..2620af22a99 --- /dev/null +++ b/blockly/msg/zh-hans.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "添加注释"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "不能删除变量“%1”,因为它是函数“%2”定义的一部分"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "更改值:"; +Blockly.Msg["CLEAN_UP"] = "整理块"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "已收起的信息块内包含警告。"; +Blockly.Msg["COLLAPSE_ALL"] = "折叠块"; +Blockly.Msg["COLLAPSE_BLOCK"] = "折叠块"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "颜色1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "颜色2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "把两种颜色以一个给定的比例(0.0-1.0)进行混合。"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/颜色"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "从调色板中选择一种颜色。"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "随机颜色"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "随机选择一种颜色。"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "蓝色"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "绿色"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "红色"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "颜色"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "跳出循环"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "继续下一轮循环"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "跳出包含它的循环。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳过本轮循环的剩余部分,并继进行续下一轮循环。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:这个块只能在循环内使用。"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "遍历列表 %2 里的每一项 %1"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍历列表中的每一项,将变量“%1”设为所选项,并执行一些语句。"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "变量 %1 从 %2 数到 %3 每次增加 %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "用变量%1记录从开始数值到终止数值之间的数值,数值按指定间隔增加,并执行指定的块。"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "在这个if语句块中增加一个条件。"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "在这个if语句块中添加一个最终的,包括所有其余情况的条件。"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "增加、删除或重新排列各节来重新配置这个if语句块。"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否则"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否则如果"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "如果值为真,执行一些语句。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "如果值为真,则执行第一块语句。否则,则执行第二块语句。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For循环"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "执行"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重复 %1 次"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "多次执行一些语句。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重复直到条件满足"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "当条件满足时重复"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "只要值为假,就一直循环执行一些语句。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "只要值为真,就一直循环执行一些语句。"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "删除所有 %1 个块吗?"; +Blockly.Msg["DELETE_BLOCK"] = "删除块"; +Blockly.Msg["DELETE_VARIABLE"] = "删除变量“%1”"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "要删除对变量“%2”的%1个引用吗?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "删除 %1 个块"; +Blockly.Msg["DIALOG_CANCEL"] = "取消"; +Blockly.Msg["DIALOG_OK"] = "确认"; +Blockly.Msg["DISABLE_BLOCK"] = "禁用块"; +Blockly.Msg["DUPLICATE_BLOCK"] = "复制"; +Blockly.Msg["DUPLICATE_COMMENT"] = "复制注释"; +Blockly.Msg["ENABLE_BLOCK"] = "启用块"; +Blockly.Msg["EXPAND_ALL"] = "展开块"; +Blockly.Msg["EXPAND_BLOCK"] = "展开块"; +Blockly.Msg["EXTERNAL_INPUTS"] = "外部输入"; +Blockly.Msg["HELP"] = "帮助"; +Blockly.Msg["INLINE_INPUTS"] = "单行输入"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "创建空列表"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一个列表,长度为 0,不包含任何数据记录"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "列表"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "增加、删除或重新排列各部分以此重新配置这个列表块。"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "创建列表,内容:"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "将一个项添加到列表中。"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一个具有任意数量项目的列表。"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一项"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒数第#项"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得并移除"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最后一项"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "随机的一项"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "-"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回列表中的第一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在列表中的指定位置的项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回列表中的最后一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回列表中的随机一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除并返回列表中的第一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除并返回列表中的指定位置的项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除并返回列表中的最后一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除并返回列表中的随机一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除列表中的第一项"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在列表中的指定位置的项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除列表中的最后一项"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "删除列表中的随机一项。"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到倒数第#项"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到第#项"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到最后一项"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "获取子列表,从第一项"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "获取子列表,从倒数第#项"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "获取子列表,从第#项"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "-"; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "复制列表中指定的部分。"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1是最后一项。"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1是第一项。"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "寻找第一次出现的项"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "寻找最后一次出现的项"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。"; +Blockly.Msg["LISTS_INLIST"] = "在列表中"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1是空的"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果改列表为空,则返回真。"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1的长度"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回列表的长度。"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立列表使用项 %1 重复 %2 次"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立包含指定重复次数的值的列表。"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "倒转%1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "倒转一个列表,返回副本。"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "值为"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "插入在"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "设置"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "在列表的起始处添加该项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "在列表中指定位置插入项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "在列表的末尾处添加该项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "在列表的随机位置插入该项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "设置列表中的第一项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "设置在列表中指定位置的项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "设置列表中的最后一项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "设置列表中的随机一项。"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序"; +Blockly.Msg["LISTS_SORT_TITLE"] = "排序%1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序一个列表,返回副本。"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "按字母(忽略大小写)"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "按数字"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "按字母"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "从文本制作列表"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "将列表合并为文本"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "加入文本列表至一个文本,由分隔符分隔。"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "将文本按指定的分隔符拆分为文本组成的列表。"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "分隔符:"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果两个输入结果相等,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一个输入结果比第二个大,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一个输入结果大于或等于第二个输入结果,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一个输入结果比第二个小,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一个输入结果小于或等于第二个输入结果,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果两个输入结果不相等,则返回真。"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "非%1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果输入结果为假,则返回真;如果输入结果为真,则返回假。"; +Blockly.Msg["LOGIC_NULL"] = "空"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "并且"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "或"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果两个输入结果都为真,则返回真。"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少有一个输入结果为真,则返回真。"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "断言"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/条件运算符"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果为假"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果为真"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "检查“断言”里的条件语句。如果条件为真,则返回“如果为真”的值,否则,则返回“如果为假”的值。"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算术"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回两个数值的和。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回两个数值的商。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回两个数值的差。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回两个数值的乘积。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回以第一个数值为底数,以第二个数值为幂的结果。"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/反正切2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "点(x:%1,y:%2)的方位角"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "返回点(X,Y)的反正切值,范围为-180到180度。"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "将 %1 增加 %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "为变量“%1”增加一个数值。"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/数学常数"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一个常见常量:π (3.141…)、e (2.718…)、φ (1.618…)、根号2 (1.414…)、根号二分之一 (0.707…)或∞ (无穷大)。"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "将 %1 限制在 最低 %2 到最高 %3 之间"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "将一个数值限制在两个指定的数值范围(含边界)之间。"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除"; +Blockly.Msg["MATH_IS_EVEN"] = "是偶数"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "是负数"; +Blockly.Msg["MATH_IS_ODD"] = "是奇数"; +Blockly.Msg["MATH_IS_POSITIVE"] = "是正数"; +Blockly.Msg["MATH_IS_PRIME"] = "是质数"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "检查一个数值是否是偶数、奇数、质数、自然数、正数、负数或者是否能被某数整除。返回真或假。"; +Blockly.Msg["MATH_IS_WHOLE"] = "是整数"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除"; +Blockly.Msg["MATH_MODULO_TITLE"] = "取 %1 ÷ %2 的余数"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "返回这两个数字相除后的余数。"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/数"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一个数值。"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "列表平均值"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "列表最大值"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "列表中位数"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "列表最小值"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "列表中的众数"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "列表中的随机一项"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "列表的标准差"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "列表中数值的和"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回列表中的数值的平均值。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回列表中最大值。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回列表中数值的中位数。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回列表中最小值。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回列表中的出现次数最多的项的列表。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "从列表中返回一个随机的元素。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回列表的标准差。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回列表中的所有数值的和。"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "随机小数"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "返回一个从0.0(含)到1.0(不含)之间的随机数。"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "从 %1 到 %2 范围内的随机整数"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "返回一个限制在两个指定数值的范围(含边界)之间的随机整数。"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/数值修约"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四舍五入"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "向下舍入"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "向上舍入"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "数字向上或向下舍入。"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "绝对值"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "平方根"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回一个数值的绝对值。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回e的n次幂。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回一个数值的自然对数。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回一个数值的以10为底的对数。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回一个数值的相反数。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回10的n次幂。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回一个数的平方根。"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函数"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回一个数值的反余弦值。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回一个数值的反正弦值。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回一个数值的反正切值。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的余弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "创建颜色变量..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "创建数字变量..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "创建字符串变量..."; +Blockly.Msg["NEW_VARIABLE"] = "创建变量..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "新变量的名称:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新变量的类型:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "-"; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允许声明"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "与:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "运行用户定义的函数“%1”。"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "运行用户定义的函数“%1”,并使用它的输出值。"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "与:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "创建“%1”"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述该功能..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "-"; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做点什么"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "至"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "创建一个不带输出值的函数。"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "创建一个有输出值的函数。"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告:此函数具有重复参数。"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "突出显示函数定义"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值为真,则返回第二个值。"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:这个块只能在函数内部使用。"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "输入名称:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加函数输入。"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "输入"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、移除或重新排此函数的输入。"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "重做"; +Blockly.Msg["REMOVE_COMMENT"] = "删除注释"; +Blockly.Msg["RENAME_VARIABLE"] = "重命名变量..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "将所有“%1”变量重命名为:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "在%1之后加上文本%2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "将一些文本追加到变量“%1”里。"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "转为小写"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "转为首字母大写"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "转为大写"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "用不同的大小写模式复制并返回这段文字。"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "获取第一个字符"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "获取倒数第#个字符"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "获取第#个字符"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "获取最后一个字符"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "获取随机一个字符"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "-"; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文本%1 里 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位于指定位置的字符。"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "计算%1在%2里出现的次数"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "计算在一段文本中,某个部分文本重复出现了多少次。"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "将一个项添加到文本中。"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "拼接"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、移除或重新排列各节来重新配置这个文本块。"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到倒数第#个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到第#个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最后一个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "从文本"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "获取子串,从第一个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "获取子串,从倒数第#个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "获取子串,从第#个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "-"; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回文本中指定的一部分。"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "寻找第一次出现的文本"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "寻找最后一次出现的文本"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文本 %1 里 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "返回第一个文本段在第二个文本段中的第一/最后一个匹配项的起始位置。如果未找到,则返回%1。"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1是空的"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果给定的文本为空,则返回真。"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "创建文本,内容:"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通过串起任意数量的项以建立一段文本。"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1的长度"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回给定文本的字母数(包括空格)。"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "输出%1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "输出指定的文字、数字或其他值。"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "要求用户输入数字。"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "要求用户输入一些文本。"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "要求输入数字,并显示提示消息"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "要求输入文本,并显示提示消息"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "把%3中的%1替换为%2"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "在一段文本中,将出现过的某部分文本都替换掉。"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "倒转文本%1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "将文本中各个字符的顺序倒转。"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字符串"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一个字、词语或一行文本。"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除其两侧的空白"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除其左侧的空白"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除其右侧的空白"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "从某一端或同时从两端删除多余的空白,并返回这段文字的一个副本。"; +Blockly.Msg["TODAY"] = "今天"; +Blockly.Msg["UNDO"] = "撤销"; +Blockly.Msg["UNNAMED_KEY"] = "未命名"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "项目"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "创建“设定%1”"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此变量的值。"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "赋值 %1 为 %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "创建“获得%1”"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "设置此变量,以使它和输入值相等。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "名字叫“%1”的变量已经存在了。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "名字叫“%1”的变量已经有了另一个类型:“%2”。"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作区"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "说点什么..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/msg/zh-hant.js b/blockly/msg/zh-hant.js new file mode 100644 index 00000000000..1dfe3a00038 --- /dev/null +++ b/blockly/msg/zh-hant.js @@ -0,0 +1,452 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.Blockly.Msg[key] = messages[key]; + } + } +}(this, function() { +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "加入註解"; +Blockly.Msg["CALL_TEXT"] = "call"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "無法刪除變數「%1」,因為這是功能「%2」定義的一部份內容"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "修改值:"; +Blockly.Msg["CLEAN_UP"] = "整理區塊"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "收合含有警告的區塊。"; +Blockly.Msg["COLLAPSE_ALL"] = "收合區塊"; +Blockly.Msg["COLLAPSE_BLOCK"] = "收合區塊"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "顏色 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "顏色 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "用一個給定的比率(0.0-1.0)混合兩種顏色。"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/顏色"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "從調色板中選擇一種顏色。"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "隨機顏色"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "隨機選擇一種顏色。"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "藍"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "綠"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "紅"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "顏色"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "中斷循環"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "繼續下一個循環"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "中斷當前的循環。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳過這個循環的其餘步驟,並繼續下一次的循環。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:此區塊僅可用於循環內。"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "為列表 %2 裡的每一項 %1"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍歷每個清單中的項目,將變數「%1」設定到該項目中,然後執行某些陳述式。"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "循環計數 %1 從 %2 到 %3 每次增加 %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "從起始數到結尾數中取出變數「%1」的值,按指定的時間間隔,執行指定的區塊。"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "添加條件到「如果」積木。"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "加入一個最終、所有條件都執行的部份到「如果」區塊中。"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否則"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否則,如果"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "當值為 true 時,執行一些陳述式。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "當值為 true 時,執行第一個陳述式。否則,執行第二個陳述式。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一個值為 true,則執行第一個陳述式。否則,當第二個值為 true 時,則執行第二個陳述式。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一個值為 true,則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。如果前幾個敘述都不為 ture,則執行最後一個陳述式。"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For迴圈"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "執行"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重複%1次"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "重複執行指定的陳述式多次。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重複直到"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "重複,當"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "當值為 false 時,執行一些陳述式。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "當值為 true 時,執行一些陳述式。"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "刪除全部 %1 個區塊?"; +Blockly.Msg["DELETE_BLOCK"] = "刪除區塊"; +Blockly.Msg["DELETE_VARIABLE"] = "刪除變數「%1」"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "刪除使用%1次的「%2」變數?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "刪除%1個積木"; +Blockly.Msg["DIALOG_CANCEL"] = "取消"; +Blockly.Msg["DIALOG_OK"] = "確定"; +Blockly.Msg["DISABLE_BLOCK"] = "停用區塊"; +Blockly.Msg["DUPLICATE_BLOCK"] = "重複"; +Blockly.Msg["DUPLICATE_COMMENT"] = "複製註解"; +Blockly.Msg["ENABLE_BLOCK"] = "啟用積木"; +Blockly.Msg["EXPAND_ALL"] = "展開積木"; +Blockly.Msg["EXPAND_BLOCK"] = "展開區塊"; +Blockly.Msg["EXTERNAL_INPUTS"] = "外部輸入"; +Blockly.Msg["HELP"] = "說明"; +Blockly.Msg["INLINE_INPUTS"] = "單行輸入"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "建立空的清單"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "清單"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個清單區塊。"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "使用這些值建立清單"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "添加一個項目到清單裡。"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一個具備任意數量項目的清單。"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一筆"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒數第 # 筆"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得並移除"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最後一筆"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "隨機"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回清單中的第一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在清單中指定位置的項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回清單中的最後一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回清單中隨機一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除並返回清單中的第一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除並返回清單中的指定位置的項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除並返回清單中的最後一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除並返回清單中的隨機項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除清單中的第一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在清單中指定位置的項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除清單中的最後一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "移除清單中隨機一個項目。"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到 # 倒數"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到 #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到 最後面"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "取得子清單 從 最前面"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "取得子清單 從 # 倒數"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "取得子清單 從 #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "複製清單中指定的部分。"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 是最後一個項目。"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 是第一個項目。"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "從 最前面 索引項目"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "從 最後面 索引項目"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。"; +Blockly.Msg["LISTS_INLIST"] = "自清單"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 值為空"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果該清單為空,則返回 true。"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "長度 %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回清單的長度(項目數)。"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立清單使用項目 %1 重複 %2 次"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立一個清單,項目中包含指定重複次數的值。"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "反轉%1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "反轉清單的複製內容。"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "為"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "添加"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "設定"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "添加一個項目到清單中的第一個位置。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "添加一個項目到清單中的指定位置。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "添加一個項目到清單中的最後一個位置。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "添加一個項目到清單中的隨機位置。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "設定清單中的第一個項目。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "設定清單中指定位置的項目。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "設定清單中的最後一個項目。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "設定清單中隨機一個項目。"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序"; +Blockly.Msg["LISTS_SORT_TITLE"] = "排列 %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序清單的複製內容。"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "依字母排序,忽略大小寫"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "依數字"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "依字母"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "從文本製作清單"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "從清單拆出文本"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "串起清單項目成一個文本,並用分隔符號分開。"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "將文本變成清單項目,按分隔符號拆分。"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "用分隔符"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果這兩個輸入區塊的結果相等,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一個輸入結果大於第二個,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一個輸入結果大於或等於第二個,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一個輸入結果比第二個小,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一個輸入結果小於或等於第二個,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果這兩個輸入區塊的結果不相等,返回 true。"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 不成立"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果輸入結果是 false,則返回 true。如果輸入結果是 true,則返回 false。"; +Blockly.Msg["LOGIC_NULL"] = "空"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "和"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "或"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果兩個輸入結果都為 true,則返回 true。"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少一個輸入結果為 true,返回 true。"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "測試"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/條件運算符"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果為假"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果為真"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算術"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回兩個數字的總和。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回兩個數字的商。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回兩個數字的差。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回兩個數字的乘積。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回第二個數字的指數的第一個數字。"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 的 Atan2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "回傳點(X,Y)從 -180 至 180 度的反正切值。"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "修改 %1 自 %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "將數字加到變數「%1」。"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/數學常數"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "限制數字 %1 介於(低)%2 到(高)%3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "限制數字介於兩個指定的數字之間(包含)。"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除"; +Blockly.Msg["MATH_IS_EVEN"] = "是偶數"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "是負數"; +Blockly.Msg["MATH_IS_ODD"] = "是奇數"; +Blockly.Msg["MATH_IS_POSITIVE"] = "是正值"; +Blockly.Msg["MATH_IS_PRIME"] = "是質數"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。"; +Blockly.Msg["MATH_IS_WHOLE"] = "是整數"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 除以 %2 的餘數"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "回傳兩個數字相除的餘數。"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/數"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一個數字。"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "平均數 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "最大值 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "中位數 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "最小值 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "比較眾數 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "隨機抽取 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "標準差 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "數字總和 自清單"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回清單中數值的平均值(算術平均值)。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回清單項目中最大的數字。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回清單中數值的中位數。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回清單項目中最小的數字。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回一個清單中的最常見的項目。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "從清單中返回一個隨機的項目。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回清單中數字的標準差。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回清單中的所有數字的總和。"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "隨機取分數"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "在 0.0(包含)和 1.0(不包含)之間隨機取一個數。"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "隨機取數 %1 到 %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "在指定二個數之間隨機取一個數(包含)。"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/數值簡化"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四捨五入"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "無條件捨去"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "無條件進位"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "將數字無條件進位或無條件捨去。"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "絕對值"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "開根號"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回指定數字的絕對值。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回指定數字指數的e的冪次。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回指定數字的自然對數。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回指定數字的對數。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回指定數字的相反數。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回指定數字指數的10的冪次。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回指定數字的平方根。"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函數"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回指定角度的反餘弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回指定角度的反正弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回指定角度的反正切值。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的餘弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "建立顏色變數…"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "建立數值變數……"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "建立字串變數……"; +Blockly.Msg["NEW_VARIABLE"] = "建立變數…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "新變數名稱:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新變數類型:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允許陳述式"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "與:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "執行使用者定義的函式「%1」。"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "執行使用者定義的函式「%1」,並使用它的回傳值。"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "與:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "建立「%1」"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述此函式..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做些什麼"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "到"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "創建一個無回傳值的函式。"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "創建一個有回傳值的的函式。"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告: 此函式中有重複的參數。"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "反白顯示函式定義"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值為 true,則返回第二個值。"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:這個區塊只可以在定義函式時使用。"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "輸入名稱:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加一個輸入區塊到函式。"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "輸入"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、刪除或重新排列此函式的輸入。"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; // untranslated +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks related to the execution of the program."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; // untranslated +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks related to the setup of the program."; // untranslated +Blockly.Msg["REDO"] = "重做"; +Blockly.Msg["REMOVE_COMMENT"] = "移除註解"; +Blockly.Msg["RENAME_VARIABLE"] = "重新命名變數..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "將所有「%1」變數重新命名為:"; +Blockly.Msg["RETURN_TEXT"] = "return"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "至 %1 套用文字 %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "添加一些文字到變數「%1」之後。"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "轉成英文小寫"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "轉成英文首字大寫"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "轉成英文大寫"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "使用不同的大小寫複製這段文字。"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "取得 第一個字元"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "取得 倒數第 # 個字元"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "取得 字元 #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "取得 最後一個字元"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "取得 任意字元"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文字 %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位於指定位置的字元。"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "在%2計算%1"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "計算某些文字在內容裡的出現次數。"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "添加一個項目到字串中。"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "加入"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個文字區塊。"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到 倒數第 # 個字元"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到 字元 #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最後一個字元"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "在字串"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "取得 第一個字元"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "取得 倒數第 # 個字元"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "取得 字元 #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回指定的部分文字。"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "從 最前面 索引字串"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "從 最後面 索引字串"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文字 %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "在字串1中檢索是否有包含字串2,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 為空"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果提供的字串為空,則返回 true。"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "字串組合"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通過連接任意數量的項目來建立一串文字。"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "長度 %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回這串文字的字元數(包含空格)。"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "輸出 %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "輸出指定的文字、 數字或其他值。"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "輸入數字"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "輸入文字"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "輸入 數字 並顯示提示訊息"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "輸入 文字 並顯示提示訊息"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "在%3以%2取代%1"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "取代在內容裡的全部某些文字。"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "反轉%1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "反轉排序在文字裡的字元。"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字串"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一個字元、一個單詞,或一串文字。"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除兩側空格"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除左側空格"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除右側空格"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "複製這段文字,同時刪除兩端多餘的空格。"; +Blockly.Msg["TODAY"] = "今天"; +Blockly.Msg["UNDO"] = "還原"; +Blockly.Msg["UNNAMED_KEY"] = "未命名"; +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Returns the value of a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Calls a method from current variable."; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "項目"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "建立「賦值 %1」"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此變數的值。"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; // untranslated +Blockly.Msg["VARIABLES_SET"] = "賦值 %1 成 %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "建立「取得 %1」"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "設定此變數,好和輸入結果相等。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "已存在變數「%1」。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "已存在名為「%1」,且用於其它類型「%2」的變數。"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作區"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "來說些事情..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +return Blockly.Msg; +})); diff --git a/blockly/node.js b/blockly/node.js new file mode 100644 index 00000000000..8a580a86112 --- /dev/null +++ b/blockly/node.js @@ -0,0 +1,21 @@ +/* eslint-disable */ +(function (Blockly, En, BlocklyBlocks, BlocklyJS, BlocklyPython, BlocklyPHP, BlocklyLua, BlocklyDart){ +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blockly module for Node. It includes Blockly core, + * built-in blocks, all the generators and the English locale. + */ + +/* eslint-disable */ +'use strict'; + +// Include the EN Locale by default. +Blockly.setLocale(En); + +module.exports = Blockly; +})(require('./core'), require('./msg/en'), require('./blocks'), require('./javascript'), require('./python'), require('./php'), require('./lua'), require('./dart')); diff --git a/blockly/package.json b/blockly/package.json new file mode 100644 index 00000000000..22b31aa62e1 --- /dev/null +++ b/blockly/package.json @@ -0,0 +1,68 @@ +{ + "name": "blockly", + "version": "8.0.5", + "description": "Blockly is a library for building visual programming editors.", + "keywords": [ + "blockly" + ], + "repository": { + "type": "git", + "url": "https://github.com/NTU-AI/ntu-blockly.git" + }, + "bugs": { + "url": "https://github.com/NTU-AI/ntu-blockly/issues" + }, + "homepage": "https://developers.google.com/blockly/", + "author": { + "name": "Neil Fraser" + }, + "main": "./index.js", + "umd": "./blockly.min.js", + "unpkg": "./blockly.min.js", + "types": "./index.d.ts", + "browser": { + "./node.js": "./browser.js", + "./core.js": "./core-browser.js", + "./blockly-node.js": "./blockly.js" + }, + "license": "Apache-2.0", + "devDependencies": { + "@blockly/block-test": "^2.0.1", + "@blockly/dev-tools": "^3.0.1", + "@blockly/theme-modern": "^2.1.1", + "@hyperjump/json-schema": "^0.18.4", + "@wdio/selenium-standalone-service": "^7.10.1", + "chai": "^4.2.0", + "clang-format": "^1.6.0", + "closure-calculate-chunks": "^3.0.2", + "concurrently": "^7.0.0", + "eslint": "^8.4.1", + "eslint-config-google": "^0.14.0", + "google-closure-compiler": "^20220301.0.0", + "google-closure-deps": "^20220202.0.0", + "gulp": "^4.0.2", + "gulp-clang-format": "^1.0.27", + "gulp-concat": "^2.6.1", + "gulp-insert": "^0.5.0", + "gulp-rename": "^2.0.0", + "gulp-replace": "^1.0.0", + "gulp-series": "^1.0.2", + "gulp-shell": "^0.8.0", + "gulp-sourcemaps": "^3.0.0", + "gulp-umd": "^2.0.0", + "http-server": "^14.0.0", + "js-green-licenses": "^3.0.0", + "json5": "^2.2.0", + "mocha": "^9.1.1", + "readline-sync": "^1.4.10", + "rimraf": "^3.0.2", + "selenium-standalone": "^8.0.3", + "through2": "^4.0.2", + "typescript": "^4.3.2", + "webdriverio": "^7.0.3", + "yargs": "^17.2.1" + }, + "dependencies": { + "jsdom": "15.2.1" + } +} \ No newline at end of file diff --git a/blockly/php.d.ts b/blockly/php.d.ts new file mode 100644 index 00000000000..b8f3508081e --- /dev/null +++ b/blockly/php.d.ts @@ -0,0 +1,16 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Type definitions for the PHP generator. + * @author samelh@google.com (Sam El-Husseini) + */ + +/// + +import * as Blockly from './core'; +declare const php: any; +export = php; diff --git a/blockly/php.js b/blockly/php.js new file mode 100644 index 00000000000..5c479cdc3ac --- /dev/null +++ b/blockly/php.js @@ -0,0 +1,22 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define(['./core', './php_compressed.js'], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(require('./core'), require('./php_compressed.js')); + } else { // Browser + root.BlocklyPHP = factory(root.Blockly, root.BlocklyPHP); + } +}(this, function(Blockly, BlocklyPHP) { +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview PHP generator module; just a wrapper for php_compressed.js. + */ + +return BlocklyPHP; +})); diff --git a/blockly/php_compressed.js b/blockly/php_compressed.js new file mode 100644 index 00000000000..f8c0253fa44 --- /dev/null +++ b/blockly/php_compressed.js @@ -0,0 +1,126 @@ +// Do not edit this file; automatically generated. + +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define(["./blockly_compressed.js"], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(require("./blockly_compressed.js")); + } else { // Browser + var factoryExports = factory(root.Blockly); + root.Blockly.PHP = factoryExports; + } +}(this, function(__parent__) { +var $=__parent__.__namespace__; +/* + + Copyright 2015 Google LLC + SPDX-License-Identifier: Apache-2.0 +*/ +var module$contents$Blockly$PHP_PHP=new $.module$exports$Blockly$Generator.Generator("PHP");module$contents$Blockly$PHP_PHP.addReservedWords("__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,clone,const,continue,declare,default,die,do,echo,else,elseif,empty,enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,final,for,foreach,function,global,goto,if,implements,include,include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,print,private,protected,public,require,require_once,return,static,switch,throw,trait,try,unset,use,var,while,xor,PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,PHP_SYSCONFDIR,PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,PHP_CONFIG_FILE_SCAN_DIR,PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,E_NOTICE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE,E_DEPRECATED,E_USER_DEPRECATED,E_ALL,E_STRICT,__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,__FILE__,__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__"); +module$contents$Blockly$PHP_PHP.ORDER_ATOMIC=0;module$contents$Blockly$PHP_PHP.ORDER_CLONE=1;module$contents$Blockly$PHP_PHP.ORDER_NEW=1;module$contents$Blockly$PHP_PHP.ORDER_MEMBER=2.1;module$contents$Blockly$PHP_PHP.ORDER_FUNCTION_CALL=2.2;module$contents$Blockly$PHP_PHP.ORDER_POWER=3;module$contents$Blockly$PHP_PHP.ORDER_INCREMENT=4;module$contents$Blockly$PHP_PHP.ORDER_DECREMENT=4;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_NOT=4;module$contents$Blockly$PHP_PHP.ORDER_CAST=4; +module$contents$Blockly$PHP_PHP.ORDER_SUPPRESS_ERROR=4;module$contents$Blockly$PHP_PHP.ORDER_INSTANCEOF=5;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT=6;module$contents$Blockly$PHP_PHP.ORDER_UNARY_PLUS=7.1;module$contents$Blockly$PHP_PHP.ORDER_UNARY_NEGATION=7.2;module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION=8.1;module$contents$Blockly$PHP_PHP.ORDER_DIVISION=8.2;module$contents$Blockly$PHP_PHP.ORDER_MODULUS=8.3;module$contents$Blockly$PHP_PHP.ORDER_ADDITION=9.1; +module$contents$Blockly$PHP_PHP.ORDER_SUBTRACTION=9.2;module$contents$Blockly$PHP_PHP.ORDER_STRING_CONCAT=9.3;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_SHIFT=10;module$contents$Blockly$PHP_PHP.ORDER_RELATIONAL=11;module$contents$Blockly$PHP_PHP.ORDER_EQUALITY=12;module$contents$Blockly$PHP_PHP.ORDER_REFERENCE=13;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_AND=13;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_XOR=14;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_OR=15; +module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND=16;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR=17;module$contents$Blockly$PHP_PHP.ORDER_IF_NULL=18;module$contents$Blockly$PHP_PHP.ORDER_CONDITIONAL=19;module$contents$Blockly$PHP_PHP.ORDER_ASSIGNMENT=20;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND_WEAK=21;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_XOR=22;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR_WEAK=23;module$contents$Blockly$PHP_PHP.ORDER_NONE=99; +module$contents$Blockly$PHP_PHP.ORDER_OVERRIDES=[[module$contents$Blockly$PHP_PHP.ORDER_MEMBER,module$contents$Blockly$PHP_PHP.ORDER_FUNCTION_CALL],[module$contents$Blockly$PHP_PHP.ORDER_MEMBER,module$contents$Blockly$PHP_PHP.ORDER_MEMBER],[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT],[module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION,module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION],[module$contents$Blockly$PHP_PHP.ORDER_ADDITION,module$contents$Blockly$PHP_PHP.ORDER_ADDITION], +[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND],[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR]];module$contents$Blockly$PHP_PHP.isInitialized=!1; +module$contents$Blockly$PHP_PHP.init=function(a){Object.getPrototypeOf(this).init.call(this);this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$exports$Blockly$Names.Names(this.RESERVED_WORDS_,"$");this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);this.isInitialized=!0}; +module$contents$Blockly$PHP_PHP.finish=function(a){var b=(0,$.module$exports$Blockly$utils$object.values)(this.definitions_);a=Object.getPrototypeOf(this).finish.call(this,a);this.isInitialized=!1;this.nameDB_.reset();return b.join("\n\n")+"\n\n\n"+a};module$contents$Blockly$PHP_PHP.scrubNakedValue=function(a){return a+";\n"};module$contents$Blockly$PHP_PHP.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"}; +module$contents$Blockly$PHP_PHP.multiline_quote_=function(a){return a.split(/\n/g).map(this.quote_).join(' . "\\n" .\n')}; +module$contents$Blockly$PHP_PHP.scrub_=function(a,b,c){var d="";if(!a.outputConnection||!a.outputConnection.targetConnection){var e=a.getCommentText();e&&(e=(0,$.module$exports$Blockly$utils$string.wrap)(e,this.COMMENT_WRAP-3),d+=this.prefixLines(e,"// ")+"\n");for(var f=0;fc?h=g=this.ORDER_SUBTRACTION:d&&(h=g=this.ORDER_UNARY_NEGATION);a=this.valueToCode(a,b,g)||f;(0,$.module$exports$Blockly$utils$string.isNumber)(a)?(a=Number(a)+c,d&&(a=-a)):(0c&&(a=a+" - "+-c),d&&(a=c?"-("+a+")":"-"+a),h=Math.floor(h),e=Math.floor(e),h&&e>=h&& +(a="("+a+")"));return a};$.Blockly.PHP=module$contents$Blockly$PHP_PHP;var module$exports$Blockly$PHP$variables={};$.Blockly.PHP.variables_get=function(a){return[$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.variables_set=function(a){var b=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0";return $.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" = "+b+";\n"};/* + + Copyright 2018 Google LLC + SPDX-License-Identifier: Apache-2.0 +*/ +var module$exports$Blockly$PHP$variablesDynamic={};$.Blockly.PHP.variables_get_dynamic=$.Blockly.PHP.variables_get;$.Blockly.PHP.variables_set_dynamic=$.Blockly.PHP.variables_set;var module$exports$Blockly$PHP$texts={};$.Blockly.PHP.text=function(a){return[$.Blockly.PHP.quote_(a.getFieldValue("TEXT")),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.text_multiline=function(a){a=$.Blockly.PHP.multiline_quote_(a.getFieldValue("TEXT"));var b=-1!==a.indexOf(".")?$.Blockly.PHP.ORDER_STRING_CONCAT:$.Blockly.PHP.ORDER_ATOMIC;return[a,b]}; +$.Blockly.PHP.text_join=function(a){if(0===a.itemCount_)return["''",$.Blockly.PHP.ORDER_ATOMIC];if(1===a.itemCount_)return[$.Blockly.PHP.valueToCode(a,"ADD0",$.Blockly.PHP.ORDER_NONE)||"''",$.Blockly.PHP.ORDER_NONE];if(2===a.itemCount_){var b=$.Blockly.PHP.valueToCode(a,"ADD0",$.Blockly.PHP.ORDER_STRING_CONCAT)||"''";a=$.Blockly.PHP.valueToCode(a,"ADD1",$.Blockly.PHP.ORDER_STRING_CONCAT)||"''";return[b+" . "+a,$.Blockly.PHP.ORDER_STRING_CONCAT]}b=Array(a.itemCount_);for(var c=0;c 0",$.Blockly.PHP.ORDER_RELATIONAL,$.Blockly.PHP.ORDER_RELATIONAL],NEGATIVE:[""," < 0",$.Blockly.PHP.ORDER_RELATIONAL,$.Blockly.PHP.ORDER_RELATIONAL],DIVISIBLE_BY:[null,null,$.Blockly.PHP.ORDER_MODULUS, +$.Blockly.PHP.ORDER_EQUALITY],PRIME:[null,null,$.Blockly.PHP.ORDER_NONE,$.Blockly.PHP.ORDER_FUNCTION_CALL]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value,f=b.next().value;b=b.next().value;f=$.Blockly.PHP.valueToCode(a,"NUMBER_TO_CHECK",f)||"0";if("PRIME"===c)a=$.Blockly.PHP.provideFunction_("math_isPrime","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if ($n == 2 || $n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for ($x = 6; $x <= sqrt($n) + 1; $x += 6) {\n if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) {\n return false;\n }\n }\n return true;\n}\n")+ +"("+f+")";else if("DIVISIBLE_BY"===c){a=$.Blockly.PHP.valueToCode(a,"DIVISOR",$.Blockly.PHP.ORDER_MODULUS)||"0";if("0"===a)return["false",$.Blockly.PHP.ORDER_ATOMIC];a=f+" % "+a+" == 0"}else a=d+f+e;return[a,b]};$.Blockly.PHP.math_change=function(a){var b=$.Blockly.PHP.valueToCode(a,"DELTA",$.Blockly.PHP.ORDER_ADDITION)||"0";return $.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" += "+b+";\n"};$.Blockly.PHP.math_round=$.Blockly.PHP.math_single; +$.Blockly.PHP.math_trig=$.Blockly.PHP.math_single; +$.Blockly.PHP.math_on_list=function(a){var b=a.getFieldValue("OP");switch(b){case "SUM":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="array_sum("+a+")";break;case "MIN":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="min("+a+")";break;case "MAX":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="max("+a+")";break;case "AVERAGE":b=$.Blockly.PHP.provideFunction_("math_mean","\nfunction "+ +$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($myList) {\n return array_sum($myList) / count($myList);\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"array()";a=b+"("+a+")";break;case "MEDIAN":b=$.Blockly.PHP.provideFunction_("math_median","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($arr) {\n sort($arr,SORT_NUMERIC);\n return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] :\n ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2;\n}\n"); +a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MODE":b=$.Blockly.PHP.provideFunction_("math_modes","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($values) {\n if (empty($values)) return array();\n $counts = array_count_values($values);\n arsort($counts); // Sort counts in descending order\n $modes = array_keys($counts, current($counts), true);\n return $modes;\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]"; +a=b+"("+a+")";break;case "STD_DEV":b=$.Blockly.PHP.provideFunction_("math_standard_deviation","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($numbers) {\n $n = count($numbers);\n if (!$n) return null;\n $mean = array_sum($numbers) / count($numbers);\n foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2);\n return sqrt(array_sum($devs) / (count($devs) - 1));\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "RANDOM":b= +$.Blockly.PHP.provideFunction_("math_random_list","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($list) {\n $x = rand(0, count($list)-1);\n return $list[$x];\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;default:throw Error("Unknown operator: "+b);}return[a,$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.math_modulo=function(a){var b=$.Blockly.PHP.valueToCode(a,"DIVIDEND",$.Blockly.PHP.ORDER_MODULUS)||"0";a=$.Blockly.PHP.valueToCode(a,"DIVISOR",$.Blockly.PHP.ORDER_MODULUS)||"0";return[b+" % "+a,$.Blockly.PHP.ORDER_MODULUS]}; +$.Blockly.PHP.math_constrain=function(a){var b=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"0",c=$.Blockly.PHP.valueToCode(a,"LOW",$.Blockly.PHP.ORDER_NONE)||"0";a=$.Blockly.PHP.valueToCode(a,"HIGH",$.Blockly.PHP.ORDER_NONE)||"Infinity";return["min(max("+b+", "+c+"), "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.math_random_int=function(a){var b=$.Blockly.PHP.valueToCode(a,"FROM",$.Blockly.PHP.ORDER_NONE)||"0";a=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_NONE)||"0";return[$.Blockly.PHP.provideFunction_("math_random_int","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($a, $b) {\n if ($a > $b) {\n return rand($b, $a);\n }\n return rand($a, $b);\n}\n")+"("+b+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.math_random_float=function(a){return["(float)rand()/(float)getrandmax()",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.math_atan2=function(a){var b=$.Blockly.PHP.valueToCode(a,"X",$.Blockly.PHP.ORDER_NONE)||"0";return["atan2("+($.Blockly.PHP.valueToCode(a,"Y",$.Blockly.PHP.ORDER_NONE)||"0")+", "+b+") / pi() * 180",$.Blockly.PHP.ORDER_DIVISION]};var module$exports$Blockly$PHP$loops={}; +$.Blockly.PHP.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(Number(a.getFieldValue("TIMES"))):$.Blockly.PHP.valueToCode(a,"TIMES",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0";var c=$.Blockly.PHP.statementToCode(a,"DO");c=$.Blockly.PHP.addLoopTrap(c,a);a="";var d=$.Blockly.PHP.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE),e=b;b.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(b)||(e=$.Blockly.PHP.nameDB_.getDistinctName("repeat_end",$.module$exports$Blockly$Names.NameType.VARIABLE), +a+=e+" = "+b+";\n");return a+("for ("+d+" = 0; "+d+" < "+e+"; "+d+"++) {\n"+c+"}\n")};$.Blockly.PHP.controls_repeat=$.Blockly.PHP.controls_repeat_ext;$.Blockly.PHP.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.PHP.valueToCode(a,"BOOL",b?$.Blockly.PHP.ORDER_LOGICAL_NOT:$.Blockly.PHP.ORDER_NONE)||"false",d=$.Blockly.PHP.statementToCode(a,"DO");d=$.Blockly.PHP.addLoopTrap(d,a);b&&(c="!"+c);return"while ("+c+") {\n"+d+"}\n"}; +$.Blockly.PHP.controls_for=function(a){var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.PHP.valueToCode(a,"FROM",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0",d=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0",e=$.Blockly.PHP.valueToCode(a,"BY",$.Blockly.PHP.ORDER_ASSIGNMENT)||"1",f=$.Blockly.PHP.statementToCode(a,"DO");f=$.Blockly.PHP.addLoopTrap(f,a);if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&&(0,$.module$exports$Blockly$utils$string.isNumber)(d)&& +(0,$.module$exports$Blockly$utils$string.isNumber)(e)){var g=Number(c)<=Number(d);a="for ("+b+" = "+c+"; "+b+(g?" <= ":" >= ")+d+"; "+b;b=Math.abs(Number(e));a=(1===b?a+(g?"++":"--"):a+((g?" += ":" -= ")+b))+(") {\n"+f+"}\n")}else a="",g=c,c.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(c)||(g=$.Blockly.PHP.nameDB_.getDistinctName(b+"_start",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=g+" = "+c+";\n"),c=d,d.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(d)|| +(c=$.Blockly.PHP.nameDB_.getDistinctName(b+"_end",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=c+" = "+d+";\n"),d=$.Blockly.PHP.nameDB_.getDistinctName(b+"_inc",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=d+" = ",a=(0,$.module$exports$Blockly$utils$string.isNumber)(e)?a+(Math.abs(e)+";\n"):a+("abs("+e+");\n"),a=a+("if ("+g+" > "+c+") {\n")+($.Blockly.PHP.INDENT+d+" = -"+d+";\n"),a+="}\n",a+="for ("+b+" = "+g+"; "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+"; "+b+" += "+d+") {\n"+f+ +"}\n";return a};$.Blockly.PHP.controls_forEach=function(a){var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_ASSIGNMENT)||"[]",d=$.Blockly.PHP.statementToCode(a,"DO");d=$.Blockly.PHP.addLoopTrap(d,a);return"foreach ("+c+" as "+b+") {\n"+d+"}\n"}; +$.Blockly.PHP.controls_flow_statements=function(a){var b="";$.Blockly.PHP.STATEMENT_PREFIX&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,a));$.Blockly.PHP.STATEMENT_SUFFIX&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a));if($.Blockly.PHP.STATEMENT_PREFIX){var c=a.getSurroundLoop();c&&!c.suppressPrefixSuffix&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,c))}switch(a.getFieldValue("FLOW")){case "BREAK":return b+"break;\n";case "CONTINUE":return b+"continue;\n"}throw Error("Unknown flow statement."); +};var module$exports$Blockly$PHP$logic={}; +$.Blockly.PHP.controls_if=function(a){var b=0,c="";$.Blockly.PHP.STATEMENT_PREFIX&&(c+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,a));do{var d=$.Blockly.PHP.valueToCode(a,"IF"+b,$.Blockly.PHP.ORDER_NONE)||"false";var e=$.Blockly.PHP.statementToCode(a,"DO"+b);$.Blockly.PHP.STATEMENT_SUFFIX&&(e=$.Blockly.PHP.prefixLines($.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a),$.Blockly.PHP.INDENT)+e);c+=(0",GTE:">="}[a.getFieldValue("OP")],c="=="===b||"!="===b?$.Blockly.PHP.ORDER_EQUALITY:$.Blockly.PHP.ORDER_RELATIONAL,d=$.Blockly.PHP.valueToCode(a,"A",c)||"0";a=$.Blockly.PHP.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; +$.Blockly.PHP.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"&&":"||",c="&&"===b?$.Blockly.PHP.ORDER_LOGICAL_AND:$.Blockly.PHP.ORDER_LOGICAL_OR,d=$.Blockly.PHP.valueToCode(a,"A",c);a=$.Blockly.PHP.valueToCode(a,"B",c);if(d||a){var e="&&"===b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]};$.Blockly.PHP.logic_negate=function(a){var b=$.Blockly.PHP.ORDER_LOGICAL_NOT;return["!"+($.Blockly.PHP.valueToCode(a,"BOOL",b)||"true"),b]}; +$.Blockly.PHP.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"true":"false",$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.logic_null=function(a){return["null",$.Blockly.PHP.ORDER_ATOMIC]}; +$.Blockly.PHP.logic_ternary=function(a){var b=$.Blockly.PHP.valueToCode(a,"IF",$.Blockly.PHP.ORDER_CONDITIONAL)||"false",c=$.Blockly.PHP.valueToCode(a,"THEN",$.Blockly.PHP.ORDER_CONDITIONAL)||"null";a=$.Blockly.PHP.valueToCode(a,"ELSE",$.Blockly.PHP.ORDER_CONDITIONAL)||"null";return[b+" ? "+c+" : "+a,$.Blockly.PHP.ORDER_CONDITIONAL]};var module$exports$Blockly$PHP$lists={};$.Blockly.PHP.lists_create_empty=function(a){return["array()",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c 'strnatcasecmp',\n 'TEXT' => 'strcmp',\n 'IGNORE_CASE' => 'strcasecmp'\n );\n $sortCmp = $sortCmpFuncs[$type];\n $list2 = $list;\n usort($list2, $sortCmp);\n if ($direction == -1) {\n $list2 = array_reverse($list2);\n }\n return $list2;\n}\n")+"("+ +b+', "'+a+'", '+c+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.lists_split=function(a){var b=$.Blockly.PHP.valueToCode(a,"INPUT",$.Blockly.PHP.ORDER_NONE),c=$.Blockly.PHP.valueToCode(a,"DELIM",$.Blockly.PHP.ORDER_NONE)||"''";a=a.getFieldValue("MODE");if("SPLIT"===a)b||(b="''"),a="explode";else if("JOIN"===a)b||(b="array()"),a="implode";else throw Error("Unknown mode: "+a);return[a+"("+c+", "+b+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.lists_reverse=function(a){return["array_reverse("+($.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$colour={};$.Blockly.PHP.colour_picker=function(a){return[$.Blockly.PHP.quote_(a.getFieldValue("COLOUR")),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.colour_random=function(a){return[$.Blockly.PHP.provideFunction_("colour_random","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"() {\n return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);\n}\n")+"()",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.colour_rgb=function(a){var b=$.Blockly.PHP.valueToCode(a,"RED",$.Blockly.PHP.ORDER_NONE)||0,c=$.Blockly.PHP.valueToCode(a,"GREEN",$.Blockly.PHP.ORDER_NONE)||0;a=$.Blockly.PHP.valueToCode(a,"BLUE",$.Blockly.PHP.ORDER_NONE)||0;return[$.Blockly.PHP.provideFunction_("colour_rgb","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($r, $g, $b) {\n $r = round(max(min($r, 100), 0) * 2.55);\n $g = round(max(min($g, 100), 0) * 2.55);\n $b = round(max(min($b, 100), 0) * 2.55);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n")+ +"("+b+", "+c+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.colour_blend=function(a){var b=$.Blockly.PHP.valueToCode(a,"COLOUR1",$.Blockly.PHP.ORDER_NONE)||"'#000000'",c=$.Blockly.PHP.valueToCode(a,"COLOUR2",$.Blockly.PHP.ORDER_NONE)||"'#000000'";a=$.Blockly.PHP.valueToCode(a,"RATIO",$.Blockly.PHP.ORDER_NONE)||.5;return[$.Blockly.PHP.provideFunction_("colour_blend","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($c1, $c2, $ratio) {\n $ratio = max(min($ratio, 1), 0);\n $r1 = hexdec(substr($c1, 1, 2));\n $g1 = hexdec(substr($c1, 3, 2));\n $b1 = hexdec(substr($c1, 5, 2));\n $r2 = hexdec(substr($c2, 1, 2));\n $g2 = hexdec(substr($c2, 3, 2));\n $b2 = hexdec(substr($c2, 5, 2));\n $r = round($r1 * (1 - $ratio) + $r2 * $ratio);\n $g = round($g1 * (1 - $ratio) + $g2 * $ratio);\n $b = round($b1 * (1 - $ratio) + $b2 * $ratio);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n")+"("+ +b+", "+c+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};/* + + Copyright 2021 Google LLC + SPDX-License-Identifier: Apache-2.0 +*/ +var module$exports$Blockly$PHP$all={}; +$.Blockly.PHP.__namespace__=$; +return $.Blockly.PHP; +})); + + +//# sourceMappingURL=php_compressed.js.map diff --git a/blockly/php_compressed.js.map b/blockly/php_compressed.js.map new file mode 100644 index 00000000000..0f49b486bd9 --- /dev/null +++ b/blockly/php_compressed.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["generators/php.js","generators/php/variables.js","generators/php/variables_dynamic.js","generators/php/text.js","generators/php/procedures.js","generators/php/math.js","generators/php/loops.js","generators/php/logic.js","generators/php/lists.js","generators/php/colour.js","generators/php/all.js"],"names":["PHP","Generator","addReservedWords","ORDER_ATOMIC","ORDER_CLONE","ORDER_NEW","ORDER_MEMBER","ORDER_FUNCTION_CALL","ORDER_POWER","ORDER_INCREMENT","ORDER_DECREMENT","ORDER_BITWISE_NOT","ORDER_CAST","ORDER_SUPPRESS_ERROR","ORDER_INSTANCEOF","ORDER_LOGICAL_NOT","ORDER_UNARY_PLUS","ORDER_UNARY_NEGATION","ORDER_MULTIPLICATION","ORDER_DIVISION","ORDER_MODULUS","ORDER_ADDITION","ORDER_SUBTRACTION","ORDER_STRING_CONCAT","ORDER_BITWISE_SHIFT","ORDER_RELATIONAL","ORDER_EQUALITY","ORDER_REFERENCE","ORDER_BITWISE_AND","ORDER_BITWISE_XOR","ORDER_BITWISE_OR","ORDER_LOGICAL_AND","ORDER_LOGICAL_OR","ORDER_IF_NULL","ORDER_CONDITIONAL","ORDER_ASSIGNMENT","ORDER_LOGICAL_AND_WEAK","ORDER_LOGICAL_XOR","ORDER_LOGICAL_OR_WEAK","ORDER_NONE","ORDER_OVERRIDES","isInitialized","init","PHP.init","workspace","Object","getPrototypeOf","call","nameDB_","reset","Names","RESERVED_WORDS_","setVariableMap","getVariableMap","populateVariables","populateProcedures","finish","PHP.finish","code","definitions","objectUtils","values","definitions_","join","scrubNakedValue","PHP.scrubNakedValue","line","quote_","PHP.quote_","string","replace","multiline_quote_","PHP.multiline_quote_","split","map","lines","scrub_","PHP.scrub_","block","opt_thisOnly","commentCode","outputConnection","targetConnection","comment","getCommentText","stringUtils","wrap","COMMENT_WRAP","prefixLines","i","inputList","length","type","inputTypes","VALUE","childBlock","connection","targetBlock","allNestedComments","nextBlock","nextConnection","nextCode","blockToCode","getAdjusted","PHP.getAdjusted","atId","opt_delta","opt_negate","opt_order","delta","order","options","oneBasedIndex","defaultAtIndex","outerOrder","innerOrder","at","valueToCode","isNumber","Number","Math","floor","exports","getName","getFieldValue","NameType","VARIABLE","argument0","varName","indexOf","itemCount_","element0","element1","elements","Array","value","functionName","provideFunction_","FUNCTION_NAME_PLACEHOLDER_","text","operator","substring","errorIndex","indexAdjustment","where","Error","where1","where2","at1","at2","OPERATORS","getField","msg","sub","from","to","globals","usedVariables","Variables","allUsedVarModels","variable","name","getVars","push","devVarList","allDeveloperVariables","DEVELOPER_VARIABLE","globalStr","INDENT","funcName","PROCEDURE","xfix1","STATEMENT_PREFIX","injectId","STATEMENT_SUFFIX","loopTrap","INFINITE_LOOP_TRAP","branch","statementToCode","returnValue","xfix2","args","variables","tuple","hasReturnValue_","Infinity","argument1","arg","CONSTANTS","PROPERTIES","dropdownProperty","prefix","suffix","inputOrder","outputOrder","numberToCheck","divisor","func","list","argument2","repeats","String","addLoopTrap","loopVar","getDistinctName","endVar","match","until","variable0","increment","up","step","abs","startVar","incVar","xfix","loop","getSurroundLoop","suppressPrefixSuffix","n","conditionCode","branchCode","getInput","defaultArgument","value_if","value_then","value_else","element","repeatCount","mode","cachedList","listVar","xVar","listCode","direction","value_input","value_delim","red","green","blue","c1","c2","ratio"],"mappings":"A;;;;;;;;;;;;;;;;;;;AA4BA,IAAMA,gCAAM,IAAIC,CAAAA,CAAAA,gCAAAA,CAAAA,SAAJ,CAAc,KAAd,CAQZD,gCAAIE,CAAAA,gBAAJ,CAEI,mqCAFJ,CA0BAF;+BAAIG,CAAAA,YAAJ,CAAmB,CACnBH,gCAAII,CAAAA,WAAJ,CAAkB,CAClBJ,gCAAIK,CAAAA,SAAJ,CAAgB,CAChBL,gCAAIM,CAAAA,YAAJ,CAAmB,GACnBN,gCAAIO,CAAAA,mBAAJ,CAA0B,GAC1BP,gCAAIQ,CAAAA,WAAJ,CAAkB,CAClBR,gCAAIS,CAAAA,eAAJ,CAAsB,CACtBT,gCAAIU,CAAAA,eAAJ,CAAsB,CACtBV,gCAAIW,CAAAA,iBAAJ,CAAwB,CACxBX,gCAAIY,CAAAA,UAAJ,CAAiB,CACjBZ;+BAAIa,CAAAA,oBAAJ,CAA2B,CAC3Bb,gCAAIc,CAAAA,gBAAJ,CAAuB,CACvBd,gCAAIe,CAAAA,iBAAJ,CAAwB,CACxBf,gCAAIgB,CAAAA,gBAAJ,CAAuB,GACvBhB,gCAAIiB,CAAAA,oBAAJ,CAA2B,GAC3BjB,gCAAIkB,CAAAA,oBAAJ,CAA2B,GAC3BlB,gCAAImB,CAAAA,cAAJ,CAAqB,GACrBnB,gCAAIoB,CAAAA,aAAJ,CAAoB,GACpBpB,gCAAIqB,CAAAA,cAAJ,CAAqB,GACrBrB;+BAAIsB,CAAAA,iBAAJ,CAAwB,GACxBtB,gCAAIuB,CAAAA,mBAAJ,CAA0B,GAC1BvB,gCAAIwB,CAAAA,mBAAJ,CAA0B,EAC1BxB,gCAAIyB,CAAAA,gBAAJ,CAAuB,EACvBzB,gCAAI0B,CAAAA,cAAJ,CAAqB,EACrB1B,gCAAI2B,CAAAA,eAAJ,CAAsB,EACtB3B,gCAAI4B,CAAAA,iBAAJ,CAAwB,EACxB5B,gCAAI6B,CAAAA,iBAAJ,CAAwB,EACxB7B,gCAAI8B,CAAAA,gBAAJ,CAAuB,EACvB9B;+BAAI+B,CAAAA,iBAAJ,CAAwB,EACxB/B,gCAAIgC,CAAAA,gBAAJ,CAAuB,EACvBhC,gCAAIiC,CAAAA,aAAJ,CAAoB,EACpBjC,gCAAIkC,CAAAA,iBAAJ,CAAwB,EACxBlC,gCAAImC,CAAAA,gBAAJ,CAAuB,EACvBnC,gCAAIoC,CAAAA,sBAAJ,CAA6B,EAC7BpC,gCAAIqC,CAAAA,iBAAJ,CAAwB,EACxBrC,gCAAIsC,CAAAA,qBAAJ,CAA4B,EAC5BtC,gCAAIuC,CAAAA,UAAJ,CAAiB,EAMjBvC;+BAAIwC,CAAAA,eAAJ,CAAsB,CAGpB,CAACxC,+BAAIM,CAAAA,YAAL,CAAmBN,+BAAIO,CAAAA,mBAAvB,CAHoB,CAMpB,CAACP,+BAAIM,CAAAA,YAAL,CAAmBN,+BAAIM,CAAAA,YAAvB,CANoB,CAQpB,CAACN,+BAAIe,CAAAA,iBAAL,CAAwBf,+BAAIe,CAAAA,iBAA5B,CARoB,CAUpB,CAACf,+BAAIkB,CAAAA,oBAAL,CAA2BlB,+BAAIkB,CAAAA,oBAA/B,CAVoB,CAYpB,CAAClB,+BAAIqB,CAAAA,cAAL,CAAqBrB,+BAAIqB,CAAAA,cAAzB,CAZoB;AAcpB,CAACrB,+BAAI+B,CAAAA,iBAAL,CAAwB/B,+BAAI+B,CAAAA,iBAA5B,CAdoB,CAgBpB,CAAC/B,+BAAIgC,CAAAA,gBAAL,CAAuBhC,+BAAIgC,CAAAA,gBAA3B,CAhBoB,CAuBtBhC,gCAAIyC,CAAAA,aAAJ,CAAoB,CAAA,CAMpBzC;+BAAI0C,CAAAA,IAAJ,CAAWC,QAAQ,CAACC,CAAD,CAAY,CAE7BC,MAAOC,CAAAA,cAAP,CAAsB,IAAtB,CAA4BJ,CAAAA,IAAKK,CAAAA,IAAjC,CAAsC,IAAtC,CAEK,KAAKC,CAAAA,OAAV,CAGE,IAAKA,CAAAA,OAAQC,CAAAA,KAAb,EAHF,CACE,IAAKD,CAAAA,OADP,CACiB,IAAIE,CAAAA,CAAAA,4BAAAA,CAAAA,KAAJ,CAAU,IAAKC,CAAAA,eAAf,CAAgC,GAAhC,CAKjB,KAAKH,CAAAA,OAAQI,CAAAA,cAAb,CAA4BR,CAAUS,CAAAA,cAAV,EAA5B,CACA,KAAKL,CAAAA,OAAQM,CAAAA,iBAAb,CAA+BV,CAA/B,CACA,KAAKI,CAAAA,OAAQO,CAAAA,kBAAb,CAAgCX,CAAhC,CAEA,KAAKH,CAAAA,aAAL,CAAqB,CAAA,CAdQ,CAsB/BzC;+BAAIwD,CAAAA,MAAJ,CAAaC,QAAQ,CAACC,CAAD,CAAO,CAE1B,IAAMC,EAAc,GAAAC,CAAAA,CAAAA,mCAAYC,CAAAA,MAAZ,EAAmB,IAAKC,CAAAA,YAAxB,CAEpBJ,EAAA,CAAOb,MAAOC,CAAAA,cAAP,CAAsB,IAAtB,CAA4BU,CAAAA,MAAOT,CAAAA,IAAnC,CAAwC,IAAxC,CAA8CW,CAA9C,CACP,KAAKjB,CAAAA,aAAL,CAAqB,CAAA,CAErB,KAAKO,CAAAA,OAAQC,CAAAA,KAAb,EACA,OAAOU,EAAYI,CAAAA,IAAZ,CAAiB,MAAjB,CAAP,CAAkC,QAAlC,CAA6CL,CARnB,CAiB5B1D,gCAAIgE,CAAAA,eAAJ,CAAsBC,QAAQ,CAACC,CAAD,CAAO,CACnC,MAAOA,EAAP,CAAc,KADqB,CAWrClE,gCAAImE,CAAAA,MAAJ,CAAaC,QAAQ,CAACC,CAAD,CAAS,CAC5BA,CAAA,CAASA,CAAOC,CAAAA,OAAP,CAAe,KAAf,CAAsB,MAAtB,CACKA,CAAAA,OADL,CACa,KADb,CACoB,MADpB,CAEKA,CAAAA,OAFL,CAEa,IAFb,CAEmB,KAFnB,CAGT,OAAO,GAAP,CAAcD,CAAd,CAAuB,GAJK,CAc9BrE;+BAAIuE,CAAAA,gBAAJ,CAAuBC,QAAQ,CAACH,CAAD,CAAS,CAKtC,MAJcA,EAAOI,CAAAA,KAAP,CAAa,KAAb,CAAoBC,CAAAA,GAApBC,CAAwB,IAAKR,CAAAA,MAA7BQ,CAIDZ,CAAAA,IAAN,CAAW,cAAX,CAL+B,CAkBxC/D;+BAAI4E,CAAAA,MAAJ,CAAaC,QAAQ,CAACC,CAAD,CAAQpB,CAAR,CAAcqB,CAAd,CAA4B,CAC/C,IAAIC,EAAc,EAElB,IAAI,CAACF,CAAMG,CAAAA,gBAAX,EAA+B,CAACH,CAAMG,CAAAA,gBAAiBC,CAAAA,gBAAvD,CAAyE,CAEvE,IAAIC,EAAUL,CAAMM,CAAAA,cAAN,EACVD,EAAJ,GACEA,CACA,CADU,GAAAE,CAAAA,CAAAA,mCAAYC,CAAAA,IAAZ,EAAiBH,CAAjB,CAA0B,IAAKI,CAAAA,YAA/B,CAA8C,CAA9C,CACV,CAAAP,CAAA,EAAe,IAAKQ,CAAAA,WAAL,CAAiBL,CAAjB,CAA0B,KAA1B,CAAf,CAAkD,IAFpD,CAMA,KAAK,IAAIM,EAAI,CAAb,CAAgBA,CAAhB,CAAoBX,CAAMY,CAAAA,SAAUC,CAAAA,MAApC,CAA4CF,CAAA,EAA5C,CACMX,CAAMY,CAAAA,SAAN,CAAgBD,CAAhB,CAAmBG,CAAAA,IAAvB,GAAgCC,CAAAA,CAAAA,iCAAAA,CAAAA,UAAWC,CAAAA,KAA3C,GACQC,CADR,CACqBjB,CAAMY,CAAAA,SAAN,CAAgBD,CAAhB,CAAmBO,CAAAA,UAAWC,CAAAA,WAA9B,EADrB,IAGId,CAHJ,CAGc,IAAKe,CAAAA,iBAAL,CAAuBH,CAAvB,CAHd,IAKMf,CALN,EAKqB,IAAKQ,CAAAA,WAAL,CAAiBL,CAAjB,CAA0B,KAA1B,CALrB,CAVqE,CAqBnEgB,CAAAA,CAAYrB,CAAMsB,CAAAA,cAAlBD;AAAoCrB,CAAMsB,CAAAA,cAAeH,CAAAA,WAArB,EACpCI,EAAAA,CAAWtB,CAAA,CAAe,EAAf,CAAoB,IAAKuB,CAAAA,WAAL,CAAiBH,CAAjB,CACrC,OAAOnB,EAAP,CAAqBtB,CAArB,CAA4B2C,CA1BmB,CAsCjDrG;+BAAIuG,CAAAA,WAAJ,CAAkBC,QAAQ,CAAC1B,CAAD,CAAQ2B,CAAR,CAAcC,CAAd,CAAyBC,CAAzB,CAAqCC,CAArC,CAAgD,CACpEC,CAAAA,CAAQH,CAARG,EAAqB,CACrBC,EAAAA,CAAQF,CAARE,EAAqB,IAAKvE,CAAAA,UAC1BuC,EAAMlC,CAAAA,SAAUmE,CAAAA,OAAQC,CAAAA,aAA5B,EACEH,CAAA,EAEF,KAAII,EAAiBnC,CAAMlC,CAAAA,SAAUmE,CAAAA,OAAQC,CAAAA,aAAxB,CAAwC,GAAxC,CAA8C,GAAnE,CACIE,EAAaJ,CAEjB,IAAY,CAAZ,CAAID,CAAJ,CAEE,IAAAM,EADAD,CACAC,CADa,IAAK9F,CAAAA,cADpB,KAGmB,EAAZ,CAAIwF,CAAJ,CAELM,CAFK,CACLD,CADK,CACQ,IAAK5F,CAAAA,iBADb,CAGIqF,CAHJ,GAKLQ,CALK,CAILD,CAJK,CAIQ,IAAKjG,CAAAA,oBAJb,CAOHmG,EAAAA,CAAK,IAAKC,CAAAA,WAAL,CAAiBvC,CAAjB,CAAwB2B,CAAxB,CAA8BS,CAA9B,CAALE,EAAkDH,CAElD,IAAA5B,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqBF,CAArB,CAAJ,EAEEA,CACA,CADKG,MAAA,CAAOH,CAAP,CACL,CADkBP,CAClB,CAAIF,CAAJ,GACES,CADF,CACO,CAACA,CADR,CAHF,GAQc,CAAZ,CAAIP,CAAJ,CACEO,CADF,CACOA,CADP,CACY,KADZ,CACoBP,CADpB,CAEmB,CAFnB,CAEWA,CAFX,GAGEO,CAHF,CAGOA,CAHP,CAGY,KAHZ,CAGoB,CAACP,CAHrB,CAcA,CATIF,CASJ,GAPIS,CAOJ,CARMP,CAAJ,CACO,IADP,CACcO,CADd,CACmB,GADnB,CAGO,GAHP,CAGaA,CAKf,EAFAD,CAEA,CAFaK,IAAKC,CAAAA,KAAL,CAAWN,CAAX,CAEb,CADAL,CACA,CADQU,IAAKC,CAAAA,KAAL,CAAWX,CAAX,CACR,CAAIK,CAAJ,EAAkBL,CAAlB,EAA2BK,CAA3B;CACEC,CADF,CACO,GADP,CACaA,CADb,CACkB,GADlB,CAtBF,CA0BA,OAAOA,EA/CiE,CAkD1EM,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAU1H,+B,CCpSV,IAAA,qCAAA,EAMAA,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAIrC,MAAO,CADH9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZjE,CAAoBoB,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAApBlE,CAAgDmE,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAzDpE,CACG,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAX,CAJ8B,CAOvCH,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAErC,IAAMiD,EACF/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImC,CAAAA,gBAApC,CADE4F,EACuD,GAG7D,OADI/H,EAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZK,CAAoBlD,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAApBI,CAAgDH,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAzDE,CACJ,CAAiB,KAAjB,CAAyBD,CAAzB,CAAqC,KANA,C;;;;;ACbvC,IAAA,4CAAA,EAQA/H,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,qBAAA,CAA+BA,CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAC/BA,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,qBAAA,CAA+BA,CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,a,CCT/B,IAAA,iCAAA,EAMAA,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,IAAA,CAAc,QAAQ,CAAC8E,CAAD,CAAQ,CAG5B,MAAO,CADM9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImE,CAAAA,MAAJT,CAAWoB,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAAXlE,CACN,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAX,CAHqB,CAM9BH,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,cAAA,CAAwB,QAAQ,CAAC8E,CAAD,CAAQ,CAEhCpB,CAAAA,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuE,CAAAA,gBAAJ,CAAqBO,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAArB,CACb,KAAMd,EACoB,CAAC,CAAvB,GAAApD,CAAKuE,CAAAA,OAAL,CAAa,GAAb,CAAA,CAA2BjI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuB,CAAAA,mBAA/B,CAAqDvB,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAC7D,OAAO,CAACuD,CAAD,CAAOoD,CAAP,CAL+B,CAQxC9G;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,SAAA,CAAmB,QAAQ,CAAC8E,CAAD,CAAQ,CAEjC,GAAyB,CAAzB,GAAIA,CAAMoD,CAAAA,UAAV,CACE,MAAO,CAAC,IAAD,CAAOlI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAX,CACF,IAAyB,CAAzB,GAAI2E,CAAMoD,CAAAA,UAAV,CAGL,MAAO,CAFSlI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAET,EAF2D,IAE3D,CAAOvC,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAX,CACF,IAAyB,CAAzB,GAAIuC,CAAMoD,CAAAA,UAAV,CAA4B,CACjC,IAAMC,EACFnI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuB,CAAAA,mBAAnC,CADE4G,EACyD,IACzDC,EAAAA,CACFpI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuB,CAAAA,mBAAnC,CADE6G,EACyD,IAE/D,OAAO,CADMD,CACN,CADiB,KACjB,CADyBC,CACzB,CAAOpI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuB,CAAAA,mBAAX,CAN0B,CAQ3B8G,CAAAA,CAAeC,KAAJ,CAAUxD,CAAMoD,CAAAA,UAAhB,CACjB,KAAK,IAAIzC,EAAI,CAAb,CAAgBA,CAAhB,CAAoBX,CAAMoD,CAAAA,UAA1B,CAAsCzC,CAAA,EAAtC,CACE4C,CAAA,CAAS5C,CAAT,CAAA;AAAczF,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA+BW,CAA/B,CAAkCzF,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAtC,CAAd,EAAmE,IAGrE,OAAO,CADM,oBACN,CAD+B8F,CAAStE,CAAAA,IAAT,CAAc,GAAd,CAC/B,CADoD,IACpD,CAAO/D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CArBwB,CAyBnCP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqB,QAAQ,CAAC8E,CAAD,CAAQ,CAEnC,IAAMkD,EACFhI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZ,CAAoB7C,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAApB,CAAgDC,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAzD,CACES,EAAAA,CAAQvI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImC,CAAAA,gBAAnC,CAARoG,EAAgE,IACtE,OAAOP,EAAP,CAAiB,MAAjB,CAA0BO,CAA1B,CAAkC,KALC,CAQrCvI;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqB,QAAQ,CAAC8E,CAAD,CAAQ,CAEnC,IAAM0D,EAAexI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,QAArB,CAA+B,aAA/B,CACZzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADQ,CAA+B,uGAA/B,CAQfC,EAAAA,CAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAAPoG,EAA0D,IAChE,OAAO,CAACH,CAAD,CAAgB,GAAhB,CAAsBG,CAAtB,CAA6B,GAA7B,CAAkC3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAtC,CAX4B,CAcrCP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CAGpC,MAAO,CAAC,QAAD,EADM9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CACN,EADyD,IACzD,EAAmB,GAAnB,CAAwBvC,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAA5B,CAH6B,CAMtCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CAEpC,IAAM8D,EAC6B,OAA/B,GAAA9D,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAAA,CAAyC,QAAzC,CAAoD,SADxD,CAEMiB,EAAY7I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAZsG,EAA8D,IAFpE,CAGMF,EAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAAPoG,EAA0D,IAHhE,CAIIG,EAAa,KAJjB,CAKIC,EAAkB,EAClBjE,EAAMlC,CAAAA,SAAUmE,CAAAA,OAAQC,CAAAA,aAA5B,GACE8B,CACA,CADa,IACb,CAAAC,CAAA,CAAkB,MAFpB,CAcA,OAAO,CAVc/I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CACc,OAA/B,GAAA1D,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAAA,CAAyC,cAAzC,CACyC,kBAFxBY,CAGjB,aAHiBA,CAIZxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BAJQF,CAGjB,+BAHiBA,CAKZI,CALYJ,CAGjB,+CAHiBA;AAMKM,CANLN,CAGjB,SAHiBA,CAMyBO,CANzBP,CAGjB,QAHiBA,CAUd,CADqB,GACrB,CAD2BG,CAC3B,CADkC,IAClC,CADyCE,CACzC,CADqD,GACrD,CAAO7I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAtB6B,CAyBtCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqB,QAAQ,CAAC8E,CAAD,CAAQ,CAEnC,IAAMkE,EAAQlE,CAAM8C,CAAAA,aAAN,CAAoB,OAApB,CAARoB,EAAwC,YAA9C,CAEML,EAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAD4B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAChC,CAAPoG,EAAqD,IAC3D,QAAQK,CAAR,EACE,KAAK,OAAL,CAEE,MAAO,CADM,SACN,CADkBL,CAClB,CADyB,SACzB,CAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAET,MAAK,MAAL,CAEE,MAAO,CADM,SACN,CADkBoI,CAClB,CADyB,OACzB,CAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAET,MAAK,YAAL,CAGE,MAFM6G,EAEC,CAFIpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,IAAvB,CAEJ,CAAA,CADM,SACN,CADkB6D,CAClB,CADyB,IACzB,CADgCvB,CAChC,CADqC,MACrC,CAAOpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAET,MAAK,UAAL,CAGE,MAFM6G,EAEC,CAFIpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,IAAvB,CAA6B,CAA7B,CAAgC,CAAA,CAAhC,CAEJ;AAAA,CADM,SACN,CADkB6D,CAClB,CADyB,IACzB,CADgCvB,CAChC,CADqC,MACrC,CAAOpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAET,MAAK,QAAL,CAOE,MAAO,CANcP,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,oBAArBA,CAA2C,aAA3CA,CAChBxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADYF,CAA2C,6DAA3CA,CAMd,CADqB,GACrB,CAD2BG,CAC3B,CADkC,GAClC,CAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CA1BX,CA6BA,KAAM0I,MAAA,CAAM,iCAAN,CAAN,CAlCmC,CAqCrCjJ;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,iBAAA,CAA2B,QAAQ,CAAC8E,CAAD,CAAQ,CAEzC,IAAMoE,EAASpE,CAAM8C,CAAAA,aAAN,CAAoB,QAApB,CAAf,CACMuB,EAASrE,CAAM8C,CAAAA,aAAN,CAAoB,QAApB,CADf,CAEMe,EAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,QAAvB,CAAiC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAArC,CAAPoG,EAA2D,IACjE,IAAe,OAAf,GAAIO,CAAJ,EAAqC,MAArC,GAA0BC,CAA1B,CAEE,MAAO,CADMR,CACN,CAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAX,CAEP,KAAM6G,EAAMpJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,KAAvB,CACNuE,EAAAA,CAAMrJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,KAAvB,CAyBZ,OAAO,CAxBc9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,oBAArBA,CAA2C,aAA3CA,CACdxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADUF,CAA2C,moBAA3CA,CAwBd;AAFqB,GAErB,CAF2BG,CAE3B,CAFkC,KAElC,CAF2CO,CAE3C,CAFoD,KAEpD,CAF6DE,CAE7D,CADH,KACG,CADMD,CACN,CADe,KACf,CADwBE,CACxB,CAD8B,GAC9B,CAAOrJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAnCgC,CAuC3CP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,eAAA,CAAyB,QAAQ,CAAC8E,CAAD,CAAQ,CAEvC,IAAM6D,EAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAPoG,EAAyD,IAA/D,CACIjF,CACgC,YAApC,GAAIoB,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAAJ,CACElE,CADF,CACS,aADT,CACyBiF,CADzB,CACgC,GADhC,CAE2C,WAApC,GAAI7D,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAAJ,CACLlE,CADK,CACE,aADF,CACkBiF,CADlB,CACyB,GADzB,CAEoC,WAFpC,GAEI7D,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAFJ,GAGLlE,CAHK,CAGE,qBAHF,CAG0BiF,CAH1B,CAGiC,IAHjC,CAKP,OAAO,CAACjF,CAAD,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAXgC,CAczCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,SAAA,CAAmB,QAAQ,CAAC8E,CAAD,CAAQ,CAGjC,IAAM8D,EADYU,CAAC,KAAQ,OAATA,CAAkB,MAAS,OAA3BA,CAAoC,KAAQ,MAA5CA,CACD,CAAUxE,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAAV,CACXe,EAAAA,CAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAPoG,EAAyD,IAC/D,OAAO,CAACC,CAAD,CAAY,GAAZ,CAAkBD,CAAlB,CAAyB,GAAzB,CAA8B3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAlC,CAL0B,CAQnCP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,UAAA,CAAoB,QAAQ,CAAC8E,CAAD,CAAQ,CAGlC,MAAO,QAAP,EADY9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CACZ,EAD8D,IAC9D,EAAwB,MAHU,CAMpCvC;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,eAAA,CAAyB,QAAQ,CAAC8E,CAAD,CAAQ,CAUvC,IAAIpB,EAAO,WAAPA,EAPAoB,CAAMyE,CAAAA,QAAN,CAAe,MAAf,CAAJC,CAEQxJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAImE,CAAAA,MAAJ,CAAWW,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAAX,CAFR4B,CAKQxJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CALRiH,EAK0D,IAEtD9F,EAA2B,GACkB,SACjD,GADiBoB,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CACjB,GACElE,CADF,CACS,WADT,CACuBA,CADvB,CAC8B,GAD9B,CAGA,OAAO,CAACA,CAAD,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAfgC,CAkBzCP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqBA,CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,eAErBA;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,UAAA,CAAoB,QAAQ,CAAC8E,CAAD,CAAQ,CAClC,IAAM6D,EAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAPoG,EAAyD,IACzDc,EAAAA,CAAMzJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA8B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAlC,CAANkH,EAAuD,IAI7D,OAAO,CAHM,SAGN,CAHkBA,CAGlB,CAHwB,mBAGxB,CAFYd,CAEZ,CAFmB,uBAEnB,CADkBA,CAClB,CADyB,IACzB,CADgCc,CAChC,CADsC,GACtC,CAAOzJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkC,CAAAA,iBAAX,CAN2B,CASpClC;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CACpC,IAAM6D,EAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAPoG,EAAyD,IAA/D,CACMe,EAAO1J,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAPmH,EAAyD,IACzDC,EAAAA,CAAK3J,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,IAAvB,CAA6B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAjC,CAALoH,EAAqD,IAE3D,OAAO,CADM,cACN,CADuBD,CACvB,CAD8B,IAC9B,CADqCC,CACrC,CAD0C,IAC1C,CADiDhB,CACjD,CADwD,GACxD,CAAO3I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAL6B,CAQtCP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CAGpC,MAAO,CADM,SACN,EAFM9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAEN,EAFwD,IAExD,EADyB,GACzB,CAAOvC,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAH6B,C,CC/OtC,IAAA,sCAAA,EAOAP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,oBAAA,CAA8B,QAAQ,CAAC8E,CAAD,CAAQ,CAO5C,IAHA,IAAM8E,EAAU,EAAhB,CACMhH,EAAYkC,CAAMlC,CAAAA,SADxB,CAEMiH,EAAgB,GAAAC,CAAAA,CAAAA,gCAAUC,CAAAA,gBAAV,EAA2BnH,CAA3B,CAAhBiH,EAAyD,EAF/D,CAGSpE,EAAI,CAHb,CAGgBuE,CAAhB,CAA0BA,CAA1B,CAAqCH,CAAA,CAAcpE,CAAd,CAArC,CAAuDA,CAAA,EAAvD,CACQuC,CACN,CADgBgC,CAASC,CAAAA,IACzB,CAAyC,CAAC,CAA1C,GAAInF,CAAMoF,CAAAA,OAAN,EAAgBjC,CAAAA,OAAhB,CAAwBD,CAAxB,CAAJ,EACE4B,CAAQO,CAAAA,IAAR,CAAanK,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZ,CAAoBK,CAApB,CAA6BH,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAtC,CAAb,CAIEsC,EAAAA,CAAa,GAAAN,CAAAA,CAAAA,gCAAUO,CAAAA,qBAAV,EAAgCzH,CAAhC,CACnB,KAAS6C,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoB2E,CAAWzE,CAAAA,MAA/B,CAAuCF,CAAA,EAAvC,CACEmE,CAAQO,CAAAA,IAAR,CACInK,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZ,CAAoByC,CAAA,CAAW3E,CAAX,CAApB,CAAmCoC,CAAAA,CAAAA,4BAAAA,CAAAA,QAASyC,CAAAA,kBAA5C,CADJ,CAGIC,EAAAA,CACFX,CAAQjE,CAAAA,MAAR,CAAiB3F,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MAArB;AAA8B,SAA9B,CAA0CZ,CAAQ7F,CAAAA,IAAR,CAAa,IAAb,CAA1C,CAA+D,KAA/D,CAAuE,EAErE0G,EAAAA,CACFzK,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZ,CAAoB7C,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAApB,CAAiDC,CAAAA,CAAAA,4BAAAA,CAAAA,QAAS6C,CAAAA,SAA1D,CACAC,EAAAA,CAAQ,EACR3K,EAAAA,CAAAA,OAAAA,CAAAA,GAAI4K,CAAAA,gBAAR,GACED,CADF,EACW3K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI4K,CAAAA,gBAAjB,CAAmC9F,CAAnC,CADX,CAGI9E,EAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAR,GACEH,CADF,EACW3K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAjB,CAAmChG,CAAnC,CADX,CAGI6F,EAAJ,GACEA,CADF,CACU3K,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwF,CAAAA,WAAJ,CAAgBmF,CAAhB,CAAuB3K,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MAA3B,CADV,CAGIO,EAAAA,CAAW,EACX/K,EAAAA,CAAAA,OAAAA,CAAAA,GAAIgL,CAAAA,kBAAR,GACED,CADF,CACa/K,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwF,CAAAA,WAAJ,CACPxF,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgL,CAAAA,kBAAjB;AAAqClG,CAArC,CADO,CACsC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MAD1C,CADb,CAIMS,EAAAA,CAASjL,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkL,CAAAA,eAAJ,CAAoBpG,CAApB,CAA2B,OAA3B,CACf,KAAIqG,EAAcnL,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,QAAvB,CAAiC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAArC,CAAd4I,EAAkE,EAAtE,CACIC,EAAQ,EACRH,EAAJ,EAAcE,CAAd,GAEEC,CAFF,CAEUT,CAFV,CAIIQ,EAAJ,GACEA,CADF,CACgBnL,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MADpB,CAC6B,SAD7B,CACyCW,CADzC,CACuD,KADvD,CAKA,KAFA,IAAME,EAAO,EAAb,CACMC,EAAYxG,CAAMoF,CAAAA,OAAN,EADlB,CAESzE,EAAI,CAAb,CAAgBA,CAAhB,CAAoB6F,CAAU3F,CAAAA,MAA9B,CAAsCF,CAAA,EAAtC,CACE4F,CAAA,CAAK5F,CAAL,CAAA,CAAUzF,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZ,CAAoB2D,CAAA,CAAU7F,CAAV,CAApB,CAAkCoC,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAA3C,CAERpE,EAAAA,CAAO,WAAPA,CAAqB+G,CAArB/G,CAAgC,GAAhCA,CAAsC2H,CAAKtH,CAAAA,IAAL,CAAU,IAAV,CAAtCL,CAAwD,OAAxDA,CACA6G,CADA7G,CACYiH,CADZjH,CACoBqH,CADpBrH,CAC+BuH,CAD/BvH,CACwC0H,CADxC1H,CACgDyH,CADhDzH,CAC8D,GAClEA,EAAA,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAI4E,CAAAA,MAAJ,CAAWE,CAAX,CAAkBpB,CAAlB,CAEP1D,EAAAA,CAAAA,OAAAA,CAAAA,GAAI8D,CAAAA,YAAJ,CAAiB,GAAjB,CAAuB2G,CAAvB,CAAA,CAAmC/G,CACnC,OAAO,KA3DqC,CAgE9C1D;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,sBAAA,CAAgCA,CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,oBAEhCA,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,qBAAA,CAA+B,QAAQ,CAAC8E,CAAD,CAAQ,CAM7C,IAJA,IAAM2F,EACFzK,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZ,CAAoB7C,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAApB,CAAiDC,CAAAA,CAAAA,4BAAAA,CAAAA,QAAS6C,CAAAA,SAA1D,CADJ,CAEMW,EAAO,EAFb,CAGMC,EAAYxG,CAAMoF,CAAAA,OAAN,EAHlB,CAISzE,EAAI,CAAb,CAAgBA,CAAhB,CAAoB6F,CAAU3F,CAAAA,MAA9B,CAAsCF,CAAA,EAAtC,CACE4F,CAAA,CAAK5F,CAAL,CAAA,CAAUzF,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA+BW,CAA/B,CAAkCzF,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAtC,CAAV,EAA+D,MAGjE,OAAO,CADMkI,CACN,CADiB,GACjB,CADuBY,CAAKtH,CAAAA,IAAL,CAAU,IAAV,CACvB,CADyC,GACzC,CAAO/D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAVsC,CAa/CP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,uBAAA,CAAiC,QAAQ,CAAC8E,CAAD,CAAQ,CAK/C,MADc9E,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,qBAAAuL,CAA6BzG,CAA7ByG,CACP,CAAM,CAAN,CAAP,CAAkB,KAL6B,CAQjDvL;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,mBAAA,CAA6B,QAAQ,CAAC8E,CAAD,CAAQ,CAI3C,IAAIpB,EAAO,MAAPA,EADA1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,WAAvB,CAAoC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAxC,CACAmB,EADuD,OACvDA,EAA4B,OAC5B1D,EAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAR,GAGEpH,CAHF,EAIM1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwF,CAAAA,WAAJ,CAAgBxF,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAjB,CAAmChG,CAAnC,CAAhB,CAA2D9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MAA/D,CAJN,CAMI1F,EAAM0G,CAAAA,eAAV,EACQjD,CACN,CADcvI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CACd,EADiE,MACjE,CAAAmB,CAAA,EAAQ1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MAAZ,CAAqB,SAArB,CAAiCjC,CAAjC,CAAyC,KAF3C,EAIE7E,CAJF,EAIU1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MAJd,CAIuB,WAGvB,OADA9G,EACA,CADQ,KAjBmC,C,CC9F7C,IAAA,gCAAA,EAMA1D,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqB,QAAQ,CAAC8E,CAAD,CAAQ,CAE/BpB,CAAAA,CAAO6D,MAAA,CAAOzC,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAAP,CACX,KAAMd,EAAgB,CAAR,EAAApD,CAAA,CAAY1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAhB,CAA+BH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIiB,CAAAA,oBACpCwK,SAAb,GAAI/H,CAAJ,CACEA,CADF,CACS,KADT,CAEoB,CAAC+H,QAFrB,GAEW/H,CAFX,GAGEA,CAHF,CAGS,MAHT,CAKA,OAAO,CAACA,CAAD,CAAOoD,CAAP,CAT4B,CAYrC9G;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,eAAA,CAAyB,QAAQ,CAAC8E,CAAD,CAAQ,CASvC,IAAMyG,EAPYjC,CAChB,IAAO,CAAC,KAAD,CAAQtJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqB,CAAAA,cAAZ,CADSiI,CAEhB,MAAS,CAAC,KAAD,CAAQtJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIsB,CAAAA,iBAAZ,CAFOgI,CAGhB,SAAY,CAAC,KAAD,CAAQtJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkB,CAAAA,oBAAZ,CAHIoI,CAIhB,OAAU,CAAC,KAAD,CAAQtJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAImB,CAAAA,cAAZ,CAJMmI,CAKhB,MAAS,CAAC,MAAD,CAAStJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIQ,CAAAA,WAAb,CALO8I,CAOJ,CAAUxE,CAAM8C,CAAAA,aAAN,CAAoB,IAApB,CAAV,CAAd,CACMgB,EAAW2C,CAAA,CAAM,CAAN,CACXzE,EAAAA,CAAQyE,CAAA,CAAM,CAAN,CACd,KAAMxD,EAAY/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,GAAvB,CAA4BgC,CAA5B,CAAZiB,EAAkD,GAClD2D,EAAAA,CAAY1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,GAAvB,CAA4BgC,CAA5B,CAAZ4E,EAAkD,GAExD,OAAO,CADM3D,CACN,CADkBa,CAClB,CAD6B8C,CAC7B,CAAO5E,CAAP,CAfgC,CAkBzC9G;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqB,QAAQ,CAAC8E,CAAD,CAAQ,CAEnC,IAAM8D,EAAW9D,CAAM8C,CAAAA,aAAN,CAAoB,IAApB,CAGjB,IAAiB,KAAjB,GAAIgB,CAAJ,CAQE,MANA+C,EAMO,CAND3L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA8B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIiB,CAAAA,oBAAlC,CAMC,EAN0D,GAM1D,CALQ,GAKR,GALH0K,CAAA,CAAI,CAAJ,CAKG,GAHLA,CAGK,CAHC,GAGD,CAHOA,CAGP,EAAA,CADA,GACA,CADMA,CACN,CAAO3L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIiB,CAAAA,oBAAX,CAGP0K,EAAA,CADe,KAAjB,GAAI/C,CAAJ,EAAuC,KAAvC,GAA0BA,CAA1B,EAA6D,KAA7D,GAAgDA,CAAhD,CACQ5I,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA8B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImB,CAAAA,cAAlC,CADR,EAC6D,GAD7D,CAGQnB,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA8B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAlC,CAHR,EAGyD,GAIzD,QAAQqG,CAAR,EACE,KAAK,KAAL,CACE,IAAAlF,EAAO,MAAPA,CAAgBiI,CAAhBjI,CAAsB,GACtB,MACF,MAAK,MAAL,CACEA,CAAA,CAAO,OAAP,CAAiBiI,CAAjB,CAAuB,GACvB,MACF,MAAK,IAAL,CACEjI,CAAA,CAAO,MAAP,CAAgBiI,CAAhB,CAAsB,GACtB;KACF,MAAK,KAAL,CACEjI,CAAA,CAAO,MAAP,CAAgBiI,CAAhB,CAAsB,GACtB,MACF,MAAK,OAAL,CACEjI,CAAA,CAAO,SAAP,CAAmBiI,CAAnB,CAAyB,GACzB,MACF,MAAK,OAAL,CACEjI,CAAA,CAAO,QAAP,CAAkBiI,CAAlB,CAAwB,GACxB,MACF,MAAK,SAAL,CACEjI,CAAA,CAAO,OAAP,CAAiBiI,CAAjB,CAAuB,GACvB,MACF,MAAK,WAAL,CACEjI,CAAA,CAAO,QAAP,CAAkBiI,CAAlB,CAAwB,GACxB,MACF,MAAK,KAAL,CACEjI,CAAA,CAAO,MAAP,CAAgBiI,CAAhB,CAAsB,gBACtB,MACF,MAAK,KAAL,CACEjI,CAAA,CAAO,MAAP,CAAgBiI,CAAhB,CAAsB,gBACtB,MACF,MAAK,KAAL,CACEjI,CAAA,CAAO,MAAP,CAAgBiI,CAAhB,CAAsB,gBAhC1B,CAmCA,GAAIjI,CAAJ,CACE,MAAO,CAACA,CAAD,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAIT,QAAQqI,CAAR,EACE,KAAK,OAAL,CACElF,CAAA,CAAO,MAAP,CAAgBiI,CAAhB,CAAsB,aACtB,MACF,MAAK,MAAL,CACEjI,CAAA,CAAO,OAAP,CAAiBiI,CAAjB,CAAuB,gBACvB,MACF,MAAK,MAAL,CACEjI,CAAA,CAAO,OAAP,CAAiBiI,CAAjB,CAAuB,gBACvB;KACF,MAAK,MAAL,CACEjI,CAAA,CAAO,OAAP,CAAiBiI,CAAjB,CAAuB,gBACvB,MACF,SACE,KAAM1C,MAAA,CAAM,yBAAN,CAAkCL,CAAlC,CAAN,CAdJ,CAgBA,MAAO,CAAClF,CAAD,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAImB,CAAAA,cAAX,CA9E4B,CAiFrCnB,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAUrC,MARkB8G,CAChB,GAAM,CAAC,MAAD,CAAS5L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAb,CADUyL,CAEhB,EAAK,CAAC,KAAD,CAAQ5L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAZ,CAFWyL,CAGhB,aAAgB,CAAC,mBAAD,CAAsB5L,CAAAA,CAAAA,OAAAA,CAAAA,GAAImB,CAAAA,cAA1B,CAHAyK,CAIhB,MAAS,CAAC,SAAD,CAAY5L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAhB,CAJOyL,CAKhB,QAAW,CAAC,WAAD,CAAc5L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAlB,CALKyL,CAMhB,SAAY,CAAC,KAAD,CAAQ5L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAZ,CANIyL,CAQX,CAAU9G,CAAM8C,CAAAA,aAAN,CAAoB,UAApB,CAAV,CAV8B,CAavC5H;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,oBAAA,CAA8B,QAAQ,CAAC8E,CAAD,CAAQ,CAG5C,IAAM+G,EAAa,CACjB,KAAQ,CAAC,EAAD,CAAK,WAAL,CAAkB7L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIoB,CAAAA,aAAtB,CAAqCpB,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0B,CAAAA,cAAzC,CADS,CAEjB,IAAO,CAAC,EAAD,CAAK,WAAL,CAAkB1B,CAAAA,CAAAA,OAAAA,CAAAA,GAAIoB,CAAAA,aAAtB,CAAqCpB,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0B,CAAAA,cAAzC,CAFU,CAGjB,MAAS,CAAC,SAAD,CAAY,GAAZ,CAAiB1B,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAArB,CAAiCvC,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAArC,CAHQ,CAIjB,SAAY,CAAC,EAAD,CAAK,MAAL,CAAaP,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyB,CAAAA,gBAAjB,CAAmCzB,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyB,CAAAA,gBAAvC,CAJK,CAKjB,SAAY,CAAC,EAAD,CAAK,MAAL,CAAazB,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyB,CAAAA,gBAAjB,CAAmCzB,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyB,CAAAA,gBAAvC,CALK,CAMjB,aAAgB,CAAC,IAAD,CAAO,IAAP,CAAazB,CAAAA,CAAAA,OAAAA,CAAAA,GAAIoB,CAAAA,aAAjB;AAAgCpB,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0B,CAAAA,cAApC,CANC,CAOjB,MAAS,CAAC,IAAD,CAAO,IAAP,CAAa1B,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAjB,CAA6BvC,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAjC,CAPQ,CAAnB,CASMuL,EAAmBhH,CAAM8C,CAAAA,aAAN,CAAoB,UAApB,CACnB,EAAA,CAAA,CAAA,CAAA,OAAA,CAAA,YAAA,CAA4CiE,CAAA,CAAWC,CAAX,CAA5C,CAAA,KAACC,EAAD,CAAA,CAAA,IAAA,EAAA,CAAA,KAAA,CAASC,EAAT,CAAA,CAAA,IAAA,EAAA,CAAA,KAAA,CAAiBC,EAAjB,CAAA,CAAA,IAAA,EAAA,CAAA,KAA6BC,EAAAA,CAA7B,CAAA,CAAA,IAAA,EAAA,CAAA,KACAC,EAAAA,CAAgBnM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,iBAAvB,CAClBmH,CADkB,CAAhBE,EACa,GAEnB,IAAyB,OAAzB,GAAIL,CAAJ,CAsBEpI,CAAA,CApBqB1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,cAArBA,CAAqC,aAArCA,CACdxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADUF,CAAqC,kiBAArCA,CAoBrB;AAAsB,GAAtB,CAA4B2D,CAA5B,CAA4C,GAtB9C,KAuBO,IAAyB,cAAzB,GAAIL,CAAJ,CAAyC,CACxCM,CAAAA,CAAUpM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,SAAvB,CACZ9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIoB,CAAAA,aADQ,CAAVgL,EACoB,GAC1B,IAAgB,GAAhB,GAAIA,CAAJ,CACE,MAAO,CAAC,OAAD,CAAUpM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAd,CAGTuD,EAAA,CAAOyI,CAAP,CAAuB,KAAvB,CAA+BC,CAA/B,CAAyC,OAPK,CAAzC,IASL1I,EAAA,CAAOqI,CAAP,CAAgBI,CAAhB,CAAgCH,CAElC,OAAO,CAACtI,CAAD,CAAOwI,CAAP,CAnDqC,CAsD9ClM,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqB,QAAQ,CAAC8E,CAAD,CAAQ,CAEnC,IAAMiD,EAAY/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqB,CAAAA,cAApC,CAAZ0G,EAAmE,GAGzE,OADI/H,EAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZK,CAAoBlD,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAApBI,CAAgDH,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAzDE,CACJ,CAAiB,MAAjB,CAA0BD,CAA1B,CAAsC,KALH,CASrC/H,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,UAAA,CAAoBA,CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAEpBA;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,SAAA,CAAmBA,CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAEnBA;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CAEpC,IAAMuH,EAAOvH,CAAM8C,CAAAA,aAAN,CAAoB,IAApB,CAGb,QAAQyE,CAAR,EACE,KAAK,KAAL,CACEC,CAAA,CACItM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAnC,CADJ,EAC+D,SAC/DmD,EAAA,CAAO,YAAP,CAAsB4I,CAAtB,CAA6B,GAC7B,MACF,MAAK,KAAL,CACEA,CAAA,CACItM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAnC,CADJ,EAC+D,SAC/DmD,EAAA,CAAO,MAAP,CAAgB4I,CAAhB,CAAuB,GACvB,MACF,MAAK,KAAL,CACEA,CAAA,CACItM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAnC,CADJ,EAC+D,SAC/DmD,EAAA,CAAO,MAAP,CAAgB4I,CAAhB,CAAuB,GACvB,MACF,MAAK,SAAL,CACQ9D,CAAAA,CAAexI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,WAArB,CAAkC,aAAlC;AAChBzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADY,CAAkC,iEAAlC,CAKrB4D,EAAA,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAP,EAAyD,SACzDmB,EAAA,CAAO8E,CAAP,CAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,GACnC,MAEF,MAAK,QAAL,CACQ9D,CAAAA,CAAexI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,aAArB,CAAoC,aAApC,CAChBzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADY,CAAoC,sLAApC,CAOrB4D;CAAA,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAP,EAAyD,IACzDmB,EAAA,CAAO8E,CAAP,CAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,GACnC,MAEF,MAAK,MAAL,CAIQ9D,CAAAA,CAAexI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,YAArB,CAAmC,aAAnC,CAChBzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADY,CAAmC,qOAAnC,CASrB4D,EAAA,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAP,EAAyD,IACzDmB;CAAA,CAAO8E,CAAP,CAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,GACnC,MAEF,MAAK,SAAL,CACQ9D,CAAAA,CAAexI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,yBAArB,CAAgD,aAAhD,CAChBzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADY,CAAgD,uPAAhD,CASrB4D,EAAA,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAP,EAAyD,IACzDmB,EAAA,CAAO8E,CAAP,CAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,GACnC,MAEF,MAAK,QAAL,CACQ9D,CAAAA;AAAexI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,kBAArB,CAAyC,aAAzC,CAChBzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADY,CAAyC,sEAAzC,CAMrB4D,EAAA,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAP,EAAyD,IACzDmB,EAAA,CAAO8E,CAAP,CAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,GACnC,MAEF,SACE,KAAMrD,MAAA,CAAM,oBAAN,CAA6BoD,CAA7B,CAAN,CAjFJ,CAmFA,MAAO,CAAC3I,CAAD,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAxF6B,CA2FtCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqB,QAAQ,CAAC8E,CAAD,CAAQ,CAEnC,IAAMiD,EACF/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,UAAvB,CAAmC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIoB,CAAAA,aAAvC,CADE2G,EACuD,GACvD2D,EAAAA,CAAY1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,SAAvB,CAAkC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIoB,CAAAA,aAAtC,CAAZsK,EAAoE,GAE1E,OAAO,CADM3D,CACN,CADkB,KAClB,CAD0B2D,CAC1B,CAAO1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIoB,CAAAA,aAAX,CAN4B,CASrCpB;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,cAAA,CAAwB,QAAQ,CAAC8E,CAAD,CAAQ,CAEtC,IAAMiD,EAAY/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAAZwF,EAA+D,GAArE,CACM2D,EAAY1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA8B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAlC,CAAZmJ,EAA6D,GAC7Da,EAAAA,CACFvM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CADEgK,EACgD,UAGtD,OAAO,CADH,UACG,CADUxE,CACV,CADsB,IACtB,CAD6B2D,CAC7B,CADyC,KACzC,CADiDa,CACjD,CAD6D,GAC7D,CAAOvM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAR+B,CAWxCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,eAAA,CAAyB,QAAQ,CAAC8E,CAAD,CAAQ,CAEvC,IAAMiD,EAAY/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAZwF,EAA8D,GAC9D2D,EAAAA,CAAY1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,IAAvB,CAA6B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAjC,CAAZmJ,EAA4D,GAUlE,OAAO,CATc1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,iBAArBA,CAAwC,aAAxCA,CACZxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADQF,CAAwC,0FAAxCA,CASd,CADqB,GACrB,CAD2BT,CAC3B,CADuC,IACvC,CAD8C2D,CAC9C,CAD0D,GAC1D,CAAO1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAbgC,CAgBzCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,iBAAA,CAA2B,QAAQ,CAAC8E,CAAD,CAAQ,CAEzC,MAAO,CAAC,mCAAD,CAAsC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAA1C,CAFkC,CAK3CP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,UAAA,CAAoB,QAAQ,CAAC8E,CAAD,CAAQ,CAElC,IAAMiD,EAAY/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,GAAvB,CAA4B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAhC,CAAZwF,EAA2D,GAEjE,OAAO,CACL,QADK,EADW/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,GAAvB,CAA4B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAhC,CACX,EAD0D,GAC1D,EACkB,IADlB,CACyBwF,CADzB,CACqC,gBADrC,CAEL/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAImB,CAAAA,cAFC,CAJ2B,C,CCzUpC,IAAA,iCAAA,EAOAnB;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,mBAAA,CAA6B,QAAQ,CAAC8E,CAAD,CAAQ,CAKzC,IAAA0H,EAFE1H,CAAMyE,CAAAA,QAAN,CAAe,OAAf,CAAJ,CAEYkD,MAAA,CAAOlF,MAAA,CAAOzC,CAAM8C,CAAAA,aAAN,CAAoB,OAApB,CAAP,CAAP,CAFZ,CAKY5H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImC,CAAAA,gBAApC,CALZ,EAKqE,GAErE,KAAI8I,EAASjL,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkL,CAAAA,eAAJ,CAAoBpG,CAApB,CAA2B,IAA3B,CACbmG,EAAA,CAASjL,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0M,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAwBnG,CAAxB,CACLpB,EAAAA,CAAO,EACX,KAAMiJ,EAAU3M,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ4J,CAAAA,eAAZ,CAA4B,OAA5B,CAAqC/E,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAA9C,CAAhB,CACI+E,EAASL,CACRA,EAAQM,CAAAA,KAAR,CAAc,OAAd,CAAL,EAAgC,GAAAzH,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqBkF,CAArB,CAAhC,GACEK,CACA,CADS7M,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ4J,CAAAA,eAAZ,CAA4B,YAA5B,CAA0C/E,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAnD,CACT;AAAApE,CAAA,EAAQmJ,CAAR,CAAiB,KAAjB,CAAyBL,CAAzB,CAAmC,KAFrC,CAMA,OAFA9I,EAEA,EAFQ,OAER,CAFkBiJ,CAElB,CAF4B,QAE5B,CAFuCA,CAEvC,CAFiD,KAEjD,CAFyDE,CAEzD,CAFkE,IAElE,CADIF,CACJ,CADc,SACd,CAD0B1B,CAC1B,CADmC,KACnC,CArB2C,CAwB7CjL,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,eAAA,CAAyBA,CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,mBAEzBA,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,mBAAA,CAA6B,QAAQ,CAAC8E,CAAD,CAAQ,CAE3C,IAAMiI,EAAwC,OAAxCA,GAAQjI,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAAd,CACIG,EACA/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CACIvC,CADJ,CACW,MADX,CACmBiI,CAAA,CAAQ/M,CAAAA,CAAAA,OAAAA,CAAAA,GAAIe,CAAAA,iBAAZ,CAAgCf,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UADvD,CADAwF,EAGA,OAJJ,CAKIkD,EAASjL,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkL,CAAAA,eAAJ,CAAoBpG,CAApB,CAA2B,IAA3B,CACbmG,EAAA,CAASjL,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0M,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAwBnG,CAAxB,CACLiI,EAAJ,GACEhF,CADF,CACc,GADd,CACoBA,CADpB,CAGA,OAAO,SAAP,CAAmBA,CAAnB,CAA+B,OAA/B,CAAyCkD,CAAzC,CAAkD,KAZP,CAe7CjL;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CAEpC,IAAMkI,EACFhN,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZ,CAAoB7C,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAApB,CAAgDC,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAzD,CADJ,CAEMC,EAAY/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImC,CAAAA,gBAAnC,CAAZ4F,EAAoE,GAF1E,CAGM2D,EAAY1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,IAAvB,CAA6B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImC,CAAAA,gBAAjC,CAAZuJ,EAAkE,GAHxE,CAIMuB,EAAYjN,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,IAAvB,CAA6B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImC,CAAAA,gBAAjC,CAAZ8K,EAAkE,GAJxE,CAKIhC,EAASjL,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkL,CAAAA,eAAJ,CAAoBpG,CAApB,CAA2B,IAA3B,CACbmG,EAAA,CAASjL,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0M,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAwBnG,CAAxB,CAET,IAAI,GAAAO,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqBS,CAArB,CAAJ,EAAuC,GAAA1C,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqBoE,CAArB,CAAvC;AACI,GAAArG,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqB2F,CAArB,CADJ,CACqC,CAEnC,IAAMC,EAAK3F,MAAA,CAAOQ,CAAP,CAALmF,EAA0B3F,MAAA,CAAOmE,CAAP,CAChChI,EAAA,CAAO,OAAP,CAAiBsJ,CAAjB,CAA6B,KAA7B,CAAqCjF,CAArC,CAAiD,IAAjD,CAAwDiF,CAAxD,EACKE,CAAA,CAAK,MAAL,CAAc,MADnB,EAC6BxB,CAD7B,CACyC,IADzC,CACgDsB,CAC1CG,EAAAA,CAAO3F,IAAK4F,CAAAA,GAAL,CAAS7F,MAAA,CAAO0F,CAAP,CAAT,CAMbvJ,EAAA,EALa,CAAbA,GAAIyJ,CAAJzJ,CACEA,CADFA,EACUwJ,CAAA,CAAK,IAAL,CAAY,IADtBxJ,EAGEA,CAHFA,GAGWwJ,CAAA,CAAK,MAAL,CAAc,MAHzBxJ,EAGmCyJ,CAHnCzJ,CAKA,GAAQ,OAAR,CAAkBuH,CAAlB,CAA2B,KAA3B,CAXmC,CADrC,IAcEvH,EA2BA,CA3BO,EA2BP,CAzBI2J,CAyBJ,CAzBetF,CAyBf,CAxBKA,CAAU+E,CAAAA,KAAV,CAAgB,OAAhB,CAwBL,EAxBkC,GAAAzH,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqBS,CAArB,CAwBlC,GAvBEsF,CAEA,CADIrN,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ4J,CAAAA,eAAZ,CAA4BI,CAA5B,CAAwC,QAAxC,CAAkDnF,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAA3D,CACJ,CAAApE,CAAA,EAAQ2J,CAAR,CAAmB,KAAnB,CAA2BtF,CAA3B,CAAuC,KAqBzC,EAnBI8E,CAmBJ,CAnBanB,CAmBb,CAlBKA,CAAUoB,CAAAA,KAAV,CAAgB,OAAhB,CAkBL,EAlBkC,GAAAzH,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqBoE,CAArB,CAkBlC;CAjBEmB,CAEA,CADI7M,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ4J,CAAAA,eAAZ,CAA4BI,CAA5B,CAAwC,MAAxC,CAAgDnF,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAzD,CACJ,CAAApE,CAAA,EAAQmJ,CAAR,CAAiB,KAAjB,CAAyBnB,CAAzB,CAAqC,KAevC,EAXM4B,CAWN,CAVItN,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ4J,CAAAA,eAAZ,CAA4BI,CAA5B,CAAwC,MAAxC,CAAgDnF,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAzD,CAUJ,CATApE,CASA,EATQ4J,CASR,CATiB,KASjB,CAPE5J,CAOF,CARI,GAAA2B,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqB2F,CAArB,CAAJ,CACEvJ,CADF,EACU8D,IAAK4F,CAAAA,GAAL,CAASH,CAAT,CADV,CACgC,KADhC,EAGEvJ,CAHF,EAGU,MAHV,CAGmBuJ,CAHnB,CAG+B,MAH/B,CAQA,CAFAvJ,CAEA,CAHAA,CAGA,EAHQ,MAGR,CAHiB2J,CAGjB,CAH4B,KAG5B,CAHoCR,CAGpC,CAH6C,OAG7C,GAFQ7M,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MAEZ,CAFqB8C,CAErB,CAF8B,MAE9B,CAFuCA,CAEvC,CAFgD,KAEhD,EADA5J,CACA,EADQ,KACR,CAAAA,CAAA,EAAQ,OAAR,CAAkBsJ,CAAlB,CAA8B,KAA9B,CAAsCK,CAAtC,CAAiD,IAAjD,CAAwDC,CAAxD,CACI,UADJ,CACiBN,CADjB,CAC6B,MAD7B,CACsCH,CADtC,CAC+C,KAD/C,CACuDG,CADvD,CAEI,MAFJ,CAEaH,CAFb,CAEsB,IAFtB,CAE6BG,CAF7B,CAEyC,MAFzC,CAEkDM,CAFlD,CAE2D,OAF3D,CAGIrC,CAHJ;AAGa,KAEf,OAAOvH,EAxD6B,CA2DtC1D,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,gBAAA,CAA0B,QAAQ,CAAC8E,CAAD,CAAQ,CAExC,IAAMkI,EACFhN,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ2E,CAAAA,OAAZ,CAAoB7C,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAApB,CAAgDC,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAzD,CADJ,CAEMC,EACF/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImC,CAAAA,gBAAnC,CADE4F,EACsD,IAH5D,CAIIkD,EAASjL,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkL,CAAAA,eAAJ,CAAoBpG,CAApB,CAA2B,IAA3B,CACbmG,EAAA,CAASjL,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0M,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAwBnG,CAAxB,CAIT,OADI,WACJ,CADkBiD,CAClB,CAD8B,MAC9B,CADuCiF,CACvC,CADmD,OACnD,CAD6D/B,CAC7D,CADsE,KAV9B,CAc1CjL;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,wBAAA,CAAkC,QAAQ,CAAC8E,CAAD,CAAQ,CAEhD,IAAIyI,EAAO,EACPvN,EAAAA,CAAAA,OAAAA,CAAAA,GAAI4K,CAAAA,gBAAR,GAEE2C,CAFF,EAEUvN,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI4K,CAAAA,gBAAjB,CAAmC9F,CAAnC,CAFV,CAII9E,EAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAR,GAGEyC,CAHF,EAGUvN,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAjB,CAAmChG,CAAnC,CAHV,CAKA,IAAI9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAI4K,CAAAA,gBAAR,CAA0B,CACxB,IAAM4C,EAAO1I,CAAM2I,CAAAA,eAAN,EACTD,EAAJ,EAAY,CAACA,CAAKE,CAAAA,oBAAlB,GAIEH,CAJF,EAIUvN,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI4K,CAAAA,gBAAjB,CAAmC4C,CAAnC,CAJV,CAFwB,CAS1B,OAAQ1I,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAAR,EACE,KAAK,OAAL,CACE,MAAO2F,EAAP,CAAc,UAChB,MAAK,UAAL,CACE,MAAOA,EAAP,CAAc,aAJlB,CAMA,KAAMtE,MAAA,CAAM,yBAAN,CAAN;AA3BgD,C,CCzHlD,IAAA,iCAAA,EAKAjJ;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqB,QAAQ,CAAC8E,CAAD,CAAQ,CAEnC,IAAI6I,EAAI,CAAR,CACIjK,EAAO,EACP1D,EAAAA,CAAAA,OAAAA,CAAAA,GAAI4K,CAAAA,gBAAR,GAEElH,CAFF,EAEU1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI4K,CAAAA,gBAAjB,CAAmC9F,CAAnC,CAFV,CAIA,GAAG,CACD,IAAA8I,EAAgB5N,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,IAAvB,CAA8B6I,CAA9B,CAAiC3N,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAArC,CAAhBqL,EAAoE,OACpE,KAAAC,EAAa7N,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkL,CAAAA,eAAJ,CAAoBpG,CAApB,CAA2B,IAA3B,CAAkC6I,CAAlC,CACT3N,EAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAR,GACE+C,CADF,CACe7N,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwF,CAAAA,WAAJ,CACIxF,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAjB,CAAmChG,CAAnC,CADJ,CAC+C9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MADnD,CADf,CAGMqD,CAHN,CAKAnK,EAAA,GAAa,CAAJ,CAAAiK,CAAA,CAAQ,QAAR,CAAmB,EAA5B,EAAkC,MAAlC,CAA2CC,CAA3C,CAA2D,OAA3D,CACIC,CADJ,CACiB,GACjBF,EAAA,EAVC,CAAH,MAWS7I,CAAMgJ,CAAAA,QAAN,CAAe,IAAf,CAAsBH,CAAtB,CAXT,CAaA,IAAI7I,CAAMgJ,CAAAA,QAAN,CAAe,MAAf,CAAJ;AAA8B9N,CAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAlC,CACE+C,CAMA,CANa7N,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkL,CAAAA,eAAJ,CAAoBpG,CAApB,CAA2B,MAA3B,CAMb,CALI9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAKR,GAJE+C,CAIF,CAJe7N,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwF,CAAAA,WAAJ,CACIxF,CAAAA,CAAAA,OAAAA,CAAAA,GAAI6K,CAAAA,QAAJ,CAAa7K,CAAAA,CAAAA,OAAAA,CAAAA,GAAI8K,CAAAA,gBAAjB,CAAmChG,CAAnC,CADJ,CAC+C9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIwK,CAAAA,MADnD,CAIf,CAFMqD,CAEN,EAAAnK,CAAA,EAAQ,WAAR,CAAsBmK,CAAtB,CAAmC,GAErC,OAAOnK,EAAP,CAAc,IA9BqB,CAiCrC1D,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,eAAA,CAAyBA,CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAEzBA;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAIrC,IAAM8D,EADFU,CAAC,GAAM,IAAPA,CAAa,IAAO,IAApBA,CAA0B,GAAM,GAAhCA,CAAqC,IAAO,IAA5CA,CAAkD,GAAM,GAAxDA,CAA6D,IAAO,IAApEA,CACa,CAAUxE,CAAM8C,CAAAA,aAAN,CAAoB,IAApB,CAAV,CAAjB,CACMd,EAAsB,IAAd,GAAC8B,CAAD,EAAmC,IAAnC,GAAsBA,CAAtB,CAA2C5I,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0B,CAAAA,cAA/C,CAC2C1B,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyB,CAAAA,gBAF7D,CAGMsG,EAAY/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,GAAvB,CAA4BgC,CAA5B,CAAZiB,EAAkD,GAClD2D,EAAAA,CAAY1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,GAAvB,CAA4BgC,CAA5B,CAAZ4E,EAAkD,GAExD,OAAO,CADM3D,CACN,CADkB,GAClB,CADwBa,CACxB,CADmC,GACnC,CADyC8C,CACzC,CAAO5E,CAAP,CAV8B,CAavC9G;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,eAAA,CAAyB,QAAQ,CAAC8E,CAAD,CAAQ,CAEvC,IAAM8D,EAA0C,KAA/B,GAAC9D,CAAM8C,CAAAA,aAAN,CAAoB,IAApB,CAAD,CAAwC,IAAxC,CAA+C,IAAhE,CACMd,EACY,IAAd,GAAC8B,CAAD,CAAsB5I,CAAAA,CAAAA,OAAAA,CAAAA,GAAI+B,CAAAA,iBAA1B,CAA8C/B,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgC,CAAAA,gBAFtD,CAGI+F,EAAY/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,GAAvB,CAA4BgC,CAA5B,CACZ4E,EAAAA,CAAY1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,GAAvB,CAA4BgC,CAA5B,CAChB,IAAKiB,CAAL,EAAmB2D,CAAnB,CAIO,CAEL,IAAMqC,EAAgC,IAAd,GAACnF,CAAD,CAAsB,MAAtB,CAA+B,OAClDb,EAAL,GACEA,CADF,CACcgG,CADd,CAGKrC,EAAL,GACEA,CADF,CACcqC,CADd,CANK,CAJP,IAGErC,EAAA,CADA3D,CACA,CADY,OAad,OAAO,CADMA,CACN,CADkB,GAClB,CADwBa,CACxB,CADmC,GACnC,CADyC8C,CACzC,CAAO5E,CAAP,CAtBgC,CAyBzC9G,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CAEpC,IAAMgC,EAAQ9G,CAAAA,CAAAA,OAAAA,CAAAA,GAAIe,CAAAA,iBAGlB,OAAO,CADM,GACN,EAFWf,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+BgC,CAA/B,CAEX,EAFoD,MAEpD,EAAOA,CAAP,CAL6B,CAQtC9G;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAGrC,MAAO,CADuC,MAAjCpB,GAACoB,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAADlE,CAA2C,MAA3CA,CAAoD,OAC1D,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAX,CAH8B,CAMvCH,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,UAAA,CAAoB,QAAQ,CAAC8E,CAAD,CAAQ,CAElC,MAAO,CAAC,MAAD,CAAS9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAb,CAF2B,CAKpCH;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAErC,IAAMkJ,EACFhO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,IAAvB,CAA6B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkC,CAAAA,iBAAjC,CADE8L,EACqD,OAD3D,CAEMC,EACFjO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkC,CAAAA,iBAAnC,CADE+L,EACuD,MACvDC,EAAAA,CACFlO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkC,CAAAA,iBAAnC,CADEgM,EACuD,MAE7D,OAAO,CADMF,CACN,CADiB,KACjB,CADyBC,CACzB,CADsC,KACtC,CAD8CC,CAC9C,CAAOlO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIkC,CAAAA,iBAAX,CAT8B,C,CCtFvC,IAAA,iCAAA,EAOAlC,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,kBAAA,CAA4B,QAAQ,CAAC8E,CAAD,CAAQ,CAE1C,MAAO,CAAC,SAAD,CAAY9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAhB,CAFmC,CAK5CP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,iBAAA,CAA2B,QAAQ,CAAC8E,CAAD,CAAQ,CAGzC,IADA,IAAIpB,EAAW4E,KAAJ,CAAUxD,CAAMoD,CAAAA,UAAhB,CAAX,CACSzC,EAAI,CAAb,CAAgBA,CAAhB,CAAoBX,CAAMoD,CAAAA,UAA1B,CAAsCzC,CAAA,EAAtC,CACE/B,CAAA,CAAK+B,CAAL,CAAA,CAAUzF,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA+BW,CAA/B,CAAkCzF,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAtC,CAAV,EAA+D,MAEjEmB,EAAA,CAAO,QAAP,CAAkBA,CAAKK,CAAAA,IAAL,CAAU,IAAV,CAAlB,CAAoC,GACpC,OAAO,CAACL,CAAD,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAPkC,CAU3CP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CAEpC,IAAM0D,EAAexI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,cAArB,CAAqC,aAArC,CACZzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADQ,CAAqC,8IAArC,CAArB,CASMyF,EAAUnO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAV4L,EAA4D,MAC5DC,EAAAA,CAAcpO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA8B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAlC,CAAd6L,EAA+D,GAErE,OAAO,CADM5F,CACN,CADqB,GACrB,CAD2B2F,CAC3B,CADqC,IACrC,CAD4CC,CAC5C,CAD0D,GAC1D,CAAOpO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAd6B,CAiBtCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CAEpC,IAAM0D,EAAexI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,QAArB,CAA+B,aAA/B,CACZzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADQ,CAA+B,qHAA/B,CASf4D,EAAAA,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAAP+J,EAA0D,IAChE,OAAO,CAAC9D,CAAD,CAAgB,GAAhB,CAAsB8D,CAAtB,CAA6B,GAA7B,CAAkCtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAtC,CAZ6B,CAetCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAIrC,MAAO,CAAC,QAAD,EADH9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAApC,CACG,EADyD,SACzD,EAAwB,GAAxB,CAA6BP,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAjC,CAJ8B,CAOvCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAErC,IAAMiD,EAAY/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAZwF,EAA8D,IAApE,CACM2D,EAAY1L,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIM,CAAAA,YAApC,CAAZoL,EAAiE,IADvE,CAEI5C,EAAa,KAFjB,CAGIC,EAAkB,EAClBjE,EAAMlC,CAAAA,SAAUmE,CAAAA,OAAQC,CAAAA,aAA5B,GACE8B,CACA,CADa,IACb,CAAAC,CAAA,CAAkB,MAFpB,CA6BA,OAAO,EAxB4B,OAAnCP,GAAI1D,CAAM8C,CAAAA,aAAN,CAAoB,KAApB,CAAJY,CAEiBxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,SAArB,CAAgC,aAAhC,CACRzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADI,CAAgC,wIAAhC;AAGkCK,CAHlC,CAAgC,mBAAhC,CAKRD,CALQ,CAAgC,QAAhC,CAFjBN,CAYiBxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJ,CAAqB,aAArB,CAAoC,aAApC,CACRzI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADI,CAAoC,oCAApC,CAEPI,CAFO,CAAoC,oHAApC,CAImCC,CAJnC,CAAoC,8BAApC,CAYV,EADqB,GACrB,CAD2B2C,CAC3B,CADuC,IACvC,CAD8C3D,CAC9C,CAD0D,GAC1D,CAAO/H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAnC8B,CAsCvCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,cAAA,CAAwB,QAAQ,CAAC8E,CAAD,CAAQ,CAEtC,IAAMuJ,EAAOvJ,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAAPyG,EAAsC,KAE5C,QADcvJ,CAAM8C,CAAAA,aAAN,CAAoB,OAApB,CACd,EAD8C,YAC9C,EACE,KAAK,OAAL,CACE,GAAa,KAAb,GAAIyG,CAAJ,CAIE,MAAO,EAFHrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIM,CAAAA,YAApC,CAEG,EAFkD,SAElD,EADa,KACb,CAAON,CAAAA,CAAAA,OAAAA,CAAAA,GAAIM,CAAAA,YAAX,CACF,IAAa,YAAb,GAAI+N,CAAJ,CAIL,MAAO,CADM,cACN,EAFHrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAEG,EAFgD,SAEhD,EAD8B,GAC9B,CAAOvC,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CACF,IAAa,QAAb,GAAI8N,CAAJ,CAGL,MAAO,cAAP,EADIrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CACJ;AADuD,SACvD,EAA+B,MAEjC,MACF,MAAK,MAAL,CACE,GAAa,KAAb,GAAI8L,CAAJ,CAIE,MAAO,CADM,MACN,EAFHrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAEG,EAFgD,SAEhD,EADsB,GACtB,CAAOvC,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CACF,IAAa,YAAb,GAAI8N,CAAJ,CAIL,MAAO,CADM,YACN,EAFHrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAEG,EAFgD,SAEhD,EAD4B,GAC5B,CAAOvC,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CACF,IAAa,QAAb,GAAI8N,CAAJ,CAGL,MAAO,YAAP,EADIrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CACJ,EADuD,SACvD,EAA6B,MAE/B,MACF,MAAK,YAAL,CACE,IAAM6E,EAAKpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB;AAAuB,IAAvB,CACX,IAAa,KAAb,GAAIuJ,CAAJ,CAIE,MAAO,EAFHrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIM,CAAAA,YAApC,CAEG,EAFkD,SAElD,EADa,GACb,CADmB8G,CACnB,CADwB,GACxB,CAAOpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIM,CAAAA,YAAX,CACF,IAAa,YAAb,GAAI+N,CAAJ,CAIL,MAAO,CADM,eACN,EAFHrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAEG,EAFgD,SAEhD,EAD+B,IAC/B,CADsC6E,CACtC,CAD2C,SAC3C,CAAOpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CACF,IAAa,QAAb,GAAI8N,CAAJ,CAGL,MAAO,eAAP,EADIrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CACJ,EADuD,SACvD,EAAgC,IAAhC,CAAuC6E,CAAvC,CAA4C,SAE9C,MAEF,MAAK,UAAL,CACE,GAAa,KAAb,GAAIiH,CAAJ,CAKE,MAJM/B,EAIC,CAHHtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB;AAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAGG,EAHgD,SAGhD,CAFD6E,CAEC,CAFIpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,IAAvB,CAA6B,CAA7B,CAAgC,CAAA,CAAhC,CAEJ,CAAA,CADM,cACN,CADuBwH,CACvB,CAD8B,IAC9B,CADqClF,CACrC,CAD0C,SAC1C,CAAOpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CACF,IAAa,YAAb,GAAI8N,CAAJ,EAAsC,QAAtC,GAA6BA,CAA7B,CAAgD,CAC/C/B,CAAAA,CACFtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CADE+J,EACiD,SACjDlF,EAAAA,CACFpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,IAAvB,CAA6B,CAA7B,CAAgC,CAAA,CAAhC,CAAuC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIsB,CAAAA,iBAA3C,CACEoC,EAAAA,CAAO,eAAPA,CAAyB4I,CAAzB5I,CAAgC,UAAhCA,CAA6C4I,CAA7C5I,CAAoD,MAApDA,CAA6D0D,CAA7D1D,CACF,SACJ,IAAa,YAAb,GAAI2K,CAAJ,CACE,MAAO,CAAC3K,CAAD,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CACF,IAAa,QAAb,GAAI8N,CAAJ,CACL,MAAO3K,EAAP,CAAc,KAVqC,CAavD,KACF,MAAK,QAAL,CACQ4I,CAAAA;AAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAAP+J,EAA0D,SAChE,IAAa,KAAb,GAAI+B,CAAJ,CAOE,MAAO,CANcrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,uBAArBA,CAA8C,aAA9CA,CAClBxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADcF,CAA8C,yDAA9CA,CAMd,CADqB,GACrB,CAD2B8D,CAC3B,CADkC,GAClC,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CACF,IAAa,YAAb,GAAI8N,CAAJ,CAUL,MAAO,CARHrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,8BAArBA,CAAqD,aAArDA,CACDxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADHF,CAAqD,qGAArDA,CAQG;AADqB,GACrB,CAD2B8D,CAC3B,CADkC,GAClC,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CACF,IAAa,QAAb,GAAI8N,CAAJ,CAML,MALqBrO,EAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,0BAArBA,CAAiD,aAAjDA,CAClBxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADcF,CAAiD,0DAAjDA,CAKrB,CAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,MAtGzC,CA2GA,KAAMrD,MAAA,CAAM,yCAAN,CAAN,CA/GsC,CAkHxCjJ;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,cAAA,CAAwB,QAAQ,CAAC8E,CAAD,CAAQ,CAGtC,IAAMuJ,EAAOvJ,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAAPyG,EAAsC,KAA5C,CACMrF,EAAQlE,CAAM8C,CAAAA,aAAN,CAAoB,OAApB,CAARoB,EAAwC,YAD9C,CAEMT,EAAQvI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,IAAvB,CAA6B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImC,CAAAA,gBAAjC,CAARoG,EAA8D,MAapE,QAAQS,CAAR,EACE,KAAK,OAAL,CACE,GAAa,KAAb,GAAIqF,CAAJ,CAGE,OADIrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIM,CAAAA,YAAnC,CACJ,EADwD,SACxD,EAAc,QAAd,CAAyBiI,CAAzB,CAAiC,KAC5B,IAAa,QAAb,GAAI8F,CAAJ,CAGL,MAAO,gBAAP,EADIrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CACJ,EADsD,SACtD,EAAiC,IAAjC,CAAwCgG,CAAxC,CAAgD,MAElD,MACF,MAAK,MAAL,CACQ+D,CAAAA,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB;AAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAP+J,EAAyD,SAC/D,IAAa,KAAb,GAAI+B,CAAJ,CAME,MALqBrO,EAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,qBAArBA,CAA4C,aAA5CA,CAClBxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADcF,CAA4C,8DAA5CA,CAKrB,CAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,IAAnC,CAA0C/D,CAA1C,CAAkD,MAC7C,IAAa,QAAb,GAAI8F,CAAJ,CACL,MAAO,aAAP,CAAuB/B,CAAvB,CAA8B,IAA9B,CAAqC/D,CAArC,CAA6C,MAE/C,MAEF,MAAK,YAAL,CACQnB,CAAAA,CAAKpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,IAAvB,CACX,IAAa,KAAb,GAAIuJ,CAAJ,CAGE,OADIrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIM,CAAAA,YAAnC,CACJ,EADwD,SACxD,EAAc,GAAd,CAAoB8G,CAApB,CAAyB,MAAzB,CAAkCmB,CAAlC,CAA0C,KACrC,IAAa,QAAb,GAAI8F,CAAJ,CAGL,MAAO,eAAP;CADIrO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CACJ,EADsD,SACtD,EAAgC,IAAhC,CAAuC6E,CAAvC,CAA4C,OAA5C,CAAsDmB,CAAtD,CAA8D,MAEhE,MAEF,MAAK,UAAL,CACQ+D,CAAAA,CAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAP+J,EAAyD,SACzDlF,EAAAA,CAAKpH,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,IAAvB,CAA6B,CAA7B,CACX,IAAa,KAAb,GAAIuJ,CAAJ,CAME,MALqBrO,EAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,oBAArBA,CAA2C,aAA3CA,CAClBxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADcF,CAA2C,qEAA3CA,CAKrB,CAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,IAAnC,CAA0ClF,CAA1C,CAA+C,IAA/C,CAAsDmB,CAAtD,CAA8D,MACzD,IAAa,QAAb,GAAI8F,CAAJ,CAML,MALqBrO,EAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,uBAArBA;AAA8C,aAA9CA,CAClBxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADcF,CAA8C,4FAA9CA,CAKrB,CAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,IAAnC,CAA0ClF,CAA1C,CAA+C,IAA/C,CAAsDmB,CAAtD,CAA8D,MAEhE,MAEF,MAAK,QAAL,CACE+F,CAAA,CACItO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAI2B,CAAAA,eAAnC,CADJ,EAC2D,SArE7D,IAAI2M,CAAWxB,CAAAA,KAAX,CAAiB,SAAjB,CAAJ,CACE,CAAA,CAAO,EADT,KAAA,CAGMyB,CAAAA,CAAUvO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ4J,CAAAA,eAAZ,CAA4B,UAA5B,CAAwC/E,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAAjD,CAChB,KAAMpE,EAAO6K,CAAP7K,CAAiB,MAAjBA,CAA0B4K,CAA1B5K,CAAuC,KAC7C4K,EAAA,CAAaC,CACb,EAAA,CAAO7K,CANP,CAwEQ8K,CAAAA,CAAOxO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIgD,CAAAA,OAAQ4J,CAAAA,eAAZ,CAA4B,OAA5B,CAAqC/E,CAAAA,CAAAA,4BAAAA,CAAAA,QAASC,CAAAA,QAA9C,CACbpE;CAAA,EAAQ8K,CAAR,CAAe,mBAAf,CAAqClC,CAArC,CAA4C,SAC5C,IAAa,KAAb,GAAI+B,CAAJ,CAEE,MADA3K,EACA,EADQ4I,CACR,CADe,GACf,CADqBkC,CACrB,CAD4B,MAC5B,CADqCjG,CACrC,CAD6C,KAC7C,CACK,IAAa,QAAb,GAAI8F,CAAJ,CAEL,MADA3K,EACA,EADQ,eACR,CAD0B4I,CAC1B,CADiC,IACjC,CADwCkC,CACxC,CAD+C,OAC/C,CADyDjG,CACzD,CADiE,MACjE,CAvEN,CA2EA,KAAMU,MAAA,CAAM,yCAAN,CAAN,CA7FsC,CAgGxCjJ;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,gBAAA,CAA0B,QAAQ,CAAC8E,CAAD,CAAQ,CAExC,IAAMwH,EAAOtM,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAP+J,EAAyD,SAA/D,CACMpD,EAASpE,CAAM8C,CAAAA,aAAN,CAAoB,QAApB,CADf,CAEMuB,EAASrE,CAAM8C,CAAAA,aAAN,CAAoB,QAApB,CAEf,IAAe,OAAf,GAAIsB,CAAJ,EAAqC,MAArC,GAA0BC,CAA1B,CAEO,GACHmD,CAAKQ,CAAAA,KAAL,CAAW,SAAX,CADG,EAES,UAFT,GAEF5D,CAFE,EAEkC,YAFlC,GAEuBC,CAFvB,CAEiD,CAItD,OAAQD,CAAR,EACE,KAAK,YAAL,CACEE,CAAA,CAAMpJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,KAAvB,CACN,MACF,MAAK,UAAL,CACEsE,CAAA,CAAMpJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,KAAvB,CAA8B,CAA9B,CAAiC,CAAA,CAAjC,CAAwC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIsB,CAAAA,iBAA5C,CACN8H,EAAA,CAAM,QAAN,CAAiBkD,CAAjB,CAAwB,MAAxB,CAAiClD,CACjC,MACF,MAAK,OAAL,CACEA,CAAA,CAAM,GACN,MACF,SACE,KAAMH,MAAA,CAAM,sCAAN,CAAN;AAZJ,CAgBA,OAAQE,CAAR,EACE,KAAK,YAAL,CACEE,CAAA,CAAMrJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,KAAvB,CAA8B,CAA9B,CAAiC,CAAA,CAAjC,CAAwC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIsB,CAAAA,iBAA5C,CACG+H,EAAT,EAAe,KAGb1D,EAAA,CAFE,GAAAN,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqBmF,MAAA,CAAOrD,CAAP,CAArB,CAAJ,EACIqD,MAAA,CAAOrD,CAAP,CAAY0D,CAAAA,KAAZ,CAAkB,UAAlB,CADJ,CAEEnH,CAFF,CAEYyD,CAFZ,CAIEzD,CAJF,EAIY,GAJZ,CAIkByD,CAJlB,CAIwB,GAJxB,CAMAzD,EAAA,EAAU,MACV,MACF,MAAK,UAAL,CACE0D,CAAA,CAAMrJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,KAAvB,CAA8B,CAA9B,CAAiC,CAAA,CAAjC,CAAwC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIsB,CAAAA,iBAA5C,CACNqE,EAAA,CAAS,QAAT,CAAoB2G,CAApB,CAA2B,MAA3B,CAAoCjD,CAApC,CAA0C,KAGxC1D,EAAA,CAFE,GAAAN,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqBmF,MAAA,CAAOrD,CAAP,CAArB,CAAJ,EACIqD,MAAA,CAAOrD,CAAP,CAAY0D,CAAAA,KAAZ,CAAkB,UAAlB,CADJ,CAEEnH,CAFF,CAEYyD,CAFZ,CAIEzD,CAJF,EAIY,GAJZ,CAIkByD,CAJlB,CAIwB,GAJxB,CAMA,MACF,MAAK,MAAL,CACEzD,CAAA,CAAS,QAAT,CAAoB2G,CAApB,CAA2B,MAGzB3G;CAAA,CAFE,GAAAN,CAAAA,CAAAA,mCAAYiC,CAAAA,QAAZ,EAAqBmF,MAAA,CAAOrD,CAAP,CAArB,CAAJ,EACIqD,MAAA,CAAOrD,CAAP,CAAY0D,CAAAA,KAAZ,CAAkB,UAAlB,CADJ,CAEEnH,CAFF,CAEYyD,CAFZ,CAIEzD,CAJF,EAIY,GAJZ,CAIkByD,CAJlB,CAIwB,GAJxB,CAMA,MACF,SACE,KAAMH,MAAA,CAAM,sCAAN,CAAN,CAhCJ,CAkCAvF,CAAA,CAAO,cAAP,CAAwB4I,CAAxB,CAA+B,IAA/B,CAAsClD,CAAtC,CAA4C,IAA5C,CAAmDzD,CAAnD,CAA4D,GAtDN,CAFjD,IAyDA,CACL,IAAMyD,EAAMpJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,KAAvB,CACNuE,EAAAA,CAAMrJ,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuG,CAAAA,WAAJ,CAAgBzB,CAAhB,CAAuB,KAAvB,CAuBZpB,EAAA,CAtBqB1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,mBAArBA,CAA0C,aAA1CA,CACdxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADUF,CAA0C,moBAA1CA,CAsBrB;AAAsB,GAAtB,CAA4B8D,CAA5B,CAAmC,KAAnC,CAA4CpD,CAA5C,CAAqD,KAArD,CAA8DE,CAA9D,CAAoE,KAApE,CACID,CADJ,CACa,KADb,CACsBE,CADtB,CAC4B,GA1BvB,CA4BP,MAAO,CAAC3F,CAAD,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CA7FiC,CAgG1CP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,UAAA,CAAoB,QAAQ,CAAC8E,CAAD,CAAQ,CAElC,IAAM2J,EAAWzO,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAXkM,EAA6D,SAAnE,CACMC,EAAiD,GAArC,GAAA5J,CAAM8C,CAAAA,aAAN,CAAoB,WAApB,CAAA,CAA2C,CAA3C,CAA+C,CAAC,CAC5DhC,EAAAA,CAAOd,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAmBb,OAAO,CAlBc5H,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,YAArBA,CAAmC,aAAnCA,CACZxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADQF,CAAmC,4UAAnCA,CAkBd,CADY,GACZ;AADkBiG,CAClB,CAD6B,KAC7B,CADqC7I,CACrC,CAD4C,KAC5C,CADoD8I,CACpD,CADgE,GAChE,CAAW1O,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAf,CAvB2B,CA0BpCP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,WAAA,CAAqB,QAAQ,CAAC8E,CAAD,CAAQ,CAEnC,IAAI6J,EAAc3O,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAAlB,CACMqM,EAAc5O,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAAdqM,EAAiE,IACjEP,EAAAA,CAAOvJ,CAAM8C,CAAAA,aAAN,CAAoB,MAApB,CAEb,IAAa,OAAb,GAAIyG,CAAJ,CACOM,CAGL,GAFEA,CAEF,CAFgB,IAEhB,EAAAnG,CAAA,CAAe,SAJjB,KAKO,IAAa,MAAb,GAAI6F,CAAJ,CACAM,CAGL,GAFEA,CAEF,CAFgB,SAEhB,EAAAnG,CAAA,CAAe,SAJV,KAML,MAAMS,MAAA,CAAM,gBAAN,CAAyBoF,CAAzB,CAAN,CAGF,MAAO,CADM7F,CACN,CADqB,GACrB,CAD2BoG,CAC3B,CADyC,IACzC,CADgDD,CAChD,CAD8D,GAC9D,CAAO3O,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CApB4B,CAuBrCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAIrC,MAAO,CADM,gBACN,EAFM9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAEN,EAFwD,IAExD,EADgC,GAChC,CAAOvC,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAJ8B,C,CCjdvC,IAAA,kCAAA,EAKAP,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAGrC,MAAO,CADM9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAImE,CAAAA,MAAJT,CAAWoB,CAAM8C,CAAAA,aAAN,CAAoB,QAApB,CAAXlE,CACN,CAAO1D,CAAAA,CAAAA,OAAAA,CAAAA,GAAIG,CAAAA,YAAX,CAH8B,CAMvCH,EAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,aAAA,CAAuB,QAAQ,CAAC8E,CAAD,CAAQ,CAQrC,MAAO,CANc9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,eAArBA,CAAsC,aAAtCA,CACZxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADQF,CAAsC,wFAAtCA,CAMd,CADqB,IACrB,CAAOxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAR8B,CAWvCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,UAAA,CAAoB,QAAQ,CAAC8E,CAAD,CAAQ,CAElC,IAAM+J,EAAM7O,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,KAAvB,CAA8B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAlC,CAANsM,EAAuD,CAA7D,CACMC,EAAQ9O,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAARuM,EAA2D,CAC3DC,EAAAA,CAAO/O,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,MAAvB,CAA+B9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAnC,CAAPwM,EAAyD,CAc/D,OAAO,CAbc/O,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,YAArBA,CAAmC,aAAnCA,CACZxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADQF,CAAmC,0VAAnCA,CAad;AADqB,GACrB,CAD2BqG,CAC3B,CADiC,IACjC,CADwCC,CACxC,CADgD,IAChD,CADuDC,CACvD,CAD8D,GAC9D,CAAO/O,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAlB2B,CAqBpCP;CAAAA,CAAAA,OAAAA,CAAAA,GAAA,CAAA,YAAA,CAAsB,QAAQ,CAAC8E,CAAD,CAAQ,CAEpC,IAAMkK,EAAKhP,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,SAAvB,CAAkC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAtC,CAALyM,EAA0D,WAAhE,CACMC,EAAKjP,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,SAAvB,CAAkC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAAtC,CAAL0M,EAA0D,WAC1DC,EAAAA,CAAQlP,CAAAA,CAAAA,OAAAA,CAAAA,GAAIqH,CAAAA,WAAJ,CAAgBvC,CAAhB,CAAuB,OAAvB,CAAgC9E,CAAAA,CAAAA,OAAAA,CAAAA,GAAIuC,CAAAA,UAApC,CAAR2M,EAA2D,EAqBjE,OAAO,CApBclP,CAAAA,CAAAA,OAAAA,CAAAA,GAAIyI,CAAAA,gBAAJD,CAAqB,cAArBA,CAAqC,aAArCA,CACZxI,CAAAA,CAAAA,OAAAA,CAAAA,GAAI0I,CAAAA,0BADQF,CAAqC,8mBAArCA,CAoBd,CADqB,GACrB;AAD2BwG,CAC3B,CADgC,IAChC,CADuCC,CACvC,CAD4C,IAC5C,CADmDC,CACnD,CAD2D,GAC3D,CAAOlP,CAAAA,CAAAA,OAAAA,CAAAA,GAAIO,CAAAA,mBAAX,CAzB6B,C;;;;;ACzCtC,IAAA,+BAAA","file":"php_compressed.js","sourceRoot":"./"} \ No newline at end of file diff --git a/blockly/python.d.ts b/blockly/python.d.ts new file mode 100644 index 00000000000..e7c91597e98 --- /dev/null +++ b/blockly/python.d.ts @@ -0,0 +1,16 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Type definitions for the Python generator. + * @author samelh@google.com (Sam El-Husseini) + */ + +/// + +import * as Blockly from './core'; +declare const python: any; +export = python; diff --git a/blockly/python.js b/blockly/python.js new file mode 100644 index 00000000000..752bf99a5e2 --- /dev/null +++ b/blockly/python.js @@ -0,0 +1,23 @@ +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define(['./core', './python_compressed.js'], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(require('./core'), require('./python_compressed.js')); + } else { // Browser + root.BlocklyPython = factory(root.Blockly, root.BlocklyPython); + } +}(this, function(Blockly, BlocklyPython) { +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Python generator module; just a wrapper for + * python_compressed.js. + */ + +return BlocklyPython; +})); diff --git a/blockly/python_compressed.js b/blockly/python_compressed.js new file mode 100644 index 00000000000..bb2ca5d71c0 --- /dev/null +++ b/blockly/python_compressed.js @@ -0,0 +1,126 @@ +// Do not edit this file; automatically generated. + +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define(["./blockly_compressed.js"], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(require("./blockly_compressed.js")); + } else { // Browser + var factoryExports = factory(root.Blockly); + root.Blockly.Python = factoryExports; + } +}(this, function(__parent__) { +var $=__parent__.__namespace__; +/* + + Copyright 2012 Google LLC + SPDX-License-Identifier: Apache-2.0 +*/ +var module$contents$Blockly$Python_Python=new $.module$exports$Blockly$Generator.Generator("Python");module$contents$Blockly$Python_Python.addReservedWords("False,None,True,and,as,assert,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,or,pass,print,raise,return,try,while,with,yield,NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,ArithmeticError,AssertionError,AttributeError,BaseException,BlockingIOError,BrokenPipeError,BufferError,BytesWarning,ChildProcessError,ConnectionAbortedError,ConnectionError,ConnectionRefusedError,ConnectionResetError,DeprecationWarning,EOFError,Ellipsis,EnvironmentError,Exception,FileExistsError,FileNotFoundError,FloatingPointError,FutureWarning,GeneratorExit,IOError,ImportError,ImportWarning,IndentationError,IndexError,InterruptedError,IsADirectoryError,KeyError,KeyboardInterrupt,LookupError,MemoryError,ModuleNotFoundError,NameError,NotADirectoryError,NotImplemented,NotImplementedError,OSError,OverflowError,PendingDeprecationWarning,PermissionError,ProcessLookupError,RecursionError,ReferenceError,ResourceWarning,RuntimeError,RuntimeWarning,StandardError,StopAsyncIteration,StopIteration,SyntaxError,SyntaxWarning,SystemError,SystemExit,TabError,TimeoutError,TypeError,UnboundLocalError,UnicodeDecodeError,UnicodeEncodeError,UnicodeError,UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,ZeroDivisionError,_,__build_class__,__debug__,__doc__,__import__,__loader__,__name__,__package__,__spec__,abs,all,any,apply,ascii,basestring,bin,bool,buffer,bytearray,bytes,callable,chr,classmethod,cmp,coerce,compile,complex,copyright,credits,delattr,dict,dir,divmod,enumerate,eval,exec,execfile,exit,file,filter,float,format,frozenset,getattr,globals,hasattr,hash,help,hex,id,input,int,intern,isinstance,issubclass,iter,len,license,list,locals,long,map,max,memoryview,min,next,object,oct,open,ord,pow,print,property,quit,range,raw_input,reduce,reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,sum,super,tuple,type,unichr,unicode,vars,xrange,zip"); +module$contents$Blockly$Python_Python.ORDER_ATOMIC=0;module$contents$Blockly$Python_Python.ORDER_COLLECTION=1;module$contents$Blockly$Python_Python.ORDER_STRING_CONVERSION=1;module$contents$Blockly$Python_Python.ORDER_MEMBER=2.1;module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL=2.2;module$contents$Blockly$Python_Python.ORDER_EXPONENTIATION=3;module$contents$Blockly$Python_Python.ORDER_UNARY_SIGN=4;module$contents$Blockly$Python_Python.ORDER_BITWISE_NOT=4; +module$contents$Blockly$Python_Python.ORDER_MULTIPLICATIVE=5;module$contents$Blockly$Python_Python.ORDER_ADDITIVE=6;module$contents$Blockly$Python_Python.ORDER_BITWISE_SHIFT=7;module$contents$Blockly$Python_Python.ORDER_BITWISE_AND=8;module$contents$Blockly$Python_Python.ORDER_BITWISE_XOR=9;module$contents$Blockly$Python_Python.ORDER_BITWISE_OR=10;module$contents$Blockly$Python_Python.ORDER_RELATIONAL=11;module$contents$Blockly$Python_Python.ORDER_LOGICAL_NOT=12; +module$contents$Blockly$Python_Python.ORDER_LOGICAL_AND=13;module$contents$Blockly$Python_Python.ORDER_LOGICAL_OR=14;module$contents$Blockly$Python_Python.ORDER_CONDITIONAL=15;module$contents$Blockly$Python_Python.ORDER_LAMBDA=16;module$contents$Blockly$Python_Python.ORDER_NONE=99; +module$contents$Blockly$Python_Python.ORDER_OVERRIDES=[[module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL,module$contents$Blockly$Python_Python.ORDER_MEMBER],[module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL,module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL],[module$contents$Blockly$Python_Python.ORDER_MEMBER,module$contents$Blockly$Python_Python.ORDER_MEMBER],[module$contents$Blockly$Python_Python.ORDER_MEMBER,module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL],[module$contents$Blockly$Python_Python.ORDER_LOGICAL_NOT, +module$contents$Blockly$Python_Python.ORDER_LOGICAL_NOT],[module$contents$Blockly$Python_Python.ORDER_LOGICAL_AND,module$contents$Blockly$Python_Python.ORDER_LOGICAL_AND],[module$contents$Blockly$Python_Python.ORDER_LOGICAL_OR,module$contents$Blockly$Python_Python.ORDER_LOGICAL_OR]];module$contents$Blockly$Python_Python.isInitialized=!1; +module$contents$Blockly$Python_Python.init=function(a){Object.getPrototypeOf(this).init.call(this);this.PASS=this.INDENT+"pass\n";this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$exports$Blockly$Names.Names(this.RESERVED_WORDS_);this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);for(var b=[],c=(0,$.module$exports$Blockly$Variables.allDeveloperVariables)(a),d=0;dc?"int("+a+" - "+-c+")":"int("+a+")",d&&(a="-"+a));return a};$.Blockly.Python=module$contents$Blockly$Python_Python;var module$exports$Blockly$Python$variables={};$.Blockly.Python.variables_get=function(a){return["self."+$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.variables_set=function(a){var b=$.Blockly.Python.valueToCode(a,"VALUE",$.Blockly.Python.ORDER_NONE)||"0";return"self."+$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" = "+b+"\n"}; +$.Blockly.Python.variables_call=function(a){var b=$.Blockly.Python.valueToCode(a,"VALUE",$.Blockly.Python.ORDER_NONE)||"__str__()";return"self."+$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+"."+b+"\n"}; +$.Blockly.Python.variables_call_out=function(a){var b=$.Blockly.Python.valueToCode(a,"VALUE",$.Blockly.Python.ORDER_NONE)||"__str__()";return["self."+$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+"."+b,$.Blockly.Python.ORDER_ATOMIC]};/* + + Copyright 2018 Google LLC + SPDX-License-Identifier: Apache-2.0 +*/ +var module$exports$Blockly$Python$variablesDynamic={};$.Blockly.Python.variables_get_dynamic=$.Blockly.Python.variables_get;$.Blockly.Python.variables_set_dynamic=$.Blockly.Python.variables_set;var module$exports$Blockly$Python$texts={};$.Blockly.Python.text=function(a){return[$.Blockly.Python.quote_(a.getFieldValue("TEXT")),$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.text_multiline=function(a){a=$.Blockly.Python.multiline_quote_(a.getFieldValue("TEXT"));var b=-1!==a.indexOf("+")?$.Blockly.Python.ORDER_ADDITIVE:$.Blockly.Python.ORDER_ATOMIC;return[a,b]}; +var module$contents$Blockly$Python$texts_strRegExp=/^\s*'([^']|\\')*'\s*$/,module$contents$Blockly$Python$texts_forceString=function(a){return module$contents$Blockly$Python$texts_strRegExp.test(a)?[a,$.Blockly.Python.ORDER_ATOMIC]:["str("+a+")",$.Blockly.Python.ORDER_FUNCTION_CALL]}; +$.Blockly.Python.text_join=function(a){switch(a.itemCount_){case 0:return["''",$.Blockly.Python.ORDER_ATOMIC];case 1:return a=$.Blockly.Python.valueToCode(a,"ADD0",$.Blockly.Python.ORDER_NONE)||"''",module$contents$Blockly$Python$texts_forceString(a);case 2:var b=$.Blockly.Python.valueToCode(a,"ADD0",$.Blockly.Python.ORDER_NONE)||"''";a=$.Blockly.Python.valueToCode(a,"ADD1",$.Blockly.Python.ORDER_NONE)||"''";return[module$contents$Blockly$Python$texts_forceString(b)[0]+" + "+module$contents$Blockly$Python$texts_forceString(a)[0], +$.Blockly.Python.ORDER_ADDITIVE];default:b=[];for(var c=0;ca?$.Blockly.Python.ORDER_UNARY_SIGN:$.Blockly.Python.ORDER_ATOMIC;return[a,b]}; +$.Blockly.Python.math_arithmetic=function(a){var b={ADD:[" + ",$.Blockly.Python.ORDER_ADDITIVE],MINUS:[" - ",$.Blockly.Python.ORDER_ADDITIVE],MULTIPLY:[" * ",$.Blockly.Python.ORDER_MULTIPLICATIVE],DIVIDE:[" / ",$.Blockly.Python.ORDER_MULTIPLICATIVE],POWER:[" ** ",$.Blockly.Python.ORDER_EXPONENTIATION]}[a.getFieldValue("OP")],c=b[0];b=b[1];var d=$.Blockly.Python.valueToCode(a,"A",b)||"0";a=$.Blockly.Python.valueToCode(a,"B",b)||"0";return[d+c+a,b]}; +$.Blockly.Python.math_single=function(a){var b=a.getFieldValue("OP");if("NEG"===b){var c=$.Blockly.Python.valueToCode(a,"NUM",$.Blockly.Python.ORDER_UNARY_SIGN)||"0";return["-"+c,$.Blockly.Python.ORDER_UNARY_SIGN]}a="SIN"===b||"COS"===b||"TAN"===b?$.Blockly.Python.valueToCode(a,"NUM",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0":$.Blockly.Python.valueToCode(a,"NUM",$.Blockly.Python.ORDER_NONE)||"0";switch(b){case "ABS":c="math.fabs("+a+")";break;case "ROOT":c="math.sqrt("+a+")";break;case "LN":c="math.log("+ +a+")";break;case "LOG10":c="math.log10("+a+")";break;case "EXP":c="math.exp("+a+")";break;case "POW10":c="math.pow(10,"+a+")";break;case "ROUND":c="round("+a+")";break;case "ROUNDUP":c="math.ceil("+a+")";break;case "ROUNDDOWN":c="math.floor("+a+")";break;case "SIN":c="math.sin("+a+" / 180.0 * math.pi)";break;case "COS":c="math.cos("+a+" / 180.0 * math.pi)";break;case "TAN":c="math.tan("+a+" / 180.0 * math.pi)"}if(c)return[c,$.Blockly.Python.ORDER_FUNCTION_CALL];switch(b){case "ASIN":c="math.asin("+ +a+") / math.pi * 180";break;case "ACOS":c="math.acos("+a+") / math.pi * 180";break;case "ATAN":c="math.atan("+a+") / math.pi * 180";break;default:throw Error("Unknown math operator: "+b);}return[c,$.Blockly.Python.ORDER_MULTIPLICATIVE]}; +$.Blockly.Python.math_constant=function(a){var b={PI:["math.pi",$.Blockly.Python.ORDER_MEMBER],E:["math.e",$.Blockly.Python.ORDER_MEMBER],GOLDEN_RATIO:["(1 + math.sqrt(5)) / 2",$.Blockly.Python.ORDER_MULTIPLICATIVE],SQRT2:["math.sqrt(2)",$.Blockly.Python.ORDER_MEMBER],SQRT1_2:["math.sqrt(1.0 / 2)",$.Blockly.Python.ORDER_MEMBER],INFINITY:["float('inf')",$.Blockly.Python.ORDER_ATOMIC]};a=a.getFieldValue("CONSTANT");return b[a]}; +$.Blockly.Python.math_number_property=function(a){var b={EVEN:[" % 2 == 0",$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],ODD:[" % 2 == 1",$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],WHOLE:[" % 1 == 0",$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],POSITIVE:[" > 0",$.Blockly.Python.ORDER_RELATIONAL,$.Blockly.Python.ORDER_RELATIONAL],NEGATIVE:[" < 0",$.Blockly.Python.ORDER_RELATIONAL,$.Blockly.Python.ORDER_RELATIONAL], +DIVISIBLE_BY:[null,$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],PRIME:[null,$.Blockly.Python.ORDER_NONE,$.Blockly.Python.ORDER_FUNCTION_CALL]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value;b=b.next().value;e=$.Blockly.Python.valueToCode(a,"NUMBER_TO_CHECK",e)||"0";if("PRIME"===c)a=$.Blockly.Python.provideFunction_("math_isPrime","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(n):\n # https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n # If n is not a number but a string, try parsing it.\n if not isinstance(n, Number):\n try:\n n = float(n)\n except:\n return False\n if n == 2 or n == 3:\n return True\n # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3.\n if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0:\n return False\n # Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for x in range(6, int(math.sqrt(n)) + 2, 6):\n if n % (x - 1) == 0 or n % (x + 1) == 0:\n return False\n return True\n")+ +"("+e+")";else if("DIVISIBLE_BY"===c){a=$.Blockly.Python.valueToCode(a,"DIVISOR",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0";if("0"===a)return["False",$.Blockly.Python.ORDER_ATOMIC];a=e+" % "+a+" == 0"}else a=e+d;return[a,b]}; +$.Blockly.Python.math_change=function(a){var b=$.Blockly.Python.valueToCode(a,"DELTA",$.Blockly.Python.ORDER_ADDITIVE)||"0";a=$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE);return a+" = ("+a+" if isinstance("+a+", Number) else 0) + "+b+"\n"};$.Blockly.Python.math_round=$.Blockly.Python.math_single;$.Blockly.Python.math_trig=$.Blockly.Python.math_single; +$.Blockly.Python.math_on_list=function(a){var b=a.getFieldValue("OP");a=$.Blockly.Python.valueToCode(a,"LIST",$.Blockly.Python.ORDER_NONE)||"[]";switch(b){case "SUM":b="sum("+a+")";break;case "MIN":b="min("+a+")";break;case "MAX":b="max("+a+")";break;case "AVERAGE":b=$.Blockly.Python.provideFunction_("math_mean","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(myList):\n localList = [e for e in myList if isinstance(e, Number)]\n if not localList: return\n return float(sum(localList)) / len(localList)\n")+ +"("+a+")";break;case "MEDIAN":b=$.Blockly.Python.provideFunction_("math_median","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(myList):\n localList = sorted([e for e in myList if isinstance(e, Number)])\n if not localList: return\n if len(localList) % 2 == 0:\n return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0\n else:\n return localList[(len(localList) - 1) // 2]\n")+"("+a+")";break;case "MODE":b=$.Blockly.Python.provideFunction_("math_modes","\ndef "+ +$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+'(some_list):\n modes = []\n # Using a lists of [item, count] to keep count rather than dict\n # to avoid "unhashable" errors when the counted item is itself a list or dict.\n counts = []\n maxCount = 1\n for item in some_list:\n found = False\n for count in counts:\n if count[0] == item:\n count[1] += 1\n maxCount = max(maxCount, count[1])\n found = True\n if not found:\n counts.append([item, 1])\n for counted_item, item_count in counts:\n if item_count == maxCount:\n modes.append(counted_item)\n return modes\n')+ +"("+a+")";break;case "STD_DEV":b=$.Blockly.Python.provideFunction_("math_standard_deviation","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(numbers):\n n = len(numbers)\n if n == 0: return\n mean = float(sum(numbers)) / n\n variance = sum((x - mean) ** 2 for x in numbers) / n\n return math.sqrt(variance)\n")+"("+a+")";break;case "RANDOM":b="random.choice("+a+")";break;default:throw Error("Unknown operator: "+b);}return[b,$.Blockly.Python.ORDER_FUNCTION_CALL]}; +$.Blockly.Python.math_modulo=function(a){var b=$.Blockly.Python.valueToCode(a,"DIVIDEND",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0";a=$.Blockly.Python.valueToCode(a,"DIVISOR",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0";return[b+" % "+a,$.Blockly.Python.ORDER_MULTIPLICATIVE]}; +$.Blockly.Python.math_constrain=function(a){var b=$.Blockly.Python.valueToCode(a,"VALUE",$.Blockly.Python.ORDER_NONE)||"0",c=$.Blockly.Python.valueToCode(a,"LOW",$.Blockly.Python.ORDER_NONE)||"0";a=$.Blockly.Python.valueToCode(a,"HIGH",$.Blockly.Python.ORDER_NONE)||"float('inf')";return["min(max("+b+", "+c+"), "+a+")",$.Blockly.Python.ORDER_FUNCTION_CALL]}; +$.Blockly.Python.math_random_int=function(a){var b=$.Blockly.Python.valueToCode(a,"FROM",$.Blockly.Python.ORDER_NONE)||"0";a=$.Blockly.Python.valueToCode(a,"TO",$.Blockly.Python.ORDER_NONE)||"0";return["random.randint("+b+", "+a+")",$.Blockly.Python.ORDER_FUNCTION_CALL]};$.Blockly.Python.math_random_float=function(a){return["random.random()",$.Blockly.Python.ORDER_FUNCTION_CALL]}; +$.Blockly.Python.math_atan2=function(a){var b=$.Blockly.Python.valueToCode(a,"X",$.Blockly.Python.ORDER_NONE)||"0";return["math.atan2("+($.Blockly.Python.valueToCode(a,"Y",$.Blockly.Python.ORDER_NONE)||"0")+", "+b+") / math.pi * 180",$.Blockly.Python.ORDER_MULTIPLICATIVE]};var module$exports$Blockly$Python$loops={},module$contents$Blockly$Python$loops_initialArg="(rclpy.ok() and self.getCancelFlag())"; +$.Blockly.Python.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(parseInt(a.getFieldValue("TIMES"),10)):$.Blockly.Python.valueToCode(a,"TIMES",$.Blockly.Python.ORDER_NONE)||"0";b=(0,$.module$exports$Blockly$utils$string.isNumber)(b)?parseInt(b,10):"int("+b+")";var c=$.Blockly.Python.statementToCode(a,"DO");c=$.Blockly.Python.addLoopTrap(c,a)||$.Blockly.Python.PASS;return"for self."+$.Blockly.Python.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE)+ +" in range("+b+"):\n"+c};$.Blockly.Python.controls_repeat=$.Blockly.Python.controls_repeat_ext; +$.Blockly.Python.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.Python.valueToCode(a,"BOOL",b?$.Blockly.Python.ORDER_LOGICAL_NOT:$.Blockly.Python.ORDER_NONE)||"False",d=$.Blockly.Python.statementToCode(a,"DO");d=$.Blockly.Python.addLoopTrap(d,a)||$.Blockly.Python.PASS;b&&(c="not "+c);return""!==module$contents$Blockly$Python$loops_initialArg?"while "+module$contents$Blockly$Python$loops_initialArg+" and ("+c+"):\n"+d:"while "+c+":\n"+d}; +$.Blockly.Python.controls_for=function(a){var b=$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.Python.valueToCode(a,"FROM",$.Blockly.Python.ORDER_NONE)||"0",d=$.Blockly.Python.valueToCode(a,"TO",$.Blockly.Python.ORDER_NONE)||"0",e=$.Blockly.Python.valueToCode(a,"BY",$.Blockly.Python.ORDER_NONE)||"1",f=$.Blockly.Python.statementToCode(a,"DO");f=$.Blockly.Python.addLoopTrap(f,a)||$.Blockly.Python.PASS;var g="";a=function(){return $.Blockly.Python.provideFunction_("upRange", +"\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(self, start, stop, step):\n while "+module$contents$Blockly$Python$loops_initialArg+" and start <= stop:\n yield start\n start += abs(step)\n")};var h=function(){return $.Blockly.Python.provideFunction_("downRange","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(self, start, stop, step):\n while "+module$contents$Blockly$Python$loops_initialArg+" and start >= stop:\n yield start\n start -= abs(step)\n")};if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&& +(0,$.module$exports$Blockly$utils$string.isNumber)(d)&&(0,$.module$exports$Blockly$utils$string.isNumber)(e))c=Number(c),d=Number(d),e=Math.abs(Number(e)),0===c%1&&0===d%1&&0===e%1?(c<=d?(d++,a=0===c&&1===e?d:c+", "+d,1!==e&&(a+=", "+e)):(d--,a=c+", "+d+", -"+e),a="range("+a+")"):(a=c",GTE:">="}[a.getFieldValue("OP")],c=$.Blockly.Python.ORDER_RELATIONAL,d=$.Blockly.Python.valueToCode(a,"A",c)||"0";a=$.Blockly.Python.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; +$.Blockly.Python.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"and":"or",c="and"===b?$.Blockly.Python.ORDER_LOGICAL_AND:$.Blockly.Python.ORDER_LOGICAL_OR,d=$.Blockly.Python.valueToCode(a,"A",c);a=$.Blockly.Python.valueToCode(a,"B",c);if(d||a){var e="and"===b?"True":"False";d||(d=e);a||(a=e)}else a=d="False";return[d+" "+b+" "+a,c]};$.Blockly.Python.logic_negate=function(a){return["not "+($.Blockly.Python.valueToCode(a,"BOOL",$.Blockly.Python.ORDER_LOGICAL_NOT)||"True"),$.Blockly.Python.ORDER_LOGICAL_NOT]}; +$.Blockly.Python.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"True":"False",$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.logic_null=function(a){return["None",$.Blockly.Python.ORDER_ATOMIC]}; +$.Blockly.Python.logic_ternary=function(a){var b=$.Blockly.Python.valueToCode(a,"IF",$.Blockly.Python.ORDER_CONDITIONAL)||"False",c=$.Blockly.Python.valueToCode(a,"THEN",$.Blockly.Python.ORDER_CONDITIONAL)||"None";a=$.Blockly.Python.valueToCode(a,"ELSE",$.Blockly.Python.ORDER_CONDITIONAL)||"None";return[c+" if "+b+" else "+a,$.Blockly.Python.ORDER_CONDITIONAL]};var module$exports$Blockly$Python$lists={};$.Blockly.Python.lists_create_empty=function(a){return["[]",$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c>>0,$.$jscomp.propertyToPolyfillSymbol[e]= -$.$jscomp.IS_SYMBOL_NATIVE?$.$jscomp.global.Symbol(e):$.$jscomp.POLYFILL_PREFIX+c+"$"+e),$.$jscomp.defineProperty(d,$.$jscomp.propertyToPolyfillSymbol[e],{configurable:!0,writable:!0,value:b})))};$.$jscomp.assign=$.$jscomp.TRUST_ES6_POLYFILLS&&"function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c=f}},"es6","es3");$.$jscomp.initSymbol=function(){}; -$.$jscomp.polyfill("Symbol",function(a){if(a)return a;var b=function(f,g){this.$jscomp$symbol$id_=f;$.$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:g})};b.prototype.toString=function(){return this.$jscomp$symbol$id_};var c="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",d=0,e=function(f){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new b(c+(f||"")+"_"+d++,f)};return e},"es6","es3"); -$.$jscomp.polyfill("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;cc&&(c=Math.max(0,e+c));if(null==d||d>e)d=e;d=Number(d);0>d&&(d=Math.max(0,e+d));for(c=Number(c||0);c>>/g,a),module$exports$Blockly$Css.content="",a=document.createElement("style"),a.id="blockly-common-style",b=document.createTextNode(b),a.appendChild(b),document.head.insertBefore(a,document.head.firstChild)))};module$exports$Blockly$Css.content='\n.blocklySvg {\n background-color: #fff;\n outline: none;\n overflow: hidden; /* IE overflows by default. */\n position: absolute;\n display: block;\n}\n\n.blocklyWidgetDiv {\n display: none;\n position: absolute;\n z-index: 99999; /* big value for bootstrap3 compatibility */\n}\n\n.injectionDiv {\n height: 100%;\n position: relative;\n overflow: hidden; /* So blocks in drag surface disappear at edges */\n touch-action: none;\n}\n\n.blocklyNonSelectable {\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n}\n\n.blocklyWsDragSurface {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n/* Added as a separate rule with multiple classes to make it more specific\n than a bootstrap rule that selects svg:root. See issue #1275 for context.\n*/\n.blocklyWsDragSurface.blocklyOverflowVisible {\n overflow: visible;\n}\n\n.blocklyBlockDragSurface {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: visible !important;\n z-index: 50; /* Display below toolbox, but above everything else. */\n}\n\n.blocklyBlockCanvas.blocklyCanvasTransitioning,\n.blocklyBubbleCanvas.blocklyCanvasTransitioning {\n transition: transform .5s;\n}\n\n.blocklyTooltipDiv {\n background-color: #ffffc7;\n border: 1px solid #ddc;\n box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);\n color: #000;\n display: none;\n font: 9pt sans-serif;\n opacity: .9;\n padding: 2px;\n position: absolute;\n z-index: 100000; /* big value for bootstrap3 compatibility */\n}\n\n.blocklyDropDownDiv {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 1000;\n display: none;\n border: 1px solid;\n border-color: #dadce0;\n background-color: #fff;\n border-radius: 2px;\n padding: 4px;\n box-shadow: 0 0 3px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownDiv.blocklyFocused {\n box-shadow: 0 0 6px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownContent {\n max-height: 300px; // @todo: spec for maximum height.\n overflow: auto;\n overflow-x: hidden;\n position: relative;\n}\n\n.blocklyDropDownArrow {\n position: absolute;\n left: 0;\n top: 0;\n width: 16px;\n height: 16px;\n z-index: -1;\n background-color: inherit;\n border-color: inherit;\n}\n\n.blocklyDropDownButton {\n display: inline-block;\n float: left;\n padding: 0;\n margin: 4px;\n border-radius: 4px;\n outline: none;\n border: 1px solid;\n transition: box-shadow .1s;\n cursor: pointer;\n}\n\n.blocklyArrowTop {\n border-top: 1px solid;\n border-left: 1px solid;\n border-top-left-radius: 4px;\n border-color: inherit;\n}\n\n.blocklyArrowBottom {\n border-bottom: 1px solid;\n border-right: 1px solid;\n border-bottom-right-radius: 4px;\n border-color: inherit;\n}\n\n.blocklyResizeSE {\n cursor: se-resize;\n fill: #aaa;\n}\n\n.blocklyResizeSW {\n cursor: sw-resize;\n fill: #aaa;\n}\n\n.blocklyResizeLine {\n stroke: #515A5A;\n stroke-width: 1;\n}\n\n.blocklyHighlightedConnectionPath {\n fill: none;\n stroke: #fc3;\n stroke-width: 4px;\n}\n\n.blocklyPathLight {\n fill: none;\n stroke-linecap: round;\n stroke-width: 1;\n}\n\n.blocklySelected>.blocklyPathLight {\n display: none;\n}\n\n.blocklyDraggable {\n /* backup for browsers (e.g. IE11) that don\'t support grab */\n cursor: url("<<>>/handopen.cur"), auto;\n cursor: grab;\n cursor: -webkit-grab;\n}\n\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n.blocklyDragging {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n /* Changes cursor on mouse down. Not effective in Firefox because of\n https://bugzilla.mozilla.org/show_bug.cgi?id=771241 */\n.blocklyDraggable:active {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n/* Change the cursor on the whole drag surface in case the mouse gets\n ahead of block during a drag. This way the cursor is still a closed hand.\n */\n.blocklyBlockDragSurface .blocklyDraggable {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n.blocklyDragging.blocklyDraggingDelete {\n cursor: url("<<>>/handdelete.cur"), auto;\n}\n\n.blocklyDragging>.blocklyPath,\n.blocklyDragging>.blocklyPathLight {\n fill-opacity: .8;\n stroke-opacity: .8;\n}\n\n.blocklyDragging>.blocklyPathDark {\n display: none;\n}\n\n.blocklyDisabled>.blocklyPath {\n fill-opacity: .5;\n stroke-opacity: .5;\n}\n\n.blocklyDisabled>.blocklyPathLight,\n.blocklyDisabled>.blocklyPathDark {\n display: none;\n}\n\n.blocklyInsertionMarker>.blocklyPath,\n.blocklyInsertionMarker>.blocklyPathLight,\n.blocklyInsertionMarker>.blocklyPathDark {\n fill-opacity: .2;\n stroke: none;\n}\n\n.blocklyMultilineText {\n font-family: monospace;\n}\n\n.blocklyNonEditableText>text {\n pointer-events: none;\n}\n\n.blocklyFlyout {\n position: absolute;\n z-index: 20;\n}\n\n.blocklyText text {\n cursor: default;\n}\n\n/*\n Don\'t allow users to select text. It gets annoying when trying to\n drag a block and selected text moves instead.\n*/\n.blocklySvg text,\n.blocklyBlockDragSurface text {\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n cursor: inherit;\n}\n\n.blocklyHidden {\n display: none;\n}\n\n.blocklyFieldDropdown:not(.blocklyHidden) {\n display: block;\n}\n\n.blocklyIconGroup {\n cursor: default;\n}\n\n.blocklyIconGroup:not(:hover),\n.blocklyIconGroupReadonly {\n opacity: .6;\n}\n\n.blocklyIconShape {\n fill: #00f;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n.blocklyIconSymbol {\n fill: #fff;\n}\n\n.blocklyMinimalBody {\n margin: 0;\n padding: 0;\n}\n\n.blocklyHtmlInput {\n border: none;\n border-radius: 4px;\n height: 100%;\n margin: 0;\n outline: none;\n padding: 0;\n width: 100%;\n text-align: center;\n display: block;\n box-sizing: border-box;\n}\n\n/* Edge and IE introduce a close icon when the input value is longer than a\n certain length. This affects our sizing calculations of the text input.\n Hiding the close icon to avoid that. */\n.blocklyHtmlInput::-ms-clear {\n display: none;\n}\n\n.blocklyMainBackground {\n stroke-width: 1;\n stroke: #c6c6c6; /* Equates to #ddd due to border being off-pixel. */\n}\n\n.blocklyMutatorBackground {\n fill: #fff;\n stroke: #ddd;\n stroke-width: 1;\n}\n\n.blocklyFlyoutBackground {\n fill: #ddd;\n fill-opacity: .8;\n}\n\n.blocklyMainWorkspaceScrollbar {\n z-index: 20;\n}\n\n.blocklyFlyoutScrollbar {\n z-index: 30;\n}\n\n.blocklyScrollbarHorizontal,\n.blocklyScrollbarVertical {\n position: absolute;\n outline: none;\n}\n\n.blocklyScrollbarBackground {\n opacity: 0;\n}\n\n.blocklyScrollbarHandle {\n fill: #ccc;\n}\n\n.blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,\n.blocklyScrollbarHandle:hover {\n fill: #bbb;\n}\n\n/* Darken flyout scrollbars due to being on a grey background. */\n/* By contrast, workspace scrollbars are on a white background. */\n.blocklyFlyout .blocklyScrollbarHandle {\n fill: #bbb;\n}\n\n.blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,\n.blocklyFlyout .blocklyScrollbarHandle:hover {\n fill: #aaa;\n}\n\n.blocklyInvalidInput {\n background: #faa;\n}\n\n.blocklyVerticalMarker {\n stroke-width: 3px;\n fill: rgba(255,255,255,.5);\n pointer-events: none;\n}\n\n.blocklyComputeCanvas {\n position: absolute;\n width: 0;\n height: 0;\n}\n\n.blocklyNoPointerEvents {\n pointer-events: none;\n}\n\n.blocklyContextMenu {\n border-radius: 4px;\n max-height: 100%;\n}\n\n.blocklyDropdownMenu {\n border-radius: 2px;\n padding: 0 !important;\n}\n\n.blocklyDropdownMenu .blocklyMenuItem {\n /* 28px on the left for icon or checkbox. */\n padding-left: 28px;\n}\n\n/* BiDi override for the resting state. */\n.blocklyDropdownMenu .blocklyMenuItemRtl {\n /* Flip left/right padding for BiDi. */\n padding-left: 5px;\n padding-right: 28px;\n}\n\n.blocklyWidgetDiv .blocklyMenu {\n background: #fff;\n border: 1px solid transparent;\n box-shadow: 0 0 3px 1px rgba(0,0,0,.3);\n font: normal 13px Arial, sans-serif;\n margin: 0;\n outline: none;\n padding: 4px 0;\n position: absolute;\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 100%;\n z-index: 20000; /* Arbitrary, but some apps depend on it... */\n}\n\n.blocklyWidgetDiv .blocklyMenu.blocklyFocused {\n box-shadow: 0 0 6px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownDiv .blocklyMenu {\n background: inherit; /* Compatibility with gapi, reset from goog-menu */\n border: inherit; /* Compatibility with gapi, reset from goog-menu */\n font: normal 13px "Helvetica Neue", Helvetica, sans-serif;\n outline: none;\n position: relative; /* Compatibility with gapi, reset from goog-menu */\n z-index: 20000; /* Arbitrary, but some apps depend on it... */\n}\n\n/* State: resting. */\n.blocklyMenuItem {\n border: none;\n color: #000;\n cursor: pointer;\n list-style: none;\n margin: 0;\n /* 7em on the right for shortcut. */\n min-width: 7em;\n padding: 6px 15px;\n white-space: nowrap;\n}\n\n/* State: disabled. */\n.blocklyMenuItemDisabled {\n color: #ccc;\n cursor: inherit;\n}\n\n/* State: hover. */\n.blocklyMenuItemHighlight {\n background-color: rgba(0,0,0,.1);\n}\n\n/* State: selected/checked. */\n.blocklyMenuItemCheckbox {\n height: 16px;\n position: absolute;\n width: 16px;\n}\n\n.blocklyMenuItemSelected .blocklyMenuItemCheckbox {\n background: url(<<>>/sprites.png) no-repeat -48px -16px;\n float: left;\n margin-left: -24px;\n position: static; /* Scroll with the menu. */\n}\n\n.blocklyMenuItemRtl .blocklyMenuItemCheckbox {\n float: right;\n margin-right: -24px;\n}\n';var module$contents$Blockly$utils$string_wrapLine,module$contents$Blockly$utils$string_wrapScore,module$contents$Blockly$utils$string_wrapMutate,module$contents$Blockly$utils$string_wrapToText; -$.module$exports$Blockly$utils$string={startsWith:function(a,b){return 0===a.lastIndexOf(b,0)},shortestStringLength:function(a){return a.length?a.reduce(function(b,c){return b.lengthb&&(b=c[d].length);var e=-Infinity,f=1;do{d=e;var g=a;a=[];e=c.length/f;for(var h=1,k=0;kd);return g}; -module$contents$Blockly$utils$string_wrapScore=function(a,b,c){for(var d=[0],e=[],f=0;fd&&(d=h,e=g)}return e?module$contents$Blockly$utils$string_wrapMutate(a,e,c):b};module$contents$Blockly$utils$string_wrapToText=function(a,b){for(var c=[],d=0;dmodule$exports$Blockly$Tooltip.RADIUS_OK&&(0,module$exports$Blockly$Tooltip.hide)()}else module$contents$Blockly$Tooltip_poisonedElement!==module$contents$Blockly$Tooltip_element&&(clearTimeout(module$contents$Blockly$Tooltip_showPid),module$contents$Blockly$Tooltip_lastX=a.pageX,module$contents$Blockly$Tooltip_lastY=a.pageY,module$contents$Blockly$Tooltip_showPid=setTimeout(module$contents$Blockly$Tooltip_show, -module$exports$Blockly$Tooltip.HOVER_MS))};module$exports$Blockly$Tooltip.dispose=function(){module$contents$Blockly$Tooltip_poisonedElement=module$contents$Blockly$Tooltip_element=null;(0,module$exports$Blockly$Tooltip.hide)()};module$exports$Blockly$Tooltip.hide=function(){module$contents$Blockly$Tooltip_visible&&(module$contents$Blockly$Tooltip_visible=!1,module$contents$Blockly$Tooltip_DIV&&(module$contents$Blockly$Tooltip_DIV.style.display="none"));module$contents$Blockly$Tooltip_showPid&&clearTimeout(module$contents$Blockly$Tooltip_showPid)}; -module$exports$Blockly$Tooltip.block=function(){(0,module$exports$Blockly$Tooltip.hide)();module$contents$Blockly$Tooltip_blocked=!0};module$exports$Blockly$Tooltip.unblock=function(){module$contents$Blockly$Tooltip_blocked=!1}; -var module$contents$Blockly$Tooltip_renderContent=function(){module$contents$Blockly$Tooltip_DIV&&module$contents$Blockly$Tooltip_element&&("function"===typeof module$contents$Blockly$Tooltip_customTooltip?module$contents$Blockly$Tooltip_customTooltip(module$contents$Blockly$Tooltip_DIV,module$contents$Blockly$Tooltip_element):module$contents$Blockly$Tooltip_renderDefaultContent())},module$contents$Blockly$Tooltip_renderDefaultContent=function(){var a=(0,module$exports$Blockly$Tooltip.getTooltipOfObject)(module$contents$Blockly$Tooltip_element); -a=(0,$.module$exports$Blockly$utils$string.wrap)(a,module$exports$Blockly$Tooltip.LIMIT);a=a.split("\n");for(var b=0;bc+window.scrollY&&(e-=module$contents$Blockly$Tooltip_DIV.offsetHeight+2*module$exports$Blockly$Tooltip.OFFSET_Y);a?d=Math.max(module$exports$Blockly$Tooltip.MARGINS-window.scrollX,d):d+module$contents$Blockly$Tooltip_DIV.offsetWidth>b+window.scrollX-2*module$exports$Blockly$Tooltip.MARGINS&&(d=b-module$contents$Blockly$Tooltip_DIV.offsetWidth- -2*module$exports$Blockly$Tooltip.MARGINS);return{x:d,y:e}},module$contents$Blockly$Tooltip_show=function(){if(!module$contents$Blockly$Tooltip_blocked&&(module$contents$Blockly$Tooltip_poisonedElement=module$contents$Blockly$Tooltip_element,module$contents$Blockly$Tooltip_DIV)){module$contents$Blockly$Tooltip_DIV.textContent="";module$contents$Blockly$Tooltip_renderContent();var a=module$contents$Blockly$Tooltip_element.RTL;module$contents$Blockly$Tooltip_DIV.style.direction=a?"rtl":"ltr";module$contents$Blockly$Tooltip_DIV.style.display= -"block";module$contents$Blockly$Tooltip_visible=!0;a=module$contents$Blockly$Tooltip_getPosition(a);var b=a.y;module$contents$Blockly$Tooltip_DIV.style.left=a.x+"px";module$contents$Blockly$Tooltip_DIV.style.top=b+"px"}};var module$exports$Blockly$utils$dom={SVG_NS:"http://www.w3.org/2000/svg",HTML_NS:"http://www.w3.org/1999/xhtml",XLINK_NS:"http://www.w3.org/1999/xlink",NodeType:{ELEMENT_NODE:1,TEXT_NODE:3,COMMENT_NODE:8,DOCUMENT_POSITION_CONTAINED_BY:16}},module$contents$Blockly$utils$dom_cacheWidths=null,module$contents$Blockly$utils$dom_cacheReference=0,module$contents$Blockly$utils$dom_canvasContext=null; -module$exports$Blockly$utils$dom.createSvgElement=function(a,b,c){a=document.createElementNS(module$exports$Blockly$utils$dom.SVG_NS,String(a));for(var d in b)a.setAttribute(d,b[d]);document.body.runtimeStyle&&(a.runtimeStyle=a.currentStyle=a.style);c&&c.appendChild(a);return a};module$exports$Blockly$utils$dom.addClass=function(a,b){var c=a.getAttribute("class")||"";if(-1!==(" "+c+" ").indexOf(" "+b+" "))return!1;c&&(c+=" ");a.setAttribute("class",c+b);return!0}; -module$exports$Blockly$utils$dom.removeClasses=function(a,b){b=b.split(" ");for(var c=0;ce?module$contents$Blockly$WidgetDiv_positionInternal(a,0,c.height+e):module$contents$Blockly$WidgetDiv_positionInternal(a,e,c.height)}; -var module$contents$Blockly$WidgetDiv_calculateX=function(a,b,c,d){return d?Math.min(Math.max(b.right-c.width,a.left),a.right-c.width):Math.max(Math.min(b.left,a.right-c.width),a.left)},module$contents$Blockly$WidgetDiv_calculateY=function(a,b,c){return b.bottom+c.height>=a.bottom?b.top-c.height:b.bottom};var module$exports$Blockly$utils$aria={},module$contents$Blockly$utils$aria_ARIA_PREFIX="aria-",module$contents$Blockly$utils$aria_ROLE_ATTRIBUTE="role";module$exports$Blockly$utils$aria.Role={GRID:"grid",GRIDCELL:"gridcell",GROUP:"group",LISTBOX:"listbox",MENU:"menu",MENUITEM:"menuitem",MENUITEMCHECKBOX:"menuitemcheckbox",OPTION:"option",PRESENTATION:"presentation",ROW:"row",TREE:"tree",TREEITEM:"treeitem"}; -module$exports$Blockly$utils$aria.State={ACTIVEDESCENDANT:"activedescendant",COLCOUNT:"colcount",DISABLED:"disabled",EXPANDED:"expanded",INVALID:"invalid",LABEL:"label",LABELLEDBY:"labelledby",LEVEL:"level",ORIENTATION:"orientation",POSINSET:"posinset",ROWCOUNT:"rowcount",SELECTED:"selected",SETSIZE:"setsize",VALUEMAX:"valuemax",VALUEMIN:"valuemin"};module$exports$Blockly$utils$aria.setRole=function(a,b){a.setAttribute(module$contents$Blockly$utils$aria_ROLE_ATTRIBUTE,b)}; -module$exports$Blockly$utils$aria.setState=function(a,b,c){Array.isArray(c)&&(c=c.join(" "));a.setAttribute(module$contents$Blockly$utils$aria_ARIA_PREFIX+b,c)};var module$exports$Blockly$utils$idGenerator={TEST_ONLY:{}},module$contents$Blockly$utils$idGenerator_nextId=0;module$exports$Blockly$utils$idGenerator.getNextUniqueId=function(){return"blockly-"+(module$contents$Blockly$utils$idGenerator_nextId++).toString(36)};var module$contents$Blockly$utils$idGenerator_soup="!#$%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; -module$exports$Blockly$utils$idGenerator.TEST_ONLY.genUid=function(){for(var a=module$contents$Blockly$utils$idGenerator_soup.length,b=[],c=0;20>c;c++)b[c]=module$contents$Blockly$utils$idGenerator_soup.charAt(Math.random()*a);return b.join("")};module$exports$Blockly$utils$idGenerator.genUid=function(){return module$exports$Blockly$utils$idGenerator.TEST_ONLY.genUid()};var module$exports$Blockly$registry={},module$contents$Blockly$registry_typeMap=Object.create(null);module$exports$Blockly$registry.TEST_ONLY={typeMap:module$contents$Blockly$registry_typeMap};var module$contents$Blockly$registry_nameMap=Object.create(null);module$exports$Blockly$registry.DEFAULT="default";module$exports$Blockly$registry.Type=function(a){this.name_=a};module$exports$Blockly$registry.Type.prototype.toString=function(){return this.name_}; -module$exports$Blockly$registry.Type.CONNECTION_CHECKER=new module$exports$Blockly$registry.Type("connectionChecker");module$exports$Blockly$registry.Type.CURSOR=new module$exports$Blockly$registry.Type("cursor");module$exports$Blockly$registry.Type.EVENT=new module$exports$Blockly$registry.Type("event");module$exports$Blockly$registry.Type.FIELD=new module$exports$Blockly$registry.Type("field");module$exports$Blockly$registry.Type.RENDERER=new module$exports$Blockly$registry.Type("renderer"); -module$exports$Blockly$registry.Type.TOOLBOX=new module$exports$Blockly$registry.Type("toolbox");module$exports$Blockly$registry.Type.THEME=new module$exports$Blockly$registry.Type("theme");module$exports$Blockly$registry.Type.TOOLBOX_ITEM=new module$exports$Blockly$registry.Type("toolboxItem");module$exports$Blockly$registry.Type.FLYOUTS_VERTICAL_TOOLBOX=new module$exports$Blockly$registry.Type("flyoutsVerticalToolbox");module$exports$Blockly$registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX=new module$exports$Blockly$registry.Type("flyoutsHorizontalToolbox"); -module$exports$Blockly$registry.Type.METRICS_MANAGER=new module$exports$Blockly$registry.Type("metricsManager");module$exports$Blockly$registry.Type.BLOCK_DRAGGER=new module$exports$Blockly$registry.Type("blockDragger");module$exports$Blockly$registry.Type.SERIALIZER=new module$exports$Blockly$registry.Type("serializer"); -module$exports$Blockly$registry.register=function(a,b,c,d){if(!(a instanceof module$exports$Blockly$registry.Type)&&"string"!==typeof a||""===String(a).trim())throw Error('Invalid type "'+a+'". The type must be a non-empty string or a Blockly.registry.Type.');a=String(a).toLowerCase();if("string"!==typeof b||""===b.trim())throw Error('Invalid name "'+b+'". The name must be a non-empty string.');var e=b.toLowerCase();if(!c)throw Error("Can not register a null value");var f=module$contents$Blockly$registry_typeMap[a], -g=module$contents$Blockly$registry_nameMap[a];f||(f=module$contents$Blockly$registry_typeMap[a]=Object.create(null),g=module$contents$Blockly$registry_nameMap[a]=Object.create(null));module$contents$Blockly$registry_validate(a,c);if(!d&&f[e])throw Error('Name "'+e+'" with type "'+a+'" already registered.');f[e]=c;g[e]=b}; -var module$contents$Blockly$registry_validate=function(a,b){switch(a){case String(module$exports$Blockly$registry.Type.FIELD):if("function"!==typeof b.fromJson)throw Error('Type "'+a+'" must have a fromJson function');}}; -module$exports$Blockly$registry.unregister=function(a,b){a=String(a).toLowerCase();b=b.toLowerCase();var c=module$contents$Blockly$registry_typeMap[a];c&&c[b]?(delete module$contents$Blockly$registry_typeMap[a][b],delete module$contents$Blockly$registry_nameMap[a][b]):console.warn("Unable to unregister ["+b+"]["+a+"] from the registry.")}; -var module$contents$Blockly$registry_getItem=function(a,b,c){a=String(a).toLowerCase();b=b.toLowerCase();var d=module$contents$Blockly$registry_typeMap[a];if(!d||!d[b]){b="Unable to find ["+b+"]["+a+"] in the registry.";if(c)throw Error(b+" You must require or register a "+a+" plugin.");console.warn(b);return null}return d[b]};module$exports$Blockly$registry.hasItem=function(a,b){a=String(a).toLowerCase();b=b.toLowerCase();return(a=module$contents$Blockly$registry_typeMap[a])?!!a[b]:!1}; -module$exports$Blockly$registry.getClass=function(a,b,c){return module$contents$Blockly$registry_getItem(a,b,c)};module$exports$Blockly$registry.getObject=function(a,b,c){return module$contents$Blockly$registry_getItem(a,b,c)}; -module$exports$Blockly$registry.getAllItems=function(a,b,c){a=String(a).toLowerCase();var d=module$contents$Blockly$registry_typeMap[a];if(!d){d="Unable to find ["+a+"] in the registry.";if(c)throw Error(d+" You must require or register a "+a+" plugin.");console.warn(d);return null}if(!b)return d;a=module$contents$Blockly$registry_nameMap[a];c=Object.create(null);b=Object.keys(d);for(var e=0;eb.oldScale&&(0,module$exports$Blockly$bumpObjects.bumpTopObjectsIntoBounds)(a)}}},module$contents$Blockly$bumpObjects_extractObjectFromEvent=function(a,b){var c=null;switch(b.type){case module$exports$Blockly$Events$utils.CREATE:case module$exports$Blockly$Events$utils.MOVE:(c=a.getBlockById(b.blockId))&&(c=c.getRootBlock());break;case module$exports$Blockly$Events$utils.COMMENT_CREATE:case module$exports$Blockly$Events$utils.COMMENT_MOVE:c= -a.getCommentById(b.commentId)}return c};module$exports$Blockly$bumpObjects.bumpTopObjectsIntoBounds=function(a){var b=a.getMetricsManager();if(b.hasFixedEdges()&&!a.isDragging()){b=b.getScrollMetrics(!0);for(var c=a.getTopBoundedElements(),d=0,e;e=c[d];d++)(0,module$exports$Blockly$bumpObjects.bumpIntoBounds)(a,b,e)}};var module$exports$Blockly$utils$Coordinate={Coordinate:function(a,b){this.x=a;this.y=b}};module$exports$Blockly$utils$Coordinate.Coordinate.prototype.clone=function(){return new module$exports$Blockly$utils$Coordinate.Coordinate(this.x,this.y)};module$exports$Blockly$utils$Coordinate.Coordinate.prototype.scale=function(a){this.x*=a;this.y*=a;return this};module$exports$Blockly$utils$Coordinate.Coordinate.prototype.translate=function(a,b){this.x+=a;this.y+=b;return this}; -module$exports$Blockly$utils$Coordinate.Coordinate.equals=function(a,b){return a===b?!0:a&&b?a.x===b.x&&a.y===b.y:!1};module$exports$Blockly$utils$Coordinate.Coordinate.distance=function(a,b){var c=a.x-b.x;a=a.y-b.y;return Math.sqrt(c*c+a*a)};module$exports$Blockly$utils$Coordinate.Coordinate.magnitude=function(a){return Math.sqrt(a.x*a.x+a.y*a.y)}; -module$exports$Blockly$utils$Coordinate.Coordinate.difference=function(a,b){return new module$exports$Blockly$utils$Coordinate.Coordinate(a.x-b.x,a.y-b.y)};module$exports$Blockly$utils$Coordinate.Coordinate.sum=function(a,b){return new module$exports$Blockly$utils$Coordinate.Coordinate(a.x+b.x,a.y+b.y)};var module$exports$Blockly$utils$Size={Size:function(a,b){this.width=a;this.height=b}};module$exports$Blockly$utils$Size.Size.equals=function(a,b){return a===b?!0:a&&b?a.width===b.width&&a.height===b.height:!1};var module$exports$Blockly$utils$style={getSize:function(a){if("none"!==module$contents$Blockly$utils$style_getStyle(a,"display"))return module$contents$Blockly$utils$style_getSizeWithDisplay(a);var b=a.style,c=b.display,d=b.visibility,e=b.position;b.visibility="hidden";b.position="absolute";b.display="inline";var f=a.offsetWidth;a=a.offsetHeight;b.display=c;b.position=e;b.visibility=d;return new module$exports$Blockly$utils$Size.Size(f,a)}},module$contents$Blockly$utils$style_getSizeWithDisplay= -function(a){return new module$exports$Blockly$utils$Size.Size(a.offsetWidth,a.offsetHeight)},module$contents$Blockly$utils$style_getStyle=function(a,b){return(0,module$exports$Blockly$utils$style.getComputedStyle)(a,b)||(0,module$exports$Blockly$utils$style.getCascadedStyle)(a,b)||a.style&&a.style[b]}; -module$exports$Blockly$utils$style.getComputedStyle=function(a,b){return document.defaultView&&document.defaultView.getComputedStyle&&(a=document.defaultView.getComputedStyle(a,null))?a[b]||a.getPropertyValue(b)||"":""};module$exports$Blockly$utils$style.getCascadedStyle=function(a,b){return a.currentStyle?a.currentStyle[b]:null}; -module$exports$Blockly$utils$style.getPageOffset=function(a){var b=new module$exports$Blockly$utils$Coordinate.Coordinate(0,0);a=a.getBoundingClientRect();var c=document.documentElement;c=new module$exports$Blockly$utils$Coordinate.Coordinate(window.pageXOffset||c.scrollLeft,window.pageYOffset||c.scrollTop);b.x=a.left+c.x;b.y=a.top+c.y;return b}; -module$exports$Blockly$utils$style.getViewportPageOffset=function(){var a=document.body,b=document.documentElement;return new module$exports$Blockly$utils$Coordinate.Coordinate(a.scrollLeft||b.scrollLeft,a.scrollTop||b.scrollTop)};module$exports$Blockly$utils$style.setElementShown=function(a,b){a.style.display=b?"":"none"};module$exports$Blockly$utils$style.isRightToLeft=function(a){return"rtl"===module$contents$Blockly$utils$style_getStyle(a,"direction")}; -module$exports$Blockly$utils$style.getBorderBox=function(a){var b=(0,module$exports$Blockly$utils$style.getComputedStyle)(a,"borderLeftWidth"),c=(0,module$exports$Blockly$utils$style.getComputedStyle)(a,"borderRightWidth"),d=(0,module$exports$Blockly$utils$style.getComputedStyle)(a,"borderTopWidth");a=(0,module$exports$Blockly$utils$style.getComputedStyle)(a,"borderBottomWidth");return{top:parseFloat(d),right:parseFloat(c),bottom:parseFloat(a),left:parseFloat(b)}}; -module$exports$Blockly$utils$style.scrollIntoContainerView=function(a,b,c){a=(0,module$exports$Blockly$utils$style.getContainerOffsetToScrollInto)(a,b,c);b.scrollLeft=a.x;b.scrollTop=a.y}; -module$exports$Blockly$utils$style.getContainerOffsetToScrollInto=function(a,b,c){var d=(0,module$exports$Blockly$utils$style.getPageOffset)(a),e=(0,module$exports$Blockly$utils$style.getPageOffset)(b),f=(0,module$exports$Blockly$utils$style.getBorderBox)(b),g=d.x-e.x-f.left;d=d.y-e.y-f.top;e=module$contents$Blockly$utils$style_getSizeWithDisplay(a);a=b.clientWidth-e.width;e=b.clientHeight-e.height;f=b.scrollLeft;b=b.scrollTop;c?(f+=g-a/2,b+=d-e/2):(f+=Math.min(g,Math.max(g-a,0)),b+=Math.min(d,Math.max(d- -e,0)));return new module$exports$Blockly$utils$Coordinate.Coordinate(f,b)};var module$exports$Blockly$utils$Rect={Rect:function(a,b,c,d){this.top=a;this.bottom=b;this.left=c;this.right=d}};module$exports$Blockly$utils$Rect.Rect.prototype.contains=function(a,b){return a>=this.left&&a<=this.right&&b>=this.top&&b<=this.bottom};module$exports$Blockly$utils$Rect.Rect.prototype.intersects=function(a){return!(this.left>a.right||this.righta.bottom||this.bottome.top?module$contents$Blockly$dropDownDiv_getPositionAboveMetrics(c,d,e,f):b+f.heightdocument.documentElement.clientTop?module$contents$Blockly$dropDownDiv_getPositionAboveMetrics(c,d,e,f):module$contents$Blockly$dropDownDiv_getPositionTopOfPageMetrics(a,e,f)}; -var module$contents$Blockly$dropDownDiv_getPositionBelowMetrics=function(a,b,c,d){a=(0,module$exports$Blockly$dropDownDiv.getPositionX)(a,c.left,c.right,d.width);return{initialX:a.divX,initialY:b,finalX:a.divX,finalY:b+module$exports$Blockly$dropDownDiv.PADDING_Y,arrowX:a.arrowX,arrowY:-(module$exports$Blockly$dropDownDiv.ARROW_SIZE/2+module$exports$Blockly$dropDownDiv.BORDER_SIZE),arrowAtTop:!0,arrowVisible:!0}},module$contents$Blockly$dropDownDiv_getPositionAboveMetrics=function(a,b,c,d){a=(0,module$exports$Blockly$dropDownDiv.getPositionX)(a, -c.left,c.right,d.width);return{initialX:a.divX,initialY:b-d.height,finalX:a.divX,finalY:b-d.height-module$exports$Blockly$dropDownDiv.PADDING_Y,arrowX:a.arrowX,arrowY:d.height-2*module$exports$Blockly$dropDownDiv.BORDER_SIZE-module$exports$Blockly$dropDownDiv.ARROW_SIZE/2,arrowAtTop:!1,arrowVisible:!0}},module$contents$Blockly$dropDownDiv_getPositionTopOfPageMetrics=function(a,b,c){a=(0,module$exports$Blockly$dropDownDiv.getPositionX)(a,b.left,b.right,c.width);return{initialX:a.divX,initialY:0,finalX:a.divX, -finalY:0,arrowAtTop:null,arrowX:null,arrowY:null,arrowVisible:!1}};module$exports$Blockly$dropDownDiv.getPositionX=function(a,b,c,d){b=(0,module$exports$Blockly$utils$math.clamp)(b,a-d/2,c-d);a=a-module$exports$Blockly$dropDownDiv.ARROW_SIZE/2-b;c=module$exports$Blockly$dropDownDiv.ARROW_HORIZONTAL_PADDING;a=(0,module$exports$Blockly$utils$math.clamp)(c,a,d-c-module$exports$Blockly$dropDownDiv.ARROW_SIZE);return{arrowX:a,divX:b}};module$exports$Blockly$dropDownDiv.isVisible=function(){return!!module$contents$Blockly$dropDownDiv_owner}; -module$exports$Blockly$dropDownDiv.hideIfOwner=function(a,b){return module$contents$Blockly$dropDownDiv_owner===a?(b?(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)():(0,module$exports$Blockly$dropDownDiv.hide)(),!0):!1}; -module$exports$Blockly$dropDownDiv.hide=function(){module$contents$Blockly$dropDownDiv_div.style.transform="translate(0, 0)";module$contents$Blockly$dropDownDiv_div.style.opacity=0;module$contents$Blockly$dropDownDiv_animateOutTimer=setTimeout(function(){(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)()},1E3*module$exports$Blockly$dropDownDiv.ANIMATION_TIME);module$contents$Blockly$dropDownDiv_onHide&&(module$contents$Blockly$dropDownDiv_onHide(),module$contents$Blockly$dropDownDiv_onHide= -null)}; -module$exports$Blockly$dropDownDiv.hideWithoutAnimation=function(){(0,module$exports$Blockly$dropDownDiv.isVisible)()&&(module$contents$Blockly$dropDownDiv_animateOutTimer&&clearTimeout(module$contents$Blockly$dropDownDiv_animateOutTimer),module$contents$Blockly$dropDownDiv_div.style.transform="",module$contents$Blockly$dropDownDiv_div.style.left="",module$contents$Blockly$dropDownDiv_div.style.top="",module$contents$Blockly$dropDownDiv_div.style.opacity=0,module$contents$Blockly$dropDownDiv_div.style.display="none", -module$contents$Blockly$dropDownDiv_div.style.backgroundColor="",module$contents$Blockly$dropDownDiv_div.style.borderColor="",module$contents$Blockly$dropDownDiv_onHide&&(module$contents$Blockly$dropDownDiv_onHide(),module$contents$Blockly$dropDownDiv_onHide=null),(0,module$exports$Blockly$dropDownDiv.clearContent)(),module$contents$Blockly$dropDownDiv_owner=null,module$contents$Blockly$dropDownDiv_renderedClassName&&((0,module$exports$Blockly$utils$dom.removeClass)(module$contents$Blockly$dropDownDiv_div, -module$contents$Blockly$dropDownDiv_renderedClassName),module$contents$Blockly$dropDownDiv_renderedClassName=""),module$contents$Blockly$dropDownDiv_themeClassName&&((0,module$exports$Blockly$utils$dom.removeClass)(module$contents$Blockly$dropDownDiv_div,module$contents$Blockly$dropDownDiv_themeClassName),module$contents$Blockly$dropDownDiv_themeClassName=""),(0,$.module$exports$Blockly$common.getMainWorkspace)().markFocused())}; -var module$contents$Blockly$dropDownDiv_positionInternal=function(a,b,c,d){a=module$exports$Blockly$dropDownDiv.TEST_ONLY.getPositionMetrics(a,b,c,d);a.arrowVisible?(module$contents$Blockly$dropDownDiv_arrow.style.display="",module$contents$Blockly$dropDownDiv_arrow.style.transform="translate("+a.arrowX+"px,"+a.arrowY+"px) rotate(45deg)",module$contents$Blockly$dropDownDiv_arrow.setAttribute("class",a.arrowAtTop?"blocklyDropDownArrow blocklyArrowTop":"blocklyDropDownArrow blocklyArrowBottom")):module$contents$Blockly$dropDownDiv_arrow.style.display= -"none";b=Math.floor(a.initialX);c=Math.floor(a.initialY);d=Math.floor(a.finalX);var e=Math.floor(a.finalY);module$contents$Blockly$dropDownDiv_div.style.left=b+"px";module$contents$Blockly$dropDownDiv_div.style.top=c+"px";module$contents$Blockly$dropDownDiv_div.style.display="block";module$contents$Blockly$dropDownDiv_div.style.opacity=1;module$contents$Blockly$dropDownDiv_div.style.transform="translate("+(d-b)+"px,"+(e-c)+"px)";return!!a.arrowAtTop}; -module$exports$Blockly$dropDownDiv.repositionForWindowResize=function(){if(module$contents$Blockly$dropDownDiv_owner){var a=module$contents$Blockly$dropDownDiv_owner,b=a.getSourceBlock();a=module$contents$Blockly$dropDownDiv_positionToField?module$contents$Blockly$dropDownDiv_getScaledBboxOfField(a):module$contents$Blockly$dropDownDiv_getScaledBboxOfBlock(b);b=a.left+(a.right-a.left)/2;module$contents$Blockly$dropDownDiv_positionInternal(b,a.bottom,b,a.top)}else(0,module$exports$Blockly$dropDownDiv.hide)()};var module$exports$Blockly$utils$svgMath={},module$contents$Blockly$utils$svgMath_XY_REGEX=/translate\(\s*([-+\d.e]+)([ ,]\s*([-+\d.e]+)\s*)?/,module$contents$Blockly$utils$svgMath_XY_STYLE_REGEX=/transform:\s*translate(?:3d)?\(\s*([-+\d.e]+)\s*px([ ,]\s*([-+\d.e]+)\s*px)?/; -module$exports$Blockly$utils$svgMath.getRelativeXY=function(a){var b=new module$exports$Blockly$utils$Coordinate.Coordinate(0,0),c=a.getAttribute("x");c&&(b.x=parseInt(c,10));if(c=a.getAttribute("y"))b.y=parseInt(c,10);if(c=(c=a.getAttribute("transform"))&&c.match(module$contents$Blockly$utils$svgMath_XY_REGEX))b.x+=Number(c[1]),c[3]&&(b.y+=Number(c[3]));(a=a.getAttribute("style"))&&-1/g,"<$1$2>")};$.module$exports$Blockly$Xml.domToPrettyText=function(a){a=(0,$.module$exports$Blockly$Xml.domToText)(a).split("<");for(var b="",c=1;c"!==d.slice(-2)&&(b+=" ")}a=a.join("\n");a=a.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g,"$1");return a.replace(/^\n/,"")}; -$.module$exports$Blockly$Xml.textToDom=function(a){var b=(0,$.module$exports$Blockly$utils$xml.textToDomDocument)(a);if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw Error("textToDom was unable to parse: "+a);return b.documentElement};$.module$exports$Blockly$Xml.clearWorkspaceAndLoadFromXml=function(a,b){b.setResizesEnabled(!1);b.clear();a=(0,$.module$exports$Blockly$Xml.domToWorkspace)(a,b);b.setResizesEnabled(!0);return a}; -$.module$exports$Blockly$Xml.domToWorkspace=function(a,b){if(a instanceof module$exports$Blockly$Workspace.Workspace){var c=a;a=b;b=c;console.warn("Deprecated call to domToWorkspace, swap the arguments.")}var d;b.RTL&&(d=b.getWidth());c=[];(0,module$exports$Blockly$utils$dom.startTextWidthCache)();var e=(0,module$exports$Blockly$Events$utils.getGroup)();e||(0,module$exports$Blockly$Events$utils.setGroup)(!0);b.setResizesEnabled&&b.setResizesEnabled(!1);var f=!0;try{for(var g=0,h=void 0;h=a.childNodes[g];g++){var k= -h.nodeName.toLowerCase(),l=h;if("block"===k||"shadow"===k&&!(0,module$exports$Blockly$Events$utils.getRecordUndo)()){var m=(0,$.module$exports$Blockly$Xml.domToBlock)(l,b);c.push(m.id);var n=l.hasAttribute("x")?parseInt(l.getAttribute("x"),10):10,p=l.hasAttribute("y")?parseInt(l.getAttribute("y"),10):10;isNaN(n)||isNaN(p)||m.moveBy(b.RTL?d-n:n,p);f=!1}else{if("shadow"===k)throw TypeError("Shadow block cannot be a top-level block.");if("comment"===k)if(b.rendered){var q=module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg; -q?q.fromXmlRendered(l,b,d):console.warn("Missing require for Blockly.WorkspaceCommentSvg, ignoring workspace comment.")}else{var r=module$exports$Blockly$WorkspaceComment.WorkspaceComment;r?r.fromXml(l,b):console.warn("Missing require for Blockly.WorkspaceComment, ignoring workspace comment.")}else if("variables"===k){if(f)(0,$.module$exports$Blockly$Xml.domToVariables)(l,b);else throw Error("'variables' tag must exist once before block and shadow tag elements in the workspace XML, but it was found in another location."); -f=!1}}}}finally{e||(0,module$exports$Blockly$Events$utils.setGroup)(!1),(0,module$exports$Blockly$utils$dom.stopTextWidthCache)()}b.setResizesEnabled&&b.setResizesEnabled(!0);(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.FINISHED_LOADING))(b));return c}; -$.module$exports$Blockly$Xml.appendDomToWorkspace=function(a,b){if(!b.getBlocksBoundingBox)return(0,$.module$exports$Blockly$Xml.domToWorkspace)(a,b);var c=b.getBlocksBoundingBox();a=(0,$.module$exports$Blockly$Xml.domToWorkspace)(a,b);if(c&&c.top!==c.bottom){var d=c.bottom;c=b.RTL?c.right:c.left;for(var e=Infinity,f=-Infinity,g=Infinity,h=0;hf&&(f=k.x)}d=d-g+10;c=b.RTL?c-f:c-e;for(e=0;e document.");}else a=null;return a};$.module$exports$Blockly$utils$object={inherits:function(a,b){a.superClass_=b.prototype;Object.setPrototypeOf(a,b);a.prototype=Object.create(b.prototype);a.prototype.constructor=a},mixin:function(a,b){for(var c in b)a[c]=b[c]},deepMerge:function(a,b){for(var c in b)a[c]=null!==b[c]&&"object"===typeof b[c]?(0,$.module$exports$Blockly$utils$object.deepMerge)(a[c]||Object.create(null),b[c]):b[c];return a},values:function(a){return Object.values?Object.values(a):Object.keys(a).map(function(b){return a[b]})}};var module$exports$Blockly$Theme={Theme:function(a,b,c,d){this.name=a;this.blockStyles=b||Object.create(null);this.categoryStyles=c||Object.create(null);this.componentStyles=d||Object.create(null);this.fontStyle=Object.create(null);this.startHats=null;(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.THEME,a,this)}};module$exports$Blockly$Theme.Theme.prototype.getClassName=function(){return this.name+"-theme"}; -module$exports$Blockly$Theme.Theme.prototype.setBlockStyle=function(a,b){this.blockStyles[a]=b};module$exports$Blockly$Theme.Theme.prototype.setCategoryStyle=function(a,b){this.categoryStyles[a]=b};module$exports$Blockly$Theme.Theme.prototype.getComponentStyle=function(a){return(a=this.componentStyles[a])&&"string"===typeof a&&this.getComponentStyle(a)?this.getComponentStyle(a):a?String(a):null};module$exports$Blockly$Theme.Theme.prototype.setComponentStyle=function(a,b){this.componentStyles[a]=b}; -module$exports$Blockly$Theme.Theme.prototype.setFontStyle=function(a){this.fontStyle=a};module$exports$Blockly$Theme.Theme.prototype.setStartHats=function(a){this.startHats=a}; -module$exports$Blockly$Theme.Theme.defineTheme=function(a,b){var c=new module$exports$Blockly$Theme.Theme(a),d=b.base;d&&("string"===typeof d&&(d=(0,module$exports$Blockly$registry.getObject)(module$exports$Blockly$registry.Type.THEME,d)),d instanceof module$exports$Blockly$Theme.Theme&&((0,$.module$exports$Blockly$utils$object.deepMerge)(c,d),c.name=a));(0,$.module$exports$Blockly$utils$object.deepMerge)(c.blockStyles,b.blockStyles);(0,$.module$exports$Blockly$utils$object.deepMerge)(c.categoryStyles, -b.categoryStyles);(0,$.module$exports$Blockly$utils$object.deepMerge)(c.componentStyles,b.componentStyles);(0,$.module$exports$Blockly$utils$object.deepMerge)(c.fontStyle,b.fontStyle);null!==b.startHats&&(c.startHats=b.startHats);return c};var module$exports$Blockly$Themes$Classic={},module$contents$Blockly$Themes$Classic_defaultBlockStyles={colour_blocks:{colourPrimary:"20"},list_blocks:{colourPrimary:"260"},logic_blocks:{colourPrimary:"210"},loop_blocks:{colourPrimary:"120"},math_blocks:{colourPrimary:"230"},procedure_blocks:{colourPrimary:"290"},text_blocks:{colourPrimary:"160"},variable_blocks:{colourPrimary:"330"},variable_dynamic_blocks:{colourPrimary:"310"},hat_blocks:{colourPrimary:"330",hat:"cap"}},module$contents$Blockly$Themes$Classic_categoryStyles= -{colour_category:{colour:"20"},list_category:{colour:"260"},logic_category:{colour:"210"},loop_category:{colour:"120"},math_category:{colour:"230"},procedure_category:{colour:"290"},text_category:{colour:"160"},variable_category:{colour:"330"},variable_dynamic_category:{colour:"310"}};module$exports$Blockly$Themes$Classic.Classic=new module$exports$Blockly$Theme.Theme("classic",module$contents$Blockly$Themes$Classic_defaultBlockStyles,module$contents$Blockly$Themes$Classic_categoryStyles);var module$exports$Blockly$Options={Options:function(a){var b=null,c=!1,d=!1,e=!1,f=!1,g=!1,h=!1,k=!!a.readOnly;k||(b=(0,module$exports$Blockly$utils$toolbox.convertToolboxDefToJson)(a.toolbox),c=(0,module$exports$Blockly$utils$toolbox.hasCategories)(b),d=a.trashcan,void 0===d&&(d=c),e=a.collapse,void 0===e&&(e=c),f=a.comments,void 0===f&&(f=c),g=a.disable,void 0===g&&(g=c),h=a.sounds,void 0===h&&(h=!0));var l=a.maxTrashcanContents;d?void 0===l&&(l=32):l=0;var m=!!a.rtl,n=a.horizontalLayout;void 0=== -n&&(n=!1);var p=a.toolboxPosition;p="end"!==p;p=n?p?module$exports$Blockly$utils$toolbox.Position.TOP:module$exports$Blockly$utils$toolbox.Position.BOTTOM:p===m?module$exports$Blockly$utils$toolbox.Position.RIGHT:module$exports$Blockly$utils$toolbox.Position.LEFT;var q=a.css;void 0===q&&(q=!0);var r="https://blockly-demo.appspot.com/static/media/";a.media?r=a.media:a.path&&(r=a.path+"media/");var t=void 0===a.oneBasedIndex?!0:!!a.oneBasedIndex;var u=a.renderer||"geras",v=a.plugins||{};this.RTL=m; -this.oneBasedIndex=t;this.collapse=e;this.comments=f;this.disable=g;this.readOnly=k;this.maxBlocks=a.maxBlocks||Infinity;this.maxInstances=a.maxInstances;this.pathToMedia=r;this.hasCategories=c;this.moveOptions=module$exports$Blockly$Options.Options.parseMoveOptions_(a,c);this.hasScrollbars=!!this.moveOptions.scrollbars;this.hasTrashcan=d;this.maxTrashcanContents=l;this.hasSounds=h;this.hasCss=q;this.horizontalLayout=n;this.languageTree=b;this.gridOptions=module$exports$Blockly$Options.Options.parseGridOptions_(a); -this.zoomOptions=module$exports$Blockly$Options.Options.parseZoomOptions_(a);this.toolboxPosition=p;this.theme=module$exports$Blockly$Options.Options.parseThemeOptions_(a);this.renderer=u;this.rendererOverrides=a.rendererOverrides;this.gridPattern=null;this.parentWorkspace=a.parentWorkspace;this.plugins=v;this.getMetrics=this.setMetrics=void 0}}; -module$exports$Blockly$Options.Options.parseMoveOptions_=function(a,b){var c=a.move||{},d={};void 0===c.scrollbars&&void 0===a.scrollbars?d.scrollbars=b:"object"===typeof c.scrollbars?(d.scrollbars={},d.scrollbars.horizontal=!!c.scrollbars.horizontal,d.scrollbars.vertical=!!c.scrollbars.vertical,d.scrollbars.horizontal&&d.scrollbars.vertical?d.scrollbars=!0:d.scrollbars.horizontal||d.scrollbars.vertical||(d.scrollbars=!1)):d.scrollbars=!!c.scrollbars||!!a.scrollbars;d.wheel=d.scrollbars&&void 0!== -c.wheel?!!c.wheel:"object"===typeof d.scrollbars;d.drag=d.scrollbars?void 0===c.drag?!0:!!c.drag:!1;return d}; -module$exports$Blockly$Options.Options.parseZoomOptions_=function(a){a=a.zoom||{};var b={};b.controls=void 0===a.controls?!1:!!a.controls;b.wheel=void 0===a.wheel?!1:!!a.wheel;b.startScale=void 0===a.startScale?1:Number(a.startScale);b.maxScale=void 0===a.maxScale?3:Number(a.maxScale);b.minScale=void 0===a.minScale?.3:Number(a.minScale);b.scaleSpeed=void 0===a.scaleSpeed?1.2:Number(a.scaleSpeed);b.pinch=void 0===a.pinch?b.wheel||b.controls:!!a.pinch;return b}; -module$exports$Blockly$Options.Options.parseGridOptions_=function(a){a=a.grid||{};var b={};b.spacing=Number(a.spacing)||0;b.colour=a.colour||"#888";b.length=void 0===a.length?1:Number(a.length);b.snap=0=a||isNaN(a)?0:Math.min(a,this.scrollbarLength_)};module$exports$Blockly$Scrollbar.Scrollbar.prototype.setHandleLength_=function(a){this.handleLength_=a;this.svgHandle_.setAttribute(this.lengthAttribute_,this.handleLength_)}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.constrainHandlePosition_=function(a){return a=0>=a||isNaN(a)?0:Math.min(a,this.scrollbarLength_-this.handleLength_)};module$exports$Blockly$Scrollbar.Scrollbar.prototype.setHandlePosition=function(a){this.handlePosition_=a;this.svgHandle_.setAttribute(this.positionAttribute_,this.handlePosition_)}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.setScrollbarLength_=function(a){this.scrollbarLength_=a;this.outerSvg_.setAttribute(this.lengthAttribute_,this.scrollbarLength_);this.svgBackground_.setAttribute(this.lengthAttribute_,this.scrollbarLength_)}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.setPosition=function(a,b){this.position.x=a;this.position.y=b;(0,module$exports$Blockly$utils$dom.setCssTransform)(this.outerSvg_,"translate("+(this.position.x+this.origin_.x)+"px,"+(this.position.y+this.origin_.y)+"px)")}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.resize=function(a){if(!a&&(a=this.workspace_.getMetrics(),!a))return;this.oldHostMetrics_&&module$exports$Blockly$Scrollbar.Scrollbar.metricsAreEquivalent_(a,this.oldHostMetrics_)||(this.horizontal_?this.resizeHorizontal_(a):this.resizeVertical_(a),this.oldHostMetrics_=a,this.updateMetrics_())}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.requiresViewResize_=function(a){return this.oldHostMetrics_?this.oldHostMetrics_.viewWidth!==a.viewWidth||this.oldHostMetrics_.viewHeight!==a.viewHeight||this.oldHostMetrics_.absoluteLeft!==a.absoluteLeft||this.oldHostMetrics_.absoluteTop!==a.absoluteTop:!0};module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeHorizontal_=function(a){this.requiresViewResize_(a)?this.resizeViewHorizontal(a):this.resizeContentHorizontal(a)}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeViewHorizontal=function(a){var b=a.viewWidth-2*this.margin_;this.pair_&&(b-=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness);this.setScrollbarLength_(Math.max(0,b));b=a.absoluteLeft+this.margin_;this.pair_&&this.workspace_.RTL&&(b+=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness);this.setPosition(b,a.absoluteTop+a.viewHeight-module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness-this.margin_);this.resizeContentHorizontal(a)}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeContentHorizontal=function(a){if(a.viewWidth>=a.scrollWidth)this.setHandleLength_(this.scrollbarLength_),this.setHandlePosition(0),this.pair_||this.setVisible(!1);else{this.pair_||this.setVisible(!0);var b=this.scrollbarLength_*a.viewWidth/a.scrollWidth;b=this.constrainHandleLength_(b);this.setHandleLength_(b);b=a.scrollWidth-a.viewWidth;var c=this.scrollbarLength_-this.handleLength_;a=(a.viewLeft-a.scrollLeft)/b*c;a=this.constrainHandlePosition_(a); -this.setHandlePosition(a);this.ratio=c/b}};module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeVertical_=function(a){this.requiresViewResize_(a)?this.resizeViewVertical(a):this.resizeContentVertical(a)}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeViewVertical=function(a){var b=a.viewHeight-2*this.margin_;this.pair_&&(b-=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness);this.setScrollbarLength_(Math.max(0,b));this.setPosition(this.workspace_.RTL?a.absoluteLeft+this.margin_:a.absoluteLeft+a.viewWidth-module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness-this.margin_,a.absoluteTop+this.margin_);this.resizeContentVertical(a)}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeContentVertical=function(a){if(a.viewHeight>=a.scrollHeight)this.setHandleLength_(this.scrollbarLength_),this.setHandlePosition(0),this.pair_||this.setVisible(!1);else{this.pair_||this.setVisible(!0);var b=this.scrollbarLength_*a.viewHeight/a.scrollHeight;b=this.constrainHandleLength_(b);this.setHandleLength_(b);b=a.scrollHeight-a.viewHeight;var c=this.scrollbarLength_-this.handleLength_;a=(a.viewTop-a.scrollTop)/b*c;a=this.constrainHandlePosition_(a); -this.setHandlePosition(a);this.ratio=c/b}}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.createDom_=function(a){var b="blocklyScrollbar"+(this.horizontal_?"Horizontal":"Vertical");a&&(b+=" "+a);this.outerSvg_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.SVG,{"class":b},null);this.svgGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{},this.outerSvg_);this.svgBackground_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyScrollbarBackground"}, -this.svgGroup_);a=Math.floor((module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness-5)/2);this.svgHandle_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyScrollbarHandle",rx:a,ry:a},this.svgGroup_);this.workspace_.getThemeManager().subscribe(this.svgHandle_,"scrollbarColour","fill");this.workspace_.getThemeManager().subscribe(this.svgHandle_,"scrollbarOpacity","fill-opacity");(0,module$exports$Blockly$utils$dom.insertAfter)(this.outerSvg_, -this.workspace_.getParentSvg())};module$exports$Blockly$Scrollbar.Scrollbar.prototype.isVisible=function(){return this.isVisible_};module$exports$Blockly$Scrollbar.Scrollbar.prototype.setContainerVisible=function(a){var b=a!==this.containerVisible_;this.containerVisible_=a;b&&this.updateDisplay_()}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.setVisible=function(a){var b=a!==this.isVisible();if(this.pair_)throw Error("Unable to toggle visibility of paired scrollbars.");this.isVisible_=a;b&&this.updateDisplay_()};module$exports$Blockly$Scrollbar.Scrollbar.prototype.updateDisplay_=function(){this.containerVisible_&&this.isVisible()?this.outerSvg_.setAttribute("display","block"):this.outerSvg_.setAttribute("display","none")}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.onMouseDownBar_=function(a){this.workspace_.markFocused();(0,module$exports$Blockly$Touch.clearTouchIdentifier)();this.cleanUp_();if((0,module$exports$Blockly$browserEvents.isRightButton)(a))a.stopPropagation();else{var b=(0,module$exports$Blockly$browserEvents.mouseToSvg)(a,this.workspace_.getParentSvg(),this.workspace_.getInverseScreenCTM());b=this.horizontal_?b.x:b.y;var c=(0,module$exports$Blockly$utils$svgMath.getInjectionDivXY)(this.svgHandle_); -c=this.horizontal_?c.x:c.y;var d=this.handlePosition_,e=.95*this.handleLength_;b<=c?d-=e:b>=c+this.handleLength_&&(d+=e);this.setHandlePosition(this.constrainHandlePosition_(d));this.updateMetrics_();a.stopPropagation();a.preventDefault()}}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.onMouseDownHandle_=function(a){this.workspace_.markFocused();this.cleanUp_();(0,module$exports$Blockly$browserEvents.isRightButton)(a)?a.stopPropagation():(this.startDragHandle=this.handlePosition_,this.workspace_.setupDragSurface(),this.startDragMouse_=this.horizontal_?a.clientX:a.clientY,module$exports$Blockly$Scrollbar.Scrollbar.onMouseUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mouseup",this,this.onMouseUpHandle_), -module$exports$Blockly$Scrollbar.Scrollbar.onMouseMoveWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mousemove",this,this.onMouseMoveHandle_),a.stopPropagation(),a.preventDefault())};module$exports$Blockly$Scrollbar.Scrollbar.prototype.onMouseMoveHandle_=function(a){this.setHandlePosition(this.constrainHandlePosition_(this.startDragHandle+((this.horizontal_?a.clientX:a.clientY)-this.startDragMouse_)));this.updateMetrics_()}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.onMouseUpHandle_=function(){this.workspace_.resetDragSurface();(0,module$exports$Blockly$Touch.clearTouchIdentifier)();this.cleanUp_()}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.cleanUp_=function(){this.workspace_.hideChaff(!0);module$exports$Blockly$Scrollbar.Scrollbar.onMouseUpWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(module$exports$Blockly$Scrollbar.Scrollbar.onMouseUpWrapper_),module$exports$Blockly$Scrollbar.Scrollbar.onMouseUpWrapper_=null);module$exports$Blockly$Scrollbar.Scrollbar.onMouseMoveWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(module$exports$Blockly$Scrollbar.Scrollbar.onMouseMoveWrapper_), -module$exports$Blockly$Scrollbar.Scrollbar.onMouseMoveWrapper_=null)};module$exports$Blockly$Scrollbar.Scrollbar.prototype.getRatio_=function(){var a=this.handlePosition_/(this.scrollbarLength_-this.handleLength_);isNaN(a)&&(a=0);return a};module$exports$Blockly$Scrollbar.Scrollbar.prototype.updateMetrics_=function(){var a=this.getRatio_(),b={};this.horizontal_?b.x=a:b.y=a;this.workspace_.setMetrics(b)}; -module$exports$Blockly$Scrollbar.Scrollbar.prototype.set=function(a,b){this.setHandlePosition(this.constrainHandlePosition_(a*this.ratio));(b||void 0===b)&&this.updateMetrics_()};module$exports$Blockly$Scrollbar.Scrollbar.prototype.setOrigin=function(a,b){this.origin_=new module$exports$Blockly$utils$Coordinate.Coordinate(a,b)}; -module$exports$Blockly$Scrollbar.Scrollbar.metricsAreEquivalent_=function(a,b){return a.viewWidth===b.viewWidth&&a.viewHeight===b.viewHeight&&a.viewLeft===b.viewLeft&&a.viewTop===b.viewTop&&a.absoluteTop===b.absoluteTop&&a.absoluteLeft===b.absoluteLeft&&a.scrollWidth===b.scrollWidth&&a.scrollHeight===b.scrollHeight&&a.scrollLeft===b.scrollLeft&&a.scrollTop===b.scrollTop};module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness=15; -module$exports$Blockly$Touch.TOUCH_ENABLED&&(module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness=25);module$exports$Blockly$Scrollbar.Scrollbar.DEFAULT_SCROLLBAR_MARGIN=.5;var module$exports$Blockly$ScrollbarPair={ScrollbarPair:function(a,b,c,d,e){this.workspace_=a;b=void 0===b?!0:b;c=void 0===c?!0:c;var f=b&&c;b&&(this.hScroll=new module$exports$Blockly$Scrollbar.Scrollbar(a,!0,f,d,e));c&&(this.vScroll=new module$exports$Blockly$Scrollbar.Scrollbar(a,!1,f,d,e));f&&(this.corner_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{height:module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness,width:module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness, -"class":"blocklyScrollbarBackground"},null),(0,module$exports$Blockly$utils$dom.insertAfter)(this.corner_,a.getBubbleCanvas()));this.oldHostMetrics_=null}};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.dispose=function(){(0,module$exports$Blockly$utils$dom.removeNode)(this.corner_);this.oldHostMetrics_=this.workspace_=this.corner_=null;this.hScroll&&(this.hScroll.dispose(),this.hScroll=null);this.vScroll&&(this.vScroll.dispose(),this.vScroll=null)}; -module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.resize=function(){var a=this.workspace_.getMetrics();if(a){var b=!1,c=!1;this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth===a.viewWidth&&this.oldHostMetrics_.viewHeight===a.viewHeight&&this.oldHostMetrics_.absoluteTop===a.absoluteTop&&this.oldHostMetrics_.absoluteLeft===a.absoluteLeft?(this.oldHostMetrics_&&this.oldHostMetrics_.scrollWidth===a.scrollWidth&&this.oldHostMetrics_.viewLeft===a.viewLeft&&this.oldHostMetrics_.scrollLeft=== -a.scrollLeft||(b=!0),this.oldHostMetrics_&&this.oldHostMetrics_.scrollHeight===a.scrollHeight&&this.oldHostMetrics_.viewTop===a.viewTop&&this.oldHostMetrics_.scrollTop===a.scrollTop||(c=!0)):c=b=!0;if(b||c){try{(0,module$exports$Blockly$Events$utils.disable)(),this.hScroll&&b&&this.hScroll.resize(a),this.vScroll&&c&&this.vScroll.resize(a)}finally{(0,module$exports$Blockly$Events$utils.enable)()}this.workspace_.maybeFireViewportChangeEvent()}this.hScroll&&this.vScroll&&(this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth=== -a.viewWidth&&this.oldHostMetrics_.absoluteLeft===a.absoluteLeft||this.corner_.setAttribute("x",this.vScroll.position.x),this.oldHostMetrics_&&this.oldHostMetrics_.viewHeight===a.viewHeight&&this.oldHostMetrics_.absoluteTop===a.absoluteTop||this.corner_.setAttribute("y",this.hScroll.position.y));this.oldHostMetrics_=a}};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.canScrollHorizontally=function(){return!!this.hScroll}; -module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.canScrollVertically=function(){return!!this.vScroll};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.setOrigin=function(a,b){this.hScroll&&this.hScroll.setOrigin(a,b);this.vScroll&&this.vScroll.setOrigin(a,b)}; -module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.set=function(a,b,c){this.hScroll&&this.hScroll.set(a,!1);this.vScroll&&this.vScroll.set(b,!1);if(c||void 0===c)a={},this.hScroll&&(a.x=this.hScroll.getRatio_()),this.vScroll&&(a.y=this.vScroll.getRatio_()),this.workspace_.setMetrics(a)};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.setX=function(a){this.hScroll&&this.hScroll.set(a,!0)}; -module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.setY=function(a){this.vScroll&&this.vScroll.set(a,!0)};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.setContainerVisible=function(a){this.hScroll&&this.hScroll.setContainerVisible(a);this.vScroll&&this.vScroll.setContainerVisible(a)};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.isVisible=function(){var a=!1;this.hScroll&&(a=this.hScroll.isVisible());this.vScroll&&(a=a||this.vScroll.isVisible());return a}; -module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.resizeContent=function(a){this.hScroll&&this.hScroll.resizeContentHorizontal(a);this.vScroll&&this.vScroll.resizeContentVertical(a)};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.resizeView=function(a){this.hScroll&&this.hScroll.resizeViewHorizontal(a);this.vScroll&&this.vScroll.resizeViewVertical(a)};var module$exports$Blockly$utils$KeyCodes={KeyCodes:{WIN_KEY_FF_LINUX:0,MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PLUS_SIGN:43,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,FF_SEMICOLON:59,FF_EQUALS:61,FF_DASH:173,FF_HASH:163,QUESTION_MARK:63,AT_SIGN:64,A:65,B:66,C:67,D:68,E:69,F:70,G:71, -H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SCROLL_LOCK:145,FIRST_MEDIA_KEY:166,LAST_MEDIA_KEY:183,SEMICOLON:186, -DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,TILDE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,MAC_WK_CMD_LEFT:91,MAC_WK_CMD_RIGHT:93,WIN_IME:229,VK_NONAME:252,PHANTOM:255}};var module$exports$Blockly$ShortcutRegistry={ShortcutRegistry:function(){this.reset()}};module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.reset=function(){this.registry_=Object.create(null);this.keyMap_=Object.create(null)};module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.register=function(a,b){if(this.registry_[a.name]&&!b)throw Error('Shortcut with name "'+a.name+'" already exists.');this.registry_[a.name]=a}; -module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.unregister=function(a){if(!this.registry_[a])return console.warn('Keyboard shortcut with name "'+a+'" not found.'),!1;this.removeAllKeyMappings(a);delete this.registry_[a];return!0}; -module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.addKeyMapping=function(a,b,c){a=String(a);var d=this.keyMap_[a];if(d&&!c)throw Error('Shortcut with name "'+b+'" collides with shortcuts '+d.toString());d&&c?d.unshift(b):this.keyMap_[a]=[b]}; -module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.removeKeyMapping=function(a,b,c){var d=this.keyMap_[a];if(!d&&!c)return console.warn('No keyboard shortcut with name "'+b+'" registered with key code "'+a+'"'),!1;var e=d.indexOf(b);if(-1b.indexOf(d))throw Error(d+" is not a valid modifier key.");}; -module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.createSerializedKey=function(a,b){var c="";if(b){this.checkModifiers_(b);for(var d in module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.modifierKeys)-1a?this.menuItems_.length:a,-1)};module$exports$Blockly$Menu.Menu.prototype.highlightFirst_=function(){this.highlightHelper_(-1,1)}; -module$exports$Blockly$Menu.Menu.prototype.highlightLast_=function(){this.highlightHelper_(this.menuItems_.length,-1)};module$exports$Blockly$Menu.Menu.prototype.highlightHelper_=function(a,b){a+=b;for(var c;c=this.menuItems_[a];){if(c.isEnabled()){this.setHighlighted(c);break}a+=b}};module$exports$Blockly$Menu.Menu.prototype.handleMouseOver_=function(a){(a=this.getMenuItem_(a.target))&&(a.isEnabled()?this.highlightedItem_!==a&&this.setHighlighted(a):this.setHighlighted(null))}; -module$exports$Blockly$Menu.Menu.prototype.handleClick_=function(a){var b=this.openingCoords;this.openingCoords=null;if(b&&"number"===typeof a.clientX){var c=new module$exports$Blockly$utils$Coordinate.Coordinate(a.clientX,a.clientY);if(1>module$exports$Blockly$utils$Coordinate.Coordinate.distance(b,c))return}(a=this.getMenuItem_(a.target))&&a.performAction()};module$exports$Blockly$Menu.Menu.prototype.handleMouseEnter_=function(a){this.focus()}; -module$exports$Blockly$Menu.Menu.prototype.handleMouseLeave_=function(a){this.getElement()&&(this.blur_(),this.setHighlighted(null))}; -module$exports$Blockly$Menu.Menu.prototype.handleKeyEvent_=function(a){if(this.menuItems_.length&&!(a.shiftKey||a.ctrlKey||a.metaKey||a.altKey)){var b=this.highlightedItem_;switch(a.keyCode){case module$exports$Blockly$utils$KeyCodes.KeyCodes.ENTER:case module$exports$Blockly$utils$KeyCodes.KeyCodes.SPACE:b&&b.performAction();break;case module$exports$Blockly$utils$KeyCodes.KeyCodes.UP:this.highlightPrevious();break;case module$exports$Blockly$utils$KeyCodes.KeyCodes.DOWN:this.highlightNext();break; -case module$exports$Blockly$utils$KeyCodes.KeyCodes.PAGE_UP:case module$exports$Blockly$utils$KeyCodes.KeyCodes.HOME:this.highlightFirst_();break;case module$exports$Blockly$utils$KeyCodes.KeyCodes.PAGE_DOWN:case module$exports$Blockly$utils$KeyCodes.KeyCodes.END:this.highlightLast_();break;default:return}a.preventDefault();a.stopPropagation()}}; -module$exports$Blockly$Menu.Menu.prototype.getSize=function(){var a=this.getElement(),b=(0,module$exports$Blockly$utils$style.getSize)(a);b.height=a.scrollHeight;return b};var module$exports$Blockly$serialization$priorities={VARIABLES:100,BLOCKS:50};var module$exports$Blockly$serialization$registry={register:function(a,b){(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.SERIALIZER,a,b)},unregister:function(a){(0,module$exports$Blockly$registry.unregister)(module$exports$Blockly$registry.Type.SERIALIZER,a)}};var module$exports$Blockly$serialization$exceptions={DeserializationError:function(){var a=Error.apply(this,arguments);this.message=a.message;"stack"in a&&(this.stack=a.stack)}};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.DeserializationError,Error); -module$exports$Blockly$serialization$exceptions.MissingBlockType=function(a){module$exports$Blockly$serialization$exceptions.DeserializationError.call(this,"Expected to find a 'type' property, defining the block type");this.state=a};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.MissingBlockType,module$exports$Blockly$serialization$exceptions.DeserializationError); -module$exports$Blockly$serialization$exceptions.MissingConnection=function(a,b,c){module$exports$Blockly$serialization$exceptions.DeserializationError.call(this,"The block "+b.toDevString()+" is missing a(n) "+a+"\nconnection");this.block=b;this.state=c};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.MissingConnection,module$exports$Blockly$serialization$exceptions.DeserializationError); -module$exports$Blockly$serialization$exceptions.BadConnectionCheck=function(a,b,c,d){module$exports$Blockly$serialization$exceptions.DeserializationError.call(this,"The block "+c.toDevString()+" could not connect its\n"+b+" to its parent, because: "+a);this.childBlock=c;this.childState=d};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.BadConnectionCheck,module$exports$Blockly$serialization$exceptions.DeserializationError); -module$exports$Blockly$serialization$exceptions.RealChildOfShadow=function(a){module$exports$Blockly$serialization$exceptions.DeserializationError.call(this,"Encountered a real block which is defined as a child of a shadow\nblock. It is an invariant of Blockly that shadow blocks only have shadow\nchildren");this.state=a};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.RealChildOfShadow,module$exports$Blockly$serialization$exceptions.DeserializationError);var module$exports$Blockly$serialization$ISerializer={ISerializer:function(){}};module$exports$Blockly$serialization$ISerializer.ISerializer.prototype.save=function(a){};module$exports$Blockly$serialization$ISerializer.ISerializer.prototype.load=function(a,b){};module$exports$Blockly$serialization$ISerializer.ISerializer.prototype.clear=function(a){};var module$exports$Blockly$serialization$blocks={save:function(a,b){var c=void 0===b?{}:b;b=void 0===c.addCoordinates?!1:c.addCoordinates;var d=void 0===c.addInputBlocks?!0:c.addInputBlocks,e=void 0===c.addNextBlocks?!0:c.addNextBlocks;c=void 0===c.doFullSerialization?!0:c.doFullSerialization;if(a.isInsertionMarker())return null;var f={type:a.type,id:a.id};b&&module$contents$Blockly$serialization$blocks_saveCoords(a,f);module$contents$Blockly$serialization$blocks_saveAttributes(a,f);module$contents$Blockly$serialization$blocks_saveExtraState(a, -f);module$contents$Blockly$serialization$blocks_saveIcons(a,f);module$contents$Blockly$serialization$blocks_saveFields(a,f,c);d&&module$contents$Blockly$serialization$blocks_saveInputBlocks(a,f,c);e&&module$contents$Blockly$serialization$blocks_saveNextBlocks(a,f,c);return f}},module$contents$Blockly$serialization$blocks_saveAttributes=function(a,b){a.isCollapsed()&&(b.collapsed=!0);a.isEnabled()||(b.enabled=!1);void 0!==a.inputsInline&&a.inputsInline!==a.inputsInlineDefault&&(b.inline=a.inputsInline); -a.data&&(b.data=a.data)},module$contents$Blockly$serialization$blocks_saveCoords=function(a,b){var c=a.workspace;a=a.getRelativeToSurfaceXY();b.x=Math.round(c.RTL?c.getWidth()-a.x:a.x);b.y=Math.round(a.y)},module$contents$Blockly$serialization$blocks_saveExtraState=function(a,b){a.saveExtraState?(a=a.saveExtraState(),null!==a&&(b.extraState=a)):a.mutationToDom&&(a=a.mutationToDom(),null!==a&&(b.extraState=(0,$.module$exports$Blockly$Xml.domToText)(a).replace(' xmlns="https://developers.google.com/blockly/xml"', -"")))},module$contents$Blockly$serialization$blocks_saveIcons=function(a,b){a.getCommentText()&&(b.icons={comment:{text:a.getCommentText(),pinned:a.commentModel.pinned,height:Math.round(a.commentModel.size.height),width:Math.round(a.commentModel.size.width)}})},module$contents$Blockly$serialization$blocks_saveFields=function(a,b,c){for(var d=Object.create(null),e=0;ea&&0<=b&&256>b&&0<=c&&256>c)? -(0,module$exports$Blockly$utils$colour.rgbToHex)(a,b,c):null};module$exports$Blockly$utils$colour.rgbToHex=function(a,b,c){b=a<<16|b<<8|c;return 16>a?"#"+(16777216|b).toString(16).substr(1):"#"+b.toString(16)};module$exports$Blockly$utils$colour.hexToRgb=function(a){a=(0,module$exports$Blockly$utils$colour.parse)(a);if(!a)return[0,0,0];a=parseInt(a.substr(1),16);return[a>>16,a>>8&255,a&255]}; -module$exports$Blockly$utils$colour.hsvToHex=function(a,b,c){var d=0,e=0,f=0;if(0===b)f=e=d=c;else{var g=Math.floor(a/60),h=a/60-g;a=c*(1-b);var k=c*(1-b*h);b=c*(1-b*(1-h));switch(g){case 1:d=k;e=c;f=a;break;case 2:d=a;e=c;f=b;break;case 3:d=a;e=k;f=c;break;case 4:d=b;e=a;f=c;break;case 5:d=c;e=a;f=k;break;case 6:case 0:d=c,e=b,f=a}}return(0,module$exports$Blockly$utils$colour.rgbToHex)(Math.floor(d),Math.floor(e),Math.floor(f))}; -module$exports$Blockly$utils$colour.blend=function(a,b,c){a=(0,module$exports$Blockly$utils$colour.parse)(a);if(!a)return null;b=(0,module$exports$Blockly$utils$colour.parse)(b);if(!b)return null;a=(0,module$exports$Blockly$utils$colour.hexToRgb)(a);b=(0,module$exports$Blockly$utils$colour.hexToRgb)(b);return(0,module$exports$Blockly$utils$colour.rgbToHex)(Math.round(b[0]+c*(a[0]-b[0])),Math.round(b[1]+c*(a[1]-b[1])),Math.round(b[2]+c*(a[2]-b[2])))}; -module$exports$Blockly$utils$colour.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00"};module$exports$Blockly$utils$colour.hueToHex=function(a){return(0,module$exports$Blockly$utils$colour.hsvToHex)(a,module$contents$Blockly$utils$colour_hsvSaturation,255*module$contents$Blockly$utils$colour_hsvValue)};var module$exports$Blockly$utils$svgPaths={point:function(a,b){return" "+a+","+b+" "},curve:function(a,b){return" "+a+b.join("")},moveTo:function(a,b){return" M "+a+","+b+" "},moveBy:function(a,b){return" m "+a+","+b+" "},lineTo:function(a,b){return" l "+a+","+b+" "},line:function(a){return" l"+a.join("")},lineOnAxis:function(a,b){return" "+a+" "+b+" "},arc:function(a,b,c,d){return a+" "+c+" "+c+" "+b+d}};var module$exports$Blockly$utils$parsing={},module$contents$Blockly$utils$parsing_tokenizeInterpolationInternal=function(a,b){var c=[],d=a.split("");d.push("");var e=0;a=[];for(var f=null,g=0;g=h?(e=2,f=h,(h=a.join(""))&&c.push(h),a.length=0):"{"===h?e=3:(a.push("%",h),e=0):2===e?"0"<=h&&"9">=h?f+=h:(c.push(parseInt(f,10)),g--,e=0):3===e&&(""===h?(a.splice(0,0, -"%{"),g--,e=0):"}"!==h?a.push(h):(e=a.join(""),/[A-Z]\w*/i.test(e)?(h=e.toUpperCase(),(h=(0,$.module$exports$Blockly$utils$string.startsWith)(h,"BKY_")?h.substring(4):null)&&h in $.module$exports$Blockly$Msg.Msg?(e=$.module$exports$Blockly$Msg.Msg[h],"string"===typeof e?Array.prototype.push.apply(c,module$contents$Blockly$utils$parsing_tokenizeInterpolationInternal(e,b)):b?c.push(String(e)):c.push(e)):c.push("%{"+e+"}")):c.push("%{"+e+"}"),e=a.length=0))}(b=a.join(""))&&c.push(b);d=[];for(f=a.length= -0;f=c)return{hue:c,hex:(0,module$exports$Blockly$utils$colour.hsvToHex)(c,(0,module$exports$Blockly$utils$colour.getHsvSaturation)(),255*(0,module$exports$Blockly$utils$colour.getHsvValue)())};if(c=(0,module$exports$Blockly$utils$colour.parse)(b))return{hue:null,hex:c};c='Invalid colour: "'+b+'"';a!==b&& -(c+=' (from "'+a+'")');throw Error(c);};var module$exports$Blockly$blockRendering$ConstantProvider={ConstantProvider:function(){this.NO_PADDING=0;this.SMALL_PADDING=3;this.MEDIUM_PADDING=5;this.MEDIUM_LARGE_PADDING=8;this.LARGE_PADDING=10;this.TALL_INPUT_FIELD_OFFSET_Y=this.MEDIUM_PADDING;this.TAB_HEIGHT=15;this.TAB_OFFSET_FROM_TOP=5;this.TAB_VERTICAL_OVERLAP=2.5;this.TAB_WIDTH=8;this.NOTCH_WIDTH=15;this.NOTCH_HEIGHT=4;this.MIN_BLOCK_WIDTH=12;this.EMPTY_BLOCK_SPACER_HEIGHT=16;this.DUMMY_INPUT_SHADOW_MIN_HEIGHT=this.DUMMY_INPUT_MIN_HEIGHT= -this.TAB_HEIGHT;this.CORNER_RADIUS=8;this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT=15;this.STATEMENT_BOTTOM_SPACER=0;this.STATEMENT_INPUT_PADDING_LEFT=20;this.BETWEEN_STATEMENT_PADDING_Y=4;this.TOP_ROW_MIN_HEIGHT=this.MEDIUM_PADDING;this.TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING;this.BOTTOM_ROW_MIN_HEIGHT=this.MEDIUM_PADDING;this.BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING;this.ADD_START_HATS=!1;this.START_HAT_HEIGHT=15;this.START_HAT_WIDTH=100;this.SPACER_DEFAULT_HEIGHT= -15;this.MIN_BLOCK_HEIGHT=24;this.EMPTY_INLINE_INPUT_PADDING=14.5;this.EMPTY_INLINE_INPUT_HEIGHT=this.TAB_HEIGHT+11;this.EXTERNAL_VALUE_INPUT_PADDING=2;this.EMPTY_STATEMENT_INPUT_HEIGHT=this.MIN_BLOCK_HEIGHT;this.START_POINT=(0,module$exports$Blockly$utils$svgPaths.moveBy)(0,0);this.JAGGED_TEETH_HEIGHT=12;this.JAGGED_TEETH_WIDTH=6;this.FIELD_TEXT_FONTSIZE=11;this.FIELD_TEXT_FONTWEIGHT="normal";this.FIELD_TEXT_FONTFAMILY="sans-serif";this.FIELD_TEXT_BASELINE=this.FIELD_TEXT_HEIGHT=-1;this.FIELD_BORDER_RECT_RADIUS= -4;this.FIELD_BORDER_RECT_HEIGHT=16;this.FIELD_BORDER_RECT_X_PADDING=5;this.FIELD_BORDER_RECT_Y_PADDING=3;this.FIELD_BORDER_RECT_COLOUR="#fff";this.FIELD_TEXT_BASELINE_CENTER=!module$exports$Blockly$utils$userAgent.IE&&!module$exports$Blockly$utils$userAgent.EDGE;this.FIELD_DROPDOWN_BORDER_RECT_HEIGHT=this.FIELD_BORDER_RECT_HEIGHT;this.FIELD_DROPDOWN_SVG_ARROW=this.FIELD_DROPDOWN_COLOURED_DIV=this.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW=!1;this.FIELD_DROPDOWN_SVG_ARROW_PADDING=this.FIELD_BORDER_RECT_X_PADDING; -this.FIELD_DROPDOWN_SVG_ARROW_SIZE=12;this.FIELD_DROPDOWN_SVG_ARROW_DATAURI="data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMi43MSIgaGVpZ2h0PSI4Ljc5IiB2aWV3Qm94PSIwIDAgMTIuNzEgOC43OSI+PHRpdGxlPmRyb3Bkb3duLWFycm93PC90aXRsZT48ZyBvcGFjaXR5PSIwLjEiPjxwYXRoIGQ9Ik0xMi43MSwyLjQ0QTIuNDEsMi40MSwwLDAsMSwxMiw0LjE2TDguMDgsOC4wOGEyLjQ1LDIuNDUsMCwwLDEtMy40NSwwTDAuNzIsNC4xNkEyLjQyLDIuNDIsMCwwLDEsMCwyLjQ0LDIuNDgsMi40OCwwLDAsMSwuNzEuNzFDMSwwLjQ3LDEuNDMsMCw2LjM2LDBTMTEuNzUsMC40NiwxMiwuNzFBMi40NCwyLjQ0LDAsMCwxLDEyLjcxLDIuNDRaIiBmaWxsPSIjMjMxZjIwIi8+PC9nPjxwYXRoIGQ9Ik02LjM2LDcuNzlhMS40MywxLjQzLDAsMCwxLTEtLjQyTDEuNDIsMy40NWExLjQ0LDEuNDQsMCwwLDEsMC0yYzAuNTYtLjU2LDkuMzEtMC41Niw5Ljg3LDBhMS40NCwxLjQ0LDAsMCwxLDAsMkw3LjM3LDcuMzdBMS40MywxLjQzLDAsMCwxLDYuMzYsNy43OVoiIGZpbGw9IiNmZmYiLz48L3N2Zz4="; -this.FIELD_COLOUR_FULL_BLOCK=this.FIELD_TEXTINPUT_BOX_SHADOW=!1;this.FIELD_COLOUR_DEFAULT_WIDTH=26;this.FIELD_COLOUR_DEFAULT_HEIGHT=this.FIELD_BORDER_RECT_HEIGHT;this.FIELD_CHECKBOX_X_OFFSET=this.FIELD_BORDER_RECT_X_PADDING-3;this.randomIdentifier=String(Math.random()).substring(2);this.defs_=null;this.embossFilterId="";this.embossFilter_=null;this.disabledPatternId="";this.disabledPattern_=null;this.debugFilterId="";this.cssNode_=this.debugFilter_=null;this.CURSOR_COLOUR="#cc0a0a";this.MARKER_COLOUR= -"#4286f4";this.CURSOR_WS_WIDTH=100;this.WS_CURSOR_HEIGHT=5;this.CURSOR_STACK_PADDING=10;this.CURSOR_BLOCK_PADDING=2;this.CURSOR_STROKE_WIDTH=4;this.FULL_BLOCK_FIELDS=!1;this.INSERTION_MARKER_COLOUR="#000000";this.INSERTION_MARKER_OPACITY=.2;this.SHAPES={PUZZLE:1,NOTCH:2}}}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.init=function(){this.JAGGED_TEETH=this.makeJaggedTeeth();this.NOTCH=this.makeNotch();this.START_HAT=this.makeStartHat();this.PUZZLE_TAB=this.makePuzzleTab();this.INSIDE_CORNERS=this.makeInsideCorners();this.OUTSIDE_CORNERS=this.makeOutsideCorners()}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setTheme=function(a){this.blockStyles=Object.create(null);var b=a.blockStyles,c;for(c in b)this.blockStyles[c]=this.validatedBlockStyle_(b[c]);this.setDynamicProperties_(a)};module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setDynamicProperties_=function(a){this.setFontConstants_(a);this.setComponentConstants_(a);this.ADD_START_HATS=null!==a.startHats?a.startHats:this.ADD_START_HATS}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setFontConstants_=function(a){a.fontStyle&&a.fontStyle.family&&(this.FIELD_TEXT_FONTFAMILY=a.fontStyle.family);a.fontStyle&&a.fontStyle.weight&&(this.FIELD_TEXT_FONTWEIGHT=a.fontStyle.weight);a.fontStyle&&a.fontStyle.size&&(this.FIELD_TEXT_FONTSIZE=a.fontStyle.size);a=(0,module$exports$Blockly$utils$dom.measureFontMetrics)("Hg",this.FIELD_TEXT_FONTSIZE+"pt",this.FIELD_TEXT_FONTWEIGHT,this.FIELD_TEXT_FONTFAMILY);this.FIELD_TEXT_HEIGHT= -a.height;this.FIELD_TEXT_BASELINE=a.baseline}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setComponentConstants_=function(a){this.CURSOR_COLOUR=a.getComponentStyle("cursorColour")||this.CURSOR_COLOUR;this.MARKER_COLOUR=a.getComponentStyle("markerColour")||this.MARKER_COLOUR;this.INSERTION_MARKER_COLOUR=a.getComponentStyle("insertionMarkerColour")||this.INSERTION_MARKER_COLOUR;this.INSERTION_MARKER_OPACITY=Number(a.getComponentStyle("insertionMarkerOpacity"))||this.INSERTION_MARKER_OPACITY}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.getBlockStyleForColour=function(a){var b="auto_"+a;this.blockStyles[b]||(this.blockStyles[b]=this.createBlockStyle_(a));return{style:this.blockStyles[b],name:b}};module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.getBlockStyle=function(a){return this.blockStyles[a||""]||(a&&0===a.indexOf("auto_")?this.getBlockStyleForColour(a.substring(5)).style:this.createBlockStyle_("#000000"))}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.createBlockStyle_=function(a){return this.validatedBlockStyle_({colourPrimary:a})}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.validatedBlockStyle_=function(a){var b={};a&&(0,$.module$exports$Blockly$utils$object.mixin)(b,a);a=(0,module$exports$Blockly$utils$parsing.parseBlockColour)(b.colourPrimary||"#000");b.colourPrimary=a.hex;b.colourSecondary=b.colourSecondary?(0,module$exports$Blockly$utils$parsing.parseBlockColour)(b.colourSecondary).hex:this.generateSecondaryColour_(b.colourPrimary);b.colourTertiary=b.colourTertiary?(0,module$exports$Blockly$utils$parsing.parseBlockColour)(b.colourTertiary).hex: -this.generateTertiaryColour_(b.colourPrimary);b.hat=b.hat||"";return b};module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.generateSecondaryColour_=function(a){return(0,module$exports$Blockly$utils$colour.blend)("#fff",a,.6)||a};module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.generateTertiaryColour_=function(a){return(0,module$exports$Blockly$utils$colour.blend)("#fff",a,.3)||a}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.dispose=function(){this.embossFilter_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.embossFilter_);this.disabledPattern_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.disabledPattern_);this.debugFilter_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.debugFilter_);this.cssNode_=null}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeJaggedTeeth=function(){var a=this.JAGGED_TEETH_HEIGHT,b=this.JAGGED_TEETH_WIDTH,c=(0,module$exports$Blockly$utils$svgPaths.line)([(0,module$exports$Blockly$utils$svgPaths.point)(b,a/4),(0,module$exports$Blockly$utils$svgPaths.point)(2*-b,a/2),(0,module$exports$Blockly$utils$svgPaths.point)(b,a/4)]);return{height:a,width:b,path:c}}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeStartHat=function(){var a=this.START_HAT_HEIGHT,b=this.START_HAT_WIDTH,c=(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(30,-a),(0,module$exports$Blockly$utils$svgPaths.point)(70,-a),(0,module$exports$Blockly$utils$svgPaths.point)(b,0)]);return{height:a,width:b,path:c}}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makePuzzleTab=function(){function a(f){f=f?-1:1;var g=-f,h=c/2,k=h+2.5,l=h+.5,m=(0,module$exports$Blockly$utils$svgPaths.point)(-b,f*h);h=(0,module$exports$Blockly$utils$svgPaths.point)(b,f*h);return(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(0,f*k),(0,module$exports$Blockly$utils$svgPaths.point)(-b,g*l),m])+(0,module$exports$Blockly$utils$svgPaths.curve)("s", -[(0,module$exports$Blockly$utils$svgPaths.point)(b,2.5*g),h])}var b=this.TAB_WIDTH,c=this.TAB_HEIGHT,d=a(!0),e=a(!1);return{type:this.SHAPES.PUZZLE,width:b,height:c,pathDown:e,pathUp:d}}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeNotch=function(){function a(g){return(0,module$exports$Blockly$utils$svgPaths.line)([(0,module$exports$Blockly$utils$svgPaths.point)(g*d,c),(0,module$exports$Blockly$utils$svgPaths.point)(3*g,0),(0,module$exports$Blockly$utils$svgPaths.point)(g*d,-c)])}var b=this.NOTCH_WIDTH,c=this.NOTCH_HEIGHT,d=(b-3)/2,e=a(1),f=a(-1);return{type:this.SHAPES.NOTCH,width:b,height:c,pathLeft:e,pathRight:f}}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeInsideCorners=function(){var a=this.CORNER_RADIUS,b=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a,a)),c=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,a));return{width:a,height:a,pathTop:b,pathBottom:c}}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeOutsideCorners=function(){var a=this.CORNER_RADIUS,b=(0,module$exports$Blockly$utils$svgPaths.moveBy)(0,a)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,-a)),c=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,a)),d=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a, --a)),e=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a,a));return{topLeft:b,topRight:c,bottomRight:e,bottomLeft:d,rightHeight:a}}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.shapeFor=function(a){switch(a.type){case $.module$exports$Blockly$ConnectionType.ConnectionType.INPUT_VALUE:case $.module$exports$Blockly$ConnectionType.ConnectionType.OUTPUT_VALUE:return this.PUZZLE_TAB;case $.module$exports$Blockly$ConnectionType.ConnectionType.PREVIOUS_STATEMENT:case $.module$exports$Blockly$ConnectionType.ConnectionType.NEXT_STATEMENT:return this.NOTCH;default:throw Error("Unknown connection type"); -}}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.createDom=function(a,b,c){this.injectCSS_(b,c);this.defs_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.DEFS,{},a);a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FILTER,{id:"blocklyEmbossFilter"+this.randomIdentifier},this.defs_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEGAUSSIANBLUR,{"in":"SourceAlpha", -stdDeviation:1,result:"blur"},a);b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FESPECULARLIGHTING,{"in":"blur",surfaceScale:1,specularConstant:.5,specularExponent:10,"lighting-color":"white",result:"specOut"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEPOINTLIGHT,{x:-5E3,y:-1E4,z:2E4},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"specOut", -in2:"SourceAlpha",operator:"in",result:"specOut"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"SourceGraphic",in2:"specOut",operator:"arithmetic",k1:0,k2:1,k3:1,k4:0},a);this.embossFilterId=a.id;this.embossFilter_=a;a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATTERN,{id:"blocklyDisabledPattern"+this.randomIdentifier,patternUnits:"userSpaceOnUse",width:10,height:10},this.defs_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT, -{width:10,height:10,fill:"#aaa"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{d:"M 0 0 L 10 10 M 10 0 L 0 10",stroke:"#cc0"},a);this.disabledPatternId=a.id;this.disabledPattern_=a;this.createDebugFilter()}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.createDebugFilter=function(){if(!this.debugFilter_){var a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FILTER,{id:"blocklyDebugFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},this.defs_),b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPONENTTRANSFER,{result:"outBlur"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFUNCA, -{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFLOOD,{"flood-color":"#ff0000","flood-opacity":.5,result:"outColor"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},a);this.debugFilterId=a.id;this.debugFilter_=a}}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.injectCSS_=function(a,b){b=this.getCSS_(b);a="blockly-renderer-style-"+a;this.cssNode_=document.getElementById(a);var c=b.join("\n");this.cssNode_?this.cssNode_.firstChild.textContent=c:(b=document.createElement("style"),b.id=a,a=document.createTextNode(c),b.appendChild(a),document.head.insertBefore(b,document.head.firstChild),this.cssNode_=b)}; -module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.getCSS_=function(a){return[a+" .blocklyText, ",a+" .blocklyFlyoutLabelText {","font: "+this.FIELD_TEXT_FONTWEIGHT+" "+this.FIELD_TEXT_FONTSIZE+"pt "+this.FIELD_TEXT_FONTFAMILY+";","}",a+" .blocklyText {","fill: #fff;","}",a+" .blocklyNonEditableText>rect,",a+" .blocklyEditableText>rect {","fill: "+this.FIELD_BORDER_RECT_COLOUR+";","fill-opacity: .6;","stroke: none;","}",a+" .blocklyNonEditableText>text,",a+" .blocklyEditableText>text {", -"fill: #000;","}",a+" .blocklyFlyoutLabelText {","fill: #000;","}",a+" .blocklyText.blocklyBubbleText {","fill: #000;","}",a+" .blocklyEditableText:not(.editing):hover>rect {","stroke: #fff;","stroke-width: 2;","}",a+" .blocklyHtmlInput {","font-family: "+this.FIELD_TEXT_FONTFAMILY+";","font-weight: "+this.FIELD_TEXT_FONTWEIGHT+";","}",a+" .blocklySelected>.blocklyPath {","stroke: #fc3;","stroke-width: 3px;","}",a+" .blocklyHighlightedConnectionPath {","stroke: #fc3;","}",a+" .blocklyReplaceable .blocklyPath {", -"fill-opacity: .5;","}",a+" .blocklyReplaceable .blocklyPathLight,",a+" .blocklyReplaceable .blocklyPathDark {","display: none;","}",a+" .blocklyInsertionMarker>.blocklyPath {","fill-opacity: "+this.INSERTION_MARKER_OPACITY+";","stroke: none;","}"]};var module$exports$Blockly$blockRendering$Field={Field:function(a,b,c){module$exports$Blockly$blockRendering$Measurable.Measurable.call(this,a);this.field=b;this.isEditable=b.EDITABLE;this.flipRtl=b.getFlipRtl();this.type|=module$exports$Blockly$blockRendering$Types.Types.FIELD;a=this.field.getSize();this.height=a.height;this.width=a.width;this.parentInput=c}};$.$jscomp.inherits(module$exports$Blockly$blockRendering$Field.Field,module$exports$Blockly$blockRendering$Measurable.Measurable);var module$exports$Blockly$fieldRegistry={register:function(a,b){(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.FIELD,a,b)},unregister:function(a){(0,module$exports$Blockly$registry.unregister)(module$exports$Blockly$registry.Type.FIELD,a)},fromJson:function(a){var b=(0,module$exports$Blockly$registry.getObject)(module$exports$Blockly$registry.Type.FIELD,a.type);return b?b.fromJson(a):(console.warn("Blockly could not create a field of type "+a.type+". The field is probably not being registered. This could be because the file is not loaded, the field does not register itself (Issue #1584), or the registration is not being reached."), -null)}};var module$exports$Blockly$IASTNodeLocation={IASTNodeLocation:function(){}};var module$exports$Blockly$IASTNodeLocationSvg={IASTNodeLocationSvg:function(){}};var module$exports$Blockly$IASTNodeLocationWithBlock={IASTNodeLocationWithBlock:function(){}};var module$exports$Blockly$IKeyboardAccessible={IKeyboardAccessible:function(){}};var module$exports$Blockly$IRegistrable={IRegistrable:function(){}};var module$exports$Blockly$MarkerManager={MarkerManager:function(a){this.cursorSvg_=this.cursor_=null;this.markers_=Object.create(null);this.workspace_=a;this.markerSvg_=null}};module$exports$Blockly$MarkerManager.MarkerManager.prototype.registerMarker=function(a,b){this.markers_[a]&&this.unregisterMarker(a);b.setDrawer(this.workspace_.getRenderer().makeMarkerDrawer(this.workspace_,b));this.setMarkerSvg(b.getDrawer().createDom());this.markers_[a]=b}; -module$exports$Blockly$MarkerManager.MarkerManager.prototype.unregisterMarker=function(a){var b=this.markers_[a];if(b)b.dispose(),delete this.markers_[a];else throw Error("Marker with ID "+a+" does not exist. Can only unregister markers that exist.");};module$exports$Blockly$MarkerManager.MarkerManager.prototype.getCursor=function(){return this.cursor_};module$exports$Blockly$MarkerManager.MarkerManager.prototype.getMarker=function(a){return this.markers_[a]||null}; -module$exports$Blockly$MarkerManager.MarkerManager.prototype.setCursor=function(a){this.cursor_&&this.cursor_.getDrawer()&&this.cursor_.getDrawer().dispose();if(this.cursor_=a)a=this.workspace_.getRenderer().makeMarkerDrawer(this.workspace_,this.cursor_),this.cursor_.setDrawer(a),this.setCursorSvg(this.cursor_.getDrawer().createDom())}; -module$exports$Blockly$MarkerManager.MarkerManager.prototype.setCursorSvg=function(a){a?(this.workspace_.getBlockCanvas().appendChild(a),this.cursorSvg_=a):this.cursorSvg_=null};module$exports$Blockly$MarkerManager.MarkerManager.prototype.setMarkerSvg=function(a){a?this.workspace_.getBlockCanvas()&&(this.cursorSvg_?this.workspace_.getBlockCanvas().insertBefore(a,this.cursorSvg_):this.workspace_.getBlockCanvas().appendChild(a)):this.markerSvg_=null}; -module$exports$Blockly$MarkerManager.MarkerManager.prototype.updateMarkers=function(){this.workspace_.keyboardAccessibilityMode&&this.cursorSvg_&&this.workspace_.getCursor().draw()};module$exports$Blockly$MarkerManager.MarkerManager.prototype.dispose=function(){for(var a=Object.keys(this.markers_),b=0,c;c=a[b];b++)this.unregisterMarker(c);this.markers_=null;this.cursor_&&(this.cursor_.dispose(),this.cursor_=null)};module$exports$Blockly$MarkerManager.MarkerManager.LOCAL_MARKER="local_marker_1";var module$exports$Blockly$utils$Sentinel={Sentinel:function(){}};var module$exports$Blockly$Events$BlockChange={BlockChange:function(a,b,c,d,e){module$exports$Blockly$Events$BlockBase.BlockBase.call(this,a);this.type=module$exports$Blockly$Events$utils.CHANGE;a&&(this.element="undefined"===typeof b?"":b,this.name="undefined"===typeof c?"":c,this.oldValue="undefined"===typeof d?"":d,this.newValue="undefined"===typeof e?"":e)}};$.$jscomp.inherits(module$exports$Blockly$Events$BlockChange.BlockChange,module$exports$Blockly$Events$BlockBase.BlockBase); -module$exports$Blockly$Events$BlockChange.BlockChange.prototype.toJson=function(){var a=module$exports$Blockly$Events$BlockBase.BlockBase.prototype.toJson.call(this);a.element=this.element;this.name&&(a.name=this.name);a.oldValue=this.oldValue;a.newValue=this.newValue;return a}; -module$exports$Blockly$Events$BlockChange.BlockChange.prototype.fromJson=function(a){module$exports$Blockly$Events$BlockBase.BlockBase.prototype.fromJson.call(this,a);this.element=a.element;this.name=a.name;this.oldValue=a.oldValue;this.newValue=a.newValue};module$exports$Blockly$Events$BlockChange.BlockChange.prototype.isNull=function(){return this.oldValue===this.newValue}; -module$exports$Blockly$Events$BlockChange.BlockChange.prototype.run=function(a){var b=this.getEventWorkspace_().getBlockById(this.blockId);if(b)switch(b.mutator&&b.mutator.setVisible(!1),a=a?this.newValue:this.oldValue,this.element){case "field":(b=b.getField(this.name))?b.setValue(a):console.warn("Can't set non-existent field: "+this.name);break;case "comment":b.setCommentText(a||null);break;case "collapsed":b.setCollapsed(!!a);break;case "disabled":b.setEnabled(!a);break;case "inline":b.setInputsInline(!!a); -break;case "mutation":var c=module$exports$Blockly$Events$BlockChange.BlockChange.getExtraBlockState_(b);b.loadExtraState?b.loadExtraState(JSON.parse(a||"{}")):b.domToMutation&&b.domToMutation((0,$.module$exports$Blockly$Xml.textToDom)(a||""));(0,module$exports$Blockly$Events$utils.fire)(new module$exports$Blockly$Events$BlockChange.BlockChange(b,"mutation",null,c,a));break;default:console.warn("Unknown change type: "+this.element)}else console.warn("Can't change non-existent block: "+ -this.blockId)};module$exports$Blockly$Events$BlockChange.BlockChange.getExtraBlockState_=function(a){return a.saveExtraState?(a=a.saveExtraState())?JSON.stringify(a):"":a.mutationToDom?(a=a.mutationToDom())?(0,$.module$exports$Blockly$Xml.domToText)(a):"":""};(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.EVENT,module$exports$Blockly$Events$utils.CHANGE,module$exports$Blockly$Events$BlockChange.BlockChange);var module$exports$Blockly$blockAnimations={},module$contents$Blockly$blockAnimations_disconnectPid=0,module$contents$Blockly$blockAnimations_disconnectGroup=null; -module$exports$Blockly$blockAnimations.disposeUiEffect=function(a){var b=a.workspace,c=a.getSvgRoot();b.getAudioManager().play("delete");a=b.getSvgXY(c);c=c.cloneNode(!0);c.translateX_=a.x;c.translateY_=a.y;c.setAttribute("transform","translate("+a.x+","+a.y+")");b.getParentSvg().appendChild(c);c.bBox_=c.getBBox();module$contents$Blockly$blockAnimations_disposeUiStep(c,b.RTL,new Date,b.scale)}; -var module$contents$Blockly$blockAnimations_disposeUiStep=function(a,b,c,d){var e=(new Date-c)/150;1c)){var d=b.getSvgXY(a.getSvgRoot());a.outputConnection?(d.x+=(a.RTL?3:-3)*c,d.y+=13*c):a.previousConnection&&(d.x+=(a.RTL?-23:23)*c,d.y+=3*c);a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{cx:d.x,cy:d.y,r:0,fill:"none",stroke:"#888","stroke-width":10},b.getParentSvg());module$contents$Blockly$blockAnimations_connectionUiStep(a, -new Date,c)}};var module$contents$Blockly$blockAnimations_connectionUiStep=function(a,b,c){var d=(new Date-b)/150;1a.workspace.scale)){var b=a.getHeightWidth().height;b=Math.atan(10/b)/Math.PI*180;a.RTL||(b*=-1);module$contents$Blockly$blockAnimations_disconnectUiStep(a.getSvgRoot(),b,new Date)}}; -var module$contents$Blockly$blockAnimations_disconnectUiStep=function(a,b,c){var d=(new Date-c)/200;11'),d.appendChild(c),b.push(d));if(module$exports$Blockly$blocks.Blocks.variables_get)for(a.sort(module$exports$Blockly$VariableModel.VariableModel.compareByName), -c=0;d=a[c];c++){var e=(0,$.module$exports$Blockly$utils$xml.createElement)("block");e.setAttribute("type","variables_get");e.setAttribute("gap",8);e.appendChild((0,$.module$exports$Blockly$Variables.generateVariableFieldDom)(d));b.push(e)}}return b};$.module$exports$Blockly$Variables.VAR_LETTER_OPTIONS="ijkmnopqrstuvwxyzabcdefgh"; -$.module$exports$Blockly$Variables.generateUniqueName=function(a){return(0,$.module$exports$Blockly$Variables.generateUniqueNameFromOptions)($.module$exports$Blockly$Variables.VAR_LETTER_OPTIONS.charAt(0),a.getAllVariableNames())}; -$.module$exports$Blockly$Variables.generateUniqueNameFromOptions=function(a,b){if(!b.length)return a;for(var c=$.module$exports$Blockly$Variables.VAR_LETTER_OPTIONS,d="",e=c.indexOf(a);;){for(var f=!1,g=0;gc||b.getSourceBlock().isInsertionMarker())return!1;switch(b.type){case $.module$exports$Blockly$ConnectionType.ConnectionType.PREVIOUS_STATEMENT:return this.canConnectToPrevious_(a,b);case $.module$exports$Blockly$ConnectionType.ConnectionType.OUTPUT_VALUE:if(b.isConnected()&&!b.targetBlock().isInsertionMarker()||a.isConnected())return!1;break;case $.module$exports$Blockly$ConnectionType.ConnectionType.INPUT_VALUE:if(b.isConnected()&& -!b.targetBlock().isMovable()&&!b.targetBlock().isShadow())return!1;break;case $.module$exports$Blockly$ConnectionType.ConnectionType.NEXT_STATEMENT:if(b.isConnected()&&!a.getSourceBlock().nextConnection&&!b.targetBlock().isShadow()&&b.targetBlock().nextConnection)return!1;break;default:return!1}return-1!==$.module$exports$Blockly$common.draggingConnections.indexOf(b)?!1:!0}; -module$exports$Blockly$ConnectionChecker.ConnectionChecker.prototype.canConnectToPrevious_=function(a,b){if(a.targetConnection||-1!==$.module$exports$Blockly$common.draggingConnections.indexOf(b))return!1;if(!b.targetConnection)return!0;a=b.targetBlock();return a.isInsertionMarker()?!a.getPreviousBlock():!1};(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.CONNECTION_CHECKER,module$exports$Blockly$registry.DEFAULT,module$exports$Blockly$ConnectionChecker.ConnectionChecker);var module$exports$Blockly$Workspace={},module$contents$Blockly$Workspace_WorkspaceDB_=Object.create(null); -module$exports$Blockly$Workspace.Workspace=function(a){this.id=(0,module$exports$Blockly$utils$idGenerator.genUid)();module$contents$Blockly$Workspace_WorkspaceDB_[this.id]=this;this.options=a||new module$exports$Blockly$Options.Options({});this.RTL=!!this.options.RTL;this.horizontalLayout=!!this.options.horizontalLayout;this.toolboxPosition=this.options.toolboxPosition;this.isClearing=this.isMutator=this.isFlyout=this.rendered=!1;this.MAX_UNDO=1024;this.connectionDBList=null;this.connectionChecker= -new ((0,module$exports$Blockly$registry.getClassFromOptions)(module$exports$Blockly$registry.Type.CONNECTION_CHECKER,this.options,!0))(this);this.topBlocks_=[];this.topComments_=[];this.commentDB_=Object.create(null);this.listeners_=[];this.undoStack_=[];this.redoStack_=[];this.blockDB_=Object.create(null);this.typedBlocksDB_=Object.create(null);this.variableMap_=new module$exports$Blockly$VariableMap.VariableMap(this);this.potentialVariableMap_=null}; -module$exports$Blockly$Workspace.Workspace.prototype.dispose=function(){this.listeners_.length=0;this.clear();delete module$contents$Blockly$Workspace_WorkspaceDB_[this.id]};module$exports$Blockly$Workspace.Workspace.prototype.sortObjects_=function(a,b){a=a.getRelativeToSurfaceXY();b=b.getRelativeToSurfaceXY();return a.y+module$exports$Blockly$Workspace.Workspace.prototype.sortObjects_.offset*a.x-(b.y+module$exports$Blockly$Workspace.Workspace.prototype.sortObjects_.offset*b.x)}; -module$exports$Blockly$Workspace.Workspace.prototype.addTopBlock=function(a){this.topBlocks_.push(a)};module$exports$Blockly$Workspace.Workspace.prototype.removeTopBlock=function(a){if(!(0,module$exports$Blockly$utils$array.removeElem)(this.topBlocks_,a))throw Error("Block not present in workspace's list of top-most blocks.");}; -module$exports$Blockly$Workspace.Workspace.prototype.getTopBlocks=function(a){var b=[].concat(this.topBlocks_);a&&1this.remainingCapacityOfType(c))return!1;b+=a[c]}return b>this.remainingCapacity()?!1:!0};module$exports$Blockly$Workspace.Workspace.prototype.hasBlockLimits=function(){return Infinity!==this.options.maxBlocks||!!this.options.maxInstances};module$exports$Blockly$Workspace.Workspace.prototype.getUndoStack=function(){return this.undoStack_}; -module$exports$Blockly$Workspace.Workspace.prototype.getRedoStack=function(){return this.redoStack_}; -module$exports$Blockly$Workspace.Workspace.prototype.undo=function(a){var b=a?this.redoStack_:this.undoStack_,c=a?this.undoStack_:this.redoStack_,d=b.pop();if(d){for(var e=[d];b.length&&d.group&&d.group===b[b.length-1].group;)e.push(b.pop());for(b=0;bthis.MAX_UNDO&&0<=this.MAX_UNDO;)this.undoStack_.shift();for(var b=0;ba.width)return b;if(this.workspace_.RTL){var c=this.anchorXY_.x-b,d=a.left+a.width;a=a.left+module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness/this.workspace_.scale;c-this.width_d&&(b=-(d-this.anchorXY_.x))}else{c=b+this.anchorXY_.x;d=c+this.width_;var e=a.left;a=a.left+a.width-module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness/ -this.workspace_.scale;ca&&(b=a-this.anchorXY_.x-this.width_)}return b};module$exports$Blockly$Bubble.Bubble.prototype.getOptimalRelativeTop_=function(a){var b=-this.height_/4;if(this.height_>a.height)return b;var c=this.anchorXY_.y+b,d=c+this.height_,e=a.top;a=a.top+a.height-module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness/this.workspace_.scale;var f=this.anchorXY_.y;ca&&(b=a-f-this.height_);return b}; -module$exports$Blockly$Bubble.Bubble.prototype.positionBubble_=function(){var a=this.anchorXY_.x;a=this.workspace_.RTL?a-(this.relativeLeft_+this.width_):a+this.relativeLeft_;this.moveTo(a,this.relativeTop_+this.anchorXY_.y)};module$exports$Blockly$Bubble.Bubble.prototype.moveTo=function(a,b){this.bubbleGroup_.setAttribute("transform","translate("+a+","+b+")")};module$exports$Blockly$Bubble.Bubble.prototype.setDragging=function(a){!a&&this.moveCallback_&&this.moveCallback_()}; -module$exports$Blockly$Bubble.Bubble.prototype.getBubbleSize=function(){return new module$exports$Blockly$utils$Size.Size(this.width_,this.height_)}; -module$exports$Blockly$Bubble.Bubble.prototype.setBubbleSize=function(a,b){var c=2*module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH;a=Math.max(a,c+45);b=Math.max(b,c+20);this.width_=a;this.height_=b;this.bubbleBack_.setAttribute("width",a);this.bubbleBack_.setAttribute("height",b);this.resizeGroup_&&(this.workspace_.RTL?this.resizeGroup_.setAttribute("transform","translate("+2*module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH+","+(b-c)+") scale(-1 1)"):this.resizeGroup_.setAttribute("transform", -"translate("+(a-c)+","+(b-c)+")"));this.autoLayout_&&this.layoutBubble_();this.positionBubble_();this.renderArrow_();this.resizeCallback_&&this.resizeCallback_()}; -module$exports$Blockly$Bubble.Bubble.prototype.renderArrow_=function(){var a=[],b=this.width_/2,c=this.height_/2,d=-this.relativeLeft_,e=-this.relativeTop_;if(b===d&&c===e)a.push("M "+b+","+c);else{e-=c;d-=b;this.workspace_.RTL&&(d*=-1);var f=Math.sqrt(e*e+d*d),g=Math.acos(d/f);0>e&&(g=2*Math.PI-g);var h=g+Math.PI/2;h>2*Math.PI&&(h-=2*Math.PI);var k=Math.sin(h),l=Math.cos(h),m=this.getBubbleSize();h=(m.width+m.height)/module$exports$Blockly$Bubble.Bubble.ARROW_THICKNESS;h=Math.min(h,m.width,m.height)/ -4;m=1-module$exports$Blockly$Bubble.Bubble.ANCHOR_RADIUS/f;d=b+m*d;e=c+m*e;m=b+h*l;var n=c+h*k;b-=h*l;c-=h*k;k=g+this.arrow_radians_;k>2*Math.PI&&(k-=2*Math.PI);g=Math.sin(k)*f/module$exports$Blockly$Bubble.Bubble.ARROW_BEND;f=Math.cos(k)*f/module$exports$Blockly$Bubble.Bubble.ARROW_BEND;a.push("M"+m+","+n);a.push("C"+(m+f)+","+(n+g)+" "+d+","+e+" "+d+","+e);a.push("C"+d+","+e+" "+(b+f)+","+(c+g)+" "+b+","+c)}a.push("z");this.bubbleArrow_.setAttribute("d",a.join(" "))}; -module$exports$Blockly$Bubble.Bubble.prototype.setColour=function(a){this.bubbleBack_.setAttribute("fill",a);this.bubbleArrow_.setAttribute("fill",a)}; -module$exports$Blockly$Bubble.Bubble.prototype.dispose=function(){this.onMouseDownBubbleWrapper_&&(0,module$exports$Blockly$browserEvents.unbind)(this.onMouseDownBubbleWrapper_);this.onMouseDownResizeWrapper_&&(0,module$exports$Blockly$browserEvents.unbind)(this.onMouseDownResizeWrapper_);module$exports$Blockly$Bubble.Bubble.unbindDragEvents_();(0,module$exports$Blockly$utils$dom.removeNode)(this.bubbleGroup_);this.disposed=!0}; -module$exports$Blockly$Bubble.Bubble.prototype.moveDuringDrag=function(a,b){a?a.translateSurface(b.x,b.y):this.moveTo(b.x,b.y);this.relativeLeft_=this.workspace_.RTL?this.anchorXY_.x-b.x-this.width_:b.x-this.anchorXY_.x;this.relativeTop_=b.y-this.anchorXY_.y;this.renderArrow_()}; -module$exports$Blockly$Bubble.Bubble.prototype.getRelativeToSurfaceXY=function(){return new module$exports$Blockly$utils$Coordinate.Coordinate(this.workspace_.RTL?-this.relativeLeft_+this.anchorXY_.x-this.width_:this.anchorXY_.x+this.relativeLeft_,this.anchorXY_.y+this.relativeTop_)};module$exports$Blockly$Bubble.Bubble.prototype.setAutoLayout=function(a){this.autoLayout_=a}; -module$exports$Blockly$Bubble.Bubble.unbindDragEvents_=function(){module$exports$Blockly$Bubble.Bubble.onMouseUpWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(module$exports$Blockly$Bubble.Bubble.onMouseUpWrapper_),module$exports$Blockly$Bubble.Bubble.onMouseUpWrapper_=null);module$exports$Blockly$Bubble.Bubble.onMouseMoveWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(module$exports$Blockly$Bubble.Bubble.onMouseMoveWrapper_),module$exports$Blockly$Bubble.Bubble.onMouseMoveWrapper_= -null)};module$exports$Blockly$Bubble.Bubble.bubbleMouseUp_=function(a){(0,module$exports$Blockly$Touch.clearTouchIdentifier)();module$exports$Blockly$Bubble.Bubble.unbindDragEvents_()}; -module$exports$Blockly$Bubble.Bubble.textToDom=function(a){var b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.TEXT,{"class":"blocklyText blocklyBubbleText blocklyNoPointerEvents",y:module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH},null);a=a.split("\n");for(var c=0;cb-$.module$exports$Blockly$config.config.currentConnectionPreference)}if(this.localConnection_|| -this.closestConnection_)console.error("Only one of localConnection_ and closestConnection_ was set.");else return!0}else return!(!this.localConnection_||!this.closestConnection_);console.error("Returning true from shouldUpdatePreviews, but it's not clear why.");return!0}; -module$exports$Blockly$InsertionMarkerManager.InsertionMarkerManager.prototype.getCandidate_=function(a){var b=this.getStartRadius_(),c=null,d=null;this.markerConnection_&&this.markerConnection_.isConnected()||this.updateAvailableConnections();for(var e=0;e(this.flyout_?$.module$exports$Blockly$config.config.flyoutDragRadius:$.module$exports$Blockly$config.config.dragRadius)}; -module$exports$Blockly$Gesture.Gesture.prototype.updateIsDraggingFromFlyout_=function(){return this.targetBlock_&&this.flyout_.isBlockCreatable_(this.targetBlock_)?!this.flyout_.isScrollable()||this.flyout_.isDragTowardWorkspace(this.currentDragDeltaXY_)?(this.startWorkspace_=this.flyout_.targetWorkspace,this.startWorkspace_.updateScreenCalculationsIfScrolled(),(0,module$exports$Blockly$Events$utils.getGroup)()||(0,module$exports$Blockly$Events$utils.setGroup)(!0),this.startBlock_=null,this.targetBlock_= -this.flyout_.createBlock(this.targetBlock_),this.targetBlock_.select(),!0):!1:!1};module$exports$Blockly$Gesture.Gesture.prototype.updateIsDraggingBubble_=function(){if(!this.startBubble_)return!1;this.isDraggingBubble_=!0;this.startDraggingBubble_();return!0}; -module$exports$Blockly$Gesture.Gesture.prototype.updateIsDraggingBlock_=function(){if(!this.targetBlock_)return!1;this.flyout_?this.isDraggingBlock_=this.updateIsDraggingFromFlyout_():this.targetBlock_.isMovable()&&(this.isDraggingBlock_=!0);return this.isDraggingBlock_?(this.startDraggingBlock_(),!0):!1}; -module$exports$Blockly$Gesture.Gesture.prototype.updateIsDraggingWorkspace_=function(){if(this.flyout_?this.flyout_.isScrollable():this.startWorkspace_&&this.startWorkspace_.isDraggable())this.workspaceDragger_=new module$exports$Blockly$WorkspaceDragger.WorkspaceDragger(this.startWorkspace_),this.isDraggingWorkspace_=!0,this.workspaceDragger_.startDrag()}; -module$exports$Blockly$Gesture.Gesture.prototype.updateIsDragging_=function(){if(this.calledUpdateIsDragging_)throw Error("updateIsDragging_ should only be called once per gesture.");this.calledUpdateIsDragging_=!0;this.updateIsDraggingBubble_()||this.updateIsDraggingBlock_()||this.updateIsDraggingWorkspace_()}; -module$exports$Blockly$Gesture.Gesture.prototype.startDraggingBlock_=function(){this.blockDragger_=new ((0,module$exports$Blockly$registry.getClassFromOptions)(module$exports$Blockly$registry.Type.BLOCK_DRAGGER,this.creatorWorkspace_.options,!0))(this.targetBlock_,this.startWorkspace_);this.blockDragger_.startDrag(this.currentDragDeltaXY_,this.healStack_);this.blockDragger_.drag(this.mostRecentEvent_,this.currentDragDeltaXY_)}; -module$exports$Blockly$Gesture.Gesture.prototype.startDraggingBubble_=function(){this.bubbleDragger_=new module$exports$Blockly$BubbleDragger.BubbleDragger(this.startBubble_,this.startWorkspace_);this.bubbleDragger_.startBubbleDrag();this.bubbleDragger_.dragBubble(this.mostRecentEvent_,this.currentDragDeltaXY_)}; -module$exports$Blockly$Gesture.Gesture.prototype.doStart=function(a){(0,module$exports$Blockly$browserEvents.isTargetInput)(a)?this.cancel():(this.hasStarted_=!0,(0,module$exports$Blockly$blockAnimations.disconnectUiStop)(),this.startWorkspace_.updateScreenCalculationsIfScrolled(),this.startWorkspace_.isMutator&&this.startWorkspace_.resize(),this.startWorkspace_.hideChaff(!!this.flyout_),this.startWorkspace_.markFocused(),this.mostRecentEvent_=a,(0,module$exports$Blockly$Tooltip.block)(),this.targetBlock_&& -this.targetBlock_.select(),(0,module$exports$Blockly$browserEvents.isRightButton)(a)?this.handleRightClick(a):("touchstart"!==a.type.toLowerCase()&&"pointerdown"!==a.type.toLowerCase()||"mouse"===a.pointerType||(0,module$exports$Blockly$Touch.longStart)(a,this),this.mouseDownXY_=new module$exports$Blockly$utils$Coordinate.Coordinate(a.clientX,a.clientY),this.healStack_=a.altKey||a.ctrlKey||a.metaKey,this.bindMouseEvents(a)))}; -module$exports$Blockly$Gesture.Gesture.prototype.bindMouseEvents=function(a){this.onMoveWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mousemove",null,this.handleMove.bind(this));this.onUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mouseup",null,this.handleUp.bind(this));a.preventDefault();a.stopPropagation()}; -module$exports$Blockly$Gesture.Gesture.prototype.handleMove=function(a){this.updateFromEvent_(a);this.isDraggingWorkspace_?this.workspaceDragger_.drag(this.currentDragDeltaXY_):this.isDraggingBlock_?this.blockDragger_.drag(this.mostRecentEvent_,this.currentDragDeltaXY_):this.isDraggingBubble_&&this.bubbleDragger_.dragBubble(this.mostRecentEvent_,this.currentDragDeltaXY_);a.preventDefault();a.stopPropagation()}; -module$exports$Blockly$Gesture.Gesture.prototype.handleUp=function(a){this.updateFromEvent_(a);(0,module$exports$Blockly$Touch.longStop)();this.isEnding_?console.log("Trying to end a gesture recursively."):(this.isEnding_=!0,this.isDraggingBubble_?this.bubbleDragger_.endBubbleDrag(a,this.currentDragDeltaXY_):this.isDraggingBlock_?this.blockDragger_.endDrag(a,this.currentDragDeltaXY_):this.isDraggingWorkspace_?this.workspaceDragger_.endDrag(this.currentDragDeltaXY_):this.isBubbleClick_()?this.doBubbleClick_(): -this.isFieldClick_()?this.doFieldClick_():this.isBlockClick_()?this.doBlockClick_():this.isWorkspaceClick_()&&this.doWorkspaceClick_(a),a.preventDefault(),a.stopPropagation(),this.dispose())}; -module$exports$Blockly$Gesture.Gesture.prototype.cancel=function(){this.isEnding_||((0,module$exports$Blockly$Touch.longStop)(),this.isDraggingBubble_?this.bubbleDragger_.endBubbleDrag(this.mostRecentEvent_,this.currentDragDeltaXY_):this.isDraggingBlock_?this.blockDragger_.endDrag(this.mostRecentEvent_,this.currentDragDeltaXY_):this.isDraggingWorkspace_&&this.workspaceDragger_.endDrag(this.currentDragDeltaXY_),this.dispose())}; -module$exports$Blockly$Gesture.Gesture.prototype.handleRightClick=function(a){this.targetBlock_?(this.bringBlockToFront_(),this.targetBlock_.workspace.hideChaff(!!this.flyout_),this.targetBlock_.showContextMenu(a)):this.startBubble_?this.startBubble_.showContextMenu(a):this.startWorkspace_&&!this.flyout_&&(this.startWorkspace_.hideChaff(),this.startWorkspace_.showContextMenu(a));a.preventDefault();a.stopPropagation();this.dispose()}; -module$exports$Blockly$Gesture.Gesture.prototype.handleWsStart=function(a,b){if(this.hasStarted_)throw Error("Tried to call gesture.handleWsStart, but the gesture had already been started.");this.setStartWorkspace_(b);this.mostRecentEvent_=a;this.doStart(a)};module$exports$Blockly$Gesture.Gesture.prototype.fireWorkspaceClick_=function(a){(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CLICK))(null,a.id,"workspace"))}; -module$exports$Blockly$Gesture.Gesture.prototype.handleFlyoutStart=function(a,b){if(this.hasStarted_)throw Error("Tried to call gesture.handleFlyoutStart, but the gesture had already been started.");this.setStartFlyout_(b);this.handleWsStart(a,b.getWorkspace())}; -module$exports$Blockly$Gesture.Gesture.prototype.handleBlockStart=function(a,b){if(this.hasStarted_)throw Error("Tried to call gesture.handleBlockStart, but the gesture had already been started.");this.setStartBlock(b);this.mostRecentEvent_=a};module$exports$Blockly$Gesture.Gesture.prototype.handleBubbleStart=function(a,b){if(this.hasStarted_)throw Error("Tried to call gesture.handleBubbleStart, but the gesture had already been started.");this.setStartBubble(b);this.mostRecentEvent_=a}; -module$exports$Blockly$Gesture.Gesture.prototype.doBubbleClick_=function(){this.startBubble_.setFocus&&this.startBubble_.setFocus();this.startBubble_.select&&this.startBubble_.select()};module$exports$Blockly$Gesture.Gesture.prototype.doFieldClick_=function(){this.startField_.showEditor(this.mostRecentEvent_);this.bringBlockToFront_()}; -module$exports$Blockly$Gesture.Gesture.prototype.doBlockClick_=function(){if(this.flyout_&&this.flyout_.autoClose)this.targetBlock_.isEnabled()&&((0,module$exports$Blockly$Events$utils.getGroup)()||(0,module$exports$Blockly$Events$utils.setGroup)(!0),this.flyout_.createBlock(this.targetBlock_).scheduleSnapAndBump());else{var a=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CLICK))(this.startBlock_,this.startWorkspace_.id,"block");(0,module$exports$Blockly$Events$utils.fire)(a)}this.bringBlockToFront_(); -(0,module$exports$Blockly$Events$utils.setGroup)(!1)};module$exports$Blockly$Gesture.Gesture.prototype.doWorkspaceClick_=function(a){a=this.creatorWorkspace_;(0,$.module$exports$Blockly$common.getSelected)()&&(0,$.module$exports$Blockly$common.getSelected)().unselect();this.fireWorkspaceClick_(this.startWorkspace_||a)};module$exports$Blockly$Gesture.Gesture.prototype.bringBlockToFront_=function(){this.targetBlock_&&!this.flyout_&&this.targetBlock_.bringToFront()}; -module$exports$Blockly$Gesture.Gesture.prototype.setStartField=function(a){if(this.hasStarted_)throw Error("Tried to call gesture.setStartField, but the gesture had already been started.");this.startField_||(this.startField_=a)};module$exports$Blockly$Gesture.Gesture.prototype.setStartBubble=function(a){this.startBubble_||(this.startBubble_=a)}; -module$exports$Blockly$Gesture.Gesture.prototype.setStartBlock=function(a){this.startBlock_||this.startBubble_||(this.startBlock_=a,a.isInFlyout&&a!==a.getRootBlock()?this.setTargetBlock_(a.getRootBlock()):this.setTargetBlock_(a))};module$exports$Blockly$Gesture.Gesture.prototype.setTargetBlock_=function(a){a.isShadow()?this.setTargetBlock_(a.getParent()):this.targetBlock_=a}; -module$exports$Blockly$Gesture.Gesture.prototype.setStartWorkspace_=function(a){this.startWorkspace_||(this.startWorkspace_=a)};module$exports$Blockly$Gesture.Gesture.prototype.setStartFlyout_=function(a){this.flyout_||(this.flyout_=a)};module$exports$Blockly$Gesture.Gesture.prototype.isBubbleClick_=function(){return!!this.startBubble_&&!this.hasExceededDragRadius_};module$exports$Blockly$Gesture.Gesture.prototype.isBlockClick_=function(){return!!this.startBlock_&&!this.hasExceededDragRadius_&&!this.isFieldClick_()}; -module$exports$Blockly$Gesture.Gesture.prototype.isFieldClick_=function(){return(this.startField_?this.startField_.isClickable():!1)&&!this.hasExceededDragRadius_&&(!this.flyout_||!this.flyout_.autoClose)};module$exports$Blockly$Gesture.Gesture.prototype.isWorkspaceClick_=function(){return!this.startBlock_&&!this.startBubble_&&!this.startField_&&!this.hasExceededDragRadius_}; -module$exports$Blockly$Gesture.Gesture.prototype.isDragging=function(){return this.isDraggingWorkspace_||this.isDraggingBlock_||this.isDraggingBubble_};module$exports$Blockly$Gesture.Gesture.prototype.hasStarted=function(){return this.hasStarted_};module$exports$Blockly$Gesture.Gesture.prototype.getInsertionMarkers=function(){return this.blockDragger_?this.blockDragger_.getInsertionMarkers():[]}; -module$exports$Blockly$Gesture.Gesture.prototype.getCurrentDragger=function(){return this.isDraggingBlock_?this.blockDragger_:this.isDraggingWorkspace_?this.workspaceDragger_:this.isDraggingBubble_?this.bubbleDragger_:null};module$exports$Blockly$Gesture.Gesture.inProgress=function(){for(var a=module$exports$Blockly$Workspace.Workspace.getAll(),b=0,c;c=a[b];b++)if(c.currentGesture_)return!0;return!1};var module$exports$Blockly$Field={Field:function(a,b,c){this.name=void 0;this.value_=this.constructor.prototype.DEFAULT_VALUE;this.tooltip_=this.validator_=null;this.size_=new module$exports$Blockly$utils$Size.Size(0,0);this.constants_=this.mouseDownWrapper_=this.textContent_=this.textElement_=this.borderRect_=this.fieldGroup_=this.markerSvg_=this.cursorSvg_=null;this.disposed=!1;this.maxDisplayLength=50;this.sourceBlock_=null;this.enabled_=this.visible_=this.isDirty_=!0;this.suffixField=this.prefixField= -this.clickTarget_=null;this.EDITABLE=!0;this.SERIALIZABLE=!1;this.CURSOR="";a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}};module$exports$Blockly$Field.Field.prototype.configure_=function(a){var b=a.tooltip;"string"===typeof b&&(b=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.tooltip));b&&this.setTooltip(b)}; -module$exports$Blockly$Field.Field.prototype.setSourceBlock=function(a){if(this.sourceBlock_)throw Error("Field already bound to a block");this.sourceBlock_=a};module$exports$Blockly$Field.Field.prototype.getConstants=function(){!this.constants_&&this.sourceBlock_&&this.sourceBlock_.workspace&&this.sourceBlock_.workspace.rendered&&(this.constants_=this.sourceBlock_.workspace.getRenderer().getConstants());return this.constants_};module$exports$Blockly$Field.Field.prototype.getSourceBlock=function(){return this.sourceBlock_}; -module$exports$Blockly$Field.Field.prototype.init=function(){this.fieldGroup_||(this.fieldGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{},null),this.isVisible()||(this.fieldGroup_.style.display="none"),this.sourceBlock_.getSvgRoot().appendChild(this.fieldGroup_),this.initView(),this.updateEditable(),this.setTooltip(this.tooltip_),this.bindEvents_(),this.initModel())}; -module$exports$Blockly$Field.Field.prototype.initView=function(){this.createBorderRect_();this.createTextElement_()};module$exports$Blockly$Field.Field.prototype.initModel=function(){}; -module$exports$Blockly$Field.Field.prototype.createBorderRect_=function(){this.borderRect_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{rx:this.getConstants().FIELD_BORDER_RECT_RADIUS,ry:this.getConstants().FIELD_BORDER_RECT_RADIUS,x:0,y:0,height:this.size_.height,width:this.size_.width,"class":"blocklyFieldRect"},this.fieldGroup_)}; -module$exports$Blockly$Field.Field.prototype.createTextElement_=function(){this.textElement_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.TEXT,{"class":"blocklyText"},this.fieldGroup_);this.getConstants().FIELD_TEXT_BASELINE_CENTER&&this.textElement_.setAttribute("dominant-baseline","central");this.textContent_=document.createTextNode("");this.textElement_.appendChild(this.textContent_)}; -module$exports$Blockly$Field.Field.prototype.bindEvents_=function(){(0,module$exports$Blockly$Tooltip.bindMouseEvents)(this.getClickTarget_());this.mouseDownWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(this.getClickTarget_(),"mousedown",this,this.onMouseDown_)};module$exports$Blockly$Field.Field.prototype.fromXml=function(a){this.setValue(a.textContent)};module$exports$Blockly$Field.Field.prototype.toXml=function(a){a.textContent=this.getValue();return a}; -module$exports$Blockly$Field.Field.prototype.saveState=function(a){a=this.saveLegacyState(module$exports$Blockly$Field.Field);return null!==a?a:this.getValue()};module$exports$Blockly$Field.Field.prototype.loadState=function(a){this.loadLegacyState(module$exports$Blockly$Field.Field,a)||this.setValue(a)}; -module$exports$Blockly$Field.Field.prototype.saveLegacyState=function(a){return a.prototype.saveState===this.saveState&&a.prototype.toXml!==this.toXml?(a=(0,$.module$exports$Blockly$utils$xml.createElement)("field"),a.setAttribute("name",this.name||""),(0,$.module$exports$Blockly$Xml.domToText)(this.toXml(a)).replace(' xmlns="https://developers.google.com/blockly/xml"',"")):null}; -module$exports$Blockly$Field.Field.prototype.loadLegacyState=function(a,b){return a.prototype.loadState===this.loadState&&a.prototype.fromXml!==this.fromXml?(this.fromXml((0,$.module$exports$Blockly$Xml.textToDom)(b)),!0):!1}; -module$exports$Blockly$Field.Field.prototype.dispose=function(){(0,module$exports$Blockly$dropDownDiv.hideIfOwner)(this);(0,module$exports$Blockly$WidgetDiv.hideIfOwner)(this);(0,module$exports$Blockly$Tooltip.unbindMouseEvents)(this.getClickTarget_());this.mouseDownWrapper_&&(0,module$exports$Blockly$browserEvents.unbind)(this.mouseDownWrapper_);(0,module$exports$Blockly$utils$dom.removeNode)(this.fieldGroup_);this.disposed=!0}; -module$exports$Blockly$Field.Field.prototype.updateEditable=function(){var a=this.fieldGroup_;this.EDITABLE&&a&&(this.enabled_&&this.sourceBlock_.isEditable()?((0,module$exports$Blockly$utils$dom.addClass)(a,"blocklyEditableText"),(0,module$exports$Blockly$utils$dom.removeClass)(a,"blocklyNonEditableText"),a.style.cursor=this.CURSOR):((0,module$exports$Blockly$utils$dom.addClass)(a,"blocklyNonEditableText"),(0,module$exports$Blockly$utils$dom.removeClass)(a,"blocklyEditableText"),a.style.cursor=""))}; -module$exports$Blockly$Field.Field.prototype.setEnabled=function(a){this.enabled_=a;this.updateEditable()};module$exports$Blockly$Field.Field.prototype.isEnabled=function(){return this.enabled_};module$exports$Blockly$Field.Field.prototype.isClickable=function(){return this.enabled_&&!!this.sourceBlock_&&this.sourceBlock_.isEditable()&&this.showEditor_!==module$exports$Blockly$Field.Field.prototype.showEditor_}; -module$exports$Blockly$Field.Field.prototype.isCurrentlyEditable=function(){return this.enabled_&&this.EDITABLE&&!!this.sourceBlock_&&this.sourceBlock_.isEditable()};module$exports$Blockly$Field.Field.prototype.isSerializable=function(){var a=!1;this.name&&(this.SERIALIZABLE?a=!0:this.EDITABLE&&(console.warn("Detected an editable field that was not serializable. Please define SERIALIZABLE property as true on all editable custom fields. Proceeding with serialization."),a=!0));return a}; -module$exports$Blockly$Field.Field.prototype.isVisible=function(){return this.visible_};module$exports$Blockly$Field.Field.prototype.setVisible=function(a){if(this.visible_!==a){this.visible_=a;var b=this.getSvgRoot();b&&(b.style.display=a?"block":"none")}};module$exports$Blockly$Field.Field.prototype.setValidator=function(a){this.validator_=a};module$exports$Blockly$Field.Field.prototype.getValidator=function(){return this.validator_};module$exports$Blockly$Field.Field.prototype.getSvgRoot=function(){return this.fieldGroup_}; -module$exports$Blockly$Field.Field.prototype.applyColour=function(){};module$exports$Blockly$Field.Field.prototype.render_=function(){this.textContent_&&(this.textContent_.nodeValue=this.getDisplayText_());this.updateSize_()};module$exports$Blockly$Field.Field.prototype.showEditor=function(a){this.isClickable()&&this.showEditor_(a)};module$exports$Blockly$Field.Field.prototype.showEditor_=function(a){}; -module$exports$Blockly$Field.Field.prototype.updateSize_=function(a){var b=this.getConstants();a=void 0!==a?a:this.borderRect_?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0;var c=2*a,d=b.FIELD_TEXT_HEIGHT,e=0;this.textElement_&&(e=(0,module$exports$Blockly$utils$dom.getFastTextWidth)(this.textElement_,b.FIELD_TEXT_FONTSIZE,b.FIELD_TEXT_FONTWEIGHT,b.FIELD_TEXT_FONTFAMILY),c+=e);this.borderRect_&&(d=Math.max(d,b.FIELD_BORDER_RECT_HEIGHT));this.size_.height=d;this.size_.width=c;this.positionTextElement_(a, -e);this.positionBorderRect_()};module$exports$Blockly$Field.Field.prototype.positionTextElement_=function(a,b){if(this.textElement_){var c=this.getConstants(),d=this.size_.height/2;this.textElement_.setAttribute("x",this.sourceBlock_.RTL?this.size_.width-b-a:a);this.textElement_.setAttribute("y",c.FIELD_TEXT_BASELINE_CENTER?d:d-c.FIELD_TEXT_HEIGHT/2+c.FIELD_TEXT_BASELINE)}}; -module$exports$Blockly$Field.Field.prototype.positionBorderRect_=function(){this.borderRect_&&(this.borderRect_.setAttribute("width",this.size_.width),this.borderRect_.setAttribute("height",this.size_.height),this.borderRect_.setAttribute("rx",this.getConstants().FIELD_BORDER_RECT_RADIUS),this.borderRect_.setAttribute("ry",this.getConstants().FIELD_BORDER_RECT_RADIUS))}; -module$exports$Blockly$Field.Field.prototype.getSize=function(){if(!this.isVisible())return new module$exports$Blockly$utils$Size.Size(0,0);this.isDirty_?(this.render_(),this.isDirty_=!1):this.visible_&&0===this.size_.width&&(console.warn("Deprecated use of setting size_.width to 0 to rerender a field. Set field.isDirty_ to true instead."),this.render_());return this.size_}; -module$exports$Blockly$Field.Field.prototype.getScaledBBox=function(){if(this.borderRect_){var a=this.borderRect_.getBoundingClientRect();var b=(0,module$exports$Blockly$utils$style.getPageOffset)(this.borderRect_);var c=a.width;var d=a.height}else d=this.sourceBlock_.getHeightWidth(),a=this.sourceBlock_.workspace.scale,b=this.getAbsoluteXY_(),c=d.width*a,d=d.height*a,module$exports$Blockly$utils$userAgent.GECKO?(b.x+=1.5*a,b.y+=1.5*a):module$exports$Blockly$utils$userAgent.EDGE||module$exports$Blockly$utils$userAgent.IE|| -(b.x-=.5*a,b.y-=.5*a),c+=1*a,d+=1*a;return new module$exports$Blockly$utils$Rect.Rect(b.y,b.y+d,b.x,b.x+c)};module$exports$Blockly$Field.Field.prototype.getDisplayText_=function(){var a=this.getText();if(!a)return module$exports$Blockly$Field.Field.NBSP;a.length>this.maxDisplayLength&&(a=a.substring(0,this.maxDisplayLength-2)+"\u2026");a=a.replace(/\s/g,module$exports$Blockly$Field.Field.NBSP);this.sourceBlock_&&this.sourceBlock_.RTL&&(a+="\u200f");return a}; -module$exports$Blockly$Field.Field.prototype.getText=function(){var a=this.getText_();return null!==a?String(a):String(this.getValue())};module$exports$Blockly$Field.Field.prototype.getText_=function(){return null};module$exports$Blockly$Field.Field.prototype.markDirty=function(){this.isDirty_=!0;this.constants_=null}; -module$exports$Blockly$Field.Field.prototype.forceRerender=function(){this.isDirty_=!0;this.sourceBlock_&&this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours(),this.updateMarkers_())}; -module$exports$Blockly$Field.Field.prototype.setValue=function(a){if(null!==a){var b=this.doClassValidation_(a);a=this.processValidation_(a,b);if(!(a instanceof Error)){if(b=this.getValidator())if(b=b.call(this,a),a=this.processValidation_(a,b),a instanceof Error)return;b=this.sourceBlock_;if(!b||!b.disposed){var c=this.getValue();c===a?this.doValueUpdate_(a):(this.doValueUpdate_(a),b&&(0,module$exports$Blockly$Events$utils.isEnabled)()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CHANGE))(b, -"field",this.name||null,c,a)),this.isDirty_&&this.forceRerender())}}}};module$exports$Blockly$Field.Field.prototype.processValidation_=function(a,b){if(null===b)return this.doValueInvalid_(a),this.isDirty_&&this.forceRerender(),Error();void 0!==b&&(a=b);return a};module$exports$Blockly$Field.Field.prototype.getValue=function(){return this.value_};module$exports$Blockly$Field.Field.prototype.doClassValidation_=function(a){return null===a||void 0===a?null:a}; -module$exports$Blockly$Field.Field.prototype.doValueUpdate_=function(a){this.value_=a;this.isDirty_=!0};module$exports$Blockly$Field.Field.prototype.doValueInvalid_=function(a){};module$exports$Blockly$Field.Field.prototype.onMouseDown_=function(a){this.sourceBlock_&&this.sourceBlock_.workspace&&(a=this.sourceBlock_.workspace.getGesture(a))&&a.setStartField(this)}; -module$exports$Blockly$Field.Field.prototype.setTooltip=function(a){a||""===a||(a=this.sourceBlock_);var b=this.getClickTarget_();b?b.tooltip=a:this.tooltip_=a};module$exports$Blockly$Field.Field.prototype.getTooltip=function(){var a=this.getClickTarget_();return a?(0,module$exports$Blockly$Tooltip.getTooltipOfObject)(a):(0,module$exports$Blockly$Tooltip.getTooltipOfObject)({tooltip:this.tooltip_})}; -module$exports$Blockly$Field.Field.prototype.getClickTarget_=function(){return this.clickTarget_||this.getSvgRoot()};module$exports$Blockly$Field.Field.prototype.getAbsoluteXY_=function(){return(0,module$exports$Blockly$utils$style.getPageOffset)(this.getClickTarget_())};module$exports$Blockly$Field.Field.prototype.referencesVariables=function(){return!1};module$exports$Blockly$Field.Field.prototype.refreshVariableName=function(){}; -module$exports$Blockly$Field.Field.prototype.getParentInput=function(){for(var a=null,b=this.sourceBlock_,c=b.inputList,d=0;da.height;e&&(b-=d);this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"rowSpacerRect blockRenderDebug",x:c?-(a.xPos+a.width):a.xPos,y:b,width:a.width,height:d,stroke:e?"black":"blue",fill:"blue","fill-opacity":"0.5","stroke-width":"1px"}, -this.svgRoot_))}}; -module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawSpacerElem=function(a,b,c){if(module$exports$Blockly$blockRendering$Debug.Debug.config.elemSpacers){b=Math.abs(a.width);var d=0>a.width,e=d?a.xPos-b:a.xPos;c&&(e=-(e+b));this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"elemSpacerRect blockRenderDebug",x:e,y:a.centerline-a.height/2,width:b,height:a.height,stroke:"pink",fill:d?"black":"pink","fill-opacity":"0.5", -"stroke-width":"1px"},this.svgRoot_))}}; -module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawRenderedElem=function(a,b){if(module$exports$Blockly$blockRendering$Debug.Debug.config.elems){var c=a.xPos;b&&(c=-(c+a.width));b=a.centerline-a.height/2;this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"rowRenderingRect blockRenderDebug",x:c,y:b,width:a.width,height:a.height,stroke:"black",fill:"none","stroke-width":"1px"},this.svgRoot_));module$exports$Blockly$blockRendering$Types.Types.isField(a)&& -a instanceof module$exports$Blockly$blockRendering$Field.Field&&a.field instanceof $.module$exports$Blockly$FieldLabel.FieldLabel&&this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"rowRenderingRect blockRenderDebug",x:c,y:b+this.constants_.FIELD_TEXT_BASELINE,width:a.width,height:"0.1px",stroke:"red",fill:"none","stroke-width":"0.5px"},this.svgRoot_))}module$exports$Blockly$blockRendering$Types.Types.isInput(a)&&a instanceof -module$exports$Blockly$blockRendering$InputConnection.InputConnection&&module$exports$Blockly$blockRendering$Debug.Debug.config.connections&&this.drawConnection(a.connectionModel)}; -module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawConnection=function(a){if(module$exports$Blockly$blockRendering$Debug.Debug.config.connections){if(a.type===$.module$exports$Blockly$ConnectionType.ConnectionType.INPUT_VALUE){var b=4;var c="magenta";var d="none"}else a.type===$.module$exports$Blockly$ConnectionType.ConnectionType.OUTPUT_VALUE?(b=2,d=c="magenta"):a.type===$.module$exports$Blockly$ConnectionType.ConnectionType.NEXT_STATEMENT?(b=4,c="goldenrod",d="none"):a.type===$.module$exports$Blockly$ConnectionType.ConnectionType.PREVIOUS_STATEMENT&& -(b=2,d=c="goldenrod");this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{"class":"blockRenderDebug",cx:a.offsetInBlock_.x,cy:a.offsetInBlock_.y,r:b,fill:d,stroke:c},this.svgRoot_))}}; -module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawRenderedRow=function(a,b,c){module$exports$Blockly$blockRendering$Debug.Debug.config.rows&&(this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"elemRenderingRect blockRenderDebug",x:c?-(a.xPos+a.width):a.xPos,y:a.yPos,width:a.width,height:a.height,stroke:"red",fill:"none","stroke-width":"1px"},this.svgRoot_)),module$exports$Blockly$blockRendering$Types.Types.isTopOrBottomRow(a)|| -module$exports$Blockly$blockRendering$Debug.Debug.config.connectedBlockBounds&&this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"connectedBlockWidth blockRenderDebug",x:c?-(a.xPos+a.widthWithConnectedBlocks):a.xPos,y:a.yPos,width:a.widthWithConnectedBlocks,height:a.height,stroke:this.randomColour_,fill:"none","stroke-width":"1px","stroke-dasharray":"3,3"},this.svgRoot_)))}; -module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawRowWithElements=function(a,b,c){for(var d=0;da||a>this.fieldRow.length)throw Error("index "+a+" out of bounds.");if(!(b||""===b&&c))return a;"string"===typeof b&&(b=(0,module$exports$Blockly$fieldRegistry.fromJson)({type:"field_label",text:b}));b.setSourceBlock(this.sourceBlock_);this.sourceBlock_.rendered&&(b.init(),b.applyColour());b.name=c;b.setVisible(this.isVisible());b.prefixField&&(a=this.insertFieldAt(a,b.prefixField));this.fieldRow.splice(a,0,b);a++;b.suffixField&& -(a=this.insertFieldAt(a,b.suffixField));this.sourceBlock_.rendered&&(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours());return a}; -$.module$exports$Blockly$Input.Input.prototype.removeField=function(a,b){for(var c=0,d;d=this.fieldRow[c];c++)if(d.name===a)return d.dispose(),this.fieldRow.splice(c,1),this.sourceBlock_.rendered&&(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours()),!0;if(b)return!1;throw Error('Field "'+a+'" not found.');};$.module$exports$Blockly$Input.Input.prototype.isVisible=function(){return this.visible_}; -$.module$exports$Blockly$Input.Input.prototype.setVisible=function(a){var b=[];if(this.visible_===a)return b;this.visible_=a;for(var c=0,d;d=this.fieldRow[c];c++)d.setVisible(a);this.connection&&(this.connection=this.connection,a?b=this.connection.startTrackingAll():this.connection.stopTrackingAll(),c=this.connection.targetBlock())&&(c.getSvgRoot().style.display=a?"block":"none");return b};$.module$exports$Blockly$Input.Input.prototype.markDirty=function(){for(var a=0,b;b=this.fieldRow[a];a++)b.markDirty()}; -$.module$exports$Blockly$Input.Input.prototype.setCheck=function(a){if(!this.connection)throw Error("This input does not have a connection.");this.connection.setCheck(a);return this};$.module$exports$Blockly$Input.Input.prototype.setAlign=function(a){this.align=a;this.sourceBlock_.rendered&&(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render());return this}; -$.module$exports$Blockly$Input.Input.prototype.setShadowDom=function(a){if(!this.connection)throw Error("This input does not have a connection.");this.connection.setShadowDom(a);return this};$.module$exports$Blockly$Input.Input.prototype.getShadowDom=function(){if(!this.connection)throw Error("This input does not have a connection.");return this.connection.getShadowDom()};$.module$exports$Blockly$Input.Input.prototype.init=function(){if(this.sourceBlock_.workspace.rendered)for(var a=0;aa.length)){b=[];for(c=0;ca&&(e=e.substring(0,a-3)+"...");return e};module$exports$Blockly$Block.Block.prototype.appendValueInput=function(a){return this.appendInput_($.module$exports$Blockly$inputTypes.inputTypes.VALUE,a)}; -module$exports$Blockly$Block.Block.prototype.appendStatementInput=function(a){return this.appendInput_($.module$exports$Blockly$inputTypes.inputTypes.STATEMENT,a)};module$exports$Blockly$Block.Block.prototype.appendDummyInput=function(a){return this.appendInput_($.module$exports$Blockly$inputTypes.inputTypes.DUMMY,a||"")}; -module$exports$Blockly$Block.Block.prototype.jsonInit=function(a){var b=a.type?'Block "'+a.type+'": ':"";if(a.output&&a.previousStatement)throw Error(b+"Must not have both an output and a previousStatement.");a.style&&a.style.hat&&(this.hat=a.style.hat,a.style=null);if(a.style&&a.colour)throw Error(b+"Must not have both a colour and a style.");a.style?this.jsonInitStyle_(a,b):this.jsonInitColour_(a,b);for(var c=0;void 0!==a["message"+c];)this.interpolate_(a["message"+c],a["args"+c]||[],a["lastDummyAlign"+ -c],b),c++;void 0!==a.inputsInline&&this.setInputsInline(a.inputsInline);void 0!==a.output&&this.setOutput(!0,a.output);void 0!==a.outputShape&&this.setOutputShape(a.outputShape);void 0!==a.previousStatement&&this.setPreviousStatement(!0,a.previousStatement);void 0!==a.nextStatement&&this.setNextStatement(!0,a.nextStatement);void 0!==a.tooltip&&(c=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.tooltip),this.setTooltip(c));void 0!==a.enableContextMenu&&(this.contextMenu=!!a.enableContextMenu); -void 0!==a.suppressPrefixSuffix&&(this.suppressPrefixSuffix=!!a.suppressPrefixSuffix);void 0!==a.helpUrl&&(c=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.helpUrl),this.setHelpUrl(c));"string"===typeof a.extensions&&(console.warn(b+"JSON attribute 'extensions' should be an array of strings. Found raw string in JSON for '"+a.type+"' block."),a.extensions=[a.extensions]);void 0!==a.mutator&&(0,$.module$exports$Blockly$Extensions.apply)(a.mutator,this,!0);a=a.extensions;if(Array.isArray(a))for(b= -0;bf||f>b)throw Error('Block "'+this.type+'": Message index %'+f+" out of range.");if(c[f])throw Error('Block "'+this.type+'": Message index %'+f+" duplicated.");c[f]=!0;d++}}if(d!==b)throw Error('Block "'+this.type+'": Message does not reference all '+b+" arg(s).");}; -module$exports$Blockly$Block.Block.prototype.interpolateArguments_=function(a,b,c){for(var d=[],e=0;e=this.inputList.length)throw RangeError("Input index "+a+" out of bounds.");if(b>this.inputList.length)throw RangeError("Reference input "+b+" out of bounds.");var c=this.inputList[a];this.inputList.splice(a,1);a=this.connections_.length)return-1;b=a.y;for(var d=c;0<=d&&this.connections_[d].y===b;){if(this.connections_[d]===a)return d;d--}for(d=c;da)c=d;else{b=d;break}}return b}; -module$exports$Blockly$ConnectionDB.ConnectionDB.prototype.removeConnection=function(a,b){a=this.findIndexOfConnection_(a,b);if(-1===a)throw Error("Unable to find connection in connectionDB.");this.connections_.splice(a,1)}; -module$exports$Blockly$ConnectionDB.ConnectionDB.prototype.getNeighbours=function(a,b){function c(l){var m=e-d[l].x,n=f-d[l].y;Math.sqrt(m*m+n*n)<=b&&k.push(d[l]);return nthis.previousScale_){var c=b-this.previousScale_;c=0Object.keys(this.cachedPoints_).length&&(this.cachedPoints_=Object.create(null),this.previousScale_=0)}; -module$exports$Blockly$TouchGesture.TouchGesture.prototype.getTouchPoint=function(a){return this.startWorkspace_?new module$exports$Blockly$utils$Coordinate.Coordinate(a.changedTouches?a.changedTouches[0].pageX:a.pageX,a.changedTouches?a.changedTouches[0].pageY:a.pageY):null};var module$exports$Blockly$WorkspaceAudio={},module$contents$Blockly$WorkspaceAudio_SOUND_LIMIT=100;module$exports$Blockly$WorkspaceAudio.WorkspaceAudio=function(a){this.parentWorkspace_=a;this.SOUNDS_=Object.create(null);this.lastSound_=null};module$exports$Blockly$WorkspaceAudio.WorkspaceAudio.prototype.dispose=function(){this.SOUNDS_=this.parentWorkspace_=null}; -module$exports$Blockly$WorkspaceAudio.WorkspaceAudio.prototype.load=function(a,b){if(a.length){try{var c=new $.module$exports$Blockly$utils$global.globalThis.Audio}catch(h){return}for(var d,e=0;eMath.abs(b-this.oldTop_)&&1>Math.abs(c-this.oldLeft_))){var d=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.VIEWPORT_CHANGE))(b,c,a,this.id,this.oldScale_);this.oldScale_=a;this.oldTop_=b;this.oldLeft_=c;(0,module$exports$Blockly$Events$utils.fire)(d)}}}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.translate=function(a,b){if(this.useWorkspaceDragSurface_&&this.isDragSurfaceActive_)this.workspaceDragSurface_.translateSurface(a,b);else{var c="translate("+a+","+b+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",c);this.svgBubbleCanvas_.setAttribute("transform",c)}this.blockDragSurface_&&this.blockDragSurface_.translateAndScaleGroup(a,b,this.scale);this.grid_&&this.grid_.moveTo(a,b);this.maybeFireViewportChangeEvent()}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.resetDragSurface=function(){if(this.useWorkspaceDragSurface_){this.isDragSurfaceActive_=!1;var a=this.workspaceDragSurface_.getSurfaceTranslation();this.workspaceDragSurface_.clearAndHide(this.svgGroup_);a="translate("+a.x+","+a.y+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",a);this.svgBubbleCanvas_.setAttribute("transform",a)}}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.setupDragSurface=function(){if(this.useWorkspaceDragSurface_&&!this.isDragSurfaceActive_){this.isDragSurfaceActive_=!0;var a=this.svgBlockCanvas_.previousSibling,b=parseInt(this.getParentSvg().getAttribute("width"),10),c=parseInt(this.getParentSvg().getAttribute("height"),10),d=(0,module$exports$Blockly$utils$svgMath.getRelativeXY)(this.getCanvas());this.workspaceDragSurface_.setContentsAndShow(this.getCanvas(),this.getBubbleCanvas(),a,b, -c,this.scale);this.workspaceDragSurface_.translateSurface(d.x,d.y)}};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.getBlockDragSurface=function(){return this.blockDragSurface_};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.getWidth=function(){var a=this.getMetrics();return a?a.viewWidth/this.scale:0}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.setVisible=function(a){this.isVisible_=a;if(this.svgGroup_)if(this.scrollbar&&this.scrollbar.setContainerVisible(a),this.getFlyout()&&this.getFlyout().setContainerVisible(a),this.getParentSvg().style.display=a?"block":"none",this.toolbox_&&this.toolbox_.setVisible(a),a){a=this.getAllBlocks(!1);for(var b=a.length-1;0<=b;b--)a[b].markDirty();this.render();this.toolbox_&&this.toolbox_.position()}else this.hideChaff(!0)}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.render=function(){for(var a=this.getAllBlocks(!1),b=a.length-1;0<=b;b--)a[b].render(!1);if(this.currentGesture_)for(a=this.currentGesture_.getInsertionMarkers(),b=0;b=Math.abs(c-h.x)&&1>=Math.abs(d-h.y)){f=!0;break}}if(!f){var k=e.getConnections_(!1);a=0;for(b=void 0;b=k[a];a++)if(b.closest($.module$exports$Blockly$config.config.snapRadius,new module$exports$Blockly$utils$Coordinate.Coordinate(c,d)).connection){f=!0;break}}f&&(c=this.RTL?c-$.module$exports$Blockly$config.config.snapRadius:c+$.module$exports$Blockly$config.config.snapRadius,d+=2*$.module$exports$Blockly$config.config.snapRadius)}while(f); -e.moveTo(new module$exports$Blockly$utils$Coordinate.Coordinate(c,d))}}finally{(0,module$exports$Blockly$Events$utils.enable)()}(0,module$exports$Blockly$Events$utils.isEnabled)()&&!e.isShadow()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CREATE))(e));e.select();return e}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.pasteWorkspaceComment_=function(a){(0,module$exports$Blockly$Events$utils.disable)();try{var b=module$exports$Blockly$WorkspaceCommentSvg.fromXml(a,this);var c=parseInt(a.getAttribute("x"),10),d=parseInt(a.getAttribute("y"),10);isNaN(c)||isNaN(d)||(this.RTL&&(c=-c),b.moveBy(c+50,d+50))}finally{(0,module$exports$Blockly$Events$utils.enable)()}(0,module$exports$Blockly$Events$utils.isEnabled)()&&module$exports$Blockly$WorkspaceComment.fireCreateEvent(b); -b.select();return b};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.refreshToolboxSelection=function(){var a=this.isFlyout?this.targetWorkspace:this;a&&!a.currentGesture_&&a.toolbox_&&a.toolbox_.getFlyout()&&a.toolbox_.refreshSelection()};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.renameVariableById=function(a,b){module$exports$Blockly$Workspace.Workspace.prototype.renameVariableById.call(this,a,b);this.refreshToolboxSelection()}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.deleteVariableById=function(a){module$exports$Blockly$Workspace.Workspace.prototype.deleteVariableById.call(this,a);this.refreshToolboxSelection()};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.createVariable=function(a,b,c){a=module$exports$Blockly$Workspace.Workspace.prototype.createVariable.call(this,a,b,c);this.refreshToolboxSelection();return a}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.recordDeleteAreas=function(){module$exports$Blockly$utils.deprecation.warn("WorkspaceSvg.prototype.recordDeleteAreas","June 2021","June 2022","WorkspaceSvg.prototype.recordDragTargets");this.recordDragTargets()}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.recordDragTargets=function(){var a=this.componentManager_.getComponents(module$exports$Blockly$ComponentManager.ComponentManager.Capability.DRAG_TARGET,!0);this.dragTargetAreas_=[];for(var b=0,c;c=a[b];b++){var d=c.getClientRect();d&&this.dragTargetAreas_.push({component:c,clientRect:d})}}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.getDragTarget=function(a){for(var b=0,c;c=this.dragTargetAreas_[b];b++)if(c.clientRect.contains(a.clientX,a.clientY))return c.component;return null};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.onMouseDown_=function(a){var b=this.getGesture(a);b&&b.handleWsStart(a,this)}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.startDrag=function(a,b){a=(0,module$exports$Blockly$browserEvents.mouseToSvg)(a,this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;this.dragDeltaXY_=module$exports$Blockly$utils$Coordinate.Coordinate.difference(b,a)}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.moveDrag=function(a){a=(0,module$exports$Blockly$browserEvents.mouseToSvg)(a,this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;return module$exports$Blockly$utils$Coordinate.Coordinate.sum(this.dragDeltaXY_,a)};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isDragging=function(){return null!==this.currentGesture_&&this.currentGesture_.isDragging()}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isDraggable=function(){return this.options.moveOptions&&this.options.moveOptions.drag};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isMovable=function(){return this.options.moveOptions&&!!this.options.moveOptions.scrollbars||this.options.moveOptions&&this.options.moveOptions.wheel||this.options.moveOptions&&this.options.moveOptions.drag||this.options.zoomOptions&&this.options.zoomOptions.wheel||this.options.zoomOptions&&this.options.zoomOptions.pinch}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isMovableHorizontally=function(){var a=!!this.scrollbar;return this.isMovable()&&(!a||a&&this.scrollbar.canScrollHorizontally())};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isMovableVertically=function(){var a=!!this.scrollbar;return this.isMovable()&&(!a||a&&this.scrollbar.canScrollVertically())}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.onMouseWheel_=function(a){if(module$exports$Blockly$Gesture.Gesture.inProgress())a.preventDefault(),a.stopPropagation();else{var b=this.options.zoomOptions&&this.options.zoomOptions.wheel,c=this.options.moveOptions&&this.options.moveOptions.wheel;if(b||c){var d=(0,module$exports$Blockly$browserEvents.getScrollDeltaPixels)(a);if(module$exports$Blockly$utils$userAgent.MAC)var e=a.metaKey;b&&(a.ctrlKey||e||!c)?(d=-d.y/50,b=(0,module$exports$Blockly$browserEvents.mouseToSvg)(a, -this.getParentSvg(),this.getInverseScreenCTM()),this.zoom(b.x,b.y,d)):(b=this.scrollX-d.x,c=this.scrollY-d.y,a.shiftKey&&!d.x&&(b=this.scrollX-d.y,c=this.scrollY),this.scroll(b,c));a.preventDefault()}}}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.getBlocksBoundingBox=function(){var a=this.getTopBoundedElements();if(!a.length)return new module$exports$Blockly$utils$Rect.Rect(0,0,0,0);for(var b=a[0].getBoundingRectangle(),c=1;cb.bottom&&(b.bottom=d.bottom),d.leftb.right&&(b.right=d.right))}return b}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.cleanUp=function(){this.setResizesEnabled(!1);(0,module$exports$Blockly$Events$utils.setGroup)(!0);for(var a=this.getTopBlocks(!0),b=0,c=0,d;d=a[c];c++)if(d.isMovable()){var e=d.getRelativeToSurfaceXY();d.moveBy(-e.x,b-e.y);d.snapToGrid();b=d.getRelativeToSurfaceXY().y+d.getHeightWidth().height+this.renderer_.getConstants().MIN_BLOCK_HEIGHT}(0,module$exports$Blockly$Events$utils.setGroup)(!1);this.setResizesEnabled(!0)}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.showContextMenu=function(a){if(!this.options.readOnly&&!this.isFlyout){var b=module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.registry.getContextMenuOptions(module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.ScopeType.WORKSPACE,{workspace:this});this.configureContextMenu&&this.configureContextMenu(b,a);(0,$.module$exports$Blockly$ContextMenu.show)(a,b,this.RTL)}}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.updateToolbox=function(a){if(a=(0,module$exports$Blockly$utils$toolbox.convertToolboxDefToJson)(a)){if(!this.options.languageTree)throw Error("Existing toolbox is null. Can't create new toolbox.");if((0,module$exports$Blockly$utils$toolbox.hasCategories)(a)){if(!this.toolbox_)throw Error("Existing toolbox has no categories. Can't change mode.");this.options.languageTree=a;this.toolbox_.render(a)}else{if(!this.flyout_)throw Error("Existing toolbox has categories. Can't change mode."); -this.options.languageTree=a;this.flyout_.show(a)}}else if(this.options.languageTree)throw Error("Can't nullify an existing toolbox.");};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.markFocused=function(){this.options.parentWorkspace?this.options.parentWorkspace.markFocused():((0,$.module$exports$Blockly$common.setMainWorkspace)(this),this.setBrowserFocus())}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.setBrowserFocus=function(){document.activeElement&&document.activeElement.blur&&document.activeElement.blur();try{this.getParentSvg().focus({preventScroll:!0})}catch(a){try{this.getParentSvg().parentNode.setActive()}catch(b){this.getParentSvg().parentNode.focus({preventScroll:!0})}}}; -module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.zoom=function(a,b,c){c=Math.pow(this.options.zoomOptions.scaleSpeed,c);var d=this.scale*c;if(this.scale!==d){d>this.options.zoomOptions.maxScale?c=this.options.zoomOptions.maxScale/this.scale:dthis.options.zoomOptions.maxScale?a=this.options.zoomOptions.maxScale:this.options.zoomOptions.minScale&&a-b||a<-180+b||a>180-b?!0:!1}; -module$exports$Blockly$VerticalFlyout.VerticalFlyout.prototype.getClientRect=function(){if(!this.svgGroup_||this.autoClose||!this.isVisible())return null;var a=this.svgGroup_.getBoundingClientRect(),b=a.left;return this.toolboxPosition_===module$exports$Blockly$utils$toolbox.Position.LEFT?new module$exports$Blockly$utils$Rect.Rect(-1E9,1E9,-1E9,b+a.width):new module$exports$Blockly$utils$Rect.Rect(-1E9,1E9,b,1E9)}; -module$exports$Blockly$VerticalFlyout.VerticalFlyout.prototype.reflowInternal_=function(){this.workspace_.scale=this.getFlyoutScale();for(var a=0,b=this.workspace_.getTopBlocks(!1),c=0,d;d=b[c];c++){var e=d.getHeightWidth().width;d.outputConnection&&(e-=this.tabWidth_);a=Math.max(a,e)}for(c=0;d=this.buttons_[c];c++)a=Math.max(a,d.width);a+=1.5*this.MARGIN+this.tabWidth_;a*=this.workspace_.scale;a+=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness;if(this.width_!==a){for(c=0;d=b[c];c++){if(this.RTL){e= -d.getRelativeToSurfaceXY().x;var f=a/this.workspace_.scale-this.MARGIN;d.outputConnection||(f-=this.tabWidth_);d.moveBy(f-e,0)}this.rectMap_.has(d)&&this.moveRectToBlock_(this.rectMap_.get(d),d)}if(this.RTL)for(b=0;c=this.buttons_[b];b++)d=c.getPosition().y,c.moveTo(a/this.workspace_.scale-c.width-this.MARGIN-this.tabWidth_,d);this.targetWorkspace.toolboxPosition!==this.toolboxPosition_||this.toolboxPosition_!==module$exports$Blockly$utils$toolbox.Position.LEFT||this.targetWorkspace.getToolbox()|| -this.targetWorkspace.translate(this.targetWorkspace.scrollX+a,this.targetWorkspace.scrollY);this.width_=a;this.position();this.targetWorkspace.recordDragTargets()}};module$exports$Blockly$VerticalFlyout.VerticalFlyout.registryName="verticalFlyout";(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.FLYOUTS_VERTICAL_TOOLBOX,module$exports$Blockly$registry.DEFAULT,module$exports$Blockly$VerticalFlyout.VerticalFlyout);var module$exports$Blockly$IToolboxItem={IToolboxItem:function(){}};var module$exports$Blockly$ISelectableToolboxItem={ISelectableToolboxItem:function(){}};var module$exports$Blockly$ICollapsibleToolboxItem={ICollapsibleToolboxItem:function(){}};var module$exports$Blockly$ToolboxItem={ToolboxItem:function(a,b,c){this.id_=a.toolboxitemid||(0,module$exports$Blockly$utils$idGenerator.getNextUniqueId)();this.level_=(this.parent_=c||null)?this.parent_.getLevel()+1:0;this.toolboxItemDef_=a;this.parentToolbox_=b;this.workspace_=this.parentToolbox_.getWorkspace()}};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.init=function(){};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getDiv=function(){return null}; -module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getClickTarget=function(){return null};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getId=function(){return this.id_};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getParent=function(){return null};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getLevel=function(){return this.level_};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.isSelectable=function(){return!1}; -module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.isCollapsible=function(){return!1};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.dispose=function(){};var module$exports$Blockly$ToolboxCategory={ToolboxCategory:function(a,b,c){module$exports$Blockly$ToolboxItem.ToolboxItem.call(this,a,b,c);this.colour_=this.name_="";this.labelDom_=this.iconDom_=this.rowContents_=this.rowDiv_=this.htmlDiv_=null;this.cssConfig_=this.makeDefaultCssConfig_();this.isDisabled_=this.isHidden_=!1;this.flyoutItems_=[]}};$.$jscomp.inherits(module$exports$Blockly$ToolboxCategory.ToolboxCategory,module$exports$Blockly$ToolboxItem.ToolboxItem); -module$exports$Blockly$ToolboxCategory.ToolboxCategory.prototype.init=function(){this.parseCategoryDef_(this.toolboxItemDef_);this.parseContents_(this.toolboxItemDef_);this.createDom_();"true"===this.toolboxItemDef_.hidden&&this.hide()}; -module$exports$Blockly$ToolboxCategory.ToolboxCategory.prototype.makeDefaultCssConfig_=function(){return{container:"blocklyToolboxCategory",row:"blocklyTreeRow",rowcontentcontainer:"blocklyTreeRowContentContainer",icon:"blocklyTreeIcon",label:"blocklyTreeLabel",contents:"blocklyToolboxContents",selected:"blocklyTreeSelected",openicon:"blocklyTreeIconOpen",closedicon:"blocklyTreeIconClosed"}}; -module$exports$Blockly$ToolboxCategory.ToolboxCategory.prototype.parseContents_=function(a){var b=a.contents;if(a.custom)this.flyoutItems_=a.custom;else if(b)for(a=0;a>>/sprites.png);\n height: 16px;\n vertical-align: middle;\n visibility: hidden;\n width: 16px;\n}\n\n.blocklyTreeIconClosed {\n background-position: -32px -1px;\n}\n\n.blocklyToolboxDiv[dir="RTL"] .blocklyTreeIconClosed {\n background-position: 0 -1px;\n}\n\n.blocklyTreeSelected>.blocklyTreeIconClosed {\n background-position: -32px -17px;\n}\n\n.blocklyToolboxDiv[dir="RTL"] .blocklyTreeSelected>.blocklyTreeIconClosed {\n background-position: 0 -17px;\n}\n\n.blocklyTreeIconOpen {\n background-position: -16px -1px;\n}\n\n.blocklyTreeSelected>.blocklyTreeIconOpen {\n background-position: -16px -17px;\n}\n\n.blocklyTreeLabel {\n cursor: default;\n font: 16px sans-serif;\n padding: 0 3px;\n vertical-align: middle;\n}\n\n.blocklyToolboxDelete .blocklyTreeLabel {\n cursor: url("<<>>/handdelete.cur"), auto;\n}\n\n.blocklyTreeSelected .blocklyTreeLabel {\n color: #fff;\n}\n'); -(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.TOOLBOX_ITEM,module$exports$Blockly$ToolboxCategory.ToolboxCategory.registrationName,module$exports$Blockly$ToolboxCategory.ToolboxCategory);var module$exports$Blockly$ToolboxSeparator={ToolboxSeparator:function(a,b){module$exports$Blockly$ToolboxItem.ToolboxItem.call(this,a,b);this.cssConfig_={container:"blocklyTreeSeparator"};this.htmlDiv_=null;(0,$.module$exports$Blockly$utils$object.mixin)(this.cssConfig_,a.cssconfig||a.cssConfig)}};$.$jscomp.inherits(module$exports$Blockly$ToolboxSeparator.ToolboxSeparator,module$exports$Blockly$ToolboxItem.ToolboxItem);module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.prototype.init=function(){this.createDom_()}; -module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.prototype.createDom_=function(){var a=document.createElement("div");(0,module$exports$Blockly$utils$dom.addClass)(a,this.cssConfig_.container);return this.htmlDiv_=a};module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.prototype.getDiv=function(){return this.htmlDiv_};module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.prototype.dispose=function(){(0,module$exports$Blockly$utils$dom.removeNode)(this.htmlDiv_)}; -module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.registrationName="sep";(0,module$exports$Blockly$Css.register)('\n.blocklyTreeSeparator {\n border-bottom: solid #e5e5e5 1px;\n height: 0;\n margin: 5px 0;\n}\n\n.blocklyToolboxDiv[layout="h"] .blocklyTreeSeparator {\n border-right: solid #e5e5e5 1px;\n border-bottom: none;\n height: auto;\n margin: 0 5px 0 5px;\n padding: 5px 0;\n width: 0;\n}\n'); -(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.TOOLBOX_ITEM,module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.registrationName,module$exports$Blockly$ToolboxSeparator.ToolboxSeparator);var module$exports$Blockly$CollapsibleToolboxCategory={CollapsibleToolboxCategory:function(a,b,c){module$exports$Blockly$ToolboxCategory.ToolboxCategory.call(this,a,b,c);this.subcategoriesDiv_=null;this.expanded_=!1;this.toolboxItems_=[]}};$.$jscomp.inherits(module$exports$Blockly$CollapsibleToolboxCategory.CollapsibleToolboxCategory,module$exports$Blockly$ToolboxCategory.ToolboxCategory); -module$exports$Blockly$CollapsibleToolboxCategory.CollapsibleToolboxCategory.prototype.makeDefaultCssConfig_=function(){var a=module$exports$Blockly$ToolboxCategory.ToolboxCategory.prototype.makeDefaultCssConfig_.call(this);a.contents="blocklyToolboxContents";return a}; -module$exports$Blockly$CollapsibleToolboxCategory.CollapsibleToolboxCategory.prototype.parseContents_=function(a){var b=a.contents,c=!0;if(a.custom)this.flyoutItems_=a.custom;else if(b)for(a=0;a>>/handdelete.cur"), auto;\n}\n\n.blocklyToolboxGrab {\n cursor: url("<<>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n/* Category tree in Toolbox. */\n.blocklyToolboxDiv {\n background-color: #ddd;\n overflow-x: visible;\n overflow-y: auto;\n padding: 4px 0 4px 0;\n position: absolute;\n z-index: 70; /* so blocks go under toolbox when dragging */\n -webkit-tap-highlight-color: transparent; /* issue #1345 */\n}\n\n.blocklyToolboxContents {\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n}\n\n.blocklyToolboxContents:focus {\n outline: none;\n}\n'); -(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.TOOLBOX,module$exports$Blockly$registry.DEFAULT,module$exports$Blockly$Toolbox.Toolbox);var module$exports$Blockly$HorizontalFlyout={HorizontalFlyout:function(a){module$exports$Blockly$Flyout.Flyout.call(this,a);this.horizontalLayout=!0}};$.$jscomp.inherits(module$exports$Blockly$HorizontalFlyout.HorizontalFlyout,module$exports$Blockly$Flyout.Flyout); -module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.setMetrics_=function(a){if(this.isVisible()){var b=this.workspace_.getMetricsManager(),c=b.getScrollMetrics(),d=b.getViewMetrics();b=b.getAbsoluteMetrics();"number"===typeof a.x&&(this.workspace_.scrollX=-(c.left+(c.width-d.width)*a.x));this.workspace_.translate(this.workspace_.scrollX+b.left,this.workspace_.scrollY+b.top)}};module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.getX=function(){return 0}; -module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.getY=function(){if(!this.isVisible())return 0;var a=this.targetWorkspace.getMetricsManager(),b=a.getAbsoluteMetrics(),c=a.getViewMetrics();a=a.getToolboxMetrics();var d=this.toolboxPosition_===module$exports$Blockly$utils$toolbox.Position.TOP;return this.targetWorkspace.toolboxPosition===this.toolboxPosition_?this.targetWorkspace.getToolbox()?d?a.height:c.height-this.height_:d?0:c.height:d?0:c.height+b.top-this.height_}; -module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.position=function(){if(this.isVisible()&&this.targetWorkspace.isVisible()){var a=this.targetWorkspace.getMetricsManager().getViewMetrics();this.width_=a.width;this.setBackgroundPath_(a.width-2*this.CORNER_RADIUS,this.height_-this.CORNER_RADIUS);a=this.getX();var b=this.getY();this.positionAt_(this.width_,this.height_,a,b)}}; -module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.setBackgroundPath_=function(a,b){var c=this.toolboxPosition_===module$exports$Blockly$utils$toolbox.Position.TOP,d=["M 0,"+(c?0:this.CORNER_RADIUS)];c?(d.push("h",a+2*this.CORNER_RADIUS),d.push("v",b),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,this.CORNER_RADIUS),d.push("h",-a),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,-this.CORNER_RADIUS)):(d.push("a",this.CORNER_RADIUS, -this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,-this.CORNER_RADIUS),d.push("h",a),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,this.CORNER_RADIUS),d.push("v",b),d.push("h",-a-2*this.CORNER_RADIUS));d.push("z");this.svgBackground_.setAttribute("d",d.join(" "))};module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.scrollToStart=function(){this.workspace_.scrollbar.setX(this.RTL?Infinity:0)}; -module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.wheel_=function(a){var b=(0,module$exports$Blockly$browserEvents.getScrollDeltaPixels)(a);if(b=b.x||b.y){var c=this.workspace_.getMetricsManager(),d=c.getScrollMetrics();b=c.getViewMetrics().left-d.left+b;this.workspace_.scrollbar.setX(b);(0,module$exports$Blockly$WidgetDiv.hide)();(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)()}a.preventDefault();a.stopPropagation()}; -module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.layout_=function(a,b){this.workspace_.scale=this.targetWorkspace.scale;var c=this.MARGIN,d=c+this.tabWidth_;this.RTL&&(a=a.reverse());for(var e=0,f;f=a[e];e++)if("block"===f.type){f=f.block;for(var g=f.getDescendants(!1),h=0,k;k=g[h];h++)k.isInFlyout=!0;f.render();g=f.getSvgRoot();h=f.getHeightWidth();k=f.outputConnection?this.tabWidth_:0;k=this.RTL?d+h.width:d-k;f.moveBy(k,c);k=this.createRect_(f,k,c,h,e);d+=h.width+b[e];this.addBlockListeners_(g, -f,k)}else"button"===f.type&&(this.initFlyoutButton_(f.button,d,c),d+=f.button.width+b[e])};module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.isDragTowardWorkspace=function(a){a=Math.atan2(a.y,a.x)/Math.PI*180;var b=this.dragAngleRange_;return a<90+b&&a>90-b||a>-90-b&&a<-90+b?!0:!1}; -module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.getClientRect=function(){if(!this.svgGroup_||this.autoClose||!this.isVisible())return null;var a=this.svgGroup_.getBoundingClientRect(),b=a.top;return this.toolboxPosition_===module$exports$Blockly$utils$toolbox.Position.TOP?new module$exports$Blockly$utils$Rect.Rect(-1E9,b+a.height,-1E9,1E9):new module$exports$Blockly$utils$Rect.Rect(b,1E9,-1E9,1E9)}; -module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.reflowInternal_=function(){this.workspace_.scale=this.getFlyoutScale();for(var a=0,b=this.workspace_.getTopBlocks(!1),c=0,d;d=b[c];c++)a=Math.max(a,d.getHeightWidth().height);c=this.buttons_;d=0;for(var e;e=c[d];d++)a=Math.max(a,e.height);a+=1.5*this.MARGIN;a*=this.workspace_.scale;a+=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness;if(this.height_!==a){for(c=0;d=b[c];c++)this.rectMap_.has(d)&&this.moveRectToBlock_(this.rectMap_.get(d), -d);this.targetWorkspace.toolboxPosition!==this.toolboxPosition_||this.toolboxPosition_!==module$exports$Blockly$utils$toolbox.Position.TOP||this.targetWorkspace.getToolbox()||this.targetWorkspace.translate(this.targetWorkspace.scrollX,this.targetWorkspace.scrollY+a);this.height_=a;this.position();this.targetWorkspace.recordDragTargets()}};(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX,module$exports$Blockly$registry.DEFAULT,module$exports$Blockly$HorizontalFlyout.HorizontalFlyout);$.module$exports$Blockly$Generator={Generator:function(a){this.name_=a;this.FUNCTION_NAME_PLACEHOLDER_="{leCUI8hutHZI4480Dc}";this.FUNCTION_NAME_PLACEHOLDER_REGEXP_=new RegExp(this.FUNCTION_NAME_PLACEHOLDER_,"g");this.STATEMENT_SUFFIX=this.STATEMENT_PREFIX=this.INFINITE_LOOP_TRAP=null;this.INDENT=" ";this.COMMENT_WRAP=60;this.ORDER_OVERRIDES=[];this.isInitialized=null;this.RESERVED_WORDS_="";this.nameDB_=this.functionNames_=this.definitions_=void 0}}; -$.module$exports$Blockly$Generator.Generator.prototype.workspaceToCode=function(a){a||(console.warn("No workspace specified in workspaceToCode call. Guessing."),a=(0,$.module$exports$Blockly$common.getMainWorkspace)());var b=[];this.init(a);a=a.getTopBlocks(!0);for(var c=0,d;d=a[c];c++){var e=this.blockToCode(d);Array.isArray(e)&&(e=e[0]);e&&(d.outputConnection&&(e=this.scrubNakedValue(e),this.STATEMENT_PREFIX&&!d.suppressPrefixSuffix&&(e=this.injectId(this.STATEMENT_PREFIX,d)+e),this.STATEMENT_SUFFIX&& -!d.suppressPrefixSuffix&&(e+=this.injectId(this.STATEMENT_SUFFIX,d))),b.push(e))}b=b.join("\n");b=this.finish(b);b=b.replace(/^\s+\n/,"");b=b.replace(/\n\s+$/,"\n");return b=b.replace(/[ \t]+\n/g,"\n")};$.module$exports$Blockly$Generator.Generator.prototype.prefixLines=function(a,b){return b+a.replace(/(?!\n$)\n/g,"\n"+b)}; -$.module$exports$Blockly$Generator.Generator.prototype.allNestedComments=function(a){var b=[];a=a.getDescendants(!0);for(var c=0;c=a&&this.sourceBlock_.outputConnection&&!b}else this.fullBlockClickTarget_=!1;this.fullBlockClickTarget_?this.clickTarget_=this.sourceBlock_.getSvgRoot():this.createBorderRect_();this.createTextElement_()}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.doClassValidation_=function(a){return null===a||void 0===a?null:String(a)}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.doValueInvalid_=function(a){this.isBeingEdited_&&(this.isTextValid_=!1,a=this.value_,this.value_=this.htmlInput_.untypedDefaultValue_,this.sourceBlock_&&(0,module$exports$Blockly$Events$utils.isEnabled)()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CHANGE))(this.sourceBlock_,"field",this.name||null,a,this.value_)))}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.doValueUpdate_=function(a){this.isTextValid_=!0;this.value_=a;this.isBeingEdited_||(this.isDirty_=!0)};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.applyColour=function(){this.sourceBlock_&&this.getConstants().FULL_BLOCK_FIELDS&&(this.borderRect_?this.borderRect_.setAttribute("stroke",this.sourceBlock_.style.colourTertiary):this.sourceBlock_.pathObject.svgPath.setAttribute("fill",this.getConstants().FIELD_BORDER_RECT_COLOUR))}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.render_=function(){module$exports$Blockly$Field.Field.prototype.render_.call(this);if(this.isBeingEdited_){this.resizeEditor_();var a=this.htmlInput_;this.isTextValid_?((0,module$exports$Blockly$utils$dom.removeClass)(a,"blocklyInvalidInput"),(0,module$exports$Blockly$utils$aria.setState)(a,module$exports$Blockly$utils$aria.State.INVALID,!1)):((0,module$exports$Blockly$utils$dom.addClass)(a,"blocklyInvalidInput"),(0,module$exports$Blockly$utils$aria.setState)(a, -module$exports$Blockly$utils$aria.State.INVALID,!0))}};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.setSpellcheck=function(a){a!==this.spellcheck_&&(this.spellcheck_=a,this.htmlInput_&&this.htmlInput_.setAttribute("spellcheck",this.spellcheck_))}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showEditor_=function(a,b){this.workspace_=this.sourceBlock_.workspace;a=b||!1;!a&&(module$exports$Blockly$utils$userAgent.MOBILE||module$exports$Blockly$utils$userAgent.ANDROID||module$exports$Blockly$utils$userAgent.IPAD)?this.showPromptEditor_():this.showInlineEditor_(a)}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showPromptEditor_=function(){(0,module$exports$Blockly$dialog.prompt)($.module$exports$Blockly$Msg.Msg.CHANGE_VALUE_TITLE,this.getText(),function(a){null!==a&&this.setValue(this.getValueFromEditorText_(a))}.bind(this))}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showInlineEditor_=function(a){(0,module$exports$Blockly$WidgetDiv.show)(this,this.sourceBlock_.RTL,this.widgetDispose_.bind(this));this.htmlInput_=this.widgetCreate_();this.isBeingEdited_=!0;a||(this.htmlInput_.focus({preventScroll:!0}),this.htmlInput_.select())}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.widgetCreate_=function(){(0,module$exports$Blockly$Events$utils.setGroup)(!0);var a=(0,module$exports$Blockly$WidgetDiv.getDiv)();(0,module$exports$Blockly$utils$dom.addClass)(this.getClickTarget_(),"editing");var b=document.createElement("input");b.className="blocklyHtmlInput";b.setAttribute("spellcheck",this.spellcheck_);var c=this.workspace_.getScale(),d=this.getConstants().FIELD_TEXT_FONTSIZE*c+"pt";a.style.fontSize=d;b.style.fontSize= -d;d=$.module$exports$Blockly$FieldTextInput.FieldTextInput.BORDERRADIUS*c+"px";if(this.fullBlockClickTarget_){d=this.getScaledBBox();d=(d.bottom-d.top)/2+"px";var e=this.sourceBlock_.getParent()?this.sourceBlock_.getParent().style.colourTertiary:this.sourceBlock_.style.colourTertiary;b.style.border=1*c+"px solid "+e;a.style.borderRadius=d;a.style.transition="box-shadow 0.25s ease 0s";this.getConstants().FIELD_TEXTINPUT_BOX_SHADOW&&(a.style.boxShadow="rgba(255, 255, 255, 0.3) 0 0 0 "+4*c+"px")}b.style.borderRadius= -d;a.appendChild(b);b.value=b.defaultValue=this.getEditorText_(this.value_);b.untypedDefaultValue_=this.value_;b.oldValue_=null;this.resizeEditor_();this.bindInputEvents_(b);return b}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.widgetDispose_=function(){this.isBeingEdited_=!1;this.isTextValid_=!0;this.forceRerender();this.onFinishEditing_(this.value_);(0,module$exports$Blockly$Events$utils.setGroup)(!1);this.unbindInputEvents_();var a=(0,module$exports$Blockly$WidgetDiv.getDiv)().style;a.width="auto";a.height="auto";a.fontSize="";a.transition="";a.boxShadow="";this.htmlInput_=null;(0,module$exports$Blockly$utils$dom.removeClass)(this.getClickTarget_(),"editing")}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.onFinishEditing_=function(a){};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.bindInputEvents_=function(a){this.onKeyDownWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(a,"keydown",this,this.onHtmlInputKeyDown_);this.onKeyInputWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(a,"input",this,this.onHtmlInputChange_)}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.unbindInputEvents_=function(){this.onKeyDownWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onKeyDownWrapper_),this.onKeyDownWrapper_=null);this.onKeyInputWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onKeyInputWrapper_),this.onKeyInputWrapper_=null)}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.onHtmlInputKeyDown_=function(a){a.keyCode===module$exports$Blockly$utils$KeyCodes.KeyCodes.ENTER?((0,module$exports$Blockly$WidgetDiv.hide)(),(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)()):a.keyCode===module$exports$Blockly$utils$KeyCodes.KeyCodes.ESC?(this.setValue(this.htmlInput_.untypedDefaultValue_),(0,module$exports$Blockly$WidgetDiv.hide)(),(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)()):a.keyCode=== -module$exports$Blockly$utils$KeyCodes.KeyCodes.TAB&&((0,module$exports$Blockly$WidgetDiv.hide)(),(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)(),this.sourceBlock_.tab(this,!a.shiftKey),a.preventDefault())};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.onHtmlInputChange_=function(a){a=this.htmlInput_.value;a!==this.htmlInput_.oldValue_&&(this.htmlInput_.oldValue_=a,a=this.getValueFromEditorText_(a),this.setValue(a),this.forceRerender(),this.resizeEditor_())}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.setEditorValue_=function(a){this.isDirty_=!0;this.isBeingEdited_&&(this.htmlInput_.value=this.getEditorText_(a));this.setValue(a)}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.resizeEditor_=function(){var a=(0,module$exports$Blockly$WidgetDiv.getDiv)(),b=this.getScaledBBox();a.style.width=b.right-b.left+"px";a.style.height=b.bottom-b.top+"px";b=new module$exports$Blockly$utils$Coordinate.Coordinate(this.sourceBlock_.RTL?b.right-a.offsetWidth:b.left,b.top);a.style.left=b.x+"px";a.style.top=b.y+"px"};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.isTabNavigable=function(){return!0}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.getText_=function(){return this.isBeingEdited_&&this.htmlInput_?this.htmlInput_.value:null};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.getEditorText_=function(a){return String(a)};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.getValueFromEditorText_=function(a){return a}; -$.module$exports$Blockly$FieldTextInput.FieldTextInput.fromJson=function(a){return new this((0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.text),void 0,a)};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.DEFAULT_VALUE="";$.module$exports$Blockly$FieldTextInput.FieldTextInput.BORDERRADIUS=4;(0,module$exports$Blockly$fieldRegistry.register)("field_input",$.module$exports$Blockly$FieldTextInput.FieldTextInput);var module$exports$Blockly$FieldNumber={FieldNumber:function(a,b,c,d,e,f){$.module$exports$Blockly$FieldTextInput.FieldTextInput.call(this,module$exports$Blockly$Field.Field.SKIP_SETUP);this.min_=-Infinity;this.max_=Infinity;this.precision_=0;this.decimalPlaces_=null;this.SERIALIZABLE=!0;a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(f?this.configure_(f):this.setConstraints(b,c,d),this.setValue(a),e&&this.setValidator(e))}};$.$jscomp.inherits(module$exports$Blockly$FieldNumber.FieldNumber,$.module$exports$Blockly$FieldTextInput.FieldTextInput); -module$exports$Blockly$FieldNumber.FieldNumber.prototype.configure_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.configure_.call(this,a);this.setMinInternal_(a.min);this.setMaxInternal_(a.max);this.setPrecisionInternal_(a.precision)};module$exports$Blockly$FieldNumber.FieldNumber.prototype.setConstraints=function(a,b,c){this.setMinInternal_(a);this.setMaxInternal_(b);this.setPrecisionInternal_(c);this.setValue(this.getValue())}; -module$exports$Blockly$FieldNumber.FieldNumber.prototype.setMin=function(a){this.setMinInternal_(a);this.setValue(this.getValue())};module$exports$Blockly$FieldNumber.FieldNumber.prototype.setMinInternal_=function(a){null==a?this.min_=-Infinity:(a=Number(a),isNaN(a)||(this.min_=a))};module$exports$Blockly$FieldNumber.FieldNumber.prototype.getMin=function(){return this.min_};module$exports$Blockly$FieldNumber.FieldNumber.prototype.setMax=function(a){this.setMaxInternal_(a);this.setValue(this.getValue())}; -module$exports$Blockly$FieldNumber.FieldNumber.prototype.setMaxInternal_=function(a){null==a?this.max_=Infinity:(a=Number(a),isNaN(a)||(this.max_=a))};module$exports$Blockly$FieldNumber.FieldNumber.prototype.getMax=function(){return this.max_};module$exports$Blockly$FieldNumber.FieldNumber.prototype.setPrecision=function(a){this.setPrecisionInternal_(a);this.setValue(this.getValue())}; -module$exports$Blockly$FieldNumber.FieldNumber.prototype.setPrecisionInternal_=function(a){this.precision_=Number(a)||0;var b=String(this.precision_);-1!==b.indexOf("e")&&(b=this.precision_.toLocaleString("en-US",{maximumFractionDigits:20}));var c=b.indexOf(".");this.decimalPlaces_=-1===c?a?0:null:b.length-c-1};module$exports$Blockly$FieldNumber.FieldNumber.prototype.getPrecision=function(){return this.precision_}; -module$exports$Blockly$FieldNumber.FieldNumber.prototype.doClassValidation_=function(a){if(null===a)return null;a=String(a);a=a.replace(/O/ig,"0");a=a.replace(/,/g,"");a=a.replace(/infinity/i,"Infinity");a=Number(a||0);if(isNaN(a))return null;a=Math.min(Math.max(a,this.min_),this.max_);this.precision_&&isFinite(a)&&(a=Math.round(a/this.precision_)*this.precision_);null!==this.decimalPlaces_&&(a=Number(a.toFixed(this.decimalPlaces_)));return a}; -module$exports$Blockly$FieldNumber.FieldNumber.prototype.widgetCreate_=function(){var a=$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.widgetCreate_.call(this);-Infinitythis.max_&&(0,module$exports$Blockly$utils$aria.setState)(a,module$exports$Blockly$utils$aria.State.VALUEMAX,this.max_);return a}; -module$exports$Blockly$FieldNumber.FieldNumber.fromJson=function(a){return new this(a.value,void 0,void 0,void 0,void 0,a)};module$exports$Blockly$FieldNumber.FieldNumber.prototype.DEFAULT_VALUE=0;(0,module$exports$Blockly$fieldRegistry.register)("field_number",module$exports$Blockly$FieldNumber.FieldNumber);var module$exports$Blockly$FieldMultilineInput={FieldMultilineInput:function(a,b,c){$.module$exports$Blockly$FieldTextInput.FieldTextInput.call(this,module$exports$Blockly$Field.Field.SKIP_SETUP);this.textGroup_=null;this.maxLines_=Infinity;this.isOverflowedY_=!1;a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}};$.$jscomp.inherits(module$exports$Blockly$FieldMultilineInput.FieldMultilineInput,$.module$exports$Blockly$FieldTextInput.FieldTextInput); -module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.configure_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.configure_.call(this,a);a.maxLines&&this.setMaxLines(a.maxLines)};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.toXml=function(a){a.textContent=this.getValue().replace(/\n/g," ");return a}; -module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.fromXml=function(a){this.setValue(a.textContent.replace(/ /g,"\n"))};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.saveState=function(){var a=this.saveLegacyState(module$exports$Blockly$FieldMultilineInput.FieldMultilineInput);return null!==a?a:this.getValue()}; -module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.loadState=function(a){this.loadLegacyState(module$exports$Blockly$Field.Field,a)||this.setValue(a)};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.initView=function(){this.createBorderRect_();this.textGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":"blocklyEditableText"},this.fieldGroup_)}; -module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.getDisplayText_=function(){var a=this.getText();if(!a)return module$exports$Blockly$Field.Field.NBSP;var b=a.split("\n");a="";for(var c=this.isOverflowedY_?this.maxLines_:b.length,d=0;dthis.maxDisplayLength?e=e.substring(0,this.maxDisplayLength-4)+"...":this.isOverflowedY_&&d===c-1&&(e=e.substring(0,e.length-3)+"...");e=e.replace(/\s/g,module$exports$Blockly$Field.Field.NBSP);a+=e;d!==c-1&&(a+="\n")}this.sourceBlock_.RTL&& -(a+="\u200f");return a};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.doValueUpdate_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.doValueUpdate_.call(this,a);this.isOverflowedY_=this.value_.split("\n").length>this.maxLines_}; -module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.render_=function(){for(var a;a=this.textGroup_.firstChild;)this.textGroup_.removeChild(a);a=this.getDisplayText_().split("\n");for(var b=0,c=0;cb&&(b=e);c+=this.getConstants().FIELD_TEXT_HEIGHT+(0this.maxDisplayLength&&(a[h]=a[h].substring(0,this.maxDisplayLength));d.textContent=a[h];var k=(0,module$exports$Blockly$utils$dom.getFastTextWidth)(d,e,f,g);k>b&&(b=k)}b+=this.htmlInput_.offsetWidth-this.htmlInput_.clientWidth}this.borderRect_&&(c+=2*this.getConstants().FIELD_BORDER_RECT_Y_PADDING,b+=2*this.getConstants().FIELD_BORDER_RECT_X_PADDING, -this.borderRect_.setAttribute("width",b),this.borderRect_.setAttribute("height",c));this.size_.width=b;this.size_.height=c;this.positionBorderRect_()};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.showEditor_=function(a,b){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showEditor_.call(this,a,b);this.forceRerender()}; -module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.widgetCreate_=function(){var a=(0,module$exports$Blockly$WidgetDiv.getDiv)(),b=this.workspace_.getScale(),c=document.createElement("textarea");c.className="blocklyHtmlInput blocklyHtmlTextAreaInput";c.setAttribute("spellcheck",this.spellcheck_);var d=this.getConstants().FIELD_TEXT_FONTSIZE*b+"pt";a.style.fontSize=d;c.style.fontSize=d;c.style.borderRadius=$.module$exports$Blockly$FieldTextInput.FieldTextInput.BORDERRADIUS*b+"px"; -d=this.getConstants().FIELD_BORDER_RECT_X_PADDING*b;var e=this.getConstants().FIELD_BORDER_RECT_Y_PADDING*b/2;c.style.padding=e+"px "+d+"px "+e+"px "+d+"px";d=this.getConstants().FIELD_TEXT_HEIGHT+this.getConstants().FIELD_BORDER_RECT_Y_PADDING;c.style.lineHeight=d*b+"px";a.appendChild(c);c.value=c.defaultValue=this.getEditorText_(this.value_);c.untypedDefaultValue_=this.value_;c.oldValue_=null;module$exports$Blockly$utils$userAgent.GECKO?setTimeout(this.resizeEditor_.bind(this),0):this.resizeEditor_(); -this.bindInputEvents_(c);return c};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.setMaxLines=function(a){"number"===typeof a&&0a?0>e&&0e&&(e=0):0d-1&&fd-1&&e--:0>b?0>f&&(f=0):0Math.floor(c.length/d)-1&&(f=Math.floor(c.length/d)-1);this.setHighlightedCell_(this.picker_.childNodes[f].childNodes[e], -f*d+e)};module$exports$Blockly$FieldColour.FieldColour.prototype.onMouseMove_=function(a){var b=(a=a.target)&&Number(a.getAttribute("data-index"));null!==b&&b!==this.highlightedIndex_&&this.setHighlightedCell_(a,b)};module$exports$Blockly$FieldColour.FieldColour.prototype.onMouseEnter_=function(){this.picker_.focus({preventScroll:!0})}; -module$exports$Blockly$FieldColour.FieldColour.prototype.onMouseLeave_=function(){this.picker_.blur();var a=this.getHighlighted_();a&&(0,module$exports$Blockly$utils$dom.removeClass)(a,"blocklyColourHighlighted")};module$exports$Blockly$FieldColour.FieldColour.prototype.getHighlighted_=function(){var a=this.columns_||module$exports$Blockly$FieldColour.FieldColour.COLUMNS,b=this.picker_.childNodes[Math.floor(this.highlightedIndex_/a)];return b?b.childNodes[this.highlightedIndex_%a]:null}; -module$exports$Blockly$FieldColour.FieldColour.prototype.setHighlightedCell_=function(a,b){var c=this.getHighlighted_();c&&(0,module$exports$Blockly$utils$dom.removeClass)(c,"blocklyColourHighlighted");(0,module$exports$Blockly$utils$dom.addClass)(a,"blocklyColourHighlighted");this.highlightedIndex_=b;(0,module$exports$Blockly$utils$aria.setState)(this.picker_,module$exports$Blockly$utils$aria.State.ACTIVEDESCENDANT,a.getAttribute("id"))}; -module$exports$Blockly$FieldColour.FieldColour.prototype.dropdownCreate_=function(){var a=this.columns_||module$exports$Blockly$FieldColour.FieldColour.COLUMNS,b=this.colours_||module$exports$Blockly$FieldColour.FieldColour.COLOURS,c=this.titles_||module$exports$Blockly$FieldColour.FieldColour.TITLES,d=this.getValue(),e=document.createElement("table");e.className="blocklyColourTable";e.tabIndex=0;e.dir="ltr";(0,module$exports$Blockly$utils$aria.setRole)(e,module$exports$Blockly$utils$aria.Role.GRID); -(0,module$exports$Blockly$utils$aria.setState)(e,module$exports$Blockly$utils$aria.State.EXPANDED,!0);(0,module$exports$Blockly$utils$aria.setState)(e,module$exports$Blockly$utils$aria.State.ROWCOUNT,Math.floor(b.length/a));(0,module$exports$Blockly$utils$aria.setState)(e,module$exports$Blockly$utils$aria.State.COLCOUNT,a);for(var f,g=0;gtr>td {\n border: .5px solid #888;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-block;\n height: 20px;\n padding: 0;\n width: 20px;\n}\n\n.blocklyColourTable>tr>td.blocklyColourHighlighted {\n border-color: #eee;\n box-shadow: 2px 2px 7px 2px rgba(0,0,0,.3);\n position: relative;\n}\n\n.blocklyColourSelected, .blocklyColourSelected:hover {\n border-color: #eee !important;\n outline: 1px solid #333;\n position: relative;\n}\n"); -(0,module$exports$Blockly$fieldRegistry.register)("field_colour",module$exports$Blockly$FieldColour.FieldColour);$.module$exports$Blockly$FieldCheckbox={FieldCheckbox:function(a,b,c){module$exports$Blockly$Field.Field.call(this,module$exports$Blockly$Field.Field.SKIP_SETUP);this.checkChar_=$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.CHECK_CHAR;this.SERIALIZABLE=!0;this.CURSOR="default";a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}};$.$jscomp.inherits($.module$exports$Blockly$FieldCheckbox.FieldCheckbox,module$exports$Blockly$Field.Field); -$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.configure_=function(a){module$exports$Blockly$Field.Field.prototype.configure_.call(this,a);a.checkCharacter&&(this.checkChar_=a.checkCharacter)};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.saveState=function(){var a=this.saveLegacyState($.module$exports$Blockly$FieldCheckbox.FieldCheckbox);return null!==a?a:this.getValueBoolean()}; -$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.initView=function(){module$exports$Blockly$Field.Field.prototype.initView.call(this);(0,module$exports$Blockly$utils$dom.addClass)(this.textElement_,"blocklyCheckbox");this.textElement_.style.display=this.value_?"block":"none"};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.render_=function(){this.textContent_&&(this.textContent_.nodeValue=this.getDisplayText_());this.updateSize_(this.getConstants().FIELD_CHECKBOX_X_OFFSET)}; -$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.getDisplayText_=function(){return this.checkChar_};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.setCheckCharacter=function(a){this.checkChar_=a||$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.CHECK_CHAR;this.forceRerender()};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.showEditor_=function(){this.setValue(!this.value_)}; -$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.doClassValidation_=function(a){return!0===a||"TRUE"===a?"TRUE":!1===a||"FALSE"===a?"FALSE":null};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.doValueUpdate_=function(a){this.value_=this.convertValueToBool_(a);this.textElement_&&(this.textElement_.style.display=this.value_?"block":"none")};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.getValue=function(){return this.value_?"TRUE":"FALSE"}; -$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.getValueBoolean=function(){return this.value_};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.getText=function(){return String(this.convertValueToBool_(this.value_))};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.convertValueToBool_=function(a){return"string"===typeof a?"TRUE"===a:!!a};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.fromJson=function(a){return new this(a.checked,void 0,a)}; -$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.DEFAULT_VALUE=!1;$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.CHECK_CHAR="\u2713";(0,module$exports$Blockly$fieldRegistry.register)("field_checkbox",$.module$exports$Blockly$FieldCheckbox.FieldCheckbox);var module$exports$Blockly$FieldAngle={FieldAngle:function(a,b,c){$.module$exports$Blockly$FieldTextInput.FieldTextInput.call(this,module$exports$Blockly$Field.Field.SKIP_SETUP);this.clockwise_=module$exports$Blockly$FieldAngle.FieldAngle.CLOCKWISE;this.offset_=module$exports$Blockly$FieldAngle.FieldAngle.OFFSET;this.wrap_=module$exports$Blockly$FieldAngle.FieldAngle.WRAP;this.round_=module$exports$Blockly$FieldAngle.FieldAngle.ROUND;this.moveSurfaceWrapper_=this.clickSurfaceWrapper_=this.clickWrapper_= -this.symbol_=this.line_=this.gauge_=this.editor_=null;this.SERIALIZABLE=!0;a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}};$.$jscomp.inherits(module$exports$Blockly$FieldAngle.FieldAngle,$.module$exports$Blockly$FieldTextInput.FieldTextInput); -module$exports$Blockly$FieldAngle.FieldAngle.prototype.configure_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.configure_.call(this,a);switch(a.mode){case "compass":this.clockwise_=!0;this.offset_=90;break;case "protractor":this.clockwise_=!1,this.offset_=0}var b=a.clockwise;"boolean"===typeof b&&(this.clockwise_=b);b=a.offset;null!==b&&(b=Number(b),isNaN(b)||(this.offset_=b));b=a.wrap;null!==b&&(b=Number(b),isNaN(b)||(this.wrap_=b));a=a.round;null!==a&&(a=Number(a), -isNaN(a)||(this.round_=a))};module$exports$Blockly$FieldAngle.FieldAngle.prototype.initView=function(){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.initView.call(this);this.symbol_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.TSPAN,{},null);this.symbol_.appendChild(document.createTextNode("\u00b0"));this.textElement_.appendChild(this.symbol_)}; -module$exports$Blockly$FieldAngle.FieldAngle.prototype.render_=function(){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.render_.call(this);this.updateGraph_()}; -module$exports$Blockly$FieldAngle.FieldAngle.prototype.showEditor_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showEditor_.call(this,a,module$exports$Blockly$utils$userAgent.MOBILE||module$exports$Blockly$utils$userAgent.ANDROID||module$exports$Blockly$utils$userAgent.IPAD);this.dropdownCreate_();(0,module$exports$Blockly$dropDownDiv.getContentDiv)().appendChild(this.editor_);(0,module$exports$Blockly$dropDownDiv.setColour)(this.sourceBlock_.style.colourPrimary,this.sourceBlock_.style.colourTertiary); -(0,module$exports$Blockly$dropDownDiv.showPositionedByField)(this,this.dropdownDispose_.bind(this));this.updateGraph_()}; -module$exports$Blockly$FieldAngle.FieldAngle.prototype.dropdownCreate_=function(){var a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.SVG,{xmlns:module$exports$Blockly$utils$dom.SVG_NS,"xmlns:html":module$exports$Blockly$utils$dom.HTML_NS,"xmlns:xlink":module$exports$Blockly$utils$dom.XLINK_NS,version:"1.1",height:2*module$exports$Blockly$FieldAngle.FieldAngle.HALF+"px",width:2*module$exports$Blockly$FieldAngle.FieldAngle.HALF+"px",style:"touch-action: none"}, -null),b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{cx:module$exports$Blockly$FieldAngle.FieldAngle.HALF,cy:module$exports$Blockly$FieldAngle.FieldAngle.HALF,r:module$exports$Blockly$FieldAngle.FieldAngle.RADIUS,"class":"blocklyAngleCircle"},a);this.gauge_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{"class":"blocklyAngleGauge"},a);this.line_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE, -{x1:module$exports$Blockly$FieldAngle.FieldAngle.HALF,y1:module$exports$Blockly$FieldAngle.FieldAngle.HALF,"class":"blocklyAngleLine"},a);for(var c=0;360>c;c+=15)(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE,{x1:module$exports$Blockly$FieldAngle.FieldAngle.HALF+module$exports$Blockly$FieldAngle.FieldAngle.RADIUS,y1:module$exports$Blockly$FieldAngle.FieldAngle.HALF,x2:module$exports$Blockly$FieldAngle.FieldAngle.HALF+module$exports$Blockly$FieldAngle.FieldAngle.RADIUS- -(0===c%45?10:5),y2:module$exports$Blockly$FieldAngle.FieldAngle.HALF,"class":"blocklyAngleMarks",transform:"rotate("+c+","+module$exports$Blockly$FieldAngle.FieldAngle.HALF+","+module$exports$Blockly$FieldAngle.FieldAngle.HALF+")"},a);this.clickWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(a,"click",this,this.hide_);this.clickSurfaceWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"click",this,this.onMouseMove_,!0,!0);this.moveSurfaceWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b, -"mousemove",this,this.onMouseMove_,!0,!0);this.editor_=a}; -module$exports$Blockly$FieldAngle.FieldAngle.prototype.dropdownDispose_=function(){this.clickWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.clickWrapper_),this.clickWrapper_=null);this.clickSurfaceWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.clickSurfaceWrapper_),this.clickSurfaceWrapper_=null);this.moveSurfaceWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.moveSurfaceWrapper_),this.moveSurfaceWrapper_=null);this.line_=this.gauge_=null}; -module$exports$Blockly$FieldAngle.FieldAngle.prototype.hide_=function(){(0,module$exports$Blockly$dropDownDiv.hideIfOwner)(this);(0,module$exports$Blockly$WidgetDiv.hide)()}; -module$exports$Blockly$FieldAngle.FieldAngle.prototype.onMouseMove_=function(a){var b=this.gauge_.ownerSVGElement.getBoundingClientRect(),c=a.clientX-b.left-module$exports$Blockly$FieldAngle.FieldAngle.HALF;a=a.clientY-b.top-module$exports$Blockly$FieldAngle.FieldAngle.HALF;b=Math.atan(-a/c);isNaN(b)||(b=(0,module$exports$Blockly$utils$math.toDegrees)(b),0>c?b+=180:0a&&(a+=360);a>this.wrap_&&(a-=360);return a}; -module$exports$Blockly$FieldAngle.FieldAngle.fromJson=function(a){return new this(a.angle,void 0,a)};module$exports$Blockly$FieldAngle.FieldAngle.prototype.DEFAULT_VALUE=0;module$exports$Blockly$FieldAngle.FieldAngle.ROUND=15;module$exports$Blockly$FieldAngle.FieldAngle.HALF=50;module$exports$Blockly$FieldAngle.FieldAngle.CLOCKWISE=!1;module$exports$Blockly$FieldAngle.FieldAngle.OFFSET=0;module$exports$Blockly$FieldAngle.FieldAngle.WRAP=360; -module$exports$Blockly$FieldAngle.FieldAngle.RADIUS=module$exports$Blockly$FieldAngle.FieldAngle.HALF-1;(0,module$exports$Blockly$Css.register)("\n.blocklyAngleCircle {\n stroke: #444;\n stroke-width: 1;\n fill: #ddd;\n fill-opacity: .8;\n}\n\n.blocklyAngleMarks {\n stroke: #444;\n stroke-width: 1;\n}\n\n.blocklyAngleGauge {\n fill: #f88;\n fill-opacity: .8;\n pointer-events: none;\n}\n\n.blocklyAngleLine {\n stroke: #f00;\n stroke-width: 2;\n stroke-linecap: round;\n pointer-events: none;\n}\n"); -(0,module$exports$Blockly$fieldRegistry.register)("field_angle",module$exports$Blockly$FieldAngle.FieldAngle);var module$exports$Blockly$zelos$BottomRow={BottomRow:function(a){module$exports$Blockly$blockRendering$BottomRow.BottomRow.call(this,a)}};$.$jscomp.inherits(module$exports$Blockly$zelos$BottomRow.BottomRow,module$exports$Blockly$blockRendering$BottomRow.BottomRow);module$exports$Blockly$zelos$BottomRow.BottomRow.prototype.endsWithElemSpacer=function(){return!1};module$exports$Blockly$zelos$BottomRow.BottomRow.prototype.hasLeftSquareCorner=function(a){return!!a.outputConnection}; -module$exports$Blockly$zelos$BottomRow.BottomRow.prototype.hasRightSquareCorner=function(a){return!!a.outputConnection&&!a.statementInputCount&&!a.nextConnection};var module$exports$Blockly$zelos$ConstantProvider={ConstantProvider:function(){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.call(this);this.SMALL_PADDING=this.GRID_UNIT=4;this.MEDIUM_PADDING=2*this.GRID_UNIT;this.MEDIUM_LARGE_PADDING=3*this.GRID_UNIT;this.LARGE_PADDING=4*this.GRID_UNIT;this.CORNER_RADIUS=1*this.GRID_UNIT;this.NOTCH_WIDTH=9*this.GRID_UNIT;this.NOTCH_HEIGHT=2*this.GRID_UNIT;this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT=3*this.GRID_UNIT;this.MIN_BLOCK_WIDTH= -2*this.GRID_UNIT;this.MIN_BLOCK_HEIGHT=12*this.GRID_UNIT;this.EMPTY_STATEMENT_INPUT_HEIGHT=6*this.GRID_UNIT;this.TAB_OFFSET_FROM_TOP=0;this.TOP_ROW_MIN_HEIGHT=this.CORNER_RADIUS;this.TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING;this.BOTTOM_ROW_MIN_HEIGHT=this.CORNER_RADIUS;this.BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT=6*this.GRID_UNIT;this.STATEMENT_BOTTOM_SPACER=-this.NOTCH_HEIGHT;this.STATEMENT_INPUT_SPACER_MIN_WIDTH=40*this.GRID_UNIT;this.STATEMENT_INPUT_PADDING_LEFT=4*this.GRID_UNIT; -this.EMPTY_INLINE_INPUT_PADDING=4*this.GRID_UNIT;this.EMPTY_INLINE_INPUT_HEIGHT=8*this.GRID_UNIT;this.DUMMY_INPUT_MIN_HEIGHT=8*this.GRID_UNIT;this.DUMMY_INPUT_SHADOW_MIN_HEIGHT=6*this.GRID_UNIT;this.CURSOR_WS_WIDTH=20*this.GRID_UNIT;this.CURSOR_COLOUR="#ffa200";this.CURSOR_RADIUS=5;this.JAGGED_TEETH_WIDTH=this.JAGGED_TEETH_HEIGHT=0;this.START_HAT_HEIGHT=22;this.START_HAT_WIDTH=96;this.SHAPES={HEXAGONAL:1,ROUND:2,SQUARE:3,PUZZLE:4,NOTCH:5};this.SHAPE_IN_SHAPE_PADDING={1:{0:5*this.GRID_UNIT,1:2*this.GRID_UNIT, -2:5*this.GRID_UNIT,3:5*this.GRID_UNIT},2:{0:3*this.GRID_UNIT,1:3*this.GRID_UNIT,2:1*this.GRID_UNIT,3:2*this.GRID_UNIT},3:{0:2*this.GRID_UNIT,1:2*this.GRID_UNIT,2:2*this.GRID_UNIT,3:2*this.GRID_UNIT}};this.FULL_BLOCK_FIELDS=!0;this.FIELD_TEXT_FONTSIZE=3*this.GRID_UNIT;this.FIELD_TEXT_FONTWEIGHT="bold";this.FIELD_TEXT_FONTFAMILY='"Helvetica Neue", "Segoe UI", Helvetica, sans-serif';this.FIELD_BORDER_RECT_RADIUS=this.CORNER_RADIUS;this.FIELD_BORDER_RECT_X_PADDING=2*this.GRID_UNIT;this.FIELD_BORDER_RECT_Y_PADDING= -1.625*this.GRID_UNIT;this.FIELD_BORDER_RECT_HEIGHT=8*this.GRID_UNIT;this.FIELD_DROPDOWN_BORDER_RECT_HEIGHT=8*this.GRID_UNIT;this.FIELD_DROPDOWN_SVG_ARROW=this.FIELD_DROPDOWN_COLOURED_DIV=this.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW=!0;this.FIELD_DROPDOWN_SVG_ARROW_PADDING=this.FIELD_BORDER_RECT_X_PADDING;this.FIELD_COLOUR_FULL_BLOCK=this.FIELD_TEXTINPUT_BOX_SHADOW=!0;this.FIELD_COLOUR_DEFAULT_WIDTH=2*this.GRID_UNIT;this.FIELD_COLOUR_DEFAULT_HEIGHT=4*this.GRID_UNIT;this.FIELD_CHECKBOX_X_OFFSET=1*this.GRID_UNIT; -this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH=12*this.GRID_UNIT;this.SELECTED_GLOW_COLOUR="#fff200";this.SELECTED_GLOW_SIZE=.5;this.REPLACEMENT_GLOW_COLOUR="#fff200";this.REPLACEMENT_GLOW_SIZE=2;this.selectedGlowFilterId="";this.selectedGlowFilter_=null;this.replacementGlowFilterId="";this.SQUARED=this.ROUNDED=this.HEXAGONAL=this.replacementGlowFilter_=null}};$.$jscomp.inherits(module$exports$Blockly$zelos$ConstantProvider.ConstantProvider,module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider); -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.setFontConstants_=function(a){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setFontConstants_.call(this,a);this.FIELD_DROPDOWN_BORDER_RECT_HEIGHT=this.FIELD_BORDER_RECT_HEIGHT=this.FIELD_TEXT_HEIGHT+2*this.FIELD_BORDER_RECT_Y_PADDING}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.init=function(){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.init.call(this);this.HEXAGONAL=this.makeHexagonal();this.ROUNDED=this.makeRounded();this.SQUARED=this.makeSquared();this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT+this.INSIDE_CORNERS.rightWidth}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.setDynamicProperties_=function(a){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setDynamicProperties_.call(this,a);this.SELECTED_GLOW_COLOUR=a.getComponentStyle("selectedGlowColour")||this.SELECTED_GLOW_COLOUR;var b=Number(a.getComponentStyle("selectedGlowSize"));this.SELECTED_GLOW_SIZE=b&&!isNaN(b)?b:this.SELECTED_GLOW_SIZE;this.REPLACEMENT_GLOW_COLOUR=a.getComponentStyle("replacementGlowColour")|| -this.REPLACEMENT_GLOW_COLOUR;this.REPLACEMENT_GLOW_SIZE=(a=Number(a.getComponentStyle("replacementGlowSize")))&&!isNaN(a)?a:this.REPLACEMENT_GLOW_SIZE};module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.dispose=function(){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.dispose.call(this);this.selectedGlowFilter_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.selectedGlowFilter_);this.replacementGlowFilter_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.replacementGlowFilter_)}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeStartHat=function(){var a=this.START_HAT_HEIGHT,b=this.START_HAT_WIDTH,c=(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(25,-a),(0,module$exports$Blockly$utils$svgPaths.point)(71,-a),(0,module$exports$Blockly$utils$svgPaths.point)(b,0)]);return{height:a,width:b,path:c}}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeHexagonal=function(){function a(c,d,e){var f=c/2;f=f>b?b:f;e=e?-1:1;c=(d?-1:1)*c/2;return(0,module$exports$Blockly$utils$svgPaths.lineTo)(-e*f,c)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(e*f,c)}var b=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH;return{type:this.SHAPES.HEXAGONAL,isDynamic:!0,width:function(c){c/=2;return c>b?b:c},height:function(c){return c},connectionOffsetY:function(c){return c/2},connectionOffsetX:function(c){return-c}, -pathDown:function(c){return a(c,!1,!1)},pathUp:function(c){return a(c,!0,!1)},pathRightDown:function(c){return a(c,!1,!0)},pathRightUp:function(c){return a(c,!1,!0)}}}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeRounded=function(){function a(d,e,f){var g=d>c?d-c:0;d=(d>c?c:d)/2;return(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",d,(0,module$exports$Blockly$utils$svgPaths.point)((e?-1:1)*d,(e?-1:1)*d))+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",(f?1:-1)*g)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",d,(0,module$exports$Blockly$utils$svgPaths.point)((e?1:-1)*d,(e?-1:1)*d))}var b=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH, -c=2*b;return{type:this.SHAPES.ROUND,isDynamic:!0,width:function(d){d/=2;return d>b?b:d},height:function(d){return d},connectionOffsetY:function(d){return d/2},connectionOffsetX:function(d){return-d},pathDown:function(d){return a(d,!1,!1)},pathUp:function(d){return a(d,!0,!1)},pathRightDown:function(d){return a(d,!1,!0)},pathRightUp:function(d){return a(d,!1,!0)}}}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeSquared=function(){function a(c,d,e){c-=2*b;return(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",b,(0,module$exports$Blockly$utils$svgPaths.point)((d?-1:1)*b,(d?-1:1)*b))+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",(e?1:-1)*c)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",b,(0,module$exports$Blockly$utils$svgPaths.point)((d?1:-1)*b,(d?-1:1)*b))}var b=this.CORNER_RADIUS;return{type:this.SHAPES.SQUARE, -isDynamic:!0,width:function(c){return b},height:function(c){return c},connectionOffsetY:function(c){return c/2},connectionOffsetX:function(c){return-c},pathDown:function(c){return a(c,!1,!1)},pathUp:function(c){return a(c,!0,!1)},pathRightDown:function(c){return a(c,!1,!0)},pathRightUp:function(c){return a(c,!1,!0)}}}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.shapeFor=function(a){var b=a.getCheck();!b&&a.targetConnection&&(b=a.targetConnection.getCheck());switch(a.type){case $.module$exports$Blockly$ConnectionType.ConnectionType.INPUT_VALUE:case $.module$exports$Blockly$ConnectionType.ConnectionType.OUTPUT_VALUE:a=a.getSourceBlock().getOutputShape();if(null!==a)switch(a){case this.SHAPES.HEXAGONAL:return this.HEXAGONAL;case this.SHAPES.ROUND:return this.ROUNDED;case this.SHAPES.SQUARE:return this.SQUARED}if(b&& --1!==b.indexOf("Boolean"))return this.HEXAGONAL;if(b&&-1!==b.indexOf("Number"))return this.ROUNDED;b&&b.indexOf("String");return this.ROUNDED;case $.module$exports$Blockly$ConnectionType.ConnectionType.PREVIOUS_STATEMENT:case $.module$exports$Blockly$ConnectionType.ConnectionType.NEXT_STATEMENT:return this.NOTCH;default:throw Error("Unknown type");}}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeNotch=function(){function a(l){return(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(l*e/2,0),(0,module$exports$Blockly$utils$svgPaths.point)(l*e*3/4,g/2),(0,module$exports$Blockly$utils$svgPaths.point)(l*e,g)])+(0,module$exports$Blockly$utils$svgPaths.line)([(0,module$exports$Blockly$utils$svgPaths.point)(l*e,f)])+(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(l* -e/4,g/2),(0,module$exports$Blockly$utils$svgPaths.point)(l*e/2,g),(0,module$exports$Blockly$utils$svgPaths.point)(l*e,g)])+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("h",l*d)+(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(l*e/2,0),(0,module$exports$Blockly$utils$svgPaths.point)(l*e*3/4,-(g/2)),(0,module$exports$Blockly$utils$svgPaths.point)(l*e,-g)])+(0,module$exports$Blockly$utils$svgPaths.line)([(0,module$exports$Blockly$utils$svgPaths.point)(l* -e,-f)])+(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(l*e/4,-(g/2)),(0,module$exports$Blockly$utils$svgPaths.point)(l*e/2,-g),(0,module$exports$Blockly$utils$svgPaths.point)(l*e,-g)])}var b=this.NOTCH_WIDTH,c=this.NOTCH_HEIGHT,d=b/3,e=d/3,f=c/2,g=f/2,h=a(1),k=a(-1);return{type:this.SHAPES.NOTCH,width:b,height:c,pathLeft:h,pathRight:k}}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeInsideCorners=function(){var a=this.CORNER_RADIUS,b=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a,a)),c=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a,a)),d=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,a)),e=(0,module$exports$Blockly$utils$svgPaths.arc)("a", -"0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,a));return{width:a,height:a,pathTop:b,pathBottom:d,rightWidth:a,rightHeight:a,pathTopRight:c,pathBottomRight:e}};module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.generateSecondaryColour_=function(a){return(0,module$exports$Blockly$utils$colour.blend)("#000",a,.15)||a}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.generateTertiaryColour_=function(a){return(0,module$exports$Blockly$utils$colour.blend)("#000",a,.25)||a}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.createDom=function(a,b,c){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.createDom.call(this,a,b,c);a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.DEFS,{},a);b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FILTER,{id:"blocklySelectedGlowFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%", -x:"-40%"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEGAUSSIANBLUR,{"in":"SourceGraphic",stdDeviation:this.SELECTED_GLOW_SIZE},b);c=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPONENTTRANSFER,{result:"outBlur"},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFUNCA,{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},c);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFLOOD, -{"flood-color":this.SELECTED_GLOW_COLOUR,"flood-opacity":1,result:"outColor"},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},b);this.selectedGlowFilterId=b.id;this.selectedGlowFilter_=b;a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FILTER,{id:"blocklyReplacementGlowFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%", -x:"-40%"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEGAUSSIANBLUR,{"in":"SourceGraphic",stdDeviation:this.REPLACEMENT_GLOW_SIZE},a);b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPONENTTRANSFER,{result:"outBlur"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFUNCA,{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFLOOD, -{"flood-color":this.REPLACEMENT_GLOW_COLOUR,"flood-opacity":1,result:"outColor"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"SourceGraphic",in2:"outGlow",operator:"over"},a);this.replacementGlowFilterId=a.id;this.replacementGlowFilter_=a}; -module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.getCSS_=function(a){return[a+" .blocklyText,",a+" .blocklyFlyoutLabelText {","font: "+this.FIELD_TEXT_FONTWEIGHT+" "+this.FIELD_TEXT_FONTSIZE+"pt "+this.FIELD_TEXT_FONTFAMILY+";","}",a+" .blocklyText {","fill: #fff;","}",a+" .blocklyNonEditableText>rect:not(.blocklyDropdownRect),",a+" .blocklyEditableText>rect:not(.blocklyDropdownRect) {","fill: "+this.FIELD_BORDER_RECT_COLOUR+";","}",a+" .blocklyNonEditableText>text,",a+" .blocklyEditableText>text,", -a+" .blocklyNonEditableText>g>text,",a+" .blocklyEditableText>g>text {","fill: #575E75;","}",a+" .blocklyFlyoutLabelText {","fill: #575E75;","}",a+" .blocklyText.blocklyBubbleText {","fill: #575E75;","}",a+" .blocklyDraggable:not(.blocklyDisabled)"," .blocklyEditableText:not(.editing):hover>rect,",a+" .blocklyDraggable:not(.blocklyDisabled)"," .blocklyEditableText:not(.editing):hover>.blocklyPath {","stroke: #fff;","stroke-width: 2;","}",a+" .blocklyHtmlInput {","font-family: "+this.FIELD_TEXT_FONTFAMILY+ -";","font-weight: "+this.FIELD_TEXT_FONTWEIGHT+";","color: #575E75;","}",a+" .blocklyDropdownText {","fill: #fff !important;","}",a+".blocklyWidgetDiv .goog-menuitem,",a+".blocklyDropDownDiv .goog-menuitem {","font-family: "+this.FIELD_TEXT_FONTFAMILY+";","}",a+".blocklyDropDownDiv .goog-menuitem-content {","color: #fff;","}",a+" .blocklyHighlightedConnectionPath {","stroke: "+this.SELECTED_GLOW_COLOUR+";","}",a+" .blocklyDisabled > .blocklyOutlinePath {","fill: url(#blocklyDisabledPattern"+this.randomIdentifier+ -")","}",a+" .blocklyInsertionMarker>.blocklyPath {","fill-opacity: "+this.INSERTION_MARKER_OPACITY+";","stroke: none;","}"]};var module$exports$Blockly$zelos$Drawer={Drawer:function(a,b){module$exports$Blockly$blockRendering$Drawer.Drawer.call(this,a,b)}};$.$jscomp.inherits(module$exports$Blockly$zelos$Drawer.Drawer,module$exports$Blockly$blockRendering$Drawer.Drawer); -module$exports$Blockly$zelos$Drawer.Drawer.prototype.draw=function(){var a=this.block_.pathObject;a.beginDrawing();this.hideHiddenIcons_();this.drawOutline_();this.drawInternals_();a.setPath(this.outlinePath_+"\n"+this.inlinePath_);this.info_.RTL&&a.flipRTL();(0,module$exports$Blockly$blockRendering$debug.isDebuggerEnabled)()&&this.block_.renderingDebugger.drawDebug(this.block_,this.info_);this.recordSizeOnBlock_();this.info_.outputConnection&&(a.outputShapeType=this.info_.outputConnection.shape.type); -a.endDrawing()};module$exports$Blockly$zelos$Drawer.Drawer.prototype.drawOutline_=function(){this.info_.outputConnection&&this.info_.outputConnection.isDynamicShape&&!this.info_.hasStatementInput&&!this.info_.bottomRow.hasNextConnection?(this.drawFlatTop_(),this.drawRightDynamicConnection_(),this.drawFlatBottom_(),this.drawLeftDynamicConnection_()):module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawOutline_.call(this)}; -module$exports$Blockly$zelos$Drawer.Drawer.prototype.drawLeft_=function(){this.info_.outputConnection&&this.info_.outputConnection.isDynamicShape?this.drawLeftDynamicConnection_():module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawLeft_.call(this)}; -module$exports$Blockly$zelos$Drawer.Drawer.prototype.drawRightSideRow_=function(a){if(!(0>=a.height))if(module$exports$Blockly$blockRendering$Types.Types.isSpacer(a)&&(a.precedesStatement||a.followsStatement)){var b=this.constants_.INSIDE_CORNERS.rightHeight;b=a.height-(a.precedesStatement?b:0);this.outlinePath_+=(a.followsStatement?this.constants_.INSIDE_CORNERS.pathBottomRight:"")+(0=c||0>=b)throw Error("Height and width values of an image field must be greater than 0."); -this.size_=new module$exports$Blockly$utils$Size.Size(b,c+$.module$exports$Blockly$FieldImage.FieldImage.Y_PADDING);this.imageHeight_=c;this.clickHandler_=null;"function"===typeof e&&(this.clickHandler_=e);this.imageElement_=null;this.flipRtl_=this.isDirty_=this.EDITABLE=!1;this.altText_="";a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(g?this.configure_(g):(this.flipRtl_=!!f,this.altText_=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(d)||""),this.setValue((0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a)))}}; -$.$jscomp.inherits($.module$exports$Blockly$FieldImage.FieldImage,module$exports$Blockly$Field.Field);$.module$exports$Blockly$FieldImage.FieldImage.prototype.configure_=function(a){module$exports$Blockly$Field.Field.prototype.configure_.call(this,a);this.flipRtl_=!!a.flipRtl;this.altText_=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.alt)||""}; -$.module$exports$Blockly$FieldImage.FieldImage.prototype.initView=function(){this.imageElement_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.IMAGE,{height:this.imageHeight_+"px",width:this.size_.width+"px",alt:this.altText_},this.fieldGroup_);this.imageElement_.setAttributeNS(module$exports$Blockly$utils$dom.XLINK_NS,"xlink:href",this.value_);this.clickHandler_&&(this.imageElement_.style.cursor="pointer")}; -$.module$exports$Blockly$FieldImage.FieldImage.prototype.updateSize_=function(){};$.module$exports$Blockly$FieldImage.FieldImage.prototype.doClassValidation_=function(a){return"string"!==typeof a?null:a};$.module$exports$Blockly$FieldImage.FieldImage.prototype.doValueUpdate_=function(a){this.value_=a;this.imageElement_&&this.imageElement_.setAttributeNS(module$exports$Blockly$utils$dom.XLINK_NS,"xlink:href",String(this.value_))}; -$.module$exports$Blockly$FieldImage.FieldImage.prototype.getFlipRtl=function(){return this.flipRtl_};$.module$exports$Blockly$FieldImage.FieldImage.prototype.setAlt=function(a){a!==this.altText_&&(this.altText_=a||"",this.imageElement_&&this.imageElement_.setAttribute("alt",this.altText_))};$.module$exports$Blockly$FieldImage.FieldImage.prototype.showEditor_=function(){this.clickHandler_&&this.clickHandler_(this)}; -$.module$exports$Blockly$FieldImage.FieldImage.prototype.setOnClickHandler=function(a){this.clickHandler_=a};$.module$exports$Blockly$FieldImage.FieldImage.prototype.getText_=function(){return this.altText_};$.module$exports$Blockly$FieldImage.FieldImage.fromJson=function(a){return new this(a.src,a.width,a.height,void 0,void 0,void 0,a)};$.module$exports$Blockly$FieldImage.FieldImage.prototype.DEFAULT_VALUE="";$.module$exports$Blockly$FieldImage.FieldImage.Y_PADDING=1; -(0,module$exports$Blockly$fieldRegistry.register)("field_image",$.module$exports$Blockly$FieldImage.FieldImage);var module$exports$Blockly$zelos$RightConnectionShape={RightConnectionShape:function(a){module$exports$Blockly$blockRendering$Measurable.Measurable.call(this,a);this.type|=module$exports$Blockly$blockRendering$Types.Types.getType("RIGHT_CONNECTION");this.width=this.height=0}};$.$jscomp.inherits(module$exports$Blockly$zelos$RightConnectionShape.RightConnectionShape,module$exports$Blockly$blockRendering$Measurable.Measurable);var module$exports$Blockly$zelos$StatementInput={StatementInput:function(a,b){module$exports$Blockly$blockRendering$StatementInput.StatementInput.call(this,a,b);if(this.connectedBlock){for(a=this.connectedBlock;b=a.getNextBlock();)a=b;a.nextConnection||(this.height=this.connectedBlockHeight,this.connectedBottomNextConnection=!0)}}};$.$jscomp.inherits(module$exports$Blockly$zelos$StatementInput.StatementInput,module$exports$Blockly$blockRendering$StatementInput.StatementInput);var module$exports$Blockly$zelos$TopRow={TopRow:function(a){module$exports$Blockly$blockRendering$TopRow.TopRow.call(this,a)}};$.$jscomp.inherits(module$exports$Blockly$zelos$TopRow.TopRow,module$exports$Blockly$blockRendering$TopRow.TopRow);module$exports$Blockly$zelos$TopRow.TopRow.prototype.endsWithElemSpacer=function(){return!1}; -module$exports$Blockly$zelos$TopRow.TopRow.prototype.hasLeftSquareCorner=function(a){var b=(a.hat?"cap"===a.hat:this.constants_.ADD_START_HATS)&&!a.outputConnection&&!a.previousConnection;return!!a.outputConnection||b};module$exports$Blockly$zelos$TopRow.TopRow.prototype.hasRightSquareCorner=function(a){return!!a.outputConnection&&!a.statementInputCount&&!a.nextConnection};var module$exports$Blockly$zelos$RenderInfo={RenderInfo:function(a,b){module$exports$Blockly$blockRendering$RenderInfo.RenderInfo.call(this,a,b);this.topRow=new module$exports$Blockly$zelos$TopRow.TopRow(this.constants_);this.bottomRow=new module$exports$Blockly$zelos$BottomRow.BottomRow(this.constants_);this.isInline=!0;this.isMultiRow=!b.getInputsInline()||b.isCollapsed();this.hasStatementInput=0=this.rows.length-1?!!this.bottomRow.hasNextConnection:!!f.precedesStatement;if(module$exports$Blockly$blockRendering$Types.Types.isInputRow(e)&&e.hasStatement)e.measure(),b=e.width-e.getLastInput().width+ -a;else if(d&&(2===c||f)&&module$exports$Blockly$blockRendering$Types.Types.isInputRow(e)&&!e.hasStatement){f=e.xPos;d=null;for(var g=0;gc?c:this.height/2,b-c*(1-Math.sin(Math.acos((c-this.constants_.SMALL_PADDING)/c)));default:return 0}if(module$exports$Blockly$blockRendering$Types.Types.isInlineInput(a)&& -a instanceof module$exports$Blockly$blockRendering$InputConnection.InputConnection){var e=a.connectedBlock;a=e?e.pathObject.outputShapeType:a.shape.type;return e&&e.outputConnection&&(e.statementInputCount||e.nextConnection)||c===d.SHAPES.HEXAGONAL&&c!==a?0:b-this.constants_.SHAPE_IN_SHAPE_PADDING[c][a]}return module$exports$Blockly$blockRendering$Types.Types.isField(a)&&a instanceof module$exports$Blockly$blockRendering$Field.Field?c===d.SHAPES.ROUND&&a.field instanceof $.module$exports$Blockly$FieldTextInput.FieldTextInput? -b-2.75*d.GRID_UNIT:b-this.constants_.SHAPE_IN_SHAPE_PADDING[c][0]:module$exports$Blockly$blockRendering$Types.Types.isIcon(a)?this.constants_.SMALL_PADDING:0}; -module$exports$Blockly$zelos$RenderInfo.RenderInfo.prototype.finalizeVerticalAlignment_=function(){if(!this.outputConnection)for(var a=2;a=this.rows.length-1?!!this.bottomRow.hasNextConnection:!!d.precedesStatement;if(e?this.topRow.hasPreviousConnection:b.followsStatement){var g=c.elements[1];g=3===c.elements.length&&g instanceof module$exports$Blockly$blockRendering$Field.Field&&(g.field instanceof $.module$exports$Blockly$FieldLabel.FieldLabel|| -g.field instanceof $.module$exports$Blockly$FieldImage.FieldImage);if(!e&&g)b.height-=this.constants_.SMALL_PADDING,d.height-=this.constants_.SMALL_PADDING,c.height-=this.constants_.MEDIUM_PADDING;else if(!e&&!f)b.height+=this.constants_.SMALL_PADDING;else if(f){e=!1;for(f=0;f.blocklyPathLight,",a+" .blocklyInsertionMarker>.blocklyPathDark {","fill-opacity: "+this.INSERTION_MARKER_OPACITY+";","stroke: none;","}"])};var module$exports$Blockly$geras$InlineInput={InlineInput:function(a,b){module$exports$Blockly$blockRendering$InlineInput.InlineInput.call(this,a,b);this.connectedBlock&&(this.width+=this.constants_.DARK_PATH_OFFSET,this.height+=this.constants_.DARK_PATH_OFFSET)}};$.$jscomp.inherits(module$exports$Blockly$geras$InlineInput.InlineInput,module$exports$Blockly$blockRendering$InlineInput.InlineInput);var module$exports$Blockly$geras$Highlighter={Highlighter:function(a){this.info_=a;this.inlineSteps_=this.steps_="";this.RTL_=this.info_.RTL;a=a.getRenderer();this.constants_=a.getConstants();this.highlightConstants_=a.getHighlightConstants();this.highlightOffset_=this.highlightConstants_.OFFSET;this.outsideCornerPaths_=this.highlightConstants_.OUTSIDE_CORNER;this.insideCornerPaths_=this.highlightConstants_.INSIDE_CORNER;this.puzzleTabPaths_=this.highlightConstants_.PUZZLE_TAB;this.notchPaths_=this.highlightConstants_.NOTCH; -this.startPaths_=this.highlightConstants_.START_HAT;this.jaggedTeethPaths_=this.highlightConstants_.JAGGED_TEETH}};module$exports$Blockly$geras$Highlighter.Highlighter.prototype.getPath=function(){return this.steps_+"\n"+this.inlineSteps_}; -module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawTopCorner=function(a){this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveBy)(a.xPos,this.info_.startY);for(var b=0,c;c=a.elements[b];b++)module$exports$Blockly$blockRendering$Types.Types.isLeftSquareCorner(c)?this.steps_+=this.highlightConstants_.START_POINT:module$exports$Blockly$blockRendering$Types.Types.isLeftRoundedCorner(c)?this.steps_+=this.outsideCornerPaths_.topLeft(this.RTL_):module$exports$Blockly$blockRendering$Types.Types.isPreviousConnection(c)? -this.steps_+=this.notchPaths_.pathLeft:module$exports$Blockly$blockRendering$Types.Types.isHat(c)?this.steps_+=this.startPaths_.path(this.RTL_):module$exports$Blockly$blockRendering$Types.Types.isSpacer(c)&&0!==c.width&&(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",c.xPos+c.width-this.highlightOffset_));this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",a.xPos+a.width-this.highlightOffset_)}; -module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawJaggedEdge_=function(a){this.info_.RTL&&(this.steps_+=this.jaggedTeethPaths_.pathLeft+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",a.height-this.jaggedTeethPaths_.height-this.highlightOffset_))}; -module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawValueInput=function(a){var b=a.getLastInput();if(this.RTL_){var c=a.height-b.connectionHeight;this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(b.xPos+b.width-this.highlightOffset_,a.yPos)+this.puzzleTabPaths_.pathDown(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",c)}else this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(b.xPos+b.width,a.yPos)+this.puzzleTabPaths_.pathDown(this.RTL_)}; -module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawStatementInput=function(a){var b=a.getLastInput();if(this.RTL_){var c=a.height-2*this.insideCornerPaths_.height;this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(b.xPos,a.yPos)+this.insideCornerPaths_.pathTop(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",c)+this.insideCornerPaths_.pathBottom(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(a.width-b.xPos-this.insideCornerPaths_.width,0)}else this.steps_+= -(0,module$exports$Blockly$utils$svgPaths.moveTo)(b.xPos,a.yPos+a.height)+this.insideCornerPaths_.pathBottom(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(a.width-b.xPos-this.insideCornerPaths_.width,0)}; -module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawRightSideRow=function(a){var b=a.xPos+a.width-this.highlightOffset_;a instanceof module$exports$Blockly$blockRendering$SpacerRow.SpacerRow&&a.followsStatement&&(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",b));this.RTL_&&(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",b),a.height>this.highlightOffset_&&(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a.yPos+a.height- -this.highlightOffset_)))}; -module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawBottomRow=function(a){if(this.RTL_)this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a.baseline-this.highlightOffset_);else{var b=this.info_.bottomRow.elements[0];module$exports$Blockly$blockRendering$Types.Types.isLeftSquareCorner(b)?this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(a.xPos+this.highlightOffset_,a.baseline-this.highlightOffset_):module$exports$Blockly$blockRendering$Types.Types.isLeftRoundedCorner(b)&&(this.steps_+= -(0,module$exports$Blockly$utils$svgPaths.moveTo)(a.xPos,a.baseline),this.steps_+=this.outsideCornerPaths_.bottomLeft())}}; -module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawLeft=function(){var a=this.info_.outputConnection;a&&(a=a.connectionOffsetY+a.height,this.RTL_?this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(this.info_.startX,a):(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(this.info_.startX+this.highlightOffset_,this.info_.bottomRow.baseline-this.highlightOffset_),this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a)),this.steps_+=this.puzzleTabPaths_.pathUp(this.RTL_)); -this.RTL_||(a=this.info_.topRow,module$exports$Blockly$blockRendering$Types.Types.isLeftRoundedCorner(a.elements[0])?this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",this.outsideCornerPaths_.height):this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a.capline+this.highlightOffset_))}; -module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawInlineInput=function(a){var b=this.highlightOffset_,c=a.xPos+a.connectionWidth,d=a.centerline-a.height/2,e=a.width-a.connectionWidth,f=d+b;this.RTL_?(d=a.connectionOffsetY-b,a=a.height-(a.connectionOffsetY+a.connectionHeight)+b,this.inlineSteps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(c-b,f)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",d)+this.puzzleTabPaths_.pathDown(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v", -a)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("h",e)):this.inlineSteps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(a.xPos+a.width+b,f)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",a.height)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("h",-e)+(0,module$exports$Blockly$utils$svgPaths.moveTo)(c,d+a.connectionOffsetY)+this.puzzleTabPaths_.pathDown(this.RTL_)};var module$exports$Blockly$geras$Drawer={Drawer:function(a,b){module$exports$Blockly$blockRendering$Drawer.Drawer.call(this,a,b);this.highlighter_=new module$exports$Blockly$geras$Highlighter.Highlighter(b)}};$.$jscomp.inherits(module$exports$Blockly$geras$Drawer.Drawer,module$exports$Blockly$blockRendering$Drawer.Drawer); -module$exports$Blockly$geras$Drawer.Drawer.prototype.draw=function(){this.hideHiddenIcons_();this.drawOutline_();this.drawInternals_();var a=this.block_.pathObject;a.setPath(this.outlinePath_+"\n"+this.inlinePath_);a.setHighlightPath(this.highlighter_.getPath());this.info_.RTL&&a.flipRTL();(0,module$exports$Blockly$blockRendering$debug.isDebuggerEnabled)()&&this.block_.renderingDebugger.drawDebug(this.block_,this.info_);this.recordSizeOnBlock_()}; -module$exports$Blockly$geras$Drawer.Drawer.prototype.drawTop_=function(){this.highlighter_.drawTopCorner(this.info_.topRow);this.highlighter_.drawRightSideRow(this.info_.topRow);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawTop_.call(this)};module$exports$Blockly$geras$Drawer.Drawer.prototype.drawJaggedEdge_=function(a){this.highlighter_.drawJaggedEdge_(a);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawJaggedEdge_.call(this,a)}; -module$exports$Blockly$geras$Drawer.Drawer.prototype.drawValueInput_=function(a){this.highlighter_.drawValueInput(a);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawValueInput_.call(this,a)};module$exports$Blockly$geras$Drawer.Drawer.prototype.drawStatementInput_=function(a){this.highlighter_.drawStatementInput(a);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawStatementInput_.call(this,a)}; -module$exports$Blockly$geras$Drawer.Drawer.prototype.drawRightSideRow_=function(a){this.highlighter_.drawRightSideRow(a);this.outlinePath_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",a.xPos+a.width)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a.yPos+a.height)};module$exports$Blockly$geras$Drawer.Drawer.prototype.drawBottom_=function(){this.highlighter_.drawBottomRow(this.info_.bottomRow);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawBottom_.call(this)}; -module$exports$Blockly$geras$Drawer.Drawer.prototype.drawLeft_=function(){this.highlighter_.drawLeft();module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawLeft_.call(this)};module$exports$Blockly$geras$Drawer.Drawer.prototype.drawInlineInput_=function(a){this.highlighter_.drawInlineInput(a);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawInlineInput_.call(this,a)}; -module$exports$Blockly$geras$Drawer.Drawer.prototype.positionInlineInputConnection_=function(a){var b=a.centerline-a.height/2;if(a.connectionModel){var c=a.xPos+a.connectionWidth+this.constants_.DARK_PATH_OFFSET;this.info_.RTL&&(c*=-1);a.connectionModel.setOffsetInBlock(c,b+a.connectionOffsetY+this.constants_.DARK_PATH_OFFSET)}}; -module$exports$Blockly$geras$Drawer.Drawer.prototype.positionStatementInputConnection_=function(a){var b=a.getLastInput();if(b.connectionModel){var c=a.xPos+a.statementEdge+b.notchOffset;c=this.info_.RTL?-1*c:c+this.constants_.DARK_PATH_OFFSET;b.connectionModel.setOffsetInBlock(c,a.yPos+this.constants_.DARK_PATH_OFFSET)}}; -module$exports$Blockly$geras$Drawer.Drawer.prototype.positionExternalValueConnection_=function(a){var b=a.getLastInput();if(b.connectionModel){var c=a.xPos+a.width+this.constants_.DARK_PATH_OFFSET;this.info_.RTL&&(c*=-1);b.connectionModel.setOffsetInBlock(c,a.yPos)}}; -module$exports$Blockly$geras$Drawer.Drawer.prototype.positionNextConnection_=function(){var a=this.info_.bottomRow;if(a.connection){var b=a.connection,c=b.xPos;b.connectionModel.setOffsetInBlock((this.info_.RTL?-c:c)+this.constants_.DARK_PATH_OFFSET/2,a.baseline+this.constants_.DARK_PATH_OFFSET)}};var module$exports$Blockly$geras$HighlightConstantProvider={HighlightConstantProvider:function(a){this.constantProvider=a;this.OFFSET=.5;this.START_POINT=(0,module$exports$Blockly$utils$svgPaths.moveBy)(this.OFFSET,this.OFFSET)}}; -module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.init=function(){this.INSIDE_CORNER=this.makeInsideCorner();this.OUTSIDE_CORNER=this.makeOutsideCorner();this.PUZZLE_TAB=this.makePuzzleTab();this.NOTCH=this.makeNotch();this.JAGGED_TEETH=this.makeJaggedTeeth();this.START_HAT=this.makeStartHat()}; -module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeInsideCorner=function(){var a=this.constantProvider.CORNER_RADIUS,b=this.OFFSET,c=(1-Math.SQRT1_2)*(a+b)-b,d=(0,module$exports$Blockly$utils$svgPaths.moveBy)(c,c)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(-c-b,a-c)),e=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a+b,(0,module$exports$Blockly$utils$svgPaths.point)(a+b,a+b)),f= -(0,module$exports$Blockly$utils$svgPaths.moveBy)(c,-c)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a+b,(0,module$exports$Blockly$utils$svgPaths.point)(a-c,c+b));return{width:a+b,height:a,pathTop:function(g){return g?d:""},pathBottom:function(g){return g?e:f}}}; -module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeOutsideCorner=function(){var a=this.constantProvider.CORNER_RADIUS,b=this.OFFSET,c=(1-Math.SQRT1_2)*(a-b)+b,d=(0,module$exports$Blockly$utils$svgPaths.moveBy)(c,c)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a-b,(0,module$exports$Blockly$utils$svgPaths.point)(a-c,-c+b)),e=(0,module$exports$Blockly$utils$svgPaths.moveBy)(b,a)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a-b,(0,module$exports$Blockly$utils$svgPaths.point)(a, --a+b)),f=-c,g=(0,module$exports$Blockly$utils$svgPaths.moveBy)(c,f)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a-b,(0,module$exports$Blockly$utils$svgPaths.point)(-c+b,-f-a));return{height:a,topLeft:function(h){return h?d:e},bottomLeft:function(){return g}}}; -module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makePuzzleTab=function(){var a=this.constantProvider.TAB_WIDTH,b=this.constantProvider.TAB_HEIGHT,c=(0,module$exports$Blockly$utils$svgPaths.moveBy)(-2,-b+3.4)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(-.45*a,-2.1),d=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",2.5)+(0,module$exports$Blockly$utils$svgPaths.moveBy)(.97*-a,2.5)+(0,module$exports$Blockly$utils$svgPaths.curve)("q",[(0,module$exports$Blockly$utils$svgPaths.point)(.05* --a,10),(0,module$exports$Blockly$utils$svgPaths.point)(.3*a,9.5)])+(0,module$exports$Blockly$utils$svgPaths.moveBy)(.67*a,-1.9)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",2.5),e=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",-1.5)+(0,module$exports$Blockly$utils$svgPaths.moveBy)(-.92*a,-.5)+(0,module$exports$Blockly$utils$svgPaths.curve)("q",[(0,module$exports$Blockly$utils$svgPaths.point)(-.19*a,-5.5),(0,module$exports$Blockly$utils$svgPaths.point)(0,-11)])+(0,module$exports$Blockly$utils$svgPaths.moveBy)(.92* -a,1),f=(0,module$exports$Blockly$utils$svgPaths.moveBy)(-5,b-.7)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(.46*a,-2.1);return{width:a,height:b,pathUp:function(g){return g?c:e},pathDown:function(g){return g?d:f}}};module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeNotch=function(){return{pathLeft:(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("h",this.OFFSET)+this.constantProvider.NOTCH.pathLeft}}; -module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeJaggedTeeth=function(){return{pathLeft:(0,module$exports$Blockly$utils$svgPaths.lineTo)(5.1,2.6)+(0,module$exports$Blockly$utils$svgPaths.moveBy)(-10.2,6.8)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(5.1,2.6),height:12,width:10.2}}; -module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeStartHat=function(){var a=this.constantProvider.START_HAT.height,b=(0,module$exports$Blockly$utils$svgPaths.moveBy)(25,-8.7)+(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(29.7,-6.2),(0,module$exports$Blockly$utils$svgPaths.point)(57.2,-.5),(0,module$exports$Blockly$utils$svgPaths.point)(75,8.7)]),c=(0,module$exports$Blockly$utils$svgPaths.curve)("c", -[(0,module$exports$Blockly$utils$svgPaths.point)(17.8,-9.2),(0,module$exports$Blockly$utils$svgPaths.point)(45.3,-14.9),(0,module$exports$Blockly$utils$svgPaths.point)(75,-8.7)])+(0,module$exports$Blockly$utils$svgPaths.moveTo)(100.5,a+.5);return{path:function(d){return d?b:c}}};var module$exports$Blockly$geras$RenderInfo={RenderInfo:function(a,b){module$exports$Blockly$blockRendering$RenderInfo.RenderInfo.call(this,a,b)}};$.$jscomp.inherits(module$exports$Blockly$geras$RenderInfo.RenderInfo,module$exports$Blockly$blockRendering$RenderInfo.RenderInfo);module$exports$Blockly$geras$RenderInfo.RenderInfo.prototype.getRenderer=function(){return this.renderer_}; -module$exports$Blockly$geras$RenderInfo.RenderInfo.prototype.populateBottomRow_=function(){module$exports$Blockly$blockRendering$RenderInfo.RenderInfo.prototype.populateBottomRow_.call(this);this.block_.inputList.length&&this.block_.inputList[this.block_.inputList.length-1].type===$.module$exports$Blockly$inputTypes.inputTypes.STATEMENT||(this.bottomRow.minHeight=this.constants_.MEDIUM_PADDING-this.constants_.DARK_PATH_OFFSET)}; -module$exports$Blockly$geras$RenderInfo.RenderInfo.prototype.addInput_=function(a,b){this.isInline&&a.type===$.module$exports$Blockly$inputTypes.inputTypes.VALUE?(b.elements.push(new module$exports$Blockly$geras$InlineInput.InlineInput(this.constants_,a)),b.hasInlineInput=!0):a.type===$.module$exports$Blockly$inputTypes.inputTypes.STATEMENT?(b.elements.push(new module$exports$Blockly$geras$StatementInput.StatementInput(this.constants_,a)),b.hasStatement=!0):a.type===$.module$exports$Blockly$inputTypes.inputTypes.VALUE? -(b.elements.push(new module$exports$Blockly$blockRendering$ExternalValueInput.ExternalValueInput(this.constants_,a)),b.hasExternalInput=!0):a.type===$.module$exports$Blockly$inputTypes.inputTypes.DUMMY&&(b.minHeight=Math.max(b.minHeight,this.constants_.DUMMY_INPUT_MIN_HEIGHT),b.hasDummyInput=!0);this.isInline||null!==b.align||(b.align=a.align)}; -module$exports$Blockly$geras$RenderInfo.RenderInfo.prototype.addElemSpacing_=function(){for(var a=!1,b=0,c;c=this.rows[b];b++)c.hasExternalInput&&(a=!0);for(b=0;c=this.rows[b];b++){var d=c.elements;c.elements=[];c.startsWithElemSpacer()&&c.elements.push(new module$exports$Blockly$blockRendering$InRowSpacer.InRowSpacer(this.constants_,this.getInRowSpacing_(null,d[0])));if(d.length){for(var e=0;eb.length?module$contents$Blockly$ContextMenuItems_deleteNext_(b,c):(0,module$exports$Blockly$dialog.confirm)($.module$exports$Blockly$Msg.Msg.DELETE_ALL_BLOCKS.replace("%1",String(b.length)),function(d){d&&module$contents$Blockly$ContextMenuItems_deleteNext_(b,c)})}},scopeType:module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.ScopeType.WORKSPACE, -id:"workspaceDelete",weight:6})};var module$contents$Blockly$ContextMenuItems_registerWorkspaceOptions_=function(){(0,module$exports$Blockly$ContextMenuItems.registerUndo)();(0,module$exports$Blockly$ContextMenuItems.registerRedo)();(0,module$exports$Blockly$ContextMenuItems.registerCleanup)();(0,module$exports$Blockly$ContextMenuItems.registerCollapse)();(0,module$exports$Blockly$ContextMenuItems.registerExpand)();(0,module$exports$Blockly$ContextMenuItems.registerDeleteAll)()}; -module$exports$Blockly$ContextMenuItems.registerDuplicate=function(){module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.registry.register({displayText:function(){return $.module$exports$Blockly$Msg.Msg.DUPLICATE_BLOCK},preconditionFn:function(a){a=a.block;return!a.isInFlyout&&a.isDeletable()&&a.isMovable()?a.isDuplicatable()?"enabled":"disabled":"hidden"},callback:function(a){a.block&&(0,module$exports$Blockly$clipboard.duplicate)(a.block)},scopeType:module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.ScopeType.BLOCK, -id:"blockDuplicate",weight:1})}; -module$exports$Blockly$ContextMenuItems.registerComment=function(){module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.registry.register({displayText:function(a){return a.block.getCommentIcon()?$.module$exports$Blockly$Msg.Msg.REMOVE_COMMENT:$.module$exports$Blockly$Msg.Msg.ADD_COMMENT},preconditionFn:function(a){a=a.block;return module$exports$Blockly$utils$userAgent.IE||a.isInFlyout||!a.workspace.options.comments||a.isCollapsed()||!a.isEditable()?"hidden":"enabled"},callback:function(a){a= -a.block;a.getCommentIcon()?a.setCommentText(null):a.setCommentText("")},scopeType:module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.ScopeType.BLOCK,id:"blockComment",weight:2})}; -module$exports$Blockly$ContextMenuItems.registerInline=function(){module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.registry.register({displayText:function(a){return a.block.getInputsInline()?$.module$exports$Blockly$Msg.Msg.EXTERNAL_INPUTS:$.module$exports$Blockly$Msg.Msg.INLINE_INPUTS},preconditionFn:function(a){a=a.block;if(!a.isInFlyout&&a.isMovable()&&!a.isCollapsed())for(var b=1;ba||Math.abs(this.workspaceHeight_-d)>a)this.workspaceWidth_=c,this.workspaceHeight_=d,this.bubble_.setBubbleSize(c+ -a,d+a),this.svgDialog_.setAttribute("width",this.workspaceWidth_),this.svgDialog_.setAttribute("height",this.workspaceHeight_),this.workspace_.setCachedParentSvgSize(this.workspaceWidth_,this.workspaceHeight_);this.block_.RTL&&(a="translate("+this.workspaceWidth_+",0)",this.workspace_.getCanvas().setAttribute("transform",a));this.workspace_.resize()};$.module$exports$Blockly$Mutator.Mutator.prototype.onBubbleMove_=function(){this.workspace_&&this.workspace_.recordDragTargets()}; -$.module$exports$Blockly$Mutator.Mutator.prototype.setVisible=function(a){var b=this;if(a!==this.isVisible())if((0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.BUBBLE_OPEN))(this.block_,a,"mutator")),a){this.bubble_=new module$exports$Blockly$Bubble.Bubble(this.block_.workspace,this.createEditor_(),this.block_.pathObject.svgPath,this.iconXY_,null,null);this.bubble_.setSvgId(this.block_.id);this.bubble_.registerMoveEvent(this.onBubbleMove_.bind(this)); -var c=this.workspace_.options.languageTree;a=this.workspace_.getFlyout();c&&(a.init(this.workspace_),a.show(c));this.rootBlock_=this.block_.decompose(this.workspace_);c=this.rootBlock_.getDescendants(!1);for(var d=0,e=void 0;e=c[d];d++)e.render();this.rootBlock_.setMovable(!1);this.rootBlock_.setDeletable(!1);a?(c=2*a.CORNER_RADIUS,a=this.rootBlock_.RTL?a.getWidth()+c:c):a=c=16;this.block_.RTL&&(a=-a);this.rootBlock_.moveBy(a,c);if(this.block_.saveConnections){var f=this.rootBlock_;this.block_.saveConnections(f); -this.sourceListener_=function(){b.block_&&b.block_.saveConnections(f)};this.block_.workspace.addChangeListener(this.sourceListener_)}this.resizeBubble_();this.workspace_.addChangeListener(this.workspaceChanged_.bind(this));this.updateWorkspace_();this.applyColour()}else this.svgDialog_=null,this.workspace_.dispose(),this.rootBlock_=this.workspace_=null,this.bubble_.dispose(),this.bubble_=null,this.workspaceHeight_=this.workspaceWidth_=0,this.sourceListener_&&(this.block_.workspace.removeChangeListener(this.sourceListener_), -this.sourceListener_=null)};$.module$exports$Blockly$Mutator.Mutator.prototype.workspaceChanged_=function(a){a.isUiEvent||a.type===module$exports$Blockly$Events$utils.CHANGE&&"disabled"===a.element||a.type===module$exports$Blockly$Events$utils.CREATE||this.updateWorkspace_()}; -$.module$exports$Blockly$Mutator.Mutator.prototype.updateWorkspace_=function(){if(!this.workspace_.isDragging())for(var a=this.workspace_.getTopBlocks(!1),b=0,c=void 0;c=a[b];b++){var d=c.getRelativeToSurfaceXY();20>d.y&&c.moveBy(0,20-d.y);if(c.RTL){var e=-20,f=this.workspace_.getFlyout();f&&(e-=f.getWidth());d.x>e&&c.moveBy(e-d.x,0)}else 20>d.x&&c.moveBy(20-d.x,0)}if(this.rootBlock_.workspace===this.workspace_){(a=(0,module$exports$Blockly$Events$utils.getGroup)())||(0,module$exports$Blockly$Events$utils.setGroup)(!0); -var g=this.block_;b=module$exports$Blockly$Events$BlockChange.BlockChange.getExtraBlockState_(g);c=g.rendered;g.rendered=!1;g.compose(this.rootBlock_);g.rendered=c;g.initSvg();g.rendered&&g.render();c=module$exports$Blockly$Events$BlockChange.BlockChange.getExtraBlockState_(g);if(b!==c){(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CHANGE))(g,"mutation",null,b,c));var h=(0,module$exports$Blockly$Events$utils.getGroup)(); -setTimeout(function(){var k=(0,module$exports$Blockly$Events$utils.getGroup)();(0,module$exports$Blockly$Events$utils.setGroup)(h);g.bumpNeighbours();(0,module$exports$Blockly$Events$utils.setGroup)(k)},$.module$exports$Blockly$config.config.bumpDelay)}this.workspace_.isDragging()||this.resizeBubble_();(0,module$exports$Blockly$Events$utils.setGroup)(a)}};$.module$exports$Blockly$Mutator.Mutator.prototype.dispose=function(){this.block_.mutator=null;module$exports$Blockly$Icon.Icon.prototype.dispose.call(this)}; -$.module$exports$Blockly$Mutator.Mutator.prototype.updateBlockStyle=function(){var a=this.workspace_;if(a&&a.getAllBlocks(!1)){for(var b=a.getAllBlocks(!1),c=0,d;d=b[c];c++)d.setStyle(d.getStyleName());if(a=a.getFlyout())for(a=a.workspace_.getAllBlocks(!1),b=0;c=a[b];b++)c.setStyle(c.getStyleName())}}; -$.module$exports$Blockly$Mutator.Mutator.reconnect=function(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;var d=a.targetBlock();return d&&d!==b||c.targetConnection===a?!1:(c.isConnected()&&c.disconnect(),c.connect(a),!0)};$.module$exports$Blockly$Mutator.Mutator.findParentWs=function(a){var b=null;if(a&&a.options){var c=a.options.parentWorkspace;a.isFlyout?c&&c.options&&(b=c.options.parentWorkspace):c&&(b=c)}return b};var module$exports$Blockly$Warning={Warning:function(a){module$exports$Blockly$Icon.Icon.call(this,a);this.createIcon();this.text_=Object.create(null);this.paragraphElement_=null;this.collapseHidden=!1}};$.$jscomp.inherits(module$exports$Blockly$Warning.Warning,module$exports$Blockly$Icon.Icon); -module$exports$Blockly$Warning.Warning.prototype.drawIcon_=function(a){(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{"class":"blocklyIconShape",d:"M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{"class":"blocklyIconSymbol",d:"m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT, -{"class":"blocklyIconSymbol",x:"7",y:"11",height:"2",width:"2"},a)};module$exports$Blockly$Warning.Warning.prototype.setVisible=function(a){a!==this.isVisible()&&((0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.BUBBLE_OPEN))(this.block_,a,"warning")),a?this.createBubble_():this.disposeBubble_())}; -module$exports$Blockly$Warning.Warning.prototype.createBubble_=function(){this.paragraphElement_=module$exports$Blockly$Bubble.Bubble.textToDom(this.getText());this.bubble_=module$exports$Blockly$Bubble.Bubble.createNonEditableBubble(this.paragraphElement_,this.block_,this.iconXY_);this.applyColour()};module$exports$Blockly$Warning.Warning.prototype.disposeBubble_=function(){this.bubble_.dispose();this.paragraphElement_=this.bubble_=null}; -module$exports$Blockly$Warning.Warning.prototype.setText=function(a,b){this.text_[b]!==a&&(a?this.text_[b]=a:delete this.text_[b],this.isVisible()&&(this.setVisible(!1),this.setVisible(!0)))};module$exports$Blockly$Warning.Warning.prototype.getText=function(){var a=[],b;for(b in this.text_)a.push(this.text_[b]);return a.join("\n")};module$exports$Blockly$Warning.Warning.prototype.dispose=function(){this.block_.warning=null;module$exports$Blockly$Icon.Icon.prototype.dispose.call(this)};var module$exports$Blockly$Comment={Comment:function(a){module$exports$Blockly$Icon.Icon.call(this,a);this.model_=a.commentModel;this.model_.text=this.model_.text||"";this.cachedText_="";this.paragraphElement_=this.textarea_=this.foreignObject_=this.onInputWrapper_=this.onChangeWrapper_=this.onWheelWrapper_=this.onMouseUpWrapper_=null;this.createIcon()}};$.$jscomp.inherits(module$exports$Blockly$Comment.Comment,module$exports$Blockly$Icon.Icon); -module$exports$Blockly$Comment.Comment.prototype.drawIcon_=function(a){(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{"class":"blocklyIconShape",r:"8",cx:"8",cy:"8"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{"class":"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.4050.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25-1.201,0.998 -1.201,1.528 -1.204,2.19z"}, -a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},a)}; -module$exports$Blockly$Comment.Comment.prototype.createEditor_=function(){this.foreignObject_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FOREIGNOBJECT,{x:module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH,y:module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH},null);var a=document.createElementNS(module$exports$Blockly$utils$dom.HTML_NS,"body");a.setAttribute("xmlns",module$exports$Blockly$utils$dom.HTML_NS);a.className="blocklyMinimalBody";var b=this.textarea_= -document.createElementNS(module$exports$Blockly$utils$dom.HTML_NS,"textarea");b.className="blocklyCommentTextarea";b.setAttribute("dir",this.block_.RTL?"RTL":"LTR");b.value=this.model_.text;this.resizeTextarea_();a.appendChild(b);this.foreignObject_.appendChild(a);this.onMouseUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"mouseup",this,this.startEdit_,!0,!0);this.onWheelWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"wheel",this,function(c){c.stopPropagation()}); -this.onChangeWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"change",this,function(c){this.cachedText_!==this.model_.text&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CHANGE))(this.block_,"comment",null,this.cachedText_,this.model_.text))});this.onInputWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"input",this,function(c){this.model_.text=b.value});setTimeout(b.focus.bind(b), -0);return this.foreignObject_};module$exports$Blockly$Comment.Comment.prototype.updateEditable=function(){module$exports$Blockly$Icon.Icon.prototype.updateEditable.call(this);this.isVisible()&&(this.disposeBubble_(),this.createBubble_())};module$exports$Blockly$Comment.Comment.prototype.onBubbleResize_=function(){this.isVisible()&&(this.model_.size=this.bubble_.getBubbleSize(),this.resizeTextarea_())}; -module$exports$Blockly$Comment.Comment.prototype.resizeTextarea_=function(){var a=this.model_.size,b=2*module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH,c=a.width-b;a=a.height-b;this.foreignObject_.setAttribute("width",c);this.foreignObject_.setAttribute("height",a);this.textarea_.style.width=c-4+"px";this.textarea_.style.height=a-4+"px"}; -module$exports$Blockly$Comment.Comment.prototype.setVisible=function(a){a!==this.isVisible()&&((0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.BUBBLE_OPEN))(this.block_,a,"comment")),(this.model_.pinned=a)?this.createBubble_():this.disposeBubble_())}; -module$exports$Blockly$Comment.Comment.prototype.createBubble_=function(){!this.block_.isEditable()||module$exports$Blockly$utils$userAgent.IE?this.createNonEditableBubble_():this.createEditableBubble_()}; -module$exports$Blockly$Comment.Comment.prototype.createEditableBubble_=function(){this.bubble_=new module$exports$Blockly$Bubble.Bubble(this.block_.workspace,this.createEditor_(),this.block_.pathObject.svgPath,this.iconXY_,this.model_.size.width,this.model_.size.height);this.bubble_.setSvgId(this.block_.id);this.bubble_.registerResizeEvent(this.onBubbleResize_.bind(this));this.applyColour()}; -module$exports$Blockly$Comment.Comment.prototype.createNonEditableBubble_=function(){this.paragraphElement_=module$exports$Blockly$Bubble.Bubble.textToDom(this.block_.getCommentText());this.bubble_=module$exports$Blockly$Bubble.Bubble.createNonEditableBubble(this.paragraphElement_,this.block_,this.iconXY_);this.applyColour()}; -module$exports$Blockly$Comment.Comment.prototype.disposeBubble_=function(){this.onMouseUpWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onMouseUpWrapper_),this.onMouseUpWrapper_=null);this.onWheelWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onWheelWrapper_),this.onWheelWrapper_=null);this.onChangeWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onChangeWrapper_),this.onChangeWrapper_=null);this.onInputWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onInputWrapper_), -this.onInputWrapper_=null);this.bubble_.dispose();this.paragraphElement_=this.foreignObject_=this.textarea_=this.bubble_=null};module$exports$Blockly$Comment.Comment.prototype.startEdit_=function(a){this.bubble_.promote()&&this.textarea_.focus();this.cachedText_=this.model_.text};module$exports$Blockly$Comment.Comment.prototype.getBubbleSize=function(){return this.model_.size}; -module$exports$Blockly$Comment.Comment.prototype.setBubbleSize=function(a,b){this.bubble_?this.bubble_.setBubbleSize(a,b):(this.model_.size.width=a,this.model_.size.height=b)};module$exports$Blockly$Comment.Comment.prototype.updateText=function(){this.textarea_?this.textarea_.value=this.model_.text:this.paragraphElement_&&(this.paragraphElement_.firstChild.textContent=this.model_.text)};module$exports$Blockly$Comment.Comment.prototype.dispose=function(){this.block_.comment=null;module$exports$Blockly$Icon.Icon.prototype.dispose.call(this)}; -(0,module$exports$Blockly$Css.register)("\n.blocklyCommentTextarea {\n background-color: #fef49c;\n border: 0;\n display: block;\n margin: 0;\n outline: 0;\n padding: 3px;\n resize: none;\n text-overflow: hidden;\n}\n");var module$exports$Blockly$sprite={SPRITE:{width:96,height:124,url:"sprites.png"}};var module$exports$Blockly$uiPosition={verticalPosition:{TOP:0,BOTTOM:1},horizontalPosition:{LEFT:0,RIGHT:1},bumpDirection:{UP:0,DOWN:1},getStartPositionRect:function(a,b,c,d,e,f){var g=f.scrollbar&&f.scrollbar.canScrollVertically();a.horizontal===module$exports$Blockly$uiPosition.horizontalPosition.LEFT?(c=e.absoluteMetrics.left+c,g&&f.RTL&&(c+=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness)):(c=e.absoluteMetrics.left+e.viewMetrics.width-b.width-c,g&&!f.RTL&&(c-=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness)); -a.vertical===module$exports$Blockly$uiPosition.verticalPosition.TOP?a=e.absoluteMetrics.top+d:(a=e.absoluteMetrics.top+e.viewMetrics.height-b.height-d,f.scrollbar&&f.scrollbar.canScrollHorizontally()&&(a-=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness));return new module$exports$Blockly$utils$Rect.Rect(a,a+b.height,c,c+b.width)},getCornerOppositeToolbox:function(a,b){return{horizontal:b.toolboxMetrics.position===module$exports$Blockly$utils$toolbox.Position.LEFT||a.horizontalLayout&& -!a.RTL?module$exports$Blockly$uiPosition.horizontalPosition.RIGHT:module$exports$Blockly$uiPosition.horizontalPosition.LEFT,vertical:b.toolboxMetrics.position===module$exports$Blockly$utils$toolbox.Position.BOTTOM?module$exports$Blockly$uiPosition.verticalPosition.TOP:module$exports$Blockly$uiPosition.verticalPosition.BOTTOM}},bumpPositionRect:function(a,b,c,d){for(var e=a.left,f=a.right-a.left,g=a.bottom-a.top,h=0;himage, .blocklyZoom>svg>image {\n opacity: .4;\n}\n\n.blocklyZoom>image:hover, .blocklyZoom>svg>image:hover {\n opacity: .6;\n}\n\n.blocklyZoom>image:active, .blocklyZoom>svg>image:active {\n opacity: .8;\n}\n");var module$exports$Blockly$WorkspaceComment={WorkspaceComment:function(a,b,c,d,e){this.id=e&&!a.getCommentById(e)?e:(0,module$exports$Blockly$utils$idGenerator.genUid)();a.addTopComment(this);this.xy_=new module$exports$Blockly$utils$Coordinate.Coordinate(0,0);this.height_=c;this.width_=d;this.workspace=a;this.RTL=a.RTL;this.editable_=this.movable_=this.deletable_=!0;this.content_=b;this.disposed_=!1;this.isComment=!0;module$exports$Blockly$WorkspaceComment.WorkspaceComment.fireCreateEvent(this)}}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.dispose=function(){this.disposed_||((0,module$exports$Blockly$Events$utils.isEnabled)()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_DELETE))(this)),this.workspace.removeTopComment(this),this.disposed_=!0)};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.getHeight=function(){return this.height_}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setHeight=function(a){this.height_=a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.getWidth=function(){return this.width_};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setWidth=function(a){this.width_=a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.getXY=function(){return new module$exports$Blockly$utils$Coordinate.Coordinate(this.xy_.x,this.xy_.y)}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.moveBy=function(a,b){var c=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_MOVE))(this);this.xy_.translate(a,b);c.recordNew();(0,module$exports$Blockly$Events$utils.fire)(c)};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.isDeletable=function(){return this.deletable_&&!(this.workspace&&this.workspace.options.readOnly)}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setDeletable=function(a){this.deletable_=a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.isMovable=function(){return this.movable_&&!(this.workspace&&this.workspace.options.readOnly)};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setMovable=function(a){this.movable_=a}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.isEditable=function(){return this.editable_&&!(this.workspace&&this.workspace.options.readOnly)};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setEditable=function(a){this.editable_=a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.getContent=function(){return this.content_}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setContent=function(a){this.content_!==a&&((0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_CHANGE))(this,this.content_,a)),this.content_=a)}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.toXmlWithXY=function(a){a=this.toXml(a);a.setAttribute("x",Math.round(this.xy_.x));a.setAttribute("y",Math.round(this.xy_.y));a.setAttribute("h",this.height_);a.setAttribute("w",this.width_);return a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.toXml=function(a){var b=(0,$.module$exports$Blockly$utils$xml.createElement)("comment");a||(b.id=this.id);b.textContent=this.getContent();return b}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.fireCreateEvent=function(a){if((0,module$exports$Blockly$Events$utils.isEnabled)()){var b=(0,module$exports$Blockly$Events$utils.getGroup)();b||(0,module$exports$Blockly$Events$utils.setGroup)(!0);try{(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_CREATE))(a))}finally{b||(0,module$exports$Blockly$Events$utils.setGroup)(!1)}}}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.fromXml=function(a,b){var c=module$exports$Blockly$WorkspaceComment.WorkspaceComment.parseAttributes(a);b=new module$exports$Blockly$WorkspaceComment.WorkspaceComment(b,c.content,c.h,c.w,c.id);c=parseInt(a.getAttribute("x"),10);a=parseInt(a.getAttribute("y"),10);isNaN(c)||isNaN(a)||b.moveBy(c,a);module$exports$Blockly$WorkspaceComment.WorkspaceComment.fireCreateEvent(b);return b}; -module$exports$Blockly$WorkspaceComment.WorkspaceComment.parseAttributes=function(a){var b=a.getAttribute("h"),c=a.getAttribute("w");return{id:a.getAttribute("id"),h:b?parseInt(b,10):100,w:c?parseInt(c,10):100,x:parseInt(a.getAttribute("x"),10),y:parseInt(a.getAttribute("y"),10),content:a.textContent}};var module$exports$Blockly$WorkspaceCommentSvg={},module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE=8,module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS=3,module$contents$Blockly$WorkspaceCommentSvg_TEXTAREA_OFFSET=2; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg=function(a,b,c,d,e){module$exports$Blockly$WorkspaceComment.WorkspaceComment.call(this,a,b,c,d,e);this.onMouseMoveWrapper_=this.onMouseUpWrapper_=null;this.eventsInit_=!1;this.deleteIconBorder_=this.deleteGroup_=this.resizeGroup_=this.foreignObject_=this.svgHandleTarget_=this.svgRectTarget_=this.textarea_=null;this.autoLayout_=this.focused_=!1;this.svgGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G, -{"class":"blocklyComment"},null);this.svgGroup_.translate_="";this.svgRect_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyCommentRect",x:0,y:0,rx:module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS,ry:module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS});this.svgGroup_.appendChild(this.svgRect_);this.rendered_=!1;this.useDragSurface_=(0,module$exports$Blockly$utils$svgMath.is3dSupported)()&&!!a.getBlockDragSurface();this.render()}; -$.$jscomp.inherits(module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg,module$exports$Blockly$WorkspaceComment.WorkspaceComment); -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.dispose=function(){this.disposed_||((0,$.module$exports$Blockly$common.getSelected)()===this&&(this.unselect(),this.workspace.cancelCurrentGesture()),(0,module$exports$Blockly$Events$utils.isEnabled)()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_DELETE))(this)),(0,module$exports$Blockly$utils$dom.removeNode)(this.svgGroup_),this.disposeInternal_(), -(0,module$exports$Blockly$Events$utils.disable)(),module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.dispose.call(this),(0,module$exports$Blockly$Events$utils.enable)())}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.initSvg=function(a){if(!this.workspace.rendered)throw TypeError("Workspace is headless.");this.workspace.options.readOnly||this.eventsInit_||((0,module$exports$Blockly$browserEvents.conditionalBind)(this.svgRectTarget_,"mousedown",this,this.pathMouseDown_),(0,module$exports$Blockly$browserEvents.conditionalBind)(this.svgHandleTarget_,"mousedown",this,this.pathMouseDown_));this.eventsInit_=!0;this.updateMovable();this.getSvgRoot().parentNode|| -this.workspace.getBubbleCanvas().appendChild(this.getSvgRoot());!a&&this.textarea_&&this.textarea_.select()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.pathMouseDown_=function(a){var b=this.workspace.getGesture(a);b&&b.handleBubbleStart(a,this)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.showContextMenu=function(a){if(!this.workspace.options.readOnly){var b=[];this.isDeletable()&&this.isMovable()&&(b.push((0,$.module$exports$Blockly$ContextMenu.commentDuplicateOption)(this)),b.push((0,$.module$exports$Blockly$ContextMenu.commentDeleteOption)(this)));(0,$.module$exports$Blockly$ContextMenu.show)(a,b,this.RTL)}}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.select=function(){if((0,$.module$exports$Blockly$common.getSelected)()!==this){var a=null;if((0,$.module$exports$Blockly$common.getSelected)()){a=(0,$.module$exports$Blockly$common.getSelected)().id;(0,module$exports$Blockly$Events$utils.disable)();try{(0,$.module$exports$Blockly$common.getSelected)().unselect()}finally{(0,module$exports$Blockly$Events$utils.enable)()}}a=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.SELECTED))(a, -this.id,this.workspace.id);(0,module$exports$Blockly$Events$utils.fire)(a);(0,$.module$exports$Blockly$common.setSelected)(this);this.addSelect()}}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.unselect=function(){if((0,$.module$exports$Blockly$common.getSelected)()===this){var a=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.SELECTED))(this.id,null,this.workspace.id);(0,module$exports$Blockly$Events$utils.fire)(a);(0,$.module$exports$Blockly$common.setSelected)(null);this.removeSelect();this.blurFocus()}}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.addSelect=function(){(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklySelected");this.setFocus()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.removeSelect=function(){(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklySelected");this.blurFocus()}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.addFocus=function(){(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklyFocused")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.removeFocus=function(){(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklyFocused")}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getRelativeToSurfaceXY=function(){var a=0,b=0,c=this.useDragSurface_?this.workspace.getBlockDragSurface().getGroup():null,d=this.getSvgRoot();if(d){do{var e=(0,module$exports$Blockly$utils$svgMath.getRelativeXY)(d);a+=e.x;b+=e.y;this.useDragSurface_&&this.workspace.getBlockDragSurface().getCurrentBlock()===d&&(e=this.workspace.getBlockDragSurface().getSurfaceTranslation(),a+=e.x,b+=e.y);d=d.parentNode}while(d&&d!==this.workspace.getBubbleCanvas()&& -d!==c)}return this.xy_=new module$exports$Blockly$utils$Coordinate.Coordinate(a,b)};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.moveBy=function(a,b){var c=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_MOVE))(this),d=this.getRelativeToSurfaceXY();this.translate(d.x+a,d.y+b);this.xy_=new module$exports$Blockly$utils$Coordinate.Coordinate(d.x+a,d.y+b);c.recordNew();(0,module$exports$Blockly$Events$utils.fire)(c);this.workspace.resizeContents()}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.translate=function(a,b){this.xy_=new module$exports$Blockly$utils$Coordinate.Coordinate(a,b);this.getSvgRoot().setAttribute("transform","translate("+a+","+b+")")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.moveToDragSurface=function(){if(this.useDragSurface_){var a=this.getRelativeToSurfaceXY();this.clearTransformAttributes_();this.workspace.getBlockDragSurface().translateSurface(a.x,a.y);this.workspace.getBlockDragSurface().setBlocksAndShow(this.getSvgRoot())}}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.moveDuringDrag=function(a,b){a?a.translateSurface(b.x,b.y):(this.svgGroup_.translate_="translate("+b.x+","+b.y+")",this.svgGroup_.setAttribute("transform",this.svgGroup_.translate_+this.svgGroup_.skew_))};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.moveTo=function(a,b){this.translate(a,b)};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.clearTransformAttributes_=function(){this.getSvgRoot().removeAttribute("transform")}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getBoundingRectangle=function(){var a=this.getRelativeToSurfaceXY(),b=this.getHeightWidth(),c=a.y,d=a.y+b.height;if(this.RTL){var e=a.x-b.width;a=a.x}else e=a.x,a=a.x+b.width;return new module$exports$Blockly$utils$Rect.Rect(c,d,e,a)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.updateMovable=function(){this.isMovable()?(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklyDraggable"):(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklyDraggable")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setMovable=function(a){module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setMovable.call(this,a);this.updateMovable()}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setEditable=function(a){module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setEditable.call(this,a);this.textarea_&&(this.textarea_.readOnly=!a)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setDragging=function(a){a?(a=this.getSvgRoot(),a.translate_="",a.skew_="",(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklyDragging")):(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklyDragging")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getSvgRoot=function(){return this.svgGroup_}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getContent=function(){return this.textarea_?this.textarea_.value:this.content_};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setContent=function(a){module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setContent.call(this,a);this.textarea_&&(this.textarea_.value=a)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setDeleteStyle=function(a){a?(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklyDraggingDelete"):(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklyDraggingDelete")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setAutoLayout=function(a){}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.toXmlWithXY=function(a){var b;this.workspace.RTL&&(b=this.workspace.getWidth());a=this.toXml(a);var c=this.getRelativeToSurfaceXY();a.setAttribute("x",Math.round(this.workspace.RTL?b-c.x:c.x));a.setAttribute("y",Math.round(c.y));a.setAttribute("h",this.getHeight());a.setAttribute("w",this.getWidth());return a}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.toCopyData=function(){return{saveInfo:this.toXmlWithXY(),source:this.workspace,typeCounts:null}};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getHeightWidth=function(){return{width:this.getWidth(),height:this.getHeight()}}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.render=function(){if(!this.rendered_){var a=this.getHeightWidth();this.createEditor_();this.svgGroup_.appendChild(this.foreignObject_);this.svgHandleTarget_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyCommentHandleTarget",x:0,y:0});this.svgGroup_.appendChild(this.svgHandleTarget_);this.svgRectTarget_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT, -{"class":"blocklyCommentTarget",x:0,y:0,rx:module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS,ry:module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS});this.svgGroup_.appendChild(this.svgRectTarget_);this.addResizeDom_();this.isDeletable()&&this.addDeleteDom_();this.setSize_(a.width,a.height);this.textarea_.value=this.content_;this.rendered_=!0;this.resizeGroup_&&(0,module$exports$Blockly$browserEvents.conditionalBind)(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_);this.isDeletable()&& -((0,module$exports$Blockly$browserEvents.conditionalBind)(this.deleteGroup_,"mousedown",this,this.deleteMouseDown_),(0,module$exports$Blockly$browserEvents.conditionalBind)(this.deleteGroup_,"mouseout",this,this.deleteMouseOut_),(0,module$exports$Blockly$browserEvents.conditionalBind)(this.deleteGroup_,"mouseup",this,this.deleteMouseUp_))}}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.createEditor_=function(){this.foreignObject_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FOREIGNOBJECT,{x:0,y:module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET,"class":"blocklyCommentForeignObject"},null);var a=document.createElementNS(module$exports$Blockly$utils$dom.HTML_NS,"body");a.setAttribute("xmlns",module$exports$Blockly$utils$dom.HTML_NS);a.className= -"blocklyMinimalBody";var b=document.createElementNS(module$exports$Blockly$utils$dom.HTML_NS,"textarea");b.className="blocklyCommentTextarea";b.setAttribute("dir",this.RTL?"RTL":"LTR");b.readOnly=!this.isEditable();a.appendChild(b);this.textarea_=b;this.foreignObject_.appendChild(a);(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"wheel",this,function(c){c.stopPropagation()});(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"change",this,function(c){this.setContent(b.value)}); -return this.foreignObject_}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.addResizeDom_=function(){this.resizeGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":this.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.svgGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.POLYGON,{points:"0,x x,x x,0".replace(/x/g,module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE.toString())},this.resizeGroup_); -(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE,{"class":"blocklyResizeLine",x1:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE/3,y1:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE-1,x2:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE-1,y2:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE/3},this.resizeGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE,{"class":"blocklyResizeLine", -x1:2*module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE/3,y1:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE-1,x2:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE-1,y2:2*module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE/3},this.resizeGroup_)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.addDeleteDom_=function(){this.deleteGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":"blocklyCommentDeleteIcon"},this.svgGroup_);this.deleteIconBorder_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{"class":"blocklyDeleteIconShape",r:"7",cx:"7.5",cy:"7.5"},this.deleteGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE, -{x1:"5",y1:"10",x2:"10",y2:"5",stroke:"#fff","stroke-width":"2"},this.deleteGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE,{x1:"5",y1:"5",x2:"10",y2:"10",stroke:"#fff","stroke-width":"2"},this.deleteGroup_)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.resizeMouseDown_=function(a){this.unbindDragEvents_();(0,module$exports$Blockly$browserEvents.isRightButton)(a)||(this.workspace.startDrag(a,new module$exports$Blockly$utils$Coordinate.Coordinate(this.workspace.RTL?-this.width_:this.width_,this.height_)),this.onMouseUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mouseup",this,this.resizeMouseUp_),this.onMouseMoveWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document, -"mousemove",this,this.resizeMouseMove_),this.workspace.hideChaff());a.stopPropagation()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.deleteMouseDown_=function(a){(0,module$exports$Blockly$utils$dom.addClass)(this.deleteIconBorder_,"blocklyDeleteIconHighlighted");a.stopPropagation()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.deleteMouseOut_=function(a){(0,module$exports$Blockly$utils$dom.removeClass)(this.deleteIconBorder_,"blocklyDeleteIconHighlighted")}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.deleteMouseUp_=function(a){this.dispose();a.stopPropagation()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.unbindDragEvents_=function(){this.onMouseUpWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onMouseUpWrapper_),this.onMouseUpWrapper_=null);this.onMouseMoveWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onMouseMoveWrapper_),this.onMouseMoveWrapper_=null)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.resizeMouseUp_=function(a){(0,module$exports$Blockly$Touch.clearTouchIdentifier)();this.unbindDragEvents_()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.resizeMouseMove_=function(a){this.autoLayout_=!1;a=this.workspace.moveDrag(a);this.setSize_(this.RTL?-a.x:a.x,a.y)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.resizeComment_=function(){var a=this.getHeightWidth(),b=module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET,c=2*module$contents$Blockly$WorkspaceCommentSvg_TEXTAREA_OFFSET;this.foreignObject_.setAttribute("width",a.width);this.foreignObject_.setAttribute("height",a.height-b);this.RTL&&this.foreignObject_.setAttribute("x",-a.width);this.textarea_.style.width=a.width-c+"px";this.textarea_.style.height=a.height- -c-b+"px"}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setSize_=function(a,b){a=Math.max(a,45);b=Math.max(b,20+module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET);this.width_=a;this.height_=b;this.svgRect_.setAttribute("width",a);this.svgRect_.setAttribute("height",b);this.svgRectTarget_.setAttribute("width",a);this.svgRectTarget_.setAttribute("height",b);this.svgHandleTarget_.setAttribute("width",a);this.svgHandleTarget_.setAttribute("height",module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET);this.RTL&& -(this.svgRect_.setAttribute("transform","scale(-1 1)"),this.svgRectTarget_.setAttribute("transform","scale(-1 1)"));this.resizeGroup_&&(this.RTL?(this.resizeGroup_.setAttribute("transform","translate("+(-a+module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+","+(b-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+") scale(-1 1)"),this.deleteGroup_.setAttribute("transform","translate("+(-a+module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+","+-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE+ -") scale(-1 1)")):(this.resizeGroup_.setAttribute("transform","translate("+(a-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+","+(b-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+")"),this.deleteGroup_.setAttribute("transform","translate("+(a-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+","+-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE+")")));this.resizeComment_()}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.disposeInternal_=function(){this.svgHandleTarget_=this.svgRectTarget_=this.foreignObject_=this.textarea_=null;this.disposed_=!0}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setFocus=function(){var a=this;this.focused_=!0;setTimeout(function(){a.disposed_||(a.textarea_.focus(),a.addFocus(),(0,module$exports$Blockly$utils$dom.addClass)(a.svgRectTarget_,"blocklyCommentTargetFocused"),(0,module$exports$Blockly$utils$dom.addClass)(a.svgHandleTarget_,"blocklyCommentHandleTargetFocused"))},0)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.blurFocus=function(){var a=this;this.focused_=!1;setTimeout(function(){a.disposed_||(a.textarea_.blur(),a.removeFocus(),(0,module$exports$Blockly$utils$dom.removeClass)(a.svgRectTarget_,"blocklyCommentTargetFocused"),(0,module$exports$Blockly$utils$dom.removeClass)(a.svgHandleTarget_,"blocklyCommentHandleTargetFocused"))},0)}; -module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.fromXmlRendered=function(a,b,c){(0,module$exports$Blockly$Events$utils.disable)();try{var d=module$exports$Blockly$WorkspaceComment.WorkspaceComment.parseAttributes(a);var e=new module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg(b,d.content,d.h,d.w,d.id);b.rendered&&(e.initSvg(!0),e.render());if(!isNaN(d.x)&&!isNaN(d.y))if(b.RTL){var f=c||b.getWidth();e.moveBy(f-d.x,d.y)}else e.moveBy(d.x,d.y)}finally{(0,module$exports$Blockly$Events$utils.enable)()}module$exports$Blockly$WorkspaceComment.WorkspaceComment.fireCreateEvent(e); -return e};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.DEFAULT_SIZE=100;module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET=10;(0,module$exports$Blockly$Css.register)("\n.blocklyCommentForeignObject {\n position: relative;\n z-index: 0;\n}\n\n.blocklyCommentRect {\n fill: #E7DE8E;\n stroke: #bcA903;\n stroke-width: 1px;\n}\n\n.blocklyCommentTarget {\n fill: transparent;\n stroke: #bcA903;\n}\n\n.blocklyCommentTargetFocused {\n fill: none;\n}\n\n.blocklyCommentHandleTarget {\n fill: none;\n}\n\n.blocklyCommentHandleTargetFocused {\n fill: transparent;\n}\n\n.blocklyFocused>.blocklyCommentRect {\n fill: #B9B272;\n stroke: #B9B272;\n}\n\n.blocklySelected>.blocklyCommentTarget {\n stroke: #fc3;\n stroke-width: 3px;\n}\n\n.blocklyCommentDeleteIcon {\n cursor: pointer;\n fill: #000;\n display: none;\n}\n\n.blocklySelected > .blocklyCommentDeleteIcon {\n display: block;\n}\n\n.blocklyDeleteIconShape {\n fill: #000;\n stroke: #000;\n stroke-width: 1px;\n}\n\n.blocklyDeleteIconShape.blocklyDeleteIconHighlighted {\n stroke: #fc3;\n}\n");var module$exports$Blockly$Trashcan={Trashcan:function(a){module$exports$Blockly$DeleteArea.DeleteArea.call(this);this.workspace_=a;this.id="trashcan";this.contents_=[];this.flyout=null;0>=this.workspace_.options.maxTrashcanContents||(this.isLidOpen=!1,this.minOpenness_=0,this.svgLid_=this.svgGroup_=null,this.top_=this.left_=this.lidOpen_=this.lidTask_=0,this.initialized_=!1,a=new module$exports$Blockly$Options.Options({scrollbars:!0,parentWorkspace:this.workspace_,rtl:this.workspace_.RTL,oneBasedIndex:this.workspace_.options.oneBasedIndex, -renderer:this.workspace_.options.renderer,rendererOverrides:this.workspace_.options.rendererOverrides,move:{scrollbars:!0}}),this.workspace_.horizontalLayout?(a.toolboxPosition=this.workspace_.toolboxPosition===module$exports$Blockly$utils$toolbox.Position.TOP?module$exports$Blockly$utils$toolbox.Position.BOTTOM:module$exports$Blockly$utils$toolbox.Position.TOP,this.flyout=new ((0,module$exports$Blockly$registry.getClassFromOptions)(module$exports$Blockly$registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, -this.workspace_.options,!0))(a)):(a.toolboxPosition=this.workspace_.toolboxPosition===module$exports$Blockly$utils$toolbox.Position.RIGHT?module$exports$Blockly$utils$toolbox.Position.LEFT:module$exports$Blockly$utils$toolbox.Position.RIGHT,this.flyout=new ((0,module$exports$Blockly$registry.getClassFromOptions)(module$exports$Blockly$registry.Type.FLYOUTS_VERTICAL_TOOLBOX,this.workspace_.options,!0))(a)),this.workspace_.addChangeListener(this.onDelete_.bind(this)))}}; -$.$jscomp.inherits(module$exports$Blockly$Trashcan.Trashcan,module$exports$Blockly$DeleteArea.DeleteArea); -module$exports$Blockly$Trashcan.Trashcan.prototype.createDom=function(){this.svgGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":"blocklyTrash"},null);var a=String(Math.random()).substring(2);var b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CLIPPATH,{id:"blocklyTrashBodyClipPath"+a},this.svgGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT, -{width:module$contents$Blockly$Trashcan_WIDTH,height:module$contents$Blockly$Trashcan_BODY_HEIGHT,y:module$contents$Blockly$Trashcan_LID_HEIGHT},b);var c=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.IMAGE,{width:module$exports$Blockly$sprite.SPRITE.width,x:-module$contents$Blockly$Trashcan_SPRITE_LEFT,height:module$exports$Blockly$sprite.SPRITE.height,y:-module$contents$Blockly$Trashcan_SPRITE_TOP,"clip-path":"url(#blocklyTrashBodyClipPath"+a+")"},this.svgGroup_); -c.setAttributeNS(module$exports$Blockly$utils$dom.XLINK_NS,"xlink:href",this.workspace_.options.pathToMedia+module$exports$Blockly$sprite.SPRITE.url);b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CLIPPATH,{id:"blocklyTrashLidClipPath"+a},this.svgGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{width:module$contents$Blockly$Trashcan_WIDTH,height:module$contents$Blockly$Trashcan_LID_HEIGHT},b);this.svgLid_= -(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.IMAGE,{width:module$exports$Blockly$sprite.SPRITE.width,x:-module$contents$Blockly$Trashcan_SPRITE_LEFT,height:module$exports$Blockly$sprite.SPRITE.height,y:-module$contents$Blockly$Trashcan_SPRITE_TOP,"clip-path":"url(#blocklyTrashLidClipPath"+a+")"},this.svgGroup_);this.svgLid_.setAttributeNS(module$exports$Blockly$utils$dom.XLINK_NS,"xlink:href",this.workspace_.options.pathToMedia+module$exports$Blockly$sprite.SPRITE.url); -(0,module$exports$Blockly$browserEvents.bind)(this.svgGroup_,"mousedown",this,this.blockMouseDownWhenOpenable_);(0,module$exports$Blockly$browserEvents.bind)(this.svgGroup_,"mouseup",this,this.click);(0,module$exports$Blockly$browserEvents.bind)(c,"mouseover",this,this.mouseOver_);(0,module$exports$Blockly$browserEvents.bind)(c,"mouseout",this,this.mouseOut_);this.animateLid_();return this.svgGroup_}; -module$exports$Blockly$Trashcan.Trashcan.prototype.init=function(){0this.minOpenness_&&1>this.lidOpen_&&(this.lidTask_=setTimeout(this.animateLid_.bind(this),module$contents$Blockly$Trashcan_ANIMATION_LENGTH/a))}; -module$exports$Blockly$Trashcan.Trashcan.prototype.setLidAngle_=function(a){var b=this.workspace_.toolboxPosition===module$exports$Blockly$utils$toolbox.Position.RIGHT||this.workspace_.horizontalLayout&&this.workspace_.RTL;this.svgLid_.setAttribute("transform","rotate("+(b?-a:a)+","+(b?4:module$contents$Blockly$Trashcan_WIDTH-4)+","+(module$contents$Blockly$Trashcan_LID_HEIGHT-2)+")")}; -module$exports$Blockly$Trashcan.Trashcan.prototype.setMinOpenness_=function(a){this.minOpenness_=a;this.isLidOpen||this.setLidAngle_(a*module$contents$Blockly$Trashcan_MAX_LID_ANGLE)};module$exports$Blockly$Trashcan.Trashcan.prototype.closeLid=function(){this.setLidOpen(!1)};module$exports$Blockly$Trashcan.Trashcan.prototype.click=function(){this.hasContents_()&&this.openFlyout()}; -module$exports$Blockly$Trashcan.Trashcan.prototype.fireUiEvent_=function(a){a=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.TRASHCAN_OPEN))(a,this.workspace_.id);(0,module$exports$Blockly$Events$utils.fire)(a)};module$exports$Blockly$Trashcan.Trashcan.prototype.blockMouseDownWhenOpenable_=function(a){!this.contentsIsOpen()&&this.hasContents_()&&a.stopPropagation()}; -module$exports$Blockly$Trashcan.Trashcan.prototype.mouseOver_=function(){this.hasContents_()&&this.setLidOpen(!0)};module$exports$Blockly$Trashcan.Trashcan.prototype.mouseOut_=function(){this.setLidOpen(!1)}; -module$exports$Blockly$Trashcan.Trashcan.prototype.onDelete_=function(a){if(!(0>=this.workspace_.options.maxTrashcanContents||a.type!==module$exports$Blockly$Events$utils.DELETE||a.type!==module$exports$Blockly$Events$utils.DELETE||a.wasShadow)&&(a=this.cleanBlockJson_(a.oldJson),-1===this.contents_.indexOf(a))){for(this.contents_.unshift(a);this.contents_.length>this.workspace_.options.maxTrashcanContents;)this.contents_.pop();this.setMinOpenness_(module$contents$Blockly$Trashcan_HAS_BLOCKS_LID_ANGLE)}}; -module$exports$Blockly$Trashcan.Trashcan.prototype.cleanBlockJson_=function(a){function b(c){if(c){delete c.id;delete c.x;delete c.y;delete c.enabled;if(c.icons&&c.icons.comment){var d=c.icons.comment;delete d.height;delete d.width;delete d.pinned}d=c.inputs;for(var e in d){var f=d[e];b(f.block);b(f.shadow)}c.next&&(c=c.next,b(c.block),b(c.shadow))}}a=JSON.parse(JSON.stringify(a));b(a);a.kind="BLOCK";return JSON.stringify(a)}; -var module$contents$Blockly$Trashcan_WIDTH=47,module$contents$Blockly$Trashcan_BODY_HEIGHT=44,module$contents$Blockly$Trashcan_LID_HEIGHT=16,module$contents$Blockly$Trashcan_MARGIN_VERTICAL=20,module$contents$Blockly$Trashcan_MARGIN_HORIZONTAL=20,module$contents$Blockly$Trashcan_MARGIN_HOTSPOT=10,module$contents$Blockly$Trashcan_SPRITE_LEFT=0,module$contents$Blockly$Trashcan_SPRITE_TOP=32,module$contents$Blockly$Trashcan_HAS_BLOCKS_LID_ANGLE=.1,module$contents$Blockly$Trashcan_ANIMATION_LENGTH=80, -module$contents$Blockly$Trashcan_ANIMATION_FRAMES=4,module$contents$Blockly$Trashcan_OPACITY_MIN=.4,module$contents$Blockly$Trashcan_OPACITY_MAX=.8,module$contents$Blockly$Trashcan_MAX_LID_ANGLE=45;var module$exports$Blockly$FlyoutButton={FlyoutButton:function(a,b,c,d){this.workspace_=a;this.targetWorkspace_=b;this.text_=c.text;this.position_=new module$exports$Blockly$utils$Coordinate.Coordinate(0,0);this.isLabel_=d;this.callbackKey_=c.callbackKey||c.callbackkey;this.cssClass_=c["web-class"]||null;this.onMouseUpWrapper_=null;this.info=c;this.height=this.width=0;this.svgText_=this.svgGroup_=null}}; -module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.createDom=function(){var a=this.isLabel_?"blocklyFlyoutLabel":"blocklyFlyoutButton";this.cssClass_&&(a+=" "+this.cssClass_);this.svgGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":a},this.workspace_.getCanvas());var b;this.isLabel_||(b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyFlyoutButtonShadow",rx:4,ry:4,x:1, -y:1},this.svgGroup_));a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":this.isLabel_?"blocklyFlyoutLabelBackground":"blocklyFlyoutButtonBackground",rx:4,ry:4},this.svgGroup_);var c=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.TEXT,{"class":this.isLabel_?"blocklyFlyoutLabelText":"blocklyText",x:0,y:0,"text-anchor":"middle"},this.svgGroup_),d=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(this.text_); -this.workspace_.RTL&&(d+="\u200f");c.textContent=d;this.isLabel_&&(this.svgText_=c,this.workspace_.getThemeManager().subscribe(this.svgText_,"flyoutForegroundColour","fill"));var e=(0,module$exports$Blockly$utils$style.getComputedStyle)(c,"fontSize"),f=(0,module$exports$Blockly$utils$style.getComputedStyle)(c,"fontWeight"),g=(0,module$exports$Blockly$utils$style.getComputedStyle)(c,"fontFamily");this.width=(0,module$exports$Blockly$utils$dom.getFastTextWidthWithSizeString)(c,e,f,g);d=(0,module$exports$Blockly$utils$dom.measureFontMetrics)(d, -e,f,g);this.height=d.height;this.isLabel_||(this.width+=2*module$exports$Blockly$FlyoutButton.FlyoutButton.TEXT_MARGIN_X,this.height+=2*module$exports$Blockly$FlyoutButton.FlyoutButton.TEXT_MARGIN_Y,b.setAttribute("width",this.width),b.setAttribute("height",this.height));a.setAttribute("width",this.width);a.setAttribute("height",this.height);c.setAttribute("x",this.width/2);c.setAttribute("y",this.height/2-d.height/2+d.baseline);this.updateTransform_();this.onMouseUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(this.svgGroup_, -"mouseup",this,this.onMouseUp_);return this.svgGroup_};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.show=function(){this.updateTransform_();this.svgGroup_.setAttribute("display","block")};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.updateTransform_=function(){this.svgGroup_.setAttribute("transform","translate("+this.position_.x+","+this.position_.y+")")}; -module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.moveTo=function(a,b){this.position_.x=a;this.position_.y=b;this.updateTransform_()};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.isLabel=function(){return this.isLabel_};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.getPosition=function(){return this.position_};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.getButtonText=function(){return this.text_}; -module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.getTargetWorkspace=function(){return this.targetWorkspace_};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.dispose=function(){this.onMouseUpWrapper_&&(0,module$exports$Blockly$browserEvents.unbind)(this.onMouseUpWrapper_);this.svgGroup_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.svgGroup_);this.svgText_&&this.workspace_.getThemeManager().unsubscribe(this.svgText_)}; -module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.onMouseUp_=function(a){(a=this.targetWorkspace_.getGesture(a))&&a.cancel();this.isLabel_&&this.callbackKey_?console.warn("Labels should not have callbacks. Label text: "+this.text_):this.isLabel_||this.callbackKey_&&this.targetWorkspace_.getButtonCallback(this.callbackKey_)?this.isLabel_||this.targetWorkspace_.getButtonCallback(this.callbackKey_)(this):console.warn("Buttons should have callbacks. Button text: "+this.text_)}; -module$exports$Blockly$FlyoutButton.FlyoutButton.TEXT_MARGIN_X=5;module$exports$Blockly$FlyoutButton.FlyoutButton.TEXT_MARGIN_Y=2;(0,module$exports$Blockly$Css.register)("\n.blocklyFlyoutButton {\n fill: #888;\n cursor: default;\n}\n\n.blocklyFlyoutButtonShadow {\n fill: #666;\n}\n\n.blocklyFlyoutButton:hover {\n fill: #aaa;\n}\n\n.blocklyFlyoutLabel {\n cursor: default;\n}\n\n.blocklyFlyoutLabelBackground {\n opacity: 0;\n}\n");var module$exports$Blockly$BlocklyOptions={BlocklyOptions:function(){}};var module$exports$Blockly$VariablesDynamic={CATEGORY_NAME:"VARIABLE_DYNAMIC",onCreateVariableButtonClick_String:function(a){(0,$.module$exports$Blockly$Variables.createVariableButtonHandler)(a.getTargetWorkspace(),void 0,"String")},onCreateVariableButtonClick_Number:function(a){(0,$.module$exports$Blockly$Variables.createVariableButtonHandler)(a.getTargetWorkspace(),void 0,"Number")},onCreateVariableButtonClick_Colour:function(a){(0,$.module$exports$Blockly$Variables.createVariableButtonHandler)(a.getTargetWorkspace(), -void 0,"Colour")},flyoutCategory:function(a){var b=[],c=document.createElement("button");c.setAttribute("text",$.module$exports$Blockly$Msg.Msg.NEW_STRING_VARIABLE);c.setAttribute("callbackKey","CREATE_VARIABLE_STRING");b.push(c);c=document.createElement("button");c.setAttribute("text",$.module$exports$Blockly$Msg.Msg.NEW_NUMBER_VARIABLE);c.setAttribute("callbackKey","CREATE_VARIABLE_NUMBER");b.push(c);c=document.createElement("button");c.setAttribute("text",$.module$exports$Blockly$Msg.Msg.NEW_COLOUR_VARIABLE); -c.setAttribute("callbackKey","CREATE_VARIABLE_COLOUR");b.push(c);a.registerButtonCallback("CREATE_VARIABLE_STRING",module$exports$Blockly$VariablesDynamic.onCreateVariableButtonClick_String);a.registerButtonCallback("CREATE_VARIABLE_NUMBER",module$exports$Blockly$VariablesDynamic.onCreateVariableButtonClick_Number);a.registerButtonCallback("CREATE_VARIABLE_COLOUR",module$exports$Blockly$VariablesDynamic.onCreateVariableButtonClick_Colour);a=(0,module$exports$Blockly$VariablesDynamic.flyoutCategoryBlocks)(a); -return b=b.concat(a)},flyoutCategoryBlocks:function(a){a=a.getAllVariables();var b=[];if(0>>0,$.$jscomp.propertyToPolyfillSymbol[e]= +$.$jscomp.IS_SYMBOL_NATIVE?$.$jscomp.global.Symbol(e):$.$jscomp.POLYFILL_PREFIX+c+"$"+e),$.$jscomp.defineProperty(d,$.$jscomp.propertyToPolyfillSymbol[e],{configurable:!0,writable:!0,value:b})))};$.$jscomp.assign=$.$jscomp.TRUST_ES6_POLYFILLS&&"function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c=f}},"es6","es3");$.$jscomp.initSymbol=function(){}; +$.$jscomp.polyfill("Symbol",function(a){if(a)return a;var b=function(f,g){this.$jscomp$symbol$id_=f;$.$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:g})};b.prototype.toString=function(){return this.$jscomp$symbol$id_};var c="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",d=0,e=function(f){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new b(c+(f||"")+"_"+d++,f)};return e},"es6","es3"); +$.$jscomp.polyfill("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;cc&&(c=Math.max(0,e+c));if(null==d||d>e)d=e;d=Number(d);0>d&&(d=Math.max(0,e+d));for(c=Number(c||0);c>>/g,a),module$exports$Blockly$Css.content="",a=document.createElement("style"),a.id="blockly-common-style",b=document.createTextNode(b),a.appendChild(b),document.head.insertBefore(a,document.head.firstChild)))};module$exports$Blockly$Css.content='\n.blocklySvg {\n background-color: #fff;\n outline: none;\n overflow: hidden; /* IE overflows by default. */\n position: absolute;\n display: block;\n}\n\n.blocklyWidgetDiv {\n display: none;\n position: absolute;\n z-index: 99999; /* big value for bootstrap3 compatibility */\n}\n\n.injectionDiv {\n height: 100%;\n position: relative;\n overflow: hidden; /* So blocks in drag surface disappear at edges */\n touch-action: none;\n}\n\n.blocklyNonSelectable {\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n}\n\n.blocklyWsDragSurface {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n/* Added as a separate rule with multiple classes to make it more specific\n than a bootstrap rule that selects svg:root. See issue #1275 for context.\n*/\n.blocklyWsDragSurface.blocklyOverflowVisible {\n overflow: visible;\n}\n\n.blocklyBlockDragSurface {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: visible !important;\n z-index: 50; /* Display below toolbox, but above everything else. */\n}\n\n.blocklyBlockCanvas.blocklyCanvasTransitioning,\n.blocklyBubbleCanvas.blocklyCanvasTransitioning {\n transition: transform .5s;\n}\n\n.blocklyTooltipDiv {\n background-color: #ffffc7;\n border: 1px solid #ddc;\n box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);\n color: #000;\n display: none;\n font: 9pt sans-serif;\n opacity: .9;\n padding: 2px;\n position: absolute;\n z-index: 100000; /* big value for bootstrap3 compatibility */\n}\n\n.blocklyDropDownDiv {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 1000;\n display: none;\n border: 1px solid;\n border-color: #dadce0;\n background-color: #fff;\n border-radius: 2px;\n padding: 4px;\n box-shadow: 0 0 3px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownDiv.blocklyFocused {\n box-shadow: 0 0 6px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownContent {\n max-height: 300px; // @todo: spec for maximum height.\n overflow: auto;\n overflow-x: hidden;\n position: relative;\n}\n\n.blocklyDropDownArrow {\n position: absolute;\n left: 0;\n top: 0;\n width: 16px;\n height: 16px;\n z-index: -1;\n background-color: inherit;\n border-color: inherit;\n}\n\n.blocklyDropDownButton {\n display: inline-block;\n float: left;\n padding: 0;\n margin: 4px;\n border-radius: 4px;\n outline: none;\n border: 1px solid;\n transition: box-shadow .1s;\n cursor: pointer;\n}\n\n.blocklyArrowTop {\n border-top: 1px solid;\n border-left: 1px solid;\n border-top-left-radius: 4px;\n border-color: inherit;\n}\n\n.blocklyArrowBottom {\n border-bottom: 1px solid;\n border-right: 1px solid;\n border-bottom-right-radius: 4px;\n border-color: inherit;\n}\n\n.blocklyResizeSE {\n cursor: se-resize;\n fill: #aaa;\n}\n\n.blocklyResizeSW {\n cursor: sw-resize;\n fill: #aaa;\n}\n\n.blocklyResizeLine {\n stroke: #515A5A;\n stroke-width: 1;\n}\n\n.blocklyHighlightedConnectionPath {\n fill: none;\n stroke: #fc3;\n stroke-width: 4px;\n}\n\n.blocklyPathLight {\n fill: none;\n stroke-linecap: round;\n stroke-width: 1;\n}\n\n.blocklySelected>.blocklyPathLight {\n display: none;\n}\n\n.blocklyDraggable {\n /* backup for browsers (e.g. IE11) that don\'t support grab */\n cursor: url("<<>>/handopen.cur"), auto;\n cursor: grab;\n cursor: -webkit-grab;\n}\n\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n.blocklyDragging {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n /* Changes cursor on mouse down. Not effective in Firefox because of\n https://bugzilla.mozilla.org/show_bug.cgi?id=771241 */\n.blocklyDraggable:active {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n/* Change the cursor on the whole drag surface in case the mouse gets\n ahead of block during a drag. This way the cursor is still a closed hand.\n */\n.blocklyBlockDragSurface .blocklyDraggable {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n.blocklyDragging.blocklyDraggingDelete {\n cursor: url("<<>>/handdelete.cur"), auto;\n}\n\n.blocklyDragging>.blocklyPath,\n.blocklyDragging>.blocklyPathLight {\n fill-opacity: .8;\n stroke-opacity: .8;\n}\n\n.blocklyDragging>.blocklyPathDark {\n display: none;\n}\n\n.blocklyDisabled>.blocklyPath {\n fill-opacity: .5;\n stroke-opacity: .5;\n}\n\n.blocklyDisabled>.blocklyPathLight,\n.blocklyDisabled>.blocklyPathDark {\n display: none;\n}\n\n.blocklyInsertionMarker>.blocklyPath,\n.blocklyInsertionMarker>.blocklyPathLight,\n.blocklyInsertionMarker>.blocklyPathDark {\n fill-opacity: .2;\n stroke: none;\n}\n\n.blocklyMultilineText {\n font-family: monospace;\n}\n\n.blocklyNonEditableText>text {\n pointer-events: none;\n}\n\n.blocklyFlyout {\n position: absolute;\n z-index: 20;\n}\n\n.blocklyText text {\n cursor: default;\n}\n\n/*\n Don\'t allow users to select text. It gets annoying when trying to\n drag a block and selected text moves instead.\n*/\n.blocklySvg text,\n.blocklyBlockDragSurface text {\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n cursor: inherit;\n}\n\n.blocklyHidden {\n display: none;\n}\n\n.blocklyFieldDropdown:not(.blocklyHidden) {\n display: block;\n}\n\n.blocklyIconGroup {\n cursor: default;\n}\n\n.blocklyIconGroup:not(:hover),\n.blocklyIconGroupReadonly {\n opacity: .6;\n}\n\n.blocklyIconShape {\n fill: #00f;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n.blocklyIconSymbol {\n fill: #fff;\n}\n\n.blocklyMinimalBody {\n margin: 0;\n padding: 0;\n}\n\n.blocklyHtmlInput {\n border: none;\n border-radius: 4px;\n height: 100%;\n margin: 0;\n outline: none;\n padding: 0;\n width: 100%;\n text-align: center;\n display: block;\n box-sizing: border-box;\n}\n\n/* Edge and IE introduce a close icon when the input value is longer than a\n certain length. This affects our sizing calculations of the text input.\n Hiding the close icon to avoid that. */\n.blocklyHtmlInput::-ms-clear {\n display: none;\n}\n\n.blocklyMainBackground {\n stroke-width: 1;\n stroke: #c6c6c6; /* Equates to #ddd due to border being off-pixel. */\n}\n\n.blocklyMutatorBackground {\n fill: #fff;\n stroke: #ddd;\n stroke-width: 1;\n}\n\n.blocklyFlyoutBackground {\n fill: #ddd;\n fill-opacity: .8;\n}\n\n.blocklyMainWorkspaceScrollbar {\n z-index: 20;\n}\n\n.blocklyFlyoutScrollbar {\n z-index: 30;\n}\n\n.blocklyScrollbarHorizontal,\n.blocklyScrollbarVertical {\n position: absolute;\n outline: none;\n}\n\n.blocklyScrollbarBackground {\n opacity: 0;\n}\n\n.blocklyScrollbarHandle {\n fill: #ccc;\n}\n\n.blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,\n.blocklyScrollbarHandle:hover {\n fill: #bbb;\n}\n\n/* Darken flyout scrollbars due to being on a grey background. */\n/* By contrast, workspace scrollbars are on a white background. */\n.blocklyFlyout .blocklyScrollbarHandle {\n fill: #bbb;\n}\n\n.blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,\n.blocklyFlyout .blocklyScrollbarHandle:hover {\n fill: #aaa;\n}\n\n.blocklyInvalidInput {\n background: #faa;\n}\n\n.blocklyVerticalMarker {\n stroke-width: 3px;\n fill: rgba(255,255,255,.5);\n pointer-events: none;\n}\n\n.blocklyComputeCanvas {\n position: absolute;\n width: 0;\n height: 0;\n}\n\n.blocklyNoPointerEvents {\n pointer-events: none;\n}\n\n.blocklyContextMenu {\n border-radius: 4px;\n max-height: 100%;\n}\n\n.blocklyDropdownMenu {\n border-radius: 2px;\n padding: 0 !important;\n}\n\n.blocklyDropdownMenu .blocklyMenuItem {\n /* 28px on the left for icon or checkbox. */\n padding-left: 28px;\n}\n\n/* BiDi override for the resting state. */\n.blocklyDropdownMenu .blocklyMenuItemRtl {\n /* Flip left/right padding for BiDi. */\n padding-left: 5px;\n padding-right: 28px;\n}\n\n.blocklyWidgetDiv .blocklyMenu {\n background: #fff;\n border: 1px solid transparent;\n box-shadow: 0 0 3px 1px rgba(0,0,0,.3);\n font: normal 13px Arial, sans-serif;\n margin: 0;\n outline: none;\n padding: 4px 0;\n position: absolute;\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 100%;\n z-index: 20000; /* Arbitrary, but some apps depend on it... */\n}\n\n.blocklyWidgetDiv .blocklyMenu.blocklyFocused {\n box-shadow: 0 0 6px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownDiv .blocklyMenu {\n background: inherit; /* Compatibility with gapi, reset from goog-menu */\n border: inherit; /* Compatibility with gapi, reset from goog-menu */\n font: normal 13px "Helvetica Neue", Helvetica, sans-serif;\n outline: none;\n position: relative; /* Compatibility with gapi, reset from goog-menu */\n z-index: 20000; /* Arbitrary, but some apps depend on it... */\n}\n\n/* State: resting. */\n.blocklyMenuItem {\n border: none;\n color: #000;\n cursor: pointer;\n list-style: none;\n margin: 0;\n /* 7em on the right for shortcut. */\n min-width: 7em;\n padding: 6px 15px;\n white-space: nowrap;\n}\n\n/* State: disabled. */\n.blocklyMenuItemDisabled {\n color: #ccc;\n cursor: inherit;\n}\n\n/* State: hover. */\n.blocklyMenuItemHighlight {\n background-color: rgba(0,0,0,.1);\n}\n\n/* State: selected/checked. */\n.blocklyMenuItemCheckbox {\n height: 16px;\n position: absolute;\n width: 16px;\n}\n\n.blocklyMenuItemSelected .blocklyMenuItemCheckbox {\n background: url(<<>>/sprites.png) no-repeat -48px -16px;\n float: left;\n margin-left: -24px;\n position: static; /* Scroll with the menu. */\n}\n\n.blocklyMenuItemRtl .blocklyMenuItemCheckbox {\n float: right;\n margin-right: -24px;\n}\n';var module$contents$Blockly$utils$string_wrapLine,module$contents$Blockly$utils$string_wrapScore,module$contents$Blockly$utils$string_wrapMutate,module$contents$Blockly$utils$string_wrapToText; +$.module$exports$Blockly$utils$string={startsWith:function(a,b){return 0===a.lastIndexOf(b,0)},shortestStringLength:function(a){return a.length?a.reduce(function(b,c){return b.lengthb&&(b=c[d].length);var e=-Infinity,f=1;do{d=e;var g=a;a=[];e=c.length/f;for(var h=1,k=0;kd);return g}; +module$contents$Blockly$utils$string_wrapScore=function(a,b,c){for(var d=[0],e=[],f=0;fd&&(d=h,e=g)}return e?module$contents$Blockly$utils$string_wrapMutate(a,e,c):b};module$contents$Blockly$utils$string_wrapToText=function(a,b){for(var c=[],d=0;dmodule$exports$Blockly$Tooltip.RADIUS_OK&&(0,module$exports$Blockly$Tooltip.hide)()}else module$contents$Blockly$Tooltip_poisonedElement!==module$contents$Blockly$Tooltip_element&&(clearTimeout(module$contents$Blockly$Tooltip_showPid),module$contents$Blockly$Tooltip_lastX=a.pageX,module$contents$Blockly$Tooltip_lastY=a.pageY,module$contents$Blockly$Tooltip_showPid=setTimeout(module$contents$Blockly$Tooltip_show, +module$exports$Blockly$Tooltip.HOVER_MS))};module$exports$Blockly$Tooltip.dispose=function(){module$contents$Blockly$Tooltip_poisonedElement=module$contents$Blockly$Tooltip_element=null;(0,module$exports$Blockly$Tooltip.hide)()};module$exports$Blockly$Tooltip.hide=function(){module$contents$Blockly$Tooltip_visible&&(module$contents$Blockly$Tooltip_visible=!1,module$contents$Blockly$Tooltip_DIV&&(module$contents$Blockly$Tooltip_DIV.style.display="none"));module$contents$Blockly$Tooltip_showPid&&clearTimeout(module$contents$Blockly$Tooltip_showPid)}; +module$exports$Blockly$Tooltip.block=function(){(0,module$exports$Blockly$Tooltip.hide)();module$contents$Blockly$Tooltip_blocked=!0};module$exports$Blockly$Tooltip.unblock=function(){module$contents$Blockly$Tooltip_blocked=!1}; +var module$contents$Blockly$Tooltip_renderContent=function(){module$contents$Blockly$Tooltip_DIV&&module$contents$Blockly$Tooltip_element&&("function"===typeof module$contents$Blockly$Tooltip_customTooltip?module$contents$Blockly$Tooltip_customTooltip(module$contents$Blockly$Tooltip_DIV,module$contents$Blockly$Tooltip_element):module$contents$Blockly$Tooltip_renderDefaultContent())},module$contents$Blockly$Tooltip_renderDefaultContent=function(){var a=(0,module$exports$Blockly$Tooltip.getTooltipOfObject)(module$contents$Blockly$Tooltip_element); +a=(0,$.module$exports$Blockly$utils$string.wrap)(a,module$exports$Blockly$Tooltip.LIMIT);a=a.split("\n");for(var b=0;bc+window.scrollY&&(e-=module$contents$Blockly$Tooltip_DIV.offsetHeight+2*module$exports$Blockly$Tooltip.OFFSET_Y);a?d=Math.max(module$exports$Blockly$Tooltip.MARGINS-window.scrollX,d):d+module$contents$Blockly$Tooltip_DIV.offsetWidth>b+window.scrollX-2*module$exports$Blockly$Tooltip.MARGINS&&(d=b-module$contents$Blockly$Tooltip_DIV.offsetWidth- +2*module$exports$Blockly$Tooltip.MARGINS);return{x:d,y:e}},module$contents$Blockly$Tooltip_show=function(){if(!module$contents$Blockly$Tooltip_blocked&&(module$contents$Blockly$Tooltip_poisonedElement=module$contents$Blockly$Tooltip_element,module$contents$Blockly$Tooltip_DIV)){module$contents$Blockly$Tooltip_DIV.textContent="";module$contents$Blockly$Tooltip_renderContent();var a=module$contents$Blockly$Tooltip_element.RTL;module$contents$Blockly$Tooltip_DIV.style.direction=a?"rtl":"ltr";module$contents$Blockly$Tooltip_DIV.style.display= +"block";module$contents$Blockly$Tooltip_visible=!0;a=module$contents$Blockly$Tooltip_getPosition(a);var b=a.y;module$contents$Blockly$Tooltip_DIV.style.left=a.x+"px";module$contents$Blockly$Tooltip_DIV.style.top=b+"px"}};var module$exports$Blockly$utils$dom={SVG_NS:"http://www.w3.org/2000/svg",HTML_NS:"http://www.w3.org/1999/xhtml",XLINK_NS:"http://www.w3.org/1999/xlink",NodeType:{ELEMENT_NODE:1,TEXT_NODE:3,COMMENT_NODE:8,DOCUMENT_POSITION_CONTAINED_BY:16}},module$contents$Blockly$utils$dom_cacheWidths=null,module$contents$Blockly$utils$dom_cacheReference=0,module$contents$Blockly$utils$dom_canvasContext=null; +module$exports$Blockly$utils$dom.createSvgElement=function(a,b,c){a=document.createElementNS(module$exports$Blockly$utils$dom.SVG_NS,String(a));for(var d in b)a.setAttribute(d,b[d]);document.body.runtimeStyle&&(a.runtimeStyle=a.currentStyle=a.style);c&&c.appendChild(a);return a};module$exports$Blockly$utils$dom.addClass=function(a,b){var c=a.getAttribute("class")||"";if(-1!==(" "+c+" ").indexOf(" "+b+" "))return!1;c&&(c+=" ");a.setAttribute("class",c+b);return!0}; +module$exports$Blockly$utils$dom.removeClasses=function(a,b){b=b.split(" ");for(var c=0;ce?module$contents$Blockly$WidgetDiv_positionInternal(a,0,c.height+e):module$contents$Blockly$WidgetDiv_positionInternal(a,e,c.height)}; +var module$contents$Blockly$WidgetDiv_calculateX=function(a,b,c,d){return d?Math.min(Math.max(b.right-c.width,a.left),a.right-c.width):Math.max(Math.min(b.left,a.right-c.width),a.left)},module$contents$Blockly$WidgetDiv_calculateY=function(a,b,c){return b.bottom+c.height>=a.bottom?b.top-c.height:b.bottom};var module$exports$Blockly$utils$aria={},module$contents$Blockly$utils$aria_ARIA_PREFIX="aria-",module$contents$Blockly$utils$aria_ROLE_ATTRIBUTE="role";module$exports$Blockly$utils$aria.Role={GRID:"grid",GRIDCELL:"gridcell",GROUP:"group",LISTBOX:"listbox",MENU:"menu",MENUITEM:"menuitem",MENUITEMCHECKBOX:"menuitemcheckbox",OPTION:"option",PRESENTATION:"presentation",ROW:"row",TREE:"tree",TREEITEM:"treeitem"}; +module$exports$Blockly$utils$aria.State={ACTIVEDESCENDANT:"activedescendant",COLCOUNT:"colcount",DISABLED:"disabled",EXPANDED:"expanded",INVALID:"invalid",LABEL:"label",LABELLEDBY:"labelledby",LEVEL:"level",ORIENTATION:"orientation",POSINSET:"posinset",ROWCOUNT:"rowcount",SELECTED:"selected",SETSIZE:"setsize",VALUEMAX:"valuemax",VALUEMIN:"valuemin"};module$exports$Blockly$utils$aria.setRole=function(a,b){a.setAttribute(module$contents$Blockly$utils$aria_ROLE_ATTRIBUTE,b)}; +module$exports$Blockly$utils$aria.setState=function(a,b,c){Array.isArray(c)&&(c=c.join(" "));a.setAttribute(module$contents$Blockly$utils$aria_ARIA_PREFIX+b,c)};var module$exports$Blockly$utils$idGenerator={TEST_ONLY:{}},module$contents$Blockly$utils$idGenerator_nextId=0;module$exports$Blockly$utils$idGenerator.getNextUniqueId=function(){return"blockly-"+(module$contents$Blockly$utils$idGenerator_nextId++).toString(36)};var module$contents$Blockly$utils$idGenerator_soup="!#$%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; +module$exports$Blockly$utils$idGenerator.TEST_ONLY.genUid=function(){for(var a=module$contents$Blockly$utils$idGenerator_soup.length,b=[],c=0;20>c;c++)b[c]=module$contents$Blockly$utils$idGenerator_soup.charAt(Math.random()*a);return b.join("")};module$exports$Blockly$utils$idGenerator.genUid=function(){return module$exports$Blockly$utils$idGenerator.TEST_ONLY.genUid()};var module$exports$Blockly$registry={},module$contents$Blockly$registry_typeMap=Object.create(null);module$exports$Blockly$registry.TEST_ONLY={typeMap:module$contents$Blockly$registry_typeMap};var module$contents$Blockly$registry_nameMap=Object.create(null);module$exports$Blockly$registry.DEFAULT="default";module$exports$Blockly$registry.Type=function(a){this.name_=a};module$exports$Blockly$registry.Type.prototype.toString=function(){return this.name_}; +module$exports$Blockly$registry.Type.CONNECTION_CHECKER=new module$exports$Blockly$registry.Type("connectionChecker");module$exports$Blockly$registry.Type.CURSOR=new module$exports$Blockly$registry.Type("cursor");module$exports$Blockly$registry.Type.EVENT=new module$exports$Blockly$registry.Type("event");module$exports$Blockly$registry.Type.FIELD=new module$exports$Blockly$registry.Type("field");module$exports$Blockly$registry.Type.RENDERER=new module$exports$Blockly$registry.Type("renderer"); +module$exports$Blockly$registry.Type.TOOLBOX=new module$exports$Blockly$registry.Type("toolbox");module$exports$Blockly$registry.Type.THEME=new module$exports$Blockly$registry.Type("theme");module$exports$Blockly$registry.Type.TOOLBOX_ITEM=new module$exports$Blockly$registry.Type("toolboxItem");module$exports$Blockly$registry.Type.FLYOUTS_VERTICAL_TOOLBOX=new module$exports$Blockly$registry.Type("flyoutsVerticalToolbox");module$exports$Blockly$registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX=new module$exports$Blockly$registry.Type("flyoutsHorizontalToolbox"); +module$exports$Blockly$registry.Type.METRICS_MANAGER=new module$exports$Blockly$registry.Type("metricsManager");module$exports$Blockly$registry.Type.BLOCK_DRAGGER=new module$exports$Blockly$registry.Type("blockDragger");module$exports$Blockly$registry.Type.SERIALIZER=new module$exports$Blockly$registry.Type("serializer"); +module$exports$Blockly$registry.register=function(a,b,c,d){if(!(a instanceof module$exports$Blockly$registry.Type)&&"string"!==typeof a||""===String(a).trim())throw Error('Invalid type "'+a+'". The type must be a non-empty string or a Blockly.registry.Type.');a=String(a).toLowerCase();if("string"!==typeof b||""===b.trim())throw Error('Invalid name "'+b+'". The name must be a non-empty string.');var e=b.toLowerCase();if(!c)throw Error("Can not register a null value");var f=module$contents$Blockly$registry_typeMap[a], +g=module$contents$Blockly$registry_nameMap[a];f||(f=module$contents$Blockly$registry_typeMap[a]=Object.create(null),g=module$contents$Blockly$registry_nameMap[a]=Object.create(null));module$contents$Blockly$registry_validate(a,c);if(!d&&f[e])throw Error('Name "'+e+'" with type "'+a+'" already registered.');f[e]=c;g[e]=b}; +var module$contents$Blockly$registry_validate=function(a,b){switch(a){case String(module$exports$Blockly$registry.Type.FIELD):if("function"!==typeof b.fromJson)throw Error('Type "'+a+'" must have a fromJson function');}}; +module$exports$Blockly$registry.unregister=function(a,b){a=String(a).toLowerCase();b=b.toLowerCase();var c=module$contents$Blockly$registry_typeMap[a];c&&c[b]?(delete module$contents$Blockly$registry_typeMap[a][b],delete module$contents$Blockly$registry_nameMap[a][b]):console.warn("Unable to unregister ["+b+"]["+a+"] from the registry.")}; +var module$contents$Blockly$registry_getItem=function(a,b,c){a=String(a).toLowerCase();b=b.toLowerCase();var d=module$contents$Blockly$registry_typeMap[a];if(!d||!d[b]){b="Unable to find ["+b+"]["+a+"] in the registry.";if(c)throw Error(b+" You must require or register a "+a+" plugin.");console.warn(b);return null}return d[b]};module$exports$Blockly$registry.hasItem=function(a,b){a=String(a).toLowerCase();b=b.toLowerCase();return(a=module$contents$Blockly$registry_typeMap[a])?!!a[b]:!1}; +module$exports$Blockly$registry.getClass=function(a,b,c){return module$contents$Blockly$registry_getItem(a,b,c)};module$exports$Blockly$registry.getObject=function(a,b,c){return module$contents$Blockly$registry_getItem(a,b,c)}; +module$exports$Blockly$registry.getAllItems=function(a,b,c){a=String(a).toLowerCase();var d=module$contents$Blockly$registry_typeMap[a];if(!d){d="Unable to find ["+a+"] in the registry.";if(c)throw Error(d+" You must require or register a "+a+" plugin.");console.warn(d);return null}if(!b)return d;a=module$contents$Blockly$registry_nameMap[a];c=Object.create(null);b=Object.keys(d);for(var e=0;eb.oldScale&&(0,module$exports$Blockly$bumpObjects.bumpTopObjectsIntoBounds)(a)}}},module$contents$Blockly$bumpObjects_extractObjectFromEvent=function(a,b){var c=null;switch(b.type){case module$exports$Blockly$Events$utils.CREATE:case module$exports$Blockly$Events$utils.MOVE:(c=a.getBlockById(b.blockId))&&(c=c.getRootBlock());break;case module$exports$Blockly$Events$utils.COMMENT_CREATE:case module$exports$Blockly$Events$utils.COMMENT_MOVE:c= +a.getCommentById(b.commentId)}return c};module$exports$Blockly$bumpObjects.bumpTopObjectsIntoBounds=function(a){var b=a.getMetricsManager();if(b.hasFixedEdges()&&!a.isDragging()){b=b.getScrollMetrics(!0);for(var c=a.getTopBoundedElements(),d=0,e;e=c[d];d++)(0,module$exports$Blockly$bumpObjects.bumpIntoBounds)(a,b,e)}};var module$exports$Blockly$utils$Coordinate={Coordinate:function(a,b){this.x=a;this.y=b}};module$exports$Blockly$utils$Coordinate.Coordinate.prototype.clone=function(){return new module$exports$Blockly$utils$Coordinate.Coordinate(this.x,this.y)};module$exports$Blockly$utils$Coordinate.Coordinate.prototype.scale=function(a){this.x*=a;this.y*=a;return this};module$exports$Blockly$utils$Coordinate.Coordinate.prototype.translate=function(a,b){this.x+=a;this.y+=b;return this}; +module$exports$Blockly$utils$Coordinate.Coordinate.equals=function(a,b){return a===b?!0:a&&b?a.x===b.x&&a.y===b.y:!1};module$exports$Blockly$utils$Coordinate.Coordinate.distance=function(a,b){var c=a.x-b.x;a=a.y-b.y;return Math.sqrt(c*c+a*a)};module$exports$Blockly$utils$Coordinate.Coordinate.magnitude=function(a){return Math.sqrt(a.x*a.x+a.y*a.y)}; +module$exports$Blockly$utils$Coordinate.Coordinate.difference=function(a,b){return new module$exports$Blockly$utils$Coordinate.Coordinate(a.x-b.x,a.y-b.y)};module$exports$Blockly$utils$Coordinate.Coordinate.sum=function(a,b){return new module$exports$Blockly$utils$Coordinate.Coordinate(a.x+b.x,a.y+b.y)};var module$exports$Blockly$utils$Size={Size:function(a,b){this.width=a;this.height=b}};module$exports$Blockly$utils$Size.Size.equals=function(a,b){return a===b?!0:a&&b?a.width===b.width&&a.height===b.height:!1};var module$exports$Blockly$utils$style={getSize:function(a){if("none"!==module$contents$Blockly$utils$style_getStyle(a,"display"))return module$contents$Blockly$utils$style_getSizeWithDisplay(a);var b=a.style,c=b.display,d=b.visibility,e=b.position;b.visibility="hidden";b.position="absolute";b.display="inline";var f=a.offsetWidth;a=a.offsetHeight;b.display=c;b.position=e;b.visibility=d;return new module$exports$Blockly$utils$Size.Size(f,a)}},module$contents$Blockly$utils$style_getSizeWithDisplay= +function(a){return new module$exports$Blockly$utils$Size.Size(a.offsetWidth,a.offsetHeight)},module$contents$Blockly$utils$style_getStyle=function(a,b){return(0,module$exports$Blockly$utils$style.getComputedStyle)(a,b)||(0,module$exports$Blockly$utils$style.getCascadedStyle)(a,b)||a.style&&a.style[b]}; +module$exports$Blockly$utils$style.getComputedStyle=function(a,b){return document.defaultView&&document.defaultView.getComputedStyle&&(a=document.defaultView.getComputedStyle(a,null))?a[b]||a.getPropertyValue(b)||"":""};module$exports$Blockly$utils$style.getCascadedStyle=function(a,b){return a.currentStyle?a.currentStyle[b]:null}; +module$exports$Blockly$utils$style.getPageOffset=function(a){var b=new module$exports$Blockly$utils$Coordinate.Coordinate(0,0);a=a.getBoundingClientRect();var c=document.documentElement;c=new module$exports$Blockly$utils$Coordinate.Coordinate(window.pageXOffset||c.scrollLeft,window.pageYOffset||c.scrollTop);b.x=a.left+c.x;b.y=a.top+c.y;return b}; +module$exports$Blockly$utils$style.getViewportPageOffset=function(){var a=document.body,b=document.documentElement;return new module$exports$Blockly$utils$Coordinate.Coordinate(a.scrollLeft||b.scrollLeft,a.scrollTop||b.scrollTop)};module$exports$Blockly$utils$style.setElementShown=function(a,b){a.style.display=b?"":"none"};module$exports$Blockly$utils$style.isRightToLeft=function(a){return"rtl"===module$contents$Blockly$utils$style_getStyle(a,"direction")}; +module$exports$Blockly$utils$style.getBorderBox=function(a){var b=(0,module$exports$Blockly$utils$style.getComputedStyle)(a,"borderLeftWidth"),c=(0,module$exports$Blockly$utils$style.getComputedStyle)(a,"borderRightWidth"),d=(0,module$exports$Blockly$utils$style.getComputedStyle)(a,"borderTopWidth");a=(0,module$exports$Blockly$utils$style.getComputedStyle)(a,"borderBottomWidth");return{top:parseFloat(d),right:parseFloat(c),bottom:parseFloat(a),left:parseFloat(b)}}; +module$exports$Blockly$utils$style.scrollIntoContainerView=function(a,b,c){a=(0,module$exports$Blockly$utils$style.getContainerOffsetToScrollInto)(a,b,c);b.scrollLeft=a.x;b.scrollTop=a.y}; +module$exports$Blockly$utils$style.getContainerOffsetToScrollInto=function(a,b,c){var d=(0,module$exports$Blockly$utils$style.getPageOffset)(a),e=(0,module$exports$Blockly$utils$style.getPageOffset)(b),f=(0,module$exports$Blockly$utils$style.getBorderBox)(b),g=d.x-e.x-f.left;d=d.y-e.y-f.top;e=module$contents$Blockly$utils$style_getSizeWithDisplay(a);a=b.clientWidth-e.width;e=b.clientHeight-e.height;f=b.scrollLeft;b=b.scrollTop;c?(f+=g-a/2,b+=d-e/2):(f+=Math.min(g,Math.max(g-a,0)),b+=Math.min(d,Math.max(d- +e,0)));return new module$exports$Blockly$utils$Coordinate.Coordinate(f,b)};var module$exports$Blockly$utils$Rect={Rect:function(a,b,c,d){this.top=a;this.bottom=b;this.left=c;this.right=d}};module$exports$Blockly$utils$Rect.Rect.prototype.contains=function(a,b){return a>=this.left&&a<=this.right&&b>=this.top&&b<=this.bottom};module$exports$Blockly$utils$Rect.Rect.prototype.intersects=function(a){return!(this.left>a.right||this.righta.bottom||this.bottome.top?module$contents$Blockly$dropDownDiv_getPositionAboveMetrics(c,d,e,f):b+f.heightdocument.documentElement.clientTop?module$contents$Blockly$dropDownDiv_getPositionAboveMetrics(c,d,e,f):module$contents$Blockly$dropDownDiv_getPositionTopOfPageMetrics(a,e,f)}; +var module$contents$Blockly$dropDownDiv_getPositionBelowMetrics=function(a,b,c,d){a=(0,module$exports$Blockly$dropDownDiv.getPositionX)(a,c.left,c.right,d.width);return{initialX:a.divX,initialY:b,finalX:a.divX,finalY:b+module$exports$Blockly$dropDownDiv.PADDING_Y,arrowX:a.arrowX,arrowY:-(module$exports$Blockly$dropDownDiv.ARROW_SIZE/2+module$exports$Blockly$dropDownDiv.BORDER_SIZE),arrowAtTop:!0,arrowVisible:!0}},module$contents$Blockly$dropDownDiv_getPositionAboveMetrics=function(a,b,c,d){a=(0,module$exports$Blockly$dropDownDiv.getPositionX)(a, +c.left,c.right,d.width);return{initialX:a.divX,initialY:b-d.height,finalX:a.divX,finalY:b-d.height-module$exports$Blockly$dropDownDiv.PADDING_Y,arrowX:a.arrowX,arrowY:d.height-2*module$exports$Blockly$dropDownDiv.BORDER_SIZE-module$exports$Blockly$dropDownDiv.ARROW_SIZE/2,arrowAtTop:!1,arrowVisible:!0}},module$contents$Blockly$dropDownDiv_getPositionTopOfPageMetrics=function(a,b,c){a=(0,module$exports$Blockly$dropDownDiv.getPositionX)(a,b.left,b.right,c.width);return{initialX:a.divX,initialY:0,finalX:a.divX, +finalY:0,arrowAtTop:null,arrowX:null,arrowY:null,arrowVisible:!1}};module$exports$Blockly$dropDownDiv.getPositionX=function(a,b,c,d){b=(0,module$exports$Blockly$utils$math.clamp)(b,a-d/2,c-d);a=a-module$exports$Blockly$dropDownDiv.ARROW_SIZE/2-b;c=module$exports$Blockly$dropDownDiv.ARROW_HORIZONTAL_PADDING;a=(0,module$exports$Blockly$utils$math.clamp)(c,a,d-c-module$exports$Blockly$dropDownDiv.ARROW_SIZE);return{arrowX:a,divX:b}};module$exports$Blockly$dropDownDiv.isVisible=function(){return!!module$contents$Blockly$dropDownDiv_owner}; +module$exports$Blockly$dropDownDiv.hideIfOwner=function(a,b){return module$contents$Blockly$dropDownDiv_owner===a?(b?(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)():(0,module$exports$Blockly$dropDownDiv.hide)(),!0):!1}; +module$exports$Blockly$dropDownDiv.hide=function(){module$contents$Blockly$dropDownDiv_div.style.transform="translate(0, 0)";module$contents$Blockly$dropDownDiv_div.style.opacity=0;module$contents$Blockly$dropDownDiv_animateOutTimer=setTimeout(function(){(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)()},1E3*module$exports$Blockly$dropDownDiv.ANIMATION_TIME);module$contents$Blockly$dropDownDiv_onHide&&(module$contents$Blockly$dropDownDiv_onHide(),module$contents$Blockly$dropDownDiv_onHide= +null)}; +module$exports$Blockly$dropDownDiv.hideWithoutAnimation=function(){(0,module$exports$Blockly$dropDownDiv.isVisible)()&&(module$contents$Blockly$dropDownDiv_animateOutTimer&&clearTimeout(module$contents$Blockly$dropDownDiv_animateOutTimer),module$contents$Blockly$dropDownDiv_div.style.transform="",module$contents$Blockly$dropDownDiv_div.style.left="",module$contents$Blockly$dropDownDiv_div.style.top="",module$contents$Blockly$dropDownDiv_div.style.opacity=0,module$contents$Blockly$dropDownDiv_div.style.display="none", +module$contents$Blockly$dropDownDiv_div.style.backgroundColor="",module$contents$Blockly$dropDownDiv_div.style.borderColor="",module$contents$Blockly$dropDownDiv_onHide&&(module$contents$Blockly$dropDownDiv_onHide(),module$contents$Blockly$dropDownDiv_onHide=null),(0,module$exports$Blockly$dropDownDiv.clearContent)(),module$contents$Blockly$dropDownDiv_owner=null,module$contents$Blockly$dropDownDiv_renderedClassName&&((0,module$exports$Blockly$utils$dom.removeClass)(module$contents$Blockly$dropDownDiv_div, +module$contents$Blockly$dropDownDiv_renderedClassName),module$contents$Blockly$dropDownDiv_renderedClassName=""),module$contents$Blockly$dropDownDiv_themeClassName&&((0,module$exports$Blockly$utils$dom.removeClass)(module$contents$Blockly$dropDownDiv_div,module$contents$Blockly$dropDownDiv_themeClassName),module$contents$Blockly$dropDownDiv_themeClassName=""),(0,$.module$exports$Blockly$common.getMainWorkspace)().markFocused())}; +var module$contents$Blockly$dropDownDiv_positionInternal=function(a,b,c,d){a=module$exports$Blockly$dropDownDiv.TEST_ONLY.getPositionMetrics(a,b,c,d);a.arrowVisible?(module$contents$Blockly$dropDownDiv_arrow.style.display="",module$contents$Blockly$dropDownDiv_arrow.style.transform="translate("+a.arrowX+"px,"+a.arrowY+"px) rotate(45deg)",module$contents$Blockly$dropDownDiv_arrow.setAttribute("class",a.arrowAtTop?"blocklyDropDownArrow blocklyArrowTop":"blocklyDropDownArrow blocklyArrowBottom")):module$contents$Blockly$dropDownDiv_arrow.style.display= +"none";b=Math.floor(a.initialX);c=Math.floor(a.initialY);d=Math.floor(a.finalX);var e=Math.floor(a.finalY);module$contents$Blockly$dropDownDiv_div.style.left=b+"px";module$contents$Blockly$dropDownDiv_div.style.top=c+"px";module$contents$Blockly$dropDownDiv_div.style.display="block";module$contents$Blockly$dropDownDiv_div.style.opacity=1;module$contents$Blockly$dropDownDiv_div.style.transform="translate("+(d-b)+"px,"+(e-c)+"px)";return!!a.arrowAtTop}; +module$exports$Blockly$dropDownDiv.repositionForWindowResize=function(){if(module$contents$Blockly$dropDownDiv_owner){var a=module$contents$Blockly$dropDownDiv_owner,b=a.getSourceBlock();a=module$contents$Blockly$dropDownDiv_positionToField?module$contents$Blockly$dropDownDiv_getScaledBboxOfField(a):module$contents$Blockly$dropDownDiv_getScaledBboxOfBlock(b);b=a.left+(a.right-a.left)/2;module$contents$Blockly$dropDownDiv_positionInternal(b,a.bottom,b,a.top)}else(0,module$exports$Blockly$dropDownDiv.hide)()};var module$exports$Blockly$utils$svgMath={},module$contents$Blockly$utils$svgMath_XY_REGEX=/translate\(\s*([-+\d.e]+)([ ,]\s*([-+\d.e]+)\s*)?/,module$contents$Blockly$utils$svgMath_XY_STYLE_REGEX=/transform:\s*translate(?:3d)?\(\s*([-+\d.e]+)\s*px([ ,]\s*([-+\d.e]+)\s*px)?/; +module$exports$Blockly$utils$svgMath.getRelativeXY=function(a){var b=new module$exports$Blockly$utils$Coordinate.Coordinate(0,0),c=a.getAttribute("x");c&&(b.x=parseInt(c,10));if(c=a.getAttribute("y"))b.y=parseInt(c,10);if(c=(c=a.getAttribute("transform"))&&c.match(module$contents$Blockly$utils$svgMath_XY_REGEX))b.x+=Number(c[1]),c[3]&&(b.y+=Number(c[3]));(a=a.getAttribute("style"))&&-1/g,"<$1$2>")};$.module$exports$Blockly$Xml.domToPrettyText=function(a){a=(0,$.module$exports$Blockly$Xml.domToText)(a).split("<");for(var b="",c=1;c"!==d.slice(-2)&&(b+=" ")}a=a.join("\n");a=a.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g,"$1");return a.replace(/^\n/,"")}; +$.module$exports$Blockly$Xml.textToDom=function(a){var b=(0,$.module$exports$Blockly$utils$xml.textToDomDocument)(a);if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw Error("textToDom was unable to parse: "+a);return b.documentElement};$.module$exports$Blockly$Xml.clearWorkspaceAndLoadFromXml=function(a,b){b.setResizesEnabled(!1);b.clear();a=(0,$.module$exports$Blockly$Xml.domToWorkspace)(a,b);b.setResizesEnabled(!0);return a}; +$.module$exports$Blockly$Xml.domToWorkspace=function(a,b){if(a instanceof module$exports$Blockly$Workspace.Workspace){var c=a;a=b;b=c;console.warn("Deprecated call to domToWorkspace, swap the arguments.")}var d;b.RTL&&(d=b.getWidth());c=[];(0,module$exports$Blockly$utils$dom.startTextWidthCache)();var e=(0,module$exports$Blockly$Events$utils.getGroup)();e||(0,module$exports$Blockly$Events$utils.setGroup)(!0);b.setResizesEnabled&&b.setResizesEnabled(!1);var f=!0;try{for(var g=0,h=void 0;h=a.childNodes[g];g++){var k= +h.nodeName.toLowerCase(),l=h;if("block"===k||"shadow"===k&&!(0,module$exports$Blockly$Events$utils.getRecordUndo)()){var m=(0,$.module$exports$Blockly$Xml.domToBlock)(l,b);c.push(m.id);var n=l.hasAttribute("x")?parseInt(l.getAttribute("x"),10):10,p=l.hasAttribute("y")?parseInt(l.getAttribute("y"),10):10;isNaN(n)||isNaN(p)||m.moveBy(b.RTL?d-n:n,p);f=!1}else{if("shadow"===k)throw TypeError("Shadow block cannot be a top-level block.");if("comment"===k)if(b.rendered){var q=module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg; +q?q.fromXmlRendered(l,b,d):console.warn("Missing require for Blockly.WorkspaceCommentSvg, ignoring workspace comment.")}else{var r=module$exports$Blockly$WorkspaceComment.WorkspaceComment;r?r.fromXml(l,b):console.warn("Missing require for Blockly.WorkspaceComment, ignoring workspace comment.")}else if("variables"===k){if(f)(0,$.module$exports$Blockly$Xml.domToVariables)(l,b);else throw Error("'variables' tag must exist once before block and shadow tag elements in the workspace XML, but it was found in another location."); +f=!1}}}}finally{e||(0,module$exports$Blockly$Events$utils.setGroup)(!1),(0,module$exports$Blockly$utils$dom.stopTextWidthCache)()}b.setResizesEnabled&&b.setResizesEnabled(!0);(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.FINISHED_LOADING))(b));return c}; +$.module$exports$Blockly$Xml.appendDomToWorkspace=function(a,b){if(!b.getBlocksBoundingBox)return(0,$.module$exports$Blockly$Xml.domToWorkspace)(a,b);var c=b.getBlocksBoundingBox();a=(0,$.module$exports$Blockly$Xml.domToWorkspace)(a,b);if(c&&c.top!==c.bottom){var d=c.bottom;c=b.RTL?c.right:c.left;for(var e=Infinity,f=-Infinity,g=Infinity,h=0;hf&&(f=k.x)}d=d-g+10;c=b.RTL?c-f:c-e;for(e=0;e document.");}else a=null;return a};$.module$exports$Blockly$utils$object={inherits:function(a,b){a.superClass_=b.prototype;Object.setPrototypeOf(a,b);a.prototype=Object.create(b.prototype);a.prototype.constructor=a},mixin:function(a,b){for(var c in b)a[c]=b[c]},deepMerge:function(a,b){for(var c in b)a[c]=null!==b[c]&&"object"===typeof b[c]?(0,$.module$exports$Blockly$utils$object.deepMerge)(a[c]||Object.create(null),b[c]):b[c];return a},values:function(a){return Object.values?Object.values(a):Object.keys(a).map(function(b){return a[b]})}};var module$exports$Blockly$Theme={Theme:function(a,b,c,d){this.name=a;this.blockStyles=b||Object.create(null);this.categoryStyles=c||Object.create(null);this.componentStyles=d||Object.create(null);this.fontStyle=Object.create(null);this.startHats=null;(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.THEME,a,this)}};module$exports$Blockly$Theme.Theme.prototype.getClassName=function(){return this.name+"-theme"}; +module$exports$Blockly$Theme.Theme.prototype.setBlockStyle=function(a,b){this.blockStyles[a]=b};module$exports$Blockly$Theme.Theme.prototype.setCategoryStyle=function(a,b){this.categoryStyles[a]=b};module$exports$Blockly$Theme.Theme.prototype.getComponentStyle=function(a){return(a=this.componentStyles[a])&&"string"===typeof a&&this.getComponentStyle(a)?this.getComponentStyle(a):a?String(a):null};module$exports$Blockly$Theme.Theme.prototype.setComponentStyle=function(a,b){this.componentStyles[a]=b}; +module$exports$Blockly$Theme.Theme.prototype.setFontStyle=function(a){this.fontStyle=a};module$exports$Blockly$Theme.Theme.prototype.setStartHats=function(a){this.startHats=a}; +module$exports$Blockly$Theme.Theme.defineTheme=function(a,b){var c=new module$exports$Blockly$Theme.Theme(a),d=b.base;d&&("string"===typeof d&&(d=(0,module$exports$Blockly$registry.getObject)(module$exports$Blockly$registry.Type.THEME,d)),d instanceof module$exports$Blockly$Theme.Theme&&((0,$.module$exports$Blockly$utils$object.deepMerge)(c,d),c.name=a));(0,$.module$exports$Blockly$utils$object.deepMerge)(c.blockStyles,b.blockStyles);(0,$.module$exports$Blockly$utils$object.deepMerge)(c.categoryStyles, +b.categoryStyles);(0,$.module$exports$Blockly$utils$object.deepMerge)(c.componentStyles,b.componentStyles);(0,$.module$exports$Blockly$utils$object.deepMerge)(c.fontStyle,b.fontStyle);null!==b.startHats&&(c.startHats=b.startHats);return c};var module$exports$Blockly$Themes$Classic={},module$contents$Blockly$Themes$Classic_defaultBlockStyles={colour_blocks:{colourPrimary:"20"},list_blocks:{colourPrimary:"260"},logic_blocks:{colourPrimary:"210"},loop_blocks:{colourPrimary:"120"},math_blocks:{colourPrimary:"230"},procedure_blocks:{colourPrimary:"290"},text_blocks:{colourPrimary:"160"},variable_blocks:{colourPrimary:"330"},variable_dynamic_blocks:{colourPrimary:"310"},hat_blocks:{colourPrimary:"330",hat:"cap"}},module$contents$Blockly$Themes$Classic_categoryStyles= +{colour_category:{colour:"20"},list_category:{colour:"260"},logic_category:{colour:"210"},loop_category:{colour:"120"},math_category:{colour:"230"},procedure_category:{colour:"290"},text_category:{colour:"160"},variable_category:{colour:"330"},variable_dynamic_category:{colour:"310"}};module$exports$Blockly$Themes$Classic.Classic=new module$exports$Blockly$Theme.Theme("classic",module$contents$Blockly$Themes$Classic_defaultBlockStyles,module$contents$Blockly$Themes$Classic_categoryStyles);var module$exports$Blockly$Options={Options:function(a){var b=null,c=!1,d=!1,e=!1,f=!1,g=!1,h=!1,k=!!a.readOnly;k||(b=(0,module$exports$Blockly$utils$toolbox.convertToolboxDefToJson)(a.toolbox),c=(0,module$exports$Blockly$utils$toolbox.hasCategories)(b),d=a.trashcan,void 0===d&&(d=c),e=a.collapse,void 0===e&&(e=c),f=a.comments,void 0===f&&(f=c),g=a.disable,void 0===g&&(g=c),h=a.sounds,void 0===h&&(h=!0));var l=a.maxTrashcanContents;d?void 0===l&&(l=32):l=0;var m=!!a.rtl,n=a.horizontalLayout;void 0=== +n&&(n=!1);var p=a.toolboxPosition;p="end"!==p;p=n?p?module$exports$Blockly$utils$toolbox.Position.TOP:module$exports$Blockly$utils$toolbox.Position.BOTTOM:p===m?module$exports$Blockly$utils$toolbox.Position.RIGHT:module$exports$Blockly$utils$toolbox.Position.LEFT;var q=a.css;void 0===q&&(q=!0);var r="https://blockly-demo.appspot.com/static/media/";a.media?r=a.media:a.path&&(r=a.path+"media/");var t=void 0===a.oneBasedIndex?!0:!!a.oneBasedIndex;var u=a.renderer||"geras",v=a.plugins||{};this.RTL=m; +this.oneBasedIndex=t;this.collapse=e;this.comments=f;this.disable=g;this.readOnly=k;this.maxBlocks=a.maxBlocks||Infinity;this.maxInstances=a.maxInstances;this.pathToMedia=r;this.hasCategories=c;this.moveOptions=module$exports$Blockly$Options.Options.parseMoveOptions_(a,c);this.hasScrollbars=!!this.moveOptions.scrollbars;this.hasTrashcan=d;this.maxTrashcanContents=l;this.hasSounds=h;this.hasCss=q;this.horizontalLayout=n;this.languageTree=b;this.gridOptions=module$exports$Blockly$Options.Options.parseGridOptions_(a); +this.zoomOptions=module$exports$Blockly$Options.Options.parseZoomOptions_(a);this.toolboxPosition=p;this.theme=module$exports$Blockly$Options.Options.parseThemeOptions_(a);this.renderer=u;this.rendererOverrides=a.rendererOverrides;this.gridPattern=null;this.parentWorkspace=a.parentWorkspace;this.plugins=v;this.getMetrics=this.setMetrics=void 0}}; +module$exports$Blockly$Options.Options.parseMoveOptions_=function(a,b){var c=a.move||{},d={};void 0===c.scrollbars&&void 0===a.scrollbars?d.scrollbars=b:"object"===typeof c.scrollbars?(d.scrollbars={},d.scrollbars.horizontal=!!c.scrollbars.horizontal,d.scrollbars.vertical=!!c.scrollbars.vertical,d.scrollbars.horizontal&&d.scrollbars.vertical?d.scrollbars=!0:d.scrollbars.horizontal||d.scrollbars.vertical||(d.scrollbars=!1)):d.scrollbars=!!c.scrollbars||!!a.scrollbars;d.wheel=d.scrollbars&&void 0!== +c.wheel?!!c.wheel:"object"===typeof d.scrollbars;d.drag=d.scrollbars?void 0===c.drag?!0:!!c.drag:!1;return d}; +module$exports$Blockly$Options.Options.parseZoomOptions_=function(a){a=a.zoom||{};var b={};b.controls=void 0===a.controls?!1:!!a.controls;b.wheel=void 0===a.wheel?!1:!!a.wheel;b.startScale=void 0===a.startScale?1:Number(a.startScale);b.maxScale=void 0===a.maxScale?3:Number(a.maxScale);b.minScale=void 0===a.minScale?.3:Number(a.minScale);b.scaleSpeed=void 0===a.scaleSpeed?1.2:Number(a.scaleSpeed);b.pinch=void 0===a.pinch?b.wheel||b.controls:!!a.pinch;return b}; +module$exports$Blockly$Options.Options.parseGridOptions_=function(a){a=a.grid||{};var b={};b.spacing=Number(a.spacing)||0;b.colour=a.colour||"#888";b.length=void 0===a.length?1:Number(a.length);b.snap=0=a||isNaN(a)?0:Math.min(a,this.scrollbarLength_)};module$exports$Blockly$Scrollbar.Scrollbar.prototype.setHandleLength_=function(a){this.handleLength_=a;this.svgHandle_.setAttribute(this.lengthAttribute_,this.handleLength_)}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.constrainHandlePosition_=function(a){return a=0>=a||isNaN(a)?0:Math.min(a,this.scrollbarLength_-this.handleLength_)};module$exports$Blockly$Scrollbar.Scrollbar.prototype.setHandlePosition=function(a){this.handlePosition_=a;this.svgHandle_.setAttribute(this.positionAttribute_,this.handlePosition_)}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.setScrollbarLength_=function(a){this.scrollbarLength_=a;this.outerSvg_.setAttribute(this.lengthAttribute_,this.scrollbarLength_);this.svgBackground_.setAttribute(this.lengthAttribute_,this.scrollbarLength_)}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.setPosition=function(a,b){this.position.x=a;this.position.y=b;(0,module$exports$Blockly$utils$dom.setCssTransform)(this.outerSvg_,"translate("+(this.position.x+this.origin_.x)+"px,"+(this.position.y+this.origin_.y)+"px)")}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.resize=function(a){if(!a&&(a=this.workspace_.getMetrics(),!a))return;this.oldHostMetrics_&&module$exports$Blockly$Scrollbar.Scrollbar.metricsAreEquivalent_(a,this.oldHostMetrics_)||(this.horizontal_?this.resizeHorizontal_(a):this.resizeVertical_(a),this.oldHostMetrics_=a,this.updateMetrics_())}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.requiresViewResize_=function(a){return this.oldHostMetrics_?this.oldHostMetrics_.viewWidth!==a.viewWidth||this.oldHostMetrics_.viewHeight!==a.viewHeight||this.oldHostMetrics_.absoluteLeft!==a.absoluteLeft||this.oldHostMetrics_.absoluteTop!==a.absoluteTop:!0};module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeHorizontal_=function(a){this.requiresViewResize_(a)?this.resizeViewHorizontal(a):this.resizeContentHorizontal(a)}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeViewHorizontal=function(a){var b=a.viewWidth-2*this.margin_;this.pair_&&(b-=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness);this.setScrollbarLength_(Math.max(0,b));b=a.absoluteLeft+this.margin_;this.pair_&&this.workspace_.RTL&&(b+=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness);this.setPosition(b,a.absoluteTop+a.viewHeight-module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness-this.margin_);this.resizeContentHorizontal(a)}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeContentHorizontal=function(a){if(a.viewWidth>=a.scrollWidth)this.setHandleLength_(this.scrollbarLength_),this.setHandlePosition(0),this.pair_||this.setVisible(!1);else{this.pair_||this.setVisible(!0);var b=this.scrollbarLength_*a.viewWidth/a.scrollWidth;b=this.constrainHandleLength_(b);this.setHandleLength_(b);b=a.scrollWidth-a.viewWidth;var c=this.scrollbarLength_-this.handleLength_;a=(a.viewLeft-a.scrollLeft)/b*c;a=this.constrainHandlePosition_(a); +this.setHandlePosition(a);this.ratio=c/b}};module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeVertical_=function(a){this.requiresViewResize_(a)?this.resizeViewVertical(a):this.resizeContentVertical(a)}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeViewVertical=function(a){var b=a.viewHeight-2*this.margin_;this.pair_&&(b-=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness);this.setScrollbarLength_(Math.max(0,b));this.setPosition(this.workspace_.RTL?a.absoluteLeft+this.margin_:a.absoluteLeft+a.viewWidth-module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness-this.margin_,a.absoluteTop+this.margin_);this.resizeContentVertical(a)}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.resizeContentVertical=function(a){if(a.viewHeight>=a.scrollHeight)this.setHandleLength_(this.scrollbarLength_),this.setHandlePosition(0),this.pair_||this.setVisible(!1);else{this.pair_||this.setVisible(!0);var b=this.scrollbarLength_*a.viewHeight/a.scrollHeight;b=this.constrainHandleLength_(b);this.setHandleLength_(b);b=a.scrollHeight-a.viewHeight;var c=this.scrollbarLength_-this.handleLength_;a=(a.viewTop-a.scrollTop)/b*c;a=this.constrainHandlePosition_(a); +this.setHandlePosition(a);this.ratio=c/b}}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.createDom_=function(a){var b="blocklyScrollbar"+(this.horizontal_?"Horizontal":"Vertical");a&&(b+=" "+a);this.outerSvg_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.SVG,{"class":b},null);this.svgGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{},this.outerSvg_);this.svgBackground_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyScrollbarBackground"}, +this.svgGroup_);a=Math.floor((module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness-5)/2);this.svgHandle_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyScrollbarHandle",rx:a,ry:a},this.svgGroup_);this.workspace_.getThemeManager().subscribe(this.svgHandle_,"scrollbarColour","fill");this.workspace_.getThemeManager().subscribe(this.svgHandle_,"scrollbarOpacity","fill-opacity");(0,module$exports$Blockly$utils$dom.insertAfter)(this.outerSvg_, +this.workspace_.getParentSvg())};module$exports$Blockly$Scrollbar.Scrollbar.prototype.isVisible=function(){return this.isVisible_};module$exports$Blockly$Scrollbar.Scrollbar.prototype.setContainerVisible=function(a){var b=a!==this.containerVisible_;this.containerVisible_=a;b&&this.updateDisplay_()}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.setVisible=function(a){var b=a!==this.isVisible();if(this.pair_)throw Error("Unable to toggle visibility of paired scrollbars.");this.isVisible_=a;b&&this.updateDisplay_()};module$exports$Blockly$Scrollbar.Scrollbar.prototype.updateDisplay_=function(){this.containerVisible_&&this.isVisible()?this.outerSvg_.setAttribute("display","block"):this.outerSvg_.setAttribute("display","none")}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.onMouseDownBar_=function(a){this.workspace_.markFocused();(0,module$exports$Blockly$Touch.clearTouchIdentifier)();this.cleanUp_();if((0,module$exports$Blockly$browserEvents.isRightButton)(a))a.stopPropagation();else{var b=(0,module$exports$Blockly$browserEvents.mouseToSvg)(a,this.workspace_.getParentSvg(),this.workspace_.getInverseScreenCTM());b=this.horizontal_?b.x:b.y;var c=(0,module$exports$Blockly$utils$svgMath.getInjectionDivXY)(this.svgHandle_); +c=this.horizontal_?c.x:c.y;var d=this.handlePosition_,e=.95*this.handleLength_;b<=c?d-=e:b>=c+this.handleLength_&&(d+=e);this.setHandlePosition(this.constrainHandlePosition_(d));this.updateMetrics_();a.stopPropagation();a.preventDefault()}}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.onMouseDownHandle_=function(a){this.workspace_.markFocused();this.cleanUp_();(0,module$exports$Blockly$browserEvents.isRightButton)(a)?a.stopPropagation():(this.startDragHandle=this.handlePosition_,this.workspace_.setupDragSurface(),this.startDragMouse_=this.horizontal_?a.clientX:a.clientY,module$exports$Blockly$Scrollbar.Scrollbar.onMouseUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mouseup",this,this.onMouseUpHandle_), +module$exports$Blockly$Scrollbar.Scrollbar.onMouseMoveWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mousemove",this,this.onMouseMoveHandle_),a.stopPropagation(),a.preventDefault())};module$exports$Blockly$Scrollbar.Scrollbar.prototype.onMouseMoveHandle_=function(a){this.setHandlePosition(this.constrainHandlePosition_(this.startDragHandle+((this.horizontal_?a.clientX:a.clientY)-this.startDragMouse_)));this.updateMetrics_()}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.onMouseUpHandle_=function(){this.workspace_.resetDragSurface();(0,module$exports$Blockly$Touch.clearTouchIdentifier)();this.cleanUp_()}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.cleanUp_=function(){this.workspace_.hideChaff(!0);module$exports$Blockly$Scrollbar.Scrollbar.onMouseUpWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(module$exports$Blockly$Scrollbar.Scrollbar.onMouseUpWrapper_),module$exports$Blockly$Scrollbar.Scrollbar.onMouseUpWrapper_=null);module$exports$Blockly$Scrollbar.Scrollbar.onMouseMoveWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(module$exports$Blockly$Scrollbar.Scrollbar.onMouseMoveWrapper_), +module$exports$Blockly$Scrollbar.Scrollbar.onMouseMoveWrapper_=null)};module$exports$Blockly$Scrollbar.Scrollbar.prototype.getRatio_=function(){var a=this.handlePosition_/(this.scrollbarLength_-this.handleLength_);isNaN(a)&&(a=0);return a};module$exports$Blockly$Scrollbar.Scrollbar.prototype.updateMetrics_=function(){var a=this.getRatio_(),b={};this.horizontal_?b.x=a:b.y=a;this.workspace_.setMetrics(b)}; +module$exports$Blockly$Scrollbar.Scrollbar.prototype.set=function(a,b){this.setHandlePosition(this.constrainHandlePosition_(a*this.ratio));(b||void 0===b)&&this.updateMetrics_()};module$exports$Blockly$Scrollbar.Scrollbar.prototype.setOrigin=function(a,b){this.origin_=new module$exports$Blockly$utils$Coordinate.Coordinate(a,b)}; +module$exports$Blockly$Scrollbar.Scrollbar.metricsAreEquivalent_=function(a,b){return a.viewWidth===b.viewWidth&&a.viewHeight===b.viewHeight&&a.viewLeft===b.viewLeft&&a.viewTop===b.viewTop&&a.absoluteTop===b.absoluteTop&&a.absoluteLeft===b.absoluteLeft&&a.scrollWidth===b.scrollWidth&&a.scrollHeight===b.scrollHeight&&a.scrollLeft===b.scrollLeft&&a.scrollTop===b.scrollTop};module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness=15; +module$exports$Blockly$Touch.TOUCH_ENABLED&&(module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness=25);module$exports$Blockly$Scrollbar.Scrollbar.DEFAULT_SCROLLBAR_MARGIN=.5;var module$exports$Blockly$ScrollbarPair={ScrollbarPair:function(a,b,c,d,e){this.workspace_=a;b=void 0===b?!0:b;c=void 0===c?!0:c;var f=b&&c;b&&(this.hScroll=new module$exports$Blockly$Scrollbar.Scrollbar(a,!0,f,d,e));c&&(this.vScroll=new module$exports$Blockly$Scrollbar.Scrollbar(a,!1,f,d,e));f&&(this.corner_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{height:module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness,width:module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness, +"class":"blocklyScrollbarBackground"},null),(0,module$exports$Blockly$utils$dom.insertAfter)(this.corner_,a.getBubbleCanvas()));this.oldHostMetrics_=null}};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.dispose=function(){(0,module$exports$Blockly$utils$dom.removeNode)(this.corner_);this.oldHostMetrics_=this.workspace_=this.corner_=null;this.hScroll&&(this.hScroll.dispose(),this.hScroll=null);this.vScroll&&(this.vScroll.dispose(),this.vScroll=null)}; +module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.resize=function(){var a=this.workspace_.getMetrics();if(a){var b=!1,c=!1;this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth===a.viewWidth&&this.oldHostMetrics_.viewHeight===a.viewHeight&&this.oldHostMetrics_.absoluteTop===a.absoluteTop&&this.oldHostMetrics_.absoluteLeft===a.absoluteLeft?(this.oldHostMetrics_&&this.oldHostMetrics_.scrollWidth===a.scrollWidth&&this.oldHostMetrics_.viewLeft===a.viewLeft&&this.oldHostMetrics_.scrollLeft=== +a.scrollLeft||(b=!0),this.oldHostMetrics_&&this.oldHostMetrics_.scrollHeight===a.scrollHeight&&this.oldHostMetrics_.viewTop===a.viewTop&&this.oldHostMetrics_.scrollTop===a.scrollTop||(c=!0)):c=b=!0;if(b||c){try{(0,module$exports$Blockly$Events$utils.disable)(),this.hScroll&&b&&this.hScroll.resize(a),this.vScroll&&c&&this.vScroll.resize(a)}finally{(0,module$exports$Blockly$Events$utils.enable)()}this.workspace_.maybeFireViewportChangeEvent()}this.hScroll&&this.vScroll&&(this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth=== +a.viewWidth&&this.oldHostMetrics_.absoluteLeft===a.absoluteLeft||this.corner_.setAttribute("x",this.vScroll.position.x),this.oldHostMetrics_&&this.oldHostMetrics_.viewHeight===a.viewHeight&&this.oldHostMetrics_.absoluteTop===a.absoluteTop||this.corner_.setAttribute("y",this.hScroll.position.y));this.oldHostMetrics_=a}};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.canScrollHorizontally=function(){return!!this.hScroll}; +module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.canScrollVertically=function(){return!!this.vScroll};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.setOrigin=function(a,b){this.hScroll&&this.hScroll.setOrigin(a,b);this.vScroll&&this.vScroll.setOrigin(a,b)}; +module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.set=function(a,b,c){this.hScroll&&this.hScroll.set(a,!1);this.vScroll&&this.vScroll.set(b,!1);if(c||void 0===c)a={},this.hScroll&&(a.x=this.hScroll.getRatio_()),this.vScroll&&(a.y=this.vScroll.getRatio_()),this.workspace_.setMetrics(a)};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.setX=function(a){this.hScroll&&this.hScroll.set(a,!0)}; +module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.setY=function(a){this.vScroll&&this.vScroll.set(a,!0)};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.setContainerVisible=function(a){this.hScroll&&this.hScroll.setContainerVisible(a);this.vScroll&&this.vScroll.setContainerVisible(a)};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.isVisible=function(){var a=!1;this.hScroll&&(a=this.hScroll.isVisible());this.vScroll&&(a=a||this.vScroll.isVisible());return a}; +module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.resizeContent=function(a){this.hScroll&&this.hScroll.resizeContentHorizontal(a);this.vScroll&&this.vScroll.resizeContentVertical(a)};module$exports$Blockly$ScrollbarPair.ScrollbarPair.prototype.resizeView=function(a){this.hScroll&&this.hScroll.resizeViewHorizontal(a);this.vScroll&&this.vScroll.resizeViewVertical(a)};var module$exports$Blockly$utils$KeyCodes={KeyCodes:{WIN_KEY_FF_LINUX:0,MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PLUS_SIGN:43,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,FF_SEMICOLON:59,FF_EQUALS:61,FF_DASH:173,FF_HASH:163,QUESTION_MARK:63,AT_SIGN:64,A:65,B:66,C:67,D:68,E:69,F:70,G:71, +H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SCROLL_LOCK:145,FIRST_MEDIA_KEY:166,LAST_MEDIA_KEY:183,SEMICOLON:186, +DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,TILDE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,MAC_WK_CMD_LEFT:91,MAC_WK_CMD_RIGHT:93,WIN_IME:229,VK_NONAME:252,PHANTOM:255}};var module$exports$Blockly$ShortcutRegistry={ShortcutRegistry:function(){this.reset()}};module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.reset=function(){this.registry_=Object.create(null);this.keyMap_=Object.create(null)};module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.register=function(a,b){if(this.registry_[a.name]&&!b)throw Error('Shortcut with name "'+a.name+'" already exists.');this.registry_[a.name]=a}; +module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.unregister=function(a){if(!this.registry_[a])return console.warn('Keyboard shortcut with name "'+a+'" not found.'),!1;this.removeAllKeyMappings(a);delete this.registry_[a];return!0}; +module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.addKeyMapping=function(a,b,c){a=String(a);var d=this.keyMap_[a];if(d&&!c)throw Error('Shortcut with name "'+b+'" collides with shortcuts '+d.toString());d&&c?d.unshift(b):this.keyMap_[a]=[b]}; +module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.removeKeyMapping=function(a,b,c){var d=this.keyMap_[a];if(!d&&!c)return console.warn('No keyboard shortcut with name "'+b+'" registered with key code "'+a+'"'),!1;var e=d.indexOf(b);if(-1b.indexOf(d))throw Error(d+" is not a valid modifier key.");}; +module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.prototype.createSerializedKey=function(a,b){var c="";if(b){this.checkModifiers_(b);for(var d in module$exports$Blockly$ShortcutRegistry.ShortcutRegistry.modifierKeys)-1a?this.menuItems_.length:a,-1)};module$exports$Blockly$Menu.Menu.prototype.highlightFirst_=function(){this.highlightHelper_(-1,1)}; +module$exports$Blockly$Menu.Menu.prototype.highlightLast_=function(){this.highlightHelper_(this.menuItems_.length,-1)};module$exports$Blockly$Menu.Menu.prototype.highlightHelper_=function(a,b){a+=b;for(var c;c=this.menuItems_[a];){if(c.isEnabled()){this.setHighlighted(c);break}a+=b}};module$exports$Blockly$Menu.Menu.prototype.handleMouseOver_=function(a){(a=this.getMenuItem_(a.target))&&(a.isEnabled()?this.highlightedItem_!==a&&this.setHighlighted(a):this.setHighlighted(null))}; +module$exports$Blockly$Menu.Menu.prototype.handleClick_=function(a){var b=this.openingCoords;this.openingCoords=null;if(b&&"number"===typeof a.clientX){var c=new module$exports$Blockly$utils$Coordinate.Coordinate(a.clientX,a.clientY);if(1>module$exports$Blockly$utils$Coordinate.Coordinate.distance(b,c))return}(a=this.getMenuItem_(a.target))&&a.performAction()};module$exports$Blockly$Menu.Menu.prototype.handleMouseEnter_=function(a){this.focus()}; +module$exports$Blockly$Menu.Menu.prototype.handleMouseLeave_=function(a){this.getElement()&&(this.blur_(),this.setHighlighted(null))}; +module$exports$Blockly$Menu.Menu.prototype.handleKeyEvent_=function(a){if(this.menuItems_.length&&!(a.shiftKey||a.ctrlKey||a.metaKey||a.altKey)){var b=this.highlightedItem_;switch(a.keyCode){case module$exports$Blockly$utils$KeyCodes.KeyCodes.ENTER:case module$exports$Blockly$utils$KeyCodes.KeyCodes.SPACE:b&&b.performAction();break;case module$exports$Blockly$utils$KeyCodes.KeyCodes.UP:this.highlightPrevious();break;case module$exports$Blockly$utils$KeyCodes.KeyCodes.DOWN:this.highlightNext();break; +case module$exports$Blockly$utils$KeyCodes.KeyCodes.PAGE_UP:case module$exports$Blockly$utils$KeyCodes.KeyCodes.HOME:this.highlightFirst_();break;case module$exports$Blockly$utils$KeyCodes.KeyCodes.PAGE_DOWN:case module$exports$Blockly$utils$KeyCodes.KeyCodes.END:this.highlightLast_();break;default:return}a.preventDefault();a.stopPropagation()}}; +module$exports$Blockly$Menu.Menu.prototype.getSize=function(){var a=this.getElement(),b=(0,module$exports$Blockly$utils$style.getSize)(a);b.height=a.scrollHeight;return b};var module$exports$Blockly$serialization$priorities={VARIABLES:100,BLOCKS:50};var module$exports$Blockly$serialization$registry={register:function(a,b){(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.SERIALIZER,a,b)},unregister:function(a){(0,module$exports$Blockly$registry.unregister)(module$exports$Blockly$registry.Type.SERIALIZER,a)}};var module$exports$Blockly$serialization$exceptions={DeserializationError:function(){var a=Error.apply(this,arguments);this.message=a.message;"stack"in a&&(this.stack=a.stack)}};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.DeserializationError,Error); +module$exports$Blockly$serialization$exceptions.MissingBlockType=function(a){module$exports$Blockly$serialization$exceptions.DeserializationError.call(this,"Expected to find a 'type' property, defining the block type");this.state=a};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.MissingBlockType,module$exports$Blockly$serialization$exceptions.DeserializationError); +module$exports$Blockly$serialization$exceptions.MissingConnection=function(a,b,c){module$exports$Blockly$serialization$exceptions.DeserializationError.call(this,"The block "+b.toDevString()+" is missing a(n) "+a+"\nconnection");this.block=b;this.state=c};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.MissingConnection,module$exports$Blockly$serialization$exceptions.DeserializationError); +module$exports$Blockly$serialization$exceptions.BadConnectionCheck=function(a,b,c,d){module$exports$Blockly$serialization$exceptions.DeserializationError.call(this,"The block "+c.toDevString()+" could not connect its\n"+b+" to its parent, because: "+a);this.childBlock=c;this.childState=d};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.BadConnectionCheck,module$exports$Blockly$serialization$exceptions.DeserializationError); +module$exports$Blockly$serialization$exceptions.RealChildOfShadow=function(a){module$exports$Blockly$serialization$exceptions.DeserializationError.call(this,"Encountered a real block which is defined as a child of a shadow\nblock. It is an invariant of Blockly that shadow blocks only have shadow\nchildren");this.state=a};$.$jscomp.inherits(module$exports$Blockly$serialization$exceptions.RealChildOfShadow,module$exports$Blockly$serialization$exceptions.DeserializationError);var module$exports$Blockly$serialization$ISerializer={ISerializer:function(){}};module$exports$Blockly$serialization$ISerializer.ISerializer.prototype.save=function(a){};module$exports$Blockly$serialization$ISerializer.ISerializer.prototype.load=function(a,b){};module$exports$Blockly$serialization$ISerializer.ISerializer.prototype.clear=function(a){};var module$exports$Blockly$serialization$blocks={save:function(a,b){var c=void 0===b?{}:b;b=void 0===c.addCoordinates?!1:c.addCoordinates;var d=void 0===c.addInputBlocks?!0:c.addInputBlocks,e=void 0===c.addNextBlocks?!0:c.addNextBlocks;c=void 0===c.doFullSerialization?!0:c.doFullSerialization;if(a.isInsertionMarker())return null;var f={type:a.type,id:a.id};b&&module$contents$Blockly$serialization$blocks_saveCoords(a,f);module$contents$Blockly$serialization$blocks_saveAttributes(a,f);module$contents$Blockly$serialization$blocks_saveExtraState(a, +f);module$contents$Blockly$serialization$blocks_saveIcons(a,f);module$contents$Blockly$serialization$blocks_saveFields(a,f,c);d&&module$contents$Blockly$serialization$blocks_saveInputBlocks(a,f,c);e&&module$contents$Blockly$serialization$blocks_saveNextBlocks(a,f,c);return f}},module$contents$Blockly$serialization$blocks_saveAttributes=function(a,b){a.isCollapsed()&&(b.collapsed=!0);a.isEnabled()||(b.enabled=!1);void 0!==a.inputsInline&&a.inputsInline!==a.inputsInlineDefault&&(b.inline=a.inputsInline); +a.data&&(b.data=a.data)},module$contents$Blockly$serialization$blocks_saveCoords=function(a,b){var c=a.workspace;a=a.getRelativeToSurfaceXY();b.x=Math.round(c.RTL?c.getWidth()-a.x:a.x);b.y=Math.round(a.y)},module$contents$Blockly$serialization$blocks_saveExtraState=function(a,b){a.saveExtraState?(a=a.saveExtraState(),null!==a&&(b.extraState=a)):a.mutationToDom&&(a=a.mutationToDom(),null!==a&&(b.extraState=(0,$.module$exports$Blockly$Xml.domToText)(a).replace(' xmlns="https://developers.google.com/blockly/xml"', +"")))},module$contents$Blockly$serialization$blocks_saveIcons=function(a,b){a.getCommentText()&&(b.icons={comment:{text:a.getCommentText(),pinned:a.commentModel.pinned,height:Math.round(a.commentModel.size.height),width:Math.round(a.commentModel.size.width)}})},module$contents$Blockly$serialization$blocks_saveFields=function(a,b,c){for(var d=Object.create(null),e=0;ea&&0<=b&&256>b&&0<=c&&256>c)? +(0,module$exports$Blockly$utils$colour.rgbToHex)(a,b,c):null};module$exports$Blockly$utils$colour.rgbToHex=function(a,b,c){b=a<<16|b<<8|c;return 16>a?"#"+(16777216|b).toString(16).substr(1):"#"+b.toString(16)};module$exports$Blockly$utils$colour.hexToRgb=function(a){a=(0,module$exports$Blockly$utils$colour.parse)(a);if(!a)return[0,0,0];a=parseInt(a.substr(1),16);return[a>>16,a>>8&255,a&255]}; +module$exports$Blockly$utils$colour.hsvToHex=function(a,b,c){var d=0,e=0,f=0;if(0===b)f=e=d=c;else{var g=Math.floor(a/60),h=a/60-g;a=c*(1-b);var k=c*(1-b*h);b=c*(1-b*(1-h));switch(g){case 1:d=k;e=c;f=a;break;case 2:d=a;e=c;f=b;break;case 3:d=a;e=k;f=c;break;case 4:d=b;e=a;f=c;break;case 5:d=c;e=a;f=k;break;case 6:case 0:d=c,e=b,f=a}}return(0,module$exports$Blockly$utils$colour.rgbToHex)(Math.floor(d),Math.floor(e),Math.floor(f))}; +module$exports$Blockly$utils$colour.blend=function(a,b,c){a=(0,module$exports$Blockly$utils$colour.parse)(a);if(!a)return null;b=(0,module$exports$Blockly$utils$colour.parse)(b);if(!b)return null;a=(0,module$exports$Blockly$utils$colour.hexToRgb)(a);b=(0,module$exports$Blockly$utils$colour.hexToRgb)(b);return(0,module$exports$Blockly$utils$colour.rgbToHex)(Math.round(b[0]+c*(a[0]-b[0])),Math.round(b[1]+c*(a[1]-b[1])),Math.round(b[2]+c*(a[2]-b[2])))}; +module$exports$Blockly$utils$colour.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00"};module$exports$Blockly$utils$colour.hueToHex=function(a){return(0,module$exports$Blockly$utils$colour.hsvToHex)(a,module$contents$Blockly$utils$colour_hsvSaturation,255*module$contents$Blockly$utils$colour_hsvValue)};var module$exports$Blockly$utils$svgPaths={point:function(a,b){return" "+a+","+b+" "},curve:function(a,b){return" "+a+b.join("")},moveTo:function(a,b){return" M "+a+","+b+" "},moveBy:function(a,b){return" m "+a+","+b+" "},lineTo:function(a,b){return" l "+a+","+b+" "},line:function(a){return" l"+a.join("")},lineOnAxis:function(a,b){return" "+a+" "+b+" "},arc:function(a,b,c,d){return a+" "+c+" "+c+" "+b+d}};var module$exports$Blockly$utils$parsing={},module$contents$Blockly$utils$parsing_tokenizeInterpolationInternal=function(a,b){var c=[],d=a.split("");d.push("");var e=0;a=[];for(var f=null,g=0;g=h?(e=2,f=h,(h=a.join(""))&&c.push(h),a.length=0):"{"===h?e=3:(a.push("%",h),e=0):2===e?"0"<=h&&"9">=h?f+=h:(c.push(parseInt(f,10)),g--,e=0):3===e&&(""===h?(a.splice(0,0, +"%{"),g--,e=0):"}"!==h?a.push(h):(e=a.join(""),/[A-Z]\w*/i.test(e)?(h=e.toUpperCase(),(h=(0,$.module$exports$Blockly$utils$string.startsWith)(h,"BKY_")?h.substring(4):null)&&h in $.module$exports$Blockly$Msg.Msg?(e=$.module$exports$Blockly$Msg.Msg[h],"string"===typeof e?Array.prototype.push.apply(c,module$contents$Blockly$utils$parsing_tokenizeInterpolationInternal(e,b)):b?c.push(String(e)):c.push(e)):c.push("%{"+e+"}")):c.push("%{"+e+"}"),e=a.length=0))}(b=a.join(""))&&c.push(b);d=[];for(f=a.length= +0;f=c)return{hue:c,hex:(0,module$exports$Blockly$utils$colour.hsvToHex)(c,(0,module$exports$Blockly$utils$colour.getHsvSaturation)(),255*(0,module$exports$Blockly$utils$colour.getHsvValue)())};if(c=(0,module$exports$Blockly$utils$colour.parse)(b))return{hue:null,hex:c};c='Invalid colour: "'+b+'"';a!==b&& +(c+=' (from "'+a+'")');throw Error(c);};var module$exports$Blockly$blockRendering$ConstantProvider={ConstantProvider:function(){this.NO_PADDING=0;this.SMALL_PADDING=3;this.MEDIUM_PADDING=5;this.MEDIUM_LARGE_PADDING=8;this.LARGE_PADDING=10;this.TALL_INPUT_FIELD_OFFSET_Y=this.MEDIUM_PADDING;this.TAB_HEIGHT=15;this.TAB_OFFSET_FROM_TOP=5;this.TAB_VERTICAL_OVERLAP=2.5;this.TAB_WIDTH=8;this.NOTCH_WIDTH=15;this.NOTCH_HEIGHT=4;this.MIN_BLOCK_WIDTH=12;this.EMPTY_BLOCK_SPACER_HEIGHT=16;this.DUMMY_INPUT_SHADOW_MIN_HEIGHT=this.DUMMY_INPUT_MIN_HEIGHT= +this.TAB_HEIGHT;this.CORNER_RADIUS=8;this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT=15;this.STATEMENT_BOTTOM_SPACER=0;this.STATEMENT_INPUT_PADDING_LEFT=20;this.BETWEEN_STATEMENT_PADDING_Y=4;this.TOP_ROW_MIN_HEIGHT=this.MEDIUM_PADDING;this.TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING;this.BOTTOM_ROW_MIN_HEIGHT=this.MEDIUM_PADDING;this.BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING;this.ADD_START_HATS=!1;this.START_HAT_HEIGHT=15;this.START_HAT_WIDTH=100;this.SPACER_DEFAULT_HEIGHT= +15;this.MIN_BLOCK_HEIGHT=24;this.EMPTY_INLINE_INPUT_PADDING=14.5;this.EMPTY_INLINE_INPUT_HEIGHT=this.TAB_HEIGHT+11;this.EXTERNAL_VALUE_INPUT_PADDING=2;this.EMPTY_STATEMENT_INPUT_HEIGHT=this.MIN_BLOCK_HEIGHT;this.START_POINT=(0,module$exports$Blockly$utils$svgPaths.moveBy)(0,0);this.JAGGED_TEETH_HEIGHT=12;this.JAGGED_TEETH_WIDTH=6;this.FIELD_TEXT_FONTSIZE=11;this.FIELD_TEXT_FONTWEIGHT="normal";this.FIELD_TEXT_FONTFAMILY="sans-serif";this.FIELD_TEXT_BASELINE=this.FIELD_TEXT_HEIGHT=-1;this.FIELD_BORDER_RECT_RADIUS= +4;this.FIELD_BORDER_RECT_HEIGHT=16;this.FIELD_BORDER_RECT_X_PADDING=5;this.FIELD_BORDER_RECT_Y_PADDING=3;this.FIELD_BORDER_RECT_COLOUR="#fff";this.FIELD_TEXT_BASELINE_CENTER=!module$exports$Blockly$utils$userAgent.IE&&!module$exports$Blockly$utils$userAgent.EDGE;this.FIELD_DROPDOWN_BORDER_RECT_HEIGHT=this.FIELD_BORDER_RECT_HEIGHT;this.FIELD_DROPDOWN_SVG_ARROW=this.FIELD_DROPDOWN_COLOURED_DIV=this.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW=!1;this.FIELD_DROPDOWN_SVG_ARROW_PADDING=this.FIELD_BORDER_RECT_X_PADDING; +this.FIELD_DROPDOWN_SVG_ARROW_SIZE=12;this.FIELD_DROPDOWN_SVG_ARROW_DATAURI="data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMi43MSIgaGVpZ2h0PSI4Ljc5IiB2aWV3Qm94PSIwIDAgMTIuNzEgOC43OSI+PHRpdGxlPmRyb3Bkb3duLWFycm93PC90aXRsZT48ZyBvcGFjaXR5PSIwLjEiPjxwYXRoIGQ9Ik0xMi43MSwyLjQ0QTIuNDEsMi40MSwwLDAsMSwxMiw0LjE2TDguMDgsOC4wOGEyLjQ1LDIuNDUsMCwwLDEtMy40NSwwTDAuNzIsNC4xNkEyLjQyLDIuNDIsMCwwLDEsMCwyLjQ0LDIuNDgsMi40OCwwLDAsMSwuNzEuNzFDMSwwLjQ3LDEuNDMsMCw2LjM2LDBTMTEuNzUsMC40NiwxMiwuNzFBMi40NCwyLjQ0LDAsMCwxLDEyLjcxLDIuNDRaIiBmaWxsPSIjMjMxZjIwIi8+PC9nPjxwYXRoIGQ9Ik02LjM2LDcuNzlhMS40MywxLjQzLDAsMCwxLTEtLjQyTDEuNDIsMy40NWExLjQ0LDEuNDQsMCwwLDEsMC0yYzAuNTYtLjU2LDkuMzEtMC41Niw5Ljg3LDBhMS40NCwxLjQ0LDAsMCwxLDAsMkw3LjM3LDcuMzdBMS40MywxLjQzLDAsMCwxLDYuMzYsNy43OVoiIGZpbGw9IiNmZmYiLz48L3N2Zz4="; +this.FIELD_COLOUR_FULL_BLOCK=this.FIELD_TEXTINPUT_BOX_SHADOW=!1;this.FIELD_COLOUR_DEFAULT_WIDTH=26;this.FIELD_COLOUR_DEFAULT_HEIGHT=this.FIELD_BORDER_RECT_HEIGHT;this.FIELD_CHECKBOX_X_OFFSET=this.FIELD_BORDER_RECT_X_PADDING-3;this.randomIdentifier=String(Math.random()).substring(2);this.defs_=null;this.embossFilterId="";this.embossFilter_=null;this.disabledPatternId="";this.disabledPattern_=null;this.debugFilterId="";this.cssNode_=this.debugFilter_=null;this.CURSOR_COLOUR="#cc0a0a";this.MARKER_COLOUR= +"#4286f4";this.CURSOR_WS_WIDTH=100;this.WS_CURSOR_HEIGHT=5;this.CURSOR_STACK_PADDING=10;this.CURSOR_BLOCK_PADDING=2;this.CURSOR_STROKE_WIDTH=4;this.FULL_BLOCK_FIELDS=!1;this.INSERTION_MARKER_COLOUR="#000000";this.INSERTION_MARKER_OPACITY=.2;this.SHAPES={PUZZLE:1,NOTCH:2}}}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.init=function(){this.JAGGED_TEETH=this.makeJaggedTeeth();this.NOTCH=this.makeNotch();this.START_HAT=this.makeStartHat();this.PUZZLE_TAB=this.makePuzzleTab();this.INSIDE_CORNERS=this.makeInsideCorners();this.OUTSIDE_CORNERS=this.makeOutsideCorners()}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setTheme=function(a){this.blockStyles=Object.create(null);var b=a.blockStyles,c;for(c in b)this.blockStyles[c]=this.validatedBlockStyle_(b[c]);this.setDynamicProperties_(a)};module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setDynamicProperties_=function(a){this.setFontConstants_(a);this.setComponentConstants_(a);this.ADD_START_HATS=null!==a.startHats?a.startHats:this.ADD_START_HATS}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setFontConstants_=function(a){a.fontStyle&&a.fontStyle.family&&(this.FIELD_TEXT_FONTFAMILY=a.fontStyle.family);a.fontStyle&&a.fontStyle.weight&&(this.FIELD_TEXT_FONTWEIGHT=a.fontStyle.weight);a.fontStyle&&a.fontStyle.size&&(this.FIELD_TEXT_FONTSIZE=a.fontStyle.size);a=(0,module$exports$Blockly$utils$dom.measureFontMetrics)("Hg",this.FIELD_TEXT_FONTSIZE+"pt",this.FIELD_TEXT_FONTWEIGHT,this.FIELD_TEXT_FONTFAMILY);this.FIELD_TEXT_HEIGHT= +a.height;this.FIELD_TEXT_BASELINE=a.baseline}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setComponentConstants_=function(a){this.CURSOR_COLOUR=a.getComponentStyle("cursorColour")||this.CURSOR_COLOUR;this.MARKER_COLOUR=a.getComponentStyle("markerColour")||this.MARKER_COLOUR;this.INSERTION_MARKER_COLOUR=a.getComponentStyle("insertionMarkerColour")||this.INSERTION_MARKER_COLOUR;this.INSERTION_MARKER_OPACITY=Number(a.getComponentStyle("insertionMarkerOpacity"))||this.INSERTION_MARKER_OPACITY}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.getBlockStyleForColour=function(a){var b="auto_"+a;this.blockStyles[b]||(this.blockStyles[b]=this.createBlockStyle_(a));return{style:this.blockStyles[b],name:b}};module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.getBlockStyle=function(a){return this.blockStyles[a||""]||(a&&0===a.indexOf("auto_")?this.getBlockStyleForColour(a.substring(5)).style:this.createBlockStyle_("#000000"))}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.createBlockStyle_=function(a){return this.validatedBlockStyle_({colourPrimary:a})}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.validatedBlockStyle_=function(a){var b={};a&&(0,$.module$exports$Blockly$utils$object.mixin)(b,a);a=(0,module$exports$Blockly$utils$parsing.parseBlockColour)(b.colourPrimary||"#000");b.colourPrimary=a.hex;b.colourSecondary=b.colourSecondary?(0,module$exports$Blockly$utils$parsing.parseBlockColour)(b.colourSecondary).hex:this.generateSecondaryColour_(b.colourPrimary);b.colourTertiary=b.colourTertiary?(0,module$exports$Blockly$utils$parsing.parseBlockColour)(b.colourTertiary).hex: +this.generateTertiaryColour_(b.colourPrimary);b.hat=b.hat||"";return b};module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.generateSecondaryColour_=function(a){return(0,module$exports$Blockly$utils$colour.blend)("#fff",a,.6)||a};module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.generateTertiaryColour_=function(a){return(0,module$exports$Blockly$utils$colour.blend)("#fff",a,.3)||a}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.dispose=function(){this.embossFilter_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.embossFilter_);this.disabledPattern_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.disabledPattern_);this.debugFilter_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.debugFilter_);this.cssNode_=null}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeJaggedTeeth=function(){var a=this.JAGGED_TEETH_HEIGHT,b=this.JAGGED_TEETH_WIDTH,c=(0,module$exports$Blockly$utils$svgPaths.line)([(0,module$exports$Blockly$utils$svgPaths.point)(b,a/4),(0,module$exports$Blockly$utils$svgPaths.point)(2*-b,a/2),(0,module$exports$Blockly$utils$svgPaths.point)(b,a/4)]);return{height:a,width:b,path:c}}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeStartHat=function(){var a=this.START_HAT_HEIGHT,b=this.START_HAT_WIDTH,c=(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(30,-a),(0,module$exports$Blockly$utils$svgPaths.point)(70,-a),(0,module$exports$Blockly$utils$svgPaths.point)(b,0)]);return{height:a,width:b,path:c}}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makePuzzleTab=function(){function a(f){f=f?-1:1;var g=-f,h=c/2,k=h+2.5,l=h+.5,m=(0,module$exports$Blockly$utils$svgPaths.point)(-b,f*h);h=(0,module$exports$Blockly$utils$svgPaths.point)(b,f*h);return(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(0,f*k),(0,module$exports$Blockly$utils$svgPaths.point)(-b,g*l),m])+(0,module$exports$Blockly$utils$svgPaths.curve)("s", +[(0,module$exports$Blockly$utils$svgPaths.point)(b,2.5*g),h])}var b=this.TAB_WIDTH,c=this.TAB_HEIGHT,d=a(!0),e=a(!1);return{type:this.SHAPES.PUZZLE,width:b,height:c,pathDown:e,pathUp:d}}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeNotch=function(){function a(g){return(0,module$exports$Blockly$utils$svgPaths.line)([(0,module$exports$Blockly$utils$svgPaths.point)(g*d,c),(0,module$exports$Blockly$utils$svgPaths.point)(3*g,0),(0,module$exports$Blockly$utils$svgPaths.point)(g*d,-c)])}var b=this.NOTCH_WIDTH,c=this.NOTCH_HEIGHT,d=(b-3)/2,e=a(1),f=a(-1);return{type:this.SHAPES.NOTCH,width:b,height:c,pathLeft:e,pathRight:f}}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeInsideCorners=function(){var a=this.CORNER_RADIUS,b=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a,a)),c=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,a));return{width:a,height:a,pathTop:b,pathBottom:c}}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.makeOutsideCorners=function(){var a=this.CORNER_RADIUS,b=(0,module$exports$Blockly$utils$svgPaths.moveBy)(0,a)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,-a)),c=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,a)),d=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a, +-a)),e=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a,a));return{topLeft:b,topRight:c,bottomRight:e,bottomLeft:d,rightHeight:a}}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.shapeFor=function(a){switch(a.type){case $.module$exports$Blockly$ConnectionType.ConnectionType.INPUT_VALUE:case $.module$exports$Blockly$ConnectionType.ConnectionType.OUTPUT_VALUE:return this.PUZZLE_TAB;case $.module$exports$Blockly$ConnectionType.ConnectionType.PREVIOUS_STATEMENT:case $.module$exports$Blockly$ConnectionType.ConnectionType.NEXT_STATEMENT:return this.NOTCH;default:throw Error("Unknown connection type"); +}}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.createDom=function(a,b,c){this.injectCSS_(b,c);this.defs_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.DEFS,{},a);a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FILTER,{id:"blocklyEmbossFilter"+this.randomIdentifier},this.defs_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEGAUSSIANBLUR,{"in":"SourceAlpha", +stdDeviation:1,result:"blur"},a);b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FESPECULARLIGHTING,{"in":"blur",surfaceScale:1,specularConstant:.5,specularExponent:10,"lighting-color":"white",result:"specOut"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEPOINTLIGHT,{x:-5E3,y:-1E4,z:2E4},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"specOut", +in2:"SourceAlpha",operator:"in",result:"specOut"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"SourceGraphic",in2:"specOut",operator:"arithmetic",k1:0,k2:1,k3:1,k4:0},a);this.embossFilterId=a.id;this.embossFilter_=a;a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATTERN,{id:"blocklyDisabledPattern"+this.randomIdentifier,patternUnits:"userSpaceOnUse",width:10,height:10},this.defs_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT, +{width:10,height:10,fill:"#aaa"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{d:"M 0 0 L 10 10 M 10 0 L 0 10",stroke:"#cc0"},a);this.disabledPatternId=a.id;this.disabledPattern_=a;this.createDebugFilter()}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.createDebugFilter=function(){if(!this.debugFilter_){var a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FILTER,{id:"blocklyDebugFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},this.defs_),b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPONENTTRANSFER,{result:"outBlur"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFUNCA, +{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFLOOD,{"flood-color":"#ff0000","flood-opacity":.5,result:"outColor"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},a);this.debugFilterId=a.id;this.debugFilter_=a}}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.injectCSS_=function(a,b){b=this.getCSS_(b);a="blockly-renderer-style-"+a;this.cssNode_=document.getElementById(a);var c=b.join("\n");this.cssNode_?this.cssNode_.firstChild.textContent=c:(b=document.createElement("style"),b.id=a,a=document.createTextNode(c),b.appendChild(a),document.head.insertBefore(b,document.head.firstChild),this.cssNode_=b)}; +module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.getCSS_=function(a){return[a+" .blocklyText, ",a+" .blocklyFlyoutLabelText {","font: "+this.FIELD_TEXT_FONTWEIGHT+" "+this.FIELD_TEXT_FONTSIZE+"pt "+this.FIELD_TEXT_FONTFAMILY+";","}",a+" .blocklyText {","fill: #fff;","}",a+" .blocklyNonEditableText>rect,",a+" .blocklyEditableText>rect {","fill: "+this.FIELD_BORDER_RECT_COLOUR+";","fill-opacity: .6;","stroke: none;","}",a+" .blocklyNonEditableText>text,",a+" .blocklyEditableText>text {", +"fill: #000;","}",a+" .blocklyFlyoutLabelText {","fill: #000;","}",a+" .blocklyText.blocklyBubbleText {","fill: #000;","}",a+" .blocklyEditableText:not(.editing):hover>rect {","stroke: #fff;","stroke-width: 2;","}",a+" .blocklyHtmlInput {","font-family: "+this.FIELD_TEXT_FONTFAMILY+";","font-weight: "+this.FIELD_TEXT_FONTWEIGHT+";","}",a+" .blocklySelected>.blocklyPath {","stroke: #fc3;","stroke-width: 3px;","}",a+" .blocklyHighlightedConnectionPath {","stroke: #fc3;","}",a+" .blocklyReplaceable .blocklyPath {", +"fill-opacity: .5;","}",a+" .blocklyReplaceable .blocklyPathLight,",a+" .blocklyReplaceable .blocklyPathDark {","display: none;","}",a+" .blocklyInsertionMarker>.blocklyPath {","fill-opacity: "+this.INSERTION_MARKER_OPACITY+";","stroke: none;","}"]};var module$exports$Blockly$blockRendering$Field={Field:function(a,b,c){module$exports$Blockly$blockRendering$Measurable.Measurable.call(this,a);this.field=b;this.isEditable=b.EDITABLE;this.flipRtl=b.getFlipRtl();this.type|=module$exports$Blockly$blockRendering$Types.Types.FIELD;a=this.field.getSize();this.height=a.height;this.width=a.width;this.parentInput=c}};$.$jscomp.inherits(module$exports$Blockly$blockRendering$Field.Field,module$exports$Blockly$blockRendering$Measurable.Measurable);var module$exports$Blockly$fieldRegistry={register:function(a,b){(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.FIELD,a,b)},unregister:function(a){(0,module$exports$Blockly$registry.unregister)(module$exports$Blockly$registry.Type.FIELD,a)},fromJson:function(a){var b=(0,module$exports$Blockly$registry.getObject)(module$exports$Blockly$registry.Type.FIELD,a.type);return b?b.fromJson(a):(console.warn("Blockly could not create a field of type "+a.type+". The field is probably not being registered. This could be because the file is not loaded, the field does not register itself (Issue #1584), or the registration is not being reached."), +null)}};var module$exports$Blockly$IASTNodeLocation={IASTNodeLocation:function(){}};var module$exports$Blockly$IASTNodeLocationSvg={IASTNodeLocationSvg:function(){}};var module$exports$Blockly$IASTNodeLocationWithBlock={IASTNodeLocationWithBlock:function(){}};var module$exports$Blockly$IKeyboardAccessible={IKeyboardAccessible:function(){}};var module$exports$Blockly$IRegistrable={IRegistrable:function(){}};var module$exports$Blockly$MarkerManager={MarkerManager:function(a){this.cursorSvg_=this.cursor_=null;this.markers_=Object.create(null);this.workspace_=a;this.markerSvg_=null}};module$exports$Blockly$MarkerManager.MarkerManager.prototype.registerMarker=function(a,b){this.markers_[a]&&this.unregisterMarker(a);b.setDrawer(this.workspace_.getRenderer().makeMarkerDrawer(this.workspace_,b));this.setMarkerSvg(b.getDrawer().createDom());this.markers_[a]=b}; +module$exports$Blockly$MarkerManager.MarkerManager.prototype.unregisterMarker=function(a){var b=this.markers_[a];if(b)b.dispose(),delete this.markers_[a];else throw Error("Marker with ID "+a+" does not exist. Can only unregister markers that exist.");};module$exports$Blockly$MarkerManager.MarkerManager.prototype.getCursor=function(){return this.cursor_};module$exports$Blockly$MarkerManager.MarkerManager.prototype.getMarker=function(a){return this.markers_[a]||null}; +module$exports$Blockly$MarkerManager.MarkerManager.prototype.setCursor=function(a){this.cursor_&&this.cursor_.getDrawer()&&this.cursor_.getDrawer().dispose();if(this.cursor_=a)a=this.workspace_.getRenderer().makeMarkerDrawer(this.workspace_,this.cursor_),this.cursor_.setDrawer(a),this.setCursorSvg(this.cursor_.getDrawer().createDom())}; +module$exports$Blockly$MarkerManager.MarkerManager.prototype.setCursorSvg=function(a){a?(this.workspace_.getBlockCanvas().appendChild(a),this.cursorSvg_=a):this.cursorSvg_=null};module$exports$Blockly$MarkerManager.MarkerManager.prototype.setMarkerSvg=function(a){a?this.workspace_.getBlockCanvas()&&(this.cursorSvg_?this.workspace_.getBlockCanvas().insertBefore(a,this.cursorSvg_):this.workspace_.getBlockCanvas().appendChild(a)):this.markerSvg_=null}; +module$exports$Blockly$MarkerManager.MarkerManager.prototype.updateMarkers=function(){this.workspace_.keyboardAccessibilityMode&&this.cursorSvg_&&this.workspace_.getCursor().draw()};module$exports$Blockly$MarkerManager.MarkerManager.prototype.dispose=function(){for(var a=Object.keys(this.markers_),b=0,c;c=a[b];b++)this.unregisterMarker(c);this.markers_=null;this.cursor_&&(this.cursor_.dispose(),this.cursor_=null)};module$exports$Blockly$MarkerManager.MarkerManager.LOCAL_MARKER="local_marker_1";var module$exports$Blockly$utils$Sentinel={Sentinel:function(){}};var module$exports$Blockly$Events$BlockChange={BlockChange:function(a,b,c,d,e){module$exports$Blockly$Events$BlockBase.BlockBase.call(this,a);this.type=module$exports$Blockly$Events$utils.CHANGE;a&&(this.element="undefined"===typeof b?"":b,this.name="undefined"===typeof c?"":c,this.oldValue="undefined"===typeof d?"":d,this.newValue="undefined"===typeof e?"":e)}};$.$jscomp.inherits(module$exports$Blockly$Events$BlockChange.BlockChange,module$exports$Blockly$Events$BlockBase.BlockBase); +module$exports$Blockly$Events$BlockChange.BlockChange.prototype.toJson=function(){var a=module$exports$Blockly$Events$BlockBase.BlockBase.prototype.toJson.call(this);a.element=this.element;this.name&&(a.name=this.name);a.oldValue=this.oldValue;a.newValue=this.newValue;return a}; +module$exports$Blockly$Events$BlockChange.BlockChange.prototype.fromJson=function(a){module$exports$Blockly$Events$BlockBase.BlockBase.prototype.fromJson.call(this,a);this.element=a.element;this.name=a.name;this.oldValue=a.oldValue;this.newValue=a.newValue};module$exports$Blockly$Events$BlockChange.BlockChange.prototype.isNull=function(){return this.oldValue===this.newValue}; +module$exports$Blockly$Events$BlockChange.BlockChange.prototype.run=function(a){var b=this.getEventWorkspace_().getBlockById(this.blockId);if(b)switch(b.mutator&&b.mutator.setVisible(!1),a=a?this.newValue:this.oldValue,this.element){case "field":(b=b.getField(this.name))?b.setValue(a):console.warn("Can't set non-existent field: "+this.name);break;case "comment":b.setCommentText(a||null);break;case "collapsed":b.setCollapsed(!!a);break;case "disabled":b.setEnabled(!a);break;case "inline":b.setInputsInline(!!a); +break;case "mutation":var c=module$exports$Blockly$Events$BlockChange.BlockChange.getExtraBlockState_(b);b.loadExtraState?b.loadExtraState(JSON.parse(a||"{}")):b.domToMutation&&b.domToMutation((0,$.module$exports$Blockly$Xml.textToDom)(a||""));(0,module$exports$Blockly$Events$utils.fire)(new module$exports$Blockly$Events$BlockChange.BlockChange(b,"mutation",null,c,a));break;default:console.warn("Unknown change type: "+this.element)}else console.warn("Can't change non-existent block: "+ +this.blockId)};module$exports$Blockly$Events$BlockChange.BlockChange.getExtraBlockState_=function(a){return a.saveExtraState?(a=a.saveExtraState())?JSON.stringify(a):"":a.mutationToDom?(a=a.mutationToDom())?(0,$.module$exports$Blockly$Xml.domToText)(a):"":""};(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.EVENT,module$exports$Blockly$Events$utils.CHANGE,module$exports$Blockly$Events$BlockChange.BlockChange);var module$exports$Blockly$blockAnimations={},module$contents$Blockly$blockAnimations_disconnectPid=0,module$contents$Blockly$blockAnimations_disconnectGroup=null; +module$exports$Blockly$blockAnimations.disposeUiEffect=function(a){var b=a.workspace,c=a.getSvgRoot();b.getAudioManager().play("delete");a=b.getSvgXY(c);c=c.cloneNode(!0);c.translateX_=a.x;c.translateY_=a.y;c.setAttribute("transform","translate("+a.x+","+a.y+")");b.getParentSvg().appendChild(c);c.bBox_=c.getBBox();module$contents$Blockly$blockAnimations_disposeUiStep(c,b.RTL,new Date,b.scale)}; +var module$contents$Blockly$blockAnimations_disposeUiStep=function(a,b,c,d){var e=(new Date-c)/150;1c)){var d=b.getSvgXY(a.getSvgRoot());a.outputConnection?(d.x+=(a.RTL?3:-3)*c,d.y+=13*c):a.previousConnection&&(d.x+=(a.RTL?-23:23)*c,d.y+=3*c);a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{cx:d.x,cy:d.y,r:0,fill:"none",stroke:"#888","stroke-width":10},b.getParentSvg());module$contents$Blockly$blockAnimations_connectionUiStep(a, +new Date,c)}};var module$contents$Blockly$blockAnimations_connectionUiStep=function(a,b,c){var d=(new Date-b)/150;1a.workspace.scale)){var b=a.getHeightWidth().height;b=Math.atan(10/b)/Math.PI*180;a.RTL||(b*=-1);module$contents$Blockly$blockAnimations_disconnectUiStep(a.getSvgRoot(),b,new Date)}}; +var module$contents$Blockly$blockAnimations_disconnectUiStep=function(a,b,c){var d=(new Date-c)/200;11'),d.appendChild(c),b.push(d));if(module$exports$Blockly$blocks.Blocks.variables_get)for(a.sort(module$exports$Blockly$VariableModel.VariableModel.compareByName), +c=0;d=a[c];c++){var e=(0,$.module$exports$Blockly$utils$xml.createElement)("block");e.setAttribute("type","variables_get");e.setAttribute("gap",8);e.appendChild((0,$.module$exports$Blockly$Variables.generateVariableFieldDom)(d));b.push(e)}}return b};$.module$exports$Blockly$Variables.VAR_LETTER_OPTIONS="ijkmnopqrstuvwxyzabcdefgh"; +$.module$exports$Blockly$Variables.generateUniqueName=function(a){return(0,$.module$exports$Blockly$Variables.generateUniqueNameFromOptions)($.module$exports$Blockly$Variables.VAR_LETTER_OPTIONS.charAt(0),a.getAllVariableNames())}; +$.module$exports$Blockly$Variables.generateUniqueNameFromOptions=function(a,b){if(!b.length)return a;for(var c=$.module$exports$Blockly$Variables.VAR_LETTER_OPTIONS,d="",e=c.indexOf(a);;){for(var f=!1,g=0;gc||b.getSourceBlock().isInsertionMarker())return!1;switch(b.type){case $.module$exports$Blockly$ConnectionType.ConnectionType.PREVIOUS_STATEMENT:return this.canConnectToPrevious_(a,b);case $.module$exports$Blockly$ConnectionType.ConnectionType.OUTPUT_VALUE:if(b.isConnected()&&!b.targetBlock().isInsertionMarker()||a.isConnected())return!1;break;case $.module$exports$Blockly$ConnectionType.ConnectionType.INPUT_VALUE:if(b.isConnected()&& +!b.targetBlock().isMovable()&&!b.targetBlock().isShadow())return!1;break;case $.module$exports$Blockly$ConnectionType.ConnectionType.NEXT_STATEMENT:if(b.isConnected()&&!a.getSourceBlock().nextConnection&&!b.targetBlock().isShadow()&&b.targetBlock().nextConnection)return!1;break;default:return!1}return-1!==$.module$exports$Blockly$common.draggingConnections.indexOf(b)?!1:!0}; +module$exports$Blockly$ConnectionChecker.ConnectionChecker.prototype.canConnectToPrevious_=function(a,b){if(a.targetConnection||-1!==$.module$exports$Blockly$common.draggingConnections.indexOf(b))return!1;if(!b.targetConnection)return!0;a=b.targetBlock();return a.isInsertionMarker()?!a.getPreviousBlock():!1};(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.CONNECTION_CHECKER,module$exports$Blockly$registry.DEFAULT,module$exports$Blockly$ConnectionChecker.ConnectionChecker);var module$exports$Blockly$Workspace={},module$contents$Blockly$Workspace_WorkspaceDB_=Object.create(null); +module$exports$Blockly$Workspace.Workspace=function(a){this.id=(0,module$exports$Blockly$utils$idGenerator.genUid)();module$contents$Blockly$Workspace_WorkspaceDB_[this.id]=this;this.options=a||new module$exports$Blockly$Options.Options({});this.RTL=!!this.options.RTL;this.horizontalLayout=!!this.options.horizontalLayout;this.toolboxPosition=this.options.toolboxPosition;this.isClearing=this.isMutator=this.isFlyout=this.rendered=!1;this.MAX_UNDO=1024;this.connectionDBList=null;this.connectionChecker= +new ((0,module$exports$Blockly$registry.getClassFromOptions)(module$exports$Blockly$registry.Type.CONNECTION_CHECKER,this.options,!0))(this);this.topBlocks_=[];this.topComments_=[];this.commentDB_=Object.create(null);this.listeners_=[];this.undoStack_=[];this.redoStack_=[];this.blockDB_=Object.create(null);this.typedBlocksDB_=Object.create(null);this.variableMap_=new module$exports$Blockly$VariableMap.VariableMap(this);this.potentialVariableMap_=null}; +module$exports$Blockly$Workspace.Workspace.prototype.dispose=function(){this.listeners_.length=0;this.clear();delete module$contents$Blockly$Workspace_WorkspaceDB_[this.id]};module$exports$Blockly$Workspace.Workspace.prototype.sortObjects_=function(a,b){a=a.getRelativeToSurfaceXY();b=b.getRelativeToSurfaceXY();return a.y+module$exports$Blockly$Workspace.Workspace.prototype.sortObjects_.offset*a.x-(b.y+module$exports$Blockly$Workspace.Workspace.prototype.sortObjects_.offset*b.x)}; +module$exports$Blockly$Workspace.Workspace.prototype.addTopBlock=function(a){this.topBlocks_.push(a)};module$exports$Blockly$Workspace.Workspace.prototype.removeTopBlock=function(a){if(!(0,module$exports$Blockly$utils$array.removeElem)(this.topBlocks_,a))throw Error("Block not present in workspace's list of top-most blocks.");}; +module$exports$Blockly$Workspace.Workspace.prototype.getTopBlocks=function(a){var b=[].concat(this.topBlocks_);a&&1this.remainingCapacityOfType(c))return!1;b+=a[c]}return b>this.remainingCapacity()?!1:!0};module$exports$Blockly$Workspace.Workspace.prototype.hasBlockLimits=function(){return Infinity!==this.options.maxBlocks||!!this.options.maxInstances};module$exports$Blockly$Workspace.Workspace.prototype.getUndoStack=function(){return this.undoStack_}; +module$exports$Blockly$Workspace.Workspace.prototype.getRedoStack=function(){return this.redoStack_}; +module$exports$Blockly$Workspace.Workspace.prototype.undo=function(a){var b=a?this.redoStack_:this.undoStack_,c=a?this.undoStack_:this.redoStack_,d=b.pop();if(d){for(var e=[d];b.length&&d.group&&d.group===b[b.length-1].group;)e.push(b.pop());for(b=0;bthis.MAX_UNDO&&0<=this.MAX_UNDO;)this.undoStack_.shift();for(var b=0;ba.width)return b;if(this.workspace_.RTL){var c=this.anchorXY_.x-b,d=a.left+a.width;a=a.left+module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness/this.workspace_.scale;c-this.width_d&&(b=-(d-this.anchorXY_.x))}else{c=b+this.anchorXY_.x;d=c+this.width_;var e=a.left;a=a.left+a.width-module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness/ +this.workspace_.scale;ca&&(b=a-this.anchorXY_.x-this.width_)}return b};module$exports$Blockly$Bubble.Bubble.prototype.getOptimalRelativeTop_=function(a){var b=-this.height_/4;if(this.height_>a.height)return b;var c=this.anchorXY_.y+b,d=c+this.height_,e=a.top;a=a.top+a.height-module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness/this.workspace_.scale;var f=this.anchorXY_.y;ca&&(b=a-f-this.height_);return b}; +module$exports$Blockly$Bubble.Bubble.prototype.positionBubble_=function(){var a=this.anchorXY_.x;a=this.workspace_.RTL?a-(this.relativeLeft_+this.width_):a+this.relativeLeft_;this.moveTo(a,this.relativeTop_+this.anchorXY_.y)};module$exports$Blockly$Bubble.Bubble.prototype.moveTo=function(a,b){this.bubbleGroup_.setAttribute("transform","translate("+a+","+b+")")};module$exports$Blockly$Bubble.Bubble.prototype.setDragging=function(a){!a&&this.moveCallback_&&this.moveCallback_()}; +module$exports$Blockly$Bubble.Bubble.prototype.getBubbleSize=function(){return new module$exports$Blockly$utils$Size.Size(this.width_,this.height_)}; +module$exports$Blockly$Bubble.Bubble.prototype.setBubbleSize=function(a,b){var c=2*module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH;a=Math.max(a,c+45);b=Math.max(b,c+20);this.width_=a;this.height_=b;this.bubbleBack_.setAttribute("width",a);this.bubbleBack_.setAttribute("height",b);this.resizeGroup_&&(this.workspace_.RTL?this.resizeGroup_.setAttribute("transform","translate("+2*module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH+","+(b-c)+") scale(-1 1)"):this.resizeGroup_.setAttribute("transform", +"translate("+(a-c)+","+(b-c)+")"));this.autoLayout_&&this.layoutBubble_();this.positionBubble_();this.renderArrow_();this.resizeCallback_&&this.resizeCallback_()}; +module$exports$Blockly$Bubble.Bubble.prototype.renderArrow_=function(){var a=[],b=this.width_/2,c=this.height_/2,d=-this.relativeLeft_,e=-this.relativeTop_;if(b===d&&c===e)a.push("M "+b+","+c);else{e-=c;d-=b;this.workspace_.RTL&&(d*=-1);var f=Math.sqrt(e*e+d*d),g=Math.acos(d/f);0>e&&(g=2*Math.PI-g);var h=g+Math.PI/2;h>2*Math.PI&&(h-=2*Math.PI);var k=Math.sin(h),l=Math.cos(h),m=this.getBubbleSize();h=(m.width+m.height)/module$exports$Blockly$Bubble.Bubble.ARROW_THICKNESS;h=Math.min(h,m.width,m.height)/ +4;m=1-module$exports$Blockly$Bubble.Bubble.ANCHOR_RADIUS/f;d=b+m*d;e=c+m*e;m=b+h*l;var n=c+h*k;b-=h*l;c-=h*k;k=g+this.arrow_radians_;k>2*Math.PI&&(k-=2*Math.PI);g=Math.sin(k)*f/module$exports$Blockly$Bubble.Bubble.ARROW_BEND;f=Math.cos(k)*f/module$exports$Blockly$Bubble.Bubble.ARROW_BEND;a.push("M"+m+","+n);a.push("C"+(m+f)+","+(n+g)+" "+d+","+e+" "+d+","+e);a.push("C"+d+","+e+" "+(b+f)+","+(c+g)+" "+b+","+c)}a.push("z");this.bubbleArrow_.setAttribute("d",a.join(" "))}; +module$exports$Blockly$Bubble.Bubble.prototype.setColour=function(a){this.bubbleBack_.setAttribute("fill",a);this.bubbleArrow_.setAttribute("fill",a)}; +module$exports$Blockly$Bubble.Bubble.prototype.dispose=function(){this.onMouseDownBubbleWrapper_&&(0,module$exports$Blockly$browserEvents.unbind)(this.onMouseDownBubbleWrapper_);this.onMouseDownResizeWrapper_&&(0,module$exports$Blockly$browserEvents.unbind)(this.onMouseDownResizeWrapper_);module$exports$Blockly$Bubble.Bubble.unbindDragEvents_();(0,module$exports$Blockly$utils$dom.removeNode)(this.bubbleGroup_);this.disposed=!0}; +module$exports$Blockly$Bubble.Bubble.prototype.moveDuringDrag=function(a,b){a?a.translateSurface(b.x,b.y):this.moveTo(b.x,b.y);this.relativeLeft_=this.workspace_.RTL?this.anchorXY_.x-b.x-this.width_:b.x-this.anchorXY_.x;this.relativeTop_=b.y-this.anchorXY_.y;this.renderArrow_()}; +module$exports$Blockly$Bubble.Bubble.prototype.getRelativeToSurfaceXY=function(){return new module$exports$Blockly$utils$Coordinate.Coordinate(this.workspace_.RTL?-this.relativeLeft_+this.anchorXY_.x-this.width_:this.anchorXY_.x+this.relativeLeft_,this.anchorXY_.y+this.relativeTop_)};module$exports$Blockly$Bubble.Bubble.prototype.setAutoLayout=function(a){this.autoLayout_=a}; +module$exports$Blockly$Bubble.Bubble.unbindDragEvents_=function(){module$exports$Blockly$Bubble.Bubble.onMouseUpWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(module$exports$Blockly$Bubble.Bubble.onMouseUpWrapper_),module$exports$Blockly$Bubble.Bubble.onMouseUpWrapper_=null);module$exports$Blockly$Bubble.Bubble.onMouseMoveWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(module$exports$Blockly$Bubble.Bubble.onMouseMoveWrapper_),module$exports$Blockly$Bubble.Bubble.onMouseMoveWrapper_= +null)};module$exports$Blockly$Bubble.Bubble.bubbleMouseUp_=function(a){(0,module$exports$Blockly$Touch.clearTouchIdentifier)();module$exports$Blockly$Bubble.Bubble.unbindDragEvents_()}; +module$exports$Blockly$Bubble.Bubble.textToDom=function(a){var b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.TEXT,{"class":"blocklyText blocklyBubbleText blocklyNoPointerEvents",y:module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH},null);a=a.split("\n");for(var c=0;cb-$.module$exports$Blockly$config.config.currentConnectionPreference)}if(this.localConnection_|| +this.closestConnection_)console.error("Only one of localConnection_ and closestConnection_ was set.");else return!0}else return!(!this.localConnection_||!this.closestConnection_);console.error("Returning true from shouldUpdatePreviews, but it's not clear why.");return!0}; +module$exports$Blockly$InsertionMarkerManager.InsertionMarkerManager.prototype.getCandidate_=function(a){var b=this.getStartRadius_(),c=null,d=null;this.markerConnection_&&this.markerConnection_.isConnected()||this.updateAvailableConnections();for(var e=0;e(this.flyout_?$.module$exports$Blockly$config.config.flyoutDragRadius:$.module$exports$Blockly$config.config.dragRadius)}; +module$exports$Blockly$Gesture.Gesture.prototype.updateIsDraggingFromFlyout_=function(){return this.targetBlock_&&this.flyout_.isBlockCreatable_(this.targetBlock_)?!this.flyout_.isScrollable()||this.flyout_.isDragTowardWorkspace(this.currentDragDeltaXY_)?(this.startWorkspace_=this.flyout_.targetWorkspace,this.startWorkspace_.updateScreenCalculationsIfScrolled(),(0,module$exports$Blockly$Events$utils.getGroup)()||(0,module$exports$Blockly$Events$utils.setGroup)(!0),this.startBlock_=null,this.targetBlock_= +this.flyout_.createBlock(this.targetBlock_),this.targetBlock_.select(),!0):!1:!1};module$exports$Blockly$Gesture.Gesture.prototype.updateIsDraggingBubble_=function(){if(!this.startBubble_)return!1;this.isDraggingBubble_=!0;this.startDraggingBubble_();return!0}; +module$exports$Blockly$Gesture.Gesture.prototype.updateIsDraggingBlock_=function(){if(!this.targetBlock_)return!1;this.flyout_?this.isDraggingBlock_=this.updateIsDraggingFromFlyout_():this.targetBlock_.isMovable()&&(this.isDraggingBlock_=!0);return this.isDraggingBlock_?(this.startDraggingBlock_(),!0):!1}; +module$exports$Blockly$Gesture.Gesture.prototype.updateIsDraggingWorkspace_=function(){if(this.flyout_?this.flyout_.isScrollable():this.startWorkspace_&&this.startWorkspace_.isDraggable())this.workspaceDragger_=new module$exports$Blockly$WorkspaceDragger.WorkspaceDragger(this.startWorkspace_),this.isDraggingWorkspace_=!0,this.workspaceDragger_.startDrag()}; +module$exports$Blockly$Gesture.Gesture.prototype.updateIsDragging_=function(){if(this.calledUpdateIsDragging_)throw Error("updateIsDragging_ should only be called once per gesture.");this.calledUpdateIsDragging_=!0;this.updateIsDraggingBubble_()||this.updateIsDraggingBlock_()||this.updateIsDraggingWorkspace_()}; +module$exports$Blockly$Gesture.Gesture.prototype.startDraggingBlock_=function(){this.blockDragger_=new ((0,module$exports$Blockly$registry.getClassFromOptions)(module$exports$Blockly$registry.Type.BLOCK_DRAGGER,this.creatorWorkspace_.options,!0))(this.targetBlock_,this.startWorkspace_);this.blockDragger_.startDrag(this.currentDragDeltaXY_,this.healStack_);this.blockDragger_.drag(this.mostRecentEvent_,this.currentDragDeltaXY_)}; +module$exports$Blockly$Gesture.Gesture.prototype.startDraggingBubble_=function(){this.bubbleDragger_=new module$exports$Blockly$BubbleDragger.BubbleDragger(this.startBubble_,this.startWorkspace_);this.bubbleDragger_.startBubbleDrag();this.bubbleDragger_.dragBubble(this.mostRecentEvent_,this.currentDragDeltaXY_)}; +module$exports$Blockly$Gesture.Gesture.prototype.doStart=function(a){(0,module$exports$Blockly$browserEvents.isTargetInput)(a)?this.cancel():(this.hasStarted_=!0,(0,module$exports$Blockly$blockAnimations.disconnectUiStop)(),this.startWorkspace_.updateScreenCalculationsIfScrolled(),this.startWorkspace_.isMutator&&this.startWorkspace_.resize(),this.startWorkspace_.hideChaff(!!this.flyout_),this.startWorkspace_.markFocused(),this.mostRecentEvent_=a,(0,module$exports$Blockly$Tooltip.block)(),this.targetBlock_&& +this.targetBlock_.select(),(0,module$exports$Blockly$browserEvents.isRightButton)(a)?this.handleRightClick(a):("touchstart"!==a.type.toLowerCase()&&"pointerdown"!==a.type.toLowerCase()||"mouse"===a.pointerType||(0,module$exports$Blockly$Touch.longStart)(a,this),this.mouseDownXY_=new module$exports$Blockly$utils$Coordinate.Coordinate(a.clientX,a.clientY),this.healStack_=a.altKey||a.ctrlKey||a.metaKey,this.bindMouseEvents(a)))}; +module$exports$Blockly$Gesture.Gesture.prototype.bindMouseEvents=function(a){this.onMoveWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mousemove",null,this.handleMove.bind(this));this.onUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mouseup",null,this.handleUp.bind(this));a.preventDefault();a.stopPropagation()}; +module$exports$Blockly$Gesture.Gesture.prototype.handleMove=function(a){this.updateFromEvent_(a);this.isDraggingWorkspace_?this.workspaceDragger_.drag(this.currentDragDeltaXY_):this.isDraggingBlock_?this.blockDragger_.drag(this.mostRecentEvent_,this.currentDragDeltaXY_):this.isDraggingBubble_&&this.bubbleDragger_.dragBubble(this.mostRecentEvent_,this.currentDragDeltaXY_);a.preventDefault();a.stopPropagation()}; +module$exports$Blockly$Gesture.Gesture.prototype.handleUp=function(a){this.updateFromEvent_(a);(0,module$exports$Blockly$Touch.longStop)();this.isEnding_?console.log("Trying to end a gesture recursively."):(this.isEnding_=!0,this.isDraggingBubble_?this.bubbleDragger_.endBubbleDrag(a,this.currentDragDeltaXY_):this.isDraggingBlock_?this.blockDragger_.endDrag(a,this.currentDragDeltaXY_):this.isDraggingWorkspace_?this.workspaceDragger_.endDrag(this.currentDragDeltaXY_):this.isBubbleClick_()?this.doBubbleClick_(): +this.isFieldClick_()?this.doFieldClick_():this.isBlockClick_()?this.doBlockClick_():this.isWorkspaceClick_()&&this.doWorkspaceClick_(a),a.preventDefault(),a.stopPropagation(),this.dispose())}; +module$exports$Blockly$Gesture.Gesture.prototype.cancel=function(){this.isEnding_||((0,module$exports$Blockly$Touch.longStop)(),this.isDraggingBubble_?this.bubbleDragger_.endBubbleDrag(this.mostRecentEvent_,this.currentDragDeltaXY_):this.isDraggingBlock_?this.blockDragger_.endDrag(this.mostRecentEvent_,this.currentDragDeltaXY_):this.isDraggingWorkspace_&&this.workspaceDragger_.endDrag(this.currentDragDeltaXY_),this.dispose())}; +module$exports$Blockly$Gesture.Gesture.prototype.handleRightClick=function(a){this.targetBlock_?(this.bringBlockToFront_(),this.targetBlock_.workspace.hideChaff(!!this.flyout_),this.targetBlock_.showContextMenu(a)):this.startBubble_?this.startBubble_.showContextMenu(a):this.startWorkspace_&&!this.flyout_&&(this.startWorkspace_.hideChaff(),this.startWorkspace_.showContextMenu(a));a.preventDefault();a.stopPropagation();this.dispose()}; +module$exports$Blockly$Gesture.Gesture.prototype.handleWsStart=function(a,b){if(this.hasStarted_)throw Error("Tried to call gesture.handleWsStart, but the gesture had already been started.");this.setStartWorkspace_(b);this.mostRecentEvent_=a;this.doStart(a)};module$exports$Blockly$Gesture.Gesture.prototype.fireWorkspaceClick_=function(a){(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CLICK))(null,a.id,"workspace"))}; +module$exports$Blockly$Gesture.Gesture.prototype.handleFlyoutStart=function(a,b){if(this.hasStarted_)throw Error("Tried to call gesture.handleFlyoutStart, but the gesture had already been started.");this.setStartFlyout_(b);this.handleWsStart(a,b.getWorkspace())}; +module$exports$Blockly$Gesture.Gesture.prototype.handleBlockStart=function(a,b){if(this.hasStarted_)throw Error("Tried to call gesture.handleBlockStart, but the gesture had already been started.");this.setStartBlock(b);this.mostRecentEvent_=a};module$exports$Blockly$Gesture.Gesture.prototype.handleBubbleStart=function(a,b){if(this.hasStarted_)throw Error("Tried to call gesture.handleBubbleStart, but the gesture had already been started.");this.setStartBubble(b);this.mostRecentEvent_=a}; +module$exports$Blockly$Gesture.Gesture.prototype.doBubbleClick_=function(){this.startBubble_.setFocus&&this.startBubble_.setFocus();this.startBubble_.select&&this.startBubble_.select()};module$exports$Blockly$Gesture.Gesture.prototype.doFieldClick_=function(){this.startField_.showEditor(this.mostRecentEvent_);this.bringBlockToFront_()}; +module$exports$Blockly$Gesture.Gesture.prototype.doBlockClick_=function(){if(this.flyout_&&this.flyout_.autoClose)this.targetBlock_.isEnabled()&&((0,module$exports$Blockly$Events$utils.getGroup)()||(0,module$exports$Blockly$Events$utils.setGroup)(!0),this.flyout_.createBlock(this.targetBlock_).scheduleSnapAndBump());else{var a=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CLICK))(this.startBlock_,this.startWorkspace_.id,"block");(0,module$exports$Blockly$Events$utils.fire)(a)}this.bringBlockToFront_(); +(0,module$exports$Blockly$Events$utils.setGroup)(!1)};module$exports$Blockly$Gesture.Gesture.prototype.doWorkspaceClick_=function(a){a=this.creatorWorkspace_;(0,$.module$exports$Blockly$common.getSelected)()&&(0,$.module$exports$Blockly$common.getSelected)().unselect();this.fireWorkspaceClick_(this.startWorkspace_||a)};module$exports$Blockly$Gesture.Gesture.prototype.bringBlockToFront_=function(){this.targetBlock_&&!this.flyout_&&this.targetBlock_.bringToFront()}; +module$exports$Blockly$Gesture.Gesture.prototype.setStartField=function(a){if(this.hasStarted_)throw Error("Tried to call gesture.setStartField, but the gesture had already been started.");this.startField_||(this.startField_=a)};module$exports$Blockly$Gesture.Gesture.prototype.setStartBubble=function(a){this.startBubble_||(this.startBubble_=a)}; +module$exports$Blockly$Gesture.Gesture.prototype.setStartBlock=function(a){this.startBlock_||this.startBubble_||(this.startBlock_=a,a.isInFlyout&&a!==a.getRootBlock()?this.setTargetBlock_(a.getRootBlock()):this.setTargetBlock_(a))};module$exports$Blockly$Gesture.Gesture.prototype.setTargetBlock_=function(a){a.isShadow()?this.setTargetBlock_(a.getParent()):this.targetBlock_=a}; +module$exports$Blockly$Gesture.Gesture.prototype.setStartWorkspace_=function(a){this.startWorkspace_||(this.startWorkspace_=a)};module$exports$Blockly$Gesture.Gesture.prototype.setStartFlyout_=function(a){this.flyout_||(this.flyout_=a)};module$exports$Blockly$Gesture.Gesture.prototype.isBubbleClick_=function(){return!!this.startBubble_&&!this.hasExceededDragRadius_};module$exports$Blockly$Gesture.Gesture.prototype.isBlockClick_=function(){return!!this.startBlock_&&!this.hasExceededDragRadius_&&!this.isFieldClick_()}; +module$exports$Blockly$Gesture.Gesture.prototype.isFieldClick_=function(){return(this.startField_?this.startField_.isClickable():!1)&&!this.hasExceededDragRadius_&&(!this.flyout_||!this.flyout_.autoClose)};module$exports$Blockly$Gesture.Gesture.prototype.isWorkspaceClick_=function(){return!this.startBlock_&&!this.startBubble_&&!this.startField_&&!this.hasExceededDragRadius_}; +module$exports$Blockly$Gesture.Gesture.prototype.isDragging=function(){return this.isDraggingWorkspace_||this.isDraggingBlock_||this.isDraggingBubble_};module$exports$Blockly$Gesture.Gesture.prototype.hasStarted=function(){return this.hasStarted_};module$exports$Blockly$Gesture.Gesture.prototype.getInsertionMarkers=function(){return this.blockDragger_?this.blockDragger_.getInsertionMarkers():[]}; +module$exports$Blockly$Gesture.Gesture.prototype.getCurrentDragger=function(){return this.isDraggingBlock_?this.blockDragger_:this.isDraggingWorkspace_?this.workspaceDragger_:this.isDraggingBubble_?this.bubbleDragger_:null};module$exports$Blockly$Gesture.Gesture.inProgress=function(){for(var a=module$exports$Blockly$Workspace.Workspace.getAll(),b=0,c;c=a[b];b++)if(c.currentGesture_)return!0;return!1};var module$exports$Blockly$Field={Field:function(a,b,c){this.name=void 0;this.value_=this.constructor.prototype.DEFAULT_VALUE;this.tooltip_=this.validator_=null;this.size_=new module$exports$Blockly$utils$Size.Size(0,0);this.constants_=this.mouseDownWrapper_=this.textContent_=this.textElement_=this.borderRect_=this.fieldGroup_=this.markerSvg_=this.cursorSvg_=null;this.disposed=!1;this.maxDisplayLength=50;this.sourceBlock_=null;this.enabled_=this.visible_=this.isDirty_=!0;this.suffixField=this.prefixField= +this.clickTarget_=null;this.EDITABLE=!0;this.SERIALIZABLE=!1;this.CURSOR="";a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}};module$exports$Blockly$Field.Field.prototype.configure_=function(a){var b=a.tooltip;"string"===typeof b&&(b=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.tooltip));b&&this.setTooltip(b)}; +module$exports$Blockly$Field.Field.prototype.setSourceBlock=function(a){if(this.sourceBlock_)throw Error("Field already bound to a block");this.sourceBlock_=a};module$exports$Blockly$Field.Field.prototype.getConstants=function(){!this.constants_&&this.sourceBlock_&&this.sourceBlock_.workspace&&this.sourceBlock_.workspace.rendered&&(this.constants_=this.sourceBlock_.workspace.getRenderer().getConstants());return this.constants_};module$exports$Blockly$Field.Field.prototype.getSourceBlock=function(){return this.sourceBlock_}; +module$exports$Blockly$Field.Field.prototype.init=function(){this.fieldGroup_||(this.fieldGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{},null),this.isVisible()||(this.fieldGroup_.style.display="none"),this.sourceBlock_.getSvgRoot().appendChild(this.fieldGroup_),this.initView(),this.updateEditable(),this.setTooltip(this.tooltip_),this.bindEvents_(),this.initModel())}; +module$exports$Blockly$Field.Field.prototype.initView=function(){this.createBorderRect_();this.createTextElement_()};module$exports$Blockly$Field.Field.prototype.initModel=function(){}; +module$exports$Blockly$Field.Field.prototype.createBorderRect_=function(){this.borderRect_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{rx:this.getConstants().FIELD_BORDER_RECT_RADIUS,ry:this.getConstants().FIELD_BORDER_RECT_RADIUS,x:0,y:0,height:this.size_.height,width:this.size_.width,"class":"blocklyFieldRect"},this.fieldGroup_)}; +module$exports$Blockly$Field.Field.prototype.createTextElement_=function(){this.textElement_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.TEXT,{"class":"blocklyText"},this.fieldGroup_);this.getConstants().FIELD_TEXT_BASELINE_CENTER&&this.textElement_.setAttribute("dominant-baseline","central");this.textContent_=document.createTextNode("");this.textElement_.appendChild(this.textContent_)}; +module$exports$Blockly$Field.Field.prototype.bindEvents_=function(){(0,module$exports$Blockly$Tooltip.bindMouseEvents)(this.getClickTarget_());this.mouseDownWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(this.getClickTarget_(),"mousedown",this,this.onMouseDown_)};module$exports$Blockly$Field.Field.prototype.fromXml=function(a){this.setValue(a.textContent)};module$exports$Blockly$Field.Field.prototype.toXml=function(a){a.textContent=this.getValue();return a}; +module$exports$Blockly$Field.Field.prototype.saveState=function(a){a=this.saveLegacyState(module$exports$Blockly$Field.Field);return null!==a?a:this.getValue()};module$exports$Blockly$Field.Field.prototype.loadState=function(a){this.loadLegacyState(module$exports$Blockly$Field.Field,a)||this.setValue(a)}; +module$exports$Blockly$Field.Field.prototype.saveLegacyState=function(a){return a.prototype.saveState===this.saveState&&a.prototype.toXml!==this.toXml?(a=(0,$.module$exports$Blockly$utils$xml.createElement)("field"),a.setAttribute("name",this.name||""),(0,$.module$exports$Blockly$Xml.domToText)(this.toXml(a)).replace(' xmlns="https://developers.google.com/blockly/xml"',"")):null}; +module$exports$Blockly$Field.Field.prototype.loadLegacyState=function(a,b){return a.prototype.loadState===this.loadState&&a.prototype.fromXml!==this.fromXml?(this.fromXml((0,$.module$exports$Blockly$Xml.textToDom)(b)),!0):!1}; +module$exports$Blockly$Field.Field.prototype.dispose=function(){(0,module$exports$Blockly$dropDownDiv.hideIfOwner)(this);(0,module$exports$Blockly$WidgetDiv.hideIfOwner)(this);(0,module$exports$Blockly$Tooltip.unbindMouseEvents)(this.getClickTarget_());this.mouseDownWrapper_&&(0,module$exports$Blockly$browserEvents.unbind)(this.mouseDownWrapper_);(0,module$exports$Blockly$utils$dom.removeNode)(this.fieldGroup_);this.disposed=!0}; +module$exports$Blockly$Field.Field.prototype.updateEditable=function(){var a=this.fieldGroup_;this.EDITABLE&&a&&(this.enabled_&&this.sourceBlock_.isEditable()?((0,module$exports$Blockly$utils$dom.addClass)(a,"blocklyEditableText"),(0,module$exports$Blockly$utils$dom.removeClass)(a,"blocklyNonEditableText"),a.style.cursor=this.CURSOR):((0,module$exports$Blockly$utils$dom.addClass)(a,"blocklyNonEditableText"),(0,module$exports$Blockly$utils$dom.removeClass)(a,"blocklyEditableText"),a.style.cursor=""))}; +module$exports$Blockly$Field.Field.prototype.setEnabled=function(a){this.enabled_=a;this.updateEditable()};module$exports$Blockly$Field.Field.prototype.isEnabled=function(){return this.enabled_};module$exports$Blockly$Field.Field.prototype.isClickable=function(){return this.enabled_&&!!this.sourceBlock_&&this.sourceBlock_.isEditable()&&this.showEditor_!==module$exports$Blockly$Field.Field.prototype.showEditor_}; +module$exports$Blockly$Field.Field.prototype.isCurrentlyEditable=function(){return this.enabled_&&this.EDITABLE&&!!this.sourceBlock_&&this.sourceBlock_.isEditable()};module$exports$Blockly$Field.Field.prototype.isSerializable=function(){var a=!1;this.name&&(this.SERIALIZABLE?a=!0:this.EDITABLE&&(console.warn("Detected an editable field that was not serializable. Please define SERIALIZABLE property as true on all editable custom fields. Proceeding with serialization."),a=!0));return a}; +module$exports$Blockly$Field.Field.prototype.isVisible=function(){return this.visible_};module$exports$Blockly$Field.Field.prototype.setVisible=function(a){if(this.visible_!==a){this.visible_=a;var b=this.getSvgRoot();b&&(b.style.display=a?"block":"none")}};module$exports$Blockly$Field.Field.prototype.setValidator=function(a){this.validator_=a};module$exports$Blockly$Field.Field.prototype.getValidator=function(){return this.validator_};module$exports$Blockly$Field.Field.prototype.getSvgRoot=function(){return this.fieldGroup_}; +module$exports$Blockly$Field.Field.prototype.applyColour=function(){};module$exports$Blockly$Field.Field.prototype.render_=function(){this.textContent_&&(this.textContent_.nodeValue=this.getDisplayText_());this.updateSize_()};module$exports$Blockly$Field.Field.prototype.showEditor=function(a){this.isClickable()&&this.showEditor_(a)};module$exports$Blockly$Field.Field.prototype.showEditor_=function(a){}; +module$exports$Blockly$Field.Field.prototype.updateSize_=function(a){var b=this.getConstants();a=void 0!==a?a:this.borderRect_?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0;var c=2*a,d=b.FIELD_TEXT_HEIGHT,e=0;this.textElement_&&(e=(0,module$exports$Blockly$utils$dom.getFastTextWidth)(this.textElement_,b.FIELD_TEXT_FONTSIZE,b.FIELD_TEXT_FONTWEIGHT,b.FIELD_TEXT_FONTFAMILY),c+=e);this.borderRect_&&(d=Math.max(d,b.FIELD_BORDER_RECT_HEIGHT));this.size_.height=d;this.size_.width=c;this.positionTextElement_(a, +e);this.positionBorderRect_()};module$exports$Blockly$Field.Field.prototype.positionTextElement_=function(a,b){if(this.textElement_){var c=this.getConstants(),d=this.size_.height/2;this.textElement_.setAttribute("x",this.sourceBlock_.RTL?this.size_.width-b-a:a);this.textElement_.setAttribute("y",c.FIELD_TEXT_BASELINE_CENTER?d:d-c.FIELD_TEXT_HEIGHT/2+c.FIELD_TEXT_BASELINE)}}; +module$exports$Blockly$Field.Field.prototype.positionBorderRect_=function(){this.borderRect_&&(this.borderRect_.setAttribute("width",this.size_.width),this.borderRect_.setAttribute("height",this.size_.height),this.borderRect_.setAttribute("rx",this.getConstants().FIELD_BORDER_RECT_RADIUS),this.borderRect_.setAttribute("ry",this.getConstants().FIELD_BORDER_RECT_RADIUS))}; +module$exports$Blockly$Field.Field.prototype.getSize=function(){if(!this.isVisible())return new module$exports$Blockly$utils$Size.Size(0,0);this.isDirty_?(this.render_(),this.isDirty_=!1):this.visible_&&0===this.size_.width&&(console.warn("Deprecated use of setting size_.width to 0 to rerender a field. Set field.isDirty_ to true instead."),this.render_());return this.size_}; +module$exports$Blockly$Field.Field.prototype.getScaledBBox=function(){if(this.borderRect_){var a=this.borderRect_.getBoundingClientRect();var b=(0,module$exports$Blockly$utils$style.getPageOffset)(this.borderRect_);var c=a.width;var d=a.height}else d=this.sourceBlock_.getHeightWidth(),a=this.sourceBlock_.workspace.scale,b=this.getAbsoluteXY_(),c=d.width*a,d=d.height*a,module$exports$Blockly$utils$userAgent.GECKO?(b.x+=1.5*a,b.y+=1.5*a):module$exports$Blockly$utils$userAgent.EDGE||module$exports$Blockly$utils$userAgent.IE|| +(b.x-=.5*a,b.y-=.5*a),c+=1*a,d+=1*a;return new module$exports$Blockly$utils$Rect.Rect(b.y,b.y+d,b.x,b.x+c)};module$exports$Blockly$Field.Field.prototype.getDisplayText_=function(){var a=this.getText();if(!a)return module$exports$Blockly$Field.Field.NBSP;a.length>this.maxDisplayLength&&(a=a.substring(0,this.maxDisplayLength-2)+"\u2026");a=a.replace(/\s/g,module$exports$Blockly$Field.Field.NBSP);this.sourceBlock_&&this.sourceBlock_.RTL&&(a+="\u200f");return a}; +module$exports$Blockly$Field.Field.prototype.getText=function(){var a=this.getText_();return null!==a?String(a):String(this.getValue())};module$exports$Blockly$Field.Field.prototype.getText_=function(){return null};module$exports$Blockly$Field.Field.prototype.markDirty=function(){this.isDirty_=!0;this.constants_=null}; +module$exports$Blockly$Field.Field.prototype.forceRerender=function(){this.isDirty_=!0;this.sourceBlock_&&this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours(),this.updateMarkers_())}; +module$exports$Blockly$Field.Field.prototype.setValue=function(a){if(null!==a){var b=this.doClassValidation_(a);a=this.processValidation_(a,b);if(!(a instanceof Error)){if(b=this.getValidator())if(b=b.call(this,a),a=this.processValidation_(a,b),a instanceof Error)return;b=this.sourceBlock_;if(!b||!b.disposed){var c=this.getValue();c===a?this.doValueUpdate_(a):(this.doValueUpdate_(a),b&&(0,module$exports$Blockly$Events$utils.isEnabled)()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CHANGE))(b, +"field",this.name||null,c,a)),this.isDirty_&&this.forceRerender())}}}};module$exports$Blockly$Field.Field.prototype.processValidation_=function(a,b){if(null===b)return this.doValueInvalid_(a),this.isDirty_&&this.forceRerender(),Error();void 0!==b&&(a=b);return a};module$exports$Blockly$Field.Field.prototype.getValue=function(){return this.value_};module$exports$Blockly$Field.Field.prototype.doClassValidation_=function(a){return null===a||void 0===a?null:a}; +module$exports$Blockly$Field.Field.prototype.doValueUpdate_=function(a){this.value_=a;this.isDirty_=!0};module$exports$Blockly$Field.Field.prototype.doValueInvalid_=function(a){};module$exports$Blockly$Field.Field.prototype.onMouseDown_=function(a){this.sourceBlock_&&this.sourceBlock_.workspace&&(a=this.sourceBlock_.workspace.getGesture(a))&&a.setStartField(this)}; +module$exports$Blockly$Field.Field.prototype.setTooltip=function(a){a||""===a||(a=this.sourceBlock_);var b=this.getClickTarget_();b?b.tooltip=a:this.tooltip_=a};module$exports$Blockly$Field.Field.prototype.getTooltip=function(){var a=this.getClickTarget_();return a?(0,module$exports$Blockly$Tooltip.getTooltipOfObject)(a):(0,module$exports$Blockly$Tooltip.getTooltipOfObject)({tooltip:this.tooltip_})}; +module$exports$Blockly$Field.Field.prototype.getClickTarget_=function(){return this.clickTarget_||this.getSvgRoot()};module$exports$Blockly$Field.Field.prototype.getAbsoluteXY_=function(){return(0,module$exports$Blockly$utils$style.getPageOffset)(this.getClickTarget_())};module$exports$Blockly$Field.Field.prototype.referencesVariables=function(){return!1};module$exports$Blockly$Field.Field.prototype.refreshVariableName=function(){}; +module$exports$Blockly$Field.Field.prototype.getParentInput=function(){for(var a=null,b=this.sourceBlock_,c=b.inputList,d=0;da.height;e&&(b-=d);this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"rowSpacerRect blockRenderDebug",x:c?-(a.xPos+a.width):a.xPos,y:b,width:a.width,height:d,stroke:e?"black":"blue",fill:"blue","fill-opacity":"0.5","stroke-width":"1px"}, +this.svgRoot_))}}; +module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawSpacerElem=function(a,b,c){if(module$exports$Blockly$blockRendering$Debug.Debug.config.elemSpacers){b=Math.abs(a.width);var d=0>a.width,e=d?a.xPos-b:a.xPos;c&&(e=-(e+b));this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"elemSpacerRect blockRenderDebug",x:e,y:a.centerline-a.height/2,width:b,height:a.height,stroke:"pink",fill:d?"black":"pink","fill-opacity":"0.5", +"stroke-width":"1px"},this.svgRoot_))}}; +module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawRenderedElem=function(a,b){if(module$exports$Blockly$blockRendering$Debug.Debug.config.elems){var c=a.xPos;b&&(c=-(c+a.width));b=a.centerline-a.height/2;this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"rowRenderingRect blockRenderDebug",x:c,y:b,width:a.width,height:a.height,stroke:"black",fill:"none","stroke-width":"1px"},this.svgRoot_));module$exports$Blockly$blockRendering$Types.Types.isField(a)&& +a instanceof module$exports$Blockly$blockRendering$Field.Field&&a.field instanceof $.module$exports$Blockly$FieldLabel.FieldLabel&&this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"rowRenderingRect blockRenderDebug",x:c,y:b+this.constants_.FIELD_TEXT_BASELINE,width:a.width,height:"0.1px",stroke:"red",fill:"none","stroke-width":"0.5px"},this.svgRoot_))}module$exports$Blockly$blockRendering$Types.Types.isInput(a)&&a instanceof +module$exports$Blockly$blockRendering$InputConnection.InputConnection&&module$exports$Blockly$blockRendering$Debug.Debug.config.connections&&this.drawConnection(a.connectionModel)}; +module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawConnection=function(a){if(module$exports$Blockly$blockRendering$Debug.Debug.config.connections){if(a.type===$.module$exports$Blockly$ConnectionType.ConnectionType.INPUT_VALUE){var b=4;var c="magenta";var d="none"}else a.type===$.module$exports$Blockly$ConnectionType.ConnectionType.OUTPUT_VALUE?(b=2,d=c="magenta"):a.type===$.module$exports$Blockly$ConnectionType.ConnectionType.NEXT_STATEMENT?(b=4,c="goldenrod",d="none"):a.type===$.module$exports$Blockly$ConnectionType.ConnectionType.PREVIOUS_STATEMENT&& +(b=2,d=c="goldenrod");this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{"class":"blockRenderDebug",cx:a.offsetInBlock_.x,cy:a.offsetInBlock_.y,r:b,fill:d,stroke:c},this.svgRoot_))}}; +module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawRenderedRow=function(a,b,c){module$exports$Blockly$blockRendering$Debug.Debug.config.rows&&(this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"elemRenderingRect blockRenderDebug",x:c?-(a.xPos+a.width):a.xPos,y:a.yPos,width:a.width,height:a.height,stroke:"red",fill:"none","stroke-width":"1px"},this.svgRoot_)),module$exports$Blockly$blockRendering$Types.Types.isTopOrBottomRow(a)|| +module$exports$Blockly$blockRendering$Debug.Debug.config.connectedBlockBounds&&this.debugElements_.push((0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"connectedBlockWidth blockRenderDebug",x:c?-(a.xPos+a.widthWithConnectedBlocks):a.xPos,y:a.yPos,width:a.widthWithConnectedBlocks,height:a.height,stroke:this.randomColour_,fill:"none","stroke-width":"1px","stroke-dasharray":"3,3"},this.svgRoot_)))}; +module$exports$Blockly$blockRendering$Debug.Debug.prototype.drawRowWithElements=function(a,b,c){for(var d=0;da||a>this.fieldRow.length)throw Error("index "+a+" out of bounds.");if(!(b||""===b&&c))return a;"string"===typeof b&&(b=(0,module$exports$Blockly$fieldRegistry.fromJson)({type:"field_label",text:b}));b.setSourceBlock(this.sourceBlock_);this.sourceBlock_.rendered&&(b.init(),b.applyColour());b.name=c;b.setVisible(this.isVisible());b.prefixField&&(a=this.insertFieldAt(a,b.prefixField));this.fieldRow.splice(a,0,b);a++;b.suffixField&& +(a=this.insertFieldAt(a,b.suffixField));this.sourceBlock_.rendered&&(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours());return a}; +$.module$exports$Blockly$Input.Input.prototype.removeField=function(a,b){for(var c=0,d;d=this.fieldRow[c];c++)if(d.name===a)return d.dispose(),this.fieldRow.splice(c,1),this.sourceBlock_.rendered&&(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours()),!0;if(b)return!1;throw Error('Field "'+a+'" not found.');};$.module$exports$Blockly$Input.Input.prototype.isVisible=function(){return this.visible_}; +$.module$exports$Blockly$Input.Input.prototype.setVisible=function(a){var b=[];if(this.visible_===a)return b;this.visible_=a;for(var c=0,d;d=this.fieldRow[c];c++)d.setVisible(a);this.connection&&(this.connection=this.connection,a?b=this.connection.startTrackingAll():this.connection.stopTrackingAll(),c=this.connection.targetBlock())&&(c.getSvgRoot().style.display=a?"block":"none");return b};$.module$exports$Blockly$Input.Input.prototype.markDirty=function(){for(var a=0,b;b=this.fieldRow[a];a++)b.markDirty()}; +$.module$exports$Blockly$Input.Input.prototype.setCheck=function(a){if(!this.connection)throw Error("This input does not have a connection.");this.connection.setCheck(a);return this};$.module$exports$Blockly$Input.Input.prototype.setAlign=function(a){this.align=a;this.sourceBlock_.rendered&&(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render());return this}; +$.module$exports$Blockly$Input.Input.prototype.setShadowDom=function(a){if(!this.connection)throw Error("This input does not have a connection.");this.connection.setShadowDom(a);return this};$.module$exports$Blockly$Input.Input.prototype.getShadowDom=function(){if(!this.connection)throw Error("This input does not have a connection.");return this.connection.getShadowDom()};$.module$exports$Blockly$Input.Input.prototype.init=function(){if(this.sourceBlock_.workspace.rendered)for(var a=0;aa.length)){b=[];for(c=0;ca&&(e=e.substring(0,a-3)+"...");return e};module$exports$Blockly$Block.Block.prototype.appendValueInput=function(a){return this.appendInput_($.module$exports$Blockly$inputTypes.inputTypes.VALUE,a)}; +module$exports$Blockly$Block.Block.prototype.appendStatementInput=function(a){return this.appendInput_($.module$exports$Blockly$inputTypes.inputTypes.STATEMENT,a)};module$exports$Blockly$Block.Block.prototype.appendDummyInput=function(a){return this.appendInput_($.module$exports$Blockly$inputTypes.inputTypes.DUMMY,a||"")}; +module$exports$Blockly$Block.Block.prototype.jsonInit=function(a){var b=a.type?'Block "'+a.type+'": ':"";if(a.output&&a.previousStatement)throw Error(b+"Must not have both an output and a previousStatement.");a.style&&a.style.hat&&(this.hat=a.style.hat,a.style=null);if(a.style&&a.colour)throw Error(b+"Must not have both a colour and a style.");a.style?this.jsonInitStyle_(a,b):this.jsonInitColour_(a,b);for(var c=0;void 0!==a["message"+c];)this.interpolate_(a["message"+c],a["args"+c]||[],a["lastDummyAlign"+ +c],b),c++;void 0!==a.inputsInline&&this.setInputsInline(a.inputsInline);void 0!==a.output&&this.setOutput(!0,a.output);void 0!==a.outputShape&&this.setOutputShape(a.outputShape);void 0!==a.previousStatement&&this.setPreviousStatement(!0,a.previousStatement);void 0!==a.nextStatement&&this.setNextStatement(!0,a.nextStatement);void 0!==a.tooltip&&(c=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.tooltip),this.setTooltip(c));void 0!==a.enableContextMenu&&(this.contextMenu=!!a.enableContextMenu); +void 0!==a.suppressPrefixSuffix&&(this.suppressPrefixSuffix=!!a.suppressPrefixSuffix);void 0!==a.helpUrl&&(c=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.helpUrl),this.setHelpUrl(c));"string"===typeof a.extensions&&(console.warn(b+"JSON attribute 'extensions' should be an array of strings. Found raw string in JSON for '"+a.type+"' block."),a.extensions=[a.extensions]);void 0!==a.mutator&&(0,$.module$exports$Blockly$Extensions.apply)(a.mutator,this,!0);a=a.extensions;if(Array.isArray(a))for(b= +0;bf||f>b)throw Error('Block "'+this.type+'": Message index %'+f+" out of range.");if(c[f])throw Error('Block "'+this.type+'": Message index %'+f+" duplicated.");c[f]=!0;d++}}if(d!==b)throw Error('Block "'+this.type+'": Message does not reference all '+b+" arg(s).");}; +module$exports$Blockly$Block.Block.prototype.interpolateArguments_=function(a,b,c){for(var d=[],e=0;e=this.inputList.length)throw RangeError("Input index "+a+" out of bounds.");if(b>this.inputList.length)throw RangeError("Reference input "+b+" out of bounds.");var c=this.inputList[a];this.inputList.splice(a,1);a=this.connections_.length)return-1;b=a.y;for(var d=c;0<=d&&this.connections_[d].y===b;){if(this.connections_[d]===a)return d;d--}for(d=c;da)c=d;else{b=d;break}}return b}; +module$exports$Blockly$ConnectionDB.ConnectionDB.prototype.removeConnection=function(a,b){a=this.findIndexOfConnection_(a,b);if(-1===a)throw Error("Unable to find connection in connectionDB.");this.connections_.splice(a,1)}; +module$exports$Blockly$ConnectionDB.ConnectionDB.prototype.getNeighbours=function(a,b){function c(l){var m=e-d[l].x,n=f-d[l].y;Math.sqrt(m*m+n*n)<=b&&k.push(d[l]);return nthis.previousScale_){var c=b-this.previousScale_;c=0Object.keys(this.cachedPoints_).length&&(this.cachedPoints_=Object.create(null),this.previousScale_=0)}; +module$exports$Blockly$TouchGesture.TouchGesture.prototype.getTouchPoint=function(a){return this.startWorkspace_?new module$exports$Blockly$utils$Coordinate.Coordinate(a.changedTouches?a.changedTouches[0].pageX:a.pageX,a.changedTouches?a.changedTouches[0].pageY:a.pageY):null};var module$exports$Blockly$WorkspaceAudio={},module$contents$Blockly$WorkspaceAudio_SOUND_LIMIT=100;module$exports$Blockly$WorkspaceAudio.WorkspaceAudio=function(a){this.parentWorkspace_=a;this.SOUNDS_=Object.create(null);this.lastSound_=null};module$exports$Blockly$WorkspaceAudio.WorkspaceAudio.prototype.dispose=function(){this.SOUNDS_=this.parentWorkspace_=null}; +module$exports$Blockly$WorkspaceAudio.WorkspaceAudio.prototype.load=function(a,b){if(a.length){try{var c=new $.module$exports$Blockly$utils$global.globalThis.Audio}catch(h){return}for(var d,e=0;eMath.abs(b-this.oldTop_)&&1>Math.abs(c-this.oldLeft_))){var d=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.VIEWPORT_CHANGE))(b,c,a,this.id,this.oldScale_);this.oldScale_=a;this.oldTop_=b;this.oldLeft_=c;(0,module$exports$Blockly$Events$utils.fire)(d)}}}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.translate=function(a,b){if(this.useWorkspaceDragSurface_&&this.isDragSurfaceActive_)this.workspaceDragSurface_.translateSurface(a,b);else{var c="translate("+a+","+b+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",c);this.svgBubbleCanvas_.setAttribute("transform",c)}this.blockDragSurface_&&this.blockDragSurface_.translateAndScaleGroup(a,b,this.scale);this.grid_&&this.grid_.moveTo(a,b);this.maybeFireViewportChangeEvent()}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.resetDragSurface=function(){if(this.useWorkspaceDragSurface_){this.isDragSurfaceActive_=!1;var a=this.workspaceDragSurface_.getSurfaceTranslation();this.workspaceDragSurface_.clearAndHide(this.svgGroup_);a="translate("+a.x+","+a.y+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",a);this.svgBubbleCanvas_.setAttribute("transform",a)}}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.setupDragSurface=function(){if(this.useWorkspaceDragSurface_&&!this.isDragSurfaceActive_){this.isDragSurfaceActive_=!0;var a=this.svgBlockCanvas_.previousSibling,b=parseInt(this.getParentSvg().getAttribute("width"),10),c=parseInt(this.getParentSvg().getAttribute("height"),10),d=(0,module$exports$Blockly$utils$svgMath.getRelativeXY)(this.getCanvas());this.workspaceDragSurface_.setContentsAndShow(this.getCanvas(),this.getBubbleCanvas(),a,b, +c,this.scale);this.workspaceDragSurface_.translateSurface(d.x,d.y)}};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.getBlockDragSurface=function(){return this.blockDragSurface_};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.getWidth=function(){var a=this.getMetrics();return a?a.viewWidth/this.scale:0}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.setVisible=function(a){this.isVisible_=a;if(this.svgGroup_)if(this.scrollbar&&this.scrollbar.setContainerVisible(a),this.getFlyout()&&this.getFlyout().setContainerVisible(a),this.getParentSvg().style.display=a?"block":"none",this.toolbox_&&this.toolbox_.setVisible(a),a){a=this.getAllBlocks(!1);for(var b=a.length-1;0<=b;b--)a[b].markDirty();this.render();this.toolbox_&&this.toolbox_.position()}else this.hideChaff(!0)}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.render=function(){for(var a=this.getAllBlocks(!1),b=a.length-1;0<=b;b--)a[b].render(!1);if(this.currentGesture_)for(a=this.currentGesture_.getInsertionMarkers(),b=0;b=Math.abs(c-h.x)&&1>=Math.abs(d-h.y)){f=!0;break}}if(!f){var k=e.getConnections_(!1);a=0;for(b=void 0;b=k[a];a++)if(b.closest($.module$exports$Blockly$config.config.snapRadius,new module$exports$Blockly$utils$Coordinate.Coordinate(c,d)).connection){f=!0;break}}f&&(c=this.RTL?c-$.module$exports$Blockly$config.config.snapRadius:c+$.module$exports$Blockly$config.config.snapRadius,d+=2*$.module$exports$Blockly$config.config.snapRadius)}while(f); +e.moveTo(new module$exports$Blockly$utils$Coordinate.Coordinate(c,d))}}finally{(0,module$exports$Blockly$Events$utils.enable)()}(0,module$exports$Blockly$Events$utils.isEnabled)()&&!e.isShadow()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CREATE))(e));e.select();return e}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.pasteWorkspaceComment_=function(a){(0,module$exports$Blockly$Events$utils.disable)();try{var b=module$exports$Blockly$WorkspaceCommentSvg.fromXml(a,this);var c=parseInt(a.getAttribute("x"),10),d=parseInt(a.getAttribute("y"),10);isNaN(c)||isNaN(d)||(this.RTL&&(c=-c),b.moveBy(c+50,d+50))}finally{(0,module$exports$Blockly$Events$utils.enable)()}(0,module$exports$Blockly$Events$utils.isEnabled)()&&module$exports$Blockly$WorkspaceComment.fireCreateEvent(b); +b.select();return b};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.refreshToolboxSelection=function(){var a=this.isFlyout?this.targetWorkspace:this;a&&!a.currentGesture_&&a.toolbox_&&a.toolbox_.getFlyout()&&a.toolbox_.refreshSelection()};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.renameVariableById=function(a,b){module$exports$Blockly$Workspace.Workspace.prototype.renameVariableById.call(this,a,b);this.refreshToolboxSelection()}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.deleteVariableById=function(a){module$exports$Blockly$Workspace.Workspace.prototype.deleteVariableById.call(this,a);this.refreshToolboxSelection()};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.createVariable=function(a,b,c){a=module$exports$Blockly$Workspace.Workspace.prototype.createVariable.call(this,a,b,c);this.refreshToolboxSelection();return a}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.recordDeleteAreas=function(){module$exports$Blockly$utils.deprecation.warn("WorkspaceSvg.prototype.recordDeleteAreas","June 2021","June 2022","WorkspaceSvg.prototype.recordDragTargets");this.recordDragTargets()}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.recordDragTargets=function(){var a=this.componentManager_.getComponents(module$exports$Blockly$ComponentManager.ComponentManager.Capability.DRAG_TARGET,!0);this.dragTargetAreas_=[];for(var b=0,c;c=a[b];b++){var d=c.getClientRect();d&&this.dragTargetAreas_.push({component:c,clientRect:d})}}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.getDragTarget=function(a){for(var b=0,c;c=this.dragTargetAreas_[b];b++)if(c.clientRect.contains(a.clientX,a.clientY))return c.component;return null};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.onMouseDown_=function(a){var b=this.getGesture(a);b&&b.handleWsStart(a,this)}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.startDrag=function(a,b){a=(0,module$exports$Blockly$browserEvents.mouseToSvg)(a,this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;this.dragDeltaXY_=module$exports$Blockly$utils$Coordinate.Coordinate.difference(b,a)}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.moveDrag=function(a){a=(0,module$exports$Blockly$browserEvents.mouseToSvg)(a,this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;return module$exports$Blockly$utils$Coordinate.Coordinate.sum(this.dragDeltaXY_,a)};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isDragging=function(){return null!==this.currentGesture_&&this.currentGesture_.isDragging()}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isDraggable=function(){return this.options.moveOptions&&this.options.moveOptions.drag};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isMovable=function(){return this.options.moveOptions&&!!this.options.moveOptions.scrollbars||this.options.moveOptions&&this.options.moveOptions.wheel||this.options.moveOptions&&this.options.moveOptions.drag||this.options.zoomOptions&&this.options.zoomOptions.wheel||this.options.zoomOptions&&this.options.zoomOptions.pinch}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isMovableHorizontally=function(){var a=!!this.scrollbar;return this.isMovable()&&(!a||a&&this.scrollbar.canScrollHorizontally())};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.isMovableVertically=function(){var a=!!this.scrollbar;return this.isMovable()&&(!a||a&&this.scrollbar.canScrollVertically())}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.onMouseWheel_=function(a){if(module$exports$Blockly$Gesture.Gesture.inProgress())a.preventDefault(),a.stopPropagation();else{var b=this.options.zoomOptions&&this.options.zoomOptions.wheel,c=this.options.moveOptions&&this.options.moveOptions.wheel;if(b||c){var d=(0,module$exports$Blockly$browserEvents.getScrollDeltaPixels)(a);if(module$exports$Blockly$utils$userAgent.MAC)var e=a.metaKey;b&&(a.ctrlKey||e||!c)?(d=-d.y/50,b=(0,module$exports$Blockly$browserEvents.mouseToSvg)(a, +this.getParentSvg(),this.getInverseScreenCTM()),this.zoom(b.x,b.y,d)):(b=this.scrollX-d.x,c=this.scrollY-d.y,a.shiftKey&&!d.x&&(b=this.scrollX-d.y,c=this.scrollY),this.scroll(b,c));a.preventDefault()}}}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.getBlocksBoundingBox=function(){var a=this.getTopBoundedElements();if(!a.length)return new module$exports$Blockly$utils$Rect.Rect(0,0,0,0);for(var b=a[0].getBoundingRectangle(),c=1;cb.bottom&&(b.bottom=d.bottom),d.leftb.right&&(b.right=d.right))}return b}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.cleanUp=function(){this.setResizesEnabled(!1);(0,module$exports$Blockly$Events$utils.setGroup)(!0);for(var a=this.getTopBlocks(!0),b=0,c=0,d;d=a[c];c++)if(d.isMovable()){var e=d.getRelativeToSurfaceXY();d.moveBy(-e.x,b-e.y);d.snapToGrid();b=d.getRelativeToSurfaceXY().y+d.getHeightWidth().height+this.renderer_.getConstants().MIN_BLOCK_HEIGHT}(0,module$exports$Blockly$Events$utils.setGroup)(!1);this.setResizesEnabled(!0)}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.showContextMenu=function(a){if(!this.options.readOnly&&!this.isFlyout){var b=module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.registry.getContextMenuOptions(module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.ScopeType.WORKSPACE,{workspace:this});this.configureContextMenu&&this.configureContextMenu(b,a);(0,$.module$exports$Blockly$ContextMenu.show)(a,b,this.RTL)}}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.updateToolbox=function(a){if(a=(0,module$exports$Blockly$utils$toolbox.convertToolboxDefToJson)(a)){if(!this.options.languageTree)throw Error("Existing toolbox is null. Can't create new toolbox.");if((0,module$exports$Blockly$utils$toolbox.hasCategories)(a)){if(!this.toolbox_)throw Error("Existing toolbox has no categories. Can't change mode.");this.options.languageTree=a;this.toolbox_.render(a)}else{if(!this.flyout_)throw Error("Existing toolbox has categories. Can't change mode."); +this.options.languageTree=a;this.flyout_.show(a)}}else if(this.options.languageTree)throw Error("Can't nullify an existing toolbox.");};module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.markFocused=function(){this.options.parentWorkspace?this.options.parentWorkspace.markFocused():((0,$.module$exports$Blockly$common.setMainWorkspace)(this),this.setBrowserFocus())}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.setBrowserFocus=function(){document.activeElement&&document.activeElement.blur&&document.activeElement.blur();try{this.getParentSvg().focus({preventScroll:!0})}catch(a){try{this.getParentSvg().parentNode.setActive()}catch(b){this.getParentSvg().parentNode.focus({preventScroll:!0})}}}; +module$exports$Blockly$WorkspaceSvg.WorkspaceSvg.prototype.zoom=function(a,b,c){c=Math.pow(this.options.zoomOptions.scaleSpeed,c);var d=this.scale*c;if(this.scale!==d){d>this.options.zoomOptions.maxScale?c=this.options.zoomOptions.maxScale/this.scale:dthis.options.zoomOptions.maxScale?a=this.options.zoomOptions.maxScale:this.options.zoomOptions.minScale&&a-b||a<-180+b||a>180-b?!0:!1}; +module$exports$Blockly$VerticalFlyout.VerticalFlyout.prototype.getClientRect=function(){if(!this.svgGroup_||this.autoClose||!this.isVisible())return null;var a=this.svgGroup_.getBoundingClientRect(),b=a.left;return this.toolboxPosition_===module$exports$Blockly$utils$toolbox.Position.LEFT?new module$exports$Blockly$utils$Rect.Rect(-1E9,1E9,-1E9,b+a.width):new module$exports$Blockly$utils$Rect.Rect(-1E9,1E9,b,1E9)}; +module$exports$Blockly$VerticalFlyout.VerticalFlyout.prototype.reflowInternal_=function(){this.workspace_.scale=this.getFlyoutScale();for(var a=0,b=this.workspace_.getTopBlocks(!1),c=0,d;d=b[c];c++){var e=d.getHeightWidth().width;d.outputConnection&&(e-=this.tabWidth_);a=Math.max(a,e)}for(c=0;d=this.buttons_[c];c++)a=Math.max(a,d.width);a+=1.5*this.MARGIN+this.tabWidth_;a*=this.workspace_.scale;a+=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness;if(this.width_!==a){for(c=0;d=b[c];c++){if(this.RTL){e= +d.getRelativeToSurfaceXY().x;var f=a/this.workspace_.scale-this.MARGIN;d.outputConnection||(f-=this.tabWidth_);d.moveBy(f-e,0)}this.rectMap_.has(d)&&this.moveRectToBlock_(this.rectMap_.get(d),d)}if(this.RTL)for(b=0;c=this.buttons_[b];b++)d=c.getPosition().y,c.moveTo(a/this.workspace_.scale-c.width-this.MARGIN-this.tabWidth_,d);this.targetWorkspace.toolboxPosition!==this.toolboxPosition_||this.toolboxPosition_!==module$exports$Blockly$utils$toolbox.Position.LEFT||this.targetWorkspace.getToolbox()|| +this.targetWorkspace.translate(this.targetWorkspace.scrollX+a,this.targetWorkspace.scrollY);this.width_=a;this.position();this.targetWorkspace.recordDragTargets()}};module$exports$Blockly$VerticalFlyout.VerticalFlyout.registryName="verticalFlyout";(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.FLYOUTS_VERTICAL_TOOLBOX,module$exports$Blockly$registry.DEFAULT,module$exports$Blockly$VerticalFlyout.VerticalFlyout);var module$exports$Blockly$IToolboxItem={IToolboxItem:function(){}};var module$exports$Blockly$ISelectableToolboxItem={ISelectableToolboxItem:function(){}};var module$exports$Blockly$ICollapsibleToolboxItem={ICollapsibleToolboxItem:function(){}};var module$exports$Blockly$ToolboxItem={ToolboxItem:function(a,b,c){this.id_=a.toolboxitemid||(0,module$exports$Blockly$utils$idGenerator.getNextUniqueId)();this.level_=(this.parent_=c||null)?this.parent_.getLevel()+1:0;this.toolboxItemDef_=a;this.parentToolbox_=b;this.workspace_=this.parentToolbox_.getWorkspace()}};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.init=function(){};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getDiv=function(){return null}; +module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getClickTarget=function(){return null};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getId=function(){return this.id_};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getParent=function(){return null};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.getLevel=function(){return this.level_};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.isSelectable=function(){return!1}; +module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.isCollapsible=function(){return!1};module$exports$Blockly$ToolboxItem.ToolboxItem.prototype.dispose=function(){};var module$exports$Blockly$ToolboxCategory={ToolboxCategory:function(a,b,c){module$exports$Blockly$ToolboxItem.ToolboxItem.call(this,a,b,c);this.colour_=this.name_="";this.labelDom_=this.iconDom_=this.rowContents_=this.rowDiv_=this.htmlDiv_=null;this.cssConfig_=this.makeDefaultCssConfig_();this.isDisabled_=this.isHidden_=!1;this.flyoutItems_=[]}};$.$jscomp.inherits(module$exports$Blockly$ToolboxCategory.ToolboxCategory,module$exports$Blockly$ToolboxItem.ToolboxItem); +module$exports$Blockly$ToolboxCategory.ToolboxCategory.prototype.init=function(){this.parseCategoryDef_(this.toolboxItemDef_);this.parseContents_(this.toolboxItemDef_);this.createDom_();"true"===this.toolboxItemDef_.hidden&&this.hide()}; +module$exports$Blockly$ToolboxCategory.ToolboxCategory.prototype.makeDefaultCssConfig_=function(){return{container:"blocklyToolboxCategory",row:"blocklyTreeRow",rowcontentcontainer:"blocklyTreeRowContentContainer",icon:"blocklyTreeIcon",label:"blocklyTreeLabel",contents:"blocklyToolboxContents",selected:"blocklyTreeSelected",openicon:"blocklyTreeIconOpen",closedicon:"blocklyTreeIconClosed"}}; +module$exports$Blockly$ToolboxCategory.ToolboxCategory.prototype.parseContents_=function(a){var b=a.contents;if(a.custom)this.flyoutItems_=a.custom;else if(b)for(a=0;a>>/sprites.png);\n height: 16px;\n vertical-align: middle;\n visibility: hidden;\n width: 16px;\n}\n\n.blocklyTreeIconClosed {\n background-position: -32px -1px;\n}\n\n.blocklyToolboxDiv[dir="RTL"] .blocklyTreeIconClosed {\n background-position: 0 -1px;\n}\n\n.blocklyTreeSelected>.blocklyTreeIconClosed {\n background-position: -32px -17px;\n}\n\n.blocklyToolboxDiv[dir="RTL"] .blocklyTreeSelected>.blocklyTreeIconClosed {\n background-position: 0 -17px;\n}\n\n.blocklyTreeIconOpen {\n background-position: -16px -1px;\n}\n\n.blocklyTreeSelected>.blocklyTreeIconOpen {\n background-position: -16px -17px;\n}\n\n.blocklyTreeLabel {\n cursor: default;\n font: 16px sans-serif;\n padding: 0 3px;\n vertical-align: middle;\n}\n\n.blocklyToolboxDelete .blocklyTreeLabel {\n cursor: url("<<>>/handdelete.cur"), auto;\n}\n\n.blocklyTreeSelected .blocklyTreeLabel {\n color: #fff;\n}\n'); +(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.TOOLBOX_ITEM,module$exports$Blockly$ToolboxCategory.ToolboxCategory.registrationName,module$exports$Blockly$ToolboxCategory.ToolboxCategory);var module$exports$Blockly$ToolboxSeparator={ToolboxSeparator:function(a,b){module$exports$Blockly$ToolboxItem.ToolboxItem.call(this,a,b);this.cssConfig_={container:"blocklyTreeSeparator"};this.htmlDiv_=null;(0,$.module$exports$Blockly$utils$object.mixin)(this.cssConfig_,a.cssconfig||a.cssConfig)}};$.$jscomp.inherits(module$exports$Blockly$ToolboxSeparator.ToolboxSeparator,module$exports$Blockly$ToolboxItem.ToolboxItem);module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.prototype.init=function(){this.createDom_()}; +module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.prototype.createDom_=function(){var a=document.createElement("div");(0,module$exports$Blockly$utils$dom.addClass)(a,this.cssConfig_.container);return this.htmlDiv_=a};module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.prototype.getDiv=function(){return this.htmlDiv_};module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.prototype.dispose=function(){(0,module$exports$Blockly$utils$dom.removeNode)(this.htmlDiv_)}; +module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.registrationName="sep";(0,module$exports$Blockly$Css.register)('\n.blocklyTreeSeparator {\n border-bottom: solid #e5e5e5 1px;\n height: 0;\n margin: 5px 0;\n}\n\n.blocklyToolboxDiv[layout="h"] .blocklyTreeSeparator {\n border-right: solid #e5e5e5 1px;\n border-bottom: none;\n height: auto;\n margin: 0 5px 0 5px;\n padding: 5px 0;\n width: 0;\n}\n'); +(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.TOOLBOX_ITEM,module$exports$Blockly$ToolboxSeparator.ToolboxSeparator.registrationName,module$exports$Blockly$ToolboxSeparator.ToolboxSeparator);var module$exports$Blockly$CollapsibleToolboxCategory={CollapsibleToolboxCategory:function(a,b,c){module$exports$Blockly$ToolboxCategory.ToolboxCategory.call(this,a,b,c);this.subcategoriesDiv_=null;this.expanded_=!1;this.toolboxItems_=[]}};$.$jscomp.inherits(module$exports$Blockly$CollapsibleToolboxCategory.CollapsibleToolboxCategory,module$exports$Blockly$ToolboxCategory.ToolboxCategory); +module$exports$Blockly$CollapsibleToolboxCategory.CollapsibleToolboxCategory.prototype.makeDefaultCssConfig_=function(){var a=module$exports$Blockly$ToolboxCategory.ToolboxCategory.prototype.makeDefaultCssConfig_.call(this);a.contents="blocklyToolboxContents";return a}; +module$exports$Blockly$CollapsibleToolboxCategory.CollapsibleToolboxCategory.prototype.parseContents_=function(a){var b=a.contents,c=!0;if(a.custom)this.flyoutItems_=a.custom;else if(b)for(a=0;a>>/handdelete.cur"), auto;\n}\n\n.blocklyToolboxGrab {\n cursor: url("<<>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n/* Category tree in Toolbox. */\n.blocklyToolboxDiv {\n background-color: #ddd;\n overflow-x: visible;\n overflow-y: auto;\n padding: 4px 0 4px 0;\n position: absolute;\n z-index: 70; /* so blocks go under toolbox when dragging */\n -webkit-tap-highlight-color: transparent; /* issue #1345 */\n}\n\n.blocklyToolboxContents {\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n}\n\n.blocklyToolboxContents:focus {\n outline: none;\n}\n'); +(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.TOOLBOX,module$exports$Blockly$registry.DEFAULT,module$exports$Blockly$Toolbox.Toolbox);var module$exports$Blockly$HorizontalFlyout={HorizontalFlyout:function(a){module$exports$Blockly$Flyout.Flyout.call(this,a);this.horizontalLayout=!0}};$.$jscomp.inherits(module$exports$Blockly$HorizontalFlyout.HorizontalFlyout,module$exports$Blockly$Flyout.Flyout); +module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.setMetrics_=function(a){if(this.isVisible()){var b=this.workspace_.getMetricsManager(),c=b.getScrollMetrics(),d=b.getViewMetrics();b=b.getAbsoluteMetrics();"number"===typeof a.x&&(this.workspace_.scrollX=-(c.left+(c.width-d.width)*a.x));this.workspace_.translate(this.workspace_.scrollX+b.left,this.workspace_.scrollY+b.top)}};module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.getX=function(){return 0}; +module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.getY=function(){if(!this.isVisible())return 0;var a=this.targetWorkspace.getMetricsManager(),b=a.getAbsoluteMetrics(),c=a.getViewMetrics();a=a.getToolboxMetrics();var d=this.toolboxPosition_===module$exports$Blockly$utils$toolbox.Position.TOP;return this.targetWorkspace.toolboxPosition===this.toolboxPosition_?this.targetWorkspace.getToolbox()?d?a.height:c.height-this.height_:d?0:c.height:d?0:c.height+b.top-this.height_}; +module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.position=function(){if(this.isVisible()&&this.targetWorkspace.isVisible()){var a=this.targetWorkspace.getMetricsManager().getViewMetrics();this.width_=a.width;this.setBackgroundPath_(a.width-2*this.CORNER_RADIUS,this.height_-this.CORNER_RADIUS);a=this.getX();var b=this.getY();this.positionAt_(this.width_,this.height_,a,b)}}; +module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.setBackgroundPath_=function(a,b){var c=this.toolboxPosition_===module$exports$Blockly$utils$toolbox.Position.TOP,d=["M 0,"+(c?0:this.CORNER_RADIUS)];c?(d.push("h",a+2*this.CORNER_RADIUS),d.push("v",b),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,this.CORNER_RADIUS),d.push("h",-a),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,-this.CORNER_RADIUS)):(d.push("a",this.CORNER_RADIUS, +this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,-this.CORNER_RADIUS),d.push("h",a),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,this.CORNER_RADIUS),d.push("v",b),d.push("h",-a-2*this.CORNER_RADIUS));d.push("z");this.svgBackground_.setAttribute("d",d.join(" "))};module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.scrollToStart=function(){this.workspace_.scrollbar.setX(this.RTL?Infinity:0)}; +module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.wheel_=function(a){var b=(0,module$exports$Blockly$browserEvents.getScrollDeltaPixels)(a);if(b=b.x||b.y){var c=this.workspace_.getMetricsManager(),d=c.getScrollMetrics();b=c.getViewMetrics().left-d.left+b;this.workspace_.scrollbar.setX(b);(0,module$exports$Blockly$WidgetDiv.hide)();(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)()}a.preventDefault();a.stopPropagation()}; +module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.layout_=function(a,b){this.workspace_.scale=this.targetWorkspace.scale;var c=this.MARGIN,d=c+this.tabWidth_;this.RTL&&(a=a.reverse());for(var e=0,f;f=a[e];e++)if("block"===f.type){f=f.block;for(var g=f.getDescendants(!1),h=0,k;k=g[h];h++)k.isInFlyout=!0;f.render();g=f.getSvgRoot();h=f.getHeightWidth();k=f.outputConnection?this.tabWidth_:0;k=this.RTL?d+h.width:d-k;f.moveBy(k,c);k=this.createRect_(f,k,c,h,e);d+=h.width+b[e];this.addBlockListeners_(g, +f,k)}else"button"===f.type&&(this.initFlyoutButton_(f.button,d,c),d+=f.button.width+b[e])};module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.isDragTowardWorkspace=function(a){a=Math.atan2(a.y,a.x)/Math.PI*180;var b=this.dragAngleRange_;return a<90+b&&a>90-b||a>-90-b&&a<-90+b?!0:!1}; +module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.getClientRect=function(){if(!this.svgGroup_||this.autoClose||!this.isVisible())return null;var a=this.svgGroup_.getBoundingClientRect(),b=a.top;return this.toolboxPosition_===module$exports$Blockly$utils$toolbox.Position.TOP?new module$exports$Blockly$utils$Rect.Rect(-1E9,b+a.height,-1E9,1E9):new module$exports$Blockly$utils$Rect.Rect(b,1E9,-1E9,1E9)}; +module$exports$Blockly$HorizontalFlyout.HorizontalFlyout.prototype.reflowInternal_=function(){this.workspace_.scale=this.getFlyoutScale();for(var a=0,b=this.workspace_.getTopBlocks(!1),c=0,d;d=b[c];c++)a=Math.max(a,d.getHeightWidth().height);c=this.buttons_;d=0;for(var e;e=c[d];d++)a=Math.max(a,e.height);a+=1.5*this.MARGIN;a*=this.workspace_.scale;a+=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness;if(this.height_!==a){for(c=0;d=b[c];c++)this.rectMap_.has(d)&&this.moveRectToBlock_(this.rectMap_.get(d), +d);this.targetWorkspace.toolboxPosition!==this.toolboxPosition_||this.toolboxPosition_!==module$exports$Blockly$utils$toolbox.Position.TOP||this.targetWorkspace.getToolbox()||this.targetWorkspace.translate(this.targetWorkspace.scrollX,this.targetWorkspace.scrollY+a);this.height_=a;this.position();this.targetWorkspace.recordDragTargets()}};(0,module$exports$Blockly$registry.register)(module$exports$Blockly$registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX,module$exports$Blockly$registry.DEFAULT,module$exports$Blockly$HorizontalFlyout.HorizontalFlyout);$.module$exports$Blockly$Generator={Generator:function(a){this.name_=a;this.FUNCTION_NAME_PLACEHOLDER_="{leCUI8hutHZI4480Dc}";this.FUNCTION_NAME_PLACEHOLDER_REGEXP_=new RegExp(this.FUNCTION_NAME_PLACEHOLDER_,"g");this.STATEMENT_SUFFIX=this.STATEMENT_PREFIX=this.INFINITE_LOOP_TRAP=null;this.INDENT=" ";this.COMMENT_WRAP=60;this.ORDER_OVERRIDES=[];this.isInitialized=null;this.RESERVED_WORDS_="";this.nameDB_=this.functionNames_=this.definitions_=void 0}}; +$.module$exports$Blockly$Generator.Generator.prototype.workspaceToCode=function(a){a||(console.warn("No workspace specified in workspaceToCode call. Guessing."),a=(0,$.module$exports$Blockly$common.getMainWorkspace)());var b=[];this.init(a);a=a.getTopBlocks(!0);for(var c=0,d;d=a[c];c++){var e=this.blockToCode(d);Array.isArray(e)&&(e=e[0]);e&&(d.outputConnection&&(e=this.scrubNakedValue(e),this.STATEMENT_PREFIX&&!d.suppressPrefixSuffix&&(e=this.injectId(this.STATEMENT_PREFIX,d)+e),this.STATEMENT_SUFFIX&& +!d.suppressPrefixSuffix&&(e+=this.injectId(this.STATEMENT_SUFFIX,d))),b.push(e))}b=b.join("\n");b=this.finish(b);b=b.replace(/^\s+\n/,"");b=b.replace(/\n\s+$/,"\n");return b=b.replace(/[ \t]+\n/g,"\n")};$.module$exports$Blockly$Generator.Generator.prototype.prefixLines=function(a,b){return b+a.replace(/(?!\n$)\n/g,"\n"+b)}; +$.module$exports$Blockly$Generator.Generator.prototype.allNestedComments=function(a){var b=[];a=a.getDescendants(!0);for(var c=0;c=a&&this.sourceBlock_.outputConnection&&!b}else this.fullBlockClickTarget_=!1;this.fullBlockClickTarget_?this.clickTarget_=this.sourceBlock_.getSvgRoot():this.createBorderRect_();this.createTextElement_()}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.doClassValidation_=function(a){return null===a||void 0===a?null:String(a)}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.doValueInvalid_=function(a){this.isBeingEdited_&&(this.isTextValid_=!1,a=this.value_,this.value_=this.htmlInput_.untypedDefaultValue_,this.sourceBlock_&&(0,module$exports$Blockly$Events$utils.isEnabled)()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CHANGE))(this.sourceBlock_,"field",this.name||null,a,this.value_)))}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.doValueUpdate_=function(a){this.isTextValid_=!0;this.value_=a;this.isBeingEdited_||(this.isDirty_=!0)};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.applyColour=function(){this.sourceBlock_&&this.getConstants().FULL_BLOCK_FIELDS&&(this.borderRect_?this.borderRect_.setAttribute("stroke",this.sourceBlock_.style.colourTertiary):this.sourceBlock_.pathObject.svgPath.setAttribute("fill",this.getConstants().FIELD_BORDER_RECT_COLOUR))}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.render_=function(){module$exports$Blockly$Field.Field.prototype.render_.call(this);if(this.isBeingEdited_){this.resizeEditor_();var a=this.htmlInput_;this.isTextValid_?((0,module$exports$Blockly$utils$dom.removeClass)(a,"blocklyInvalidInput"),(0,module$exports$Blockly$utils$aria.setState)(a,module$exports$Blockly$utils$aria.State.INVALID,!1)):((0,module$exports$Blockly$utils$dom.addClass)(a,"blocklyInvalidInput"),(0,module$exports$Blockly$utils$aria.setState)(a, +module$exports$Blockly$utils$aria.State.INVALID,!0))}};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.setSpellcheck=function(a){a!==this.spellcheck_&&(this.spellcheck_=a,this.htmlInput_&&this.htmlInput_.setAttribute("spellcheck",this.spellcheck_))}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showEditor_=function(a,b){this.workspace_=this.sourceBlock_.workspace;a=b||!1;!a&&(module$exports$Blockly$utils$userAgent.MOBILE||module$exports$Blockly$utils$userAgent.ANDROID||module$exports$Blockly$utils$userAgent.IPAD)?this.showPromptEditor_():this.showInlineEditor_(a)}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showPromptEditor_=function(){(0,module$exports$Blockly$dialog.prompt)($.module$exports$Blockly$Msg.Msg.CHANGE_VALUE_TITLE,this.getText(),function(a){null!==a&&this.setValue(this.getValueFromEditorText_(a))}.bind(this))}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showInlineEditor_=function(a){(0,module$exports$Blockly$WidgetDiv.show)(this,this.sourceBlock_.RTL,this.widgetDispose_.bind(this));this.htmlInput_=this.widgetCreate_();this.isBeingEdited_=!0;a||(this.htmlInput_.focus({preventScroll:!0}),this.htmlInput_.select())}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.widgetCreate_=function(){(0,module$exports$Blockly$Events$utils.setGroup)(!0);var a=(0,module$exports$Blockly$WidgetDiv.getDiv)();(0,module$exports$Blockly$utils$dom.addClass)(this.getClickTarget_(),"editing");var b=document.createElement("input");b.className="blocklyHtmlInput";b.setAttribute("spellcheck",this.spellcheck_);var c=this.workspace_.getScale(),d=this.getConstants().FIELD_TEXT_FONTSIZE*c+"pt";a.style.fontSize=d;b.style.fontSize= +d;d=$.module$exports$Blockly$FieldTextInput.FieldTextInput.BORDERRADIUS*c+"px";if(this.fullBlockClickTarget_){d=this.getScaledBBox();d=(d.bottom-d.top)/2+"px";var e=this.sourceBlock_.getParent()?this.sourceBlock_.getParent().style.colourTertiary:this.sourceBlock_.style.colourTertiary;b.style.border=1*c+"px solid "+e;a.style.borderRadius=d;a.style.transition="box-shadow 0.25s ease 0s";this.getConstants().FIELD_TEXTINPUT_BOX_SHADOW&&(a.style.boxShadow="rgba(255, 255, 255, 0.3) 0 0 0 "+4*c+"px")}b.style.borderRadius= +d;a.appendChild(b);b.value=b.defaultValue=this.getEditorText_(this.value_);b.untypedDefaultValue_=this.value_;b.oldValue_=null;this.resizeEditor_();this.bindInputEvents_(b);return b}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.widgetDispose_=function(){this.isBeingEdited_=!1;this.isTextValid_=!0;this.forceRerender();this.onFinishEditing_(this.value_);(0,module$exports$Blockly$Events$utils.setGroup)(!1);this.unbindInputEvents_();var a=(0,module$exports$Blockly$WidgetDiv.getDiv)().style;a.width="auto";a.height="auto";a.fontSize="";a.transition="";a.boxShadow="";this.htmlInput_=null;(0,module$exports$Blockly$utils$dom.removeClass)(this.getClickTarget_(),"editing")}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.onFinishEditing_=function(a){};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.bindInputEvents_=function(a){this.onKeyDownWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(a,"keydown",this,this.onHtmlInputKeyDown_);this.onKeyInputWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(a,"input",this,this.onHtmlInputChange_)}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.unbindInputEvents_=function(){this.onKeyDownWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onKeyDownWrapper_),this.onKeyDownWrapper_=null);this.onKeyInputWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onKeyInputWrapper_),this.onKeyInputWrapper_=null)}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.onHtmlInputKeyDown_=function(a){a.keyCode===module$exports$Blockly$utils$KeyCodes.KeyCodes.ENTER?((0,module$exports$Blockly$WidgetDiv.hide)(),(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)()):a.keyCode===module$exports$Blockly$utils$KeyCodes.KeyCodes.ESC?(this.setValue(this.htmlInput_.untypedDefaultValue_),(0,module$exports$Blockly$WidgetDiv.hide)(),(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)()):a.keyCode=== +module$exports$Blockly$utils$KeyCodes.KeyCodes.TAB&&((0,module$exports$Blockly$WidgetDiv.hide)(),(0,module$exports$Blockly$dropDownDiv.hideWithoutAnimation)(),this.sourceBlock_.tab(this,!a.shiftKey),a.preventDefault())};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.onHtmlInputChange_=function(a){a=this.htmlInput_.value;a!==this.htmlInput_.oldValue_&&(this.htmlInput_.oldValue_=a,a=this.getValueFromEditorText_(a),this.setValue(a),this.forceRerender(),this.resizeEditor_())}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.setEditorValue_=function(a){this.isDirty_=!0;this.isBeingEdited_&&(this.htmlInput_.value=this.getEditorText_(a));this.setValue(a)}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.resizeEditor_=function(){var a=(0,module$exports$Blockly$WidgetDiv.getDiv)(),b=this.getScaledBBox();a.style.width=b.right-b.left+"px";a.style.height=b.bottom-b.top+"px";b=new module$exports$Blockly$utils$Coordinate.Coordinate(this.sourceBlock_.RTL?b.right-a.offsetWidth:b.left,b.top);a.style.left=b.x+"px";a.style.top=b.y+"px"};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.isTabNavigable=function(){return!0}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.getText_=function(){return this.isBeingEdited_&&this.htmlInput_?this.htmlInput_.value:null};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.getEditorText_=function(a){return String(a)};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.getValueFromEditorText_=function(a){return a}; +$.module$exports$Blockly$FieldTextInput.FieldTextInput.fromJson=function(a){return new this((0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.text),void 0,a)};$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.DEFAULT_VALUE="";$.module$exports$Blockly$FieldTextInput.FieldTextInput.BORDERRADIUS=4;(0,module$exports$Blockly$fieldRegistry.register)("field_input",$.module$exports$Blockly$FieldTextInput.FieldTextInput);var module$exports$Blockly$FieldNumber={FieldNumber:function(a,b,c,d,e,f){$.module$exports$Blockly$FieldTextInput.FieldTextInput.call(this,module$exports$Blockly$Field.Field.SKIP_SETUP);this.min_=-Infinity;this.max_=Infinity;this.precision_=0;this.decimalPlaces_=null;this.SERIALIZABLE=!0;a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(f?this.configure_(f):this.setConstraints(b,c,d),this.setValue(a),e&&this.setValidator(e))}};$.$jscomp.inherits(module$exports$Blockly$FieldNumber.FieldNumber,$.module$exports$Blockly$FieldTextInput.FieldTextInput); +module$exports$Blockly$FieldNumber.FieldNumber.prototype.configure_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.configure_.call(this,a);this.setMinInternal_(a.min);this.setMaxInternal_(a.max);this.setPrecisionInternal_(a.precision)};module$exports$Blockly$FieldNumber.FieldNumber.prototype.setConstraints=function(a,b,c){this.setMinInternal_(a);this.setMaxInternal_(b);this.setPrecisionInternal_(c);this.setValue(this.getValue())}; +module$exports$Blockly$FieldNumber.FieldNumber.prototype.setMin=function(a){this.setMinInternal_(a);this.setValue(this.getValue())};module$exports$Blockly$FieldNumber.FieldNumber.prototype.setMinInternal_=function(a){null==a?this.min_=-Infinity:(a=Number(a),isNaN(a)||(this.min_=a))};module$exports$Blockly$FieldNumber.FieldNumber.prototype.getMin=function(){return this.min_};module$exports$Blockly$FieldNumber.FieldNumber.prototype.setMax=function(a){this.setMaxInternal_(a);this.setValue(this.getValue())}; +module$exports$Blockly$FieldNumber.FieldNumber.prototype.setMaxInternal_=function(a){null==a?this.max_=Infinity:(a=Number(a),isNaN(a)||(this.max_=a))};module$exports$Blockly$FieldNumber.FieldNumber.prototype.getMax=function(){return this.max_};module$exports$Blockly$FieldNumber.FieldNumber.prototype.setPrecision=function(a){this.setPrecisionInternal_(a);this.setValue(this.getValue())}; +module$exports$Blockly$FieldNumber.FieldNumber.prototype.setPrecisionInternal_=function(a){this.precision_=Number(a)||0;var b=String(this.precision_);-1!==b.indexOf("e")&&(b=this.precision_.toLocaleString("en-US",{maximumFractionDigits:20}));var c=b.indexOf(".");this.decimalPlaces_=-1===c?a?0:null:b.length-c-1};module$exports$Blockly$FieldNumber.FieldNumber.prototype.getPrecision=function(){return this.precision_}; +module$exports$Blockly$FieldNumber.FieldNumber.prototype.doClassValidation_=function(a){if(null===a)return null;a=String(a);a=a.replace(/O/ig,"0");a=a.replace(/,/g,"");a=a.replace(/infinity/i,"Infinity");a=Number(a||0);if(isNaN(a))return null;a=Math.min(Math.max(a,this.min_),this.max_);this.precision_&&isFinite(a)&&(a=Math.round(a/this.precision_)*this.precision_);null!==this.decimalPlaces_&&(a=Number(a.toFixed(this.decimalPlaces_)));return a}; +module$exports$Blockly$FieldNumber.FieldNumber.prototype.widgetCreate_=function(){var a=$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.widgetCreate_.call(this);-Infinitythis.max_&&(0,module$exports$Blockly$utils$aria.setState)(a,module$exports$Blockly$utils$aria.State.VALUEMAX,this.max_);return a}; +module$exports$Blockly$FieldNumber.FieldNumber.fromJson=function(a){return new this(a.value,void 0,void 0,void 0,void 0,a)};module$exports$Blockly$FieldNumber.FieldNumber.prototype.DEFAULT_VALUE=0;(0,module$exports$Blockly$fieldRegistry.register)("field_number",module$exports$Blockly$FieldNumber.FieldNumber);var module$exports$Blockly$FieldMultilineInput={FieldMultilineInput:function(a,b,c){$.module$exports$Blockly$FieldTextInput.FieldTextInput.call(this,module$exports$Blockly$Field.Field.SKIP_SETUP);this.textGroup_=null;this.maxLines_=Infinity;this.isOverflowedY_=!1;a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}};$.$jscomp.inherits(module$exports$Blockly$FieldMultilineInput.FieldMultilineInput,$.module$exports$Blockly$FieldTextInput.FieldTextInput); +module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.configure_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.configure_.call(this,a);a.maxLines&&this.setMaxLines(a.maxLines)};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.toXml=function(a){a.textContent=this.getValue().replace(/\n/g," ");return a}; +module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.fromXml=function(a){this.setValue(a.textContent.replace(/ /g,"\n"))};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.saveState=function(){var a=this.saveLegacyState(module$exports$Blockly$FieldMultilineInput.FieldMultilineInput);return null!==a?a:this.getValue()}; +module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.loadState=function(a){this.loadLegacyState(module$exports$Blockly$Field.Field,a)||this.setValue(a)};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.initView=function(){this.createBorderRect_();this.textGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":"blocklyEditableText"},this.fieldGroup_)}; +module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.getDisplayText_=function(){var a=this.getText();if(!a)return module$exports$Blockly$Field.Field.NBSP;var b=a.split("\n");a="";for(var c=this.isOverflowedY_?this.maxLines_:b.length,d=0;dthis.maxDisplayLength?e=e.substring(0,this.maxDisplayLength-4)+"...":this.isOverflowedY_&&d===c-1&&(e=e.substring(0,e.length-3)+"...");e=e.replace(/\s/g,module$exports$Blockly$Field.Field.NBSP);a+=e;d!==c-1&&(a+="\n")}this.sourceBlock_.RTL&& +(a+="\u200f");return a};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.doValueUpdate_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.doValueUpdate_.call(this,a);this.isOverflowedY_=this.value_.split("\n").length>this.maxLines_}; +module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.render_=function(){for(var a;a=this.textGroup_.firstChild;)this.textGroup_.removeChild(a);a=this.getDisplayText_().split("\n");for(var b=0,c=0;cb&&(b=e);c+=this.getConstants().FIELD_TEXT_HEIGHT+(0this.maxDisplayLength&&(a[h]=a[h].substring(0,this.maxDisplayLength));d.textContent=a[h];var k=(0,module$exports$Blockly$utils$dom.getFastTextWidth)(d,e,f,g);k>b&&(b=k)}b+=this.htmlInput_.offsetWidth-this.htmlInput_.clientWidth}this.borderRect_&&(c+=2*this.getConstants().FIELD_BORDER_RECT_Y_PADDING,b+=2*this.getConstants().FIELD_BORDER_RECT_X_PADDING, +this.borderRect_.setAttribute("width",b),this.borderRect_.setAttribute("height",c));this.size_.width=b;this.size_.height=c;this.positionBorderRect_()};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.showEditor_=function(a,b){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showEditor_.call(this,a,b);this.forceRerender()}; +module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.widgetCreate_=function(){var a=(0,module$exports$Blockly$WidgetDiv.getDiv)(),b=this.workspace_.getScale(),c=document.createElement("textarea");c.className="blocklyHtmlInput blocklyHtmlTextAreaInput";c.setAttribute("spellcheck",this.spellcheck_);var d=this.getConstants().FIELD_TEXT_FONTSIZE*b+"pt";a.style.fontSize=d;c.style.fontSize=d;c.style.borderRadius=$.module$exports$Blockly$FieldTextInput.FieldTextInput.BORDERRADIUS*b+"px"; +d=this.getConstants().FIELD_BORDER_RECT_X_PADDING*b;var e=this.getConstants().FIELD_BORDER_RECT_Y_PADDING*b/2;c.style.padding=e+"px "+d+"px "+e+"px "+d+"px";d=this.getConstants().FIELD_TEXT_HEIGHT+this.getConstants().FIELD_BORDER_RECT_Y_PADDING;c.style.lineHeight=d*b+"px";a.appendChild(c);c.value=c.defaultValue=this.getEditorText_(this.value_);c.untypedDefaultValue_=this.value_;c.oldValue_=null;module$exports$Blockly$utils$userAgent.GECKO?setTimeout(this.resizeEditor_.bind(this),0):this.resizeEditor_(); +this.bindInputEvents_(c);return c};module$exports$Blockly$FieldMultilineInput.FieldMultilineInput.prototype.setMaxLines=function(a){"number"===typeof a&&0a?0>e&&0e&&(e=0):0d-1&&fd-1&&e--:0>b?0>f&&(f=0):0Math.floor(c.length/d)-1&&(f=Math.floor(c.length/d)-1);this.setHighlightedCell_(this.picker_.childNodes[f].childNodes[e], +f*d+e)};module$exports$Blockly$FieldColour.FieldColour.prototype.onMouseMove_=function(a){var b=(a=a.target)&&Number(a.getAttribute("data-index"));null!==b&&b!==this.highlightedIndex_&&this.setHighlightedCell_(a,b)};module$exports$Blockly$FieldColour.FieldColour.prototype.onMouseEnter_=function(){this.picker_.focus({preventScroll:!0})}; +module$exports$Blockly$FieldColour.FieldColour.prototype.onMouseLeave_=function(){this.picker_.blur();var a=this.getHighlighted_();a&&(0,module$exports$Blockly$utils$dom.removeClass)(a,"blocklyColourHighlighted")};module$exports$Blockly$FieldColour.FieldColour.prototype.getHighlighted_=function(){var a=this.columns_||module$exports$Blockly$FieldColour.FieldColour.COLUMNS,b=this.picker_.childNodes[Math.floor(this.highlightedIndex_/a)];return b?b.childNodes[this.highlightedIndex_%a]:null}; +module$exports$Blockly$FieldColour.FieldColour.prototype.setHighlightedCell_=function(a,b){var c=this.getHighlighted_();c&&(0,module$exports$Blockly$utils$dom.removeClass)(c,"blocklyColourHighlighted");(0,module$exports$Blockly$utils$dom.addClass)(a,"blocklyColourHighlighted");this.highlightedIndex_=b;(0,module$exports$Blockly$utils$aria.setState)(this.picker_,module$exports$Blockly$utils$aria.State.ACTIVEDESCENDANT,a.getAttribute("id"))}; +module$exports$Blockly$FieldColour.FieldColour.prototype.dropdownCreate_=function(){var a=this.columns_||module$exports$Blockly$FieldColour.FieldColour.COLUMNS,b=this.colours_||module$exports$Blockly$FieldColour.FieldColour.COLOURS,c=this.titles_||module$exports$Blockly$FieldColour.FieldColour.TITLES,d=this.getValue(),e=document.createElement("table");e.className="blocklyColourTable";e.tabIndex=0;e.dir="ltr";(0,module$exports$Blockly$utils$aria.setRole)(e,module$exports$Blockly$utils$aria.Role.GRID); +(0,module$exports$Blockly$utils$aria.setState)(e,module$exports$Blockly$utils$aria.State.EXPANDED,!0);(0,module$exports$Blockly$utils$aria.setState)(e,module$exports$Blockly$utils$aria.State.ROWCOUNT,Math.floor(b.length/a));(0,module$exports$Blockly$utils$aria.setState)(e,module$exports$Blockly$utils$aria.State.COLCOUNT,a);for(var f,g=0;gtr>td {\n border: .5px solid #888;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-block;\n height: 20px;\n padding: 0;\n width: 20px;\n}\n\n.blocklyColourTable>tr>td.blocklyColourHighlighted {\n border-color: #eee;\n box-shadow: 2px 2px 7px 2px rgba(0,0,0,.3);\n position: relative;\n}\n\n.blocklyColourSelected, .blocklyColourSelected:hover {\n border-color: #eee !important;\n outline: 1px solid #333;\n position: relative;\n}\n"); +(0,module$exports$Blockly$fieldRegistry.register)("field_colour",module$exports$Blockly$FieldColour.FieldColour);$.module$exports$Blockly$FieldCheckbox={FieldCheckbox:function(a,b,c){module$exports$Blockly$Field.Field.call(this,module$exports$Blockly$Field.Field.SKIP_SETUP);this.checkChar_=$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.CHECK_CHAR;this.SERIALIZABLE=!0;this.CURSOR="default";a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}};$.$jscomp.inherits($.module$exports$Blockly$FieldCheckbox.FieldCheckbox,module$exports$Blockly$Field.Field); +$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.configure_=function(a){module$exports$Blockly$Field.Field.prototype.configure_.call(this,a);a.checkCharacter&&(this.checkChar_=a.checkCharacter)};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.saveState=function(){var a=this.saveLegacyState($.module$exports$Blockly$FieldCheckbox.FieldCheckbox);return null!==a?a:this.getValueBoolean()}; +$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.initView=function(){module$exports$Blockly$Field.Field.prototype.initView.call(this);(0,module$exports$Blockly$utils$dom.addClass)(this.textElement_,"blocklyCheckbox");this.textElement_.style.display=this.value_?"block":"none"};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.render_=function(){this.textContent_&&(this.textContent_.nodeValue=this.getDisplayText_());this.updateSize_(this.getConstants().FIELD_CHECKBOX_X_OFFSET)}; +$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.getDisplayText_=function(){return this.checkChar_};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.setCheckCharacter=function(a){this.checkChar_=a||$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.CHECK_CHAR;this.forceRerender()};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.showEditor_=function(){this.setValue(!this.value_)}; +$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.doClassValidation_=function(a){return!0===a||"TRUE"===a?"TRUE":!1===a||"FALSE"===a?"FALSE":null};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.doValueUpdate_=function(a){this.value_=this.convertValueToBool_(a);this.textElement_&&(this.textElement_.style.display=this.value_?"block":"none")};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.getValue=function(){return this.value_?"TRUE":"FALSE"}; +$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.getValueBoolean=function(){return this.value_};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.getText=function(){return String(this.convertValueToBool_(this.value_))};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.convertValueToBool_=function(a){return"string"===typeof a?"TRUE"===a:!!a};$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.fromJson=function(a){return new this(a.checked,void 0,a)}; +$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.prototype.DEFAULT_VALUE=!1;$.module$exports$Blockly$FieldCheckbox.FieldCheckbox.CHECK_CHAR="\u2713";(0,module$exports$Blockly$fieldRegistry.register)("field_checkbox",$.module$exports$Blockly$FieldCheckbox.FieldCheckbox);var module$exports$Blockly$FieldAngle={FieldAngle:function(a,b,c){$.module$exports$Blockly$FieldTextInput.FieldTextInput.call(this,module$exports$Blockly$Field.Field.SKIP_SETUP);this.clockwise_=module$exports$Blockly$FieldAngle.FieldAngle.CLOCKWISE;this.offset_=module$exports$Blockly$FieldAngle.FieldAngle.OFFSET;this.wrap_=module$exports$Blockly$FieldAngle.FieldAngle.WRAP;this.round_=module$exports$Blockly$FieldAngle.FieldAngle.ROUND;this.moveSurfaceWrapper_=this.clickSurfaceWrapper_=this.clickWrapper_= +this.symbol_=this.line_=this.gauge_=this.editor_=null;this.SERIALIZABLE=!0;a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}};$.$jscomp.inherits(module$exports$Blockly$FieldAngle.FieldAngle,$.module$exports$Blockly$FieldTextInput.FieldTextInput); +module$exports$Blockly$FieldAngle.FieldAngle.prototype.configure_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.configure_.call(this,a);switch(a.mode){case "compass":this.clockwise_=!0;this.offset_=90;break;case "protractor":this.clockwise_=!1,this.offset_=0}var b=a.clockwise;"boolean"===typeof b&&(this.clockwise_=b);b=a.offset;null!==b&&(b=Number(b),isNaN(b)||(this.offset_=b));b=a.wrap;null!==b&&(b=Number(b),isNaN(b)||(this.wrap_=b));a=a.round;null!==a&&(a=Number(a), +isNaN(a)||(this.round_=a))};module$exports$Blockly$FieldAngle.FieldAngle.prototype.initView=function(){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.initView.call(this);this.symbol_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.TSPAN,{},null);this.symbol_.appendChild(document.createTextNode("\u00b0"));this.textElement_.appendChild(this.symbol_)}; +module$exports$Blockly$FieldAngle.FieldAngle.prototype.render_=function(){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.render_.call(this);this.updateGraph_()}; +module$exports$Blockly$FieldAngle.FieldAngle.prototype.showEditor_=function(a){$.module$exports$Blockly$FieldTextInput.FieldTextInput.prototype.showEditor_.call(this,a,module$exports$Blockly$utils$userAgent.MOBILE||module$exports$Blockly$utils$userAgent.ANDROID||module$exports$Blockly$utils$userAgent.IPAD);this.dropdownCreate_();(0,module$exports$Blockly$dropDownDiv.getContentDiv)().appendChild(this.editor_);(0,module$exports$Blockly$dropDownDiv.setColour)(this.sourceBlock_.style.colourPrimary,this.sourceBlock_.style.colourTertiary); +(0,module$exports$Blockly$dropDownDiv.showPositionedByField)(this,this.dropdownDispose_.bind(this));this.updateGraph_()}; +module$exports$Blockly$FieldAngle.FieldAngle.prototype.dropdownCreate_=function(){var a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.SVG,{xmlns:module$exports$Blockly$utils$dom.SVG_NS,"xmlns:html":module$exports$Blockly$utils$dom.HTML_NS,"xmlns:xlink":module$exports$Blockly$utils$dom.XLINK_NS,version:"1.1",height:2*module$exports$Blockly$FieldAngle.FieldAngle.HALF+"px",width:2*module$exports$Blockly$FieldAngle.FieldAngle.HALF+"px",style:"touch-action: none"}, +null),b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{cx:module$exports$Blockly$FieldAngle.FieldAngle.HALF,cy:module$exports$Blockly$FieldAngle.FieldAngle.HALF,r:module$exports$Blockly$FieldAngle.FieldAngle.RADIUS,"class":"blocklyAngleCircle"},a);this.gauge_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{"class":"blocklyAngleGauge"},a);this.line_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE, +{x1:module$exports$Blockly$FieldAngle.FieldAngle.HALF,y1:module$exports$Blockly$FieldAngle.FieldAngle.HALF,"class":"blocklyAngleLine"},a);for(var c=0;360>c;c+=15)(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE,{x1:module$exports$Blockly$FieldAngle.FieldAngle.HALF+module$exports$Blockly$FieldAngle.FieldAngle.RADIUS,y1:module$exports$Blockly$FieldAngle.FieldAngle.HALF,x2:module$exports$Blockly$FieldAngle.FieldAngle.HALF+module$exports$Blockly$FieldAngle.FieldAngle.RADIUS- +(0===c%45?10:5),y2:module$exports$Blockly$FieldAngle.FieldAngle.HALF,"class":"blocklyAngleMarks",transform:"rotate("+c+","+module$exports$Blockly$FieldAngle.FieldAngle.HALF+","+module$exports$Blockly$FieldAngle.FieldAngle.HALF+")"},a);this.clickWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(a,"click",this,this.hide_);this.clickSurfaceWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"click",this,this.onMouseMove_,!0,!0);this.moveSurfaceWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b, +"mousemove",this,this.onMouseMove_,!0,!0);this.editor_=a}; +module$exports$Blockly$FieldAngle.FieldAngle.prototype.dropdownDispose_=function(){this.clickWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.clickWrapper_),this.clickWrapper_=null);this.clickSurfaceWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.clickSurfaceWrapper_),this.clickSurfaceWrapper_=null);this.moveSurfaceWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.moveSurfaceWrapper_),this.moveSurfaceWrapper_=null);this.line_=this.gauge_=null}; +module$exports$Blockly$FieldAngle.FieldAngle.prototype.hide_=function(){(0,module$exports$Blockly$dropDownDiv.hideIfOwner)(this);(0,module$exports$Blockly$WidgetDiv.hide)()}; +module$exports$Blockly$FieldAngle.FieldAngle.prototype.onMouseMove_=function(a){var b=this.gauge_.ownerSVGElement.getBoundingClientRect(),c=a.clientX-b.left-module$exports$Blockly$FieldAngle.FieldAngle.HALF;a=a.clientY-b.top-module$exports$Blockly$FieldAngle.FieldAngle.HALF;b=Math.atan(-a/c);isNaN(b)||(b=(0,module$exports$Blockly$utils$math.toDegrees)(b),0>c?b+=180:0a&&(a+=360);a>this.wrap_&&(a-=360);return a}; +module$exports$Blockly$FieldAngle.FieldAngle.fromJson=function(a){return new this(a.angle,void 0,a)};module$exports$Blockly$FieldAngle.FieldAngle.prototype.DEFAULT_VALUE=0;module$exports$Blockly$FieldAngle.FieldAngle.ROUND=15;module$exports$Blockly$FieldAngle.FieldAngle.HALF=50;module$exports$Blockly$FieldAngle.FieldAngle.CLOCKWISE=!1;module$exports$Blockly$FieldAngle.FieldAngle.OFFSET=0;module$exports$Blockly$FieldAngle.FieldAngle.WRAP=360; +module$exports$Blockly$FieldAngle.FieldAngle.RADIUS=module$exports$Blockly$FieldAngle.FieldAngle.HALF-1;(0,module$exports$Blockly$Css.register)("\n.blocklyAngleCircle {\n stroke: #444;\n stroke-width: 1;\n fill: #ddd;\n fill-opacity: .8;\n}\n\n.blocklyAngleMarks {\n stroke: #444;\n stroke-width: 1;\n}\n\n.blocklyAngleGauge {\n fill: #f88;\n fill-opacity: .8;\n pointer-events: none;\n}\n\n.blocklyAngleLine {\n stroke: #f00;\n stroke-width: 2;\n stroke-linecap: round;\n pointer-events: none;\n}\n"); +(0,module$exports$Blockly$fieldRegistry.register)("field_angle",module$exports$Blockly$FieldAngle.FieldAngle);var module$exports$Blockly$zelos$BottomRow={BottomRow:function(a){module$exports$Blockly$blockRendering$BottomRow.BottomRow.call(this,a)}};$.$jscomp.inherits(module$exports$Blockly$zelos$BottomRow.BottomRow,module$exports$Blockly$blockRendering$BottomRow.BottomRow);module$exports$Blockly$zelos$BottomRow.BottomRow.prototype.endsWithElemSpacer=function(){return!1};module$exports$Blockly$zelos$BottomRow.BottomRow.prototype.hasLeftSquareCorner=function(a){return!!a.outputConnection}; +module$exports$Blockly$zelos$BottomRow.BottomRow.prototype.hasRightSquareCorner=function(a){return!!a.outputConnection&&!a.statementInputCount&&!a.nextConnection};var module$exports$Blockly$zelos$ConstantProvider={ConstantProvider:function(){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.call(this);this.SMALL_PADDING=this.GRID_UNIT=4;this.MEDIUM_PADDING=2*this.GRID_UNIT;this.MEDIUM_LARGE_PADDING=3*this.GRID_UNIT;this.LARGE_PADDING=4*this.GRID_UNIT;this.CORNER_RADIUS=1*this.GRID_UNIT;this.NOTCH_WIDTH=9*this.GRID_UNIT;this.NOTCH_HEIGHT=2*this.GRID_UNIT;this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT=3*this.GRID_UNIT;this.MIN_BLOCK_WIDTH= +2*this.GRID_UNIT;this.MIN_BLOCK_HEIGHT=12*this.GRID_UNIT;this.EMPTY_STATEMENT_INPUT_HEIGHT=6*this.GRID_UNIT;this.TAB_OFFSET_FROM_TOP=0;this.TOP_ROW_MIN_HEIGHT=this.CORNER_RADIUS;this.TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING;this.BOTTOM_ROW_MIN_HEIGHT=this.CORNER_RADIUS;this.BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT=6*this.GRID_UNIT;this.STATEMENT_BOTTOM_SPACER=-this.NOTCH_HEIGHT;this.STATEMENT_INPUT_SPACER_MIN_WIDTH=40*this.GRID_UNIT;this.STATEMENT_INPUT_PADDING_LEFT=4*this.GRID_UNIT; +this.EMPTY_INLINE_INPUT_PADDING=4*this.GRID_UNIT;this.EMPTY_INLINE_INPUT_HEIGHT=8*this.GRID_UNIT;this.DUMMY_INPUT_MIN_HEIGHT=8*this.GRID_UNIT;this.DUMMY_INPUT_SHADOW_MIN_HEIGHT=6*this.GRID_UNIT;this.CURSOR_WS_WIDTH=20*this.GRID_UNIT;this.CURSOR_COLOUR="#ffa200";this.CURSOR_RADIUS=5;this.JAGGED_TEETH_WIDTH=this.JAGGED_TEETH_HEIGHT=0;this.START_HAT_HEIGHT=22;this.START_HAT_WIDTH=96;this.SHAPES={HEXAGONAL:1,ROUND:2,SQUARE:3,PUZZLE:4,NOTCH:5};this.SHAPE_IN_SHAPE_PADDING={1:{0:5*this.GRID_UNIT,1:2*this.GRID_UNIT, +2:5*this.GRID_UNIT,3:5*this.GRID_UNIT},2:{0:3*this.GRID_UNIT,1:3*this.GRID_UNIT,2:1*this.GRID_UNIT,3:2*this.GRID_UNIT},3:{0:2*this.GRID_UNIT,1:2*this.GRID_UNIT,2:2*this.GRID_UNIT,3:2*this.GRID_UNIT}};this.FULL_BLOCK_FIELDS=!0;this.FIELD_TEXT_FONTSIZE=3*this.GRID_UNIT;this.FIELD_TEXT_FONTWEIGHT="bold";this.FIELD_TEXT_FONTFAMILY='"Helvetica Neue", "Segoe UI", Helvetica, sans-serif';this.FIELD_BORDER_RECT_RADIUS=this.CORNER_RADIUS;this.FIELD_BORDER_RECT_X_PADDING=2*this.GRID_UNIT;this.FIELD_BORDER_RECT_Y_PADDING= +1.625*this.GRID_UNIT;this.FIELD_BORDER_RECT_HEIGHT=8*this.GRID_UNIT;this.FIELD_DROPDOWN_BORDER_RECT_HEIGHT=8*this.GRID_UNIT;this.FIELD_DROPDOWN_SVG_ARROW=this.FIELD_DROPDOWN_COLOURED_DIV=this.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW=!0;this.FIELD_DROPDOWN_SVG_ARROW_PADDING=this.FIELD_BORDER_RECT_X_PADDING;this.FIELD_COLOUR_FULL_BLOCK=this.FIELD_TEXTINPUT_BOX_SHADOW=!0;this.FIELD_COLOUR_DEFAULT_WIDTH=2*this.GRID_UNIT;this.FIELD_COLOUR_DEFAULT_HEIGHT=4*this.GRID_UNIT;this.FIELD_CHECKBOX_X_OFFSET=1*this.GRID_UNIT; +this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH=12*this.GRID_UNIT;this.SELECTED_GLOW_COLOUR="#fff200";this.SELECTED_GLOW_SIZE=.5;this.REPLACEMENT_GLOW_COLOUR="#fff200";this.REPLACEMENT_GLOW_SIZE=2;this.selectedGlowFilterId="";this.selectedGlowFilter_=null;this.replacementGlowFilterId="";this.SQUARED=this.ROUNDED=this.HEXAGONAL=this.replacementGlowFilter_=null}};$.$jscomp.inherits(module$exports$Blockly$zelos$ConstantProvider.ConstantProvider,module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider); +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.setFontConstants_=function(a){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setFontConstants_.call(this,a);this.FIELD_DROPDOWN_BORDER_RECT_HEIGHT=this.FIELD_BORDER_RECT_HEIGHT=this.FIELD_TEXT_HEIGHT+2*this.FIELD_BORDER_RECT_Y_PADDING}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.init=function(){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.init.call(this);this.HEXAGONAL=this.makeHexagonal();this.ROUNDED=this.makeRounded();this.SQUARED=this.makeSquared();this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT+this.INSIDE_CORNERS.rightWidth}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.setDynamicProperties_=function(a){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.setDynamicProperties_.call(this,a);this.SELECTED_GLOW_COLOUR=a.getComponentStyle("selectedGlowColour")||this.SELECTED_GLOW_COLOUR;var b=Number(a.getComponentStyle("selectedGlowSize"));this.SELECTED_GLOW_SIZE=b&&!isNaN(b)?b:this.SELECTED_GLOW_SIZE;this.REPLACEMENT_GLOW_COLOUR=a.getComponentStyle("replacementGlowColour")|| +this.REPLACEMENT_GLOW_COLOUR;this.REPLACEMENT_GLOW_SIZE=(a=Number(a.getComponentStyle("replacementGlowSize")))&&!isNaN(a)?a:this.REPLACEMENT_GLOW_SIZE};module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.dispose=function(){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.dispose.call(this);this.selectedGlowFilter_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.selectedGlowFilter_);this.replacementGlowFilter_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.replacementGlowFilter_)}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeStartHat=function(){var a=this.START_HAT_HEIGHT,b=this.START_HAT_WIDTH,c=(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(25,-a),(0,module$exports$Blockly$utils$svgPaths.point)(71,-a),(0,module$exports$Blockly$utils$svgPaths.point)(b,0)]);return{height:a,width:b,path:c}}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeHexagonal=function(){function a(c,d,e){var f=c/2;f=f>b?b:f;e=e?-1:1;c=(d?-1:1)*c/2;return(0,module$exports$Blockly$utils$svgPaths.lineTo)(-e*f,c)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(e*f,c)}var b=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH;return{type:this.SHAPES.HEXAGONAL,isDynamic:!0,width:function(c){c/=2;return c>b?b:c},height:function(c){return c},connectionOffsetY:function(c){return c/2},connectionOffsetX:function(c){return-c}, +pathDown:function(c){return a(c,!1,!1)},pathUp:function(c){return a(c,!0,!1)},pathRightDown:function(c){return a(c,!1,!0)},pathRightUp:function(c){return a(c,!1,!0)}}}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeRounded=function(){function a(d,e,f){var g=d>c?d-c:0;d=(d>c?c:d)/2;return(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",d,(0,module$exports$Blockly$utils$svgPaths.point)((e?-1:1)*d,(e?-1:1)*d))+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",(f?1:-1)*g)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",d,(0,module$exports$Blockly$utils$svgPaths.point)((e?1:-1)*d,(e?-1:1)*d))}var b=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH, +c=2*b;return{type:this.SHAPES.ROUND,isDynamic:!0,width:function(d){d/=2;return d>b?b:d},height:function(d){return d},connectionOffsetY:function(d){return d/2},connectionOffsetX:function(d){return-d},pathDown:function(d){return a(d,!1,!1)},pathUp:function(d){return a(d,!0,!1)},pathRightDown:function(d){return a(d,!1,!0)},pathRightUp:function(d){return a(d,!1,!0)}}}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeSquared=function(){function a(c,d,e){c-=2*b;return(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",b,(0,module$exports$Blockly$utils$svgPaths.point)((d?-1:1)*b,(d?-1:1)*b))+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",(e?1:-1)*c)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",b,(0,module$exports$Blockly$utils$svgPaths.point)((d?1:-1)*b,(d?-1:1)*b))}var b=this.CORNER_RADIUS;return{type:this.SHAPES.SQUARE, +isDynamic:!0,width:function(c){return b},height:function(c){return c},connectionOffsetY:function(c){return c/2},connectionOffsetX:function(c){return-c},pathDown:function(c){return a(c,!1,!1)},pathUp:function(c){return a(c,!0,!1)},pathRightDown:function(c){return a(c,!1,!0)},pathRightUp:function(c){return a(c,!1,!0)}}}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.shapeFor=function(a){var b=a.getCheck();!b&&a.targetConnection&&(b=a.targetConnection.getCheck());switch(a.type){case $.module$exports$Blockly$ConnectionType.ConnectionType.INPUT_VALUE:case $.module$exports$Blockly$ConnectionType.ConnectionType.OUTPUT_VALUE:a=a.getSourceBlock().getOutputShape();if(null!==a)switch(a){case this.SHAPES.HEXAGONAL:return this.HEXAGONAL;case this.SHAPES.ROUND:return this.ROUNDED;case this.SHAPES.SQUARE:return this.SQUARED}if(b&& +-1!==b.indexOf("Boolean"))return this.HEXAGONAL;if(b&&-1!==b.indexOf("Number"))return this.ROUNDED;b&&b.indexOf("String");return this.ROUNDED;case $.module$exports$Blockly$ConnectionType.ConnectionType.PREVIOUS_STATEMENT:case $.module$exports$Blockly$ConnectionType.ConnectionType.NEXT_STATEMENT:return this.NOTCH;default:throw Error("Unknown type");}}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeNotch=function(){function a(l){return(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(l*e/2,0),(0,module$exports$Blockly$utils$svgPaths.point)(l*e*3/4,g/2),(0,module$exports$Blockly$utils$svgPaths.point)(l*e,g)])+(0,module$exports$Blockly$utils$svgPaths.line)([(0,module$exports$Blockly$utils$svgPaths.point)(l*e,f)])+(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(l* +e/4,g/2),(0,module$exports$Blockly$utils$svgPaths.point)(l*e/2,g),(0,module$exports$Blockly$utils$svgPaths.point)(l*e,g)])+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("h",l*d)+(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(l*e/2,0),(0,module$exports$Blockly$utils$svgPaths.point)(l*e*3/4,-(g/2)),(0,module$exports$Blockly$utils$svgPaths.point)(l*e,-g)])+(0,module$exports$Blockly$utils$svgPaths.line)([(0,module$exports$Blockly$utils$svgPaths.point)(l* +e,-f)])+(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(l*e/4,-(g/2)),(0,module$exports$Blockly$utils$svgPaths.point)(l*e/2,-g),(0,module$exports$Blockly$utils$svgPaths.point)(l*e,-g)])}var b=this.NOTCH_WIDTH,c=this.NOTCH_HEIGHT,d=b/3,e=d/3,f=c/2,g=f/2,h=a(1),k=a(-1);return{type:this.SHAPES.NOTCH,width:b,height:c,pathLeft:h,pathRight:k}}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.makeInsideCorners=function(){var a=this.CORNER_RADIUS,b=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a,a)),c=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(-a,a)),d=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,a)),e=(0,module$exports$Blockly$utils$svgPaths.arc)("a", +"0 0,1",a,(0,module$exports$Blockly$utils$svgPaths.point)(a,a));return{width:a,height:a,pathTop:b,pathBottom:d,rightWidth:a,rightHeight:a,pathTopRight:c,pathBottomRight:e}};module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.generateSecondaryColour_=function(a){return(0,module$exports$Blockly$utils$colour.blend)("#000",a,.15)||a}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.generateTertiaryColour_=function(a){return(0,module$exports$Blockly$utils$colour.blend)("#000",a,.25)||a}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.createDom=function(a,b,c){module$exports$Blockly$blockRendering$ConstantProvider.ConstantProvider.prototype.createDom.call(this,a,b,c);a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.DEFS,{},a);b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FILTER,{id:"blocklySelectedGlowFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%", +x:"-40%"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEGAUSSIANBLUR,{"in":"SourceGraphic",stdDeviation:this.SELECTED_GLOW_SIZE},b);c=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPONENTTRANSFER,{result:"outBlur"},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFUNCA,{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},c);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFLOOD, +{"flood-color":this.SELECTED_GLOW_COLOUR,"flood-opacity":1,result:"outColor"},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},b);this.selectedGlowFilterId=b.id;this.selectedGlowFilter_=b;a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FILTER,{id:"blocklyReplacementGlowFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%", +x:"-40%"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEGAUSSIANBLUR,{"in":"SourceGraphic",stdDeviation:this.REPLACEMENT_GLOW_SIZE},a);b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPONENTTRANSFER,{result:"outBlur"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFUNCA,{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},b);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FEFLOOD, +{"flood-color":this.REPLACEMENT_GLOW_COLOUR,"flood-opacity":1,result:"outColor"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FECOMPOSITE,{"in":"SourceGraphic",in2:"outGlow",operator:"over"},a);this.replacementGlowFilterId=a.id;this.replacementGlowFilter_=a}; +module$exports$Blockly$zelos$ConstantProvider.ConstantProvider.prototype.getCSS_=function(a){return[a+" .blocklyText,",a+" .blocklyFlyoutLabelText {","font: "+this.FIELD_TEXT_FONTWEIGHT+" "+this.FIELD_TEXT_FONTSIZE+"pt "+this.FIELD_TEXT_FONTFAMILY+";","}",a+" .blocklyText {","fill: #fff;","}",a+" .blocklyNonEditableText>rect:not(.blocklyDropdownRect),",a+" .blocklyEditableText>rect:not(.blocklyDropdownRect) {","fill: "+this.FIELD_BORDER_RECT_COLOUR+";","}",a+" .blocklyNonEditableText>text,",a+" .blocklyEditableText>text,", +a+" .blocklyNonEditableText>g>text,",a+" .blocklyEditableText>g>text {","fill: #575E75;","}",a+" .blocklyFlyoutLabelText {","fill: #575E75;","}",a+" .blocklyText.blocklyBubbleText {","fill: #575E75;","}",a+" .blocklyDraggable:not(.blocklyDisabled)"," .blocklyEditableText:not(.editing):hover>rect,",a+" .blocklyDraggable:not(.blocklyDisabled)"," .blocklyEditableText:not(.editing):hover>.blocklyPath {","stroke: #fff;","stroke-width: 2;","}",a+" .blocklyHtmlInput {","font-family: "+this.FIELD_TEXT_FONTFAMILY+ +";","font-weight: "+this.FIELD_TEXT_FONTWEIGHT+";","color: #575E75;","}",a+" .blocklyDropdownText {","fill: #fff !important;","}",a+".blocklyWidgetDiv .goog-menuitem,",a+".blocklyDropDownDiv .goog-menuitem {","font-family: "+this.FIELD_TEXT_FONTFAMILY+";","}",a+".blocklyDropDownDiv .goog-menuitem-content {","color: #fff;","}",a+" .blocklyHighlightedConnectionPath {","stroke: "+this.SELECTED_GLOW_COLOUR+";","}",a+" .blocklyDisabled > .blocklyOutlinePath {","fill: url(#blocklyDisabledPattern"+this.randomIdentifier+ +")","}",a+" .blocklyInsertionMarker>.blocklyPath {","fill-opacity: "+this.INSERTION_MARKER_OPACITY+";","stroke: none;","}"]};var module$exports$Blockly$zelos$Drawer={Drawer:function(a,b){module$exports$Blockly$blockRendering$Drawer.Drawer.call(this,a,b)}};$.$jscomp.inherits(module$exports$Blockly$zelos$Drawer.Drawer,module$exports$Blockly$blockRendering$Drawer.Drawer); +module$exports$Blockly$zelos$Drawer.Drawer.prototype.draw=function(){var a=this.block_.pathObject;a.beginDrawing();this.hideHiddenIcons_();this.drawOutline_();this.drawInternals_();a.setPath(this.outlinePath_+"\n"+this.inlinePath_);this.info_.RTL&&a.flipRTL();(0,module$exports$Blockly$blockRendering$debug.isDebuggerEnabled)()&&this.block_.renderingDebugger.drawDebug(this.block_,this.info_);this.recordSizeOnBlock_();this.info_.outputConnection&&(a.outputShapeType=this.info_.outputConnection.shape.type); +a.endDrawing()};module$exports$Blockly$zelos$Drawer.Drawer.prototype.drawOutline_=function(){this.info_.outputConnection&&this.info_.outputConnection.isDynamicShape&&!this.info_.hasStatementInput&&!this.info_.bottomRow.hasNextConnection?(this.drawFlatTop_(),this.drawRightDynamicConnection_(),this.drawFlatBottom_(),this.drawLeftDynamicConnection_()):module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawOutline_.call(this)}; +module$exports$Blockly$zelos$Drawer.Drawer.prototype.drawLeft_=function(){this.info_.outputConnection&&this.info_.outputConnection.isDynamicShape?this.drawLeftDynamicConnection_():module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawLeft_.call(this)}; +module$exports$Blockly$zelos$Drawer.Drawer.prototype.drawRightSideRow_=function(a){if(!(0>=a.height))if(module$exports$Blockly$blockRendering$Types.Types.isSpacer(a)&&(a.precedesStatement||a.followsStatement)){var b=this.constants_.INSIDE_CORNERS.rightHeight;b=a.height-(a.precedesStatement?b:0);this.outlinePath_+=(a.followsStatement?this.constants_.INSIDE_CORNERS.pathBottomRight:"")+(0=c||0>=b)throw Error("Height and width values of an image field must be greater than 0."); +this.size_=new module$exports$Blockly$utils$Size.Size(b,c+$.module$exports$Blockly$FieldImage.FieldImage.Y_PADDING);this.imageHeight_=c;this.clickHandler_=null;"function"===typeof e&&(this.clickHandler_=e);this.imageElement_=null;this.flipRtl_=this.isDirty_=this.EDITABLE=!1;this.altText_="";a!==module$exports$Blockly$Field.Field.SKIP_SETUP&&(g?this.configure_(g):(this.flipRtl_=!!f,this.altText_=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(d)||""),this.setValue((0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a)))}}; +$.$jscomp.inherits($.module$exports$Blockly$FieldImage.FieldImage,module$exports$Blockly$Field.Field);$.module$exports$Blockly$FieldImage.FieldImage.prototype.configure_=function(a){module$exports$Blockly$Field.Field.prototype.configure_.call(this,a);this.flipRtl_=!!a.flipRtl;this.altText_=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(a.alt)||""}; +$.module$exports$Blockly$FieldImage.FieldImage.prototype.initView=function(){this.imageElement_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.IMAGE,{height:this.imageHeight_+"px",width:this.size_.width+"px",alt:this.altText_},this.fieldGroup_);this.imageElement_.setAttributeNS(module$exports$Blockly$utils$dom.XLINK_NS,"xlink:href",this.value_);this.clickHandler_&&(this.imageElement_.style.cursor="pointer")}; +$.module$exports$Blockly$FieldImage.FieldImage.prototype.updateSize_=function(){};$.module$exports$Blockly$FieldImage.FieldImage.prototype.doClassValidation_=function(a){return"string"!==typeof a?null:a};$.module$exports$Blockly$FieldImage.FieldImage.prototype.doValueUpdate_=function(a){this.value_=a;this.imageElement_&&this.imageElement_.setAttributeNS(module$exports$Blockly$utils$dom.XLINK_NS,"xlink:href",String(this.value_))}; +$.module$exports$Blockly$FieldImage.FieldImage.prototype.getFlipRtl=function(){return this.flipRtl_};$.module$exports$Blockly$FieldImage.FieldImage.prototype.setAlt=function(a){a!==this.altText_&&(this.altText_=a||"",this.imageElement_&&this.imageElement_.setAttribute("alt",this.altText_))};$.module$exports$Blockly$FieldImage.FieldImage.prototype.showEditor_=function(){this.clickHandler_&&this.clickHandler_(this)}; +$.module$exports$Blockly$FieldImage.FieldImage.prototype.setOnClickHandler=function(a){this.clickHandler_=a};$.module$exports$Blockly$FieldImage.FieldImage.prototype.getText_=function(){return this.altText_};$.module$exports$Blockly$FieldImage.FieldImage.fromJson=function(a){return new this(a.src,a.width,a.height,void 0,void 0,void 0,a)};$.module$exports$Blockly$FieldImage.FieldImage.prototype.DEFAULT_VALUE="";$.module$exports$Blockly$FieldImage.FieldImage.Y_PADDING=1; +(0,module$exports$Blockly$fieldRegistry.register)("field_image",$.module$exports$Blockly$FieldImage.FieldImage);var module$exports$Blockly$zelos$RightConnectionShape={RightConnectionShape:function(a){module$exports$Blockly$blockRendering$Measurable.Measurable.call(this,a);this.type|=module$exports$Blockly$blockRendering$Types.Types.getType("RIGHT_CONNECTION");this.width=this.height=0}};$.$jscomp.inherits(module$exports$Blockly$zelos$RightConnectionShape.RightConnectionShape,module$exports$Blockly$blockRendering$Measurable.Measurable);var module$exports$Blockly$zelos$StatementInput={StatementInput:function(a,b){module$exports$Blockly$blockRendering$StatementInput.StatementInput.call(this,a,b);if(this.connectedBlock){for(a=this.connectedBlock;b=a.getNextBlock();)a=b;a.nextConnection||(this.height=this.connectedBlockHeight,this.connectedBottomNextConnection=!0)}}};$.$jscomp.inherits(module$exports$Blockly$zelos$StatementInput.StatementInput,module$exports$Blockly$blockRendering$StatementInput.StatementInput);var module$exports$Blockly$zelos$TopRow={TopRow:function(a){module$exports$Blockly$blockRendering$TopRow.TopRow.call(this,a)}};$.$jscomp.inherits(module$exports$Blockly$zelos$TopRow.TopRow,module$exports$Blockly$blockRendering$TopRow.TopRow);module$exports$Blockly$zelos$TopRow.TopRow.prototype.endsWithElemSpacer=function(){return!1}; +module$exports$Blockly$zelos$TopRow.TopRow.prototype.hasLeftSquareCorner=function(a){var b=(a.hat?"cap"===a.hat:this.constants_.ADD_START_HATS)&&!a.outputConnection&&!a.previousConnection;return!!a.outputConnection||b};module$exports$Blockly$zelos$TopRow.TopRow.prototype.hasRightSquareCorner=function(a){return!!a.outputConnection&&!a.statementInputCount&&!a.nextConnection};var module$exports$Blockly$zelos$RenderInfo={RenderInfo:function(a,b){module$exports$Blockly$blockRendering$RenderInfo.RenderInfo.call(this,a,b);this.topRow=new module$exports$Blockly$zelos$TopRow.TopRow(this.constants_);this.bottomRow=new module$exports$Blockly$zelos$BottomRow.BottomRow(this.constants_);this.isInline=!0;this.isMultiRow=!b.getInputsInline()||b.isCollapsed();this.hasStatementInput=0=this.rows.length-1?!!this.bottomRow.hasNextConnection:!!f.precedesStatement;if(module$exports$Blockly$blockRendering$Types.Types.isInputRow(e)&&e.hasStatement)e.measure(),b=e.width-e.getLastInput().width+ +a;else if(d&&(2===c||f)&&module$exports$Blockly$blockRendering$Types.Types.isInputRow(e)&&!e.hasStatement){f=e.xPos;d=null;for(var g=0;gc?c:this.height/2,b-c*(1-Math.sin(Math.acos((c-this.constants_.SMALL_PADDING)/c)));default:return 0}if(module$exports$Blockly$blockRendering$Types.Types.isInlineInput(a)&& +a instanceof module$exports$Blockly$blockRendering$InputConnection.InputConnection){var e=a.connectedBlock;a=e?e.pathObject.outputShapeType:a.shape.type;return e&&e.outputConnection&&(e.statementInputCount||e.nextConnection)||c===d.SHAPES.HEXAGONAL&&c!==a?0:b-this.constants_.SHAPE_IN_SHAPE_PADDING[c][a]}return module$exports$Blockly$blockRendering$Types.Types.isField(a)&&a instanceof module$exports$Blockly$blockRendering$Field.Field?c===d.SHAPES.ROUND&&a.field instanceof $.module$exports$Blockly$FieldTextInput.FieldTextInput? +b-2.75*d.GRID_UNIT:b-this.constants_.SHAPE_IN_SHAPE_PADDING[c][0]:module$exports$Blockly$blockRendering$Types.Types.isIcon(a)?this.constants_.SMALL_PADDING:0}; +module$exports$Blockly$zelos$RenderInfo.RenderInfo.prototype.finalizeVerticalAlignment_=function(){if(!this.outputConnection)for(var a=2;a=this.rows.length-1?!!this.bottomRow.hasNextConnection:!!d.precedesStatement;if(e?this.topRow.hasPreviousConnection:b.followsStatement){var g=c.elements[1];g=3===c.elements.length&&g instanceof module$exports$Blockly$blockRendering$Field.Field&&(g.field instanceof $.module$exports$Blockly$FieldLabel.FieldLabel|| +g.field instanceof $.module$exports$Blockly$FieldImage.FieldImage);if(!e&&g)b.height-=this.constants_.SMALL_PADDING,d.height-=this.constants_.SMALL_PADDING,c.height-=this.constants_.MEDIUM_PADDING;else if(!e&&!f)b.height+=this.constants_.SMALL_PADDING;else if(f){e=!1;for(f=0;f.blocklyPathLight,",a+" .blocklyInsertionMarker>.blocklyPathDark {","fill-opacity: "+this.INSERTION_MARKER_OPACITY+";","stroke: none;","}"])};var module$exports$Blockly$geras$InlineInput={InlineInput:function(a,b){module$exports$Blockly$blockRendering$InlineInput.InlineInput.call(this,a,b);this.connectedBlock&&(this.width+=this.constants_.DARK_PATH_OFFSET,this.height+=this.constants_.DARK_PATH_OFFSET)}};$.$jscomp.inherits(module$exports$Blockly$geras$InlineInput.InlineInput,module$exports$Blockly$blockRendering$InlineInput.InlineInput);var module$exports$Blockly$geras$Highlighter={Highlighter:function(a){this.info_=a;this.inlineSteps_=this.steps_="";this.RTL_=this.info_.RTL;a=a.getRenderer();this.constants_=a.getConstants();this.highlightConstants_=a.getHighlightConstants();this.highlightOffset_=this.highlightConstants_.OFFSET;this.outsideCornerPaths_=this.highlightConstants_.OUTSIDE_CORNER;this.insideCornerPaths_=this.highlightConstants_.INSIDE_CORNER;this.puzzleTabPaths_=this.highlightConstants_.PUZZLE_TAB;this.notchPaths_=this.highlightConstants_.NOTCH; +this.startPaths_=this.highlightConstants_.START_HAT;this.jaggedTeethPaths_=this.highlightConstants_.JAGGED_TEETH}};module$exports$Blockly$geras$Highlighter.Highlighter.prototype.getPath=function(){return this.steps_+"\n"+this.inlineSteps_}; +module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawTopCorner=function(a){this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveBy)(a.xPos,this.info_.startY);for(var b=0,c;c=a.elements[b];b++)module$exports$Blockly$blockRendering$Types.Types.isLeftSquareCorner(c)?this.steps_+=this.highlightConstants_.START_POINT:module$exports$Blockly$blockRendering$Types.Types.isLeftRoundedCorner(c)?this.steps_+=this.outsideCornerPaths_.topLeft(this.RTL_):module$exports$Blockly$blockRendering$Types.Types.isPreviousConnection(c)? +this.steps_+=this.notchPaths_.pathLeft:module$exports$Blockly$blockRendering$Types.Types.isHat(c)?this.steps_+=this.startPaths_.path(this.RTL_):module$exports$Blockly$blockRendering$Types.Types.isSpacer(c)&&0!==c.width&&(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",c.xPos+c.width-this.highlightOffset_));this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",a.xPos+a.width-this.highlightOffset_)}; +module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawJaggedEdge_=function(a){this.info_.RTL&&(this.steps_+=this.jaggedTeethPaths_.pathLeft+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",a.height-this.jaggedTeethPaths_.height-this.highlightOffset_))}; +module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawValueInput=function(a){var b=a.getLastInput();if(this.RTL_){var c=a.height-b.connectionHeight;this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(b.xPos+b.width-this.highlightOffset_,a.yPos)+this.puzzleTabPaths_.pathDown(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",c)}else this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(b.xPos+b.width,a.yPos)+this.puzzleTabPaths_.pathDown(this.RTL_)}; +module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawStatementInput=function(a){var b=a.getLastInput();if(this.RTL_){var c=a.height-2*this.insideCornerPaths_.height;this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(b.xPos,a.yPos)+this.insideCornerPaths_.pathTop(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",c)+this.insideCornerPaths_.pathBottom(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(a.width-b.xPos-this.insideCornerPaths_.width,0)}else this.steps_+= +(0,module$exports$Blockly$utils$svgPaths.moveTo)(b.xPos,a.yPos+a.height)+this.insideCornerPaths_.pathBottom(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(a.width-b.xPos-this.insideCornerPaths_.width,0)}; +module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawRightSideRow=function(a){var b=a.xPos+a.width-this.highlightOffset_;a instanceof module$exports$Blockly$blockRendering$SpacerRow.SpacerRow&&a.followsStatement&&(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",b));this.RTL_&&(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",b),a.height>this.highlightOffset_&&(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a.yPos+a.height- +this.highlightOffset_)))}; +module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawBottomRow=function(a){if(this.RTL_)this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a.baseline-this.highlightOffset_);else{var b=this.info_.bottomRow.elements[0];module$exports$Blockly$blockRendering$Types.Types.isLeftSquareCorner(b)?this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(a.xPos+this.highlightOffset_,a.baseline-this.highlightOffset_):module$exports$Blockly$blockRendering$Types.Types.isLeftRoundedCorner(b)&&(this.steps_+= +(0,module$exports$Blockly$utils$svgPaths.moveTo)(a.xPos,a.baseline),this.steps_+=this.outsideCornerPaths_.bottomLeft())}}; +module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawLeft=function(){var a=this.info_.outputConnection;a&&(a=a.connectionOffsetY+a.height,this.RTL_?this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(this.info_.startX,a):(this.steps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(this.info_.startX+this.highlightOffset_,this.info_.bottomRow.baseline-this.highlightOffset_),this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a)),this.steps_+=this.puzzleTabPaths_.pathUp(this.RTL_)); +this.RTL_||(a=this.info_.topRow,module$exports$Blockly$blockRendering$Types.Types.isLeftRoundedCorner(a.elements[0])?this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",this.outsideCornerPaths_.height):this.steps_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a.capline+this.highlightOffset_))}; +module$exports$Blockly$geras$Highlighter.Highlighter.prototype.drawInlineInput=function(a){var b=this.highlightOffset_,c=a.xPos+a.connectionWidth,d=a.centerline-a.height/2,e=a.width-a.connectionWidth,f=d+b;this.RTL_?(d=a.connectionOffsetY-b,a=a.height-(a.connectionOffsetY+a.connectionHeight)+b,this.inlineSteps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(c-b,f)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",d)+this.puzzleTabPaths_.pathDown(this.RTL_)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v", +a)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("h",e)):this.inlineSteps_+=(0,module$exports$Blockly$utils$svgPaths.moveTo)(a.xPos+a.width+b,f)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",a.height)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("h",-e)+(0,module$exports$Blockly$utils$svgPaths.moveTo)(c,d+a.connectionOffsetY)+this.puzzleTabPaths_.pathDown(this.RTL_)};var module$exports$Blockly$geras$Drawer={Drawer:function(a,b){module$exports$Blockly$blockRendering$Drawer.Drawer.call(this,a,b);this.highlighter_=new module$exports$Blockly$geras$Highlighter.Highlighter(b)}};$.$jscomp.inherits(module$exports$Blockly$geras$Drawer.Drawer,module$exports$Blockly$blockRendering$Drawer.Drawer); +module$exports$Blockly$geras$Drawer.Drawer.prototype.draw=function(){this.hideHiddenIcons_();this.drawOutline_();this.drawInternals_();var a=this.block_.pathObject;a.setPath(this.outlinePath_+"\n"+this.inlinePath_);a.setHighlightPath(this.highlighter_.getPath());this.info_.RTL&&a.flipRTL();(0,module$exports$Blockly$blockRendering$debug.isDebuggerEnabled)()&&this.block_.renderingDebugger.drawDebug(this.block_,this.info_);this.recordSizeOnBlock_()}; +module$exports$Blockly$geras$Drawer.Drawer.prototype.drawTop_=function(){this.highlighter_.drawTopCorner(this.info_.topRow);this.highlighter_.drawRightSideRow(this.info_.topRow);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawTop_.call(this)};module$exports$Blockly$geras$Drawer.Drawer.prototype.drawJaggedEdge_=function(a){this.highlighter_.drawJaggedEdge_(a);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawJaggedEdge_.call(this,a)}; +module$exports$Blockly$geras$Drawer.Drawer.prototype.drawValueInput_=function(a){this.highlighter_.drawValueInput(a);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawValueInput_.call(this,a)};module$exports$Blockly$geras$Drawer.Drawer.prototype.drawStatementInput_=function(a){this.highlighter_.drawStatementInput(a);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawStatementInput_.call(this,a)}; +module$exports$Blockly$geras$Drawer.Drawer.prototype.drawRightSideRow_=function(a){this.highlighter_.drawRightSideRow(a);this.outlinePath_+=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("H",a.xPos+a.width)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("V",a.yPos+a.height)};module$exports$Blockly$geras$Drawer.Drawer.prototype.drawBottom_=function(){this.highlighter_.drawBottomRow(this.info_.bottomRow);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawBottom_.call(this)}; +module$exports$Blockly$geras$Drawer.Drawer.prototype.drawLeft_=function(){this.highlighter_.drawLeft();module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawLeft_.call(this)};module$exports$Blockly$geras$Drawer.Drawer.prototype.drawInlineInput_=function(a){this.highlighter_.drawInlineInput(a);module$exports$Blockly$blockRendering$Drawer.Drawer.prototype.drawInlineInput_.call(this,a)}; +module$exports$Blockly$geras$Drawer.Drawer.prototype.positionInlineInputConnection_=function(a){var b=a.centerline-a.height/2;if(a.connectionModel){var c=a.xPos+a.connectionWidth+this.constants_.DARK_PATH_OFFSET;this.info_.RTL&&(c*=-1);a.connectionModel.setOffsetInBlock(c,b+a.connectionOffsetY+this.constants_.DARK_PATH_OFFSET)}}; +module$exports$Blockly$geras$Drawer.Drawer.prototype.positionStatementInputConnection_=function(a){var b=a.getLastInput();if(b.connectionModel){var c=a.xPos+a.statementEdge+b.notchOffset;c=this.info_.RTL?-1*c:c+this.constants_.DARK_PATH_OFFSET;b.connectionModel.setOffsetInBlock(c,a.yPos+this.constants_.DARK_PATH_OFFSET)}}; +module$exports$Blockly$geras$Drawer.Drawer.prototype.positionExternalValueConnection_=function(a){var b=a.getLastInput();if(b.connectionModel){var c=a.xPos+a.width+this.constants_.DARK_PATH_OFFSET;this.info_.RTL&&(c*=-1);b.connectionModel.setOffsetInBlock(c,a.yPos)}}; +module$exports$Blockly$geras$Drawer.Drawer.prototype.positionNextConnection_=function(){var a=this.info_.bottomRow;if(a.connection){var b=a.connection,c=b.xPos;b.connectionModel.setOffsetInBlock((this.info_.RTL?-c:c)+this.constants_.DARK_PATH_OFFSET/2,a.baseline+this.constants_.DARK_PATH_OFFSET)}};var module$exports$Blockly$geras$HighlightConstantProvider={HighlightConstantProvider:function(a){this.constantProvider=a;this.OFFSET=.5;this.START_POINT=(0,module$exports$Blockly$utils$svgPaths.moveBy)(this.OFFSET,this.OFFSET)}}; +module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.init=function(){this.INSIDE_CORNER=this.makeInsideCorner();this.OUTSIDE_CORNER=this.makeOutsideCorner();this.PUZZLE_TAB=this.makePuzzleTab();this.NOTCH=this.makeNotch();this.JAGGED_TEETH=this.makeJaggedTeeth();this.START_HAT=this.makeStartHat()}; +module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeInsideCorner=function(){var a=this.constantProvider.CORNER_RADIUS,b=this.OFFSET,c=(1-Math.SQRT1_2)*(a+b)-b,d=(0,module$exports$Blockly$utils$svgPaths.moveBy)(c,c)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a,(0,module$exports$Blockly$utils$svgPaths.point)(-c-b,a-c)),e=(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a+b,(0,module$exports$Blockly$utils$svgPaths.point)(a+b,a+b)),f= +(0,module$exports$Blockly$utils$svgPaths.moveBy)(c,-c)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,0",a+b,(0,module$exports$Blockly$utils$svgPaths.point)(a-c,c+b));return{width:a+b,height:a,pathTop:function(g){return g?d:""},pathBottom:function(g){return g?e:f}}}; +module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeOutsideCorner=function(){var a=this.constantProvider.CORNER_RADIUS,b=this.OFFSET,c=(1-Math.SQRT1_2)*(a-b)+b,d=(0,module$exports$Blockly$utils$svgPaths.moveBy)(c,c)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a-b,(0,module$exports$Blockly$utils$svgPaths.point)(a-c,-c+b)),e=(0,module$exports$Blockly$utils$svgPaths.moveBy)(b,a)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a-b,(0,module$exports$Blockly$utils$svgPaths.point)(a, +-a+b)),f=-c,g=(0,module$exports$Blockly$utils$svgPaths.moveBy)(c,f)+(0,module$exports$Blockly$utils$svgPaths.arc)("a","0 0,1",a-b,(0,module$exports$Blockly$utils$svgPaths.point)(-c+b,-f-a));return{height:a,topLeft:function(h){return h?d:e},bottomLeft:function(){return g}}}; +module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makePuzzleTab=function(){var a=this.constantProvider.TAB_WIDTH,b=this.constantProvider.TAB_HEIGHT,c=(0,module$exports$Blockly$utils$svgPaths.moveBy)(-2,-b+3.4)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(-.45*a,-2.1),d=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",2.5)+(0,module$exports$Blockly$utils$svgPaths.moveBy)(.97*-a,2.5)+(0,module$exports$Blockly$utils$svgPaths.curve)("q",[(0,module$exports$Blockly$utils$svgPaths.point)(.05* +-a,10),(0,module$exports$Blockly$utils$svgPaths.point)(.3*a,9.5)])+(0,module$exports$Blockly$utils$svgPaths.moveBy)(.67*a,-1.9)+(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",2.5),e=(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("v",-1.5)+(0,module$exports$Blockly$utils$svgPaths.moveBy)(-.92*a,-.5)+(0,module$exports$Blockly$utils$svgPaths.curve)("q",[(0,module$exports$Blockly$utils$svgPaths.point)(-.19*a,-5.5),(0,module$exports$Blockly$utils$svgPaths.point)(0,-11)])+(0,module$exports$Blockly$utils$svgPaths.moveBy)(.92* +a,1),f=(0,module$exports$Blockly$utils$svgPaths.moveBy)(-5,b-.7)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(.46*a,-2.1);return{width:a,height:b,pathUp:function(g){return g?c:e},pathDown:function(g){return g?d:f}}};module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeNotch=function(){return{pathLeft:(0,module$exports$Blockly$utils$svgPaths.lineOnAxis)("h",this.OFFSET)+this.constantProvider.NOTCH.pathLeft}}; +module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeJaggedTeeth=function(){return{pathLeft:(0,module$exports$Blockly$utils$svgPaths.lineTo)(5.1,2.6)+(0,module$exports$Blockly$utils$svgPaths.moveBy)(-10.2,6.8)+(0,module$exports$Blockly$utils$svgPaths.lineTo)(5.1,2.6),height:12,width:10.2}}; +module$exports$Blockly$geras$HighlightConstantProvider.HighlightConstantProvider.prototype.makeStartHat=function(){var a=this.constantProvider.START_HAT.height,b=(0,module$exports$Blockly$utils$svgPaths.moveBy)(25,-8.7)+(0,module$exports$Blockly$utils$svgPaths.curve)("c",[(0,module$exports$Blockly$utils$svgPaths.point)(29.7,-6.2),(0,module$exports$Blockly$utils$svgPaths.point)(57.2,-.5),(0,module$exports$Blockly$utils$svgPaths.point)(75,8.7)]),c=(0,module$exports$Blockly$utils$svgPaths.curve)("c", +[(0,module$exports$Blockly$utils$svgPaths.point)(17.8,-9.2),(0,module$exports$Blockly$utils$svgPaths.point)(45.3,-14.9),(0,module$exports$Blockly$utils$svgPaths.point)(75,-8.7)])+(0,module$exports$Blockly$utils$svgPaths.moveTo)(100.5,a+.5);return{path:function(d){return d?b:c}}};var module$exports$Blockly$geras$RenderInfo={RenderInfo:function(a,b){module$exports$Blockly$blockRendering$RenderInfo.RenderInfo.call(this,a,b)}};$.$jscomp.inherits(module$exports$Blockly$geras$RenderInfo.RenderInfo,module$exports$Blockly$blockRendering$RenderInfo.RenderInfo);module$exports$Blockly$geras$RenderInfo.RenderInfo.prototype.getRenderer=function(){return this.renderer_}; +module$exports$Blockly$geras$RenderInfo.RenderInfo.prototype.populateBottomRow_=function(){module$exports$Blockly$blockRendering$RenderInfo.RenderInfo.prototype.populateBottomRow_.call(this);this.block_.inputList.length&&this.block_.inputList[this.block_.inputList.length-1].type===$.module$exports$Blockly$inputTypes.inputTypes.STATEMENT||(this.bottomRow.minHeight=this.constants_.MEDIUM_PADDING-this.constants_.DARK_PATH_OFFSET)}; +module$exports$Blockly$geras$RenderInfo.RenderInfo.prototype.addInput_=function(a,b){this.isInline&&a.type===$.module$exports$Blockly$inputTypes.inputTypes.VALUE?(b.elements.push(new module$exports$Blockly$geras$InlineInput.InlineInput(this.constants_,a)),b.hasInlineInput=!0):a.type===$.module$exports$Blockly$inputTypes.inputTypes.STATEMENT?(b.elements.push(new module$exports$Blockly$geras$StatementInput.StatementInput(this.constants_,a)),b.hasStatement=!0):a.type===$.module$exports$Blockly$inputTypes.inputTypes.VALUE? +(b.elements.push(new module$exports$Blockly$blockRendering$ExternalValueInput.ExternalValueInput(this.constants_,a)),b.hasExternalInput=!0):a.type===$.module$exports$Blockly$inputTypes.inputTypes.DUMMY&&(b.minHeight=Math.max(b.minHeight,this.constants_.DUMMY_INPUT_MIN_HEIGHT),b.hasDummyInput=!0);this.isInline||null!==b.align||(b.align=a.align)}; +module$exports$Blockly$geras$RenderInfo.RenderInfo.prototype.addElemSpacing_=function(){for(var a=!1,b=0,c;c=this.rows[b];b++)c.hasExternalInput&&(a=!0);for(b=0;c=this.rows[b];b++){var d=c.elements;c.elements=[];c.startsWithElemSpacer()&&c.elements.push(new module$exports$Blockly$blockRendering$InRowSpacer.InRowSpacer(this.constants_,this.getInRowSpacing_(null,d[0])));if(d.length){for(var e=0;eb.length?module$contents$Blockly$ContextMenuItems_deleteNext_(b,c):(0,module$exports$Blockly$dialog.confirm)($.module$exports$Blockly$Msg.Msg.DELETE_ALL_BLOCKS.replace("%1",String(b.length)),function(d){d&&module$contents$Blockly$ContextMenuItems_deleteNext_(b,c)})}},scopeType:module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.ScopeType.WORKSPACE, +id:"workspaceDelete",weight:6})};var module$contents$Blockly$ContextMenuItems_registerWorkspaceOptions_=function(){(0,module$exports$Blockly$ContextMenuItems.registerUndo)();(0,module$exports$Blockly$ContextMenuItems.registerRedo)();(0,module$exports$Blockly$ContextMenuItems.registerCleanup)();(0,module$exports$Blockly$ContextMenuItems.registerCollapse)();(0,module$exports$Blockly$ContextMenuItems.registerExpand)();(0,module$exports$Blockly$ContextMenuItems.registerDeleteAll)()}; +module$exports$Blockly$ContextMenuItems.registerDuplicate=function(){module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.registry.register({displayText:function(){return $.module$exports$Blockly$Msg.Msg.DUPLICATE_BLOCK},preconditionFn:function(a){a=a.block;return!a.isInFlyout&&a.isDeletable()&&a.isMovable()?a.isDuplicatable()?"enabled":"disabled":"hidden"},callback:function(a){a.block&&(0,module$exports$Blockly$clipboard.duplicate)(a.block)},scopeType:module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.ScopeType.BLOCK, +id:"blockDuplicate",weight:1})}; +module$exports$Blockly$ContextMenuItems.registerComment=function(){module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.registry.register({displayText:function(a){return a.block.getCommentIcon()?$.module$exports$Blockly$Msg.Msg.REMOVE_COMMENT:$.module$exports$Blockly$Msg.Msg.ADD_COMMENT},preconditionFn:function(a){a=a.block;return module$exports$Blockly$utils$userAgent.IE||a.isInFlyout||!a.workspace.options.comments||a.isCollapsed()||!a.isEditable()?"hidden":"enabled"},callback:function(a){a= +a.block;a.getCommentIcon()?a.setCommentText(null):a.setCommentText("")},scopeType:module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.ScopeType.BLOCK,id:"blockComment",weight:2})}; +module$exports$Blockly$ContextMenuItems.registerInline=function(){module$exports$Blockly$ContextMenuRegistry.ContextMenuRegistry.registry.register({displayText:function(a){return a.block.getInputsInline()?$.module$exports$Blockly$Msg.Msg.EXTERNAL_INPUTS:$.module$exports$Blockly$Msg.Msg.INLINE_INPUTS},preconditionFn:function(a){a=a.block;if(!a.isInFlyout&&a.isMovable()&&!a.isCollapsed())for(var b=1;ba||Math.abs(this.workspaceHeight_-d)>a)this.workspaceWidth_=c,this.workspaceHeight_=d,this.bubble_.setBubbleSize(c+ +a,d+a),this.svgDialog_.setAttribute("width",this.workspaceWidth_),this.svgDialog_.setAttribute("height",this.workspaceHeight_),this.workspace_.setCachedParentSvgSize(this.workspaceWidth_,this.workspaceHeight_);this.block_.RTL&&(a="translate("+this.workspaceWidth_+",0)",this.workspace_.getCanvas().setAttribute("transform",a));this.workspace_.resize()};$.module$exports$Blockly$Mutator.Mutator.prototype.onBubbleMove_=function(){this.workspace_&&this.workspace_.recordDragTargets()}; +$.module$exports$Blockly$Mutator.Mutator.prototype.setVisible=function(a){var b=this;if(a!==this.isVisible())if((0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.BUBBLE_OPEN))(this.block_,a,"mutator")),a){this.bubble_=new module$exports$Blockly$Bubble.Bubble(this.block_.workspace,this.createEditor_(),this.block_.pathObject.svgPath,this.iconXY_,null,null);this.bubble_.setSvgId(this.block_.id);this.bubble_.registerMoveEvent(this.onBubbleMove_.bind(this)); +var c=this.workspace_.options.languageTree;a=this.workspace_.getFlyout();c&&(a.init(this.workspace_),a.show(c));this.rootBlock_=this.block_.decompose(this.workspace_);c=this.rootBlock_.getDescendants(!1);for(var d=0,e=void 0;e=c[d];d++)e.render();this.rootBlock_.setMovable(!1);this.rootBlock_.setDeletable(!1);a?(c=2*a.CORNER_RADIUS,a=this.rootBlock_.RTL?a.getWidth()+c:c):a=c=16;this.block_.RTL&&(a=-a);this.rootBlock_.moveBy(a,c);if(this.block_.saveConnections){var f=this.rootBlock_;this.block_.saveConnections(f); +this.sourceListener_=function(){b.block_&&b.block_.saveConnections(f)};this.block_.workspace.addChangeListener(this.sourceListener_)}this.resizeBubble_();this.workspace_.addChangeListener(this.workspaceChanged_.bind(this));this.updateWorkspace_();this.applyColour()}else this.svgDialog_=null,this.workspace_.dispose(),this.rootBlock_=this.workspace_=null,this.bubble_.dispose(),this.bubble_=null,this.workspaceHeight_=this.workspaceWidth_=0,this.sourceListener_&&(this.block_.workspace.removeChangeListener(this.sourceListener_), +this.sourceListener_=null)};$.module$exports$Blockly$Mutator.Mutator.prototype.workspaceChanged_=function(a){a.isUiEvent||a.type===module$exports$Blockly$Events$utils.CHANGE&&"disabled"===a.element||a.type===module$exports$Blockly$Events$utils.CREATE||this.updateWorkspace_()}; +$.module$exports$Blockly$Mutator.Mutator.prototype.updateWorkspace_=function(){if(!this.workspace_.isDragging())for(var a=this.workspace_.getTopBlocks(!1),b=0,c=void 0;c=a[b];b++){var d=c.getRelativeToSurfaceXY();20>d.y&&c.moveBy(0,20-d.y);if(c.RTL){var e=-20,f=this.workspace_.getFlyout();f&&(e-=f.getWidth());d.x>e&&c.moveBy(e-d.x,0)}else 20>d.x&&c.moveBy(20-d.x,0)}if(this.rootBlock_.workspace===this.workspace_){(a=(0,module$exports$Blockly$Events$utils.getGroup)())||(0,module$exports$Blockly$Events$utils.setGroup)(!0); +var g=this.block_;b=module$exports$Blockly$Events$BlockChange.BlockChange.getExtraBlockState_(g);c=g.rendered;g.rendered=!1;g.compose(this.rootBlock_);g.rendered=c;g.initSvg();g.rendered&&g.render();c=module$exports$Blockly$Events$BlockChange.BlockChange.getExtraBlockState_(g);if(b!==c){(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CHANGE))(g,"mutation",null,b,c));var h=(0,module$exports$Blockly$Events$utils.getGroup)(); +setTimeout(function(){var k=(0,module$exports$Blockly$Events$utils.getGroup)();(0,module$exports$Blockly$Events$utils.setGroup)(h);g.bumpNeighbours();(0,module$exports$Blockly$Events$utils.setGroup)(k)},$.module$exports$Blockly$config.config.bumpDelay)}this.workspace_.isDragging()||this.resizeBubble_();(0,module$exports$Blockly$Events$utils.setGroup)(a)}};$.module$exports$Blockly$Mutator.Mutator.prototype.dispose=function(){this.block_.mutator=null;module$exports$Blockly$Icon.Icon.prototype.dispose.call(this)}; +$.module$exports$Blockly$Mutator.Mutator.prototype.updateBlockStyle=function(){var a=this.workspace_;if(a&&a.getAllBlocks(!1)){for(var b=a.getAllBlocks(!1),c=0,d;d=b[c];c++)d.setStyle(d.getStyleName());if(a=a.getFlyout())for(a=a.workspace_.getAllBlocks(!1),b=0;c=a[b];b++)c.setStyle(c.getStyleName())}}; +$.module$exports$Blockly$Mutator.Mutator.reconnect=function(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;var d=a.targetBlock();return d&&d!==b||c.targetConnection===a?!1:(c.isConnected()&&c.disconnect(),c.connect(a),!0)};$.module$exports$Blockly$Mutator.Mutator.findParentWs=function(a){var b=null;if(a&&a.options){var c=a.options.parentWorkspace;a.isFlyout?c&&c.options&&(b=c.options.parentWorkspace):c&&(b=c)}return b};var module$exports$Blockly$Warning={Warning:function(a){module$exports$Blockly$Icon.Icon.call(this,a);this.createIcon();this.text_=Object.create(null);this.paragraphElement_=null;this.collapseHidden=!1}};$.$jscomp.inherits(module$exports$Blockly$Warning.Warning,module$exports$Blockly$Icon.Icon); +module$exports$Blockly$Warning.Warning.prototype.drawIcon_=function(a){(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{"class":"blocklyIconShape",d:"M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{"class":"blocklyIconSymbol",d:"m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT, +{"class":"blocklyIconSymbol",x:"7",y:"11",height:"2",width:"2"},a)};module$exports$Blockly$Warning.Warning.prototype.setVisible=function(a){a!==this.isVisible()&&((0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.BUBBLE_OPEN))(this.block_,a,"warning")),a?this.createBubble_():this.disposeBubble_())}; +module$exports$Blockly$Warning.Warning.prototype.createBubble_=function(){this.paragraphElement_=module$exports$Blockly$Bubble.Bubble.textToDom(this.getText());this.bubble_=module$exports$Blockly$Bubble.Bubble.createNonEditableBubble(this.paragraphElement_,this.block_,this.iconXY_);this.applyColour()};module$exports$Blockly$Warning.Warning.prototype.disposeBubble_=function(){this.bubble_.dispose();this.paragraphElement_=this.bubble_=null}; +module$exports$Blockly$Warning.Warning.prototype.setText=function(a,b){this.text_[b]!==a&&(a?this.text_[b]=a:delete this.text_[b],this.isVisible()&&(this.setVisible(!1),this.setVisible(!0)))};module$exports$Blockly$Warning.Warning.prototype.getText=function(){var a=[],b;for(b in this.text_)a.push(this.text_[b]);return a.join("\n")};module$exports$Blockly$Warning.Warning.prototype.dispose=function(){this.block_.warning=null;module$exports$Blockly$Icon.Icon.prototype.dispose.call(this)};var module$exports$Blockly$Comment={Comment:function(a){module$exports$Blockly$Icon.Icon.call(this,a);this.model_=a.commentModel;this.model_.text=this.model_.text||"";this.cachedText_="";this.paragraphElement_=this.textarea_=this.foreignObject_=this.onInputWrapper_=this.onChangeWrapper_=this.onWheelWrapper_=this.onMouseUpWrapper_=null;this.createIcon()}};$.$jscomp.inherits(module$exports$Blockly$Comment.Comment,module$exports$Blockly$Icon.Icon); +module$exports$Blockly$Comment.Comment.prototype.drawIcon_=function(a){(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{"class":"blocklyIconShape",r:"8",cx:"8",cy:"8"},a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.PATH,{"class":"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.4050.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25-1.201,0.998 -1.201,1.528 -1.204,2.19z"}, +a);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},a)}; +module$exports$Blockly$Comment.Comment.prototype.createEditor_=function(){this.foreignObject_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FOREIGNOBJECT,{x:module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH,y:module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH},null);var a=document.createElementNS(module$exports$Blockly$utils$dom.HTML_NS,"body");a.setAttribute("xmlns",module$exports$Blockly$utils$dom.HTML_NS);a.className="blocklyMinimalBody";var b=this.textarea_= +document.createElementNS(module$exports$Blockly$utils$dom.HTML_NS,"textarea");b.className="blocklyCommentTextarea";b.setAttribute("dir",this.block_.RTL?"RTL":"LTR");b.value=this.model_.text;this.resizeTextarea_();a.appendChild(b);this.foreignObject_.appendChild(a);this.onMouseUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"mouseup",this,this.startEdit_,!0,!0);this.onWheelWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"wheel",this,function(c){c.stopPropagation()}); +this.onChangeWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"change",this,function(c){this.cachedText_!==this.model_.text&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.CHANGE))(this.block_,"comment",null,this.cachedText_,this.model_.text))});this.onInputWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"input",this,function(c){this.model_.text=b.value});setTimeout(b.focus.bind(b), +0);return this.foreignObject_};module$exports$Blockly$Comment.Comment.prototype.updateEditable=function(){module$exports$Blockly$Icon.Icon.prototype.updateEditable.call(this);this.isVisible()&&(this.disposeBubble_(),this.createBubble_())};module$exports$Blockly$Comment.Comment.prototype.onBubbleResize_=function(){this.isVisible()&&(this.model_.size=this.bubble_.getBubbleSize(),this.resizeTextarea_())}; +module$exports$Blockly$Comment.Comment.prototype.resizeTextarea_=function(){var a=this.model_.size,b=2*module$exports$Blockly$Bubble.Bubble.BORDER_WIDTH,c=a.width-b;a=a.height-b;this.foreignObject_.setAttribute("width",c);this.foreignObject_.setAttribute("height",a);this.textarea_.style.width=c-4+"px";this.textarea_.style.height=a-4+"px"}; +module$exports$Blockly$Comment.Comment.prototype.setVisible=function(a){a!==this.isVisible()&&((0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.BUBBLE_OPEN))(this.block_,a,"comment")),(this.model_.pinned=a)?this.createBubble_():this.disposeBubble_())}; +module$exports$Blockly$Comment.Comment.prototype.createBubble_=function(){!this.block_.isEditable()||module$exports$Blockly$utils$userAgent.IE?this.createNonEditableBubble_():this.createEditableBubble_()}; +module$exports$Blockly$Comment.Comment.prototype.createEditableBubble_=function(){this.bubble_=new module$exports$Blockly$Bubble.Bubble(this.block_.workspace,this.createEditor_(),this.block_.pathObject.svgPath,this.iconXY_,this.model_.size.width,this.model_.size.height);this.bubble_.setSvgId(this.block_.id);this.bubble_.registerResizeEvent(this.onBubbleResize_.bind(this));this.applyColour()}; +module$exports$Blockly$Comment.Comment.prototype.createNonEditableBubble_=function(){this.paragraphElement_=module$exports$Blockly$Bubble.Bubble.textToDom(this.block_.getCommentText());this.bubble_=module$exports$Blockly$Bubble.Bubble.createNonEditableBubble(this.paragraphElement_,this.block_,this.iconXY_);this.applyColour()}; +module$exports$Blockly$Comment.Comment.prototype.disposeBubble_=function(){this.onMouseUpWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onMouseUpWrapper_),this.onMouseUpWrapper_=null);this.onWheelWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onWheelWrapper_),this.onWheelWrapper_=null);this.onChangeWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onChangeWrapper_),this.onChangeWrapper_=null);this.onInputWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onInputWrapper_), +this.onInputWrapper_=null);this.bubble_.dispose();this.paragraphElement_=this.foreignObject_=this.textarea_=this.bubble_=null};module$exports$Blockly$Comment.Comment.prototype.startEdit_=function(a){this.bubble_.promote()&&this.textarea_.focus();this.cachedText_=this.model_.text};module$exports$Blockly$Comment.Comment.prototype.getBubbleSize=function(){return this.model_.size}; +module$exports$Blockly$Comment.Comment.prototype.setBubbleSize=function(a,b){this.bubble_?this.bubble_.setBubbleSize(a,b):(this.model_.size.width=a,this.model_.size.height=b)};module$exports$Blockly$Comment.Comment.prototype.updateText=function(){this.textarea_?this.textarea_.value=this.model_.text:this.paragraphElement_&&(this.paragraphElement_.firstChild.textContent=this.model_.text)};module$exports$Blockly$Comment.Comment.prototype.dispose=function(){this.block_.comment=null;module$exports$Blockly$Icon.Icon.prototype.dispose.call(this)}; +(0,module$exports$Blockly$Css.register)("\n.blocklyCommentTextarea {\n background-color: #fef49c;\n border: 0;\n display: block;\n margin: 0;\n outline: 0;\n padding: 3px;\n resize: none;\n text-overflow: hidden;\n}\n");var module$exports$Blockly$sprite={SPRITE:{width:96,height:124,url:"sprites.png"}};var module$exports$Blockly$uiPosition={verticalPosition:{TOP:0,BOTTOM:1},horizontalPosition:{LEFT:0,RIGHT:1},bumpDirection:{UP:0,DOWN:1},getStartPositionRect:function(a,b,c,d,e,f){var g=f.scrollbar&&f.scrollbar.canScrollVertically();a.horizontal===module$exports$Blockly$uiPosition.horizontalPosition.LEFT?(c=e.absoluteMetrics.left+c,g&&f.RTL&&(c+=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness)):(c=e.absoluteMetrics.left+e.viewMetrics.width-b.width-c,g&&!f.RTL&&(c-=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness)); +a.vertical===module$exports$Blockly$uiPosition.verticalPosition.TOP?a=e.absoluteMetrics.top+d:(a=e.absoluteMetrics.top+e.viewMetrics.height-b.height-d,f.scrollbar&&f.scrollbar.canScrollHorizontally()&&(a-=module$exports$Blockly$Scrollbar.Scrollbar.scrollbarThickness));return new module$exports$Blockly$utils$Rect.Rect(a,a+b.height,c,c+b.width)},getCornerOppositeToolbox:function(a,b){return{horizontal:b.toolboxMetrics.position===module$exports$Blockly$utils$toolbox.Position.LEFT||a.horizontalLayout&& +!a.RTL?module$exports$Blockly$uiPosition.horizontalPosition.RIGHT:module$exports$Blockly$uiPosition.horizontalPosition.LEFT,vertical:b.toolboxMetrics.position===module$exports$Blockly$utils$toolbox.Position.BOTTOM?module$exports$Blockly$uiPosition.verticalPosition.TOP:module$exports$Blockly$uiPosition.verticalPosition.BOTTOM}},bumpPositionRect:function(a,b,c,d){for(var e=a.left,f=a.right-a.left,g=a.bottom-a.top,h=0;himage, .blocklyZoom>svg>image {\n opacity: .4;\n}\n\n.blocklyZoom>image:hover, .blocklyZoom>svg>image:hover {\n opacity: .6;\n}\n\n.blocklyZoom>image:active, .blocklyZoom>svg>image:active {\n opacity: .8;\n}\n");var module$exports$Blockly$WorkspaceComment={WorkspaceComment:function(a,b,c,d,e){this.id=e&&!a.getCommentById(e)?e:(0,module$exports$Blockly$utils$idGenerator.genUid)();a.addTopComment(this);this.xy_=new module$exports$Blockly$utils$Coordinate.Coordinate(0,0);this.height_=c;this.width_=d;this.workspace=a;this.RTL=a.RTL;this.editable_=this.movable_=this.deletable_=!0;this.content_=b;this.disposed_=!1;this.isComment=!0;module$exports$Blockly$WorkspaceComment.WorkspaceComment.fireCreateEvent(this)}}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.dispose=function(){this.disposed_||((0,module$exports$Blockly$Events$utils.isEnabled)()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_DELETE))(this)),this.workspace.removeTopComment(this),this.disposed_=!0)};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.getHeight=function(){return this.height_}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setHeight=function(a){this.height_=a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.getWidth=function(){return this.width_};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setWidth=function(a){this.width_=a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.getXY=function(){return new module$exports$Blockly$utils$Coordinate.Coordinate(this.xy_.x,this.xy_.y)}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.moveBy=function(a,b){var c=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_MOVE))(this);this.xy_.translate(a,b);c.recordNew();(0,module$exports$Blockly$Events$utils.fire)(c)};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.isDeletable=function(){return this.deletable_&&!(this.workspace&&this.workspace.options.readOnly)}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setDeletable=function(a){this.deletable_=a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.isMovable=function(){return this.movable_&&!(this.workspace&&this.workspace.options.readOnly)};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setMovable=function(a){this.movable_=a}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.isEditable=function(){return this.editable_&&!(this.workspace&&this.workspace.options.readOnly)};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setEditable=function(a){this.editable_=a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.getContent=function(){return this.content_}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setContent=function(a){this.content_!==a&&((0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_CHANGE))(this,this.content_,a)),this.content_=a)}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.toXmlWithXY=function(a){a=this.toXml(a);a.setAttribute("x",Math.round(this.xy_.x));a.setAttribute("y",Math.round(this.xy_.y));a.setAttribute("h",this.height_);a.setAttribute("w",this.width_);return a};module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.toXml=function(a){var b=(0,$.module$exports$Blockly$utils$xml.createElement)("comment");a||(b.id=this.id);b.textContent=this.getContent();return b}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.fireCreateEvent=function(a){if((0,module$exports$Blockly$Events$utils.isEnabled)()){var b=(0,module$exports$Blockly$Events$utils.getGroup)();b||(0,module$exports$Blockly$Events$utils.setGroup)(!0);try{(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_CREATE))(a))}finally{b||(0,module$exports$Blockly$Events$utils.setGroup)(!1)}}}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.fromXml=function(a,b){var c=module$exports$Blockly$WorkspaceComment.WorkspaceComment.parseAttributes(a);b=new module$exports$Blockly$WorkspaceComment.WorkspaceComment(b,c.content,c.h,c.w,c.id);c=parseInt(a.getAttribute("x"),10);a=parseInt(a.getAttribute("y"),10);isNaN(c)||isNaN(a)||b.moveBy(c,a);module$exports$Blockly$WorkspaceComment.WorkspaceComment.fireCreateEvent(b);return b}; +module$exports$Blockly$WorkspaceComment.WorkspaceComment.parseAttributes=function(a){var b=a.getAttribute("h"),c=a.getAttribute("w");return{id:a.getAttribute("id"),h:b?parseInt(b,10):100,w:c?parseInt(c,10):100,x:parseInt(a.getAttribute("x"),10),y:parseInt(a.getAttribute("y"),10),content:a.textContent}};var module$exports$Blockly$WorkspaceCommentSvg={},module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE=8,module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS=3,module$contents$Blockly$WorkspaceCommentSvg_TEXTAREA_OFFSET=2; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg=function(a,b,c,d,e){module$exports$Blockly$WorkspaceComment.WorkspaceComment.call(this,a,b,c,d,e);this.onMouseMoveWrapper_=this.onMouseUpWrapper_=null;this.eventsInit_=!1;this.deleteIconBorder_=this.deleteGroup_=this.resizeGroup_=this.foreignObject_=this.svgHandleTarget_=this.svgRectTarget_=this.textarea_=null;this.autoLayout_=this.focused_=!1;this.svgGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G, +{"class":"blocklyComment"},null);this.svgGroup_.translate_="";this.svgRect_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyCommentRect",x:0,y:0,rx:module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS,ry:module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS});this.svgGroup_.appendChild(this.svgRect_);this.rendered_=!1;this.useDragSurface_=(0,module$exports$Blockly$utils$svgMath.is3dSupported)()&&!!a.getBlockDragSurface();this.render()}; +$.$jscomp.inherits(module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg,module$exports$Blockly$WorkspaceComment.WorkspaceComment); +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.dispose=function(){this.disposed_||((0,$.module$exports$Blockly$common.getSelected)()===this&&(this.unselect(),this.workspace.cancelCurrentGesture()),(0,module$exports$Blockly$Events$utils.isEnabled)()&&(0,module$exports$Blockly$Events$utils.fire)(new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_DELETE))(this)),(0,module$exports$Blockly$utils$dom.removeNode)(this.svgGroup_),this.disposeInternal_(), +(0,module$exports$Blockly$Events$utils.disable)(),module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.dispose.call(this),(0,module$exports$Blockly$Events$utils.enable)())}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.initSvg=function(a){if(!this.workspace.rendered)throw TypeError("Workspace is headless.");this.workspace.options.readOnly||this.eventsInit_||((0,module$exports$Blockly$browserEvents.conditionalBind)(this.svgRectTarget_,"mousedown",this,this.pathMouseDown_),(0,module$exports$Blockly$browserEvents.conditionalBind)(this.svgHandleTarget_,"mousedown",this,this.pathMouseDown_));this.eventsInit_=!0;this.updateMovable();this.getSvgRoot().parentNode|| +this.workspace.getBubbleCanvas().appendChild(this.getSvgRoot());!a&&this.textarea_&&this.textarea_.select()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.pathMouseDown_=function(a){var b=this.workspace.getGesture(a);b&&b.handleBubbleStart(a,this)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.showContextMenu=function(a){if(!this.workspace.options.readOnly){var b=[];this.isDeletable()&&this.isMovable()&&(b.push((0,$.module$exports$Blockly$ContextMenu.commentDuplicateOption)(this)),b.push((0,$.module$exports$Blockly$ContextMenu.commentDeleteOption)(this)));(0,$.module$exports$Blockly$ContextMenu.show)(a,b,this.RTL)}}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.select=function(){if((0,$.module$exports$Blockly$common.getSelected)()!==this){var a=null;if((0,$.module$exports$Blockly$common.getSelected)()){a=(0,$.module$exports$Blockly$common.getSelected)().id;(0,module$exports$Blockly$Events$utils.disable)();try{(0,$.module$exports$Blockly$common.getSelected)().unselect()}finally{(0,module$exports$Blockly$Events$utils.enable)()}}a=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.SELECTED))(a, +this.id,this.workspace.id);(0,module$exports$Blockly$Events$utils.fire)(a);(0,$.module$exports$Blockly$common.setSelected)(this);this.addSelect()}}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.unselect=function(){if((0,$.module$exports$Blockly$common.getSelected)()===this){var a=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.SELECTED))(this.id,null,this.workspace.id);(0,module$exports$Blockly$Events$utils.fire)(a);(0,$.module$exports$Blockly$common.setSelected)(null);this.removeSelect();this.blurFocus()}}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.addSelect=function(){(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklySelected");this.setFocus()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.removeSelect=function(){(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklySelected");this.blurFocus()}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.addFocus=function(){(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklyFocused")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.removeFocus=function(){(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklyFocused")}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getRelativeToSurfaceXY=function(){var a=0,b=0,c=this.useDragSurface_?this.workspace.getBlockDragSurface().getGroup():null,d=this.getSvgRoot();if(d){do{var e=(0,module$exports$Blockly$utils$svgMath.getRelativeXY)(d);a+=e.x;b+=e.y;this.useDragSurface_&&this.workspace.getBlockDragSurface().getCurrentBlock()===d&&(e=this.workspace.getBlockDragSurface().getSurfaceTranslation(),a+=e.x,b+=e.y);d=d.parentNode}while(d&&d!==this.workspace.getBubbleCanvas()&& +d!==c)}return this.xy_=new module$exports$Blockly$utils$Coordinate.Coordinate(a,b)};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.moveBy=function(a,b){var c=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.COMMENT_MOVE))(this),d=this.getRelativeToSurfaceXY();this.translate(d.x+a,d.y+b);this.xy_=new module$exports$Blockly$utils$Coordinate.Coordinate(d.x+a,d.y+b);c.recordNew();(0,module$exports$Blockly$Events$utils.fire)(c);this.workspace.resizeContents()}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.translate=function(a,b){this.xy_=new module$exports$Blockly$utils$Coordinate.Coordinate(a,b);this.getSvgRoot().setAttribute("transform","translate("+a+","+b+")")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.moveToDragSurface=function(){if(this.useDragSurface_){var a=this.getRelativeToSurfaceXY();this.clearTransformAttributes_();this.workspace.getBlockDragSurface().translateSurface(a.x,a.y);this.workspace.getBlockDragSurface().setBlocksAndShow(this.getSvgRoot())}}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.moveDuringDrag=function(a,b){a?a.translateSurface(b.x,b.y):(this.svgGroup_.translate_="translate("+b.x+","+b.y+")",this.svgGroup_.setAttribute("transform",this.svgGroup_.translate_+this.svgGroup_.skew_))};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.moveTo=function(a,b){this.translate(a,b)};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.clearTransformAttributes_=function(){this.getSvgRoot().removeAttribute("transform")}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getBoundingRectangle=function(){var a=this.getRelativeToSurfaceXY(),b=this.getHeightWidth(),c=a.y,d=a.y+b.height;if(this.RTL){var e=a.x-b.width;a=a.x}else e=a.x,a=a.x+b.width;return new module$exports$Blockly$utils$Rect.Rect(c,d,e,a)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.updateMovable=function(){this.isMovable()?(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklyDraggable"):(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklyDraggable")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setMovable=function(a){module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setMovable.call(this,a);this.updateMovable()}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setEditable=function(a){module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setEditable.call(this,a);this.textarea_&&(this.textarea_.readOnly=!a)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setDragging=function(a){a?(a=this.getSvgRoot(),a.translate_="",a.skew_="",(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklyDragging")):(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklyDragging")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getSvgRoot=function(){return this.svgGroup_}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getContent=function(){return this.textarea_?this.textarea_.value:this.content_};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setContent=function(a){module$exports$Blockly$WorkspaceComment.WorkspaceComment.prototype.setContent.call(this,a);this.textarea_&&(this.textarea_.value=a)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setDeleteStyle=function(a){a?(0,module$exports$Blockly$utils$dom.addClass)(this.svgGroup_,"blocklyDraggingDelete"):(0,module$exports$Blockly$utils$dom.removeClass)(this.svgGroup_,"blocklyDraggingDelete")};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setAutoLayout=function(a){}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.toXmlWithXY=function(a){var b;this.workspace.RTL&&(b=this.workspace.getWidth());a=this.toXml(a);var c=this.getRelativeToSurfaceXY();a.setAttribute("x",Math.round(this.workspace.RTL?b-c.x:c.x));a.setAttribute("y",Math.round(c.y));a.setAttribute("h",this.getHeight());a.setAttribute("w",this.getWidth());return a}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.toCopyData=function(){return{saveInfo:this.toXmlWithXY(),source:this.workspace,typeCounts:null}};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.getHeightWidth=function(){return{width:this.getWidth(),height:this.getHeight()}}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.render=function(){if(!this.rendered_){var a=this.getHeightWidth();this.createEditor_();this.svgGroup_.appendChild(this.foreignObject_);this.svgHandleTarget_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyCommentHandleTarget",x:0,y:0});this.svgGroup_.appendChild(this.svgHandleTarget_);this.svgRectTarget_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT, +{"class":"blocklyCommentTarget",x:0,y:0,rx:module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS,ry:module$contents$Blockly$WorkspaceCommentSvg_BORDER_RADIUS});this.svgGroup_.appendChild(this.svgRectTarget_);this.addResizeDom_();this.isDeletable()&&this.addDeleteDom_();this.setSize_(a.width,a.height);this.textarea_.value=this.content_;this.rendered_=!0;this.resizeGroup_&&(0,module$exports$Blockly$browserEvents.conditionalBind)(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_);this.isDeletable()&& +((0,module$exports$Blockly$browserEvents.conditionalBind)(this.deleteGroup_,"mousedown",this,this.deleteMouseDown_),(0,module$exports$Blockly$browserEvents.conditionalBind)(this.deleteGroup_,"mouseout",this,this.deleteMouseOut_),(0,module$exports$Blockly$browserEvents.conditionalBind)(this.deleteGroup_,"mouseup",this,this.deleteMouseUp_))}}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.createEditor_=function(){this.foreignObject_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.FOREIGNOBJECT,{x:0,y:module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET,"class":"blocklyCommentForeignObject"},null);var a=document.createElementNS(module$exports$Blockly$utils$dom.HTML_NS,"body");a.setAttribute("xmlns",module$exports$Blockly$utils$dom.HTML_NS);a.className= +"blocklyMinimalBody";var b=document.createElementNS(module$exports$Blockly$utils$dom.HTML_NS,"textarea");b.className="blocklyCommentTextarea";b.setAttribute("dir",this.RTL?"RTL":"LTR");b.readOnly=!this.isEditable();a.appendChild(b);this.textarea_=b;this.foreignObject_.appendChild(a);(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"wheel",this,function(c){c.stopPropagation()});(0,module$exports$Blockly$browserEvents.conditionalBind)(b,"change",this,function(c){this.setContent(b.value)}); +return this.foreignObject_}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.addResizeDom_=function(){this.resizeGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":this.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.svgGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.POLYGON,{points:"0,x x,x x,0".replace(/x/g,module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE.toString())},this.resizeGroup_); +(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE,{"class":"blocklyResizeLine",x1:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE/3,y1:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE-1,x2:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE-1,y2:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE/3},this.resizeGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE,{"class":"blocklyResizeLine", +x1:2*module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE/3,y1:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE-1,x2:module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE-1,y2:2*module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE/3},this.resizeGroup_)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.addDeleteDom_=function(){this.deleteGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":"blocklyCommentDeleteIcon"},this.svgGroup_);this.deleteIconBorder_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CIRCLE,{"class":"blocklyDeleteIconShape",r:"7",cx:"7.5",cy:"7.5"},this.deleteGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE, +{x1:"5",y1:"10",x2:"10",y2:"5",stroke:"#fff","stroke-width":"2"},this.deleteGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.LINE,{x1:"5",y1:"5",x2:"10",y2:"10",stroke:"#fff","stroke-width":"2"},this.deleteGroup_)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.resizeMouseDown_=function(a){this.unbindDragEvents_();(0,module$exports$Blockly$browserEvents.isRightButton)(a)||(this.workspace.startDrag(a,new module$exports$Blockly$utils$Coordinate.Coordinate(this.workspace.RTL?-this.width_:this.width_,this.height_)),this.onMouseUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document,"mouseup",this,this.resizeMouseUp_),this.onMouseMoveWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(document, +"mousemove",this,this.resizeMouseMove_),this.workspace.hideChaff());a.stopPropagation()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.deleteMouseDown_=function(a){(0,module$exports$Blockly$utils$dom.addClass)(this.deleteIconBorder_,"blocklyDeleteIconHighlighted");a.stopPropagation()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.deleteMouseOut_=function(a){(0,module$exports$Blockly$utils$dom.removeClass)(this.deleteIconBorder_,"blocklyDeleteIconHighlighted")}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.deleteMouseUp_=function(a){this.dispose();a.stopPropagation()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.unbindDragEvents_=function(){this.onMouseUpWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onMouseUpWrapper_),this.onMouseUpWrapper_=null);this.onMouseMoveWrapper_&&((0,module$exports$Blockly$browserEvents.unbind)(this.onMouseMoveWrapper_),this.onMouseMoveWrapper_=null)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.resizeMouseUp_=function(a){(0,module$exports$Blockly$Touch.clearTouchIdentifier)();this.unbindDragEvents_()};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.resizeMouseMove_=function(a){this.autoLayout_=!1;a=this.workspace.moveDrag(a);this.setSize_(this.RTL?-a.x:a.x,a.y)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.resizeComment_=function(){var a=this.getHeightWidth(),b=module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET,c=2*module$contents$Blockly$WorkspaceCommentSvg_TEXTAREA_OFFSET;this.foreignObject_.setAttribute("width",a.width);this.foreignObject_.setAttribute("height",a.height-b);this.RTL&&this.foreignObject_.setAttribute("x",-a.width);this.textarea_.style.width=a.width-c+"px";this.textarea_.style.height=a.height- +c-b+"px"}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setSize_=function(a,b){a=Math.max(a,45);b=Math.max(b,20+module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET);this.width_=a;this.height_=b;this.svgRect_.setAttribute("width",a);this.svgRect_.setAttribute("height",b);this.svgRectTarget_.setAttribute("width",a);this.svgRectTarget_.setAttribute("height",b);this.svgHandleTarget_.setAttribute("width",a);this.svgHandleTarget_.setAttribute("height",module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET);this.RTL&& +(this.svgRect_.setAttribute("transform","scale(-1 1)"),this.svgRectTarget_.setAttribute("transform","scale(-1 1)"));this.resizeGroup_&&(this.RTL?(this.resizeGroup_.setAttribute("transform","translate("+(-a+module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+","+(b-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+") scale(-1 1)"),this.deleteGroup_.setAttribute("transform","translate("+(-a+module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+","+-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE+ +") scale(-1 1)")):(this.resizeGroup_.setAttribute("transform","translate("+(a-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+","+(b-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+")"),this.deleteGroup_.setAttribute("transform","translate("+(a-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE)+","+-module$contents$Blockly$WorkspaceCommentSvg_RESIZE_SIZE+")")));this.resizeComment_()}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.disposeInternal_=function(){this.svgHandleTarget_=this.svgRectTarget_=this.foreignObject_=this.textarea_=null;this.disposed_=!0}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.setFocus=function(){var a=this;this.focused_=!0;setTimeout(function(){a.disposed_||(a.textarea_.focus(),a.addFocus(),(0,module$exports$Blockly$utils$dom.addClass)(a.svgRectTarget_,"blocklyCommentTargetFocused"),(0,module$exports$Blockly$utils$dom.addClass)(a.svgHandleTarget_,"blocklyCommentHandleTargetFocused"))},0)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.prototype.blurFocus=function(){var a=this;this.focused_=!1;setTimeout(function(){a.disposed_||(a.textarea_.blur(),a.removeFocus(),(0,module$exports$Blockly$utils$dom.removeClass)(a.svgRectTarget_,"blocklyCommentTargetFocused"),(0,module$exports$Blockly$utils$dom.removeClass)(a.svgHandleTarget_,"blocklyCommentHandleTargetFocused"))},0)}; +module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.fromXmlRendered=function(a,b,c){(0,module$exports$Blockly$Events$utils.disable)();try{var d=module$exports$Blockly$WorkspaceComment.WorkspaceComment.parseAttributes(a);var e=new module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg(b,d.content,d.h,d.w,d.id);b.rendered&&(e.initSvg(!0),e.render());if(!isNaN(d.x)&&!isNaN(d.y))if(b.RTL){var f=c||b.getWidth();e.moveBy(f-d.x,d.y)}else e.moveBy(d.x,d.y)}finally{(0,module$exports$Blockly$Events$utils.enable)()}module$exports$Blockly$WorkspaceComment.WorkspaceComment.fireCreateEvent(e); +return e};module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.DEFAULT_SIZE=100;module$exports$Blockly$WorkspaceCommentSvg.WorkspaceCommentSvg.TOP_OFFSET=10;(0,module$exports$Blockly$Css.register)("\n.blocklyCommentForeignObject {\n position: relative;\n z-index: 0;\n}\n\n.blocklyCommentRect {\n fill: #E7DE8E;\n stroke: #bcA903;\n stroke-width: 1px;\n}\n\n.blocklyCommentTarget {\n fill: transparent;\n stroke: #bcA903;\n}\n\n.blocklyCommentTargetFocused {\n fill: none;\n}\n\n.blocklyCommentHandleTarget {\n fill: none;\n}\n\n.blocklyCommentHandleTargetFocused {\n fill: transparent;\n}\n\n.blocklyFocused>.blocklyCommentRect {\n fill: #B9B272;\n stroke: #B9B272;\n}\n\n.blocklySelected>.blocklyCommentTarget {\n stroke: #fc3;\n stroke-width: 3px;\n}\n\n.blocklyCommentDeleteIcon {\n cursor: pointer;\n fill: #000;\n display: none;\n}\n\n.blocklySelected > .blocklyCommentDeleteIcon {\n display: block;\n}\n\n.blocklyDeleteIconShape {\n fill: #000;\n stroke: #000;\n stroke-width: 1px;\n}\n\n.blocklyDeleteIconShape.blocklyDeleteIconHighlighted {\n stroke: #fc3;\n}\n");var module$exports$Blockly$Trashcan={Trashcan:function(a){module$exports$Blockly$DeleteArea.DeleteArea.call(this);this.workspace_=a;this.id="trashcan";this.contents_=[];this.flyout=null;0>=this.workspace_.options.maxTrashcanContents||(this.isLidOpen=!1,this.minOpenness_=0,this.svgLid_=this.svgGroup_=null,this.top_=this.left_=this.lidOpen_=this.lidTask_=0,this.initialized_=!1,a=new module$exports$Blockly$Options.Options({scrollbars:!0,parentWorkspace:this.workspace_,rtl:this.workspace_.RTL,oneBasedIndex:this.workspace_.options.oneBasedIndex, +renderer:this.workspace_.options.renderer,rendererOverrides:this.workspace_.options.rendererOverrides,move:{scrollbars:!0}}),this.workspace_.horizontalLayout?(a.toolboxPosition=this.workspace_.toolboxPosition===module$exports$Blockly$utils$toolbox.Position.TOP?module$exports$Blockly$utils$toolbox.Position.BOTTOM:module$exports$Blockly$utils$toolbox.Position.TOP,this.flyout=new ((0,module$exports$Blockly$registry.getClassFromOptions)(module$exports$Blockly$registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, +this.workspace_.options,!0))(a)):(a.toolboxPosition=this.workspace_.toolboxPosition===module$exports$Blockly$utils$toolbox.Position.RIGHT?module$exports$Blockly$utils$toolbox.Position.LEFT:module$exports$Blockly$utils$toolbox.Position.RIGHT,this.flyout=new ((0,module$exports$Blockly$registry.getClassFromOptions)(module$exports$Blockly$registry.Type.FLYOUTS_VERTICAL_TOOLBOX,this.workspace_.options,!0))(a)),this.workspace_.addChangeListener(this.onDelete_.bind(this)))}}; +$.$jscomp.inherits(module$exports$Blockly$Trashcan.Trashcan,module$exports$Blockly$DeleteArea.DeleteArea); +module$exports$Blockly$Trashcan.Trashcan.prototype.createDom=function(){this.svgGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":"blocklyTrash"},null);var a=String(Math.random()).substring(2);var b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CLIPPATH,{id:"blocklyTrashBodyClipPath"+a},this.svgGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT, +{width:module$contents$Blockly$Trashcan_WIDTH,height:module$contents$Blockly$Trashcan_BODY_HEIGHT,y:module$contents$Blockly$Trashcan_LID_HEIGHT},b);var c=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.IMAGE,{width:module$exports$Blockly$sprite.SPRITE.width,x:-module$contents$Blockly$Trashcan_SPRITE_LEFT,height:module$exports$Blockly$sprite.SPRITE.height,y:-module$contents$Blockly$Trashcan_SPRITE_TOP,"clip-path":"url(#blocklyTrashBodyClipPath"+a+")"},this.svgGroup_); +c.setAttributeNS(module$exports$Blockly$utils$dom.XLINK_NS,"xlink:href",this.workspace_.options.pathToMedia+module$exports$Blockly$sprite.SPRITE.url);b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.CLIPPATH,{id:"blocklyTrashLidClipPath"+a},this.svgGroup_);(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{width:module$contents$Blockly$Trashcan_WIDTH,height:module$contents$Blockly$Trashcan_LID_HEIGHT},b);this.svgLid_= +(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.IMAGE,{width:module$exports$Blockly$sprite.SPRITE.width,x:-module$contents$Blockly$Trashcan_SPRITE_LEFT,height:module$exports$Blockly$sprite.SPRITE.height,y:-module$contents$Blockly$Trashcan_SPRITE_TOP,"clip-path":"url(#blocklyTrashLidClipPath"+a+")"},this.svgGroup_);this.svgLid_.setAttributeNS(module$exports$Blockly$utils$dom.XLINK_NS,"xlink:href",this.workspace_.options.pathToMedia+module$exports$Blockly$sprite.SPRITE.url); +(0,module$exports$Blockly$browserEvents.bind)(this.svgGroup_,"mousedown",this,this.blockMouseDownWhenOpenable_);(0,module$exports$Blockly$browserEvents.bind)(this.svgGroup_,"mouseup",this,this.click);(0,module$exports$Blockly$browserEvents.bind)(c,"mouseover",this,this.mouseOver_);(0,module$exports$Blockly$browserEvents.bind)(c,"mouseout",this,this.mouseOut_);this.animateLid_();return this.svgGroup_}; +module$exports$Blockly$Trashcan.Trashcan.prototype.init=function(){0this.minOpenness_&&1>this.lidOpen_&&(this.lidTask_=setTimeout(this.animateLid_.bind(this),module$contents$Blockly$Trashcan_ANIMATION_LENGTH/a))}; +module$exports$Blockly$Trashcan.Trashcan.prototype.setLidAngle_=function(a){var b=this.workspace_.toolboxPosition===module$exports$Blockly$utils$toolbox.Position.RIGHT||this.workspace_.horizontalLayout&&this.workspace_.RTL;this.svgLid_.setAttribute("transform","rotate("+(b?-a:a)+","+(b?4:module$contents$Blockly$Trashcan_WIDTH-4)+","+(module$contents$Blockly$Trashcan_LID_HEIGHT-2)+")")}; +module$exports$Blockly$Trashcan.Trashcan.prototype.setMinOpenness_=function(a){this.minOpenness_=a;this.isLidOpen||this.setLidAngle_(a*module$contents$Blockly$Trashcan_MAX_LID_ANGLE)};module$exports$Blockly$Trashcan.Trashcan.prototype.closeLid=function(){this.setLidOpen(!1)};module$exports$Blockly$Trashcan.Trashcan.prototype.click=function(){this.hasContents_()&&this.openFlyout()}; +module$exports$Blockly$Trashcan.Trashcan.prototype.fireUiEvent_=function(a){a=new ((0,module$exports$Blockly$Events$utils.get)(module$exports$Blockly$Events$utils.TRASHCAN_OPEN))(a,this.workspace_.id);(0,module$exports$Blockly$Events$utils.fire)(a)};module$exports$Blockly$Trashcan.Trashcan.prototype.blockMouseDownWhenOpenable_=function(a){!this.contentsIsOpen()&&this.hasContents_()&&a.stopPropagation()}; +module$exports$Blockly$Trashcan.Trashcan.prototype.mouseOver_=function(){this.hasContents_()&&this.setLidOpen(!0)};module$exports$Blockly$Trashcan.Trashcan.prototype.mouseOut_=function(){this.setLidOpen(!1)}; +module$exports$Blockly$Trashcan.Trashcan.prototype.onDelete_=function(a){if(!(0>=this.workspace_.options.maxTrashcanContents||a.type!==module$exports$Blockly$Events$utils.DELETE||a.type!==module$exports$Blockly$Events$utils.DELETE||a.wasShadow)&&(a=this.cleanBlockJson_(a.oldJson),-1===this.contents_.indexOf(a))){for(this.contents_.unshift(a);this.contents_.length>this.workspace_.options.maxTrashcanContents;)this.contents_.pop();this.setMinOpenness_(module$contents$Blockly$Trashcan_HAS_BLOCKS_LID_ANGLE)}}; +module$exports$Blockly$Trashcan.Trashcan.prototype.cleanBlockJson_=function(a){function b(c){if(c){delete c.id;delete c.x;delete c.y;delete c.enabled;if(c.icons&&c.icons.comment){var d=c.icons.comment;delete d.height;delete d.width;delete d.pinned}d=c.inputs;for(var e in d){var f=d[e];b(f.block);b(f.shadow)}c.next&&(c=c.next,b(c.block),b(c.shadow))}}a=JSON.parse(JSON.stringify(a));b(a);a.kind="BLOCK";return JSON.stringify(a)}; +var module$contents$Blockly$Trashcan_WIDTH=47,module$contents$Blockly$Trashcan_BODY_HEIGHT=44,module$contents$Blockly$Trashcan_LID_HEIGHT=16,module$contents$Blockly$Trashcan_MARGIN_VERTICAL=20,module$contents$Blockly$Trashcan_MARGIN_HORIZONTAL=20,module$contents$Blockly$Trashcan_MARGIN_HOTSPOT=10,module$contents$Blockly$Trashcan_SPRITE_LEFT=0,module$contents$Blockly$Trashcan_SPRITE_TOP=32,module$contents$Blockly$Trashcan_HAS_BLOCKS_LID_ANGLE=.1,module$contents$Blockly$Trashcan_ANIMATION_LENGTH=80, +module$contents$Blockly$Trashcan_ANIMATION_FRAMES=4,module$contents$Blockly$Trashcan_OPACITY_MIN=.4,module$contents$Blockly$Trashcan_OPACITY_MAX=.8,module$contents$Blockly$Trashcan_MAX_LID_ANGLE=45;var module$exports$Blockly$FlyoutButton={FlyoutButton:function(a,b,c,d){this.workspace_=a;this.targetWorkspace_=b;this.text_=c.text;this.position_=new module$exports$Blockly$utils$Coordinate.Coordinate(0,0);this.isLabel_=d;this.callbackKey_=c.callbackKey||c.callbackkey;this.cssClass_=c["web-class"]||null;this.onMouseUpWrapper_=null;this.info=c;this.height=this.width=0;this.svgText_=this.svgGroup_=null}}; +module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.createDom=function(){var a=this.isLabel_?"blocklyFlyoutLabel":"blocklyFlyoutButton";this.cssClass_&&(a+=" "+this.cssClass_);this.svgGroup_=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.G,{"class":a},this.workspace_.getCanvas());var b;this.isLabel_||(b=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":"blocklyFlyoutButtonShadow",rx:4,ry:4,x:1, +y:1},this.svgGroup_));a=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.RECT,{"class":this.isLabel_?"blocklyFlyoutLabelBackground":"blocklyFlyoutButtonBackground",rx:4,ry:4},this.svgGroup_);var c=(0,module$exports$Blockly$utils$dom.createSvgElement)(module$exports$Blockly$utils$Svg.Svg.TEXT,{"class":this.isLabel_?"blocklyFlyoutLabelText":"blocklyText",x:0,y:0,"text-anchor":"middle"},this.svgGroup_),d=(0,module$exports$Blockly$utils$parsing.replaceMessageReferences)(this.text_); +this.workspace_.RTL&&(d+="\u200f");c.textContent=d;this.isLabel_&&(this.svgText_=c,this.workspace_.getThemeManager().subscribe(this.svgText_,"flyoutForegroundColour","fill"));var e=(0,module$exports$Blockly$utils$style.getComputedStyle)(c,"fontSize"),f=(0,module$exports$Blockly$utils$style.getComputedStyle)(c,"fontWeight"),g=(0,module$exports$Blockly$utils$style.getComputedStyle)(c,"fontFamily");this.width=(0,module$exports$Blockly$utils$dom.getFastTextWidthWithSizeString)(c,e,f,g);d=(0,module$exports$Blockly$utils$dom.measureFontMetrics)(d, +e,f,g);this.height=d.height;this.isLabel_||(this.width+=2*module$exports$Blockly$FlyoutButton.FlyoutButton.TEXT_MARGIN_X,this.height+=2*module$exports$Blockly$FlyoutButton.FlyoutButton.TEXT_MARGIN_Y,b.setAttribute("width",this.width),b.setAttribute("height",this.height));a.setAttribute("width",this.width);a.setAttribute("height",this.height);c.setAttribute("x",this.width/2);c.setAttribute("y",this.height/2-d.height/2+d.baseline);this.updateTransform_();this.onMouseUpWrapper_=(0,module$exports$Blockly$browserEvents.conditionalBind)(this.svgGroup_, +"mouseup",this,this.onMouseUp_);return this.svgGroup_};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.show=function(){this.updateTransform_();this.svgGroup_.setAttribute("display","block")};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.updateTransform_=function(){this.svgGroup_.setAttribute("transform","translate("+this.position_.x+","+this.position_.y+")")}; +module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.moveTo=function(a,b){this.position_.x=a;this.position_.y=b;this.updateTransform_()};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.isLabel=function(){return this.isLabel_};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.getPosition=function(){return this.position_};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.getButtonText=function(){return this.text_}; +module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.getTargetWorkspace=function(){return this.targetWorkspace_};module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.dispose=function(){this.onMouseUpWrapper_&&(0,module$exports$Blockly$browserEvents.unbind)(this.onMouseUpWrapper_);this.svgGroup_&&(0,module$exports$Blockly$utils$dom.removeNode)(this.svgGroup_);this.svgText_&&this.workspace_.getThemeManager().unsubscribe(this.svgText_)}; +module$exports$Blockly$FlyoutButton.FlyoutButton.prototype.onMouseUp_=function(a){(a=this.targetWorkspace_.getGesture(a))&&a.cancel();this.isLabel_&&this.callbackKey_?console.warn("Labels should not have callbacks. Label text: "+this.text_):this.isLabel_||this.callbackKey_&&this.targetWorkspace_.getButtonCallback(this.callbackKey_)?this.isLabel_||this.targetWorkspace_.getButtonCallback(this.callbackKey_)(this):console.warn("Buttons should have callbacks. Button text: "+this.text_)}; +module$exports$Blockly$FlyoutButton.FlyoutButton.TEXT_MARGIN_X=5;module$exports$Blockly$FlyoutButton.FlyoutButton.TEXT_MARGIN_Y=2;(0,module$exports$Blockly$Css.register)("\n.blocklyFlyoutButton {\n fill: #888;\n cursor: default;\n}\n\n.blocklyFlyoutButtonShadow {\n fill: #666;\n}\n\n.blocklyFlyoutButton:hover {\n fill: #aaa;\n}\n\n.blocklyFlyoutLabel {\n cursor: default;\n}\n\n.blocklyFlyoutLabelBackground {\n opacity: 0;\n}\n");var module$exports$Blockly$BlocklyOptions={BlocklyOptions:function(){}};var module$exports$Blockly$VariablesDynamic={CATEGORY_NAME:"VARIABLE_DYNAMIC",onCreateVariableButtonClick_String:function(a){(0,$.module$exports$Blockly$Variables.createVariableButtonHandler)(a.getTargetWorkspace(),void 0,"String")},onCreateVariableButtonClick_Number:function(a){(0,$.module$exports$Blockly$Variables.createVariableButtonHandler)(a.getTargetWorkspace(),void 0,"Number")},onCreateVariableButtonClick_Colour:function(a){(0,$.module$exports$Blockly$Variables.createVariableButtonHandler)(a.getTargetWorkspace(), +void 0,"Colour")},flyoutCategory:function(a){var b=[],c=document.createElement("button");c.setAttribute("text",$.module$exports$Blockly$Msg.Msg.NEW_STRING_VARIABLE);c.setAttribute("callbackKey","CREATE_VARIABLE_STRING");b.push(c);c=document.createElement("button");c.setAttribute("text",$.module$exports$Blockly$Msg.Msg.NEW_NUMBER_VARIABLE);c.setAttribute("callbackKey","CREATE_VARIABLE_NUMBER");b.push(c);c=document.createElement("button");c.setAttribute("text",$.module$exports$Blockly$Msg.Msg.NEW_COLOUR_VARIABLE); +c.setAttribute("callbackKey","CREATE_VARIABLE_COLOUR");b.push(c);a.registerButtonCallback("CREATE_VARIABLE_STRING",module$exports$Blockly$VariablesDynamic.onCreateVariableButtonClick_String);a.registerButtonCallback("CREATE_VARIABLE_NUMBER",module$exports$Blockly$VariablesDynamic.onCreateVariableButtonClick_Number);a.registerButtonCallback("CREATE_VARIABLE_COLOUR",module$exports$Blockly$VariablesDynamic.onCreateVariableButtonClick_Colour);a=(0,module$exports$Blockly$VariablesDynamic.flyoutCategoryBlocks)(a); +return b=b.concat(a)},flyoutCategoryBlocks:function(a){a=a.getAllVariables();var b=[];if(0'); - // Load dependency graph info from test/deps.js. To update - // deps.js, run `npm run build:deps`. - document.write( - ''); - // Load the rest of Blockly. - document.write(''); - } - /* eslint-disable-next-line no-invalid-this */ -})(this); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Bootstrap code to load Blockly in uncompiled mode. + */ +'use strict'; + + +/* eslint-disable no-var */ + +/** + * Blockly uncompiled-mode startup code. If running in a browser + * loads closure/goog/base.js and tests/deps.js, then (in any case) + * requires Blockly.requires. + */ +(function(globalThis) { + /* eslint-disable-next-line no-undef */ + var IS_NODE_JS = !!(typeof module !== 'undefined' && module.exports); + + if (IS_NODE_JS) { + // Load Blockly. + goog.require('Blockly.requires'); + /* eslint-disable no-undef */ + module.exports = Blockly; + } else { + var BLOCKLY_DIR = ''; + // Find name of current directory. + var scripts = document.getElementsByTagName('script'); + var re = /(.+)[\\/]blockly_(?:.*)uncompressed\.js$/; + for (var script, i = 0; (script = scripts[i]); i++) { + var match = re.exec(script.src); + if (match) { + BLOCKLY_DIR = match[1]; + break; + } + } + if (!BLOCKLY_DIR) { + alert('Could not detect Blockly\'s directory name.'); + } + // Disable loading of closure/goog/deps.js (which doesn't exist). + globalThis.CLOSURE_NO_DEPS = true; + // Load Closure Library base.js (the only part of the libary we use, + // mainly for goog.require / goog.provide / goog.module). + document.write( + ''); + // Load dependency graph info from test/deps.js. To update + // deps.js, run `npm run build:deps`. + document.write( + ''); + // Load the rest of Blockly. + document.write(''); + } + /* eslint-disable-next-line no-invalid-this */ +})(this); diff --git a/blocks/blocks.js b/blocks/blocks.js index f6758c2c51b..c48ec747e93 100644 --- a/blocks/blocks.js +++ b/blocks/blocks.js @@ -1,47 +1,47 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview All the blocks. (Entry point for blocks_compressed.js.) - * @suppress {extraRequire} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks'); -goog.module.declareLegacyNamespace(); - -const colour = goog.require('Blockly.libraryBlocks.colour'); -const lists = goog.require('Blockly.libraryBlocks.lists'); -const logic = goog.require('Blockly.libraryBlocks.logic'); -const loops = goog.require('Blockly.libraryBlocks.loops'); -const math = goog.require('Blockly.libraryBlocks.math'); -const procedures = goog.require('Blockly.libraryBlocks.procedures'); -const texts = goog.require('Blockly.libraryBlocks.texts'); -const variables = goog.require('Blockly.libraryBlocks.variables'); -const variablesDynamic = goog.require('Blockly.libraryBlocks.variablesDynamic'); -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); - - -exports.colour = colour; -exports.lists = lists; -exports.logic = logic; -exports.loops = loops; -exports.math = math; -exports.procedures = procedures; -exports.texts = texts; -exports.variables = variables; -exports.variablesDynamic = variablesDynamic; - -/** - * A dictionary of the block definitions provided by all the - * Blockly.libraryBlocks.* modules. - * @type {!Object} - */ -const blocks = Object.assign( - {}, colour.blocks, lists.blocks, logic.blocks, loops.blocks, math.blocks, - procedures.blocks, variables.blocks, variablesDynamic.blocks); -exports.blocks = blocks; +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview All the blocks. (Entry point for blocks_compressed.js.) + * @suppress {extraRequire} + */ +'use strict'; + +goog.module('Blockly.libraryBlocks'); +goog.module.declareLegacyNamespace(); + +const colour = goog.require('Blockly.libraryBlocks.colour'); +const lists = goog.require('Blockly.libraryBlocks.lists'); +const logic = goog.require('Blockly.libraryBlocks.logic'); +const loops = goog.require('Blockly.libraryBlocks.loops'); +const math = goog.require('Blockly.libraryBlocks.math'); +const procedures = goog.require('Blockly.libraryBlocks.procedures'); +const texts = goog.require('Blockly.libraryBlocks.texts'); +const variables = goog.require('Blockly.libraryBlocks.variables'); +const variablesDynamic = goog.require('Blockly.libraryBlocks.variablesDynamic'); +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); + + +exports.colour = colour; +exports.lists = lists; +exports.logic = logic; +exports.loops = loops; +exports.math = math; +exports.procedures = procedures; +exports.texts = texts; +exports.variables = variables; +exports.variablesDynamic = variablesDynamic; + +/** + * A dictionary of the block definitions provided by all the + * Blockly.libraryBlocks.* modules. + * @type {!Object} + */ +const blocks = Object.assign( + {}, colour.blocks, lists.blocks, logic.blocks, loops.blocks, math.blocks, + procedures.blocks, variables.blocks, variablesDynamic.blocks); +exports.blocks = blocks; diff --git a/blocks/colour.js b/blocks/colour.js index 91b82a2820e..b0d584f451b 100644 --- a/blocks/colour.js +++ b/blocks/colour.js @@ -1,119 +1,119 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Colour blocks for Blockly. - */ -'use strict'; - -goog.module('Blockly.libraryBlocks.colour'); - -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); -const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldColour'); - - -/** - * A dictionary of the block definitions provided by this module. - * @type {!Object} - */ -const blocks = createBlockDefinitionsFromJsonArray([ - // Block for colour picker. - { - 'type': 'colour_picker', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_colour', - 'name': 'COLOUR', - 'colour': '#ff0000', - }, - ], - 'output': 'Colour', - 'helpUrl': '%{BKY_COLOUR_PICKER_HELPURL}', - 'style': 'colour_blocks', - 'tooltip': '%{BKY_COLOUR_PICKER_TOOLTIP}', - 'extensions': ['parent_tooltip_when_inline'], - }, - - // Block for random colour. - { - 'type': 'colour_random', - 'message0': '%{BKY_COLOUR_RANDOM_TITLE}', - 'output': 'Colour', - 'helpUrl': '%{BKY_COLOUR_RANDOM_HELPURL}', - 'style': 'colour_blocks', - 'tooltip': '%{BKY_COLOUR_RANDOM_TOOLTIP}', - }, - - // Block for composing a colour from RGB components. - { - 'type': 'colour_rgb', - 'message0': - '%{BKY_COLOUR_RGB_TITLE} %{BKY_COLOUR_RGB_RED} %1 %{BKY_COLOUR_RGB_GREEN} %2 %{BKY_COLOUR_RGB_BLUE} %3', - 'args0': [ - { - 'type': 'input_value', - 'name': 'RED', - 'check': 'Number', - 'align': 'RIGHT', - }, - { - 'type': 'input_value', - 'name': 'GREEN', - 'check': 'Number', - 'align': 'RIGHT', - }, - { - 'type': 'input_value', - 'name': 'BLUE', - 'check': 'Number', - 'align': 'RIGHT', - }, - ], - 'output': 'Colour', - 'helpUrl': '%{BKY_COLOUR_RGB_HELPURL}', - 'style': 'colour_blocks', - 'tooltip': '%{BKY_COLOUR_RGB_TOOLTIP}', - }, - - // Block for blending two colours together. - { - 'type': 'colour_blend', - 'message0': '%{BKY_COLOUR_BLEND_TITLE} %{BKY_COLOUR_BLEND_COLOUR1} ' + - '%1 %{BKY_COLOUR_BLEND_COLOUR2} %2 %{BKY_COLOUR_BLEND_RATIO} %3', - 'args0': [ - { - 'type': 'input_value', - 'name': 'COLOUR1', - 'check': 'Colour', - 'align': 'RIGHT', - }, - { - 'type': 'input_value', - 'name': 'COLOUR2', - 'check': 'Colour', - 'align': 'RIGHT', - }, - { - 'type': 'input_value', - 'name': 'RATIO', - 'check': 'Number', - 'align': 'RIGHT', - }, - ], - 'output': 'Colour', - 'helpUrl': '%{BKY_COLOUR_BLEND_HELPURL}', - 'style': 'colour_blocks', - 'tooltip': '%{BKY_COLOUR_BLEND_TOOLTIP}', - }, -]); -exports.blocks = blocks; - -// Register provided blocks. -defineBlocks(blocks); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Colour blocks for Blockly. + */ +'use strict'; + +goog.module('Blockly.libraryBlocks.colour'); + +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); +const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldColour'); + + +/** + * A dictionary of the block definitions provided by this module. + * @type {!Object} + */ +const blocks = createBlockDefinitionsFromJsonArray([ + // Block for colour picker. + { + 'type': 'colour_picker', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_colour', + 'name': 'COLOUR', + 'colour': '#ff0000', + }, + ], + 'output': 'Colour', + 'helpUrl': '%{BKY_COLOUR_PICKER_HELPURL}', + 'style': 'colour_blocks', + 'tooltip': '%{BKY_COLOUR_PICKER_TOOLTIP}', + 'extensions': ['parent_tooltip_when_inline'], + }, + + // Block for random colour. + { + 'type': 'colour_random', + 'message0': '%{BKY_COLOUR_RANDOM_TITLE}', + 'output': 'Colour', + 'helpUrl': '%{BKY_COLOUR_RANDOM_HELPURL}', + 'style': 'colour_blocks', + 'tooltip': '%{BKY_COLOUR_RANDOM_TOOLTIP}', + }, + + // Block for composing a colour from RGB components. + { + 'type': 'colour_rgb', + 'message0': + '%{BKY_COLOUR_RGB_TITLE} %{BKY_COLOUR_RGB_RED} %1 %{BKY_COLOUR_RGB_GREEN} %2 %{BKY_COLOUR_RGB_BLUE} %3', + 'args0': [ + { + 'type': 'input_value', + 'name': 'RED', + 'check': 'Number', + 'align': 'RIGHT', + }, + { + 'type': 'input_value', + 'name': 'GREEN', + 'check': 'Number', + 'align': 'RIGHT', + }, + { + 'type': 'input_value', + 'name': 'BLUE', + 'check': 'Number', + 'align': 'RIGHT', + }, + ], + 'output': 'Colour', + 'helpUrl': '%{BKY_COLOUR_RGB_HELPURL}', + 'style': 'colour_blocks', + 'tooltip': '%{BKY_COLOUR_RGB_TOOLTIP}', + }, + + // Block for blending two colours together. + { + 'type': 'colour_blend', + 'message0': '%{BKY_COLOUR_BLEND_TITLE} %{BKY_COLOUR_BLEND_COLOUR1} ' + + '%1 %{BKY_COLOUR_BLEND_COLOUR2} %2 %{BKY_COLOUR_BLEND_RATIO} %3', + 'args0': [ + { + 'type': 'input_value', + 'name': 'COLOUR1', + 'check': 'Colour', + 'align': 'RIGHT', + }, + { + 'type': 'input_value', + 'name': 'COLOUR2', + 'check': 'Colour', + 'align': 'RIGHT', + }, + { + 'type': 'input_value', + 'name': 'RATIO', + 'check': 'Number', + 'align': 'RIGHT', + }, + ], + 'output': 'Colour', + 'helpUrl': '%{BKY_COLOUR_BLEND_HELPURL}', + 'style': 'colour_blocks', + 'tooltip': '%{BKY_COLOUR_BLEND_TOOLTIP}', + }, +]); +exports.blocks = blocks; + +// Register provided blocks. +defineBlocks(blocks); diff --git a/blocks/lists.js b/blocks/lists.js index 46975d6cd71..3520ad33bd1 100644 --- a/blocks/lists.js +++ b/blocks/lists.js @@ -1,924 +1,924 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview List blocks for Blockly. - * @suppress {checkTypes} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks.lists'); - -const xmlUtils = goog.require('Blockly.utils.xml'); -const {Align} = goog.require('Blockly.Input'); -/* eslint-disable-next-line no-unused-vars */ -const {Block} = goog.requireType('Blockly.Block'); -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); -const {ConnectionType} = goog.require('Blockly.ConnectionType'); -const {FieldDropdown} = goog.require('Blockly.FieldDropdown'); -const {Msg} = goog.require('Blockly.Msg'); -const {Mutator} = goog.require('Blockly.Mutator'); -/* eslint-disable-next-line no-unused-vars */ -const {Workspace} = goog.requireType('Blockly.Workspace'); -const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldDropdown'); - - -/** - * A dictionary of the block definitions provided by this module. - * @type {!Object} - */ -const blocks = createBlockDefinitionsFromJsonArray([ - // Block for creating an empty list - // The 'list_create_with' block is preferred as it is more flexible. - // - // - // - { - 'type': 'lists_create_empty', - 'message0': '%{BKY_LISTS_CREATE_EMPTY_TITLE}', - 'output': 'Array', - 'style': 'list_blocks', - 'tooltip': '%{BKY_LISTS_CREATE_EMPTY_TOOLTIP}', - 'helpUrl': '%{BKY_LISTS_CREATE_EMPTY_HELPURL}', - }, - // Block for creating a list with one element repeated. - { - 'type': 'lists_repeat', - 'message0': '%{BKY_LISTS_REPEAT_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'ITEM', - }, - { - 'type': 'input_value', - 'name': 'NUM', - 'check': 'Number', - }, - ], - 'output': 'Array', - 'style': 'list_blocks', - 'tooltip': '%{BKY_LISTS_REPEAT_TOOLTIP}', - 'helpUrl': '%{BKY_LISTS_REPEAT_HELPURL}', - }, - // Block for reversing a list. - { - 'type': 'lists_reverse', - 'message0': '%{BKY_LISTS_REVERSE_MESSAGE0}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'LIST', - 'check': 'Array', - }, - ], - 'output': 'Array', - 'inputsInline': true, - 'style': 'list_blocks', - 'tooltip': '%{BKY_LISTS_REVERSE_TOOLTIP}', - 'helpUrl': '%{BKY_LISTS_REVERSE_HELPURL}', - }, - // Block for checking if a list is empty - { - 'type': 'lists_isEmpty', - 'message0': '%{BKY_LISTS_ISEMPTY_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'VALUE', - 'check': ['String', 'Array'], - }, - ], - 'output': 'Boolean', - 'style': 'list_blocks', - 'tooltip': '%{BKY_LISTS_ISEMPTY_TOOLTIP}', - 'helpUrl': '%{BKY_LISTS_ISEMPTY_HELPURL}', - }, - // Block for getting the list length - { - 'type': 'lists_length', - 'message0': '%{BKY_LISTS_LENGTH_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'VALUE', - 'check': ['String', 'Array'], - }, - ], - 'output': 'Number', - 'style': 'list_blocks', - 'tooltip': '%{BKY_LISTS_LENGTH_TOOLTIP}', - 'helpUrl': '%{BKY_LISTS_LENGTH_HELPURL}', - }, -]); -exports.blocks = blocks; - -blocks['lists_create_with'] = { - /** - * Block for creating a list with any number of elements of any type. - * @this {Block} - */ - init: function() { - this.setHelpUrl(Msg['LISTS_CREATE_WITH_HELPURL']); - this.setStyle('list_blocks'); - this.itemCount_ = 3; - this.updateShape_(); - this.setOutput(true, 'Array'); - this.setMutator(new Mutator(['lists_create_with_item'])); - this.setTooltip(Msg['LISTS_CREATE_WITH_TOOLTIP']); - }, - /** - * Create XML to represent list inputs. - * Backwards compatible serialization implementation. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the list inputs. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Returns the state of this block as a JSON serializable object. - * @return {{itemCount: number}} The state of this block, ie the item count. - */ - saveExtraState: function() { - return { - 'itemCount': this.itemCount_, - }; - }, - /** - * Applies the given state to this block. - * @param {*} state The state to apply to this block, ie the item count. - */ - loadExtraState: function(state) { - this.itemCount_ = state['itemCount']; - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Workspace} workspace Mutator's workspace. - * @return {!Block} Root block in mutator. - * @this {Block} - */ - decompose: function(workspace) { - const containerBlock = workspace.newBlock('lists_create_with_container'); - containerBlock.initSvg(); - let connection = containerBlock.getInput('STACK').connection; - for (let i = 0; i < this.itemCount_; i++) { - const itemBlock = workspace.newBlock('lists_create_with_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Block} containerBlock Root block in mutator. - * @this {Block} - */ - compose: function(containerBlock) { - let itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - const connections = []; - while (itemBlock && !itemBlock.isInsertionMarker()) { - connections.push(itemBlock.valueConnection_); - itemBlock = - itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); - } - // Disconnect any children that don't belong. - for (let i = 0; i < this.itemCount_; i++) { - const connection = this.getInput('ADD' + i).connection.targetConnection; - if (connection && connections.indexOf(connection) === -1) { - connection.disconnect(); - } - } - this.itemCount_ = connections.length; - this.updateShape_(); - // Reconnect any child blocks. - for (let i = 0; i < this.itemCount_; i++) { - Mutator.reconnect(connections[i], this, 'ADD' + i); - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Block} containerBlock Root block in mutator. - * @this {Block} - */ - saveConnections: function(containerBlock) { - let itemBlock = containerBlock.getInputTargetBlock('STACK'); - let i = 0; - while (itemBlock) { - const input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - itemBlock = - itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); - i++; - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this {Block} - */ - updateShape_: function() { - if (this.itemCount_ && this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else if (!this.itemCount_ && !this.getInput('EMPTY')) { - this.appendDummyInput('EMPTY').appendField( - Msg['LISTS_CREATE_EMPTY_TITLE']); - } - // Add new inputs. - for (let i = 0; i < this.itemCount_; i++) { - if (!this.getInput('ADD' + i)) { - const input = this.appendValueInput('ADD' + i).setAlign(Align.RIGHT); - if (i === 0) { - input.appendField(Msg['LISTS_CREATE_WITH_INPUT_WITH']); - } - } - } - // Remove deleted inputs. - for (let i = this.itemCount_; this.getInput('ADD' + i); i++) { - this.removeInput('ADD' + i); - } - }, -}; - -blocks['lists_create_with_container'] = { - /** - * Mutator block for list container. - * @this {Block} - */ - init: function() { - this.setStyle('list_blocks'); - this.appendDummyInput().appendField( - Msg['LISTS_CREATE_WITH_CONTAINER_TITLE_ADD']); - this.appendStatementInput('STACK'); - this.setTooltip(Msg['LISTS_CREATE_WITH_CONTAINER_TOOLTIP']); - this.contextMenu = false; - }, -}; - -blocks['lists_create_with_item'] = { - /** - * Mutator block for adding items. - * @this {Block} - */ - init: function() { - this.setStyle('list_blocks'); - this.appendDummyInput().appendField(Msg['LISTS_CREATE_WITH_ITEM_TITLE']); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(Msg['LISTS_CREATE_WITH_ITEM_TOOLTIP']); - this.contextMenu = false; - }, -}; - -blocks['lists_indexOf'] = { - /** - * Block for finding an item in the list. - * @this {Block} - */ - init: function() { - const OPERATORS = [ - [Msg['LISTS_INDEX_OF_FIRST'], 'FIRST'], - [Msg['LISTS_INDEX_OF_LAST'], 'LAST'], - ]; - this.setHelpUrl(Msg['LISTS_INDEX_OF_HELPURL']); - this.setStyle('list_blocks'); - this.setOutput(true, 'Number'); - this.appendValueInput('VALUE').setCheck('Array').appendField( - Msg['LISTS_INDEX_OF_INPUT_IN_LIST']); - this.appendValueInput('FIND').appendField( - new FieldDropdown(OPERATORS), 'END'); - this.setInputsInline(true); - // Assign 'this' to a variable for use in the tooltip closure below. - const thisBlock = this; - this.setTooltip(function() { - return Msg['LISTS_INDEX_OF_TOOLTIP'].replace( - '%1', thisBlock.workspace.options.oneBasedIndex ? '0' : '-1'); - }); - }, -}; - -blocks['lists_getIndex'] = { - /** - * Block for getting element at index. - * @this {Block} - */ - init: function() { - const MODE = [ - [Msg['LISTS_GET_INDEX_GET'], 'GET'], - [Msg['LISTS_GET_INDEX_GET_REMOVE'], 'GET_REMOVE'], - [Msg['LISTS_GET_INDEX_REMOVE'], 'REMOVE'], - ]; - this.WHERE_OPTIONS = [ - [Msg['LISTS_GET_INDEX_FROM_START'], 'FROM_START'], - [Msg['LISTS_GET_INDEX_FROM_END'], 'FROM_END'], - [Msg['LISTS_GET_INDEX_FIRST'], 'FIRST'], - [Msg['LISTS_GET_INDEX_LAST'], 'LAST'], - [Msg['LISTS_GET_INDEX_RANDOM'], 'RANDOM'], - ]; - this.setHelpUrl(Msg['LISTS_GET_INDEX_HELPURL']); - this.setStyle('list_blocks'); - const modeMenu = new FieldDropdown( - MODE, - /** - * @param {*} value The input value. - * @this {FieldDropdown} - */ - function(value) { - const isStatement = (value === 'REMOVE'); - this.getSourceBlock().updateStatement_(isStatement); - }); - this.appendValueInput('VALUE').setCheck('Array').appendField( - Msg['LISTS_GET_INDEX_INPUT_IN_LIST']); - this.appendDummyInput() - .appendField(modeMenu, 'MODE') - .appendField('', 'SPACE'); - this.appendDummyInput('AT'); - if (Msg['LISTS_GET_INDEX_TAIL']) { - this.appendDummyInput('TAIL').appendField(Msg['LISTS_GET_INDEX_TAIL']); - } - this.setInputsInline(true); - this.setOutput(true); - this.updateAt_(true); - // Assign 'this' to a variable for use in the tooltip closure below. - const thisBlock = this; - this.setTooltip(function() { - const mode = thisBlock.getFieldValue('MODE'); - const where = thisBlock.getFieldValue('WHERE'); - let tooltip = ''; - switch (mode + ' ' + where) { - case 'GET FROM_START': - case 'GET FROM_END': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_FROM']; - break; - case 'GET FIRST': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_FIRST']; - break; - case 'GET LAST': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_LAST']; - break; - case 'GET RANDOM': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_RANDOM']; - break; - case 'GET_REMOVE FROM_START': - case 'GET_REMOVE FROM_END': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM']; - break; - case 'GET_REMOVE FIRST': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST']; - break; - case 'GET_REMOVE LAST': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST']; - break; - case 'GET_REMOVE RANDOM': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM']; - break; - case 'REMOVE FROM_START': - case 'REMOVE FROM_END': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM']; - break; - case 'REMOVE FIRST': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST']; - break; - case 'REMOVE LAST': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST']; - break; - case 'REMOVE RANDOM': - tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM']; - break; - } - if (where === 'FROM_START' || where === 'FROM_END') { - const msg = (where === 'FROM_START') ? - Msg['LISTS_INDEX_FROM_START_TOOLTIP'] : - Msg['LISTS_INDEX_FROM_END_TOOLTIP']; - tooltip += ' ' + - msg.replace( - '%1', thisBlock.workspace.options.oneBasedIndex ? '#1' : '#0'); - } - return tooltip; - }); - }, - /** - * Create XML to represent whether the block is a statement or a value. - * Also represent whether there is an 'AT' input. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - const isStatement = !this.outputConnection; - container.setAttribute('statement', isStatement); - const isAt = this.getInput('AT').type === ConnectionType.INPUT_VALUE; - container.setAttribute('at', isAt); - return container; - }, - /** - * Parse XML to restore the 'AT' input. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - // Note: Until January 2013 this block did not have mutations, - // so 'statement' defaults to false and 'at' defaults to true. - const isStatement = (xmlElement.getAttribute('statement') === 'true'); - this.updateStatement_(isStatement); - const isAt = (xmlElement.getAttribute('at') !== 'false'); - this.updateAt_(isAt); - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. - - /** - * Switch between a value block and a statement block. - * @param {boolean} newStatement True if the block should be a statement. - * False if the block should be a value. - * @private - * @this {Block} - */ - updateStatement_: function(newStatement) { - const oldStatement = !this.outputConnection; - if (newStatement !== oldStatement) { - this.unplug(true, true); - if (newStatement) { - this.setOutput(false); - this.setPreviousStatement(true); - this.setNextStatement(true); - } else { - this.setPreviousStatement(false); - this.setNextStatement(false); - this.setOutput(true); - } - } - }, - /** - * Create or delete an input for the numeric index. - * @param {boolean} isAt True if the input should exist. - * @private - * @this {Block} - */ - updateAt_: function(isAt) { - // Destroy old 'AT' and 'ORDINAL' inputs. - this.removeInput('AT'); - this.removeInput('ORDINAL', true); - // Create either a value 'AT' input or a dummy input. - if (isAt) { - this.appendValueInput('AT').setCheck('Number'); - if (Msg['ORDINAL_NUMBER_SUFFIX']) { - this.appendDummyInput('ORDINAL').appendField( - Msg['ORDINAL_NUMBER_SUFFIX']); - } - } else { - this.appendDummyInput('AT'); - } - const menu = new FieldDropdown( - this.WHERE_OPTIONS, - /** - * @param {*} value The input value. - * @this {FieldDropdown} - * @returns {null|undefined} Null if the field has been replaced; - * otherwise undefined. - */ - function(value) { - const newAt = (value === 'FROM_START') || (value === 'FROM_END'); - // The 'isAt' variable is available due to this function being a - // closure. - if (newAt !== isAt) { - const block = this.getSourceBlock(); - block.updateAt_(newAt); - // This menu has been destroyed and replaced. Update the - // replacement. - block.setFieldValue(value, 'WHERE'); - return null; - } - return undefined; - }); - this.getInput('AT').appendField(menu, 'WHERE'); - if (Msg['LISTS_GET_INDEX_TAIL']) { - this.moveInputBefore('TAIL', null); - } - }, -}; - -blocks['lists_setIndex'] = { - /** - * Block for setting the element at index. - * @this {Block} - */ - init: function() { - const MODE = [ - [Msg['LISTS_SET_INDEX_SET'], 'SET'], - [Msg['LISTS_SET_INDEX_INSERT'], 'INSERT'], - ]; - this.WHERE_OPTIONS = [ - [Msg['LISTS_GET_INDEX_FROM_START'], 'FROM_START'], - [Msg['LISTS_GET_INDEX_FROM_END'], 'FROM_END'], - [Msg['LISTS_GET_INDEX_FIRST'], 'FIRST'], - [Msg['LISTS_GET_INDEX_LAST'], 'LAST'], - [Msg['LISTS_GET_INDEX_RANDOM'], 'RANDOM'], - ]; - this.setHelpUrl(Msg['LISTS_SET_INDEX_HELPURL']); - this.setStyle('list_blocks'); - this.appendValueInput('LIST').setCheck('Array').appendField( - Msg['LISTS_SET_INDEX_INPUT_IN_LIST']); - this.appendDummyInput() - .appendField(new FieldDropdown(MODE), 'MODE') - .appendField('', 'SPACE'); - this.appendDummyInput('AT'); - this.appendValueInput('TO').appendField(Msg['LISTS_SET_INDEX_INPUT_TO']); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip(Msg['LISTS_SET_INDEX_TOOLTIP']); - this.updateAt_(true); - // Assign 'this' to a variable for use in the tooltip closure below. - const thisBlock = this; - this.setTooltip(function() { - const mode = thisBlock.getFieldValue('MODE'); - const where = thisBlock.getFieldValue('WHERE'); - let tooltip = ''; - switch (mode + ' ' + where) { - case 'SET FROM_START': - case 'SET FROM_END': - tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_SET_FROM']; - break; - case 'SET FIRST': - tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_SET_FIRST']; - break; - case 'SET LAST': - tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_SET_LAST']; - break; - case 'SET RANDOM': - tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_SET_RANDOM']; - break; - case 'INSERT FROM_START': - case 'INSERT FROM_END': - tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_INSERT_FROM']; - break; - case 'INSERT FIRST': - tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST']; - break; - case 'INSERT LAST': - tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_INSERT_LAST']; - break; - case 'INSERT RANDOM': - tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM']; - break; - } - if (where === 'FROM_START' || where === 'FROM_END') { - tooltip += ' ' + - Msg['LISTS_INDEX_FROM_START_TOOLTIP'].replace( - '%1', thisBlock.workspace.options.oneBasedIndex ? '#1' : '#0'); - } - return tooltip; - }); - }, - /** - * Create XML to represent whether there is an 'AT' input. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - const isAt = this.getInput('AT').type === ConnectionType.INPUT_VALUE; - container.setAttribute('at', isAt); - return container; - }, - /** - * Parse XML to restore the 'AT' input. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - // Note: Until January 2013 this block did not have mutations, - // so 'at' defaults to true. - const isAt = (xmlElement.getAttribute('at') !== 'false'); - this.updateAt_(isAt); - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. - - /** - * Create or delete an input for the numeric index. - * @param {boolean} isAt True if the input should exist. - * @private - * @this {Block} - */ - updateAt_: function(isAt) { - // Destroy old 'AT' and 'ORDINAL' input. - this.removeInput('AT'); - this.removeInput('ORDINAL', true); - // Create either a value 'AT' input or a dummy input. - if (isAt) { - this.appendValueInput('AT').setCheck('Number'); - if (Msg['ORDINAL_NUMBER_SUFFIX']) { - this.appendDummyInput('ORDINAL').appendField( - Msg['ORDINAL_NUMBER_SUFFIX']); - } - } else { - this.appendDummyInput('AT'); - } - const menu = new FieldDropdown( - this.WHERE_OPTIONS, - /** - * @param {*} value The input value. - * @this {FieldDropdown} - * @returns {null|undefined} Null if the field has been replaced; - * otherwise undefined. - */ - function(value) { - const newAt = (value === 'FROM_START') || (value === 'FROM_END'); - // The 'isAt' variable is available due to this function being a - // closure. - if (newAt !== isAt) { - const block = this.getSourceBlock(); - block.updateAt_(newAt); - // This menu has been destroyed and replaced. Update the - // replacement. - block.setFieldValue(value, 'WHERE'); - return null; - } - return undefined; - }); - this.moveInputBefore('AT', 'TO'); - if (this.getInput('ORDINAL')) { - this.moveInputBefore('ORDINAL', 'TO'); - } - - this.getInput('AT').appendField(menu, 'WHERE'); - }, -}; - -blocks['lists_getSublist'] = { - /** - * Block for getting sublist. - * @this {Block} - */ - init: function() { - this['WHERE_OPTIONS_1'] = [ - [Msg['LISTS_GET_SUBLIST_START_FROM_START'], 'FROM_START'], - [Msg['LISTS_GET_SUBLIST_START_FROM_END'], 'FROM_END'], - [Msg['LISTS_GET_SUBLIST_START_FIRST'], 'FIRST'], - ]; - this['WHERE_OPTIONS_2'] = [ - [Msg['LISTS_GET_SUBLIST_END_FROM_START'], 'FROM_START'], - [Msg['LISTS_GET_SUBLIST_END_FROM_END'], 'FROM_END'], - [Msg['LISTS_GET_SUBLIST_END_LAST'], 'LAST'], - ]; - this.setHelpUrl(Msg['LISTS_GET_SUBLIST_HELPURL']); - this.setStyle('list_blocks'); - this.appendValueInput('LIST').setCheck('Array').appendField( - Msg['LISTS_GET_SUBLIST_INPUT_IN_LIST']); - this.appendDummyInput('AT1'); - this.appendDummyInput('AT2'); - if (Msg['LISTS_GET_SUBLIST_TAIL']) { - this.appendDummyInput('TAIL').appendField(Msg['LISTS_GET_SUBLIST_TAIL']); - } - this.setInputsInline(true); - this.setOutput(true, 'Array'); - this.updateAt_(1, true); - this.updateAt_(2, true); - this.setTooltip(Msg['LISTS_GET_SUBLIST_TOOLTIP']); - }, - /** - * Create XML to represent whether there are 'AT' inputs. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - const isAt1 = this.getInput('AT1').type === ConnectionType.INPUT_VALUE; - container.setAttribute('at1', isAt1); - const isAt2 = this.getInput('AT2').type === ConnectionType.INPUT_VALUE; - container.setAttribute('at2', isAt2); - return container; - }, - /** - * Parse XML to restore the 'AT' inputs. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - const isAt1 = (xmlElement.getAttribute('at1') === 'true'); - const isAt2 = (xmlElement.getAttribute('at2') === 'true'); - this.updateAt_(1, isAt1); - this.updateAt_(2, isAt2); - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. - - /** - * Create or delete an input for a numeric index. - * This block has two such inputs, independent of each other. - * @param {number} n Specify first or second input (1 or 2). - * @param {boolean} isAt True if the input should exist. - * @private - * @this {Block} - */ - updateAt_: function(n, isAt) { - // Create or delete an input for the numeric index. - // Destroy old 'AT' and 'ORDINAL' inputs. - this.removeInput('AT' + n); - this.removeInput('ORDINAL' + n, true); - // Create either a value 'AT' input or a dummy input. - if (isAt) { - this.appendValueInput('AT' + n).setCheck('Number'); - if (Msg['ORDINAL_NUMBER_SUFFIX']) { - this.appendDummyInput('ORDINAL' + n) - .appendField(Msg['ORDINAL_NUMBER_SUFFIX']); - } - } else { - this.appendDummyInput('AT' + n); - } - const menu = new FieldDropdown( - this['WHERE_OPTIONS_' + n], - /** - * @param {*} value The input value. - * @this {FieldDropdown} - * @returns {null|undefined} Null if the field has been replaced; - * otherwise undefined. - */ - function(value) { - const newAt = (value === 'FROM_START') || (value === 'FROM_END'); - // The 'isAt' variable is available due to this function being a - // closure. - if (newAt !== isAt) { - const block = this.getSourceBlock(); - block.updateAt_(n, newAt); - // This menu has been destroyed and replaced. - // Update the replacement. - block.setFieldValue(value, 'WHERE' + n); - return null; - } - }); - this.getInput('AT' + n).appendField(menu, 'WHERE' + n); - if (n === 1) { - this.moveInputBefore('AT1', 'AT2'); - if (this.getInput('ORDINAL1')) { - this.moveInputBefore('ORDINAL1', 'AT2'); - } - } - if (Msg['LISTS_GET_SUBLIST_TAIL']) { - this.moveInputBefore('TAIL', null); - } - }, -}; - -blocks['lists_sort'] = { - /** - * Block for sorting a list. - * @this {Block} - */ - init: function() { - this.jsonInit({ - 'message0': Msg['LISTS_SORT_TITLE'], - 'args0': [ - { - 'type': 'field_dropdown', - 'name': 'TYPE', - 'options': [ - [Msg['LISTS_SORT_TYPE_NUMERIC'], 'NUMERIC'], - [Msg['LISTS_SORT_TYPE_TEXT'], 'TEXT'], - [Msg['LISTS_SORT_TYPE_IGNORECASE'], 'IGNORE_CASE'], - ], - }, - { - 'type': 'field_dropdown', - 'name': 'DIRECTION', - 'options': [ - [Msg['LISTS_SORT_ORDER_ASCENDING'], '1'], - [Msg['LISTS_SORT_ORDER_DESCENDING'], '-1'], - ], - }, - { - 'type': 'input_value', - 'name': 'LIST', - 'check': 'Array', - }, - ], - 'output': 'Array', - 'style': 'list_blocks', - 'tooltip': Msg['LISTS_SORT_TOOLTIP'], - 'helpUrl': Msg['LISTS_SORT_HELPURL'], - }); - }, -}; - -blocks['lists_split'] = { - /** - * Block for splitting text into a list, or joining a list into text. - * @this {Block} - */ - init: function() { - // Assign 'this' to a variable for use in the closures below. - const thisBlock = this; - const dropdown = new FieldDropdown( - [ - [Msg['LISTS_SPLIT_LIST_FROM_TEXT'], 'SPLIT'], - [Msg['LISTS_SPLIT_TEXT_FROM_LIST'], 'JOIN'], - ], - function(newMode) { - thisBlock.updateType_(newMode); - }); - this.setHelpUrl(Msg['LISTS_SPLIT_HELPURL']); - this.setStyle('list_blocks'); - this.appendValueInput('INPUT').setCheck('String').appendField( - dropdown, 'MODE'); - this.appendValueInput('DELIM').setCheck('String').appendField( - Msg['LISTS_SPLIT_WITH_DELIMITER']); - this.setInputsInline(true); - this.setOutput(true, 'Array'); - this.setTooltip(function() { - const mode = thisBlock.getFieldValue('MODE'); - if (mode === 'SPLIT') { - return Msg['LISTS_SPLIT_TOOLTIP_SPLIT']; - } else if (mode === 'JOIN') { - return Msg['LISTS_SPLIT_TOOLTIP_JOIN']; - } - throw Error('Unknown mode: ' + mode); - }); - }, - /** - * Modify this block to have the correct input and output types. - * @param {string} newMode Either 'SPLIT' or 'JOIN'. - * @private - * @this {Block} - */ - updateType_: function(newMode) { - const mode = this.getFieldValue('MODE'); - if (mode !== newMode) { - const inputConnection = this.getInput('INPUT').connection; - inputConnection.setShadowDom(null); - const inputBlock = inputConnection.targetBlock(); - if (inputBlock) { - inputConnection.disconnect(); - if (inputBlock.isShadow()) { - inputBlock.dispose(); - } else { - this.bumpNeighbours(); - } - } - } - if (newMode === 'SPLIT') { - this.outputConnection.setCheck('Array'); - this.getInput('INPUT').setCheck('String'); - } else { - this.outputConnection.setCheck('String'); - this.getInput('INPUT').setCheck('Array'); - } - }, - /** - * Create XML to represent the input and output types. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - container.setAttribute('mode', this.getFieldValue('MODE')); - return container; - }, - /** - * Parse XML to restore the input and output types. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - this.updateType_(xmlElement.getAttribute('mode')); - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. -}; - -// Register provided blocks. -defineBlocks(blocks); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview List blocks for Blockly. + * @suppress {checkTypes} + */ +'use strict'; + +goog.module('Blockly.libraryBlocks.lists'); + +const xmlUtils = goog.require('Blockly.utils.xml'); +const {Align} = goog.require('Blockly.Input'); +/* eslint-disable-next-line no-unused-vars */ +const {Block} = goog.requireType('Blockly.Block'); +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); +const {ConnectionType} = goog.require('Blockly.ConnectionType'); +const {FieldDropdown} = goog.require('Blockly.FieldDropdown'); +const {Msg} = goog.require('Blockly.Msg'); +const {Mutator} = goog.require('Blockly.Mutator'); +/* eslint-disable-next-line no-unused-vars */ +const {Workspace} = goog.requireType('Blockly.Workspace'); +const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldDropdown'); + + +/** + * A dictionary of the block definitions provided by this module. + * @type {!Object} + */ +const blocks = createBlockDefinitionsFromJsonArray([ + // Block for creating an empty list + // The 'list_create_with' block is preferred as it is more flexible. + // + // + // + { + 'type': 'lists_create_empty', + 'message0': '%{BKY_LISTS_CREATE_EMPTY_TITLE}', + 'output': 'Array', + 'style': 'list_blocks', + 'tooltip': '%{BKY_LISTS_CREATE_EMPTY_TOOLTIP}', + 'helpUrl': '%{BKY_LISTS_CREATE_EMPTY_HELPURL}', + }, + // Block for creating a list with one element repeated. + { + 'type': 'lists_repeat', + 'message0': '%{BKY_LISTS_REPEAT_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'ITEM', + }, + { + 'type': 'input_value', + 'name': 'NUM', + 'check': 'Number', + }, + ], + 'output': 'Array', + 'style': 'list_blocks', + 'tooltip': '%{BKY_LISTS_REPEAT_TOOLTIP}', + 'helpUrl': '%{BKY_LISTS_REPEAT_HELPURL}', + }, + // Block for reversing a list. + { + 'type': 'lists_reverse', + 'message0': '%{BKY_LISTS_REVERSE_MESSAGE0}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'LIST', + 'check': 'Array', + }, + ], + 'output': 'Array', + 'inputsInline': true, + 'style': 'list_blocks', + 'tooltip': '%{BKY_LISTS_REVERSE_TOOLTIP}', + 'helpUrl': '%{BKY_LISTS_REVERSE_HELPURL}', + }, + // Block for checking if a list is empty + { + 'type': 'lists_isEmpty', + 'message0': '%{BKY_LISTS_ISEMPTY_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'VALUE', + 'check': ['String', 'Array'], + }, + ], + 'output': 'Boolean', + 'style': 'list_blocks', + 'tooltip': '%{BKY_LISTS_ISEMPTY_TOOLTIP}', + 'helpUrl': '%{BKY_LISTS_ISEMPTY_HELPURL}', + }, + // Block for getting the list length + { + 'type': 'lists_length', + 'message0': '%{BKY_LISTS_LENGTH_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'VALUE', + 'check': ['String', 'Array'], + }, + ], + 'output': 'Number', + 'style': 'list_blocks', + 'tooltip': '%{BKY_LISTS_LENGTH_TOOLTIP}', + 'helpUrl': '%{BKY_LISTS_LENGTH_HELPURL}', + }, +]); +exports.blocks = blocks; + +blocks['lists_create_with'] = { + /** + * Block for creating a list with any number of elements of any type. + * @this {Block} + */ + init: function() { + this.setHelpUrl(Msg['LISTS_CREATE_WITH_HELPURL']); + this.setStyle('list_blocks'); + this.itemCount_ = 3; + this.updateShape_(); + this.setOutput(true, 'Array'); + this.setMutator(new Mutator(['lists_create_with_item'])); + this.setTooltip(Msg['LISTS_CREATE_WITH_TOOLTIP']); + }, + /** + * Create XML to represent list inputs. + * Backwards compatible serialization implementation. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + container.setAttribute('items', this.itemCount_); + return container; + }, + /** + * Parse XML to restore the list inputs. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); + this.updateShape_(); + }, + /** + * Returns the state of this block as a JSON serializable object. + * @return {{itemCount: number}} The state of this block, ie the item count. + */ + saveExtraState: function() { + return { + 'itemCount': this.itemCount_, + }; + }, + /** + * Applies the given state to this block. + * @param {*} state The state to apply to this block, ie the item count. + */ + loadExtraState: function(state) { + this.itemCount_ = state['itemCount']; + this.updateShape_(); + }, + /** + * Populate the mutator's dialog with this block's components. + * @param {!Workspace} workspace Mutator's workspace. + * @return {!Block} Root block in mutator. + * @this {Block} + */ + decompose: function(workspace) { + const containerBlock = workspace.newBlock('lists_create_with_container'); + containerBlock.initSvg(); + let connection = containerBlock.getInput('STACK').connection; + for (let i = 0; i < this.itemCount_; i++) { + const itemBlock = workspace.newBlock('lists_create_with_item'); + itemBlock.initSvg(); + connection.connect(itemBlock.previousConnection); + connection = itemBlock.nextConnection; + } + return containerBlock; + }, + /** + * Reconfigure this block based on the mutator dialog's components. + * @param {!Block} containerBlock Root block in mutator. + * @this {Block} + */ + compose: function(containerBlock) { + let itemBlock = containerBlock.getInputTargetBlock('STACK'); + // Count number of inputs. + const connections = []; + while (itemBlock && !itemBlock.isInsertionMarker()) { + connections.push(itemBlock.valueConnection_); + itemBlock = + itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); + } + // Disconnect any children that don't belong. + for (let i = 0; i < this.itemCount_; i++) { + const connection = this.getInput('ADD' + i).connection.targetConnection; + if (connection && connections.indexOf(connection) === -1) { + connection.disconnect(); + } + } + this.itemCount_ = connections.length; + this.updateShape_(); + // Reconnect any child blocks. + for (let i = 0; i < this.itemCount_; i++) { + Mutator.reconnect(connections[i], this, 'ADD' + i); + } + }, + /** + * Store pointers to any connected child blocks. + * @param {!Block} containerBlock Root block in mutator. + * @this {Block} + */ + saveConnections: function(containerBlock) { + let itemBlock = containerBlock.getInputTargetBlock('STACK'); + let i = 0; + while (itemBlock) { + const input = this.getInput('ADD' + i); + itemBlock.valueConnection_ = input && input.connection.targetConnection; + itemBlock = + itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); + i++; + } + }, + /** + * Modify this block to have the correct number of inputs. + * @private + * @this {Block} + */ + updateShape_: function() { + if (this.itemCount_ && this.getInput('EMPTY')) { + this.removeInput('EMPTY'); + } else if (!this.itemCount_ && !this.getInput('EMPTY')) { + this.appendDummyInput('EMPTY').appendField( + Msg['LISTS_CREATE_EMPTY_TITLE']); + } + // Add new inputs. + for (let i = 0; i < this.itemCount_; i++) { + if (!this.getInput('ADD' + i)) { + const input = this.appendValueInput('ADD' + i).setAlign(Align.RIGHT); + if (i === 0) { + input.appendField(Msg['LISTS_CREATE_WITH_INPUT_WITH']); + } + } + } + // Remove deleted inputs. + for (let i = this.itemCount_; this.getInput('ADD' + i); i++) { + this.removeInput('ADD' + i); + } + }, +}; + +blocks['lists_create_with_container'] = { + /** + * Mutator block for list container. + * @this {Block} + */ + init: function() { + this.setStyle('list_blocks'); + this.appendDummyInput().appendField( + Msg['LISTS_CREATE_WITH_CONTAINER_TITLE_ADD']); + this.appendStatementInput('STACK'); + this.setTooltip(Msg['LISTS_CREATE_WITH_CONTAINER_TOOLTIP']); + this.contextMenu = false; + }, +}; + +blocks['lists_create_with_item'] = { + /** + * Mutator block for adding items. + * @this {Block} + */ + init: function() { + this.setStyle('list_blocks'); + this.appendDummyInput().appendField(Msg['LISTS_CREATE_WITH_ITEM_TITLE']); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Msg['LISTS_CREATE_WITH_ITEM_TOOLTIP']); + this.contextMenu = false; + }, +}; + +blocks['lists_indexOf'] = { + /** + * Block for finding an item in the list. + * @this {Block} + */ + init: function() { + const OPERATORS = [ + [Msg['LISTS_INDEX_OF_FIRST'], 'FIRST'], + [Msg['LISTS_INDEX_OF_LAST'], 'LAST'], + ]; + this.setHelpUrl(Msg['LISTS_INDEX_OF_HELPURL']); + this.setStyle('list_blocks'); + this.setOutput(true, 'Number'); + this.appendValueInput('VALUE').setCheck('Array').appendField( + Msg['LISTS_INDEX_OF_INPUT_IN_LIST']); + this.appendValueInput('FIND').appendField( + new FieldDropdown(OPERATORS), 'END'); + this.setInputsInline(true); + // Assign 'this' to a variable for use in the tooltip closure below. + const thisBlock = this; + this.setTooltip(function() { + return Msg['LISTS_INDEX_OF_TOOLTIP'].replace( + '%1', thisBlock.workspace.options.oneBasedIndex ? '0' : '-1'); + }); + }, +}; + +blocks['lists_getIndex'] = { + /** + * Block for getting element at index. + * @this {Block} + */ + init: function() { + const MODE = [ + [Msg['LISTS_GET_INDEX_GET'], 'GET'], + [Msg['LISTS_GET_INDEX_GET_REMOVE'], 'GET_REMOVE'], + [Msg['LISTS_GET_INDEX_REMOVE'], 'REMOVE'], + ]; + this.WHERE_OPTIONS = [ + [Msg['LISTS_GET_INDEX_FROM_START'], 'FROM_START'], + [Msg['LISTS_GET_INDEX_FROM_END'], 'FROM_END'], + [Msg['LISTS_GET_INDEX_FIRST'], 'FIRST'], + [Msg['LISTS_GET_INDEX_LAST'], 'LAST'], + [Msg['LISTS_GET_INDEX_RANDOM'], 'RANDOM'], + ]; + this.setHelpUrl(Msg['LISTS_GET_INDEX_HELPURL']); + this.setStyle('list_blocks'); + const modeMenu = new FieldDropdown( + MODE, + /** + * @param {*} value The input value. + * @this {FieldDropdown} + */ + function(value) { + const isStatement = (value === 'REMOVE'); + this.getSourceBlock().updateStatement_(isStatement); + }); + this.appendValueInput('VALUE').setCheck('Array').appendField( + Msg['LISTS_GET_INDEX_INPUT_IN_LIST']); + this.appendDummyInput() + .appendField(modeMenu, 'MODE') + .appendField('', 'SPACE'); + this.appendDummyInput('AT'); + if (Msg['LISTS_GET_INDEX_TAIL']) { + this.appendDummyInput('TAIL').appendField(Msg['LISTS_GET_INDEX_TAIL']); + } + this.setInputsInline(true); + this.setOutput(true); + this.updateAt_(true); + // Assign 'this' to a variable for use in the tooltip closure below. + const thisBlock = this; + this.setTooltip(function() { + const mode = thisBlock.getFieldValue('MODE'); + const where = thisBlock.getFieldValue('WHERE'); + let tooltip = ''; + switch (mode + ' ' + where) { + case 'GET FROM_START': + case 'GET FROM_END': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_FROM']; + break; + case 'GET FIRST': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_FIRST']; + break; + case 'GET LAST': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_LAST']; + break; + case 'GET RANDOM': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_RANDOM']; + break; + case 'GET_REMOVE FROM_START': + case 'GET_REMOVE FROM_END': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM']; + break; + case 'GET_REMOVE FIRST': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST']; + break; + case 'GET_REMOVE LAST': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST']; + break; + case 'GET_REMOVE RANDOM': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM']; + break; + case 'REMOVE FROM_START': + case 'REMOVE FROM_END': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM']; + break; + case 'REMOVE FIRST': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST']; + break; + case 'REMOVE LAST': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST']; + break; + case 'REMOVE RANDOM': + tooltip = Msg['LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM']; + break; + } + if (where === 'FROM_START' || where === 'FROM_END') { + const msg = (where === 'FROM_START') ? + Msg['LISTS_INDEX_FROM_START_TOOLTIP'] : + Msg['LISTS_INDEX_FROM_END_TOOLTIP']; + tooltip += ' ' + + msg.replace( + '%1', thisBlock.workspace.options.oneBasedIndex ? '#1' : '#0'); + } + return tooltip; + }); + }, + /** + * Create XML to represent whether the block is a statement or a value. + * Also represent whether there is an 'AT' input. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + const isStatement = !this.outputConnection; + container.setAttribute('statement', isStatement); + const isAt = this.getInput('AT').type === ConnectionType.INPUT_VALUE; + container.setAttribute('at', isAt); + return container; + }, + /** + * Parse XML to restore the 'AT' input. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + // Note: Until January 2013 this block did not have mutations, + // so 'statement' defaults to false and 'at' defaults to true. + const isStatement = (xmlElement.getAttribute('statement') === 'true'); + this.updateStatement_(isStatement); + const isAt = (xmlElement.getAttribute('at') !== 'false'); + this.updateAt_(isAt); + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this object is already encoded in the + // dropdown values. + // XML hooks are kept for backwards compatibility. + + /** + * Switch between a value block and a statement block. + * @param {boolean} newStatement True if the block should be a statement. + * False if the block should be a value. + * @private + * @this {Block} + */ + updateStatement_: function(newStatement) { + const oldStatement = !this.outputConnection; + if (newStatement !== oldStatement) { + this.unplug(true, true); + if (newStatement) { + this.setOutput(false); + this.setPreviousStatement(true); + this.setNextStatement(true); + } else { + this.setPreviousStatement(false); + this.setNextStatement(false); + this.setOutput(true); + } + } + }, + /** + * Create or delete an input for the numeric index. + * @param {boolean} isAt True if the input should exist. + * @private + * @this {Block} + */ + updateAt_: function(isAt) { + // Destroy old 'AT' and 'ORDINAL' inputs. + this.removeInput('AT'); + this.removeInput('ORDINAL', true); + // Create either a value 'AT' input or a dummy input. + if (isAt) { + this.appendValueInput('AT').setCheck('Number'); + if (Msg['ORDINAL_NUMBER_SUFFIX']) { + this.appendDummyInput('ORDINAL').appendField( + Msg['ORDINAL_NUMBER_SUFFIX']); + } + } else { + this.appendDummyInput('AT'); + } + const menu = new FieldDropdown( + this.WHERE_OPTIONS, + /** + * @param {*} value The input value. + * @this {FieldDropdown} + * @returns {null|undefined} Null if the field has been replaced; + * otherwise undefined. + */ + function(value) { + const newAt = (value === 'FROM_START') || (value === 'FROM_END'); + // The 'isAt' variable is available due to this function being a + // closure. + if (newAt !== isAt) { + const block = this.getSourceBlock(); + block.updateAt_(newAt); + // This menu has been destroyed and replaced. Update the + // replacement. + block.setFieldValue(value, 'WHERE'); + return null; + } + return undefined; + }); + this.getInput('AT').appendField(menu, 'WHERE'); + if (Msg['LISTS_GET_INDEX_TAIL']) { + this.moveInputBefore('TAIL', null); + } + }, +}; + +blocks['lists_setIndex'] = { + /** + * Block for setting the element at index. + * @this {Block} + */ + init: function() { + const MODE = [ + [Msg['LISTS_SET_INDEX_SET'], 'SET'], + [Msg['LISTS_SET_INDEX_INSERT'], 'INSERT'], + ]; + this.WHERE_OPTIONS = [ + [Msg['LISTS_GET_INDEX_FROM_START'], 'FROM_START'], + [Msg['LISTS_GET_INDEX_FROM_END'], 'FROM_END'], + [Msg['LISTS_GET_INDEX_FIRST'], 'FIRST'], + [Msg['LISTS_GET_INDEX_LAST'], 'LAST'], + [Msg['LISTS_GET_INDEX_RANDOM'], 'RANDOM'], + ]; + this.setHelpUrl(Msg['LISTS_SET_INDEX_HELPURL']); + this.setStyle('list_blocks'); + this.appendValueInput('LIST').setCheck('Array').appendField( + Msg['LISTS_SET_INDEX_INPUT_IN_LIST']); + this.appendDummyInput() + .appendField(new FieldDropdown(MODE), 'MODE') + .appendField('', 'SPACE'); + this.appendDummyInput('AT'); + this.appendValueInput('TO').appendField(Msg['LISTS_SET_INDEX_INPUT_TO']); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Msg['LISTS_SET_INDEX_TOOLTIP']); + this.updateAt_(true); + // Assign 'this' to a variable for use in the tooltip closure below. + const thisBlock = this; + this.setTooltip(function() { + const mode = thisBlock.getFieldValue('MODE'); + const where = thisBlock.getFieldValue('WHERE'); + let tooltip = ''; + switch (mode + ' ' + where) { + case 'SET FROM_START': + case 'SET FROM_END': + tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_SET_FROM']; + break; + case 'SET FIRST': + tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_SET_FIRST']; + break; + case 'SET LAST': + tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_SET_LAST']; + break; + case 'SET RANDOM': + tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_SET_RANDOM']; + break; + case 'INSERT FROM_START': + case 'INSERT FROM_END': + tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_INSERT_FROM']; + break; + case 'INSERT FIRST': + tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST']; + break; + case 'INSERT LAST': + tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_INSERT_LAST']; + break; + case 'INSERT RANDOM': + tooltip = Msg['LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM']; + break; + } + if (where === 'FROM_START' || where === 'FROM_END') { + tooltip += ' ' + + Msg['LISTS_INDEX_FROM_START_TOOLTIP'].replace( + '%1', thisBlock.workspace.options.oneBasedIndex ? '#1' : '#0'); + } + return tooltip; + }); + }, + /** + * Create XML to represent whether there is an 'AT' input. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + const isAt = this.getInput('AT').type === ConnectionType.INPUT_VALUE; + container.setAttribute('at', isAt); + return container; + }, + /** + * Parse XML to restore the 'AT' input. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + // Note: Until January 2013 this block did not have mutations, + // so 'at' defaults to true. + const isAt = (xmlElement.getAttribute('at') !== 'false'); + this.updateAt_(isAt); + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this object is already encoded in the + // dropdown values. + // XML hooks are kept for backwards compatibility. + + /** + * Create or delete an input for the numeric index. + * @param {boolean} isAt True if the input should exist. + * @private + * @this {Block} + */ + updateAt_: function(isAt) { + // Destroy old 'AT' and 'ORDINAL' input. + this.removeInput('AT'); + this.removeInput('ORDINAL', true); + // Create either a value 'AT' input or a dummy input. + if (isAt) { + this.appendValueInput('AT').setCheck('Number'); + if (Msg['ORDINAL_NUMBER_SUFFIX']) { + this.appendDummyInput('ORDINAL').appendField( + Msg['ORDINAL_NUMBER_SUFFIX']); + } + } else { + this.appendDummyInput('AT'); + } + const menu = new FieldDropdown( + this.WHERE_OPTIONS, + /** + * @param {*} value The input value. + * @this {FieldDropdown} + * @returns {null|undefined} Null if the field has been replaced; + * otherwise undefined. + */ + function(value) { + const newAt = (value === 'FROM_START') || (value === 'FROM_END'); + // The 'isAt' variable is available due to this function being a + // closure. + if (newAt !== isAt) { + const block = this.getSourceBlock(); + block.updateAt_(newAt); + // This menu has been destroyed and replaced. Update the + // replacement. + block.setFieldValue(value, 'WHERE'); + return null; + } + return undefined; + }); + this.moveInputBefore('AT', 'TO'); + if (this.getInput('ORDINAL')) { + this.moveInputBefore('ORDINAL', 'TO'); + } + + this.getInput('AT').appendField(menu, 'WHERE'); + }, +}; + +blocks['lists_getSublist'] = { + /** + * Block for getting sublist. + * @this {Block} + */ + init: function() { + this['WHERE_OPTIONS_1'] = [ + [Msg['LISTS_GET_SUBLIST_START_FROM_START'], 'FROM_START'], + [Msg['LISTS_GET_SUBLIST_START_FROM_END'], 'FROM_END'], + [Msg['LISTS_GET_SUBLIST_START_FIRST'], 'FIRST'], + ]; + this['WHERE_OPTIONS_2'] = [ + [Msg['LISTS_GET_SUBLIST_END_FROM_START'], 'FROM_START'], + [Msg['LISTS_GET_SUBLIST_END_FROM_END'], 'FROM_END'], + [Msg['LISTS_GET_SUBLIST_END_LAST'], 'LAST'], + ]; + this.setHelpUrl(Msg['LISTS_GET_SUBLIST_HELPURL']); + this.setStyle('list_blocks'); + this.appendValueInput('LIST').setCheck('Array').appendField( + Msg['LISTS_GET_SUBLIST_INPUT_IN_LIST']); + this.appendDummyInput('AT1'); + this.appendDummyInput('AT2'); + if (Msg['LISTS_GET_SUBLIST_TAIL']) { + this.appendDummyInput('TAIL').appendField(Msg['LISTS_GET_SUBLIST_TAIL']); + } + this.setInputsInline(true); + this.setOutput(true, 'Array'); + this.updateAt_(1, true); + this.updateAt_(2, true); + this.setTooltip(Msg['LISTS_GET_SUBLIST_TOOLTIP']); + }, + /** + * Create XML to represent whether there are 'AT' inputs. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + const isAt1 = this.getInput('AT1').type === ConnectionType.INPUT_VALUE; + container.setAttribute('at1', isAt1); + const isAt2 = this.getInput('AT2').type === ConnectionType.INPUT_VALUE; + container.setAttribute('at2', isAt2); + return container; + }, + /** + * Parse XML to restore the 'AT' inputs. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + const isAt1 = (xmlElement.getAttribute('at1') === 'true'); + const isAt2 = (xmlElement.getAttribute('at2') === 'true'); + this.updateAt_(1, isAt1); + this.updateAt_(2, isAt2); + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this object is already encoded in the + // dropdown values. + // XML hooks are kept for backwards compatibility. + + /** + * Create or delete an input for a numeric index. + * This block has two such inputs, independent of each other. + * @param {number} n Specify first or second input (1 or 2). + * @param {boolean} isAt True if the input should exist. + * @private + * @this {Block} + */ + updateAt_: function(n, isAt) { + // Create or delete an input for the numeric index. + // Destroy old 'AT' and 'ORDINAL' inputs. + this.removeInput('AT' + n); + this.removeInput('ORDINAL' + n, true); + // Create either a value 'AT' input or a dummy input. + if (isAt) { + this.appendValueInput('AT' + n).setCheck('Number'); + if (Msg['ORDINAL_NUMBER_SUFFIX']) { + this.appendDummyInput('ORDINAL' + n) + .appendField(Msg['ORDINAL_NUMBER_SUFFIX']); + } + } else { + this.appendDummyInput('AT' + n); + } + const menu = new FieldDropdown( + this['WHERE_OPTIONS_' + n], + /** + * @param {*} value The input value. + * @this {FieldDropdown} + * @returns {null|undefined} Null if the field has been replaced; + * otherwise undefined. + */ + function(value) { + const newAt = (value === 'FROM_START') || (value === 'FROM_END'); + // The 'isAt' variable is available due to this function being a + // closure. + if (newAt !== isAt) { + const block = this.getSourceBlock(); + block.updateAt_(n, newAt); + // This menu has been destroyed and replaced. + // Update the replacement. + block.setFieldValue(value, 'WHERE' + n); + return null; + } + }); + this.getInput('AT' + n).appendField(menu, 'WHERE' + n); + if (n === 1) { + this.moveInputBefore('AT1', 'AT2'); + if (this.getInput('ORDINAL1')) { + this.moveInputBefore('ORDINAL1', 'AT2'); + } + } + if (Msg['LISTS_GET_SUBLIST_TAIL']) { + this.moveInputBefore('TAIL', null); + } + }, +}; + +blocks['lists_sort'] = { + /** + * Block for sorting a list. + * @this {Block} + */ + init: function() { + this.jsonInit({ + 'message0': Msg['LISTS_SORT_TITLE'], + 'args0': [ + { + 'type': 'field_dropdown', + 'name': 'TYPE', + 'options': [ + [Msg['LISTS_SORT_TYPE_NUMERIC'], 'NUMERIC'], + [Msg['LISTS_SORT_TYPE_TEXT'], 'TEXT'], + [Msg['LISTS_SORT_TYPE_IGNORECASE'], 'IGNORE_CASE'], + ], + }, + { + 'type': 'field_dropdown', + 'name': 'DIRECTION', + 'options': [ + [Msg['LISTS_SORT_ORDER_ASCENDING'], '1'], + [Msg['LISTS_SORT_ORDER_DESCENDING'], '-1'], + ], + }, + { + 'type': 'input_value', + 'name': 'LIST', + 'check': 'Array', + }, + ], + 'output': 'Array', + 'style': 'list_blocks', + 'tooltip': Msg['LISTS_SORT_TOOLTIP'], + 'helpUrl': Msg['LISTS_SORT_HELPURL'], + }); + }, +}; + +blocks['lists_split'] = { + /** + * Block for splitting text into a list, or joining a list into text. + * @this {Block} + */ + init: function() { + // Assign 'this' to a variable for use in the closures below. + const thisBlock = this; + const dropdown = new FieldDropdown( + [ + [Msg['LISTS_SPLIT_LIST_FROM_TEXT'], 'SPLIT'], + [Msg['LISTS_SPLIT_TEXT_FROM_LIST'], 'JOIN'], + ], + function(newMode) { + thisBlock.updateType_(newMode); + }); + this.setHelpUrl(Msg['LISTS_SPLIT_HELPURL']); + this.setStyle('list_blocks'); + this.appendValueInput('INPUT').setCheck('String').appendField( + dropdown, 'MODE'); + this.appendValueInput('DELIM').setCheck('String').appendField( + Msg['LISTS_SPLIT_WITH_DELIMITER']); + this.setInputsInline(true); + this.setOutput(true, 'Array'); + this.setTooltip(function() { + const mode = thisBlock.getFieldValue('MODE'); + if (mode === 'SPLIT') { + return Msg['LISTS_SPLIT_TOOLTIP_SPLIT']; + } else if (mode === 'JOIN') { + return Msg['LISTS_SPLIT_TOOLTIP_JOIN']; + } + throw Error('Unknown mode: ' + mode); + }); + }, + /** + * Modify this block to have the correct input and output types. + * @param {string} newMode Either 'SPLIT' or 'JOIN'. + * @private + * @this {Block} + */ + updateType_: function(newMode) { + const mode = this.getFieldValue('MODE'); + if (mode !== newMode) { + const inputConnection = this.getInput('INPUT').connection; + inputConnection.setShadowDom(null); + const inputBlock = inputConnection.targetBlock(); + if (inputBlock) { + inputConnection.disconnect(); + if (inputBlock.isShadow()) { + inputBlock.dispose(); + } else { + this.bumpNeighbours(); + } + } + } + if (newMode === 'SPLIT') { + this.outputConnection.setCheck('Array'); + this.getInput('INPUT').setCheck('String'); + } else { + this.outputConnection.setCheck('String'); + this.getInput('INPUT').setCheck('Array'); + } + }, + /** + * Create XML to represent the input and output types. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + container.setAttribute('mode', this.getFieldValue('MODE')); + return container; + }, + /** + * Parse XML to restore the input and output types. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + this.updateType_(xmlElement.getAttribute('mode')); + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this object is already encoded in the + // dropdown values. + // XML hooks are kept for backwards compatibility. +}; + +// Register provided blocks. +defineBlocks(blocks); diff --git a/blocks/logic.js b/blocks/logic.js index 04e1572beee..22e78b091df 100644 --- a/blocks/logic.js +++ b/blocks/logic.js @@ -1,657 +1,735 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Logic blocks for Blockly. - * @suppress {checkTypes} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks.logic'); - -/* eslint-disable-next-line no-unused-vars */ -const AbstractEvent = goog.requireType('Blockly.Events.Abstract'); -const Events = goog.require('Blockly.Events'); -const Extensions = goog.require('Blockly.Extensions'); -const xmlUtils = goog.require('Blockly.utils.xml'); -/* eslint-disable-next-line no-unused-vars */ -const {Block} = goog.requireType('Blockly.Block'); -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); -const {Msg} = goog.require('Blockly.Msg'); -const {Mutator} = goog.require('Blockly.Mutator'); -/* eslint-disable-next-line no-unused-vars */ -const {RenderedConnection} = goog.requireType('Blockly.RenderedConnection'); -/* eslint-disable-next-line no-unused-vars */ -const {Workspace} = goog.requireType('Blockly.Workspace'); -const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldDropdown'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldLabel'); - - -/** - * A dictionary of the block definitions provided by this module. - * @type {!Object} - */ -const blocks = createBlockDefinitionsFromJsonArray([ - // Block for boolean data type: true and false. - { - 'type': 'logic_boolean', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_dropdown', - 'name': 'BOOL', - 'options': [ - ['%{BKY_LOGIC_BOOLEAN_TRUE}', 'TRUE'], - ['%{BKY_LOGIC_BOOLEAN_FALSE}', 'FALSE'], - ], - }, - ], - 'output': 'Boolean', - 'style': 'logic_blocks', - 'tooltip': '%{BKY_LOGIC_BOOLEAN_TOOLTIP}', - 'helpUrl': '%{BKY_LOGIC_BOOLEAN_HELPURL}', - }, - // Block for if/elseif/else condition. - { - 'type': 'controls_if', - 'message0': '%{BKY_CONTROLS_IF_MSG_IF} %1', - 'args0': [ - { - 'type': 'input_value', - 'name': 'IF0', - 'check': 'Boolean', - }, - ], - 'message1': '%{BKY_CONTROLS_IF_MSG_THEN} %1', - 'args1': [ - { - 'type': 'input_statement', - 'name': 'DO0', - }, - ], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'logic_blocks', - 'helpUrl': '%{BKY_CONTROLS_IF_HELPURL}', - 'suppressPrefixSuffix': true, - 'mutator': 'controls_if_mutator', - 'extensions': ['controls_if_tooltip'], - }, - // If/else block that does not use a mutator. - { - 'type': 'controls_ifelse', - 'message0': '%{BKY_CONTROLS_IF_MSG_IF} %1', - 'args0': [ - { - 'type': 'input_value', - 'name': 'IF0', - 'check': 'Boolean', - }, - ], - 'message1': '%{BKY_CONTROLS_IF_MSG_THEN} %1', - 'args1': [ - { - 'type': 'input_statement', - 'name': 'DO0', - }, - ], - 'message2': '%{BKY_CONTROLS_IF_MSG_ELSE} %1', - 'args2': [ - { - 'type': 'input_statement', - 'name': 'ELSE', - }, - ], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'logic_blocks', - 'tooltip': '%{BKYCONTROLS_IF_TOOLTIP_2}', - 'helpUrl': '%{BKY_CONTROLS_IF_HELPURL}', - 'suppressPrefixSuffix': true, - 'extensions': ['controls_if_tooltip'], - }, - // Block for comparison operator. - { - 'type': 'logic_compare', - 'message0': '%1 %2 %3', - 'args0': [ - { - 'type': 'input_value', - 'name': 'A', - }, - { - 'type': 'field_dropdown', - 'name': 'OP', - 'options': [ - ['=', 'EQ'], - ['\u2260', 'NEQ'], - ['\u200F<', 'LT'], - ['\u200F\u2264', 'LTE'], - ['\u200F>', 'GT'], - ['\u200F\u2265', 'GTE'], - ], - }, - { - 'type': 'input_value', - 'name': 'B', - }, - ], - 'inputsInline': true, - 'output': 'Boolean', - 'style': 'logic_blocks', - 'helpUrl': '%{BKY_LOGIC_COMPARE_HELPURL}', - 'extensions': ['logic_compare', 'logic_op_tooltip'], - }, - // Block for logical operations: 'and', 'or'. - { - 'type': 'logic_operation', - 'message0': '%1 %2 %3', - 'args0': [ - { - 'type': 'input_value', - 'name': 'A', - 'check': 'Boolean', - }, - { - 'type': 'field_dropdown', - 'name': 'OP', - 'options': [ - ['%{BKY_LOGIC_OPERATION_AND}', 'AND'], - ['%{BKY_LOGIC_OPERATION_OR}', 'OR'], - ], - }, - { - 'type': 'input_value', - 'name': 'B', - 'check': 'Boolean', - }, - ], - 'inputsInline': true, - 'output': 'Boolean', - 'style': 'logic_blocks', - 'helpUrl': '%{BKY_LOGIC_OPERATION_HELPURL}', - 'extensions': ['logic_op_tooltip'], - }, - // Block for negation. - { - 'type': 'logic_negate', - 'message0': '%{BKY_LOGIC_NEGATE_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'BOOL', - 'check': 'Boolean', - }, - ], - 'output': 'Boolean', - 'style': 'logic_blocks', - 'tooltip': '%{BKY_LOGIC_NEGATE_TOOLTIP}', - 'helpUrl': '%{BKY_LOGIC_NEGATE_HELPURL}', - }, - // Block for null data type. - { - 'type': 'logic_null', - 'message0': '%{BKY_LOGIC_NULL}', - 'output': null, - 'style': 'logic_blocks', - 'tooltip': '%{BKY_LOGIC_NULL_TOOLTIP}', - 'helpUrl': '%{BKY_LOGIC_NULL_HELPURL}', - }, - // Block for ternary operator. - { - 'type': 'logic_ternary', - 'message0': '%{BKY_LOGIC_TERNARY_CONDITION} %1', - 'args0': [ - { - 'type': 'input_value', - 'name': 'IF', - 'check': 'Boolean', - }, - ], - 'message1': '%{BKY_LOGIC_TERNARY_IF_TRUE} %1', - 'args1': [ - { - 'type': 'input_value', - 'name': 'THEN', - }, - ], - 'message2': '%{BKY_LOGIC_TERNARY_IF_FALSE} %1', - 'args2': [ - { - 'type': 'input_value', - 'name': 'ELSE', - }, - ], - 'output': null, - 'style': 'logic_blocks', - 'tooltip': '%{BKY_LOGIC_TERNARY_TOOLTIP}', - 'helpUrl': '%{BKY_LOGIC_TERNARY_HELPURL}', - 'extensions': ['logic_ternary'], - }, - // Block representing the if statement in the controls_if mutator. - { - 'type': 'controls_if_if', - 'message0': '%{BKY_CONTROLS_IF_IF_TITLE_IF}', - 'nextStatement': null, - 'enableContextMenu': false, - 'style': 'logic_blocks', - 'tooltip': '%{BKY_CONTROLS_IF_IF_TOOLTIP}', - }, - // Block representing the else-if statement in the controls_if mutator. - { - 'type': 'controls_if_elseif', - 'message0': '%{BKY_CONTROLS_IF_ELSEIF_TITLE_ELSEIF}', - 'previousStatement': null, - 'nextStatement': null, - 'enableContextMenu': false, - 'style': 'logic_blocks', - 'tooltip': '%{BKY_CONTROLS_IF_ELSEIF_TOOLTIP}', - }, - // Block representing the else statement in the controls_if mutator. - { - 'type': 'controls_if_else', - 'message0': '%{BKY_CONTROLS_IF_ELSE_TITLE_ELSE}', - 'previousStatement': null, - 'enableContextMenu': false, - 'style': 'logic_blocks', - 'tooltip': '%{BKY_CONTROLS_IF_ELSE_TOOLTIP}', - }, -]); -exports.blocks = blocks; - -/** - * Tooltip text, keyed by block OP value. Used by logic_compare and - * logic_operation blocks. - * @see {Extensions#buildTooltipForDropdown} - * @readonly - */ -const TOOLTIPS_BY_OP = { - // logic_compare - 'EQ': '%{BKY_LOGIC_COMPARE_TOOLTIP_EQ}', - 'NEQ': '%{BKY_LOGIC_COMPARE_TOOLTIP_NEQ}', - 'LT': '%{BKY_LOGIC_COMPARE_TOOLTIP_LT}', - 'LTE': '%{BKY_LOGIC_COMPARE_TOOLTIP_LTE}', - 'GT': '%{BKY_LOGIC_COMPARE_TOOLTIP_GT}', - 'GTE': '%{BKY_LOGIC_COMPARE_TOOLTIP_GTE}', - - // logic_operation - 'AND': '%{BKY_LOGIC_OPERATION_TOOLTIP_AND}', - 'OR': '%{BKY_LOGIC_OPERATION_TOOLTIP_OR}', -}; - -Extensions.register( - 'logic_op_tooltip', - Extensions.buildTooltipForDropdown('OP', TOOLTIPS_BY_OP)); - -/** - * Mutator methods added to controls_if blocks. - * @mixin - * @augments Block - * @readonly - */ -const CONTROLS_IF_MUTATOR_MIXIN = { - elseifCount_: 0, - elseCount_: 0, - - /** - * Create XML to represent the number of else-if and else inputs. - * Backwards compatible serialization implementation. - * @return {Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - if (!this.elseifCount_ && !this.elseCount_) { - return null; - } - const container = xmlUtils.createElement('mutation'); - if (this.elseifCount_) { - container.setAttribute('elseif', this.elseifCount_); - } - if (this.elseCount_) { - container.setAttribute('else', 1); - } - return container; - }, - /** - * Parse XML to restore the else-if and else inputs. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - this.elseifCount_ = parseInt(xmlElement.getAttribute('elseif'), 10) || 0; - this.elseCount_ = parseInt(xmlElement.getAttribute('else'), 10) || 0; - this.rebuildShape_(); - }, - /** - * Returns the state of this block as a JSON serializable object. - * @return {?{elseIfCount: (number|undefined), haseElse: (boolean|undefined)}} - * The state of this block, ie the else if count and else state. - */ - saveExtraState: function() { - if (!this.elseifCount_ && !this.elseCount_) { - return null; - } - const state = Object.create(null); - if (this.elseifCount_) { - state['elseIfCount'] = this.elseifCount_; - } - if (this.elseCount_) { - state['hasElse'] = true; - } - return state; - }, - /** - * Applies the given state to this block. - * @param {*} state The state to apply to this block, ie the else if count and - * else state. - */ - loadExtraState: function(state) { - this.elseifCount_ = state['elseIfCount'] || 0; - this.elseCount_ = state['hasElse'] ? 1 : 0; - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Workspace} workspace Mutator's workspace. - * @return {!Block} Root block in mutator. - * @this {Block} - */ - decompose: function(workspace) { - const containerBlock = workspace.newBlock('controls_if_if'); - containerBlock.initSvg(); - let connection = containerBlock.nextConnection; - for (let i = 1; i <= this.elseifCount_; i++) { - const elseifBlock = workspace.newBlock('controls_if_elseif'); - elseifBlock.initSvg(); - connection.connect(elseifBlock.previousConnection); - connection = elseifBlock.nextConnection; - } - if (this.elseCount_) { - const elseBlock = workspace.newBlock('controls_if_else'); - elseBlock.initSvg(); - connection.connect(elseBlock.previousConnection); - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Block} containerBlock Root block in mutator. - * @this {Block} - */ - compose: function(containerBlock) { - let clauseBlock = containerBlock.nextConnection.targetBlock(); - // Count number of inputs. - this.elseifCount_ = 0; - this.elseCount_ = 0; - const valueConnections = [null]; - const statementConnections = [null]; - let elseStatementConnection = null; - while (clauseBlock && !clauseBlock.isInsertionMarker()) { - switch (clauseBlock.type) { - case 'controls_if_elseif': - this.elseifCount_++; - valueConnections.push(clauseBlock.valueConnection_); - statementConnections.push(clauseBlock.statementConnection_); - break; - case 'controls_if_else': - this.elseCount_++; - elseStatementConnection = clauseBlock.statementConnection_; - break; - default: - throw TypeError('Unknown block type: ' + clauseBlock.type); - } - clauseBlock = clauseBlock.nextConnection && - clauseBlock.nextConnection.targetBlock(); - } - this.updateShape_(); - // Reconnect any child blocks. - this.reconnectChildBlocks_( - valueConnections, statementConnections, elseStatementConnection); - }, - /** - * Store pointers to any connected child blocks. - * @param {!Block} containerBlock Root block in mutator. - * @this {Block} - */ - saveConnections: function(containerBlock) { - let clauseBlock = containerBlock.nextConnection.targetBlock(); - let i = 1; - while (clauseBlock) { - switch (clauseBlock.type) { - case 'controls_if_elseif': { - const inputIf = this.getInput('IF' + i); - const inputDo = this.getInput('DO' + i); - clauseBlock.valueConnection_ = - inputIf && inputIf.connection.targetConnection; - clauseBlock.statementConnection_ = - inputDo && inputDo.connection.targetConnection; - i++; - break; - } - case 'controls_if_else': { - const inputDo = this.getInput('ELSE'); - clauseBlock.statementConnection_ = - inputDo && inputDo.connection.targetConnection; - break; - } - default: - throw TypeError('Unknown block type: ' + clauseBlock.type); - } - clauseBlock = clauseBlock.nextConnection && - clauseBlock.nextConnection.targetBlock(); - } - }, - /** - * Reconstructs the block with all child blocks attached. - * @this {Block} - */ - rebuildShape_: function() { - const valueConnections = [null]; - const statementConnections = [null]; - let elseStatementConnection = null; - - if (this.getInput('ELSE')) { - elseStatementConnection = - this.getInput('ELSE').connection.targetConnection; - } - for (let i = 1; this.getInput('IF' + i); i++) { - const inputIf = this.getInput('IF' + i); - const inputDo = this.getInput('DO' + i); - valueConnections.push(inputIf.connection.targetConnection); - statementConnections.push(inputDo.connection.targetConnection); - } - this.updateShape_(); - this.reconnectChildBlocks_( - valueConnections, statementConnections, elseStatementConnection); - }, - /** - * Modify this block to have the correct number of inputs. - * @this {Block} - * @private - */ - updateShape_: function() { - // Delete everything. - if (this.getInput('ELSE')) { - this.removeInput('ELSE'); - } - for (let i = 1; this.getInput('IF' + i); i++) { - this.removeInput('IF' + i); - this.removeInput('DO' + i); - } - // Rebuild block. - for (let i = 1; i <= this.elseifCount_; i++) { - this.appendValueInput('IF' + i).setCheck('Boolean').appendField( - Msg['CONTROLS_IF_MSG_ELSEIF']); - this.appendStatementInput('DO' + i).appendField( - Msg['CONTROLS_IF_MSG_THEN']); - } - if (this.elseCount_) { - this.appendStatementInput('ELSE').appendField( - Msg['CONTROLS_IF_MSG_ELSE']); - } - }, - /** - * Reconnects child blocks. - * @param {!Array} valueConnections List of - * value connections for 'if' input. - * @param {!Array} statementConnections List of - * statement connections for 'do' input. - * @param {?RenderedConnection} elseStatementConnection Statement - * connection for else input. - * @this {Block} - */ - reconnectChildBlocks_: function( - valueConnections, statementConnections, elseStatementConnection) { - for (let i = 1; i <= this.elseifCount_; i++) { - Mutator.reconnect(valueConnections[i], this, 'IF' + i); - Mutator.reconnect(statementConnections[i], this, 'DO' + i); - } - Mutator.reconnect(elseStatementConnection, this, 'ELSE'); - }, -}; - -Extensions.registerMutator( - 'controls_if_mutator', CONTROLS_IF_MUTATOR_MIXIN, null, - ['controls_if_elseif', 'controls_if_else']); -/** - * "controls_if" extension function. Adds mutator, shape updating methods, and - * dynamic tooltip to "controls_if" blocks. - * @this {Block} - */ -const CONTROLS_IF_TOOLTIP_EXTENSION = function() { - this.setTooltip(function() { - if (!this.elseifCount_ && !this.elseCount_) { - return Msg['CONTROLS_IF_TOOLTIP_1']; - } else if (!this.elseifCount_ && this.elseCount_) { - return Msg['CONTROLS_IF_TOOLTIP_2']; - } else if (this.elseifCount_ && !this.elseCount_) { - return Msg['CONTROLS_IF_TOOLTIP_3']; - } else if (this.elseifCount_ && this.elseCount_) { - return Msg['CONTROLS_IF_TOOLTIP_4']; - } - return ''; - }.bind(this)); -}; - -Extensions.register('controls_if_tooltip', CONTROLS_IF_TOOLTIP_EXTENSION); - -/** - * Adds dynamic type validation for the left and right sides of a logic_compare - * block. - * @mixin - * @augments Block - * @readonly - */ -const LOGIC_COMPARE_ONCHANGE_MIXIN = { - /** - * Called whenever anything on the workspace changes. - * Prevent mismatched types from being compared. - * @param {!AbstractEvent} e Change event. - * @this {Block} - */ - onchange: function(e) { - if (!this.prevBlocks_) { - this.prevBlocks_ = [null, null]; - } - - const blockA = this.getInputTargetBlock('A'); - const blockB = this.getInputTargetBlock('B'); - // Disconnect blocks that existed prior to this change if they don't match. - if (blockA && blockB && - !this.workspace.connectionChecker.doTypeChecks( - blockA.outputConnection, blockB.outputConnection)) { - // Mismatch between two inputs. Revert the block connections, - // bumping away the newly connected block(s). - Events.setGroup(e.group); - const prevA = this.prevBlocks_[0]; - if (prevA !== blockA) { - blockA.unplug(); - if (prevA && !prevA.isDisposed() && !prevA.isShadow()) { - // The shadow block is automatically replaced during unplug(). - this.getInput('A').connection.connect(prevA.outputConnection); - } - } - const prevB = this.prevBlocks_[1]; - if (prevB !== blockB) { - blockB.unplug(); - if (prevB && !prevB.isDisposed() && !prevB.isShadow()) { - // The shadow block is automatically replaced during unplug(). - this.getInput('B').connection.connect(prevB.outputConnection); - } - } - this.bumpNeighbours(); - Events.setGroup(false); - } - this.prevBlocks_[0] = this.getInputTargetBlock('A'); - this.prevBlocks_[1] = this.getInputTargetBlock('B'); - }, -}; - -/** - * "logic_compare" extension function. Adds type left and right side type - * checking to "logic_compare" blocks. - * @this {Block} - * @readonly - */ -const LOGIC_COMPARE_EXTENSION = function() { - // Add onchange handler to ensure types are compatible. - this.mixin(LOGIC_COMPARE_ONCHANGE_MIXIN); -}; - -Extensions.register('logic_compare', LOGIC_COMPARE_EXTENSION); - -/** - * Adds type coordination between inputs and output. - * @mixin - * @augments Block - * @readonly - */ -const LOGIC_TERNARY_ONCHANGE_MIXIN = { - prevParentConnection_: null, - - /** - * Called whenever anything on the workspace changes. - * Prevent mismatched types. - * @param {!AbstractEvent} e Change event. - * @this {Block} - */ - onchange: function(e) { - const blockA = this.getInputTargetBlock('THEN'); - const blockB = this.getInputTargetBlock('ELSE'); - const parentConnection = this.outputConnection.targetConnection; - // Disconnect blocks that existed prior to this change if they don't match. - if ((blockA || blockB) && parentConnection) { - for (let i = 0; i < 2; i++) { - const block = (i === 1) ? blockA : blockB; - if (block && - !block.workspace.connectionChecker.doTypeChecks( - block.outputConnection, parentConnection)) { - // Ensure that any disconnections are grouped with the causing event. - Events.setGroup(e.group); - if (parentConnection === this.prevParentConnection_) { - this.unplug(); - parentConnection.getSourceBlock().bumpNeighbours(); - } else { - block.unplug(); - block.bumpNeighbours(); - } - Events.setGroup(false); - } - } - } - this.prevParentConnection_ = parentConnection; - }, -}; - -Extensions.registerMixin('logic_ternary', LOGIC_TERNARY_ONCHANGE_MIXIN); - -// Register provided blocks. -defineBlocks(blocks); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Logic blocks for Blockly. + * @suppress {checkTypes} + */ +'use strict'; + +goog.module('Blockly.libraryBlocks.logic'); + +/* eslint-disable-next-line no-unused-vars */ +const AbstractEvent = goog.requireType('Blockly.Events.Abstract'); +const Events = goog.require('Blockly.Events'); +const Extensions = goog.require('Blockly.Extensions'); +const xmlUtils = goog.require('Blockly.utils.xml'); +/* eslint-disable-next-line no-unused-vars */ +const {Block} = goog.requireType('Blockly.Block'); +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); +const {Msg} = goog.require('Blockly.Msg'); +const {Mutator} = goog.require('Blockly.Mutator'); +/* eslint-disable-next-line no-unused-vars */ +const {RenderedConnection} = goog.requireType('Blockly.RenderedConnection'); +/* eslint-disable-next-line no-unused-vars */ +const {Workspace} = goog.requireType('Blockly.Workspace'); +const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldDropdown'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldLabel'); + + +/** + * A dictionary of the block definitions provided by this module. + * @type {!Object} + */ + +const blocks = createBlockDefinitionsFromJsonArray([ + { + 'type': 'setup', + 'message0': 'Setup %1', + 'args0': [{ + 'type': 'input_statement', + 'name': 'DO', + }], + 'message1': 'Return %1', + 'args1': [{ + 'type': 'input_value', + 'name': 'RETURN', + }], + 'style': 'loop_blocks', + 'tooltip': '%{BKY_CONTROLS_REPEAT_TOOLTIP}', + 'helpUrl': '%{BKY_CONTROLS_REPEAT_HELPURL}', + }, + { + 'type': 'run', + 'message0': 'Run %1', + 'args0': [{ + 'type': 'input_statement', + 'name': 'DO', + }], + 'style': 'loop_blocks', + 'tooltip': '%{BKY_CONTROLS_REPEAT_TOOLTIP}', + 'helpUrl': '%{BKY_CONTROLS_REPEAT_HELPURL}', + }, + { + 'type': 'rangesensor_getrange_block', + "message0": "GetRange %1", + "args0": [ + { + "type": "field_dropdown", + "name": "unit", + "options": [ + [ + "m", + "m" + ], + [ + "cm", + "cm" + ] + ] + }, + ], + "inputsInline": true, + "output": "Any", + 'style': 'logic_blocks', + 'tooltip': '', + 'helpUrl': '', + }, + { + 'type': 'convbelt_setstate_block', + "message0": "SetState %1", + "args0": [ + { + "type": "field_dropdown", + "name": "state", + "options": [ + [ + "on", + "on" + ], + [ + "off", + "off" + ] + ] + } + ], + "inputsInline": true, + "output": "Any", + 'style': 'logic_blocks', + 'tooltip': '', + 'helpUrl': '', + }, + // Block for boolean data type: true and false. + { + 'type': 'logic_boolean', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_dropdown', + 'name': 'BOOL', + 'options': [ + ['%{BKY_LOGIC_BOOLEAN_TRUE}', 'TRUE'], + ['%{BKY_LOGIC_BOOLEAN_FALSE}', 'FALSE'], + ], + }, + ], + 'output': 'Boolean', + 'style': 'logic_blocks', + 'tooltip': '%{BKY_LOGIC_BOOLEAN_TOOLTIP}', + 'helpUrl': '%{BKY_LOGIC_BOOLEAN_HELPURL}', + }, + // Block for if/elseif/else condition. + { + 'type': 'controls_if', + 'message0': '%{BKY_CONTROLS_IF_MSG_IF} %1', + 'args0': [ + { + 'type': 'input_value', + 'name': 'IF0', + 'check': 'Boolean', + }, + ], + 'message1': '%{BKY_CONTROLS_IF_MSG_THEN} %1', + 'args1': [ + { + 'type': 'input_statement', + 'name': 'DO0', + }, + ], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'logic_blocks', + 'helpUrl': '%{BKY_CONTROLS_IF_HELPURL}', + 'suppressPrefixSuffix': true, + 'mutator': 'controls_if_mutator', + 'extensions': ['controls_if_tooltip'], + }, + // If/else block that does not use a mutator. + { + 'type': 'controls_ifelse', + 'message0': '%{BKY_CONTROLS_IF_MSG_IF} %1', + 'args0': [ + { + 'type': 'input_value', + 'name': 'IF0', + 'check': 'Boolean', + }, + ], + 'message1': '%{BKY_CONTROLS_IF_MSG_THEN} %1', + 'args1': [ + { + 'type': 'input_statement', + 'name': 'DO0', + }, + ], + 'message2': '%{BKY_CONTROLS_IF_MSG_ELSE} %1', + 'args2': [ + { + 'type': 'input_statement', + 'name': 'ELSE', + }, + ], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'logic_blocks', + 'tooltip': '%{BKYCONTROLS_IF_TOOLTIP_2}', + 'helpUrl': '%{BKY_CONTROLS_IF_HELPURL}', + 'suppressPrefixSuffix': true, + 'extensions': ['controls_if_tooltip'], + }, + // Block for comparison operator. + { + 'type': 'logic_compare', + 'message0': '%1 %2 %3', + 'args0': [ + { + 'type': 'input_value', + 'name': 'A', + }, + { + 'type': 'field_dropdown', + 'name': 'OP', + 'options': [ + ['=', 'EQ'], + ['\u2260', 'NEQ'], + ['\u200F<', 'LT'], + ['\u200F\u2264', 'LTE'], + ['\u200F>', 'GT'], + ['\u200F\u2265', 'GTE'], + ], + }, + { + 'type': 'input_value', + 'name': 'B', + }, + ], + 'inputsInline': true, + 'output': 'Boolean', + 'style': 'logic_blocks', + 'helpUrl': '%{BKY_LOGIC_COMPARE_HELPURL}', + 'extensions': ['logic_compare', 'logic_op_tooltip'], + }, + // Block for logical operations: 'and', 'or'. + { + 'type': 'logic_operation', + 'message0': '%1 %2 %3', + 'args0': [ + { + 'type': 'input_value', + 'name': 'A', + 'check': 'Boolean', + }, + { + 'type': 'field_dropdown', + 'name': 'OP', + 'options': [ + ['%{BKY_LOGIC_OPERATION_AND}', 'AND'], + ['%{BKY_LOGIC_OPERATION_OR}', 'OR'], + ], + }, + { + 'type': 'input_value', + 'name': 'B', + 'check': 'Boolean', + }, + ], + 'inputsInline': true, + 'output': 'Boolean', + 'style': 'logic_blocks', + 'helpUrl': '%{BKY_LOGIC_OPERATION_HELPURL}', + 'extensions': ['logic_op_tooltip'], + }, + // Block for negation. + { + 'type': 'logic_negate', + 'message0': '%{BKY_LOGIC_NEGATE_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'BOOL', + 'check': 'Boolean', + }, + ], + 'output': 'Boolean', + 'style': 'logic_blocks', + 'tooltip': '%{BKY_LOGIC_NEGATE_TOOLTIP}', + 'helpUrl': '%{BKY_LOGIC_NEGATE_HELPURL}', + }, + // Block for null data type. + { + 'type': 'logic_null', + 'message0': '%{BKY_LOGIC_NULL}', + 'output': null, + 'style': 'logic_blocks', + 'tooltip': '%{BKY_LOGIC_NULL_TOOLTIP}', + 'helpUrl': '%{BKY_LOGIC_NULL_HELPURL}', + }, + // Block for ternary operator. + { + 'type': 'logic_ternary', + 'message0': '%{BKY_LOGIC_TERNARY_CONDITION} %1', + 'args0': [ + { + 'type': 'input_value', + 'name': 'IF', + 'check': 'Boolean', + }, + ], + 'message1': '%{BKY_LOGIC_TERNARY_IF_TRUE} %1', + 'args1': [ + { + 'type': 'input_value', + 'name': 'THEN', + }, + ], + 'message2': '%{BKY_LOGIC_TERNARY_IF_FALSE} %1', + 'args2': [ + { + 'type': 'input_value', + 'name': 'ELSE', + }, + ], + 'output': null, + 'style': 'logic_blocks', + 'tooltip': '%{BKY_LOGIC_TERNARY_TOOLTIP}', + 'helpUrl': '%{BKY_LOGIC_TERNARY_HELPURL}', + 'extensions': ['logic_ternary'], + }, + // Block representing the if statement in the controls_if mutator. + { + 'type': 'controls_if_if', + 'message0': '%{BKY_CONTROLS_IF_IF_TITLE_IF}', + 'nextStatement': null, + 'enableContextMenu': false, + 'style': 'logic_blocks', + 'tooltip': '%{BKY_CONTROLS_IF_IF_TOOLTIP}', + }, + // Block representing the else-if statement in the controls_if mutator. + { + 'type': 'controls_if_elseif', + 'message0': '%{BKY_CONTROLS_IF_ELSEIF_TITLE_ELSEIF}', + 'previousStatement': null, + 'nextStatement': null, + 'enableContextMenu': false, + 'style': 'logic_blocks', + 'tooltip': '%{BKY_CONTROLS_IF_ELSEIF_TOOLTIP}', + }, + // Block representing the else statement in the controls_if mutator. + { + 'type': 'controls_if_else', + 'message0': '%{BKY_CONTROLS_IF_ELSE_TITLE_ELSE}', + 'previousStatement': null, + 'enableContextMenu': false, + 'style': 'logic_blocks', + 'tooltip': '%{BKY_CONTROLS_IF_ELSE_TOOLTIP}', + }, +]); +exports.blocks = blocks; + +/** + * Tooltip text, keyed by block OP value. Used by logic_compare and + * logic_operation blocks. + * @see {Extensions#buildTooltipForDropdown} + * @readonly + */ +const TOOLTIPS_BY_OP = { + // logic_compare + 'EQ': '%{BKY_LOGIC_COMPARE_TOOLTIP_EQ}', + 'NEQ': '%{BKY_LOGIC_COMPARE_TOOLTIP_NEQ}', + 'LT': '%{BKY_LOGIC_COMPARE_TOOLTIP_LT}', + 'LTE': '%{BKY_LOGIC_COMPARE_TOOLTIP_LTE}', + 'GT': '%{BKY_LOGIC_COMPARE_TOOLTIP_GT}', + 'GTE': '%{BKY_LOGIC_COMPARE_TOOLTIP_GTE}', + + // logic_operation + 'AND': '%{BKY_LOGIC_OPERATION_TOOLTIP_AND}', + 'OR': '%{BKY_LOGIC_OPERATION_TOOLTIP_OR}', +}; + +Extensions.register( + 'logic_op_tooltip', + Extensions.buildTooltipForDropdown('OP', TOOLTIPS_BY_OP)); + +/** + * Mutator methods added to controls_if blocks. + * @mixin + * @augments Block + * @readonly + */ +const CONTROLS_IF_MUTATOR_MIXIN = { + elseifCount_: 0, + elseCount_: 0, + + /** + * Create XML to represent the number of else-if and else inputs. + * Backwards compatible serialization implementation. + * @return {Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + if (!this.elseifCount_ && !this.elseCount_) { + return null; + } + const container = xmlUtils.createElement('mutation'); + if (this.elseifCount_) { + container.setAttribute('elseif', this.elseifCount_); + } + if (this.elseCount_) { + container.setAttribute('else', 1); + } + return container; + }, + /** + * Parse XML to restore the else-if and else inputs. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + this.elseifCount_ = parseInt(xmlElement.getAttribute('elseif'), 10) || 0; + this.elseCount_ = parseInt(xmlElement.getAttribute('else'), 10) || 0; + this.rebuildShape_(); + }, + /** + * Returns the state of this block as a JSON serializable object. + * @return {?{elseIfCount: (number|undefined), haseElse: (boolean|undefined)}} + * The state of this block, ie the else if count and else state. + */ + saveExtraState: function() { + if (!this.elseifCount_ && !this.elseCount_) { + return null; + } + const state = Object.create(null); + if (this.elseifCount_) { + state['elseIfCount'] = this.elseifCount_; + } + if (this.elseCount_) { + state['hasElse'] = true; + } + return state; + }, + /** + * Applies the given state to this block. + * @param {*} state The state to apply to this block, ie the else if count and + * else state. + */ + loadExtraState: function(state) { + this.elseifCount_ = state['elseIfCount'] || 0; + this.elseCount_ = state['hasElse'] ? 1 : 0; + this.updateShape_(); + }, + /** + * Populate the mutator's dialog with this block's components. + * @param {!Workspace} workspace Mutator's workspace. + * @return {!Block} Root block in mutator. + * @this {Block} + */ + decompose: function(workspace) { + const containerBlock = workspace.newBlock('controls_if_if'); + containerBlock.initSvg(); + let connection = containerBlock.nextConnection; + for (let i = 1; i <= this.elseifCount_; i++) { + const elseifBlock = workspace.newBlock('controls_if_elseif'); + elseifBlock.initSvg(); + connection.connect(elseifBlock.previousConnection); + connection = elseifBlock.nextConnection; + } + if (this.elseCount_) { + const elseBlock = workspace.newBlock('controls_if_else'); + elseBlock.initSvg(); + connection.connect(elseBlock.previousConnection); + } + return containerBlock; + }, + /** + * Reconfigure this block based on the mutator dialog's components. + * @param {!Block} containerBlock Root block in mutator. + * @this {Block} + */ + compose: function(containerBlock) { + let clauseBlock = containerBlock.nextConnection.targetBlock(); + // Count number of inputs. + this.elseifCount_ = 0; + this.elseCount_ = 0; + const valueConnections = [null]; + const statementConnections = [null]; + let elseStatementConnection = null; + while (clauseBlock && !clauseBlock.isInsertionMarker()) { + switch (clauseBlock.type) { + case 'controls_if_elseif': + this.elseifCount_++; + valueConnections.push(clauseBlock.valueConnection_); + statementConnections.push(clauseBlock.statementConnection_); + break; + case 'controls_if_else': + this.elseCount_++; + elseStatementConnection = clauseBlock.statementConnection_; + break; + default: + throw TypeError('Unknown block type: ' + clauseBlock.type); + } + clauseBlock = clauseBlock.nextConnection && + clauseBlock.nextConnection.targetBlock(); + } + this.updateShape_(); + // Reconnect any child blocks. + this.reconnectChildBlocks_( + valueConnections, statementConnections, elseStatementConnection); + }, + /** + * Store pointers to any connected child blocks. + * @param {!Block} containerBlock Root block in mutator. + * @this {Block} + */ + saveConnections: function(containerBlock) { + let clauseBlock = containerBlock.nextConnection.targetBlock(); + let i = 1; + while (clauseBlock) { + switch (clauseBlock.type) { + case 'controls_if_elseif': { + const inputIf = this.getInput('IF' + i); + const inputDo = this.getInput('DO' + i); + clauseBlock.valueConnection_ = + inputIf && inputIf.connection.targetConnection; + clauseBlock.statementConnection_ = + inputDo && inputDo.connection.targetConnection; + i++; + break; + } + case 'controls_if_else': { + const inputDo = this.getInput('ELSE'); + clauseBlock.statementConnection_ = + inputDo && inputDo.connection.targetConnection; + break; + } + default: + throw TypeError('Unknown block type: ' + clauseBlock.type); + } + clauseBlock = clauseBlock.nextConnection && + clauseBlock.nextConnection.targetBlock(); + } + }, + /** + * Reconstructs the block with all child blocks attached. + * @this {Block} + */ + rebuildShape_: function() { + const valueConnections = [null]; + const statementConnections = [null]; + let elseStatementConnection = null; + + if (this.getInput('ELSE')) { + elseStatementConnection = + this.getInput('ELSE').connection.targetConnection; + } + for (let i = 1; this.getInput('IF' + i); i++) { + const inputIf = this.getInput('IF' + i); + const inputDo = this.getInput('DO' + i); + valueConnections.push(inputIf.connection.targetConnection); + statementConnections.push(inputDo.connection.targetConnection); + } + this.updateShape_(); + this.reconnectChildBlocks_( + valueConnections, statementConnections, elseStatementConnection); + }, + /** + * Modify this block to have the correct number of inputs. + * @this {Block} + * @private + */ + updateShape_: function() { + // Delete everything. + if (this.getInput('ELSE')) { + this.removeInput('ELSE'); + } + for (let i = 1; this.getInput('IF' + i); i++) { + this.removeInput('IF' + i); + this.removeInput('DO' + i); + } + // Rebuild block. + for (let i = 1; i <= this.elseifCount_; i++) { + this.appendValueInput('IF' + i).setCheck('Boolean').appendField( + Msg['CONTROLS_IF_MSG_ELSEIF']); + this.appendStatementInput('DO' + i).appendField( + Msg['CONTROLS_IF_MSG_THEN']); + } + if (this.elseCount_) { + this.appendStatementInput('ELSE').appendField( + Msg['CONTROLS_IF_MSG_ELSE']); + } + }, + /** + * Reconnects child blocks. + * @param {!Array} valueConnections List of + * value connections for 'if' input. + * @param {!Array} statementConnections List of + * statement connections for 'do' input. + * @param {?RenderedConnection} elseStatementConnection Statement + * connection for else input. + * @this {Block} + */ + reconnectChildBlocks_: function( + valueConnections, statementConnections, elseStatementConnection) { + for (let i = 1; i <= this.elseifCount_; i++) { + Mutator.reconnect(valueConnections[i], this, 'IF' + i); + Mutator.reconnect(statementConnections[i], this, 'DO' + i); + } + Mutator.reconnect(elseStatementConnection, this, 'ELSE'); + }, +}; + +Extensions.registerMutator( + 'controls_if_mutator', CONTROLS_IF_MUTATOR_MIXIN, null, + ['controls_if_elseif', 'controls_if_else']); +/** + * "controls_if" extension function. Adds mutator, shape updating methods, and + * dynamic tooltip to "controls_if" blocks. + * @this {Block} + */ +const CONTROLS_IF_TOOLTIP_EXTENSION = function() { + this.setTooltip(function() { + if (!this.elseifCount_ && !this.elseCount_) { + return Msg['CONTROLS_IF_TOOLTIP_1']; + } else if (!this.elseifCount_ && this.elseCount_) { + return Msg['CONTROLS_IF_TOOLTIP_2']; + } else if (this.elseifCount_ && !this.elseCount_) { + return Msg['CONTROLS_IF_TOOLTIP_3']; + } else if (this.elseifCount_ && this.elseCount_) { + return Msg['CONTROLS_IF_TOOLTIP_4']; + } + return ''; + }.bind(this)); +}; + +Extensions.register('controls_if_tooltip', CONTROLS_IF_TOOLTIP_EXTENSION); + +/** + * Adds dynamic type validation for the left and right sides of a logic_compare + * block. + * @mixin + * @augments Block + * @readonly + */ +const LOGIC_COMPARE_ONCHANGE_MIXIN = { + /** + * Called whenever anything on the workspace changes. + * Prevent mismatched types from being compared. + * @param {!AbstractEvent} e Change event. + * @this {Block} + */ + onchange: function(e) { + if (!this.prevBlocks_) { + this.prevBlocks_ = [null, null]; + } + + const blockA = this.getInputTargetBlock('A'); + const blockB = this.getInputTargetBlock('B'); + // Disconnect blocks that existed prior to this change if they don't match. + if (blockA && blockB && + !this.workspace.connectionChecker.doTypeChecks( + blockA.outputConnection, blockB.outputConnection)) { + // Mismatch between two inputs. Revert the block connections, + // bumping away the newly connected block(s). + Events.setGroup(e.group); + const prevA = this.prevBlocks_[0]; + if (prevA !== blockA) { + blockA.unplug(); + if (prevA && !prevA.isDisposed() && !prevA.isShadow()) { + // The shadow block is automatically replaced during unplug(). + this.getInput('A').connection.connect(prevA.outputConnection); + } + } + const prevB = this.prevBlocks_[1]; + if (prevB !== blockB) { + blockB.unplug(); + if (prevB && !prevB.isDisposed() && !prevB.isShadow()) { + // The shadow block is automatically replaced during unplug(). + this.getInput('B').connection.connect(prevB.outputConnection); + } + } + this.bumpNeighbours(); + Events.setGroup(false); + } + this.prevBlocks_[0] = this.getInputTargetBlock('A'); + this.prevBlocks_[1] = this.getInputTargetBlock('B'); + }, +}; + +/** + * "logic_compare" extension function. Adds type left and right side type + * checking to "logic_compare" blocks. + * @this {Block} + * @readonly + */ +const LOGIC_COMPARE_EXTENSION = function() { + // Add onchange handler to ensure types are compatible. + this.mixin(LOGIC_COMPARE_ONCHANGE_MIXIN); +}; + +Extensions.register('logic_compare', LOGIC_COMPARE_EXTENSION); + +/** + * Adds type coordination between inputs and output. + * @mixin + * @augments Block + * @readonly + */ +const LOGIC_TERNARY_ONCHANGE_MIXIN = { + prevParentConnection_: null, + + /** + * Called whenever anything on the workspace changes. + * Prevent mismatched types. + * @param {!AbstractEvent} e Change event. + * @this {Block} + */ + onchange: function(e) { + const blockA = this.getInputTargetBlock('THEN'); + const blockB = this.getInputTargetBlock('ELSE'); + const parentConnection = this.outputConnection.targetConnection; + // Disconnect blocks that existed prior to this change if they don't match. + if ((blockA || blockB) && parentConnection) { + for (let i = 0; i < 2; i++) { + const block = (i === 1) ? blockA : blockB; + if (block && + !block.workspace.connectionChecker.doTypeChecks( + block.outputConnection, parentConnection)) { + // Ensure that any disconnections are grouped with the causing event. + Events.setGroup(e.group); + if (parentConnection === this.prevParentConnection_) { + this.unplug(); + parentConnection.getSourceBlock().bumpNeighbours(); + } else { + block.unplug(); + block.bumpNeighbours(); + } + Events.setGroup(false); + } + } + } + this.prevParentConnection_ = parentConnection; + }, +}; + +Extensions.registerMixin('logic_ternary', LOGIC_TERNARY_ONCHANGE_MIXIN); + +// Register provided blocks. +defineBlocks(blocks); diff --git a/blocks/loops.js b/blocks/loops.js index 4578fc46ff9..da4369e98b5 100644 --- a/blocks/loops.js +++ b/blocks/loops.js @@ -1,373 +1,373 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Loop blocks for Blockly. - * @suppress {checkTypes} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks.loops'); - -/* eslint-disable-next-line no-unused-vars */ -const AbstractEvent = goog.requireType('Blockly.Events.Abstract'); -const ContextMenu = goog.require('Blockly.ContextMenu'); -const Events = goog.require('Blockly.Events'); -const Extensions = goog.require('Blockly.Extensions'); -const Variables = goog.require('Blockly.Variables'); -const xmlUtils = goog.require('Blockly.utils.xml'); -/* eslint-disable-next-line no-unused-vars */ -const {Block} = goog.requireType('Blockly.Block'); -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); -const {Msg} = goog.require('Blockly.Msg'); -const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldDropdown'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldLabel'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldNumber'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldVariable'); -/** @suppress {extraRequire} */ -goog.require('Blockly.Warning'); - - -/** - * A dictionary of the block definitions provided by this module. - * @type {!Object} - */ -const blocks = createBlockDefinitionsFromJsonArray([ - // Block for repeat n times (external number). - { - 'type': 'controls_repeat_ext', - 'message0': '%{BKY_CONTROLS_REPEAT_TITLE}', - 'args0': [{ - 'type': 'input_value', - 'name': 'TIMES', - 'check': 'Number', - }], - 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', - 'args1': [{ - 'type': 'input_statement', - 'name': 'DO', - }], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'loop_blocks', - 'tooltip': '%{BKY_CONTROLS_REPEAT_TOOLTIP}', - 'helpUrl': '%{BKY_CONTROLS_REPEAT_HELPURL}', - }, - // Block for repeat n times (internal number). - // The 'controls_repeat_ext' block is preferred as it is more flexible. - { - 'type': 'controls_repeat', - 'message0': '%{BKY_CONTROLS_REPEAT_TITLE}', - 'args0': [{ - 'type': 'field_number', - 'name': 'TIMES', - 'value': 10, - 'min': 0, - 'precision': 1, - }], - 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', - 'args1': [{ - 'type': 'input_statement', - 'name': 'DO', - }], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'loop_blocks', - 'tooltip': '%{BKY_CONTROLS_REPEAT_TOOLTIP}', - 'helpUrl': '%{BKY_CONTROLS_REPEAT_HELPURL}', - }, - // Block for 'do while/until' loop. - { - 'type': 'controls_whileUntil', - 'message0': '%1 %2', - 'args0': [ - { - 'type': 'field_dropdown', - 'name': 'MODE', - 'options': [ - ['%{BKY_CONTROLS_WHILEUNTIL_OPERATOR_WHILE}', 'WHILE'], - ['%{BKY_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL}', 'UNTIL'], - ], - }, - { - 'type': 'input_value', - 'name': 'BOOL', - 'check': 'Boolean', - }, - ], - 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', - 'args1': [{ - 'type': 'input_statement', - 'name': 'DO', - }], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'loop_blocks', - 'helpUrl': '%{BKY_CONTROLS_WHILEUNTIL_HELPURL}', - 'extensions': ['controls_whileUntil_tooltip'], - }, - // Block for 'for' loop. - { - 'type': 'controls_for', - 'message0': '%{BKY_CONTROLS_FOR_TITLE}', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': null, - }, - { - 'type': 'input_value', - 'name': 'FROM', - 'check': 'Number', - 'align': 'RIGHT', - }, - { - 'type': 'input_value', - 'name': 'TO', - 'check': 'Number', - 'align': 'RIGHT', - }, - { - 'type': 'input_value', - 'name': 'BY', - 'check': 'Number', - 'align': 'RIGHT', - }, - ], - 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', - 'args1': [{ - 'type': 'input_statement', - 'name': 'DO', - }], - 'inputsInline': true, - 'previousStatement': null, - 'nextStatement': null, - 'style': 'loop_blocks', - 'helpUrl': '%{BKY_CONTROLS_FOR_HELPURL}', - 'extensions': [ - 'contextMenu_newGetVariableBlock', - 'controls_for_tooltip', - ], - }, - // Block for 'for each' loop. - { - 'type': 'controls_forEach', - 'message0': '%{BKY_CONTROLS_FOREACH_TITLE}', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': null, - }, - { - 'type': 'input_value', - 'name': 'LIST', - 'check': 'Array', - }, - ], - 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', - 'args1': [{ - 'type': 'input_statement', - 'name': 'DO', - }], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'loop_blocks', - 'helpUrl': '%{BKY_CONTROLS_FOREACH_HELPURL}', - 'extensions': [ - 'contextMenu_newGetVariableBlock', - 'controls_forEach_tooltip', - ], - }, - // Block for flow statements: continue, break. - { - 'type': 'controls_flow_statements', - 'message0': '%1', - 'args0': [{ - 'type': 'field_dropdown', - 'name': 'FLOW', - 'options': [ - ['%{BKY_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK}', 'BREAK'], - ['%{BKY_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE}', 'CONTINUE'], - ], - }], - 'previousStatement': null, - 'style': 'loop_blocks', - 'helpUrl': '%{BKY_CONTROLS_FLOW_STATEMENTS_HELPURL}', - 'suppressPrefixSuffix': true, - 'extensions': [ - 'controls_flow_tooltip', - 'controls_flow_in_loop_check', - ], - }, -]); -exports.blocks = blocks; - -/** - * Tooltips for the 'controls_whileUntil' block, keyed by MODE value. - * @see {Extensions#buildTooltipForDropdown} - * @readonly - */ -const WHILE_UNTIL_TOOLTIPS = { - 'WHILE': '%{BKY_CONTROLS_WHILEUNTIL_TOOLTIP_WHILE}', - 'UNTIL': '%{BKY_CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}', -}; - -Extensions.register( - 'controls_whileUntil_tooltip', - Extensions.buildTooltipForDropdown('MODE', WHILE_UNTIL_TOOLTIPS)); - -/** - * Tooltips for the 'controls_flow_statements' block, keyed by FLOW value. - * @see {Extensions#buildTooltipForDropdown} - * @readonly - */ -const BREAK_CONTINUE_TOOLTIPS = { - 'BREAK': '%{BKY_CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK}', - 'CONTINUE': '%{BKY_CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}', -}; - -Extensions.register( - 'controls_flow_tooltip', - Extensions.buildTooltipForDropdown('FLOW', BREAK_CONTINUE_TOOLTIPS)); - -/** - * Mixin to add a context menu item to create a 'variables_get' block. - * Used by blocks 'controls_for' and 'controls_forEach'. - * @mixin - * @augments Block - * @package - * @readonly - */ -const CUSTOM_CONTEXT_MENU_CREATE_VARIABLES_GET_MIXIN = { - /** - * Add context menu option to create getter block for the loop's variable. - * (customContextMenu support limited to web BlockSvg.) - * @param {!Array} options List of menu options to add to. - * @this {Block} - */ - customContextMenu: function(options) { - if (this.isInFlyout) { - return; - } - const variable = this.getField('VAR').getVariable(); - const varName = variable.name; - if (!this.isCollapsed() && varName !== null) { - const option = {enabled: true}; - option.text = Msg['VARIABLES_SET_CREATE_GET'].replace('%1', varName); - const xmlField = Variables.generateVariableFieldDom(variable); - const xmlBlock = xmlUtils.createElement('block'); - xmlBlock.setAttribute('type', 'variables_get'); - xmlBlock.appendChild(xmlField); - option.callback = ContextMenu.callbackFactory(this, xmlBlock); - options.push(option); - } - }, -}; - -Extensions.registerMixin( - 'contextMenu_newGetVariableBlock', - CUSTOM_CONTEXT_MENU_CREATE_VARIABLES_GET_MIXIN); - -Extensions.register( - 'controls_for_tooltip', - Extensions.buildTooltipWithFieldText('%{BKY_CONTROLS_FOR_TOOLTIP}', 'VAR')); - -Extensions.register( - 'controls_forEach_tooltip', - Extensions.buildTooltipWithFieldText( - '%{BKY_CONTROLS_FOREACH_TOOLTIP}', 'VAR')); - -/** - * List of block types that are loops and thus do not need warnings. - * To add a new loop type add this to your code: - * - * // If using the Blockly npm package and es6 import syntax: - * import {loopTypes} from 'blockly/blocks'; - * loopTypes.add('custom_loop'); - * - * // Else if using Closure Compiler and goog.modules: - * const {loopTypes} = goog.require('Blockly.libraryBlocks.loops'); - * loopTypes.add('custom_loop'); - * - * // Else if using blockly_compressed + blockss_compressed.js in browser: - * Blockly.libraryBlocks.loopTypes.add('custom_loop'); - * - * @type {!Set} - */ -const loopTypes = new Set([ - 'controls_repeat', - 'controls_repeat_ext', - 'controls_forEach', - 'controls_for', - 'controls_whileUntil', -]); -exports.loopTypes = loopTypes; - -/** - * This mixin adds a check to make sure the 'controls_flow_statements' block - * is contained in a loop. Otherwise a warning is added to the block. - * @mixin - * @augments Block - * @public - * @readonly - */ -const CONTROL_FLOW_IN_LOOP_CHECK_MIXIN = { - /** - * Is this block enclosed (at any level) by a loop? - * @return {Block} The nearest surrounding loop, or null if none. - * @this {Block} - */ - getSurroundLoop: function() { - let block = this; - do { - if (loopTypes.has(block.type)) { - return block; - } - block = block.getSurroundParent(); - } while (block); - return null; - }, - - /** - * Called whenever anything on the workspace changes. - * Add warning if this flow block is not nested inside a loop. - * @param {!AbstractEvent} e Move event. - * @this {Block} - */ - onchange: function(e) { - // Don't change state if: - // * It's at the start of a drag. - // * It's not a move event. - if (!this.workspace.isDragging || this.workspace.isDragging() || - e.type !== Events.BLOCK_MOVE) { - return; - } - const enabled = this.getSurroundLoop(this); - this.setWarningText( - enabled ? null : Msg['CONTROLS_FLOW_STATEMENTS_WARNING']); - if (!this.isInFlyout) { - const group = Events.getGroup(); - // Makes it so the move and the disable event get undone together. - Events.setGroup(e.group); - this.setEnabled(enabled); - Events.setGroup(group); - } - }, -}; - -Extensions.registerMixin( - 'controls_flow_in_loop_check', CONTROL_FLOW_IN_LOOP_CHECK_MIXIN); - -// Register provided blocks. -defineBlocks(blocks); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Loop blocks for Blockly. + * @suppress {checkTypes} + */ +'use strict'; + +goog.module('Blockly.libraryBlocks.loops'); + +/* eslint-disable-next-line no-unused-vars */ +const AbstractEvent = goog.requireType('Blockly.Events.Abstract'); +const ContextMenu = goog.require('Blockly.ContextMenu'); +const Events = goog.require('Blockly.Events'); +const Extensions = goog.require('Blockly.Extensions'); +const Variables = goog.require('Blockly.Variables'); +const xmlUtils = goog.require('Blockly.utils.xml'); +/* eslint-disable-next-line no-unused-vars */ +const {Block} = goog.requireType('Blockly.Block'); +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); +const {Msg} = goog.require('Blockly.Msg'); +const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldDropdown'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldLabel'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldNumber'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldVariable'); +/** @suppress {extraRequire} */ +goog.require('Blockly.Warning'); + + +/** + * A dictionary of the block definitions provided by this module. + * @type {!Object} + */ +const blocks = createBlockDefinitionsFromJsonArray([ + // Block for repeat n times (external number). + { + 'type': 'controls_repeat_ext', + 'message0': '%{BKY_CONTROLS_REPEAT_TITLE}', + 'args0': [{ + 'type': 'input_value', + 'name': 'TIMES', + 'check': 'Number', + }], + 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', + 'args1': [{ + 'type': 'input_statement', + 'name': 'DO', + }], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'loop_blocks', + 'tooltip': '%{BKY_CONTROLS_REPEAT_TOOLTIP}', + 'helpUrl': '%{BKY_CONTROLS_REPEAT_HELPURL}', + }, + // Block for repeat n times (internal number). + // The 'controls_repeat_ext' block is preferred as it is more flexible. + { + 'type': 'controls_repeat', + 'message0': '%{BKY_CONTROLS_REPEAT_TITLE}', + 'args0': [{ + 'type': 'field_number', + 'name': 'TIMES', + 'value': 10, + 'min': 0, + 'precision': 1, + }], + 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', + 'args1': [{ + 'type': 'input_statement', + 'name': 'DO', + }], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'loop_blocks', + 'tooltip': '%{BKY_CONTROLS_REPEAT_TOOLTIP}', + 'helpUrl': '%{BKY_CONTROLS_REPEAT_HELPURL}', + }, + // Block for 'do while/until' loop. + { + 'type': 'controls_whileUntil', + 'message0': '%1 %2', + 'args0': [ + { + 'type': 'field_dropdown', + 'name': 'MODE', + 'options': [ + ['%{BKY_CONTROLS_WHILEUNTIL_OPERATOR_WHILE}', 'WHILE'], + ['%{BKY_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL}', 'UNTIL'], + ], + }, + { + 'type': 'input_value', + 'name': 'BOOL', + 'check': 'Boolean', + }, + ], + 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', + 'args1': [{ + 'type': 'input_statement', + 'name': 'DO', + }], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'loop_blocks', + 'helpUrl': '%{BKY_CONTROLS_WHILEUNTIL_HELPURL}', + 'extensions': ['controls_whileUntil_tooltip'], + }, + // Block for 'for' loop. + { + 'type': 'controls_for', + 'message0': '%{BKY_CONTROLS_FOR_TITLE}', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': null, + }, + { + 'type': 'input_value', + 'name': 'FROM', + 'check': 'Number', + 'align': 'RIGHT', + }, + { + 'type': 'input_value', + 'name': 'TO', + 'check': 'Number', + 'align': 'RIGHT', + }, + { + 'type': 'input_value', + 'name': 'BY', + 'check': 'Number', + 'align': 'RIGHT', + }, + ], + 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', + 'args1': [{ + 'type': 'input_statement', + 'name': 'DO', + }], + 'inputsInline': true, + 'previousStatement': null, + 'nextStatement': null, + 'style': 'loop_blocks', + 'helpUrl': '%{BKY_CONTROLS_FOR_HELPURL}', + 'extensions': [ + 'contextMenu_newGetVariableBlock', + 'controls_for_tooltip', + ], + }, + // Block for 'for each' loop. + { + 'type': 'controls_forEach', + 'message0': '%{BKY_CONTROLS_FOREACH_TITLE}', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': null, + }, + { + 'type': 'input_value', + 'name': 'LIST', + 'check': 'Array', + }, + ], + 'message1': '%{BKY_CONTROLS_REPEAT_INPUT_DO} %1', + 'args1': [{ + 'type': 'input_statement', + 'name': 'DO', + }], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'loop_blocks', + 'helpUrl': '%{BKY_CONTROLS_FOREACH_HELPURL}', + 'extensions': [ + 'contextMenu_newGetVariableBlock', + 'controls_forEach_tooltip', + ], + }, + // Block for flow statements: continue, break. + { + 'type': 'controls_flow_statements', + 'message0': '%1', + 'args0': [{ + 'type': 'field_dropdown', + 'name': 'FLOW', + 'options': [ + ['%{BKY_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK}', 'BREAK'], + ['%{BKY_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE}', 'CONTINUE'], + ], + }], + 'previousStatement': null, + 'style': 'loop_blocks', + 'helpUrl': '%{BKY_CONTROLS_FLOW_STATEMENTS_HELPURL}', + 'suppressPrefixSuffix': true, + 'extensions': [ + 'controls_flow_tooltip', + 'controls_flow_in_loop_check', + ], + }, +]); +exports.blocks = blocks; + +/** + * Tooltips for the 'controls_whileUntil' block, keyed by MODE value. + * @see {Extensions#buildTooltipForDropdown} + * @readonly + */ +const WHILE_UNTIL_TOOLTIPS = { + 'WHILE': '%{BKY_CONTROLS_WHILEUNTIL_TOOLTIP_WHILE}', + 'UNTIL': '%{BKY_CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}', +}; + +Extensions.register( + 'controls_whileUntil_tooltip', + Extensions.buildTooltipForDropdown('MODE', WHILE_UNTIL_TOOLTIPS)); + +/** + * Tooltips for the 'controls_flow_statements' block, keyed by FLOW value. + * @see {Extensions#buildTooltipForDropdown} + * @readonly + */ +const BREAK_CONTINUE_TOOLTIPS = { + 'BREAK': '%{BKY_CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK}', + 'CONTINUE': '%{BKY_CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}', +}; + +Extensions.register( + 'controls_flow_tooltip', + Extensions.buildTooltipForDropdown('FLOW', BREAK_CONTINUE_TOOLTIPS)); + +/** + * Mixin to add a context menu item to create a 'variables_get' block. + * Used by blocks 'controls_for' and 'controls_forEach'. + * @mixin + * @augments Block + * @package + * @readonly + */ +const CUSTOM_CONTEXT_MENU_CREATE_VARIABLES_GET_MIXIN = { + /** + * Add context menu option to create getter block for the loop's variable. + * (customContextMenu support limited to web BlockSvg.) + * @param {!Array} options List of menu options to add to. + * @this {Block} + */ + customContextMenu: function(options) { + if (this.isInFlyout) { + return; + } + const variable = this.getField('VAR').getVariable(); + const varName = variable.name; + if (!this.isCollapsed() && varName !== null) { + const option = {enabled: true}; + option.text = Msg['VARIABLES_SET_CREATE_GET'].replace('%1', varName); + const xmlField = Variables.generateVariableFieldDom(variable); + const xmlBlock = xmlUtils.createElement('block'); + xmlBlock.setAttribute('type', 'variables_get'); + xmlBlock.appendChild(xmlField); + option.callback = ContextMenu.callbackFactory(this, xmlBlock); + options.push(option); + } + }, +}; + +Extensions.registerMixin( + 'contextMenu_newGetVariableBlock', + CUSTOM_CONTEXT_MENU_CREATE_VARIABLES_GET_MIXIN); + +Extensions.register( + 'controls_for_tooltip', + Extensions.buildTooltipWithFieldText('%{BKY_CONTROLS_FOR_TOOLTIP}', 'VAR')); + +Extensions.register( + 'controls_forEach_tooltip', + Extensions.buildTooltipWithFieldText( + '%{BKY_CONTROLS_FOREACH_TOOLTIP}', 'VAR')); + +/** + * List of block types that are loops and thus do not need warnings. + * To add a new loop type add this to your code: + * + * // If using the Blockly npm package and es6 import syntax: + * import {loopTypes} from 'blockly/blocks'; + * loopTypes.add('custom_loop'); + * + * // Else if using Closure Compiler and goog.modules: + * const {loopTypes} = goog.require('Blockly.libraryBlocks.loops'); + * loopTypes.add('custom_loop'); + * + * // Else if using blockly_compressed + blockss_compressed.js in browser: + * Blockly.libraryBlocks.loopTypes.add('custom_loop'); + * + * @type {!Set} + */ +const loopTypes = new Set([ + 'controls_repeat', + 'controls_repeat_ext', + 'controls_forEach', + 'controls_for', + 'controls_whileUntil', +]); +exports.loopTypes = loopTypes; + +/** + * This mixin adds a check to make sure the 'controls_flow_statements' block + * is contained in a loop. Otherwise a warning is added to the block. + * @mixin + * @augments Block + * @public + * @readonly + */ +const CONTROL_FLOW_IN_LOOP_CHECK_MIXIN = { + /** + * Is this block enclosed (at any level) by a loop? + * @return {Block} The nearest surrounding loop, or null if none. + * @this {Block} + */ + getSurroundLoop: function() { + let block = this; + do { + if (loopTypes.has(block.type)) { + return block; + } + block = block.getSurroundParent(); + } while (block); + return null; + }, + + /** + * Called whenever anything on the workspace changes. + * Add warning if this flow block is not nested inside a loop. + * @param {!AbstractEvent} e Move event. + * @this {Block} + */ + onchange: function(e) { + // Don't change state if: + // * It's at the start of a drag. + // * It's not a move event. + if (!this.workspace.isDragging || this.workspace.isDragging() || + e.type !== Events.BLOCK_MOVE) { + return; + } + const enabled = this.getSurroundLoop(this); + this.setWarningText( + enabled ? null : Msg['CONTROLS_FLOW_STATEMENTS_WARNING']); + if (!this.isInFlyout) { + const group = Events.getGroup(); + // Makes it so the move and the disable event get undone together. + Events.setGroup(e.group); + this.setEnabled(enabled); + Events.setGroup(group); + } + }, +}; + +Extensions.registerMixin( + 'controls_flow_in_loop_check', CONTROL_FLOW_IN_LOOP_CHECK_MIXIN); + +// Register provided blocks. +defineBlocks(blocks); diff --git a/blocks/math.js b/blocks/math.js index bd5458fdd89..4aae4bbc189 100644 --- a/blocks/math.js +++ b/blocks/math.js @@ -1,592 +1,592 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Math blocks for Blockly. - * @suppress {checkTypes} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks.math'); - -const Extensions = goog.require('Blockly.Extensions'); -// N.B.: Blockly.FieldDropdown needed for type AND side-effects. -/* eslint-disable-next-line no-unused-vars */ -const FieldDropdown = goog.require('Blockly.FieldDropdown'); -const xmlUtils = goog.require('Blockly.utils.xml'); -/* eslint-disable-next-line no-unused-vars */ -const {Block} = goog.requireType('Blockly.Block'); -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); -const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldLabel'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldNumber'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldVariable'); - - -/** - * A dictionary of the block definitions provided by this module. - * @type {!Object} - */ -const blocks = createBlockDefinitionsFromJsonArray([ - // Block for numeric value. - { - 'type': 'math_number', - 'message0': '%1', - 'args0': [{ - 'type': 'field_number', - 'name': 'NUM', - 'value': 0, - }], - 'output': 'Number', - 'helpUrl': '%{BKY_MATH_NUMBER_HELPURL}', - 'style': 'math_blocks', - 'tooltip': '%{BKY_MATH_NUMBER_TOOLTIP}', - 'extensions': ['parent_tooltip_when_inline'], - }, - - // Block for basic arithmetic operator. - { - 'type': 'math_arithmetic', - 'message0': '%1 %2 %3', - 'args0': [ - { - 'type': 'input_value', - 'name': 'A', - 'check': 'Number', - }, - { - 'type': 'field_dropdown', - 'name': 'OP', - 'options': [ - ['%{BKY_MATH_ADDITION_SYMBOL}', 'ADD'], - ['%{BKY_MATH_SUBTRACTION_SYMBOL}', 'MINUS'], - ['%{BKY_MATH_MULTIPLICATION_SYMBOL}', 'MULTIPLY'], - ['%{BKY_MATH_DIVISION_SYMBOL}', 'DIVIDE'], - ['%{BKY_MATH_POWER_SYMBOL}', 'POWER'], - ], - }, - { - 'type': 'input_value', - 'name': 'B', - 'check': 'Number', - }, - ], - 'inputsInline': true, - 'output': 'Number', - 'style': 'math_blocks', - 'helpUrl': '%{BKY_MATH_ARITHMETIC_HELPURL}', - 'extensions': ['math_op_tooltip'], - }, - - // Block for advanced math operators with single operand. - { - 'type': 'math_single', - 'message0': '%1 %2', - 'args0': [ - { - 'type': 'field_dropdown', - 'name': 'OP', - 'options': [ - ['%{BKY_MATH_SINGLE_OP_ROOT}', 'ROOT'], - ['%{BKY_MATH_SINGLE_OP_ABSOLUTE}', 'ABS'], - ['-', 'NEG'], - ['ln', 'LN'], - ['log10', 'LOG10'], - ['e^', 'EXP'], - ['10^', 'POW10'], - ], - }, - { - 'type': 'input_value', - 'name': 'NUM', - 'check': 'Number', - }, - ], - 'output': 'Number', - 'style': 'math_blocks', - 'helpUrl': '%{BKY_MATH_SINGLE_HELPURL}', - 'extensions': ['math_op_tooltip'], - }, - - // Block for trigonometry operators. - { - 'type': 'math_trig', - 'message0': '%1 %2', - 'args0': [ - { - 'type': 'field_dropdown', - 'name': 'OP', - 'options': [ - ['%{BKY_MATH_TRIG_SIN}', 'SIN'], - ['%{BKY_MATH_TRIG_COS}', 'COS'], - ['%{BKY_MATH_TRIG_TAN}', 'TAN'], - ['%{BKY_MATH_TRIG_ASIN}', 'ASIN'], - ['%{BKY_MATH_TRIG_ACOS}', 'ACOS'], - ['%{BKY_MATH_TRIG_ATAN}', 'ATAN'], - ], - }, - { - 'type': 'input_value', - 'name': 'NUM', - 'check': 'Number', - }, - ], - 'output': 'Number', - 'style': 'math_blocks', - 'helpUrl': '%{BKY_MATH_TRIG_HELPURL}', - 'extensions': ['math_op_tooltip'], - }, - - // Block for constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. - { - 'type': 'math_constant', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_dropdown', - 'name': 'CONSTANT', - 'options': [ - ['\u03c0', 'PI'], - ['e', 'E'], - ['\u03c6', 'GOLDEN_RATIO'], - ['sqrt(2)', 'SQRT2'], - ['sqrt(\u00bd)', 'SQRT1_2'], - ['\u221e', 'INFINITY'], - ], - }, - ], - 'output': 'Number', - 'style': 'math_blocks', - 'tooltip': '%{BKY_MATH_CONSTANT_TOOLTIP}', - 'helpUrl': '%{BKY_MATH_CONSTANT_HELPURL}', - }, - - // Block for checking if a number is even, odd, prime, whole, positive, - // negative or if it is divisible by certain number. - { - 'type': 'math_number_property', - 'message0': '%1 %2', - 'args0': [ - { - 'type': 'input_value', - 'name': 'NUMBER_TO_CHECK', - 'check': 'Number', - }, - { - 'type': 'field_dropdown', - 'name': 'PROPERTY', - 'options': [ - ['%{BKY_MATH_IS_EVEN}', 'EVEN'], - ['%{BKY_MATH_IS_ODD}', 'ODD'], - ['%{BKY_MATH_IS_PRIME}', 'PRIME'], - ['%{BKY_MATH_IS_WHOLE}', 'WHOLE'], - ['%{BKY_MATH_IS_POSITIVE}', 'POSITIVE'], - ['%{BKY_MATH_IS_NEGATIVE}', 'NEGATIVE'], - ['%{BKY_MATH_IS_DIVISIBLE_BY}', 'DIVISIBLE_BY'], - ], - }, - ], - 'inputsInline': true, - 'output': 'Boolean', - 'style': 'math_blocks', - 'tooltip': '%{BKY_MATH_IS_TOOLTIP}', - 'mutator': 'math_is_divisibleby_mutator', - }, - - // Block for adding to a variable in place. - { - 'type': 'math_change', - 'message0': '%{BKY_MATH_CHANGE_TITLE}', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': '%{BKY_MATH_CHANGE_TITLE_ITEM}', - }, - { - 'type': 'input_value', - 'name': 'DELTA', - 'check': 'Number', - }, - ], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'variable_blocks', - 'helpUrl': '%{BKY_MATH_CHANGE_HELPURL}', - 'extensions': ['math_change_tooltip'], - }, - - // Block for rounding functions. - { - 'type': 'math_round', - 'message0': '%1 %2', - 'args0': [ - { - 'type': 'field_dropdown', - 'name': 'OP', - 'options': [ - ['%{BKY_MATH_ROUND_OPERATOR_ROUND}', 'ROUND'], - ['%{BKY_MATH_ROUND_OPERATOR_ROUNDUP}', 'ROUNDUP'], - ['%{BKY_MATH_ROUND_OPERATOR_ROUNDDOWN}', 'ROUNDDOWN'], - ], - }, - { - 'type': 'input_value', - 'name': 'NUM', - 'check': 'Number', - }, - ], - 'output': 'Number', - 'style': 'math_blocks', - 'helpUrl': '%{BKY_MATH_ROUND_HELPURL}', - 'tooltip': '%{BKY_MATH_ROUND_TOOLTIP}', - }, - - // Block for evaluating a list of numbers to return sum, average, min, max, - // etc. Some functions also work on text (min, max, mode, median). - { - 'type': 'math_on_list', - 'message0': '%1 %2', - 'args0': [ - { - 'type': 'field_dropdown', - 'name': 'OP', - 'options': [ - ['%{BKY_MATH_ONLIST_OPERATOR_SUM}', 'SUM'], - ['%{BKY_MATH_ONLIST_OPERATOR_MIN}', 'MIN'], - ['%{BKY_MATH_ONLIST_OPERATOR_MAX}', 'MAX'], - ['%{BKY_MATH_ONLIST_OPERATOR_AVERAGE}', 'AVERAGE'], - ['%{BKY_MATH_ONLIST_OPERATOR_MEDIAN}', 'MEDIAN'], - ['%{BKY_MATH_ONLIST_OPERATOR_MODE}', 'MODE'], - ['%{BKY_MATH_ONLIST_OPERATOR_STD_DEV}', 'STD_DEV'], - ['%{BKY_MATH_ONLIST_OPERATOR_RANDOM}', 'RANDOM'], - ], - }, - { - 'type': 'input_value', - 'name': 'LIST', - 'check': 'Array', - }, - ], - 'output': 'Number', - 'style': 'math_blocks', - 'helpUrl': '%{BKY_MATH_ONLIST_HELPURL}', - 'mutator': 'math_modes_of_list_mutator', - 'extensions': ['math_op_tooltip'], - }, - - // Block for remainder of a division. - { - 'type': 'math_modulo', - 'message0': '%{BKY_MATH_MODULO_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'DIVIDEND', - 'check': 'Number', - }, - { - 'type': 'input_value', - 'name': 'DIVISOR', - 'check': 'Number', - }, - ], - 'inputsInline': true, - 'output': 'Number', - 'style': 'math_blocks', - 'tooltip': '%{BKY_MATH_MODULO_TOOLTIP}', - 'helpUrl': '%{BKY_MATH_MODULO_HELPURL}', - }, - - // Block for constraining a number between two limits. - { - 'type': 'math_constrain', - 'message0': '%{BKY_MATH_CONSTRAIN_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'VALUE', - 'check': 'Number', - }, - { - 'type': 'input_value', - 'name': 'LOW', - 'check': 'Number', - }, - { - 'type': 'input_value', - 'name': 'HIGH', - 'check': 'Number', - }, - ], - 'inputsInline': true, - 'output': 'Number', - 'style': 'math_blocks', - 'tooltip': '%{BKY_MATH_CONSTRAIN_TOOLTIP}', - 'helpUrl': '%{BKY_MATH_CONSTRAIN_HELPURL}', - }, - - // Block for random integer between [X] and [Y]. - { - 'type': 'math_random_int', - 'message0': '%{BKY_MATH_RANDOM_INT_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'FROM', - 'check': 'Number', - }, - { - 'type': 'input_value', - 'name': 'TO', - 'check': 'Number', - }, - ], - 'inputsInline': true, - 'output': 'Number', - 'style': 'math_blocks', - 'tooltip': '%{BKY_MATH_RANDOM_INT_TOOLTIP}', - 'helpUrl': '%{BKY_MATH_RANDOM_INT_HELPURL}', - }, - - // Block for random integer between [X] and [Y]. - { - 'type': 'math_random_float', - 'message0': '%{BKY_MATH_RANDOM_FLOAT_TITLE_RANDOM}', - 'output': 'Number', - 'style': 'math_blocks', - 'tooltip': '%{BKY_MATH_RANDOM_FLOAT_TOOLTIP}', - 'helpUrl': '%{BKY_MATH_RANDOM_FLOAT_HELPURL}', - }, - - // Block for calculating atan2 of [X] and [Y]. - { - 'type': 'math_atan2', - 'message0': '%{BKY_MATH_ATAN2_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'X', - 'check': 'Number', - }, - { - 'type': 'input_value', - 'name': 'Y', - 'check': 'Number', - }, - ], - 'inputsInline': true, - 'output': 'Number', - 'style': 'math_blocks', - 'tooltip': '%{BKY_MATH_ATAN2_TOOLTIP}', - 'helpUrl': '%{BKY_MATH_ATAN2_HELPURL}', - }, -]); -exports.blocks = blocks; - -/** - * Mapping of math block OP value to tooltip message for blocks - * math_arithmetic, math_simple, math_trig, and math_on_lists. - * @see {Extensions#buildTooltipForDropdown} - * @package - * @readonly - */ -const TOOLTIPS_BY_OP = { - // math_arithmetic - 'ADD': '%{BKY_MATH_ARITHMETIC_TOOLTIP_ADD}', - 'MINUS': '%{BKY_MATH_ARITHMETIC_TOOLTIP_MINUS}', - 'MULTIPLY': '%{BKY_MATH_ARITHMETIC_TOOLTIP_MULTIPLY}', - 'DIVIDE': '%{BKY_MATH_ARITHMETIC_TOOLTIP_DIVIDE}', - 'POWER': '%{BKY_MATH_ARITHMETIC_TOOLTIP_POWER}', - - // math_simple - 'ROOT': '%{BKY_MATH_SINGLE_TOOLTIP_ROOT}', - 'ABS': '%{BKY_MATH_SINGLE_TOOLTIP_ABS}', - 'NEG': '%{BKY_MATH_SINGLE_TOOLTIP_NEG}', - 'LN': '%{BKY_MATH_SINGLE_TOOLTIP_LN}', - 'LOG10': '%{BKY_MATH_SINGLE_TOOLTIP_LOG10}', - 'EXP': '%{BKY_MATH_SINGLE_TOOLTIP_EXP}', - 'POW10': '%{BKY_MATH_SINGLE_TOOLTIP_POW10}', - - // math_trig - 'SIN': '%{BKY_MATH_TRIG_TOOLTIP_SIN}', - 'COS': '%{BKY_MATH_TRIG_TOOLTIP_COS}', - 'TAN': '%{BKY_MATH_TRIG_TOOLTIP_TAN}', - 'ASIN': '%{BKY_MATH_TRIG_TOOLTIP_ASIN}', - 'ACOS': '%{BKY_MATH_TRIG_TOOLTIP_ACOS}', - 'ATAN': '%{BKY_MATH_TRIG_TOOLTIP_ATAN}', - - // math_on_lists - 'SUM': '%{BKY_MATH_ONLIST_TOOLTIP_SUM}', - 'MIN': '%{BKY_MATH_ONLIST_TOOLTIP_MIN}', - 'MAX': '%{BKY_MATH_ONLIST_TOOLTIP_MAX}', - 'AVERAGE': '%{BKY_MATH_ONLIST_TOOLTIP_AVERAGE}', - 'MEDIAN': '%{BKY_MATH_ONLIST_TOOLTIP_MEDIAN}', - 'MODE': '%{BKY_MATH_ONLIST_TOOLTIP_MODE}', - 'STD_DEV': '%{BKY_MATH_ONLIST_TOOLTIP_STD_DEV}', - 'RANDOM': '%{BKY_MATH_ONLIST_TOOLTIP_RANDOM}', -}; - -Extensions.register( - 'math_op_tooltip', - Extensions.buildTooltipForDropdown('OP', TOOLTIPS_BY_OP)); - - -/** - * Mixin for mutator functions in the 'math_is_divisibleby_mutator' - * extension. - * @mixin - * @augments Block - * @package - */ -const IS_DIVISIBLEBY_MUTATOR_MIXIN = { - /** - * Create XML to represent whether the 'divisorInput' should be present. - * Backwards compatible serialization implementation. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - const divisorInput = (this.getFieldValue('PROPERTY') === 'DIVISIBLE_BY'); - container.setAttribute('divisor_input', divisorInput); - return container; - }, - /** - * Parse XML to restore the 'divisorInput'. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - const divisorInput = (xmlElement.getAttribute('divisor_input') === 'true'); - this.updateShape_(divisorInput); - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. - - /** - * Modify this block to have (or not have) an input for 'is divisible by'. - * @param {boolean} divisorInput True if this block has a divisor input. - * @private - * @this {Block} - */ - updateShape_: function(divisorInput) { - // Add or remove a Value Input. - const inputExists = this.getInput('DIVISOR'); - if (divisorInput) { - if (!inputExists) { - this.appendValueInput('DIVISOR').setCheck('Number'); - } - } else if (inputExists) { - this.removeInput('DIVISOR'); - } - }, -}; - -/** - * 'math_is_divisibleby_mutator' extension to the 'math_property' block that - * can update the block shape (add/remove divisor input) based on whether - * property is "divisible by". - * @this {Block} - * @package - */ -const IS_DIVISIBLE_MUTATOR_EXTENSION = function() { - this.getField('PROPERTY') - .setValidator( - /** - * @this {FieldDropdown} - * @param {*} option The selected dropdown option. - */ - function(option) { - const divisorInput = (option === 'DIVISIBLE_BY'); - this.getSourceBlock().updateShape_(divisorInput); - }); -}; - -Extensions.registerMutator( - 'math_is_divisibleby_mutator', IS_DIVISIBLEBY_MUTATOR_MIXIN, - IS_DIVISIBLE_MUTATOR_EXTENSION); - -// Update the tooltip of 'math_change' block to reference the variable. -Extensions.register( - 'math_change_tooltip', - Extensions.buildTooltipWithFieldText('%{BKY_MATH_CHANGE_TOOLTIP}', 'VAR')); - -/** - * Mixin with mutator methods to support alternate output based if the - * 'math_on_list' block uses the 'MODE' operation. - * @mixin - * @augments Block - * @package - * @readonly - */ -const LIST_MODES_MUTATOR_MIXIN = { - /** - * Modify this block to have the correct output type. - * @param {string} newOp Either 'MODE' or some op than returns a number. - * @private - * @this {Block} - */ - updateType_: function(newOp) { - if (newOp === 'MODE') { - this.outputConnection.setCheck('Array'); - } else { - this.outputConnection.setCheck('Number'); - } - }, - /** - * Create XML to represent the output type. - * Backwards compatible serialization implementation. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - container.setAttribute('op', this.getFieldValue('OP')); - return container; - }, - /** - * Parse XML to restore the output type. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - this.updateType_(xmlElement.getAttribute('op')); - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. -}; - -/** - * Extension to 'math_on_list' blocks that allows support of - * modes operation (outputs a list of numbers). - * @this {Block} - * @package - */ -const LIST_MODES_MUTATOR_EXTENSION = function() { - this.getField('OP').setValidator(function(newOp) { - this.updateType_(newOp); - }.bind(this)); -}; - -Extensions.registerMutator( - 'math_modes_of_list_mutator', LIST_MODES_MUTATOR_MIXIN, - LIST_MODES_MUTATOR_EXTENSION); - -// Register provided blocks. -defineBlocks(blocks); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Math blocks for Blockly. + * @suppress {checkTypes} + */ +'use strict'; + +goog.module('Blockly.libraryBlocks.math'); + +const Extensions = goog.require('Blockly.Extensions'); +// N.B.: Blockly.FieldDropdown needed for type AND side-effects. +/* eslint-disable-next-line no-unused-vars */ +const FieldDropdown = goog.require('Blockly.FieldDropdown'); +const xmlUtils = goog.require('Blockly.utils.xml'); +/* eslint-disable-next-line no-unused-vars */ +const {Block} = goog.requireType('Blockly.Block'); +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); +const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldLabel'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldNumber'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldVariable'); + + +/** + * A dictionary of the block definitions provided by this module. + * @type {!Object} + */ +const blocks = createBlockDefinitionsFromJsonArray([ + // Block for numeric value. + { + 'type': 'math_number', + 'message0': '%1', + 'args0': [{ + 'type': 'field_number', + 'name': 'NUM', + 'value': 0, + }], + 'output': 'Number', + 'helpUrl': '%{BKY_MATH_NUMBER_HELPURL}', + 'style': 'math_blocks', + 'tooltip': '%{BKY_MATH_NUMBER_TOOLTIP}', + 'extensions': ['parent_tooltip_when_inline'], + }, + + // Block for basic arithmetic operator. + { + 'type': 'math_arithmetic', + 'message0': '%1 %2 %3', + 'args0': [ + { + 'type': 'input_value', + 'name': 'A', + 'check': 'Number', + }, + { + 'type': 'field_dropdown', + 'name': 'OP', + 'options': [ + ['%{BKY_MATH_ADDITION_SYMBOL}', 'ADD'], + ['%{BKY_MATH_SUBTRACTION_SYMBOL}', 'MINUS'], + ['%{BKY_MATH_MULTIPLICATION_SYMBOL}', 'MULTIPLY'], + ['%{BKY_MATH_DIVISION_SYMBOL}', 'DIVIDE'], + ['%{BKY_MATH_POWER_SYMBOL}', 'POWER'], + ], + }, + { + 'type': 'input_value', + 'name': 'B', + 'check': 'Number', + }, + ], + 'inputsInline': true, + 'output': 'Number', + 'style': 'math_blocks', + 'helpUrl': '%{BKY_MATH_ARITHMETIC_HELPURL}', + 'extensions': ['math_op_tooltip'], + }, + + // Block for advanced math operators with single operand. + { + 'type': 'math_single', + 'message0': '%1 %2', + 'args0': [ + { + 'type': 'field_dropdown', + 'name': 'OP', + 'options': [ + ['%{BKY_MATH_SINGLE_OP_ROOT}', 'ROOT'], + ['%{BKY_MATH_SINGLE_OP_ABSOLUTE}', 'ABS'], + ['-', 'NEG'], + ['ln', 'LN'], + ['log10', 'LOG10'], + ['e^', 'EXP'], + ['10^', 'POW10'], + ], + }, + { + 'type': 'input_value', + 'name': 'NUM', + 'check': 'Number', + }, + ], + 'output': 'Number', + 'style': 'math_blocks', + 'helpUrl': '%{BKY_MATH_SINGLE_HELPURL}', + 'extensions': ['math_op_tooltip'], + }, + + // Block for trigonometry operators. + { + 'type': 'math_trig', + 'message0': '%1 %2', + 'args0': [ + { + 'type': 'field_dropdown', + 'name': 'OP', + 'options': [ + ['%{BKY_MATH_TRIG_SIN}', 'SIN'], + ['%{BKY_MATH_TRIG_COS}', 'COS'], + ['%{BKY_MATH_TRIG_TAN}', 'TAN'], + ['%{BKY_MATH_TRIG_ASIN}', 'ASIN'], + ['%{BKY_MATH_TRIG_ACOS}', 'ACOS'], + ['%{BKY_MATH_TRIG_ATAN}', 'ATAN'], + ], + }, + { + 'type': 'input_value', + 'name': 'NUM', + 'check': 'Number', + }, + ], + 'output': 'Number', + 'style': 'math_blocks', + 'helpUrl': '%{BKY_MATH_TRIG_HELPURL}', + 'extensions': ['math_op_tooltip'], + }, + + // Block for constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. + { + 'type': 'math_constant', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_dropdown', + 'name': 'CONSTANT', + 'options': [ + ['\u03c0', 'PI'], + ['e', 'E'], + ['\u03c6', 'GOLDEN_RATIO'], + ['sqrt(2)', 'SQRT2'], + ['sqrt(\u00bd)', 'SQRT1_2'], + ['\u221e', 'INFINITY'], + ], + }, + ], + 'output': 'Number', + 'style': 'math_blocks', + 'tooltip': '%{BKY_MATH_CONSTANT_TOOLTIP}', + 'helpUrl': '%{BKY_MATH_CONSTANT_HELPURL}', + }, + + // Block for checking if a number is even, odd, prime, whole, positive, + // negative or if it is divisible by certain number. + { + 'type': 'math_number_property', + 'message0': '%1 %2', + 'args0': [ + { + 'type': 'input_value', + 'name': 'NUMBER_TO_CHECK', + 'check': 'Number', + }, + { + 'type': 'field_dropdown', + 'name': 'PROPERTY', + 'options': [ + ['%{BKY_MATH_IS_EVEN}', 'EVEN'], + ['%{BKY_MATH_IS_ODD}', 'ODD'], + ['%{BKY_MATH_IS_PRIME}', 'PRIME'], + ['%{BKY_MATH_IS_WHOLE}', 'WHOLE'], + ['%{BKY_MATH_IS_POSITIVE}', 'POSITIVE'], + ['%{BKY_MATH_IS_NEGATIVE}', 'NEGATIVE'], + ['%{BKY_MATH_IS_DIVISIBLE_BY}', 'DIVISIBLE_BY'], + ], + }, + ], + 'inputsInline': true, + 'output': 'Boolean', + 'style': 'math_blocks', + 'tooltip': '%{BKY_MATH_IS_TOOLTIP}', + 'mutator': 'math_is_divisibleby_mutator', + }, + + // Block for adding to a variable in place. + { + 'type': 'math_change', + 'message0': '%{BKY_MATH_CHANGE_TITLE}', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': '%{BKY_MATH_CHANGE_TITLE_ITEM}', + }, + { + 'type': 'input_value', + 'name': 'DELTA', + 'check': 'Number', + }, + ], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'variable_blocks', + 'helpUrl': '%{BKY_MATH_CHANGE_HELPURL}', + 'extensions': ['math_change_tooltip'], + }, + + // Block for rounding functions. + { + 'type': 'math_round', + 'message0': '%1 %2', + 'args0': [ + { + 'type': 'field_dropdown', + 'name': 'OP', + 'options': [ + ['%{BKY_MATH_ROUND_OPERATOR_ROUND}', 'ROUND'], + ['%{BKY_MATH_ROUND_OPERATOR_ROUNDUP}', 'ROUNDUP'], + ['%{BKY_MATH_ROUND_OPERATOR_ROUNDDOWN}', 'ROUNDDOWN'], + ], + }, + { + 'type': 'input_value', + 'name': 'NUM', + 'check': 'Number', + }, + ], + 'output': 'Number', + 'style': 'math_blocks', + 'helpUrl': '%{BKY_MATH_ROUND_HELPURL}', + 'tooltip': '%{BKY_MATH_ROUND_TOOLTIP}', + }, + + // Block for evaluating a list of numbers to return sum, average, min, max, + // etc. Some functions also work on text (min, max, mode, median). + { + 'type': 'math_on_list', + 'message0': '%1 %2', + 'args0': [ + { + 'type': 'field_dropdown', + 'name': 'OP', + 'options': [ + ['%{BKY_MATH_ONLIST_OPERATOR_SUM}', 'SUM'], + ['%{BKY_MATH_ONLIST_OPERATOR_MIN}', 'MIN'], + ['%{BKY_MATH_ONLIST_OPERATOR_MAX}', 'MAX'], + ['%{BKY_MATH_ONLIST_OPERATOR_AVERAGE}', 'AVERAGE'], + ['%{BKY_MATH_ONLIST_OPERATOR_MEDIAN}', 'MEDIAN'], + ['%{BKY_MATH_ONLIST_OPERATOR_MODE}', 'MODE'], + ['%{BKY_MATH_ONLIST_OPERATOR_STD_DEV}', 'STD_DEV'], + ['%{BKY_MATH_ONLIST_OPERATOR_RANDOM}', 'RANDOM'], + ], + }, + { + 'type': 'input_value', + 'name': 'LIST', + 'check': 'Array', + }, + ], + 'output': 'Number', + 'style': 'math_blocks', + 'helpUrl': '%{BKY_MATH_ONLIST_HELPURL}', + 'mutator': 'math_modes_of_list_mutator', + 'extensions': ['math_op_tooltip'], + }, + + // Block for remainder of a division. + { + 'type': 'math_modulo', + 'message0': '%{BKY_MATH_MODULO_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'DIVIDEND', + 'check': 'Number', + }, + { + 'type': 'input_value', + 'name': 'DIVISOR', + 'check': 'Number', + }, + ], + 'inputsInline': true, + 'output': 'Number', + 'style': 'math_blocks', + 'tooltip': '%{BKY_MATH_MODULO_TOOLTIP}', + 'helpUrl': '%{BKY_MATH_MODULO_HELPURL}', + }, + + // Block for constraining a number between two limits. + { + 'type': 'math_constrain', + 'message0': '%{BKY_MATH_CONSTRAIN_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'VALUE', + 'check': 'Number', + }, + { + 'type': 'input_value', + 'name': 'LOW', + 'check': 'Number', + }, + { + 'type': 'input_value', + 'name': 'HIGH', + 'check': 'Number', + }, + ], + 'inputsInline': true, + 'output': 'Number', + 'style': 'math_blocks', + 'tooltip': '%{BKY_MATH_CONSTRAIN_TOOLTIP}', + 'helpUrl': '%{BKY_MATH_CONSTRAIN_HELPURL}', + }, + + // Block for random integer between [X] and [Y]. + { + 'type': 'math_random_int', + 'message0': '%{BKY_MATH_RANDOM_INT_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'FROM', + 'check': 'Number', + }, + { + 'type': 'input_value', + 'name': 'TO', + 'check': 'Number', + }, + ], + 'inputsInline': true, + 'output': 'Number', + 'style': 'math_blocks', + 'tooltip': '%{BKY_MATH_RANDOM_INT_TOOLTIP}', + 'helpUrl': '%{BKY_MATH_RANDOM_INT_HELPURL}', + }, + + // Block for random integer between [X] and [Y]. + { + 'type': 'math_random_float', + 'message0': '%{BKY_MATH_RANDOM_FLOAT_TITLE_RANDOM}', + 'output': 'Number', + 'style': 'math_blocks', + 'tooltip': '%{BKY_MATH_RANDOM_FLOAT_TOOLTIP}', + 'helpUrl': '%{BKY_MATH_RANDOM_FLOAT_HELPURL}', + }, + + // Block for calculating atan2 of [X] and [Y]. + { + 'type': 'math_atan2', + 'message0': '%{BKY_MATH_ATAN2_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'X', + 'check': 'Number', + }, + { + 'type': 'input_value', + 'name': 'Y', + 'check': 'Number', + }, + ], + 'inputsInline': true, + 'output': 'Number', + 'style': 'math_blocks', + 'tooltip': '%{BKY_MATH_ATAN2_TOOLTIP}', + 'helpUrl': '%{BKY_MATH_ATAN2_HELPURL}', + }, +]); +exports.blocks = blocks; + +/** + * Mapping of math block OP value to tooltip message for blocks + * math_arithmetic, math_simple, math_trig, and math_on_lists. + * @see {Extensions#buildTooltipForDropdown} + * @package + * @readonly + */ +const TOOLTIPS_BY_OP = { + // math_arithmetic + 'ADD': '%{BKY_MATH_ARITHMETIC_TOOLTIP_ADD}', + 'MINUS': '%{BKY_MATH_ARITHMETIC_TOOLTIP_MINUS}', + 'MULTIPLY': '%{BKY_MATH_ARITHMETIC_TOOLTIP_MULTIPLY}', + 'DIVIDE': '%{BKY_MATH_ARITHMETIC_TOOLTIP_DIVIDE}', + 'POWER': '%{BKY_MATH_ARITHMETIC_TOOLTIP_POWER}', + + // math_simple + 'ROOT': '%{BKY_MATH_SINGLE_TOOLTIP_ROOT}', + 'ABS': '%{BKY_MATH_SINGLE_TOOLTIP_ABS}', + 'NEG': '%{BKY_MATH_SINGLE_TOOLTIP_NEG}', + 'LN': '%{BKY_MATH_SINGLE_TOOLTIP_LN}', + 'LOG10': '%{BKY_MATH_SINGLE_TOOLTIP_LOG10}', + 'EXP': '%{BKY_MATH_SINGLE_TOOLTIP_EXP}', + 'POW10': '%{BKY_MATH_SINGLE_TOOLTIP_POW10}', + + // math_trig + 'SIN': '%{BKY_MATH_TRIG_TOOLTIP_SIN}', + 'COS': '%{BKY_MATH_TRIG_TOOLTIP_COS}', + 'TAN': '%{BKY_MATH_TRIG_TOOLTIP_TAN}', + 'ASIN': '%{BKY_MATH_TRIG_TOOLTIP_ASIN}', + 'ACOS': '%{BKY_MATH_TRIG_TOOLTIP_ACOS}', + 'ATAN': '%{BKY_MATH_TRIG_TOOLTIP_ATAN}', + + // math_on_lists + 'SUM': '%{BKY_MATH_ONLIST_TOOLTIP_SUM}', + 'MIN': '%{BKY_MATH_ONLIST_TOOLTIP_MIN}', + 'MAX': '%{BKY_MATH_ONLIST_TOOLTIP_MAX}', + 'AVERAGE': '%{BKY_MATH_ONLIST_TOOLTIP_AVERAGE}', + 'MEDIAN': '%{BKY_MATH_ONLIST_TOOLTIP_MEDIAN}', + 'MODE': '%{BKY_MATH_ONLIST_TOOLTIP_MODE}', + 'STD_DEV': '%{BKY_MATH_ONLIST_TOOLTIP_STD_DEV}', + 'RANDOM': '%{BKY_MATH_ONLIST_TOOLTIP_RANDOM}', +}; + +Extensions.register( + 'math_op_tooltip', + Extensions.buildTooltipForDropdown('OP', TOOLTIPS_BY_OP)); + + +/** + * Mixin for mutator functions in the 'math_is_divisibleby_mutator' + * extension. + * @mixin + * @augments Block + * @package + */ +const IS_DIVISIBLEBY_MUTATOR_MIXIN = { + /** + * Create XML to represent whether the 'divisorInput' should be present. + * Backwards compatible serialization implementation. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + const divisorInput = (this.getFieldValue('PROPERTY') === 'DIVISIBLE_BY'); + container.setAttribute('divisor_input', divisorInput); + return container; + }, + /** + * Parse XML to restore the 'divisorInput'. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + const divisorInput = (xmlElement.getAttribute('divisor_input') === 'true'); + this.updateShape_(divisorInput); + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this object is already encoded in the + // dropdown values. + // XML hooks are kept for backwards compatibility. + + /** + * Modify this block to have (or not have) an input for 'is divisible by'. + * @param {boolean} divisorInput True if this block has a divisor input. + * @private + * @this {Block} + */ + updateShape_: function(divisorInput) { + // Add or remove a Value Input. + const inputExists = this.getInput('DIVISOR'); + if (divisorInput) { + if (!inputExists) { + this.appendValueInput('DIVISOR').setCheck('Number'); + } + } else if (inputExists) { + this.removeInput('DIVISOR'); + } + }, +}; + +/** + * 'math_is_divisibleby_mutator' extension to the 'math_property' block that + * can update the block shape (add/remove divisor input) based on whether + * property is "divisible by". + * @this {Block} + * @package + */ +const IS_DIVISIBLE_MUTATOR_EXTENSION = function() { + this.getField('PROPERTY') + .setValidator( + /** + * @this {FieldDropdown} + * @param {*} option The selected dropdown option. + */ + function(option) { + const divisorInput = (option === 'DIVISIBLE_BY'); + this.getSourceBlock().updateShape_(divisorInput); + }); +}; + +Extensions.registerMutator( + 'math_is_divisibleby_mutator', IS_DIVISIBLEBY_MUTATOR_MIXIN, + IS_DIVISIBLE_MUTATOR_EXTENSION); + +// Update the tooltip of 'math_change' block to reference the variable. +Extensions.register( + 'math_change_tooltip', + Extensions.buildTooltipWithFieldText('%{BKY_MATH_CHANGE_TOOLTIP}', 'VAR')); + +/** + * Mixin with mutator methods to support alternate output based if the + * 'math_on_list' block uses the 'MODE' operation. + * @mixin + * @augments Block + * @package + * @readonly + */ +const LIST_MODES_MUTATOR_MIXIN = { + /** + * Modify this block to have the correct output type. + * @param {string} newOp Either 'MODE' or some op than returns a number. + * @private + * @this {Block} + */ + updateType_: function(newOp) { + if (newOp === 'MODE') { + this.outputConnection.setCheck('Array'); + } else { + this.outputConnection.setCheck('Number'); + } + }, + /** + * Create XML to represent the output type. + * Backwards compatible serialization implementation. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + container.setAttribute('op', this.getFieldValue('OP')); + return container; + }, + /** + * Parse XML to restore the output type. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + this.updateType_(xmlElement.getAttribute('op')); + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this object is already encoded in the + // dropdown values. + // XML hooks are kept for backwards compatibility. +}; + +/** + * Extension to 'math_on_list' blocks that allows support of + * modes operation (outputs a list of numbers). + * @this {Block} + * @package + */ +const LIST_MODES_MUTATOR_EXTENSION = function() { + this.getField('OP').setValidator(function(newOp) { + this.updateType_(newOp); + }.bind(this)); +}; + +Extensions.registerMutator( + 'math_modes_of_list_mutator', LIST_MODES_MUTATOR_MIXIN, + LIST_MODES_MUTATOR_EXTENSION); + +// Register provided blocks. +defineBlocks(blocks); diff --git a/blocks/procedures.js b/blocks/procedures.js index 21afdb7fa38..330b3787a1c 100644 --- a/blocks/procedures.js +++ b/blocks/procedures.js @@ -1,1194 +1,1232 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Procedure blocks for Blockly. - * @suppress {checkTypes|visibility} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks.procedures'); - -/* eslint-disable-next-line no-unused-vars */ -const AbstractEvent = goog.requireType('Blockly.Events.Abstract'); -const ContextMenu = goog.require('Blockly.ContextMenu'); -const Events = goog.require('Blockly.Events'); -const Procedures = goog.require('Blockly.Procedures'); -const Variables = goog.require('Blockly.Variables'); -const Xml = goog.require('Blockly.Xml'); -const xmlUtils = goog.require('Blockly.utils.xml'); -const {Align} = goog.require('Blockly.Input'); -/* eslint-disable-next-line no-unused-vars */ -const {Block} = goog.requireType('Blockly.Block'); -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); -const {config} = goog.require('Blockly.config'); -/* eslint-disable-next-line no-unused-vars */ -const {FieldCheckbox} = goog.require('Blockly.FieldCheckbox'); -const {FieldLabel} = goog.require('Blockly.FieldLabel'); -const {FieldTextInput} = goog.require('Blockly.FieldTextInput'); -const {Msg} = goog.require('Blockly.Msg'); -const {Mutator} = goog.require('Blockly.Mutator'); -const {Names} = goog.require('Blockly.Names'); -/* eslint-disable-next-line no-unused-vars */ -const {VariableModel} = goog.requireType('Blockly.VariableModel'); -/* eslint-disable-next-line no-unused-vars */ -const {Workspace} = goog.requireType('Blockly.Workspace'); -const {defineBlocks} = goog.require('Blockly.common'); -/** @suppress {extraRequire} */ -goog.require('Blockly.Comment'); -/** @suppress {extraRequire} */ -goog.require('Blockly.Warning'); - - -/** - * A dictionary of the block definitions provided by this module. - * @type {!Object} - */ -const blocks = {}; -exports.blocks = blocks; - -/** - * Common properties for the procedure_defnoreturn and - * procedure_defreturn blocks. - */ -const PROCEDURE_DEF_COMMON = { - /** - * Add or remove the statement block from this function definition. - * @param {boolean} hasStatements True if a statement block is needed. - * @this {Block} - */ - setStatements_: function(hasStatements) { - if (this.hasStatements_ === hasStatements) { - return; - } - if (hasStatements) { - this.appendStatementInput('STACK').appendField( - Msg['PROCEDURES_DEFNORETURN_DO']); - if (this.getInput('RETURN')) { - this.moveInputBefore('STACK', 'RETURN'); - } - } else { - this.removeInput('STACK', true); - } - this.hasStatements_ = hasStatements; - }, - /** - * Update the display of parameters for this procedure definition block. - * @private - * @this {Block} - */ - updateParams_: function() { - // Merge the arguments into a human-readable list. - let paramString = ''; - if (this.arguments_.length) { - paramString = - Msg['PROCEDURES_BEFORE_PARAMS'] + ' ' + this.arguments_.join(', '); - } - // The params field is deterministic based on the mutation, - // no need to fire a change event. - Events.disable(); - try { - this.setFieldValue(paramString, 'PARAMS'); - } finally { - Events.enable(); - } - }, - /** - * Create XML to represent the argument inputs. - * Backwards compatible serialization implementation. - * @param {boolean=} opt_paramIds If true include the IDs of the parameter - * quarks. Used by Procedures.mutateCallers for reconnection. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function(opt_paramIds) { - const container = xmlUtils.createElement('mutation'); - if (opt_paramIds) { - container.setAttribute('name', this.getFieldValue('NAME')); - } - for (let i = 0; i < this.argumentVarModels_.length; i++) { - const parameter = xmlUtils.createElement('arg'); - const argModel = this.argumentVarModels_[i]; - parameter.setAttribute('name', argModel.name); - parameter.setAttribute('varid', argModel.getId()); - if (opt_paramIds && this.paramIds_) { - parameter.setAttribute('paramId', this.paramIds_[i]); - } - container.appendChild(parameter); - } - - // Save whether the statement input is visible. - if (!this.hasStatements_) { - container.setAttribute('statements', 'false'); - } - return container; - }, - /** - * Parse XML to restore the argument inputs. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - this.arguments_ = []; - this.argumentVarModels_ = []; - for (let i = 0, childNode; (childNode = xmlElement.childNodes[i]); i++) { - if (childNode.nodeName.toLowerCase() === 'arg') { - const varName = childNode.getAttribute('name'); - const varId = - childNode.getAttribute('varid') || childNode.getAttribute('varId'); - this.arguments_.push(varName); - const variable = Variables.getOrCreateVariablePackage( - this.workspace, varId, varName, ''); - if (variable !== null) { - this.argumentVarModels_.push(variable); - } else { - console.log( - 'Failed to create a variable with name ' + varName + - ', ignoring.'); - } - } - } - this.updateParams_(); - Procedures.mutateCallers(this); - - // Show or hide the statement input. - this.setStatements_(xmlElement.getAttribute('statements') !== 'false'); - }, - /** - * Returns the state of this block as a JSON serializable object. - * @return {?{params: (!Array<{name: string, id: string}>|undefined), - * hasStatements: (boolean|undefined)}} The state of this block, eg the - * parameters and statements. - */ - saveExtraState: function() { - if (!this.argumentVarModels_.length && this.hasStatements_) { - return null; - } - const state = Object.create(null); - if (this.argumentVarModels_.length) { - state['params'] = []; - for (let i = 0; i < this.argumentVarModels_.length; i++) { - state['params'].push({ - // We don't need to serialize the name, but just in case we decide - // to separate params from variables. - 'name': this.argumentVarModels_[i].name, - 'id': this.argumentVarModels_[i].getId(), - }); - } - } - if (!this.hasStatements_) { - state['hasStatements'] = false; - } - return state; - }, - /** - * Applies the given state to this block. - * @param {*} state The state to apply to this block, eg the parameters and - * statements. - */ - loadExtraState: function(state) { - this.arguments_ = []; - this.argumentVarModels_ = []; - if (state['params']) { - for (let i = 0; i < state['params'].length; i++) { - const param = state['params'][i]; - const variable = Variables.getOrCreateVariablePackage( - this.workspace, param['id'], param['name'], ''); - this.arguments_.push(variable.name); - this.argumentVarModels_.push(variable); - } - } - this.updateParams_(); - Procedures.mutateCallers(this); - this.setStatements_(state['hasStatements'] === false ? false : true); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Workspace} workspace Mutator's workspace. - * @return {!Block} Root block in mutator. - * @this {Block} - */ - decompose: function(workspace) { - /* - * Creates the following XML: - * - * - * - * arg1_name - * etc... - * - * - * - */ - - const containerBlockNode = xmlUtils.createElement('block'); - containerBlockNode.setAttribute('type', 'procedures_mutatorcontainer'); - const statementNode = xmlUtils.createElement('statement'); - statementNode.setAttribute('name', 'STACK'); - containerBlockNode.appendChild(statementNode); - - let node = statementNode; - for (let i = 0; i < this.arguments_.length; i++) { - const argBlockNode = xmlUtils.createElement('block'); - argBlockNode.setAttribute('type', 'procedures_mutatorarg'); - const fieldNode = xmlUtils.createElement('field'); - fieldNode.setAttribute('name', 'NAME'); - const argumentName = xmlUtils.createTextNode(this.arguments_[i]); - fieldNode.appendChild(argumentName); - argBlockNode.appendChild(fieldNode); - const nextNode = xmlUtils.createElement('next'); - argBlockNode.appendChild(nextNode); - - node.appendChild(argBlockNode); - node = nextNode; - } - - const containerBlock = Xml.domToBlock(containerBlockNode, workspace); - - if (this.type === 'procedures_defreturn') { - containerBlock.setFieldValue(this.hasStatements_, 'STATEMENTS'); - } else { - containerBlock.removeInput('STATEMENT_INPUT'); - } - - // Initialize procedure's callers with blank IDs. - Procedures.mutateCallers(this); - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Block} containerBlock Root block in mutator. - * @this {Block} - */ - compose: function(containerBlock) { - // Parameter list. - this.arguments_ = []; - this.paramIds_ = []; - this.argumentVarModels_ = []; - let paramBlock = containerBlock.getInputTargetBlock('STACK'); - while (paramBlock && !paramBlock.isInsertionMarker()) { - const varName = paramBlock.getFieldValue('NAME'); - this.arguments_.push(varName); - const variable = this.workspace.getVariable(varName, ''); - this.argumentVarModels_.push(variable); - - this.paramIds_.push(paramBlock.id); - paramBlock = - paramBlock.nextConnection && paramBlock.nextConnection.targetBlock(); - } - this.updateParams_(); - Procedures.mutateCallers(this); - - // Show/hide the statement input. - let hasStatements = containerBlock.getFieldValue('STATEMENTS'); - if (hasStatements !== null) { - hasStatements = hasStatements === 'TRUE'; - if (this.hasStatements_ !== hasStatements) { - if (hasStatements) { - this.setStatements_(true); - // Restore the stack, if one was saved. - Mutator.reconnect(this.statementConnection_, this, 'STACK'); - this.statementConnection_ = null; - } else { - // Save the stack, then disconnect it. - const stackConnection = this.getInput('STACK').connection; - this.statementConnection_ = stackConnection.targetConnection; - if (this.statementConnection_) { - const stackBlock = stackConnection.targetBlock(); - stackBlock.unplug(); - stackBlock.bumpNeighbours(); - } - this.setStatements_(false); - } - } - } - }, - /** - * Return all variables referenced by this block. - * @return {!Array} List of variable names. - * @this {Block} - */ - getVars: function() { - return this.arguments_; - }, - /** - * Return all variables referenced by this block. - * @return {!Array} List of variable models. - * @this {Block} - */ - getVarModels: function() { - return this.argumentVarModels_; - }, - /** - * Notification that a variable is renaming. - * If the ID matches one of this block's variables, rename it. - * @param {string} oldId ID of variable to rename. - * @param {string} newId ID of new variable. May be the same as oldId, but - * with an updated name. Guaranteed to be the same type as the old - * variable. - * @override - * @this {Block} - */ - renameVarById: function(oldId, newId) { - const oldVariable = this.workspace.getVariableById(oldId); - if (oldVariable.type !== '') { - // Procedure arguments always have the empty type. - return; - } - const oldName = oldVariable.name; - const newVar = this.workspace.getVariableById(newId); - - let change = false; - for (let i = 0; i < this.argumentVarModels_.length; i++) { - if (this.argumentVarModels_[i].getId() === oldId) { - this.arguments_[i] = newVar.name; - this.argumentVarModels_[i] = newVar; - change = true; - } - } - if (change) { - this.displayRenamedVar_(oldName, newVar.name); - Procedures.mutateCallers(this); - } - }, - /** - * Notification that a variable is renaming but keeping the same ID. If the - * variable is in use on this block, rerender to show the new name. - * @param {!VariableModel} variable The variable being renamed. - * @package - * @override - * @this {Block} - */ - updateVarName: function(variable) { - const newName = variable.name; - let change = false; - let oldName; - for (let i = 0; i < this.argumentVarModels_.length; i++) { - if (this.argumentVarModels_[i].getId() === variable.getId()) { - oldName = this.arguments_[i]; - this.arguments_[i] = newName; - change = true; - } - } - if (change) { - this.displayRenamedVar_(oldName, newName); - Procedures.mutateCallers(this); - } - }, - /** - * Update the display to reflect a newly renamed argument. - * @param {string} oldName The old display name of the argument. - * @param {string} newName The new display name of the argument. - * @private - * @this {Block} - */ - displayRenamedVar_: function(oldName, newName) { - this.updateParams_(); - // Update the mutator's variables if the mutator is open. - if (this.mutator && this.mutator.isVisible()) { - const blocks = this.mutator.workspace_.getAllBlocks(false); - for (let i = 0, block; (block = blocks[i]); i++) { - if (block.type === 'procedures_mutatorarg' && - Names.equals(oldName, block.getFieldValue('NAME'))) { - block.setFieldValue(newName, 'NAME'); - } - } - } - }, - /** - * Add custom menu options to this block's context menu. - * @param {!Array} options List of menu options to add to. - * @this {Block} - */ - customContextMenu: function(options) { - if (this.isInFlyout) { - return; - } - // Add option to create caller. - const option = {enabled: true}; - const name = this.getFieldValue('NAME'); - option.text = Msg['PROCEDURES_CREATE_DO'].replace('%1', name); - const xmlMutation = xmlUtils.createElement('mutation'); - xmlMutation.setAttribute('name', name); - for (let i = 0; i < this.arguments_.length; i++) { - const xmlArg = xmlUtils.createElement('arg'); - xmlArg.setAttribute('name', this.arguments_[i]); - xmlMutation.appendChild(xmlArg); - } - const xmlBlock = xmlUtils.createElement('block'); - xmlBlock.setAttribute('type', this.callType_); - xmlBlock.appendChild(xmlMutation); - option.callback = ContextMenu.callbackFactory(this, xmlBlock); - options.push(option); - - // Add options to create getters for each parameter. - if (!this.isCollapsed()) { - for (let i = 0; i < this.argumentVarModels_.length; i++) { - const argOption = {enabled: true}; - const argVar = this.argumentVarModels_[i]; - argOption.text = - Msg['VARIABLES_SET_CREATE_GET'].replace('%1', argVar.name); - - const argXmlField = Variables.generateVariableFieldDom(argVar); - const argXmlBlock = xmlUtils.createElement('block'); - argXmlBlock.setAttribute('type', 'variables_get'); - argXmlBlock.appendChild(argXmlField); - argOption.callback = ContextMenu.callbackFactory(this, argXmlBlock); - options.push(argOption); - } - } - }, -}; - -blocks['procedures_defnoreturn'] = { - ...PROCEDURE_DEF_COMMON, - /** - * Block for defining a procedure with no return value. - * @this {Block} - */ - init: function() { - const initName = Procedures.findLegalName('', this); - const nameField = new FieldTextInput(initName, Procedures.rename); - nameField.setSpellcheck(false); - this.appendDummyInput() - .appendField(Msg['PROCEDURES_DEFNORETURN_TITLE']) - .appendField(nameField, 'NAME') - .appendField('', 'PARAMS'); - this.setMutator(new Mutator(['procedures_mutatorarg'])); - if ((this.workspace.options.comments || - (this.workspace.options.parentWorkspace && - this.workspace.options.parentWorkspace.options.comments)) && - Msg['PROCEDURES_DEFNORETURN_COMMENT']) { - this.setCommentText(Msg['PROCEDURES_DEFNORETURN_COMMENT']); - } - this.setStyle('procedure_blocks'); - this.setTooltip(Msg['PROCEDURES_DEFNORETURN_TOOLTIP']); - this.setHelpUrl(Msg['PROCEDURES_DEFNORETURN_HELPURL']); - this.arguments_ = []; - this.argumentVarModels_ = []; - this.setStatements_(true); - this.statementConnection_ = null; - }, - /** - * Return the signature of this procedure definition. - * @return {!Array} Tuple containing three elements: - * - the name of the defined procedure, - * - a list of all its arguments, - * - that it DOES NOT have a return value. - * @this {Block} - */ - getProcedureDef: function() { - return [this.getFieldValue('NAME'), this.arguments_, false]; - }, - callType_: 'procedures_callnoreturn', -}; - -blocks['procedures_defreturn'] = { - ...PROCEDURE_DEF_COMMON, - /** - * Block for defining a procedure with a return value. - * @this {Block} - */ - init: function() { - const initName = Procedures.findLegalName('', this); - const nameField = new FieldTextInput(initName, Procedures.rename); - nameField.setSpellcheck(false); - this.appendDummyInput() - .appendField(Msg['PROCEDURES_DEFRETURN_TITLE']) - .appendField(nameField, 'NAME') - .appendField('', 'PARAMS'); - this.appendValueInput('RETURN') - .setAlign(Align.RIGHT) - .appendField(Msg['PROCEDURES_DEFRETURN_RETURN']); - this.setMutator(new Mutator(['procedures_mutatorarg'])); - if ((this.workspace.options.comments || - (this.workspace.options.parentWorkspace && - this.workspace.options.parentWorkspace.options.comments)) && - Msg['PROCEDURES_DEFRETURN_COMMENT']) { - this.setCommentText(Msg['PROCEDURES_DEFRETURN_COMMENT']); - } - this.setStyle('procedure_blocks'); - this.setTooltip(Msg['PROCEDURES_DEFRETURN_TOOLTIP']); - this.setHelpUrl(Msg['PROCEDURES_DEFRETURN_HELPURL']); - this.arguments_ = []; - this.argumentVarModels_ = []; - this.setStatements_(true); - this.statementConnection_ = null; - }, - /** - * Return the signature of this procedure definition. - * @return {!Array} Tuple containing three elements: - * - the name of the defined procedure, - * - a list of all its arguments, - * - that it DOES have a return value. - * @this {Block} - */ - getProcedureDef: function() { - return [this.getFieldValue('NAME'), this.arguments_, true]; - }, - callType_: 'procedures_callreturn', -}; - -blocks['procedures_mutatorcontainer'] = { - /** - * Mutator block for procedure container. - * @this {Block} - */ - init: function() { - this.appendDummyInput().appendField( - Msg['PROCEDURES_MUTATORCONTAINER_TITLE']); - this.appendStatementInput('STACK'); - this.appendDummyInput('STATEMENT_INPUT') - .appendField(Msg['PROCEDURES_ALLOW_STATEMENTS']) - .appendField(new FieldCheckbox('TRUE'), 'STATEMENTS'); - this.setStyle('procedure_blocks'); - this.setTooltip(Msg['PROCEDURES_MUTATORCONTAINER_TOOLTIP']); - this.contextMenu = false; - }, -}; - -blocks['procedures_mutatorarg'] = { - /** - * Mutator block for procedure argument. - * @this {Block} - */ - init: function() { - const field = new FieldTextInput(Procedures.DEFAULT_ARG, this.validator_); - // Hack: override showEditor to do just a little bit more work. - // We don't have a good place to hook into the start of a text edit. - field.oldShowEditorFn_ = field.showEditor_; - /** - * @this {FieldTextInput} - */ - const newShowEditorFn = function() { - this.createdVariables_ = []; - this.oldShowEditorFn_(); - }; - field.showEditor_ = newShowEditorFn; - - this.appendDummyInput() - .appendField(Msg['PROCEDURES_MUTATORARG_TITLE']) - .appendField(field, 'NAME'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setStyle('procedure_blocks'); - this.setTooltip(Msg['PROCEDURES_MUTATORARG_TOOLTIP']); - this.contextMenu = false; - - // Create the default variable when we drag the block in from the flyout. - // Have to do this after installing the field on the block. - field.onFinishEditing_ = this.deleteIntermediateVars_; - // Create an empty list so onFinishEditing_ has something to look at, even - // though the editor was never opened. - field.createdVariables_ = []; - field.onFinishEditing_('x'); - }, - - /** - * Obtain a valid name for the procedure argument. Create a variable if - * necessary. - * Merge runs of whitespace. Strip leading and trailing whitespace. - * Beyond this, all names are legal. - * @param {string} varName User-supplied name. - * @return {?string} Valid name, or null if a name was not specified. - * @private - * @this {FieldTextInput} - */ - validator_: function(varName) { - const sourceBlock = this.getSourceBlock(); - const outerWs = Mutator.findParentWs(sourceBlock.workspace); - varName = varName.replace(/[\s\xa0]+/g, ' ').replace(/^ | $/g, ''); - if (!varName) { - return null; - } - - // Prevents duplicate parameter names in functions - const workspace = - sourceBlock.workspace.targetWorkspace || sourceBlock.workspace; - const blocks = workspace.getAllBlocks(false); - const caselessName = varName.toLowerCase(); - for (let i = 0; i < blocks.length; i++) { - if (blocks[i].id === this.getSourceBlock().id) { - continue; - } - // Other blocks values may not be set yet when this is loaded. - const otherVar = blocks[i].getFieldValue('NAME'); - if (otherVar && otherVar.toLowerCase() === caselessName) { - return null; - } - } - - // Don't create variables for arg blocks that - // only exist in the mutator's flyout. - if (sourceBlock.isInFlyout) { - return varName; - } - - let model = outerWs.getVariable(varName, ''); - if (model && model.name !== varName) { - // Rename the variable (case change) - outerWs.renameVariableById(model.getId(), varName); - } - if (!model) { - model = outerWs.createVariable(varName, ''); - if (model && this.createdVariables_) { - this.createdVariables_.push(model); - } - } - return varName; - }, - - /** - * Called when focusing away from the text field. - * Deletes all variables that were created as the user typed their intended - * variable name. - * @param {string} newText The new variable name. - * @private - * @this {FieldTextInput} - */ - deleteIntermediateVars_: function(newText) { - const outerWs = Mutator.findParentWs(this.getSourceBlock().workspace); - if (!outerWs) { - return; - } - for (let i = 0; i < this.createdVariables_.length; i++) { - const model = this.createdVariables_[i]; - if (model.name !== newText) { - outerWs.deleteVariableById(model.getId()); - } - } - }, -}; - -/** - * Common properties for the procedure_callnoreturn and - * procedure_callreturn blocks. - */ -const PROCEDURE_CALL_COMMON = { - /** - * Returns the name of the procedure this block calls. - * @return {string} Procedure name. - * @this {Block} - */ - getProcedureCall: function() { - // The NAME field is guaranteed to exist, null will never be returned. - return /** @type {string} */ (this.getFieldValue('NAME')); - }, - /** - * Notification that a procedure is renaming. - * If the name matches this block's procedure, rename it. - * @param {string} oldName Previous name of procedure. - * @param {string} newName Renamed procedure. - * @this {Block} - */ - renameProcedure: function(oldName, newName) { - if (Names.equals(oldName, this.getProcedureCall())) { - this.setFieldValue(newName, 'NAME'); - const baseMsg = this.outputConnection ? - Msg['PROCEDURES_CALLRETURN_TOOLTIP'] : - Msg['PROCEDURES_CALLNORETURN_TOOLTIP']; - this.setTooltip(baseMsg.replace('%1', newName)); - } - }, - /** - * Notification that the procedure's parameters have changed. - * @param {!Array} paramNames New param names, e.g. ['x', 'y', 'z']. - * @param {!Array} paramIds IDs of params (consistent for each - * parameter through the life of a mutator, regardless of param renaming), - * e.g. ['piua', 'f8b_', 'oi.o']. - * @private - * @this {Block} - */ - setProcedureParameters_: function(paramNames, paramIds) { - // Data structures: - // this.arguments = ['x', 'y'] - // Existing param names. - // this.quarkConnections_ {piua: null, f8b_: Connection} - // Look-up of paramIds to connections plugged into the call block. - // this.quarkIds_ = ['piua', 'f8b_'] - // Existing param IDs. - // Note that quarkConnections_ may include IDs that no longer exist, but - // which might reappear if a param is reattached in the mutator. - const defBlock = - Procedures.getDefinition(this.getProcedureCall(), this.workspace); - const mutatorOpen = - defBlock && defBlock.mutator && defBlock.mutator.isVisible(); - if (!mutatorOpen) { - this.quarkConnections_ = {}; - this.quarkIds_ = null; - } else { - // fix #6091 - this call could cause an error when outside if-else - // expanding block while mutating prevents another error (ancient fix) - this.setCollapsed(false); - } - // Test arguments (arrays of strings) for changes. '\n' is not a valid - // argument name character, so it is a valid delimiter here. - if (paramNames.join('\n') === this.arguments_.join('\n')) { - // No change. - this.quarkIds_ = paramIds; - return; - } - if (paramIds.length !== paramNames.length) { - throw RangeError('paramNames and paramIds must be the same length.'); - } - if (!this.quarkIds_) { - // Initialize tracking for this block. - this.quarkConnections_ = {}; - this.quarkIds_ = []; - } - // Switch off rendering while the block is rebuilt. - const savedRendered = this.rendered; - this.rendered = false; - // Update the quarkConnections_ with existing connections. - for (let i = 0; i < this.arguments_.length; i++) { - const input = this.getInput('ARG' + i); - if (input) { - const connection = input.connection.targetConnection; - this.quarkConnections_[this.quarkIds_[i]] = connection; - if (mutatorOpen && connection && - paramIds.indexOf(this.quarkIds_[i]) === -1) { - // This connection should no longer be attached to this block. - connection.disconnect(); - connection.getSourceBlock().bumpNeighbours(); - } - } - } - // Rebuild the block's arguments. - this.arguments_ = [].concat(paramNames); - // And rebuild the argument model list. - this.argumentVarModels_ = []; - for (let i = 0; i < this.arguments_.length; i++) { - const variable = Variables.getOrCreateVariablePackage( - this.workspace, null, this.arguments_[i], ''); - this.argumentVarModels_.push(variable); - } - - this.updateShape_(); - this.quarkIds_ = paramIds; - // Reconnect any child blocks. - if (this.quarkIds_) { - for (let i = 0; i < this.arguments_.length; i++) { - const quarkId = this.quarkIds_[i]; - if (quarkId in this.quarkConnections_) { - const connection = this.quarkConnections_[quarkId]; - if (!Mutator.reconnect(connection, this, 'ARG' + i)) { - // Block no longer exists or has been attached elsewhere. - delete this.quarkConnections_[quarkId]; - } - } - } - } - // Restore rendering and show the changes. - this.rendered = savedRendered; - if (this.rendered) { - this.render(); - } - }, - /** - * Modify this block to have the correct number of arguments. - * @private - * @this {Block} - */ - updateShape_: function() { - for (let i = 0; i < this.arguments_.length; i++) { - const argField = this.getField('ARGNAME' + i); - if (argField) { - // Ensure argument name is up to date. - // The argument name field is deterministic based on the mutation, - // no need to fire a change event. - Events.disable(); - try { - argField.setValue(this.arguments_[i]); - } finally { - Events.enable(); - } - } else { - // Add new input. - const newField = new FieldLabel(this.arguments_[i]); - const input = this.appendValueInput('ARG' + i) - .setAlign(Align.RIGHT) - .appendField(newField, 'ARGNAME' + i); - input.init(); - } - } - // Remove deleted inputs. - for (let i = this.arguments_.length; this.getInput('ARG' + i); i++) { - this.removeInput('ARG' + i); - } - // Add 'with:' if there are parameters, remove otherwise. - const topRow = this.getInput('TOPROW'); - if (topRow) { - if (this.arguments_.length) { - if (!this.getField('WITH')) { - topRow.appendField(Msg['PROCEDURES_CALL_BEFORE_PARAMS'], 'WITH'); - topRow.init(); - } - } else { - if (this.getField('WITH')) { - topRow.removeField('WITH'); - } - } - } - }, - /** - * Create XML to represent the (non-editable) name and arguments. - * Backwards compatible serialization implementation. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - container.setAttribute('name', this.getProcedureCall()); - for (let i = 0; i < this.arguments_.length; i++) { - const parameter = xmlUtils.createElement('arg'); - parameter.setAttribute('name', this.arguments_[i]); - container.appendChild(parameter); - } - return container; - }, - /** - * Parse XML to restore the (non-editable) name and parameters. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - const name = xmlElement.getAttribute('name'); - this.renameProcedure(this.getProcedureCall(), name); - const args = []; - const paramIds = []; - for (let i = 0, childNode; (childNode = xmlElement.childNodes[i]); i++) { - if (childNode.nodeName.toLowerCase() === 'arg') { - args.push(childNode.getAttribute('name')); - paramIds.push(childNode.getAttribute('paramId')); - } - } - this.setProcedureParameters_(args, paramIds); - }, - /** - * Returns the state of this block as a JSON serializable object. - * @return {{name: string, params:(!Array|undefined)}} The state of - * this block, ie the params and procedure name. - */ - saveExtraState: function() { - const state = Object.create(null); - state['name'] = this.getProcedureCall(); - if (this.arguments_.length) { - state['params'] = this.arguments_; - } - return state; - }, - /** - * Applies the given state to this block. - * @param {*} state The state to apply to this block, ie the params and - * procedure name. - */ - loadExtraState: function(state) { - this.renameProcedure(this.getProcedureCall(), state['name']); - const params = state['params']; - if (params) { - const ids = []; - ids.length = params.length; - ids.fill(null); - this.setProcedureParameters_(params, ids); - } - }, - /** - * Return all variables referenced by this block. - * @return {!Array} List of variable names. - * @this {Block} - */ - getVars: function() { - return this.arguments_; - }, - /** - * Return all variables referenced by this block. - * @return {!Array} List of variable models. - * @this {Block} - */ - getVarModels: function() { - return this.argumentVarModels_; - }, - /** - * Procedure calls cannot exist without the corresponding procedure - * definition. Enforce this link whenever an event is fired. - * @param {!AbstractEvent} event Change event. - * @this {Block} - */ - onchange: function(event) { - if (!this.workspace || this.workspace.isFlyout) { - // Block is deleted or is in a flyout. - return; - } - if (!event.recordUndo) { - // Events not generated by user. Skip handling. - return; - } - if (event.type === Events.BLOCK_CREATE && - event.ids.indexOf(this.id) !== -1) { - // Look for the case where a procedure call was created (usually through - // paste) and there is no matching definition. In this case, create - // an empty definition block with the correct signature. - const name = this.getProcedureCall(); - let def = Procedures.getDefinition(name, this.workspace); - if (def && - (def.type !== this.defType_ || - JSON.stringify(def.getVars()) !== JSON.stringify(this.arguments_))) { - // The signatures don't match. - def = null; - } - if (!def) { - Events.setGroup(event.group); - /** - * Create matching definition block. - * - * - * - * - * - * test - * - * - */ - const xml = xmlUtils.createElement('xml'); - const block = xmlUtils.createElement('block'); - block.setAttribute('type', this.defType_); - const xy = this.getRelativeToSurfaceXY(); - const x = xy.x + config.snapRadius * (this.RTL ? -1 : 1); - const y = xy.y + config.snapRadius * 2; - block.setAttribute('x', x); - block.setAttribute('y', y); - const mutation = this.mutationToDom(); - block.appendChild(mutation); - const field = xmlUtils.createElement('field'); - field.setAttribute('name', 'NAME'); - const callName = this.getProcedureCall(); - const newName = Procedures.findLegalName(callName, this); - if (callName !== newName) { - this.renameProcedure(callName, newName); - } - field.appendChild(xmlUtils.createTextNode(callName)); - block.appendChild(field); - xml.appendChild(block); - Xml.domToWorkspace(xml, this.workspace); - Events.setGroup(false); - } - } else if (event.type === Events.BLOCK_DELETE) { - // Look for the case where a procedure definition has been deleted, - // leaving this block (a procedure call) orphaned. In this case, delete - // the orphan. - const name = this.getProcedureCall(); - const def = Procedures.getDefinition(name, this.workspace); - if (!def) { - Events.setGroup(event.group); - this.dispose(true); - Events.setGroup(false); - } - } else if (event.type === Events.CHANGE && event.element === 'disabled') { - const name = this.getProcedureCall(); - const def = Procedures.getDefinition(name, this.workspace); - if (def && def.id === event.blockId) { - // in most cases the old group should be '' - const oldGroup = Events.getGroup(); - if (oldGroup) { - // This should only be possible programmatically and may indicate a - // problem with event grouping. If you see this message please - // investigate. If the use ends up being valid we may need to reorder - // events in the undo stack. - console.log( - 'Saw an existing group while responding to a definition change'); - } - Events.setGroup(event.group); - if (event.newValue) { - this.previousEnabledState_ = this.isEnabled(); - this.setEnabled(false); - } else { - this.setEnabled(this.previousEnabledState_); - } - Events.setGroup(oldGroup); - } - } - }, - /** - * Add menu option to find the definition block for this call. - * @param {!Array} options List of menu options to add to. - * @this {Block} - */ - customContextMenu: function(options) { - if (!this.workspace.isMovable()) { - // If we center on the block and the workspace isn't movable we could - // loose blocks at the edges of the workspace. - return; - } - - const option = {enabled: true}; - option.text = Msg['PROCEDURES_HIGHLIGHT_DEF']; - const name = this.getProcedureCall(); - const workspace = this.workspace; - option.callback = function() { - const def = Procedures.getDefinition(name, workspace); - if (def) { - workspace.centerOnBlock(def.id); - def.select(); - } - }; - options.push(option); - }, -}; - -blocks['procedures_callnoreturn'] = { - ...PROCEDURE_CALL_COMMON, - /** - * Block for calling a procedure with no return value. - * @this {Block} - */ - init: function() { - this.appendDummyInput('TOPROW').appendField('', 'NAME'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setStyle('procedure_blocks'); - // Tooltip is set in renameProcedure. - this.setHelpUrl(Msg['PROCEDURES_CALLNORETURN_HELPURL']); - this.arguments_ = []; - this.argumentVarModels_ = []; - this.quarkConnections_ = {}; - this.quarkIds_ = null; - this.previousEnabledState_ = true; - }, - - defType_: 'procedures_defnoreturn', -}; - -blocks['procedures_callreturn'] = { - ...PROCEDURE_CALL_COMMON, - /** - * Block for calling a procedure with a return value. - * @this {Block} - */ - init: function() { - this.appendDummyInput('TOPROW').appendField('', 'NAME'); - this.setOutput(true); - this.setStyle('procedure_blocks'); - // Tooltip is set in domToMutation. - this.setHelpUrl(Msg['PROCEDURES_CALLRETURN_HELPURL']); - this.arguments_ = []; - this.argumentVarModels_ = []; - this.quarkConnections_ = {}; - this.quarkIds_ = null; - this.previousEnabledState_ = true; - }, - - defType_: 'procedures_defreturn', -}; - -blocks['procedures_ifreturn'] = { - /** - * Block for conditionally returning a value from a procedure. - * @this {Block} - */ - init: function() { - this.appendValueInput('CONDITION') - .setCheck('Boolean') - .appendField(Msg['CONTROLS_IF_MSG_IF']); - this.appendValueInput('VALUE').appendField( - Msg['PROCEDURES_DEFRETURN_RETURN']); - this.setInputsInline(true); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setStyle('procedure_blocks'); - this.setTooltip(Msg['PROCEDURES_IFRETURN_TOOLTIP']); - this.setHelpUrl(Msg['PROCEDURES_IFRETURN_HELPURL']); - this.hasReturnValue_ = true; - }, - /** - * Create XML to represent whether this block has a return value. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - container.setAttribute('value', Number(this.hasReturnValue_)); - return container; - }, - /** - * Parse XML to restore whether this block has a return value. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - const value = xmlElement.getAttribute('value'); - this.hasReturnValue_ = (value === '1'); - if (!this.hasReturnValue_) { - this.removeInput('VALUE'); - this.appendDummyInput('VALUE').appendField( - Msg['PROCEDURES_DEFRETURN_RETURN']); - } - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this block is already encoded in the - // block's position in the workspace. - // XML hooks are kept for backwards compatibility. - - /** - * Called whenever anything on the workspace changes. - * Add warning if this flow block is not nested inside a loop. - * @param {!AbstractEvent} e Move event. - * @this {Block} - */ - onchange: function(e) { - if (this.workspace.isDragging && this.workspace.isDragging() || - e.type !== Events.BLOCK_MOVE) { - return; // Don't change state at the start of a drag. - } - let legal = false; - // Is the block nested in a procedure? - let block = this; - do { - if (this.FUNCTION_TYPES.indexOf(block.type) !== -1) { - legal = true; - break; - } - block = block.getSurroundParent(); - } while (block); - if (legal) { - // If needed, toggle whether this block has a return value. - if (block.type === 'procedures_defnoreturn' && this.hasReturnValue_) { - this.removeInput('VALUE'); - this.appendDummyInput('VALUE').appendField( - Msg['PROCEDURES_DEFRETURN_RETURN']); - this.hasReturnValue_ = false; - } else if ( - block.type === 'procedures_defreturn' && !this.hasReturnValue_) { - this.removeInput('VALUE'); - this.appendValueInput('VALUE').appendField( - Msg['PROCEDURES_DEFRETURN_RETURN']); - this.hasReturnValue_ = true; - } - this.setWarningText(null); - } else { - this.setWarningText(Msg['PROCEDURES_IFRETURN_WARNING']); - } - if (!this.isInFlyout) { - const group = Events.getGroup(); - // Makes it so the move and the disable event get undone together. - Events.setGroup(e.group); - this.setEnabled(legal); - Events.setGroup(group); - } - }, - /** - * List of block types that are functions and thus do not need warnings. - * To add a new function type add this to your code: - * Blocks['procedures_ifreturn'].FUNCTION_TYPES.push('custom_func'); - */ - FUNCTION_TYPES: ['procedures_defnoreturn', 'procedures_defreturn'], -}; - -// Register provided blocks. -defineBlocks(blocks); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Procedure blocks for Blockly. + * @suppress {checkTypes|visibility} + */ +'use strict'; + +goog.module('Blockly.libraryBlocks.procedures'); + +/* eslint-disable-next-line no-unused-vars */ +const AbstractEvent = goog.requireType('Blockly.Events.Abstract'); +const ContextMenu = goog.require('Blockly.ContextMenu'); +const Events = goog.require('Blockly.Events'); +const Procedures = goog.require('Blockly.Procedures'); +const Variables = goog.require('Blockly.Variables'); +const Xml = goog.require('Blockly.Xml'); +const xmlUtils = goog.require('Blockly.utils.xml'); +const {Align} = goog.require('Blockly.Input'); +/* eslint-disable-next-line no-unused-vars */ +const {Block} = goog.requireType('Blockly.Block'); +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); +const {config} = goog.require('Blockly.config'); +/* eslint-disable-next-line no-unused-vars */ +const {FieldCheckbox} = goog.require('Blockly.FieldCheckbox'); +const {FieldLabel} = goog.require('Blockly.FieldLabel'); +const {FieldTextInput} = goog.require('Blockly.FieldTextInput'); +const {Msg} = goog.require('Blockly.Msg'); +const {Mutator} = goog.require('Blockly.Mutator'); +const {Names} = goog.require('Blockly.Names'); +/* eslint-disable-next-line no-unused-vars */ +const {VariableModel} = goog.requireType('Blockly.VariableModel'); +/* eslint-disable-next-line no-unused-vars */ +const {Workspace} = goog.requireType('Blockly.Workspace'); +const {defineBlocks} = goog.require('Blockly.common'); +/** @suppress {extraRequire} */ +goog.require('Blockly.Comment'); +/** @suppress {extraRequire} */ +goog.require('Blockly.Warning'); + + +/** + * A dictionary of the block definitions provided by this module. + * @type {!Object} + */ +const blocks = {}; +exports.blocks = blocks; + +/** + * Common properties for the procedure_defnoreturn and + * procedure_defreturn blocks. + */ +const PROCEDURE_DEF_COMMON = { + /** + * Add or remove the statement block from this function definition. + * @param {boolean} hasStatements True if a statement block is needed. + * @this {Block} + */ + setStatements_: function(hasStatements) { + if (this.hasStatements_ === hasStatements) { + return; + } + if (hasStatements) { + this.appendStatementInput('STACK').appendField( + Msg['PROCEDURES_DEFNORETURN_DO']); + if (this.getInput('RETURN')) { + this.moveInputBefore('STACK', 'RETURN'); + } + } else { + this.removeInput('STACK', true); + } + this.hasStatements_ = hasStatements; + }, + /** + * Update the display of parameters for this procedure definition block. + * @private + * @this {Block} + */ + updateParams_: function() { + // Merge the arguments into a human-readable list. + let paramString = ''; + if (this.arguments_.length) { + paramString = + Msg['PROCEDURES_BEFORE_PARAMS'] + ' ' + this.arguments_.join(', '); + } + // The params field is deterministic based on the mutation, + // no need to fire a change event. + Events.disable(); + try { + this.setFieldValue(paramString, 'PARAMS'); + } finally { + Events.enable(); + } + }, + /** + * Create XML to represent the argument inputs. + * Backwards compatible serialization implementation. + * @param {boolean=} opt_paramIds If true include the IDs of the parameter + * quarks. Used by Procedures.mutateCallers for reconnection. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function(opt_paramIds) { + const container = xmlUtils.createElement('mutation'); + if (opt_paramIds) { + container.setAttribute('name', this.getFieldValue('NAME')); + } + for (let i = 0; i < this.argumentVarModels_.length; i++) { + const parameter = xmlUtils.createElement('arg'); + const argModel = this.argumentVarModels_[i]; + parameter.setAttribute('name', argModel.name); + parameter.setAttribute('varid', argModel.getId()); + if (opt_paramIds && this.paramIds_) { + parameter.setAttribute('paramId', this.paramIds_[i]); + } + container.appendChild(parameter); + } + + // Save whether the statement input is visible. + if (!this.hasStatements_) { + container.setAttribute('statements', 'false'); + } + return container; + }, + /** + * Parse XML to restore the argument inputs. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + this.arguments_ = []; + this.argumentVarModels_ = []; + for (let i = 0, childNode; (childNode = xmlElement.childNodes[i]); i++) { + if (childNode.nodeName.toLowerCase() === 'arg') { + const varName = childNode.getAttribute('name'); + const varId = + childNode.getAttribute('varid') || childNode.getAttribute('varId'); + this.arguments_.push(varName); + const variable = Variables.getOrCreateVariablePackage( + this.workspace, varId, varName, ''); + if (variable !== null) { + this.argumentVarModels_.push(variable); + } else { + console.log( + 'Failed to create a variable with name ' + varName + + ', ignoring.'); + } + } + } + this.updateParams_(); + Procedures.mutateCallers(this); + + // Show or hide the statement input. + this.setStatements_(xmlElement.getAttribute('statements') !== 'false'); + }, + /** + * Returns the state of this block as a JSON serializable object. + * @return {?{params: (!Array<{name: string, id: string}>|undefined), + * hasStatements: (boolean|undefined)}} The state of this block, eg the + * parameters and statements. + */ + saveExtraState: function() { + if (!this.argumentVarModels_.length && this.hasStatements_) { + return null; + } + const state = Object.create(null); + if (this.argumentVarModels_.length) { + state['params'] = []; + for (let i = 0; i < this.argumentVarModels_.length; i++) { + state['params'].push({ + // We don't need to serialize the name, but just in case we decide + // to separate params from variables. + 'name': this.argumentVarModels_[i].name, + 'id': this.argumentVarModels_[i].getId(), + }); + } + } + if (!this.hasStatements_) { + state['hasStatements'] = false; + } + return state; + }, + /** + * Applies the given state to this block. + * @param {*} state The state to apply to this block, eg the parameters and + * statements. + */ + loadExtraState: function(state) { + this.arguments_ = []; + this.argumentVarModels_ = []; + if (state['params']) { + for (let i = 0; i < state['params'].length; i++) { + const param = state['params'][i]; + const variable = Variables.getOrCreateVariablePackage( + this.workspace, param['id'], param['name'], ''); + this.arguments_.push(variable.name); + this.argumentVarModels_.push(variable); + } + } + this.updateParams_(); + Procedures.mutateCallers(this); + this.setStatements_(state['hasStatements'] === false ? false : true); + }, + /** + * Populate the mutator's dialog with this block's components. + * @param {!Workspace} workspace Mutator's workspace. + * @return {!Block} Root block in mutator. + * @this {Block} + */ + decompose: function(workspace) { + /* + * Creates the following XML: + * + * + * + * arg1_name + * etc... + * + * + * + */ + + const containerBlockNode = xmlUtils.createElement('block'); + containerBlockNode.setAttribute('type', 'procedures_mutatorcontainer'); + const statementNode = xmlUtils.createElement('statement'); + statementNode.setAttribute('name', 'STACK'); + containerBlockNode.appendChild(statementNode); + + let node = statementNode; + for (let i = 0; i < this.arguments_.length; i++) { + const argBlockNode = xmlUtils.createElement('block'); + argBlockNode.setAttribute('type', 'procedures_mutatorarg'); + const fieldNode = xmlUtils.createElement('field'); + fieldNode.setAttribute('name', 'NAME'); + const argumentName = xmlUtils.createTextNode(this.arguments_[i]); + fieldNode.appendChild(argumentName); + argBlockNode.appendChild(fieldNode); + const nextNode = xmlUtils.createElement('next'); + argBlockNode.appendChild(nextNode); + + node.appendChild(argBlockNode); + node = nextNode; + } + + const containerBlock = Xml.domToBlock(containerBlockNode, workspace); + + if (this.type === 'procedures_defreturn') { + containerBlock.setFieldValue(this.hasStatements_, 'STATEMENTS'); + } else { + containerBlock.removeInput('STATEMENT_INPUT'); + } + + // Initialize procedure's callers with blank IDs. + Procedures.mutateCallers(this); + return containerBlock; + }, + /** + * Reconfigure this block based on the mutator dialog's components. + * @param {!Block} containerBlock Root block in mutator. + * @this {Block} + */ + compose: function(containerBlock) { + // Parameter list. + this.arguments_ = []; + this.paramIds_ = []; + this.argumentVarModels_ = []; + let paramBlock = containerBlock.getInputTargetBlock('STACK'); + while (paramBlock && !paramBlock.isInsertionMarker()) { + const varName = paramBlock.getFieldValue('NAME'); + this.arguments_.push(varName); + const variable = this.workspace.getVariable(varName, ''); + this.argumentVarModels_.push(variable); + + this.paramIds_.push(paramBlock.id); + paramBlock = + paramBlock.nextConnection && paramBlock.nextConnection.targetBlock(); + } + this.updateParams_(); + Procedures.mutateCallers(this); + + // Show/hide the statement input. + let hasStatements = containerBlock.getFieldValue('STATEMENTS'); + if (hasStatements !== null) { + hasStatements = hasStatements === 'TRUE'; + if (this.hasStatements_ !== hasStatements) { + if (hasStatements) { + this.setStatements_(true); + // Restore the stack, if one was saved. + Mutator.reconnect(this.statementConnection_, this, 'STACK'); + this.statementConnection_ = null; + } else { + // Save the stack, then disconnect it. + const stackConnection = this.getInput('STACK').connection; + this.statementConnection_ = stackConnection.targetConnection; + if (this.statementConnection_) { + const stackBlock = stackConnection.targetBlock(); + stackBlock.unplug(); + stackBlock.bumpNeighbours(); + } + this.setStatements_(false); + } + } + } + }, + /** + * Return all variables referenced by this block. + * @return {!Array} List of variable names. + * @this {Block} + */ + getVars: function() { + return this.arguments_; + }, + /** + * Return all variables referenced by this block. + * @return {!Array} List of variable models. + * @this {Block} + */ + getVarModels: function() { + return this.argumentVarModels_; + }, + /** + * Notification that a variable is renaming. + * If the ID matches one of this block's variables, rename it. + * @param {string} oldId ID of variable to rename. + * @param {string} newId ID of new variable. May be the same as oldId, but + * with an updated name. Guaranteed to be the same type as the old + * variable. + * @override + * @this {Block} + */ + renameVarById: function(oldId, newId) { + const oldVariable = this.workspace.getVariableById(oldId); + if (oldVariable.type !== '') { + // Procedure arguments always have the empty type. + return; + } + const oldName = oldVariable.name; + const newVar = this.workspace.getVariableById(newId); + + let change = false; + for (let i = 0; i < this.argumentVarModels_.length; i++) { + if (this.argumentVarModels_[i].getId() === oldId) { + this.arguments_[i] = newVar.name; + this.argumentVarModels_[i] = newVar; + change = true; + } + } + if (change) { + this.displayRenamedVar_(oldName, newVar.name); + Procedures.mutateCallers(this); + } + }, + /** + * Notification that a variable is renaming but keeping the same ID. If the + * variable is in use on this block, rerender to show the new name. + * @param {!VariableModel} variable The variable being renamed. + * @package + * @override + * @this {Block} + */ + updateVarName: function(variable) { + const newName = variable.name; + let change = false; + let oldName; + for (let i = 0; i < this.argumentVarModels_.length; i++) { + if (this.argumentVarModels_[i].getId() === variable.getId()) { + oldName = this.arguments_[i]; + this.arguments_[i] = newName; + change = true; + } + } + if (change) { + this.displayRenamedVar_(oldName, newName); + Procedures.mutateCallers(this); + } + }, + /** + * Update the display to reflect a newly renamed argument. + * @param {string} oldName The old display name of the argument. + * @param {string} newName The new display name of the argument. + * @private + * @this {Block} + */ + displayRenamedVar_: function(oldName, newName) { + this.updateParams_(); + // Update the mutator's variables if the mutator is open. + if (this.mutator && this.mutator.isVisible()) { + const blocks = this.mutator.workspace_.getAllBlocks(false); + for (let i = 0, block; (block = blocks[i]); i++) { + if (block.type === 'procedures_mutatorarg' && + Names.equals(oldName, block.getFieldValue('NAME'))) { + block.setFieldValue(newName, 'NAME'); + } + } + } + }, + /** + * Add custom menu options to this block's context menu. + * @param {!Array} options List of menu options to add to. + * @this {Block} + */ + customContextMenu: function(options) { + if (this.isInFlyout) { + return; + } + // Add option to create caller. + const option = {enabled: true}; + const name = this.getFieldValue('NAME'); + option.text = Msg['PROCEDURES_CREATE_DO'].replace('%1', name); + const xmlMutation = xmlUtils.createElement('mutation'); + xmlMutation.setAttribute('name', name); + for (let i = 0; i < this.arguments_.length; i++) { + const xmlArg = xmlUtils.createElement('arg'); + xmlArg.setAttribute('name', this.arguments_[i]); + xmlMutation.appendChild(xmlArg); + } + const xmlBlock = xmlUtils.createElement('block'); + xmlBlock.setAttribute('type', this.callType_); + xmlBlock.appendChild(xmlMutation); + option.callback = ContextMenu.callbackFactory(this, xmlBlock); + options.push(option); + + // Add options to create getters for each parameter. + if (!this.isCollapsed()) { + for (let i = 0; i < this.argumentVarModels_.length; i++) { + const argOption = {enabled: true}; + const argVar = this.argumentVarModels_[i]; + argOption.text = + Msg['VARIABLES_SET_CREATE_GET'].replace('%1', argVar.name); + + const argXmlField = Variables.generateVariableFieldDom(argVar); + const argXmlBlock = xmlUtils.createElement('block'); + argXmlBlock.setAttribute('type', 'variables_get'); + argXmlBlock.appendChild(argXmlField); + argOption.callback = ContextMenu.callbackFactory(this, argXmlBlock); + options.push(argOption); + } + } + }, +}; + +blocks['procedures_defnoreturn'] = { + ...PROCEDURE_DEF_COMMON, + /** + * Block for defining a procedure with no return value. + * @this {Block} + */ + init: function() { + const initName = Procedures.findLegalName('', this); + const nameField = new FieldTextInput(initName, Procedures.rename); + nameField.setSpellcheck(false); + this.appendDummyInput() + .appendField(Msg['PROCEDURES_DEFNORETURN_TITLE']) + .appendField(nameField, 'NAME') + .appendField('', 'PARAMS'); + this.setMutator(new Mutator(['procedures_mutatorarg'])); + if ((this.workspace.options.comments || + (this.workspace.options.parentWorkspace && + this.workspace.options.parentWorkspace.options.comments)) && + Msg['PROCEDURES_DEFNORETURN_COMMENT']) { + this.setCommentText(Msg['PROCEDURES_DEFNORETURN_COMMENT']); + } + this.setStyle('procedure_blocks'); + this.setTooltip(Msg['PROCEDURES_DEFNORETURN_TOOLTIP']); + this.setHelpUrl(Msg['PROCEDURES_DEFNORETURN_HELPURL']); + this.arguments_ = []; + this.argumentVarModels_ = []; + this.setStatements_(true); + this.statementConnection_ = null; + }, + /** + * Return the signature of this procedure definition. + * @return {!Array} Tuple containing three elements: + * - the name of the defined procedure, + * - a list of all its arguments, + * - that it DOES NOT have a return value. + * @this {Block} + */ + getProcedureDef: function() { + return [this.getFieldValue('NAME'), this.arguments_, false]; + }, + callType_: 'procedures_callnoreturn', +}; + +blocks['procedures_setup'] = { + init: function () { + //this.appendDummyInput().appendField("Setup"); + this.appendDummyInput().appendField(Msg["PROCEDURES_SETUP_TITLE"]); + this.appendStatementInput("DO").setCheck(null); + // this.appendValueInput("RETURN").setCheck(null).setAlign(Blockly.ALIGN_RIGHT).appendField("return"); + this.setTooltip(Msg['PROCEDURES_SETUP_TOOLTIP']); + //this.setTooltip("Bloco que contem os blocos de inicialização do programa."); + this.setHelpUrl(""); + this.setStyle('procedure_blocks'); + }, +}; + +blocks['procedures_setup_supervisor'] = { + init: function () { + //this.appendDummyInput().appendField("Setup Supervisor"); + this.appendDummyInput().appendField(Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"]); + this.appendStatementInput("DO").setCheck(null); + // this.appendValueInput("RETURN").setCheck(null).setAlign(Blockly.ALIGN_RIGHT).appendField("return"); + this.setTooltip(Msg['PROCEDURES_SETUP_SUPERVISOR_TOOLTIP']); + //this.setTooltip("Bloco que contem os blocos de inicialização do supervisório."); + this.setHelpUrl(""); + this.setStyle('procedure_blocks'); + }, +}; + +blocks['procedures_run'] = { + init: function () { + //this.appendDummyInput().appendField("Run"); + this.appendDummyInput().appendField(Msg["PROCEDURES_RUN_TITLE"]); + this.appendStatementInput("DO").setCheck(null); + this.setTooltip(Msg['PROCEDURES_RUN_TOOLTIP']); + //this.setTooltip("Bloco que contem os blocos de execução do programa."); + this.setHelpUrl(""); + this.setStyle('procedure_blocks'); + }, +}; + +blocks['procedures_defreturn'] = { + ...PROCEDURE_DEF_COMMON, + /** + * Block for defining a procedure with a return value. + * @this {Block} + */ + init: function() { + const initName = Procedures.findLegalName('', this); + const nameField = new FieldTextInput(initName, Procedures.rename); + nameField.setSpellcheck(false); + this.appendDummyInput() + .appendField(Msg['PROCEDURES_DEFRETURN_TITLE']) + .appendField(nameField, 'NAME') + .appendField('', 'PARAMS'); + this.appendValueInput('RETURN') + .setAlign(Align.RIGHT) + .appendField(Msg['PROCEDURES_DEFRETURN_RETURN']); + this.setMutator(new Mutator(['procedures_mutatorarg'])); + if ((this.workspace.options.comments || + (this.workspace.options.parentWorkspace && + this.workspace.options.parentWorkspace.options.comments)) && + Msg['PROCEDURES_DEFRETURN_COMMENT']) { + this.setCommentText(Msg['PROCEDURES_DEFRETURN_COMMENT']); + } + this.setStyle('procedure_blocks'); + this.setTooltip(Msg['PROCEDURES_DEFRETURN_TOOLTIP']); + this.setHelpUrl(Msg['PROCEDURES_DEFRETURN_HELPURL']); + this.arguments_ = []; + this.argumentVarModels_ = []; + this.setStatements_(true); + this.statementConnection_ = null; + }, + /** + * Return the signature of this procedure definition. + * @return {!Array} Tuple containing three elements: + * - the name of the defined procedure, + * - a list of all its arguments, + * - that it DOES have a return value. + * @this {Block} + */ + getProcedureDef: function() { + return [this.getFieldValue('NAME'), this.arguments_, true]; + }, + callType_: 'procedures_callreturn', +}; + +blocks['procedures_mutatorcontainer'] = { + /** + * Mutator block for procedure container. + * @this {Block} + */ + init: function() { + this.appendDummyInput().appendField( + Msg['PROCEDURES_MUTATORCONTAINER_TITLE']); + this.appendStatementInput('STACK'); + this.appendDummyInput('STATEMENT_INPUT') + .appendField(Msg['PROCEDURES_ALLOW_STATEMENTS']) + .appendField(new FieldCheckbox('TRUE'), 'STATEMENTS'); + this.setStyle('procedure_blocks'); + this.setTooltip(Msg['PROCEDURES_MUTATORCONTAINER_TOOLTIP']); + this.contextMenu = false; + }, +}; + +blocks['procedures_mutatorarg'] = { + /** + * Mutator block for procedure argument. + * @this {Block} + */ + init: function() { + const field = new FieldTextInput(Procedures.DEFAULT_ARG, this.validator_); + // Hack: override showEditor to do just a little bit more work. + // We don't have a good place to hook into the start of a text edit. + field.oldShowEditorFn_ = field.showEditor_; + /** + * @this {FieldTextInput} + */ + const newShowEditorFn = function() { + this.createdVariables_ = []; + this.oldShowEditorFn_(); + }; + field.showEditor_ = newShowEditorFn; + + this.appendDummyInput() + .appendField(Msg['PROCEDURES_MUTATORARG_TITLE']) + .appendField(field, 'NAME'); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setStyle('procedure_blocks'); + this.setTooltip(Msg['PROCEDURES_MUTATORARG_TOOLTIP']); + this.contextMenu = false; + + // Create the default variable when we drag the block in from the flyout. + // Have to do this after installing the field on the block. + field.onFinishEditing_ = this.deleteIntermediateVars_; + // Create an empty list so onFinishEditing_ has something to look at, even + // though the editor was never opened. + field.createdVariables_ = []; + field.onFinishEditing_('x'); + }, + + /** + * Obtain a valid name for the procedure argument. Create a variable if + * necessary. + * Merge runs of whitespace. Strip leading and trailing whitespace. + * Beyond this, all names are legal. + * @param {string} varName User-supplied name. + * @return {?string} Valid name, or null if a name was not specified. + * @private + * @this {FieldTextInput} + */ + validator_: function(varName) { + const sourceBlock = this.getSourceBlock(); + const outerWs = Mutator.findParentWs(sourceBlock.workspace); + varName = varName.replace(/[\s\xa0]+/g, ' ').replace(/^ | $/g, ''); + if (!varName) { + return null; + } + + // Prevents duplicate parameter names in functions + const workspace = + sourceBlock.workspace.targetWorkspace || sourceBlock.workspace; + const blocks = workspace.getAllBlocks(false); + const caselessName = varName.toLowerCase(); + for (let i = 0; i < blocks.length; i++) { + if (blocks[i].id === this.getSourceBlock().id) { + continue; + } + // Other blocks values may not be set yet when this is loaded. + const otherVar = blocks[i].getFieldValue('NAME'); + if (otherVar && otherVar.toLowerCase() === caselessName) { + return null; + } + } + + // Don't create variables for arg blocks that + // only exist in the mutator's flyout. + if (sourceBlock.isInFlyout) { + return varName; + } + + let model = outerWs.getVariable(varName, ''); + if (model && model.name !== varName) { + // Rename the variable (case change) + outerWs.renameVariableById(model.getId(), varName); + } + if (!model) { + model = outerWs.createVariable(varName, ''); + if (model && this.createdVariables_) { + this.createdVariables_.push(model); + } + } + return varName; + }, + + /** + * Called when focusing away from the text field. + * Deletes all variables that were created as the user typed their intended + * variable name. + * @param {string} newText The new variable name. + * @private + * @this {FieldTextInput} + */ + deleteIntermediateVars_: function(newText) { + const outerWs = Mutator.findParentWs(this.getSourceBlock().workspace); + if (!outerWs) { + return; + } + for (let i = 0; i < this.createdVariables_.length; i++) { + const model = this.createdVariables_[i]; + if (model.name !== newText) { + outerWs.deleteVariableById(model.getId()); + } + } + }, +}; + +/** + * Common properties for the procedure_callnoreturn and + * procedure_callreturn blocks. + */ +const PROCEDURE_CALL_COMMON = { + /** + * Returns the name of the procedure this block calls. + * @return {string} Procedure name. + * @this {Block} + */ + getProcedureCall: function() { + // The NAME field is guaranteed to exist, null will never be returned. + return /** @type {string} */ (this.getFieldValue('NAME')); + }, + /** + * Notification that a procedure is renaming. + * If the name matches this block's procedure, rename it. + * @param {string} oldName Previous name of procedure. + * @param {string} newName Renamed procedure. + * @this {Block} + */ + renameProcedure: function(oldName, newName) { + if (Names.equals(oldName, this.getProcedureCall())) { + this.setFieldValue(newName, 'NAME'); + const baseMsg = this.outputConnection ? + Msg['PROCEDURES_CALLRETURN_TOOLTIP'] : + Msg['PROCEDURES_CALLNORETURN_TOOLTIP']; + this.setTooltip(baseMsg.replace('%1', newName)); + } + }, + /** + * Notification that the procedure's parameters have changed. + * @param {!Array} paramNames New param names, e.g. ['x', 'y', 'z']. + * @param {!Array} paramIds IDs of params (consistent for each + * parameter through the life of a mutator, regardless of param renaming), + * e.g. ['piua', 'f8b_', 'oi.o']. + * @private + * @this {Block} + */ + setProcedureParameters_: function(paramNames, paramIds) { + // Data structures: + // this.arguments = ['x', 'y'] + // Existing param names. + // this.quarkConnections_ {piua: null, f8b_: Connection} + // Look-up of paramIds to connections plugged into the call block. + // this.quarkIds_ = ['piua', 'f8b_'] + // Existing param IDs. + // Note that quarkConnections_ may include IDs that no longer exist, but + // which might reappear if a param is reattached in the mutator. + const defBlock = + Procedures.getDefinition(this.getProcedureCall(), this.workspace); + const mutatorOpen = + defBlock && defBlock.mutator && defBlock.mutator.isVisible(); + if (!mutatorOpen) { + this.quarkConnections_ = {}; + this.quarkIds_ = null; + } else { + // fix #6091 - this call could cause an error when outside if-else + // expanding block while mutating prevents another error (ancient fix) + this.setCollapsed(false); + } + // Test arguments (arrays of strings) for changes. '\n' is not a valid + // argument name character, so it is a valid delimiter here. + if (paramNames.join('\n') === this.arguments_.join('\n')) { + // No change. + this.quarkIds_ = paramIds; + return; + } + if (paramIds.length !== paramNames.length) { + throw RangeError('paramNames and paramIds must be the same length.'); + } + if (!this.quarkIds_) { + // Initialize tracking for this block. + this.quarkConnections_ = {}; + this.quarkIds_ = []; + } + // Switch off rendering while the block is rebuilt. + const savedRendered = this.rendered; + this.rendered = false; + // Update the quarkConnections_ with existing connections. + for (let i = 0; i < this.arguments_.length; i++) { + const input = this.getInput('ARG' + i); + if (input) { + const connection = input.connection.targetConnection; + this.quarkConnections_[this.quarkIds_[i]] = connection; + if (mutatorOpen && connection && + paramIds.indexOf(this.quarkIds_[i]) === -1) { + // This connection should no longer be attached to this block. + connection.disconnect(); + connection.getSourceBlock().bumpNeighbours(); + } + } + } + // Rebuild the block's arguments. + this.arguments_ = [].concat(paramNames); + // And rebuild the argument model list. + this.argumentVarModels_ = []; + for (let i = 0; i < this.arguments_.length; i++) { + const variable = Variables.getOrCreateVariablePackage( + this.workspace, null, this.arguments_[i], ''); + this.argumentVarModels_.push(variable); + } + + this.updateShape_(); + this.quarkIds_ = paramIds; + // Reconnect any child blocks. + if (this.quarkIds_) { + for (let i = 0; i < this.arguments_.length; i++) { + const quarkId = this.quarkIds_[i]; + if (quarkId in this.quarkConnections_) { + const connection = this.quarkConnections_[quarkId]; + if (!Mutator.reconnect(connection, this, 'ARG' + i)) { + // Block no longer exists or has been attached elsewhere. + delete this.quarkConnections_[quarkId]; + } + } + } + } + // Restore rendering and show the changes. + this.rendered = savedRendered; + if (this.rendered) { + this.render(); + } + }, + /** + * Modify this block to have the correct number of arguments. + * @private + * @this {Block} + */ + updateShape_: function() { + for (let i = 0; i < this.arguments_.length; i++) { + const argField = this.getField('ARGNAME' + i); + if (argField) { + // Ensure argument name is up to date. + // The argument name field is deterministic based on the mutation, + // no need to fire a change event. + Events.disable(); + try { + argField.setValue(this.arguments_[i]); + } finally { + Events.enable(); + } + } else { + // Add new input. + const newField = new FieldLabel(this.arguments_[i]); + const input = this.appendValueInput('ARG' + i) + .setAlign(Align.RIGHT) + .appendField(newField, 'ARGNAME' + i); + input.init(); + } + } + // Remove deleted inputs. + for (let i = this.arguments_.length; this.getInput('ARG' + i); i++) { + this.removeInput('ARG' + i); + } + // Add 'with:' if there are parameters, remove otherwise. + const topRow = this.getInput('TOPROW'); + if (topRow) { + if (this.arguments_.length) { + if (!this.getField('WITH')) { + topRow.appendField(Msg['PROCEDURES_CALL_BEFORE_PARAMS'], 'WITH'); + topRow.init(); + } + } else { + if (this.getField('WITH')) { + topRow.removeField('WITH'); + } + } + } + }, + /** + * Create XML to represent the (non-editable) name and arguments. + * Backwards compatible serialization implementation. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + container.setAttribute('name', this.getProcedureCall()); + for (let i = 0; i < this.arguments_.length; i++) { + const parameter = xmlUtils.createElement('arg'); + parameter.setAttribute('name', this.arguments_[i]); + container.appendChild(parameter); + } + return container; + }, + /** + * Parse XML to restore the (non-editable) name and parameters. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + const name = xmlElement.getAttribute('name'); + this.renameProcedure(this.getProcedureCall(), name); + const args = []; + const paramIds = []; + for (let i = 0, childNode; (childNode = xmlElement.childNodes[i]); i++) { + if (childNode.nodeName.toLowerCase() === 'arg') { + args.push(childNode.getAttribute('name')); + paramIds.push(childNode.getAttribute('paramId')); + } + } + this.setProcedureParameters_(args, paramIds); + }, + /** + * Returns the state of this block as a JSON serializable object. + * @return {{name: string, params:(!Array|undefined)}} The state of + * this block, ie the params and procedure name. + */ + saveExtraState: function() { + const state = Object.create(null); + state['name'] = this.getProcedureCall(); + if (this.arguments_.length) { + state['params'] = this.arguments_; + } + return state; + }, + /** + * Applies the given state to this block. + * @param {*} state The state to apply to this block, ie the params and + * procedure name. + */ + loadExtraState: function(state) { + this.renameProcedure(this.getProcedureCall(), state['name']); + const params = state['params']; + if (params) { + const ids = []; + ids.length = params.length; + ids.fill(null); + this.setProcedureParameters_(params, ids); + } + }, + /** + * Return all variables referenced by this block. + * @return {!Array} List of variable names. + * @this {Block} + */ + getVars: function() { + return this.arguments_; + }, + /** + * Return all variables referenced by this block. + * @return {!Array} List of variable models. + * @this {Block} + */ + getVarModels: function() { + return this.argumentVarModels_; + }, + /** + * Procedure calls cannot exist without the corresponding procedure + * definition. Enforce this link whenever an event is fired. + * @param {!AbstractEvent} event Change event. + * @this {Block} + */ + onchange: function(event) { + if (!this.workspace || this.workspace.isFlyout) { + // Block is deleted or is in a flyout. + return; + } + if (!event.recordUndo) { + // Events not generated by user. Skip handling. + return; + } + if (event.type === Events.BLOCK_CREATE && + event.ids.indexOf(this.id) !== -1) { + // Look for the case where a procedure call was created (usually through + // paste) and there is no matching definition. In this case, create + // an empty definition block with the correct signature. + const name = this.getProcedureCall(); + let def = Procedures.getDefinition(name, this.workspace); + if (def && + (def.type !== this.defType_ || + JSON.stringify(def.getVars()) !== JSON.stringify(this.arguments_))) { + // The signatures don't match. + def = null; + } + if (!def) { + Events.setGroup(event.group); + /** + * Create matching definition block. + * + * + * + * + * + * test + * + * + */ + const xml = xmlUtils.createElement('xml'); + const block = xmlUtils.createElement('block'); + block.setAttribute('type', this.defType_); + const xy = this.getRelativeToSurfaceXY(); + const x = xy.x + config.snapRadius * (this.RTL ? -1 : 1); + const y = xy.y + config.snapRadius * 2; + block.setAttribute('x', x); + block.setAttribute('y', y); + const mutation = this.mutationToDom(); + block.appendChild(mutation); + const field = xmlUtils.createElement('field'); + field.setAttribute('name', 'NAME'); + const callName = this.getProcedureCall(); + const newName = Procedures.findLegalName(callName, this); + if (callName !== newName) { + this.renameProcedure(callName, newName); + } + field.appendChild(xmlUtils.createTextNode(callName)); + block.appendChild(field); + xml.appendChild(block); + Xml.domToWorkspace(xml, this.workspace); + Events.setGroup(false); + } + } else if (event.type === Events.BLOCK_DELETE) { + // Look for the case where a procedure definition has been deleted, + // leaving this block (a procedure call) orphaned. In this case, delete + // the orphan. + const name = this.getProcedureCall(); + const def = Procedures.getDefinition(name, this.workspace); + if (!def) { + Events.setGroup(event.group); + this.dispose(true); + Events.setGroup(false); + } + } else if (event.type === Events.CHANGE && event.element === 'disabled') { + const name = this.getProcedureCall(); + const def = Procedures.getDefinition(name, this.workspace); + if (def && def.id === event.blockId) { + // in most cases the old group should be '' + const oldGroup = Events.getGroup(); + if (oldGroup) { + // This should only be possible programmatically and may indicate a + // problem with event grouping. If you see this message please + // investigate. If the use ends up being valid we may need to reorder + // events in the undo stack. + console.log( + 'Saw an existing group while responding to a definition change'); + } + Events.setGroup(event.group); + if (event.newValue) { + this.previousEnabledState_ = this.isEnabled(); + this.setEnabled(false); + } else { + this.setEnabled(this.previousEnabledState_); + } + Events.setGroup(oldGroup); + } + } + }, + /** + * Add menu option to find the definition block for this call. + * @param {!Array} options List of menu options to add to. + * @this {Block} + */ + customContextMenu: function(options) { + if (!this.workspace.isMovable()) { + // If we center on the block and the workspace isn't movable we could + // loose blocks at the edges of the workspace. + return; + } + + const option = {enabled: true}; + option.text = Msg['PROCEDURES_HIGHLIGHT_DEF']; + const name = this.getProcedureCall(); + const workspace = this.workspace; + option.callback = function() { + const def = Procedures.getDefinition(name, workspace); + if (def) { + workspace.centerOnBlock(def.id); + def.select(); + } + }; + options.push(option); + }, +}; + +blocks['procedures_callnoreturn'] = { + ...PROCEDURE_CALL_COMMON, + /** + * Block for calling a procedure with no return value. + * @this {Block} + */ + init: function() { + this.appendDummyInput('TOPROW').appendField('', 'NAME'); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setStyle('procedure_blocks'); + // Tooltip is set in renameProcedure. + this.setHelpUrl(Msg['PROCEDURES_CALLNORETURN_HELPURL']); + this.arguments_ = []; + this.argumentVarModels_ = []; + this.quarkConnections_ = {}; + this.quarkIds_ = null; + this.previousEnabledState_ = true; + }, + + defType_: 'procedures_defnoreturn', +}; + +blocks['procedures_callreturn'] = { + ...PROCEDURE_CALL_COMMON, + /** + * Block for calling a procedure with a return value. + * @this {Block} + */ + init: function() { + this.appendDummyInput('TOPROW').appendField('', 'NAME'); + this.setOutput(true); + this.setStyle('procedure_blocks'); + // Tooltip is set in domToMutation. + this.setHelpUrl(Msg['PROCEDURES_CALLRETURN_HELPURL']); + this.arguments_ = []; + this.argumentVarModels_ = []; + this.quarkConnections_ = {}; + this.quarkIds_ = null; + this.previousEnabledState_ = true; + }, + + defType_: 'procedures_defreturn', +}; + +blocks['procedures_ifreturn'] = { + /** + * Block for conditionally returning a value from a procedure. + * @this {Block} + */ + init: function() { + this.appendValueInput('CONDITION') + .setCheck('Boolean') + .appendField(Msg['CONTROLS_IF_MSG_IF']); + this.appendValueInput('VALUE').appendField( + Msg['PROCEDURES_DEFRETURN_RETURN']); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setStyle('procedure_blocks'); + this.setTooltip(Msg['PROCEDURES_IFRETURN_TOOLTIP']); + this.setHelpUrl(Msg['PROCEDURES_IFRETURN_HELPURL']); + this.hasReturnValue_ = true; + }, + /** + * Create XML to represent whether this block has a return value. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + container.setAttribute('value', Number(this.hasReturnValue_)); + return container; + }, + /** + * Parse XML to restore whether this block has a return value. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + const value = xmlElement.getAttribute('value'); + this.hasReturnValue_ = (value === '1'); + if (!this.hasReturnValue_) { + this.removeInput('VALUE'); + this.appendDummyInput('VALUE').appendField( + Msg['PROCEDURES_DEFRETURN_RETURN']); + } + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this block is already encoded in the + // block's position in the workspace. + // XML hooks are kept for backwards compatibility. + + /** + * Called whenever anything on the workspace changes. + * Add warning if this flow block is not nested inside a loop. + * @param {!AbstractEvent} e Move event. + * @this {Block} + */ + onchange: function(e) { + if (this.workspace.isDragging && this.workspace.isDragging() || + e.type !== Events.BLOCK_MOVE) { + return; // Don't change state at the start of a drag. + } + let legal = false; + // Is the block nested in a procedure? + let block = this; + do { + if (this.FUNCTION_TYPES.indexOf(block.type) !== -1) { + legal = true; + break; + } + block = block.getSurroundParent(); + } while (block); + if (legal) { + // If needed, toggle whether this block has a return value. + if (block.type === 'procedures_defnoreturn' && this.hasReturnValue_) { + this.removeInput('VALUE'); + this.appendDummyInput('VALUE').appendField( + Msg['PROCEDURES_DEFRETURN_RETURN']); + this.hasReturnValue_ = false; + } else if ( + block.type === 'procedures_defreturn' && !this.hasReturnValue_) { + this.removeInput('VALUE'); + this.appendValueInput('VALUE').appendField( + Msg['PROCEDURES_DEFRETURN_RETURN']); + this.hasReturnValue_ = true; + } + this.setWarningText(null); + } else { + this.setWarningText(Msg['PROCEDURES_IFRETURN_WARNING']); + } + if (!this.isInFlyout) { + const group = Events.getGroup(); + // Makes it so the move and the disable event get undone together. + Events.setGroup(e.group); + this.setEnabled(legal); + Events.setGroup(group); + } + }, + /** + * List of block types that are functions and thus do not need warnings. + * To add a new function type add this to your code: + * Blocks['procedures_ifreturn'].FUNCTION_TYPES.push('custom_func'); + */ + FUNCTION_TYPES: ['procedures_defnoreturn', 'procedures_defreturn'], +}; + +// Register provided blocks. +defineBlocks(blocks); diff --git a/blocks/text.js b/blocks/text.js index efaebb5008e..a4cbb17e496 100644 --- a/blocks/text.js +++ b/blocks/text.js @@ -1,992 +1,992 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Text blocks for Blockly. - * @suppress {checkTypes} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks.texts'); - -const Extensions = goog.require('Blockly.Extensions'); -const {Msg} = goog.require('Blockly.Msg'); -/* eslint-disable-next-line no-unused-vars */ -const xmlUtils = goog.require('Blockly.utils.xml'); -const {Align} = goog.require('Blockly.Input'); -/* eslint-disable-next-line no-unused-vars */ -const {Block} = goog.requireType('Blockly.Block'); -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); -const {ConnectionType} = goog.require('Blockly.ConnectionType'); -const {FieldDropdown} = goog.require('Blockly.FieldDropdown'); -const {FieldImage} = goog.require('Blockly.FieldImage'); -const {FieldTextInput} = goog.require('Blockly.FieldTextInput'); -const {Mutator} = goog.require('Blockly.Mutator'); -/* eslint-disable-next-line no-unused-vars */ -const {Workspace} = goog.requireType('Blockly.Workspace'); -const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldMultilineInput'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldVariable'); - - -/** - * A dictionary of the block definitions provided by this module. - * @type {!Object} - */ -const blocks = createBlockDefinitionsFromJsonArray([ - // Block for text value - { - 'type': 'text', - 'message0': '%1', - 'args0': [{ - 'type': 'field_input', - 'name': 'TEXT', - 'text': '', - }], - 'output': 'String', - 'style': 'text_blocks', - 'helpUrl': '%{BKY_TEXT_TEXT_HELPURL}', - 'tooltip': '%{BKY_TEXT_TEXT_TOOLTIP}', - 'extensions': [ - 'text_quotes', - 'parent_tooltip_when_inline', - ], - }, - { - 'type': 'text_multiline', - 'message0': '%1 %2', - 'args0': [ - { - 'type': 'field_image', - 'src': - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAARCAYAAADpP' + - 'U2iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAdhgAAHYYBXaITgQAAABh0RVh0' + - 'U29mdHdhcmUAcGFpbnQubmV0IDQuMS42/U4J6AAAAP1JREFUOE+Vks0KQUEYhjm' + - 'RIja4ABtZ2dm5A3t3Ia6AUm7CylYuQRaUhZSlLZJiQbFAyRnPN33y01HOW08z88' + - '73zpwzM4F3GWOCruvGIE4/rLaV+Nq1hVGMBqzhqlxgCys4wJA65xnogMHsQ5luj' + - 'nYHTejBBCK2mE4abjCgMGhNxHgDFWjDSG07kdfVa2pZMf4ZyMAdWmpZMfYOsLiD' + - 'MYMjlMB+K613QISRhTnITnsYg5yUd0DETmEoMlkFOeIT/A58iyK5E18BuTBfgYX' + - 'fwNJv4P9/oEBerLylOnRhygmGdPpTTBZAPkde61lbQe4moWUvYUZYLfUNftIY4z' + - 'wA5X2Z9AYnQrEAAAAASUVORK5CYII=', - 'width': 12, - 'height': 17, - 'alt': '\u00B6', - }, - { - 'type': 'field_multilinetext', - 'name': 'TEXT', - 'text': '', - }, - ], - 'output': 'String', - 'style': 'text_blocks', - 'helpUrl': '%{BKY_TEXT_TEXT_HELPURL}', - 'tooltip': '%{BKY_TEXT_TEXT_TOOLTIP}', - 'extensions': [ - 'parent_tooltip_when_inline', - ], - }, - { - 'type': 'text_join', - 'message0': '', - 'output': 'String', - 'style': 'text_blocks', - 'helpUrl': '%{BKY_TEXT_JOIN_HELPURL}', - 'tooltip': '%{BKY_TEXT_JOIN_TOOLTIP}', - 'mutator': 'text_join_mutator', - - }, - { - 'type': 'text_create_join_container', - 'message0': '%{BKY_TEXT_CREATE_JOIN_TITLE_JOIN} %1 %2', - 'args0': [ - { - 'type': 'input_dummy', - }, - { - 'type': 'input_statement', - 'name': 'STACK', - }, - ], - 'style': 'text_blocks', - 'tooltip': '%{BKY_TEXT_CREATE_JOIN_TOOLTIP}', - 'enableContextMenu': false, - }, - { - 'type': 'text_create_join_item', - 'message0': '%{BKY_TEXT_CREATE_JOIN_ITEM_TITLE_ITEM}', - 'previousStatement': null, - 'nextStatement': null, - 'style': 'text_blocks', - 'tooltip': '%{BKY_TEXT_CREATE_JOIN_ITEM_TOOLTIP}', - 'enableContextMenu': false, - }, - { - 'type': 'text_append', - 'message0': '%{BKY_TEXT_APPEND_TITLE}', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': '%{BKY_TEXT_APPEND_VARIABLE}', - }, - { - 'type': 'input_value', - 'name': 'TEXT', - }, - ], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'text_blocks', - 'extensions': [ - 'text_append_tooltip', - ], - }, - { - 'type': 'text_length', - 'message0': '%{BKY_TEXT_LENGTH_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'VALUE', - 'check': ['String', 'Array'], - }, - ], - 'output': 'Number', - 'style': 'text_blocks', - 'tooltip': '%{BKY_TEXT_LENGTH_TOOLTIP}', - 'helpUrl': '%{BKY_TEXT_LENGTH_HELPURL}', - }, - { - 'type': 'text_isEmpty', - 'message0': '%{BKY_TEXT_ISEMPTY_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'VALUE', - 'check': ['String', 'Array'], - }, - ], - 'output': 'Boolean', - 'style': 'text_blocks', - 'tooltip': '%{BKY_TEXT_ISEMPTY_TOOLTIP}', - 'helpUrl': '%{BKY_TEXT_ISEMPTY_HELPURL}', - }, - { - 'type': 'text_indexOf', - 'message0': '%{BKY_TEXT_INDEXOF_TITLE}', - 'args0': [ - { - 'type': 'input_value', - 'name': 'VALUE', - 'check': 'String', - }, - { - 'type': 'field_dropdown', - 'name': 'END', - 'options': [ - [ - '%{BKY_TEXT_INDEXOF_OPERATOR_FIRST}', - 'FIRST', - ], - [ - '%{BKY_TEXT_INDEXOF_OPERATOR_LAST}', - 'LAST', - ], - ], - }, - { - 'type': 'input_value', - 'name': 'FIND', - 'check': 'String', - }, - ], - 'output': 'Number', - 'style': 'text_blocks', - 'helpUrl': '%{BKY_TEXT_INDEXOF_HELPURL}', - 'inputsInline': true, - 'extensions': [ - 'text_indexOf_tooltip', - ], - }, - { - 'type': 'text_charAt', - 'message0': '%{BKY_TEXT_CHARAT_TITLE}', // "in text %1 %2" - 'args0': [ - { - 'type': 'input_value', - 'name': 'VALUE', - 'check': 'String', - }, - { - 'type': 'field_dropdown', - 'name': 'WHERE', - 'options': [ - ['%{BKY_TEXT_CHARAT_FROM_START}', 'FROM_START'], - ['%{BKY_TEXT_CHARAT_FROM_END}', 'FROM_END'], - ['%{BKY_TEXT_CHARAT_FIRST}', 'FIRST'], - ['%{BKY_TEXT_CHARAT_LAST}', 'LAST'], - ['%{BKY_TEXT_CHARAT_RANDOM}', 'RANDOM'], - ], - }, - ], - 'output': 'String', - 'style': 'text_blocks', - 'helpUrl': '%{BKY_TEXT_CHARAT_HELPURL}', - 'inputsInline': true, - 'mutator': 'text_charAt_mutator', - }, -]); -exports.blocks = blocks; - -blocks['text_getSubstring'] = { - /** - * Block for getting substring. - * @this {Block} - */ - init: function() { - this['WHERE_OPTIONS_1'] = [ - [Msg['TEXT_GET_SUBSTRING_START_FROM_START'], 'FROM_START'], - [Msg['TEXT_GET_SUBSTRING_START_FROM_END'], 'FROM_END'], - [Msg['TEXT_GET_SUBSTRING_START_FIRST'], 'FIRST'], - ]; - this['WHERE_OPTIONS_2'] = [ - [Msg['TEXT_GET_SUBSTRING_END_FROM_START'], 'FROM_START'], - [Msg['TEXT_GET_SUBSTRING_END_FROM_END'], 'FROM_END'], - [Msg['TEXT_GET_SUBSTRING_END_LAST'], 'LAST'], - ]; - this.setHelpUrl(Msg['TEXT_GET_SUBSTRING_HELPURL']); - this.setStyle('text_blocks'); - this.appendValueInput('STRING').setCheck('String').appendField( - Msg['TEXT_GET_SUBSTRING_INPUT_IN_TEXT']); - this.appendDummyInput('AT1'); - this.appendDummyInput('AT2'); - if (Msg['TEXT_GET_SUBSTRING_TAIL']) { - this.appendDummyInput('TAIL').appendField(Msg['TEXT_GET_SUBSTRING_TAIL']); - } - this.setInputsInline(true); - this.setOutput(true, 'String'); - this.updateAt_(1, true); - this.updateAt_(2, true); - this.setTooltip(Msg['TEXT_GET_SUBSTRING_TOOLTIP']); - }, - /** - * Create XML to represent whether there are 'AT' inputs. - * Backwards compatible serialization implementation. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - const isAt1 = this.getInput('AT1').type === ConnectionType.INPUT_VALUE; - container.setAttribute('at1', isAt1); - const isAt2 = this.getInput('AT2').type === ConnectionType.INPUT_VALUE; - container.setAttribute('at2', isAt2); - return container; - }, - /** - * Parse XML to restore the 'AT' inputs. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - const isAt1 = (xmlElement.getAttribute('at1') === 'true'); - const isAt2 = (xmlElement.getAttribute('at2') === 'true'); - this.updateAt_(1, isAt1); - this.updateAt_(2, isAt2); - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. - - /** - * Create or delete an input for a numeric index. - * This block has two such inputs, independent of each other. - * @param {number} n Specify first or second input (1 or 2). - * @param {boolean} isAt True if the input should exist. - * @private - * @this {Block} - */ - updateAt_: function(n, isAt) { - // Create or delete an input for the numeric index. - // Destroy old 'AT' and 'ORDINAL' inputs. - this.removeInput('AT' + n); - this.removeInput('ORDINAL' + n, true); - // Create either a value 'AT' input or a dummy input. - if (isAt) { - this.appendValueInput('AT' + n).setCheck('Number'); - if (Msg['ORDINAL_NUMBER_SUFFIX']) { - this.appendDummyInput('ORDINAL' + n) - .appendField(Msg['ORDINAL_NUMBER_SUFFIX']); - } - } else { - this.appendDummyInput('AT' + n); - } - // Move tail, if present, to end of block. - if (n === 2 && Msg['TEXT_GET_SUBSTRING_TAIL']) { - this.removeInput('TAIL', true); - this.appendDummyInput('TAIL').appendField(Msg['TEXT_GET_SUBSTRING_TAIL']); - } - const menu = new FieldDropdown( - this['WHERE_OPTIONS_' + n], - /** - * @param {*} value The input value. - * @this {FieldDropdown} - * @returns {null|undefined} Null if the field has been replaced; - * otherwise undefined. - */ - function(value) { - const newAt = (value === 'FROM_START') || (value === 'FROM_END'); - // The 'isAt' variable is available due to this function being a - // closure. - if (newAt !== isAt) { - const block = this.getSourceBlock(); - block.updateAt_(n, newAt); - // This menu has been destroyed and replaced. - // Update the replacement. - block.setFieldValue(value, 'WHERE' + n); - return null; - } - return undefined; - }); - - this.getInput('AT' + n).appendField(menu, 'WHERE' + n); - if (n === 1) { - this.moveInputBefore('AT1', 'AT2'); - if (this.getInput('ORDINAL1')) { - this.moveInputBefore('ORDINAL1', 'AT2'); - } - } - }, -}; - -blocks['text_changeCase'] = { - /** - * Block for changing capitalization. - * @this {Block} - */ - init: function() { - const OPERATORS = [ - [Msg['TEXT_CHANGECASE_OPERATOR_UPPERCASE'], 'UPPERCASE'], - [Msg['TEXT_CHANGECASE_OPERATOR_LOWERCASE'], 'LOWERCASE'], - [Msg['TEXT_CHANGECASE_OPERATOR_TITLECASE'], 'TITLECASE'], - ]; - this.setHelpUrl(Msg['TEXT_CHANGECASE_HELPURL']); - this.setStyle('text_blocks'); - this.appendValueInput('TEXT').setCheck('String').appendField( - new FieldDropdown(OPERATORS), 'CASE'); - this.setOutput(true, 'String'); - this.setTooltip(Msg['TEXT_CHANGECASE_TOOLTIP']); - }, -}; - -blocks['text_trim'] = { - /** - * Block for trimming spaces. - * @this {Block} - */ - init: function() { - const OPERATORS = [ - [Msg['TEXT_TRIM_OPERATOR_BOTH'], 'BOTH'], - [Msg['TEXT_TRIM_OPERATOR_LEFT'], 'LEFT'], - [Msg['TEXT_TRIM_OPERATOR_RIGHT'], 'RIGHT'], - ]; - this.setHelpUrl(Msg['TEXT_TRIM_HELPURL']); - this.setStyle('text_blocks'); - this.appendValueInput('TEXT').setCheck('String').appendField( - new FieldDropdown(OPERATORS), 'MODE'); - this.setOutput(true, 'String'); - this.setTooltip(Msg['TEXT_TRIM_TOOLTIP']); - }, -}; - -blocks['text_print'] = { - /** - * Block for print statement. - * @this {Block} - */ - init: function() { - this.jsonInit({ - 'message0': Msg['TEXT_PRINT_TITLE'], - 'args0': [ - { - 'type': 'input_value', - 'name': 'TEXT', - }, - ], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'text_blocks', - 'tooltip': Msg['TEXT_PRINT_TOOLTIP'], - 'helpUrl': Msg['TEXT_PRINT_HELPURL'], - }); - }, -}; - - -/** - * Common properties for the text_prompt_ext and text_prompt blocks - * definitions. - */ -const TEXT_PROMPT_COMMON = { - /** - * Modify this block to have the correct output type. - * @param {string} newOp Either 'TEXT' or 'NUMBER'. - * @private - * @this {Block} - */ - updateType_: function(newOp) { - this.outputConnection.setCheck(newOp === 'NUMBER' ? 'Number' : 'String'); - }, - /** - * Create XML to represent the output type. - * Backwards compatible serialization implementation. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - container.setAttribute('type', this.getFieldValue('TYPE')); - return container; - }, - /** - * Parse XML to restore the output type. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - this.updateType_(xmlElement.getAttribute('type')); - }, -}; - -blocks['text_prompt_ext'] = { - ...TEXT_PROMPT_COMMON, - /** - * Block for prompt function (external message). - * @this {Block} - */ - init: function() { - const TYPES = [ - [Msg['TEXT_PROMPT_TYPE_TEXT'], 'TEXT'], - [Msg['TEXT_PROMPT_TYPE_NUMBER'], 'NUMBER'], - ]; - this.setHelpUrl(Msg['TEXT_PROMPT_HELPURL']); - this.setStyle('text_blocks'); - // Assign 'this' to a variable for use in the closures below. - const thisBlock = this; - const dropdown = new FieldDropdown(TYPES, function(newOp) { - thisBlock.updateType_(newOp); - }); - this.appendValueInput('TEXT').appendField(dropdown, 'TYPE'); - this.setOutput(true, 'String'); - this.setTooltip(function() { - return (thisBlock.getFieldValue('TYPE') === 'TEXT') ? - Msg['TEXT_PROMPT_TOOLTIP_TEXT'] : - Msg['TEXT_PROMPT_TOOLTIP_NUMBER']; - }); - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. -}; - -blocks['text_prompt'] = { - ...TEXT_PROMPT_COMMON, - /** - * Block for prompt function (internal message). - * The 'text_prompt_ext' block is preferred as it is more flexible. - * @this {Block} - */ - init: function() { - this.mixin(QUOTE_IMAGE_MIXIN); - const TYPES = [ - [Msg['TEXT_PROMPT_TYPE_TEXT'], 'TEXT'], - [Msg['TEXT_PROMPT_TYPE_NUMBER'], 'NUMBER'], - ]; - - // Assign 'this' to a variable for use in the closures below. - const thisBlock = this; - this.setHelpUrl(Msg['TEXT_PROMPT_HELPURL']); - this.setStyle('text_blocks'); - const dropdown = new FieldDropdown(TYPES, function(newOp) { - thisBlock.updateType_(newOp); - }); - this.appendDummyInput() - .appendField(dropdown, 'TYPE') - .appendField(this.newQuote_(true)) - .appendField(new FieldTextInput(''), 'TEXT') - .appendField(this.newQuote_(false)); - this.setOutput(true, 'String'); - this.setTooltip(function() { - return (thisBlock.getFieldValue('TYPE') === 'TEXT') ? - Msg['TEXT_PROMPT_TOOLTIP_TEXT'] : - Msg['TEXT_PROMPT_TOOLTIP_NUMBER']; - }); - }, -}; - -blocks['text_count'] = { - /** - * Block for counting how many times one string appears within another string. - * @this {Block} - */ - init: function() { - this.jsonInit({ - 'message0': Msg['TEXT_COUNT_MESSAGE0'], - 'args0': [ - { - 'type': 'input_value', - 'name': 'SUB', - 'check': 'String', - }, - { - 'type': 'input_value', - 'name': 'TEXT', - 'check': 'String', - }, - ], - 'output': 'Number', - 'inputsInline': true, - 'style': 'text_blocks', - 'tooltip': Msg['TEXT_COUNT_TOOLTIP'], - 'helpUrl': Msg['TEXT_COUNT_HELPURL'], - }); - }, -}; - -blocks['text_replace'] = { - /** - * Block for replacing one string with another in the text. - * @this {Block} - */ - init: function() { - this.jsonInit({ - 'message0': Msg['TEXT_REPLACE_MESSAGE0'], - 'args0': [ - { - 'type': 'input_value', - 'name': 'FROM', - 'check': 'String', - }, - { - 'type': 'input_value', - 'name': 'TO', - 'check': 'String', - }, - { - 'type': 'input_value', - 'name': 'TEXT', - 'check': 'String', - }, - ], - 'output': 'String', - 'inputsInline': true, - 'style': 'text_blocks', - 'tooltip': Msg['TEXT_REPLACE_TOOLTIP'], - 'helpUrl': Msg['TEXT_REPLACE_HELPURL'], - }); - }, -}; - -blocks['text_reverse'] = { - /** - * Block for reversing a string. - * @this {Block} - */ - init: function() { - this.jsonInit({ - 'message0': Msg['TEXT_REVERSE_MESSAGE0'], - 'args0': [ - { - 'type': 'input_value', - 'name': 'TEXT', - 'check': 'String', - }, - ], - 'output': 'String', - 'inputsInline': true, - 'style': 'text_blocks', - 'tooltip': Msg['TEXT_REVERSE_TOOLTIP'], - 'helpUrl': Msg['TEXT_REVERSE_HELPURL'], - }); - }, -}; - -/** - * @mixin - * @package - * @readonly - */ -const QUOTE_IMAGE_MIXIN = { - /** - * Image data URI of an LTR opening double quote (same as RTL closing double - * quote). - * @readonly - */ - QUOTE_IMAGE_LEFT_DATAURI: - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAA' + - 'n0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY' + - '1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1' + - 'HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMf' + - 'z9AylsaRRgGzvZAAAAAElFTkSuQmCC', - /** - * Image data URI of an LTR closing double quote (same as RTL opening double - * quote). - * @readonly - */ - QUOTE_IMAGE_RIGHT_DATAURI: - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAA' + - 'qUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhg' + - 'gONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvB' + - 'O3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5Aos' + - 'lLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==', - /** - * Pixel width of QUOTE_IMAGE_LEFT_DATAURI and QUOTE_IMAGE_RIGHT_DATAURI. - * @readonly - */ - QUOTE_IMAGE_WIDTH: 12, - /** - * Pixel height of QUOTE_IMAGE_LEFT_DATAURI and QUOTE_IMAGE_RIGHT_DATAURI. - * @readonly - */ - QUOTE_IMAGE_HEIGHT: 12, - - /** - * Inserts appropriate quote images before and after the named field. - * @param {string} fieldName The name of the field to wrap with quotes. - * @this {Block} - */ - quoteField_: function(fieldName) { - for (let i = 0, input; (input = this.inputList[i]); i++) { - for (let j = 0, field; (field = input.fieldRow[j]); j++) { - if (fieldName === field.name) { - input.insertFieldAt(j, this.newQuote_(true)); - input.insertFieldAt(j + 2, this.newQuote_(false)); - return; - } - } - } - console.warn( - 'field named "' + fieldName + '" not found in ' + this.toDevString()); - }, - - /** - * A helper function that generates a FieldImage of an opening or - * closing double quote. The selected quote will be adapted for RTL blocks. - * @param {boolean} open If the image should be open quote (“ in LTR). - * Otherwise, a closing quote is used (” in LTR). - * @return {!FieldImage} The new field. - * @this {Block} - */ - newQuote_: function(open) { - const isLeft = this.RTL ? !open : open; - const dataUri = - isLeft ? this.QUOTE_IMAGE_LEFT_DATAURI : this.QUOTE_IMAGE_RIGHT_DATAURI; - return new FieldImage( - dataUri, this.QUOTE_IMAGE_WIDTH, this.QUOTE_IMAGE_HEIGHT, - isLeft ? '\u201C' : '\u201D'); - }, -}; - -/** - * Wraps TEXT field with images of double quote characters. - * @this {Block} - */ -const TEXT_QUOTES_EXTENSION = function() { - this.mixin(QUOTE_IMAGE_MIXIN); - this.quoteField_('TEXT'); -}; - -/** - * Mixin for mutator functions in the 'text_join_mutator' extension. - * @mixin - * @augments Block - * @package - */ -const TEXT_JOIN_MUTATOR_MIXIN = { - /** - * Create XML to represent number of text inputs. - * Backwards compatible serialization implementation. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - container.setAttribute('items', this.itemCount_); - return container; - }, - /** - * Parse XML to restore the text inputs. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); - this.updateShape_(); - }, - /** - * Returns the state of this block as a JSON serializable object. - * @return {{itemCount: number}} The state of this block, ie the item count. - */ - saveExtraState: function() { - return { - 'itemCount': this.itemCount_, - }; - }, - /** - * Applies the given state to this block. - * @param {*} state The state to apply to this block, ie the item count. - */ - loadExtraState: function(state) { - this.itemCount_ = state['itemCount']; - this.updateShape_(); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Workspace} workspace Mutator's workspace. - * @return {!Block} Root block in mutator. - * @this {Block} - */ - decompose: function(workspace) { - const containerBlock = workspace.newBlock('text_create_join_container'); - containerBlock.initSvg(); - let connection = containerBlock.getInput('STACK').connection; - for (let i = 0; i < this.itemCount_; i++) { - const itemBlock = workspace.newBlock('text_create_join_item'); - itemBlock.initSvg(); - connection.connect(itemBlock.previousConnection); - connection = itemBlock.nextConnection; - } - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Block} containerBlock Root block in mutator. - * @this {Block} - */ - compose: function(containerBlock) { - let itemBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - const connections = []; - while (itemBlock && !itemBlock.isInsertionMarker()) { - connections.push(itemBlock.valueConnection_); - itemBlock = - itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); - } - // Disconnect any children that don't belong. - for (let i = 0; i < this.itemCount_; i++) { - const connection = this.getInput('ADD' + i).connection.targetConnection; - if (connection && connections.indexOf(connection) === -1) { - connection.disconnect(); - } - } - this.itemCount_ = connections.length; - this.updateShape_(); - // Reconnect any child blocks. - for (let i = 0; i < this.itemCount_; i++) { - Mutator.reconnect(connections[i], this, 'ADD' + i); - } - }, - /** - * Store pointers to any connected child blocks. - * @param {!Block} containerBlock Root block in mutator. - * @this {Block} - */ - saveConnections: function(containerBlock) { - let itemBlock = containerBlock.getInputTargetBlock('STACK'); - let i = 0; - while (itemBlock) { - const input = this.getInput('ADD' + i); - itemBlock.valueConnection_ = input && input.connection.targetConnection; - itemBlock = - itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); - i++; - } - }, - /** - * Modify this block to have the correct number of inputs. - * @private - * @this {Block} - */ - updateShape_: function() { - if (this.itemCount_ && this.getInput('EMPTY')) { - this.removeInput('EMPTY'); - } else if (!this.itemCount_ && !this.getInput('EMPTY')) { - this.appendDummyInput('EMPTY') - .appendField(this.newQuote_(true)) - .appendField(this.newQuote_(false)); - } - // Add new inputs. - for (let i = 0; i < this.itemCount_; i++) { - if (!this.getInput('ADD' + i)) { - const input = this.appendValueInput('ADD' + i).setAlign(Align.RIGHT); - if (i === 0) { - input.appendField(Msg['TEXT_JOIN_TITLE_CREATEWITH']); - } - } - } - // Remove deleted inputs. - for (let i = this.itemCount_; this.getInput('ADD' + i); i++) { - this.removeInput('ADD' + i); - } - }, -}; - -/** - * Performs final setup of a text_join block. - * @this {Block} - */ -const TEXT_JOIN_EXTENSION = function() { - // Add the quote mixin for the itemCount_ = 0 case. - this.mixin(QUOTE_IMAGE_MIXIN); - // Initialize the mutator values. - this.itemCount_ = 2; - this.updateShape_(); - // Configure the mutator UI. - this.setMutator(new Mutator(['text_create_join_item'])); -}; - -// Update the tooltip of 'text_append' block to reference the variable. -Extensions.register( - 'text_append_tooltip', - Extensions.buildTooltipWithFieldText('%{BKY_TEXT_APPEND_TOOLTIP}', 'VAR')); - -/** - * Update the tooltip of 'text_append' block to reference the variable. - * @this {Block} - */ -const TEXT_INDEXOF_TOOLTIP_EXTENSION = function() { - // Assign 'this' to a variable for use in the tooltip closure below. - const thisBlock = this; - this.setTooltip(function() { - return Msg['TEXT_INDEXOF_TOOLTIP'].replace( - '%1', thisBlock.workspace.options.oneBasedIndex ? '0' : '-1'); - }); -}; - -/** - * Mixin for mutator functions in the 'text_charAt_mutator' extension. - * @mixin - * @augments Block - * @package - */ -const TEXT_CHARAT_MUTATOR_MIXIN = { - /** - * Create XML to represent whether there is an 'AT' input. - * Backwards compatible serialization implementation. - * @return {!Element} XML storage element. - * @this {Block} - */ - mutationToDom: function() { - const container = xmlUtils.createElement('mutation'); - container.setAttribute('at', !!this.isAt_); - return container; - }, - /** - * Parse XML to restore the 'AT' input. - * Backwards compatible serialization implementation. - * @param {!Element} xmlElement XML storage element. - * @this {Block} - */ - domToMutation: function(xmlElement) { - // Note: Until January 2013 this block did not have mutations, - // so 'at' defaults to true. - const isAt = (xmlElement.getAttribute('at') !== 'false'); - this.updateAt_(isAt); - }, - - // This block does not need JSO serialization hooks (saveExtraState and - // loadExtraState) because the state of this object is already encoded in the - // dropdown values. - // XML hooks are kept for backwards compatibility. - - /** - * Create or delete an input for the numeric index. - * @param {boolean} isAt True if the input should exist. - * @private - * @this {Block} - */ - updateAt_: function(isAt) { - // Destroy old 'AT' and 'ORDINAL' inputs. - this.removeInput('AT', true); - this.removeInput('ORDINAL', true); - // Create either a value 'AT' input or a dummy input. - if (isAt) { - this.appendValueInput('AT').setCheck('Number'); - if (Msg['ORDINAL_NUMBER_SUFFIX']) { - this.appendDummyInput('ORDINAL').appendField( - Msg['ORDINAL_NUMBER_SUFFIX']); - } - } - if (Msg['TEXT_CHARAT_TAIL']) { - this.removeInput('TAIL', true); - this.appendDummyInput('TAIL').appendField(Msg['TEXT_CHARAT_TAIL']); - } - - this.isAt_ = isAt; - }, -}; - -/** - * Does the initial mutator update of text_charAt and adds the tooltip - * @this {Block} - */ -const TEXT_CHARAT_EXTENSION = function() { - const dropdown = this.getField('WHERE'); - dropdown.setValidator( - /** - * @param {*} value The input value. - * @this {FieldDropdown} - */ - function(value) { - const newAt = (value === 'FROM_START') || (value === 'FROM_END'); - if (newAt !== this.isAt_) { - const block = this.getSourceBlock(); - block.updateAt_(newAt); - } - }); - this.updateAt_(true); - // Assign 'this' to a variable for use in the tooltip closure below. - const thisBlock = this; - this.setTooltip(function() { - const where = thisBlock.getFieldValue('WHERE'); - let tooltip = Msg['TEXT_CHARAT_TOOLTIP']; - if (where === 'FROM_START' || where === 'FROM_END') { - const msg = (where === 'FROM_START') ? - Msg['LISTS_INDEX_FROM_START_TOOLTIP'] : - Msg['LISTS_INDEX_FROM_END_TOOLTIP']; - if (msg) { - tooltip += ' ' + - msg.replace( - '%1', thisBlock.workspace.options.oneBasedIndex ? '#1' : '#0'); - } - } - return tooltip; - }); -}; - -Extensions.register('text_indexOf_tooltip', TEXT_INDEXOF_TOOLTIP_EXTENSION); - -Extensions.register('text_quotes', TEXT_QUOTES_EXTENSION); - -Extensions.registerMutator( - 'text_join_mutator', TEXT_JOIN_MUTATOR_MIXIN, TEXT_JOIN_EXTENSION); - -Extensions.registerMutator( - 'text_charAt_mutator', TEXT_CHARAT_MUTATOR_MIXIN, TEXT_CHARAT_EXTENSION); - -// Register provided blocks. -defineBlocks(blocks); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Text blocks for Blockly. + * @suppress {checkTypes} + */ +'use strict'; + +goog.module('Blockly.libraryBlocks.texts'); + +const Extensions = goog.require('Blockly.Extensions'); +const {Msg} = goog.require('Blockly.Msg'); +/* eslint-disable-next-line no-unused-vars */ +const xmlUtils = goog.require('Blockly.utils.xml'); +const {Align} = goog.require('Blockly.Input'); +/* eslint-disable-next-line no-unused-vars */ +const {Block} = goog.requireType('Blockly.Block'); +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); +const {ConnectionType} = goog.require('Blockly.ConnectionType'); +const {FieldDropdown} = goog.require('Blockly.FieldDropdown'); +const {FieldImage} = goog.require('Blockly.FieldImage'); +const {FieldTextInput} = goog.require('Blockly.FieldTextInput'); +const {Mutator} = goog.require('Blockly.Mutator'); +/* eslint-disable-next-line no-unused-vars */ +const {Workspace} = goog.requireType('Blockly.Workspace'); +const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldMultilineInput'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldVariable'); + + +/** + * A dictionary of the block definitions provided by this module. + * @type {!Object} + */ +const blocks = createBlockDefinitionsFromJsonArray([ + // Block for text value + { + 'type': 'text', + 'message0': '%1', + 'args0': [{ + 'type': 'field_input', + 'name': 'TEXT', + 'text': '', + }], + 'output': 'String', + 'style': 'text_blocks', + 'helpUrl': '%{BKY_TEXT_TEXT_HELPURL}', + 'tooltip': '%{BKY_TEXT_TEXT_TOOLTIP}', + 'extensions': [ + 'text_quotes', + 'parent_tooltip_when_inline', + ], + }, + { + 'type': 'text_multiline', + 'message0': '%1 %2', + 'args0': [ + { + 'type': 'field_image', + 'src': + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAARCAYAAADpP' + + 'U2iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAdhgAAHYYBXaITgQAAABh0RVh0' + + 'U29mdHdhcmUAcGFpbnQubmV0IDQuMS42/U4J6AAAAP1JREFUOE+Vks0KQUEYhjm' + + 'RIja4ABtZ2dm5A3t3Ia6AUm7CylYuQRaUhZSlLZJiQbFAyRnPN33y01HOW08z88' + + '73zpwzM4F3GWOCruvGIE4/rLaV+Nq1hVGMBqzhqlxgCys4wJA65xnogMHsQ5luj' + + 'nYHTejBBCK2mE4abjCgMGhNxHgDFWjDSG07kdfVa2pZMf4ZyMAdWmpZMfYOsLiD' + + 'MYMjlMB+K613QISRhTnITnsYg5yUd0DETmEoMlkFOeIT/A58iyK5E18BuTBfgYX' + + 'fwNJv4P9/oEBerLylOnRhygmGdPpTTBZAPkde61lbQe4moWUvYUZYLfUNftIY4z' + + 'wA5X2Z9AYnQrEAAAAASUVORK5CYII=', + 'width': 12, + 'height': 17, + 'alt': '\u00B6', + }, + { + 'type': 'field_multilinetext', + 'name': 'TEXT', + 'text': '', + }, + ], + 'output': 'String', + 'style': 'text_blocks', + 'helpUrl': '%{BKY_TEXT_TEXT_HELPURL}', + 'tooltip': '%{BKY_TEXT_TEXT_TOOLTIP}', + 'extensions': [ + 'parent_tooltip_when_inline', + ], + }, + { + 'type': 'text_join', + 'message0': '', + 'output': 'String', + 'style': 'text_blocks', + 'helpUrl': '%{BKY_TEXT_JOIN_HELPURL}', + 'tooltip': '%{BKY_TEXT_JOIN_TOOLTIP}', + 'mutator': 'text_join_mutator', + + }, + { + 'type': 'text_create_join_container', + 'message0': '%{BKY_TEXT_CREATE_JOIN_TITLE_JOIN} %1 %2', + 'args0': [ + { + 'type': 'input_dummy', + }, + { + 'type': 'input_statement', + 'name': 'STACK', + }, + ], + 'style': 'text_blocks', + 'tooltip': '%{BKY_TEXT_CREATE_JOIN_TOOLTIP}', + 'enableContextMenu': false, + }, + { + 'type': 'text_create_join_item', + 'message0': '%{BKY_TEXT_CREATE_JOIN_ITEM_TITLE_ITEM}', + 'previousStatement': null, + 'nextStatement': null, + 'style': 'text_blocks', + 'tooltip': '%{BKY_TEXT_CREATE_JOIN_ITEM_TOOLTIP}', + 'enableContextMenu': false, + }, + { + 'type': 'text_append', + 'message0': '%{BKY_TEXT_APPEND_TITLE}', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': '%{BKY_TEXT_APPEND_VARIABLE}', + }, + { + 'type': 'input_value', + 'name': 'TEXT', + }, + ], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'text_blocks', + 'extensions': [ + 'text_append_tooltip', + ], + }, + { + 'type': 'text_length', + 'message0': '%{BKY_TEXT_LENGTH_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'VALUE', + 'check': ['String', 'Array'], + }, + ], + 'output': 'Number', + 'style': 'text_blocks', + 'tooltip': '%{BKY_TEXT_LENGTH_TOOLTIP}', + 'helpUrl': '%{BKY_TEXT_LENGTH_HELPURL}', + }, + { + 'type': 'text_isEmpty', + 'message0': '%{BKY_TEXT_ISEMPTY_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'VALUE', + 'check': ['String', 'Array'], + }, + ], + 'output': 'Boolean', + 'style': 'text_blocks', + 'tooltip': '%{BKY_TEXT_ISEMPTY_TOOLTIP}', + 'helpUrl': '%{BKY_TEXT_ISEMPTY_HELPURL}', + }, + { + 'type': 'text_indexOf', + 'message0': '%{BKY_TEXT_INDEXOF_TITLE}', + 'args0': [ + { + 'type': 'input_value', + 'name': 'VALUE', + 'check': 'String', + }, + { + 'type': 'field_dropdown', + 'name': 'END', + 'options': [ + [ + '%{BKY_TEXT_INDEXOF_OPERATOR_FIRST}', + 'FIRST', + ], + [ + '%{BKY_TEXT_INDEXOF_OPERATOR_LAST}', + 'LAST', + ], + ], + }, + { + 'type': 'input_value', + 'name': 'FIND', + 'check': 'String', + }, + ], + 'output': 'Number', + 'style': 'text_blocks', + 'helpUrl': '%{BKY_TEXT_INDEXOF_HELPURL}', + 'inputsInline': true, + 'extensions': [ + 'text_indexOf_tooltip', + ], + }, + { + 'type': 'text_charAt', + 'message0': '%{BKY_TEXT_CHARAT_TITLE}', // "in text %1 %2" + 'args0': [ + { + 'type': 'input_value', + 'name': 'VALUE', + 'check': 'String', + }, + { + 'type': 'field_dropdown', + 'name': 'WHERE', + 'options': [ + ['%{BKY_TEXT_CHARAT_FROM_START}', 'FROM_START'], + ['%{BKY_TEXT_CHARAT_FROM_END}', 'FROM_END'], + ['%{BKY_TEXT_CHARAT_FIRST}', 'FIRST'], + ['%{BKY_TEXT_CHARAT_LAST}', 'LAST'], + ['%{BKY_TEXT_CHARAT_RANDOM}', 'RANDOM'], + ], + }, + ], + 'output': 'String', + 'style': 'text_blocks', + 'helpUrl': '%{BKY_TEXT_CHARAT_HELPURL}', + 'inputsInline': true, + 'mutator': 'text_charAt_mutator', + }, +]); +exports.blocks = blocks; + +blocks['text_getSubstring'] = { + /** + * Block for getting substring. + * @this {Block} + */ + init: function() { + this['WHERE_OPTIONS_1'] = [ + [Msg['TEXT_GET_SUBSTRING_START_FROM_START'], 'FROM_START'], + [Msg['TEXT_GET_SUBSTRING_START_FROM_END'], 'FROM_END'], + [Msg['TEXT_GET_SUBSTRING_START_FIRST'], 'FIRST'], + ]; + this['WHERE_OPTIONS_2'] = [ + [Msg['TEXT_GET_SUBSTRING_END_FROM_START'], 'FROM_START'], + [Msg['TEXT_GET_SUBSTRING_END_FROM_END'], 'FROM_END'], + [Msg['TEXT_GET_SUBSTRING_END_LAST'], 'LAST'], + ]; + this.setHelpUrl(Msg['TEXT_GET_SUBSTRING_HELPURL']); + this.setStyle('text_blocks'); + this.appendValueInput('STRING').setCheck('String').appendField( + Msg['TEXT_GET_SUBSTRING_INPUT_IN_TEXT']); + this.appendDummyInput('AT1'); + this.appendDummyInput('AT2'); + if (Msg['TEXT_GET_SUBSTRING_TAIL']) { + this.appendDummyInput('TAIL').appendField(Msg['TEXT_GET_SUBSTRING_TAIL']); + } + this.setInputsInline(true); + this.setOutput(true, 'String'); + this.updateAt_(1, true); + this.updateAt_(2, true); + this.setTooltip(Msg['TEXT_GET_SUBSTRING_TOOLTIP']); + }, + /** + * Create XML to represent whether there are 'AT' inputs. + * Backwards compatible serialization implementation. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + const isAt1 = this.getInput('AT1').type === ConnectionType.INPUT_VALUE; + container.setAttribute('at1', isAt1); + const isAt2 = this.getInput('AT2').type === ConnectionType.INPUT_VALUE; + container.setAttribute('at2', isAt2); + return container; + }, + /** + * Parse XML to restore the 'AT' inputs. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + const isAt1 = (xmlElement.getAttribute('at1') === 'true'); + const isAt2 = (xmlElement.getAttribute('at2') === 'true'); + this.updateAt_(1, isAt1); + this.updateAt_(2, isAt2); + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this object is already encoded in the + // dropdown values. + // XML hooks are kept for backwards compatibility. + + /** + * Create or delete an input for a numeric index. + * This block has two such inputs, independent of each other. + * @param {number} n Specify first or second input (1 or 2). + * @param {boolean} isAt True if the input should exist. + * @private + * @this {Block} + */ + updateAt_: function(n, isAt) { + // Create or delete an input for the numeric index. + // Destroy old 'AT' and 'ORDINAL' inputs. + this.removeInput('AT' + n); + this.removeInput('ORDINAL' + n, true); + // Create either a value 'AT' input or a dummy input. + if (isAt) { + this.appendValueInput('AT' + n).setCheck('Number'); + if (Msg['ORDINAL_NUMBER_SUFFIX']) { + this.appendDummyInput('ORDINAL' + n) + .appendField(Msg['ORDINAL_NUMBER_SUFFIX']); + } + } else { + this.appendDummyInput('AT' + n); + } + // Move tail, if present, to end of block. + if (n === 2 && Msg['TEXT_GET_SUBSTRING_TAIL']) { + this.removeInput('TAIL', true); + this.appendDummyInput('TAIL').appendField(Msg['TEXT_GET_SUBSTRING_TAIL']); + } + const menu = new FieldDropdown( + this['WHERE_OPTIONS_' + n], + /** + * @param {*} value The input value. + * @this {FieldDropdown} + * @returns {null|undefined} Null if the field has been replaced; + * otherwise undefined. + */ + function(value) { + const newAt = (value === 'FROM_START') || (value === 'FROM_END'); + // The 'isAt' variable is available due to this function being a + // closure. + if (newAt !== isAt) { + const block = this.getSourceBlock(); + block.updateAt_(n, newAt); + // This menu has been destroyed and replaced. + // Update the replacement. + block.setFieldValue(value, 'WHERE' + n); + return null; + } + return undefined; + }); + + this.getInput('AT' + n).appendField(menu, 'WHERE' + n); + if (n === 1) { + this.moveInputBefore('AT1', 'AT2'); + if (this.getInput('ORDINAL1')) { + this.moveInputBefore('ORDINAL1', 'AT2'); + } + } + }, +}; + +blocks['text_changeCase'] = { + /** + * Block for changing capitalization. + * @this {Block} + */ + init: function() { + const OPERATORS = [ + [Msg['TEXT_CHANGECASE_OPERATOR_UPPERCASE'], 'UPPERCASE'], + [Msg['TEXT_CHANGECASE_OPERATOR_LOWERCASE'], 'LOWERCASE'], + [Msg['TEXT_CHANGECASE_OPERATOR_TITLECASE'], 'TITLECASE'], + ]; + this.setHelpUrl(Msg['TEXT_CHANGECASE_HELPURL']); + this.setStyle('text_blocks'); + this.appendValueInput('TEXT').setCheck('String').appendField( + new FieldDropdown(OPERATORS), 'CASE'); + this.setOutput(true, 'String'); + this.setTooltip(Msg['TEXT_CHANGECASE_TOOLTIP']); + }, +}; + +blocks['text_trim'] = { + /** + * Block for trimming spaces. + * @this {Block} + */ + init: function() { + const OPERATORS = [ + [Msg['TEXT_TRIM_OPERATOR_BOTH'], 'BOTH'], + [Msg['TEXT_TRIM_OPERATOR_LEFT'], 'LEFT'], + [Msg['TEXT_TRIM_OPERATOR_RIGHT'], 'RIGHT'], + ]; + this.setHelpUrl(Msg['TEXT_TRIM_HELPURL']); + this.setStyle('text_blocks'); + this.appendValueInput('TEXT').setCheck('String').appendField( + new FieldDropdown(OPERATORS), 'MODE'); + this.setOutput(true, 'String'); + this.setTooltip(Msg['TEXT_TRIM_TOOLTIP']); + }, +}; + +blocks['text_print'] = { + /** + * Block for print statement. + * @this {Block} + */ + init: function() { + this.jsonInit({ + 'message0': Msg['TEXT_PRINT_TITLE'], + 'args0': [ + { + 'type': 'input_value', + 'name': 'TEXT', + }, + ], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'text_blocks', + 'tooltip': Msg['TEXT_PRINT_TOOLTIP'], + 'helpUrl': Msg['TEXT_PRINT_HELPURL'], + }); + }, +}; + + +/** + * Common properties for the text_prompt_ext and text_prompt blocks + * definitions. + */ +const TEXT_PROMPT_COMMON = { + /** + * Modify this block to have the correct output type. + * @param {string} newOp Either 'TEXT' or 'NUMBER'. + * @private + * @this {Block} + */ + updateType_: function(newOp) { + this.outputConnection.setCheck(newOp === 'NUMBER' ? 'Number' : 'String'); + }, + /** + * Create XML to represent the output type. + * Backwards compatible serialization implementation. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + container.setAttribute('type', this.getFieldValue('TYPE')); + return container; + }, + /** + * Parse XML to restore the output type. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + this.updateType_(xmlElement.getAttribute('type')); + }, +}; + +blocks['text_prompt_ext'] = { + ...TEXT_PROMPT_COMMON, + /** + * Block for prompt function (external message). + * @this {Block} + */ + init: function() { + const TYPES = [ + [Msg['TEXT_PROMPT_TYPE_TEXT'], 'TEXT'], + [Msg['TEXT_PROMPT_TYPE_NUMBER'], 'NUMBER'], + ]; + this.setHelpUrl(Msg['TEXT_PROMPT_HELPURL']); + this.setStyle('text_blocks'); + // Assign 'this' to a variable for use in the closures below. + const thisBlock = this; + const dropdown = new FieldDropdown(TYPES, function(newOp) { + thisBlock.updateType_(newOp); + }); + this.appendValueInput('TEXT').appendField(dropdown, 'TYPE'); + this.setOutput(true, 'String'); + this.setTooltip(function() { + return (thisBlock.getFieldValue('TYPE') === 'TEXT') ? + Msg['TEXT_PROMPT_TOOLTIP_TEXT'] : + Msg['TEXT_PROMPT_TOOLTIP_NUMBER']; + }); + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this object is already encoded in the + // dropdown values. + // XML hooks are kept for backwards compatibility. +}; + +blocks['text_prompt'] = { + ...TEXT_PROMPT_COMMON, + /** + * Block for prompt function (internal message). + * The 'text_prompt_ext' block is preferred as it is more flexible. + * @this {Block} + */ + init: function() { + this.mixin(QUOTE_IMAGE_MIXIN); + const TYPES = [ + [Msg['TEXT_PROMPT_TYPE_TEXT'], 'TEXT'], + [Msg['TEXT_PROMPT_TYPE_NUMBER'], 'NUMBER'], + ]; + + // Assign 'this' to a variable for use in the closures below. + const thisBlock = this; + this.setHelpUrl(Msg['TEXT_PROMPT_HELPURL']); + this.setStyle('text_blocks'); + const dropdown = new FieldDropdown(TYPES, function(newOp) { + thisBlock.updateType_(newOp); + }); + this.appendDummyInput() + .appendField(dropdown, 'TYPE') + .appendField(this.newQuote_(true)) + .appendField(new FieldTextInput(''), 'TEXT') + .appendField(this.newQuote_(false)); + this.setOutput(true, 'String'); + this.setTooltip(function() { + return (thisBlock.getFieldValue('TYPE') === 'TEXT') ? + Msg['TEXT_PROMPT_TOOLTIP_TEXT'] : + Msg['TEXT_PROMPT_TOOLTIP_NUMBER']; + }); + }, +}; + +blocks['text_count'] = { + /** + * Block for counting how many times one string appears within another string. + * @this {Block} + */ + init: function() { + this.jsonInit({ + 'message0': Msg['TEXT_COUNT_MESSAGE0'], + 'args0': [ + { + 'type': 'input_value', + 'name': 'SUB', + 'check': 'String', + }, + { + 'type': 'input_value', + 'name': 'TEXT', + 'check': 'String', + }, + ], + 'output': 'Number', + 'inputsInline': true, + 'style': 'text_blocks', + 'tooltip': Msg['TEXT_COUNT_TOOLTIP'], + 'helpUrl': Msg['TEXT_COUNT_HELPURL'], + }); + }, +}; + +blocks['text_replace'] = { + /** + * Block for replacing one string with another in the text. + * @this {Block} + */ + init: function() { + this.jsonInit({ + 'message0': Msg['TEXT_REPLACE_MESSAGE0'], + 'args0': [ + { + 'type': 'input_value', + 'name': 'FROM', + 'check': 'String', + }, + { + 'type': 'input_value', + 'name': 'TO', + 'check': 'String', + }, + { + 'type': 'input_value', + 'name': 'TEXT', + 'check': 'String', + }, + ], + 'output': 'String', + 'inputsInline': true, + 'style': 'text_blocks', + 'tooltip': Msg['TEXT_REPLACE_TOOLTIP'], + 'helpUrl': Msg['TEXT_REPLACE_HELPURL'], + }); + }, +}; + +blocks['text_reverse'] = { + /** + * Block for reversing a string. + * @this {Block} + */ + init: function() { + this.jsonInit({ + 'message0': Msg['TEXT_REVERSE_MESSAGE0'], + 'args0': [ + { + 'type': 'input_value', + 'name': 'TEXT', + 'check': 'String', + }, + ], + 'output': 'String', + 'inputsInline': true, + 'style': 'text_blocks', + 'tooltip': Msg['TEXT_REVERSE_TOOLTIP'], + 'helpUrl': Msg['TEXT_REVERSE_HELPURL'], + }); + }, +}; + +/** + * @mixin + * @package + * @readonly + */ +const QUOTE_IMAGE_MIXIN = { + /** + * Image data URI of an LTR opening double quote (same as RTL closing double + * quote). + * @readonly + */ + QUOTE_IMAGE_LEFT_DATAURI: + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAA' + + 'n0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY' + + '1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1' + + 'HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMf' + + 'z9AylsaRRgGzvZAAAAAElFTkSuQmCC', + /** + * Image data URI of an LTR closing double quote (same as RTL opening double + * quote). + * @readonly + */ + QUOTE_IMAGE_RIGHT_DATAURI: + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAA' + + 'qUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhg' + + 'gONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvB' + + 'O3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5Aos' + + 'lLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==', + /** + * Pixel width of QUOTE_IMAGE_LEFT_DATAURI and QUOTE_IMAGE_RIGHT_DATAURI. + * @readonly + */ + QUOTE_IMAGE_WIDTH: 12, + /** + * Pixel height of QUOTE_IMAGE_LEFT_DATAURI and QUOTE_IMAGE_RIGHT_DATAURI. + * @readonly + */ + QUOTE_IMAGE_HEIGHT: 12, + + /** + * Inserts appropriate quote images before and after the named field. + * @param {string} fieldName The name of the field to wrap with quotes. + * @this {Block} + */ + quoteField_: function(fieldName) { + for (let i = 0, input; (input = this.inputList[i]); i++) { + for (let j = 0, field; (field = input.fieldRow[j]); j++) { + if (fieldName === field.name) { + input.insertFieldAt(j, this.newQuote_(true)); + input.insertFieldAt(j + 2, this.newQuote_(false)); + return; + } + } + } + console.warn( + 'field named "' + fieldName + '" not found in ' + this.toDevString()); + }, + + /** + * A helper function that generates a FieldImage of an opening or + * closing double quote. The selected quote will be adapted for RTL blocks. + * @param {boolean} open If the image should be open quote (“ in LTR). + * Otherwise, a closing quote is used (” in LTR). + * @return {!FieldImage} The new field. + * @this {Block} + */ + newQuote_: function(open) { + const isLeft = this.RTL ? !open : open; + const dataUri = + isLeft ? this.QUOTE_IMAGE_LEFT_DATAURI : this.QUOTE_IMAGE_RIGHT_DATAURI; + return new FieldImage( + dataUri, this.QUOTE_IMAGE_WIDTH, this.QUOTE_IMAGE_HEIGHT, + isLeft ? '\u201C' : '\u201D'); + }, +}; + +/** + * Wraps TEXT field with images of double quote characters. + * @this {Block} + */ +const TEXT_QUOTES_EXTENSION = function() { + this.mixin(QUOTE_IMAGE_MIXIN); + this.quoteField_('TEXT'); +}; + +/** + * Mixin for mutator functions in the 'text_join_mutator' extension. + * @mixin + * @augments Block + * @package + */ +const TEXT_JOIN_MUTATOR_MIXIN = { + /** + * Create XML to represent number of text inputs. + * Backwards compatible serialization implementation. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + container.setAttribute('items', this.itemCount_); + return container; + }, + /** + * Parse XML to restore the text inputs. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); + this.updateShape_(); + }, + /** + * Returns the state of this block as a JSON serializable object. + * @return {{itemCount: number}} The state of this block, ie the item count. + */ + saveExtraState: function() { + return { + 'itemCount': this.itemCount_, + }; + }, + /** + * Applies the given state to this block. + * @param {*} state The state to apply to this block, ie the item count. + */ + loadExtraState: function(state) { + this.itemCount_ = state['itemCount']; + this.updateShape_(); + }, + /** + * Populate the mutator's dialog with this block's components. + * @param {!Workspace} workspace Mutator's workspace. + * @return {!Block} Root block in mutator. + * @this {Block} + */ + decompose: function(workspace) { + const containerBlock = workspace.newBlock('text_create_join_container'); + containerBlock.initSvg(); + let connection = containerBlock.getInput('STACK').connection; + for (let i = 0; i < this.itemCount_; i++) { + const itemBlock = workspace.newBlock('text_create_join_item'); + itemBlock.initSvg(); + connection.connect(itemBlock.previousConnection); + connection = itemBlock.nextConnection; + } + return containerBlock; + }, + /** + * Reconfigure this block based on the mutator dialog's components. + * @param {!Block} containerBlock Root block in mutator. + * @this {Block} + */ + compose: function(containerBlock) { + let itemBlock = containerBlock.getInputTargetBlock('STACK'); + // Count number of inputs. + const connections = []; + while (itemBlock && !itemBlock.isInsertionMarker()) { + connections.push(itemBlock.valueConnection_); + itemBlock = + itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); + } + // Disconnect any children that don't belong. + for (let i = 0; i < this.itemCount_; i++) { + const connection = this.getInput('ADD' + i).connection.targetConnection; + if (connection && connections.indexOf(connection) === -1) { + connection.disconnect(); + } + } + this.itemCount_ = connections.length; + this.updateShape_(); + // Reconnect any child blocks. + for (let i = 0; i < this.itemCount_; i++) { + Mutator.reconnect(connections[i], this, 'ADD' + i); + } + }, + /** + * Store pointers to any connected child blocks. + * @param {!Block} containerBlock Root block in mutator. + * @this {Block} + */ + saveConnections: function(containerBlock) { + let itemBlock = containerBlock.getInputTargetBlock('STACK'); + let i = 0; + while (itemBlock) { + const input = this.getInput('ADD' + i); + itemBlock.valueConnection_ = input && input.connection.targetConnection; + itemBlock = + itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); + i++; + } + }, + /** + * Modify this block to have the correct number of inputs. + * @private + * @this {Block} + */ + updateShape_: function() { + if (this.itemCount_ && this.getInput('EMPTY')) { + this.removeInput('EMPTY'); + } else if (!this.itemCount_ && !this.getInput('EMPTY')) { + this.appendDummyInput('EMPTY') + .appendField(this.newQuote_(true)) + .appendField(this.newQuote_(false)); + } + // Add new inputs. + for (let i = 0; i < this.itemCount_; i++) { + if (!this.getInput('ADD' + i)) { + const input = this.appendValueInput('ADD' + i).setAlign(Align.RIGHT); + if (i === 0) { + input.appendField(Msg['TEXT_JOIN_TITLE_CREATEWITH']); + } + } + } + // Remove deleted inputs. + for (let i = this.itemCount_; this.getInput('ADD' + i); i++) { + this.removeInput('ADD' + i); + } + }, +}; + +/** + * Performs final setup of a text_join block. + * @this {Block} + */ +const TEXT_JOIN_EXTENSION = function() { + // Add the quote mixin for the itemCount_ = 0 case. + this.mixin(QUOTE_IMAGE_MIXIN); + // Initialize the mutator values. + this.itemCount_ = 2; + this.updateShape_(); + // Configure the mutator UI. + this.setMutator(new Mutator(['text_create_join_item'])); +}; + +// Update the tooltip of 'text_append' block to reference the variable. +Extensions.register( + 'text_append_tooltip', + Extensions.buildTooltipWithFieldText('%{BKY_TEXT_APPEND_TOOLTIP}', 'VAR')); + +/** + * Update the tooltip of 'text_append' block to reference the variable. + * @this {Block} + */ +const TEXT_INDEXOF_TOOLTIP_EXTENSION = function() { + // Assign 'this' to a variable for use in the tooltip closure below. + const thisBlock = this; + this.setTooltip(function() { + return Msg['TEXT_INDEXOF_TOOLTIP'].replace( + '%1', thisBlock.workspace.options.oneBasedIndex ? '0' : '-1'); + }); +}; + +/** + * Mixin for mutator functions in the 'text_charAt_mutator' extension. + * @mixin + * @augments Block + * @package + */ +const TEXT_CHARAT_MUTATOR_MIXIN = { + /** + * Create XML to represent whether there is an 'AT' input. + * Backwards compatible serialization implementation. + * @return {!Element} XML storage element. + * @this {Block} + */ + mutationToDom: function() { + const container = xmlUtils.createElement('mutation'); + container.setAttribute('at', !!this.isAt_); + return container; + }, + /** + * Parse XML to restore the 'AT' input. + * Backwards compatible serialization implementation. + * @param {!Element} xmlElement XML storage element. + * @this {Block} + */ + domToMutation: function(xmlElement) { + // Note: Until January 2013 this block did not have mutations, + // so 'at' defaults to true. + const isAt = (xmlElement.getAttribute('at') !== 'false'); + this.updateAt_(isAt); + }, + + // This block does not need JSO serialization hooks (saveExtraState and + // loadExtraState) because the state of this object is already encoded in the + // dropdown values. + // XML hooks are kept for backwards compatibility. + + /** + * Create or delete an input for the numeric index. + * @param {boolean} isAt True if the input should exist. + * @private + * @this {Block} + */ + updateAt_: function(isAt) { + // Destroy old 'AT' and 'ORDINAL' inputs. + this.removeInput('AT', true); + this.removeInput('ORDINAL', true); + // Create either a value 'AT' input or a dummy input. + if (isAt) { + this.appendValueInput('AT').setCheck('Number'); + if (Msg['ORDINAL_NUMBER_SUFFIX']) { + this.appendDummyInput('ORDINAL').appendField( + Msg['ORDINAL_NUMBER_SUFFIX']); + } + } + if (Msg['TEXT_CHARAT_TAIL']) { + this.removeInput('TAIL', true); + this.appendDummyInput('TAIL').appendField(Msg['TEXT_CHARAT_TAIL']); + } + + this.isAt_ = isAt; + }, +}; + +/** + * Does the initial mutator update of text_charAt and adds the tooltip + * @this {Block} + */ +const TEXT_CHARAT_EXTENSION = function() { + const dropdown = this.getField('WHERE'); + dropdown.setValidator( + /** + * @param {*} value The input value. + * @this {FieldDropdown} + */ + function(value) { + const newAt = (value === 'FROM_START') || (value === 'FROM_END'); + if (newAt !== this.isAt_) { + const block = this.getSourceBlock(); + block.updateAt_(newAt); + } + }); + this.updateAt_(true); + // Assign 'this' to a variable for use in the tooltip closure below. + const thisBlock = this; + this.setTooltip(function() { + const where = thisBlock.getFieldValue('WHERE'); + let tooltip = Msg['TEXT_CHARAT_TOOLTIP']; + if (where === 'FROM_START' || where === 'FROM_END') { + const msg = (where === 'FROM_START') ? + Msg['LISTS_INDEX_FROM_START_TOOLTIP'] : + Msg['LISTS_INDEX_FROM_END_TOOLTIP']; + if (msg) { + tooltip += ' ' + + msg.replace( + '%1', thisBlock.workspace.options.oneBasedIndex ? '#1' : '#0'); + } + } + return tooltip; + }); +}; + +Extensions.register('text_indexOf_tooltip', TEXT_INDEXOF_TOOLTIP_EXTENSION); + +Extensions.register('text_quotes', TEXT_QUOTES_EXTENSION); + +Extensions.registerMutator( + 'text_join_mutator', TEXT_JOIN_MUTATOR_MIXIN, TEXT_JOIN_EXTENSION); + +Extensions.registerMutator( + 'text_charAt_mutator', TEXT_CHARAT_MUTATOR_MIXIN, TEXT_CHARAT_EXTENSION); + +// Register provided blocks. +defineBlocks(blocks); diff --git a/blocks/variables.js b/blocks/variables.js index 56a7b5eb8c9..891336b5b27 100644 --- a/blocks/variables.js +++ b/blocks/variables.js @@ -1,174 +1,217 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Variable blocks for Blockly. - * @suppress {checkTypes} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks.variables'); - -const ContextMenu = goog.require('Blockly.ContextMenu'); -const Extensions = goog.require('Blockly.Extensions'); -const Variables = goog.require('Blockly.Variables'); -const xmlUtils = goog.require('Blockly.utils.xml'); -/* eslint-disable-next-line no-unused-vars */ -const {Block} = goog.requireType('Blockly.Block'); -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); -const {Msg} = goog.require('Blockly.Msg'); -const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldLabel'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldVariable'); - - -/** - * A dictionary of the block definitions provided by this module. - * @type {!Object} - */ -const blocks = createBlockDefinitionsFromJsonArray([ - // Block for variable getter. - { - 'type': 'variables_get', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', - }, - ], - 'output': null, - 'style': 'variable_blocks', - 'helpUrl': '%{BKY_VARIABLES_GET_HELPURL}', - 'tooltip': '%{BKY_VARIABLES_GET_TOOLTIP}', - 'extensions': ['contextMenu_variableSetterGetter'], - }, - // Block for variable setter. - { - 'type': 'variables_set', - 'message0': '%{BKY_VARIABLES_SET}', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', - }, - { - 'type': 'input_value', - 'name': 'VALUE', - }, - ], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'variable_blocks', - 'tooltip': '%{BKY_VARIABLES_SET_TOOLTIP}', - 'helpUrl': '%{BKY_VARIABLES_SET_HELPURL}', - 'extensions': ['contextMenu_variableSetterGetter'], - }, -]); -exports.blocks = blocks; - - -/** - * Mixin to add context menu items to create getter/setter blocks for this - * setter/getter. - * Used by blocks 'variables_set' and 'variables_get'. - * @mixin - * @augments Block - * @package - * @readonly - */ -const CUSTOM_CONTEXT_MENU_VARIABLE_GETTER_SETTER_MIXIN = { - /** - * Add menu option to create getter/setter block for this setter/getter. - * @param {!Array} options List of menu options to add to. - * @this {Block} - */ - customContextMenu: function(options) { - if (!this.isInFlyout) { - let oppositeType; - let contextMenuMsg; - // Getter blocks have the option to create a setter block, and vice versa. - if (this.type === 'variables_get') { - oppositeType = 'variables_set'; - contextMenuMsg = Msg['VARIABLES_GET_CREATE_SET']; - } else { - oppositeType = 'variables_get'; - contextMenuMsg = Msg['VARIABLES_SET_CREATE_GET']; - } - - const option = {enabled: this.workspace.remainingCapacity() > 0}; - const name = this.getField('VAR').getText(); - option.text = contextMenuMsg.replace('%1', name); - const xmlField = xmlUtils.createElement('field'); - xmlField.setAttribute('name', 'VAR'); - xmlField.appendChild(xmlUtils.createTextNode(name)); - const xmlBlock = xmlUtils.createElement('block'); - xmlBlock.setAttribute('type', oppositeType); - xmlBlock.appendChild(xmlField); - option.callback = ContextMenu.callbackFactory(this, xmlBlock); - options.push(option); - // Getter blocks have the option to rename or delete that variable. - } else { - if (this.type === 'variables_get' || - this.type === 'variables_get_reporter') { - const renameOption = { - text: Msg['RENAME_VARIABLE'], - enabled: true, - callback: renameOptionCallbackFactory(this), - }; - const name = this.getField('VAR').getText(); - const deleteOption = { - text: Msg['DELETE_VARIABLE'].replace('%1', name), - enabled: true, - callback: deleteOptionCallbackFactory(this), - }; - options.unshift(renameOption); - options.unshift(deleteOption); - } - } - }, -}; - -/** - * Factory for callbacks for rename variable dropdown menu option - * associated with a variable getter block. - * @param {!Block} block The block with the variable to rename. - * @return {!function()} A function that renames the variable. - */ -const renameOptionCallbackFactory = function(block) { - return function() { - const workspace = block.workspace; - const variable = block.getField('VAR').getVariable(); - Variables.renameVariable(workspace, variable); - }; -}; - -/** - * Factory for callbacks for delete variable dropdown menu option - * associated with a variable getter block. - * @param {!Block} block The block with the variable to delete. - * @return {!function()} A function that deletes the variable. - */ -const deleteOptionCallbackFactory = function(block) { - return function() { - const workspace = block.workspace; - const variable = block.getField('VAR').getVariable(); - workspace.deleteVariableById(variable.getId()); - workspace.refreshToolboxSelection(); - }; -}; - -Extensions.registerMixin( - 'contextMenu_variableSetterGetter', - CUSTOM_CONTEXT_MENU_VARIABLE_GETTER_SETTER_MIXIN); - -// Register provided blocks. -defineBlocks(blocks); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Variable blocks for Blockly. + * @suppress {checkTypes} + */ +'use strict'; + +goog.module('Blockly.libraryBlocks.variables'); + +const ContextMenu = goog.require('Blockly.ContextMenu'); +const Extensions = goog.require('Blockly.Extensions'); +const Variables = goog.require('Blockly.Variables'); +const xmlUtils = goog.require('Blockly.utils.xml'); +/* eslint-disable-next-line no-unused-vars */ +const {Block} = goog.requireType('Blockly.Block'); +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); +const {Msg} = goog.require('Blockly.Msg'); +const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldLabel'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldVariable'); + + +/** + * A dictionary of the block definitions provided by this module. + * @type {!Object} + */ +const blocks = createBlockDefinitionsFromJsonArray([ + // Block for variable getter. + { + 'type': 'variables_get', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', + }, + ], + 'output': null, + 'style': 'variable_blocks', + 'helpUrl': '%{BKY_VARIABLES_GET_HELPURL}', + 'tooltip': '%{BKY_VARIABLES_GET_TOOLTIP}', + 'extensions': ['contextMenu_variableSetterGetter'], + }, + // Block for variable setter. + { + 'type': 'variables_set', + 'message0': '%{BKY_VARIABLES_SET}', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', + }, + { + 'type': 'input_value', + 'name': 'VALUE', + }, + ], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'variable_blocks', + 'tooltip': '%{BKY_VARIABLES_SET_TOOLTIP}', + 'helpUrl': '%{BKY_VARIABLES_SET_HELPURL}', + 'extensions': ['contextMenu_variableSetterGetter'], + }, + { + 'type': 'variables_call', + 'message0': '%{BKY_CALL_TEXT} %1.%2', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', + }, + { + 'type': 'input_value', + 'name': 'VALUE', + }, + ], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'variable_call_blocks', + 'tooltip': '%{BKY_VARIABLES_CALL_TOOLTIP}', + //'tooltip': 'Chama um método da variável atual.', + //'helpUrl': '%{BKY_VARIABLES_CALL_HELPURL}', + 'extensions': ['contextMenu_variableSetterGetter'], + }, + { + 'type': 'variables_call_out', + 'message0': '%{BKY_RETURN_TEXT} %1.%2', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', + }, + { + 'type': 'input_value', + 'name': 'VALUE', + }, + ], + 'style': 'variable_call_blocks', + "output": null, + 'tooltip': '%{BKY_VARIABLES_CALL_OUT_TOOLTIP}', + //'tooltip': 'Chama um método da variável atual com valor de retorno.', + //'helpUrl': '%{BKY_VARIABLES_CALL_OUT_HELPURL}', + 'extensions': ['contextMenu_variableSetterGetter'], + }, +]); +exports.blocks = blocks; + + +/** + * Mixin to add context menu items to create getter/setter blocks for this + * setter/getter. + * Used by blocks 'variables_set' and 'variables_get'. + * @mixin + * @augments Block + * @package + * @readonly + */ +const CUSTOM_CONTEXT_MENU_VARIABLE_GETTER_SETTER_MIXIN = { + /** + * Add menu option to create getter/setter block for this setter/getter. + * @param {!Array} options List of menu options to add to. + * @this {Block} + */ + customContextMenu: function(options) { + if (!this.isInFlyout) { + let oppositeType; + let contextMenuMsg; + // Getter blocks have the option to create a setter block, and vice versa. + if (this.type === 'variables_get') { + oppositeType = 'variables_set'; + contextMenuMsg = Msg['VARIABLES_GET_CREATE_SET']; + } else { + oppositeType = 'variables_get'; + contextMenuMsg = Msg['VARIABLES_SET_CREATE_GET']; + } + + const option = {enabled: this.workspace.remainingCapacity() > 0}; + const name = this.getField('VAR').getText(); + option.text = contextMenuMsg.replace('%1', name); + const xmlField = xmlUtils.createElement('field'); + xmlField.setAttribute('name', 'VAR'); + xmlField.appendChild(xmlUtils.createTextNode(name)); + const xmlBlock = xmlUtils.createElement('block'); + xmlBlock.setAttribute('type', oppositeType); + xmlBlock.appendChild(xmlField); + option.callback = ContextMenu.callbackFactory(this, xmlBlock); + options.push(option); + // Getter blocks have the option to rename or delete that variable. + } else { + if (this.type === 'variables_get' || + this.type === 'variables_get_reporter') { + const renameOption = { + text: Msg['RENAME_VARIABLE'], + enabled: true, + callback: renameOptionCallbackFactory(this), + }; + const name = this.getField('VAR').getText(); + const deleteOption = { + text: Msg['DELETE_VARIABLE'].replace('%1', name), + enabled: true, + callback: deleteOptionCallbackFactory(this), + }; + options.unshift(renameOption); + options.unshift(deleteOption); + } + } + }, +}; + +/** + * Factory for callbacks for rename variable dropdown menu option + * associated with a variable getter block. + * @param {!Block} block The block with the variable to rename. + * @return {!function()} A function that renames the variable. + */ +const renameOptionCallbackFactory = function(block) { + return function() { + const workspace = block.workspace; + const variable = block.getField('VAR').getVariable(); + Variables.renameVariable(workspace, variable); + }; +}; + +/** + * Factory for callbacks for delete variable dropdown menu option + * associated with a variable getter block. + * @param {!Block} block The block with the variable to delete. + * @return {!function()} A function that deletes the variable. + */ +const deleteOptionCallbackFactory = function(block) { + return function() { + const workspace = block.workspace; + const variable = block.getField('VAR').getVariable(); + workspace.deleteVariableById(variable.getId()); + workspace.refreshToolboxSelection(); + }; +}; + +Extensions.registerMixin( + 'contextMenu_variableSetterGetter', + CUSTOM_CONTEXT_MENU_VARIABLE_GETTER_SETTER_MIXIN); + +// Register provided blocks. +defineBlocks(blocks); diff --git a/blocks/variables_dynamic.js b/blocks/variables_dynamic.js index 6020c7859d4..8beb8ea3314 100644 --- a/blocks/variables_dynamic.js +++ b/blocks/variables_dynamic.js @@ -1,190 +1,190 @@ -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Variable blocks for Blockly. - * @suppress {checkTypes} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks.variablesDynamic'); - -/* eslint-disable-next-line no-unused-vars */ -const AbstractEvent = goog.requireType('Blockly.Events.Abstract'); -const ContextMenu = goog.require('Blockly.ContextMenu'); -const Extensions = goog.require('Blockly.Extensions'); -const Variables = goog.require('Blockly.Variables'); -const xml = goog.require('Blockly.utils.xml'); -/* eslint-disable-next-line no-unused-vars */ -const {Block} = goog.requireType('Blockly.Block'); -/* eslint-disable-next-line no-unused-vars */ -const {BlockDefinition} = goog.requireType('Blockly.blocks'); -const {Msg} = goog.require('Blockly.Msg'); -const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldLabel'); -/** @suppress {extraRequire} */ -goog.require('Blockly.FieldVariable'); - - -/** - * A dictionary of the block definitions provided by this module. - * @type {!Object} - */ -const blocks = createBlockDefinitionsFromJsonArray([ - // Block for variable getter. - { - 'type': 'variables_get_dynamic', - 'message0': '%1', - 'args0': [{ - 'type': 'field_variable', - 'name': 'VAR', - 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', - }], - 'output': null, - 'style': 'variable_dynamic_blocks', - 'helpUrl': '%{BKY_VARIABLES_GET_HELPURL}', - 'tooltip': '%{BKY_VARIABLES_GET_TOOLTIP}', - 'extensions': ['contextMenu_variableDynamicSetterGetter'], - }, - // Block for variable setter. - { - 'type': 'variables_set_dynamic', - 'message0': '%{BKY_VARIABLES_SET}', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', - }, - { - 'type': 'input_value', - 'name': 'VALUE', - }, - ], - 'previousStatement': null, - 'nextStatement': null, - 'style': 'variable_dynamic_blocks', - 'tooltip': '%{BKY_VARIABLES_SET_TOOLTIP}', - 'helpUrl': '%{BKY_VARIABLES_SET_HELPURL}', - 'extensions': ['contextMenu_variableDynamicSetterGetter'], - }, -]); -exports.blocks = blocks; - -/** - * Mixin to add context menu items to create getter/setter blocks for this - * setter/getter. - * Used by blocks 'variables_set_dynamic' and 'variables_get_dynamic'. - * @mixin - * @augments Block - * @readonly - */ -const CUSTOM_CONTEXT_MENU_VARIABLE_GETTER_SETTER_MIXIN = { - /** - * Add menu option to create getter/setter block for this setter/getter. - * @param {!Array} options List of menu options to add to. - * @this {Block} - */ - customContextMenu: function(options) { - // Getter blocks have the option to create a setter block, and vice versa. - if (!this.isInFlyout) { - let oppositeType; - let contextMenuMsg; - const id = this.getFieldValue('VAR'); - const variableModel = this.workspace.getVariableById(id); - const varType = variableModel.type; - if (this.type === 'variables_get_dynamic') { - oppositeType = 'variables_set_dynamic'; - contextMenuMsg = Msg['VARIABLES_GET_CREATE_SET']; - } else { - oppositeType = 'variables_get_dynamic'; - contextMenuMsg = Msg['VARIABLES_SET_CREATE_GET']; - } - - const option = {enabled: this.workspace.remainingCapacity() > 0}; - const name = this.getField('VAR').getText(); - option.text = contextMenuMsg.replace('%1', name); - const xmlField = xml.createElement('field'); - xmlField.setAttribute('name', 'VAR'); - xmlField.setAttribute('variabletype', varType); - xmlField.appendChild(xml.createTextNode(name)); - const xmlBlock = xml.createElement('block'); - xmlBlock.setAttribute('type', oppositeType); - xmlBlock.appendChild(xmlField); - option.callback = ContextMenu.callbackFactory(this, xmlBlock); - options.push(option); - } else { - if (this.type === 'variables_get_dynamic' || - this.type === 'variables_get_reporter_dynamic') { - const renameOption = { - text: Msg['RENAME_VARIABLE'], - enabled: true, - callback: renameOptionCallbackFactory(this), - }; - const name = this.getField('VAR').getText(); - const deleteOption = { - text: Msg['DELETE_VARIABLE'].replace('%1', name), - enabled: true, - callback: deleteOptionCallbackFactory(this), - }; - options.unshift(renameOption); - options.unshift(deleteOption); - } - } - }, - /** - * Called whenever anything on the workspace changes. - * Set the connection type for this block. - * @param {AbstractEvent} _e Change event. - * @this {Block} - */ - onchange: function(_e) { - const id = this.getFieldValue('VAR'); - const variableModel = Variables.getVariable(this.workspace, id); - if (this.type === 'variables_get_dynamic') { - this.outputConnection.setCheck(variableModel.type); - } else { - this.getInput('VALUE').connection.setCheck(variableModel.type); - } - }, -}; - -/** - * Factory for callbacks for rename variable dropdown menu option - * associated with a variable getter block. - * @param {!Block} block The block with the variable to rename. - * @return {!function()} A function that renames the variable. - */ -const renameOptionCallbackFactory = function(block) { - return function() { - const workspace = block.workspace; - const variable = block.getField('VAR').getVariable(); - Variables.renameVariable(workspace, variable); - }; -}; - -/** - * Factory for callbacks for delete variable dropdown menu option - * associated with a variable getter block. - * @param {!Block} block The block with the variable to delete. - * @return {!function()} A function that deletes the variable. - */ -const deleteOptionCallbackFactory = function(block) { - return function() { - const workspace = block.workspace; - const variable = block.getField('VAR').getVariable(); - workspace.deleteVariableById(variable.getId()); - workspace.refreshToolboxSelection(); - }; -}; - -Extensions.registerMixin( - 'contextMenu_variableDynamicSetterGetter', - CUSTOM_CONTEXT_MENU_VARIABLE_GETTER_SETTER_MIXIN); - -// Register provided blocks. -defineBlocks(blocks); +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Variable blocks for Blockly. + * @suppress {checkTypes} + */ +'use strict'; + +goog.module('Blockly.libraryBlocks.variablesDynamic'); + +/* eslint-disable-next-line no-unused-vars */ +const AbstractEvent = goog.requireType('Blockly.Events.Abstract'); +const ContextMenu = goog.require('Blockly.ContextMenu'); +const Extensions = goog.require('Blockly.Extensions'); +const Variables = goog.require('Blockly.Variables'); +const xml = goog.require('Blockly.utils.xml'); +/* eslint-disable-next-line no-unused-vars */ +const {Block} = goog.requireType('Blockly.Block'); +/* eslint-disable-next-line no-unused-vars */ +const {BlockDefinition} = goog.requireType('Blockly.blocks'); +const {Msg} = goog.require('Blockly.Msg'); +const {createBlockDefinitionsFromJsonArray, defineBlocks} = goog.require('Blockly.common'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldLabel'); +/** @suppress {extraRequire} */ +goog.require('Blockly.FieldVariable'); + + +/** + * A dictionary of the block definitions provided by this module. + * @type {!Object} + */ +const blocks = createBlockDefinitionsFromJsonArray([ + // Block for variable getter. + { + 'type': 'variables_get_dynamic', + 'message0': '%1', + 'args0': [{ + 'type': 'field_variable', + 'name': 'VAR', + 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', + }], + 'output': null, + 'style': 'variable_dynamic_blocks', + 'helpUrl': '%{BKY_VARIABLES_GET_HELPURL}', + 'tooltip': '%{BKY_VARIABLES_GET_TOOLTIP}', + 'extensions': ['contextMenu_variableDynamicSetterGetter'], + }, + // Block for variable setter. + { + 'type': 'variables_set_dynamic', + 'message0': '%{BKY_VARIABLES_SET}', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': '%{BKY_VARIABLES_DEFAULT_NAME}', + }, + { + 'type': 'input_value', + 'name': 'VALUE', + }, + ], + 'previousStatement': null, + 'nextStatement': null, + 'style': 'variable_dynamic_blocks', + 'tooltip': '%{BKY_VARIABLES_SET_TOOLTIP}', + 'helpUrl': '%{BKY_VARIABLES_SET_HELPURL}', + 'extensions': ['contextMenu_variableDynamicSetterGetter'], + }, +]); +exports.blocks = blocks; + +/** + * Mixin to add context menu items to create getter/setter blocks for this + * setter/getter. + * Used by blocks 'variables_set_dynamic' and 'variables_get_dynamic'. + * @mixin + * @augments Block + * @readonly + */ +const CUSTOM_CONTEXT_MENU_VARIABLE_GETTER_SETTER_MIXIN = { + /** + * Add menu option to create getter/setter block for this setter/getter. + * @param {!Array} options List of menu options to add to. + * @this {Block} + */ + customContextMenu: function(options) { + // Getter blocks have the option to create a setter block, and vice versa. + if (!this.isInFlyout) { + let oppositeType; + let contextMenuMsg; + const id = this.getFieldValue('VAR'); + const variableModel = this.workspace.getVariableById(id); + const varType = variableModel.type; + if (this.type === 'variables_get_dynamic') { + oppositeType = 'variables_set_dynamic'; + contextMenuMsg = Msg['VARIABLES_GET_CREATE_SET']; + } else { + oppositeType = 'variables_get_dynamic'; + contextMenuMsg = Msg['VARIABLES_SET_CREATE_GET']; + } + + const option = {enabled: this.workspace.remainingCapacity() > 0}; + const name = this.getField('VAR').getText(); + option.text = contextMenuMsg.replace('%1', name); + const xmlField = xml.createElement('field'); + xmlField.setAttribute('name', 'VAR'); + xmlField.setAttribute('variabletype', varType); + xmlField.appendChild(xml.createTextNode(name)); + const xmlBlock = xml.createElement('block'); + xmlBlock.setAttribute('type', oppositeType); + xmlBlock.appendChild(xmlField); + option.callback = ContextMenu.callbackFactory(this, xmlBlock); + options.push(option); + } else { + if (this.type === 'variables_get_dynamic' || + this.type === 'variables_get_reporter_dynamic') { + const renameOption = { + text: Msg['RENAME_VARIABLE'], + enabled: true, + callback: renameOptionCallbackFactory(this), + }; + const name = this.getField('VAR').getText(); + const deleteOption = { + text: Msg['DELETE_VARIABLE'].replace('%1', name), + enabled: true, + callback: deleteOptionCallbackFactory(this), + }; + options.unshift(renameOption); + options.unshift(deleteOption); + } + } + }, + /** + * Called whenever anything on the workspace changes. + * Set the connection type for this block. + * @param {AbstractEvent} _e Change event. + * @this {Block} + */ + onchange: function(_e) { + const id = this.getFieldValue('VAR'); + const variableModel = Variables.getVariable(this.workspace, id); + if (this.type === 'variables_get_dynamic') { + this.outputConnection.setCheck(variableModel.type); + } else { + this.getInput('VALUE').connection.setCheck(variableModel.type); + } + }, +}; + +/** + * Factory for callbacks for rename variable dropdown menu option + * associated with a variable getter block. + * @param {!Block} block The block with the variable to rename. + * @return {!function()} A function that renames the variable. + */ +const renameOptionCallbackFactory = function(block) { + return function() { + const workspace = block.workspace; + const variable = block.getField('VAR').getVariable(); + Variables.renameVariable(workspace, variable); + }; +}; + +/** + * Factory for callbacks for delete variable dropdown menu option + * associated with a variable getter block. + * @param {!Block} block The block with the variable to delete. + * @return {!function()} A function that deletes the variable. + */ +const deleteOptionCallbackFactory = function(block) { + return function() { + const workspace = block.workspace; + const variable = block.getField('VAR').getVariable(); + workspace.deleteVariableById(variable.getId()); + workspace.refreshToolboxSelection(); + }; +}; + +Extensions.registerMixin( + 'contextMenu_variableDynamicSetterGetter', + CUSTOM_CONTEXT_MENU_VARIABLE_GETTER_SETTER_MIXIN); + +// Register provided blocks. +defineBlocks(blocks); diff --git a/blocks_compressed.js b/blocks_compressed.js index 9384dd4a95f..4b31eefb136 100644 --- a/blocks_compressed.js +++ b/blocks_compressed.js @@ -1,212 +1,212 @@ -// Do not edit this file; automatically generated. - -/* eslint-disable */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { // AMD - define(["./blockly_compressed.js"], factory); - } else if (typeof exports === 'object') { // Node.js - module.exports = factory(require("./blockly_compressed.js")); - } else { // Browser - var factoryExports = factory(root.Blockly); - root.Blockly.libraryBlocks = factoryExports; - } -}(this, function(__parent__) { -var $=__parent__.__namespace__; -var module$exports$Blockly$libraryBlocks$variablesDynamic={}; -module$exports$Blockly$libraryBlocks$variablesDynamic.blocks=(0,$.module$exports$Blockly$common.createBlockDefinitionsFromJsonArray)([{type:"variables_get_dynamic",message0:"%1",args0:[{type:"field_variable",name:"VAR",variable:"%{BKY_VARIABLES_DEFAULT_NAME}"}],output:null,style:"variable_dynamic_blocks",helpUrl:"%{BKY_VARIABLES_GET_HELPURL}",tooltip:"%{BKY_VARIABLES_GET_TOOLTIP}",extensions:["contextMenu_variableDynamicSetterGetter"]},{type:"variables_set_dynamic",message0:"%{BKY_VARIABLES_SET}", -args0:[{type:"field_variable",name:"VAR",variable:"%{BKY_VARIABLES_DEFAULT_NAME}"},{type:"input_value",name:"VALUE"}],previousStatement:null,nextStatement:null,style:"variable_dynamic_blocks",tooltip:"%{BKY_VARIABLES_SET_TOOLTIP}",helpUrl:"%{BKY_VARIABLES_SET_HELPURL}",extensions:["contextMenu_variableDynamicSetterGetter"]}]); -var module$contents$Blockly$libraryBlocks$variablesDynamic_CUSTOM_CONTEXT_MENU_VARIABLE_GETTER_SETTER_MIXIN={customContextMenu:function(a){if(!this.isInFlyout){var b=this.getFieldValue("VAR");var c=this.workspace.getVariableById(b).type;if("variables_get_dynamic"===this.type){b="variables_set_dynamic";var d=$.module$exports$Blockly$Msg.Msg.VARIABLES_GET_CREATE_SET}else b="variables_get_dynamic",d=$.module$exports$Blockly$Msg.Msg.VARIABLES_SET_CREATE_GET;var e={enabled:0","GT"],["\u200f\u2265","GTE"]]},{type:"input_value",name:"B"}], -inputsInline:!0,output:"Boolean",style:"logic_blocks",helpUrl:"%{BKY_LOGIC_COMPARE_HELPURL}",extensions:["logic_compare","logic_op_tooltip"]},{type:"logic_operation",message0:"%1 %2 %3",args0:[{type:"input_value",name:"A",check:"Boolean"},{type:"field_dropdown",name:"OP",options:[["%{BKY_LOGIC_OPERATION_AND}","AND"],["%{BKY_LOGIC_OPERATION_OR}","OR"]]},{type:"input_value",name:"B",check:"Boolean"}],inputsInline:!0,output:"Boolean",style:"logic_blocks",helpUrl:"%{BKY_LOGIC_OPERATION_HELPURL}",extensions:["logic_op_tooltip"]}, -{type:"logic_negate",message0:"%{BKY_LOGIC_NEGATE_TITLE}",args0:[{type:"input_value",name:"BOOL",check:"Boolean"}],output:"Boolean",style:"logic_blocks",tooltip:"%{BKY_LOGIC_NEGATE_TOOLTIP}",helpUrl:"%{BKY_LOGIC_NEGATE_HELPURL}"},{type:"logic_null",message0:"%{BKY_LOGIC_NULL}",output:null,style:"logic_blocks",tooltip:"%{BKY_LOGIC_NULL_TOOLTIP}",helpUrl:"%{BKY_LOGIC_NULL_HELPURL}"},{type:"logic_ternary",message0:"%{BKY_LOGIC_TERNARY_CONDITION} %1",args0:[{type:"input_value",name:"IF",check:"Boolean"}], -message1:"%{BKY_LOGIC_TERNARY_IF_TRUE} %1",args1:[{type:"input_value",name:"THEN"}],message2:"%{BKY_LOGIC_TERNARY_IF_FALSE} %1",args2:[{type:"input_value",name:"ELSE"}],output:null,style:"logic_blocks",tooltip:"%{BKY_LOGIC_TERNARY_TOOLTIP}",helpUrl:"%{BKY_LOGIC_TERNARY_HELPURL}",extensions:["logic_ternary"]},{type:"controls_if_if",message0:"%{BKY_CONTROLS_IF_IF_TITLE_IF}",nextStatement:null,enableContextMenu:!1,style:"logic_blocks",tooltip:"%{BKY_CONTROLS_IF_IF_TOOLTIP}"},{type:"controls_if_elseif", -message0:"%{BKY_CONTROLS_IF_ELSEIF_TITLE_ELSEIF}",previousStatement:null,nextStatement:null,enableContextMenu:!1,style:"logic_blocks",tooltip:"%{BKY_CONTROLS_IF_ELSEIF_TOOLTIP}"},{type:"controls_if_else",message0:"%{BKY_CONTROLS_IF_ELSE_TITLE_ELSE}",previousStatement:null,enableContextMenu:!1,style:"logic_blocks",tooltip:"%{BKY_CONTROLS_IF_ELSE_TOOLTIP}"}]); -var module$contents$Blockly$libraryBlocks$logic_TOOLTIPS_BY_OP={EQ:"%{BKY_LOGIC_COMPARE_TOOLTIP_EQ}",NEQ:"%{BKY_LOGIC_COMPARE_TOOLTIP_NEQ}",LT:"%{BKY_LOGIC_COMPARE_TOOLTIP_LT}",LTE:"%{BKY_LOGIC_COMPARE_TOOLTIP_LTE}",GT:"%{BKY_LOGIC_COMPARE_TOOLTIP_GT}",GTE:"%{BKY_LOGIC_COMPARE_TOOLTIP_GTE}",AND:"%{BKY_LOGIC_OPERATION_TOOLTIP_AND}",OR:"%{BKY_LOGIC_OPERATION_TOOLTIP_OR}"}; -(0,$.module$exports$Blockly$Extensions.register)("logic_op_tooltip",(0,$.module$exports$Blockly$Extensions.buildTooltipForDropdown)("OP",module$contents$Blockly$libraryBlocks$logic_TOOLTIPS_BY_OP)); -var module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_MUTATOR_MIXIN={elseifCount_:0,elseCount_:0,mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var a=(0,$.module$exports$Blockly$utils$xml.createElement)("mutation");this.elseifCount_&&a.setAttribute("elseif",this.elseifCount_);this.elseCount_&&a.setAttribute("else",1);return a},domToMutation:function(a){this.elseifCount_=parseInt(a.getAttribute("elseif"),10)||0;this.elseCount_=parseInt(a.getAttribute("else"),10)|| -0;this.rebuildShape_()},saveExtraState:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var a=Object.create(null);this.elseifCount_&&(a.elseIfCount=this.elseifCount_);this.elseCount_&&(a.hasElse=!0);return a},loadExtraState:function(a){this.elseifCount_=a.elseIfCount||0;this.elseCount_=a.hasElse?1:0;this.updateShape_()},decompose:function(a){var b=a.newBlock("controls_if_if");b.initSvg();for(var c=b.nextConnection,d=1;d<=this.elseifCount_;d++){var e=a.newBlock("controls_if_elseif"); -e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}this.elseCount_&&(a=a.newBlock("controls_if_else"),a.initSvg(),c.connect(a.previousConnection));return b},compose:function(a){a=a.nextConnection.targetBlock();this.elseCount_=this.elseifCount_=0;for(var b=[null],c=[null],d=null;a&&!a.isInsertionMarker();){switch(a.type){case "controls_if_elseif":this.elseifCount_++;b.push(a.valueConnection_);c.push(a.statementConnection_);break;case "controls_if_else":this.elseCount_++;d=a.statementConnection_; -break;default:throw TypeError("Unknown block type: "+a.type);}a=a.nextConnection&&a.nextConnection.targetBlock()}this.updateShape_();this.reconnectChildBlocks_(b,c,d)},saveConnections:function(a){a=a.nextConnection.targetBlock();for(var b=1;a;){switch(a.type){case "controls_if_elseif":var c=this.getInput("IF"+b),d=this.getInput("DO"+b);a.valueConnection_=c&&c.connection.targetConnection;a.statementConnection_=d&&d.connection.targetConnection;b++;break;case "controls_if_else":c=this.getInput("ELSE"); -a.statementConnection_=c&&c.connection.targetConnection;break;default:throw TypeError("Unknown block type: "+a.type);}a=a.nextConnection&&a.nextConnection.targetBlock()}},rebuildShape_:function(){var a=[null],b=[null],c=null;this.getInput("ELSE")&&(c=this.getInput("ELSE").connection.targetConnection);for(var d=1;this.getInput("IF"+d);d++){var e=this.getInput("IF"+d),f=this.getInput("DO"+d);a.push(e.connection.targetConnection);b.push(f.connection.targetConnection)}this.updateShape_();this.reconnectChildBlocks_(a, -b,c)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var a=1;this.getInput("IF"+a);a++)this.removeInput("IF"+a),this.removeInput("DO"+a);for(a=1;a<=this.elseifCount_;a++)this.appendValueInput("IF"+a).setCheck("Boolean").appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+a).appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_ELSE)}, -reconnectChildBlocks_:function(a,b,c){for(var d=1;d<=this.elseifCount_;d++)$.module$exports$Blockly$Mutator.Mutator.reconnect(a[d],this,"IF"+d),$.module$exports$Blockly$Mutator.Mutator.reconnect(b[d],this,"DO"+d);$.module$exports$Blockly$Mutator.Mutator.reconnect(c,this,"ELSE")}};(0,$.module$exports$Blockly$Extensions.registerMutator)("controls_if_mutator",module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_MUTATOR_MIXIN,null,["controls_if_elseif","controls_if_else"]); -var module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_TOOLTIP_EXTENSION=function(){this.setTooltip(function(){if(this.elseifCount_||this.elseCount_){if(!this.elseifCount_&&this.elseCount_)return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_2;if(this.elseifCount_&&!this.elseCount_)return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_3;if(this.elseifCount_&&this.elseCount_)return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_4}else return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_1; -return""}.bind(this))};(0,$.module$exports$Blockly$Extensions.register)("controls_if_tooltip",module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_TOOLTIP_EXTENSION); -var module$contents$Blockly$libraryBlocks$logic_LOGIC_COMPARE_ONCHANGE_MIXIN={onchange:function(a){this.prevBlocks_||(this.prevBlocks_=[null,null]);var b=this.getInputTargetBlock("A"),c=this.getInputTargetBlock("B");b&&c&&!this.workspace.connectionChecker.doTypeChecks(b.outputConnection,c.outputConnection)&&((0,$.module$exports$Blockly$Events.setGroup)(a.group),a=this.prevBlocks_[0],a!==b&&(b.unplug(),!a||a.isDisposed()||a.isShadow()||this.getInput("A").connection.connect(a.outputConnection)),b=this.prevBlocks_[1], -b!==c&&(c.unplug(),!b||b.isDisposed()||b.isShadow()||this.getInput("B").connection.connect(b.outputConnection)),this.bumpNeighbours(),(0,$.module$exports$Blockly$Events.setGroup)(!1));this.prevBlocks_[0]=this.getInputTargetBlock("A");this.prevBlocks_[1]=this.getInputTargetBlock("B")}},module$contents$Blockly$libraryBlocks$logic_LOGIC_COMPARE_EXTENSION=function(){this.mixin(module$contents$Blockly$libraryBlocks$logic_LOGIC_COMPARE_ONCHANGE_MIXIN)}; -(0,$.module$exports$Blockly$Extensions.register)("logic_compare",module$contents$Blockly$libraryBlocks$logic_LOGIC_COMPARE_EXTENSION); -var module$contents$Blockly$libraryBlocks$logic_LOGIC_TERNARY_ONCHANGE_MIXIN={prevParentConnection_:null,onchange:function(a){var b=this.getInputTargetBlock("THEN"),c=this.getInputTargetBlock("ELSE"),d=this.outputConnection.targetConnection;if((b||c)&&d)for(var e=0;2>e;e++){var f=1===e?b:c;f&&!f.workspace.connectionChecker.doTypeChecks(f.outputConnection,d)&&((0,$.module$exports$Blockly$Events.setGroup)(a.group),d===this.prevParentConnection_?(this.unplug(),d.getSourceBlock().bumpNeighbours()):(f.unplug(), -f.bumpNeighbours()),(0,$.module$exports$Blockly$Events.setGroup)(!1))}this.prevParentConnection_=d}};(0,$.module$exports$Blockly$Extensions.registerMixin)("logic_ternary",module$contents$Blockly$libraryBlocks$logic_LOGIC_TERNARY_ONCHANGE_MIXIN);(0,$.module$exports$Blockly$common.defineBlocks)(module$exports$Blockly$libraryBlocks$logic.blocks);var module$exports$Blockly$libraryBlocks$lists={}; -module$exports$Blockly$libraryBlocks$lists.blocks=(0,$.module$exports$Blockly$common.createBlockDefinitionsFromJsonArray)([{type:"lists_create_empty",message0:"%{BKY_LISTS_CREATE_EMPTY_TITLE}",output:"Array",style:"list_blocks",tooltip:"%{BKY_LISTS_CREATE_EMPTY_TOOLTIP}",helpUrl:"%{BKY_LISTS_CREATE_EMPTY_HELPURL}"},{type:"lists_repeat",message0:"%{BKY_LISTS_REPEAT_TITLE}",args0:[{type:"input_value",name:"ITEM"},{type:"input_value",name:"NUM",check:"Number"}],output:"Array",style:"list_blocks",tooltip:"%{BKY_LISTS_REPEAT_TOOLTIP}", -helpUrl:"%{BKY_LISTS_REPEAT_HELPURL}"},{type:"lists_reverse",message0:"%{BKY_LISTS_REVERSE_MESSAGE0}",args0:[{type:"input_value",name:"LIST",check:"Array"}],output:"Array",inputsInline:!0,style:"list_blocks",tooltip:"%{BKY_LISTS_REVERSE_TOOLTIP}",helpUrl:"%{BKY_LISTS_REVERSE_HELPURL}"},{type:"lists_isEmpty",message0:"%{BKY_LISTS_ISEMPTY_TITLE}",args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Boolean",style:"list_blocks",tooltip:"%{BKY_LISTS_ISEMPTY_TOOLTIP}",helpUrl:"%{BKY_LISTS_ISEMPTY_HELPURL}"}, -{type:"lists_length",message0:"%{BKY_LISTS_LENGTH_TITLE}",args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Number",style:"list_blocks",tooltip:"%{BKY_LISTS_LENGTH_TOOLTIP}",helpUrl:"%{BKY_LISTS_LENGTH_HELPURL}"}]); -module$exports$Blockly$libraryBlocks$lists.blocks.lists_create_with={init:function(){this.setHelpUrl($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_HELPURL);this.setStyle("list_blocks");this.itemCount_=3;this.updateShape_();this.setOutput(!0,"Array");this.setMutator(new $.module$exports$Blockly$Mutator.Mutator(["lists_create_with_item"]));this.setTooltip($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_TOOLTIP)},mutationToDom:function(){var a=(0,$.module$exports$Blockly$utils$xml.createElement)("mutation"); -a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){this.itemCount_=parseInt(a.getAttribute("items"),10);this.updateShape_()},saveExtraState:function(){return{itemCount:this.itemCount_}},loadExtraState:function(a){this.itemCount_=a.itemCount;this.updateShape_()},decompose:function(a){var b=a.newBlock("lists_create_with_container");b.initSvg();for(var c=b.getInput("STACK").connection,d=0;d","GT"],["\u200f\u2265","GTE"]]},{type:"input_value",name:"B"}], +inputsInline:!0,output:"Boolean",style:"logic_blocks",helpUrl:"%{BKY_LOGIC_COMPARE_HELPURL}",extensions:["logic_compare","logic_op_tooltip"]},{type:"logic_operation",message0:"%1 %2 %3",args0:[{type:"input_value",name:"A",check:"Boolean"},{type:"field_dropdown",name:"OP",options:[["%{BKY_LOGIC_OPERATION_AND}","AND"],["%{BKY_LOGIC_OPERATION_OR}","OR"]]},{type:"input_value",name:"B",check:"Boolean"}],inputsInline:!0,output:"Boolean",style:"logic_blocks",helpUrl:"%{BKY_LOGIC_OPERATION_HELPURL}",extensions:["logic_op_tooltip"]}, +{type:"logic_negate",message0:"%{BKY_LOGIC_NEGATE_TITLE}",args0:[{type:"input_value",name:"BOOL",check:"Boolean"}],output:"Boolean",style:"logic_blocks",tooltip:"%{BKY_LOGIC_NEGATE_TOOLTIP}",helpUrl:"%{BKY_LOGIC_NEGATE_HELPURL}"},{type:"logic_null",message0:"%{BKY_LOGIC_NULL}",output:null,style:"logic_blocks",tooltip:"%{BKY_LOGIC_NULL_TOOLTIP}",helpUrl:"%{BKY_LOGIC_NULL_HELPURL}"},{type:"logic_ternary",message0:"%{BKY_LOGIC_TERNARY_CONDITION} %1",args0:[{type:"input_value",name:"IF",check:"Boolean"}], +message1:"%{BKY_LOGIC_TERNARY_IF_TRUE} %1",args1:[{type:"input_value",name:"THEN"}],message2:"%{BKY_LOGIC_TERNARY_IF_FALSE} %1",args2:[{type:"input_value",name:"ELSE"}],output:null,style:"logic_blocks",tooltip:"%{BKY_LOGIC_TERNARY_TOOLTIP}",helpUrl:"%{BKY_LOGIC_TERNARY_HELPURL}",extensions:["logic_ternary"]},{type:"controls_if_if",message0:"%{BKY_CONTROLS_IF_IF_TITLE_IF}",nextStatement:null,enableContextMenu:!1,style:"logic_blocks",tooltip:"%{BKY_CONTROLS_IF_IF_TOOLTIP}"},{type:"controls_if_elseif", +message0:"%{BKY_CONTROLS_IF_ELSEIF_TITLE_ELSEIF}",previousStatement:null,nextStatement:null,enableContextMenu:!1,style:"logic_blocks",tooltip:"%{BKY_CONTROLS_IF_ELSEIF_TOOLTIP}"},{type:"controls_if_else",message0:"%{BKY_CONTROLS_IF_ELSE_TITLE_ELSE}",previousStatement:null,enableContextMenu:!1,style:"logic_blocks",tooltip:"%{BKY_CONTROLS_IF_ELSE_TOOLTIP}"}]); +var module$contents$Blockly$libraryBlocks$logic_TOOLTIPS_BY_OP={EQ:"%{BKY_LOGIC_COMPARE_TOOLTIP_EQ}",NEQ:"%{BKY_LOGIC_COMPARE_TOOLTIP_NEQ}",LT:"%{BKY_LOGIC_COMPARE_TOOLTIP_LT}",LTE:"%{BKY_LOGIC_COMPARE_TOOLTIP_LTE}",GT:"%{BKY_LOGIC_COMPARE_TOOLTIP_GT}",GTE:"%{BKY_LOGIC_COMPARE_TOOLTIP_GTE}",AND:"%{BKY_LOGIC_OPERATION_TOOLTIP_AND}",OR:"%{BKY_LOGIC_OPERATION_TOOLTIP_OR}"}; +(0,$.module$exports$Blockly$Extensions.register)("logic_op_tooltip",(0,$.module$exports$Blockly$Extensions.buildTooltipForDropdown)("OP",module$contents$Blockly$libraryBlocks$logic_TOOLTIPS_BY_OP)); +var module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_MUTATOR_MIXIN={elseifCount_:0,elseCount_:0,mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var a=(0,$.module$exports$Blockly$utils$xml.createElement)("mutation");this.elseifCount_&&a.setAttribute("elseif",this.elseifCount_);this.elseCount_&&a.setAttribute("else",1);return a},domToMutation:function(a){this.elseifCount_=parseInt(a.getAttribute("elseif"),10)||0;this.elseCount_=parseInt(a.getAttribute("else"),10)|| +0;this.rebuildShape_()},saveExtraState:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var a=Object.create(null);this.elseifCount_&&(a.elseIfCount=this.elseifCount_);this.elseCount_&&(a.hasElse=!0);return a},loadExtraState:function(a){this.elseifCount_=a.elseIfCount||0;this.elseCount_=a.hasElse?1:0;this.updateShape_()},decompose:function(a){var b=a.newBlock("controls_if_if");b.initSvg();for(var c=b.nextConnection,d=1;d<=this.elseifCount_;d++){var e=a.newBlock("controls_if_elseif"); +e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}this.elseCount_&&(a=a.newBlock("controls_if_else"),a.initSvg(),c.connect(a.previousConnection));return b},compose:function(a){a=a.nextConnection.targetBlock();this.elseCount_=this.elseifCount_=0;for(var b=[null],c=[null],d=null;a&&!a.isInsertionMarker();){switch(a.type){case "controls_if_elseif":this.elseifCount_++;b.push(a.valueConnection_);c.push(a.statementConnection_);break;case "controls_if_else":this.elseCount_++;d=a.statementConnection_; +break;default:throw TypeError("Unknown block type: "+a.type);}a=a.nextConnection&&a.nextConnection.targetBlock()}this.updateShape_();this.reconnectChildBlocks_(b,c,d)},saveConnections:function(a){a=a.nextConnection.targetBlock();for(var b=1;a;){switch(a.type){case "controls_if_elseif":var c=this.getInput("IF"+b),d=this.getInput("DO"+b);a.valueConnection_=c&&c.connection.targetConnection;a.statementConnection_=d&&d.connection.targetConnection;b++;break;case "controls_if_else":c=this.getInput("ELSE"); +a.statementConnection_=c&&c.connection.targetConnection;break;default:throw TypeError("Unknown block type: "+a.type);}a=a.nextConnection&&a.nextConnection.targetBlock()}},rebuildShape_:function(){var a=[null],b=[null],c=null;this.getInput("ELSE")&&(c=this.getInput("ELSE").connection.targetConnection);for(var d=1;this.getInput("IF"+d);d++){var e=this.getInput("IF"+d),f=this.getInput("DO"+d);a.push(e.connection.targetConnection);b.push(f.connection.targetConnection)}this.updateShape_();this.reconnectChildBlocks_(a, +b,c)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var a=1;this.getInput("IF"+a);a++)this.removeInput("IF"+a),this.removeInput("DO"+a);for(a=1;a<=this.elseifCount_;a++)this.appendValueInput("IF"+a).setCheck("Boolean").appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+a).appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_ELSE)}, +reconnectChildBlocks_:function(a,b,c){for(var d=1;d<=this.elseifCount_;d++)$.module$exports$Blockly$Mutator.Mutator.reconnect(a[d],this,"IF"+d),$.module$exports$Blockly$Mutator.Mutator.reconnect(b[d],this,"DO"+d);$.module$exports$Blockly$Mutator.Mutator.reconnect(c,this,"ELSE")}};(0,$.module$exports$Blockly$Extensions.registerMutator)("controls_if_mutator",module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_MUTATOR_MIXIN,null,["controls_if_elseif","controls_if_else"]); +var module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_TOOLTIP_EXTENSION=function(){this.setTooltip(function(){if(this.elseifCount_||this.elseCount_){if(!this.elseifCount_&&this.elseCount_)return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_2;if(this.elseifCount_&&!this.elseCount_)return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_3;if(this.elseifCount_&&this.elseCount_)return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_4}else return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_1; +return""}.bind(this))};(0,$.module$exports$Blockly$Extensions.register)("controls_if_tooltip",module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_TOOLTIP_EXTENSION); +var module$contents$Blockly$libraryBlocks$logic_LOGIC_COMPARE_ONCHANGE_MIXIN={onchange:function(a){this.prevBlocks_||(this.prevBlocks_=[null,null]);var b=this.getInputTargetBlock("A"),c=this.getInputTargetBlock("B");b&&c&&!this.workspace.connectionChecker.doTypeChecks(b.outputConnection,c.outputConnection)&&((0,$.module$exports$Blockly$Events.setGroup)(a.group),a=this.prevBlocks_[0],a!==b&&(b.unplug(),!a||a.isDisposed()||a.isShadow()||this.getInput("A").connection.connect(a.outputConnection)),b=this.prevBlocks_[1], +b!==c&&(c.unplug(),!b||b.isDisposed()||b.isShadow()||this.getInput("B").connection.connect(b.outputConnection)),this.bumpNeighbours(),(0,$.module$exports$Blockly$Events.setGroup)(!1));this.prevBlocks_[0]=this.getInputTargetBlock("A");this.prevBlocks_[1]=this.getInputTargetBlock("B")}},module$contents$Blockly$libraryBlocks$logic_LOGIC_COMPARE_EXTENSION=function(){this.mixin(module$contents$Blockly$libraryBlocks$logic_LOGIC_COMPARE_ONCHANGE_MIXIN)}; +(0,$.module$exports$Blockly$Extensions.register)("logic_compare",module$contents$Blockly$libraryBlocks$logic_LOGIC_COMPARE_EXTENSION); +var module$contents$Blockly$libraryBlocks$logic_LOGIC_TERNARY_ONCHANGE_MIXIN={prevParentConnection_:null,onchange:function(a){var b=this.getInputTargetBlock("THEN"),c=this.getInputTargetBlock("ELSE"),d=this.outputConnection.targetConnection;if((b||c)&&d)for(var e=0;2>e;e++){var f=1===e?b:c;f&&!f.workspace.connectionChecker.doTypeChecks(f.outputConnection,d)&&((0,$.module$exports$Blockly$Events.setGroup)(a.group),d===this.prevParentConnection_?(this.unplug(),d.getSourceBlock().bumpNeighbours()):(f.unplug(), +f.bumpNeighbours()),(0,$.module$exports$Blockly$Events.setGroup)(!1))}this.prevParentConnection_=d}};(0,$.module$exports$Blockly$Extensions.registerMixin)("logic_ternary",module$contents$Blockly$libraryBlocks$logic_LOGIC_TERNARY_ONCHANGE_MIXIN);(0,$.module$exports$Blockly$common.defineBlocks)(module$exports$Blockly$libraryBlocks$logic.blocks);var module$exports$Blockly$libraryBlocks$lists={}; +module$exports$Blockly$libraryBlocks$lists.blocks=(0,$.module$exports$Blockly$common.createBlockDefinitionsFromJsonArray)([{type:"lists_create_empty",message0:"%{BKY_LISTS_CREATE_EMPTY_TITLE}",output:"Array",style:"list_blocks",tooltip:"%{BKY_LISTS_CREATE_EMPTY_TOOLTIP}",helpUrl:"%{BKY_LISTS_CREATE_EMPTY_HELPURL}"},{type:"lists_repeat",message0:"%{BKY_LISTS_REPEAT_TITLE}",args0:[{type:"input_value",name:"ITEM"},{type:"input_value",name:"NUM",check:"Number"}],output:"Array",style:"list_blocks",tooltip:"%{BKY_LISTS_REPEAT_TOOLTIP}", +helpUrl:"%{BKY_LISTS_REPEAT_HELPURL}"},{type:"lists_reverse",message0:"%{BKY_LISTS_REVERSE_MESSAGE0}",args0:[{type:"input_value",name:"LIST",check:"Array"}],output:"Array",inputsInline:!0,style:"list_blocks",tooltip:"%{BKY_LISTS_REVERSE_TOOLTIP}",helpUrl:"%{BKY_LISTS_REVERSE_HELPURL}"},{type:"lists_isEmpty",message0:"%{BKY_LISTS_ISEMPTY_TITLE}",args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Boolean",style:"list_blocks",tooltip:"%{BKY_LISTS_ISEMPTY_TOOLTIP}",helpUrl:"%{BKY_LISTS_ISEMPTY_HELPURL}"}, +{type:"lists_length",message0:"%{BKY_LISTS_LENGTH_TITLE}",args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Number",style:"list_blocks",tooltip:"%{BKY_LISTS_LENGTH_TOOLTIP}",helpUrl:"%{BKY_LISTS_LENGTH_HELPURL}"}]); +module$exports$Blockly$libraryBlocks$lists.blocks.lists_create_with={init:function(){this.setHelpUrl($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_HELPURL);this.setStyle("list_blocks");this.itemCount_=3;this.updateShape_();this.setOutput(!0,"Array");this.setMutator(new $.module$exports$Blockly$Mutator.Mutator(["lists_create_with_item"]));this.setTooltip($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_TOOLTIP)},mutationToDom:function(){var a=(0,$.module$exports$Blockly$utils$xml.createElement)("mutation"); +a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){this.itemCount_=parseInt(a.getAttribute("items"),10);this.updateShape_()},saveExtraState:function(){return{itemCount:this.itemCount_}},loadExtraState:function(a){this.itemCount_=a.itemCount;this.updateShape_()},decompose:function(a){var b=a.newBlock("lists_create_with_container");b.initSvg();for(var c=b.getInput("STACK").connection,d=0;ddependent ordering. - """ - if require not in search_hash: - raise Exception('Missing provider for (%s)' % require) - - dep = search_hash[require] - if not dep.filename in seen_list: - seen_list.append(dep.filename) - for sub_require in dep.requires: - ResolveDependencies(sub_require, search_hash, result_list, seen_list) - result_list.append(dep.filename) - - -def GetDepsLine(dep, base_path): - """Returns a JS string for a dependency statement in the deps.js file. - - Args: - dep: The dependency that we're printing. - base_path: The path to Closure's base.js including filename. - """ - return 'goog.addDependency("%s", %s, %s);' % ( - GetRelpath(dep.filename, base_path), dep.provides, dep.requires) - - -def GetRelpath(path, start): - """Return a relative path to |path| from |start|.""" - # NOTE: Python 2.6 provides os.path.relpath, which has almost the same - # functionality as this function. Since we want to support 2.4, we have - # to implement it manually. :( - path_list = os.path.abspath(os.path.normpath(path)).split(os.sep) - start_list = os.path.abspath( - os.path.normpath(os.path.dirname(start))).split(os.sep) - - common_prefix_count = 0 - for i in range(0, min(len(path_list), len(start_list))): - if path_list[i] != start_list[i]: - break - common_prefix_count += 1 - - # Always use forward slashes, because this will get expanded to a url, - # not a file path. - return '/'.join(['..'] * (len(start_list) - common_prefix_count) + - path_list[common_prefix_count:]) +#!/usr/bin/env python +# +# Copyright 2006 The Closure Library Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS-IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Calculates JavaScript dependencies without requiring Google's build system. + +It iterates over a number of search paths and builds a dependency tree. With +the inputs provided, it walks the dependency tree and outputs all the files +required for compilation. +""" + + +import logging +import os +import re +import sys + + +_BASE_REGEX_STRING = '^\s*goog\.%s\(\s*[\'"](.+)[\'"]\s*\)' +req_regex = re.compile(_BASE_REGEX_STRING % 'require') +prov_regex = re.compile(_BASE_REGEX_STRING % 'provide') +ns_regex = re.compile('^ns:((\w+\.)*(\w+))$') + + +def IsValidFile(ref): + """Returns true if the provided reference is a file and exists.""" + return os.path.isfile(ref) + + +def IsJsFile(ref): + """Returns true if the provided reference is a JavaScript file.""" + return ref.endswith('.js') + + +def IsNamespace(ref): + """Returns true if the provided reference is a namespace.""" + return re.match(ns_regex, ref) is not None + + +def IsDirectory(ref): + """Returns true if the provided reference is a directory.""" + return os.path.isdir(ref) + + +def ExpandDirectories(refs): + """Expands any directory references into inputs. + + Description: + Looks for any directories in the provided references. Found directories + are recursively searched for .js files, which are then added to the result + list. + + Args: + refs: a list of references such as files, directories, and namespaces + + Returns: + A list of references with directories removed and replaced by any + .js files that are found in them. Also, the paths will be normalized. + """ + result = [] + for ref in refs: + if IsDirectory(ref): + # Disable 'Unused variable' for subdirs + # pylint: disable=unused-variable + for (directory, subdirs, filenames) in os.walk(ref): + for filename in filenames: + if IsJsFile(filename): + result.append(os.path.join(directory, filename)) + else: + result.append(ref) + return map(os.path.normpath, result) + + +class DependencyInfo(object): + """Represents a dependency that is used to build and walk a tree.""" + + def __init__(self, filename): + self.filename = filename + self.provides = [] + self.requires = [] + + def __str__(self): + return '%s Provides: %s Requires: %s' % (self.filename, + repr(self.provides), + repr(self.requires)) + + +def BuildDependenciesFromFiles(files): + """Build a list of dependencies from a list of files. + + Description: + Takes a list of files, extracts their provides and requires, and builds + out a list of dependency objects. + + Args: + files: a list of files to be parsed for goog.provides and goog.requires. + + Returns: + A list of dependency objects, one for each file in the files argument. + """ + result = [] + filenames = set() + for filename in files: + if filename in filenames: + continue + + # Python 3 requires the file encoding to be specified + if (sys.version_info[0] < 3): + file_handle = open(filename, 'r') + else: + file_handle = open(filename, 'r', encoding='utf8') + + try: + dep = CreateDependencyInfo(filename, file_handle) + result.append(dep) + finally: + file_handle.close() + + filenames.add(filename) + + return result + + +def CreateDependencyInfo(filename, source): + """Create dependency info. + + Args: + filename: Filename for source. + source: File-like object containing source. + + Returns: + A DependencyInfo object with provides and requires filled. + """ + dep = DependencyInfo(filename) + for line in source: + if re.match(req_regex, line): + dep.requires.append(re.search(req_regex, line).group(1)) + if re.match(prov_regex, line): + dep.provides.append(re.search(prov_regex, line).group(1)) + return dep + + +def BuildDependencyHashFromDependencies(deps): + """Builds a hash for searching dependencies by the namespaces they provide. + + Description: + Dependency objects can provide multiple namespaces. This method enumerates + the provides of each dependency and adds them to a hash that can be used + to easily resolve a given dependency by a namespace it provides. + + Args: + deps: a list of dependency objects used to build the hash. + + Raises: + Exception: If a multiple files try to provide the same namepace. + + Returns: + A hash table { namespace: dependency } that can be used to resolve a + dependency by a namespace it provides. + """ + dep_hash = {} + for dep in deps: + for provide in dep.provides: + if provide in dep_hash: + raise Exception('Duplicate provide (%s) in (%s, %s)' % ( + provide, + dep_hash[provide].filename, + dep.filename)) + dep_hash[provide] = dep + return dep_hash + + +def CalculateDependencies(paths, inputs): + """Calculates the dependencies for given inputs. + + Description: + This method takes a list of paths (files, directories) and builds a + searchable data structure based on the namespaces that each .js file + provides. It then parses through each input, resolving dependencies + against this data structure. The final output is a list of files, + including the inputs, that represent all of the code that is needed to + compile the given inputs. + + Args: + paths: the references (files, directories) that are used to build the + dependency hash. + inputs: the inputs (files, directories, namespaces) that have dependencies + that need to be calculated. + + Raises: + Exception: if a provided input is invalid. + + Returns: + A list of all files, including inputs, that are needed to compile the given + inputs. + """ + deps = BuildDependenciesFromFiles(paths + inputs) + search_hash = BuildDependencyHashFromDependencies(deps) + result_list = [] + seen_list = [] + for input_file in inputs: + if IsNamespace(input_file): + namespace = re.search(ns_regex, input_file).group(1) + if namespace not in search_hash: + raise Exception('Invalid namespace (%s)' % namespace) + input_file = search_hash[namespace].filename + if not IsValidFile(input_file) or not IsJsFile(input_file): + raise Exception('Invalid file (%s)' % input_file) + seen_list.append(input_file) + file_handle = open(input_file, 'r') + try: + for line in file_handle: + if re.match(req_regex, line): + require = re.search(req_regex, line).group(1) + ResolveDependencies(require, search_hash, result_list, seen_list) + finally: + file_handle.close() + result_list.append(input_file) + + return result_list + + +def FindClosureBasePath(paths): + """Given a list of file paths, return Closure base.js path, if any. + + Args: + paths: A list of paths. + + Returns: + The path to Closure's base.js file including filename, if found. + """ + + for path in paths: + pathname, filename = os.path.split(path) + + if filename == 'base.js': + f = open(path) + + is_base = False + + # Sanity check that this is the Closure base file. Check that this + # is where goog is defined. This is determined by the @provideGoog + # flag. + for line in f: + if '@provideGoog' in line: + is_base = True + break + + f.close() + + if is_base: + return path + +def ResolveDependencies(require, search_hash, result_list, seen_list): + """Takes a given requirement and resolves all of the dependencies for it. + + Description: + A given requirement may require other dependencies. This method + recursively resolves all dependencies for the given requirement. + + Raises: + Exception: when require does not exist in the search_hash. + + Args: + require: the namespace to resolve dependencies for. + search_hash: the data structure used for resolving dependencies. + result_list: a list of filenames that have been calculated as dependencies. + This variable is the output for this function. + seen_list: a list of filenames that have been 'seen'. This is required + for the dependency->dependent ordering. + """ + if require not in search_hash: + raise Exception('Missing provider for (%s)' % require) + + dep = search_hash[require] + if not dep.filename in seen_list: + seen_list.append(dep.filename) + for sub_require in dep.requires: + ResolveDependencies(sub_require, search_hash, result_list, seen_list) + result_list.append(dep.filename) + + +def GetDepsLine(dep, base_path): + """Returns a JS string for a dependency statement in the deps.js file. + + Args: + dep: The dependency that we're printing. + base_path: The path to Closure's base.js including filename. + """ + return 'goog.addDependency("%s", %s, %s);' % ( + GetRelpath(dep.filename, base_path), dep.provides, dep.requires) + + +def GetRelpath(path, start): + """Return a relative path to |path| from |start|.""" + # NOTE: Python 2.6 provides os.path.relpath, which has almost the same + # functionality as this function. Since we want to support 2.4, we have + # to implement it manually. :( + path_list = os.path.abspath(os.path.normpath(path)).split(os.sep) + start_list = os.path.abspath( + os.path.normpath(os.path.dirname(start))).split(os.sep) + + common_prefix_count = 0 + for i in range(0, min(len(path_list), len(start_list))): + if path_list[i] != start_list[i]: + break + common_prefix_count += 1 + + # Always use forward slashes, because this will get expanded to a url, + # not a file path. + return '/'.join(['..'] * (len(start_list) - common_prefix_count) + + path_list[common_prefix_count:]) diff --git a/closure/goog/base.js b/closure/goog/base.js index 03d5ec69042..6364235a353 100644 --- a/closure/goog/base.js +++ b/closure/goog/base.js @@ -1,3859 +1,3859 @@ -/** - * @license - * Copyright The Closure Library Authors. - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Bootstrap for the Google JS Library (Closure). - * - * In uncompiled mode base.js will attempt to load Closure's deps file, unless - * the global CLOSURE_NO_DEPS is set to true. This allows projects - * to include their own deps file(s) from different locations. - * - * Avoid including base.js more than once. This is strictly discouraged and not - * supported. goog.require(...) won't work properly in that case. - * - * @provideGoog - */ - - -/** - * @define {boolean} Overridden to true by the compiler. - */ -var COMPILED = false; - - -/** - * Base namespace for the Closure library. Checks to see goog is already - * defined in the current scope before assigning to prevent clobbering if - * base.js is loaded more than once. - * - * @const - */ -var goog = goog || {}; - -/** - * Reference to the global object. - * https://www.ecma-international.org/ecma-262/9.0/index.html#sec-global-object - * - * More info on this implementation here: - * https://docs.google.com/document/d/1NAeW4Wk7I7FV0Y2tcUFvQdGMc89k2vdgSXInw8_nvCI/edit - * - * @const - * @suppress {undefinedVars} self won't be referenced unless `this` is falsy. - * @type {!Global} - */ -goog.global = - // Check `this` first for backwards compatibility. - // Valid unless running as an ES module or in a function wrapper called - // without setting `this` properly. - // Note that base.js can't usefully be imported as an ES module, but it may - // be compiled into bundles that are loadable as ES modules. - this || - // https://developer.mozilla.org/en-US/docs/Web/API/Window/self - // For in-page browser environments and workers. - self; - - -/** - * A hook for overriding the define values in uncompiled mode. - * - * In uncompiled mode, `CLOSURE_UNCOMPILED_DEFINES` may be defined before - * loading base.js. If a key is defined in `CLOSURE_UNCOMPILED_DEFINES`, - * `goog.define` will use the value instead of the default value. This - * allows flags to be overwritten without compilation (this is normally - * accomplished with the compiler's "define" flag). - * - * Example: - *
- *   var CLOSURE_UNCOMPILED_DEFINES = {'goog.DEBUG': false};
- * 
- * - * @type {Object|undefined} - */ -goog.global.CLOSURE_UNCOMPILED_DEFINES; - - -/** - * A hook for overriding the define values in uncompiled or compiled mode, - * like CLOSURE_UNCOMPILED_DEFINES but effective in compiled code. In - * uncompiled code CLOSURE_UNCOMPILED_DEFINES takes precedence. - * - * Also unlike CLOSURE_UNCOMPILED_DEFINES the values must be number, boolean or - * string literals or the compiler will emit an error. - * - * While any @define value may be set, only those set with goog.define will be - * effective for uncompiled code. - * - * Example: - *
- *   var CLOSURE_DEFINES = {'goog.DEBUG': false} ;
- * 
- * - * Currently the Closure Compiler will only recognize very simple definitions of - * this value when looking for values to apply to compiled code and ignore all - * other references. Specifically, it looks the value defined at the variable - * declaration, as with the example above. - * - * TODO(user): Improve the recognized definitions. - * - * @type {!Object|null|undefined} - */ -goog.global.CLOSURE_DEFINES; - - -/** - * Builds an object structure for the provided namespace path, ensuring that - * names that already exist are not overwritten. For example: - * "a.b.c" -> a = {};a.b={};a.b.c={}; - * Used by goog.provide and goog.exportSymbol. - * @param {string} name The name of the object that this file defines. - * @param {*=} object The object to expose at the end of the path. - * @param {boolean=} overwriteImplicit If object is set and a previous call - * implicitly constructed the namespace given by name, this parameter - * controls whether object should overwrite the implicitly constructed - * namespace or be merged into it. Defaults to false. - * @param {?Object=} objectToExportTo The object to add the path to; if this - * field is not specified, its value defaults to `goog.global`. - * @private - */ -goog.exportPath_ = function(name, object, overwriteImplicit, objectToExportTo) { - var parts = name.split('.'); - var cur = objectToExportTo || goog.global; - - // Internet Explorer exhibits strange behavior when throwing errors from - // methods externed in this manner. See the testExportSymbolExceptions in - // base_test.html for an example. - if (!(parts[0] in cur) && typeof cur.execScript != 'undefined') { - cur.execScript('var ' + parts[0]); - } - - for (var part; parts.length && (part = parts.shift());) { - if (!parts.length && object !== undefined) { - if (!overwriteImplicit && goog.isObject(object) && - goog.isObject(cur[part])) { - // Merge properties on object (the input parameter) with the existing - // implicitly defined namespace, so as to not clobber previously - // defined child namespaces. - for (var prop in object) { - if (object.hasOwnProperty(prop)) { - cur[part][prop] = object[prop]; - } - } - } else { - // Either there is no existing implicit namespace, or overwriteImplicit - // is set to true, so directly assign object (the input parameter) to - // the namespace. - cur[part] = object; - } - } else if (cur[part] && cur[part] !== Object.prototype[part]) { - cur = cur[part]; - } else { - cur = cur[part] = {}; - } - } -}; - - -/** - * Defines a named value. In uncompiled mode, the value is retrieved from - * CLOSURE_DEFINES or CLOSURE_UNCOMPILED_DEFINES if the object is defined and - * has the property specified, and otherwise used the defined defaultValue. - * When compiled the default can be overridden using the compiler options or the - * value set in the CLOSURE_DEFINES object. Returns the defined value so that it - * can be used safely in modules. Note that the value type MUST be either - * boolean, number, or string. - * - * @param {string} name The distinguished name to provide. - * @param {T} defaultValue - * @return {T} The defined value. - * @template T - */ -goog.define = function(name, defaultValue) { - var value = defaultValue; - if (!COMPILED) { - var uncompiledDefines = goog.global.CLOSURE_UNCOMPILED_DEFINES; - var defines = goog.global.CLOSURE_DEFINES; - if (uncompiledDefines && - // Anti DOM-clobbering runtime check (b/37736576). - /** @type {?} */ (uncompiledDefines).nodeType === undefined && - Object.prototype.hasOwnProperty.call(uncompiledDefines, name)) { - value = uncompiledDefines[name]; - } else if ( - defines && - // Anti DOM-clobbering runtime check (b/37736576). - /** @type {?} */ (defines).nodeType === undefined && - Object.prototype.hasOwnProperty.call(defines, name)) { - value = defines[name]; - } - } - return value; -}; - - -/** - * @define {number} Integer year indicating the set of browser features that are - * guaranteed to be present. This is defined to include exactly features that - * work correctly on all "modern" browsers that are stable on January 1 of the - * specified year. For example, - * ```js - * if (goog.FEATURESET_YEAR >= 2019) { - * // use APIs known to be available on all major stable browsers Jan 1, 2019 - * } else { - * // polyfill for older browsers - * } - * ``` - * This is intended to be the primary define for removing - * unnecessary browser compatibility code (such as ponyfills and workarounds), - * and should inform the default value for most other defines: - * ```js - * const ASSUME_NATIVE_PROMISE = - * goog.define('ASSUME_NATIVE_PROMISE', goog.FEATURESET_YEAR >= 2016); - * ``` - * - * The default assumption is that IE9 is the lowest supported browser, which was - * first available Jan 1, 2012. - * - * TODO(user): Reference more thorough documentation when it's available. - */ -goog.FEATURESET_YEAR = goog.define('goog.FEATURESET_YEAR', 2012); - - -/** - * @define {boolean} DEBUG is provided as a convenience so that debugging code - * that should not be included in a production. It can be easily stripped - * by specifying --define goog.DEBUG=false to the Closure Compiler aka - * JSCompiler. For example, most toString() methods should be declared inside an - * "if (goog.DEBUG)" conditional because they are generally used for debugging - * purposes and it is difficult for the JSCompiler to statically determine - * whether they are used. - */ -goog.DEBUG = goog.define('goog.DEBUG', true); - - -/** - * @define {string} LOCALE defines the locale being used for compilation. It is - * used to select locale specific data to be compiled in js binary. BUILD rule - * can specify this value by "--define goog.LOCALE=" as a compiler - * option. - * - * Take into account that the locale code format is important. You should use - * the canonical Unicode format with hyphen as a delimiter. Language must be - * lowercase, Language Script - Capitalized, Region - UPPERCASE. - * There are few examples: pt-BR, en, en-US, sr-Latin-BO, zh-Hans-CN. - * - * See more info about locale codes here: - * http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers - * - * For language codes you should use values defined by ISO 693-1. See it here - * http://www.w3.org/WAI/ER/IG/ert/iso639.htm. There is only one exception from - * this rule: the Hebrew language. For legacy reasons the old code (iw) should - * be used instead of the new code (he). - * - */ -goog.LOCALE = goog.define('goog.LOCALE', 'en'); // default to en - - -/** - * This method is intended to be used for bookkeeping purposes. We would - * like to distinguish uses of goog.LOCALE used for code stripping purposes - * and uses of goog.LOCALE for other uses (such as URL parameters). - * - * This allows us to ban direct uses of goog.LOCALE and to ensure that all - * code has been transformed to our new localization build scheme. - * - * @return {string} - * - */ -goog.getLocale = function() { - return goog.LOCALE; -}; - - -/** - * @define {boolean} Whether this code is running on trusted sites. - * - * On untrusted sites, several native functions can be defined or overridden by - * external libraries like Prototype, Datejs, and JQuery and setting this flag - * to false forces closure to use its own implementations when possible. - * - * If your JavaScript can be loaded by a third party site and you are wary about - * relying on non-standard implementations, specify - * "--define goog.TRUSTED_SITE=false" to the compiler. - */ -goog.TRUSTED_SITE = goog.define('goog.TRUSTED_SITE', true); - - -/** - * @define {boolean} Whether code that calls {@link goog.setTestOnly} should - * be disallowed in the compilation unit. - */ -goog.DISALLOW_TEST_ONLY_CODE = - goog.define('goog.DISALLOW_TEST_ONLY_CODE', COMPILED && !goog.DEBUG); - - -/** - * @define {boolean} Whether to use a Chrome app CSP-compliant method for - * loading scripts via goog.require. @see appendScriptSrcNode_. - */ -goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = - goog.define('goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING', false); - - -/** - * Defines a namespace in Closure. - * - * A namespace may only be defined once in a codebase. It may be defined using - * goog.provide() or goog.module(). - * - * The presence of one or more goog.provide() calls in a file indicates - * that the file defines the given objects/namespaces. - * Provided symbols must not be null or undefined. - * - * In addition, goog.provide() creates the object stubs for a namespace - * (for example, goog.provide("goog.foo.bar") will create the object - * goog.foo.bar if it does not already exist). - * - * Build tools also scan for provide/require/module statements - * to discern dependencies, build dependency files (see deps.js), etc. - * - * @see goog.require - * @see goog.module - * @param {string} name Namespace provided by this file in the form - * "goog.package.part". - * deprecated Use goog.module (see b/159289405) - */ -goog.provide = function(name) { - if (goog.isInModuleLoader_()) { - throw new Error('goog.provide cannot be used within a module.'); - } - if (!COMPILED) { - // Ensure that the same namespace isn't provided twice. - // A goog.module/goog.provide maps a goog.require to a specific file - if (goog.isProvided_(name)) { - throw new Error('Namespace "' + name + '" already declared.'); - } - } - - goog.constructNamespace_(name); -}; - - -/** - * @param {string} name Namespace provided by this file in the form - * "goog.package.part". - * @param {?Object=} object The object to embed in the namespace. - * @param {boolean=} overwriteImplicit If object is set and a previous call - * implicitly constructed the namespace given by name, this parameter - * controls whether opt_obj should overwrite the implicitly constructed - * namespace or be merged into it. Defaults to false. - * @private - */ -goog.constructNamespace_ = function(name, object, overwriteImplicit) { - if (!COMPILED) { - delete goog.implicitNamespaces_[name]; - - var namespace = name; - while ((namespace = namespace.substring(0, namespace.lastIndexOf('.')))) { - if (goog.getObjectByName(namespace)) { - break; - } - goog.implicitNamespaces_[namespace] = true; - } - } - - goog.exportPath_(name, object, overwriteImplicit); -}; - - -/** - * According to the CSP3 spec a nonce must be a valid base64 string. - * @see https://www.w3.org/TR/CSP3/#grammardef-base64-value - * @private @const - */ -goog.NONCE_PATTERN_ = /^[\w+/_-]+[=]{0,2}$/; - - -/** - * Returns CSP nonce, if set for any script tag. - * @param {?Window=} opt_window The window context used to retrieve the nonce. - * Defaults to global context. - * @return {string} CSP nonce or empty string if no nonce is present. - * @private - */ -goog.getScriptNonce_ = function(opt_window) { - var doc = (opt_window || goog.global).document; - var script = doc.querySelector && doc.querySelector('script[nonce]'); - if (script) { - // Try to get the nonce from the IDL property first, because browsers that - // implement additional nonce protection features (currently only Chrome) to - // prevent nonce stealing via CSS do not expose the nonce via attributes. - // See https://github.com/whatwg/html/issues/2369 - var nonce = script['nonce'] || script.getAttribute('nonce'); - if (nonce && goog.NONCE_PATTERN_.test(nonce)) { - return nonce; - } - } - return ''; -}; - - -/** - * Module identifier validation regexp. - * Note: This is a conservative check, it is very possible to be more lenient, - * the primary exclusion here is "/" and "\" and a leading ".", these - * restrictions are intended to leave the door open for using goog.require - * with relative file paths rather than module identifiers. - * @private - */ -goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/; - - -/** - * Defines a module in Closure. - * - * Marks that this file must be loaded as a module and claims the namespace. - * - * A namespace may only be defined once in a codebase. It may be defined using - * goog.provide() or goog.module(). - * - * goog.module() has three requirements: - * - goog.module may not be used in the same file as goog.provide. - * - goog.module must be the first statement in the file. - * - only one goog.module is allowed per file. - * - * When a goog.module annotated file is loaded, it is enclosed in - * a strict function closure. This means that: - * - any variables declared in a goog.module file are private to the file - * (not global), though the compiler is expected to inline the module. - * - The code must obey all the rules of "strict" JavaScript. - * - the file will be marked as "use strict" - * - * NOTE: unlike goog.provide, goog.module does not declare any symbols by - * itself. If declared symbols are desired, use - * goog.module.declareLegacyNamespace(). - * - * - * See the public goog.module proposal: http://goo.gl/Va1hin - * - * @param {string} name Namespace provided by this file in the form - * "goog.package.part", is expected but not required. - * @return {void} - */ -goog.module = function(name) { - if (typeof name !== 'string' || !name || - name.search(goog.VALID_MODULE_RE_) == -1) { - throw new Error('Invalid module identifier'); - } - if (!goog.isInGoogModuleLoader_()) { - throw new Error( - 'Module ' + name + ' has been loaded incorrectly. Note, ' + - 'modules cannot be loaded as normal scripts. They require some kind of ' + - 'pre-processing step. You\'re likely trying to load a module via a ' + - 'script tag or as a part of a concatenated bundle without rewriting the ' + - 'module. For more info see: ' + - 'https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.'); - } - if (goog.moduleLoaderState_.moduleName) { - throw new Error('goog.module may only be called once per module.'); - } - - // Store the module name for the loader. - goog.moduleLoaderState_.moduleName = name; - if (!COMPILED) { - // Ensure that the same namespace isn't provided twice. - // A goog.module/goog.provide maps a goog.require to a specific file - if (goog.isProvided_(name)) { - throw new Error('Namespace "' + name + '" already declared.'); - } - delete goog.implicitNamespaces_[name]; - } -}; - - -/** - * @param {string} name The module identifier. - * @return {?} The module exports for an already loaded module or null. - * - * Note: This is not an alternative to goog.require, it does not - * indicate a hard dependency, instead it is used to indicate - * an optional dependency or to access the exports of a module - * that has already been loaded. - * @suppress {missingProvide} - */ -goog.module.get = function(name) { - return goog.module.getInternal_(name); -}; - - -/** - * @param {string} name The module identifier. - * @return {?} The module exports for an already loaded module or null. - * @private - */ -goog.module.getInternal_ = function(name) { - if (!COMPILED) { - if (name in goog.loadedModules_) { - return goog.loadedModules_[name].exports; - } else if (!goog.implicitNamespaces_[name]) { - var ns = goog.getObjectByName(name); - return ns != null ? ns : null; - } - } - return null; -}; - - -/** - * Types of modules the debug loader can load. - * @enum {string} - */ -goog.ModuleType = { - ES6: 'es6', - GOOG: 'goog' -}; - - -/** - * @private {?{ - * moduleName: (string|undefined), - * declareLegacyNamespace:boolean, - * type: ?goog.ModuleType - * }} - */ -goog.moduleLoaderState_ = null; - - -/** - * @private - * @return {boolean} Whether a goog.module or an es6 module is currently being - * initialized. - */ -goog.isInModuleLoader_ = function() { - return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_(); -}; - - -/** - * @private - * @return {boolean} Whether a goog.module is currently being initialized. - */ -goog.isInGoogModuleLoader_ = function() { - return !!goog.moduleLoaderState_ && - goog.moduleLoaderState_.type == goog.ModuleType.GOOG; -}; - - -/** - * @private - * @return {boolean} Whether an es6 module is currently being initialized. - */ -goog.isInEs6ModuleLoader_ = function() { - var inLoader = !!goog.moduleLoaderState_ && - goog.moduleLoaderState_.type == goog.ModuleType.ES6; - - if (inLoader) { - return true; - } - - var jscomp = goog.global['$jscomp']; - - if (jscomp) { - // jscomp may not have getCurrentModulePath if this is a compiled bundle - // that has some of the runtime, but not all of it. This can happen if - // optimizations are turned on so the unused runtime is removed but renaming - // and Closure pass are off (so $jscomp is still named $jscomp and the - // goog.provide/require calls still exist). - if (typeof jscomp.getCurrentModulePath != 'function') { - return false; - } - - // Bundled ES6 module. - return !!jscomp.getCurrentModulePath(); - } - - return false; -}; - - -/** - * Provide the module's exports as a globally accessible object under the - * module's declared name. This is intended to ease migration to goog.module - * for files that have existing usages. - * @suppress {missingProvide} - */ -goog.module.declareLegacyNamespace = function() { - if (!COMPILED && !goog.isInGoogModuleLoader_()) { - throw new Error( - 'goog.module.declareLegacyNamespace must be called from ' + - 'within a goog.module'); - } - if (!COMPILED && !goog.moduleLoaderState_.moduleName) { - throw new Error( - 'goog.module must be called prior to ' + - 'goog.module.declareLegacyNamespace.'); - } - goog.moduleLoaderState_.declareLegacyNamespace = true; -}; - - -/** - * Associates an ES6 module with a Closure module ID so that is available via - * goog.require. The associated ID acts like a goog.module ID - it does not - * create any global names, it is merely available via goog.require / - * goog.module.get / goog.forwardDeclare / goog.requireType. goog.require and - * goog.module.get will return the entire module as if it was import *'d. This - * allows Closure files to reference ES6 modules for the sake of migration. - * - * @param {string} namespace - * @suppress {missingProvide} - */ -goog.declareModuleId = function(namespace) { - if (!COMPILED) { - if (!goog.isInEs6ModuleLoader_()) { - throw new Error( - 'goog.declareModuleId may only be called from ' + - 'within an ES6 module'); - } - if (goog.moduleLoaderState_ && goog.moduleLoaderState_.moduleName) { - throw new Error( - 'goog.declareModuleId may only be called once per module.'); - } - if (namespace in goog.loadedModules_) { - throw new Error( - 'Module with namespace "' + namespace + '" already exists.'); - } - } - if (goog.moduleLoaderState_) { - // Not bundled - debug loading. - goog.moduleLoaderState_.moduleName = namespace; - } else { - // Bundled - not debug loading, no module loader state. - var jscomp = goog.global['$jscomp']; - if (!jscomp || typeof jscomp.getCurrentModulePath != 'function') { - throw new Error( - 'Module with namespace "' + namespace + - '" has been loaded incorrectly.'); - } - var exports = jscomp.require(jscomp.getCurrentModulePath()); - goog.loadedModules_[namespace] = { - exports: exports, - type: goog.ModuleType.ES6, - moduleId: namespace - }; - } -}; - - -/** - * Marks that the current file should only be used for testing, and never for - * live code in production. - * - * In the case of unit tests, the message may optionally be an exact namespace - * for the test (e.g. 'goog.stringTest'). The linter will then ignore the extra - * provide (if not explicitly defined in the code). - * - * @param {string=} opt_message Optional message to add to the error that's - * raised when used in production code. - */ -goog.setTestOnly = function(opt_message) { - if (goog.DISALLOW_TEST_ONLY_CODE) { - opt_message = opt_message || ''; - throw new Error( - 'Importing test-only code into non-debug environment' + - (opt_message ? ': ' + opt_message : '.')); - } -}; - - -/** - * Forward declares a symbol. This is an indication to the compiler that the - * symbol may be used in the source yet is not required and may not be provided - * in compilation. - * - * The most common usage of forward declaration is code that takes a type as a - * function parameter but does not need to require it. By forward declaring - * instead of requiring, no hard dependency is made, and (if not required - * elsewhere) the namespace may never be required and thus, not be pulled - * into the JavaScript binary. If it is required elsewhere, it will be type - * checked as normal. - * - * Before using goog.forwardDeclare, please read the documentation at - * https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation to - * understand the options and tradeoffs when working with forward declarations. - * - * @param {string} name The namespace to forward declare in the form of - * "goog.package.part". - * @deprecated See go/noforwarddeclaration, Use `goog.requireType` instead. - */ -goog.forwardDeclare = function(name) {}; - - -/** - * Forward declare type information. Used to assign types to goog.global - * referenced object that would otherwise result in unknown type references - * and thus block property disambiguation. - */ -goog.forwardDeclare('Document'); -goog.forwardDeclare('HTMLScriptElement'); -goog.forwardDeclare('XMLHttpRequest'); - - -if (!COMPILED) { - /** - * Check if the given name has been goog.provided. This will return false for - * names that are available only as implicit namespaces. - * @param {string} name name of the object to look for. - * @return {boolean} Whether the name has been provided. - * @private - */ - goog.isProvided_ = function(name) { - return (name in goog.loadedModules_) || - (!goog.implicitNamespaces_[name] && goog.getObjectByName(name) != null); - }; - - /** - * Namespaces implicitly defined by goog.provide. For example, - * goog.provide('goog.events.Event') implicitly declares that 'goog' and - * 'goog.events' must be namespaces. - * - * @type {!Object} - * @private - */ - goog.implicitNamespaces_ = {'goog.module': true}; - - // NOTE: We add goog.module as an implicit namespace as goog.module is defined - // here and because the existing module package has not been moved yet out of - // the goog.module namespace. This satisifies both the debug loader and - // ahead-of-time dependency management. -} - - -/** - * Returns an object based on its fully qualified external name. The object - * is not found if null or undefined. If you are using a compilation pass that - * renames property names beware that using this function will not find renamed - * properties. - * - * @param {string} name The fully qualified name. - * @param {Object=} opt_obj The object within which to look; default is - * |goog.global|. - * @return {?} The value (object or primitive) or, if not found, null. - */ -goog.getObjectByName = function(name, opt_obj) { - var parts = name.split('.'); - var cur = opt_obj || goog.global; - for (var i = 0; i < parts.length; i++) { - cur = cur[parts[i]]; - if (cur == null) { - return null; - } - } - return cur; -}; - - -/** - * Adds a dependency from a file to the files it requires. - * @param {string} relPath The path to the js file. - * @param {!Array} provides An array of strings with - * the names of the objects this file provides. - * @param {!Array} requires An array of strings with - * the names of the objects this file requires. - * @param {boolean|!Object=} opt_loadFlags Parameters indicating - * how the file must be loaded. The boolean 'true' is equivalent - * to {'module': 'goog'} for backwards-compatibility. Valid properties - * and values include {'module': 'goog'} and {'lang': 'es6'}. - */ -goog.addDependency = function(relPath, provides, requires, opt_loadFlags) { - if (!COMPILED && goog.DEPENDENCIES_ENABLED) { - goog.debugLoader_.addDependency(relPath, provides, requires, opt_loadFlags); - } -}; - - -// NOTE(nnaze): The debug DOM loader was included in base.js as an original way -// to do "debug-mode" development. The dependency system can sometimes be -// confusing, as can the debug DOM loader's asynchronous nature. -// -// With the DOM loader, a call to goog.require() is not blocking -- the script -// will not load until some point after the current script. If a namespace is -// needed at runtime, it needs to be defined in a previous script, or loaded via -// require() with its registered dependencies. -// -// User-defined namespaces may need their own deps file. For a reference on -// creating a deps file, see: -// Externally: https://developers.google.com/closure/library/docs/depswriter -// -// Because of legacy clients, the DOM loader can't be easily removed from -// base.js. Work was done to make it disableable or replaceable for -// different environments (DOM-less JavaScript interpreters like Rhino or V8, -// for example). See bootstrap/ for more information. - - -/** - * @define {boolean} Whether to enable the debug loader. - * - * If enabled, a call to goog.require() will attempt to load the namespace by - * appending a script tag to the DOM (if the namespace has been registered). - * - * If disabled, goog.require() will simply assert that the namespace has been - * provided (and depend on the fact that some outside tool correctly ordered - * the script). - */ -goog.ENABLE_DEBUG_LOADER = goog.define('goog.ENABLE_DEBUG_LOADER', true); - - -/** - * @param {string} msg - * @private - */ -goog.logToConsole_ = function(msg) { - if (goog.global.console) { - goog.global.console['error'](msg); - } -}; - - -/** - * Implements a system for the dynamic resolution of dependencies that works in - * parallel with the BUILD system. - * - * Note that all calls to goog.require will be stripped by the compiler. - * - * @see goog.provide - * @param {string} namespace Namespace (as was given in goog.provide, - * goog.module, or goog.declareModuleId) in the form - * "goog.package.part". - * @return {?} If called within a goog.module or ES6 module file, the associated - * namespace or module otherwise null. - */ -goog.require = function(namespace) { - if (!COMPILED) { - // Might need to lazy load on old IE. - if (goog.ENABLE_DEBUG_LOADER) { - goog.debugLoader_.requested(namespace); - } - - // If the object already exists we do not need to do anything. - if (goog.isProvided_(namespace)) { - if (goog.isInModuleLoader_()) { - return goog.module.getInternal_(namespace); - } - } else if (goog.ENABLE_DEBUG_LOADER) { - var moduleLoaderState = goog.moduleLoaderState_; - goog.moduleLoaderState_ = null; - try { - goog.debugLoader_.load_(namespace); - } finally { - goog.moduleLoaderState_ = moduleLoaderState; - } - } - - return null; - } -}; - - -/** - * Requires a symbol for its type information. This is an indication to the - * compiler that the symbol may appear in type annotations, yet it is not - * referenced at runtime. - * - * When called within a goog.module or ES6 module file, the return value may be - * assigned to or destructured into a variable, but it may not be otherwise used - * in code outside of a type annotation. - * - * Note that all calls to goog.requireType will be stripped by the compiler. - * - * @param {string} namespace Namespace (as was given in goog.provide, - * goog.module, or goog.declareModuleId) in the form - * "goog.package.part". - * @return {?} - */ -goog.requireType = function(namespace) { - // Return an empty object so that single-level destructuring of the return - // value doesn't crash at runtime when using the debug loader. Multi-level - // destructuring isn't supported. - return {}; -}; - - -/** - * Path for included scripts. - * @type {string} - */ -goog.basePath = ''; - - -/** - * A hook for overriding the base path. - * @type {string|undefined} - */ -goog.global.CLOSURE_BASE_PATH; - - -/** - * Whether to attempt to load Closure's deps file. By default, when uncompiled, - * deps files will attempt to be loaded. - * @type {boolean|undefined} - */ -goog.global.CLOSURE_NO_DEPS; - - -/** - * A function to import a single script. This is meant to be overridden when - * Closure is being run in non-HTML contexts, such as web workers. It's defined - * in the global scope so that it can be set before base.js is loaded, which - * allows deps.js to be imported properly. - * - * The first parameter the script source, which is a relative URI. The second, - * optional parameter is the script contents, in the event the script needed - * transformation. It should return true if the script was imported, false - * otherwise. - * @type {(function(string, string=): boolean)|undefined} - */ -goog.global.CLOSURE_IMPORT_SCRIPT; - - -/** - * Null function used for default values of callbacks, etc. - * @return {void} Nothing. - * @deprecated use '()=>{}' or 'function(){}' instead. - */ -goog.nullFunction = function() {}; - - -/** - * When defining a class Foo with an abstract method bar(), you can do: - * Foo.prototype.bar = goog.abstractMethod - * - * Now if a subclass of Foo fails to override bar(), an error will be thrown - * when bar() is invoked. - * - * @type {!Function} - * @throws {Error} when invoked to indicate the method should be overridden. - * @deprecated Use "@abstract" annotation instead of goog.abstractMethod in new - * code. See - * https://github.com/google/closure-compiler/wiki/@abstract-classes-and-methods - */ -goog.abstractMethod = function() { - throw new Error('unimplemented abstract method'); -}; - - -/** - * Adds a `getInstance` static method that always returns the same - * instance object. - * @param {!Function} ctor The constructor for the class to add the static - * method to. - * @suppress {missingProperties} 'instance_' isn't a property on 'Function' - * but we don't have a better type to use here. - */ -goog.addSingletonGetter = function(ctor) { - // instance_ is immediately set to prevent issues with sealed constructors - // such as are encountered when a constructor is returned as the export object - // of a goog.module in unoptimized code. - // Delcare type to avoid conformance violations that ctor.instance_ is unknown - /** @type {undefined|!Object} @suppress {underscore} */ - ctor.instance_ = undefined; - ctor.getInstance = function() { - if (ctor.instance_) { - return ctor.instance_; - } - if (goog.DEBUG) { - // NOTE: JSCompiler can't optimize away Array#push. - goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = ctor; - } - // Cast to avoid conformance violations that ctor.instance_ is unknown - return /** @type {!Object|undefined} */ (ctor.instance_) = new ctor; - }; -}; - - -/** - * All singleton classes that have been instantiated, for testing. Don't read - * it directly, use the `goog.testing.singleton` module. The compiler - * removes this variable if unused. - * @type {!Array} - * @private - */ -goog.instantiatedSingletons_ = []; - - -/** - * @define {boolean} Whether to load goog.modules using `eval` when using - * the debug loader. This provides a better debugging experience as the - * source is unmodified and can be edited using Chrome Workspaces or similar. - * However in some environments the use of `eval` is banned - * so we provide an alternative. - */ -goog.LOAD_MODULE_USING_EVAL = goog.define('goog.LOAD_MODULE_USING_EVAL', true); - - -/** - * @define {boolean} Whether the exports of goog.modules should be sealed when - * possible. - */ -goog.SEAL_MODULE_EXPORTS = goog.define('goog.SEAL_MODULE_EXPORTS', goog.DEBUG); - - -/** - * The registry of initialized modules: - * The module identifier or path to module exports map. - * @private @const {!Object} - */ -goog.loadedModules_ = {}; - - -/** - * True if the debug loader enabled and used. - * @const {boolean} - */ -goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER; - - -/** - * @define {string} How to decide whether to transpile. Valid values - * are 'always', 'never', and 'detect'. The default ('detect') is to - * use feature detection to determine which language levels need - * transpilation. - */ -// NOTE(sdh): we could expand this to accept a language level to bypass -// detection: e.g. goog.TRANSPILE == 'es5' would transpile ES6 files but -// would leave ES3 and ES5 files alone. -goog.TRANSPILE = goog.define('goog.TRANSPILE', 'detect'); - -/** - * @define {boolean} If true assume that ES modules have already been - * transpiled by the jscompiler (in the same way that transpile.js would - * transpile them - to jscomp modules). Useful only for servers that wish to use - * the debug loader and transpile server side. Thus this is only respected if - * goog.TRANSPILE is "never". - */ -goog.ASSUME_ES_MODULES_TRANSPILED = - goog.define('goog.ASSUME_ES_MODULES_TRANSPILED', false); - - -/** - * @define {string} If a file needs to be transpiled what the output language - * should be. By default this is the highest language level this file detects - * the current environment supports. Generally this flag should not be set, but - * it could be useful to override. Example: If the current environment supports - * ES6 then by default ES7+ files will be transpiled to ES6, unless this is - * overridden. - * - * Valid values include: es3, es5, es6, es7, and es8. Anything not recognized - * is treated as es3. - * - * Note that setting this value does not force transpilation. Just if - * transpilation occurs this will be the output. So this is most useful when - * goog.TRANSPILE is set to 'always' and then forcing the language level to be - * something lower than what the environment detects. - */ -goog.TRANSPILE_TO_LANGUAGE = goog.define('goog.TRANSPILE_TO_LANGUAGE', ''); - - -/** - * @define {string} Path to the transpiler. Executing the script at this - * path (relative to base.js) should define a function $jscomp.transpile. - */ -goog.TRANSPILER = goog.define('goog.TRANSPILER', 'transpile.js'); - - -/** - * @define {string} Trusted Types policy name. If non-empty then Closure will - * use Trusted Types. - */ -goog.TRUSTED_TYPES_POLICY_NAME = - goog.define('goog.TRUSTED_TYPES_POLICY_NAME', 'goog'); - - -/** - * @package {?boolean} - * Visible for testing. - */ -goog.hasBadLetScoping = null; - - -/** - * @param {function(?):?|string} moduleDef The module definition. - */ -goog.loadModule = function(moduleDef) { - // NOTE: we allow function definitions to be either in the from - // of a string to eval (which keeps the original source intact) or - // in a eval forbidden environment (CSP) we allow a function definition - // which in its body must call `goog.module`, and return the exports - // of the module. - var previousState = goog.moduleLoaderState_; - try { - goog.moduleLoaderState_ = { - moduleName: '', - declareLegacyNamespace: false, - type: goog.ModuleType.GOOG - }; - var origExports = {}; - var exports = origExports; - if (typeof moduleDef === 'function') { - exports = moduleDef.call(undefined, exports); - } else if (typeof moduleDef === 'string') { - exports = goog.loadModuleFromSource_.call(undefined, exports, moduleDef); - } else { - throw new Error('Invalid module definition'); - } - - var moduleName = goog.moduleLoaderState_.moduleName; - if (typeof moduleName === 'string' && moduleName) { - // Don't seal legacy namespaces as they may be used as a parent of - // another namespace - if (goog.moduleLoaderState_.declareLegacyNamespace) { - // Whether exports was overwritten via default export assignment. - // This is important for legacy namespaces as it dictates whether - // previously a previously loaded implicit namespace should be clobbered - // or not. - var isDefaultExport = origExports !== exports; - goog.constructNamespace_(moduleName, exports, isDefaultExport); - } else if ( - goog.SEAL_MODULE_EXPORTS && Object.seal && - typeof exports == 'object' && exports != null) { - Object.seal(exports); - } - - var data = { - exports: exports, - type: goog.ModuleType.GOOG, - moduleId: goog.moduleLoaderState_.moduleName - }; - goog.loadedModules_[moduleName] = data; - } else { - throw new Error('Invalid module name \"' + moduleName + '\"'); - } - } finally { - goog.moduleLoaderState_ = previousState; - } -}; - - -/** - * @private @const - */ -goog.loadModuleFromSource_ = - /** @type {function(!Object, string):?} */ (function(exports) { - // NOTE: we avoid declaring parameters or local variables here to avoid - // masking globals or leaking values into the module definition. - 'use strict'; - eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(arguments[1])); - return exports; - }); - - -/** - * Normalize a file path by removing redundant ".." and extraneous "." file - * path components. - * @param {string} path - * @return {string} - * @private - */ -goog.normalizePath_ = function(path) { - var components = path.split('/'); - var i = 0; - while (i < components.length) { - if (components[i] == '.') { - components.splice(i, 1); - } else if ( - i && components[i] == '..' && components[i - 1] && - components[i - 1] != '..') { - components.splice(--i, 2); - } else { - i++; - } - } - return components.join('/'); -}; - - -/** - * Provides a hook for loading a file when using Closure's goog.require() API - * with goog.modules. In particular this hook is provided to support Node.js. - * - * @type {(function(string):string)|undefined} - */ -goog.global.CLOSURE_LOAD_FILE_SYNC; - - -/** - * Loads file by synchronous XHR. Should not be used in production environments. - * @param {string} src Source URL. - * @return {?string} File contents, or null if load failed. - * @private - */ -goog.loadFileSync_ = function(src) { - if (goog.global.CLOSURE_LOAD_FILE_SYNC) { - return goog.global.CLOSURE_LOAD_FILE_SYNC(src); - } else { - try { - /** @type {XMLHttpRequest} */ - var xhr = new goog.global['XMLHttpRequest'](); - xhr.open('get', src, false); - xhr.send(); - // NOTE: Successful http: requests have a status of 200, but successful - // file: requests may have a status of zero. Any other status, or a - // thrown exception (particularly in case of file: requests) indicates - // some sort of error, which we treat as a missing or unavailable file. - return xhr.status == 0 || xhr.status == 200 ? xhr.responseText : null; - } catch (err) { - // No need to rethrow or log, since errors should show up on their own. - return null; - } - } -}; - - -/** - * Lazily retrieves the transpiler and applies it to the source. - * @param {string} code JS code. - * @param {string} path Path to the code. - * @param {string} target Language level output. - * @return {string} The transpiled code. - * @private - */ -goog.transpile_ = function(code, path, target) { - var jscomp = goog.global['$jscomp']; - if (!jscomp) { - goog.global['$jscomp'] = jscomp = {}; - } - var transpile = jscomp.transpile; - if (!transpile) { - var transpilerPath = goog.basePath + goog.TRANSPILER; - var transpilerCode = goog.loadFileSync_(transpilerPath); - if (transpilerCode) { - // This must be executed synchronously, since by the time we know we - // need it, we're about to load and write the ES6 code synchronously, - // so a normal script-tag load will be too slow. Wrapped in a function - // so that code is eval'd in the global scope. - (function() { - (0, eval)(transpilerCode + '\n//# sourceURL=' + transpilerPath); - }).call(goog.global); - // Even though the transpiler is optional, if $gwtExport is found, it's - // a sign the transpiler was loaded and the $jscomp.transpile *should* - // be there. - if (goog.global['$gwtExport'] && goog.global['$gwtExport']['$jscomp'] && - !goog.global['$gwtExport']['$jscomp']['transpile']) { - throw new Error( - 'The transpiler did not properly export the "transpile" ' + - 'method. $gwtExport: ' + JSON.stringify(goog.global['$gwtExport'])); - } - // transpile.js only exports a single $jscomp function, transpile. We - // grab just that and add it to the existing definition of $jscomp which - // contains the polyfills. - goog.global['$jscomp'].transpile = - goog.global['$gwtExport']['$jscomp']['transpile']; - jscomp = goog.global['$jscomp']; - transpile = jscomp.transpile; - } - } - if (!transpile) { - // The transpiler is an optional component. If it's not available then - // replace it with a pass-through function that simply logs. - var suffix = ' requires transpilation but no transpiler was found.'; - transpile = jscomp.transpile = function(code, path) { - // TODO(sdh): figure out some way to get this error to show up - // in test results, noting that the failure may occur in many - // different ways, including in loadModule() before the test - // runner even comes up. - goog.logToConsole_(path + suffix); - return code; - }; - } - // Note: any transpilation errors/warnings will be logged to the console. - return transpile(code, path, target); -}; - -//============================================================================== -// Language Enhancements -//============================================================================== - - -/** - * This is a "fixed" version of the typeof operator. It differs from the typeof - * operator in such a way that null returns 'null' and arrays return 'array'. - * @param {?} value The value to get the type of. - * @return {string} The name of the type. - */ -goog.typeOf = function(value) { - var s = typeof value; - - if (s != 'object') { - return s; - } - - if (!value) { - return 'null'; - } - - if (Array.isArray(value)) { - return 'array'; - } - return s; -}; - - -/** - * Returns true if the object looks like an array. To qualify as array like - * the value needs to be either a NodeList or an object with a Number length - * property. Note that for this function neither strings nor functions are - * considered "array-like". - * - * @param {?} val Variable to test. - * @return {boolean} Whether variable is an array. - */ -goog.isArrayLike = function(val) { - var type = goog.typeOf(val); - // We do not use goog.isObject here in order to exclude function values. - return type == 'array' || type == 'object' && typeof val.length == 'number'; -}; - - -/** - * Returns true if the object looks like a Date. To qualify as Date-like the - * value needs to be an object and have a getFullYear() function. - * @param {?} val Variable to test. - * @return {boolean} Whether variable is a like a Date. - */ -goog.isDateLike = function(val) { - return goog.isObject(val) && typeof val.getFullYear == 'function'; -}; - - -/** - * Returns true if the specified value is an object. This includes arrays and - * functions. - * @param {?} val Variable to test. - * @return {boolean} Whether variable is an object. - */ -goog.isObject = function(val) { - var type = typeof val; - return type == 'object' && val != null || type == 'function'; - // return Object(val) === val also works, but is slower, especially if val is - // not an object. -}; - - -/** - * Gets a unique ID for an object. This mutates the object so that further calls - * with the same object as a parameter returns the same value. The unique ID is - * guaranteed to be unique across the current session amongst objects that are - * passed into `getUid`. There is no guarantee that the ID is unique or - * consistent across sessions. It is unsafe to generate unique ID for function - * prototypes. - * - * @param {Object} obj The object to get the unique ID for. - * @return {number} The unique ID for the object. - */ -goog.getUid = function(obj) { - // TODO(arv): Make the type stricter, do not accept null. - return Object.prototype.hasOwnProperty.call(obj, goog.UID_PROPERTY_) && - obj[goog.UID_PROPERTY_] || - (obj[goog.UID_PROPERTY_] = ++goog.uidCounter_); -}; - - -/** - * Whether the given object is already assigned a unique ID. - * - * This does not modify the object. - * - * @param {!Object} obj The object to check. - * @return {boolean} Whether there is an assigned unique id for the object. - */ -goog.hasUid = function(obj) { - return !!obj[goog.UID_PROPERTY_]; -}; - - -/** - * Removes the unique ID from an object. This is useful if the object was - * previously mutated using `goog.getUid` in which case the mutation is - * undone. - * @param {Object} obj The object to remove the unique ID field from. - */ -goog.removeUid = function(obj) { - // TODO(arv): Make the type stricter, do not accept null. - - // In IE, DOM nodes are not instances of Object and throw an exception if we - // try to delete. Instead we try to use removeAttribute. - if (obj !== null && 'removeAttribute' in obj) { - obj.removeAttribute(goog.UID_PROPERTY_); - } - - try { - delete obj[goog.UID_PROPERTY_]; - } catch (ex) { - } -}; - - -/** - * Name for unique ID property. Initialized in a way to help avoid collisions - * with other closure JavaScript on the same page. - * @type {string} - * @private - */ -goog.UID_PROPERTY_ = 'closure_uid_' + ((Math.random() * 1e9) >>> 0); - - -/** - * Counter for UID. - * @type {number} - * @private - */ -goog.uidCounter_ = 0; - - -/** - * Clones a value. The input may be an Object, Array, or basic type. Objects and - * arrays will be cloned recursively. - * - * WARNINGS: - * goog.cloneObject does not detect reference loops. Objects that - * refer to themselves will cause infinite recursion. - * - * goog.cloneObject is unaware of unique identifiers, and copies - * UIDs created by getUid into cloned results. - * - * @param {*} obj The value to clone. - * @return {*} A clone of the input value. - * @deprecated goog.cloneObject is unsafe. Prefer the goog.object methods. - */ -goog.cloneObject = function(obj) { - var type = goog.typeOf(obj); - if (type == 'object' || type == 'array') { - if (typeof obj.clone === 'function') { - return obj.clone(); - } - if (typeof Map !== 'undefined' && obj instanceof Map) { - return new Map(obj); - } else if (typeof Set !== 'undefined' && obj instanceof Set) { - return new Set(obj); - } - var clone = type == 'array' ? [] : {}; - for (var key in obj) { - clone[key] = goog.cloneObject(obj[key]); - } - return clone; - } - - return obj; -}; - - -/** - * A native implementation of goog.bind. - * @param {?function(this:T, ...)} fn A function to partially apply. - * @param {T} selfObj Specifies the object which this should point to when the - * function is run. - * @param {...*} var_args Additional arguments that are partially applied to the - * function. - * @return {!Function} A partially-applied form of the function goog.bind() was - * invoked as a method of. - * @template T - * @private - */ -goog.bindNative_ = function(fn, selfObj, var_args) { - return /** @type {!Function} */ (fn.call.apply(fn.bind, arguments)); -}; - - -/** - * A pure-JS implementation of goog.bind. - * @param {?function(this:T, ...)} fn A function to partially apply. - * @param {T} selfObj Specifies the object which this should point to when the - * function is run. - * @param {...*} var_args Additional arguments that are partially applied to the - * function. - * @return {!Function} A partially-applied form of the function goog.bind() was - * invoked as a method of. - * @template T - * @private - */ -goog.bindJs_ = function(fn, selfObj, var_args) { - if (!fn) { - throw new Error(); - } - - if (arguments.length > 2) { - var boundArgs = Array.prototype.slice.call(arguments, 2); - return function() { - // Prepend the bound arguments to the current arguments. - var newArgs = Array.prototype.slice.call(arguments); - Array.prototype.unshift.apply(newArgs, boundArgs); - return fn.apply(selfObj, newArgs); - }; - - } else { - return function() { - return fn.apply(selfObj, arguments); - }; - } -}; - - -/** - * Partially applies this function to a particular 'this object' and zero or - * more arguments. The result is a new function with some arguments of the first - * function pre-filled and the value of this 'pre-specified'. - * - * Remaining arguments specified at call-time are appended to the pre-specified - * ones. - * - * Also see: {@link #partial}. - * - * Usage: - *
var barMethBound = goog.bind(myFunction, myObj, 'arg1', 'arg2');
- * barMethBound('arg3', 'arg4');
- * - * @param {?function(this:T, ...)} fn A function to partially apply. - * @param {T} selfObj Specifies the object which this should point to when the - * function is run. - * @param {...*} var_args Additional arguments that are partially applied to the - * function. - * @return {!Function} A partially-applied form of the function goog.bind() was - * invoked as a method of. - * @template T - * @suppress {deprecated} See above. - * @deprecated use `=> {}` or Function.prototype.bind instead. - */ -goog.bind = function(fn, selfObj, var_args) { - // TODO(nicksantos): narrow the type signature. - if (Function.prototype.bind && - // NOTE(nicksantos): Somebody pulled base.js into the default Chrome - // extension environment. This means that for Chrome extensions, they get - // the implementation of Function.prototype.bind that calls goog.bind - // instead of the native one. Even worse, we don't want to introduce a - // circular dependency between goog.bind and Function.prototype.bind, so - // we have to hack this to make sure it works correctly. - Function.prototype.bind.toString().indexOf('native code') != -1) { - goog.bind = goog.bindNative_; - } else { - goog.bind = goog.bindJs_; - } - return goog.bind.apply(null, arguments); -}; - - -/** - * Like goog.bind(), except that a 'this object' is not required. Useful when - * the target function is already bound. - * - * Usage: - * var g = goog.partial(f, arg1, arg2); - * g(arg3, arg4); - * - * @param {Function} fn A function to partially apply. - * @param {...*} var_args Additional arguments that are partially applied to fn. - * @return {!Function} A partially-applied form of the function goog.partial() - * was invoked as a method of. - */ -goog.partial = function(fn, var_args) { - var args = Array.prototype.slice.call(arguments, 1); - return function() { - // Clone the array (with slice()) and append additional arguments - // to the existing arguments. - var newArgs = args.slice(); - newArgs.push.apply(newArgs, arguments); - return fn.apply(/** @type {?} */ (this), newArgs); - }; -}; - - -/** - * Copies all the members of a source object to a target object. This method - * does not work on all browsers for all objects that contain keys such as - * toString or hasOwnProperty. Use goog.object.extend for this purpose. - * - * NOTE: Some have advocated for the use of goog.mixin to setup classes - * with multiple inheritence (traits, mixins, etc). However, as it simply - * uses "for in", this is not compatible with ES6 classes whose methods are - * non-enumerable. Changing this, would break cases where non-enumerable - * properties are not expected. - * - * @param {Object} target Target. - * @param {Object} source Source. - * @deprecated Prefer Object.assign - */ -goog.mixin = function(target, source) { - for (var x in source) { - target[x] = source[x]; - } - - // For IE7 or lower, the for-in-loop does not contain any properties that are - // not enumerable on the prototype object (for example, isPrototypeOf from - // Object.prototype) but also it will not include 'replace' on objects that - // extend String and change 'replace' (not that it is common for anyone to - // extend anything except Object). -}; - - -/** - * @return {number} An integer value representing the number of milliseconds - * between midnight, January 1, 1970 and the current time. - * @deprecated Use Date.now - */ -goog.now = function() { - return Date.now(); -}; - - -/** - * Evals JavaScript in the global scope. - * - * Throws an exception if neither execScript or eval is defined. - * @param {string|!TrustedScript} script JavaScript string. - */ -goog.globalEval = function(script) { - (0, eval)(script); -}; - - -/** - * Optional map of CSS class names to obfuscated names used with - * goog.getCssName(). - * @private {!Object|undefined} - * @see goog.setCssNameMapping - */ -goog.cssNameMapping_; - - -/** - * Optional obfuscation style for CSS class names. Should be set to either - * 'BY_WHOLE' or 'BY_PART' if defined. - * @type {string|undefined} - * @private - * @see goog.setCssNameMapping - */ -goog.cssNameMappingStyle_; - - - -/** - * A hook for modifying the default behavior goog.getCssName. The function - * if present, will receive the standard output of the goog.getCssName as - * its input. - * - * @type {(function(string):string)|undefined} - */ -goog.global.CLOSURE_CSS_NAME_MAP_FN; - - -/** - * Handles strings that are intended to be used as CSS class names. - * - * This function works in tandem with @see goog.setCssNameMapping. - * - * Without any mapping set, the arguments are simple joined with a hyphen and - * passed through unaltered. - * - * When there is a mapping, there are two possible styles in which these - * mappings are used. In the BY_PART style, each part (i.e. in between hyphens) - * of the passed in css name is rewritten according to the map. In the BY_WHOLE - * style, the full css name is looked up in the map directly. If a rewrite is - * not specified by the map, the compiler will output a warning. - * - * When the mapping is passed to the compiler, it will replace calls to - * goog.getCssName with the strings from the mapping, e.g. - * var x = goog.getCssName('foo'); - * var y = goog.getCssName(this.baseClass, 'active'); - * becomes: - * var x = 'foo'; - * var y = this.baseClass + '-active'; - * - * If one argument is passed it will be processed, if two are passed only the - * modifier will be processed, as it is assumed the first argument was generated - * as a result of calling goog.getCssName. - * - * @param {string} className The class name. - * @param {string=} opt_modifier A modifier to be appended to the class name. - * @return {string} The class name or the concatenation of the class name and - * the modifier. - */ -goog.getCssName = function(className, opt_modifier) { - // String() is used for compatibility with compiled soy where the passed - // className can be non-string objects. - if (String(className).charAt(0) == '.') { - throw new Error( - 'className passed in goog.getCssName must not start with ".".' + - ' You passed: ' + className); - } - - var getMapping = function(cssName) { - return goog.cssNameMapping_[cssName] || cssName; - }; - - var renameByParts = function(cssName) { - // Remap all the parts individually. - var parts = cssName.split('-'); - var mapped = []; - for (var i = 0; i < parts.length; i++) { - mapped.push(getMapping(parts[i])); - } - return mapped.join('-'); - }; - - var rename; - if (goog.cssNameMapping_) { - rename = - goog.cssNameMappingStyle_ == 'BY_WHOLE' ? getMapping : renameByParts; - } else { - rename = function(a) { - return a; - }; - } - - var result = - opt_modifier ? className + '-' + rename(opt_modifier) : rename(className); - - // The special CLOSURE_CSS_NAME_MAP_FN allows users to specify further - // processing of the class name. - if (goog.global.CLOSURE_CSS_NAME_MAP_FN) { - return goog.global.CLOSURE_CSS_NAME_MAP_FN(result); - } - - return result; -}; - - -/** - * Sets the map to check when returning a value from goog.getCssName(). Example: - *
- * goog.setCssNameMapping({
- *   "goog": "a",
- *   "disabled": "b",
- * });
- *
- * var x = goog.getCssName('goog');
- * // The following evaluates to: "a a-b".
- * goog.getCssName('goog') + ' ' + goog.getCssName(x, 'disabled')
- * 
- * When declared as a map of string literals to string literals, the JSCompiler - * will replace all calls to goog.getCssName() using the supplied map if the - * --process_closure_primitives flag is set. - * - * @param {!Object} mapping A map of strings to strings where keys are possible - * arguments to goog.getCssName() and values are the corresponding values - * that should be returned. - * @param {string=} opt_style The style of css name mapping. There are two valid - * options: 'BY_PART', and 'BY_WHOLE'. - * @see goog.getCssName for a description. - */ -goog.setCssNameMapping = function(mapping, opt_style) { - goog.cssNameMapping_ = mapping; - goog.cssNameMappingStyle_ = opt_style; -}; - - -/** - * To use CSS renaming in compiled mode, one of the input files should have a - * call to goog.setCssNameMapping() with an object literal that the JSCompiler - * can extract and use to replace all calls to goog.getCssName(). In uncompiled - * mode, JavaScript code should be loaded before this base.js file that declares - * a global variable, CLOSURE_CSS_NAME_MAPPING, which is used below. This is - * to ensure that the mapping is loaded before any calls to goog.getCssName() - * are made in uncompiled mode. - * - * A hook for overriding the CSS name mapping. - * @type {!Object|undefined} - */ -goog.global.CLOSURE_CSS_NAME_MAPPING; - - -if (!COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING) { - // This does not call goog.setCssNameMapping() because the JSCompiler - // requires that goog.setCssNameMapping() be called with an object literal. - goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING; -} - - -/** - * Gets a localized message. - * - * This function is a compiler primitive. If you give the compiler a localized - * message bundle, it will replace the string at compile-time with a localized - * version, and expand goog.getMsg call to a concatenated string. - * - * Messages must be initialized in the form: - * - * var MSG_NAME = goog.getMsg('Hello {$placeholder}', {'placeholder': 'world'}); - * - * - * This function produces a string which should be treated as plain text. Use - * {@link goog.html.SafeHtmlFormatter} in conjunction with goog.getMsg to - * produce SafeHtml. - * - * @param {string} str Translatable string, places holders in the form {$foo}. - * @param {Object=} opt_values Maps place holder name to value. - * @param {{html: (boolean|undefined), - * unescapeHtmlEntities: (boolean|undefined)}=} opt_options Options: - * html: Escape '<' in str to '<'. Used by Closure Templates where the - * generated code size and performance is critical which is why {@link - * goog.html.SafeHtmlFormatter} is not used. The value must be literal true - * or false. - * unescapeHtmlEntities: Unescape common html entities: >, <, ', - * " and &. Used for messages not in HTML context, such as with - * `textContent` property. - * @return {string} message with placeholders filled. - */ -goog.getMsg = function(str, opt_values, opt_options) { - if (opt_options && opt_options.html) { - // Note that '&' is not replaced because the translation can contain HTML - // entities. - str = str.replace(/') - .replace(/'/g, '\'') - .replace(/"/g, '"') - .replace(/&/g, '&'); - } - if (opt_values) { - str = str.replace(/\{\$([^}]+)}/g, function(match, key) { - return (opt_values != null && key in opt_values) ? opt_values[key] : - match; - }); - } - return str; -}; - - -/** - * Gets a localized message. If the message does not have a translation, gives a - * fallback message. - * - * This is useful when introducing a new message that has not yet been - * translated into all languages. - * - * This function is a compiler primitive. Must be used in the form: - * var x = goog.getMsgWithFallback(MSG_A, MSG_B); - * where MSG_A and MSG_B were initialized with goog.getMsg. - * - * @param {string} a The preferred message. - * @param {string} b The fallback message. - * @return {string} The best translated message. - */ -goog.getMsgWithFallback = function(a, b) { - return a; -}; - - -/** - * Exposes an unobfuscated global namespace path for the given object. - * Note that fields of the exported object *will* be obfuscated, unless they are - * exported in turn via this function or goog.exportProperty. - * - * Also handy for making public items that are defined in anonymous closures. - * - * ex. goog.exportSymbol('public.path.Foo', Foo); - * - * ex. goog.exportSymbol('public.path.Foo.staticFunction', Foo.staticFunction); - * public.path.Foo.staticFunction(); - * - * ex. goog.exportSymbol('public.path.Foo.prototype.myMethod', - * Foo.prototype.myMethod); - * new public.path.Foo().myMethod(); - * - * @param {string} publicPath Unobfuscated name to export. - * @param {*} object Object the name should point to. - * @param {?Object=} objectToExportTo The object to add the path to; default - * is goog.global. - */ -goog.exportSymbol = function(publicPath, object, objectToExportTo) { - goog.exportPath_( - publicPath, object, /* overwriteImplicit= */ true, objectToExportTo); -}; - - -/** - * Exports a property unobfuscated into the object's namespace. - * ex. goog.exportProperty(Foo, 'staticFunction', Foo.staticFunction); - * ex. goog.exportProperty(Foo.prototype, 'myMethod', Foo.prototype.myMethod); - * @param {Object} object Object whose static property is being exported. - * @param {string} publicName Unobfuscated name to export. - * @param {*} symbol Object the name should point to. - */ -goog.exportProperty = function(object, publicName, symbol) { - object[publicName] = symbol; -}; - - -/** - * Inherit the prototype methods from one constructor into another. - * - * Usage: - *
- * function ParentClass(a, b) { }
- * ParentClass.prototype.foo = function(a) { };
- *
- * function ChildClass(a, b, c) {
- *   ChildClass.base(this, 'constructor', a, b);
- * }
- * goog.inherits(ChildClass, ParentClass);
- *
- * var child = new ChildClass('a', 'b', 'see');
- * child.foo(); // This works.
- * 
- * - * @param {!Function} childCtor Child class. - * @param {!Function} parentCtor Parent class. - * @suppress {strictMissingProperties} superClass_ and base is not defined on - * Function. - * @deprecated Use ECMAScript class syntax instead. - */ -goog.inherits = function(childCtor, parentCtor) { - /** @constructor */ - function tempCtor() {} - tempCtor.prototype = parentCtor.prototype; - childCtor.superClass_ = parentCtor.prototype; - childCtor.prototype = new tempCtor(); - /** @override */ - childCtor.prototype.constructor = childCtor; - - /** - * Calls superclass constructor/method. - * - * This function is only available if you use goog.inherits to - * express inheritance relationships between classes. - * - * NOTE: This is a replacement for goog.base and for superClass_ - * property defined in childCtor. - * - * @param {!Object} me Should always be "this". - * @param {string} methodName The method name to call. Calling - * superclass constructor can be done with the special string - * 'constructor'. - * @param {...*} var_args The arguments to pass to superclass - * method/constructor. - * @return {*} The return value of the superclass method/constructor. - */ - childCtor.base = function(me, methodName, var_args) { - // Copying using loop to avoid deop due to passing arguments object to - // function. This is faster in many JS engines as of late 2014. - var args = new Array(arguments.length - 2); - for (var i = 2; i < arguments.length; i++) { - args[i - 2] = arguments[i]; - } - return parentCtor.prototype[methodName].apply(me, args); - }; -}; - - -/** - * Allow for aliasing within scope functions. This function exists for - * uncompiled code - in compiled code the calls will be inlined and the aliases - * applied. In uncompiled code the function is simply run since the aliases as - * written are valid JavaScript. - * - * - * @param {function()} fn Function to call. This function can contain aliases - * to namespaces (e.g. "var dom = goog.dom") or classes - * (e.g. "var Timer = goog.Timer"). - * @deprecated Use goog.module instead. - */ -goog.scope = function(fn) { - if (goog.isInModuleLoader_()) { - throw new Error('goog.scope is not supported within a module.'); - } - fn.call(goog.global); -}; - - -/* - * To support uncompiled, strict mode bundles that use eval to divide source - * like so: - * eval('someSource;//# sourceUrl sourcefile.js'); - * We need to export the globally defined symbols "goog" and "COMPILED". - * Exporting "goog" breaks the compiler optimizations, so we required that - * be defined externally. - * NOTE: We don't use goog.exportSymbol here because we don't want to trigger - * extern generation when that compiler option is enabled. - */ -if (!COMPILED) { - goog.global['COMPILED'] = COMPILED; -} - - -//============================================================================== -// goog.defineClass implementation -//============================================================================== - - -/** - * Creates a restricted form of a Closure "class": - * - from the compiler's perspective, the instance returned from the - * constructor is sealed (no new properties may be added). This enables - * better checks. - * - the compiler will rewrite this definition to a form that is optimal - * for type checking and optimization (initially this will be a more - * traditional form). - * - * @param {Function} superClass The superclass, Object or null. - * @param {goog.defineClass.ClassDescriptor} def - * An object literal describing - * the class. It may have the following properties: - * "constructor": the constructor function - * "statics": an object literal containing methods to add to the constructor - * as "static" methods or a function that will receive the constructor - * function as its only parameter to which static properties can - * be added. - * all other properties are added to the prototype. - * @return {!Function} The class constructor. - * @deprecated Use ECMAScript class syntax instead. - */ -goog.defineClass = function(superClass, def) { - // TODO(johnlenz): consider making the superClass an optional parameter. - var constructor = def.constructor; - var statics = def.statics; - // Wrap the constructor prior to setting up the prototype and static methods. - if (!constructor || constructor == Object.prototype.constructor) { - constructor = function() { - throw new Error( - 'cannot instantiate an interface (no constructor defined).'); - }; - } - - var cls = goog.defineClass.createSealingConstructor_(constructor, superClass); - if (superClass) { - goog.inherits(cls, superClass); - } - - // Remove all the properties that should not be copied to the prototype. - delete def.constructor; - delete def.statics; - - goog.defineClass.applyProperties_(cls.prototype, def); - if (statics != null) { - if (statics instanceof Function) { - statics(cls); - } else { - goog.defineClass.applyProperties_(cls, statics); - } - } - - return cls; -}; - - -/** - * @typedef {{ - * constructor: (!Function|undefined), - * statics: (Object|undefined|function(Function):void) - * }} - */ -goog.defineClass.ClassDescriptor; - - -/** - * @define {boolean} Whether the instances returned by goog.defineClass should - * be sealed when possible. - * - * When sealing is disabled the constructor function will not be wrapped by - * goog.defineClass, making it incompatible with ES6 class methods. - */ -goog.defineClass.SEAL_CLASS_INSTANCES = - goog.define('goog.defineClass.SEAL_CLASS_INSTANCES', goog.DEBUG); - - -/** - * If goog.defineClass.SEAL_CLASS_INSTANCES is enabled and Object.seal is - * defined, this function will wrap the constructor in a function that seals the - * results of the provided constructor function. - * - * @param {!Function} ctr The constructor whose results maybe be sealed. - * @param {Function} superClass The superclass constructor. - * @return {!Function} The replacement constructor. - * @private - */ -goog.defineClass.createSealingConstructor_ = function(ctr, superClass) { - if (!goog.defineClass.SEAL_CLASS_INSTANCES) { - // Do now wrap the constructor when sealing is disabled. Angular code - // depends on this for injection to work properly. - return ctr; - } - - // NOTE: The sealing behavior has been removed - - /** - * @this {Object} - * @return {?} - */ - var wrappedCtr = function() { - // Don't seal an instance of a subclass when it calls the constructor of - // its super class as there is most likely still setup to do. - var instance = ctr.apply(this, arguments) || this; - instance[goog.UID_PROPERTY_] = instance[goog.UID_PROPERTY_]; - - return instance; - }; - - return wrappedCtr; -}; - - - -// TODO(johnlenz): share these values with the goog.object -/** - * The names of the fields that are defined on Object.prototype. - * @type {!Array} - * @private - * @const - */ -goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = [ - 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', - 'toLocaleString', 'toString', 'valueOf' -]; - - -// TODO(johnlenz): share this function with the goog.object -/** - * @param {!Object} target The object to add properties to. - * @param {!Object} source The object to copy properties from. - * @private - */ -goog.defineClass.applyProperties_ = function(target, source) { - // TODO(johnlenz): update this to support ES5 getters/setters - - var key; - for (key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - - // For IE the for-in-loop does not contain any properties that are not - // enumerable on the prototype object (for example isPrototypeOf from - // Object.prototype) and it will also not include 'replace' on objects that - // extend String and change 'replace' (not that it is common for anyone to - // extend anything except Object). - for (var i = 0; i < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; i++) { - key = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[i]; - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } -}; - -/** - * Returns the parameter. - * @param {string} s - * @return {string} - * @private - */ -goog.identity_ = function(s) { - return s; -}; - - -/** - * Creates Trusted Types policy if Trusted Types are supported by the browser. - * The policy just blesses any string as a Trusted Type. It is not visibility - * restricted because anyone can also call trustedTypes.createPolicy directly. - * However, the allowed names should be restricted by a HTTP header and the - * reference to the created policy should be visibility restricted. - * @param {string} name - * @return {?TrustedTypePolicy} - */ -goog.createTrustedTypesPolicy = function(name) { - var policy = null; - var policyFactory = goog.global.trustedTypes; - if (!policyFactory || !policyFactory.createPolicy) { - return policy; - } - // trustedTypes.createPolicy throws if called with a name that is already - // registered, even in report-only mode. Until the API changes, catch the - // error not to break the applications functionally. In such case, the code - // will fall back to using regular Safe Types. - // TODO(koto): Remove catching once createPolicy API stops throwing. - try { - policy = policyFactory.createPolicy(name, { - createHTML: goog.identity_, - createScript: goog.identity_, - createScriptURL: goog.identity_ - }); - } catch (e) { - goog.logToConsole_(e.message); - } - return policy; -}; - -// There's a bug in the compiler where without collapse properties the -// Closure namespace defines do not guard code correctly. To help reduce code -// size also check for !COMPILED even though it redundant until this is fixed. -if (!COMPILED && goog.DEPENDENCIES_ENABLED) { - - - /** - * Tries to detect whether the current browser is Edge, based on the user - * agent. This matches only pre-Chromium Edge. - * @see https://docs.microsoft.com/en-us/microsoft-edge/web-platform/user-agent-string - * @return {boolean} True if the current browser is Edge. - * @private - */ - goog.isEdge_ = function() { - var userAgent = goog.global.navigator && goog.global.navigator.userAgent ? - goog.global.navigator.userAgent : - ''; - var edgeRe = /Edge\/(\d+)(\.\d)*/i; - return !!userAgent.match(edgeRe); - }; - - - /** - * Tries to detect whether is in the context of an HTML document. - * @return {boolean} True if it looks like HTML document. - * @private - */ - goog.inHtmlDocument_ = function() { - /** @type {!Document} */ - var doc = goog.global.document; - return doc != null && 'write' in doc; // XULDocument misses write. - }; - - - /** - * We'd like to check for if the document readyState is 'loading'; however - * there are bugs on IE 10 and below where the readyState being anything other - * than 'complete' is not reliable. - * @return {boolean} - * @private - */ - goog.isDocumentLoading_ = function() { - // attachEvent is available on IE 6 thru 10 only, and thus can be used to - // detect those browsers. - /** @type {!HTMLDocument} */ - var doc = goog.global.document; - return doc.attachEvent ? doc.readyState != 'complete' : - doc.readyState == 'loading'; - }; - - - /** - * Tries to detect the base path of base.js script that bootstraps Closure. - * @private - */ - goog.findBasePath_ = function() { - if (goog.global.CLOSURE_BASE_PATH != undefined && - // Anti DOM-clobbering runtime check (b/37736576). - typeof goog.global.CLOSURE_BASE_PATH === 'string') { - goog.basePath = goog.global.CLOSURE_BASE_PATH; - return; - } else if (!goog.inHtmlDocument_()) { - return; - } - /** @type {!Document} */ - var doc = goog.global.document; - // If we have a currentScript available, use it exclusively. - var currentScript = doc.currentScript; - if (currentScript) { - var scripts = [currentScript]; - } else { - var scripts = doc.getElementsByTagName('SCRIPT'); - } - // Search backwards since the current script is in almost all cases the one - // that has base.js. - for (var i = scripts.length - 1; i >= 0; --i) { - var script = /** @type {!HTMLScriptElement} */ (scripts[i]); - var src = script.src; - var qmark = src.lastIndexOf('?'); - var l = qmark == -1 ? src.length : qmark; - if (src.substr(l - 7, 7) == 'base.js') { - goog.basePath = src.substr(0, l - 7); - return; - } - } - }; - - goog.findBasePath_(); - - /** @struct @constructor @final */ - goog.Transpiler = function() { - /** @private {?Object} */ - this.requiresTranspilation_ = null; - /** @private {string} */ - this.transpilationTarget_ = goog.TRANSPILE_TO_LANGUAGE; - }; - /** - * Returns a newly created map from language mode string to a boolean - * indicating whether transpilation should be done for that mode as well as - * the highest level language that this environment supports. - * - * Guaranteed invariant: - * For any two modes, l1 and l2 where l2 is a newer mode than l1, - * `map[l1] == true` implies that `map[l2] == true`. - * - * Note this method is extracted and used elsewhere, so it cannot rely on - * anything external (it should easily be able to be transformed into a - * standalone, top level function). - * - * @private - * @return {{ - * target: string, - * map: !Object - * }} - */ - goog.Transpiler.prototype.createRequiresTranspilation_ = function() { - var transpilationTarget = 'es3'; - var /** !Object */ requiresTranspilation = {'es3': false}; - var transpilationRequiredForAllLaterModes = false; - - /** - * Adds an entry to requiresTranspliation for the given language mode. - * - * IMPORTANT: Calls must be made in order from oldest to newest language - * mode. - * @param {string} modeName - * @param {function(): boolean} isSupported Returns true if the JS engine - * supports the given mode. - */ - function addNewerLanguageTranspilationCheck(modeName, isSupported) { - if (transpilationRequiredForAllLaterModes) { - requiresTranspilation[modeName] = true; - } else if (isSupported()) { - transpilationTarget = modeName; - requiresTranspilation[modeName] = false; - } else { - requiresTranspilation[modeName] = true; - transpilationRequiredForAllLaterModes = true; - } - } - - /** - * Does the given code evaluate without syntax errors and return a truthy - * result? - */ - function /** boolean */ evalCheck(/** string */ code) { - try { - return !!eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(code)); - } catch (ignored) { - return false; - } - } - - // Identify ES3-only browsers by their incorrect treatment of commas. - addNewerLanguageTranspilationCheck('es5', function() { - return evalCheck('[1,].length==1'); - }); - addNewerLanguageTranspilationCheck('es6', function() { - // Edge has a non-deterministic (i.e., not reproducible) bug with ES6: - // https://github.com/Microsoft/ChakraCore/issues/1496. - if (goog.isEdge_()) { - // The Reflect.construct test below is flaky on Edge. It can sometimes - // pass or fail on 40 15.15063, so just exit early for Edge and treat - // it as ES5. Until we're on a more up to date version just always use - // ES5. See https://github.com/Microsoft/ChakraCore/issues/3217. - return false; - } - // Test es6: [FF50 (?), Edge 14 (?), Chrome 50] - // (a) default params (specifically shadowing locals), - // (b) destructuring, (c) block-scoped functions, - // (d) for-of (const), (e) new.target/Reflect.construct - var es6fullTest = - 'class X{constructor(){if(new.target!=String)throw 1;this.x=42}}' + - 'let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof ' + - 'String))throw 1;for(const a of[2,3]){if(a==2)continue;function ' + - 'f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()' + - '==3}'; - - return evalCheck('(()=>{"use strict";' + es6fullTest + '})()'); - }); - // ** and **= are the only new features in 'es7' - addNewerLanguageTranspilationCheck('es7', function() { - return evalCheck('2**3==8'); - }); - // async functions are the only new features in 'es8' - addNewerLanguageTranspilationCheck('es8', function() { - return evalCheck('async()=>1,1'); - }); - addNewerLanguageTranspilationCheck('es9', function() { - return evalCheck('({...rest}={}),1'); - }); - // optional catch binding, unescaped unicode paragraph separator in strings - addNewerLanguageTranspilationCheck('es_2019', function() { - return evalCheck('let r;try{r="\u2029"}catch{};r'); - }); - // optional chaining, nullish coalescing - // untested/unsupported: bigint, import meta - addNewerLanguageTranspilationCheck('es_2020', function() { - return evalCheck('null?.x??1'); - }); - addNewerLanguageTranspilationCheck('es_next', function() { - return false; // assume it always need to transpile - }); - return {target: transpilationTarget, map: requiresTranspilation}; - }; - - - /** - * Determines whether the given language needs to be transpiled. - * @param {string} lang - * @param {string|undefined} module - * @return {boolean} - */ - goog.Transpiler.prototype.needsTranspile = function(lang, module) { - if (goog.TRANSPILE == 'always') { - return true; - } else if (goog.TRANSPILE == 'never') { - return false; - } else if (!this.requiresTranspilation_) { - var obj = this.createRequiresTranspilation_(); - this.requiresTranspilation_ = obj.map; - this.transpilationTarget_ = this.transpilationTarget_ || obj.target; - } - if (lang in this.requiresTranspilation_) { - if (this.requiresTranspilation_[lang]) { - return true; - } else if ( - goog.inHtmlDocument_() && module == 'es6' && - !('noModule' in goog.global.document.createElement('script'))) { - return true; - } else { - return false; - } - } else { - throw new Error('Unknown language mode: ' + lang); - } - }; - - - /** - * Lazily retrieves the transpiler and applies it to the source. - * @param {string} code JS code. - * @param {string} path Path to the code. - * @return {string} The transpiled code. - */ - goog.Transpiler.prototype.transpile = function(code, path) { - // TODO(johnplaisted): We should delete goog.transpile_ and just have this - // function. But there's some compile error atm where goog.global is being - // stripped incorrectly without this. - return goog.transpile_(code, path, this.transpilationTarget_); - }; - - - /** @private @final {!goog.Transpiler} */ - goog.transpiler_ = new goog.Transpiler(); - - /** - * Rewrites closing script tags in input to avoid ending an enclosing script - * tag. - * - * @param {string} str - * @return {string} - * @private - */ - goog.protectScriptTag_ = function(str) { - return str.replace(/<\/(SCRIPT)/ig, '\\x3c/$1'); - }; - - - /** - * A debug loader is responsible for downloading and executing javascript - * files in an unbundled, uncompiled environment. - * - * This can be custimized via the setDependencyFactory method, or by - * CLOSURE_IMPORT_SCRIPT/CLOSURE_LOAD_FILE_SYNC. - * - * @struct @constructor @final @private - */ - goog.DebugLoader_ = function() { - /** @private @const {!Object} */ - this.dependencies_ = {}; - /** @private @const {!Object} */ - this.idToPath_ = {}; - /** @private @const {!Object} */ - this.written_ = {}; - /** @private @const {!Array} */ - this.loadingDeps_ = []; - /** @private {!Array} */ - this.depsToLoad_ = []; - /** @private {boolean} */ - this.paused_ = false; - /** @private {!goog.DependencyFactory} */ - this.factory_ = new goog.DependencyFactory(goog.transpiler_); - /** @private @const {!Object} */ - this.deferredCallbacks_ = {}; - /** @private @const {!Array} */ - this.deferredQueue_ = []; - }; - - /** - * @param {!Array} namespaces - * @param {function(): undefined} callback Function to call once all the - * namespaces have loaded. - */ - goog.DebugLoader_.prototype.bootstrap = function(namespaces, callback) { - var cb = callback; - function resolve() { - if (cb) { - goog.global.setTimeout(cb, 0); - cb = null; - } - } - - if (!namespaces.length) { - resolve(); - return; - } - - var deps = []; - for (var i = 0; i < namespaces.length; i++) { - var path = this.getPathFromDeps_(namespaces[i]); - if (!path) { - throw new Error('Unregonized namespace: ' + namespaces[i]); - } - deps.push(this.dependencies_[path]); - } - - var require = goog.require; - var loaded = 0; - for (var i = 0; i < namespaces.length; i++) { - require(namespaces[i]); - deps[i].onLoad(function() { - if (++loaded == namespaces.length) { - resolve(); - } - }); - } - }; - - - /** - * Loads the Closure Dependency file. - * - * Exposed a public function so CLOSURE_NO_DEPS can be set to false, base - * loaded, setDependencyFactory called, and then this called. i.e. allows - * custom loading of the deps file. - */ - goog.DebugLoader_.prototype.loadClosureDeps = function() { - // Circumvent addDependency, which would try to transpile deps.js if - // transpile is set to always. - var relPath = 'deps.js'; - this.depsToLoad_.push(this.factory_.createDependency( - goog.normalizePath_(goog.basePath + relPath), relPath, [], [], {}, - false)); - this.loadDeps_(); - }; - - - /** - * Notifies the debug loader when a dependency has been requested. - * - * @param {string} absPathOrId Path of the dependency or goog id. - * @param {boolean=} opt_force - */ - goog.DebugLoader_.prototype.requested = function(absPathOrId, opt_force) { - var path = this.getPathFromDeps_(absPathOrId); - if (path && - (opt_force || this.areDepsLoaded_(this.dependencies_[path].requires))) { - var callback = this.deferredCallbacks_[path]; - if (callback) { - delete this.deferredCallbacks_[path]; - callback(); - } - } - }; - - - /** - * Sets the dependency factory, which can be used to create custom - * goog.Dependency implementations to control how dependencies are loaded. - * - * @param {!goog.DependencyFactory} factory - */ - goog.DebugLoader_.prototype.setDependencyFactory = function(factory) { - this.factory_ = factory; - }; - - - /** - * Travserses the dependency graph and queues the given dependency, and all of - * its transitive dependencies, for loading and then starts loading if not - * paused. - * - * @param {string} namespace - * @private - */ - goog.DebugLoader_.prototype.load_ = function(namespace) { - if (!this.getPathFromDeps_(namespace)) { - var errorMessage = 'goog.require could not find: ' + namespace; - goog.logToConsole_(errorMessage); - } else { - var loader = this; - - var deps = []; - - /** @param {string} namespace */ - var visit = function(namespace) { - var path = loader.getPathFromDeps_(namespace); - - if (!path) { - throw new Error('Bad dependency path or symbol: ' + namespace); - } - - if (loader.written_[path]) { - return; - } - - loader.written_[path] = true; - - var dep = loader.dependencies_[path]; - for (var i = 0; i < dep.requires.length; i++) { - if (!goog.isProvided_(dep.requires[i])) { - visit(dep.requires[i]); - } - } - - deps.push(dep); - }; - - visit(namespace); - - var wasLoading = !!this.depsToLoad_.length; - this.depsToLoad_ = this.depsToLoad_.concat(deps); - - if (!this.paused_ && !wasLoading) { - this.loadDeps_(); - } - } - }; - - - /** - * Loads any queued dependencies until they are all loaded or paused. - * - * @private - */ - goog.DebugLoader_.prototype.loadDeps_ = function() { - var loader = this; - var paused = this.paused_; - - while (this.depsToLoad_.length && !paused) { - (function() { - var loadCallDone = false; - var dep = loader.depsToLoad_.shift(); - - var loaded = false; - loader.loading_(dep); - - var controller = { - pause: function() { - if (loadCallDone) { - throw new Error('Cannot call pause after the call to load.'); - } else { - paused = true; - } - }, - resume: function() { - if (loadCallDone) { - loader.resume_(); - } else { - // Some dep called pause and then resume in the same load call. - // Just keep running this same loop. - paused = false; - } - }, - loaded: function() { - if (loaded) { - throw new Error('Double call to loaded.'); - } - - loaded = true; - loader.loaded_(dep); - }, - pending: function() { - // Defensive copy. - var pending = []; - for (var i = 0; i < loader.loadingDeps_.length; i++) { - pending.push(loader.loadingDeps_[i]); - } - return pending; - }, - /** - * @param {goog.ModuleType} type - */ - setModuleState: function(type) { - goog.moduleLoaderState_ = { - type: type, - moduleName: '', - declareLegacyNamespace: false - }; - }, - /** @type {function(string, string, string=)} */ - registerEs6ModuleExports: function( - path, exports, opt_closureNamespace) { - if (opt_closureNamespace) { - goog.loadedModules_[opt_closureNamespace] = { - exports: exports, - type: goog.ModuleType.ES6, - moduleId: opt_closureNamespace || '' - }; - } - }, - /** @type {function(string, ?)} */ - registerGoogModuleExports: function(moduleId, exports) { - goog.loadedModules_[moduleId] = { - exports: exports, - type: goog.ModuleType.GOOG, - moduleId: moduleId - }; - }, - clearModuleState: function() { - goog.moduleLoaderState_ = null; - }, - defer: function(callback) { - if (loadCallDone) { - throw new Error( - 'Cannot register with defer after the call to load.'); - } - loader.defer_(dep, callback); - }, - areDepsLoaded: function() { - return loader.areDepsLoaded_(dep.requires); - } - }; - - try { - dep.load(controller); - } finally { - loadCallDone = true; - } - })(); - } - - if (paused) { - this.pause_(); - } - }; - - - /** @private */ - goog.DebugLoader_.prototype.pause_ = function() { - this.paused_ = true; - }; - - - /** @private */ - goog.DebugLoader_.prototype.resume_ = function() { - if (this.paused_) { - this.paused_ = false; - this.loadDeps_(); - } - }; - - - /** - * Marks the given dependency as loading (load has been called but it has not - * yet marked itself as finished). Useful for dependencies that want to know - * what else is loading. Example: goog.modules cannot eval if there are - * loading dependencies. - * - * @param {!goog.Dependency} dep - * @private - */ - goog.DebugLoader_.prototype.loading_ = function(dep) { - this.loadingDeps_.push(dep); - }; - - - /** - * Marks the given dependency as having finished loading and being available - * for require. - * - * @param {!goog.Dependency} dep - * @private - */ - goog.DebugLoader_.prototype.loaded_ = function(dep) { - for (var i = 0; i < this.loadingDeps_.length; i++) { - if (this.loadingDeps_[i] == dep) { - this.loadingDeps_.splice(i, 1); - break; - } - } - - for (var i = 0; i < this.deferredQueue_.length; i++) { - if (this.deferredQueue_[i] == dep.path) { - this.deferredQueue_.splice(i, 1); - break; - } - } - - if (this.loadingDeps_.length == this.deferredQueue_.length && - !this.depsToLoad_.length) { - // Something has asked to load these, but they may not be directly - // required again later, so load them now that we know we're done loading - // everything else. e.g. a goog module entry point. - while (this.deferredQueue_.length) { - this.requested(this.deferredQueue_.shift(), true); - } - } - - dep.loaded(); - }; - - - /** - * @param {!Array} pathsOrIds - * @return {boolean} - * @private - */ - goog.DebugLoader_.prototype.areDepsLoaded_ = function(pathsOrIds) { - for (var i = 0; i < pathsOrIds.length; i++) { - var path = this.getPathFromDeps_(pathsOrIds[i]); - if (!path || - (!(path in this.deferredCallbacks_) && - !goog.isProvided_(pathsOrIds[i]))) { - return false; - } - } - - return true; - }; - - - /** - * @param {string} absPathOrId - * @return {?string} - * @private - */ - goog.DebugLoader_.prototype.getPathFromDeps_ = function(absPathOrId) { - if (absPathOrId in this.idToPath_) { - return this.idToPath_[absPathOrId]; - } else if (absPathOrId in this.dependencies_) { - return absPathOrId; - } else { - return null; - } - }; - - - /** - * @param {!goog.Dependency} dependency - * @param {!Function} callback - * @private - */ - goog.DebugLoader_.prototype.defer_ = function(dependency, callback) { - this.deferredCallbacks_[dependency.path] = callback; - this.deferredQueue_.push(dependency.path); - }; - - - /** - * Interface for goog.Dependency implementations to have some control over - * loading of dependencies. - * - * @record - */ - goog.LoadController = function() {}; - - - /** - * Tells the controller to halt loading of more dependencies. - */ - goog.LoadController.prototype.pause = function() {}; - - - /** - * Tells the controller to resume loading of more dependencies if paused. - */ - goog.LoadController.prototype.resume = function() {}; - - - /** - * Tells the controller that this dependency has finished loading. - * - * This causes this to be removed from pending() and any load callbacks to - * fire. - */ - goog.LoadController.prototype.loaded = function() {}; - - - /** - * List of dependencies on which load has been called but which have not - * called loaded on their controller. This includes the current dependency. - * - * @return {!Array} - */ - goog.LoadController.prototype.pending = function() {}; - - - /** - * Registers an object as an ES6 module's exports so that goog.modules may - * require it by path. - * - * @param {string} path Full path of the module. - * @param {?} exports - * @param {string=} opt_closureNamespace Closure namespace to associate with - * this module. - */ - goog.LoadController.prototype.registerEs6ModuleExports = function( - path, exports, opt_closureNamespace) {}; - - - /** - * Sets the current module state. - * - * @param {goog.ModuleType} type Type of module. - */ - goog.LoadController.prototype.setModuleState = function(type) {}; - - - /** - * Clears the current module state. - */ - goog.LoadController.prototype.clearModuleState = function() {}; - - - /** - * Registers a callback to call once the dependency is actually requested - * via goog.require + all of the immediate dependencies have been loaded or - * all other files have been loaded. Allows for lazy loading until - * require'd without pausing dependency loading, which is needed on old IE. - * - * @param {!Function} callback - */ - goog.LoadController.prototype.defer = function(callback) {}; - - - /** - * @return {boolean} - */ - goog.LoadController.prototype.areDepsLoaded = function() {}; - - - /** - * Basic super class for all dependencies Closure Library can load. - * - * This default implementation is designed to load untranspiled, non-module - * scripts in a web broswer. - * - * For transpiled non-goog.module files {@see goog.TranspiledDependency}. - * For goog.modules see {@see goog.GoogModuleDependency}. - * For untranspiled ES6 modules {@see goog.Es6ModuleDependency}. - * - * @param {string} path Absolute path of this script. - * @param {string} relativePath Path of this script relative to goog.basePath. - * @param {!Array} provides goog.provided or goog.module symbols - * in this file. - * @param {!Array} requires goog symbols or relative paths to Closure - * this depends on. - * @param {!Object} loadFlags - * @struct @constructor - */ - goog.Dependency = function( - path, relativePath, provides, requires, loadFlags) { - /** @const */ - this.path = path; - /** @const */ - this.relativePath = relativePath; - /** @const */ - this.provides = provides; - /** @const */ - this.requires = requires; - /** @const */ - this.loadFlags = loadFlags; - /** @private {boolean} */ - this.loaded_ = false; - /** @private {!Array} */ - this.loadCallbacks_ = []; - }; - - - /** - * @return {string} The pathname part of this dependency's path if it is a - * URI. - */ - goog.Dependency.prototype.getPathName = function() { - var pathName = this.path; - var protocolIndex = pathName.indexOf('://'); - if (protocolIndex >= 0) { - pathName = pathName.substring(protocolIndex + 3); - var slashIndex = pathName.indexOf('/'); - if (slashIndex >= 0) { - pathName = pathName.substring(slashIndex + 1); - } - } - return pathName; - }; - - - /** - * @param {function()} callback Callback to fire as soon as this has loaded. - * @final - */ - goog.Dependency.prototype.onLoad = function(callback) { - if (this.loaded_) { - callback(); - } else { - this.loadCallbacks_.push(callback); - } - }; - - - /** - * Marks this dependency as loaded and fires any callbacks registered with - * onLoad. - * @final - */ - goog.Dependency.prototype.loaded = function() { - this.loaded_ = true; - var callbacks = this.loadCallbacks_; - this.loadCallbacks_ = []; - for (var i = 0; i < callbacks.length; i++) { - callbacks[i](); - } - }; - - - /** - * Whether or not document.written / appended script tags should be deferred. - * - * @private {boolean} - */ - goog.Dependency.defer_ = false; - - - /** - * Map of script ready / state change callbacks. Old IE cannot handle putting - * these properties on goog.global. - * - * @private @const {!Object} - */ - goog.Dependency.callbackMap_ = {}; - - - /** - * @param {function(...?):?} callback - * @return {string} - * @private - */ - goog.Dependency.registerCallback_ = function(callback) { - var key = Math.random().toString(32); - goog.Dependency.callbackMap_[key] = callback; - return key; - }; - - - /** - * @param {string} key - * @private - */ - goog.Dependency.unregisterCallback_ = function(key) { - delete goog.Dependency.callbackMap_[key]; - }; - - - /** - * @param {string} key - * @param {...?} var_args - * @private - * @suppress {unusedPrivateMembers} - */ - goog.Dependency.callback_ = function(key, var_args) { - if (key in goog.Dependency.callbackMap_) { - var callback = goog.Dependency.callbackMap_[key]; - var args = []; - for (var i = 1; i < arguments.length; i++) { - args.push(arguments[i]); - } - callback.apply(undefined, args); - } else { - var errorMessage = 'Callback key ' + key + - ' does not exist (was base.js loaded more than once?).'; - throw Error(errorMessage); - } - }; - - - /** - * Starts loading this dependency. This dependency can pause loading if it - * needs to and resume it later via the controller interface. - * - * When this is loaded it should call controller.loaded(). Note that this will - * end up calling the loaded method of this dependency; there is no need to - * call it explicitly. - * - * @param {!goog.LoadController} controller - */ - goog.Dependency.prototype.load = function(controller) { - if (goog.global.CLOSURE_IMPORT_SCRIPT) { - if (goog.global.CLOSURE_IMPORT_SCRIPT(this.path)) { - controller.loaded(); - } else { - controller.pause(); - } - return; - } - - if (!goog.inHtmlDocument_()) { - goog.logToConsole_( - 'Cannot use default debug loader outside of HTML documents.'); - if (this.relativePath == 'deps.js') { - // Some old code is relying on base.js auto loading deps.js failing with - // no error before later setting CLOSURE_IMPORT_SCRIPT. - // CLOSURE_IMPORT_SCRIPT should be set *before* base.js is loaded, or - // CLOSURE_NO_DEPS set to true. - goog.logToConsole_( - 'Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, ' + - 'or setting CLOSURE_NO_DEPS to true.'); - controller.loaded(); - } else { - controller.pause(); - } - return; - } - - /** @type {!HTMLDocument} */ - var doc = goog.global.document; - - // If the user tries to require a new symbol after document load, - // something has gone terribly wrong. Doing a document.write would - // wipe out the page. This does not apply to the CSP-compliant method - // of writing script tags. - if (doc.readyState == 'complete' && - !goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING) { - // Certain test frameworks load base.js multiple times, which tries - // to write deps.js each time. If that happens, just fail silently. - // These frameworks wipe the page between each load of base.js, so this - // is OK. - var isDeps = /\bdeps.js$/.test(this.path); - if (isDeps) { - controller.loaded(); - return; - } else { - throw Error('Cannot write "' + this.path + '" after document load'); - } - } - - var nonce = goog.getScriptNonce_(); - if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING && - goog.isDocumentLoading_()) { - var key; - var callback = function(script) { - if (script.readyState && script.readyState != 'complete') { - script.onload = callback; - return; - } - goog.Dependency.unregisterCallback_(key); - controller.loaded(); - }; - key = goog.Dependency.registerCallback_(callback); - - var defer = goog.Dependency.defer_ ? ' defer' : ''; - var nonceAttr = nonce ? ' nonce="' + nonce + '"' : ''; - var script = ' -// -// Call with: -// -// - -var cp_grid = [ - ['ffffff', 'ffcccc', 'ffcc99', 'ffff99', 'ffffcc', '99ff99', '99ffff', 'ccffff', 'ccccff', 'ffccff'], - ['cccccc', 'ff6666', 'ff9966', 'ffff66', 'ffff33', '66ff99', '33ffff', '66ffff', '9999ff', 'ff99ff'], - ['c0c0c0', 'ff0000', 'ff9900', 'ffcc66', 'ffff00', '33ff33', '66cccc', '33ccff', '6666cc', 'cc66cc'], - ['999999', 'cc0000', 'ff6600', 'ffcc33', 'ffcc00', '33cc00', '00cccc', '3366ff', '6633ff', 'cc33cc'], - ['666666', '990000', 'cc6600', 'cc9933', '999900', '009900', '339999', '3333ff', '6600cc', '993399'], - ['333333', '660000', '993300', '996633', '666600', '006600', '336666', '000099', '333399', '663366'], - ['000000', '330000', '663300', '663333', '333300', '003300', '003333', '000066', '330099', '330033'], - [''] -]; - -var cp_popupDom = null; -var cp_activeSwatch = null; -var cp_closePid = null; - -function cp_init(id) { - var input = document.getElementById(id); - if (!input) { - throw Error('Colour picker can\'t find "' + id + '"'); - } - if (!input.cp_swatch) { - // Hide the input. - input.type = 'hidden'; - // - var swatch = document.createElement('span'); - swatch.className = 'cp_swatch'; - swatch.addEventListener('click', cp_open); - swatch.addEventListener('mouseover', cp_cancelclose); - swatch.addEventListener('mouseout', cp_closesoon); - input.parentNode.insertBefore(swatch, input); - // Cross-link the swatch and input. - swatch.cp_input = input; - input.cp_swatch = swatch; - } - cp_updateSwatch(input.cp_swatch); -} - -function cp_updateSwatch(swatch) { - var colour = swatch.cp_input.value; - if (colour) { - swatch.style.backgroundColor = '#' + colour; - swatch.textContent = '\xa0'; - } else { - swatch.style.backgroundColor = '#fff'; - swatch.innerHTML = 'X'; - } -} - -function cp_open(e) { - // Create a table of colours. - if (cp_popupDom) { - cp_close(); - return; - } - cp_activeSwatch = e.currentTarget; - var currentColour = cp_activeSwatch.cp_input.value.toLowerCase(); - var element = cp_activeSwatch; - var posX = 0; - var posY = element.offsetHeight; - while (element) { - posX += element.offsetLeft; - posY += element.offsetTop; - element = element.offsetParent; - } - cp_popupDom = document.createElement('div'); - cp_popupDom.id = 'cp_popup'; - var table = document.createElement('table'); - table.addEventListener('mouseover', cp_cancelclose); - table.addEventListener('mouseout', cp_closesoon); - table.addEventListener('click', cp_onclick); - var tbody = document.createElement('tbody'); - var row, cell, div; - for (var y = 0; y < cp_grid.length; y++) { - row = document.createElement('tr'); - tbody.appendChild(row); - for (var x = 0; x < cp_grid[y].length; x++) { - var colour = cp_grid[y][x]; - if (colour === undefined) continue; - cell = document.createElement('td'); - row.appendChild(cell); - div = document.createElement('div'); - cell.appendChild(div); - cell.cp_colour = colour; - if (colour) { - div.style.backgroundColor = '#' + colour; - div.innerHTML = '\xa0'; - } else { - div.innerHTML = 'X'; - } - if (currentColour === colour.toLowerCase()) { - div.className = 'cp_current' - } - } - } - table.appendChild(tbody); - cp_popupDom.appendChild(table); - - document.body.appendChild(cp_popupDom); - // Don't widen the screen. - var rightOverhang = (posX + cp_popupDom.offsetWidth) - - (window.innerWidth + window.scrollX) + 15; // Scrollbar is 15px. - if (rightOverhang > 0) { - posX -= rightOverhang; - } - // Flip to above swatch if no room below. - if (posY + cp_popupDom.offsetHeight >= window.innerHeight + window.scrollY) { - posY -= cp_popupDom.offsetHeight + cp_activeSwatch.offsetHeight; - if (posY < window.scrollY) { - posY = window.scrollY; - } - } - cp_popupDom.style.left = posX + 'px'; - cp_popupDom.style.top = posY + 'px'; -} - -function cp_close() { - // Close the table now. - cp_cancelclose(); - if (cp_popupDom) { - document.body.removeChild(cp_popupDom) - } - cp_popupDom = null; - cp_activeSwatch = null; -} - -function cp_closesoon() { - // Close the table a split-second from now. - cp_closePid = setTimeout(cp_close, 250); -} - -function cp_cancelclose() { - // Don't close the colour table after all. - if (cp_closePid) { - clearTimeout(cp_closePid); - } -} - -function cp_onclick(e) { - // Clicked on a colour. - var element = e.target; - var colour; - // Walk up the DOM, looking for a colour. - while (element) { - colour = element.cp_colour; - if (colour !== undefined) { - break; - } - element = element.parentNode; - } - if (colour !== undefined) { - // Set the colour. - cp_activeSwatch.cp_input.value = colour; - cp_updateSwatch(cp_activeSwatch); - // Fire a change event. - var evt = document.createEvent('HTMLEvents'); - evt.initEvent('change', false, true); - cp_activeSwatch.cp_input.dispatchEvent(evt); - } - // Close the table. - cp_close(); -} +/** + * Colour Picker v2.0 + * + * Copyright 2006 Neil Fraser + * https://neil.fraser.name/software/colourpicker/ + * SPDX-License-Identifier: Apache-2.0 + */ + +// Include at the top of your page: +// +// +// Call with: +// +// + +var cp_grid = [ + ['ffffff', 'ffcccc', 'ffcc99', 'ffff99', 'ffffcc', '99ff99', '99ffff', 'ccffff', 'ccccff', 'ffccff'], + ['cccccc', 'ff6666', 'ff9966', 'ffff66', 'ffff33', '66ff99', '33ffff', '66ffff', '9999ff', 'ff99ff'], + ['c0c0c0', 'ff0000', 'ff9900', 'ffcc66', 'ffff00', '33ff33', '66cccc', '33ccff', '6666cc', 'cc66cc'], + ['999999', 'cc0000', 'ff6600', 'ffcc33', 'ffcc00', '33cc00', '00cccc', '3366ff', '6633ff', 'cc33cc'], + ['666666', '990000', 'cc6600', 'cc9933', '999900', '009900', '339999', '3333ff', '6600cc', '993399'], + ['333333', '660000', '993300', '996633', '666600', '006600', '336666', '000099', '333399', '663366'], + ['000000', '330000', '663300', '663333', '333300', '003300', '003333', '000066', '330099', '330033'], + [''] +]; + +var cp_popupDom = null; +var cp_activeSwatch = null; +var cp_closePid = null; + +function cp_init(id) { + var input = document.getElementById(id); + if (!input) { + throw Error('Colour picker can\'t find "' + id + '"'); + } + if (!input.cp_swatch) { + // Hide the input. + input.type = 'hidden'; + // + var swatch = document.createElement('span'); + swatch.className = 'cp_swatch'; + swatch.addEventListener('click', cp_open); + swatch.addEventListener('mouseover', cp_cancelclose); + swatch.addEventListener('mouseout', cp_closesoon); + input.parentNode.insertBefore(swatch, input); + // Cross-link the swatch and input. + swatch.cp_input = input; + input.cp_swatch = swatch; + } + cp_updateSwatch(input.cp_swatch); +} + +function cp_updateSwatch(swatch) { + var colour = swatch.cp_input.value; + if (colour) { + swatch.style.backgroundColor = '#' + colour; + swatch.textContent = '\xa0'; + } else { + swatch.style.backgroundColor = '#fff'; + swatch.innerHTML = 'X'; + } +} + +function cp_open(e) { + // Create a table of colours. + if (cp_popupDom) { + cp_close(); + return; + } + cp_activeSwatch = e.currentTarget; + var currentColour = cp_activeSwatch.cp_input.value.toLowerCase(); + var element = cp_activeSwatch; + var posX = 0; + var posY = element.offsetHeight; + while (element) { + posX += element.offsetLeft; + posY += element.offsetTop; + element = element.offsetParent; + } + cp_popupDom = document.createElement('div'); + cp_popupDom.id = 'cp_popup'; + var table = document.createElement('table'); + table.addEventListener('mouseover', cp_cancelclose); + table.addEventListener('mouseout', cp_closesoon); + table.addEventListener('click', cp_onclick); + var tbody = document.createElement('tbody'); + var row, cell, div; + for (var y = 0; y < cp_grid.length; y++) { + row = document.createElement('tr'); + tbody.appendChild(row); + for (var x = 0; x < cp_grid[y].length; x++) { + var colour = cp_grid[y][x]; + if (colour === undefined) continue; + cell = document.createElement('td'); + row.appendChild(cell); + div = document.createElement('div'); + cell.appendChild(div); + cell.cp_colour = colour; + if (colour) { + div.style.backgroundColor = '#' + colour; + div.innerHTML = '\xa0'; + } else { + div.innerHTML = 'X'; + } + if (currentColour === colour.toLowerCase()) { + div.className = 'cp_current' + } + } + } + table.appendChild(tbody); + cp_popupDom.appendChild(table); + + document.body.appendChild(cp_popupDom); + // Don't widen the screen. + var rightOverhang = (posX + cp_popupDom.offsetWidth) - + (window.innerWidth + window.scrollX) + 15; // Scrollbar is 15px. + if (rightOverhang > 0) { + posX -= rightOverhang; + } + // Flip to above swatch if no room below. + if (posY + cp_popupDom.offsetHeight >= window.innerHeight + window.scrollY) { + posY -= cp_popupDom.offsetHeight + cp_activeSwatch.offsetHeight; + if (posY < window.scrollY) { + posY = window.scrollY; + } + } + cp_popupDom.style.left = posX + 'px'; + cp_popupDom.style.top = posY + 'px'; +} + +function cp_close() { + // Close the table now. + cp_cancelclose(); + if (cp_popupDom) { + document.body.removeChild(cp_popupDom) + } + cp_popupDom = null; + cp_activeSwatch = null; +} + +function cp_closesoon() { + // Close the table a split-second from now. + cp_closePid = setTimeout(cp_close, 250); +} + +function cp_cancelclose() { + // Don't close the colour table after all. + if (cp_closePid) { + clearTimeout(cp_closePid); + } +} + +function cp_onclick(e) { + // Clicked on a colour. + var element = e.target; + var colour; + // Walk up the DOM, looking for a colour. + while (element) { + colour = element.cp_colour; + if (colour !== undefined) { + break; + } + element = element.parentNode; + } + if (colour !== undefined) { + // Set the colour. + cp_activeSwatch.cp_input.value = colour; + cp_updateSwatch(cp_activeSwatch); + // Fire a change event. + var evt = document.createEvent('HTMLEvents'); + evt.initEvent('change', false, true); + cp_activeSwatch.cp_input.dispatchEvent(evt); + } + // Close the table. + cp_close(); +} diff --git a/demos/blockfactory/factory.css b/demos/blockfactory/factory.css index 73a1c1e3ceb..a1128a4a75e 100644 --- a/demos/blockfactory/factory.css +++ b/demos/blockfactory/factory.css @@ -1,579 +1,579 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -html, body { - height: 100%; - min-height: 375px; -} - -body { - background-color: #fff; - font-family: sans-serif; - margin: 0 5px; - overflow: hidden; -} - -h1 { - font-weight: normal; - font-size: 140%; -} - -h3 { - margin-top: 5px; - margin-bottom: 0; -} - -table { - border: none; - border-collapse: collapse; - height: 100%; - margin: 0; - padding: 0; - width: 100%; -} - -td { - vertical-align: top; - padding: 0; -} - -p { - display: block; - -webkit-margin-before: 0; - -webkit-margin-after: 0; - -webkit-margin-start: 0; - -webkit-margin-end: 0; - padding: 5px 0; -} - -#factoryHeader { - display: table; - height: 10%; -} - -#blockly { - position: absolute; -} - -#blocklyMask { - background-color: #000; - cursor: not-allowed; - display: none; - position: fixed; - opacity: 0.2; - z-index: 9; -} - -#preview { - position: absolute; -} - -pre, -#languageTA { - border: #ddd 1px solid; - margin-top: 0; - position: absolute; - overflow: scroll; -} - -#languageTA { - display: none; - font: 10pt monospace; -} - -.downloadButton { - padding: 5px; -} - -.disabled { - color: #888; -} - -button:disabled, .buttonStyle:disabled { - opacity: 0.6; -} - -button>*, .buttonStyle>* { - opacity: 1; - vertical-align: text-bottom; -} - -button, .buttonStyle { - border-radius: 4px; - border: 1px solid #ddd; - background-color: #eee; - color: #000; - padding: 10px; - margin: 10px 5px; - font-size: small; -} - -.buttonStyle:hover:not(:disabled), button:hover:not(:disabled) { - box-shadow: 2px 2px 5px #888; -} - -.buttonStyle:hover:not(:disabled)>*, button:hover:not(:disabled)>* { - opacity: 1; -} - -#linkButton { - display: none; -} - -#helpButton { - float: right; -} - -#blockFactoryContent { - height: 85%; - width: 100%; - overflow: hidden; -} - -#blockFactoryPreview { - height: 100%; - width: 100%; -} - -#blockLibraryContainer { - vertical-align: bottom; -} - -#blockLibraryControls { - text-align: right; - vertical-align: middle; -} - -#previewContainer { - vertical-align: bottom; -} - -#buttonContainer { - text-align: right; - vertical-align: middle; -} - -#files { - position: absolute; - visibility: hidden; -} - -.toolbox { - display: none; -} - -#blocklyWorkspaceContainer { - width: 50%; -} - -#workspaceFactoryContent { - clear: both; - display: none; - height: 90%; - overflow-x: hidden; - overflow-y: scroll; -} - -/* Exporter */ - -#blockLibraryExporter { - clear: both; - display: none; - height: 90%; - overflow-x: hidden; - overflow-y: scroll; -} - -#exportSelector { - display: inline-block; - float: left; - height: 70%; - width: 30%; -} - -#exportSettings { - float: left; - overflow: hidden; - padding-left: 16px; - width: 20%; -} - -#selectedBlocksTextContainer { - max-height: 200px; - overflow-y: scroll; - padding-bottom: 2em; -} - -::-webkit-scrollbar { - -webkit-appearance: none; - width: 7px; -} - -::-webkit-scrollbar-thumb { - border-radius: 4px; - background-color: #ccc; - -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5); -} - -.subsettings { - margin: 0 25px; -} - -#exporterHiddenWorkspace { - display: none; -} - -#exportPreview { - float: right; - height: 90%; - overflow: hidden; - width: 45%; -} - -.exportPreviewTextArea { - display: block; - float: right; - height: 40%; - width: 100%; -} - -#genStubs_textArea, #blockDefs_textArea { - display: block; - height: 80%; - margin-right: 20px; - max-height: 300px; - overflow: scroll; - position: static; -} - -#blockDefs_label, #genStubs_label { - display: block; -} - -#blockSelector { - background-color: #eee; - border: 1px solid lightgrey; - width: 80%; - height: 90%; - overflow-y: scroll; - position: relative; -} - -/* Exporter Block Option */ - -.blockOption { - background-color: #eee; - padding: 0px 20px; - width: 95%; -} - -.blockOption_check_label { - position: relative; -} - -.blockOption_check { - float: left; - display:inline; - padding: 4px; -} - -.blockOption_label { - display:inline; - max-width: inherit; - word-wrap: break-word; -} - -.blockOption_preview { - height: 100px; - padding-top: 10px; - width: 90%; -} - -/* Block Library */ - -#dropdownDiv_blockLib { - max-height: 65%; - overflow-y: scroll; -} - -#button_blockLib { - border-color: darkgrey; - font-size: large; -} - -.button_alert { - background-color: #fcc; - border-color: #f99; -} - -.button_warn { - background-color: #aea; - border-color: #5d5; -} - -/* Tabs */ - -.tab { - float: left; - padding: 5px 19px; -} - -.tab:hover:not(.tabon) { - background-color: #e8e8e8; -} - -.tab.tabon { - background-color: #ccc; -} - -.tab.taboff { - cursor: pointer; -} - -#tabContainer { - background-color: #f8f8f8; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - display: table; - width: 100%; -} - -/* Workspace Factory */ - -section { - float: left; -} - -aside { - float: right; -} - -#categoryTable>table { - border: 1px solid #ccc; - border-bottom: none; - width: auto; -} - -td.tabon { - background-color: #ccc; - border-bottom-color: #ccc; - padding: 5px 19px; -} - -td.taboff { - cursor: pointer; - padding: 5px 19px; -} - -td.taboff:hover { - background-color: #eee; -} - -.large { - font-size: large; -} - -.inputfile { - height: 0; - opacity: 0; - overflow: hidden; - position: absolute; - width: 0; - z-index: -1; -} -#wfactoryHeader { - height: 29%; - padding: 0.5%; -} - -#workspaceTabs { - background-color: #f8f8f8; - border: 1px solid #ccc; - display: table; - width: auto; -} - -#toolbox_section { - height: 85%; - width: 60%; -} - -#previewHelp { - padding: 10px; - width: 98%; -} - -#toolbox_blocks { - height: 100%; - width: 100%; -} - -#preview_blocks { - height: 80%; - padding: 10px; - width: 100%; -} - -#createDiv { - height: 79%; - padding: 0.5%; - width: 60%; -} - -#previewDiv { - border: 10px solid #eee; - height: 77%; - margin-right: 0.5%; - padding-bottom: 10px; - width: 35%; -} - -#previewBorder { - border: 5px solid #ddd; - height: 100%; - padding-right: 20px; -} - -.disabled { - background-color: white; - opacity: 0.5; -} - -#toolbox_div { - display: table; - height: auto; - margin-right: 5%; - overflow: hidden; - width: 35%; -} - -#preload_div { - display: table; - height: 75%; - margin-left: 2%; - margin-right: 2%; - max-height: 500px; - overflow: hidden; - overflow-y: scroll; - width: 30%; -} - -#shadowBlockDropdown { - height: 15%; -} - -#preloadHelp { - display: table-row; - height: 30%; -} - -#workspace_options { - display: table-row; - margin-top: 2%; -} - -#disable_div { - background-color: white; - height: 100%; - left: 0; - opacity: .5; - position: absolute; - top: 0; - width: 100%; - z-index: -1; /* Start behind workspace */ -} - -#grid_options, #zoom_options, #maxBlockNumber_option { - padding-left: 15px; -} - -#modalShadow { - display: none; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: rgba(0, 0, 0, 0.1); - z-index: 100; -} - -/* The container
- needed to position the dropdown content */ -.dropdown { - display: inline-block; -} - -/* Dropdown Content (Hidden by Default) */ -.dropdown-content { - background-color: #fff; - box-shadow: 0 8px 16px 0 rgba(0,0,0,.2); - display: none; - min-width: 170px; - opacity: 1; - position: absolute; - z-index: 101; /* On top of the modal Shadow. */ -} - -/* Links inside the dropdown */ -.dropdown-content a, .dropdown-content label { - color: black; - display: block; - font-size: small; - padding: 12px 16px; - text-decoration: none; -} - -/* Change colour of dropdown links on hover. */ -.dropdown-content a:hover, .dropdown-content label:hover { - background-color: #EEE; -} - -/* Change colour of dropdown links on selected. */ -.dropdown-content-selected { - background-color: #DDD; -} - -/* Show the dropdown menu */ -.show { - display: block; -} - -#dropdownDiv_editCategory { - padding: 0 1ex; -} - -#dropdownDiv_editCategory>img { - vertical-align: middle; -} - -.cp_swatch { - vertical-align: middle !important; -} - -#cp_popup { - z-index: 999; -} - -.shadowBlock>.blocklyPath { - fill-opacity: .5; - stroke-opacity: .5; -} - -.shadowBlock>.blocklyPathLight, -.shadowBlock>.blocklyPathDark { - display: none; -} - -/* Privacy link */ -.privacyLink { - font-family: Roboto, Arial, Helvetica, sans-serif; - font-size: small; - text-decoration: none; -} - -.privacyButton { - float: right; -} +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +html, body { + height: 100%; + min-height: 375px; +} + +body { + background-color: #fff; + font-family: sans-serif; + margin: 0 5px; + overflow: hidden; +} + +h1 { + font-weight: normal; + font-size: 140%; +} + +h3 { + margin-top: 5px; + margin-bottom: 0; +} + +table { + border: none; + border-collapse: collapse; + height: 100%; + margin: 0; + padding: 0; + width: 100%; +} + +td { + vertical-align: top; + padding: 0; +} + +p { + display: block; + -webkit-margin-before: 0; + -webkit-margin-after: 0; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + padding: 5px 0; +} + +#factoryHeader { + display: table; + height: 10%; +} + +#blockly { + position: absolute; +} + +#blocklyMask { + background-color: #000; + cursor: not-allowed; + display: none; + position: fixed; + opacity: 0.2; + z-index: 9; +} + +#preview { + position: absolute; +} + +pre, +#languageTA { + border: #ddd 1px solid; + margin-top: 0; + position: absolute; + overflow: scroll; +} + +#languageTA { + display: none; + font: 10pt monospace; +} + +.downloadButton { + padding: 5px; +} + +.disabled { + color: #888; +} + +button:disabled, .buttonStyle:disabled { + opacity: 0.6; +} + +button>*, .buttonStyle>* { + opacity: 1; + vertical-align: text-bottom; +} + +button, .buttonStyle { + border-radius: 4px; + border: 1px solid #ddd; + background-color: #eee; + color: #000; + padding: 10px; + margin: 10px 5px; + font-size: small; +} + +.buttonStyle:hover:not(:disabled), button:hover:not(:disabled) { + box-shadow: 2px 2px 5px #888; +} + +.buttonStyle:hover:not(:disabled)>*, button:hover:not(:disabled)>* { + opacity: 1; +} + +#linkButton { + display: none; +} + +#helpButton { + float: right; +} + +#blockFactoryContent { + height: 85%; + width: 100%; + overflow: hidden; +} + +#blockFactoryPreview { + height: 100%; + width: 100%; +} + +#blockLibraryContainer { + vertical-align: bottom; +} + +#blockLibraryControls { + text-align: right; + vertical-align: middle; +} + +#previewContainer { + vertical-align: bottom; +} + +#buttonContainer { + text-align: right; + vertical-align: middle; +} + +#files { + position: absolute; + visibility: hidden; +} + +.toolbox { + display: none; +} + +#blocklyWorkspaceContainer { + width: 50%; +} + +#workspaceFactoryContent { + clear: both; + display: none; + height: 90%; + overflow-x: hidden; + overflow-y: scroll; +} + +/* Exporter */ + +#blockLibraryExporter { + clear: both; + display: none; + height: 90%; + overflow-x: hidden; + overflow-y: scroll; +} + +#exportSelector { + display: inline-block; + float: left; + height: 70%; + width: 30%; +} + +#exportSettings { + float: left; + overflow: hidden; + padding-left: 16px; + width: 20%; +} + +#selectedBlocksTextContainer { + max-height: 200px; + overflow-y: scroll; + padding-bottom: 2em; +} + +::-webkit-scrollbar { + -webkit-appearance: none; + width: 7px; +} + +::-webkit-scrollbar-thumb { + border-radius: 4px; + background-color: #ccc; + -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5); +} + +.subsettings { + margin: 0 25px; +} + +#exporterHiddenWorkspace { + display: none; +} + +#exportPreview { + float: right; + height: 90%; + overflow: hidden; + width: 45%; +} + +.exportPreviewTextArea { + display: block; + float: right; + height: 40%; + width: 100%; +} + +#genStubs_textArea, #blockDefs_textArea { + display: block; + height: 80%; + margin-right: 20px; + max-height: 300px; + overflow: scroll; + position: static; +} + +#blockDefs_label, #genStubs_label { + display: block; +} + +#blockSelector { + background-color: #eee; + border: 1px solid lightgrey; + width: 80%; + height: 90%; + overflow-y: scroll; + position: relative; +} + +/* Exporter Block Option */ + +.blockOption { + background-color: #eee; + padding: 0px 20px; + width: 95%; +} + +.blockOption_check_label { + position: relative; +} + +.blockOption_check { + float: left; + display:inline; + padding: 4px; +} + +.blockOption_label { + display:inline; + max-width: inherit; + word-wrap: break-word; +} + +.blockOption_preview { + height: 100px; + padding-top: 10px; + width: 90%; +} + +/* Block Library */ + +#dropdownDiv_blockLib { + max-height: 65%; + overflow-y: scroll; +} + +#button_blockLib { + border-color: darkgrey; + font-size: large; +} + +.button_alert { + background-color: #fcc; + border-color: #f99; +} + +.button_warn { + background-color: #aea; + border-color: #5d5; +} + +/* Tabs */ + +.tab { + float: left; + padding: 5px 19px; +} + +.tab:hover:not(.tabon) { + background-color: #e8e8e8; +} + +.tab.tabon { + background-color: #ccc; +} + +.tab.taboff { + cursor: pointer; +} + +#tabContainer { + background-color: #f8f8f8; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + display: table; + width: 100%; +} + +/* Workspace Factory */ + +section { + float: left; +} + +aside { + float: right; +} + +#categoryTable>table { + border: 1px solid #ccc; + border-bottom: none; + width: auto; +} + +td.tabon { + background-color: #ccc; + border-bottom-color: #ccc; + padding: 5px 19px; +} + +td.taboff { + cursor: pointer; + padding: 5px 19px; +} + +td.taboff:hover { + background-color: #eee; +} + +.large { + font-size: large; +} + +.inputfile { + height: 0; + opacity: 0; + overflow: hidden; + position: absolute; + width: 0; + z-index: -1; +} +#wfactoryHeader { + height: 29%; + padding: 0.5%; +} + +#workspaceTabs { + background-color: #f8f8f8; + border: 1px solid #ccc; + display: table; + width: auto; +} + +#toolbox_section { + height: 85%; + width: 60%; +} + +#previewHelp { + padding: 10px; + width: 98%; +} + +#toolbox_blocks { + height: 100%; + width: 100%; +} + +#preview_blocks { + height: 80%; + padding: 10px; + width: 100%; +} + +#createDiv { + height: 79%; + padding: 0.5%; + width: 60%; +} + +#previewDiv { + border: 10px solid #eee; + height: 77%; + margin-right: 0.5%; + padding-bottom: 10px; + width: 35%; +} + +#previewBorder { + border: 5px solid #ddd; + height: 100%; + padding-right: 20px; +} + +.disabled { + background-color: white; + opacity: 0.5; +} + +#toolbox_div { + display: table; + height: auto; + margin-right: 5%; + overflow: hidden; + width: 35%; +} + +#preload_div { + display: table; + height: 75%; + margin-left: 2%; + margin-right: 2%; + max-height: 500px; + overflow: hidden; + overflow-y: scroll; + width: 30%; +} + +#shadowBlockDropdown { + height: 15%; +} + +#preloadHelp { + display: table-row; + height: 30%; +} + +#workspace_options { + display: table-row; + margin-top: 2%; +} + +#disable_div { + background-color: white; + height: 100%; + left: 0; + opacity: .5; + position: absolute; + top: 0; + width: 100%; + z-index: -1; /* Start behind workspace */ +} + +#grid_options, #zoom_options, #maxBlockNumber_option { + padding-left: 15px; +} + +#modalShadow { + display: none; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: rgba(0, 0, 0, 0.1); + z-index: 100; +} + +/* The container
- needed to position the dropdown content */ +.dropdown { + display: inline-block; +} + +/* Dropdown Content (Hidden by Default) */ +.dropdown-content { + background-color: #fff; + box-shadow: 0 8px 16px 0 rgba(0,0,0,.2); + display: none; + min-width: 170px; + opacity: 1; + position: absolute; + z-index: 101; /* On top of the modal Shadow. */ +} + +/* Links inside the dropdown */ +.dropdown-content a, .dropdown-content label { + color: black; + display: block; + font-size: small; + padding: 12px 16px; + text-decoration: none; +} + +/* Change colour of dropdown links on hover. */ +.dropdown-content a:hover, .dropdown-content label:hover { + background-color: #EEE; +} + +/* Change colour of dropdown links on selected. */ +.dropdown-content-selected { + background-color: #DDD; +} + +/* Show the dropdown menu */ +.show { + display: block; +} + +#dropdownDiv_editCategory { + padding: 0 1ex; +} + +#dropdownDiv_editCategory>img { + vertical-align: middle; +} + +.cp_swatch { + vertical-align: middle !important; +} + +#cp_popup { + z-index: 999; +} + +.shadowBlock>.blocklyPath { + fill-opacity: .5; + stroke-opacity: .5; +} + +.shadowBlock>.blocklyPathLight, +.shadowBlock>.blocklyPathDark { + display: none; +} + +/* Privacy link */ +.privacyLink { + font-family: Roboto, Arial, Helvetica, sans-serif; + font-size: small; + text-decoration: none; +} + +.privacyButton { + float: right; +} diff --git a/demos/blockfactory/factory.js b/demos/blockfactory/factory.js index 166f5f70776..ac285915369 100644 --- a/demos/blockfactory/factory.js +++ b/demos/blockfactory/factory.js @@ -1,327 +1,327 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview JavaScript for Blockly's Block Factory application through - * which users can build blocks using a visual interface and dynamically - * generate a preview block and starter code for the block (block definition and - * generator stub. Uses the Block Factory namespace. Depends on the FactoryUtils - * for its code generation functions. - * - */ -'use strict'; - -/** - * Namespace for Block Factory. - */ -var BlockFactory = BlockFactory || Object.create(null); - -/** - * Workspace for user to build block. - * @type {Blockly.Workspace} - */ -BlockFactory.mainWorkspace = null; - -/** - * Workspace for preview of block. - * @type {Blockly.Workspace} - */ -BlockFactory.previewWorkspace = null; - -/** - * Name of block if not named. - * @type string - */ -BlockFactory.UNNAMED = 'unnamed'; - -/** - * Existing direction ('ltr' vs 'rtl') of preview. - * @type string - */ -BlockFactory.oldDir = null; - -/** - * Flag to signal that an update came from a manual update to the JSON or JavaScript. - * definition manually. - * @type boolean - */ -// TODO: Replace global state with parameter passed to functions. -BlockFactory.updateBlocksFlag = false; - -/** - * Delayed flag to avoid infinite update after updating the JSON or JavaScript. - * definition manually. - * @type boolean - */ -// TODO: Replace global state with parameter passed to functions. -BlockFactory.updateBlocksFlagDelayed = false; - -/** - * The starting XML for the Block Factory main workspace. Contains the - * unmovable, undeletable factory_base block. - */ -BlockFactory.STARTER_BLOCK_XML_TEXT = - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '230' + - ''; - -/** - * Change the language code format. - */ -BlockFactory.formatChange = function() { - var mask = document.getElementById('blocklyMask'); - var languagePre = document.getElementById('languagePre'); - var languageTA = document.getElementById('languageTA'); - if (document.getElementById('format').value === 'Manual-JSON' || - document.getElementById('format').value === 'Manual-JS') { - Blockly.common.getMainWorkspace().hideChaff(); - mask.style.display = 'block'; - languagePre.style.display = 'none'; - languageTA.style.display = 'block'; - var code = languagePre.textContent.trim(); - languageTA.value = code; - languageTA.focus(); - BlockFactory.updatePreview(); - } else { - mask.style.display = 'none'; - languageTA.style.display = 'none'; - languagePre.style.display = 'block'; - var code = languagePre.textContent.trim(); - languageTA.value = code; - - BlockFactory.updateLanguage(); - } - BlockFactory.disableEnableLink(); -}; - -/** - * Update the language code based on constructs made in Blockly. - */ -BlockFactory.updateLanguage = function() { - var rootBlock = FactoryUtils.getRootBlock(BlockFactory.mainWorkspace); - if (!rootBlock) { - return; - } - var blockType = rootBlock.getFieldValue('NAME').trim().toLowerCase(); - if (!blockType) { - blockType = BlockFactory.UNNAMED; - } - - if (!BlockFactory.updateBlocksFlag) { - var format = document.getElementById('format').value; - if (format === 'Manual-JSON') { - format = 'JSON'; - } else if (format === 'Manual-JS') { - format = 'JavaScript'; - } - - var code = FactoryUtils.getBlockDefinition(blockType, rootBlock, format, - BlockFactory.mainWorkspace); - FactoryUtils.injectCode(code, 'languagePre'); - if (!BlockFactory.updateBlocksFlagDelayed) { - var languagePre = document.getElementById('languagePre'); - var languageTA = document.getElementById('languageTA'); - code = languagePre.innerText.trim(); - languageTA.value = code; - } - } - - BlockFactory.updatePreview(); -}; - -/** - * Update the generator code. - * @param {!Blockly.Block} block Rendered block in preview workspace. - */ -BlockFactory.updateGenerator = function(block) { - var language = document.getElementById('language').value; - var generatorStub = FactoryUtils.getGeneratorStub(block, language); - FactoryUtils.injectCode(generatorStub, 'generatorPre'); -}; - -/** - * Update the preview display. - */ -BlockFactory.updatePreview = function() { - // Toggle between LTR/RTL if needed (also used in first display). - var newDir = document.getElementById('direction').value; - if (BlockFactory.oldDir !== newDir) { - if (BlockFactory.previewWorkspace) { - BlockFactory.previewWorkspace.dispose(); - } - var rtl = newDir === 'rtl'; - BlockFactory.previewWorkspace = Blockly.inject('preview', - {rtl: rtl, - media: '../../media/', - scrollbars: true}); - BlockFactory.oldDir = newDir; - } - BlockFactory.previewWorkspace.clear(); - - var format = BlockFactory.getBlockDefinitionFormat(); - var code = document.getElementById('languageTA').value; - if (!code.trim()) { - // Nothing to render. Happens while cloud storage is loading. - return; - } - - // Backup Blockly.Blocks definitions so we can delete them all - // before instantiating user-defined block. This avoids a collision - // between the main workspace and preview if the user creates a - // 'factory_base' block, for instance. - var originalBlocks = Object.assign(Object.create(null), Blockly.Blocks); - try { - // Delete existing blocks. - for (var key in Blockly.Blocks) { - delete Blockly.Blocks[key]; - } - - if (format === 'JSON') { - var json = JSON.parse(code); - Blockly.Blocks[json.type || BlockFactory.UNNAMED] = { - init: function() { - this.jsonInit(json); - } - }; - } else if (format === 'JavaScript') { - try { - eval(code); - } catch (e) { - // TODO: Display error in the UI - console.error("Error while evaluating JavaScript formatted block definition", e); - return; - } - } - - // Look for newly-created block(s) (ideally just one). - var createdTypes = Object.getOwnPropertyNames(Blockly.Blocks); - if (createdTypes.length < 1) { - return; - } else if (createdTypes.length > 1) { - console.log('Unexpectedly found more than one block definition'); - } - var blockType = createdTypes[0]; - - // Create the preview block. - var previewBlock = BlockFactory.previewWorkspace.newBlock(blockType); - previewBlock.initSvg(); - previewBlock.render(); - previewBlock.setMovable(false); - previewBlock.setDeletable(false); - previewBlock.moveBy(15, 10); - BlockFactory.previewWorkspace.clearUndo(); - BlockFactory.updateGenerator(previewBlock); - - // Warn user only if their block type is already exists in Blockly's - // standard library. - var rootBlock = FactoryUtils.getRootBlock(BlockFactory.mainWorkspace); - if (StandardCategories.coreBlockTypes.indexOf(blockType) !== -1) { - rootBlock.setWarningText('A core Blockly block already exists ' + - 'under this name.'); - - } else if (blockType === 'block_type') { - // Warn user to let them know they can't save a block under the default - // name 'block_type' - rootBlock.setWarningText('You cannot save a block with the default ' + - 'name, "block_type"'); - - } else { - rootBlock.setWarningText(null); - } - } catch(err) { - // TODO: Show error on the UI - console.log(err); - BlockFactory.updateBlocksFlag = false - BlockFactory.updateBlocksFlagDelayed = false - } finally { - // Remove all newly-created block(s). - for (var key in Blockly.Blocks) { - delete Blockly.Blocks[key]; - } - // Restore original blocks. - Object.assign(Blockly.Blocks, originalBlocks); - } -}; - -/** - * Gets the format from the Block Definitions' format selector/drop-down. - * @return Either 'JavaScript' or 'JSON'. - * @throws If selector value is not recognized. - */ -BlockFactory.getBlockDefinitionFormat = function() { - switch (document.getElementById('format').value) { - case 'JSON': - case 'Manual-JSON': - return 'JSON'; - - case 'JavaScript': - case 'Manual-JS': - return 'JavaScript'; - - default: - throw 'Unknown format: ' + format; - } -} - -/** - * Disable link and save buttons if the format is 'Manual', enable otherwise. - */ -BlockFactory.disableEnableLink = function() { - var linkButton = document.getElementById('linkButton'); - var saveBlockButton = document.getElementById('localSaveButton'); - var saveToLibButton = document.getElementById('saveToBlockLibraryButton'); - var disabled = document.getElementById('format').value.substr(0, 6) === 'Manual'; - linkButton.disabled = disabled; - saveBlockButton.disabled = disabled; - saveToLibButton.disabled = disabled; -}; - -/** - * Render starter block (factory_base). - */ -BlockFactory.showStarterBlock = function() { - BlockFactory.mainWorkspace.clear(); - var xml = Blockly.Xml.textToDom(BlockFactory.STARTER_BLOCK_XML_TEXT); - Blockly.Xml.domToWorkspace(xml, BlockFactory.mainWorkspace); -}; - -/** - * Returns whether or not the current block open is the starter block. - */ -BlockFactory.isStarterBlock = function() { - var rootBlock = FactoryUtils.getRootBlock(BlockFactory.mainWorkspace); - return rootBlock && !( - // The starter block does not have blocks nested into the factory_base block. - rootBlock.getChildren().length > 0 || - // The starter block's name is the default, 'block_type'. - rootBlock.getFieldValue('NAME').trim().toLowerCase() !== 'block_type' || - // The starter block has no connections. - rootBlock.getFieldValue('CONNECTIONS') !== 'NONE' || - // The starter block has automatic inputs. - rootBlock.getFieldValue('INLINE') !== 'AUTO' - ); -}; - -/** - * Updates blocks from the manually edited js or json from their text area. - */ -BlockFactory.manualEdit = function() { - // TODO(#1267): Replace these global state flags with parameters passed to - // the right functions. - BlockFactory.updateBlocksFlag = true; - BlockFactory.updateBlocksFlagDelayed = true; - BlockFactory.updateLanguage(); -} +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview JavaScript for Blockly's Block Factory application through + * which users can build blocks using a visual interface and dynamically + * generate a preview block and starter code for the block (block definition and + * generator stub. Uses the Block Factory namespace. Depends on the FactoryUtils + * for its code generation functions. + * + */ +'use strict'; + +/** + * Namespace for Block Factory. + */ +var BlockFactory = BlockFactory || Object.create(null); + +/** + * Workspace for user to build block. + * @type {Blockly.Workspace} + */ +BlockFactory.mainWorkspace = null; + +/** + * Workspace for preview of block. + * @type {Blockly.Workspace} + */ +BlockFactory.previewWorkspace = null; + +/** + * Name of block if not named. + * @type string + */ +BlockFactory.UNNAMED = 'unnamed'; + +/** + * Existing direction ('ltr' vs 'rtl') of preview. + * @type string + */ +BlockFactory.oldDir = null; + +/** + * Flag to signal that an update came from a manual update to the JSON or JavaScript. + * definition manually. + * @type boolean + */ +// TODO: Replace global state with parameter passed to functions. +BlockFactory.updateBlocksFlag = false; + +/** + * Delayed flag to avoid infinite update after updating the JSON or JavaScript. + * definition manually. + * @type boolean + */ +// TODO: Replace global state with parameter passed to functions. +BlockFactory.updateBlocksFlagDelayed = false; + +/** + * The starting XML for the Block Factory main workspace. Contains the + * unmovable, undeletable factory_base block. + */ +BlockFactory.STARTER_BLOCK_XML_TEXT = + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '230' + + ''; + +/** + * Change the language code format. + */ +BlockFactory.formatChange = function() { + var mask = document.getElementById('blocklyMask'); + var languagePre = document.getElementById('languagePre'); + var languageTA = document.getElementById('languageTA'); + if (document.getElementById('format').value === 'Manual-JSON' || + document.getElementById('format').value === 'Manual-JS') { + Blockly.common.getMainWorkspace().hideChaff(); + mask.style.display = 'block'; + languagePre.style.display = 'none'; + languageTA.style.display = 'block'; + var code = languagePre.textContent.trim(); + languageTA.value = code; + languageTA.focus(); + BlockFactory.updatePreview(); + } else { + mask.style.display = 'none'; + languageTA.style.display = 'none'; + languagePre.style.display = 'block'; + var code = languagePre.textContent.trim(); + languageTA.value = code; + + BlockFactory.updateLanguage(); + } + BlockFactory.disableEnableLink(); +}; + +/** + * Update the language code based on constructs made in Blockly. + */ +BlockFactory.updateLanguage = function() { + var rootBlock = FactoryUtils.getRootBlock(BlockFactory.mainWorkspace); + if (!rootBlock) { + return; + } + var blockType = rootBlock.getFieldValue('NAME').trim().toLowerCase(); + if (!blockType) { + blockType = BlockFactory.UNNAMED; + } + + if (!BlockFactory.updateBlocksFlag) { + var format = document.getElementById('format').value; + if (format === 'Manual-JSON') { + format = 'JSON'; + } else if (format === 'Manual-JS') { + format = 'JavaScript'; + } + + var code = FactoryUtils.getBlockDefinition(blockType, rootBlock, format, + BlockFactory.mainWorkspace); + FactoryUtils.injectCode(code, 'languagePre'); + if (!BlockFactory.updateBlocksFlagDelayed) { + var languagePre = document.getElementById('languagePre'); + var languageTA = document.getElementById('languageTA'); + code = languagePre.innerText.trim(); + languageTA.value = code; + } + } + + BlockFactory.updatePreview(); +}; + +/** + * Update the generator code. + * @param {!Blockly.Block} block Rendered block in preview workspace. + */ +BlockFactory.updateGenerator = function(block) { + var language = document.getElementById('language').value; + var generatorStub = FactoryUtils.getGeneratorStub(block, language); + FactoryUtils.injectCode(generatorStub, 'generatorPre'); +}; + +/** + * Update the preview display. + */ +BlockFactory.updatePreview = function() { + // Toggle between LTR/RTL if needed (also used in first display). + var newDir = document.getElementById('direction').value; + if (BlockFactory.oldDir !== newDir) { + if (BlockFactory.previewWorkspace) { + BlockFactory.previewWorkspace.dispose(); + } + var rtl = newDir === 'rtl'; + BlockFactory.previewWorkspace = Blockly.inject('preview', + {rtl: rtl, + media: '../../media/', + scrollbars: true}); + BlockFactory.oldDir = newDir; + } + BlockFactory.previewWorkspace.clear(); + + var format = BlockFactory.getBlockDefinitionFormat(); + var code = document.getElementById('languageTA').value; + if (!code.trim()) { + // Nothing to render. Happens while cloud storage is loading. + return; + } + + // Backup Blockly.Blocks definitions so we can delete them all + // before instantiating user-defined block. This avoids a collision + // between the main workspace and preview if the user creates a + // 'factory_base' block, for instance. + var originalBlocks = Object.assign(Object.create(null), Blockly.Blocks); + try { + // Delete existing blocks. + for (var key in Blockly.Blocks) { + delete Blockly.Blocks[key]; + } + + if (format === 'JSON') { + var json = JSON.parse(code); + Blockly.Blocks[json.type || BlockFactory.UNNAMED] = { + init: function() { + this.jsonInit(json); + } + }; + } else if (format === 'JavaScript') { + try { + eval(code); + } catch (e) { + // TODO: Display error in the UI + console.error("Error while evaluating JavaScript formatted block definition", e); + return; + } + } + + // Look for newly-created block(s) (ideally just one). + var createdTypes = Object.getOwnPropertyNames(Blockly.Blocks); + if (createdTypes.length < 1) { + return; + } else if (createdTypes.length > 1) { + console.log('Unexpectedly found more than one block definition'); + } + var blockType = createdTypes[0]; + + // Create the preview block. + var previewBlock = BlockFactory.previewWorkspace.newBlock(blockType); + previewBlock.initSvg(); + previewBlock.render(); + previewBlock.setMovable(false); + previewBlock.setDeletable(false); + previewBlock.moveBy(15, 10); + BlockFactory.previewWorkspace.clearUndo(); + BlockFactory.updateGenerator(previewBlock); + + // Warn user only if their block type is already exists in Blockly's + // standard library. + var rootBlock = FactoryUtils.getRootBlock(BlockFactory.mainWorkspace); + if (StandardCategories.coreBlockTypes.indexOf(blockType) !== -1) { + rootBlock.setWarningText('A core Blockly block already exists ' + + 'under this name.'); + + } else if (blockType === 'block_type') { + // Warn user to let them know they can't save a block under the default + // name 'block_type' + rootBlock.setWarningText('You cannot save a block with the default ' + + 'name, "block_type"'); + + } else { + rootBlock.setWarningText(null); + } + } catch(err) { + // TODO: Show error on the UI + console.log(err); + BlockFactory.updateBlocksFlag = false + BlockFactory.updateBlocksFlagDelayed = false + } finally { + // Remove all newly-created block(s). + for (var key in Blockly.Blocks) { + delete Blockly.Blocks[key]; + } + // Restore original blocks. + Object.assign(Blockly.Blocks, originalBlocks); + } +}; + +/** + * Gets the format from the Block Definitions' format selector/drop-down. + * @return Either 'JavaScript' or 'JSON'. + * @throws If selector value is not recognized. + */ +BlockFactory.getBlockDefinitionFormat = function() { + switch (document.getElementById('format').value) { + case 'JSON': + case 'Manual-JSON': + return 'JSON'; + + case 'JavaScript': + case 'Manual-JS': + return 'JavaScript'; + + default: + throw 'Unknown format: ' + format; + } +} + +/** + * Disable link and save buttons if the format is 'Manual', enable otherwise. + */ +BlockFactory.disableEnableLink = function() { + var linkButton = document.getElementById('linkButton'); + var saveBlockButton = document.getElementById('localSaveButton'); + var saveToLibButton = document.getElementById('saveToBlockLibraryButton'); + var disabled = document.getElementById('format').value.substr(0, 6) === 'Manual'; + linkButton.disabled = disabled; + saveBlockButton.disabled = disabled; + saveToLibButton.disabled = disabled; +}; + +/** + * Render starter block (factory_base). + */ +BlockFactory.showStarterBlock = function() { + BlockFactory.mainWorkspace.clear(); + var xml = Blockly.Xml.textToDom(BlockFactory.STARTER_BLOCK_XML_TEXT); + Blockly.Xml.domToWorkspace(xml, BlockFactory.mainWorkspace); +}; + +/** + * Returns whether or not the current block open is the starter block. + */ +BlockFactory.isStarterBlock = function() { + var rootBlock = FactoryUtils.getRootBlock(BlockFactory.mainWorkspace); + return rootBlock && !( + // The starter block does not have blocks nested into the factory_base block. + rootBlock.getChildren().length > 0 || + // The starter block's name is the default, 'block_type'. + rootBlock.getFieldValue('NAME').trim().toLowerCase() !== 'block_type' || + // The starter block has no connections. + rootBlock.getFieldValue('CONNECTIONS') !== 'NONE' || + // The starter block has automatic inputs. + rootBlock.getFieldValue('INLINE') !== 'AUTO' + ); +}; + +/** + * Updates blocks from the manually edited js or json from their text area. + */ +BlockFactory.manualEdit = function() { + // TODO(#1267): Replace these global state flags with parameters passed to + // the right functions. + BlockFactory.updateBlocksFlag = true; + BlockFactory.updateBlocksFlagDelayed = true; + BlockFactory.updateLanguage(); +} diff --git a/demos/blockfactory/factory_utils.js b/demos/blockfactory/factory_utils.js index 61e53e0a24d..7b4eb6ea42a 100644 --- a/demos/blockfactory/factory_utils.js +++ b/demos/blockfactory/factory_utils.js @@ -1,1041 +1,1041 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview FactoryUtils is a namespace that holds block starter code - * generation functions shared by the Block Factory, Workspace Factory, and - * Exporter applications within Blockly Factory. Holds functions to generate - * block definitions and generator stubs and to create and download files. - * - * (Juan Carlos Orozco) - */ -'use strict'; - -/** - * Namespace for FactoryUtils. - */ -var FactoryUtils = FactoryUtils || Object.create(null); - -/** - * Get block definition code for the current block. - * @param {string} blockType Type of block. - * @param {!Blockly.Block} rootBlock RootBlock from main workspace in which - * user uses Block Factory Blocks to create a custom block. - * @param {string} format 'JSON' or 'JavaScript'. - * @param {!Blockly.Workspace} workspace Where the root block lives. - * @return {string} Block definition. - */ -FactoryUtils.getBlockDefinition = function(blockType, rootBlock, format, workspace) { - blockType = FactoryUtils.cleanBlockType(blockType); - switch (format) { - case 'JSON': - var code = FactoryUtils.formatJson_(blockType, rootBlock); - break; - case 'JavaScript': - var code = FactoryUtils.formatJavaScript_(blockType, rootBlock, workspace); - break; - } - return code; -}; - -/** - * Convert invalid block name to a valid one. Replaces whitespace - * and prepend names that start with a digit with an '_'. - * @param {string} blockType Type of block. - * @return {string} Cleaned up block type. - */ -FactoryUtils.cleanBlockType = function(blockType) { - if (!blockType) { - return ''; - } - return blockType.replace(/\W/g, '_').replace(/^(\d)/, '_$1'); -}; - -/** - * Get the generator code for a given block. - * @param {!Blockly.Block} block Rendered block in preview workspace. - * @param {string} generatorLanguage 'JavaScript', 'Python', 'PHP', 'Lua', - * or 'Dart'. - * @return {string} Generator code for multiple blocks. - */ -FactoryUtils.getGeneratorStub = function(block, generatorLanguage) { - // Build factory blocks from block - if (BlockFactory.updateBlocksFlag) { // TODO: Move this to updatePreview() - BlockFactory.mainWorkspace.clear(); - var xml = BlockDefinitionExtractor.buildBlockFactoryWorkspace(block); - Blockly.Xml.domToWorkspace(xml, BlockFactory.mainWorkspace); - // Calculate timer to avoid infinite update loops - // TODO(#1267): Remove the global variables and any infinite loops. - BlockFactory.updateBlocksFlag = false; - setTimeout( - function() {BlockFactory.updateBlocksFlagDelayed = false;}, 3000); - } - BlockFactory.lastUpdatedBlock = block; // Variable to share the block value. - - function makeVar(root, name) { - name = name.toLowerCase().replace(/\W/g, '_'); - return ' var ' + root + '_' + name; - } - // The makevar function lives in the original update generator. - var language = generatorLanguage; - var code = []; - code.push("Blockly." + language + "['" + block.type + - "'] = function(block) {"); - - // Generate getters for any fields or inputs. - for (var i = 0, input; input = block.inputList[i]; i++) { - for (var j = 0, field; field = input.fieldRow[j]; j++) { - var name = field.name; - if (!name) { - continue; - } - if (field instanceof Blockly.FieldVariable) { - // Subclass of Blockly.FieldDropdown, must test first. - code.push(makeVar('variable', name) + - " = Blockly." + language + - ".nameDB_.getName(block.getFieldValue('" + name + - "'), Blockly.Variables.NAME_TYPE);"); - } else if (field instanceof Blockly.FieldAngle) { - // Subclass of Blockly.FieldTextInput, must test first. - code.push(makeVar('angle', name) + - " = block.getFieldValue('" + name + "');"); - } else if (field instanceof Blockly.FieldColour) { - code.push(makeVar('colour', name) + - " = block.getFieldValue('" + name + "');"); - } else if (field instanceof Blockly.FieldCheckbox) { - code.push(makeVar('checkbox', name) + - " = block.getFieldValue('" + name + "') === 'TRUE';"); - } else if (field instanceof Blockly.FieldDropdown) { - code.push(makeVar('dropdown', name) + - " = block.getFieldValue('" + name + "');"); - } else if (field instanceof Blockly.FieldNumber) { - code.push(makeVar('number', name) + - " = block.getFieldValue('" + name + "');"); - } else if (field instanceof Blockly.FieldTextInput) { - code.push(makeVar('text', name) + - " = block.getFieldValue('" + name + "');"); - } - } - var name = input.name; - if (name) { - if (input.type === Blockly.INPUT_VALUE) { - code.push(makeVar('value', name) + - " = Blockly." + language + ".valueToCode(block, '" + name + - "', Blockly." + language + ".ORDER_ATOMIC);"); - } else if (input.type === Blockly.NEXT_STATEMENT) { - code.push(makeVar('statements', name) + - " = Blockly." + language + ".statementToCode(block, '" + - name + "');"); - } - } - } - // Most languages end lines with a semicolon. Python & Lua do not. - var lineEnd = { - 'JavaScript': ';', - 'Python': '', - 'PHP': ';', - 'Lua': '', - 'Dart': ';' - }; - code.push(" // TODO: Assemble " + language + " into code variable."); - if (block.outputConnection) { - code.push(" var code = '...';"); - code.push(" // TODO: Change ORDER_NONE to the correct strength."); - code.push(" return [code, Blockly." + language + ".ORDER_NONE];"); - } else { - code.push(" var code = '..." + (lineEnd[language] || '') + "\\n';"); - code.push(" return code;"); - } - code.push("};"); - - return code.join('\n'); -}; - -/** - * Update the language code as JSON. - * @param {string} blockType Name of block. - * @param {!Blockly.Block} rootBlock Factory_base block. - * @return {string} Generated language code. - * @private - */ -FactoryUtils.formatJson_ = function(blockType, rootBlock) { - var JS = {}; - // Type is not used by Blockly, but may be used by a loader. - JS.type = blockType; - // Generate inputs. - var message = []; - var args = []; - var contentsBlock = rootBlock.getInputTargetBlock('INPUTS'); - var lastInput = null; - while (contentsBlock) { - if (!contentsBlock.disabled && !contentsBlock.getInheritedDisabled()) { - var fields = FactoryUtils.getFieldsJson_( - contentsBlock.getInputTargetBlock('FIELDS')); - for (var i = 0; i < fields.length; i++) { - if (typeof fields[i] === 'string') { - message.push(fields[i].replace(/%/g, '%%')); - } else { - args.push(fields[i]); - message.push('%' + args.length); - } - } - - var input = {type: contentsBlock.type}; - // Dummy inputs don't have names. Other inputs do. - if (contentsBlock.type !== 'input_dummy') { - input.name = contentsBlock.getFieldValue('INPUTNAME'); - } - var check = JSON.parse( - FactoryUtils.getOptTypesFrom(contentsBlock, 'TYPE') || 'null'); - if (check) { - input.check = check; - } - var align = contentsBlock.getFieldValue('ALIGN'); - if (align !== 'LEFT') { - input.align = align; - } - args.push(input); - message.push('%' + args.length); - lastInput = contentsBlock; - } - contentsBlock = contentsBlock.nextConnection && - contentsBlock.nextConnection.targetBlock(); - } - // Remove last input if dummy and not empty. - if (lastInput && lastInput.type === 'input_dummy') { - var fields = lastInput.getInputTargetBlock('FIELDS'); - if (fields && FactoryUtils.getFieldsJson_(fields).join('').trim() !== '') { - var align = lastInput.getFieldValue('ALIGN'); - if (align !== 'LEFT') { - JS.lastDummyAlign0 = align; - } - args.pop(); - message.pop(); - } - } - JS.message0 = message.join(' '); - if (args.length) { - JS.args0 = args; - } - // Generate inline/external switch. - if (rootBlock.getFieldValue('INLINE') === 'EXT') { - JS.inputsInline = false; - } else if (rootBlock.getFieldValue('INLINE') === 'INT') { - JS.inputsInline = true; - } - // Generate output, or next/previous connections. - switch (rootBlock.getFieldValue('CONNECTIONS')) { - case 'LEFT': - JS.output = - JSON.parse( - FactoryUtils.getOptTypesFrom(rootBlock, 'OUTPUTTYPE') || 'null'); - break; - case 'BOTH': - JS.previousStatement = - JSON.parse( - FactoryUtils.getOptTypesFrom(rootBlock, 'TOPTYPE') || 'null'); - JS.nextStatement = - JSON.parse( - FactoryUtils.getOptTypesFrom(rootBlock, 'BOTTOMTYPE') || 'null'); - break; - case 'TOP': - JS.previousStatement = - JSON.parse( - FactoryUtils.getOptTypesFrom(rootBlock, 'TOPTYPE') || 'null'); - break; - case 'BOTTOM': - JS.nextStatement = - JSON.parse( - FactoryUtils.getOptTypesFrom(rootBlock, 'BOTTOMTYPE') || 'null'); - break; - } - // Generate colour. - var colourBlock = rootBlock.getInputTargetBlock('COLOUR'); - if (colourBlock && !colourBlock.disabled) { - var hue = parseInt(colourBlock.getFieldValue('HUE'), 10); - JS.colour = hue; - } - - JS.tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock); - JS.helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock); - - return JSON.stringify(JS, null, ' '); -}; - -/** - * Update the language code as JavaScript. - * @param {string} blockType Name of block. - * @param {!Blockly.Block} rootBlock Factory_base block. - * @param {!Blockly.Workspace} workspace Where the root block lives. - * @return {string} Generated language code. - * @private - */ -FactoryUtils.formatJavaScript_ = function(blockType, rootBlock, workspace) { - var code = []; - code.push("Blockly.Blocks['" + blockType + "'] = {"); - code.push(" init: function() {"); - // Generate inputs. - var TYPES = {'input_value': 'appendValueInput', - 'input_statement': 'appendStatementInput', - 'input_dummy': 'appendDummyInput'}; - var contentsBlock = rootBlock.getInputTargetBlock('INPUTS'); - while (contentsBlock) { - if (!contentsBlock.disabled && !contentsBlock.getInheritedDisabled()) { - var name = ''; - // Dummy inputs don't have names. Other inputs do. - if (contentsBlock.type !== 'input_dummy') { - name = - JSON.stringify(contentsBlock.getFieldValue('INPUTNAME')); - } - code.push(' this.' + TYPES[contentsBlock.type] + '(' + name + ')'); - var check = FactoryUtils.getOptTypesFrom(contentsBlock, 'TYPE'); - if (check) { - code.push(' .setCheck(' + check + ')'); - } - var align = contentsBlock.getFieldValue('ALIGN'); - if (align !== 'LEFT') { - code.push(' .setAlign(Blockly.ALIGN_' + align + ')'); - } - var fields = FactoryUtils.getFieldsJs_( - contentsBlock.getInputTargetBlock('FIELDS')); - for (var i = 0; i < fields.length; i++) { - code.push(' .appendField(' + fields[i] + ')'); - } - // Add semicolon to last line to finish the statement. - code[code.length - 1] += ';'; - } - contentsBlock = contentsBlock.nextConnection && - contentsBlock.nextConnection.targetBlock(); - } - // Generate inline/external switch. - if (rootBlock.getFieldValue('INLINE') === 'EXT') { - code.push(' this.setInputsInline(false);'); - } else if (rootBlock.getFieldValue('INLINE') === 'INT') { - code.push(' this.setInputsInline(true);'); - } - // Generate output, or next/previous connections. - switch (rootBlock.getFieldValue('CONNECTIONS')) { - case 'LEFT': - code.push(FactoryUtils.connectionLineJs_('setOutput', 'OUTPUTTYPE', workspace)); - break; - case 'BOTH': - code.push( - FactoryUtils.connectionLineJs_('setPreviousStatement', 'TOPTYPE', workspace)); - code.push( - FactoryUtils.connectionLineJs_('setNextStatement', 'BOTTOMTYPE', workspace)); - break; - case 'TOP': - code.push( - FactoryUtils.connectionLineJs_('setPreviousStatement', 'TOPTYPE', workspace)); - break; - case 'BOTTOM': - code.push( - FactoryUtils.connectionLineJs_('setNextStatement', 'BOTTOMTYPE', workspace)); - break; - } - // Generate colour. - var colourBlock = rootBlock.getInputTargetBlock('COLOUR'); - if (colourBlock && !colourBlock.disabled) { - var hue = parseInt(colourBlock.getFieldValue('HUE'), 10); - if (!isNaN(hue)) { - code.push(' this.setColour(' + hue + ');'); - } - } - - var tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock); - var helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock); - code.push(' this.setTooltip(' + JSON.stringify(tooltip) + ');'); - code.push(' this.setHelpUrl(' + JSON.stringify(helpUrl) + ');'); - code.push(' }'); - code.push('};'); - return code.join('\n'); -}; - -/** - * Create JS code required to create a top, bottom, or value connection. - * @param {string} functionName JavaScript function name. - * @param {string} typeName Name of type input. - * @param {!Blockly.Workspace} workspace Where the root block lives. - * @return {string} Line of JavaScript code to create connection. - * @private - */ -FactoryUtils.connectionLineJs_ = function(functionName, typeName, workspace) { - var type = FactoryUtils.getOptTypesFrom( - FactoryUtils.getRootBlock(workspace), typeName); - if (type) { - type = ', ' + type; - } else { - type = ''; - } - return ' this.' + functionName + '(true' + type + ');'; -}; - -/** - * Returns field strings and any config. - * @param {!Blockly.Block} block Input block. - * @return {!Array} Field strings. - * @private - */ -FactoryUtils.getFieldsJs_ = function(block) { - var fields = []; - while (block) { - if (!block.disabled && !block.getInheritedDisabled()) { - switch (block.type) { - case 'field_static': - // Result: 'hello' - fields.push(JSON.stringify(block.getFieldValue('TEXT'))); - break; - case 'field_label_serializable': - // Result: new Blockly.FieldLabelSerializable('Hello'), 'GREET' - fields.push('new Blockly.FieldLabelSerializable(' + - JSON.stringify(block.getFieldValue('TEXT')) + '), ' + - JSON.stringify(block.getFieldValue('FIELDNAME'))); - break; - case 'field_input': - // Result: new Blockly.FieldTextInput('Hello'), 'GREET' - fields.push('new Blockly.FieldTextInput(' + - JSON.stringify(block.getFieldValue('TEXT')) + '), ' + - JSON.stringify(block.getFieldValue('FIELDNAME'))); - break; - case 'field_number': - // Result: new Blockly.FieldNumber(10, 0, 100, 1), 'NUMBER' - var args = [ - Number(block.getFieldValue('VALUE')), - Number(block.getFieldValue('MIN')), - Number(block.getFieldValue('MAX')), - Number(block.getFieldValue('PRECISION')) - ]; - // Remove any trailing arguments that aren't needed. - if (args[3] === 0) { - args.pop(); - if (args[2] === Infinity) { - args.pop(); - if (args[1] === -Infinity) { - args.pop(); - } - } - } - fields.push('new Blockly.FieldNumber(' + args.join(', ') + '), ' + - JSON.stringify(block.getFieldValue('FIELDNAME'))); - break; - case 'field_angle': - // Result: new Blockly.FieldAngle(90), 'ANGLE' - fields.push('new Blockly.FieldAngle(' + - Number(block.getFieldValue('ANGLE')) + '), ' + - JSON.stringify(block.getFieldValue('FIELDNAME'))); - break; - case 'field_checkbox': - // Result: new Blockly.FieldCheckbox('TRUE'), 'CHECK' - fields.push('new Blockly.FieldCheckbox(' + - JSON.stringify(block.getFieldValue('CHECKED')) + - '), ' + - JSON.stringify(block.getFieldValue('FIELDNAME'))); - break; - case 'field_colour': - // Result: new Blockly.FieldColour('#ff0000'), 'COLOUR' - fields.push('new Blockly.FieldColour(' + - JSON.stringify(block.getFieldValue('COLOUR')) + - '), ' + - JSON.stringify(block.getFieldValue('FIELDNAME'))); - break; - case 'field_variable': - // Result: new Blockly.FieldVariable('item'), 'VAR' - var varname - = JSON.stringify(block.getFieldValue('TEXT') || null); - fields.push('new Blockly.FieldVariable(' + varname + '), ' + - JSON.stringify(block.getFieldValue('FIELDNAME'))); - break; - case 'field_dropdown': - // Result: - // new Blockly.FieldDropdown([['yes', '1'], ['no', '0']]), 'TOGGLE' - var options = []; - for (var i = 0; i < block.optionList_.length; i++) { - options[i] = JSON.stringify([block.getUserData(i), - block.getFieldValue('CPU' + i)]); - } - if (options.length) { - fields.push('new Blockly.FieldDropdown([' + - options.join(', ') + ']), ' + - JSON.stringify(block.getFieldValue('FIELDNAME'))); - } - break; - case 'field_image': - // Result: new Blockly.FieldImage('http://...', 80, 60, '*') - var src = JSON.stringify(block.getFieldValue('SRC')); - var width = Number(block.getFieldValue('WIDTH')); - var height = Number(block.getFieldValue('HEIGHT')); - var alt = JSON.stringify(block.getFieldValue('ALT')); - var flipRtl = JSON.stringify(block.getFieldValue('FLIP_RTL')); - fields.push('new Blockly.FieldImage(' + - src + ', ' + width + ', ' + height + - ', { alt: ' + alt + ', flipRtl: ' + flipRtl + ' })'); - break; - } - } - block = block.nextConnection && block.nextConnection.targetBlock(); - } - return fields; -}; - -/** - * Returns field strings and any config. - * @param {!Blockly.Block} block Input block. - * @return {!Array} Array of static text and field configs. - * @private - */ -FactoryUtils.getFieldsJson_ = function(block) { - var fields = []; - while (block) { - if (!block.disabled && !block.getInheritedDisabled()) { - switch (block.type) { - case 'field_static': - // Result: 'hello' - fields.push(block.getFieldValue('TEXT')); - break; - case 'field_label_serializable': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - text: block.getFieldValue('TEXT') - }); - break; - case 'field_input': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - text: block.getFieldValue('TEXT') - }); - break; - case 'field_number': - var obj = { - type: block.type, - name: block.getFieldValue('FIELDNAME'), - value: Number(block.getFieldValue('VALUE')) - }; - var min = Number(block.getFieldValue('MIN')); - if (min > -Infinity) { - obj.min = min; - } - var max = Number(block.getFieldValue('MAX')); - if (max < Infinity) { - obj.max = max; - } - var precision = Number(block.getFieldValue('PRECISION')); - if (precision) { - obj.precision = precision; - } - fields.push(obj); - break; - case 'field_angle': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - angle: Number(block.getFieldValue('ANGLE')) - }); - break; - case 'field_checkbox': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - checked: block.getFieldValue('CHECKED') === 'TRUE' - }); - break; - case 'field_colour': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - colour: block.getFieldValue('COLOUR') - }); - break; - case 'field_variable': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - variable: block.getFieldValue('TEXT') || null - }); - break; - case 'field_dropdown': - var options = []; - for (var i = 0; i < block.optionList_.length; i++) { - options[i] = [block.getUserData(i), - block.getFieldValue('CPU' + i)]; - } - if (options.length) { - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - options: options - }); - } - break; - case 'field_image': - fields.push({ - type: block.type, - src: block.getFieldValue('SRC'), - width: Number(block.getFieldValue('WIDTH')), - height: Number(block.getFieldValue('HEIGHT')), - alt: block.getFieldValue('ALT'), - flipRtl: block.getFieldValue('FLIP_RTL') === 'TRUE' - }); - break; - } - } - block = block.nextConnection && block.nextConnection.targetBlock(); - } - return fields; -}; - -/** - * Fetch the type(s) defined in the given input. - * Format as a string for appending to the generated code. - * @param {!Blockly.Block} block Block with input. - * @param {string} name Name of the input. - * @return {?string} String defining the types. - */ -FactoryUtils.getOptTypesFrom = function(block, name) { - var types = FactoryUtils.getTypesFrom_(block, name); - if (types.length === 0) { - return undefined; - } else if (types.indexOf('null') !== -1) { - return 'null'; - } else if (types.length === 1) { - return types[0]; - } else { - return '[' + types.join(', ') + ']'; - } -}; - - -/** - * Fetch the type(s) defined in the given input. - * @param {!Blockly.Block} block Block with input. - * @param {string} name Name of the input. - * @return {!Array} List of types. - * @private - */ -FactoryUtils.getTypesFrom_ = function(block, name) { - var typeBlock = block.getInputTargetBlock(name); - var types; - if (!typeBlock || typeBlock.disabled) { - types = []; - } else if (typeBlock.type === 'type_other') { - types = [JSON.stringify(typeBlock.getFieldValue('TYPE'))]; - } else if (typeBlock.type === 'type_group') { - types = []; - for (var n = 0; n < typeBlock.typeCount_; n++) { - types = types.concat(FactoryUtils.getTypesFrom_(typeBlock, 'TYPE' + n)); - } - // Remove duplicates. - var hash = Object.create(null); - for (var n = types.length - 1; n >= 0; n--) { - if (hash[types[n]]) { - types.splice(n, 1); - } - hash[types[n]] = true; - } - } else { - types = [JSON.stringify(typeBlock.valueType)]; - } - return types; -}; - -/** - * Return the uneditable container block that everything else attaches to in - * given workspace. - * @param {!Blockly.Workspace} workspace Where the root block lives. - * @return {Blockly.Block} Root block. - */ -FactoryUtils.getRootBlock = function(workspace) { - var blocks = workspace.getTopBlocks(false); - for (var i = 0, block; block = blocks[i]; i++) { - if (block.type === 'factory_base') { - return block; - } - } - return null; -}; - -// TODO(quachtina96): Move hide, show, makeInvisible, and makeVisible to a new -// AppView namespace. - -/** - * Hides element so that it's invisible and doesn't take up space. - * @param {string} elementID ID of element to hide. - */ -FactoryUtils.hide = function(elementID) { - document.getElementById(elementID).style.display = 'none'; -}; - -/** - * Un-hides an element. - * @param {string} elementID ID of element to hide. - */ -FactoryUtils.show = function(elementID) { - document.getElementById(elementID).style.display = 'block'; -}; - -/** - * Hides element so that it's invisible but still takes up space. - * @param {string} elementID ID of element to hide. - */ -FactoryUtils.makeInvisible = function(elementID) { - document.getElementById(elementID).visibility = 'hidden'; -}; - -/** - * Makes element visible. - * @param {string} elementID ID of element to hide. - */ -FactoryUtils.makeVisible = function(elementID) { - document.getElementById(elementID).visibility = 'visible'; -}; - -/** - * Create a file with the given attributes and download it. - * @param {string} contents The contents of the file. - * @param {string} filename The name of the file to save to. - * @param {string} fileType The type of the file to save. - */ -FactoryUtils.createAndDownloadFile = function(contents, filename, fileType) { - var data = new Blob([contents], {type: 'text/' + fileType}); - var clickEvent = new MouseEvent("click", { - "view": window, - "bubbles": true, - "cancelable": false - }); - - var a = document.createElement('a'); - a.href = window.URL.createObjectURL(data); - a.download = filename; - a.textContent = 'Download file!'; - a.dispatchEvent(clickEvent); -}; - -/** - * Get Blockly Block by rendering pre-defined block in workspace. - * @param {!Element} blockType Type of block that has already been defined. - * @param {!Blockly.Workspace} workspace Workspace on which to render - * the block. - * @return {!Blockly.Block} The Blockly.Block of desired type. - */ -FactoryUtils.getDefinedBlock = function(blockType, workspace) { - workspace.clear(); - return workspace.newBlock(blockType); -}; - -/** - * Parses a block definition get the type of the block it defines. - * @param {string} blockDef A single block definition. - * @return {string} Type of block defined by the given definition. - */ -FactoryUtils.getBlockTypeFromJsDefinition = function(blockDef) { - var indexOfStartBracket = blockDef.indexOf('[\''); - var indexOfEndBracket = blockDef.indexOf('\']'); - if (indexOfStartBracket !== -1 && indexOfEndBracket !== -1) { - return blockDef.substring(indexOfStartBracket + 2, indexOfEndBracket); - } else { - throw Error('Could not parse block type out of JavaScript block ' + - 'definition. Brackets normally enclosing block type not found.'); - } -}; - -/** - * Generates a category containing blocks of the specified block types. - * @param {!Array} blocks Blocks to include in the category. - * @param {string} categoryName Name to use for the generated category. - * @return {!Element} Category XML containing the given block types. - */ -FactoryUtils.generateCategoryXml = function(blocks, categoryName) { - // Create category DOM element. - var categoryElement = Blockly.utils.xml.createElement('category'); - categoryElement.setAttribute('name', categoryName); - - // For each block, add block element to category. - for (var i = 0, block; block = blocks[i]; i++) { - - // Get preview block XML. - var blockXml = Blockly.Xml.blockToDom(block); - blockXml.removeAttribute('id'); - - // Add block to category and category to XML. - categoryElement.appendChild(blockXml); - } - return categoryElement; -}; - -/** - * Parses a string containing JavaScript block definition(s) to create an array - * in which each element is a single block definition. - * @param {string} blockDefsString JavaScript block definition(s). - * @return {!Array} Array of block definitions. - */ -FactoryUtils.parseJsBlockDefinitions = function(blockDefsString) { - var blockDefArray = []; - var defStart = blockDefsString.indexOf('Blockly.Blocks'); - - while (blockDefsString.indexOf('Blockly.Blocks', defStart) !== -1) { - var nextStart = blockDefsString.indexOf('Blockly.Blocks', defStart + 1); - if (nextStart === -1) { - // This is the last block definition. - nextStart = blockDefsString.length; - } - var blockDef = blockDefsString.substring(defStart, nextStart); - blockDefArray.push(blockDef); - defStart = nextStart; - } - return blockDefArray; -}; - -/** - * Parses a string containing JSON block definition(s) to create an array - * in which each element is a single block definition. Expected input is - * one or more block definitions in the form of concatenated, stringified - * JSON objects. - * @param {string} blockDefsString String containing JSON block - * definition(s). - * @return {!Array} Array of block definitions. - */ -FactoryUtils.parseJsonBlockDefinitions = function(blockDefsString) { - var blockDefArray = []; - var unbalancedBracketCount = 0; - var defStart = 0; - // Iterate through the blockDefs string. Keep track of whether brackets - // are balanced. - for (var i = 0; i < blockDefsString.length; i++) { - var currentChar = blockDefsString[i]; - if (currentChar === '{') { - unbalancedBracketCount++; - } - else if (currentChar === '}') { - unbalancedBracketCount--; - if (unbalancedBracketCount === 0 && i > 0) { - // The brackets are balanced. We've got a complete block definition. - var blockDef = blockDefsString.substring(defStart, i + 1); - blockDefArray.push(blockDef); - defStart = i + 1; - } - } - } - return blockDefArray; -}; - -/** - * Define blocks from imported block definitions. - * @param {string} blockDefsString Block definition(s). - * @param {string} format Block definition format ('JSON' or 'JavaScript'). - * @return {!Array} Array of block types defined. - */ -FactoryUtils.defineAndGetBlockTypes = function(blockDefsString, format) { - var blockTypes = []; - - // Define blocks and get block types. - if (format === 'JSON') { - var blockDefArray = FactoryUtils.parseJsonBlockDefinitions(blockDefsString); - - // Populate array of blocktypes and define each block. - for (var i = 0, blockDef; blockDef = blockDefArray[i]; i++) { - var json = JSON.parse(blockDef); - blockTypes.push(json.type); - - // Define the block. - Blockly.Blocks[json.type] = { - init: function() { - this.jsonInit(json); - } - }; - } - } else if (format === 'JavaScript') { - var blockDefArray = FactoryUtils.parseJsBlockDefinitions(blockDefsString); - - // Populate array of block types. - for (var i = 0, blockDef; blockDef = blockDefArray[i]; i++) { - var blockType = FactoryUtils.getBlockTypeFromJsDefinition(blockDef); - blockTypes.push(blockType); - } - - // Define all blocks. - eval(blockDefsString); - } - - return blockTypes; -}; - -/** - * Inject code into a pre tag, with syntax highlighting. - * Safe from HTML/script injection. - * @param {string} code Lines of code. - * @param {string} id ID of
 element to inject into.
- */
-FactoryUtils.injectCode = function(code, id) {
-  var pre = document.getElementById(id);
-  pre.textContent = code;
-  // Remove the 'prettyprinted' class, so that Prettify will recalculate.
-  pre.className = pre.className.replace('prettyprinted', '');
-  PR.prettyPrint();
-};
-
-/**
- * Returns whether or not two blocks are the same based on their XML. Expects
- * XML with a single child node that is a factory_base block, the XML found on
- * Block Factory's main workspace.
- * @param {!Element} blockXml1 An XML element with a single child node that
- *    is a factory_base block.
- * @param {!Element} blockXml2 An XML element with a single child node that
- *    is a factory_base block.
- * @return {boolean} Whether or not two blocks are the same based on their XML.
- */
-FactoryUtils.sameBlockXml = function(blockXml1, blockXml2) {
-  // Each XML element should contain a single child element with a 'block' tag
-  if (blockXml1.tagName.toLowerCase() !== 'xml' ||
-      blockXml2.tagName.toLowerCase() !== 'xml') {
-    throw Error('Expected two XML elements, received elements with tag ' +
-        'names: ' + blockXml1.tagName + ' and ' + blockXml2.tagName + '.');
-  }
-
-  // Compare the block elements directly. The XML tags may include other meta
-  // information we want to ignore.
-  var blockElement1 = blockXml1.getElementsByTagName('block')[0];
-  var blockElement2 = blockXml2.getElementsByTagName('block')[0];
-
-  if (!(blockElement1 && blockElement2)) {
-    throw Error('Could not get find block element in XML.');
-  }
-
-  var cleanBlockXml1 = FactoryUtils.cleanXml(blockElement1);
-  var cleanBlockXml2 = FactoryUtils.cleanXml(blockElement2);
-
-  var blockXmlText1 = Blockly.Xml.domToText(cleanBlockXml1);
-  var blockXmlText2 = Blockly.Xml.domToText(cleanBlockXml2);
-
-  // Strip white space.
-  blockXmlText1 = blockXmlText1.replace(/\s+/g, '');
-  blockXmlText2 = blockXmlText2.replace(/\s+/g, '');
-
-  // Return whether or not changes have been saved.
-  return blockXmlText1 === blockXmlText2;
-};
-
-/**
- * Strips the provided xml of any attributes that don't describe the
- * 'structure' of the blocks (i.e. block order, field values, etc).
- * @param {Node} xml The xml to clean.
- * @return {Node}
- */
-FactoryUtils.cleanXml = function(xml) {
-  var newXml = xml.cloneNode(true);
-  var node = newXml;
-  while (node) {
-    // Things like text inside tags are still treated as nodes, but they
-    // don't have attributes (or the removeAttribute function) so we can
-    // skip removing attributes from them.
-    if (node.removeAttribute) {
-      node.removeAttribute('xmlns');
-      node.removeAttribute('x');
-      node.removeAttribute('y');
-      node.removeAttribute('id');
-    }
-
-    // Try to go down the tree
-    var nextNode = node.firstChild || node.nextSibling;
-    // If we can't go down, try to go back up the tree.
-    if (!nextNode) {
-      nextNode = node.parentNode;
-      while (nextNode) {
-        // We are valid again!
-        if (nextNode.nextSibling) {
-          nextNode = nextNode.nextSibling;
-          break;
-        }
-        // Try going up again. If parentNode is null that means we have
-        // reached the top, and we will break out of both loops.
-        nextNode = nextNode.parentNode;
-      }
-    }
-    node = nextNode;
-  }
-  return newXml;
-};
-
-/**
- * Checks if a block has a variable field. Blocks with variable fields cannot
- * be shadow blocks.
- * @param {Blockly.Block} block The block to check if a variable field exists.
- * @return {boolean} True if the block has a variable field, false otherwise.
- */
-FactoryUtils.hasVariableField = function(block) {
-  if (!block) {
-    return false;
-  }
-  return block.getVars().length > 0;
-};
-
-/**
- * Checks if a block is a procedures block. If procedures block names are
- * ever updated or expanded, this function should be updated as well (no
- * other known markers for procedure blocks beyond name).
- * @param {Blockly.Block} block The block to check.
- * @return {boolean} True if the block is a procedure block, false otherwise.
- */
-FactoryUtils.isProcedureBlock = function(block) {
-  return block &&
-      (block.type === 'procedures_defnoreturn' ||
-      block.type === 'procedures_defreturn' ||
-      block.type === 'procedures_callnoreturn' ||
-      block.type === 'procedures_callreturn' ||
-      block.type === 'procedures_ifreturn');
-};
-
-/**
- * Returns whether or not a modified block's changes has been saved to the
- * Block Library.
- * TODO(quachtina96): move into the Block Factory Controller once made.
- * @param {!BlockLibraryController} blockLibraryController Block Library
- *    Controller storing custom blocks.
- * @return {boolean} True if all changes made to the block have been saved to
- *    the given Block Library.
- */
-FactoryUtils.savedBlockChanges = function(blockLibraryController) {
-  if (BlockFactory.isStarterBlock()) {
-    return true;
-  }
-  var blockType = blockLibraryController.getCurrentBlockType();
-  var currentXml = Blockly.Xml.workspaceToDom(BlockFactory.mainWorkspace);
-
-  if (blockLibraryController.has(blockType)) {
-    // Block is saved in block library.
-    var savedXml = blockLibraryController.getBlockXml(blockType);
-    return FactoryUtils.sameBlockXml(savedXml, currentXml);
-  }
-  return false;
-};
-
-/**
- * Given the root block of the factory, return the tooltip specified by the user
- * or the empty string if no tooltip is found.
- * @param {!Blockly.Block} rootBlock Factory_base block.
- * @return {string} The tooltip for the generated block, or the empty string.
- */
-FactoryUtils.getTooltipFromRootBlock_ = function(rootBlock) {
-  var tooltipBlock = rootBlock.getInputTargetBlock('TOOLTIP');
-  if (tooltipBlock && !tooltipBlock.disabled) {
-    return tooltipBlock.getFieldValue('TEXT');
-  }
-  return '';
-};
-
-/**
- * Given the root block of the factory, return the help url specified by the
- * user or the empty string if no tooltip is found.
- * @param {!Blockly.Block} rootBlock Factory_base block.
- * @return {string} The help url for the generated block, or the empty string.
- */
-FactoryUtils.getHelpUrlFromRootBlock_ = function(rootBlock) {
-  var helpUrlBlock = rootBlock.getInputTargetBlock('HELPURL');
-  if (helpUrlBlock && !helpUrlBlock.disabled) {
-    return helpUrlBlock.getFieldValue('TEXT');
-  }
-  return '';
-};
+/**
+ * @license
+ * Copyright 2016 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * @fileoverview FactoryUtils is a namespace that holds block starter code
+ * generation functions shared by the Block Factory, Workspace Factory, and
+ * Exporter applications within Blockly Factory. Holds functions to generate
+ * block definitions and generator stubs and to create and download files.
+ *
+ * (Juan Carlos Orozco)
+ */
+'use strict';
+
+/**
+ * Namespace for FactoryUtils.
+ */
+var FactoryUtils = FactoryUtils || Object.create(null);
+
+/**
+ * Get block definition code for the current block.
+ * @param {string} blockType Type of block.
+ * @param {!Blockly.Block} rootBlock RootBlock from main workspace in which
+ *    user uses Block Factory Blocks to create a custom block.
+ * @param {string} format 'JSON' or 'JavaScript'.
+ * @param {!Blockly.Workspace} workspace Where the root block lives.
+ * @return {string} Block definition.
+ */
+FactoryUtils.getBlockDefinition = function(blockType, rootBlock, format, workspace) {
+  blockType = FactoryUtils.cleanBlockType(blockType);
+  switch (format) {
+    case 'JSON':
+      var code = FactoryUtils.formatJson_(blockType, rootBlock);
+      break;
+    case 'JavaScript':
+      var code = FactoryUtils.formatJavaScript_(blockType, rootBlock, workspace);
+      break;
+  }
+  return code;
+};
+
+/**
+ * Convert invalid block name to a valid one. Replaces whitespace
+ * and prepend names that start with a digit with an '_'.
+ * @param {string} blockType Type of block.
+ * @return {string} Cleaned up block type.
+ */
+FactoryUtils.cleanBlockType = function(blockType) {
+  if (!blockType) {
+    return '';
+  }
+  return blockType.replace(/\W/g, '_').replace(/^(\d)/, '_$1');
+};
+
+/**
+ * Get the generator code for a given block.
+ * @param {!Blockly.Block} block Rendered block in preview workspace.
+ * @param {string} generatorLanguage 'JavaScript', 'Python', 'PHP', 'Lua',
+ *     or 'Dart'.
+ * @return {string} Generator code for multiple blocks.
+ */
+FactoryUtils.getGeneratorStub = function(block, generatorLanguage) {
+  // Build factory blocks from block
+  if (BlockFactory.updateBlocksFlag) {  // TODO: Move this to updatePreview()
+    BlockFactory.mainWorkspace.clear();
+    var xml = BlockDefinitionExtractor.buildBlockFactoryWorkspace(block);
+    Blockly.Xml.domToWorkspace(xml, BlockFactory.mainWorkspace);
+    // Calculate timer to avoid infinite update loops
+    // TODO(#1267): Remove the global variables and any infinite loops.
+    BlockFactory.updateBlocksFlag = false;
+    setTimeout(
+        function() {BlockFactory.updateBlocksFlagDelayed = false;}, 3000);
+  }
+  BlockFactory.lastUpdatedBlock = block; // Variable to share the block value.
+
+  function makeVar(root, name) {
+    name = name.toLowerCase().replace(/\W/g, '_');
+    return '  var ' + root + '_' + name;
+  }
+  // The makevar function lives in the original update generator.
+  var language = generatorLanguage;
+  var code = [];
+  code.push("Blockly." + language + "['" + block.type +
+            "'] = function(block) {");
+
+  // Generate getters for any fields or inputs.
+  for (var i = 0, input; input = block.inputList[i]; i++) {
+    for (var j = 0, field; field = input.fieldRow[j]; j++) {
+      var name = field.name;
+      if (!name) {
+        continue;
+      }
+      if (field instanceof Blockly.FieldVariable) {
+        // Subclass of Blockly.FieldDropdown, must test first.
+        code.push(makeVar('variable', name) +
+                  " = Blockly." + language +
+                  ".nameDB_.getName(block.getFieldValue('" + name +
+                  "'), Blockly.Variables.NAME_TYPE);");
+      } else if (field instanceof Blockly.FieldAngle) {
+        // Subclass of Blockly.FieldTextInput, must test first.
+        code.push(makeVar('angle', name) +
+                  " = block.getFieldValue('" + name + "');");
+      } else if (field instanceof Blockly.FieldColour) {
+        code.push(makeVar('colour', name) +
+                  " = block.getFieldValue('" + name + "');");
+      } else if (field instanceof Blockly.FieldCheckbox) {
+        code.push(makeVar('checkbox', name) +
+                  " = block.getFieldValue('" + name + "') === 'TRUE';");
+      } else if (field instanceof Blockly.FieldDropdown) {
+        code.push(makeVar('dropdown', name) +
+                  " = block.getFieldValue('" + name + "');");
+      } else if (field instanceof Blockly.FieldNumber) {
+        code.push(makeVar('number', name) +
+                  " = block.getFieldValue('" + name + "');");
+      } else if (field instanceof Blockly.FieldTextInput) {
+        code.push(makeVar('text', name) +
+                  " = block.getFieldValue('" + name + "');");
+      }
+    }
+    var name = input.name;
+    if (name) {
+      if (input.type === Blockly.INPUT_VALUE) {
+        code.push(makeVar('value', name) +
+                  " = Blockly." + language + ".valueToCode(block, '" + name +
+                  "', Blockly." + language + ".ORDER_ATOMIC);");
+      } else if (input.type === Blockly.NEXT_STATEMENT) {
+        code.push(makeVar('statements', name) +
+                  " = Blockly." + language + ".statementToCode(block, '" +
+                  name + "');");
+      }
+    }
+  }
+  // Most languages end lines with a semicolon.  Python & Lua do not.
+  var lineEnd = {
+    'JavaScript': ';',
+    'Python': '',
+    'PHP': ';',
+    'Lua': '',
+    'Dart': ';'
+  };
+  code.push("  // TODO: Assemble " + language + " into code variable.");
+  if (block.outputConnection) {
+    code.push("  var code = '...';");
+    code.push("  // TODO: Change ORDER_NONE to the correct strength.");
+    code.push("  return [code, Blockly." + language + ".ORDER_NONE];");
+  } else {
+    code.push("  var code = '..." + (lineEnd[language] || '') + "\\n';");
+    code.push("  return code;");
+  }
+  code.push("};");
+
+  return code.join('\n');
+};
+
+/**
+ * Update the language code as JSON.
+ * @param {string} blockType Name of block.
+ * @param {!Blockly.Block} rootBlock Factory_base block.
+ * @return {string} Generated language code.
+ * @private
+ */
+FactoryUtils.formatJson_ = function(blockType, rootBlock) {
+  var JS = {};
+  // Type is not used by Blockly, but may be used by a loader.
+  JS.type = blockType;
+  // Generate inputs.
+  var message = [];
+  var args = [];
+  var contentsBlock = rootBlock.getInputTargetBlock('INPUTS');
+  var lastInput = null;
+  while (contentsBlock) {
+    if (!contentsBlock.disabled && !contentsBlock.getInheritedDisabled()) {
+      var fields = FactoryUtils.getFieldsJson_(
+          contentsBlock.getInputTargetBlock('FIELDS'));
+      for (var i = 0; i < fields.length; i++) {
+        if (typeof fields[i] === 'string') {
+          message.push(fields[i].replace(/%/g, '%%'));
+        } else {
+          args.push(fields[i]);
+          message.push('%' + args.length);
+        }
+      }
+
+      var input = {type: contentsBlock.type};
+      // Dummy inputs don't have names.  Other inputs do.
+      if (contentsBlock.type !== 'input_dummy') {
+        input.name = contentsBlock.getFieldValue('INPUTNAME');
+      }
+      var check = JSON.parse(
+          FactoryUtils.getOptTypesFrom(contentsBlock, 'TYPE') || 'null');
+      if (check) {
+        input.check = check;
+      }
+      var align = contentsBlock.getFieldValue('ALIGN');
+      if (align !== 'LEFT') {
+        input.align = align;
+      }
+      args.push(input);
+      message.push('%' + args.length);
+      lastInput = contentsBlock;
+    }
+    contentsBlock = contentsBlock.nextConnection &&
+        contentsBlock.nextConnection.targetBlock();
+  }
+  // Remove last input if dummy and not empty.
+  if (lastInput && lastInput.type === 'input_dummy') {
+    var fields = lastInput.getInputTargetBlock('FIELDS');
+    if (fields && FactoryUtils.getFieldsJson_(fields).join('').trim() !== '') {
+      var align = lastInput.getFieldValue('ALIGN');
+      if (align !== 'LEFT') {
+        JS.lastDummyAlign0 = align;
+      }
+      args.pop();
+      message.pop();
+    }
+  }
+  JS.message0 = message.join(' ');
+  if (args.length) {
+    JS.args0 = args;
+  }
+  // Generate inline/external switch.
+  if (rootBlock.getFieldValue('INLINE') === 'EXT') {
+    JS.inputsInline = false;
+  } else if (rootBlock.getFieldValue('INLINE') === 'INT') {
+    JS.inputsInline = true;
+  }
+  // Generate output, or next/previous connections.
+  switch (rootBlock.getFieldValue('CONNECTIONS')) {
+    case 'LEFT':
+      JS.output =
+          JSON.parse(
+              FactoryUtils.getOptTypesFrom(rootBlock, 'OUTPUTTYPE') || 'null');
+      break;
+    case 'BOTH':
+      JS.previousStatement =
+          JSON.parse(
+              FactoryUtils.getOptTypesFrom(rootBlock, 'TOPTYPE') || 'null');
+      JS.nextStatement =
+          JSON.parse(
+              FactoryUtils.getOptTypesFrom(rootBlock, 'BOTTOMTYPE') || 'null');
+      break;
+    case 'TOP':
+      JS.previousStatement =
+          JSON.parse(
+              FactoryUtils.getOptTypesFrom(rootBlock, 'TOPTYPE') || 'null');
+      break;
+    case 'BOTTOM':
+      JS.nextStatement =
+          JSON.parse(
+              FactoryUtils.getOptTypesFrom(rootBlock, 'BOTTOMTYPE') || 'null');
+      break;
+  }
+  // Generate colour.
+  var colourBlock = rootBlock.getInputTargetBlock('COLOUR');
+  if (colourBlock && !colourBlock.disabled) {
+    var hue = parseInt(colourBlock.getFieldValue('HUE'), 10);
+    JS.colour = hue;
+  }
+
+  JS.tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock);
+  JS.helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock);
+
+  return JSON.stringify(JS, null, '  ');
+};
+
+/**
+ * Update the language code as JavaScript.
+ * @param {string} blockType Name of block.
+ * @param {!Blockly.Block} rootBlock Factory_base block.
+ * @param {!Blockly.Workspace} workspace Where the root block lives.
+ * @return {string} Generated language code.
+ * @private
+ */
+FactoryUtils.formatJavaScript_ = function(blockType, rootBlock, workspace) {
+  var code = [];
+  code.push("Blockly.Blocks['" + blockType + "'] = {");
+  code.push("  init: function() {");
+  // Generate inputs.
+  var TYPES = {'input_value': 'appendValueInput',
+               'input_statement': 'appendStatementInput',
+               'input_dummy': 'appendDummyInput'};
+  var contentsBlock = rootBlock.getInputTargetBlock('INPUTS');
+  while (contentsBlock) {
+    if (!contentsBlock.disabled && !contentsBlock.getInheritedDisabled()) {
+      var name = '';
+      // Dummy inputs don't have names.  Other inputs do.
+      if (contentsBlock.type !== 'input_dummy') {
+        name =
+            JSON.stringify(contentsBlock.getFieldValue('INPUTNAME'));
+      }
+      code.push('    this.' + TYPES[contentsBlock.type] + '(' + name + ')');
+      var check = FactoryUtils.getOptTypesFrom(contentsBlock, 'TYPE');
+      if (check) {
+        code.push('        .setCheck(' + check + ')');
+      }
+      var align = contentsBlock.getFieldValue('ALIGN');
+      if (align !== 'LEFT') {
+        code.push('        .setAlign(Blockly.ALIGN_' + align + ')');
+      }
+      var fields = FactoryUtils.getFieldsJs_(
+          contentsBlock.getInputTargetBlock('FIELDS'));
+      for (var i = 0; i < fields.length; i++) {
+        code.push('        .appendField(' + fields[i] + ')');
+      }
+      // Add semicolon to last line to finish the statement.
+      code[code.length - 1] += ';';
+    }
+    contentsBlock = contentsBlock.nextConnection &&
+        contentsBlock.nextConnection.targetBlock();
+  }
+  // Generate inline/external switch.
+  if (rootBlock.getFieldValue('INLINE') === 'EXT') {
+    code.push('    this.setInputsInline(false);');
+  } else if (rootBlock.getFieldValue('INLINE') === 'INT') {
+    code.push('    this.setInputsInline(true);');
+  }
+  // Generate output, or next/previous connections.
+  switch (rootBlock.getFieldValue('CONNECTIONS')) {
+    case 'LEFT':
+      code.push(FactoryUtils.connectionLineJs_('setOutput', 'OUTPUTTYPE', workspace));
+      break;
+    case 'BOTH':
+      code.push(
+          FactoryUtils.connectionLineJs_('setPreviousStatement', 'TOPTYPE', workspace));
+      code.push(
+          FactoryUtils.connectionLineJs_('setNextStatement', 'BOTTOMTYPE', workspace));
+      break;
+    case 'TOP':
+      code.push(
+          FactoryUtils.connectionLineJs_('setPreviousStatement', 'TOPTYPE', workspace));
+      break;
+    case 'BOTTOM':
+      code.push(
+          FactoryUtils.connectionLineJs_('setNextStatement', 'BOTTOMTYPE', workspace));
+      break;
+  }
+  // Generate colour.
+  var colourBlock = rootBlock.getInputTargetBlock('COLOUR');
+  if (colourBlock && !colourBlock.disabled) {
+    var hue = parseInt(colourBlock.getFieldValue('HUE'), 10);
+    if (!isNaN(hue)) {
+      code.push('    this.setColour(' + hue + ');');
+    }
+  }
+
+  var tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock);
+  var helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock);
+  code.push(' this.setTooltip(' + JSON.stringify(tooltip) + ');');
+  code.push(' this.setHelpUrl(' + JSON.stringify(helpUrl) + ');');
+  code.push('  }');
+  code.push('};');
+  return code.join('\n');
+};
+
+/**
+ * Create JS code required to create a top, bottom, or value connection.
+ * @param {string} functionName JavaScript function name.
+ * @param {string} typeName Name of type input.
+ * @param {!Blockly.Workspace} workspace Where the root block lives.
+ * @return {string} Line of JavaScript code to create connection.
+ * @private
+ */
+FactoryUtils.connectionLineJs_ = function(functionName, typeName, workspace) {
+  var type = FactoryUtils.getOptTypesFrom(
+      FactoryUtils.getRootBlock(workspace), typeName);
+  if (type) {
+    type = ', ' + type;
+  } else {
+    type = '';
+  }
+  return '    this.' + functionName + '(true' + type + ');';
+};
+
+/**
+ * Returns field strings and any config.
+ * @param {!Blockly.Block} block Input block.
+ * @return {!Array} Field strings.
+ * @private
+ */
+FactoryUtils.getFieldsJs_ = function(block) {
+  var fields = [];
+  while (block) {
+    if (!block.disabled && !block.getInheritedDisabled()) {
+      switch (block.type) {
+        case 'field_static':
+          // Result: 'hello'
+          fields.push(JSON.stringify(block.getFieldValue('TEXT')));
+          break;
+        case 'field_label_serializable':
+          // Result: new Blockly.FieldLabelSerializable('Hello'), 'GREET'
+          fields.push('new Blockly.FieldLabelSerializable(' +
+              JSON.stringify(block.getFieldValue('TEXT')) + '), ' +
+              JSON.stringify(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_input':
+          // Result: new Blockly.FieldTextInput('Hello'), 'GREET'
+          fields.push('new Blockly.FieldTextInput(' +
+              JSON.stringify(block.getFieldValue('TEXT')) + '), ' +
+              JSON.stringify(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_number':
+          // Result: new Blockly.FieldNumber(10, 0, 100, 1), 'NUMBER'
+          var args = [
+            Number(block.getFieldValue('VALUE')),
+            Number(block.getFieldValue('MIN')),
+            Number(block.getFieldValue('MAX')),
+            Number(block.getFieldValue('PRECISION'))
+          ];
+          // Remove any trailing arguments that aren't needed.
+          if (args[3] === 0) {
+            args.pop();
+            if (args[2] === Infinity) {
+              args.pop();
+              if (args[1] === -Infinity) {
+                args.pop();
+              }
+            }
+          }
+          fields.push('new Blockly.FieldNumber(' + args.join(', ') + '), ' +
+              JSON.stringify(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_angle':
+          // Result: new Blockly.FieldAngle(90), 'ANGLE'
+          fields.push('new Blockly.FieldAngle(' +
+              Number(block.getFieldValue('ANGLE')) + '), ' +
+              JSON.stringify(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_checkbox':
+          // Result: new Blockly.FieldCheckbox('TRUE'), 'CHECK'
+          fields.push('new Blockly.FieldCheckbox(' +
+              JSON.stringify(block.getFieldValue('CHECKED')) +
+               '), ' +
+              JSON.stringify(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_colour':
+          // Result: new Blockly.FieldColour('#ff0000'), 'COLOUR'
+          fields.push('new Blockly.FieldColour(' +
+              JSON.stringify(block.getFieldValue('COLOUR')) +
+              '), ' +
+              JSON.stringify(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_variable':
+          // Result: new Blockly.FieldVariable('item'), 'VAR'
+          var varname
+              = JSON.stringify(block.getFieldValue('TEXT') || null);
+          fields.push('new Blockly.FieldVariable(' + varname + '), ' +
+              JSON.stringify(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_dropdown':
+          // Result:
+          // new Blockly.FieldDropdown([['yes', '1'], ['no', '0']]), 'TOGGLE'
+          var options = [];
+          for (var i = 0; i < block.optionList_.length; i++) {
+            options[i] = JSON.stringify([block.getUserData(i),
+                                         block.getFieldValue('CPU' + i)]);
+          }
+          if (options.length) {
+            fields.push('new Blockly.FieldDropdown([' +
+                options.join(', ') + ']), ' +
+                JSON.stringify(block.getFieldValue('FIELDNAME')));
+          }
+          break;
+        case 'field_image':
+          // Result: new Blockly.FieldImage('http://...', 80, 60, '*')
+          var src = JSON.stringify(block.getFieldValue('SRC'));
+          var width = Number(block.getFieldValue('WIDTH'));
+          var height = Number(block.getFieldValue('HEIGHT'));
+          var alt = JSON.stringify(block.getFieldValue('ALT'));
+          var flipRtl = JSON.stringify(block.getFieldValue('FLIP_RTL'));
+          fields.push('new Blockly.FieldImage(' +
+              src + ', ' + width + ', ' + height +
+              ', { alt: ' + alt + ', flipRtl: ' + flipRtl + ' })');
+          break;
+      }
+    }
+    block = block.nextConnection && block.nextConnection.targetBlock();
+  }
+  return fields;
+};
+
+/**
+ * Returns field strings and any config.
+ * @param {!Blockly.Block} block Input block.
+ * @return {!Array} Array of static text and field configs.
+ * @private
+ */
+FactoryUtils.getFieldsJson_ = function(block) {
+  var fields = [];
+  while (block) {
+    if (!block.disabled && !block.getInheritedDisabled()) {
+      switch (block.type) {
+        case 'field_static':
+          // Result: 'hello'
+          fields.push(block.getFieldValue('TEXT'));
+          break;
+        case 'field_label_serializable':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            text: block.getFieldValue('TEXT')
+          });
+          break;
+        case 'field_input':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            text: block.getFieldValue('TEXT')
+          });
+          break;
+        case 'field_number':
+          var obj = {
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            value: Number(block.getFieldValue('VALUE'))
+          };
+          var min = Number(block.getFieldValue('MIN'));
+          if (min > -Infinity) {
+            obj.min = min;
+          }
+          var max = Number(block.getFieldValue('MAX'));
+          if (max < Infinity) {
+            obj.max = max;
+          }
+          var precision = Number(block.getFieldValue('PRECISION'));
+          if (precision) {
+            obj.precision = precision;
+          }
+          fields.push(obj);
+          break;
+        case 'field_angle':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            angle: Number(block.getFieldValue('ANGLE'))
+          });
+          break;
+        case 'field_checkbox':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            checked: block.getFieldValue('CHECKED') === 'TRUE'
+          });
+          break;
+        case 'field_colour':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            colour: block.getFieldValue('COLOUR')
+          });
+          break;
+        case 'field_variable':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            variable: block.getFieldValue('TEXT') || null
+          });
+          break;
+        case 'field_dropdown':
+          var options = [];
+          for (var i = 0; i < block.optionList_.length; i++) {
+            options[i] = [block.getUserData(i),
+                block.getFieldValue('CPU' + i)];
+          }
+          if (options.length) {
+            fields.push({
+              type: block.type,
+              name: block.getFieldValue('FIELDNAME'),
+              options: options
+            });
+          }
+          break;
+        case 'field_image':
+          fields.push({
+            type: block.type,
+            src: block.getFieldValue('SRC'),
+            width: Number(block.getFieldValue('WIDTH')),
+            height: Number(block.getFieldValue('HEIGHT')),
+            alt: block.getFieldValue('ALT'),
+            flipRtl: block.getFieldValue('FLIP_RTL') === 'TRUE'
+          });
+          break;
+      }
+    }
+    block = block.nextConnection && block.nextConnection.targetBlock();
+  }
+  return fields;
+};
+
+/**
+ * Fetch the type(s) defined in the given input.
+ * Format as a string for appending to the generated code.
+ * @param {!Blockly.Block} block Block with input.
+ * @param {string} name Name of the input.
+ * @return {?string} String defining the types.
+ */
+FactoryUtils.getOptTypesFrom = function(block, name) {
+  var types = FactoryUtils.getTypesFrom_(block, name);
+  if (types.length === 0) {
+    return undefined;
+  } else if (types.indexOf('null') !== -1) {
+    return 'null';
+  } else if (types.length === 1) {
+    return types[0];
+  } else {
+    return '[' + types.join(', ') + ']';
+  }
+};
+
+
+/**
+ * Fetch the type(s) defined in the given input.
+ * @param {!Blockly.Block} block Block with input.
+ * @param {string} name Name of the input.
+ * @return {!Array} List of types.
+ * @private
+ */
+FactoryUtils.getTypesFrom_ = function(block, name) {
+  var typeBlock = block.getInputTargetBlock(name);
+  var types;
+  if (!typeBlock || typeBlock.disabled) {
+    types = [];
+  } else if (typeBlock.type === 'type_other') {
+    types = [JSON.stringify(typeBlock.getFieldValue('TYPE'))];
+  } else if (typeBlock.type === 'type_group') {
+    types = [];
+    for (var n = 0; n < typeBlock.typeCount_; n++) {
+      types = types.concat(FactoryUtils.getTypesFrom_(typeBlock, 'TYPE' + n));
+    }
+    // Remove duplicates.
+    var hash = Object.create(null);
+    for (var n = types.length - 1; n >= 0; n--) {
+      if (hash[types[n]]) {
+        types.splice(n, 1);
+      }
+      hash[types[n]] = true;
+    }
+  } else {
+    types = [JSON.stringify(typeBlock.valueType)];
+  }
+  return types;
+};
+
+/**
+ * Return the uneditable container block that everything else attaches to in
+ * given workspace.
+ * @param {!Blockly.Workspace} workspace Where the root block lives.
+ * @return {Blockly.Block} Root block.
+ */
+FactoryUtils.getRootBlock = function(workspace) {
+  var blocks = workspace.getTopBlocks(false);
+  for (var i = 0, block; block = blocks[i]; i++) {
+    if (block.type === 'factory_base') {
+      return block;
+    }
+  }
+  return null;
+};
+
+// TODO(quachtina96): Move hide, show, makeInvisible, and makeVisible to a new
+// AppView namespace.
+
+/**
+ * Hides element so that it's invisible and doesn't take up space.
+ * @param {string} elementID ID of element to hide.
+ */
+FactoryUtils.hide = function(elementID) {
+  document.getElementById(elementID).style.display = 'none';
+};
+
+/**
+ * Un-hides an element.
+ * @param {string} elementID ID of element to hide.
+ */
+FactoryUtils.show = function(elementID) {
+  document.getElementById(elementID).style.display = 'block';
+};
+
+/**
+ * Hides element so that it's invisible but still takes up space.
+ * @param {string} elementID ID of element to hide.
+ */
+FactoryUtils.makeInvisible = function(elementID) {
+  document.getElementById(elementID).visibility = 'hidden';
+};
+
+/**
+ * Makes element visible.
+ * @param {string} elementID ID of element to hide.
+ */
+FactoryUtils.makeVisible = function(elementID) {
+  document.getElementById(elementID).visibility = 'visible';
+};
+
+/**
+ * Create a file with the given attributes and download it.
+ * @param {string} contents The contents of the file.
+ * @param {string} filename The name of the file to save to.
+ * @param {string} fileType The type of the file to save.
+ */
+FactoryUtils.createAndDownloadFile = function(contents, filename, fileType) {
+  var data = new Blob([contents], {type: 'text/' + fileType});
+  var clickEvent = new MouseEvent("click", {
+    "view": window,
+    "bubbles": true,
+    "cancelable": false
+  });
+
+  var a = document.createElement('a');
+  a.href = window.URL.createObjectURL(data);
+  a.download = filename;
+  a.textContent = 'Download file!';
+  a.dispatchEvent(clickEvent);
+};
+
+/**
+ * Get Blockly Block by rendering pre-defined block in workspace.
+ * @param {!Element} blockType Type of block that has already been defined.
+ * @param {!Blockly.Workspace} workspace Workspace on which to render
+ *    the block.
+ * @return {!Blockly.Block} The Blockly.Block of desired type.
+ */
+FactoryUtils.getDefinedBlock = function(blockType, workspace) {
+  workspace.clear();
+  return workspace.newBlock(blockType);
+};
+
+/**
+ * Parses a block definition get the type of the block it defines.
+ * @param {string} blockDef A single block definition.
+ * @return {string} Type of block defined by the given definition.
+ */
+FactoryUtils.getBlockTypeFromJsDefinition = function(blockDef) {
+  var indexOfStartBracket = blockDef.indexOf('[\'');
+  var indexOfEndBracket = blockDef.indexOf('\']');
+  if (indexOfStartBracket !== -1 && indexOfEndBracket !== -1) {
+    return blockDef.substring(indexOfStartBracket + 2, indexOfEndBracket);
+  } else {
+    throw Error('Could not parse block type out of JavaScript block ' +
+        'definition. Brackets normally enclosing block type not found.');
+  }
+};
+
+/**
+ * Generates a category containing blocks of the specified block types.
+ * @param {!Array} blocks Blocks to include in the category.
+ * @param {string} categoryName Name to use for the generated category.
+ * @return {!Element} Category XML containing the given block types.
+ */
+FactoryUtils.generateCategoryXml = function(blocks, categoryName) {
+  // Create category DOM element.
+  var categoryElement = Blockly.utils.xml.createElement('category');
+  categoryElement.setAttribute('name', categoryName);
+
+  // For each block, add block element to category.
+  for (var i = 0, block; block = blocks[i]; i++) {
+
+    // Get preview block XML.
+    var blockXml = Blockly.Xml.blockToDom(block);
+    blockXml.removeAttribute('id');
+
+    // Add block to category and category to XML.
+    categoryElement.appendChild(blockXml);
+  }
+  return categoryElement;
+};
+
+/**
+ * Parses a string containing JavaScript block definition(s) to create an array
+ * in which each element is a single block definition.
+ * @param {string} blockDefsString JavaScript block definition(s).
+ * @return {!Array} Array of block definitions.
+ */
+FactoryUtils.parseJsBlockDefinitions = function(blockDefsString) {
+  var blockDefArray = [];
+  var defStart = blockDefsString.indexOf('Blockly.Blocks');
+
+  while (blockDefsString.indexOf('Blockly.Blocks', defStart) !== -1) {
+    var nextStart = blockDefsString.indexOf('Blockly.Blocks', defStart + 1);
+    if (nextStart === -1) {
+      // This is the last block definition.
+      nextStart = blockDefsString.length;
+    }
+    var blockDef = blockDefsString.substring(defStart, nextStart);
+    blockDefArray.push(blockDef);
+    defStart = nextStart;
+  }
+  return blockDefArray;
+};
+
+/**
+ * Parses a string containing JSON block definition(s) to create an array
+ * in which each element is a single block definition. Expected input is
+ * one or more block definitions in the form of concatenated, stringified
+ * JSON objects.
+ * @param {string} blockDefsString String containing JSON block
+ *    definition(s).
+ * @return {!Array} Array of block definitions.
+ */
+FactoryUtils.parseJsonBlockDefinitions = function(blockDefsString) {
+  var blockDefArray = [];
+  var unbalancedBracketCount = 0;
+  var defStart = 0;
+  // Iterate through the blockDefs string. Keep track of whether brackets
+  // are balanced.
+  for (var i = 0; i < blockDefsString.length; i++) {
+    var currentChar = blockDefsString[i];
+    if (currentChar === '{') {
+      unbalancedBracketCount++;
+    }
+    else if (currentChar === '}') {
+      unbalancedBracketCount--;
+      if (unbalancedBracketCount === 0 && i > 0) {
+        // The brackets are balanced. We've got a complete block definition.
+        var blockDef = blockDefsString.substring(defStart, i + 1);
+        blockDefArray.push(blockDef);
+        defStart = i + 1;
+      }
+    }
+  }
+  return blockDefArray;
+};
+
+/**
+ * Define blocks from imported block definitions.
+ * @param {string} blockDefsString Block definition(s).
+ * @param {string} format Block definition format ('JSON' or 'JavaScript').
+ * @return {!Array} Array of block types defined.
+ */
+FactoryUtils.defineAndGetBlockTypes = function(blockDefsString, format) {
+  var blockTypes = [];
+
+  // Define blocks and get block types.
+  if (format === 'JSON') {
+    var blockDefArray = FactoryUtils.parseJsonBlockDefinitions(blockDefsString);
+
+    // Populate array of blocktypes and define each block.
+    for (var i = 0, blockDef; blockDef = blockDefArray[i]; i++) {
+      var json = JSON.parse(blockDef);
+      blockTypes.push(json.type);
+
+      // Define the block.
+      Blockly.Blocks[json.type] = {
+        init: function() {
+          this.jsonInit(json);
+        }
+      };
+    }
+  } else if (format === 'JavaScript') {
+    var blockDefArray = FactoryUtils.parseJsBlockDefinitions(blockDefsString);
+
+    // Populate array of block types.
+    for (var i = 0, blockDef; blockDef = blockDefArray[i]; i++) {
+      var blockType = FactoryUtils.getBlockTypeFromJsDefinition(blockDef);
+      blockTypes.push(blockType);
+    }
+
+    // Define all blocks.
+    eval(blockDefsString);
+  }
+
+  return blockTypes;
+};
+
+/**
+ * Inject code into a pre tag, with syntax highlighting.
+ * Safe from HTML/script injection.
+ * @param {string} code Lines of code.
+ * @param {string} id ID of 
 element to inject into.
+ */
+FactoryUtils.injectCode = function(code, id) {
+  var pre = document.getElementById(id);
+  pre.textContent = code;
+  // Remove the 'prettyprinted' class, so that Prettify will recalculate.
+  pre.className = pre.className.replace('prettyprinted', '');
+  PR.prettyPrint();
+};
+
+/**
+ * Returns whether or not two blocks are the same based on their XML. Expects
+ * XML with a single child node that is a factory_base block, the XML found on
+ * Block Factory's main workspace.
+ * @param {!Element} blockXml1 An XML element with a single child node that
+ *    is a factory_base block.
+ * @param {!Element} blockXml2 An XML element with a single child node that
+ *    is a factory_base block.
+ * @return {boolean} Whether or not two blocks are the same based on their XML.
+ */
+FactoryUtils.sameBlockXml = function(blockXml1, blockXml2) {
+  // Each XML element should contain a single child element with a 'block' tag
+  if (blockXml1.tagName.toLowerCase() !== 'xml' ||
+      blockXml2.tagName.toLowerCase() !== 'xml') {
+    throw Error('Expected two XML elements, received elements with tag ' +
+        'names: ' + blockXml1.tagName + ' and ' + blockXml2.tagName + '.');
+  }
+
+  // Compare the block elements directly. The XML tags may include other meta
+  // information we want to ignore.
+  var blockElement1 = blockXml1.getElementsByTagName('block')[0];
+  var blockElement2 = blockXml2.getElementsByTagName('block')[0];
+
+  if (!(blockElement1 && blockElement2)) {
+    throw Error('Could not get find block element in XML.');
+  }
+
+  var cleanBlockXml1 = FactoryUtils.cleanXml(blockElement1);
+  var cleanBlockXml2 = FactoryUtils.cleanXml(blockElement2);
+
+  var blockXmlText1 = Blockly.Xml.domToText(cleanBlockXml1);
+  var blockXmlText2 = Blockly.Xml.domToText(cleanBlockXml2);
+
+  // Strip white space.
+  blockXmlText1 = blockXmlText1.replace(/\s+/g, '');
+  blockXmlText2 = blockXmlText2.replace(/\s+/g, '');
+
+  // Return whether or not changes have been saved.
+  return blockXmlText1 === blockXmlText2;
+};
+
+/**
+ * Strips the provided xml of any attributes that don't describe the
+ * 'structure' of the blocks (i.e. block order, field values, etc).
+ * @param {Node} xml The xml to clean.
+ * @return {Node}
+ */
+FactoryUtils.cleanXml = function(xml) {
+  var newXml = xml.cloneNode(true);
+  var node = newXml;
+  while (node) {
+    // Things like text inside tags are still treated as nodes, but they
+    // don't have attributes (or the removeAttribute function) so we can
+    // skip removing attributes from them.
+    if (node.removeAttribute) {
+      node.removeAttribute('xmlns');
+      node.removeAttribute('x');
+      node.removeAttribute('y');
+      node.removeAttribute('id');
+    }
+
+    // Try to go down the tree
+    var nextNode = node.firstChild || node.nextSibling;
+    // If we can't go down, try to go back up the tree.
+    if (!nextNode) {
+      nextNode = node.parentNode;
+      while (nextNode) {
+        // We are valid again!
+        if (nextNode.nextSibling) {
+          nextNode = nextNode.nextSibling;
+          break;
+        }
+        // Try going up again. If parentNode is null that means we have
+        // reached the top, and we will break out of both loops.
+        nextNode = nextNode.parentNode;
+      }
+    }
+    node = nextNode;
+  }
+  return newXml;
+};
+
+/**
+ * Checks if a block has a variable field. Blocks with variable fields cannot
+ * be shadow blocks.
+ * @param {Blockly.Block} block The block to check if a variable field exists.
+ * @return {boolean} True if the block has a variable field, false otherwise.
+ */
+FactoryUtils.hasVariableField = function(block) {
+  if (!block) {
+    return false;
+  }
+  return block.getVars().length > 0;
+};
+
+/**
+ * Checks if a block is a procedures block. If procedures block names are
+ * ever updated or expanded, this function should be updated as well (no
+ * other known markers for procedure blocks beyond name).
+ * @param {Blockly.Block} block The block to check.
+ * @return {boolean} True if the block is a procedure block, false otherwise.
+ */
+FactoryUtils.isProcedureBlock = function(block) {
+  return block &&
+      (block.type === 'procedures_defnoreturn' ||
+      block.type === 'procedures_defreturn' ||
+      block.type === 'procedures_callnoreturn' ||
+      block.type === 'procedures_callreturn' ||
+      block.type === 'procedures_ifreturn');
+};
+
+/**
+ * Returns whether or not a modified block's changes has been saved to the
+ * Block Library.
+ * TODO(quachtina96): move into the Block Factory Controller once made.
+ * @param {!BlockLibraryController} blockLibraryController Block Library
+ *    Controller storing custom blocks.
+ * @return {boolean} True if all changes made to the block have been saved to
+ *    the given Block Library.
+ */
+FactoryUtils.savedBlockChanges = function(blockLibraryController) {
+  if (BlockFactory.isStarterBlock()) {
+    return true;
+  }
+  var blockType = blockLibraryController.getCurrentBlockType();
+  var currentXml = Blockly.Xml.workspaceToDom(BlockFactory.mainWorkspace);
+
+  if (blockLibraryController.has(blockType)) {
+    // Block is saved in block library.
+    var savedXml = blockLibraryController.getBlockXml(blockType);
+    return FactoryUtils.sameBlockXml(savedXml, currentXml);
+  }
+  return false;
+};
+
+/**
+ * Given the root block of the factory, return the tooltip specified by the user
+ * or the empty string if no tooltip is found.
+ * @param {!Blockly.Block} rootBlock Factory_base block.
+ * @return {string} The tooltip for the generated block, or the empty string.
+ */
+FactoryUtils.getTooltipFromRootBlock_ = function(rootBlock) {
+  var tooltipBlock = rootBlock.getInputTargetBlock('TOOLTIP');
+  if (tooltipBlock && !tooltipBlock.disabled) {
+    return tooltipBlock.getFieldValue('TEXT');
+  }
+  return '';
+};
+
+/**
+ * Given the root block of the factory, return the help url specified by the
+ * user or the empty string if no tooltip is found.
+ * @param {!Blockly.Block} rootBlock Factory_base block.
+ * @return {string} The help url for the generated block, or the empty string.
+ */
+FactoryUtils.getHelpUrlFromRootBlock_ = function(rootBlock) {
+  var helpUrlBlock = rootBlock.getInputTargetBlock('HELPURL');
+  if (helpUrlBlock && !helpUrlBlock.disabled) {
+    return helpUrlBlock.getFieldValue('TEXT');
+  }
+  return '';
+};
diff --git a/demos/blockfactory/index.html b/demos/blockfactory/index.html
index adecaeebc5f..53cb74d4783 100644
--- a/demos/blockfactory/index.html
+++ b/demos/blockfactory/index.html
@@ -1,760 +1,760 @@
-
-
-
-  
-  
-  Blockly Demo: Blockly Developer Tools
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-
-
-  

Blockly > - Demos > Blockly Developer Tools - - -

-
-
Block Factory
-
Block Exporter
-
Workspace Factory
-
- - -
-
-

- First, select blocks from your block library by clicking on them. Then, use the Export Settings form to download starter code for selected blocks. -

-
-
-

Block Selector

- - -
-
- - -
-
-

Export Settings

-
- -
-

Currently Selected:

-

-
-
-
- -
- -
-
- -
-
- -
-
-
-
-
- -
-
-
-

Export Preview

-
-

Block Definitions:

-

-      
-
-

Generator Stubs:

-

-      
-
-
- - - -
-
-

-

- - - - - - -

-
- -
-
-

Edit

-

Drag blocks into the workspace to configure the toolbox in your custom workspace.

-
- - - - - -
ToolboxWorkspace
-
-
-
- - - - - - - -
- - -
- - - - - - - - - - - -
- - - - - -
- - - - - - - -
-
- - - - - -
-

Preview: - -

-
- - - - - -
-
-
-
-
- - - - - - - - - - - - - - - - -
-
-
-

Block Definition: - - -

-
-

-              
-            
-

Generator stub: - -

-
-

-            
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 20 - 65 - 120 - 160 - 210 - 230 - 260 - 290 - 330 - - - - - - - - - - - - - - - - - - 10 - - - - - - - - 1 - - - - - 10 - - - - - 1 - - - - - - - - - - - - 1 - - - - - 1 - - - - - - - 9 - - - - - - - 45 - - - - - - - - 0 - - - - - - - 3.1 - - - - - - - - 64 - - - - - 10 - - - - - - - 50 - - - - - 1 - - - - - 100 - - - - - - - 1 - - - - - 100 - - - - - - - - - - - - - - - - - abc - - - - - - - - - - - - - - text - - - - - abc - - - - - - - text - - - - - - - text - - - - - - - abc - - - - - - - abc - - - - - - - abc - - - - - - - abc - - - - - - - - - - - - - 5 - - - - - - - - - list - - - - - - - list - - - - - - - list - - - - - - - list - - - - - - - , - - - - - - - - - - - - 100 - - - - - 50 - - - - - 0 - - - - - - - #ff0000 - - - - - #3333ff - - - - - 0.5 - - - - - - - - - - - - - + + + + + + Blockly Demo: Blockly Developer Tools + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Blockly > + Demos > Blockly Developer Tools + + +

+
+
Block Factory
+
Block Exporter
+
Workspace Factory
+
+ + +
+
+

+ First, select blocks from your block library by clicking on them. Then, use the Export Settings form to download starter code for selected blocks. +

+
+
+

Block Selector

+ + +
+
+ + +
+
+

Export Settings

+
+ +
+

Currently Selected:

+

+
+
+
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+ +
+
+
+

Export Preview

+
+

Block Definitions:

+

+      
+
+

Generator Stubs:

+

+      
+
+
+ + + +
+
+

+

+ + + + + + +

+
+ +
+
+

Edit

+

Drag blocks into the workspace to configure the toolbox in your custom workspace.

+
+ + + + + +
ToolboxWorkspace
+
+
+
+ + + + + + + +
+ + +
+ + + + + + + + + + + +
+ + + + + +
+ + + + + + + +
+
+ + + + + +
+

Preview: + +

+
+ + + + + +
+
+
+
+
+ + + + + + + + + + + + + + + + +
+
+
+

Block Definition: + + +

+
+

+              
+            
+

Generator stub: + +

+
+

+            
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 20 + 65 + 120 + 160 + 210 + 230 + 260 + 290 + 330 + + + + + + + + + + + + + + + + + + 10 + + + + + + + + 1 + + + + + 10 + + + + + 1 + + + + + + + + + + + + 1 + + + + + 1 + + + + + + + 9 + + + + + + + 45 + + + + + + + + 0 + + + + + + + 3.1 + + + + + + + + 64 + + + + + 10 + + + + + + + 50 + + + + + 1 + + + + + 100 + + + + + + + 1 + + + + + 100 + + + + + + + + + + + + + + + + + abc + + + + + + + + + + + + + + text + + + + + abc + + + + + + + text + + + + + + + text + + + + + + + abc + + + + + + + abc + + + + + + + abc + + + + + + + abc + + + + + + + + + + + + + 5 + + + + + + + + + list + + + + + + + list + + + + + + + list + + + + + + + list + + + + + + + , + + + + + + + + + + + + 100 + + + + + 50 + + + + + 0 + + + + + + + #ff0000 + + + + + #3333ff + + + + + 0.5 + + + + + + + + + + + + + diff --git a/demos/blockfactory/standard_categories.js b/demos/blockfactory/standard_categories.js index 45ee7e24b26..955fc1d6286 100644 --- a/demos/blockfactory/standard_categories.js +++ b/demos/blockfactory/standard_categories.js @@ -1,385 +1,385 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Contains a map of standard Blockly categories used to load - * standard Blockly categories into the user's toolbox. The map is keyed by - * the lower case name of the category, and contains the Category object for - * that particular category. Also has a list of core block types provided - * by Blockly. - * - */ - 'use strict'; - -/** - * Namespace for StandardCategories - */ -var StandardCategories = StandardCategories || Object.create(null); - - -// Map of standard category information necessary to add a standard category -// to the toolbox. -StandardCategories.categoryMap = Object.create(null); - -StandardCategories.categoryMap['logic'] = - new ListElement(ListElement.TYPE_CATEGORY, 'Logic'); -StandardCategories.categoryMap['logic'].xml = - Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -StandardCategories.categoryMap['logic'].hue = 210; - -StandardCategories.categoryMap['loops'] = - new ListElement(ListElement.TYPE_CATEGORY, 'Loops'); -StandardCategories.categoryMap['loops'].xml = - Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '10' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '1' + - '' + - '' + - '' + - '' + - '10' + - '' + - '' + - '' + - '' + - '1' + - '' + - '' + - '' + - '' + - '' + - ''); -StandardCategories.categoryMap['loops'].hue = 120; - -StandardCategories.categoryMap['math'] = - new ListElement(ListElement.TYPE_CATEGORY, 'Math'); -StandardCategories.categoryMap['math'].xml = - Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '' + - '1' + - '' + - '' + - '' + - '' + - '1' + - '' + - '' + - '' + - '' + - '' + - '' + - '9' + - '' + - '' + - '' + - '' + - '' + - '' + - '45' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '0' + - '' + - '' + - '' + - '' + - '' + - '' + - '3.1' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '64' + - '' + - '' + - '' + - '' + - '10'+ - '' + - '' + - '' + - '' + - '' + - '' + - '50' + - '' + - '' + - '' + - '' + - '1' + - '' + - '' + - '' + - '' + - '100' + - '' + - '' + - '' + - '' + - '' + - '' + - '1' + - '' + - '' + - '' + - '' + - '100' + - '' + - '' + - '' + - '' + - ''); -StandardCategories.categoryMap['math'].hue = 230; - -StandardCategories.categoryMap['text'] = - new ListElement(ListElement.TYPE_CATEGORY, 'Text'); -StandardCategories.categoryMap['text'].xml = - Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - 'abc' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - 'text' + - '' + - '' + - '' + - '' + - 'abc' + - '' + - '' + - '' + - '' + - '' + - '' + - 'text' + - '' + - '' + - '' + - '' + - '' + - '' + - 'text' + - '' + - '' + - '' + - '' + - '' + - '' + - 'abc' + - '' + - '' + - '' + - '' + - '' + - '' + - 'abc' + - '' + - '' + - '' + - '' + - '' + - '' + - 'abc' + - '' + - '' + - '' + - '' + - '' + - '' + - 'abc' + - '' + - '' + - '' + - ''); -StandardCategories.categoryMap['text'].hue = 160; - -StandardCategories.categoryMap['lists'] = - new ListElement(ListElement.TYPE_CATEGORY, 'Lists'); -StandardCategories.categoryMap['lists'].xml = - Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '5' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - 'list' + - '' + - '' + - '' + - '' + - '' + - '' + - 'list' + - '' + - '' + - '' + - '' + - '' + - '' + - 'list' + - '' + - '' + - '' + - '' + - '' + - '' + - 'list' + - '' + - '' + - '' + - '' + - '' + - '' + - ',' + - '' + - '' + - '' + - '' + - ''); -StandardCategories.categoryMap['lists'].hue = 260; - -StandardCategories.categoryMap['colour'] = - new ListElement(ListElement.TYPE_CATEGORY, 'Colour'); -StandardCategories.categoryMap['colour'].xml = - Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '' + - '' + - '100' + - '' + - '' + - '' + - '' + - '50' + - '' + - '' + - '' + - '' + - '0' + - '' + - '' + - '' + - '' + - '' + - '' + - '#ff0000' + - '' + - '' + - '' + - '' + - '#3333ff' + - '' + - '' + - '' + - '' + - '0.5' + - '' + - '' + - '' + - ''); -StandardCategories.categoryMap['colour'].hue = 20; - -StandardCategories.categoryMap['functions'] = - new ListElement(ListElement.TYPE_CATEGORY, 'Functions'); -StandardCategories.categoryMap['functions'].hue = 290; -StandardCategories.categoryMap['functions'].custom = 'PROCEDURE'; - -StandardCategories.categoryMap['variables'] = - new ListElement(ListElement.TYPE_CATEGORY, 'Variables'); -StandardCategories.categoryMap['variables'].hue = 330; -StandardCategories.categoryMap['variables'].custom = 'VARIABLE'; - -StandardCategories.categoryMap['typedvariables'] = - new ListElement(ListElement.TYPE_CATEGORY, 'TypedVariables'); -StandardCategories.categoryMap['typedvariables'].custom = 'VARIABLE_DYNAMIC'; -StandardCategories.categoryMap['typedvariables'].hue = 290; - -// All standard block types in provided in Blockly core. -StandardCategories.coreBlockTypes = ["controls_if", "logic_compare", - "logic_operation", "logic_negate", "logic_boolean", "logic_null", - "logic_ternary", "controls_repeat_ext", "controls_whileUntil", - "controls_for", "controls_forEach", "controls_flow_statements", - "math_number", "math_arithmetic", "math_single", "math_trig", - "math_constant", "math_number_property", "math_change", "math_round", - "math_on_list", "math_modulo", "math_constrain", "math_random_int", - "math_random_float", "text", "text_join", "text_append", "text_length", - "text_isEmpty", "text_indexOf", "variables_get", "text_charAt", - "text_getSubstring", "text_changeCase", "text_trim", "text_print", - "text_prompt_ext", "colour_picker", "colour_random", "colour_rgb", - "colour_blend", "lists_create_with", "lists_repeat", "lists_length", - "lists_isEmpty", "lists_indexOf", "lists_getIndex", "lists_setIndex", - "lists_getSublist", "lists_split", "lists_sort", "variables_set", - "procedures_defreturn", "procedures_ifreturn", "procedures_defnoreturn", - "procedures_callreturn"]; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Contains a map of standard Blockly categories used to load + * standard Blockly categories into the user's toolbox. The map is keyed by + * the lower case name of the category, and contains the Category object for + * that particular category. Also has a list of core block types provided + * by Blockly. + * + */ + 'use strict'; + +/** + * Namespace for StandardCategories + */ +var StandardCategories = StandardCategories || Object.create(null); + + +// Map of standard category information necessary to add a standard category +// to the toolbox. +StandardCategories.categoryMap = Object.create(null); + +StandardCategories.categoryMap['logic'] = + new ListElement(ListElement.TYPE_CATEGORY, 'Logic'); +StandardCategories.categoryMap['logic'].xml = + Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +StandardCategories.categoryMap['logic'].hue = 210; + +StandardCategories.categoryMap['loops'] = + new ListElement(ListElement.TYPE_CATEGORY, 'Loops'); +StandardCategories.categoryMap['loops'].xml = + Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '10' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '1' + + '' + + '' + + '' + + '' + + '10' + + '' + + '' + + '' + + '' + + '1' + + '' + + '' + + '' + + '' + + '' + + ''); +StandardCategories.categoryMap['loops'].hue = 120; + +StandardCategories.categoryMap['math'] = + new ListElement(ListElement.TYPE_CATEGORY, 'Math'); +StandardCategories.categoryMap['math'].xml = + Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '' + + '1' + + '' + + '' + + '' + + '' + + '1' + + '' + + '' + + '' + + '' + + '' + + '' + + '9' + + '' + + '' + + '' + + '' + + '' + + '' + + '45' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '0' + + '' + + '' + + '' + + '' + + '' + + '' + + '3.1' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '64' + + '' + + '' + + '' + + '' + + '10'+ + '' + + '' + + '' + + '' + + '' + + '' + + '50' + + '' + + '' + + '' + + '' + + '1' + + '' + + '' + + '' + + '' + + '100' + + '' + + '' + + '' + + '' + + '' + + '' + + '1' + + '' + + '' + + '' + + '' + + '100' + + '' + + '' + + '' + + '' + + ''); +StandardCategories.categoryMap['math'].hue = 230; + +StandardCategories.categoryMap['text'] = + new ListElement(ListElement.TYPE_CATEGORY, 'Text'); +StandardCategories.categoryMap['text'].xml = + Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'abc' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'text' + + '' + + '' + + '' + + '' + + 'abc' + + '' + + '' + + '' + + '' + + '' + + '' + + 'text' + + '' + + '' + + '' + + '' + + '' + + '' + + 'text' + + '' + + '' + + '' + + '' + + '' + + '' + + 'abc' + + '' + + '' + + '' + + '' + + '' + + '' + + 'abc' + + '' + + '' + + '' + + '' + + '' + + '' + + 'abc' + + '' + + '' + + '' + + '' + + '' + + '' + + 'abc' + + '' + + '' + + '' + + ''); +StandardCategories.categoryMap['text'].hue = 160; + +StandardCategories.categoryMap['lists'] = + new ListElement(ListElement.TYPE_CATEGORY, 'Lists'); +StandardCategories.categoryMap['lists'].xml = + Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '5' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'list' + + '' + + '' + + '' + + '' + + '' + + '' + + 'list' + + '' + + '' + + '' + + '' + + '' + + '' + + 'list' + + '' + + '' + + '' + + '' + + '' + + '' + + 'list' + + '' + + '' + + '' + + '' + + '' + + '' + + ',' + + '' + + '' + + '' + + '' + + ''); +StandardCategories.categoryMap['lists'].hue = 260; + +StandardCategories.categoryMap['colour'] = + new ListElement(ListElement.TYPE_CATEGORY, 'Colour'); +StandardCategories.categoryMap['colour'].xml = + Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '' + + '' + + '100' + + '' + + '' + + '' + + '' + + '50' + + '' + + '' + + '' + + '' + + '0' + + '' + + '' + + '' + + '' + + '' + + '' + + '#ff0000' + + '' + + '' + + '' + + '' + + '#3333ff' + + '' + + '' + + '' + + '' + + '0.5' + + '' + + '' + + '' + + ''); +StandardCategories.categoryMap['colour'].hue = 20; + +StandardCategories.categoryMap['functions'] = + new ListElement(ListElement.TYPE_CATEGORY, 'Functions'); +StandardCategories.categoryMap['functions'].hue = 290; +StandardCategories.categoryMap['functions'].custom = 'PROCEDURE'; + +StandardCategories.categoryMap['variables'] = + new ListElement(ListElement.TYPE_CATEGORY, 'Variables'); +StandardCategories.categoryMap['variables'].hue = 330; +StandardCategories.categoryMap['variables'].custom = 'VARIABLE'; + +StandardCategories.categoryMap['typedvariables'] = + new ListElement(ListElement.TYPE_CATEGORY, 'TypedVariables'); +StandardCategories.categoryMap['typedvariables'].custom = 'VARIABLE_DYNAMIC'; +StandardCategories.categoryMap['typedvariables'].hue = 290; + +// All standard block types in provided in Blockly core. +StandardCategories.coreBlockTypes = ["controls_if", "logic_compare", + "logic_operation", "logic_negate", "logic_boolean", "logic_null", + "logic_ternary", "controls_repeat_ext", "controls_whileUntil", + "controls_for", "controls_forEach", "controls_flow_statements", + "math_number", "math_arithmetic", "math_single", "math_trig", + "math_constant", "math_number_property", "math_change", "math_round", + "math_on_list", "math_modulo", "math_constrain", "math_random_int", + "math_random_float", "text", "text_join", "text_append", "text_length", + "text_isEmpty", "text_indexOf", "variables_get", "text_charAt", + "text_getSubstring", "text_changeCase", "text_trim", "text_print", + "text_prompt_ext", "colour_picker", "colour_random", "colour_rgb", + "colour_blend", "lists_create_with", "lists_repeat", "lists_length", + "lists_isEmpty", "lists_indexOf", "lists_getIndex", "lists_setIndex", + "lists_getSublist", "lists_split", "lists_sort", "variables_set", + "procedures_defreturn", "procedures_ifreturn", "procedures_defnoreturn", + "procedures_callreturn"]; diff --git a/demos/blockfactory/workspacefactory/wfactory_controller.js b/demos/blockfactory/workspacefactory/wfactory_controller.js index 149d913528b..282f75a00b0 100644 --- a/demos/blockfactory/workspacefactory/wfactory_controller.js +++ b/demos/blockfactory/workspacefactory/wfactory_controller.js @@ -1,1333 +1,1333 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Contains the controller code for workspace factory. Depends - * on the model and view objects (created as internal variables) and interacts - * with previewWorkspace and toolboxWorkspace (internal references stored to - * both). Also depends on standard_categories.js for standard Blockly - * categories. Provides the functionality for the actions the user can initiate: - * - adding and removing categories - * - switching between categories - * - printing and downloading configuration xml - * - updating the preview workspace - * - changing a category name - * - moving the position of a category. - * - */ - -/** - * Class for a WorkspaceFactoryController - * @param {string} toolboxName Name of workspace toolbox XML. - * @param {string} toolboxDiv Name of div to inject toolbox workspace in. - * @param {string} previewDiv Name of div to inject preview workspace in. - * @constructor - */ -WorkspaceFactoryController = function(toolboxName, toolboxDiv, previewDiv) { - // Toolbox XML element for the editing workspace. - this.toolbox = document.getElementById(toolboxName); - - // Workspace for user to drag blocks in for a certain category. - this.toolboxWorkspace = Blockly.inject(toolboxDiv, - {grid: - {spacing: 25, - length: 3, - colour: '#ccc', - snap: true}, - media: '../../media/', - toolbox: this.toolbox - }); - - // Workspace for user to preview their changes. - this.previewWorkspace = Blockly.inject(previewDiv, - {grid: - {spacing: 25, - length: 3, - colour: '#ccc', - snap: true}, - media: '../../media/', - toolbox: '', - zoom: - {controls: true, - wheel: true} - }); - - // Model to keep track of categories and blocks. - this.model = new WorkspaceFactoryModel(); - // Updates the category tabs. - this.view = new WorkspaceFactoryView(); - // Generates XML for categories. - this.generator = new WorkspaceFactoryGenerator(this.model); - // Tracks which editing mode the user is in. Toolbox mode on start. - this.selectedMode = WorkspaceFactoryController.MODE_TOOLBOX; - // True if key events are enabled, false otherwise. - this.keyEventsEnabled = true; - // True if there are unsaved changes in the toolbox, false otherwise. - this.hasUnsavedToolboxChanges = false; - // True if there are unsaved changes in the preloaded blocks, false otherwise. - this.hasUnsavedPreloadChanges = false; -}; - -// Toolbox editing mode. Changes the user makes to the workspace updates the -// toolbox. -WorkspaceFactoryController.MODE_TOOLBOX = 'toolbox'; -// Pre-loaded workspace editing mode. Changes the user makes to the workspace -// updates the pre-loaded blocks. -WorkspaceFactoryController.MODE_PRELOAD = 'preload'; - -/** - * Currently prompts the user for a name, checking that it's valid (not used - * before), and then creates a tab and switches to it. - */ -WorkspaceFactoryController.prototype.addCategory = function() { - // Transfers the user's blocks to a flyout if it's the first category created. - this.transferFlyoutBlocksToCategory(); - - // After possibly creating a category, check again if it's the first category. - var isFirstCategory = !this.model.hasElements(); - // Get name from user. - var name = this.promptForNewCategoryName('Enter the name of your new category:'); - if (!name) { // Exit if cancelled. - return; - } - // Create category. - this.createCategory(name); - // Switch to category. - this.switchElement(this.model.getCategoryIdByName(name)); - - // Sets the default options for injecting the workspace - // when there are categories if adding the first category. - if (isFirstCategory) { - this.view.setCategoryOptions(this.model.hasElements()); - this.generateNewOptions(); - } - // Update preview. - this.updatePreview(); -}; - -/** - * Helper method for addCategory. Adds a category to the view given a name, ID, - * and a boolean for if it's the first category created. Assumes the category - * has already been created in the model. Does not switch to category. - * @param {string} name Name of category being added. - * @param {string} id The ID of the category being added. - */ -WorkspaceFactoryController.prototype.createCategory = function(name) { - // Create empty category - var category = new ListElement(ListElement.TYPE_CATEGORY, name); - this.model.addElementToList(category); - // Create new category. - var tab = this.view.addCategoryRow(name, category.id); - this.addClickToSwitch(tab, category.id); -}; - -/** - * Given a tab and a ID to be associated to that tab, adds a listener to - * that tab so that when the user clicks on the tab, it switches to the - * element associated with that ID. - * @param {!Element} tab The DOM element to add the listener to. - * @param {string} id The ID of the element to switch to when tab is clicked. - */ -WorkspaceFactoryController.prototype.addClickToSwitch = function(tab, id) { - var self = this; - var clickFunction = function(id) { // Keep this in scope for switchElement. - return function() { - self.switchElement(id); - }; - }; - this.view.bindClick(tab, clickFunction(id)); -}; - -/** - * Transfers the blocks in the user's flyout to a new category if - * the user is creating their first category and their workspace is not - * empty. Should be called whenever it is possible to switch from single flyout - * to categories (not including importing). - */ -WorkspaceFactoryController.prototype.transferFlyoutBlocksToCategory = - function() { - // Saves the user's blocks from the flyout in a category if there is no - // toolbox and the user has dragged in blocks. - if (!this.model.hasElements() && - this.toolboxWorkspace.getAllBlocks(false).length > 0) { - // Create the new category. - this.createCategory('Category 1', true); - // Set the new category as selected. - var id = this.model.getCategoryIdByName('Category 1'); - this.model.setSelectedById(id); - this.view.setCategoryTabSelection(id, true); - // Allow user to use the default options for injecting with categories. - this.view.setCategoryOptions(this.model.hasElements()); - this.generateNewOptions(); - // Update preview here in case exit early. - this.updatePreview(); - } -}; - -/** - * Attached to "-" button. Checks if the user wants to delete - * the current element. Removes the element and switches to another element. - * When the last element is removed, it switches to a single flyout mode. - */ -WorkspaceFactoryController.prototype.removeElement = function() { - // Check that there is a currently selected category to remove. - if (!this.model.getSelected()) { - return; - } - - // Check if user wants to remove current category. - var check = confirm('Are you sure you want to delete the currently selected ' - + this.model.getSelected().type + '?'); - if (!check) { // If cancelled, exit. - return; - } - - var selectedId = this.model.getSelectedId(); - var selectedIndex = this.model.getIndexByElementId(selectedId); - // Delete element visually. - this.view.deleteElementRow(selectedId, selectedIndex); - // Delete element in model. - this.model.deleteElementFromList(selectedIndex); - - // Find next logical element to switch to. - var next = this.model.getElementByIndex(selectedIndex); - if (!next && this.model.hasElements()) { - next = this.model.getElementByIndex(selectedIndex - 1); - } - var nextId = next ? next.id : null; - - // Open next element. - this.clearAndLoadElement(nextId); - - // If no element to switch to, display message, clear the workspace, and - // set a default selected element not in toolbox list in the model. - if (!nextId) { - alert('You currently have no categories or separators. All your blocks' + - ' will be displayed in a single flyout.'); - this.toolboxWorkspace.clear(); - this.toolboxWorkspace.clearUndo(); - this.model.createDefaultSelectedIfEmpty(); - } - // Update preview. - this.updatePreview(); -}; - -/** - * Gets a valid name for a new category from the user. - * @param {string} promptString Prompt for the user to enter a name. - * @param {string=} opt_oldName The current name. - * @return {string?} Valid name for a new category, or null if cancelled. - */ -WorkspaceFactoryController.prototype.promptForNewCategoryName = - function(promptString, opt_oldName) { - var defaultName = opt_oldName; - do { - var name = prompt(promptString, defaultName); - if (!name) { // If cancelled. - return null; - } - defaultName = name; - } while (this.model.hasCategoryByName(name)); - return name; -}; - -/** - * Switches to a new tab for the element given by ID. Stores XML and blocks - * to reload later, updates selected accordingly, and clears the workspace - * and clears undo, then loads the new element. - * @param {string} id ID of tab to be opened, must be valid element ID. - */ -WorkspaceFactoryController.prototype.switchElement = function(id) { - // Disables events while switching so that Blockly delete and create events - // don't update the preview repeatedly. - Blockly.Events.disable(); - // Caches information to reload or generate XML if switching to/from element. - // Only saves if a category is selected. - if (this.model.getSelectedId() !== null && id !== null) { - this.model.getSelected().saveFromWorkspace(this.toolboxWorkspace); - } - // Load element. - this.clearAndLoadElement(id); - // Enable Blockly events again. - Blockly.Events.enable(); -}; - -/** - * Switches to a new tab for the element by ID. Helper for switchElement. - * Updates selected, clears the workspace and clears undo, loads a new element. - * @param {string} id ID of category to load. - */ -WorkspaceFactoryController.prototype.clearAndLoadElement = function(id) { - // Unselect current tab if switching to and from an element. - if (this.model.getSelectedId() !== null && id !== null) { - this.view.setCategoryTabSelection(this.model.getSelectedId(), false); - } - - // If switching to another category, set category selection in the model and - // view. - if (id !== null) { - // Set next category. - this.model.setSelectedById(id); - - // Clears workspace and loads next category. - this.clearAndLoadXml_(this.model.getSelectedXml()); - - // Selects the next tab. - this.view.setCategoryTabSelection(id, true); - - // Order blocks as shown in flyout. - this.toolboxWorkspace.cleanUp(); - - // Update category editing buttons. - this.view.updateState(this.model.getIndexByElementId - (this.model.getSelectedId()), this.model.getSelected()); - } else { - // Update category editing buttons for no categories. - this.view.updateState(-1, null); - } -}; - -/** - * Tied to "Export" button. Gets a file name from the user and downloads - * the corresponding configuration XML to that file. - * @param {string} exportMode The type of file to export - * (WorkspaceFactoryController.MODE_TOOLBOX for the toolbox configuration, - * and WorkspaceFactoryController.MODE_PRELOAD for the pre-loaded workspace - * configuration) - */ -WorkspaceFactoryController.prototype.exportXmlFile = function(exportMode) { - // Get file name. - if (exportMode === WorkspaceFactoryController.MODE_TOOLBOX) { - var fileName = prompt('File Name for toolbox XML:', 'toolbox.xml'); - } else { - var fileName = prompt('File Name for pre-loaded workspace XML:', - 'workspace.xml'); - } - if (!fileName) { // If cancelled. - return; - } - - // Generate XML. - if (exportMode === WorkspaceFactoryController.MODE_TOOLBOX) { - // Export the toolbox XML. - var configXml = Blockly.Xml.domToPrettyText( - this.generator.generateToolboxXml()); - this.hasUnsavedToolboxChanges = false; - } else if (exportMode === WorkspaceFactoryController.MODE_PRELOAD) { - // Export the pre-loaded block XML. - var configXml = Blockly.Xml.domToPrettyText( - this.generator.generateWorkspaceXml()); - this.hasUnsavedPreloadChanges = false; - } else { - // Unknown mode. Throw error. - var msg = 'Unknown export mode: ' + exportMode; - BlocklyDevTools.Analytics.onError(msg); - throw Error(msg); - } - - // Download file. - var data = new Blob([configXml], {type: 'text/xml'}); - this.view.createAndDownloadFile(fileName, data); - - if (exportMode === WorkspaceFactoryController.MODE_TOOLBOX) { - BlocklyDevTools.Analytics.onExport( - BlocklyDevTools.Analytics.TOOLBOX, - { format: BlocklyDevTools.Analytics.FORMAT_XML }); - } else if (exportMode === WorkspaceFactoryController.MODE_PRELOAD) { - BlocklyDevTools.Analytics.onExport( - BlocklyDevTools.Analytics.WORKSPACE_CONTENTS, - { format: BlocklyDevTools.Analytics.FORMAT_XML }); - } -}; - -/** - * Export the options object to be used for the Blockly inject call. Gets a - * file name from the user and downloads the options object to that file. - */ -WorkspaceFactoryController.prototype.exportInjectFile = function() { - var fileName = prompt('File Name for starter Blockly workspace code:', - 'workspace.js'); - if (!fileName) { // If cancelled. - return; - } - // Generate new options to remove toolbox XML from options object (if - // necessary). - this.generateNewOptions(); - var printableOptions = this.generator.generateInjectString() - var data = new Blob([printableOptions], {type: 'text/javascript'}); - this.view.createAndDownloadFile(fileName, data); - - BlocklyDevTools.Analytics.onExport( - BlocklyDevTools.Analytics.STARTER_CODE, - { - format: BlocklyDevTools.Analytics.FORMAT_JS, - platform: BlocklyDevTools.Analytics.PLATFORM_WEB - }); -}; - -/** - * Tied to "Print" button. Mainly used for debugging purposes. Prints - * the configuration XML to the console. - */ -WorkspaceFactoryController.prototype.printConfig = function() { - // Capture any changes made by user before generating XML. - this.saveStateFromWorkspace(); - // Print XML. - console.log(Blockly.Xml.domToPrettyText(this.generator.generateToolboxXml())); -}; - -/** - * Updates the preview workspace based on the toolbox workspace. If switching - * from no categories to categories or categories to no categories, reinjects - * Blockly with reinjectPreview, otherwise just updates without reinjecting. - * Called whenever a list element is created, removed, or modified and when - * Blockly move and delete events are fired. Do not call on create events - * or disabling will cause the user to "drop" their current blocks. Make sure - * that no changes have been made to the workspace since updating the model - * (if this might be the case, call saveStateFromWorkspace). - */ -WorkspaceFactoryController.prototype.updatePreview = function() { - // Disable events to stop updatePreview from recursively calling itself - // through event handlers. - Blockly.Events.disable(); - - // Only update the toolbox if not in read only mode. - if (!this.model.options['readOnly']) { - // Get toolbox XML. - var tree = Blockly.utils.toolbox.parseToolboxTree( - this.generator.generateToolboxXml()); - - // No categories, creates a simple flyout. - if (tree.getElementsByTagName('category').length === 0) { - // No categories, creates a simple flyout. - if (this.previewWorkspace.toolbox_) { - this.reinjectPreview(tree); // Switch to simple flyout, expensive. - } else { - this.previewWorkspace.updateToolbox(tree); - } - } else { - // Uses categories, creates a toolbox. - if (!this.previewWorkspace.toolbox_) { - this.reinjectPreview(tree); // Create a toolbox, expensive. - } else { - // Close the toolbox before updating it so that the user has to reopen - // the flyout and see their updated toolbox (open flyout doesn't update) - this.previewWorkspace.toolbox_.clearSelection(); - this.previewWorkspace.updateToolbox(tree); - } - } - } - - // Update pre-loaded blocks in the preview workspace. - this.previewWorkspace.clear(); - Blockly.Xml.domToWorkspace(this.generator.generateWorkspaceXml(), - this.previewWorkspace); - - // Reenable events. - Blockly.Events.enable(); -}; - -/** - * Saves the state from the workspace depending on the current mode. Should - * be called after making changes to the workspace. - */ -WorkspaceFactoryController.prototype.saveStateFromWorkspace = function() { - if (this.selectedMode === WorkspaceFactoryController.MODE_TOOLBOX) { - // If currently editing the toolbox. - // Update flags if toolbox has been changed. - if (this.model.getSelectedXml() !== - Blockly.Xml.workspaceToDom(this.toolboxWorkspace)) { - this.hasUnsavedToolboxChanges = true; - } - - this.model.getSelected().saveFromWorkspace(this.toolboxWorkspace); - - } else if (this.selectedMode === WorkspaceFactoryController.MODE_PRELOAD) { - // If currently editing the pre-loaded workspace. - // Update flags if preloaded blocks have been changed. - if (this.model.getPreloadXml() !== - Blockly.Xml.workspaceToDom(this.toolboxWorkspace)) { - this.hasUnsavedPreloadChanges = true; - } - - this.model.savePreloadXml( - Blockly.Xml.workspaceToDom(this.toolboxWorkspace)); - } -}; - -/** - * Used to completely reinject the preview workspace. This should be used only - * when switching from simple flyout to categories, or categories to simple - * flyout. More expensive than simply updating the flyout or toolbox. - * @param {!Element} Tree of XML elements - * @package - */ -WorkspaceFactoryController.prototype.reinjectPreview = function(tree) { - this.previewWorkspace.dispose(); - var injectOptions = this.readOptions_(); - injectOptions['toolbox'] = Blockly.Xml.domToPrettyText(tree); - this.previewWorkspace = Blockly.inject('preview_blocks', injectOptions); - Blockly.Xml.domToWorkspace(this.generator.generateWorkspaceXml(), - this.previewWorkspace); -}; - -/** - * Changes the name and colour of the selected category. - * Return if selected element is a separator. - * @param {string} name New name for selected category. - * @param {?string} colour New colour for selected category, or null if none. - * Must be a valid CSS string, or '' for none. - */ -WorkspaceFactoryController.prototype.changeSelectedCategory = function(name, - colour) { - var selected = this.model.getSelected(); - // Return if a category is not selected. - if (selected.type !== ListElement.TYPE_CATEGORY) { - return; - } - // Change colour of selected category. - selected.changeColour(colour); - this.view.setBorderColour(this.model.getSelectedId(), colour); - // Change category name. - selected.changeName(name); - this.view.updateCategoryName(name, this.model.getSelectedId()); - // Update preview. - this.updatePreview(); -}; - -/** - * Tied to arrow up and arrow down buttons. Swaps with the element above or - * below the currently selected element (offset categories away from the - * current element). Updates state to enable the correct element editing - * buttons. - * @param {number} offset The index offset from the currently selected element - * to swap with. Positive if the element to be swapped with is below, negative - * if the element to be swapped with is above. - */ -WorkspaceFactoryController.prototype.moveElement = function(offset) { - var curr = this.model.getSelected(); - if (!curr) { // Return if no selected element. - return; - } - var currIndex = this.model.getIndexByElementId(curr.id); - var swapIndex = this.model.getIndexByElementId(curr.id) + offset; - var swap = this.model.getElementByIndex(swapIndex); - if (!swap) { // Return if cannot swap in that direction. - return; - } - // Move currently selected element to index of other element. - // Indexes must be valid because confirmed that curr and swap exist. - this.moveElementToIndex(curr, swapIndex, currIndex); - // Update element editing buttons. - this.view.updateState(swapIndex, this.model.getSelected()); - // Update preview. - this.updatePreview(); -}; - -/** - * Moves a element to a specified index and updates the model and view - * accordingly. Helper functions throw an error if indexes are out of bounds. - * @param {!Element} element The element to move. - * @param {number} newIndex The index to insert the element at. - * @param {number} oldIndex The index the element is currently at. - */ -WorkspaceFactoryController.prototype.moveElementToIndex = function(element, - newIndex, oldIndex) { - this.model.moveElementToIndex(element, newIndex, oldIndex); - this.view.moveTabToIndex(element.id, newIndex, oldIndex); -}; - -/** - * Tied to the "Standard Category" dropdown option, this function prompts - * the user for a name of a standard Blockly category (case insensitive) and - * loads it as a new category and switches to it. Leverages StandardCategories. - */ -WorkspaceFactoryController.prototype.loadCategory = function() { - // Prompt user for the name of the standard category to load. - do { - var name = prompt('Enter the name of the category you would like to import ' - + '(Logic, Loops, Math, Text, Lists, Colour, Variables, TypedVariables ' - + 'or Functions)'); - if (!name) { - return; // Exit if cancelled. - } - } while (!this.isStandardCategoryName(name)); - - // Load category. - this.loadCategoryByName(name); -}; - -/** - * Loads a Standard Category by name and switches to it. Leverages - * StandardCategories. Returns if cannot load standard category. - * @param {string} name Name of the standard category to load. - */ -WorkspaceFactoryController.prototype.loadCategoryByName = function(name) { - // Check if the user can load that standard category. - if (!this.isStandardCategoryName(name)) { - return; - } - if (this.model.hasVariables() && name.toLowerCase() === 'variables') { - alert('A Variables category already exists. You cannot create multiple' + - ' variables categories.'); - return; - } - if (this.model.hasProcedures() && name.toLowerCase() === 'functions') { - alert('A Functions category already exists. You cannot create multiple' + - ' functions categories.'); - return; - } - // Check if the user can create a category with that name. - var standardCategory = StandardCategories.categoryMap[name.toLowerCase()] - if (this.model.hasCategoryByName(standardCategory.name)) { - alert('You already have a category with the name ' + standardCategory.name - + '. Rename your category and try again.'); - return; - } - if (!standardCategory.colour && standardCategory.hue !== undefined) { - // Calculate the hex colour based on the hue. - standardCategory.colour = Blockly.utils.colour.hueToHex( - standardCategory.hue); - } - // Transfers current flyout blocks to a category if it's the first category - // created. - this.transferFlyoutBlocksToCategory(); - - var isFirstCategory = !this.model.hasElements(); - // Copy the standard category in the model. - var copy = standardCategory.copy(); - - // Add it to the model. - this.model.addElementToList(copy); - - // Update the copy in the view. - var tab = this.view.addCategoryRow(copy.name, copy.id); - this.addClickToSwitch(tab, copy.id); - // Color the category tab in the view. - if (copy.colour) { - this.view.setBorderColour(copy.id, copy.colour); - } - // Switch to loaded category. - this.switchElement(copy.id); - // Convert actual shadow blocks to user-generated shadow blocks. - this.convertShadowBlocks(); - // Save state from workspace before updating preview. - this.saveStateFromWorkspace(); - if (isFirstCategory) { - // Allow the user to use the default options for injecting the workspace - // when there are categories. - this.view.setCategoryOptions(this.model.hasElements()); - this.generateNewOptions(); - } - // Update preview. - this.updatePreview(); -}; - -/** - * Loads the standard Blockly toolbox into the editing space. Should only - * be called when the mode is set to toolbox. - */ -WorkspaceFactoryController.prototype.loadStandardToolbox = function() { - this.loadCategoryByName('Logic'); - this.loadCategoryByName('Loops'); - this.loadCategoryByName('Math'); - this.loadCategoryByName('Text'); - this.loadCategoryByName('Lists'); - this.loadCategoryByName('Colour'); - this.addSeparator(); - this.loadCategoryByName('Variables'); - this.loadCategoryByName('Functions'); -}; - -/** - * Given the name of a category, determines if it's the name of a standard - * category (case insensitive). - * @param {string} name The name of the category that should be checked if it's - * in StandardCategories categoryMap - * @return {boolean} True if name is a standard category name, false otherwise. - */ -WorkspaceFactoryController.prototype.isStandardCategoryName = function(name) { - return !!StandardCategories.categoryMap[name.toLowerCase()]; -}; - -/** - * Connected to the "add separator" dropdown option. If categories already - * exist, adds a separator to the model and view. Does not switch to select - * the separator, and updates the preview. - */ -WorkspaceFactoryController.prototype.addSeparator = function() { - // If adding the first element in the toolbox, transfers the user's blocks - // in a flyout to a category. - this.transferFlyoutBlocksToCategory(); - // Create the separator in the model. - var separator = new ListElement(ListElement.TYPE_SEPARATOR); - this.model.addElementToList(separator); - // Create the separator in the view. - var tab = this.view.addSeparatorTab(separator.id); - this.addClickToSwitch(tab, separator.id); - // Switch to the separator and update the preview. - this.switchElement(separator.id); - this.updatePreview(); -}; - -/** - * Connected to the import button. Given the file path inputted by the user - * from file input, if the import mode is for the toolbox, this function loads - * that toolbox XML to the workspace, creating category and separator tabs as - * necessary. If the import mode is for pre-loaded blocks in the workspace, - * this function loads that XML to the workspace to be edited further. This - * function switches mode to whatever the import mode is. Catches errors from - * file reading and prints an error message alerting the user. - * @param {string} file The path for the file to be imported into the workspace. - * Should contain valid toolbox XML. - * @param {string} importMode The mode corresponding to the type of file the - * user is importing (WorkspaceFactoryController.MODE_TOOLBOX or - * WorkspaceFactoryController.MODE_PRELOAD). - */ -WorkspaceFactoryController.prototype.importFile = function(file, importMode) { - // Exit if cancelled. - if (!file) { - return; - } - - Blockly.Events.disable(); - var controller = this; - var reader = new FileReader(); - - // To be executed when the reader has read the file. - reader.onload = function() { - // Try to parse XML from file and load it into toolbox editing area. - // Print error message if fail. - try { - var tree = Blockly.Xml.textToDom(reader.result); - if (importMode === WorkspaceFactoryController.MODE_TOOLBOX) { - // Switch mode. - controller.setMode(WorkspaceFactoryController.MODE_TOOLBOX); - - // Confirm that the user wants to override their current toolbox. - var hasToolboxElements = controller.model.hasElements() || - controller.toolboxWorkspace.getAllBlocks(false).length > 0; - if (hasToolboxElements) { - var msg = 'Are you sure you want to import? You will lose your ' + - 'current toolbox.'; - BlocklyDevTools.Analytics.onWarning(msg); - var continueAnyway = confirm(); - if (!continueAnyway) { - return; - } - } - // Import toolbox XML. - controller.importToolboxFromTree_(tree); - BlocklyDevTools.Analytics.onImport('Toolbox.xml'); - - } else if (importMode === WorkspaceFactoryController.MODE_PRELOAD) { - // Switch mode. - controller.setMode(WorkspaceFactoryController.MODE_PRELOAD); - - // Confirm that the user wants to override their current blocks. - if (controller.toolboxWorkspace.getAllBlocks(false).length > 0) { - var msg = 'Are you sure you want to import? You will lose your ' + - 'current workspace blocks.'; - var continueAnyway = confirm(msg); - BlocklyDevTools.Analytics.onWarning(msg); - if (!continueAnyway) { - return; - } - } - - // Import pre-loaded workspace XML. - controller.importPreloadFromTree_(tree); - BlocklyDevTools.Analytics.onImport('WorkspaceContents.xml'); - } else { - // Throw error if invalid mode. - throw Error('Unknown import mode: ' + importMode); - } - } catch(e) { - var msg = 'Cannot load XML from file.'; - alert(msg); - BlocklyDevTools.Analytics.onError(msg); - console.log(e); - } finally { - Blockly.Events.enable(); - } - } - - // Read the file asynchronously. - reader.readAsText(file); -}; - -/** - * Given a XML DOM tree, loads it into the toolbox editing area so that the - * user can continue editing their work. Assumes that tree is in valid toolbox - * XML format. Assumes that the mode is MODE_TOOLBOX. - * @param {!Element} tree XML tree to be loaded to toolbox editing area. - * @private - */ -WorkspaceFactoryController.prototype.importToolboxFromTree_ = function(tree) { - // Clear current editing area. - this.model.clearToolboxList(); - this.view.clearToolboxTabs(); - - if (tree.getElementsByTagName('category').length === 0) { - // No categories present. - // Load all the blocks into a single category evenly spaced. - Blockly.Xml.domToWorkspace(tree, this.toolboxWorkspace); - this.toolboxWorkspace.cleanUp(); - - // Convert actual shadow blocks to user-generated shadow blocks. - this.convertShadowBlocks(); - - // Add message to denote empty category. - this.view.addEmptyCategoryMessage(); - - } else { - // Categories/separators present. - for (var i = 0, item; item = tree.children[i]; i++) { - - if (item.tagName === 'category') { - // If the element is a category, create a new category and switch to it. - this.createCategory(item.getAttribute('name'), false); - var category = this.model.getElementByIndex(i); - this.switchElement(category.id); - - // Load all blocks in that category to the workspace to be evenly - // spaced and saved to that category. - for (var j = 0, blockXml; blockXml = item.children[j]; j++) { - Blockly.Xml.domToBlock(blockXml, this.toolboxWorkspace); - } - - // Evenly space the blocks. - this.toolboxWorkspace.cleanUp(); - - // Convert actual shadow blocks to user-generated shadow blocks. - this.convertShadowBlocks(); - - // Set category colour. - if (item.getAttribute('colour')) { - category.changeColour(item.getAttribute('colour')); - this.view.setBorderColour(category.id, category.colour); - } - // Set any custom tags. - if (item.getAttribute('custom')) { - this.model.addCustomTag(category, item.getAttribute('custom')); - } - } else { - // If the element is a separator, add the separator and switch to it. - this.addSeparator(); - this.switchElement(this.model.getElementByIndex(i).id); - } - } - } - this.view.updateState(this.model.getIndexByElementId - (this.model.getSelectedId()), this.model.getSelected()); - - this.saveStateFromWorkspace(); - - // Set default configuration options for a single flyout or multiple - // categories. - this.view.setCategoryOptions(this.model.hasElements()); - this.generateNewOptions(); - - this.updatePreview(); -}; - -/** - * Given a XML DOM tree, loads it into the pre-loaded workspace editing area. - * Assumes that tree is in valid XML format and that the selected mode is - * MODE_PRELOAD. - * @param {!Element} tree XML tree to be loaded to pre-loaded block editing - * area. - */ -WorkspaceFactoryController.prototype.importPreloadFromTree_ = function(tree) { - this.clearAndLoadXml_(tree); - this.model.savePreloadXml(tree); - this.updatePreview(); -}; - -/** - * Given a XML DOM tree, loads it into the pre-loaded workspace editing area. - * Assumes that tree is in valid XML format and that the selected mode is - * MODE_PRELOAD. - * @param {!Element} tree XML tree to be loaded to pre-loaded block editing - * area. - */ -WorkspaceFactoryController.prototype.importPreloadFromTree_ = function(tree) { - this.clearAndLoadXml_(tree); - this.model.savePreloadXml(tree); - this.saveStateFromWorkspace(); - this.updatePreview(); -}; - -/** - * Given a XML DOM tree, loads it into the pre-loaded workspace editing area. - * Assumes that tree is in valid XML format and that the selected mode is - * MODE_PRELOAD. - * @param {!Element} tree XML tree to be loaded to pre-loaded block editing - * area. - */ -WorkspaceFactoryController.prototype.importPreloadFromTree_ = function(tree) { - this.clearAndLoadXml_(tree); - this.model.savePreloadXml(tree); - this.saveStateFromWorkspace(); - this.updatePreview(); -}; - -/** - * Clears the editing area completely, deleting all categories and all - * blocks in the model and view and all pre-loaded blocks. Tied to the - * "Clear" button. - */ -WorkspaceFactoryController.prototype.clearAll = function() { - var msg = 'Are you sure you want to clear all of your work in Workspace' + - ' Factory?'; - BlocklyDevTools.Analytics.onWarning(msg); - if (!confirm(msg)) { - return; - } - this.model.clearToolboxList(); - this.view.clearToolboxTabs(); - this.model.savePreloadXml(Blockly.utils.xml.createElement('xml')); - this.view.addEmptyCategoryMessage(); - this.view.updateState(-1, null); - this.toolboxWorkspace.clear(); - this.toolboxWorkspace.clearUndo(); - this.saveStateFromWorkspace(); - this.hasUnsavedToolboxChanges = false; - this.hasUnsavedPreloadChanges = false; - this.view.setCategoryOptions(this.model.hasElements()); - this.generateNewOptions(); - this.updatePreview(); -}; - -/** - * Makes the currently selected block a user-generated shadow block. These - * blocks are not made into real shadow blocks, but recorded in the model - * and visually marked as shadow blocks, allowing the user to move and edit - * them (which would be impossible with actual shadow blocks). Updates the - * preview when done. - */ -WorkspaceFactoryController.prototype.addShadow = function() { - // No block selected to make a shadow block. - if (!Blockly.common.getSelected()) { - return; - } - // Clear any previous warnings on the block (would only have warnings on - // a non-shadow block if it was nested inside another shadow block). - Blockly.common.getSelected().setWarningText(null); - // Set selected block and all children as shadow blocks. - this.addShadowForBlockAndChildren_(Blockly.common.getSelected()); - - // Save and update the preview. - this.saveStateFromWorkspace(); - this.updatePreview(); -}; - -/** - * Sets a block and all of its children to be user-generated shadow blocks, - * both in the model and view. - * @param {!Blockly.Block} block The block to be converted to a user-generated - * shadow block. - * @private - */ -WorkspaceFactoryController.prototype.addShadowForBlockAndChildren_ = - function(block) { - // Convert to shadow block. - this.view.markShadowBlock(block); - this.model.addShadowBlock(block.id); - - if (FactoryUtils.hasVariableField(block)) { - block.setWarningText('Cannot make variable blocks shadow blocks.'); - } - - // Convert all children to shadow blocks recursively. - var children = block.getChildren(); - for (var i = 0; i < children.length; i++) { - this.addShadowForBlockAndChildren_(children[i]); - } -}; - -/** - * If the currently selected block is a user-generated shadow block, this - * function makes it a normal block again, removing it from the list of - * shadow blocks and loading the workspace again. Updates the preview again. - */ -WorkspaceFactoryController.prototype.removeShadow = function() { - // No block selected to modify. - if (!Blockly.common.getSelected()) { - return; - } - this.model.removeShadowBlock(Blockly.common.getSelected().id); - this.view.unmarkShadowBlock(Blockly.common.getSelected()); - - // If turning invalid shadow block back to normal block, remove warning. - Blockly.common.getSelected().setWarningText(null); - - this.saveStateFromWorkspace(); - this.updatePreview(); -}; - -/** - * Given a unique block ID, uses the model to determine if a block is a - * user-generated shadow block. - * @param {string} blockId The unique ID of the block to examine. - * @return {boolean} True if the block is a user-generated shadow block, false - * otherwise. - */ -WorkspaceFactoryController.prototype.isUserGenShadowBlock = function(blockId) { - return this.model.isShadowBlock(blockId); -}; - -/** - * Call when importing XML containing real shadow blocks. This function turns - * all real shadow blocks loaded in the workspace into user-generated shadow - * blocks, meaning they are marked as shadow blocks by the model and appear as - * shadow blocks in the view but are still editable and movable. - */ -WorkspaceFactoryController.prototype.convertShadowBlocks = function() { - var blocks = this.toolboxWorkspace.getAllBlocks(false); - for (var i = 0, block; block = blocks[i]; i++) { - if (block.isShadow()) { - block.setShadow(false); - // Delete the shadow DOM attached to the block so that the shadow block - // does not respawn. Dependent on implementation details. - var parentConnection = block.outputConnection ? - block.outputConnection.targetConnection : - block.previousConnection.targetConnection; - if (parentConnection) { - parentConnection.setShadowDom(null); - } - this.model.addShadowBlock(block.id); - this.view.markShadowBlock(block); - } - } -}; - -/** - * Sets the currently selected mode that determines what the toolbox workspace - * is being used to edit. Updates the view and then saves and loads XML - * to and from the toolbox and updates the help text. - * @param {string} tab The type of tab being switched to - * (WorkspaceFactoryController.MODE_TOOLBOX or - * WorkspaceFactoryController.MODE_PRELOAD). - */ -WorkspaceFactoryController.prototype.setMode = function(mode) { - // No work to change mode that's currently set. - if (this.selectedMode === mode) { - return; - } - - // No work to change mode that's currently set. - if (this.selectedMode === mode) { - return; - } - - // Set tab selection and display appropriate tab. - this.view.setModeSelection(mode); - - // Update selected tab. - this.selectedMode = mode; - - // Update help text above workspace. - this.view.updateHelpText(mode); - - if (mode === WorkspaceFactoryController.MODE_TOOLBOX) { - // Open the toolbox editing space. - this.model.savePreloadXml - (Blockly.Xml.workspaceToDom(this.toolboxWorkspace)); - this.clearAndLoadXml_(this.model.getSelectedXml()); - this.view.disableWorkspace(this.view.shouldDisableWorkspace - (this.model.getSelected())); - } else { - // Open the pre-loaded workspace editing space. - if (this.model.getSelected()) { - this.model.getSelected().saveFromWorkspace(this.toolboxWorkspace); - } - this.clearAndLoadXml_(this.model.getPreloadXml()); - this.view.disableWorkspace(false); - } -}; - -/** - * Clears the toolbox workspace and loads XML to it, marking shadow blocks - * as necessary. - * @private - * @param {!Element} xml The XML to be loaded to the workspace. - */ -WorkspaceFactoryController.prototype.clearAndLoadXml_ = function(xml) { - this.toolboxWorkspace.clear(); - this.toolboxWorkspace.clearUndo(); - Blockly.Xml.domToWorkspace(xml, this.toolboxWorkspace); - this.view.markShadowBlocks(this.model.getShadowBlocksInWorkspace - (this.toolboxWorkspace.getAllBlocks(false))); - this.warnForUndefinedBlocks_(); -}; - -/** - * Sets the standard default options for the options object and updates - * the preview workspace. The default values depends on if categories are - * present. - */ -WorkspaceFactoryController.prototype.setStandardOptionsAndUpdate = function() { - this.view.setBaseOptions(); - this.view.setCategoryOptions(this.model.hasElements()); - this.generateNewOptions(); -}; - -/** - * Generates a new options object for injecting a Blockly workspace based - * on user input. Should be called every time a change has been made to - * an input field. Updates the model and reinjects the preview workspace. - */ -WorkspaceFactoryController.prototype.generateNewOptions = function() { - this.model.setOptions(this.readOptions_()); - - this.reinjectPreview(Blockly.utils.toolbox.parseToolboxTree( - this.generator.generateToolboxXml())); -}; - -/** - * Generates a new options object for injecting a Blockly workspace based on - * user input. - * @return {!Object} Blockly injection options object. - * @private - */ -WorkspaceFactoryController.prototype.readOptions_ = function() { - var optionsObj = Object.create(null); - - // Add all standard options to the options object. - // Use parse int to get numbers from value inputs. - var readonly = document.getElementById('option_readOnly_checkbox').checked; - if (readonly) { - optionsObj['readOnly'] = true; - } else { - optionsObj['collapse'] = - document.getElementById('option_collapse_checkbox').checked; - optionsObj['comments'] = - document.getElementById('option_comments_checkbox').checked; - optionsObj['disable'] = - document.getElementById('option_disable_checkbox').checked; - if (document.getElementById('option_infiniteBlocks_checkbox').checked) { - optionsObj['maxBlocks'] = Infinity; - } else { - var maxBlocksValue = - document.getElementById('option_maxBlocks_number').value; - optionsObj['maxBlocks'] = typeof maxBlocksValue === 'string' ? - parseInt(maxBlocksValue) : maxBlocksValue; - } - optionsObj['trashcan'] = - document.getElementById('option_trashcan_checkbox').checked; - optionsObj['horizontalLayout'] = - document.getElementById('option_horizontalLayout_checkbox').checked; - optionsObj['toolboxPosition'] = - document.getElementById('option_toolboxPosition_checkbox').checked ? - 'end' : 'start'; - } - - optionsObj['css'] = document.getElementById('option_css_checkbox').checked; - optionsObj['media'] = document.getElementById('option_media_text').value; - optionsObj['rtl'] = document.getElementById('option_rtl_checkbox').checked; - optionsObj['scrollbars'] = - document.getElementById('option_scrollbars_checkbox').checked; - optionsObj['sounds'] = - document.getElementById('option_sounds_checkbox').checked; - optionsObj['oneBasedIndex'] = - document.getElementById('option_oneBasedIndex_checkbox').checked; - - // If using a grid, add all grid options. - if (document.getElementById('option_grid_checkbox').checked) { - var grid = Object.create(null); - var spacingValue = - document.getElementById('gridOption_spacing_number').value; - grid['spacing'] = typeof spacingValue === 'string' ? - parseInt(spacingValue) : spacingValue; - var lengthValue = document.getElementById('gridOption_length_number').value; - grid['length'] = typeof lengthValue === 'string' ? - parseInt(lengthValue) : lengthValue; - grid['colour'] = document.getElementById('gridOption_colour_text').value; - if (!readonly) { - grid['snap'] = - document.getElementById('gridOption_snap_checkbox').checked; - } - optionsObj['grid'] = grid; - } - - // If using zoom, add all zoom options. - if (document.getElementById('option_zoom_checkbox').checked) { - var zoom = Object.create(null); - zoom['controls'] = - document.getElementById('zoomOption_controls_checkbox').checked; - zoom['wheel'] = - document.getElementById('zoomOption_wheel_checkbox').checked; - var startScaleValue = - document.getElementById('zoomOption_startScale_number').value; - zoom['startScale'] = typeof startScaleValue === 'string' ? - Number(startScaleValue) : startScaleValue; - var maxScaleValue = - document.getElementById('zoomOption_maxScale_number').value; - zoom['maxScale'] = typeof maxScaleValue === 'string' ? - Number(maxScaleValue) : maxScaleValue; - var minScaleValue = - document.getElementById('zoomOption_minScale_number').value; - zoom['minScale'] = typeof minScaleValue === 'string' ? - Number(minScaleValue) : minScaleValue; - var scaleSpeedValue = - document.getElementById('zoomOption_scaleSpeed_number').value; - zoom['scaleSpeed'] = typeof scaleSpeedValue === 'string' ? - Number(scaleSpeedValue) : scaleSpeedValue; - optionsObj['zoom'] = zoom; - } - - return optionsObj; -}; - -/** - * Imports blocks from a file, generating a category in the toolbox workspace - * to allow the user to use imported blocks in the toolbox and in pre-loaded - * blocks. - * @param {!File} file File object for the blocks to import. - * @param {string} format The format of the file to import, either 'JSON' or - * 'JavaScript'. - */ -WorkspaceFactoryController.prototype.importBlocks = function(file, format) { - // Generate category name from file name. - var categoryName = file.name; - - var controller = this; - var reader = new FileReader(); - - // To be executed when the reader has read the file. - reader.onload = function() { - try { - // Define blocks using block types from file. - var blockTypes = FactoryUtils.defineAndGetBlockTypes(reader.result, - format); - - // If an imported block type is already defined, check if the user wants - // to override the current block definition. - if (controller.model.hasDefinedBlockTypes(blockTypes)) { - var msg = 'An imported block uses the same name as a block ' + - 'already in your toolbox. Are you sure you want to override the ' + - 'currently defined block?'; - var continueAnyway = confirm(msg); - BlocklyDevTools.Analytics.onWarning(msg); - if (!continueAnyway) { - return; - } - } - - var blocks = controller.generator.getDefinedBlocks(blockTypes); - // Generate category XML and append to toolbox. - var categoryXml = FactoryUtils.generateCategoryXml(blocks, categoryName); - // Get random colour for category between 0 and 360. Gives each imported - // category a different colour. - var randomColor = Math.floor(Math.random() * 360); - categoryXml.setAttribute('colour', randomColor); - controller.toolbox.appendChild(categoryXml); - controller.toolboxWorkspace.updateToolbox(controller.toolbox); - // Update imported block types. - controller.model.addImportedBlockTypes(blockTypes); - // Reload current category to possibly reflect any newly defined blocks. - controller.clearAndLoadXml_ - (Blockly.Xml.workspaceToDom(controller.toolboxWorkspace)); - - BlocklyDevTools.Analytics.onImport('BlockDefinitions' + - (format === 'JSON' ? '.json' : '.js')); - } catch (e) { - msg = 'Cannot read blocks from file.'; - alert(msg); - BlocklyDevTools.Analytics.onError(msg); - window.console.log(e); - } - } - - // Read the file asynchronously. - reader.readAsText(file); -}; - -/** - * Updates the block library category in the toolbox workspace toolbox. - * @param {!Element} categoryXml XML for the block library category. - * @param {!Array} libBlockTypes Array of block types from the block - * library. - */ -WorkspaceFactoryController.prototype.setBlockLibCategory = - function(categoryXml, libBlockTypes) { - var blockLibCategory = document.getElementById('blockLibCategory'); - - // Set category ID so that it can be easily replaced, and set a standard, - // arbitrary block library colour. - categoryXml.id = 'blockLibCategory'; - categoryXml.setAttribute('colour', 260); - - // Update the toolbox and toolboxWorkspace. - this.toolbox.replaceChild(categoryXml, blockLibCategory); - this.toolboxWorkspace.toolbox_.clearSelection(); - this.toolboxWorkspace.updateToolbox(this.toolbox); - - // Update the block library types. - this.model.updateLibBlockTypes(libBlockTypes); - - // Reload XML on page to account for blocks now defined or undefined in block - // library. - this.clearAndLoadXml_(Blockly.Xml.workspaceToDom(this.toolboxWorkspace)); -}; - -/** - * Return the block types used in the custom toolbox and pre-loaded workspace. - * @return {!Array} Block types used in the custom toolbox and - * pre-loaded workspace. - */ -WorkspaceFactoryController.prototype.getAllUsedBlockTypes = function() { - return this.model.getAllUsedBlockTypes(); -}; - -/** - * Determines if a block loaded in the workspace has a definition (if it - * is a standard block, is defined in the block library, or has a definition - * imported). - * @param {!Blockly.Block} block The block to examine. - */ -WorkspaceFactoryController.prototype.isDefinedBlock = function(block) { - return this.model.isDefinedBlockType(block.type); -}; - -/** - * Sets a warning on blocks loaded to the workspace that are not defined. - * @private - */ -WorkspaceFactoryController.prototype.warnForUndefinedBlocks_ = function() { - var blocks = this.toolboxWorkspace.getAllBlocks(false); - for (var i = 0, block; block = blocks[i]; i++) { - if (!this.isDefinedBlock(block)) { - block.setWarningText(block.type + ' is not defined (it is not a ' + - 'standard block,\nin your block library, or an imported block)'); - } - } -}; - -/** - * Determines if a standard variable category is in the custom toolbox. - * @return {boolean} True if a variables category is in use, false otherwise. - */ -WorkspaceFactoryController.prototype.hasVariablesCategory = function() { - return this.model.hasVariables(); -}; - -/** - * Determines if a standard procedures category is in the custom toolbox. - * @return {boolean} True if a procedures category is in use, false otherwise. - */ -WorkspaceFactoryController.prototype.hasProceduresCategory = function() { - return this.model.hasProcedures(); -}; - -/** - * Determines if there are any unsaved changes in workspace factory. - * @return {boolean} True if there are unsaved changes, false otherwise. - */ -WorkspaceFactoryController.prototype.hasUnsavedChanges = function() { - return this.hasUnsavedToolboxChanges || this.hasUnsavedPreloadChanges; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Contains the controller code for workspace factory. Depends + * on the model and view objects (created as internal variables) and interacts + * with previewWorkspace and toolboxWorkspace (internal references stored to + * both). Also depends on standard_categories.js for standard Blockly + * categories. Provides the functionality for the actions the user can initiate: + * - adding and removing categories + * - switching between categories + * - printing and downloading configuration xml + * - updating the preview workspace + * - changing a category name + * - moving the position of a category. + * + */ + +/** + * Class for a WorkspaceFactoryController + * @param {string} toolboxName Name of workspace toolbox XML. + * @param {string} toolboxDiv Name of div to inject toolbox workspace in. + * @param {string} previewDiv Name of div to inject preview workspace in. + * @constructor + */ +WorkspaceFactoryController = function(toolboxName, toolboxDiv, previewDiv) { + // Toolbox XML element for the editing workspace. + this.toolbox = document.getElementById(toolboxName); + + // Workspace for user to drag blocks in for a certain category. + this.toolboxWorkspace = Blockly.inject(toolboxDiv, + {grid: + {spacing: 25, + length: 3, + colour: '#ccc', + snap: true}, + media: '../../media/', + toolbox: this.toolbox + }); + + // Workspace for user to preview their changes. + this.previewWorkspace = Blockly.inject(previewDiv, + {grid: + {spacing: 25, + length: 3, + colour: '#ccc', + snap: true}, + media: '../../media/', + toolbox: '', + zoom: + {controls: true, + wheel: true} + }); + + // Model to keep track of categories and blocks. + this.model = new WorkspaceFactoryModel(); + // Updates the category tabs. + this.view = new WorkspaceFactoryView(); + // Generates XML for categories. + this.generator = new WorkspaceFactoryGenerator(this.model); + // Tracks which editing mode the user is in. Toolbox mode on start. + this.selectedMode = WorkspaceFactoryController.MODE_TOOLBOX; + // True if key events are enabled, false otherwise. + this.keyEventsEnabled = true; + // True if there are unsaved changes in the toolbox, false otherwise. + this.hasUnsavedToolboxChanges = false; + // True if there are unsaved changes in the preloaded blocks, false otherwise. + this.hasUnsavedPreloadChanges = false; +}; + +// Toolbox editing mode. Changes the user makes to the workspace updates the +// toolbox. +WorkspaceFactoryController.MODE_TOOLBOX = 'toolbox'; +// Pre-loaded workspace editing mode. Changes the user makes to the workspace +// updates the pre-loaded blocks. +WorkspaceFactoryController.MODE_PRELOAD = 'preload'; + +/** + * Currently prompts the user for a name, checking that it's valid (not used + * before), and then creates a tab and switches to it. + */ +WorkspaceFactoryController.prototype.addCategory = function() { + // Transfers the user's blocks to a flyout if it's the first category created. + this.transferFlyoutBlocksToCategory(); + + // After possibly creating a category, check again if it's the first category. + var isFirstCategory = !this.model.hasElements(); + // Get name from user. + var name = this.promptForNewCategoryName('Enter the name of your new category:'); + if (!name) { // Exit if cancelled. + return; + } + // Create category. + this.createCategory(name); + // Switch to category. + this.switchElement(this.model.getCategoryIdByName(name)); + + // Sets the default options for injecting the workspace + // when there are categories if adding the first category. + if (isFirstCategory) { + this.view.setCategoryOptions(this.model.hasElements()); + this.generateNewOptions(); + } + // Update preview. + this.updatePreview(); +}; + +/** + * Helper method for addCategory. Adds a category to the view given a name, ID, + * and a boolean for if it's the first category created. Assumes the category + * has already been created in the model. Does not switch to category. + * @param {string} name Name of category being added. + * @param {string} id The ID of the category being added. + */ +WorkspaceFactoryController.prototype.createCategory = function(name) { + // Create empty category + var category = new ListElement(ListElement.TYPE_CATEGORY, name); + this.model.addElementToList(category); + // Create new category. + var tab = this.view.addCategoryRow(name, category.id); + this.addClickToSwitch(tab, category.id); +}; + +/** + * Given a tab and a ID to be associated to that tab, adds a listener to + * that tab so that when the user clicks on the tab, it switches to the + * element associated with that ID. + * @param {!Element} tab The DOM element to add the listener to. + * @param {string} id The ID of the element to switch to when tab is clicked. + */ +WorkspaceFactoryController.prototype.addClickToSwitch = function(tab, id) { + var self = this; + var clickFunction = function(id) { // Keep this in scope for switchElement. + return function() { + self.switchElement(id); + }; + }; + this.view.bindClick(tab, clickFunction(id)); +}; + +/** + * Transfers the blocks in the user's flyout to a new category if + * the user is creating their first category and their workspace is not + * empty. Should be called whenever it is possible to switch from single flyout + * to categories (not including importing). + */ +WorkspaceFactoryController.prototype.transferFlyoutBlocksToCategory = + function() { + // Saves the user's blocks from the flyout in a category if there is no + // toolbox and the user has dragged in blocks. + if (!this.model.hasElements() && + this.toolboxWorkspace.getAllBlocks(false).length > 0) { + // Create the new category. + this.createCategory('Category 1', true); + // Set the new category as selected. + var id = this.model.getCategoryIdByName('Category 1'); + this.model.setSelectedById(id); + this.view.setCategoryTabSelection(id, true); + // Allow user to use the default options for injecting with categories. + this.view.setCategoryOptions(this.model.hasElements()); + this.generateNewOptions(); + // Update preview here in case exit early. + this.updatePreview(); + } +}; + +/** + * Attached to "-" button. Checks if the user wants to delete + * the current element. Removes the element and switches to another element. + * When the last element is removed, it switches to a single flyout mode. + */ +WorkspaceFactoryController.prototype.removeElement = function() { + // Check that there is a currently selected category to remove. + if (!this.model.getSelected()) { + return; + } + + // Check if user wants to remove current category. + var check = confirm('Are you sure you want to delete the currently selected ' + + this.model.getSelected().type + '?'); + if (!check) { // If cancelled, exit. + return; + } + + var selectedId = this.model.getSelectedId(); + var selectedIndex = this.model.getIndexByElementId(selectedId); + // Delete element visually. + this.view.deleteElementRow(selectedId, selectedIndex); + // Delete element in model. + this.model.deleteElementFromList(selectedIndex); + + // Find next logical element to switch to. + var next = this.model.getElementByIndex(selectedIndex); + if (!next && this.model.hasElements()) { + next = this.model.getElementByIndex(selectedIndex - 1); + } + var nextId = next ? next.id : null; + + // Open next element. + this.clearAndLoadElement(nextId); + + // If no element to switch to, display message, clear the workspace, and + // set a default selected element not in toolbox list in the model. + if (!nextId) { + alert('You currently have no categories or separators. All your blocks' + + ' will be displayed in a single flyout.'); + this.toolboxWorkspace.clear(); + this.toolboxWorkspace.clearUndo(); + this.model.createDefaultSelectedIfEmpty(); + } + // Update preview. + this.updatePreview(); +}; + +/** + * Gets a valid name for a new category from the user. + * @param {string} promptString Prompt for the user to enter a name. + * @param {string=} opt_oldName The current name. + * @return {string?} Valid name for a new category, or null if cancelled. + */ +WorkspaceFactoryController.prototype.promptForNewCategoryName = + function(promptString, opt_oldName) { + var defaultName = opt_oldName; + do { + var name = prompt(promptString, defaultName); + if (!name) { // If cancelled. + return null; + } + defaultName = name; + } while (this.model.hasCategoryByName(name)); + return name; +}; + +/** + * Switches to a new tab for the element given by ID. Stores XML and blocks + * to reload later, updates selected accordingly, and clears the workspace + * and clears undo, then loads the new element. + * @param {string} id ID of tab to be opened, must be valid element ID. + */ +WorkspaceFactoryController.prototype.switchElement = function(id) { + // Disables events while switching so that Blockly delete and create events + // don't update the preview repeatedly. + Blockly.Events.disable(); + // Caches information to reload or generate XML if switching to/from element. + // Only saves if a category is selected. + if (this.model.getSelectedId() !== null && id !== null) { + this.model.getSelected().saveFromWorkspace(this.toolboxWorkspace); + } + // Load element. + this.clearAndLoadElement(id); + // Enable Blockly events again. + Blockly.Events.enable(); +}; + +/** + * Switches to a new tab for the element by ID. Helper for switchElement. + * Updates selected, clears the workspace and clears undo, loads a new element. + * @param {string} id ID of category to load. + */ +WorkspaceFactoryController.prototype.clearAndLoadElement = function(id) { + // Unselect current tab if switching to and from an element. + if (this.model.getSelectedId() !== null && id !== null) { + this.view.setCategoryTabSelection(this.model.getSelectedId(), false); + } + + // If switching to another category, set category selection in the model and + // view. + if (id !== null) { + // Set next category. + this.model.setSelectedById(id); + + // Clears workspace and loads next category. + this.clearAndLoadXml_(this.model.getSelectedXml()); + + // Selects the next tab. + this.view.setCategoryTabSelection(id, true); + + // Order blocks as shown in flyout. + this.toolboxWorkspace.cleanUp(); + + // Update category editing buttons. + this.view.updateState(this.model.getIndexByElementId + (this.model.getSelectedId()), this.model.getSelected()); + } else { + // Update category editing buttons for no categories. + this.view.updateState(-1, null); + } +}; + +/** + * Tied to "Export" button. Gets a file name from the user and downloads + * the corresponding configuration XML to that file. + * @param {string} exportMode The type of file to export + * (WorkspaceFactoryController.MODE_TOOLBOX for the toolbox configuration, + * and WorkspaceFactoryController.MODE_PRELOAD for the pre-loaded workspace + * configuration) + */ +WorkspaceFactoryController.prototype.exportXmlFile = function(exportMode) { + // Get file name. + if (exportMode === WorkspaceFactoryController.MODE_TOOLBOX) { + var fileName = prompt('File Name for toolbox XML:', 'toolbox.xml'); + } else { + var fileName = prompt('File Name for pre-loaded workspace XML:', + 'workspace.xml'); + } + if (!fileName) { // If cancelled. + return; + } + + // Generate XML. + if (exportMode === WorkspaceFactoryController.MODE_TOOLBOX) { + // Export the toolbox XML. + var configXml = Blockly.Xml.domToPrettyText( + this.generator.generateToolboxXml()); + this.hasUnsavedToolboxChanges = false; + } else if (exportMode === WorkspaceFactoryController.MODE_PRELOAD) { + // Export the pre-loaded block XML. + var configXml = Blockly.Xml.domToPrettyText( + this.generator.generateWorkspaceXml()); + this.hasUnsavedPreloadChanges = false; + } else { + // Unknown mode. Throw error. + var msg = 'Unknown export mode: ' + exportMode; + BlocklyDevTools.Analytics.onError(msg); + throw Error(msg); + } + + // Download file. + var data = new Blob([configXml], {type: 'text/xml'}); + this.view.createAndDownloadFile(fileName, data); + + if (exportMode === WorkspaceFactoryController.MODE_TOOLBOX) { + BlocklyDevTools.Analytics.onExport( + BlocklyDevTools.Analytics.TOOLBOX, + { format: BlocklyDevTools.Analytics.FORMAT_XML }); + } else if (exportMode === WorkspaceFactoryController.MODE_PRELOAD) { + BlocklyDevTools.Analytics.onExport( + BlocklyDevTools.Analytics.WORKSPACE_CONTENTS, + { format: BlocklyDevTools.Analytics.FORMAT_XML }); + } +}; + +/** + * Export the options object to be used for the Blockly inject call. Gets a + * file name from the user and downloads the options object to that file. + */ +WorkspaceFactoryController.prototype.exportInjectFile = function() { + var fileName = prompt('File Name for starter Blockly workspace code:', + 'workspace.js'); + if (!fileName) { // If cancelled. + return; + } + // Generate new options to remove toolbox XML from options object (if + // necessary). + this.generateNewOptions(); + var printableOptions = this.generator.generateInjectString() + var data = new Blob([printableOptions], {type: 'text/javascript'}); + this.view.createAndDownloadFile(fileName, data); + + BlocklyDevTools.Analytics.onExport( + BlocklyDevTools.Analytics.STARTER_CODE, + { + format: BlocklyDevTools.Analytics.FORMAT_JS, + platform: BlocklyDevTools.Analytics.PLATFORM_WEB + }); +}; + +/** + * Tied to "Print" button. Mainly used for debugging purposes. Prints + * the configuration XML to the console. + */ +WorkspaceFactoryController.prototype.printConfig = function() { + // Capture any changes made by user before generating XML. + this.saveStateFromWorkspace(); + // Print XML. + console.log(Blockly.Xml.domToPrettyText(this.generator.generateToolboxXml())); +}; + +/** + * Updates the preview workspace based on the toolbox workspace. If switching + * from no categories to categories or categories to no categories, reinjects + * Blockly with reinjectPreview, otherwise just updates without reinjecting. + * Called whenever a list element is created, removed, or modified and when + * Blockly move and delete events are fired. Do not call on create events + * or disabling will cause the user to "drop" their current blocks. Make sure + * that no changes have been made to the workspace since updating the model + * (if this might be the case, call saveStateFromWorkspace). + */ +WorkspaceFactoryController.prototype.updatePreview = function() { + // Disable events to stop updatePreview from recursively calling itself + // through event handlers. + Blockly.Events.disable(); + + // Only update the toolbox if not in read only mode. + if (!this.model.options['readOnly']) { + // Get toolbox XML. + var tree = Blockly.utils.toolbox.parseToolboxTree( + this.generator.generateToolboxXml()); + + // No categories, creates a simple flyout. + if (tree.getElementsByTagName('category').length === 0) { + // No categories, creates a simple flyout. + if (this.previewWorkspace.toolbox_) { + this.reinjectPreview(tree); // Switch to simple flyout, expensive. + } else { + this.previewWorkspace.updateToolbox(tree); + } + } else { + // Uses categories, creates a toolbox. + if (!this.previewWorkspace.toolbox_) { + this.reinjectPreview(tree); // Create a toolbox, expensive. + } else { + // Close the toolbox before updating it so that the user has to reopen + // the flyout and see their updated toolbox (open flyout doesn't update) + this.previewWorkspace.toolbox_.clearSelection(); + this.previewWorkspace.updateToolbox(tree); + } + } + } + + // Update pre-loaded blocks in the preview workspace. + this.previewWorkspace.clear(); + Blockly.Xml.domToWorkspace(this.generator.generateWorkspaceXml(), + this.previewWorkspace); + + // Reenable events. + Blockly.Events.enable(); +}; + +/** + * Saves the state from the workspace depending on the current mode. Should + * be called after making changes to the workspace. + */ +WorkspaceFactoryController.prototype.saveStateFromWorkspace = function() { + if (this.selectedMode === WorkspaceFactoryController.MODE_TOOLBOX) { + // If currently editing the toolbox. + // Update flags if toolbox has been changed. + if (this.model.getSelectedXml() !== + Blockly.Xml.workspaceToDom(this.toolboxWorkspace)) { + this.hasUnsavedToolboxChanges = true; + } + + this.model.getSelected().saveFromWorkspace(this.toolboxWorkspace); + + } else if (this.selectedMode === WorkspaceFactoryController.MODE_PRELOAD) { + // If currently editing the pre-loaded workspace. + // Update flags if preloaded blocks have been changed. + if (this.model.getPreloadXml() !== + Blockly.Xml.workspaceToDom(this.toolboxWorkspace)) { + this.hasUnsavedPreloadChanges = true; + } + + this.model.savePreloadXml( + Blockly.Xml.workspaceToDom(this.toolboxWorkspace)); + } +}; + +/** + * Used to completely reinject the preview workspace. This should be used only + * when switching from simple flyout to categories, or categories to simple + * flyout. More expensive than simply updating the flyout or toolbox. + * @param {!Element} Tree of XML elements + * @package + */ +WorkspaceFactoryController.prototype.reinjectPreview = function(tree) { + this.previewWorkspace.dispose(); + var injectOptions = this.readOptions_(); + injectOptions['toolbox'] = Blockly.Xml.domToPrettyText(tree); + this.previewWorkspace = Blockly.inject('preview_blocks', injectOptions); + Blockly.Xml.domToWorkspace(this.generator.generateWorkspaceXml(), + this.previewWorkspace); +}; + +/** + * Changes the name and colour of the selected category. + * Return if selected element is a separator. + * @param {string} name New name for selected category. + * @param {?string} colour New colour for selected category, or null if none. + * Must be a valid CSS string, or '' for none. + */ +WorkspaceFactoryController.prototype.changeSelectedCategory = function(name, + colour) { + var selected = this.model.getSelected(); + // Return if a category is not selected. + if (selected.type !== ListElement.TYPE_CATEGORY) { + return; + } + // Change colour of selected category. + selected.changeColour(colour); + this.view.setBorderColour(this.model.getSelectedId(), colour); + // Change category name. + selected.changeName(name); + this.view.updateCategoryName(name, this.model.getSelectedId()); + // Update preview. + this.updatePreview(); +}; + +/** + * Tied to arrow up and arrow down buttons. Swaps with the element above or + * below the currently selected element (offset categories away from the + * current element). Updates state to enable the correct element editing + * buttons. + * @param {number} offset The index offset from the currently selected element + * to swap with. Positive if the element to be swapped with is below, negative + * if the element to be swapped with is above. + */ +WorkspaceFactoryController.prototype.moveElement = function(offset) { + var curr = this.model.getSelected(); + if (!curr) { // Return if no selected element. + return; + } + var currIndex = this.model.getIndexByElementId(curr.id); + var swapIndex = this.model.getIndexByElementId(curr.id) + offset; + var swap = this.model.getElementByIndex(swapIndex); + if (!swap) { // Return if cannot swap in that direction. + return; + } + // Move currently selected element to index of other element. + // Indexes must be valid because confirmed that curr and swap exist. + this.moveElementToIndex(curr, swapIndex, currIndex); + // Update element editing buttons. + this.view.updateState(swapIndex, this.model.getSelected()); + // Update preview. + this.updatePreview(); +}; + +/** + * Moves a element to a specified index and updates the model and view + * accordingly. Helper functions throw an error if indexes are out of bounds. + * @param {!Element} element The element to move. + * @param {number} newIndex The index to insert the element at. + * @param {number} oldIndex The index the element is currently at. + */ +WorkspaceFactoryController.prototype.moveElementToIndex = function(element, + newIndex, oldIndex) { + this.model.moveElementToIndex(element, newIndex, oldIndex); + this.view.moveTabToIndex(element.id, newIndex, oldIndex); +}; + +/** + * Tied to the "Standard Category" dropdown option, this function prompts + * the user for a name of a standard Blockly category (case insensitive) and + * loads it as a new category and switches to it. Leverages StandardCategories. + */ +WorkspaceFactoryController.prototype.loadCategory = function() { + // Prompt user for the name of the standard category to load. + do { + var name = prompt('Enter the name of the category you would like to import ' + + '(Logic, Loops, Math, Text, Lists, Colour, Variables, TypedVariables ' + + 'or Functions)'); + if (!name) { + return; // Exit if cancelled. + } + } while (!this.isStandardCategoryName(name)); + + // Load category. + this.loadCategoryByName(name); +}; + +/** + * Loads a Standard Category by name and switches to it. Leverages + * StandardCategories. Returns if cannot load standard category. + * @param {string} name Name of the standard category to load. + */ +WorkspaceFactoryController.prototype.loadCategoryByName = function(name) { + // Check if the user can load that standard category. + if (!this.isStandardCategoryName(name)) { + return; + } + if (this.model.hasVariables() && name.toLowerCase() === 'variables') { + alert('A Variables category already exists. You cannot create multiple' + + ' variables categories.'); + return; + } + if (this.model.hasProcedures() && name.toLowerCase() === 'functions') { + alert('A Functions category already exists. You cannot create multiple' + + ' functions categories.'); + return; + } + // Check if the user can create a category with that name. + var standardCategory = StandardCategories.categoryMap[name.toLowerCase()] + if (this.model.hasCategoryByName(standardCategory.name)) { + alert('You already have a category with the name ' + standardCategory.name + + '. Rename your category and try again.'); + return; + } + if (!standardCategory.colour && standardCategory.hue !== undefined) { + // Calculate the hex colour based on the hue. + standardCategory.colour = Blockly.utils.colour.hueToHex( + standardCategory.hue); + } + // Transfers current flyout blocks to a category if it's the first category + // created. + this.transferFlyoutBlocksToCategory(); + + var isFirstCategory = !this.model.hasElements(); + // Copy the standard category in the model. + var copy = standardCategory.copy(); + + // Add it to the model. + this.model.addElementToList(copy); + + // Update the copy in the view. + var tab = this.view.addCategoryRow(copy.name, copy.id); + this.addClickToSwitch(tab, copy.id); + // Color the category tab in the view. + if (copy.colour) { + this.view.setBorderColour(copy.id, copy.colour); + } + // Switch to loaded category. + this.switchElement(copy.id); + // Convert actual shadow blocks to user-generated shadow blocks. + this.convertShadowBlocks(); + // Save state from workspace before updating preview. + this.saveStateFromWorkspace(); + if (isFirstCategory) { + // Allow the user to use the default options for injecting the workspace + // when there are categories. + this.view.setCategoryOptions(this.model.hasElements()); + this.generateNewOptions(); + } + // Update preview. + this.updatePreview(); +}; + +/** + * Loads the standard Blockly toolbox into the editing space. Should only + * be called when the mode is set to toolbox. + */ +WorkspaceFactoryController.prototype.loadStandardToolbox = function() { + this.loadCategoryByName('Logic'); + this.loadCategoryByName('Loops'); + this.loadCategoryByName('Math'); + this.loadCategoryByName('Text'); + this.loadCategoryByName('Lists'); + this.loadCategoryByName('Colour'); + this.addSeparator(); + this.loadCategoryByName('Variables'); + this.loadCategoryByName('Functions'); +}; + +/** + * Given the name of a category, determines if it's the name of a standard + * category (case insensitive). + * @param {string} name The name of the category that should be checked if it's + * in StandardCategories categoryMap + * @return {boolean} True if name is a standard category name, false otherwise. + */ +WorkspaceFactoryController.prototype.isStandardCategoryName = function(name) { + return !!StandardCategories.categoryMap[name.toLowerCase()]; +}; + +/** + * Connected to the "add separator" dropdown option. If categories already + * exist, adds a separator to the model and view. Does not switch to select + * the separator, and updates the preview. + */ +WorkspaceFactoryController.prototype.addSeparator = function() { + // If adding the first element in the toolbox, transfers the user's blocks + // in a flyout to a category. + this.transferFlyoutBlocksToCategory(); + // Create the separator in the model. + var separator = new ListElement(ListElement.TYPE_SEPARATOR); + this.model.addElementToList(separator); + // Create the separator in the view. + var tab = this.view.addSeparatorTab(separator.id); + this.addClickToSwitch(tab, separator.id); + // Switch to the separator and update the preview. + this.switchElement(separator.id); + this.updatePreview(); +}; + +/** + * Connected to the import button. Given the file path inputted by the user + * from file input, if the import mode is for the toolbox, this function loads + * that toolbox XML to the workspace, creating category and separator tabs as + * necessary. If the import mode is for pre-loaded blocks in the workspace, + * this function loads that XML to the workspace to be edited further. This + * function switches mode to whatever the import mode is. Catches errors from + * file reading and prints an error message alerting the user. + * @param {string} file The path for the file to be imported into the workspace. + * Should contain valid toolbox XML. + * @param {string} importMode The mode corresponding to the type of file the + * user is importing (WorkspaceFactoryController.MODE_TOOLBOX or + * WorkspaceFactoryController.MODE_PRELOAD). + */ +WorkspaceFactoryController.prototype.importFile = function(file, importMode) { + // Exit if cancelled. + if (!file) { + return; + } + + Blockly.Events.disable(); + var controller = this; + var reader = new FileReader(); + + // To be executed when the reader has read the file. + reader.onload = function() { + // Try to parse XML from file and load it into toolbox editing area. + // Print error message if fail. + try { + var tree = Blockly.Xml.textToDom(reader.result); + if (importMode === WorkspaceFactoryController.MODE_TOOLBOX) { + // Switch mode. + controller.setMode(WorkspaceFactoryController.MODE_TOOLBOX); + + // Confirm that the user wants to override their current toolbox. + var hasToolboxElements = controller.model.hasElements() || + controller.toolboxWorkspace.getAllBlocks(false).length > 0; + if (hasToolboxElements) { + var msg = 'Are you sure you want to import? You will lose your ' + + 'current toolbox.'; + BlocklyDevTools.Analytics.onWarning(msg); + var continueAnyway = confirm(); + if (!continueAnyway) { + return; + } + } + // Import toolbox XML. + controller.importToolboxFromTree_(tree); + BlocklyDevTools.Analytics.onImport('Toolbox.xml'); + + } else if (importMode === WorkspaceFactoryController.MODE_PRELOAD) { + // Switch mode. + controller.setMode(WorkspaceFactoryController.MODE_PRELOAD); + + // Confirm that the user wants to override their current blocks. + if (controller.toolboxWorkspace.getAllBlocks(false).length > 0) { + var msg = 'Are you sure you want to import? You will lose your ' + + 'current workspace blocks.'; + var continueAnyway = confirm(msg); + BlocklyDevTools.Analytics.onWarning(msg); + if (!continueAnyway) { + return; + } + } + + // Import pre-loaded workspace XML. + controller.importPreloadFromTree_(tree); + BlocklyDevTools.Analytics.onImport('WorkspaceContents.xml'); + } else { + // Throw error if invalid mode. + throw Error('Unknown import mode: ' + importMode); + } + } catch(e) { + var msg = 'Cannot load XML from file.'; + alert(msg); + BlocklyDevTools.Analytics.onError(msg); + console.log(e); + } finally { + Blockly.Events.enable(); + } + } + + // Read the file asynchronously. + reader.readAsText(file); +}; + +/** + * Given a XML DOM tree, loads it into the toolbox editing area so that the + * user can continue editing their work. Assumes that tree is in valid toolbox + * XML format. Assumes that the mode is MODE_TOOLBOX. + * @param {!Element} tree XML tree to be loaded to toolbox editing area. + * @private + */ +WorkspaceFactoryController.prototype.importToolboxFromTree_ = function(tree) { + // Clear current editing area. + this.model.clearToolboxList(); + this.view.clearToolboxTabs(); + + if (tree.getElementsByTagName('category').length === 0) { + // No categories present. + // Load all the blocks into a single category evenly spaced. + Blockly.Xml.domToWorkspace(tree, this.toolboxWorkspace); + this.toolboxWorkspace.cleanUp(); + + // Convert actual shadow blocks to user-generated shadow blocks. + this.convertShadowBlocks(); + + // Add message to denote empty category. + this.view.addEmptyCategoryMessage(); + + } else { + // Categories/separators present. + for (var i = 0, item; item = tree.children[i]; i++) { + + if (item.tagName === 'category') { + // If the element is a category, create a new category and switch to it. + this.createCategory(item.getAttribute('name'), false); + var category = this.model.getElementByIndex(i); + this.switchElement(category.id); + + // Load all blocks in that category to the workspace to be evenly + // spaced and saved to that category. + for (var j = 0, blockXml; blockXml = item.children[j]; j++) { + Blockly.Xml.domToBlock(blockXml, this.toolboxWorkspace); + } + + // Evenly space the blocks. + this.toolboxWorkspace.cleanUp(); + + // Convert actual shadow blocks to user-generated shadow blocks. + this.convertShadowBlocks(); + + // Set category colour. + if (item.getAttribute('colour')) { + category.changeColour(item.getAttribute('colour')); + this.view.setBorderColour(category.id, category.colour); + } + // Set any custom tags. + if (item.getAttribute('custom')) { + this.model.addCustomTag(category, item.getAttribute('custom')); + } + } else { + // If the element is a separator, add the separator and switch to it. + this.addSeparator(); + this.switchElement(this.model.getElementByIndex(i).id); + } + } + } + this.view.updateState(this.model.getIndexByElementId + (this.model.getSelectedId()), this.model.getSelected()); + + this.saveStateFromWorkspace(); + + // Set default configuration options for a single flyout or multiple + // categories. + this.view.setCategoryOptions(this.model.hasElements()); + this.generateNewOptions(); + + this.updatePreview(); +}; + +/** + * Given a XML DOM tree, loads it into the pre-loaded workspace editing area. + * Assumes that tree is in valid XML format and that the selected mode is + * MODE_PRELOAD. + * @param {!Element} tree XML tree to be loaded to pre-loaded block editing + * area. + */ +WorkspaceFactoryController.prototype.importPreloadFromTree_ = function(tree) { + this.clearAndLoadXml_(tree); + this.model.savePreloadXml(tree); + this.updatePreview(); +}; + +/** + * Given a XML DOM tree, loads it into the pre-loaded workspace editing area. + * Assumes that tree is in valid XML format and that the selected mode is + * MODE_PRELOAD. + * @param {!Element} tree XML tree to be loaded to pre-loaded block editing + * area. + */ +WorkspaceFactoryController.prototype.importPreloadFromTree_ = function(tree) { + this.clearAndLoadXml_(tree); + this.model.savePreloadXml(tree); + this.saveStateFromWorkspace(); + this.updatePreview(); +}; + +/** + * Given a XML DOM tree, loads it into the pre-loaded workspace editing area. + * Assumes that tree is in valid XML format and that the selected mode is + * MODE_PRELOAD. + * @param {!Element} tree XML tree to be loaded to pre-loaded block editing + * area. + */ +WorkspaceFactoryController.prototype.importPreloadFromTree_ = function(tree) { + this.clearAndLoadXml_(tree); + this.model.savePreloadXml(tree); + this.saveStateFromWorkspace(); + this.updatePreview(); +}; + +/** + * Clears the editing area completely, deleting all categories and all + * blocks in the model and view and all pre-loaded blocks. Tied to the + * "Clear" button. + */ +WorkspaceFactoryController.prototype.clearAll = function() { + var msg = 'Are you sure you want to clear all of your work in Workspace' + + ' Factory?'; + BlocklyDevTools.Analytics.onWarning(msg); + if (!confirm(msg)) { + return; + } + this.model.clearToolboxList(); + this.view.clearToolboxTabs(); + this.model.savePreloadXml(Blockly.utils.xml.createElement('xml')); + this.view.addEmptyCategoryMessage(); + this.view.updateState(-1, null); + this.toolboxWorkspace.clear(); + this.toolboxWorkspace.clearUndo(); + this.saveStateFromWorkspace(); + this.hasUnsavedToolboxChanges = false; + this.hasUnsavedPreloadChanges = false; + this.view.setCategoryOptions(this.model.hasElements()); + this.generateNewOptions(); + this.updatePreview(); +}; + +/** + * Makes the currently selected block a user-generated shadow block. These + * blocks are not made into real shadow blocks, but recorded in the model + * and visually marked as shadow blocks, allowing the user to move and edit + * them (which would be impossible with actual shadow blocks). Updates the + * preview when done. + */ +WorkspaceFactoryController.prototype.addShadow = function() { + // No block selected to make a shadow block. + if (!Blockly.common.getSelected()) { + return; + } + // Clear any previous warnings on the block (would only have warnings on + // a non-shadow block if it was nested inside another shadow block). + Blockly.common.getSelected().setWarningText(null); + // Set selected block and all children as shadow blocks. + this.addShadowForBlockAndChildren_(Blockly.common.getSelected()); + + // Save and update the preview. + this.saveStateFromWorkspace(); + this.updatePreview(); +}; + +/** + * Sets a block and all of its children to be user-generated shadow blocks, + * both in the model and view. + * @param {!Blockly.Block} block The block to be converted to a user-generated + * shadow block. + * @private + */ +WorkspaceFactoryController.prototype.addShadowForBlockAndChildren_ = + function(block) { + // Convert to shadow block. + this.view.markShadowBlock(block); + this.model.addShadowBlock(block.id); + + if (FactoryUtils.hasVariableField(block)) { + block.setWarningText('Cannot make variable blocks shadow blocks.'); + } + + // Convert all children to shadow blocks recursively. + var children = block.getChildren(); + for (var i = 0; i < children.length; i++) { + this.addShadowForBlockAndChildren_(children[i]); + } +}; + +/** + * If the currently selected block is a user-generated shadow block, this + * function makes it a normal block again, removing it from the list of + * shadow blocks and loading the workspace again. Updates the preview again. + */ +WorkspaceFactoryController.prototype.removeShadow = function() { + // No block selected to modify. + if (!Blockly.common.getSelected()) { + return; + } + this.model.removeShadowBlock(Blockly.common.getSelected().id); + this.view.unmarkShadowBlock(Blockly.common.getSelected()); + + // If turning invalid shadow block back to normal block, remove warning. + Blockly.common.getSelected().setWarningText(null); + + this.saveStateFromWorkspace(); + this.updatePreview(); +}; + +/** + * Given a unique block ID, uses the model to determine if a block is a + * user-generated shadow block. + * @param {string} blockId The unique ID of the block to examine. + * @return {boolean} True if the block is a user-generated shadow block, false + * otherwise. + */ +WorkspaceFactoryController.prototype.isUserGenShadowBlock = function(blockId) { + return this.model.isShadowBlock(blockId); +}; + +/** + * Call when importing XML containing real shadow blocks. This function turns + * all real shadow blocks loaded in the workspace into user-generated shadow + * blocks, meaning they are marked as shadow blocks by the model and appear as + * shadow blocks in the view but are still editable and movable. + */ +WorkspaceFactoryController.prototype.convertShadowBlocks = function() { + var blocks = this.toolboxWorkspace.getAllBlocks(false); + for (var i = 0, block; block = blocks[i]; i++) { + if (block.isShadow()) { + block.setShadow(false); + // Delete the shadow DOM attached to the block so that the shadow block + // does not respawn. Dependent on implementation details. + var parentConnection = block.outputConnection ? + block.outputConnection.targetConnection : + block.previousConnection.targetConnection; + if (parentConnection) { + parentConnection.setShadowDom(null); + } + this.model.addShadowBlock(block.id); + this.view.markShadowBlock(block); + } + } +}; + +/** + * Sets the currently selected mode that determines what the toolbox workspace + * is being used to edit. Updates the view and then saves and loads XML + * to and from the toolbox and updates the help text. + * @param {string} tab The type of tab being switched to + * (WorkspaceFactoryController.MODE_TOOLBOX or + * WorkspaceFactoryController.MODE_PRELOAD). + */ +WorkspaceFactoryController.prototype.setMode = function(mode) { + // No work to change mode that's currently set. + if (this.selectedMode === mode) { + return; + } + + // No work to change mode that's currently set. + if (this.selectedMode === mode) { + return; + } + + // Set tab selection and display appropriate tab. + this.view.setModeSelection(mode); + + // Update selected tab. + this.selectedMode = mode; + + // Update help text above workspace. + this.view.updateHelpText(mode); + + if (mode === WorkspaceFactoryController.MODE_TOOLBOX) { + // Open the toolbox editing space. + this.model.savePreloadXml + (Blockly.Xml.workspaceToDom(this.toolboxWorkspace)); + this.clearAndLoadXml_(this.model.getSelectedXml()); + this.view.disableWorkspace(this.view.shouldDisableWorkspace + (this.model.getSelected())); + } else { + // Open the pre-loaded workspace editing space. + if (this.model.getSelected()) { + this.model.getSelected().saveFromWorkspace(this.toolboxWorkspace); + } + this.clearAndLoadXml_(this.model.getPreloadXml()); + this.view.disableWorkspace(false); + } +}; + +/** + * Clears the toolbox workspace and loads XML to it, marking shadow blocks + * as necessary. + * @private + * @param {!Element} xml The XML to be loaded to the workspace. + */ +WorkspaceFactoryController.prototype.clearAndLoadXml_ = function(xml) { + this.toolboxWorkspace.clear(); + this.toolboxWorkspace.clearUndo(); + Blockly.Xml.domToWorkspace(xml, this.toolboxWorkspace); + this.view.markShadowBlocks(this.model.getShadowBlocksInWorkspace + (this.toolboxWorkspace.getAllBlocks(false))); + this.warnForUndefinedBlocks_(); +}; + +/** + * Sets the standard default options for the options object and updates + * the preview workspace. The default values depends on if categories are + * present. + */ +WorkspaceFactoryController.prototype.setStandardOptionsAndUpdate = function() { + this.view.setBaseOptions(); + this.view.setCategoryOptions(this.model.hasElements()); + this.generateNewOptions(); +}; + +/** + * Generates a new options object for injecting a Blockly workspace based + * on user input. Should be called every time a change has been made to + * an input field. Updates the model and reinjects the preview workspace. + */ +WorkspaceFactoryController.prototype.generateNewOptions = function() { + this.model.setOptions(this.readOptions_()); + + this.reinjectPreview(Blockly.utils.toolbox.parseToolboxTree( + this.generator.generateToolboxXml())); +}; + +/** + * Generates a new options object for injecting a Blockly workspace based on + * user input. + * @return {!Object} Blockly injection options object. + * @private + */ +WorkspaceFactoryController.prototype.readOptions_ = function() { + var optionsObj = Object.create(null); + + // Add all standard options to the options object. + // Use parse int to get numbers from value inputs. + var readonly = document.getElementById('option_readOnly_checkbox').checked; + if (readonly) { + optionsObj['readOnly'] = true; + } else { + optionsObj['collapse'] = + document.getElementById('option_collapse_checkbox').checked; + optionsObj['comments'] = + document.getElementById('option_comments_checkbox').checked; + optionsObj['disable'] = + document.getElementById('option_disable_checkbox').checked; + if (document.getElementById('option_infiniteBlocks_checkbox').checked) { + optionsObj['maxBlocks'] = Infinity; + } else { + var maxBlocksValue = + document.getElementById('option_maxBlocks_number').value; + optionsObj['maxBlocks'] = typeof maxBlocksValue === 'string' ? + parseInt(maxBlocksValue) : maxBlocksValue; + } + optionsObj['trashcan'] = + document.getElementById('option_trashcan_checkbox').checked; + optionsObj['horizontalLayout'] = + document.getElementById('option_horizontalLayout_checkbox').checked; + optionsObj['toolboxPosition'] = + document.getElementById('option_toolboxPosition_checkbox').checked ? + 'end' : 'start'; + } + + optionsObj['css'] = document.getElementById('option_css_checkbox').checked; + optionsObj['media'] = document.getElementById('option_media_text').value; + optionsObj['rtl'] = document.getElementById('option_rtl_checkbox').checked; + optionsObj['scrollbars'] = + document.getElementById('option_scrollbars_checkbox').checked; + optionsObj['sounds'] = + document.getElementById('option_sounds_checkbox').checked; + optionsObj['oneBasedIndex'] = + document.getElementById('option_oneBasedIndex_checkbox').checked; + + // If using a grid, add all grid options. + if (document.getElementById('option_grid_checkbox').checked) { + var grid = Object.create(null); + var spacingValue = + document.getElementById('gridOption_spacing_number').value; + grid['spacing'] = typeof spacingValue === 'string' ? + parseInt(spacingValue) : spacingValue; + var lengthValue = document.getElementById('gridOption_length_number').value; + grid['length'] = typeof lengthValue === 'string' ? + parseInt(lengthValue) : lengthValue; + grid['colour'] = document.getElementById('gridOption_colour_text').value; + if (!readonly) { + grid['snap'] = + document.getElementById('gridOption_snap_checkbox').checked; + } + optionsObj['grid'] = grid; + } + + // If using zoom, add all zoom options. + if (document.getElementById('option_zoom_checkbox').checked) { + var zoom = Object.create(null); + zoom['controls'] = + document.getElementById('zoomOption_controls_checkbox').checked; + zoom['wheel'] = + document.getElementById('zoomOption_wheel_checkbox').checked; + var startScaleValue = + document.getElementById('zoomOption_startScale_number').value; + zoom['startScale'] = typeof startScaleValue === 'string' ? + Number(startScaleValue) : startScaleValue; + var maxScaleValue = + document.getElementById('zoomOption_maxScale_number').value; + zoom['maxScale'] = typeof maxScaleValue === 'string' ? + Number(maxScaleValue) : maxScaleValue; + var minScaleValue = + document.getElementById('zoomOption_minScale_number').value; + zoom['minScale'] = typeof minScaleValue === 'string' ? + Number(minScaleValue) : minScaleValue; + var scaleSpeedValue = + document.getElementById('zoomOption_scaleSpeed_number').value; + zoom['scaleSpeed'] = typeof scaleSpeedValue === 'string' ? + Number(scaleSpeedValue) : scaleSpeedValue; + optionsObj['zoom'] = zoom; + } + + return optionsObj; +}; + +/** + * Imports blocks from a file, generating a category in the toolbox workspace + * to allow the user to use imported blocks in the toolbox and in pre-loaded + * blocks. + * @param {!File} file File object for the blocks to import. + * @param {string} format The format of the file to import, either 'JSON' or + * 'JavaScript'. + */ +WorkspaceFactoryController.prototype.importBlocks = function(file, format) { + // Generate category name from file name. + var categoryName = file.name; + + var controller = this; + var reader = new FileReader(); + + // To be executed when the reader has read the file. + reader.onload = function() { + try { + // Define blocks using block types from file. + var blockTypes = FactoryUtils.defineAndGetBlockTypes(reader.result, + format); + + // If an imported block type is already defined, check if the user wants + // to override the current block definition. + if (controller.model.hasDefinedBlockTypes(blockTypes)) { + var msg = 'An imported block uses the same name as a block ' + + 'already in your toolbox. Are you sure you want to override the ' + + 'currently defined block?'; + var continueAnyway = confirm(msg); + BlocklyDevTools.Analytics.onWarning(msg); + if (!continueAnyway) { + return; + } + } + + var blocks = controller.generator.getDefinedBlocks(blockTypes); + // Generate category XML and append to toolbox. + var categoryXml = FactoryUtils.generateCategoryXml(blocks, categoryName); + // Get random colour for category between 0 and 360. Gives each imported + // category a different colour. + var randomColor = Math.floor(Math.random() * 360); + categoryXml.setAttribute('colour', randomColor); + controller.toolbox.appendChild(categoryXml); + controller.toolboxWorkspace.updateToolbox(controller.toolbox); + // Update imported block types. + controller.model.addImportedBlockTypes(blockTypes); + // Reload current category to possibly reflect any newly defined blocks. + controller.clearAndLoadXml_ + (Blockly.Xml.workspaceToDom(controller.toolboxWorkspace)); + + BlocklyDevTools.Analytics.onImport('BlockDefinitions' + + (format === 'JSON' ? '.json' : '.js')); + } catch (e) { + msg = 'Cannot read blocks from file.'; + alert(msg); + BlocklyDevTools.Analytics.onError(msg); + window.console.log(e); + } + } + + // Read the file asynchronously. + reader.readAsText(file); +}; + +/** + * Updates the block library category in the toolbox workspace toolbox. + * @param {!Element} categoryXml XML for the block library category. + * @param {!Array} libBlockTypes Array of block types from the block + * library. + */ +WorkspaceFactoryController.prototype.setBlockLibCategory = + function(categoryXml, libBlockTypes) { + var blockLibCategory = document.getElementById('blockLibCategory'); + + // Set category ID so that it can be easily replaced, and set a standard, + // arbitrary block library colour. + categoryXml.id = 'blockLibCategory'; + categoryXml.setAttribute('colour', 260); + + // Update the toolbox and toolboxWorkspace. + this.toolbox.replaceChild(categoryXml, blockLibCategory); + this.toolboxWorkspace.toolbox_.clearSelection(); + this.toolboxWorkspace.updateToolbox(this.toolbox); + + // Update the block library types. + this.model.updateLibBlockTypes(libBlockTypes); + + // Reload XML on page to account for blocks now defined or undefined in block + // library. + this.clearAndLoadXml_(Blockly.Xml.workspaceToDom(this.toolboxWorkspace)); +}; + +/** + * Return the block types used in the custom toolbox and pre-loaded workspace. + * @return {!Array} Block types used in the custom toolbox and + * pre-loaded workspace. + */ +WorkspaceFactoryController.prototype.getAllUsedBlockTypes = function() { + return this.model.getAllUsedBlockTypes(); +}; + +/** + * Determines if a block loaded in the workspace has a definition (if it + * is a standard block, is defined in the block library, or has a definition + * imported). + * @param {!Blockly.Block} block The block to examine. + */ +WorkspaceFactoryController.prototype.isDefinedBlock = function(block) { + return this.model.isDefinedBlockType(block.type); +}; + +/** + * Sets a warning on blocks loaded to the workspace that are not defined. + * @private + */ +WorkspaceFactoryController.prototype.warnForUndefinedBlocks_ = function() { + var blocks = this.toolboxWorkspace.getAllBlocks(false); + for (var i = 0, block; block = blocks[i]; i++) { + if (!this.isDefinedBlock(block)) { + block.setWarningText(block.type + ' is not defined (it is not a ' + + 'standard block,\nin your block library, or an imported block)'); + } + } +}; + +/** + * Determines if a standard variable category is in the custom toolbox. + * @return {boolean} True if a variables category is in use, false otherwise. + */ +WorkspaceFactoryController.prototype.hasVariablesCategory = function() { + return this.model.hasVariables(); +}; + +/** + * Determines if a standard procedures category is in the custom toolbox. + * @return {boolean} True if a procedures category is in use, false otherwise. + */ +WorkspaceFactoryController.prototype.hasProceduresCategory = function() { + return this.model.hasProcedures(); +}; + +/** + * Determines if there are any unsaved changes in workspace factory. + * @return {boolean} True if there are unsaved changes, false otherwise. + */ +WorkspaceFactoryController.prototype.hasUnsavedChanges = function() { + return this.hasUnsavedToolboxChanges || this.hasUnsavedPreloadChanges; +}; diff --git a/demos/blockfactory/workspacefactory/wfactory_generator.js b/demos/blockfactory/workspacefactory/wfactory_generator.js index 732db7c2e39..946119ab2bf 100644 --- a/demos/blockfactory/workspacefactory/wfactory_generator.js +++ b/demos/blockfactory/workspacefactory/wfactory_generator.js @@ -1,225 +1,225 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generates the configuration XML used to update the preview - * workspace or print to the console or download to a file. Leverages - * Blockly.Xml and depends on information in the model (holds a reference). - * Depends on a hidden workspace created in the generator to load saved XML in - * order to generate toolbox XML. - * - */ - - -/** - * Class for a WorkspaceFactoryGenerator - * @constructor - */ -WorkspaceFactoryGenerator = function(model) { - // Model to share information about categories and shadow blocks. - this.model = model; - // Create hidden workspace to load saved XML to generate toolbox XML. - var hiddenBlocks = document.createElement('div'); - // Generate a globally unique ID for the hidden div element to avoid - // collisions. - var hiddenBlocksId = Blockly.utils.genUid(); - hiddenBlocks.id = hiddenBlocksId; - hiddenBlocks.style.display = 'none'; - document.body.appendChild(hiddenBlocks); - this.hiddenWorkspace = Blockly.inject(hiddenBlocksId); -}; - -/** - * Generates the XML for the toolbox or flyout with information from - * toolboxWorkspace and the model. Uses the hiddenWorkspace to generate XML. - * Save state of workspace in model (saveFromWorkspace) before calling if - * changes might have been made to the selected category. - * @param {!Blockly.workspace} toolboxWorkspace Toolbox editing workspace where - * blocks are added by user to be part of the toolbox. - * @return {!Element} XML element representing toolbox or flyout corresponding - * to toolbox workspace. - */ -WorkspaceFactoryGenerator.prototype.generateToolboxXml = function() { - // Create DOM for XML. - var xmlDom = Blockly.utils.xml.createElement('xml'); - xmlDom.id = 'toolbox'; - xmlDom.setAttribute('style', 'display: none'); - - if (!this.model.hasElements()) { - // Toolbox has no categories. Use XML directly from workspace. - this.loadToHiddenWorkspace_(this.model.getSelectedXml()); - this.appendHiddenWorkspaceToDom_(xmlDom); - } else { - // Toolbox has categories. - // Assert that selected !== null - if (!this.model.getSelected()) { - throw Error('Selected is null when the toolbox is empty.'); - } - - var xml = this.model.getSelectedXml(); - var toolboxList = this.model.getToolboxList(); - - // Iterate through each category to generate XML for each using the - // hidden workspace. Load each category to the hidden workspace to make sure - // that all the blocks that are not top blocks are also captured as block - // groups in the flyout. - for (var i = 0; i < toolboxList.length; i++) { - var element = toolboxList[i]; - if (element.type === ListElement.TYPE_SEPARATOR) { - // If the next element is a separator. - var nextElement = Blockly.utils.xml.createElement('sep'); - } else if (element.type === ListElement.TYPE_CATEGORY) { - // If the next element is a category. - var nextElement = Blockly.utils.xml.createElement('category'); - nextElement.setAttribute('name', element.name); - // Add a colour attribute if one exists. - if (element.colour !== null) { - nextElement.setAttribute('colour', element.colour); - } - // Add a custom attribute if one exists. - if (element.custom !== null) { - nextElement.setAttribute('custom', element.custom); - } - // Load that category to hidden workspace, setting user-generated shadow - // blocks as real shadow blocks. - this.loadToHiddenWorkspace_(element.xml); - this.appendHiddenWorkspaceToDom_(nextElement); - } - xmlDom.appendChild(nextElement); - } - } - return xmlDom; - }; - - - /** - * Generates XML for the workspace (different from generateConfigXml in that - * it includes XY and ID attributes). Uses a workspace and converts user - * generated shadow blocks to actual shadow blocks. - * @return {!Element} XML element representing toolbox or flyout corresponding - * to toolbox workspace. - */ -WorkspaceFactoryGenerator.prototype.generateWorkspaceXml = function() { - // Load workspace XML to hidden workspace with user-generated shadow blocks - // as actual shadow blocks. - this.hiddenWorkspace.clear(); - Blockly.Xml.domToWorkspace(this.model.getPreloadXml(), this.hiddenWorkspace); - this.setShadowBlocksInHiddenWorkspace_(); - - // Generate XML and set attributes. - var xmlDom = Blockly.Xml.workspaceToDom(this.hiddenWorkspace); - xmlDom.id = 'workspaceBlocks'; - xmlDom.setAttribute('style', 'display: none'); - return xmlDom; -}; - -/** - * Generates a string representation of the options object for injecting the - * workspace and starter code. - * @return {string} String representation of starter code for injecting. - */ -WorkspaceFactoryGenerator.prototype.generateInjectString = function() { - var addAttributes = function(obj, tabChar) { - if (!obj) { - return '{}\n'; - } - var str = ''; - for (var key in obj) { - if (key === 'grid' || key === 'zoom') { - var temp = tabChar + key + ' : {\n' + addAttributes(obj[key], - tabChar + '\t') + tabChar + '}, \n'; - } else if (typeof obj[key] === 'string') { - var temp = tabChar + key + ' : \'' + obj[key] + '\', \n'; - } else { - var temp = tabChar + key + ' : ' + obj[key] + ', \n'; - } - str += temp; - } - var lastCommaIndex = str.lastIndexOf(','); - str = str.slice(0, lastCommaIndex) + '\n'; - return str; - }; - - var attributes = addAttributes(this.model.options, '\t'); - if (!this.model.options['readOnly']) { - attributes = '\ttoolbox : toolbox, \n' + - attributes; - } - var finalStr = '/* TODO: Change toolbox XML ID if necessary. Can export ' + - 'toolbox XML from Workspace Factory. */\n' + - 'var toolbox = document.getElementById("toolbox");\n\n'; - finalStr += 'var options = { \n' + attributes + '};'; - finalStr += '\n\n/* Inject your workspace */ \nvar workspace = Blockly.' + - 'inject(/* TODO: Add ID of div to inject Blockly into */, options);'; - finalStr += '\n\n/* Load Workspace Blocks from XML to workspace. ' + - 'Remove all code below if no blocks to load */\n\n' + - '/* TODO: Change workspace blocks XML ID if necessary. Can export' + - ' workspace blocks XML from Workspace Factory. */\n' + - 'var workspaceBlocks = document.getElementById("workspaceBlocks"); \n\n' + - '/* Load blocks to workspace. */\n' + - 'Blockly.Xml.domToWorkspace(workspaceBlocks, workspace);'; - return finalStr; -}; - -/** - * Loads the given XML to the hidden workspace and sets any user-generated - * shadow blocks to be actual shadow blocks. - * @param {!Element} xml The XML to be loaded to the hidden workspace. - * @private - */ -WorkspaceFactoryGenerator.prototype.loadToHiddenWorkspace_ = function(xml) { - this.hiddenWorkspace.clear(); - Blockly.Xml.domToWorkspace(xml, this.hiddenWorkspace); - this.setShadowBlocksInHiddenWorkspace_(); -}; - -/** - * Encodes blocks in the hidden workspace in a XML DOM element. Very - * similar to workspaceToDom, but doesn't capture IDs. Uses the top-level - * blocks loaded in hiddenWorkspace. - * @private - * @param {!Element} xmlDom Tree of XML elements to be appended to. - */ -WorkspaceFactoryGenerator.prototype.appendHiddenWorkspaceToDom_ = - function(xmlDom) { - var blocks = this.hiddenWorkspace.getTopBlocks(); - for (var i = 0, block; block = blocks[i]; i++) { - var blockChild = Blockly.Xml.blockToDom(block, /* opt_noId */ true); - xmlDom.appendChild(blockChild); - } -}; - -/** - * Sets the user-generated shadow blocks loaded into hiddenWorkspace to be - * actual shadow blocks. This is done so that blockToDom records them as - * shadow blocks instead of regular blocks. - * @private - */ -WorkspaceFactoryGenerator.prototype.setShadowBlocksInHiddenWorkspace_ = - function() { - var blocks = this.hiddenWorkspace.getAllBlocks(false); - for (var i = 0; i < blocks.length; i++) { - if (this.model.isShadowBlock(blocks[i].id)) { - blocks[i].setShadow(true); - } - } -}; - -/** - * Given a set of block types, gets the Blockly.Block objects for each block - * type. - * @param {!Array} blockTypes Array of blocks that have been defined. - * @return {!Array} Array of Blockly.Block objects corresponding - * to the array of blockTypes. - */ -WorkspaceFactoryGenerator.prototype.getDefinedBlocks = function(blockTypes) { - var blocks = []; - for (var i = 0; i < blockTypes.length ; i++) { - blocks.push(FactoryUtils.getDefinedBlock(blockTypes[i], - this.hiddenWorkspace)); - } - return blocks; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generates the configuration XML used to update the preview + * workspace or print to the console or download to a file. Leverages + * Blockly.Xml and depends on information in the model (holds a reference). + * Depends on a hidden workspace created in the generator to load saved XML in + * order to generate toolbox XML. + * + */ + + +/** + * Class for a WorkspaceFactoryGenerator + * @constructor + */ +WorkspaceFactoryGenerator = function(model) { + // Model to share information about categories and shadow blocks. + this.model = model; + // Create hidden workspace to load saved XML to generate toolbox XML. + var hiddenBlocks = document.createElement('div'); + // Generate a globally unique ID for the hidden div element to avoid + // collisions. + var hiddenBlocksId = Blockly.utils.genUid(); + hiddenBlocks.id = hiddenBlocksId; + hiddenBlocks.style.display = 'none'; + document.body.appendChild(hiddenBlocks); + this.hiddenWorkspace = Blockly.inject(hiddenBlocksId); +}; + +/** + * Generates the XML for the toolbox or flyout with information from + * toolboxWorkspace and the model. Uses the hiddenWorkspace to generate XML. + * Save state of workspace in model (saveFromWorkspace) before calling if + * changes might have been made to the selected category. + * @param {!Blockly.workspace} toolboxWorkspace Toolbox editing workspace where + * blocks are added by user to be part of the toolbox. + * @return {!Element} XML element representing toolbox or flyout corresponding + * to toolbox workspace. + */ +WorkspaceFactoryGenerator.prototype.generateToolboxXml = function() { + // Create DOM for XML. + var xmlDom = Blockly.utils.xml.createElement('xml'); + xmlDom.id = 'toolbox'; + xmlDom.setAttribute('style', 'display: none'); + + if (!this.model.hasElements()) { + // Toolbox has no categories. Use XML directly from workspace. + this.loadToHiddenWorkspace_(this.model.getSelectedXml()); + this.appendHiddenWorkspaceToDom_(xmlDom); + } else { + // Toolbox has categories. + // Assert that selected !== null + if (!this.model.getSelected()) { + throw Error('Selected is null when the toolbox is empty.'); + } + + var xml = this.model.getSelectedXml(); + var toolboxList = this.model.getToolboxList(); + + // Iterate through each category to generate XML for each using the + // hidden workspace. Load each category to the hidden workspace to make sure + // that all the blocks that are not top blocks are also captured as block + // groups in the flyout. + for (var i = 0; i < toolboxList.length; i++) { + var element = toolboxList[i]; + if (element.type === ListElement.TYPE_SEPARATOR) { + // If the next element is a separator. + var nextElement = Blockly.utils.xml.createElement('sep'); + } else if (element.type === ListElement.TYPE_CATEGORY) { + // If the next element is a category. + var nextElement = Blockly.utils.xml.createElement('category'); + nextElement.setAttribute('name', element.name); + // Add a colour attribute if one exists. + if (element.colour !== null) { + nextElement.setAttribute('colour', element.colour); + } + // Add a custom attribute if one exists. + if (element.custom !== null) { + nextElement.setAttribute('custom', element.custom); + } + // Load that category to hidden workspace, setting user-generated shadow + // blocks as real shadow blocks. + this.loadToHiddenWorkspace_(element.xml); + this.appendHiddenWorkspaceToDom_(nextElement); + } + xmlDom.appendChild(nextElement); + } + } + return xmlDom; + }; + + + /** + * Generates XML for the workspace (different from generateConfigXml in that + * it includes XY and ID attributes). Uses a workspace and converts user + * generated shadow blocks to actual shadow blocks. + * @return {!Element} XML element representing toolbox or flyout corresponding + * to toolbox workspace. + */ +WorkspaceFactoryGenerator.prototype.generateWorkspaceXml = function() { + // Load workspace XML to hidden workspace with user-generated shadow blocks + // as actual shadow blocks. + this.hiddenWorkspace.clear(); + Blockly.Xml.domToWorkspace(this.model.getPreloadXml(), this.hiddenWorkspace); + this.setShadowBlocksInHiddenWorkspace_(); + + // Generate XML and set attributes. + var xmlDom = Blockly.Xml.workspaceToDom(this.hiddenWorkspace); + xmlDom.id = 'workspaceBlocks'; + xmlDom.setAttribute('style', 'display: none'); + return xmlDom; +}; + +/** + * Generates a string representation of the options object for injecting the + * workspace and starter code. + * @return {string} String representation of starter code for injecting. + */ +WorkspaceFactoryGenerator.prototype.generateInjectString = function() { + var addAttributes = function(obj, tabChar) { + if (!obj) { + return '{}\n'; + } + var str = ''; + for (var key in obj) { + if (key === 'grid' || key === 'zoom') { + var temp = tabChar + key + ' : {\n' + addAttributes(obj[key], + tabChar + '\t') + tabChar + '}, \n'; + } else if (typeof obj[key] === 'string') { + var temp = tabChar + key + ' : \'' + obj[key] + '\', \n'; + } else { + var temp = tabChar + key + ' : ' + obj[key] + ', \n'; + } + str += temp; + } + var lastCommaIndex = str.lastIndexOf(','); + str = str.slice(0, lastCommaIndex) + '\n'; + return str; + }; + + var attributes = addAttributes(this.model.options, '\t'); + if (!this.model.options['readOnly']) { + attributes = '\ttoolbox : toolbox, \n' + + attributes; + } + var finalStr = '/* TODO: Change toolbox XML ID if necessary. Can export ' + + 'toolbox XML from Workspace Factory. */\n' + + 'var toolbox = document.getElementById("toolbox");\n\n'; + finalStr += 'var options = { \n' + attributes + '};'; + finalStr += '\n\n/* Inject your workspace */ \nvar workspace = Blockly.' + + 'inject(/* TODO: Add ID of div to inject Blockly into */, options);'; + finalStr += '\n\n/* Load Workspace Blocks from XML to workspace. ' + + 'Remove all code below if no blocks to load */\n\n' + + '/* TODO: Change workspace blocks XML ID if necessary. Can export' + + ' workspace blocks XML from Workspace Factory. */\n' + + 'var workspaceBlocks = document.getElementById("workspaceBlocks"); \n\n' + + '/* Load blocks to workspace. */\n' + + 'Blockly.Xml.domToWorkspace(workspaceBlocks, workspace);'; + return finalStr; +}; + +/** + * Loads the given XML to the hidden workspace and sets any user-generated + * shadow blocks to be actual shadow blocks. + * @param {!Element} xml The XML to be loaded to the hidden workspace. + * @private + */ +WorkspaceFactoryGenerator.prototype.loadToHiddenWorkspace_ = function(xml) { + this.hiddenWorkspace.clear(); + Blockly.Xml.domToWorkspace(xml, this.hiddenWorkspace); + this.setShadowBlocksInHiddenWorkspace_(); +}; + +/** + * Encodes blocks in the hidden workspace in a XML DOM element. Very + * similar to workspaceToDom, but doesn't capture IDs. Uses the top-level + * blocks loaded in hiddenWorkspace. + * @private + * @param {!Element} xmlDom Tree of XML elements to be appended to. + */ +WorkspaceFactoryGenerator.prototype.appendHiddenWorkspaceToDom_ = + function(xmlDom) { + var blocks = this.hiddenWorkspace.getTopBlocks(); + for (var i = 0, block; block = blocks[i]; i++) { + var blockChild = Blockly.Xml.blockToDom(block, /* opt_noId */ true); + xmlDom.appendChild(blockChild); + } +}; + +/** + * Sets the user-generated shadow blocks loaded into hiddenWorkspace to be + * actual shadow blocks. This is done so that blockToDom records them as + * shadow blocks instead of regular blocks. + * @private + */ +WorkspaceFactoryGenerator.prototype.setShadowBlocksInHiddenWorkspace_ = + function() { + var blocks = this.hiddenWorkspace.getAllBlocks(false); + for (var i = 0; i < blocks.length; i++) { + if (this.model.isShadowBlock(blocks[i].id)) { + blocks[i].setShadow(true); + } + } +}; + +/** + * Given a set of block types, gets the Blockly.Block objects for each block + * type. + * @param {!Array} blockTypes Array of blocks that have been defined. + * @return {!Array} Array of Blockly.Block objects corresponding + * to the array of blockTypes. + */ +WorkspaceFactoryGenerator.prototype.getDefinedBlocks = function(blockTypes) { + var blocks = []; + for (var i = 0; i < blockTypes.length ; i++) { + blocks.push(FactoryUtils.getDefinedBlock(blockTypes[i], + this.hiddenWorkspace)); + } + return blocks; +}; diff --git a/demos/blockfactory/workspacefactory/wfactory_init.js b/demos/blockfactory/workspacefactory/wfactory_init.js index c04f451a988..97e50e2268d 100644 --- a/demos/blockfactory/workspacefactory/wfactory_init.js +++ b/demos/blockfactory/workspacefactory/wfactory_init.js @@ -1,542 +1,542 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Contains the init functions for the workspace factory tab. - * Adds click handlers to buttons and dropdowns, adds event listeners for - * keydown events and Blockly events, and configures the initial setup of - * the page. - * - */ - -/** - * Namespace for workspace factory initialization methods. - * @namespace - */ -WorkspaceFactoryInit = {}; - -/** - * Initialization for workspace factory tab. - * @param {!FactoryController} controller The controller for the workspace - * factory tab. - */ -WorkspaceFactoryInit.initWorkspaceFactory = function(controller) { - // Disable category editing buttons until categories are created. - document.getElementById('button_remove').disabled = true; - document.getElementById('button_up').disabled = true; - document.getElementById('button_down').disabled = true; - document.getElementById('button_editCategory').disabled = true; - - this.initColourPicker_(controller); - this.addWorkspaceFactoryEventListeners_(controller); - this.assignWorkspaceFactoryClickHandlers_(controller); - this.addWorkspaceFactoryOptionsListeners_(controller); - - // Check standard options and apply the changes to update the view. - controller.setStandardOptionsAndUpdate(); -}; - -/** - * Initialize the colour picker in workspace factory. - * @param {!FactoryController} controller The controller for the workspace - * factory tab. - * @private - */ -WorkspaceFactoryInit.initColourPicker_ = function(controller) { - // Array of Blockly category colours, consistent with the colour defaults. - var colours = [20, 65, 120, 160, 210, 230, 260, 290, 330, '']; - // Convert hue numbers to RRGGBB strings. - for (var i = 0; i < colours.length; i++) { - if (colours[i] !== '') { - colours[i] = Blockly.utils.colour.hueToHex(colours[i]).substring(1); - } - } - // Convert to 2D array. - var maxCols = Math.ceil(Math.sqrt(colours.length)); - var grid = []; - var row = []; - for (var i = 0; i < colours.length; i++) { - row.push(colours[i]); - if (row.length === maxCols) { - grid.push(row); - row = []; - } - } - if (row.length) { - grid.push(row); - } - - // Override the default colours. - cp_grid = grid; -}; - -/** - * Assign click handlers for workspace factory. - * @param {!FactoryController} controller The controller for the workspace - * factory tab. - * @private - */ -WorkspaceFactoryInit.assignWorkspaceFactoryClickHandlers_ = - function(controller) { - - // Import Custom Blocks button. - document.getElementById('button_importBlocks').addEventListener - ('click', - function() { - blocklyFactory.openModal('dropdownDiv_importBlocks'); - }); - document.getElementById('input_importBlocksJson').addEventListener - ('change', - function() { - controller.importBlocks(event.target.files[0], 'JSON'); - }); - document.getElementById('input_importBlocksJson').addEventListener - ('click', function() {blocklyFactory.closeModal()}); - document.getElementById('input_importBlocksJs').addEventListener - ('change', - function() { - controller.importBlocks(event.target.files[0], 'JavaScript'); - }); - document.getElementById('input_importBlocksJs').addEventListener - ('click', function() {blocklyFactory.closeModal()}); - - // Load to Edit button. - document.getElementById('button_load').addEventListener - ('click', - function() { - blocklyFactory.openModal('dropdownDiv_load'); - }); - document.getElementById('input_loadToolbox').addEventListener - ('change', - function() { - controller.importFile(event.target.files[0], - WorkspaceFactoryController.MODE_TOOLBOX); - }); - document.getElementById('input_loadToolbox').addEventListener - ('click', function() {blocklyFactory.closeModal()}); - document.getElementById('input_loadPreload').addEventListener - ('change', - function() { - controller.importFile(event.target.files[0], - WorkspaceFactoryController.MODE_PRELOAD); - }); - document.getElementById('input_loadPreload').addEventListener - ('click', function() {blocklyFactory.closeModal()}); - - // Export button. - document.getElementById('dropdown_exportOptions').addEventListener - ('click', - function() { - controller.exportInjectFile(); - blocklyFactory.closeModal(); - }); - document.getElementById('dropdown_exportToolbox').addEventListener - ('click', - function() { - controller.exportXmlFile(WorkspaceFactoryController.MODE_TOOLBOX); - blocklyFactory.closeModal(); - }); - document.getElementById('dropdown_exportPreload').addEventListener - ('click', - function() { - controller.exportXmlFile(WorkspaceFactoryController.MODE_PRELOAD); - blocklyFactory.closeModal(); - }); - document.getElementById('dropdown_exportAll').addEventListener - ('click', - function() { - controller.exportInjectFile(); - controller.exportXmlFile(WorkspaceFactoryController.MODE_TOOLBOX); - controller.exportXmlFile(WorkspaceFactoryController.MODE_PRELOAD); - blocklyFactory.closeModal(); - }); - document.getElementById('button_export').addEventListener - ('click', - function() { - blocklyFactory.openModal('dropdownDiv_export'); - }); - - // Clear button. - document.getElementById('button_clear').addEventListener - ('click', - function() { - controller.clearAll(); - }); - - // Toolbox and Workspace tabs. - document.getElementById('tab_toolbox').addEventListener - ('click', - function() { - controller.setMode(WorkspaceFactoryController.MODE_TOOLBOX); - }); - document.getElementById('tab_preload').addEventListener - ('click', - function() { - controller.setMode(WorkspaceFactoryController.MODE_PRELOAD); - }); - - // '+' button. - document.getElementById('button_add').addEventListener - ('click', - function() { - blocklyFactory.openModal('dropdownDiv_add'); - }); - document.getElementById('dropdown_newCategory').addEventListener - ('click', - function() { - controller.addCategory(); - blocklyFactory.closeModal(); - }); - document.getElementById('dropdown_loadCategory').addEventListener - ('click', - function() { - controller.loadCategory(); - blocklyFactory.closeModal(); - }); - document.getElementById('dropdown_separator').addEventListener - ('click', - function() { - controller.addSeparator(); - blocklyFactory.closeModal(); - }); - document.getElementById('dropdown_loadStandardToolbox').addEventListener - ('click', - function() { - controller.loadStandardToolbox(); - blocklyFactory.closeModal(); - }); - - // '-' button. - document.getElementById('button_remove').addEventListener - ('click', - function() { - controller.removeElement(); - }); - - // Up/Down buttons. - document.getElementById('button_up').addEventListener - ('click', - function() { - controller.moveElement(-1); - }); - document.getElementById('button_down').addEventListener - ('click', - function() { - controller.moveElement(1); - }); - - // Edit Category button. - document.getElementById('button_editCategory').addEventListener - ('click', - function() { - var selected = controller.model.getSelected(); - // Return if a category is not selected. - if (selected.type !== ListElement.TYPE_CATEGORY) { - return; - } - document.getElementById('categoryName').value = selected.name; - document.getElementById('categoryColour').value = selected.colour ? - selected.colour.substring(1).toLowerCase() : ''; - console.log(document.getElementById('categoryColour').value); - // Link the colour picker to the field. - cp_init('categoryColour'); - blocklyFactory.openModal('dropdownDiv_editCategory'); - }); - - document.getElementById('categorySave').addEventListener - ('click', - function() { - var name = document.getElementById('categoryName').value.trim(); - var colour = document.getElementById('categoryColour').value; - colour = colour ? '#' + colour : null; - controller.changeSelectedCategory(name, colour); - blocklyFactory.closeModal(); - }); - - // Make/Remove Shadow buttons. - document.getElementById('button_addShadow').addEventListener - ('click', - function() { - controller.addShadow(); - WorkspaceFactoryInit.displayAddShadow_(false); - WorkspaceFactoryInit.displayRemoveShadow_(true); - }); - document.getElementById('button_removeShadow').addEventListener - ('click', - function() { - controller.removeShadow(); - WorkspaceFactoryInit.displayAddShadow_(true); - WorkspaceFactoryInit.displayRemoveShadow_(false); - - // Disable shadow editing button if turning invalid shadow block back - // to normal block. - if (!Blockly.common.getSelected().getSurroundParent()) { - document.getElementById('button_addShadow').disabled = true; - } - }); - - // Help button on workspace tab. - document.getElementById('button_optionsHelp').addEventListener - ('click', function() { - open('https://developers.google.com/blockly/guides/get-started/web#configuration'); - }); - - // Reset to Default button on workspace tab. - document.getElementById('button_standardOptions').addEventListener - ('click', function() { - controller.setStandardOptionsAndUpdate(); - }); -}; - -/** - * Add event listeners for workspace factory. - * @param {!FactoryController} controller The controller for the workspace - * factory tab. - * @private - */ -WorkspaceFactoryInit.addWorkspaceFactoryEventListeners_ = function(controller) { - // Use up and down arrow keys to move categories. - window.addEventListener('keydown', function(e) { - // Don't let arrow keys have any effect if not in Workspace Factory - // editing the toolbox. - if (!(controller.keyEventsEnabled && controller.selectedMode - === WorkspaceFactoryController.MODE_TOOLBOX)) { - return; - } - - if (e.keyCode === 38) { - // Arrow up. - controller.moveElement(-1); - } else if (e.keyCode === 40) { - // Arrow down. - controller.moveElement(1); - } - }); - - // Determines if a block breaks shadow block placement rules. - // Breaks rules if (1) a shadow block no longer has a valid - // parent, or (2) a normal block is inside of a shadow block. - var isInvalidBlockPlacement = function(block) { - return ((controller.isUserGenShadowBlock(block.id) && - !block.getSurroundParent()) || - (!controller.isUserGenShadowBlock(block.id) && - block.getSurroundParent() && - controller.isUserGenShadowBlock(block.getSurroundParent().id))); - }; - - // Add change listeners for toolbox workspace in workspace factory. - controller.toolboxWorkspace.addChangeListener(function(e) { - // Listen for Blockly move and delete events to update preview. - // Not listening for Blockly create events because causes the user to drop - // blocks when dragging them into workspace. Could cause problems if ever - // load blocks into workspace directly without calling updatePreview. - if (e.type === Blockly.Events.BLOCK_MOVE || - e.type === Blockly.Events.BLOCK_DELETE || - e.type === Blockly.Events.BLOCK_CHANGE) { - controller.saveStateFromWorkspace(); - controller.updatePreview(); - } - - // Listen for Blockly UI events to correctly enable the "Edit Block" button. - // Only enable "Edit Block" when a block is selected and it has a - // surrounding parent, meaning it is nested in another block (blocks that - // are not nested in parents cannot be shadow blocks). - if (e.type === Blockly.Events.BLOCK_MOVE || - e.type === Blockly.Events.SELECTED) { - var selected = Blockly.common.getSelected(); - - // Show shadow button if a block is selected. Show "Add Shadow" if - // a block is not a shadow block, show "Remove Shadow" if it is a - // shadow block. - if (selected) { - var isShadow = controller.isUserGenShadowBlock(selected.id); - WorkspaceFactoryInit.displayAddShadow_(!isShadow); - WorkspaceFactoryInit.displayRemoveShadow_(isShadow); - } else { - WorkspaceFactoryInit.displayAddShadow_(false); - WorkspaceFactoryInit.displayRemoveShadow_(false); - } - - if (selected !== null && selected.getSurroundParent() !== null && - !controller.isUserGenShadowBlock(selected.getSurroundParent().id)) { - // Selected block is a valid shadow block or could be a valid shadow - // block. - - // Enable block editing and remove warnings if the block is not a - // variable user-generated shadow block. - document.getElementById('button_addShadow').disabled = false; - document.getElementById('button_removeShadow').disabled = false; - - if (!FactoryUtils.hasVariableField(selected) && - controller.isDefinedBlock(selected)) { - selected.setWarningText(null); - } - } else { - // Selected block cannot be a valid shadow block. - - if (selected !== null && isInvalidBlockPlacement(selected)) { - // Selected block breaks shadow block rules. - // Invalid shadow block if (1) a shadow block no longer has a valid - // parent, or (2) a normal block is inside of a shadow block. - - if (!controller.isUserGenShadowBlock(selected.id)) { - // Warn if a non-shadow block is nested inside a shadow block. - selected.setWarningText('Only shadow blocks can be nested inside\n' - + 'other shadow blocks.'); - } else if (!FactoryUtils.hasVariableField(selected)) { - // Warn if a shadow block is invalid only if not replacing - // warning for variables. - selected.setWarningText('Shadow blocks must be nested inside other' - + ' blocks.') - } - - // Give editing options so that the user can make an invalid shadow - // block a normal block. - document.getElementById('button_removeShadow').disabled = false; - document.getElementById('button_addShadow').disabled = true; - } else { - // Selected block does not break any shadow block rules, but cannot - // be a shadow block. - - // Remove possible 'invalid shadow block placement' warning. - if (selected !== null && controller.isDefinedBlock(selected) && - (!FactoryUtils.hasVariableField(selected) || - !controller.isUserGenShadowBlock(selected.id))) { - selected.setWarningText(null); - } - - // No block selected that is a shadow block or could be a valid shadow - // block. Disable block editing. - document.getElementById('button_addShadow').disabled = true; - document.getElementById('button_removeShadow').disabled = true; - } - } - } - - // Convert actual shadow blocks added from the toolbox to user-generated - // shadow blocks. - if (e.type === Blockly.Events.BLOCK_CREATE) { - controller.convertShadowBlocks(); - - // Let the user create a Variables or Functions category if they use - // blocks from either category. - - // Get all children of a block and add them to childList. - var getAllChildren = function(block, childList) { - childList.push(block); - var children = block.getChildren(); - for (var i = 0, child; child = children[i]; i++) { - getAllChildren(child, childList); - } - }; - - var newBaseBlock = controller.toolboxWorkspace.getBlockById(e.blockId); - var allNewBlocks = []; - getAllChildren(newBaseBlock, allNewBlocks); - var variableCreated = false; - var procedureCreated = false; - - // Check if the newly created block or any of its children are variable - // or procedure blocks. - for (var i = 0, block; block = allNewBlocks[i]; i++) { - if (FactoryUtils.hasVariableField(block)) { - variableCreated = true; - } else if (FactoryUtils.isProcedureBlock(block)) { - procedureCreated = true; - } - } - - // If any of the newly created blocks are variable or procedure blocks, - // prompt the user to create the corresponding standard category. - if (variableCreated && !controller.hasVariablesCategory()) { - if (confirm('Your new block has a variables field. To use this block ' - + 'fully, you will need a Variables category. Do you want to add ' - + 'a Variables category to your custom toolbox?')) { - controller.setMode(WorkspaceFactoryController.MODE_TOOLBOX); - controller.loadCategoryByName('variables'); - } - } - - if (procedureCreated && !controller.hasProceduresCategory()) { - if (confirm('Your new block is a function block. To use this block ' - + 'fully, you will need a Functions category. Do you want to add ' - + 'a Functions category to your custom toolbox?')) { - controller.setMode(WorkspaceFactoryController.MODE_TOOLBOX); - controller.loadCategoryByName('functions'); - } - } - } - }); -}; - -/** - * Display or hide the add shadow button. - * @param {boolean} show True if the add shadow button should be shown, false - * otherwise. - */ -WorkspaceFactoryInit.displayAddShadow_ = function(show) { - document.getElementById('button_addShadow').style.display = - show ? 'inline-block' : 'none'; -}; - -/** - * Display or hide the remove shadow button. - * @param {boolean} show True if the remove shadow button should be shown, false - * otherwise. - */ -WorkspaceFactoryInit.displayRemoveShadow_ = function(show) { - document.getElementById('button_removeShadow').style.display = - show ? 'inline-block' : 'none'; -}; - -/** - * Add listeners for workspace factory options input elements. - * @param {!FactoryController} controller The controller for the workspace - * factory tab. - * @private - */ -WorkspaceFactoryInit.addWorkspaceFactoryOptionsListeners_ = - function(controller) { - // Checking the grid checkbox displays grid options. - document.getElementById('option_grid_checkbox').addEventListener('change', - function(e) { - document.getElementById('grid_options').style.display = - document.getElementById('option_grid_checkbox').checked ? - 'block' : 'none'; - }); - - // Checking the zoom checkbox displays zoom options. - document.getElementById('option_zoom_checkbox').addEventListener('change', - function(e) { - document.getElementById('zoom_options').style.display = - document.getElementById('option_zoom_checkbox').checked ? - 'block' : 'none'; - }); - - // Checking the readonly checkbox enables/disables other options. - document.getElementById('option_readOnly_checkbox').addEventListener('change', - function(e) { - var checkbox = document.getElementById('option_readOnly_checkbox'); - blocklyFactory.ifCheckedEnable(!checkbox.checked, - ['readonly1', 'readonly2']); - }); - - document.getElementById('option_infiniteBlocks_checkbox').addEventListener('change', - function(e) { - document.getElementById('maxBlockNumber_option').style.display = - document.getElementById('option_infiniteBlocks_checkbox').checked ? - 'none' : 'block'; - }); - - // Generate new options every time an options input is updated. - var div = document.getElementById('workspace_options'); - var options = div.getElementsByTagName('input'); - for (var i = 0, option; option = options[i]; i++) { - option.addEventListener('change', function() { - controller.generateNewOptions(); - }); - } -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Contains the init functions for the workspace factory tab. + * Adds click handlers to buttons and dropdowns, adds event listeners for + * keydown events and Blockly events, and configures the initial setup of + * the page. + * + */ + +/** + * Namespace for workspace factory initialization methods. + * @namespace + */ +WorkspaceFactoryInit = {}; + +/** + * Initialization for workspace factory tab. + * @param {!FactoryController} controller The controller for the workspace + * factory tab. + */ +WorkspaceFactoryInit.initWorkspaceFactory = function(controller) { + // Disable category editing buttons until categories are created. + document.getElementById('button_remove').disabled = true; + document.getElementById('button_up').disabled = true; + document.getElementById('button_down').disabled = true; + document.getElementById('button_editCategory').disabled = true; + + this.initColourPicker_(controller); + this.addWorkspaceFactoryEventListeners_(controller); + this.assignWorkspaceFactoryClickHandlers_(controller); + this.addWorkspaceFactoryOptionsListeners_(controller); + + // Check standard options and apply the changes to update the view. + controller.setStandardOptionsAndUpdate(); +}; + +/** + * Initialize the colour picker in workspace factory. + * @param {!FactoryController} controller The controller for the workspace + * factory tab. + * @private + */ +WorkspaceFactoryInit.initColourPicker_ = function(controller) { + // Array of Blockly category colours, consistent with the colour defaults. + var colours = [20, 65, 120, 160, 210, 230, 260, 290, 330, '']; + // Convert hue numbers to RRGGBB strings. + for (var i = 0; i < colours.length; i++) { + if (colours[i] !== '') { + colours[i] = Blockly.utils.colour.hueToHex(colours[i]).substring(1); + } + } + // Convert to 2D array. + var maxCols = Math.ceil(Math.sqrt(colours.length)); + var grid = []; + var row = []; + for (var i = 0; i < colours.length; i++) { + row.push(colours[i]); + if (row.length === maxCols) { + grid.push(row); + row = []; + } + } + if (row.length) { + grid.push(row); + } + + // Override the default colours. + cp_grid = grid; +}; + +/** + * Assign click handlers for workspace factory. + * @param {!FactoryController} controller The controller for the workspace + * factory tab. + * @private + */ +WorkspaceFactoryInit.assignWorkspaceFactoryClickHandlers_ = + function(controller) { + + // Import Custom Blocks button. + document.getElementById('button_importBlocks').addEventListener + ('click', + function() { + blocklyFactory.openModal('dropdownDiv_importBlocks'); + }); + document.getElementById('input_importBlocksJson').addEventListener + ('change', + function() { + controller.importBlocks(event.target.files[0], 'JSON'); + }); + document.getElementById('input_importBlocksJson').addEventListener + ('click', function() {blocklyFactory.closeModal()}); + document.getElementById('input_importBlocksJs').addEventListener + ('change', + function() { + controller.importBlocks(event.target.files[0], 'JavaScript'); + }); + document.getElementById('input_importBlocksJs').addEventListener + ('click', function() {blocklyFactory.closeModal()}); + + // Load to Edit button. + document.getElementById('button_load').addEventListener + ('click', + function() { + blocklyFactory.openModal('dropdownDiv_load'); + }); + document.getElementById('input_loadToolbox').addEventListener + ('change', + function() { + controller.importFile(event.target.files[0], + WorkspaceFactoryController.MODE_TOOLBOX); + }); + document.getElementById('input_loadToolbox').addEventListener + ('click', function() {blocklyFactory.closeModal()}); + document.getElementById('input_loadPreload').addEventListener + ('change', + function() { + controller.importFile(event.target.files[0], + WorkspaceFactoryController.MODE_PRELOAD); + }); + document.getElementById('input_loadPreload').addEventListener + ('click', function() {blocklyFactory.closeModal()}); + + // Export button. + document.getElementById('dropdown_exportOptions').addEventListener + ('click', + function() { + controller.exportInjectFile(); + blocklyFactory.closeModal(); + }); + document.getElementById('dropdown_exportToolbox').addEventListener + ('click', + function() { + controller.exportXmlFile(WorkspaceFactoryController.MODE_TOOLBOX); + blocklyFactory.closeModal(); + }); + document.getElementById('dropdown_exportPreload').addEventListener + ('click', + function() { + controller.exportXmlFile(WorkspaceFactoryController.MODE_PRELOAD); + blocklyFactory.closeModal(); + }); + document.getElementById('dropdown_exportAll').addEventListener + ('click', + function() { + controller.exportInjectFile(); + controller.exportXmlFile(WorkspaceFactoryController.MODE_TOOLBOX); + controller.exportXmlFile(WorkspaceFactoryController.MODE_PRELOAD); + blocklyFactory.closeModal(); + }); + document.getElementById('button_export').addEventListener + ('click', + function() { + blocklyFactory.openModal('dropdownDiv_export'); + }); + + // Clear button. + document.getElementById('button_clear').addEventListener + ('click', + function() { + controller.clearAll(); + }); + + // Toolbox and Workspace tabs. + document.getElementById('tab_toolbox').addEventListener + ('click', + function() { + controller.setMode(WorkspaceFactoryController.MODE_TOOLBOX); + }); + document.getElementById('tab_preload').addEventListener + ('click', + function() { + controller.setMode(WorkspaceFactoryController.MODE_PRELOAD); + }); + + // '+' button. + document.getElementById('button_add').addEventListener + ('click', + function() { + blocklyFactory.openModal('dropdownDiv_add'); + }); + document.getElementById('dropdown_newCategory').addEventListener + ('click', + function() { + controller.addCategory(); + blocklyFactory.closeModal(); + }); + document.getElementById('dropdown_loadCategory').addEventListener + ('click', + function() { + controller.loadCategory(); + blocklyFactory.closeModal(); + }); + document.getElementById('dropdown_separator').addEventListener + ('click', + function() { + controller.addSeparator(); + blocklyFactory.closeModal(); + }); + document.getElementById('dropdown_loadStandardToolbox').addEventListener + ('click', + function() { + controller.loadStandardToolbox(); + blocklyFactory.closeModal(); + }); + + // '-' button. + document.getElementById('button_remove').addEventListener + ('click', + function() { + controller.removeElement(); + }); + + // Up/Down buttons. + document.getElementById('button_up').addEventListener + ('click', + function() { + controller.moveElement(-1); + }); + document.getElementById('button_down').addEventListener + ('click', + function() { + controller.moveElement(1); + }); + + // Edit Category button. + document.getElementById('button_editCategory').addEventListener + ('click', + function() { + var selected = controller.model.getSelected(); + // Return if a category is not selected. + if (selected.type !== ListElement.TYPE_CATEGORY) { + return; + } + document.getElementById('categoryName').value = selected.name; + document.getElementById('categoryColour').value = selected.colour ? + selected.colour.substring(1).toLowerCase() : ''; + console.log(document.getElementById('categoryColour').value); + // Link the colour picker to the field. + cp_init('categoryColour'); + blocklyFactory.openModal('dropdownDiv_editCategory'); + }); + + document.getElementById('categorySave').addEventListener + ('click', + function() { + var name = document.getElementById('categoryName').value.trim(); + var colour = document.getElementById('categoryColour').value; + colour = colour ? '#' + colour : null; + controller.changeSelectedCategory(name, colour); + blocklyFactory.closeModal(); + }); + + // Make/Remove Shadow buttons. + document.getElementById('button_addShadow').addEventListener + ('click', + function() { + controller.addShadow(); + WorkspaceFactoryInit.displayAddShadow_(false); + WorkspaceFactoryInit.displayRemoveShadow_(true); + }); + document.getElementById('button_removeShadow').addEventListener + ('click', + function() { + controller.removeShadow(); + WorkspaceFactoryInit.displayAddShadow_(true); + WorkspaceFactoryInit.displayRemoveShadow_(false); + + // Disable shadow editing button if turning invalid shadow block back + // to normal block. + if (!Blockly.common.getSelected().getSurroundParent()) { + document.getElementById('button_addShadow').disabled = true; + } + }); + + // Help button on workspace tab. + document.getElementById('button_optionsHelp').addEventListener + ('click', function() { + open('https://developers.google.com/blockly/guides/get-started/web#configuration'); + }); + + // Reset to Default button on workspace tab. + document.getElementById('button_standardOptions').addEventListener + ('click', function() { + controller.setStandardOptionsAndUpdate(); + }); +}; + +/** + * Add event listeners for workspace factory. + * @param {!FactoryController} controller The controller for the workspace + * factory tab. + * @private + */ +WorkspaceFactoryInit.addWorkspaceFactoryEventListeners_ = function(controller) { + // Use up and down arrow keys to move categories. + window.addEventListener('keydown', function(e) { + // Don't let arrow keys have any effect if not in Workspace Factory + // editing the toolbox. + if (!(controller.keyEventsEnabled && controller.selectedMode + === WorkspaceFactoryController.MODE_TOOLBOX)) { + return; + } + + if (e.keyCode === 38) { + // Arrow up. + controller.moveElement(-1); + } else if (e.keyCode === 40) { + // Arrow down. + controller.moveElement(1); + } + }); + + // Determines if a block breaks shadow block placement rules. + // Breaks rules if (1) a shadow block no longer has a valid + // parent, or (2) a normal block is inside of a shadow block. + var isInvalidBlockPlacement = function(block) { + return ((controller.isUserGenShadowBlock(block.id) && + !block.getSurroundParent()) || + (!controller.isUserGenShadowBlock(block.id) && + block.getSurroundParent() && + controller.isUserGenShadowBlock(block.getSurroundParent().id))); + }; + + // Add change listeners for toolbox workspace in workspace factory. + controller.toolboxWorkspace.addChangeListener(function(e) { + // Listen for Blockly move and delete events to update preview. + // Not listening for Blockly create events because causes the user to drop + // blocks when dragging them into workspace. Could cause problems if ever + // load blocks into workspace directly without calling updatePreview. + if (e.type === Blockly.Events.BLOCK_MOVE || + e.type === Blockly.Events.BLOCK_DELETE || + e.type === Blockly.Events.BLOCK_CHANGE) { + controller.saveStateFromWorkspace(); + controller.updatePreview(); + } + + // Listen for Blockly UI events to correctly enable the "Edit Block" button. + // Only enable "Edit Block" when a block is selected and it has a + // surrounding parent, meaning it is nested in another block (blocks that + // are not nested in parents cannot be shadow blocks). + if (e.type === Blockly.Events.BLOCK_MOVE || + e.type === Blockly.Events.SELECTED) { + var selected = Blockly.common.getSelected(); + + // Show shadow button if a block is selected. Show "Add Shadow" if + // a block is not a shadow block, show "Remove Shadow" if it is a + // shadow block. + if (selected) { + var isShadow = controller.isUserGenShadowBlock(selected.id); + WorkspaceFactoryInit.displayAddShadow_(!isShadow); + WorkspaceFactoryInit.displayRemoveShadow_(isShadow); + } else { + WorkspaceFactoryInit.displayAddShadow_(false); + WorkspaceFactoryInit.displayRemoveShadow_(false); + } + + if (selected !== null && selected.getSurroundParent() !== null && + !controller.isUserGenShadowBlock(selected.getSurroundParent().id)) { + // Selected block is a valid shadow block or could be a valid shadow + // block. + + // Enable block editing and remove warnings if the block is not a + // variable user-generated shadow block. + document.getElementById('button_addShadow').disabled = false; + document.getElementById('button_removeShadow').disabled = false; + + if (!FactoryUtils.hasVariableField(selected) && + controller.isDefinedBlock(selected)) { + selected.setWarningText(null); + } + } else { + // Selected block cannot be a valid shadow block. + + if (selected !== null && isInvalidBlockPlacement(selected)) { + // Selected block breaks shadow block rules. + // Invalid shadow block if (1) a shadow block no longer has a valid + // parent, or (2) a normal block is inside of a shadow block. + + if (!controller.isUserGenShadowBlock(selected.id)) { + // Warn if a non-shadow block is nested inside a shadow block. + selected.setWarningText('Only shadow blocks can be nested inside\n' + + 'other shadow blocks.'); + } else if (!FactoryUtils.hasVariableField(selected)) { + // Warn if a shadow block is invalid only if not replacing + // warning for variables. + selected.setWarningText('Shadow blocks must be nested inside other' + + ' blocks.') + } + + // Give editing options so that the user can make an invalid shadow + // block a normal block. + document.getElementById('button_removeShadow').disabled = false; + document.getElementById('button_addShadow').disabled = true; + } else { + // Selected block does not break any shadow block rules, but cannot + // be a shadow block. + + // Remove possible 'invalid shadow block placement' warning. + if (selected !== null && controller.isDefinedBlock(selected) && + (!FactoryUtils.hasVariableField(selected) || + !controller.isUserGenShadowBlock(selected.id))) { + selected.setWarningText(null); + } + + // No block selected that is a shadow block or could be a valid shadow + // block. Disable block editing. + document.getElementById('button_addShadow').disabled = true; + document.getElementById('button_removeShadow').disabled = true; + } + } + } + + // Convert actual shadow blocks added from the toolbox to user-generated + // shadow blocks. + if (e.type === Blockly.Events.BLOCK_CREATE) { + controller.convertShadowBlocks(); + + // Let the user create a Variables or Functions category if they use + // blocks from either category. + + // Get all children of a block and add them to childList. + var getAllChildren = function(block, childList) { + childList.push(block); + var children = block.getChildren(); + for (var i = 0, child; child = children[i]; i++) { + getAllChildren(child, childList); + } + }; + + var newBaseBlock = controller.toolboxWorkspace.getBlockById(e.blockId); + var allNewBlocks = []; + getAllChildren(newBaseBlock, allNewBlocks); + var variableCreated = false; + var procedureCreated = false; + + // Check if the newly created block or any of its children are variable + // or procedure blocks. + for (var i = 0, block; block = allNewBlocks[i]; i++) { + if (FactoryUtils.hasVariableField(block)) { + variableCreated = true; + } else if (FactoryUtils.isProcedureBlock(block)) { + procedureCreated = true; + } + } + + // If any of the newly created blocks are variable or procedure blocks, + // prompt the user to create the corresponding standard category. + if (variableCreated && !controller.hasVariablesCategory()) { + if (confirm('Your new block has a variables field. To use this block ' + + 'fully, you will need a Variables category. Do you want to add ' + + 'a Variables category to your custom toolbox?')) { + controller.setMode(WorkspaceFactoryController.MODE_TOOLBOX); + controller.loadCategoryByName('variables'); + } + } + + if (procedureCreated && !controller.hasProceduresCategory()) { + if (confirm('Your new block is a function block. To use this block ' + + 'fully, you will need a Functions category. Do you want to add ' + + 'a Functions category to your custom toolbox?')) { + controller.setMode(WorkspaceFactoryController.MODE_TOOLBOX); + controller.loadCategoryByName('functions'); + } + } + } + }); +}; + +/** + * Display or hide the add shadow button. + * @param {boolean} show True if the add shadow button should be shown, false + * otherwise. + */ +WorkspaceFactoryInit.displayAddShadow_ = function(show) { + document.getElementById('button_addShadow').style.display = + show ? 'inline-block' : 'none'; +}; + +/** + * Display or hide the remove shadow button. + * @param {boolean} show True if the remove shadow button should be shown, false + * otherwise. + */ +WorkspaceFactoryInit.displayRemoveShadow_ = function(show) { + document.getElementById('button_removeShadow').style.display = + show ? 'inline-block' : 'none'; +}; + +/** + * Add listeners for workspace factory options input elements. + * @param {!FactoryController} controller The controller for the workspace + * factory tab. + * @private + */ +WorkspaceFactoryInit.addWorkspaceFactoryOptionsListeners_ = + function(controller) { + // Checking the grid checkbox displays grid options. + document.getElementById('option_grid_checkbox').addEventListener('change', + function(e) { + document.getElementById('grid_options').style.display = + document.getElementById('option_grid_checkbox').checked ? + 'block' : 'none'; + }); + + // Checking the zoom checkbox displays zoom options. + document.getElementById('option_zoom_checkbox').addEventListener('change', + function(e) { + document.getElementById('zoom_options').style.display = + document.getElementById('option_zoom_checkbox').checked ? + 'block' : 'none'; + }); + + // Checking the readonly checkbox enables/disables other options. + document.getElementById('option_readOnly_checkbox').addEventListener('change', + function(e) { + var checkbox = document.getElementById('option_readOnly_checkbox'); + blocklyFactory.ifCheckedEnable(!checkbox.checked, + ['readonly1', 'readonly2']); + }); + + document.getElementById('option_infiniteBlocks_checkbox').addEventListener('change', + function(e) { + document.getElementById('maxBlockNumber_option').style.display = + document.getElementById('option_infiniteBlocks_checkbox').checked ? + 'none' : 'block'; + }); + + // Generate new options every time an options input is updated. + var div = document.getElementById('workspace_options'); + var options = div.getElementsByTagName('input'); + for (var i = 0, option; option = options[i]; i++) { + option.addEventListener('change', function() { + controller.generateNewOptions(); + }); + } +}; diff --git a/demos/blockfactory/workspacefactory/wfactory_model.js b/demos/blockfactory/workspacefactory/wfactory_model.js index 7fa8cc3328c..f151e79eb7f 100644 --- a/demos/blockfactory/workspacefactory/wfactory_model.js +++ b/demos/blockfactory/workspacefactory/wfactory_model.js @@ -1,549 +1,549 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Stores and updates information about state and categories - * in workspace factory. Each list element is either a separator or a category, - * and each category stores its name, XML to load that category, colour, - * custom tags, and a unique ID making it possible to change category names and - * move categories easily. Keeps track of the currently selected list - * element. Also keeps track of all the user-created shadow blocks and - * manipulates them as necessary. - * - */ - -/** - * Class for a WorkspaceFactoryModel - * @constructor - */ -WorkspaceFactoryModel = function() { - // Ordered list of ListElement objects. Empty if there is a single flyout. - this.toolboxList = []; - // ListElement for blocks in a single flyout. Null if a toolbox exists. - this.flyout = new ListElement(ListElement.TYPE_FLYOUT); - // Array of block IDs for all user created shadow blocks. - this.shadowBlocks = []; - // Reference to currently selected ListElement. Stored in this.toolboxList if - // there are categories, or in this.flyout if blocks are displayed in a single - // flyout. - this.selected = this.flyout; - // Boolean for if a Variable category has been added. - this.hasVariableCategory = false; - // Boolean for if a Procedure category has been added. - this.hasProcedureCategory = false; - // XML to be pre-loaded to workspace. Empty on default; - this.preloadXml = Blockly.utils.xml.createElement('xml'); - // Options object to be configured for Blockly inject call. - this.options = new Object(null); - // Block Library block types. - this.libBlockTypes = []; - // Imported block types. - this.importedBlockTypes = []; - // -}; - -/** - * Given a name, determines if it is the name of a category already present. - * Used when getting a valid category name from the user. - * @param {string} name String name to be compared against. - * @return {boolean} True if string is a used category name, false otherwise. - */ -WorkspaceFactoryModel.prototype.hasCategoryByName = function(name) { - for (var i = 0; i < this.toolboxList.length; i++) { - if (this.toolboxList[i].type === ListElement.TYPE_CATEGORY && - this.toolboxList[i].name === name) { - return true; - } - } - return false; -}; - -/** - * Determines if a category with the 'VARIABLE' tag exists. - * @return {boolean} True if there exists a category with the Variables tag, - * false otherwise. - */ -WorkspaceFactoryModel.prototype.hasVariables = function() { - return this.hasVariableCategory; -}; - -/** - * Determines if a category with the 'PROCEDURE' tag exists. - * @return {boolean} True if there exists a category with the Procedures tag, - * false otherwise. - */ -WorkspaceFactoryModel.prototype.hasProcedures = function() { - return this.hasProcedureCategory; -}; - -/** - * Determines if the user has any elements in the toolbox. Uses the length of - * toolboxList. - * @return {boolean} True if elements exist, false otherwise. - */ -WorkspaceFactoryModel.prototype.hasElements = function() { - return this.toolboxList.length > 0; -}; - -/** - * Given a ListElement, adds it to the toolbox list. - * @param {!ListElement} element The element to be added to the list. - */ -WorkspaceFactoryModel.prototype.addElementToList = function(element) { - // Update state if the copied category has a custom tag. - this.hasVariableCategory = element.custom === 'VARIABLE' ? true : - this.hasVariableCategory; - this.hasProcedureCategory = element.custom === 'PROCEDURE' ? true : - this.hasProcedureCategory; - // Add element to toolboxList. - this.toolboxList.push(element); - // Empty single flyout. - this.flyout = null; -}; - -/** - * Given an index, deletes a list element and all associated data. - * @param {number} index The index of the list element to delete. - */ -WorkspaceFactoryModel.prototype.deleteElementFromList = function(index) { - // Check if index is out of bounds. - if (index < 0 || index >= this.toolboxList.length) { - return; // No entry to delete. - } - // Check if need to update flags. - this.hasVariableCategory = this.toolboxList[index].custom === 'VARIABLE' ? - false : this.hasVariableCategory; - this.hasProcedureCategory = this.toolboxList[index].custom === 'PROCEDURE' ? - false : this.hasProcedureCategory; - // Remove element. - this.toolboxList.splice(index, 1); -}; - -/** - * Sets selected to be an empty category not in toolbox list if toolbox list - * is empty. Should be called when removing the last element from toolbox list. - * If the toolbox list is empty, selected stores the XML for the single flyout - * of blocks displayed. - */ -WorkspaceFactoryModel.prototype.createDefaultSelectedIfEmpty = function() { - if (this.toolboxList.length === 0) { - this.flyout = new ListElement(ListElement.TYPE_FLYOUT); - this.selected = this.flyout; - } -}; - -/** - * Moves a list element to a certain position in toolboxList by removing it - * and then inserting it at the correct index. Checks that indices are in - * bounds (throws error if not), but assumes that oldIndex is the correct index - * for list element. - * @param {!ListElement} element The element to move in toolboxList. - * @param {number} newIndex The index to insert the element at. - * @param {number} oldIndex The index the element is currently at. - */ -WorkspaceFactoryModel.prototype.moveElementToIndex = function(element, newIndex, - oldIndex) { - // Check that indexes are in bounds. - if (newIndex < 0 || newIndex >= this.toolboxList.length || oldIndex < 0 || - oldIndex >= this.toolboxList.length) { - throw Error('Index out of bounds when moving element in the model.'); - } - this.deleteElementFromList(oldIndex); - this.toolboxList.splice(newIndex, 0, element); -}; - -/** - * Returns the ID of the currently selected element. Returns null if there are - * no categories (if selected === null). - * @return {string} The ID of the element currently selected. - */ -WorkspaceFactoryModel.prototype.getSelectedId = function() { - return this.selected ? this.selected.id : null; -}; - -/** - * Returns the name of the currently selected category. Returns null if there - * are no categories (if selected === null) or the selected element is not - * a category (in which case its name is null). - * @return {string} The name of the category currently selected. - */ -WorkspaceFactoryModel.prototype.getSelectedName = function() { - return this.selected ? this.selected.name : null; -}; - -/** - * Returns the currently selected list element object. - * @return {ListElement} The currently selected ListElement - */ -WorkspaceFactoryModel.prototype.getSelected = function() { - return this.selected; -}; - -/** - * Sets list element currently selected by id. - * @param {string} id ID of list element that should now be selected. - */ -WorkspaceFactoryModel.prototype.setSelectedById = function(id) { - this.selected = this.getElementById(id); -}; - -/** - * Given an ID of a list element, returns the index of that list element in - * toolboxList. Returns -1 if ID is not present. - * @param {string} id The ID of list element to search for. - * @return {number} The index of the list element in toolboxList, or -1 if it - * doesn't exist. - */ -WorkspaceFactoryModel.prototype.getIndexByElementId = function(id) { - for (var i = 0; i < this.toolboxList.length; i++) { - if (this.toolboxList[i].id === id) { - return i; - } - } - return -1; // ID not present in toolboxList. -}; - -/** - * Given the ID of a list element, returns that ListElement object. - * @param {string} id The ID of element to search for. - * @return {ListElement} Corresponding ListElement object in toolboxList, or - * null if that element does not exist. - */ -WorkspaceFactoryModel.prototype.getElementById = function(id) { - for (var i = 0; i < this.toolboxList.length; i++) { - if (this.toolboxList[i].id === id) { - return this.toolboxList[i]; - } - } - return null; // ID not present in toolboxList. -}; - -/** - * Given the index of a list element in toolboxList, returns that ListElement - * object. - * @param {number} index The index of the element to return. - * @return {ListElement} The corresponding ListElement object in toolboxList. - */ -WorkspaceFactoryModel.prototype.getElementByIndex = function(index) { - if (index < 0 || index >= this.toolboxList.length) { - return null; - } - return this.toolboxList[index]; -}; - -/** - * Returns the XML to load the selected element. - * @return {!Element} The XML of the selected element, or null if there is - * no selected element. - */ -WorkspaceFactoryModel.prototype.getSelectedXml = function() { - return this.selected ? this.selected.xml : null; -}; - -/** - * Return ordered list of ListElement objects. - * @return {!Array} ordered list of ListElement objects - */ -WorkspaceFactoryModel.prototype.getToolboxList = function() { - return this.toolboxList; -}; - -/** - * Gets the ID of a category given its name. - * @param {string} name Name of category. - * @return {number} ID of category - */ -WorkspaceFactoryModel.prototype.getCategoryIdByName = function(name) { - for (var i = 0; i < this.toolboxList.length; i++) { - if (this.toolboxList[i].name === name) { - return this.toolboxList[i].id; - } - } - return null; // Name not present in toolboxList. -}; - -/** - * Clears the toolbox list, deleting all ListElements. - */ -WorkspaceFactoryModel.prototype.clearToolboxList = function() { - this.toolboxList = []; - this.hasVariableCategory = false; - this.hasProcedureCategory = false; - this.shadowBlocks = []; - this.selected.xml = Blockly.utils.xml.createElement('xml'); -}; - -/** - * Class for a ListElement - * Adds a shadow block to the list of shadow blocks. - * @param {string} blockId The unique ID of block to be added. - */ -WorkspaceFactoryModel.prototype.addShadowBlock = function(blockId) { - this.shadowBlocks.push(blockId); -}; - -/** - * Removes a shadow block ID from the list of shadow block IDs if that ID is - * in the list. - * @param {string} blockId The unique ID of block to be removed. - */ -WorkspaceFactoryModel.prototype.removeShadowBlock = function(blockId) { - for (var i = 0; i < this.shadowBlocks.length; i++) { - if (this.shadowBlocks[i] === blockId) { - this.shadowBlocks.splice(i, 1); - return; - } - } -}; - -/** - * Determines if a block is a shadow block given a unique block ID. - * @param {string} blockId The unique ID of the block to examine. - * @return {boolean} True if the block is a user-generated shadow block, false - * otherwise. - */ -WorkspaceFactoryModel.prototype.isShadowBlock = function(blockId) { - for (var i = 0; i < this.shadowBlocks.length; i++) { - if (this.shadowBlocks[i] === blockId) { - return true; - } - } - return false; -}; - -/** - * Given a set of blocks currently loaded, returns all blocks in the workspace - * that are user generated shadow blocks. - * @param {!} blocks Array of blocks currently loaded. - * @return {!} Array of user-generated shadow blocks currently - * loaded. - */ -WorkspaceFactoryModel.prototype.getShadowBlocksInWorkspace = - function(workspaceBlocks) { - var shadowsInWorkspace = []; - for (var i = 0; i < workspaceBlocks.length; i++) { - if (this.isShadowBlock(workspaceBlocks[i].id)) { - shadowsInWorkspace.push(workspaceBlocks[i]); - } - } - return shadowsInWorkspace; -}; - -/** - * Adds a custom tag to a category, updating state variables accordingly. - * Only accepts 'VARIABLE' and 'PROCEDURE' tags. - * @param {!ListElement} category The category to add the tag to. - * @param {string} tag The custom tag to add to the category. - */ -WorkspaceFactoryModel.prototype.addCustomTag = function(category, tag) { - // Only update list elements that are categories. - if (category.type !== ListElement.TYPE_CATEGORY) { - return; - } - // Only update the tag to be 'VARIABLE' or 'PROCEDURE'. - if (tag === 'VARIABLE') { - this.hasVariableCategory = true; - category.custom = 'VARIABLE'; - } else if (tag === 'PROCEDURE') { - this.hasProcedureCategory = true; - category.custom = 'PROCEDURE'; - } -}; - -/** - * Have basic pre-loaded workspace working - * Saves XML as XML to be pre-loaded into the workspace. - * @param {!Element} xml The XML to be saved. - */ -WorkspaceFactoryModel.prototype.savePreloadXml = function(xml) { - this.preloadXml = xml; -}; - -/** - * Gets the XML to be pre-loaded into the workspace. - * @return {!Element} The XML for the workspace. - */ -WorkspaceFactoryModel.prototype.getPreloadXml = function() { - return this.preloadXml; -}; - -/** - * Sets a new options object for injecting a Blockly workspace. - * @param {Object} options Options object for injecting a Blockly workspace. - */ -WorkspaceFactoryModel.prototype.setOptions = function(options) { - this.options = options; -}; - -/** - * Returns an array of all the block types currently being used in the toolbox - * and the pre-loaded blocks. No duplicates. - * TODO(evd2014): Move pushBlockTypesToList to FactoryUtils. - * @return {!Array} Array of block types currently being used. - */ -WorkspaceFactoryModel.prototype.getAllUsedBlockTypes = function() { - var blockTypeList = []; - - // Given XML for the workspace, adds all block types included in the XML - // to the list, not including duplicates. - var pushBlockTypesToList = function(xml, list) { - // Get all block XML nodes. - var blocks = xml.getElementsByTagName('block'); - - // Add block types if not already in list. - for (var i = 0; i < blocks.length; i++) { - var type = blocks[i].getAttribute('type'); - if (list.indexOf(type) === -1) { - list.push(type); - } - } - }; - - if (this.flyout) { - // If has a single flyout, add block types for the single flyout. - pushBlockTypesToList(this.getSelectedXml(), blockTypeList); - } else { - // If has categories, add block types for each category. - - for (var i = 0, category; category = this.toolboxList[i]; i++) { - if (category.type === ListElement.TYPE_CATEGORY) { - pushBlockTypesToList(category.xml, blockTypeList); - } - } - } - - // Add the block types from any pre-loaded blocks. - pushBlockTypesToList(this.getPreloadXml(), blockTypeList); - - return blockTypeList; -}; - -/** - * Adds new imported block types to the list of current imported block types. - * @param {!Array} blockTypes Array of block types imported. - */ -WorkspaceFactoryModel.prototype.addImportedBlockTypes = function(blockTypes) { - this.importedBlockTypes = this.importedBlockTypes.concat(blockTypes); -}; - -/** - * Updates block types in block library. - * @param {!Array} blockTypes Array of block types in block library. - */ -WorkspaceFactoryModel.prototype.updateLibBlockTypes = function(blockTypes) { - this.libBlockTypes = blockTypes; -}; - -/** - * Determines if a block type is defined as a standard block, in the block - * library, or as an imported block. - * @param {string} blockType Block type to check. - * @return {boolean} True if blockType is defined, false otherwise. - */ -WorkspaceFactoryModel.prototype.isDefinedBlockType = function(blockType) { - var isStandardBlock = - StandardCategories.coreBlockTypes.indexOf(blockType) !== -1; - var isLibBlock = this.libBlockTypes.indexOf(blockType) !== -1; - var isImportedBlock = this.importedBlockTypes.indexOf(blockType) !== -1; - return (isStandardBlock || isLibBlock || isImportedBlock); -}; - -/** - * Checks if any of the block types are already defined. - * @param {!Array} blockTypes Array of block types. - * @return {boolean} True if a block type in the array is already defined, - * false if none of the blocks are already defined. - */ -WorkspaceFactoryModel.prototype.hasDefinedBlockTypes = function(blockTypes) { - for (var i = 0, blockType; blockType = blockTypes[i]; i++) { - if (this.isDefinedBlockType(blockType)) { - return true; - } - } - return false; -}; - -/** - * Class for a ListElement. - * @constructor - */ -ListElement = function(type, opt_name) { - this.type = type; - // XML DOM element to load the element. - this.xml = Blockly.utils.xml.createElement('xml'); - // Name of category. Can be changed by user. Null if separator. - this.name = opt_name ? opt_name : null; - // Unique ID of element. Does not change. - this.id = Blockly.utils.genUid(); - // Colour of category. Default is no colour. Null if separator. - this.colour = null; - // Stores a custom tag, if necessary. Null if no custom tag or separator. - this.custom = null; -}; - -// List element types. -ListElement.TYPE_CATEGORY = 'category'; -ListElement.TYPE_SEPARATOR = 'separator'; -ListElement.TYPE_FLYOUT = 'flyout'; - -/** - * Saves a category by updating its XML (does not save XML for - * elements that are not categories). - * @param {!Blockly.workspace} workspace The workspace to save category entry - * from. - */ -ListElement.prototype.saveFromWorkspace = function(workspace) { - // Only save XML for categories and flyouts. - if (this.type === ListElement.TYPE_FLYOUT || - this.type === ListElement.TYPE_CATEGORY) { - this.xml = Blockly.Xml.workspaceToDom(workspace); - } -}; - - -/** - * Changes the name of a category object given a new name. Returns if - * not a category. - * @param {string} name New name of category. - */ -ListElement.prototype.changeName = function(name) { - // Only update list elements that are categories. - if (this.type !== ListElement.TYPE_CATEGORY) { - return; - } - this.name = name; -}; - -/** - * Sets the colour of a category. If tries to set the colour of something other - * than a category, returns. - * @param {?string} colour The colour that should be used for that category, - * or null if none. - */ -ListElement.prototype.changeColour = function(colour) { - if (this.type !== ListElement.TYPE_CATEGORY) { - return; - } - this.colour = colour; -}; - -/** - * Makes a copy of the original element and returns it. Everything about the - * copy is identical except for its ID. - * @return {!ListElement} The copy of the ListElement. - */ -ListElement.prototype.copy = function() { - copy = new ListElement(this.type); - // Generate a unique ID for the element. - copy.id = Blockly.utils.genUid(); - // Copy all attributes except ID. - copy.name = this.name; - copy.xml = this.xml; - copy.colour = this.colour; - copy.custom = this.custom; - // Return copy. - return copy; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Stores and updates information about state and categories + * in workspace factory. Each list element is either a separator or a category, + * and each category stores its name, XML to load that category, colour, + * custom tags, and a unique ID making it possible to change category names and + * move categories easily. Keeps track of the currently selected list + * element. Also keeps track of all the user-created shadow blocks and + * manipulates them as necessary. + * + */ + +/** + * Class for a WorkspaceFactoryModel + * @constructor + */ +WorkspaceFactoryModel = function() { + // Ordered list of ListElement objects. Empty if there is a single flyout. + this.toolboxList = []; + // ListElement for blocks in a single flyout. Null if a toolbox exists. + this.flyout = new ListElement(ListElement.TYPE_FLYOUT); + // Array of block IDs for all user created shadow blocks. + this.shadowBlocks = []; + // Reference to currently selected ListElement. Stored in this.toolboxList if + // there are categories, or in this.flyout if blocks are displayed in a single + // flyout. + this.selected = this.flyout; + // Boolean for if a Variable category has been added. + this.hasVariableCategory = false; + // Boolean for if a Procedure category has been added. + this.hasProcedureCategory = false; + // XML to be pre-loaded to workspace. Empty on default; + this.preloadXml = Blockly.utils.xml.createElement('xml'); + // Options object to be configured for Blockly inject call. + this.options = new Object(null); + // Block Library block types. + this.libBlockTypes = []; + // Imported block types. + this.importedBlockTypes = []; + // +}; + +/** + * Given a name, determines if it is the name of a category already present. + * Used when getting a valid category name from the user. + * @param {string} name String name to be compared against. + * @return {boolean} True if string is a used category name, false otherwise. + */ +WorkspaceFactoryModel.prototype.hasCategoryByName = function(name) { + for (var i = 0; i < this.toolboxList.length; i++) { + if (this.toolboxList[i].type === ListElement.TYPE_CATEGORY && + this.toolboxList[i].name === name) { + return true; + } + } + return false; +}; + +/** + * Determines if a category with the 'VARIABLE' tag exists. + * @return {boolean} True if there exists a category with the Variables tag, + * false otherwise. + */ +WorkspaceFactoryModel.prototype.hasVariables = function() { + return this.hasVariableCategory; +}; + +/** + * Determines if a category with the 'PROCEDURE' tag exists. + * @return {boolean} True if there exists a category with the Procedures tag, + * false otherwise. + */ +WorkspaceFactoryModel.prototype.hasProcedures = function() { + return this.hasProcedureCategory; +}; + +/** + * Determines if the user has any elements in the toolbox. Uses the length of + * toolboxList. + * @return {boolean} True if elements exist, false otherwise. + */ +WorkspaceFactoryModel.prototype.hasElements = function() { + return this.toolboxList.length > 0; +}; + +/** + * Given a ListElement, adds it to the toolbox list. + * @param {!ListElement} element The element to be added to the list. + */ +WorkspaceFactoryModel.prototype.addElementToList = function(element) { + // Update state if the copied category has a custom tag. + this.hasVariableCategory = element.custom === 'VARIABLE' ? true : + this.hasVariableCategory; + this.hasProcedureCategory = element.custom === 'PROCEDURE' ? true : + this.hasProcedureCategory; + // Add element to toolboxList. + this.toolboxList.push(element); + // Empty single flyout. + this.flyout = null; +}; + +/** + * Given an index, deletes a list element and all associated data. + * @param {number} index The index of the list element to delete. + */ +WorkspaceFactoryModel.prototype.deleteElementFromList = function(index) { + // Check if index is out of bounds. + if (index < 0 || index >= this.toolboxList.length) { + return; // No entry to delete. + } + // Check if need to update flags. + this.hasVariableCategory = this.toolboxList[index].custom === 'VARIABLE' ? + false : this.hasVariableCategory; + this.hasProcedureCategory = this.toolboxList[index].custom === 'PROCEDURE' ? + false : this.hasProcedureCategory; + // Remove element. + this.toolboxList.splice(index, 1); +}; + +/** + * Sets selected to be an empty category not in toolbox list if toolbox list + * is empty. Should be called when removing the last element from toolbox list. + * If the toolbox list is empty, selected stores the XML for the single flyout + * of blocks displayed. + */ +WorkspaceFactoryModel.prototype.createDefaultSelectedIfEmpty = function() { + if (this.toolboxList.length === 0) { + this.flyout = new ListElement(ListElement.TYPE_FLYOUT); + this.selected = this.flyout; + } +}; + +/** + * Moves a list element to a certain position in toolboxList by removing it + * and then inserting it at the correct index. Checks that indices are in + * bounds (throws error if not), but assumes that oldIndex is the correct index + * for list element. + * @param {!ListElement} element The element to move in toolboxList. + * @param {number} newIndex The index to insert the element at. + * @param {number} oldIndex The index the element is currently at. + */ +WorkspaceFactoryModel.prototype.moveElementToIndex = function(element, newIndex, + oldIndex) { + // Check that indexes are in bounds. + if (newIndex < 0 || newIndex >= this.toolboxList.length || oldIndex < 0 || + oldIndex >= this.toolboxList.length) { + throw Error('Index out of bounds when moving element in the model.'); + } + this.deleteElementFromList(oldIndex); + this.toolboxList.splice(newIndex, 0, element); +}; + +/** + * Returns the ID of the currently selected element. Returns null if there are + * no categories (if selected === null). + * @return {string} The ID of the element currently selected. + */ +WorkspaceFactoryModel.prototype.getSelectedId = function() { + return this.selected ? this.selected.id : null; +}; + +/** + * Returns the name of the currently selected category. Returns null if there + * are no categories (if selected === null) or the selected element is not + * a category (in which case its name is null). + * @return {string} The name of the category currently selected. + */ +WorkspaceFactoryModel.prototype.getSelectedName = function() { + return this.selected ? this.selected.name : null; +}; + +/** + * Returns the currently selected list element object. + * @return {ListElement} The currently selected ListElement + */ +WorkspaceFactoryModel.prototype.getSelected = function() { + return this.selected; +}; + +/** + * Sets list element currently selected by id. + * @param {string} id ID of list element that should now be selected. + */ +WorkspaceFactoryModel.prototype.setSelectedById = function(id) { + this.selected = this.getElementById(id); +}; + +/** + * Given an ID of a list element, returns the index of that list element in + * toolboxList. Returns -1 if ID is not present. + * @param {string} id The ID of list element to search for. + * @return {number} The index of the list element in toolboxList, or -1 if it + * doesn't exist. + */ +WorkspaceFactoryModel.prototype.getIndexByElementId = function(id) { + for (var i = 0; i < this.toolboxList.length; i++) { + if (this.toolboxList[i].id === id) { + return i; + } + } + return -1; // ID not present in toolboxList. +}; + +/** + * Given the ID of a list element, returns that ListElement object. + * @param {string} id The ID of element to search for. + * @return {ListElement} Corresponding ListElement object in toolboxList, or + * null if that element does not exist. + */ +WorkspaceFactoryModel.prototype.getElementById = function(id) { + for (var i = 0; i < this.toolboxList.length; i++) { + if (this.toolboxList[i].id === id) { + return this.toolboxList[i]; + } + } + return null; // ID not present in toolboxList. +}; + +/** + * Given the index of a list element in toolboxList, returns that ListElement + * object. + * @param {number} index The index of the element to return. + * @return {ListElement} The corresponding ListElement object in toolboxList. + */ +WorkspaceFactoryModel.prototype.getElementByIndex = function(index) { + if (index < 0 || index >= this.toolboxList.length) { + return null; + } + return this.toolboxList[index]; +}; + +/** + * Returns the XML to load the selected element. + * @return {!Element} The XML of the selected element, or null if there is + * no selected element. + */ +WorkspaceFactoryModel.prototype.getSelectedXml = function() { + return this.selected ? this.selected.xml : null; +}; + +/** + * Return ordered list of ListElement objects. + * @return {!Array} ordered list of ListElement objects + */ +WorkspaceFactoryModel.prototype.getToolboxList = function() { + return this.toolboxList; +}; + +/** + * Gets the ID of a category given its name. + * @param {string} name Name of category. + * @return {number} ID of category + */ +WorkspaceFactoryModel.prototype.getCategoryIdByName = function(name) { + for (var i = 0; i < this.toolboxList.length; i++) { + if (this.toolboxList[i].name === name) { + return this.toolboxList[i].id; + } + } + return null; // Name not present in toolboxList. +}; + +/** + * Clears the toolbox list, deleting all ListElements. + */ +WorkspaceFactoryModel.prototype.clearToolboxList = function() { + this.toolboxList = []; + this.hasVariableCategory = false; + this.hasProcedureCategory = false; + this.shadowBlocks = []; + this.selected.xml = Blockly.utils.xml.createElement('xml'); +}; + +/** + * Class for a ListElement + * Adds a shadow block to the list of shadow blocks. + * @param {string} blockId The unique ID of block to be added. + */ +WorkspaceFactoryModel.prototype.addShadowBlock = function(blockId) { + this.shadowBlocks.push(blockId); +}; + +/** + * Removes a shadow block ID from the list of shadow block IDs if that ID is + * in the list. + * @param {string} blockId The unique ID of block to be removed. + */ +WorkspaceFactoryModel.prototype.removeShadowBlock = function(blockId) { + for (var i = 0; i < this.shadowBlocks.length; i++) { + if (this.shadowBlocks[i] === blockId) { + this.shadowBlocks.splice(i, 1); + return; + } + } +}; + +/** + * Determines if a block is a shadow block given a unique block ID. + * @param {string} blockId The unique ID of the block to examine. + * @return {boolean} True if the block is a user-generated shadow block, false + * otherwise. + */ +WorkspaceFactoryModel.prototype.isShadowBlock = function(blockId) { + for (var i = 0; i < this.shadowBlocks.length; i++) { + if (this.shadowBlocks[i] === blockId) { + return true; + } + } + return false; +}; + +/** + * Given a set of blocks currently loaded, returns all blocks in the workspace + * that are user generated shadow blocks. + * @param {!} blocks Array of blocks currently loaded. + * @return {!} Array of user-generated shadow blocks currently + * loaded. + */ +WorkspaceFactoryModel.prototype.getShadowBlocksInWorkspace = + function(workspaceBlocks) { + var shadowsInWorkspace = []; + for (var i = 0; i < workspaceBlocks.length; i++) { + if (this.isShadowBlock(workspaceBlocks[i].id)) { + shadowsInWorkspace.push(workspaceBlocks[i]); + } + } + return shadowsInWorkspace; +}; + +/** + * Adds a custom tag to a category, updating state variables accordingly. + * Only accepts 'VARIABLE' and 'PROCEDURE' tags. + * @param {!ListElement} category The category to add the tag to. + * @param {string} tag The custom tag to add to the category. + */ +WorkspaceFactoryModel.prototype.addCustomTag = function(category, tag) { + // Only update list elements that are categories. + if (category.type !== ListElement.TYPE_CATEGORY) { + return; + } + // Only update the tag to be 'VARIABLE' or 'PROCEDURE'. + if (tag === 'VARIABLE') { + this.hasVariableCategory = true; + category.custom = 'VARIABLE'; + } else if (tag === 'PROCEDURE') { + this.hasProcedureCategory = true; + category.custom = 'PROCEDURE'; + } +}; + +/** + * Have basic pre-loaded workspace working + * Saves XML as XML to be pre-loaded into the workspace. + * @param {!Element} xml The XML to be saved. + */ +WorkspaceFactoryModel.prototype.savePreloadXml = function(xml) { + this.preloadXml = xml; +}; + +/** + * Gets the XML to be pre-loaded into the workspace. + * @return {!Element} The XML for the workspace. + */ +WorkspaceFactoryModel.prototype.getPreloadXml = function() { + return this.preloadXml; +}; + +/** + * Sets a new options object for injecting a Blockly workspace. + * @param {Object} options Options object for injecting a Blockly workspace. + */ +WorkspaceFactoryModel.prototype.setOptions = function(options) { + this.options = options; +}; + +/** + * Returns an array of all the block types currently being used in the toolbox + * and the pre-loaded blocks. No duplicates. + * TODO(evd2014): Move pushBlockTypesToList to FactoryUtils. + * @return {!Array} Array of block types currently being used. + */ +WorkspaceFactoryModel.prototype.getAllUsedBlockTypes = function() { + var blockTypeList = []; + + // Given XML for the workspace, adds all block types included in the XML + // to the list, not including duplicates. + var pushBlockTypesToList = function(xml, list) { + // Get all block XML nodes. + var blocks = xml.getElementsByTagName('block'); + + // Add block types if not already in list. + for (var i = 0; i < blocks.length; i++) { + var type = blocks[i].getAttribute('type'); + if (list.indexOf(type) === -1) { + list.push(type); + } + } + }; + + if (this.flyout) { + // If has a single flyout, add block types for the single flyout. + pushBlockTypesToList(this.getSelectedXml(), blockTypeList); + } else { + // If has categories, add block types for each category. + + for (var i = 0, category; category = this.toolboxList[i]; i++) { + if (category.type === ListElement.TYPE_CATEGORY) { + pushBlockTypesToList(category.xml, blockTypeList); + } + } + } + + // Add the block types from any pre-loaded blocks. + pushBlockTypesToList(this.getPreloadXml(), blockTypeList); + + return blockTypeList; +}; + +/** + * Adds new imported block types to the list of current imported block types. + * @param {!Array} blockTypes Array of block types imported. + */ +WorkspaceFactoryModel.prototype.addImportedBlockTypes = function(blockTypes) { + this.importedBlockTypes = this.importedBlockTypes.concat(blockTypes); +}; + +/** + * Updates block types in block library. + * @param {!Array} blockTypes Array of block types in block library. + */ +WorkspaceFactoryModel.prototype.updateLibBlockTypes = function(blockTypes) { + this.libBlockTypes = blockTypes; +}; + +/** + * Determines if a block type is defined as a standard block, in the block + * library, or as an imported block. + * @param {string} blockType Block type to check. + * @return {boolean} True if blockType is defined, false otherwise. + */ +WorkspaceFactoryModel.prototype.isDefinedBlockType = function(blockType) { + var isStandardBlock = + StandardCategories.coreBlockTypes.indexOf(blockType) !== -1; + var isLibBlock = this.libBlockTypes.indexOf(blockType) !== -1; + var isImportedBlock = this.importedBlockTypes.indexOf(blockType) !== -1; + return (isStandardBlock || isLibBlock || isImportedBlock); +}; + +/** + * Checks if any of the block types are already defined. + * @param {!Array} blockTypes Array of block types. + * @return {boolean} True if a block type in the array is already defined, + * false if none of the blocks are already defined. + */ +WorkspaceFactoryModel.prototype.hasDefinedBlockTypes = function(blockTypes) { + for (var i = 0, blockType; blockType = blockTypes[i]; i++) { + if (this.isDefinedBlockType(blockType)) { + return true; + } + } + return false; +}; + +/** + * Class for a ListElement. + * @constructor + */ +ListElement = function(type, opt_name) { + this.type = type; + // XML DOM element to load the element. + this.xml = Blockly.utils.xml.createElement('xml'); + // Name of category. Can be changed by user. Null if separator. + this.name = opt_name ? opt_name : null; + // Unique ID of element. Does not change. + this.id = Blockly.utils.genUid(); + // Colour of category. Default is no colour. Null if separator. + this.colour = null; + // Stores a custom tag, if necessary. Null if no custom tag or separator. + this.custom = null; +}; + +// List element types. +ListElement.TYPE_CATEGORY = 'category'; +ListElement.TYPE_SEPARATOR = 'separator'; +ListElement.TYPE_FLYOUT = 'flyout'; + +/** + * Saves a category by updating its XML (does not save XML for + * elements that are not categories). + * @param {!Blockly.workspace} workspace The workspace to save category entry + * from. + */ +ListElement.prototype.saveFromWorkspace = function(workspace) { + // Only save XML for categories and flyouts. + if (this.type === ListElement.TYPE_FLYOUT || + this.type === ListElement.TYPE_CATEGORY) { + this.xml = Blockly.Xml.workspaceToDom(workspace); + } +}; + + +/** + * Changes the name of a category object given a new name. Returns if + * not a category. + * @param {string} name New name of category. + */ +ListElement.prototype.changeName = function(name) { + // Only update list elements that are categories. + if (this.type !== ListElement.TYPE_CATEGORY) { + return; + } + this.name = name; +}; + +/** + * Sets the colour of a category. If tries to set the colour of something other + * than a category, returns. + * @param {?string} colour The colour that should be used for that category, + * or null if none. + */ +ListElement.prototype.changeColour = function(colour) { + if (this.type !== ListElement.TYPE_CATEGORY) { + return; + } + this.colour = colour; +}; + +/** + * Makes a copy of the original element and returns it. Everything about the + * copy is identical except for its ID. + * @return {!ListElement} The copy of the ListElement. + */ +ListElement.prototype.copy = function() { + copy = new ListElement(this.type); + // Generate a unique ID for the element. + copy.id = Blockly.utils.genUid(); + // Copy all attributes except ID. + copy.name = this.name; + copy.xml = this.xml; + copy.colour = this.colour; + copy.custom = this.custom; + // Return copy. + return copy; +}; diff --git a/demos/blockfactory/workspacefactory/wfactory_view.js b/demos/blockfactory/workspacefactory/wfactory_view.js index 774bbb8a316..fc56656097a 100644 --- a/demos/blockfactory/workspacefactory/wfactory_view.js +++ b/demos/blockfactory/workspacefactory/wfactory_view.js @@ -1,426 +1,426 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * Controls the UI elements for workspace factory, mainly the category tabs. - * Also includes downloading files because that interacts directly with the DOM. - * Depends on WorkspaceFactoryController (for adding mouse listeners). Tabs for - * each category are stored in tab map, which associates a unique ID for a - * category with a particular tab. - * - */ - - -/** - * Class for a WorkspaceFactoryView - * @constructor - */ -WorkspaceFactoryView = function() { - // For each tab, maps ID of a ListElement to the td DOM element. - this.tabMap = Object.create(null); -}; - -/** - * Adds a category tab to the UI, and updates tabMap accordingly. - * @param {string} name The name of the category being created - * @param {string} id ID of category being created - * @return {!Element} DOM element created for tab - */ -WorkspaceFactoryView.prototype.addCategoryRow = function(name, id) { - var table = document.getElementById('categoryTable'); - var count = table.rows.length; - - // Delete help label and enable category buttons if it's the first category. - if (count === 0) { - document.getElementById('categoryHeader').textContent = 'Your categories:'; - } - - // Create tab. - var row = table.insertRow(count); - var nextEntry = row.insertCell(0); - // Configure tab. - nextEntry.id = this.createCategoryIdName(name); - nextEntry.textContent = name; - // Store tab. - this.tabMap[id] = table.rows[count].cells[0]; - // Return tab. - return nextEntry; -}; - -/** - * Deletes a category tab from the UI and updates tabMap accordingly. - * @param {string} id ID of category to be deleted. - * @param {string} name The name of the category to be deleted. - */ -WorkspaceFactoryView.prototype.deleteElementRow = function(id, index) { - // Delete tab entry. - delete this.tabMap[id]; - // Delete tab row. - var table = document.getElementById('categoryTable'); - var count = table.rows.length; - table.deleteRow(index); - - // If last category removed, add category help text and disable category - // buttons. - this.addEmptyCategoryMessage(); -}; - -/** - * If there are no toolbox elements created, adds a help message to show - * where categories will appear. Should be called when deleting list elements - * in case the last element is deleted. - */ -WorkspaceFactoryView.prototype.addEmptyCategoryMessage = function() { - var table = document.getElementById('categoryTable'); - if (!table.rows.length) { - document.getElementById('categoryHeader').textContent = - 'You currently have no categories.'; - } -}; - -/** - * Given the index of the currently selected element, updates the state of - * the buttons that allow the user to edit the list elements. Updates the edit - * and arrow buttons. Should be called when adding or removing elements - * or when changing to a new element or when swapping to a different element. - * TODO(evd2014): Switch to using CSS to add/remove styles. - * @param {number} selectedIndex The index of the currently selected category, - * -1 if no categories created. - * @param {ListElement} selected The selected ListElement. - */ -WorkspaceFactoryView.prototype.updateState = function(selectedIndex, selected) { - // Disable/enable editing buttons as necessary. - document.getElementById('button_editCategory').disabled = selectedIndex < 0 || - selected.type !== ListElement.TYPE_CATEGORY; - document.getElementById('button_remove').disabled = selectedIndex < 0; - document.getElementById('button_up').disabled = selectedIndex <= 0; - var table = document.getElementById('categoryTable'); - document.getElementById('button_down').disabled = selectedIndex >= - table.rows.length - 1 || selectedIndex < 0; - // Disable/enable the workspace as necessary. - this.disableWorkspace(this.shouldDisableWorkspace(selected)); -}; - -/** - * Determines the DOM ID for a category given its name. - * @param {string} name Name of category - * @return {string} ID of category tab - */ -WorkspaceFactoryView.prototype.createCategoryIdName = function(name) { - return 'tab_' + name; -}; - -/** - * Switches a tab on or off. - * @param {string} id ID of the tab to switch on or off. - * @param {boolean} selected True if tab should be on, false if tab should be - * off. - */ -WorkspaceFactoryView.prototype.setCategoryTabSelection = - function(id, selected) { - if (!this.tabMap[id]) { - return; // Exit if tab does not exist. - } - this.tabMap[id].className = selected ? 'tabon' : 'taboff'; -}; - -/** - * Used to bind a click to a certain DOM element (used for category tabs). - * Taken directly from code.js - * @param {string|!Element} e1 Tab element or corresponding ID string. - * @param {!Function} func Function to be executed on click. - */ -WorkspaceFactoryView.prototype.bindClick = function(el, func) { - if (typeof el === 'string') { - el = document.getElementById(el); - } - el.addEventListener('click', func, true); - el.addEventListener('touchend', func, true); -}; - -/** - * Creates a file and downloads it. In some browsers downloads, and in other - * browsers, opens new tab with contents. - * @param {string} filename Name of file - * @param {!Blob} data Blob containing contents to download - */ -WorkspaceFactoryView.prototype.createAndDownloadFile = - function(filename, data) { - var clickEvent = new MouseEvent('click', { - 'view': window, - 'bubbles': true, - 'cancelable': false - }); - var a = document.createElement('a'); - a.href = window.URL.createObjectURL(data); - a.download = filename; - a.textContent = 'Download file!'; - a.dispatchEvent(clickEvent); -}; - -/** - * Given the ID of a certain category, updates the corresponding tab in - * the DOM to show a new name. - * @param {string} newName Name of string to be displayed on tab - * @param {string} id ID of category to be updated - */ -WorkspaceFactoryView.prototype.updateCategoryName = function(newName, id) { - this.tabMap[id].textContent = newName; - this.tabMap[id].id = this.createCategoryIdName(newName); -}; - -/** - * Moves a tab from one index to another. Adjusts index inserting before - * based on if inserting before or after. Checks that the indexes are in - * bounds, throws error if not. - * @param {string} id The ID of the category to move. - * @param {number} newIndex The index to move the category to. - * @param {number} oldIndex The index the category is currently at. - */ -WorkspaceFactoryView.prototype.moveTabToIndex = - function(id, newIndex, oldIndex) { - var table = document.getElementById('categoryTable'); - // Check that indexes are in bounds. - if (newIndex < 0 || newIndex >= table.rows.length || oldIndex < 0 || - oldIndex >= table.rows.length) { - throw Error('Index out of bounds when moving tab in the view.'); - } - - if (newIndex < oldIndex) { - // Inserting before. - var row = table.insertRow(newIndex); - row.appendChild(this.tabMap[id]); - table.deleteRow(oldIndex + 1); - } else { - // Inserting after. - var row = table.insertRow(newIndex + 1); - row.appendChild(this.tabMap[id]); - table.deleteRow(oldIndex); - } -}; - -/** - * Given a category ID and colour, use that colour to colour the left border of - * the tab for that category. - * @param {string} id The ID of the category to colour. - * @param {?string} colour The colour for to be used for the border of the tab, - * or null if none. Must be a valid CSS string. - */ -WorkspaceFactoryView.prototype.setBorderColour = function(id, colour) { - var style = this.tabMap[id].style; - if (colour) { - style.borderLeftWidth = '8px'; - style.borderLeftStyle = 'solid'; - style.borderColor = colour; - } else { - style.borderLeftWidth = ''; - style.borderLeftStyle = ''; - style.borderColor = ''; - } -}; - -/** - * Given a separator ID, creates a corresponding tab in the view, updates - * tab map, and returns the tab. - * @param {string} id The ID of the separator. - * @param {!Element} The td DOM element representing the separator. - */ -WorkspaceFactoryView.prototype.addSeparatorTab = function(id) { - var table = document.getElementById('categoryTable'); - var count = table.rows.length; - - if (count === 0) { - document.getElementById('categoryHeader').textContent = 'Your categories:'; - } - // Create separator. - var row = table.insertRow(count); - var nextEntry = row.insertCell(0); - // Configure separator. - nextEntry.style.height = '10px'; - // Store and return separator. - this.tabMap[id] = table.rows[count].cells[0]; - return nextEntry; -}; - -/** - * Disables or enables the workspace by putting a div over or under the - * toolbox workspace, depending on the value of disable. Used when switching - * to/from separators where the user shouldn't be able to drag blocks into - * the workspace. - * @param {boolean} disable True if the workspace should be disabled, false - * if it should be enabled. - */ -WorkspaceFactoryView.prototype.disableWorkspace = function(disable) { - if (disable) { - document.getElementById('toolbox_section').className = 'disabled'; - document.getElementById('toolbox_blocks').style.pointerEvents = 'none'; - } else { - document.getElementById('toolbox_section').className = ''; - document.getElementById('toolbox_blocks').style.pointerEvents = 'auto'; - } - -}; - -/** - * Determines if the workspace should be disabled. The workspace should be - * disabled if category is a separator or has VARIABLE or PROCEDURE tags. - * @return {boolean} True if the workspace should be disabled, false otherwise. - */ -WorkspaceFactoryView.prototype.shouldDisableWorkspace = function(category) { - return category !== null && category.type !== ListElement.TYPE_FLYOUT && - (category.type === ListElement.TYPE_SEPARATOR || - category.custom === 'VARIABLE' || category.custom === 'PROCEDURE'); -}; - -/** - * Removes all categories and separators in the view. Clears the tabMap to - * reflect this. - */ -WorkspaceFactoryView.prototype.clearToolboxTabs = function() { - this.tabMap = []; - var oldCategoryTable = document.getElementById('categoryTable'); - var newCategoryTable = document.createElement('table'); - newCategoryTable.id = 'categoryTable'; - newCategoryTable.style.width = 'auto'; - oldCategoryTable.parentElement.replaceChild(newCategoryTable, - oldCategoryTable); -}; - -/** - * Given a set of blocks currently loaded user-generated shadow blocks, visually - * marks them without making them actual shadow blocks (allowing them to still - * be editable and movable). - * @param {!Array} blocks Array of user-generated shadow blocks - * currently loaded. - */ -WorkspaceFactoryView.prototype.markShadowBlocks = function(blocks) { - for (var i = 0; i < blocks.length; i++) { - this.markShadowBlock(blocks[i]); - } -}; - -/** - * Visually marks a user-generated shadow block as a shadow block in the - * workspace without making the block an actual shadow block (allowing it - * to be moved and edited). - * @param {!Blockly.Block} block The block that should be marked as a shadow - * block (must be rendered). - */ -WorkspaceFactoryView.prototype.markShadowBlock = function(block) { - // Add Blockly CSS for user-generated shadow blocks. - Blockly.utils.dom.addClass(block.svgGroup_, 'shadowBlock'); - // If not a valid shadow block, add a warning message. - if (!block.getSurroundParent()) { - block.setWarningText('Shadow blocks must be nested inside' + - ' other blocks to be displayed.'); - } - if (FactoryUtils.hasVariableField(block)) { - block.setWarningText('Cannot make variable blocks shadow blocks.'); - } -}; - -/** - * Removes visual marking for a shadow block given a rendered block. - * @param {!Blockly.Block} block The block that should be unmarked as a shadow - * block (must be rendered). - */ -WorkspaceFactoryView.prototype.unmarkShadowBlock = function(block) { - // Remove Blockly CSS for user-generated shadow blocks. - Blockly.utils.dom.removeClass(block.svgGroup_, 'shadowBlock'); -}; - -/** - * Sets the tabs for modes according to which mode the user is currently - * editing in. - * @param {string} mode The mode being switched to - * (WorkspaceFactoryController.MODE_TOOLBOX or WorkspaceFactoryController.MODE_PRELOAD). - */ -WorkspaceFactoryView.prototype.setModeSelection = function(mode) { - document.getElementById('tab_preload').className = mode === - WorkspaceFactoryController.MODE_PRELOAD ? 'tabon' : 'taboff'; - document.getElementById('preload_div').style.display = mode === - WorkspaceFactoryController.MODE_PRELOAD ? 'block' : 'none'; - document.getElementById('tab_toolbox').className = mode === - WorkspaceFactoryController.MODE_TOOLBOX ? 'tabon' : 'taboff'; - document.getElementById('toolbox_div').style.display = mode === - WorkspaceFactoryController.MODE_TOOLBOX ? 'block' : 'none'; -}; - -/** - * Updates the help text above the workspace depending on the selected mode. - * @param {string} mode The selected mode (WorkspaceFactoryController.MODE_TOOLBOX or - * WorkspaceFactoryController.MODE_PRELOAD). - */ -WorkspaceFactoryView.prototype.updateHelpText = function(mode) { - if (mode === WorkspaceFactoryController.MODE_TOOLBOX) { - var helpText = 'Drag blocks into the workspace to configure the toolbox ' + - 'in your custom workspace.'; - } else { - var helpText = 'Drag blocks into the workspace to pre-load them in your ' + - 'custom workspace.' - } - document.getElementById('editHelpText').textContent = helpText; -}; - -/** - * Sets the basic options that are not dependent on if there are categories - * or a single flyout of blocks. Updates checkboxes and text fields. - */ -WorkspaceFactoryView.prototype.setBaseOptions = function() { - // Readonly mode. - document.getElementById('option_readOnly_checkbox').checked = false; - blocklyFactory.ifCheckedEnable(true, ['readonly1', 'readonly2']); - - // Set basic options. - document.getElementById('option_css_checkbox').checked = true; - document.getElementById('option_maxBlocks_number').value = 100; - document.getElementById('option_media_text').value = - 'https://blockly-demo.appspot.com/static/media/'; - document.getElementById('option_rtl_checkbox').checked = false; - document.getElementById('option_sounds_checkbox').checked = true; - document.getElementById('option_oneBasedIndex_checkbox').checked = true; - document.getElementById('option_horizontalLayout_checkbox').checked = false; - document.getElementById('option_toolboxPosition_checkbox').checked = false; - - // Check infinite blocks and hide suboption. - document.getElementById('option_infiniteBlocks_checkbox').checked = true; - document.getElementById('maxBlockNumber_option').style.display = - 'none'; - - // Uncheck grid and zoom options and hide suboptions. - document.getElementById('option_grid_checkbox').checked = false; - document.getElementById('grid_options').style.display = 'none'; - document.getElementById('option_zoom_checkbox').checked = false; - document.getElementById('zoom_options').style.display = 'none'; - - // Set grid options. - document.getElementById('gridOption_spacing_number').value = 20; - document.getElementById('gridOption_length_number').value = 1; - document.getElementById('gridOption_colour_text').value = '#888'; - document.getElementById('gridOption_snap_checkbox').checked = false; - - // Set zoom options. - document.getElementById('zoomOption_controls_checkbox').checked = true; - document.getElementById('zoomOption_wheel_checkbox').checked = true; - document.getElementById('zoomOption_startScale_number').value = 1.0; - document.getElementById('zoomOption_maxScale_number').value = 3; - document.getElementById('zoomOption_minScale_number').value = 0.3; - document.getElementById('zoomOption_scaleSpeed_number').value = 1.2; -}; - -/** - * Updates category specific options depending on if there are categories - * currently present. Updates checkboxes and text fields in the view. - * @param {boolean} hasCategories True if categories are present, false if all - * blocks are displayed in a single flyout. - */ -WorkspaceFactoryView.prototype.setCategoryOptions = function(hasCategories) { - document.getElementById('option_collapse_checkbox').checked = hasCategories; - document.getElementById('option_comments_checkbox').checked = hasCategories; - document.getElementById('option_disable_checkbox').checked = hasCategories; - document.getElementById('option_scrollbars_checkbox').checked = hasCategories; - document.getElementById('option_trashcan_checkbox').checked = hasCategories; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * Controls the UI elements for workspace factory, mainly the category tabs. + * Also includes downloading files because that interacts directly with the DOM. + * Depends on WorkspaceFactoryController (for adding mouse listeners). Tabs for + * each category are stored in tab map, which associates a unique ID for a + * category with a particular tab. + * + */ + + +/** + * Class for a WorkspaceFactoryView + * @constructor + */ +WorkspaceFactoryView = function() { + // For each tab, maps ID of a ListElement to the td DOM element. + this.tabMap = Object.create(null); +}; + +/** + * Adds a category tab to the UI, and updates tabMap accordingly. + * @param {string} name The name of the category being created + * @param {string} id ID of category being created + * @return {!Element} DOM element created for tab + */ +WorkspaceFactoryView.prototype.addCategoryRow = function(name, id) { + var table = document.getElementById('categoryTable'); + var count = table.rows.length; + + // Delete help label and enable category buttons if it's the first category. + if (count === 0) { + document.getElementById('categoryHeader').textContent = 'Your categories:'; + } + + // Create tab. + var row = table.insertRow(count); + var nextEntry = row.insertCell(0); + // Configure tab. + nextEntry.id = this.createCategoryIdName(name); + nextEntry.textContent = name; + // Store tab. + this.tabMap[id] = table.rows[count].cells[0]; + // Return tab. + return nextEntry; +}; + +/** + * Deletes a category tab from the UI and updates tabMap accordingly. + * @param {string} id ID of category to be deleted. + * @param {string} name The name of the category to be deleted. + */ +WorkspaceFactoryView.prototype.deleteElementRow = function(id, index) { + // Delete tab entry. + delete this.tabMap[id]; + // Delete tab row. + var table = document.getElementById('categoryTable'); + var count = table.rows.length; + table.deleteRow(index); + + // If last category removed, add category help text and disable category + // buttons. + this.addEmptyCategoryMessage(); +}; + +/** + * If there are no toolbox elements created, adds a help message to show + * where categories will appear. Should be called when deleting list elements + * in case the last element is deleted. + */ +WorkspaceFactoryView.prototype.addEmptyCategoryMessage = function() { + var table = document.getElementById('categoryTable'); + if (!table.rows.length) { + document.getElementById('categoryHeader').textContent = + 'You currently have no categories.'; + } +}; + +/** + * Given the index of the currently selected element, updates the state of + * the buttons that allow the user to edit the list elements. Updates the edit + * and arrow buttons. Should be called when adding or removing elements + * or when changing to a new element or when swapping to a different element. + * TODO(evd2014): Switch to using CSS to add/remove styles. + * @param {number} selectedIndex The index of the currently selected category, + * -1 if no categories created. + * @param {ListElement} selected The selected ListElement. + */ +WorkspaceFactoryView.prototype.updateState = function(selectedIndex, selected) { + // Disable/enable editing buttons as necessary. + document.getElementById('button_editCategory').disabled = selectedIndex < 0 || + selected.type !== ListElement.TYPE_CATEGORY; + document.getElementById('button_remove').disabled = selectedIndex < 0; + document.getElementById('button_up').disabled = selectedIndex <= 0; + var table = document.getElementById('categoryTable'); + document.getElementById('button_down').disabled = selectedIndex >= + table.rows.length - 1 || selectedIndex < 0; + // Disable/enable the workspace as necessary. + this.disableWorkspace(this.shouldDisableWorkspace(selected)); +}; + +/** + * Determines the DOM ID for a category given its name. + * @param {string} name Name of category + * @return {string} ID of category tab + */ +WorkspaceFactoryView.prototype.createCategoryIdName = function(name) { + return 'tab_' + name; +}; + +/** + * Switches a tab on or off. + * @param {string} id ID of the tab to switch on or off. + * @param {boolean} selected True if tab should be on, false if tab should be + * off. + */ +WorkspaceFactoryView.prototype.setCategoryTabSelection = + function(id, selected) { + if (!this.tabMap[id]) { + return; // Exit if tab does not exist. + } + this.tabMap[id].className = selected ? 'tabon' : 'taboff'; +}; + +/** + * Used to bind a click to a certain DOM element (used for category tabs). + * Taken directly from code.js + * @param {string|!Element} e1 Tab element or corresponding ID string. + * @param {!Function} func Function to be executed on click. + */ +WorkspaceFactoryView.prototype.bindClick = function(el, func) { + if (typeof el === 'string') { + el = document.getElementById(el); + } + el.addEventListener('click', func, true); + el.addEventListener('touchend', func, true); +}; + +/** + * Creates a file and downloads it. In some browsers downloads, and in other + * browsers, opens new tab with contents. + * @param {string} filename Name of file + * @param {!Blob} data Blob containing contents to download + */ +WorkspaceFactoryView.prototype.createAndDownloadFile = + function(filename, data) { + var clickEvent = new MouseEvent('click', { + 'view': window, + 'bubbles': true, + 'cancelable': false + }); + var a = document.createElement('a'); + a.href = window.URL.createObjectURL(data); + a.download = filename; + a.textContent = 'Download file!'; + a.dispatchEvent(clickEvent); +}; + +/** + * Given the ID of a certain category, updates the corresponding tab in + * the DOM to show a new name. + * @param {string} newName Name of string to be displayed on tab + * @param {string} id ID of category to be updated + */ +WorkspaceFactoryView.prototype.updateCategoryName = function(newName, id) { + this.tabMap[id].textContent = newName; + this.tabMap[id].id = this.createCategoryIdName(newName); +}; + +/** + * Moves a tab from one index to another. Adjusts index inserting before + * based on if inserting before or after. Checks that the indexes are in + * bounds, throws error if not. + * @param {string} id The ID of the category to move. + * @param {number} newIndex The index to move the category to. + * @param {number} oldIndex The index the category is currently at. + */ +WorkspaceFactoryView.prototype.moveTabToIndex = + function(id, newIndex, oldIndex) { + var table = document.getElementById('categoryTable'); + // Check that indexes are in bounds. + if (newIndex < 0 || newIndex >= table.rows.length || oldIndex < 0 || + oldIndex >= table.rows.length) { + throw Error('Index out of bounds when moving tab in the view.'); + } + + if (newIndex < oldIndex) { + // Inserting before. + var row = table.insertRow(newIndex); + row.appendChild(this.tabMap[id]); + table.deleteRow(oldIndex + 1); + } else { + // Inserting after. + var row = table.insertRow(newIndex + 1); + row.appendChild(this.tabMap[id]); + table.deleteRow(oldIndex); + } +}; + +/** + * Given a category ID and colour, use that colour to colour the left border of + * the tab for that category. + * @param {string} id The ID of the category to colour. + * @param {?string} colour The colour for to be used for the border of the tab, + * or null if none. Must be a valid CSS string. + */ +WorkspaceFactoryView.prototype.setBorderColour = function(id, colour) { + var style = this.tabMap[id].style; + if (colour) { + style.borderLeftWidth = '8px'; + style.borderLeftStyle = 'solid'; + style.borderColor = colour; + } else { + style.borderLeftWidth = ''; + style.borderLeftStyle = ''; + style.borderColor = ''; + } +}; + +/** + * Given a separator ID, creates a corresponding tab in the view, updates + * tab map, and returns the tab. + * @param {string} id The ID of the separator. + * @param {!Element} The td DOM element representing the separator. + */ +WorkspaceFactoryView.prototype.addSeparatorTab = function(id) { + var table = document.getElementById('categoryTable'); + var count = table.rows.length; + + if (count === 0) { + document.getElementById('categoryHeader').textContent = 'Your categories:'; + } + // Create separator. + var row = table.insertRow(count); + var nextEntry = row.insertCell(0); + // Configure separator. + nextEntry.style.height = '10px'; + // Store and return separator. + this.tabMap[id] = table.rows[count].cells[0]; + return nextEntry; +}; + +/** + * Disables or enables the workspace by putting a div over or under the + * toolbox workspace, depending on the value of disable. Used when switching + * to/from separators where the user shouldn't be able to drag blocks into + * the workspace. + * @param {boolean} disable True if the workspace should be disabled, false + * if it should be enabled. + */ +WorkspaceFactoryView.prototype.disableWorkspace = function(disable) { + if (disable) { + document.getElementById('toolbox_section').className = 'disabled'; + document.getElementById('toolbox_blocks').style.pointerEvents = 'none'; + } else { + document.getElementById('toolbox_section').className = ''; + document.getElementById('toolbox_blocks').style.pointerEvents = 'auto'; + } + +}; + +/** + * Determines if the workspace should be disabled. The workspace should be + * disabled if category is a separator or has VARIABLE or PROCEDURE tags. + * @return {boolean} True if the workspace should be disabled, false otherwise. + */ +WorkspaceFactoryView.prototype.shouldDisableWorkspace = function(category) { + return category !== null && category.type !== ListElement.TYPE_FLYOUT && + (category.type === ListElement.TYPE_SEPARATOR || + category.custom === 'VARIABLE' || category.custom === 'PROCEDURE'); +}; + +/** + * Removes all categories and separators in the view. Clears the tabMap to + * reflect this. + */ +WorkspaceFactoryView.prototype.clearToolboxTabs = function() { + this.tabMap = []; + var oldCategoryTable = document.getElementById('categoryTable'); + var newCategoryTable = document.createElement('table'); + newCategoryTable.id = 'categoryTable'; + newCategoryTable.style.width = 'auto'; + oldCategoryTable.parentElement.replaceChild(newCategoryTable, + oldCategoryTable); +}; + +/** + * Given a set of blocks currently loaded user-generated shadow blocks, visually + * marks them without making them actual shadow blocks (allowing them to still + * be editable and movable). + * @param {!Array} blocks Array of user-generated shadow blocks + * currently loaded. + */ +WorkspaceFactoryView.prototype.markShadowBlocks = function(blocks) { + for (var i = 0; i < blocks.length; i++) { + this.markShadowBlock(blocks[i]); + } +}; + +/** + * Visually marks a user-generated shadow block as a shadow block in the + * workspace without making the block an actual shadow block (allowing it + * to be moved and edited). + * @param {!Blockly.Block} block The block that should be marked as a shadow + * block (must be rendered). + */ +WorkspaceFactoryView.prototype.markShadowBlock = function(block) { + // Add Blockly CSS for user-generated shadow blocks. + Blockly.utils.dom.addClass(block.svgGroup_, 'shadowBlock'); + // If not a valid shadow block, add a warning message. + if (!block.getSurroundParent()) { + block.setWarningText('Shadow blocks must be nested inside' + + ' other blocks to be displayed.'); + } + if (FactoryUtils.hasVariableField(block)) { + block.setWarningText('Cannot make variable blocks shadow blocks.'); + } +}; + +/** + * Removes visual marking for a shadow block given a rendered block. + * @param {!Blockly.Block} block The block that should be unmarked as a shadow + * block (must be rendered). + */ +WorkspaceFactoryView.prototype.unmarkShadowBlock = function(block) { + // Remove Blockly CSS for user-generated shadow blocks. + Blockly.utils.dom.removeClass(block.svgGroup_, 'shadowBlock'); +}; + +/** + * Sets the tabs for modes according to which mode the user is currently + * editing in. + * @param {string} mode The mode being switched to + * (WorkspaceFactoryController.MODE_TOOLBOX or WorkspaceFactoryController.MODE_PRELOAD). + */ +WorkspaceFactoryView.prototype.setModeSelection = function(mode) { + document.getElementById('tab_preload').className = mode === + WorkspaceFactoryController.MODE_PRELOAD ? 'tabon' : 'taboff'; + document.getElementById('preload_div').style.display = mode === + WorkspaceFactoryController.MODE_PRELOAD ? 'block' : 'none'; + document.getElementById('tab_toolbox').className = mode === + WorkspaceFactoryController.MODE_TOOLBOX ? 'tabon' : 'taboff'; + document.getElementById('toolbox_div').style.display = mode === + WorkspaceFactoryController.MODE_TOOLBOX ? 'block' : 'none'; +}; + +/** + * Updates the help text above the workspace depending on the selected mode. + * @param {string} mode The selected mode (WorkspaceFactoryController.MODE_TOOLBOX or + * WorkspaceFactoryController.MODE_PRELOAD). + */ +WorkspaceFactoryView.prototype.updateHelpText = function(mode) { + if (mode === WorkspaceFactoryController.MODE_TOOLBOX) { + var helpText = 'Drag blocks into the workspace to configure the toolbox ' + + 'in your custom workspace.'; + } else { + var helpText = 'Drag blocks into the workspace to pre-load them in your ' + + 'custom workspace.' + } + document.getElementById('editHelpText').textContent = helpText; +}; + +/** + * Sets the basic options that are not dependent on if there are categories + * or a single flyout of blocks. Updates checkboxes and text fields. + */ +WorkspaceFactoryView.prototype.setBaseOptions = function() { + // Readonly mode. + document.getElementById('option_readOnly_checkbox').checked = false; + blocklyFactory.ifCheckedEnable(true, ['readonly1', 'readonly2']); + + // Set basic options. + document.getElementById('option_css_checkbox').checked = true; + document.getElementById('option_maxBlocks_number').value = 100; + document.getElementById('option_media_text').value = + 'https://blockly-demo.appspot.com/static/media/'; + document.getElementById('option_rtl_checkbox').checked = false; + document.getElementById('option_sounds_checkbox').checked = true; + document.getElementById('option_oneBasedIndex_checkbox').checked = true; + document.getElementById('option_horizontalLayout_checkbox').checked = false; + document.getElementById('option_toolboxPosition_checkbox').checked = false; + + // Check infinite blocks and hide suboption. + document.getElementById('option_infiniteBlocks_checkbox').checked = true; + document.getElementById('maxBlockNumber_option').style.display = + 'none'; + + // Uncheck grid and zoom options and hide suboptions. + document.getElementById('option_grid_checkbox').checked = false; + document.getElementById('grid_options').style.display = 'none'; + document.getElementById('option_zoom_checkbox').checked = false; + document.getElementById('zoom_options').style.display = 'none'; + + // Set grid options. + document.getElementById('gridOption_spacing_number').value = 20; + document.getElementById('gridOption_length_number').value = 1; + document.getElementById('gridOption_colour_text').value = '#888'; + document.getElementById('gridOption_snap_checkbox').checked = false; + + // Set zoom options. + document.getElementById('zoomOption_controls_checkbox').checked = true; + document.getElementById('zoomOption_wheel_checkbox').checked = true; + document.getElementById('zoomOption_startScale_number').value = 1.0; + document.getElementById('zoomOption_maxScale_number').value = 3; + document.getElementById('zoomOption_minScale_number').value = 0.3; + document.getElementById('zoomOption_scaleSpeed_number').value = 1.2; +}; + +/** + * Updates category specific options depending on if there are categories + * currently present. Updates checkboxes and text fields in the view. + * @param {boolean} hasCategories True if categories are present, false if all + * blocks are displayed in a single flyout. + */ +WorkspaceFactoryView.prototype.setCategoryOptions = function(hasCategories) { + document.getElementById('option_collapse_checkbox').checked = hasCategories; + document.getElementById('option_comments_checkbox').checked = hasCategories; + document.getElementById('option_disable_checkbox').checked = hasCategories; + document.getElementById('option_scrollbars_checkbox').checked = hasCategories; + document.getElementById('option_trashcan_checkbox').checked = hasCategories; +}; diff --git a/demos/blockfactory_old/blocks.js b/demos/blockfactory_old/blocks.js index 11bc0111270..9ce7d271dac 100644 --- a/demos/blockfactory_old/blocks.js +++ b/demos/blockfactory_old/blocks.js @@ -1,794 +1,794 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Blocks for Blockly's Block Factory application. - */ -'use strict'; - -Blockly.Blocks['factory_base'] = { - // Base of new block. - init: function() { - this.setColour(120); - this.appendDummyInput() - .appendField('name') - .appendField(new Blockly.FieldTextInput('block_type'), 'NAME'); - this.appendStatementInput('INPUTS') - .setCheck('Input') - .appendField('inputs'); - var dropdown = new Blockly.FieldDropdown([ - ['automatic inputs', 'AUTO'], - ['external inputs', 'EXT'], - ['inline inputs', 'INT']]); - this.appendDummyInput() - .appendField(dropdown, 'INLINE'); - dropdown = new Blockly.FieldDropdown([ - ['no connections', 'NONE'], - ['← left output', 'LEFT'], - ['↕ top+bottom connections', 'BOTH'], - ['↑ top connection', 'TOP'], - ['↓ bottom connection', 'BOTTOM']], - function(option) { - this.sourceBlock_.updateShape_(option); - // Connect a shadow block to this new input. - this.sourceBlock_.spawnOutputShadow_(option); - }); - this.appendDummyInput() - .appendField(dropdown, 'CONNECTIONS'); - this.appendValueInput('COLOUR') - .setCheck('Colour') - .appendField('colour'); - this.setTooltip('Build a custom block by plugging\n' + - 'fields, inputs and other blocks here.'); - this.setHelpUrl( - 'https://developers.google.com/blockly/guides/create-custom-blocks/block-factory'); - }, - mutationToDom: function() { - var container = Blockly.utils.xml.createElement('mutation'); - container.setAttribute('connections', this.getFieldValue('CONNECTIONS')); - return container; - }, - domToMutation: function(xmlElement) { - var connections = xmlElement.getAttribute('connections'); - this.updateShape_(connections); - }, - spawnOutputShadow_: function(option) { - // Helper method for deciding which type of outputs this block needs - // to attach shadow blocks to. - switch (option) { - case 'LEFT': - this.connectOutputShadow_('OUTPUTTYPE'); - break; - case 'TOP': - this.connectOutputShadow_('TOPTYPE'); - break; - case 'BOTTOM': - this.connectOutputShadow_('BOTTOMTYPE'); - break; - case 'BOTH': - this.connectOutputShadow_('TOPTYPE'); - this.connectOutputShadow_('BOTTOMTYPE'); - break; - } - }, - connectOutputShadow_: function(outputType) { - // Helper method to create & connect shadow block. - var type = this.workspace.newBlock('type_null'); - type.setShadow(true); - type.outputConnection.connect(this.getInput(outputType).connection); - type.initSvg(); - type.render(); - }, - updateShape_: function(option) { - var outputExists = this.getInput('OUTPUTTYPE'); - var topExists = this.getInput('TOPTYPE'); - var bottomExists = this.getInput('BOTTOMTYPE'); - if (option === 'LEFT') { - if (!outputExists) { - this.addTypeInput_('OUTPUTTYPE', 'output type'); - } - } else if (outputExists) { - this.removeInput('OUTPUTTYPE'); - } - if (option === 'TOP' || option === 'BOTH') { - if (!topExists) { - this.addTypeInput_('TOPTYPE', 'top type'); - } - } else if (topExists) { - this.removeInput('TOPTYPE'); - } - if (option === 'BOTTOM' || option === 'BOTH') { - if (!bottomExists) { - this.addTypeInput_('BOTTOMTYPE', 'bottom type'); - } - } else if (bottomExists) { - this.removeInput('BOTTOMTYPE'); - } - }, - addTypeInput_: function(name, label) { - this.appendValueInput(name) - .setCheck('Type') - .appendField(label); - this.moveInputBefore(name, 'COLOUR'); - } -}; - -var FIELD_MESSAGE = 'fields %1 %2'; -var FIELD_ARGS = [ - { - "type": "field_dropdown", - "name": "ALIGN", - "options": [['left', 'LEFT'], ['right', 'RIGHT'], ['centre', 'CENTRE']], - }, - { - "type": "input_statement", - "name": "FIELDS", - "check": "Field" - } -]; - -var TYPE_MESSAGE = 'type %1'; -var TYPE_ARGS = [ - { - "type": "input_value", - "name": "TYPE", - "check": "Type", - "align": "RIGHT" - } -]; - -Blockly.Blocks['input_value'] = { - // Value input. - init: function() { - this.jsonInit({ - "message0": "value input %1 %2", - "args0": [ - { - "type": "field_input", - "name": "INPUTNAME", - "text": "NAME" - }, - { - "type": "input_dummy" - } - ], - "message1": FIELD_MESSAGE, - "args1": FIELD_ARGS, - "message2": TYPE_MESSAGE, - "args2": TYPE_ARGS, - "previousStatement": "Input", - "nextStatement": "Input", - "colour": 210, - "tooltip": "A value socket for horizontal connections.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=71" - }); - }, - onchange: function() { - inputNameCheck(this); - } -}; - -Blockly.Blocks['input_statement'] = { - // Statement input. - init: function() { - this.jsonInit({ - "message0": "statement input %1 %2", - "args0": [ - { - "type": "field_input", - "name": "INPUTNAME", - "text": "NAME" - }, - { - "type": "input_dummy" - }, - ], - "message1": FIELD_MESSAGE, - "args1": FIELD_ARGS, - "message2": TYPE_MESSAGE, - "args2": TYPE_ARGS, - "previousStatement": "Input", - "nextStatement": "Input", - "colour": 210, - "tooltip": "A statement socket for enclosed vertical stacks.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=246" - }); - }, - onchange: function() { - inputNameCheck(this); - } -}; - -Blockly.Blocks['input_dummy'] = { - // Dummy input. - init: function() { - this.jsonInit({ - "message0": "dummy input", - "message1": FIELD_MESSAGE, - "args1": FIELD_ARGS, - "previousStatement": "Input", - "nextStatement": "Input", - "colour": 210, - "tooltip": "For adding fields on a separate row with no " + - "connections. Alignment options (left, right, centre) " + - "apply only to multi-line fields.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=293" - }); - } -}; - -Blockly.Blocks['field_static'] = { - // Text value. - init: function() { - this.setColour(160); - this.appendDummyInput() - .appendField('text') - .appendField(new Blockly.FieldTextInput(''), 'TEXT'); - this.setPreviousStatement(true, 'Field'); - this.setNextStatement(true, 'Field'); - this.setTooltip('Static text that serves as a label.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=88'); - } -}; - -Blockly.Blocks['field_input'] = { - // Text input. - init: function() { - this.setColour(160); - this.appendDummyInput() - .appendField('text input') - .appendField(new Blockly.FieldTextInput('default'), 'TEXT') - .appendField(',') - .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); - this.setPreviousStatement(true, 'Field'); - this.setNextStatement(true, 'Field'); - this.setTooltip('An input field for the user to enter text.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=319'); - }, - onchange: function() { - fieldNameCheck(this); - } -}; - -Blockly.Blocks['field_number'] = { - // Numeric input. - init: function() { - this.setColour(160); - this.appendDummyInput() - .appendField('numeric input') - .appendField(new Blockly.FieldNumber(0), 'VALUE') - .appendField(',') - .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); - this.appendDummyInput() - .appendField('min') - .appendField(new Blockly.FieldNumber(-Infinity), 'MIN') - .appendField('max') - .appendField(new Blockly.FieldNumber(Infinity), 'MAX') - .appendField('precision') - .appendField(new Blockly.FieldNumber(0, 0), 'PRECISION'); - this.setPreviousStatement(true, 'Field'); - this.setNextStatement(true, 'Field'); - this.setTooltip('An input field for the user to enter a number.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=319'); - }, - onchange: function() { - fieldNameCheck(this); - } -}; - -Blockly.Blocks['field_angle'] = { - // Angle input. - init: function() { - this.setColour(160); - this.appendDummyInput() - .appendField('angle input') - .appendField(new Blockly.FieldAngle('90'), 'ANGLE') - .appendField(',') - .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); - this.setPreviousStatement(true, 'Field'); - this.setNextStatement(true, 'Field'); - this.setTooltip('An input field for the user to enter an angle.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=372'); - }, - onchange: function() { - fieldNameCheck(this); - } -}; - -Blockly.Blocks['field_dropdown'] = { - // Dropdown menu. - init: function() { - this.appendDummyInput() - .appendField('dropdown') - .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); - this.optionCount_ = 3; - this.updateShape_(); - this.setPreviousStatement(true, 'Field'); - this.setNextStatement(true, 'Field'); - this.setMutator(new Blockly.Mutator(['field_dropdown_option'])); - this.setColour(160); - this.setTooltip('Dropdown menu with a list of options.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=386'); - }, - mutationToDom: function(workspace) { - // Create XML to represent menu options. - var container = Blockly.utils.xml.createElement('mutation'); - container.setAttribute('options', this.optionCount_); - return container; - }, - domToMutation: function(container) { - // Parse XML to restore the menu options. - this.optionCount_ = parseInt(container.getAttribute('options'), 10); - this.updateShape_(); - }, - decompose: function(workspace) { - // Populate the mutator's dialog with this block's components. - var containerBlock = workspace.newBlock('field_dropdown_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.optionCount_; i++) { - var optionBlock = workspace.newBlock('field_dropdown_option'); - optionBlock.initSvg(); - connection.connect(optionBlock.previousConnection); - connection = optionBlock.nextConnection; - } - return containerBlock; - }, - compose: function(containerBlock) { - // Reconfigure this block based on the mutator dialog's components. - var optionBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var data = []; - while (optionBlock) { - data.push([optionBlock.userData_, optionBlock.cpuData_]); - optionBlock = optionBlock.nextConnection && - optionBlock.nextConnection.targetBlock(); - } - this.optionCount_ = data.length; - this.updateShape_(); - // Restore any data. - for (var i = 0; i < this.optionCount_; i++) { - this.setFieldValue(data[i][0] || 'option', 'USER' + i); - this.setFieldValue(data[i][1] || 'OPTIONNAME', 'CPU' + i); - } - }, - saveConnections: function(containerBlock) { - // Store names and values for each option. - var optionBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (optionBlock) { - optionBlock.userData_ = this.getFieldValue('USER' + i); - optionBlock.cpuData_ = this.getFieldValue('CPU' + i); - i++; - optionBlock = optionBlock.nextConnection && - optionBlock.nextConnection.targetBlock(); - } - }, - updateShape_: function() { - // Modify this block to have the correct number of options. - // Add new options. - for (var i = 0; i < this.optionCount_; i++) { - if (!this.getInput('OPTION' + i)) { - this.appendDummyInput('OPTION' + i) - .appendField(new Blockly.FieldTextInput('option'), 'USER' + i) - .appendField(',') - .appendField(new Blockly.FieldTextInput('OPTIONNAME'), 'CPU' + i); - } - } - // Remove deleted options. - while (this.getInput('OPTION' + i)) { - this.removeInput('OPTION' + i); - i++; - } - }, - onchange: function() { - if (this.workspace && this.optionCount_ < 1) { - this.setWarningText('Drop down menu must\nhave at least one option.'); - } else { - fieldNameCheck(this); - } - } -}; - -Blockly.Blocks['field_dropdown_container'] = { - // Container. - init: function() { - this.setColour(160); - this.appendDummyInput() - .appendField('add options'); - this.appendStatementInput('STACK'); - this.setTooltip('Add, remove, or reorder options\n' + - 'to reconfigure this dropdown menu.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=386'); - this.contextMenu = false; - } -}; - -Blockly.Blocks['field_dropdown_option'] = { - // Add option. - init: function() { - this.setColour(160); - this.appendDummyInput() - .appendField('option'); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setTooltip('Add a new option to the dropdown menu.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=386'); - this.contextMenu = false; - } -}; - -Blockly.Blocks['field_checkbox'] = { - // Checkbox. - init: function() { - this.setColour(160); - this.appendDummyInput() - .appendField('checkbox') - .appendField(new Blockly.FieldCheckbox('TRUE'), 'CHECKED') - .appendField(',') - .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); - this.setPreviousStatement(true, 'Field'); - this.setNextStatement(true, 'Field'); - this.setTooltip('Checkbox field.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=485'); - }, - onchange: function() { - fieldNameCheck(this); - } -}; - -Blockly.Blocks['field_colour'] = { - // Colour input. - init: function() { - this.setColour(160); - this.appendDummyInput() - .appendField('colour') - .appendField(new Blockly.FieldColour('#ff0000'), 'COLOUR') - .appendField(',') - .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); - this.setPreviousStatement(true, 'Field'); - this.setNextStatement(true, 'Field'); - this.setTooltip('Colour input field.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=495'); - }, - onchange: function() { - fieldNameCheck(this); - } -}; - -Blockly.Blocks['field_variable'] = { - // Dropdown for variables. - init: function() { - this.setColour(160); - this.appendDummyInput() - .appendField('variable') - .appendField(new Blockly.FieldTextInput('item'), 'TEXT') - .appendField(',') - .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); - this.setPreviousStatement(true, 'Field'); - this.setNextStatement(true, 'Field'); - this.setTooltip('Dropdown menu for variable names.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=510'); - }, - onchange: function() { - fieldNameCheck(this); - } -}; - -Blockly.Blocks['field_image'] = { - // Image. - init: function() { - this.setColour(160); - var src = 'https://www.gstatic.com/codesite/ph/images/star_on.gif'; - this.appendDummyInput() - .appendField('image') - .appendField(new Blockly.FieldTextInput(src), 'SRC'); - this.appendDummyInput() - .appendField('width') - .appendField(new Blockly.FieldNumber('15', 0, NaN, 1), 'WIDTH') - .appendField('height') - .appendField(new Blockly.FieldNumber('15', 0, NaN, 1), 'HEIGHT') - .appendField('alt text') - .appendField(new Blockly.FieldTextInput('*'), 'ALT'); - this.setPreviousStatement(true, 'Field'); - this.setNextStatement(true, 'Field'); - this.setTooltip('Static image (JPEG, PNG, GIF, SVG, BMP).\n' + - 'Retains aspect ratio regardless of height and width.\n' + - 'Alt text is for when collapsed.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=567'); - } -}; - -Blockly.Blocks['type_group'] = { - // Group of types. - init: function() { - this.typeCount_ = 2; - this.updateShape_(); - this.setOutput(true, 'Type'); - this.setMutator(new Blockly.Mutator(['type_group_item'])); - this.setColour(230); - this.setTooltip('Allows more than one type to be accepted.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=677'); - }, - mutationToDom: function(workspace) { - // Create XML to represent a group of types. - var container = Blockly.utils.xml.createElement('mutation'); - container.setAttribute('types', this.typeCount_); - return container; - }, - domToMutation: function(container) { - // Parse XML to restore the group of types. - this.typeCount_ = parseInt(container.getAttribute('types'), 10); - this.updateShape_(); - for (var i = 0; i < this.typeCount_; i++) { - this.removeInput('TYPE' + i); - } - for (var i = 0; i < this.typeCount_; i++) { - var input = this.appendValueInput('TYPE' + i) - .setCheck('Type'); - if (i === 0) { - input.appendField('any of'); - } - } - }, - decompose: function(workspace) { - // Populate the mutator's dialog with this block's components. - var containerBlock = workspace.newBlock('type_group_container'); - containerBlock.initSvg(); - var connection = containerBlock.getInput('STACK').connection; - for (var i = 0; i < this.typeCount_; i++) { - var typeBlock = workspace.newBlock('type_group_item'); - typeBlock.initSvg(); - connection.connect(typeBlock.previousConnection); - connection = typeBlock.nextConnection; - } - return containerBlock; - }, - compose: function(containerBlock) { - // Reconfigure this block based on the mutator dialog's components. - var typeBlock = containerBlock.getInputTargetBlock('STACK'); - // Count number of inputs. - var connections = []; - while (typeBlock) { - connections.push(typeBlock.valueConnection_); - typeBlock = typeBlock.nextConnection && - typeBlock.nextConnection.targetBlock(); - } - // Disconnect any children that don't belong. - for (var i = 0; i < this.typeCount_; i++) { - var connection = this.getInput('TYPE' + i).connection.targetConnection; - if (connection && connections.indexOf(connection) === -1) { - connection.disconnect(); - } - } - this.typeCount_ = connections.length; - this.updateShape_(); - // Reconnect any child blocks. - for (var i = 0; i < this.typeCount_; i++) { - Blockly.Mutator.reconnect(connections[i], this, 'TYPE' + i); - } - }, - saveConnections: function(containerBlock) { - // Store a pointer to any connected child blocks. - var typeBlock = containerBlock.getInputTargetBlock('STACK'); - var i = 0; - while (typeBlock) { - var input = this.getInput('TYPE' + i); - typeBlock.valueConnection_ = input && input.connection.targetConnection; - i++; - typeBlock = typeBlock.nextConnection && - typeBlock.nextConnection.targetBlock(); - } - }, - updateShape_: function() { - // Modify this block to have the correct number of inputs. - // Add new inputs. - for (var i = 0; i < this.typeCount_; i++) { - if (!this.getInput('TYPE' + i)) { - var input = this.appendValueInput('TYPE' + i); - if (i === 0) { - input.appendField('any of'); - } - } - } - // Remove deleted inputs. - while (this.getInput('TYPE' + i)) { - this.removeInput('TYPE' + i); - i++; - } - } -}; - -Blockly.Blocks['type_group_container'] = { - // Container. - init: function() { - this.jsonInit({ - "message0": "add types %1 %2", - "args0": [ - {"type": "input_dummy"}, - {"type": "input_statement", "name": "STACK"} - ], - "colour": 230, - "tooltip": "Add, or remove allowed type.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=677" - }); - } -}; - -Blockly.Blocks['type_group_item'] = { - // Add type. - init: function() { - this.jsonInit({ - "message0": "type", - "previousStatement": null, - "nextStatement": null, - "colour": 230, - "tooltip": "Add a new allowed type.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=677" - }); - } -}; - -Blockly.Blocks['type_null'] = { - // Null type. - valueType: null, - init: function() { - this.jsonInit({ - "message0": "any", - "output": "Type", - "colour": 230, - "tooltip": "Any type is allowed.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" - }); - } -}; - -Blockly.Blocks['type_boolean'] = { - // Boolean type. - valueType: 'Boolean', - init: function() { - this.jsonInit({ - "message0": "Boolean", - "output": "Type", - "colour": 230, - "tooltip": "Booleans (true/false) are allowed.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" - }); - } -}; - -Blockly.Blocks['type_number'] = { - // Number type. - valueType: 'Number', - init: function() { - this.jsonInit({ - "message0": "Number", - "output": "Type", - "colour": 230, - "tooltip": "Numbers (int/float) are allowed.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" - }); - } -}; - -Blockly.Blocks['type_string'] = { - // String type. - valueType: 'String', - init: function() { - this.jsonInit({ - "message0": "String", - "output": "Type", - "colour": 230, - "tooltip": "Strings (text) are allowed.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" - }); - } -}; - -Blockly.Blocks['type_list'] = { - // List type. - valueType: 'Array', - init: function() { - this.jsonInit({ - "message0": "Array", - "output": "Type", - "colour": 230, - "tooltip": "Arrays (lists) are allowed.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" - }); - } -}; - -Blockly.Blocks['type_other'] = { - // Other type. - init: function() { - this.jsonInit({ - "message0": "other %1", - "args0": [{"type": "field_input", "name": "TYPE", "text": ""}], - "output": "Type", - "colour": 230, - "tooltip": "Custom type to allow.", - "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=702" - }); - } -}; - -Blockly.Blocks['colour_hue'] = { - // Set the colour of the block. - init: function() { - this.appendDummyInput() - .appendField('hue:') - .appendField(new Blockly.FieldAngle('0', this.validator), 'HUE'); - this.setOutput(true, 'Colour'); - this.setTooltip('Paint the block with this colour.'); - this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=55'); - }, - validator: function(text) { - // Update the current block's colour to match. - var hue = parseInt(text, 10); - if (!isNaN(hue)) { - this.sourceBlock_.setColour(hue); - } - }, - mutationToDom: function(workspace) { - var container = Blockly.utils.xml.createElement('mutation'); - container.setAttribute('colour', this.getColour()); - return container; - }, - domToMutation: function(container) { - this.setColour(container.getAttribute('colour')); - } -}; - -/** - * Check to see if more than one field has this name. - * Highly inefficient (On^2), but n is small. - * @param {!Blockly.Block} referenceBlock Block to check. - */ -function fieldNameCheck(referenceBlock) { - if (!referenceBlock.workspace) { - // Block has been deleted. - return; - } - var name = referenceBlock.getFieldValue('FIELDNAME').toLowerCase(); - var count = 0; - var blocks = referenceBlock.workspace.getAllBlocks(false); - for (var i = 0, block; block = blocks[i]; i++) { - var otherName = block.getFieldValue('FIELDNAME'); - if (!block.disabled && !block.getInheritedDisabled() && - otherName && otherName.toLowerCase() === name) { - count++; - } - } - var msg = (count > 1) ? - 'There are ' + count + ' field blocks\n with this name.' : null; - referenceBlock.setWarningText(msg); -} - -/** - * Check to see if more than one input has this name. - * Highly inefficient (On^2), but n is small. - * @param {!Blockly.Block} referenceBlock Block to check. - */ -function inputNameCheck(referenceBlock) { - if (!referenceBlock.workspace) { - // Block has been deleted. - return; - } - var name = referenceBlock.getFieldValue('INPUTNAME').toLowerCase(); - var count = 0; - var blocks = referenceBlock.workspace.getAllBlocks(false); - for (var i = 0, block; block = blocks[i]; i++) { - var otherName = block.getFieldValue('INPUTNAME'); - if (!block.disabled && !block.getInheritedDisabled() && - otherName && otherName.toLowerCase() === name) { - count++; - } - } - var msg = (count > 1) ? - 'There are ' + count + ' input blocks\n with this name.' : null; - referenceBlock.setWarningText(msg); -} +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blocks for Blockly's Block Factory application. + */ +'use strict'; + +Blockly.Blocks['factory_base'] = { + // Base of new block. + init: function() { + this.setColour(120); + this.appendDummyInput() + .appendField('name') + .appendField(new Blockly.FieldTextInput('block_type'), 'NAME'); + this.appendStatementInput('INPUTS') + .setCheck('Input') + .appendField('inputs'); + var dropdown = new Blockly.FieldDropdown([ + ['automatic inputs', 'AUTO'], + ['external inputs', 'EXT'], + ['inline inputs', 'INT']]); + this.appendDummyInput() + .appendField(dropdown, 'INLINE'); + dropdown = new Blockly.FieldDropdown([ + ['no connections', 'NONE'], + ['← left output', 'LEFT'], + ['↕ top+bottom connections', 'BOTH'], + ['↑ top connection', 'TOP'], + ['↓ bottom connection', 'BOTTOM']], + function(option) { + this.sourceBlock_.updateShape_(option); + // Connect a shadow block to this new input. + this.sourceBlock_.spawnOutputShadow_(option); + }); + this.appendDummyInput() + .appendField(dropdown, 'CONNECTIONS'); + this.appendValueInput('COLOUR') + .setCheck('Colour') + .appendField('colour'); + this.setTooltip('Build a custom block by plugging\n' + + 'fields, inputs and other blocks here.'); + this.setHelpUrl( + 'https://developers.google.com/blockly/guides/create-custom-blocks/block-factory'); + }, + mutationToDom: function() { + var container = Blockly.utils.xml.createElement('mutation'); + container.setAttribute('connections', this.getFieldValue('CONNECTIONS')); + return container; + }, + domToMutation: function(xmlElement) { + var connections = xmlElement.getAttribute('connections'); + this.updateShape_(connections); + }, + spawnOutputShadow_: function(option) { + // Helper method for deciding which type of outputs this block needs + // to attach shadow blocks to. + switch (option) { + case 'LEFT': + this.connectOutputShadow_('OUTPUTTYPE'); + break; + case 'TOP': + this.connectOutputShadow_('TOPTYPE'); + break; + case 'BOTTOM': + this.connectOutputShadow_('BOTTOMTYPE'); + break; + case 'BOTH': + this.connectOutputShadow_('TOPTYPE'); + this.connectOutputShadow_('BOTTOMTYPE'); + break; + } + }, + connectOutputShadow_: function(outputType) { + // Helper method to create & connect shadow block. + var type = this.workspace.newBlock('type_null'); + type.setShadow(true); + type.outputConnection.connect(this.getInput(outputType).connection); + type.initSvg(); + type.render(); + }, + updateShape_: function(option) { + var outputExists = this.getInput('OUTPUTTYPE'); + var topExists = this.getInput('TOPTYPE'); + var bottomExists = this.getInput('BOTTOMTYPE'); + if (option === 'LEFT') { + if (!outputExists) { + this.addTypeInput_('OUTPUTTYPE', 'output type'); + } + } else if (outputExists) { + this.removeInput('OUTPUTTYPE'); + } + if (option === 'TOP' || option === 'BOTH') { + if (!topExists) { + this.addTypeInput_('TOPTYPE', 'top type'); + } + } else if (topExists) { + this.removeInput('TOPTYPE'); + } + if (option === 'BOTTOM' || option === 'BOTH') { + if (!bottomExists) { + this.addTypeInput_('BOTTOMTYPE', 'bottom type'); + } + } else if (bottomExists) { + this.removeInput('BOTTOMTYPE'); + } + }, + addTypeInput_: function(name, label) { + this.appendValueInput(name) + .setCheck('Type') + .appendField(label); + this.moveInputBefore(name, 'COLOUR'); + } +}; + +var FIELD_MESSAGE = 'fields %1 %2'; +var FIELD_ARGS = [ + { + "type": "field_dropdown", + "name": "ALIGN", + "options": [['left', 'LEFT'], ['right', 'RIGHT'], ['centre', 'CENTRE']], + }, + { + "type": "input_statement", + "name": "FIELDS", + "check": "Field" + } +]; + +var TYPE_MESSAGE = 'type %1'; +var TYPE_ARGS = [ + { + "type": "input_value", + "name": "TYPE", + "check": "Type", + "align": "RIGHT" + } +]; + +Blockly.Blocks['input_value'] = { + // Value input. + init: function() { + this.jsonInit({ + "message0": "value input %1 %2", + "args0": [ + { + "type": "field_input", + "name": "INPUTNAME", + "text": "NAME" + }, + { + "type": "input_dummy" + } + ], + "message1": FIELD_MESSAGE, + "args1": FIELD_ARGS, + "message2": TYPE_MESSAGE, + "args2": TYPE_ARGS, + "previousStatement": "Input", + "nextStatement": "Input", + "colour": 210, + "tooltip": "A value socket for horizontal connections.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=71" + }); + }, + onchange: function() { + inputNameCheck(this); + } +}; + +Blockly.Blocks['input_statement'] = { + // Statement input. + init: function() { + this.jsonInit({ + "message0": "statement input %1 %2", + "args0": [ + { + "type": "field_input", + "name": "INPUTNAME", + "text": "NAME" + }, + { + "type": "input_dummy" + }, + ], + "message1": FIELD_MESSAGE, + "args1": FIELD_ARGS, + "message2": TYPE_MESSAGE, + "args2": TYPE_ARGS, + "previousStatement": "Input", + "nextStatement": "Input", + "colour": 210, + "tooltip": "A statement socket for enclosed vertical stacks.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=246" + }); + }, + onchange: function() { + inputNameCheck(this); + } +}; + +Blockly.Blocks['input_dummy'] = { + // Dummy input. + init: function() { + this.jsonInit({ + "message0": "dummy input", + "message1": FIELD_MESSAGE, + "args1": FIELD_ARGS, + "previousStatement": "Input", + "nextStatement": "Input", + "colour": 210, + "tooltip": "For adding fields on a separate row with no " + + "connections. Alignment options (left, right, centre) " + + "apply only to multi-line fields.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=293" + }); + } +}; + +Blockly.Blocks['field_static'] = { + // Text value. + init: function() { + this.setColour(160); + this.appendDummyInput() + .appendField('text') + .appendField(new Blockly.FieldTextInput(''), 'TEXT'); + this.setPreviousStatement(true, 'Field'); + this.setNextStatement(true, 'Field'); + this.setTooltip('Static text that serves as a label.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=88'); + } +}; + +Blockly.Blocks['field_input'] = { + // Text input. + init: function() { + this.setColour(160); + this.appendDummyInput() + .appendField('text input') + .appendField(new Blockly.FieldTextInput('default'), 'TEXT') + .appendField(',') + .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); + this.setPreviousStatement(true, 'Field'); + this.setNextStatement(true, 'Field'); + this.setTooltip('An input field for the user to enter text.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=319'); + }, + onchange: function() { + fieldNameCheck(this); + } +}; + +Blockly.Blocks['field_number'] = { + // Numeric input. + init: function() { + this.setColour(160); + this.appendDummyInput() + .appendField('numeric input') + .appendField(new Blockly.FieldNumber(0), 'VALUE') + .appendField(',') + .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); + this.appendDummyInput() + .appendField('min') + .appendField(new Blockly.FieldNumber(-Infinity), 'MIN') + .appendField('max') + .appendField(new Blockly.FieldNumber(Infinity), 'MAX') + .appendField('precision') + .appendField(new Blockly.FieldNumber(0, 0), 'PRECISION'); + this.setPreviousStatement(true, 'Field'); + this.setNextStatement(true, 'Field'); + this.setTooltip('An input field for the user to enter a number.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=319'); + }, + onchange: function() { + fieldNameCheck(this); + } +}; + +Blockly.Blocks['field_angle'] = { + // Angle input. + init: function() { + this.setColour(160); + this.appendDummyInput() + .appendField('angle input') + .appendField(new Blockly.FieldAngle('90'), 'ANGLE') + .appendField(',') + .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); + this.setPreviousStatement(true, 'Field'); + this.setNextStatement(true, 'Field'); + this.setTooltip('An input field for the user to enter an angle.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=372'); + }, + onchange: function() { + fieldNameCheck(this); + } +}; + +Blockly.Blocks['field_dropdown'] = { + // Dropdown menu. + init: function() { + this.appendDummyInput() + .appendField('dropdown') + .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); + this.optionCount_ = 3; + this.updateShape_(); + this.setPreviousStatement(true, 'Field'); + this.setNextStatement(true, 'Field'); + this.setMutator(new Blockly.Mutator(['field_dropdown_option'])); + this.setColour(160); + this.setTooltip('Dropdown menu with a list of options.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=386'); + }, + mutationToDom: function(workspace) { + // Create XML to represent menu options. + var container = Blockly.utils.xml.createElement('mutation'); + container.setAttribute('options', this.optionCount_); + return container; + }, + domToMutation: function(container) { + // Parse XML to restore the menu options. + this.optionCount_ = parseInt(container.getAttribute('options'), 10); + this.updateShape_(); + }, + decompose: function(workspace) { + // Populate the mutator's dialog with this block's components. + var containerBlock = workspace.newBlock('field_dropdown_container'); + containerBlock.initSvg(); + var connection = containerBlock.getInput('STACK').connection; + for (var i = 0; i < this.optionCount_; i++) { + var optionBlock = workspace.newBlock('field_dropdown_option'); + optionBlock.initSvg(); + connection.connect(optionBlock.previousConnection); + connection = optionBlock.nextConnection; + } + return containerBlock; + }, + compose: function(containerBlock) { + // Reconfigure this block based on the mutator dialog's components. + var optionBlock = containerBlock.getInputTargetBlock('STACK'); + // Count number of inputs. + var data = []; + while (optionBlock) { + data.push([optionBlock.userData_, optionBlock.cpuData_]); + optionBlock = optionBlock.nextConnection && + optionBlock.nextConnection.targetBlock(); + } + this.optionCount_ = data.length; + this.updateShape_(); + // Restore any data. + for (var i = 0; i < this.optionCount_; i++) { + this.setFieldValue(data[i][0] || 'option', 'USER' + i); + this.setFieldValue(data[i][1] || 'OPTIONNAME', 'CPU' + i); + } + }, + saveConnections: function(containerBlock) { + // Store names and values for each option. + var optionBlock = containerBlock.getInputTargetBlock('STACK'); + var i = 0; + while (optionBlock) { + optionBlock.userData_ = this.getFieldValue('USER' + i); + optionBlock.cpuData_ = this.getFieldValue('CPU' + i); + i++; + optionBlock = optionBlock.nextConnection && + optionBlock.nextConnection.targetBlock(); + } + }, + updateShape_: function() { + // Modify this block to have the correct number of options. + // Add new options. + for (var i = 0; i < this.optionCount_; i++) { + if (!this.getInput('OPTION' + i)) { + this.appendDummyInput('OPTION' + i) + .appendField(new Blockly.FieldTextInput('option'), 'USER' + i) + .appendField(',') + .appendField(new Blockly.FieldTextInput('OPTIONNAME'), 'CPU' + i); + } + } + // Remove deleted options. + while (this.getInput('OPTION' + i)) { + this.removeInput('OPTION' + i); + i++; + } + }, + onchange: function() { + if (this.workspace && this.optionCount_ < 1) { + this.setWarningText('Drop down menu must\nhave at least one option.'); + } else { + fieldNameCheck(this); + } + } +}; + +Blockly.Blocks['field_dropdown_container'] = { + // Container. + init: function() { + this.setColour(160); + this.appendDummyInput() + .appendField('add options'); + this.appendStatementInput('STACK'); + this.setTooltip('Add, remove, or reorder options\n' + + 'to reconfigure this dropdown menu.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=386'); + this.contextMenu = false; + } +}; + +Blockly.Blocks['field_dropdown_option'] = { + // Add option. + init: function() { + this.setColour(160); + this.appendDummyInput() + .appendField('option'); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip('Add a new option to the dropdown menu.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=386'); + this.contextMenu = false; + } +}; + +Blockly.Blocks['field_checkbox'] = { + // Checkbox. + init: function() { + this.setColour(160); + this.appendDummyInput() + .appendField('checkbox') + .appendField(new Blockly.FieldCheckbox('TRUE'), 'CHECKED') + .appendField(',') + .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); + this.setPreviousStatement(true, 'Field'); + this.setNextStatement(true, 'Field'); + this.setTooltip('Checkbox field.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=485'); + }, + onchange: function() { + fieldNameCheck(this); + } +}; + +Blockly.Blocks['field_colour'] = { + // Colour input. + init: function() { + this.setColour(160); + this.appendDummyInput() + .appendField('colour') + .appendField(new Blockly.FieldColour('#ff0000'), 'COLOUR') + .appendField(',') + .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); + this.setPreviousStatement(true, 'Field'); + this.setNextStatement(true, 'Field'); + this.setTooltip('Colour input field.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=495'); + }, + onchange: function() { + fieldNameCheck(this); + } +}; + +Blockly.Blocks['field_variable'] = { + // Dropdown for variables. + init: function() { + this.setColour(160); + this.appendDummyInput() + .appendField('variable') + .appendField(new Blockly.FieldTextInput('item'), 'TEXT') + .appendField(',') + .appendField(new Blockly.FieldTextInput('NAME'), 'FIELDNAME'); + this.setPreviousStatement(true, 'Field'); + this.setNextStatement(true, 'Field'); + this.setTooltip('Dropdown menu for variable names.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=510'); + }, + onchange: function() { + fieldNameCheck(this); + } +}; + +Blockly.Blocks['field_image'] = { + // Image. + init: function() { + this.setColour(160); + var src = 'https://www.gstatic.com/codesite/ph/images/star_on.gif'; + this.appendDummyInput() + .appendField('image') + .appendField(new Blockly.FieldTextInput(src), 'SRC'); + this.appendDummyInput() + .appendField('width') + .appendField(new Blockly.FieldNumber('15', 0, NaN, 1), 'WIDTH') + .appendField('height') + .appendField(new Blockly.FieldNumber('15', 0, NaN, 1), 'HEIGHT') + .appendField('alt text') + .appendField(new Blockly.FieldTextInput('*'), 'ALT'); + this.setPreviousStatement(true, 'Field'); + this.setNextStatement(true, 'Field'); + this.setTooltip('Static image (JPEG, PNG, GIF, SVG, BMP).\n' + + 'Retains aspect ratio regardless of height and width.\n' + + 'Alt text is for when collapsed.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=567'); + } +}; + +Blockly.Blocks['type_group'] = { + // Group of types. + init: function() { + this.typeCount_ = 2; + this.updateShape_(); + this.setOutput(true, 'Type'); + this.setMutator(new Blockly.Mutator(['type_group_item'])); + this.setColour(230); + this.setTooltip('Allows more than one type to be accepted.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=677'); + }, + mutationToDom: function(workspace) { + // Create XML to represent a group of types. + var container = Blockly.utils.xml.createElement('mutation'); + container.setAttribute('types', this.typeCount_); + return container; + }, + domToMutation: function(container) { + // Parse XML to restore the group of types. + this.typeCount_ = parseInt(container.getAttribute('types'), 10); + this.updateShape_(); + for (var i = 0; i < this.typeCount_; i++) { + this.removeInput('TYPE' + i); + } + for (var i = 0; i < this.typeCount_; i++) { + var input = this.appendValueInput('TYPE' + i) + .setCheck('Type'); + if (i === 0) { + input.appendField('any of'); + } + } + }, + decompose: function(workspace) { + // Populate the mutator's dialog with this block's components. + var containerBlock = workspace.newBlock('type_group_container'); + containerBlock.initSvg(); + var connection = containerBlock.getInput('STACK').connection; + for (var i = 0; i < this.typeCount_; i++) { + var typeBlock = workspace.newBlock('type_group_item'); + typeBlock.initSvg(); + connection.connect(typeBlock.previousConnection); + connection = typeBlock.nextConnection; + } + return containerBlock; + }, + compose: function(containerBlock) { + // Reconfigure this block based on the mutator dialog's components. + var typeBlock = containerBlock.getInputTargetBlock('STACK'); + // Count number of inputs. + var connections = []; + while (typeBlock) { + connections.push(typeBlock.valueConnection_); + typeBlock = typeBlock.nextConnection && + typeBlock.nextConnection.targetBlock(); + } + // Disconnect any children that don't belong. + for (var i = 0; i < this.typeCount_; i++) { + var connection = this.getInput('TYPE' + i).connection.targetConnection; + if (connection && connections.indexOf(connection) === -1) { + connection.disconnect(); + } + } + this.typeCount_ = connections.length; + this.updateShape_(); + // Reconnect any child blocks. + for (var i = 0; i < this.typeCount_; i++) { + Blockly.Mutator.reconnect(connections[i], this, 'TYPE' + i); + } + }, + saveConnections: function(containerBlock) { + // Store a pointer to any connected child blocks. + var typeBlock = containerBlock.getInputTargetBlock('STACK'); + var i = 0; + while (typeBlock) { + var input = this.getInput('TYPE' + i); + typeBlock.valueConnection_ = input && input.connection.targetConnection; + i++; + typeBlock = typeBlock.nextConnection && + typeBlock.nextConnection.targetBlock(); + } + }, + updateShape_: function() { + // Modify this block to have the correct number of inputs. + // Add new inputs. + for (var i = 0; i < this.typeCount_; i++) { + if (!this.getInput('TYPE' + i)) { + var input = this.appendValueInput('TYPE' + i); + if (i === 0) { + input.appendField('any of'); + } + } + } + // Remove deleted inputs. + while (this.getInput('TYPE' + i)) { + this.removeInput('TYPE' + i); + i++; + } + } +}; + +Blockly.Blocks['type_group_container'] = { + // Container. + init: function() { + this.jsonInit({ + "message0": "add types %1 %2", + "args0": [ + {"type": "input_dummy"}, + {"type": "input_statement", "name": "STACK"} + ], + "colour": 230, + "tooltip": "Add, or remove allowed type.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=677" + }); + } +}; + +Blockly.Blocks['type_group_item'] = { + // Add type. + init: function() { + this.jsonInit({ + "message0": "type", + "previousStatement": null, + "nextStatement": null, + "colour": 230, + "tooltip": "Add a new allowed type.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=677" + }); + } +}; + +Blockly.Blocks['type_null'] = { + // Null type. + valueType: null, + init: function() { + this.jsonInit({ + "message0": "any", + "output": "Type", + "colour": 230, + "tooltip": "Any type is allowed.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" + }); + } +}; + +Blockly.Blocks['type_boolean'] = { + // Boolean type. + valueType: 'Boolean', + init: function() { + this.jsonInit({ + "message0": "Boolean", + "output": "Type", + "colour": 230, + "tooltip": "Booleans (true/false) are allowed.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" + }); + } +}; + +Blockly.Blocks['type_number'] = { + // Number type. + valueType: 'Number', + init: function() { + this.jsonInit({ + "message0": "Number", + "output": "Type", + "colour": 230, + "tooltip": "Numbers (int/float) are allowed.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" + }); + } +}; + +Blockly.Blocks['type_string'] = { + // String type. + valueType: 'String', + init: function() { + this.jsonInit({ + "message0": "String", + "output": "Type", + "colour": 230, + "tooltip": "Strings (text) are allowed.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" + }); + } +}; + +Blockly.Blocks['type_list'] = { + // List type. + valueType: 'Array', + init: function() { + this.jsonInit({ + "message0": "Array", + "output": "Type", + "colour": 230, + "tooltip": "Arrays (lists) are allowed.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=602" + }); + } +}; + +Blockly.Blocks['type_other'] = { + // Other type. + init: function() { + this.jsonInit({ + "message0": "other %1", + "args0": [{"type": "field_input", "name": "TYPE", "text": ""}], + "output": "Type", + "colour": 230, + "tooltip": "Custom type to allow.", + "helpUrl": "https://www.youtube.com/watch?v=s2_xaEvcVI0#t=702" + }); + } +}; + +Blockly.Blocks['colour_hue'] = { + // Set the colour of the block. + init: function() { + this.appendDummyInput() + .appendField('hue:') + .appendField(new Blockly.FieldAngle('0', this.validator), 'HUE'); + this.setOutput(true, 'Colour'); + this.setTooltip('Paint the block with this colour.'); + this.setHelpUrl('https://www.youtube.com/watch?v=s2_xaEvcVI0#t=55'); + }, + validator: function(text) { + // Update the current block's colour to match. + var hue = parseInt(text, 10); + if (!isNaN(hue)) { + this.sourceBlock_.setColour(hue); + } + }, + mutationToDom: function(workspace) { + var container = Blockly.utils.xml.createElement('mutation'); + container.setAttribute('colour', this.getColour()); + return container; + }, + domToMutation: function(container) { + this.setColour(container.getAttribute('colour')); + } +}; + +/** + * Check to see if more than one field has this name. + * Highly inefficient (On^2), but n is small. + * @param {!Blockly.Block} referenceBlock Block to check. + */ +function fieldNameCheck(referenceBlock) { + if (!referenceBlock.workspace) { + // Block has been deleted. + return; + } + var name = referenceBlock.getFieldValue('FIELDNAME').toLowerCase(); + var count = 0; + var blocks = referenceBlock.workspace.getAllBlocks(false); + for (var i = 0, block; block = blocks[i]; i++) { + var otherName = block.getFieldValue('FIELDNAME'); + if (!block.disabled && !block.getInheritedDisabled() && + otherName && otherName.toLowerCase() === name) { + count++; + } + } + var msg = (count > 1) ? + 'There are ' + count + ' field blocks\n with this name.' : null; + referenceBlock.setWarningText(msg); +} + +/** + * Check to see if more than one input has this name. + * Highly inefficient (On^2), but n is small. + * @param {!Blockly.Block} referenceBlock Block to check. + */ +function inputNameCheck(referenceBlock) { + if (!referenceBlock.workspace) { + // Block has been deleted. + return; + } + var name = referenceBlock.getFieldValue('INPUTNAME').toLowerCase(); + var count = 0; + var blocks = referenceBlock.workspace.getAllBlocks(false); + for (var i = 0, block; block = blocks[i]; i++) { + var otherName = block.getFieldValue('INPUTNAME'); + if (!block.disabled && !block.getInheritedDisabled() && + otherName && otherName.toLowerCase() === name) { + count++; + } + } + var msg = (count > 1) ? + 'There are ' + count + ' input blocks\n with this name.' : null; + referenceBlock.setWarningText(msg); +} diff --git a/demos/blockfactory_old/factory.js b/demos/blockfactory_old/factory.js index 67be0de54a5..b701aca355a 100644 --- a/demos/blockfactory_old/factory.js +++ b/demos/blockfactory_old/factory.js @@ -1,819 +1,819 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview JavaScript for Blockly's Block Factory application. - */ -'use strict'; - -/** - * Workspace for user to build block. - * @type {Blockly.Workspace} - */ -var mainWorkspace = null; - -/** - * Workspace for preview of block. - * @type {Blockly.Workspace} - */ -var previewWorkspace = null; - -/** - * Name of block if not named. - */ -var UNNAMED = 'unnamed'; - -/** - * Change the language code format. - */ -function formatChange() { - var mask = document.getElementById('blocklyMask'); - var languagePre = document.getElementById('languagePre'); - var languageTA = document.getElementById('languageTA'); - if (document.getElementById('format').value === 'Manual') { - Blockly.common.getMainWorkspace().hideChaff(); - mask.style.display = 'block'; - languagePre.style.display = 'none'; - languageTA.style.display = 'block'; - var code = languagePre.textContent.trim(); - languageTA.value = code; - languageTA.focus(); - updatePreview(); - } else { - mask.style.display = 'none'; - languageTA.style.display = 'none'; - languagePre.style.display = 'block'; - updateLanguage(); - } - disableEnableLink(); -} - -/** - * Update the language code based on constructs made in Blockly. - */ -function updateLanguage() { - var rootBlock = getRootBlock(); - if (!rootBlock) { - return; - } - var blockType = rootBlock.getFieldValue('NAME').trim().toLowerCase(); - if (!blockType) { - blockType = UNNAMED; - } - blockType = blockType.replace(/\W/g, '_').replace(/^(\d)/, '_\\1'); - switch (document.getElementById('format').value) { - case 'JSON': - var code = formatJson_(blockType, rootBlock); - break; - case 'JavaScript': - var code = formatJavaScript_(blockType, rootBlock); - break; - } - injectCode(code, 'languagePre'); - updatePreview(); -} - -/** - * Update the language code as JSON. - * @param {string} blockType Name of block. - * @param {!Blockly.Block} rootBlock Factory_base block. - * @return {string} Generated language code. - * @private - */ -function formatJson_(blockType, rootBlock) { - var JS = {}; - // Type is not used by Blockly, but may be used by a loader. - JS.type = blockType; - // Generate inputs. - var message = []; - var args = []; - var contentsBlock = rootBlock.getInputTargetBlock('INPUTS'); - var lastInput = null; - while (contentsBlock) { - if (!contentsBlock.disabled && !contentsBlock.getInheritedDisabled()) { - var fields = getFieldsJson_(contentsBlock.getInputTargetBlock('FIELDS')); - for (var i = 0; i < fields.length; i++) { - if (typeof fields[i] === 'string') { - message.push(fields[i].replace(/%/g, '%%')); - } else { - args.push(fields[i]); - message.push('%' + args.length); - } - } - - var input = {type: contentsBlock.type}; - // Dummy inputs don't have names. Other inputs do. - if (contentsBlock.type !== 'input_dummy') { - input.name = contentsBlock.getFieldValue('INPUTNAME'); - } - var check = JSON.parse(getOptTypesFrom(contentsBlock, 'TYPE') || 'null'); - if (check) { - input.check = check; - } - var align = contentsBlock.getFieldValue('ALIGN'); - if (align !== 'LEFT') { - input.align = align; - } - args.push(input); - message.push('%' + args.length); - lastInput = contentsBlock; - } - contentsBlock = contentsBlock.nextConnection && - contentsBlock.nextConnection.targetBlock(); - } - // Remove last input if dummy and not empty. - if (lastInput && lastInput.type === 'input_dummy') { - var fields = lastInput.getInputTargetBlock('FIELDS'); - if (fields && getFieldsJson_(fields).join('').trim() !== '') { - var align = lastInput.getFieldValue('ALIGN'); - if (align !== 'LEFT') { - JS.lastDummyAlign0 = align; - } - args.pop(); - message.pop(); - } - } - JS.message0 = message.join(' '); - if (args.length) { - JS.args0 = args; - } - // Generate inline/external switch. - if (rootBlock.getFieldValue('INLINE') === 'EXT') { - JS.inputsInline = false; - } else if (rootBlock.getFieldValue('INLINE') === 'INT') { - JS.inputsInline = true; - } - // Generate output, or next/previous connections. - switch (rootBlock.getFieldValue('CONNECTIONS')) { - case 'LEFT': - JS.output = - JSON.parse(getOptTypesFrom(rootBlock, 'OUTPUTTYPE') || 'null'); - break; - case 'BOTH': - JS.previousStatement = - JSON.parse(getOptTypesFrom(rootBlock, 'TOPTYPE') || 'null'); - JS.nextStatement = - JSON.parse(getOptTypesFrom(rootBlock, 'BOTTOMTYPE') || 'null'); - break; - case 'TOP': - JS.previousStatement = - JSON.parse(getOptTypesFrom(rootBlock, 'TOPTYPE') || 'null'); - break; - case 'BOTTOM': - JS.nextStatement = - JSON.parse(getOptTypesFrom(rootBlock, 'BOTTOMTYPE') || 'null'); - break; - } - // Generate colour. - var colourBlock = rootBlock.getInputTargetBlock('COLOUR'); - if (colourBlock && !colourBlock.disabled) { - var hue = parseInt(colourBlock.getFieldValue('HUE'), 10); - JS.colour = hue; - } - JS.tooltip = ''; - JS.helpUrl = 'http://www.example.com/'; - return JSON.stringify(JS, null, ' '); -} - -/** - * Update the language code as JavaScript. - * @param {string} blockType Name of block. - * @param {!Blockly.Block} rootBlock Factory_base block. - * @return {string} Generated language code. - * @private - */ -function formatJavaScript_(blockType, rootBlock) { - var code = []; - code.push("Blockly.Blocks['" + blockType + "'] = {"); - code.push(" init: function() {"); - // Generate inputs. - var TYPES = {'input_value': 'appendValueInput', - 'input_statement': 'appendStatementInput', - 'input_dummy': 'appendDummyInput'}; - var contentsBlock = rootBlock.getInputTargetBlock('INPUTS'); - while (contentsBlock) { - if (!contentsBlock.disabled && !contentsBlock.getInheritedDisabled()) { - var name = ''; - // Dummy inputs don't have names. Other inputs do. - if (contentsBlock.type !== 'input_dummy') { - name = escapeString(contentsBlock.getFieldValue('INPUTNAME')); - } - code.push(' this.' + TYPES[contentsBlock.type] + '(' + name + ')'); - var check = getOptTypesFrom(contentsBlock, 'TYPE'); - if (check) { - code.push(' .setCheck(' + check + ')'); - } - var align = contentsBlock.getFieldValue('ALIGN'); - if (align !== 'LEFT') { - code.push(' .setAlign(Blockly.ALIGN_' + align + ')'); - } - var fields = getFieldsJs_(contentsBlock.getInputTargetBlock('FIELDS')); - for (var i = 0; i < fields.length; i++) { - code.push(' .appendField(' + fields[i] + ')'); - } - // Add semicolon to last line to finish the statement. - code[code.length - 1] += ';'; - } - contentsBlock = contentsBlock.nextConnection && - contentsBlock.nextConnection.targetBlock(); - } - // Generate inline/external switch. - if (rootBlock.getFieldValue('INLINE') === 'EXT') { - code.push(' this.setInputsInline(false);'); - } else if (rootBlock.getFieldValue('INLINE') === 'INT') { - code.push(' this.setInputsInline(true);'); - } - // Generate output, or next/previous connections. - switch (rootBlock.getFieldValue('CONNECTIONS')) { - case 'LEFT': - code.push(connectionLineJs_('setOutput', 'OUTPUTTYPE')); - break; - case 'BOTH': - code.push(connectionLineJs_('setPreviousStatement', 'TOPTYPE')); - code.push(connectionLineJs_('setNextStatement', 'BOTTOMTYPE')); - break; - case 'TOP': - code.push(connectionLineJs_('setPreviousStatement', 'TOPTYPE')); - break; - case 'BOTTOM': - code.push(connectionLineJs_('setNextStatement', 'BOTTOMTYPE')); - break; - } - // Generate colour. - var colourBlock = rootBlock.getInputTargetBlock('COLOUR'); - if (colourBlock && !colourBlock.disabled) { - var hue = parseInt(colourBlock.getFieldValue('HUE'), 10); - if (!isNaN(hue)) { - code.push(' this.setColour(' + hue + ');'); - } - } - code.push(" this.setTooltip('');"); - code.push(" this.setHelpUrl('http://www.example.com/');"); - code.push(' }'); - code.push('};'); - return code.join('\n'); -} - -/** - * Create JS code required to create a top, bottom, or value connection. - * @param {string} functionName JavaScript function name. - * @param {string} typeName Name of type input. - * @return {string} Line of JavaScript code to create connection. - * @private - */ -function connectionLineJs_(functionName, typeName) { - var type = getOptTypesFrom(getRootBlock(), typeName); - if (type) { - type = ', ' + type; - } else { - type = ''; - } - return ' this.' + functionName + '(true' + type + ');'; -} - -/** - * Returns field strings and any config. - * @param {!Blockly.Block} block Input block. - * @return {!Array} Field strings. - * @private - */ -function getFieldsJs_(block) { - var fields = []; - while (block) { - if (!block.disabled && !block.getInheritedDisabled()) { - switch (block.type) { - case 'field_static': - // Result: 'hello' - fields.push(escapeString(block.getFieldValue('TEXT'))); - break; - case 'field_input': - // Result: new Blockly.FieldTextInput('Hello'), 'GREET' - fields.push('new Blockly.FieldTextInput(' + - escapeString(block.getFieldValue('TEXT')) + '), ' + - escapeString(block.getFieldValue('FIELDNAME'))); - break; - case 'field_number': - // Result: new Blockly.FieldNumber(10, 0, 100, 1), 'NUMBER' - var args = [ - Number(block.getFieldValue('VALUE')), - Number(block.getFieldValue('MIN')), - Number(block.getFieldValue('MAX')), - Number(block.getFieldValue('PRECISION')) - ]; - // Remove any trailing arguments that aren't needed. - if (args[3] === 0) { - args.pop(); - if (args[2] === Infinity) { - args.pop(); - if (args[1] === -Infinity) { - args.pop(); - } - } - } - fields.push('new Blockly.FieldNumber(' + args.join(', ') + '), ' + - escapeString(block.getFieldValue('FIELDNAME'))); - break; - case 'field_angle': - // Result: new Blockly.FieldAngle(90), 'ANGLE' - fields.push('new Blockly.FieldAngle(' + - Number(block.getFieldValue('ANGLE')) + '), ' + - escapeString(block.getFieldValue('FIELDNAME'))); - break; - case 'field_checkbox': - // Result: new Blockly.FieldCheckbox('TRUE'), 'CHECK' - fields.push('new Blockly.FieldCheckbox(' + - escapeString(block.getFieldValue('CHECKED')) + '), ' + - escapeString(block.getFieldValue('FIELDNAME'))); - break; - case 'field_colour': - // Result: new Blockly.FieldColour('#ff0000'), 'COLOUR' - fields.push('new Blockly.FieldColour(' + - escapeString(block.getFieldValue('COLOUR')) + '), ' + - escapeString(block.getFieldValue('FIELDNAME'))); - break; - case 'field_variable': - // Result: new Blockly.FieldVariable('item'), 'VAR' - var varname = escapeString(block.getFieldValue('TEXT') || null); - fields.push('new Blockly.FieldVariable(' + varname + '), ' + - escapeString(block.getFieldValue('FIELDNAME'))); - break; - case 'field_dropdown': - // Result: - // new Blockly.FieldDropdown([['yes', '1'], ['no', '0']]), 'TOGGLE' - var options = []; - for (var i = 0; i < block.optionCount_; i++) { - options[i] = '[' + escapeString(block.getFieldValue('USER' + i)) + - ', ' + escapeString(block.getFieldValue('CPU' + i)) + ']'; - } - if (options.length) { - fields.push('new Blockly.FieldDropdown([' + - options.join(', ') + ']), ' + - escapeString(block.getFieldValue('FIELDNAME'))); - } - break; - case 'field_image': - // Result: new Blockly.FieldImage('http://...', 80, 60, '*') - var src = escapeString(block.getFieldValue('SRC')); - var width = Number(block.getFieldValue('WIDTH')); - var height = Number(block.getFieldValue('HEIGHT')); - var alt = escapeString(block.getFieldValue('ALT')); - fields.push('new Blockly.FieldImage(' + - src + ', ' + width + ', ' + height + ', ' + alt + ')'); - break; - } - } - block = block.nextConnection && block.nextConnection.targetBlock(); - } - return fields; -} - -/** - * Returns field strings and any config. - * @param {!Blockly.Block} block Input block. - * @return {!Array} Array of static text and field configs. - * @private - */ -function getFieldsJson_(block) { - var fields = []; - while (block) { - if (!block.disabled && !block.getInheritedDisabled()) { - switch (block.type) { - case 'field_static': - // Result: 'hello' - fields.push(block.getFieldValue('TEXT')); - break; - case 'field_input': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - text: block.getFieldValue('TEXT') - }); - break; - case 'field_number': - var obj = { - type: block.type, - name: block.getFieldValue('FIELDNAME'), - value: Number(block.getFieldValue('VALUE')) - }; - var min = Number(block.getFieldValue('MIN')); - if (min > -Infinity) { - obj.min = min; - } - var max = Number(block.getFieldValue('MAX')); - if (max < Infinity) { - obj.max = max; - } - var precision = Number(block.getFieldValue('PRECISION')); - if (precision) { - obj.precision = precision; - } - fields.push(obj); - break; - case 'field_angle': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - angle: Number(block.getFieldValue('ANGLE')) - }); - break; - case 'field_checkbox': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - checked: block.getFieldValue('CHECKED') === 'TRUE' - }); - break; - case 'field_colour': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - colour: block.getFieldValue('COLOUR') - }); - break; - case 'field_variable': - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - variable: block.getFieldValue('TEXT') || null - }); - break; - case 'field_dropdown': - var options = []; - for (var i = 0; i < block.optionCount_; i++) { - options[i] = [block.getFieldValue('USER' + i), - block.getFieldValue('CPU' + i)]; - } - if (options.length) { - fields.push({ - type: block.type, - name: block.getFieldValue('FIELDNAME'), - options: options - }); - } - break; - case 'field_image': - fields.push({ - type: block.type, - src: block.getFieldValue('SRC'), - width: Number(block.getFieldValue('WIDTH')), - height: Number(block.getFieldValue('HEIGHT')), - alt: block.getFieldValue('ALT') - }); - break; - } - } - block = block.nextConnection && block.nextConnection.targetBlock(); - } - return fields; -} - -/** - * Escape a string. - * @param {string} string String to escape. - * @return {string} Escaped string surrounded by quotes. - */ -function escapeString(string) { - return JSON.stringify(string); -} - -/** - * Fetch the type(s) defined in the given input. - * Format as a string for appending to the generated code. - * @param {!Blockly.Block} block Block with input. - * @param {string} name Name of the input. - * @return {?string} String defining the types. - */ -function getOptTypesFrom(block, name) { - var types = getTypesFrom_(block, name); - if (types.length === 0) { - return undefined; - } else if (types.indexOf('null') !== -1) { - return 'null'; - } else if (types.length === 1) { - return types[0]; - } else { - return '[' + types.join(', ') + ']'; - } -} - -/** - * Fetch the type(s) defined in the given input. - * @param {!Blockly.Block} block Block with input. - * @param {string} name Name of the input. - * @return {!Array} List of types. - * @private - */ -function getTypesFrom_(block, name) { - var typeBlock = block.getInputTargetBlock(name); - var types; - if (!typeBlock || typeBlock.disabled) { - types = []; - } else if (typeBlock.type === 'type_other') { - types = [escapeString(typeBlock.getFieldValue('TYPE'))]; - } else if (typeBlock.type === 'type_group') { - types = []; - for (var i = 0; i < typeBlock.typeCount_; i++) { - types = types.concat(getTypesFrom_(typeBlock, 'TYPE' + i)); - } - // Remove duplicates. - var hash = Object.create(null); - for (var n = types.length - 1; n >= 0; n--) { - if (hash[types[n]]) { - types.splice(n, 1); - } - hash[types[n]] = true; - } - } else { - types = [escapeString(typeBlock.valueType)]; - } - return types; -} - -/** - * Update the generator code. - * @param {!Blockly.Block} block Rendered block in preview workspace. - */ -function updateGenerator(block) { - function makeVar(root, name) { - name = name.toLowerCase().replace(/\W/g, '_'); - return ' var ' + root + '_' + name; - } - var language = document.getElementById('language').value; - var code = []; - code.push("Blockly." + language + "['" + block.type + - "'] = function(block) {"); - - // Generate getters for any fields or inputs. - for (var i = 0, input; input = block.inputList[i]; i++) { - for (var j = 0, field; field = input.fieldRow[j]; j++) { - var name = field.name; - if (!name) { - continue; - } - if (field instanceof Blockly.FieldVariable) { - // Subclass of Blockly.FieldDropdown, must test first. - code.push(makeVar('variable', name) + - " = Blockly." + language + - ".nameDB_.getName(block.getFieldValue('" + name + - "'), Blockly.Variables.NAME_TYPE);"); - } else if (field instanceof Blockly.FieldAngle) { - // Subclass of Blockly.FieldTextInput, must test first. - code.push(makeVar('angle', name) + - " = block.getFieldValue('" + name + "');"); - } else if (field instanceof Blockly.FieldColour) { - code.push(makeVar('colour', name) + - " = block.getFieldValue('" + name + "');"); - } else if (field instanceof Blockly.FieldCheckbox) { - code.push(makeVar('checkbox', name) + - " = block.getFieldValue('" + name + "') === 'TRUE';"); - } else if (field instanceof Blockly.FieldDropdown) { - code.push(makeVar('dropdown', name) + - " = block.getFieldValue('" + name + "');"); - } else if (field instanceof Blockly.FieldNumber) { - code.push(makeVar('number', name) + - " = block.getFieldValue('" + name + "');"); - } else if (field instanceof Blockly.FieldTextInput) { - code.push(makeVar('text', name) + - " = block.getFieldValue('" + name + "');"); - } - } - var name = input.name; - if (name) { - if (input.type === Blockly.INPUT_VALUE) { - code.push(makeVar('value', name) + - " = Blockly." + language + ".valueToCode(block, '" + name + - "', Blockly." + language + ".ORDER_ATOMIC);"); - } else if (input.type === Blockly.NEXT_STATEMENT) { - code.push(makeVar('statements', name) + - " = Blockly." + language + ".statementToCode(block, '" + - name + "');"); - } - } - } - // Most languages end lines with a semicolon. Python does not. - var lineEnd = { - 'JavaScript': ';', - 'Python': '', - 'PHP': ';', - 'Dart': ';' - }; - code.push(" // TODO: Assemble " + language + " into code variable."); - if (block.outputConnection) { - code.push(" var code = '...';"); - code.push(" // TODO: Change ORDER_NONE to the correct strength."); - code.push(" return [code, Blockly." + language + ".ORDER_NONE];"); - } else { - code.push(" var code = '..." + (lineEnd[language] || '') + "\\n';"); - code.push(" return code;"); - } - code.push("};"); - - injectCode(code.join('\n'), 'generatorPre'); -} - -/** - * Existing direction ('ltr' vs 'rtl') of preview. - */ -var oldDir = null; - -/** - * Update the preview display. - */ -function updatePreview() { - // Toggle between LTR/RTL if needed (also used in first display). - var newDir = document.getElementById('direction').value; - if (oldDir !== newDir) { - if (previewWorkspace) { - previewWorkspace.dispose(); - } - var rtl = newDir === 'rtl'; - previewWorkspace = Blockly.inject('preview', - {rtl: rtl, - media: '../../media/', - scrollbars: true}); - oldDir = newDir; - } - previewWorkspace.clear(); - - // Fetch the code and determine its format (JSON or JavaScript). - var format = document.getElementById('format').value; - if (format === 'Manual') { - var code = document.getElementById('languageTA').value; - // If the code is JSON, it will parse, otherwise treat as JS. - try { - JSON.parse(code); - format = 'JSON'; - } catch (e) { - format = 'JavaScript'; - } - } else { - var code = document.getElementById('languagePre').textContent; - } - if (!code.trim()) { - // Nothing to render. Happens while cloud storage is loading. - return; - } - - // Backup Blockly.Blocks object so that main workspace and preview don't - // collide if user creates a 'factory_base' block, for instance. - var backupBlocks = Blockly.Blocks; - try { - // Make a shallow copy. - Blockly.Blocks = {}; - for (var prop in backupBlocks) { - Blockly.Blocks[prop] = backupBlocks[prop]; - } - - if (format === 'JSON') { - var json = JSON.parse(code); - Blockly.Blocks[json.type || UNNAMED] = { - init: function() { - this.jsonInit(json); - } - }; - } else if (format === 'JavaScript') { - eval(code); - } else { - throw 'Unknown format: ' + format; - } - - // Look for a block on Blockly.Blocks that does not match the backup. - var blockType = null; - for (var type in Blockly.Blocks) { - if (typeof Blockly.Blocks[type].init === 'function' && - Blockly.Blocks[type] !== backupBlocks[type]) { - blockType = type; - break; - } - } - if (!blockType) { - return; - } - - // Create the preview block. - var previewBlock = previewWorkspace.newBlock(blockType); - previewBlock.initSvg(); - previewBlock.render(); - previewBlock.setMovable(false); - previewBlock.setDeletable(false); - previewBlock.moveBy(15, 10); - previewWorkspace.clearUndo(); - - updateGenerator(previewBlock); - } finally { - Blockly.Blocks = backupBlocks; - } -} - -/** - * Inject code into a pre tag, with syntax highlighting. - * Safe from HTML/script injection. - * @param {string} code Lines of code. - * @param {string} id ID of
 element to inject into.
- */
-function injectCode(code, id) {
-  var pre = document.getElementById(id);
-  pre.textContent = code;
-  // Remove the 'prettyprinted' class, so that Prettify will recalculate.
-  pre.className = pre.className.replace('prettyprinted', '');
-  PR.prettyPrint();
-}
-
-/**
- * Return the uneditable container block that everything else attaches to.
- * @return {Blockly.Block}
- */
-function getRootBlock() {
-  var blocks = mainWorkspace.getTopBlocks(false);
-  for (var i = 0, block; block = blocks[i]; i++) {
-    if (block.type === 'factory_base') {
-      return block;
-    }
-  }
-  return null;
-}
-
-/**
- * Disable the link button if the format is 'Manual', enable otherwise.
- */
-function disableEnableLink() {
-  var linkButton = document.getElementById('linkButton');
-  linkButton.disabled = document.getElementById('format').value === 'Manual';
-}
-
-/**
- * Initialize Blockly and layout.  Called on page load.
- */
-function init() {
-  if ('BlocklyStorage' in window) {
-    BlocklyStorage.HTTPREQUEST_ERROR =
-        'There was a problem with the request.\n';
-    BlocklyStorage.LINK_ALERT =
-        'Share your blocks with this link:\n\n%1';
-    BlocklyStorage.HASH_ERROR =
-        'Sorry, "%1" doesn\'t correspond with any saved Blockly file.';
-    BlocklyStorage.XML_ERROR = 'Could not load your saved file.\n'+
-        'Perhaps it was created with a different version of Blockly?';
-    var linkButton = document.getElementById('linkButton');
-    linkButton.style.display = 'inline-block';
-    linkButton.addEventListener('click',
-        function() {BlocklyStorage.link(mainWorkspace);});
-    disableEnableLink();
-  }
-
-  document.getElementById('helpButton').addEventListener('click',
-    function() {
-      open('https://developers.google.com/blockly/guides/create-custom-blocks/block-factory',
-           'BlockFactoryHelp');
-    });
-
-  var expandList = [
-    document.getElementById('blockly'),
-    document.getElementById('blocklyMask'),
-    document.getElementById('preview'),
-    document.getElementById('languagePre'),
-    document.getElementById('languageTA'),
-    document.getElementById('generatorPre')
-  ];
-  var onresize = function(e) {
-    for (var i = 0, expand; expand = expandList[i]; i++) {
-      expand.style.width = (expand.parentNode.offsetWidth - 2) + 'px';
-      expand.style.height = (expand.parentNode.offsetHeight - 2) + 'px';
-    }
-  };
-  onresize();
-  window.addEventListener('resize', onresize);
-
-  var toolbox = document.getElementById('toolbox');
-  mainWorkspace = Blockly.inject('blockly',
-      {collapse: false,
-       toolbox: toolbox,
-       media: '../../media/'});
-
-  // Create the root block.
-  if ('BlocklyStorage' in window && window.location.hash.length > 1) {
-    BlocklyStorage.retrieveXml(window.location.hash.substring(1),
-                               mainWorkspace);
-  } else {
-    var xml = '';
-    Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(xml), mainWorkspace);
-  }
-  mainWorkspace.clearUndo();
-
-  mainWorkspace.addChangeListener(Blockly.Events.disableOrphans);
-  mainWorkspace.addChangeListener(updateLanguage);
-  document.getElementById('direction')
-      .addEventListener('change', updatePreview);
-  document.getElementById('languageTA')
-      .addEventListener('change', updatePreview);
-  document.getElementById('languageTA')
-      .addEventListener('keyup', updatePreview);
-  document.getElementById('format')
-      .addEventListener('change', formatChange);
-  document.getElementById('language')
-      .addEventListener('change', updatePreview);
-}
-window.addEventListener('load', init);
+/**
+ * @license
+ * Copyright 2012 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * @fileoverview JavaScript for Blockly's Block Factory application.
+ */
+'use strict';
+
+/**
+ * Workspace for user to build block.
+ * @type {Blockly.Workspace}
+ */
+var mainWorkspace = null;
+
+/**
+ * Workspace for preview of block.
+ * @type {Blockly.Workspace}
+ */
+var previewWorkspace = null;
+
+/**
+ * Name of block if not named.
+ */
+var UNNAMED = 'unnamed';
+
+/**
+ * Change the language code format.
+ */
+function formatChange() {
+  var mask = document.getElementById('blocklyMask');
+  var languagePre = document.getElementById('languagePre');
+  var languageTA = document.getElementById('languageTA');
+  if (document.getElementById('format').value === 'Manual') {
+    Blockly.common.getMainWorkspace().hideChaff();
+    mask.style.display = 'block';
+    languagePre.style.display = 'none';
+    languageTA.style.display = 'block';
+    var code = languagePre.textContent.trim();
+    languageTA.value = code;
+    languageTA.focus();
+    updatePreview();
+  } else {
+    mask.style.display = 'none';
+    languageTA.style.display = 'none';
+    languagePre.style.display = 'block';
+    updateLanguage();
+  }
+  disableEnableLink();
+}
+
+/**
+ * Update the language code based on constructs made in Blockly.
+ */
+function updateLanguage() {
+  var rootBlock = getRootBlock();
+  if (!rootBlock) {
+    return;
+  }
+  var blockType = rootBlock.getFieldValue('NAME').trim().toLowerCase();
+  if (!blockType) {
+    blockType = UNNAMED;
+  }
+  blockType = blockType.replace(/\W/g, '_').replace(/^(\d)/, '_\\1');
+  switch (document.getElementById('format').value) {
+    case 'JSON':
+      var code = formatJson_(blockType, rootBlock);
+      break;
+    case 'JavaScript':
+      var code = formatJavaScript_(blockType, rootBlock);
+      break;
+  }
+  injectCode(code, 'languagePre');
+  updatePreview();
+}
+
+/**
+ * Update the language code as JSON.
+ * @param {string} blockType Name of block.
+ * @param {!Blockly.Block} rootBlock Factory_base block.
+ * @return {string} Generated language code.
+ * @private
+ */
+function formatJson_(blockType, rootBlock) {
+  var JS = {};
+  // Type is not used by Blockly, but may be used by a loader.
+  JS.type = blockType;
+  // Generate inputs.
+  var message = [];
+  var args = [];
+  var contentsBlock = rootBlock.getInputTargetBlock('INPUTS');
+  var lastInput = null;
+  while (contentsBlock) {
+    if (!contentsBlock.disabled && !contentsBlock.getInheritedDisabled()) {
+      var fields = getFieldsJson_(contentsBlock.getInputTargetBlock('FIELDS'));
+      for (var i = 0; i < fields.length; i++) {
+        if (typeof fields[i] === 'string') {
+          message.push(fields[i].replace(/%/g, '%%'));
+        } else {
+          args.push(fields[i]);
+          message.push('%' + args.length);
+        }
+      }
+
+      var input = {type: contentsBlock.type};
+      // Dummy inputs don't have names.  Other inputs do.
+      if (contentsBlock.type !== 'input_dummy') {
+        input.name = contentsBlock.getFieldValue('INPUTNAME');
+      }
+      var check = JSON.parse(getOptTypesFrom(contentsBlock, 'TYPE') || 'null');
+      if (check) {
+        input.check = check;
+      }
+      var align = contentsBlock.getFieldValue('ALIGN');
+      if (align !== 'LEFT') {
+        input.align = align;
+      }
+      args.push(input);
+      message.push('%' + args.length);
+      lastInput = contentsBlock;
+    }
+    contentsBlock = contentsBlock.nextConnection &&
+        contentsBlock.nextConnection.targetBlock();
+  }
+  // Remove last input if dummy and not empty.
+  if (lastInput && lastInput.type === 'input_dummy') {
+    var fields = lastInput.getInputTargetBlock('FIELDS');
+    if (fields && getFieldsJson_(fields).join('').trim() !== '') {
+      var align = lastInput.getFieldValue('ALIGN');
+      if (align !== 'LEFT') {
+        JS.lastDummyAlign0 = align;
+      }
+      args.pop();
+      message.pop();
+    }
+  }
+  JS.message0 = message.join(' ');
+  if (args.length) {
+    JS.args0 = args;
+  }
+  // Generate inline/external switch.
+  if (rootBlock.getFieldValue('INLINE') === 'EXT') {
+    JS.inputsInline = false;
+  } else if (rootBlock.getFieldValue('INLINE') === 'INT') {
+    JS.inputsInline = true;
+  }
+  // Generate output, or next/previous connections.
+  switch (rootBlock.getFieldValue('CONNECTIONS')) {
+    case 'LEFT':
+      JS.output =
+          JSON.parse(getOptTypesFrom(rootBlock, 'OUTPUTTYPE') || 'null');
+      break;
+    case 'BOTH':
+      JS.previousStatement =
+          JSON.parse(getOptTypesFrom(rootBlock, 'TOPTYPE') || 'null');
+      JS.nextStatement =
+          JSON.parse(getOptTypesFrom(rootBlock, 'BOTTOMTYPE') || 'null');
+      break;
+    case 'TOP':
+      JS.previousStatement =
+          JSON.parse(getOptTypesFrom(rootBlock, 'TOPTYPE') || 'null');
+      break;
+    case 'BOTTOM':
+      JS.nextStatement =
+          JSON.parse(getOptTypesFrom(rootBlock, 'BOTTOMTYPE') || 'null');
+      break;
+  }
+  // Generate colour.
+  var colourBlock = rootBlock.getInputTargetBlock('COLOUR');
+  if (colourBlock && !colourBlock.disabled) {
+    var hue = parseInt(colourBlock.getFieldValue('HUE'), 10);
+    JS.colour = hue;
+  }
+  JS.tooltip = '';
+  JS.helpUrl = 'http://www.example.com/';
+  return JSON.stringify(JS, null, '  ');
+}
+
+/**
+ * Update the language code as JavaScript.
+ * @param {string} blockType Name of block.
+ * @param {!Blockly.Block} rootBlock Factory_base block.
+ * @return {string} Generated language code.
+ * @private
+ */
+function formatJavaScript_(blockType, rootBlock) {
+  var code = [];
+  code.push("Blockly.Blocks['" + blockType + "'] = {");
+  code.push("  init: function() {");
+  // Generate inputs.
+  var TYPES = {'input_value': 'appendValueInput',
+               'input_statement': 'appendStatementInput',
+               'input_dummy': 'appendDummyInput'};
+  var contentsBlock = rootBlock.getInputTargetBlock('INPUTS');
+  while (contentsBlock) {
+    if (!contentsBlock.disabled && !contentsBlock.getInheritedDisabled()) {
+      var name = '';
+      // Dummy inputs don't have names.  Other inputs do.
+      if (contentsBlock.type !== 'input_dummy') {
+        name = escapeString(contentsBlock.getFieldValue('INPUTNAME'));
+      }
+      code.push('    this.' + TYPES[contentsBlock.type] + '(' + name + ')');
+      var check = getOptTypesFrom(contentsBlock, 'TYPE');
+      if (check) {
+        code.push('        .setCheck(' + check + ')');
+      }
+      var align = contentsBlock.getFieldValue('ALIGN');
+      if (align !== 'LEFT') {
+        code.push('        .setAlign(Blockly.ALIGN_' + align + ')');
+      }
+      var fields = getFieldsJs_(contentsBlock.getInputTargetBlock('FIELDS'));
+      for (var i = 0; i < fields.length; i++) {
+        code.push('        .appendField(' + fields[i] + ')');
+      }
+      // Add semicolon to last line to finish the statement.
+      code[code.length - 1] += ';';
+    }
+    contentsBlock = contentsBlock.nextConnection &&
+        contentsBlock.nextConnection.targetBlock();
+  }
+  // Generate inline/external switch.
+  if (rootBlock.getFieldValue('INLINE') === 'EXT') {
+    code.push('    this.setInputsInline(false);');
+  } else if (rootBlock.getFieldValue('INLINE') === 'INT') {
+    code.push('    this.setInputsInline(true);');
+  }
+  // Generate output, or next/previous connections.
+  switch (rootBlock.getFieldValue('CONNECTIONS')) {
+    case 'LEFT':
+      code.push(connectionLineJs_('setOutput', 'OUTPUTTYPE'));
+      break;
+    case 'BOTH':
+      code.push(connectionLineJs_('setPreviousStatement', 'TOPTYPE'));
+      code.push(connectionLineJs_('setNextStatement', 'BOTTOMTYPE'));
+      break;
+    case 'TOP':
+      code.push(connectionLineJs_('setPreviousStatement', 'TOPTYPE'));
+      break;
+    case 'BOTTOM':
+      code.push(connectionLineJs_('setNextStatement', 'BOTTOMTYPE'));
+      break;
+  }
+  // Generate colour.
+  var colourBlock = rootBlock.getInputTargetBlock('COLOUR');
+  if (colourBlock && !colourBlock.disabled) {
+    var hue = parseInt(colourBlock.getFieldValue('HUE'), 10);
+    if (!isNaN(hue)) {
+      code.push('    this.setColour(' + hue + ');');
+    }
+  }
+  code.push("    this.setTooltip('');");
+  code.push("    this.setHelpUrl('http://www.example.com/');");
+  code.push('  }');
+  code.push('};');
+  return code.join('\n');
+}
+
+/**
+ * Create JS code required to create a top, bottom, or value connection.
+ * @param {string} functionName JavaScript function name.
+ * @param {string} typeName Name of type input.
+ * @return {string} Line of JavaScript code to create connection.
+ * @private
+ */
+function connectionLineJs_(functionName, typeName) {
+  var type = getOptTypesFrom(getRootBlock(), typeName);
+  if (type) {
+    type = ', ' + type;
+  } else {
+    type = '';
+  }
+  return '    this.' + functionName + '(true' + type + ');';
+}
+
+/**
+ * Returns field strings and any config.
+ * @param {!Blockly.Block} block Input block.
+ * @return {!Array} Field strings.
+ * @private
+ */
+function getFieldsJs_(block) {
+  var fields = [];
+  while (block) {
+    if (!block.disabled && !block.getInheritedDisabled()) {
+      switch (block.type) {
+        case 'field_static':
+          // Result: 'hello'
+          fields.push(escapeString(block.getFieldValue('TEXT')));
+          break;
+        case 'field_input':
+          // Result: new Blockly.FieldTextInput('Hello'), 'GREET'
+          fields.push('new Blockly.FieldTextInput(' +
+              escapeString(block.getFieldValue('TEXT')) + '), ' +
+              escapeString(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_number':
+          // Result: new Blockly.FieldNumber(10, 0, 100, 1), 'NUMBER'
+          var args = [
+            Number(block.getFieldValue('VALUE')),
+            Number(block.getFieldValue('MIN')),
+            Number(block.getFieldValue('MAX')),
+            Number(block.getFieldValue('PRECISION'))
+          ];
+          // Remove any trailing arguments that aren't needed.
+          if (args[3] === 0) {
+            args.pop();
+            if (args[2] === Infinity) {
+              args.pop();
+              if (args[1] === -Infinity) {
+                args.pop();
+              }
+            }
+          }
+          fields.push('new Blockly.FieldNumber(' + args.join(', ') + '), ' +
+              escapeString(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_angle':
+          // Result: new Blockly.FieldAngle(90), 'ANGLE'
+          fields.push('new Blockly.FieldAngle(' +
+              Number(block.getFieldValue('ANGLE')) + '), ' +
+              escapeString(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_checkbox':
+          // Result: new Blockly.FieldCheckbox('TRUE'), 'CHECK'
+          fields.push('new Blockly.FieldCheckbox(' +
+              escapeString(block.getFieldValue('CHECKED')) + '), ' +
+              escapeString(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_colour':
+          // Result: new Blockly.FieldColour('#ff0000'), 'COLOUR'
+          fields.push('new Blockly.FieldColour(' +
+              escapeString(block.getFieldValue('COLOUR')) + '), ' +
+              escapeString(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_variable':
+          // Result: new Blockly.FieldVariable('item'), 'VAR'
+          var varname = escapeString(block.getFieldValue('TEXT') || null);
+          fields.push('new Blockly.FieldVariable(' + varname + '), ' +
+              escapeString(block.getFieldValue('FIELDNAME')));
+          break;
+        case 'field_dropdown':
+          // Result:
+          // new Blockly.FieldDropdown([['yes', '1'], ['no', '0']]), 'TOGGLE'
+          var options = [];
+          for (var i = 0; i < block.optionCount_; i++) {
+            options[i] = '[' + escapeString(block.getFieldValue('USER' + i)) +
+                ', ' + escapeString(block.getFieldValue('CPU' + i)) + ']';
+          }
+          if (options.length) {
+            fields.push('new Blockly.FieldDropdown([' +
+                options.join(', ') + ']), ' +
+                escapeString(block.getFieldValue('FIELDNAME')));
+          }
+          break;
+        case 'field_image':
+          // Result: new Blockly.FieldImage('http://...', 80, 60, '*')
+          var src = escapeString(block.getFieldValue('SRC'));
+          var width = Number(block.getFieldValue('WIDTH'));
+          var height = Number(block.getFieldValue('HEIGHT'));
+          var alt = escapeString(block.getFieldValue('ALT'));
+          fields.push('new Blockly.FieldImage(' +
+              src + ', ' + width + ', ' + height + ', ' + alt + ')');
+          break;
+      }
+    }
+    block = block.nextConnection && block.nextConnection.targetBlock();
+  }
+  return fields;
+}
+
+/**
+ * Returns field strings and any config.
+ * @param {!Blockly.Block} block Input block.
+ * @return {!Array} Array of static text and field configs.
+ * @private
+ */
+function getFieldsJson_(block) {
+  var fields = [];
+  while (block) {
+    if (!block.disabled && !block.getInheritedDisabled()) {
+      switch (block.type) {
+        case 'field_static':
+          // Result: 'hello'
+          fields.push(block.getFieldValue('TEXT'));
+          break;
+        case 'field_input':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            text: block.getFieldValue('TEXT')
+          });
+          break;
+        case 'field_number':
+          var obj = {
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            value: Number(block.getFieldValue('VALUE'))
+          };
+          var min = Number(block.getFieldValue('MIN'));
+          if (min > -Infinity) {
+            obj.min = min;
+          }
+          var max = Number(block.getFieldValue('MAX'));
+          if (max < Infinity) {
+            obj.max = max;
+          }
+          var precision = Number(block.getFieldValue('PRECISION'));
+          if (precision) {
+            obj.precision = precision;
+          }
+          fields.push(obj);
+          break;
+        case 'field_angle':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            angle: Number(block.getFieldValue('ANGLE'))
+          });
+          break;
+        case 'field_checkbox':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            checked: block.getFieldValue('CHECKED') === 'TRUE'
+          });
+          break;
+        case 'field_colour':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            colour: block.getFieldValue('COLOUR')
+          });
+          break;
+        case 'field_variable':
+          fields.push({
+            type: block.type,
+            name: block.getFieldValue('FIELDNAME'),
+            variable: block.getFieldValue('TEXT') || null
+          });
+          break;
+        case 'field_dropdown':
+          var options = [];
+          for (var i = 0; i < block.optionCount_; i++) {
+            options[i] = [block.getFieldValue('USER' + i),
+                block.getFieldValue('CPU' + i)];
+          }
+          if (options.length) {
+            fields.push({
+              type: block.type,
+              name: block.getFieldValue('FIELDNAME'),
+              options: options
+            });
+          }
+          break;
+        case 'field_image':
+          fields.push({
+            type: block.type,
+            src: block.getFieldValue('SRC'),
+            width: Number(block.getFieldValue('WIDTH')),
+            height: Number(block.getFieldValue('HEIGHT')),
+            alt: block.getFieldValue('ALT')
+          });
+          break;
+      }
+    }
+    block = block.nextConnection && block.nextConnection.targetBlock();
+  }
+  return fields;
+}
+
+/**
+ * Escape a string.
+ * @param {string} string String to escape.
+ * @return {string} Escaped string surrounded by quotes.
+ */
+function escapeString(string) {
+  return JSON.stringify(string);
+}
+
+/**
+ * Fetch the type(s) defined in the given input.
+ * Format as a string for appending to the generated code.
+ * @param {!Blockly.Block} block Block with input.
+ * @param {string} name Name of the input.
+ * @return {?string} String defining the types.
+ */
+function getOptTypesFrom(block, name) {
+  var types = getTypesFrom_(block, name);
+  if (types.length === 0) {
+    return undefined;
+  } else if (types.indexOf('null') !== -1) {
+    return 'null';
+  } else if (types.length === 1) {
+    return types[0];
+  } else {
+    return '[' + types.join(', ') + ']';
+  }
+}
+
+/**
+ * Fetch the type(s) defined in the given input.
+ * @param {!Blockly.Block} block Block with input.
+ * @param {string} name Name of the input.
+ * @return {!Array} List of types.
+ * @private
+ */
+function getTypesFrom_(block, name) {
+  var typeBlock = block.getInputTargetBlock(name);
+  var types;
+  if (!typeBlock || typeBlock.disabled) {
+    types = [];
+  } else if (typeBlock.type === 'type_other') {
+    types = [escapeString(typeBlock.getFieldValue('TYPE'))];
+  } else if (typeBlock.type === 'type_group') {
+    types = [];
+    for (var i = 0; i < typeBlock.typeCount_; i++) {
+      types = types.concat(getTypesFrom_(typeBlock, 'TYPE' + i));
+    }
+    // Remove duplicates.
+    var hash = Object.create(null);
+    for (var n = types.length - 1; n >= 0; n--) {
+      if (hash[types[n]]) {
+        types.splice(n, 1);
+      }
+      hash[types[n]] = true;
+    }
+  } else {
+    types = [escapeString(typeBlock.valueType)];
+  }
+  return types;
+}
+
+/**
+ * Update the generator code.
+ * @param {!Blockly.Block} block Rendered block in preview workspace.
+ */
+function updateGenerator(block) {
+  function makeVar(root, name) {
+    name = name.toLowerCase().replace(/\W/g, '_');
+    return '  var ' + root + '_' + name;
+  }
+  var language = document.getElementById('language').value;
+  var code = [];
+  code.push("Blockly." + language + "['" + block.type +
+            "'] = function(block) {");
+
+  // Generate getters for any fields or inputs.
+  for (var i = 0, input; input = block.inputList[i]; i++) {
+    for (var j = 0, field; field = input.fieldRow[j]; j++) {
+      var name = field.name;
+      if (!name) {
+        continue;
+      }
+      if (field instanceof Blockly.FieldVariable) {
+        // Subclass of Blockly.FieldDropdown, must test first.
+        code.push(makeVar('variable', name) +
+                  " = Blockly." + language +
+                  ".nameDB_.getName(block.getFieldValue('" + name +
+                  "'), Blockly.Variables.NAME_TYPE);");
+      } else if (field instanceof Blockly.FieldAngle) {
+        // Subclass of Blockly.FieldTextInput, must test first.
+        code.push(makeVar('angle', name) +
+                  " = block.getFieldValue('" + name + "');");
+      } else if (field instanceof Blockly.FieldColour) {
+        code.push(makeVar('colour', name) +
+                  " = block.getFieldValue('" + name + "');");
+      } else if (field instanceof Blockly.FieldCheckbox) {
+        code.push(makeVar('checkbox', name) +
+                  " = block.getFieldValue('" + name + "') === 'TRUE';");
+      } else if (field instanceof Blockly.FieldDropdown) {
+        code.push(makeVar('dropdown', name) +
+                  " = block.getFieldValue('" + name + "');");
+      } else if (field instanceof Blockly.FieldNumber) {
+        code.push(makeVar('number', name) +
+                  " = block.getFieldValue('" + name + "');");
+      } else if (field instanceof Blockly.FieldTextInput) {
+        code.push(makeVar('text', name) +
+                  " = block.getFieldValue('" + name + "');");
+      }
+    }
+    var name = input.name;
+    if (name) {
+      if (input.type === Blockly.INPUT_VALUE) {
+        code.push(makeVar('value', name) +
+                  " = Blockly." + language + ".valueToCode(block, '" + name +
+                  "', Blockly." + language + ".ORDER_ATOMIC);");
+      } else if (input.type === Blockly.NEXT_STATEMENT) {
+        code.push(makeVar('statements', name) +
+                  " = Blockly." + language + ".statementToCode(block, '" +
+                  name + "');");
+      }
+    }
+  }
+  // Most languages end lines with a semicolon.  Python does not.
+  var lineEnd = {
+    'JavaScript': ';',
+    'Python': '',
+    'PHP': ';',
+    'Dart': ';'
+  };
+  code.push("  // TODO: Assemble " + language + " into code variable.");
+  if (block.outputConnection) {
+    code.push("  var code = '...';");
+    code.push("  // TODO: Change ORDER_NONE to the correct strength.");
+    code.push("  return [code, Blockly." + language + ".ORDER_NONE];");
+  } else {
+    code.push("  var code = '..." + (lineEnd[language] || '') + "\\n';");
+    code.push("  return code;");
+  }
+  code.push("};");
+
+  injectCode(code.join('\n'), 'generatorPre');
+}
+
+/**
+ * Existing direction ('ltr' vs 'rtl') of preview.
+ */
+var oldDir = null;
+
+/**
+ * Update the preview display.
+ */
+function updatePreview() {
+  // Toggle between LTR/RTL if needed (also used in first display).
+  var newDir = document.getElementById('direction').value;
+  if (oldDir !== newDir) {
+    if (previewWorkspace) {
+      previewWorkspace.dispose();
+    }
+    var rtl = newDir === 'rtl';
+    previewWorkspace = Blockly.inject('preview',
+        {rtl: rtl,
+         media: '../../media/',
+         scrollbars: true});
+    oldDir = newDir;
+  }
+  previewWorkspace.clear();
+
+  // Fetch the code and determine its format (JSON or JavaScript).
+  var format = document.getElementById('format').value;
+  if (format === 'Manual') {
+    var code = document.getElementById('languageTA').value;
+    // If the code is JSON, it will parse, otherwise treat as JS.
+    try {
+      JSON.parse(code);
+      format = 'JSON';
+    } catch (e) {
+      format = 'JavaScript';
+    }
+  } else {
+    var code = document.getElementById('languagePre').textContent;
+  }
+  if (!code.trim()) {
+    // Nothing to render.  Happens while cloud storage is loading.
+    return;
+  }
+
+  // Backup Blockly.Blocks object so that main workspace and preview don't
+  // collide if user creates a 'factory_base' block, for instance.
+  var backupBlocks = Blockly.Blocks;
+  try {
+    // Make a shallow copy.
+    Blockly.Blocks = {};
+    for (var prop in backupBlocks) {
+      Blockly.Blocks[prop] = backupBlocks[prop];
+    }
+
+    if (format === 'JSON') {
+      var json = JSON.parse(code);
+      Blockly.Blocks[json.type || UNNAMED] = {
+        init: function() {
+          this.jsonInit(json);
+        }
+      };
+    } else if (format === 'JavaScript') {
+      eval(code);
+    } else {
+      throw 'Unknown format: ' + format;
+    }
+
+    // Look for a block on Blockly.Blocks that does not match the backup.
+    var blockType = null;
+    for (var type in Blockly.Blocks) {
+      if (typeof Blockly.Blocks[type].init === 'function' &&
+          Blockly.Blocks[type] !== backupBlocks[type]) {
+        blockType = type;
+        break;
+      }
+    }
+    if (!blockType) {
+      return;
+    }
+
+    // Create the preview block.
+    var previewBlock = previewWorkspace.newBlock(blockType);
+    previewBlock.initSvg();
+    previewBlock.render();
+    previewBlock.setMovable(false);
+    previewBlock.setDeletable(false);
+    previewBlock.moveBy(15, 10);
+    previewWorkspace.clearUndo();
+
+    updateGenerator(previewBlock);
+  } finally {
+    Blockly.Blocks = backupBlocks;
+  }
+}
+
+/**
+ * Inject code into a pre tag, with syntax highlighting.
+ * Safe from HTML/script injection.
+ * @param {string} code Lines of code.
+ * @param {string} id ID of 
 element to inject into.
+ */
+function injectCode(code, id) {
+  var pre = document.getElementById(id);
+  pre.textContent = code;
+  // Remove the 'prettyprinted' class, so that Prettify will recalculate.
+  pre.className = pre.className.replace('prettyprinted', '');
+  PR.prettyPrint();
+}
+
+/**
+ * Return the uneditable container block that everything else attaches to.
+ * @return {Blockly.Block}
+ */
+function getRootBlock() {
+  var blocks = mainWorkspace.getTopBlocks(false);
+  for (var i = 0, block; block = blocks[i]; i++) {
+    if (block.type === 'factory_base') {
+      return block;
+    }
+  }
+  return null;
+}
+
+/**
+ * Disable the link button if the format is 'Manual', enable otherwise.
+ */
+function disableEnableLink() {
+  var linkButton = document.getElementById('linkButton');
+  linkButton.disabled = document.getElementById('format').value === 'Manual';
+}
+
+/**
+ * Initialize Blockly and layout.  Called on page load.
+ */
+function init() {
+  if ('BlocklyStorage' in window) {
+    BlocklyStorage.HTTPREQUEST_ERROR =
+        'There was a problem with the request.\n';
+    BlocklyStorage.LINK_ALERT =
+        'Share your blocks with this link:\n\n%1';
+    BlocklyStorage.HASH_ERROR =
+        'Sorry, "%1" doesn\'t correspond with any saved Blockly file.';
+    BlocklyStorage.XML_ERROR = 'Could not load your saved file.\n'+
+        'Perhaps it was created with a different version of Blockly?';
+    var linkButton = document.getElementById('linkButton');
+    linkButton.style.display = 'inline-block';
+    linkButton.addEventListener('click',
+        function() {BlocklyStorage.link(mainWorkspace);});
+    disableEnableLink();
+  }
+
+  document.getElementById('helpButton').addEventListener('click',
+    function() {
+      open('https://developers.google.com/blockly/guides/create-custom-blocks/block-factory',
+           'BlockFactoryHelp');
+    });
+
+  var expandList = [
+    document.getElementById('blockly'),
+    document.getElementById('blocklyMask'),
+    document.getElementById('preview'),
+    document.getElementById('languagePre'),
+    document.getElementById('languageTA'),
+    document.getElementById('generatorPre')
+  ];
+  var onresize = function(e) {
+    for (var i = 0, expand; expand = expandList[i]; i++) {
+      expand.style.width = (expand.parentNode.offsetWidth - 2) + 'px';
+      expand.style.height = (expand.parentNode.offsetHeight - 2) + 'px';
+    }
+  };
+  onresize();
+  window.addEventListener('resize', onresize);
+
+  var toolbox = document.getElementById('toolbox');
+  mainWorkspace = Blockly.inject('blockly',
+      {collapse: false,
+       toolbox: toolbox,
+       media: '../../media/'});
+
+  // Create the root block.
+  if ('BlocklyStorage' in window && window.location.hash.length > 1) {
+    BlocklyStorage.retrieveXml(window.location.hash.substring(1),
+                               mainWorkspace);
+  } else {
+    var xml = '';
+    Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(xml), mainWorkspace);
+  }
+  mainWorkspace.clearUndo();
+
+  mainWorkspace.addChangeListener(Blockly.Events.disableOrphans);
+  mainWorkspace.addChangeListener(updateLanguage);
+  document.getElementById('direction')
+      .addEventListener('change', updatePreview);
+  document.getElementById('languageTA')
+      .addEventListener('change', updatePreview);
+  document.getElementById('languageTA')
+      .addEventListener('keyup', updatePreview);
+  document.getElementById('format')
+      .addEventListener('change', formatChange);
+  document.getElementById('language')
+      .addEventListener('change', updatePreview);
+}
+window.addEventListener('load', init);
diff --git a/demos/blockfactory_old/index.html b/demos/blockfactory_old/index.html
index 7cc448f8168..a27b687b614 100644
--- a/demos/blockfactory_old/index.html
+++ b/demos/blockfactory_old/index.html
@@ -1,224 +1,224 @@
-
-
-
-  
-  
-  Blockly Demo: Block Factory
-  
-  
-  
-  
-  
-  
-  
-
-
-  
-    
-      
-      
-    
-    
-      
-      
-    
-  
-

Blockly > - Demos > Block Factory

-
- - - - - -
-

Preview: - -

-
- - - -
-
-
-
-
- - - - - - - - - - - - - - - - -
-
-
-

Language code: - -

-
-

-              
-            
-

Generator stub: - -

-
-

-            
-
- - - + + + + + + Blockly Demo: Block Factory + + + + + + + + + + + + + + + + + + +
+

Blockly > + Demos > Block Factory

+
+ + + + + +
+

Preview: + +

+
+ + + +
+
+
+
+
+ + + + + + + + + + + + + + + + +
+
+
+

Language code: + +

+
+

+              
+            
+

Generator stub: + +

+
+

+            
+
+ + + diff --git a/demos/code/code.js b/demos/code/code.js index fc9e8304dea..ca7adacaa28 100644 --- a/demos/code/code.js +++ b/demos/code/code.js @@ -1,626 +1,626 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview JavaScript for Blockly's Code demo. - */ -'use strict'; - -/** - * Create a namespace for the application. - */ -var Code = {}; - -/** - * Lookup for names of supported languages. Keys should be in ISO 639 format. - */ -Code.LANGUAGE_NAME = { - 'ar': 'العربية', - 'be-tarask': 'Taraškievica', - 'br': 'Brezhoneg', - 'ca': 'Català', - 'cs': 'Česky', - 'da': 'Dansk', - 'de': 'Deutsch', - 'el': 'Ελληνικά', - 'en': 'English', - 'es': 'Español', - 'et': 'Eesti', - 'fa': 'فارسی', - 'fr': 'Français', - 'he': 'עברית', - 'hr': 'Hrvatski', - 'hrx': 'Hunsrik', - 'hu': 'Magyar', - 'ia': 'Interlingua', - 'is': 'Íslenska', - 'it': 'Italiano', - 'ja': '日本語', - 'kab': 'Kabyle', - 'ko': '한국어', - 'mk': 'Македонски', - 'ms': 'Bahasa Melayu', - 'nb': 'Norsk Bokmål', - 'nl': 'Nederlands, Vlaams', - 'oc': 'Lenga d\'òc', - 'pl': 'Polski', - 'pms': 'Piemontèis', - 'pt-br': 'Português Brasileiro', - 'ro': 'Română', - 'ru': 'Русский', - 'sc': 'Sardu', - 'sk': 'Slovenčina', - 'sr': 'Српски', - 'sv': 'Svenska', - 'ta': 'தமிழ்', - 'th': 'ภาษาไทย', - 'tlh': 'tlhIngan Hol', - 'tr': 'Türkçe', - 'uk': 'Українська', - 'vi': 'Tiếng Việt', - 'zh-hans': '简体中文', - 'zh-hant': '正體中文' -}; - -/** - * List of RTL languages. - */ -Code.LANGUAGE_RTL = ['ar', 'fa', 'he', 'lki']; - -/** - * Blockly's main workspace. - * @type {Blockly.WorkspaceSvg} - */ -Code.workspace = null; - -/** - * Extracts a parameter from the URL. - * If the parameter is absent default_value is returned. - * @param {string} name The name of the parameter. - * @param {string} defaultValue Value to return if parameter not found. - * @return {string} The parameter value or the default value if not found. - */ -Code.getStringParamFromUrl = function(name, defaultValue) { - var val = location.search.match(new RegExp('[?&]' + name + '=([^&]+)')); - return val ? decodeURIComponent(val[1].replace(/\+/g, '%20')) : defaultValue; -}; - -/** - * Get the language of this user from the URL. - * @return {string} User's language. - */ -Code.getLang = function() { - var lang = Code.getStringParamFromUrl('lang', ''); - if (Code.LANGUAGE_NAME[lang] === undefined) { - // Default to English. - lang = 'en'; - } - return lang; -}; - -/** - * Is the current language (Code.LANG) an RTL language? - * @return {boolean} True if RTL, false if LTR. - */ -Code.isRtl = function() { - return Code.LANGUAGE_RTL.indexOf(Code.LANG) !== -1; -}; - -/** - * Load blocks saved on App Engine Storage or in session/local storage. - * @param {string} defaultXml Text representation of default blocks. - */ -Code.loadBlocks = function(defaultXml) { - try { - var loadOnce = window.sessionStorage.loadOnceBlocks; - } catch(e) { - // Firefox sometimes throws a SecurityError when accessing sessionStorage. - // Restarting Firefox fixes this, so it looks like a bug. - var loadOnce = null; - } - if ('BlocklyStorage' in window && window.location.hash.length > 1) { - // An href with #key trigers an AJAX call to retrieve saved blocks. - BlocklyStorage.retrieveXml(window.location.hash.substring(1)); - } else if (loadOnce) { - // Language switching stores the blocks during the reload. - delete window.sessionStorage.loadOnceBlocks; - var xml = Blockly.Xml.textToDom(loadOnce); - Blockly.Xml.domToWorkspace(xml, Code.workspace); - } else if (defaultXml) { - // Load the editor with default starting blocks. - var xml = Blockly.Xml.textToDom(defaultXml); - Blockly.Xml.domToWorkspace(xml, Code.workspace); - } else if ('BlocklyStorage' in window) { - // Restore saved blocks in a separate thread so that subsequent - // initialization is not affected from a failed load. - window.setTimeout(BlocklyStorage.restoreBlocks, 0); - } -}; - -/** - * Save the blocks and reload with a different language. - */ -Code.changeLanguage = function() { - // Store the blocks for the duration of the reload. - // MSIE 11 does not support sessionStorage on file:// URLs. - if (window.sessionStorage) { - var xml = Blockly.Xml.workspaceToDom(Code.workspace); - var text = Blockly.Xml.domToText(xml); - window.sessionStorage.loadOnceBlocks = text; - } - - var languageMenu = document.getElementById('languageMenu'); - var newLang = encodeURIComponent( - languageMenu.options[languageMenu.selectedIndex].value); - var search = window.location.search; - if (search.length <= 1) { - search = '?lang=' + newLang; - } else if (search.match(/[?&]lang=[^&]*/)) { - search = search.replace(/([?&]lang=)[^&]*/, '$1' + newLang); - } else { - search = search.replace(/\?/, '?lang=' + newLang + '&'); - } - - window.location = window.location.protocol + '//' + - window.location.host + window.location.pathname + search; -}; - -/** - * Changes the output language by clicking the tab matching - * the selected language in the codeMenu. - */ -Code.changeCodingLanguage = function() { - var codeMenu = document.getElementById('code_menu'); - Code.tabClick(codeMenu.options[codeMenu.selectedIndex].value); -} - -/** - * Bind a function to a button's click event. - * On touch enabled browsers, ontouchend is treated as equivalent to onclick. - * @param {!Element|string} el Button element or ID thereof. - * @param {!Function} func Event handler to bind. - */ -Code.bindClick = function(el, func) { - if (typeof el === 'string') { - el = document.getElementById(el); - } - el.addEventListener('click', func, true); - function touchFunc(e) { - // Prevent code from being executed twice on touchscreens. - e.preventDefault(); - func(e); - } - el.addEventListener('touchend', touchFunc, true); -}; - -/** - * Load the Prettify CSS and JavaScript. - */ -Code.importPrettify = function() { - var script = document.createElement('script'); - script.setAttribute('src', 'https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js'); - document.head.appendChild(script); -}; - -/** - * Compute the absolute coordinates and dimensions of an HTML element. - * @param {!Element} element Element to match. - * @return {!Object} Contains height, width, x, and y properties. - * @private - */ -Code.getBBox_ = function(element) { - var height = element.offsetHeight; - var width = element.offsetWidth; - var x = 0; - var y = 0; - do { - x += element.offsetLeft; - y += element.offsetTop; - element = element.offsetParent; - } while (element); - return { - height: height, - width: width, - x: x, - y: y - }; -}; - -/** - * User's language (e.g. "en"). - * @type {string} - */ -Code.LANG = Code.getLang(); - -/** - * List of tab names. - * @private - */ -Code.TABS_ = [ - 'blocks', 'javascript', 'php', 'python', 'dart', 'lua', 'xml', 'json' -]; - -/** - * List of tab names with casing, for display in the UI. - * @private - */ -Code.TABS_DISPLAY_ = [ - 'Blocks', 'JavaScript', 'PHP', 'Python', 'Dart', 'Lua', 'XML', 'JSON' -]; - -Code.selected = 'blocks'; - -/** - * Switch the visible pane when a tab is clicked. - * @param {string} clickedName Name of tab clicked. - */ -Code.tabClick = function(clickedName) { - // If the XML tab was open, save and render the content. - if (document.getElementById('tab_xml').classList.contains('tabon')) { - var xmlTextarea = document.getElementById('content_xml'); - var xmlText = xmlTextarea.value; - var xmlDom = null; - try { - xmlDom = Blockly.Xml.textToDom(xmlText); - } catch (e) { - var q = window.confirm( - MSG['parseError'].replace(/%1/g, 'XML').replace('%2', e)); - if (!q) { - // Leave the user on the XML tab. - return; - } - } - if (xmlDom) { - Code.workspace.clear(); - Blockly.Xml.domToWorkspace(xmlDom, Code.workspace); - } - } - - if (document.getElementById('tab_json').classList.contains('tabon')) { - var jsonTextarea = document.getElementById('content_json'); - var jsonText = jsonTextarea.value; - var json = null; - try { - json = JSON.parse(jsonText); - } catch (e) { - var q = window.confirm( - MSG['parseError'].replace(/%1/g, 'JSON').replace('%2', e)); - if (!q) { - // Leave the user on the JSON tab. - return; - } - } - if (json) { - Blockly.serialization.workspaces.load(json, Code.workspace); - } - } - - if (document.getElementById('tab_blocks').classList.contains('tabon')) { - Code.workspace.setVisible(false); - } - // Deselect all tabs and hide all panes. - for (var i = 0; i < Code.TABS_.length; i++) { - var name = Code.TABS_[i]; - var tab = document.getElementById('tab_' + name); - tab.classList.add('taboff'); - tab.classList.remove('tabon'); - document.getElementById('content_' + name).style.visibility = 'hidden'; - } - - // Select the active tab. - Code.selected = clickedName; - var selectedTab = document.getElementById('tab_' + clickedName); - selectedTab.classList.remove('taboff'); - selectedTab.classList.add('tabon'); - // Show the selected pane. - document.getElementById('content_' + clickedName).style.visibility = - 'visible'; - Code.renderContent(); - // The code menu tab is on if the blocks tab is off. - var codeMenuTab = document.getElementById('tab_code'); - if (clickedName === 'blocks') { - Code.workspace.setVisible(true); - codeMenuTab.className = 'taboff'; - } else { - codeMenuTab.className = 'tabon'; - } - // Sync the menu's value with the clicked tab value if needed. - var codeMenu = document.getElementById('code_menu'); - for (var i = 0; i < codeMenu.options.length; i++) { - if (codeMenu.options[i].value === clickedName) { - codeMenu.selectedIndex = i; - break; - } - } - Blockly.svgResize(Code.workspace); -}; - -/** - * Populate the currently selected pane with content generated from the blocks. - */ -Code.renderContent = function() { - var content = document.getElementById('content_' + Code.selected); - // Initialize the pane. - if (content.id === 'content_xml') { - var xmlTextarea = document.getElementById('content_xml'); - var xmlDom = Blockly.Xml.workspaceToDom(Code.workspace); - var xmlText = Blockly.Xml.domToPrettyText(xmlDom); - xmlTextarea.value = xmlText; - xmlTextarea.focus(); - } else if (content.id === 'content_json') { - var jsonTextarea = document.getElementById('content_json'); - jsonTextarea.value = JSON.stringify( - Blockly.serialization.workspaces.save(Code.workspace), null, 2); - jsonTextarea.focus(); - } else if (content.id === 'content_javascript') { - Code.attemptCodeGeneration(Blockly.JavaScript); - } else if (content.id === 'content_python') { - Code.attemptCodeGeneration(Blockly.Python); - } else if (content.id === 'content_php') { - Code.attemptCodeGeneration(Blockly.PHP); - } else if (content.id === 'content_dart') { - Code.attemptCodeGeneration(Blockly.Dart); - } else if (content.id === 'content_lua') { - Code.attemptCodeGeneration(Blockly.Lua); - } - if (typeof PR === 'object') { - PR.prettyPrint(); - } -}; - -/** - * Attempt to generate the code and display it in the UI, pretty printed. - * @param generator {!Blockly.Generator} The generator to use. - */ -Code.attemptCodeGeneration = function(generator) { - var content = document.getElementById('content_' + Code.selected); - content.textContent = ''; - if (Code.checkAllGeneratorFunctionsDefined(generator)) { - var code = generator.workspaceToCode(Code.workspace); - content.textContent = code; - // Remove the 'prettyprinted' class, so that Prettify will recalculate. - content.className = content.className.replace('prettyprinted', ''); - } -}; - -/** - * Check whether all blocks in use have generator functions. - * @param generator {!Blockly.Generator} The generator to use. - */ -Code.checkAllGeneratorFunctionsDefined = function(generator) { - var blocks = Code.workspace.getAllBlocks(false); - var missingBlockGenerators = []; - for (var i = 0; i < blocks.length; i++) { - var blockType = blocks[i].type; - if (!generator[blockType]) { - if (missingBlockGenerators.indexOf(blockType) === -1) { - missingBlockGenerators.push(blockType); - } - } - } - - var valid = missingBlockGenerators.length === 0; - if (!valid) { - var msg = 'The generator code for the following blocks not specified for ' + - generator.name_ + ':\n - ' + missingBlockGenerators.join('\n - '); - Blockly.dialog.alert(msg); // Assuming synchronous. No callback. - } - return valid; -}; - -/** - * Initialize Blockly. Called on page load. - */ -Code.init = function() { - Code.initLanguage(); - - var rtl = Code.isRtl(); - var container = document.getElementById('content_area'); - var onresize = function(e) { - var bBox = Code.getBBox_(container); - for (var i = 0; i < Code.TABS_.length; i++) { - var el = document.getElementById('content_' + Code.TABS_[i]); - el.style.top = bBox.y + 'px'; - el.style.left = bBox.x + 'px'; - // Height and width need to be set, read back, then set again to - // compensate for scrollbars. - el.style.height = bBox.height + 'px'; - el.style.height = (2 * bBox.height - el.offsetHeight) + 'px'; - el.style.width = bBox.width + 'px'; - el.style.width = (2 * bBox.width - el.offsetWidth) + 'px'; - } - // Make the 'Blocks' tab line up with the toolbox. - if (Code.workspace && Code.workspace.getToolbox().width) { - document.getElementById('tab_blocks').style.minWidth = - (Code.workspace.getToolbox().width - 38) + 'px'; - // Account for the 19 pixel margin and on each side. - } - }; - window.addEventListener('resize', onresize, false); - - // The toolbox XML specifies each category name using Blockly's messaging - // format (eg. ``). - // These message keys need to be defined in `Blockly.Msg` in order to - // be decoded by the library. Therefore, we'll use the `MSG` dictionary that's - // been defined for each language to import each category name message - // into `Blockly.Msg`. - // TODO: Clean up the message files so this is done explicitly instead of - // through this for-loop. - for (var messageKey in MSG) { - if (messageKey.indexOf('cat') === 0) { - Blockly.Msg[messageKey.toUpperCase()] = MSG[messageKey]; - } - } - - // Construct the toolbox XML, replacing translated variable names. - var toolboxText = document.getElementById('toolbox').outerHTML; - toolboxText = toolboxText.replace(/(^|[^%]){(\w+)}/g, - function(m, p1, p2) {return p1 + MSG[p2];}); - var toolboxXml = Blockly.Xml.textToDom(toolboxText); - - Code.workspace = Blockly.inject('content_blocks', - {grid: - {spacing: 25, - length: 3, - colour: '#ccc', - snap: true}, - media: '../../media/', - rtl: rtl, - toolbox: toolboxXml, - zoom: - {controls: true, - wheel: true} - }); - - // Add to reserved word list: Local variables in execution environment (runJS) - // and the infinite loop detection function. - Blockly.JavaScript.addReservedWords('code,timeouts,checkTimeout'); - - Code.loadBlocks(''); - - if ('BlocklyStorage' in window) { - // Hook a save function onto unload. - BlocklyStorage.backupOnUnload(Code.workspace); - } - - Code.tabClick(Code.selected); - - Code.bindClick('trashButton', - function() {Code.discard(); Code.renderContent();}); - Code.bindClick('runButton', Code.runJS); - // Disable the link button if page isn't backed by App Engine storage. - var linkButton = document.getElementById('linkButton'); - if ('BlocklyStorage' in window) { - BlocklyStorage['HTTPREQUEST_ERROR'] = MSG['httpRequestError']; - BlocklyStorage['LINK_ALERT'] = MSG['linkAlert']; - BlocklyStorage['HASH_ERROR'] = MSG['hashError']; - BlocklyStorage['XML_ERROR'] = MSG['loadError']; - Code.bindClick(linkButton, - function() {BlocklyStorage.link(Code.workspace);}); - } else if (linkButton) { - linkButton.className = 'disabled'; - } - - for (var i = 0; i < Code.TABS_.length; i++) { - var name = Code.TABS_[i]; - Code.bindClick('tab_' + name, - function(name_) {return function() {Code.tabClick(name_);};}(name)); - } - Code.bindClick('tab_code', function(e) { - if (e.target !== document.getElementById('tab_code')) { - // Prevent clicks on child codeMenu from triggering a tab click. - return; - } - Code.changeCodingLanguage(); - }); - - onresize(); - Blockly.svgResize(Code.workspace); - - // Lazy-load the syntax-highlighting. - window.setTimeout(Code.importPrettify, 1); -}; - -/** - * Initialize the page language. - */ -Code.initLanguage = function() { - // Set the HTML's language and direction. - var rtl = Code.isRtl(); - document.dir = rtl ? 'rtl' : 'ltr'; - document.head.parentElement.setAttribute('lang', Code.LANG); - - // Sort languages alphabetically. - var languages = []; - for (var lang in Code.LANGUAGE_NAME) { - languages.push([Code.LANGUAGE_NAME[lang], lang]); - } - var comp = function(a, b) { - // Sort based on first argument ('English', 'Русский', '简体字', etc). - if (a[0] > b[0]) return 1; - if (a[0] < b[0]) return -1; - return 0; - }; - languages.sort(comp); - // Populate the language selection menu. - var languageMenu = document.getElementById('languageMenu'); - languageMenu.options.length = 0; - for (var i = 0; i < languages.length; i++) { - var tuple = languages[i]; - var lang = tuple[tuple.length - 1]; - var option = new Option(tuple[0], lang); - if (lang === Code.LANG) { - option.selected = true; - } - languageMenu.options.add(option); - } - languageMenu.addEventListener('change', Code.changeLanguage, true); - - // Populate the coding language selection menu. - var codeMenu = document.getElementById('code_menu'); - codeMenu.options.length = 0; - for (var i = 1; i < Code.TABS_.length; i++) { - codeMenu.options.add(new Option(Code.TABS_DISPLAY_[i], Code.TABS_[i])); - } - codeMenu.addEventListener('change', Code.changeCodingLanguage); - - // Inject language strings. - document.title += ' ' + MSG['title']; - document.getElementById('title').textContent = MSG['title']; - document.getElementById('tab_blocks').textContent = MSG['blocks']; - - document.getElementById('linkButton').title = MSG['linkTooltip']; - document.getElementById('runButton').title = MSG['runTooltip']; - document.getElementById('trashButton').title = MSG['trashTooltip']; -}; - -/** - * Execute the user's code. - * Just a quick and dirty eval. Catch infinite loops. - * @param {Event} event Event created from listener bound to the function. - */ -Code.runJS = function(event) { - // Prevent code from being executed twice on touchscreens. - if (event.type === 'touchend') { - event.preventDefault(); - } - - Blockly.JavaScript.INFINITE_LOOP_TRAP = 'checkTimeout();\n'; - var timeouts = 0; - var checkTimeout = function() { - if (timeouts++ > 1000000) { - throw MSG['timeout']; - } - }; - var code = Blockly.JavaScript.workspaceToCode(Code.workspace); - Blockly.JavaScript.INFINITE_LOOP_TRAP = null; - try { - eval(code); - } catch (e) { - alert(MSG['badCode'].replace('%1', e)); - } -}; - -/** - * Discard all blocks from the workspace. - */ -Code.discard = function() { - var count = Code.workspace.getAllBlocks(false).length; - if (count < 2 || - window.confirm(Blockly.Msg['DELETE_ALL_BLOCKS'].replace('%1', count))) { - Code.workspace.clear(); - if (window.location.hash) { - window.location.hash = ''; - } - } -}; - -// Load the Code demo's language strings. -document.write('\n'); -// Load Blockly's language strings. -document.write('\n'); - -window.addEventListener('load', Code.init); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview JavaScript for Blockly's Code demo. + */ +'use strict'; + +/** + * Create a namespace for the application. + */ +var Code = {}; + +/** + * Lookup for names of supported languages. Keys should be in ISO 639 format. + */ +Code.LANGUAGE_NAME = { + 'ar': 'العربية', + 'be-tarask': 'Taraškievica', + 'br': 'Brezhoneg', + 'ca': 'Català', + 'cs': 'Česky', + 'da': 'Dansk', + 'de': 'Deutsch', + 'el': 'Ελληνικά', + 'en': 'English', + 'es': 'Español', + 'et': 'Eesti', + 'fa': 'فارسی', + 'fr': 'Français', + 'he': 'עברית', + 'hr': 'Hrvatski', + 'hrx': 'Hunsrik', + 'hu': 'Magyar', + 'ia': 'Interlingua', + 'is': 'Íslenska', + 'it': 'Italiano', + 'ja': '日本語', + 'kab': 'Kabyle', + 'ko': '한국어', + 'mk': 'Македонски', + 'ms': 'Bahasa Melayu', + 'nb': 'Norsk Bokmål', + 'nl': 'Nederlands, Vlaams', + 'oc': 'Lenga d\'òc', + 'pl': 'Polski', + 'pms': 'Piemontèis', + 'pt-br': 'Português Brasileiro', + 'ro': 'Română', + 'ru': 'Русский', + 'sc': 'Sardu', + 'sk': 'Slovenčina', + 'sr': 'Српски', + 'sv': 'Svenska', + 'ta': 'தமிழ்', + 'th': 'ภาษาไทย', + 'tlh': 'tlhIngan Hol', + 'tr': 'Türkçe', + 'uk': 'Українська', + 'vi': 'Tiếng Việt', + 'zh-hans': '简体中文', + 'zh-hant': '正體中文' +}; + +/** + * List of RTL languages. + */ +Code.LANGUAGE_RTL = ['ar', 'fa', 'he', 'lki']; + +/** + * Blockly's main workspace. + * @type {Blockly.WorkspaceSvg} + */ +Code.workspace = null; + +/** + * Extracts a parameter from the URL. + * If the parameter is absent default_value is returned. + * @param {string} name The name of the parameter. + * @param {string} defaultValue Value to return if parameter not found. + * @return {string} The parameter value or the default value if not found. + */ +Code.getStringParamFromUrl = function(name, defaultValue) { + var val = location.search.match(new RegExp('[?&]' + name + '=([^&]+)')); + return val ? decodeURIComponent(val[1].replace(/\+/g, '%20')) : defaultValue; +}; + +/** + * Get the language of this user from the URL. + * @return {string} User's language. + */ +Code.getLang = function() { + var lang = Code.getStringParamFromUrl('lang', ''); + if (Code.LANGUAGE_NAME[lang] === undefined) { + // Default to English. + lang = 'en'; + } + return lang; +}; + +/** + * Is the current language (Code.LANG) an RTL language? + * @return {boolean} True if RTL, false if LTR. + */ +Code.isRtl = function() { + return Code.LANGUAGE_RTL.indexOf(Code.LANG) !== -1; +}; + +/** + * Load blocks saved on App Engine Storage or in session/local storage. + * @param {string} defaultXml Text representation of default blocks. + */ +Code.loadBlocks = function(defaultXml) { + try { + var loadOnce = window.sessionStorage.loadOnceBlocks; + } catch(e) { + // Firefox sometimes throws a SecurityError when accessing sessionStorage. + // Restarting Firefox fixes this, so it looks like a bug. + var loadOnce = null; + } + if ('BlocklyStorage' in window && window.location.hash.length > 1) { + // An href with #key trigers an AJAX call to retrieve saved blocks. + BlocklyStorage.retrieveXml(window.location.hash.substring(1)); + } else if (loadOnce) { + // Language switching stores the blocks during the reload. + delete window.sessionStorage.loadOnceBlocks; + var xml = Blockly.Xml.textToDom(loadOnce); + Blockly.Xml.domToWorkspace(xml, Code.workspace); + } else if (defaultXml) { + // Load the editor with default starting blocks. + var xml = Blockly.Xml.textToDom(defaultXml); + Blockly.Xml.domToWorkspace(xml, Code.workspace); + } else if ('BlocklyStorage' in window) { + // Restore saved blocks in a separate thread so that subsequent + // initialization is not affected from a failed load. + window.setTimeout(BlocklyStorage.restoreBlocks, 0); + } +}; + +/** + * Save the blocks and reload with a different language. + */ +Code.changeLanguage = function() { + // Store the blocks for the duration of the reload. + // MSIE 11 does not support sessionStorage on file:// URLs. + if (window.sessionStorage) { + var xml = Blockly.Xml.workspaceToDom(Code.workspace); + var text = Blockly.Xml.domToText(xml); + window.sessionStorage.loadOnceBlocks = text; + } + + var languageMenu = document.getElementById('languageMenu'); + var newLang = encodeURIComponent( + languageMenu.options[languageMenu.selectedIndex].value); + var search = window.location.search; + if (search.length <= 1) { + search = '?lang=' + newLang; + } else if (search.match(/[?&]lang=[^&]*/)) { + search = search.replace(/([?&]lang=)[^&]*/, '$1' + newLang); + } else { + search = search.replace(/\?/, '?lang=' + newLang + '&'); + } + + window.location = window.location.protocol + '//' + + window.location.host + window.location.pathname + search; +}; + +/** + * Changes the output language by clicking the tab matching + * the selected language in the codeMenu. + */ +Code.changeCodingLanguage = function() { + var codeMenu = document.getElementById('code_menu'); + Code.tabClick(codeMenu.options[codeMenu.selectedIndex].value); +} + +/** + * Bind a function to a button's click event. + * On touch enabled browsers, ontouchend is treated as equivalent to onclick. + * @param {!Element|string} el Button element or ID thereof. + * @param {!Function} func Event handler to bind. + */ +Code.bindClick = function(el, func) { + if (typeof el === 'string') { + el = document.getElementById(el); + } + el.addEventListener('click', func, true); + function touchFunc(e) { + // Prevent code from being executed twice on touchscreens. + e.preventDefault(); + func(e); + } + el.addEventListener('touchend', touchFunc, true); +}; + +/** + * Load the Prettify CSS and JavaScript. + */ +Code.importPrettify = function() { + var script = document.createElement('script'); + script.setAttribute('src', 'https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js'); + document.head.appendChild(script); +}; + +/** + * Compute the absolute coordinates and dimensions of an HTML element. + * @param {!Element} element Element to match. + * @return {!Object} Contains height, width, x, and y properties. + * @private + */ +Code.getBBox_ = function(element) { + var height = element.offsetHeight; + var width = element.offsetWidth; + var x = 0; + var y = 0; + do { + x += element.offsetLeft; + y += element.offsetTop; + element = element.offsetParent; + } while (element); + return { + height: height, + width: width, + x: x, + y: y + }; +}; + +/** + * User's language (e.g. "en"). + * @type {string} + */ +Code.LANG = Code.getLang(); + +/** + * List of tab names. + * @private + */ +Code.TABS_ = [ + 'blocks', 'javascript', 'php', 'python', 'dart', 'lua', 'xml', 'json' +]; + +/** + * List of tab names with casing, for display in the UI. + * @private + */ +Code.TABS_DISPLAY_ = [ + 'Blocks', 'JavaScript', 'PHP', 'Python', 'Dart', 'Lua', 'XML', 'JSON' +]; + +Code.selected = 'blocks'; + +/** + * Switch the visible pane when a tab is clicked. + * @param {string} clickedName Name of tab clicked. + */ +Code.tabClick = function(clickedName) { + // If the XML tab was open, save and render the content. + if (document.getElementById('tab_xml').classList.contains('tabon')) { + var xmlTextarea = document.getElementById('content_xml'); + var xmlText = xmlTextarea.value; + var xmlDom = null; + try { + xmlDom = Blockly.Xml.textToDom(xmlText); + } catch (e) { + var q = window.confirm( + MSG['parseError'].replace(/%1/g, 'XML').replace('%2', e)); + if (!q) { + // Leave the user on the XML tab. + return; + } + } + if (xmlDom) { + Code.workspace.clear(); + Blockly.Xml.domToWorkspace(xmlDom, Code.workspace); + } + } + + if (document.getElementById('tab_json').classList.contains('tabon')) { + var jsonTextarea = document.getElementById('content_json'); + var jsonText = jsonTextarea.value; + var json = null; + try { + json = JSON.parse(jsonText); + } catch (e) { + var q = window.confirm( + MSG['parseError'].replace(/%1/g, 'JSON').replace('%2', e)); + if (!q) { + // Leave the user on the JSON tab. + return; + } + } + if (json) { + Blockly.serialization.workspaces.load(json, Code.workspace); + } + } + + if (document.getElementById('tab_blocks').classList.contains('tabon')) { + Code.workspace.setVisible(false); + } + // Deselect all tabs and hide all panes. + for (var i = 0; i < Code.TABS_.length; i++) { + var name = Code.TABS_[i]; + var tab = document.getElementById('tab_' + name); + tab.classList.add('taboff'); + tab.classList.remove('tabon'); + document.getElementById('content_' + name).style.visibility = 'hidden'; + } + + // Select the active tab. + Code.selected = clickedName; + var selectedTab = document.getElementById('tab_' + clickedName); + selectedTab.classList.remove('taboff'); + selectedTab.classList.add('tabon'); + // Show the selected pane. + document.getElementById('content_' + clickedName).style.visibility = + 'visible'; + Code.renderContent(); + // The code menu tab is on if the blocks tab is off. + var codeMenuTab = document.getElementById('tab_code'); + if (clickedName === 'blocks') { + Code.workspace.setVisible(true); + codeMenuTab.className = 'taboff'; + } else { + codeMenuTab.className = 'tabon'; + } + // Sync the menu's value with the clicked tab value if needed. + var codeMenu = document.getElementById('code_menu'); + for (var i = 0; i < codeMenu.options.length; i++) { + if (codeMenu.options[i].value === clickedName) { + codeMenu.selectedIndex = i; + break; + } + } + Blockly.svgResize(Code.workspace); +}; + +/** + * Populate the currently selected pane with content generated from the blocks. + */ +Code.renderContent = function() { + var content = document.getElementById('content_' + Code.selected); + // Initialize the pane. + if (content.id === 'content_xml') { + var xmlTextarea = document.getElementById('content_xml'); + var xmlDom = Blockly.Xml.workspaceToDom(Code.workspace); + var xmlText = Blockly.Xml.domToPrettyText(xmlDom); + xmlTextarea.value = xmlText; + xmlTextarea.focus(); + } else if (content.id === 'content_json') { + var jsonTextarea = document.getElementById('content_json'); + jsonTextarea.value = JSON.stringify( + Blockly.serialization.workspaces.save(Code.workspace), null, 2); + jsonTextarea.focus(); + } else if (content.id === 'content_javascript') { + Code.attemptCodeGeneration(Blockly.JavaScript); + } else if (content.id === 'content_python') { + Code.attemptCodeGeneration(Blockly.Python); + } else if (content.id === 'content_php') { + Code.attemptCodeGeneration(Blockly.PHP); + } else if (content.id === 'content_dart') { + Code.attemptCodeGeneration(Blockly.Dart); + } else if (content.id === 'content_lua') { + Code.attemptCodeGeneration(Blockly.Lua); + } + if (typeof PR === 'object') { + PR.prettyPrint(); + } +}; + +/** + * Attempt to generate the code and display it in the UI, pretty printed. + * @param generator {!Blockly.Generator} The generator to use. + */ +Code.attemptCodeGeneration = function(generator) { + var content = document.getElementById('content_' + Code.selected); + content.textContent = ''; + if (Code.checkAllGeneratorFunctionsDefined(generator)) { + var code = generator.workspaceToCode(Code.workspace); + content.textContent = code; + // Remove the 'prettyprinted' class, so that Prettify will recalculate. + content.className = content.className.replace('prettyprinted', ''); + } +}; + +/** + * Check whether all blocks in use have generator functions. + * @param generator {!Blockly.Generator} The generator to use. + */ +Code.checkAllGeneratorFunctionsDefined = function(generator) { + var blocks = Code.workspace.getAllBlocks(false); + var missingBlockGenerators = []; + for (var i = 0; i < blocks.length; i++) { + var blockType = blocks[i].type; + if (!generator[blockType]) { + if (missingBlockGenerators.indexOf(blockType) === -1) { + missingBlockGenerators.push(blockType); + } + } + } + + var valid = missingBlockGenerators.length === 0; + if (!valid) { + var msg = 'The generator code for the following blocks not specified for ' + + generator.name_ + ':\n - ' + missingBlockGenerators.join('\n - '); + Blockly.dialog.alert(msg); // Assuming synchronous. No callback. + } + return valid; +}; + +/** + * Initialize Blockly. Called on page load. + */ +Code.init = function() { + Code.initLanguage(); + + var rtl = Code.isRtl(); + var container = document.getElementById('content_area'); + var onresize = function(e) { + var bBox = Code.getBBox_(container); + for (var i = 0; i < Code.TABS_.length; i++) { + var el = document.getElementById('content_' + Code.TABS_[i]); + el.style.top = bBox.y + 'px'; + el.style.left = bBox.x + 'px'; + // Height and width need to be set, read back, then set again to + // compensate for scrollbars. + el.style.height = bBox.height + 'px'; + el.style.height = (2 * bBox.height - el.offsetHeight) + 'px'; + el.style.width = bBox.width + 'px'; + el.style.width = (2 * bBox.width - el.offsetWidth) + 'px'; + } + // Make the 'Blocks' tab line up with the toolbox. + if (Code.workspace && Code.workspace.getToolbox().width) { + document.getElementById('tab_blocks').style.minWidth = + (Code.workspace.getToolbox().width - 38) + 'px'; + // Account for the 19 pixel margin and on each side. + } + }; + window.addEventListener('resize', onresize, false); + + // The toolbox XML specifies each category name using Blockly's messaging + // format (eg. ``). + // These message keys need to be defined in `Blockly.Msg` in order to + // be decoded by the library. Therefore, we'll use the `MSG` dictionary that's + // been defined for each language to import each category name message + // into `Blockly.Msg`. + // TODO: Clean up the message files so this is done explicitly instead of + // through this for-loop. + for (var messageKey in MSG) { + if (messageKey.indexOf('cat') === 0) { + Blockly.Msg[messageKey.toUpperCase()] = MSG[messageKey]; + } + } + + // Construct the toolbox XML, replacing translated variable names. + var toolboxText = document.getElementById('toolbox').outerHTML; + toolboxText = toolboxText.replace(/(^|[^%]){(\w+)}/g, + function(m, p1, p2) {return p1 + MSG[p2];}); + var toolboxXml = Blockly.Xml.textToDom(toolboxText); + + Code.workspace = Blockly.inject('content_blocks', + {grid: + {spacing: 25, + length: 3, + colour: '#ccc', + snap: true}, + media: '../../media/', + rtl: rtl, + toolbox: toolboxXml, + zoom: + {controls: true, + wheel: true} + }); + + // Add to reserved word list: Local variables in execution environment (runJS) + // and the infinite loop detection function. + Blockly.JavaScript.addReservedWords('code,timeouts,checkTimeout'); + + Code.loadBlocks(''); + + if ('BlocklyStorage' in window) { + // Hook a save function onto unload. + BlocklyStorage.backupOnUnload(Code.workspace); + } + + Code.tabClick(Code.selected); + + Code.bindClick('trashButton', + function() {Code.discard(); Code.renderContent();}); + Code.bindClick('runButton', Code.runJS); + // Disable the link button if page isn't backed by App Engine storage. + var linkButton = document.getElementById('linkButton'); + if ('BlocklyStorage' in window) { + BlocklyStorage['HTTPREQUEST_ERROR'] = MSG['httpRequestError']; + BlocklyStorage['LINK_ALERT'] = MSG['linkAlert']; + BlocklyStorage['HASH_ERROR'] = MSG['hashError']; + BlocklyStorage['XML_ERROR'] = MSG['loadError']; + Code.bindClick(linkButton, + function() {BlocklyStorage.link(Code.workspace);}); + } else if (linkButton) { + linkButton.className = 'disabled'; + } + + for (var i = 0; i < Code.TABS_.length; i++) { + var name = Code.TABS_[i]; + Code.bindClick('tab_' + name, + function(name_) {return function() {Code.tabClick(name_);};}(name)); + } + Code.bindClick('tab_code', function(e) { + if (e.target !== document.getElementById('tab_code')) { + // Prevent clicks on child codeMenu from triggering a tab click. + return; + } + Code.changeCodingLanguage(); + }); + + onresize(); + Blockly.svgResize(Code.workspace); + + // Lazy-load the syntax-highlighting. + window.setTimeout(Code.importPrettify, 1); +}; + +/** + * Initialize the page language. + */ +Code.initLanguage = function() { + // Set the HTML's language and direction. + var rtl = Code.isRtl(); + document.dir = rtl ? 'rtl' : 'ltr'; + document.head.parentElement.setAttribute('lang', Code.LANG); + + // Sort languages alphabetically. + var languages = []; + for (var lang in Code.LANGUAGE_NAME) { + languages.push([Code.LANGUAGE_NAME[lang], lang]); + } + var comp = function(a, b) { + // Sort based on first argument ('English', 'Русский', '简体字', etc). + if (a[0] > b[0]) return 1; + if (a[0] < b[0]) return -1; + return 0; + }; + languages.sort(comp); + // Populate the language selection menu. + var languageMenu = document.getElementById('languageMenu'); + languageMenu.options.length = 0; + for (var i = 0; i < languages.length; i++) { + var tuple = languages[i]; + var lang = tuple[tuple.length - 1]; + var option = new Option(tuple[0], lang); + if (lang === Code.LANG) { + option.selected = true; + } + languageMenu.options.add(option); + } + languageMenu.addEventListener('change', Code.changeLanguage, true); + + // Populate the coding language selection menu. + var codeMenu = document.getElementById('code_menu'); + codeMenu.options.length = 0; + for (var i = 1; i < Code.TABS_.length; i++) { + codeMenu.options.add(new Option(Code.TABS_DISPLAY_[i], Code.TABS_[i])); + } + codeMenu.addEventListener('change', Code.changeCodingLanguage); + + // Inject language strings. + document.title += ' ' + MSG['title']; + document.getElementById('title').textContent = MSG['title']; + document.getElementById('tab_blocks').textContent = MSG['blocks']; + + document.getElementById('linkButton').title = MSG['linkTooltip']; + document.getElementById('runButton').title = MSG['runTooltip']; + document.getElementById('trashButton').title = MSG['trashTooltip']; +}; + +/** + * Execute the user's code. + * Just a quick and dirty eval. Catch infinite loops. + * @param {Event} event Event created from listener bound to the function. + */ +Code.runJS = function(event) { + // Prevent code from being executed twice on touchscreens. + if (event.type === 'touchend') { + event.preventDefault(); + } + + Blockly.JavaScript.INFINITE_LOOP_TRAP = 'checkTimeout();\n'; + var timeouts = 0; + var checkTimeout = function() { + if (timeouts++ > 1000000) { + throw MSG['timeout']; + } + }; + var code = Blockly.JavaScript.workspaceToCode(Code.workspace); + Blockly.JavaScript.INFINITE_LOOP_TRAP = null; + try { + eval(code); + } catch (e) { + alert(MSG['badCode'].replace('%1', e)); + } +}; + +/** + * Discard all blocks from the workspace. + */ +Code.discard = function() { + var count = Code.workspace.getAllBlocks(false).length; + if (count < 2 || + window.confirm(Blockly.Msg['DELETE_ALL_BLOCKS'].replace('%1', count))) { + Code.workspace.clear(); + if (window.location.hash) { + window.location.hash = ''; + } + } +}; + +// Load the Code demo's language strings. +document.write('\n'); +// Load Blockly's language strings. +document.write('\n'); + +window.addEventListener('load', Code.init); diff --git a/demos/code/index.html b/demos/code/index.html index a3a69bb7db9..637c0721d97 100644 --- a/demos/code/index.html +++ b/demos/code/index.html @@ -1,397 +1,397 @@ - - - - - - - Blockly Demo: - - - - - - - - - - - - - - - - - - - - - - - -
-

Blockly‏ > - Demos‏ > - ... -

-
- - Privacy -
- - - - - - - - - - - - - - - - - - - - - -
... JavaScript Python PHP Lua Dart XML JSON  - - - - - -
-
-
-
-

-  

-  

-  

-  

-  
-  
-
-  
-
-
-
+
+
+
+  
+  
+  
+  Blockly Demo:
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+
+  
+    
+      
+      
+    
+    
+      
+    
+    
+      
+    
+  
+

Blockly‏ > + Demos‏ > + ... +

+
+ + Privacy +
+ + + + + + + + + + + + + + + + + + + + + +
... JavaScript Python PHP Lua Dart XML JSON  + + + + + +
+
+
+
+

+  

+  

+  

+  

+  
+  
+
+  
+
+
+
diff --git a/demos/code/msg/ar.js b/demos/code/msg/ar.js
index 7a4521d4566..327273b597b 100644
--- a/demos/code/msg/ar.js
+++ b/demos/code/msg/ar.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "كود",
-  blocks: "البلوكات",
-  linkTooltip: "احفظ ووصلة إلى البلوكات.",
-  runTooltip: "شغل البرنامج المعرف بواسطة البلوكات في مساحة العمل.",
-  badCode: "خطأ في البرنامج:\n %1",
-  timeout: "تم تجاوز الحد الأقصى لتكرارات التنفيذ .",
-  trashTooltip: "تجاهل كل البلوكات.",
-  catLogic: "منطق",
-  catLoops: "الحلقات",
-  catMath: "رياضيات",
-  catText: "نص",
-  catLists: "قوائم",
-  catColour: "لون",
-  catVariables: "متغيرات",
-  catFunctions: "إجراءات",
-  listVariable: "قائمة",
-  textVariable: "نص",
-  httpRequestError: "كانت هناك مشكلة مع هذا الطلب.",
-  linkAlert: "مشاركة كود بلوكلي الخاص بك مع هذا الرابط:\n %1",
-  hashError: "عذراً،ال '%1' لا تتوافق مع أي برنامج تم حفظه.",
-  loadError: "تعذر تحميل الملف المحفوظة الخاصة بك.  ربما تم إنشاؤه باستخدام إصدار مختلف من بلوكلي؟",
-  parseError: "خطأ في توزيع ال \"%1\":\n %2\n\nحدد 'موافق' للتخلي عن التغييرات أو 'إلغاء الأمر' لمواصلة تحرير ال\"%1\"."
-};
+var MSG = {
+  title: "كود",
+  blocks: "البلوكات",
+  linkTooltip: "احفظ ووصلة إلى البلوكات.",
+  runTooltip: "شغل البرنامج المعرف بواسطة البلوكات في مساحة العمل.",
+  badCode: "خطأ في البرنامج:\n %1",
+  timeout: "تم تجاوز الحد الأقصى لتكرارات التنفيذ .",
+  trashTooltip: "تجاهل كل البلوكات.",
+  catLogic: "منطق",
+  catLoops: "الحلقات",
+  catMath: "رياضيات",
+  catText: "نص",
+  catLists: "قوائم",
+  catColour: "لون",
+  catVariables: "متغيرات",
+  catFunctions: "إجراءات",
+  listVariable: "قائمة",
+  textVariable: "نص",
+  httpRequestError: "كانت هناك مشكلة مع هذا الطلب.",
+  linkAlert: "مشاركة كود بلوكلي الخاص بك مع هذا الرابط:\n %1",
+  hashError: "عذراً،ال '%1' لا تتوافق مع أي برنامج تم حفظه.",
+  loadError: "تعذر تحميل الملف المحفوظة الخاصة بك.  ربما تم إنشاؤه باستخدام إصدار مختلف من بلوكلي؟",
+  parseError: "خطأ في توزيع ال \"%1\":\n %2\n\nحدد 'موافق' للتخلي عن التغييرات أو 'إلغاء الأمر' لمواصلة تحرير ال\"%1\"."
+};
diff --git a/demos/code/msg/be-tarask.js b/demos/code/msg/be-tarask.js
index 3f32173d00c..db57cbadc16 100644
--- a/demos/code/msg/be-tarask.js
+++ b/demos/code/msg/be-tarask.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Код",
-  blocks: "Блёкі",
-  linkTooltip: "Захаваць і зьвязаць з блёкамі.",
-  runTooltip: "Запусьціце праграму, вызначаную блёкамі ў працоўнай вобласьці.",
-  badCode: "Памылка праграмы:\n%1",
-  timeout: "Перавышана максымальная колькасьць ітэрацыяў.",
-  trashTooltip: "Выдаліць усе блёкі.",
-  catLogic: "Лёгіка",
-  catLoops: "Петлі",
-  catMath: "Матэматычныя формулы",
-  catText: "Тэкст",
-  catLists: "Сьпісы",
-  catColour: "Колер",
-  catVariables: "Зьменныя",
-  catFunctions: "Функцыі",
-  listVariable: "сьпіс",
-  textVariable: "тэкст",
-  httpRequestError: "Узьнікла праблема з запытам.",
-  linkAlert: "Падзяліцца Вашым блёкам праз гэтую спасылку:\n\n%1",
-  hashError: "Прабачце, '%1' не адпавядае ніводнай захаванай праграме.",
-  loadError: "Не атрымалася загрузіць захаваны файл. Магчыма, ён быў створаны з іншай вэрсіяй Блёклі?",
-  parseError: "Памылка сынтаксічнага аналізу %1:\n%2\n\nАбярыце \"ОК\", каб адмовіцца ад зьменаў ці \"Скасаваць\" для далейшага рэдагаваньня %1."
-};
+var MSG = {
+  title: "Код",
+  blocks: "Блёкі",
+  linkTooltip: "Захаваць і зьвязаць з блёкамі.",
+  runTooltip: "Запусьціце праграму, вызначаную блёкамі ў працоўнай вобласьці.",
+  badCode: "Памылка праграмы:\n%1",
+  timeout: "Перавышана максымальная колькасьць ітэрацыяў.",
+  trashTooltip: "Выдаліць усе блёкі.",
+  catLogic: "Лёгіка",
+  catLoops: "Петлі",
+  catMath: "Матэматычныя формулы",
+  catText: "Тэкст",
+  catLists: "Сьпісы",
+  catColour: "Колер",
+  catVariables: "Зьменныя",
+  catFunctions: "Функцыі",
+  listVariable: "сьпіс",
+  textVariable: "тэкст",
+  httpRequestError: "Узьнікла праблема з запытам.",
+  linkAlert: "Падзяліцца Вашым блёкам праз гэтую спасылку:\n\n%1",
+  hashError: "Прабачце, '%1' не адпавядае ніводнай захаванай праграме.",
+  loadError: "Не атрымалася загрузіць захаваны файл. Магчыма, ён быў створаны з іншай вэрсіяй Блёклі?",
+  parseError: "Памылка сынтаксічнага аналізу %1:\n%2\n\nАбярыце \"ОК\", каб адмовіцца ад зьменаў ці \"Скасаваць\" для далейшага рэдагаваньня %1."
+};
diff --git a/demos/code/msg/br.js b/demos/code/msg/br.js
index 1a283245c12..ce82d8be849 100644
--- a/demos/code/msg/br.js
+++ b/demos/code/msg/br.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kod",
-  blocks: "Bloc'hoù",
-  linkTooltip: "Enrollañ ha liammañ d'ar bloc'hadoù.",
-  runTooltip: "Lañsañ ar programm termenet gant ar bloc'hadoù en takad labour.",
-  badCode: "Fazi programm :\n%1",
-  timeout: "Tizhet eo bet an niver brasañ a iteradurioù seveniñ aotreet.",
-  trashTooltip: "Disteurel an holl vloc'hoù.",
-  catLogic: "Poell",
-  catLoops: "Boukloù",
-  catMath: "Matematik",
-  catText: "Testenn",
-  catLists: "Rolloù",
-  catColour: "Liv",
-  catVariables: "Argemmennoù",
-  catFunctions: "Arc'hwelioù",
-  listVariable: "roll",
-  textVariable: "testenn",
-  httpRequestError: "Ur gudenn zo gant ar reked.",
-  linkAlert: "Rannañ ho ploc'hoù gant al liamm-mañ :\n\n%1",
-  hashError: "Digarezit. \"%1\" ne glot gant programm enrollet ebet.",
-  loadError: "Ne c'haller ket kargañ ho restr enrollet. Marteze e oa bet krouet gant ur stumm disheñvel eus Blockly ?",
-  parseError: "Fazi dielfennañ %1 :\n%2\n\nDibabit \"Mat eo\" evit dilezel ar c'hemmoù-se pe \"Nullañ\" evit kemmañ an %1 c'hoazh."
-};
+var MSG = {
+  title: "Kod",
+  blocks: "Bloc'hoù",
+  linkTooltip: "Enrollañ ha liammañ d'ar bloc'hadoù.",
+  runTooltip: "Lañsañ ar programm termenet gant ar bloc'hadoù en takad labour.",
+  badCode: "Fazi programm :\n%1",
+  timeout: "Tizhet eo bet an niver brasañ a iteradurioù seveniñ aotreet.",
+  trashTooltip: "Disteurel an holl vloc'hoù.",
+  catLogic: "Poell",
+  catLoops: "Boukloù",
+  catMath: "Matematik",
+  catText: "Testenn",
+  catLists: "Rolloù",
+  catColour: "Liv",
+  catVariables: "Argemmennoù",
+  catFunctions: "Arc'hwelioù",
+  listVariable: "roll",
+  textVariable: "testenn",
+  httpRequestError: "Ur gudenn zo gant ar reked.",
+  linkAlert: "Rannañ ho ploc'hoù gant al liamm-mañ :\n\n%1",
+  hashError: "Digarezit. \"%1\" ne glot gant programm enrollet ebet.",
+  loadError: "Ne c'haller ket kargañ ho restr enrollet. Marteze e oa bet krouet gant ur stumm disheñvel eus Blockly ?",
+  parseError: "Fazi dielfennañ %1 :\n%2\n\nDibabit \"Mat eo\" evit dilezel ar c'hemmoù-se pe \"Nullañ\" evit kemmañ an %1 c'hoazh."
+};
diff --git a/demos/code/msg/ca.js b/demos/code/msg/ca.js
index 0ec5840508a..256b8f5eeed 100644
--- a/demos/code/msg/ca.js
+++ b/demos/code/msg/ca.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Codi",
-  blocks: "Blocs",
-  linkTooltip: "Desa i enllaça als blocs.",
-  runTooltip: "Executa el programa definit pels blocs de l'àrea de treball.",
-  badCode: "Error de programa:\n %1",
-  timeout: "S'ha superat el nombre màxim d'iteracions d'execució.",
-  trashTooltip: "Descarta tots els blocs.",
-  catLogic: "Lògica",
-  catLoops: "Bucles",
-  catMath: "Matemàtiques",
-  catText: "Text",
-  catLists: "Llistes",
-  catColour: "Color",
-  catVariables: "Variables",
-  catFunctions: "Procediments",
-  listVariable: "llista",
-  textVariable: "text",
-  httpRequestError: "Hi ha hagut un problema amb la sol·licitud.",
-  linkAlert: "Comparteix els teus blocs amb aquest enllaç: %1",
-  hashError: "Ho sentim, '%1' no es correspon amb cap fitxer desat de Blockly.",
-  loadError: "No s'ha pogut carregar el teu fitxer desat.  Potser va ser creat amb una versió diferent de Blockly?",
-  parseError: "Error d'anàlisi %1:\n%2\n\nSeleccioneu 'Acceptar' per abandonar els vostres canvis, o 'Cancel·lar' per continuar editant l'%1."
-};
+var MSG = {
+  title: "Codi",
+  blocks: "Blocs",
+  linkTooltip: "Desa i enllaça als blocs.",
+  runTooltip: "Executa el programa definit pels blocs de l'àrea de treball.",
+  badCode: "Error de programa:\n %1",
+  timeout: "S'ha superat el nombre màxim d'iteracions d'execució.",
+  trashTooltip: "Descarta tots els blocs.",
+  catLogic: "Lògica",
+  catLoops: "Bucles",
+  catMath: "Matemàtiques",
+  catText: "Text",
+  catLists: "Llistes",
+  catColour: "Color",
+  catVariables: "Variables",
+  catFunctions: "Procediments",
+  listVariable: "llista",
+  textVariable: "text",
+  httpRequestError: "Hi ha hagut un problema amb la sol·licitud.",
+  linkAlert: "Comparteix els teus blocs amb aquest enllaç: %1",
+  hashError: "Ho sentim, '%1' no es correspon amb cap fitxer desat de Blockly.",
+  loadError: "No s'ha pogut carregar el teu fitxer desat.  Potser va ser creat amb una versió diferent de Blockly?",
+  parseError: "Error d'anàlisi %1:\n%2\n\nSeleccioneu 'Acceptar' per abandonar els vostres canvis, o 'Cancel·lar' per continuar editant l'%1."
+};
diff --git a/demos/code/msg/cs.js b/demos/code/msg/cs.js
index 0cdd38bb3ff..243bed4213d 100644
--- a/demos/code/msg/cs.js
+++ b/demos/code/msg/cs.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kód",
-  blocks: "Bloky",
-  linkTooltip: "Ulož a spoj bloky..",
-  runTooltip: "",
-  badCode: "Chyba programu:\n%1",
-  timeout: "Maximum execution iterations exceeded.",
-  trashTooltip: "Zahodit všechny bloky.",
-  catLogic: "Logika",
-  catLoops: "Smyčky",
-  catMath: "Matematika",
-  catText: "Text",
-  catLists: "Seznamy",
-  catColour: "Barva",
-  catVariables: "Proměnné",
-  catFunctions: "Procedury",
-  listVariable: "seznam",
-  textVariable: "text",
-  httpRequestError: "Došlo k potížím s požadavkem.",
-  linkAlert: "Sdílej bloky tímto odkazem: \n\n%1",
-  hashError: "Omlouváme se, '%1' nesouhlasí s žádným z uložených souborů.",
-  loadError: "Nepodařilo se uložit vás soubor.  Pravděpodobně byl vytvořen jinou verzí Blockly?",
-  parseError: "Chyba parsování %1:\n%2\n\nVybrat \"OK\" pro zahození vašich změn nebo 'Cancel' k dalšímu upravování %1."
-};
+var MSG = {
+  title: "Kód",
+  blocks: "Bloky",
+  linkTooltip: "Ulož a spoj bloky..",
+  runTooltip: "",
+  badCode: "Chyba programu:\n%1",
+  timeout: "Maximum execution iterations exceeded.",
+  trashTooltip: "Zahodit všechny bloky.",
+  catLogic: "Logika",
+  catLoops: "Smyčky",
+  catMath: "Matematika",
+  catText: "Text",
+  catLists: "Seznamy",
+  catColour: "Barva",
+  catVariables: "Proměnné",
+  catFunctions: "Procedury",
+  listVariable: "seznam",
+  textVariable: "text",
+  httpRequestError: "Došlo k potížím s požadavkem.",
+  linkAlert: "Sdílej bloky tímto odkazem: \n\n%1",
+  hashError: "Omlouváme se, '%1' nesouhlasí s žádným z uložených souborů.",
+  loadError: "Nepodařilo se uložit vás soubor.  Pravděpodobně byl vytvořen jinou verzí Blockly?",
+  parseError: "Chyba parsování %1:\n%2\n\nVybrat \"OK\" pro zahození vašich změn nebo 'Cancel' k dalšímu upravování %1."
+};
diff --git a/demos/code/msg/da.js b/demos/code/msg/da.js
index 0b2493be34c..995995fb190 100644
--- a/demos/code/msg/da.js
+++ b/demos/code/msg/da.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kode",
-  blocks: "Blokke",
-  linkTooltip: "Gem og link til blokke.",
-  runTooltip: "Kør programmet, der er defineret af blokkene i arbejdsområdet.",
-  badCode: "Programfejl:\n%1",
-  timeout: "Maksimale antal udførelsesgentagelser overskredet.",
-  trashTooltip: "Kassér alle blokke.",
-  catLogic: "Logik",
-  catLoops: "Løkker",
-  catMath: "Matematik",
-  catText: "Tekst",
-  catLists: "Lister",
-  catColour: "Farve",
-  catVariables: "Variabler",
-  catFunctions: "Funktioner",
-  listVariable: "liste",
-  textVariable: "tekst",
-  httpRequestError: "Der var et problem med forespørgslen.",
-  linkAlert: "Del dine blokke med dette link:\n\n%1",
-  hashError: "Beklager, '%1' passer ikke med nogen gemt Blockly fil.",
-  loadError: "Kunne ikke hente din gemte fil.  Måske er den lavet med en anden udgave af Blockly?",
-  parseError: "Fejl under fortolkningen af %1:\n%2\n\nVælg 'OK' for at opgive dine ændringer eller 'Afbryd' for at redigere %1-filen yderligere."
-};
+var MSG = {
+  title: "Kode",
+  blocks: "Blokke",
+  linkTooltip: "Gem og link til blokke.",
+  runTooltip: "Kør programmet, der er defineret af blokkene i arbejdsområdet.",
+  badCode: "Programfejl:\n%1",
+  timeout: "Maksimale antal udførelsesgentagelser overskredet.",
+  trashTooltip: "Kassér alle blokke.",
+  catLogic: "Logik",
+  catLoops: "Løkker",
+  catMath: "Matematik",
+  catText: "Tekst",
+  catLists: "Lister",
+  catColour: "Farve",
+  catVariables: "Variabler",
+  catFunctions: "Funktioner",
+  listVariable: "liste",
+  textVariable: "tekst",
+  httpRequestError: "Der var et problem med forespørgslen.",
+  linkAlert: "Del dine blokke med dette link:\n\n%1",
+  hashError: "Beklager, '%1' passer ikke med nogen gemt Blockly fil.",
+  loadError: "Kunne ikke hente din gemte fil.  Måske er den lavet med en anden udgave af Blockly?",
+  parseError: "Fejl under fortolkningen af %1:\n%2\n\nVælg 'OK' for at opgive dine ændringer eller 'Afbryd' for at redigere %1-filen yderligere."
+};
diff --git a/demos/code/msg/de.js b/demos/code/msg/de.js
index bc2f3bee850..2d2ddab3532 100644
--- a/demos/code/msg/de.js
+++ b/demos/code/msg/de.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Code",
-  blocks: "Bausteine",
-  linkTooltip: "Speichern und auf Bausteine verlinken.",
-  runTooltip: "Das Programm ausführen, das von den Bausteinen im Arbeitsbereich definiert ist.",
-  badCode: "Programmfehler:\n%1",
-  timeout: "Die maximalen Ausführungswiederholungen wurden überschritten.",
-  trashTooltip: "Alle Bausteine verwerfen.",
-  catLogic: "Logik",
-  catLoops: "Schleifen",
-  catMath: "Mathematik",
-  catText: "Text",
-  catLists: "Listen",
-  catColour: "Farbe",
-  catVariables: "Variablen",
-  catFunctions: "Funktionen",
-  listVariable: "Liste",
-  textVariable: "Text",
-  httpRequestError: "Mit der Anfrage gab es ein Problem.",
-  linkAlert: "Teile deine Bausteine mit diesem Link:\n\n%1",
-  hashError: "„%1“ stimmt leider mit keinem gespeicherten Programm überein.",
-  loadError: "Deine gespeicherte Datei konnte nicht geladen werden. Vielleicht wurde sie mit einer anderen Version von Blockly erstellt.",
-  parseError: "Fehler beim Parsen von %1:\n%2\n\nWähle 'OK' zum Verwerfen deiner Änderungen oder 'Abbrechen' zum weiteren Bearbeiten des %1."
-};
+var MSG = {
+  title: "Code",
+  blocks: "Bausteine",
+  linkTooltip: "Speichern und auf Bausteine verlinken.",
+  runTooltip: "Das Programm ausführen, das von den Bausteinen im Arbeitsbereich definiert ist.",
+  badCode: "Programmfehler:\n%1",
+  timeout: "Die maximalen Ausführungswiederholungen wurden überschritten.",
+  trashTooltip: "Alle Bausteine verwerfen.",
+  catLogic: "Logik",
+  catLoops: "Schleifen",
+  catMath: "Mathematik",
+  catText: "Text",
+  catLists: "Listen",
+  catColour: "Farbe",
+  catVariables: "Variablen",
+  catFunctions: "Funktionen",
+  listVariable: "Liste",
+  textVariable: "Text",
+  httpRequestError: "Mit der Anfrage gab es ein Problem.",
+  linkAlert: "Teile deine Bausteine mit diesem Link:\n\n%1",
+  hashError: "„%1“ stimmt leider mit keinem gespeicherten Programm überein.",
+  loadError: "Deine gespeicherte Datei konnte nicht geladen werden. Vielleicht wurde sie mit einer anderen Version von Blockly erstellt.",
+  parseError: "Fehler beim Parsen von %1:\n%2\n\nWähle 'OK' zum Verwerfen deiner Änderungen oder 'Abbrechen' zum weiteren Bearbeiten des %1."
+};
diff --git a/demos/code/msg/el.js b/demos/code/msg/el.js
index ad5b3f15cb1..0ec692810c5 100644
--- a/demos/code/msg/el.js
+++ b/demos/code/msg/el.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Κώδικας",
-  blocks: "Μπλοκ",
-  linkTooltip: "Αποθηκεύει και συνδέει σε μπλοκ.",
-  runTooltip: "Εκτελεί το πρόγραμμα που ορίζεται από τα μπλοκ στον χώρο εργασίας.",
-  badCode: "Σφάλμα προγράμματος:\n%1",
-  timeout: "Υπέρβαση μέγιστου αριθμού επαναλήψεων.",
-  trashTooltip: "Απόρριψη όλων των μπλοκ.",
-  catLogic: "Λογική",
-  catLoops: "Επαναλήψεις",
-  catMath: "Μαθηματικά",
-  catText: "Κείμενο",
-  catLists: "Λίστες",
-  catColour: "Χρώμα",
-  catVariables: "Μεταβλητές",
-  catFunctions: "Συναρτήσεις",
-  listVariable: "λίστα",
-  textVariable: "κείμενο",
-  httpRequestError: "Υπήρξε πρόβλημα με το αίτημα.",
-  linkAlert: "Κοινοποίησε τα μπλοκ σου με αυτόν τον σύνδεσμο:\n\n%1",
-  hashError: "Λυπάμαι, το «%1» δεν αντιστοιχεί σε κανένα αποθηκευμένο πρόγραμμα.",
-  loadError: "Δεν μπορώ να φορτώσω το αποθηκευμένο αρχείο σου.  Μήπως δημιουργήθηκε από μία παλιότερη έκδοση του Blockly;",
-  parseError: "Σφάλμα ανάλυσης %1:\n%2\n\nΕπίλεξε «Εντάξει» για να εγκαταλείψεις τις αλλαγές σου ή «Ακύρωση» για να επεξεργαστείς το %1 κι άλλο."
-};
+var MSG = {
+  title: "Κώδικας",
+  blocks: "Μπλοκ",
+  linkTooltip: "Αποθηκεύει και συνδέει σε μπλοκ.",
+  runTooltip: "Εκτελεί το πρόγραμμα που ορίζεται από τα μπλοκ στον χώρο εργασίας.",
+  badCode: "Σφάλμα προγράμματος:\n%1",
+  timeout: "Υπέρβαση μέγιστου αριθμού επαναλήψεων.",
+  trashTooltip: "Απόρριψη όλων των μπλοκ.",
+  catLogic: "Λογική",
+  catLoops: "Επαναλήψεις",
+  catMath: "Μαθηματικά",
+  catText: "Κείμενο",
+  catLists: "Λίστες",
+  catColour: "Χρώμα",
+  catVariables: "Μεταβλητές",
+  catFunctions: "Συναρτήσεις",
+  listVariable: "λίστα",
+  textVariable: "κείμενο",
+  httpRequestError: "Υπήρξε πρόβλημα με το αίτημα.",
+  linkAlert: "Κοινοποίησε τα μπλοκ σου με αυτόν τον σύνδεσμο:\n\n%1",
+  hashError: "Λυπάμαι, το «%1» δεν αντιστοιχεί σε κανένα αποθηκευμένο πρόγραμμα.",
+  loadError: "Δεν μπορώ να φορτώσω το αποθηκευμένο αρχείο σου.  Μήπως δημιουργήθηκε από μία παλιότερη έκδοση του Blockly;",
+  parseError: "Σφάλμα ανάλυσης %1:\n%2\n\nΕπίλεξε «Εντάξει» για να εγκαταλείψεις τις αλλαγές σου ή «Ακύρωση» για να επεξεργαστείς το %1 κι άλλο."
+};
diff --git a/demos/code/msg/en.js b/demos/code/msg/en.js
index 212ea17a2de..5b89280a6df 100644
--- a/demos/code/msg/en.js
+++ b/demos/code/msg/en.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Code",
-  blocks: "Blocks",
-  linkTooltip: "Save and link to blocks.",
-  runTooltip: "Run the program defined by the blocks in the workspace.",
-  badCode: "Program error:\n%1",
-  timeout: "Maximum execution iterations exceeded.",
-  trashTooltip: "Discard all blocks.",
-  catLogic: "Logic",
-  catLoops: "Loops",
-  catMath: "Math",
-  catText: "Text",
-  catLists: "Lists",
-  catColour: "Colour",
-  catVariables: "Variables",
-  catFunctions: "Functions",
-  listVariable: "list",
-  textVariable: "text",
-  httpRequestError: "There was a problem with the request.",
-  linkAlert: "Share your blocks with this public link. We\'ll delete them if not used for a year. They are not associated with your account and handled as per Google\'s Privacy Policy. Please be sure not to include any private information.\n\n%1",
-  hashError: "Sorry, '%1' doesn't correspond with any saved program.",
-  loadError: "Could not load your saved file. Perhaps it was created with a different version of Blockly?",
-  parseError: "Error parsing %1:\n%2\n\nSelect 'OK' to abandon your changes or 'Cancel' to further edit the %1."
-};
+var MSG = {
+  title: "Code",
+  blocks: "Blocks",
+  linkTooltip: "Save and link to blocks.",
+  runTooltip: "Run the program defined by the blocks in the workspace.",
+  badCode: "Program error:\n%1",
+  timeout: "Maximum execution iterations exceeded.",
+  trashTooltip: "Discard all blocks.",
+  catLogic: "Logic",
+  catLoops: "Loops",
+  catMath: "Math",
+  catText: "Text",
+  catLists: "Lists",
+  catColour: "Colour",
+  catVariables: "Variables",
+  catFunctions: "Functions",
+  listVariable: "list",
+  textVariable: "text",
+  httpRequestError: "There was a problem with the request.",
+  linkAlert: "Share your blocks with this public link. We\'ll delete them if not used for a year. They are not associated with your account and handled as per Google\'s Privacy Policy. Please be sure not to include any private information.\n\n%1",
+  hashError: "Sorry, '%1' doesn't correspond with any saved program.",
+  loadError: "Could not load your saved file. Perhaps it was created with a different version of Blockly?",
+  parseError: "Error parsing %1:\n%2\n\nSelect 'OK' to abandon your changes or 'Cancel' to further edit the %1."
+};
diff --git a/demos/code/msg/es.js b/demos/code/msg/es.js
index 7b9b9995a47..ac70b364da6 100644
--- a/demos/code/msg/es.js
+++ b/demos/code/msg/es.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Código",
-  blocks: "Bloques",
-  linkTooltip: "Guarda conexión a los bloques.",
-  runTooltip: "Ejecute el programa definido por los bloques en el área de trabajo.",
-  badCode: "Error del programa:\n%1",
-  timeout: "Se excedio el máximo de iteraciones ejecutadas permitidas.",
-  trashTooltip: "Descartar todos los bloques.",
-  catLogic: "Lógica",
-  catLoops: "Secuencias",
-  catMath: "Matemáticas",
-  catText: "Texto",
-  catLists: "Listas",
-  catColour: "Color",
-  catVariables: "Variables",
-  catFunctions: "Funciones",
-  listVariable: "lista",
-  textVariable: "texto",
-  httpRequestError: "Hubo un problema con la petición.",
-  linkAlert: "Comparte tus bloques con este enlace:\n\n%1",
-  hashError: "«%1» no corresponde con ningún programa guardado.",
-  loadError: "No se pudo cargar el archivo guardado.  ¿Quizá fue creado con otra versión de Blockly?",
-  parseError: "Error de análisis %1:\n%2\n\nSelecciona OK para abandonar tus cambios o Cancelar para seguir editando el %1."
-};
+var MSG = {
+  title: "Código",
+  blocks: "Bloques",
+  linkTooltip: "Guarda conexión a los bloques.",
+  runTooltip: "Ejecute el programa definido por los bloques en el área de trabajo.",
+  badCode: "Error del programa:\n%1",
+  timeout: "Se excedio el máximo de iteraciones ejecutadas permitidas.",
+  trashTooltip: "Descartar todos los bloques.",
+  catLogic: "Lógica",
+  catLoops: "Secuencias",
+  catMath: "Matemáticas",
+  catText: "Texto",
+  catLists: "Listas",
+  catColour: "Color",
+  catVariables: "Variables",
+  catFunctions: "Funciones",
+  listVariable: "lista",
+  textVariable: "texto",
+  httpRequestError: "Hubo un problema con la petición.",
+  linkAlert: "Comparte tus bloques con este enlace:\n\n%1",
+  hashError: "«%1» no corresponde con ningún programa guardado.",
+  loadError: "No se pudo cargar el archivo guardado.  ¿Quizá fue creado con otra versión de Blockly?",
+  parseError: "Error de análisis %1:\n%2\n\nSelecciona OK para abandonar tus cambios o Cancelar para seguir editando el %1."
+};
diff --git a/demos/code/msg/et.js b/demos/code/msg/et.js
index 3437925cd27..ff017ef550c 100644
--- a/demos/code/msg/et.js
+++ b/demos/code/msg/et.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kood",
-  blocks: "Plokid",
-  linkTooltip: "Salvesta ja tekita link plokkidele.",
-  runTooltip: "Käivita töölaual olevate plokkidega defineeritud programm.",
-  badCode: "Viga programmis:\n%1",
-  timeout: "Käivitatavate iteratsioonide maksimaalne arv on ületatud.",
-  trashTooltip: "Eemalda kõik plokid.",
-  catLogic: "Loogika",
-  catLoops: "Kordus",
-  catMath: "Matemaatika",
-  catText: "Tekst",
-  catLists: "Loendid",
-  catColour: "Värv",
-  catVariables: "Muutujad",
-  catFunctions: "Funktsioonid",
-  listVariable: "loend",
-  textVariable: "tekst",
-  httpRequestError: "Probleem päringuga.",
-  linkAlert: "Oma plokke saad jagada selle lingiga:\n\n%1",
-  hashError: "Vabandust, kuid '%1' ei vasta ühelegi salvestatud programmile.",
-  loadError: "Su salvestatud faili ei õnnestunud laadida. Võibolla on see loodud mõne teise Blockly versiooniga?",
-  parseError: "Viga %1-i parsimisel:\n%2\n\nTehtud muudatustest loobumiseks vajuta 'OK', %1-i muudatuste tegemise jätkamiseks 'Katkesta'."
-};
+var MSG = {
+  title: "Kood",
+  blocks: "Plokid",
+  linkTooltip: "Salvesta ja tekita link plokkidele.",
+  runTooltip: "Käivita töölaual olevate plokkidega defineeritud programm.",
+  badCode: "Viga programmis:\n%1",
+  timeout: "Käivitatavate iteratsioonide maksimaalne arv on ületatud.",
+  trashTooltip: "Eemalda kõik plokid.",
+  catLogic: "Loogika",
+  catLoops: "Kordus",
+  catMath: "Matemaatika",
+  catText: "Tekst",
+  catLists: "Loendid",
+  catColour: "Värv",
+  catVariables: "Muutujad",
+  catFunctions: "Funktsioonid",
+  listVariable: "loend",
+  textVariable: "tekst",
+  httpRequestError: "Probleem päringuga.",
+  linkAlert: "Oma plokke saad jagada selle lingiga:\n\n%1",
+  hashError: "Vabandust, kuid '%1' ei vasta ühelegi salvestatud programmile.",
+  loadError: "Su salvestatud faili ei õnnestunud laadida. Võibolla on see loodud mõne teise Blockly versiooniga?",
+  parseError: "Viga %1-i parsimisel:\n%2\n\nTehtud muudatustest loobumiseks vajuta 'OK', %1-i muudatuste tegemise jätkamiseks 'Katkesta'."
+};
diff --git a/demos/code/msg/fa.js b/demos/code/msg/fa.js
index 1376cfa58e6..3b965a7485a 100644
--- a/demos/code/msg/fa.js
+++ b/demos/code/msg/fa.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "کد",
-  blocks: "بلوک‌ها",
-  linkTooltip: "ذخیره و پیوند به بلوک‌ها.",
-  runTooltip: "اجرای برنامهٔ تعریف‌شده توسط بلوک‌ها در فضای کار.",
-  badCode: "خطای برنامه:\n%1",
-  timeout: "حداکثر تکرارهای اجرا رد شده‌است.",
-  trashTooltip: "دورریختن همهٔ بلوک‌ها.",
-  catLogic: "منطق",
-  catLoops: "حلقه‌ها",
-  catMath: "ریاضی",
-  catText: "متن",
-  catLists: "فهرست‌ها",
-  catColour: "رنگ",
-  catVariables: "متغییرها",
-  catFunctions: "توابع",
-  listVariable: "فهرست",
-  textVariable: "متن",
-  httpRequestError: "مشکلی با درخواست وجود داشت.",
-  linkAlert: "اشتراک‌گذاری بلاک‌هایتان با این پیوند:\n\n%1",
-  hashError: "شرمنده، «%1» با هیچ برنامهٔ ذخیره‌شده‌ای تطبیق پیدا نکرد.",
-  loadError: "نتوانست پروندهٔ ذخیرهٔ شما بارگیری شود.  احتمالاً با نسخهٔ متفاوتی از بلوکی درست شده‌است؟",
-  parseError: "خطای تجزیهٔ اکس‌ام‌ال:\n%2\n\n«باشد» را برای ذخیره و «فسخ» را برای ویرایش بیشتر اکس‌ام‌ال انتخاب کنید."
-};
+var MSG = {
+  title: "کد",
+  blocks: "بلوک‌ها",
+  linkTooltip: "ذخیره و پیوند به بلوک‌ها.",
+  runTooltip: "اجرای برنامهٔ تعریف‌شده توسط بلوک‌ها در فضای کار.",
+  badCode: "خطای برنامه:\n%1",
+  timeout: "حداکثر تکرارهای اجرا رد شده‌است.",
+  trashTooltip: "دورریختن همهٔ بلوک‌ها.",
+  catLogic: "منطق",
+  catLoops: "حلقه‌ها",
+  catMath: "ریاضی",
+  catText: "متن",
+  catLists: "فهرست‌ها",
+  catColour: "رنگ",
+  catVariables: "متغییرها",
+  catFunctions: "توابع",
+  listVariable: "فهرست",
+  textVariable: "متن",
+  httpRequestError: "مشکلی با درخواست وجود داشت.",
+  linkAlert: "اشتراک‌گذاری بلاک‌هایتان با این پیوند:\n\n%1",
+  hashError: "شرمنده، «%1» با هیچ برنامهٔ ذخیره‌شده‌ای تطبیق پیدا نکرد.",
+  loadError: "نتوانست پروندهٔ ذخیرهٔ شما بارگیری شود.  احتمالاً با نسخهٔ متفاوتی از بلوکی درست شده‌است؟",
+  parseError: "خطای تجزیهٔ اکس‌ام‌ال:\n%2\n\n«باشد» را برای ذخیره و «فسخ» را برای ویرایش بیشتر اکس‌ام‌ال انتخاب کنید."
+};
diff --git a/demos/code/msg/fr.js b/demos/code/msg/fr.js
index d98d386bbf3..5fa6cf15339 100644
--- a/demos/code/msg/fr.js
+++ b/demos/code/msg/fr.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Code",
-  blocks: "Blocs",
-  linkTooltip: "Sauvegarder et lier aux blocs.",
-  runTooltip: "Lancer le programme défini par les blocs dans l’espace de travail.",
-  badCode: "Erreur du programme :\n%1",
-  timeout: "Nombre maximum d’itérations d’exécution dépassé.",
-  trashTooltip: "Jeter tous les blocs.",
-  catLogic: "Logique",
-  catLoops: "Boucles",
-  catMath: "Math",
-  catText: "Texte",
-  catLists: "Listes",
-  catColour: "Couleur",
-  catVariables: "Variables",
-  catFunctions: "Fonctions",
-  listVariable: "liste",
-  textVariable: "texte",
-  httpRequestError: "Il y a eu un problème avec la demande.",
-  linkAlert: "Partagez vos blocs grâce à ce lien:\n\n%1",
-  hashError: "Désolé, '%1' ne correspond à aucun programme sauvegardé.",
-  loadError: "Impossible de charger le fichier de sauvegarde.  Peut être a t-il été créé avec une autre version de Blockly?",
-  parseError: "Erreur d’analyse du %1 :\n%2\n\nSélectionner 'OK' pour abandonner vos modifications ou 'Annuler' pour continuer à modifier le %1."
-};
+var MSG = {
+  title: "Code",
+  blocks: "Blocs",
+  linkTooltip: "Sauvegarder et lier aux blocs.",
+  runTooltip: "Lancer le programme défini par les blocs dans l’espace de travail.",
+  badCode: "Erreur du programme :\n%1",
+  timeout: "Nombre maximum d’itérations d’exécution dépassé.",
+  trashTooltip: "Jeter tous les blocs.",
+  catLogic: "Logique",
+  catLoops: "Boucles",
+  catMath: "Math",
+  catText: "Texte",
+  catLists: "Listes",
+  catColour: "Couleur",
+  catVariables: "Variables",
+  catFunctions: "Fonctions",
+  listVariable: "liste",
+  textVariable: "texte",
+  httpRequestError: "Il y a eu un problème avec la demande.",
+  linkAlert: "Partagez vos blocs grâce à ce lien:\n\n%1",
+  hashError: "Désolé, '%1' ne correspond à aucun programme sauvegardé.",
+  loadError: "Impossible de charger le fichier de sauvegarde.  Peut être a t-il été créé avec une autre version de Blockly?",
+  parseError: "Erreur d’analyse du %1 :\n%2\n\nSélectionner 'OK' pour abandonner vos modifications ou 'Annuler' pour continuer à modifier le %1."
+};
diff --git a/demos/code/msg/he.js b/demos/code/msg/he.js
index c12f28ad627..241f426493f 100644
--- a/demos/code/msg/he.js
+++ b/demos/code/msg/he.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "קוד",
-  blocks: "קטעי קוד",
-  linkTooltip: "שמירה וקישור לקטעי קוד.",
-  runTooltip: "הרצת התכנית שהוגדרה על ידי קטעי הקוד שבמרחב העבודה.",
-  badCode: "שגיאה בתכנית: %1",
-  timeout: "חריגה ממספר פעולות חוזרות אפשריות.",
-  trashTooltip: "השלך את כל קטעי הקוד.",
-  catLogic: "לוגיקה",
-  catLoops: "לולאות",
-  catMath: "מתמטיקה",
-  catText: "טקסט",
-  catLists: "רשימות",
-  catColour: "צבע",
-  catVariables: "משתנים",
-  catFunctions: "פונקציות",
-  listVariable: "רשימה",
-  textVariable: "טקסט",
-  httpRequestError: "הבקשה נכשלה.",
-  linkAlert: "ניתן לשתף את קטעי הקוד שלך באמצעות קישור זה:\n\n%1",
-  hashError: "לצערנו, '%1' איננו מתאים לאף אחת מהתוכניות השמורות",
-  loadError: "נסיון הטעינה של הקובץ השמור שלך נכשל. האם ייתכן שהוא נוצר בגרסא שונה של בלוקלי?",
-  parseError: "תקלה בפענוח %1:\n\n%2\n\nנא לבחור 'אישור' כדי לנטוש את השינויים שלך או 'ביטול' כדי להמשיך ולערוך את ה־%1."
-};
+var MSG = {
+  title: "קוד",
+  blocks: "קטעי קוד",
+  linkTooltip: "שמירה וקישור לקטעי קוד.",
+  runTooltip: "הרצת התכנית שהוגדרה על ידי קטעי הקוד שבמרחב העבודה.",
+  badCode: "שגיאה בתכנית: %1",
+  timeout: "חריגה ממספר פעולות חוזרות אפשריות.",
+  trashTooltip: "השלך את כל קטעי הקוד.",
+  catLogic: "לוגיקה",
+  catLoops: "לולאות",
+  catMath: "מתמטיקה",
+  catText: "טקסט",
+  catLists: "רשימות",
+  catColour: "צבע",
+  catVariables: "משתנים",
+  catFunctions: "פונקציות",
+  listVariable: "רשימה",
+  textVariable: "טקסט",
+  httpRequestError: "הבקשה נכשלה.",
+  linkAlert: "ניתן לשתף את קטעי הקוד שלך באמצעות קישור זה:\n\n%1",
+  hashError: "לצערנו, '%1' איננו מתאים לאף אחת מהתוכניות השמורות",
+  loadError: "נסיון הטעינה של הקובץ השמור שלך נכשל. האם ייתכן שהוא נוצר בגרסא שונה של בלוקלי?",
+  parseError: "תקלה בפענוח %1:\n\n%2\n\nנא לבחור 'אישור' כדי לנטוש את השינויים שלך או 'ביטול' כדי להמשיך ולערוך את ה־%1."
+};
diff --git a/demos/code/msg/hrx.js b/demos/code/msg/hrx.js
index deda3cd20e6..b8fc7f3ed43 100644
--- a/demos/code/msg/hrx.js
+++ b/demos/code/msg/hrx.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Code",
-  blocks: "Bausten",
-  linkTooltip: "Speichre und auf Bausten verlinke.",
-  runTooltip: "Das Programm ausfüahre, das von den Bausten im Oorweitsbereich definiert ist.",
-  badCode: "Programmfehler:\n%1",
-  timeout: "Die maximale Ausführungswiederholunge woore üwerschritt.",
-  trashTooltip: "All Bausten verwerfe.",
-  catLogic: "Logik",
-  catLoops: "Schleife",
-  catMath: "Mathematik",
-  catText: "Text",
-  catLists: "Liste",
-  catColour: "Farreb",
-  catVariables: "Variable",
-  catFunctions: "Funktione",
-  listVariable: "List",
-  textVariable: "Text",
-  httpRequestError: "Mit der Oonfroch hots en Problem geb.",
-  linkAlert: "Tel von dein Bausten mit dem Link:\n\n%1",
-  hashError: "„%1“ stimmt leider mit kenem üweren gespeicherte Programm.",
-  loadError: "Dein gespeicherte Datei könnt net gelood sin. Vielleicht woard se mit ener annre Version von Blockly erstellt.",
-  parseError: "Fehler beim Parse von %1:\n%2\n\nWähle 'OK' zum Verwerfe von deiner Ändrunge orrer 'Abbreche' zum %1 weiter beoorbeite."
-};
+var MSG = {
+  title: "Code",
+  blocks: "Bausten",
+  linkTooltip: "Speichre und auf Bausten verlinke.",
+  runTooltip: "Das Programm ausfüahre, das von den Bausten im Oorweitsbereich definiert ist.",
+  badCode: "Programmfehler:\n%1",
+  timeout: "Die maximale Ausführungswiederholunge woore üwerschritt.",
+  trashTooltip: "All Bausten verwerfe.",
+  catLogic: "Logik",
+  catLoops: "Schleife",
+  catMath: "Mathematik",
+  catText: "Text",
+  catLists: "Liste",
+  catColour: "Farreb",
+  catVariables: "Variable",
+  catFunctions: "Funktione",
+  listVariable: "List",
+  textVariable: "Text",
+  httpRequestError: "Mit der Oonfroch hots en Problem geb.",
+  linkAlert: "Tel von dein Bausten mit dem Link:\n\n%1",
+  hashError: "„%1“ stimmt leider mit kenem üweren gespeicherte Programm.",
+  loadError: "Dein gespeicherte Datei könnt net gelood sin. Vielleicht woard se mit ener annre Version von Blockly erstellt.",
+  parseError: "Fehler beim Parse von %1:\n%2\n\nWähle 'OK' zum Verwerfe von deiner Ändrunge orrer 'Abbreche' zum %1 weiter beoorbeite."
+};
diff --git a/demos/code/msg/hu.js b/demos/code/msg/hu.js
index 4575a4965c3..43126259751 100644
--- a/demos/code/msg/hu.js
+++ b/demos/code/msg/hu.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kódszerkesztő",
-  blocks: "Blokkok",
-  linkTooltip: "Hivatkozás létrehozása",
-  runTooltip: "Program futtatása.",
-  badCode: "Program hiba:\n%1",
-  timeout: "A program elérte a maximális végrehajtási időt.",
-  trashTooltip: "Összes blokk törlése.",
-  catLogic: "Logikai műveletek",
-  catLoops: "Ciklusok",
-  catMath: "Matematikai műveletek",
-  catText: "Sztring műveletek",
-  catLists: "Listakezelés",
-  catColour: "Színek",
-  catVariables: "Változók",
-  catFunctions: "Eljárások",
-  listVariable: "lista",
-  textVariable: "szöveg",
-  httpRequestError: "A kéréssel kapcsolatban probléma merült fel.",
-  linkAlert: "Ezzel a hivatkozással tudod megosztani a programodat:\n\n%1",
-  hashError: "Sajnos a '%1' hivatkozás nem tartozik egyetlen programhoz sem.",
-  loadError: "A programodat nem lehet betölteni.  Elképzelhető, hogy a Blockly egy másik verziójában készült?",
-  parseError: "Hiba az %1 feldolgozásakor:\n%2\n\nVáltozások elvetése?"
-};
+var MSG = {
+  title: "Kódszerkesztő",
+  blocks: "Blokkok",
+  linkTooltip: "Hivatkozás létrehozása",
+  runTooltip: "Program futtatása.",
+  badCode: "Program hiba:\n%1",
+  timeout: "A program elérte a maximális végrehajtási időt.",
+  trashTooltip: "Összes blokk törlése.",
+  catLogic: "Logikai műveletek",
+  catLoops: "Ciklusok",
+  catMath: "Matematikai műveletek",
+  catText: "Sztring műveletek",
+  catLists: "Listakezelés",
+  catColour: "Színek",
+  catVariables: "Változók",
+  catFunctions: "Eljárások",
+  listVariable: "lista",
+  textVariable: "szöveg",
+  httpRequestError: "A kéréssel kapcsolatban probléma merült fel.",
+  linkAlert: "Ezzel a hivatkozással tudod megosztani a programodat:\n\n%1",
+  hashError: "Sajnos a '%1' hivatkozás nem tartozik egyetlen programhoz sem.",
+  loadError: "A programodat nem lehet betölteni.  Elképzelhető, hogy a Blockly egy másik verziójában készült?",
+  parseError: "Hiba az %1 feldolgozásakor:\n%2\n\nVáltozások elvetése?"
+};
diff --git a/demos/code/msg/ia.js b/demos/code/msg/ia.js
index 30ff227204e..6c091eaf0c0 100644
--- a/demos/code/msg/ia.js
+++ b/demos/code/msg/ia.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Codice",
-  blocks: "Blocos",
-  linkTooltip: "Salveguardar e ligar a blocos.",
-  runTooltip: "Executar le programma definite per le blocos in le spatio de travalio.",
-  badCode: "Error del programma:\n%1",
-  timeout: "Le numero de iterationes executate ha excedite le maximo.",
-  trashTooltip: "Abandonar tote le blocos.",
-  catLogic: "Logica",
-  catLoops: "Buclas",
-  catMath: "Mathematica",
-  catText: "Texto",
-  catLists: "Listas",
-  catColour: "Color",
-  catVariables: "Variabiles",
-  catFunctions: "Functiones",
-  listVariable: "lista",
-  textVariable: "texto",
-  httpRequestError: "Il habeva un problema con le requesta.",
-  linkAlert: "Divide tu blocos con iste ligamine:\n\n%1",
-  hashError: "Infelicemente, '%1' non corresponde a alcun programma salveguardate.",
-  loadError: "Impossibile cargar le file salveguardate. Pote esser que illo ha essite create con un altere version de Blockly?",
-  parseError: "Error de analyse del %1:\n%2\n\nSelige 'OK' pro abandonar le modificationes o 'Cancellar' pro continuar a modificar le codice %1."
-};
+var MSG = {
+  title: "Codice",
+  blocks: "Blocos",
+  linkTooltip: "Salveguardar e ligar a blocos.",
+  runTooltip: "Executar le programma definite per le blocos in le spatio de travalio.",
+  badCode: "Error del programma:\n%1",
+  timeout: "Le numero de iterationes executate ha excedite le maximo.",
+  trashTooltip: "Abandonar tote le blocos.",
+  catLogic: "Logica",
+  catLoops: "Buclas",
+  catMath: "Mathematica",
+  catText: "Texto",
+  catLists: "Listas",
+  catColour: "Color",
+  catVariables: "Variabiles",
+  catFunctions: "Functiones",
+  listVariable: "lista",
+  textVariable: "texto",
+  httpRequestError: "Il habeva un problema con le requesta.",
+  linkAlert: "Divide tu blocos con iste ligamine:\n\n%1",
+  hashError: "Infelicemente, '%1' non corresponde a alcun programma salveguardate.",
+  loadError: "Impossibile cargar le file salveguardate. Pote esser que illo ha essite create con un altere version de Blockly?",
+  parseError: "Error de analyse del %1:\n%2\n\nSelige 'OK' pro abandonar le modificationes o 'Cancellar' pro continuar a modificar le codice %1."
+};
diff --git a/demos/code/msg/is.js b/demos/code/msg/is.js
index ba79df697c8..3258f77388e 100644
--- a/demos/code/msg/is.js
+++ b/demos/code/msg/is.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kóði",
-  blocks: "Kubbar",
-  linkTooltip: "Vista og tengja við kubba.",
-  runTooltip: "Keyra forritið sem kubbarnir á vinnusvæðinu mynda.",
-  badCode: "Villa í forriti:\n%1",
-  timeout: "Forritið hefur endurtekið sig of oft.",
-  trashTooltip: "Fleygja öllum kubbum.",
-  catLogic: "Rökvísi",
-  catLoops: "Lykkjur",
-  catMath: "Reikningur",
-  catText: "Texti",
-  catLists: "Listar",
-  catColour: "Litir",
-  catVariables: "Breytur",
-  catFunctions: "Stefjur",
-  listVariable: "listi",
-  textVariable: "texti",
-  httpRequestError: "Það kom upp vandamál með beiðnina.",
-  linkAlert: "Deildu kubbunum þínum með þessari krækju:",
-  hashError: "Því miður, '%1' passar ekki við neitt vistað forrit.",
-  loadError: "Gat ekki hlaðið vistuðu skrána þína. Var hún kannske búin til í annarri útgáfu af Blockly?",
-  parseError: "Villa við úrvinnslu %1:\n%2\n\nVeldu 'Í lagi' til að sleppa breytingum eða 'Hætta við' til að halda áfram með %1."
-};
+var MSG = {
+  title: "Kóði",
+  blocks: "Kubbar",
+  linkTooltip: "Vista og tengja við kubba.",
+  runTooltip: "Keyra forritið sem kubbarnir á vinnusvæðinu mynda.",
+  badCode: "Villa í forriti:\n%1",
+  timeout: "Forritið hefur endurtekið sig of oft.",
+  trashTooltip: "Fleygja öllum kubbum.",
+  catLogic: "Rökvísi",
+  catLoops: "Lykkjur",
+  catMath: "Reikningur",
+  catText: "Texti",
+  catLists: "Listar",
+  catColour: "Litir",
+  catVariables: "Breytur",
+  catFunctions: "Stefjur",
+  listVariable: "listi",
+  textVariable: "texti",
+  httpRequestError: "Það kom upp vandamál með beiðnina.",
+  linkAlert: "Deildu kubbunum þínum með þessari krækju:",
+  hashError: "Því miður, '%1' passar ekki við neitt vistað forrit.",
+  loadError: "Gat ekki hlaðið vistuðu skrána þína. Var hún kannske búin til í annarri útgáfu af Blockly?",
+  parseError: "Villa við úrvinnslu %1:\n%2\n\nVeldu 'Í lagi' til að sleppa breytingum eða 'Hætta við' til að halda áfram með %1."
+};
diff --git a/demos/code/msg/it.js b/demos/code/msg/it.js
index e9def2a19a5..79d4a25b269 100644
--- a/demos/code/msg/it.js
+++ b/demos/code/msg/it.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Codice",
-  blocks: "Blocchi",
-  linkTooltip: "Salva e collega ai blocchi.",
-  runTooltip: "Esegui il programma definito dai blocchi nell'area di lavoro.",
-  badCode: "Errore programma:\n%1",
-  timeout: "È stato superato il numero massimo consentito di interazioni eseguite.",
-  trashTooltip: "Elimina tutti i blocchi.",
-  catLogic: "Logica",
-  catLoops: "Cicli",
-  catMath: "Matematica",
-  catText: "Testo",
-  catLists: "Elenchi",
-  catColour: "Colore",
-  catVariables: "Variabili",
-  catFunctions: "Funzioni",
-  listVariable: "elenco",
-  textVariable: "testo",
-  httpRequestError: "La richiesta non è stata soddisfatta.",
-  linkAlert: "Condividi i tuoi blocchi con questo collegamento:\n\n%1",
-  hashError: "Mi spiace, '%1' non corrisponde ad alcun programma salvato.",
-  loadError: "Non è stato possibile caricare il documento.  Forse è stato creato con una versione diversa di Blockly?",
-  parseError: "Errore durante l'analisi %1:\n%2\n\nSeleziona 'OK' per abbandonare le modifiche o 'Annulla' per continuare a modificare l'%1."
-};
+var MSG = {
+  title: "Codice",
+  blocks: "Blocchi",
+  linkTooltip: "Salva e collega ai blocchi.",
+  runTooltip: "Esegui il programma definito dai blocchi nell'area di lavoro.",
+  badCode: "Errore programma:\n%1",
+  timeout: "È stato superato il numero massimo consentito di interazioni eseguite.",
+  trashTooltip: "Elimina tutti i blocchi.",
+  catLogic: "Logica",
+  catLoops: "Cicli",
+  catMath: "Matematica",
+  catText: "Testo",
+  catLists: "Elenchi",
+  catColour: "Colore",
+  catVariables: "Variabili",
+  catFunctions: "Funzioni",
+  listVariable: "elenco",
+  textVariable: "testo",
+  httpRequestError: "La richiesta non è stata soddisfatta.",
+  linkAlert: "Condividi i tuoi blocchi con questo collegamento:\n\n%1",
+  hashError: "Mi spiace, '%1' non corrisponde ad alcun programma salvato.",
+  loadError: "Non è stato possibile caricare il documento.  Forse è stato creato con una versione diversa di Blockly?",
+  parseError: "Errore durante l'analisi %1:\n%2\n\nSeleziona 'OK' per abbandonare le modifiche o 'Annulla' per continuare a modificare l'%1."
+};
diff --git a/demos/code/msg/ja.js b/demos/code/msg/ja.js
index 44beb3bdb23..536e8a64683 100644
--- a/demos/code/msg/ja.js
+++ b/demos/code/msg/ja.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "コード",
-  blocks: "ブロック",
-  linkTooltip: "ブロックの状態を保存してリンクを取得します。",
-  runTooltip: "ブロックで作成したプログラムを実行します。",
-  badCode: "プログラムのエラー:\n%1",
-  timeout: "命令の実行回数が制限値を超えました。",
-  trashTooltip: "すべてのブロックを消します。",
-  catLogic: "論理",
-  catLoops: "繰り返し",
-  catMath: "数学",
-  catText: "テキスト",
-  catLists: "リスト",
-  catColour: "色",
-  catVariables: "変数",
-  catFunctions: "関数",
-  listVariable: "リスト",
-  textVariable: "テキスト",
-  httpRequestError: "ネットワーク接続のエラーです。",
-  linkAlert: "ブロックの状態をこのリンクで共有できます:\n\n%1",
-  hashError: "すみません。「%1」という名前のプログラムは保存されていません。",
-  loadError: "保存されたファイルを読み込めませんでした。別のバージョンのブロックリーで作成された可能性があります。",
-  parseError: "%1 のエラーです:\n%2\n\n%1 の変更をやめるには「OK」、編集を続けるには「キャンセル」を選んでください。"
-};
+var MSG = {
+  title: "コード",
+  blocks: "ブロック",
+  linkTooltip: "ブロックの状態を保存してリンクを取得します。",
+  runTooltip: "ブロックで作成したプログラムを実行します。",
+  badCode: "プログラムのエラー:\n%1",
+  timeout: "命令の実行回数が制限値を超えました。",
+  trashTooltip: "すべてのブロックを消します。",
+  catLogic: "論理",
+  catLoops: "繰り返し",
+  catMath: "数学",
+  catText: "テキスト",
+  catLists: "リスト",
+  catColour: "色",
+  catVariables: "変数",
+  catFunctions: "関数",
+  listVariable: "リスト",
+  textVariable: "テキスト",
+  httpRequestError: "ネットワーク接続のエラーです。",
+  linkAlert: "ブロックの状態をこのリンクで共有できます:\n\n%1",
+  hashError: "すみません。「%1」という名前のプログラムは保存されていません。",
+  loadError: "保存されたファイルを読み込めませんでした。別のバージョンのブロックリーで作成された可能性があります。",
+  parseError: "%1 のエラーです:\n%2\n\n%1 の変更をやめるには「OK」、編集を続けるには「キャンセル」を選んでください。"
+};
diff --git a/demos/code/msg/kab.js b/demos/code/msg/kab.js
index 621442e07c4..9121546c442 100644
--- a/demos/code/msg/kab.js
+++ b/demos/code/msg/kab.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Tangalt",
-  blocks: "Iḥedran",
-  linkTooltip: "Sekles sakin cudd ar iḥedran.",
-  runTooltip: "Senker ahil i d-sbadun iḥedran di tallunt n umahil.",
-  badCode: "Tuccḍa deg ahil :\n%1",
-  timeout: "Amḍan afellay n wallusen n uselkem iɛeddan.",
-  trashTooltip: "Ḍeggeṛ akk iḥedran.",
-  catLogic: "Tameẓla",
-  catLoops: "Tineddicin",
-  catMath: "Tusnakt",
-  catText: "Aḍris",
-  catLists: "Tibdarin",
-  catColour: "Ini",
-  catVariables: "Imuttiyen",
-  catFunctions: "Tiwiriwin",
-  listVariable: "tabdart",
-  textVariable: "aḍris",
-  httpRequestError: "yella ugur deg usuter.",
-  linkAlert: "Bḍu iḥedran-ik s useqdec n useɣwen-agi:\n\n%1",
-  hashError: "Suref-aɣ, '%1' ur imenṭaḍ ulad d yiwen n wahil yettwaskelsen.",
-  loadError: "Ur izmir ara ad d-isali afaylu  n usekles. Ahatyettwarna s lqem-nniḍen n Blockly?",
-  parseError: "Tuccḍa di tesleḍt n %1 :\n%2\n\nFren 'IH' akken ad tzgleḍ asnifel-ik 'Sefsex' akken ad tkemmleḍ asnifel n %1."
-};
+var MSG = {
+  title: "Tangalt",
+  blocks: "Iḥedran",
+  linkTooltip: "Sekles sakin cudd ar iḥedran.",
+  runTooltip: "Senker ahil i d-sbadun iḥedran di tallunt n umahil.",
+  badCode: "Tuccḍa deg ahil :\n%1",
+  timeout: "Amḍan afellay n wallusen n uselkem iɛeddan.",
+  trashTooltip: "Ḍeggeṛ akk iḥedran.",
+  catLogic: "Tameẓla",
+  catLoops: "Tineddicin",
+  catMath: "Tusnakt",
+  catText: "Aḍris",
+  catLists: "Tibdarin",
+  catColour: "Ini",
+  catVariables: "Imuttiyen",
+  catFunctions: "Tiwiriwin",
+  listVariable: "tabdart",
+  textVariable: "aḍris",
+  httpRequestError: "yella ugur deg usuter.",
+  linkAlert: "Bḍu iḥedran-ik s useqdec n useɣwen-agi:\n\n%1",
+  hashError: "Suref-aɣ, '%1' ur imenṭaḍ ulad d yiwen n wahil yettwaskelsen.",
+  loadError: "Ur izmir ara ad d-isali afaylu  n usekles. Ahatyettwarna s lqem-nniḍen n Blockly?",
+  parseError: "Tuccḍa di tesleḍt n %1 :\n%2\n\nFren 'IH' akken ad tzgleḍ asnifel-ik 'Sefsex' akken ad tkemmleḍ asnifel n %1."
+};
diff --git a/demos/code/msg/ko.js b/demos/code/msg/ko.js
index 2daf0c9ad79..1f231218ed5 100644
--- a/demos/code/msg/ko.js
+++ b/demos/code/msg/ko.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "코드",
-  blocks: "블록",
-  linkTooltip: "블록을 저장하고 링크를 가져옵니다.",
-  runTooltip: "작업 공간에서 블록으로 정의된 프로그램을 실행합니다.",
-  badCode: "프로그램 오류:\n%1",
-  timeout: "최대 실행 반복을 초과했습니다.",
-  trashTooltip: "모든 블록을 버립니다.",
-  catLogic: "논리",
-  catLoops: "반복",
-  catMath: "수학",
-  catText: "텍스트",
-  catLists: "목록",
-  catColour: "색",
-  catVariables: "변수",
-  catFunctions: "기능",
-  listVariable: "목록",
-  textVariable: "텍스트",
-  httpRequestError: "요청에 문제가 있습니다.",
-  linkAlert: "다음 링크로 블록을 공유하세요:\n\n%1",
-  hashError: "죄송하지만 '%1'은 어떤 저장된 프로그램으로 일치하지 않습니다.",
-  loadError: "저장된 파일을 불러올 수 없습니다. 혹시 블록리의 다른 버전으로 만들었습니까?",
-  parseError: "%1 구문 분석 오류:\n%2\n\n바뀜을 포기하려면 '확인'을 선택하고 %1을 더 편집하려면 '취소'를 선택하세요."
-};
+var MSG = {
+  title: "코드",
+  blocks: "블록",
+  linkTooltip: "블록을 저장하고 링크를 가져옵니다.",
+  runTooltip: "작업 공간에서 블록으로 정의된 프로그램을 실행합니다.",
+  badCode: "프로그램 오류:\n%1",
+  timeout: "최대 실행 반복을 초과했습니다.",
+  trashTooltip: "모든 블록을 버립니다.",
+  catLogic: "논리",
+  catLoops: "반복",
+  catMath: "수학",
+  catText: "텍스트",
+  catLists: "목록",
+  catColour: "색",
+  catVariables: "변수",
+  catFunctions: "기능",
+  listVariable: "목록",
+  textVariable: "텍스트",
+  httpRequestError: "요청에 문제가 있습니다.",
+  linkAlert: "다음 링크로 블록을 공유하세요:\n\n%1",
+  hashError: "죄송하지만 '%1'은 어떤 저장된 프로그램으로 일치하지 않습니다.",
+  loadError: "저장된 파일을 불러올 수 없습니다. 혹시 블록리의 다른 버전으로 만들었습니까?",
+  parseError: "%1 구문 분석 오류:\n%2\n\n바뀜을 포기하려면 '확인'을 선택하고 %1을 더 편집하려면 '취소'를 선택하세요."
+};
diff --git a/demos/code/msg/mk.js b/demos/code/msg/mk.js
index 905f5032a55..39f0b4c55b2 100644
--- a/demos/code/msg/mk.js
+++ b/demos/code/msg/mk.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Код",
-  blocks: "Блокчиња",
-  linkTooltip: "Зачувај и стави врска до блокчињата.",
-  runTooltip: "Пушти го програмот определен од блокчињата во работниот простор.",
-  badCode: "Грешка во програмот:\n%1",
-  timeout: "Го надминавте допуштениот број на повторувања во извршувањето.",
-  trashTooltip: "Отстрани ги сите блокчиња.",
-  catLogic: "Логика",
-  catLoops: "Јамки",
-  catMath: "Математика",
-  catText: "Текст",
-  catLists: "Списоци",
-  catColour: "Боја",
-  catVariables: "Променливи",
-  catFunctions: "Функции",
-  listVariable: "список",
-  textVariable: "текст",
-  httpRequestError: "Се појави проблем во барањето.",
-  linkAlert: "Споделете ги вашите блокчиња со оваа врска:\n\n%1",
-  hashError: "„%1“ не одговара на ниеден зачуван програм.",
-  loadError: "Не можев да ја вчитам зачуваната податотека. Да не сте ја создале со друга верзија на Blockly?",
-  parseError: "Грешка при расчленувањето на %1:\n%2\n\nСтиснете на „ОК“ за да ги напуштите промените или на „Откажи“ ако сакате уште да ја уредувате %1-податотеката."
-};
+var MSG = {
+  title: "Код",
+  blocks: "Блокчиња",
+  linkTooltip: "Зачувај и стави врска до блокчињата.",
+  runTooltip: "Пушти го програмот определен од блокчињата во работниот простор.",
+  badCode: "Грешка во програмот:\n%1",
+  timeout: "Го надминавте допуштениот број на повторувања во извршувањето.",
+  trashTooltip: "Отстрани ги сите блокчиња.",
+  catLogic: "Логика",
+  catLoops: "Јамки",
+  catMath: "Математика",
+  catText: "Текст",
+  catLists: "Списоци",
+  catColour: "Боја",
+  catVariables: "Променливи",
+  catFunctions: "Функции",
+  listVariable: "список",
+  textVariable: "текст",
+  httpRequestError: "Се појави проблем во барањето.",
+  linkAlert: "Споделете ги вашите блокчиња со оваа врска:\n\n%1",
+  hashError: "„%1“ не одговара на ниеден зачуван програм.",
+  loadError: "Не можев да ја вчитам зачуваната податотека. Да не сте ја создале со друга верзија на Blockly?",
+  parseError: "Грешка при расчленувањето на %1:\n%2\n\nСтиснете на „ОК“ за да ги напуштите промените или на „Откажи“ ако сакате уште да ја уредувате %1-податотеката."
+};
diff --git a/demos/code/msg/ms.js b/demos/code/msg/ms.js
index d369fd6b44e..07fc07afc9a 100644
--- a/demos/code/msg/ms.js
+++ b/demos/code/msg/ms.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kod",
-  blocks: "Blok",
-  linkTooltip: "Simpan dan pautkan kepada blok.",
-  runTooltip: "Jalankan aturcara yang ditetapkan oleh blok-blok di dalam ruang kerja.",
-  badCode: "Ralat aturcara:\n%1",
-  timeout: "Takat maksimum lelaran pelaksanaan dicecah.",
-  trashTooltip: "Buang semua Blok.",
-  catLogic: "Logik",
-  catLoops: "Gelung",
-  catMath: "Matematik",
-  catText: "Teks",
-  catLists: "Senarai",
-  catColour: "Warna",
-  catVariables: "Pemboleh ubah",
-  catFunctions: "Fungsi",
-  listVariable: "senarai",
-  textVariable: "teks",
-  httpRequestError: "Permintaan itu terdapat masalah.",
-  linkAlert: "Kongsikan blok-blok anda dengan pautan ini:\n\n%1",
-  hashError: "Maaf, '%1' tidak berpadanan dengan sebarang aturcara yang disimpan.",
-  loadError: "Fail simpanan anda tidak dapat dimuatkan. Jangan-jangan ia dicipta dengan versi Blockly yang berlainan?",
-  parseError: "Ralat ketika menghuraikan %1:\n%2\n\nPilih 'OK' untuk melucutkan suntingan anda atau 'Batal' untuk bersambung menyunting %1-nya."
-};
+var MSG = {
+  title: "Kod",
+  blocks: "Blok",
+  linkTooltip: "Simpan dan pautkan kepada blok.",
+  runTooltip: "Jalankan aturcara yang ditetapkan oleh blok-blok di dalam ruang kerja.",
+  badCode: "Ralat aturcara:\n%1",
+  timeout: "Takat maksimum lelaran pelaksanaan dicecah.",
+  trashTooltip: "Buang semua Blok.",
+  catLogic: "Logik",
+  catLoops: "Gelung",
+  catMath: "Matematik",
+  catText: "Teks",
+  catLists: "Senarai",
+  catColour: "Warna",
+  catVariables: "Pemboleh ubah",
+  catFunctions: "Fungsi",
+  listVariable: "senarai",
+  textVariable: "teks",
+  httpRequestError: "Permintaan itu terdapat masalah.",
+  linkAlert: "Kongsikan blok-blok anda dengan pautan ini:\n\n%1",
+  hashError: "Maaf, '%1' tidak berpadanan dengan sebarang aturcara yang disimpan.",
+  loadError: "Fail simpanan anda tidak dapat dimuatkan. Jangan-jangan ia dicipta dengan versi Blockly yang berlainan?",
+  parseError: "Ralat ketika menghuraikan %1:\n%2\n\nPilih 'OK' untuk melucutkan suntingan anda atau 'Batal' untuk bersambung menyunting %1-nya."
+};
diff --git a/demos/code/msg/nb.js b/demos/code/msg/nb.js
index 5eb2219aea9..bd90bd92011 100644
--- a/demos/code/msg/nb.js
+++ b/demos/code/msg/nb.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kode",
-  blocks: "Blokker",
-  linkTooltip: "Lagre og lenke til blokker.",
-  runTooltip: "Kjør programmet definert av blokken i arbeidsområdet.",
-  badCode: "Programfeil:\n%1",
-  timeout: "Det maksimale antallet utførte looper er oversteget.",
-  trashTooltip: "Fjern alle blokker",
-  catLogic: "Logikk",
-  catLoops: "Looper",
-  catMath: "Matte",
-  catText: "Tekst",
-  catLists: "Lister",
-  catColour: "Farge",
-  catVariables: "Variabler",
-  catFunctions: "Funksjoner",
-  listVariable: "Liste",
-  textVariable: "Tekst",
-  httpRequestError: "Det oppsto et problem med forespørselen din",
-  linkAlert: "Del dine blokker med denne lenken:\n\n%1",
-  hashError: "Beklager, '%1' samsvarer ikke med noe lagret program.",
-  loadError: "Kunne ikke laste inn filen. Kanskje den ble laget med en annen versjon av Blockly?",
-  parseError: "Feil ved parsering av %1:\n%2\n\nVelg 'OK' for å avbryte endringene eller 'Cancel' for å fortsette å redigere %1-koden."
-};
+var MSG = {
+  title: "Kode",
+  blocks: "Blokker",
+  linkTooltip: "Lagre og lenke til blokker.",
+  runTooltip: "Kjør programmet definert av blokken i arbeidsområdet.",
+  badCode: "Programfeil:\n%1",
+  timeout: "Det maksimale antallet utførte looper er oversteget.",
+  trashTooltip: "Fjern alle blokker",
+  catLogic: "Logikk",
+  catLoops: "Looper",
+  catMath: "Matte",
+  catText: "Tekst",
+  catLists: "Lister",
+  catColour: "Farge",
+  catVariables: "Variabler",
+  catFunctions: "Funksjoner",
+  listVariable: "Liste",
+  textVariable: "Tekst",
+  httpRequestError: "Det oppsto et problem med forespørselen din",
+  linkAlert: "Del dine blokker med denne lenken:\n\n%1",
+  hashError: "Beklager, '%1' samsvarer ikke med noe lagret program.",
+  loadError: "Kunne ikke laste inn filen. Kanskje den ble laget med en annen versjon av Blockly?",
+  parseError: "Feil ved parsering av %1:\n%2\n\nVelg 'OK' for å avbryte endringene eller 'Cancel' for å fortsette å redigere %1-koden."
+};
diff --git a/demos/code/msg/nl.js b/demos/code/msg/nl.js
index 00308231029..a0226771033 100644
--- a/demos/code/msg/nl.js
+++ b/demos/code/msg/nl.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Code",
-  blocks: "Blokken",
-  linkTooltip: "Opslaan en koppelen naar blokken.",
-  runTooltip: "Voer het programma uit dat met de blokken in de werkruimte is gemaakt.",
-  badCode: "Programmafout:\n%1",
-  timeout: "Het maximale aantal iteraties is overschreden.",
-  trashTooltip: "Alle blokken verwijderen",
-  catLogic: "Logica",
-  catLoops: "Lussen",
-  catMath: "Formules",
-  catText: "Tekst",
-  catLists: "Lijsten",
-  catColour: "Kleur",
-  catVariables: "Variabelen",
-  catFunctions: "Functies",
-  listVariable: "lijst",
-  textVariable: "tekst",
-  httpRequestError: "Er is een probleem opgetreden tijdens het verwerken van het verzoek.",
-  linkAlert: "Deel uw blokken via deze koppeling:\n\n%1",
-  hashError: "\"%1\" komt helaas niet overeen met een opgeslagen bestand.",
-  loadError: "Uw opgeslagen bestand kan niet geladen worden. Is het misschien gemaakt met een andere versie van Blockly?",
-  parseError: "Fout tijdens het verwerken van de %1:\n%2\n\nSelecteer \"OK\" om uw wijzigingen te negeren of \"Annuleren\" om de %1 verder te bewerken."
-};
+var MSG = {
+  title: "Code",
+  blocks: "Blokken",
+  linkTooltip: "Opslaan en koppelen naar blokken.",
+  runTooltip: "Voer het programma uit dat met de blokken in de werkruimte is gemaakt.",
+  badCode: "Programmafout:\n%1",
+  timeout: "Het maximale aantal iteraties is overschreden.",
+  trashTooltip: "Alle blokken verwijderen",
+  catLogic: "Logica",
+  catLoops: "Lussen",
+  catMath: "Formules",
+  catText: "Tekst",
+  catLists: "Lijsten",
+  catColour: "Kleur",
+  catVariables: "Variabelen",
+  catFunctions: "Functies",
+  listVariable: "lijst",
+  textVariable: "tekst",
+  httpRequestError: "Er is een probleem opgetreden tijdens het verwerken van het verzoek.",
+  linkAlert: "Deel uw blokken via deze koppeling:\n\n%1",
+  hashError: "\"%1\" komt helaas niet overeen met een opgeslagen bestand.",
+  loadError: "Uw opgeslagen bestand kan niet geladen worden. Is het misschien gemaakt met een andere versie van Blockly?",
+  parseError: "Fout tijdens het verwerken van de %1:\n%2\n\nSelecteer \"OK\" om uw wijzigingen te negeren of \"Annuleren\" om de %1 verder te bewerken."
+};
diff --git a/demos/code/msg/oc.js b/demos/code/msg/oc.js
index 35c89581db4..d461aa2d9c6 100644
--- a/demos/code/msg/oc.js
+++ b/demos/code/msg/oc.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Còde",
-  blocks: "Blòts",
-  linkTooltip: "Salva e liga als blòts.",
-  runTooltip: "Aviar lo programa definit pels blòts dins l’espaci de trabalh.",
-  badCode: "Error del programa :\n%1",
-  timeout: "Nombre maximum d’iteracions d’execucion depassat.",
-  trashTooltip: "Getar totes los blòts.",
-  catLogic: "Logic",
-  catLoops: "Boclas",
-  catMath: "Math",
-  catText: "Tèxte",
-  catLists: "Listas",
-  catColour: "Color",
-  catVariables: "Variablas",
-  catFunctions: "Foncions",
-  listVariable: "lista",
-  textVariable: "tèxte",
-  httpRequestError: "I a agut un problèma amb la demanda.",
-  linkAlert: "Partejatz vòstres blòts gràcia a aqueste ligam :\n\n%1",
-  hashError: "O planhèm, '%1' correspond pas a un fichièr Blockly salvament.",
-  loadError: "Impossible de cargar lo fichièr de salvament.  Benlèu qu'es estat creat amb una autra version de Blockly ?",
-  parseError: "Error d’analisi del %1 :\n%2\n\nSeleccionar 'D'acòrdi' per abandonar vòstras modificacions o 'Anullar' per modificar encara lo %1."
-};
+var MSG = {
+  title: "Còde",
+  blocks: "Blòts",
+  linkTooltip: "Salva e liga als blòts.",
+  runTooltip: "Aviar lo programa definit pels blòts dins l’espaci de trabalh.",
+  badCode: "Error del programa :\n%1",
+  timeout: "Nombre maximum d’iteracions d’execucion depassat.",
+  trashTooltip: "Getar totes los blòts.",
+  catLogic: "Logic",
+  catLoops: "Boclas",
+  catMath: "Math",
+  catText: "Tèxte",
+  catLists: "Listas",
+  catColour: "Color",
+  catVariables: "Variablas",
+  catFunctions: "Foncions",
+  listVariable: "lista",
+  textVariable: "tèxte",
+  httpRequestError: "I a agut un problèma amb la demanda.",
+  linkAlert: "Partejatz vòstres blòts gràcia a aqueste ligam :\n\n%1",
+  hashError: "O planhèm, '%1' correspond pas a un fichièr Blockly salvament.",
+  loadError: "Impossible de cargar lo fichièr de salvament.  Benlèu qu'es estat creat amb una autra version de Blockly ?",
+  parseError: "Error d’analisi del %1 :\n%2\n\nSeleccionar 'D'acòrdi' per abandonar vòstras modificacions o 'Anullar' per modificar encara lo %1."
+};
diff --git a/demos/code/msg/pl.js b/demos/code/msg/pl.js
index ade2b76cd36..5617a9ff412 100644
--- a/demos/code/msg/pl.js
+++ b/demos/code/msg/pl.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kod",
-  blocks: "Bloki",
-  linkTooltip: "Zapisz i podlinkuj do bloków",
-  runTooltip: "Uruchom program zdefinowany przez bloki w obszarze roboczym",
-  badCode: "Błąd programu:\n%1",
-  timeout: "Maksymalna liczba iteracji wykonywań przekroczona",
-  trashTooltip: "Odrzuć wszystkie bloki.",
-  catLogic: "Logika",
-  catLoops: "Pętle",
-  catMath: "Matematyka",
-  catText: "Tekst",
-  catLists: "Listy",
-  catColour: "Kolor",
-  catVariables: "Zmienne",
-  catFunctions: "Funkcje",
-  listVariable: "lista",
-  textVariable: "tekst",
-  httpRequestError: "Wystąpił problem z żądaniem.",
-  linkAlert: "Udpostępnij swoje bloki korzystając z poniższego linku : \n\n\n%1",
-  hashError: "Przepraszamy, \"%1\" nie odpowiada żadnemu zapisanemu programowi.",
-  loadError: "Nie można załadować zapisanego pliku. Być może został utworzony za pomocą innej wersji Blockly?",
-  parseError: "Błąd parsowania %1 : \n%2\n\nZaznacz 'OK' aby odrzucić twoje zmiany lub 'Cancel', żeby w przyszłości edytować %1."
-};
+var MSG = {
+  title: "Kod",
+  blocks: "Bloki",
+  linkTooltip: "Zapisz i podlinkuj do bloków",
+  runTooltip: "Uruchom program zdefinowany przez bloki w obszarze roboczym",
+  badCode: "Błąd programu:\n%1",
+  timeout: "Maksymalna liczba iteracji wykonywań przekroczona",
+  trashTooltip: "Odrzuć wszystkie bloki.",
+  catLogic: "Logika",
+  catLoops: "Pętle",
+  catMath: "Matematyka",
+  catText: "Tekst",
+  catLists: "Listy",
+  catColour: "Kolor",
+  catVariables: "Zmienne",
+  catFunctions: "Funkcje",
+  listVariable: "lista",
+  textVariable: "tekst",
+  httpRequestError: "Wystąpił problem z żądaniem.",
+  linkAlert: "Udpostępnij swoje bloki korzystając z poniższego linku : \n\n\n%1",
+  hashError: "Przepraszamy, \"%1\" nie odpowiada żadnemu zapisanemu programowi.",
+  loadError: "Nie można załadować zapisanego pliku. Być może został utworzony za pomocą innej wersji Blockly?",
+  parseError: "Błąd parsowania %1 : \n%2\n\nZaznacz 'OK' aby odrzucić twoje zmiany lub 'Cancel', żeby w przyszłości edytować %1."
+};
diff --git a/demos/code/msg/pms.js b/demos/code/msg/pms.js
index f60be55d982..e283c2d3c34 100644
--- a/demos/code/msg/pms.js
+++ b/demos/code/msg/pms.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Còdes",
-  blocks: "Blòch",
-  linkTooltip: "Argistré e lijé ai blòch.",
-  runTooltip: "Fé andé ël programa definì dai blòch ant lë spassi ëd travaj.",
-  badCode: "Eror dël programa:\n%1",
-  timeout: "Nùmer màssim d'arpetission d'esecussion sorpassà.",
-  trashTooltip: "Scarté tuti ij blòch.",
-  catLogic: "Lògica",
-  catLoops: "Liasse",
-  catMath: "Matemàtica",
-  catText: "Test",
-  catLists: "Liste",
-  catColour: "Color",
-  catVariables: "Variàbij",
-  catFunctions: "Fonsion",
-  listVariable: "lista",
-  textVariable: "test",
-  httpRequestError: "A-i é staje un problema con l'arcesta.",
-  linkAlert: "Ch'a partagia ij sò blòch grassie a sta liura: %1",
-  hashError: "An dëspias, '%1 a corëspond a gnun programa salvà.",
-  loadError: "A l'é nen podusse carié so archivi salvà. Miraco a l'é stàit creà con na version diferenta ëd Blockly?",
-  parseError: "Eror d'anàlisi dl'%1:\n%2\n\nSelessioné 'Va bin' për lassé perde toe modìfiche o 'Anulé' për modifiché ancora l'%1."
-};
+var MSG = {
+  title: "Còdes",
+  blocks: "Blòch",
+  linkTooltip: "Argistré e lijé ai blòch.",
+  runTooltip: "Fé andé ël programa definì dai blòch ant lë spassi ëd travaj.",
+  badCode: "Eror dël programa:\n%1",
+  timeout: "Nùmer màssim d'arpetission d'esecussion sorpassà.",
+  trashTooltip: "Scarté tuti ij blòch.",
+  catLogic: "Lògica",
+  catLoops: "Liasse",
+  catMath: "Matemàtica",
+  catText: "Test",
+  catLists: "Liste",
+  catColour: "Color",
+  catVariables: "Variàbij",
+  catFunctions: "Fonsion",
+  listVariable: "lista",
+  textVariable: "test",
+  httpRequestError: "A-i é staje un problema con l'arcesta.",
+  linkAlert: "Ch'a partagia ij sò blòch grassie a sta liura: %1",
+  hashError: "An dëspias, '%1 a corëspond a gnun programa salvà.",
+  loadError: "A l'é nen podusse carié so archivi salvà. Miraco a l'é stàit creà con na version diferenta ëd Blockly?",
+  parseError: "Eror d'anàlisi dl'%1:\n%2\n\nSelessioné 'Va bin' për lassé perde toe modìfiche o 'Anulé' për modifiché ancora l'%1."
+};
diff --git a/demos/code/msg/pt-br.js b/demos/code/msg/pt-br.js
index 68d54dadb41..eab8c7a7801 100644
--- a/demos/code/msg/pt-br.js
+++ b/demos/code/msg/pt-br.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Código",
-  blocks: "Blocos",
-  linkTooltip: "Salvar e ligar aos blocos.",
-  runTooltip: "Execute o programa definido pelos blocos na área de trabalho.",
-  badCode: "Erro no programa:\n%1",
-  timeout: "Máximo de iterações de execução excedido.",
-  trashTooltip: "Descartar todos os blocos.",
-  catLogic: "Lógica",
-  catLoops: "Laços",
-  catMath: "Matemática",
-  catText: "Texto",
-  catLists: "Listas",
-  catColour: "Cor",
-  catVariables: "Variáveis",
-  catFunctions: "Funções",
-  listVariable: "lista",
-  textVariable: "texto",
-  httpRequestError: "Houve um problema com a requisição.",
-  linkAlert: "Compartilhe seus blocos com este link:\n\n%1",
-  hashError: "Desculpe, '%1' não corresponde a um programa salvo.",
-  loadError: "Não foi possível carregar seu arquivo salvo. Talvez ele tenha sido criado com uma versão diferente do Blockly?",
-  parseError: "Erro de análise %1:\n%2\n\nSelecione 'OK' para abandonar suas mudanças ou 'Cancelar' para editar o %1."
-};
+var MSG = {
+  title: "Código",
+  blocks: "Blocos",
+  linkTooltip: "Salvar e ligar aos blocos.",
+  runTooltip: "Execute o programa definido pelos blocos na área de trabalho.",
+  badCode: "Erro no programa:\n%1",
+  timeout: "Máximo de iterações de execução excedido.",
+  trashTooltip: "Descartar todos os blocos.",
+  catLogic: "Lógica",
+  catLoops: "Laços",
+  catMath: "Matemática",
+  catText: "Texto",
+  catLists: "Listas",
+  catColour: "Cor",
+  catVariables: "Variáveis",
+  catFunctions: "Funções",
+  listVariable: "lista",
+  textVariable: "texto",
+  httpRequestError: "Houve um problema com a requisição.",
+  linkAlert: "Compartilhe seus blocos com este link:\n\n%1",
+  hashError: "Desculpe, '%1' não corresponde a um programa salvo.",
+  loadError: "Não foi possível carregar seu arquivo salvo. Talvez ele tenha sido criado com uma versão diferente do Blockly?",
+  parseError: "Erro de análise %1:\n%2\n\nSelecione 'OK' para abandonar suas mudanças ou 'Cancelar' para editar o %1."
+};
diff --git a/demos/code/msg/ro.js b/demos/code/msg/ro.js
index e6ab7be82fa..0ca8bee7d45 100644
--- a/demos/code/msg/ro.js
+++ b/demos/code/msg/ro.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Cod",
-  blocks: "Blocuri",
-  linkTooltip: "Salvează și adaugă la blocuri.",
-  runTooltip: "Execută programul definit de către blocuri în spațiul de lucru.",
-  badCode: "Eroare de program:\n%1",
-  timeout: "Numărul maxim de iterații a fost depășit.",
-  trashTooltip: "Șterge toate blocurile.",
-  catLogic: "Logic",
-  catLoops: "Bucle",
-  catMath: "Matematică",
-  catText: "Text",
-  catLists: "Liste",
-  catColour: "Culoare",
-  catVariables: "Variabile",
-  catFunctions: "Funcții",
-  listVariable: "listă",
-  textVariable: "text",
-  httpRequestError: "A apărut o problemă la solicitare.",
-  linkAlert: "Distribuie-ți blocurile folosind această legătură:\n\n%1",
-  hashError: "Scuze, „%1” nu corespunde nici unui program salvat.",
-  loadError: "Sistemul nu a putut încărca fișierul salvat. Poate că a fost creat cu o altă versiune de Blockly?",
-  parseError: "Eroare de parsare %1:\n%2\n\nAlege „OK” pentru a renunța la modificările efectuate sau „Revocare” pentru a modifica în continuare fișierul %1."
-};
+var MSG = {
+  title: "Cod",
+  blocks: "Blocuri",
+  linkTooltip: "Salvează și adaugă la blocuri.",
+  runTooltip: "Execută programul definit de către blocuri în spațiul de lucru.",
+  badCode: "Eroare de program:\n%1",
+  timeout: "Numărul maxim de iterații a fost depășit.",
+  trashTooltip: "Șterge toate blocurile.",
+  catLogic: "Logic",
+  catLoops: "Bucle",
+  catMath: "Matematică",
+  catText: "Text",
+  catLists: "Liste",
+  catColour: "Culoare",
+  catVariables: "Variabile",
+  catFunctions: "Funcții",
+  listVariable: "listă",
+  textVariable: "text",
+  httpRequestError: "A apărut o problemă la solicitare.",
+  linkAlert: "Distribuie-ți blocurile folosind această legătură:\n\n%1",
+  hashError: "Scuze, „%1” nu corespunde nici unui program salvat.",
+  loadError: "Sistemul nu a putut încărca fișierul salvat. Poate că a fost creat cu o altă versiune de Blockly?",
+  parseError: "Eroare de parsare %1:\n%2\n\nAlege „OK” pentru a renunța la modificările efectuate sau „Revocare” pentru a modifica în continuare fișierul %1."
+};
diff --git a/demos/code/msg/ru.js b/demos/code/msg/ru.js
index da7a2f7b924..ffcbc9f483a 100644
--- a/demos/code/msg/ru.js
+++ b/demos/code/msg/ru.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Код",
-  blocks: "Блоки",
-  linkTooltip: "Сохранить и показать ссылку на блоки.",
-  runTooltip: "Запустить программу, заданную блоками в рабочей области.",
-  badCode: "Ошибка программы:\n%1",
-  timeout: "Превышено максимальное количество итераций.",
-  trashTooltip: "Удалить все блоки.",
-  catLogic: "Логические",
-  catLoops: "Циклы",
-  catMath: "Математика",
-  catText: "Текст",
-  catLists: "Списки",
-  catColour: "Цвет",
-  catVariables: "Переменные",
-  catFunctions: "Функции",
-  listVariable: "список",
-  textVariable: "текст",
-  httpRequestError: "Произошла проблема при запросе.",
-  linkAlert: "Поделитесь своими блоками по этой ссылке:\n\n%1",
-  hashError: "К сожалению, «%1» не соответствует ни одному сохраненному файлу Блокли.",
-  loadError: "Не удалось загрузить ваш сохраненный файл.  Возможно, он был создан в другой версии Блокли?",
-  parseError: "Ошибка синтаксического анализа %1:\n%2\n\nВыберите 'ОК', чтобы отказаться от изменений или 'Cancel' для дальнейшего редактирования %1."
-};
+var MSG = {
+  title: "Код",
+  blocks: "Блоки",
+  linkTooltip: "Сохранить и показать ссылку на блоки.",
+  runTooltip: "Запустить программу, заданную блоками в рабочей области.",
+  badCode: "Ошибка программы:\n%1",
+  timeout: "Превышено максимальное количество итераций.",
+  trashTooltip: "Удалить все блоки.",
+  catLogic: "Логические",
+  catLoops: "Циклы",
+  catMath: "Математика",
+  catText: "Текст",
+  catLists: "Списки",
+  catColour: "Цвет",
+  catVariables: "Переменные",
+  catFunctions: "Функции",
+  listVariable: "список",
+  textVariable: "текст",
+  httpRequestError: "Произошла проблема при запросе.",
+  linkAlert: "Поделитесь своими блоками по этой ссылке:\n\n%1",
+  hashError: "К сожалению, «%1» не соответствует ни одному сохраненному файлу Блокли.",
+  loadError: "Не удалось загрузить ваш сохраненный файл.  Возможно, он был создан в другой версии Блокли?",
+  parseError: "Ошибка синтаксического анализа %1:\n%2\n\nВыберите 'ОК', чтобы отказаться от изменений или 'Cancel' для дальнейшего редактирования %1."
+};
diff --git a/demos/code/msg/sc.js b/demos/code/msg/sc.js
index 8fe88ef1890..45c26bdb7fc 100644
--- a/demos/code/msg/sc.js
+++ b/demos/code/msg/sc.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Còdixi",
-  blocks: "Brocus",
-  linkTooltip: "Sarva e alliòngia a is brocus.",
-  runTooltip: "Arròllia su programa cumpostu de is brocus in s'àrea de traballu.",
-  badCode: "Errori in su Programa:\n%1",
-  timeout: "Giai lòmpius a su màssimu numeru de repicus.",
-  trashTooltip: "Boganci totu is brocus.",
-  catLogic: "Lògica",
-  catLoops: "Lòrigas",
-  catMath: "Matemàtica",
-  catText: "Testu",
-  catLists: "Lista",
-  catColour: "Colori",
-  catVariables: "Variabilis",
-  catFunctions: "Funtzionis",
-  listVariable: "lista",
-  textVariable: "testu",
-  httpRequestError: "Ddui fut unu problema cun sa pregunta",
-  linkAlert: "Poni is brocus tuus in custu acàpiu:\n\n%1",
-  hashError: "Mi dispraxit, '%1' non torrat a pari cun nimancu unu de is programas sarvaus.",
-  loadError: "Non potzu carrigai su file sarvau. Fortzis est stètiu fatu cun d-una versioni diferenti de Blockly?",
-  parseError: "Errori in s'anàlisi %1:\n%2\n\nCraca 'OK' po perdi is mudàntzias 'Anudda' po sighì a scriri su %1."
-};
+var MSG = {
+  title: "Còdixi",
+  blocks: "Brocus",
+  linkTooltip: "Sarva e alliòngia a is brocus.",
+  runTooltip: "Arròllia su programa cumpostu de is brocus in s'àrea de traballu.",
+  badCode: "Errori in su Programa:\n%1",
+  timeout: "Giai lòmpius a su màssimu numeru de repicus.",
+  trashTooltip: "Boganci totu is brocus.",
+  catLogic: "Lògica",
+  catLoops: "Lòrigas",
+  catMath: "Matemàtica",
+  catText: "Testu",
+  catLists: "Lista",
+  catColour: "Colori",
+  catVariables: "Variabilis",
+  catFunctions: "Funtzionis",
+  listVariable: "lista",
+  textVariable: "testu",
+  httpRequestError: "Ddui fut unu problema cun sa pregunta",
+  linkAlert: "Poni is brocus tuus in custu acàpiu:\n\n%1",
+  hashError: "Mi dispraxit, '%1' non torrat a pari cun nimancu unu de is programas sarvaus.",
+  loadError: "Non potzu carrigai su file sarvau. Fortzis est stètiu fatu cun d-una versioni diferenti de Blockly?",
+  parseError: "Errori in s'anàlisi %1:\n%2\n\nCraca 'OK' po perdi is mudàntzias 'Anudda' po sighì a scriri su %1."
+};
diff --git a/demos/code/msg/sk.js b/demos/code/msg/sk.js
index 0c07cae2826..6e80f593bf9 100644
--- a/demos/code/msg/sk.js
+++ b/demos/code/msg/sk.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kód",
-  blocks: "Bloky",
-  linkTooltip: "Uložiť a zdieľať odkaz na tento program.",
-  runTooltip: "Spustiť program, zložený z dielcov na pracovnej ploche.",
-  badCode: "Chyba v programe:\n%1",
-  timeout: "Bol prekročený maximálny počet opakovaní.",
-  trashTooltip: "Zahodiť všetky dielce.",
-  catLogic: "Logika",
-  catLoops: "Cykly",
-  catMath: "Matematické",
-  catText: "Text",
-  catLists: "Zoznamy",
-  catColour: "Farby",
-  catVariables: "Premenné",
-  catFunctions: "Funkcie",
-  listVariable: "zoznam",
-  textVariable: "text",
-  httpRequestError: "Problém so spracovaním požiadavky.",
-  linkAlert: "Zdieľať tento program skopírovaním odkazu\n\n%1",
-  hashError: "Prepáč, '%1' nie je meno žiadnemu uloženému programu.",
-  loadError: "Nebolo možné načítať uložený súbor. Možno bol vytvorený v inej verzii Blocky.",
-  parseError: "Chyba pri parsovaní %1:\n%2\n\nStlačte 'OK' ak chcete zrušiť zmeny alebo 'Zrušiť' pre pokračovanie v úpravách %1."
-};
+var MSG = {
+  title: "Kód",
+  blocks: "Bloky",
+  linkTooltip: "Uložiť a zdieľať odkaz na tento program.",
+  runTooltip: "Spustiť program, zložený z dielcov na pracovnej ploche.",
+  badCode: "Chyba v programe:\n%1",
+  timeout: "Bol prekročený maximálny počet opakovaní.",
+  trashTooltip: "Zahodiť všetky dielce.",
+  catLogic: "Logika",
+  catLoops: "Cykly",
+  catMath: "Matematické",
+  catText: "Text",
+  catLists: "Zoznamy",
+  catColour: "Farby",
+  catVariables: "Premenné",
+  catFunctions: "Funkcie",
+  listVariable: "zoznam",
+  textVariable: "text",
+  httpRequestError: "Problém so spracovaním požiadavky.",
+  linkAlert: "Zdieľať tento program skopírovaním odkazu\n\n%1",
+  hashError: "Prepáč, '%1' nie je meno žiadnemu uloženému programu.",
+  loadError: "Nebolo možné načítať uložený súbor. Možno bol vytvorený v inej verzii Blocky.",
+  parseError: "Chyba pri parsovaní %1:\n%2\n\nStlačte 'OK' ak chcete zrušiť zmeny alebo 'Zrušiť' pre pokračovanie v úpravách %1."
+};
diff --git a/demos/code/msg/sr.js b/demos/code/msg/sr.js
index 876fad70969..f8e59af02c8 100644
--- a/demos/code/msg/sr.js
+++ b/demos/code/msg/sr.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Кôд",
-  blocks: "Блокови",
-  linkTooltip: "Сачувајте и повежите са блоковима.",
-  runTooltip: "Покрените програм заснован на блоковима у радном простору.",
-  badCode: "Грешка у програму:\n%1",
-  timeout: "Достигнут је максималан број понављања у извршавању.",
-  trashTooltip: "Одбаците све блокове.",
-  catLogic: "Логика",
-  catLoops: "Петље",
-  catMath: "Математика",
-  catText: "Текст",
-  catLists: "Спискови",
-  catColour: "Боја",
-  catVariables: "Променљиве",
-  catFunctions: "Процедуре",
-  listVariable: "списак",
-  textVariable: "текст",
-  httpRequestError: "Дошло је до проблема у захтеву.",
-  linkAlert: "Делите своје блокове овом везом:\n\n%1",
-  hashError: "„%1“ не одговара ниједном сачуваном програму.",
-  loadError: "Не могу да учитам сачувану датотеку. Можда је направљена другом верзијом Blockly-ја.",
-  parseError: "Грешка при рашчлањивању %1-а:\n%2\n\nПритисните „У реду“ да напустите измене или „Откажи“ да наставите са уређивањем %1 датотеке."
-};
+var MSG = {
+  title: "Кôд",
+  blocks: "Блокови",
+  linkTooltip: "Сачувајте и повежите са блоковима.",
+  runTooltip: "Покрените програм заснован на блоковима у радном простору.",
+  badCode: "Грешка у програму:\n%1",
+  timeout: "Достигнут је максималан број понављања у извршавању.",
+  trashTooltip: "Одбаците све блокове.",
+  catLogic: "Логика",
+  catLoops: "Петље",
+  catMath: "Математика",
+  catText: "Текст",
+  catLists: "Спискови",
+  catColour: "Боја",
+  catVariables: "Променљиве",
+  catFunctions: "Процедуре",
+  listVariable: "списак",
+  textVariable: "текст",
+  httpRequestError: "Дошло је до проблема у захтеву.",
+  linkAlert: "Делите своје блокове овом везом:\n\n%1",
+  hashError: "„%1“ не одговара ниједном сачуваном програму.",
+  loadError: "Не могу да учитам сачувану датотеку. Можда је направљена другом верзијом Blockly-ја.",
+  parseError: "Грешка при рашчлањивању %1-а:\n%2\n\nПритисните „У реду“ да напустите измене или „Откажи“ да наставите са уређивањем %1 датотеке."
+};
diff --git a/demos/code/msg/sv.js b/demos/code/msg/sv.js
index 2c3245a8951..a2218dca6e4 100644
--- a/demos/code/msg/sv.js
+++ b/demos/code/msg/sv.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kod",
-  blocks: "Block",
-  linkTooltip: "Spara och länka till block.",
-  runTooltip: "Kör programmet som definierats av blocken i arbetsytan.",
-  badCode: "Programfel:\n%1",
-  timeout: "Det maximala antalet utförda loopar har överskridits.",
-  trashTooltip: "Släng alla block.",
-  catLogic: "Logik",
-  catLoops: "Loopar",
-  catMath: "Matematik",
-  catText: "Text",
-  catLists: "Listor",
-  catColour: "Färg",
-  catVariables: "Variabler",
-  catFunctions: "Funktioner",
-  listVariable: "lista",
-  textVariable: "text",
-  httpRequestError: "Det uppstod ett problem med begäran.",
-  linkAlert: "Dela dina block med denna länk: \n\n%1",
-  hashError: "Tyvärr, '%1' överensstämmer inte med något sparat program.",
-  loadError: "Kunde inte läsa din sparade fil. Den skapades kanske med en annan version av Blockly?",
-  parseError: "Fel vid parsning av %1:\n%2\n\nKlicka på 'OK' för att strunta i dina ändringar eller 'Avbryt' för att fortsätta redigera %1-koden."
-};
+var MSG = {
+  title: "Kod",
+  blocks: "Block",
+  linkTooltip: "Spara och länka till block.",
+  runTooltip: "Kör programmet som definierats av blocken i arbetsytan.",
+  badCode: "Programfel:\n%1",
+  timeout: "Det maximala antalet utförda loopar har överskridits.",
+  trashTooltip: "Släng alla block.",
+  catLogic: "Logik",
+  catLoops: "Loopar",
+  catMath: "Matematik",
+  catText: "Text",
+  catLists: "Listor",
+  catColour: "Färg",
+  catVariables: "Variabler",
+  catFunctions: "Funktioner",
+  listVariable: "lista",
+  textVariable: "text",
+  httpRequestError: "Det uppstod ett problem med begäran.",
+  linkAlert: "Dela dina block med denna länk: \n\n%1",
+  hashError: "Tyvärr, '%1' överensstämmer inte med något sparat program.",
+  loadError: "Kunde inte läsa din sparade fil. Den skapades kanske med en annan version av Blockly?",
+  parseError: "Fel vid parsning av %1:\n%2\n\nKlicka på 'OK' för att strunta i dina ändringar eller 'Avbryt' för att fortsätta redigera %1-koden."
+};
diff --git a/demos/code/msg/ta.js b/demos/code/msg/ta.js
index d415da98e8c..7b57cfb415b 100644
--- a/demos/code/msg/ta.js
+++ b/demos/code/msg/ta.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "கணினி நிரல்", //Code
-  blocks: "நிரல் துண்டு", //block
-  linkTooltip: "சேமித்து நிரல் துண்டிற்கு இணைக்க", //save and link to block
-  runTooltip: "பணிமனை நினைவகத்தில் இயக்குக", //Run the program defined by the blocks in the workspace.
-  badCode: "கணினி நிரல் கோளாறு:\n%1",
-  timeout: "அதிகபட்ச அடுக்கின் அளவை மீரியது", //max iters reached/exceeded
-  trashTooltip: "நீக்கு",
-  catLogic: "தர்க வகை",
-  catLoops: "மடக்கு வாக்கியம்",
-  catMath: "கணிதம்",
-  catText: "உரை",
-  catLists: "பட்டியல்",
-  catColour: "வண்ணம்",
-  catVariables: "மாறிகள்",
-  catFunctions: "சார்புகள்",
-  listVariable: "பட்டியல் மாறி",
-  textVariable: "உரை சரம்",
-  httpRequestError: "இந்த செயலை இயக்குவதில் கோளாறு ஏற்பட்டது",
-  linkAlert: "இந்த சுட்டி வழியாக நிரல் துண்டுகளை பகிரவும்:\n\n%1",
-  hashError: "'%1' : இது சேமித்த நிரலாக தெரியவில்லை.",
-  loadError: "உங்களது நிரலை காணவில்லை; வேறு Blockly அத்தியாயத்தில் சேமித்தீரா?",
-  parseError: "%1 பகுப்பதில் கோளாறு:\n%2\n\n'OK' கிளிக் செய்தால் மாற்றங்கள் இழப்பீர்கள்; பிழைகளுடன் தொடர 'Cancel' கிளிக் செய்யவும்."
-};
+var MSG = {
+  title: "கணினி நிரல்", //Code
+  blocks: "நிரல் துண்டு", //block
+  linkTooltip: "சேமித்து நிரல் துண்டிற்கு இணைக்க", //save and link to block
+  runTooltip: "பணிமனை நினைவகத்தில் இயக்குக", //Run the program defined by the blocks in the workspace.
+  badCode: "கணினி நிரல் கோளாறு:\n%1",
+  timeout: "அதிகபட்ச அடுக்கின் அளவை மீரியது", //max iters reached/exceeded
+  trashTooltip: "நீக்கு",
+  catLogic: "தர்க வகை",
+  catLoops: "மடக்கு வாக்கியம்",
+  catMath: "கணிதம்",
+  catText: "உரை",
+  catLists: "பட்டியல்",
+  catColour: "வண்ணம்",
+  catVariables: "மாறிகள்",
+  catFunctions: "சார்புகள்",
+  listVariable: "பட்டியல் மாறி",
+  textVariable: "உரை சரம்",
+  httpRequestError: "இந்த செயலை இயக்குவதில் கோளாறு ஏற்பட்டது",
+  linkAlert: "இந்த சுட்டி வழியாக நிரல் துண்டுகளை பகிரவும்:\n\n%1",
+  hashError: "'%1' : இது சேமித்த நிரலாக தெரியவில்லை.",
+  loadError: "உங்களது நிரலை காணவில்லை; வேறு Blockly அத்தியாயத்தில் சேமித்தீரா?",
+  parseError: "%1 பகுப்பதில் கோளாறு:\n%2\n\n'OK' கிளிக் செய்தால் மாற்றங்கள் இழப்பீர்கள்; பிழைகளுடன் தொடர 'Cancel' கிளிக் செய்யவும்."
+};
diff --git a/demos/code/msg/th.js b/demos/code/msg/th.js
index 91dc7c4894f..15c41de4c10 100644
--- a/demos/code/msg/th.js
+++ b/demos/code/msg/th.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "เขียนโปรแกรม",
-  blocks: "บล็อก",
-  linkTooltip: "บันทึกและสร้างลิงก์มายังบล็อกเหล่านี้",
-  runTooltip: "เรียกใช้โปรแกรมตามที่กำหนดไว้ด้วยบล็อกที่อยู่ในพื้นที่ทำงาน",
-  badCode: "โปรแกรมเกิดข้อผิดพลาด:\n%1",
-  timeout: "โปรแกรมทำงานซ้ำคำสั่งเดิมมากเกินไป",
-  trashTooltip: "ยกเลิกบล็อกทั้งหมด",
-  catLogic: "ตรรกะ",
-  catLoops: "การวนซ้ำ",
-  catMath: "คณิตศาสตร์",
-  catText: "ข้อความ",
-  catLists: "รายการ",
-  catColour: "สี",
-  catVariables: "ตัวแปร",
-  catFunctions: "ฟังก์ชัน",
-  listVariable: "รายการ",
-  textVariable: "ข้อความ",
-  httpRequestError: "มีปัญหาเกี่ยวกับการร้องขอ",
-  linkAlert: "แบ่งปันบล็อกของคุณด้วยลิงก์นี้:\n\n%1",
-  hashError: "เสียใจด้วย '%1' ไม่ตรงกับโปรแกรมใดๆ ที่เคยบันทึกเอาไว้เลย",
-  loadError: "ไม่สามารถโหลดไฟล์ที่บันทึกไว้ของคุณได้ บางทีมันอาจจะถูกสร้างขึ้นด้วย Blockly รุ่นอื่นที่แตกต่างกัน?",
-  parseError: "เกิดข้อผิดพลาดในการแยกวิเคราะห์ %1:\n%2\n\nเลือก 'ตกลง' เพื่อละทิ้งการเปลี่ยนแปลงต่างๆ ที่ทำไว้ หรือเลือก 'ยกเลิก' เพื่อแก้ไข %1 ต่อไป"
-};
+var MSG = {
+  title: "เขียนโปรแกรม",
+  blocks: "บล็อก",
+  linkTooltip: "บันทึกและสร้างลิงก์มายังบล็อกเหล่านี้",
+  runTooltip: "เรียกใช้โปรแกรมตามที่กำหนดไว้ด้วยบล็อกที่อยู่ในพื้นที่ทำงาน",
+  badCode: "โปรแกรมเกิดข้อผิดพลาด:\n%1",
+  timeout: "โปรแกรมทำงานซ้ำคำสั่งเดิมมากเกินไป",
+  trashTooltip: "ยกเลิกบล็อกทั้งหมด",
+  catLogic: "ตรรกะ",
+  catLoops: "การวนซ้ำ",
+  catMath: "คณิตศาสตร์",
+  catText: "ข้อความ",
+  catLists: "รายการ",
+  catColour: "สี",
+  catVariables: "ตัวแปร",
+  catFunctions: "ฟังก์ชัน",
+  listVariable: "รายการ",
+  textVariable: "ข้อความ",
+  httpRequestError: "มีปัญหาเกี่ยวกับการร้องขอ",
+  linkAlert: "แบ่งปันบล็อกของคุณด้วยลิงก์นี้:\n\n%1",
+  hashError: "เสียใจด้วย '%1' ไม่ตรงกับโปรแกรมใดๆ ที่เคยบันทึกเอาไว้เลย",
+  loadError: "ไม่สามารถโหลดไฟล์ที่บันทึกไว้ของคุณได้ บางทีมันอาจจะถูกสร้างขึ้นด้วย Blockly รุ่นอื่นที่แตกต่างกัน?",
+  parseError: "เกิดข้อผิดพลาดในการแยกวิเคราะห์ %1:\n%2\n\nเลือก 'ตกลง' เพื่อละทิ้งการเปลี่ยนแปลงต่างๆ ที่ทำไว้ หรือเลือก 'ยกเลิก' เพื่อแก้ไข %1 ต่อไป"
+};
diff --git a/demos/code/msg/tlh.js b/demos/code/msg/tlh.js
index 9ee511a14cb..606509fbf38 100644
--- a/demos/code/msg/tlh.js
+++ b/demos/code/msg/tlh.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "ngoq",
-  blocks: "ngoghmey",
-  linkTooltip: "",
-  runTooltip: "",
-  badCode: "Qagh:\n%1",
-  timeout: "tlhoy nI'qu' poH.",
-  trashTooltip: "",
-  catLogic: "meq",
-  catLoops: "vIHtaHbogh ghomey",
-  catMath: "mI'QeD",
-  catText: "ghItlhHommey",
-  catLists: "tetlhmey",
-  catColour: "rItlh",
-  catVariables: "lIwmey",
-  catFunctions: "mIwmey",
-  listVariable: "tetlh",
-  textVariable: "ghItlhHom",
-  httpRequestError: "Qapbe' tlhobmeH QIn.",
-  linkAlert: "latlhvaD ngoghmeylIj DangeHmeH Quvvam yIlo':\n\n%1",
-  hashError: "Do'Ha', ngogh nab pollu'pu'bogh 'oHbe'law' \"%1\"'e'.",
-  loadError: "ngogh nablIj pollu'pu'bogh chu'qa'laHbe' vay'.  chaq pollu'pu'DI' ghunmeH ngogh pIm lo'lu'pu'.",
-  parseError: "%1 yajchu'laHbe' vay':\n%2\n\nchoHmeylIj DalonmeH \"ruch\" yIwIv pagh %1 DachoHqa'meH \"qIl\" yIwIv."
-};
+var MSG = {
+  title: "ngoq",
+  blocks: "ngoghmey",
+  linkTooltip: "",
+  runTooltip: "",
+  badCode: "Qagh:\n%1",
+  timeout: "tlhoy nI'qu' poH.",
+  trashTooltip: "",
+  catLogic: "meq",
+  catLoops: "vIHtaHbogh ghomey",
+  catMath: "mI'QeD",
+  catText: "ghItlhHommey",
+  catLists: "tetlhmey",
+  catColour: "rItlh",
+  catVariables: "lIwmey",
+  catFunctions: "mIwmey",
+  listVariable: "tetlh",
+  textVariable: "ghItlhHom",
+  httpRequestError: "Qapbe' tlhobmeH QIn.",
+  linkAlert: "latlhvaD ngoghmeylIj DangeHmeH Quvvam yIlo':\n\n%1",
+  hashError: "Do'Ha', ngogh nab pollu'pu'bogh 'oHbe'law' \"%1\"'e'.",
+  loadError: "ngogh nablIj pollu'pu'bogh chu'qa'laHbe' vay'.  chaq pollu'pu'DI' ghunmeH ngogh pIm lo'lu'pu'.",
+  parseError: "%1 yajchu'laHbe' vay':\n%2\n\nchoHmeylIj DalonmeH \"ruch\" yIwIv pagh %1 DachoHqa'meH \"qIl\" yIwIv."
+};
diff --git a/demos/code/msg/tr.js b/demos/code/msg/tr.js
index ec0f04a2a29..d88224ae496 100644
--- a/demos/code/msg/tr.js
+++ b/demos/code/msg/tr.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Kod",
-  blocks: "Bloklar",
-  linkTooltip: "Blokları ve bağlantı adresini kaydet.",
-  runTooltip: "Çalışma alanında bloklar tarafından tanımlanan programını çalıştırın.",
-  badCode: "Program hatası:\n %1",
-  timeout: "Maksimum yürütme yinelemeleri aşıldı.",
-  trashTooltip: "Bütün blokları at.",
-  catLogic: "Mantık",
-  catLoops: "Döngüler",
-  catMath: "Matematik",
-  catText: "Metin",
-  catLists: "Listeler",
-  catColour: "Renk",
-  catVariables: "Değişkenler",
-  catFunctions: "İşlevler",
-  listVariable: "liste",
-  textVariable: "metin",
-  httpRequestError: "İstek ile ilgili bir problem var.",
-  linkAlert: "Bloklarını bu bağlantı ile paylaş:\n\n%1",
-  hashError: "Üzgünüz, '%1' hiç bir kaydedilmiş program ile uyuşmuyor.",
-  loadError: "Kaydedilen dosyanız yüklenemiyor\nBlockly'nin önceki sürümü ile kaydedilmiş olabilir mi?",
-  parseError: "%1 ayrıştırma hatası:\n%2\n\nDeğişikliklerden vazgeçmek için 'Tamam'ı, düzenlemeye devam etmek için 'İptal' seçeneğini seçiniz."
-};
+var MSG = {
+  title: "Kod",
+  blocks: "Bloklar",
+  linkTooltip: "Blokları ve bağlantı adresini kaydet.",
+  runTooltip: "Çalışma alanında bloklar tarafından tanımlanan programını çalıştırın.",
+  badCode: "Program hatası:\n %1",
+  timeout: "Maksimum yürütme yinelemeleri aşıldı.",
+  trashTooltip: "Bütün blokları at.",
+  catLogic: "Mantık",
+  catLoops: "Döngüler",
+  catMath: "Matematik",
+  catText: "Metin",
+  catLists: "Listeler",
+  catColour: "Renk",
+  catVariables: "Değişkenler",
+  catFunctions: "İşlevler",
+  listVariable: "liste",
+  textVariable: "metin",
+  httpRequestError: "İstek ile ilgili bir problem var.",
+  linkAlert: "Bloklarını bu bağlantı ile paylaş:\n\n%1",
+  hashError: "Üzgünüz, '%1' hiç bir kaydedilmiş program ile uyuşmuyor.",
+  loadError: "Kaydedilen dosyanız yüklenemiyor\nBlockly'nin önceki sürümü ile kaydedilmiş olabilir mi?",
+  parseError: "%1 ayrıştırma hatası:\n%2\n\nDeğişikliklerden vazgeçmek için 'Tamam'ı, düzenlemeye devam etmek için 'İptal' seçeneğini seçiniz."
+};
diff --git a/demos/code/msg/uk.js b/demos/code/msg/uk.js
index 7ddd0e422d1..2664ab0cfc3 100644
--- a/demos/code/msg/uk.js
+++ b/demos/code/msg/uk.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Код",
-  blocks: "Блоки",
-  linkTooltip: "Зберегти і пов'язати з блоками.",
-  runTooltip: "Запустіть програму, визначену блоками у робочій області.",
-  badCode: "Помилка програми:\n%1",
-  timeout: "Максимальне виконання ітерацій перевищено.",
-  trashTooltip: "Відкинути всі блоки.",
-  catLogic: "Логіка",
-  catLoops: "Петлі",
-  catMath: "Математика",
-  catText: "Текст",
-  catLists: "Списки",
-  catColour: "Колір",
-  catVariables: "Змінні",
-  catFunctions: "Функції",
-  listVariable: "список",
-  textVariable: "текст",
-  httpRequestError: "Виникла проблема із запитом.",
-  linkAlert: "Поділитися вашим блоками через посилання:\n\n%1",
-  hashError: "На жаль, \"%1\" не відповідає жодній збереженій програмі.",
-  loadError: "Не вдалося завантажити ваш збережений файл.  Можливо, він був створений з іншої версії Blockly?",
-  parseError: "Помилка синтаксичного аналізу %1:\n%2\n\nВиберіть \"Гаразд\", щоб відмовитися від змін або 'Скасувати' для подальшого редагування %1."
-};
+var MSG = {
+  title: "Код",
+  blocks: "Блоки",
+  linkTooltip: "Зберегти і пов'язати з блоками.",
+  runTooltip: "Запустіть програму, визначену блоками у робочій області.",
+  badCode: "Помилка програми:\n%1",
+  timeout: "Максимальне виконання ітерацій перевищено.",
+  trashTooltip: "Відкинути всі блоки.",
+  catLogic: "Логіка",
+  catLoops: "Петлі",
+  catMath: "Математика",
+  catText: "Текст",
+  catLists: "Списки",
+  catColour: "Колір",
+  catVariables: "Змінні",
+  catFunctions: "Функції",
+  listVariable: "список",
+  textVariable: "текст",
+  httpRequestError: "Виникла проблема із запитом.",
+  linkAlert: "Поділитися вашим блоками через посилання:\n\n%1",
+  hashError: "На жаль, \"%1\" не відповідає жодній збереженій програмі.",
+  loadError: "Не вдалося завантажити ваш збережений файл.  Можливо, він був створений з іншої версії Blockly?",
+  parseError: "Помилка синтаксичного аналізу %1:\n%2\n\nВиберіть \"Гаразд\", щоб відмовитися від змін або 'Скасувати' для подальшого редагування %1."
+};
diff --git a/demos/code/msg/vi.js b/demos/code/msg/vi.js
index 8d859643710..b1e78aa2bda 100644
--- a/demos/code/msg/vi.js
+++ b/demos/code/msg/vi.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "Chương trình",
-  blocks: "Các mảnh",
-  linkTooltip: "Lưu và lấy địa chỉ liên kết.",
-  runTooltip: "Chạy chương trình.",
-  badCode: "'Lỗi chương trình:\n%1",
-  timeout: "Đã vượt quá số lần lặp cho phép.",
-  trashTooltip: "Xóa tất cả mọi mảnh.",
-  catLogic: "Logic",
-  catLoops: "Vòng lặp",
-  catMath: "Công thức toán",
-  catText: "Văn bản",
-  catLists: "Danh sách",
-  catColour: "Màu",
-  catVariables: "Biến",
-  catFunctions: "Hàm",
-  listVariable: "danh sách",
-  textVariable: "văn bản",
-  httpRequestError: "Hoạt động bị trục trặc, không thực hiện được yêu cầu của bạn.",
-  linkAlert: "Chia sẻ chương trình của bạn với liên kết sau:\n\n %1",
-  hashError: "Không tìm thấy chương trình được lưu ở '%1'.",
-  loadError: "Không mở được chương trình của bạn.  Có thể nó nằm trong một phiên bản khác của Blockly?",
-  parseError: "Lỗi sử lý %1:\n %2\n\nChọn 'OK' để từ bỏ các thay đổi hoặc 'Hủy' để tiếp tục chỉnh sửa các %1."
-};
+var MSG = {
+  title: "Chương trình",
+  blocks: "Các mảnh",
+  linkTooltip: "Lưu và lấy địa chỉ liên kết.",
+  runTooltip: "Chạy chương trình.",
+  badCode: "'Lỗi chương trình:\n%1",
+  timeout: "Đã vượt quá số lần lặp cho phép.",
+  trashTooltip: "Xóa tất cả mọi mảnh.",
+  catLogic: "Logic",
+  catLoops: "Vòng lặp",
+  catMath: "Công thức toán",
+  catText: "Văn bản",
+  catLists: "Danh sách",
+  catColour: "Màu",
+  catVariables: "Biến",
+  catFunctions: "Hàm",
+  listVariable: "danh sách",
+  textVariable: "văn bản",
+  httpRequestError: "Hoạt động bị trục trặc, không thực hiện được yêu cầu của bạn.",
+  linkAlert: "Chia sẻ chương trình của bạn với liên kết sau:\n\n %1",
+  hashError: "Không tìm thấy chương trình được lưu ở '%1'.",
+  loadError: "Không mở được chương trình của bạn.  Có thể nó nằm trong một phiên bản khác của Blockly?",
+  parseError: "Lỗi sử lý %1:\n %2\n\nChọn 'OK' để từ bỏ các thay đổi hoặc 'Hủy' để tiếp tục chỉnh sửa các %1."
+};
diff --git a/demos/code/msg/zh-hans.js b/demos/code/msg/zh-hans.js
index ef8951bac36..f58fef1646a 100644
--- a/demos/code/msg/zh-hans.js
+++ b/demos/code/msg/zh-hans.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "代码",
-  blocks: "块",
-  linkTooltip: "保存模块并生成链接。",
-  runTooltip: "于工作区中运行块所定义的程式。",
-  badCode: "程序错误:\n%1",
-  timeout: "超过最大执行行数。",
-  trashTooltip: "放弃所有块。",
-  catLogic: "逻辑",
-  catLoops: "循环",
-  catMath: "数学",
-  catText: "文本",
-  catLists: "列表",
-  catColour: "颜色",
-  catVariables: "变量",
-  catFunctions: "函数",
-  listVariable: "列表",
-  textVariable: "文本",
-  httpRequestError: "请求存在问题。",
-  linkAlert: "通过这个链接分享您的模块:\n\n%1",
-  hashError: "对不起,没有任何已保存的程序对应'%1' 。",
-  loadError: "无法载入您保存的文件。您是否使用其他版本的Blockly创建该文件的?",
-  parseError: "%1解析错误:\n%2\n\n选择“确定”以取消您对%1的修改,或选择“取消”以继续编辑%1。"
-};
+var MSG = {
+  title: "代码",
+  blocks: "块",
+  linkTooltip: "保存模块并生成链接。",
+  runTooltip: "于工作区中运行块所定义的程式。",
+  badCode: "程序错误:\n%1",
+  timeout: "超过最大执行行数。",
+  trashTooltip: "放弃所有块。",
+  catLogic: "逻辑",
+  catLoops: "循环",
+  catMath: "数学",
+  catText: "文本",
+  catLists: "列表",
+  catColour: "颜色",
+  catVariables: "变量",
+  catFunctions: "函数",
+  listVariable: "列表",
+  textVariable: "文本",
+  httpRequestError: "请求存在问题。",
+  linkAlert: "通过这个链接分享您的模块:\n\n%1",
+  hashError: "对不起,没有任何已保存的程序对应'%1' 。",
+  loadError: "无法载入您保存的文件。您是否使用其他版本的Blockly创建该文件的?",
+  parseError: "%1解析错误:\n%2\n\n选择“确定”以取消您对%1的修改,或选择“取消”以继续编辑%1。"
+};
diff --git a/demos/code/msg/zh-hant.js b/demos/code/msg/zh-hant.js
index fd7193268cf..8a61a08ad22 100644
--- a/demos/code/msg/zh-hant.js
+++ b/demos/code/msg/zh-hant.js
@@ -1,24 +1,24 @@
-var MSG = {
-  title: "程式碼",
-  blocks: "積木",
-  linkTooltip: "儲存積木組並提供連結。",
-  runTooltip: "於工作區中執行積木組所定義的程式。",
-  badCode: "程式錯誤:\n%1",
-  timeout: "超過最大執行數。",
-  trashTooltip: "捨棄所有積木。",
-  catLogic: "邏輯",
-  catLoops: "迴圈",
-  catMath: "數學式",
-  catText: "文字",
-  catLists: "列表",
-  catColour: "顏色",
-  catVariables: "變量",
-  catFunctions: "流程",
-  listVariable: "列表",
-  textVariable: "文字",
-  httpRequestError: "命令出現錯誤。",
-  linkAlert: "透過此連結分享您的積木組:\n\n%1",
-  hashError: "對不起,「%1」並未對應任何已保存的程式。",
-  loadError: "未能載入您保存的檔案。或許它是由其他版本的Blockly創建?",
-  parseError: "解析 %1 時出現錯誤:\n%2\n\n選擇'確定'以放棄您的更改,或選擇'取消'以進一步編輯 %1。"
-};
+var MSG = {
+  title: "程式碼",
+  blocks: "積木",
+  linkTooltip: "儲存積木組並提供連結。",
+  runTooltip: "於工作區中執行積木組所定義的程式。",
+  badCode: "程式錯誤:\n%1",
+  timeout: "超過最大執行數。",
+  trashTooltip: "捨棄所有積木。",
+  catLogic: "邏輯",
+  catLoops: "迴圈",
+  catMath: "數學式",
+  catText: "文字",
+  catLists: "列表",
+  catColour: "顏色",
+  catVariables: "變量",
+  catFunctions: "流程",
+  listVariable: "列表",
+  textVariable: "文字",
+  httpRequestError: "命令出現錯誤。",
+  linkAlert: "透過此連結分享您的積木組:\n\n%1",
+  hashError: "對不起,「%1」並未對應任何已保存的程式。",
+  loadError: "未能載入您保存的檔案。或許它是由其他版本的Blockly創建?",
+  parseError: "解析 %1 時出現錯誤:\n%2\n\n選擇'確定'以放棄您的更改,或選擇'取消'以進一步編輯 %1。"
+};
diff --git a/demos/code/style.css b/demos/code/style.css
index ef7d9b4d373..3703c800c35 100644
--- a/demos/code/style.css
+++ b/demos/code/style.css
@@ -1,184 +1,184 @@
-html, body {
-  height: 100%;
-}
-
-body {
-  background-color: #fff;
-  font-family: sans-serif;
-  margin: 0;
-  overflow: hidden;
-}
-
-.farSide {
-  text-align: right;
-}
-
-html[dir="RTL"] .farSide {
-  text-align: left;
-}
-
-/* Buttons */
-button {
-  margin: 5px;
-  padding: 10px;
-  border-radius: 4px;
-  border: 1px solid #ddd;
-  font-size: large;
-  background-color: #eee;
-  color: #000;
-}
-button.primary {
-  border: 1px solid #dd4b39;
-  background-color: #dd4b39;
-  color: #fff;
-}
-button.primary>img {
-  opacity: 1;
-}
-button>img {
-  opacity: 0.6;
-  vertical-align: text-bottom;
-}
-button:hover>img {
-  opacity: 1;
-}
-button:active {
-  border: 1px solid #888 !important;
-}
-button:hover {
-  box-shadow: 2px 2px 5px #888;
-}
-button.disabled:hover>img {
-  opacity: 0.6;
-}
-button.disabled {
-  display: none;
-}
-button.notext {
-  font-size: 10%;
-}
-
-h1 {
-  font-weight: normal;
-  font-size: 140%;
-  margin-left: 5px;
-  margin-right: 5px;
-}
-
-/* Tabs */
-#tabRow>td {
-  border: 1px solid #ccc;
-  border-bottom: none;
-}
-td.tabon {
-  border-bottom-color: #ddd !important;
-  background-color: #ddd;
-  padding: 5px 19px;
-  white-space: nowrap;
-}
-td.taboff {
-  cursor: pointer;
-  padding: 5px 19px;
-}
-td.taboff:hover {
-  background-color: #eee;
-}
-td.tabmin {
-  border-top-style: none !important;
-  border-left-style: none !important;
-  border-right-style: none !important;
-}
-td.tabmax {
-  border-top-style: none !important;
-  border-left-style: none !important;
-  border-right-style: none !important;
-  width: 99%;
-  padding-left: 10px;
-  padding-right: 10px;
-  text-align: right;
-}
-html[dir=rtl] td.tabmax {
-  text-align: left;
-}
-#tab_code {
-  display: none;
-}
-
-table {
-  border-collapse: collapse;
-  margin: 0;
-  padding: 0;
-  border: none;
-}
-td {
-  padding: 0;
-  vertical-align: top;
-}
-.content {
-  visibility: hidden;
-  margin: 0;
-  padding: 1ex;
-  position: absolute;
-  direction: ltr;
-}
-pre.content {
-  border: 1px solid #ccc;
-  overflow: scroll;
-}
-#content_blocks {
-  padding: 0;
-}
-.blocklySvg {
-  border-top: none !important;
-}
-#content_xml {
-  resize: none;
-  outline: none;
-  border: 1px solid #ccc;
-  font-family: monospace;
-  overflow: scroll;
-}
-#languageMenu {
-  vertical-align: top;
-  margin-left: 15px;
-  margin-right: 15px;
-  margin-top: 15px;
-}
-
-/* Buttons */
-button {
-  padding: 1px 10px;
-  margin: 1px 5px;
-}
-
-/* Sprited icons. */
-.icon21 {
-  height: 21px;
-  width: 21px;
-  background-image: url(icons.png);
-}
-.trash {
-  background-position: 0px 0px;
-}
-.link {
-  background-position: -21px 0px;
-}
-.run {
-  background-position: -42px 0px;
-}
-
-@media (max-width: 710px) {
-  .tab_collapse {
-    display: none;
-  }
-  #tab_code {
-    display: table-cell;
-  }
-}
-
-/* Privacy link */
-.privacyLink {
-  font-family: Roboto, Arial, Helvetica, sans-serif;
-  font-size: small;
-  text-decoration: none;
-}
+html, body {
+  height: 100%;
+}
+
+body {
+  background-color: #fff;
+  font-family: sans-serif;
+  margin: 0;
+  overflow: hidden;
+}
+
+.farSide {
+  text-align: right;
+}
+
+html[dir="RTL"] .farSide {
+  text-align: left;
+}
+
+/* Buttons */
+button {
+  margin: 5px;
+  padding: 10px;
+  border-radius: 4px;
+  border: 1px solid #ddd;
+  font-size: large;
+  background-color: #eee;
+  color: #000;
+}
+button.primary {
+  border: 1px solid #dd4b39;
+  background-color: #dd4b39;
+  color: #fff;
+}
+button.primary>img {
+  opacity: 1;
+}
+button>img {
+  opacity: 0.6;
+  vertical-align: text-bottom;
+}
+button:hover>img {
+  opacity: 1;
+}
+button:active {
+  border: 1px solid #888 !important;
+}
+button:hover {
+  box-shadow: 2px 2px 5px #888;
+}
+button.disabled:hover>img {
+  opacity: 0.6;
+}
+button.disabled {
+  display: none;
+}
+button.notext {
+  font-size: 10%;
+}
+
+h1 {
+  font-weight: normal;
+  font-size: 140%;
+  margin-left: 5px;
+  margin-right: 5px;
+}
+
+/* Tabs */
+#tabRow>td {
+  border: 1px solid #ccc;
+  border-bottom: none;
+}
+td.tabon {
+  border-bottom-color: #ddd !important;
+  background-color: #ddd;
+  padding: 5px 19px;
+  white-space: nowrap;
+}
+td.taboff {
+  cursor: pointer;
+  padding: 5px 19px;
+}
+td.taboff:hover {
+  background-color: #eee;
+}
+td.tabmin {
+  border-top-style: none !important;
+  border-left-style: none !important;
+  border-right-style: none !important;
+}
+td.tabmax {
+  border-top-style: none !important;
+  border-left-style: none !important;
+  border-right-style: none !important;
+  width: 99%;
+  padding-left: 10px;
+  padding-right: 10px;
+  text-align: right;
+}
+html[dir=rtl] td.tabmax {
+  text-align: left;
+}
+#tab_code {
+  display: none;
+}
+
+table {
+  border-collapse: collapse;
+  margin: 0;
+  padding: 0;
+  border: none;
+}
+td {
+  padding: 0;
+  vertical-align: top;
+}
+.content {
+  visibility: hidden;
+  margin: 0;
+  padding: 1ex;
+  position: absolute;
+  direction: ltr;
+}
+pre.content {
+  border: 1px solid #ccc;
+  overflow: scroll;
+}
+#content_blocks {
+  padding: 0;
+}
+.blocklySvg {
+  border-top: none !important;
+}
+#content_xml {
+  resize: none;
+  outline: none;
+  border: 1px solid #ccc;
+  font-family: monospace;
+  overflow: scroll;
+}
+#languageMenu {
+  vertical-align: top;
+  margin-left: 15px;
+  margin-right: 15px;
+  margin-top: 15px;
+}
+
+/* Buttons */
+button {
+  padding: 1px 10px;
+  margin: 1px 5px;
+}
+
+/* Sprited icons. */
+.icon21 {
+  height: 21px;
+  width: 21px;
+  background-image: url(icons.png);
+}
+.trash {
+  background-position: 0px 0px;
+}
+.link {
+  background-position: -21px 0px;
+}
+.run {
+  background-position: -42px 0px;
+}
+
+@media (max-width: 710px) {
+  .tab_collapse {
+    display: none;
+  }
+  #tab_code {
+    display: table-cell;
+  }
+}
+
+/* Privacy link */
+.privacyLink {
+  font-family: Roboto, Arial, Helvetica, sans-serif;
+  font-size: small;
+  text-decoration: none;
+}
diff --git a/demos/codelab/README.md b/demos/codelab/README.md
index 2a5e9131529..3eedc7fc516 100644
--- a/demos/codelab/README.md
+++ b/demos/codelab/README.md
@@ -1,16 +1,16 @@
-# Blockly for the Web codelab
-
-Code for the [Blockly for the Web codelab](https://developers.google.com/TODO).
-
-In this codelab, you'll learn how to use Blockly JavaScript library
-to add a block code editor to a web application.
-
-## What you'll learn
-
-* How to add Blockly to a sample web app.
-* How to set up a Blockly workspace.
-* How to create a new block in Blockly.
-* How to generate and run JavaScript code from blocks.
-
-Example code for each step of the codelab is available from
-the [completed](completed/) directory.
+# Blockly for the Web codelab
+
+Code for the [Blockly for the Web codelab](https://developers.google.com/TODO).
+
+In this codelab, you'll learn how to use Blockly JavaScript library
+to add a block code editor to a web application.
+
+## What you'll learn
+
+* How to add Blockly to a sample web app.
+* How to set up a Blockly workspace.
+* How to create a new block in Blockly.
+* How to generate and run JavaScript code from blocks.
+
+Example code for each step of the codelab is available from
+the [completed](completed/) directory.
diff --git a/demos/codelab/app-complete/index.html b/demos/codelab/app-complete/index.html
index d5780e19d03..6eda4110c30 100644
--- a/demos/codelab/app-complete/index.html
+++ b/demos/codelab/app-complete/index.html
@@ -1,73 +1,73 @@
-
-
-
-  
-  
-  
-
-  Blockly for the Web Codelab
-
-  
-  
-
-
-
-  
-

Music Maker

-

Music Maker Configuration

-
- -
- - - -

Tap any button to edit its code.
When complete, press Done.

- -
-
-
1
-
2
-
3
-
-
-
4
-
5
-
6
-
-
-
7
-
8
-
9
-
-
- -
-
- -
-
- - - - - - - - - - - - + + + + + + + + Blockly for the Web Codelab + + + + + + +
+

Music Maker

+

Music Maker Configuration

+
+ +
+ + + +

Tap any button to edit its code.
When complete, press Done.

+ +
+
+
1
+
2
+
3
+
+
+
4
+
5
+
6
+
+
+
7
+
8
+
9
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + diff --git a/demos/codelab/app-complete/scripts/main.js b/demos/codelab/app-complete/scripts/main.js index d5ebe0b3cbc..0a7a94e9ec4 100644 --- a/demos/codelab/app-complete/scripts/main.js +++ b/demos/codelab/app-complete/scripts/main.js @@ -1,77 +1,77 @@ -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - (function() { - - let currentButton; - - function handlePlay(event) { - loadWorkspace(event.target); - Blockly.JavaScript.addReservedWords('code'); - var code = Blockly.JavaScript.workspaceToCode(Blockly.getMainWorkspace()); - code += 'MusicMaker.play();'; - // Eval can be dangerous. For more controlled execution, check - // https://github.com/NeilFraser/JS-Interpreter. - try { - eval(code); - } catch (error) { - console.log(error); - } - } - - function loadWorkspace(button) { - let workspace = Blockly.getMainWorkspace(); - workspace.clear(); - if (button.blocklyXml) { - Blockly.Xml.domToWorkspace(button.blocklyXml, workspace); - } - } - - function save(button) { - let xml = Blockly.Xml.workspaceToDom(Blockly.getMainWorkspace()); - button.blocklyXml = xml; - } - - function handleSave() { - document.body.setAttribute('mode', 'edit'); - save(currentButton); - } - - function enableEditMode() { - document.body.setAttribute('mode', 'edit'); - document.querySelectorAll('.button').forEach(btn => { - btn.removeEventListener('click', handlePlay); - btn.addEventListener('click', enableBlocklyMode); - }); - } - - function enableMakerMode() { - document.body.setAttribute('mode', 'maker'); - document.querySelectorAll('.button').forEach(btn => { - btn.addEventListener('click', handlePlay); - btn.removeEventListener('click', enableBlocklyMode); - }); - } - - function enableBlocklyMode(e) { - document.body.setAttribute('mode', 'blockly'); - currentButton = e.target; - loadWorkspace(currentButton); - } - - document.querySelector('#edit').addEventListener('click', enableEditMode); - document.querySelector('#done').addEventListener('click', enableMakerMode); - document.querySelector('#save').addEventListener('click', handleSave); - - enableMakerMode(); - - Blockly.inject('blockly-div', { - media: '../../../media/', - toolbox: document.getElementById('toolbox'), - toolboxPosition: 'end', - horizontalLayout: true, - scrollbars: false - }); -})(); +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + (function() { + + let currentButton; + + function handlePlay(event) { + loadWorkspace(event.target); + Blockly.JavaScript.addReservedWords('code'); + var code = Blockly.JavaScript.workspaceToCode(Blockly.getMainWorkspace()); + code += 'MusicMaker.play();'; + // Eval can be dangerous. For more controlled execution, check + // https://github.com/NeilFraser/JS-Interpreter. + try { + eval(code); + } catch (error) { + console.log(error); + } + } + + function loadWorkspace(button) { + let workspace = Blockly.getMainWorkspace(); + workspace.clear(); + if (button.blocklyXml) { + Blockly.Xml.domToWorkspace(button.blocklyXml, workspace); + } + } + + function save(button) { + let xml = Blockly.Xml.workspaceToDom(Blockly.getMainWorkspace()); + button.blocklyXml = xml; + } + + function handleSave() { + document.body.setAttribute('mode', 'edit'); + save(currentButton); + } + + function enableEditMode() { + document.body.setAttribute('mode', 'edit'); + document.querySelectorAll('.button').forEach(btn => { + btn.removeEventListener('click', handlePlay); + btn.addEventListener('click', enableBlocklyMode); + }); + } + + function enableMakerMode() { + document.body.setAttribute('mode', 'maker'); + document.querySelectorAll('.button').forEach(btn => { + btn.addEventListener('click', handlePlay); + btn.removeEventListener('click', enableBlocklyMode); + }); + } + + function enableBlocklyMode(e) { + document.body.setAttribute('mode', 'blockly'); + currentButton = e.target; + loadWorkspace(currentButton); + } + + document.querySelector('#edit').addEventListener('click', enableEditMode); + document.querySelector('#done').addEventListener('click', enableMakerMode); + document.querySelector('#save').addEventListener('click', handleSave); + + enableMakerMode(); + + Blockly.inject('blockly-div', { + media: '../../../media/', + toolbox: document.getElementById('toolbox'), + toolboxPosition: 'end', + horizontalLayout: true, + scrollbars: false + }); +})(); diff --git a/demos/codelab/app-complete/scripts/music_maker.js b/demos/codelab/app-complete/scripts/music_maker.js index adfefeddcea..9cf1c914247 100644 --- a/demos/codelab/app-complete/scripts/music_maker.js +++ b/demos/codelab/app-complete/scripts/music_maker.js @@ -1,22 +1,22 @@ -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - const MusicMaker = { - queue_: [], - player_: new Audio(), - queueSound: function(soundUrl) { - this.queue_.push(soundUrl); - }, - play: function() { - let next = this.queue_.shift(); - if (next) { - this.player_.src = next; - this.player_.play(); - } - }, -}; - -MusicMaker.player_.addEventListener( - 'ended', MusicMaker.play.bind(MusicMaker)); +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + const MusicMaker = { + queue_: [], + player_: new Audio(), + queueSound: function(soundUrl) { + this.queue_.push(soundUrl); + }, + play: function() { + let next = this.queue_.shift(); + if (next) { + this.player_.src = next; + this.player_.play(); + } + }, +}; + +MusicMaker.player_.addEventListener( + 'ended', MusicMaker.play.bind(MusicMaker)); diff --git a/demos/codelab/app-complete/scripts/sound_blocks.js b/demos/codelab/app-complete/scripts/sound_blocks.js index b8b851819d4..cfca165348c 100644 --- a/demos/codelab/app-complete/scripts/sound_blocks.js +++ b/demos/codelab/app-complete/scripts/sound_blocks.js @@ -1,39 +1,39 @@ -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -Blockly.defineBlocksWithJsonArray([ - // Block for colour picker. - { - "type": "play_sound", - "message0": "Play %1", - "args0": [ - { - "type": "field_dropdown", - "name": "VALUE", - "options": [ - ["C4", "sounds/c4.m4a"], - ["D4", "sounds/d4.m4a"], - ["E4", "sounds/e4.m4a"], - ["F4", "sounds/f4.m4a"], - ["G4", "sounds/g4.m4a"], - ["A5", "sounds/a5.m4a"], - ["B5", "sounds/b5.m4a"], - ["C5", "sounds/c5.m4a"] - ] - } - ], - "previousStatement": null, - "nextStatement": null, - "colour": 355, - "tooltip": "", - "helpUrl": "" - } -]); - -Blockly.JavaScript['play_sound'] = function(block) { - var value = '\'' + block.getFieldValue('VALUE') + '\''; - return 'MusicMaker.queueSound(' + value + ');\n'; -}; +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +Blockly.defineBlocksWithJsonArray([ + // Block for colour picker. + { + "type": "play_sound", + "message0": "Play %1", + "args0": [ + { + "type": "field_dropdown", + "name": "VALUE", + "options": [ + ["C4", "sounds/c4.m4a"], + ["D4", "sounds/d4.m4a"], + ["E4", "sounds/e4.m4a"], + ["F4", "sounds/f4.m4a"], + ["G4", "sounds/g4.m4a"], + ["A5", "sounds/a5.m4a"], + ["B5", "sounds/b5.m4a"], + ["C5", "sounds/c5.m4a"] + ] + } + ], + "previousStatement": null, + "nextStatement": null, + "colour": 355, + "tooltip": "", + "helpUrl": "" + } +]); + +Blockly.JavaScript['play_sound'] = function(block) { + var value = '\'' + block.getFieldValue('VALUE') + '\''; + return 'MusicMaker.queueSound(' + value + ');\n'; +}; diff --git a/demos/codelab/app-complete/styles/index.css b/demos/codelab/app-complete/styles/index.css index 0ef8f3bfc90..96b7096c538 100644 --- a/demos/codelab/app-complete/styles/index.css +++ b/demos/codelab/app-complete/styles/index.css @@ -1,75 +1,75 @@ -main { - width: 400px; - position: relative; - margin: 0 auto; - overflow:hidden; - height: 600px; -} - -header { - background-color: green; - width: 100%; -} - -h1 { - width: 400px; - position: relative; - margin: 0 auto; - color: #fff; - font-size: 1.8em; - line-height: 2.4em; -} - -.mode-edit, -.mode-maker, -.mode-blockly { - display: none; -} - -[mode="maker"] .mode-maker, -[mode="edit"] .mode-edit, -[mode="blockly"] .mode-blockly { - display: block; -} - -.blockly-editor { - position: absolute; - top: 64px; - left: -400px; - transition: left .4s; - height: 460px; - width: 400px; - background-color: #eee; -} - -[mode="blockly"] .blockly-editor { - left: 0; -} - -.maker { - display: flex; - flex-flow: column; - justify-content: space-between; - height: 460px; - width: 400px; -} - -.maker > div { - display: flex; - justify-content: space-between; -} - -.button { - width: 120px; - height: 140px; - color: #fff; - font-size: 3em; - text-align: center; - vertical-align: middle; - line-height: 140px; -} - -.mdl-button { - margin: 1em 0; - float: right; -} +main { + width: 400px; + position: relative; + margin: 0 auto; + overflow:hidden; + height: 600px; +} + +header { + background-color: green; + width: 100%; +} + +h1 { + width: 400px; + position: relative; + margin: 0 auto; + color: #fff; + font-size: 1.8em; + line-height: 2.4em; +} + +.mode-edit, +.mode-maker, +.mode-blockly { + display: none; +} + +[mode="maker"] .mode-maker, +[mode="edit"] .mode-edit, +[mode="blockly"] .mode-blockly { + display: block; +} + +.blockly-editor { + position: absolute; + top: 64px; + left: -400px; + transition: left .4s; + height: 460px; + width: 400px; + background-color: #eee; +} + +[mode="blockly"] .blockly-editor { + left: 0; +} + +.maker { + display: flex; + flex-flow: column; + justify-content: space-between; + height: 460px; + width: 400px; +} + +.maker > div { + display: flex; + justify-content: space-between; +} + +.button { + width: 120px; + height: 140px; + color: #fff; + font-size: 3em; + text-align: center; + vertical-align: middle; + line-height: 140px; +} + +.mdl-button { + margin: 1em 0; + float: right; +} diff --git a/demos/codelab/app/index.html b/demos/codelab/app/index.html index 31eeff776d5..cabb9d0922f 100644 --- a/demos/codelab/app/index.html +++ b/demos/codelab/app/index.html @@ -1,53 +1,53 @@ - - - - - - - - Blockly for the Web Codelab - - - - - - -
-

Music Maker

-

Music Maker Configuration

-
- -
- - - -

Tap any button to edit its code.
When complete, press Done.

- -
-
-
1
-
2
-
3
-
-
-
4
-
5
-
6
-
-
-
7
-
8
-
9
-
-
- -
-
-
-
- - - - - - + + + + + + + + Blockly for the Web Codelab + + + + + + +
+

Music Maker

+

Music Maker Configuration

+
+ +
+ + + +

Tap any button to edit its code.
When complete, press Done.

+ +
+
+
1
+
2
+
3
+
+
+
4
+
5
+
6
+
+
+
7
+
8
+
9
+
+
+ +
+
+
+
+ + + + + + diff --git a/demos/codelab/app/scripts/main.js b/demos/codelab/app/scripts/main.js index 9eef2f96a52..2ad2dfc27b4 100644 --- a/demos/codelab/app/scripts/main.js +++ b/demos/codelab/app/scripts/main.js @@ -1,50 +1,50 @@ -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - (function() { - - let currentButton; - - function handlePlay(event) { - // Add code for playing sound. - } - - function save(button) { - // Add code for saving the behavior of a button. - } - - function handleSave() { - document.body.setAttribute('mode', 'edit'); - save(currentButton); - } - - function enableEditMode() { - document.body.setAttribute('mode', 'edit'); - document.querySelectorAll('.button').forEach(btn => { - btn.removeEventListener('click', handlePlay); - btn.addEventListener('click', enableBlocklyMode); - }); - } - - function enableMakerMode() { - document.body.setAttribute('mode', 'maker'); - document.querySelectorAll('.button').forEach(btn => { - btn.addEventListener('click', handlePlay); - btn.removeEventListener('click', enableBlocklyMode); - }); - } - - function enableBlocklyMode(e) { - document.body.setAttribute('mode', 'blockly'); - currentButton = e.target; - } - - document.querySelector('#edit').addEventListener('click', enableEditMode); - document.querySelector('#done').addEventListener('click', enableMakerMode); - document.querySelector('#save').addEventListener('click', handleSave); - - enableMakerMode(); - -})(); +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + (function() { + + let currentButton; + + function handlePlay(event) { + // Add code for playing sound. + } + + function save(button) { + // Add code for saving the behavior of a button. + } + + function handleSave() { + document.body.setAttribute('mode', 'edit'); + save(currentButton); + } + + function enableEditMode() { + document.body.setAttribute('mode', 'edit'); + document.querySelectorAll('.button').forEach(btn => { + btn.removeEventListener('click', handlePlay); + btn.addEventListener('click', enableBlocklyMode); + }); + } + + function enableMakerMode() { + document.body.setAttribute('mode', 'maker'); + document.querySelectorAll('.button').forEach(btn => { + btn.addEventListener('click', handlePlay); + btn.removeEventListener('click', enableBlocklyMode); + }); + } + + function enableBlocklyMode(e) { + document.body.setAttribute('mode', 'blockly'); + currentButton = e.target; + } + + document.querySelector('#edit').addEventListener('click', enableEditMode); + document.querySelector('#done').addEventListener('click', enableMakerMode); + document.querySelector('#save').addEventListener('click', handleSave); + + enableMakerMode(); + +})(); diff --git a/demos/codelab/app/scripts/music_maker.js b/demos/codelab/app/scripts/music_maker.js index adfefeddcea..9cf1c914247 100644 --- a/demos/codelab/app/scripts/music_maker.js +++ b/demos/codelab/app/scripts/music_maker.js @@ -1,22 +1,22 @@ -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - const MusicMaker = { - queue_: [], - player_: new Audio(), - queueSound: function(soundUrl) { - this.queue_.push(soundUrl); - }, - play: function() { - let next = this.queue_.shift(); - if (next) { - this.player_.src = next; - this.player_.play(); - } - }, -}; - -MusicMaker.player_.addEventListener( - 'ended', MusicMaker.play.bind(MusicMaker)); +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + const MusicMaker = { + queue_: [], + player_: new Audio(), + queueSound: function(soundUrl) { + this.queue_.push(soundUrl); + }, + play: function() { + let next = this.queue_.shift(); + if (next) { + this.player_.src = next; + this.player_.play(); + } + }, +}; + +MusicMaker.player_.addEventListener( + 'ended', MusicMaker.play.bind(MusicMaker)); diff --git a/demos/codelab/app/styles/index.css b/demos/codelab/app/styles/index.css index 0ef8f3bfc90..96b7096c538 100644 --- a/demos/codelab/app/styles/index.css +++ b/demos/codelab/app/styles/index.css @@ -1,75 +1,75 @@ -main { - width: 400px; - position: relative; - margin: 0 auto; - overflow:hidden; - height: 600px; -} - -header { - background-color: green; - width: 100%; -} - -h1 { - width: 400px; - position: relative; - margin: 0 auto; - color: #fff; - font-size: 1.8em; - line-height: 2.4em; -} - -.mode-edit, -.mode-maker, -.mode-blockly { - display: none; -} - -[mode="maker"] .mode-maker, -[mode="edit"] .mode-edit, -[mode="blockly"] .mode-blockly { - display: block; -} - -.blockly-editor { - position: absolute; - top: 64px; - left: -400px; - transition: left .4s; - height: 460px; - width: 400px; - background-color: #eee; -} - -[mode="blockly"] .blockly-editor { - left: 0; -} - -.maker { - display: flex; - flex-flow: column; - justify-content: space-between; - height: 460px; - width: 400px; -} - -.maker > div { - display: flex; - justify-content: space-between; -} - -.button { - width: 120px; - height: 140px; - color: #fff; - font-size: 3em; - text-align: center; - vertical-align: middle; - line-height: 140px; -} - -.mdl-button { - margin: 1em 0; - float: right; -} +main { + width: 400px; + position: relative; + margin: 0 auto; + overflow:hidden; + height: 600px; +} + +header { + background-color: green; + width: 100%; +} + +h1 { + width: 400px; + position: relative; + margin: 0 auto; + color: #fff; + font-size: 1.8em; + line-height: 2.4em; +} + +.mode-edit, +.mode-maker, +.mode-blockly { + display: none; +} + +[mode="maker"] .mode-maker, +[mode="edit"] .mode-edit, +[mode="blockly"] .mode-blockly { + display: block; +} + +.blockly-editor { + position: absolute; + top: 64px; + left: -400px; + transition: left .4s; + height: 460px; + width: 400px; + background-color: #eee; +} + +[mode="blockly"] .blockly-editor { + left: 0; +} + +.maker { + display: flex; + flex-flow: column; + justify-content: space-between; + height: 460px; + width: 400px; +} + +.maker > div { + display: flex; + justify-content: space-between; +} + +.button { + width: 120px; + height: 140px; + color: #fff; + font-size: 3em; + text-align: center; + vertical-align: middle; + line-height: 140px; +} + +.mdl-button { + margin: 1em 0; + float: right; +} diff --git a/demos/custom-dialogs/custom-dialog.js b/demos/custom-dialogs/custom-dialog.js index 04793e3da61..d2b4f8bfe5c 100644 --- a/demos/custom-dialogs/custom-dialog.js +++ b/demos/custom-dialogs/custom-dialog.js @@ -1,161 +1,161 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * An example implementation of how one might replace Blockly's browser - * dialogs. This is just an example, and applications are not encouraged to use - * it verbatim. - * - * @namespace - */ -CustomDialog = {}; - -/** Override Blockly.dialog.alert() with custom implementation. */ -Blockly.dialog.setAlert(function(message, callback) { - console.log('Alert: ' + message); - CustomDialog.show('Alert', message, { - onCancel: callback - }); -}); - -/** Override Blockly.dialog.confirm() with custom implementation. */ -Blockly.dialog.setConfirm(function(message, callback) { - console.log('Confirm: ' + message); - CustomDialog.show('Confirm', message, { - showOkay: true, - onOkay: function() { - callback(true); - }, - showCancel: true, - onCancel: function() { - callback(false); - } - }); -}); - -/** Override Blockly.dialog.prompt() with custom implementation. */ -Blockly.dialog.setPrompt(function(message, defaultValue, callback) { - console.log('Prompt: ' + message); - CustomDialog.show('Prompt', message, { - showInput: true, - showOkay: true, - onOkay: function() { - callback(CustomDialog.inputField.value); - }, - showCancel: true, - onCancel: function() { - callback(null); - } - }); - CustomDialog.inputField.value = defaultValue; -}); - -/** Hides any currently visible dialog. */ -CustomDialog.hide = function() { - if (CustomDialog.backdropDiv_) { - CustomDialog.backdropDiv_.style.display = 'none'; - CustomDialog.dialogDiv_.style.display = 'none'; - } -}; - -/** - * Shows the dialog. - * Allowed options: - * - showOkay: Whether to show the OK button. - * - showCancel: Whether to show the Cancel button. - * - showInput: Whether to show the text input field. - * - onOkay: Callback to handle the okay button. - * - onCancel: Callback to handle the cancel button and backdrop clicks. - */ -CustomDialog.show = function(title, message, options) { - var backdropDiv = CustomDialog.backdropDiv_; - var dialogDiv = CustomDialog.dialogDiv_; - if (!dialogDiv) { - // Generate HTML - backdropDiv = document.createElement('div'); - backdropDiv.id = 'customDialogBackdrop'; - backdropDiv.style.cssText = - 'position: absolute;' + - 'top: 0; left: 0; right: 0; bottom: 0;' + - 'background-color: rgba(0, 0, 0, .7);' + - 'z-index: 100;'; - document.body.appendChild(backdropDiv); - - dialogDiv = document.createElement('div'); - dialogDiv.id = 'customDialog'; - dialogDiv.style.cssText = - 'background-color: #fff;' + - 'width: 400px;' + - 'margin: 20px auto 0;' + - 'padding: 10px;'; - backdropDiv.appendChild(dialogDiv); - - dialogDiv.onclick = function(event) { - event.stopPropagation(); - }; - - CustomDialog.backdropDiv_ = backdropDiv; - CustomDialog.dialogDiv_ = dialogDiv; - } - backdropDiv.style.display = 'block'; - dialogDiv.style.display = 'block'; - - dialogDiv.innerHTML = - '
' + - '

' + - (options.showInput ? '
' : '') + - '
' + - (options.showCancel ? '': '') + - (options.showOkay ? '': '') + - '
'; - dialogDiv.getElementsByClassName('customDialogTitle')[0] - .appendChild(document.createTextNode(title)); - dialogDiv.getElementsByClassName('customDialogMessage')[0] - .appendChild(document.createTextNode(message)); - - var onOkay = function(event) { - CustomDialog.hide(); - options.onOkay && options.onOkay(); - event && event.stopPropagation(); - }; - var onCancel = function(event) { - CustomDialog.hide(); - options.onCancel && options.onCancel(); - event && event.stopPropagation(); - }; - - var dialogInput = document.getElementById('customDialogInput'); - CustomDialog.inputField = dialogInput; - if (dialogInput) { - dialogInput.focus(); - - dialogInput.onkeyup = function(event) { - if (event.keyCode === 13) { - // Process as OK when user hits enter. - onOkay(); - return false; - } else if (event.keyCode === 27) { - // Process as cancel when user hits esc. - onCancel(); - return false; - } - }; - } else { - var okay = document.getElementById('customDialogOkay'); - okay && okay.focus(); - } - - if (options.showOkay) { - document.getElementById('customDialogOkay') - .addEventListener('click', onOkay); - } - if (options.showCancel) { - document.getElementById('customDialogCancel') - .addEventListener('click', onCancel); - } - - backdropDiv.onclick = onCancel; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * An example implementation of how one might replace Blockly's browser + * dialogs. This is just an example, and applications are not encouraged to use + * it verbatim. + * + * @namespace + */ +CustomDialog = {}; + +/** Override Blockly.dialog.alert() with custom implementation. */ +Blockly.dialog.setAlert(function(message, callback) { + console.log('Alert: ' + message); + CustomDialog.show('Alert', message, { + onCancel: callback + }); +}); + +/** Override Blockly.dialog.confirm() with custom implementation. */ +Blockly.dialog.setConfirm(function(message, callback) { + console.log('Confirm: ' + message); + CustomDialog.show('Confirm', message, { + showOkay: true, + onOkay: function() { + callback(true); + }, + showCancel: true, + onCancel: function() { + callback(false); + } + }); +}); + +/** Override Blockly.dialog.prompt() with custom implementation. */ +Blockly.dialog.setPrompt(function(message, defaultValue, callback) { + console.log('Prompt: ' + message); + CustomDialog.show('Prompt', message, { + showInput: true, + showOkay: true, + onOkay: function() { + callback(CustomDialog.inputField.value); + }, + showCancel: true, + onCancel: function() { + callback(null); + } + }); + CustomDialog.inputField.value = defaultValue; +}); + +/** Hides any currently visible dialog. */ +CustomDialog.hide = function() { + if (CustomDialog.backdropDiv_) { + CustomDialog.backdropDiv_.style.display = 'none'; + CustomDialog.dialogDiv_.style.display = 'none'; + } +}; + +/** + * Shows the dialog. + * Allowed options: + * - showOkay: Whether to show the OK button. + * - showCancel: Whether to show the Cancel button. + * - showInput: Whether to show the text input field. + * - onOkay: Callback to handle the okay button. + * - onCancel: Callback to handle the cancel button and backdrop clicks. + */ +CustomDialog.show = function(title, message, options) { + var backdropDiv = CustomDialog.backdropDiv_; + var dialogDiv = CustomDialog.dialogDiv_; + if (!dialogDiv) { + // Generate HTML + backdropDiv = document.createElement('div'); + backdropDiv.id = 'customDialogBackdrop'; + backdropDiv.style.cssText = + 'position: absolute;' + + 'top: 0; left: 0; right: 0; bottom: 0;' + + 'background-color: rgba(0, 0, 0, .7);' + + 'z-index: 100;'; + document.body.appendChild(backdropDiv); + + dialogDiv = document.createElement('div'); + dialogDiv.id = 'customDialog'; + dialogDiv.style.cssText = + 'background-color: #fff;' + + 'width: 400px;' + + 'margin: 20px auto 0;' + + 'padding: 10px;'; + backdropDiv.appendChild(dialogDiv); + + dialogDiv.onclick = function(event) { + event.stopPropagation(); + }; + + CustomDialog.backdropDiv_ = backdropDiv; + CustomDialog.dialogDiv_ = dialogDiv; + } + backdropDiv.style.display = 'block'; + dialogDiv.style.display = 'block'; + + dialogDiv.innerHTML = + '
' + + '

' + + (options.showInput ? '
' : '') + + '
' + + (options.showCancel ? '': '') + + (options.showOkay ? '': '') + + '
'; + dialogDiv.getElementsByClassName('customDialogTitle')[0] + .appendChild(document.createTextNode(title)); + dialogDiv.getElementsByClassName('customDialogMessage')[0] + .appendChild(document.createTextNode(message)); + + var onOkay = function(event) { + CustomDialog.hide(); + options.onOkay && options.onOkay(); + event && event.stopPropagation(); + }; + var onCancel = function(event) { + CustomDialog.hide(); + options.onCancel && options.onCancel(); + event && event.stopPropagation(); + }; + + var dialogInput = document.getElementById('customDialogInput'); + CustomDialog.inputField = dialogInput; + if (dialogInput) { + dialogInput.focus(); + + dialogInput.onkeyup = function(event) { + if (event.keyCode === 13) { + // Process as OK when user hits enter. + onOkay(); + return false; + } else if (event.keyCode === 27) { + // Process as cancel when user hits esc. + onCancel(); + return false; + } + }; + } else { + var okay = document.getElementById('customDialogOkay'); + okay && okay.focus(); + } + + if (options.showOkay) { + document.getElementById('customDialogOkay') + .addEventListener('click', onOkay); + } + if (options.showCancel) { + document.getElementById('customDialogCancel') + .addEventListener('click', onCancel); + } + + backdropDiv.onclick = onCancel; +}; diff --git a/demos/custom-dialogs/index.html b/demos/custom-dialogs/index.html index 9c171802efc..463f0b5e060 100644 --- a/demos/custom-dialogs/index.html +++ b/demos/custom-dialogs/index.html @@ -1,62 +1,62 @@ - - - - - Blockly Demo: Custom Dialog - - - - - - -

Blockly > - Demos > Custom Dialog

- -

This is a simple demo of replacing modal browser dialogs with HTML. - To see how it works, see the source code in - custom-dialog.js -

- -

Try creating new variables, creating variables with names already in - use, or deleting multiple blocks on the workspace. -

- -
- - - - - - - - + + + + + Blockly Demo: Custom Dialog + + + + + + +

Blockly > + Demos > Custom Dialog

+ +

This is a simple demo of replacing modal browser dialogs with HTML. + To see how it works, see the source code in + custom-dialog.js +

+ +

Try creating new variables, creating variables with names already in + use, or deleting multiple blocks on the workspace. +

+ +
+ + + + + + + + diff --git a/demos/custom-fields/index.html b/demos/custom-fields/index.html index 9e681a8b605..c5effffaf71 100644 --- a/demos/custom-fields/index.html +++ b/demos/custom-fields/index.html @@ -1,54 +1,54 @@ - - - - - Blockly Demo: Custom Fields - - - -

Blockly > - Demos > Custom Fields

- -

These demos are intended for developers who want creating custom block fields.

- - - - - - - - - - - -
- - - - - -
- - - - - -
- - + + + + + Blockly Demo: Custom Fields + + + +

Blockly > + Demos > Custom Fields

+ +

These demos are intended for developers who want creating custom block fields.

+ + + + + + + + + + + +
+ + + + + +
+ + + + + +
+ + diff --git a/demos/custom-fields/pitch/blocks.js b/demos/custom-fields/pitch/blocks.js index 75fbae2a74d..a8d9ef710a4 100644 --- a/demos/custom-fields/pitch/blocks.js +++ b/demos/custom-fields/pitch/blocks.js @@ -1,18 +1,18 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Pitch field demo blocks. - */ - -Blockly.Blocks['test_pitch_field'] = { - init: function() { - this.appendDummyInput() - .appendField('pitch') - .appendField(new CustomFields.FieldPitch('7'), 'PITCH'); - this.setStyle('loop_blocks'); - } -}; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Pitch field demo blocks. + */ + +Blockly.Blocks['test_pitch_field'] = { + init: function() { + this.appendDummyInput() + .appendField('pitch') + .appendField(new CustomFields.FieldPitch('7'), 'PITCH'); + this.setStyle('loop_blocks'); + } +}; diff --git a/demos/custom-fields/pitch/field_pitch.js b/demos/custom-fields/pitch/field_pitch.js index d049be2de63..3c50f73c365 100644 --- a/demos/custom-fields/pitch/field_pitch.js +++ b/demos/custom-fields/pitch/field_pitch.js @@ -1,235 +1,235 @@ -/** - * @license - * Copyright 2016 Google LLC - * https://github.com/google/blockly-games - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Music pitch input field. Borrowed from Blockly Games. - */ -'use strict'; - -goog.provide('CustomFields.FieldPitch'); - -goog.require('Blockly.FieldTextInput'); -goog.require('Blockly.utils.math'); -goog.require('Blockly.utils.object'); - -var CustomFields = CustomFields || {}; - -/** - * Class for an editable pitch field. - * @param {string} text The initial content of the field. - * @extends {Blockly.FieldTextInput} - * @constructor - */ -CustomFields.FieldPitch = function(text) { - CustomFields.FieldPitch.superClass_.constructor.call(this, text); - - /** - * Click event data. - * @type {?Blockly.browserEvents.Data} - * @private - */ - this.clickWrapper_ = null; - - /** - * Move event data. - * @type {?Blockly.browserEvents.Data} - * @private - */ - this.moveWrapper_ = null; -}; -Blockly.utils.object.inherits(CustomFields.FieldPitch, Blockly.FieldTextInput); - -/** - * Construct a FieldPitch from a JSON arg object. - * @param {!Object} options A JSON object with options (pitch). - * @return {!CustomFields.FieldPitch} The new field instance. - * @package - * @nocollapse - */ -CustomFields.FieldPitch.fromJson = function(options) { - return new CustomFields.FieldPitch(options['pitch']); -}; - -/** - * All notes available for the picker. - */ -CustomFields.FieldPitch.NOTES = 'C3 D3 E3 F3 G3 A3 B3 C4 D4 E4 F4 G4 A4'.split(/ /); - -/** - * Show the inline free-text editor on top of the text and the note picker. - * @protected - */ -CustomFields.FieldPitch.prototype.showEditor_ = function() { - CustomFields.FieldPitch.superClass_.showEditor_.call(this); - - var div = Blockly.WidgetDiv.getDiv(); - if (!div.firstChild) { - // Mobile interface uses Blockly.dialog.prompt. - return; - } - // Build the DOM. - var editor = this.dropdownCreate_(); - Blockly.DropDownDiv.getContentDiv().appendChild(editor); - - Blockly.DropDownDiv.setColour(this.sourceBlock_.style.colourPrimary, - this.sourceBlock_.style.colourTertiary); - - Blockly.DropDownDiv.showPositionedByField( - this, this.dropdownDispose_.bind(this)); - - // The note picker is different from other fields in that it updates on - // mousemove even if it's not in the middle of a drag. In future we may - // change this behaviour. For now, using bindEvent_ instead of - // bindEventWithChecks_ allows it to work without a mousedown/touchstart. - this.clickWrapper_ = - Blockly.browserEvents.bind(this.imageElement_, 'click', this, this.hide_); - this.moveWrapper_ = Blockly.browserEvents.bind( - this.imageElement_, 'mousemove', this, this.onMouseMove); - - this.updateGraph_(); -}; - -/** - * Create the pitch editor. - * @return {!Element} The newly created pitch picker. - * @private - */ -CustomFields.FieldPitch.prototype.dropdownCreate_ = function() { - this.imageElement_ = document.createElement('div'); - this.imageElement_.id = 'notePicker'; - - return this.imageElement_; -}; - -/** - * Dispose of events belonging to the pitch editor. - * @private - */ -CustomFields.FieldPitch.prototype.dropdownDispose_ = function() { - if (this.clickWrapper_) { - Blockly.browserEvents.unbind(this.clickWrapper_); - this.clickWrapper_ = null; - } - if (this.moveWrapper_) { - Blockly.browserEvents.unbind(this.moveWrapper_); - this.moveWrapper_ = null; - } - this.imageElement_ = null; -}; - -/** - * Hide the editor. - * @private - */ -CustomFields.FieldPitch.prototype.hide_ = function() { - Blockly.WidgetDiv.hide(); - Blockly.DropDownDiv.hideWithoutAnimation(); -}; - -/** - * Set the note to match the mouse's position. - * @param {!Event} e Mouse move event. - */ -CustomFields.FieldPitch.prototype.onMouseMove = function(e) { - var bBox = this.imageElement_.getBoundingClientRect(); - var dy = e.clientY - bBox.top; - var note = Blockly.utils.math.clamp(Math.round(13.5 - dy / 7.5), 0, 12); - this.imageElement_.style.backgroundPosition = (-note * 37) + 'px 0'; - this.setEditorValue_(note); -}; - -/** - * Convert the machine-readable value (0-12) to human-readable text (C3-A4). - * @param {number|string} value The provided value. - * @return {string|undefined} The respective note, or undefined if invalid. - */ -CustomFields.FieldPitch.prototype.valueToNote = function(value) { - return CustomFields.FieldPitch.NOTES[Number(value)]; -}; - -/** - * Convert the human-readable text (C3-A4) to machine-readable value (0-12). - * @param {string} text The provided note. - * @return {number|undefined} The respective value, or undefined if invalid. - */ -CustomFields.FieldPitch.prototype.noteToValue = function(text) { - var normalizedText = text.trim().toUpperCase(); - var i = CustomFields.FieldPitch.NOTES.indexOf(normalizedText); - return i > -1 ? i : undefined; -}; - -/** - * Get the text to be displayed on the field node. - * @return {?string} The HTML value if we're editing, otherwise null. Null means - * the super class will handle it, likely a string cast of value. - * @protected - */ -CustomFields.FieldPitch.prototype.getText_ = function() { - if (this.isBeingEdited_) { - return CustomFields.FieldPitch.superClass_.getText_.call(this); - } - return this.valueToNote(this.getValue()) || null; -}; - -/** - * Transform the provided value into a text to show in the HTML input. - * @param {*} value The value stored in this field. - * @return {string} The text to show on the HTML input. - */ -CustomFields.FieldPitch.prototype.getEditorText_ = function(value) { - return this.valueToNote(value); -}; - -/** - * Transform the text received from the HTML input (note) into a value - * to store in this field. - * @param {string} text Text received from the HTML input. - * @return {*} The value to store. - */ -CustomFields.FieldPitch.prototype.getValueFromEditorText_ = function(text) { - return this.noteToValue(text); -}; - -/** - * Updates the graph when the field rerenders. - * @private - * @override - */ -CustomFields.FieldPitch.prototype.render_ = function() { - CustomFields.FieldPitch.superClass_.render_.call(this); - this.updateGraph_(); -}; - -/** - * Redraw the note picker with the current note. - * @private - */ -CustomFields.FieldPitch.prototype.updateGraph_ = function() { - if (!this.imageElement_) { - return; - } - var i = this.getValue(); - this.imageElement_.style.backgroundPosition = (-i * 37) + 'px 0'; -}; - -/** - * Ensure that only a valid value may be entered. - * @param {*} opt_newValue The input value. - * @return {*} A valid value, or null if invalid. - */ -CustomFields.FieldPitch.prototype.doClassValidation_ = function(opt_newValue) { - if (opt_newValue === null || opt_newValue === undefined) { - return null; - } - var note = this.valueToNote(opt_newValue); - if (note) { - return opt_newValue; - } - return null; -}; - -Blockly.fieldRegistry.register('field_pitch', CustomFields.FieldPitch); +/** + * @license + * Copyright 2016 Google LLC + * https://github.com/google/blockly-games + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Music pitch input field. Borrowed from Blockly Games. + */ +'use strict'; + +goog.provide('CustomFields.FieldPitch'); + +goog.require('Blockly.FieldTextInput'); +goog.require('Blockly.utils.math'); +goog.require('Blockly.utils.object'); + +var CustomFields = CustomFields || {}; + +/** + * Class for an editable pitch field. + * @param {string} text The initial content of the field. + * @extends {Blockly.FieldTextInput} + * @constructor + */ +CustomFields.FieldPitch = function(text) { + CustomFields.FieldPitch.superClass_.constructor.call(this, text); + + /** + * Click event data. + * @type {?Blockly.browserEvents.Data} + * @private + */ + this.clickWrapper_ = null; + + /** + * Move event data. + * @type {?Blockly.browserEvents.Data} + * @private + */ + this.moveWrapper_ = null; +}; +Blockly.utils.object.inherits(CustomFields.FieldPitch, Blockly.FieldTextInput); + +/** + * Construct a FieldPitch from a JSON arg object. + * @param {!Object} options A JSON object with options (pitch). + * @return {!CustomFields.FieldPitch} The new field instance. + * @package + * @nocollapse + */ +CustomFields.FieldPitch.fromJson = function(options) { + return new CustomFields.FieldPitch(options['pitch']); +}; + +/** + * All notes available for the picker. + */ +CustomFields.FieldPitch.NOTES = 'C3 D3 E3 F3 G3 A3 B3 C4 D4 E4 F4 G4 A4'.split(/ /); + +/** + * Show the inline free-text editor on top of the text and the note picker. + * @protected + */ +CustomFields.FieldPitch.prototype.showEditor_ = function() { + CustomFields.FieldPitch.superClass_.showEditor_.call(this); + + var div = Blockly.WidgetDiv.getDiv(); + if (!div.firstChild) { + // Mobile interface uses Blockly.dialog.prompt. + return; + } + // Build the DOM. + var editor = this.dropdownCreate_(); + Blockly.DropDownDiv.getContentDiv().appendChild(editor); + + Blockly.DropDownDiv.setColour(this.sourceBlock_.style.colourPrimary, + this.sourceBlock_.style.colourTertiary); + + Blockly.DropDownDiv.showPositionedByField( + this, this.dropdownDispose_.bind(this)); + + // The note picker is different from other fields in that it updates on + // mousemove even if it's not in the middle of a drag. In future we may + // change this behaviour. For now, using bindEvent_ instead of + // bindEventWithChecks_ allows it to work without a mousedown/touchstart. + this.clickWrapper_ = + Blockly.browserEvents.bind(this.imageElement_, 'click', this, this.hide_); + this.moveWrapper_ = Blockly.browserEvents.bind( + this.imageElement_, 'mousemove', this, this.onMouseMove); + + this.updateGraph_(); +}; + +/** + * Create the pitch editor. + * @return {!Element} The newly created pitch picker. + * @private + */ +CustomFields.FieldPitch.prototype.dropdownCreate_ = function() { + this.imageElement_ = document.createElement('div'); + this.imageElement_.id = 'notePicker'; + + return this.imageElement_; +}; + +/** + * Dispose of events belonging to the pitch editor. + * @private + */ +CustomFields.FieldPitch.prototype.dropdownDispose_ = function() { + if (this.clickWrapper_) { + Blockly.browserEvents.unbind(this.clickWrapper_); + this.clickWrapper_ = null; + } + if (this.moveWrapper_) { + Blockly.browserEvents.unbind(this.moveWrapper_); + this.moveWrapper_ = null; + } + this.imageElement_ = null; +}; + +/** + * Hide the editor. + * @private + */ +CustomFields.FieldPitch.prototype.hide_ = function() { + Blockly.WidgetDiv.hide(); + Blockly.DropDownDiv.hideWithoutAnimation(); +}; + +/** + * Set the note to match the mouse's position. + * @param {!Event} e Mouse move event. + */ +CustomFields.FieldPitch.prototype.onMouseMove = function(e) { + var bBox = this.imageElement_.getBoundingClientRect(); + var dy = e.clientY - bBox.top; + var note = Blockly.utils.math.clamp(Math.round(13.5 - dy / 7.5), 0, 12); + this.imageElement_.style.backgroundPosition = (-note * 37) + 'px 0'; + this.setEditorValue_(note); +}; + +/** + * Convert the machine-readable value (0-12) to human-readable text (C3-A4). + * @param {number|string} value The provided value. + * @return {string|undefined} The respective note, or undefined if invalid. + */ +CustomFields.FieldPitch.prototype.valueToNote = function(value) { + return CustomFields.FieldPitch.NOTES[Number(value)]; +}; + +/** + * Convert the human-readable text (C3-A4) to machine-readable value (0-12). + * @param {string} text The provided note. + * @return {number|undefined} The respective value, or undefined if invalid. + */ +CustomFields.FieldPitch.prototype.noteToValue = function(text) { + var normalizedText = text.trim().toUpperCase(); + var i = CustomFields.FieldPitch.NOTES.indexOf(normalizedText); + return i > -1 ? i : undefined; +}; + +/** + * Get the text to be displayed on the field node. + * @return {?string} The HTML value if we're editing, otherwise null. Null means + * the super class will handle it, likely a string cast of value. + * @protected + */ +CustomFields.FieldPitch.prototype.getText_ = function() { + if (this.isBeingEdited_) { + return CustomFields.FieldPitch.superClass_.getText_.call(this); + } + return this.valueToNote(this.getValue()) || null; +}; + +/** + * Transform the provided value into a text to show in the HTML input. + * @param {*} value The value stored in this field. + * @return {string} The text to show on the HTML input. + */ +CustomFields.FieldPitch.prototype.getEditorText_ = function(value) { + return this.valueToNote(value); +}; + +/** + * Transform the text received from the HTML input (note) into a value + * to store in this field. + * @param {string} text Text received from the HTML input. + * @return {*} The value to store. + */ +CustomFields.FieldPitch.prototype.getValueFromEditorText_ = function(text) { + return this.noteToValue(text); +}; + +/** + * Updates the graph when the field rerenders. + * @private + * @override + */ +CustomFields.FieldPitch.prototype.render_ = function() { + CustomFields.FieldPitch.superClass_.render_.call(this); + this.updateGraph_(); +}; + +/** + * Redraw the note picker with the current note. + * @private + */ +CustomFields.FieldPitch.prototype.updateGraph_ = function() { + if (!this.imageElement_) { + return; + } + var i = this.getValue(); + this.imageElement_.style.backgroundPosition = (-i * 37) + 'px 0'; +}; + +/** + * Ensure that only a valid value may be entered. + * @param {*} opt_newValue The input value. + * @return {*} A valid value, or null if invalid. + */ +CustomFields.FieldPitch.prototype.doClassValidation_ = function(opt_newValue) { + if (opt_newValue === null || opt_newValue === undefined) { + return null; + } + var note = this.valueToNote(opt_newValue); + if (note) { + return opt_newValue; + } + return null; +}; + +Blockly.fieldRegistry.register('field_pitch', CustomFields.FieldPitch); diff --git a/demos/custom-fields/pitch/index.html b/demos/custom-fields/pitch/index.html index 2d614f6b095..428b2be6b82 100644 --- a/demos/custom-fields/pitch/index.html +++ b/demos/custom-fields/pitch/index.html @@ -1,118 +1,118 @@ - - - - - Blockly Demo: Custom Pitch Field - - - - - - - - -

- Blockly > - Demos > - Custom Fields > Pitch Field

- - -

This is a demo of creating custom block fields. In this case the field - is used to select a note pitch. -

- -

All of the custom field implementation is in - demos/custom-fields/pitch/field_pitch.js, including comments on each required - function. -

- -

- - -

- - - - - - -
- - -
-
- - - - - - + + + + + Blockly Demo: Custom Pitch Field + + + + + + + + +

+ Blockly > + Demos > + Custom Fields > Pitch Field

+ + +

This is a demo of creating custom block fields. In this case the field + is used to select a note pitch. +

+ +

All of the custom field implementation is in + demos/custom-fields/pitch/field_pitch.js, including comments on each required + function. +

+ +

+ + +

+ + + + + + +
+ + +
+
+ + + + + + diff --git a/demos/custom-fields/pitch/pitch.css b/demos/custom-fields/pitch/pitch.css index 75d17a35d5f..f4fba0ae0ee 100644 --- a/demos/custom-fields/pitch/pitch.css +++ b/demos/custom-fields/pitch/pitch.css @@ -1,13 +1,13 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - - -#notePicker { - background-image: url(media/notes.png); - border: 1px solid #ccc; - height: 109px; - width: 46px; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + + +#notePicker { + background-image: url(media/notes.png); + border: 1px solid #ccc; + height: 109px; + width: 46px; } \ No newline at end of file diff --git a/demos/custom-fields/turtle/blocks.js b/demos/custom-fields/turtle/blocks.js index 494b10038fa..2ea951efa65 100644 --- a/demos/custom-fields/turtle/blocks.js +++ b/demos/custom-fields/turtle/blocks.js @@ -1,91 +1,91 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Turtle field demo blocks. - */ - -Blockly.Blocks['turtle_basic'] = { - init: function() { - this.appendDummyInput() - .appendField('simple turtle'); - this.appendDummyInput() - .setAlign(Blockly.ALIGN_CENTRE) - .appendField(new CustomFields.FieldTurtle(), 'TURTLE'); - this.setStyle('loop_blocks'); - this.setCommentText('Demonstrates a turtle field with no validator.'); - } -}; - -Blockly.Blocks['turtle_nullifier'] = { - init: function() { - this.appendDummyInput() - .appendField('no trademarks'); - this.appendDummyInput() - .setAlign(Blockly.ALIGN_CENTRE) - .appendField(new CustomFields.FieldTurtle(null, null, null, this.validate) - , 'TURTLE'); - this.setStyle('loop_blocks'); - this.setCommentText('Validates combinations of names and hats to null' + - ' (invalid) if they could be considered infringe-y. This turns the' + - ' turtle field red. Infringe-y combinations are: (Leonardo, Mask),' + - ' (Yertle, Crown), and (Franklin, Propeller).'); - }, - - validate: function(newValue) { - this.cachedValidatedValue_ = { - turtleName: newValue.turtleName, - pattern: newValue.pattern, - hat: newValue.hat, - }; - if ((newValue.turtleName === 'Leonardo' && newValue.hat === 'Mask') || - (newValue.turtleName === 'Yertle' && newValue.hat === 'Crown') || - (newValue.turtleName === 'Franklin') && newValue.hat === 'Propeller') { - - var currentValue = this.getValue(); - if (newValue.turtleName !== currentValue.turtleName) { - // Turtle name changed. - this.cachedValidatedValue_.turtleName = null; - } else { - // Hat must have changed. - this.cachedValidatedValue_.hat = null; - } - - return null; - } - return newValue; - } -}; - -Blockly.Blocks['turtle_changer'] = { - init: function() { - this.appendDummyInput() - .setAlign(Blockly.ALIGN_CENTRE) - .appendField('force hats'); - this.appendDummyInput() - .appendField(new CustomFields.FieldTurtle( - 'Dots', 'Crown', 'Yertle', this.validate), 'TURTLE'); - this.setStyle('loop_blocks'); - this.setCommentText('Validates the input so that certain names always' + - ' have specific hats. The name-hat combinations are: (Leonardo, Mask),' + - ' (Yertle, Crown), (Franklin, Propeller).'); - }, - - validate: function(newValue) { - switch(newValue.turtleName) { - case 'Leonardo': - newValue.hat = 'Mask'; - break; - case 'Yertle': - newValue.hat = 'Crown'; - break; - case 'Franklin': - newValue.hat = 'Propeller'; - break; - } - return newValue; - } -}; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Turtle field demo blocks. + */ + +Blockly.Blocks['turtle_basic'] = { + init: function() { + this.appendDummyInput() + .appendField('simple turtle'); + this.appendDummyInput() + .setAlign(Blockly.ALIGN_CENTRE) + .appendField(new CustomFields.FieldTurtle(), 'TURTLE'); + this.setStyle('loop_blocks'); + this.setCommentText('Demonstrates a turtle field with no validator.'); + } +}; + +Blockly.Blocks['turtle_nullifier'] = { + init: function() { + this.appendDummyInput() + .appendField('no trademarks'); + this.appendDummyInput() + .setAlign(Blockly.ALIGN_CENTRE) + .appendField(new CustomFields.FieldTurtle(null, null, null, this.validate) + , 'TURTLE'); + this.setStyle('loop_blocks'); + this.setCommentText('Validates combinations of names and hats to null' + + ' (invalid) if they could be considered infringe-y. This turns the' + + ' turtle field red. Infringe-y combinations are: (Leonardo, Mask),' + + ' (Yertle, Crown), and (Franklin, Propeller).'); + }, + + validate: function(newValue) { + this.cachedValidatedValue_ = { + turtleName: newValue.turtleName, + pattern: newValue.pattern, + hat: newValue.hat, + }; + if ((newValue.turtleName === 'Leonardo' && newValue.hat === 'Mask') || + (newValue.turtleName === 'Yertle' && newValue.hat === 'Crown') || + (newValue.turtleName === 'Franklin') && newValue.hat === 'Propeller') { + + var currentValue = this.getValue(); + if (newValue.turtleName !== currentValue.turtleName) { + // Turtle name changed. + this.cachedValidatedValue_.turtleName = null; + } else { + // Hat must have changed. + this.cachedValidatedValue_.hat = null; + } + + return null; + } + return newValue; + } +}; + +Blockly.Blocks['turtle_changer'] = { + init: function() { + this.appendDummyInput() + .setAlign(Blockly.ALIGN_CENTRE) + .appendField('force hats'); + this.appendDummyInput() + .appendField(new CustomFields.FieldTurtle( + 'Dots', 'Crown', 'Yertle', this.validate), 'TURTLE'); + this.setStyle('loop_blocks'); + this.setCommentText('Validates the input so that certain names always' + + ' have specific hats. The name-hat combinations are: (Leonardo, Mask),' + + ' (Yertle, Crown), (Franklin, Propeller).'); + }, + + validate: function(newValue) { + switch(newValue.turtleName) { + case 'Leonardo': + newValue.hat = 'Mask'; + break; + case 'Yertle': + newValue.hat = 'Crown'; + break; + case 'Franklin': + newValue.hat = 'Propeller'; + break; + } + return newValue; + } +}; diff --git a/demos/custom-fields/turtle/field_turtle.js b/demos/custom-fields/turtle/field_turtle.js index a24bfb7d6b1..e7067751efa 100644 --- a/demos/custom-fields/turtle/field_turtle.js +++ b/demos/custom-fields/turtle/field_turtle.js @@ -1,747 +1,747 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview A field used to customize a turtle. - */ -'use strict'; - -// You must provide the constructor for your custom field. -goog.provide('CustomFields.FieldTurtle'); - -// You must require the abstract field class to inherit from. -goog.require('Blockly.Field'); -goog.require('Blockly.fieldRegistry'); -goog.require('Blockly.utils'); -goog.require('Blockly.utils.dom'); -goog.require('Blockly.utils.object'); -goog.require('Blockly.utils.Size'); - -var CustomFields = CustomFields || {}; - -// Generally field's values should be optional, and have logical defaults. -// If this is not possible (for example image fields can't have logical -// defaults) the field should throw a clear error when a value is not provided. -// Editable fields also generally accept validators, so we will accept a -// validator. -CustomFields.FieldTurtle = function( - opt_pattern, opt_hat, opt_turtleName, opt_validator) { - - // The turtle field contains an object as its value, so we need to compile - // the parameters into an object. - var value = {}; - value.pattern = opt_pattern || CustomFields.FieldTurtle.PATTERNS[0]; - value.hat = opt_hat || CustomFields.FieldTurtle.HATS[0]; - value.turtleName = opt_turtleName || CustomFields.FieldTurtle.NAMES[0]; - - // A field constructor should always call its parent constructor, because - // that helps keep the code organized and DRY. - CustomFields.FieldTurtle.superClass_.constructor.call( - this, value, opt_validator); - - /** - * The size of the area rendered by the field. - * @type {Blockly.utils.Size} - * @protected - * @override - */ - this.size_ = new Blockly.utils.Size(0, 0); -}; -Blockly.utils.object.inherits(CustomFields.FieldTurtle, Blockly.Field); - -// This allows the field to be constructed using a JSON block definition. -CustomFields.FieldTurtle.fromJson = function(options) { - // In this case we simply pass the JSON options along to the constructor, - // but you can also use this to get message references, and other such things. - return new CustomFields.FieldTurtle( - options['pattern'], - options['hat'], - options['turtleName']); -}; - -// Since this field is editable we must also define serializable as true -// (for backwards compatibility reasons serializable is false by default). -CustomFields.FieldTurtle.prototype.SERIALIZABLE = true; - -// The cursor property defines what the mouse will look like when the user -// hovers over the field. By default the cursor will be whatever -// .blocklyDraggable's cursor is defined as (vis. grab). Most fields define -// this property as 'default'. -CustomFields.FieldTurtle.prototype.CURSOR = 'pointer'; - -// How far to move the text to keep it to the right of the turtle. -// May change if the turtle gets fancy enough. -CustomFields.FieldTurtle.prototype.TEXT_OFFSET_X = 80; - -// These are the different options for our turtle. Being declared this way -// means they are static, and not translatable. If you want to do something -// similar, but make it translatable you should set up your options like a -// dropdown field, with language-neutral keys and human-readable values. -CustomFields.FieldTurtle.PATTERNS = - ['Dots', 'Stripes', 'Hexagons']; -CustomFields.FieldTurtle.HATS = - ['Stovepipe', 'Crown', 'Propeller', 'Mask', 'Fedora']; -CustomFields.FieldTurtle.NAMES = - ['Yertle', 'Franklin', 'Crush', 'Leonardo', 'Bowser', 'Squirtle', 'Oogway']; - -// Used to keep track of our editor event listeners, so they can be -// properly disposed of when the field closes. You can keep track of your -// listeners however you want, just be sure to dispose of them! -CustomFields.FieldTurtle.prototype.editorListeners_ = []; - -// Used to create the DOM of our field. -CustomFields.FieldTurtle.prototype.initView = function() { - // Because we want to have both a borderRect_ (background) and a - // textElement_ (text) we can call the super-function. If we only wanted - // one or the other, we could call their individual createX functions. - CustomFields.FieldTurtle.superClass_.initView.call(this); - - // Note that the field group is created by the abstract field's init_ - // function. This means that *all elements* should be children of the - // fieldGroup_. - this.createView_(); -}; - -// Updates how the field looks depending on if it is editable or not. -CustomFields.FieldTurtle.prototype.updateEditable = function() { - if (!this.fieldGroup_) { - // Not initialized yet. - return; - } - // The default functionality just makes it so the borderRect_ does not - // highlight when hovered. - Blockly.FieldColour.superClass_.updateEditable.call(this); - // Things like this are best applied to the clickTarget_. By default the - // click target is the same as getSvgRoot, which by default is the - // fieldGroup_. - var group = this.getClickTarget_(); - if (!this.isCurrentlyEditable()) { - group.style.cursor = 'not-allowed'; - } else { - group.style.cursor = this.CURSOR; - } -}; - -// Gets the text to display when the block is collapsed -CustomFields.FieldTurtle.prototype.getText = function() { - var text = this.value_.turtleName + ' wearing a ' + this.value_.hat; - if (this.value_.hat === 'Stovepipe' || this.value_.hat === 'Propeller') { - text += ' hat'; - } - return text; -}; - -// Makes sure new field values (given to setValue) are valid, meaning -// something this field can legally "hold". Class validators can either change -// the input value, or return null if the input value is invalid. Called by -// the setValue() function. -CustomFields.FieldTurtle.prototype.doClassValidation_ = function(newValue) { - // Undefined signals that we want the value to remain unchanged. This is a - // special feature of turtle fields, but could be useful for other - // multi-part fields. - if (newValue.pattern === undefined) { - newValue.pattern = this.displayValue_ && this.displayValue_.pattern; - // We only want to allow patterns that are part of our pattern list. - // Anything else is invalid, so we return null. - } else if (CustomFields.FieldTurtle.PATTERNS.indexOf(newValue.pattern) === -1) { - newValue.pattern = null; - } - - if (newValue.hat === undefined) { - newValue.hat = this.displayValue_ && this.displayValue_.hat; - } else if (CustomFields.FieldTurtle.HATS.indexOf(newValue.hat) === -1) { - newValue.hat = null; - } - - if (newValue.turtleName === undefined) { - newValue.turtleName = this.displayValue_ && this.displayValue_.turtleName; - } else if (CustomFields.FieldTurtle.NAMES.indexOf(newValue.turtleName) === -1) { - newValue.turtleName = null; - } - - // This is a strategy for dealing with defaults on multi-part values. - // The class validator sets individual properties of the object to null - // to indicate that they are invalid, and then caches that object to the - // cachedValidatedValue_ property. This way the field can, for - // example, properly handle an invalid pattern, combined with a valid hat. - // This can also be done with local validators. - this.cachedValidatedValue_ = newValue; - - // Always be sure to return! - if (!newValue.pattern || !newValue.hat || !newValue.turtleName) { - return null; - } - return newValue; -}; - -// Saves the new field value. Called by the setValue function. -CustomFields.FieldTurtle.prototype.doValueUpdate_ = function(newValue) { - // The default function sets this field's this.value_ property to the - // newValue, and its this.isDirty_ property to true. The isDirty_ property - // tells the setValue function whether the field needs to be re-rendered. - CustomFields.FieldTurtle.superClass_.doValueUpdate_.call(this, newValue); - this.displayValue_ = newValue; - // Since this field has custom UI for invalid values, we also want to make - // sure it knows it is now valid. - this.isValueInvalid_ = false; -}; - -// Notifies that the field that the new value was invalid. Called by -// setValue function. Can either be triggered by the class validator, or the -// local validator. -CustomFields.FieldTurtle.prototype.doValueInvalid_ = function(invalidValue) { - // By default this function is no-op, meaning if the new value is invalid - // the field simply won't be updated. This field has custom UI for invalid - // values, so we override this function. - - // We want the value to be displayed like normal. - // But we want to flag it as invalid, so the render_ function knows to - // make the borderRect_ red. - this.displayValue_ = invalidValue; - this.isDirty_ = true; - this.isValueInvalid_ = true; -}; - -// Updates the field's on-block display based on the current display value. -CustomFields.FieldTurtle.prototype.render_ = function() { - var value = this.displayValue_; - - // Always do editor updates inside render. This makes sure the editor - // always displays the correct value, even if a validator changes it. - if (this.editor_) { - this.renderEditor_(); - } - - this.stovepipe_.style.display = 'none'; - this.crown_.style.display = 'none'; - this.mask_.style.display = 'none'; - this.propeller_.style.display = 'none'; - this.fedora_.style.display = 'none'; - switch(value.hat) { - case 'Stovepipe': - this.stovepipe_.style.display = ''; - this.turtleGroup_.setAttribute('transform', 'translate(0,12)'); - this.textElement_.setAttribute( - 'transform', 'translate(' + this.TEXT_OFFSET_X + ',20)'); - break; - case 'Crown': - this.crown_.style.display = ''; - this.turtleGroup_.setAttribute('transform', 'translate(0,9)'); - this.textElement_.setAttribute( - 'transform', 'translate(' + this.TEXT_OFFSET_X + ',16)'); - break; - case 'Mask': - this.mask_.style.display = ''; - this.turtleGroup_.setAttribute('transform', 'translate(0,6)'); - this.textElement_.setAttribute('transform', - 'translate(' + this.TEXT_OFFSET_X + ',12)'); - break; - case 'Propeller': - this.propeller_.style.display = ''; - this.turtleGroup_.setAttribute('transform', 'translate(0,6)'); - this.textElement_.setAttribute('transform', - 'translate(' + this.TEXT_OFFSET_X + ',12)'); - break; - case 'Fedora': - this.fedora_.style.display = ''; - this.turtleGroup_.setAttribute('transform', 'translate(0,6)'); - this.textElement_.setAttribute('transform', - 'translate(' + this.TEXT_OFFSET_X + ',12)'); - break; - } - - switch(value.pattern) { - case 'Dots': - this.shellPattern_.setAttribute('fill', 'url(#polkadots)'); - break; - case 'Stripes': - this.shellPattern_.setAttribute('fill', 'url(#stripes)'); - break; - case 'Hexagons': - this.shellPattern_.setAttribute('fill', 'url(#hexagons)'); - break; - } - - // Always modify the textContent_ rather than the textElement_. This - // allows fields to append DOM to the textElement (e.g. the angle field). - this.textContent_.nodeValue = value.turtleName; - - if (this.isValueInvalid_) { - this.borderRect_.style.fill = '#f99'; - this.borderRect_.style.fillOpacity = 1; - } else { - this.borderRect_.style.fill = '#fff'; - this.borderRect_.style.fillOpacity = 0.6; - } - - this.updateSize_(); -}; - -CustomFields.FieldTurtle.prototype.renderEditor_ = function() { - var value = this.displayValue_; - - // .textElement is a property assigned to the element. - // It allows the text to be edited without destroying the warning icon. - this.editor_.patternText.textElement.nodeValue = value.pattern; - this.editor_.hatText.textElement.nodeValue = value.hat; - this.editor_.turtleNameText.textElement.nodeValue = value.turtleName; - - this.editor_.patternText.warningIcon.style.display = - this.cachedValidatedValue_.pattern ? 'none' : ''; - this.editor_.hatText.warningIcon.style.display = - this.cachedValidatedValue_.hat ? 'none' : ''; - this.editor_.turtleNameText.warningIcon.style.display = - this.cachedValidatedValue_.turtleName ? 'none' : ''; -}; - -// Used to update the size of the field. This function's logic could be simply -// included inside render_ (it is not called anywhere else), but it is -// usually separated to keep code more organized. -CustomFields.FieldTurtle.prototype.updateSize_ = function() { - var bbox = this.movableGroup_.getBBox(); - var width = bbox.width; - var height = bbox.height; - if (this.borderRect_) { - width += this.constants_.FIELD_BORDER_RECT_X_PADDING * 2; - height += this.constants_.FIELD_BORDER_RECT_X_PADDING * 2; - this.borderRect_.setAttribute('width', width); - this.borderRect_.setAttribute('height', height); - } - // Note how both the width and the height can be dynamic. - this.size_.width = width; - this.size_.height = height; -}; - -// Called when the field is clicked. It is usually used to show an editor, -// but it can also be used for other things e.g. the checkbox field uses -// this function to check/uncheck itself. -CustomFields.FieldTurtle.prototype.showEditor_ = function() { - this.editor_ = this.dropdownCreate_(); - this.renderEditor_(); - Blockly.DropDownDiv.getContentDiv().appendChild(this.editor_); - - // These allow us to have the editor match the block's colour. - var fillColour = this.sourceBlock_.getColour(); - Blockly.DropDownDiv.setColour(fillColour, - this.sourceBlock_.style.colourTertiary); - - // Always pass the dropdown div a dispose function so that you can clean - // up event listeners when the editor closes. - Blockly.DropDownDiv.showPositionedByField( - this, this.dropdownDispose_.bind(this)); -}; - -// Creates the UI of the editor, and adds event listeners to it. -CustomFields.FieldTurtle.prototype.dropdownCreate_ = function() { - var createRow = function(table) { - var row = table.appendChild(document.createElement('tr')); - row.className = 'row'; - return row; - }; - var createLeftArrow = function(row) { - var cell = document.createElement('div'); - cell.className = 'arrow'; - var leftArrow = document.createElement('button'); - leftArrow.setAttribute('type', 'button'); - leftArrow.textContent = '<'; - cell.appendChild(leftArrow); - row.appendChild(cell); - return cell; - }; - var createTextNode = function(row, text) { - var cell = document.createElement('div'); - cell.className = 'text'; - var text = document.createTextNode(text); - cell.appendChild(text); - cell.textElement = text; - var warning = document.createElement('img'); - warning.setAttribute('src', 'media/warning.svg'); - warning.setAttribute('height', '16px'); - warning.setAttribute('width', '16px'); - warning.style.marginLeft = '4px'; - cell.appendChild(warning); - cell.warningIcon = warning; - row.appendChild(cell); - return cell; - }; - var createRightArrow = function(row) { - var cell = document.createElement('div'); - cell.className = 'arrow'; - var rightArrow = document.createElement('button'); - rightArrow.setAttribute('type', 'button'); - rightArrow.textContent = '>'; - cell.appendChild(rightArrow); - row.appendChild(cell); - return cell; - }; - var createArrowListener = function(variable, array, direction) { - return function() { - var currentIndex = array.indexOf(this.displayValue_[variable]); - currentIndex += direction; - if (currentIndex <= -1) { - currentIndex = array.length - 1; - } else if (currentIndex >= array.length) { - currentIndex = 0; - } - var value = {}; - value[variable] = array[currentIndex]; - this.setValue(value); - }; - }; - - var widget = document.createElement('div'); - widget.className = 'customFieldsTurtleWidget blocklyNonSelectable'; - - var table = document.createElement('div'); - table.className = 'table'; - widget.appendChild(table); - - var row = createRow(table); - var leftArrow = createLeftArrow(row); - widget.patternText = createTextNode(row, this.displayValue_.pattern); - var rightArrow = createRightArrow(row); - this.editorListeners_.push(Blockly.browserEvents.bind( - leftArrow, 'mouseup', this, - createArrowListener('pattern', CustomFields.FieldTurtle.PATTERNS, -1))); - this.editorListeners_.push(Blockly.browserEvents.bind( - rightArrow, 'mouseup', this, - createArrowListener('pattern', CustomFields.FieldTurtle.PATTERNS, 1))); - - row = createRow(table); - leftArrow = createLeftArrow(row); - widget.hatText = createTextNode(row, this.displayValue_.hat); - rightArrow = createRightArrow(row); - this.editorListeners_.push(Blockly.browserEvents.bind( - leftArrow, 'mouseup', this, - createArrowListener('hat', CustomFields.FieldTurtle.HATS, -1))); - this.editorListeners_.push(Blockly.browserEvents.bind( - rightArrow, 'mouseup', this, - createArrowListener('hat', CustomFields.FieldTurtle.HATS, 1))); - - row = createRow(table); - leftArrow = createLeftArrow(row); - widget.turtleNameText = createTextNode(row, this.displayValue_.turtleName); - rightArrow = createRightArrow(row); - this.editorListeners_.push(Blockly.browserEvents.bind( - leftArrow, 'mouseup', this, - createArrowListener('turtleName', CustomFields.FieldTurtle.NAMES, -1))); - this.editorListeners_.push(Blockly.browserEvents.bind( - rightArrow, 'mouseup', this, - createArrowListener('turtleName', CustomFields.FieldTurtle.NAMES, 1))); - - var randomizeButton = document.createElement('button'); - randomizeButton.className = 'randomize'; - randomizeButton.setAttribute('type', 'button'); - randomizeButton.textContent = 'randomize turtle'; - this.editorListeners_.push( - Blockly.browserEvents.bind(randomizeButton, 'mouseup', this, function() { - var value = {}; - value.pattern = CustomFields.FieldTurtle.PATTERNS[Math.floor( - Math.random() * CustomFields.FieldTurtle.PATTERNS.length)]; - - value.hat = CustomFields.FieldTurtle.HATS[Math.floor( - Math.random() * CustomFields.FieldTurtle.HATS.length)]; - - value.turtleName = CustomFields.FieldTurtle.NAMES[Math.floor( - Math.random() * CustomFields.FieldTurtle.NAMES.length)]; - - this.setValue(value); - })); - widget.appendChild(randomizeButton); - - return widget; -}; - -// Cleans up any event listeners that were attached to the now hidden editor. -CustomFields.FieldTurtle.prototype.dropdownDispose_ = function() { - for (var i = this.editorListeners_.length, listener; - listener = this.editorListeners_[i]; i--) { - Blockly.browserEvents.unbind(listener); - this.editorListeners_.pop(); - } -}; - -// Updates the field's colour based on the colour of the block. Called by -// block.applyColour. -CustomFields.FieldTurtle.prototype.applyColour = function() { - if (!this.sourceBlock_) { - return; - } - // The getColourX functions are the best way to access the colours of a block. - var isShadow = this.sourceBlock_.isShadow(); - var fillColour = isShadow ? - this.sourceBlock_.getColourShadow() : this.sourceBlock_.getColour(); - // This is technically a package function, meaning it could change. - var borderColour = isShadow ? fillColour : - this.sourceBlock_.style.colourTertiary; - - if (this.turtleGroup_) { - var child = this.turtleGroup_.firstChild; - while(child) { - // If it is a text node, continue. - if (child.nodeType === 3) { - child = child.nextSibling; - continue; - } - // Or if it is a non-turtle node, continue. - var className = child.getAttribute('class'); - if (!className || className.indexOf('turtleBody') === -1) { - child = child.nextSibling; - continue; - } - - child.style.fill = fillColour; - child.style.stroke = borderColour; - child = child.nextSibling; - } - } -}; - -// Saves the field's value to an XML node. Allows for custom serialization. -CustomFields.FieldTurtle.prototype.toXml = function(fieldElement) { - // The default implementation of this function creates a node that looks - // like this: (where value is returned by getValue()) - // value - // But this doesn't work for our field because it stores an /object/. - - fieldElement.setAttribute('pattern', this.value_.pattern); - fieldElement.setAttribute('hat', this.value_.hat); - // The textContent usually contains whatever is closest to the field's - // 'value'. The textContent doesn't need to contain anything, but saving - // something to it does aid in readability. - fieldElement.textContent = this.value_.turtleName; - - // Always return the element! - return fieldElement; -}; - -// Sets the field's value based on an XML node. Allows for custom -// de-serialization. -CustomFields.FieldTurtle.prototype.fromXml = function(fieldElement) { - // Because we had to do custom serialization for this field, we also need - // to do custom de-serialization. - - var value = {}; - value.pattern = fieldElement.getAttribute('pattern'); - value.hat = fieldElement.getAttribute('hat'); - value.turtleName = fieldElement.textContent; - // The end goal is to call this.setValue() - this.setValue(value); -}; - -// Blockly needs to know the JSON name of this field. Usually this is -// registered at the bottom of the field class. -Blockly.fieldRegistry.register('field_turtle', CustomFields.FieldTurtle); - -// Called by initView to create all of the SVGs. This is just used to keep -// the code more organized. -CustomFields.FieldTurtle.prototype.createView_ = function() { - this.movableGroup_ = Blockly.utils.dom.createSvgElement('g', - { - 'transform': 'translate(0,5)' - }, this.fieldGroup_); - var scaleGroup = Blockly.utils.dom.createSvgElement('g', - { - 'transform': 'scale(1.5)' - }, this.movableGroup_); - this.turtleGroup_ = Blockly.utils.dom.createSvgElement('g', - { - // Makes the smaller turtle graphic align with the hats. - 'class': 'turtleBody' - }, scaleGroup); - var tail = Blockly.utils.dom.createSvgElement('path', - { - 'class': 'turtleBody', - 'd': 'M7,27.5H0.188c3.959-2,6.547-2.708,8.776-5.237', - 'transform': 'translate(0.312 -12.994)' - }, this.turtleGroup_); - var legLeft = Blockly.utils.dom.createSvgElement('rect', - { - 'class': 'turtleBody', - 'x': 8.812, - 'y': 12.506, - 'width': 4, - 'height': 10 - }, this.turtleGroup_); - var legRight = Blockly.utils.dom.createSvgElement('rect', - { - 'class': 'turtleBody', - 'x': 28.812, - 'y': 12.506, - 'width': 4, - 'height': 10 - }, this.turtleGroup_); - var head = Blockly.utils.dom.createSvgElement('path', - { - 'class': 'turtleBody', - 'd': 'M47.991,17.884c0,1.92-2.144,3.477-4.788,3.477a6.262,6.262,0,0,1-2.212-.392c-0.2-.077-1.995,2.343-4.866,3.112a17.019,17.019,0,0,1-6.01.588c-4.413-.053-2.5-3.412-2.745-3.819-0.147-.242,2.232.144,6.126-0.376a7.392,7.392,0,0,0,4.919-2.588c0-1.92,2.144-3.477,4.788-3.477S47.991,15.964,47.991,17.884Z', - 'transform': 'translate(0.312 -12.994)' - }, this.turtleGroup_); - var smile = Blockly.utils.dom.createSvgElement('path', - { - 'class': 'turtleBody', - 'd': 'M42.223,18.668a3.614,3.614,0,0,0,2.728,2.38', - 'transform': 'translate(0.312 -12.994)' - }, this.turtleGroup_); - var sclera = Blockly.utils.dom.createSvgElement('ellipse', - { - 'cx': 43.435, - 'cy': 2.61, - 'rx': 2.247, - 'ry': 2.61, - 'fill': '#fff' - }, this.turtleGroup_); - var pupil = Blockly.utils.dom.createSvgElement('ellipse', - { - 'cx': 44.166, - 'cy': 3.403, - 'rx': 1.318, - 'ry': 1.62 - }, this.turtleGroup_); - var shell = Blockly.utils.dom.createSvgElement('path', - { - 'class': 'turtleBody', - 'd': 'M33.4,27.5H7.193c0-6,5.866-13.021,13.1-13.021S33.4,21.5,33.4,27.5Z', - 'transform': 'translate(0.312 -12.994)' - }, this.turtleGroup_); - this.shellPattern_ = Blockly.utils.dom.createSvgElement('path', - { - 'd': 'M33.4,27.5H7.193c0-6,5.866-13.021,13.1-13.021S33.4,21.5,33.4,27.5Z', - 'transform': 'translate(0.312 -12.994)' - }, this.turtleGroup_); - - this.stovepipe_ = Blockly.utils.dom.createSvgElement('image', - { - 'width': '50', - 'height': '18' - }, scaleGroup); - this.stovepipe_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', - 'media/stovepipe.svg'); - this.crown_ = Blockly.utils.dom.createSvgElement('image', - { - 'width': '50', - 'height': '15' - }, scaleGroup); - this.crown_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', - 'media/crown.svg'); - this.mask_ = Blockly.utils.dom.createSvgElement('image', - { - 'width': '50', - 'height': '24' - }, scaleGroup); - this.mask_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', - 'media/mask.svg'); - this.propeller_ = Blockly.utils.dom.createSvgElement('image', - { - 'width': '50', - 'height': '11' - }, scaleGroup); - this.propeller_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', - 'media/propeller.svg'); - this.fedora_ = Blockly.utils.dom.createSvgElement('image', - { - 'width': '50', - 'height': '12' - }, scaleGroup); - this.fedora_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', - 'media/fedora.svg'); - - // Even if we're not going to display it right away, we want to create all - // of our DOM elements inside this function. - this.crown_.style.display = 'none'; - this.mask_.style.display = 'none'; - this.propeller_.style.display = 'none'; - this.fedora_.style.display = 'none'; - - this.movableGroup_.appendChild(this.textElement_); - this.textElement_.setAttribute( - 'transform', 'translate(' + this.TEXT_OFFSET_X + ',20)'); - - this.defs_ = Blockly.utils.dom.createSvgElement('defs', {}, this.fieldGroup_); - this.polkadotPattern_ = Blockly.utils.dom.createSvgElement('pattern', - { - 'id': 'polkadots', - 'patternUnits': 'userSpaceOnUse', - 'width': 10, - 'height': 10 - }, this.defs_); - this.polkadotGroup_ = Blockly.utils.dom.createSvgElement( - 'g', {}, this.polkadotPattern_); - Blockly.utils.dom.createSvgElement('circle', - { - 'cx': 2.5, - 'cy': 2.5, - 'r': 2.5, - 'fill': '#000', - 'fill-opacity': .3 - }, this.polkadotGroup_); - Blockly.utils.dom.createSvgElement('circle', - { - 'cx': 7.5, - 'cy': 7.5, - 'r': 2.5, - 'fill': '#000', - 'fill-opacity': .3 - }, this.polkadotGroup_); - - this.hexagonPattern_ = Blockly.utils.dom.createSvgElement('pattern', - { - 'id': 'hexagons', - 'patternUnits': 'userSpaceOnUse', - 'width': 10, - 'height': 8.68, - 'patternTransform': 'translate(2) rotate(45)' - }, this.defs_); - Blockly.utils.dom.createSvgElement('polygon', - { - 'id': 'hex', - 'points': '4.96,4.4 7.46,5.84 7.46,8.74 4.96,10.18 2.46,8.74 2.46,5.84', - 'stroke': '#000', - 'stroke-opacity': .3, - 'fill-opacity': 0 - }, this.hexagonPattern_); - var use = Blockly.utils.dom.createSvgElement('use', - { - 'x': 5, - }, this.hexagonPattern_); - use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#hex'); - use = Blockly.utils.dom.createSvgElement('use', - { - 'x': -5, - }, this.hexagonPattern_); - use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#hex'); - use = Blockly.utils.dom.createSvgElement('use', - { - 'x': 2.5, - 'y': -4.34 - }, this.hexagonPattern_); - use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#hex'); - use = Blockly.utils.dom.createSvgElement('use', - { - 'x': -2.5, - 'y': -4.34 - }, this.hexagonPattern_); - use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#hex'); - - this.stripesPattern_ = Blockly.utils.dom.createSvgElement('pattern', - { - 'id': 'stripes', - 'patternUnits': 'userSpaceOnUse', - 'width': 5, - 'height': 10, - 'patternTransform': 'rotate(45)' - }, this.defs_); - Blockly.utils.dom.createSvgElement('line', - { - 'x1': 0, - 'y1': 0, - 'x2': 0, - 'y2': 10, - 'stroke-width': 4, - 'stroke': '#000', - 'stroke-opacity': .3 - }, this.stripesPattern_); -}; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview A field used to customize a turtle. + */ +'use strict'; + +// You must provide the constructor for your custom field. +goog.provide('CustomFields.FieldTurtle'); + +// You must require the abstract field class to inherit from. +goog.require('Blockly.Field'); +goog.require('Blockly.fieldRegistry'); +goog.require('Blockly.utils'); +goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Size'); + +var CustomFields = CustomFields || {}; + +// Generally field's values should be optional, and have logical defaults. +// If this is not possible (for example image fields can't have logical +// defaults) the field should throw a clear error when a value is not provided. +// Editable fields also generally accept validators, so we will accept a +// validator. +CustomFields.FieldTurtle = function( + opt_pattern, opt_hat, opt_turtleName, opt_validator) { + + // The turtle field contains an object as its value, so we need to compile + // the parameters into an object. + var value = {}; + value.pattern = opt_pattern || CustomFields.FieldTurtle.PATTERNS[0]; + value.hat = opt_hat || CustomFields.FieldTurtle.HATS[0]; + value.turtleName = opt_turtleName || CustomFields.FieldTurtle.NAMES[0]; + + // A field constructor should always call its parent constructor, because + // that helps keep the code organized and DRY. + CustomFields.FieldTurtle.superClass_.constructor.call( + this, value, opt_validator); + + /** + * The size of the area rendered by the field. + * @type {Blockly.utils.Size} + * @protected + * @override + */ + this.size_ = new Blockly.utils.Size(0, 0); +}; +Blockly.utils.object.inherits(CustomFields.FieldTurtle, Blockly.Field); + +// This allows the field to be constructed using a JSON block definition. +CustomFields.FieldTurtle.fromJson = function(options) { + // In this case we simply pass the JSON options along to the constructor, + // but you can also use this to get message references, and other such things. + return new CustomFields.FieldTurtle( + options['pattern'], + options['hat'], + options['turtleName']); +}; + +// Since this field is editable we must also define serializable as true +// (for backwards compatibility reasons serializable is false by default). +CustomFields.FieldTurtle.prototype.SERIALIZABLE = true; + +// The cursor property defines what the mouse will look like when the user +// hovers over the field. By default the cursor will be whatever +// .blocklyDraggable's cursor is defined as (vis. grab). Most fields define +// this property as 'default'. +CustomFields.FieldTurtle.prototype.CURSOR = 'pointer'; + +// How far to move the text to keep it to the right of the turtle. +// May change if the turtle gets fancy enough. +CustomFields.FieldTurtle.prototype.TEXT_OFFSET_X = 80; + +// These are the different options for our turtle. Being declared this way +// means they are static, and not translatable. If you want to do something +// similar, but make it translatable you should set up your options like a +// dropdown field, with language-neutral keys and human-readable values. +CustomFields.FieldTurtle.PATTERNS = + ['Dots', 'Stripes', 'Hexagons']; +CustomFields.FieldTurtle.HATS = + ['Stovepipe', 'Crown', 'Propeller', 'Mask', 'Fedora']; +CustomFields.FieldTurtle.NAMES = + ['Yertle', 'Franklin', 'Crush', 'Leonardo', 'Bowser', 'Squirtle', 'Oogway']; + +// Used to keep track of our editor event listeners, so they can be +// properly disposed of when the field closes. You can keep track of your +// listeners however you want, just be sure to dispose of them! +CustomFields.FieldTurtle.prototype.editorListeners_ = []; + +// Used to create the DOM of our field. +CustomFields.FieldTurtle.prototype.initView = function() { + // Because we want to have both a borderRect_ (background) and a + // textElement_ (text) we can call the super-function. If we only wanted + // one or the other, we could call their individual createX functions. + CustomFields.FieldTurtle.superClass_.initView.call(this); + + // Note that the field group is created by the abstract field's init_ + // function. This means that *all elements* should be children of the + // fieldGroup_. + this.createView_(); +}; + +// Updates how the field looks depending on if it is editable or not. +CustomFields.FieldTurtle.prototype.updateEditable = function() { + if (!this.fieldGroup_) { + // Not initialized yet. + return; + } + // The default functionality just makes it so the borderRect_ does not + // highlight when hovered. + Blockly.FieldColour.superClass_.updateEditable.call(this); + // Things like this are best applied to the clickTarget_. By default the + // click target is the same as getSvgRoot, which by default is the + // fieldGroup_. + var group = this.getClickTarget_(); + if (!this.isCurrentlyEditable()) { + group.style.cursor = 'not-allowed'; + } else { + group.style.cursor = this.CURSOR; + } +}; + +// Gets the text to display when the block is collapsed +CustomFields.FieldTurtle.prototype.getText = function() { + var text = this.value_.turtleName + ' wearing a ' + this.value_.hat; + if (this.value_.hat === 'Stovepipe' || this.value_.hat === 'Propeller') { + text += ' hat'; + } + return text; +}; + +// Makes sure new field values (given to setValue) are valid, meaning +// something this field can legally "hold". Class validators can either change +// the input value, or return null if the input value is invalid. Called by +// the setValue() function. +CustomFields.FieldTurtle.prototype.doClassValidation_ = function(newValue) { + // Undefined signals that we want the value to remain unchanged. This is a + // special feature of turtle fields, but could be useful for other + // multi-part fields. + if (newValue.pattern === undefined) { + newValue.pattern = this.displayValue_ && this.displayValue_.pattern; + // We only want to allow patterns that are part of our pattern list. + // Anything else is invalid, so we return null. + } else if (CustomFields.FieldTurtle.PATTERNS.indexOf(newValue.pattern) === -1) { + newValue.pattern = null; + } + + if (newValue.hat === undefined) { + newValue.hat = this.displayValue_ && this.displayValue_.hat; + } else if (CustomFields.FieldTurtle.HATS.indexOf(newValue.hat) === -1) { + newValue.hat = null; + } + + if (newValue.turtleName === undefined) { + newValue.turtleName = this.displayValue_ && this.displayValue_.turtleName; + } else if (CustomFields.FieldTurtle.NAMES.indexOf(newValue.turtleName) === -1) { + newValue.turtleName = null; + } + + // This is a strategy for dealing with defaults on multi-part values. + // The class validator sets individual properties of the object to null + // to indicate that they are invalid, and then caches that object to the + // cachedValidatedValue_ property. This way the field can, for + // example, properly handle an invalid pattern, combined with a valid hat. + // This can also be done with local validators. + this.cachedValidatedValue_ = newValue; + + // Always be sure to return! + if (!newValue.pattern || !newValue.hat || !newValue.turtleName) { + return null; + } + return newValue; +}; + +// Saves the new field value. Called by the setValue function. +CustomFields.FieldTurtle.prototype.doValueUpdate_ = function(newValue) { + // The default function sets this field's this.value_ property to the + // newValue, and its this.isDirty_ property to true. The isDirty_ property + // tells the setValue function whether the field needs to be re-rendered. + CustomFields.FieldTurtle.superClass_.doValueUpdate_.call(this, newValue); + this.displayValue_ = newValue; + // Since this field has custom UI for invalid values, we also want to make + // sure it knows it is now valid. + this.isValueInvalid_ = false; +}; + +// Notifies that the field that the new value was invalid. Called by +// setValue function. Can either be triggered by the class validator, or the +// local validator. +CustomFields.FieldTurtle.prototype.doValueInvalid_ = function(invalidValue) { + // By default this function is no-op, meaning if the new value is invalid + // the field simply won't be updated. This field has custom UI for invalid + // values, so we override this function. + + // We want the value to be displayed like normal. + // But we want to flag it as invalid, so the render_ function knows to + // make the borderRect_ red. + this.displayValue_ = invalidValue; + this.isDirty_ = true; + this.isValueInvalid_ = true; +}; + +// Updates the field's on-block display based on the current display value. +CustomFields.FieldTurtle.prototype.render_ = function() { + var value = this.displayValue_; + + // Always do editor updates inside render. This makes sure the editor + // always displays the correct value, even if a validator changes it. + if (this.editor_) { + this.renderEditor_(); + } + + this.stovepipe_.style.display = 'none'; + this.crown_.style.display = 'none'; + this.mask_.style.display = 'none'; + this.propeller_.style.display = 'none'; + this.fedora_.style.display = 'none'; + switch(value.hat) { + case 'Stovepipe': + this.stovepipe_.style.display = ''; + this.turtleGroup_.setAttribute('transform', 'translate(0,12)'); + this.textElement_.setAttribute( + 'transform', 'translate(' + this.TEXT_OFFSET_X + ',20)'); + break; + case 'Crown': + this.crown_.style.display = ''; + this.turtleGroup_.setAttribute('transform', 'translate(0,9)'); + this.textElement_.setAttribute( + 'transform', 'translate(' + this.TEXT_OFFSET_X + ',16)'); + break; + case 'Mask': + this.mask_.style.display = ''; + this.turtleGroup_.setAttribute('transform', 'translate(0,6)'); + this.textElement_.setAttribute('transform', + 'translate(' + this.TEXT_OFFSET_X + ',12)'); + break; + case 'Propeller': + this.propeller_.style.display = ''; + this.turtleGroup_.setAttribute('transform', 'translate(0,6)'); + this.textElement_.setAttribute('transform', + 'translate(' + this.TEXT_OFFSET_X + ',12)'); + break; + case 'Fedora': + this.fedora_.style.display = ''; + this.turtleGroup_.setAttribute('transform', 'translate(0,6)'); + this.textElement_.setAttribute('transform', + 'translate(' + this.TEXT_OFFSET_X + ',12)'); + break; + } + + switch(value.pattern) { + case 'Dots': + this.shellPattern_.setAttribute('fill', 'url(#polkadots)'); + break; + case 'Stripes': + this.shellPattern_.setAttribute('fill', 'url(#stripes)'); + break; + case 'Hexagons': + this.shellPattern_.setAttribute('fill', 'url(#hexagons)'); + break; + } + + // Always modify the textContent_ rather than the textElement_. This + // allows fields to append DOM to the textElement (e.g. the angle field). + this.textContent_.nodeValue = value.turtleName; + + if (this.isValueInvalid_) { + this.borderRect_.style.fill = '#f99'; + this.borderRect_.style.fillOpacity = 1; + } else { + this.borderRect_.style.fill = '#fff'; + this.borderRect_.style.fillOpacity = 0.6; + } + + this.updateSize_(); +}; + +CustomFields.FieldTurtle.prototype.renderEditor_ = function() { + var value = this.displayValue_; + + // .textElement is a property assigned to the element. + // It allows the text to be edited without destroying the warning icon. + this.editor_.patternText.textElement.nodeValue = value.pattern; + this.editor_.hatText.textElement.nodeValue = value.hat; + this.editor_.turtleNameText.textElement.nodeValue = value.turtleName; + + this.editor_.patternText.warningIcon.style.display = + this.cachedValidatedValue_.pattern ? 'none' : ''; + this.editor_.hatText.warningIcon.style.display = + this.cachedValidatedValue_.hat ? 'none' : ''; + this.editor_.turtleNameText.warningIcon.style.display = + this.cachedValidatedValue_.turtleName ? 'none' : ''; +}; + +// Used to update the size of the field. This function's logic could be simply +// included inside render_ (it is not called anywhere else), but it is +// usually separated to keep code more organized. +CustomFields.FieldTurtle.prototype.updateSize_ = function() { + var bbox = this.movableGroup_.getBBox(); + var width = bbox.width; + var height = bbox.height; + if (this.borderRect_) { + width += this.constants_.FIELD_BORDER_RECT_X_PADDING * 2; + height += this.constants_.FIELD_BORDER_RECT_X_PADDING * 2; + this.borderRect_.setAttribute('width', width); + this.borderRect_.setAttribute('height', height); + } + // Note how both the width and the height can be dynamic. + this.size_.width = width; + this.size_.height = height; +}; + +// Called when the field is clicked. It is usually used to show an editor, +// but it can also be used for other things e.g. the checkbox field uses +// this function to check/uncheck itself. +CustomFields.FieldTurtle.prototype.showEditor_ = function() { + this.editor_ = this.dropdownCreate_(); + this.renderEditor_(); + Blockly.DropDownDiv.getContentDiv().appendChild(this.editor_); + + // These allow us to have the editor match the block's colour. + var fillColour = this.sourceBlock_.getColour(); + Blockly.DropDownDiv.setColour(fillColour, + this.sourceBlock_.style.colourTertiary); + + // Always pass the dropdown div a dispose function so that you can clean + // up event listeners when the editor closes. + Blockly.DropDownDiv.showPositionedByField( + this, this.dropdownDispose_.bind(this)); +}; + +// Creates the UI of the editor, and adds event listeners to it. +CustomFields.FieldTurtle.prototype.dropdownCreate_ = function() { + var createRow = function(table) { + var row = table.appendChild(document.createElement('tr')); + row.className = 'row'; + return row; + }; + var createLeftArrow = function(row) { + var cell = document.createElement('div'); + cell.className = 'arrow'; + var leftArrow = document.createElement('button'); + leftArrow.setAttribute('type', 'button'); + leftArrow.textContent = '<'; + cell.appendChild(leftArrow); + row.appendChild(cell); + return cell; + }; + var createTextNode = function(row, text) { + var cell = document.createElement('div'); + cell.className = 'text'; + var text = document.createTextNode(text); + cell.appendChild(text); + cell.textElement = text; + var warning = document.createElement('img'); + warning.setAttribute('src', 'media/warning.svg'); + warning.setAttribute('height', '16px'); + warning.setAttribute('width', '16px'); + warning.style.marginLeft = '4px'; + cell.appendChild(warning); + cell.warningIcon = warning; + row.appendChild(cell); + return cell; + }; + var createRightArrow = function(row) { + var cell = document.createElement('div'); + cell.className = 'arrow'; + var rightArrow = document.createElement('button'); + rightArrow.setAttribute('type', 'button'); + rightArrow.textContent = '>'; + cell.appendChild(rightArrow); + row.appendChild(cell); + return cell; + }; + var createArrowListener = function(variable, array, direction) { + return function() { + var currentIndex = array.indexOf(this.displayValue_[variable]); + currentIndex += direction; + if (currentIndex <= -1) { + currentIndex = array.length - 1; + } else if (currentIndex >= array.length) { + currentIndex = 0; + } + var value = {}; + value[variable] = array[currentIndex]; + this.setValue(value); + }; + }; + + var widget = document.createElement('div'); + widget.className = 'customFieldsTurtleWidget blocklyNonSelectable'; + + var table = document.createElement('div'); + table.className = 'table'; + widget.appendChild(table); + + var row = createRow(table); + var leftArrow = createLeftArrow(row); + widget.patternText = createTextNode(row, this.displayValue_.pattern); + var rightArrow = createRightArrow(row); + this.editorListeners_.push(Blockly.browserEvents.bind( + leftArrow, 'mouseup', this, + createArrowListener('pattern', CustomFields.FieldTurtle.PATTERNS, -1))); + this.editorListeners_.push(Blockly.browserEvents.bind( + rightArrow, 'mouseup', this, + createArrowListener('pattern', CustomFields.FieldTurtle.PATTERNS, 1))); + + row = createRow(table); + leftArrow = createLeftArrow(row); + widget.hatText = createTextNode(row, this.displayValue_.hat); + rightArrow = createRightArrow(row); + this.editorListeners_.push(Blockly.browserEvents.bind( + leftArrow, 'mouseup', this, + createArrowListener('hat', CustomFields.FieldTurtle.HATS, -1))); + this.editorListeners_.push(Blockly.browserEvents.bind( + rightArrow, 'mouseup', this, + createArrowListener('hat', CustomFields.FieldTurtle.HATS, 1))); + + row = createRow(table); + leftArrow = createLeftArrow(row); + widget.turtleNameText = createTextNode(row, this.displayValue_.turtleName); + rightArrow = createRightArrow(row); + this.editorListeners_.push(Blockly.browserEvents.bind( + leftArrow, 'mouseup', this, + createArrowListener('turtleName', CustomFields.FieldTurtle.NAMES, -1))); + this.editorListeners_.push(Blockly.browserEvents.bind( + rightArrow, 'mouseup', this, + createArrowListener('turtleName', CustomFields.FieldTurtle.NAMES, 1))); + + var randomizeButton = document.createElement('button'); + randomizeButton.className = 'randomize'; + randomizeButton.setAttribute('type', 'button'); + randomizeButton.textContent = 'randomize turtle'; + this.editorListeners_.push( + Blockly.browserEvents.bind(randomizeButton, 'mouseup', this, function() { + var value = {}; + value.pattern = CustomFields.FieldTurtle.PATTERNS[Math.floor( + Math.random() * CustomFields.FieldTurtle.PATTERNS.length)]; + + value.hat = CustomFields.FieldTurtle.HATS[Math.floor( + Math.random() * CustomFields.FieldTurtle.HATS.length)]; + + value.turtleName = CustomFields.FieldTurtle.NAMES[Math.floor( + Math.random() * CustomFields.FieldTurtle.NAMES.length)]; + + this.setValue(value); + })); + widget.appendChild(randomizeButton); + + return widget; +}; + +// Cleans up any event listeners that were attached to the now hidden editor. +CustomFields.FieldTurtle.prototype.dropdownDispose_ = function() { + for (var i = this.editorListeners_.length, listener; + listener = this.editorListeners_[i]; i--) { + Blockly.browserEvents.unbind(listener); + this.editorListeners_.pop(); + } +}; + +// Updates the field's colour based on the colour of the block. Called by +// block.applyColour. +CustomFields.FieldTurtle.prototype.applyColour = function() { + if (!this.sourceBlock_) { + return; + } + // The getColourX functions are the best way to access the colours of a block. + var isShadow = this.sourceBlock_.isShadow(); + var fillColour = isShadow ? + this.sourceBlock_.getColourShadow() : this.sourceBlock_.getColour(); + // This is technically a package function, meaning it could change. + var borderColour = isShadow ? fillColour : + this.sourceBlock_.style.colourTertiary; + + if (this.turtleGroup_) { + var child = this.turtleGroup_.firstChild; + while(child) { + // If it is a text node, continue. + if (child.nodeType === 3) { + child = child.nextSibling; + continue; + } + // Or if it is a non-turtle node, continue. + var className = child.getAttribute('class'); + if (!className || className.indexOf('turtleBody') === -1) { + child = child.nextSibling; + continue; + } + + child.style.fill = fillColour; + child.style.stroke = borderColour; + child = child.nextSibling; + } + } +}; + +// Saves the field's value to an XML node. Allows for custom serialization. +CustomFields.FieldTurtle.prototype.toXml = function(fieldElement) { + // The default implementation of this function creates a node that looks + // like this: (where value is returned by getValue()) + // value + // But this doesn't work for our field because it stores an /object/. + + fieldElement.setAttribute('pattern', this.value_.pattern); + fieldElement.setAttribute('hat', this.value_.hat); + // The textContent usually contains whatever is closest to the field's + // 'value'. The textContent doesn't need to contain anything, but saving + // something to it does aid in readability. + fieldElement.textContent = this.value_.turtleName; + + // Always return the element! + return fieldElement; +}; + +// Sets the field's value based on an XML node. Allows for custom +// de-serialization. +CustomFields.FieldTurtle.prototype.fromXml = function(fieldElement) { + // Because we had to do custom serialization for this field, we also need + // to do custom de-serialization. + + var value = {}; + value.pattern = fieldElement.getAttribute('pattern'); + value.hat = fieldElement.getAttribute('hat'); + value.turtleName = fieldElement.textContent; + // The end goal is to call this.setValue() + this.setValue(value); +}; + +// Blockly needs to know the JSON name of this field. Usually this is +// registered at the bottom of the field class. +Blockly.fieldRegistry.register('field_turtle', CustomFields.FieldTurtle); + +// Called by initView to create all of the SVGs. This is just used to keep +// the code more organized. +CustomFields.FieldTurtle.prototype.createView_ = function() { + this.movableGroup_ = Blockly.utils.dom.createSvgElement('g', + { + 'transform': 'translate(0,5)' + }, this.fieldGroup_); + var scaleGroup = Blockly.utils.dom.createSvgElement('g', + { + 'transform': 'scale(1.5)' + }, this.movableGroup_); + this.turtleGroup_ = Blockly.utils.dom.createSvgElement('g', + { + // Makes the smaller turtle graphic align with the hats. + 'class': 'turtleBody' + }, scaleGroup); + var tail = Blockly.utils.dom.createSvgElement('path', + { + 'class': 'turtleBody', + 'd': 'M7,27.5H0.188c3.959-2,6.547-2.708,8.776-5.237', + 'transform': 'translate(0.312 -12.994)' + }, this.turtleGroup_); + var legLeft = Blockly.utils.dom.createSvgElement('rect', + { + 'class': 'turtleBody', + 'x': 8.812, + 'y': 12.506, + 'width': 4, + 'height': 10 + }, this.turtleGroup_); + var legRight = Blockly.utils.dom.createSvgElement('rect', + { + 'class': 'turtleBody', + 'x': 28.812, + 'y': 12.506, + 'width': 4, + 'height': 10 + }, this.turtleGroup_); + var head = Blockly.utils.dom.createSvgElement('path', + { + 'class': 'turtleBody', + 'd': 'M47.991,17.884c0,1.92-2.144,3.477-4.788,3.477a6.262,6.262,0,0,1-2.212-.392c-0.2-.077-1.995,2.343-4.866,3.112a17.019,17.019,0,0,1-6.01.588c-4.413-.053-2.5-3.412-2.745-3.819-0.147-.242,2.232.144,6.126-0.376a7.392,7.392,0,0,0,4.919-2.588c0-1.92,2.144-3.477,4.788-3.477S47.991,15.964,47.991,17.884Z', + 'transform': 'translate(0.312 -12.994)' + }, this.turtleGroup_); + var smile = Blockly.utils.dom.createSvgElement('path', + { + 'class': 'turtleBody', + 'd': 'M42.223,18.668a3.614,3.614,0,0,0,2.728,2.38', + 'transform': 'translate(0.312 -12.994)' + }, this.turtleGroup_); + var sclera = Blockly.utils.dom.createSvgElement('ellipse', + { + 'cx': 43.435, + 'cy': 2.61, + 'rx': 2.247, + 'ry': 2.61, + 'fill': '#fff' + }, this.turtleGroup_); + var pupil = Blockly.utils.dom.createSvgElement('ellipse', + { + 'cx': 44.166, + 'cy': 3.403, + 'rx': 1.318, + 'ry': 1.62 + }, this.turtleGroup_); + var shell = Blockly.utils.dom.createSvgElement('path', + { + 'class': 'turtleBody', + 'd': 'M33.4,27.5H7.193c0-6,5.866-13.021,13.1-13.021S33.4,21.5,33.4,27.5Z', + 'transform': 'translate(0.312 -12.994)' + }, this.turtleGroup_); + this.shellPattern_ = Blockly.utils.dom.createSvgElement('path', + { + 'd': 'M33.4,27.5H7.193c0-6,5.866-13.021,13.1-13.021S33.4,21.5,33.4,27.5Z', + 'transform': 'translate(0.312 -12.994)' + }, this.turtleGroup_); + + this.stovepipe_ = Blockly.utils.dom.createSvgElement('image', + { + 'width': '50', + 'height': '18' + }, scaleGroup); + this.stovepipe_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', + 'media/stovepipe.svg'); + this.crown_ = Blockly.utils.dom.createSvgElement('image', + { + 'width': '50', + 'height': '15' + }, scaleGroup); + this.crown_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', + 'media/crown.svg'); + this.mask_ = Blockly.utils.dom.createSvgElement('image', + { + 'width': '50', + 'height': '24' + }, scaleGroup); + this.mask_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', + 'media/mask.svg'); + this.propeller_ = Blockly.utils.dom.createSvgElement('image', + { + 'width': '50', + 'height': '11' + }, scaleGroup); + this.propeller_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', + 'media/propeller.svg'); + this.fedora_ = Blockly.utils.dom.createSvgElement('image', + { + 'width': '50', + 'height': '12' + }, scaleGroup); + this.fedora_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', + 'media/fedora.svg'); + + // Even if we're not going to display it right away, we want to create all + // of our DOM elements inside this function. + this.crown_.style.display = 'none'; + this.mask_.style.display = 'none'; + this.propeller_.style.display = 'none'; + this.fedora_.style.display = 'none'; + + this.movableGroup_.appendChild(this.textElement_); + this.textElement_.setAttribute( + 'transform', 'translate(' + this.TEXT_OFFSET_X + ',20)'); + + this.defs_ = Blockly.utils.dom.createSvgElement('defs', {}, this.fieldGroup_); + this.polkadotPattern_ = Blockly.utils.dom.createSvgElement('pattern', + { + 'id': 'polkadots', + 'patternUnits': 'userSpaceOnUse', + 'width': 10, + 'height': 10 + }, this.defs_); + this.polkadotGroup_ = Blockly.utils.dom.createSvgElement( + 'g', {}, this.polkadotPattern_); + Blockly.utils.dom.createSvgElement('circle', + { + 'cx': 2.5, + 'cy': 2.5, + 'r': 2.5, + 'fill': '#000', + 'fill-opacity': .3 + }, this.polkadotGroup_); + Blockly.utils.dom.createSvgElement('circle', + { + 'cx': 7.5, + 'cy': 7.5, + 'r': 2.5, + 'fill': '#000', + 'fill-opacity': .3 + }, this.polkadotGroup_); + + this.hexagonPattern_ = Blockly.utils.dom.createSvgElement('pattern', + { + 'id': 'hexagons', + 'patternUnits': 'userSpaceOnUse', + 'width': 10, + 'height': 8.68, + 'patternTransform': 'translate(2) rotate(45)' + }, this.defs_); + Blockly.utils.dom.createSvgElement('polygon', + { + 'id': 'hex', + 'points': '4.96,4.4 7.46,5.84 7.46,8.74 4.96,10.18 2.46,8.74 2.46,5.84', + 'stroke': '#000', + 'stroke-opacity': .3, + 'fill-opacity': 0 + }, this.hexagonPattern_); + var use = Blockly.utils.dom.createSvgElement('use', + { + 'x': 5, + }, this.hexagonPattern_); + use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#hex'); + use = Blockly.utils.dom.createSvgElement('use', + { + 'x': -5, + }, this.hexagonPattern_); + use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#hex'); + use = Blockly.utils.dom.createSvgElement('use', + { + 'x': 2.5, + 'y': -4.34 + }, this.hexagonPattern_); + use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#hex'); + use = Blockly.utils.dom.createSvgElement('use', + { + 'x': -2.5, + 'y': -4.34 + }, this.hexagonPattern_); + use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#hex'); + + this.stripesPattern_ = Blockly.utils.dom.createSvgElement('pattern', + { + 'id': 'stripes', + 'patternUnits': 'userSpaceOnUse', + 'width': 5, + 'height': 10, + 'patternTransform': 'rotate(45)' + }, this.defs_); + Blockly.utils.dom.createSvgElement('line', + { + 'x1': 0, + 'y1': 0, + 'x2': 0, + 'y2': 10, + 'stroke-width': 4, + 'stroke': '#000', + 'stroke-opacity': .3 + }, this.stripesPattern_); +}; diff --git a/demos/custom-fields/turtle/index.html b/demos/custom-fields/turtle/index.html index dd8cb40afed..6b1bbe8126a 100644 --- a/demos/custom-fields/turtle/index.html +++ b/demos/custom-fields/turtle/index.html @@ -1,173 +1,173 @@ - - - - - Blockly Demo: Custom Turtle Field - - - - - - - - -

- Blockly > - Demos > - Custom Fields > Turtle Field

- - -

This is a demo of creating custom block fields. In this case the field - is used to define a turtle. -

- -

All of the custom field implementation is in - demos/custom-fields/turtle/field_turtle.js, including comments on each required - function. -

- -

Click on the blocks' comment icons to learn what they are demonstrating. - Use the buttons below to see how the fields react to changes. -

- -

- - - - - -

- -

- - -

- - - - - - -
- - -
-
- - - - - - + + + + + Blockly Demo: Custom Turtle Field + + + + + + + + +

+ Blockly > + Demos > + Custom Fields > Turtle Field

+ + +

This is a demo of creating custom block fields. In this case the field + is used to define a turtle. +

+ +

All of the custom field implementation is in + demos/custom-fields/turtle/field_turtle.js, including comments on each required + function. +

+ +

Click on the blocks' comment icons to learn what they are demonstrating. + Use the buttons below to see how the fields react to changes. +

+ +

+ + + + + +

+ +

+ + +

+ + + + + + +
+ + +
+
+ + + + + + diff --git a/demos/custom-fields/turtle/media/warning.svg b/demos/custom-fields/turtle/media/warning.svg index 11136c1ef33..d89ced9af4e 100644 --- a/demos/custom-fields/turtle/media/warning.svg +++ b/demos/custom-fields/turtle/media/warning.svg @@ -1,5 +1,5 @@ - - - - - + + + + + diff --git a/demos/custom-fields/turtle/turtle.css b/demos/custom-fields/turtle/turtle.css index ed5e9b3078c..69baa251a85 100644 --- a/demos/custom-fields/turtle/turtle.css +++ b/demos/custom-fields/turtle/turtle.css @@ -1,48 +1,48 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -.customFieldsTurtleWidget { - width: 150px; -} - -.customFieldsTurtleWidget button { - border-radius: 4px; - border: none; - background-color: #fff; - opacity: .6; - color: #000; -} - -.customFieldsTurtleWidget .table { - width: 100%; -} - -.customFieldsTurtleWidget .row { - width: 100%; - display: flex; -} - -.customFieldsTurtleWidget .arrow { - text-align: center; - padding: 0; - flex-grow: 0; -} - -.customFieldsTurtleWidget .text { - height: 20px; - color: #fff; - flex-grow: 1; - text-align: center; -} - -.customFieldsTurtleWidget .randomize { - width: 100%; -} - -.blocklySvg .blocklyNonEditableText text, -.blocklySvg .blocklyEditableText text { - fill: #000; -} +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +.customFieldsTurtleWidget { + width: 150px; +} + +.customFieldsTurtleWidget button { + border-radius: 4px; + border: none; + background-color: #fff; + opacity: .6; + color: #000; +} + +.customFieldsTurtleWidget .table { + width: 100%; +} + +.customFieldsTurtleWidget .row { + width: 100%; + display: flex; +} + +.customFieldsTurtleWidget .arrow { + text-align: center; + padding: 0; + flex-grow: 0; +} + +.customFieldsTurtleWidget .text { + height: 20px; + color: #fff; + flex-grow: 1; + text-align: center; +} + +.customFieldsTurtleWidget .randomize { + width: 100%; +} + +.blocklySvg .blocklyNonEditableText text, +.blocklySvg .blocklyEditableText text { + fill: #000; +} diff --git a/demos/fixed/index.html b/demos/fixed/index.html index 85d634608f4..3cd59a84ced 100644 --- a/demos/fixed/index.html +++ b/demos/fixed/index.html @@ -1,49 +1,49 @@ - - - - - Blockly Demo: Fixed Blockly - - - - - - -

Blockly > - Demos > Fixed Blockly

- -

This is a simple demo of injecting Blockly into a fixed-sized 'div' element.

- -

→ More info on injecting fixed-sized Blockly

- -
- - - - - - - + + + + + Blockly Demo: Fixed Blockly + + + + + + +

Blockly > + Demos > Fixed Blockly

+ +

This is a simple demo of injecting Blockly into a fixed-sized 'div' element.

+ +

→ More info on injecting fixed-sized Blockly

+ +
+ + + + + + + diff --git a/demos/generator/index.html b/demos/generator/index.html index 127a128d8df..0ba73ea62b2 100644 --- a/demos/generator/index.html +++ b/demos/generator/index.html @@ -1,148 +1,148 @@ - - - - - Blockly Demo: Generating JavaScript - - - - - - - -

Blockly > - Demos > Generating JavaScript

- -

This is a simple demo of generating code from blocks and running - the code in a sandboxed JavaScript interpreter.

- -

→ More info on Code Generators and Running JavaScript.

- -

- - -

- -
- - - - - - - - - + + + + + Blockly Demo: Generating JavaScript + + + + + + + +

Blockly > + Demos > Generating JavaScript

+ +

This is a simple demo of generating code from blocks and running + the code in a sandboxed JavaScript interpreter.

+ +

→ More info on Code Generators and Running JavaScript.

+ +

+ + +

+ +
+ + + + + + + + + diff --git a/demos/graph/index.html b/demos/graph/index.html index 766665233cc..d431996aee8 100644 --- a/demos/graph/index.html +++ b/demos/graph/index.html @@ -1,364 +1,364 @@ - - - - - Blockly Demo: Graph - - - - - - - - -

Blockly > - Demos > Graph

- -

This is a demo of giving instant feedback as blocks are changed.

- -

→ More info on Realtime generation

- - - - - - -
-
-
-
-
- -
- - ... -
- - - - - - - - - + + + + + Blockly Demo: Graph + + + + + + + + +

Blockly > + Demos > Graph

+ +

This is a demo of giving instant feedback as blocks are changed.

+ +

→ More info on Realtime generation

+ + + + + + +
+
+
+
+
+ +
+ + ... +
+ + + + + + + + + diff --git a/demos/headless/index.html b/demos/headless/index.html index 61934c0591d..2f4b824eed2 100644 --- a/demos/headless/index.html +++ b/demos/headless/index.html @@ -1,120 +1,120 @@ - - - - - Blockly Demo: Headless - - - - - - - -

Blockly > - Demos > Headless

- -

This is a simple demo of generating Python code from XML with no graphics. - This might be useful for server-side code generation.

- - - - - - - -
- - - - -
- -
- -
- - - - - + + + + + Blockly Demo: Headless + + + + + + + +

Blockly > + Demos > Headless

+ +

This is a simple demo of generating Python code from XML with no graphics. + This might be useful for server-side code generation.

+ + + + + + + +
+ + + + +
+ +
+ +
+ + + + + diff --git a/demos/index.html b/demos/index.html index d97b89c5120..52be3ee91da 100644 --- a/demos/index.html +++ b/demos/index.html @@ -1,248 +1,248 @@ - - - - - Blockly Demos - - - -

Blockly > Demos

- -

These demos are intended for developers who want to integrate Blockly with - their own applications.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
Inject Blockly into a page as a fixed element.
-
- - - - - -
Inject Blockly into a page as a resizable element.
-
- - - - - -
Organize blocks into categories for the user.
-
- - - - - -
Limit the total number of blocks allowed (for academic exercises).
-
- - - - - -
Turn blocks into code and execute it.
-
- - - - - -
Generate code from XML without graphics.
-
- - - - -
JS Interpreter
- - -
- - - - - -
Instant updates when blocks are changed.
-
- - - - - -
See what Blockly looks like in right-to-left mode (for Arabic and Hebrew).
-
- - - - - -
Override Blockly browser dialogs with custom implementations.
-
- - - - - -
Implement a custom field.
-
- - - - - -
Save and load blocks with App Engine.
-
- - - - - -
Two Blockly instances connected as leader-follower.
-
- - - - - -
Version of Blockly accessible to screen readers.
-
- - - - - -
Using Closure Templates to support 35 languages.
-
- - - - - -
Export a Blockly program into JavaScript, Python, PHP, Lua, Dart, or XML.
-
- - - - - -
Build custom blocks and setup a toolbox using Blockly.
-
- - - - - -
Demos keyboard navigation.
-
- - + + + + + Blockly Demos + + + +

Blockly > Demos

+ +

These demos are intended for developers who want to integrate Blockly with + their own applications.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
Inject Blockly into a page as a fixed element.
+
+ + + + + +
Inject Blockly into a page as a resizable element.
+
+ + + + + +
Organize blocks into categories for the user.
+
+ + + + + +
Limit the total number of blocks allowed (for academic exercises).
+
+ + + + + +
Turn blocks into code and execute it.
+
+ + + + + +
Generate code from XML without graphics.
+
+ + + + +
JS Interpreter
+ + +
+ + + + + +
Instant updates when blocks are changed.
+
+ + + + + +
See what Blockly looks like in right-to-left mode (for Arabic and Hebrew).
+
+ + + + + +
Override Blockly browser dialogs with custom implementations.
+
+ + + + + +
Implement a custom field.
+
+ + + + + +
Save and load blocks with App Engine.
+
+ + + + + +
Two Blockly instances connected as leader-follower.
+
+ + + + + +
Version of Blockly accessible to screen readers.
+
+ + + + + +
Using Closure Templates to support 35 languages.
+
+ + + + + +
Export a Blockly program into JavaScript, Python, PHP, Lua, Dart, or XML.
+
+ + + + + +
Build custom blocks and setup a toolbox using Blockly.
+
+ + + + + +
Demos keyboard navigation.
+
+ + diff --git a/demos/interpreter/acorn_interpreter.js b/demos/interpreter/acorn_interpreter.js index 19db1c3ef58..75088399114 100644 --- a/demos/interpreter/acorn_interpreter.js +++ b/demos/interpreter/acorn_interpreter.js @@ -1,143 +1,143 @@ -// Acorn: Copyright 2012 Marijn Haverbeke, MIT License -var mod$$inline_58=function(a){function b(a){n=a||{};for(var b in Ua)Object.prototype.hasOwnProperty.call(n,b)||(n[b]=Ua[b]);wa=n.sourceFile||null}function c(a,b){var c=Ab(k,a);b+=" ("+c.line+":"+c.column+")";var d=new SyntaxError(b);d.pos=a;d.loc=c;d.raisedAt=f;throw d;}function d(a){function b(a){if(1==a.length)return c+="return str === "+JSON.stringify(a[0])+";";c+="switch(str){";for(var va=0;vaa)++f;else if(47===a)if(a=k.charCodeAt(f+1),42===a){var a=n.onComment&&n.locations&&new e,b=f,d=k.indexOf("*/",f+=2);-1===d&&c(f-2,"Unterminated comment"); -f=d+2;if(n.locations){Y.lastIndex=b;for(var g=void 0;(g=Y.exec(k))&&g.index=a?a=P(!0):(++f,a=g(xa)),a;case 40:return++f,g(I);case 41:return++f,g(E);case 59:return++f,g(J);case 44:return++f,g(L);case 91:return++f,g(ja); -case 93:return++f,g(ka);case 123:return++f,g(Z);case 125:return++f,g(T);case 58:return++f,g(aa);case 63:return++f,g(ya);case 48:if(a=k.charCodeAt(f+1),120===a||88===a)return f+=2,a=B(16),null==a&&c(x+2,"Expected hexadecimal number"),la(k.charCodeAt(f))&&c(f,"Identifier directly after number"),a=g(ba,a);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return P(!1);case 34:case 39:a:{f++;for(var b="";;){f>=S&&c(x,"Unterminated string constant");var d=k.charCodeAt(f);if(d===a){++f; -a=g(da,b);break a}if(92===d){var d=k.charCodeAt(++f),e=/^[0-7]+/.exec(k.slice(f,f+3));for(e&&(e=e[0]);e&&255=S)return g(pa);var b=k.charCodeAt(f);if(la(b)||92===b)return Ya();a=m(b);if(!1===a){b=String.fromCharCode(b);if("\\"===b||Za.test(b))return Ya();c(f,"Unexpected character '"+b+"'")}return a}function t(a,b){var c=k.slice(f,f+b);f+=b;g(a,c)}function K(){for(var a,b,d=f;;){f>=S&&c(d, -"Unterminated regular expression");var e=k.charAt(f);na.test(e)&&c(d,"Unterminated regular expression");if(a)a=!1;else{if("["===e)b=!0;else if("]"===e&&b)b=!1;else if("/"===e&&!b)break;a="\\"===e}++f}a=k.slice(d,f);++f;(b=$a())&&!/^[gmsiy]*$/.test(b)&&c(d,"Invalid regexp flag");return g(Ba,new RegExp(a,b))}function B(a,b){for(var c=f,d=0,e=0,g=null==b?Infinity:b;e=h?h-48:Infinity;if(h>=a)break;++f;d=d*a+h}return f===c||null!=b&& -f-c!==b?null:d}function P(a){var b=f,d=!1,e=48===k.charCodeAt(f);a||null!==B(10)||c(b,"Invalid number");46===k.charCodeAt(f)&&(++f,B(10),d=!0);a=k.charCodeAt(f);if(69===a||101===a)a=k.charCodeAt(++f),43!==a&&45!==a||++f,null===B(10)&&c(b,"Invalid number"),d=!0;la(k.charCodeAt(f))&&c(f,"Identifier directly after number");a=k.slice(b,f);var h;d?h=parseFloat(a):e&&1!==a.length?/[89]/.test(a)||C?c(b,"Invalid number"):h=parseInt(a,8):h=parseInt(a,10);return g(ba,h)}function ma(a){a=B(16,a);null===a&&c(x, -"Bad character escape sequence");return a}function $a(){ca=!1;for(var a,b=!0,d=f;;){var e=k.charCodeAt(f);if(ab(e))ca&&(a+=k.charAt(f)),++f;else if(92===e){ca||(a=k.slice(d,f));ca=!0;117!=k.charCodeAt(++f)&&c(f,"Expecting Unicode escape sequence \\uXXXX");++f;var e=ma(4),g=String.fromCharCode(e);g||c(f-1,"Invalid Unicode escape");(b?la(e):ab(e))||c(f-4,"Invalid Unicode escape");a+=g}else break;b=!1}return ca?a:k.slice(d,f)}function Ya(){var a=$a(),b=V;ca||(Lb(a)?b=Ca[a]:(n.forbidReserved&&(3===n.ecmaVersion? -Mb:Nb)(a)||C&&bb(a))&&c(x,"The keyword '"+a+"' is reserved"));return g(b,a)}function r(){Da=x;M=X;Ea=ia;z()}function Fa(a){C=a;f=M;if(n.locations)for(;fb){var e=Q(a);e.left=a;e.operator=H;a=p;r();e.right=Ra(Sa(),d,c);d=q(e,a===Va||a===Wa?"LogicalExpression":"BinaryExpression");return Ra(d,b,c)}return a}function Sa(){if(p.prefix){var a=y(),b=p.isUpdate;a.operator=H;R=a.prefix=!0;r();a.argument= -Sa();b?ra(a.argument):C&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode");return q(a,b?"UpdateExpression":"UnaryExpression")}for(b=ha(ua());p.postfix&&!qa();)a=Q(b),a.operator=H,a.prefix=!1,a.argument=b,ra(b),r(),b=q(a,"UpdateExpression");return b}function ha(a,b){if(u(xa)){var c=Q(a);c.object=a;c.property=O(!0);c.computed=!1;return ha(q(c,"MemberExpression"),b)}return u(ja)?(c=Q(a),c.object=a,c.property=A(),c.computed=!0,v(ka),ha(q(c,"MemberExpression"), -b)):!b&&u(I)?(c=Q(a),c.callee=a,c.arguments=Ta(E,!1),ha(q(c,"CallExpression"),b)):a}function ua(){switch(p){case ub:var a=y();r();return q(a,"ThisExpression");case V:return O();case ba:case da:case Ba:return a=y(),a.value=H,a.raw=k.slice(x,X),r(),q(a,"Literal");case vb:case wb:case xb:return a=y(),a.value=p.atomValue,a.raw=p.keyword,r(),q(a,"Literal");case I:var a=oa,b=x;r();var d=A();d.start=b;d.end=X;n.locations&&(d.loc.start=a,d.loc.end=ia);n.ranges&&(d.range=[b,X]);v(E);return d;case ja:return a= -y(),r(),a.elements=Ta(ka,!0,!0),q(a,"ArrayExpression");case Z:a=y();b=!0;d=!1;a.properties=[];for(r();!u(T);){if(b)b=!1;else if(v(L),n.allowTrailingCommas&&u(T))break;var e={key:p===ba||p===da?ua():O(!0)},g=!1,h;u(aa)?(e.value=A(!0),h=e.kind="init"):5<=n.ecmaVersion&&"Identifier"===e.key.type&&("get"===e.key.name||"set"===e.key.name)?(g=d=!0,h=e.kind=e.key.name,e.key=p===ba||p===da?ua():O(!0),p!==I&&N(),e.value=Na(y(),!1)):N();if("Identifier"===e.key.type&&(C||d))for(var f=0;fd?a.id:a.params[d],(bb(e.name)||sa(e.name))&&c(e.start,"Defining '"+e.name+"' in strict mode"),0<=d)for(var g=0;ga?36===a:91>a?!0:97>a?95===a:123>a?!0:170<=a&&Za.test(String.fromCharCode(a))},ab=a.isIdentifierChar=function(a){return 48>a?36===a:58>a?!0:65>a?!1:91>a?!0:97>a?95===a:123>a?!0:170<=a&&Pb.test(String.fromCharCode(a))},ca,Ia={kind:"loop"},Ob={kind:"switch"}}; -"object"==typeof exports&&"object"==typeof module?mod$$inline_58(exports):"function"==typeof define&&define.amd?define(["exports"],mod$$inline_58):mod$$inline_58(this.acorn||(this.acorn={})); -// JS-Interpreter: Copyright 2013 Google LLC, Apache 2.0 -function u(a,b){"string"===typeof a&&(a=acorn.parse(a,ha));this.Ha=a.constructor;var c=new this.Ha({options:{}});for(d in a)c[d]="body"===d?a[d].slice():a[d];this.fa=c;this.kb=b;this.wa=!1;this.U=[];this.Sa=0;this.pb=Object.create(null);var d=/^step([A-Z]\w*)$/;var e,g;for(g in this)"function"===typeof this[g]&&(e=g.match(d))&&(this.pb[e[1]]=this[g].bind(this));this.M=ia(this,this.fa,null);this.Da=this.M.object;this.fa=acorn.parse(this.U.join("\n"),ha);this.U=void 0;ra(this.fa,void 0,void 0);e=new v(this.fa, -this.M);e.done=!1;this.j=[e];this.nb();this.value=void 0;this.fa=c;e=new v(this.fa,this.M);e.done=!1;this.j.length=0;this.j[0]=e;this.stateStack=this.j} -var ha={Ca:5},ya={configurable:!0,enumerable:!0,writable:!1},B={configurable:!0,enumerable:!1,writable:!0},E={configurable:!0,enumerable:!1,writable:!1},za={configurable:!1,enumerable:!0,writable:!0},Aa={STEP_ERROR:!0},Ba={SCOPE_REFERENCE:!0},Ia={VALUE_IN_DESCRIPTOR:!0},Ja={REGEXP_TIMEOUT:!0},Ka=[],La=null,Ma=["onmessage = function(e) {","var result;","var data = e.data;","switch (data[0]) {","case 'split':","result = data[1].split(data[2], data[3]);","break;","case 'match':","result = data[1].match(data[2]);", -"break;","case 'search':","result = data[1].search(data[2]);","break;","case 'replace':","result = data[1].replace(data[2], data[3]);","break;","case 'exec':","var regexp = data[1];","regexp.lastIndex = data[2];","result = [regexp.exec(data[3]), data[1].lastIndex];","break;","default:","throw 'Unknown RegExp operation: ' + data[0];","}","postMessage(result);","};"];function Na(a){var b=a>>>0;return b===Number(a)?b:NaN}function Oa(a){var b=a>>>0;return String(b)===String(a)&&4294967295!==b?b:NaN} -function ra(a,b,c){b?a.start=b:delete a.start;c?a.end=c:delete a.end;for(var d in a)if(a.hasOwnProperty(d)){var e=a[d];e&&"object"===typeof e&&ra(e,b,c)}}u.prototype.REGEXP_MODE=2;u.prototype.REGEXP_THREAD_TIMEOUT=1E3;q=u.prototype;q.I=!1;q.ya=!1; -q.ub=function(a){var b=this.j[0];if(!b||"Program"!==b.node.type)throw Error("Expecting original AST to start with a Program node.");"string"===typeof a&&(a=acorn.parse(a,ha));if(!a||"Program"!==a.type)throw Error("Expecting new AST to start with a Program node.");Pa(this,a,b.scope);Array.prototype.push.apply(b.node.body,a.body);b.done=!1}; -q.step=function(){var a=this.j;do{var b=a[a.length-1];if(!b)return!1;var c=b.node,d=c.type;if("Program"===d&&b.done)return!1;if(this.wa)break;try{var e=this.pb[d](a,b,c)}catch(g){if(g!==Aa)throw g;}e&&a.push(e);if(this.I)throw Error("Getter not supported in this context");if(this.ya)throw Error("Setter not supported in this context");}while(!c.end);return!0};q.nb=function(){for(;!this.wa&&this.step(););return this.wa}; -function Qa(a,b){a.setProperty(b,"NaN",NaN,ya);a.setProperty(b,"Infinity",Infinity,ya);a.setProperty(b,"undefined",void 0,ya);a.setProperty(b,"window",b,ya);a.setProperty(b,"this",b,ya);a.setProperty(b,"self",b);a.B=new F(null);a.W=new F(a.B);db(a,b);eb(a,b);b.la=a.B;a.setProperty(b,"constructor",a.m,B);Fb(a,b);Gb(a,b);Hb(a,b);Ib(a,b);Jb(a,b);Kb(a,b);Lb(a,b);Mb(a,b);Nb(a,b);var c=a.b(function(){throw EvalError("Can't happen");},!1);c.eval=!0;a.setProperty(b,"eval",c);a.setProperty(b,"parseInt",a.b(parseInt, -!1));a.setProperty(b,"parseFloat",a.b(parseFloat,!1));a.setProperty(b,"isNaN",a.b(isNaN,!1));a.setProperty(b,"isFinite",a.b(isFinite,!1));c=[[escape,"escape"],[unescape,"unescape"],[decodeURI,"decodeURI"],[decodeURIComponent,"decodeURIComponent"],[encodeURI,"encodeURI"],[encodeURIComponent,"encodeURIComponent"]];for(var d=0;d>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;", -"while (k < len) {","if (k in O && !callbackfn.call(T, O[k], k, O)) return false;","k++;","}","return true;","}","});","Object.defineProperty(Array.prototype, 'filter',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var res = [];","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t) {", -"var val = t[i];","if (fun.call(thisArg, val, i, t)) res.push(val);","}","}","return res;","}","});","Object.defineProperty(Array.prototype, 'forEach',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') throw TypeError();","var T, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O) callback.call(T, O[k], k, O);","k++;","}","}","});","Object.defineProperty(Array.prototype, 'map',", -"{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') new TypeError;","var T, A, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","A = new Array(len);","k = 0;","while (k < len) {","if (k in O) A[k] = callback.call(T, O[k], k, O);","k++;","}","return A;","}","});","Object.defineProperty(Array.prototype, 'reduce',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {", -"if (!this || typeof callback !== 'function') throw TypeError();","var t = Object(this), len = t.length >>> 0, k = 0, value;","if (arguments.length === 2) {","value = arguments[1];","} else {","while (k < len && !(k in t)) k++;","if (k >= len) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k++];","}","for (; k < len; k++) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'reduceRight',", -"{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();","var t = Object(this), len = t.length >>> 0, k = len - 1, value;","if (arguments.length >= 2) {","value = arguments[1];","} else {","while (k >= 0 && !(k in t)) k--;","if (k < 0) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k--];","}","for (; k >= 0; k--) {","if (k in t) value = callback(value, t[k], k, t);", -"}","return value;","}","});","Object.defineProperty(Array.prototype, 'some',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (!this || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t && fun.call(thisArg, t[i], i, t)) {","return true;","}","}","return false;","}","});","(function() {","var sort_ = Array.prototype.sort;", -"Array.prototype.sort = function(opt_comp) {","if (typeof opt_comp !== 'function') {","return sort_.call(this);","}","for (var i = 0; i < this.length; i++) {","var changes = 0;","for (var j = 0; j < this.length - i - 1; j++) {","if (opt_comp(this[j], this[j + 1]) > 0) {","var swap = this[j];","this[j] = this[j + 1];","this[j + 1] = swap;","changes++;","}","}","if (!changes) break;","}","return this;","};","})();","Object.defineProperty(Array.prototype, 'toLocaleString',","{configurable: true, writable: true, value:", -"function() {","var out = [];","for (var i = 0; i < this.length; i++) {","out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();","}","return out.join(',');","}","});","")} -function Gb(a,b){var c=function(e){e=arguments.length?String(e):"";return zc(a)?(this.data=e,this):e};a.w=a.b(c,!0);a.setProperty(b,"String",a.w);a.setProperty(a.w,"fromCharCode",a.b(String.fromCharCode,!1),B);c="charAt charCodeAt concat indexOf lastIndexOf slice substr substring toLocaleLowerCase toLocaleUpperCase toLowerCase toUpperCase trim".split(" ");for(var d=0;d= 0; i--) {","str = str.substring(0, subs[i][0]) + subs[i][2] + str.substring(subs[i][0] + subs[i][1]);", -"}","} else {","var i = str.indexOf(substr);","if (i !== -1) {","var inject = newSubstr(str.substr(i, substr.length), i, str);","str = str.substring(0, i) + inject + str.substring(i + substr.length);","}","}","return str;","};","})();","")}function Hb(a,b){a.Ya=a.b(function(c){c=!!c;return zc(a)?(this.data=c,this):c},!0);a.setProperty(b,"Boolean",a.Ya)} -function Ib(a,b){var c=function(e){e=arguments.length?Number(e):0;return zc(a)?(this.data=e,this):e};a.S=a.b(c,!0);a.setProperty(b,"Number",a.S);c=["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"];for(var d=0;db.charCodeAt(0)&&U(this,a,this.w)){var c=Oa(b);if(!isNaN(c)&&c>=":d>>=e;break;case ">>>=":d>>>=e;break;case "&=":d&=e;break;case "^=":d^=e;break;case "|=":d|=e;break;default:throw SyntaxError("Unknown assignment expression: "+c.operator);}if(c=cd(this,b.ra,d))return b.ia=!0,b.Wa=d,fd(this,c,b.ra,d);a.pop();a[a.length-1].value=d}}; -u.prototype.stepBinaryExpression=function(a,b,c){if(!b.Y)return b.Y=!0,new v(c.left,b.scope);if(!b.pa)return b.pa=!0,b.$=b.value,new v(c.right,b.scope);a.pop();var d=b.$;b=b.value;switch(c.operator){case "==":c=d==b;break;case "!=":c=d!=b;break;case "===":c=d===b;break;case "!==":c=d!==b;break;case ">":c=d>b;break;case ">=":c=d>=b;break;case "<":c=d>":c=d>>b;break;case ">>>":c=d>>>b;break;case "in":b instanceof F||I(this,this.g,"'in' expects an object, not '"+b+"'");c=Bc(this,b,d);break;case "instanceof":U(this,b,this.H)||I(this,this.g,"Right-hand side of instanceof is not an object");c=d instanceof F?U(this,d,b):!1;break;default:throw SyntaxError("Unknown binary operator: "+c.operator);}a[a.length-1].value=c}; -u.prototype.stepBlockStatement=function(a,b,c){var d=b.o||0;if(c=c.body[d])return b.o=d+1,new v(c,b.scope);a.pop()};u.prototype.stepBreakStatement=function(a,b,c){dd(this,1,void 0,c.label&&c.label.name)}; -u.prototype.stepCallExpression=function(a,b,c){if(!b.ha){b.ha=1;var d=new v(c.callee,b.scope);d.ga=!0;return d}if(1===b.ha){b.ha=2;d=b.value;if(Array.isArray(d)){if(b.Z=bd(this,d),d[0]===Ba?b.yb="eval"===d[1]:b.G=d[0],d=b.Z,this.I)return b.ha=1,ed(this,d,b.value)}else b.Z=d;b.A=[];b.o=0}d=b.Z;if(!b.Qa){0!==b.o&&b.A.push(b.value);if(c.arguments[b.o])return new v(c.arguments[b.o++],b.scope);if("NewExpression"===c.type){d.Hb&&I(this,this.g,d+" is not a constructor");if(d===this.l)b.G=Ac(this);else{var e= -d.a.prototype;if("object"!==typeof e||null===e)e=this.B;b.G=this.h(e)}b.isConstructor=!0}else void 0===b.G&&(b.G=b.scope.P?void 0:this.Da);b.Qa=!0}if(b.Ra)a.pop(),a[a.length-1].value=b.isConstructor&&"object"!==typeof b.value?b.G:b.value;else{b.Ra=!0;d instanceof F||I(this,this.g,d+" is not a function");if(a=d.node){c=ia(this,a.body,d.va);for(var g=0;gg?b.A[g]:void 0);e=Ac(this);for(g=0;ga)++f;else if(47===a)if(a=k.charCodeAt(f+1),42===a){var a=n.onComment&&n.locations&&new e,b=f,d=k.indexOf("*/",f+=2);-1===d&&c(f-2,"Unterminated comment"); +f=d+2;if(n.locations){Y.lastIndex=b;for(var g=void 0;(g=Y.exec(k))&&g.index=a?a=P(!0):(++f,a=g(xa)),a;case 40:return++f,g(I);case 41:return++f,g(E);case 59:return++f,g(J);case 44:return++f,g(L);case 91:return++f,g(ja); +case 93:return++f,g(ka);case 123:return++f,g(Z);case 125:return++f,g(T);case 58:return++f,g(aa);case 63:return++f,g(ya);case 48:if(a=k.charCodeAt(f+1),120===a||88===a)return f+=2,a=B(16),null==a&&c(x+2,"Expected hexadecimal number"),la(k.charCodeAt(f))&&c(f,"Identifier directly after number"),a=g(ba,a);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return P(!1);case 34:case 39:a:{f++;for(var b="";;){f>=S&&c(x,"Unterminated string constant");var d=k.charCodeAt(f);if(d===a){++f; +a=g(da,b);break a}if(92===d){var d=k.charCodeAt(++f),e=/^[0-7]+/.exec(k.slice(f,f+3));for(e&&(e=e[0]);e&&255=S)return g(pa);var b=k.charCodeAt(f);if(la(b)||92===b)return Ya();a=m(b);if(!1===a){b=String.fromCharCode(b);if("\\"===b||Za.test(b))return Ya();c(f,"Unexpected character '"+b+"'")}return a}function t(a,b){var c=k.slice(f,f+b);f+=b;g(a,c)}function K(){for(var a,b,d=f;;){f>=S&&c(d, +"Unterminated regular expression");var e=k.charAt(f);na.test(e)&&c(d,"Unterminated regular expression");if(a)a=!1;else{if("["===e)b=!0;else if("]"===e&&b)b=!1;else if("/"===e&&!b)break;a="\\"===e}++f}a=k.slice(d,f);++f;(b=$a())&&!/^[gmsiy]*$/.test(b)&&c(d,"Invalid regexp flag");return g(Ba,new RegExp(a,b))}function B(a,b){for(var c=f,d=0,e=0,g=null==b?Infinity:b;e=h?h-48:Infinity;if(h>=a)break;++f;d=d*a+h}return f===c||null!=b&& +f-c!==b?null:d}function P(a){var b=f,d=!1,e=48===k.charCodeAt(f);a||null!==B(10)||c(b,"Invalid number");46===k.charCodeAt(f)&&(++f,B(10),d=!0);a=k.charCodeAt(f);if(69===a||101===a)a=k.charCodeAt(++f),43!==a&&45!==a||++f,null===B(10)&&c(b,"Invalid number"),d=!0;la(k.charCodeAt(f))&&c(f,"Identifier directly after number");a=k.slice(b,f);var h;d?h=parseFloat(a):e&&1!==a.length?/[89]/.test(a)||C?c(b,"Invalid number"):h=parseInt(a,8):h=parseInt(a,10);return g(ba,h)}function ma(a){a=B(16,a);null===a&&c(x, +"Bad character escape sequence");return a}function $a(){ca=!1;for(var a,b=!0,d=f;;){var e=k.charCodeAt(f);if(ab(e))ca&&(a+=k.charAt(f)),++f;else if(92===e){ca||(a=k.slice(d,f));ca=!0;117!=k.charCodeAt(++f)&&c(f,"Expecting Unicode escape sequence \\uXXXX");++f;var e=ma(4),g=String.fromCharCode(e);g||c(f-1,"Invalid Unicode escape");(b?la(e):ab(e))||c(f-4,"Invalid Unicode escape");a+=g}else break;b=!1}return ca?a:k.slice(d,f)}function Ya(){var a=$a(),b=V;ca||(Lb(a)?b=Ca[a]:(n.forbidReserved&&(3===n.ecmaVersion? +Mb:Nb)(a)||C&&bb(a))&&c(x,"The keyword '"+a+"' is reserved"));return g(b,a)}function r(){Da=x;M=X;Ea=ia;z()}function Fa(a){C=a;f=M;if(n.locations)for(;fb){var e=Q(a);e.left=a;e.operator=H;a=p;r();e.right=Ra(Sa(),d,c);d=q(e,a===Va||a===Wa?"LogicalExpression":"BinaryExpression");return Ra(d,b,c)}return a}function Sa(){if(p.prefix){var a=y(),b=p.isUpdate;a.operator=H;R=a.prefix=!0;r();a.argument= +Sa();b?ra(a.argument):C&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode");return q(a,b?"UpdateExpression":"UnaryExpression")}for(b=ha(ua());p.postfix&&!qa();)a=Q(b),a.operator=H,a.prefix=!1,a.argument=b,ra(b),r(),b=q(a,"UpdateExpression");return b}function ha(a,b){if(u(xa)){var c=Q(a);c.object=a;c.property=O(!0);c.computed=!1;return ha(q(c,"MemberExpression"),b)}return u(ja)?(c=Q(a),c.object=a,c.property=A(),c.computed=!0,v(ka),ha(q(c,"MemberExpression"), +b)):!b&&u(I)?(c=Q(a),c.callee=a,c.arguments=Ta(E,!1),ha(q(c,"CallExpression"),b)):a}function ua(){switch(p){case ub:var a=y();r();return q(a,"ThisExpression");case V:return O();case ba:case da:case Ba:return a=y(),a.value=H,a.raw=k.slice(x,X),r(),q(a,"Literal");case vb:case wb:case xb:return a=y(),a.value=p.atomValue,a.raw=p.keyword,r(),q(a,"Literal");case I:var a=oa,b=x;r();var d=A();d.start=b;d.end=X;n.locations&&(d.loc.start=a,d.loc.end=ia);n.ranges&&(d.range=[b,X]);v(E);return d;case ja:return a= +y(),r(),a.elements=Ta(ka,!0,!0),q(a,"ArrayExpression");case Z:a=y();b=!0;d=!1;a.properties=[];for(r();!u(T);){if(b)b=!1;else if(v(L),n.allowTrailingCommas&&u(T))break;var e={key:p===ba||p===da?ua():O(!0)},g=!1,h;u(aa)?(e.value=A(!0),h=e.kind="init"):5<=n.ecmaVersion&&"Identifier"===e.key.type&&("get"===e.key.name||"set"===e.key.name)?(g=d=!0,h=e.kind=e.key.name,e.key=p===ba||p===da?ua():O(!0),p!==I&&N(),e.value=Na(y(),!1)):N();if("Identifier"===e.key.type&&(C||d))for(var f=0;fd?a.id:a.params[d],(bb(e.name)||sa(e.name))&&c(e.start,"Defining '"+e.name+"' in strict mode"),0<=d)for(var g=0;ga?36===a:91>a?!0:97>a?95===a:123>a?!0:170<=a&&Za.test(String.fromCharCode(a))},ab=a.isIdentifierChar=function(a){return 48>a?36===a:58>a?!0:65>a?!1:91>a?!0:97>a?95===a:123>a?!0:170<=a&&Pb.test(String.fromCharCode(a))},ca,Ia={kind:"loop"},Ob={kind:"switch"}}; +"object"==typeof exports&&"object"==typeof module?mod$$inline_58(exports):"function"==typeof define&&define.amd?define(["exports"],mod$$inline_58):mod$$inline_58(this.acorn||(this.acorn={})); +// JS-Interpreter: Copyright 2013 Google LLC, Apache 2.0 +function u(a,b){"string"===typeof a&&(a=acorn.parse(a,ha));this.Ha=a.constructor;var c=new this.Ha({options:{}});for(d in a)c[d]="body"===d?a[d].slice():a[d];this.fa=c;this.kb=b;this.wa=!1;this.U=[];this.Sa=0;this.pb=Object.create(null);var d=/^step([A-Z]\w*)$/;var e,g;for(g in this)"function"===typeof this[g]&&(e=g.match(d))&&(this.pb[e[1]]=this[g].bind(this));this.M=ia(this,this.fa,null);this.Da=this.M.object;this.fa=acorn.parse(this.U.join("\n"),ha);this.U=void 0;ra(this.fa,void 0,void 0);e=new v(this.fa, +this.M);e.done=!1;this.j=[e];this.nb();this.value=void 0;this.fa=c;e=new v(this.fa,this.M);e.done=!1;this.j.length=0;this.j[0]=e;this.stateStack=this.j} +var ha={Ca:5},ya={configurable:!0,enumerable:!0,writable:!1},B={configurable:!0,enumerable:!1,writable:!0},E={configurable:!0,enumerable:!1,writable:!1},za={configurable:!1,enumerable:!0,writable:!0},Aa={STEP_ERROR:!0},Ba={SCOPE_REFERENCE:!0},Ia={VALUE_IN_DESCRIPTOR:!0},Ja={REGEXP_TIMEOUT:!0},Ka=[],La=null,Ma=["onmessage = function(e) {","var result;","var data = e.data;","switch (data[0]) {","case 'split':","result = data[1].split(data[2], data[3]);","break;","case 'match':","result = data[1].match(data[2]);", +"break;","case 'search':","result = data[1].search(data[2]);","break;","case 'replace':","result = data[1].replace(data[2], data[3]);","break;","case 'exec':","var regexp = data[1];","regexp.lastIndex = data[2];","result = [regexp.exec(data[3]), data[1].lastIndex];","break;","default:","throw 'Unknown RegExp operation: ' + data[0];","}","postMessage(result);","};"];function Na(a){var b=a>>>0;return b===Number(a)?b:NaN}function Oa(a){var b=a>>>0;return String(b)===String(a)&&4294967295!==b?b:NaN} +function ra(a,b,c){b?a.start=b:delete a.start;c?a.end=c:delete a.end;for(var d in a)if(a.hasOwnProperty(d)){var e=a[d];e&&"object"===typeof e&&ra(e,b,c)}}u.prototype.REGEXP_MODE=2;u.prototype.REGEXP_THREAD_TIMEOUT=1E3;q=u.prototype;q.I=!1;q.ya=!1; +q.ub=function(a){var b=this.j[0];if(!b||"Program"!==b.node.type)throw Error("Expecting original AST to start with a Program node.");"string"===typeof a&&(a=acorn.parse(a,ha));if(!a||"Program"!==a.type)throw Error("Expecting new AST to start with a Program node.");Pa(this,a,b.scope);Array.prototype.push.apply(b.node.body,a.body);b.done=!1}; +q.step=function(){var a=this.j;do{var b=a[a.length-1];if(!b)return!1;var c=b.node,d=c.type;if("Program"===d&&b.done)return!1;if(this.wa)break;try{var e=this.pb[d](a,b,c)}catch(g){if(g!==Aa)throw g;}e&&a.push(e);if(this.I)throw Error("Getter not supported in this context");if(this.ya)throw Error("Setter not supported in this context");}while(!c.end);return!0};q.nb=function(){for(;!this.wa&&this.step(););return this.wa}; +function Qa(a,b){a.setProperty(b,"NaN",NaN,ya);a.setProperty(b,"Infinity",Infinity,ya);a.setProperty(b,"undefined",void 0,ya);a.setProperty(b,"window",b,ya);a.setProperty(b,"this",b,ya);a.setProperty(b,"self",b);a.B=new F(null);a.W=new F(a.B);db(a,b);eb(a,b);b.la=a.B;a.setProperty(b,"constructor",a.m,B);Fb(a,b);Gb(a,b);Hb(a,b);Ib(a,b);Jb(a,b);Kb(a,b);Lb(a,b);Mb(a,b);Nb(a,b);var c=a.b(function(){throw EvalError("Can't happen");},!1);c.eval=!0;a.setProperty(b,"eval",c);a.setProperty(b,"parseInt",a.b(parseInt, +!1));a.setProperty(b,"parseFloat",a.b(parseFloat,!1));a.setProperty(b,"isNaN",a.b(isNaN,!1));a.setProperty(b,"isFinite",a.b(isFinite,!1));c=[[escape,"escape"],[unescape,"unescape"],[decodeURI,"decodeURI"],[decodeURIComponent,"decodeURIComponent"],[encodeURI,"encodeURI"],[encodeURIComponent,"encodeURIComponent"]];for(var d=0;d>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;", +"while (k < len) {","if (k in O && !callbackfn.call(T, O[k], k, O)) return false;","k++;","}","return true;","}","});","Object.defineProperty(Array.prototype, 'filter',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (this === void 0 || this === null || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var res = [];","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t) {", +"var val = t[i];","if (fun.call(thisArg, val, i, t)) res.push(val);","}","}","return res;","}","});","Object.defineProperty(Array.prototype, 'forEach',","{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') throw TypeError();","var T, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","k = 0;","while (k < len) {","if (k in O) callback.call(T, O[k], k, O);","k++;","}","}","});","Object.defineProperty(Array.prototype, 'map',", +"{configurable: true, writable: true, value:","function(callback, thisArg) {","if (!this || typeof callback !== 'function') new TypeError;","var T, A, k;","var O = Object(this);","var len = O.length >>> 0;","if (arguments.length > 1) T = thisArg;","A = new Array(len);","k = 0;","while (k < len) {","if (k in O) A[k] = callback.call(T, O[k], k, O);","k++;","}","return A;","}","});","Object.defineProperty(Array.prototype, 'reduce',","{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {", +"if (!this || typeof callback !== 'function') throw TypeError();","var t = Object(this), len = t.length >>> 0, k = 0, value;","if (arguments.length === 2) {","value = arguments[1];","} else {","while (k < len && !(k in t)) k++;","if (k >= len) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k++];","}","for (; k < len; k++) {","if (k in t) value = callback(value, t[k], k, t);","}","return value;","}","});","Object.defineProperty(Array.prototype, 'reduceRight',", +"{configurable: true, writable: true, value:","function(callback /*, initialValue*/) {","if (null === this || 'undefined' === typeof this || 'function' !== typeof callback) throw TypeError();","var t = Object(this), len = t.length >>> 0, k = len - 1, value;","if (arguments.length >= 2) {","value = arguments[1];","} else {","while (k >= 0 && !(k in t)) k--;","if (k < 0) {","throw TypeError('Reduce of empty array with no initial value');","}","value = t[k--];","}","for (; k >= 0; k--) {","if (k in t) value = callback(value, t[k], k, t);", +"}","return value;","}","});","Object.defineProperty(Array.prototype, 'some',","{configurable: true, writable: true, value:","function(fun/*, thisArg*/) {","if (!this || typeof fun !== 'function') throw TypeError();","var t = Object(this);","var len = t.length >>> 0;","var thisArg = arguments.length >= 2 ? arguments[1] : void 0;","for (var i = 0; i < len; i++) {","if (i in t && fun.call(thisArg, t[i], i, t)) {","return true;","}","}","return false;","}","});","(function() {","var sort_ = Array.prototype.sort;", +"Array.prototype.sort = function(opt_comp) {","if (typeof opt_comp !== 'function') {","return sort_.call(this);","}","for (var i = 0; i < this.length; i++) {","var changes = 0;","for (var j = 0; j < this.length - i - 1; j++) {","if (opt_comp(this[j], this[j + 1]) > 0) {","var swap = this[j];","this[j] = this[j + 1];","this[j + 1] = swap;","changes++;","}","}","if (!changes) break;","}","return this;","};","})();","Object.defineProperty(Array.prototype, 'toLocaleString',","{configurable: true, writable: true, value:", +"function() {","var out = [];","for (var i = 0; i < this.length; i++) {","out[i] = (this[i] === null || this[i] === undefined) ? '' : this[i].toLocaleString();","}","return out.join(',');","}","});","")} +function Gb(a,b){var c=function(e){e=arguments.length?String(e):"";return zc(a)?(this.data=e,this):e};a.w=a.b(c,!0);a.setProperty(b,"String",a.w);a.setProperty(a.w,"fromCharCode",a.b(String.fromCharCode,!1),B);c="charAt charCodeAt concat indexOf lastIndexOf slice substr substring toLocaleLowerCase toLocaleUpperCase toLowerCase toUpperCase trim".split(" ");for(var d=0;d= 0; i--) {","str = str.substring(0, subs[i][0]) + subs[i][2] + str.substring(subs[i][0] + subs[i][1]);", +"}","} else {","var i = str.indexOf(substr);","if (i !== -1) {","var inject = newSubstr(str.substr(i, substr.length), i, str);","str = str.substring(0, i) + inject + str.substring(i + substr.length);","}","}","return str;","};","})();","")}function Hb(a,b){a.Ya=a.b(function(c){c=!!c;return zc(a)?(this.data=c,this):c},!0);a.setProperty(b,"Boolean",a.Ya)} +function Ib(a,b){var c=function(e){e=arguments.length?Number(e):0;return zc(a)?(this.data=e,this):e};a.S=a.b(c,!0);a.setProperty(b,"Number",a.S);c=["MAX_VALUE","MIN_VALUE","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY"];for(var d=0;db.charCodeAt(0)&&U(this,a,this.w)){var c=Oa(b);if(!isNaN(c)&&c>=":d>>=e;break;case ">>>=":d>>>=e;break;case "&=":d&=e;break;case "^=":d^=e;break;case "|=":d|=e;break;default:throw SyntaxError("Unknown assignment expression: "+c.operator);}if(c=cd(this,b.ra,d))return b.ia=!0,b.Wa=d,fd(this,c,b.ra,d);a.pop();a[a.length-1].value=d}}; +u.prototype.stepBinaryExpression=function(a,b,c){if(!b.Y)return b.Y=!0,new v(c.left,b.scope);if(!b.pa)return b.pa=!0,b.$=b.value,new v(c.right,b.scope);a.pop();var d=b.$;b=b.value;switch(c.operator){case "==":c=d==b;break;case "!=":c=d!=b;break;case "===":c=d===b;break;case "!==":c=d!==b;break;case ">":c=d>b;break;case ">=":c=d>=b;break;case "<":c=d>":c=d>>b;break;case ">>>":c=d>>>b;break;case "in":b instanceof F||I(this,this.g,"'in' expects an object, not '"+b+"'");c=Bc(this,b,d);break;case "instanceof":U(this,b,this.H)||I(this,this.g,"Right-hand side of instanceof is not an object");c=d instanceof F?U(this,d,b):!1;break;default:throw SyntaxError("Unknown binary operator: "+c.operator);}a[a.length-1].value=c}; +u.prototype.stepBlockStatement=function(a,b,c){var d=b.o||0;if(c=c.body[d])return b.o=d+1,new v(c,b.scope);a.pop()};u.prototype.stepBreakStatement=function(a,b,c){dd(this,1,void 0,c.label&&c.label.name)}; +u.prototype.stepCallExpression=function(a,b,c){if(!b.ha){b.ha=1;var d=new v(c.callee,b.scope);d.ga=!0;return d}if(1===b.ha){b.ha=2;d=b.value;if(Array.isArray(d)){if(b.Z=bd(this,d),d[0]===Ba?b.yb="eval"===d[1]:b.G=d[0],d=b.Z,this.I)return b.ha=1,ed(this,d,b.value)}else b.Z=d;b.A=[];b.o=0}d=b.Z;if(!b.Qa){0!==b.o&&b.A.push(b.value);if(c.arguments[b.o])return new v(c.arguments[b.o++],b.scope);if("NewExpression"===c.type){d.Hb&&I(this,this.g,d+" is not a constructor");if(d===this.l)b.G=Ac(this);else{var e= +d.a.prototype;if("object"!==typeof e||null===e)e=this.B;b.G=this.h(e)}b.isConstructor=!0}else void 0===b.G&&(b.G=b.scope.P?void 0:this.Da);b.Qa=!0}if(b.Ra)a.pop(),a[a.length-1].value=b.isConstructor&&"object"!==typeof b.value?b.G:b.value;else{b.Ra=!0;d instanceof F||I(this,this.g,d+" is not a function");if(a=d.node){c=ia(this,a.body,d.va);for(var g=0;gg?b.A[g]:void 0);e=Ac(this);for(g=0;g - - - - Blockly Demo: Asynchronous Execution with JS Interpreter - - - - - - - - - -

Blockly > - Demos > Asynchronous Execution with JS Interpreter

- -

This is a demo of executing code asynchronously (e.g., waiting for delays or user input) using the JavaScript interpreter.

- -

More info on running code with JS Interpreter

- -

- -

- -
-
- -
- - - - - - - - + + + + + Blockly Demo: Asynchronous Execution with JS Interpreter + + + + + + + + + +

Blockly > + Demos > Asynchronous Execution with JS Interpreter

+ +

This is a demo of executing code asynchronously (e.g., waiting for delays or user input) using the JavaScript interpreter.

+ +

More info on running code with JS Interpreter

+ +

+ +

+ +
+
+ +
+ + + + + + + + diff --git a/demos/interpreter/index.html b/demos/interpreter/index.html index 52e49eee4f2..3c781bc7906 100644 --- a/demos/interpreter/index.html +++ b/demos/interpreter/index.html @@ -1,11 +1,11 @@ - - - - - Redirecting... - - - -Redirecting to step execution JS-Interpreter demo. - - + + + + + Redirecting... + + + +Redirecting to step execution JS-Interpreter demo. + + diff --git a/demos/interpreter/step-execution.html b/demos/interpreter/step-execution.html index 03e62aed67e..64d2ff72b85 100644 --- a/demos/interpreter/step-execution.html +++ b/demos/interpreter/step-execution.html @@ -1,254 +1,254 @@ - - - - - Blockly Demo: Step Execution with JS Interpreter - - - - - - - - -

Blockly > - Demos > Step Execution with JS Interpreter

- -

This is a demo of executing code step-by-step with a sandboxed JavaScript interpreter.

- -

The generator's Blockly.JavaScript.STATEMENT_PREFIX is assigned 'highlightBlock(%1);\n', - where %1 is the block id. The call to highlightBlock() will highlight the identified block - and set the variable highlightPause to true.

- -

"Parse JavaScript" will generate the code and load it into the interpreter. Then, each press of the - "Step JavaScript" button will run the interpreter one step until the highlightPause is true. - That is, until highlightBlock() has highlighted the block that will be executed on the next step.

- -

More info on running code with JS Interpreter

- -

- -

- -
-
- -
- - - - - - - - + + + + + Blockly Demo: Step Execution with JS Interpreter + + + + + + + + +

Blockly > + Demos > Step Execution with JS Interpreter

+ +

This is a demo of executing code step-by-step with a sandboxed JavaScript interpreter.

+ +

The generator's Blockly.JavaScript.STATEMENT_PREFIX is assigned 'highlightBlock(%1);\n', + where %1 is the block id. The call to highlightBlock() will highlight the identified block + and set the variable highlightPause to true.

+ +

"Parse JavaScript" will generate the code and load it into the interpreter. Then, each press of the + "Step JavaScript" button will run the interpreter one step until the highlightPause is true. + That is, until highlightBlock() has highlighted the block that will be executed on the next step.

+ +

More info on running code with JS Interpreter

+ +

+ +

+ +
+
+ +
+ + + + + + + + diff --git a/demos/interpreter/wait_block.js b/demos/interpreter/wait_block.js index 10a57b482eb..703fbe62ef7 100644 --- a/demos/interpreter/wait_block.js +++ b/demos/interpreter/wait_block.js @@ -1,53 +1,53 @@ -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Example "wait" block that will pause the interpreter for a - * number of seconds. Because wait is a blocking behavior, such blocks will - * only work in interpreted environments. - * - * See https://neil.fraser.name/software/JS-Interpreter/docs.html - */ -Blockly.defineBlocksWithJsonArray([{ - "type": "wait_seconds", - "message0": " wait %1 seconds", - "args0": [{ - "type": "field_number", - "name": "SECONDS", - "min": 0, - "max": 600, - "value": 1 - }], - "previousStatement": null, - "nextStatement": null, - "colour": "%{BKY_LOOPS_HUE}" -}]); - -/** - * Generator for wait block creates call to new method - * waitForSeconds(). - */ -Blockly.JavaScript['wait_seconds'] = function(block) { - var seconds = Number(block.getFieldValue('SECONDS')); - var code = 'waitForSeconds(' + seconds + ');\n'; - return code; -}; - -/** - * Register the interpreter asynchronous function - * waitForSeconds(). - */ -function initInterpreterWaitForSeconds(interpreter, globalObject) { - // Ensure function name does not conflict with variable names. - Blockly.JavaScript.addReservedWords('waitForSeconds'); - - var wrapper = interpreter.createAsyncFunction( - function(timeInSeconds, callback) { - // Delay the call to the callback. - setTimeout(callback, timeInSeconds * 1000); - }); - interpreter.setProperty(globalObject, 'waitForSeconds', wrapper); -} +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Example "wait" block that will pause the interpreter for a + * number of seconds. Because wait is a blocking behavior, such blocks will + * only work in interpreted environments. + * + * See https://neil.fraser.name/software/JS-Interpreter/docs.html + */ +Blockly.defineBlocksWithJsonArray([{ + "type": "wait_seconds", + "message0": " wait %1 seconds", + "args0": [{ + "type": "field_number", + "name": "SECONDS", + "min": 0, + "max": 600, + "value": 1 + }], + "previousStatement": null, + "nextStatement": null, + "colour": "%{BKY_LOOPS_HUE}" +}]); + +/** + * Generator for wait block creates call to new method + * waitForSeconds(). + */ +Blockly.JavaScript['wait_seconds'] = function(block) { + var seconds = Number(block.getFieldValue('SECONDS')); + var code = 'waitForSeconds(' + seconds + ');\n'; + return code; +}; + +/** + * Register the interpreter asynchronous function + * waitForSeconds(). + */ +function initInterpreterWaitForSeconds(interpreter, globalObject) { + // Ensure function name does not conflict with variable names. + Blockly.JavaScript.addReservedWords('waitForSeconds'); + + var wrapper = interpreter.createAsyncFunction( + function(timeInSeconds, callback) { + // Delay the call to the callback. + setTimeout(callback, timeInSeconds * 1000); + }); + interpreter.setProperty(globalObject, 'waitForSeconds', wrapper); +} diff --git a/demos/keyboard_nav/index.html b/demos/keyboard_nav/index.html index de00e50cbbc..4dd72e9af36 100644 --- a/demos/keyboard_nav/index.html +++ b/demos/keyboard_nav/index.html @@ -1,8 +1,8 @@ - - - - - Redirecting... - - - + + + + + Redirecting... + + + diff --git a/demos/maxBlocks/index.html b/demos/maxBlocks/index.html index dc94f2f4528..f657702b0cf 100644 --- a/demos/maxBlocks/index.html +++ b/demos/maxBlocks/index.html @@ -1,100 +1,100 @@ - - - - - Blockly Demo: Maximum Block Limit - - - - - - -

Blockly > - Demos > Maximum Block Limit

- -

This is a demo of Blockly which has been restricted to a maximum of - five blocks.

- -

You have block(s) left.

- -
- - - - - - - + + + + + Blockly Demo: Maximum Block Limit + + + + + + +

Blockly > + Demos > Maximum Block Limit

+ +

This is a demo of Blockly which has been restricted to a maximum of + five blocks.

+ +

You have block(s) left.

+ +
+ + + + + + + diff --git a/demos/minimap/index.html b/demos/minimap/index.html index 2f4e163e966..1418e13d969 100644 --- a/demos/minimap/index.html +++ b/demos/minimap/index.html @@ -1,91 +1,91 @@ - - - - - Blockly Demo: Minimap - - - - - - - -

Blockly > - Demos > Minimap

- -

This is a simple demo showing how a minimap can be implemented.

- - - - - - -
-
-
-
-
- - - - - - - - + + + + + Blockly Demo: Minimap + + + + + + + +

Blockly > + Demos > Minimap

+ +

This is a simple demo showing how a minimap can be implemented.

+ + + + + + +
+
+
+
+
+ + + + + + + + diff --git a/demos/minimap/minimap.js b/demos/minimap/minimap.js index dd24a623cb3..589ddbbe1bb 100644 --- a/demos/minimap/minimap.js +++ b/demos/minimap/minimap.js @@ -1,302 +1,302 @@ -/** - - * Copyright 2017 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview JavaScript for Blockly's Minimap demo. - */ -'use strict'; - -/** - * Creating a separate namespace for minimap. - */ -var Minimap = {}; - -/** - * Initialize the workspace and minimap. - * @param {!Workspace} workspace The main workspace of the user. - * @param {!Workspace} minimap The workspace that will be used as a minimap. - */ -Minimap.init = function(workspace, minimap) { - this.workspace = workspace; - this.minimap = minimap; - - // Adding scroll callback functionality to vScroll and hScroll just for this demo. - // IMPORTANT: This should be changed when there is proper UI event handling - // API available and should be handled by workspace's event listeners. - this.workspace.scrollbar.vScroll.setHandlePosition = function(newPosition) { - this.handlePosition_ = newPosition; - this.svgHandle_.setAttribute(this.positionAttribute_, this.handlePosition_); - - // Code above is same as the original setHandlePosition function in core/scrollbar.js. - // New code starts from here. - - // Get the absolutePosition. - var absolutePosition = (this.handlePosition_ / this.ratio); - - // Firing the scroll change listener. - Minimap.onScrollChange(absolutePosition, this.horizontal_); - }; - - // Adding call back for horizontal scroll. - this.workspace.scrollbar.hScroll.setHandlePosition = function(newPosition) { - this.handlePosition_ = newPosition; - this.svgHandle_.setAttribute(this.positionAttribute_, this.handlePosition_); - - // Code above is same as the original setHandlePosition function in core/scrollbar.js. - // New code starts from here. - - // Get the absolutePosition. - var absolutePosition = (this.handlePosition_ / this.ratio); - - // Firing the scroll change listener. - Minimap.onScrollChange(absolutePosition, this.horizontal_); - }; - - - // Required to stop a positive feedback loop when user clicks minimap - // and the scroll changes, which in turn may change minimap. - this.disableScrollChange = false; - - // Listen to events on the main workspace. - this.workspace.addChangeListener(Minimap.mirrorEvent); - - //Get rectangle bounding the minimap div. - this.rect = document.getElementById('mapDiv').getBoundingClientRect(); - - // Create a svg overlay on the top of mapDiv for the minimap. - this.svg = Blockly.utils.dom.createSvgElement('svg', { - 'xmlns': Blockly.utils.dom.SVG_NS, - 'xmlns:html': Blockly.utils.dom.HTML_NS, - 'xmlns:xlink': Blockly.utils.dom.XLINK_NS, - 'version': '1.1', - 'height': this.rect.bottom-this.rect.top, - 'width': this.rect.right-this.rect.left, - 'class': 'minimap', - }, document.getElementById('mapDiv')); - this.svg.style.top = this.rect.top + 'px'; - this.svg.style.left = this.rect.left + 'px'; - - // Creating a rectangle in the minimap that represents current view. - Blockly.utils.dom.createSvgElement('rect', { - 'width': 100, - 'height': 100, - 'class': 'mapDragger' - }, this.svg); - - // Rectangle in the minimap that represents current view. - this.mapDragger = this.svg.childNodes[0]; - - // Adding mouse events to the rectangle, to make it Draggable. - // Using Blockly.browserEvents.bind to attach mouse/touch listeners. - Blockly.browserEvents.bind( - this.mapDragger, 'mousedown', null, Minimap.mousedown); - - //When the window change, we need to resize the minimap window. - window.addEventListener('resize', Minimap.repositionMinimap); - - // Mouse up event for the minimap. - this.svg.addEventListener('mouseup', Minimap.updateMapDragger); - - //Boolean to check whether I am dragging the surface or not. - this.isDragging = false; -}; - -Minimap.mousedown = function(e) { - // Using Blockly.browserEvents.bind to attach mouse/touch listeners. - Minimap.mouseMoveBindData = Blockly.browserEvents.bind( - document, 'mousemove', null, Minimap.mousemove); - Minimap.mouseUpBindData = - Blockly.browserEvents.bind(document, 'mouseup', null, Minimap.mouseup); - - Minimap.isDragging = true; - e.stopPropagation(); -}; - -Minimap.mouseup = function(e) { - Minimap.isDragging = false; - // Removing listeners. - Blockly.browserEvents.unbind(Minimap.mouseUpBindData); - Blockly.browserEvents.unbind(Minimap.mouseMoveBindData); - Minimap.updateMapDragger(e); - e.stopPropagation(); -}; - -Minimap.mousemove = function(e) { - if (Minimap.isDragging) { - Minimap.updateMapDragger(e); - e.stopPropagation(); - } -}; - -/** - * Run non-UI events from the main workspace on the minimap. - * @param {!Blockly.Events.Abstract} event Event that triggered in the main - * workspace. - */ -Minimap.mirrorEvent = function(event) { - if (event.isUiEvent) { - return; // Don't mirror UI events. - } - // Convert event to JSON. This could then be transmitted across the net. - var json = event.toJson(); - // Convert JSON back into an event, then execute it. - var minimapEvent = Blockly.Events.fromJson(json, Minimap.minimap); - minimapEvent.run(true); - Minimap.scaleMinimap(); - Minimap.setDraggerHeight(); - Minimap.setDraggerWidth(); -}; - -/** - * Called when window is resized. Repositions the minimap overlay. - */ -Minimap.repositionMinimap = function() { - Minimap.rect = document.getElementById('mapDiv').getBoundingClientRect(); - Minimap.svg.style.top = Minimap.rect.top + 'px'; - Minimap.svg.style.left = Minimap.rect.left + 'px'; -}; - -/** - * Updates the rectangle's height. - */ -Minimap.setDraggerHeight = function() { - var workspaceMetrics = Minimap.workspace.getMetrics(); - var draggerHeight = (workspaceMetrics.viewHeight / Minimap.workspace.scale) * - Minimap.minimap.scale; - // It's zero when first block is placed. - if (draggerHeight === 0) { - return; - } - Minimap.mapDragger.setAttribute('height', draggerHeight); -}; - -/** - * Updates the rectangle's width. - */ -Minimap.setDraggerWidth = function() { - var workspaceMetrics = Minimap.workspace.getMetrics(); - var draggerWidth = (workspaceMetrics.viewWidth / Minimap.workspace.scale) * - Minimap.minimap.scale; - // It's zero when first block is placed. - if (draggerWidth === 0) { - return; - } - Minimap.mapDragger.setAttribute('width', draggerWidth); -}; - - -/** - * Updates the overall position of the viewport of the minimap by appropriately - * using translate functions. - */ -Minimap.scaleMinimap = function() { - var minimapBoundingBox = Minimap.minimap.getBlocksBoundingBox(); - var workspaceBoundingBox = Minimap.workspace.getBlocksBoundingBox(); - var workspaceMetrics = Minimap.workspace.getMetrics(); - var minimapMetrics = Minimap.minimap.getMetrics(); - - // Scaling the mimimap such that all the blocks can be seen in the viewport. - // This padding is default because this is how to scrollbar(in main workspace) - // is implemented. - var topPadding = (workspaceMetrics.viewHeight) * Minimap.minimap.scale / - (2 * Minimap.workspace.scale); - var sidePadding = (workspaceMetrics.viewWidth) * Minimap.minimap.scale / - (2 * Minimap.workspace.scale); - - // If actual padding is more than half view ports height, - // change it to actual padding. - if ((workspaceBoundingBox.y * Minimap.workspace.scale - - workspaceMetrics.contentTop) * - Minimap.minimap.scale / Minimap.workspace.scale > topPadding) { - topPadding = (workspaceBoundingBox.y * Minimap.workspace.scale - - workspaceMetrics.contentTop) * - Minimap.minimap.scale / Minimap.workspace.scale; - } - - // If actual padding is more than half view ports height, - // change it to actual padding. - if ((workspaceBoundingBox.x * Minimap.workspace.scale - - workspaceMetrics.contentLeft) * - Minimap.minimap.scale / Minimap.workspace.scale > sidePadding) { - sidePadding = (workspaceBoundingBox.x * Minimap.workspace.scale - - workspaceMetrics.contentLeft) * - Minimap.minimap.scale / Minimap.workspace.scale; - } - - var scalex = (minimapMetrics.viewWidth - 2 * sidePadding) / - minimapBoundingBox.width; - var scaley = (minimapMetrics.viewHeight - 2 * topPadding) / - minimapBoundingBox.height; - Minimap.minimap.setScale(Math.min(scalex, scaley)); - - // Translating the minimap. - Minimap.minimap.translate( - -minimapMetrics.contentLeft * Minimap.minimap.scale + sidePadding, - -minimapMetrics.contentTop * Minimap.minimap.scale + topPadding); -}; - -/** - * Handles the onclick event on the minimapBoundingBox. - * Changes mapDraggers position. - * @param {!Event} e Event from the mouse click. - */ -Minimap.updateMapDragger = function(e) { - var y = e.clientY; - var x = e.clientX; - var draggerHeight = Minimap.mapDragger.getAttribute('height'); - var draggerWidth = Minimap.mapDragger.getAttribute('width'); - - var finalY = y - Minimap.rect.top - draggerHeight / 2; - var finalX = x - Minimap.rect.left - draggerWidth / 2; - - var maxValidY = (Minimap.workspace.getMetrics().contentHeight - - Minimap.workspace.getMetrics().viewHeight) * Minimap.minimap.scale; - var maxValidX = (Minimap.workspace.getMetrics().contentWidth - - Minimap.workspace.getMetrics().viewWidth) * Minimap.minimap.scale; - - if (y + draggerHeight / 2 > Minimap.rect.bottom) { - finalY = Minimap.rect.bottom - Minimap.rect.top - draggerHeight; - } else if (y < Minimap.rect.top + draggerHeight / 2) { - finalY = 0; - } - - if (x + draggerWidth / 2 > Minimap.rect.right) { - finalX = Minimap.rect.right - Minimap.rect.left - draggerWidth; - } else if (x < Minimap.rect.left + draggerWidth / 2) { - finalX = 0; - } - - // Do not go below lower bound of scrollbar. - if (finalY > maxValidY) { - finalY = maxValidY; - } - if (finalX > maxValidX) { - finalX = maxValidX; - } - Minimap.mapDragger.setAttribute('y', finalY); - Minimap.mapDragger.setAttribute('x', finalX); - // Required, otherwise creates a feedback loop. - Minimap.disableScrollChange = true; - Minimap.workspace.scrollbar.vScroll.set((finalY * Minimap.workspace.scale) / - Minimap.minimap.scale); - Minimap.workspace.scrollbar.hScroll.set((finalX * Minimap.workspace.scale) / - Minimap.minimap.scale); - Minimap.disableScrollChange = false; -}; - -/** - * Handles the onclick event on the minimapBoundingBox, parameters are passed by - * the event handler. - * @param {number} position This is the absolute position of the scrollbar. - * @param {boolean} horizontal Informs if the change event if for - * horizontal (true) or vertical (false) scrollbar. - */ -Minimap.onScrollChange = function(position, horizontal) { - if (!Minimap.disableScrollChange) { - Minimap.mapDragger.setAttribute(horizontal ? 'x' : 'y', - position * Minimap.minimap.scale / Minimap.workspace.scale); - } -}; +/** + + * Copyright 2017 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview JavaScript for Blockly's Minimap demo. + */ +'use strict'; + +/** + * Creating a separate namespace for minimap. + */ +var Minimap = {}; + +/** + * Initialize the workspace and minimap. + * @param {!Workspace} workspace The main workspace of the user. + * @param {!Workspace} minimap The workspace that will be used as a minimap. + */ +Minimap.init = function(workspace, minimap) { + this.workspace = workspace; + this.minimap = minimap; + + // Adding scroll callback functionality to vScroll and hScroll just for this demo. + // IMPORTANT: This should be changed when there is proper UI event handling + // API available and should be handled by workspace's event listeners. + this.workspace.scrollbar.vScroll.setHandlePosition = function(newPosition) { + this.handlePosition_ = newPosition; + this.svgHandle_.setAttribute(this.positionAttribute_, this.handlePosition_); + + // Code above is same as the original setHandlePosition function in core/scrollbar.js. + // New code starts from here. + + // Get the absolutePosition. + var absolutePosition = (this.handlePosition_ / this.ratio); + + // Firing the scroll change listener. + Minimap.onScrollChange(absolutePosition, this.horizontal_); + }; + + // Adding call back for horizontal scroll. + this.workspace.scrollbar.hScroll.setHandlePosition = function(newPosition) { + this.handlePosition_ = newPosition; + this.svgHandle_.setAttribute(this.positionAttribute_, this.handlePosition_); + + // Code above is same as the original setHandlePosition function in core/scrollbar.js. + // New code starts from here. + + // Get the absolutePosition. + var absolutePosition = (this.handlePosition_ / this.ratio); + + // Firing the scroll change listener. + Minimap.onScrollChange(absolutePosition, this.horizontal_); + }; + + + // Required to stop a positive feedback loop when user clicks minimap + // and the scroll changes, which in turn may change minimap. + this.disableScrollChange = false; + + // Listen to events on the main workspace. + this.workspace.addChangeListener(Minimap.mirrorEvent); + + //Get rectangle bounding the minimap div. + this.rect = document.getElementById('mapDiv').getBoundingClientRect(); + + // Create a svg overlay on the top of mapDiv for the minimap. + this.svg = Blockly.utils.dom.createSvgElement('svg', { + 'xmlns': Blockly.utils.dom.SVG_NS, + 'xmlns:html': Blockly.utils.dom.HTML_NS, + 'xmlns:xlink': Blockly.utils.dom.XLINK_NS, + 'version': '1.1', + 'height': this.rect.bottom-this.rect.top, + 'width': this.rect.right-this.rect.left, + 'class': 'minimap', + }, document.getElementById('mapDiv')); + this.svg.style.top = this.rect.top + 'px'; + this.svg.style.left = this.rect.left + 'px'; + + // Creating a rectangle in the minimap that represents current view. + Blockly.utils.dom.createSvgElement('rect', { + 'width': 100, + 'height': 100, + 'class': 'mapDragger' + }, this.svg); + + // Rectangle in the minimap that represents current view. + this.mapDragger = this.svg.childNodes[0]; + + // Adding mouse events to the rectangle, to make it Draggable. + // Using Blockly.browserEvents.bind to attach mouse/touch listeners. + Blockly.browserEvents.bind( + this.mapDragger, 'mousedown', null, Minimap.mousedown); + + //When the window change, we need to resize the minimap window. + window.addEventListener('resize', Minimap.repositionMinimap); + + // Mouse up event for the minimap. + this.svg.addEventListener('mouseup', Minimap.updateMapDragger); + + //Boolean to check whether I am dragging the surface or not. + this.isDragging = false; +}; + +Minimap.mousedown = function(e) { + // Using Blockly.browserEvents.bind to attach mouse/touch listeners. + Minimap.mouseMoveBindData = Blockly.browserEvents.bind( + document, 'mousemove', null, Minimap.mousemove); + Minimap.mouseUpBindData = + Blockly.browserEvents.bind(document, 'mouseup', null, Minimap.mouseup); + + Minimap.isDragging = true; + e.stopPropagation(); +}; + +Minimap.mouseup = function(e) { + Minimap.isDragging = false; + // Removing listeners. + Blockly.browserEvents.unbind(Minimap.mouseUpBindData); + Blockly.browserEvents.unbind(Minimap.mouseMoveBindData); + Minimap.updateMapDragger(e); + e.stopPropagation(); +}; + +Minimap.mousemove = function(e) { + if (Minimap.isDragging) { + Minimap.updateMapDragger(e); + e.stopPropagation(); + } +}; + +/** + * Run non-UI events from the main workspace on the minimap. + * @param {!Blockly.Events.Abstract} event Event that triggered in the main + * workspace. + */ +Minimap.mirrorEvent = function(event) { + if (event.isUiEvent) { + return; // Don't mirror UI events. + } + // Convert event to JSON. This could then be transmitted across the net. + var json = event.toJson(); + // Convert JSON back into an event, then execute it. + var minimapEvent = Blockly.Events.fromJson(json, Minimap.minimap); + minimapEvent.run(true); + Minimap.scaleMinimap(); + Minimap.setDraggerHeight(); + Minimap.setDraggerWidth(); +}; + +/** + * Called when window is resized. Repositions the minimap overlay. + */ +Minimap.repositionMinimap = function() { + Minimap.rect = document.getElementById('mapDiv').getBoundingClientRect(); + Minimap.svg.style.top = Minimap.rect.top + 'px'; + Minimap.svg.style.left = Minimap.rect.left + 'px'; +}; + +/** + * Updates the rectangle's height. + */ +Minimap.setDraggerHeight = function() { + var workspaceMetrics = Minimap.workspace.getMetrics(); + var draggerHeight = (workspaceMetrics.viewHeight / Minimap.workspace.scale) * + Minimap.minimap.scale; + // It's zero when first block is placed. + if (draggerHeight === 0) { + return; + } + Minimap.mapDragger.setAttribute('height', draggerHeight); +}; + +/** + * Updates the rectangle's width. + */ +Minimap.setDraggerWidth = function() { + var workspaceMetrics = Minimap.workspace.getMetrics(); + var draggerWidth = (workspaceMetrics.viewWidth / Minimap.workspace.scale) * + Minimap.minimap.scale; + // It's zero when first block is placed. + if (draggerWidth === 0) { + return; + } + Minimap.mapDragger.setAttribute('width', draggerWidth); +}; + + +/** + * Updates the overall position of the viewport of the minimap by appropriately + * using translate functions. + */ +Minimap.scaleMinimap = function() { + var minimapBoundingBox = Minimap.minimap.getBlocksBoundingBox(); + var workspaceBoundingBox = Minimap.workspace.getBlocksBoundingBox(); + var workspaceMetrics = Minimap.workspace.getMetrics(); + var minimapMetrics = Minimap.minimap.getMetrics(); + + // Scaling the mimimap such that all the blocks can be seen in the viewport. + // This padding is default because this is how to scrollbar(in main workspace) + // is implemented. + var topPadding = (workspaceMetrics.viewHeight) * Minimap.minimap.scale / + (2 * Minimap.workspace.scale); + var sidePadding = (workspaceMetrics.viewWidth) * Minimap.minimap.scale / + (2 * Minimap.workspace.scale); + + // If actual padding is more than half view ports height, + // change it to actual padding. + if ((workspaceBoundingBox.y * Minimap.workspace.scale - + workspaceMetrics.contentTop) * + Minimap.minimap.scale / Minimap.workspace.scale > topPadding) { + topPadding = (workspaceBoundingBox.y * Minimap.workspace.scale - + workspaceMetrics.contentTop) * + Minimap.minimap.scale / Minimap.workspace.scale; + } + + // If actual padding is more than half view ports height, + // change it to actual padding. + if ((workspaceBoundingBox.x * Minimap.workspace.scale - + workspaceMetrics.contentLeft) * + Minimap.minimap.scale / Minimap.workspace.scale > sidePadding) { + sidePadding = (workspaceBoundingBox.x * Minimap.workspace.scale - + workspaceMetrics.contentLeft) * + Minimap.minimap.scale / Minimap.workspace.scale; + } + + var scalex = (minimapMetrics.viewWidth - 2 * sidePadding) / + minimapBoundingBox.width; + var scaley = (minimapMetrics.viewHeight - 2 * topPadding) / + minimapBoundingBox.height; + Minimap.minimap.setScale(Math.min(scalex, scaley)); + + // Translating the minimap. + Minimap.minimap.translate( + -minimapMetrics.contentLeft * Minimap.minimap.scale + sidePadding, + -minimapMetrics.contentTop * Minimap.minimap.scale + topPadding); +}; + +/** + * Handles the onclick event on the minimapBoundingBox. + * Changes mapDraggers position. + * @param {!Event} e Event from the mouse click. + */ +Minimap.updateMapDragger = function(e) { + var y = e.clientY; + var x = e.clientX; + var draggerHeight = Minimap.mapDragger.getAttribute('height'); + var draggerWidth = Minimap.mapDragger.getAttribute('width'); + + var finalY = y - Minimap.rect.top - draggerHeight / 2; + var finalX = x - Minimap.rect.left - draggerWidth / 2; + + var maxValidY = (Minimap.workspace.getMetrics().contentHeight - + Minimap.workspace.getMetrics().viewHeight) * Minimap.minimap.scale; + var maxValidX = (Minimap.workspace.getMetrics().contentWidth - + Minimap.workspace.getMetrics().viewWidth) * Minimap.minimap.scale; + + if (y + draggerHeight / 2 > Minimap.rect.bottom) { + finalY = Minimap.rect.bottom - Minimap.rect.top - draggerHeight; + } else if (y < Minimap.rect.top + draggerHeight / 2) { + finalY = 0; + } + + if (x + draggerWidth / 2 > Minimap.rect.right) { + finalX = Minimap.rect.right - Minimap.rect.left - draggerWidth; + } else if (x < Minimap.rect.left + draggerWidth / 2) { + finalX = 0; + } + + // Do not go below lower bound of scrollbar. + if (finalY > maxValidY) { + finalY = maxValidY; + } + if (finalX > maxValidX) { + finalX = maxValidX; + } + Minimap.mapDragger.setAttribute('y', finalY); + Minimap.mapDragger.setAttribute('x', finalX); + // Required, otherwise creates a feedback loop. + Minimap.disableScrollChange = true; + Minimap.workspace.scrollbar.vScroll.set((finalY * Minimap.workspace.scale) / + Minimap.minimap.scale); + Minimap.workspace.scrollbar.hScroll.set((finalX * Minimap.workspace.scale) / + Minimap.minimap.scale); + Minimap.disableScrollChange = false; +}; + +/** + * Handles the onclick event on the minimapBoundingBox, parameters are passed by + * the event handler. + * @param {number} position This is the absolute position of the scrollbar. + * @param {boolean} horizontal Informs if the change event if for + * horizontal (true) or vertical (false) scrollbar. + */ +Minimap.onScrollChange = function(position, horizontal) { + if (!Minimap.disableScrollChange) { + Minimap.mapDragger.setAttribute(horizontal ? 'x' : 'y', + position * Minimap.minimap.scale / Minimap.workspace.scale); + } +}; diff --git a/demos/mirror/index.html b/demos/mirror/index.html index 84762f31df5..8110637dd40 100644 --- a/demos/mirror/index.html +++ b/demos/mirror/index.html @@ -1,81 +1,81 @@ - - - - - Blockly Demo: Mirrored Blockly - - - - - - -

Blockly > - Demos > Mirrored Blockly

- -

This is a simple demo of a primary Blockly instance that controls a secondary Blockly instance with events. - Open the JavaScript console to see the event passing.

- -

→ More info on events

- - - - - - -
-
-
-
-
- - - - - - - + + + + + Blockly Demo: Mirrored Blockly + + + + + + +

Blockly > + Demos > Mirrored Blockly

+ +

This is a simple demo of a primary Blockly instance that controls a secondary Blockly instance with events. + Open the JavaScript console to see the event passing.

+ +

→ More info on events

+ + + + + + +
+
+
+
+
+ + + + + + + diff --git a/demos/mobile/README.md b/demos/mobile/README.md index 168690e55db..3ebea670dca 100644 --- a/demos/mobile/README.md +++ b/demos/mobile/README.md @@ -1,53 +1,53 @@ -# Blockly on Mobile Devices - -This directory contains three examples of running the Blockly library on mobile -devices. The `html/` directory is a example of configuring a webpage for touch -devices, with a Blockly workspace that fills the screen. - -The `mobile/html/` is also the basis for the Android and iOS demos. Each native -app copies this demo into the app's local resources, and required Blockly -library files, and hosts them in an embedded WebView. - -Thus, developers can quickly iterate within the `mobile/html/` directory, and -see changes in both the Android and iOS native apps. - -## Running the Mobile HTML Demo - -Before running the mobile HTML demo, you need to create some symbolic links -in your local file system. Run the `mobile/html/ln_resources.sh` file from -the `mobile/html/` directory. This mimics the relative locations of the -Blockly files seen when loading the page in a native app's embedded WebView. - -After doing this, opening `mobile/html/index.html` should open normally, -filling the page with one large Blockly workspace. - -## The Android App - -### Build and Run - -Open the `demos/mobile/android/` directory in Android Studio. The project -files in the directory should be ready to build and run the demo in an emulator -or connected device. - -### Android Copy Tasks - -If you edit the `mobile/html/` demo to include new files, you will need to -update the native app project files to also copy those files. - -In the Android project, two Gradle tasks are responsible for the copies. -In `mobile/android/app/build.gradle`, the tasks `copyBlocklyHtmlFile` and -`copyBlocklyMoreFiles` configure the copy actions. - -## The iOS App - -### Build and Run - -Open the `demos/mobile/iOS/` directory in XCode. The project files in the -directory should be ready to build and run the demo in a simulator or connected -device. - -### iOS Copy Script - -The XCode project call out to `mobile/ios/cp_resources.sh` to copy the required -HTML and related files. If you've edited the `mobile/html/` demo to require new -files, update this script to copy these files, too. +# Blockly on Mobile Devices + +This directory contains three examples of running the Blockly library on mobile +devices. The `html/` directory is a example of configuring a webpage for touch +devices, with a Blockly workspace that fills the screen. + +The `mobile/html/` is also the basis for the Android and iOS demos. Each native +app copies this demo into the app's local resources, and required Blockly +library files, and hosts them in an embedded WebView. + +Thus, developers can quickly iterate within the `mobile/html/` directory, and +see changes in both the Android and iOS native apps. + +## Running the Mobile HTML Demo + +Before running the mobile HTML demo, you need to create some symbolic links +in your local file system. Run the `mobile/html/ln_resources.sh` file from +the `mobile/html/` directory. This mimics the relative locations of the +Blockly files seen when loading the page in a native app's embedded WebView. + +After doing this, opening `mobile/html/index.html` should open normally, +filling the page with one large Blockly workspace. + +## The Android App + +### Build and Run + +Open the `demos/mobile/android/` directory in Android Studio. The project +files in the directory should be ready to build and run the demo in an emulator +or connected device. + +### Android Copy Tasks + +If you edit the `mobile/html/` demo to include new files, you will need to +update the native app project files to also copy those files. + +In the Android project, two Gradle tasks are responsible for the copies. +In `mobile/android/app/build.gradle`, the tasks `copyBlocklyHtmlFile` and +`copyBlocklyMoreFiles` configure the copy actions. + +## The iOS App + +### Build and Run + +Open the `demos/mobile/iOS/` directory in XCode. The project files in the +directory should be ready to build and run the demo in a simulator or connected +device. + +### iOS Copy Script + +The XCode project call out to `mobile/ios/cp_resources.sh` to copy the required +HTML and related files. If you've edited the `mobile/html/` demo to require new +files, update this script to copy these files, too. diff --git a/demos/mobile/android/.gitignore b/demos/mobile/android/.gitignore index 3ba2b2b61bd..485a70f1529 100644 --- a/demos/mobile/android/.gitignore +++ b/demos/mobile/android/.gitignore @@ -1,27 +1,27 @@ -/build -/captures -/app/src/main/assets/blockly -.settings -.project - -# Local Settings -local.properties - -# Project files -*.komodoproject -.gradle -*.iml -.idea - -# Build files -*.pyc -*.apk -*.ap_ -*.class -*.dex - -# OSX Files -.DS_Store - -# Windows Files -Thumb.db +/build +/captures +/app/src/main/assets/blockly +.settings +.project + +# Local Settings +local.properties + +# Project files +*.komodoproject +.gradle +*.iml +.idea + +# Build files +*.pyc +*.apk +*.ap_ +*.class +*.dex + +# OSX Files +.DS_Store + +# Windows Files +Thumb.db diff --git a/demos/mobile/android/README.md b/demos/mobile/android/README.md index 31f968feab4..24d57092a68 100644 --- a/demos/mobile/android/README.md +++ b/demos/mobile/android/README.md @@ -1,45 +1,45 @@ -# Blockly in an Android WebView - -This code demonstrates how to get Blockly running in an Android app by -embedding it in a WebView. - -### BlocklyWebViewFragment - -Most of the work is done within the fragment class `BlocklyWebViewFragment`. -This fragment instantiates the WebView, loads the HTML -(`assets/blockly/webview.html`, copied from `demos/mobile/html/index.html`), -and provides a few helper methods. - -### Copying web assets with gradle - -This android project copies the necessary files from the main Blockly -repository (i.e., parent directory). In `app/build.gradle`, note the -`copyBlocklyHtmlFile` and `copyBlocklyMoreFiles` tasks. - -In your own project, the HTML and related files can be placed directly in the -`assets/blockly` directory without the copy step. However, using the copy tasks -simplifies the synchronization with an iOS app using the same files. - -### Loading Block Definitions and Generator functions - -The `webview.html` loads the block definitions and generator functions directly -into the page, without support or coordination with the Android classes. This -assumes the app will always utilize the same blocks. This does not mean all -blocks are visible to the user all the time; that is controlled by the toolbox -and workspace files. This should accommodate almost all applications. - -This does mean loading your own block definitions and generators will involve -editing the HTML, adding you own ` - - - - - - -
- - + + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/demos/mobile/html/ln_resources.sh b/demos/mobile/html/ln_resources.sh index c4c3b605d4e..edb76c1b664 100755 --- a/demos/mobile/html/ln_resources.sh +++ b/demos/mobile/html/ln_resources.sh @@ -1,22 +1,22 @@ -#!/bin/bash -e -# -# Create symbolic links in this directory for the -# Blockly library files used by this demo's index.html. - -if [[ ! -e ../../../blockly_compressed.js ]]; then - echo "ERROR: Could not locate blockly_compressed.js. Run from demos/mobile/html/" 1>&2 - exit 1 # terminate and indicate error -fi - -if [ ! -L blockly_compressed.js ]; then - ln -s ../../../blockly_compressed.js blockly_compressed.js -fi -if [ ! -L blocks_compressed.js ]; then - ln -s ../../../blocks_compressed.js blocks_compressed.js -fi -if [ ! -L media ]; then - ln -s ../../../media media -fi -if [ ! -L msg ]; then - ln -s ../../../msg msg -fi +#!/bin/bash -e +# +# Create symbolic links in this directory for the +# Blockly library files used by this demo's index.html. + +if [[ ! -e ../../../blockly_compressed.js ]]; then + echo "ERROR: Could not locate blockly_compressed.js. Run from demos/mobile/html/" 1>&2 + exit 1 # terminate and indicate error +fi + +if [ ! -L blockly_compressed.js ]; then + ln -s ../../../blockly_compressed.js blockly_compressed.js +fi +if [ ! -L blocks_compressed.js ]; then + ln -s ../../../blocks_compressed.js blocks_compressed.js +fi +if [ ! -L media ]; then + ln -s ../../../media media +fi +if [ ! -L msg ]; then + ln -s ../../../msg msg +fi diff --git a/demos/mobile/html/toolbox_standard.js b/demos/mobile/html/toolbox_standard.js index 20326882fc5..95b338a83c0 100644 --- a/demos/mobile/html/toolbox_standard.js +++ b/demos/mobile/html/toolbox_standard.js @@ -1,333 +1,333 @@ - -var BLOCKLY_TOOLBOX_XML = BLOCKLY_TOOLBOX_XML || Object.create(null); - -/* BEGINNING BLOCKLY_TOOLBOX_XML ASSIGNMENT. DO NOT EDIT. USE BLOCKLY DEVTOOLS. */ -BLOCKLY_TOOLBOX_XML['standard'] = -// From XML string/file, replace ^\s?(\s*)?(<.*>)$ with \+$1'$2' -// Tweak first and last line. -'' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '10' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '1' -+ '' -+ '' -+ '' -+ '' -+ '10' -+ '' -+ '' -+ '' -+ '' -+ '1' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '123' -+ '' -+ '' -+ '' -+ '' -+ '1' -+ '' -+ '' -+ '' -+ '' -+ '1' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '9' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '45' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '0' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '3.1' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '64' -+ '' -+ '' -+ '' -+ '' -+ '10' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '50' -+ '' -+ '' -+ '' -+ '' -+ '1' -+ '' -+ '' -+ '' -+ '' -+ '100' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '1' -+ '' -+ '' -+ '' -+ '' -+ '100' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'abc' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'text' -+ '' -+ '' -+ '' -+ '' -+ 'abc' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'text' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'text' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'abc' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'abc' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'abc' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'abc' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '5' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'list' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'list' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'list' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ 'list' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ ',' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '100' -+ '' -+ '' -+ '' -+ '' -+ '50' -+ '' -+ '' -+ '' -+ '' -+ '0' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '#ff0000' -+ '' -+ '' -+ '' -+ '' -+ '#3333ff' -+ '' -+ '' -+ '' -+ '' -+ '0.5' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ '' -+ ''; -/* END BLOCKLY_TOOLBOX_XML ASSIGNMENT. DO NOT EDIT. */ + +var BLOCKLY_TOOLBOX_XML = BLOCKLY_TOOLBOX_XML || Object.create(null); + +/* BEGINNING BLOCKLY_TOOLBOX_XML ASSIGNMENT. DO NOT EDIT. USE BLOCKLY DEVTOOLS. */ +BLOCKLY_TOOLBOX_XML['standard'] = +// From XML string/file, replace ^\s?(\s*)?(<.*>)$ with \+$1'$2' +// Tweak first and last line. +'' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '10' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '1' ++ '' ++ '' ++ '' ++ '' ++ '10' ++ '' ++ '' ++ '' ++ '' ++ '1' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '123' ++ '' ++ '' ++ '' ++ '' ++ '1' ++ '' ++ '' ++ '' ++ '' ++ '1' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '9' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '45' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '0' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '3.1' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '64' ++ '' ++ '' ++ '' ++ '' ++ '10' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '50' ++ '' ++ '' ++ '' ++ '' ++ '1' ++ '' ++ '' ++ '' ++ '' ++ '100' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '1' ++ '' ++ '' ++ '' ++ '' ++ '100' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'abc' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'text' ++ '' ++ '' ++ '' ++ '' ++ 'abc' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'text' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'text' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'abc' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'abc' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'abc' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'abc' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '5' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'list' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'list' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'list' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ 'list' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ ',' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '100' ++ '' ++ '' ++ '' ++ '' ++ '50' ++ '' ++ '' ++ '' ++ '' ++ '0' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '#ff0000' ++ '' ++ '' ++ '' ++ '' ++ '#3333ff' ++ '' ++ '' ++ '' ++ '' ++ '0.5' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ '' ++ ''; +/* END BLOCKLY_TOOLBOX_XML ASSIGNMENT. DO NOT EDIT. */ diff --git a/demos/mobile/ios/.gitignore b/demos/mobile/ios/.gitignore index 6c1f837691d..2f2211a538f 100644 --- a/demos/mobile/ios/.gitignore +++ b/demos/mobile/ios/.gitignore @@ -1,25 +1,25 @@ -# Files copied by cp_resources.sh -/Resources/Non-Localized/Blockly - - -# Xcode.gitignore - -## User settings -xcuserdata/ - -## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) -*.xcscmblueprint -*.xccheckout - -## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) -build/ -DerivedData/ -*.moved-aside -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 +# Files copied by cp_resources.sh +/Resources/Non-Localized/Blockly + + +# Xcode.gitignore + +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 diff --git a/demos/mobile/ios/Blockly WebView.xcodeproj/project.pbxproj b/demos/mobile/ios/Blockly WebView.xcodeproj/project.pbxproj index a3f72fcd431..4bff2f72862 100644 --- a/demos/mobile/ios/Blockly WebView.xcodeproj/project.pbxproj +++ b/demos/mobile/ios/Blockly WebView.xcodeproj/project.pbxproj @@ -1,390 +1,390 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - AB036C55211B89D600CCC9D8 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB036C54211B89D600CCC9D8 /* WebKit.framework */; }; - AB980111211A37B50025AFF2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB980110211A37B50025AFF2 /* AppDelegate.swift */; }; - AB980113211A37B50025AFF2 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB980112211A37B50025AFF2 /* ViewController.swift */; }; - AB980116211A37B50025AFF2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AB980114211A37B50025AFF2 /* Main.storyboard */; }; - AB980118211A37B70025AFF2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AB980117211A37B70025AFF2 /* Assets.xcassets */; }; - AB98011B211A37B70025AFF2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AB980119211A37B70025AFF2 /* LaunchScreen.storyboard */; }; - ABA1B7FC212214E7000D3CC5 /* Blockly in Resources */ = {isa = PBXBuildFile; fileRef = ABA1B7FB212214E7000D3CC5 /* Blockly */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - AB036C54211B89D600CCC9D8 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; - AB98010D211A37B50025AFF2 /* Blockly WebView.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Blockly WebView.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - AB980110211A37B50025AFF2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - AB980112211A37B50025AFF2 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - AB980115211A37B50025AFF2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - AB980117211A37B70025AFF2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - AB98011A211A37B70025AFF2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - AB98011C211A37B70025AFF2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - ABA1B7FB212214E7000D3CC5 /* Blockly */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Blockly; path = "Resources/Non-Localized/Blockly"; sourceTree = SOURCE_ROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - AB98010A211A37B50025AFF2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - AB036C55211B89D600CCC9D8 /* WebKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - AB036C53211B89D500CCC9D8 /* Frameworks */ = { - isa = PBXGroup; - children = ( - AB036C54211B89D600CCC9D8 /* WebKit.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - AB980104211A37B50025AFF2 = { - isa = PBXGroup; - children = ( - AB98010F211A37B50025AFF2 /* Blockly WebView */, - AB98010E211A37B50025AFF2 /* Products */, - AB036C53211B89D500CCC9D8 /* Frameworks */, - ); - sourceTree = ""; - }; - AB98010E211A37B50025AFF2 /* Products */ = { - isa = PBXGroup; - children = ( - AB98010D211A37B50025AFF2 /* Blockly WebView.app */, - ); - name = Products; - sourceTree = ""; - }; - AB98010F211A37B50025AFF2 /* Blockly WebView */ = { - isa = PBXGroup; - children = ( - ABA1B7F9212214B9000D3CC5 /* Resources */, - AB980110211A37B50025AFF2 /* AppDelegate.swift */, - AB980112211A37B50025AFF2 /* ViewController.swift */, - AB980114211A37B50025AFF2 /* Main.storyboard */, - AB980117211A37B70025AFF2 /* Assets.xcassets */, - AB980119211A37B70025AFF2 /* LaunchScreen.storyboard */, - AB98011C211A37B70025AFF2 /* Info.plist */, - ); - path = "Blockly WebView"; - sourceTree = ""; - }; - ABA1B7F9212214B9000D3CC5 /* Resources */ = { - isa = PBXGroup; - children = ( - ABA1B7FA212214C6000D3CC5 /* Non-Localized */, - ); - path = Resources; - sourceTree = ""; - }; - ABA1B7FA212214C6000D3CC5 /* Non-Localized */ = { - isa = PBXGroup; - children = ( - ABA1B7FB212214E7000D3CC5 /* Blockly */, - ); - path = "Non-Localized"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - AB98010C211A37B50025AFF2 /* Blockly WebView */ = { - isa = PBXNativeTarget; - buildConfigurationList = AB98011F211A37B70025AFF2 /* Build configuration list for PBXNativeTarget "Blockly WebView" */; - buildPhases = ( - AB980109211A37B50025AFF2 /* Sources */, - AB98010A211A37B50025AFF2 /* Frameworks */, - ABEDABD1212372E700A66667 /* ShellScript */, - AB98010B211A37B50025AFF2 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Blockly WebView"; - productName = "Blockly WebView"; - productReference = AB98010D211A37B50025AFF2 /* Blockly WebView.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - AB980105211A37B50025AFF2 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0940; - LastUpgradeCheck = 0940; - ORGANIZATIONNAME = Google; - TargetAttributes = { - AB98010C211A37B50025AFF2 = { - CreatedOnToolsVersion = 9.4.1; - }; - }; - }; - buildConfigurationList = AB980108211A37B50025AFF2 /* Build configuration list for PBXProject "Blockly WebView" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = AB980104211A37B50025AFF2; - productRefGroup = AB98010E211A37B50025AFF2 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - AB98010C211A37B50025AFF2 /* Blockly WebView */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - AB98010B211A37B50025AFF2 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - AB98011B211A37B70025AFF2 /* LaunchScreen.storyboard in Resources */, - AB980118211A37B70025AFF2 /* Assets.xcassets in Resources */, - AB980116211A37B50025AFF2 /* Main.storyboard in Resources */, - ABA1B7FC212214E7000D3CC5 /* Blockly in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - ABEDABD1212372E700A66667 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = ./cp_resources.sh; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - AB980109211A37B50025AFF2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - AB980113211A37B50025AFF2 /* ViewController.swift in Sources */, - AB980111211A37B50025AFF2 /* AppDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - AB980114211A37B50025AFF2 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - AB980115211A37B50025AFF2 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - AB980119211A37B70025AFF2 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - AB98011A211A37B70025AFF2 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - AB98011D211A37B70025AFF2 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.4; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - AB98011E211A37B70025AFF2 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.4; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - AB980120211A37B70025AFF2 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 3KZF7Q7Q49; - INFOPLIST_FILE = "Blockly WebView/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.google.kidscoding.Blockly-WebView"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - AB980121211A37B70025AFF2 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 3KZF7Q7Q49; - INFOPLIST_FILE = "Blockly WebView/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.google.kidscoding.Blockly-WebView"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - AB980108211A37B50025AFF2 /* Build configuration list for PBXProject "Blockly WebView" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - AB98011D211A37B70025AFF2 /* Debug */, - AB98011E211A37B70025AFF2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - AB98011F211A37B70025AFF2 /* Build configuration list for PBXNativeTarget "Blockly WebView" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - AB980120211A37B70025AFF2 /* Debug */, - AB980121211A37B70025AFF2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = AB980105211A37B50025AFF2 /* Project object */; -} +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + AB036C55211B89D600CCC9D8 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB036C54211B89D600CCC9D8 /* WebKit.framework */; }; + AB980111211A37B50025AFF2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB980110211A37B50025AFF2 /* AppDelegate.swift */; }; + AB980113211A37B50025AFF2 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB980112211A37B50025AFF2 /* ViewController.swift */; }; + AB980116211A37B50025AFF2 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AB980114211A37B50025AFF2 /* Main.storyboard */; }; + AB980118211A37B70025AFF2 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AB980117211A37B70025AFF2 /* Assets.xcassets */; }; + AB98011B211A37B70025AFF2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AB980119211A37B70025AFF2 /* LaunchScreen.storyboard */; }; + ABA1B7FC212214E7000D3CC5 /* Blockly in Resources */ = {isa = PBXBuildFile; fileRef = ABA1B7FB212214E7000D3CC5 /* Blockly */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + AB036C54211B89D600CCC9D8 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; + AB98010D211A37B50025AFF2 /* Blockly WebView.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Blockly WebView.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + AB980110211A37B50025AFF2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + AB980112211A37B50025AFF2 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + AB980115211A37B50025AFF2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + AB980117211A37B70025AFF2 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + AB98011A211A37B70025AFF2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + AB98011C211A37B70025AFF2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + ABA1B7FB212214E7000D3CC5 /* Blockly */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Blockly; path = "Resources/Non-Localized/Blockly"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + AB98010A211A37B50025AFF2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AB036C55211B89D600CCC9D8 /* WebKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + AB036C53211B89D500CCC9D8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + AB036C54211B89D600CCC9D8 /* WebKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + AB980104211A37B50025AFF2 = { + isa = PBXGroup; + children = ( + AB98010F211A37B50025AFF2 /* Blockly WebView */, + AB98010E211A37B50025AFF2 /* Products */, + AB036C53211B89D500CCC9D8 /* Frameworks */, + ); + sourceTree = ""; + }; + AB98010E211A37B50025AFF2 /* Products */ = { + isa = PBXGroup; + children = ( + AB98010D211A37B50025AFF2 /* Blockly WebView.app */, + ); + name = Products; + sourceTree = ""; + }; + AB98010F211A37B50025AFF2 /* Blockly WebView */ = { + isa = PBXGroup; + children = ( + ABA1B7F9212214B9000D3CC5 /* Resources */, + AB980110211A37B50025AFF2 /* AppDelegate.swift */, + AB980112211A37B50025AFF2 /* ViewController.swift */, + AB980114211A37B50025AFF2 /* Main.storyboard */, + AB980117211A37B70025AFF2 /* Assets.xcassets */, + AB980119211A37B70025AFF2 /* LaunchScreen.storyboard */, + AB98011C211A37B70025AFF2 /* Info.plist */, + ); + path = "Blockly WebView"; + sourceTree = ""; + }; + ABA1B7F9212214B9000D3CC5 /* Resources */ = { + isa = PBXGroup; + children = ( + ABA1B7FA212214C6000D3CC5 /* Non-Localized */, + ); + path = Resources; + sourceTree = ""; + }; + ABA1B7FA212214C6000D3CC5 /* Non-Localized */ = { + isa = PBXGroup; + children = ( + ABA1B7FB212214E7000D3CC5 /* Blockly */, + ); + path = "Non-Localized"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + AB98010C211A37B50025AFF2 /* Blockly WebView */ = { + isa = PBXNativeTarget; + buildConfigurationList = AB98011F211A37B70025AFF2 /* Build configuration list for PBXNativeTarget "Blockly WebView" */; + buildPhases = ( + AB980109211A37B50025AFF2 /* Sources */, + AB98010A211A37B50025AFF2 /* Frameworks */, + ABEDABD1212372E700A66667 /* ShellScript */, + AB98010B211A37B50025AFF2 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Blockly WebView"; + productName = "Blockly WebView"; + productReference = AB98010D211A37B50025AFF2 /* Blockly WebView.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + AB980105211A37B50025AFF2 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0940; + LastUpgradeCheck = 0940; + ORGANIZATIONNAME = Google; + TargetAttributes = { + AB98010C211A37B50025AFF2 = { + CreatedOnToolsVersion = 9.4.1; + }; + }; + }; + buildConfigurationList = AB980108211A37B50025AFF2 /* Build configuration list for PBXProject "Blockly WebView" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = AB980104211A37B50025AFF2; + productRefGroup = AB98010E211A37B50025AFF2 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + AB98010C211A37B50025AFF2 /* Blockly WebView */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + AB98010B211A37B50025AFF2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AB98011B211A37B70025AFF2 /* LaunchScreen.storyboard in Resources */, + AB980118211A37B70025AFF2 /* Assets.xcassets in Resources */, + AB980116211A37B50025AFF2 /* Main.storyboard in Resources */, + ABA1B7FC212214E7000D3CC5 /* Blockly in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + ABEDABD1212372E700A66667 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ./cp_resources.sh; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + AB980109211A37B50025AFF2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AB980113211A37B50025AFF2 /* ViewController.swift in Sources */, + AB980111211A37B50025AFF2 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + AB980114211A37B50025AFF2 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + AB980115211A37B50025AFF2 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + AB980119211A37B70025AFF2 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + AB98011A211A37B70025AFF2 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + AB98011D211A37B70025AFF2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.4; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + AB98011E211A37B70025AFF2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.4; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + AB980120211A37B70025AFF2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 3KZF7Q7Q49; + INFOPLIST_FILE = "Blockly WebView/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.google.kidscoding.Blockly-WebView"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + AB980121211A37B70025AFF2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 3KZF7Q7Q49; + INFOPLIST_FILE = "Blockly WebView/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.google.kidscoding.Blockly-WebView"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + AB980108211A37B50025AFF2 /* Build configuration list for PBXProject "Blockly WebView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AB98011D211A37B70025AFF2 /* Debug */, + AB98011E211A37B70025AFF2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AB98011F211A37B70025AFF2 /* Build configuration list for PBXNativeTarget "Blockly WebView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AB980120211A37B70025AFF2 /* Debug */, + AB980121211A37B70025AFF2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = AB980105211A37B50025AFF2 /* Project object */; +} diff --git a/demos/mobile/ios/Blockly WebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/demos/mobile/ios/Blockly WebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 2a4f4ae836a..c6d023aeda4 100644 --- a/demos/mobile/ios/Blockly WebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/demos/mobile/ios/Blockly WebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -1,7 +1,7 @@ - - - - - + + + + + diff --git a/demos/mobile/ios/Blockly WebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/demos/mobile/ios/Blockly WebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist index 18d981003d6..fc6bf807485 100644 --- a/demos/mobile/ios/Blockly WebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ b/demos/mobile/ios/Blockly WebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -1,8 +1,8 @@ - - - - - IDEDidComputeMac32BitWarning - - - + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/demos/mobile/ios/Blockly WebView.xcodeproj/xcuserdata/marshalla.xcuserdatad/xcschemes/xcschememanagement.plist b/demos/mobile/ios/Blockly WebView.xcodeproj/xcuserdata/marshalla.xcuserdatad/xcschemes/xcschememanagement.plist index e1e71ff066e..b6489fe7503 100644 --- a/demos/mobile/ios/Blockly WebView.xcodeproj/xcuserdata/marshalla.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/demos/mobile/ios/Blockly WebView.xcodeproj/xcuserdata/marshalla.xcuserdatad/xcschemes/xcschememanagement.plist @@ -1,19 +1,19 @@ - - - - - SchemeUserState - - Blockly WebView.xcscheme - - orderHint - 0 - - Blockly WebView.xcscheme_^#shared#^_ - - orderHint - 0 - - - - + + + + + SchemeUserState + + Blockly WebView.xcscheme + + orderHint + 0 + + Blockly WebView.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/demos/mobile/ios/Blockly WebView/AppDelegate.swift b/demos/mobile/ios/Blockly WebView/AppDelegate.swift index 1f2bf6eedce..71df8be6256 100644 --- a/demos/mobile/ios/Blockly WebView/AppDelegate.swift +++ b/demos/mobile/ios/Blockly WebView/AppDelegate.swift @@ -1,46 +1,46 @@ -// -// AppDelegate.swift -// Blockly WebView -// -// Created by Andrew Marshall on 8/7/18. -// Copyright © 2018 Google. All rights reserved. -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(_ application: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(_ application: UIApplication) { - // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(_ application: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(_ application: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } - - -} - +// +// AppDelegate.swift +// Blockly WebView +// +// Created by Andrew Marshall on 8/7/18. +// Copyright © 2018 Google. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/demos/mobile/ios/Blockly WebView/Assets.xcassets/AppIcon.appiconset/Contents.json b/demos/mobile/ios/Blockly WebView/Assets.xcassets/AppIcon.appiconset/Contents.json index d8db8d65fd7..dd41a33e106 100644 --- a/demos/mobile/ios/Blockly WebView/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/demos/mobile/ios/Blockly WebView/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,98 +1,98 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x" - }, - { - "idiom" : "ios-marketing", - "size" : "1024x1024", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } } \ No newline at end of file diff --git a/demos/mobile/ios/Blockly WebView/Assets.xcassets/Contents.json b/demos/mobile/ios/Blockly WebView/Assets.xcassets/Contents.json index da4a164c918..30b95156576 100644 --- a/demos/mobile/ios/Blockly WebView/Assets.xcassets/Contents.json +++ b/demos/mobile/ios/Blockly WebView/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } +{ + "info" : { + "version" : 1, + "author" : "xcode" + } } \ No newline at end of file diff --git a/demos/mobile/ios/Blockly WebView/Base.lproj/LaunchScreen.storyboard b/demos/mobile/ios/Blockly WebView/Base.lproj/LaunchScreen.storyboard index f83f6fd5810..92e174b4cd9 100644 --- a/demos/mobile/ios/Blockly WebView/Base.lproj/LaunchScreen.storyboard +++ b/demos/mobile/ios/Blockly WebView/Base.lproj/LaunchScreen.storyboard @@ -1,25 +1,25 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/mobile/ios/Blockly WebView/Base.lproj/Main.storyboard b/demos/mobile/ios/Blockly WebView/Base.lproj/Main.storyboard index 35c8fdddfc2..fe15eb344e5 100644 --- a/demos/mobile/ios/Blockly WebView/Base.lproj/Main.storyboard +++ b/demos/mobile/ios/Blockly WebView/Base.lproj/Main.storyboard @@ -1,44 +1,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demos/mobile/ios/Blockly WebView/Info.plist b/demos/mobile/ios/Blockly WebView/Info.plist index 16be3b68112..5c090402393 100644 --- a/demos/mobile/ios/Blockly WebView/Info.plist +++ b/demos/mobile/ios/Blockly WebView/Info.plist @@ -1,45 +1,45 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/demos/mobile/ios/Blockly WebView/ViewController.swift b/demos/mobile/ios/Blockly WebView/ViewController.swift index f8ad8018e44..a8b3bbfa1e3 100644 --- a/demos/mobile/ios/Blockly WebView/ViewController.swift +++ b/demos/mobile/ios/Blockly WebView/ViewController.swift @@ -1,111 +1,111 @@ -// ViewController.swift -// Blockly WebView UI controller. -// -// Created by Andrew Marshall on 8/7/18. -// Copyright © 2018 Google. All rights reserved. -// - -import UIKit -import WebKit - - -/// A basic ViewController for a WebView. -/// It handles the initial page load, and functions like window.prompt(). -class ViewController: UIViewController, WKUIDelegate { - /// The name used to reference this iOS object when executing callbacks from the JS code. - /// If this value is changed, it should also be changed in the `CODE_GENERATOR_BRIDGE_JS` file. - fileprivate static let HOST_HTML = "Blockly/webview.html" - - @IBOutlet weak var webView: WKWebView! - - /// Additional setup after loading the UI NIB. - override func viewDidLoad() { - super.viewDidLoad() - webView.uiDelegate = self - // Do any additional setup after loading the view, typically from a nib. - loadWebContent() - } - - /// Load the root HTML page into the webview. - func loadWebContent() { - if let htmlUrl = Bundle.main.url(forResource: "webview", withExtension: "html", - subdirectory: "Blockly") { - webView.load(URLRequest.init(url: htmlUrl)) - } else { - NSLog("Failed to load HTML. Could not find resource.") - } - } - - /// Handle window.alert() with a native dialog. - func webView(_ webView: WKWebView, - runJavaScriptAlertPanelWithMessage message: String, - initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping () -> Void) { - - let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert) - let title = NSLocalizedString("OK", comment: "OK Button") - let ok = UIAlertAction(title: title, style: .default) { (action: UIAlertAction) -> Void in - alert.dismiss(animated: true, completion: nil) - } - alert.addAction(ok) - present(alert, animated: true) - completionHandler() - } - - /// Handle window.confirm() with a native dialog. - func webView(_ webView: WKWebView, - runJavaScriptConfirmPanelWithMessage message: String, - initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping (Bool) -> Void) { - - let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert) - let closeAndHandle = { (okayed: Bool) in - alert.dismiss(animated: true, completion: nil) - completionHandler(okayed) - } - - let okTitle = NSLocalizedString("OK", comment: "OK button title") - let ok = UIAlertAction(title: okTitle, style: .default) { (action: UIAlertAction) -> Void in - closeAndHandle(true) - } - alert.addAction(ok) - - let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel button title") - let cancel = UIAlertAction(title: cancelTitle, style: .default) { - (action: UIAlertAction) -> Void in - closeAndHandle(false) - } - alert.addAction(cancel) - present(alert, animated: true) - } - - /// Handle window.prompt() with a native dialog. - func webView(_ webView: WKWebView, - runJavaScriptTextInputPanelWithPrompt prompt: String, - defaultText: String?, - initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping (String?) -> Void) { - - let alert = UIAlertController(title: prompt, message: nil, preferredStyle: .alert) - - alert.addTextField { (textField) in - textField.text = defaultText - } - - let okTitle = NSLocalizedString("OK", comment: "OK button title") - let okAction = UIAlertAction(title: okTitle, style: .default) { (_) in - let textInput = alert.textFields![0] as UITextField - completionHandler(textInput.text) - } - alert.addAction(okAction) - - let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel button title") - let cancelAction = UIAlertAction(title: cancelTitle, style: .cancel) { (_) in - completionHandler(nil) - } - alert.addAction(cancelAction) - - present(alert, animated: true) - } -} - +// ViewController.swift +// Blockly WebView UI controller. +// +// Created by Andrew Marshall on 8/7/18. +// Copyright © 2018 Google. All rights reserved. +// + +import UIKit +import WebKit + + +/// A basic ViewController for a WebView. +/// It handles the initial page load, and functions like window.prompt(). +class ViewController: UIViewController, WKUIDelegate { + /// The name used to reference this iOS object when executing callbacks from the JS code. + /// If this value is changed, it should also be changed in the `CODE_GENERATOR_BRIDGE_JS` file. + fileprivate static let HOST_HTML = "Blockly/webview.html" + + @IBOutlet weak var webView: WKWebView! + + /// Additional setup after loading the UI NIB. + override func viewDidLoad() { + super.viewDidLoad() + webView.uiDelegate = self + // Do any additional setup after loading the view, typically from a nib. + loadWebContent() + } + + /// Load the root HTML page into the webview. + func loadWebContent() { + if let htmlUrl = Bundle.main.url(forResource: "webview", withExtension: "html", + subdirectory: "Blockly") { + webView.load(URLRequest.init(url: htmlUrl)) + } else { + NSLog("Failed to load HTML. Could not find resource.") + } + } + + /// Handle window.alert() with a native dialog. + func webView(_ webView: WKWebView, + runJavaScriptAlertPanelWithMessage message: String, + initiatedByFrame frame: WKFrameInfo, + completionHandler: @escaping () -> Void) { + + let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert) + let title = NSLocalizedString("OK", comment: "OK Button") + let ok = UIAlertAction(title: title, style: .default) { (action: UIAlertAction) -> Void in + alert.dismiss(animated: true, completion: nil) + } + alert.addAction(ok) + present(alert, animated: true) + completionHandler() + } + + /// Handle window.confirm() with a native dialog. + func webView(_ webView: WKWebView, + runJavaScriptConfirmPanelWithMessage message: String, + initiatedByFrame frame: WKFrameInfo, + completionHandler: @escaping (Bool) -> Void) { + + let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert) + let closeAndHandle = { (okayed: Bool) in + alert.dismiss(animated: true, completion: nil) + completionHandler(okayed) + } + + let okTitle = NSLocalizedString("OK", comment: "OK button title") + let ok = UIAlertAction(title: okTitle, style: .default) { (action: UIAlertAction) -> Void in + closeAndHandle(true) + } + alert.addAction(ok) + + let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel button title") + let cancel = UIAlertAction(title: cancelTitle, style: .default) { + (action: UIAlertAction) -> Void in + closeAndHandle(false) + } + alert.addAction(cancel) + present(alert, animated: true) + } + + /// Handle window.prompt() with a native dialog. + func webView(_ webView: WKWebView, + runJavaScriptTextInputPanelWithPrompt prompt: String, + defaultText: String?, + initiatedByFrame frame: WKFrameInfo, + completionHandler: @escaping (String?) -> Void) { + + let alert = UIAlertController(title: prompt, message: nil, preferredStyle: .alert) + + alert.addTextField { (textField) in + textField.text = defaultText + } + + let okTitle = NSLocalizedString("OK", comment: "OK button title") + let okAction = UIAlertAction(title: okTitle, style: .default) { (_) in + let textInput = alert.textFields![0] as UITextField + completionHandler(textInput.text) + } + alert.addAction(okAction) + + let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel button title") + let cancelAction = UIAlertAction(title: cancelTitle, style: .cancel) { (_) in + completionHandler(nil) + } + alert.addAction(cancelAction) + + present(alert, animated: true) + } +} + diff --git a/demos/mobile/ios/cp_resources.sh b/demos/mobile/ios/cp_resources.sh index 050ee900cba..592af3b445a 100755 --- a/demos/mobile/ios/cp_resources.sh +++ b/demos/mobile/ios/cp_resources.sh @@ -1,21 +1,21 @@ -#!/bin/bash -set -eux - -BLOCKLY_ROOT=../../.. -IOS_RESOURCES=Resources/Non-Localized/Blockly - -MORE_FILES_TO_COPY=( - "blockly_compressed.js" - "blocks_compressed.js" - "media" - "msg/js" - ) - -mkdir -p $IOS_RESOURCES/media -mkdir -p $IOS_RESOURCES/msg/js -rsync -rp ../html/index.html $IOS_RESOURCES/webview.html -rsync -rp ../html/toolbox_standard.js $IOS_RESOURCES/toolbox_standard.js -for i in "${MORE_FILES_TO_COPY[@]}"; do # The quotes are necessary here - TARGET_DIR=$(dirname $IOS_RESOURCES/$i) - rsync -rp $BLOCKLY_ROOT/$i $TARGET_DIR -done +#!/bin/bash +set -eux + +BLOCKLY_ROOT=../../.. +IOS_RESOURCES=Resources/Non-Localized/Blockly + +MORE_FILES_TO_COPY=( + "blockly_compressed.js" + "blocks_compressed.js" + "media" + "msg/js" + ) + +mkdir -p $IOS_RESOURCES/media +mkdir -p $IOS_RESOURCES/msg/js +rsync -rp ../html/index.html $IOS_RESOURCES/webview.html +rsync -rp ../html/toolbox_standard.js $IOS_RESOURCES/toolbox_standard.js +for i in "${MORE_FILES_TO_COPY[@]}"; do # The quotes are necessary here + TARGET_DIR=$(dirname $IOS_RESOURCES/$i) + rsync -rp $BLOCKLY_ROOT/$i $TARGET_DIR +done diff --git a/demos/plane/README.txt b/demos/plane/README.txt index 944448fd6da..6a5aa2666cb 100644 --- a/demos/plane/README.txt +++ b/demos/plane/README.txt @@ -1,26 +1,26 @@ -This Blockly demo uses Closure Templates to create a multilingual application. -Any changes to the template.soy file require a recompile. Here is the command -to generate a quick English version for debugging: - -java -jar soy/SoyToJsSrcCompiler.jar --outputPathFormat generated/en.js --srcs template.soy - -To generate a full set of language translations, first extract all the strings -from template.soy using this command: - -java -jar soy/SoyMsgExtractor.jar --outputFile xlf/extracted_msgs.xlf template.soy - -This generates xlf/extracted_msgs.xlf, which may then be used by any -XLIFF-compatible translation console to generate a set of files with the -translated strings. These should be placed in the xlf directory. - -Finally, generate all the language versions with this command: - -java -jar soy/SoyToJsSrcCompiler.jar --locales ar,be-tarask,br,ca,da,de,el,en,es,fa,fr,he,hrx,hu,ia,is,it,ja,ko,ms,nb,nl,pl,pms,pt-br,ro,ru,sc,sv,th,tr,uk,vi,zh-hans,zh-hant --messageFilePathFormat xlf/translated_msgs_{LOCALE}.xlf --outputPathFormat "generated/{LOCALE}.js" template.soy - -This is the process that Google uses for maintaining Blockly Games in 50+ -languages. The XLIFF format is simple enough that it is trivial to write a -Python script to reformat it into some other format (such as JSON) for -compatibility with other translation consoles. - -For more information, see message translation for Closure Templates: -https://developers.google.com/closure/templates/docs/translation +This Blockly demo uses Closure Templates to create a multilingual application. +Any changes to the template.soy file require a recompile. Here is the command +to generate a quick English version for debugging: + +java -jar soy/SoyToJsSrcCompiler.jar --outputPathFormat generated/en.js --srcs template.soy + +To generate a full set of language translations, first extract all the strings +from template.soy using this command: + +java -jar soy/SoyMsgExtractor.jar --outputFile xlf/extracted_msgs.xlf template.soy + +This generates xlf/extracted_msgs.xlf, which may then be used by any +XLIFF-compatible translation console to generate a set of files with the +translated strings. These should be placed in the xlf directory. + +Finally, generate all the language versions with this command: + +java -jar soy/SoyToJsSrcCompiler.jar --locales ar,be-tarask,br,ca,da,de,el,en,es,fa,fr,he,hrx,hu,ia,is,it,ja,ko,ms,nb,nl,pl,pms,pt-br,ro,ru,sc,sv,th,tr,uk,vi,zh-hans,zh-hant --messageFilePathFormat xlf/translated_msgs_{LOCALE}.xlf --outputPathFormat "generated/{LOCALE}.js" template.soy + +This is the process that Google uses for maintaining Blockly Games in 50+ +languages. The XLIFF format is simple enough that it is trivial to write a +Python script to reformat it into some other format (such as JSON) for +compatibility with other translation consoles. + +For more information, see message translation for Closure Templates: +https://developers.google.com/closure/templates/docs/translation diff --git a/demos/plane/blocks.js b/demos/plane/blocks.js index c3c094a8731..327704d7228 100644 --- a/demos/plane/blocks.js +++ b/demos/plane/blocks.js @@ -1,95 +1,95 @@ -/** - * @license - * Copyright 2013 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Blocks for Blockly's Plane Seat Calculator application. - */ -'use strict'; - -Blockly.Blocks['plane_set_seats'] = { - // Block seat variable setter. - init: function() { - this.setHelpUrl(Blockly.Msg['VARIABLES_SET_HELPURL']); - this.setColour(330); - this.appendValueInput('VALUE') - .appendField(Plane.getMsg('Plane_setSeats')); - this.setTooltip(Blockly.Msg['VARIABLES_SET_TOOLTIP']); - this.setDeletable(false); - } -}; - -Blockly.JavaScript['plane_set_seats'] = function(block) { - // Generate JavaScript for seat variable setter. - var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', - Blockly.JavaScript.ORDER_ASSIGNMENT) || 'NaN'; - return argument0 + ';'; -}; - -Blockly.Blocks['plane_get_rows'] = { - // Block for row variable getter. - init: function() { - this.setHelpUrl(Blockly.Msg['VARIABLES_GET_HELPURL']); - this.setColour(330); - this.appendDummyInput() - .appendField(Plane.getMsg('Plane_getRows') - .replace('%1', Plane.rows1st), 'title'); - this.setOutput(true, 'Number'); - }, - customUpdate: function() { - this.setFieldValue( - Plane.getMsg('Plane_getRows') - .replace('%1', Plane.rows1st), 'title'); - } -}; - -Blockly.JavaScript['plane_get_rows'] = function(block) { - // Generate JavaScript for row variable getter. - return ['Plane.rows1st', Blockly.JavaScript.ORDER_MEMBER]; -}; - -Blockly.Blocks['plane_get_rows1st'] = { - // Block for first class row variable getter. - init: function() { - this.setHelpUrl(Blockly.Msg['VARIABLES_GET_HELPURL']); - this.setColour(330); - this.appendDummyInput() - .appendField(Plane.getMsg('Plane_getRows1') - .replace('%1', Plane.rows1st), 'title'); - this.setOutput(true, 'Number'); - }, - customUpdate: function() { - this.setFieldValue( - Plane.getMsg('Plane_getRows1') - .replace('%1', Plane.rows1st), 'title'); - } -}; - -Blockly.JavaScript['plane_get_rows1st'] = function(block) { - // Generate JavaScript for first class row variable getter. - return ['Plane.rows1st', Blockly.JavaScript.ORDER_MEMBER]; -}; - -Blockly.Blocks['plane_get_rows2nd'] = { - // Block for second class row variable getter. - init: function() { - this.setHelpUrl(Blockly.Msg['VARIABLES_GET_HELPURL']); - this.setColour(330); - this.appendDummyInput() - .appendField(Plane.getMsg('Plane_getRows2') - .replace('%1', Plane.rows2nd), 'title'); - this.setOutput(true, 'Number'); - }, - customUpdate: function() { - this.setFieldValue( - Plane.getMsg('Plane_getRows2') - .replace('%1', Plane.rows2nd), 'title'); - } -}; - -Blockly.JavaScript['plane_get_rows2nd'] = function(block) { - // Generate JavaScript for second class row variable getter. - return ['Plane.rows2nd', Blockly.JavaScript.ORDER_MEMBER]; -}; +/** + * @license + * Copyright 2013 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blocks for Blockly's Plane Seat Calculator application. + */ +'use strict'; + +Blockly.Blocks['plane_set_seats'] = { + // Block seat variable setter. + init: function() { + this.setHelpUrl(Blockly.Msg['VARIABLES_SET_HELPURL']); + this.setColour(330); + this.appendValueInput('VALUE') + .appendField(Plane.getMsg('Plane_setSeats')); + this.setTooltip(Blockly.Msg['VARIABLES_SET_TOOLTIP']); + this.setDeletable(false); + } +}; + +Blockly.JavaScript['plane_set_seats'] = function(block) { + // Generate JavaScript for seat variable setter. + var argument0 = Blockly.JavaScript.valueToCode(block, 'VALUE', + Blockly.JavaScript.ORDER_ASSIGNMENT) || 'NaN'; + return argument0 + ';'; +}; + +Blockly.Blocks['plane_get_rows'] = { + // Block for row variable getter. + init: function() { + this.setHelpUrl(Blockly.Msg['VARIABLES_GET_HELPURL']); + this.setColour(330); + this.appendDummyInput() + .appendField(Plane.getMsg('Plane_getRows') + .replace('%1', Plane.rows1st), 'title'); + this.setOutput(true, 'Number'); + }, + customUpdate: function() { + this.setFieldValue( + Plane.getMsg('Plane_getRows') + .replace('%1', Plane.rows1st), 'title'); + } +}; + +Blockly.JavaScript['plane_get_rows'] = function(block) { + // Generate JavaScript for row variable getter. + return ['Plane.rows1st', Blockly.JavaScript.ORDER_MEMBER]; +}; + +Blockly.Blocks['plane_get_rows1st'] = { + // Block for first class row variable getter. + init: function() { + this.setHelpUrl(Blockly.Msg['VARIABLES_GET_HELPURL']); + this.setColour(330); + this.appendDummyInput() + .appendField(Plane.getMsg('Plane_getRows1') + .replace('%1', Plane.rows1st), 'title'); + this.setOutput(true, 'Number'); + }, + customUpdate: function() { + this.setFieldValue( + Plane.getMsg('Plane_getRows1') + .replace('%1', Plane.rows1st), 'title'); + } +}; + +Blockly.JavaScript['plane_get_rows1st'] = function(block) { + // Generate JavaScript for first class row variable getter. + return ['Plane.rows1st', Blockly.JavaScript.ORDER_MEMBER]; +}; + +Blockly.Blocks['plane_get_rows2nd'] = { + // Block for second class row variable getter. + init: function() { + this.setHelpUrl(Blockly.Msg['VARIABLES_GET_HELPURL']); + this.setColour(330); + this.appendDummyInput() + .appendField(Plane.getMsg('Plane_getRows2') + .replace('%1', Plane.rows2nd), 'title'); + this.setOutput(true, 'Number'); + }, + customUpdate: function() { + this.setFieldValue( + Plane.getMsg('Plane_getRows2') + .replace('%1', Plane.rows2nd), 'title'); + } +}; + +Blockly.JavaScript['plane_get_rows2nd'] = function(block) { + // Generate JavaScript for second class row variable getter. + return ['Plane.rows2nd', Blockly.JavaScript.ORDER_MEMBER]; +}; diff --git a/demos/plane/generated/ar.js b/demos/plane/generated/ar.js index ac760fb11d8..a8db4112809 100644 --- a/demos/plane/generated/ar.js +++ b/demos/plane/generated/ar.js @@ -1,50 +1,50 @@ -// This file was automatically generated from template.soy. -// Please don't edit this file by hand. - -/** - * @fileoverview Templates in namespace planepage. - */ - -if (typeof planepage == 'undefined') { var planepage = {}; } - - -planepage.messages = function(opt_data, opt_ignored, opt_ijData) { - return '
\u0627\u0644\u0635\u0641\u0648\u0641: %1\u0627\u0644\u0635\u0641\u0648\u0641 (%1)\u0635\u0641\u0648\u0641 \u0627\u0644\u0637\u0628\u0642\u0629 \u0627\u0644\u0623\u0648\u0644\u0649: %1\u0635\u0641\u0648\u0641 \u0627\u0644\u0637\u0628\u0642\u0629 \u0627\u0644\u0623\u0648\u0644\u0649 (%1)\u0635\u0641\u0648\u0641 \u0627\u0644\u0641\u0626\u0629 \u0627\u0644\u062B\u0627\u0646\u064A\u0629: %1\u0635\u0641\u0648\u0641 \u0627\u0644\u0641\u0626\u0629 \u0627\u0644\u062B\u0627\u0646\u064A\u0629: (%1)\u0627\u0644\u0645\u0642\u0627\u0639\u062F: %1\u061F\u0627\u0644\u0645\u0642\u0627\u0639\u062F =
'; -}; -if (goog.DEBUG) { - planepage.messages.soyTemplateName = 'planepage.messages'; -} - - -planepage.start = function(opt_data, opt_ignored, opt_ijData) { - var output = planepage.messages(null, null, opt_ijData) + '

Blockly‏ > Demos‏ > \u0622\u0644\u0629 \u062D\u0627\u0633\u0628\u0629 \u0644\u0645\u0642\u0639\u062F \u0627\u0644\u0637\u0627\u0626\u0631\u0629   '; - var iLimit47 = opt_ijData.maxLevel + 1; - for (var i47 = 1; i47 < iLimit47; i47++) { - output += ' ' + ((i47 == opt_ijData.level) ? '' + soy.$$escapeHtml(i47) + '' : (i47 < opt_ijData.level) ? '' : '' + soy.$$escapeHtml(i47) + ''); - } - output += '

- - - - - - + + + + + + Blockly Demo: + + + + + + + + diff --git a/demos/plane/plane.js b/demos/plane/plane.js index a62d061b207..1054ac63ee2 100644 --- a/demos/plane/plane.js +++ b/demos/plane/plane.js @@ -1,429 +1,429 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview JavaScript for Blockly's Plane Seat Calculator demo. - */ -'use strict'; - -/** - * Create a namespace for the application. - */ -var Plane = {}; - -/** - * Lookup for names of supported languages. Keys should be in ISO 639 format. - */ -Plane.LANGUAGE_NAME = { - 'ar': 'العربية', - 'be-tarask': 'Taraškievica', - 'br': 'Brezhoneg', - 'ca': 'Català', - 'da': 'Dansk', - 'de': 'Deutsch', - 'el': 'Ελληνικά', - 'en': 'English', - 'es': 'Español', - 'fa': 'فارسی', - 'fr': 'Français', - 'he': 'עברית', - 'hrx': 'Hunsrik', - 'hu': 'Magyar', - 'ia': 'Interlingua', - 'is': 'Íslenska', - 'it': 'Italiano', - 'ja': '日本語', - 'ko': '한국어', - 'ms': 'Bahasa Melayu', - 'nb': 'Norsk Bokmål', - 'nl': 'Nederlands, Vlaams', - 'pl': 'Polski', - 'pms': 'Piemontèis', - 'pt-br': 'Português Brasileiro', - 'ro': 'Română', - 'ru': 'Русский', - 'sc': 'Sardu', - 'sv': 'Svenska', - 'th': 'ภาษาไทย', - 'tr': 'Türkçe', - 'uk': 'Українська', - 'vi': 'Tiếng Việt', - 'zh-hans': '简体中文', - 'zh-hant': '正體中文' -}; - -/** - * List of RTL languages. - */ -Plane.LANGUAGE_RTL = ['ar', 'fa', 'he']; - -/** - * Main Blockly workspace. - * @type {Blockly.WorkspaceSvg} - */ -Plane.workspace = null; - -/** - * Extracts a parameter from the URL. - * If the parameter is absent default_value is returned. - * @param {string} name The name of the parameter. - * @param {string} defaultValue Value to return if paramater not found. - * @return {string} The parameter value or the default value if not found. - */ -Plane.getStringParamFromUrl = function(name, defaultValue) { - var val = location.search.match(new RegExp('[?&]' + name + '=([^&]+)')); - return val ? decodeURIComponent(val[1].replace(/\+/g, '%20')) : defaultValue; -}; - -/** - * Extracts a numeric parameter from the URL. - * If the parameter is absent or less than min_value, min_value is - * returned. If it is greater than max_value, max_value is returned. - * @param {string} name The name of the parameter. - * @param {number} minValue The minimum legal value. - * @param {number} maxValue The maximum legal value. - * @return {number} A number in the range [min_value, max_value]. - */ -Plane.getNumberParamFromUrl = function(name, minValue, maxValue) { - var val = Number(Plane.getStringParamFromUrl(name, 'NaN')); - return isNaN(val) ? minValue : Math.min(Math.max(minValue, val), maxValue); -}; - -/** - * Get the language of this user from the URL. - * @return {string} User's language. - */ -Plane.getLang = function() { - var lang = Plane.getStringParamFromUrl('lang', ''); - if (Plane.LANGUAGE_NAME[lang] === undefined) { - // Default to English. - lang = 'en'; - } - return lang; -}; - -/** - * Is the current language (Plane.LANG) an RTL language? - * @return {boolean} True if RTL, false if LTR. - */ -Plane.isRtl = function() { - return Plane.LANGUAGE_RTL.indexOf(Plane.LANG) !== -1; -}; - -/** - * Load blocks saved in session/local storage. - * @param {string} defaultXml Text representation of default blocks. - */ -Plane.loadBlocks = function(defaultXml) { - try { - var loadOnce = window.sessionStorage.loadOnceBlocks; - } catch(e) { - // Firefox sometimes throws a SecurityError when accessing sessionStorage. - // Restarting Firefox fixes this, so it looks like a bug. - var loadOnce = null; - } - if (loadOnce) { - // Language switching stores the blocks during the reload. - delete window.sessionStorage.loadOnceBlocks; - var xml = Blockly.Xml.textToDom(loadOnce); - Blockly.Xml.domToWorkspace(xml, Plane.workspace); - } else if (defaultXml) { - // Load the editor with default starting blocks. - var xml = Blockly.Xml.textToDom(defaultXml); - Blockly.Xml.domToWorkspace(xml, Plane.workspace); - } - Plane.workspace.clearUndo(); -}; - -/** - * Save the blocks and reload with a different language. - */ -Plane.changeLanguage = function() { - // Store the blocks for the duration of the reload. - // This should be skipped for the index page, which has no blocks and does - // not load Blockly. - // MSIE 11 does not support sessionStorage on file:// URLs. - if (typeof Blockly !== 'undefined' && window.sessionStorage) { - var xml = Blockly.Xml.workspaceToDom(Plane.workspace); - var text = Blockly.Xml.domToText(xml); - window.sessionStorage.loadOnceBlocks = text; - } - - var languageMenu = document.getElementById('languageMenu'); - var newLang = encodeURIComponent( - languageMenu.options[languageMenu.selectedIndex].value); - var search = window.location.search; - if (search.length <= 1) { - search = '?lang=' + newLang; - } else if (search.match(/[?&]lang=[^&]*/)) { - search = search.replace(/([?&]lang=)[^&]*/, '$1' + newLang); - } else { - search = search.replace(/\?/, '?lang=' + newLang + '&'); - } - - window.location = window.location.protocol + '//' + - window.location.host + window.location.pathname + search; -}; - -/** - * Gets the message with the given key from the document. - * @param {string} key The key of the document element. - * @return {string} The textContent of the specified element, - * or an error message if the element was not found. - */ -Plane.getMsg = function(key) { - var element = document.getElementById(key); - if (element) { - var text = element.textContent; - // Convert newline sequences. - text = text.replace(/\\n/g, '\n'); - return text; - } else { - return '[Unknown message: ' + key + ']'; - } -}; - -/** - * User's language (e.g. "en"). - * @type {string} - */ -Plane.LANG = Plane.getLang(); - -Plane.MAX_LEVEL = 3; -Plane.LEVEL = Plane.getNumberParamFromUrl('level', 1, Plane.MAX_LEVEL); - -Plane.rows1st = 0; -Plane.rows2nd = 0; - -/** - * Redraw the rows and update blocks when the slider has moved. - * @param {number} value New slider position. - */ -Plane.sliderChange = function(value) { - var newRows = Math.round(value * 410 / 20); - Plane.redraw(newRows); - - function updateBlocks(blocks) { - for (var i = 0, block; block = blocks[i]; i++) { - block.customUpdate && block.customUpdate(); - } - } - updateBlocks(Plane.workspace.getAllBlocks(false), true); - updateBlocks(Plane.workspace.flyout_.workspace_.getAllBlocks(false)); -}; - -/** - * Change the text of a label. - * @param {string} id ID of element to change. - * @param {string} text New text. - */ -Plane.setText = function(id, text) { - var el = document.getElementById(id); - while (el.firstChild) { - el.removeChild(el.firstChild); - } - el.appendChild(document.createTextNode(text)); -}; - -/** - * Display a checkmark or cross next to the answer. - * @param {?boolean} ok True for checkmark, false for cross, null for nothing. - */ -Plane.setCorrect = function(ok) { - var yes = document.getElementById('seatYes'); - var no = document.getElementById('seatNo'); - yes.style.display = 'none'; - no.style.display = 'none'; - if (ok === true) { - yes.style.display = 'block'; - } else if (ok === false) { - no.style.display = 'block'; - } -}; - -/** - * Initialize Blockly and the SVG plane. - */ -Plane.init = function() { - Plane.initLanguage(); - - // Fixes viewport for small screens. - var viewport = document.querySelector('meta[name="viewport"]'); - if (viewport && screen.availWidth < 725) { - viewport.setAttribute('content', - 'width=725, initial-scale=.35, user-scalable=no'); - } - - Plane.workspace = Blockly.inject('blockly', - {media: '../../media/', - rtl: Plane.isRtl(), - toolbox: document.getElementById('toolbox')}); - - var defaultXml = - '' + - ' ' + - ' ' + - ''; - Plane.loadBlocks(defaultXml); - - Plane.workspace.addChangeListener(Plane.recalculate); - Plane.workspace.addChangeListener(Blockly.Events.disableOrphans); - - // Initialize the slider. - var svg = document.getElementById('plane'); - Plane.rowSlider = new Slider(60, 330, 425, svg, Plane.sliderChange); - Plane.rowSlider.setValue(0.225); - - // Draw five 1st class rows. - Plane.redraw(5); -}; - -/** - * Initialize the page language. - */ -Plane.initLanguage = function() { - // Set the page title with the content of the H1 title. - document.title += ' ' + document.getElementById('title').textContent; - - // Set the HTML's language and direction. - // document.dir fails in Mozilla, use document.body.parentNode.dir instead. - // https://bugzilla.mozilla.org/show_bug.cgi?id=151407 - var rtl = Plane.isRtl(); - document.head.parentElement.setAttribute('dir', rtl ? 'rtl' : 'ltr'); - document.head.parentElement.setAttribute('lang', Plane.LANG); - - // Sort languages alphabetically. - var languages = []; - for (var lang in Plane.LANGUAGE_NAME) { - languages.push([Plane.LANGUAGE_NAME[lang], lang]); - } - var comp = function(a, b) { - // Sort based on first argument ('English', 'Русский', '简体字', etc). - if (a[0] > b[0]) return 1; - if (a[0] < b[0]) return -1; - return 0; - }; - languages.sort(comp); - // Populate the language selection menu. - var languageMenu = document.getElementById('languageMenu'); - languageMenu.options.length = 0; - for (var i = 0; i < languages.length; i++) { - var tuple = languages[i]; - var lang = tuple[tuple.length - 1]; - var option = new Option(tuple[0], lang); - if (lang === Plane.LANG) { - option.selected = true; - } - languageMenu.options.add(option); - } - languageMenu.addEventListener('change', Plane.changeLanguage, true); -}; - -/** - * Use the blocks to calculate the number of seats. - * Display the calculated number. - */ -Plane.recalculate = function() { - // Find the 'set' block and use it as the formula root. - var rootBlock = null; - var blocks = Plane.workspace.getTopBlocks(false); - for (var i = 0, block; block = blocks[i]; i++) { - if (block.type === 'plane_set_seats') { - rootBlock = block; - } - } - var seats = NaN; - Blockly.JavaScript.init(Plane.workspace); - var code = Blockly.JavaScript.blockToCode(rootBlock); - try { - seats = eval(code); - } catch (e) { - // Allow seats to remain NaN. - } - Plane.setText('seatText', - Plane.getMsg('Plane_seats').replace( - '%1', isNaN(seats) ? '?' : seats)); - Plane.setCorrect(isNaN(seats) ? null : (Plane.answer() === seats)); -}; - -/** - * Calculate the correct answer. - * @return {number} Number of seats. - */ -Plane.answer = function() { - if (Plane.LEVEL === 1) { - return Plane.rows1st * 4; - } else if (Plane.LEVEL === 2) { - return 2 + (Plane.rows1st * 4); - } else if (Plane.LEVEL === 3) { - return 2 + (Plane.rows1st * 4) + (Plane.rows2nd * 5); - } - throw 'Unknown level.'; -}; - -/** - * Redraw the SVG to show a new number of rows. - * @param {number} newRows - */ -Plane.redraw = function(newRows) { - var rows1st = Plane.rows1st; - var rows2nd = Plane.rows2nd; - var svg = document.getElementById('plane'); - if (newRows !== rows1st) { - while (newRows < rows1st) { - var row = document.getElementById('row1st' + rows1st); - row.parentNode.removeChild(row); - rows1st--; - } - while (newRows > rows1st) { - rows1st++; - var row = document.createElementNS('http://www.w3.org/2000/svg', 'use'); - row.id = 'row1st' + rows1st; - // Row of 4 seats. - row.setAttribute('x', (rows1st - 1) * 20); - row.setAttributeNS('http://www.w3.org/1999/xlink', - 'xlink:href', '#row1st'); - svg.appendChild(row); - } - - if (Plane.LEVEL === 3) { - newRows = Math.floor((21 - newRows) * 1.11); - while (newRows < rows2nd) { - var row = document.getElementById('row2nd' + rows2nd); - row.parentNode.removeChild(row); - rows2nd--; - } - while (newRows > rows2nd) { - rows2nd++; - var row = document.createElementNS('http://www.w3.org/2000/svg', 'use'); - row.id = 'row2nd' + rows2nd; - row.setAttribute('x', 400 - (rows2nd - 1) * 18); - row.setAttributeNS('http://www.w3.org/1999/xlink', - 'xlink:href', '#row2nd'); - svg.appendChild(row); - } - } - - if (Plane.LEVEL < 3) { - Plane.setText('row1stText', - Plane.getMsg('Plane_rows').replace('%1', rows1st)); - } else { - Plane.setText('row1stText', - Plane.getMsg('Plane_rows1').replace('%1', rows1st)); - Plane.setText('row2ndText', - Plane.getMsg('Plane_rows2').replace('%1', rows2nd)); - } - - Plane.rows1st = rows1st; - Plane.rows2nd = rows2nd; - Plane.recalculate(); - } -}; - -window.addEventListener('load', Plane.init); - -// Load the user's language pack. -document.write('\n'); +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview JavaScript for Blockly's Plane Seat Calculator demo. + */ +'use strict'; + +/** + * Create a namespace for the application. + */ +var Plane = {}; + +/** + * Lookup for names of supported languages. Keys should be in ISO 639 format. + */ +Plane.LANGUAGE_NAME = { + 'ar': 'العربية', + 'be-tarask': 'Taraškievica', + 'br': 'Brezhoneg', + 'ca': 'Català', + 'da': 'Dansk', + 'de': 'Deutsch', + 'el': 'Ελληνικά', + 'en': 'English', + 'es': 'Español', + 'fa': 'فارسی', + 'fr': 'Français', + 'he': 'עברית', + 'hrx': 'Hunsrik', + 'hu': 'Magyar', + 'ia': 'Interlingua', + 'is': 'Íslenska', + 'it': 'Italiano', + 'ja': '日本語', + 'ko': '한국어', + 'ms': 'Bahasa Melayu', + 'nb': 'Norsk Bokmål', + 'nl': 'Nederlands, Vlaams', + 'pl': 'Polski', + 'pms': 'Piemontèis', + 'pt-br': 'Português Brasileiro', + 'ro': 'Română', + 'ru': 'Русский', + 'sc': 'Sardu', + 'sv': 'Svenska', + 'th': 'ภาษาไทย', + 'tr': 'Türkçe', + 'uk': 'Українська', + 'vi': 'Tiếng Việt', + 'zh-hans': '简体中文', + 'zh-hant': '正體中文' +}; + +/** + * List of RTL languages. + */ +Plane.LANGUAGE_RTL = ['ar', 'fa', 'he']; + +/** + * Main Blockly workspace. + * @type {Blockly.WorkspaceSvg} + */ +Plane.workspace = null; + +/** + * Extracts a parameter from the URL. + * If the parameter is absent default_value is returned. + * @param {string} name The name of the parameter. + * @param {string} defaultValue Value to return if paramater not found. + * @return {string} The parameter value or the default value if not found. + */ +Plane.getStringParamFromUrl = function(name, defaultValue) { + var val = location.search.match(new RegExp('[?&]' + name + '=([^&]+)')); + return val ? decodeURIComponent(val[1].replace(/\+/g, '%20')) : defaultValue; +}; + +/** + * Extracts a numeric parameter from the URL. + * If the parameter is absent or less than min_value, min_value is + * returned. If it is greater than max_value, max_value is returned. + * @param {string} name The name of the parameter. + * @param {number} minValue The minimum legal value. + * @param {number} maxValue The maximum legal value. + * @return {number} A number in the range [min_value, max_value]. + */ +Plane.getNumberParamFromUrl = function(name, minValue, maxValue) { + var val = Number(Plane.getStringParamFromUrl(name, 'NaN')); + return isNaN(val) ? minValue : Math.min(Math.max(minValue, val), maxValue); +}; + +/** + * Get the language of this user from the URL. + * @return {string} User's language. + */ +Plane.getLang = function() { + var lang = Plane.getStringParamFromUrl('lang', ''); + if (Plane.LANGUAGE_NAME[lang] === undefined) { + // Default to English. + lang = 'en'; + } + return lang; +}; + +/** + * Is the current language (Plane.LANG) an RTL language? + * @return {boolean} True if RTL, false if LTR. + */ +Plane.isRtl = function() { + return Plane.LANGUAGE_RTL.indexOf(Plane.LANG) !== -1; +}; + +/** + * Load blocks saved in session/local storage. + * @param {string} defaultXml Text representation of default blocks. + */ +Plane.loadBlocks = function(defaultXml) { + try { + var loadOnce = window.sessionStorage.loadOnceBlocks; + } catch(e) { + // Firefox sometimes throws a SecurityError when accessing sessionStorage. + // Restarting Firefox fixes this, so it looks like a bug. + var loadOnce = null; + } + if (loadOnce) { + // Language switching stores the blocks during the reload. + delete window.sessionStorage.loadOnceBlocks; + var xml = Blockly.Xml.textToDom(loadOnce); + Blockly.Xml.domToWorkspace(xml, Plane.workspace); + } else if (defaultXml) { + // Load the editor with default starting blocks. + var xml = Blockly.Xml.textToDom(defaultXml); + Blockly.Xml.domToWorkspace(xml, Plane.workspace); + } + Plane.workspace.clearUndo(); +}; + +/** + * Save the blocks and reload with a different language. + */ +Plane.changeLanguage = function() { + // Store the blocks for the duration of the reload. + // This should be skipped for the index page, which has no blocks and does + // not load Blockly. + // MSIE 11 does not support sessionStorage on file:// URLs. + if (typeof Blockly !== 'undefined' && window.sessionStorage) { + var xml = Blockly.Xml.workspaceToDom(Plane.workspace); + var text = Blockly.Xml.domToText(xml); + window.sessionStorage.loadOnceBlocks = text; + } + + var languageMenu = document.getElementById('languageMenu'); + var newLang = encodeURIComponent( + languageMenu.options[languageMenu.selectedIndex].value); + var search = window.location.search; + if (search.length <= 1) { + search = '?lang=' + newLang; + } else if (search.match(/[?&]lang=[^&]*/)) { + search = search.replace(/([?&]lang=)[^&]*/, '$1' + newLang); + } else { + search = search.replace(/\?/, '?lang=' + newLang + '&'); + } + + window.location = window.location.protocol + '//' + + window.location.host + window.location.pathname + search; +}; + +/** + * Gets the message with the given key from the document. + * @param {string} key The key of the document element. + * @return {string} The textContent of the specified element, + * or an error message if the element was not found. + */ +Plane.getMsg = function(key) { + var element = document.getElementById(key); + if (element) { + var text = element.textContent; + // Convert newline sequences. + text = text.replace(/\\n/g, '\n'); + return text; + } else { + return '[Unknown message: ' + key + ']'; + } +}; + +/** + * User's language (e.g. "en"). + * @type {string} + */ +Plane.LANG = Plane.getLang(); + +Plane.MAX_LEVEL = 3; +Plane.LEVEL = Plane.getNumberParamFromUrl('level', 1, Plane.MAX_LEVEL); + +Plane.rows1st = 0; +Plane.rows2nd = 0; + +/** + * Redraw the rows and update blocks when the slider has moved. + * @param {number} value New slider position. + */ +Plane.sliderChange = function(value) { + var newRows = Math.round(value * 410 / 20); + Plane.redraw(newRows); + + function updateBlocks(blocks) { + for (var i = 0, block; block = blocks[i]; i++) { + block.customUpdate && block.customUpdate(); + } + } + updateBlocks(Plane.workspace.getAllBlocks(false), true); + updateBlocks(Plane.workspace.flyout_.workspace_.getAllBlocks(false)); +}; + +/** + * Change the text of a label. + * @param {string} id ID of element to change. + * @param {string} text New text. + */ +Plane.setText = function(id, text) { + var el = document.getElementById(id); + while (el.firstChild) { + el.removeChild(el.firstChild); + } + el.appendChild(document.createTextNode(text)); +}; + +/** + * Display a checkmark or cross next to the answer. + * @param {?boolean} ok True for checkmark, false for cross, null for nothing. + */ +Plane.setCorrect = function(ok) { + var yes = document.getElementById('seatYes'); + var no = document.getElementById('seatNo'); + yes.style.display = 'none'; + no.style.display = 'none'; + if (ok === true) { + yes.style.display = 'block'; + } else if (ok === false) { + no.style.display = 'block'; + } +}; + +/** + * Initialize Blockly and the SVG plane. + */ +Plane.init = function() { + Plane.initLanguage(); + + // Fixes viewport for small screens. + var viewport = document.querySelector('meta[name="viewport"]'); + if (viewport && screen.availWidth < 725) { + viewport.setAttribute('content', + 'width=725, initial-scale=.35, user-scalable=no'); + } + + Plane.workspace = Blockly.inject('blockly', + {media: '../../media/', + rtl: Plane.isRtl(), + toolbox: document.getElementById('toolbox')}); + + var defaultXml = + '' + + ' ' + + ' ' + + ''; + Plane.loadBlocks(defaultXml); + + Plane.workspace.addChangeListener(Plane.recalculate); + Plane.workspace.addChangeListener(Blockly.Events.disableOrphans); + + // Initialize the slider. + var svg = document.getElementById('plane'); + Plane.rowSlider = new Slider(60, 330, 425, svg, Plane.sliderChange); + Plane.rowSlider.setValue(0.225); + + // Draw five 1st class rows. + Plane.redraw(5); +}; + +/** + * Initialize the page language. + */ +Plane.initLanguage = function() { + // Set the page title with the content of the H1 title. + document.title += ' ' + document.getElementById('title').textContent; + + // Set the HTML's language and direction. + // document.dir fails in Mozilla, use document.body.parentNode.dir instead. + // https://bugzilla.mozilla.org/show_bug.cgi?id=151407 + var rtl = Plane.isRtl(); + document.head.parentElement.setAttribute('dir', rtl ? 'rtl' : 'ltr'); + document.head.parentElement.setAttribute('lang', Plane.LANG); + + // Sort languages alphabetically. + var languages = []; + for (var lang in Plane.LANGUAGE_NAME) { + languages.push([Plane.LANGUAGE_NAME[lang], lang]); + } + var comp = function(a, b) { + // Sort based on first argument ('English', 'Русский', '简体字', etc). + if (a[0] > b[0]) return 1; + if (a[0] < b[0]) return -1; + return 0; + }; + languages.sort(comp); + // Populate the language selection menu. + var languageMenu = document.getElementById('languageMenu'); + languageMenu.options.length = 0; + for (var i = 0; i < languages.length; i++) { + var tuple = languages[i]; + var lang = tuple[tuple.length - 1]; + var option = new Option(tuple[0], lang); + if (lang === Plane.LANG) { + option.selected = true; + } + languageMenu.options.add(option); + } + languageMenu.addEventListener('change', Plane.changeLanguage, true); +}; + +/** + * Use the blocks to calculate the number of seats. + * Display the calculated number. + */ +Plane.recalculate = function() { + // Find the 'set' block and use it as the formula root. + var rootBlock = null; + var blocks = Plane.workspace.getTopBlocks(false); + for (var i = 0, block; block = blocks[i]; i++) { + if (block.type === 'plane_set_seats') { + rootBlock = block; + } + } + var seats = NaN; + Blockly.JavaScript.init(Plane.workspace); + var code = Blockly.JavaScript.blockToCode(rootBlock); + try { + seats = eval(code); + } catch (e) { + // Allow seats to remain NaN. + } + Plane.setText('seatText', + Plane.getMsg('Plane_seats').replace( + '%1', isNaN(seats) ? '?' : seats)); + Plane.setCorrect(isNaN(seats) ? null : (Plane.answer() === seats)); +}; + +/** + * Calculate the correct answer. + * @return {number} Number of seats. + */ +Plane.answer = function() { + if (Plane.LEVEL === 1) { + return Plane.rows1st * 4; + } else if (Plane.LEVEL === 2) { + return 2 + (Plane.rows1st * 4); + } else if (Plane.LEVEL === 3) { + return 2 + (Plane.rows1st * 4) + (Plane.rows2nd * 5); + } + throw 'Unknown level.'; +}; + +/** + * Redraw the SVG to show a new number of rows. + * @param {number} newRows + */ +Plane.redraw = function(newRows) { + var rows1st = Plane.rows1st; + var rows2nd = Plane.rows2nd; + var svg = document.getElementById('plane'); + if (newRows !== rows1st) { + while (newRows < rows1st) { + var row = document.getElementById('row1st' + rows1st); + row.parentNode.removeChild(row); + rows1st--; + } + while (newRows > rows1st) { + rows1st++; + var row = document.createElementNS('http://www.w3.org/2000/svg', 'use'); + row.id = 'row1st' + rows1st; + // Row of 4 seats. + row.setAttribute('x', (rows1st - 1) * 20); + row.setAttributeNS('http://www.w3.org/1999/xlink', + 'xlink:href', '#row1st'); + svg.appendChild(row); + } + + if (Plane.LEVEL === 3) { + newRows = Math.floor((21 - newRows) * 1.11); + while (newRows < rows2nd) { + var row = document.getElementById('row2nd' + rows2nd); + row.parentNode.removeChild(row); + rows2nd--; + } + while (newRows > rows2nd) { + rows2nd++; + var row = document.createElementNS('http://www.w3.org/2000/svg', 'use'); + row.id = 'row2nd' + rows2nd; + row.setAttribute('x', 400 - (rows2nd - 1) * 18); + row.setAttributeNS('http://www.w3.org/1999/xlink', + 'xlink:href', '#row2nd'); + svg.appendChild(row); + } + } + + if (Plane.LEVEL < 3) { + Plane.setText('row1stText', + Plane.getMsg('Plane_rows').replace('%1', rows1st)); + } else { + Plane.setText('row1stText', + Plane.getMsg('Plane_rows1').replace('%1', rows1st)); + Plane.setText('row2ndText', + Plane.getMsg('Plane_rows2').replace('%1', rows2nd)); + } + + Plane.rows1st = rows1st; + Plane.rows2nd = rows2nd; + Plane.recalculate(); + } +}; + +window.addEventListener('load', Plane.init); + +// Load the user's language pack. +document.write('\n'); diff --git a/demos/plane/slider.js b/demos/plane/slider.js index 8c0a1e8fc9c..10506c59297 100644 --- a/demos/plane/slider.js +++ b/demos/plane/slider.js @@ -1,273 +1,273 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview A slider control in SVG. - */ -'use strict'; - - -/** - * Object representing a horizontal slider widget. - * @param {number} x The horizontal offset of the slider. - * @param {number} y The vertical offset of the slider. - * @param {number} width The total width of the slider. - * @param {!Element} svgParent The SVG element to append the slider to. - * @param {Function=} opt_changeFunc Optional callback function that will be - * called when the slider is moved. The current value is passed. - * @constructor - */ -var Slider = function(x, y, width, svgParent, opt_changeFunc) { - this.KNOB_Y_ = y - 12; - this.KNOB_MIN_X_ = x + 8; - this.KNOB_MAX_X_ = x + width - 8; - this.TARGET_OVERHANG_ = 20; - this.value_ = 0.5; - this.changeFunc_ = opt_changeFunc; - this.animationTasks_ = []; - - // Draw the slider. - /* - - - - - */ - var track = document.createElementNS(Slider.SVG_NS_, 'line'); - track.setAttribute('class', 'sliderTrack'); - track.setAttribute('x1', x); - track.setAttribute('y1', y); - track.setAttribute('x2', x + width); - track.setAttribute('y2', y); - svgParent.appendChild(track); - this.track_ = track; - var rect = document.createElementNS(Slider.SVG_NS_, 'rect'); - rect.setAttribute('style', 'opacity: 0'); - rect.setAttribute('x', x - this.TARGET_OVERHANG_); - rect.setAttribute('y', y - this.TARGET_OVERHANG_); - rect.setAttribute('width', width + 2 * this.TARGET_OVERHANG_); - rect.setAttribute('height', 2 * this.TARGET_OVERHANG_); - rect.setAttribute('rx', this.TARGET_OVERHANG_); - rect.setAttribute('ry', this.TARGET_OVERHANG_); - svgParent.appendChild(rect); - this.trackTarget_ = rect; - var knob = document.createElementNS(Slider.SVG_NS_, 'path'); - knob.setAttribute('class', 'sliderKnob'); - knob.setAttribute('d', 'm 0,0 l -8,8 v 12 h 16 v -12 z'); - svgParent.appendChild(knob); - this.knob_ = knob; - var circle = document.createElementNS(Slider.SVG_NS_, 'circle'); - circle.setAttribute('style', 'opacity: 0'); - circle.setAttribute('r', this.TARGET_OVERHANG_); - circle.setAttribute('cy', y); - svgParent.appendChild(circle); - this.knobTarget_ = circle; - this.setValue(0.5); - - // Find the root SVG object. - while (svgParent && svgParent.nodeName.toLowerCase() !== 'svg') { - svgParent = svgParent.parentNode; - } - this.SVG_ = svgParent; - - // Bind the events to this slider. - Slider.bindEvent_(this.knobTarget_, 'mousedown', this, this.knobMouseDown_); - Slider.bindEvent_(this.knobTarget_, 'touchstart', this, this.knobMouseDown_); - Slider.bindEvent_(this.trackTarget_, 'mousedown', this, this.rectMouseDown_); - Slider.bindEvent_(this.SVG_, 'mouseup', null, Slider.knobMouseUp_); - Slider.bindEvent_(this.SVG_, 'touchend', null, Slider.knobMouseUp_); - Slider.bindEvent_(this.SVG_, 'mousemove', null, Slider.knobMouseMove_); - Slider.bindEvent_(this.SVG_, 'touchmove', null, Slider.knobMouseMove_); - Slider.bindEvent_(document, 'mouseover', null, Slider.mouseOver_); -}; - - -Slider.SVG_NS_ = 'http://www.w3.org/2000/svg'; - -Slider.activeSlider_ = null; -Slider.startMouseX_ = 0; -Slider.startKnobX_ = 0; - -/** - * Start a drag when clicking down on the knob. - * @param {!Event} e Mouse-down event. - * @private - */ -Slider.prototype.knobMouseDown_ = function(e) { - if (e.type === 'touchstart') { - if (e.changedTouches.length !== 1) { - return; - } - Slider.touchToMouse_(e) - } - Slider.activeSlider_ = this; - Slider.startMouseX_ = this.mouseToSvg_(e).x; - Slider.startKnobX_ = 0; - var transform = this.knob_.getAttribute('transform'); - if (transform) { - var r = transform.match(/translate\(\s*([-\d.]+)/); - if (r) { - Slider.startKnobX_ = Number(r[1]); - } - } - // Stop browser from attempting to drag the knob or - // from scrolling/zooming the page. - e.preventDefault(); -}; - -/** - * Stop a drag when clicking up anywhere. - * @param {Event} e Mouse-up event. - * @private - */ -Slider.knobMouseUp_ = function(e) { - Slider.activeSlider_ = null; -}; - -/** - * Stop a drag when the mouse enters a node not part of the SVG. - * @param {Event} e Mouse-up event. - * @private - */ -Slider.mouseOver_ = function(e) { - if (!Slider.activeSlider_) { - return; - } - var node = e.target; - // Find the root SVG object. - do { - if (node === Slider.activeSlider_.SVG_) { - return; - } - } while (node = node.parentNode); - Slider.knobMouseUp_(e); -}; - -/** - * Drag the knob to follow the mouse. - * @param {!Event} e Mouse-move event. - * @private - */ -Slider.knobMouseMove_ = function(e) { - var thisSlider = Slider.activeSlider_; - if (!thisSlider) { - return; - } - if (e.type === 'touchmove') { - if (e.changedTouches.length !== 1) { - return; - } - Slider.touchToMouse_(e) - } - var x = thisSlider.mouseToSvg_(e).x - Slider.startMouseX_ + - Slider.startKnobX_; - thisSlider.setValue((x - thisSlider.KNOB_MIN_X_) / - (thisSlider.KNOB_MAX_X_ - thisSlider.KNOB_MIN_X_)); -}; - -/** - * Jump to a new value when the track is clicked. - * @param {!Event} e Mouse-down event. - * @private - */ -Slider.prototype.rectMouseDown_ = function(e) { - if (e.type === 'touchstart') { - if (e.changedTouches.length !== 1) { - return; - } - Slider.touchToMouse_(e) - } - var x = this.mouseToSvg_(e).x; - this.animateValue((x - this.KNOB_MIN_X_) / - (this.KNOB_MAX_X_ - this.KNOB_MIN_X_)); -}; - -/** - * Returns the slider's value (0.0 - 1.0). - * @return {number} Current value. - */ -Slider.prototype.getValue = function() { - return this.value_; -}; - -/** - * Animates the slider's value (0.0 - 1.0). - * @param {number} value New value. - */ -Slider.prototype.animateValue = function(value) { - // Clear any ongoing animations. - while (this.animationTasks_.length) { - clearTimeout(this.animationTasks_.pop()); - } - var duration = 200; // Milliseconds to animate for. - var steps = 10; // Number of steps to animate. - var oldValue = this.getValue(); - var thisSlider = this; - var stepFunc = function(i) { - return function() { - var newVal = i * (value - oldValue) / (steps - 1) + oldValue; - thisSlider.setValue(newVal); - }; - } - for (var i = 0; i < steps; i++) { - this.animationTasks_.push(setTimeout(stepFunc(i), i * duration / steps)); - } -}; - -/** - * Sets the slider's value (0.0 - 1.0). - * @param {number} value New value. - */ -Slider.prototype.setValue = function(value) { - this.value_ = Math.min(Math.max(value, 0), 1); - var x = this.KNOB_MIN_X_ + - (this.KNOB_MAX_X_ - this.KNOB_MIN_X_) * this.value_; - this.knob_.setAttribute('transform', - 'translate(' + x + ',' + this.KNOB_Y_ + ')'); - this.knobTarget_.setAttribute('cx', x); - this.changeFunc_ && this.changeFunc_(this.value_); -}; - -/** - * Convert the mouse coordinates into SVG coordinates. - * @param {!Object} e Object with x and y mouse coordinates. - * @return {!Object} Object with x and y properties in SVG coordinates. - * @private - */ -Slider.prototype.mouseToSvg_ = function(e) { - var svgPoint = this.SVG_.createSVGPoint(); - svgPoint.x = e.clientX; - svgPoint.y = e.clientY; - var matrix = this.SVG_.getScreenCTM().inverse(); - return svgPoint.matrixTransform(matrix); -}; - -/** - * Bind an event to a function call. - * @param {!Node} node Node upon which to listen. - * @param {string} name Event name to listen to (e.g. 'mousedown'). - * @param {Object} thisObject The value of 'this' in the function. - * @param {!Function} func Function to call when event is triggered. - * @private - */ -Slider.bindEvent_ = function(node, name, thisObject, func) { - var wrapFunc = function(e) { - func.apply(thisObject, arguments); - }; - node.addEventListener(name, wrapFunc, false); -}; - -/** - * Map the touch event's properties to be compatible with a mouse event. - * @param {TouchEvent} e Event to modify. - */ -Slider.touchToMouse_ = function(e) { - var touchPoint = e.changedTouches[0]; - e.clientX = touchPoint.clientX; - e.clientY = touchPoint.clientY; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview A slider control in SVG. + */ +'use strict'; + + +/** + * Object representing a horizontal slider widget. + * @param {number} x The horizontal offset of the slider. + * @param {number} y The vertical offset of the slider. + * @param {number} width The total width of the slider. + * @param {!Element} svgParent The SVG element to append the slider to. + * @param {Function=} opt_changeFunc Optional callback function that will be + * called when the slider is moved. The current value is passed. + * @constructor + */ +var Slider = function(x, y, width, svgParent, opt_changeFunc) { + this.KNOB_Y_ = y - 12; + this.KNOB_MIN_X_ = x + 8; + this.KNOB_MAX_X_ = x + width - 8; + this.TARGET_OVERHANG_ = 20; + this.value_ = 0.5; + this.changeFunc_ = opt_changeFunc; + this.animationTasks_ = []; + + // Draw the slider. + /* + + + + + */ + var track = document.createElementNS(Slider.SVG_NS_, 'line'); + track.setAttribute('class', 'sliderTrack'); + track.setAttribute('x1', x); + track.setAttribute('y1', y); + track.setAttribute('x2', x + width); + track.setAttribute('y2', y); + svgParent.appendChild(track); + this.track_ = track; + var rect = document.createElementNS(Slider.SVG_NS_, 'rect'); + rect.setAttribute('style', 'opacity: 0'); + rect.setAttribute('x', x - this.TARGET_OVERHANG_); + rect.setAttribute('y', y - this.TARGET_OVERHANG_); + rect.setAttribute('width', width + 2 * this.TARGET_OVERHANG_); + rect.setAttribute('height', 2 * this.TARGET_OVERHANG_); + rect.setAttribute('rx', this.TARGET_OVERHANG_); + rect.setAttribute('ry', this.TARGET_OVERHANG_); + svgParent.appendChild(rect); + this.trackTarget_ = rect; + var knob = document.createElementNS(Slider.SVG_NS_, 'path'); + knob.setAttribute('class', 'sliderKnob'); + knob.setAttribute('d', 'm 0,0 l -8,8 v 12 h 16 v -12 z'); + svgParent.appendChild(knob); + this.knob_ = knob; + var circle = document.createElementNS(Slider.SVG_NS_, 'circle'); + circle.setAttribute('style', 'opacity: 0'); + circle.setAttribute('r', this.TARGET_OVERHANG_); + circle.setAttribute('cy', y); + svgParent.appendChild(circle); + this.knobTarget_ = circle; + this.setValue(0.5); + + // Find the root SVG object. + while (svgParent && svgParent.nodeName.toLowerCase() !== 'svg') { + svgParent = svgParent.parentNode; + } + this.SVG_ = svgParent; + + // Bind the events to this slider. + Slider.bindEvent_(this.knobTarget_, 'mousedown', this, this.knobMouseDown_); + Slider.bindEvent_(this.knobTarget_, 'touchstart', this, this.knobMouseDown_); + Slider.bindEvent_(this.trackTarget_, 'mousedown', this, this.rectMouseDown_); + Slider.bindEvent_(this.SVG_, 'mouseup', null, Slider.knobMouseUp_); + Slider.bindEvent_(this.SVG_, 'touchend', null, Slider.knobMouseUp_); + Slider.bindEvent_(this.SVG_, 'mousemove', null, Slider.knobMouseMove_); + Slider.bindEvent_(this.SVG_, 'touchmove', null, Slider.knobMouseMove_); + Slider.bindEvent_(document, 'mouseover', null, Slider.mouseOver_); +}; + + +Slider.SVG_NS_ = 'http://www.w3.org/2000/svg'; + +Slider.activeSlider_ = null; +Slider.startMouseX_ = 0; +Slider.startKnobX_ = 0; + +/** + * Start a drag when clicking down on the knob. + * @param {!Event} e Mouse-down event. + * @private + */ +Slider.prototype.knobMouseDown_ = function(e) { + if (e.type === 'touchstart') { + if (e.changedTouches.length !== 1) { + return; + } + Slider.touchToMouse_(e) + } + Slider.activeSlider_ = this; + Slider.startMouseX_ = this.mouseToSvg_(e).x; + Slider.startKnobX_ = 0; + var transform = this.knob_.getAttribute('transform'); + if (transform) { + var r = transform.match(/translate\(\s*([-\d.]+)/); + if (r) { + Slider.startKnobX_ = Number(r[1]); + } + } + // Stop browser from attempting to drag the knob or + // from scrolling/zooming the page. + e.preventDefault(); +}; + +/** + * Stop a drag when clicking up anywhere. + * @param {Event} e Mouse-up event. + * @private + */ +Slider.knobMouseUp_ = function(e) { + Slider.activeSlider_ = null; +}; + +/** + * Stop a drag when the mouse enters a node not part of the SVG. + * @param {Event} e Mouse-up event. + * @private + */ +Slider.mouseOver_ = function(e) { + if (!Slider.activeSlider_) { + return; + } + var node = e.target; + // Find the root SVG object. + do { + if (node === Slider.activeSlider_.SVG_) { + return; + } + } while (node = node.parentNode); + Slider.knobMouseUp_(e); +}; + +/** + * Drag the knob to follow the mouse. + * @param {!Event} e Mouse-move event. + * @private + */ +Slider.knobMouseMove_ = function(e) { + var thisSlider = Slider.activeSlider_; + if (!thisSlider) { + return; + } + if (e.type === 'touchmove') { + if (e.changedTouches.length !== 1) { + return; + } + Slider.touchToMouse_(e) + } + var x = thisSlider.mouseToSvg_(e).x - Slider.startMouseX_ + + Slider.startKnobX_; + thisSlider.setValue((x - thisSlider.KNOB_MIN_X_) / + (thisSlider.KNOB_MAX_X_ - thisSlider.KNOB_MIN_X_)); +}; + +/** + * Jump to a new value when the track is clicked. + * @param {!Event} e Mouse-down event. + * @private + */ +Slider.prototype.rectMouseDown_ = function(e) { + if (e.type === 'touchstart') { + if (e.changedTouches.length !== 1) { + return; + } + Slider.touchToMouse_(e) + } + var x = this.mouseToSvg_(e).x; + this.animateValue((x - this.KNOB_MIN_X_) / + (this.KNOB_MAX_X_ - this.KNOB_MIN_X_)); +}; + +/** + * Returns the slider's value (0.0 - 1.0). + * @return {number} Current value. + */ +Slider.prototype.getValue = function() { + return this.value_; +}; + +/** + * Animates the slider's value (0.0 - 1.0). + * @param {number} value New value. + */ +Slider.prototype.animateValue = function(value) { + // Clear any ongoing animations. + while (this.animationTasks_.length) { + clearTimeout(this.animationTasks_.pop()); + } + var duration = 200; // Milliseconds to animate for. + var steps = 10; // Number of steps to animate. + var oldValue = this.getValue(); + var thisSlider = this; + var stepFunc = function(i) { + return function() { + var newVal = i * (value - oldValue) / (steps - 1) + oldValue; + thisSlider.setValue(newVal); + }; + } + for (var i = 0; i < steps; i++) { + this.animationTasks_.push(setTimeout(stepFunc(i), i * duration / steps)); + } +}; + +/** + * Sets the slider's value (0.0 - 1.0). + * @param {number} value New value. + */ +Slider.prototype.setValue = function(value) { + this.value_ = Math.min(Math.max(value, 0), 1); + var x = this.KNOB_MIN_X_ + + (this.KNOB_MAX_X_ - this.KNOB_MIN_X_) * this.value_; + this.knob_.setAttribute('transform', + 'translate(' + x + ',' + this.KNOB_Y_ + ')'); + this.knobTarget_.setAttribute('cx', x); + this.changeFunc_ && this.changeFunc_(this.value_); +}; + +/** + * Convert the mouse coordinates into SVG coordinates. + * @param {!Object} e Object with x and y mouse coordinates. + * @return {!Object} Object with x and y properties in SVG coordinates. + * @private + */ +Slider.prototype.mouseToSvg_ = function(e) { + var svgPoint = this.SVG_.createSVGPoint(); + svgPoint.x = e.clientX; + svgPoint.y = e.clientY; + var matrix = this.SVG_.getScreenCTM().inverse(); + return svgPoint.matrixTransform(matrix); +}; + +/** + * Bind an event to a function call. + * @param {!Node} node Node upon which to listen. + * @param {string} name Event name to listen to (e.g. 'mousedown'). + * @param {Object} thisObject The value of 'this' in the function. + * @param {!Function} func Function to call when event is triggered. + * @private + */ +Slider.bindEvent_ = function(node, name, thisObject, func) { + var wrapFunc = function(e) { + func.apply(thisObject, arguments); + }; + node.addEventListener(name, wrapFunc, false); +}; + +/** + * Map the touch event's properties to be compatible with a mouse event. + * @param {TouchEvent} e Event to modify. + */ +Slider.touchToMouse_ = function(e) { + var touchPoint = e.changedTouches[0]; + e.clientX = touchPoint.clientX; + e.clientY = touchPoint.clientY; +}; diff --git a/demos/plane/soy/COPYING b/demos/plane/soy/COPYING index d6456956733..75b52484ea4 100644 --- a/demos/plane/soy/COPYING +++ b/demos/plane/soy/COPYING @@ -1,202 +1,202 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/demos/plane/soy/README b/demos/plane/soy/README index 51aa75caf58..aea6b427436 100644 --- a/demos/plane/soy/README +++ b/demos/plane/soy/README @@ -1,45 +1,45 @@ -// Copyright 2009 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -Contents: - -+ SoyToJsSrcCompiler.jar - Executable jar that compiles template files into JavaScript files. - -+ SoyMsgExtractor.jar - Executable jar that extracts messages from template files into XLF files. - -+ soyutils.js - Helper utilities required by all JavaScript code that SoyToJsSrcCompiler - generates. Equivalent functionality to soyutils_usegoog.js, but this - version does not need Closure Library. - - -Instructions: - -+ A simple Hello World for JavaScript: - http://code.google.com/closure/templates/docs/helloworld_js.html - -+ Complete documentation: - http://code.google.com/closure/templates/ - -+ Closure Templates project on Google Code: - http://code.google.com/p/closure-templates/ - - -Notes: - -+ Closure Templates requires Java 6 or higher: - http://www.java.com/ +// Copyright 2009 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +Contents: + ++ SoyToJsSrcCompiler.jar + Executable jar that compiles template files into JavaScript files. + ++ SoyMsgExtractor.jar + Executable jar that extracts messages from template files into XLF files. + ++ soyutils.js + Helper utilities required by all JavaScript code that SoyToJsSrcCompiler + generates. Equivalent functionality to soyutils_usegoog.js, but this + version does not need Closure Library. + + +Instructions: + ++ A simple Hello World for JavaScript: + http://code.google.com/closure/templates/docs/helloworld_js.html + ++ Complete documentation: + http://code.google.com/closure/templates/ + ++ Closure Templates project on Google Code: + http://code.google.com/p/closure-templates/ + + +Notes: + ++ Closure Templates requires Java 6 or higher: + http://www.java.com/ diff --git a/demos/plane/soy/soyutils.js b/demos/plane/soy/soyutils.js index ca9191612da..3ccd095ff73 100644 --- a/demos/plane/soy/soyutils.js +++ b/demos/plane/soy/soyutils.js @@ -1,3299 +1,3299 @@ -/** - * @license - * Copyright 2008 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview - * Utility functions and classes for Soy. - * - *

- * The top portion of this file contains utilities for Soy users:

    - *
  • soy.StringBuilder: Compatible with the 'stringbuilder' code style. - *
  • soy.renderElement: Render template and set as innerHTML of an element. - *
  • soy.renderAsFragment: Render template and return as HTML fragment. - *
- * - *

- * The bottom portion of this file contains utilities that should only be called - * by Soy-generated JS code. Please do not use these functions directly from - * your hand-writen code. Their names all start with '$$'. - * - * @author Garrett Boyer - * @author Mike Samuel - * @author Kai Huang - * @author Aharon Lanin - */ - - -// COPIED FROM nogoog_shim.js - -// Create closure namespaces. -var goog = goog || {}; - - -goog.DEBUG = false; - - -goog.inherits = function(childCtor, parentCtor) { - /** @constructor */ - function tempCtor() {}; - tempCtor.prototype = parentCtor.prototype; - childCtor.superClass_ = parentCtor.prototype; - childCtor.prototype = new tempCtor(); - childCtor.prototype.constructor = childCtor; - - /** - * Calls superclass constructor/method. - * @param {!Object} me Should always be "this". - * @param {string} methodName - * @param {...*} var_args - * @return {?} The return value of the superclass method/constructor. - */ - childCtor.base = function(me, methodName, var_args) { - var args = Array.prototype.slice.call(arguments, 2); - return parentCtor.prototype[methodName].apply(me, args); - }; -}; - - -// Just enough browser detection for this file. -if (!goog.userAgent) { - goog.userAgent = (function() { - var userAgent = ""; - if ("undefined" !== typeof navigator && navigator - && "string" == typeof navigator.userAgent) { - userAgent = navigator.userAgent; - } - var isOpera = userAgent.indexOf('Opera') == 0; - return { - jscript: { - /** - * @type {boolean} - */ - HAS_JSCRIPT: 'ScriptEngine' in this - }, - /** - * @type {boolean} - */ - OPERA: isOpera, - /** - * @type {boolean} - */ - IE: !isOpera && userAgent.indexOf('MSIE') != -1, - /** - * @type {boolean} - */ - WEBKIT: !isOpera && userAgent.indexOf('WebKit') != -1 - }; - })(); -} - -if (!goog.asserts) { - goog.asserts = { - /** - * @param {*} condition Condition to check. - */ - assert: function (condition) { - if (!condition) { - throw Error('Assertion error'); - } - }, - /** - * @param {...*} var_args - */ - fail: function (var_args) {} - }; -} - - -// Stub out the document wrapper used by renderAs*. -if (!goog.dom) { - goog.dom = {}; - /** - * @param {Document=} d - * @constructor - */ - goog.dom.DomHelper = function(d) { - this.document_ = d || document; - }; - /** - * @return {!Document} - */ - goog.dom.DomHelper.prototype.getDocument = function() { - return this.document_; - }; - /** - * Creates a new element. - * @param {string} name Tag name. - * @return {!Element} - */ - goog.dom.DomHelper.prototype.createElement = function(name) { - return this.document_.createElement(name); - }; - /** - * Creates a new document fragment. - * @return {!DocumentFragment} - */ - goog.dom.DomHelper.prototype.createDocumentFragment = function() { - return this.document_.createDocumentFragment(); - }; -} - - -if (!goog.format) { - goog.format = { - insertWordBreaks: function(str, maxCharsBetweenWordBreaks) { - str = String(str); - - var resultArr = []; - var resultArrLen = 0; - - // These variables keep track of important state inside str. - var isInTag = false; // whether we're inside an HTML tag - var isMaybeInEntity = false; // whether we might be inside an HTML entity - var numCharsWithoutBreak = 0; // number of chars since last word break - var flushIndex = 0; // index of first char not yet flushed to resultArr - - for (var i = 0, n = str.length; i < n; ++i) { - var charCode = str.charCodeAt(i); - - // If hit maxCharsBetweenWordBreaks, and not space next, then add . - if (numCharsWithoutBreak >= maxCharsBetweenWordBreaks && - // space - charCode != 32) { - resultArr[resultArrLen++] = str.substring(flushIndex, i); - flushIndex = i; - resultArr[resultArrLen++] = goog.format.WORD_BREAK; - numCharsWithoutBreak = 0; - } - - if (isInTag) { - // If inside an HTML tag and we see '>', it's the end of the tag. - if (charCode == 62) { - isInTag = false; - } - - } else if (isMaybeInEntity) { - switch (charCode) { - // Inside an entity, a ';' is the end of the entity. - // The entity that just ended counts as one char, so increment - // numCharsWithoutBreak. - case 59: // ';' - isMaybeInEntity = false; - ++numCharsWithoutBreak; - break; - // If maybe inside an entity and we see '<', we weren't actually in - // an entity. But now we're inside and HTML tag. - case 60: // '<' - isMaybeInEntity = false; - isInTag = true; - break; - // If maybe inside an entity and we see ' ', we weren't actually in - // an entity. Just correct the state and reset the - // numCharsWithoutBreak since we just saw a space. - case 32: // ' ' - isMaybeInEntity = false; - numCharsWithoutBreak = 0; - break; - } - - } else { // !isInTag && !isInEntity - switch (charCode) { - // When not within a tag or an entity and we see '<', we're now - // inside an HTML tag. - case 60: // '<' - isInTag = true; - break; - // When not within a tag or an entity and we see '&', we might be - // inside an entity. - case 38: // '&' - isMaybeInEntity = true; - break; - // When we see a space, reset the numCharsWithoutBreak count. - case 32: // ' ' - numCharsWithoutBreak = 0; - break; - // When we see a non-space, increment the numCharsWithoutBreak. - default: - ++numCharsWithoutBreak; - break; - } - } - } - - // Flush the remaining chars at the end of the string. - resultArr[resultArrLen++] = str.substring(flushIndex); - - return resultArr.join(''); - }, - /** - * String inserted as a word break by insertWordBreaks(). Safari requires - * , Opera needs the ­ entity, though this will give a - * visible hyphen at breaks. IE8+ use a zero width space. Other browsers - * just use . - * @type {string} - * @private - */ - WORD_BREAK: - goog.userAgent.WEBKIT ? '' : - goog.userAgent.OPERA ? '­' : - goog.userAgent.IE ? '​' : - '' - }; -} - - -if (!goog.i18n) { - goog.i18n = { - bidi: {} - }; -} - - -/** - * Constant that defines whether or not the current locale is an RTL locale. - * - * @type {boolean} - */ -goog.i18n.bidi.IS_RTL = false; - - -/** - * Directionality enum. - * @enum {number} - */ -goog.i18n.bidi.Dir = { - /** - * Left-to-right. - */ - LTR: 1, - - /** - * Right-to-left. - */ - RTL: -1, - - /** - * Neither left-to-right nor right-to-left. - */ - NEUTRAL: 0, - - /** - * A historical misnomer for NEUTRAL. - * @deprecated For "neutral", use NEUTRAL; for "unknown", use null. - */ - UNKNOWN: 0 -}; - - -/** - * Convert a directionality given in various formats to a goog.i18n.bidi.Dir - * constant. Useful for interaction with different standards of directionality - * representation. - * - * @param {goog.i18n.bidi.Dir|number|boolean|null} givenDir Directionality given - * in one of the following formats: - * 1. A goog.i18n.bidi.Dir constant. - * 2. A number (positive = LTR, negative = RTL, 0 = neutral). - * 3. A boolean (true = RTL, false = LTR). - * 4. A null for unknown directionality. - * @param {boolean=} opt_noNeutral Whether a givenDir of zero or - * goog.i18n.bidi.Dir.NEUTRAL should be treated as null, i.e. unknown, in - * order to preserve legacy behavior. - * @return {?goog.i18n.bidi.Dir} A goog.i18n.bidi.Dir constant matching the - * given directionality. If given null, returns null (i.e. unknown). - */ -goog.i18n.bidi.toDir = function(givenDir, opt_noNeutral) { - if (typeof givenDir == 'number') { - // This includes the non-null goog.i18n.bidi.Dir case. - return givenDir > 0 ? goog.i18n.bidi.Dir.LTR : - givenDir < 0 ? goog.i18n.bidi.Dir.RTL : - opt_noNeutral ? null : goog.i18n.bidi.Dir.NEUTRAL; - } else if (givenDir == null) { - return null; - } else { - // Must be typeof givenDir == 'boolean'. - return givenDir ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR; - } -}; - - -/** - * Estimates the directionality of a string based on relative word counts. - * If the number of RTL words is above a certain percentage of the total number - * of strongly directional words, returns RTL. - * Otherwise, if any words are strongly or weakly LTR, returns LTR. - * Otherwise, returns NEUTRAL. - * Numbers are counted as weakly LTR. - * @param {string} str The string to be checked. - * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped. - * Default: false. - * @return {goog.i18n.bidi.Dir} Estimated overall directionality of {@code str}. - */ -goog.i18n.bidi.estimateDirection = function(str, opt_isHtml) { - var rtlCount = 0; - var totalCount = 0; - var hasWeaklyLtr = false; - var tokens = soyshim.$$bidiStripHtmlIfNecessary_(str, opt_isHtml). - split(soyshim.$$bidiWordSeparatorRe_); - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (soyshim.$$bidiRtlDirCheckRe_.test(token)) { - rtlCount++; - totalCount++; - } else if (soyshim.$$bidiIsRequiredLtrRe_.test(token)) { - hasWeaklyLtr = true; - } else if (soyshim.$$bidiLtrCharRe_.test(token)) { - totalCount++; - } else if (soyshim.$$bidiHasNumeralsRe_.test(token)) { - hasWeaklyLtr = true; - } - } - - return totalCount == 0 ? - (hasWeaklyLtr ? goog.i18n.bidi.Dir.LTR : goog.i18n.bidi.Dir.NEUTRAL) : - (rtlCount / totalCount > soyshim.$$bidiRtlDetectionThreshold_ ? - goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR); -}; - - -/** - * Utility class for formatting text for display in a potentially - * opposite-directionality context without garbling. Provides the following - * functionality: - * - * @param {goog.i18n.bidi.Dir|number|boolean|null} dir The context - * directionality, in one of the following formats: - * 1. A goog.i18n.bidi.Dir constant. NEUTRAL is treated the same as null, - * i.e. unknown, for backward compatibility with legacy calls. - * 2. A number (positive = LTR, negative = RTL, 0 = unknown). - * 3. A boolean (true = RTL, false = LTR). - * 4. A null for unknown directionality. - * @constructor - */ -goog.i18n.BidiFormatter = function(dir) { - /** - * The overall directionality of the context in which the formatter is being - * used. - * @type {?goog.i18n.bidi.Dir} - * @private - */ - this.dir_ = goog.i18n.bidi.toDir(dir, true /* opt_noNeutral */); -}; - -/** - * @return {?goog.i18n.bidi.Dir} The context directionality. - */ -goog.i18n.BidiFormatter.prototype.getContextDir = function() { - return this.dir_; -}; - -/** - * Returns 'dir="ltr"' or 'dir="rtl"', depending on the given directionality, if - * it is not the same as the context directionality. Otherwise, returns the - * empty string. - * - * @param {goog.i18n.bidi.Dir} dir A directionality. - * @return {string} 'dir="rtl"' for RTL text in non-RTL context; 'dir="ltr"' for - * LTR text in non-LTR context; else, the empty string. - */ -goog.i18n.BidiFormatter.prototype.knownDirAttr = function(dir) { - return !dir || dir == this.dir_ ? '' : dir < 0 ? 'dir="rtl"' : 'dir="ltr"'; -}; - -/** - * Returns the trailing horizontal edge, i.e. "right" or "left", depending on - * the global bidi directionality. - * @return {string} "left" for RTL context and "right" otherwise. - */ -goog.i18n.BidiFormatter.prototype.endEdge = function () { - return this.dir_ < 0 ? 'left' : 'right'; -}; - -/** - * Returns the Unicode BiDi mark matching the context directionality (LRM for - * LTR context directionality, RLM for RTL context directionality), or the - * empty string for unknown context directionality. - * - * @return {string} LRM for LTR context directionality and RLM for RTL context - * directionality. - */ -goog.i18n.BidiFormatter.prototype.mark = function () { - return ( - (this.dir_ > 0) ? '\u200E' /*LRM*/ : - (this.dir_ < 0) ? '\u200F' /*RLM*/ : - ''); -}; - -/** - * Returns a Unicode bidi mark matching the context directionality (LRM or RLM) - * if the directionality or the exit directionality of {@code text} are opposite - * to the context directionality. Otherwise returns the empty string. - * If opt_isHtml, makes sure to ignore the LTR nature of the mark-up and escapes - * in text, making the logic suitable for HTML and HTML-escaped text. - * @param {?goog.i18n.bidi.Dir} textDir {@code text}'s overall directionality, - * or null if unknown and needs to be estimated. - * @param {string} text The text whose directionality is to be estimated. - * @param {boolean=} opt_isHtml Whether text is HTML/HTML-escaped. - * Default: false. - * @return {string} A Unicode bidi mark matching the context directionality, or - * the empty string when either the context directionality is unknown or - * neither the text's overall nor its exit directionality is opposite to it. - */ -goog.i18n.BidiFormatter.prototype.markAfterKnownDir = function ( - textDir, text, opt_isHtml) { - if (textDir == null) { - textDir = goog.i18n.bidi.estimateDirection(text, opt_isHtml); - } - return ( - this.dir_ > 0 && (textDir < 0 || - soyshim.$$bidiIsRtlExitText_(text, opt_isHtml)) ? '\u200E' : // LRM - this.dir_ < 0 && (textDir > 0 || - soyshim.$$bidiIsLtrExitText_(text, opt_isHtml)) ? '\u200F' : // RLM - ''); -}; - -/** - * Formats an HTML string for use in HTML output of the context directionality, - * so an opposite-directionality string is neither garbled nor garbles what - * follows it. - * - * @param {?goog.i18n.bidi.Dir} textDir {@code str}'s overall directionality, or - * null if unknown and needs to be estimated. - * @param {string} str The input text (HTML or HTML-escaped). - * @param {boolean=} placeholder This argument exists for consistency with the - * Closure Library. Specifying it has no effect. - * @return {string} The input text after applying the above processing. - */ -goog.i18n.BidiFormatter.prototype.spanWrapWithKnownDir = function( - textDir, str, placeholder) { - if (textDir == null) { - textDir = goog.i18n.bidi.estimateDirection(str, true); - } - var reset = this.markAfterKnownDir(textDir, str, true); - if (textDir > 0 && this.dir_ <= 0) { - str = '' + str + ''; - } else if (textDir < 0 && this.dir_ >= 0) { - str = '' + str + ''; - } - return str + reset; -}; - -/** - * Returns the leading horizontal edge, i.e. "left" or "right", depending on - * the global bidi directionality. - * @return {string} "right" for RTL context and "left" otherwise. - */ -goog.i18n.BidiFormatter.prototype.startEdge = function () { - return this.dir_ < 0 ? 'right' : 'left'; -}; - -/** - * Formats an HTML-escaped string for use in HTML output of the context - * directionality, so an opposite-directionality string is neither garbled nor - * garbles what follows it. - * As opposed to {@link #spanWrapWithKnownDir}, this makes use of unicode bidi - * formatting characters. In HTML, it should only be used inside attribute - * values and elements that do not allow markup, e.g. an 'option' tag. - * - * @param {?goog.i18n.bidi.Dir} textDir {@code str}'s overall directionality, or - * null if unknown and needs to be estimated. - * @param {string} str The input text (HTML-escaped). - * @param {boolean=} opt_isHtml Whether {@code str} is HTML / HTML-escaped. - * Default: false. - * @return {string} The input text after applying the above processing. - */ -goog.i18n.BidiFormatter.prototype.unicodeWrapWithKnownDir = function( - textDir, str, opt_isHtml) { - if (textDir == null) { - textDir = goog.i18n.bidi.estimateDirection(str, opt_isHtml); - } - var reset = this.markAfterKnownDir(textDir, str, opt_isHtml); - if (textDir > 0 && this.dir_ <= 0) { - str = '\u202A' + str + '\u202C'; - } else if (textDir < 0 && this.dir_ >= 0) { - str = '\u202B' + str + '\u202C'; - } - return str + reset; -}; - - -if (!goog.string) { - goog.string = { - /** - * Converts \r\n, \r, and \n to
s - * @param {*} str The string in which to convert newlines. - * @param {boolean=} opt_xml Whether to use XML compatible tags. - * @return {string} A copy of {@code str} with converted newlines. - */ - newLineToBr: function(str, opt_xml) { - - str = String(str); - - // This quick test helps in the case when there are no chars to replace, - // in the worst case this makes barely a difference to the time taken. - if (!goog.string.NEWLINE_TO_BR_RE_.test(str)) { - return str; - } - - return str.replace(/(\r\n|\r|\n)/g, opt_xml ? '
' : '
'); - }, - urlEncode: encodeURIComponent, - /** - * Regular expression used within newlineToBr(). - * @type {RegExp} - * @private - */ - NEWLINE_TO_BR_RE_: /[\r\n]/ - }; -} - -/** - * Utility class to facilitate much faster string concatenation in IE, - * using Array.join() rather than the '+' operator. For other browsers - * we simply use the '+' operator. - * - * @param {Object|number|string|boolean=} opt_a1 Optional first initial item - * to append. - * @param {...Object|number|string|boolean} var_args Other initial items to - * append, e.g., new goog.string.StringBuffer('foo', 'bar'). - * @constructor - */ -goog.string.StringBuffer = function(opt_a1, var_args) { - /** - * Internal buffer for the string to be concatenated. - * @type {string|Array} - * @private - */ - this.buffer_ = goog.userAgent.jscript.HAS_JSCRIPT ? [] : ''; - - if (opt_a1 != null) { - this.append.apply(this, arguments); - } -}; - - -/** - * Length of internal buffer (faster than calling buffer_.length). - * Only used for IE. - * @type {number} - * @private - */ -goog.string.StringBuffer.prototype.bufferLength_ = 0; - -/** - * Appends one or more items to the string. - * - * Calling this with null, undefined, or empty arguments is an error. - * - * @param {Object|number|string|boolean} a1 Required first string. - * @param {Object|number|string|boolean=} opt_a2 Optional second string. - * @param {...Object|number|string|boolean} var_args Other items to append, - * e.g., sb.append('foo', 'bar', 'baz'). - * @return {goog.string.StringBuffer} This same StringBuilder object. - */ -goog.string.StringBuffer.prototype.append = function(a1, opt_a2, var_args) { - - if (goog.userAgent.jscript.HAS_JSCRIPT) { - if (opt_a2 == null) { // no second argument (note: undefined == null) - // Array assignment is 2x faster than Array push. Also, use a1 - // directly to avoid arguments instantiation, another 2x improvement. - this.buffer_[this.bufferLength_++] = a1; - } else { - var arr = /**@type {Array}*/(this.buffer_); - arr.push.apply(arr, arguments); - this.bufferLength_ = this.buffer_.length; - } - - } else { - - // Use a1 directly to avoid arguments instantiation for single-arg case. - this.buffer_ += a1; - if (opt_a2 != null) { // no second argument (note: undefined == null) - for (var i = 1; i < arguments.length; i++) { - this.buffer_ += arguments[i]; - } - } - } - - return this; -}; - - -/** - * Clears the string. - */ -goog.string.StringBuffer.prototype.clear = function() { - - if (goog.userAgent.jscript.HAS_JSCRIPT) { - this.buffer_.length = 0; // reuse array to avoid creating new object - this.bufferLength_ = 0; - - } else { - this.buffer_ = ''; - } -}; - - -/** - * Returns the concatenated string. - * - * @return {string} The concatenated string. - */ -goog.string.StringBuffer.prototype.toString = function() { - - if (goog.userAgent.jscript.HAS_JSCRIPT) { - var str = this.buffer_.join(''); - // Given a string with the entire contents, simplify the StringBuilder by - // setting its contents to only be this string, rather than many fragments. - this.clear(); - if (str) { - this.append(str); - } - return str; - - } else { - return /** @type {string} */ (this.buffer_); - } -}; - - -if (!goog.soy) goog.soy = { - /** - * Helper function to render a Soy template and then set the - * output string as the innerHTML of an element. It is recommended - * to use this helper function instead of directly setting - * innerHTML in your hand-written code, so that it will be easier - * to audit the code for cross-site scripting vulnerabilities. - * - * @param {Function} template The Soy template defining element's content. - * @param {Object=} opt_templateData The data for the template. - * @param {Object=} opt_injectedData The injected data for the template. - * @param {(goog.dom.DomHelper|Document)=} opt_dom The context in which DOM - * nodes will be created. - */ - renderAsElement: function( - template, opt_templateData, opt_injectedData, opt_dom) { - return /** @type {!Element} */ (soyshim.$$renderWithWrapper_( - template, opt_templateData, opt_dom, true /* asElement */, - opt_injectedData)); - }, - /** - * Helper function to render a Soy template into a single node or - * a document fragment. If the rendered HTML string represents a - * single node, then that node is returned (note that this is - * *not* a fragment, despite them name of the method). Otherwise a - * document fragment is returned containing the rendered nodes. - * - * @param {Function} template The Soy template defining element's content. - * @param {Object=} opt_templateData The data for the template. - * @param {Object=} opt_injectedData The injected data for the template. - * @param {(goog.dom.DomHelper|Document)=} opt_dom The context in which DOM - * nodes will be created. - * @return {!Node} The resulting node or document fragment. - */ - renderAsFragment: function( - template, opt_templateData, opt_injectedData, opt_dom) { - return soyshim.$$renderWithWrapper_( - template, opt_templateData, opt_dom, false /* asElement */, - opt_injectedData); - }, - /** - * Helper function to render a Soy template and then set the output string as - * the innerHTML of an element. It is recommended to use this helper function - * instead of directly setting innerHTML in your hand-written code, so that it - * will be easier to audit the code for cross-site scripting vulnerabilities. - * - * NOTE: New code should consider using goog.soy.renderElement instead. - * - * @param {Element} element The element whose content we are rendering. - * @param {Function} template The Soy template defining the element's content. - * @param {Object=} opt_templateData The data for the template. - * @param {Object=} opt_injectedData The injected data for the template. - */ - renderElement: function( - element, template, opt_templateData, opt_injectedData) { - element.innerHTML = template(opt_templateData, null, opt_injectedData); - }, - data: {} -}; - - -/** - * A type of textual content. - * - * This is an enum of type Object so that these values are unforgeable. - * - * @enum {!Object} - */ -goog.soy.data.SanitizedContentKind = { - - /** - * A snippet of HTML that does not start or end inside a tag, comment, entity, - * or DOCTYPE; and that does not contain any executable code - * (JS, {@code }s, etc.) from a different trust domain. - */ - HTML: goog.DEBUG ? {sanitizedContentKindHtml: true} : {}, - - /** - * Executable Javascript code or expression, safe for insertion in a - * script-tag or event handler context, known to be free of any - * attacker-controlled scripts. This can either be side-effect-free - * Javascript (such as JSON) or Javascript that's entirely under Google's - * control. - */ - JS: goog.DEBUG ? {sanitizedContentJsChars: true} : {}, - - /** - * A sequence of code units that can appear between quotes (either kind) in a - * JS program without causing a parse error, and without causing any side - * effects. - *

- * The content should not contain unescaped quotes, newlines, or anything else - * that would cause parsing to fail or to cause a JS parser to finish the - * string its parsing inside the content. - *

- * The content must also not end inside an escape sequence ; no partial octal - * escape sequences or odd number of '{@code \}'s at the end. - */ - JS_STR_CHARS: goog.DEBUG ? {sanitizedContentJsStrChars: true} : {}, - - /** A properly encoded portion of a URI. */ - URI: goog.DEBUG ? {sanitizedContentUri: true} : {}, - - /** - * Repeated attribute names and values. For example, - * {@code dir="ltr" foo="bar" onclick="trustedFunction()" checked}. - */ - ATTRIBUTES: goog.DEBUG ? {sanitizedContentHtmlAttribute: true} : {}, - - // TODO: Consider separating rules, declarations, and values into - // separate types, but for simplicity, we'll treat explicitly blessed - // SanitizedContent as allowed in all of these contexts. - /** - * A CSS3 declaration, property, value or group of semicolon separated - * declarations. - */ - CSS: goog.DEBUG ? {sanitizedContentCss: true} : {}, - - /** - * Unsanitized plain-text content. - * - * This is effectively the "null" entry of this enum, and is sometimes used - * to explicitly mark content that should never be used unescaped. Since any - * string is safe to use as text, being of ContentKind.TEXT makes no - * guarantees about its safety in any other context such as HTML. - */ - TEXT: goog.DEBUG ? {sanitizedContentKindText: true} : {} -}; - - - -/** - * A string-like object that carries a content-type and a content direction. - * - * IMPORTANT! Do not create these directly, nor instantiate the subclasses. - * Instead, use a trusted, centrally reviewed library as endorsed by your team - * to generate these objects. Otherwise, you risk accidentally creating - * SanitizedContent that is attacker-controlled and gets evaluated unescaped in - * templates. - * - * @constructor - */ -goog.soy.data.SanitizedContent = function() { - throw Error('Do not instantiate directly'); -}; - - -/** - * The context in which this content is safe from XSS attacks. - * @type {goog.soy.data.SanitizedContentKind} - */ -goog.soy.data.SanitizedContent.prototype.contentKind; - - -/** - * The content's direction; null if unknown and thus to be estimated when - * necessary. - * @type {?goog.i18n.bidi.Dir} - */ -goog.soy.data.SanitizedContent.prototype.contentDir = null; - - -/** - * The already-safe content. - * @type {string} - */ -goog.soy.data.SanitizedContent.prototype.content; - - -/** @override */ -goog.soy.data.SanitizedContent.prototype.toString = function() { - return this.content; -}; - - -var soy = { esc: {} }; -var soydata = {}; -soydata.VERY_UNSAFE = {}; -var soyshim = { $$DEFAULT_TEMPLATE_DATA_: {} }; -/** - * Helper function to render a Soy template into a single node or a document - * fragment. If the rendered HTML string represents a single node, then that - * node is returned. Otherwise a document fragment is created and returned - * (wrapped in a DIV element if #opt_singleNode is true). - * - * @param {Function} template The Soy template defining the element's content. - * @param {Object=} opt_templateData The data for the template. - * @param {(goog.dom.DomHelper|Document)=} opt_dom The context in which DOM - * nodes will be created. - * @param {boolean=} opt_asElement Whether to wrap the fragment in an - * element if the template does not render a single element. If true, - * result is always an Element. - * @param {Object=} opt_injectedData The injected data for the template. - * @return {!Node} The resulting node or document fragment. - * @private - */ -soyshim.$$renderWithWrapper_ = function( - template, opt_templateData, opt_dom, opt_asElement, opt_injectedData) { - - var dom = opt_dom || document; - var wrapper = dom.createElement('div'); - wrapper.innerHTML = template( - opt_templateData || soyshim.$$DEFAULT_TEMPLATE_DATA_, undefined, - opt_injectedData); - - // If the template renders as a single element, return it. - if (wrapper.childNodes.length == 1) { - var firstChild = wrapper.firstChild; - if (!opt_asElement || firstChild.nodeType == 1 /* Element */) { - return /** @type {!Node} */ (firstChild); - } - } - - // If we're forcing it to be a single element, return the wrapper DIV. - if (opt_asElement) { - return wrapper; - } - - // Otherwise, create and return a fragment. - var fragment = dom.createDocumentFragment(); - while (wrapper.firstChild) { - fragment.appendChild(wrapper.firstChild); - } - return fragment; -}; - - -/** - * Strips str of any HTML mark-up and escapes. Imprecise in several ways, but - * precision is not very important, since the result is only meant to be used - * for directionality detection. - * Based on goog.i18n.bidi.stripHtmlIfNeeded_(). - * @param {string} str The string to be stripped. - * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped. - * Default: false. - * @return {string} The stripped string. - * @private - */ -soyshim.$$bidiStripHtmlIfNecessary_ = function(str, opt_isHtml) { - return opt_isHtml ? str.replace(soyshim.$$BIDI_HTML_SKIP_RE_, '') : str; -}; - - -/** - * Simplified regular expression for am HTML tag (opening or closing) or an HTML - * escape - the things we want to skip over in order to ignore their ltr - * characters. - * Copied from goog.i18n.bidi.htmlSkipReg_. - * @type {RegExp} - * @private - */ -soyshim.$$BIDI_HTML_SKIP_RE_ = /<[^>]*>|&[^;]+;/g; - - -/** - * A practical pattern to identify strong LTR character. This pattern is not - * theoretically correct according to unicode standard. It is simplified for - * performance and small code size. - * Copied from goog.i18n.bidi.ltrChars_. - * @type {string} - * @private - */ -soyshim.$$bidiLtrChars_ = - 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-\u1FFF' + - '\u200E\u2C00-\uFB1C\uFE00-\uFE6F\uFEFD-\uFFFF'; - - -/** - * A practical pattern to identify strong RTL character. This pattern is not - * theoretically correct according to unicode standard. It is simplified for - * performance and small code size. - * Copied from goog.i18n.bidi.rtlChars_. - * @type {string} - * @private - */ -soyshim.$$bidiRtlChars_ = '\u0591-\u07FF\u200F\uFB1D-\uFDFF\uFE70-\uFEFC'; - - -/** - * Regular expressions to check if a piece of text is of RTL directionality - * on first character with strong directionality. - * Based on goog.i18n.bidi.rtlDirCheckRe_. - * @type {RegExp} - * @private - */ -soyshim.$$bidiRtlDirCheckRe_ = new RegExp( - '^[^' + soyshim.$$bidiLtrChars_ + ']*[' + soyshim.$$bidiRtlChars_ + ']'); - - -/** - * Regular expression to check for LTR characters. - * Based on goog.i18n.bidi.ltrCharReg_. - * @type {RegExp} - * @private - */ -soyshim.$$bidiLtrCharRe_ = new RegExp('[' + soyshim.$$bidiLtrChars_ + ']'); - - -/** - * Regular expression to check if a string looks like something that must - * always be LTR even in RTL text, e.g. a URL. When estimating the - * directionality of text containing these, we treat these as weakly LTR, - * like numbers. - * Copied from goog.i18n.bidi.isRequiredLtrRe_. - * @type {RegExp} - * @private - */ -soyshim.$$bidiIsRequiredLtrRe_ = /^http:\/\/.*/; - - -/** - * Regular expression to check if a string contains any numerals. Used to - * differentiate between completely neutral strings and those containing - * numbers, which are weakly LTR. - * Copied from goog.i18n.bidi.hasNumeralsRe_. - * @type {RegExp} - * @private - */ -soyshim.$$bidiHasNumeralsRe_ = /\d/; - - -/** - * Regular expression to split a string into "words" for directionality - * estimation based on relative word counts. - * Copied from goog.i18n.bidi.wordSeparatorRe_. - * @type {RegExp} - * @private - */ -soyshim.$$bidiWordSeparatorRe_ = /\s+/; - - -/** - * This constant controls threshold of rtl directionality. - * Copied from goog.i18n.bidi.rtlDetectionThreshold_. - * @type {number} - * @private - */ -soyshim.$$bidiRtlDetectionThreshold_ = 0.40; - -/** - * Regular expressions to check if the last strongly-directional character in a - * piece of text is LTR. - * Based on goog.i18n.bidi.ltrExitDirCheckRe_. - * @type {RegExp} - * @private - */ -soyshim.$$bidiLtrExitDirCheckRe_ = new RegExp( - '[' + soyshim.$$bidiLtrChars_ + '][^' + soyshim.$$bidiRtlChars_ + ']*$'); - - -/** - * Regular expressions to check if the last strongly-directional character in a - * piece of text is RTL. - * Based on goog.i18n.bidi.rtlExitDirCheckRe_. - * @type {RegExp} - * @private - */ -soyshim.$$bidiRtlExitDirCheckRe_ = new RegExp( - '[' + soyshim.$$bidiRtlChars_ + '][^' + soyshim.$$bidiLtrChars_ + ']*$'); - - -/** - * Check if the exit directionality a piece of text is LTR, i.e. if the last - * strongly-directional character in the string is LTR. - * Based on goog.i18n.bidi.endsWithLtr(). - * @param {string} str string being checked. - * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped. - * Default: false. - * @return {boolean} Whether LTR exit directionality was detected. - * @private - */ -soyshim.$$bidiIsLtrExitText_ = function(str, opt_isHtml) { - str = soyshim.$$bidiStripHtmlIfNecessary_(str, opt_isHtml); - return soyshim.$$bidiLtrExitDirCheckRe_.test(str); -}; - - -/** - * Check if the exit directionality a piece of text is RTL, i.e. if the last - * strongly-directional character in the string is RTL. - * Based on goog.i18n.bidi.endsWithRtl(). - * @param {string} str string being checked. - * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped. - * Default: false. - * @return {boolean} Whether RTL exit directionality was detected. - * @private - */ -soyshim.$$bidiIsRtlExitText_ = function(str, opt_isHtml) { - str = soyshim.$$bidiStripHtmlIfNecessary_(str, opt_isHtml); - return soyshim.$$bidiRtlExitDirCheckRe_.test(str); -}; - - -// ============================================================================= -// COPIED FROM soyutils_usegoog.js - - -// ----------------------------------------------------------------------------- -// StringBuilder (compatible with the 'stringbuilder' code style). - - -/** - * Utility class to facilitate much faster string concatenation in IE, - * using Array.join() rather than the '+' operator. For other browsers - * we simply use the '+' operator. - * - * @param {Object} var_args Initial items to append, - * e.g., new soy.StringBuilder('foo', 'bar'). - * @constructor - */ -soy.StringBuilder = goog.string.StringBuffer; - - -// ----------------------------------------------------------------------------- -// soydata: Defines typed strings, e.g. an HTML string {@code "ac"} is -// semantically distinct from the plain text string {@code "ac"} and smart -// templates can take that distinction into account. - -/** - * A type of textual content. - * - * This is an enum of type Object so that these values are unforgeable. - * - * @enum {!Object} - */ -soydata.SanitizedContentKind = goog.soy.data.SanitizedContentKind; - - -/** - * Checks whether a given value is of a given content kind. - * - * @param {*} value The value to be examined. - * @param {soydata.SanitizedContentKind} contentKind The desired content - * kind. - * @return {boolean} Whether the given value is of the given kind. - * @private - */ -soydata.isContentKind = function(value, contentKind) { - // TODO(user): This function should really include the assert on - // value.constructor that is currently sprinkled at most of the call sites. - // Unfortunately, that would require a (debug-mode-only) switch statement. - // TODO(user): Perhaps we should get rid of the contentKind property - // altogether and only at the constructor. - return value != null && value.contentKind === contentKind; -}; - - -/** - * Returns a given value's contentDir property, constrained to a - * goog.i18n.bidi.Dir value or null. Returns null if the value is null, - * undefined, a primitive or does not have a contentDir property, or the - * property's value is not 1 (for LTR), -1 (for RTL), or 0 (for neutral). - * - * @param {*} value The value whose contentDir property, if any, is to - * be returned. - * @return {?goog.i18n.bidi.Dir} The contentDir property. - */ -soydata.getContentDir = function(value) { - if (value != null) { - switch (value.contentDir) { - case goog.i18n.bidi.Dir.LTR: - return goog.i18n.bidi.Dir.LTR; - case goog.i18n.bidi.Dir.RTL: - return goog.i18n.bidi.Dir.RTL; - case goog.i18n.bidi.Dir.NEUTRAL: - return goog.i18n.bidi.Dir.NEUTRAL; - } - } - return null; -}; - - -/** - * Content of type {@link soydata.SanitizedContentKind.HTML}. - * - * The content is a string of HTML that can safely be embedded in a PCDATA - * context in your app. If you would be surprised to find that an HTML - * sanitizer produced {@code s} (e.g. it runs code or fetches bad URLs) and - * you wouldn't write a template that produces {@code s} on security or privacy - * grounds, then don't pass {@code s} here. The default content direction is - * unknown, i.e. to be estimated when necessary. - * - * @constructor - * @extends {goog.soy.data.SanitizedContent} - */ -soydata.SanitizedHtml = function() { - goog.soy.data.SanitizedContent.call(this); // Throws an exception. -}; -goog.inherits(soydata.SanitizedHtml, goog.soy.data.SanitizedContent); - -/** @override */ -soydata.SanitizedHtml.prototype.contentKind = soydata.SanitizedContentKind.HTML; - -/** - * Returns a SanitizedHtml object for a particular value. The content direction - * is preserved. - * - * This HTML-escapes the value unless it is already SanitizedHtml. - * - * @param {*} value The value to convert. If it is already a SanitizedHtml - * object, it is left alone. - * @return {!soydata.SanitizedHtml} A SanitizedHtml object derived from the - * stringified value. It is escaped unless the input is SanitizedHtml. - */ -soydata.SanitizedHtml.from = function(value) { - // The check is soydata.isContentKind() inlined for performance. - if (value != null && - value.contentKind === soydata.SanitizedContentKind.HTML) { - goog.asserts.assert(value.constructor === soydata.SanitizedHtml); - return /** @type {!soydata.SanitizedHtml} */ (value); - } - return soydata.VERY_UNSAFE.ordainSanitizedHtml( - soy.esc.$$escapeHtmlHelper(String(value)), soydata.getContentDir(value)); -}; - - -/** - * Content of type {@link soydata.SanitizedContentKind.JS}. - * - * The content is Javascript source that when evaluated does not execute any - * attacker-controlled scripts. The content direction is LTR. - * - * @constructor - * @extends {goog.soy.data.SanitizedContent} - */ -soydata.SanitizedJs = function() { - goog.soy.data.SanitizedContent.call(this); // Throws an exception. -}; -goog.inherits(soydata.SanitizedJs, goog.soy.data.SanitizedContent); - -/** @override */ -soydata.SanitizedJs.prototype.contentKind = - soydata.SanitizedContentKind.JS; - -/** @override */ -soydata.SanitizedJs.prototype.contentDir = goog.i18n.bidi.Dir.LTR; - - -/** - * Content of type {@link soydata.SanitizedContentKind.JS_STR_CHARS}. - * - * The content can be safely inserted as part of a single- or double-quoted - * string without terminating the string. The default content direction is - * unknown, i.e. to be estimated when necessary. - * - * @constructor - * @extends {goog.soy.data.SanitizedContent} - */ -soydata.SanitizedJsStrChars = function() { - goog.soy.data.SanitizedContent.call(this); // Throws an exception. -}; -goog.inherits(soydata.SanitizedJsStrChars, goog.soy.data.SanitizedContent); - -/** @override */ -soydata.SanitizedJsStrChars.prototype.contentKind = - soydata.SanitizedContentKind.JS_STR_CHARS; - -/** - * Content of type {@link soydata.SanitizedContentKind.URI}. - * - * The content is a URI chunk that the caller knows is safe to emit in a - * template. The content direction is LTR. - * - * @constructor - * @extends {goog.soy.data.SanitizedContent} - */ -soydata.SanitizedUri = function() { - goog.soy.data.SanitizedContent.call(this); // Throws an exception. -}; -goog.inherits(soydata.SanitizedUri, goog.soy.data.SanitizedContent); - -/** @override */ -soydata.SanitizedUri.prototype.contentKind = soydata.SanitizedContentKind.URI; - -/** @override */ -soydata.SanitizedUri.prototype.contentDir = goog.i18n.bidi.Dir.LTR; - - -/** - * Content of type {@link soydata.SanitizedContentKind.ATTRIBUTES}. - * - * The content should be safely embeddable within an open tag, such as a - * key="value" pair. The content direction is LTR. - * - * @constructor - * @extends {goog.soy.data.SanitizedContent} - */ -soydata.SanitizedHtmlAttribute = function() { - goog.soy.data.SanitizedContent.call(this); // Throws an exception. -}; -goog.inherits(soydata.SanitizedHtmlAttribute, goog.soy.data.SanitizedContent); - -/** @override */ -soydata.SanitizedHtmlAttribute.prototype.contentKind = - soydata.SanitizedContentKind.ATTRIBUTES; - -/** @override */ -soydata.SanitizedHtmlAttribute.prototype.contentDir = goog.i18n.bidi.Dir.LTR; - - -/** - * Content of type {@link soydata.SanitizedContentKind.CSS}. - * - * The content is non-attacker-exploitable CSS, such as {@code color:#c3d9ff}. - * The content direction is LTR. - * - * @constructor - * @extends {goog.soy.data.SanitizedContent} - */ -soydata.SanitizedCss = function() { - goog.soy.data.SanitizedContent.call(this); // Throws an exception. -}; -goog.inherits(soydata.SanitizedCss, goog.soy.data.SanitizedContent); - -/** @override */ -soydata.SanitizedCss.prototype.contentKind = - soydata.SanitizedContentKind.CSS; - -/** @override */ -soydata.SanitizedCss.prototype.contentDir = goog.i18n.bidi.Dir.LTR; - - -/** - * Unsanitized plain text string. - * - * While all strings are effectively safe to use as a plain text, there are no - * guarantees about safety in any other context such as HTML. This is - * sometimes used to mark that should never be used unescaped. - * - * @param {*} content Plain text with no guarantees. - * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if - * unknown and thus to be estimated when necessary. Default: null. - * @constructor - * @extends {goog.soy.data.SanitizedContent} - */ -soydata.UnsanitizedText = function(content, opt_contentDir) { - /** @override */ - this.content = String(content); - this.contentDir = opt_contentDir != null ? opt_contentDir : null; -}; -goog.inherits(soydata.UnsanitizedText, goog.soy.data.SanitizedContent); - -/** @override */ -soydata.UnsanitizedText.prototype.contentKind = - soydata.SanitizedContentKind.TEXT; - - -/** - * Empty string, used as a type in Soy templates. - * @enum {string} - * @private - */ -soydata.$$EMPTY_STRING_ = { - VALUE: '' -}; - - -/** - * Creates a factory for SanitizedContent types. - * - * This is a hack so that the soydata.VERY_UNSAFE.ordainSanitized* can - * instantiate Sanitized* classes, without making the Sanitized* constructors - * publicly usable. Requiring all construction to use the VERY_UNSAFE names - * helps callers and their reviewers easily tell that creating SanitizedContent - * is not always safe and calls for careful review. - * - * @param {function(new: T)} ctor A constructor. - * @return {!function(*, ?goog.i18n.bidi.Dir=): T} A factory that takes - * content and an optional content direction and returns a new instance. If - * the content direction is undefined, ctor.prototype.contentDir is used. - * @template T - * @private - */ -soydata.$$makeSanitizedContentFactory_ = function(ctor) { - /** @type {function(new: goog.soy.data.SanitizedContent)} */ - function InstantiableCtor() {} - InstantiableCtor.prototype = ctor.prototype; - /** - * Creates a ctor-type SanitizedContent instance. - * - * @param {*} content The content to put in the instance. - * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction. If - * undefined, ctor.prototype.contentDir is used. - * @return {goog.soy.data.SanitizedContent} The new instance. It is actually - * of type T above (ctor's type, a descendant of SanitizedContent), but - * there is no way to express that here. - */ - function sanitizedContentFactory(content, opt_contentDir) { - var result = new InstantiableCtor(); - result.content = String(content); - if (opt_contentDir !== undefined) { - result.contentDir = opt_contentDir; - } - return result; - } - return sanitizedContentFactory; -}; - - -/** - * Creates a factory for SanitizedContent types that should always have their - * default directionality. - * - * This is a hack so that the soydata.VERY_UNSAFE.ordainSanitized* can - * instantiate Sanitized* classes, without making the Sanitized* constructors - * publicly usable. Requiring all construction to use the VERY_UNSAFE names - * helps callers and their reviewers easily tell that creating SanitizedContent - * is not always safe and calls for careful review. - * - * @param {function(new: T, string)} ctor A constructor. - * @return {!function(*): T} A factory that takes content and returns a new - * instance (with default directionality, i.e. ctor.prototype.contentDir). - * @template T - * @private - */ -soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_ = function(ctor) { - /** @type {function(new: goog.soy.data.SanitizedContent)} */ - function InstantiableCtor() {} - InstantiableCtor.prototype = ctor.prototype; - /** - * Creates a ctor-type SanitizedContent instance. - * - * @param {*} content The content to put in the instance. - * @return {goog.soy.data.SanitizedContent} The new instance. It is actually - * of type T above (ctor's type, a descendant of SanitizedContent), but - * there is no way to express that here. - */ - function sanitizedContentFactory(content) { - var result = new InstantiableCtor(); - result.content = String(content); - return result; - } - return sanitizedContentFactory; -}; - - -// ----------------------------------------------------------------------------- -// Sanitized content ordainers. Please use these with extreme caution (with the -// exception of markUnsanitizedText). A good recommendation is to limit usage -// of these to just a handful of files in your source tree where usages can be -// carefully audited. - - -/** - * Protects a string from being used in an noAutoescaped context. - * - * This is useful for content where there is significant risk of accidental - * unescaped usage in a Soy template. A great case is for user-controlled - * data that has historically been a source of vulernabilities. - * - * @param {*} content Text to protect. - * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if - * unknown and thus to be estimated when necessary. Default: null. - * @return {!soydata.UnsanitizedText} A wrapper that is rejected by the - * Soy noAutoescape print directive. - */ -soydata.markUnsanitizedText = function(content, opt_contentDir) { - return new soydata.UnsanitizedText(content, opt_contentDir); -}; - - -/** - * Takes a leap of faith that the provided content is "safe" HTML. - * - * @param {*} content A string of HTML that can safely be embedded in - * a PCDATA context in your app. If you would be surprised to find that an - * HTML sanitizer produced {@code s} (e.g. it runs code or fetches bad URLs) - * and you wouldn't write a template that produces {@code s} on security or - * privacy grounds, then don't pass {@code s} here. - * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if - * unknown and thus to be estimated when necessary. Default: null. - * @return {!soydata.SanitizedHtml} Sanitized content wrapper that - * indicates to Soy not to escape when printed as HTML. - */ -soydata.VERY_UNSAFE.ordainSanitizedHtml = - soydata.$$makeSanitizedContentFactory_(soydata.SanitizedHtml); - - -/** - * Takes a leap of faith that the provided content is "safe" (non-attacker- - * controlled, XSS-free) Javascript. - * - * @param {*} content Javascript source that when evaluated does not - * execute any attacker-controlled scripts. - * @return {!soydata.SanitizedJs} Sanitized content wrapper that indicates to - * Soy not to escape when printed as Javascript source. - */ -soydata.VERY_UNSAFE.ordainSanitizedJs = - soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_( - soydata.SanitizedJs); - - -// TODO: This function is probably necessary, either externally or internally -// as an implementation detail. Generally, plain text will always work here, -// as there's no harm to unescaping the string and then re-escaping when -// finally printed. -/** - * Takes a leap of faith that the provided content can be safely embedded in - * a Javascript string without re-escaping. - * - * @param {*} content Content that can be safely inserted as part of a - * single- or double-quoted string without terminating the string. - * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if - * unknown and thus to be estimated when necessary. Default: null. - * @return {!soydata.SanitizedJsStrChars} Sanitized content wrapper that - * indicates to Soy not to escape when printed in a JS string. - */ -soydata.VERY_UNSAFE.ordainSanitizedJsStrChars = - soydata.$$makeSanitizedContentFactory_(soydata.SanitizedJsStrChars); - - -/** - * Takes a leap of faith that the provided content is "safe" to use as a URI - * in a Soy template. - * - * This creates a Soy SanitizedContent object which indicates to Soy there is - * no need to escape it when printed as a URI (e.g. in an href or src - * attribute), such as if it's already been encoded or if it's a Javascript: - * URI. - * - * @param {*} content A chunk of URI that the caller knows is safe to - * emit in a template. - * @return {!soydata.SanitizedUri} Sanitized content wrapper that indicates to - * Soy not to escape or filter when printed in URI context. - */ -soydata.VERY_UNSAFE.ordainSanitizedUri = - soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_( - soydata.SanitizedUri); - - -/** - * Takes a leap of faith that the provided content is "safe" to use as an - * HTML attribute. - * - * @param {*} content An attribute name and value, such as - * {@code dir="ltr"}. - * @return {!soydata.SanitizedHtmlAttribute} Sanitized content wrapper that - * indicates to Soy not to escape when printed as an HTML attribute. - */ -soydata.VERY_UNSAFE.ordainSanitizedHtmlAttribute = - soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_( - soydata.SanitizedHtmlAttribute); - - -/** - * Takes a leap of faith that the provided content is "safe" to use as CSS - * in a style attribute or block. - * - * @param {*} content CSS, such as {@code color:#c3d9ff}. - * @return {!soydata.SanitizedCss} Sanitized CSS wrapper that indicates to - * Soy there is no need to escape or filter when printed in CSS context. - */ -soydata.VERY_UNSAFE.ordainSanitizedCss = - soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_( - soydata.SanitizedCss); - - -// ----------------------------------------------------------------------------- -// Public utilities. - - -/** - * Helper function to render a Soy template and then set the output string as - * the innerHTML of an element. It is recommended to use this helper function - * instead of directly setting innerHTML in your hand-written code, so that it - * will be easier to audit the code for cross-site scripting vulnerabilities. - * - * NOTE: New code should consider using goog.soy.renderElement instead. - * - * @param {Element} element The element whose content we are rendering. - * @param {Function} template The Soy template defining the element's content. - * @param {Object=} opt_templateData The data for the template. - * @param {Object=} opt_injectedData The injected data for the template. - */ -soy.renderElement = goog.soy.renderElement; - - -/** - * Helper function to render a Soy template into a single node or a document - * fragment. If the rendered HTML string represents a single node, then that - * node is returned (note that this is *not* a fragment, despite them name of - * the method). Otherwise a document fragment is returned containing the - * rendered nodes. - * - * NOTE: New code should consider using goog.soy.renderAsFragment - * instead (note that the arguments are different). - * - * @param {Function} template The Soy template defining the element's content. - * @param {Object=} opt_templateData The data for the template. - * @param {Document=} opt_document The document used to create DOM nodes. If not - * specified, global document object is used. - * @param {Object=} opt_injectedData The injected data for the template. - * @return {!Node} The resulting node or document fragment. - */ -soy.renderAsFragment = function( - template, opt_templateData, opt_document, opt_injectedData) { - return goog.soy.renderAsFragment( - template, opt_templateData, opt_injectedData, - new goog.dom.DomHelper(opt_document)); -}; - - -/** - * Helper function to render a Soy template into a single node. If the rendered - * HTML string represents a single node, then that node is returned. Otherwise, - * a DIV element is returned containing the rendered nodes. - * - * NOTE: New code should consider using goog.soy.renderAsElement - * instead (note that the arguments are different). - * - * @param {Function} template The Soy template defining the element's content. - * @param {Object=} opt_templateData The data for the template. - * @param {Document=} opt_document The document used to create DOM nodes. If not - * specified, global document object is used. - * @param {Object=} opt_injectedData The injected data for the template. - * @return {!Element} Rendered template contents, wrapped in a parent DIV - * element if necessary. - */ -soy.renderAsElement = function( - template, opt_templateData, opt_document, opt_injectedData) { - return goog.soy.renderAsElement( - template, opt_templateData, opt_injectedData, - new goog.dom.DomHelper(opt_document)); -}; - - -// ----------------------------------------------------------------------------- -// Below are private utilities to be used by Soy-generated code only. - - -/** - * Whether the locale is right-to-left. - * - * @type {boolean} - */ -soy.$$IS_LOCALE_RTL = goog.i18n.bidi.IS_RTL; - - -/** - * Builds an augmented map. The returned map will contain mappings from both - * the base map and the additional map. If the same key appears in both, then - * the value from the additional map will be visible, while the value from the - * base map will be hidden. The base map will be used, but not modified. - * - * @param {!Object} baseMap The original map to augment. - * @param {!Object} additionalMap A map containing the additional mappings. - * @return {!Object} An augmented map containing both the original and - * additional mappings. - */ -soy.$$augmentMap = function(baseMap, additionalMap) { - - // Create a new map whose '__proto__' field is set to baseMap. - /** @constructor */ - function TempCtor() {} - TempCtor.prototype = baseMap; - var augmentedMap = new TempCtor(); - - // Add the additional mappings to the new map. - for (var key in additionalMap) { - augmentedMap[key] = additionalMap[key]; - } - - return augmentedMap; -}; - - -/** - * Checks that the given map key is a string. - * @param {*} key Key to check. - * @return {string} The given key. - */ -soy.$$checkMapKey = function(key) { - // TODO: Support map literal with nonstring key. - if ((typeof key) != 'string') { - throw Error( - 'Map literal\'s key expression must evaluate to string' + - ' (encountered type "' + (typeof key) + '").'); - } - return key; -}; - - -/** - * Gets the keys in a map as an array. There are no guarantees on the order. - * @param {Object} map The map to get the keys of. - * @return {Array} The array of keys in the given map. - */ -soy.$$getMapKeys = function(map) { - var mapKeys = []; - for (var key in map) { - mapKeys.push(key); - } - return mapKeys; -}; - - -/** - * Gets a consistent unique id for the given delegate template name. Two calls - * to this function will return the same id if and only if the input names are - * the same. - * - *

Important: This function must always be called with a string constant. - * - *

If Closure Compiler is not being used, then this is just this identity - * function. If Closure Compiler is being used, then each call to this function - * will be replaced with a short string constant, which will be consistent per - * input name. - * - * @param {string} delTemplateName The delegate template name for which to get a - * consistent unique id. - * @return {string} A unique id that is consistent per input name. - * - * @consistentIdGenerator - */ -soy.$$getDelTemplateId = function(delTemplateName) { - return delTemplateName; -}; - - -/** - * Map from registered delegate template key to the priority of the - * implementation. - * @type {Object} - * @private - */ -soy.$$DELEGATE_REGISTRY_PRIORITIES_ = {}; - -/** - * Map from registered delegate template key to the implementation function. - * @type {Object} - * @private - */ -soy.$$DELEGATE_REGISTRY_FUNCTIONS_ = {}; - - -/** - * Registers a delegate implementation. If the same delegate template key (id - * and variant) has been registered previously, then priority values are - * compared and only the higher priority implementation is stored (if - * priorities are equal, an error is thrown). - * - * @param {string} delTemplateId The delegate template id. - * @param {string} delTemplateVariant The delegate template variant (can be - * empty string). - * @param {number} delPriority The implementation's priority value. - * @param {Function} delFn The implementation function. - */ -soy.$$registerDelegateFn = function( - delTemplateId, delTemplateVariant, delPriority, delFn) { - - var mapKey = 'key_' + delTemplateId + ':' + delTemplateVariant; - var currPriority = soy.$$DELEGATE_REGISTRY_PRIORITIES_[mapKey]; - if (currPriority === undefined || delPriority > currPriority) { - // Registering new or higher-priority function: replace registry entry. - soy.$$DELEGATE_REGISTRY_PRIORITIES_[mapKey] = delPriority; - soy.$$DELEGATE_REGISTRY_FUNCTIONS_[mapKey] = delFn; - } else if (delPriority == currPriority) { - // Registering same-priority function: error. - throw Error( - 'Encountered two active delegates with the same priority ("' + - delTemplateId + ':' + delTemplateVariant + '").'); - } else { - // Registering lower-priority function: do nothing. - } -}; - - -/** - * Retrieves the (highest-priority) implementation that has been registered for - * a given delegate template key (id and variant). If no implementation has - * been registered for the key, then the fallback is the same id with empty - * variant. If the fallback is also not registered, and allowsEmptyDefault is - * true, then returns an implementation that is equivalent to an empty template - * (i.e. rendered output would be empty string). - * - * @param {string} delTemplateId The delegate template id. - * @param {string|number} delTemplateVariant The delegate template variant (can - * be an empty string, or a number when a global is used). - * @param {boolean} allowsEmptyDefault Whether to default to the empty template - * function if there's no active implementation. - * @return {Function} The retrieved implementation function. - */ -soy.$$getDelegateFn = function( - delTemplateId, delTemplateVariant, allowsEmptyDefault) { - - var delFn = soy.$$DELEGATE_REGISTRY_FUNCTIONS_[ - 'key_' + delTemplateId + ':' + delTemplateVariant]; - if (! delFn && delTemplateVariant != '') { - // Fallback to empty variant. - delFn = soy.$$DELEGATE_REGISTRY_FUNCTIONS_['key_' + delTemplateId + ':']; - } - - if (delFn) { - return delFn; - } else if (allowsEmptyDefault) { - return soy.$$EMPTY_TEMPLATE_FN_; - } else { - throw Error( - 'Found no active impl for delegate call to "' + delTemplateId + ':' + - delTemplateVariant + '" (and not allowemptydefault="true").'); - } -}; - - -/** - * Private helper soy.$$getDelegateFn(). This is the empty template function - * that is returned whenever there's no delegate implementation found. - * - * @param {Object=} opt_data - * @param {soy.StringBuilder=} opt_sb - * @param {Object=} opt_ijData - * @return {string} - * @private - */ -soy.$$EMPTY_TEMPLATE_FN_ = function(opt_data, opt_sb, opt_ijData) { - return ''; -}; - - -// ----------------------------------------------------------------------------- -// Internal sanitized content wrappers. - - -/** - * Creates a SanitizedContent factory for SanitizedContent types for internal - * Soy let and param blocks. - * - * This is a hack within Soy so that SanitizedContent objects created via let - * and param blocks will truth-test as false if they are empty string. - * Tricking the Javascript runtime to treat empty SanitizedContent as falsey is - * not possible, and changing the Soy compiler to wrap every boolean statement - * for just this purpose is impractical. Instead, we just avoid wrapping empty - * string as SanitizedContent, since it's a no-op for empty strings anyways. - * - * @param {function(new: T)} ctor A constructor. - * @return {!function(*, ?goog.i18n.bidi.Dir=): (T|soydata.$$EMPTY_STRING_)} - * A factory that takes content and an optional content direction and - * returns a new instance, or an empty string. If the content direction is - * undefined, ctor.prototype.contentDir is used. - * @template T - * @private - */ -soydata.$$makeSanitizedContentFactoryForInternalBlocks_ = function(ctor) { - /** @type {function(new: goog.soy.data.SanitizedContent)} */ - function InstantiableCtor() {} - InstantiableCtor.prototype = ctor.prototype; - /** - * Creates a ctor-type SanitizedContent instance. - * - * @param {*} content The content to put in the instance. - * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction. If - * undefined, ctor.prototype.contentDir is used. - * @return {goog.soy.data.SanitizedContent|soydata.$$EMPTY_STRING_} The new - * instance, or an empty string. A new instance is actually of type T - * above (ctor's type, a descendant of SanitizedContent), but there's no - * way to express that here. - */ - function sanitizedContentFactory(content, opt_contentDir) { - var contentString = String(content); - if (!contentString) { - return soydata.$$EMPTY_STRING_.VALUE; - } - var result = new InstantiableCtor(); - result.content = String(content); - if (opt_contentDir !== undefined) { - result.contentDir = opt_contentDir; - } - return result; - } - return sanitizedContentFactory; -}; - - -/** - * Creates a SanitizedContent factory for SanitizedContent types that should - * always have their default directionality for internal Soy let and param - * blocks. - * - * This is a hack within Soy so that SanitizedContent objects created via let - * and param blocks will truth-test as false if they are empty string. - * Tricking the Javascript runtime to treat empty SanitizedContent as falsey is - * not possible, and changing the Soy compiler to wrap every boolean statement - * for just this purpose is impractical. Instead, we just avoid wrapping empty - * string as SanitizedContent, since it's a no-op for empty strings anyways. - * - * @param {function(new: T)} ctor A constructor. - * @return {!function(*): (T|soydata.$$EMPTY_STRING_)} A - * factory that takes content and returns a - * new instance (with default directionality, i.e. - * ctor.prototype.contentDir), or an empty string. - * @template T - * @private - */ -soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_ = - function(ctor) { - /** @type {function(new: goog.soy.data.SanitizedContent)} */ - function InstantiableCtor() {} - InstantiableCtor.prototype = ctor.prototype; - /** - * Creates a ctor-type SanitizedContent instance. - * - * @param {*} content The content to put in the instance. - * @return {goog.soy.data.SanitizedContent|soydata.$$EMPTY_STRING_} The new - * instance, or an empty string. A new instance is actually of type T - * above (ctor's type, a descendant of SanitizedContent), but there's no - * way to express that here. - */ - function sanitizedContentFactory(content) { - var contentString = String(content); - if (!contentString) { - return soydata.$$EMPTY_STRING_.VALUE; - } - var result = new InstantiableCtor(); - result.content = String(content); - return result; - } - return sanitizedContentFactory; -}; - - -/** - * Creates kind="text" block contents (internal use only). - * - * @param {*} content Text. - * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if - * unknown and thus to be estimated when necessary. Default: null. - * @return {!soydata.UnsanitizedText|soydata.$$EMPTY_STRING_} Wrapped result. - */ -soydata.$$markUnsanitizedTextForInternalBlocks = function( - content, opt_contentDir) { - var contentString = String(content); - if (!contentString) { - return soydata.$$EMPTY_STRING_.VALUE; - } - return new soydata.UnsanitizedText(contentString, opt_contentDir); -}; - - -/** - * Creates kind="html" block contents (internal use only). - * - * @param {*} content Text. - * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if - * unknown and thus to be estimated when necessary. Default: null. - * @return {soydata.SanitizedHtml|soydata.$$EMPTY_STRING_} Wrapped result. - */ -soydata.VERY_UNSAFE.$$ordainSanitizedHtmlForInternalBlocks = - soydata.$$makeSanitizedContentFactoryForInternalBlocks_( - soydata.SanitizedHtml); - - -/** - * Creates kind="js" block contents (internal use only). - * - * @param {*} content Text. - * @return {soydata.SanitizedJs|soydata.$$EMPTY_STRING_} Wrapped result. - */ -soydata.VERY_UNSAFE.$$ordainSanitizedJsForInternalBlocks = - soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_( - soydata.SanitizedJs); - - -/** - * Creates kind="uri" block contents (internal use only). - * - * @param {*} content Text. - * @return {soydata.SanitizedUri|soydata.$$EMPTY_STRING_} Wrapped result. - */ -soydata.VERY_UNSAFE.$$ordainSanitizedUriForInternalBlocks = - soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_( - soydata.SanitizedUri); - - -/** - * Creates kind="attributes" block contents (internal use only). - * - * @param {*} content Text. - * @return {soydata.SanitizedHtmlAttribute|soydata.$$EMPTY_STRING_} Wrapped - * result. - */ -soydata.VERY_UNSAFE.$$ordainSanitizedAttributesForInternalBlocks = - soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_( - soydata.SanitizedHtmlAttribute); - - -/** - * Creates kind="css" block contents (internal use only). - * - * @param {*} content Text. - * @return {soydata.SanitizedCss|soydata.$$EMPTY_STRING_} Wrapped result. - */ -soydata.VERY_UNSAFE.$$ordainSanitizedCssForInternalBlocks = - soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_( - soydata.SanitizedCss); - - -// ----------------------------------------------------------------------------- -// Escape/filter/normalize. - - -/** - * Returns a SanitizedHtml object for a particular value. The content direction - * is preserved. - * - * This HTML-escapes the value unless it is already SanitizedHtml. Escapes - * double quote '"' in addition to '&', '<', and '>' so that a string can be - * included in an HTML tag attribute value within double quotes. - * - * @param {*} value The value to convert. If it is already a SanitizedHtml - * object, it is left alone. - * @return {!soydata.SanitizedHtml} An escaped version of value. - */ -soy.$$escapeHtml = function(value) { - return soydata.SanitizedHtml.from(value); -}; - - -/** - * Strips unsafe tags to convert a string of untrusted HTML into HTML that - * is safe to embed. The content direction is preserved. - * - * @param {*} value The string-like value to be escaped. May not be a string, - * but the value will be coerced to a string. - * @return {!soydata.SanitizedHtml} A sanitized and normalized version of value. - */ -soy.$$cleanHtml = function(value) { - if (soydata.isContentKind(value, soydata.SanitizedContentKind.HTML)) { - goog.asserts.assert(value.constructor === soydata.SanitizedHtml); - return /** @type {!soydata.SanitizedHtml} */ (value); - } - return soydata.VERY_UNSAFE.ordainSanitizedHtml( - soy.$$stripHtmlTags(value, soy.esc.$$SAFE_TAG_ALLOWLIST_), - soydata.getContentDir(value)); -}; - - -/** - * Escapes HTML special characters in a string so that it can be embedded in - * RCDATA. - *

- * Escapes HTML special characters so that the value will not prematurely end - * the body of a tag like {@code }. - *

- * Will normalize known safe HTML to make sure that sanitized HTML (which could - * contain an innocuous {@code } don't prematurely end an RCDATA - * element. - * - * @param {*} value The string-like value to be escaped. May not be a string, - * but the value will be coerced to a string. - * @return {string} An escaped version of value. - */ -soy.$$escapeHtmlRcdata = function(value) { - if (soydata.isContentKind(value, soydata.SanitizedContentKind.HTML)) { - goog.asserts.assert(value.constructor === soydata.SanitizedHtml); - return soy.esc.$$normalizeHtmlHelper(value.content); - } - return soy.esc.$$escapeHtmlHelper(value); -}; - - -/** - * Matches any/only HTML5 void elements' start tags. - * See http://www.w3.org/TR/html-markup/syntax.html#syntax-elements - * @type {RegExp} - * @private - */ -soy.$$HTML5_VOID_ELEMENTS_ = new RegExp( - '^<(?:area|base|br|col|command|embed|hr|img|input' + - '|keygen|link|meta|param|source|track|wbr)\\b'); - - -/** - * Removes HTML tags from a string of known safe HTML. - * If opt_tagAllowlist is not specified or is empty, then - * the result can be used as an attribute value. - * - * @param {*} value The HTML to be escaped. May not be a string, but the - * value will be coerced to a string. - * @param {Object=} opt_tagAllowlist Has an own property whose - * name is a lower-case tag name and whose value is {@code 1} for - * each element that is allowed in the output. - * @return {string} A representation of value without disallowed tags, - * HTML comments, or other non-text content. - */ -soy.$$stripHtmlTags = function(value, opt_tagAllowlist) { - if (!opt_tagAllowlist) { - // If we have no allow-list, then use a fast track which elides all tags. - return String(value).replace(soy.esc.$$HTML_TAG_REGEX_, '') - // This is just paranoia since callers should normalize the result - // anyway, but if they didn't, it would be necessary to ensure that - // after the first replace non-tag uses of < do not recombine into - // tags as in "<script>alert(1337)script>". - .replace(soy.esc.$$LT_REGEX_, '<'); - } - - // Escapes '[' so that we can use [123] below to mark places where tags - // have been removed. - var html = String(value).replace(/\[/g, '['); - - // Consider all uses of '<' and replace allowlisted tags with markers like - // [1] which are indices into a list of approved tag names. - // Replace all other uses of < and > with entities. - var tags = []; - html = html.replace( - soy.esc.$$HTML_TAG_REGEX_, - function(tok, tagName) { - if (tagName) { - tagName = tagName.toLowerCase(); - if (opt_tagAllowlist.hasOwnProperty(tagName) && - opt_tagAllowlist[tagName]) { - var start = tok.charAt(1) === '/' ? ''; - return '[' + index + ']'; - } - } - return ''; - }); - - // Escape HTML special characters. Now there are no '<' in html that could - // start a tag. - html = soy.esc.$$normalizeHtmlHelper(html); - - var finalCloseTags = soy.$$balanceTags_(tags); - - // Now html contains no tags or less-than characters that could become - // part of a tag via a replacement operation and tags only contains - // approved tags. - // Reinsert the allow-listed tags. - html = html.replace( - /\[(\d+)\]/g, function(_, index) { return tags[index]; }); - - // Close any still open tags. - // This prevents unclosed formatting elements like

    and from - // breaking the layout of containing HTML. - return html + finalCloseTags; -}; - - -/** - * Throw out any close tags that don't correspond to start tags. - * If {@code
    } is used for formatting, embedded HTML shouldn't be able - * to use a mismatched {@code
    } to break page layout. - * - * @param {Array} tags an array of tags that will be modified in place - * include tags, the empty string, or concatenations of empty tags. - * @return {string} zero or more closed tags that close all elements that are - * opened in tags but not closed. - * @private - */ -soy.$$balanceTags_ = function(tags) { - var open = []; - for (var i = 0, n = tags.length; i < n; ++i) { - var tag = tags[i]; - if (tag.charAt(1) === '/') { - var openTagIndex = open.length - 1; - // NOTE: This is essentially lastIndexOf, but it's not supported in IE. - while (openTagIndex >= 0 && open[openTagIndex] != tag) { - openTagIndex--; - } - if (openTagIndex < 0) { - tags[i] = ''; // Drop close tag. - } else { - tags[i] = open.slice(openTagIndex).reverse().join(''); - open.length = openTagIndex; - } - } else if (!soy.$$HTML5_VOID_ELEMENTS_.test(tag)) { - open.push('Hello World - return soy.esc.$$filterHtmlElementNameHelper(value); -}; - - -/** - * Escapes characters in the value to make it valid content for a JS string - * literal. - * - * @param {*} value The value to escape. May not be a string, but the value - * will be coerced to a string. - * @return {string} An escaped version of value. - * @deprecated - */ -soy.$$escapeJs = function(value) { - return soy.$$escapeJsString(value); -}; - - -/** - * Escapes characters in the value to make it valid content for a JS string - * literal. - * - * @param {*} value The value to escape. May not be a string, but the value - * will be coerced to a string. - * @return {string} An escaped version of value. - */ -soy.$$escapeJsString = function(value) { - if (soydata.isContentKind(value, soydata.SanitizedContentKind.JS_STR_CHARS)) { - // TODO: It might still be worthwhile to normalize it to remove - // unescaped quotes, null, etc: replace(/(?:^|[^\])['"]/g, '\\$ - goog.asserts.assert(value.constructor === soydata.SanitizedJsStrChars); - return value.content; - } - return soy.esc.$$escapeJsStringHelper(value); -}; - - -/** - * Encodes a value as a JavaScript literal. - * - * @param {*} value The value to escape. May not be a string, but the value - * will be coerced to a string. - * @return {string} A JavaScript code representation of the input. - */ -soy.$$escapeJsValue = function(value) { - // We surround values with spaces so that they can't be interpolated into - // identifiers by accident. - // We could use parentheses but those might be interpreted as a function call. - if (value == null) { // Intentionally matches undefined. - // Java returns null from maps where there is no corresponding key while - // JS returns undefined. - // We always output null for compatibility with Java which does not have a - // distinct undefined value. - return ' null '; - } - if (soydata.isContentKind(value, soydata.SanitizedContentKind.JS)) { - goog.asserts.assert(value.constructor === soydata.SanitizedJs); - return value.content; - } - switch (typeof value) { - case 'boolean': case 'number': - return ' ' + value + ' '; - default: - return "'" + soy.esc.$$escapeJsStringHelper(String(value)) + "'"; - } -}; - - -/** - * Escapes characters in the string to make it valid content for a JS regular - * expression literal. - * - * @param {*} value The value to escape. May not be a string, but the value - * will be coerced to a string. - * @return {string} An escaped version of value. - */ -soy.$$escapeJsRegex = function(value) { - return soy.esc.$$escapeJsRegexHelper(value); -}; - - -/** - * Matches all URI mark characters that conflict with HTML attribute delimiters - * or that cannot appear in a CSS uri. - * From G.2: CSS grammar - *
    - *     url        ([!#$%&*-~]|{nonascii}|{escape})*
    - * 
    - * - * @type {RegExp} - * @private - */ -soy.$$problematicUriMarks_ = /['()]/g; - -/** - * @param {string} ch A single character in {@link soy.$$problematicUriMarks_}. - * @return {string} - * @private - */ -soy.$$pctEncode_ = function(ch) { - return '%' + ch.charCodeAt(0).toString(16); -}; - -/** - * Escapes a string so that it can be safely included in a URI. - * - * @param {*} value The value to escape. May not be a string, but the value - * will be coerced to a string. - * @return {string} An escaped version of value. - */ -soy.$$escapeUri = function(value) { - if (soydata.isContentKind(value, soydata.SanitizedContentKind.URI)) { - goog.asserts.assert(value.constructor === soydata.SanitizedUri); - return soy.$$normalizeUri(value); - } - // Apostophes and parentheses are not matched by encodeURIComponent. - // They are technically special in URIs, but only appear in the obsolete mark - // production in Appendix D.2 of RFC 3986, so can be encoded without changing - // semantics. - var encoded = soy.esc.$$escapeUriHelper(value); - soy.$$problematicUriMarks_.lastIndex = 0; - if (soy.$$problematicUriMarks_.test(encoded)) { - return encoded.replace(soy.$$problematicUriMarks_, soy.$$pctEncode_); - } - return encoded; -}; - - -/** - * Removes rough edges from a URI by escaping any raw HTML/JS string delimiters. - * - * @param {*} value The value to escape. May not be a string, but the value - * will be coerced to a string. - * @return {string} An escaped version of value. - */ -soy.$$normalizeUri = function(value) { - return soy.esc.$$normalizeUriHelper(value); -}; - - -/** - * Vets a URI's protocol and removes rough edges from a URI by escaping - * any raw HTML/JS string delimiters. - * - * @param {*} value The value to escape. May not be a string, but the value - * will be coerced to a string. - * @return {string} An escaped version of value. - */ -soy.$$filterNormalizeUri = function(value) { - if (soydata.isContentKind(value, soydata.SanitizedContentKind.URI)) { - goog.asserts.assert(value.constructor === soydata.SanitizedUri); - return soy.$$normalizeUri(value); - } - return soy.esc.$$filterNormalizeUriHelper(value); -}; - - -/** - * Allows only data-protocol image URI's. - * - * @param {*} value The value to process. May not be a string, but the value - * will be coerced to a string. - * @return {!soydata.SanitizedUri} An escaped version of value. - */ -soy.$$filterImageDataUri = function(value) { - // NOTE: Even if it's a SanitizedUri, we will still filter it. - return soydata.VERY_UNSAFE.ordainSanitizedUri( - soy.esc.$$filterImageDataUriHelper(value)); -}; - - -/** - * Escapes a string so it can safely be included inside a quoted CSS string. - * - * @param {*} value The value to escape. May not be a string, but the value - * will be coerced to a string. - * @return {string} An escaped version of value. - */ -soy.$$escapeCssString = function(value) { - return soy.esc.$$escapeCssStringHelper(value); -}; - - -/** - * Encodes a value as a CSS identifier part, keyword, or quantity. - * - * @param {*} value The value to escape. May not be a string, but the value - * will be coerced to a string. - * @return {string} A safe CSS identifier part, keyword, or quanitity. - */ -soy.$$filterCssValue = function(value) { - if (soydata.isContentKind(value, soydata.SanitizedContentKind.CSS)) { - goog.asserts.assert(value.constructor === soydata.SanitizedCss); - return value.content; - } - // Uses == to intentionally match null and undefined for Java compatibility. - if (value == null) { - return ''; - } - return soy.esc.$$filterCssValueHelper(value); -}; - - -/** - * Sanity-checks noAutoescape input for explicitly tainted content. - * - * SanitizedContentKind.TEXT is used to explicitly mark input that was never - * meant to be used unescaped. - * - * @param {*} value The value to filter. - * @return {*} The value, that we dearly hope will not cause an attack. - */ -soy.$$filterNoAutoescape = function(value) { - if (soydata.isContentKind(value, soydata.SanitizedContentKind.TEXT)) { - // Fail in development mode. - goog.asserts.fail( - 'Tainted SanitizedContentKind.TEXT for |noAutoescape: `%s`', - [value.content]); - // Return innocuous data in production. - return 'zSoyz'; - } - - return value; -}; - - -// ----------------------------------------------------------------------------- -// Basic directives/functions. - - -/** - * Converts \r\n, \r, and \n to
    s - * @param {*} value The string in which to convert newlines. - * @return {string|!soydata.SanitizedHtml} A copy of {@code value} with - * converted newlines. If {@code value} is SanitizedHtml, the return value - * is also SanitizedHtml, of the same known directionality. - */ -soy.$$changeNewlineToBr = function(value) { - var result = goog.string.newLineToBr(String(value), false); - if (soydata.isContentKind(value, soydata.SanitizedContentKind.HTML)) { - return soydata.VERY_UNSAFE.ordainSanitizedHtml( - result, soydata.getContentDir(value)); - } - return result; -}; - - -/** - * Inserts word breaks ('wbr' tags) into a HTML string at a given interval. The - * counter is reset if a space is encountered. Word breaks aren't inserted into - * HTML tags or entities. Entities count towards the character count; HTML tags - * do not. - * - * @param {*} value The HTML string to insert word breaks into. Can be other - * types, but the value will be coerced to a string. - * @param {number} maxCharsBetweenWordBreaks Maximum number of non-space - * characters to allow before adding a word break. - * @return {string|!soydata.SanitizedHtml} The string including word - * breaks. If {@code value} is SanitizedHtml, the return value - * is also SanitizedHtml, of the same known directionality. - */ -soy.$$insertWordBreaks = function(value, maxCharsBetweenWordBreaks) { - var result = goog.format.insertWordBreaks( - String(value), maxCharsBetweenWordBreaks); - if (soydata.isContentKind(value, soydata.SanitizedContentKind.HTML)) { - return soydata.VERY_UNSAFE.ordainSanitizedHtml( - result, soydata.getContentDir(value)); - } - return result; -}; - - -/** - * Truncates a string to a given max length (if it's currently longer), - * optionally adding ellipsis at the end. - * - * @param {*} str The string to truncate. Can be other types, but the value will - * be coerced to a string. - * @param {number} maxLen The maximum length of the string after truncation - * (including ellipsis, if applicable). - * @param {boolean} doAddEllipsis Whether to add ellipsis if the string needs - * truncation. - * @return {string} The string after truncation. - */ -soy.$$truncate = function(str, maxLen, doAddEllipsis) { - - str = String(str); - if (str.length <= maxLen) { - return str; // no need to truncate - } - - // If doAddEllipsis, either reduce maxLen to compensate, or else if maxLen is - // too small, just turn off doAddEllipsis. - if (doAddEllipsis) { - if (maxLen > 3) { - maxLen -= 3; - } else { - doAddEllipsis = false; - } - } - - // Make sure truncating at maxLen doesn't cut up a unicode surrogate pair. - if (soy.$$isHighSurrogate_(str.charAt(maxLen - 1)) && - soy.$$isLowSurrogate_(str.charAt(maxLen))) { - maxLen -= 1; - } - - // Truncate. - str = str.substring(0, maxLen); - - // Add ellipsis. - if (doAddEllipsis) { - str += '...'; - } - - return str; -}; - -/** - * Private helper for $$truncate() to check whether a char is a high surrogate. - * @param {string} ch The char to check. - * @return {boolean} Whether the given char is a unicode high surrogate. - * @private - */ -soy.$$isHighSurrogate_ = function(ch) { - return 0xD800 <= ch && ch <= 0xDBFF; -}; - -/** - * Private helper for $$truncate() to check whether a char is a low surrogate. - * @param {string} ch The char to check. - * @return {boolean} Whether the given char is a unicode low surrogate. - * @private - */ -soy.$$isLowSurrogate_ = function(ch) { - return 0xDC00 <= ch && ch <= 0xDFFF; -}; - - -// ----------------------------------------------------------------------------- -// Bidi directives/functions. - - -/** - * Cache of bidi formatter by context directionality, so we don't keep on - * creating new objects. - * @type {!Object} - * @private - */ -soy.$$bidiFormatterCache_ = {}; - - -/** - * Returns cached bidi formatter for bidiGlobalDir, or creates a new one. - * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 - * if rtl, 0 if unknown. - * @return {goog.i18n.BidiFormatter} A formatter for bidiGlobalDir. - * @private - */ -soy.$$getBidiFormatterInstance_ = function(bidiGlobalDir) { - return soy.$$bidiFormatterCache_[bidiGlobalDir] || - (soy.$$bidiFormatterCache_[bidiGlobalDir] = - new goog.i18n.BidiFormatter(bidiGlobalDir)); -}; - - -/** - * Estimate the overall directionality of text. If opt_isHtml, makes sure to - * ignore the LTR nature of the mark-up and escapes in text, making the logic - * suitable for HTML and HTML-escaped text. - * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of - * estimating the directionality. - * - * @param {*} text The content whose directionality is to be estimated. - * @param {boolean=} opt_isHtml Whether text is HTML/HTML-escaped. - * Default: false. - * @return {number} 1 if text is LTR, -1 if it is RTL, and 0 if it is neutral. - */ -soy.$$bidiTextDir = function(text, opt_isHtml) { - var contentDir = soydata.getContentDir(text); - if (contentDir != null) { - return contentDir; - } - var isHtml = opt_isHtml || - soydata.isContentKind(text, soydata.SanitizedContentKind.HTML); - return goog.i18n.bidi.estimateDirection(text + '', isHtml); -}; - - -/** - * Returns 'dir="ltr"' or 'dir="rtl"', depending on text's estimated - * directionality, if it is not the same as bidiGlobalDir. - * Otherwise, returns the empty string. - * If opt_isHtml, makes sure to ignore the LTR nature of the mark-up and escapes - * in text, making the logic suitable for HTML and HTML-escaped text. - * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of - * estimating the directionality. - * - * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 - * if rtl, 0 if unknown. - * @param {*} text The content whose directionality is to be estimated. - * @param {boolean=} opt_isHtml Whether text is HTML/HTML-escaped. - * Default: false. - * @return {soydata.SanitizedHtmlAttribute} 'dir="rtl"' for RTL text in non-RTL - * context; 'dir="ltr"' for LTR text in non-LTR context; - * else, the empty string. - */ -soy.$$bidiDirAttr = function(bidiGlobalDir, text, opt_isHtml) { - var formatter = soy.$$getBidiFormatterInstance_(bidiGlobalDir); - var contentDir = soydata.getContentDir(text); - if (contentDir == null) { - var isHtml = opt_isHtml || - soydata.isContentKind(text, soydata.SanitizedContentKind.HTML); - contentDir = goog.i18n.bidi.estimateDirection(text + '', isHtml); - } - return soydata.VERY_UNSAFE.ordainSanitizedHtmlAttribute( - formatter.knownDirAttr(contentDir)); -}; - - -/** - * Returns a Unicode BiDi mark matching bidiGlobalDir (LRM or RLM) if the - * directionality or the exit directionality of text are opposite to - * bidiGlobalDir. Otherwise returns the empty string. - * If opt_isHtml, makes sure to ignore the LTR nature of the mark-up and escapes - * in text, making the logic suitable for HTML and HTML-escaped text. - * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of - * estimating the directionality. - * - * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 - * if rtl, 0 if unknown. - * @param {*} text The content whose directionality is to be estimated. - * @param {boolean=} opt_isHtml Whether text is HTML/HTML-escaped. - * Default: false. - * @return {string} A Unicode bidi mark matching bidiGlobalDir, or the empty - * string when text's overall and exit directionalities both match - * bidiGlobalDir, or bidiGlobalDir is 0 (unknown). - */ -soy.$$bidiMarkAfter = function(bidiGlobalDir, text, opt_isHtml) { - var formatter = soy.$$getBidiFormatterInstance_(bidiGlobalDir); - var isHtml = opt_isHtml || - soydata.isContentKind(text, soydata.SanitizedContentKind.HTML); - return formatter.markAfterKnownDir(soydata.getContentDir(text), text + '', - isHtml); -}; - - -/** - * Returns text wrapped in a according to its - * directionality - but only if that is neither neutral nor the same as the - * global context. Otherwise, returns text unchanged. - * Always treats text as HTML/HTML-escaped, i.e. ignores mark-up and escapes - * when estimating text's directionality. - * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of - * estimating the directionality. - * - * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 - * if rtl, 0 if unknown. - * @param {*} text The string to be wrapped. Can be other types, but the value - * will be coerced to a string. - * @return {!goog.soy.data.SanitizedContent|string} The wrapped text. - */ -soy.$$bidiSpanWrap = function(bidiGlobalDir, text) { - var formatter = soy.$$getBidiFormatterInstance_(bidiGlobalDir); - - // We always treat the value as HTML, because span-wrapping is only useful - // when its output will be treated as HTML (without escaping), and because - // |bidiSpanWrap is not itself specified to do HTML escaping in Soy. (Both - // explicit and automatic HTML escaping, if any, is done before calling - // |bidiSpanWrap because the BidiSpanWrapDirective Java class implements - // SanitizedContentOperator, but this does not mean that the input has to be - // HTML SanitizedContent. In legacy usage, a string that is not - // SanitizedContent is often printed in an autoescape="false" template or by - // a print with a |noAutoescape, in which case our input is just SoyData.) If - // the output will be treated as HTML, the input had better be safe - // HTML/HTML-escaped (even if it isn't HTML SanitizedData), or we have an XSS - // opportunity and a much bigger problem than bidi garbling. - var wrappedText = formatter.spanWrapWithKnownDir( - soydata.getContentDir(text), text + '', true /* opt_isHtml */); - - // Like other directives whose Java class implements SanitizedContentOperator, - // |bidiSpanWrap is called after the escaping (if any) has already been done, - // and thus there is no need for it to produce actual SanitizedContent. - return wrappedText; -}; - - -/** - * Returns text wrapped in Unicode BiDi formatting characters according to its - * directionality, i.e. either LRE or RLE at the beginning and PDF at the end - - * but only if text's directionality is neither neutral nor the same as the - * global context. Otherwise, returns text unchanged. - * Only treats soydata.SanitizedHtml as HTML/HTML-escaped, i.e. ignores mark-up - * and escapes when estimating text's directionality. - * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of - * estimating the directionality. - * - * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 - * if rtl, 0 if unknown. - * @param {*} text The string to be wrapped. Can be other types, but the value - * will be coerced to a string. - * @return {!goog.soy.data.SanitizedContent|string} The wrapped string. - */ -soy.$$bidiUnicodeWrap = function(bidiGlobalDir, text) { - var formatter = soy.$$getBidiFormatterInstance_(bidiGlobalDir); - - // We treat the value as HTML if and only if it says it's HTML, even though in - // legacy usage, we sometimes have an HTML string (not SanitizedContent) that - // is passed to an autoescape="false" template or a {print $foo|noAutoescape}, - // with the output going into an HTML context without escaping. We simply have - // no way of knowing if this is what is happening when we get - // non-SanitizedContent input, and most of the time it isn't. - var isHtml = soydata.isContentKind(text, soydata.SanitizedContentKind.HTML); - var wrappedText = formatter.unicodeWrapWithKnownDir( - soydata.getContentDir(text), text + '', isHtml); - - // Bidi-wrapping a value converts it to the context directionality. Since it - // does not cost us anything, we will indicate this known direction in the - // output SanitizedContent, even though the intended consumer of that - // information - a bidi wrapping directive - has already been run. - var wrappedTextDir = formatter.getContextDir(); - - // Unicode-wrapping UnsanitizedText gives UnsanitizedText. - // Unicode-wrapping safe HTML or JS string data gives valid, safe HTML or JS - // string data. - // ATTENTION: Do these need to be ...ForInternalBlocks()? - if (soydata.isContentKind(text, soydata.SanitizedContentKind.TEXT)) { - return new soydata.UnsanitizedText(wrappedText, wrappedTextDir); - } - if (isHtml) { - return soydata.VERY_UNSAFE.ordainSanitizedHtml(wrappedText, wrappedTextDir); - } - if (soydata.isContentKind(text, soydata.SanitizedContentKind.JS_STR_CHARS)) { - return soydata.VERY_UNSAFE.ordainSanitizedJsStrChars( - wrappedText, wrappedTextDir); - } - - // Unicode-wrapping does not conform to the syntax of the other types of - // content. For lack of anything better to do, we we do not declare a content - // kind at all by falling through to the non-SanitizedContent case below. - // TODO(user): Consider throwing a runtime error on receipt of - // SanitizedContent other than TEXT, HTML, or JS_STR_CHARS. - - // The input was not SanitizedContent, so our output isn't SanitizedContent - // either. - return wrappedText; -}; - - -// ----------------------------------------------------------------------------- -// Generated code. - - - - - - - - -// START GENERATED CODE FOR ESCAPERS. - -/** - * @type {function (*) : string} - */ -soy.esc.$$escapeUriHelper = function(v) { - return encodeURIComponent(String(v)); -}; - -/** - * Maps characters to the escaped versions for the named escape directives. - * @type {Object} - * @private - */ -soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_ = { - '\x00': '\x26#0;', - '\x22': '\x26quot;', - '\x26': '\x26amp;', - '\x27': '\x26#39;', - '\x3c': '\x26lt;', - '\x3e': '\x26gt;', - '\x09': '\x26#9;', - '\x0a': '\x26#10;', - '\x0b': '\x26#11;', - '\x0c': '\x26#12;', - '\x0d': '\x26#13;', - ' ': '\x26#32;', - '-': '\x26#45;', - '\/': '\x26#47;', - '\x3d': '\x26#61;', - '`': '\x26#96;', - '\x85': '\x26#133;', - '\xa0': '\x26#160;', - '\u2028': '\x26#8232;', - '\u2029': '\x26#8233;' -}; - -/** - * A function that can be used with String.replace. - * @param {string} ch A single character matched by a compatible matcher. - * @return {string} A token in the output language. - * @private - */ -soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_ = function(ch) { - return soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_[ch]; -}; - -/** - * Maps characters to the escaped versions for the named escape directives. - * @type {Object} - * @private - */ -soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_ = { - '\x00': '\\x00', - '\x08': '\\x08', - '\x09': '\\t', - '\x0a': '\\n', - '\x0b': '\\x0b', - '\x0c': '\\f', - '\x0d': '\\r', - '\x22': '\\x22', - '\x26': '\\x26', - '\x27': '\\x27', - '\/': '\\\/', - '\x3c': '\\x3c', - '\x3d': '\\x3d', - '\x3e': '\\x3e', - '\\': '\\\\', - '\x85': '\\x85', - '\u2028': '\\u2028', - '\u2029': '\\u2029', - '$': '\\x24', - '(': '\\x28', - ')': '\\x29', - '*': '\\x2a', - '+': '\\x2b', - ',': '\\x2c', - '-': '\\x2d', - '.': '\\x2e', - ':': '\\x3a', - '?': '\\x3f', - '[': '\\x5b', - ']': '\\x5d', - '^': '\\x5e', - '{': '\\x7b', - '|': '\\x7c', - '}': '\\x7d' -}; - -/** - * A function that can be used with String.replace. - * @param {string} ch A single character matched by a compatible matcher. - * @return {string} A token in the output language. - * @private - */ -soy.esc.$$REPLACER_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_ = function(ch) { - return soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_[ch]; -}; - -/** - * Maps characters to the escaped versions for the named escape directives. - * @type {Object} - * @private - */ -soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_CSS_STRING_ = { - '\x00': '\\0 ', - '\x08': '\\8 ', - '\x09': '\\9 ', - '\x0a': '\\a ', - '\x0b': '\\b ', - '\x0c': '\\c ', - '\x0d': '\\d ', - '\x22': '\\22 ', - '\x26': '\\26 ', - '\x27': '\\27 ', - '(': '\\28 ', - ')': '\\29 ', - '*': '\\2a ', - '\/': '\\2f ', - ':': '\\3a ', - ';': '\\3b ', - '\x3c': '\\3c ', - '\x3d': '\\3d ', - '\x3e': '\\3e ', - '@': '\\40 ', - '\\': '\\5c ', - '{': '\\7b ', - '}': '\\7d ', - '\x85': '\\85 ', - '\xa0': '\\a0 ', - '\u2028': '\\2028 ', - '\u2029': '\\2029 ' -}; - -/** - * A function that can be used with String.replace. - * @param {string} ch A single character matched by a compatible matcher. - * @return {string} A token in the output language. - * @private - */ -soy.esc.$$REPLACER_FOR_ESCAPE_CSS_STRING_ = function(ch) { - return soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_CSS_STRING_[ch]; -}; - -/** - * Maps characters to the escaped versions for the named escape directives. - * @type {Object} - * @private - */ -soy.esc.$$ESCAPE_MAP_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_ = { - '\x00': '%00', - '\x01': '%01', - '\x02': '%02', - '\x03': '%03', - '\x04': '%04', - '\x05': '%05', - '\x06': '%06', - '\x07': '%07', - '\x08': '%08', - '\x09': '%09', - '\x0a': '%0A', - '\x0b': '%0B', - '\x0c': '%0C', - '\x0d': '%0D', - '\x0e': '%0E', - '\x0f': '%0F', - '\x10': '%10', - '\x11': '%11', - '\x12': '%12', - '\x13': '%13', - '\x14': '%14', - '\x15': '%15', - '\x16': '%16', - '\x17': '%17', - '\x18': '%18', - '\x19': '%19', - '\x1a': '%1A', - '\x1b': '%1B', - '\x1c': '%1C', - '\x1d': '%1D', - '\x1e': '%1E', - '\x1f': '%1F', - ' ': '%20', - '\x22': '%22', - '\x27': '%27', - '(': '%28', - ')': '%29', - '\x3c': '%3C', - '\x3e': '%3E', - '\\': '%5C', - '{': '%7B', - '}': '%7D', - '\x7f': '%7F', - '\x85': '%C2%85', - '\xa0': '%C2%A0', - '\u2028': '%E2%80%A8', - '\u2029': '%E2%80%A9', - '\uff01': '%EF%BC%81', - '\uff03': '%EF%BC%83', - '\uff04': '%EF%BC%84', - '\uff06': '%EF%BC%86', - '\uff07': '%EF%BC%87', - '\uff08': '%EF%BC%88', - '\uff09': '%EF%BC%89', - '\uff0a': '%EF%BC%8A', - '\uff0b': '%EF%BC%8B', - '\uff0c': '%EF%BC%8C', - '\uff0f': '%EF%BC%8F', - '\uff1a': '%EF%BC%9A', - '\uff1b': '%EF%BC%9B', - '\uff1d': '%EF%BC%9D', - '\uff1f': '%EF%BC%9F', - '\uff20': '%EF%BC%A0', - '\uff3b': '%EF%BC%BB', - '\uff3d': '%EF%BC%BD' -}; - -/** - * A function that can be used with String.replace. - * @param {string} ch A single character matched by a compatible matcher. - * @return {string} A token in the output language. - * @private - */ -soy.esc.$$REPLACER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_ = function(ch) { - return soy.esc.$$ESCAPE_MAP_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_[ch]; -}; - -/** - * Matches characters that need to be escaped for the named directives. - * @type RegExp - * @private - */ -soy.esc.$$MATCHER_FOR_ESCAPE_HTML_ = /[\x00\x22\x26\x27\x3c\x3e]/g; - -/** - * Matches characters that need to be escaped for the named directives. - * @type RegExp - * @private - */ -soy.esc.$$MATCHER_FOR_NORMALIZE_HTML_ = /[\x00\x22\x27\x3c\x3e]/g; - -/** - * Matches characters that need to be escaped for the named directives. - * @type RegExp - * @private - */ -soy.esc.$$MATCHER_FOR_ESCAPE_HTML_NOSPACE_ = /[\x00\x09-\x0d \x22\x26\x27\x2d\/\x3c-\x3e`\x85\xa0\u2028\u2029]/g; - -/** - * Matches characters that need to be escaped for the named directives. - * @type RegExp - * @private - */ -soy.esc.$$MATCHER_FOR_NORMALIZE_HTML_NOSPACE_ = /[\x00\x09-\x0d \x22\x27\x2d\/\x3c-\x3e`\x85\xa0\u2028\u2029]/g; - -/** - * Matches characters that need to be escaped for the named directives. - * @type RegExp - * @private - */ -soy.esc.$$MATCHER_FOR_ESCAPE_JS_STRING_ = /[\x00\x08-\x0d\x22\x26\x27\/\x3c-\x3e\\\x85\u2028\u2029]/g; - -/** - * Matches characters that need to be escaped for the named directives. - * @type RegExp - * @private - */ -soy.esc.$$MATCHER_FOR_ESCAPE_JS_REGEX_ = /[\x00\x08-\x0d\x22\x24\x26-\/\x3a\x3c-\x3f\x5b-\x5e\x7b-\x7d\x85\u2028\u2029]/g; - -/** - * Matches characters that need to be escaped for the named directives. - * @type RegExp - * @private - */ -soy.esc.$$MATCHER_FOR_ESCAPE_CSS_STRING_ = /[\x00\x08-\x0d\x22\x26-\x2a\/\x3a-\x3e@\\\x7b\x7d\x85\xa0\u2028\u2029]/g; - -/** - * Matches characters that need to be escaped for the named directives. - * @type RegExp - * @private - */ -soy.esc.$$MATCHER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_ = /[\x00- \x22\x27-\x29\x3c\x3e\\\x7b\x7d\x7f\x85\xa0\u2028\u2029\uff01\uff03\uff04\uff06-\uff0c\uff0f\uff1a\uff1b\uff1d\uff1f\uff20\uff3b\uff3d]/g; - -/** - * A pattern that vets values produced by the named directives. - * @type RegExp - * @private - */ -soy.esc.$$FILTER_FOR_FILTER_CSS_VALUE_ = /^(?!-*(?:expression|(?:moz-)?binding))(?:[.#]?-?(?:[_a-z0-9-]+)(?:-[_a-z0-9-]+)*-?|-?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)(?:[a-z]{1,2}|%)?|!important|)$/i; - -/** - * A pattern that vets values produced by the named directives. - * @type RegExp - * @private - */ -soy.esc.$$FILTER_FOR_FILTER_NORMALIZE_URI_ = /^(?:(?:https?|mailto):|[^&:\/?#]*(?:[\/?#]|$))/i; - -/** - * A pattern that vets values produced by the named directives. - * @type RegExp - * @private - */ -soy.esc.$$FILTER_FOR_FILTER_IMAGE_DATA_URI_ = /^data:image\/(?:bmp|gif|jpe?g|png|tiff|webp);base64,[a-z0-9+\/]+=*$/i; - -/** - * A pattern that vets values produced by the named directives. - * @type RegExp - * @private - */ -soy.esc.$$FILTER_FOR_FILTER_HTML_ATTRIBUTES_ = /^(?!style|on|action|archive|background|cite|classid|codebase|data|dsync|href|longdesc|src|usemap)(?:[a-z0-9_$:-]*)$/i; - -/** - * A pattern that vets values produced by the named directives. - * @type RegExp - * @private - */ -soy.esc.$$FILTER_FOR_FILTER_HTML_ELEMENT_NAME_ = /^(?!script|style|title|textarea|xmp|no)[a-z0-9_$:-]*$/i; - -/** - * A helper for the Soy directive |escapeHtml - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$escapeHtmlHelper = function(value) { - var str = String(value); - return str.replace( - soy.esc.$$MATCHER_FOR_ESCAPE_HTML_, - soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_); -}; - -/** - * A helper for the Soy directive |normalizeHtml - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$normalizeHtmlHelper = function(value) { - var str = String(value); - return str.replace( - soy.esc.$$MATCHER_FOR_NORMALIZE_HTML_, - soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_); -}; - -/** - * A helper for the Soy directive |escapeHtmlNospace - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$escapeHtmlNospaceHelper = function(value) { - var str = String(value); - return str.replace( - soy.esc.$$MATCHER_FOR_ESCAPE_HTML_NOSPACE_, - soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_); -}; - -/** - * A helper for the Soy directive |normalizeHtmlNospace - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$normalizeHtmlNospaceHelper = function(value) { - var str = String(value); - return str.replace( - soy.esc.$$MATCHER_FOR_NORMALIZE_HTML_NOSPACE_, - soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_); -}; - -/** - * A helper for the Soy directive |escapeJsString - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$escapeJsStringHelper = function(value) { - var str = String(value); - return str.replace( - soy.esc.$$MATCHER_FOR_ESCAPE_JS_STRING_, - soy.esc.$$REPLACER_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_); -}; - -/** - * A helper for the Soy directive |escapeJsRegex - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$escapeJsRegexHelper = function(value) { - var str = String(value); - return str.replace( - soy.esc.$$MATCHER_FOR_ESCAPE_JS_REGEX_, - soy.esc.$$REPLACER_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_); -}; - -/** - * A helper for the Soy directive |escapeCssString - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$escapeCssStringHelper = function(value) { - var str = String(value); - return str.replace( - soy.esc.$$MATCHER_FOR_ESCAPE_CSS_STRING_, - soy.esc.$$REPLACER_FOR_ESCAPE_CSS_STRING_); -}; - -/** - * A helper for the Soy directive |filterCssValue - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$filterCssValueHelper = function(value) { - var str = String(value); - if (!soy.esc.$$FILTER_FOR_FILTER_CSS_VALUE_.test(str)) { - return 'zSoyz'; - } - return str; -}; - -/** - * A helper for the Soy directive |normalizeUri - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$normalizeUriHelper = function(value) { - var str = String(value); - return str.replace( - soy.esc.$$MATCHER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_, - soy.esc.$$REPLACER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_); -}; - -/** - * A helper for the Soy directive |filterNormalizeUri - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$filterNormalizeUriHelper = function(value) { - var str = String(value); - if (!soy.esc.$$FILTER_FOR_FILTER_NORMALIZE_URI_.test(str)) { - return '#zSoyz'; - } - return str.replace( - soy.esc.$$MATCHER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_, - soy.esc.$$REPLACER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_); -}; - -/** - * A helper for the Soy directive |filterImageDataUri - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$filterImageDataUriHelper = function(value) { - var str = String(value); - if (!soy.esc.$$FILTER_FOR_FILTER_IMAGE_DATA_URI_.test(str)) { - return 'data:image/gif;base64,zSoyz'; - } - return str; -}; - -/** - * A helper for the Soy directive |filterHtmlAttributes - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$filterHtmlAttributesHelper = function(value) { - var str = String(value); - if (!soy.esc.$$FILTER_FOR_FILTER_HTML_ATTRIBUTES_.test(str)) { - return 'zSoyz'; - } - return str; -}; - -/** - * A helper for the Soy directive |filterHtmlElementName - * @param {*} value Can be of any type but will be coerced to a string. - * @return {string} The escaped text. - */ -soy.esc.$$filterHtmlElementNameHelper = function(value) { - var str = String(value); - if (!soy.esc.$$FILTER_FOR_FILTER_HTML_ELEMENT_NAME_.test(str)) { - return 'zSoyz'; - } - return str; -}; - -/** - * Matches all tags, HTML comments, and DOCTYPEs in tag soup HTML. - * By removing these, and replacing any '<' or '>' characters with - * entities we guarantee that the result can be embedded into a - * an attribute without introducing a tag boundary. - * - * @type {RegExp} - * @private - */ -soy.esc.$$HTML_TAG_REGEX_ = /<(?:!|\/?([a-zA-Z][a-zA-Z0-9:\-]*))(?:[^>'"]|"[^"]*"|'[^']*')*>/g; - -/** - * Matches all occurrences of '<'. - * - * @type {RegExp} - * @private - */ -soy.esc.$$LT_REGEX_ = /} - * @private - */ -soy.esc.$$SAFE_TAG_ALLOWLIST_ = {'b': 1, 'br': 1, 'em': 1, 'i': 1, 's': 1, 'sub': 1, 'sup': 1, 'u': 1}; - -// END GENERATED CODE +/** + * @license + * Copyright 2008 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview + * Utility functions and classes for Soy. + * + *

    + * The top portion of this file contains utilities for Soy users:

      + *
    • soy.StringBuilder: Compatible with the 'stringbuilder' code style. + *
    • soy.renderElement: Render template and set as innerHTML of an element. + *
    • soy.renderAsFragment: Render template and return as HTML fragment. + *
    + * + *

    + * The bottom portion of this file contains utilities that should only be called + * by Soy-generated JS code. Please do not use these functions directly from + * your hand-writen code. Their names all start with '$$'. + * + * @author Garrett Boyer + * @author Mike Samuel + * @author Kai Huang + * @author Aharon Lanin + */ + + +// COPIED FROM nogoog_shim.js + +// Create closure namespaces. +var goog = goog || {}; + + +goog.DEBUG = false; + + +goog.inherits = function(childCtor, parentCtor) { + /** @constructor */ + function tempCtor() {}; + tempCtor.prototype = parentCtor.prototype; + childCtor.superClass_ = parentCtor.prototype; + childCtor.prototype = new tempCtor(); + childCtor.prototype.constructor = childCtor; + + /** + * Calls superclass constructor/method. + * @param {!Object} me Should always be "this". + * @param {string} methodName + * @param {...*} var_args + * @return {?} The return value of the superclass method/constructor. + */ + childCtor.base = function(me, methodName, var_args) { + var args = Array.prototype.slice.call(arguments, 2); + return parentCtor.prototype[methodName].apply(me, args); + }; +}; + + +// Just enough browser detection for this file. +if (!goog.userAgent) { + goog.userAgent = (function() { + var userAgent = ""; + if ("undefined" !== typeof navigator && navigator + && "string" == typeof navigator.userAgent) { + userAgent = navigator.userAgent; + } + var isOpera = userAgent.indexOf('Opera') == 0; + return { + jscript: { + /** + * @type {boolean} + */ + HAS_JSCRIPT: 'ScriptEngine' in this + }, + /** + * @type {boolean} + */ + OPERA: isOpera, + /** + * @type {boolean} + */ + IE: !isOpera && userAgent.indexOf('MSIE') != -1, + /** + * @type {boolean} + */ + WEBKIT: !isOpera && userAgent.indexOf('WebKit') != -1 + }; + })(); +} + +if (!goog.asserts) { + goog.asserts = { + /** + * @param {*} condition Condition to check. + */ + assert: function (condition) { + if (!condition) { + throw Error('Assertion error'); + } + }, + /** + * @param {...*} var_args + */ + fail: function (var_args) {} + }; +} + + +// Stub out the document wrapper used by renderAs*. +if (!goog.dom) { + goog.dom = {}; + /** + * @param {Document=} d + * @constructor + */ + goog.dom.DomHelper = function(d) { + this.document_ = d || document; + }; + /** + * @return {!Document} + */ + goog.dom.DomHelper.prototype.getDocument = function() { + return this.document_; + }; + /** + * Creates a new element. + * @param {string} name Tag name. + * @return {!Element} + */ + goog.dom.DomHelper.prototype.createElement = function(name) { + return this.document_.createElement(name); + }; + /** + * Creates a new document fragment. + * @return {!DocumentFragment} + */ + goog.dom.DomHelper.prototype.createDocumentFragment = function() { + return this.document_.createDocumentFragment(); + }; +} + + +if (!goog.format) { + goog.format = { + insertWordBreaks: function(str, maxCharsBetweenWordBreaks) { + str = String(str); + + var resultArr = []; + var resultArrLen = 0; + + // These variables keep track of important state inside str. + var isInTag = false; // whether we're inside an HTML tag + var isMaybeInEntity = false; // whether we might be inside an HTML entity + var numCharsWithoutBreak = 0; // number of chars since last word break + var flushIndex = 0; // index of first char not yet flushed to resultArr + + for (var i = 0, n = str.length; i < n; ++i) { + var charCode = str.charCodeAt(i); + + // If hit maxCharsBetweenWordBreaks, and not space next, then add . + if (numCharsWithoutBreak >= maxCharsBetweenWordBreaks && + // space + charCode != 32) { + resultArr[resultArrLen++] = str.substring(flushIndex, i); + flushIndex = i; + resultArr[resultArrLen++] = goog.format.WORD_BREAK; + numCharsWithoutBreak = 0; + } + + if (isInTag) { + // If inside an HTML tag and we see '>', it's the end of the tag. + if (charCode == 62) { + isInTag = false; + } + + } else if (isMaybeInEntity) { + switch (charCode) { + // Inside an entity, a ';' is the end of the entity. + // The entity that just ended counts as one char, so increment + // numCharsWithoutBreak. + case 59: // ';' + isMaybeInEntity = false; + ++numCharsWithoutBreak; + break; + // If maybe inside an entity and we see '<', we weren't actually in + // an entity. But now we're inside and HTML tag. + case 60: // '<' + isMaybeInEntity = false; + isInTag = true; + break; + // If maybe inside an entity and we see ' ', we weren't actually in + // an entity. Just correct the state and reset the + // numCharsWithoutBreak since we just saw a space. + case 32: // ' ' + isMaybeInEntity = false; + numCharsWithoutBreak = 0; + break; + } + + } else { // !isInTag && !isInEntity + switch (charCode) { + // When not within a tag or an entity and we see '<', we're now + // inside an HTML tag. + case 60: // '<' + isInTag = true; + break; + // When not within a tag or an entity and we see '&', we might be + // inside an entity. + case 38: // '&' + isMaybeInEntity = true; + break; + // When we see a space, reset the numCharsWithoutBreak count. + case 32: // ' ' + numCharsWithoutBreak = 0; + break; + // When we see a non-space, increment the numCharsWithoutBreak. + default: + ++numCharsWithoutBreak; + break; + } + } + } + + // Flush the remaining chars at the end of the string. + resultArr[resultArrLen++] = str.substring(flushIndex); + + return resultArr.join(''); + }, + /** + * String inserted as a word break by insertWordBreaks(). Safari requires + * , Opera needs the ­ entity, though this will give a + * visible hyphen at breaks. IE8+ use a zero width space. Other browsers + * just use . + * @type {string} + * @private + */ + WORD_BREAK: + goog.userAgent.WEBKIT ? '' : + goog.userAgent.OPERA ? '­' : + goog.userAgent.IE ? '​' : + '' + }; +} + + +if (!goog.i18n) { + goog.i18n = { + bidi: {} + }; +} + + +/** + * Constant that defines whether or not the current locale is an RTL locale. + * + * @type {boolean} + */ +goog.i18n.bidi.IS_RTL = false; + + +/** + * Directionality enum. + * @enum {number} + */ +goog.i18n.bidi.Dir = { + /** + * Left-to-right. + */ + LTR: 1, + + /** + * Right-to-left. + */ + RTL: -1, + + /** + * Neither left-to-right nor right-to-left. + */ + NEUTRAL: 0, + + /** + * A historical misnomer for NEUTRAL. + * @deprecated For "neutral", use NEUTRAL; for "unknown", use null. + */ + UNKNOWN: 0 +}; + + +/** + * Convert a directionality given in various formats to a goog.i18n.bidi.Dir + * constant. Useful for interaction with different standards of directionality + * representation. + * + * @param {goog.i18n.bidi.Dir|number|boolean|null} givenDir Directionality given + * in one of the following formats: + * 1. A goog.i18n.bidi.Dir constant. + * 2. A number (positive = LTR, negative = RTL, 0 = neutral). + * 3. A boolean (true = RTL, false = LTR). + * 4. A null for unknown directionality. + * @param {boolean=} opt_noNeutral Whether a givenDir of zero or + * goog.i18n.bidi.Dir.NEUTRAL should be treated as null, i.e. unknown, in + * order to preserve legacy behavior. + * @return {?goog.i18n.bidi.Dir} A goog.i18n.bidi.Dir constant matching the + * given directionality. If given null, returns null (i.e. unknown). + */ +goog.i18n.bidi.toDir = function(givenDir, opt_noNeutral) { + if (typeof givenDir == 'number') { + // This includes the non-null goog.i18n.bidi.Dir case. + return givenDir > 0 ? goog.i18n.bidi.Dir.LTR : + givenDir < 0 ? goog.i18n.bidi.Dir.RTL : + opt_noNeutral ? null : goog.i18n.bidi.Dir.NEUTRAL; + } else if (givenDir == null) { + return null; + } else { + // Must be typeof givenDir == 'boolean'. + return givenDir ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR; + } +}; + + +/** + * Estimates the directionality of a string based on relative word counts. + * If the number of RTL words is above a certain percentage of the total number + * of strongly directional words, returns RTL. + * Otherwise, if any words are strongly or weakly LTR, returns LTR. + * Otherwise, returns NEUTRAL. + * Numbers are counted as weakly LTR. + * @param {string} str The string to be checked. + * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped. + * Default: false. + * @return {goog.i18n.bidi.Dir} Estimated overall directionality of {@code str}. + */ +goog.i18n.bidi.estimateDirection = function(str, opt_isHtml) { + var rtlCount = 0; + var totalCount = 0; + var hasWeaklyLtr = false; + var tokens = soyshim.$$bidiStripHtmlIfNecessary_(str, opt_isHtml). + split(soyshim.$$bidiWordSeparatorRe_); + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (soyshim.$$bidiRtlDirCheckRe_.test(token)) { + rtlCount++; + totalCount++; + } else if (soyshim.$$bidiIsRequiredLtrRe_.test(token)) { + hasWeaklyLtr = true; + } else if (soyshim.$$bidiLtrCharRe_.test(token)) { + totalCount++; + } else if (soyshim.$$bidiHasNumeralsRe_.test(token)) { + hasWeaklyLtr = true; + } + } + + return totalCount == 0 ? + (hasWeaklyLtr ? goog.i18n.bidi.Dir.LTR : goog.i18n.bidi.Dir.NEUTRAL) : + (rtlCount / totalCount > soyshim.$$bidiRtlDetectionThreshold_ ? + goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR); +}; + + +/** + * Utility class for formatting text for display in a potentially + * opposite-directionality context without garbling. Provides the following + * functionality: + * + * @param {goog.i18n.bidi.Dir|number|boolean|null} dir The context + * directionality, in one of the following formats: + * 1. A goog.i18n.bidi.Dir constant. NEUTRAL is treated the same as null, + * i.e. unknown, for backward compatibility with legacy calls. + * 2. A number (positive = LTR, negative = RTL, 0 = unknown). + * 3. A boolean (true = RTL, false = LTR). + * 4. A null for unknown directionality. + * @constructor + */ +goog.i18n.BidiFormatter = function(dir) { + /** + * The overall directionality of the context in which the formatter is being + * used. + * @type {?goog.i18n.bidi.Dir} + * @private + */ + this.dir_ = goog.i18n.bidi.toDir(dir, true /* opt_noNeutral */); +}; + +/** + * @return {?goog.i18n.bidi.Dir} The context directionality. + */ +goog.i18n.BidiFormatter.prototype.getContextDir = function() { + return this.dir_; +}; + +/** + * Returns 'dir="ltr"' or 'dir="rtl"', depending on the given directionality, if + * it is not the same as the context directionality. Otherwise, returns the + * empty string. + * + * @param {goog.i18n.bidi.Dir} dir A directionality. + * @return {string} 'dir="rtl"' for RTL text in non-RTL context; 'dir="ltr"' for + * LTR text in non-LTR context; else, the empty string. + */ +goog.i18n.BidiFormatter.prototype.knownDirAttr = function(dir) { + return !dir || dir == this.dir_ ? '' : dir < 0 ? 'dir="rtl"' : 'dir="ltr"'; +}; + +/** + * Returns the trailing horizontal edge, i.e. "right" or "left", depending on + * the global bidi directionality. + * @return {string} "left" for RTL context and "right" otherwise. + */ +goog.i18n.BidiFormatter.prototype.endEdge = function () { + return this.dir_ < 0 ? 'left' : 'right'; +}; + +/** + * Returns the Unicode BiDi mark matching the context directionality (LRM for + * LTR context directionality, RLM for RTL context directionality), or the + * empty string for unknown context directionality. + * + * @return {string} LRM for LTR context directionality and RLM for RTL context + * directionality. + */ +goog.i18n.BidiFormatter.prototype.mark = function () { + return ( + (this.dir_ > 0) ? '\u200E' /*LRM*/ : + (this.dir_ < 0) ? '\u200F' /*RLM*/ : + ''); +}; + +/** + * Returns a Unicode bidi mark matching the context directionality (LRM or RLM) + * if the directionality or the exit directionality of {@code text} are opposite + * to the context directionality. Otherwise returns the empty string. + * If opt_isHtml, makes sure to ignore the LTR nature of the mark-up and escapes + * in text, making the logic suitable for HTML and HTML-escaped text. + * @param {?goog.i18n.bidi.Dir} textDir {@code text}'s overall directionality, + * or null if unknown and needs to be estimated. + * @param {string} text The text whose directionality is to be estimated. + * @param {boolean=} opt_isHtml Whether text is HTML/HTML-escaped. + * Default: false. + * @return {string} A Unicode bidi mark matching the context directionality, or + * the empty string when either the context directionality is unknown or + * neither the text's overall nor its exit directionality is opposite to it. + */ +goog.i18n.BidiFormatter.prototype.markAfterKnownDir = function ( + textDir, text, opt_isHtml) { + if (textDir == null) { + textDir = goog.i18n.bidi.estimateDirection(text, opt_isHtml); + } + return ( + this.dir_ > 0 && (textDir < 0 || + soyshim.$$bidiIsRtlExitText_(text, opt_isHtml)) ? '\u200E' : // LRM + this.dir_ < 0 && (textDir > 0 || + soyshim.$$bidiIsLtrExitText_(text, opt_isHtml)) ? '\u200F' : // RLM + ''); +}; + +/** + * Formats an HTML string for use in HTML output of the context directionality, + * so an opposite-directionality string is neither garbled nor garbles what + * follows it. + * + * @param {?goog.i18n.bidi.Dir} textDir {@code str}'s overall directionality, or + * null if unknown and needs to be estimated. + * @param {string} str The input text (HTML or HTML-escaped). + * @param {boolean=} placeholder This argument exists for consistency with the + * Closure Library. Specifying it has no effect. + * @return {string} The input text after applying the above processing. + */ +goog.i18n.BidiFormatter.prototype.spanWrapWithKnownDir = function( + textDir, str, placeholder) { + if (textDir == null) { + textDir = goog.i18n.bidi.estimateDirection(str, true); + } + var reset = this.markAfterKnownDir(textDir, str, true); + if (textDir > 0 && this.dir_ <= 0) { + str = '' + str + ''; + } else if (textDir < 0 && this.dir_ >= 0) { + str = '' + str + ''; + } + return str + reset; +}; + +/** + * Returns the leading horizontal edge, i.e. "left" or "right", depending on + * the global bidi directionality. + * @return {string} "right" for RTL context and "left" otherwise. + */ +goog.i18n.BidiFormatter.prototype.startEdge = function () { + return this.dir_ < 0 ? 'right' : 'left'; +}; + +/** + * Formats an HTML-escaped string for use in HTML output of the context + * directionality, so an opposite-directionality string is neither garbled nor + * garbles what follows it. + * As opposed to {@link #spanWrapWithKnownDir}, this makes use of unicode bidi + * formatting characters. In HTML, it should only be used inside attribute + * values and elements that do not allow markup, e.g. an 'option' tag. + * + * @param {?goog.i18n.bidi.Dir} textDir {@code str}'s overall directionality, or + * null if unknown and needs to be estimated. + * @param {string} str The input text (HTML-escaped). + * @param {boolean=} opt_isHtml Whether {@code str} is HTML / HTML-escaped. + * Default: false. + * @return {string} The input text after applying the above processing. + */ +goog.i18n.BidiFormatter.prototype.unicodeWrapWithKnownDir = function( + textDir, str, opt_isHtml) { + if (textDir == null) { + textDir = goog.i18n.bidi.estimateDirection(str, opt_isHtml); + } + var reset = this.markAfterKnownDir(textDir, str, opt_isHtml); + if (textDir > 0 && this.dir_ <= 0) { + str = '\u202A' + str + '\u202C'; + } else if (textDir < 0 && this.dir_ >= 0) { + str = '\u202B' + str + '\u202C'; + } + return str + reset; +}; + + +if (!goog.string) { + goog.string = { + /** + * Converts \r\n, \r, and \n to
    s + * @param {*} str The string in which to convert newlines. + * @param {boolean=} opt_xml Whether to use XML compatible tags. + * @return {string} A copy of {@code str} with converted newlines. + */ + newLineToBr: function(str, opt_xml) { + + str = String(str); + + // This quick test helps in the case when there are no chars to replace, + // in the worst case this makes barely a difference to the time taken. + if (!goog.string.NEWLINE_TO_BR_RE_.test(str)) { + return str; + } + + return str.replace(/(\r\n|\r|\n)/g, opt_xml ? '
    ' : '
    '); + }, + urlEncode: encodeURIComponent, + /** + * Regular expression used within newlineToBr(). + * @type {RegExp} + * @private + */ + NEWLINE_TO_BR_RE_: /[\r\n]/ + }; +} + +/** + * Utility class to facilitate much faster string concatenation in IE, + * using Array.join() rather than the '+' operator. For other browsers + * we simply use the '+' operator. + * + * @param {Object|number|string|boolean=} opt_a1 Optional first initial item + * to append. + * @param {...Object|number|string|boolean} var_args Other initial items to + * append, e.g., new goog.string.StringBuffer('foo', 'bar'). + * @constructor + */ +goog.string.StringBuffer = function(opt_a1, var_args) { + /** + * Internal buffer for the string to be concatenated. + * @type {string|Array} + * @private + */ + this.buffer_ = goog.userAgent.jscript.HAS_JSCRIPT ? [] : ''; + + if (opt_a1 != null) { + this.append.apply(this, arguments); + } +}; + + +/** + * Length of internal buffer (faster than calling buffer_.length). + * Only used for IE. + * @type {number} + * @private + */ +goog.string.StringBuffer.prototype.bufferLength_ = 0; + +/** + * Appends one or more items to the string. + * + * Calling this with null, undefined, or empty arguments is an error. + * + * @param {Object|number|string|boolean} a1 Required first string. + * @param {Object|number|string|boolean=} opt_a2 Optional second string. + * @param {...Object|number|string|boolean} var_args Other items to append, + * e.g., sb.append('foo', 'bar', 'baz'). + * @return {goog.string.StringBuffer} This same StringBuilder object. + */ +goog.string.StringBuffer.prototype.append = function(a1, opt_a2, var_args) { + + if (goog.userAgent.jscript.HAS_JSCRIPT) { + if (opt_a2 == null) { // no second argument (note: undefined == null) + // Array assignment is 2x faster than Array push. Also, use a1 + // directly to avoid arguments instantiation, another 2x improvement. + this.buffer_[this.bufferLength_++] = a1; + } else { + var arr = /**@type {Array}*/(this.buffer_); + arr.push.apply(arr, arguments); + this.bufferLength_ = this.buffer_.length; + } + + } else { + + // Use a1 directly to avoid arguments instantiation for single-arg case. + this.buffer_ += a1; + if (opt_a2 != null) { // no second argument (note: undefined == null) + for (var i = 1; i < arguments.length; i++) { + this.buffer_ += arguments[i]; + } + } + } + + return this; +}; + + +/** + * Clears the string. + */ +goog.string.StringBuffer.prototype.clear = function() { + + if (goog.userAgent.jscript.HAS_JSCRIPT) { + this.buffer_.length = 0; // reuse array to avoid creating new object + this.bufferLength_ = 0; + + } else { + this.buffer_ = ''; + } +}; + + +/** + * Returns the concatenated string. + * + * @return {string} The concatenated string. + */ +goog.string.StringBuffer.prototype.toString = function() { + + if (goog.userAgent.jscript.HAS_JSCRIPT) { + var str = this.buffer_.join(''); + // Given a string with the entire contents, simplify the StringBuilder by + // setting its contents to only be this string, rather than many fragments. + this.clear(); + if (str) { + this.append(str); + } + return str; + + } else { + return /** @type {string} */ (this.buffer_); + } +}; + + +if (!goog.soy) goog.soy = { + /** + * Helper function to render a Soy template and then set the + * output string as the innerHTML of an element. It is recommended + * to use this helper function instead of directly setting + * innerHTML in your hand-written code, so that it will be easier + * to audit the code for cross-site scripting vulnerabilities. + * + * @param {Function} template The Soy template defining element's content. + * @param {Object=} opt_templateData The data for the template. + * @param {Object=} opt_injectedData The injected data for the template. + * @param {(goog.dom.DomHelper|Document)=} opt_dom The context in which DOM + * nodes will be created. + */ + renderAsElement: function( + template, opt_templateData, opt_injectedData, opt_dom) { + return /** @type {!Element} */ (soyshim.$$renderWithWrapper_( + template, opt_templateData, opt_dom, true /* asElement */, + opt_injectedData)); + }, + /** + * Helper function to render a Soy template into a single node or + * a document fragment. If the rendered HTML string represents a + * single node, then that node is returned (note that this is + * *not* a fragment, despite them name of the method). Otherwise a + * document fragment is returned containing the rendered nodes. + * + * @param {Function} template The Soy template defining element's content. + * @param {Object=} opt_templateData The data for the template. + * @param {Object=} opt_injectedData The injected data for the template. + * @param {(goog.dom.DomHelper|Document)=} opt_dom The context in which DOM + * nodes will be created. + * @return {!Node} The resulting node or document fragment. + */ + renderAsFragment: function( + template, opt_templateData, opt_injectedData, opt_dom) { + return soyshim.$$renderWithWrapper_( + template, opt_templateData, opt_dom, false /* asElement */, + opt_injectedData); + }, + /** + * Helper function to render a Soy template and then set the output string as + * the innerHTML of an element. It is recommended to use this helper function + * instead of directly setting innerHTML in your hand-written code, so that it + * will be easier to audit the code for cross-site scripting vulnerabilities. + * + * NOTE: New code should consider using goog.soy.renderElement instead. + * + * @param {Element} element The element whose content we are rendering. + * @param {Function} template The Soy template defining the element's content. + * @param {Object=} opt_templateData The data for the template. + * @param {Object=} opt_injectedData The injected data for the template. + */ + renderElement: function( + element, template, opt_templateData, opt_injectedData) { + element.innerHTML = template(opt_templateData, null, opt_injectedData); + }, + data: {} +}; + + +/** + * A type of textual content. + * + * This is an enum of type Object so that these values are unforgeable. + * + * @enum {!Object} + */ +goog.soy.data.SanitizedContentKind = { + + /** + * A snippet of HTML that does not start or end inside a tag, comment, entity, + * or DOCTYPE; and that does not contain any executable code + * (JS, {@code }s, etc.) from a different trust domain. + */ + HTML: goog.DEBUG ? {sanitizedContentKindHtml: true} : {}, + + /** + * Executable Javascript code or expression, safe for insertion in a + * script-tag or event handler context, known to be free of any + * attacker-controlled scripts. This can either be side-effect-free + * Javascript (such as JSON) or Javascript that's entirely under Google's + * control. + */ + JS: goog.DEBUG ? {sanitizedContentJsChars: true} : {}, + + /** + * A sequence of code units that can appear between quotes (either kind) in a + * JS program without causing a parse error, and without causing any side + * effects. + *

    + * The content should not contain unescaped quotes, newlines, or anything else + * that would cause parsing to fail or to cause a JS parser to finish the + * string its parsing inside the content. + *

    + * The content must also not end inside an escape sequence ; no partial octal + * escape sequences or odd number of '{@code \}'s at the end. + */ + JS_STR_CHARS: goog.DEBUG ? {sanitizedContentJsStrChars: true} : {}, + + /** A properly encoded portion of a URI. */ + URI: goog.DEBUG ? {sanitizedContentUri: true} : {}, + + /** + * Repeated attribute names and values. For example, + * {@code dir="ltr" foo="bar" onclick="trustedFunction()" checked}. + */ + ATTRIBUTES: goog.DEBUG ? {sanitizedContentHtmlAttribute: true} : {}, + + // TODO: Consider separating rules, declarations, and values into + // separate types, but for simplicity, we'll treat explicitly blessed + // SanitizedContent as allowed in all of these contexts. + /** + * A CSS3 declaration, property, value or group of semicolon separated + * declarations. + */ + CSS: goog.DEBUG ? {sanitizedContentCss: true} : {}, + + /** + * Unsanitized plain-text content. + * + * This is effectively the "null" entry of this enum, and is sometimes used + * to explicitly mark content that should never be used unescaped. Since any + * string is safe to use as text, being of ContentKind.TEXT makes no + * guarantees about its safety in any other context such as HTML. + */ + TEXT: goog.DEBUG ? {sanitizedContentKindText: true} : {} +}; + + + +/** + * A string-like object that carries a content-type and a content direction. + * + * IMPORTANT! Do not create these directly, nor instantiate the subclasses. + * Instead, use a trusted, centrally reviewed library as endorsed by your team + * to generate these objects. Otherwise, you risk accidentally creating + * SanitizedContent that is attacker-controlled and gets evaluated unescaped in + * templates. + * + * @constructor + */ +goog.soy.data.SanitizedContent = function() { + throw Error('Do not instantiate directly'); +}; + + +/** + * The context in which this content is safe from XSS attacks. + * @type {goog.soy.data.SanitizedContentKind} + */ +goog.soy.data.SanitizedContent.prototype.contentKind; + + +/** + * The content's direction; null if unknown and thus to be estimated when + * necessary. + * @type {?goog.i18n.bidi.Dir} + */ +goog.soy.data.SanitizedContent.prototype.contentDir = null; + + +/** + * The already-safe content. + * @type {string} + */ +goog.soy.data.SanitizedContent.prototype.content; + + +/** @override */ +goog.soy.data.SanitizedContent.prototype.toString = function() { + return this.content; +}; + + +var soy = { esc: {} }; +var soydata = {}; +soydata.VERY_UNSAFE = {}; +var soyshim = { $$DEFAULT_TEMPLATE_DATA_: {} }; +/** + * Helper function to render a Soy template into a single node or a document + * fragment. If the rendered HTML string represents a single node, then that + * node is returned. Otherwise a document fragment is created and returned + * (wrapped in a DIV element if #opt_singleNode is true). + * + * @param {Function} template The Soy template defining the element's content. + * @param {Object=} opt_templateData The data for the template. + * @param {(goog.dom.DomHelper|Document)=} opt_dom The context in which DOM + * nodes will be created. + * @param {boolean=} opt_asElement Whether to wrap the fragment in an + * element if the template does not render a single element. If true, + * result is always an Element. + * @param {Object=} opt_injectedData The injected data for the template. + * @return {!Node} The resulting node or document fragment. + * @private + */ +soyshim.$$renderWithWrapper_ = function( + template, opt_templateData, opt_dom, opt_asElement, opt_injectedData) { + + var dom = opt_dom || document; + var wrapper = dom.createElement('div'); + wrapper.innerHTML = template( + opt_templateData || soyshim.$$DEFAULT_TEMPLATE_DATA_, undefined, + opt_injectedData); + + // If the template renders as a single element, return it. + if (wrapper.childNodes.length == 1) { + var firstChild = wrapper.firstChild; + if (!opt_asElement || firstChild.nodeType == 1 /* Element */) { + return /** @type {!Node} */ (firstChild); + } + } + + // If we're forcing it to be a single element, return the wrapper DIV. + if (opt_asElement) { + return wrapper; + } + + // Otherwise, create and return a fragment. + var fragment = dom.createDocumentFragment(); + while (wrapper.firstChild) { + fragment.appendChild(wrapper.firstChild); + } + return fragment; +}; + + +/** + * Strips str of any HTML mark-up and escapes. Imprecise in several ways, but + * precision is not very important, since the result is only meant to be used + * for directionality detection. + * Based on goog.i18n.bidi.stripHtmlIfNeeded_(). + * @param {string} str The string to be stripped. + * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped. + * Default: false. + * @return {string} The stripped string. + * @private + */ +soyshim.$$bidiStripHtmlIfNecessary_ = function(str, opt_isHtml) { + return opt_isHtml ? str.replace(soyshim.$$BIDI_HTML_SKIP_RE_, '') : str; +}; + + +/** + * Simplified regular expression for am HTML tag (opening or closing) or an HTML + * escape - the things we want to skip over in order to ignore their ltr + * characters. + * Copied from goog.i18n.bidi.htmlSkipReg_. + * @type {RegExp} + * @private + */ +soyshim.$$BIDI_HTML_SKIP_RE_ = /<[^>]*>|&[^;]+;/g; + + +/** + * A practical pattern to identify strong LTR character. This pattern is not + * theoretically correct according to unicode standard. It is simplified for + * performance and small code size. + * Copied from goog.i18n.bidi.ltrChars_. + * @type {string} + * @private + */ +soyshim.$$bidiLtrChars_ = + 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-\u1FFF' + + '\u200E\u2C00-\uFB1C\uFE00-\uFE6F\uFEFD-\uFFFF'; + + +/** + * A practical pattern to identify strong RTL character. This pattern is not + * theoretically correct according to unicode standard. It is simplified for + * performance and small code size. + * Copied from goog.i18n.bidi.rtlChars_. + * @type {string} + * @private + */ +soyshim.$$bidiRtlChars_ = '\u0591-\u07FF\u200F\uFB1D-\uFDFF\uFE70-\uFEFC'; + + +/** + * Regular expressions to check if a piece of text is of RTL directionality + * on first character with strong directionality. + * Based on goog.i18n.bidi.rtlDirCheckRe_. + * @type {RegExp} + * @private + */ +soyshim.$$bidiRtlDirCheckRe_ = new RegExp( + '^[^' + soyshim.$$bidiLtrChars_ + ']*[' + soyshim.$$bidiRtlChars_ + ']'); + + +/** + * Regular expression to check for LTR characters. + * Based on goog.i18n.bidi.ltrCharReg_. + * @type {RegExp} + * @private + */ +soyshim.$$bidiLtrCharRe_ = new RegExp('[' + soyshim.$$bidiLtrChars_ + ']'); + + +/** + * Regular expression to check if a string looks like something that must + * always be LTR even in RTL text, e.g. a URL. When estimating the + * directionality of text containing these, we treat these as weakly LTR, + * like numbers. + * Copied from goog.i18n.bidi.isRequiredLtrRe_. + * @type {RegExp} + * @private + */ +soyshim.$$bidiIsRequiredLtrRe_ = /^http:\/\/.*/; + + +/** + * Regular expression to check if a string contains any numerals. Used to + * differentiate between completely neutral strings and those containing + * numbers, which are weakly LTR. + * Copied from goog.i18n.bidi.hasNumeralsRe_. + * @type {RegExp} + * @private + */ +soyshim.$$bidiHasNumeralsRe_ = /\d/; + + +/** + * Regular expression to split a string into "words" for directionality + * estimation based on relative word counts. + * Copied from goog.i18n.bidi.wordSeparatorRe_. + * @type {RegExp} + * @private + */ +soyshim.$$bidiWordSeparatorRe_ = /\s+/; + + +/** + * This constant controls threshold of rtl directionality. + * Copied from goog.i18n.bidi.rtlDetectionThreshold_. + * @type {number} + * @private + */ +soyshim.$$bidiRtlDetectionThreshold_ = 0.40; + +/** + * Regular expressions to check if the last strongly-directional character in a + * piece of text is LTR. + * Based on goog.i18n.bidi.ltrExitDirCheckRe_. + * @type {RegExp} + * @private + */ +soyshim.$$bidiLtrExitDirCheckRe_ = new RegExp( + '[' + soyshim.$$bidiLtrChars_ + '][^' + soyshim.$$bidiRtlChars_ + ']*$'); + + +/** + * Regular expressions to check if the last strongly-directional character in a + * piece of text is RTL. + * Based on goog.i18n.bidi.rtlExitDirCheckRe_. + * @type {RegExp} + * @private + */ +soyshim.$$bidiRtlExitDirCheckRe_ = new RegExp( + '[' + soyshim.$$bidiRtlChars_ + '][^' + soyshim.$$bidiLtrChars_ + ']*$'); + + +/** + * Check if the exit directionality a piece of text is LTR, i.e. if the last + * strongly-directional character in the string is LTR. + * Based on goog.i18n.bidi.endsWithLtr(). + * @param {string} str string being checked. + * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped. + * Default: false. + * @return {boolean} Whether LTR exit directionality was detected. + * @private + */ +soyshim.$$bidiIsLtrExitText_ = function(str, opt_isHtml) { + str = soyshim.$$bidiStripHtmlIfNecessary_(str, opt_isHtml); + return soyshim.$$bidiLtrExitDirCheckRe_.test(str); +}; + + +/** + * Check if the exit directionality a piece of text is RTL, i.e. if the last + * strongly-directional character in the string is RTL. + * Based on goog.i18n.bidi.endsWithRtl(). + * @param {string} str string being checked. + * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped. + * Default: false. + * @return {boolean} Whether RTL exit directionality was detected. + * @private + */ +soyshim.$$bidiIsRtlExitText_ = function(str, opt_isHtml) { + str = soyshim.$$bidiStripHtmlIfNecessary_(str, opt_isHtml); + return soyshim.$$bidiRtlExitDirCheckRe_.test(str); +}; + + +// ============================================================================= +// COPIED FROM soyutils_usegoog.js + + +// ----------------------------------------------------------------------------- +// StringBuilder (compatible with the 'stringbuilder' code style). + + +/** + * Utility class to facilitate much faster string concatenation in IE, + * using Array.join() rather than the '+' operator. For other browsers + * we simply use the '+' operator. + * + * @param {Object} var_args Initial items to append, + * e.g., new soy.StringBuilder('foo', 'bar'). + * @constructor + */ +soy.StringBuilder = goog.string.StringBuffer; + + +// ----------------------------------------------------------------------------- +// soydata: Defines typed strings, e.g. an HTML string {@code "ac"} is +// semantically distinct from the plain text string {@code "ac"} and smart +// templates can take that distinction into account. + +/** + * A type of textual content. + * + * This is an enum of type Object so that these values are unforgeable. + * + * @enum {!Object} + */ +soydata.SanitizedContentKind = goog.soy.data.SanitizedContentKind; + + +/** + * Checks whether a given value is of a given content kind. + * + * @param {*} value The value to be examined. + * @param {soydata.SanitizedContentKind} contentKind The desired content + * kind. + * @return {boolean} Whether the given value is of the given kind. + * @private + */ +soydata.isContentKind = function(value, contentKind) { + // TODO(user): This function should really include the assert on + // value.constructor that is currently sprinkled at most of the call sites. + // Unfortunately, that would require a (debug-mode-only) switch statement. + // TODO(user): Perhaps we should get rid of the contentKind property + // altogether and only at the constructor. + return value != null && value.contentKind === contentKind; +}; + + +/** + * Returns a given value's contentDir property, constrained to a + * goog.i18n.bidi.Dir value or null. Returns null if the value is null, + * undefined, a primitive or does not have a contentDir property, or the + * property's value is not 1 (for LTR), -1 (for RTL), or 0 (for neutral). + * + * @param {*} value The value whose contentDir property, if any, is to + * be returned. + * @return {?goog.i18n.bidi.Dir} The contentDir property. + */ +soydata.getContentDir = function(value) { + if (value != null) { + switch (value.contentDir) { + case goog.i18n.bidi.Dir.LTR: + return goog.i18n.bidi.Dir.LTR; + case goog.i18n.bidi.Dir.RTL: + return goog.i18n.bidi.Dir.RTL; + case goog.i18n.bidi.Dir.NEUTRAL: + return goog.i18n.bidi.Dir.NEUTRAL; + } + } + return null; +}; + + +/** + * Content of type {@link soydata.SanitizedContentKind.HTML}. + * + * The content is a string of HTML that can safely be embedded in a PCDATA + * context in your app. If you would be surprised to find that an HTML + * sanitizer produced {@code s} (e.g. it runs code or fetches bad URLs) and + * you wouldn't write a template that produces {@code s} on security or privacy + * grounds, then don't pass {@code s} here. The default content direction is + * unknown, i.e. to be estimated when necessary. + * + * @constructor + * @extends {goog.soy.data.SanitizedContent} + */ +soydata.SanitizedHtml = function() { + goog.soy.data.SanitizedContent.call(this); // Throws an exception. +}; +goog.inherits(soydata.SanitizedHtml, goog.soy.data.SanitizedContent); + +/** @override */ +soydata.SanitizedHtml.prototype.contentKind = soydata.SanitizedContentKind.HTML; + +/** + * Returns a SanitizedHtml object for a particular value. The content direction + * is preserved. + * + * This HTML-escapes the value unless it is already SanitizedHtml. + * + * @param {*} value The value to convert. If it is already a SanitizedHtml + * object, it is left alone. + * @return {!soydata.SanitizedHtml} A SanitizedHtml object derived from the + * stringified value. It is escaped unless the input is SanitizedHtml. + */ +soydata.SanitizedHtml.from = function(value) { + // The check is soydata.isContentKind() inlined for performance. + if (value != null && + value.contentKind === soydata.SanitizedContentKind.HTML) { + goog.asserts.assert(value.constructor === soydata.SanitizedHtml); + return /** @type {!soydata.SanitizedHtml} */ (value); + } + return soydata.VERY_UNSAFE.ordainSanitizedHtml( + soy.esc.$$escapeHtmlHelper(String(value)), soydata.getContentDir(value)); +}; + + +/** + * Content of type {@link soydata.SanitizedContentKind.JS}. + * + * The content is Javascript source that when evaluated does not execute any + * attacker-controlled scripts. The content direction is LTR. + * + * @constructor + * @extends {goog.soy.data.SanitizedContent} + */ +soydata.SanitizedJs = function() { + goog.soy.data.SanitizedContent.call(this); // Throws an exception. +}; +goog.inherits(soydata.SanitizedJs, goog.soy.data.SanitizedContent); + +/** @override */ +soydata.SanitizedJs.prototype.contentKind = + soydata.SanitizedContentKind.JS; + +/** @override */ +soydata.SanitizedJs.prototype.contentDir = goog.i18n.bidi.Dir.LTR; + + +/** + * Content of type {@link soydata.SanitizedContentKind.JS_STR_CHARS}. + * + * The content can be safely inserted as part of a single- or double-quoted + * string without terminating the string. The default content direction is + * unknown, i.e. to be estimated when necessary. + * + * @constructor + * @extends {goog.soy.data.SanitizedContent} + */ +soydata.SanitizedJsStrChars = function() { + goog.soy.data.SanitizedContent.call(this); // Throws an exception. +}; +goog.inherits(soydata.SanitizedJsStrChars, goog.soy.data.SanitizedContent); + +/** @override */ +soydata.SanitizedJsStrChars.prototype.contentKind = + soydata.SanitizedContentKind.JS_STR_CHARS; + +/** + * Content of type {@link soydata.SanitizedContentKind.URI}. + * + * The content is a URI chunk that the caller knows is safe to emit in a + * template. The content direction is LTR. + * + * @constructor + * @extends {goog.soy.data.SanitizedContent} + */ +soydata.SanitizedUri = function() { + goog.soy.data.SanitizedContent.call(this); // Throws an exception. +}; +goog.inherits(soydata.SanitizedUri, goog.soy.data.SanitizedContent); + +/** @override */ +soydata.SanitizedUri.prototype.contentKind = soydata.SanitizedContentKind.URI; + +/** @override */ +soydata.SanitizedUri.prototype.contentDir = goog.i18n.bidi.Dir.LTR; + + +/** + * Content of type {@link soydata.SanitizedContentKind.ATTRIBUTES}. + * + * The content should be safely embeddable within an open tag, such as a + * key="value" pair. The content direction is LTR. + * + * @constructor + * @extends {goog.soy.data.SanitizedContent} + */ +soydata.SanitizedHtmlAttribute = function() { + goog.soy.data.SanitizedContent.call(this); // Throws an exception. +}; +goog.inherits(soydata.SanitizedHtmlAttribute, goog.soy.data.SanitizedContent); + +/** @override */ +soydata.SanitizedHtmlAttribute.prototype.contentKind = + soydata.SanitizedContentKind.ATTRIBUTES; + +/** @override */ +soydata.SanitizedHtmlAttribute.prototype.contentDir = goog.i18n.bidi.Dir.LTR; + + +/** + * Content of type {@link soydata.SanitizedContentKind.CSS}. + * + * The content is non-attacker-exploitable CSS, such as {@code color:#c3d9ff}. + * The content direction is LTR. + * + * @constructor + * @extends {goog.soy.data.SanitizedContent} + */ +soydata.SanitizedCss = function() { + goog.soy.data.SanitizedContent.call(this); // Throws an exception. +}; +goog.inherits(soydata.SanitizedCss, goog.soy.data.SanitizedContent); + +/** @override */ +soydata.SanitizedCss.prototype.contentKind = + soydata.SanitizedContentKind.CSS; + +/** @override */ +soydata.SanitizedCss.prototype.contentDir = goog.i18n.bidi.Dir.LTR; + + +/** + * Unsanitized plain text string. + * + * While all strings are effectively safe to use as a plain text, there are no + * guarantees about safety in any other context such as HTML. This is + * sometimes used to mark that should never be used unescaped. + * + * @param {*} content Plain text with no guarantees. + * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if + * unknown and thus to be estimated when necessary. Default: null. + * @constructor + * @extends {goog.soy.data.SanitizedContent} + */ +soydata.UnsanitizedText = function(content, opt_contentDir) { + /** @override */ + this.content = String(content); + this.contentDir = opt_contentDir != null ? opt_contentDir : null; +}; +goog.inherits(soydata.UnsanitizedText, goog.soy.data.SanitizedContent); + +/** @override */ +soydata.UnsanitizedText.prototype.contentKind = + soydata.SanitizedContentKind.TEXT; + + +/** + * Empty string, used as a type in Soy templates. + * @enum {string} + * @private + */ +soydata.$$EMPTY_STRING_ = { + VALUE: '' +}; + + +/** + * Creates a factory for SanitizedContent types. + * + * This is a hack so that the soydata.VERY_UNSAFE.ordainSanitized* can + * instantiate Sanitized* classes, without making the Sanitized* constructors + * publicly usable. Requiring all construction to use the VERY_UNSAFE names + * helps callers and their reviewers easily tell that creating SanitizedContent + * is not always safe and calls for careful review. + * + * @param {function(new: T)} ctor A constructor. + * @return {!function(*, ?goog.i18n.bidi.Dir=): T} A factory that takes + * content and an optional content direction and returns a new instance. If + * the content direction is undefined, ctor.prototype.contentDir is used. + * @template T + * @private + */ +soydata.$$makeSanitizedContentFactory_ = function(ctor) { + /** @type {function(new: goog.soy.data.SanitizedContent)} */ + function InstantiableCtor() {} + InstantiableCtor.prototype = ctor.prototype; + /** + * Creates a ctor-type SanitizedContent instance. + * + * @param {*} content The content to put in the instance. + * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction. If + * undefined, ctor.prototype.contentDir is used. + * @return {goog.soy.data.SanitizedContent} The new instance. It is actually + * of type T above (ctor's type, a descendant of SanitizedContent), but + * there is no way to express that here. + */ + function sanitizedContentFactory(content, opt_contentDir) { + var result = new InstantiableCtor(); + result.content = String(content); + if (opt_contentDir !== undefined) { + result.contentDir = opt_contentDir; + } + return result; + } + return sanitizedContentFactory; +}; + + +/** + * Creates a factory for SanitizedContent types that should always have their + * default directionality. + * + * This is a hack so that the soydata.VERY_UNSAFE.ordainSanitized* can + * instantiate Sanitized* classes, without making the Sanitized* constructors + * publicly usable. Requiring all construction to use the VERY_UNSAFE names + * helps callers and their reviewers easily tell that creating SanitizedContent + * is not always safe and calls for careful review. + * + * @param {function(new: T, string)} ctor A constructor. + * @return {!function(*): T} A factory that takes content and returns a new + * instance (with default directionality, i.e. ctor.prototype.contentDir). + * @template T + * @private + */ +soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_ = function(ctor) { + /** @type {function(new: goog.soy.data.SanitizedContent)} */ + function InstantiableCtor() {} + InstantiableCtor.prototype = ctor.prototype; + /** + * Creates a ctor-type SanitizedContent instance. + * + * @param {*} content The content to put in the instance. + * @return {goog.soy.data.SanitizedContent} The new instance. It is actually + * of type T above (ctor's type, a descendant of SanitizedContent), but + * there is no way to express that here. + */ + function sanitizedContentFactory(content) { + var result = new InstantiableCtor(); + result.content = String(content); + return result; + } + return sanitizedContentFactory; +}; + + +// ----------------------------------------------------------------------------- +// Sanitized content ordainers. Please use these with extreme caution (with the +// exception of markUnsanitizedText). A good recommendation is to limit usage +// of these to just a handful of files in your source tree where usages can be +// carefully audited. + + +/** + * Protects a string from being used in an noAutoescaped context. + * + * This is useful for content where there is significant risk of accidental + * unescaped usage in a Soy template. A great case is for user-controlled + * data that has historically been a source of vulernabilities. + * + * @param {*} content Text to protect. + * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if + * unknown and thus to be estimated when necessary. Default: null. + * @return {!soydata.UnsanitizedText} A wrapper that is rejected by the + * Soy noAutoescape print directive. + */ +soydata.markUnsanitizedText = function(content, opt_contentDir) { + return new soydata.UnsanitizedText(content, opt_contentDir); +}; + + +/** + * Takes a leap of faith that the provided content is "safe" HTML. + * + * @param {*} content A string of HTML that can safely be embedded in + * a PCDATA context in your app. If you would be surprised to find that an + * HTML sanitizer produced {@code s} (e.g. it runs code or fetches bad URLs) + * and you wouldn't write a template that produces {@code s} on security or + * privacy grounds, then don't pass {@code s} here. + * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if + * unknown and thus to be estimated when necessary. Default: null. + * @return {!soydata.SanitizedHtml} Sanitized content wrapper that + * indicates to Soy not to escape when printed as HTML. + */ +soydata.VERY_UNSAFE.ordainSanitizedHtml = + soydata.$$makeSanitizedContentFactory_(soydata.SanitizedHtml); + + +/** + * Takes a leap of faith that the provided content is "safe" (non-attacker- + * controlled, XSS-free) Javascript. + * + * @param {*} content Javascript source that when evaluated does not + * execute any attacker-controlled scripts. + * @return {!soydata.SanitizedJs} Sanitized content wrapper that indicates to + * Soy not to escape when printed as Javascript source. + */ +soydata.VERY_UNSAFE.ordainSanitizedJs = + soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_( + soydata.SanitizedJs); + + +// TODO: This function is probably necessary, either externally or internally +// as an implementation detail. Generally, plain text will always work here, +// as there's no harm to unescaping the string and then re-escaping when +// finally printed. +/** + * Takes a leap of faith that the provided content can be safely embedded in + * a Javascript string without re-escaping. + * + * @param {*} content Content that can be safely inserted as part of a + * single- or double-quoted string without terminating the string. + * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if + * unknown and thus to be estimated when necessary. Default: null. + * @return {!soydata.SanitizedJsStrChars} Sanitized content wrapper that + * indicates to Soy not to escape when printed in a JS string. + */ +soydata.VERY_UNSAFE.ordainSanitizedJsStrChars = + soydata.$$makeSanitizedContentFactory_(soydata.SanitizedJsStrChars); + + +/** + * Takes a leap of faith that the provided content is "safe" to use as a URI + * in a Soy template. + * + * This creates a Soy SanitizedContent object which indicates to Soy there is + * no need to escape it when printed as a URI (e.g. in an href or src + * attribute), such as if it's already been encoded or if it's a Javascript: + * URI. + * + * @param {*} content A chunk of URI that the caller knows is safe to + * emit in a template. + * @return {!soydata.SanitizedUri} Sanitized content wrapper that indicates to + * Soy not to escape or filter when printed in URI context. + */ +soydata.VERY_UNSAFE.ordainSanitizedUri = + soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_( + soydata.SanitizedUri); + + +/** + * Takes a leap of faith that the provided content is "safe" to use as an + * HTML attribute. + * + * @param {*} content An attribute name and value, such as + * {@code dir="ltr"}. + * @return {!soydata.SanitizedHtmlAttribute} Sanitized content wrapper that + * indicates to Soy not to escape when printed as an HTML attribute. + */ +soydata.VERY_UNSAFE.ordainSanitizedHtmlAttribute = + soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_( + soydata.SanitizedHtmlAttribute); + + +/** + * Takes a leap of faith that the provided content is "safe" to use as CSS + * in a style attribute or block. + * + * @param {*} content CSS, such as {@code color:#c3d9ff}. + * @return {!soydata.SanitizedCss} Sanitized CSS wrapper that indicates to + * Soy there is no need to escape or filter when printed in CSS context. + */ +soydata.VERY_UNSAFE.ordainSanitizedCss = + soydata.$$makeSanitizedContentFactoryWithDefaultDirOnly_( + soydata.SanitizedCss); + + +// ----------------------------------------------------------------------------- +// Public utilities. + + +/** + * Helper function to render a Soy template and then set the output string as + * the innerHTML of an element. It is recommended to use this helper function + * instead of directly setting innerHTML in your hand-written code, so that it + * will be easier to audit the code for cross-site scripting vulnerabilities. + * + * NOTE: New code should consider using goog.soy.renderElement instead. + * + * @param {Element} element The element whose content we are rendering. + * @param {Function} template The Soy template defining the element's content. + * @param {Object=} opt_templateData The data for the template. + * @param {Object=} opt_injectedData The injected data for the template. + */ +soy.renderElement = goog.soy.renderElement; + + +/** + * Helper function to render a Soy template into a single node or a document + * fragment. If the rendered HTML string represents a single node, then that + * node is returned (note that this is *not* a fragment, despite them name of + * the method). Otherwise a document fragment is returned containing the + * rendered nodes. + * + * NOTE: New code should consider using goog.soy.renderAsFragment + * instead (note that the arguments are different). + * + * @param {Function} template The Soy template defining the element's content. + * @param {Object=} opt_templateData The data for the template. + * @param {Document=} opt_document The document used to create DOM nodes. If not + * specified, global document object is used. + * @param {Object=} opt_injectedData The injected data for the template. + * @return {!Node} The resulting node or document fragment. + */ +soy.renderAsFragment = function( + template, opt_templateData, opt_document, opt_injectedData) { + return goog.soy.renderAsFragment( + template, opt_templateData, opt_injectedData, + new goog.dom.DomHelper(opt_document)); +}; + + +/** + * Helper function to render a Soy template into a single node. If the rendered + * HTML string represents a single node, then that node is returned. Otherwise, + * a DIV element is returned containing the rendered nodes. + * + * NOTE: New code should consider using goog.soy.renderAsElement + * instead (note that the arguments are different). + * + * @param {Function} template The Soy template defining the element's content. + * @param {Object=} opt_templateData The data for the template. + * @param {Document=} opt_document The document used to create DOM nodes. If not + * specified, global document object is used. + * @param {Object=} opt_injectedData The injected data for the template. + * @return {!Element} Rendered template contents, wrapped in a parent DIV + * element if necessary. + */ +soy.renderAsElement = function( + template, opt_templateData, opt_document, opt_injectedData) { + return goog.soy.renderAsElement( + template, opt_templateData, opt_injectedData, + new goog.dom.DomHelper(opt_document)); +}; + + +// ----------------------------------------------------------------------------- +// Below are private utilities to be used by Soy-generated code only. + + +/** + * Whether the locale is right-to-left. + * + * @type {boolean} + */ +soy.$$IS_LOCALE_RTL = goog.i18n.bidi.IS_RTL; + + +/** + * Builds an augmented map. The returned map will contain mappings from both + * the base map and the additional map. If the same key appears in both, then + * the value from the additional map will be visible, while the value from the + * base map will be hidden. The base map will be used, but not modified. + * + * @param {!Object} baseMap The original map to augment. + * @param {!Object} additionalMap A map containing the additional mappings. + * @return {!Object} An augmented map containing both the original and + * additional mappings. + */ +soy.$$augmentMap = function(baseMap, additionalMap) { + + // Create a new map whose '__proto__' field is set to baseMap. + /** @constructor */ + function TempCtor() {} + TempCtor.prototype = baseMap; + var augmentedMap = new TempCtor(); + + // Add the additional mappings to the new map. + for (var key in additionalMap) { + augmentedMap[key] = additionalMap[key]; + } + + return augmentedMap; +}; + + +/** + * Checks that the given map key is a string. + * @param {*} key Key to check. + * @return {string} The given key. + */ +soy.$$checkMapKey = function(key) { + // TODO: Support map literal with nonstring key. + if ((typeof key) != 'string') { + throw Error( + 'Map literal\'s key expression must evaluate to string' + + ' (encountered type "' + (typeof key) + '").'); + } + return key; +}; + + +/** + * Gets the keys in a map as an array. There are no guarantees on the order. + * @param {Object} map The map to get the keys of. + * @return {Array} The array of keys in the given map. + */ +soy.$$getMapKeys = function(map) { + var mapKeys = []; + for (var key in map) { + mapKeys.push(key); + } + return mapKeys; +}; + + +/** + * Gets a consistent unique id for the given delegate template name. Two calls + * to this function will return the same id if and only if the input names are + * the same. + * + *

    Important: This function must always be called with a string constant. + * + *

    If Closure Compiler is not being used, then this is just this identity + * function. If Closure Compiler is being used, then each call to this function + * will be replaced with a short string constant, which will be consistent per + * input name. + * + * @param {string} delTemplateName The delegate template name for which to get a + * consistent unique id. + * @return {string} A unique id that is consistent per input name. + * + * @consistentIdGenerator + */ +soy.$$getDelTemplateId = function(delTemplateName) { + return delTemplateName; +}; + + +/** + * Map from registered delegate template key to the priority of the + * implementation. + * @type {Object} + * @private + */ +soy.$$DELEGATE_REGISTRY_PRIORITIES_ = {}; + +/** + * Map from registered delegate template key to the implementation function. + * @type {Object} + * @private + */ +soy.$$DELEGATE_REGISTRY_FUNCTIONS_ = {}; + + +/** + * Registers a delegate implementation. If the same delegate template key (id + * and variant) has been registered previously, then priority values are + * compared and only the higher priority implementation is stored (if + * priorities are equal, an error is thrown). + * + * @param {string} delTemplateId The delegate template id. + * @param {string} delTemplateVariant The delegate template variant (can be + * empty string). + * @param {number} delPriority The implementation's priority value. + * @param {Function} delFn The implementation function. + */ +soy.$$registerDelegateFn = function( + delTemplateId, delTemplateVariant, delPriority, delFn) { + + var mapKey = 'key_' + delTemplateId + ':' + delTemplateVariant; + var currPriority = soy.$$DELEGATE_REGISTRY_PRIORITIES_[mapKey]; + if (currPriority === undefined || delPriority > currPriority) { + // Registering new or higher-priority function: replace registry entry. + soy.$$DELEGATE_REGISTRY_PRIORITIES_[mapKey] = delPriority; + soy.$$DELEGATE_REGISTRY_FUNCTIONS_[mapKey] = delFn; + } else if (delPriority == currPriority) { + // Registering same-priority function: error. + throw Error( + 'Encountered two active delegates with the same priority ("' + + delTemplateId + ':' + delTemplateVariant + '").'); + } else { + // Registering lower-priority function: do nothing. + } +}; + + +/** + * Retrieves the (highest-priority) implementation that has been registered for + * a given delegate template key (id and variant). If no implementation has + * been registered for the key, then the fallback is the same id with empty + * variant. If the fallback is also not registered, and allowsEmptyDefault is + * true, then returns an implementation that is equivalent to an empty template + * (i.e. rendered output would be empty string). + * + * @param {string} delTemplateId The delegate template id. + * @param {string|number} delTemplateVariant The delegate template variant (can + * be an empty string, or a number when a global is used). + * @param {boolean} allowsEmptyDefault Whether to default to the empty template + * function if there's no active implementation. + * @return {Function} The retrieved implementation function. + */ +soy.$$getDelegateFn = function( + delTemplateId, delTemplateVariant, allowsEmptyDefault) { + + var delFn = soy.$$DELEGATE_REGISTRY_FUNCTIONS_[ + 'key_' + delTemplateId + ':' + delTemplateVariant]; + if (! delFn && delTemplateVariant != '') { + // Fallback to empty variant. + delFn = soy.$$DELEGATE_REGISTRY_FUNCTIONS_['key_' + delTemplateId + ':']; + } + + if (delFn) { + return delFn; + } else if (allowsEmptyDefault) { + return soy.$$EMPTY_TEMPLATE_FN_; + } else { + throw Error( + 'Found no active impl for delegate call to "' + delTemplateId + ':' + + delTemplateVariant + '" (and not allowemptydefault="true").'); + } +}; + + +/** + * Private helper soy.$$getDelegateFn(). This is the empty template function + * that is returned whenever there's no delegate implementation found. + * + * @param {Object=} opt_data + * @param {soy.StringBuilder=} opt_sb + * @param {Object=} opt_ijData + * @return {string} + * @private + */ +soy.$$EMPTY_TEMPLATE_FN_ = function(opt_data, opt_sb, opt_ijData) { + return ''; +}; + + +// ----------------------------------------------------------------------------- +// Internal sanitized content wrappers. + + +/** + * Creates a SanitizedContent factory for SanitizedContent types for internal + * Soy let and param blocks. + * + * This is a hack within Soy so that SanitizedContent objects created via let + * and param blocks will truth-test as false if they are empty string. + * Tricking the Javascript runtime to treat empty SanitizedContent as falsey is + * not possible, and changing the Soy compiler to wrap every boolean statement + * for just this purpose is impractical. Instead, we just avoid wrapping empty + * string as SanitizedContent, since it's a no-op for empty strings anyways. + * + * @param {function(new: T)} ctor A constructor. + * @return {!function(*, ?goog.i18n.bidi.Dir=): (T|soydata.$$EMPTY_STRING_)} + * A factory that takes content and an optional content direction and + * returns a new instance, or an empty string. If the content direction is + * undefined, ctor.prototype.contentDir is used. + * @template T + * @private + */ +soydata.$$makeSanitizedContentFactoryForInternalBlocks_ = function(ctor) { + /** @type {function(new: goog.soy.data.SanitizedContent)} */ + function InstantiableCtor() {} + InstantiableCtor.prototype = ctor.prototype; + /** + * Creates a ctor-type SanitizedContent instance. + * + * @param {*} content The content to put in the instance. + * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction. If + * undefined, ctor.prototype.contentDir is used. + * @return {goog.soy.data.SanitizedContent|soydata.$$EMPTY_STRING_} The new + * instance, or an empty string. A new instance is actually of type T + * above (ctor's type, a descendant of SanitizedContent), but there's no + * way to express that here. + */ + function sanitizedContentFactory(content, opt_contentDir) { + var contentString = String(content); + if (!contentString) { + return soydata.$$EMPTY_STRING_.VALUE; + } + var result = new InstantiableCtor(); + result.content = String(content); + if (opt_contentDir !== undefined) { + result.contentDir = opt_contentDir; + } + return result; + } + return sanitizedContentFactory; +}; + + +/** + * Creates a SanitizedContent factory for SanitizedContent types that should + * always have their default directionality for internal Soy let and param + * blocks. + * + * This is a hack within Soy so that SanitizedContent objects created via let + * and param blocks will truth-test as false if they are empty string. + * Tricking the Javascript runtime to treat empty SanitizedContent as falsey is + * not possible, and changing the Soy compiler to wrap every boolean statement + * for just this purpose is impractical. Instead, we just avoid wrapping empty + * string as SanitizedContent, since it's a no-op for empty strings anyways. + * + * @param {function(new: T)} ctor A constructor. + * @return {!function(*): (T|soydata.$$EMPTY_STRING_)} A + * factory that takes content and returns a + * new instance (with default directionality, i.e. + * ctor.prototype.contentDir), or an empty string. + * @template T + * @private + */ +soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_ = + function(ctor) { + /** @type {function(new: goog.soy.data.SanitizedContent)} */ + function InstantiableCtor() {} + InstantiableCtor.prototype = ctor.prototype; + /** + * Creates a ctor-type SanitizedContent instance. + * + * @param {*} content The content to put in the instance. + * @return {goog.soy.data.SanitizedContent|soydata.$$EMPTY_STRING_} The new + * instance, or an empty string. A new instance is actually of type T + * above (ctor's type, a descendant of SanitizedContent), but there's no + * way to express that here. + */ + function sanitizedContentFactory(content) { + var contentString = String(content); + if (!contentString) { + return soydata.$$EMPTY_STRING_.VALUE; + } + var result = new InstantiableCtor(); + result.content = String(content); + return result; + } + return sanitizedContentFactory; +}; + + +/** + * Creates kind="text" block contents (internal use only). + * + * @param {*} content Text. + * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if + * unknown and thus to be estimated when necessary. Default: null. + * @return {!soydata.UnsanitizedText|soydata.$$EMPTY_STRING_} Wrapped result. + */ +soydata.$$markUnsanitizedTextForInternalBlocks = function( + content, opt_contentDir) { + var contentString = String(content); + if (!contentString) { + return soydata.$$EMPTY_STRING_.VALUE; + } + return new soydata.UnsanitizedText(contentString, opt_contentDir); +}; + + +/** + * Creates kind="html" block contents (internal use only). + * + * @param {*} content Text. + * @param {?goog.i18n.bidi.Dir=} opt_contentDir The content direction; null if + * unknown and thus to be estimated when necessary. Default: null. + * @return {soydata.SanitizedHtml|soydata.$$EMPTY_STRING_} Wrapped result. + */ +soydata.VERY_UNSAFE.$$ordainSanitizedHtmlForInternalBlocks = + soydata.$$makeSanitizedContentFactoryForInternalBlocks_( + soydata.SanitizedHtml); + + +/** + * Creates kind="js" block contents (internal use only). + * + * @param {*} content Text. + * @return {soydata.SanitizedJs|soydata.$$EMPTY_STRING_} Wrapped result. + */ +soydata.VERY_UNSAFE.$$ordainSanitizedJsForInternalBlocks = + soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_( + soydata.SanitizedJs); + + +/** + * Creates kind="uri" block contents (internal use only). + * + * @param {*} content Text. + * @return {soydata.SanitizedUri|soydata.$$EMPTY_STRING_} Wrapped result. + */ +soydata.VERY_UNSAFE.$$ordainSanitizedUriForInternalBlocks = + soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_( + soydata.SanitizedUri); + + +/** + * Creates kind="attributes" block contents (internal use only). + * + * @param {*} content Text. + * @return {soydata.SanitizedHtmlAttribute|soydata.$$EMPTY_STRING_} Wrapped + * result. + */ +soydata.VERY_UNSAFE.$$ordainSanitizedAttributesForInternalBlocks = + soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_( + soydata.SanitizedHtmlAttribute); + + +/** + * Creates kind="css" block contents (internal use only). + * + * @param {*} content Text. + * @return {soydata.SanitizedCss|soydata.$$EMPTY_STRING_} Wrapped result. + */ +soydata.VERY_UNSAFE.$$ordainSanitizedCssForInternalBlocks = + soydata.$$makeSanitizedContentFactoryWithDefaultDirOnlyForInternalBlocks_( + soydata.SanitizedCss); + + +// ----------------------------------------------------------------------------- +// Escape/filter/normalize. + + +/** + * Returns a SanitizedHtml object for a particular value. The content direction + * is preserved. + * + * This HTML-escapes the value unless it is already SanitizedHtml. Escapes + * double quote '"' in addition to '&', '<', and '>' so that a string can be + * included in an HTML tag attribute value within double quotes. + * + * @param {*} value The value to convert. If it is already a SanitizedHtml + * object, it is left alone. + * @return {!soydata.SanitizedHtml} An escaped version of value. + */ +soy.$$escapeHtml = function(value) { + return soydata.SanitizedHtml.from(value); +}; + + +/** + * Strips unsafe tags to convert a string of untrusted HTML into HTML that + * is safe to embed. The content direction is preserved. + * + * @param {*} value The string-like value to be escaped. May not be a string, + * but the value will be coerced to a string. + * @return {!soydata.SanitizedHtml} A sanitized and normalized version of value. + */ +soy.$$cleanHtml = function(value) { + if (soydata.isContentKind(value, soydata.SanitizedContentKind.HTML)) { + goog.asserts.assert(value.constructor === soydata.SanitizedHtml); + return /** @type {!soydata.SanitizedHtml} */ (value); + } + return soydata.VERY_UNSAFE.ordainSanitizedHtml( + soy.$$stripHtmlTags(value, soy.esc.$$SAFE_TAG_ALLOWLIST_), + soydata.getContentDir(value)); +}; + + +/** + * Escapes HTML special characters in a string so that it can be embedded in + * RCDATA. + *

    + * Escapes HTML special characters so that the value will not prematurely end + * the body of a tag like {@code }. + *

    + * Will normalize known safe HTML to make sure that sanitized HTML (which could + * contain an innocuous {@code } don't prematurely end an RCDATA + * element. + * + * @param {*} value The string-like value to be escaped. May not be a string, + * but the value will be coerced to a string. + * @return {string} An escaped version of value. + */ +soy.$$escapeHtmlRcdata = function(value) { + if (soydata.isContentKind(value, soydata.SanitizedContentKind.HTML)) { + goog.asserts.assert(value.constructor === soydata.SanitizedHtml); + return soy.esc.$$normalizeHtmlHelper(value.content); + } + return soy.esc.$$escapeHtmlHelper(value); +}; + + +/** + * Matches any/only HTML5 void elements' start tags. + * See http://www.w3.org/TR/html-markup/syntax.html#syntax-elements + * @type {RegExp} + * @private + */ +soy.$$HTML5_VOID_ELEMENTS_ = new RegExp( + '^<(?:area|base|br|col|command|embed|hr|img|input' + + '|keygen|link|meta|param|source|track|wbr)\\b'); + + +/** + * Removes HTML tags from a string of known safe HTML. + * If opt_tagAllowlist is not specified or is empty, then + * the result can be used as an attribute value. + * + * @param {*} value The HTML to be escaped. May not be a string, but the + * value will be coerced to a string. + * @param {Object=} opt_tagAllowlist Has an own property whose + * name is a lower-case tag name and whose value is {@code 1} for + * each element that is allowed in the output. + * @return {string} A representation of value without disallowed tags, + * HTML comments, or other non-text content. + */ +soy.$$stripHtmlTags = function(value, opt_tagAllowlist) { + if (!opt_tagAllowlist) { + // If we have no allow-list, then use a fast track which elides all tags. + return String(value).replace(soy.esc.$$HTML_TAG_REGEX_, '') + // This is just paranoia since callers should normalize the result + // anyway, but if they didn't, it would be necessary to ensure that + // after the first replace non-tag uses of < do not recombine into + // tags as in "<script>alert(1337)script>". + .replace(soy.esc.$$LT_REGEX_, '<'); + } + + // Escapes '[' so that we can use [123] below to mark places where tags + // have been removed. + var html = String(value).replace(/\[/g, '['); + + // Consider all uses of '<' and replace allowlisted tags with markers like + // [1] which are indices into a list of approved tag names. + // Replace all other uses of < and > with entities. + var tags = []; + html = html.replace( + soy.esc.$$HTML_TAG_REGEX_, + function(tok, tagName) { + if (tagName) { + tagName = tagName.toLowerCase(); + if (opt_tagAllowlist.hasOwnProperty(tagName) && + opt_tagAllowlist[tagName]) { + var start = tok.charAt(1) === '/' ? ''; + return '[' + index + ']'; + } + } + return ''; + }); + + // Escape HTML special characters. Now there are no '<' in html that could + // start a tag. + html = soy.esc.$$normalizeHtmlHelper(html); + + var finalCloseTags = soy.$$balanceTags_(tags); + + // Now html contains no tags or less-than characters that could become + // part of a tag via a replacement operation and tags only contains + // approved tags. + // Reinsert the allow-listed tags. + html = html.replace( + /\[(\d+)\]/g, function(_, index) { return tags[index]; }); + + // Close any still open tags. + // This prevents unclosed formatting elements like

      and from + // breaking the layout of containing HTML. + return html + finalCloseTags; +}; + + +/** + * Throw out any close tags that don't correspond to start tags. + * If {@code
      } is used for formatting, embedded HTML shouldn't be able + * to use a mismatched {@code
      } to break page layout. + * + * @param {Array} tags an array of tags that will be modified in place + * include tags, the empty string, or concatenations of empty tags. + * @return {string} zero or more closed tags that close all elements that are + * opened in tags but not closed. + * @private + */ +soy.$$balanceTags_ = function(tags) { + var open = []; + for (var i = 0, n = tags.length; i < n; ++i) { + var tag = tags[i]; + if (tag.charAt(1) === '/') { + var openTagIndex = open.length - 1; + // NOTE: This is essentially lastIndexOf, but it's not supported in IE. + while (openTagIndex >= 0 && open[openTagIndex] != tag) { + openTagIndex--; + } + if (openTagIndex < 0) { + tags[i] = ''; // Drop close tag. + } else { + tags[i] = open.slice(openTagIndex).reverse().join(''); + open.length = openTagIndex; + } + } else if (!soy.$$HTML5_VOID_ELEMENTS_.test(tag)) { + open.push('Hello World + return soy.esc.$$filterHtmlElementNameHelper(value); +}; + + +/** + * Escapes characters in the value to make it valid content for a JS string + * literal. + * + * @param {*} value The value to escape. May not be a string, but the value + * will be coerced to a string. + * @return {string} An escaped version of value. + * @deprecated + */ +soy.$$escapeJs = function(value) { + return soy.$$escapeJsString(value); +}; + + +/** + * Escapes characters in the value to make it valid content for a JS string + * literal. + * + * @param {*} value The value to escape. May not be a string, but the value + * will be coerced to a string. + * @return {string} An escaped version of value. + */ +soy.$$escapeJsString = function(value) { + if (soydata.isContentKind(value, soydata.SanitizedContentKind.JS_STR_CHARS)) { + // TODO: It might still be worthwhile to normalize it to remove + // unescaped quotes, null, etc: replace(/(?:^|[^\])['"]/g, '\\$ + goog.asserts.assert(value.constructor === soydata.SanitizedJsStrChars); + return value.content; + } + return soy.esc.$$escapeJsStringHelper(value); +}; + + +/** + * Encodes a value as a JavaScript literal. + * + * @param {*} value The value to escape. May not be a string, but the value + * will be coerced to a string. + * @return {string} A JavaScript code representation of the input. + */ +soy.$$escapeJsValue = function(value) { + // We surround values with spaces so that they can't be interpolated into + // identifiers by accident. + // We could use parentheses but those might be interpreted as a function call. + if (value == null) { // Intentionally matches undefined. + // Java returns null from maps where there is no corresponding key while + // JS returns undefined. + // We always output null for compatibility with Java which does not have a + // distinct undefined value. + return ' null '; + } + if (soydata.isContentKind(value, soydata.SanitizedContentKind.JS)) { + goog.asserts.assert(value.constructor === soydata.SanitizedJs); + return value.content; + } + switch (typeof value) { + case 'boolean': case 'number': + return ' ' + value + ' '; + default: + return "'" + soy.esc.$$escapeJsStringHelper(String(value)) + "'"; + } +}; + + +/** + * Escapes characters in the string to make it valid content for a JS regular + * expression literal. + * + * @param {*} value The value to escape. May not be a string, but the value + * will be coerced to a string. + * @return {string} An escaped version of value. + */ +soy.$$escapeJsRegex = function(value) { + return soy.esc.$$escapeJsRegexHelper(value); +}; + + +/** + * Matches all URI mark characters that conflict with HTML attribute delimiters + * or that cannot appear in a CSS uri. + * From G.2: CSS grammar + *
      + *     url        ([!#$%&*-~]|{nonascii}|{escape})*
      + * 
      + * + * @type {RegExp} + * @private + */ +soy.$$problematicUriMarks_ = /['()]/g; + +/** + * @param {string} ch A single character in {@link soy.$$problematicUriMarks_}. + * @return {string} + * @private + */ +soy.$$pctEncode_ = function(ch) { + return '%' + ch.charCodeAt(0).toString(16); +}; + +/** + * Escapes a string so that it can be safely included in a URI. + * + * @param {*} value The value to escape. May not be a string, but the value + * will be coerced to a string. + * @return {string} An escaped version of value. + */ +soy.$$escapeUri = function(value) { + if (soydata.isContentKind(value, soydata.SanitizedContentKind.URI)) { + goog.asserts.assert(value.constructor === soydata.SanitizedUri); + return soy.$$normalizeUri(value); + } + // Apostophes and parentheses are not matched by encodeURIComponent. + // They are technically special in URIs, but only appear in the obsolete mark + // production in Appendix D.2 of RFC 3986, so can be encoded without changing + // semantics. + var encoded = soy.esc.$$escapeUriHelper(value); + soy.$$problematicUriMarks_.lastIndex = 0; + if (soy.$$problematicUriMarks_.test(encoded)) { + return encoded.replace(soy.$$problematicUriMarks_, soy.$$pctEncode_); + } + return encoded; +}; + + +/** + * Removes rough edges from a URI by escaping any raw HTML/JS string delimiters. + * + * @param {*} value The value to escape. May not be a string, but the value + * will be coerced to a string. + * @return {string} An escaped version of value. + */ +soy.$$normalizeUri = function(value) { + return soy.esc.$$normalizeUriHelper(value); +}; + + +/** + * Vets a URI's protocol and removes rough edges from a URI by escaping + * any raw HTML/JS string delimiters. + * + * @param {*} value The value to escape. May not be a string, but the value + * will be coerced to a string. + * @return {string} An escaped version of value. + */ +soy.$$filterNormalizeUri = function(value) { + if (soydata.isContentKind(value, soydata.SanitizedContentKind.URI)) { + goog.asserts.assert(value.constructor === soydata.SanitizedUri); + return soy.$$normalizeUri(value); + } + return soy.esc.$$filterNormalizeUriHelper(value); +}; + + +/** + * Allows only data-protocol image URI's. + * + * @param {*} value The value to process. May not be a string, but the value + * will be coerced to a string. + * @return {!soydata.SanitizedUri} An escaped version of value. + */ +soy.$$filterImageDataUri = function(value) { + // NOTE: Even if it's a SanitizedUri, we will still filter it. + return soydata.VERY_UNSAFE.ordainSanitizedUri( + soy.esc.$$filterImageDataUriHelper(value)); +}; + + +/** + * Escapes a string so it can safely be included inside a quoted CSS string. + * + * @param {*} value The value to escape. May not be a string, but the value + * will be coerced to a string. + * @return {string} An escaped version of value. + */ +soy.$$escapeCssString = function(value) { + return soy.esc.$$escapeCssStringHelper(value); +}; + + +/** + * Encodes a value as a CSS identifier part, keyword, or quantity. + * + * @param {*} value The value to escape. May not be a string, but the value + * will be coerced to a string. + * @return {string} A safe CSS identifier part, keyword, or quanitity. + */ +soy.$$filterCssValue = function(value) { + if (soydata.isContentKind(value, soydata.SanitizedContentKind.CSS)) { + goog.asserts.assert(value.constructor === soydata.SanitizedCss); + return value.content; + } + // Uses == to intentionally match null and undefined for Java compatibility. + if (value == null) { + return ''; + } + return soy.esc.$$filterCssValueHelper(value); +}; + + +/** + * Sanity-checks noAutoescape input for explicitly tainted content. + * + * SanitizedContentKind.TEXT is used to explicitly mark input that was never + * meant to be used unescaped. + * + * @param {*} value The value to filter. + * @return {*} The value, that we dearly hope will not cause an attack. + */ +soy.$$filterNoAutoescape = function(value) { + if (soydata.isContentKind(value, soydata.SanitizedContentKind.TEXT)) { + // Fail in development mode. + goog.asserts.fail( + 'Tainted SanitizedContentKind.TEXT for |noAutoescape: `%s`', + [value.content]); + // Return innocuous data in production. + return 'zSoyz'; + } + + return value; +}; + + +// ----------------------------------------------------------------------------- +// Basic directives/functions. + + +/** + * Converts \r\n, \r, and \n to
      s + * @param {*} value The string in which to convert newlines. + * @return {string|!soydata.SanitizedHtml} A copy of {@code value} with + * converted newlines. If {@code value} is SanitizedHtml, the return value + * is also SanitizedHtml, of the same known directionality. + */ +soy.$$changeNewlineToBr = function(value) { + var result = goog.string.newLineToBr(String(value), false); + if (soydata.isContentKind(value, soydata.SanitizedContentKind.HTML)) { + return soydata.VERY_UNSAFE.ordainSanitizedHtml( + result, soydata.getContentDir(value)); + } + return result; +}; + + +/** + * Inserts word breaks ('wbr' tags) into a HTML string at a given interval. The + * counter is reset if a space is encountered. Word breaks aren't inserted into + * HTML tags or entities. Entities count towards the character count; HTML tags + * do not. + * + * @param {*} value The HTML string to insert word breaks into. Can be other + * types, but the value will be coerced to a string. + * @param {number} maxCharsBetweenWordBreaks Maximum number of non-space + * characters to allow before adding a word break. + * @return {string|!soydata.SanitizedHtml} The string including word + * breaks. If {@code value} is SanitizedHtml, the return value + * is also SanitizedHtml, of the same known directionality. + */ +soy.$$insertWordBreaks = function(value, maxCharsBetweenWordBreaks) { + var result = goog.format.insertWordBreaks( + String(value), maxCharsBetweenWordBreaks); + if (soydata.isContentKind(value, soydata.SanitizedContentKind.HTML)) { + return soydata.VERY_UNSAFE.ordainSanitizedHtml( + result, soydata.getContentDir(value)); + } + return result; +}; + + +/** + * Truncates a string to a given max length (if it's currently longer), + * optionally adding ellipsis at the end. + * + * @param {*} str The string to truncate. Can be other types, but the value will + * be coerced to a string. + * @param {number} maxLen The maximum length of the string after truncation + * (including ellipsis, if applicable). + * @param {boolean} doAddEllipsis Whether to add ellipsis if the string needs + * truncation. + * @return {string} The string after truncation. + */ +soy.$$truncate = function(str, maxLen, doAddEllipsis) { + + str = String(str); + if (str.length <= maxLen) { + return str; // no need to truncate + } + + // If doAddEllipsis, either reduce maxLen to compensate, or else if maxLen is + // too small, just turn off doAddEllipsis. + if (doAddEllipsis) { + if (maxLen > 3) { + maxLen -= 3; + } else { + doAddEllipsis = false; + } + } + + // Make sure truncating at maxLen doesn't cut up a unicode surrogate pair. + if (soy.$$isHighSurrogate_(str.charAt(maxLen - 1)) && + soy.$$isLowSurrogate_(str.charAt(maxLen))) { + maxLen -= 1; + } + + // Truncate. + str = str.substring(0, maxLen); + + // Add ellipsis. + if (doAddEllipsis) { + str += '...'; + } + + return str; +}; + +/** + * Private helper for $$truncate() to check whether a char is a high surrogate. + * @param {string} ch The char to check. + * @return {boolean} Whether the given char is a unicode high surrogate. + * @private + */ +soy.$$isHighSurrogate_ = function(ch) { + return 0xD800 <= ch && ch <= 0xDBFF; +}; + +/** + * Private helper for $$truncate() to check whether a char is a low surrogate. + * @param {string} ch The char to check. + * @return {boolean} Whether the given char is a unicode low surrogate. + * @private + */ +soy.$$isLowSurrogate_ = function(ch) { + return 0xDC00 <= ch && ch <= 0xDFFF; +}; + + +// ----------------------------------------------------------------------------- +// Bidi directives/functions. + + +/** + * Cache of bidi formatter by context directionality, so we don't keep on + * creating new objects. + * @type {!Object} + * @private + */ +soy.$$bidiFormatterCache_ = {}; + + +/** + * Returns cached bidi formatter for bidiGlobalDir, or creates a new one. + * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 + * if rtl, 0 if unknown. + * @return {goog.i18n.BidiFormatter} A formatter for bidiGlobalDir. + * @private + */ +soy.$$getBidiFormatterInstance_ = function(bidiGlobalDir) { + return soy.$$bidiFormatterCache_[bidiGlobalDir] || + (soy.$$bidiFormatterCache_[bidiGlobalDir] = + new goog.i18n.BidiFormatter(bidiGlobalDir)); +}; + + +/** + * Estimate the overall directionality of text. If opt_isHtml, makes sure to + * ignore the LTR nature of the mark-up and escapes in text, making the logic + * suitable for HTML and HTML-escaped text. + * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of + * estimating the directionality. + * + * @param {*} text The content whose directionality is to be estimated. + * @param {boolean=} opt_isHtml Whether text is HTML/HTML-escaped. + * Default: false. + * @return {number} 1 if text is LTR, -1 if it is RTL, and 0 if it is neutral. + */ +soy.$$bidiTextDir = function(text, opt_isHtml) { + var contentDir = soydata.getContentDir(text); + if (contentDir != null) { + return contentDir; + } + var isHtml = opt_isHtml || + soydata.isContentKind(text, soydata.SanitizedContentKind.HTML); + return goog.i18n.bidi.estimateDirection(text + '', isHtml); +}; + + +/** + * Returns 'dir="ltr"' or 'dir="rtl"', depending on text's estimated + * directionality, if it is not the same as bidiGlobalDir. + * Otherwise, returns the empty string. + * If opt_isHtml, makes sure to ignore the LTR nature of the mark-up and escapes + * in text, making the logic suitable for HTML and HTML-escaped text. + * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of + * estimating the directionality. + * + * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 + * if rtl, 0 if unknown. + * @param {*} text The content whose directionality is to be estimated. + * @param {boolean=} opt_isHtml Whether text is HTML/HTML-escaped. + * Default: false. + * @return {soydata.SanitizedHtmlAttribute} 'dir="rtl"' for RTL text in non-RTL + * context; 'dir="ltr"' for LTR text in non-LTR context; + * else, the empty string. + */ +soy.$$bidiDirAttr = function(bidiGlobalDir, text, opt_isHtml) { + var formatter = soy.$$getBidiFormatterInstance_(bidiGlobalDir); + var contentDir = soydata.getContentDir(text); + if (contentDir == null) { + var isHtml = opt_isHtml || + soydata.isContentKind(text, soydata.SanitizedContentKind.HTML); + contentDir = goog.i18n.bidi.estimateDirection(text + '', isHtml); + } + return soydata.VERY_UNSAFE.ordainSanitizedHtmlAttribute( + formatter.knownDirAttr(contentDir)); +}; + + +/** + * Returns a Unicode BiDi mark matching bidiGlobalDir (LRM or RLM) if the + * directionality or the exit directionality of text are opposite to + * bidiGlobalDir. Otherwise returns the empty string. + * If opt_isHtml, makes sure to ignore the LTR nature of the mark-up and escapes + * in text, making the logic suitable for HTML and HTML-escaped text. + * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of + * estimating the directionality. + * + * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 + * if rtl, 0 if unknown. + * @param {*} text The content whose directionality is to be estimated. + * @param {boolean=} opt_isHtml Whether text is HTML/HTML-escaped. + * Default: false. + * @return {string} A Unicode bidi mark matching bidiGlobalDir, or the empty + * string when text's overall and exit directionalities both match + * bidiGlobalDir, or bidiGlobalDir is 0 (unknown). + */ +soy.$$bidiMarkAfter = function(bidiGlobalDir, text, opt_isHtml) { + var formatter = soy.$$getBidiFormatterInstance_(bidiGlobalDir); + var isHtml = opt_isHtml || + soydata.isContentKind(text, soydata.SanitizedContentKind.HTML); + return formatter.markAfterKnownDir(soydata.getContentDir(text), text + '', + isHtml); +}; + + +/** + * Returns text wrapped in a according to its + * directionality - but only if that is neither neutral nor the same as the + * global context. Otherwise, returns text unchanged. + * Always treats text as HTML/HTML-escaped, i.e. ignores mark-up and escapes + * when estimating text's directionality. + * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of + * estimating the directionality. + * + * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 + * if rtl, 0 if unknown. + * @param {*} text The string to be wrapped. Can be other types, but the value + * will be coerced to a string. + * @return {!goog.soy.data.SanitizedContent|string} The wrapped text. + */ +soy.$$bidiSpanWrap = function(bidiGlobalDir, text) { + var formatter = soy.$$getBidiFormatterInstance_(bidiGlobalDir); + + // We always treat the value as HTML, because span-wrapping is only useful + // when its output will be treated as HTML (without escaping), and because + // |bidiSpanWrap is not itself specified to do HTML escaping in Soy. (Both + // explicit and automatic HTML escaping, if any, is done before calling + // |bidiSpanWrap because the BidiSpanWrapDirective Java class implements + // SanitizedContentOperator, but this does not mean that the input has to be + // HTML SanitizedContent. In legacy usage, a string that is not + // SanitizedContent is often printed in an autoescape="false" template or by + // a print with a |noAutoescape, in which case our input is just SoyData.) If + // the output will be treated as HTML, the input had better be safe + // HTML/HTML-escaped (even if it isn't HTML SanitizedData), or we have an XSS + // opportunity and a much bigger problem than bidi garbling. + var wrappedText = formatter.spanWrapWithKnownDir( + soydata.getContentDir(text), text + '', true /* opt_isHtml */); + + // Like other directives whose Java class implements SanitizedContentOperator, + // |bidiSpanWrap is called after the escaping (if any) has already been done, + // and thus there is no need for it to produce actual SanitizedContent. + return wrappedText; +}; + + +/** + * Returns text wrapped in Unicode BiDi formatting characters according to its + * directionality, i.e. either LRE or RLE at the beginning and PDF at the end - + * but only if text's directionality is neither neutral nor the same as the + * global context. Otherwise, returns text unchanged. + * Only treats soydata.SanitizedHtml as HTML/HTML-escaped, i.e. ignores mark-up + * and escapes when estimating text's directionality. + * If text has a goog.i18n.bidi.Dir-valued contentDir, this is used instead of + * estimating the directionality. + * + * @param {number} bidiGlobalDir The global directionality context: 1 if ltr, -1 + * if rtl, 0 if unknown. + * @param {*} text The string to be wrapped. Can be other types, but the value + * will be coerced to a string. + * @return {!goog.soy.data.SanitizedContent|string} The wrapped string. + */ +soy.$$bidiUnicodeWrap = function(bidiGlobalDir, text) { + var formatter = soy.$$getBidiFormatterInstance_(bidiGlobalDir); + + // We treat the value as HTML if and only if it says it's HTML, even though in + // legacy usage, we sometimes have an HTML string (not SanitizedContent) that + // is passed to an autoescape="false" template or a {print $foo|noAutoescape}, + // with the output going into an HTML context without escaping. We simply have + // no way of knowing if this is what is happening when we get + // non-SanitizedContent input, and most of the time it isn't. + var isHtml = soydata.isContentKind(text, soydata.SanitizedContentKind.HTML); + var wrappedText = formatter.unicodeWrapWithKnownDir( + soydata.getContentDir(text), text + '', isHtml); + + // Bidi-wrapping a value converts it to the context directionality. Since it + // does not cost us anything, we will indicate this known direction in the + // output SanitizedContent, even though the intended consumer of that + // information - a bidi wrapping directive - has already been run. + var wrappedTextDir = formatter.getContextDir(); + + // Unicode-wrapping UnsanitizedText gives UnsanitizedText. + // Unicode-wrapping safe HTML or JS string data gives valid, safe HTML or JS + // string data. + // ATTENTION: Do these need to be ...ForInternalBlocks()? + if (soydata.isContentKind(text, soydata.SanitizedContentKind.TEXT)) { + return new soydata.UnsanitizedText(wrappedText, wrappedTextDir); + } + if (isHtml) { + return soydata.VERY_UNSAFE.ordainSanitizedHtml(wrappedText, wrappedTextDir); + } + if (soydata.isContentKind(text, soydata.SanitizedContentKind.JS_STR_CHARS)) { + return soydata.VERY_UNSAFE.ordainSanitizedJsStrChars( + wrappedText, wrappedTextDir); + } + + // Unicode-wrapping does not conform to the syntax of the other types of + // content. For lack of anything better to do, we we do not declare a content + // kind at all by falling through to the non-SanitizedContent case below. + // TODO(user): Consider throwing a runtime error on receipt of + // SanitizedContent other than TEXT, HTML, or JS_STR_CHARS. + + // The input was not SanitizedContent, so our output isn't SanitizedContent + // either. + return wrappedText; +}; + + +// ----------------------------------------------------------------------------- +// Generated code. + + + + + + + + +// START GENERATED CODE FOR ESCAPERS. + +/** + * @type {function (*) : string} + */ +soy.esc.$$escapeUriHelper = function(v) { + return encodeURIComponent(String(v)); +}; + +/** + * Maps characters to the escaped versions for the named escape directives. + * @type {Object} + * @private + */ +soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_ = { + '\x00': '\x26#0;', + '\x22': '\x26quot;', + '\x26': '\x26amp;', + '\x27': '\x26#39;', + '\x3c': '\x26lt;', + '\x3e': '\x26gt;', + '\x09': '\x26#9;', + '\x0a': '\x26#10;', + '\x0b': '\x26#11;', + '\x0c': '\x26#12;', + '\x0d': '\x26#13;', + ' ': '\x26#32;', + '-': '\x26#45;', + '\/': '\x26#47;', + '\x3d': '\x26#61;', + '`': '\x26#96;', + '\x85': '\x26#133;', + '\xa0': '\x26#160;', + '\u2028': '\x26#8232;', + '\u2029': '\x26#8233;' +}; + +/** + * A function that can be used with String.replace. + * @param {string} ch A single character matched by a compatible matcher. + * @return {string} A token in the output language. + * @private + */ +soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_ = function(ch) { + return soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_[ch]; +}; + +/** + * Maps characters to the escaped versions for the named escape directives. + * @type {Object} + * @private + */ +soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_ = { + '\x00': '\\x00', + '\x08': '\\x08', + '\x09': '\\t', + '\x0a': '\\n', + '\x0b': '\\x0b', + '\x0c': '\\f', + '\x0d': '\\r', + '\x22': '\\x22', + '\x26': '\\x26', + '\x27': '\\x27', + '\/': '\\\/', + '\x3c': '\\x3c', + '\x3d': '\\x3d', + '\x3e': '\\x3e', + '\\': '\\\\', + '\x85': '\\x85', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + '$': '\\x24', + '(': '\\x28', + ')': '\\x29', + '*': '\\x2a', + '+': '\\x2b', + ',': '\\x2c', + '-': '\\x2d', + '.': '\\x2e', + ':': '\\x3a', + '?': '\\x3f', + '[': '\\x5b', + ']': '\\x5d', + '^': '\\x5e', + '{': '\\x7b', + '|': '\\x7c', + '}': '\\x7d' +}; + +/** + * A function that can be used with String.replace. + * @param {string} ch A single character matched by a compatible matcher. + * @return {string} A token in the output language. + * @private + */ +soy.esc.$$REPLACER_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_ = function(ch) { + return soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_[ch]; +}; + +/** + * Maps characters to the escaped versions for the named escape directives. + * @type {Object} + * @private + */ +soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_CSS_STRING_ = { + '\x00': '\\0 ', + '\x08': '\\8 ', + '\x09': '\\9 ', + '\x0a': '\\a ', + '\x0b': '\\b ', + '\x0c': '\\c ', + '\x0d': '\\d ', + '\x22': '\\22 ', + '\x26': '\\26 ', + '\x27': '\\27 ', + '(': '\\28 ', + ')': '\\29 ', + '*': '\\2a ', + '\/': '\\2f ', + ':': '\\3a ', + ';': '\\3b ', + '\x3c': '\\3c ', + '\x3d': '\\3d ', + '\x3e': '\\3e ', + '@': '\\40 ', + '\\': '\\5c ', + '{': '\\7b ', + '}': '\\7d ', + '\x85': '\\85 ', + '\xa0': '\\a0 ', + '\u2028': '\\2028 ', + '\u2029': '\\2029 ' +}; + +/** + * A function that can be used with String.replace. + * @param {string} ch A single character matched by a compatible matcher. + * @return {string} A token in the output language. + * @private + */ +soy.esc.$$REPLACER_FOR_ESCAPE_CSS_STRING_ = function(ch) { + return soy.esc.$$ESCAPE_MAP_FOR_ESCAPE_CSS_STRING_[ch]; +}; + +/** + * Maps characters to the escaped versions for the named escape directives. + * @type {Object} + * @private + */ +soy.esc.$$ESCAPE_MAP_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_ = { + '\x00': '%00', + '\x01': '%01', + '\x02': '%02', + '\x03': '%03', + '\x04': '%04', + '\x05': '%05', + '\x06': '%06', + '\x07': '%07', + '\x08': '%08', + '\x09': '%09', + '\x0a': '%0A', + '\x0b': '%0B', + '\x0c': '%0C', + '\x0d': '%0D', + '\x0e': '%0E', + '\x0f': '%0F', + '\x10': '%10', + '\x11': '%11', + '\x12': '%12', + '\x13': '%13', + '\x14': '%14', + '\x15': '%15', + '\x16': '%16', + '\x17': '%17', + '\x18': '%18', + '\x19': '%19', + '\x1a': '%1A', + '\x1b': '%1B', + '\x1c': '%1C', + '\x1d': '%1D', + '\x1e': '%1E', + '\x1f': '%1F', + ' ': '%20', + '\x22': '%22', + '\x27': '%27', + '(': '%28', + ')': '%29', + '\x3c': '%3C', + '\x3e': '%3E', + '\\': '%5C', + '{': '%7B', + '}': '%7D', + '\x7f': '%7F', + '\x85': '%C2%85', + '\xa0': '%C2%A0', + '\u2028': '%E2%80%A8', + '\u2029': '%E2%80%A9', + '\uff01': '%EF%BC%81', + '\uff03': '%EF%BC%83', + '\uff04': '%EF%BC%84', + '\uff06': '%EF%BC%86', + '\uff07': '%EF%BC%87', + '\uff08': '%EF%BC%88', + '\uff09': '%EF%BC%89', + '\uff0a': '%EF%BC%8A', + '\uff0b': '%EF%BC%8B', + '\uff0c': '%EF%BC%8C', + '\uff0f': '%EF%BC%8F', + '\uff1a': '%EF%BC%9A', + '\uff1b': '%EF%BC%9B', + '\uff1d': '%EF%BC%9D', + '\uff1f': '%EF%BC%9F', + '\uff20': '%EF%BC%A0', + '\uff3b': '%EF%BC%BB', + '\uff3d': '%EF%BC%BD' +}; + +/** + * A function that can be used with String.replace. + * @param {string} ch A single character matched by a compatible matcher. + * @return {string} A token in the output language. + * @private + */ +soy.esc.$$REPLACER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_ = function(ch) { + return soy.esc.$$ESCAPE_MAP_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_[ch]; +}; + +/** + * Matches characters that need to be escaped for the named directives. + * @type RegExp + * @private + */ +soy.esc.$$MATCHER_FOR_ESCAPE_HTML_ = /[\x00\x22\x26\x27\x3c\x3e]/g; + +/** + * Matches characters that need to be escaped for the named directives. + * @type RegExp + * @private + */ +soy.esc.$$MATCHER_FOR_NORMALIZE_HTML_ = /[\x00\x22\x27\x3c\x3e]/g; + +/** + * Matches characters that need to be escaped for the named directives. + * @type RegExp + * @private + */ +soy.esc.$$MATCHER_FOR_ESCAPE_HTML_NOSPACE_ = /[\x00\x09-\x0d \x22\x26\x27\x2d\/\x3c-\x3e`\x85\xa0\u2028\u2029]/g; + +/** + * Matches characters that need to be escaped for the named directives. + * @type RegExp + * @private + */ +soy.esc.$$MATCHER_FOR_NORMALIZE_HTML_NOSPACE_ = /[\x00\x09-\x0d \x22\x27\x2d\/\x3c-\x3e`\x85\xa0\u2028\u2029]/g; + +/** + * Matches characters that need to be escaped for the named directives. + * @type RegExp + * @private + */ +soy.esc.$$MATCHER_FOR_ESCAPE_JS_STRING_ = /[\x00\x08-\x0d\x22\x26\x27\/\x3c-\x3e\\\x85\u2028\u2029]/g; + +/** + * Matches characters that need to be escaped for the named directives. + * @type RegExp + * @private + */ +soy.esc.$$MATCHER_FOR_ESCAPE_JS_REGEX_ = /[\x00\x08-\x0d\x22\x24\x26-\/\x3a\x3c-\x3f\x5b-\x5e\x7b-\x7d\x85\u2028\u2029]/g; + +/** + * Matches characters that need to be escaped for the named directives. + * @type RegExp + * @private + */ +soy.esc.$$MATCHER_FOR_ESCAPE_CSS_STRING_ = /[\x00\x08-\x0d\x22\x26-\x2a\/\x3a-\x3e@\\\x7b\x7d\x85\xa0\u2028\u2029]/g; + +/** + * Matches characters that need to be escaped for the named directives. + * @type RegExp + * @private + */ +soy.esc.$$MATCHER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_ = /[\x00- \x22\x27-\x29\x3c\x3e\\\x7b\x7d\x7f\x85\xa0\u2028\u2029\uff01\uff03\uff04\uff06-\uff0c\uff0f\uff1a\uff1b\uff1d\uff1f\uff20\uff3b\uff3d]/g; + +/** + * A pattern that vets values produced by the named directives. + * @type RegExp + * @private + */ +soy.esc.$$FILTER_FOR_FILTER_CSS_VALUE_ = /^(?!-*(?:expression|(?:moz-)?binding))(?:[.#]?-?(?:[_a-z0-9-]+)(?:-[_a-z0-9-]+)*-?|-?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)(?:[a-z]{1,2}|%)?|!important|)$/i; + +/** + * A pattern that vets values produced by the named directives. + * @type RegExp + * @private + */ +soy.esc.$$FILTER_FOR_FILTER_NORMALIZE_URI_ = /^(?:(?:https?|mailto):|[^&:\/?#]*(?:[\/?#]|$))/i; + +/** + * A pattern that vets values produced by the named directives. + * @type RegExp + * @private + */ +soy.esc.$$FILTER_FOR_FILTER_IMAGE_DATA_URI_ = /^data:image\/(?:bmp|gif|jpe?g|png|tiff|webp);base64,[a-z0-9+\/]+=*$/i; + +/** + * A pattern that vets values produced by the named directives. + * @type RegExp + * @private + */ +soy.esc.$$FILTER_FOR_FILTER_HTML_ATTRIBUTES_ = /^(?!style|on|action|archive|background|cite|classid|codebase|data|dsync|href|longdesc|src|usemap)(?:[a-z0-9_$:-]*)$/i; + +/** + * A pattern that vets values produced by the named directives. + * @type RegExp + * @private + */ +soy.esc.$$FILTER_FOR_FILTER_HTML_ELEMENT_NAME_ = /^(?!script|style|title|textarea|xmp|no)[a-z0-9_$:-]*$/i; + +/** + * A helper for the Soy directive |escapeHtml + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$escapeHtmlHelper = function(value) { + var str = String(value); + return str.replace( + soy.esc.$$MATCHER_FOR_ESCAPE_HTML_, + soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_); +}; + +/** + * A helper for the Soy directive |normalizeHtml + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$normalizeHtmlHelper = function(value) { + var str = String(value); + return str.replace( + soy.esc.$$MATCHER_FOR_NORMALIZE_HTML_, + soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_); +}; + +/** + * A helper for the Soy directive |escapeHtmlNospace + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$escapeHtmlNospaceHelper = function(value) { + var str = String(value); + return str.replace( + soy.esc.$$MATCHER_FOR_ESCAPE_HTML_NOSPACE_, + soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_); +}; + +/** + * A helper for the Soy directive |normalizeHtmlNospace + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$normalizeHtmlNospaceHelper = function(value) { + var str = String(value); + return str.replace( + soy.esc.$$MATCHER_FOR_NORMALIZE_HTML_NOSPACE_, + soy.esc.$$REPLACER_FOR_ESCAPE_HTML__AND__NORMALIZE_HTML__AND__ESCAPE_HTML_NOSPACE__AND__NORMALIZE_HTML_NOSPACE_); +}; + +/** + * A helper for the Soy directive |escapeJsString + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$escapeJsStringHelper = function(value) { + var str = String(value); + return str.replace( + soy.esc.$$MATCHER_FOR_ESCAPE_JS_STRING_, + soy.esc.$$REPLACER_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_); +}; + +/** + * A helper for the Soy directive |escapeJsRegex + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$escapeJsRegexHelper = function(value) { + var str = String(value); + return str.replace( + soy.esc.$$MATCHER_FOR_ESCAPE_JS_REGEX_, + soy.esc.$$REPLACER_FOR_ESCAPE_JS_STRING__AND__ESCAPE_JS_REGEX_); +}; + +/** + * A helper for the Soy directive |escapeCssString + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$escapeCssStringHelper = function(value) { + var str = String(value); + return str.replace( + soy.esc.$$MATCHER_FOR_ESCAPE_CSS_STRING_, + soy.esc.$$REPLACER_FOR_ESCAPE_CSS_STRING_); +}; + +/** + * A helper for the Soy directive |filterCssValue + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$filterCssValueHelper = function(value) { + var str = String(value); + if (!soy.esc.$$FILTER_FOR_FILTER_CSS_VALUE_.test(str)) { + return 'zSoyz'; + } + return str; +}; + +/** + * A helper for the Soy directive |normalizeUri + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$normalizeUriHelper = function(value) { + var str = String(value); + return str.replace( + soy.esc.$$MATCHER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_, + soy.esc.$$REPLACER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_); +}; + +/** + * A helper for the Soy directive |filterNormalizeUri + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$filterNormalizeUriHelper = function(value) { + var str = String(value); + if (!soy.esc.$$FILTER_FOR_FILTER_NORMALIZE_URI_.test(str)) { + return '#zSoyz'; + } + return str.replace( + soy.esc.$$MATCHER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_, + soy.esc.$$REPLACER_FOR_NORMALIZE_URI__AND__FILTER_NORMALIZE_URI_); +}; + +/** + * A helper for the Soy directive |filterImageDataUri + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$filterImageDataUriHelper = function(value) { + var str = String(value); + if (!soy.esc.$$FILTER_FOR_FILTER_IMAGE_DATA_URI_.test(str)) { + return 'data:image/gif;base64,zSoyz'; + } + return str; +}; + +/** + * A helper for the Soy directive |filterHtmlAttributes + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$filterHtmlAttributesHelper = function(value) { + var str = String(value); + if (!soy.esc.$$FILTER_FOR_FILTER_HTML_ATTRIBUTES_.test(str)) { + return 'zSoyz'; + } + return str; +}; + +/** + * A helper for the Soy directive |filterHtmlElementName + * @param {*} value Can be of any type but will be coerced to a string. + * @return {string} The escaped text. + */ +soy.esc.$$filterHtmlElementNameHelper = function(value) { + var str = String(value); + if (!soy.esc.$$FILTER_FOR_FILTER_HTML_ELEMENT_NAME_.test(str)) { + return 'zSoyz'; + } + return str; +}; + +/** + * Matches all tags, HTML comments, and DOCTYPEs in tag soup HTML. + * By removing these, and replacing any '<' or '>' characters with + * entities we guarantee that the result can be embedded into a + * an attribute without introducing a tag boundary. + * + * @type {RegExp} + * @private + */ +soy.esc.$$HTML_TAG_REGEX_ = /<(?:!|\/?([a-zA-Z][a-zA-Z0-9:\-]*))(?:[^>'"]|"[^"]*"|'[^']*')*>/g; + +/** + * Matches all occurrences of '<'. + * + * @type {RegExp} + * @private + */ +soy.esc.$$LT_REGEX_ = /} + * @private + */ +soy.esc.$$SAFE_TAG_ALLOWLIST_ = {'b': 1, 'br': 1, 'em': 1, 'i': 1, 's': 1, 'sub': 1, 'sup': 1, 'u': 1}; + +// END GENERATED CODE diff --git a/demos/plane/style.css b/demos/plane/style.css index 16e2c6f412a..0c80c262425 100644 --- a/demos/plane/style.css +++ b/demos/plane/style.css @@ -1,97 +1,97 @@ -body { - background-color: #fff; - font-family: sans-serif; - margin-top: 0; -} -h1 { - font-weight: normal; - font-size: 140%; -} -.farSide { - text-align: right; -} -html[dir="RTL"] .farSide { - text-align: left; -} -.tab { - padding: 6px 12px; - text-decoration: none; - color: #000; -} -#selected { - font-weight: bold; - background-color: #ddd; - border-radius: 20px; -} - -/* Pulse the language menu once to draw attention to it. */ -#languageBorder { - border-radius: 4px; - animation: pulse 2s ease-in-out forwards; - animation-delay: 2s; -} -@keyframes pulse { - 0% { background-color: #fff } - 50% { background-color: #f00 } - 100% { background-color: #fff } -} - -#blockly { - height: 300px; - width: 100%; - border-style: solid; - border-color: #ddd; - border-width: 0 1px 1px 0; -} - -/* SVG Plane. */ -#plane { - overflow: hidden; -} -#fuselage { - fill: #fff; - stroke: #000; -} -#wing, #tail { - fill: #ddd; - stroke: #444; -} -.crew { - fill: #f44; - stroke: #000; -} -.seat1st { - fill: #88f; - stroke: #000; -} -.seat2nd { - fill: #8b8; - stroke: #000; -} -#seatYes, #seatNo { - font-size: 40pt; -} -text { - font-family: sans-serif; - font-size: 20pt; - fill: #444; -} -html[dir="RTL"] #plane text { - text-anchor: end; -} - -/* Slider. */ -.sliderTrack { - stroke: #aaa; - stroke-width: 6px; - stroke-linecap: round; -} -.sliderKnob { - fill: #ddd; - stroke: #bbc; - stroke-width: 1px; - stroke-linejoin: round; -} -.sliderKnob:hover { - fill: #eee; -} +body { + background-color: #fff; + font-family: sans-serif; + margin-top: 0; +} +h1 { + font-weight: normal; + font-size: 140%; +} +.farSide { + text-align: right; +} +html[dir="RTL"] .farSide { + text-align: left; +} +.tab { + padding: 6px 12px; + text-decoration: none; + color: #000; +} +#selected { + font-weight: bold; + background-color: #ddd; + border-radius: 20px; +} + +/* Pulse the language menu once to draw attention to it. */ +#languageBorder { + border-radius: 4px; + animation: pulse 2s ease-in-out forwards; + animation-delay: 2s; +} +@keyframes pulse { + 0% { background-color: #fff } + 50% { background-color: #f00 } + 100% { background-color: #fff } +} + +#blockly { + height: 300px; + width: 100%; + border-style: solid; + border-color: #ddd; + border-width: 0 1px 1px 0; +} + +/* SVG Plane. */ +#plane { + overflow: hidden; +} +#fuselage { + fill: #fff; + stroke: #000; +} +#wing, #tail { + fill: #ddd; + stroke: #444; +} +.crew { + fill: #f44; + stroke: #000; +} +.seat1st { + fill: #88f; + stroke: #000; +} +.seat2nd { + fill: #8b8; + stroke: #000; +} +#seatYes, #seatNo { + font-size: 40pt; +} +text { + font-family: sans-serif; + font-size: 20pt; + fill: #444; +} +html[dir="RTL"] #plane text { + text-anchor: end; +} + +/* Slider. */ +.sliderTrack { + stroke: #aaa; + stroke-width: 6px; + stroke-linecap: round; +} +.sliderKnob { + fill: #ddd; + stroke: #bbc; + stroke-width: 1px; + stroke-linejoin: round; +} +.sliderKnob:hover { + fill: #eee; +} diff --git a/demos/plane/template.soy b/demos/plane/template.soy index cbccc9ae467..8b57937b49e 100644 --- a/demos/plane/template.soy +++ b/demos/plane/template.soy @@ -1,225 +1,225 @@ -{namespace planepage} - -/** - * This is a Closure Template. - * - * See the README.txt for details. - */ - -/** - * Translated messages for use in JavaScript. - */ -{template .messages} -
      - {msg meaning="Plane.rows" desc="page text - Total number of rows of seats on an airplane.\n\nParameters:\n* %1 - number of rows of seats on an airplane. It is always an integer greater than or equal to zero."}Rows: %1{/msg} - {msg meaning="Plane.getRows" desc="block text - The number of rows on the airplane, to be used in a mathematical equation, such as: 'seats = 4 x '''rows (5)''''.\n\nParameters:\n* %1 - number of rows of seats on an airplane. It is always an integer greater than or equal to zero."}rows (%1){/msg} - {msg meaning="Plane.rows1" desc="page text - The number of rows of first-class seats on the airplane. You can see the block at [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of first-class seats on an airplane. It is always an integer greater than or equal to zero."}1st class rows: %1{/msg} - {msg meaning="Plane.getRows1" desc="block text - The number of rows of first-class seats on the, to be used in a mathematical equation. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of first-class seats on an airplane. It is always an integer greater than or equal to zero."}1st class rows (%1){/msg} - {msg meaning="Plane.rows2" desc="page text - The number of rows of second-class seats on the airplane. %1 is an integer greater or equal to zero. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of second-class seats on an airplane. It is always an integer greater than or equal to zero."}2nd class rows: %1{/msg} - {msg meaning="Plane.getRows2" desc="block text - The number of rows of second-class (also called 'economy class') seats on the airplane, to be used in a mathematical expression.\n\nParameters:\n* %1 - number of rows of second-class seats on an airplane. It is always an integer greater than or equal to zero."}2nd class rows (%1){/msg} - {msg meaning="Plane.seats" desc="page text - The total number of seats on the airplane.\n\nParameters:\n* %1 - number of seats on an airplane. It is always either the next message or an integer greater than or equal to zero."}Seats: %1{/msg} - {msg meaning="Plane.placeholder" desc="page text - A word or symbol indicating that this numeric value has not yet been determined."}?{/msg} - {msg meaning="Plane.setSeats" desc="block text - The first half of a mathematical equation determining the number of seats in an airplane, such as: ''''seats =''' 4 x rows'."}seats ={/msg} -
      -{/template} - -/** - * Web page structure. - */ -{template .start} - {call .messages /} - - - - - -
      -

      Blockly‏ >{sp} - Demos‏ >{sp} - - {msg meaning="Plane.plane" desc="title - Specifies that this is Blockly's '''Plane''' (airplane) tutorial. The word 'plane' was chosen over 'airplane' in English because it is shorter and less formal."} - Plane Seat Calculator - {/msg} - - {sp} {sp} - {for $i in range(1, $ij.maxLevel + 1)} - {sp} - {if $i == $ij.level} - {$i} - {else} - {if $i < $ij.level} - - {else} - {$i} - {/if} - {/if} - {/for} -

      -
      - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {if $ij.level > 1} - - - {/if} - - -

      - {switch $ij.level} - {case 1} - {msg meaning="Plane.description1" desc="instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=1 this level], there is only one type of seat on the plane."}An airplane has a number of rows of passenger seats. Each row contains four seats.{/msg} - {case 2} - {msg meaning="Plane.description2" desc="instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=2 this level], there are two types of seats on this plane."}An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats.{/msg} - {case 3} - {msg meaning="Plane.description3" desc="instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3 this level], there are three types of seats on this plane. Be sure to use the same terms for '1st class' and '2nd class' as you did for the earlier messages."}An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats.{/msg} - {/switch} -

      -

      - {msg meaning="Plane.instructions" desc="page text - This text appears below the airplane graphic and above the space for the user to create the formula. The number of rows an the graphic may be changed by the user with a slider. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=1] for a picture."}Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above).{/msg} -

      - - - - - - - {call .toolbox /} -
      -{/template} - -/** - * Toolboxes for each level. - */ -{template .toolbox} - -{/template} +{namespace planepage} + +/** + * This is a Closure Template. + * + * See the README.txt for details. + */ + +/** + * Translated messages for use in JavaScript. + */ +{template .messages} +
      + {msg meaning="Plane.rows" desc="page text - Total number of rows of seats on an airplane.\n\nParameters:\n* %1 - number of rows of seats on an airplane. It is always an integer greater than or equal to zero."}Rows: %1{/msg} + {msg meaning="Plane.getRows" desc="block text - The number of rows on the airplane, to be used in a mathematical equation, such as: 'seats = 4 x '''rows (5)''''.\n\nParameters:\n* %1 - number of rows of seats on an airplane. It is always an integer greater than or equal to zero."}rows (%1){/msg} + {msg meaning="Plane.rows1" desc="page text - The number of rows of first-class seats on the airplane. You can see the block at [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of first-class seats on an airplane. It is always an integer greater than or equal to zero."}1st class rows: %1{/msg} + {msg meaning="Plane.getRows1" desc="block text - The number of rows of first-class seats on the, to be used in a mathematical equation. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of first-class seats on an airplane. It is always an integer greater than or equal to zero."}1st class rows (%1){/msg} + {msg meaning="Plane.rows2" desc="page text - The number of rows of second-class seats on the airplane. %1 is an integer greater or equal to zero. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of second-class seats on an airplane. It is always an integer greater than or equal to zero."}2nd class rows: %1{/msg} + {msg meaning="Plane.getRows2" desc="block text - The number of rows of second-class (also called 'economy class') seats on the airplane, to be used in a mathematical expression.\n\nParameters:\n* %1 - number of rows of second-class seats on an airplane. It is always an integer greater than or equal to zero."}2nd class rows (%1){/msg} + {msg meaning="Plane.seats" desc="page text - The total number of seats on the airplane.\n\nParameters:\n* %1 - number of seats on an airplane. It is always either the next message or an integer greater than or equal to zero."}Seats: %1{/msg} + {msg meaning="Plane.placeholder" desc="page text - A word or symbol indicating that this numeric value has not yet been determined."}?{/msg} + {msg meaning="Plane.setSeats" desc="block text - The first half of a mathematical equation determining the number of seats in an airplane, such as: ''''seats =''' 4 x rows'."}seats ={/msg} +
      +{/template} + +/** + * Web page structure. + */ +{template .start} + {call .messages /} + + + + + +
      +

      Blockly‏ >{sp} + Demos‏ >{sp} + + {msg meaning="Plane.plane" desc="title - Specifies that this is Blockly's '''Plane''' (airplane) tutorial. The word 'plane' was chosen over 'airplane' in English because it is shorter and less formal."} + Plane Seat Calculator + {/msg} + + {sp} {sp} + {for $i in range(1, $ij.maxLevel + 1)} + {sp} + {if $i == $ij.level} + {$i} + {else} + {if $i < $ij.level} + + {else} + {$i} + {/if} + {/if} + {/for} +

      +
      + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {if $ij.level > 1} + + + {/if} + + +

      + {switch $ij.level} + {case 1} + {msg meaning="Plane.description1" desc="instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=1 this level], there is only one type of seat on the plane."}An airplane has a number of rows of passenger seats. Each row contains four seats.{/msg} + {case 2} + {msg meaning="Plane.description2" desc="instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=2 this level], there are two types of seats on this plane."}An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats.{/msg} + {case 3} + {msg meaning="Plane.description3" desc="instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3 this level], there are three types of seats on this plane. Be sure to use the same terms for '1st class' and '2nd class' as you did for the earlier messages."}An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats.{/msg} + {/switch} +

      +

      + {msg meaning="Plane.instructions" desc="page text - This text appears below the airplane graphic and above the space for the user to create the formula. The number of rows an the graphic may be changed by the user with a slider. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=1] for a picture."}Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above).{/msg} +

      + + + + + + + {call .toolbox /} +
      +{/template} + +/** + * Toolboxes for each level. + */ +{template .toolbox} + +{/template} diff --git a/demos/plane/xlf/extracted_msgs.xlf b/demos/plane/xlf/extracted_msgs.xlf index 6a4fd44ff4f..50001a5410b 100644 --- a/demos/plane/xlf/extracted_msgs.xlf +++ b/demos/plane/xlf/extracted_msgs.xlf @@ -1,77 +1,77 @@ - - - - - - Rows: %1 - page text - Total number of rows of seats on an airplane.\n\nParameters:\n* %1 - number of rows of seats on an airplane. It is always an integer greater than or equal to zero. - Plane.rows - - - seats = - block text - The first half of a mathematical equation determining the number of seats in an airplane, such as: ''''seats =''' 4 x rows'. - Plane.setSeats - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3 this level], there are three types of seats on this plane. Be sure to use the same terms for '1st class' and '2nd class' as you did for the earlier messages. - Plane.description3 - - - ? - page text - A word or symbol indicating that this numeric value has not yet been determined. - Plane.placeholder - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - page text - This text appears below the airplane graphic and above the space for the user to create the formula. The number of rows an the graphic may be changed by the user with a slider. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=1] for a picture. - Plane.instructions - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=2 this level], there are two types of seats on this plane. - Plane.description2 - - - 1st class rows (%1) - block text - The number of rows of first-class seats on the, to be used in a mathematical equation. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of first-class seats on an airplane. It is always an integer greater than or equal to zero. - Plane.getRows1 - - - 2nd class rows: %1 - page text - The number of rows of second-class seats on the airplane. %1 is an integer greater or equal to zero. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of second-class seats on an airplane. It is always an integer greater than or equal to zero. - Plane.rows2 - - - Seats: %1 - page text - The total number of seats on the airplane.\n\nParameters:\n* %1 - number of seats on an airplane. It is always either the next message or an integer greater than or equal to zero. - Plane.seats - - - Plane Seat Calculator - title - Specifies that this is Blockly's '''Plane''' (airplane) tutorial. The word 'plane' was chosen over 'airplane' in English because it is shorter and less formal. - Plane.plane - - - rows (%1) - block text - The number of rows on the airplane, to be used in a mathematical equation, such as: 'seats = 4 x '''rows (5)''''.\n\nParameters:\n* %1 - number of rows of seats on an airplane. It is always an integer greater than or equal to zero. - Plane.getRows - - - 1st class rows: %1 - page text - The number of rows of first-class seats on the airplane. You can see the block at [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of first-class seats on an airplane. It is always an integer greater than or equal to zero. - Plane.rows1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=1 this level], there is only one type of seat on the plane. - Plane.description1 - - - 2nd class rows (%1) - block text - The number of rows of second-class (also called 'economy class') seats on the airplane, to be used in a mathematical expression.\n\nParameters:\n* %1 - number of rows of second-class seats on an airplane. It is always an integer greater than or equal to zero. - Plane.getRows2 - - - - + + + + + + Rows: %1 + page text - Total number of rows of seats on an airplane.\n\nParameters:\n* %1 - number of rows of seats on an airplane. It is always an integer greater than or equal to zero. + Plane.rows + + + seats = + block text - The first half of a mathematical equation determining the number of seats in an airplane, such as: ''''seats =''' 4 x rows'. + Plane.setSeats + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3 this level], there are three types of seats on this plane. Be sure to use the same terms for '1st class' and '2nd class' as you did for the earlier messages. + Plane.description3 + + + ? + page text - A word or symbol indicating that this numeric value has not yet been determined. + Plane.placeholder + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + page text - This text appears below the airplane graphic and above the space for the user to create the formula. The number of rows an the graphic may be changed by the user with a slider. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=1] for a picture. + Plane.instructions + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=2 this level], there are two types of seats on this plane. + Plane.description2 + + + 1st class rows (%1) + block text - The number of rows of first-class seats on the, to be used in a mathematical equation. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of first-class seats on an airplane. It is always an integer greater than or equal to zero. + Plane.getRows1 + + + 2nd class rows: %1 + page text - The number of rows of second-class seats on the airplane. %1 is an integer greater or equal to zero. See [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of second-class seats on an airplane. It is always an integer greater than or equal to zero. + Plane.rows2 + + + Seats: %1 + page text - The total number of seats on the airplane.\n\nParameters:\n* %1 - number of seats on an airplane. It is always either the next message or an integer greater than or equal to zero. + Plane.seats + + + Plane Seat Calculator + title - Specifies that this is Blockly's '''Plane''' (airplane) tutorial. The word 'plane' was chosen over 'airplane' in English because it is shorter and less formal. + Plane.plane + + + rows (%1) + block text - The number of rows on the airplane, to be used in a mathematical equation, such as: 'seats = 4 x '''rows (5)''''.\n\nParameters:\n* %1 - number of rows of seats on an airplane. It is always an integer greater than or equal to zero. + Plane.getRows + + + 1st class rows: %1 + page text - The number of rows of first-class seats on the airplane. You can see the block at [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=3].\n\nParameters:\n* %1 - number of rows of first-class seats on an airplane. It is always an integer greater than or equal to zero. + Plane.rows1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + instructions - Note that in [http://blockly-share.appspot.com/static/apps/plane/plane.html?lang=en&level=1 this level], there is only one type of seat on the plane. + Plane.description1 + + + 2nd class rows (%1) + block text - The number of rows of second-class (also called 'economy class') seats on the airplane, to be used in a mathematical expression.\n\nParameters:\n* %1 - number of rows of second-class seats on an airplane. It is always an integer greater than or equal to zero. + Plane.getRows2 + + + + diff --git a/demos/plane/xlf/translated_msgs_ar.xlf b/demos/plane/xlf/translated_msgs_ar.xlf index c9b8e1689ac..722bdecf5c7 100644 --- a/demos/plane/xlf/translated_msgs_ar.xlf +++ b/demos/plane/xlf/translated_msgs_ar.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - الصفوف: %1 - - - seats = - المقاعد = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - طائرة بمقعدين في مقطورة الطيّار (للطيار ومساعده) وعدد من المقاعد في صفوف الدرجة الأولى والثانية. كل صف من صفوف الدرجة الأولى يحتوي على أربعة مقاعد. ويحتوي كل صف في الدرجة الثانية على خمسة مقاعد. - - - ? - ؟ - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - لبناء صيغة (أدناه) تقوم بحساب إجمالي عدد المقاعد في الطائرة عند تغيير الصفوف (أعلاه). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - طائرة بمقعدين في مقطورة الطيّار (للطيار ومساعده) وعدد من الصفوف يحتوي كل صف على أربعة مقاعد. - - - 1st class rows (%1) - صفوف الطبقة الأولى (%1) - - - 2nd class rows: %1 - صفوف الفئة الثانية: %1 - - - Seats: %1 - المقاعد: %1 - - - Plane Seat Calculator - آلة حاسبة لمقعد الطائرة - - - rows (%1) - الصفوف (%1) - - - 1st class rows: %1 - صفوف الطبقة الأولى: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - هنالك طائرة تحتوي على عدد من صفوف مقاعد الركاب. كل صف يحتوي على أربعة مقاعد. - - - 2nd class rows (%1) - صفوف الفئة الثانية: (%1) - - - - + + + + + + Rows: %1 + الصفوف: %1 + + + seats = + المقاعد = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + طائرة بمقعدين في مقطورة الطيّار (للطيار ومساعده) وعدد من المقاعد في صفوف الدرجة الأولى والثانية. كل صف من صفوف الدرجة الأولى يحتوي على أربعة مقاعد. ويحتوي كل صف في الدرجة الثانية على خمسة مقاعد. + + + ? + ؟ + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + لبناء صيغة (أدناه) تقوم بحساب إجمالي عدد المقاعد في الطائرة عند تغيير الصفوف (أعلاه). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + طائرة بمقعدين في مقطورة الطيّار (للطيار ومساعده) وعدد من الصفوف يحتوي كل صف على أربعة مقاعد. + + + 1st class rows (%1) + صفوف الطبقة الأولى (%1) + + + 2nd class rows: %1 + صفوف الفئة الثانية: %1 + + + Seats: %1 + المقاعد: %1 + + + Plane Seat Calculator + آلة حاسبة لمقعد الطائرة + + + rows (%1) + الصفوف (%1) + + + 1st class rows: %1 + صفوف الطبقة الأولى: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + هنالك طائرة تحتوي على عدد من صفوف مقاعد الركاب. كل صف يحتوي على أربعة مقاعد. + + + 2nd class rows (%1) + صفوف الفئة الثانية: (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_be-tarask.xlf b/demos/plane/xlf/translated_msgs_be-tarask.xlf index 4580b5f1d6e..ea757085157 100644 --- a/demos/plane/xlf/translated_msgs_be-tarask.xlf +++ b/demos/plane/xlf/translated_msgs_be-tarask.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Радкоў: %1 - - - seats = - месцаў = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Самалёт мае два месцы ў кабіне экіпажа (пілот і другі пілот), і некалькі пасажырскіх шэрагаў месцаў 1-га кляса і 2-га кляса. Кожны шэраг 1-га кляса утрымлівае чатыры месцы. Кожны шэраг 2-га кляса ўтрымлівае пяць месцаў. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Пабудаваць формулу (ніжэй), якая падлічвае агульную колькасьць месцаў у самалёце пры зьмене радоў (гл. вышэй). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Самалёт мае два месцы ў кабіне экіпажа (пілот і другі пілот), і некалькі шэрагаў пасажырскіх сядзеньняў. Кожны шэраг утрымлівае чатыры месцы. - - - 1st class rows (%1) - радкі першага клясу (%1) - - - 2nd class rows: %1 - Радкі другога клясу: %1 - - - Seats: %1 - Месцаў: %1 - - - Plane Seat Calculator - Калькулятар месцаў у самалёце - - - rows (%1) - радкоў (%1) - - - 1st class rows: %1 - Радкі першага клясу: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Самалёт мае некалькі шэрагаў пасажырскіх сядзеньняў. Кожная шэраг утрымлівае чатыры месцы. - - - 2nd class rows (%1) - радкі другога клясу (%1) - - - - + + + + + + Rows: %1 + Радкоў: %1 + + + seats = + месцаў = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Самалёт мае два месцы ў кабіне экіпажа (пілот і другі пілот), і некалькі пасажырскіх шэрагаў месцаў 1-га кляса і 2-га кляса. Кожны шэраг 1-га кляса утрымлівае чатыры месцы. Кожны шэраг 2-га кляса ўтрымлівае пяць месцаў. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Пабудаваць формулу (ніжэй), якая падлічвае агульную колькасьць месцаў у самалёце пры зьмене радоў (гл. вышэй). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Самалёт мае два месцы ў кабіне экіпажа (пілот і другі пілот), і некалькі шэрагаў пасажырскіх сядзеньняў. Кожны шэраг утрымлівае чатыры месцы. + + + 1st class rows (%1) + радкі першага клясу (%1) + + + 2nd class rows: %1 + Радкі другога клясу: %1 + + + Seats: %1 + Месцаў: %1 + + + Plane Seat Calculator + Калькулятар месцаў у самалёце + + + rows (%1) + радкоў (%1) + + + 1st class rows: %1 + Радкі першага клясу: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Самалёт мае некалькі шэрагаў пасажырскіх сядзеньняў. Кожная шэраг утрымлівае чатыры месцы. + + + 2nd class rows (%1) + радкі другога клясу (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_br.xlf b/demos/plane/xlf/translated_msgs_br.xlf index 4a7fc0c26c2..b7e28f452da 100644 --- a/demos/plane/xlf/translated_msgs_br.xlf +++ b/demos/plane/xlf/translated_msgs_br.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Renkennadoù : %1 - - - seats = - azezennoù = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - En un nijerez ez eus div azezenn el logell leviañ(evit al loman hag an eil loman), hag un toullad renkennadoù azezennoù tremenidi kentañ hag eil klas. Peder azezenn zo e pep renkennad kentañ klas. Pemp azezenn zo e pemp renkennad eil klas. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Sevel ur formulenn (amañ dindan) evit jediñ an niver a azezennoù en holl en nijerez pa vez kemmet an niver a renkennadoù (amañ a-us). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - En un nijerez ez eus div azezenn el logell leviañ(evit al loman hag an eil loman), hag ur toullad renkennadoù azezennoù evit an dremenidi. Peder azezenn zo e pep renkennad. - - - 1st class rows (%1) - Renkennadoù kentañ klas (%1) - - - 2nd class rows: %1 - Renkennadoù eil klas : %1 - - - Seats: %1 - Azezennoù : %1 - - - Plane Seat Calculator - Jederez azezenn nijerez - - - rows (%1) - renkennadoù (%1) - - - 1st class rows: %1 - Renkennadoù kentañ klas : %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Un nijerez he deus un toullad renkennadoù azezennoù evit ar veajourien. Peder azezenn a zo e pep renkennad. - - - 2nd class rows (%1) - Renkennadoù eil klas (%1) - - - - + + + + + + Rows: %1 + Renkennadoù : %1 + + + seats = + azezennoù = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + En un nijerez ez eus div azezenn el logell leviañ(evit al loman hag an eil loman), hag un toullad renkennadoù azezennoù tremenidi kentañ hag eil klas. Peder azezenn zo e pep renkennad kentañ klas. Pemp azezenn zo e pemp renkennad eil klas. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Sevel ur formulenn (amañ dindan) evit jediñ an niver a azezennoù en holl en nijerez pa vez kemmet an niver a renkennadoù (amañ a-us). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + En un nijerez ez eus div azezenn el logell leviañ(evit al loman hag an eil loman), hag ur toullad renkennadoù azezennoù evit an dremenidi. Peder azezenn zo e pep renkennad. + + + 1st class rows (%1) + Renkennadoù kentañ klas (%1) + + + 2nd class rows: %1 + Renkennadoù eil klas : %1 + + + Seats: %1 + Azezennoù : %1 + + + Plane Seat Calculator + Jederez azezenn nijerez + + + rows (%1) + renkennadoù (%1) + + + 1st class rows: %1 + Renkennadoù kentañ klas : %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Un nijerez he deus un toullad renkennadoù azezennoù evit ar veajourien. Peder azezenn a zo e pep renkennad. + + + 2nd class rows (%1) + Renkennadoù eil klas (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_ca.xlf b/demos/plane/xlf/translated_msgs_ca.xlf index 17dfe65e09e..1d7cd2c55d6 100644 --- a/demos/plane/xlf/translated_msgs_ca.xlf +++ b/demos/plane/xlf/translated_msgs_ca.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Files: %1 - - - seats = - seients = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Un avió té dos seients en la cabina de vol (pel pilot i copilot) i un nombre de files per seients de passatgers de primera classe i de segona classe. Cada fila de primera classe conté quatre seients. Cada fila de segona classe conté cinc seients. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Construïu una fórmula (a sota) que calculi el nombre total de seients de l'avió a mida que canviïn les files (a dalt). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Un avió té dos seients en la cabina de vol (pel pilot i pel copilot) i un nombre de files de seients de passatgers. Cada fila conté quatre seients. - - - 1st class rows (%1) - files de primera classe (%1) - - - 2nd class rows: %1 - files de segona classe: %1 - - - Seats: %1 - Seients: %1 - - - Plane Seat Calculator - Calculadora de seients d'avió - - - rows (%1) - files (%1) - - - 1st class rows: %1 - files de primera classe: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Un avió té un nombre de files de seients de passatgers. Cada fila conté quatre seients. - - - 2nd class rows (%1) - files de segona classe (%1) - - - - + + + + + + Rows: %1 + Files: %1 + + + seats = + seients = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Un avió té dos seients en la cabina de vol (pel pilot i copilot) i un nombre de files per seients de passatgers de primera classe i de segona classe. Cada fila de primera classe conté quatre seients. Cada fila de segona classe conté cinc seients. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Construïu una fórmula (a sota) que calculi el nombre total de seients de l'avió a mida que canviïn les files (a dalt). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Un avió té dos seients en la cabina de vol (pel pilot i pel copilot) i un nombre de files de seients de passatgers. Cada fila conté quatre seients. + + + 1st class rows (%1) + files de primera classe (%1) + + + 2nd class rows: %1 + files de segona classe: %1 + + + Seats: %1 + Seients: %1 + + + Plane Seat Calculator + Calculadora de seients d'avió + + + rows (%1) + files (%1) + + + 1st class rows: %1 + files de primera classe: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Un avió té un nombre de files de seients de passatgers. Cada fila conté quatre seients. + + + 2nd class rows (%1) + files de segona classe (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_da.xlf b/demos/plane/xlf/translated_msgs_da.xlf index 752fe24f5b8..55ba324b827 100644 --- a/demos/plane/xlf/translated_msgs_da.xlf +++ b/demos/plane/xlf/translated_msgs_da.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Rækker: %1 - - - seats = - sæder = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Et fly har to pladser i cockpittet (til pilot og med-pilot), og et antal rækker af 1. klasses og 2. klasses passagersæder. Hver 1. klasses række indeholder fire sæder. Hver 2. klasses række indeholder fem sæder. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Opbyg en formel (nedenfor), der beregner det samlede antal pladser på flyet, hvis antal rækker ændres (ovenfor). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Et fly har to pladser i cockpittet (til pilot og med-pilot), og et antal rækker af passagersæder. Hver række indeholder fire sæder. - - - 1st class rows (%1) - 1. klasse rækker (%1) - - - 2nd class rows: %1 - 2. klasse rækker: %1 - - - Seats: %1 - Sæder: %1 - - - Plane Seat Calculator - Flysædelommeregner - - - rows (%1) - rækker (%1) - - - 1st class rows: %1 - 1. klasse rækker: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Et fly har et antal rækker af passagersæder. Hver række indeholder fire sæder. - - - 2nd class rows (%1) - 2. klasse rækker (%1) - - - - + + + + + + Rows: %1 + Rækker: %1 + + + seats = + sæder = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Et fly har to pladser i cockpittet (til pilot og med-pilot), og et antal rækker af 1. klasses og 2. klasses passagersæder. Hver 1. klasses række indeholder fire sæder. Hver 2. klasses række indeholder fem sæder. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Opbyg en formel (nedenfor), der beregner det samlede antal pladser på flyet, hvis antal rækker ændres (ovenfor). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Et fly har to pladser i cockpittet (til pilot og med-pilot), og et antal rækker af passagersæder. Hver række indeholder fire sæder. + + + 1st class rows (%1) + 1. klasse rækker (%1) + + + 2nd class rows: %1 + 2. klasse rækker: %1 + + + Seats: %1 + Sæder: %1 + + + Plane Seat Calculator + Flysædelommeregner + + + rows (%1) + rækker (%1) + + + 1st class rows: %1 + 1. klasse rækker: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Et fly har et antal rækker af passagersæder. Hver række indeholder fire sæder. + + + 2nd class rows (%1) + 2. klasse rækker (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_de.xlf b/demos/plane/xlf/translated_msgs_de.xlf index f06bc77253e..54b68dbd293 100644 --- a/demos/plane/xlf/translated_msgs_de.xlf +++ b/demos/plane/xlf/translated_msgs_de.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Reihen: %1 - - - seats = - Sitze = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Ein Flugzeug hat zwei Sitze im Pilotenstand (für den Piloten und Co-Piloten) und eine Anzahl an Reihen mit Passagiersitzen der 1. und 2. Klasse. Jede 1.-Klasse-Reihe enthält vier Sitze. Jede 2.-Klasse-Reihe enthält fünf Sitze. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Erstelle eine Formel (unten), die die gesamte Anzahl an Sitzen im Flugzeug berechnet, wenn die Reihen (oben) geändert werden. - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Ein Flugzeug hat zwei Sitze im Pilotenstand (für den Piloten und Co-Piloten) und eine Anzahl an Reihen mit Passagiersitzen. Jede Reihe enthält vier Sitze. - - - 1st class rows (%1) - Reihen der 1. Klasse (%1) - - - 2nd class rows: %1 - Reihen der 2. Klasse: %1 - - - Seats: %1 - Sitze: %1 - - - Plane Seat Calculator - Flugzeugsitzrechner - - - rows (%1) - Reihen (%1) - - - 1st class rows: %1 - Reihen der 1. Klasse: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Ein Flugzeug hat eine Anzahl an Reihen mit Passagiersitzen. Jede Reihe enthält vier Sitze. - - - 2nd class rows (%1) - Reihen der 2. Klasse (%1) - - - - + + + + + + Rows: %1 + Reihen: %1 + + + seats = + Sitze = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Ein Flugzeug hat zwei Sitze im Pilotenstand (für den Piloten und Co-Piloten) und eine Anzahl an Reihen mit Passagiersitzen der 1. und 2. Klasse. Jede 1.-Klasse-Reihe enthält vier Sitze. Jede 2.-Klasse-Reihe enthält fünf Sitze. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Erstelle eine Formel (unten), die die gesamte Anzahl an Sitzen im Flugzeug berechnet, wenn die Reihen (oben) geändert werden. + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Ein Flugzeug hat zwei Sitze im Pilotenstand (für den Piloten und Co-Piloten) und eine Anzahl an Reihen mit Passagiersitzen. Jede Reihe enthält vier Sitze. + + + 1st class rows (%1) + Reihen der 1. Klasse (%1) + + + 2nd class rows: %1 + Reihen der 2. Klasse: %1 + + + Seats: %1 + Sitze: %1 + + + Plane Seat Calculator + Flugzeugsitzrechner + + + rows (%1) + Reihen (%1) + + + 1st class rows: %1 + Reihen der 1. Klasse: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Ein Flugzeug hat eine Anzahl an Reihen mit Passagiersitzen. Jede Reihe enthält vier Sitze. + + + 2nd class rows (%1) + Reihen der 2. Klasse (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_el.xlf b/demos/plane/xlf/translated_msgs_el.xlf index 5acb291d2c3..2f9c6a4a869 100644 --- a/demos/plane/xlf/translated_msgs_el.xlf +++ b/demos/plane/xlf/translated_msgs_el.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Σειρές: %1 - - - seats = - καθίσματα = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Ένα αεροπλάνο έχει δύο καθίσματα στον θάλαμο διακυβέρνησης (για τον κυβερνήτη και τον συγκυβερνήτη), καθώς και έναν αριθμό σειρών καθισμάτων για την 1η και 2η θέση. Κάθε σειρά της 1ης θέσης έχει τέσσερα καθίσματα και κάθε σειρά της 2ης θέσης έχει πέντε καθίσματα. - - - ? - ; - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Φτιάξε έναν τύπο (κάτω) που θα υπολογίζει τον συνολικό αριθμό καθισμάτων του αεροπλάνου καθώς αλλάζουν οι σειρές (πάνω). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Ένα αεροπλάνο έχει δύο καθίσματα στον θάλαμο διακυβέρνησης (για τον κυβερνήτη και τον συγκυβερνήτη), καθώς και έναν αριθμό από σειρές καθισμάτων επιβατών. Κάθε σειρά έχει τέσσερα καθίσματα. - - - 1st class rows (%1) - Σειρές 1ης θέσης (%1) - - - 2nd class rows: %1 - Σειρές 2ης θέσης: %1 - - - Seats: %1 - Καθίσματα: %1 - - - Plane Seat Calculator - Υπολογισμός Θέσεων Σε Αεροπλάνο - - - rows (%1) - σειρές (%1) - - - 1st class rows: %1 - Σειρές 1ης θέσης: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Ένα αεροπλάνο έχει έναν συγκεκριμένο αριθμό σειρών καθισμάτων επιβατών. Κάθε σειρά έχει τέσσερα καθίσματα. - - - 2nd class rows (%1) - Σειρές 2ης θέσης (%1) - - - - + + + + + + Rows: %1 + Σειρές: %1 + + + seats = + καθίσματα = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Ένα αεροπλάνο έχει δύο καθίσματα στον θάλαμο διακυβέρνησης (για τον κυβερνήτη και τον συγκυβερνήτη), καθώς και έναν αριθμό σειρών καθισμάτων για την 1η και 2η θέση. Κάθε σειρά της 1ης θέσης έχει τέσσερα καθίσματα και κάθε σειρά της 2ης θέσης έχει πέντε καθίσματα. + + + ? + ; + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Φτιάξε έναν τύπο (κάτω) που θα υπολογίζει τον συνολικό αριθμό καθισμάτων του αεροπλάνου καθώς αλλάζουν οι σειρές (πάνω). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Ένα αεροπλάνο έχει δύο καθίσματα στον θάλαμο διακυβέρνησης (για τον κυβερνήτη και τον συγκυβερνήτη), καθώς και έναν αριθμό από σειρές καθισμάτων επιβατών. Κάθε σειρά έχει τέσσερα καθίσματα. + + + 1st class rows (%1) + Σειρές 1ης θέσης (%1) + + + 2nd class rows: %1 + Σειρές 2ης θέσης: %1 + + + Seats: %1 + Καθίσματα: %1 + + + Plane Seat Calculator + Υπολογισμός Θέσεων Σε Αεροπλάνο + + + rows (%1) + σειρές (%1) + + + 1st class rows: %1 + Σειρές 1ης θέσης: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Ένα αεροπλάνο έχει έναν συγκεκριμένο αριθμό σειρών καθισμάτων επιβατών. Κάθε σειρά έχει τέσσερα καθίσματα. + + + 2nd class rows (%1) + Σειρές 2ης θέσης (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_en.xlf b/demos/plane/xlf/translated_msgs_en.xlf index e471a00085b..d6af71e3cab 100644 --- a/demos/plane/xlf/translated_msgs_en.xlf +++ b/demos/plane/xlf/translated_msgs_en.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Rows: %1 - - - seats = - seats = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - - - 1st class rows (%1) - 1st class rows (%1) - - - 2nd class rows: %1 - 2nd class rows: %1 - - - Seats: %1 - Seats: %1 - - - Plane Seat Calculator - Plane Seat Calculator - - - rows (%1) - rows (%1) - - - 1st class rows: %1 - 1st class rows: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - An airplane has a number of rows of passenger seats. Each row contains four seats. - - - 2nd class rows (%1) - 2nd class rows (%1) - - - - + + + + + + Rows: %1 + Rows: %1 + + + seats = + seats = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + + + 1st class rows (%1) + 1st class rows (%1) + + + 2nd class rows: %1 + 2nd class rows: %1 + + + Seats: %1 + Seats: %1 + + + Plane Seat Calculator + Plane Seat Calculator + + + rows (%1) + rows (%1) + + + 1st class rows: %1 + 1st class rows: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + An airplane has a number of rows of passenger seats. Each row contains four seats. + + + 2nd class rows (%1) + 2nd class rows (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_es.xlf b/demos/plane/xlf/translated_msgs_es.xlf index e2022b5f123..73b64a7718c 100644 --- a/demos/plane/xlf/translated_msgs_es.xlf +++ b/demos/plane/xlf/translated_msgs_es.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Filas: %1 - - - seats = - asientos = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Un avión tiene dos asientos en la cabina de vuelo (para el piloto y co-piloto), y un número de filas de asientos para pasajeros de primera y segunda clase. Cada fila de la primera clase contiene cuatro asientos. Cada fila de la segunda clase contiene cinco asientos. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Construir una fórmula (abajo) que calcule el número total de asientos en el avión cuando las filas sean cambiadas (arriba). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Un avión tiene dos asientos en la cabina de vuelo (para el piloto y co-piloto), y un número de filas de asientos de pasajeros. Cada fila contiene cuatro asientos. - - - 1st class rows (%1) - Filas de primera clase: (%1) - - - 2nd class rows: %1 - Filas de segunda clase: %1 - - - Seats: %1 - Asientos: %1 - - - Plane Seat Calculator - Calculadora de asientos de avión - - - rows (%1) - filas (%1) - - - 1st class rows: %1 - Filas de primera clase: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Un avión  tiene un número de filas de asientos de pasajeros. Cada fila contiene cuatro asientos. - - - 2nd class rows (%1) - Filas de segunda clase: (%1) - - - - + + + + + + Rows: %1 + Filas: %1 + + + seats = + asientos = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Un avión tiene dos asientos en la cabina de vuelo (para el piloto y co-piloto), y un número de filas de asientos para pasajeros de primera y segunda clase. Cada fila de la primera clase contiene cuatro asientos. Cada fila de la segunda clase contiene cinco asientos. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Construir una fórmula (abajo) que calcule el número total de asientos en el avión cuando las filas sean cambiadas (arriba). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Un avión tiene dos asientos en la cabina de vuelo (para el piloto y co-piloto), y un número de filas de asientos de pasajeros. Cada fila contiene cuatro asientos. + + + 1st class rows (%1) + Filas de primera clase: (%1) + + + 2nd class rows: %1 + Filas de segunda clase: %1 + + + Seats: %1 + Asientos: %1 + + + Plane Seat Calculator + Calculadora de asientos de avión + + + rows (%1) + filas (%1) + + + 1st class rows: %1 + Filas de primera clase: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Un avión  tiene un número de filas de asientos de pasajeros. Cada fila contiene cuatro asientos. + + + 2nd class rows (%1) + Filas de segunda clase: (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_et.xlf b/demos/plane/xlf/translated_msgs_et.xlf index d88be0a9f73..7254a0f12be 100644 --- a/demos/plane/xlf/translated_msgs_et.xlf +++ b/demos/plane/xlf/translated_msgs_et.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Ridu: %1 - - - seats = - istmete arv = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Lennuki kokpitis on kaks istet (üks kummalegi piloodile), mingi arv ridu 1. klassi reisijatele ja mingi arv ridu 2. klassi reisijatele. Igas 1. klassi reas on neli istet, igas 2. klassi reas viis istet. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Ehita plokkidest valem, mis arvutab istmete arvu lennukis õigesti sõltumata ridade arvust (seda saad muuta lennuki juures oleva liuguriga). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Lennuki kokpitis on kaks istet (üks kummalegi piloodile) ja mingi arv istemridu reisijatele. Igas reas on neli istet. - - - 1st class rows (%1) - 1. klassi ridu (%1) - - - 2nd class rows: %1 - 2. klassi ridu: %1 - - - Seats: %1 - Istmeid: %1 - - - Plane Seat Calculator - Lennukiistmete kalkulaator - - - rows (%1) - rows (%1) - - - 1st class rows: %1 - 1. klassi ridu: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Lennukis on reisijate istmed mitmes reas. Igas reas on neli istet. - - - 2nd class rows (%1) - 2. klassi ridu (%1) - - - - + + + + + + Rows: %1 + Ridu: %1 + + + seats = + istmete arv = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Lennuki kokpitis on kaks istet (üks kummalegi piloodile), mingi arv ridu 1. klassi reisijatele ja mingi arv ridu 2. klassi reisijatele. Igas 1. klassi reas on neli istet, igas 2. klassi reas viis istet. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Ehita plokkidest valem, mis arvutab istmete arvu lennukis õigesti sõltumata ridade arvust (seda saad muuta lennuki juures oleva liuguriga). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Lennuki kokpitis on kaks istet (üks kummalegi piloodile) ja mingi arv istemridu reisijatele. Igas reas on neli istet. + + + 1st class rows (%1) + 1. klassi ridu (%1) + + + 2nd class rows: %1 + 2. klassi ridu: %1 + + + Seats: %1 + Istmeid: %1 + + + Plane Seat Calculator + Lennukiistmete kalkulaator + + + rows (%1) + rows (%1) + + + 1st class rows: %1 + 1. klassi ridu: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Lennukis on reisijate istmed mitmes reas. Igas reas on neli istet. + + + 2nd class rows (%1) + 2. klassi ridu (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_fa.xlf b/demos/plane/xlf/translated_msgs_fa.xlf index 264ec310444..19af7beec1e 100644 --- a/demos/plane/xlf/translated_msgs_fa.xlf +++ b/demos/plane/xlf/translated_msgs_fa.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - ردیف: %1 - - - seats = - صندلی‌ها = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - یک هواپیما دو صندلی در کابین خلبان دارد (برای خلبان و کمک خلبان) و تهداد از صندلی‌ها مسافرین درجه یک و درجه دو. هر ردیف درجه یک شامل چهار صندلی است. هر ردیف درجه دو شامل پنج صندلی است. - - - ? - ؟ - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - یک فرمول بسازید (پایین) که تعداد کل صندلی‌های هواپیما با تغییر ردیف را حساب کند (بالا). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - یک هواپیما دو صندلی در عرشهٔ پرواز دارد (برای خلبان و کمک خلبان) و تعدادی صندلی مسافرین. هر ردیف شامل چهار صندلی است. - - - 1st class rows (%1) - اولین کلاس ردیف‌ها (%1) - - - 2nd class rows: %1 - دومین کلاس ردیف: %1 - - - Seats: %1 - صندلی‌ها: %1 - - - Plane Seat Calculator - محاسبه‌گر صندلی‌های هواپیما - - - rows (%1) - ردیف‌ها (%1) - - - 1st class rows: %1 - اولین ردیف کلاس: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - یک هواپیما تعداد از صندلی‌های مسافرین را دارد. هر ردیف شمال چهار صندلی است. - - - 2nd class rows (%1) - دومین کلاس ردیف‌ها (%1) - - - - + + + + + + Rows: %1 + ردیف: %1 + + + seats = + صندلی‌ها = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + یک هواپیما دو صندلی در کابین خلبان دارد (برای خلبان و کمک خلبان) و تهداد از صندلی‌ها مسافرین درجه یک و درجه دو. هر ردیف درجه یک شامل چهار صندلی است. هر ردیف درجه دو شامل پنج صندلی است. + + + ? + ؟ + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + یک فرمول بسازید (پایین) که تعداد کل صندلی‌های هواپیما با تغییر ردیف را حساب کند (بالا). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + یک هواپیما دو صندلی در عرشهٔ پرواز دارد (برای خلبان و کمک خلبان) و تعدادی صندلی مسافرین. هر ردیف شامل چهار صندلی است. + + + 1st class rows (%1) + اولین کلاس ردیف‌ها (%1) + + + 2nd class rows: %1 + دومین کلاس ردیف: %1 + + + Seats: %1 + صندلی‌ها: %1 + + + Plane Seat Calculator + محاسبه‌گر صندلی‌های هواپیما + + + rows (%1) + ردیف‌ها (%1) + + + 1st class rows: %1 + اولین ردیف کلاس: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + یک هواپیما تعداد از صندلی‌های مسافرین را دارد. هر ردیف شمال چهار صندلی است. + + + 2nd class rows (%1) + دومین کلاس ردیف‌ها (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_fr.xlf b/demos/plane/xlf/translated_msgs_fr.xlf index 9485da29bd3..e2d0778f23b 100644 --- a/demos/plane/xlf/translated_msgs_fr.xlf +++ b/demos/plane/xlf/translated_msgs_fr.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Rangées : %1 - - - seats = - sièges = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Un avion a deux sièges dans la cabine de pilotage (pour le pilote et le copilote), et un certain nombre de rangées de sièges passager de première et seconde classes. Chaque rangée de première classe contient quatre sièges. Chaque rangée de seconde classe contient cinq sièges. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Construire une formule (ci-dessous) qui calcule le nombre total de sièges dans l’avion quand le nombre de rangées est modifié (ci-dessus). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Un avion a deux sièges dans le poste de pilotage (pour le pilote et le copilote), et un certain nombre de rangées de sièges passager. Chaque rangée contient quatre sièges. - - - 1st class rows (%1) - rangées de première classe (%1) - - - 2nd class rows: %1 - rangées de seconde classe : %1 - - - Seats: %1 - Sièges : %1 - - - Plane Seat Calculator - Calculateur de sièges d’avion - - - rows (%1) - rangées (%1) - - - 1st class rows: %1 - rangées de première classe : %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Un avion a un nombre de rangées de sièges passager. Chaque rangée contient quatre sièges. - - - 2nd class rows (%1) - rangées de seconde classe (%1) - - - - + + + + + + Rows: %1 + Rangées : %1 + + + seats = + sièges = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Un avion a deux sièges dans la cabine de pilotage (pour le pilote et le copilote), et un certain nombre de rangées de sièges passager de première et seconde classes. Chaque rangée de première classe contient quatre sièges. Chaque rangée de seconde classe contient cinq sièges. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Construire une formule (ci-dessous) qui calcule le nombre total de sièges dans l’avion quand le nombre de rangées est modifié (ci-dessus). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Un avion a deux sièges dans le poste de pilotage (pour le pilote et le copilote), et un certain nombre de rangées de sièges passager. Chaque rangée contient quatre sièges. + + + 1st class rows (%1) + rangées de première classe (%1) + + + 2nd class rows: %1 + rangées de seconde classe : %1 + + + Seats: %1 + Sièges : %1 + + + Plane Seat Calculator + Calculateur de sièges d’avion + + + rows (%1) + rangées (%1) + + + 1st class rows: %1 + rangées de première classe : %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Un avion a un nombre de rangées de sièges passager. Chaque rangée contient quatre sièges. + + + 2nd class rows (%1) + rangées de seconde classe (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_he.xlf b/demos/plane/xlf/translated_msgs_he.xlf index 55ac148c5ae..4aef76290a8 100644 --- a/demos/plane/xlf/translated_msgs_he.xlf +++ b/demos/plane/xlf/translated_msgs_he.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - שורות: %1 - - - seats = - מושבים = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - במטוס יש שני מושבים עבור הצוות (בשביל הטייס וטייס המשנה), ומספר שורות מושבים במחלקת הנוסעים הראשונה ובמחלקת הנוסעים השנייה. כל שורה במחלקה הראשונה מכילה ארבעה מושבים. כל שורה במחלקה השנייה מכילה חמישה מושבים. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - בנה נוסחה (למטה) אשר תחשב את סך כל המושבים במטוס בהתאם לשינוי מספר השורות (למעלה). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - במטוס יש שני מושבים עבור הצוות (בשביל הטייס וטייס המשנה), ומספר שורות עם מושבי נוסעים. בכל שורה יש ארבעה מושבים. - - - 1st class rows (%1) - שורות במחלקה ראשונה (%1) - - - 2nd class rows: %1 - שורות במחלקה שנייה: %1 - - - Seats: %1 - מושבים: %1 - - - Plane Seat Calculator - מחשבון מושב במטוס - - - rows (%1) - שורות (%1) - - - 1st class rows: %1 - שורות במחלקה ראשונה: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - במטוס יש מספר שורות עם מושבי נוסעים. בכל שורה יש ארבעה מושבים. - - - 2nd class rows (%1) - שורות במחלקה שנייה: (%1) - - - - + + + + + + Rows: %1 + שורות: %1 + + + seats = + מושבים = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + במטוס יש שני מושבים עבור הצוות (בשביל הטייס וטייס המשנה), ומספר שורות מושבים במחלקת הנוסעים הראשונה ובמחלקת הנוסעים השנייה. כל שורה במחלקה הראשונה מכילה ארבעה מושבים. כל שורה במחלקה השנייה מכילה חמישה מושבים. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + בנה נוסחה (למטה) אשר תחשב את סך כל המושבים במטוס בהתאם לשינוי מספר השורות (למעלה). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + במטוס יש שני מושבים עבור הצוות (בשביל הטייס וטייס המשנה), ומספר שורות עם מושבי נוסעים. בכל שורה יש ארבעה מושבים. + + + 1st class rows (%1) + שורות במחלקה ראשונה (%1) + + + 2nd class rows: %1 + שורות במחלקה שנייה: %1 + + + Seats: %1 + מושבים: %1 + + + Plane Seat Calculator + מחשבון מושב במטוס + + + rows (%1) + שורות (%1) + + + 1st class rows: %1 + שורות במחלקה ראשונה: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + במטוס יש מספר שורות עם מושבי נוסעים. בכל שורה יש ארבעה מושבים. + + + 2nd class rows (%1) + שורות במחלקה שנייה: (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_hrx.xlf b/demos/plane/xlf/translated_msgs_hrx.xlf index 263d3050749..3241886d727 100644 --- a/demos/plane/xlf/translated_msgs_hrx.xlf +++ b/demos/plane/xlf/translated_msgs_hrx.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Reihe: %1 - - - seats = - Sitze = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - En Fluchzeich hot zwooi Sitze im Pilotstand (für den Pilot und Co-Pilot) und en Oonzohl an Reihe mit Passagiersitze der 1. und 2. Klasse. Jede 1.-Klasse-Reih enthält vier Sitze. Jede 2.-Klasse-Reih enthält fünf Sitze. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Erstell en Formel (unne), die die gesamte Oonzohl an Sitze im Fluchzeich berechnet, wenn die Reihe (uwe) geännert sin. - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - En Fluchzeich hot zwooi Sitze im Pilotestand (für den Pilot und Co-Pilot) und en Oonzohl an Reihe mit Passagiersitze. Jede Reih enthält vier Sitze. - - - 1st class rows (%1) - Reihe von der 1. Klasse (%1) - - - 2nd class rows: %1 - Reihe von der 2. Klasse: %1 - - - Seats: %1 - Sitz: %1 - - - Plane Seat Calculator - Fluchzeichsitzrechner - - - rows (%1) - Reihe (%1) - - - 1st class rows: %1 - Reihe von der 1. Klasse: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - En Fluchzeich hot en Oonzohl an Reihe mit Passagiersitze. Jede Reih enthält vier Sitze. - - - 2nd class rows (%1) - Reihe von der 2. Klasse (%1) - - - - + + + + + + Rows: %1 + Reihe: %1 + + + seats = + Sitze = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + En Fluchzeich hot zwooi Sitze im Pilotstand (für den Pilot und Co-Pilot) und en Oonzohl an Reihe mit Passagiersitze der 1. und 2. Klasse. Jede 1.-Klasse-Reih enthält vier Sitze. Jede 2.-Klasse-Reih enthält fünf Sitze. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Erstell en Formel (unne), die die gesamte Oonzohl an Sitze im Fluchzeich berechnet, wenn die Reihe (uwe) geännert sin. + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + En Fluchzeich hot zwooi Sitze im Pilotestand (für den Pilot und Co-Pilot) und en Oonzohl an Reihe mit Passagiersitze. Jede Reih enthält vier Sitze. + + + 1st class rows (%1) + Reihe von der 1. Klasse (%1) + + + 2nd class rows: %1 + Reihe von der 2. Klasse: %1 + + + Seats: %1 + Sitz: %1 + + + Plane Seat Calculator + Fluchzeichsitzrechner + + + rows (%1) + Reihe (%1) + + + 1st class rows: %1 + Reihe von der 1. Klasse: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + En Fluchzeich hot en Oonzohl an Reihe mit Passagiersitze. Jede Reih enthält vier Sitze. + + + 2nd class rows (%1) + Reihe von der 2. Klasse (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_hu.xlf b/demos/plane/xlf/translated_msgs_hu.xlf index c44d1aa9d4a..acf7f3e0e51 100644 --- a/demos/plane/xlf/translated_msgs_hu.xlf +++ b/demos/plane/xlf/translated_msgs_hu.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Sorok száma: %1 - - - seats = - Ülések száma = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Egy repülőgépnek 2 ülése van a pilótafülkében (a pilótának és a másodpilótának), az utasok 1. és 2. osztályon utazhatnak. Az 1. osztályon négy szék van egy sorban. A 2. osztályon öt szék van egy sorban. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Készítsd el a képletet (lent) amivel kiszámolható, hogy hány ülés van összesen a repülőgépen annak függvényében, ahogy (fent) állítod a sorok számát. - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Egy repülőgépnek 2 ülése van a pilótafülkében (a pilótának és a másodpilótának), az utasok több sorban ülnek az utastérben. Az utastér minden sorában négy szék van. - - - 1st class rows (%1) - 1. osztály sorai (%1) - - - 2nd class rows: %1 - 2. osztály: %1 sor - - - Seats: %1 - Ülések száma összesen: %1 - - - Plane Seat Calculator - Repülőgép alkalmazás - - - rows (%1) - Sorok száma (%1) - - - 1st class rows: %1 - 1. osztály: %1 sor - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Egy repülőgépen az utasok több sorban ülnek az utastérben. Az utastér minden sorában négy szék van. - - - 2nd class rows (%1) - 2. osztály sorai (%1) - - - - + + + + + + Rows: %1 + Sorok száma: %1 + + + seats = + Ülések száma = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Egy repülőgépnek 2 ülése van a pilótafülkében (a pilótának és a másodpilótának), az utasok 1. és 2. osztályon utazhatnak. Az 1. osztályon négy szék van egy sorban. A 2. osztályon öt szék van egy sorban. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Készítsd el a képletet (lent) amivel kiszámolható, hogy hány ülés van összesen a repülőgépen annak függvényében, ahogy (fent) állítod a sorok számát. + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Egy repülőgépnek 2 ülése van a pilótafülkében (a pilótának és a másodpilótának), az utasok több sorban ülnek az utastérben. Az utastér minden sorában négy szék van. + + + 1st class rows (%1) + 1. osztály sorai (%1) + + + 2nd class rows: %1 + 2. osztály: %1 sor + + + Seats: %1 + Ülések száma összesen: %1 + + + Plane Seat Calculator + Repülőgép alkalmazás + + + rows (%1) + Sorok száma (%1) + + + 1st class rows: %1 + 1. osztály: %1 sor + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Egy repülőgépen az utasok több sorban ülnek az utastérben. Az utastér minden sorában négy szék van. + + + 2nd class rows (%1) + 2. osztály sorai (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_ia.xlf b/demos/plane/xlf/translated_msgs_ia.xlf index 83ae2c6d2f8..4417bbf9adc 100644 --- a/demos/plane/xlf/translated_msgs_ia.xlf +++ b/demos/plane/xlf/translated_msgs_ia.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Filas: %1 - - - seats = - sedes = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Un avion ha duo sedes in le cabina (pro le pilota e le copilota) e un numero de filas de sedes pro passageros del prime classe e del secunde classes. Cata fila del prime classe contine quatro sedes. Cata fila del secunde classe contine cinque sedes. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Construe un formula (ci infra) que calcula le numero total de sedes in le avion quando le numero de filas es cambiate (ci supra). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Un avion ha duo sedes in le cabina (pro le pilota e le copilota) e un numero de filas de sedes pro passageros. Cata fila contine quatro sedes. - - - 1st class rows (%1) - filas de prime classe (%1) - - - 2nd class rows: %1 - Filas de secunde classe: %1 - - - Seats: %1 - Sedes: %1 - - - Plane Seat Calculator - Calculator de sedias de avion - - - rows (%1) - filas (%1) - - - 1st class rows: %1 - Filas de prime classe: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Un avion ha un numero de filas de sedes pro passageros. Cata fila contine quatro sedes. - - - 2nd class rows (%1) - filas de secunde classe (%1) - - - - + + + + + + Rows: %1 + Filas: %1 + + + seats = + sedes = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Un avion ha duo sedes in le cabina (pro le pilota e le copilota) e un numero de filas de sedes pro passageros del prime classe e del secunde classes. Cata fila del prime classe contine quatro sedes. Cata fila del secunde classe contine cinque sedes. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Construe un formula (ci infra) que calcula le numero total de sedes in le avion quando le numero de filas es cambiate (ci supra). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Un avion ha duo sedes in le cabina (pro le pilota e le copilota) e un numero de filas de sedes pro passageros. Cata fila contine quatro sedes. + + + 1st class rows (%1) + filas de prime classe (%1) + + + 2nd class rows: %1 + Filas de secunde classe: %1 + + + Seats: %1 + Sedes: %1 + + + Plane Seat Calculator + Calculator de sedias de avion + + + rows (%1) + filas (%1) + + + 1st class rows: %1 + Filas de prime classe: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Un avion ha un numero de filas de sedes pro passageros. Cata fila contine quatro sedes. + + + 2nd class rows (%1) + filas de secunde classe (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_is.xlf b/demos/plane/xlf/translated_msgs_is.xlf index 3810f4b34c8..4df8dbb6265 100644 --- a/demos/plane/xlf/translated_msgs_is.xlf +++ b/demos/plane/xlf/translated_msgs_is.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Raðir: %1 - - - seats = - sæti = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Flugvél er með tvö sæti í stjórnklefa (fyrir flugmanninn og aðstoðarflugmanninn) og einhvern fjölda sætaraða fyrir farþega á 1. og 2. farrými. Hver sætaröð á 1. farrými hefur fjögur sæti. Hver sætaröð á 2. farrými hefur fimm sæti. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Búðu til formúlu (hér fyrir neðan) sem reiknar heildarfjölda sæta í flugvélinni eftir því sem röðunum er breytt (hér fyrir ofan). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Flugvél er með tvö sæti í stjórnklefa (fyrir flugmanninn og aðstoðarflugmanninn) og einhvern fjölda sætaraða fyrir farþega. Hver sætaröð hefur fjögur sæti. - - - 1st class rows (%1) - raðir 1. farrými (%1) - - - 2nd class rows: %1 - Raðir 2. farrými: %1 - - - Seats: %1 - Sæti: %1 - - - Plane Seat Calculator - Flugsætareiknir - - - rows (%1) - raðir (%1) - - - 1st class rows: %1 - Raðir 1. farrými: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Flugvél er með einhvern fjölda sætaraða fyrir farþega. Í hverri röð eru fjögur sæti. - - - 2nd class rows (%1) - raðir 2. farrými (%1) - - - - + + + + + + Rows: %1 + Raðir: %1 + + + seats = + sæti = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Flugvél er með tvö sæti í stjórnklefa (fyrir flugmanninn og aðstoðarflugmanninn) og einhvern fjölda sætaraða fyrir farþega á 1. og 2. farrými. Hver sætaröð á 1. farrými hefur fjögur sæti. Hver sætaröð á 2. farrými hefur fimm sæti. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Búðu til formúlu (hér fyrir neðan) sem reiknar heildarfjölda sæta í flugvélinni eftir því sem röðunum er breytt (hér fyrir ofan). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Flugvél er með tvö sæti í stjórnklefa (fyrir flugmanninn og aðstoðarflugmanninn) og einhvern fjölda sætaraða fyrir farþega. Hver sætaröð hefur fjögur sæti. + + + 1st class rows (%1) + raðir 1. farrými (%1) + + + 2nd class rows: %1 + Raðir 2. farrými: %1 + + + Seats: %1 + Sæti: %1 + + + Plane Seat Calculator + Flugsætareiknir + + + rows (%1) + raðir (%1) + + + 1st class rows: %1 + Raðir 1. farrými: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Flugvél er með einhvern fjölda sætaraða fyrir farþega. Í hverri röð eru fjögur sæti. + + + 2nd class rows (%1) + raðir 2. farrými (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_it.xlf b/demos/plane/xlf/translated_msgs_it.xlf index 27bad0dcffd..27242c0ea84 100644 --- a/demos/plane/xlf/translated_msgs_it.xlf +++ b/demos/plane/xlf/translated_msgs_it.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - File: %1 - - - seats = - sedili = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Un aereo ha due posti nella cabina di pilotaggio (per il pilota e il co-pilota), e un numero di file in prima e seconda classe, con i posti a sedere dei passeggeri. Ogni fila della prima classe contiene quattro posti. Quelle invece della seconda classe, ne contengono cinque. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Costruisci una formula (sotto) che calcola il numero totale di posti a sedere su un aeroplano, così come cambiano le file di posti (sopra). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Un aeroplano ha due posti a sedere nella cabina di pilotaggio (per il pilota e co-pilota), e un numero di file con i posti a sedere dei passeggeri. Ogni fila contiene quattro posti. - - - 1st class rows (%1) - file 1ª classe (%1) - - - 2nd class rows: %1 - File 2ª classe: %1 - - - Seats: %1 - Sedili: %1 - - - Plane Seat Calculator - Calcolo posti aereo - - - rows (%1) - file (%1) - - - 1st class rows: %1 - File 1ª classe: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Un aeroplano ha un numero di file contenenti i posti a sedere dei passeggeri. Ogni fila, contiene quattro posti a sedere. - - - 2nd class rows (%1) - File 2ª classe (%1) - - - - + + + + + + Rows: %1 + File: %1 + + + seats = + sedili = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Un aereo ha due posti nella cabina di pilotaggio (per il pilota e il co-pilota), e un numero di file in prima e seconda classe, con i posti a sedere dei passeggeri. Ogni fila della prima classe contiene quattro posti. Quelle invece della seconda classe, ne contengono cinque. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Costruisci una formula (sotto) che calcola il numero totale di posti a sedere su un aeroplano, così come cambiano le file di posti (sopra). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Un aeroplano ha due posti a sedere nella cabina di pilotaggio (per il pilota e co-pilota), e un numero di file con i posti a sedere dei passeggeri. Ogni fila contiene quattro posti. + + + 1st class rows (%1) + file 1ª classe (%1) + + + 2nd class rows: %1 + File 2ª classe: %1 + + + Seats: %1 + Sedili: %1 + + + Plane Seat Calculator + Calcolo posti aereo + + + rows (%1) + file (%1) + + + 1st class rows: %1 + File 1ª classe: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Un aeroplano ha un numero di file contenenti i posti a sedere dei passeggeri. Ogni fila, contiene quattro posti a sedere. + + + 2nd class rows (%1) + File 2ª classe (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_ja.xlf b/demos/plane/xlf/translated_msgs_ja.xlf index b04624a2719..120e6e7ceca 100644 --- a/demos/plane/xlf/translated_msgs_ja.xlf +++ b/demos/plane/xlf/translated_msgs_ja.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - 列の数: %1 - - - seats = - 座席の数 = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - 飛行機には、操縦室の 2 つの座席 (操縦士と副操縦士) と、ファーストクラスとセカンドクラスの乗客の座席の列があります。それぞれの列に、ファーストクラスでは 4 つの座席、セカンドクラスでは 5 つの座席があります。 - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - 飛行機の座席の数を計算する式を、上で列の数を変更しても正しくなるように、下に入力してください。 - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - 飛行機には、操縦室の 2 つの座席 (操縦士と副操縦士) と、乗客の座席の列があります。それぞれの列に 4 つの座席があります。 - - - 1st class rows (%1) - ファーストクラスの列数 (%1) - - - 2nd class rows: %1 - セカンドクラスの列数: %1 - - - Seats: %1 - 座席の数: %1 - - - Plane Seat Calculator - 飛行機座席計算機 - - - rows (%1) - 列の数 (%1) - - - 1st class rows: %1 - ファーストクラスの列数: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - 飛行機に乗客の座席の列があります。それぞれの列に 4 つの座席があります。 - - - 2nd class rows (%1) - セカンドクラスの列数 (%1) - - - - + + + + + + Rows: %1 + 列の数: %1 + + + seats = + 座席の数 = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + 飛行機には、操縦室の 2 つの座席 (操縦士と副操縦士) と、ファーストクラスとセカンドクラスの乗客の座席の列があります。それぞれの列に、ファーストクラスでは 4 つの座席、セカンドクラスでは 5 つの座席があります。 + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + 飛行機の座席の数を計算する式を、上で列の数を変更しても正しくなるように、下に入力してください。 + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + 飛行機には、操縦室の 2 つの座席 (操縦士と副操縦士) と、乗客の座席の列があります。それぞれの列に 4 つの座席があります。 + + + 1st class rows (%1) + ファーストクラスの列数 (%1) + + + 2nd class rows: %1 + セカンドクラスの列数: %1 + + + Seats: %1 + 座席の数: %1 + + + Plane Seat Calculator + 飛行機座席計算機 + + + rows (%1) + 列の数 (%1) + + + 1st class rows: %1 + ファーストクラスの列数: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + 飛行機に乗客の座席の列があります。それぞれの列に 4 つの座席があります。 + + + 2nd class rows (%1) + セカンドクラスの列数 (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_ko.xlf b/demos/plane/xlf/translated_msgs_ko.xlf index 07e23288e66..1521e6e889b 100644 --- a/demos/plane/xlf/translated_msgs_ko.xlf +++ b/demos/plane/xlf/translated_msgs_ko.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - 행 수: %1 - - - seats = - 좌석수 = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - 비행기는 비행 갑판(조종사와 부조종사용)에서 좌석 두 개가 있고, 1등석과 2등석 승객 좌석의 행 수가 있습니다. 각 1등석 행에는 시트 네 개가 포함되어 있습니다. 각 2등석 행에는 시트 다섯 개가 포함되어 있습니다. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - 행이 바뀐(위) 비행기에 좌석의 총 수를 계산하는 공식(아래)을 구축하세요. - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - 비행기는 비행 갑판(조종사와 부조종사용)에서 좌석 두 개가 있고, 승객 좌석의 행 수가 있습니다. 각 행에는 시트 네 개가 포함되어 있습니다. - - - 1st class rows (%1) - 1등석 행 수 (%1) - - - 2nd class rows: %1 - 2등석 행 수: %1 - - - Seats: %1 - 좌석 수: %1 - - - Plane Seat Calculator - 비행기 좌석 계산기 - - - rows (%1) - 행 수 (%1) - - - 1st class rows: %1 - 1등석 행 수: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - 비행기는 승객 좌석의 행 수가 있습니다. 각 행에는 시트 네 개가 포함되어 있습니다. - - - 2nd class rows (%1) - 2등석 행 수 (%1) - - - - + + + + + + Rows: %1 + 행 수: %1 + + + seats = + 좌석수 = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + 비행기는 비행 갑판(조종사와 부조종사용)에서 좌석 두 개가 있고, 1등석과 2등석 승객 좌석의 행 수가 있습니다. 각 1등석 행에는 시트 네 개가 포함되어 있습니다. 각 2등석 행에는 시트 다섯 개가 포함되어 있습니다. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + 행이 바뀐(위) 비행기에 좌석의 총 수를 계산하는 공식(아래)을 구축하세요. + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + 비행기는 비행 갑판(조종사와 부조종사용)에서 좌석 두 개가 있고, 승객 좌석의 행 수가 있습니다. 각 행에는 시트 네 개가 포함되어 있습니다. + + + 1st class rows (%1) + 1등석 행 수 (%1) + + + 2nd class rows: %1 + 2등석 행 수: %1 + + + Seats: %1 + 좌석 수: %1 + + + Plane Seat Calculator + 비행기 좌석 계산기 + + + rows (%1) + 행 수 (%1) + + + 1st class rows: %1 + 1등석 행 수: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + 비행기는 승객 좌석의 행 수가 있습니다. 각 행에는 시트 네 개가 포함되어 있습니다. + + + 2nd class rows (%1) + 2등석 행 수 (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_ms.xlf b/demos/plane/xlf/translated_msgs_ms.xlf index c34f084a3d4..93a010d5a2f 100644 --- a/demos/plane/xlf/translated_msgs_ms.xlf +++ b/demos/plane/xlf/translated_msgs_ms.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Baris: %1 - - - seats = - tempat duduk = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Sebuah kapal terbang mempunyai tempat duduk di kokpit (untuk juruterbang dan pembantunya) dan sebilangan baris tempat duduk penumpang kelas pertama dan kelas kedua. Setiap baris kelas pertama mengandungi empat tempat duduk. Setiap baris kelas pertama mengandungi lima tempat duduk. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Wujudkan formula (di bawah) yang mengira jumlah tempat duduk di dalam kapal terbang sedangkan baris-barisnya diubah (di atas). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Sebuah kapal terbang mempunyai tempat duduk di kokpit (untuk juruterbang dan pembantunya) dan sebilangan baris tempat duduk penumpang. Setiap baris mengandungi empat tempat duduk. - - - 1st class rows (%1) - baris kelas pertama (%1) - - - 2nd class rows: %1 - Baris kelas kedua: %1 - - - Seats: %1 - Tempat duduk: %1 - - - Plane Seat Calculator - Pengira Tempat Duduk Kapal Terbang - - - rows (%1) - baris (%1) - - - 1st class rows: %1 - Baris kelas pertama: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Sebuah kapal terbang mempunyai sebilangan baris tempat duduk penumpang. Setiap baris mengandungi empat tempat duduk. - - - 2nd class rows (%1) - baris kelas kedua (%1) - - - - + + + + + + Rows: %1 + Baris: %1 + + + seats = + tempat duduk = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Sebuah kapal terbang mempunyai tempat duduk di kokpit (untuk juruterbang dan pembantunya) dan sebilangan baris tempat duduk penumpang kelas pertama dan kelas kedua. Setiap baris kelas pertama mengandungi empat tempat duduk. Setiap baris kelas pertama mengandungi lima tempat duduk. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Wujudkan formula (di bawah) yang mengira jumlah tempat duduk di dalam kapal terbang sedangkan baris-barisnya diubah (di atas). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Sebuah kapal terbang mempunyai tempat duduk di kokpit (untuk juruterbang dan pembantunya) dan sebilangan baris tempat duduk penumpang. Setiap baris mengandungi empat tempat duduk. + + + 1st class rows (%1) + baris kelas pertama (%1) + + + 2nd class rows: %1 + Baris kelas kedua: %1 + + + Seats: %1 + Tempat duduk: %1 + + + Plane Seat Calculator + Pengira Tempat Duduk Kapal Terbang + + + rows (%1) + baris (%1) + + + 1st class rows: %1 + Baris kelas pertama: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Sebuah kapal terbang mempunyai sebilangan baris tempat duduk penumpang. Setiap baris mengandungi empat tempat duduk. + + + 2nd class rows (%1) + baris kelas kedua (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_nb.xlf b/demos/plane/xlf/translated_msgs_nb.xlf index 99c9c6a9971..73ac2f3d066 100644 --- a/demos/plane/xlf/translated_msgs_nb.xlf +++ b/demos/plane/xlf/translated_msgs_nb.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Rader: %1 - - - seats = - seter = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Et fly har to seter i cockpit (for piloten og andrepiloten), og et antall rader med passasjerseter på første og andre klasse. Hver av radene på første klasse har fire seter. Hver av radene på andre klasse har fem seter. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Bygg en formel (under) som beregner det totale antall seter på flyet etter hvert som radene endres (over). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Et fly har to seter i cockpit (for piloten og andrepiloten), og et antall rader med passasjerseter. Hver rad inneholder fire seter. - - - 1st class rows (%1) - Rader i første klasse (%1) - - - 2nd class rows: %1 - Rader i andre klasse: %1 - - - Seats: %1 - Seter: %1 - - - Plane Seat Calculator - Flysetekalkulator - - - rows (%1) - rader (%1) - - - 1st class rows: %1 - Rader i første klasse: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Et fly har et antall rader med passasjerseter. Hver rad inneholder fire seter. - - - 2nd class rows (%1) - Rader i andre klasse (%1) - - - - + + + + + + Rows: %1 + Rader: %1 + + + seats = + seter = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Et fly har to seter i cockpit (for piloten og andrepiloten), og et antall rader med passasjerseter på første og andre klasse. Hver av radene på første klasse har fire seter. Hver av radene på andre klasse har fem seter. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Bygg en formel (under) som beregner det totale antall seter på flyet etter hvert som radene endres (over). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Et fly har to seter i cockpit (for piloten og andrepiloten), og et antall rader med passasjerseter. Hver rad inneholder fire seter. + + + 1st class rows (%1) + Rader i første klasse (%1) + + + 2nd class rows: %1 + Rader i andre klasse: %1 + + + Seats: %1 + Seter: %1 + + + Plane Seat Calculator + Flysetekalkulator + + + rows (%1) + rader (%1) + + + 1st class rows: %1 + Rader i første klasse: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Et fly har et antall rader med passasjerseter. Hver rad inneholder fire seter. + + + 2nd class rows (%1) + Rader i andre klasse (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_nl.xlf b/demos/plane/xlf/translated_msgs_nl.xlf index 6f36fa026c7..75d803bac58 100644 --- a/demos/plane/xlf/translated_msgs_nl.xlf +++ b/demos/plane/xlf/translated_msgs_nl.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Rijen: %1 - - - seats = - stoelen= - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Een vliegtuig heeft twee stoelen in de cockpit (voor de piloot en de copiloot) en een aantal rijen voor 1e klasse en 2e klasse passagiers. Iedere rij in de 1e klasse heeft vier stoelen. Iedere rij in de 2e klasse heeft vijf stoelen. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Maak hieronder een formule die het totale aantal stoelen in het vliegtuig berekent als het aantal rijen hierboven wordt aangepast. - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Een vliegtuig heeft twee stoelen in de cockpit (voor de piloot en de copiloot) en een aantal rijen met stoelen voor passagiers. Iedere rij bevat vier stoelen. - - - 1st class rows (%1) - Rijen 1e klas (%1) - - - 2nd class rows: %1 - Rijen 2e klas: %1 - - - Seats: %1 - Zitplaatsen: %1 - - - Plane Seat Calculator - Vliegtuigstoelencalculator - - - rows (%1) - rijen (%1) - - - 1st class rows: %1 - Rijen 1e klas: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Een vliegtuig heeft een aantal rijen met stoelen. Iedere rij heeft vier stoelen. - - - 2nd class rows (%1) - Rijen 2e klas (%1) - - - - + + + + + + Rows: %1 + Rijen: %1 + + + seats = + stoelen= + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Een vliegtuig heeft twee stoelen in de cockpit (voor de piloot en de copiloot) en een aantal rijen voor 1e klasse en 2e klasse passagiers. Iedere rij in de 1e klasse heeft vier stoelen. Iedere rij in de 2e klasse heeft vijf stoelen. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Maak hieronder een formule die het totale aantal stoelen in het vliegtuig berekent als het aantal rijen hierboven wordt aangepast. + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Een vliegtuig heeft twee stoelen in de cockpit (voor de piloot en de copiloot) en een aantal rijen met stoelen voor passagiers. Iedere rij bevat vier stoelen. + + + 1st class rows (%1) + Rijen 1e klas (%1) + + + 2nd class rows: %1 + Rijen 2e klas: %1 + + + Seats: %1 + Zitplaatsen: %1 + + + Plane Seat Calculator + Vliegtuigstoelencalculator + + + rows (%1) + rijen (%1) + + + 1st class rows: %1 + Rijen 1e klas: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Een vliegtuig heeft een aantal rijen met stoelen. Iedere rij heeft vier stoelen. + + + 2nd class rows (%1) + Rijen 2e klas (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_pl.xlf b/demos/plane/xlf/translated_msgs_pl.xlf index 4c8b044e2c8..e418cba1ff7 100644 --- a/demos/plane/xlf/translated_msgs_pl.xlf +++ b/demos/plane/xlf/translated_msgs_pl.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Rzędów: %1 - - - seats = - siedzeń = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Samolot ma dwa miejsca w kabinie pilotów (dla pierwszego i drugiego pilota) oraz rzędy siedzeń dla pasażerów pierwszej i drugiej klasy. Każdy rząd pierwszej klasy składa się z czterech siedzeń. Każdy rząd drugiej klasy składa się z pięciu siedzeń. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Zbuduj wzór (poniżej), który pozwala obliczyć łączną liczbę siedzeń w samolocie w funkcji zmieniającej się liczby rzędów (powyżej). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Samolot ma dwa miejsca w kabinie pilotów (dla pierwszego i drugiego pilota) oraz rzędy siedzeń dla pasażerów. Każdy taki rząd składa się z czterech siedzeń. - - - 1st class rows (%1) - Rzędów w pierwszej klasie (%1) - - - 2nd class rows: %1 - Rzędów w drugiej klasie: %1 - - - Seats: %1 - Siedzeń: %1 - - - Plane Seat Calculator - Kalkulator miejsc w samolocie. - - - rows (%1) - rzędów (%1) - - - 1st class rows: %1 - Rzędów w pierwszej klasie: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Samolot ma kilka rzędów siedzeń pasażerów. Każdy rząd zawiera cztery miejsca. - - - 2nd class rows (%1) - Rzędów w drugiej klasie (%1) - - - - + + + + + + Rows: %1 + Rzędów: %1 + + + seats = + siedzeń = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Samolot ma dwa miejsca w kabinie pilotów (dla pierwszego i drugiego pilota) oraz rzędy siedzeń dla pasażerów pierwszej i drugiej klasy. Każdy rząd pierwszej klasy składa się z czterech siedzeń. Każdy rząd drugiej klasy składa się z pięciu siedzeń. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Zbuduj wzór (poniżej), który pozwala obliczyć łączną liczbę siedzeń w samolocie w funkcji zmieniającej się liczby rzędów (powyżej). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Samolot ma dwa miejsca w kabinie pilotów (dla pierwszego i drugiego pilota) oraz rzędy siedzeń dla pasażerów. Każdy taki rząd składa się z czterech siedzeń. + + + 1st class rows (%1) + Rzędów w pierwszej klasie (%1) + + + 2nd class rows: %1 + Rzędów w drugiej klasie: %1 + + + Seats: %1 + Siedzeń: %1 + + + Plane Seat Calculator + Kalkulator miejsc w samolocie. + + + rows (%1) + rzędów (%1) + + + 1st class rows: %1 + Rzędów w pierwszej klasie: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Samolot ma kilka rzędów siedzeń pasażerów. Każdy rząd zawiera cztery miejsca. + + + 2nd class rows (%1) + Rzędów w drugiej klasie (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_pms.xlf b/demos/plane/xlf/translated_msgs_pms.xlf index 0fef9121763..c5093b2dd50 100644 --- a/demos/plane/xlf/translated_msgs_pms.xlf +++ b/demos/plane/xlf/translated_msgs_pms.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Linie: %1 - - - seats = - sedij = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - N'avion a l'ha doi sedij ant la cabin-a ëd pilotage (për ël pilòta e ël cò-pilòta) e un chèich nùmer ëd file ëd sedij pr'ij passagé ëd prima e sconda classa. Minca fila ëd prima classa a conten quatr sedij. Minca fila ëd seconda classa a conten sinch sedij. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Fabriché na fórmola (sì-sota) ch'a fa 'l cont dël nùmer total ëd sedij ant l'avion cand che ël nùmer dle file a cangia (sì-dzora). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - N'avion a l'ha doi sedij ant la cabin-a ëd pilotage (për ël pilòta e ël cò-pilòta), e un chèich nùmer ëd file ëd sedij pr'ij passagé. Minca fila a conten quatr sedij. - - - 1st class rows (%1) - linie ëd prima classa (%1) - - - 2nd class rows: %1 - linie ëd seconda classa: %1 - - - Seats: %1 - Sedij: %1 - - - Plane Seat Calculator - Calcolator ëd sedij d'avion - - - rows (%1) - linie (%1) - - - 1st class rows: %1 - linie ëd prima classa: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - N'avion a l'ha un nùmer ëd file ëd sedij da passëgé. Minca fila a l'ha quatr sedij. - - - 2nd class rows (%1) - linie ëd seconda classa (%1) - - - - + + + + + + Rows: %1 + Linie: %1 + + + seats = + sedij = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + N'avion a l'ha doi sedij ant la cabin-a ëd pilotage (për ël pilòta e ël cò-pilòta) e un chèich nùmer ëd file ëd sedij pr'ij passagé ëd prima e sconda classa. Minca fila ëd prima classa a conten quatr sedij. Minca fila ëd seconda classa a conten sinch sedij. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Fabriché na fórmola (sì-sota) ch'a fa 'l cont dël nùmer total ëd sedij ant l'avion cand che ël nùmer dle file a cangia (sì-dzora). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + N'avion a l'ha doi sedij ant la cabin-a ëd pilotage (për ël pilòta e ël cò-pilòta), e un chèich nùmer ëd file ëd sedij pr'ij passagé. Minca fila a conten quatr sedij. + + + 1st class rows (%1) + linie ëd prima classa (%1) + + + 2nd class rows: %1 + linie ëd seconda classa: %1 + + + Seats: %1 + Sedij: %1 + + + Plane Seat Calculator + Calcolator ëd sedij d'avion + + + rows (%1) + linie (%1) + + + 1st class rows: %1 + linie ëd prima classa: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + N'avion a l'ha un nùmer ëd file ëd sedij da passëgé. Minca fila a l'ha quatr sedij. + + + 2nd class rows (%1) + linie ëd seconda classa (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_pt-br.xlf b/demos/plane/xlf/translated_msgs_pt-br.xlf index 7bdd9ccff99..f418f426a34 100644 --- a/demos/plane/xlf/translated_msgs_pt-br.xlf +++ b/demos/plane/xlf/translated_msgs_pt-br.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Filas: %1 - - - seats = - assentos = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Um avião tem dois assentos na cabine de comando (para o piloto e o copiloto) e um número de filas de assentos na primeira e na segunda classe. Cada fila da primeira classe contém quatro assentos. Cada fila da segunda classe contém cinco assentos. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Elabore uma fórmula (abaixo) que calcule o número total de assentos no avião a medida que as filas são alteradas (acima). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Um avião tem dois assentos na cabine de comando (para o piloto e o copiloto) e um número de filas de assentos para os passageiros. Cada fila contém quatro assentos. - - - 1st class rows (%1) - filas na primeira classe (%1) - - - 2nd class rows: %1 - filas na segunda classe: %1 - - - Seats: %1 - Assentos: %1 - - - Plane Seat Calculator - Calculadora de Assentos em Avião - - - rows (%1) - filas (%1) - - - 1st class rows: %1 - filas na primeira classe: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Um avião tem um número de filas de assentos para os passageiros. Cada fila contém quatro assentos. - - - 2nd class rows (%1) - filas na segunda classe (%1) - - - - + + + + + + Rows: %1 + Filas: %1 + + + seats = + assentos = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Um avião tem dois assentos na cabine de comando (para o piloto e o copiloto) e um número de filas de assentos na primeira e na segunda classe. Cada fila da primeira classe contém quatro assentos. Cada fila da segunda classe contém cinco assentos. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Elabore uma fórmula (abaixo) que calcule o número total de assentos no avião a medida que as filas são alteradas (acima). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Um avião tem dois assentos na cabine de comando (para o piloto e o copiloto) e um número de filas de assentos para os passageiros. Cada fila contém quatro assentos. + + + 1st class rows (%1) + filas na primeira classe (%1) + + + 2nd class rows: %1 + filas na segunda classe: %1 + + + Seats: %1 + Assentos: %1 + + + Plane Seat Calculator + Calculadora de Assentos em Avião + + + rows (%1) + filas (%1) + + + 1st class rows: %1 + filas na primeira classe: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Um avião tem um número de filas de assentos para os passageiros. Cada fila contém quatro assentos. + + + 2nd class rows (%1) + filas na segunda classe (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_ro.xlf b/demos/plane/xlf/translated_msgs_ro.xlf index 614a3bda28b..b40c5ecaf50 100644 --- a/demos/plane/xlf/translated_msgs_ro.xlf +++ b/demos/plane/xlf/translated_msgs_ro.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Rânduri: %1 - - - seats = - scaune = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Un avion are două scaune în carlingă (pentru pilot și copilot) și un număr de rânduri cu scaune de clasa I și clasa a II-a pentru pasageri. Fiecare rând de clasa I conține patru scaune. Fiecare rând de clasa a II-a conține cinci scaune. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Construiește o formulă (mai jos) care calculează numărul total de locuri dintr-un avion în timp ce rândurile se schimbă (mai sus). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Un avion are două scaune în carlingă (pentru pilot și copilot) și un număr de rânduri cu scaune pentru pasageri. Fiecare rând conține patru scaune. - - - 1st class rows (%1) - rânduri de clasa I (%1) - - - 2nd class rows: %1 - rânduri de clasa a II-a: %1 - - - Seats: %1 - Scaune: %1 - - - Plane Seat Calculator - Calculator pentru locurile dintr-un avion - - - rows (%1) - rânduri (%1) - - - 1st class rows: %1 - rânduri de clasa I: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Un avion are un număr de rânduri cu scaune pentru pasageri. Fiecare rând conține patru scaune. - - - 2nd class rows (%1) - rânduri de clasa a II-a (%1) - - - - + + + + + + Rows: %1 + Rânduri: %1 + + + seats = + scaune = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Un avion are două scaune în carlingă (pentru pilot și copilot) și un număr de rânduri cu scaune de clasa I și clasa a II-a pentru pasageri. Fiecare rând de clasa I conține patru scaune. Fiecare rând de clasa a II-a conține cinci scaune. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Construiește o formulă (mai jos) care calculează numărul total de locuri dintr-un avion în timp ce rândurile se schimbă (mai sus). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Un avion are două scaune în carlingă (pentru pilot și copilot) și un număr de rânduri cu scaune pentru pasageri. Fiecare rând conține patru scaune. + + + 1st class rows (%1) + rânduri de clasa I (%1) + + + 2nd class rows: %1 + rânduri de clasa a II-a: %1 + + + Seats: %1 + Scaune: %1 + + + Plane Seat Calculator + Calculator pentru locurile dintr-un avion + + + rows (%1) + rânduri (%1) + + + 1st class rows: %1 + rânduri de clasa I: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Un avion are un număr de rânduri cu scaune pentru pasageri. Fiecare rând conține patru scaune. + + + 2nd class rows (%1) + rânduri de clasa a II-a (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_ru.xlf b/demos/plane/xlf/translated_msgs_ru.xlf index d25b25458d7..bf71017b7bd 100644 --- a/demos/plane/xlf/translated_msgs_ru.xlf +++ b/demos/plane/xlf/translated_msgs_ru.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Рядов: %1 - - - seats = - места = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - В самолёте 2 места для пилота и его помощника, несколько рядов с пассажирскими местами первого класса, а также несколько рядов с пассажирскими местами второго класса. В каждом ряду первого класса 4 места. В каждом ряду второго класса 5 мест. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Постройте формулу в области ниже, которая поможет рассчитать общее количество мест в самолёте (как на рисунке выше). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - В самолёте 2 места для пилота и его помощника, а также несколько рядов с пассажирскими местами. В каждом ряду 4 места. - - - 1st class rows (%1) - ряды 1-го класса (%1) - - - 2nd class rows: %1 - Рядов 2-го класса: %1 - - - Seats: %1 - Мест: %1 - - - Plane Seat Calculator - Калькулятор посадочных мест в самолёте - - - rows (%1) - ряды (%1) - - - 1st class rows: %1 - Рядов 1-го класса: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - В самолёте несколько рядов с пассажирскими местами. В каждом ряду 4 места. - - - 2nd class rows (%1) - ряды 2-го класса (%1) - - - - + + + + + + Rows: %1 + Рядов: %1 + + + seats = + места = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + В самолёте 2 места для пилота и его помощника, несколько рядов с пассажирскими местами первого класса, а также несколько рядов с пассажирскими местами второго класса. В каждом ряду первого класса 4 места. В каждом ряду второго класса 5 мест. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Постройте формулу в области ниже, которая поможет рассчитать общее количество мест в самолёте (как на рисунке выше). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + В самолёте 2 места для пилота и его помощника, а также несколько рядов с пассажирскими местами. В каждом ряду 4 места. + + + 1st class rows (%1) + ряды 1-го класса (%1) + + + 2nd class rows: %1 + Рядов 2-го класса: %1 + + + Seats: %1 + Мест: %1 + + + Plane Seat Calculator + Калькулятор посадочных мест в самолёте + + + rows (%1) + ряды (%1) + + + 1st class rows: %1 + Рядов 1-го класса: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + В самолёте несколько рядов с пассажирскими местами. В каждом ряду 4 места. + + + 2nd class rows (%1) + ряды 2-го класса (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_sc.xlf b/demos/plane/xlf/translated_msgs_sc.xlf index 63281235617..313ab9a86be 100644 --- a/demos/plane/xlf/translated_msgs_sc.xlf +++ b/demos/plane/xlf/translated_msgs_sc.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Fileras: %1 - - - seats = - cadironis = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Unu aparèchiu tenit duus cadironis in sa cabina de cumandu (po su pilota e su co-pilota), e unas cantu fileras de cadironis po passigeris de prima classi e de segunda classi. Dònnia filera de prima classi tenit cuatru cadironis. Dònnia filera de segunda classi tenit cincu cadironis. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Cuncorda una formula (innoi asuta) chi cumpudit su numeru totali de postus a setzi in s'aparechiu, a segunda de comenti mudant is fileras de postus (innoi in susu) - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Unu aparèchiu tenit duus cadironis in sa cabina de cumandu (po su pilota e su co-pilota), e unas cantu fileras de cadironis po passigeris. Dònnia filera tenit cuatru cadironis. - - - 1st class rows (%1) - fileras de primu classi (%1) - - - 2nd class rows: %1 - fileras de segunda classi: %1 - - - Seats: %1 - Cadironis: %1 - - - Plane Seat Calculator - Fai su contu de is cadironis de unu aparèchiu - - - rows (%1) - fileras (%1) - - - 1st class rows: %1 - fileras de primu classi: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Unu aparèchiu tenit unas cantu fileras de cadironis po passigeris. Dònnia filera tenit cuatru cadironis. - - - 2nd class rows (%1) - fileras de segunda classi (%1) - - - - + + + + + + Rows: %1 + Fileras: %1 + + + seats = + cadironis = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Unu aparèchiu tenit duus cadironis in sa cabina de cumandu (po su pilota e su co-pilota), e unas cantu fileras de cadironis po passigeris de prima classi e de segunda classi. Dònnia filera de prima classi tenit cuatru cadironis. Dònnia filera de segunda classi tenit cincu cadironis. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Cuncorda una formula (innoi asuta) chi cumpudit su numeru totali de postus a setzi in s'aparechiu, a segunda de comenti mudant is fileras de postus (innoi in susu) + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Unu aparèchiu tenit duus cadironis in sa cabina de cumandu (po su pilota e su co-pilota), e unas cantu fileras de cadironis po passigeris. Dònnia filera tenit cuatru cadironis. + + + 1st class rows (%1) + fileras de primu classi (%1) + + + 2nd class rows: %1 + fileras de segunda classi: %1 + + + Seats: %1 + Cadironis: %1 + + + Plane Seat Calculator + Fai su contu de is cadironis de unu aparèchiu + + + rows (%1) + fileras (%1) + + + 1st class rows: %1 + fileras de primu classi: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Unu aparèchiu tenit unas cantu fileras de cadironis po passigeris. Dònnia filera tenit cuatru cadironis. + + + 2nd class rows (%1) + fileras de segunda classi (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_sv.xlf b/demos/plane/xlf/translated_msgs_sv.xlf index f3d836fba33..764167cf005 100644 --- a/demos/plane/xlf/translated_msgs_sv.xlf +++ b/demos/plane/xlf/translated_msgs_sv.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Rader: %1 - - - seats = - säten = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Ett flygplan har två säten i cockpiten (ett för piloten och ett för andrepiloten) och ett antal rader med passagerarsäten i första och andra klass. Varje rad i första klass innehåller fyra säten. Varje rad i andra klass innehåller fem säten. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Bygg en formel (nedan) som beräknar det totala antalet säten på flygplanet när raderna ändras (ovan). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Ett flygplan har två säten i cockpiten (ett för piloten och ett för andrepiloten) och ett antal rader med passagerarsäten. Varje rad innehåller fyra säten. - - - 1st class rows (%1) - Rader i första klass (%1) - - - 2nd class rows: %1 - Rader i andra klass: %1 - - - Seats: %1 - Säten: %1 - - - Plane Seat Calculator - Plansäteskalkylator - - - rows (%1) - rader (%1) - - - 1st class rows: %1 - Rader i första klass: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Ett flygplan har ett antal rader med passagerarsäten. Varje rad innehåller fyra säten. - - - 2nd class rows (%1) - Rader i andra klass (%1) - - - - + + + + + + Rows: %1 + Rader: %1 + + + seats = + säten = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Ett flygplan har två säten i cockpiten (ett för piloten och ett för andrepiloten) och ett antal rader med passagerarsäten i första och andra klass. Varje rad i första klass innehåller fyra säten. Varje rad i andra klass innehåller fem säten. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Bygg en formel (nedan) som beräknar det totala antalet säten på flygplanet när raderna ändras (ovan). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Ett flygplan har två säten i cockpiten (ett för piloten och ett för andrepiloten) och ett antal rader med passagerarsäten. Varje rad innehåller fyra säten. + + + 1st class rows (%1) + Rader i första klass (%1) + + + 2nd class rows: %1 + Rader i andra klass: %1 + + + Seats: %1 + Säten: %1 + + + Plane Seat Calculator + Plansäteskalkylator + + + rows (%1) + rader (%1) + + + 1st class rows: %1 + Rader i första klass: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Ett flygplan har ett antal rader med passagerarsäten. Varje rad innehåller fyra säten. + + + 2nd class rows (%1) + Rader i andra klass (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_th.xlf b/demos/plane/xlf/translated_msgs_th.xlf index 0967d4d199f..4a85d39bcb4 100644 --- a/demos/plane/xlf/translated_msgs_th.xlf +++ b/demos/plane/xlf/translated_msgs_th.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - %1 แถว - - - seats = - จำนวนที่นั่ง = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - ภายในเครื่องบินจะมีที่นั่งนักบินอยู่ 2 ที่ (สำหรับนักบิน และผู้ช่วยนักบิน) และจะมีแถวที่นั่งสำหรับผู้โดยสาร "ชั้นเฟิร์สคลาส" และ "ชั้นธุรกิจ" อยู่จำนวนหนึ่ง โดยในชั้นเฟิร์สคลาสจะมีแถวละ 4 ที่นั่ง ส่วนในชั้นธุรกิจจะมีแถวละ 5 ที่นั่ง - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - สร้างสูตรคำนวณ (ด้านล่าง) เพื่อคำนวณหาจำนวนที่นั่งทั้งหมดบนเครื่องบิน ตามจำนวนแถวที่เปลี่ยนไป (ด้านบน) - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - ภายในเครื่องบินจะมีที่นั่งนักบินอยู่ 2 ที่ (สำหรับนักบิน และผู้ช่วยนักบิน) และมีแถวที่นั่งผู้โดยสารอยู่จำนวนหนึ่ง ในแต่ละแถวจะมี 4 ที่นั่ง - - - 1st class rows (%1) - จำนวนแถวชั้นเฟิร์สคลาส (%1) - - - 2nd class rows: %1 - ชั้นธุรกิจ %1 แถว - - - Seats: %1 - คำนวณได้ทั้งหมด %1 ที่นั่ง - - - Plane Seat Calculator - ระบบคำนวณที่นั่งบนเครื่องบิน - - - rows (%1) - จำนวนแถว (%1) - - - 1st class rows: %1 - ชั้นเฟิร์สคลาส %1 แถว - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - ภายในเครื่องบินประกอบไปด้วยแถวของที่นั่งผู้โดยสาร ในแต่ละแถวจะมี 4 ที่นั่ง - - - 2nd class rows (%1) - จำนวนแถวชั้นธุรกิจ (%1) - - - - + + + + + + Rows: %1 + %1 แถว + + + seats = + จำนวนที่นั่ง = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + ภายในเครื่องบินจะมีที่นั่งนักบินอยู่ 2 ที่ (สำหรับนักบิน และผู้ช่วยนักบิน) และจะมีแถวที่นั่งสำหรับผู้โดยสาร "ชั้นเฟิร์สคลาส" และ "ชั้นธุรกิจ" อยู่จำนวนหนึ่ง โดยในชั้นเฟิร์สคลาสจะมีแถวละ 4 ที่นั่ง ส่วนในชั้นธุรกิจจะมีแถวละ 5 ที่นั่ง + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + สร้างสูตรคำนวณ (ด้านล่าง) เพื่อคำนวณหาจำนวนที่นั่งทั้งหมดบนเครื่องบิน ตามจำนวนแถวที่เปลี่ยนไป (ด้านบน) + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + ภายในเครื่องบินจะมีที่นั่งนักบินอยู่ 2 ที่ (สำหรับนักบิน และผู้ช่วยนักบิน) และมีแถวที่นั่งผู้โดยสารอยู่จำนวนหนึ่ง ในแต่ละแถวจะมี 4 ที่นั่ง + + + 1st class rows (%1) + จำนวนแถวชั้นเฟิร์สคลาส (%1) + + + 2nd class rows: %1 + ชั้นธุรกิจ %1 แถว + + + Seats: %1 + คำนวณได้ทั้งหมด %1 ที่นั่ง + + + Plane Seat Calculator + ระบบคำนวณที่นั่งบนเครื่องบิน + + + rows (%1) + จำนวนแถว (%1) + + + 1st class rows: %1 + ชั้นเฟิร์สคลาส %1 แถว + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + ภายในเครื่องบินประกอบไปด้วยแถวของที่นั่งผู้โดยสาร ในแต่ละแถวจะมี 4 ที่นั่ง + + + 2nd class rows (%1) + จำนวนแถวชั้นธุรกิจ (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_tr.xlf b/demos/plane/xlf/translated_msgs_tr.xlf index 678541a32d9..759983ac921 100644 --- a/demos/plane/xlf/translated_msgs_tr.xlf +++ b/demos/plane/xlf/translated_msgs_tr.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Sıralar: %1 - - - seats = - koltuklar = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Bir uçağın uçuş güvertesinde iki koltuğu (pilot ve yardımcı pilot için), ve belirli sayıda birinci sınıf ve ikinci sınıf yolcu koltuğu sırası vardır. Her birinci sınıf sıra dört koltuk içerir. Her ikinci sınıf sıra beş koltuk içerir. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Sıralar(üstte) değiştikçe uçaktaki toplam koltuk sayısını hesaplayan bir formül(altta) oluşturun. - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Bir uçağın uçuş güvertesinde iki koltuğu (pilot ve yardımcı pilot için), ve belirli sayıda koltuk sırası vardır. Her sıra dört koltuk içerir. - - - 1st class rows (%1) - Birinci sınıf sıralar (%1) - - - 2nd class rows: %1 - İkinci sınıf sıralar: %1 - - - Seats: %1 - Koltuklar: %1 - - - Plane Seat Calculator - Uçak Koltuğu Hesaplayıcı - - - rows (%1) - sıralar (%1) - - - 1st class rows: %1 - Birinci sınıf sıralar: (%1) - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Bir uçağın belirli sayıda koltuk sırası vardır. Her sıra dört koltuk içerir. - - - 2nd class rows (%1) - İkinci sınıf sıralar (%1) - - - - + + + + + + Rows: %1 + Sıralar: %1 + + + seats = + koltuklar = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Bir uçağın uçuş güvertesinde iki koltuğu (pilot ve yardımcı pilot için), ve belirli sayıda birinci sınıf ve ikinci sınıf yolcu koltuğu sırası vardır. Her birinci sınıf sıra dört koltuk içerir. Her ikinci sınıf sıra beş koltuk içerir. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Sıralar(üstte) değiştikçe uçaktaki toplam koltuk sayısını hesaplayan bir formül(altta) oluşturun. + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Bir uçağın uçuş güvertesinde iki koltuğu (pilot ve yardımcı pilot için), ve belirli sayıda koltuk sırası vardır. Her sıra dört koltuk içerir. + + + 1st class rows (%1) + Birinci sınıf sıralar (%1) + + + 2nd class rows: %1 + İkinci sınıf sıralar: %1 + + + Seats: %1 + Koltuklar: %1 + + + Plane Seat Calculator + Uçak Koltuğu Hesaplayıcı + + + rows (%1) + sıralar (%1) + + + 1st class rows: %1 + Birinci sınıf sıralar: (%1) + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Bir uçağın belirli sayıda koltuk sırası vardır. Her sıra dört koltuk içerir. + + + 2nd class rows (%1) + İkinci sınıf sıralar (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_uk.xlf b/demos/plane/xlf/translated_msgs_uk.xlf index d5e7682a58b..40295f6b9a3 100644 --- a/demos/plane/xlf/translated_msgs_uk.xlf +++ b/demos/plane/xlf/translated_msgs_uk.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Рядки: %1 - - - seats = - місць= - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Літак має два місця в кабіні екіпажу (пілот і другий пілот), і кілька рядів 1-го класу 2-го класу пасажирських місць. Кожний ряд 1-го класу містить чотири місця. Кожен ряд 2-го класу містить п'ять місць. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Побудувати формулу (нижче), яка обчислює кількість місць на літаку при зміні рядків (див. вище). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Літак має два місця в кабіні екіпажу (пілот і другий пілот), і кілька рядів пасажирських сидінь. Кожен рядок містить чотири місця. - - - 1st class rows (%1) - рядів 1-го класу (%1) - - - 2nd class rows: %1 - рядів 2-го класу: %1 - - - Seats: %1 - Місць: %1 - - - Plane Seat Calculator - Калькулятор місць у літаку - - - rows (%1) - рядки (%1) - - - 1st class rows: %1 - рядів 1-го класу: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Літак має кілька рядів пасажирських сидінь. Кожен ряд містить чотири місця. - - - 2nd class rows (%1) - рядів 2-го класу (%1) - - - - + + + + + + Rows: %1 + Рядки: %1 + + + seats = + місць= + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Літак має два місця в кабіні екіпажу (пілот і другий пілот), і кілька рядів 1-го класу 2-го класу пасажирських місць. Кожний ряд 1-го класу містить чотири місця. Кожен ряд 2-го класу містить п'ять місць. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Побудувати формулу (нижче), яка обчислює кількість місць на літаку при зміні рядків (див. вище). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Літак має два місця в кабіні екіпажу (пілот і другий пілот), і кілька рядів пасажирських сидінь. Кожен рядок містить чотири місця. + + + 1st class rows (%1) + рядів 1-го класу (%1) + + + 2nd class rows: %1 + рядів 2-го класу: %1 + + + Seats: %1 + Місць: %1 + + + Plane Seat Calculator + Калькулятор місць у літаку + + + rows (%1) + рядки (%1) + + + 1st class rows: %1 + рядів 1-го класу: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Літак має кілька рядів пасажирських сидінь. Кожен ряд містить чотири місця. + + + 2nd class rows (%1) + рядів 2-го класу (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_vi.xlf b/demos/plane/xlf/translated_msgs_vi.xlf index 1f4ef6fcf07..39b80a3d1d8 100644 --- a/demos/plane/xlf/translated_msgs_vi.xlf +++ b/demos/plane/xlf/translated_msgs_vi.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - Số hàng ghế: %1 - - - seats = - Tính số chỗ ngồi = - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - Một chiếc máy bay này có hai chỗ ngồi ở sàn (cho phi công trưởng và phi công phó), và một số hàng ghế hạng 1 và hạng 2. Mỗi hàng hạng 1 có bốn chỗ ngồi. Mỗi hàng hạng 2 có năm chỗ ngồi. - - - ? - ? - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - Dưới đây hãy tạo công thức tính số chỗ ngồi trên máy bay để nó thay đổi tùy theo số lượng hàng ghế (hình trên). - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - Một máy bay có hai ghế trong buồng lái (dành cho phi công trưởng và phi công phụ), và một loạt hàng ghế cho hành khách. Mỗi hàng có bốn ghế (bốn chỗ ngồi). - - - 1st class rows (%1) - số hàng hạng nhất (%1) - - - 2nd class rows: %1 - Hàng hạng hai: %1 - - - Seats: %1 - Số chỗ ngồi: %1 - - - Plane Seat Calculator - Máy bay ghế máy tính - - - rows (%1) - đếm số hàng ghế (%1) - - - 1st class rows: %1 - Hàng hạng nhất: %1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - Máy bay có một số hàng ghế hành khách. Mỗi hàng có bốn chỗ ngồi. - - - 2nd class rows (%1) - số hàng hạng hai (%1) - - - - + + + + + + Rows: %1 + Số hàng ghế: %1 + + + seats = + Tính số chỗ ngồi = + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + Một chiếc máy bay này có hai chỗ ngồi ở sàn (cho phi công trưởng và phi công phó), và một số hàng ghế hạng 1 và hạng 2. Mỗi hàng hạng 1 có bốn chỗ ngồi. Mỗi hàng hạng 2 có năm chỗ ngồi. + + + ? + ? + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + Dưới đây hãy tạo công thức tính số chỗ ngồi trên máy bay để nó thay đổi tùy theo số lượng hàng ghế (hình trên). + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + Một máy bay có hai ghế trong buồng lái (dành cho phi công trưởng và phi công phụ), và một loạt hàng ghế cho hành khách. Mỗi hàng có bốn ghế (bốn chỗ ngồi). + + + 1st class rows (%1) + số hàng hạng nhất (%1) + + + 2nd class rows: %1 + Hàng hạng hai: %1 + + + Seats: %1 + Số chỗ ngồi: %1 + + + Plane Seat Calculator + Máy bay ghế máy tính + + + rows (%1) + đếm số hàng ghế (%1) + + + 1st class rows: %1 + Hàng hạng nhất: %1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + Máy bay có một số hàng ghế hành khách. Mỗi hàng có bốn chỗ ngồi. + + + 2nd class rows (%1) + số hàng hạng hai (%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_zh-hans.xlf b/demos/plane/xlf/translated_msgs_zh-hans.xlf index 2cbb7e858f5..3d4c69caa18 100644 --- a/demos/plane/xlf/translated_msgs_zh-hans.xlf +++ b/demos/plane/xlf/translated_msgs_zh-hans.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - 行:%1 - - - seats = - 座位= - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - 一架飞机除了有两个座位供正副驾驶员,还有一定量行数的头等及经济乘客座位。头等每行共四座,经济每行共五座。 - - - ? - - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - 于下方写出一条公式以计算飞机上的座位总数。 - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - 一架飞机除了有两个座位供正副驾驶员,还有一定量行数的乘客座位。每行共四座。 - - - 1st class rows (%1) - 头等行(%1) - - - 2nd class rows: %1 - 经济等行:%1 - - - Seats: %1 - 座位:%1 - - - Plane Seat Calculator - 飞机座位计算器 - - - rows (%1) - 行 (%1) - - - 1st class rows: %1 - 头等行:%1 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - 一架飞机有一定量行数的乘客座位,每行共四座。 - - - 2nd class rows (%1) - 经济等行(%1) - - - - + + + + + + Rows: %1 + 行:%1 + + + seats = + 座位= + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + 一架飞机除了有两个座位供正副驾驶员,还有一定量行数的头等及经济乘客座位。头等每行共四座,经济每行共五座。 + + + ? + + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + 于下方写出一条公式以计算飞机上的座位总数。 + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + 一架飞机除了有两个座位供正副驾驶员,还有一定量行数的乘客座位。每行共四座。 + + + 1st class rows (%1) + 头等行(%1) + + + 2nd class rows: %1 + 经济等行:%1 + + + Seats: %1 + 座位:%1 + + + Plane Seat Calculator + 飞机座位计算器 + + + rows (%1) + 行 (%1) + + + 1st class rows: %1 + 头等行:%1 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + 一架飞机有一定量行数的乘客座位,每行共四座。 + + + 2nd class rows (%1) + 经济等行(%1) + + + + diff --git a/demos/plane/xlf/translated_msgs_zh-hant.xlf b/demos/plane/xlf/translated_msgs_zh-hant.xlf index 2dadf6d4e7c..df846411756 100644 --- a/demos/plane/xlf/translated_msgs_zh-hant.xlf +++ b/demos/plane/xlf/translated_msgs_zh-hant.xlf @@ -1,63 +1,63 @@ - - - - - - Rows: %1 - 排:%1 - - - seats = - 座位= - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. - 一架飛機除了有兩個座位供正副機師,還有一定量行數的頭等及經濟乘客座位。頭等艙每排都包含四個席位,經濟艙每排都包含五個席位。。 - - - ? - - - - Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). - 於下方寫出一條公式以計算飛機上的座位總數。 - - - An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. - 一架飛機除了有兩個座位供正副機師,還有一定量行數的乘客座位。每排都包含四個席位。 - - - 1st class rows (%1) - 頭等艙(%1) - - - 2nd class rows: %1 - 經濟艙:%1 排 - - - Seats: %1 - 座位:%1 - - - Plane Seat Calculator - 飛機座位計算器 - - - rows (%1) - 排(%1) - - - 1st class rows: %1 - 頭等艙:%1 排 - - - An airplane has a number of rows of passenger seats. Each row contains four seats. - 一架飛機有一定量行數的乘客座位,每排都包含四個席位。 - - - 2nd class rows (%1) - 經濟艙(%1) - - - - + + + + + + Rows: %1 + 排:%1 + + + seats = + 座位= + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of 1st class and 2nd class passenger seats. Each 1st class row contains four seats. Each 2nd class row contains five seats. + 一架飛機除了有兩個座位供正副機師,還有一定量行數的頭等及經濟乘客座位。頭等艙每排都包含四個席位,經濟艙每排都包含五個席位。。 + + + ? + + + + Build a formula (below) that calculates the total number of seats on the airplane as the rows are changed (above). + 於下方寫出一條公式以計算飛機上的座位總數。 + + + An airplane has two seats in the flight deck (for the pilot and co-pilot), and a number of rows of passenger seats. Each row contains four seats. + 一架飛機除了有兩個座位供正副機師,還有一定量行數的乘客座位。每排都包含四個席位。 + + + 1st class rows (%1) + 頭等艙(%1) + + + 2nd class rows: %1 + 經濟艙:%1 排 + + + Seats: %1 + 座位:%1 + + + Plane Seat Calculator + 飛機座位計算器 + + + rows (%1) + 排(%1) + + + 1st class rows: %1 + 頭等艙:%1 排 + + + An airplane has a number of rows of passenger seats. Each row contains four seats. + 一架飛機有一定量行數的乘客座位,每排都包含四個席位。 + + + 2nd class rows (%1) + 經濟艙(%1) + + + + diff --git a/demos/resizable/index.html b/demos/resizable/index.html index e2ee1e06d76..bdc35ffa93d 100644 --- a/demos/resizable/index.html +++ b/demos/resizable/index.html @@ -1,52 +1,52 @@ - - - - - Blockly Demo: Resizable Blockly (Part 1) - - - - - - - - - - -
      -

      Blockly > - Demos > Resizable Blockly (Part 1)

      - -

      The first step in creating a resizable Blockly workspace is to use - CSS or tables to create an area for it. - Next, inject Blockly over that area.

      - -

      → More info on injecting resizable Blockly

      -
      - Blockly will be positioned here. -
      - - + + + + + Blockly Demo: Resizable Blockly (Part 1) + + + + + + + + + + +
      +

      Blockly > + Demos > Resizable Blockly (Part 1)

      + +

      The first step in creating a resizable Blockly workspace is to use + CSS or tables to create an area for it. + Next, inject Blockly over that area.

      + +

      → More info on injecting resizable Blockly

      +
      + Blockly will be positioned here. +
      + + diff --git a/demos/resizable/overlay.html b/demos/resizable/overlay.html index 826a667bd4d..a610bd12347 100644 --- a/demos/resizable/overlay.html +++ b/demos/resizable/overlay.html @@ -1,96 +1,96 @@ - - - - - Blockly Demo: Resizable Blockly (Part 2) - - - - - - - - - - - - - -
      -

      Blockly > - Demos > Resizable Blockly (Part 2)

      - -

      - Once an area is defined, Blockly can be - injected and positioned over the area. - A resize handler keeps it in position as the page changes. -

      - -

      → More info on injecting resizable Blockly

      -
      -
      - -
      - - - - - - + + + + + Blockly Demo: Resizable Blockly (Part 2) + + + + + + + + + + + + + +
      +

      Blockly > + Demos > Resizable Blockly (Part 2)

      + +

      + Once an area is defined, Blockly can be + injected and positioned over the area. + A resize handler keeps it in position as the page changes. +

      + +

      → More info on injecting resizable Blockly

      +
      +
      + +
      + + + + + + diff --git a/demos/rtl/index.html b/demos/rtl/index.html index ff2b6306bed..ffcaca28e06 100644 --- a/demos/rtl/index.html +++ b/demos/rtl/index.html @@ -1,210 +1,210 @@ - - - - - - Blockly Demo: RTL - - - - - - - -

      Blockly > - Demos > Right-to-Left

      - -
      - - - - - - + + + + + + Blockly Demo: RTL + + + + + + + +

      Blockly > + Demos > Right-to-Left

      + +
      + + + + + + diff --git a/demos/storage/index.html b/demos/storage/index.html index 3bd34f079d1..2fb38e065e1 100644 --- a/demos/storage/index.html +++ b/demos/storage/index.html @@ -1,104 +1,104 @@ - - - - - Blockly Demo: Cloud Storage - - - - - - - -

      Blockly > - Demos > Cloud Storage

      - -

      This is a simple demo of cloud storage using App Engine.

      - - - -

      → More info on Cloud Storage

      - -

      - -

      - -
      - - - - - - - - + + + + + Blockly Demo: Cloud Storage + + + + + + + +

      Blockly > + Demos > Cloud Storage

      + +

      This is a simple demo of cloud storage using App Engine.

      + + + +

      → More info on Cloud Storage

      + +

      + +

      + +
      + + + + + + + + diff --git a/demos/toolbox/index.html b/demos/toolbox/index.html index 007b8eeb59f..597bfca6953 100644 --- a/demos/toolbox/index.html +++ b/demos/toolbox/index.html @@ -1,349 +1,349 @@ - - - - - Blockly Demo: Toolbox - - - - - - -

      Blockly > - Demos > Toolbox

      - -

      This is a demo of a complex category structure for the toolbox.

      - -

      → More info on the Toolbox

      - -
      - - - - - - - + + + + + Blockly Demo: Toolbox + + + + + + +

      Blockly > + Demos > Toolbox

      + +

      This is a demo of a complex category structure for the toolbox.

      + +

      → More info on the Toolbox

      + +
      + + + + + + + diff --git a/generators/dart.js b/generators/dart.js index d9e873a6ed0..c576cc0050a 100644 --- a/generators/dart.js +++ b/generators/dart.js @@ -1,304 +1,304 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Helper functions for generating Dart for blocks. - * @suppress {checkTypes|globalThis} - */ -'use strict'; - -goog.module('Blockly.Dart'); -goog.module.declareLegacyNamespace(); - -const Variables = goog.require('Blockly.Variables'); -const stringUtils = goog.require('Blockly.utils.string'); -const {Block} = goog.requireType('Blockly.Block'); -const {Generator} = goog.require('Blockly.Generator'); -const {Names, NameType} = goog.require('Blockly.Names'); -const {Workspace} = goog.requireType('Blockly.Workspace'); -const {inputTypes} = goog.require('Blockly.inputTypes'); - - -/** - * Dart code generator. - * @type {!Generator} - */ -const Dart = new Generator('Dart'); - -/** - * List of illegal variable names. - * This is not intended to be a security feature. Blockly is 100% client-side, - * so bypassing this list is trivial. This is intended to prevent users from - * accidentally clobbering a built-in object or function. - */ -Dart.addReservedWords( - // https://www.dartlang.org/docs/spec/latest/dart-language-specification.pdf - // Section 16.1.1 - 'assert,break,case,catch,class,const,continue,default,do,else,enum,' + - 'extends,false,final,finally,for,if,in,is,new,null,rethrow,return,super,' + - 'switch,this,throw,true,try,var,void,while,with,' + - // https://api.dartlang.org/dart_core.html - 'print,identityHashCode,identical,BidirectionalIterator,Comparable,' + - 'double,Function,int,Invocation,Iterable,Iterator,List,Map,Match,num,' + - 'Pattern,RegExp,Set,StackTrace,String,StringSink,Type,bool,DateTime,' + - 'Deprecated,Duration,Expando,Null,Object,RuneIterator,Runes,Stopwatch,' + - 'StringBuffer,Symbol,Uri,Comparator,AbstractClassInstantiationError,' + - 'ArgumentError,AssertionError,CastError,ConcurrentModificationError,' + - 'CyclicInitializationError,Error,Exception,FallThroughError,' + - 'FormatException,IntegerDivisionByZeroException,NoSuchMethodError,' + - 'NullThrownError,OutOfMemoryError,RangeError,StackOverflowError,' + - 'StateError,TypeError,UnimplementedError,UnsupportedError' -); - -/** - * Order of operation ENUMs. - * https://dart.dev/guides/language/language-tour#operators - */ -Dart.ORDER_ATOMIC = 0; // 0 "" ... -Dart.ORDER_UNARY_POSTFIX = 1; // expr++ expr-- () [] . ?. -Dart.ORDER_UNARY_PREFIX = 2; // -expr !expr ~expr ++expr --expr -Dart.ORDER_MULTIPLICATIVE = 3; // * / % ~/ -Dart.ORDER_ADDITIVE = 4; // + - -Dart.ORDER_SHIFT = 5; // << >> -Dart.ORDER_BITWISE_AND = 6; // & -Dart.ORDER_BITWISE_XOR = 7; // ^ -Dart.ORDER_BITWISE_OR = 8; // | -Dart.ORDER_RELATIONAL = 9; // >= > <= < as is is! -Dart.ORDER_EQUALITY = 10; // == != -Dart.ORDER_LOGICAL_AND = 11; // && -Dart.ORDER_LOGICAL_OR = 12; // || -Dart.ORDER_IF_NULL = 13; // ?? -Dart.ORDER_CONDITIONAL = 14; // expr ? expr : expr -Dart.ORDER_CASCADE = 15; // .. -Dart.ORDER_ASSIGNMENT = 16; // = *= /= ~/= %= += -= <<= >>= &= ^= |= -Dart.ORDER_NONE = 99; // (...) - -/** - * Whether the init method has been called. - * @type {?boolean} - */ -Dart.isInitialized = false; - -/** - * Initialise the database of variable names. - * @param {!Workspace} workspace Workspace to generate code from. - */ -Dart.init = function(workspace) { - // Call Blockly.Generator's init. - Object.getPrototypeOf(this).init.call(this); - - if (!this.nameDB_) { - this.nameDB_ = new Names(this.RESERVED_WORDS_); - } else { - this.nameDB_.reset(); - } - - this.nameDB_.setVariableMap(workspace.getVariableMap()); - this.nameDB_.populateVariables(workspace); - this.nameDB_.populateProcedures(workspace); - - const defvars = []; - // Add developer variables (not created or named by the user). - const devVarList = Variables.allDeveloperVariables(workspace); - for (let i = 0; i < devVarList.length; i++) { - defvars.push(this.nameDB_.getName(devVarList[i], - NameType.DEVELOPER_VARIABLE)); - } - - // Add user variables, but only ones that are being used. - const variables = Variables.allUsedVarModels(workspace); - for (let i = 0; i < variables.length; i++) { - defvars.push(this.nameDB_.getName(variables[i].getId(), - NameType.VARIABLE)); - } - - // Declare all of the variables. - if (defvars.length) { - this.definitions_['variables'] = - 'var ' + defvars.join(', ') + ';'; - } - this.isInitialized = true; -}; - -/** - * Prepend the generated code with import statements and variable definitions. - * @param {string} code Generated code. - * @return {string} Completed code. - */ -Dart.finish = function(code) { - // Indent every line. - if (code) { - code = this.prefixLines(code, this.INDENT); - } - code = 'main() {\n' + code + '}'; - - // Convert the definitions dictionary into a list. - const imports = []; - const definitions = []; - for (let name in this.definitions_) { - const def = this.definitions_[name]; - if (def.match(/^import\s/)) { - imports.push(def); - } else { - definitions.push(def); - } - } - // Call Blockly.Generator's finish. - code = Object.getPrototypeOf(this).finish.call(this, code); - this.isInitialized = false; - - this.nameDB_.reset(); - const allDefs = imports.join('\n') + '\n\n' + definitions.join('\n\n'); - return allDefs.replace(/\n\n+/g, '\n\n').replace(/\n*$/, '\n\n\n') + code; -}; - -/** - * Naked values are top-level blocks with outputs that aren't plugged into - * anything. A trailing semicolon is needed to make this legal. - * @param {string} line Line of generated code. - * @return {string} Legal line of code. - */ -Dart.scrubNakedValue = function(line) { - return line + ';\n'; -}; - -/** - * Encode a string as a properly escaped Dart string, complete with quotes. - * @param {string} string Text to encode. - * @return {string} Dart string. - * @protected - */ -Dart.quote_ = function(string) { - // Can't use goog.string.quote since $ must also be escaped. - string = string.replace(/\\/g, '\\\\') - .replace(/\n/g, '\\\n') - .replace(/\$/g, '\\$') - .replace(/'/g, '\\\''); - return '\'' + string + '\''; -}; - -/** - * Encode a string as a properly escaped multiline Dart string, complete with - * quotes. - * @param {string} string Text to encode. - * @return {string} Dart string. - * @protected - */ -Dart.multiline_quote_ = function (string) { - const lines = string.split(/\n/g).map(this.quote_); - // Join with the following, plus a newline: - // + '\n' + - return lines.join(' + \'\\n\' + \n'); -}; - -/** - * Common tasks for generating Dart from blocks. - * Handles comments for the specified block and any connected value blocks. - * Calls any statements following this block. - * @param {!Block} block The current block. - * @param {string} code The Dart code created for this block. - * @param {boolean=} opt_thisOnly True to generate code for only this statement. - * @return {string} Dart code with comments and subsequent blocks added. - * @protected - */ -Dart.scrub_ = function(block, code, opt_thisOnly) { - let commentCode = ''; - // Only collect comments for blocks that aren't inline. - if (!block.outputConnection || !block.outputConnection.targetConnection) { - // Collect comment for this block. - let comment = block.getCommentText(); - if (comment) { - comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); - if (block.getProcedureDef) { - // Use documentation comment for function comments. - commentCode += this.prefixLines(comment + '\n', '/// '); - } else { - commentCode += this.prefixLines(comment + '\n', '// '); - } - } - // Collect comments for all value arguments. - // Don't collect comments for nested statements. - for (let i = 0; i < block.inputList.length; i++) { - if (block.inputList[i].type === inputTypes.VALUE) { - const childBlock = block.inputList[i].connection.targetBlock(); - if (childBlock) { - comment = this.allNestedComments(childBlock); - if (comment) { - commentCode += this.prefixLines(comment, '// '); - } - } - } - } - } - const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); - return commentCode + code + nextCode; -}; - -/** - * Gets a property and adjusts the value while taking into account indexing. - * @param {!Block} block The block. - * @param {string} atId The property ID of the element to get. - * @param {number=} opt_delta Value to add. - * @param {boolean=} opt_negate Whether to negate the value. - * @param {number=} opt_order The highest order acting on this value. - * @return {string|number} - */ -Dart.getAdjusted = function(block, atId, opt_delta, opt_negate, - opt_order) { - let delta = opt_delta || 0; - let order = opt_order || this.ORDER_NONE; - if (block.workspace.options.oneBasedIndex) { - delta--; - } - const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; - - /** @type {number} */ - let outerOrder; - let innerOrder; - if (delta) { - outerOrder = this.ORDER_ADDITIVE; - innerOrder = this.ORDER_ADDITIVE; - } else if (opt_negate) { - outerOrder = this.ORDER_UNARY_PREFIX; - innerOrder = this.ORDER_UNARY_PREFIX; - } else { - outerOrder = order; - } - - /** @type {string|number} */ - let at = this.valueToCode(block, atId, outerOrder) || defaultAtIndex; - - if (stringUtils.isNumber(at)) { - // If the index is a naked number, adjust it right now. - at = parseInt(at, 10) + delta; - if (opt_negate) { - at = -at; - } - } else { - // If the index is dynamic, adjust it in code. - if (delta > 0) { - at = at + ' + ' + delta; - } else if (delta < 0) { - at = at + ' - ' + -delta; - } - if (opt_negate) { - if (delta) { - at = '-(' + at + ')'; - } else { - at = '-' + at; - } - } - innerOrder = Math.floor(innerOrder); - order = Math.floor(order); - if (innerOrder && order >= innerOrder) { - at = '(' + at + ')'; - } - } - return at; -}; - -exports = Dart; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Helper functions for generating Dart for blocks. + * @suppress {checkTypes|globalThis} + */ +'use strict'; + +goog.module('Blockly.Dart'); +goog.module.declareLegacyNamespace(); + +const Variables = goog.require('Blockly.Variables'); +const stringUtils = goog.require('Blockly.utils.string'); +const {Block} = goog.requireType('Blockly.Block'); +const {Generator} = goog.require('Blockly.Generator'); +const {Names, NameType} = goog.require('Blockly.Names'); +const {Workspace} = goog.requireType('Blockly.Workspace'); +const {inputTypes} = goog.require('Blockly.inputTypes'); + + +/** + * Dart code generator. + * @type {!Generator} + */ +const Dart = new Generator('Dart'); + +/** + * List of illegal variable names. + * This is not intended to be a security feature. Blockly is 100% client-side, + * so bypassing this list is trivial. This is intended to prevent users from + * accidentally clobbering a built-in object or function. + */ +Dart.addReservedWords( + // https://www.dartlang.org/docs/spec/latest/dart-language-specification.pdf + // Section 16.1.1 + 'assert,break,case,catch,class,const,continue,default,do,else,enum,' + + 'extends,false,final,finally,for,if,in,is,new,null,rethrow,return,super,' + + 'switch,this,throw,true,try,var,void,while,with,' + + // https://api.dartlang.org/dart_core.html + 'print,identityHashCode,identical,BidirectionalIterator,Comparable,' + + 'double,Function,int,Invocation,Iterable,Iterator,List,Map,Match,num,' + + 'Pattern,RegExp,Set,StackTrace,String,StringSink,Type,bool,DateTime,' + + 'Deprecated,Duration,Expando,Null,Object,RuneIterator,Runes,Stopwatch,' + + 'StringBuffer,Symbol,Uri,Comparator,AbstractClassInstantiationError,' + + 'ArgumentError,AssertionError,CastError,ConcurrentModificationError,' + + 'CyclicInitializationError,Error,Exception,FallThroughError,' + + 'FormatException,IntegerDivisionByZeroException,NoSuchMethodError,' + + 'NullThrownError,OutOfMemoryError,RangeError,StackOverflowError,' + + 'StateError,TypeError,UnimplementedError,UnsupportedError' +); + +/** + * Order of operation ENUMs. + * https://dart.dev/guides/language/language-tour#operators + */ +Dart.ORDER_ATOMIC = 0; // 0 "" ... +Dart.ORDER_UNARY_POSTFIX = 1; // expr++ expr-- () [] . ?. +Dart.ORDER_UNARY_PREFIX = 2; // -expr !expr ~expr ++expr --expr +Dart.ORDER_MULTIPLICATIVE = 3; // * / % ~/ +Dart.ORDER_ADDITIVE = 4; // + - +Dart.ORDER_SHIFT = 5; // << >> +Dart.ORDER_BITWISE_AND = 6; // & +Dart.ORDER_BITWISE_XOR = 7; // ^ +Dart.ORDER_BITWISE_OR = 8; // | +Dart.ORDER_RELATIONAL = 9; // >= > <= < as is is! +Dart.ORDER_EQUALITY = 10; // == != +Dart.ORDER_LOGICAL_AND = 11; // && +Dart.ORDER_LOGICAL_OR = 12; // || +Dart.ORDER_IF_NULL = 13; // ?? +Dart.ORDER_CONDITIONAL = 14; // expr ? expr : expr +Dart.ORDER_CASCADE = 15; // .. +Dart.ORDER_ASSIGNMENT = 16; // = *= /= ~/= %= += -= <<= >>= &= ^= |= +Dart.ORDER_NONE = 99; // (...) + +/** + * Whether the init method has been called. + * @type {?boolean} + */ +Dart.isInitialized = false; + +/** + * Initialise the database of variable names. + * @param {!Workspace} workspace Workspace to generate code from. + */ +Dart.init = function(workspace) { + // Call Blockly.Generator's init. + Object.getPrototypeOf(this).init.call(this); + + if (!this.nameDB_) { + this.nameDB_ = new Names(this.RESERVED_WORDS_); + } else { + this.nameDB_.reset(); + } + + this.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.populateVariables(workspace); + this.nameDB_.populateProcedures(workspace); + + const defvars = []; + // Add developer variables (not created or named by the user). + const devVarList = Variables.allDeveloperVariables(workspace); + for (let i = 0; i < devVarList.length; i++) { + defvars.push(this.nameDB_.getName(devVarList[i], + NameType.DEVELOPER_VARIABLE)); + } + + // Add user variables, but only ones that are being used. + const variables = Variables.allUsedVarModels(workspace); + for (let i = 0; i < variables.length; i++) { + defvars.push(this.nameDB_.getName(variables[i].getId(), + NameType.VARIABLE)); + } + + // Declare all of the variables. + if (defvars.length) { + this.definitions_['variables'] = + 'var ' + defvars.join(', ') + ';'; + } + this.isInitialized = true; +}; + +/** + * Prepend the generated code with import statements and variable definitions. + * @param {string} code Generated code. + * @return {string} Completed code. + */ +Dart.finish = function(code) { + // Indent every line. + if (code) { + code = this.prefixLines(code, this.INDENT); + } + code = 'main() {\n' + code + '}'; + + // Convert the definitions dictionary into a list. + const imports = []; + const definitions = []; + for (let name in this.definitions_) { + const def = this.definitions_[name]; + if (def.match(/^import\s/)) { + imports.push(def); + } else { + definitions.push(def); + } + } + // Call Blockly.Generator's finish. + code = Object.getPrototypeOf(this).finish.call(this, code); + this.isInitialized = false; + + this.nameDB_.reset(); + const allDefs = imports.join('\n') + '\n\n' + definitions.join('\n\n'); + return allDefs.replace(/\n\n+/g, '\n\n').replace(/\n*$/, '\n\n\n') + code; +}; + +/** + * Naked values are top-level blocks with outputs that aren't plugged into + * anything. A trailing semicolon is needed to make this legal. + * @param {string} line Line of generated code. + * @return {string} Legal line of code. + */ +Dart.scrubNakedValue = function(line) { + return line + ';\n'; +}; + +/** + * Encode a string as a properly escaped Dart string, complete with quotes. + * @param {string} string Text to encode. + * @return {string} Dart string. + * @protected + */ +Dart.quote_ = function(string) { + // Can't use goog.string.quote since $ must also be escaped. + string = string.replace(/\\/g, '\\\\') + .replace(/\n/g, '\\\n') + .replace(/\$/g, '\\$') + .replace(/'/g, '\\\''); + return '\'' + string + '\''; +}; + +/** + * Encode a string as a properly escaped multiline Dart string, complete with + * quotes. + * @param {string} string Text to encode. + * @return {string} Dart string. + * @protected + */ +Dart.multiline_quote_ = function (string) { + const lines = string.split(/\n/g).map(this.quote_); + // Join with the following, plus a newline: + // + '\n' + + return lines.join(' + \'\\n\' + \n'); +}; + +/** + * Common tasks for generating Dart from blocks. + * Handles comments for the specified block and any connected value blocks. + * Calls any statements following this block. + * @param {!Block} block The current block. + * @param {string} code The Dart code created for this block. + * @param {boolean=} opt_thisOnly True to generate code for only this statement. + * @return {string} Dart code with comments and subsequent blocks added. + * @protected + */ +Dart.scrub_ = function(block, code, opt_thisOnly) { + let commentCode = ''; + // Only collect comments for blocks that aren't inline. + if (!block.outputConnection || !block.outputConnection.targetConnection) { + // Collect comment for this block. + let comment = block.getCommentText(); + if (comment) { + comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); + if (block.getProcedureDef) { + // Use documentation comment for function comments. + commentCode += this.prefixLines(comment + '\n', '/// '); + } else { + commentCode += this.prefixLines(comment + '\n', '// '); + } + } + // Collect comments for all value arguments. + // Don't collect comments for nested statements. + for (let i = 0; i < block.inputList.length; i++) { + if (block.inputList[i].type === inputTypes.VALUE) { + const childBlock = block.inputList[i].connection.targetBlock(); + if (childBlock) { + comment = this.allNestedComments(childBlock); + if (comment) { + commentCode += this.prefixLines(comment, '// '); + } + } + } + } + } + const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); + const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); + return commentCode + code + nextCode; +}; + +/** + * Gets a property and adjusts the value while taking into account indexing. + * @param {!Block} block The block. + * @param {string} atId The property ID of the element to get. + * @param {number=} opt_delta Value to add. + * @param {boolean=} opt_negate Whether to negate the value. + * @param {number=} opt_order The highest order acting on this value. + * @return {string|number} + */ +Dart.getAdjusted = function(block, atId, opt_delta, opt_negate, + opt_order) { + let delta = opt_delta || 0; + let order = opt_order || this.ORDER_NONE; + if (block.workspace.options.oneBasedIndex) { + delta--; + } + const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; + + /** @type {number} */ + let outerOrder; + let innerOrder; + if (delta) { + outerOrder = this.ORDER_ADDITIVE; + innerOrder = this.ORDER_ADDITIVE; + } else if (opt_negate) { + outerOrder = this.ORDER_UNARY_PREFIX; + innerOrder = this.ORDER_UNARY_PREFIX; + } else { + outerOrder = order; + } + + /** @type {string|number} */ + let at = this.valueToCode(block, atId, outerOrder) || defaultAtIndex; + + if (stringUtils.isNumber(at)) { + // If the index is a naked number, adjust it right now. + at = parseInt(at, 10) + delta; + if (opt_negate) { + at = -at; + } + } else { + // If the index is dynamic, adjust it in code. + if (delta > 0) { + at = at + ' + ' + delta; + } else if (delta < 0) { + at = at + ' - ' + -delta; + } + if (opt_negate) { + if (delta) { + at = '-(' + at + ')'; + } else { + at = '-' + at; + } + } + innerOrder = Math.floor(innerOrder); + order = Math.floor(order); + if (innerOrder && order >= innerOrder) { + at = '(' + at + ')'; + } + } + return at; +}; + +exports = Dart; diff --git a/generators/dart/all.js b/generators/dart/all.js index f250f7c27d1..8f4af8282a2 100644 --- a/generators/dart/all.js +++ b/generators/dart/all.js @@ -1,25 +1,25 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Complete helper functions for generating Dart for - * blocks. This is the entrypoint for dart_compressed.js. - * @suppress {extraRequire} - */ -'use strict'; - -goog.module('Blockly.Dart.all'); - -goog.require('Blockly.Dart.colour'); -goog.require('Blockly.Dart.lists'); -goog.require('Blockly.Dart.logic'); -goog.require('Blockly.Dart.loops'); -goog.require('Blockly.Dart.math'); -goog.require('Blockly.Dart.procedures'); -goog.require('Blockly.Dart.texts'); -goog.require('Blockly.Dart.variables'); -goog.require('Blockly.Dart.variablesDynamic'); - +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Complete helper functions for generating Dart for + * blocks. This is the entrypoint for dart_compressed.js. + * @suppress {extraRequire} + */ +'use strict'; + +goog.module('Blockly.Dart.all'); + +goog.require('Blockly.Dart.colour'); +goog.require('Blockly.Dart.lists'); +goog.require('Blockly.Dart.logic'); +goog.require('Blockly.Dart.loops'); +goog.require('Blockly.Dart.math'); +goog.require('Blockly.Dart.procedures'); +goog.require('Blockly.Dart.texts'); +goog.require('Blockly.Dart.variables'); +goog.require('Blockly.Dart.variablesDynamic'); + diff --git a/generators/dart/colour.js b/generators/dart/colour.js index 96aeaea51b0..79d9aebf441 100644 --- a/generators/dart/colour.js +++ b/generators/dart/colour.js @@ -1,105 +1,105 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for colour blocks. - */ -'use strict'; - -goog.module('Blockly.Dart.colour'); - -const Dart = goog.require('Blockly.Dart'); - - -Dart.addReservedWords('Math'); - -Dart['colour_picker'] = function(block) { - // Colour picker. - const code = Dart.quote_(block.getFieldValue('COLOUR')); - return [code, Dart.ORDER_ATOMIC]; -}; - -Dart['colour_random'] = function(block) { - // Generate a random colour. - Dart.definitions_['import_dart_math'] = "import 'dart:math' as Math;"; - const functionName = Dart.provideFunction_('colour_random', ` -String ${Dart.FUNCTION_NAME_PLACEHOLDER_}() { - String hex = '0123456789abcdef'; - var rnd = new Math.Random(); - return '#\${hex[rnd.nextInt(16)]}\${hex[rnd.nextInt(16)]}' - '\${hex[rnd.nextInt(16)]}\${hex[rnd.nextInt(16)]}' - '\${hex[rnd.nextInt(16)]}\${hex[rnd.nextInt(16)]}'; -} -`); - const code = functionName + '()'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['colour_rgb'] = function(block) { - // Compose a colour from RGB components expressed as percentages. - const red = Dart.valueToCode(block, 'RED', - Dart.ORDER_NONE) || 0; - const green = Dart.valueToCode(block, 'GREEN', - Dart.ORDER_NONE) || 0; - const blue = Dart.valueToCode(block, 'BLUE', - Dart.ORDER_NONE) || 0; - - Dart.definitions_['import_dart_math'] = "import 'dart:math' as Math;"; - const functionName = Dart.provideFunction_('colour_rgb', ` -String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(num r, num g, num b) { - num rn = (Math.max(Math.min(r, 100), 0) * 2.55).round(); - String rs = rn.toInt().toRadixString(16); - rs = '0$rs'; - rs = rs.substring(rs.length - 2); - num gn = (Math.max(Math.min(g, 100), 0) * 2.55).round(); - String gs = gn.toInt().toRadixString(16); - gs = '0$gs'; - gs = gs.substring(gs.length - 2); - num bn = (Math.max(Math.min(b, 100), 0) * 2.55).round(); - String bs = bn.toInt().toRadixString(16); - bs = '0$bs'; - bs = bs.substring(bs.length - 2); - return '#$rs$gs$bs'; -} -`); - const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['colour_blend'] = function(block) { - // Blend two colours together. - const c1 = Dart.valueToCode(block, 'COLOUR1', Dart.ORDER_NONE) || "'#000000'"; - const c2 = Dart.valueToCode(block, 'COLOUR2', Dart.ORDER_NONE) || "'#000000'"; - const ratio = Dart.valueToCode(block, 'RATIO', Dart.ORDER_NONE) || 0.5; - - Dart.definitions_['import_dart_math'] = "import 'dart:math' as Math;"; - const functionName = Dart.provideFunction_('colour_blend', ` -String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String c1, String c2, num ratio) { - ratio = Math.max(Math.min(ratio, 1), 0); - int r1 = int.parse('0x\${c1.substring(1, 3)}'); - int g1 = int.parse('0x\${c1.substring(3, 5)}'); - int b1 = int.parse('0x\${c1.substring(5, 7)}'); - int r2 = int.parse('0x\${c2.substring(1, 3)}'); - int g2 = int.parse('0x\${c2.substring(3, 5)}'); - int b2 = int.parse('0x\${c2.substring(5, 7)}'); - num rn = (r1 * (1 - ratio) + r2 * ratio).round(); - String rs = rn.toInt().toRadixString(16); - num gn = (g1 * (1 - ratio) + g2 * ratio).round(); - String gs = gn.toInt().toRadixString(16); - num bn = (b1 * (1 - ratio) + b2 * ratio).round(); - String bs = bn.toInt().toRadixString(16); - rs = '0$rs'; - rs = rs.substring(rs.length - 2); - gs = '0$gs'; - gs = gs.substring(gs.length - 2); - bs = '0$bs'; - bs = bs.substring(bs.length - 2); - return '#$rs$gs$bs'; -} -`); - const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for colour blocks. + */ +'use strict'; + +goog.module('Blockly.Dart.colour'); + +const Dart = goog.require('Blockly.Dart'); + + +Dart.addReservedWords('Math'); + +Dart['colour_picker'] = function(block) { + // Colour picker. + const code = Dart.quote_(block.getFieldValue('COLOUR')); + return [code, Dart.ORDER_ATOMIC]; +}; + +Dart['colour_random'] = function(block) { + // Generate a random colour. + Dart.definitions_['import_dart_math'] = "import 'dart:math' as Math;"; + const functionName = Dart.provideFunction_('colour_random', ` +String ${Dart.FUNCTION_NAME_PLACEHOLDER_}() { + String hex = '0123456789abcdef'; + var rnd = new Math.Random(); + return '#\${hex[rnd.nextInt(16)]}\${hex[rnd.nextInt(16)]}' + '\${hex[rnd.nextInt(16)]}\${hex[rnd.nextInt(16)]}' + '\${hex[rnd.nextInt(16)]}\${hex[rnd.nextInt(16)]}'; +} +`); + const code = functionName + '()'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['colour_rgb'] = function(block) { + // Compose a colour from RGB components expressed as percentages. + const red = Dart.valueToCode(block, 'RED', + Dart.ORDER_NONE) || 0; + const green = Dart.valueToCode(block, 'GREEN', + Dart.ORDER_NONE) || 0; + const blue = Dart.valueToCode(block, 'BLUE', + Dart.ORDER_NONE) || 0; + + Dart.definitions_['import_dart_math'] = "import 'dart:math' as Math;"; + const functionName = Dart.provideFunction_('colour_rgb', ` +String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(num r, num g, num b) { + num rn = (Math.max(Math.min(r, 100), 0) * 2.55).round(); + String rs = rn.toInt().toRadixString(16); + rs = '0$rs'; + rs = rs.substring(rs.length - 2); + num gn = (Math.max(Math.min(g, 100), 0) * 2.55).round(); + String gs = gn.toInt().toRadixString(16); + gs = '0$gs'; + gs = gs.substring(gs.length - 2); + num bn = (Math.max(Math.min(b, 100), 0) * 2.55).round(); + String bs = bn.toInt().toRadixString(16); + bs = '0$bs'; + bs = bs.substring(bs.length - 2); + return '#$rs$gs$bs'; +} +`); + const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['colour_blend'] = function(block) { + // Blend two colours together. + const c1 = Dart.valueToCode(block, 'COLOUR1', Dart.ORDER_NONE) || "'#000000'"; + const c2 = Dart.valueToCode(block, 'COLOUR2', Dart.ORDER_NONE) || "'#000000'"; + const ratio = Dart.valueToCode(block, 'RATIO', Dart.ORDER_NONE) || 0.5; + + Dart.definitions_['import_dart_math'] = "import 'dart:math' as Math;"; + const functionName = Dart.provideFunction_('colour_blend', ` +String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String c1, String c2, num ratio) { + ratio = Math.max(Math.min(ratio, 1), 0); + int r1 = int.parse('0x\${c1.substring(1, 3)}'); + int g1 = int.parse('0x\${c1.substring(3, 5)}'); + int b1 = int.parse('0x\${c1.substring(5, 7)}'); + int r2 = int.parse('0x\${c2.substring(1, 3)}'); + int g2 = int.parse('0x\${c2.substring(3, 5)}'); + int b2 = int.parse('0x\${c2.substring(5, 7)}'); + num rn = (r1 * (1 - ratio) + r2 * ratio).round(); + String rs = rn.toInt().toRadixString(16); + num gn = (g1 * (1 - ratio) + g2 * ratio).round(); + String gs = gn.toInt().toRadixString(16); + num bn = (b1 * (1 - ratio) + b2 * ratio).round(); + String bs = bn.toInt().toRadixString(16); + rs = '0$rs'; + rs = rs.substring(rs.length - 2); + gs = '0$gs'; + gs = gs.substring(gs.length - 2); + bs = '0$bs'; + bs = bs.substring(bs.length - 2); + return '#$rs$gs$bs'; +} +`); + const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; diff --git a/generators/dart/lists.js b/generators/dart/lists.js index 493cd7a83d4..8e096c6cab4 100644 --- a/generators/dart/lists.js +++ b/generators/dart/lists.js @@ -1,431 +1,431 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for list blocks. - */ -'use strict'; - -goog.module('Blockly.Dart.lists'); - -const Dart = goog.require('Blockly.Dart'); -const {NameType} = goog.require('Blockly.Names'); - - -Dart.addReservedWords('Math'); - -Dart['lists_create_empty'] = function(block) { - // Create an empty list. - return ['[]', Dart.ORDER_ATOMIC]; -}; - -Dart['lists_create_with'] = function(block) { - // Create a list with any number of elements of any type. - const elements = new Array(block.itemCount_); - for (let i = 0; i < block.itemCount_; i++) { - elements[i] = Dart.valueToCode(block, 'ADD' + i, Dart.ORDER_NONE) || 'null'; - } - const code = '[' + elements.join(', ') + ']'; - return [code, Dart.ORDER_ATOMIC]; -}; - -Dart['lists_repeat'] = function(block) { - // Create a list with one element repeated. - const element = Dart.valueToCode(block, 'ITEM', Dart.ORDER_NONE) || 'null'; - const repeatCount = Dart.valueToCode(block, 'NUM', Dart.ORDER_NONE) || '0'; - const code = 'new List.filled(' + repeatCount + ', ' + element + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['lists_length'] = function(block) { - // String or array length. - const list = - Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || '[]'; - return [list + '.length', Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['lists_isEmpty'] = function(block) { - // Is the string null or array empty? - const list = - Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || '[]'; - return [list + '.isEmpty', Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['lists_indexOf'] = function(block) { - // Find an item in the list. - const operator = - block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf'; - const item = Dart.valueToCode(block, 'FIND', Dart.ORDER_NONE) || "''"; - const list = - Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || '[]'; - const code = list + '.' + operator + '(' + item + ')'; - if (block.workspace.options.oneBasedIndex) { - return [code + ' + 1', Dart.ORDER_ADDITIVE]; - } - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['lists_getIndex'] = function(block) { - // Get element at index. - // Note: Until January 2013 this block did not have MODE or WHERE inputs. - const mode = block.getFieldValue('MODE') || 'GET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const listOrder = (where === 'RANDOM' || where === 'FROM_END') ? - Dart.ORDER_NONE : - Dart.ORDER_UNARY_POSTFIX; - let list = Dart.valueToCode(block, 'VALUE', listOrder) || '[]'; - // Cache non-trivial values to variables to prevent repeated look-ups. - // Closure, which accesses and modifies 'list'. - function cacheList() { - const listVar = Dart.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); - const code = 'List ' + listVar + ' = ' + list + ';\n'; - list = listVar; - return code; - } - // If `list` would be evaluated more than once (which is the case for - // RANDOM REMOVE and FROM_END) and is non-trivial, make sure to access it - // only once. - if (((where === 'RANDOM' && mode === 'REMOVE') || where === 'FROM_END') && - !list.match(/^\w+$/)) { - // `list` is an expression, so we may not evaluate it more than once. - if (where === 'RANDOM') { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - // We can use multiple statements. - let code = cacheList(); - const xVar = Dart.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); - code += 'int ' + xVar + ' = new Math.Random().nextInt(' + list + - '.length);\n'; - code += list + '.removeAt(' + xVar + ');\n'; - return code; - } else { // where === 'FROM_END' - if (mode === 'REMOVE') { - // We can use multiple statements. - const at = Dart.getAdjusted(block, 'AT', 1, false, Dart.ORDER_ADDITIVE); - let code = cacheList(); - code += list + '.removeAt(' + list + '.length' + - ' - ' + at + ');\n'; - return code; - - } else if (mode === 'GET') { - const at = Dart.getAdjusted(block, 'AT', 1); - // We need to create a procedure to avoid reevaluating values. - const functionName = Dart.provideFunction_('lists_get_from_end', ` -dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List my_list, num x) { - x = my_list.length - x; - return my_list[x]; -} -`); - const code = functionName + '(' + list + ', ' + at + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'GET_REMOVE') { - const at = Dart.getAdjusted(block, 'AT', 1); - // We need to create a procedure to avoid reevaluating values. - const functionName = Dart.provideFunction_('lists_remove_from_end', ` -dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List my_list, num x) { - x = my_list.length - x; - return my_list.removeAt(x); -} -`); - const code = functionName + '(' + list + ', ' + at + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - } - } else { - // Either `list` is a simple variable, or we only need to refer to `list` - // once. - switch (where) { - case 'FIRST': - if (mode === 'GET') { - const code = list + '.first'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.removeAt(0)'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'REMOVE') { - return list + '.removeAt(0);\n'; - } - break; - case 'LAST': - if (mode === 'GET') { - const code = list + '.last'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.removeLast()'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'REMOVE') { - return list + '.removeLast();\n'; - } - break; - case 'FROM_START': { - const at = Dart.getAdjusted(block, 'AT'); - if (mode === 'GET') { - const code = list + '[' + at + ']'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.removeAt(' + at + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'REMOVE') { - return list + '.removeAt(' + at + ');\n'; - } - break; - } - case 'FROM_END': { - const at = Dart.getAdjusted(block, 'AT', 1, false, Dart.ORDER_ADDITIVE); - if (mode === 'GET') { - const code = list + '[' + list + '.length - ' + at + ']'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'GET_REMOVE' || mode === 'REMOVE') { - const code = list + '.removeAt(' + list + '.length - ' + at + ')'; - if (mode === 'GET_REMOVE') { - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'REMOVE') { - return code + ';\n'; - } - } - break; - } - case 'RANDOM': - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - if (mode === 'REMOVE') { - // We can use multiple statements. - const xVar = Dart.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); - let code = 'int ' + xVar + ' = new Math.Random().nextInt(' + list + - '.length);\n'; - code += list + '.removeAt(' + xVar + ');\n'; - return code; - } else if (mode === 'GET') { - const functionName = Dart.provideFunction_('lists_get_random_item', ` -dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List my_list) { - int x = new Math.Random().nextInt(my_list.length); - return my_list[x]; -} -`); - const code = functionName + '(' + list + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } else if (mode === 'GET_REMOVE') { - const functionName = - Dart.provideFunction_('lists_remove_random_item', ` -dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List my_list) { - int x = new Math.Random().nextInt(my_list.length); - return my_list.removeAt(x); -} -`); - const code = functionName + '(' + list + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - break; - } - } - throw Error('Unhandled combination (lists_getIndex).'); -}; - -Dart['lists_setIndex'] = function(block) { - // Set element at index. - // Note: Until February 2013 this block did not have MODE or WHERE inputs. - const mode = block.getFieldValue('MODE') || 'GET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - let list = Dart.valueToCode(block, 'LIST', Dart.ORDER_UNARY_POSTFIX) || '[]'; - const value = Dart.valueToCode(block, 'TO', Dart.ORDER_ASSIGNMENT) || 'null'; - // Cache non-trivial values to variables to prevent repeated look-ups. - // Closure, which accesses and modifies 'list'. - function cacheList() { - if (list.match(/^\w+$/)) { - return ''; - } - const listVar = Dart.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); - const code = 'List ' + listVar + ' = ' + list + ';\n'; - list = listVar; - return code; - } - switch (where) { - case 'FIRST': - if (mode === 'SET') { - return list + '[0] = ' + value + ';\n'; - } else if (mode === 'INSERT') { - return list + '.insert(0, ' + value + ');\n'; - } - break; - case 'LAST': - if (mode === 'SET') { - let code = cacheList(); - code += list + '[' + list + '.length - 1] = ' + value + ';\n'; - return code; - } else if (mode === 'INSERT') { - return list + '.add(' + value + ');\n'; - } - break; - case 'FROM_START': { - const at = Dart.getAdjusted(block, 'AT'); - if (mode === 'SET') { - return list + '[' + at + '] = ' + value + ';\n'; - } else if (mode === 'INSERT') { - return list + '.insert(' + at + ', ' + value + ');\n'; - } - break; - } - case 'FROM_END': { - const at = Dart.getAdjusted(block, 'AT', 1, false, Dart.ORDER_ADDITIVE); - let code = cacheList(); - if (mode === 'SET') { - code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\n'; - return code; - } else if (mode === 'INSERT') { - code += list + '.insert(' + list + '.length - ' + at + ', ' + value + - ');\n'; - return code; - } - break; - } - case 'RANDOM': { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - let code = cacheList(); - const xVar = Dart.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); - code += 'int ' + xVar + ' = new Math.Random().nextInt(' + list + - '.length);\n'; - if (mode === 'SET') { - code += list + '[' + xVar + '] = ' + value + ';\n'; - return code; - } else if (mode === 'INSERT') { - code += list + '.insert(' + xVar + ', ' + value + ');\n'; - return code; - } - break; - } - } - throw Error('Unhandled combination (lists_setIndex).'); -}; - -Dart['lists_getSublist'] = function(block) { - // Get sublist. - const list = - Dart.valueToCode(block, 'LIST', Dart.ORDER_UNARY_POSTFIX) || '[]'; - const where1 = block.getFieldValue('WHERE1'); - const where2 = block.getFieldValue('WHERE2'); - let code; - if (list.match(/^\w+$/) || - (where1 !== 'FROM_END' && where2 === 'FROM_START')) { - // If the list is a is a variable or doesn't require a call for length, - // don't generate a helper function. - let at1; - switch (where1) { - case 'FROM_START': - at1 = Dart.getAdjusted(block, 'AT1'); - break; - case 'FROM_END': - at1 = Dart.getAdjusted(block, 'AT1', 1, false, Dart.ORDER_ADDITIVE); - at1 = list + '.length - ' + at1; - break; - case 'FIRST': - at1 = '0'; - break; - default: - throw Error('Unhandled option (lists_getSublist).'); - } - let at2; - switch (where2) { - case 'FROM_START': - at2 = Dart.getAdjusted(block, 'AT2', 1); - break; - case 'FROM_END': - at2 = Dart.getAdjusted(block, 'AT2', 0, false, Dart.ORDER_ADDITIVE); - at2 = list + '.length - ' + at2; - break; - case 'LAST': - // There is no second index if LAST option is chosen. - break; - default: - throw Error('Unhandled option (lists_getSublist).'); - } - if (where2 === 'LAST') { - code = list + '.sublist(' + at1 + ')'; - } else { - code = list + '.sublist(' + at1 + ', ' + at2 + ')'; - } - } else { - const at1 = Dart.getAdjusted(block, 'AT1'); - const at2 = Dart.getAdjusted(block, 'AT2'); - const functionName = Dart.provideFunction_('lists_get_sublist', ` -List ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List list, String where1, num at1, String where2, num at2) { - int getAt(String where, num at) { - if (where == 'FROM_END') { - at = list.length - 1 - at; - } else if (where == 'FIRST') { - at = 0; - } else if (where == 'LAST') { - at = list.length - 1; - } else if (where != 'FROM_START') { - throw 'Unhandled option (lists_getSublist).'; - } - return at; - } - at1 = getAt(where1, at1); - at2 = getAt(where2, at2) + 1; - return list.sublist(at1, at2); -} -`); - code = functionName + '(' + list + ', \'' + where1 + '\', ' + at1 + ', \'' + - where2 + '\', ' + at2 + ')'; - } - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['lists_sort'] = function(block) { - // Block for sorting a list. - const list = Dart.valueToCode(block, 'LIST', Dart.ORDER_NONE) || '[]'; - const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; - const type = block.getFieldValue('TYPE'); - const sortFunctionName = Dart.provideFunction_('lists_sort', ` -List ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List list, String type, int direction) { - var compareFuncs = { - 'NUMERIC': (a, b) => (direction * a.compareTo(b)).toInt(), - 'TEXT': (a, b) => direction * a.toString().compareTo(b.toString()), - 'IGNORE_CASE': - (a, b) => direction * - a.toString().toLowerCase().compareTo(b.toString().toLowerCase()) - }; - list = new List.from(list); - var compare = compareFuncs[type]; - list.sort(compare); - return list; -} -`); - return [ - sortFunctionName + '(' + list + ', ' + - '"' + type + '", ' + direction + ')', - Dart.ORDER_UNARY_POSTFIX - ]; -}; - -Dart['lists_split'] = function(block) { - // Block for splitting text into a list, or joining a list into text. - let input = Dart.valueToCode(block, 'INPUT', Dart.ORDER_UNARY_POSTFIX); - const delimiter = Dart.valueToCode(block, 'DELIM', Dart.ORDER_NONE) || "''"; - const mode = block.getFieldValue('MODE'); - let functionName; - if (mode === 'SPLIT') { - if (!input) { - input = "''"; - } - functionName = 'split'; - } else if (mode === 'JOIN') { - if (!input) { - input = '[]'; - } - functionName = 'join'; - } else { - throw Error('Unknown mode: ' + mode); - } - const code = input + '.' + functionName + '(' + delimiter + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['lists_reverse'] = function(block) { - // Block for reversing a list. - const list = Dart.valueToCode(block, 'LIST', Dart.ORDER_NONE) || '[]'; - // XXX What should the operator precedence be for a `new`? - const code = 'new List.from(' + list + '.reversed)'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for list blocks. + */ +'use strict'; + +goog.module('Blockly.Dart.lists'); + +const Dart = goog.require('Blockly.Dart'); +const {NameType} = goog.require('Blockly.Names'); + + +Dart.addReservedWords('Math'); + +Dart['lists_create_empty'] = function(block) { + // Create an empty list. + return ['[]', Dart.ORDER_ATOMIC]; +}; + +Dart['lists_create_with'] = function(block) { + // Create a list with any number of elements of any type. + const elements = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { + elements[i] = Dart.valueToCode(block, 'ADD' + i, Dart.ORDER_NONE) || 'null'; + } + const code = '[' + elements.join(', ') + ']'; + return [code, Dart.ORDER_ATOMIC]; +}; + +Dart['lists_repeat'] = function(block) { + // Create a list with one element repeated. + const element = Dart.valueToCode(block, 'ITEM', Dart.ORDER_NONE) || 'null'; + const repeatCount = Dart.valueToCode(block, 'NUM', Dart.ORDER_NONE) || '0'; + const code = 'new List.filled(' + repeatCount + ', ' + element + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['lists_length'] = function(block) { + // String or array length. + const list = + Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || '[]'; + return [list + '.length', Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['lists_isEmpty'] = function(block) { + // Is the string null or array empty? + const list = + Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || '[]'; + return [list + '.isEmpty', Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['lists_indexOf'] = function(block) { + // Find an item in the list. + const operator = + block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf'; + const item = Dart.valueToCode(block, 'FIND', Dart.ORDER_NONE) || "''"; + const list = + Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || '[]'; + const code = list + '.' + operator + '(' + item + ')'; + if (block.workspace.options.oneBasedIndex) { + return [code + ' + 1', Dart.ORDER_ADDITIVE]; + } + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['lists_getIndex'] = function(block) { + // Get element at index. + // Note: Until January 2013 this block did not have MODE or WHERE inputs. + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const listOrder = (where === 'RANDOM' || where === 'FROM_END') ? + Dart.ORDER_NONE : + Dart.ORDER_UNARY_POSTFIX; + let list = Dart.valueToCode(block, 'VALUE', listOrder) || '[]'; + // Cache non-trivial values to variables to prevent repeated look-ups. + // Closure, which accesses and modifies 'list'. + function cacheList() { + const listVar = Dart.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); + const code = 'List ' + listVar + ' = ' + list + ';\n'; + list = listVar; + return code; + } + // If `list` would be evaluated more than once (which is the case for + // RANDOM REMOVE and FROM_END) and is non-trivial, make sure to access it + // only once. + if (((where === 'RANDOM' && mode === 'REMOVE') || where === 'FROM_END') && + !list.match(/^\w+$/)) { + // `list` is an expression, so we may not evaluate it more than once. + if (where === 'RANDOM') { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + // We can use multiple statements. + let code = cacheList(); + const xVar = Dart.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); + code += 'int ' + xVar + ' = new Math.Random().nextInt(' + list + + '.length);\n'; + code += list + '.removeAt(' + xVar + ');\n'; + return code; + } else { // where === 'FROM_END' + if (mode === 'REMOVE') { + // We can use multiple statements. + const at = Dart.getAdjusted(block, 'AT', 1, false, Dart.ORDER_ADDITIVE); + let code = cacheList(); + code += list + '.removeAt(' + list + '.length' + + ' - ' + at + ');\n'; + return code; + + } else if (mode === 'GET') { + const at = Dart.getAdjusted(block, 'AT', 1); + // We need to create a procedure to avoid reevaluating values. + const functionName = Dart.provideFunction_('lists_get_from_end', ` +dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List my_list, num x) { + x = my_list.length - x; + return my_list[x]; +} +`); + const code = functionName + '(' + list + ', ' + at + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'GET_REMOVE') { + const at = Dart.getAdjusted(block, 'AT', 1); + // We need to create a procedure to avoid reevaluating values. + const functionName = Dart.provideFunction_('lists_remove_from_end', ` +dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List my_list, num x) { + x = my_list.length - x; + return my_list.removeAt(x); +} +`); + const code = functionName + '(' + list + ', ' + at + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + } + } else { + // Either `list` is a simple variable, or we only need to refer to `list` + // once. + switch (where) { + case 'FIRST': + if (mode === 'GET') { + const code = list + '.first'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.removeAt(0)'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'REMOVE') { + return list + '.removeAt(0);\n'; + } + break; + case 'LAST': + if (mode === 'GET') { + const code = list + '.last'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.removeLast()'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'REMOVE') { + return list + '.removeLast();\n'; + } + break; + case 'FROM_START': { + const at = Dart.getAdjusted(block, 'AT'); + if (mode === 'GET') { + const code = list + '[' + at + ']'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.removeAt(' + at + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'REMOVE') { + return list + '.removeAt(' + at + ');\n'; + } + break; + } + case 'FROM_END': { + const at = Dart.getAdjusted(block, 'AT', 1, false, Dart.ORDER_ADDITIVE); + if (mode === 'GET') { + const code = list + '[' + list + '.length - ' + at + ']'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'GET_REMOVE' || mode === 'REMOVE') { + const code = list + '.removeAt(' + list + '.length - ' + at + ')'; + if (mode === 'GET_REMOVE') { + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'REMOVE') { + return code + ';\n'; + } + } + break; + } + case 'RANDOM': + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + if (mode === 'REMOVE') { + // We can use multiple statements. + const xVar = Dart.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); + let code = 'int ' + xVar + ' = new Math.Random().nextInt(' + list + + '.length);\n'; + code += list + '.removeAt(' + xVar + ');\n'; + return code; + } else if (mode === 'GET') { + const functionName = Dart.provideFunction_('lists_get_random_item', ` +dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List my_list) { + int x = new Math.Random().nextInt(my_list.length); + return my_list[x]; +} +`); + const code = functionName + '(' + list + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } else if (mode === 'GET_REMOVE') { + const functionName = + Dart.provideFunction_('lists_remove_random_item', ` +dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List my_list) { + int x = new Math.Random().nextInt(my_list.length); + return my_list.removeAt(x); +} +`); + const code = functionName + '(' + list + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + break; + } + } + throw Error('Unhandled combination (lists_getIndex).'); +}; + +Dart['lists_setIndex'] = function(block) { + // Set element at index. + // Note: Until February 2013 this block did not have MODE or WHERE inputs. + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + let list = Dart.valueToCode(block, 'LIST', Dart.ORDER_UNARY_POSTFIX) || '[]'; + const value = Dart.valueToCode(block, 'TO', Dart.ORDER_ASSIGNMENT) || 'null'; + // Cache non-trivial values to variables to prevent repeated look-ups. + // Closure, which accesses and modifies 'list'. + function cacheList() { + if (list.match(/^\w+$/)) { + return ''; + } + const listVar = Dart.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); + const code = 'List ' + listVar + ' = ' + list + ';\n'; + list = listVar; + return code; + } + switch (where) { + case 'FIRST': + if (mode === 'SET') { + return list + '[0] = ' + value + ';\n'; + } else if (mode === 'INSERT') { + return list + '.insert(0, ' + value + ');\n'; + } + break; + case 'LAST': + if (mode === 'SET') { + let code = cacheList(); + code += list + '[' + list + '.length - 1] = ' + value + ';\n'; + return code; + } else if (mode === 'INSERT') { + return list + '.add(' + value + ');\n'; + } + break; + case 'FROM_START': { + const at = Dart.getAdjusted(block, 'AT'); + if (mode === 'SET') { + return list + '[' + at + '] = ' + value + ';\n'; + } else if (mode === 'INSERT') { + return list + '.insert(' + at + ', ' + value + ');\n'; + } + break; + } + case 'FROM_END': { + const at = Dart.getAdjusted(block, 'AT', 1, false, Dart.ORDER_ADDITIVE); + let code = cacheList(); + if (mode === 'SET') { + code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\n'; + return code; + } else if (mode === 'INSERT') { + code += list + '.insert(' + list + '.length - ' + at + ', ' + value + + ');\n'; + return code; + } + break; + } + case 'RANDOM': { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + let code = cacheList(); + const xVar = Dart.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); + code += 'int ' + xVar + ' = new Math.Random().nextInt(' + list + + '.length);\n'; + if (mode === 'SET') { + code += list + '[' + xVar + '] = ' + value + ';\n'; + return code; + } else if (mode === 'INSERT') { + code += list + '.insert(' + xVar + ', ' + value + ');\n'; + return code; + } + break; + } + } + throw Error('Unhandled combination (lists_setIndex).'); +}; + +Dart['lists_getSublist'] = function(block) { + // Get sublist. + const list = + Dart.valueToCode(block, 'LIST', Dart.ORDER_UNARY_POSTFIX) || '[]'; + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + let code; + if (list.match(/^\w+$/) || + (where1 !== 'FROM_END' && where2 === 'FROM_START')) { + // If the list is a is a variable or doesn't require a call for length, + // don't generate a helper function. + let at1; + switch (where1) { + case 'FROM_START': + at1 = Dart.getAdjusted(block, 'AT1'); + break; + case 'FROM_END': + at1 = Dart.getAdjusted(block, 'AT1', 1, false, Dart.ORDER_ADDITIVE); + at1 = list + '.length - ' + at1; + break; + case 'FIRST': + at1 = '0'; + break; + default: + throw Error('Unhandled option (lists_getSublist).'); + } + let at2; + switch (where2) { + case 'FROM_START': + at2 = Dart.getAdjusted(block, 'AT2', 1); + break; + case 'FROM_END': + at2 = Dart.getAdjusted(block, 'AT2', 0, false, Dart.ORDER_ADDITIVE); + at2 = list + '.length - ' + at2; + break; + case 'LAST': + // There is no second index if LAST option is chosen. + break; + default: + throw Error('Unhandled option (lists_getSublist).'); + } + if (where2 === 'LAST') { + code = list + '.sublist(' + at1 + ')'; + } else { + code = list + '.sublist(' + at1 + ', ' + at2 + ')'; + } + } else { + const at1 = Dart.getAdjusted(block, 'AT1'); + const at2 = Dart.getAdjusted(block, 'AT2'); + const functionName = Dart.provideFunction_('lists_get_sublist', ` +List ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List list, String where1, num at1, String where2, num at2) { + int getAt(String where, num at) { + if (where == 'FROM_END') { + at = list.length - 1 - at; + } else if (where == 'FIRST') { + at = 0; + } else if (where == 'LAST') { + at = list.length - 1; + } else if (where != 'FROM_START') { + throw 'Unhandled option (lists_getSublist).'; + } + return at; + } + at1 = getAt(where1, at1); + at2 = getAt(where2, at2) + 1; + return list.sublist(at1, at2); +} +`); + code = functionName + '(' + list + ', \'' + where1 + '\', ' + at1 + ', \'' + + where2 + '\', ' + at2 + ')'; + } + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['lists_sort'] = function(block) { + // Block for sorting a list. + const list = Dart.valueToCode(block, 'LIST', Dart.ORDER_NONE) || '[]'; + const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; + const type = block.getFieldValue('TYPE'); + const sortFunctionName = Dart.provideFunction_('lists_sort', ` +List ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List list, String type, int direction) { + var compareFuncs = { + 'NUMERIC': (a, b) => (direction * a.compareTo(b)).toInt(), + 'TEXT': (a, b) => direction * a.toString().compareTo(b.toString()), + 'IGNORE_CASE': + (a, b) => direction * + a.toString().toLowerCase().compareTo(b.toString().toLowerCase()) + }; + list = new List.from(list); + var compare = compareFuncs[type]; + list.sort(compare); + return list; +} +`); + return [ + sortFunctionName + '(' + list + ', ' + + '"' + type + '", ' + direction + ')', + Dart.ORDER_UNARY_POSTFIX + ]; +}; + +Dart['lists_split'] = function(block) { + // Block for splitting text into a list, or joining a list into text. + let input = Dart.valueToCode(block, 'INPUT', Dart.ORDER_UNARY_POSTFIX); + const delimiter = Dart.valueToCode(block, 'DELIM', Dart.ORDER_NONE) || "''"; + const mode = block.getFieldValue('MODE'); + let functionName; + if (mode === 'SPLIT') { + if (!input) { + input = "''"; + } + functionName = 'split'; + } else if (mode === 'JOIN') { + if (!input) { + input = '[]'; + } + functionName = 'join'; + } else { + throw Error('Unknown mode: ' + mode); + } + const code = input + '.' + functionName + '(' + delimiter + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['lists_reverse'] = function(block) { + // Block for reversing a list. + const list = Dart.valueToCode(block, 'LIST', Dart.ORDER_NONE) || '[]'; + // XXX What should the operator precedence be for a `new`? + const code = 'new List.from(' + list + '.reversed)'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; diff --git a/generators/dart/logic.js b/generators/dart/logic.js index 56cdaef6ce2..a51d3f82bff 100644 --- a/generators/dart/logic.js +++ b/generators/dart/logic.js @@ -1,123 +1,123 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for logic blocks. - */ -'use strict'; - -goog.module('Blockly.Dart.logic'); - -const Dart = goog.require('Blockly.Dart'); - - -Dart['controls_if'] = function(block) { - // If/elseif/else condition. - let n = 0; - let code = '', branchCode, conditionCode; - if (Dart.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - code += Dart.injectId(Dart.STATEMENT_PREFIX, block); - } - do { - conditionCode = - Dart.valueToCode(block, 'IF' + n, Dart.ORDER_NONE) || 'false'; - branchCode = Dart.statementToCode(block, 'DO' + n); - if (Dart.STATEMENT_SUFFIX) { - branchCode = - Dart.prefixLines( - Dart.injectId(Dart.STATEMENT_SUFFIX, block), Dart.INDENT) + - branchCode; - } - code += (n > 0 ? 'else ' : '') + 'if (' + conditionCode + ') {\n' + - branchCode + '}'; - n++; - } while (block.getInput('IF' + n)); - - if (block.getInput('ELSE') || Dart.STATEMENT_SUFFIX) { - branchCode = Dart.statementToCode(block, 'ELSE'); - if (Dart.STATEMENT_SUFFIX) { - branchCode = - Dart.prefixLines( - Dart.injectId(Dart.STATEMENT_SUFFIX, block), Dart.INDENT) + - branchCode; - } - code += ' else {\n' + branchCode + '}'; - } - return code + '\n'; -}; - -Dart['controls_ifelse'] = Dart['controls_if']; - -Dart['logic_compare'] = function(block) { - // Comparison operator. - const OPERATORS = - {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; - const operator = OPERATORS[block.getFieldValue('OP')]; - const order = (operator === '==' || operator === '!=') ? - Dart.ORDER_EQUALITY : - Dart.ORDER_RELATIONAL; - const argument0 = Dart.valueToCode(block, 'A', order) || '0'; - const argument1 = Dart.valueToCode(block, 'B', order) || '0'; - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -}; - -Dart['logic_operation'] = function(block) { - // Operations 'and', 'or'. - const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; - const order = - (operator === '&&') ? Dart.ORDER_LOGICAL_AND : Dart.ORDER_LOGICAL_OR; - let argument0 = Dart.valueToCode(block, 'A', order); - let argument1 = Dart.valueToCode(block, 'B', order); - if (!argument0 && !argument1) { - // If there are no arguments, then the return value is false. - argument0 = 'false'; - argument1 = 'false'; - } else { - // Single missing arguments have no effect on the return value. - const defaultArgument = (operator === '&&') ? 'true' : 'false'; - if (!argument0) { - argument0 = defaultArgument; - } - if (!argument1) { - argument1 = defaultArgument; - } - } - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -}; - -Dart['logic_negate'] = function(block) { - // Negation. - const order = Dart.ORDER_UNARY_PREFIX; - const argument0 = Dart.valueToCode(block, 'BOOL', order) || 'true'; - const code = '!' + argument0; - return [code, order]; -}; - -Dart['logic_boolean'] = function(block) { - // Boolean values true and false. - const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; - return [code, Dart.ORDER_ATOMIC]; -}; - -Dart['logic_null'] = function(block) { - // Null data type. - return ['null', Dart.ORDER_ATOMIC]; -}; - -Dart['logic_ternary'] = function(block) { - // Ternary operator. - const value_if = - Dart.valueToCode(block, 'IF', Dart.ORDER_CONDITIONAL) || 'false'; - const value_then = - Dart.valueToCode(block, 'THEN', Dart.ORDER_CONDITIONAL) || 'null'; - const value_else = - Dart.valueToCode(block, 'ELSE', Dart.ORDER_CONDITIONAL) || 'null'; - const code = value_if + ' ? ' + value_then + ' : ' + value_else; - return [code, Dart.ORDER_CONDITIONAL]; -}; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for logic blocks. + */ +'use strict'; + +goog.module('Blockly.Dart.logic'); + +const Dart = goog.require('Blockly.Dart'); + + +Dart['controls_if'] = function(block) { + // If/elseif/else condition. + let n = 0; + let code = '', branchCode, conditionCode; + if (Dart.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + code += Dart.injectId(Dart.STATEMENT_PREFIX, block); + } + do { + conditionCode = + Dart.valueToCode(block, 'IF' + n, Dart.ORDER_NONE) || 'false'; + branchCode = Dart.statementToCode(block, 'DO' + n); + if (Dart.STATEMENT_SUFFIX) { + branchCode = + Dart.prefixLines( + Dart.injectId(Dart.STATEMENT_SUFFIX, block), Dart.INDENT) + + branchCode; + } + code += (n > 0 ? 'else ' : '') + 'if (' + conditionCode + ') {\n' + + branchCode + '}'; + n++; + } while (block.getInput('IF' + n)); + + if (block.getInput('ELSE') || Dart.STATEMENT_SUFFIX) { + branchCode = Dart.statementToCode(block, 'ELSE'); + if (Dart.STATEMENT_SUFFIX) { + branchCode = + Dart.prefixLines( + Dart.injectId(Dart.STATEMENT_SUFFIX, block), Dart.INDENT) + + branchCode; + } + code += ' else {\n' + branchCode + '}'; + } + return code + '\n'; +}; + +Dart['controls_ifelse'] = Dart['controls_if']; + +Dart['logic_compare'] = function(block) { + // Comparison operator. + const OPERATORS = + {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; + const operator = OPERATORS[block.getFieldValue('OP')]; + const order = (operator === '==' || operator === '!=') ? + Dart.ORDER_EQUALITY : + Dart.ORDER_RELATIONAL; + const argument0 = Dart.valueToCode(block, 'A', order) || '0'; + const argument1 = Dart.valueToCode(block, 'B', order) || '0'; + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; +}; + +Dart['logic_operation'] = function(block) { + // Operations 'and', 'or'. + const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; + const order = + (operator === '&&') ? Dart.ORDER_LOGICAL_AND : Dart.ORDER_LOGICAL_OR; + let argument0 = Dart.valueToCode(block, 'A', order); + let argument1 = Dart.valueToCode(block, 'B', order); + if (!argument0 && !argument1) { + // If there are no arguments, then the return value is false. + argument0 = 'false'; + argument1 = 'false'; + } else { + // Single missing arguments have no effect on the return value. + const defaultArgument = (operator === '&&') ? 'true' : 'false'; + if (!argument0) { + argument0 = defaultArgument; + } + if (!argument1) { + argument1 = defaultArgument; + } + } + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; +}; + +Dart['logic_negate'] = function(block) { + // Negation. + const order = Dart.ORDER_UNARY_PREFIX; + const argument0 = Dart.valueToCode(block, 'BOOL', order) || 'true'; + const code = '!' + argument0; + return [code, order]; +}; + +Dart['logic_boolean'] = function(block) { + // Boolean values true and false. + const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; + return [code, Dart.ORDER_ATOMIC]; +}; + +Dart['logic_null'] = function(block) { + // Null data type. + return ['null', Dart.ORDER_ATOMIC]; +}; + +Dart['logic_ternary'] = function(block) { + // Ternary operator. + const value_if = + Dart.valueToCode(block, 'IF', Dart.ORDER_CONDITIONAL) || 'false'; + const value_then = + Dart.valueToCode(block, 'THEN', Dart.ORDER_CONDITIONAL) || 'null'; + const value_else = + Dart.valueToCode(block, 'ELSE', Dart.ORDER_CONDITIONAL) || 'null'; + const code = value_if + ' ? ' + value_then + ' : ' + value_else; + return [code, Dart.ORDER_CONDITIONAL]; +}; diff --git a/generators/dart/loops.js b/generators/dart/loops.js index 0360737b8f3..03145132bb8 100644 --- a/generators/dart/loops.js +++ b/generators/dart/loops.js @@ -1,161 +1,161 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for loop blocks. - */ -'use strict'; - -goog.module('Blockly.Dart.loops'); - -const Dart = goog.require('Blockly.Dart'); -const stringUtils = goog.require('Blockly.utils.string'); -const {NameType} = goog.require('Blockly.Names'); - - -Dart['controls_repeat_ext'] = function(block) { - let repeats; - // Repeat n times. - if (block.getField('TIMES')) { - // Internal number. - repeats = String(Number(block.getFieldValue('TIMES'))); - } else { - // External number. - repeats = Dart.valueToCode(block, 'TIMES', Dart.ORDER_ASSIGNMENT) || '0'; - } - let branch = Dart.statementToCode(block, 'DO'); - branch = Dart.addLoopTrap(branch, block); - let code = ''; - const loopVar = Dart.nameDB_.getDistinctName('count', NameType.VARIABLE); - let endVar = repeats; - if (!repeats.match(/^\w+$/) && !stringUtils.isNumber(repeats)) { - endVar = Dart.nameDB_.getDistinctName('repeat_end', NameType.VARIABLE); - code += 'var ' + endVar + ' = ' + repeats + ';\n'; - } - code += 'for (int ' + loopVar + ' = 0; ' + loopVar + ' < ' + endVar + '; ' + - loopVar + '++) {\n' + branch + '}\n'; - return code; -}; - -Dart['controls_repeat'] = Dart['controls_repeat_ext']; - -Dart['controls_whileUntil'] = function(block) { - // Do while/until loop. - const until = block.getFieldValue('MODE') === 'UNTIL'; - let argument0 = - Dart.valueToCode( - block, 'BOOL', until ? Dart.ORDER_UNARY_PREFIX : Dart.ORDER_NONE) || - 'false'; - let branch = Dart.statementToCode(block, 'DO'); - branch = Dart.addLoopTrap(branch, block); - if (until) { - argument0 = '!' + argument0; - } - return 'while (' + argument0 + ') {\n' + branch + '}\n'; -}; - -Dart['controls_for'] = function(block) { - // For loop. - const variable0 = - Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const argument0 = - Dart.valueToCode(block, 'FROM', Dart.ORDER_ASSIGNMENT) || '0'; - const argument1 = Dart.valueToCode(block, 'TO', Dart.ORDER_ASSIGNMENT) || '0'; - const increment = Dart.valueToCode(block, 'BY', Dart.ORDER_ASSIGNMENT) || '1'; - let branch = Dart.statementToCode(block, 'DO'); - branch = Dart.addLoopTrap(branch, block); - let code; - if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) && - stringUtils.isNumber(increment)) { - // All arguments are simple numbers. - const up = Number(argument0) <= Number(argument1); - code = 'for (' + variable0 + ' = ' + argument0 + '; ' + variable0 + - (up ? ' <= ' : ' >= ') + argument1 + '; ' + variable0; - const step = Math.abs(Number(increment)); - if (step === 1) { - code += up ? '++' : '--'; - } else { - code += (up ? ' += ' : ' -= ') + step; - } - code += ') {\n' + branch + '}\n'; - } else { - code = ''; - // Cache non-trivial values to variables to prevent repeated look-ups. - let startVar = argument0; - if (!argument0.match(/^\w+$/) && !stringUtils.isNumber(argument0)) { - startVar = - Dart.nameDB_.getDistinctName(variable0 + '_start', NameType.VARIABLE); - code += 'var ' + startVar + ' = ' + argument0 + ';\n'; - } - let endVar = argument1; - if (!argument1.match(/^\w+$/) && !stringUtils.isNumber(argument1)) { - endVar = - Dart.nameDB_.getDistinctName(variable0 + '_end', NameType.VARIABLE); - code += 'var ' + endVar + ' = ' + argument1 + ';\n'; - } - // Determine loop direction at start, in case one of the bounds - // changes during loop execution. - const incVar = - Dart.nameDB_.getDistinctName(variable0 + '_inc', NameType.VARIABLE); - code += 'num ' + incVar + ' = '; - if (stringUtils.isNumber(increment)) { - code += Math.abs(increment) + ';\n'; - } else { - code += '(' + increment + ').abs();\n'; - } - code += 'if (' + startVar + ' > ' + endVar + ') {\n'; - code += Dart.INDENT + incVar + ' = -' + incVar + ';\n'; - code += '}\n'; - code += 'for (' + variable0 + ' = ' + startVar + '; ' + incVar + - ' >= 0 ? ' + variable0 + ' <= ' + endVar + ' : ' + variable0 + - ' >= ' + endVar + '; ' + variable0 + ' += ' + incVar + ') {\n' + - branch + '}\n'; - } - return code; -}; - -Dart['controls_forEach'] = function(block) { - // For each loop. - const variable0 = - Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const argument0 = - Dart.valueToCode(block, 'LIST', Dart.ORDER_ASSIGNMENT) || '[]'; - let branch = Dart.statementToCode(block, 'DO'); - branch = Dart.addLoopTrap(branch, block); - const code = - 'for (var ' + variable0 + ' in ' + argument0 + ') {\n' + branch + '}\n'; - return code; -}; - -Dart['controls_flow_statements'] = function(block) { - // Flow statements: continue, break. - let xfix = ''; - if (Dart.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - xfix += Dart.injectId(Dart.STATEMENT_PREFIX, block); - } - if (Dart.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the break/continue is triggered. - xfix += Dart.injectId(Dart.STATEMENT_SUFFIX, block); - } - if (Dart.STATEMENT_PREFIX) { - const loop = block.getSurroundLoop(); - if (loop && !loop.suppressPrefixSuffix) { - // Inject loop's statement prefix here since the regular one at the end - // of the loop will not get executed if 'continue' is triggered. - // In the case of 'break', a prefix is needed due to the loop's suffix. - xfix += Dart.injectId(Dart.STATEMENT_PREFIX, loop); - } - } - switch (block.getFieldValue('FLOW')) { - case 'BREAK': - return xfix + 'break;\n'; - case 'CONTINUE': - return xfix + 'continue;\n'; - } - throw Error('Unknown flow statement.'); -}; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for loop blocks. + */ +'use strict'; + +goog.module('Blockly.Dart.loops'); + +const Dart = goog.require('Blockly.Dart'); +const stringUtils = goog.require('Blockly.utils.string'); +const {NameType} = goog.require('Blockly.Names'); + + +Dart['controls_repeat_ext'] = function(block) { + let repeats; + // Repeat n times. + if (block.getField('TIMES')) { + // Internal number. + repeats = String(Number(block.getFieldValue('TIMES'))); + } else { + // External number. + repeats = Dart.valueToCode(block, 'TIMES', Dart.ORDER_ASSIGNMENT) || '0'; + } + let branch = Dart.statementToCode(block, 'DO'); + branch = Dart.addLoopTrap(branch, block); + let code = ''; + const loopVar = Dart.nameDB_.getDistinctName('count', NameType.VARIABLE); + let endVar = repeats; + if (!repeats.match(/^\w+$/) && !stringUtils.isNumber(repeats)) { + endVar = Dart.nameDB_.getDistinctName('repeat_end', NameType.VARIABLE); + code += 'var ' + endVar + ' = ' + repeats + ';\n'; + } + code += 'for (int ' + loopVar + ' = 0; ' + loopVar + ' < ' + endVar + '; ' + + loopVar + '++) {\n' + branch + '}\n'; + return code; +}; + +Dart['controls_repeat'] = Dart['controls_repeat_ext']; + +Dart['controls_whileUntil'] = function(block) { + // Do while/until loop. + const until = block.getFieldValue('MODE') === 'UNTIL'; + let argument0 = + Dart.valueToCode( + block, 'BOOL', until ? Dart.ORDER_UNARY_PREFIX : Dart.ORDER_NONE) || + 'false'; + let branch = Dart.statementToCode(block, 'DO'); + branch = Dart.addLoopTrap(branch, block); + if (until) { + argument0 = '!' + argument0; + } + return 'while (' + argument0 + ') {\n' + branch + '}\n'; +}; + +Dart['controls_for'] = function(block) { + // For loop. + const variable0 = + Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const argument0 = + Dart.valueToCode(block, 'FROM', Dart.ORDER_ASSIGNMENT) || '0'; + const argument1 = Dart.valueToCode(block, 'TO', Dart.ORDER_ASSIGNMENT) || '0'; + const increment = Dart.valueToCode(block, 'BY', Dart.ORDER_ASSIGNMENT) || '1'; + let branch = Dart.statementToCode(block, 'DO'); + branch = Dart.addLoopTrap(branch, block); + let code; + if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) && + stringUtils.isNumber(increment)) { + // All arguments are simple numbers. + const up = Number(argument0) <= Number(argument1); + code = 'for (' + variable0 + ' = ' + argument0 + '; ' + variable0 + + (up ? ' <= ' : ' >= ') + argument1 + '; ' + variable0; + const step = Math.abs(Number(increment)); + if (step === 1) { + code += up ? '++' : '--'; + } else { + code += (up ? ' += ' : ' -= ') + step; + } + code += ') {\n' + branch + '}\n'; + } else { + code = ''; + // Cache non-trivial values to variables to prevent repeated look-ups. + let startVar = argument0; + if (!argument0.match(/^\w+$/) && !stringUtils.isNumber(argument0)) { + startVar = + Dart.nameDB_.getDistinctName(variable0 + '_start', NameType.VARIABLE); + code += 'var ' + startVar + ' = ' + argument0 + ';\n'; + } + let endVar = argument1; + if (!argument1.match(/^\w+$/) && !stringUtils.isNumber(argument1)) { + endVar = + Dart.nameDB_.getDistinctName(variable0 + '_end', NameType.VARIABLE); + code += 'var ' + endVar + ' = ' + argument1 + ';\n'; + } + // Determine loop direction at start, in case one of the bounds + // changes during loop execution. + const incVar = + Dart.nameDB_.getDistinctName(variable0 + '_inc', NameType.VARIABLE); + code += 'num ' + incVar + ' = '; + if (stringUtils.isNumber(increment)) { + code += Math.abs(increment) + ';\n'; + } else { + code += '(' + increment + ').abs();\n'; + } + code += 'if (' + startVar + ' > ' + endVar + ') {\n'; + code += Dart.INDENT + incVar + ' = -' + incVar + ';\n'; + code += '}\n'; + code += 'for (' + variable0 + ' = ' + startVar + '; ' + incVar + + ' >= 0 ? ' + variable0 + ' <= ' + endVar + ' : ' + variable0 + + ' >= ' + endVar + '; ' + variable0 + ' += ' + incVar + ') {\n' + + branch + '}\n'; + } + return code; +}; + +Dart['controls_forEach'] = function(block) { + // For each loop. + const variable0 = + Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const argument0 = + Dart.valueToCode(block, 'LIST', Dart.ORDER_ASSIGNMENT) || '[]'; + let branch = Dart.statementToCode(block, 'DO'); + branch = Dart.addLoopTrap(branch, block); + const code = + 'for (var ' + variable0 + ' in ' + argument0 + ') {\n' + branch + '}\n'; + return code; +}; + +Dart['controls_flow_statements'] = function(block) { + // Flow statements: continue, break. + let xfix = ''; + if (Dart.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + xfix += Dart.injectId(Dart.STATEMENT_PREFIX, block); + } + if (Dart.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the break/continue is triggered. + xfix += Dart.injectId(Dart.STATEMENT_SUFFIX, block); + } + if (Dart.STATEMENT_PREFIX) { + const loop = block.getSurroundLoop(); + if (loop && !loop.suppressPrefixSuffix) { + // Inject loop's statement prefix here since the regular one at the end + // of the loop will not get executed if 'continue' is triggered. + // In the case of 'break', a prefix is needed due to the loop's suffix. + xfix += Dart.injectId(Dart.STATEMENT_PREFIX, loop); + } + } + switch (block.getFieldValue('FLOW')) { + case 'BREAK': + return xfix + 'break;\n'; + case 'CONTINUE': + return xfix + 'continue;\n'; + } + throw Error('Unknown flow statement.'); +}; diff --git a/generators/dart/math.js b/generators/dart/math.js index 24c42c2ae4b..1925195812f 100644 --- a/generators/dart/math.js +++ b/generators/dart/math.js @@ -1,446 +1,446 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for math blocks. - */ -'use strict'; - -goog.module('Blockly.Dart.math'); - -const Dart = goog.require('Blockly.Dart'); -const {NameType} = goog.require('Blockly.Names'); - - -Dart.addReservedWords('Math'); - -Dart['math_number'] = function(block) { - // Numeric value. - let code = Number(block.getFieldValue('NUM')); - let order; - if (code === Infinity) { - code = 'double.infinity'; - order = Dart.ORDER_UNARY_POSTFIX; - } else if (code === -Infinity) { - code = '-double.infinity'; - order = Dart.ORDER_UNARY_PREFIX; - } else { - // -4.abs() returns -4 in Dart due to strange order of operation choices. - // -4 is actually an operator and a number. Reflect this in the order. - order = code < 0 ? Dart.ORDER_UNARY_PREFIX : Dart.ORDER_ATOMIC; - } - return [code, order]; -}; - -Dart['math_arithmetic'] = function(block) { - // Basic arithmetic operators, and power. - const OPERATORS = { - 'ADD': [' + ', Dart.ORDER_ADDITIVE], - 'MINUS': [' - ', Dart.ORDER_ADDITIVE], - 'MULTIPLY': [' * ', Dart.ORDER_MULTIPLICATIVE], - 'DIVIDE': [' / ', Dart.ORDER_MULTIPLICATIVE], - 'POWER': [null, Dart.ORDER_NONE], // Handle power separately. - }; - const tuple = OPERATORS[block.getFieldValue('OP')]; - const operator = tuple[0]; - const order = tuple[1]; - const argument0 = Dart.valueToCode(block, 'A', order) || '0'; - const argument1 = Dart.valueToCode(block, 'B', order) || '0'; - let code; - // Power in Dart requires a special case since it has no operator. - if (!operator) { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - code = 'Math.pow(' + argument0 + ', ' + argument1 + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - code = argument0 + operator + argument1; - return [code, order]; -}; - -Dart['math_single'] = function(block) { - // Math operators with single operand. - const operator = block.getFieldValue('OP'); - let code; - let arg; - if (operator === 'NEG') { - // Negation is a special case given its different operator precedence. - arg = Dart.valueToCode(block, 'NUM', Dart.ORDER_UNARY_PREFIX) || '0'; - if (arg[0] === '-') { - // --3 is not legal in Dart. - arg = ' ' + arg; - } - code = '-' + arg; - return [code, Dart.ORDER_UNARY_PREFIX]; - } - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - if (operator === 'ABS' || operator.substring(0, 5) === 'ROUND') { - arg = Dart.valueToCode(block, 'NUM', Dart.ORDER_UNARY_POSTFIX) || '0'; - } else if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { - arg = Dart.valueToCode(block, 'NUM', Dart.ORDER_MULTIPLICATIVE) || '0'; - } else { - arg = Dart.valueToCode(block, 'NUM', Dart.ORDER_NONE) || '0'; - } - // First, handle cases which generate values that don't need parentheses - // wrapping the code. - switch (operator) { - case 'ABS': - code = arg + '.abs()'; - break; - case 'ROOT': - code = 'Math.sqrt(' + arg + ')'; - break; - case 'LN': - code = 'Math.log(' + arg + ')'; - break; - case 'EXP': - code = 'Math.exp(' + arg + ')'; - break; - case 'POW10': - code = 'Math.pow(10,' + arg + ')'; - break; - case 'ROUND': - code = arg + '.round()'; - break; - case 'ROUNDUP': - code = arg + '.ceil()'; - break; - case 'ROUNDDOWN': - code = arg + '.floor()'; - break; - case 'SIN': - code = 'Math.sin(' + arg + ' / 180 * Math.pi)'; - break; - case 'COS': - code = 'Math.cos(' + arg + ' / 180 * Math.pi)'; - break; - case 'TAN': - code = 'Math.tan(' + arg + ' / 180 * Math.pi)'; - break; - } - if (code) { - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - // Second, handle cases which generate values that may need parentheses - // wrapping the code. - switch (operator) { - case 'LOG10': - code = 'Math.log(' + arg + ') / Math.log(10)'; - break; - case 'ASIN': - code = 'Math.asin(' + arg + ') / Math.pi * 180'; - break; - case 'ACOS': - code = 'Math.acos(' + arg + ') / Math.pi * 180'; - break; - case 'ATAN': - code = 'Math.atan(' + arg + ') / Math.pi * 180'; - break; - default: - throw Error('Unknown math operator: ' + operator); - } - return [code, Dart.ORDER_MULTIPLICATIVE]; -}; - -Dart['math_constant'] = function(block) { - // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. - const CONSTANTS = { - 'PI': ['Math.pi', Dart.ORDER_UNARY_POSTFIX], - 'E': ['Math.e', Dart.ORDER_UNARY_POSTFIX], - 'GOLDEN_RATIO': ['(1 + Math.sqrt(5)) / 2', Dart.ORDER_MULTIPLICATIVE], - 'SQRT2': ['Math.sqrt2', Dart.ORDER_UNARY_POSTFIX], - 'SQRT1_2': ['Math.sqrt1_2', Dart.ORDER_UNARY_POSTFIX], - 'INFINITY': ['double.infinity', Dart.ORDER_ATOMIC], - }; - const constant = block.getFieldValue('CONSTANT'); - if (constant !== 'INFINITY') { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - } - return CONSTANTS[constant]; -}; - -Dart['math_number_property'] = function(block) { - // Check if a number is even, odd, prime, whole, positive, or negative - // or if it is divisible by certain number. Returns true or false. - const PROPERTIES = { - 'EVEN': [' % 2 == 0', Dart.ORDER_MULTIPLICATIVE, Dart.ORDER_EQUALITY], - 'ODD': [' % 2 == 1', Dart.ORDER_MULTIPLICATIVE, Dart.ORDER_EQUALITY], - 'WHOLE': [' % 1 == 0', Dart.ORDER_MULTIPLICATIVE, Dart.ORDER_EQUALITY], - 'POSITIVE': [' > 0', Dart.ORDER_RELATIONAL, Dart.ORDER_RELATIONAL], - 'NEGATIVE': [' < 0', Dart.ORDER_RELATIONAL, Dart.ORDER_RELATIONAL], - 'DIVISIBLE_BY': [null, Dart.ORDER_MULTIPLICATIVE, Dart.ORDER_EQUALITY], - 'PRIME': [null, Dart.ORDER_NONE, Dart.ORDER_UNARY_POSTFIX], - }; - const dropdownProperty = block.getFieldValue('PROPERTY'); - const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; - const numberToCheck = Dart.valueToCode(block, 'NUMBER_TO_CHECK', - inputOrder) || '0'; - let code; - if (dropdownProperty === 'PRIME') { - // Prime is a special case as it is not a one-liner test. - Dart.definitions_['import_dart_math'] = - 'import \'dart:math\' as Math;'; - const functionName = Dart.provideFunction_('math_isPrime', ` -bool ${Dart.FUNCTION_NAME_PLACEHOLDER_}(n) { - // https://en.wikipedia.org/wiki/Primality_test#Naive_methods - if (n == 2 || n == 3) { - return true; - } - // False if n is null, negative, is 1, or not whole. - // And false if n is divisible by 2 or 3. - if (n == null || n <= 1 || n % 1 != 0 || n % 2 == 0 || n % 3 == 0) { - return false; - } - // Check all the numbers of form 6k +/- 1, up to sqrt(n). - for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) { - if (n % (x - 1) == 0 || n % (x + 1) == 0) { - return false; - } - } - return true; -} -`); - code = functionName + '(' + numberToCheck + ')'; - } else if (dropdownProperty === 'DIVISIBLE_BY') { - const divisor = Dart.valueToCode(block, 'DIVISOR', - Dart.ORDER_MULTIPLICATIVE) || '0'; - if (divisor === '0') { - return ['false', Dart.ORDER_ATOMIC]; - } - code = numberToCheck + ' % ' + divisor + ' == 0'; - } else { - code = numberToCheck + suffix; - } - return [code, outputOrder]; -}; - -Dart['math_change'] = function(block) { - // Add to a variable in place. - const argument0 = - Dart.valueToCode(block, 'DELTA', Dart.ORDER_ADDITIVE) || '0'; - const varName = - Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return varName + ' = (' + varName + ' is num ? ' + varName + ' : 0) + ' + - argument0 + ';\n'; -}; - -// Rounding functions have a single operand. -Dart['math_round'] = Dart['math_single']; -// Trigonometry functions have a single operand. -Dart['math_trig'] = Dart['math_single']; - -Dart['math_on_list'] = function(block) { - // Math functions for lists. - const func = block.getFieldValue('OP'); - const list = Dart.valueToCode(block, 'LIST', Dart.ORDER_NONE) || '[]'; - let code; - switch (func) { - case 'SUM': { - const functionName = Dart.provideFunction_('math_sum', ` -num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { - num sumVal = 0; - myList.forEach((num entry) {sumVal += entry;}); - return sumVal; -} -`); - code = functionName + '(' + list + ')'; - break; - } - case 'MIN': { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - const functionName = Dart.provideFunction_('math_min', ` -num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { - if (myList.isEmpty) return null; - num minVal = myList[0]; - myList.forEach((num entry) {minVal = Math.min(minVal, entry);}); - return minVal; -} -`); - code = functionName + '(' + list + ')'; - break; - } - case 'MAX': { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - const functionName = Dart.provideFunction_('math_max', ` -num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { - if (myList.isEmpty) return null; - num maxVal = myList[0]; - myList.forEach((num entry) {maxVal = Math.max(maxVal, entry);}); - return maxVal; -} -`); - code = functionName + '(' + list + ')'; - break; - } - case 'AVERAGE': { - // This operation exclude null and values that are not int or float: - // math_mean([null,null,"aString",1,9]) -> 5.0 - const functionName = Dart.provideFunction_('math_mean', ` -num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { - // First filter list for numbers only. - List localList = new List.from(myList); - localList.removeWhere((a) => a is! num); - if (localList.isEmpty) return null; - num sumVal = 0; - localList.forEach((var entry) {sumVal += entry;}); - return sumVal / localList.length; -} -`); - code = functionName + '(' + list + ')'; - break; - } - case 'MEDIAN': { - const functionName = Dart.provideFunction_('math_median', ` -num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { - // First filter list for numbers only, then sort, then return middle value - // or the average of two middle values if list has an even number of elements. - List localList = new List.from(myList); - localList.removeWhere((a) => a is! num); - if (localList.isEmpty) return null; - localList.sort((a, b) => (a - b)); - int index = localList.length ~/ 2; - if (localList.length % 2 == 1) { - return localList[index]; - } else { - return (localList[index - 1] + localList[index]) / 2; - } -} -`); - code = functionName + '(' + list + ')'; - break; - } - case 'MODE': { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - // As a list of numbers can contain more than one mode, - // the returned result is provided as an array. - // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1] - const functionName = Dart.provideFunction_('math_modes', ` -List ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List values) { - List modes = []; - List counts = []; - int maxCount = 0; - for (int i = 0; i < values.length; i++) { - var value = values[i]; - bool found = false; - int thisCount; - for (int j = 0; j < counts.length; j++) { - if (counts[j][0] == value) { - thisCount = ++counts[j][1]; - found = true; - break; - } - } - if (!found) { - counts.add([value, 1]); - thisCount = 1; - } - maxCount = Math.max(thisCount, maxCount); - } - for (int j = 0; j < counts.length; j++) { - if (counts[j][1] == maxCount) { - modes.add(counts[j][0]); - } - } - return modes; -} -`); - code = functionName + '(' + list + ')'; - break; - } - case 'STD_DEV': { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - const functionName = Dart.provideFunction_('math_standard_deviation', ` -num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { - // First filter list for numbers only. - List numbers = new List.from(myList); - numbers.removeWhere((a) => a is! num); - if (numbers.isEmpty) return null; - num n = numbers.length; - num sum = 0; - numbers.forEach((x) => sum += x); - num mean = sum / n; - num sumSquare = 0; - numbers.forEach((x) => sumSquare += Math.pow(x - mean, 2)); - return Math.sqrt(sumSquare / n); -} -`); - code = functionName + '(' + list + ')'; - break; - } - case 'RANDOM': { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - const functionName = Dart.provideFunction_('math_random_item', ` -dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { - int x = new Math.Random().nextInt(myList.length); - return myList[x]; -} -`); - code = functionName + '(' + list + ')'; - break; - } - default: - throw Error('Unknown operator: ' + func); - } - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['math_modulo'] = function(block) { - // Remainder computation. - const argument0 = - Dart.valueToCode(block, 'DIVIDEND', Dart.ORDER_MULTIPLICATIVE) || '0'; - const argument1 = - Dart.valueToCode(block, 'DIVISOR', Dart.ORDER_MULTIPLICATIVE) || '0'; - const code = argument0 + ' % ' + argument1; - return [code, Dart.ORDER_MULTIPLICATIVE]; -}; - -Dart['math_constrain'] = function(block) { - // Constrain a number between two limits. - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - const argument0 = Dart.valueToCode(block, 'VALUE', Dart.ORDER_NONE) || '0'; - const argument1 = Dart.valueToCode(block, 'LOW', Dart.ORDER_NONE) || '0'; - const argument2 = - Dart.valueToCode(block, 'HIGH', Dart.ORDER_NONE) || 'double.infinity'; - const code = 'Math.min(Math.max(' + argument0 + ', ' + argument1 + '), ' + - argument2 + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['math_random_int'] = function(block) { - // Random integer between [X] and [Y]. - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - const argument0 = Dart.valueToCode(block, 'FROM', Dart.ORDER_NONE) || '0'; - const argument1 = Dart.valueToCode(block, 'TO', Dart.ORDER_NONE) || '0'; - const functionName = Dart.provideFunction_('math_random_int', ` -int ${Dart.FUNCTION_NAME_PLACEHOLDER_}(num a, num b) { - if (a > b) { - // Swap a and b to ensure a is smaller. - num c = a; - a = b; - b = c; - } - return new Math.Random().nextInt(b - a + 1) + a; -} -`); - const code = functionName + '(' + argument0 + ', ' + argument1 + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['math_random_float'] = function(block) { - // Random fraction between 0 and 1. - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - return ['new Math.Random().nextDouble()', Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['math_atan2'] = function(block) { - // Arctangent of point (X, Y) in degrees from -180 to 180. - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - const argument0 = Dart.valueToCode(block, 'X', Dart.ORDER_NONE) || '0'; - const argument1 = Dart.valueToCode(block, 'Y', Dart.ORDER_NONE) || '0'; - return [ - 'Math.atan2(' + argument1 + ', ' + argument0 + ') / Math.pi * 180', - Dart.ORDER_MULTIPLICATIVE - ]; -}; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for math blocks. + */ +'use strict'; + +goog.module('Blockly.Dart.math'); + +const Dart = goog.require('Blockly.Dart'); +const {NameType} = goog.require('Blockly.Names'); + + +Dart.addReservedWords('Math'); + +Dart['math_number'] = function(block) { + // Numeric value. + let code = Number(block.getFieldValue('NUM')); + let order; + if (code === Infinity) { + code = 'double.infinity'; + order = Dart.ORDER_UNARY_POSTFIX; + } else if (code === -Infinity) { + code = '-double.infinity'; + order = Dart.ORDER_UNARY_PREFIX; + } else { + // -4.abs() returns -4 in Dart due to strange order of operation choices. + // -4 is actually an operator and a number. Reflect this in the order. + order = code < 0 ? Dart.ORDER_UNARY_PREFIX : Dart.ORDER_ATOMIC; + } + return [code, order]; +}; + +Dart['math_arithmetic'] = function(block) { + // Basic arithmetic operators, and power. + const OPERATORS = { + 'ADD': [' + ', Dart.ORDER_ADDITIVE], + 'MINUS': [' - ', Dart.ORDER_ADDITIVE], + 'MULTIPLY': [' * ', Dart.ORDER_MULTIPLICATIVE], + 'DIVIDE': [' / ', Dart.ORDER_MULTIPLICATIVE], + 'POWER': [null, Dart.ORDER_NONE], // Handle power separately. + }; + const tuple = OPERATORS[block.getFieldValue('OP')]; + const operator = tuple[0]; + const order = tuple[1]; + const argument0 = Dart.valueToCode(block, 'A', order) || '0'; + const argument1 = Dart.valueToCode(block, 'B', order) || '0'; + let code; + // Power in Dart requires a special case since it has no operator. + if (!operator) { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + code = 'Math.pow(' + argument0 + ', ' + argument1 + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + code = argument0 + operator + argument1; + return [code, order]; +}; + +Dart['math_single'] = function(block) { + // Math operators with single operand. + const operator = block.getFieldValue('OP'); + let code; + let arg; + if (operator === 'NEG') { + // Negation is a special case given its different operator precedence. + arg = Dart.valueToCode(block, 'NUM', Dart.ORDER_UNARY_PREFIX) || '0'; + if (arg[0] === '-') { + // --3 is not legal in Dart. + arg = ' ' + arg; + } + code = '-' + arg; + return [code, Dart.ORDER_UNARY_PREFIX]; + } + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + if (operator === 'ABS' || operator.substring(0, 5) === 'ROUND') { + arg = Dart.valueToCode(block, 'NUM', Dart.ORDER_UNARY_POSTFIX) || '0'; + } else if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { + arg = Dart.valueToCode(block, 'NUM', Dart.ORDER_MULTIPLICATIVE) || '0'; + } else { + arg = Dart.valueToCode(block, 'NUM', Dart.ORDER_NONE) || '0'; + } + // First, handle cases which generate values that don't need parentheses + // wrapping the code. + switch (operator) { + case 'ABS': + code = arg + '.abs()'; + break; + case 'ROOT': + code = 'Math.sqrt(' + arg + ')'; + break; + case 'LN': + code = 'Math.log(' + arg + ')'; + break; + case 'EXP': + code = 'Math.exp(' + arg + ')'; + break; + case 'POW10': + code = 'Math.pow(10,' + arg + ')'; + break; + case 'ROUND': + code = arg + '.round()'; + break; + case 'ROUNDUP': + code = arg + '.ceil()'; + break; + case 'ROUNDDOWN': + code = arg + '.floor()'; + break; + case 'SIN': + code = 'Math.sin(' + arg + ' / 180 * Math.pi)'; + break; + case 'COS': + code = 'Math.cos(' + arg + ' / 180 * Math.pi)'; + break; + case 'TAN': + code = 'Math.tan(' + arg + ' / 180 * Math.pi)'; + break; + } + if (code) { + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + // Second, handle cases which generate values that may need parentheses + // wrapping the code. + switch (operator) { + case 'LOG10': + code = 'Math.log(' + arg + ') / Math.log(10)'; + break; + case 'ASIN': + code = 'Math.asin(' + arg + ') / Math.pi * 180'; + break; + case 'ACOS': + code = 'Math.acos(' + arg + ') / Math.pi * 180'; + break; + case 'ATAN': + code = 'Math.atan(' + arg + ') / Math.pi * 180'; + break; + default: + throw Error('Unknown math operator: ' + operator); + } + return [code, Dart.ORDER_MULTIPLICATIVE]; +}; + +Dart['math_constant'] = function(block) { + // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. + const CONSTANTS = { + 'PI': ['Math.pi', Dart.ORDER_UNARY_POSTFIX], + 'E': ['Math.e', Dart.ORDER_UNARY_POSTFIX], + 'GOLDEN_RATIO': ['(1 + Math.sqrt(5)) / 2', Dart.ORDER_MULTIPLICATIVE], + 'SQRT2': ['Math.sqrt2', Dart.ORDER_UNARY_POSTFIX], + 'SQRT1_2': ['Math.sqrt1_2', Dart.ORDER_UNARY_POSTFIX], + 'INFINITY': ['double.infinity', Dart.ORDER_ATOMIC], + }; + const constant = block.getFieldValue('CONSTANT'); + if (constant !== 'INFINITY') { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + } + return CONSTANTS[constant]; +}; + +Dart['math_number_property'] = function(block) { + // Check if a number is even, odd, prime, whole, positive, or negative + // or if it is divisible by certain number. Returns true or false. + const PROPERTIES = { + 'EVEN': [' % 2 == 0', Dart.ORDER_MULTIPLICATIVE, Dart.ORDER_EQUALITY], + 'ODD': [' % 2 == 1', Dart.ORDER_MULTIPLICATIVE, Dart.ORDER_EQUALITY], + 'WHOLE': [' % 1 == 0', Dart.ORDER_MULTIPLICATIVE, Dart.ORDER_EQUALITY], + 'POSITIVE': [' > 0', Dart.ORDER_RELATIONAL, Dart.ORDER_RELATIONAL], + 'NEGATIVE': [' < 0', Dart.ORDER_RELATIONAL, Dart.ORDER_RELATIONAL], + 'DIVISIBLE_BY': [null, Dart.ORDER_MULTIPLICATIVE, Dart.ORDER_EQUALITY], + 'PRIME': [null, Dart.ORDER_NONE, Dart.ORDER_UNARY_POSTFIX], + }; + const dropdownProperty = block.getFieldValue('PROPERTY'); + const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; + const numberToCheck = Dart.valueToCode(block, 'NUMBER_TO_CHECK', + inputOrder) || '0'; + let code; + if (dropdownProperty === 'PRIME') { + // Prime is a special case as it is not a one-liner test. + Dart.definitions_['import_dart_math'] = + 'import \'dart:math\' as Math;'; + const functionName = Dart.provideFunction_('math_isPrime', ` +bool ${Dart.FUNCTION_NAME_PLACEHOLDER_}(n) { + // https://en.wikipedia.org/wiki/Primality_test#Naive_methods + if (n == 2 || n == 3) { + return true; + } + // False if n is null, negative, is 1, or not whole. + // And false if n is divisible by 2 or 3. + if (n == null || n <= 1 || n % 1 != 0 || n % 2 == 0 || n % 3 == 0) { + return false; + } + // Check all the numbers of form 6k +/- 1, up to sqrt(n). + for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) { + if (n % (x - 1) == 0 || n % (x + 1) == 0) { + return false; + } + } + return true; +} +`); + code = functionName + '(' + numberToCheck + ')'; + } else if (dropdownProperty === 'DIVISIBLE_BY') { + const divisor = Dart.valueToCode(block, 'DIVISOR', + Dart.ORDER_MULTIPLICATIVE) || '0'; + if (divisor === '0') { + return ['false', Dart.ORDER_ATOMIC]; + } + code = numberToCheck + ' % ' + divisor + ' == 0'; + } else { + code = numberToCheck + suffix; + } + return [code, outputOrder]; +}; + +Dart['math_change'] = function(block) { + // Add to a variable in place. + const argument0 = + Dart.valueToCode(block, 'DELTA', Dart.ORDER_ADDITIVE) || '0'; + const varName = + Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return varName + ' = (' + varName + ' is num ? ' + varName + ' : 0) + ' + + argument0 + ';\n'; +}; + +// Rounding functions have a single operand. +Dart['math_round'] = Dart['math_single']; +// Trigonometry functions have a single operand. +Dart['math_trig'] = Dart['math_single']; + +Dart['math_on_list'] = function(block) { + // Math functions for lists. + const func = block.getFieldValue('OP'); + const list = Dart.valueToCode(block, 'LIST', Dart.ORDER_NONE) || '[]'; + let code; + switch (func) { + case 'SUM': { + const functionName = Dart.provideFunction_('math_sum', ` +num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { + num sumVal = 0; + myList.forEach((num entry) {sumVal += entry;}); + return sumVal; +} +`); + code = functionName + '(' + list + ')'; + break; + } + case 'MIN': { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + const functionName = Dart.provideFunction_('math_min', ` +num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { + if (myList.isEmpty) return null; + num minVal = myList[0]; + myList.forEach((num entry) {minVal = Math.min(minVal, entry);}); + return minVal; +} +`); + code = functionName + '(' + list + ')'; + break; + } + case 'MAX': { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + const functionName = Dart.provideFunction_('math_max', ` +num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { + if (myList.isEmpty) return null; + num maxVal = myList[0]; + myList.forEach((num entry) {maxVal = Math.max(maxVal, entry);}); + return maxVal; +} +`); + code = functionName + '(' + list + ')'; + break; + } + case 'AVERAGE': { + // This operation exclude null and values that are not int or float: + // math_mean([null,null,"aString",1,9]) -> 5.0 + const functionName = Dart.provideFunction_('math_mean', ` +num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { + // First filter list for numbers only. + List localList = new List.from(myList); + localList.removeWhere((a) => a is! num); + if (localList.isEmpty) return null; + num sumVal = 0; + localList.forEach((var entry) {sumVal += entry;}); + return sumVal / localList.length; +} +`); + code = functionName + '(' + list + ')'; + break; + } + case 'MEDIAN': { + const functionName = Dart.provideFunction_('math_median', ` +num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { + // First filter list for numbers only, then sort, then return middle value + // or the average of two middle values if list has an even number of elements. + List localList = new List.from(myList); + localList.removeWhere((a) => a is! num); + if (localList.isEmpty) return null; + localList.sort((a, b) => (a - b)); + int index = localList.length ~/ 2; + if (localList.length % 2 == 1) { + return localList[index]; + } else { + return (localList[index - 1] + localList[index]) / 2; + } +} +`); + code = functionName + '(' + list + ')'; + break; + } + case 'MODE': { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + // As a list of numbers can contain more than one mode, + // the returned result is provided as an array. + // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1] + const functionName = Dart.provideFunction_('math_modes', ` +List ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List values) { + List modes = []; + List counts = []; + int maxCount = 0; + for (int i = 0; i < values.length; i++) { + var value = values[i]; + bool found = false; + int thisCount; + for (int j = 0; j < counts.length; j++) { + if (counts[j][0] == value) { + thisCount = ++counts[j][1]; + found = true; + break; + } + } + if (!found) { + counts.add([value, 1]); + thisCount = 1; + } + maxCount = Math.max(thisCount, maxCount); + } + for (int j = 0; j < counts.length; j++) { + if (counts[j][1] == maxCount) { + modes.add(counts[j][0]); + } + } + return modes; +} +`); + code = functionName + '(' + list + ')'; + break; + } + case 'STD_DEV': { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + const functionName = Dart.provideFunction_('math_standard_deviation', ` +num ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { + // First filter list for numbers only. + List numbers = new List.from(myList); + numbers.removeWhere((a) => a is! num); + if (numbers.isEmpty) return null; + num n = numbers.length; + num sum = 0; + numbers.forEach((x) => sum += x); + num mean = sum / n; + num sumSquare = 0; + numbers.forEach((x) => sumSquare += Math.pow(x - mean, 2)); + return Math.sqrt(sumSquare / n); +} +`); + code = functionName + '(' + list + ')'; + break; + } + case 'RANDOM': { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + const functionName = Dart.provideFunction_('math_random_item', ` +dynamic ${Dart.FUNCTION_NAME_PLACEHOLDER_}(List myList) { + int x = new Math.Random().nextInt(myList.length); + return myList[x]; +} +`); + code = functionName + '(' + list + ')'; + break; + } + default: + throw Error('Unknown operator: ' + func); + } + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['math_modulo'] = function(block) { + // Remainder computation. + const argument0 = + Dart.valueToCode(block, 'DIVIDEND', Dart.ORDER_MULTIPLICATIVE) || '0'; + const argument1 = + Dart.valueToCode(block, 'DIVISOR', Dart.ORDER_MULTIPLICATIVE) || '0'; + const code = argument0 + ' % ' + argument1; + return [code, Dart.ORDER_MULTIPLICATIVE]; +}; + +Dart['math_constrain'] = function(block) { + // Constrain a number between two limits. + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + const argument0 = Dart.valueToCode(block, 'VALUE', Dart.ORDER_NONE) || '0'; + const argument1 = Dart.valueToCode(block, 'LOW', Dart.ORDER_NONE) || '0'; + const argument2 = + Dart.valueToCode(block, 'HIGH', Dart.ORDER_NONE) || 'double.infinity'; + const code = 'Math.min(Math.max(' + argument0 + ', ' + argument1 + '), ' + + argument2 + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['math_random_int'] = function(block) { + // Random integer between [X] and [Y]. + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + const argument0 = Dart.valueToCode(block, 'FROM', Dart.ORDER_NONE) || '0'; + const argument1 = Dart.valueToCode(block, 'TO', Dart.ORDER_NONE) || '0'; + const functionName = Dart.provideFunction_('math_random_int', ` +int ${Dart.FUNCTION_NAME_PLACEHOLDER_}(num a, num b) { + if (a > b) { + // Swap a and b to ensure a is smaller. + num c = a; + a = b; + b = c; + } + return new Math.Random().nextInt(b - a + 1) + a; +} +`); + const code = functionName + '(' + argument0 + ', ' + argument1 + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['math_random_float'] = function(block) { + // Random fraction between 0 and 1. + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + return ['new Math.Random().nextDouble()', Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['math_atan2'] = function(block) { + // Arctangent of point (X, Y) in degrees from -180 to 180. + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + const argument0 = Dart.valueToCode(block, 'X', Dart.ORDER_NONE) || '0'; + const argument1 = Dart.valueToCode(block, 'Y', Dart.ORDER_NONE) || '0'; + return [ + 'Math.atan2(' + argument1 + ', ' + argument0 + ') / Math.pi * 180', + Dart.ORDER_MULTIPLICATIVE + ]; +}; diff --git a/generators/dart/procedures.js b/generators/dart/procedures.js index 1427c0c4e5a..7b1c62e792f 100644 --- a/generators/dart/procedures.js +++ b/generators/dart/procedures.js @@ -1,105 +1,105 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for procedure blocks. - */ -'use strict'; - -goog.module('Blockly.Dart.procedures'); - -const Dart = goog.require('Blockly.Dart'); -const {NameType} = goog.require('Blockly.Names'); - - -Dart['procedures_defreturn'] = function(block) { - // Define a procedure with a return value. - const funcName = - Dart.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); - let xfix1 = ''; - if (Dart.STATEMENT_PREFIX) { - xfix1 += Dart.injectId(Dart.STATEMENT_PREFIX, block); - } - if (Dart.STATEMENT_SUFFIX) { - xfix1 += Dart.injectId(Dart.STATEMENT_SUFFIX, block); - } - if (xfix1) { - xfix1 = Dart.prefixLines(xfix1, Dart.INDENT); - } - let loopTrap = ''; - if (Dart.INFINITE_LOOP_TRAP) { - loopTrap = Dart.prefixLines( - Dart.injectId(Dart.INFINITE_LOOP_TRAP, block), Dart.INDENT); - } - const branch = Dart.statementToCode(block, 'STACK'); - let returnValue = Dart.valueToCode(block, 'RETURN', Dart.ORDER_NONE) || ''; - let xfix2 = ''; - if (branch && returnValue) { - // After executing the function body, revisit this block for the return. - xfix2 = xfix1; - } - if (returnValue) { - returnValue = Dart.INDENT + 'return ' + returnValue + ';\n'; - } - const returnType = returnValue ? 'dynamic' : 'void'; - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = Dart.nameDB_.getName(variables[i], NameType.VARIABLE); - } - let code = returnType + ' ' + funcName + '(' + args.join(', ') + ') {\n' + - xfix1 + loopTrap + branch + xfix2 + returnValue + '}'; - code = Dart.scrub_(block, code); - // Add % so as not to collide with helper functions in definitions list. - Dart.definitions_['%' + funcName] = code; - return null; -}; - -// Defining a procedure without a return value uses the same generator as -// a procedure with a return value. -Dart['procedures_defnoreturn'] = Dart['procedures_defreturn']; - -Dart['procedures_callreturn'] = function(block) { - // Call a procedure with a return value. - const funcName = - Dart.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = Dart.valueToCode(block, 'ARG' + i, Dart.ORDER_NONE) || 'null'; - } - let code = funcName + '(' + args.join(', ') + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['procedures_callnoreturn'] = function(block) { - // Call a procedure with no return value. - // Generated code is for a function call as a statement is the same as a - // function call as a value, with the addition of line ending. - const tuple = Dart['procedures_callreturn'](block); - return tuple[0] + ';\n'; -}; - -Dart['procedures_ifreturn'] = function(block) { - // Conditionally return value from a procedure. - const condition = - Dart.valueToCode(block, 'CONDITION', Dart.ORDER_NONE) || 'false'; - let code = 'if (' + condition + ') {\n'; - if (Dart.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the return is triggered. - code += Dart.prefixLines( - Dart.injectId(Dart.STATEMENT_SUFFIX, block), Dart.INDENT); - } - if (block.hasReturnValue_) { - const value = Dart.valueToCode(block, 'VALUE', Dart.ORDER_NONE) || 'null'; - code += Dart.INDENT + 'return ' + value + ';\n'; - } else { - code += Dart.INDENT + 'return;\n'; - } - code += '}\n'; - return code; -}; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for procedure blocks. + */ +'use strict'; + +goog.module('Blockly.Dart.procedures'); + +const Dart = goog.require('Blockly.Dart'); +const {NameType} = goog.require('Blockly.Names'); + + +Dart['procedures_defreturn'] = function(block) { + // Define a procedure with a return value. + const funcName = + Dart.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); + let xfix1 = ''; + if (Dart.STATEMENT_PREFIX) { + xfix1 += Dart.injectId(Dart.STATEMENT_PREFIX, block); + } + if (Dart.STATEMENT_SUFFIX) { + xfix1 += Dart.injectId(Dart.STATEMENT_SUFFIX, block); + } + if (xfix1) { + xfix1 = Dart.prefixLines(xfix1, Dart.INDENT); + } + let loopTrap = ''; + if (Dart.INFINITE_LOOP_TRAP) { + loopTrap = Dart.prefixLines( + Dart.injectId(Dart.INFINITE_LOOP_TRAP, block), Dart.INDENT); + } + const branch = Dart.statementToCode(block, 'STACK'); + let returnValue = Dart.valueToCode(block, 'RETURN', Dart.ORDER_NONE) || ''; + let xfix2 = ''; + if (branch && returnValue) { + // After executing the function body, revisit this block for the return. + xfix2 = xfix1; + } + if (returnValue) { + returnValue = Dart.INDENT + 'return ' + returnValue + ';\n'; + } + const returnType = returnValue ? 'dynamic' : 'void'; + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i] = Dart.nameDB_.getName(variables[i], NameType.VARIABLE); + } + let code = returnType + ' ' + funcName + '(' + args.join(', ') + ') {\n' + + xfix1 + loopTrap + branch + xfix2 + returnValue + '}'; + code = Dart.scrub_(block, code); + // Add % so as not to collide with helper functions in definitions list. + Dart.definitions_['%' + funcName] = code; + return null; +}; + +// Defining a procedure without a return value uses the same generator as +// a procedure with a return value. +Dart['procedures_defnoreturn'] = Dart['procedures_defreturn']; + +Dart['procedures_callreturn'] = function(block) { + // Call a procedure with a return value. + const funcName = + Dart.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i] = Dart.valueToCode(block, 'ARG' + i, Dart.ORDER_NONE) || 'null'; + } + let code = funcName + '(' + args.join(', ') + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['procedures_callnoreturn'] = function(block) { + // Call a procedure with no return value. + // Generated code is for a function call as a statement is the same as a + // function call as a value, with the addition of line ending. + const tuple = Dart['procedures_callreturn'](block); + return tuple[0] + ';\n'; +}; + +Dart['procedures_ifreturn'] = function(block) { + // Conditionally return value from a procedure. + const condition = + Dart.valueToCode(block, 'CONDITION', Dart.ORDER_NONE) || 'false'; + let code = 'if (' + condition + ') {\n'; + if (Dart.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the return is triggered. + code += Dart.prefixLines( + Dart.injectId(Dart.STATEMENT_SUFFIX, block), Dart.INDENT); + } + if (block.hasReturnValue_) { + const value = Dart.valueToCode(block, 'VALUE', Dart.ORDER_NONE) || 'null'; + code += Dart.INDENT + 'return ' + value + ';\n'; + } else { + code += Dart.INDENT + 'return;\n'; + } + code += '}\n'; + return code; +}; diff --git a/generators/dart/text.js b/generators/dart/text.js index 5dfb372b058..c4fa0504ff1 100644 --- a/generators/dart/text.js +++ b/generators/dart/text.js @@ -1,338 +1,338 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for text blocks. - */ -'use strict'; - -goog.module('Blockly.Dart.texts'); - -const Dart = goog.require('Blockly.Dart'); -const {NameType} = goog.require('Blockly.Names'); - - -Dart.addReservedWords('Html,Math'); - -Dart['text'] = function(block) { - // Text value. - const code = Dart.quote_(block.getFieldValue('TEXT')); - return [code, Dart.ORDER_ATOMIC]; -}; - -Dart['text_multiline'] = function(block) { - // Text value. - const code = Dart.multiline_quote_(block.getFieldValue('TEXT')); - const order = - code.indexOf('+') !== -1 ? Dart.ORDER_ADDITIVE : Dart.ORDER_ATOMIC; - return [code, order]; -}; - -Dart['text_join'] = function(block) { - // Create a string made up of any number of elements of any type. - switch (block.itemCount_) { - case 0: - return ["''", Dart.ORDER_ATOMIC]; - case 1: { - const element = - Dart.valueToCode(block, 'ADD0', Dart.ORDER_UNARY_POSTFIX) || "''"; - const code = element + '.toString()'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - default: { - const elements = new Array(block.itemCount_); - for (let i = 0; i < block.itemCount_; i++) { - elements[i] = - Dart.valueToCode(block, 'ADD' + i, Dart.ORDER_NONE) || "''"; - } - const code = '[' + elements.join(',') + '].join()'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - } -}; - -Dart['text_append'] = function(block) { - // Append to a variable in place. - const varName = - Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const value = Dart.valueToCode(block, 'TEXT', Dart.ORDER_NONE) || "''"; - return varName + ' = [' + varName + ', ' + value + '].join();\n'; -}; - -Dart['text_length'] = function(block) { - // String or array length. - const text = - Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || "''"; - return [text + '.length', Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['text_isEmpty'] = function(block) { - // Is the string null or array empty? - const text = - Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || "''"; - return [text + '.isEmpty', Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['text_indexOf'] = function(block) { - // Search the text for a substring. - const operator = - block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf'; - const substring = Dart.valueToCode(block, 'FIND', Dart.ORDER_NONE) || "''"; - const text = - Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || "''"; - const code = text + '.' + operator + '(' + substring + ')'; - if (block.workspace.options.oneBasedIndex) { - return [code + ' + 1', Dart.ORDER_ADDITIVE]; - } - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['text_charAt'] = function(block) { - // Get letter at index. - // Note: Until January 2013 this block did not have the WHERE input. - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const textOrder = (where === 'FIRST' || where === 'FROM_START') ? - Dart.ORDER_UNARY_POSTFIX : - Dart.ORDER_NONE; - const text = Dart.valueToCode(block, 'VALUE', textOrder) || "''"; - let at; - switch (where) { - case 'FIRST': { - const code = text + '[0]'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - case 'FROM_START': { - at = Dart.getAdjusted(block, 'AT'); - const code = text + '[' + at + ']'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - case 'LAST': - at = 1; - // Fall through. - case 'FROM_END': { - at = Dart.getAdjusted(block, 'AT', 1); - const functionName = Dart.provideFunction_('text_get_from_end', ` -String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String text, num x) { - return text[text.length - x]; -} -`); - const code = functionName + '(' + text + ', ' + at + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - case 'RANDOM': { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - const functionName = Dart.provideFunction_('text_random_letter', ` -String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String text) { - int x = new Math.Random().nextInt(text.length); - return text[x]; -} -`); - const code = functionName + '(' + text + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; - } - } - throw Error('Unhandled option (text_charAt).'); -}; - -Dart['text_getSubstring'] = function(block) { - // Get substring. - const where1 = block.getFieldValue('WHERE1'); - const where2 = block.getFieldValue('WHERE2'); - const requiresLengthCall = (where1 !== 'FROM_END' && where2 === 'FROM_START'); - const textOrder = - requiresLengthCall ? Dart.ORDER_UNARY_POSTFIX : Dart.ORDER_NONE; - const text = Dart.valueToCode(block, 'STRING', textOrder) || "''"; - let code; - if (where1 === 'FIRST' && where2 === 'LAST') { - code = text; - return [code, Dart.ORDER_NONE]; - } else if (text.match(/^'?\w+'?$/) || requiresLengthCall) { - // If the text is a variable or literal or doesn't require a call for - // length, don't generate a helper function. - let at1; - switch (where1) { - case 'FROM_START': - at1 = Dart.getAdjusted(block, 'AT1'); - break; - case 'FROM_END': - at1 = Dart.getAdjusted(block, 'AT1', 1, false, Dart.ORDER_ADDITIVE); - at1 = text + '.length - ' + at1; - break; - case 'FIRST': - at1 = '0'; - break; - default: - throw Error('Unhandled option (text_getSubstring).'); - } - let at2; - switch (where2) { - case 'FROM_START': - at2 = Dart.getAdjusted(block, 'AT2', 1); - break; - case 'FROM_END': - at2 = Dart.getAdjusted(block, 'AT2', 0, false, Dart.ORDER_ADDITIVE); - at2 = text + '.length - ' + at2; - break; - case 'LAST': - break; - default: - throw Error('Unhandled option (text_getSubstring).'); - } - - if (where2 === 'LAST') { - code = text + '.substring(' + at1 + ')'; - } else { - code = text + '.substring(' + at1 + ', ' + at2 + ')'; - } - } else { - const at1 = Dart.getAdjusted(block, 'AT1'); - const at2 = Dart.getAdjusted(block, 'AT2'); - const functionName = Dart.provideFunction_('text_get_substring', ` -String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String text, String where1, num at1, String where2, num at2) { - int getAt(String where, num at) { - if (where == 'FROM_END') { - at = text.length - 1 - at; - } else if (where == 'FIRST') { - at = 0; - } else if (where == 'LAST') { - at = text.length - 1; - } else if (where != 'FROM_START') { - throw 'Unhandled option (text_getSubstring).'; - } - return at; - } - at1 = getAt(where1, at1); - at2 = getAt(where2, at2) + 1; - return text.substring(at1, at2); -} -`); - code = functionName + '(' + text + ', \'' + where1 + '\', ' + at1 + ', \'' + - where2 + '\', ' + at2 + ')'; - } - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['text_changeCase'] = function(block) { - // Change capitalization. - const OPERATORS = { - 'UPPERCASE': '.toUpperCase()', - 'LOWERCASE': '.toLowerCase()', - 'TITLECASE': null - }; - const operator = OPERATORS[block.getFieldValue('CASE')]; - const textOrder = operator ? Dart.ORDER_UNARY_POSTFIX : Dart.ORDER_NONE; - const text = Dart.valueToCode(block, 'TEXT', textOrder) || "''"; - let code; - if (operator) { - // Upper and lower case are functions built into Dart. - code = text + operator; - } else { - // Title case is not a native Dart function. Define one. - const functionName = Dart.provideFunction_('text_toTitleCase', ` -String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String str) { - RegExp exp = new RegExp(r'\\b'); - List list = str.split(exp); - final title = new StringBuffer(); - for (String part in list) { - if (part.length > 0) { - title.write(part[0].toUpperCase()); - if (part.length > 0) { - title.write(part.substring(1).toLowerCase()); - } - } - } - return title.toString(); -} -`); - code = functionName + '(' + text + ')'; - } - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['text_trim'] = function(block) { - // Trim spaces. - const OPERATORS = { - 'LEFT': '.replaceFirst(new RegExp(r\'^\\s+\'), \'\')', - 'RIGHT': '.replaceFirst(new RegExp(r\'\\s+$\'), \'\')', - 'BOTH': '.trim()' - }; - const operator = OPERATORS[block.getFieldValue('MODE')]; - const text = - Dart.valueToCode(block, 'TEXT', Dart.ORDER_UNARY_POSTFIX) || "''"; - return [text + operator, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['text_print'] = function(block) { - // Print statement. - const msg = Dart.valueToCode(block, 'TEXT', Dart.ORDER_NONE) || "''"; - return 'print(' + msg + ');\n'; -}; - -Dart['text_prompt_ext'] = function(block) { - // Prompt function. - Dart.definitions_['import_dart_html'] = 'import \'dart:html\' as Html;'; - let msg; - if (block.getField('TEXT')) { - // Internal message. - msg = Dart.quote_(block.getFieldValue('TEXT')); - } else { - // External message. - msg = Dart.valueToCode(block, 'TEXT', Dart.ORDER_NONE) || "''"; - } - let code = 'Html.window.prompt(' + msg + ', \'\')'; - const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; - if (toNumber) { - Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; - code = 'Math.parseDouble(' + code + ')'; - } - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['text_prompt'] = Dart['text_prompt_ext']; - -Dart['text_count'] = function(block) { - const text = Dart.valueToCode(block, 'TEXT', Dart.ORDER_NONE) || "''"; - const sub = Dart.valueToCode(block, 'SUB', Dart.ORDER_NONE) || "''"; - // Substring count is not a native Dart function. Define one. - const functionName = Dart.provideFunction_('text_count', ` -int ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String haystack, String needle) { - if (needle.length == 0) { - return haystack.length + 1; - } - int index = 0; - int count = 0; - while (index != -1) { - index = haystack.indexOf(needle, index); - if (index != -1) { - count++; - index += needle.length; - } - } - return count; -} -`); - const code = functionName + '(' + text + ', ' + sub + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['text_replace'] = function(block) { - const text = - Dart.valueToCode(block, 'TEXT', Dart.ORDER_UNARY_POSTFIX) || "''"; - const from = Dart.valueToCode(block, 'FROM', Dart.ORDER_NONE) || "''"; - const to = Dart.valueToCode(block, 'TO', Dart.ORDER_NONE) || "''"; - const code = text + '.replaceAll(' + from + ', ' + to + ')'; - return [code, Dart.ORDER_UNARY_POSTFIX]; -}; - -Dart['text_reverse'] = function(block) { - // There isn't a sensible way to do this in Dart. See: - // http://stackoverflow.com/a/21613700/3529104 - // Implementing something is possibly better than not implementing anything? - const text = - Dart.valueToCode(block, 'TEXT', Dart.ORDER_UNARY_POSTFIX) || "''"; - const code = 'new String.fromCharCodes(' + text + '.runes.toList().reversed)'; - return [code, Dart.ORDER_UNARY_PREFIX]; -}; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for text blocks. + */ +'use strict'; + +goog.module('Blockly.Dart.texts'); + +const Dart = goog.require('Blockly.Dart'); +const {NameType} = goog.require('Blockly.Names'); + + +Dart.addReservedWords('Html,Math'); + +Dart['text'] = function(block) { + // Text value. + const code = Dart.quote_(block.getFieldValue('TEXT')); + return [code, Dart.ORDER_ATOMIC]; +}; + +Dart['text_multiline'] = function(block) { + // Text value. + const code = Dart.multiline_quote_(block.getFieldValue('TEXT')); + const order = + code.indexOf('+') !== -1 ? Dart.ORDER_ADDITIVE : Dart.ORDER_ATOMIC; + return [code, order]; +}; + +Dart['text_join'] = function(block) { + // Create a string made up of any number of elements of any type. + switch (block.itemCount_) { + case 0: + return ["''", Dart.ORDER_ATOMIC]; + case 1: { + const element = + Dart.valueToCode(block, 'ADD0', Dart.ORDER_UNARY_POSTFIX) || "''"; + const code = element + '.toString()'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + default: { + const elements = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { + elements[i] = + Dart.valueToCode(block, 'ADD' + i, Dart.ORDER_NONE) || "''"; + } + const code = '[' + elements.join(',') + '].join()'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + } +}; + +Dart['text_append'] = function(block) { + // Append to a variable in place. + const varName = + Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const value = Dart.valueToCode(block, 'TEXT', Dart.ORDER_NONE) || "''"; + return varName + ' = [' + varName + ', ' + value + '].join();\n'; +}; + +Dart['text_length'] = function(block) { + // String or array length. + const text = + Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || "''"; + return [text + '.length', Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['text_isEmpty'] = function(block) { + // Is the string null or array empty? + const text = + Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || "''"; + return [text + '.isEmpty', Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['text_indexOf'] = function(block) { + // Search the text for a substring. + const operator = + block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf'; + const substring = Dart.valueToCode(block, 'FIND', Dart.ORDER_NONE) || "''"; + const text = + Dart.valueToCode(block, 'VALUE', Dart.ORDER_UNARY_POSTFIX) || "''"; + const code = text + '.' + operator + '(' + substring + ')'; + if (block.workspace.options.oneBasedIndex) { + return [code + ' + 1', Dart.ORDER_ADDITIVE]; + } + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['text_charAt'] = function(block) { + // Get letter at index. + // Note: Until January 2013 this block did not have the WHERE input. + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const textOrder = (where === 'FIRST' || where === 'FROM_START') ? + Dart.ORDER_UNARY_POSTFIX : + Dart.ORDER_NONE; + const text = Dart.valueToCode(block, 'VALUE', textOrder) || "''"; + let at; + switch (where) { + case 'FIRST': { + const code = text + '[0]'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + case 'FROM_START': { + at = Dart.getAdjusted(block, 'AT'); + const code = text + '[' + at + ']'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + case 'LAST': + at = 1; + // Fall through. + case 'FROM_END': { + at = Dart.getAdjusted(block, 'AT', 1); + const functionName = Dart.provideFunction_('text_get_from_end', ` +String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String text, num x) { + return text[text.length - x]; +} +`); + const code = functionName + '(' + text + ', ' + at + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + case 'RANDOM': { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + const functionName = Dart.provideFunction_('text_random_letter', ` +String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String text) { + int x = new Math.Random().nextInt(text.length); + return text[x]; +} +`); + const code = functionName + '(' + text + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; + } + } + throw Error('Unhandled option (text_charAt).'); +}; + +Dart['text_getSubstring'] = function(block) { + // Get substring. + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + const requiresLengthCall = (where1 !== 'FROM_END' && where2 === 'FROM_START'); + const textOrder = + requiresLengthCall ? Dart.ORDER_UNARY_POSTFIX : Dart.ORDER_NONE; + const text = Dart.valueToCode(block, 'STRING', textOrder) || "''"; + let code; + if (where1 === 'FIRST' && where2 === 'LAST') { + code = text; + return [code, Dart.ORDER_NONE]; + } else if (text.match(/^'?\w+'?$/) || requiresLengthCall) { + // If the text is a variable or literal or doesn't require a call for + // length, don't generate a helper function. + let at1; + switch (where1) { + case 'FROM_START': + at1 = Dart.getAdjusted(block, 'AT1'); + break; + case 'FROM_END': + at1 = Dart.getAdjusted(block, 'AT1', 1, false, Dart.ORDER_ADDITIVE); + at1 = text + '.length - ' + at1; + break; + case 'FIRST': + at1 = '0'; + break; + default: + throw Error('Unhandled option (text_getSubstring).'); + } + let at2; + switch (where2) { + case 'FROM_START': + at2 = Dart.getAdjusted(block, 'AT2', 1); + break; + case 'FROM_END': + at2 = Dart.getAdjusted(block, 'AT2', 0, false, Dart.ORDER_ADDITIVE); + at2 = text + '.length - ' + at2; + break; + case 'LAST': + break; + default: + throw Error('Unhandled option (text_getSubstring).'); + } + + if (where2 === 'LAST') { + code = text + '.substring(' + at1 + ')'; + } else { + code = text + '.substring(' + at1 + ', ' + at2 + ')'; + } + } else { + const at1 = Dart.getAdjusted(block, 'AT1'); + const at2 = Dart.getAdjusted(block, 'AT2'); + const functionName = Dart.provideFunction_('text_get_substring', ` +String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String text, String where1, num at1, String where2, num at2) { + int getAt(String where, num at) { + if (where == 'FROM_END') { + at = text.length - 1 - at; + } else if (where == 'FIRST') { + at = 0; + } else if (where == 'LAST') { + at = text.length - 1; + } else if (where != 'FROM_START') { + throw 'Unhandled option (text_getSubstring).'; + } + return at; + } + at1 = getAt(where1, at1); + at2 = getAt(where2, at2) + 1; + return text.substring(at1, at2); +} +`); + code = functionName + '(' + text + ', \'' + where1 + '\', ' + at1 + ', \'' + + where2 + '\', ' + at2 + ')'; + } + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['text_changeCase'] = function(block) { + // Change capitalization. + const OPERATORS = { + 'UPPERCASE': '.toUpperCase()', + 'LOWERCASE': '.toLowerCase()', + 'TITLECASE': null + }; + const operator = OPERATORS[block.getFieldValue('CASE')]; + const textOrder = operator ? Dart.ORDER_UNARY_POSTFIX : Dart.ORDER_NONE; + const text = Dart.valueToCode(block, 'TEXT', textOrder) || "''"; + let code; + if (operator) { + // Upper and lower case are functions built into Dart. + code = text + operator; + } else { + // Title case is not a native Dart function. Define one. + const functionName = Dart.provideFunction_('text_toTitleCase', ` +String ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String str) { + RegExp exp = new RegExp(r'\\b'); + List list = str.split(exp); + final title = new StringBuffer(); + for (String part in list) { + if (part.length > 0) { + title.write(part[0].toUpperCase()); + if (part.length > 0) { + title.write(part.substring(1).toLowerCase()); + } + } + } + return title.toString(); +} +`); + code = functionName + '(' + text + ')'; + } + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['text_trim'] = function(block) { + // Trim spaces. + const OPERATORS = { + 'LEFT': '.replaceFirst(new RegExp(r\'^\\s+\'), \'\')', + 'RIGHT': '.replaceFirst(new RegExp(r\'\\s+$\'), \'\')', + 'BOTH': '.trim()' + }; + const operator = OPERATORS[block.getFieldValue('MODE')]; + const text = + Dart.valueToCode(block, 'TEXT', Dart.ORDER_UNARY_POSTFIX) || "''"; + return [text + operator, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['text_print'] = function(block) { + // Print statement. + const msg = Dart.valueToCode(block, 'TEXT', Dart.ORDER_NONE) || "''"; + return 'print(' + msg + ');\n'; +}; + +Dart['text_prompt_ext'] = function(block) { + // Prompt function. + Dart.definitions_['import_dart_html'] = 'import \'dart:html\' as Html;'; + let msg; + if (block.getField('TEXT')) { + // Internal message. + msg = Dart.quote_(block.getFieldValue('TEXT')); + } else { + // External message. + msg = Dart.valueToCode(block, 'TEXT', Dart.ORDER_NONE) || "''"; + } + let code = 'Html.window.prompt(' + msg + ', \'\')'; + const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; + if (toNumber) { + Dart.definitions_['import_dart_math'] = 'import \'dart:math\' as Math;'; + code = 'Math.parseDouble(' + code + ')'; + } + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['text_prompt'] = Dart['text_prompt_ext']; + +Dart['text_count'] = function(block) { + const text = Dart.valueToCode(block, 'TEXT', Dart.ORDER_NONE) || "''"; + const sub = Dart.valueToCode(block, 'SUB', Dart.ORDER_NONE) || "''"; + // Substring count is not a native Dart function. Define one. + const functionName = Dart.provideFunction_('text_count', ` +int ${Dart.FUNCTION_NAME_PLACEHOLDER_}(String haystack, String needle) { + if (needle.length == 0) { + return haystack.length + 1; + } + int index = 0; + int count = 0; + while (index != -1) { + index = haystack.indexOf(needle, index); + if (index != -1) { + count++; + index += needle.length; + } + } + return count; +} +`); + const code = functionName + '(' + text + ', ' + sub + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['text_replace'] = function(block) { + const text = + Dart.valueToCode(block, 'TEXT', Dart.ORDER_UNARY_POSTFIX) || "''"; + const from = Dart.valueToCode(block, 'FROM', Dart.ORDER_NONE) || "''"; + const to = Dart.valueToCode(block, 'TO', Dart.ORDER_NONE) || "''"; + const code = text + '.replaceAll(' + from + ', ' + to + ')'; + return [code, Dart.ORDER_UNARY_POSTFIX]; +}; + +Dart['text_reverse'] = function(block) { + // There isn't a sensible way to do this in Dart. See: + // http://stackoverflow.com/a/21613700/3529104 + // Implementing something is possibly better than not implementing anything? + const text = + Dart.valueToCode(block, 'TEXT', Dart.ORDER_UNARY_POSTFIX) || "''"; + const code = 'new String.fromCharCodes(' + text + '.runes.toList().reversed)'; + return [code, Dart.ORDER_UNARY_PREFIX]; +}; diff --git a/generators/dart/variables.js b/generators/dart/variables.js index 38ab39bb467..a36df4cfbdd 100644 --- a/generators/dart/variables.js +++ b/generators/dart/variables.js @@ -1,32 +1,32 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for variable blocks. - */ -'use strict'; - -goog.module('Blockly.Dart.variables'); - -const Dart = goog.require('Blockly.Dart'); -const {NameType} = goog.require('Blockly.Names'); - - -Dart['variables_get'] = function(block) { - // Variable getter. - const code = - Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return [code, Dart.ORDER_ATOMIC]; -}; - -Dart['variables_set'] = function(block) { - // Variable setter. - const argument0 = - Dart.valueToCode(block, 'VALUE', Dart.ORDER_ASSIGNMENT) || '0'; - const varName = - Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return varName + ' = ' + argument0 + ';\n'; -}; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for variable blocks. + */ +'use strict'; + +goog.module('Blockly.Dart.variables'); + +const Dart = goog.require('Blockly.Dart'); +const {NameType} = goog.require('Blockly.Names'); + + +Dart['variables_get'] = function(block) { + // Variable getter. + const code = + Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return [code, Dart.ORDER_ATOMIC]; +}; + +Dart['variables_set'] = function(block) { + // Variable setter. + const argument0 = + Dart.valueToCode(block, 'VALUE', Dart.ORDER_ASSIGNMENT) || '0'; + const varName = + Dart.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return varName + ' = ' + argument0 + ';\n'; +}; diff --git a/generators/dart/variables_dynamic.js b/generators/dart/variables_dynamic.js index 1eac6ed6719..5b292aac233 100644 --- a/generators/dart/variables_dynamic.js +++ b/generators/dart/variables_dynamic.js @@ -1,21 +1,21 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for dynamic variable blocks. - */ -'use strict'; - -goog.module('Blockly.Dart.variablesDynamic'); - -const Dart = goog.require('Blockly.Dart'); -/** @suppress {extraRequire} */ -goog.require('Blockly.Dart.variables'); - - -// Dart is dynamically typed. -Dart['variables_get_dynamic'] = Dart['variables_get']; -Dart['variables_set_dynamic'] = Dart['variables_set']; +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for dynamic variable blocks. + */ +'use strict'; + +goog.module('Blockly.Dart.variablesDynamic'); + +const Dart = goog.require('Blockly.Dart'); +/** @suppress {extraRequire} */ +goog.require('Blockly.Dart.variables'); + + +// Dart is dynamically typed. +Dart['variables_get_dynamic'] = Dart['variables_get']; +Dart['variables_set_dynamic'] = Dart['variables_set']; diff --git a/generators/javascript.js b/generators/javascript.js index 4b5bf9dbf52..a4c9616998e 100644 --- a/generators/javascript.js +++ b/generators/javascript.js @@ -1,324 +1,324 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Helper functions for generating JavaScript for blocks. - * @suppress {checkTypes|globalThis} - */ -'use strict'; - -goog.module('Blockly.JavaScript'); -goog.module.declareLegacyNamespace(); - -const Variables = goog.require('Blockly.Variables'); -const objectUtils = goog.require('Blockly.utils.object'); -const stringUtils = goog.require('Blockly.utils.string'); -const {Block} = goog.requireType('Blockly.Block'); -const {Generator} = goog.require('Blockly.Generator'); -const {globalThis} = goog.require('Blockly.utils.global'); -const {inputTypes} = goog.require('Blockly.inputTypes'); -const {Names, NameType} = goog.require('Blockly.Names'); -const {Workspace} = goog.requireType('Blockly.Workspace'); - - -/** - * JavaScript code generator. - * @type {!Generator} - */ -const JavaScript = new Generator('JavaScript'); - -/** - * List of illegal variable names. - * This is not intended to be a security feature. Blockly is 100% client-side, - * so bypassing this list is trivial. This is intended to prevent users from - * accidentally clobbering a built-in object or function. - */ -JavaScript.addReservedWords( - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords - 'break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,new,return,super,switch,this,throw,try,typeof,var,void,while,with,yield,' + - 'enum,' + - 'implements,interface,let,package,private,protected,public,static,' + - 'await,' + - 'null,true,false,' + - // Magic variable. - 'arguments,' + - // Everything in the current environment (835 items in Chrome, 104 in Node). - Object.getOwnPropertyNames(globalThis).join(',')); - -/** - * Order of operation ENUMs. - * https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence - */ -JavaScript.ORDER_ATOMIC = 0; // 0 "" ... -JavaScript.ORDER_NEW = 1.1; // new -JavaScript.ORDER_MEMBER = 1.2; // . [] -JavaScript.ORDER_FUNCTION_CALL = 2; // () -JavaScript.ORDER_INCREMENT = 3; // ++ -JavaScript.ORDER_DECREMENT = 3; // -- -JavaScript.ORDER_BITWISE_NOT = 4.1; // ~ -JavaScript.ORDER_UNARY_PLUS = 4.2; // + -JavaScript.ORDER_UNARY_NEGATION = 4.3; // - -JavaScript.ORDER_LOGICAL_NOT = 4.4; // ! -JavaScript.ORDER_TYPEOF = 4.5; // typeof -JavaScript.ORDER_VOID = 4.6; // void -JavaScript.ORDER_DELETE = 4.7; // delete -JavaScript.ORDER_AWAIT = 4.8; // await -JavaScript.ORDER_EXPONENTIATION = 5.0; // ** -JavaScript.ORDER_MULTIPLICATION = 5.1; // * -JavaScript.ORDER_DIVISION = 5.2; // / -JavaScript.ORDER_MODULUS = 5.3; // % -JavaScript.ORDER_SUBTRACTION = 6.1; // - -JavaScript.ORDER_ADDITION = 6.2; // + -JavaScript.ORDER_BITWISE_SHIFT = 7; // << >> >>> -JavaScript.ORDER_RELATIONAL = 8; // < <= > >= -JavaScript.ORDER_IN = 8; // in -JavaScript.ORDER_INSTANCEOF = 8; // instanceof -JavaScript.ORDER_EQUALITY = 9; // == != === !== -JavaScript.ORDER_BITWISE_AND = 10; // & -JavaScript.ORDER_BITWISE_XOR = 11; // ^ -JavaScript.ORDER_BITWISE_OR = 12; // | -JavaScript.ORDER_LOGICAL_AND = 13; // && -JavaScript.ORDER_LOGICAL_OR = 14; // || -JavaScript.ORDER_CONDITIONAL = 15; // ?: -JavaScript.ORDER_ASSIGNMENT = 16; // = += -= **= *= /= %= <<= >>= ... -JavaScript.ORDER_YIELD = 17; // yield -JavaScript.ORDER_COMMA = 18; // , -JavaScript.ORDER_NONE = 99; // (...) - -/** - * List of outer-inner pairings that do NOT require parentheses. - * @type {!Array>} - */ -JavaScript.ORDER_OVERRIDES = [ - // (foo()).bar -> foo().bar - // (foo())[0] -> foo()[0] - [JavaScript.ORDER_FUNCTION_CALL, JavaScript.ORDER_MEMBER], - // (foo())() -> foo()() - [JavaScript.ORDER_FUNCTION_CALL, JavaScript.ORDER_FUNCTION_CALL], - // (foo.bar).baz -> foo.bar.baz - // (foo.bar)[0] -> foo.bar[0] - // (foo[0]).bar -> foo[0].bar - // (foo[0])[1] -> foo[0][1] - [JavaScript.ORDER_MEMBER, JavaScript.ORDER_MEMBER], - // (foo.bar)() -> foo.bar() - // (foo[0])() -> foo[0]() - [JavaScript.ORDER_MEMBER, JavaScript.ORDER_FUNCTION_CALL], - - // !(!foo) -> !!foo - [JavaScript.ORDER_LOGICAL_NOT, JavaScript.ORDER_LOGICAL_NOT], - // a * (b * c) -> a * b * c - [JavaScript.ORDER_MULTIPLICATION, JavaScript.ORDER_MULTIPLICATION], - // a + (b + c) -> a + b + c - [JavaScript.ORDER_ADDITION, JavaScript.ORDER_ADDITION], - // a && (b && c) -> a && b && c - [JavaScript.ORDER_LOGICAL_AND, JavaScript.ORDER_LOGICAL_AND], - // a || (b || c) -> a || b || c - [JavaScript.ORDER_LOGICAL_OR, JavaScript.ORDER_LOGICAL_OR] -]; - -/** - * Whether the init method has been called. - * @type {?boolean} - */ -JavaScript.isInitialized = false; - -/** - * Initialise the database of variable names. - * @param {!Workspace} workspace Workspace to generate code from. - */ -JavaScript.init = function(workspace) { - // Call Blockly.Generator's init. - Object.getPrototypeOf(this).init.call(this); - - if (!this.nameDB_) { - this.nameDB_ = new Names(this.RESERVED_WORDS_); - } else { - this.nameDB_.reset(); - } - - this.nameDB_.setVariableMap(workspace.getVariableMap()); - this.nameDB_.populateVariables(workspace); - this.nameDB_.populateProcedures(workspace); - - const defvars = []; - // Add developer variables (not created or named by the user). - const devVarList = Variables.allDeveloperVariables(workspace); - for (let i = 0; i < devVarList.length; i++) { - defvars.push( - this.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE)); - } - - // Add user variables, but only ones that are being used. - const variables = Variables.allUsedVarModels(workspace); - for (let i = 0; i < variables.length; i++) { - defvars.push(this.nameDB_.getName(variables[i].getId(), NameType.VARIABLE)); - } - - // Declare all of the variables. - if (defvars.length) { - this.definitions_['variables'] = 'var ' + defvars.join(', ') + ';'; - } - this.isInitialized = true; -}; - -/** - * Prepend the generated code with the variable definitions. - * @param {string} code Generated code. - * @return {string} Completed code. - */ -JavaScript.finish = function(code) { - // Convert the definitions dictionary into a list. - const definitions = objectUtils.values(this.definitions_); - // Call Blockly.Generator's finish. - code = Object.getPrototypeOf(this).finish.call(this, code); - this.isInitialized = false; - - this.nameDB_.reset(); - return definitions.join('\n\n') + '\n\n\n' + code; -}; - -/** - * Naked values are top-level blocks with outputs that aren't plugged into - * anything. A trailing semicolon is needed to make this legal. - * @param {string} line Line of generated code. - * @return {string} Legal line of code. - */ -JavaScript.scrubNakedValue = function(line) { - return line + ';\n'; -}; - -/** - * Encode a string as a properly escaped JavaScript string, complete with - * quotes. - * @param {string} string Text to encode. - * @return {string} JavaScript string. - * @protected - */ -JavaScript.quote_ = function(string) { - // Can't use goog.string.quote since Google's style guide recommends - // JS string literals use single quotes. - string = string.replace(/\\/g, '\\\\') - .replace(/\n/g, '\\\n') - .replace(/'/g, '\\\''); - return '\'' + string + '\''; -}; - -/** - * Encode a string as a properly escaped multiline JavaScript string, complete - * with quotes. - * @param {string} string Text to encode. - * @return {string} JavaScript string. - * @protected - */ -JavaScript.multiline_quote_ = function(string) { - // Can't use goog.string.quote since Google's style guide recommends - // JS string literals use single quotes. - const lines = string.split(/\n/g).map(this.quote_); - return lines.join(' + \'\\n\' +\n'); -}; - -/** - * Common tasks for generating JavaScript from blocks. - * Handles comments for the specified block and any connected value blocks. - * Calls any statements following this block. - * @param {!Block} block The current block. - * @param {string} code The JavaScript code created for this block. - * @param {boolean=} opt_thisOnly True to generate code for only this statement. - * @return {string} JavaScript code with comments and subsequent blocks added. - * @protected - */ -JavaScript.scrub_ = function(block, code, opt_thisOnly) { - let commentCode = ''; - // Only collect comments for blocks that aren't inline. - if (!block.outputConnection || !block.outputConnection.targetConnection) { - // Collect comment for this block. - let comment = block.getCommentText(); - if (comment) { - comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); - commentCode += this.prefixLines(comment + '\n', '// '); - } - // Collect comments for all value arguments. - // Don't collect comments for nested statements. - for (let i = 0; i < block.inputList.length; i++) { - if (block.inputList[i].type === inputTypes.VALUE) { - const childBlock = block.inputList[i].connection.targetBlock(); - if (childBlock) { - comment = this.allNestedComments(childBlock); - if (comment) { - commentCode += this.prefixLines(comment, '// '); - } - } - } - } - } - const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); - return commentCode + code + nextCode; -}; - -/** - * Gets a property and adjusts the value while taking into account indexing. - * @param {!Block} block The block. - * @param {string} atId The property ID of the element to get. - * @param {number=} opt_delta Value to add. - * @param {boolean=} opt_negate Whether to negate the value. - * @param {number=} opt_order The highest order acting on this value. - * @return {string|number} - */ -JavaScript.getAdjusted = function( - block, atId, opt_delta, opt_negate, opt_order) { - let delta = opt_delta || 0; - let order = opt_order || this.ORDER_NONE; - if (block.workspace.options.oneBasedIndex) { - delta--; - } - const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; - - let innerOrder; - let outerOrder = order; - if (delta > 0) { - outerOrder = this.ORDER_ADDITION; - innerOrder = this.ORDER_ADDITION; - } else if (delta < 0) { - outerOrder = this.ORDER_SUBTRACTION; - innerOrder = this.ORDER_SUBTRACTION; - } else if (opt_negate) { - outerOrder = this.ORDER_UNARY_NEGATION; - innerOrder = this.ORDER_UNARY_NEGATION; - } - - let at = this.valueToCode(block, atId, outerOrder) || defaultAtIndex; - - if (stringUtils.isNumber(at)) { - // If the index is a naked number, adjust it right now. - at = Number(at) + delta; - if (opt_negate) { - at = -at; - } - } else { - // If the index is dynamic, adjust it in code. - if (delta > 0) { - at = at + ' + ' + delta; - } else if (delta < 0) { - at = at + ' - ' + -delta; - } - if (opt_negate) { - if (delta) { - at = '-(' + at + ')'; - } else { - at = '-' + at; - } - } - innerOrder = Math.floor(innerOrder); - order = Math.floor(order); - if (innerOrder && order >= innerOrder) { - at = '(' + at + ')'; - } - } - return at; -}; - -exports = JavaScript; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Helper functions for generating JavaScript for blocks. + * @suppress {checkTypes|globalThis} + */ +'use strict'; + +goog.module('Blockly.JavaScript'); +goog.module.declareLegacyNamespace(); + +const Variables = goog.require('Blockly.Variables'); +const objectUtils = goog.require('Blockly.utils.object'); +const stringUtils = goog.require('Blockly.utils.string'); +const {Block} = goog.requireType('Blockly.Block'); +const {Generator} = goog.require('Blockly.Generator'); +const {globalThis} = goog.require('Blockly.utils.global'); +const {inputTypes} = goog.require('Blockly.inputTypes'); +const {Names, NameType} = goog.require('Blockly.Names'); +const {Workspace} = goog.requireType('Blockly.Workspace'); + + +/** + * JavaScript code generator. + * @type {!Generator} + */ +const JavaScript = new Generator('JavaScript'); + +/** + * List of illegal variable names. + * This is not intended to be a security feature. Blockly is 100% client-side, + * so bypassing this list is trivial. This is intended to prevent users from + * accidentally clobbering a built-in object or function. + */ +JavaScript.addReservedWords( + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords + 'break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,new,return,super,switch,this,throw,try,typeof,var,void,while,with,yield,' + + 'enum,' + + 'implements,interface,let,package,private,protected,public,static,' + + 'await,' + + 'null,true,false,' + + // Magic variable. + 'arguments,' + + // Everything in the current environment (835 items in Chrome, 104 in Node). + Object.getOwnPropertyNames(globalThis).join(',')); + +/** + * Order of operation ENUMs. + * https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence + */ +JavaScript.ORDER_ATOMIC = 0; // 0 "" ... +JavaScript.ORDER_NEW = 1.1; // new +JavaScript.ORDER_MEMBER = 1.2; // . [] +JavaScript.ORDER_FUNCTION_CALL = 2; // () +JavaScript.ORDER_INCREMENT = 3; // ++ +JavaScript.ORDER_DECREMENT = 3; // -- +JavaScript.ORDER_BITWISE_NOT = 4.1; // ~ +JavaScript.ORDER_UNARY_PLUS = 4.2; // + +JavaScript.ORDER_UNARY_NEGATION = 4.3; // - +JavaScript.ORDER_LOGICAL_NOT = 4.4; // ! +JavaScript.ORDER_TYPEOF = 4.5; // typeof +JavaScript.ORDER_VOID = 4.6; // void +JavaScript.ORDER_DELETE = 4.7; // delete +JavaScript.ORDER_AWAIT = 4.8; // await +JavaScript.ORDER_EXPONENTIATION = 5.0; // ** +JavaScript.ORDER_MULTIPLICATION = 5.1; // * +JavaScript.ORDER_DIVISION = 5.2; // / +JavaScript.ORDER_MODULUS = 5.3; // % +JavaScript.ORDER_SUBTRACTION = 6.1; // - +JavaScript.ORDER_ADDITION = 6.2; // + +JavaScript.ORDER_BITWISE_SHIFT = 7; // << >> >>> +JavaScript.ORDER_RELATIONAL = 8; // < <= > >= +JavaScript.ORDER_IN = 8; // in +JavaScript.ORDER_INSTANCEOF = 8; // instanceof +JavaScript.ORDER_EQUALITY = 9; // == != === !== +JavaScript.ORDER_BITWISE_AND = 10; // & +JavaScript.ORDER_BITWISE_XOR = 11; // ^ +JavaScript.ORDER_BITWISE_OR = 12; // | +JavaScript.ORDER_LOGICAL_AND = 13; // && +JavaScript.ORDER_LOGICAL_OR = 14; // || +JavaScript.ORDER_CONDITIONAL = 15; // ?: +JavaScript.ORDER_ASSIGNMENT = 16; // = += -= **= *= /= %= <<= >>= ... +JavaScript.ORDER_YIELD = 17; // yield +JavaScript.ORDER_COMMA = 18; // , +JavaScript.ORDER_NONE = 99; // (...) + +/** + * List of outer-inner pairings that do NOT require parentheses. + * @type {!Array>} + */ +JavaScript.ORDER_OVERRIDES = [ + // (foo()).bar -> foo().bar + // (foo())[0] -> foo()[0] + [JavaScript.ORDER_FUNCTION_CALL, JavaScript.ORDER_MEMBER], + // (foo())() -> foo()() + [JavaScript.ORDER_FUNCTION_CALL, JavaScript.ORDER_FUNCTION_CALL], + // (foo.bar).baz -> foo.bar.baz + // (foo.bar)[0] -> foo.bar[0] + // (foo[0]).bar -> foo[0].bar + // (foo[0])[1] -> foo[0][1] + [JavaScript.ORDER_MEMBER, JavaScript.ORDER_MEMBER], + // (foo.bar)() -> foo.bar() + // (foo[0])() -> foo[0]() + [JavaScript.ORDER_MEMBER, JavaScript.ORDER_FUNCTION_CALL], + + // !(!foo) -> !!foo + [JavaScript.ORDER_LOGICAL_NOT, JavaScript.ORDER_LOGICAL_NOT], + // a * (b * c) -> a * b * c + [JavaScript.ORDER_MULTIPLICATION, JavaScript.ORDER_MULTIPLICATION], + // a + (b + c) -> a + b + c + [JavaScript.ORDER_ADDITION, JavaScript.ORDER_ADDITION], + // a && (b && c) -> a && b && c + [JavaScript.ORDER_LOGICAL_AND, JavaScript.ORDER_LOGICAL_AND], + // a || (b || c) -> a || b || c + [JavaScript.ORDER_LOGICAL_OR, JavaScript.ORDER_LOGICAL_OR] +]; + +/** + * Whether the init method has been called. + * @type {?boolean} + */ +JavaScript.isInitialized = false; + +/** + * Initialise the database of variable names. + * @param {!Workspace} workspace Workspace to generate code from. + */ +JavaScript.init = function(workspace) { + // Call Blockly.Generator's init. + Object.getPrototypeOf(this).init.call(this); + + if (!this.nameDB_) { + this.nameDB_ = new Names(this.RESERVED_WORDS_); + } else { + this.nameDB_.reset(); + } + + this.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.populateVariables(workspace); + this.nameDB_.populateProcedures(workspace); + + const defvars = []; + // Add developer variables (not created or named by the user). + const devVarList = Variables.allDeveloperVariables(workspace); + for (let i = 0; i < devVarList.length; i++) { + defvars.push( + this.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE)); + } + + // Add user variables, but only ones that are being used. + const variables = Variables.allUsedVarModels(workspace); + for (let i = 0; i < variables.length; i++) { + defvars.push(this.nameDB_.getName(variables[i].getId(), NameType.VARIABLE)); + } + + // Declare all of the variables. + if (defvars.length) { + this.definitions_['variables'] = 'var ' + defvars.join(', ') + ';'; + } + this.isInitialized = true; +}; + +/** + * Prepend the generated code with the variable definitions. + * @param {string} code Generated code. + * @return {string} Completed code. + */ +JavaScript.finish = function(code) { + // Convert the definitions dictionary into a list. + const definitions = objectUtils.values(this.definitions_); + // Call Blockly.Generator's finish. + code = Object.getPrototypeOf(this).finish.call(this, code); + this.isInitialized = false; + + this.nameDB_.reset(); + return definitions.join('\n\n') + '\n\n\n' + code; +}; + +/** + * Naked values are top-level blocks with outputs that aren't plugged into + * anything. A trailing semicolon is needed to make this legal. + * @param {string} line Line of generated code. + * @return {string} Legal line of code. + */ +JavaScript.scrubNakedValue = function(line) { + return line + ';\n'; +}; + +/** + * Encode a string as a properly escaped JavaScript string, complete with + * quotes. + * @param {string} string Text to encode. + * @return {string} JavaScript string. + * @protected + */ +JavaScript.quote_ = function(string) { + // Can't use goog.string.quote since Google's style guide recommends + // JS string literals use single quotes. + string = string.replace(/\\/g, '\\\\') + .replace(/\n/g, '\\\n') + .replace(/'/g, '\\\''); + return '\'' + string + '\''; +}; + +/** + * Encode a string as a properly escaped multiline JavaScript string, complete + * with quotes. + * @param {string} string Text to encode. + * @return {string} JavaScript string. + * @protected + */ +JavaScript.multiline_quote_ = function(string) { + // Can't use goog.string.quote since Google's style guide recommends + // JS string literals use single quotes. + const lines = string.split(/\n/g).map(this.quote_); + return lines.join(' + \'\\n\' +\n'); +}; + +/** + * Common tasks for generating JavaScript from blocks. + * Handles comments for the specified block and any connected value blocks. + * Calls any statements following this block. + * @param {!Block} block The current block. + * @param {string} code The JavaScript code created for this block. + * @param {boolean=} opt_thisOnly True to generate code for only this statement. + * @return {string} JavaScript code with comments and subsequent blocks added. + * @protected + */ +JavaScript.scrub_ = function(block, code, opt_thisOnly) { + let commentCode = ''; + // Only collect comments for blocks that aren't inline. + if (!block.outputConnection || !block.outputConnection.targetConnection) { + // Collect comment for this block. + let comment = block.getCommentText(); + if (comment) { + comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); + commentCode += this.prefixLines(comment + '\n', '// '); + } + // Collect comments for all value arguments. + // Don't collect comments for nested statements. + for (let i = 0; i < block.inputList.length; i++) { + if (block.inputList[i].type === inputTypes.VALUE) { + const childBlock = block.inputList[i].connection.targetBlock(); + if (childBlock) { + comment = this.allNestedComments(childBlock); + if (comment) { + commentCode += this.prefixLines(comment, '// '); + } + } + } + } + } + const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); + const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); + return commentCode + code + nextCode; +}; + +/** + * Gets a property and adjusts the value while taking into account indexing. + * @param {!Block} block The block. + * @param {string} atId The property ID of the element to get. + * @param {number=} opt_delta Value to add. + * @param {boolean=} opt_negate Whether to negate the value. + * @param {number=} opt_order The highest order acting on this value. + * @return {string|number} + */ +JavaScript.getAdjusted = function( + block, atId, opt_delta, opt_negate, opt_order) { + let delta = opt_delta || 0; + let order = opt_order || this.ORDER_NONE; + if (block.workspace.options.oneBasedIndex) { + delta--; + } + const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; + + let innerOrder; + let outerOrder = order; + if (delta > 0) { + outerOrder = this.ORDER_ADDITION; + innerOrder = this.ORDER_ADDITION; + } else if (delta < 0) { + outerOrder = this.ORDER_SUBTRACTION; + innerOrder = this.ORDER_SUBTRACTION; + } else if (opt_negate) { + outerOrder = this.ORDER_UNARY_NEGATION; + innerOrder = this.ORDER_UNARY_NEGATION; + } + + let at = this.valueToCode(block, atId, outerOrder) || defaultAtIndex; + + if (stringUtils.isNumber(at)) { + // If the index is a naked number, adjust it right now. + at = Number(at) + delta; + if (opt_negate) { + at = -at; + } + } else { + // If the index is dynamic, adjust it in code. + if (delta > 0) { + at = at + ' + ' + delta; + } else if (delta < 0) { + at = at + ' - ' + -delta; + } + if (opt_negate) { + if (delta) { + at = '-(' + at + ')'; + } else { + at = '-' + at; + } + } + innerOrder = Math.floor(innerOrder); + order = Math.floor(order); + if (innerOrder && order >= innerOrder) { + at = '(' + at + ')'; + } + } + return at; +}; + +exports = JavaScript; diff --git a/generators/javascript/all.js b/generators/javascript/all.js index 05eca00406d..7030cb37cb5 100644 --- a/generators/javascript/all.js +++ b/generators/javascript/all.js @@ -1,25 +1,25 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Complete helper functions for generating JavaScript for - * blocks. This is the entrypoint for javascript_compressed.js. - * @suppress {extraRequire} - */ -'use strict'; - -goog.module('Blockly.JavaScript.all'); - -goog.require('Blockly.JavaScript.colour'); -goog.require('Blockly.JavaScript.lists'); -goog.require('Blockly.JavaScript.logic'); -goog.require('Blockly.JavaScript.loops'); -goog.require('Blockly.JavaScript.math'); -goog.require('Blockly.JavaScript.procedures'); -goog.require('Blockly.JavaScript.texts'); -goog.require('Blockly.JavaScript.variables'); -goog.require('Blockly.JavaScript.variablesDynamic'); - +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Complete helper functions for generating JavaScript for + * blocks. This is the entrypoint for javascript_compressed.js. + * @suppress {extraRequire} + */ +'use strict'; + +goog.module('Blockly.JavaScript.all'); + +goog.require('Blockly.JavaScript.colour'); +goog.require('Blockly.JavaScript.lists'); +goog.require('Blockly.JavaScript.logic'); +goog.require('Blockly.JavaScript.loops'); +goog.require('Blockly.JavaScript.math'); +goog.require('Blockly.JavaScript.procedures'); +goog.require('Blockly.JavaScript.texts'); +goog.require('Blockly.JavaScript.variables'); +goog.require('Blockly.JavaScript.variablesDynamic'); + diff --git a/generators/javascript/colour.js b/generators/javascript/colour.js index a2cc64a5a0b..e1d34fc0df3 100644 --- a/generators/javascript/colour.js +++ b/generators/javascript/colour.js @@ -1,85 +1,85 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating JavaScript for colour blocks. - */ -'use strict'; - -goog.module('Blockly.JavaScript.colour'); - -const JavaScript = goog.require('Blockly.JavaScript'); - - -JavaScript['colour_picker'] = function(block) { - // Colour picker. - const code = JavaScript.quote_(block.getFieldValue('COLOUR')); - return [code, JavaScript.ORDER_ATOMIC]; -}; - -JavaScript['colour_random'] = function(block) { - // Generate a random colour. - const functionName = JavaScript.provideFunction_('colourRandom', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}() { - var num = Math.floor(Math.random() * Math.pow(2, 24)); - return '#' + ('00000' + num.toString(16)).substr(-6); -} -`); - const code = functionName + '()'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['colour_rgb'] = function(block) { - // Compose a colour from RGB components expressed as percentages. - const red = JavaScript.valueToCode(block, 'RED', JavaScript.ORDER_NONE) || 0; - const green = - JavaScript.valueToCode(block, 'GREEN', JavaScript.ORDER_NONE) || 0; - const blue = - JavaScript.valueToCode(block, 'BLUE', JavaScript.ORDER_NONE) || 0; - const functionName = JavaScript.provideFunction_('colourRgb', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(r, g, b) { - r = Math.max(Math.min(Number(r), 100), 0) * 2.55; - g = Math.max(Math.min(Number(g), 100), 0) * 2.55; - b = Math.max(Math.min(Number(b), 100), 0) * 2.55; - r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2); - g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2); - b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2); - return '#' + r + g + b; -} -`); - const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['colour_blend'] = function(block) { - // Blend two colours together. - const c1 = JavaScript.valueToCode(block, 'COLOUR1', JavaScript.ORDER_NONE) || - "'#000000'"; - const c2 = JavaScript.valueToCode(block, 'COLOUR2', JavaScript.ORDER_NONE) || - "'#000000'"; - const ratio = - JavaScript.valueToCode(block, 'RATIO', JavaScript.ORDER_NONE) || 0.5; - const functionName = JavaScript.provideFunction_('colourBlend', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(c1, c2, ratio) { - ratio = Math.max(Math.min(Number(ratio), 1), 0); - var r1 = parseInt(c1.substring(1, 3), 16); - var g1 = parseInt(c1.substring(3, 5), 16); - var b1 = parseInt(c1.substring(5, 7), 16); - var r2 = parseInt(c2.substring(1, 3), 16); - var g2 = parseInt(c2.substring(3, 5), 16); - var b2 = parseInt(c2.substring(5, 7), 16); - var r = Math.round(r1 * (1 - ratio) + r2 * ratio); - var g = Math.round(g1 * (1 - ratio) + g2 * ratio); - var b = Math.round(b1 * (1 - ratio) + b2 * ratio); - r = ('0' + (r || 0).toString(16)).slice(-2); - g = ('0' + (g || 0).toString(16)).slice(-2); - b = ('0' + (b || 0).toString(16)).slice(-2); - return '#' + r + g + b; -} -`); - const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating JavaScript for colour blocks. + */ +'use strict'; + +goog.module('Blockly.JavaScript.colour'); + +const JavaScript = goog.require('Blockly.JavaScript'); + + +JavaScript['colour_picker'] = function(block) { + // Colour picker. + const code = JavaScript.quote_(block.getFieldValue('COLOUR')); + return [code, JavaScript.ORDER_ATOMIC]; +}; + +JavaScript['colour_random'] = function(block) { + // Generate a random colour. + const functionName = JavaScript.provideFunction_('colourRandom', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}() { + var num = Math.floor(Math.random() * Math.pow(2, 24)); + return '#' + ('00000' + num.toString(16)).substr(-6); +} +`); + const code = functionName + '()'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['colour_rgb'] = function(block) { + // Compose a colour from RGB components expressed as percentages. + const red = JavaScript.valueToCode(block, 'RED', JavaScript.ORDER_NONE) || 0; + const green = + JavaScript.valueToCode(block, 'GREEN', JavaScript.ORDER_NONE) || 0; + const blue = + JavaScript.valueToCode(block, 'BLUE', JavaScript.ORDER_NONE) || 0; + const functionName = JavaScript.provideFunction_('colourRgb', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(r, g, b) { + r = Math.max(Math.min(Number(r), 100), 0) * 2.55; + g = Math.max(Math.min(Number(g), 100), 0) * 2.55; + b = Math.max(Math.min(Number(b), 100), 0) * 2.55; + r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2); + g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2); + b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2); + return '#' + r + g + b; +} +`); + const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['colour_blend'] = function(block) { + // Blend two colours together. + const c1 = JavaScript.valueToCode(block, 'COLOUR1', JavaScript.ORDER_NONE) || + "'#000000'"; + const c2 = JavaScript.valueToCode(block, 'COLOUR2', JavaScript.ORDER_NONE) || + "'#000000'"; + const ratio = + JavaScript.valueToCode(block, 'RATIO', JavaScript.ORDER_NONE) || 0.5; + const functionName = JavaScript.provideFunction_('colourBlend', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(c1, c2, ratio) { + ratio = Math.max(Math.min(Number(ratio), 1), 0); + var r1 = parseInt(c1.substring(1, 3), 16); + var g1 = parseInt(c1.substring(3, 5), 16); + var b1 = parseInt(c1.substring(5, 7), 16); + var r2 = parseInt(c2.substring(1, 3), 16); + var g2 = parseInt(c2.substring(3, 5), 16); + var b2 = parseInt(c2.substring(5, 7), 16); + var r = Math.round(r1 * (1 - ratio) + r2 * ratio); + var g = Math.round(g1 * (1 - ratio) + g2 * ratio); + var b = Math.round(b1 * (1 - ratio) + b2 * ratio); + r = ('0' + (r || 0).toString(16)).slice(-2); + g = ('0' + (g || 0).toString(16)).slice(-2); + b = ('0' + (b || 0).toString(16)).slice(-2); + return '#' + r + g + b; +} +`); + const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; diff --git a/generators/javascript/lists.js b/generators/javascript/lists.js index e9fbc359841..2218fce1731 100644 --- a/generators/javascript/lists.js +++ b/generators/javascript/lists.js @@ -1,405 +1,405 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating JavaScript for list blocks. - * @suppress {missingRequire} - */ -'use strict'; - -goog.module('Blockly.JavaScript.lists'); - -const JavaScript = goog.require('Blockly.JavaScript'); -const {NameType} = goog.require('Blockly.Names'); - - -JavaScript['lists_create_empty'] = function(block) { - // Create an empty list. - return ['[]', JavaScript.ORDER_ATOMIC]; -}; - -JavaScript['lists_create_with'] = function(block) { - // Create a list with any number of elements of any type. - const elements = new Array(block.itemCount_); - for (let i = 0; i < block.itemCount_; i++) { - elements[i] = - JavaScript.valueToCode(block, 'ADD' + i, JavaScript.ORDER_NONE) || - 'null'; - } - const code = '[' + elements.join(', ') + ']'; - return [code, JavaScript.ORDER_ATOMIC]; -}; - -JavaScript['lists_repeat'] = function(block) { - // Create a list with one element repeated. - const functionName = JavaScript.provideFunction_('listsRepeat', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(value, n) { - var array = []; - for (var i = 0; i < n; i++) { - array[i] = value; - } - return array; -} -`); - const element = - JavaScript.valueToCode(block, 'ITEM', JavaScript.ORDER_NONE) || 'null'; - const repeatCount = - JavaScript.valueToCode(block, 'NUM', JavaScript.ORDER_NONE) || '0'; - const code = functionName + '(' + element + ', ' + repeatCount + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['lists_length'] = function(block) { - // String or array length. - const list = - JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_MEMBER) || '[]'; - return [list + '.length', JavaScript.ORDER_MEMBER]; -}; - -JavaScript['lists_isEmpty'] = function(block) { - // Is the string null or array empty? - const list = - JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_MEMBER) || '[]'; - return ['!' + list + '.length', JavaScript.ORDER_LOGICAL_NOT]; -}; - -JavaScript['lists_indexOf'] = function(block) { - // Find an item in the list. - const operator = - block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf'; - const item = - JavaScript.valueToCode(block, 'FIND', JavaScript.ORDER_NONE) || "''"; - const list = - JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_MEMBER) || '[]'; - const code = list + '.' + operator + '(' + item + ')'; - if (block.workspace.options.oneBasedIndex) { - return [code + ' + 1', JavaScript.ORDER_ADDITION]; - } - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['lists_getIndex'] = function(block) { - // Get element at index. - // Note: Until January 2013 this block did not have MODE or WHERE inputs. - const mode = block.getFieldValue('MODE') || 'GET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const listOrder = - (where === 'RANDOM') ? JavaScript.ORDER_NONE : JavaScript.ORDER_MEMBER; - const list = JavaScript.valueToCode(block, 'VALUE', listOrder) || '[]'; - - switch (where) { - case ('FIRST'): - if (mode === 'GET') { - const code = list + '[0]'; - return [code, JavaScript.ORDER_MEMBER]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.shift()'; - return [code, JavaScript.ORDER_MEMBER]; - } else if (mode === 'REMOVE') { - return list + '.shift();\n'; - } - break; - case ('LAST'): - if (mode === 'GET') { - const code = list + '.slice(-1)[0]'; - return [code, JavaScript.ORDER_MEMBER]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.pop()'; - return [code, JavaScript.ORDER_MEMBER]; - } else if (mode === 'REMOVE') { - return list + '.pop();\n'; - } - break; - case ('FROM_START'): { - const at = JavaScript.getAdjusted(block, 'AT'); - if (mode === 'GET') { - const code = list + '[' + at + ']'; - return [code, JavaScript.ORDER_MEMBER]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.splice(' + at + ', 1)[0]'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - return list + '.splice(' + at + ', 1);\n'; - } - break; - } - case ('FROM_END'): { - const at = JavaScript.getAdjusted(block, 'AT', 1, true); - if (mode === 'GET') { - const code = list + '.slice(' + at + ')[0]'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.splice(' + at + ', 1)[0]'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - return list + '.splice(' + at + ', 1);'; - } - break; - } - case ('RANDOM'): { - const functionName = JavaScript.provideFunction_('listsGetRandomItem', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(list, remove) { - var x = Math.floor(Math.random() * list.length); - if (remove) { - return list.splice(x, 1)[0]; - } else { - return list[x]; - } -} -`); - const code = functionName + '(' + list + ', ' + (mode !== 'GET') + ')'; - if (mode === 'GET' || mode === 'GET_REMOVE') { - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - return code + ';\n'; - } - break; - } - } - throw Error('Unhandled combination (lists_getIndex).'); -}; - -JavaScript['lists_setIndex'] = function(block) { - // Set element at index. - // Note: Until February 2013 this block did not have MODE or WHERE inputs. - let list = - JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_MEMBER) || '[]'; - const mode = block.getFieldValue('MODE') || 'GET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const value = - JavaScript.valueToCode(block, 'TO', JavaScript.ORDER_ASSIGNMENT) || - 'null'; - // Cache non-trivial values to variables to prevent repeated look-ups. - // Closure, which accesses and modifies 'list'. - function cacheList() { - if (list.match(/^\w+$/)) { - return ''; - } - const listVar = - JavaScript.nameDB_.getDistinctName('tmpList', NameType.VARIABLE); - const code = 'var ' + listVar + ' = ' + list + ';\n'; - list = listVar; - return code; - } - switch (where) { - case ('FIRST'): - if (mode === 'SET') { - return list + '[0] = ' + value + ';\n'; - } else if (mode === 'INSERT') { - return list + '.unshift(' + value + ');\n'; - } - break; - case ('LAST'): - if (mode === 'SET') { - let code = cacheList(); - code += list + '[' + list + '.length - 1] = ' + value + ';\n'; - return code; - } else if (mode === 'INSERT') { - return list + '.push(' + value + ');\n'; - } - break; - case ('FROM_START'): { - const at = JavaScript.getAdjusted(block, 'AT'); - if (mode === 'SET') { - return list + '[' + at + '] = ' + value + ';\n'; - } else if (mode === 'INSERT') { - return list + '.splice(' + at + ', 0, ' + value + ');\n'; - } - break; - } - case ('FROM_END'): { - const at = JavaScript.getAdjusted( - block, 'AT', 1, false, JavaScript.ORDER_SUBTRACTION); - let code = cacheList(); - if (mode === 'SET') { - code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\n'; - return code; - } else if (mode === 'INSERT') { - code += list + '.splice(' + list + '.length - ' + at + ', 0, ' + value + - ');\n'; - return code; - } - break; - } - case ('RANDOM'): { - let code = cacheList(); - const xVar = - JavaScript.nameDB_.getDistinctName('tmpX', NameType.VARIABLE); - code += 'var ' + xVar + ' = Math.floor(Math.random() * ' + list + - '.length);\n'; - if (mode === 'SET') { - code += list + '[' + xVar + '] = ' + value + ';\n'; - return code; - } else if (mode === 'INSERT') { - code += list + '.splice(' + xVar + ', 0, ' + value + ');\n'; - return code; - } - break; - } - } - throw Error('Unhandled combination (lists_setIndex).'); -}; - -/** - * Returns an expression calculating the index into a list. - * @param {string} listName Name of the list, used to calculate length. - * @param {string} where The method of indexing, selected by dropdown in Blockly - * @param {string=} opt_at The optional offset when indexing from start/end. - * @return {string|undefined} Index expression. - */ -const getSubstringIndex = function(listName, where, opt_at) { - if (where === 'FIRST') { - return '0'; - } else if (where === 'FROM_END') { - return listName + '.length - 1 - ' + opt_at; - } else if (where === 'LAST') { - return listName + '.length - 1'; - } else { - return opt_at; - } -}; - -JavaScript['lists_getSublist'] = function(block) { - // Get sublist. - const list = - JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_MEMBER) || '[]'; - const where1 = block.getFieldValue('WHERE1'); - const where2 = block.getFieldValue('WHERE2'); - let code; - if (where1 === 'FIRST' && where2 === 'LAST') { - code = list + '.slice(0)'; - } else if ( - list.match(/^\w+$/) || - (where1 !== 'FROM_END' && where2 === 'FROM_START')) { - // If the list is a variable or doesn't require a call for length, don't - // generate a helper function. - let at1; - switch (where1) { - case 'FROM_START': - at1 = JavaScript.getAdjusted(block, 'AT1'); - break; - case 'FROM_END': - at1 = JavaScript.getAdjusted( - block, 'AT1', 1, false, JavaScript.ORDER_SUBTRACTION); - at1 = list + '.length - ' + at1; - break; - case 'FIRST': - at1 = '0'; - break; - default: - throw Error('Unhandled option (lists_getSublist).'); - } - let at2; - switch (where2) { - case 'FROM_START': - at2 = JavaScript.getAdjusted(block, 'AT2', 1); - break; - case 'FROM_END': - at2 = JavaScript.getAdjusted( - block, 'AT2', 0, false, JavaScript.ORDER_SUBTRACTION); - at2 = list + '.length - ' + at2; - break; - case 'LAST': - at2 = list + '.length'; - break; - default: - throw Error('Unhandled option (lists_getSublist).'); - } - code = list + '.slice(' + at1 + ', ' + at2 + ')'; - } else { - const at1 = JavaScript.getAdjusted(block, 'AT1'); - const at2 = JavaScript.getAdjusted(block, 'AT2'); - const wherePascalCase = { - 'FIRST': 'First', - 'LAST': 'Last', - 'FROM_START': 'FromStart', - 'FROM_END': 'FromEnd', - }; - // The value for 'FROM_END' and'FROM_START' depends on `at` so - // we add it as a parameter. - const at1Param = - (where1 === 'FROM_END' || where1 === 'FROM_START') ? ', at1' : ''; - const at2Param = - (where2 === 'FROM_END' || where2 === 'FROM_START') ? ', at2' : ''; - const functionName = JavaScript.provideFunction_( - 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(sequence${at1Param}${at2Param}) { - var start = ${getSubstringIndex('sequence', where1, 'at1')}; - var end = ${getSubstringIndex('sequence', where2, 'at2')} + 1; - return sequence.slice(start, end); -} -`); - code = functionName + '(' + list + - // The value for 'FROM_END' and 'FROM_START' depends on `at` so we - // pass it. - ((where1 === 'FROM_END' || where1 === 'FROM_START') ? ', ' + at1 : '') + - ((where2 === 'FROM_END' || where2 === 'FROM_START') ? ', ' + at2 : '') + - ')'; - } - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['lists_sort'] = function(block) { - // Block for sorting a list. - const list = - JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_FUNCTION_CALL) || - '[]'; - const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; - const type = block.getFieldValue('TYPE'); - const getCompareFunctionName = - JavaScript.provideFunction_('listsGetSortCompare', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(type, direction) { - var compareFuncs = { - 'NUMERIC': function(a, b) { - return Number(a) - Number(b); }, - 'TEXT': function(a, b) { - return a.toString() > b.toString() ? 1 : -1; }, - 'IGNORE_CASE': function(a, b) { - return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; }, - }; - var compare = compareFuncs[type]; - return function(a, b) { return compare(a, b) * direction; }; -} - `); - return [ - list + '.slice().sort(' + getCompareFunctionName + '("' + type + '", ' + - direction + '))', - JavaScript.ORDER_FUNCTION_CALL - ]; -}; - -JavaScript['lists_split'] = function(block) { - // Block for splitting text into a list, or joining a list into text. - let input = JavaScript.valueToCode(block, 'INPUT', JavaScript.ORDER_MEMBER); - const delimiter = - JavaScript.valueToCode(block, 'DELIM', JavaScript.ORDER_NONE) || "''"; - const mode = block.getFieldValue('MODE'); - let functionName; - if (mode === 'SPLIT') { - if (!input) { - input = "''"; - } - functionName = 'split'; - } else if (mode === 'JOIN') { - if (!input) { - input = '[]'; - } - functionName = 'join'; - } else { - throw Error('Unknown mode: ' + mode); - } - const code = input + '.' + functionName + '(' + delimiter + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['lists_reverse'] = function(block) { - // Block for reversing a list. - const list = - JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_FUNCTION_CALL) || - '[]'; - const code = list + '.slice().reverse()'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating JavaScript for list blocks. + * @suppress {missingRequire} + */ +'use strict'; + +goog.module('Blockly.JavaScript.lists'); + +const JavaScript = goog.require('Blockly.JavaScript'); +const {NameType} = goog.require('Blockly.Names'); + + +JavaScript['lists_create_empty'] = function(block) { + // Create an empty list. + return ['[]', JavaScript.ORDER_ATOMIC]; +}; + +JavaScript['lists_create_with'] = function(block) { + // Create a list with any number of elements of any type. + const elements = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { + elements[i] = + JavaScript.valueToCode(block, 'ADD' + i, JavaScript.ORDER_NONE) || + 'null'; + } + const code = '[' + elements.join(', ') + ']'; + return [code, JavaScript.ORDER_ATOMIC]; +}; + +JavaScript['lists_repeat'] = function(block) { + // Create a list with one element repeated. + const functionName = JavaScript.provideFunction_('listsRepeat', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(value, n) { + var array = []; + for (var i = 0; i < n; i++) { + array[i] = value; + } + return array; +} +`); + const element = + JavaScript.valueToCode(block, 'ITEM', JavaScript.ORDER_NONE) || 'null'; + const repeatCount = + JavaScript.valueToCode(block, 'NUM', JavaScript.ORDER_NONE) || '0'; + const code = functionName + '(' + element + ', ' + repeatCount + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['lists_length'] = function(block) { + // String or array length. + const list = + JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_MEMBER) || '[]'; + return [list + '.length', JavaScript.ORDER_MEMBER]; +}; + +JavaScript['lists_isEmpty'] = function(block) { + // Is the string null or array empty? + const list = + JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_MEMBER) || '[]'; + return ['!' + list + '.length', JavaScript.ORDER_LOGICAL_NOT]; +}; + +JavaScript['lists_indexOf'] = function(block) { + // Find an item in the list. + const operator = + block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf'; + const item = + JavaScript.valueToCode(block, 'FIND', JavaScript.ORDER_NONE) || "''"; + const list = + JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_MEMBER) || '[]'; + const code = list + '.' + operator + '(' + item + ')'; + if (block.workspace.options.oneBasedIndex) { + return [code + ' + 1', JavaScript.ORDER_ADDITION]; + } + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['lists_getIndex'] = function(block) { + // Get element at index. + // Note: Until January 2013 this block did not have MODE or WHERE inputs. + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const listOrder = + (where === 'RANDOM') ? JavaScript.ORDER_NONE : JavaScript.ORDER_MEMBER; + const list = JavaScript.valueToCode(block, 'VALUE', listOrder) || '[]'; + + switch (where) { + case ('FIRST'): + if (mode === 'GET') { + const code = list + '[0]'; + return [code, JavaScript.ORDER_MEMBER]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.shift()'; + return [code, JavaScript.ORDER_MEMBER]; + } else if (mode === 'REMOVE') { + return list + '.shift();\n'; + } + break; + case ('LAST'): + if (mode === 'GET') { + const code = list + '.slice(-1)[0]'; + return [code, JavaScript.ORDER_MEMBER]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.pop()'; + return [code, JavaScript.ORDER_MEMBER]; + } else if (mode === 'REMOVE') { + return list + '.pop();\n'; + } + break; + case ('FROM_START'): { + const at = JavaScript.getAdjusted(block, 'AT'); + if (mode === 'GET') { + const code = list + '[' + at + ']'; + return [code, JavaScript.ORDER_MEMBER]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.splice(' + at + ', 1)[0]'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + return list + '.splice(' + at + ', 1);\n'; + } + break; + } + case ('FROM_END'): { + const at = JavaScript.getAdjusted(block, 'AT', 1, true); + if (mode === 'GET') { + const code = list + '.slice(' + at + ')[0]'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.splice(' + at + ', 1)[0]'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + return list + '.splice(' + at + ', 1);'; + } + break; + } + case ('RANDOM'): { + const functionName = JavaScript.provideFunction_('listsGetRandomItem', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(list, remove) { + var x = Math.floor(Math.random() * list.length); + if (remove) { + return list.splice(x, 1)[0]; + } else { + return list[x]; + } +} +`); + const code = functionName + '(' + list + ', ' + (mode !== 'GET') + ')'; + if (mode === 'GET' || mode === 'GET_REMOVE') { + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + return code + ';\n'; + } + break; + } + } + throw Error('Unhandled combination (lists_getIndex).'); +}; + +JavaScript['lists_setIndex'] = function(block) { + // Set element at index. + // Note: Until February 2013 this block did not have MODE or WHERE inputs. + let list = + JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_MEMBER) || '[]'; + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const value = + JavaScript.valueToCode(block, 'TO', JavaScript.ORDER_ASSIGNMENT) || + 'null'; + // Cache non-trivial values to variables to prevent repeated look-ups. + // Closure, which accesses and modifies 'list'. + function cacheList() { + if (list.match(/^\w+$/)) { + return ''; + } + const listVar = + JavaScript.nameDB_.getDistinctName('tmpList', NameType.VARIABLE); + const code = 'var ' + listVar + ' = ' + list + ';\n'; + list = listVar; + return code; + } + switch (where) { + case ('FIRST'): + if (mode === 'SET') { + return list + '[0] = ' + value + ';\n'; + } else if (mode === 'INSERT') { + return list + '.unshift(' + value + ');\n'; + } + break; + case ('LAST'): + if (mode === 'SET') { + let code = cacheList(); + code += list + '[' + list + '.length - 1] = ' + value + ';\n'; + return code; + } else if (mode === 'INSERT') { + return list + '.push(' + value + ');\n'; + } + break; + case ('FROM_START'): { + const at = JavaScript.getAdjusted(block, 'AT'); + if (mode === 'SET') { + return list + '[' + at + '] = ' + value + ';\n'; + } else if (mode === 'INSERT') { + return list + '.splice(' + at + ', 0, ' + value + ');\n'; + } + break; + } + case ('FROM_END'): { + const at = JavaScript.getAdjusted( + block, 'AT', 1, false, JavaScript.ORDER_SUBTRACTION); + let code = cacheList(); + if (mode === 'SET') { + code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\n'; + return code; + } else if (mode === 'INSERT') { + code += list + '.splice(' + list + '.length - ' + at + ', 0, ' + value + + ');\n'; + return code; + } + break; + } + case ('RANDOM'): { + let code = cacheList(); + const xVar = + JavaScript.nameDB_.getDistinctName('tmpX', NameType.VARIABLE); + code += 'var ' + xVar + ' = Math.floor(Math.random() * ' + list + + '.length);\n'; + if (mode === 'SET') { + code += list + '[' + xVar + '] = ' + value + ';\n'; + return code; + } else if (mode === 'INSERT') { + code += list + '.splice(' + xVar + ', 0, ' + value + ');\n'; + return code; + } + break; + } + } + throw Error('Unhandled combination (lists_setIndex).'); +}; + +/** + * Returns an expression calculating the index into a list. + * @param {string} listName Name of the list, used to calculate length. + * @param {string} where The method of indexing, selected by dropdown in Blockly + * @param {string=} opt_at The optional offset when indexing from start/end. + * @return {string|undefined} Index expression. + */ +const getSubstringIndex = function(listName, where, opt_at) { + if (where === 'FIRST') { + return '0'; + } else if (where === 'FROM_END') { + return listName + '.length - 1 - ' + opt_at; + } else if (where === 'LAST') { + return listName + '.length - 1'; + } else { + return opt_at; + } +}; + +JavaScript['lists_getSublist'] = function(block) { + // Get sublist. + const list = + JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_MEMBER) || '[]'; + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + let code; + if (where1 === 'FIRST' && where2 === 'LAST') { + code = list + '.slice(0)'; + } else if ( + list.match(/^\w+$/) || + (where1 !== 'FROM_END' && where2 === 'FROM_START')) { + // If the list is a variable or doesn't require a call for length, don't + // generate a helper function. + let at1; + switch (where1) { + case 'FROM_START': + at1 = JavaScript.getAdjusted(block, 'AT1'); + break; + case 'FROM_END': + at1 = JavaScript.getAdjusted( + block, 'AT1', 1, false, JavaScript.ORDER_SUBTRACTION); + at1 = list + '.length - ' + at1; + break; + case 'FIRST': + at1 = '0'; + break; + default: + throw Error('Unhandled option (lists_getSublist).'); + } + let at2; + switch (where2) { + case 'FROM_START': + at2 = JavaScript.getAdjusted(block, 'AT2', 1); + break; + case 'FROM_END': + at2 = JavaScript.getAdjusted( + block, 'AT2', 0, false, JavaScript.ORDER_SUBTRACTION); + at2 = list + '.length - ' + at2; + break; + case 'LAST': + at2 = list + '.length'; + break; + default: + throw Error('Unhandled option (lists_getSublist).'); + } + code = list + '.slice(' + at1 + ', ' + at2 + ')'; + } else { + const at1 = JavaScript.getAdjusted(block, 'AT1'); + const at2 = JavaScript.getAdjusted(block, 'AT2'); + const wherePascalCase = { + 'FIRST': 'First', + 'LAST': 'Last', + 'FROM_START': 'FromStart', + 'FROM_END': 'FromEnd', + }; + // The value for 'FROM_END' and'FROM_START' depends on `at` so + // we add it as a parameter. + const at1Param = + (where1 === 'FROM_END' || where1 === 'FROM_START') ? ', at1' : ''; + const at2Param = + (where2 === 'FROM_END' || where2 === 'FROM_START') ? ', at2' : ''; + const functionName = JavaScript.provideFunction_( + 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(sequence${at1Param}${at2Param}) { + var start = ${getSubstringIndex('sequence', where1, 'at1')}; + var end = ${getSubstringIndex('sequence', where2, 'at2')} + 1; + return sequence.slice(start, end); +} +`); + code = functionName + '(' + list + + // The value for 'FROM_END' and 'FROM_START' depends on `at` so we + // pass it. + ((where1 === 'FROM_END' || where1 === 'FROM_START') ? ', ' + at1 : '') + + ((where2 === 'FROM_END' || where2 === 'FROM_START') ? ', ' + at2 : '') + + ')'; + } + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['lists_sort'] = function(block) { + // Block for sorting a list. + const list = + JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_FUNCTION_CALL) || + '[]'; + const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; + const type = block.getFieldValue('TYPE'); + const getCompareFunctionName = + JavaScript.provideFunction_('listsGetSortCompare', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(type, direction) { + var compareFuncs = { + 'NUMERIC': function(a, b) { + return Number(a) - Number(b); }, + 'TEXT': function(a, b) { + return a.toString() > b.toString() ? 1 : -1; }, + 'IGNORE_CASE': function(a, b) { + return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; }, + }; + var compare = compareFuncs[type]; + return function(a, b) { return compare(a, b) * direction; }; +} + `); + return [ + list + '.slice().sort(' + getCompareFunctionName + '("' + type + '", ' + + direction + '))', + JavaScript.ORDER_FUNCTION_CALL + ]; +}; + +JavaScript['lists_split'] = function(block) { + // Block for splitting text into a list, or joining a list into text. + let input = JavaScript.valueToCode(block, 'INPUT', JavaScript.ORDER_MEMBER); + const delimiter = + JavaScript.valueToCode(block, 'DELIM', JavaScript.ORDER_NONE) || "''"; + const mode = block.getFieldValue('MODE'); + let functionName; + if (mode === 'SPLIT') { + if (!input) { + input = "''"; + } + functionName = 'split'; + } else if (mode === 'JOIN') { + if (!input) { + input = '[]'; + } + functionName = 'join'; + } else { + throw Error('Unknown mode: ' + mode); + } + const code = input + '.' + functionName + '(' + delimiter + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['lists_reverse'] = function(block) { + // Block for reversing a list. + const list = + JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_FUNCTION_CALL) || + '[]'; + const code = list + '.slice().reverse()'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; diff --git a/generators/javascript/logic.js b/generators/javascript/logic.js index 582d557de2b..9a8d33b433e 100644 --- a/generators/javascript/logic.js +++ b/generators/javascript/logic.js @@ -1,127 +1,127 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating JavaScript for logic blocks. - */ -'use strict'; - -goog.module('Blockly.JavaScript.logic'); - -const JavaScript = goog.require('Blockly.JavaScript'); - - -JavaScript['controls_if'] = function(block) { - // If/elseif/else condition. - let n = 0; - let code = ''; - if (JavaScript.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - code += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, block); - } - do { - const conditionCode = - JavaScript.valueToCode(block, 'IF' + n, JavaScript.ORDER_NONE) || - 'false'; - let branchCode = JavaScript.statementToCode(block, 'DO' + n); - if (JavaScript.STATEMENT_SUFFIX) { - branchCode = JavaScript.prefixLines( - JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block), - JavaScript.INDENT) + - branchCode; - } - code += (n > 0 ? ' else ' : '') + 'if (' + conditionCode + ') {\n' + - branchCode + '}'; - n++; - } while (block.getInput('IF' + n)); - - if (block.getInput('ELSE') || JavaScript.STATEMENT_SUFFIX) { - let branchCode = JavaScript.statementToCode(block, 'ELSE'); - if (JavaScript.STATEMENT_SUFFIX) { - branchCode = JavaScript.prefixLines( - JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block), - JavaScript.INDENT) + - branchCode; - } - code += ' else {\n' + branchCode + '}'; - } - return code + '\n'; -}; - -JavaScript['controls_ifelse'] = JavaScript['controls_if']; - -JavaScript['logic_compare'] = function(block) { - // Comparison operator. - const OPERATORS = - {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; - const operator = OPERATORS[block.getFieldValue('OP')]; - const order = (operator === '==' || operator === '!=') ? - JavaScript.ORDER_EQUALITY : - JavaScript.ORDER_RELATIONAL; - const argument0 = JavaScript.valueToCode(block, 'A', order) || '0'; - const argument1 = JavaScript.valueToCode(block, 'B', order) || '0'; - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -}; - -JavaScript['logic_operation'] = function(block) { - // Operations 'and', 'or'. - const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; - const order = (operator === '&&') ? JavaScript.ORDER_LOGICAL_AND : - JavaScript.ORDER_LOGICAL_OR; - let argument0 = JavaScript.valueToCode(block, 'A', order); - let argument1 = JavaScript.valueToCode(block, 'B', order); - if (!argument0 && !argument1) { - // If there are no arguments, then the return value is false. - argument0 = 'false'; - argument1 = 'false'; - } else { - // Single missing arguments have no effect on the return value. - const defaultArgument = (operator === '&&') ? 'true' : 'false'; - if (!argument0) { - argument0 = defaultArgument; - } - if (!argument1) { - argument1 = defaultArgument; - } - } - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -}; - -JavaScript['logic_negate'] = function(block) { - // Negation. - const order = JavaScript.ORDER_LOGICAL_NOT; - const argument0 = JavaScript.valueToCode(block, 'BOOL', order) || 'true'; - const code = '!' + argument0; - return [code, order]; -}; - -JavaScript['logic_boolean'] = function(block) { - // Boolean values true and false. - const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; - return [code, JavaScript.ORDER_ATOMIC]; -}; - -JavaScript['logic_null'] = function(block) { - // Null data type. - return ['null', JavaScript.ORDER_ATOMIC]; -}; - -JavaScript['logic_ternary'] = function(block) { - // Ternary operator. - const value_if = - JavaScript.valueToCode(block, 'IF', JavaScript.ORDER_CONDITIONAL) || - 'false'; - const value_then = - JavaScript.valueToCode(block, 'THEN', JavaScript.ORDER_CONDITIONAL) || - 'null'; - const value_else = - JavaScript.valueToCode(block, 'ELSE', JavaScript.ORDER_CONDITIONAL) || - 'null'; - const code = value_if + ' ? ' + value_then + ' : ' + value_else; - return [code, JavaScript.ORDER_CONDITIONAL]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating JavaScript for logic blocks. + */ +'use strict'; + +goog.module('Blockly.JavaScript.logic'); + +const JavaScript = goog.require('Blockly.JavaScript'); + + +JavaScript['controls_if'] = function(block) { + // If/elseif/else condition. + let n = 0; + let code = ''; + if (JavaScript.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + code += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, block); + } + do { + const conditionCode = + JavaScript.valueToCode(block, 'IF' + n, JavaScript.ORDER_NONE) || + 'false'; + let branchCode = JavaScript.statementToCode(block, 'DO' + n); + if (JavaScript.STATEMENT_SUFFIX) { + branchCode = JavaScript.prefixLines( + JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block), + JavaScript.INDENT) + + branchCode; + } + code += (n > 0 ? ' else ' : '') + 'if (' + conditionCode + ') {\n' + + branchCode + '}'; + n++; + } while (block.getInput('IF' + n)); + + if (block.getInput('ELSE') || JavaScript.STATEMENT_SUFFIX) { + let branchCode = JavaScript.statementToCode(block, 'ELSE'); + if (JavaScript.STATEMENT_SUFFIX) { + branchCode = JavaScript.prefixLines( + JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block), + JavaScript.INDENT) + + branchCode; + } + code += ' else {\n' + branchCode + '}'; + } + return code + '\n'; +}; + +JavaScript['controls_ifelse'] = JavaScript['controls_if']; + +JavaScript['logic_compare'] = function(block) { + // Comparison operator. + const OPERATORS = + {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; + const operator = OPERATORS[block.getFieldValue('OP')]; + const order = (operator === '==' || operator === '!=') ? + JavaScript.ORDER_EQUALITY : + JavaScript.ORDER_RELATIONAL; + const argument0 = JavaScript.valueToCode(block, 'A', order) || '0'; + const argument1 = JavaScript.valueToCode(block, 'B', order) || '0'; + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; +}; + +JavaScript['logic_operation'] = function(block) { + // Operations 'and', 'or'. + const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; + const order = (operator === '&&') ? JavaScript.ORDER_LOGICAL_AND : + JavaScript.ORDER_LOGICAL_OR; + let argument0 = JavaScript.valueToCode(block, 'A', order); + let argument1 = JavaScript.valueToCode(block, 'B', order); + if (!argument0 && !argument1) { + // If there are no arguments, then the return value is false. + argument0 = 'false'; + argument1 = 'false'; + } else { + // Single missing arguments have no effect on the return value. + const defaultArgument = (operator === '&&') ? 'true' : 'false'; + if (!argument0) { + argument0 = defaultArgument; + } + if (!argument1) { + argument1 = defaultArgument; + } + } + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; +}; + +JavaScript['logic_negate'] = function(block) { + // Negation. + const order = JavaScript.ORDER_LOGICAL_NOT; + const argument0 = JavaScript.valueToCode(block, 'BOOL', order) || 'true'; + const code = '!' + argument0; + return [code, order]; +}; + +JavaScript['logic_boolean'] = function(block) { + // Boolean values true and false. + const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; + return [code, JavaScript.ORDER_ATOMIC]; +}; + +JavaScript['logic_null'] = function(block) { + // Null data type. + return ['null', JavaScript.ORDER_ATOMIC]; +}; + +JavaScript['logic_ternary'] = function(block) { + // Ternary operator. + const value_if = + JavaScript.valueToCode(block, 'IF', JavaScript.ORDER_CONDITIONAL) || + 'false'; + const value_then = + JavaScript.valueToCode(block, 'THEN', JavaScript.ORDER_CONDITIONAL) || + 'null'; + const value_else = + JavaScript.valueToCode(block, 'ELSE', JavaScript.ORDER_CONDITIONAL) || + 'null'; + const code = value_if + ' ? ' + value_then + ' : ' + value_else; + return [code, JavaScript.ORDER_CONDITIONAL]; +}; diff --git a/generators/javascript/loops.js b/generators/javascript/loops.js index 0626f37e4b1..5f7615734fc 100644 --- a/generators/javascript/loops.js +++ b/generators/javascript/loops.js @@ -1,180 +1,180 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating JavaScript for loop blocks. - */ -'use strict'; - -goog.module('Blockly.JavaScript.loops'); - -const stringUtils = goog.require('Blockly.utils.string'); -const JavaScript = goog.require('Blockly.JavaScript'); -const {NameType} = goog.require('Blockly.Names'); - - -JavaScript['controls_repeat_ext'] = function(block) { - // Repeat n times. - let repeats; - if (block.getField('TIMES')) { - // Internal number. - repeats = String(Number(block.getFieldValue('TIMES'))); - } else { - // External number. - repeats = - JavaScript.valueToCode(block, 'TIMES', JavaScript.ORDER_ASSIGNMENT) || - '0'; - } - let branch = JavaScript.statementToCode(block, 'DO'); - branch = JavaScript.addLoopTrap(branch, block); - let code = ''; - const loopVar = - JavaScript.nameDB_.getDistinctName('count', NameType.VARIABLE); - let endVar = repeats; - if (!repeats.match(/^\w+$/) && !stringUtils.isNumber(repeats)) { - endVar = - JavaScript.nameDB_.getDistinctName('repeat_end', NameType.VARIABLE); - code += 'var ' + endVar + ' = ' + repeats + ';\n'; - } - code += 'for (var ' + loopVar + ' = 0; ' + loopVar + ' < ' + endVar + '; ' + - loopVar + '++) {\n' + branch + '}\n'; - return code; -}; - -JavaScript['controls_repeat'] = JavaScript['controls_repeat_ext']; - -JavaScript['controls_whileUntil'] = function(block) { - // Do while/until loop. - const until = block.getFieldValue('MODE') === 'UNTIL'; - let argument0 = - JavaScript.valueToCode( - block, 'BOOL', - until ? JavaScript.ORDER_LOGICAL_NOT : JavaScript.ORDER_NONE) || - 'false'; - let branch = JavaScript.statementToCode(block, 'DO'); - branch = JavaScript.addLoopTrap(branch, block); - if (until) { - argument0 = '!' + argument0; - } - return 'while (' + argument0 + ') {\n' + branch + '}\n'; -}; - -JavaScript['controls_for'] = function(block) { - // For loop. - const variable0 = - JavaScript.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const argument0 = - JavaScript.valueToCode(block, 'FROM', JavaScript.ORDER_ASSIGNMENT) || '0'; - const argument1 = - JavaScript.valueToCode(block, 'TO', JavaScript.ORDER_ASSIGNMENT) || '0'; - const increment = - JavaScript.valueToCode(block, 'BY', JavaScript.ORDER_ASSIGNMENT) || '1'; - let branch = JavaScript.statementToCode(block, 'DO'); - branch = JavaScript.addLoopTrap(branch, block); - let code; - if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) && - stringUtils.isNumber(increment)) { - // All arguments are simple numbers. - const up = Number(argument0) <= Number(argument1); - code = 'for (' + variable0 + ' = ' + argument0 + '; ' + variable0 + - (up ? ' <= ' : ' >= ') + argument1 + '; ' + variable0; - const step = Math.abs(Number(increment)); - if (step === 1) { - code += up ? '++' : '--'; - } else { - code += (up ? ' += ' : ' -= ') + step; - } - code += ') {\n' + branch + '}\n'; - } else { - code = ''; - // Cache non-trivial values to variables to prevent repeated look-ups. - let startVar = argument0; - if (!argument0.match(/^\w+$/) && !stringUtils.isNumber(argument0)) { - startVar = JavaScript.nameDB_.getDistinctName( - variable0 + '_start', NameType.VARIABLE); - code += 'var ' + startVar + ' = ' + argument0 + ';\n'; - } - let endVar = argument1; - if (!argument1.match(/^\w+$/) && !stringUtils.isNumber(argument1)) { - endVar = JavaScript.nameDB_.getDistinctName( - variable0 + '_end', NameType.VARIABLE); - code += 'var ' + endVar + ' = ' + argument1 + ';\n'; - } - // Determine loop direction at start, in case one of the bounds - // changes during loop execution. - const incVar = JavaScript.nameDB_.getDistinctName( - variable0 + '_inc', NameType.VARIABLE); - code += 'var ' + incVar + ' = '; - if (stringUtils.isNumber(increment)) { - code += Math.abs(increment) + ';\n'; - } else { - code += 'Math.abs(' + increment + ');\n'; - } - code += 'if (' + startVar + ' > ' + endVar + ') {\n'; - code += JavaScript.INDENT + incVar + ' = -' + incVar + ';\n'; - code += '}\n'; - code += 'for (' + variable0 + ' = ' + startVar + '; ' + incVar + - ' >= 0 ? ' + variable0 + ' <= ' + endVar + ' : ' + variable0 + - ' >= ' + endVar + '; ' + variable0 + ' += ' + incVar + ') {\n' + - branch + '}\n'; - } - return code; -}; - -JavaScript['controls_forEach'] = function(block) { - // For each loop. - const variable0 = - JavaScript.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const argument0 = - JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_ASSIGNMENT) || - '[]'; - let branch = JavaScript.statementToCode(block, 'DO'); - branch = JavaScript.addLoopTrap(branch, block); - let code = ''; - // Cache non-trivial values to variables to prevent repeated look-ups. - let listVar = argument0; - if (!argument0.match(/^\w+$/)) { - listVar = JavaScript.nameDB_.getDistinctName( - variable0 + '_list', NameType.VARIABLE); - code += 'var ' + listVar + ' = ' + argument0 + ';\n'; - } - const indexVar = JavaScript.nameDB_.getDistinctName( - variable0 + '_index', NameType.VARIABLE); - branch = JavaScript.INDENT + variable0 + ' = ' + listVar + '[' + indexVar + - '];\n' + branch; - code += 'for (var ' + indexVar + ' in ' + listVar + ') {\n' + branch + '}\n'; - return code; -}; - -JavaScript['controls_flow_statements'] = function(block) { - // Flow statements: continue, break. - let xfix = ''; - if (JavaScript.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - xfix += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, block); - } - if (JavaScript.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the break/continue is triggered. - xfix += JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block); - } - if (JavaScript.STATEMENT_PREFIX) { - const loop = block.getSurroundLoop(); - if (loop && !loop.suppressPrefixSuffix) { - // Inject loop's statement prefix here since the regular one at the end - // of the loop will not get executed if 'continue' is triggered. - // In the case of 'break', a prefix is needed due to the loop's suffix. - xfix += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, loop); - } - } - switch (block.getFieldValue('FLOW')) { - case 'BREAK': - return xfix + 'break;\n'; - case 'CONTINUE': - return xfix + 'continue;\n'; - } - throw Error('Unknown flow statement.'); -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating JavaScript for loop blocks. + */ +'use strict'; + +goog.module('Blockly.JavaScript.loops'); + +const stringUtils = goog.require('Blockly.utils.string'); +const JavaScript = goog.require('Blockly.JavaScript'); +const {NameType} = goog.require('Blockly.Names'); + + +JavaScript['controls_repeat_ext'] = function(block) { + // Repeat n times. + let repeats; + if (block.getField('TIMES')) { + // Internal number. + repeats = String(Number(block.getFieldValue('TIMES'))); + } else { + // External number. + repeats = + JavaScript.valueToCode(block, 'TIMES', JavaScript.ORDER_ASSIGNMENT) || + '0'; + } + let branch = JavaScript.statementToCode(block, 'DO'); + branch = JavaScript.addLoopTrap(branch, block); + let code = ''; + const loopVar = + JavaScript.nameDB_.getDistinctName('count', NameType.VARIABLE); + let endVar = repeats; + if (!repeats.match(/^\w+$/) && !stringUtils.isNumber(repeats)) { + endVar = + JavaScript.nameDB_.getDistinctName('repeat_end', NameType.VARIABLE); + code += 'var ' + endVar + ' = ' + repeats + ';\n'; + } + code += 'for (var ' + loopVar + ' = 0; ' + loopVar + ' < ' + endVar + '; ' + + loopVar + '++) {\n' + branch + '}\n'; + return code; +}; + +JavaScript['controls_repeat'] = JavaScript['controls_repeat_ext']; + +JavaScript['controls_whileUntil'] = function(block) { + // Do while/until loop. + const until = block.getFieldValue('MODE') === 'UNTIL'; + let argument0 = + JavaScript.valueToCode( + block, 'BOOL', + until ? JavaScript.ORDER_LOGICAL_NOT : JavaScript.ORDER_NONE) || + 'false'; + let branch = JavaScript.statementToCode(block, 'DO'); + branch = JavaScript.addLoopTrap(branch, block); + if (until) { + argument0 = '!' + argument0; + } + return 'while (' + argument0 + ') {\n' + branch + '}\n'; +}; + +JavaScript['controls_for'] = function(block) { + // For loop. + const variable0 = + JavaScript.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const argument0 = + JavaScript.valueToCode(block, 'FROM', JavaScript.ORDER_ASSIGNMENT) || '0'; + const argument1 = + JavaScript.valueToCode(block, 'TO', JavaScript.ORDER_ASSIGNMENT) || '0'; + const increment = + JavaScript.valueToCode(block, 'BY', JavaScript.ORDER_ASSIGNMENT) || '1'; + let branch = JavaScript.statementToCode(block, 'DO'); + branch = JavaScript.addLoopTrap(branch, block); + let code; + if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) && + stringUtils.isNumber(increment)) { + // All arguments are simple numbers. + const up = Number(argument0) <= Number(argument1); + code = 'for (' + variable0 + ' = ' + argument0 + '; ' + variable0 + + (up ? ' <= ' : ' >= ') + argument1 + '; ' + variable0; + const step = Math.abs(Number(increment)); + if (step === 1) { + code += up ? '++' : '--'; + } else { + code += (up ? ' += ' : ' -= ') + step; + } + code += ') {\n' + branch + '}\n'; + } else { + code = ''; + // Cache non-trivial values to variables to prevent repeated look-ups. + let startVar = argument0; + if (!argument0.match(/^\w+$/) && !stringUtils.isNumber(argument0)) { + startVar = JavaScript.nameDB_.getDistinctName( + variable0 + '_start', NameType.VARIABLE); + code += 'var ' + startVar + ' = ' + argument0 + ';\n'; + } + let endVar = argument1; + if (!argument1.match(/^\w+$/) && !stringUtils.isNumber(argument1)) { + endVar = JavaScript.nameDB_.getDistinctName( + variable0 + '_end', NameType.VARIABLE); + code += 'var ' + endVar + ' = ' + argument1 + ';\n'; + } + // Determine loop direction at start, in case one of the bounds + // changes during loop execution. + const incVar = JavaScript.nameDB_.getDistinctName( + variable0 + '_inc', NameType.VARIABLE); + code += 'var ' + incVar + ' = '; + if (stringUtils.isNumber(increment)) { + code += Math.abs(increment) + ';\n'; + } else { + code += 'Math.abs(' + increment + ');\n'; + } + code += 'if (' + startVar + ' > ' + endVar + ') {\n'; + code += JavaScript.INDENT + incVar + ' = -' + incVar + ';\n'; + code += '}\n'; + code += 'for (' + variable0 + ' = ' + startVar + '; ' + incVar + + ' >= 0 ? ' + variable0 + ' <= ' + endVar + ' : ' + variable0 + + ' >= ' + endVar + '; ' + variable0 + ' += ' + incVar + ') {\n' + + branch + '}\n'; + } + return code; +}; + +JavaScript['controls_forEach'] = function(block) { + // For each loop. + const variable0 = + JavaScript.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const argument0 = + JavaScript.valueToCode(block, 'LIST', JavaScript.ORDER_ASSIGNMENT) || + '[]'; + let branch = JavaScript.statementToCode(block, 'DO'); + branch = JavaScript.addLoopTrap(branch, block); + let code = ''; + // Cache non-trivial values to variables to prevent repeated look-ups. + let listVar = argument0; + if (!argument0.match(/^\w+$/)) { + listVar = JavaScript.nameDB_.getDistinctName( + variable0 + '_list', NameType.VARIABLE); + code += 'var ' + listVar + ' = ' + argument0 + ';\n'; + } + const indexVar = JavaScript.nameDB_.getDistinctName( + variable0 + '_index', NameType.VARIABLE); + branch = JavaScript.INDENT + variable0 + ' = ' + listVar + '[' + indexVar + + '];\n' + branch; + code += 'for (var ' + indexVar + ' in ' + listVar + ') {\n' + branch + '}\n'; + return code; +}; + +JavaScript['controls_flow_statements'] = function(block) { + // Flow statements: continue, break. + let xfix = ''; + if (JavaScript.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + xfix += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, block); + } + if (JavaScript.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the break/continue is triggered. + xfix += JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block); + } + if (JavaScript.STATEMENT_PREFIX) { + const loop = block.getSurroundLoop(); + if (loop && !loop.suppressPrefixSuffix) { + // Inject loop's statement prefix here since the regular one at the end + // of the loop will not get executed if 'continue' is triggered. + // In the case of 'break', a prefix is needed due to the loop's suffix. + xfix += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, loop); + } + } + switch (block.getFieldValue('FLOW')) { + case 'BREAK': + return xfix + 'break;\n'; + case 'CONTINUE': + return xfix + 'continue;\n'; + } + throw Error('Unknown flow statement.'); +}; diff --git a/generators/javascript/math.js b/generators/javascript/math.js index f370ba55988..363a2f415c3 100644 --- a/generators/javascript/math.js +++ b/generators/javascript/math.js @@ -1,401 +1,401 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating JavaScript for math blocks. - * @suppress {missingRequire} - */ -'use strict'; - -goog.module('Blockly.JavaScript.math'); - -const JavaScript = goog.require('Blockly.JavaScript'); -const {NameType} = goog.require('Blockly.Names'); - - -JavaScript['math_number'] = function(block) { - // Numeric value. - const code = Number(block.getFieldValue('NUM')); - const order = code >= 0 ? JavaScript.ORDER_ATOMIC : - JavaScript.ORDER_UNARY_NEGATION; - return [code, order]; -}; - -JavaScript['math_arithmetic'] = function(block) { - // Basic arithmetic operators, and power. - const OPERATORS = { - 'ADD': [' + ', JavaScript.ORDER_ADDITION], - 'MINUS': [' - ', JavaScript.ORDER_SUBTRACTION], - 'MULTIPLY': [' * ', JavaScript.ORDER_MULTIPLICATION], - 'DIVIDE': [' / ', JavaScript.ORDER_DIVISION], - 'POWER': [null, JavaScript.ORDER_NONE], // Handle power separately. - }; - const tuple = OPERATORS[block.getFieldValue('OP')]; - const operator = tuple[0]; - const order = tuple[1]; - const argument0 = JavaScript.valueToCode(block, 'A', order) || '0'; - const argument1 = JavaScript.valueToCode(block, 'B', order) || '0'; - let code; - // Power in JavaScript requires a special case since it has no operator. - if (!operator) { - code = 'Math.pow(' + argument0 + ', ' + argument1 + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } - code = argument0 + operator + argument1; - return [code, order]; -}; - -JavaScript['math_single'] = function(block) { - // Math operators with single operand. - const operator = block.getFieldValue('OP'); - let code; - let arg; - if (operator === 'NEG') { - // Negation is a special case given its different operator precedence. - arg = JavaScript.valueToCode(block, 'NUM', - JavaScript.ORDER_UNARY_NEGATION) || '0'; - if (arg[0] === '-') { - // --3 is not legal in JS. - arg = ' ' + arg; - } - code = '-' + arg; - return [code, JavaScript.ORDER_UNARY_NEGATION]; - } - if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { - arg = JavaScript.valueToCode(block, 'NUM', - JavaScript.ORDER_DIVISION) || '0'; - } else { - arg = JavaScript.valueToCode(block, 'NUM', - JavaScript.ORDER_NONE) || '0'; - } - // First, handle cases which generate values that don't need parentheses - // wrapping the code. - switch (operator) { - case 'ABS': - code = 'Math.abs(' + arg + ')'; - break; - case 'ROOT': - code = 'Math.sqrt(' + arg + ')'; - break; - case 'LN': - code = 'Math.log(' + arg + ')'; - break; - case 'EXP': - code = 'Math.exp(' + arg + ')'; - break; - case 'POW10': - code = 'Math.pow(10,' + arg + ')'; - break; - case 'ROUND': - code = 'Math.round(' + arg + ')'; - break; - case 'ROUNDUP': - code = 'Math.ceil(' + arg + ')'; - break; - case 'ROUNDDOWN': - code = 'Math.floor(' + arg + ')'; - break; - case 'SIN': - code = 'Math.sin(' + arg + ' / 180 * Math.PI)'; - break; - case 'COS': - code = 'Math.cos(' + arg + ' / 180 * Math.PI)'; - break; - case 'TAN': - code = 'Math.tan(' + arg + ' / 180 * Math.PI)'; - break; - } - if (code) { - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } - // Second, handle cases which generate values that may need parentheses - // wrapping the code. - switch (operator) { - case 'LOG10': - code = 'Math.log(' + arg + ') / Math.log(10)'; - break; - case 'ASIN': - code = 'Math.asin(' + arg + ') / Math.PI * 180'; - break; - case 'ACOS': - code = 'Math.acos(' + arg + ') / Math.PI * 180'; - break; - case 'ATAN': - code = 'Math.atan(' + arg + ') / Math.PI * 180'; - break; - default: - throw Error('Unknown math operator: ' + operator); - } - return [code, JavaScript.ORDER_DIVISION]; -}; - -JavaScript['math_constant'] = function(block) { - // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. - const CONSTANTS = { - 'PI': ['Math.PI', JavaScript.ORDER_MEMBER], - 'E': ['Math.E', JavaScript.ORDER_MEMBER], - 'GOLDEN_RATIO': ['(1 + Math.sqrt(5)) / 2', JavaScript.ORDER_DIVISION], - 'SQRT2': ['Math.SQRT2', JavaScript.ORDER_MEMBER], - 'SQRT1_2': ['Math.SQRT1_2', JavaScript.ORDER_MEMBER], - 'INFINITY': ['Infinity', JavaScript.ORDER_ATOMIC], - }; - return CONSTANTS[block.getFieldValue('CONSTANT')]; -}; - -JavaScript['math_number_property'] = function(block) { - // Check if a number is even, odd, prime, whole, positive, or negative - // or if it is divisible by certain number. Returns true or false. - const PROPERTIES = { - 'EVEN': [' % 2 === 0', JavaScript.ORDER_MODULUS, JavaScript.ORDER_EQUALITY], - 'ODD': [' % 2 === 1', JavaScript.ORDER_MODULUS, JavaScript.ORDER_EQUALITY], - 'WHOLE': [' % 1 === 0', JavaScript.ORDER_MODULUS, - JavaScript.ORDER_EQUALITY], - 'POSITIVE': [' > 0', JavaScript.ORDER_RELATIONAL, - JavaScript.ORDER_RELATIONAL], - 'NEGATIVE': [' < 0', JavaScript.ORDER_RELATIONAL, - JavaScript.ORDER_RELATIONAL], - 'DIVISIBLE_BY': [null, JavaScript.ORDER_MODULUS, JavaScript.ORDER_EQUALITY], - 'PRIME': [null, JavaScript.ORDER_NONE, JavaScript.ORDER_FUNCTION_CALL], - }; - const dropdownProperty = block.getFieldValue('PROPERTY'); - const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; - const numberToCheck = JavaScript.valueToCode(block, 'NUMBER_TO_CHECK', - inputOrder) || '0'; - let code; - if (dropdownProperty === 'PRIME') { - // Prime is a special case as it is not a one-liner test. - const functionName = JavaScript.provideFunction_('mathIsPrime', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(n) { - // https://en.wikipedia.org/wiki/Primality_test#Naive_methods - if (n == 2 || n == 3) { - return true; - } - // False if n is NaN, negative, is 1, or not whole. - // And false if n is divisible by 2 or 3. - if (isNaN(n) || n <= 1 || n % 1 !== 0 || n % 2 === 0 || n % 3 === 0) { - return false; - } - // Check all the numbers of form 6k +/- 1, up to sqrt(n). - for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) { - if (n % (x - 1) === 0 || n % (x + 1) === 0) { - return false; - } - } - return true; -} -`); - code = functionName + '(' + numberToCheck + ')'; - } else if (dropdownProperty === 'DIVISIBLE_BY') { - const divisor = JavaScript.valueToCode(block, 'DIVISOR', - JavaScript.ORDER_MODULUS) || '0'; - code = numberToCheck + ' % ' + divisor + ' === 0'; - } else { - code = numberToCheck + suffix; - } - return [code, outputOrder]; -}; - -JavaScript['math_change'] = function(block) { - // Add to a variable in place. - const argument0 = JavaScript.valueToCode(block, 'DELTA', - JavaScript.ORDER_ADDITION) || '0'; - const varName = JavaScript.nameDB_.getName( - block.getFieldValue('VAR'), NameType.VARIABLE); - return varName + ' = (typeof ' + varName + ' === \'number\' ? ' + varName + - ' : 0) + ' + argument0 + ';\n'; -}; - -// Rounding functions have a single operand. -JavaScript['math_round'] = JavaScript['math_single']; -// Trigonometry functions have a single operand. -JavaScript['math_trig'] = JavaScript['math_single']; - -JavaScript['math_on_list'] = function(block) { - // Math functions for lists. - const func = block.getFieldValue('OP'); - let list; - let code; - switch (func) { - case 'SUM': - list = JavaScript.valueToCode(block, 'LIST', - JavaScript.ORDER_MEMBER) || '[]'; - code = list + '.reduce(function(x, y) {return x + y;})'; - break; - case 'MIN': - list = JavaScript.valueToCode(block, 'LIST', - JavaScript.ORDER_NONE) || '[]'; - code = 'Math.min.apply(null, ' + list + ')'; - break; - case 'MAX': - list = JavaScript.valueToCode(block, 'LIST', - JavaScript.ORDER_NONE) || '[]'; - code = 'Math.max.apply(null, ' + list + ')'; - break; - case 'AVERAGE': { - // mathMean([null,null,1,3]) === 2.0. - const functionName = JavaScript.provideFunction_('mathMean', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(myList) { - return myList.reduce(function(x, y) {return x + y;}) / myList.length; -} -`); - list = JavaScript.valueToCode(block, 'LIST', - JavaScript.ORDER_NONE) || '[]'; - code = functionName + '(' + list + ')'; - break; - } - case 'MEDIAN': { - // mathMedian([null,null,1,3]) === 2.0. - const functionName = JavaScript.provideFunction_('mathMedian', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(myList) { - var localList = myList.filter(function (x) {return typeof x === \'number\';}); - if (!localList.length) return null; - localList.sort(function(a, b) {return b - a;}); - if (localList.length % 2 === 0) { - return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2; - } else { - return localList[(localList.length - 1) / 2]; - } -} -`); - list = JavaScript.valueToCode(block, 'LIST', - JavaScript.ORDER_NONE) || '[]'; - code = functionName + '(' + list + ')'; - break; - } - case 'MODE': { - // As a list of numbers can contain more than one mode, - // the returned result is provided as an array. - // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]. - const functionName = JavaScript.provideFunction_('mathModes', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(values) { - var modes = []; - var counts = []; - var maxCount = 0; - for (var i = 0; i < values.length; i++) { - var value = values[i]; - var found = false; - var thisCount; - for (var j = 0; j < counts.length; j++) { - if (counts[j][0] === value) { - thisCount = ++counts[j][1]; - found = true; - break; - } - } - if (!found) { - counts.push([value, 1]); - thisCount = 1; - } - maxCount = Math.max(thisCount, maxCount); - } - for (var j = 0; j < counts.length; j++) { - if (counts[j][1] === maxCount) { - modes.push(counts[j][0]); - } - } - return modes; -} -`); - list = JavaScript.valueToCode(block, 'LIST', - JavaScript.ORDER_NONE) || '[]'; - code = functionName + '(' + list + ')'; - break; - } - case 'STD_DEV': { - const functionName = JavaScript.provideFunction_('mathStandardDeviation', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(numbers) { - var n = numbers.length; - if (!n) return null; - var mean = numbers.reduce(function(x, y) {return x + y;}) / n; - var variance = 0; - for (var j = 0; j < n; j++) { - variance += Math.pow(numbers[j] - mean, 2); - } - variance = variance / n; - return Math.sqrt(variance); -} -`); - list = JavaScript.valueToCode(block, 'LIST', - JavaScript.ORDER_NONE) || '[]'; - code = functionName + '(' + list + ')'; - break; - } - case 'RANDOM': { - const functionName = JavaScript.provideFunction_('mathRandomList', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(list) { - var x = Math.floor(Math.random() * list.length); - return list[x]; -} -`); - list = JavaScript.valueToCode(block, 'LIST', - JavaScript.ORDER_NONE) || '[]'; - code = functionName + '(' + list + ')'; - break; - } - default: - throw Error('Unknown operator: ' + func); - } - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['math_modulo'] = function(block) { - // Remainder computation. - const argument0 = JavaScript.valueToCode(block, 'DIVIDEND', - JavaScript.ORDER_MODULUS) || '0'; - const argument1 = JavaScript.valueToCode(block, 'DIVISOR', - JavaScript.ORDER_MODULUS) || '0'; - const code = argument0 + ' % ' + argument1; - return [code, JavaScript.ORDER_MODULUS]; -}; - -JavaScript['math_constrain'] = function(block) { - // Constrain a number between two limits. - const argument0 = JavaScript.valueToCode(block, 'VALUE', - JavaScript.ORDER_NONE) || '0'; - const argument1 = JavaScript.valueToCode(block, 'LOW', - JavaScript.ORDER_NONE) || '0'; - const argument2 = JavaScript.valueToCode(block, 'HIGH', - JavaScript.ORDER_NONE) || 'Infinity'; - const code = 'Math.min(Math.max(' + argument0 + ', ' + argument1 + '), ' + - argument2 + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['math_random_int'] = function(block) { - // Random integer between [X] and [Y]. - const argument0 = JavaScript.valueToCode(block, 'FROM', - JavaScript.ORDER_NONE) || '0'; - const argument1 = JavaScript.valueToCode(block, 'TO', - JavaScript.ORDER_NONE) || '0'; - const functionName = JavaScript.provideFunction_('mathRandomInt', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(a, b) { - if (a > b) { - // Swap a and b to ensure a is smaller. - var c = a; - a = b; - b = c; - } - return Math.floor(Math.random() * (b - a + 1) + a); -} -`); - const code = functionName + '(' + argument0 + ', ' + argument1 + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['math_random_float'] = function(block) { - // Random fraction between 0 and 1. - return ['Math.random()', JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['math_atan2'] = function(block) { - // Arctangent of point (X, Y) in degrees from -180 to 180. - const argument0 = JavaScript.valueToCode(block, 'X', - JavaScript.ORDER_NONE) || '0'; - const argument1 = JavaScript.valueToCode(block, 'Y', - JavaScript.ORDER_NONE) || '0'; - return ['Math.atan2(' + argument1 + ', ' + argument0 + ') / Math.PI * 180', - JavaScript.ORDER_DIVISION]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating JavaScript for math blocks. + * @suppress {missingRequire} + */ +'use strict'; + +goog.module('Blockly.JavaScript.math'); + +const JavaScript = goog.require('Blockly.JavaScript'); +const {NameType} = goog.require('Blockly.Names'); + + +JavaScript['math_number'] = function(block) { + // Numeric value. + const code = Number(block.getFieldValue('NUM')); + const order = code >= 0 ? JavaScript.ORDER_ATOMIC : + JavaScript.ORDER_UNARY_NEGATION; + return [code, order]; +}; + +JavaScript['math_arithmetic'] = function(block) { + // Basic arithmetic operators, and power. + const OPERATORS = { + 'ADD': [' + ', JavaScript.ORDER_ADDITION], + 'MINUS': [' - ', JavaScript.ORDER_SUBTRACTION], + 'MULTIPLY': [' * ', JavaScript.ORDER_MULTIPLICATION], + 'DIVIDE': [' / ', JavaScript.ORDER_DIVISION], + 'POWER': [null, JavaScript.ORDER_NONE], // Handle power separately. + }; + const tuple = OPERATORS[block.getFieldValue('OP')]; + const operator = tuple[0]; + const order = tuple[1]; + const argument0 = JavaScript.valueToCode(block, 'A', order) || '0'; + const argument1 = JavaScript.valueToCode(block, 'B', order) || '0'; + let code; + // Power in JavaScript requires a special case since it has no operator. + if (!operator) { + code = 'Math.pow(' + argument0 + ', ' + argument1 + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } + code = argument0 + operator + argument1; + return [code, order]; +}; + +JavaScript['math_single'] = function(block) { + // Math operators with single operand. + const operator = block.getFieldValue('OP'); + let code; + let arg; + if (operator === 'NEG') { + // Negation is a special case given its different operator precedence. + arg = JavaScript.valueToCode(block, 'NUM', + JavaScript.ORDER_UNARY_NEGATION) || '0'; + if (arg[0] === '-') { + // --3 is not legal in JS. + arg = ' ' + arg; + } + code = '-' + arg; + return [code, JavaScript.ORDER_UNARY_NEGATION]; + } + if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { + arg = JavaScript.valueToCode(block, 'NUM', + JavaScript.ORDER_DIVISION) || '0'; + } else { + arg = JavaScript.valueToCode(block, 'NUM', + JavaScript.ORDER_NONE) || '0'; + } + // First, handle cases which generate values that don't need parentheses + // wrapping the code. + switch (operator) { + case 'ABS': + code = 'Math.abs(' + arg + ')'; + break; + case 'ROOT': + code = 'Math.sqrt(' + arg + ')'; + break; + case 'LN': + code = 'Math.log(' + arg + ')'; + break; + case 'EXP': + code = 'Math.exp(' + arg + ')'; + break; + case 'POW10': + code = 'Math.pow(10,' + arg + ')'; + break; + case 'ROUND': + code = 'Math.round(' + arg + ')'; + break; + case 'ROUNDUP': + code = 'Math.ceil(' + arg + ')'; + break; + case 'ROUNDDOWN': + code = 'Math.floor(' + arg + ')'; + break; + case 'SIN': + code = 'Math.sin(' + arg + ' / 180 * Math.PI)'; + break; + case 'COS': + code = 'Math.cos(' + arg + ' / 180 * Math.PI)'; + break; + case 'TAN': + code = 'Math.tan(' + arg + ' / 180 * Math.PI)'; + break; + } + if (code) { + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } + // Second, handle cases which generate values that may need parentheses + // wrapping the code. + switch (operator) { + case 'LOG10': + code = 'Math.log(' + arg + ') / Math.log(10)'; + break; + case 'ASIN': + code = 'Math.asin(' + arg + ') / Math.PI * 180'; + break; + case 'ACOS': + code = 'Math.acos(' + arg + ') / Math.PI * 180'; + break; + case 'ATAN': + code = 'Math.atan(' + arg + ') / Math.PI * 180'; + break; + default: + throw Error('Unknown math operator: ' + operator); + } + return [code, JavaScript.ORDER_DIVISION]; +}; + +JavaScript['math_constant'] = function(block) { + // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. + const CONSTANTS = { + 'PI': ['Math.PI', JavaScript.ORDER_MEMBER], + 'E': ['Math.E', JavaScript.ORDER_MEMBER], + 'GOLDEN_RATIO': ['(1 + Math.sqrt(5)) / 2', JavaScript.ORDER_DIVISION], + 'SQRT2': ['Math.SQRT2', JavaScript.ORDER_MEMBER], + 'SQRT1_2': ['Math.SQRT1_2', JavaScript.ORDER_MEMBER], + 'INFINITY': ['Infinity', JavaScript.ORDER_ATOMIC], + }; + return CONSTANTS[block.getFieldValue('CONSTANT')]; +}; + +JavaScript['math_number_property'] = function(block) { + // Check if a number is even, odd, prime, whole, positive, or negative + // or if it is divisible by certain number. Returns true or false. + const PROPERTIES = { + 'EVEN': [' % 2 === 0', JavaScript.ORDER_MODULUS, JavaScript.ORDER_EQUALITY], + 'ODD': [' % 2 === 1', JavaScript.ORDER_MODULUS, JavaScript.ORDER_EQUALITY], + 'WHOLE': [' % 1 === 0', JavaScript.ORDER_MODULUS, + JavaScript.ORDER_EQUALITY], + 'POSITIVE': [' > 0', JavaScript.ORDER_RELATIONAL, + JavaScript.ORDER_RELATIONAL], + 'NEGATIVE': [' < 0', JavaScript.ORDER_RELATIONAL, + JavaScript.ORDER_RELATIONAL], + 'DIVISIBLE_BY': [null, JavaScript.ORDER_MODULUS, JavaScript.ORDER_EQUALITY], + 'PRIME': [null, JavaScript.ORDER_NONE, JavaScript.ORDER_FUNCTION_CALL], + }; + const dropdownProperty = block.getFieldValue('PROPERTY'); + const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; + const numberToCheck = JavaScript.valueToCode(block, 'NUMBER_TO_CHECK', + inputOrder) || '0'; + let code; + if (dropdownProperty === 'PRIME') { + // Prime is a special case as it is not a one-liner test. + const functionName = JavaScript.provideFunction_('mathIsPrime', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(n) { + // https://en.wikipedia.org/wiki/Primality_test#Naive_methods + if (n == 2 || n == 3) { + return true; + } + // False if n is NaN, negative, is 1, or not whole. + // And false if n is divisible by 2 or 3. + if (isNaN(n) || n <= 1 || n % 1 !== 0 || n % 2 === 0 || n % 3 === 0) { + return false; + } + // Check all the numbers of form 6k +/- 1, up to sqrt(n). + for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) { + if (n % (x - 1) === 0 || n % (x + 1) === 0) { + return false; + } + } + return true; +} +`); + code = functionName + '(' + numberToCheck + ')'; + } else if (dropdownProperty === 'DIVISIBLE_BY') { + const divisor = JavaScript.valueToCode(block, 'DIVISOR', + JavaScript.ORDER_MODULUS) || '0'; + code = numberToCheck + ' % ' + divisor + ' === 0'; + } else { + code = numberToCheck + suffix; + } + return [code, outputOrder]; +}; + +JavaScript['math_change'] = function(block) { + // Add to a variable in place. + const argument0 = JavaScript.valueToCode(block, 'DELTA', + JavaScript.ORDER_ADDITION) || '0'; + const varName = JavaScript.nameDB_.getName( + block.getFieldValue('VAR'), NameType.VARIABLE); + return varName + ' = (typeof ' + varName + ' === \'number\' ? ' + varName + + ' : 0) + ' + argument0 + ';\n'; +}; + +// Rounding functions have a single operand. +JavaScript['math_round'] = JavaScript['math_single']; +// Trigonometry functions have a single operand. +JavaScript['math_trig'] = JavaScript['math_single']; + +JavaScript['math_on_list'] = function(block) { + // Math functions for lists. + const func = block.getFieldValue('OP'); + let list; + let code; + switch (func) { + case 'SUM': + list = JavaScript.valueToCode(block, 'LIST', + JavaScript.ORDER_MEMBER) || '[]'; + code = list + '.reduce(function(x, y) {return x + y;})'; + break; + case 'MIN': + list = JavaScript.valueToCode(block, 'LIST', + JavaScript.ORDER_NONE) || '[]'; + code = 'Math.min.apply(null, ' + list + ')'; + break; + case 'MAX': + list = JavaScript.valueToCode(block, 'LIST', + JavaScript.ORDER_NONE) || '[]'; + code = 'Math.max.apply(null, ' + list + ')'; + break; + case 'AVERAGE': { + // mathMean([null,null,1,3]) === 2.0. + const functionName = JavaScript.provideFunction_('mathMean', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(myList) { + return myList.reduce(function(x, y) {return x + y;}) / myList.length; +} +`); + list = JavaScript.valueToCode(block, 'LIST', + JavaScript.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + } + case 'MEDIAN': { + // mathMedian([null,null,1,3]) === 2.0. + const functionName = JavaScript.provideFunction_('mathMedian', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(myList) { + var localList = myList.filter(function (x) {return typeof x === \'number\';}); + if (!localList.length) return null; + localList.sort(function(a, b) {return b - a;}); + if (localList.length % 2 === 0) { + return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2; + } else { + return localList[(localList.length - 1) / 2]; + } +} +`); + list = JavaScript.valueToCode(block, 'LIST', + JavaScript.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + } + case 'MODE': { + // As a list of numbers can contain more than one mode, + // the returned result is provided as an array. + // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]. + const functionName = JavaScript.provideFunction_('mathModes', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(values) { + var modes = []; + var counts = []; + var maxCount = 0; + for (var i = 0; i < values.length; i++) { + var value = values[i]; + var found = false; + var thisCount; + for (var j = 0; j < counts.length; j++) { + if (counts[j][0] === value) { + thisCount = ++counts[j][1]; + found = true; + break; + } + } + if (!found) { + counts.push([value, 1]); + thisCount = 1; + } + maxCount = Math.max(thisCount, maxCount); + } + for (var j = 0; j < counts.length; j++) { + if (counts[j][1] === maxCount) { + modes.push(counts[j][0]); + } + } + return modes; +} +`); + list = JavaScript.valueToCode(block, 'LIST', + JavaScript.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + } + case 'STD_DEV': { + const functionName = JavaScript.provideFunction_('mathStandardDeviation', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(numbers) { + var n = numbers.length; + if (!n) return null; + var mean = numbers.reduce(function(x, y) {return x + y;}) / n; + var variance = 0; + for (var j = 0; j < n; j++) { + variance += Math.pow(numbers[j] - mean, 2); + } + variance = variance / n; + return Math.sqrt(variance); +} +`); + list = JavaScript.valueToCode(block, 'LIST', + JavaScript.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + } + case 'RANDOM': { + const functionName = JavaScript.provideFunction_('mathRandomList', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(list) { + var x = Math.floor(Math.random() * list.length); + return list[x]; +} +`); + list = JavaScript.valueToCode(block, 'LIST', + JavaScript.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + } + default: + throw Error('Unknown operator: ' + func); + } + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['math_modulo'] = function(block) { + // Remainder computation. + const argument0 = JavaScript.valueToCode(block, 'DIVIDEND', + JavaScript.ORDER_MODULUS) || '0'; + const argument1 = JavaScript.valueToCode(block, 'DIVISOR', + JavaScript.ORDER_MODULUS) || '0'; + const code = argument0 + ' % ' + argument1; + return [code, JavaScript.ORDER_MODULUS]; +}; + +JavaScript['math_constrain'] = function(block) { + // Constrain a number between two limits. + const argument0 = JavaScript.valueToCode(block, 'VALUE', + JavaScript.ORDER_NONE) || '0'; + const argument1 = JavaScript.valueToCode(block, 'LOW', + JavaScript.ORDER_NONE) || '0'; + const argument2 = JavaScript.valueToCode(block, 'HIGH', + JavaScript.ORDER_NONE) || 'Infinity'; + const code = 'Math.min(Math.max(' + argument0 + ', ' + argument1 + '), ' + + argument2 + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['math_random_int'] = function(block) { + // Random integer between [X] and [Y]. + const argument0 = JavaScript.valueToCode(block, 'FROM', + JavaScript.ORDER_NONE) || '0'; + const argument1 = JavaScript.valueToCode(block, 'TO', + JavaScript.ORDER_NONE) || '0'; + const functionName = JavaScript.provideFunction_('mathRandomInt', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(a, b) { + if (a > b) { + // Swap a and b to ensure a is smaller. + var c = a; + a = b; + b = c; + } + return Math.floor(Math.random() * (b - a + 1) + a); +} +`); + const code = functionName + '(' + argument0 + ', ' + argument1 + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['math_random_float'] = function(block) { + // Random fraction between 0 and 1. + return ['Math.random()', JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['math_atan2'] = function(block) { + // Arctangent of point (X, Y) in degrees from -180 to 180. + const argument0 = JavaScript.valueToCode(block, 'X', + JavaScript.ORDER_NONE) || '0'; + const argument1 = JavaScript.valueToCode(block, 'Y', + JavaScript.ORDER_NONE) || '0'; + return ['Math.atan2(' + argument1 + ', ' + argument0 + ') / Math.PI * 180', + JavaScript.ORDER_DIVISION]; +}; diff --git a/generators/javascript/procedures.js b/generators/javascript/procedures.js index 214e6e196a1..d34f7c4514b 100644 --- a/generators/javascript/procedures.js +++ b/generators/javascript/procedures.js @@ -1,110 +1,110 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating JavaScript for procedure blocks. - */ -'use strict'; - -goog.module('Blockly.JavaScript.procedures'); - -const JavaScript = goog.require('Blockly.JavaScript'); -const {NameType} = goog.require('Blockly.Names'); - - -JavaScript['procedures_defreturn'] = function(block) { - // Define a procedure with a return value. - const funcName = JavaScript.nameDB_.getName( - block.getFieldValue('NAME'), NameType.PROCEDURE); - let xfix1 = ''; - if (JavaScript.STATEMENT_PREFIX) { - xfix1 += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, block); - } - if (JavaScript.STATEMENT_SUFFIX) { - xfix1 += JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block); - } - if (xfix1) { - xfix1 = JavaScript.prefixLines(xfix1, JavaScript.INDENT); - } - let loopTrap = ''; - if (JavaScript.INFINITE_LOOP_TRAP) { - loopTrap = JavaScript.prefixLines( - JavaScript.injectId(JavaScript.INFINITE_LOOP_TRAP, block), - JavaScript.INDENT); - } - const branch = JavaScript.statementToCode(block, 'STACK'); - let returnValue = - JavaScript.valueToCode(block, 'RETURN', JavaScript.ORDER_NONE) || ''; - let xfix2 = ''; - if (branch && returnValue) { - // After executing the function body, revisit this block for the return. - xfix2 = xfix1; - } - if (returnValue) { - returnValue = JavaScript.INDENT + 'return ' + returnValue + ';\n'; - } - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = JavaScript.nameDB_.getName(variables[i], NameType.VARIABLE); - } - let code = 'function ' + funcName + '(' + args.join(', ') + ') {\n' + xfix1 + - loopTrap + branch + xfix2 + returnValue + '}'; - code = JavaScript.scrub_(block, code); - // Add % so as not to collide with helper functions in definitions list. - JavaScript.definitions_['%' + funcName] = code; - return null; -}; - -// Defining a procedure without a return value uses the same generator as -// a procedure with a return value. -JavaScript['procedures_defnoreturn'] = JavaScript['procedures_defreturn']; - -JavaScript['procedures_callreturn'] = function(block) { - // Call a procedure with a return value. - const funcName = JavaScript.nameDB_.getName( - block.getFieldValue('NAME'), NameType.PROCEDURE); - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = JavaScript.valueToCode(block, 'ARG' + i, JavaScript.ORDER_NONE) || - 'null'; - } - const code = funcName + '(' + args.join(', ') + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['procedures_callnoreturn'] = function(block) { - // Call a procedure with no return value. - // Generated code is for a function call as a statement is the same as a - // function call as a value, with the addition of line ending. - const tuple = JavaScript['procedures_callreturn'](block); - return tuple[0] + ';\n'; -}; - -JavaScript['procedures_ifreturn'] = function(block) { - // Conditionally return value from a procedure. - const condition = - JavaScript.valueToCode(block, 'CONDITION', JavaScript.ORDER_NONE) || - 'false'; - let code = 'if (' + condition + ') {\n'; - if (JavaScript.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the return is triggered. - code += JavaScript.prefixLines( - JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block), - JavaScript.INDENT); - } - if (block.hasReturnValue_) { - const value = - JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_NONE) || 'null'; - code += JavaScript.INDENT + 'return ' + value + ';\n'; - } else { - code += JavaScript.INDENT + 'return;\n'; - } - code += '}\n'; - return code; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating JavaScript for procedure blocks. + */ +'use strict'; + +goog.module('Blockly.JavaScript.procedures'); + +const JavaScript = goog.require('Blockly.JavaScript'); +const {NameType} = goog.require('Blockly.Names'); + + +JavaScript['procedures_defreturn'] = function(block) { + // Define a procedure with a return value. + const funcName = JavaScript.nameDB_.getName( + block.getFieldValue('NAME'), NameType.PROCEDURE); + let xfix1 = ''; + if (JavaScript.STATEMENT_PREFIX) { + xfix1 += JavaScript.injectId(JavaScript.STATEMENT_PREFIX, block); + } + if (JavaScript.STATEMENT_SUFFIX) { + xfix1 += JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block); + } + if (xfix1) { + xfix1 = JavaScript.prefixLines(xfix1, JavaScript.INDENT); + } + let loopTrap = ''; + if (JavaScript.INFINITE_LOOP_TRAP) { + loopTrap = JavaScript.prefixLines( + JavaScript.injectId(JavaScript.INFINITE_LOOP_TRAP, block), + JavaScript.INDENT); + } + const branch = JavaScript.statementToCode(block, 'STACK'); + let returnValue = + JavaScript.valueToCode(block, 'RETURN', JavaScript.ORDER_NONE) || ''; + let xfix2 = ''; + if (branch && returnValue) { + // After executing the function body, revisit this block for the return. + xfix2 = xfix1; + } + if (returnValue) { + returnValue = JavaScript.INDENT + 'return ' + returnValue + ';\n'; + } + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i] = JavaScript.nameDB_.getName(variables[i], NameType.VARIABLE); + } + let code = 'function ' + funcName + '(' + args.join(', ') + ') {\n' + xfix1 + + loopTrap + branch + xfix2 + returnValue + '}'; + code = JavaScript.scrub_(block, code); + // Add % so as not to collide with helper functions in definitions list. + JavaScript.definitions_['%' + funcName] = code; + return null; +}; + +// Defining a procedure without a return value uses the same generator as +// a procedure with a return value. +JavaScript['procedures_defnoreturn'] = JavaScript['procedures_defreturn']; + +JavaScript['procedures_callreturn'] = function(block) { + // Call a procedure with a return value. + const funcName = JavaScript.nameDB_.getName( + block.getFieldValue('NAME'), NameType.PROCEDURE); + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i] = JavaScript.valueToCode(block, 'ARG' + i, JavaScript.ORDER_NONE) || + 'null'; + } + const code = funcName + '(' + args.join(', ') + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['procedures_callnoreturn'] = function(block) { + // Call a procedure with no return value. + // Generated code is for a function call as a statement is the same as a + // function call as a value, with the addition of line ending. + const tuple = JavaScript['procedures_callreturn'](block); + return tuple[0] + ';\n'; +}; + +JavaScript['procedures_ifreturn'] = function(block) { + // Conditionally return value from a procedure. + const condition = + JavaScript.valueToCode(block, 'CONDITION', JavaScript.ORDER_NONE) || + 'false'; + let code = 'if (' + condition + ') {\n'; + if (JavaScript.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the return is triggered. + code += JavaScript.prefixLines( + JavaScript.injectId(JavaScript.STATEMENT_SUFFIX, block), + JavaScript.INDENT); + } + if (block.hasReturnValue_) { + const value = + JavaScript.valueToCode(block, 'VALUE', JavaScript.ORDER_NONE) || 'null'; + code += JavaScript.INDENT + 'return ' + value + ';\n'; + } else { + code += JavaScript.INDENT + 'return;\n'; + } + code += '}\n'; + return code; +}; diff --git a/generators/javascript/text.js b/generators/javascript/text.js index 9c60bfa6c16..adab13a1cb0 100644 --- a/generators/javascript/text.js +++ b/generators/javascript/text.js @@ -1,371 +1,371 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating JavaScript for text blocks. - */ -'use strict'; - -goog.module('Blockly.JavaScript.texts'); - -const JavaScript = goog.require('Blockly.JavaScript'); -const {NameType} = goog.require('Blockly.Names'); - - -/** - * Regular expression to detect a single-quoted string literal. - */ -const strRegExp = /^\s*'([^']|\\')*'\s*$/; - -/** - * Enclose the provided value in 'String(...)' function. - * Leave string literals alone. - * @param {string} value Code evaluating to a value. - * @return {Array} Array containing code evaluating to a string - * and the order of the returned code.[string, number] - */ -const forceString = function(value) { - if (strRegExp.test(value)) { - return [value, JavaScript.ORDER_ATOMIC]; - } - return ['String(' + value + ')', JavaScript.ORDER_FUNCTION_CALL]; -}; - -/** - * Returns an expression calculating the index into a string. - * @param {string} stringName Name of the string, used to calculate length. - * @param {string} where The method of indexing, selected by dropdown in Blockly - * @param {string=} opt_at The optional offset when indexing from start/end. - * @return {string|undefined} Index expression. - */ -const getSubstringIndex = function(stringName, where, opt_at) { - if (where === 'FIRST') { - return '0'; - } else if (where === 'FROM_END') { - return stringName + '.length - 1 - ' + opt_at; - } else if (where === 'LAST') { - return stringName + '.length - 1'; - } else { - return opt_at; - } -}; - -JavaScript['text'] = function(block) { - // Text value. - const code = JavaScript.quote_(block.getFieldValue('TEXT')); - return [code, JavaScript.ORDER_ATOMIC]; -}; - -JavaScript['text_multiline'] = function(block) { - // Text value. - const code = JavaScript.multiline_quote_(block.getFieldValue('TEXT')); - const order = code.indexOf('+') !== -1 ? JavaScript.ORDER_ADDITION : - JavaScript.ORDER_ATOMIC; - return [code, order]; -}; - -JavaScript['text_join'] = function(block) { - // Create a string made up of any number of elements of any type. - switch (block.itemCount_) { - case 0: - return ["''", JavaScript.ORDER_ATOMIC]; - case 1: { - const element = JavaScript.valueToCode(block, 'ADD0', - JavaScript.ORDER_NONE) || "''"; - const codeAndOrder = forceString(element); - return codeAndOrder; - } - case 2: { - const element0 = JavaScript.valueToCode(block, 'ADD0', - JavaScript.ORDER_NONE) || "''"; - const element1 = JavaScript.valueToCode(block, 'ADD1', - JavaScript.ORDER_NONE) || "''"; - const code = forceString(element0)[0] + - ' + ' + forceString(element1)[0]; - return [code, JavaScript.ORDER_ADDITION]; - } - default: { - const elements = new Array(block.itemCount_); - for (let i = 0; i < block.itemCount_; i++) { - elements[i] = JavaScript.valueToCode(block, 'ADD' + i, - JavaScript.ORDER_NONE) || "''"; - } - const code = '[' + elements.join(',') + '].join(\'\')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } - } -}; - -JavaScript['text_append'] = function(block) { - // Append to a variable in place. - const varName = JavaScript.nameDB_.getName( - block.getFieldValue('VAR'), NameType.VARIABLE); - const value = JavaScript.valueToCode(block, 'TEXT', - JavaScript.ORDER_NONE) || "''"; - const code = varName + ' += ' + - forceString(value)[0] + ';\n'; - return code; -}; - -JavaScript['text_length'] = function(block) { - // String or array length. - const text = JavaScript.valueToCode(block, 'VALUE', - JavaScript.ORDER_MEMBER) || "''"; - return [text + '.length', JavaScript.ORDER_MEMBER]; -}; - -JavaScript['text_isEmpty'] = function(block) { - // Is the string null or array empty? - const text = JavaScript.valueToCode(block, 'VALUE', - JavaScript.ORDER_MEMBER) || "''"; - return ['!' + text + '.length', JavaScript.ORDER_LOGICAL_NOT]; -}; - -JavaScript['text_indexOf'] = function(block) { - // Search the text for a substring. - const operator = block.getFieldValue('END') === 'FIRST' ? - 'indexOf' : 'lastIndexOf'; - const substring = JavaScript.valueToCode(block, 'FIND', - JavaScript.ORDER_NONE) || "''"; - const text = JavaScript.valueToCode(block, 'VALUE', - JavaScript.ORDER_MEMBER) || "''"; - const code = text + '.' + operator + '(' + substring + ')'; - // Adjust index if using one-based indices. - if (block.workspace.options.oneBasedIndex) { - return [code + ' + 1', JavaScript.ORDER_ADDITION]; - } - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['text_charAt'] = function(block) { - // Get letter at index. - // Note: Until January 2013 this block did not have the WHERE input. - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const textOrder = (where === 'RANDOM') ? JavaScript.ORDER_NONE : - JavaScript.ORDER_MEMBER; - const text = JavaScript.valueToCode(block, 'VALUE', textOrder) || "''"; - switch (where) { - case 'FIRST': { - const code = text + '.charAt(0)'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } - case 'LAST': { - const code = text + '.slice(-1)'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } - case 'FROM_START': { - const at = JavaScript.getAdjusted(block, 'AT'); - // Adjust index if using one-based indices. - const code = text + '.charAt(' + at + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } - case 'FROM_END': { - const at = JavaScript.getAdjusted(block, 'AT', 1, true); - const code = text + '.slice(' + at + ').charAt(0)'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } - case 'RANDOM': { - const functionName = JavaScript.provideFunction_('textRandomLetter', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(text) { - var x = Math.floor(Math.random() * text.length); - return text[x]; -} -`); - const code = functionName + '(' + text + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; - } - } - throw Error('Unhandled option (text_charAt).'); -}; - -JavaScript['text_getSubstring'] = function(block) { - // Get substring. - const where1 = block.getFieldValue('WHERE1'); - const where2 = block.getFieldValue('WHERE2'); - const requiresLengthCall = (where1 !== 'FROM_END' && where1 !== 'LAST' && - where2 !== 'FROM_END' && where2 !== 'LAST'); - const textOrder = requiresLengthCall ? JavaScript.ORDER_MEMBER : - JavaScript.ORDER_NONE; - const text = JavaScript.valueToCode(block, 'STRING', textOrder) || "''"; - let code; - if (where1 === 'FIRST' && where2 === 'LAST') { - code = text; - return [code, JavaScript.ORDER_NONE]; - } else if (text.match(/^'?\w+'?$/) || requiresLengthCall) { - // If the text is a variable or literal or doesn't require a call for - // length, don't generate a helper function. - let at1; - switch (where1) { - case 'FROM_START': - at1 = JavaScript.getAdjusted(block, 'AT1'); - break; - case 'FROM_END': - at1 = JavaScript.getAdjusted(block, 'AT1', 1, false, - JavaScript.ORDER_SUBTRACTION); - at1 = text + '.length - ' + at1; - break; - case 'FIRST': - at1 = '0'; - break; - default: - throw Error('Unhandled option (text_getSubstring).'); - } - let at2; - switch (where2) { - case 'FROM_START': - at2 = JavaScript.getAdjusted(block, 'AT2', 1); - break; - case 'FROM_END': - at2 = JavaScript.getAdjusted(block, 'AT2', 0, false, - JavaScript.ORDER_SUBTRACTION); - at2 = text + '.length - ' + at2; - break; - case 'LAST': - at2 = text + '.length'; - break; - default: - throw Error('Unhandled option (text_getSubstring).'); - } - code = text + '.slice(' + at1 + ', ' + at2 + ')'; - } else { - const at1 = JavaScript.getAdjusted(block, 'AT1'); - const at2 = JavaScript.getAdjusted(block, 'AT2'); - const wherePascalCase = {'FIRST': 'First', 'LAST': 'Last', - 'FROM_START': 'FromStart', 'FROM_END': 'FromEnd'}; - // The value for 'FROM_END' and'FROM_START' depends on `at` so - // we add it as a parameter. - const at1Param = - (where1 === 'FROM_END' || where1 === 'FROM_START') ? ', at1' : ''; - const at2Param = - (where2 === 'FROM_END' || where2 === 'FROM_START') ? ', at2' : ''; - const functionName = JavaScript.provideFunction_( - 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(sequence${at1Param}${at2Param}) { - var start = ${getSubstringIndex('sequence', where1, 'at1')}; - var end = ${getSubstringIndex('sequence', where2, 'at2')} + 1; - return sequence.slice(start, end); -} -`); - code = functionName + '(' + text + - // The value for 'FROM_END' and 'FROM_START' depends on `at` so we - // pass it. - ((where1 === 'FROM_END' || where1 === 'FROM_START') ? ', ' + at1 : '') + - ((where2 === 'FROM_END' || where2 === 'FROM_START') ? ', ' + at2 : '') + - ')'; - } - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['text_changeCase'] = function(block) { - // Change capitalization. - const OPERATORS = { - 'UPPERCASE': '.toUpperCase()', - 'LOWERCASE': '.toLowerCase()', - 'TITLECASE': null, - }; - const operator = OPERATORS[block.getFieldValue('CASE')]; - const textOrder = operator ? JavaScript.ORDER_MEMBER : JavaScript.ORDER_NONE; - const text = JavaScript.valueToCode(block, 'TEXT', textOrder) || "''"; - let code; - if (operator) { - // Upper and lower case are functions built into JavaScript. - code = text + operator; - } else { - // Title case is not a native JavaScript function. Define one. - const functionName = JavaScript.provideFunction_('textToTitleCase', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(str) { - return str.replace(/\\S+/g, - function(txt) {return txt[0].toUpperCase() + txt.substring(1).toLowerCase();}); -} -`); - code = functionName + '(' + text + ')'; - } - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['text_trim'] = function(block) { - // Trim spaces. - const OPERATORS = { - 'LEFT': ".replace(/^[\\s\\xa0]+/, '')", - 'RIGHT': ".replace(/[\\s\\xa0]+$/, '')", - 'BOTH': '.trim()', - }; - const operator = OPERATORS[block.getFieldValue('MODE')]; - const text = JavaScript.valueToCode(block, 'TEXT', - JavaScript.ORDER_MEMBER) || "''"; - return [text + operator, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['text_print'] = function(block) { - // Print statement. - const msg = JavaScript.valueToCode(block, 'TEXT', - JavaScript.ORDER_NONE) || "''"; - return 'window.alert(' + msg + ');\n'; -}; - -JavaScript['text_prompt_ext'] = function(block) { - // Prompt function. - let msg; - if (block.getField('TEXT')) { - // Internal message. - msg = JavaScript.quote_(block.getFieldValue('TEXT')); - } else { - // External message. - msg = JavaScript.valueToCode(block, 'TEXT', JavaScript.ORDER_NONE) || "''"; - } - let code = 'window.prompt(' + msg + ')'; - const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; - if (toNumber) { - code = 'Number(' + code + ')'; - } - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['text_prompt'] = JavaScript['text_prompt_ext']; - -JavaScript['text_count'] = function(block) { - const text = JavaScript.valueToCode(block, 'TEXT', - JavaScript.ORDER_NONE) || "''"; - const sub = JavaScript.valueToCode(block, 'SUB', - JavaScript.ORDER_NONE) || "''"; - const functionName = JavaScript.provideFunction_('textCount', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle) { - if (needle.length === 0) { - return haystack.length + 1; - } else { - return haystack.split(needle).length - 1; - } -} -`); - const code = functionName + '(' + text + ', ' + sub + ')'; - return [code, JavaScript.ORDER_FUNCTION_CALL]; -}; - -JavaScript['text_replace'] = function(block) { - const text = JavaScript.valueToCode(block, 'TEXT', - JavaScript.ORDER_NONE) || "''"; - const from = JavaScript.valueToCode(block, 'FROM', - JavaScript.ORDER_NONE) || "''"; - const to = JavaScript.valueToCode(block, 'TO', JavaScript.ORDER_NONE) || "''"; - // The regex escaping code below is taken from the implementation of - // goog.string.regExpEscape. - const functionName = JavaScript.provideFunction_('textReplace', ` -function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle, replacement) { - needle = needle.replace(/([-()\\[\\]{}+?*.$\\^|,:#} Array containing code evaluating to a string + * and the order of the returned code.[string, number] + */ +const forceString = function(value) { + if (strRegExp.test(value)) { + return [value, JavaScript.ORDER_ATOMIC]; + } + return ['String(' + value + ')', JavaScript.ORDER_FUNCTION_CALL]; +}; + +/** + * Returns an expression calculating the index into a string. + * @param {string} stringName Name of the string, used to calculate length. + * @param {string} where The method of indexing, selected by dropdown in Blockly + * @param {string=} opt_at The optional offset when indexing from start/end. + * @return {string|undefined} Index expression. + */ +const getSubstringIndex = function(stringName, where, opt_at) { + if (where === 'FIRST') { + return '0'; + } else if (where === 'FROM_END') { + return stringName + '.length - 1 - ' + opt_at; + } else if (where === 'LAST') { + return stringName + '.length - 1'; + } else { + return opt_at; + } +}; + +JavaScript['text'] = function(block) { + // Text value. + const code = JavaScript.quote_(block.getFieldValue('TEXT')); + return [code, JavaScript.ORDER_ATOMIC]; +}; + +JavaScript['text_multiline'] = function(block) { + // Text value. + const code = JavaScript.multiline_quote_(block.getFieldValue('TEXT')); + const order = code.indexOf('+') !== -1 ? JavaScript.ORDER_ADDITION : + JavaScript.ORDER_ATOMIC; + return [code, order]; +}; + +JavaScript['text_join'] = function(block) { + // Create a string made up of any number of elements of any type. + switch (block.itemCount_) { + case 0: + return ["''", JavaScript.ORDER_ATOMIC]; + case 1: { + const element = JavaScript.valueToCode(block, 'ADD0', + JavaScript.ORDER_NONE) || "''"; + const codeAndOrder = forceString(element); + return codeAndOrder; + } + case 2: { + const element0 = JavaScript.valueToCode(block, 'ADD0', + JavaScript.ORDER_NONE) || "''"; + const element1 = JavaScript.valueToCode(block, 'ADD1', + JavaScript.ORDER_NONE) || "''"; + const code = forceString(element0)[0] + + ' + ' + forceString(element1)[0]; + return [code, JavaScript.ORDER_ADDITION]; + } + default: { + const elements = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { + elements[i] = JavaScript.valueToCode(block, 'ADD' + i, + JavaScript.ORDER_NONE) || "''"; + } + const code = '[' + elements.join(',') + '].join(\'\')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } + } +}; + +JavaScript['text_append'] = function(block) { + // Append to a variable in place. + const varName = JavaScript.nameDB_.getName( + block.getFieldValue('VAR'), NameType.VARIABLE); + const value = JavaScript.valueToCode(block, 'TEXT', + JavaScript.ORDER_NONE) || "''"; + const code = varName + ' += ' + + forceString(value)[0] + ';\n'; + return code; +}; + +JavaScript['text_length'] = function(block) { + // String or array length. + const text = JavaScript.valueToCode(block, 'VALUE', + JavaScript.ORDER_MEMBER) || "''"; + return [text + '.length', JavaScript.ORDER_MEMBER]; +}; + +JavaScript['text_isEmpty'] = function(block) { + // Is the string null or array empty? + const text = JavaScript.valueToCode(block, 'VALUE', + JavaScript.ORDER_MEMBER) || "''"; + return ['!' + text + '.length', JavaScript.ORDER_LOGICAL_NOT]; +}; + +JavaScript['text_indexOf'] = function(block) { + // Search the text for a substring. + const operator = block.getFieldValue('END') === 'FIRST' ? + 'indexOf' : 'lastIndexOf'; + const substring = JavaScript.valueToCode(block, 'FIND', + JavaScript.ORDER_NONE) || "''"; + const text = JavaScript.valueToCode(block, 'VALUE', + JavaScript.ORDER_MEMBER) || "''"; + const code = text + '.' + operator + '(' + substring + ')'; + // Adjust index if using one-based indices. + if (block.workspace.options.oneBasedIndex) { + return [code + ' + 1', JavaScript.ORDER_ADDITION]; + } + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['text_charAt'] = function(block) { + // Get letter at index. + // Note: Until January 2013 this block did not have the WHERE input. + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const textOrder = (where === 'RANDOM') ? JavaScript.ORDER_NONE : + JavaScript.ORDER_MEMBER; + const text = JavaScript.valueToCode(block, 'VALUE', textOrder) || "''"; + switch (where) { + case 'FIRST': { + const code = text + '.charAt(0)'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } + case 'LAST': { + const code = text + '.slice(-1)'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } + case 'FROM_START': { + const at = JavaScript.getAdjusted(block, 'AT'); + // Adjust index if using one-based indices. + const code = text + '.charAt(' + at + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } + case 'FROM_END': { + const at = JavaScript.getAdjusted(block, 'AT', 1, true); + const code = text + '.slice(' + at + ').charAt(0)'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } + case 'RANDOM': { + const functionName = JavaScript.provideFunction_('textRandomLetter', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(text) { + var x = Math.floor(Math.random() * text.length); + return text[x]; +} +`); + const code = functionName + '(' + text + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; + } + } + throw Error('Unhandled option (text_charAt).'); +}; + +JavaScript['text_getSubstring'] = function(block) { + // Get substring. + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + const requiresLengthCall = (where1 !== 'FROM_END' && where1 !== 'LAST' && + where2 !== 'FROM_END' && where2 !== 'LAST'); + const textOrder = requiresLengthCall ? JavaScript.ORDER_MEMBER : + JavaScript.ORDER_NONE; + const text = JavaScript.valueToCode(block, 'STRING', textOrder) || "''"; + let code; + if (where1 === 'FIRST' && where2 === 'LAST') { + code = text; + return [code, JavaScript.ORDER_NONE]; + } else if (text.match(/^'?\w+'?$/) || requiresLengthCall) { + // If the text is a variable or literal or doesn't require a call for + // length, don't generate a helper function. + let at1; + switch (where1) { + case 'FROM_START': + at1 = JavaScript.getAdjusted(block, 'AT1'); + break; + case 'FROM_END': + at1 = JavaScript.getAdjusted(block, 'AT1', 1, false, + JavaScript.ORDER_SUBTRACTION); + at1 = text + '.length - ' + at1; + break; + case 'FIRST': + at1 = '0'; + break; + default: + throw Error('Unhandled option (text_getSubstring).'); + } + let at2; + switch (where2) { + case 'FROM_START': + at2 = JavaScript.getAdjusted(block, 'AT2', 1); + break; + case 'FROM_END': + at2 = JavaScript.getAdjusted(block, 'AT2', 0, false, + JavaScript.ORDER_SUBTRACTION); + at2 = text + '.length - ' + at2; + break; + case 'LAST': + at2 = text + '.length'; + break; + default: + throw Error('Unhandled option (text_getSubstring).'); + } + code = text + '.slice(' + at1 + ', ' + at2 + ')'; + } else { + const at1 = JavaScript.getAdjusted(block, 'AT1'); + const at2 = JavaScript.getAdjusted(block, 'AT2'); + const wherePascalCase = {'FIRST': 'First', 'LAST': 'Last', + 'FROM_START': 'FromStart', 'FROM_END': 'FromEnd'}; + // The value for 'FROM_END' and'FROM_START' depends on `at` so + // we add it as a parameter. + const at1Param = + (where1 === 'FROM_END' || where1 === 'FROM_START') ? ', at1' : ''; + const at2Param = + (where2 === 'FROM_END' || where2 === 'FROM_START') ? ', at2' : ''; + const functionName = JavaScript.provideFunction_( + 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2], ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(sequence${at1Param}${at2Param}) { + var start = ${getSubstringIndex('sequence', where1, 'at1')}; + var end = ${getSubstringIndex('sequence', where2, 'at2')} + 1; + return sequence.slice(start, end); +} +`); + code = functionName + '(' + text + + // The value for 'FROM_END' and 'FROM_START' depends on `at` so we + // pass it. + ((where1 === 'FROM_END' || where1 === 'FROM_START') ? ', ' + at1 : '') + + ((where2 === 'FROM_END' || where2 === 'FROM_START') ? ', ' + at2 : '') + + ')'; + } + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['text_changeCase'] = function(block) { + // Change capitalization. + const OPERATORS = { + 'UPPERCASE': '.toUpperCase()', + 'LOWERCASE': '.toLowerCase()', + 'TITLECASE': null, + }; + const operator = OPERATORS[block.getFieldValue('CASE')]; + const textOrder = operator ? JavaScript.ORDER_MEMBER : JavaScript.ORDER_NONE; + const text = JavaScript.valueToCode(block, 'TEXT', textOrder) || "''"; + let code; + if (operator) { + // Upper and lower case are functions built into JavaScript. + code = text + operator; + } else { + // Title case is not a native JavaScript function. Define one. + const functionName = JavaScript.provideFunction_('textToTitleCase', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(str) { + return str.replace(/\\S+/g, + function(txt) {return txt[0].toUpperCase() + txt.substring(1).toLowerCase();}); +} +`); + code = functionName + '(' + text + ')'; + } + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['text_trim'] = function(block) { + // Trim spaces. + const OPERATORS = { + 'LEFT': ".replace(/^[\\s\\xa0]+/, '')", + 'RIGHT': ".replace(/[\\s\\xa0]+$/, '')", + 'BOTH': '.trim()', + }; + const operator = OPERATORS[block.getFieldValue('MODE')]; + const text = JavaScript.valueToCode(block, 'TEXT', + JavaScript.ORDER_MEMBER) || "''"; + return [text + operator, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['text_print'] = function(block) { + // Print statement. + const msg = JavaScript.valueToCode(block, 'TEXT', + JavaScript.ORDER_NONE) || "''"; + return 'window.alert(' + msg + ');\n'; +}; + +JavaScript['text_prompt_ext'] = function(block) { + // Prompt function. + let msg; + if (block.getField('TEXT')) { + // Internal message. + msg = JavaScript.quote_(block.getFieldValue('TEXT')); + } else { + // External message. + msg = JavaScript.valueToCode(block, 'TEXT', JavaScript.ORDER_NONE) || "''"; + } + let code = 'window.prompt(' + msg + ')'; + const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; + if (toNumber) { + code = 'Number(' + code + ')'; + } + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['text_prompt'] = JavaScript['text_prompt_ext']; + +JavaScript['text_count'] = function(block) { + const text = JavaScript.valueToCode(block, 'TEXT', + JavaScript.ORDER_NONE) || "''"; + const sub = JavaScript.valueToCode(block, 'SUB', + JavaScript.ORDER_NONE) || "''"; + const functionName = JavaScript.provideFunction_('textCount', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle) { + if (needle.length === 0) { + return haystack.length + 1; + } else { + return haystack.split(needle).length - 1; + } +} +`); + const code = functionName + '(' + text + ', ' + sub + ')'; + return [code, JavaScript.ORDER_FUNCTION_CALL]; +}; + +JavaScript['text_replace'] = function(block) { + const text = JavaScript.valueToCode(block, 'TEXT', + JavaScript.ORDER_NONE) || "''"; + const from = JavaScript.valueToCode(block, 'FROM', + JavaScript.ORDER_NONE) || "''"; + const to = JavaScript.valueToCode(block, 'TO', JavaScript.ORDER_NONE) || "''"; + // The regex escaping code below is taken from the implementation of + // goog.string.regExpEscape. + const functionName = JavaScript.provideFunction_('textReplace', ` +function ${JavaScript.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle, replacement) { + needle = needle.replace(/([-()\\[\\]{}+?*.$\\^|,:# <= >= ~= == -Lua.ORDER_AND = 8; // and -Lua.ORDER_OR = 9; // or -Lua.ORDER_NONE = 99; - -/** - * Note: Lua is not supporting zero-indexing since the language itself is - * one-indexed, so the generator does not repoct the oneBasedIndex configuration - * option used for lists and text. - */ - -/** - * Whether the init method has been called. - * @type {?boolean} - */ -Lua.isInitialized = false; - -/** - * Initialise the database of variable names. - * @param {!Workspace} workspace Workspace to generate code from. - */ -Lua.init = function(workspace) { - // Call Blockly.Generator's init. - Object.getPrototypeOf(this).init.call(this); - - if (!this.nameDB_) { - this.nameDB_ = new Names(this.RESERVED_WORDS_); - } else { - this.nameDB_.reset(); - } - this.nameDB_.setVariableMap(workspace.getVariableMap()); - this.nameDB_.populateVariables(workspace); - this.nameDB_.populateProcedures(workspace); - - this.isInitialized = true; -}; - -/** - * Prepend the generated code with the variable definitions. - * @param {string} code Generated code. - * @return {string} Completed code. - */ -Lua.finish = function(code) { - // Convert the definitions dictionary into a list. - const definitions = objectUtils.values(this.definitions_); - // Call Blockly.Generator's finish. - code = Object.getPrototypeOf(this).finish.call(this, code); - this.isInitialized = false; - - this.nameDB_.reset(); - return definitions.join('\n\n') + '\n\n\n' + code; -}; - -/** - * Naked values are top-level blocks with outputs that aren't plugged into - * anything. In Lua, an expression is not a legal statement, so we must assign - * the value to the (conventionally ignored) _. - * http://lua-users.org/wiki/ExpressionsAsStatements - * @param {string} line Line of generated code. - * @return {string} Legal line of code. - */ -Lua.scrubNakedValue = function(line) { - return 'local _ = ' + line + '\n'; -}; - -/** - * Encode a string as a properly escaped Lua string, complete with - * quotes. - * @param {string} string Text to encode. - * @return {string} Lua string. - * @protected - */ -Lua.quote_ = function(string) { - string = string.replace(/\\/g, '\\\\') - .replace(/\n/g, '\\\n') - .replace(/'/g, '\\\''); - return '\'' + string + '\''; -}; - -/** - * Encode a string as a properly escaped multiline Lua string, complete with - * quotes. - * @param {string} string Text to encode. - * @return {string} Lua string. - * @protected - */ -Lua.multiline_quote_ = function(string) { - const lines = string.split(/\n/g).map(this.quote_); - // Join with the following, plus a newline: - // .. '\n' .. - return lines.join(' .. \'\\n\' ..\n'); -}; - -/** - * Common tasks for generating Lua from blocks. - * Handles comments for the specified block and any connected value blocks. - * Calls any statements following this block. - * @param {!Block} block The current block. - * @param {string} code The Lua code created for this block. - * @param {boolean=} opt_thisOnly True to generate code for only this statement. - * @return {string} Lua code with comments and subsequent blocks added. - * @protected - */ -Lua.scrub_ = function(block, code, opt_thisOnly) { - let commentCode = ''; - // Only collect comments for blocks that aren't inline. - if (!block.outputConnection || !block.outputConnection.targetConnection) { - // Collect comment for this block. - let comment = block.getCommentText(); - if (comment) { - comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); - commentCode += this.prefixLines(comment, '-- ') + '\n'; - } - // Collect comments for all value arguments. - // Don't collect comments for nested statements. - for (let i = 0; i < block.inputList.length; i++) { - if (block.inputList[i].type === inputTypes.VALUE) { - const childBlock = block.inputList[i].connection.targetBlock(); - if (childBlock) { - comment = this.allNestedComments(childBlock); - if (comment) { - commentCode += this.prefixLines(comment, '-- '); - } - } - } - } - } - const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); - return commentCode + code + nextCode; -}; - -exports = Lua; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Helper functions for generating Lua for blocks. + * Based on Ellen Spertus's blocky-lua project. + * @suppress {checkTypes|globalThis} + */ +'use strict'; + +goog.module('Blockly.Lua'); +goog.module.declareLegacyNamespace(); + +const objectUtils = goog.require('Blockly.utils.object'); +const stringUtils = goog.require('Blockly.utils.string'); +const {Block} = goog.requireType('Blockly.Block'); +const {Generator} = goog.require('Blockly.Generator'); +const {inputTypes} = goog.require('Blockly.inputTypes'); +const {Names} = goog.require('Blockly.Names'); +const {Workspace} = goog.requireType('Blockly.Workspace'); + + +/** + * Lua code generator. + * @type {!Generator} + */ +const Lua = new Generator('Lua'); + +/** + * List of illegal variable names. + * This is not intended to be a security feature. Blockly is 100% client-side, + * so bypassing this list is trivial. This is intended to prevent users from + * accidentally clobbering a built-in object or function. + */ +Lua.addReservedWords( + // Special character + '_,' + + // From theoriginalbit's script: + // https://github.com/espertus/blockly-lua/issues/6 + '__inext,assert,bit,colors,colours,coroutine,disk,dofile,error,fs,' + + 'fetfenv,getmetatable,gps,help,io,ipairs,keys,loadfile,loadstring,math,' + + 'native,next,os,paintutils,pairs,parallel,pcall,peripheral,print,' + + 'printError,rawequal,rawget,rawset,read,rednet,redstone,rs,select,' + + 'setfenv,setmetatable,sleep,string,table,term,textutils,tonumber,' + + 'tostring,turtle,type,unpack,vector,write,xpcall,_VERSION,__indext,' + + // Not included in the script, probably because it wasn't enabled: + 'HTTP,' + + // Keywords (http://www.lua.org/pil/1.3.html). + 'and,break,do,else,elseif,end,false,for,function,if,in,local,nil,not,or,' + + 'repeat,return,then,true,until,while,' + + // Metamethods (http://www.lua.org/manual/5.2/manual.html). + 'add,sub,mul,div,mod,pow,unm,concat,len,eq,lt,le,index,newindex,call,' + + // Basic functions (http://www.lua.org/manual/5.2/manual.html, section 6.1). + 'assert,collectgarbage,dofile,error,_G,getmetatable,inpairs,load,' + + 'loadfile,next,pairs,pcall,print,rawequal,rawget,rawlen,rawset,select,' + + 'setmetatable,tonumber,tostring,type,_VERSION,xpcall,' + + // Modules (http://www.lua.org/manual/5.2/manual.html, section 6.3). + 'require,package,string,table,math,bit32,io,file,os,debug'); + +/** + * Order of operation ENUMs. + * http://www.lua.org/manual/5.3/manual.html#3.4.8 + */ +Lua.ORDER_ATOMIC = 0; // literals +// The next level was not explicit in documentation and inferred by Ellen. +Lua.ORDER_HIGH = 1; // Function calls, tables[] +Lua.ORDER_EXPONENTIATION = 2; // ^ +Lua.ORDER_UNARY = 3; // not # - ~ +Lua.ORDER_MULTIPLICATIVE = 4; // * / % +Lua.ORDER_ADDITIVE = 5; // + - +Lua.ORDER_CONCATENATION = 6; // .. +Lua.ORDER_RELATIONAL = 7; // < > <= >= ~= == +Lua.ORDER_AND = 8; // and +Lua.ORDER_OR = 9; // or +Lua.ORDER_NONE = 99; + +/** + * Note: Lua is not supporting zero-indexing since the language itself is + * one-indexed, so the generator does not repoct the oneBasedIndex configuration + * option used for lists and text. + */ + +/** + * Whether the init method has been called. + * @type {?boolean} + */ +Lua.isInitialized = false; + +/** + * Initialise the database of variable names. + * @param {!Workspace} workspace Workspace to generate code from. + */ +Lua.init = function(workspace) { + // Call Blockly.Generator's init. + Object.getPrototypeOf(this).init.call(this); + + if (!this.nameDB_) { + this.nameDB_ = new Names(this.RESERVED_WORDS_); + } else { + this.nameDB_.reset(); + } + this.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.populateVariables(workspace); + this.nameDB_.populateProcedures(workspace); + + this.isInitialized = true; +}; + +/** + * Prepend the generated code with the variable definitions. + * @param {string} code Generated code. + * @return {string} Completed code. + */ +Lua.finish = function(code) { + // Convert the definitions dictionary into a list. + const definitions = objectUtils.values(this.definitions_); + // Call Blockly.Generator's finish. + code = Object.getPrototypeOf(this).finish.call(this, code); + this.isInitialized = false; + + this.nameDB_.reset(); + return definitions.join('\n\n') + '\n\n\n' + code; +}; + +/** + * Naked values are top-level blocks with outputs that aren't plugged into + * anything. In Lua, an expression is not a legal statement, so we must assign + * the value to the (conventionally ignored) _. + * http://lua-users.org/wiki/ExpressionsAsStatements + * @param {string} line Line of generated code. + * @return {string} Legal line of code. + */ +Lua.scrubNakedValue = function(line) { + return 'local _ = ' + line + '\n'; +}; + +/** + * Encode a string as a properly escaped Lua string, complete with + * quotes. + * @param {string} string Text to encode. + * @return {string} Lua string. + * @protected + */ +Lua.quote_ = function(string) { + string = string.replace(/\\/g, '\\\\') + .replace(/\n/g, '\\\n') + .replace(/'/g, '\\\''); + return '\'' + string + '\''; +}; + +/** + * Encode a string as a properly escaped multiline Lua string, complete with + * quotes. + * @param {string} string Text to encode. + * @return {string} Lua string. + * @protected + */ +Lua.multiline_quote_ = function(string) { + const lines = string.split(/\n/g).map(this.quote_); + // Join with the following, plus a newline: + // .. '\n' .. + return lines.join(' .. \'\\n\' ..\n'); +}; + +/** + * Common tasks for generating Lua from blocks. + * Handles comments for the specified block and any connected value blocks. + * Calls any statements following this block. + * @param {!Block} block The current block. + * @param {string} code The Lua code created for this block. + * @param {boolean=} opt_thisOnly True to generate code for only this statement. + * @return {string} Lua code with comments and subsequent blocks added. + * @protected + */ +Lua.scrub_ = function(block, code, opt_thisOnly) { + let commentCode = ''; + // Only collect comments for blocks that aren't inline. + if (!block.outputConnection || !block.outputConnection.targetConnection) { + // Collect comment for this block. + let comment = block.getCommentText(); + if (comment) { + comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); + commentCode += this.prefixLines(comment, '-- ') + '\n'; + } + // Collect comments for all value arguments. + // Don't collect comments for nested statements. + for (let i = 0; i < block.inputList.length; i++) { + if (block.inputList[i].type === inputTypes.VALUE) { + const childBlock = block.inputList[i].connection.targetBlock(); + if (childBlock) { + comment = this.allNestedComments(childBlock); + if (comment) { + commentCode += this.prefixLines(comment, '-- '); + } + } + } + } + } + const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); + const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); + return commentCode + code + nextCode; +}; + +exports = Lua; diff --git a/generators/lua/all.js b/generators/lua/all.js index af4662de5e6..c9b74e99af0 100644 --- a/generators/lua/all.js +++ b/generators/lua/all.js @@ -1,25 +1,25 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Complete helper functions for generating Lua for - * blocks. This is the entrypoint for lua_compressed.js. - * @suppress {extraRequire} - */ -'use strict'; - -goog.module('Blockly.Lua.all'); - -goog.require('Blockly.Lua.colour'); -goog.require('Blockly.Lua.lists'); -goog.require('Blockly.Lua.logic'); -goog.require('Blockly.Lua.loops'); -goog.require('Blockly.Lua.math'); -goog.require('Blockly.Lua.procedures'); -goog.require('Blockly.Lua.texts'); -goog.require('Blockly.Lua.variables'); -goog.require('Blockly.Lua.variablesDynamic'); - +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Complete helper functions for generating Lua for + * blocks. This is the entrypoint for lua_compressed.js. + * @suppress {extraRequire} + */ +'use strict'; + +goog.module('Blockly.Lua.all'); + +goog.require('Blockly.Lua.colour'); +goog.require('Blockly.Lua.lists'); +goog.require('Blockly.Lua.logic'); +goog.require('Blockly.Lua.loops'); +goog.require('Blockly.Lua.math'); +goog.require('Blockly.Lua.procedures'); +goog.require('Blockly.Lua.texts'); +goog.require('Blockly.Lua.variables'); +goog.require('Blockly.Lua.variablesDynamic'); + diff --git a/generators/lua/colour.js b/generators/lua/colour.js index 96660fdbe4b..9ef228a7eb2 100644 --- a/generators/lua/colour.js +++ b/generators/lua/colour.js @@ -1,71 +1,71 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for colour blocks. - */ -'use strict'; - -goog.module('Blockly.Lua.colour'); - -const Lua = goog.require('Blockly.Lua'); - - -Lua['colour_picker'] = function(block) { - // Colour picker. - const code = Lua.quote_(block.getFieldValue('COLOUR')); - return [code, Lua.ORDER_ATOMIC]; -}; - -Lua['colour_random'] = function(block) { - // Generate a random colour. - const code = 'string.format("#%06x", math.random(0, 2^24 - 1))'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['colour_rgb'] = function(block) { - // Compose a colour from RGB components expressed as percentages. - const functionName = Lua.provideFunction_('colour_rgb', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(r, g, b) - r = math.floor(math.min(100, math.max(0, r)) * 2.55 + .5) - g = math.floor(math.min(100, math.max(0, g)) * 2.55 + .5) - b = math.floor(math.min(100, math.max(0, b)) * 2.55 + .5) - return string.format("#%02x%02x%02x", r, g, b) -end -`); - const r = Lua.valueToCode(block, 'RED', Lua.ORDER_NONE) || 0; - const g = Lua.valueToCode(block, 'GREEN', Lua.ORDER_NONE) || 0; - const b = Lua.valueToCode(block, 'BLUE', Lua.ORDER_NONE) || 0; - const code = functionName + '(' + r + ', ' + g + ', ' + b + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['colour_blend'] = function(block) { - // Blend two colours together. - const functionName = Lua.provideFunction_('colour_blend', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(colour1, colour2, ratio) - local r1 = tonumber(string.sub(colour1, 2, 3), 16) - local r2 = tonumber(string.sub(colour2, 2, 3), 16) - local g1 = tonumber(string.sub(colour1, 4, 5), 16) - local g2 = tonumber(string.sub(colour2, 4, 5), 16) - local b1 = tonumber(string.sub(colour1, 6, 7), 16) - local b2 = tonumber(string.sub(colour2, 6, 7), 16) - local ratio = math.min(1, math.max(0, ratio)) - local r = math.floor(r1 * (1 - ratio) + r2 * ratio + .5) - local g = math.floor(g1 * (1 - ratio) + g2 * ratio + .5) - local b = math.floor(b1 * (1 - ratio) + b2 * ratio + .5) - return string.format("#%02x%02x%02x", r, g, b) -end -`); - const colour1 = - Lua.valueToCode(block, 'COLOUR1', Lua.ORDER_NONE) || "'#000000'"; - const colour2 = - Lua.valueToCode(block, 'COLOUR2', Lua.ORDER_NONE) || "'#000000'"; - const ratio = Lua.valueToCode(block, 'RATIO', Lua.ORDER_NONE) || 0; - const code = - functionName + '(' + colour1 + ', ' + colour2 + ', ' + ratio + ')'; - return [code, Lua.ORDER_HIGH]; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for colour blocks. + */ +'use strict'; + +goog.module('Blockly.Lua.colour'); + +const Lua = goog.require('Blockly.Lua'); + + +Lua['colour_picker'] = function(block) { + // Colour picker. + const code = Lua.quote_(block.getFieldValue('COLOUR')); + return [code, Lua.ORDER_ATOMIC]; +}; + +Lua['colour_random'] = function(block) { + // Generate a random colour. + const code = 'string.format("#%06x", math.random(0, 2^24 - 1))'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['colour_rgb'] = function(block) { + // Compose a colour from RGB components expressed as percentages. + const functionName = Lua.provideFunction_('colour_rgb', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(r, g, b) + r = math.floor(math.min(100, math.max(0, r)) * 2.55 + .5) + g = math.floor(math.min(100, math.max(0, g)) * 2.55 + .5) + b = math.floor(math.min(100, math.max(0, b)) * 2.55 + .5) + return string.format("#%02x%02x%02x", r, g, b) +end +`); + const r = Lua.valueToCode(block, 'RED', Lua.ORDER_NONE) || 0; + const g = Lua.valueToCode(block, 'GREEN', Lua.ORDER_NONE) || 0; + const b = Lua.valueToCode(block, 'BLUE', Lua.ORDER_NONE) || 0; + const code = functionName + '(' + r + ', ' + g + ', ' + b + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['colour_blend'] = function(block) { + // Blend two colours together. + const functionName = Lua.provideFunction_('colour_blend', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(colour1, colour2, ratio) + local r1 = tonumber(string.sub(colour1, 2, 3), 16) + local r2 = tonumber(string.sub(colour2, 2, 3), 16) + local g1 = tonumber(string.sub(colour1, 4, 5), 16) + local g2 = tonumber(string.sub(colour2, 4, 5), 16) + local b1 = tonumber(string.sub(colour1, 6, 7), 16) + local b2 = tonumber(string.sub(colour2, 6, 7), 16) + local ratio = math.min(1, math.max(0, ratio)) + local r = math.floor(r1 * (1 - ratio) + r2 * ratio + .5) + local g = math.floor(g1 * (1 - ratio) + g2 * ratio + .5) + local b = math.floor(b1 * (1 - ratio) + b2 * ratio + .5) + return string.format("#%02x%02x%02x", r, g, b) +end +`); + const colour1 = + Lua.valueToCode(block, 'COLOUR1', Lua.ORDER_NONE) || "'#000000'"; + const colour2 = + Lua.valueToCode(block, 'COLOUR2', Lua.ORDER_NONE) || "'#000000'"; + const ratio = Lua.valueToCode(block, 'RATIO', Lua.ORDER_NONE) || 0; + const code = + functionName + '(' + colour1 + ', ' + colour2 + ', ' + ratio + ')'; + return [code, Lua.ORDER_HIGH]; +}; diff --git a/generators/lua/lists.js b/generators/lua/lists.js index 5ebea97c479..ac8d9528a69 100644 --- a/generators/lua/lists.js +++ b/generators/lua/lists.js @@ -1,348 +1,348 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for list blocks. - */ -'use strict'; - -goog.module('Blockly.Lua.lists'); - -const Lua = goog.require('Blockly.Lua'); -const {NameType} = goog.require('Blockly.Names'); - - -Lua['lists_create_empty'] = function(block) { - // Create an empty list. - return ['{}', Lua.ORDER_HIGH]; -}; - -Lua['lists_create_with'] = function(block) { - // Create a list with any number of elements of any type. - const elements = new Array(block.itemCount_); - for (let i = 0; i < block.itemCount_; i++) { - elements[i] = Lua.valueToCode(block, 'ADD' + i, Lua.ORDER_NONE) || 'None'; - } - const code = '{' + elements.join(', ') + '}'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['lists_repeat'] = function(block) { - // Create a list with one element repeated. - const functionName = Lua.provideFunction_('create_list_repeated', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(item, count) - local t = {} - for i = 1, count do - table.insert(t, item) - end - return t -end - `); - const element = Lua.valueToCode(block, 'ITEM', Lua.ORDER_NONE) || 'None'; - const repeatCount = Lua.valueToCode(block, 'NUM', Lua.ORDER_NONE) || '0'; - const code = functionName + '(' + element + ', ' + repeatCount + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['lists_length'] = function(block) { - // String or array length. - const list = Lua.valueToCode(block, 'VALUE', Lua.ORDER_UNARY) || '{}'; - return ['#' + list, Lua.ORDER_UNARY]; -}; - -Lua['lists_isEmpty'] = function(block) { - // Is the string null or array empty? - const list = Lua.valueToCode(block, 'VALUE', Lua.ORDER_UNARY) || '{}'; - const code = '#' + list + ' == 0'; - return [code, Lua.ORDER_RELATIONAL]; -}; - -Lua['lists_indexOf'] = function(block) { - // Find an item in the list. - const item = Lua.valueToCode(block, 'FIND', Lua.ORDER_NONE) || "''"; - const list = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || '{}'; - let functionName; - if (block.getFieldValue('END') === 'FIRST') { - functionName = Lua.provideFunction_('first_index', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t, elem) - for k, v in ipairs(t) do - if v == elem then - return k - end - end - return 0 -end -`); - } else { - functionName = Lua.provideFunction_('last_index', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t, elem) - for i = #t, 1, -1 do - if t[i] == elem then - return i - end - end - return 0 -end -`); - } - const code = functionName + '(' + list + ', ' + item + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -/** - * Returns an expression calculating the index into a list. - * @param {string} listName Name of the list, used to calculate length. - * @param {string} where The method of indexing, selected by dropdown in Blockly - * @param {string=} opt_at The optional offset when indexing from start/end. - * @return {string|undefined} Index expression. - */ -const getListIndex = function(listName, where, opt_at) { - if (where === 'FIRST') { - return '1'; - } else if (where === 'FROM_END') { - return '#' + listName + ' + 1 - ' + opt_at; - } else if (where === 'LAST') { - return '#' + listName; - } else if (where === 'RANDOM') { - return 'math.random(#' + listName + ')'; - } else { - return opt_at; - } -}; - -Lua['lists_getIndex'] = function(block) { - // Get element at index. - // Note: Until January 2013 this block did not have MODE or WHERE inputs. - const mode = block.getFieldValue('MODE') || 'GET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const list = Lua.valueToCode(block, 'VALUE', Lua.ORDER_HIGH) || '({})'; - - // If `list` would be evaluated more than once (which is the case for LAST, - // FROM_END, and RANDOM) and is non-trivial, make sure to access it only once. - if ((where === 'LAST' || where === 'FROM_END' || where === 'RANDOM') && - !list.match(/^\w+$/)) { - // `list` is an expression, so we may not evaluate it more than once. - if (mode === 'REMOVE') { - // We can use multiple statements. - const atOrder = - (where === 'FROM_END') ? Lua.ORDER_ADDITIVE : Lua.ORDER_NONE; - let at = Lua.valueToCode(block, 'AT', atOrder) || '1'; - const listVar = - Lua.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); - at = getListIndex(listVar, where, at); - const code = listVar + ' = ' + list + '\n' + - 'table.remove(' + listVar + ', ' + at + ')\n'; - return code; - } else { - // We need to create a procedure to avoid reevaluating values. - const at = Lua.valueToCode(block, 'AT', Lua.ORDER_NONE) || '1'; - let functionName; - if (mode === 'GET') { - functionName = Lua.provideFunction_('list_get_' + where.toLowerCase(), [ - 'function ' + Lua.FUNCTION_NAME_PLACEHOLDER_ + '(t' + - // The value for 'FROM_END' and'FROM_START' depends on `at` so - // we add it as a parameter. - ((where === 'FROM_END' || where === 'FROM_START') ? ', at)' : - ')'), - ' return t[' + getListIndex('t', where, 'at') + ']', 'end' - ]); - } else { // `mode` === 'GET_REMOVE' - functionName = - Lua.provideFunction_('list_remove_' + where.toLowerCase(), [ - 'function ' + Lua.FUNCTION_NAME_PLACEHOLDER_ + '(t' + - // The value for 'FROM_END' and'FROM_START' depends on `at` so - // we add it as a parameter. - ((where === 'FROM_END' || where === 'FROM_START') ? ', at)' : - ')'), - ' return table.remove(t, ' + getListIndex('t', where, 'at') + - ')', - 'end' - ]); - } - const code = functionName + '(' + list + - // The value for 'FROM_END' and 'FROM_START' depends on `at` so we - // pass it. - ((where === 'FROM_END' || where === 'FROM_START') ? ', ' + at : '') + - ')'; - return [code, Lua.ORDER_HIGH]; - } - } else { - // Either `list` is a simple variable, or we only need to refer to `list` - // once. - const atOrder = (mode === 'GET' && where === 'FROM_END') ? - Lua.ORDER_ADDITIVE : - Lua.ORDER_NONE; - let at = Lua.valueToCode(block, 'AT', atOrder) || '1'; - at = getListIndex(list, where, at); - if (mode === 'GET') { - const code = list + '[' + at + ']'; - return [code, Lua.ORDER_HIGH]; - } else { - const code = 'table.remove(' + list + ', ' + at + ')'; - if (mode === 'GET_REMOVE') { - return [code, Lua.ORDER_HIGH]; - } else { // `mode` === 'REMOVE' - return code + '\n'; - } - } - } -}; - -Lua['lists_setIndex'] = function(block) { - // Set element at index. - // Note: Until February 2013 this block did not have MODE or WHERE inputs. - let list = Lua.valueToCode(block, 'LIST', Lua.ORDER_HIGH) || '{}'; - const mode = block.getFieldValue('MODE') || 'SET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const at = Lua.valueToCode(block, 'AT', Lua.ORDER_ADDITIVE) || '1'; - const value = Lua.valueToCode(block, 'TO', Lua.ORDER_NONE) || 'None'; - - let code = ''; - // If `list` would be evaluated more than once (which is the case for LAST, - // FROM_END, and RANDOM) and is non-trivial, make sure to access it only once. - if ((where === 'LAST' || where === 'FROM_END' || where === 'RANDOM') && - !list.match(/^\w+$/)) { - // `list` is an expression, so we may not evaluate it more than once. - // We can use multiple statements. - const listVar = Lua.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); - code = listVar + ' = ' + list + '\n'; - list = listVar; - } - if (mode === 'SET') { - code += list + '[' + getListIndex(list, where, at) + '] = ' + value; - } else { // `mode` === 'INSERT' - // LAST is a special case, because we want to insert - // *after* not *before*, the existing last element. - code += 'table.insert(' + list + ', ' + - (getListIndex(list, where, at) + (where === 'LAST' ? ' + 1' : '')) + - ', ' + value + ')'; - } - return code + '\n'; -}; - -Lua['lists_getSublist'] = function(block) { - // Get sublist. - const list = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; - const where1 = block.getFieldValue('WHERE1'); - const where2 = block.getFieldValue('WHERE2'); - const at1 = Lua.valueToCode(block, 'AT1', Lua.ORDER_NONE) || '1'; - const at2 = Lua.valueToCode(block, 'AT2', Lua.ORDER_NONE) || '1'; - - // The value for 'FROM_END' and'FROM_START' depends on `at` so - // we add it as a parameter. - const at1Param = - (where1 === 'FROM_END' || where1 === 'FROM_START') ? ', at1' : ''; - const at2Param = - (where2 === 'FROM_END' || where2 === 'FROM_START') ? ', at2' : ''; - const functionName = Lua.provideFunction_( - 'list_sublist_' + where1.toLowerCase() + '_' + where2.toLowerCase(), ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(source${at1Param}${at2Param}) - local t = {} - local start = ${getListIndex('source', where1, 'at1')} - local finish = ${getListIndex('source', where2, 'at2')} - for i = start, finish do - table.insert(t, source[i]) - end - return t -end -`); - const code = functionName + '(' + list + - // The value for 'FROM_END' and 'FROM_START' depends on `at` so we - // pass it. - ((where1 === 'FROM_END' || where1 === 'FROM_START') ? ', ' + at1 : '') + - ((where2 === 'FROM_END' || where2 === 'FROM_START') ? ', ' + at2 : '') + - ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['lists_sort'] = function(block) { - // Block for sorting a list. - const list = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; - const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; - const type = block.getFieldValue('TYPE'); - - const functionName = Lua.provideFunction_('list_sort', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(list, typev, direction) - local t = {} - for n,v in pairs(list) do table.insert(t, v) end - local compareFuncs = { - NUMERIC = function(a, b) - return (tonumber(tostring(a)) or 0) - < (tonumber(tostring(b)) or 0) end, - TEXT = function(a, b) - return tostring(a) < tostring(b) end, - IGNORE_CASE = function(a, b) - return string.lower(tostring(a)) < string.lower(tostring(b)) end - } - local compareTemp = compareFuncs[typev] - local compare = compareTemp - if direction == -1 - then compare = function(a, b) return compareTemp(b, a) end - end - table.sort(t, compare) - return t -end -`); - - const code = - functionName + '(' + list + ',"' + type + '", ' + direction + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['lists_split'] = function(block) { - // Block for splitting text into a list, or joining a list into text. - let input = Lua.valueToCode(block, 'INPUT', Lua.ORDER_NONE); - const delimiter = Lua.valueToCode(block, 'DELIM', Lua.ORDER_NONE) || "''"; - const mode = block.getFieldValue('MODE'); - let functionName; - if (mode === 'SPLIT') { - if (!input) { - input = "''"; - } - functionName = Lua.provideFunction_('list_string_split', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(input, delim) - local t = {} - local pos = 1 - while true do - next_delim = string.find(input, delim, pos) - if next_delim == nil then - table.insert(t, string.sub(input, pos)) - break - else - table.insert(t, string.sub(input, pos, next_delim-1)) - pos = next_delim + #delim - end - end - return t -end -`); - } else if (mode === 'JOIN') { - if (!input) { - input = '{}'; - } - functionName = 'table.concat'; - } else { - throw Error('Unknown mode: ' + mode); - } - const code = functionName + '(' + input + ', ' + delimiter + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['lists_reverse'] = function(block) { - // Block for reversing a list. - const list = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; - const functionName = Lua.provideFunction_('list_reverse', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(input) - local reversed = {} - for i = #input, 1, -1 do - table.insert(reversed, input[i]) - end - return reversed -end -`); - const code = functionName + '(' + list + ')'; - return [code, Lua.ORDER_HIGH]; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for list blocks. + */ +'use strict'; + +goog.module('Blockly.Lua.lists'); + +const Lua = goog.require('Blockly.Lua'); +const {NameType} = goog.require('Blockly.Names'); + + +Lua['lists_create_empty'] = function(block) { + // Create an empty list. + return ['{}', Lua.ORDER_HIGH]; +}; + +Lua['lists_create_with'] = function(block) { + // Create a list with any number of elements of any type. + const elements = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { + elements[i] = Lua.valueToCode(block, 'ADD' + i, Lua.ORDER_NONE) || 'None'; + } + const code = '{' + elements.join(', ') + '}'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['lists_repeat'] = function(block) { + // Create a list with one element repeated. + const functionName = Lua.provideFunction_('create_list_repeated', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(item, count) + local t = {} + for i = 1, count do + table.insert(t, item) + end + return t +end + `); + const element = Lua.valueToCode(block, 'ITEM', Lua.ORDER_NONE) || 'None'; + const repeatCount = Lua.valueToCode(block, 'NUM', Lua.ORDER_NONE) || '0'; + const code = functionName + '(' + element + ', ' + repeatCount + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['lists_length'] = function(block) { + // String or array length. + const list = Lua.valueToCode(block, 'VALUE', Lua.ORDER_UNARY) || '{}'; + return ['#' + list, Lua.ORDER_UNARY]; +}; + +Lua['lists_isEmpty'] = function(block) { + // Is the string null or array empty? + const list = Lua.valueToCode(block, 'VALUE', Lua.ORDER_UNARY) || '{}'; + const code = '#' + list + ' == 0'; + return [code, Lua.ORDER_RELATIONAL]; +}; + +Lua['lists_indexOf'] = function(block) { + // Find an item in the list. + const item = Lua.valueToCode(block, 'FIND', Lua.ORDER_NONE) || "''"; + const list = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || '{}'; + let functionName; + if (block.getFieldValue('END') === 'FIRST') { + functionName = Lua.provideFunction_('first_index', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t, elem) + for k, v in ipairs(t) do + if v == elem then + return k + end + end + return 0 +end +`); + } else { + functionName = Lua.provideFunction_('last_index', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t, elem) + for i = #t, 1, -1 do + if t[i] == elem then + return i + end + end + return 0 +end +`); + } + const code = functionName + '(' + list + ', ' + item + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +/** + * Returns an expression calculating the index into a list. + * @param {string} listName Name of the list, used to calculate length. + * @param {string} where The method of indexing, selected by dropdown in Blockly + * @param {string=} opt_at The optional offset when indexing from start/end. + * @return {string|undefined} Index expression. + */ +const getListIndex = function(listName, where, opt_at) { + if (where === 'FIRST') { + return '1'; + } else if (where === 'FROM_END') { + return '#' + listName + ' + 1 - ' + opt_at; + } else if (where === 'LAST') { + return '#' + listName; + } else if (where === 'RANDOM') { + return 'math.random(#' + listName + ')'; + } else { + return opt_at; + } +}; + +Lua['lists_getIndex'] = function(block) { + // Get element at index. + // Note: Until January 2013 this block did not have MODE or WHERE inputs. + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const list = Lua.valueToCode(block, 'VALUE', Lua.ORDER_HIGH) || '({})'; + + // If `list` would be evaluated more than once (which is the case for LAST, + // FROM_END, and RANDOM) and is non-trivial, make sure to access it only once. + if ((where === 'LAST' || where === 'FROM_END' || where === 'RANDOM') && + !list.match(/^\w+$/)) { + // `list` is an expression, so we may not evaluate it more than once. + if (mode === 'REMOVE') { + // We can use multiple statements. + const atOrder = + (where === 'FROM_END') ? Lua.ORDER_ADDITIVE : Lua.ORDER_NONE; + let at = Lua.valueToCode(block, 'AT', atOrder) || '1'; + const listVar = + Lua.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); + at = getListIndex(listVar, where, at); + const code = listVar + ' = ' + list + '\n' + + 'table.remove(' + listVar + ', ' + at + ')\n'; + return code; + } else { + // We need to create a procedure to avoid reevaluating values. + const at = Lua.valueToCode(block, 'AT', Lua.ORDER_NONE) || '1'; + let functionName; + if (mode === 'GET') { + functionName = Lua.provideFunction_('list_get_' + where.toLowerCase(), [ + 'function ' + Lua.FUNCTION_NAME_PLACEHOLDER_ + '(t' + + // The value for 'FROM_END' and'FROM_START' depends on `at` so + // we add it as a parameter. + ((where === 'FROM_END' || where === 'FROM_START') ? ', at)' : + ')'), + ' return t[' + getListIndex('t', where, 'at') + ']', 'end' + ]); + } else { // `mode` === 'GET_REMOVE' + functionName = + Lua.provideFunction_('list_remove_' + where.toLowerCase(), [ + 'function ' + Lua.FUNCTION_NAME_PLACEHOLDER_ + '(t' + + // The value for 'FROM_END' and'FROM_START' depends on `at` so + // we add it as a parameter. + ((where === 'FROM_END' || where === 'FROM_START') ? ', at)' : + ')'), + ' return table.remove(t, ' + getListIndex('t', where, 'at') + + ')', + 'end' + ]); + } + const code = functionName + '(' + list + + // The value for 'FROM_END' and 'FROM_START' depends on `at` so we + // pass it. + ((where === 'FROM_END' || where === 'FROM_START') ? ', ' + at : '') + + ')'; + return [code, Lua.ORDER_HIGH]; + } + } else { + // Either `list` is a simple variable, or we only need to refer to `list` + // once. + const atOrder = (mode === 'GET' && where === 'FROM_END') ? + Lua.ORDER_ADDITIVE : + Lua.ORDER_NONE; + let at = Lua.valueToCode(block, 'AT', atOrder) || '1'; + at = getListIndex(list, where, at); + if (mode === 'GET') { + const code = list + '[' + at + ']'; + return [code, Lua.ORDER_HIGH]; + } else { + const code = 'table.remove(' + list + ', ' + at + ')'; + if (mode === 'GET_REMOVE') { + return [code, Lua.ORDER_HIGH]; + } else { // `mode` === 'REMOVE' + return code + '\n'; + } + } + } +}; + +Lua['lists_setIndex'] = function(block) { + // Set element at index. + // Note: Until February 2013 this block did not have MODE or WHERE inputs. + let list = Lua.valueToCode(block, 'LIST', Lua.ORDER_HIGH) || '{}'; + const mode = block.getFieldValue('MODE') || 'SET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const at = Lua.valueToCode(block, 'AT', Lua.ORDER_ADDITIVE) || '1'; + const value = Lua.valueToCode(block, 'TO', Lua.ORDER_NONE) || 'None'; + + let code = ''; + // If `list` would be evaluated more than once (which is the case for LAST, + // FROM_END, and RANDOM) and is non-trivial, make sure to access it only once. + if ((where === 'LAST' || where === 'FROM_END' || where === 'RANDOM') && + !list.match(/^\w+$/)) { + // `list` is an expression, so we may not evaluate it more than once. + // We can use multiple statements. + const listVar = Lua.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); + code = listVar + ' = ' + list + '\n'; + list = listVar; + } + if (mode === 'SET') { + code += list + '[' + getListIndex(list, where, at) + '] = ' + value; + } else { // `mode` === 'INSERT' + // LAST is a special case, because we want to insert + // *after* not *before*, the existing last element. + code += 'table.insert(' + list + ', ' + + (getListIndex(list, where, at) + (where === 'LAST' ? ' + 1' : '')) + + ', ' + value + ')'; + } + return code + '\n'; +}; + +Lua['lists_getSublist'] = function(block) { + // Get sublist. + const list = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + const at1 = Lua.valueToCode(block, 'AT1', Lua.ORDER_NONE) || '1'; + const at2 = Lua.valueToCode(block, 'AT2', Lua.ORDER_NONE) || '1'; + + // The value for 'FROM_END' and'FROM_START' depends on `at` so + // we add it as a parameter. + const at1Param = + (where1 === 'FROM_END' || where1 === 'FROM_START') ? ', at1' : ''; + const at2Param = + (where2 === 'FROM_END' || where2 === 'FROM_START') ? ', at2' : ''; + const functionName = Lua.provideFunction_( + 'list_sublist_' + where1.toLowerCase() + '_' + where2.toLowerCase(), ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(source${at1Param}${at2Param}) + local t = {} + local start = ${getListIndex('source', where1, 'at1')} + local finish = ${getListIndex('source', where2, 'at2')} + for i = start, finish do + table.insert(t, source[i]) + end + return t +end +`); + const code = functionName + '(' + list + + // The value for 'FROM_END' and 'FROM_START' depends on `at` so we + // pass it. + ((where1 === 'FROM_END' || where1 === 'FROM_START') ? ', ' + at1 : '') + + ((where2 === 'FROM_END' || where2 === 'FROM_START') ? ', ' + at2 : '') + + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['lists_sort'] = function(block) { + // Block for sorting a list. + const list = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; + const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; + const type = block.getFieldValue('TYPE'); + + const functionName = Lua.provideFunction_('list_sort', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(list, typev, direction) + local t = {} + for n,v in pairs(list) do table.insert(t, v) end + local compareFuncs = { + NUMERIC = function(a, b) + return (tonumber(tostring(a)) or 0) + < (tonumber(tostring(b)) or 0) end, + TEXT = function(a, b) + return tostring(a) < tostring(b) end, + IGNORE_CASE = function(a, b) + return string.lower(tostring(a)) < string.lower(tostring(b)) end + } + local compareTemp = compareFuncs[typev] + local compare = compareTemp + if direction == -1 + then compare = function(a, b) return compareTemp(b, a) end + end + table.sort(t, compare) + return t +end +`); + + const code = + functionName + '(' + list + ',"' + type + '", ' + direction + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['lists_split'] = function(block) { + // Block for splitting text into a list, or joining a list into text. + let input = Lua.valueToCode(block, 'INPUT', Lua.ORDER_NONE); + const delimiter = Lua.valueToCode(block, 'DELIM', Lua.ORDER_NONE) || "''"; + const mode = block.getFieldValue('MODE'); + let functionName; + if (mode === 'SPLIT') { + if (!input) { + input = "''"; + } + functionName = Lua.provideFunction_('list_string_split', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(input, delim) + local t = {} + local pos = 1 + while true do + next_delim = string.find(input, delim, pos) + if next_delim == nil then + table.insert(t, string.sub(input, pos)) + break + else + table.insert(t, string.sub(input, pos, next_delim-1)) + pos = next_delim + #delim + end + end + return t +end +`); + } else if (mode === 'JOIN') { + if (!input) { + input = '{}'; + } + functionName = 'table.concat'; + } else { + throw Error('Unknown mode: ' + mode); + } + const code = functionName + '(' + input + ', ' + delimiter + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['lists_reverse'] = function(block) { + // Block for reversing a list. + const list = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; + const functionName = Lua.provideFunction_('list_reverse', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(input) + local reversed = {} + for i = #input, 1, -1 do + table.insert(reversed, input[i]) + end + return reversed +end +`); + const code = functionName + '(' + list + ')'; + return [code, Lua.ORDER_HIGH]; +}; diff --git a/generators/lua/logic.js b/generators/lua/logic.js index d4104295adf..7de7376234c 100644 --- a/generators/lua/logic.js +++ b/generators/lua/logic.js @@ -1,112 +1,112 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for logic blocks. - */ -'use strict'; - -goog.module('Blockly.Lua.logic'); - -const Lua = goog.require('Blockly.Lua'); - - -Lua['controls_if'] = function(block) { - // If/elseif/else condition. - let n = 0; - let code = ''; - if (Lua.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - code += Lua.injectId(Lua.STATEMENT_PREFIX, block); - } - do { - const conditionCode = - Lua.valueToCode(block, 'IF' + n, Lua.ORDER_NONE) || 'false'; - let branchCode = Lua.statementToCode(block, 'DO' + n); - if (Lua.STATEMENT_SUFFIX) { - branchCode = Lua.prefixLines( - Lua.injectId(Lua.STATEMENT_SUFFIX, block), Lua.INDENT) + branchCode; - } - code += - (n > 0 ? 'else' : '') + 'if ' + conditionCode + ' then\n' + branchCode; - n++; - } while (block.getInput('IF' + n)); - - if (block.getInput('ELSE') || Lua.STATEMENT_SUFFIX) { - let branchCode = Lua.statementToCode(block, 'ELSE'); - if (Lua.STATEMENT_SUFFIX) { - branchCode = Lua.prefixLines( - Lua.injectId(Lua.STATEMENT_SUFFIX, block), Lua.INDENT) + - branchCode; - } - code += 'else\n' + branchCode; - } - return code + 'end\n'; -}; - -Lua['controls_ifelse'] = Lua['controls_if']; - -Lua['logic_compare'] = function(block) { - // Comparison operator. - const OPERATORS = - {'EQ': '==', 'NEQ': '~=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; - const operator = OPERATORS[block.getFieldValue('OP')]; - const argument0 = Lua.valueToCode(block, 'A', Lua.ORDER_RELATIONAL) || '0'; - const argument1 = Lua.valueToCode(block, 'B', Lua.ORDER_RELATIONAL) || '0'; - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, Lua.ORDER_RELATIONAL]; -}; - -Lua['logic_operation'] = function(block) { - // Operations 'and', 'or'. - const operator = (block.getFieldValue('OP') === 'AND') ? 'and' : 'or'; - const order = (operator === 'and') ? Lua.ORDER_AND : Lua.ORDER_OR; - let argument0 = Lua.valueToCode(block, 'A', order); - let argument1 = Lua.valueToCode(block, 'B', order); - if (!argument0 && !argument1) { - // If there are no arguments, then the return value is false. - argument0 = 'false'; - argument1 = 'false'; - } else { - // Single missing arguments have no effect on the return value. - const defaultArgument = (operator === 'and') ? 'true' : 'false'; - if (!argument0) { - argument0 = defaultArgument; - } - if (!argument1) { - argument1 = defaultArgument; - } - } - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -}; - -Lua['logic_negate'] = function(block) { - // Negation. - const argument0 = Lua.valueToCode(block, 'BOOL', Lua.ORDER_UNARY) || 'true'; - const code = 'not ' + argument0; - return [code, Lua.ORDER_UNARY]; -}; - -Lua['logic_boolean'] = function(block) { - // Boolean values true and false. - const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; - return [code, Lua.ORDER_ATOMIC]; -}; - -Lua['logic_null'] = function(block) { - // Null data type. - return ['nil', Lua.ORDER_ATOMIC]; -}; - -Lua['logic_ternary'] = function(block) { - // Ternary operator. - const value_if = Lua.valueToCode(block, 'IF', Lua.ORDER_AND) || 'false'; - const value_then = Lua.valueToCode(block, 'THEN', Lua.ORDER_AND) || 'nil'; - const value_else = Lua.valueToCode(block, 'ELSE', Lua.ORDER_OR) || 'nil'; - const code = value_if + ' and ' + value_then + ' or ' + value_else; - return [code, Lua.ORDER_OR]; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for logic blocks. + */ +'use strict'; + +goog.module('Blockly.Lua.logic'); + +const Lua = goog.require('Blockly.Lua'); + + +Lua['controls_if'] = function(block) { + // If/elseif/else condition. + let n = 0; + let code = ''; + if (Lua.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + code += Lua.injectId(Lua.STATEMENT_PREFIX, block); + } + do { + const conditionCode = + Lua.valueToCode(block, 'IF' + n, Lua.ORDER_NONE) || 'false'; + let branchCode = Lua.statementToCode(block, 'DO' + n); + if (Lua.STATEMENT_SUFFIX) { + branchCode = Lua.prefixLines( + Lua.injectId(Lua.STATEMENT_SUFFIX, block), Lua.INDENT) + branchCode; + } + code += + (n > 0 ? 'else' : '') + 'if ' + conditionCode + ' then\n' + branchCode; + n++; + } while (block.getInput('IF' + n)); + + if (block.getInput('ELSE') || Lua.STATEMENT_SUFFIX) { + let branchCode = Lua.statementToCode(block, 'ELSE'); + if (Lua.STATEMENT_SUFFIX) { + branchCode = Lua.prefixLines( + Lua.injectId(Lua.STATEMENT_SUFFIX, block), Lua.INDENT) + + branchCode; + } + code += 'else\n' + branchCode; + } + return code + 'end\n'; +}; + +Lua['controls_ifelse'] = Lua['controls_if']; + +Lua['logic_compare'] = function(block) { + // Comparison operator. + const OPERATORS = + {'EQ': '==', 'NEQ': '~=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; + const operator = OPERATORS[block.getFieldValue('OP')]; + const argument0 = Lua.valueToCode(block, 'A', Lua.ORDER_RELATIONAL) || '0'; + const argument1 = Lua.valueToCode(block, 'B', Lua.ORDER_RELATIONAL) || '0'; + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, Lua.ORDER_RELATIONAL]; +}; + +Lua['logic_operation'] = function(block) { + // Operations 'and', 'or'. + const operator = (block.getFieldValue('OP') === 'AND') ? 'and' : 'or'; + const order = (operator === 'and') ? Lua.ORDER_AND : Lua.ORDER_OR; + let argument0 = Lua.valueToCode(block, 'A', order); + let argument1 = Lua.valueToCode(block, 'B', order); + if (!argument0 && !argument1) { + // If there are no arguments, then the return value is false. + argument0 = 'false'; + argument1 = 'false'; + } else { + // Single missing arguments have no effect on the return value. + const defaultArgument = (operator === 'and') ? 'true' : 'false'; + if (!argument0) { + argument0 = defaultArgument; + } + if (!argument1) { + argument1 = defaultArgument; + } + } + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; +}; + +Lua['logic_negate'] = function(block) { + // Negation. + const argument0 = Lua.valueToCode(block, 'BOOL', Lua.ORDER_UNARY) || 'true'; + const code = 'not ' + argument0; + return [code, Lua.ORDER_UNARY]; +}; + +Lua['logic_boolean'] = function(block) { + // Boolean values true and false. + const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; + return [code, Lua.ORDER_ATOMIC]; +}; + +Lua['logic_null'] = function(block) { + // Null data type. + return ['nil', Lua.ORDER_ATOMIC]; +}; + +Lua['logic_ternary'] = function(block) { + // Ternary operator. + const value_if = Lua.valueToCode(block, 'IF', Lua.ORDER_AND) || 'false'; + const value_then = Lua.valueToCode(block, 'THEN', Lua.ORDER_AND) || 'nil'; + const value_else = Lua.valueToCode(block, 'ELSE', Lua.ORDER_OR) || 'nil'; + const code = value_if + ' and ' + value_then + ' or ' + value_else; + return [code, Lua.ORDER_OR]; +}; diff --git a/generators/lua/loops.js b/generators/lua/loops.js index 37561c1b6b2..069d869bc65 100644 --- a/generators/lua/loops.js +++ b/generators/lua/loops.js @@ -1,168 +1,168 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for loop blocks. - */ -'use strict'; - -goog.module('Blockly.Lua.loops'); - -const Lua = goog.require('Blockly.Lua'); -const stringUtils = goog.require('Blockly.utils.string'); -const {NameType} = goog.require('Blockly.Names'); - - -/** - * This is the text used to implement a
      continue
      . - * It is also used to recognise
      continue
      s in generated code so that - * the appropriate label can be put at the end of the loop body. - * @const {string} - */ -const CONTINUE_STATEMENT = 'goto continue\n'; - -/** - * If the loop body contains a "goto continue" statement, add a continue label - * to the loop body. Slightly inefficient, as continue labels will be generated - * in all outer loops, but this is safer than duplicating the logic of - * blockToCode. - * - * @param {string} branch Generated code of the loop body - * @return {string} Generated label or '' if unnecessary - */ -const addContinueLabel = function(branch) { - if (branch.indexOf(CONTINUE_STATEMENT) !== -1) { - // False positives are possible (e.g. a string literal), but are harmless. - return branch + Lua.INDENT + '::continue::\n'; - } else { - return branch; - } -}; - -Lua['controls_repeat_ext'] = function(block) { - // Repeat n times. - let repeats; - if (block.getField('TIMES')) { - // Internal number. - repeats = String(Number(block.getFieldValue('TIMES'))); - } else { - // External number. - repeats = Lua.valueToCode(block, 'TIMES', Lua.ORDER_NONE) || '0'; - } - if (stringUtils.isNumber(repeats)) { - repeats = parseInt(repeats, 10); - } else { - repeats = 'math.floor(' + repeats + ')'; - } - let branch = Lua.statementToCode(block, 'DO'); - branch = Lua.addLoopTrap(branch, block); - branch = addContinueLabel(branch); - const loopVar = Lua.nameDB_.getDistinctName('count', NameType.VARIABLE); - const code = - 'for ' + loopVar + ' = 1, ' + repeats + ' do\n' + branch + 'end\n'; - return code; -}; - -Lua['controls_repeat'] = Lua['controls_repeat_ext']; - -Lua['controls_whileUntil'] = function(block) { - // Do while/until loop. - const until = block.getFieldValue('MODE') === 'UNTIL'; - let argument0 = - Lua.valueToCode( - block, 'BOOL', until ? Lua.ORDER_UNARY : Lua.ORDER_NONE) || - 'false'; - let branch = Lua.statementToCode(block, 'DO'); - branch = Lua.addLoopTrap(branch, block); - branch = addContinueLabel(branch); - if (until) { - argument0 = 'not ' + argument0; - } - return 'while ' + argument0 + ' do\n' + branch + 'end\n'; -}; - -Lua['controls_for'] = function(block) { - // For loop. - const variable0 = - Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const startVar = Lua.valueToCode(block, 'FROM', Lua.ORDER_NONE) || '0'; - const endVar = Lua.valueToCode(block, 'TO', Lua.ORDER_NONE) || '0'; - const increment = Lua.valueToCode(block, 'BY', Lua.ORDER_NONE) || '1'; - let branch = Lua.statementToCode(block, 'DO'); - branch = Lua.addLoopTrap(branch, block); - branch = addContinueLabel(branch); - let code = ''; - let incValue; - if (stringUtils.isNumber(startVar) && stringUtils.isNumber(endVar) && - stringUtils.isNumber(increment)) { - // All arguments are simple numbers. - const up = Number(startVar) <= Number(endVar); - const step = Math.abs(Number(increment)); - incValue = (up ? '' : '-') + step; - } else { - code = ''; - // Determine loop direction at start, in case one of the bounds - // changes during loop execution. - incValue = - Lua.nameDB_.getDistinctName(variable0 + '_inc', NameType.VARIABLE); - code += incValue + ' = '; - if (stringUtils.isNumber(increment)) { - code += Math.abs(increment) + '\n'; - } else { - code += 'math.abs(' + increment + ')\n'; - } - code += 'if (' + startVar + ') > (' + endVar + ') then\n'; - code += Lua.INDENT + incValue + ' = -' + incValue + '\n'; - code += 'end\n'; - } - code += - 'for ' + variable0 + ' = ' + startVar + ', ' + endVar + ', ' + incValue; - code += ' do\n' + branch + 'end\n'; - return code; -}; - -Lua['controls_forEach'] = function(block) { - // For each loop. - const variable0 = - Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const argument0 = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; - let branch = Lua.statementToCode(block, 'DO'); - branch = Lua.addLoopTrap(branch, block); - branch = addContinueLabel(branch); - const code = 'for _, ' + variable0 + ' in ipairs(' + argument0 + ') do \n' + - branch + 'end\n'; - return code; -}; - -Lua['controls_flow_statements'] = function(block) { - // Flow statements: continue, break. - let xfix = ''; - if (Lua.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - xfix += Lua.injectId(Lua.STATEMENT_PREFIX, block); - } - if (Lua.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the break/continue is triggered. - xfix += Lua.injectId(Lua.STATEMENT_SUFFIX, block); - } - if (Lua.STATEMENT_PREFIX) { - const loop = block.getSurroundLoop(); - if (loop && !loop.suppressPrefixSuffix) { - // Inject loop's statement prefix here since the regular one at the end - // of the loop will not get executed if 'continue' is triggered. - // In the case of 'break', a prefix is needed due to the loop's suffix. - xfix += Lua.injectId(Lua.STATEMENT_PREFIX, loop); - } - } - switch (block.getFieldValue('FLOW')) { - case 'BREAK': - return xfix + 'break\n'; - case 'CONTINUE': - return xfix + CONTINUE_STATEMENT; - } - throw Error('Unknown flow statement.'); -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for loop blocks. + */ +'use strict'; + +goog.module('Blockly.Lua.loops'); + +const Lua = goog.require('Blockly.Lua'); +const stringUtils = goog.require('Blockly.utils.string'); +const {NameType} = goog.require('Blockly.Names'); + + +/** + * This is the text used to implement a
      continue
      . + * It is also used to recognise
      continue
      s in generated code so that + * the appropriate label can be put at the end of the loop body. + * @const {string} + */ +const CONTINUE_STATEMENT = 'goto continue\n'; + +/** + * If the loop body contains a "goto continue" statement, add a continue label + * to the loop body. Slightly inefficient, as continue labels will be generated + * in all outer loops, but this is safer than duplicating the logic of + * blockToCode. + * + * @param {string} branch Generated code of the loop body + * @return {string} Generated label or '' if unnecessary + */ +const addContinueLabel = function(branch) { + if (branch.indexOf(CONTINUE_STATEMENT) !== -1) { + // False positives are possible (e.g. a string literal), but are harmless. + return branch + Lua.INDENT + '::continue::\n'; + } else { + return branch; + } +}; + +Lua['controls_repeat_ext'] = function(block) { + // Repeat n times. + let repeats; + if (block.getField('TIMES')) { + // Internal number. + repeats = String(Number(block.getFieldValue('TIMES'))); + } else { + // External number. + repeats = Lua.valueToCode(block, 'TIMES', Lua.ORDER_NONE) || '0'; + } + if (stringUtils.isNumber(repeats)) { + repeats = parseInt(repeats, 10); + } else { + repeats = 'math.floor(' + repeats + ')'; + } + let branch = Lua.statementToCode(block, 'DO'); + branch = Lua.addLoopTrap(branch, block); + branch = addContinueLabel(branch); + const loopVar = Lua.nameDB_.getDistinctName('count', NameType.VARIABLE); + const code = + 'for ' + loopVar + ' = 1, ' + repeats + ' do\n' + branch + 'end\n'; + return code; +}; + +Lua['controls_repeat'] = Lua['controls_repeat_ext']; + +Lua['controls_whileUntil'] = function(block) { + // Do while/until loop. + const until = block.getFieldValue('MODE') === 'UNTIL'; + let argument0 = + Lua.valueToCode( + block, 'BOOL', until ? Lua.ORDER_UNARY : Lua.ORDER_NONE) || + 'false'; + let branch = Lua.statementToCode(block, 'DO'); + branch = Lua.addLoopTrap(branch, block); + branch = addContinueLabel(branch); + if (until) { + argument0 = 'not ' + argument0; + } + return 'while ' + argument0 + ' do\n' + branch + 'end\n'; +}; + +Lua['controls_for'] = function(block) { + // For loop. + const variable0 = + Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const startVar = Lua.valueToCode(block, 'FROM', Lua.ORDER_NONE) || '0'; + const endVar = Lua.valueToCode(block, 'TO', Lua.ORDER_NONE) || '0'; + const increment = Lua.valueToCode(block, 'BY', Lua.ORDER_NONE) || '1'; + let branch = Lua.statementToCode(block, 'DO'); + branch = Lua.addLoopTrap(branch, block); + branch = addContinueLabel(branch); + let code = ''; + let incValue; + if (stringUtils.isNumber(startVar) && stringUtils.isNumber(endVar) && + stringUtils.isNumber(increment)) { + // All arguments are simple numbers. + const up = Number(startVar) <= Number(endVar); + const step = Math.abs(Number(increment)); + incValue = (up ? '' : '-') + step; + } else { + code = ''; + // Determine loop direction at start, in case one of the bounds + // changes during loop execution. + incValue = + Lua.nameDB_.getDistinctName(variable0 + '_inc', NameType.VARIABLE); + code += incValue + ' = '; + if (stringUtils.isNumber(increment)) { + code += Math.abs(increment) + '\n'; + } else { + code += 'math.abs(' + increment + ')\n'; + } + code += 'if (' + startVar + ') > (' + endVar + ') then\n'; + code += Lua.INDENT + incValue + ' = -' + incValue + '\n'; + code += 'end\n'; + } + code += + 'for ' + variable0 + ' = ' + startVar + ', ' + endVar + ', ' + incValue; + code += ' do\n' + branch + 'end\n'; + return code; +}; + +Lua['controls_forEach'] = function(block) { + // For each loop. + const variable0 = + Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const argument0 = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; + let branch = Lua.statementToCode(block, 'DO'); + branch = Lua.addLoopTrap(branch, block); + branch = addContinueLabel(branch); + const code = 'for _, ' + variable0 + ' in ipairs(' + argument0 + ') do \n' + + branch + 'end\n'; + return code; +}; + +Lua['controls_flow_statements'] = function(block) { + // Flow statements: continue, break. + let xfix = ''; + if (Lua.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + xfix += Lua.injectId(Lua.STATEMENT_PREFIX, block); + } + if (Lua.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the break/continue is triggered. + xfix += Lua.injectId(Lua.STATEMENT_SUFFIX, block); + } + if (Lua.STATEMENT_PREFIX) { + const loop = block.getSurroundLoop(); + if (loop && !loop.suppressPrefixSuffix) { + // Inject loop's statement prefix here since the regular one at the end + // of the loop will not get executed if 'continue' is triggered. + // In the case of 'break', a prefix is needed due to the loop's suffix. + xfix += Lua.injectId(Lua.STATEMENT_PREFIX, loop); + } + } + switch (block.getFieldValue('FLOW')) { + case 'BREAK': + return xfix + 'break\n'; + case 'CONTINUE': + return xfix + CONTINUE_STATEMENT; + } + throw Error('Unknown flow statement.'); +}; diff --git a/generators/lua/math.js b/generators/lua/math.js index b17821a333e..30cb1af8f42 100644 --- a/generators/lua/math.js +++ b/generators/lua/math.js @@ -1,406 +1,406 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for math blocks. - */ -'use strict'; - -goog.module('Blockly.Lua.math'); - -const Lua = goog.require('Blockly.Lua'); -const {NameType} = goog.require('Blockly.Names'); - - -Lua['math_number'] = function(block) { - // Numeric value. - const code = Number(block.getFieldValue('NUM')); - const order = code < 0 ? Lua.ORDER_UNARY : Lua.ORDER_ATOMIC; - return [code, order]; -}; - -Lua['math_arithmetic'] = function(block) { - // Basic arithmetic operators, and power. - const OPERATORS = { - 'ADD': [' + ', Lua.ORDER_ADDITIVE], - 'MINUS': [' - ', Lua.ORDER_ADDITIVE], - 'MULTIPLY': [' * ', Lua.ORDER_MULTIPLICATIVE], - 'DIVIDE': [' / ', Lua.ORDER_MULTIPLICATIVE], - 'POWER': [' ^ ', Lua.ORDER_EXPONENTIATION], - }; - const tuple = OPERATORS[block.getFieldValue('OP')]; - const operator = tuple[0]; - const order = tuple[1]; - const argument0 = Lua.valueToCode(block, 'A', order) || '0'; - const argument1 = Lua.valueToCode(block, 'B', order) || '0'; - const code = argument0 + operator + argument1; - return [code, order]; -}; - -Lua['math_single'] = function(block) { - // Math operators with single operand. - const operator = block.getFieldValue('OP'); - let arg; - if (operator === 'NEG') { - // Negation is a special case given its different operator precedence. - arg = Lua.valueToCode(block, 'NUM', Lua.ORDER_UNARY) || '0'; - return ['-' + arg, Lua.ORDER_UNARY]; - } - if (operator === 'POW10') { - arg = Lua.valueToCode(block, 'NUM', Lua.ORDER_EXPONENTIATION) || '0'; - return ['10 ^ ' + arg, Lua.ORDER_EXPONENTIATION]; - } - if (operator === 'ROUND') { - arg = Lua.valueToCode(block, 'NUM', Lua.ORDER_ADDITIVE) || '0'; - } else { - arg = Lua.valueToCode(block, 'NUM', Lua.ORDER_NONE) || '0'; - } - - let code; - switch (operator) { - case 'ABS': - code = 'math.abs(' + arg + ')'; - break; - case 'ROOT': - code = 'math.sqrt(' + arg + ')'; - break; - case 'LN': - code = 'math.log(' + arg + ')'; - break; - case 'LOG10': - code = 'math.log(' + arg + ', 10)'; - break; - case 'EXP': - code = 'math.exp(' + arg + ')'; - break; - case 'ROUND': - // This rounds up. Blockly does not specify rounding direction. - code = 'math.floor(' + arg + ' + .5)'; - break; - case 'ROUNDUP': - code = 'math.ceil(' + arg + ')'; - break; - case 'ROUNDDOWN': - code = 'math.floor(' + arg + ')'; - break; - case 'SIN': - code = 'math.sin(math.rad(' + arg + '))'; - break; - case 'COS': - code = 'math.cos(math.rad(' + arg + '))'; - break; - case 'TAN': - code = 'math.tan(math.rad(' + arg + '))'; - break; - case 'ASIN': - code = 'math.deg(math.asin(' + arg + '))'; - break; - case 'ACOS': - code = 'math.deg(math.acos(' + arg + '))'; - break; - case 'ATAN': - code = 'math.deg(math.atan(' + arg + '))'; - break; - default: - throw Error('Unknown math operator: ' + operator); - } - return [code, Lua.ORDER_HIGH]; -}; - -Lua['math_constant'] = function(block) { - // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. - const CONSTANTS = { - 'PI': ['math.pi', Lua.ORDER_HIGH], - 'E': ['math.exp(1)', Lua.ORDER_HIGH], - 'GOLDEN_RATIO': ['(1 + math.sqrt(5)) / 2', Lua.ORDER_MULTIPLICATIVE], - 'SQRT2': ['math.sqrt(2)', Lua.ORDER_HIGH], - 'SQRT1_2': ['math.sqrt(1 / 2)', Lua.ORDER_HIGH], - 'INFINITY': ['math.huge', Lua.ORDER_HIGH], - }; - return CONSTANTS[block.getFieldValue('CONSTANT')]; -}; - -Lua['math_number_property'] = function(block) { - // Check if a number is even, odd, prime, whole, positive, or negative - // or if it is divisible by certain number. Returns true or false. - const PROPERTIES = { - 'EVEN': [' % 2 == 0', Lua.ORDER_MULTIPLICATIVE, Lua.ORDER_RELATIONAL], - 'ODD': [' % 2 == 1', Lua.ORDER_MULTIPLICATIVE, Lua.ORDER_RELATIONAL], - 'WHOLE': [' % 1 == 0', Lua.ORDER_MULTIPLICATIVE, Lua.ORDER_RELATIONAL], - 'POSITIVE': [' > 0', Lua.ORDER_RELATIONAL, Lua.ORDER_RELATIONAL], - 'NEGATIVE': [' < 0', Lua.ORDER_RELATIONAL, Lua.ORDER_RELATIONAL], - 'DIVISIBLE_BY': [null, Lua.ORDER_MULTIPLICATIVE, Lua.ORDER_RELATIONAL], - 'PRIME': [null, Lua.ORDER_NONE, Lua.ORDER_HIGH], - }; - const dropdownProperty = block.getFieldValue('PROPERTY'); - const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; - const numberToCheck = Lua.valueToCode(block, 'NUMBER_TO_CHECK', - inputOrder) || '0'; - let code; - if (dropdownProperty === 'PRIME') { - // Prime is a special case as it is not a one-liner test. - const functionName = Lua.provideFunction_('math_isPrime', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(n) - -- https://en.wikipedia.org/wiki/Primality_test#Naive_methods - if n == 2 or n == 3 then - return true - end - -- False if n is NaN, negative, is 1, or not whole. - -- And false if n is divisible by 2 or 3. - if not(n > 1) or n % 1 ~= 0 or n % 2 == 0 or n % 3 == 0 then - return false - end - -- Check all the numbers of form 6k +/- 1, up to sqrt(n). - for x = 6, math.sqrt(n) + 1.5, 6 do - if n % (x - 1) == 0 or n % (x + 1) == 0 then - return false - end - end - return true -end -`); - code = functionName + '(' + numberToCheck + ')'; - } else if (dropdownProperty === 'DIVISIBLE_BY') { - const divisor = Lua.valueToCode(block, 'DIVISOR', - Lua.ORDER_MULTIPLICATIVE) || '0'; - // If 'divisor' is some code that evals to 0, Lua will produce a nan. - // Let's produce nil if we can determine this at compile-time. - if (divisor === '0') { - return ['nil', Lua.ORDER_ATOMIC]; - } - // The normal trick to implement ?: with and/or doesn't work here: - // divisor == 0 and nil or number_to_check % divisor == 0 - // because nil is false, so allow a runtime failure. :-( - code = numberToCheck + ' % ' + divisor + ' == 0'; - } else { - code = numberToCheck + suffix; - } - return [code, outputOrder]; -}; - -Lua['math_change'] = function(block) { - // Add to a variable in place. - const argument0 = Lua.valueToCode(block, 'DELTA', Lua.ORDER_ADDITIVE) || '0'; - const varName = - Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return varName + ' = ' + varName + ' + ' + argument0 + '\n'; -}; - -// Rounding functions have a single operand. -Lua['math_round'] = Lua['math_single']; -// Trigonometry functions have a single operand. -Lua['math_trig'] = Lua['math_single']; - -Lua['math_on_list'] = function(block) { - // Math functions for lists. - const func = block.getFieldValue('OP'); - const list = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; - let functionName; - - // Functions needed in more than one case. - function provideSum() { - return Lua.provideFunction_('math_sum', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) - local result = 0 - for _, v in ipairs(t) do - result = result + v - end - return result -end -`); - } - - switch (func) { - case 'SUM': - functionName = provideSum(); - break; - - case 'MIN': - // Returns 0 for the empty list. - functionName = Lua.provideFunction_('math_min', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) - if #t == 0 then - return 0 - end - local result = math.huge - for _, v in ipairs(t) do - if v < result then - result = v - end - end - return result -end -`); - break; - - case 'AVERAGE': - // Returns 0 for the empty list. - functionName = Lua.provideFunction_('math_average', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) - if #t == 0 then - return 0 - end - return ${provideSum()}(t) / #t -end -`); - break; - - case 'MAX': - // Returns 0 for the empty list. - functionName = Lua.provideFunction_('math_max', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) - if #t == 0 then - return 0 - end - local result = -math.huge - for _, v in ipairs(t) do - if v > result then - result = v - end - end - return result -end -`); - break; - - case 'MEDIAN': - // This operation excludes non-numbers. - functionName = Lua.provideFunction_('math_median', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) - -- Source: http://lua-users.org/wiki/SimpleStats - if #t == 0 then - return 0 - end - local temp = {} - for _, v in ipairs(t) do - if type(v) == 'number' then - table.insert(temp, v) - end - end - table.sort(temp) - if #temp % 2 == 0 then - return (temp[#temp / 2] + temp[(#temp / 2) + 1]) / 2 - else - return temp[math.ceil(#temp / 2)] - end -end -`); - break; - - case 'MODE': - // As a list of numbers can contain more than one mode, - // the returned result is provided as an array. - // The Lua version includes non-numbers. - functionName = Lua.provideFunction_('math_modes', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) - -- Source: http://lua-users.org/wiki/SimpleStats - local counts = {} - for _, v in ipairs(t) do - if counts[v] == nil then - counts[v] = 1 - else - counts[v] = counts[v] + 1 - end - end - local biggestCount = 0 - for _, v in pairs(counts) do - if v > biggestCount then - biggestCount = v - end - end - local temp = {} - for k, v in pairs(counts) do - if v == biggestCount then - table.insert(temp, k) - end - end - return temp -end -`); - break; - - case 'STD_DEV': - functionName = Lua.provideFunction_('math_standard_deviation', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) - local m - local vm - local total = 0 - local count = 0 - local result - m = #t == 0 and 0 or ${provideSum()}(t) / #t - for _, v in ipairs(t) do - if type(v) == 'number' then - vm = v - m - total = total + (vm * vm) - count = count + 1 - end - end - result = math.sqrt(total / (count-1)) - return result -end -`); - break; - - case 'RANDOM': - functionName = Lua.provideFunction_('math_random_list', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) - if #t == 0 then - return nil - end - return t[math.random(#t)] -end -`); - break; - - default: - throw Error('Unknown operator: ' + func); - } - return [functionName + '(' + list + ')', Lua.ORDER_HIGH]; -}; - -Lua['math_modulo'] = function(block) { - // Remainder computation. - const argument0 = - Lua.valueToCode(block, 'DIVIDEND', Lua.ORDER_MULTIPLICATIVE) || '0'; - const argument1 = - Lua.valueToCode(block, 'DIVISOR', Lua.ORDER_MULTIPLICATIVE) || '0'; - const code = argument0 + ' % ' + argument1; - return [code, Lua.ORDER_MULTIPLICATIVE]; -}; - -Lua['math_constrain'] = function(block) { - // Constrain a number between two limits. - const argument0 = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || '0'; - const argument1 = - Lua.valueToCode(block, 'LOW', Lua.ORDER_NONE) || '-math.huge'; - const argument2 = - Lua.valueToCode(block, 'HIGH', Lua.ORDER_NONE) || 'math.huge'; - const code = 'math.min(math.max(' + argument0 + ', ' + argument1 + '), ' + - argument2 + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['math_random_int'] = function(block) { - // Random integer between [X] and [Y]. - const argument0 = Lua.valueToCode(block, 'FROM', Lua.ORDER_NONE) || '0'; - const argument1 = Lua.valueToCode(block, 'TO', Lua.ORDER_NONE) || '0'; - const code = 'math.random(' + argument0 + ', ' + argument1 + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['math_random_float'] = function(block) { - // Random fraction between 0 and 1. - return ['math.random()', Lua.ORDER_HIGH]; -}; - -Lua['math_atan2'] = function(block) { - // Arctangent of point (X, Y) in degrees from -180 to 180. - const argument0 = Lua.valueToCode(block, 'X', Lua.ORDER_NONE) || '0'; - const argument1 = Lua.valueToCode(block, 'Y', Lua.ORDER_NONE) || '0'; - return [ - 'math.deg(math.atan2(' + argument1 + ', ' + argument0 + '))', Lua.ORDER_HIGH - ]; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for math blocks. + */ +'use strict'; + +goog.module('Blockly.Lua.math'); + +const Lua = goog.require('Blockly.Lua'); +const {NameType} = goog.require('Blockly.Names'); + + +Lua['math_number'] = function(block) { + // Numeric value. + const code = Number(block.getFieldValue('NUM')); + const order = code < 0 ? Lua.ORDER_UNARY : Lua.ORDER_ATOMIC; + return [code, order]; +}; + +Lua['math_arithmetic'] = function(block) { + // Basic arithmetic operators, and power. + const OPERATORS = { + 'ADD': [' + ', Lua.ORDER_ADDITIVE], + 'MINUS': [' - ', Lua.ORDER_ADDITIVE], + 'MULTIPLY': [' * ', Lua.ORDER_MULTIPLICATIVE], + 'DIVIDE': [' / ', Lua.ORDER_MULTIPLICATIVE], + 'POWER': [' ^ ', Lua.ORDER_EXPONENTIATION], + }; + const tuple = OPERATORS[block.getFieldValue('OP')]; + const operator = tuple[0]; + const order = tuple[1]; + const argument0 = Lua.valueToCode(block, 'A', order) || '0'; + const argument1 = Lua.valueToCode(block, 'B', order) || '0'; + const code = argument0 + operator + argument1; + return [code, order]; +}; + +Lua['math_single'] = function(block) { + // Math operators with single operand. + const operator = block.getFieldValue('OP'); + let arg; + if (operator === 'NEG') { + // Negation is a special case given its different operator precedence. + arg = Lua.valueToCode(block, 'NUM', Lua.ORDER_UNARY) || '0'; + return ['-' + arg, Lua.ORDER_UNARY]; + } + if (operator === 'POW10') { + arg = Lua.valueToCode(block, 'NUM', Lua.ORDER_EXPONENTIATION) || '0'; + return ['10 ^ ' + arg, Lua.ORDER_EXPONENTIATION]; + } + if (operator === 'ROUND') { + arg = Lua.valueToCode(block, 'NUM', Lua.ORDER_ADDITIVE) || '0'; + } else { + arg = Lua.valueToCode(block, 'NUM', Lua.ORDER_NONE) || '0'; + } + + let code; + switch (operator) { + case 'ABS': + code = 'math.abs(' + arg + ')'; + break; + case 'ROOT': + code = 'math.sqrt(' + arg + ')'; + break; + case 'LN': + code = 'math.log(' + arg + ')'; + break; + case 'LOG10': + code = 'math.log(' + arg + ', 10)'; + break; + case 'EXP': + code = 'math.exp(' + arg + ')'; + break; + case 'ROUND': + // This rounds up. Blockly does not specify rounding direction. + code = 'math.floor(' + arg + ' + .5)'; + break; + case 'ROUNDUP': + code = 'math.ceil(' + arg + ')'; + break; + case 'ROUNDDOWN': + code = 'math.floor(' + arg + ')'; + break; + case 'SIN': + code = 'math.sin(math.rad(' + arg + '))'; + break; + case 'COS': + code = 'math.cos(math.rad(' + arg + '))'; + break; + case 'TAN': + code = 'math.tan(math.rad(' + arg + '))'; + break; + case 'ASIN': + code = 'math.deg(math.asin(' + arg + '))'; + break; + case 'ACOS': + code = 'math.deg(math.acos(' + arg + '))'; + break; + case 'ATAN': + code = 'math.deg(math.atan(' + arg + '))'; + break; + default: + throw Error('Unknown math operator: ' + operator); + } + return [code, Lua.ORDER_HIGH]; +}; + +Lua['math_constant'] = function(block) { + // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. + const CONSTANTS = { + 'PI': ['math.pi', Lua.ORDER_HIGH], + 'E': ['math.exp(1)', Lua.ORDER_HIGH], + 'GOLDEN_RATIO': ['(1 + math.sqrt(5)) / 2', Lua.ORDER_MULTIPLICATIVE], + 'SQRT2': ['math.sqrt(2)', Lua.ORDER_HIGH], + 'SQRT1_2': ['math.sqrt(1 / 2)', Lua.ORDER_HIGH], + 'INFINITY': ['math.huge', Lua.ORDER_HIGH], + }; + return CONSTANTS[block.getFieldValue('CONSTANT')]; +}; + +Lua['math_number_property'] = function(block) { + // Check if a number is even, odd, prime, whole, positive, or negative + // or if it is divisible by certain number. Returns true or false. + const PROPERTIES = { + 'EVEN': [' % 2 == 0', Lua.ORDER_MULTIPLICATIVE, Lua.ORDER_RELATIONAL], + 'ODD': [' % 2 == 1', Lua.ORDER_MULTIPLICATIVE, Lua.ORDER_RELATIONAL], + 'WHOLE': [' % 1 == 0', Lua.ORDER_MULTIPLICATIVE, Lua.ORDER_RELATIONAL], + 'POSITIVE': [' > 0', Lua.ORDER_RELATIONAL, Lua.ORDER_RELATIONAL], + 'NEGATIVE': [' < 0', Lua.ORDER_RELATIONAL, Lua.ORDER_RELATIONAL], + 'DIVISIBLE_BY': [null, Lua.ORDER_MULTIPLICATIVE, Lua.ORDER_RELATIONAL], + 'PRIME': [null, Lua.ORDER_NONE, Lua.ORDER_HIGH], + }; + const dropdownProperty = block.getFieldValue('PROPERTY'); + const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; + const numberToCheck = Lua.valueToCode(block, 'NUMBER_TO_CHECK', + inputOrder) || '0'; + let code; + if (dropdownProperty === 'PRIME') { + // Prime is a special case as it is not a one-liner test. + const functionName = Lua.provideFunction_('math_isPrime', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(n) + -- https://en.wikipedia.org/wiki/Primality_test#Naive_methods + if n == 2 or n == 3 then + return true + end + -- False if n is NaN, negative, is 1, or not whole. + -- And false if n is divisible by 2 or 3. + if not(n > 1) or n % 1 ~= 0 or n % 2 == 0 or n % 3 == 0 then + return false + end + -- Check all the numbers of form 6k +/- 1, up to sqrt(n). + for x = 6, math.sqrt(n) + 1.5, 6 do + if n % (x - 1) == 0 or n % (x + 1) == 0 then + return false + end + end + return true +end +`); + code = functionName + '(' + numberToCheck + ')'; + } else if (dropdownProperty === 'DIVISIBLE_BY') { + const divisor = Lua.valueToCode(block, 'DIVISOR', + Lua.ORDER_MULTIPLICATIVE) || '0'; + // If 'divisor' is some code that evals to 0, Lua will produce a nan. + // Let's produce nil if we can determine this at compile-time. + if (divisor === '0') { + return ['nil', Lua.ORDER_ATOMIC]; + } + // The normal trick to implement ?: with and/or doesn't work here: + // divisor == 0 and nil or number_to_check % divisor == 0 + // because nil is false, so allow a runtime failure. :-( + code = numberToCheck + ' % ' + divisor + ' == 0'; + } else { + code = numberToCheck + suffix; + } + return [code, outputOrder]; +}; + +Lua['math_change'] = function(block) { + // Add to a variable in place. + const argument0 = Lua.valueToCode(block, 'DELTA', Lua.ORDER_ADDITIVE) || '0'; + const varName = + Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return varName + ' = ' + varName + ' + ' + argument0 + '\n'; +}; + +// Rounding functions have a single operand. +Lua['math_round'] = Lua['math_single']; +// Trigonometry functions have a single operand. +Lua['math_trig'] = Lua['math_single']; + +Lua['math_on_list'] = function(block) { + // Math functions for lists. + const func = block.getFieldValue('OP'); + const list = Lua.valueToCode(block, 'LIST', Lua.ORDER_NONE) || '{}'; + let functionName; + + // Functions needed in more than one case. + function provideSum() { + return Lua.provideFunction_('math_sum', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) + local result = 0 + for _, v in ipairs(t) do + result = result + v + end + return result +end +`); + } + + switch (func) { + case 'SUM': + functionName = provideSum(); + break; + + case 'MIN': + // Returns 0 for the empty list. + functionName = Lua.provideFunction_('math_min', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) + if #t == 0 then + return 0 + end + local result = math.huge + for _, v in ipairs(t) do + if v < result then + result = v + end + end + return result +end +`); + break; + + case 'AVERAGE': + // Returns 0 for the empty list. + functionName = Lua.provideFunction_('math_average', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) + if #t == 0 then + return 0 + end + return ${provideSum()}(t) / #t +end +`); + break; + + case 'MAX': + // Returns 0 for the empty list. + functionName = Lua.provideFunction_('math_max', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) + if #t == 0 then + return 0 + end + local result = -math.huge + for _, v in ipairs(t) do + if v > result then + result = v + end + end + return result +end +`); + break; + + case 'MEDIAN': + // This operation excludes non-numbers. + functionName = Lua.provideFunction_('math_median', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) + -- Source: http://lua-users.org/wiki/SimpleStats + if #t == 0 then + return 0 + end + local temp = {} + for _, v in ipairs(t) do + if type(v) == 'number' then + table.insert(temp, v) + end + end + table.sort(temp) + if #temp % 2 == 0 then + return (temp[#temp / 2] + temp[(#temp / 2) + 1]) / 2 + else + return temp[math.ceil(#temp / 2)] + end +end +`); + break; + + case 'MODE': + // As a list of numbers can contain more than one mode, + // the returned result is provided as an array. + // The Lua version includes non-numbers. + functionName = Lua.provideFunction_('math_modes', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) + -- Source: http://lua-users.org/wiki/SimpleStats + local counts = {} + for _, v in ipairs(t) do + if counts[v] == nil then + counts[v] = 1 + else + counts[v] = counts[v] + 1 + end + end + local biggestCount = 0 + for _, v in pairs(counts) do + if v > biggestCount then + biggestCount = v + end + end + local temp = {} + for k, v in pairs(counts) do + if v == biggestCount then + table.insert(temp, k) + end + end + return temp +end +`); + break; + + case 'STD_DEV': + functionName = Lua.provideFunction_('math_standard_deviation', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) + local m + local vm + local total = 0 + local count = 0 + local result + m = #t == 0 and 0 or ${provideSum()}(t) / #t + for _, v in ipairs(t) do + if type(v) == 'number' then + vm = v - m + total = total + (vm * vm) + count = count + 1 + end + end + result = math.sqrt(total / (count-1)) + return result +end +`); + break; + + case 'RANDOM': + functionName = Lua.provideFunction_('math_random_list', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(t) + if #t == 0 then + return nil + end + return t[math.random(#t)] +end +`); + break; + + default: + throw Error('Unknown operator: ' + func); + } + return [functionName + '(' + list + ')', Lua.ORDER_HIGH]; +}; + +Lua['math_modulo'] = function(block) { + // Remainder computation. + const argument0 = + Lua.valueToCode(block, 'DIVIDEND', Lua.ORDER_MULTIPLICATIVE) || '0'; + const argument1 = + Lua.valueToCode(block, 'DIVISOR', Lua.ORDER_MULTIPLICATIVE) || '0'; + const code = argument0 + ' % ' + argument1; + return [code, Lua.ORDER_MULTIPLICATIVE]; +}; + +Lua['math_constrain'] = function(block) { + // Constrain a number between two limits. + const argument0 = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || '0'; + const argument1 = + Lua.valueToCode(block, 'LOW', Lua.ORDER_NONE) || '-math.huge'; + const argument2 = + Lua.valueToCode(block, 'HIGH', Lua.ORDER_NONE) || 'math.huge'; + const code = 'math.min(math.max(' + argument0 + ', ' + argument1 + '), ' + + argument2 + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['math_random_int'] = function(block) { + // Random integer between [X] and [Y]. + const argument0 = Lua.valueToCode(block, 'FROM', Lua.ORDER_NONE) || '0'; + const argument1 = Lua.valueToCode(block, 'TO', Lua.ORDER_NONE) || '0'; + const code = 'math.random(' + argument0 + ', ' + argument1 + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['math_random_float'] = function(block) { + // Random fraction between 0 and 1. + return ['math.random()', Lua.ORDER_HIGH]; +}; + +Lua['math_atan2'] = function(block) { + // Arctangent of point (X, Y) in degrees from -180 to 180. + const argument0 = Lua.valueToCode(block, 'X', Lua.ORDER_NONE) || '0'; + const argument1 = Lua.valueToCode(block, 'Y', Lua.ORDER_NONE) || '0'; + return [ + 'math.deg(math.atan2(' + argument1 + ', ' + argument0 + '))', Lua.ORDER_HIGH + ]; +}; diff --git a/generators/lua/procedures.js b/generators/lua/procedures.js index 4ff5481858f..f8a1d877687 100644 --- a/generators/lua/procedures.js +++ b/generators/lua/procedures.js @@ -1,106 +1,106 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for procedure blocks. - */ -'use strict'; - -goog.module('Blockly.Lua.procedures'); - -const Lua = goog.require('Blockly.Lua'); -const {NameType} = goog.require('Blockly.Names'); - - -Lua['procedures_defreturn'] = function(block) { - // Define a procedure with a return value. - const funcName = - Lua.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); - let xfix1 = ''; - if (Lua.STATEMENT_PREFIX) { - xfix1 += Lua.injectId(Lua.STATEMENT_PREFIX, block); - } - if (Lua.STATEMENT_SUFFIX) { - xfix1 += Lua.injectId(Lua.STATEMENT_SUFFIX, block); - } - if (xfix1) { - xfix1 = Lua.prefixLines(xfix1, Lua.INDENT); - } - let loopTrap = ''; - if (Lua.INFINITE_LOOP_TRAP) { - loopTrap = Lua.prefixLines( - Lua.injectId(Lua.INFINITE_LOOP_TRAP, block), Lua.INDENT); - } - let branch = Lua.statementToCode(block, 'STACK'); - let returnValue = Lua.valueToCode(block, 'RETURN', Lua.ORDER_NONE) || ''; - let xfix2 = ''; - if (branch && returnValue) { - // After executing the function body, revisit this block for the return. - xfix2 = xfix1; - } - if (returnValue) { - returnValue = Lua.INDENT + 'return ' + returnValue + '\n'; - } else if (!branch) { - branch = ''; - } - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = Lua.nameDB_.getName(variables[i], NameType.VARIABLE); - } - let code = 'function ' + funcName + '(' + args.join(', ') + ')\n' + xfix1 + - loopTrap + branch + xfix2 + returnValue + 'end\n'; - code = Lua.scrub_(block, code); - // Add % so as not to collide with helper functions in definitions list. - Lua.definitions_['%' + funcName] = code; - return null; -}; - -// Defining a procedure without a return value uses the same generator as -// a procedure with a return value. -Lua['procedures_defnoreturn'] = Lua['procedures_defreturn']; - -Lua['procedures_callreturn'] = function(block) { - // Call a procedure with a return value. - const funcName = - Lua.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = Lua.valueToCode(block, 'ARG' + i, Lua.ORDER_NONE) || 'nil'; - } - const code = funcName + '(' + args.join(', ') + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['procedures_callnoreturn'] = function(block) { - // Call a procedure with no return value. - // Generated code is for a function call as a statement is the same as a - // function call as a value, with the addition of line ending. - const tuple = Lua['procedures_callreturn'](block); - return tuple[0] + '\n'; -}; - -Lua['procedures_ifreturn'] = function(block) { - // Conditionally return value from a procedure. - const condition = - Lua.valueToCode(block, 'CONDITION', Lua.ORDER_NONE) || 'false'; - let code = 'if ' + condition + ' then\n'; - if (Lua.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the return is triggered. - code += - Lua.prefixLines(Lua.injectId(Lua.STATEMENT_SUFFIX, block), Lua.INDENT); - } - if (block.hasReturnValue_) { - const value = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || 'nil'; - code += Lua.INDENT + 'return ' + value + '\n'; - } else { - code += Lua.INDENT + 'return\n'; - } - code += 'end\n'; - return code; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for procedure blocks. + */ +'use strict'; + +goog.module('Blockly.Lua.procedures'); + +const Lua = goog.require('Blockly.Lua'); +const {NameType} = goog.require('Blockly.Names'); + + +Lua['procedures_defreturn'] = function(block) { + // Define a procedure with a return value. + const funcName = + Lua.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); + let xfix1 = ''; + if (Lua.STATEMENT_PREFIX) { + xfix1 += Lua.injectId(Lua.STATEMENT_PREFIX, block); + } + if (Lua.STATEMENT_SUFFIX) { + xfix1 += Lua.injectId(Lua.STATEMENT_SUFFIX, block); + } + if (xfix1) { + xfix1 = Lua.prefixLines(xfix1, Lua.INDENT); + } + let loopTrap = ''; + if (Lua.INFINITE_LOOP_TRAP) { + loopTrap = Lua.prefixLines( + Lua.injectId(Lua.INFINITE_LOOP_TRAP, block), Lua.INDENT); + } + let branch = Lua.statementToCode(block, 'STACK'); + let returnValue = Lua.valueToCode(block, 'RETURN', Lua.ORDER_NONE) || ''; + let xfix2 = ''; + if (branch && returnValue) { + // After executing the function body, revisit this block for the return. + xfix2 = xfix1; + } + if (returnValue) { + returnValue = Lua.INDENT + 'return ' + returnValue + '\n'; + } else if (!branch) { + branch = ''; + } + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i] = Lua.nameDB_.getName(variables[i], NameType.VARIABLE); + } + let code = 'function ' + funcName + '(' + args.join(', ') + ')\n' + xfix1 + + loopTrap + branch + xfix2 + returnValue + 'end\n'; + code = Lua.scrub_(block, code); + // Add % so as not to collide with helper functions in definitions list. + Lua.definitions_['%' + funcName] = code; + return null; +}; + +// Defining a procedure without a return value uses the same generator as +// a procedure with a return value. +Lua['procedures_defnoreturn'] = Lua['procedures_defreturn']; + +Lua['procedures_callreturn'] = function(block) { + // Call a procedure with a return value. + const funcName = + Lua.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i] = Lua.valueToCode(block, 'ARG' + i, Lua.ORDER_NONE) || 'nil'; + } + const code = funcName + '(' + args.join(', ') + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['procedures_callnoreturn'] = function(block) { + // Call a procedure with no return value. + // Generated code is for a function call as a statement is the same as a + // function call as a value, with the addition of line ending. + const tuple = Lua['procedures_callreturn'](block); + return tuple[0] + '\n'; +}; + +Lua['procedures_ifreturn'] = function(block) { + // Conditionally return value from a procedure. + const condition = + Lua.valueToCode(block, 'CONDITION', Lua.ORDER_NONE) || 'false'; + let code = 'if ' + condition + ' then\n'; + if (Lua.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the return is triggered. + code += + Lua.prefixLines(Lua.injectId(Lua.STATEMENT_SUFFIX, block), Lua.INDENT); + } + if (block.hasReturnValue_) { + const value = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || 'nil'; + code += Lua.INDENT + 'return ' + value + '\n'; + } else { + code += Lua.INDENT + 'return\n'; + } + code += 'end\n'; + return code; +}; diff --git a/generators/lua/text.js b/generators/lua/text.js index 74fe842d8e3..fb794480d74 100644 --- a/generators/lua/text.js +++ b/generators/lua/text.js @@ -1,327 +1,327 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for text blocks. - */ -'use strict'; - -goog.module('Blockly.Lua.texts'); - -const Lua = goog.require('Blockly.Lua'); -const {NameType} = goog.require('Blockly.Names'); - - -Lua['text'] = function(block) { - // Text value. - const code = Lua.quote_(block.getFieldValue('TEXT')); - return [code, Lua.ORDER_ATOMIC]; -}; - -Lua['text_multiline'] = function(block) { - // Text value. - const code = Lua.multiline_quote_(block.getFieldValue('TEXT')); - const order = - code.indexOf('..') !== -1 ? Lua.ORDER_CONCATENATION : Lua.ORDER_ATOMIC; - return [code, order]; -}; - -Lua['text_join'] = function(block) { - // Create a string made up of any number of elements of any type. - if (block.itemCount_ === 0) { - return ["''", Lua.ORDER_ATOMIC]; - } else if (block.itemCount_ === 1) { - const element = Lua.valueToCode(block, 'ADD0', Lua.ORDER_NONE) || "''"; - const code = 'tostring(' + element + ')'; - return [code, Lua.ORDER_HIGH]; - } else if (block.itemCount_ === 2) { - const element0 = - Lua.valueToCode(block, 'ADD0', Lua.ORDER_CONCATENATION) || "''"; - const element1 = - Lua.valueToCode(block, 'ADD1', Lua.ORDER_CONCATENATION) || "''"; - const code = element0 + ' .. ' + element1; - return [code, Lua.ORDER_CONCATENATION]; - } else { - const elements = []; - for (let i = 0; i < block.itemCount_; i++) { - elements[i] = Lua.valueToCode(block, 'ADD' + i, Lua.ORDER_NONE) || "''"; - } - const code = 'table.concat({' + elements.join(', ') + '})'; - return [code, Lua.ORDER_HIGH]; - } -}; - -Lua['text_append'] = function(block) { - // Append to a variable in place. - const varName = - Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const value = - Lua.valueToCode(block, 'TEXT', Lua.ORDER_CONCATENATION) || "''"; - return varName + ' = ' + varName + ' .. ' + value + '\n'; -}; - -Lua['text_length'] = function(block) { - // String or array length. - const text = Lua.valueToCode(block, 'VALUE', Lua.ORDER_UNARY) || "''"; - return ['#' + text, Lua.ORDER_UNARY]; -}; - -Lua['text_isEmpty'] = function(block) { - // Is the string null or array empty? - const text = Lua.valueToCode(block, 'VALUE', Lua.ORDER_UNARY) || "''"; - return ['#' + text + ' == 0', Lua.ORDER_RELATIONAL]; -}; - -Lua['text_indexOf'] = function(block) { - // Search the text for a substring. - const substring = Lua.valueToCode(block, 'FIND', Lua.ORDER_NONE) || "''"; - const text = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || "''"; - let functionName; - if (block.getFieldValue('END') === 'FIRST') { - functionName = Lua.provideFunction_('firstIndexOf', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str, substr) - local i = string.find(str, substr, 1, true) - if i == nil then - return 0 - end - return i -end -`); - } else { - functionName = Lua.provideFunction_('lastIndexOf', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str, substr) - local i = string.find(string.reverse(str), string.reverse(substr), 1, true) - if i then - return #str + 2 - i - #substr - end - return 0 -end -`); - } - const code = functionName + '(' + text + ', ' + substring + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['text_charAt'] = function(block) { - // Get letter at index. - // Note: Until January 2013 this block did not have the WHERE input. - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const atOrder = (where === 'FROM_END') ? Lua.ORDER_UNARY : Lua.ORDER_NONE; - const at = Lua.valueToCode(block, 'AT', atOrder) || '1'; - const text = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || "''"; - let code; - if (where === 'RANDOM') { - const functionName = Lua.provideFunction_('text_random_letter', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str) - local index = math.random(string.len(str)) - return string.sub(str, index, index) -end -`); - code = functionName + '(' + text + ')'; - } else { - let start; - if (where === 'FIRST') { - start = '1'; - } else if (where === 'LAST') { - start = '-1'; - } else { - if (where === 'FROM_START') { - start = at; - } else if (where === 'FROM_END') { - start = '-' + at; - } else { - throw Error('Unhandled option (text_charAt).'); - } - } - if (start.match(/^-?\w*$/)) { - code = 'string.sub(' + text + ', ' + start + ', ' + start + ')'; - } else { - // use function to avoid reevaluation - const functionName = Lua.provideFunction_('text_char_at', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str, index) - return string.sub(str, index, index) -end -`); - code = functionName + '(' + text + ', ' + start + ')'; - } - } - return [code, Lua.ORDER_HIGH]; -}; - -Lua['text_getSubstring'] = function(block) { - // Get substring. - const text = Lua.valueToCode(block, 'STRING', Lua.ORDER_NONE) || "''"; - - // Get start index. - const where1 = block.getFieldValue('WHERE1'); - const at1Order = (where1 === 'FROM_END') ? Lua.ORDER_UNARY : Lua.ORDER_NONE; - const at1 = Lua.valueToCode(block, 'AT1', at1Order) || '1'; - let start; - if (where1 === 'FIRST') { - start = 1; - } else if (where1 === 'FROM_START') { - start = at1; - } else if (where1 === 'FROM_END') { - start = '-' + at1; - } else { - throw Error('Unhandled option (text_getSubstring)'); - } - - // Get end index. - const where2 = block.getFieldValue('WHERE2'); - const at2Order = (where2 === 'FROM_END') ? Lua.ORDER_UNARY : Lua.ORDER_NONE; - const at2 = Lua.valueToCode(block, 'AT2', at2Order) || '1'; - let end; - if (where2 === 'LAST') { - end = -1; - } else if (where2 === 'FROM_START') { - end = at2; - } else if (where2 === 'FROM_END') { - end = '-' + at2; - } else { - throw Error('Unhandled option (text_getSubstring)'); - } - const code = 'string.sub(' + text + ', ' + start + ', ' + end + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['text_changeCase'] = function(block) { - // Change capitalization. - const operator = block.getFieldValue('CASE'); - const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; - let functionName; - if (operator === 'UPPERCASE') { - functionName = 'string.upper'; - } else if (operator === 'LOWERCASE') { - functionName = 'string.lower'; - } else if (operator === 'TITLECASE') { - // There are shorter versions at - // http://lua-users.org/wiki/SciteTitleCase - // that do not preserve whitespace. - functionName = Lua.provideFunction_('text_titlecase', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str) - local buf = {} - local inWord = false - for i = 1, #str do - local c = string.sub(str, i, i) - if inWord then - table.insert(buf, string.lower(c)) - if string.find(c, "%s") then - inWord = false - end - else - table.insert(buf, string.upper(c)) - inWord = true - end - end - return table.concat(buf) -end -`); - } - const code = functionName + '(' + text + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['text_trim'] = function(block) { - // Trim spaces. - const OPERATORS = {LEFT: '^%s*(,-)', RIGHT: '(.-)%s*$', BOTH: '^%s*(.-)%s*$'}; - const operator = OPERATORS[block.getFieldValue('MODE')]; - const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; - const code = 'string.gsub(' + text + ', "' + operator + '", "%1")'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['text_print'] = function(block) { - // Print statement. - const msg = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; - return 'print(' + msg + ')\n'; -}; - -Lua['text_prompt_ext'] = function(block) { - // Prompt function. - let msg; - if (block.getField('TEXT')) { - // Internal message. - msg = Lua.quote_(block.getFieldValue('TEXT')); - } else { - // External message. - msg = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; - } - - const functionName = Lua.provideFunction_('text_prompt', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(msg) - io.write(msg) - io.flush() - return io.read() -end -`); - let code = functionName + '(' + msg + ')'; - - const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; - if (toNumber) { - code = 'tonumber(' + code + ', 10)'; - } - return [code, Lua.ORDER_HIGH]; -}; - -Lua['text_prompt'] = Lua['text_prompt_ext']; - -Lua['text_count'] = function(block) { - const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; - const sub = Lua.valueToCode(block, 'SUB', Lua.ORDER_NONE) || "''"; - const functionName = Lua.provideFunction_('text_count', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle) - if #needle == 0 then - return #haystack + 1 - end - local i = 1 - local count = 0 - while true do - i = string.find(haystack, needle, i, true) - if i == nil then - break - end - count = count + 1 - i = i + #needle - end - return count -end -`); - const code = functionName + '(' + text + ', ' + sub + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['text_replace'] = function(block) { - const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; - const from = Lua.valueToCode(block, 'FROM', Lua.ORDER_NONE) || "''"; - const to = Lua.valueToCode(block, 'TO', Lua.ORDER_NONE) || "''"; - const functionName = Lua.provideFunction_('text_replace', ` -function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle, replacement) - local buf = {} - local i = 1 - while i <= #haystack do - if string.sub(haystack, i, i + #needle - 1) == needle then - for j = 1, #replacement do - table.insert(buf, string.sub(replacement, j, j)) - end - i = i + #needle - else - table.insert(buf, string.sub(haystack, i, i)) - i = i + 1 - end - end - return table.concat(buf) -end -`); - const code = functionName + '(' + text + ', ' + from + ', ' + to + ')'; - return [code, Lua.ORDER_HIGH]; -}; - -Lua['text_reverse'] = function(block) { - const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; - const code = 'string.reverse(' + text + ')'; - return [code, Lua.ORDER_HIGH]; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for text blocks. + */ +'use strict'; + +goog.module('Blockly.Lua.texts'); + +const Lua = goog.require('Blockly.Lua'); +const {NameType} = goog.require('Blockly.Names'); + + +Lua['text'] = function(block) { + // Text value. + const code = Lua.quote_(block.getFieldValue('TEXT')); + return [code, Lua.ORDER_ATOMIC]; +}; + +Lua['text_multiline'] = function(block) { + // Text value. + const code = Lua.multiline_quote_(block.getFieldValue('TEXT')); + const order = + code.indexOf('..') !== -1 ? Lua.ORDER_CONCATENATION : Lua.ORDER_ATOMIC; + return [code, order]; +}; + +Lua['text_join'] = function(block) { + // Create a string made up of any number of elements of any type. + if (block.itemCount_ === 0) { + return ["''", Lua.ORDER_ATOMIC]; + } else if (block.itemCount_ === 1) { + const element = Lua.valueToCode(block, 'ADD0', Lua.ORDER_NONE) || "''"; + const code = 'tostring(' + element + ')'; + return [code, Lua.ORDER_HIGH]; + } else if (block.itemCount_ === 2) { + const element0 = + Lua.valueToCode(block, 'ADD0', Lua.ORDER_CONCATENATION) || "''"; + const element1 = + Lua.valueToCode(block, 'ADD1', Lua.ORDER_CONCATENATION) || "''"; + const code = element0 + ' .. ' + element1; + return [code, Lua.ORDER_CONCATENATION]; + } else { + const elements = []; + for (let i = 0; i < block.itemCount_; i++) { + elements[i] = Lua.valueToCode(block, 'ADD' + i, Lua.ORDER_NONE) || "''"; + } + const code = 'table.concat({' + elements.join(', ') + '})'; + return [code, Lua.ORDER_HIGH]; + } +}; + +Lua['text_append'] = function(block) { + // Append to a variable in place. + const varName = + Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const value = + Lua.valueToCode(block, 'TEXT', Lua.ORDER_CONCATENATION) || "''"; + return varName + ' = ' + varName + ' .. ' + value + '\n'; +}; + +Lua['text_length'] = function(block) { + // String or array length. + const text = Lua.valueToCode(block, 'VALUE', Lua.ORDER_UNARY) || "''"; + return ['#' + text, Lua.ORDER_UNARY]; +}; + +Lua['text_isEmpty'] = function(block) { + // Is the string null or array empty? + const text = Lua.valueToCode(block, 'VALUE', Lua.ORDER_UNARY) || "''"; + return ['#' + text + ' == 0', Lua.ORDER_RELATIONAL]; +}; + +Lua['text_indexOf'] = function(block) { + // Search the text for a substring. + const substring = Lua.valueToCode(block, 'FIND', Lua.ORDER_NONE) || "''"; + const text = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || "''"; + let functionName; + if (block.getFieldValue('END') === 'FIRST') { + functionName = Lua.provideFunction_('firstIndexOf', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str, substr) + local i = string.find(str, substr, 1, true) + if i == nil then + return 0 + end + return i +end +`); + } else { + functionName = Lua.provideFunction_('lastIndexOf', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str, substr) + local i = string.find(string.reverse(str), string.reverse(substr), 1, true) + if i then + return #str + 2 - i - #substr + end + return 0 +end +`); + } + const code = functionName + '(' + text + ', ' + substring + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['text_charAt'] = function(block) { + // Get letter at index. + // Note: Until January 2013 this block did not have the WHERE input. + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const atOrder = (where === 'FROM_END') ? Lua.ORDER_UNARY : Lua.ORDER_NONE; + const at = Lua.valueToCode(block, 'AT', atOrder) || '1'; + const text = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || "''"; + let code; + if (where === 'RANDOM') { + const functionName = Lua.provideFunction_('text_random_letter', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str) + local index = math.random(string.len(str)) + return string.sub(str, index, index) +end +`); + code = functionName + '(' + text + ')'; + } else { + let start; + if (where === 'FIRST') { + start = '1'; + } else if (where === 'LAST') { + start = '-1'; + } else { + if (where === 'FROM_START') { + start = at; + } else if (where === 'FROM_END') { + start = '-' + at; + } else { + throw Error('Unhandled option (text_charAt).'); + } + } + if (start.match(/^-?\w*$/)) { + code = 'string.sub(' + text + ', ' + start + ', ' + start + ')'; + } else { + // use function to avoid reevaluation + const functionName = Lua.provideFunction_('text_char_at', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str, index) + return string.sub(str, index, index) +end +`); + code = functionName + '(' + text + ', ' + start + ')'; + } + } + return [code, Lua.ORDER_HIGH]; +}; + +Lua['text_getSubstring'] = function(block) { + // Get substring. + const text = Lua.valueToCode(block, 'STRING', Lua.ORDER_NONE) || "''"; + + // Get start index. + const where1 = block.getFieldValue('WHERE1'); + const at1Order = (where1 === 'FROM_END') ? Lua.ORDER_UNARY : Lua.ORDER_NONE; + const at1 = Lua.valueToCode(block, 'AT1', at1Order) || '1'; + let start; + if (where1 === 'FIRST') { + start = 1; + } else if (where1 === 'FROM_START') { + start = at1; + } else if (where1 === 'FROM_END') { + start = '-' + at1; + } else { + throw Error('Unhandled option (text_getSubstring)'); + } + + // Get end index. + const where2 = block.getFieldValue('WHERE2'); + const at2Order = (where2 === 'FROM_END') ? Lua.ORDER_UNARY : Lua.ORDER_NONE; + const at2 = Lua.valueToCode(block, 'AT2', at2Order) || '1'; + let end; + if (where2 === 'LAST') { + end = -1; + } else if (where2 === 'FROM_START') { + end = at2; + } else if (where2 === 'FROM_END') { + end = '-' + at2; + } else { + throw Error('Unhandled option (text_getSubstring)'); + } + const code = 'string.sub(' + text + ', ' + start + ', ' + end + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['text_changeCase'] = function(block) { + // Change capitalization. + const operator = block.getFieldValue('CASE'); + const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; + let functionName; + if (operator === 'UPPERCASE') { + functionName = 'string.upper'; + } else if (operator === 'LOWERCASE') { + functionName = 'string.lower'; + } else if (operator === 'TITLECASE') { + // There are shorter versions at + // http://lua-users.org/wiki/SciteTitleCase + // that do not preserve whitespace. + functionName = Lua.provideFunction_('text_titlecase', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(str) + local buf = {} + local inWord = false + for i = 1, #str do + local c = string.sub(str, i, i) + if inWord then + table.insert(buf, string.lower(c)) + if string.find(c, "%s") then + inWord = false + end + else + table.insert(buf, string.upper(c)) + inWord = true + end + end + return table.concat(buf) +end +`); + } + const code = functionName + '(' + text + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['text_trim'] = function(block) { + // Trim spaces. + const OPERATORS = {LEFT: '^%s*(,-)', RIGHT: '(.-)%s*$', BOTH: '^%s*(.-)%s*$'}; + const operator = OPERATORS[block.getFieldValue('MODE')]; + const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; + const code = 'string.gsub(' + text + ', "' + operator + '", "%1")'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['text_print'] = function(block) { + // Print statement. + const msg = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; + return 'print(' + msg + ')\n'; +}; + +Lua['text_prompt_ext'] = function(block) { + // Prompt function. + let msg; + if (block.getField('TEXT')) { + // Internal message. + msg = Lua.quote_(block.getFieldValue('TEXT')); + } else { + // External message. + msg = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; + } + + const functionName = Lua.provideFunction_('text_prompt', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(msg) + io.write(msg) + io.flush() + return io.read() +end +`); + let code = functionName + '(' + msg + ')'; + + const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; + if (toNumber) { + code = 'tonumber(' + code + ', 10)'; + } + return [code, Lua.ORDER_HIGH]; +}; + +Lua['text_prompt'] = Lua['text_prompt_ext']; + +Lua['text_count'] = function(block) { + const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; + const sub = Lua.valueToCode(block, 'SUB', Lua.ORDER_NONE) || "''"; + const functionName = Lua.provideFunction_('text_count', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle) + if #needle == 0 then + return #haystack + 1 + end + local i = 1 + local count = 0 + while true do + i = string.find(haystack, needle, i, true) + if i == nil then + break + end + count = count + 1 + i = i + #needle + end + return count +end +`); + const code = functionName + '(' + text + ', ' + sub + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['text_replace'] = function(block) { + const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; + const from = Lua.valueToCode(block, 'FROM', Lua.ORDER_NONE) || "''"; + const to = Lua.valueToCode(block, 'TO', Lua.ORDER_NONE) || "''"; + const functionName = Lua.provideFunction_('text_replace', ` +function ${Lua.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle, replacement) + local buf = {} + local i = 1 + while i <= #haystack do + if string.sub(haystack, i, i + #needle - 1) == needle then + for j = 1, #replacement do + table.insert(buf, string.sub(replacement, j, j)) + end + i = i + #needle + else + table.insert(buf, string.sub(haystack, i, i)) + i = i + 1 + end + end + return table.concat(buf) +end +`); + const code = functionName + '(' + text + ', ' + from + ', ' + to + ')'; + return [code, Lua.ORDER_HIGH]; +}; + +Lua['text_reverse'] = function(block) { + const text = Lua.valueToCode(block, 'TEXT', Lua.ORDER_NONE) || "''"; + const code = 'string.reverse(' + text + ')'; + return [code, Lua.ORDER_HIGH]; +}; diff --git a/generators/lua/variables.js b/generators/lua/variables.js index a57e601125c..2900fb8c00b 100644 --- a/generators/lua/variables.js +++ b/generators/lua/variables.js @@ -1,31 +1,31 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for variable blocks. - */ -'use strict'; - -goog.module('Blockly.Lua.variables'); - -const Lua = goog.require('Blockly.Lua'); -const {NameType} = goog.require('Blockly.Names'); - - -Lua['variables_get'] = function(block) { - // Variable getter. - const code = - Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return [code, Lua.ORDER_ATOMIC]; -}; - -Lua['variables_set'] = function(block) { - // Variable setter. - const argument0 = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || '0'; - const varName = - Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return varName + ' = ' + argument0 + '\n'; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for variable blocks. + */ +'use strict'; + +goog.module('Blockly.Lua.variables'); + +const Lua = goog.require('Blockly.Lua'); +const {NameType} = goog.require('Blockly.Names'); + + +Lua['variables_get'] = function(block) { + // Variable getter. + const code = + Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return [code, Lua.ORDER_ATOMIC]; +}; + +Lua['variables_set'] = function(block) { + // Variable setter. + const argument0 = Lua.valueToCode(block, 'VALUE', Lua.ORDER_NONE) || '0'; + const varName = + Lua.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return varName + ' = ' + argument0 + '\n'; +}; diff --git a/generators/lua/variables_dynamic.js b/generators/lua/variables_dynamic.js index b15859aa75d..f45fb23176a 100644 --- a/generators/lua/variables_dynamic.js +++ b/generators/lua/variables_dynamic.js @@ -1,21 +1,21 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for dynamic variable blocks. - */ -'use strict'; - -goog.module('Blockly.Lua.variablesDynamic'); - -const Lua = goog.require('Blockly.Lua'); -/** @suppress {extraRequire} */ -goog.require('Blockly.Lua.variables'); - - -// Lua is dynamically typed. -Lua['variables_get_dynamic'] = Lua['variables_get']; -Lua['variables_set_dynamic'] = Lua['variables_set']; +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for dynamic variable blocks. + */ +'use strict'; + +goog.module('Blockly.Lua.variablesDynamic'); + +const Lua = goog.require('Blockly.Lua'); +/** @suppress {extraRequire} */ +goog.require('Blockly.Lua.variables'); + + +// Lua is dynamically typed. +Lua['variables_get_dynamic'] = Lua['variables_get']; +Lua['variables_set_dynamic'] = Lua['variables_set']; diff --git a/generators/php.js b/generators/php.js index 703396a9a5d..d2e68fb56c9 100644 --- a/generators/php.js +++ b/generators/php.js @@ -1,304 +1,304 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Helper functions for generating PHP for blocks. - * @suppress {checkTypes|globalThis} - */ -'use strict'; - -goog.module('Blockly.PHP'); -goog.module.declareLegacyNamespace(); - -const objectUtils = goog.require('Blockly.utils.object'); -const stringUtils = goog.require('Blockly.utils.string'); -const {Block} = goog.requireType('Blockly.Block'); -const {Generator} = goog.require('Blockly.Generator'); -const {inputTypes} = goog.require('Blockly.inputTypes'); -const {Names} = goog.require('Blockly.Names'); -const {Workspace} = goog.requireType('Blockly.Workspace'); - - -/** - * PHP code generator. - * @type {!Generator} - */ -const PHP = new Generator('PHP'); - -/** - * List of illegal variable names. - * This is not intended to be a security feature. Blockly is 100% client-side, - * so bypassing this list is trivial. This is intended to prevent users from - * accidentally clobbering a built-in object or function. - */ -PHP.addReservedWords( - // http://php.net/manual/en/reserved.keywords.php - '__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,' + - 'clone,const,continue,declare,default,die,do,echo,else,elseif,empty,' + - 'enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,' + - 'final,for,foreach,function,global,goto,if,implements,include,' + - 'include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,' + - 'print,private,protected,public,require,require_once,return,static,' + - 'switch,throw,trait,try,unset,use,var,while,xor,' + - // http://php.net/manual/en/reserved.constants.php - 'PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,' + - 'PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,' + - 'PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,' + - 'PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,' + - 'PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,PHP_SYSCONFDIR,' + - 'PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,PHP_CONFIG_FILE_SCAN_DIR,' + - 'PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,E_NOTICE,E_CORE_ERROR,' + - 'E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,E_USER_ERROR,' + - 'E_USER_WARNING,E_USER_NOTICE,E_DEPRECATED,E_USER_DEPRECATED,E_ALL,' + - 'E_STRICT,__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,' + - '__FILE__,__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__'); - -/** - * Order of operation ENUMs. - * http://php.net/manual/en/language.operators.precedence.php - */ -PHP.ORDER_ATOMIC = 0; // 0 "" ... -PHP.ORDER_CLONE = 1; // clone -PHP.ORDER_NEW = 1; // new -PHP.ORDER_MEMBER = 2.1; // [] -PHP.ORDER_FUNCTION_CALL = 2.2; // () -PHP.ORDER_POWER = 3; // ** -PHP.ORDER_INCREMENT = 4; // ++ -PHP.ORDER_DECREMENT = 4; // -- -PHP.ORDER_BITWISE_NOT = 4; // ~ -PHP.ORDER_CAST = 4; // (int) (float) (string) (array) ... -PHP.ORDER_SUPPRESS_ERROR = 4; // @ -PHP.ORDER_INSTANCEOF = 5; // instanceof -PHP.ORDER_LOGICAL_NOT = 6; // ! -PHP.ORDER_UNARY_PLUS = 7.1; // + -PHP.ORDER_UNARY_NEGATION = 7.2; // - -PHP.ORDER_MULTIPLICATION = 8.1; // * -PHP.ORDER_DIVISION = 8.2; // / -PHP.ORDER_MODULUS = 8.3; // % -PHP.ORDER_ADDITION = 9.1; // + -PHP.ORDER_SUBTRACTION = 9.2; // - -PHP.ORDER_STRING_CONCAT = 9.3; // . -PHP.ORDER_BITWISE_SHIFT = 10; // << >> -PHP.ORDER_RELATIONAL = 11; // < <= > >= -PHP.ORDER_EQUALITY = 12; // == != === !== <> <=> -PHP.ORDER_REFERENCE = 13; // & -PHP.ORDER_BITWISE_AND = 13; // & -PHP.ORDER_BITWISE_XOR = 14; // ^ -PHP.ORDER_BITWISE_OR = 15; // | -PHP.ORDER_LOGICAL_AND = 16; // && -PHP.ORDER_LOGICAL_OR = 17; // || -PHP.ORDER_IF_NULL = 18; // ?? -PHP.ORDER_CONDITIONAL = 19; // ?: -PHP.ORDER_ASSIGNMENT = 20; // = += -= *= /= %= <<= >>= ... -PHP.ORDER_LOGICAL_AND_WEAK = 21; // and -PHP.ORDER_LOGICAL_XOR = 22; // xor -PHP.ORDER_LOGICAL_OR_WEAK = 23; // or -PHP.ORDER_NONE = 99; // (...) - -/** - * List of outer-inner pairings that do NOT require parentheses. - * @type {!Array>} - */ -PHP.ORDER_OVERRIDES = [ - // (foo()).bar() -> foo().bar() - // (foo())[0] -> foo()[0] - [PHP.ORDER_MEMBER, PHP.ORDER_FUNCTION_CALL], - // (foo[0])[1] -> foo[0][1] - // (foo.bar).baz -> foo.bar.baz - [PHP.ORDER_MEMBER, PHP.ORDER_MEMBER], - // !(!foo) -> !!foo - [PHP.ORDER_LOGICAL_NOT, PHP.ORDER_LOGICAL_NOT], - // a * (b * c) -> a * b * c - [PHP.ORDER_MULTIPLICATION, PHP.ORDER_MULTIPLICATION], - // a + (b + c) -> a + b + c - [PHP.ORDER_ADDITION, PHP.ORDER_ADDITION], - // a && (b && c) -> a && b && c - [PHP.ORDER_LOGICAL_AND, PHP.ORDER_LOGICAL_AND], - // a || (b || c) -> a || b || c - [PHP.ORDER_LOGICAL_OR, PHP.ORDER_LOGICAL_OR] -]; - -/** - * Whether the init method has been called. - * @type {?boolean} - */ -PHP.isInitialized = false; - -/** - * Initialise the database of variable names. - * @param {!Workspace} workspace Workspace to generate code from. - */ -PHP.init = function(workspace) { - // Call Blockly.Generator's init. - Object.getPrototypeOf(this).init.call(this); - - if (!this.nameDB_) { - this.nameDB_ = new Names(this.RESERVED_WORDS_, '$'); - } else { - this.nameDB_.reset(); - } - - this.nameDB_.setVariableMap(workspace.getVariableMap()); - this.nameDB_.populateVariables(workspace); - this.nameDB_.populateProcedures(workspace); - - this.isInitialized = true; -}; - -/** - * Prepend the generated code with the variable definitions. - * @param {string} code Generated code. - * @return {string} Completed code. - */ -PHP.finish = function(code) { - // Convert the definitions dictionary into a list. - const definitions = objectUtils.values(this.definitions_); - // Call Blockly.Generator's finish. - code = Object.getPrototypeOf(this).finish.call(this, code); - this.isInitialized = false; - - this.nameDB_.reset(); - return definitions.join('\n\n') + '\n\n\n' + code; -}; - -/** - * Naked values are top-level blocks with outputs that aren't plugged into - * anything. A trailing semicolon is needed to make this legal. - * @param {string} line Line of generated code. - * @return {string} Legal line of code. - */ -PHP.scrubNakedValue = function(line) { - return line + ';\n'; -}; - -/** - * Encode a string as a properly escaped PHP string, complete with - * quotes. - * @param {string} string Text to encode. - * @return {string} PHP string. - * @protected - */ -PHP.quote_ = function(string) { - string = string.replace(/\\/g, '\\\\') - .replace(/\n/g, '\\\n') - .replace(/'/g, '\\\''); - return '\'' + string + '\''; -}; - -/** - * Encode a string as a properly escaped multiline PHP string, complete with - * quotes. - * @param {string} string Text to encode. - * @return {string} PHP string. - * @protected - */ -PHP.multiline_quote_ = function(string) { - const lines = string.split(/\n/g).map(this.quote_); - // Join with the following, plus a newline: - // . "\n" . - // Newline escaping only works in double-quoted strings. - return lines.join(' . \"\\n\" .\n'); -}; - -/** - * Common tasks for generating PHP from blocks. - * Handles comments for the specified block and any connected value blocks. - * Calls any statements following this block. - * @param {!Block} block The current block. - * @param {string} code The PHP code created for this block. - * @param {boolean=} opt_thisOnly True to generate code for only this statement. - * @return {string} PHP code with comments and subsequent blocks added. - * @protected - */ -PHP.scrub_ = function(block, code, opt_thisOnly) { - let commentCode = ''; - // Only collect comments for blocks that aren't inline. - if (!block.outputConnection || !block.outputConnection.targetConnection) { - // Collect comment for this block. - let comment = block.getCommentText(); - if (comment) { - comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); - commentCode += this.prefixLines(comment, '// ') + '\n'; - } - // Collect comments for all value arguments. - // Don't collect comments for nested statements. - for (let i = 0; i < block.inputList.length; i++) { - if (block.inputList[i].type === inputTypes.VALUE) { - const childBlock = block.inputList[i].connection.targetBlock(); - if (childBlock) { - comment = this.allNestedComments(childBlock); - if (comment) { - commentCode += this.prefixLines(comment, '// '); - } - } - } - } - } - const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); - return commentCode + code + nextCode; -}; - -/** - * Gets a property and adjusts the value while taking into account indexing. - * @param {!Block} block The block. - * @param {string} atId The property ID of the element to get. - * @param {number=} opt_delta Value to add. - * @param {boolean=} opt_negate Whether to negate the value. - * @param {number=} opt_order The highest order acting on this value. - * @return {string|number} - */ -PHP.getAdjusted = function(block, atId, opt_delta, opt_negate, opt_order) { - let delta = opt_delta || 0; - let order = opt_order || this.ORDER_NONE; - if (block.workspace.options.oneBasedIndex) { - delta--; - } - let defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; - let outerOrder = order; - let innerOrder; - if (delta > 0) { - outerOrder = this.ORDER_ADDITION; - innerOrder = this.ORDER_ADDITION; - } else if (delta < 0) { - outerOrder = this.ORDER_SUBTRACTION; - innerOrder = this.ORDER_SUBTRACTION; - } else if (opt_negate) { - outerOrder = this.ORDER_UNARY_NEGATION; - innerOrder = this.ORDER_UNARY_NEGATION; - } - let at = this.valueToCode(block, atId, outerOrder) || defaultAtIndex; - - if (stringUtils.isNumber(at)) { - // If the index is a naked number, adjust it right now. - at = Number(at) + delta; - if (opt_negate) { - at = -at; - } - } else { - // If the index is dynamic, adjust it in code. - if (delta > 0) { - at = at + ' + ' + delta; - } else if (delta < 0) { - at = at + ' - ' + -delta; - } - if (opt_negate) { - if (delta) { - at = '-(' + at + ')'; - } else { - at = '-' + at; - } - } - innerOrder = Math.floor(innerOrder); - order = Math.floor(order); - if (innerOrder && order >= innerOrder) { - at = '(' + at + ')'; - } - } - return at; -}; - -exports = PHP; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Helper functions for generating PHP for blocks. + * @suppress {checkTypes|globalThis} + */ +'use strict'; + +goog.module('Blockly.PHP'); +goog.module.declareLegacyNamespace(); + +const objectUtils = goog.require('Blockly.utils.object'); +const stringUtils = goog.require('Blockly.utils.string'); +const {Block} = goog.requireType('Blockly.Block'); +const {Generator} = goog.require('Blockly.Generator'); +const {inputTypes} = goog.require('Blockly.inputTypes'); +const {Names} = goog.require('Blockly.Names'); +const {Workspace} = goog.requireType('Blockly.Workspace'); + + +/** + * PHP code generator. + * @type {!Generator} + */ +const PHP = new Generator('PHP'); + +/** + * List of illegal variable names. + * This is not intended to be a security feature. Blockly is 100% client-side, + * so bypassing this list is trivial. This is intended to prevent users from + * accidentally clobbering a built-in object or function. + */ +PHP.addReservedWords( + // http://php.net/manual/en/reserved.keywords.php + '__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,' + + 'clone,const,continue,declare,default,die,do,echo,else,elseif,empty,' + + 'enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,' + + 'final,for,foreach,function,global,goto,if,implements,include,' + + 'include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,' + + 'print,private,protected,public,require,require_once,return,static,' + + 'switch,throw,trait,try,unset,use,var,while,xor,' + + // http://php.net/manual/en/reserved.constants.php + 'PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,' + + 'PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,' + + 'PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,' + + 'PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,' + + 'PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,PHP_SYSCONFDIR,' + + 'PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,PHP_CONFIG_FILE_SCAN_DIR,' + + 'PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,E_NOTICE,E_CORE_ERROR,' + + 'E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,E_USER_ERROR,' + + 'E_USER_WARNING,E_USER_NOTICE,E_DEPRECATED,E_USER_DEPRECATED,E_ALL,' + + 'E_STRICT,__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,' + + '__FILE__,__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__'); + +/** + * Order of operation ENUMs. + * http://php.net/manual/en/language.operators.precedence.php + */ +PHP.ORDER_ATOMIC = 0; // 0 "" ... +PHP.ORDER_CLONE = 1; // clone +PHP.ORDER_NEW = 1; // new +PHP.ORDER_MEMBER = 2.1; // [] +PHP.ORDER_FUNCTION_CALL = 2.2; // () +PHP.ORDER_POWER = 3; // ** +PHP.ORDER_INCREMENT = 4; // ++ +PHP.ORDER_DECREMENT = 4; // -- +PHP.ORDER_BITWISE_NOT = 4; // ~ +PHP.ORDER_CAST = 4; // (int) (float) (string) (array) ... +PHP.ORDER_SUPPRESS_ERROR = 4; // @ +PHP.ORDER_INSTANCEOF = 5; // instanceof +PHP.ORDER_LOGICAL_NOT = 6; // ! +PHP.ORDER_UNARY_PLUS = 7.1; // + +PHP.ORDER_UNARY_NEGATION = 7.2; // - +PHP.ORDER_MULTIPLICATION = 8.1; // * +PHP.ORDER_DIVISION = 8.2; // / +PHP.ORDER_MODULUS = 8.3; // % +PHP.ORDER_ADDITION = 9.1; // + +PHP.ORDER_SUBTRACTION = 9.2; // - +PHP.ORDER_STRING_CONCAT = 9.3; // . +PHP.ORDER_BITWISE_SHIFT = 10; // << >> +PHP.ORDER_RELATIONAL = 11; // < <= > >= +PHP.ORDER_EQUALITY = 12; // == != === !== <> <=> +PHP.ORDER_REFERENCE = 13; // & +PHP.ORDER_BITWISE_AND = 13; // & +PHP.ORDER_BITWISE_XOR = 14; // ^ +PHP.ORDER_BITWISE_OR = 15; // | +PHP.ORDER_LOGICAL_AND = 16; // && +PHP.ORDER_LOGICAL_OR = 17; // || +PHP.ORDER_IF_NULL = 18; // ?? +PHP.ORDER_CONDITIONAL = 19; // ?: +PHP.ORDER_ASSIGNMENT = 20; // = += -= *= /= %= <<= >>= ... +PHP.ORDER_LOGICAL_AND_WEAK = 21; // and +PHP.ORDER_LOGICAL_XOR = 22; // xor +PHP.ORDER_LOGICAL_OR_WEAK = 23; // or +PHP.ORDER_NONE = 99; // (...) + +/** + * List of outer-inner pairings that do NOT require parentheses. + * @type {!Array>} + */ +PHP.ORDER_OVERRIDES = [ + // (foo()).bar() -> foo().bar() + // (foo())[0] -> foo()[0] + [PHP.ORDER_MEMBER, PHP.ORDER_FUNCTION_CALL], + // (foo[0])[1] -> foo[0][1] + // (foo.bar).baz -> foo.bar.baz + [PHP.ORDER_MEMBER, PHP.ORDER_MEMBER], + // !(!foo) -> !!foo + [PHP.ORDER_LOGICAL_NOT, PHP.ORDER_LOGICAL_NOT], + // a * (b * c) -> a * b * c + [PHP.ORDER_MULTIPLICATION, PHP.ORDER_MULTIPLICATION], + // a + (b + c) -> a + b + c + [PHP.ORDER_ADDITION, PHP.ORDER_ADDITION], + // a && (b && c) -> a && b && c + [PHP.ORDER_LOGICAL_AND, PHP.ORDER_LOGICAL_AND], + // a || (b || c) -> a || b || c + [PHP.ORDER_LOGICAL_OR, PHP.ORDER_LOGICAL_OR] +]; + +/** + * Whether the init method has been called. + * @type {?boolean} + */ +PHP.isInitialized = false; + +/** + * Initialise the database of variable names. + * @param {!Workspace} workspace Workspace to generate code from. + */ +PHP.init = function(workspace) { + // Call Blockly.Generator's init. + Object.getPrototypeOf(this).init.call(this); + + if (!this.nameDB_) { + this.nameDB_ = new Names(this.RESERVED_WORDS_, '$'); + } else { + this.nameDB_.reset(); + } + + this.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.populateVariables(workspace); + this.nameDB_.populateProcedures(workspace); + + this.isInitialized = true; +}; + +/** + * Prepend the generated code with the variable definitions. + * @param {string} code Generated code. + * @return {string} Completed code. + */ +PHP.finish = function(code) { + // Convert the definitions dictionary into a list. + const definitions = objectUtils.values(this.definitions_); + // Call Blockly.Generator's finish. + code = Object.getPrototypeOf(this).finish.call(this, code); + this.isInitialized = false; + + this.nameDB_.reset(); + return definitions.join('\n\n') + '\n\n\n' + code; +}; + +/** + * Naked values are top-level blocks with outputs that aren't plugged into + * anything. A trailing semicolon is needed to make this legal. + * @param {string} line Line of generated code. + * @return {string} Legal line of code. + */ +PHP.scrubNakedValue = function(line) { + return line + ';\n'; +}; + +/** + * Encode a string as a properly escaped PHP string, complete with + * quotes. + * @param {string} string Text to encode. + * @return {string} PHP string. + * @protected + */ +PHP.quote_ = function(string) { + string = string.replace(/\\/g, '\\\\') + .replace(/\n/g, '\\\n') + .replace(/'/g, '\\\''); + return '\'' + string + '\''; +}; + +/** + * Encode a string as a properly escaped multiline PHP string, complete with + * quotes. + * @param {string} string Text to encode. + * @return {string} PHP string. + * @protected + */ +PHP.multiline_quote_ = function(string) { + const lines = string.split(/\n/g).map(this.quote_); + // Join with the following, plus a newline: + // . "\n" . + // Newline escaping only works in double-quoted strings. + return lines.join(' . \"\\n\" .\n'); +}; + +/** + * Common tasks for generating PHP from blocks. + * Handles comments for the specified block and any connected value blocks. + * Calls any statements following this block. + * @param {!Block} block The current block. + * @param {string} code The PHP code created for this block. + * @param {boolean=} opt_thisOnly True to generate code for only this statement. + * @return {string} PHP code with comments and subsequent blocks added. + * @protected + */ +PHP.scrub_ = function(block, code, opt_thisOnly) { + let commentCode = ''; + // Only collect comments for blocks that aren't inline. + if (!block.outputConnection || !block.outputConnection.targetConnection) { + // Collect comment for this block. + let comment = block.getCommentText(); + if (comment) { + comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); + commentCode += this.prefixLines(comment, '// ') + '\n'; + } + // Collect comments for all value arguments. + // Don't collect comments for nested statements. + for (let i = 0; i < block.inputList.length; i++) { + if (block.inputList[i].type === inputTypes.VALUE) { + const childBlock = block.inputList[i].connection.targetBlock(); + if (childBlock) { + comment = this.allNestedComments(childBlock); + if (comment) { + commentCode += this.prefixLines(comment, '// '); + } + } + } + } + } + const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); + const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); + return commentCode + code + nextCode; +}; + +/** + * Gets a property and adjusts the value while taking into account indexing. + * @param {!Block} block The block. + * @param {string} atId The property ID of the element to get. + * @param {number=} opt_delta Value to add. + * @param {boolean=} opt_negate Whether to negate the value. + * @param {number=} opt_order The highest order acting on this value. + * @return {string|number} + */ +PHP.getAdjusted = function(block, atId, opt_delta, opt_negate, opt_order) { + let delta = opt_delta || 0; + let order = opt_order || this.ORDER_NONE; + if (block.workspace.options.oneBasedIndex) { + delta--; + } + let defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; + let outerOrder = order; + let innerOrder; + if (delta > 0) { + outerOrder = this.ORDER_ADDITION; + innerOrder = this.ORDER_ADDITION; + } else if (delta < 0) { + outerOrder = this.ORDER_SUBTRACTION; + innerOrder = this.ORDER_SUBTRACTION; + } else if (opt_negate) { + outerOrder = this.ORDER_UNARY_NEGATION; + innerOrder = this.ORDER_UNARY_NEGATION; + } + let at = this.valueToCode(block, atId, outerOrder) || defaultAtIndex; + + if (stringUtils.isNumber(at)) { + // If the index is a naked number, adjust it right now. + at = Number(at) + delta; + if (opt_negate) { + at = -at; + } + } else { + // If the index is dynamic, adjust it in code. + if (delta > 0) { + at = at + ' + ' + delta; + } else if (delta < 0) { + at = at + ' - ' + -delta; + } + if (opt_negate) { + if (delta) { + at = '-(' + at + ')'; + } else { + at = '-' + at; + } + } + innerOrder = Math.floor(innerOrder); + order = Math.floor(order); + if (innerOrder && order >= innerOrder) { + at = '(' + at + ')'; + } + } + return at; +}; + +exports = PHP; diff --git a/generators/php/all.js b/generators/php/all.js index 7d2c7658a44..c1e45286fb8 100644 --- a/generators/php/all.js +++ b/generators/php/all.js @@ -1,25 +1,25 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Complete helper functions for generating PHP for - * blocks. This is the entrypoint for php_compressed.js. - * @suppress {extraRequire} - */ -'use strict'; - -goog.module('Blockly.PHP.all'); - -goog.require('Blockly.PHP.colour'); -goog.require('Blockly.PHP.lists'); -goog.require('Blockly.PHP.logic'); -goog.require('Blockly.PHP.loops'); -goog.require('Blockly.PHP.math'); -goog.require('Blockly.PHP.procedures'); -goog.require('Blockly.PHP.texts'); -goog.require('Blockly.PHP.variables'); -goog.require('Blockly.PHP.variablesDynamic'); - +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Complete helper functions for generating PHP for + * blocks. This is the entrypoint for php_compressed.js. + * @suppress {extraRequire} + */ +'use strict'; + +goog.module('Blockly.PHP.all'); + +goog.require('Blockly.PHP.colour'); +goog.require('Blockly.PHP.lists'); +goog.require('Blockly.PHP.logic'); +goog.require('Blockly.PHP.loops'); +goog.require('Blockly.PHP.math'); +goog.require('Blockly.PHP.procedures'); +goog.require('Blockly.PHP.texts'); +goog.require('Blockly.PHP.variables'); +goog.require('Blockly.PHP.variablesDynamic'); + diff --git a/generators/php/colour.js b/generators/php/colour.js index bbd2fd9d767..6d143ecccbd 100644 --- a/generators/php/colour.js +++ b/generators/php/colour.js @@ -1,81 +1,81 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for colour blocks. - */ -'use strict'; - -goog.module('Blockly.PHP.colour'); - -const PHP = goog.require('Blockly.PHP'); - - -PHP['colour_picker'] = function(block) { - // Colour picker. - const code = PHP.quote_(block.getFieldValue('COLOUR')); - return [code, PHP.ORDER_ATOMIC]; -}; - -PHP['colour_random'] = function(block) { - // Generate a random colour. - const functionName = PHP.provideFunction_('colour_random', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}() { - return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT); -} -`); - const code = functionName + '()'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['colour_rgb'] = function(block) { - // Compose a colour from RGB components expressed as percentages. - const red = PHP.valueToCode(block, 'RED', PHP.ORDER_NONE) || 0; - const green = PHP.valueToCode(block, 'GREEN', PHP.ORDER_NONE) || 0; - const blue = PHP.valueToCode(block, 'BLUE', PHP.ORDER_NONE) || 0; - const functionName = PHP.provideFunction_('colour_rgb', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($r, $g, $b) { - $r = round(max(min($r, 100), 0) * 2.55); - $g = round(max(min($g, 100), 0) * 2.55); - $b = round(max(min($b, 100), 0) * 2.55); - $hex = '#'; - $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT); - $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT); - $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT); - return $hex; -} -`); - const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['colour_blend'] = function(block) { - // Blend two colours together. - const c1 = PHP.valueToCode(block, 'COLOUR1', PHP.ORDER_NONE) || "'#000000'"; - const c2 = PHP.valueToCode(block, 'COLOUR2', PHP.ORDER_NONE) || "'#000000'"; - const ratio = PHP.valueToCode(block, 'RATIO', PHP.ORDER_NONE) || 0.5; - const functionName = PHP.provideFunction_('colour_blend', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($c1, $c2, $ratio) { - $ratio = max(min($ratio, 1), 0); - $r1 = hexdec(substr($c1, 1, 2)); - $g1 = hexdec(substr($c1, 3, 2)); - $b1 = hexdec(substr($c1, 5, 2)); - $r2 = hexdec(substr($c2, 1, 2)); - $g2 = hexdec(substr($c2, 3, 2)); - $b2 = hexdec(substr($c2, 5, 2)); - $r = round($r1 * (1 - $ratio) + $r2 * $ratio); - $g = round($g1 * (1 - $ratio) + $g2 * $ratio); - $b = round($b1 * (1 - $ratio) + $b2 * $ratio); - $hex = '#'; - $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT); - $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT); - $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT); - return $hex; -} -`); - const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for colour blocks. + */ +'use strict'; + +goog.module('Blockly.PHP.colour'); + +const PHP = goog.require('Blockly.PHP'); + + +PHP['colour_picker'] = function(block) { + // Colour picker. + const code = PHP.quote_(block.getFieldValue('COLOUR')); + return [code, PHP.ORDER_ATOMIC]; +}; + +PHP['colour_random'] = function(block) { + // Generate a random colour. + const functionName = PHP.provideFunction_('colour_random', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}() { + return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT); +} +`); + const code = functionName + '()'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['colour_rgb'] = function(block) { + // Compose a colour from RGB components expressed as percentages. + const red = PHP.valueToCode(block, 'RED', PHP.ORDER_NONE) || 0; + const green = PHP.valueToCode(block, 'GREEN', PHP.ORDER_NONE) || 0; + const blue = PHP.valueToCode(block, 'BLUE', PHP.ORDER_NONE) || 0; + const functionName = PHP.provideFunction_('colour_rgb', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($r, $g, $b) { + $r = round(max(min($r, 100), 0) * 2.55); + $g = round(max(min($g, 100), 0) * 2.55); + $b = round(max(min($b, 100), 0) * 2.55); + $hex = '#'; + $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT); + $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT); + $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT); + return $hex; +} +`); + const code = functionName + '(' + red + ', ' + green + ', ' + blue + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['colour_blend'] = function(block) { + // Blend two colours together. + const c1 = PHP.valueToCode(block, 'COLOUR1', PHP.ORDER_NONE) || "'#000000'"; + const c2 = PHP.valueToCode(block, 'COLOUR2', PHP.ORDER_NONE) || "'#000000'"; + const ratio = PHP.valueToCode(block, 'RATIO', PHP.ORDER_NONE) || 0.5; + const functionName = PHP.provideFunction_('colour_blend', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($c1, $c2, $ratio) { + $ratio = max(min($ratio, 1), 0); + $r1 = hexdec(substr($c1, 1, 2)); + $g1 = hexdec(substr($c1, 3, 2)); + $b1 = hexdec(substr($c1, 5, 2)); + $r2 = hexdec(substr($c2, 1, 2)); + $g2 = hexdec(substr($c2, 3, 2)); + $b2 = hexdec(substr($c2, 5, 2)); + $r = round($r1 * (1 - $ratio) + $r2 * $ratio); + $g = round($g1 * (1 - $ratio) + $g2 * $ratio); + $b = round($b1 * (1 - $ratio) + $b2 * $ratio); + $hex = '#'; + $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT); + $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT); + $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT); + return $hex; +} +`); + const code = functionName + '(' + c1 + ', ' + c2 + ', ' + ratio + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; diff --git a/generators/php/lists.js b/generators/php/lists.js index 1c39a1ab653..8a5e1ab94a6 100644 --- a/generators/php/lists.js +++ b/generators/php/lists.js @@ -1,482 +1,482 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for list blocks. - */ - -/** - * Lists in PHP are known to break when non-variables are passed into blocks - * that require a list. PHP, unlike other languages, passes arrays as reference - * value instead of value so we are unable to support it to the extent we can - * for the other languages. - * For example, a ternary operator with two arrays will return the array by - * value and that cannot be passed into any of the built-in array functions for - * PHP (because only variables can be passed by reference). - * ex: end(true ? list1 : list2) - */ -'use strict'; - -goog.module('Blockly.PHP.lists'); - -const PHP = goog.require('Blockly.PHP'); -const stringUtils = goog.require('Blockly.utils.string'); -const {NameType} = goog.require('Blockly.Names'); - - -PHP['lists_create_empty'] = function(block) { - // Create an empty list. - return ['array()', PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['lists_create_with'] = function(block) { - // Create a list with any number of elements of any type. - let code = new Array(block.itemCount_); - for (let i = 0; i < block.itemCount_; i++) { - code[i] = PHP.valueToCode(block, 'ADD' + i, PHP.ORDER_NONE) || 'null'; - } - code = 'array(' + code.join(', ') + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['lists_repeat'] = function(block) { - // Create a list with one element repeated. - const functionName = PHP.provideFunction_('lists_repeat', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value, $count) { - $array = array(); - for ($index = 0; $index < $count; $index++) { - $array[] = $value; - } - return $array; -} -`); - const element = PHP.valueToCode(block, 'ITEM', PHP.ORDER_NONE) || 'null'; - const repeatCount = PHP.valueToCode(block, 'NUM', PHP.ORDER_NONE) || '0'; - const code = functionName + '(' + element + ', ' + repeatCount + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['lists_length'] = function(block) { - // String or array length. - const functionName = PHP.provideFunction_('length', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value) { - if (is_string($value)) { - return strlen($value); - } else { - return count($value); - } -} -`); - const list = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || "''"; - return [functionName + '(' + list + ')', PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['lists_isEmpty'] = function(block) { - // Is the string null or array empty? - const argument0 = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_FUNCTION_CALL) || 'array()'; - return ['empty(' + argument0 + ')', PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['lists_indexOf'] = function(block) { - // Find an item in the list. - const argument0 = PHP.valueToCode(block, 'FIND', PHP.ORDER_NONE) || "''"; - const argument1 = PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || '[]'; - let errorIndex = ' -1'; - let indexAdjustment = ''; - if (block.workspace.options.oneBasedIndex) { - errorIndex = ' 0'; - indexAdjustment = ' + 1'; - } - let functionName; - if (block.getFieldValue('END') === 'FIRST') { - // indexOf - functionName = PHP.provideFunction_('indexOf', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) { - for ($index = 0; $index < count($haystack); $index++) { - if ($haystack[$index] == $needle) return $index${indexAdjustment}; - } - return ${errorIndex}; -} -`); - } else { - // lastIndexOf - functionName = PHP.provideFunction_('lastIndexOf', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) { - $last = ${errorIndex}; - for ($index = 0; $index < count($haystack); $index++) { - if ($haystack[$index] == $needle) $last = $index${indexAdjustment}; - } - return $last; -} -`); - } - - const code = functionName + '(' + argument1 + ', ' + argument0 + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['lists_getIndex'] = function(block) { - // Get element at index. - const mode = block.getFieldValue('MODE') || 'GET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - switch (where) { - case 'FIRST': - if (mode === 'GET') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || 'array()'; - const code = list + '[0]'; - return [code, PHP.ORDER_MEMBER]; - } else if (mode === 'GET_REMOVE') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - const code = 'array_shift(' + list + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - return 'array_shift(' + list + ');\n'; - } - break; - case 'LAST': - if (mode === 'GET') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - const code = 'end(' + list + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } else if (mode === 'GET_REMOVE') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - const code = 'array_pop(' + list + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - return 'array_pop(' + list + ');\n'; - } - break; - case 'FROM_START': { - const at = PHP.getAdjusted(block, 'AT'); - if (mode === 'GET') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || 'array()'; - const code = list + '[' + at + ']'; - return [code, PHP.ORDER_MEMBER]; - } else if (mode === 'GET_REMOVE') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - const code = 'array_splice(' + list + ', ' + at + ', 1)[0]'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - return 'array_splice(' + list + ', ' + at + ', 1);\n'; - } - break; - } - case 'FROM_END': - if (mode === 'GET') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - const at = PHP.getAdjusted(block, 'AT', 1, true); - const code = 'array_slice(' + list + ', ' + at + ', 1)[0]'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } else if (mode === 'GET_REMOVE' || mode === 'REMOVE') { - const list = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - const at = - PHP.getAdjusted(block, 'AT', 1, false, PHP.ORDER_SUBTRACTION); - const code = 'array_splice(' + list + ', count(' + list + ') - ' + at + - ', 1)[0]'; - if (mode === 'GET_REMOVE') { - return [code, PHP.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - return code + ';\n'; - } - } - break; - case 'RANDOM': { - const list = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; - if (mode === 'GET') { - const functionName = PHP.provideFunction_('lists_get_random_item', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list) { - return $list[rand(0,count($list)-1)]; -} -`); - const code = functionName + '(' + list + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } else if (mode === 'GET_REMOVE') { - const functionName = - PHP.provideFunction_('lists_get_remove_random_item', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list) { - $x = rand(0,count($list)-1); - unset($list[$x]); - return array_values($list); -} -`); - const code = functionName + '(' + list + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - const functionName = PHP.provideFunction_('lists_remove_random_item', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list) { - unset($list[rand(0,count($list)-1)]); -} -`); - return functionName + '(' + list + ');\n'; - } - break; - } - } - throw Error('Unhandled combination (lists_getIndex).'); -}; - -PHP['lists_setIndex'] = function(block) { - // Set element at index. - // Note: Until February 2013 this block did not have MODE or WHERE inputs. - const mode = block.getFieldValue('MODE') || 'GET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const value = PHP.valueToCode(block, 'TO', PHP.ORDER_ASSIGNMENT) || 'null'; - // Cache non-trivial values to variables to prevent repeated look-ups. - // Closure, which accesses and modifies 'list'. - let cachedList; - function cacheList() { - if (cachedList.match(/^\$\w+$/)) { - return ''; - } - const listVar = PHP.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); - const code = listVar + ' = &' + cachedList + ';\n'; - cachedList = listVar; - return code; - } - switch (where) { - case 'FIRST': - if (mode === 'SET') { - const list = - PHP.valueToCode(block, 'LIST', PHP.ORDER_MEMBER) || 'array()'; - return list + '[0] = ' + value + ';\n'; - } else if (mode === 'INSERT') { - const list = - PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; - return 'array_unshift(' + list + ', ' + value + ');\n'; - } - break; - case 'LAST': { - const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; - if (mode === 'SET') { - const functionName = PHP.provideFunction_('lists_set_last_item', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $value) { - $list[count($list) - 1] = $value; -} -`); - return functionName + '(' + list + ', ' + value + ');\n'; - } else if (mode === 'INSERT') { - return 'array_push(' + list + ', ' + value + ');\n'; - } - break; - } - case 'FROM_START': { - const at = PHP.getAdjusted(block, 'AT'); - if (mode === 'SET') { - const list = - PHP.valueToCode(block, 'LIST', PHP.ORDER_MEMBER) || 'array()'; - return list + '[' + at + '] = ' + value + ';\n'; - } else if (mode === 'INSERT') { - const list = - PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; - return 'array_splice(' + list + ', ' + at + ', 0, ' + value + ');\n'; - } - break; - } - case 'FROM_END': { - const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; - const at = PHP.getAdjusted(block, 'AT', 1); - if (mode === 'SET') { - const functionName = PHP.provideFunction_('lists_set_from_end', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) { - $list[count($list) - $at] = $value; -} -`); - return functionName + '(' + list + ', ' + at + ', ' + value + ');\n'; - } else if (mode === 'INSERT') { - const functionName = PHP.provideFunction_('lists_insert_from_end', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) { - return array_splice($list, count($list) - $at, 0, $value); -} -`); - return functionName + '(' + list + ', ' + at + ', ' + value + ');\n'; - } - break; - } - case 'RANDOM': - cachedList = - PHP.valueToCode(block, 'LIST', PHP.ORDER_REFERENCE) || 'array()'; - let code = cacheList(); - const list = cachedList; - const xVar = PHP.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); - code += xVar + ' = rand(0, count(' + list + ')-1);\n'; - if (mode === 'SET') { - code += list + '[' + xVar + '] = ' + value + ';\n'; - return code; - } else if (mode === 'INSERT') { - code += 'array_splice(' + list + ', ' + xVar + ', 0, ' + value + ');\n'; - return code; - } - break; - } - throw Error('Unhandled combination (lists_setIndex).'); -}; - -PHP['lists_getSublist'] = function(block) { - // Get sublist. - const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; - const where1 = block.getFieldValue('WHERE1'); - const where2 = block.getFieldValue('WHERE2'); - let code; - if (where1 === 'FIRST' && where2 === 'LAST') { - code = list; - } else if ( - list.match(/^\$\w+$/) || - (where1 !== 'FROM_END' && where2 === 'FROM_START')) { - // If the list is a simple value or doesn't require a call for length, don't - // generate a helper function. - let at1; - switch (where1) { - case 'FROM_START': - at1 = PHP.getAdjusted(block, 'AT1'); - break; - case 'FROM_END': - at1 = PHP.getAdjusted(block, 'AT1', 1, false, PHP.ORDER_SUBTRACTION); - at1 = 'count(' + list + ') - ' + at1; - break; - case 'FIRST': - at1 = '0'; - break; - default: - throw Error('Unhandled option (lists_getSublist).'); - } - let at2; - let length; - switch (where2) { - case 'FROM_START': - at2 = PHP.getAdjusted(block, 'AT2', 0, false, PHP.ORDER_SUBTRACTION); - length = at2 + ' - '; - if (stringUtils.isNumber(String(at1)) || - String(at1).match(/^\(.+\)$/)) { - length += at1; - } else { - length += '(' + at1 + ')'; - } - length += ' + 1'; - break; - case 'FROM_END': - at2 = PHP.getAdjusted(block, 'AT2', 0, false, PHP.ORDER_SUBTRACTION); - length = 'count(' + list + ') - ' + at2 + ' - '; - if (stringUtils.isNumber(String(at1)) || - String(at1).match(/^\(.+\)$/)) { - length += at1; - } else { - length += '(' + at1 + ')'; - } - break; - case 'LAST': - length = 'count(' + list + ') - '; - if (stringUtils.isNumber(String(at1)) || - String(at1).match(/^\(.+\)$/)) { - length += at1; - } else { - length += '(' + at1 + ')'; - } - break; - default: - throw Error('Unhandled option (lists_getSublist).'); - } - code = 'array_slice(' + list + ', ' + at1 + ', ' + length + ')'; - } else { - const at1 = PHP.getAdjusted(block, 'AT1'); - const at2 = PHP.getAdjusted(block, 'AT2'); - const functionName = PHP.provideFunction_('lists_get_sublist', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list, $where1, $at1, $where2, $at2) { - if ($where1 == 'FROM_END') { - $at1 = count($list) - 1 - $at1; - } else if ($where1 == 'FIRST') { - $at1 = 0; - } else if ($where1 != 'FROM_START') { - throw new Exception('Unhandled option (lists_get_sublist).'); - } - $length = 0; - if ($where2 == 'FROM_START') { - $length = $at2 - $at1 + 1; - } else if ($where2 == 'FROM_END') { - $length = count($list) - $at1 - $at2; - } else if ($where2 == 'LAST') { - $length = count($list) - $at1; - } else { - throw new Exception('Unhandled option (lists_get_sublist).'); - } - return array_slice($list, $at1, $length); -} -`); - code = functionName + '(' + list + ', \'' + where1 + '\', ' + at1 + ', \'' + - where2 + '\', ' + at2 + ')'; - } - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['lists_sort'] = function(block) { - // Block for sorting a list. - const listCode = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; - const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; - const type = block.getFieldValue('TYPE'); - const functionName = PHP.provideFunction_('lists_sort', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list, $type, $direction) { - $sortCmpFuncs = array( - 'NUMERIC' => 'strnatcasecmp', - 'TEXT' => 'strcmp', - 'IGNORE_CASE' => 'strcasecmp' - ); - $sortCmp = $sortCmpFuncs[$type]; - $list2 = $list; - usort($list2, $sortCmp); - if ($direction == -1) { - $list2 = array_reverse($list2); - } - return $list2; -} -`); - const sortCode = - functionName + '(' + listCode + ', "' + type + '", ' + direction + ')'; - return [sortCode, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['lists_split'] = function(block) { - // Block for splitting text into a list, or joining a list into text. - let value_input = PHP.valueToCode(block, 'INPUT', PHP.ORDER_NONE); - const value_delim = PHP.valueToCode(block, 'DELIM', PHP.ORDER_NONE) || "''"; - const mode = block.getFieldValue('MODE'); - let functionName; - if (mode === 'SPLIT') { - if (!value_input) { - value_input = "''"; - } - functionName = 'explode'; - } else if (mode === 'JOIN') { - if (!value_input) { - value_input = 'array()'; - } - functionName = 'implode'; - } else { - throw Error('Unknown mode: ' + mode); - } - const code = functionName + '(' + value_delim + ', ' + value_input + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['lists_reverse'] = function(block) { - // Block for reversing a list. - const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; - const code = 'array_reverse(' + list + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for list blocks. + */ + +/** + * Lists in PHP are known to break when non-variables are passed into blocks + * that require a list. PHP, unlike other languages, passes arrays as reference + * value instead of value so we are unable to support it to the extent we can + * for the other languages. + * For example, a ternary operator with two arrays will return the array by + * value and that cannot be passed into any of the built-in array functions for + * PHP (because only variables can be passed by reference). + * ex: end(true ? list1 : list2) + */ +'use strict'; + +goog.module('Blockly.PHP.lists'); + +const PHP = goog.require('Blockly.PHP'); +const stringUtils = goog.require('Blockly.utils.string'); +const {NameType} = goog.require('Blockly.Names'); + + +PHP['lists_create_empty'] = function(block) { + // Create an empty list. + return ['array()', PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['lists_create_with'] = function(block) { + // Create a list with any number of elements of any type. + let code = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { + code[i] = PHP.valueToCode(block, 'ADD' + i, PHP.ORDER_NONE) || 'null'; + } + code = 'array(' + code.join(', ') + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['lists_repeat'] = function(block) { + // Create a list with one element repeated. + const functionName = PHP.provideFunction_('lists_repeat', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value, $count) { + $array = array(); + for ($index = 0; $index < $count; $index++) { + $array[] = $value; + } + return $array; +} +`); + const element = PHP.valueToCode(block, 'ITEM', PHP.ORDER_NONE) || 'null'; + const repeatCount = PHP.valueToCode(block, 'NUM', PHP.ORDER_NONE) || '0'; + const code = functionName + '(' + element + ', ' + repeatCount + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['lists_length'] = function(block) { + // String or array length. + const functionName = PHP.provideFunction_('length', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value) { + if (is_string($value)) { + return strlen($value); + } else { + return count($value); + } +} +`); + const list = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || "''"; + return [functionName + '(' + list + ')', PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['lists_isEmpty'] = function(block) { + // Is the string null or array empty? + const argument0 = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_FUNCTION_CALL) || 'array()'; + return ['empty(' + argument0 + ')', PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['lists_indexOf'] = function(block) { + // Find an item in the list. + const argument0 = PHP.valueToCode(block, 'FIND', PHP.ORDER_NONE) || "''"; + const argument1 = PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || '[]'; + let errorIndex = ' -1'; + let indexAdjustment = ''; + if (block.workspace.options.oneBasedIndex) { + errorIndex = ' 0'; + indexAdjustment = ' + 1'; + } + let functionName; + if (block.getFieldValue('END') === 'FIRST') { + // indexOf + functionName = PHP.provideFunction_('indexOf', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) { + for ($index = 0; $index < count($haystack); $index++) { + if ($haystack[$index] == $needle) return $index${indexAdjustment}; + } + return ${errorIndex}; +} +`); + } else { + // lastIndexOf + functionName = PHP.provideFunction_('lastIndexOf', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) { + $last = ${errorIndex}; + for ($index = 0; $index < count($haystack); $index++) { + if ($haystack[$index] == $needle) $last = $index${indexAdjustment}; + } + return $last; +} +`); + } + + const code = functionName + '(' + argument1 + ', ' + argument0 + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['lists_getIndex'] = function(block) { + // Get element at index. + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + switch (where) { + case 'FIRST': + if (mode === 'GET') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || 'array()'; + const code = list + '[0]'; + return [code, PHP.ORDER_MEMBER]; + } else if (mode === 'GET_REMOVE') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + const code = 'array_shift(' + list + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + return 'array_shift(' + list + ');\n'; + } + break; + case 'LAST': + if (mode === 'GET') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + const code = 'end(' + list + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } else if (mode === 'GET_REMOVE') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + const code = 'array_pop(' + list + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + return 'array_pop(' + list + ');\n'; + } + break; + case 'FROM_START': { + const at = PHP.getAdjusted(block, 'AT'); + if (mode === 'GET') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_MEMBER) || 'array()'; + const code = list + '[' + at + ']'; + return [code, PHP.ORDER_MEMBER]; + } else if (mode === 'GET_REMOVE') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + const code = 'array_splice(' + list + ', ' + at + ', 1)[0]'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + return 'array_splice(' + list + ', ' + at + ', 1);\n'; + } + break; + } + case 'FROM_END': + if (mode === 'GET') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + const at = PHP.getAdjusted(block, 'AT', 1, true); + const code = 'array_slice(' + list + ', ' + at + ', 1)[0]'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } else if (mode === 'GET_REMOVE' || mode === 'REMOVE') { + const list = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + const at = + PHP.getAdjusted(block, 'AT', 1, false, PHP.ORDER_SUBTRACTION); + const code = 'array_splice(' + list + ', count(' + list + ') - ' + at + + ', 1)[0]'; + if (mode === 'GET_REMOVE') { + return [code, PHP.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + return code + ';\n'; + } + } + break; + case 'RANDOM': { + const list = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'array()'; + if (mode === 'GET') { + const functionName = PHP.provideFunction_('lists_get_random_item', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list) { + return $list[rand(0,count($list)-1)]; +} +`); + const code = functionName + '(' + list + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } else if (mode === 'GET_REMOVE') { + const functionName = + PHP.provideFunction_('lists_get_remove_random_item', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list) { + $x = rand(0,count($list)-1); + unset($list[$x]); + return array_values($list); +} +`); + const code = functionName + '(' + list + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + const functionName = PHP.provideFunction_('lists_remove_random_item', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list) { + unset($list[rand(0,count($list)-1)]); +} +`); + return functionName + '(' + list + ');\n'; + } + break; + } + } + throw Error('Unhandled combination (lists_getIndex).'); +}; + +PHP['lists_setIndex'] = function(block) { + // Set element at index. + // Note: Until February 2013 this block did not have MODE or WHERE inputs. + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const value = PHP.valueToCode(block, 'TO', PHP.ORDER_ASSIGNMENT) || 'null'; + // Cache non-trivial values to variables to prevent repeated look-ups. + // Closure, which accesses and modifies 'list'. + let cachedList; + function cacheList() { + if (cachedList.match(/^\$\w+$/)) { + return ''; + } + const listVar = PHP.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); + const code = listVar + ' = &' + cachedList + ';\n'; + cachedList = listVar; + return code; + } + switch (where) { + case 'FIRST': + if (mode === 'SET') { + const list = + PHP.valueToCode(block, 'LIST', PHP.ORDER_MEMBER) || 'array()'; + return list + '[0] = ' + value + ';\n'; + } else if (mode === 'INSERT') { + const list = + PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; + return 'array_unshift(' + list + ', ' + value + ');\n'; + } + break; + case 'LAST': { + const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; + if (mode === 'SET') { + const functionName = PHP.provideFunction_('lists_set_last_item', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $value) { + $list[count($list) - 1] = $value; +} +`); + return functionName + '(' + list + ', ' + value + ');\n'; + } else if (mode === 'INSERT') { + return 'array_push(' + list + ', ' + value + ');\n'; + } + break; + } + case 'FROM_START': { + const at = PHP.getAdjusted(block, 'AT'); + if (mode === 'SET') { + const list = + PHP.valueToCode(block, 'LIST', PHP.ORDER_MEMBER) || 'array()'; + return list + '[' + at + '] = ' + value + ';\n'; + } else if (mode === 'INSERT') { + const list = + PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; + return 'array_splice(' + list + ', ' + at + ', 0, ' + value + ');\n'; + } + break; + } + case 'FROM_END': { + const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; + const at = PHP.getAdjusted(block, 'AT', 1); + if (mode === 'SET') { + const functionName = PHP.provideFunction_('lists_set_from_end', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) { + $list[count($list) - $at] = $value; +} +`); + return functionName + '(' + list + ', ' + at + ', ' + value + ');\n'; + } else if (mode === 'INSERT') { + const functionName = PHP.provideFunction_('lists_insert_from_end', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) { + return array_splice($list, count($list) - $at, 0, $value); +} +`); + return functionName + '(' + list + ', ' + at + ', ' + value + ');\n'; + } + break; + } + case 'RANDOM': + cachedList = + PHP.valueToCode(block, 'LIST', PHP.ORDER_REFERENCE) || 'array()'; + let code = cacheList(); + const list = cachedList; + const xVar = PHP.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); + code += xVar + ' = rand(0, count(' + list + ')-1);\n'; + if (mode === 'SET') { + code += list + '[' + xVar + '] = ' + value + ';\n'; + return code; + } else if (mode === 'INSERT') { + code += 'array_splice(' + list + ', ' + xVar + ', 0, ' + value + ');\n'; + return code; + } + break; + } + throw Error('Unhandled combination (lists_setIndex).'); +}; + +PHP['lists_getSublist'] = function(block) { + // Get sublist. + const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + let code; + if (where1 === 'FIRST' && where2 === 'LAST') { + code = list; + } else if ( + list.match(/^\$\w+$/) || + (where1 !== 'FROM_END' && where2 === 'FROM_START')) { + // If the list is a simple value or doesn't require a call for length, don't + // generate a helper function. + let at1; + switch (where1) { + case 'FROM_START': + at1 = PHP.getAdjusted(block, 'AT1'); + break; + case 'FROM_END': + at1 = PHP.getAdjusted(block, 'AT1', 1, false, PHP.ORDER_SUBTRACTION); + at1 = 'count(' + list + ') - ' + at1; + break; + case 'FIRST': + at1 = '0'; + break; + default: + throw Error('Unhandled option (lists_getSublist).'); + } + let at2; + let length; + switch (where2) { + case 'FROM_START': + at2 = PHP.getAdjusted(block, 'AT2', 0, false, PHP.ORDER_SUBTRACTION); + length = at2 + ' - '; + if (stringUtils.isNumber(String(at1)) || + String(at1).match(/^\(.+\)$/)) { + length += at1; + } else { + length += '(' + at1 + ')'; + } + length += ' + 1'; + break; + case 'FROM_END': + at2 = PHP.getAdjusted(block, 'AT2', 0, false, PHP.ORDER_SUBTRACTION); + length = 'count(' + list + ') - ' + at2 + ' - '; + if (stringUtils.isNumber(String(at1)) || + String(at1).match(/^\(.+\)$/)) { + length += at1; + } else { + length += '(' + at1 + ')'; + } + break; + case 'LAST': + length = 'count(' + list + ') - '; + if (stringUtils.isNumber(String(at1)) || + String(at1).match(/^\(.+\)$/)) { + length += at1; + } else { + length += '(' + at1 + ')'; + } + break; + default: + throw Error('Unhandled option (lists_getSublist).'); + } + code = 'array_slice(' + list + ', ' + at1 + ', ' + length + ')'; + } else { + const at1 = PHP.getAdjusted(block, 'AT1'); + const at2 = PHP.getAdjusted(block, 'AT2'); + const functionName = PHP.provideFunction_('lists_get_sublist', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list, $where1, $at1, $where2, $at2) { + if ($where1 == 'FROM_END') { + $at1 = count($list) - 1 - $at1; + } else if ($where1 == 'FIRST') { + $at1 = 0; + } else if ($where1 != 'FROM_START') { + throw new Exception('Unhandled option (lists_get_sublist).'); + } + $length = 0; + if ($where2 == 'FROM_START') { + $length = $at2 - $at1 + 1; + } else if ($where2 == 'FROM_END') { + $length = count($list) - $at1 - $at2; + } else if ($where2 == 'LAST') { + $length = count($list) - $at1; + } else { + throw new Exception('Unhandled option (lists_get_sublist).'); + } + return array_slice($list, $at1, $length); +} +`); + code = functionName + '(' + list + ', \'' + where1 + '\', ' + at1 + ', \'' + + where2 + '\', ' + at2 + ')'; + } + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['lists_sort'] = function(block) { + // Block for sorting a list. + const listCode = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; + const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1; + const type = block.getFieldValue('TYPE'); + const functionName = PHP.provideFunction_('lists_sort', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list, $type, $direction) { + $sortCmpFuncs = array( + 'NUMERIC' => 'strnatcasecmp', + 'TEXT' => 'strcmp', + 'IGNORE_CASE' => 'strcasecmp' + ); + $sortCmp = $sortCmpFuncs[$type]; + $list2 = $list; + usort($list2, $sortCmp); + if ($direction == -1) { + $list2 = array_reverse($list2); + } + return $list2; +} +`); + const sortCode = + functionName + '(' + listCode + ', "' + type + '", ' + direction + ')'; + return [sortCode, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['lists_split'] = function(block) { + // Block for splitting text into a list, or joining a list into text. + let value_input = PHP.valueToCode(block, 'INPUT', PHP.ORDER_NONE); + const value_delim = PHP.valueToCode(block, 'DELIM', PHP.ORDER_NONE) || "''"; + const mode = block.getFieldValue('MODE'); + let functionName; + if (mode === 'SPLIT') { + if (!value_input) { + value_input = "''"; + } + functionName = 'explode'; + } else if (mode === 'JOIN') { + if (!value_input) { + value_input = 'array()'; + } + functionName = 'implode'; + } else { + throw Error('Unknown mode: ' + mode); + } + const code = functionName + '(' + value_delim + ', ' + value_input + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['lists_reverse'] = function(block) { + // Block for reversing a list. + const list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; + const code = 'array_reverse(' + list + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; diff --git a/generators/php/logic.js b/generators/php/logic.js index a7f6c7062e7..00e63e77648 100644 --- a/generators/php/logic.js +++ b/generators/php/logic.js @@ -1,119 +1,119 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for logic blocks. - */ -'use strict'; - -goog.module('Blockly.PHP.logic'); - -const PHP = goog.require('Blockly.PHP'); - - -PHP['controls_if'] = function(block) { - // If/elseif/else condition. - let n = 0; - let code = '', branchCode, conditionCode; - if (PHP.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - code += PHP.injectId(PHP.STATEMENT_PREFIX, block); - } - do { - conditionCode = PHP.valueToCode(block, 'IF' + n, PHP.ORDER_NONE) || 'false'; - branchCode = PHP.statementToCode(block, 'DO' + n); - if (PHP.STATEMENT_SUFFIX) { - branchCode = PHP.prefixLines( - PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT) + - branchCode; - } - code += (n > 0 ? ' else ' : '') + 'if (' + conditionCode + ') {\n' + - branchCode + '}'; - n++; - } while (block.getInput('IF' + n)); - - if (block.getInput('ELSE') || PHP.STATEMENT_SUFFIX) { - branchCode = PHP.statementToCode(block, 'ELSE'); - if (PHP.STATEMENT_SUFFIX) { - branchCode = PHP.prefixLines( - PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT) + - branchCode; - } - code += ' else {\n' + branchCode + '}'; - } - return code + '\n'; -}; - -PHP['controls_ifelse'] = PHP['controls_if']; - -PHP['logic_compare'] = function(block) { - // Comparison operator. - const OPERATORS = - {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; - const operator = OPERATORS[block.getFieldValue('OP')]; - const order = (operator === '==' || operator === '!=') ? PHP.ORDER_EQUALITY : - PHP.ORDER_RELATIONAL; - const argument0 = PHP.valueToCode(block, 'A', order) || '0'; - const argument1 = PHP.valueToCode(block, 'B', order) || '0'; - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -}; - -PHP['logic_operation'] = function(block) { - // Operations 'and', 'or'. - const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; - const order = - (operator === '&&') ? PHP.ORDER_LOGICAL_AND : PHP.ORDER_LOGICAL_OR; - let argument0 = PHP.valueToCode(block, 'A', order); - let argument1 = PHP.valueToCode(block, 'B', order); - if (!argument0 && !argument1) { - // If there are no arguments, then the return value is false. - argument0 = 'false'; - argument1 = 'false'; - } else { - // Single missing arguments have no effect on the return value. - const defaultArgument = (operator === '&&') ? 'true' : 'false'; - if (!argument0) { - argument0 = defaultArgument; - } - if (!argument1) { - argument1 = defaultArgument; - } - } - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -}; - -PHP['logic_negate'] = function(block) { - // Negation. - const order = PHP.ORDER_LOGICAL_NOT; - const argument0 = PHP.valueToCode(block, 'BOOL', order) || 'true'; - const code = '!' + argument0; - return [code, order]; -}; - -PHP['logic_boolean'] = function(block) { - // Boolean values true and false. - const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; - return [code, PHP.ORDER_ATOMIC]; -}; - -PHP['logic_null'] = function(block) { - // Null data type. - return ['null', PHP.ORDER_ATOMIC]; -}; - -PHP['logic_ternary'] = function(block) { - // Ternary operator. - const value_if = - PHP.valueToCode(block, 'IF', PHP.ORDER_CONDITIONAL) || 'false'; - const value_then = - PHP.valueToCode(block, 'THEN', PHP.ORDER_CONDITIONAL) || 'null'; - const value_else = - PHP.valueToCode(block, 'ELSE', PHP.ORDER_CONDITIONAL) || 'null'; - const code = value_if + ' ? ' + value_then + ' : ' + value_else; - return [code, PHP.ORDER_CONDITIONAL]; -}; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for logic blocks. + */ +'use strict'; + +goog.module('Blockly.PHP.logic'); + +const PHP = goog.require('Blockly.PHP'); + + +PHP['controls_if'] = function(block) { + // If/elseif/else condition. + let n = 0; + let code = '', branchCode, conditionCode; + if (PHP.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + code += PHP.injectId(PHP.STATEMENT_PREFIX, block); + } + do { + conditionCode = PHP.valueToCode(block, 'IF' + n, PHP.ORDER_NONE) || 'false'; + branchCode = PHP.statementToCode(block, 'DO' + n); + if (PHP.STATEMENT_SUFFIX) { + branchCode = PHP.prefixLines( + PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT) + + branchCode; + } + code += (n > 0 ? ' else ' : '') + 'if (' + conditionCode + ') {\n' + + branchCode + '}'; + n++; + } while (block.getInput('IF' + n)); + + if (block.getInput('ELSE') || PHP.STATEMENT_SUFFIX) { + branchCode = PHP.statementToCode(block, 'ELSE'); + if (PHP.STATEMENT_SUFFIX) { + branchCode = PHP.prefixLines( + PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT) + + branchCode; + } + code += ' else {\n' + branchCode + '}'; + } + return code + '\n'; +}; + +PHP['controls_ifelse'] = PHP['controls_if']; + +PHP['logic_compare'] = function(block) { + // Comparison operator. + const OPERATORS = + {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; + const operator = OPERATORS[block.getFieldValue('OP')]; + const order = (operator === '==' || operator === '!=') ? PHP.ORDER_EQUALITY : + PHP.ORDER_RELATIONAL; + const argument0 = PHP.valueToCode(block, 'A', order) || '0'; + const argument1 = PHP.valueToCode(block, 'B', order) || '0'; + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; +}; + +PHP['logic_operation'] = function(block) { + // Operations 'and', 'or'. + const operator = (block.getFieldValue('OP') === 'AND') ? '&&' : '||'; + const order = + (operator === '&&') ? PHP.ORDER_LOGICAL_AND : PHP.ORDER_LOGICAL_OR; + let argument0 = PHP.valueToCode(block, 'A', order); + let argument1 = PHP.valueToCode(block, 'B', order); + if (!argument0 && !argument1) { + // If there are no arguments, then the return value is false. + argument0 = 'false'; + argument1 = 'false'; + } else { + // Single missing arguments have no effect on the return value. + const defaultArgument = (operator === '&&') ? 'true' : 'false'; + if (!argument0) { + argument0 = defaultArgument; + } + if (!argument1) { + argument1 = defaultArgument; + } + } + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; +}; + +PHP['logic_negate'] = function(block) { + // Negation. + const order = PHP.ORDER_LOGICAL_NOT; + const argument0 = PHP.valueToCode(block, 'BOOL', order) || 'true'; + const code = '!' + argument0; + return [code, order]; +}; + +PHP['logic_boolean'] = function(block) { + // Boolean values true and false. + const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'true' : 'false'; + return [code, PHP.ORDER_ATOMIC]; +}; + +PHP['logic_null'] = function(block) { + // Null data type. + return ['null', PHP.ORDER_ATOMIC]; +}; + +PHP['logic_ternary'] = function(block) { + // Ternary operator. + const value_if = + PHP.valueToCode(block, 'IF', PHP.ORDER_CONDITIONAL) || 'false'; + const value_then = + PHP.valueToCode(block, 'THEN', PHP.ORDER_CONDITIONAL) || 'null'; + const value_else = + PHP.valueToCode(block, 'ELSE', PHP.ORDER_CONDITIONAL) || 'null'; + const code = value_if + ' ? ' + value_then + ' : ' + value_else; + return [code, PHP.ORDER_CONDITIONAL]; +}; diff --git a/generators/php/loops.js b/generators/php/loops.js index 6803c24d650..974bb773458 100644 --- a/generators/php/loops.js +++ b/generators/php/loops.js @@ -1,161 +1,161 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for loop blocks. - */ -'use strict'; - -goog.module('Blockly.PHP.loops'); - -const PHP = goog.require('Blockly.PHP'); -const stringUtils = goog.require('Blockly.utils.string'); -const {NameType} = goog.require('Blockly.Names'); - - -PHP['controls_repeat_ext'] = function(block) { - // Repeat n times. - let repeats; - if (block.getField('TIMES')) { - // Internal number. - repeats = String(Number(block.getFieldValue('TIMES'))); - } else { - // External number. - repeats = PHP.valueToCode(block, 'TIMES', PHP.ORDER_ASSIGNMENT) || '0'; - } - let branch = PHP.statementToCode(block, 'DO'); - branch = PHP.addLoopTrap(branch, block); - let code = ''; - const loopVar = PHP.nameDB_.getDistinctName('count', NameType.VARIABLE); - let endVar = repeats; - if (!repeats.match(/^\w+$/) && !stringUtils.isNumber(repeats)) { - endVar = PHP.nameDB_.getDistinctName('repeat_end', NameType.VARIABLE); - code += endVar + ' = ' + repeats + ';\n'; - } - code += 'for (' + loopVar + ' = 0; ' + loopVar + ' < ' + endVar + '; ' + - loopVar + '++) {\n' + branch + '}\n'; - return code; -}; - -PHP['controls_repeat'] = PHP['controls_repeat_ext']; - -PHP['controls_whileUntil'] = function(block) { - // Do while/until loop. - const until = block.getFieldValue('MODE') === 'UNTIL'; - let argument0 = - PHP.valueToCode( - block, 'BOOL', until ? PHP.ORDER_LOGICAL_NOT : PHP.ORDER_NONE) || - 'false'; - let branch = PHP.statementToCode(block, 'DO'); - branch = PHP.addLoopTrap(branch, block); - if (until) { - argument0 = '!' + argument0; - } - return 'while (' + argument0 + ') {\n' + branch + '}\n'; -}; - -PHP['controls_for'] = function(block) { - // For loop. - const variable0 = - PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const argument0 = PHP.valueToCode(block, 'FROM', PHP.ORDER_ASSIGNMENT) || '0'; - const argument1 = PHP.valueToCode(block, 'TO', PHP.ORDER_ASSIGNMENT) || '0'; - const increment = PHP.valueToCode(block, 'BY', PHP.ORDER_ASSIGNMENT) || '1'; - let branch = PHP.statementToCode(block, 'DO'); - branch = PHP.addLoopTrap(branch, block); - let code; - if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) && - stringUtils.isNumber(increment)) { - // All arguments are simple numbers. - const up = Number(argument0) <= Number(argument1); - code = 'for (' + variable0 + ' = ' + argument0 + '; ' + variable0 + - (up ? ' <= ' : ' >= ') + argument1 + '; ' + variable0; - const step = Math.abs(Number(increment)); - if (step === 1) { - code += up ? '++' : '--'; - } else { - code += (up ? ' += ' : ' -= ') + step; - } - code += ') {\n' + branch + '}\n'; - } else { - code = ''; - // Cache non-trivial values to variables to prevent repeated look-ups. - let startVar = argument0; - if (!argument0.match(/^\w+$/) && !stringUtils.isNumber(argument0)) { - startVar = - PHP.nameDB_.getDistinctName(variable0 + '_start', NameType.VARIABLE); - code += startVar + ' = ' + argument0 + ';\n'; - } - let endVar = argument1; - if (!argument1.match(/^\w+$/) && !stringUtils.isNumber(argument1)) { - endVar = - PHP.nameDB_.getDistinctName(variable0 + '_end', NameType.VARIABLE); - code += endVar + ' = ' + argument1 + ';\n'; - } - // Determine loop direction at start, in case one of the bounds - // changes during loop execution. - const incVar = - PHP.nameDB_.getDistinctName(variable0 + '_inc', NameType.VARIABLE); - code += incVar + ' = '; - if (stringUtils.isNumber(increment)) { - code += Math.abs(increment) + ';\n'; - } else { - code += 'abs(' + increment + ');\n'; - } - code += 'if (' + startVar + ' > ' + endVar + ') {\n'; - code += PHP.INDENT + incVar + ' = -' + incVar + ';\n'; - code += '}\n'; - code += 'for (' + variable0 + ' = ' + startVar + '; ' + incVar + - ' >= 0 ? ' + variable0 + ' <= ' + endVar + ' : ' + variable0 + - ' >= ' + endVar + '; ' + variable0 + ' += ' + incVar + ') {\n' + - branch + '}\n'; - } - return code; -}; - -PHP['controls_forEach'] = function(block) { - // For each loop. - const variable0 = - PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const argument0 = - PHP.valueToCode(block, 'LIST', PHP.ORDER_ASSIGNMENT) || '[]'; - let branch = PHP.statementToCode(block, 'DO'); - branch = PHP.addLoopTrap(branch, block); - let code = ''; - code += - 'foreach (' + argument0 + ' as ' + variable0 + ') {\n' + branch + '}\n'; - return code; -}; - -PHP['controls_flow_statements'] = function(block) { - // Flow statements: continue, break. - let xfix = ''; - if (PHP.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - xfix += PHP.injectId(PHP.STATEMENT_PREFIX, block); - } - if (PHP.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the break/continue is triggered. - xfix += PHP.injectId(PHP.STATEMENT_SUFFIX, block); - } - if (PHP.STATEMENT_PREFIX) { - const loop = block.getSurroundLoop(); - if (loop && !loop.suppressPrefixSuffix) { - // Inject loop's statement prefix here since the regular one at the end - // of the loop will not get executed if 'continue' is triggered. - // In the case of 'break', a prefix is needed due to the loop's suffix. - xfix += PHP.injectId(PHP.STATEMENT_PREFIX, loop); - } - } - switch (block.getFieldValue('FLOW')) { - case 'BREAK': - return xfix + 'break;\n'; - case 'CONTINUE': - return xfix + 'continue;\n'; - } - throw Error('Unknown flow statement.'); -}; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for loop blocks. + */ +'use strict'; + +goog.module('Blockly.PHP.loops'); + +const PHP = goog.require('Blockly.PHP'); +const stringUtils = goog.require('Blockly.utils.string'); +const {NameType} = goog.require('Blockly.Names'); + + +PHP['controls_repeat_ext'] = function(block) { + // Repeat n times. + let repeats; + if (block.getField('TIMES')) { + // Internal number. + repeats = String(Number(block.getFieldValue('TIMES'))); + } else { + // External number. + repeats = PHP.valueToCode(block, 'TIMES', PHP.ORDER_ASSIGNMENT) || '0'; + } + let branch = PHP.statementToCode(block, 'DO'); + branch = PHP.addLoopTrap(branch, block); + let code = ''; + const loopVar = PHP.nameDB_.getDistinctName('count', NameType.VARIABLE); + let endVar = repeats; + if (!repeats.match(/^\w+$/) && !stringUtils.isNumber(repeats)) { + endVar = PHP.nameDB_.getDistinctName('repeat_end', NameType.VARIABLE); + code += endVar + ' = ' + repeats + ';\n'; + } + code += 'for (' + loopVar + ' = 0; ' + loopVar + ' < ' + endVar + '; ' + + loopVar + '++) {\n' + branch + '}\n'; + return code; +}; + +PHP['controls_repeat'] = PHP['controls_repeat_ext']; + +PHP['controls_whileUntil'] = function(block) { + // Do while/until loop. + const until = block.getFieldValue('MODE') === 'UNTIL'; + let argument0 = + PHP.valueToCode( + block, 'BOOL', until ? PHP.ORDER_LOGICAL_NOT : PHP.ORDER_NONE) || + 'false'; + let branch = PHP.statementToCode(block, 'DO'); + branch = PHP.addLoopTrap(branch, block); + if (until) { + argument0 = '!' + argument0; + } + return 'while (' + argument0 + ') {\n' + branch + '}\n'; +}; + +PHP['controls_for'] = function(block) { + // For loop. + const variable0 = + PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const argument0 = PHP.valueToCode(block, 'FROM', PHP.ORDER_ASSIGNMENT) || '0'; + const argument1 = PHP.valueToCode(block, 'TO', PHP.ORDER_ASSIGNMENT) || '0'; + const increment = PHP.valueToCode(block, 'BY', PHP.ORDER_ASSIGNMENT) || '1'; + let branch = PHP.statementToCode(block, 'DO'); + branch = PHP.addLoopTrap(branch, block); + let code; + if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) && + stringUtils.isNumber(increment)) { + // All arguments are simple numbers. + const up = Number(argument0) <= Number(argument1); + code = 'for (' + variable0 + ' = ' + argument0 + '; ' + variable0 + + (up ? ' <= ' : ' >= ') + argument1 + '; ' + variable0; + const step = Math.abs(Number(increment)); + if (step === 1) { + code += up ? '++' : '--'; + } else { + code += (up ? ' += ' : ' -= ') + step; + } + code += ') {\n' + branch + '}\n'; + } else { + code = ''; + // Cache non-trivial values to variables to prevent repeated look-ups. + let startVar = argument0; + if (!argument0.match(/^\w+$/) && !stringUtils.isNumber(argument0)) { + startVar = + PHP.nameDB_.getDistinctName(variable0 + '_start', NameType.VARIABLE); + code += startVar + ' = ' + argument0 + ';\n'; + } + let endVar = argument1; + if (!argument1.match(/^\w+$/) && !stringUtils.isNumber(argument1)) { + endVar = + PHP.nameDB_.getDistinctName(variable0 + '_end', NameType.VARIABLE); + code += endVar + ' = ' + argument1 + ';\n'; + } + // Determine loop direction at start, in case one of the bounds + // changes during loop execution. + const incVar = + PHP.nameDB_.getDistinctName(variable0 + '_inc', NameType.VARIABLE); + code += incVar + ' = '; + if (stringUtils.isNumber(increment)) { + code += Math.abs(increment) + ';\n'; + } else { + code += 'abs(' + increment + ');\n'; + } + code += 'if (' + startVar + ' > ' + endVar + ') {\n'; + code += PHP.INDENT + incVar + ' = -' + incVar + ';\n'; + code += '}\n'; + code += 'for (' + variable0 + ' = ' + startVar + '; ' + incVar + + ' >= 0 ? ' + variable0 + ' <= ' + endVar + ' : ' + variable0 + + ' >= ' + endVar + '; ' + variable0 + ' += ' + incVar + ') {\n' + + branch + '}\n'; + } + return code; +}; + +PHP['controls_forEach'] = function(block) { + // For each loop. + const variable0 = + PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const argument0 = + PHP.valueToCode(block, 'LIST', PHP.ORDER_ASSIGNMENT) || '[]'; + let branch = PHP.statementToCode(block, 'DO'); + branch = PHP.addLoopTrap(branch, block); + let code = ''; + code += + 'foreach (' + argument0 + ' as ' + variable0 + ') {\n' + branch + '}\n'; + return code; +}; + +PHP['controls_flow_statements'] = function(block) { + // Flow statements: continue, break. + let xfix = ''; + if (PHP.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + xfix += PHP.injectId(PHP.STATEMENT_PREFIX, block); + } + if (PHP.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the break/continue is triggered. + xfix += PHP.injectId(PHP.STATEMENT_SUFFIX, block); + } + if (PHP.STATEMENT_PREFIX) { + const loop = block.getSurroundLoop(); + if (loop && !loop.suppressPrefixSuffix) { + // Inject loop's statement prefix here since the regular one at the end + // of the loop will not get executed if 'continue' is triggered. + // In the case of 'break', a prefix is needed due to the loop's suffix. + xfix += PHP.injectId(PHP.STATEMENT_PREFIX, loop); + } + } + switch (block.getFieldValue('FLOW')) { + case 'BREAK': + return xfix + 'break;\n'; + case 'CONTINUE': + return xfix + 'continue;\n'; + } + throw Error('Unknown flow statement.'); +}; diff --git a/generators/php/math.js b/generators/php/math.js index 6c8c5ffb447..5014994d545 100644 --- a/generators/php/math.js +++ b/generators/php/math.js @@ -1,349 +1,349 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for math blocks. - */ -'use strict'; - -goog.module('Blockly.PHP.math'); - -const PHP = goog.require('Blockly.PHP'); -const {NameType} = goog.require('Blockly.Names'); - - -PHP['math_number'] = function(block) { - // Numeric value. - let code = Number(block.getFieldValue('NUM')); - const order = code >= 0 ? PHP.ORDER_ATOMIC : PHP.ORDER_UNARY_NEGATION; - if (code === Infinity) { - code = 'INF'; - } else if (code === -Infinity) { - code = '-INF'; - } - return [code, order]; -}; - -PHP['math_arithmetic'] = function(block) { - // Basic arithmetic operators, and power. - const OPERATORS = { - 'ADD': [' + ', PHP.ORDER_ADDITION], - 'MINUS': [' - ', PHP.ORDER_SUBTRACTION], - 'MULTIPLY': [' * ', PHP.ORDER_MULTIPLICATION], - 'DIVIDE': [' / ', PHP.ORDER_DIVISION], - 'POWER': [' ** ', PHP.ORDER_POWER], - }; - const tuple = OPERATORS[block.getFieldValue('OP')]; - const operator = tuple[0]; - const order = tuple[1]; - const argument0 = PHP.valueToCode(block, 'A', order) || '0'; - const argument1 = PHP.valueToCode(block, 'B', order) || '0'; - const code = argument0 + operator + argument1; - return [code, order]; -}; - -PHP['math_single'] = function(block) { - // Math operators with single operand. - const operator = block.getFieldValue('OP'); - let code; - let arg; - if (operator === 'NEG') { - // Negation is a special case given its different operator precedence. - arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_UNARY_NEGATION) || '0'; - if (arg[0] === '-') { - // --3 is not legal in JS. - arg = ' ' + arg; - } - code = '-' + arg; - return [code, PHP.ORDER_UNARY_NEGATION]; - } - if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { - arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_DIVISION) || '0'; - } else { - arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_NONE) || '0'; - } - // First, handle cases which generate values that don't need parentheses - // wrapping the code. - switch (operator) { - case 'ABS': - code = 'abs(' + arg + ')'; - break; - case 'ROOT': - code = 'sqrt(' + arg + ')'; - break; - case 'LN': - code = 'log(' + arg + ')'; - break; - case 'EXP': - code = 'exp(' + arg + ')'; - break; - case 'POW10': - code = 'pow(10,' + arg + ')'; - break; - case 'ROUND': - code = 'round(' + arg + ')'; - break; - case 'ROUNDUP': - code = 'ceil(' + arg + ')'; - break; - case 'ROUNDDOWN': - code = 'floor(' + arg + ')'; - break; - case 'SIN': - code = 'sin(' + arg + ' / 180 * pi())'; - break; - case 'COS': - code = 'cos(' + arg + ' / 180 * pi())'; - break; - case 'TAN': - code = 'tan(' + arg + ' / 180 * pi())'; - break; - } - if (code) { - return [code, PHP.ORDER_FUNCTION_CALL]; - } - // Second, handle cases which generate values that may need parentheses - // wrapping the code. - switch (operator) { - case 'LOG10': - code = 'log(' + arg + ') / log(10)'; - break; - case 'ASIN': - code = 'asin(' + arg + ') / pi() * 180'; - break; - case 'ACOS': - code = 'acos(' + arg + ') / pi() * 180'; - break; - case 'ATAN': - code = 'atan(' + arg + ') / pi() * 180'; - break; - default: - throw Error('Unknown math operator: ' + operator); - } - return [code, PHP.ORDER_DIVISION]; -}; - -PHP['math_constant'] = function(block) { - // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. - const CONSTANTS = { - 'PI': ['M_PI', PHP.ORDER_ATOMIC], - 'E': ['M_E', PHP.ORDER_ATOMIC], - 'GOLDEN_RATIO': ['(1 + sqrt(5)) / 2', PHP.ORDER_DIVISION], - 'SQRT2': ['M_SQRT2', PHP.ORDER_ATOMIC], - 'SQRT1_2': ['M_SQRT1_2', PHP.ORDER_ATOMIC], - 'INFINITY': ['INF', PHP.ORDER_ATOMIC], - }; - return CONSTANTS[block.getFieldValue('CONSTANT')]; -}; - -PHP['math_number_property'] = function(block) { - // Check if a number is even, odd, prime, whole, positive, or negative - // or if it is divisible by certain number. Returns true or false. - const PROPERTIES = { - 'EVEN': ['', ' % 2 == 0', PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY], - 'ODD': ['', ' % 2 == 1', PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY], - 'WHOLE': ['is_int(', ')', PHP.ORDER_NONE, PHP.ORDER_FUNCTION_CALL], - 'POSITIVE': ['', ' > 0', PHP.ORDER_RELATIONAL, PHP.ORDER_RELATIONAL], - 'NEGATIVE': ['', ' < 0', PHP.ORDER_RELATIONAL, PHP.ORDER_RELATIONAL], - 'DIVISIBLE_BY': [null, null, PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY], - 'PRIME': [null, null, PHP.ORDER_NONE, PHP.ORDER_FUNCTION_CALL], - }; - const dropdownProperty = block.getFieldValue('PROPERTY'); - const [prefix, suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; - const numberToCheck = PHP.valueToCode(block, 'NUMBER_TO_CHECK', - inputOrder) || '0'; - let code; - if (dropdownProperty === 'PRIME') { - // Prime is a special case as it is not a one-liner test. - const functionName = PHP.provideFunction_('math_isPrime', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($n) { - // https://en.wikipedia.org/wiki/Primality_test#Naive_methods - if ($n == 2 || $n == 3) { - return true; - } - // False if n is NaN, negative, is 1, or not whole. - // And false if n is divisible by 2 or 3. - if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) { - return false; - } - // Check all the numbers of form 6k +/- 1, up to sqrt(n). - for ($x = 6; $x <= sqrt($n) + 1; $x += 6) { - if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) { - return false; - } - } - return true; -} -`); - code = functionName + '(' + numberToCheck + ')'; - } else if (dropdownProperty === 'DIVISIBLE_BY') { - const divisor = PHP.valueToCode(block, 'DIVISOR', - PHP.ORDER_MODULUS) || '0'; - if (divisor === '0') { - return ['false', PHP.ORDER_ATOMIC]; - - } - code = numberToCheck + ' % ' + divisor + ' == 0'; - } else { - code = prefix + numberToCheck + suffix; - } - return [code, outputOrder]; -}; - -PHP['math_change'] = function(block) { - // Add to a variable in place. - const argument0 = PHP.valueToCode(block, 'DELTA', PHP.ORDER_ADDITION) || '0'; - const varName = - PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return varName + ' += ' + argument0 + ';\n'; -}; - -// Rounding functions have a single operand. -PHP['math_round'] = PHP['math_single']; -// Trigonometry functions have a single operand. -PHP['math_trig'] = PHP['math_single']; - -PHP['math_on_list'] = function(block) { - // Math functions for lists. - const func = block.getFieldValue('OP'); - let list; - let code; - switch (func) { - case 'SUM': - list = - PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()'; - code = 'array_sum(' + list + ')'; - break; - case 'MIN': - list = - PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()'; - code = 'min(' + list + ')'; - break; - case 'MAX': - list = - PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()'; - code = 'max(' + list + ')'; - break; - case 'AVERAGE': { - const functionName = PHP.provideFunction_('math_mean', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($myList) { - return array_sum($myList) / count($myList); -} -`); - list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; - code = functionName + '(' + list + ')'; - break; - } - case 'MEDIAN': { - const functionName = PHP.provideFunction_('math_median', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($arr) { - sort($arr,SORT_NUMERIC); - return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] : - ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2; -} -`); - list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; - code = functionName + '(' + list + ')'; - break; - } - case 'MODE': { - // As a list of numbers can contain more than one mode, - // the returned result is provided as an array. - // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]. - const functionName = PHP.provideFunction_('math_modes', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($values) { - if (empty($values)) return array(); - $counts = array_count_values($values); - arsort($counts); // Sort counts in descending order - $modes = array_keys($counts, current($counts), true); - return $modes; -} -`); - list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; - code = functionName + '(' + list + ')'; - break; - } - case 'STD_DEV': { - const functionName = PHP.provideFunction_('math_standard_deviation', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($numbers) { - $n = count($numbers); - if (!$n) return null; - $mean = array_sum($numbers) / count($numbers); - foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2); - return sqrt(array_sum($devs) / (count($devs) - 1)); -} -`); - list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; - code = functionName + '(' + list + ')'; - break; - } - case 'RANDOM': { - const functionName = PHP.provideFunction_('math_random_list', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list) { - $x = rand(0, count($list)-1); - return $list[$x]; -} -`); - list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; - code = functionName + '(' + list + ')'; - break; - } - default: - throw Error('Unknown operator: ' + func); - } - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['math_modulo'] = function(block) { - // Remainder computation. - const argument0 = - PHP.valueToCode(block, 'DIVIDEND', PHP.ORDER_MODULUS) || '0'; - const argument1 = PHP.valueToCode(block, 'DIVISOR', PHP.ORDER_MODULUS) || '0'; - const code = argument0 + ' % ' + argument1; - return [code, PHP.ORDER_MODULUS]; -}; - -PHP['math_constrain'] = function(block) { - // Constrain a number between two limits. - const argument0 = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || '0'; - const argument1 = PHP.valueToCode(block, 'LOW', PHP.ORDER_NONE) || '0'; - const argument2 = - PHP.valueToCode(block, 'HIGH', PHP.ORDER_NONE) || 'Infinity'; - const code = - 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['math_random_int'] = function(block) { - // Random integer between [X] and [Y]. - const argument0 = PHP.valueToCode(block, 'FROM', PHP.ORDER_NONE) || '0'; - const argument1 = PHP.valueToCode(block, 'TO', PHP.ORDER_NONE) || '0'; - const functionName = PHP.provideFunction_('math_random_int', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($a, $b) { - if ($a > $b) { - return rand($b, $a); - } - return rand($a, $b); -} -`); - const code = functionName + '(' + argument0 + ', ' + argument1 + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['math_random_float'] = function(block) { - // Random fraction between 0 and 1. - return ['(float)rand()/(float)getrandmax()', PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['math_atan2'] = function(block) { - // Arctangent of point (X, Y) in degrees from -180 to 180. - const argument0 = PHP.valueToCode(block, 'X', PHP.ORDER_NONE) || '0'; - const argument1 = PHP.valueToCode(block, 'Y', PHP.ORDER_NONE) || '0'; - return [ - 'atan2(' + argument1 + ', ' + argument0 + ') / pi() * 180', - PHP.ORDER_DIVISION - ]; -}; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for math blocks. + */ +'use strict'; + +goog.module('Blockly.PHP.math'); + +const PHP = goog.require('Blockly.PHP'); +const {NameType} = goog.require('Blockly.Names'); + + +PHP['math_number'] = function(block) { + // Numeric value. + let code = Number(block.getFieldValue('NUM')); + const order = code >= 0 ? PHP.ORDER_ATOMIC : PHP.ORDER_UNARY_NEGATION; + if (code === Infinity) { + code = 'INF'; + } else if (code === -Infinity) { + code = '-INF'; + } + return [code, order]; +}; + +PHP['math_arithmetic'] = function(block) { + // Basic arithmetic operators, and power. + const OPERATORS = { + 'ADD': [' + ', PHP.ORDER_ADDITION], + 'MINUS': [' - ', PHP.ORDER_SUBTRACTION], + 'MULTIPLY': [' * ', PHP.ORDER_MULTIPLICATION], + 'DIVIDE': [' / ', PHP.ORDER_DIVISION], + 'POWER': [' ** ', PHP.ORDER_POWER], + }; + const tuple = OPERATORS[block.getFieldValue('OP')]; + const operator = tuple[0]; + const order = tuple[1]; + const argument0 = PHP.valueToCode(block, 'A', order) || '0'; + const argument1 = PHP.valueToCode(block, 'B', order) || '0'; + const code = argument0 + operator + argument1; + return [code, order]; +}; + +PHP['math_single'] = function(block) { + // Math operators with single operand. + const operator = block.getFieldValue('OP'); + let code; + let arg; + if (operator === 'NEG') { + // Negation is a special case given its different operator precedence. + arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_UNARY_NEGATION) || '0'; + if (arg[0] === '-') { + // --3 is not legal in JS. + arg = ' ' + arg; + } + code = '-' + arg; + return [code, PHP.ORDER_UNARY_NEGATION]; + } + if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { + arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_DIVISION) || '0'; + } else { + arg = PHP.valueToCode(block, 'NUM', PHP.ORDER_NONE) || '0'; + } + // First, handle cases which generate values that don't need parentheses + // wrapping the code. + switch (operator) { + case 'ABS': + code = 'abs(' + arg + ')'; + break; + case 'ROOT': + code = 'sqrt(' + arg + ')'; + break; + case 'LN': + code = 'log(' + arg + ')'; + break; + case 'EXP': + code = 'exp(' + arg + ')'; + break; + case 'POW10': + code = 'pow(10,' + arg + ')'; + break; + case 'ROUND': + code = 'round(' + arg + ')'; + break; + case 'ROUNDUP': + code = 'ceil(' + arg + ')'; + break; + case 'ROUNDDOWN': + code = 'floor(' + arg + ')'; + break; + case 'SIN': + code = 'sin(' + arg + ' / 180 * pi())'; + break; + case 'COS': + code = 'cos(' + arg + ' / 180 * pi())'; + break; + case 'TAN': + code = 'tan(' + arg + ' / 180 * pi())'; + break; + } + if (code) { + return [code, PHP.ORDER_FUNCTION_CALL]; + } + // Second, handle cases which generate values that may need parentheses + // wrapping the code. + switch (operator) { + case 'LOG10': + code = 'log(' + arg + ') / log(10)'; + break; + case 'ASIN': + code = 'asin(' + arg + ') / pi() * 180'; + break; + case 'ACOS': + code = 'acos(' + arg + ') / pi() * 180'; + break; + case 'ATAN': + code = 'atan(' + arg + ') / pi() * 180'; + break; + default: + throw Error('Unknown math operator: ' + operator); + } + return [code, PHP.ORDER_DIVISION]; +}; + +PHP['math_constant'] = function(block) { + // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. + const CONSTANTS = { + 'PI': ['M_PI', PHP.ORDER_ATOMIC], + 'E': ['M_E', PHP.ORDER_ATOMIC], + 'GOLDEN_RATIO': ['(1 + sqrt(5)) / 2', PHP.ORDER_DIVISION], + 'SQRT2': ['M_SQRT2', PHP.ORDER_ATOMIC], + 'SQRT1_2': ['M_SQRT1_2', PHP.ORDER_ATOMIC], + 'INFINITY': ['INF', PHP.ORDER_ATOMIC], + }; + return CONSTANTS[block.getFieldValue('CONSTANT')]; +}; + +PHP['math_number_property'] = function(block) { + // Check if a number is even, odd, prime, whole, positive, or negative + // or if it is divisible by certain number. Returns true or false. + const PROPERTIES = { + 'EVEN': ['', ' % 2 == 0', PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY], + 'ODD': ['', ' % 2 == 1', PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY], + 'WHOLE': ['is_int(', ')', PHP.ORDER_NONE, PHP.ORDER_FUNCTION_CALL], + 'POSITIVE': ['', ' > 0', PHP.ORDER_RELATIONAL, PHP.ORDER_RELATIONAL], + 'NEGATIVE': ['', ' < 0', PHP.ORDER_RELATIONAL, PHP.ORDER_RELATIONAL], + 'DIVISIBLE_BY': [null, null, PHP.ORDER_MODULUS, PHP.ORDER_EQUALITY], + 'PRIME': [null, null, PHP.ORDER_NONE, PHP.ORDER_FUNCTION_CALL], + }; + const dropdownProperty = block.getFieldValue('PROPERTY'); + const [prefix, suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; + const numberToCheck = PHP.valueToCode(block, 'NUMBER_TO_CHECK', + inputOrder) || '0'; + let code; + if (dropdownProperty === 'PRIME') { + // Prime is a special case as it is not a one-liner test. + const functionName = PHP.provideFunction_('math_isPrime', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($n) { + // https://en.wikipedia.org/wiki/Primality_test#Naive_methods + if ($n == 2 || $n == 3) { + return true; + } + // False if n is NaN, negative, is 1, or not whole. + // And false if n is divisible by 2 or 3. + if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) { + return false; + } + // Check all the numbers of form 6k +/- 1, up to sqrt(n). + for ($x = 6; $x <= sqrt($n) + 1; $x += 6) { + if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) { + return false; + } + } + return true; +} +`); + code = functionName + '(' + numberToCheck + ')'; + } else if (dropdownProperty === 'DIVISIBLE_BY') { + const divisor = PHP.valueToCode(block, 'DIVISOR', + PHP.ORDER_MODULUS) || '0'; + if (divisor === '0') { + return ['false', PHP.ORDER_ATOMIC]; + + } + code = numberToCheck + ' % ' + divisor + ' == 0'; + } else { + code = prefix + numberToCheck + suffix; + } + return [code, outputOrder]; +}; + +PHP['math_change'] = function(block) { + // Add to a variable in place. + const argument0 = PHP.valueToCode(block, 'DELTA', PHP.ORDER_ADDITION) || '0'; + const varName = + PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return varName + ' += ' + argument0 + ';\n'; +}; + +// Rounding functions have a single operand. +PHP['math_round'] = PHP['math_single']; +// Trigonometry functions have a single operand. +PHP['math_trig'] = PHP['math_single']; + +PHP['math_on_list'] = function(block) { + // Math functions for lists. + const func = block.getFieldValue('OP'); + let list; + let code; + switch (func) { + case 'SUM': + list = + PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()'; + code = 'array_sum(' + list + ')'; + break; + case 'MIN': + list = + PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()'; + code = 'min(' + list + ')'; + break; + case 'MAX': + list = + PHP.valueToCode(block, 'LIST', PHP.ORDER_FUNCTION_CALL) || 'array()'; + code = 'max(' + list + ')'; + break; + case 'AVERAGE': { + const functionName = PHP.provideFunction_('math_mean', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($myList) { + return array_sum($myList) / count($myList); +} +`); + list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || 'array()'; + code = functionName + '(' + list + ')'; + break; + } + case 'MEDIAN': { + const functionName = PHP.provideFunction_('math_median', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($arr) { + sort($arr,SORT_NUMERIC); + return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] : + ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2; +} +`); + list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + } + case 'MODE': { + // As a list of numbers can contain more than one mode, + // the returned result is provided as an array. + // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]. + const functionName = PHP.provideFunction_('math_modes', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($values) { + if (empty($values)) return array(); + $counts = array_count_values($values); + arsort($counts); // Sort counts in descending order + $modes = array_keys($counts, current($counts), true); + return $modes; +} +`); + list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + } + case 'STD_DEV': { + const functionName = PHP.provideFunction_('math_standard_deviation', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($numbers) { + $n = count($numbers); + if (!$n) return null; + $mean = array_sum($numbers) / count($numbers); + foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2); + return sqrt(array_sum($devs) / (count($devs) - 1)); +} +`); + list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + } + case 'RANDOM': { + const functionName = PHP.provideFunction_('math_random_list', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($list) { + $x = rand(0, count($list)-1); + return $list[$x]; +} +`); + list = PHP.valueToCode(block, 'LIST', PHP.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + } + default: + throw Error('Unknown operator: ' + func); + } + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['math_modulo'] = function(block) { + // Remainder computation. + const argument0 = + PHP.valueToCode(block, 'DIVIDEND', PHP.ORDER_MODULUS) || '0'; + const argument1 = PHP.valueToCode(block, 'DIVISOR', PHP.ORDER_MODULUS) || '0'; + const code = argument0 + ' % ' + argument1; + return [code, PHP.ORDER_MODULUS]; +}; + +PHP['math_constrain'] = function(block) { + // Constrain a number between two limits. + const argument0 = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || '0'; + const argument1 = PHP.valueToCode(block, 'LOW', PHP.ORDER_NONE) || '0'; + const argument2 = + PHP.valueToCode(block, 'HIGH', PHP.ORDER_NONE) || 'Infinity'; + const code = + 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['math_random_int'] = function(block) { + // Random integer between [X] and [Y]. + const argument0 = PHP.valueToCode(block, 'FROM', PHP.ORDER_NONE) || '0'; + const argument1 = PHP.valueToCode(block, 'TO', PHP.ORDER_NONE) || '0'; + const functionName = PHP.provideFunction_('math_random_int', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($a, $b) { + if ($a > $b) { + return rand($b, $a); + } + return rand($a, $b); +} +`); + const code = functionName + '(' + argument0 + ', ' + argument1 + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['math_random_float'] = function(block) { + // Random fraction between 0 and 1. + return ['(float)rand()/(float)getrandmax()', PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['math_atan2'] = function(block) { + // Arctangent of point (X, Y) in degrees from -180 to 180. + const argument0 = PHP.valueToCode(block, 'X', PHP.ORDER_NONE) || '0'; + const argument1 = PHP.valueToCode(block, 'Y', PHP.ORDER_NONE) || '0'; + return [ + 'atan2(' + argument1 + ', ' + argument0 + ') / pi() * 180', + PHP.ORDER_DIVISION + ]; +}; diff --git a/generators/php/procedures.js b/generators/php/procedures.js index 812e9705376..5f91b34939b 100644 --- a/generators/php/procedures.js +++ b/generators/php/procedures.js @@ -1,125 +1,125 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for procedure blocks. - */ -'use strict'; - -goog.module('Blockly.PHP.procedures'); - -const PHP = goog.require('Blockly.PHP'); -const Variables = goog.require('Blockly.Variables'); -const {NameType} = goog.require('Blockly.Names'); - - -PHP['procedures_defreturn'] = function(block) { - // Define a procedure with a return value. - // First, add a 'global' statement for every variable that is not shadowed by - // a local parameter. - const globals = []; - const workspace = block.workspace; - const usedVariables = Variables.allUsedVarModels(workspace) || []; - for (let i = 0, variable; variable = usedVariables[i]; i++) { - const varName = variable.name; - if (block.getVars().indexOf(varName) === -1) { - globals.push(PHP.nameDB_.getName(varName, NameType.VARIABLE)); - } - } - // Add developer variables. - const devVarList = Variables.allDeveloperVariables(workspace); - for (let i = 0; i < devVarList.length; i++) { - globals.push( - PHP.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE)); - } - const globalStr = - globals.length ? PHP.INDENT + 'global ' + globals.join(', ') + ';\n' : ''; - - const funcName = - PHP.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); - let xfix1 = ''; - if (PHP.STATEMENT_PREFIX) { - xfix1 += PHP.injectId(PHP.STATEMENT_PREFIX, block); - } - if (PHP.STATEMENT_SUFFIX) { - xfix1 += PHP.injectId(PHP.STATEMENT_SUFFIX, block); - } - if (xfix1) { - xfix1 = PHP.prefixLines(xfix1, PHP.INDENT); - } - let loopTrap = ''; - if (PHP.INFINITE_LOOP_TRAP) { - loopTrap = PHP.prefixLines( - PHP.injectId(PHP.INFINITE_LOOP_TRAP, block), PHP.INDENT); - } - const branch = PHP.statementToCode(block, 'STACK'); - let returnValue = PHP.valueToCode(block, 'RETURN', PHP.ORDER_NONE) || ''; - let xfix2 = ''; - if (branch && returnValue) { - // After executing the function body, revisit this block for the return. - xfix2 = xfix1; - } - if (returnValue) { - returnValue = PHP.INDENT + 'return ' + returnValue + ';\n'; - } - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = PHP.nameDB_.getName(variables[i], NameType.VARIABLE); - } - let code = 'function ' + funcName + '(' + args.join(', ') + ') {\n' + - globalStr + xfix1 + loopTrap + branch + xfix2 + returnValue + '}'; - code = PHP.scrub_(block, code); - // Add % so as not to collide with helper functions in definitions list. - PHP.definitions_['%' + funcName] = code; - return null; -}; - -// Defining a procedure without a return value uses the same generator as -// a procedure with a return value. -PHP['procedures_defnoreturn'] = PHP['procedures_defreturn']; - -PHP['procedures_callreturn'] = function(block) { - // Call a procedure with a return value. - const funcName = - PHP.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = PHP.valueToCode(block, 'ARG' + i, PHP.ORDER_NONE) || 'null'; - } - const code = funcName + '(' + args.join(', ') + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['procedures_callnoreturn'] = function(block) { - // Call a procedure with no return value. - // Generated code is for a function call as a statement is the same as a - // function call as a value, with the addition of line ending. - const tuple = PHP['procedures_callreturn'](block); - return tuple[0] + ';\n'; -}; - -PHP['procedures_ifreturn'] = function(block) { - // Conditionally return value from a procedure. - const condition = - PHP.valueToCode(block, 'CONDITION', PHP.ORDER_NONE) || 'false'; - let code = 'if (' + condition + ') {\n'; - if (PHP.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the return is triggered. - code += - PHP.prefixLines(PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT); - } - if (block.hasReturnValue_) { - const value = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'null'; - code += PHP.INDENT + 'return ' + value + ';\n'; - } else { - code += PHP.INDENT + 'return;\n'; - } - code += '}\n'; - return code; -}; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for procedure blocks. + */ +'use strict'; + +goog.module('Blockly.PHP.procedures'); + +const PHP = goog.require('Blockly.PHP'); +const Variables = goog.require('Blockly.Variables'); +const {NameType} = goog.require('Blockly.Names'); + + +PHP['procedures_defreturn'] = function(block) { + // Define a procedure with a return value. + // First, add a 'global' statement for every variable that is not shadowed by + // a local parameter. + const globals = []; + const workspace = block.workspace; + const usedVariables = Variables.allUsedVarModels(workspace) || []; + for (let i = 0, variable; variable = usedVariables[i]; i++) { + const varName = variable.name; + if (block.getVars().indexOf(varName) === -1) { + globals.push(PHP.nameDB_.getName(varName, NameType.VARIABLE)); + } + } + // Add developer variables. + const devVarList = Variables.allDeveloperVariables(workspace); + for (let i = 0; i < devVarList.length; i++) { + globals.push( + PHP.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE)); + } + const globalStr = + globals.length ? PHP.INDENT + 'global ' + globals.join(', ') + ';\n' : ''; + + const funcName = + PHP.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); + let xfix1 = ''; + if (PHP.STATEMENT_PREFIX) { + xfix1 += PHP.injectId(PHP.STATEMENT_PREFIX, block); + } + if (PHP.STATEMENT_SUFFIX) { + xfix1 += PHP.injectId(PHP.STATEMENT_SUFFIX, block); + } + if (xfix1) { + xfix1 = PHP.prefixLines(xfix1, PHP.INDENT); + } + let loopTrap = ''; + if (PHP.INFINITE_LOOP_TRAP) { + loopTrap = PHP.prefixLines( + PHP.injectId(PHP.INFINITE_LOOP_TRAP, block), PHP.INDENT); + } + const branch = PHP.statementToCode(block, 'STACK'); + let returnValue = PHP.valueToCode(block, 'RETURN', PHP.ORDER_NONE) || ''; + let xfix2 = ''; + if (branch && returnValue) { + // After executing the function body, revisit this block for the return. + xfix2 = xfix1; + } + if (returnValue) { + returnValue = PHP.INDENT + 'return ' + returnValue + ';\n'; + } + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i] = PHP.nameDB_.getName(variables[i], NameType.VARIABLE); + } + let code = 'function ' + funcName + '(' + args.join(', ') + ') {\n' + + globalStr + xfix1 + loopTrap + branch + xfix2 + returnValue + '}'; + code = PHP.scrub_(block, code); + // Add % so as not to collide with helper functions in definitions list. + PHP.definitions_['%' + funcName] = code; + return null; +}; + +// Defining a procedure without a return value uses the same generator as +// a procedure with a return value. +PHP['procedures_defnoreturn'] = PHP['procedures_defreturn']; + +PHP['procedures_callreturn'] = function(block) { + // Call a procedure with a return value. + const funcName = + PHP.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i] = PHP.valueToCode(block, 'ARG' + i, PHP.ORDER_NONE) || 'null'; + } + const code = funcName + '(' + args.join(', ') + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['procedures_callnoreturn'] = function(block) { + // Call a procedure with no return value. + // Generated code is for a function call as a statement is the same as a + // function call as a value, with the addition of line ending. + const tuple = PHP['procedures_callreturn'](block); + return tuple[0] + ';\n'; +}; + +PHP['procedures_ifreturn'] = function(block) { + // Conditionally return value from a procedure. + const condition = + PHP.valueToCode(block, 'CONDITION', PHP.ORDER_NONE) || 'false'; + let code = 'if (' + condition + ') {\n'; + if (PHP.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the return is triggered. + code += + PHP.prefixLines(PHP.injectId(PHP.STATEMENT_SUFFIX, block), PHP.INDENT); + } + if (block.hasReturnValue_) { + const value = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || 'null'; + code += PHP.INDENT + 'return ' + value + ';\n'; + } else { + code += PHP.INDENT + 'return;\n'; + } + code += '}\n'; + return code; +}; diff --git a/generators/php/text.js b/generators/php/text.js index bc62a95cfd7..7a9e70d16cc 100644 --- a/generators/php/text.js +++ b/generators/php/text.js @@ -1,255 +1,255 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for text blocks. - */ -'use strict'; - -goog.module('Blockly.PHP.texts'); - -const PHP = goog.require('Blockly.PHP'); -const {NameType} = goog.require('Blockly.Names'); - - -PHP['text'] = function(block) { - // Text value. - const code = PHP.quote_(block.getFieldValue('TEXT')); - return [code, PHP.ORDER_ATOMIC]; -}; - -PHP['text_multiline'] = function(block) { - // Text value. - const code = PHP.multiline_quote_(block.getFieldValue('TEXT')); - const order = - code.indexOf('.') !== -1 ? PHP.ORDER_STRING_CONCAT : PHP.ORDER_ATOMIC; - return [code, order]; -}; - -PHP['text_join'] = function(block) { - // Create a string made up of any number of elements of any type. - if (block.itemCount_ === 0) { - return ["''", PHP.ORDER_ATOMIC]; - } else if (block.itemCount_ === 1) { - const element = PHP.valueToCode(block, 'ADD0', PHP.ORDER_NONE) || "''"; - const code = element; - return [code, PHP.ORDER_NONE]; - } else if (block.itemCount_ === 2) { - const element0 = - PHP.valueToCode(block, 'ADD0', PHP.ORDER_STRING_CONCAT) || "''"; - const element1 = - PHP.valueToCode(block, 'ADD1', PHP.ORDER_STRING_CONCAT) || "''"; - const code = element0 + ' . ' + element1; - return [code, PHP.ORDER_STRING_CONCAT]; - } else { - const elements = new Array(block.itemCount_); - for (let i = 0; i < block.itemCount_; i++) { - elements[i] = PHP.valueToCode(block, 'ADD' + i, PHP.ORDER_NONE) || "''"; - } - const code = 'implode(\'\', array(' + elements.join(',') + '))'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } -}; - -PHP['text_append'] = function(block) { - // Append to a variable in place. - const varName = - PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const value = PHP.valueToCode(block, 'TEXT', PHP.ORDER_ASSIGNMENT) || "''"; - return varName + ' .= ' + value + ';\n'; -}; - -PHP['text_length'] = function(block) { - // String or array length. - const functionName = PHP.provideFunction_('length', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value) { - if (is_string($value)) { - return strlen($value); - } - return count($value); -} -`); - const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || "''"; - return [functionName + '(' + text + ')', PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['text_isEmpty'] = function(block) { - // Is the string null or array empty? - const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || "''"; - return ['empty(' + text + ')', PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['text_indexOf'] = function(block) { - // Search the text for a substring. - const operator = - block.getFieldValue('END') === 'FIRST' ? 'strpos' : 'strrpos'; - const substring = PHP.valueToCode(block, 'FIND', PHP.ORDER_NONE) || "''"; - const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || "''"; - let errorIndex = ' -1'; - let indexAdjustment = ''; - if (block.workspace.options.oneBasedIndex) { - errorIndex = ' 0'; - indexAdjustment = ' + 1'; - } - const functionName = PHP.provideFunction_( - block.getFieldValue('END') === 'FIRST' ? 'text_indexOf' : - 'text_lastIndexOf', - ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text, $search) { - $pos = ${operator}($text, $search); - return $pos === false ? ${errorIndex} : $pos${indexAdjustment}; -} -`); - const code = functionName + '(' + text + ', ' + substring + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['text_charAt'] = function(block) { - // Get letter at index. - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const textOrder = (where === 'RANDOM') ? PHP.ORDER_NONE : PHP.ORDER_NONE; - const text = PHP.valueToCode(block, 'VALUE', textOrder) || "''"; - switch (where) { - case 'FIRST': { - const code = 'substr(' + text + ', 0, 1)'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } - case 'LAST': { - const code = 'substr(' + text + ', -1)'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } - case 'FROM_START': { - const at = PHP.getAdjusted(block, 'AT'); - const code = 'substr(' + text + ', ' + at + ', 1)'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } - case 'FROM_END': { - const at = PHP.getAdjusted(block, 'AT', 1, true); - const code = 'substr(' + text + ', ' + at + ', 1)'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } - case 'RANDOM': { - const functionName = PHP.provideFunction_('text_random_letter', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text) { - return $text[rand(0, strlen($text) - 1)]; -} -`); - const code = functionName + '(' + text + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } - } - throw Error('Unhandled option (text_charAt).'); -}; - -PHP['text_getSubstring'] = function(block) { - // Get substring. - const where1 = block.getFieldValue('WHERE1'); - const where2 = block.getFieldValue('WHERE2'); - const text = PHP.valueToCode(block, 'STRING', PHP.ORDER_NONE) || "''"; - if (where1 === 'FIRST' && where2 === 'LAST') { - const code = text; - return [code, PHP.ORDER_NONE]; - } else { - const at1 = PHP.getAdjusted(block, 'AT1'); - const at2 = PHP.getAdjusted(block, 'AT2'); - const functionName = PHP.provideFunction_('text_get_substring', ` -function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text, $where1, $at1, $where2, $at2) { - if ($where1 == 'FROM_END') { - $at1 = strlen($text) - 1 - $at1; - } else if ($where1 == 'FIRST') { - $at1 = 0; - } else if ($where1 != 'FROM_START') { - throw new Exception('Unhandled option (text_get_substring).'); - } - $length = 0; - if ($where2 == 'FROM_START') { - $length = $at2 - $at1 + 1; - } else if ($where2 == 'FROM_END') { - $length = strlen($text) - $at1 - $at2; - } else if ($where2 == 'LAST') { - $length = strlen($text) - $at1; - } else { - throw new Exception('Unhandled option (text_get_substring).'); - } - return substr($text, $at1, $length); -} -`); - const code = functionName + '(' + text + ', \'' + where1 + '\', ' + at1 + - ', \'' + where2 + '\', ' + at2 + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; - } -}; - -PHP['text_changeCase'] = function(block) { - // Change capitalization. - const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; - let code; - if (block.getFieldValue('CASE') === 'UPPERCASE') { - code = 'strtoupper(' + text + ')'; - } else if (block.getFieldValue('CASE') === 'LOWERCASE') { - code = 'strtolower(' + text + ')'; - } else if (block.getFieldValue('CASE') === 'TITLECASE') { - code = 'ucwords(strtolower(' + text + '))'; - } - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['text_trim'] = function(block) { - // Trim spaces. - const OPERATORS = {'LEFT': 'ltrim', 'RIGHT': 'rtrim', 'BOTH': 'trim'}; - const operator = OPERATORS[block.getFieldValue('MODE')]; - const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; - return [operator + '(' + text + ')', PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['text_print'] = function(block) { - // Print statement. - const msg = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; - return 'print(' + msg + ');\n'; -}; - -PHP['text_prompt_ext'] = function(block) { - // Prompt function. - let msg; - if (block.getField('TEXT')) { - // Internal message. - msg = PHP.quote_(block.getFieldValue('TEXT')); - } else { - // External message. - msg = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; - } - let code = 'readline(' + msg + ')'; - const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; - if (toNumber) { - code = 'floatval(' + code + ')'; - } - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['text_prompt'] = PHP['text_prompt_ext']; - -PHP['text_count'] = function(block) { - const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; - const sub = PHP.valueToCode(block, 'SUB', PHP.ORDER_NONE) || "''"; - const code = 'strlen(' + sub + ') === 0' + - ' ? strlen(' + text + ') + 1' + - ' : substr_count(' + text + ', ' + sub + ')'; - return [code, PHP.ORDER_CONDITIONAL]; -}; - -PHP['text_replace'] = function(block) { - const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; - const from = PHP.valueToCode(block, 'FROM', PHP.ORDER_NONE) || "''"; - const to = PHP.valueToCode(block, 'TO', PHP.ORDER_NONE) || "''"; - const code = 'str_replace(' + from + ', ' + to + ', ' + text + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; - -PHP['text_reverse'] = function(block) { - const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; - const code = 'strrev(' + text + ')'; - return [code, PHP.ORDER_FUNCTION_CALL]; -}; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for text blocks. + */ +'use strict'; + +goog.module('Blockly.PHP.texts'); + +const PHP = goog.require('Blockly.PHP'); +const {NameType} = goog.require('Blockly.Names'); + + +PHP['text'] = function(block) { + // Text value. + const code = PHP.quote_(block.getFieldValue('TEXT')); + return [code, PHP.ORDER_ATOMIC]; +}; + +PHP['text_multiline'] = function(block) { + // Text value. + const code = PHP.multiline_quote_(block.getFieldValue('TEXT')); + const order = + code.indexOf('.') !== -1 ? PHP.ORDER_STRING_CONCAT : PHP.ORDER_ATOMIC; + return [code, order]; +}; + +PHP['text_join'] = function(block) { + // Create a string made up of any number of elements of any type. + if (block.itemCount_ === 0) { + return ["''", PHP.ORDER_ATOMIC]; + } else if (block.itemCount_ === 1) { + const element = PHP.valueToCode(block, 'ADD0', PHP.ORDER_NONE) || "''"; + const code = element; + return [code, PHP.ORDER_NONE]; + } else if (block.itemCount_ === 2) { + const element0 = + PHP.valueToCode(block, 'ADD0', PHP.ORDER_STRING_CONCAT) || "''"; + const element1 = + PHP.valueToCode(block, 'ADD1', PHP.ORDER_STRING_CONCAT) || "''"; + const code = element0 + ' . ' + element1; + return [code, PHP.ORDER_STRING_CONCAT]; + } else { + const elements = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { + elements[i] = PHP.valueToCode(block, 'ADD' + i, PHP.ORDER_NONE) || "''"; + } + const code = 'implode(\'\', array(' + elements.join(',') + '))'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } +}; + +PHP['text_append'] = function(block) { + // Append to a variable in place. + const varName = + PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const value = PHP.valueToCode(block, 'TEXT', PHP.ORDER_ASSIGNMENT) || "''"; + return varName + ' .= ' + value + ';\n'; +}; + +PHP['text_length'] = function(block) { + // String or array length. + const functionName = PHP.provideFunction_('length', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($value) { + if (is_string($value)) { + return strlen($value); + } + return count($value); +} +`); + const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || "''"; + return [functionName + '(' + text + ')', PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['text_isEmpty'] = function(block) { + // Is the string null or array empty? + const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || "''"; + return ['empty(' + text + ')', PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['text_indexOf'] = function(block) { + // Search the text for a substring. + const operator = + block.getFieldValue('END') === 'FIRST' ? 'strpos' : 'strrpos'; + const substring = PHP.valueToCode(block, 'FIND', PHP.ORDER_NONE) || "''"; + const text = PHP.valueToCode(block, 'VALUE', PHP.ORDER_NONE) || "''"; + let errorIndex = ' -1'; + let indexAdjustment = ''; + if (block.workspace.options.oneBasedIndex) { + errorIndex = ' 0'; + indexAdjustment = ' + 1'; + } + const functionName = PHP.provideFunction_( + block.getFieldValue('END') === 'FIRST' ? 'text_indexOf' : + 'text_lastIndexOf', + ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text, $search) { + $pos = ${operator}($text, $search); + return $pos === false ? ${errorIndex} : $pos${indexAdjustment}; +} +`); + const code = functionName + '(' + text + ', ' + substring + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['text_charAt'] = function(block) { + // Get letter at index. + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const textOrder = (where === 'RANDOM') ? PHP.ORDER_NONE : PHP.ORDER_NONE; + const text = PHP.valueToCode(block, 'VALUE', textOrder) || "''"; + switch (where) { + case 'FIRST': { + const code = 'substr(' + text + ', 0, 1)'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } + case 'LAST': { + const code = 'substr(' + text + ', -1)'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } + case 'FROM_START': { + const at = PHP.getAdjusted(block, 'AT'); + const code = 'substr(' + text + ', ' + at + ', 1)'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } + case 'FROM_END': { + const at = PHP.getAdjusted(block, 'AT', 1, true); + const code = 'substr(' + text + ', ' + at + ', 1)'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } + case 'RANDOM': { + const functionName = PHP.provideFunction_('text_random_letter', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text) { + return $text[rand(0, strlen($text) - 1)]; +} +`); + const code = functionName + '(' + text + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } + } + throw Error('Unhandled option (text_charAt).'); +}; + +PHP['text_getSubstring'] = function(block) { + // Get substring. + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + const text = PHP.valueToCode(block, 'STRING', PHP.ORDER_NONE) || "''"; + if (where1 === 'FIRST' && where2 === 'LAST') { + const code = text; + return [code, PHP.ORDER_NONE]; + } else { + const at1 = PHP.getAdjusted(block, 'AT1'); + const at2 = PHP.getAdjusted(block, 'AT2'); + const functionName = PHP.provideFunction_('text_get_substring', ` +function ${PHP.FUNCTION_NAME_PLACEHOLDER_}($text, $where1, $at1, $where2, $at2) { + if ($where1 == 'FROM_END') { + $at1 = strlen($text) - 1 - $at1; + } else if ($where1 == 'FIRST') { + $at1 = 0; + } else if ($where1 != 'FROM_START') { + throw new Exception('Unhandled option (text_get_substring).'); + } + $length = 0; + if ($where2 == 'FROM_START') { + $length = $at2 - $at1 + 1; + } else if ($where2 == 'FROM_END') { + $length = strlen($text) - $at1 - $at2; + } else if ($where2 == 'LAST') { + $length = strlen($text) - $at1; + } else { + throw new Exception('Unhandled option (text_get_substring).'); + } + return substr($text, $at1, $length); +} +`); + const code = functionName + '(' + text + ', \'' + where1 + '\', ' + at1 + + ', \'' + where2 + '\', ' + at2 + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; + } +}; + +PHP['text_changeCase'] = function(block) { + // Change capitalization. + const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; + let code; + if (block.getFieldValue('CASE') === 'UPPERCASE') { + code = 'strtoupper(' + text + ')'; + } else if (block.getFieldValue('CASE') === 'LOWERCASE') { + code = 'strtolower(' + text + ')'; + } else if (block.getFieldValue('CASE') === 'TITLECASE') { + code = 'ucwords(strtolower(' + text + '))'; + } + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['text_trim'] = function(block) { + // Trim spaces. + const OPERATORS = {'LEFT': 'ltrim', 'RIGHT': 'rtrim', 'BOTH': 'trim'}; + const operator = OPERATORS[block.getFieldValue('MODE')]; + const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; + return [operator + '(' + text + ')', PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['text_print'] = function(block) { + // Print statement. + const msg = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; + return 'print(' + msg + ');\n'; +}; + +PHP['text_prompt_ext'] = function(block) { + // Prompt function. + let msg; + if (block.getField('TEXT')) { + // Internal message. + msg = PHP.quote_(block.getFieldValue('TEXT')); + } else { + // External message. + msg = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; + } + let code = 'readline(' + msg + ')'; + const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; + if (toNumber) { + code = 'floatval(' + code + ')'; + } + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['text_prompt'] = PHP['text_prompt_ext']; + +PHP['text_count'] = function(block) { + const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; + const sub = PHP.valueToCode(block, 'SUB', PHP.ORDER_NONE) || "''"; + const code = 'strlen(' + sub + ') === 0' + + ' ? strlen(' + text + ') + 1' + + ' : substr_count(' + text + ', ' + sub + ')'; + return [code, PHP.ORDER_CONDITIONAL]; +}; + +PHP['text_replace'] = function(block) { + const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; + const from = PHP.valueToCode(block, 'FROM', PHP.ORDER_NONE) || "''"; + const to = PHP.valueToCode(block, 'TO', PHP.ORDER_NONE) || "''"; + const code = 'str_replace(' + from + ', ' + to + ', ' + text + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; + +PHP['text_reverse'] = function(block) { + const text = PHP.valueToCode(block, 'TEXT', PHP.ORDER_NONE) || "''"; + const code = 'strrev(' + text + ')'; + return [code, PHP.ORDER_FUNCTION_CALL]; +}; diff --git a/generators/php/variables.js b/generators/php/variables.js index 1a9da02e942..3a9b408d2e5 100644 --- a/generators/php/variables.js +++ b/generators/php/variables.js @@ -1,32 +1,32 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for variable blocks. - */ -'use strict'; - -goog.module('Blockly.PHP.variables'); - -const PHP = goog.require('Blockly.PHP'); -const {NameType} = goog.require('Blockly.Names'); - - -PHP['variables_get'] = function(block) { - // Variable getter. - const code = - PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return [code, PHP.ORDER_ATOMIC]; -}; - -PHP['variables_set'] = function(block) { - // Variable setter. - const argument0 = - PHP.valueToCode(block, 'VALUE', PHP.ORDER_ASSIGNMENT) || '0'; - const varName = - PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return varName + ' = ' + argument0 + ';\n'; -}; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for variable blocks. + */ +'use strict'; + +goog.module('Blockly.PHP.variables'); + +const PHP = goog.require('Blockly.PHP'); +const {NameType} = goog.require('Blockly.Names'); + + +PHP['variables_get'] = function(block) { + // Variable getter. + const code = + PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return [code, PHP.ORDER_ATOMIC]; +}; + +PHP['variables_set'] = function(block) { + // Variable setter. + const argument0 = + PHP.valueToCode(block, 'VALUE', PHP.ORDER_ASSIGNMENT) || '0'; + const varName = + PHP.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return varName + ' = ' + argument0 + ';\n'; +}; diff --git a/generators/php/variables_dynamic.js b/generators/php/variables_dynamic.js index 88905236034..8ad49131cfa 100644 --- a/generators/php/variables_dynamic.js +++ b/generators/php/variables_dynamic.js @@ -1,21 +1,21 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for dynamic variable blocks. - */ -'use strict'; - -goog.module('Blockly.PHP.variablesDynamic'); - -const PHP = goog.require('Blockly.PHP'); -/** @suppress {extraRequire} */ -goog.require('Blockly.PHP.variables'); - - -// PHP is dynamically typed. -PHP['variables_get_dynamic'] = PHP['variables_get']; -PHP['variables_set_dynamic'] = PHP['variables_set']; +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for dynamic variable blocks. + */ +'use strict'; + +goog.module('Blockly.PHP.variablesDynamic'); + +const PHP = goog.require('Blockly.PHP'); +/** @suppress {extraRequire} */ +goog.require('Blockly.PHP.variables'); + + +// PHP is dynamically typed. +PHP['variables_get_dynamic'] = PHP['variables_get']; +PHP['variables_set_dynamic'] = PHP['variables_set']; diff --git a/generators/python.js b/generators/python.js index b676bb83a81..930a4a74720 100644 --- a/generators/python.js +++ b/generators/python.js @@ -1,334 +1,334 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Helper functions for generating Python for blocks. - * @suppress {checkTypes|globalThis} - */ -'use strict'; - -goog.module('Blockly.Python'); -goog.module.declareLegacyNamespace(); - -const stringUtils = goog.require('Blockly.utils.string'); -const Variables = goog.require('Blockly.Variables'); -const {Block} = goog.requireType('Blockly.Block'); -const {Generator} = goog.require('Blockly.Generator'); -const {inputTypes} = goog.require('Blockly.inputTypes'); -const {Names, NameType} = goog.require('Blockly.Names'); -const {Workspace} = goog.requireType('Blockly.Workspace'); - - -/** - * Python code generator. - * @type {!Generator} - */ -const Python = new Generator('Python'); - -/** - * List of illegal variable names. - * This is not intended to be a security feature. Blockly is 100% client-side, - * so bypassing this list is trivial. This is intended to prevent users from - * accidentally clobbering a built-in object or function. - */ -Python.addReservedWords( - // import keyword - // print(','.join(sorted(keyword.kwlist))) - // https://docs.python.org/3/reference/lexical_analysis.html#keywords - // https://docs.python.org/2/reference/lexical_analysis.html#keywords - 'False,None,True,and,as,assert,break,class,continue,def,del,elif,else,' + - 'except,exec,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,' + - 'or,pass,print,raise,return,try,while,with,yield,' + - // https://docs.python.org/3/library/constants.html - // https://docs.python.org/2/library/constants.html - 'NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,' + - // >>> print(','.join(sorted(dir(__builtins__)))) - // https://docs.python.org/3/library/functions.html - // https://docs.python.org/2/library/functions.html - 'ArithmeticError,AssertionError,AttributeError,BaseException,' + - 'BlockingIOError,BrokenPipeError,BufferError,BytesWarning,' + - 'ChildProcessError,ConnectionAbortedError,ConnectionError,' + - 'ConnectionRefusedError,ConnectionResetError,DeprecationWarning,EOFError,' + - 'Ellipsis,EnvironmentError,Exception,FileExistsError,FileNotFoundError,' + - 'FloatingPointError,FutureWarning,GeneratorExit,IOError,ImportError,' + - 'ImportWarning,IndentationError,IndexError,InterruptedError,' + - 'IsADirectoryError,KeyError,KeyboardInterrupt,LookupError,MemoryError,' + - 'ModuleNotFoundError,NameError,NotADirectoryError,NotImplemented,' + - 'NotImplementedError,OSError,OverflowError,PendingDeprecationWarning,' + - 'PermissionError,ProcessLookupError,RecursionError,ReferenceError,' + - 'ResourceWarning,RuntimeError,RuntimeWarning,StandardError,' + - 'StopAsyncIteration,StopIteration,SyntaxError,SyntaxWarning,SystemError,' + - 'SystemExit,TabError,TimeoutError,TypeError,UnboundLocalError,' + - 'UnicodeDecodeError,UnicodeEncodeError,UnicodeError,' + - 'UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,' + - 'ZeroDivisionError,_,__build_class__,__debug__,__doc__,__import__,' + - '__loader__,__name__,__package__,__spec__,abs,all,any,apply,ascii,' + - 'basestring,bin,bool,buffer,bytearray,bytes,callable,chr,classmethod,cmp,' + - 'coerce,compile,complex,copyright,credits,delattr,dict,dir,divmod,' + - 'enumerate,eval,exec,execfile,exit,file,filter,float,format,frozenset,' + - 'getattr,globals,hasattr,hash,help,hex,id,input,int,intern,isinstance,' + - 'issubclass,iter,len,license,list,locals,long,map,max,memoryview,min,' + - 'next,object,oct,open,ord,pow,print,property,quit,range,raw_input,reduce,' + - 'reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,' + - 'sum,super,tuple,type,unichr,unicode,vars,xrange,zip'); - -/** - * Order of operation ENUMs. - * http://docs.python.org/reference/expressions.html#summary - */ -Python.ORDER_ATOMIC = 0; // 0 "" ... -Python.ORDER_COLLECTION = 1; // tuples, lists, dictionaries -Python.ORDER_STRING_CONVERSION = 1; // `expression...` -Python.ORDER_MEMBER = 2.1; // . [] -Python.ORDER_FUNCTION_CALL = 2.2; // () -Python.ORDER_EXPONENTIATION = 3; // ** -Python.ORDER_UNARY_SIGN = 4; // + - -Python.ORDER_BITWISE_NOT = 4; // ~ -Python.ORDER_MULTIPLICATIVE = 5; // * / // % -Python.ORDER_ADDITIVE = 6; // + - -Python.ORDER_BITWISE_SHIFT = 7; // << >> -Python.ORDER_BITWISE_AND = 8; // & -Python.ORDER_BITWISE_XOR = 9; // ^ -Python.ORDER_BITWISE_OR = 10; // | -Python.ORDER_RELATIONAL = 11; // in, not in, is, is not, - // <, <=, >, >=, <>, !=, == -Python.ORDER_LOGICAL_NOT = 12; // not -Python.ORDER_LOGICAL_AND = 13; // and -Python.ORDER_LOGICAL_OR = 14; // or -Python.ORDER_CONDITIONAL = 15; // if else -Python.ORDER_LAMBDA = 16; // lambda -Python.ORDER_NONE = 99; // (...) - -/** - * List of outer-inner pairings that do NOT require parentheses. - * @type {!Array>} - */ -Python.ORDER_OVERRIDES = [ - // (foo()).bar -> foo().bar - // (foo())[0] -> foo()[0] - [Python.ORDER_FUNCTION_CALL, Python.ORDER_MEMBER], - // (foo())() -> foo()() - [Python.ORDER_FUNCTION_CALL, Python.ORDER_FUNCTION_CALL], - // (foo.bar).baz -> foo.bar.baz - // (foo.bar)[0] -> foo.bar[0] - // (foo[0]).bar -> foo[0].bar - // (foo[0])[1] -> foo[0][1] - [Python.ORDER_MEMBER, Python.ORDER_MEMBER], - // (foo.bar)() -> foo.bar() - // (foo[0])() -> foo[0]() - [Python.ORDER_MEMBER, Python.ORDER_FUNCTION_CALL], - - // not (not foo) -> not not foo - [Python.ORDER_LOGICAL_NOT, Python.ORDER_LOGICAL_NOT], - // a and (b and c) -> a and b and c - [Python.ORDER_LOGICAL_AND, Python.ORDER_LOGICAL_AND], - // a or (b or c) -> a or b or c - [Python.ORDER_LOGICAL_OR, Python.ORDER_LOGICAL_OR] -]; - -/** - * Whether the init method has been called. - * @type {?boolean} - */ -Python.isInitialized = false; - -/** - * Initialise the database of variable names. - * @param {!Workspace} workspace Workspace to generate code from. - * @this {Generator} - */ -Python.init = function(workspace) { - // Call Blockly.Generator's init. - Object.getPrototypeOf(this).init.call(this); - - /** - * Empty loops or conditionals are not allowed in Python. - */ - this.PASS = this.INDENT + 'pass\n'; - - if (!this.nameDB_) { - this.nameDB_ = new Names(this.RESERVED_WORDS_); - } else { - this.nameDB_.reset(); - } - - this.nameDB_.setVariableMap(workspace.getVariableMap()); - this.nameDB_.populateVariables(workspace); - this.nameDB_.populateProcedures(workspace); - - const defvars = []; - // Add developer variables (not created or named by the user). - const devVarList = Variables.allDeveloperVariables(workspace); - for (let i = 0; i < devVarList.length; i++) { - defvars.push( - this.nameDB_.getName(devVarList[i], Names.DEVELOPER_VARIABLE_TYPE) + - ' = None'); - } - - // Add user variables, but only ones that are being used. - const variables = Variables.allUsedVarModels(workspace); - for (let i = 0; i < variables.length; i++) { - defvars.push( - this.nameDB_.getName(variables[i].getId(), NameType.VARIABLE) + - ' = None'); - } - - this.definitions_['variables'] = defvars.join('\n'); - this.isInitialized = true; -}; - -/** - * Prepend the generated code with import statements and variable definitions. - * @param {string} code Generated code. - * @return {string} Completed code. - */ -Python.finish = function(code) { - // Convert the definitions dictionary into a list. - const imports = []; - const definitions = []; - for (let name in this.definitions_) { - const def = this.definitions_[name]; - if (def.match(/^(from\s+\S+\s+)?import\s+\S+/)) { - imports.push(def); - } else { - definitions.push(def); - } - } - // Call Blockly.Generator's finish. - code = Object.getPrototypeOf(this).finish.call(this, code); - this.isInitialized = false; - - this.nameDB_.reset(); - const allDefs = imports.join('\n') + '\n\n' + definitions.join('\n\n'); - return allDefs.replace(/\n\n+/g, '\n\n').replace(/\n*$/, '\n\n\n') + code; -}; - -/** - * Naked values are top-level blocks with outputs that aren't plugged into - * anything. - * @param {string} line Line of generated code. - * @return {string} Legal line of code. - */ -Python.scrubNakedValue = function(line) { - return line + '\n'; -}; - -/** - * Encode a string as a properly escaped Python string, complete with quotes. - * @param {string} string Text to encode. - * @return {string} Python string. - * @protected - */ -Python.quote_ = function(string) { - // Can't use goog.string.quote since % must also be escaped. - string = string.replace(/\\/g, '\\\\').replace(/\n/g, '\\\n'); - - // Follow the CPython behaviour of repr() for a non-byte string. - let quote = '\''; - if (string.indexOf('\'') !== -1) { - if (string.indexOf('"') === -1) { - quote = '"'; - } else { - string = string.replace(/'/g, '\\\''); - } - } - return quote + string + quote; -}; - -/** - * Encode a string as a properly escaped multiline Python string, complete - * with quotes. - * @param {string} string Text to encode. - * @return {string} Python string. - * @protected - */ -Python.multiline_quote_ = function(string) { - const lines = string.split(/\n/g).map(this.quote_); - // Join with the following, plus a newline: - // + '\n' + - return lines.join(' + \'\\n\' + \n'); -}; - -/** - * Common tasks for generating Python from blocks. - * Handles comments for the specified block and any connected value blocks. - * Calls any statements following this block. - * @param {!Block} block The current block. - * @param {string} code The Python code created for this block. - * @param {boolean=} opt_thisOnly True to generate code for only this statement. - * @return {string} Python code with comments and subsequent blocks added. - * @protected - */ -Python.scrub_ = function(block, code, opt_thisOnly) { - let commentCode = ''; - // Only collect comments for blocks that aren't inline. - if (!block.outputConnection || !block.outputConnection.targetConnection) { - // Collect comment for this block. - let comment = block.getCommentText(); - if (comment) { - comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); - commentCode += this.prefixLines(comment + '\n', '# '); - } - // Collect comments for all value arguments. - // Don't collect comments for nested statements. - for (let i = 0; i < block.inputList.length; i++) { - if (block.inputList[i].type === inputTypes.VALUE) { - const childBlock = block.inputList[i].connection.targetBlock(); - if (childBlock) { - comment = this.allNestedComments(childBlock); - if (comment) { - commentCode += this.prefixLines(comment, '# '); - } - } - } - } - } - const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); - const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); - return commentCode + code + nextCode; -}; - -/** - * Gets a property and adjusts the value, taking into account indexing. - * If a static int, casts to an integer, otherwise returns a code string. - * @param {!Block} block The block. - * @param {string} atId The property ID of the element to get. - * @param {number=} opt_delta Value to add. - * @param {boolean=} opt_negate Whether to negate the value. - * @return {string|number} - */ -Python.getAdjustedInt = function(block, atId, opt_delta, opt_negate) { - let delta = opt_delta || 0; - if (block.workspace.options.oneBasedIndex) { - delta--; - } - const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; - const atOrder = delta ? this.ORDER_ADDITIVE : this.ORDER_NONE; - let at = this.valueToCode(block, atId, atOrder) || defaultAtIndex; - - if (stringUtils.isNumber(at)) { - // If the index is a naked number, adjust it right now. - at = parseInt(at, 10) + delta; - if (opt_negate) { - at = -at; - } - } else { - // If the index is dynamic, adjust it in code. - if (delta > 0) { - at = 'int(' + at + ' + ' + delta + ')'; - } else if (delta < 0) { - at = 'int(' + at + ' - ' + -delta + ')'; - } else { - at = 'int(' + at + ')'; - } - if (opt_negate) { - at = '-' + at; - } - } - return at; -}; - -exports = Python; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Helper functions for generating Python for blocks. + * @suppress {checkTypes|globalThis} + */ +'use strict'; + +goog.module('Blockly.Python'); +goog.module.declareLegacyNamespace(); + +const stringUtils = goog.require('Blockly.utils.string'); +const Variables = goog.require('Blockly.Variables'); +const {Block} = goog.requireType('Blockly.Block'); +const {Generator} = goog.require('Blockly.Generator'); +const {inputTypes} = goog.require('Blockly.inputTypes'); +const {Names, NameType} = goog.require('Blockly.Names'); +const {Workspace} = goog.requireType('Blockly.Workspace'); + + +/** + * Python code generator. + * @type {!Generator} + */ +const Python = new Generator('Python'); + +/** + * List of illegal variable names. + * This is not intended to be a security feature. Blockly is 100% client-side, + * so bypassing this list is trivial. This is intended to prevent users from + * accidentally clobbering a built-in object or function. + */ +Python.addReservedWords( + // import keyword + // print(','.join(sorted(keyword.kwlist))) + // https://docs.python.org/3/reference/lexical_analysis.html#keywords + // https://docs.python.org/2/reference/lexical_analysis.html#keywords + 'False,None,True,and,as,assert,break,class,continue,def,del,elif,else,' + + 'except,exec,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,' + + 'or,pass,print,raise,return,try,while,with,yield,' + + // https://docs.python.org/3/library/constants.html + // https://docs.python.org/2/library/constants.html + 'NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,' + + // >>> print(','.join(sorted(dir(__builtins__)))) + // https://docs.python.org/3/library/functions.html + // https://docs.python.org/2/library/functions.html + 'ArithmeticError,AssertionError,AttributeError,BaseException,' + + 'BlockingIOError,BrokenPipeError,BufferError,BytesWarning,' + + 'ChildProcessError,ConnectionAbortedError,ConnectionError,' + + 'ConnectionRefusedError,ConnectionResetError,DeprecationWarning,EOFError,' + + 'Ellipsis,EnvironmentError,Exception,FileExistsError,FileNotFoundError,' + + 'FloatingPointError,FutureWarning,GeneratorExit,IOError,ImportError,' + + 'ImportWarning,IndentationError,IndexError,InterruptedError,' + + 'IsADirectoryError,KeyError,KeyboardInterrupt,LookupError,MemoryError,' + + 'ModuleNotFoundError,NameError,NotADirectoryError,NotImplemented,' + + 'NotImplementedError,OSError,OverflowError,PendingDeprecationWarning,' + + 'PermissionError,ProcessLookupError,RecursionError,ReferenceError,' + + 'ResourceWarning,RuntimeError,RuntimeWarning,StandardError,' + + 'StopAsyncIteration,StopIteration,SyntaxError,SyntaxWarning,SystemError,' + + 'SystemExit,TabError,TimeoutError,TypeError,UnboundLocalError,' + + 'UnicodeDecodeError,UnicodeEncodeError,UnicodeError,' + + 'UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,' + + 'ZeroDivisionError,_,__build_class__,__debug__,__doc__,__import__,' + + '__loader__,__name__,__package__,__spec__,abs,all,any,apply,ascii,' + + 'basestring,bin,bool,buffer,bytearray,bytes,callable,chr,classmethod,cmp,' + + 'coerce,compile,complex,copyright,credits,delattr,dict,dir,divmod,' + + 'enumerate,eval,exec,execfile,exit,file,filter,float,format,frozenset,' + + 'getattr,globals,hasattr,hash,help,hex,id,input,int,intern,isinstance,' + + 'issubclass,iter,len,license,list,locals,long,map,max,memoryview,min,' + + 'next,object,oct,open,ord,pow,print,property,quit,range,raw_input,reduce,' + + 'reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,' + + 'sum,super,tuple,type,unichr,unicode,vars,xrange,zip'); + +/** + * Order of operation ENUMs. + * http://docs.python.org/reference/expressions.html#summary + */ +Python.ORDER_ATOMIC = 0; // 0 "" ... +Python.ORDER_COLLECTION = 1; // tuples, lists, dictionaries +Python.ORDER_STRING_CONVERSION = 1; // `expression...` +Python.ORDER_MEMBER = 2.1; // . [] +Python.ORDER_FUNCTION_CALL = 2.2; // () +Python.ORDER_EXPONENTIATION = 3; // ** +Python.ORDER_UNARY_SIGN = 4; // + - +Python.ORDER_BITWISE_NOT = 4; // ~ +Python.ORDER_MULTIPLICATIVE = 5; // * / // % +Python.ORDER_ADDITIVE = 6; // + - +Python.ORDER_BITWISE_SHIFT = 7; // << >> +Python.ORDER_BITWISE_AND = 8; // & +Python.ORDER_BITWISE_XOR = 9; // ^ +Python.ORDER_BITWISE_OR = 10; // | +Python.ORDER_RELATIONAL = 11; // in, not in, is, is not, + // <, <=, >, >=, <>, !=, == +Python.ORDER_LOGICAL_NOT = 12; // not +Python.ORDER_LOGICAL_AND = 13; // and +Python.ORDER_LOGICAL_OR = 14; // or +Python.ORDER_CONDITIONAL = 15; // if else +Python.ORDER_LAMBDA = 16; // lambda +Python.ORDER_NONE = 99; // (...) + +/** + * List of outer-inner pairings that do NOT require parentheses. + * @type {!Array>} + */ +Python.ORDER_OVERRIDES = [ + // (foo()).bar -> foo().bar + // (foo())[0] -> foo()[0] + [Python.ORDER_FUNCTION_CALL, Python.ORDER_MEMBER], + // (foo())() -> foo()() + [Python.ORDER_FUNCTION_CALL, Python.ORDER_FUNCTION_CALL], + // (foo.bar).baz -> foo.bar.baz + // (foo.bar)[0] -> foo.bar[0] + // (foo[0]).bar -> foo[0].bar + // (foo[0])[1] -> foo[0][1] + [Python.ORDER_MEMBER, Python.ORDER_MEMBER], + // (foo.bar)() -> foo.bar() + // (foo[0])() -> foo[0]() + [Python.ORDER_MEMBER, Python.ORDER_FUNCTION_CALL], + + // not (not foo) -> not not foo + [Python.ORDER_LOGICAL_NOT, Python.ORDER_LOGICAL_NOT], + // a and (b and c) -> a and b and c + [Python.ORDER_LOGICAL_AND, Python.ORDER_LOGICAL_AND], + // a or (b or c) -> a or b or c + [Python.ORDER_LOGICAL_OR, Python.ORDER_LOGICAL_OR] +]; + +/** + * Whether the init method has been called. + * @type {?boolean} + */ +Python.isInitialized = false; + +/** + * Initialise the database of variable names. + * @param {!Workspace} workspace Workspace to generate code from. + * @this {Generator} + */ +Python.init = function(workspace) { + // Call Blockly.Generator's init. + Object.getPrototypeOf(this).init.call(this); + + /** + * Empty loops or conditionals are not allowed in Python. + */ + this.PASS = this.INDENT + 'pass\n'; + + if (!this.nameDB_) { + this.nameDB_ = new Names(this.RESERVED_WORDS_); + } else { + this.nameDB_.reset(); + } + + this.nameDB_.setVariableMap(workspace.getVariableMap()); + this.nameDB_.populateVariables(workspace); + this.nameDB_.populateProcedures(workspace); + + const defvars = []; + // Add developer variables (not created or named by the user). + const devVarList = Variables.allDeveloperVariables(workspace); + for (let i = 0; i < devVarList.length; i++) { + defvars.push( "self." + + this.nameDB_.getName(devVarList[i], Names.DEVELOPER_VARIABLE_TYPE) + + ' = None'); + } + + // Add user variables, but only ones that are being used. + const variables = Variables.allUsedVarModels(workspace); + for (let i = 0; i < variables.length; i++) { + defvars.push( "self." + + this.nameDB_.getName(variables[i].getId(), NameType.VARIABLE) + + ' = None'); + } + + this.definitions_['variables'] = defvars.join('\n'); + this.isInitialized = true; +}; + +/** + * Prepend the generated code with import statements and variable definitions. + * @param {string} code Generated code. + * @return {string} Completed code. + */ +Python.finish = function(code) { + // Convert the definitions dictionary into a list. + const imports = []; + const definitions = []; + for (let name in this.definitions_) { + const def = this.definitions_[name]; + if (def.match(/^(from\s+\S+\s+)?import\s+\S+/)) { + imports.push(def); + } else { + definitions.push(def); + } + } + // Call Blockly.Generator's finish. + code = Object.getPrototypeOf(this).finish.call(this, code); + this.isInitialized = false; + + this.nameDB_.reset(); + const allDefs = imports.join('\n') + '\n\n' + definitions.join('\n\n'); + return allDefs.replace(/\n\n+/g, '\n\n').replace(/\n*$/, '\n\n\n') + code; +}; + +/** + * Naked values are top-level blocks with outputs that aren't plugged into + * anything. + * @param {string} line Line of generated code. + * @return {string} Legal line of code. + */ +Python.scrubNakedValue = function(line) { + return line + '\n'; +}; + +/** + * Encode a string as a properly escaped Python string, complete with quotes. + * @param {string} string Text to encode. + * @return {string} Python string. + * @protected + */ +Python.quote_ = function(string) { + // Can't use goog.string.quote since % must also be escaped. + string = string.replace(/\\/g, '\\\\').replace(/\n/g, '\\\n'); + + // Follow the CPython behaviour of repr() for a non-byte string. + let quote = '\''; + if (string.indexOf('\'') !== -1) { + if (string.indexOf('"') === -1) { + quote = '"'; + } else { + string = string.replace(/'/g, '\\\''); + } + } + return quote + string + quote; +}; + +/** + * Encode a string as a properly escaped multiline Python string, complete + * with quotes. + * @param {string} string Text to encode. + * @return {string} Python string. + * @protected + */ +Python.multiline_quote_ = function(string) { + const lines = string.split(/\n/g).map(this.quote_); + // Join with the following, plus a newline: + // + '\n' + + return lines.join(' + \'\\n\' + \n'); +}; + +/** + * Common tasks for generating Python from blocks. + * Handles comments for the specified block and any connected value blocks. + * Calls any statements following this block. + * @param {!Block} block The current block. + * @param {string} code The Python code created for this block. + * @param {boolean=} opt_thisOnly True to generate code for only this statement. + * @return {string} Python code with comments and subsequent blocks added. + * @protected + */ +Python.scrub_ = function(block, code, opt_thisOnly) { + let commentCode = ''; + // Only collect comments for blocks that aren't inline. + if (!block.outputConnection || !block.outputConnection.targetConnection) { + // Collect comment for this block. + let comment = block.getCommentText(); + if (comment) { + comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3); + commentCode += this.prefixLines(comment + '\n', '# '); + } + // Collect comments for all value arguments. + // Don't collect comments for nested statements. + for (let i = 0; i < block.inputList.length; i++) { + if (block.inputList[i].type === inputTypes.VALUE) { + const childBlock = block.inputList[i].connection.targetBlock(); + if (childBlock) { + comment = this.allNestedComments(childBlock); + if (comment) { + commentCode += this.prefixLines(comment, '# '); + } + } + } + } + } + const nextBlock = block.nextConnection && block.nextConnection.targetBlock(); + const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock); + return commentCode + code + nextCode; +}; + +/** + * Gets a property and adjusts the value, taking into account indexing. + * If a static int, casts to an integer, otherwise returns a code string. + * @param {!Block} block The block. + * @param {string} atId The property ID of the element to get. + * @param {number=} opt_delta Value to add. + * @param {boolean=} opt_negate Whether to negate the value. + * @return {string|number} + */ +Python.getAdjustedInt = function(block, atId, opt_delta, opt_negate) { + let delta = opt_delta || 0; + if (block.workspace.options.oneBasedIndex) { + delta--; + } + const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0'; + const atOrder = delta ? this.ORDER_ADDITIVE : this.ORDER_NONE; + let at = this.valueToCode(block, atId, atOrder) || defaultAtIndex; + + if (stringUtils.isNumber(at)) { + // If the index is a naked number, adjust it right now. + at = parseInt(at, 10) + delta; + if (opt_negate) { + at = -at; + } + } else { + // If the index is dynamic, adjust it in code. + if (delta > 0) { + at = 'int(' + at + ' + ' + delta + ')'; + } else if (delta < 0) { + at = 'int(' + at + ' - ' + -delta + ')'; + } else { + at = 'int(' + at + ')'; + } + if (opt_negate) { + at = '-' + at; + } + } + return at; +}; + +exports = Python; diff --git a/generators/python/all.js b/generators/python/all.js index 0c3bfbb47bd..aff7f7b3daa 100644 --- a/generators/python/all.js +++ b/generators/python/all.js @@ -1,25 +1,25 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Complete helper functions for generating Python for - * blocks. This is the entrypoint for python_compressed.js. - * @suppress {extraRequire} - */ -'use strict'; - -goog.module('Blockly.Python.all'); - -goog.require('Blockly.Python.colour'); -goog.require('Blockly.Python.lists'); -goog.require('Blockly.Python.logic'); -goog.require('Blockly.Python.loops'); -goog.require('Blockly.Python.math'); -goog.require('Blockly.Python.procedures'); -goog.require('Blockly.Python.texts'); -goog.require('Blockly.Python.variables'); -goog.require('Blockly.Python.variablesDynamic'); - +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Complete helper functions for generating Python for + * blocks. This is the entrypoint for python_compressed.js. + * @suppress {extraRequire} + */ +'use strict'; + +goog.module('Blockly.Python.all'); + +goog.require('Blockly.Python.colour'); +goog.require('Blockly.Python.lists'); +goog.require('Blockly.Python.logic'); +goog.require('Blockly.Python.loops'); +goog.require('Blockly.Python.math'); +goog.require('Blockly.Python.procedures'); +goog.require('Blockly.Python.texts'); +goog.require('Blockly.Python.variables'); +goog.require('Blockly.Python.variablesDynamic'); + diff --git a/generators/python/colour.js b/generators/python/colour.js index 1a24c278026..32f30720c11 100644 --- a/generators/python/colour.js +++ b/generators/python/colour.js @@ -1,67 +1,67 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for colour blocks. - */ -'use strict'; - -goog.module('Blockly.Python.colour'); - -const Python = goog.require('Blockly.Python'); - - -Python['colour_picker'] = function(block) { - // Colour picker. - const code = Python.quote_(block.getFieldValue('COLOUR')); - return [code, Python.ORDER_ATOMIC]; -}; - -Python['colour_random'] = function(block) { - // Generate a random colour. - Python.definitions_['import_random'] = 'import random'; - const code = '\'#%06x\' % random.randint(0, 2**24 - 1)'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['colour_rgb'] = function(block) { - // Compose a colour from RGB components expressed as percentages. - const functionName = Python.provideFunction_('colour_rgb', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(r, g, b): - r = round(min(100, max(0, r)) * 2.55) - g = round(min(100, max(0, g)) * 2.55) - b = round(min(100, max(0, b)) * 2.55) - return \'#%02x%02x%02x\' % (r, g, b) -`); - const r = Python.valueToCode(block, 'RED', Python.ORDER_NONE) || 0; - const g = Python.valueToCode(block, 'GREEN', Python.ORDER_NONE) || 0; - const b = Python.valueToCode(block, 'BLUE', Python.ORDER_NONE) || 0; - const code = functionName + '(' + r + ', ' + g + ', ' + b + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['colour_blend'] = function(block) { - // Blend two colours together. - const functionName = Python.provideFunction_('colour_blend', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(colour1, colour2, ratio): - r1, r2 = int(colour1[1:3], 16), int(colour2[1:3], 16) - g1, g2 = int(colour1[3:5], 16), int(colour2[3:5], 16) - b1, b2 = int(colour1[5:7], 16), int(colour2[5:7], 16) - ratio = min(1, max(0, ratio)) - r = round(r1 * (1 - ratio) + r2 * ratio) - g = round(g1 * (1 - ratio) + g2 * ratio) - b = round(b1 * (1 - ratio) + b2 * ratio) - return \'#%02x%02x%02x\' % (r, g, b) -`); - const colour1 = - Python.valueToCode(block, 'COLOUR1', Python.ORDER_NONE) || '\'#000000\''; - const colour2 = - Python.valueToCode(block, 'COLOUR2', Python.ORDER_NONE) || '\'#000000\''; - const ratio = Python.valueToCode(block, 'RATIO', Python.ORDER_NONE) || 0; - const code = - functionName + '(' + colour1 + ', ' + colour2 + ', ' + ratio + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for colour blocks. + */ +'use strict'; + +goog.module('Blockly.Python.colour'); + +const Python = goog.require('Blockly.Python'); + + +Python['colour_picker'] = function(block) { + // Colour picker. + const code = Python.quote_(block.getFieldValue('COLOUR')); + return [code, Python.ORDER_ATOMIC]; +}; + +Python['colour_random'] = function(block) { + // Generate a random colour. + // Python.definitions_['import_random'] = 'import random'; + const code = '\'#%06x\' % random.randint(0, 2**24 - 1)'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['colour_rgb'] = function(block) { + // Compose a colour from RGB components expressed as percentages. + const functionName = Python.provideFunction_('colour_rgb', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(r, g, b): + r = round(min(100, max(0, r)) * 2.55) + g = round(min(100, max(0, g)) * 2.55) + b = round(min(100, max(0, b)) * 2.55) + return \'#%02x%02x%02x\' % (r, g, b) +`); + const r = Python.valueToCode(block, 'RED', Python.ORDER_NONE) || 0; + const g = Python.valueToCode(block, 'GREEN', Python.ORDER_NONE) || 0; + const b = Python.valueToCode(block, 'BLUE', Python.ORDER_NONE) || 0; + const code = functionName + '(' + r + ', ' + g + ', ' + b + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['colour_blend'] = function(block) { + // Blend two colours together. + const functionName = Python.provideFunction_('colour_blend', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(colour1, colour2, ratio): + r1, r2 = int(colour1[1:3], 16), int(colour2[1:3], 16) + g1, g2 = int(colour1[3:5], 16), int(colour2[3:5], 16) + b1, b2 = int(colour1[5:7], 16), int(colour2[5:7], 16) + ratio = min(1, max(0, ratio)) + r = round(r1 * (1 - ratio) + r2 * ratio) + g = round(g1 * (1 - ratio) + g2 * ratio) + b = round(b1 * (1 - ratio) + b2 * ratio) + return \'#%02x%02x%02x\' % (r, g, b) +`); + const colour1 = + Python.valueToCode(block, 'COLOUR1', Python.ORDER_NONE) || '\'#000000\''; + const colour2 = + Python.valueToCode(block, 'COLOUR2', Python.ORDER_NONE) || '\'#000000\''; + const ratio = Python.valueToCode(block, 'RATIO', Python.ORDER_NONE) || 0; + const code = + functionName + '(' + colour1 + ', ' + colour2 + ', ' + ratio + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; diff --git a/generators/python/lists.js b/generators/python/lists.js index 7026162ae9c..0f774e7f9d2 100644 --- a/generators/python/lists.js +++ b/generators/python/lists.js @@ -1,346 +1,346 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for list blocks. - */ -'use strict'; - -goog.module('Blockly.Python.lists'); - -const Python = goog.require('Blockly.Python'); -const stringUtils = goog.require('Blockly.utils.string'); -const {NameType} = goog.require('Blockly.Names'); - - -Python['lists_create_empty'] = function(block) { - // Create an empty list. - return ['[]', Python.ORDER_ATOMIC]; -}; - -Python['lists_create_with'] = function(block) { - // Create a list with any number of elements of any type. - const elements = new Array(block.itemCount_); - for (let i = 0; i < block.itemCount_; i++) { - elements[i] = - Python.valueToCode(block, 'ADD' + i, Python.ORDER_NONE) || 'None'; - } - const code = '[' + elements.join(', ') + ']'; - return [code, Python.ORDER_ATOMIC]; -}; - -Python['lists_repeat'] = function(block) { - // Create a list with one element repeated. - const item = Python.valueToCode(block, 'ITEM', Python.ORDER_NONE) || 'None'; - const times = - Python.valueToCode(block, 'NUM', Python.ORDER_MULTIPLICATIVE) || '0'; - const code = '[' + item + '] * ' + times; - return [code, Python.ORDER_MULTIPLICATIVE]; -}; - -Python['lists_length'] = function(block) { - // String or array length. - const list = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '[]'; - return ['len(' + list + ')', Python.ORDER_FUNCTION_CALL]; -}; - -Python['lists_isEmpty'] = function(block) { - // Is the string null or array empty? - const list = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '[]'; - const code = 'not len(' + list + ')'; - return [code, Python.ORDER_LOGICAL_NOT]; -}; - -Python['lists_indexOf'] = function(block) { - // Find an item in the list. - const item = Python.valueToCode(block, 'FIND', Python.ORDER_NONE) || '[]'; - const list = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || "''"; - let errorIndex = ' -1'; - let firstIndexAdjustment = ''; - let lastIndexAdjustment = ' - 1'; - - if (block.workspace.options.oneBasedIndex) { - errorIndex = ' 0'; - firstIndexAdjustment = ' + 1'; - lastIndexAdjustment = ''; - } - - let functionName; - if (block.getFieldValue('END') === 'FIRST') { - functionName = Python.provideFunction_('first_index', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem): - try: index = my_list.index(elem)${firstIndexAdjustment} - except: index =${errorIndex} - return index -`); - } else { - functionName = Python.provideFunction_('last_index', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem): - try: index = len(my_list) - my_list[::-1].index(elem)${lastIndexAdjustment} - except: index =${errorIndex} - return index -`); - } - const code = functionName + '(' + list + ', ' + item + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['lists_getIndex'] = function(block) { - // Get element at index. - // Note: Until January 2013 this block did not have MODE or WHERE inputs. - const mode = block.getFieldValue('MODE') || 'GET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const listOrder = - (where === 'RANDOM') ? Python.ORDER_NONE : Python.ORDER_MEMBER; - const list = Python.valueToCode(block, 'VALUE', listOrder) || '[]'; - - switch (where) { - case 'FIRST': - if (mode === 'GET') { - const code = list + '[0]'; - return [code, Python.ORDER_MEMBER]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.pop(0)'; - return [code, Python.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - return list + '.pop(0)\n'; - } - break; - case 'LAST': - if (mode === 'GET') { - const code = list + '[-1]'; - return [code, Python.ORDER_MEMBER]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.pop()'; - return [code, Python.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - return list + '.pop()\n'; - } - break; - case 'FROM_START': { - const at = Python.getAdjustedInt(block, 'AT'); - if (mode === 'GET') { - const code = list + '[' + at + ']'; - return [code, Python.ORDER_MEMBER]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.pop(' + at + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - return list + '.pop(' + at + ')\n'; - } - break; - } - case 'FROM_END': { - const at = Python.getAdjustedInt(block, 'AT', 1, true); - if (mode === 'GET') { - const code = list + '[' + at + ']'; - return [code, Python.ORDER_MEMBER]; - } else if (mode === 'GET_REMOVE') { - const code = list + '.pop(' + at + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - return list + '.pop(' + at + ')\n'; - } - break; - } - case 'RANDOM': - Python.definitions_['import_random'] = 'import random'; - if (mode === 'GET') { - const code = 'random.choice(' + list + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; - } else { - const functionName = - Python.provideFunction_('lists_remove_random_item', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(myList): - x = int(random.random() * len(myList)) - return myList.pop(x) -`); - const code = functionName + '(' + list + ')'; - if (mode === 'GET_REMOVE') { - return [code, Python.ORDER_FUNCTION_CALL]; - } else if (mode === 'REMOVE') { - return code + '\n'; - } - } - break; - } - throw Error('Unhandled combination (lists_getIndex).'); -}; - -Python['lists_setIndex'] = function(block) { - // Set element at index. - // Note: Until February 2013 this block did not have MODE or WHERE inputs. - let list = Python.valueToCode(block, 'LIST', Python.ORDER_MEMBER) || '[]'; - const mode = block.getFieldValue('MODE') || 'GET'; - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const value = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || 'None'; - // Cache non-trivial values to variables to prevent repeated look-ups. - // Closure, which accesses and modifies 'list'. - function cacheList() { - if (list.match(/^\w+$/)) { - return ''; - } - const listVar = - Python.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); - const code = listVar + ' = ' + list + '\n'; - list = listVar; - return code; - } - - switch (where) { - case 'FIRST': - if (mode === 'SET') { - return list + '[0] = ' + value + '\n'; - } else if (mode === 'INSERT') { - return list + '.insert(0, ' + value + ')\n'; - } - break; - case 'LAST': - if (mode === 'SET') { - return list + '[-1] = ' + value + '\n'; - } else if (mode === 'INSERT') { - return list + '.append(' + value + ')\n'; - } - break; - case 'FROM_START': { - const at = Python.getAdjustedInt(block, 'AT'); - if (mode === 'SET') { - return list + '[' + at + '] = ' + value + '\n'; - } else if (mode === 'INSERT') { - return list + '.insert(' + at + ', ' + value + ')\n'; - } - break; - } - case 'FROM_END': { - const at = Python.getAdjustedInt(block, 'AT', 1, true); - if (mode === 'SET') { - return list + '[' + at + '] = ' + value + '\n'; - } else if (mode === 'INSERT') { - return list + '.insert(' + at + ', ' + value + ')\n'; - } - break; - } - case 'RANDOM': { - Python.definitions_['import_random'] = 'import random'; - let code = cacheList(); - const xVar = Python.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); - code += xVar + ' = int(random.random() * len(' + list + '))\n'; - if (mode === 'SET') { - code += list + '[' + xVar + '] = ' + value + '\n'; - return code; - } else if (mode === 'INSERT') { - code += list + '.insert(' + xVar + ', ' + value + ')\n'; - return code; - } - break; - } - } - throw Error('Unhandled combination (lists_setIndex).'); -}; - -Python['lists_getSublist'] = function(block) { - // Get sublist. - const list = Python.valueToCode(block, 'LIST', Python.ORDER_MEMBER) || '[]'; - const where1 = block.getFieldValue('WHERE1'); - const where2 = block.getFieldValue('WHERE2'); - let at1; - switch (where1) { - case 'FROM_START': - at1 = Python.getAdjustedInt(block, 'AT1'); - if (at1 === 0) { - at1 = ''; - } - break; - case 'FROM_END': - at1 = Python.getAdjustedInt(block, 'AT1', 1, true); - break; - case 'FIRST': - at1 = ''; - break; - default: - throw Error('Unhandled option (lists_getSublist)'); - } - - let at2; - switch (where2) { - case 'FROM_START': - at2 = Python.getAdjustedInt(block, 'AT2', 1); - break; - case 'FROM_END': - at2 = Python.getAdjustedInt(block, 'AT2', 0, true); - // Ensure that if the result calculated is 0 that sub-sequence will - // include all elements as expected. - if (!stringUtils.isNumber(String(at2))) { - Python.definitions_['import_sys'] = 'import sys'; - at2 += ' or sys.maxsize'; - } else if (at2 === 0) { - at2 = ''; - } - break; - case 'LAST': - at2 = ''; - break; - default: - throw Error('Unhandled option (lists_getSublist)'); - } - const code = list + '[' + at1 + ' : ' + at2 + ']'; - return [code, Python.ORDER_MEMBER]; -}; - -Python['lists_sort'] = function(block) { - // Block for sorting a list. - const list = (Python.valueToCode(block, 'LIST', Python.ORDER_NONE) || '[]'); - const type = block.getFieldValue('TYPE'); - const reverse = block.getFieldValue('DIRECTION') === '1' ? 'False' : 'True'; - const sortFunctionName = Python.provideFunction_('lists_sort', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(my_list, type, reverse): - def try_float(s): - try: - return float(s) - except: - return 0 - key_funcs = { - "NUMERIC": try_float, - "TEXT": str, - "IGNORE_CASE": lambda s: str(s).lower() - } - key_func = key_funcs[type] - list_cpy = list(my_list) - return sorted(list_cpy, key=key_func, reverse=reverse) -`); - - const code = - sortFunctionName + '(' + list + ', "' + type + '", ' + reverse + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['lists_split'] = function(block) { - // Block for splitting text into a list, or joining a list into text. - const mode = block.getFieldValue('MODE'); - let code; - if (mode === 'SPLIT') { - const value_input = - Python.valueToCode(block, 'INPUT', Python.ORDER_MEMBER) || "''"; - const value_delim = Python.valueToCode(block, 'DELIM', Python.ORDER_NONE); - code = value_input + '.split(' + value_delim + ')'; - } else if (mode === 'JOIN') { - const value_input = - Python.valueToCode(block, 'INPUT', Python.ORDER_NONE) || '[]'; - const value_delim = - Python.valueToCode(block, 'DELIM', Python.ORDER_MEMBER) || "''"; - code = value_delim + '.join(' + value_input + ')'; - } else { - throw Error('Unknown mode: ' + mode); - } - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['lists_reverse'] = function(block) { - // Block for reversing a list. - const list = Python.valueToCode(block, 'LIST', Python.ORDER_NONE) || '[]'; - const code = 'list(reversed(' + list + '))'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for list blocks. + */ +'use strict'; + +goog.module('Blockly.Python.lists'); + +const Python = goog.require('Blockly.Python'); +const stringUtils = goog.require('Blockly.utils.string'); +const {NameType} = goog.require('Blockly.Names'); + + +Python['lists_create_empty'] = function(block) { + // Create an empty list. + return ['[]', Python.ORDER_ATOMIC]; +}; + +Python['lists_create_with'] = function(block) { + // Create a list with any number of elements of any type. + const elements = new Array(block.itemCount_); + for (let i = 0; i < block.itemCount_; i++) { + elements[i] = + Python.valueToCode(block, 'ADD' + i, Python.ORDER_NONE) || 'None'; + } + const code = '[' + elements.join(', ') + ']'; + return [code, Python.ORDER_ATOMIC]; +}; + +Python['lists_repeat'] = function(block) { + // Create a list with one element repeated. + const item = Python.valueToCode(block, 'ITEM', Python.ORDER_NONE) || 'None'; + const times = + Python.valueToCode(block, 'NUM', Python.ORDER_MULTIPLICATIVE) || '0'; + const code = '[' + item + '] * ' + times; + return [code, Python.ORDER_MULTIPLICATIVE]; +}; + +Python['lists_length'] = function(block) { + // String or array length. + const list = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '[]'; + return ['len(' + list + ')', Python.ORDER_FUNCTION_CALL]; +}; + +Python['lists_isEmpty'] = function(block) { + // Is the string null or array empty? + const list = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '[]'; + const code = 'not len(' + list + ')'; + return [code, Python.ORDER_LOGICAL_NOT]; +}; + +Python['lists_indexOf'] = function(block) { + // Find an item in the list. + const item = Python.valueToCode(block, 'FIND', Python.ORDER_NONE) || '[]'; + const list = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || "''"; + let errorIndex = ' -1'; + let firstIndexAdjustment = ''; + let lastIndexAdjustment = ' - 1'; + + if (block.workspace.options.oneBasedIndex) { + errorIndex = ' 0'; + firstIndexAdjustment = ' + 1'; + lastIndexAdjustment = ''; + } + + let functionName; + if (block.getFieldValue('END') === 'FIRST') { + functionName = Python.provideFunction_('first_index', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem): + try: index = my_list.index(elem)${firstIndexAdjustment} + except: index =${errorIndex} + return index +`); + } else { + functionName = Python.provideFunction_('last_index', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem): + try: index = len(my_list) - my_list[::-1].index(elem)${lastIndexAdjustment} + except: index =${errorIndex} + return index +`); + } + const code = functionName + '(' + list + ', ' + item + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['lists_getIndex'] = function(block) { + // Get element at index. + // Note: Until January 2013 this block did not have MODE or WHERE inputs. + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const listOrder = + (where === 'RANDOM') ? Python.ORDER_NONE : Python.ORDER_MEMBER; + const list = Python.valueToCode(block, 'VALUE', listOrder) || '[]'; + + switch (where) { + case 'FIRST': + if (mode === 'GET') { + const code = list + '[0]'; + return [code, Python.ORDER_MEMBER]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.pop(0)'; + return [code, Python.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + return list + '.pop(0)\n'; + } + break; + case 'LAST': + if (mode === 'GET') { + const code = list + '[-1]'; + return [code, Python.ORDER_MEMBER]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.pop()'; + return [code, Python.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + return list + '.pop()\n'; + } + break; + case 'FROM_START': { + const at = Python.getAdjustedInt(block, 'AT'); + if (mode === 'GET') { + const code = list + '[' + at + ']'; + return [code, Python.ORDER_MEMBER]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.pop(' + at + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + return list + '.pop(' + at + ')\n'; + } + break; + } + case 'FROM_END': { + const at = Python.getAdjustedInt(block, 'AT', 1, true); + if (mode === 'GET') { + const code = list + '[' + at + ']'; + return [code, Python.ORDER_MEMBER]; + } else if (mode === 'GET_REMOVE') { + const code = list + '.pop(' + at + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + return list + '.pop(' + at + ')\n'; + } + break; + } + case 'RANDOM': + // Python.definitions_['import_random'] = 'import random'; + if (mode === 'GET') { + const code = 'random.choice(' + list + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; + } else { + const functionName = + Python.provideFunction_('lists_remove_random_item', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(myList): + x = int(random.random() * len(myList)) + return myList.pop(x) +`); + const code = functionName + '(' + list + ')'; + if (mode === 'GET_REMOVE') { + return [code, Python.ORDER_FUNCTION_CALL]; + } else if (mode === 'REMOVE') { + return code + '\n'; + } + } + break; + } + throw Error('Unhandled combination (lists_getIndex).'); +}; + +Python['lists_setIndex'] = function(block) { + // Set element at index. + // Note: Until February 2013 this block did not have MODE or WHERE inputs. + let list = Python.valueToCode(block, 'LIST', Python.ORDER_MEMBER) || '[]'; + const mode = block.getFieldValue('MODE') || 'GET'; + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const value = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || 'None'; + // Cache non-trivial values to variables to prevent repeated look-ups. + // Closure, which accesses and modifies 'list'. + function cacheList() { + if (list.match(/^\w+$/)) { + return ''; + } + const listVar = + Python.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE); + const code = listVar + ' = ' + list + '\n'; + list = listVar; + return code; + } + + switch (where) { + case 'FIRST': + if (mode === 'SET') { + return list + '[0] = ' + value + '\n'; + } else if (mode === 'INSERT') { + return list + '.insert(0, ' + value + ')\n'; + } + break; + case 'LAST': + if (mode === 'SET') { + return list + '[-1] = ' + value + '\n'; + } else if (mode === 'INSERT') { + return list + '.append(' + value + ')\n'; + } + break; + case 'FROM_START': { + const at = Python.getAdjustedInt(block, 'AT'); + if (mode === 'SET') { + return list + '[' + at + '] = ' + value + '\n'; + } else if (mode === 'INSERT') { + return list + '.insert(' + at + ', ' + value + ')\n'; + } + break; + } + case 'FROM_END': { + const at = Python.getAdjustedInt(block, 'AT', 1, true); + if (mode === 'SET') { + return list + '[' + at + '] = ' + value + '\n'; + } else if (mode === 'INSERT') { + return list + '.insert(' + at + ', ' + value + ')\n'; + } + break; + } + case 'RANDOM': { + // Python.definitions_['import_random'] = 'import random'; + let code = cacheList(); + const xVar = Python.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE); + code += xVar + ' = int(random.random() * len(' + list + '))\n'; + if (mode === 'SET') { + code += list + '[' + xVar + '] = ' + value + '\n'; + return code; + } else if (mode === 'INSERT') { + code += list + '.insert(' + xVar + ', ' + value + ')\n'; + return code; + } + break; + } + } + throw Error('Unhandled combination (lists_setIndex).'); +}; + +Python['lists_getSublist'] = function(block) { + // Get sublist. + const list = Python.valueToCode(block, 'LIST', Python.ORDER_MEMBER) || '[]'; + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + let at1; + switch (where1) { + case 'FROM_START': + at1 = Python.getAdjustedInt(block, 'AT1'); + if (at1 === 0) { + at1 = ''; + } + break; + case 'FROM_END': + at1 = Python.getAdjustedInt(block, 'AT1', 1, true); + break; + case 'FIRST': + at1 = ''; + break; + default: + throw Error('Unhandled option (lists_getSublist)'); + } + + let at2; + switch (where2) { + case 'FROM_START': + at2 = Python.getAdjustedInt(block, 'AT2', 1); + break; + case 'FROM_END': + at2 = Python.getAdjustedInt(block, 'AT2', 0, true); + // Ensure that if the result calculated is 0 that sub-sequence will + // include all elements as expected. + if (!stringUtils.isNumber(String(at2))) { + // Python.definitions_['import_sys'] = 'import sys'; + at2 += ' or sys.maxsize'; + } else if (at2 === 0) { + at2 = ''; + } + break; + case 'LAST': + at2 = ''; + break; + default: + throw Error('Unhandled option (lists_getSublist)'); + } + const code = list + '[' + at1 + ' : ' + at2 + ']'; + return [code, Python.ORDER_MEMBER]; +}; + +Python['lists_sort'] = function(block) { + // Block for sorting a list. + const list = (Python.valueToCode(block, 'LIST', Python.ORDER_NONE) || '[]'); + const type = block.getFieldValue('TYPE'); + const reverse = block.getFieldValue('DIRECTION') === '1' ? 'False' : 'True'; + const sortFunctionName = Python.provideFunction_('lists_sort', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(my_list, type, reverse): + def try_float(s): + try: + return float(s) + except: + return 0 + key_funcs = { + "NUMERIC": try_float, + "TEXT": str, + "IGNORE_CASE": lambda s: str(s).lower() + } + key_func = key_funcs[type] + list_cpy = list(my_list) + return sorted(list_cpy, key=key_func, reverse=reverse) +`); + + const code = + sortFunctionName + '(' + list + ', "' + type + '", ' + reverse + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['lists_split'] = function(block) { + // Block for splitting text into a list, or joining a list into text. + const mode = block.getFieldValue('MODE'); + let code; + if (mode === 'SPLIT') { + const value_input = + Python.valueToCode(block, 'INPUT', Python.ORDER_MEMBER) || "''"; + const value_delim = Python.valueToCode(block, 'DELIM', Python.ORDER_NONE); + code = value_input + '.split(' + value_delim + ')'; + } else if (mode === 'JOIN') { + const value_input = + Python.valueToCode(block, 'INPUT', Python.ORDER_NONE) || '[]'; + const value_delim = + Python.valueToCode(block, 'DELIM', Python.ORDER_MEMBER) || "''"; + code = value_delim + '.join(' + value_input + ')'; + } else { + throw Error('Unknown mode: ' + mode); + } + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['lists_reverse'] = function(block) { + // Block for reversing a list. + const list = Python.valueToCode(block, 'LIST', Python.ORDER_NONE) || '[]'; + const code = 'list(reversed(' + list + '))'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; diff --git a/generators/python/logic.js b/generators/python/logic.js index 18dd9c53e32..6d061121c60 100644 --- a/generators/python/logic.js +++ b/generators/python/logic.js @@ -1,120 +1,149 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for logic blocks. - */ -'use strict'; - -goog.module('Blockly.Python.logic'); - -const Python = goog.require('Blockly.Python'); - - -Python['controls_if'] = function(block) { - // If/elseif/else condition. - let n = 0; - let code = '', branchCode, conditionCode; - if (Python.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - code += Python.injectId(Python.STATEMENT_PREFIX, block); - } - do { - conditionCode = - Python.valueToCode(block, 'IF' + n, Python.ORDER_NONE) || 'False'; - branchCode = Python.statementToCode(block, 'DO' + n) || Python.PASS; - if (Python.STATEMENT_SUFFIX) { - branchCode = - Python.prefixLines( - Python.injectId(Python.STATEMENT_SUFFIX, block), Python.INDENT) + - branchCode; - } - code += (n === 0 ? 'if ' : 'elif ') + conditionCode + ':\n' + branchCode; - n++; - } while (block.getInput('IF' + n)); - - if (block.getInput('ELSE') || Python.STATEMENT_SUFFIX) { - branchCode = Python.statementToCode(block, 'ELSE') || Python.PASS; - if (Python.STATEMENT_SUFFIX) { - branchCode = - Python.prefixLines( - Python.injectId(Python.STATEMENT_SUFFIX, block), Python.INDENT) + - branchCode; - } - code += 'else:\n' + branchCode; - } - return code; -}; - -Python['controls_ifelse'] = Python['controls_if']; - -Python['logic_compare'] = function(block) { - // Comparison operator. - const OPERATORS = - {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; - const operator = OPERATORS[block.getFieldValue('OP')]; - const order = Python.ORDER_RELATIONAL; - const argument0 = Python.valueToCode(block, 'A', order) || '0'; - const argument1 = Python.valueToCode(block, 'B', order) || '0'; - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -}; - -Python['logic_operation'] = function(block) { - // Operations 'and', 'or'. - const operator = (block.getFieldValue('OP') === 'AND') ? 'and' : 'or'; - const order = - (operator === 'and') ? Python.ORDER_LOGICAL_AND : Python.ORDER_LOGICAL_OR; - let argument0 = Python.valueToCode(block, 'A', order); - let argument1 = Python.valueToCode(block, 'B', order); - if (!argument0 && !argument1) { - // If there are no arguments, then the return value is false. - argument0 = 'False'; - argument1 = 'False'; - } else { - // Single missing arguments have no effect on the return value. - const defaultArgument = (operator === 'and') ? 'True' : 'False'; - if (!argument0) { - argument0 = defaultArgument; - } - if (!argument1) { - argument1 = defaultArgument; - } - } - const code = argument0 + ' ' + operator + ' ' + argument1; - return [code, order]; -}; - -Python['logic_negate'] = function(block) { - // Negation. - const argument0 = - Python.valueToCode(block, 'BOOL', Python.ORDER_LOGICAL_NOT) || 'True'; - const code = 'not ' + argument0; - return [code, Python.ORDER_LOGICAL_NOT]; -}; - -Python['logic_boolean'] = function(block) { - // Boolean values true and false. - const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'True' : 'False'; - return [code, Python.ORDER_ATOMIC]; -}; - -Python['logic_null'] = function(block) { - // Null data type. - return ['None', Python.ORDER_ATOMIC]; -}; - -Python['logic_ternary'] = function(block) { - // Ternary operator. - const value_if = - Python.valueToCode(block, 'IF', Python.ORDER_CONDITIONAL) || 'False'; - const value_then = - Python.valueToCode(block, 'THEN', Python.ORDER_CONDITIONAL) || 'None'; - const value_else = - Python.valueToCode(block, 'ELSE', Python.ORDER_CONDITIONAL) || 'None'; - const code = value_then + ' if ' + value_if + ' else ' + value_else; - return [code, Python.ORDER_CONDITIONAL]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for logic blocks. + */ +'use strict'; + +goog.module('Blockly.Python.logic'); + +const Python = goog.require('Blockly.Python'); + +Python['setup'] = function(block) { + let branch = Python.statementToCode(block, 'DO') || Python.PASS; + // branch = Python.addLoopTrap(branch, block) || Python.PASS; + let return_value = Python.valueToCode(block,'RETURN',Python.ORDER_NONE); + console.log(branch); + // const loopVar = Python.nameDB_.getDistinctName('count', NameType.VARIABLE); + // const code = 'for ' + loopVar + ' in range(' + repeats + '):\n' + branch; + const code = 'def setup(self):\n' + branch + " return " + return_value + return code; +}; + +Python['run'] = function(block) { + let branch = Python.statementToCode(block, 'DO'); + // const code = 'def run(self):\n' + ' while(rclpy.ok()):\n' + branch + const code = 'def run(self):\n' + ' while(rclpy.ok()):\n' + branch.replace(/^/gm, " ") + return code; +}; + +Python['rangesensor_getrange_block'] = function(block){ + var dropdown_unit = block.getFieldValue('unit'); + var code = `getRange('${dropdown_unit}')` + return [`{"code": "${code}","type": "Number"}`, Python.ORDER_NONE]; +} + +Python['convbelt_setstate_block'] = function(block){ + var value_state = block.getFieldValue('state') + var code = `setConveyorState('${value_state}')` + return [`{"code": "${code}","type": ""}`, Python.ORDER_NONE]; +} + +Python['controls_if'] = function(block) { + // If/elseif/else condition. + let n = 0; + let code = '', branchCode, conditionCode; + if (Python.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + code += Python.injectId(Python.STATEMENT_PREFIX, block); + } + do { + conditionCode = + Python.valueToCode(block, 'IF' + n, Python.ORDER_NONE) || 'False'; + branchCode = Python.statementToCode(block, 'DO' + n) || Python.PASS; + if (Python.STATEMENT_SUFFIX) { + branchCode = + Python.prefixLines( + Python.injectId(Python.STATEMENT_SUFFIX, block), Python.INDENT) + + branchCode; + } + code += (n === 0 ? 'if ' : 'elif ') + conditionCode + ':\n' + branchCode; + n++; + } while (block.getInput('IF' + n)); + + if (block.getInput('ELSE') || Python.STATEMENT_SUFFIX) { + branchCode = Python.statementToCode(block, 'ELSE') || Python.PASS; + if (Python.STATEMENT_SUFFIX) { + branchCode = + Python.prefixLines( + Python.injectId(Python.STATEMENT_SUFFIX, block), Python.INDENT) + + branchCode; + } + code += 'else:\n' + branchCode; + } + return code; +}; + +Python['controls_ifelse'] = Python['controls_if']; + +Python['logic_compare'] = function(block) { + // Comparison operator. + const OPERATORS = + {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='}; + const operator = OPERATORS[block.getFieldValue('OP')]; + const order = Python.ORDER_RELATIONAL; + const argument0 = Python.valueToCode(block, 'A', order) || '0'; + const argument1 = Python.valueToCode(block, 'B', order) || '0'; + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; +}; + +Python['logic_operation'] = function(block) { + // Operations 'and', 'or'. + const operator = (block.getFieldValue('OP') === 'AND') ? 'and' : 'or'; + const order = + (operator === 'and') ? Python.ORDER_LOGICAL_AND : Python.ORDER_LOGICAL_OR; + let argument0 = Python.valueToCode(block, 'A', order); + let argument1 = Python.valueToCode(block, 'B', order); + if (!argument0 && !argument1) { + // If there are no arguments, then the return value is false. + argument0 = 'False'; + argument1 = 'False'; + } else { + // Single missing arguments have no effect on the return value. + const defaultArgument = (operator === 'and') ? 'True' : 'False'; + if (!argument0) { + argument0 = defaultArgument; + } + if (!argument1) { + argument1 = defaultArgument; + } + } + const code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; +}; + +Python['logic_negate'] = function(block) { + // Negation. + const argument0 = + Python.valueToCode(block, 'BOOL', Python.ORDER_LOGICAL_NOT) || 'True'; + const code = 'not ' + argument0; + return [code, Python.ORDER_LOGICAL_NOT]; +}; + +Python['logic_boolean'] = function(block) { + // Boolean values true and false. + const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'True' : 'False'; + return [code, Python.ORDER_ATOMIC]; +}; + +Python['logic_null'] = function(block) { + // Null data type. + return ['None', Python.ORDER_ATOMIC]; +}; + +Python['logic_ternary'] = function(block) { + // Ternary operator. + const value_if = + Python.valueToCode(block, 'IF', Python.ORDER_CONDITIONAL) || 'False'; + const value_then = + Python.valueToCode(block, 'THEN', Python.ORDER_CONDITIONAL) || 'None'; + const value_else = + Python.valueToCode(block, 'ELSE', Python.ORDER_CONDITIONAL) || 'None'; + const code = value_then + ' if ' + value_if + ' else ' + value_else; + return [code, Python.ORDER_CONDITIONAL]; +}; diff --git a/generators/python/loops.js b/generators/python/loops.js index b3c267f868c..9b556952eca 100644 --- a/generators/python/loops.js +++ b/generators/python/loops.js @@ -1,209 +1,225 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for loop blocks. - */ -'use strict'; - -goog.module('Blockly.Python.loops'); - -const Python = goog.require('Blockly.Python'); -const stringUtils = goog.require('Blockly.utils.string'); -const {NameType} = goog.require('Blockly.Names'); - - -Python['controls_repeat_ext'] = function(block) { - // Repeat n times. - let repeats; - if (block.getField('TIMES')) { - // Internal number. - repeats = String(parseInt(block.getFieldValue('TIMES'), 10)); - } else { - // External number. - repeats = Python.valueToCode(block, 'TIMES', Python.ORDER_NONE) || '0'; - } - if (stringUtils.isNumber(repeats)) { - repeats = parseInt(repeats, 10); - } else { - repeats = 'int(' + repeats + ')'; - } - let branch = Python.statementToCode(block, 'DO'); - branch = Python.addLoopTrap(branch, block) || Python.PASS; - const loopVar = Python.nameDB_.getDistinctName('count', NameType.VARIABLE); - const code = 'for ' + loopVar + ' in range(' + repeats + '):\n' + branch; - return code; -}; - -Python['controls_repeat'] = Python['controls_repeat_ext']; - -Python['controls_whileUntil'] = function(block) { - // Do while/until loop. - const until = block.getFieldValue('MODE') === 'UNTIL'; - let argument0 = Python.valueToCode( - block, 'BOOL', - until ? Python.ORDER_LOGICAL_NOT : Python.ORDER_NONE) || - 'False'; - let branch = Python.statementToCode(block, 'DO'); - branch = Python.addLoopTrap(branch, block) || Python.PASS; - if (until) { - argument0 = 'not ' + argument0; - } - return 'while ' + argument0 + ':\n' + branch; -}; - -Python['controls_for'] = function(block) { - // For loop. - const variable0 = - Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - let argument0 = Python.valueToCode(block, 'FROM', Python.ORDER_NONE) || '0'; - let argument1 = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || '0'; - let increment = Python.valueToCode(block, 'BY', Python.ORDER_NONE) || '1'; - let branch = Python.statementToCode(block, 'DO'); - branch = Python.addLoopTrap(branch, block) || Python.PASS; - - let code = ''; - let range; - - // Helper functions. - const defineUpRange = function() { - return Python.provideFunction_('upRange', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(start, stop, step): - while start <= stop: - yield start - start += abs(step) -`); - }; - const defineDownRange = function() { - return Python.provideFunction_('downRange', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(start, stop, step): - while start >= stop: - yield start - start -= abs(step) -`); - }; - // Arguments are legal Python code (numbers or strings returned by scrub()). - const generateUpDownRange = function(start, end, inc) { - return '(' + start + ' <= ' + end + ') and ' + defineUpRange() + '(' + - start + ', ' + end + ', ' + inc + ') or ' + defineDownRange() + '(' + - start + ', ' + end + ', ' + inc + ')'; - }; - - if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) && - stringUtils.isNumber(increment)) { - // All parameters are simple numbers. - argument0 = Number(argument0); - argument1 = Number(argument1); - increment = Math.abs(Number(increment)); - if (argument0 % 1 === 0 && argument1 % 1 === 0 && increment % 1 === 0) { - // All parameters are integers. - if (argument0 <= argument1) { - // Count up. - argument1++; - if (argument0 === 0 && increment === 1) { - // If starting index is 0, omit it. - range = argument1; - } else { - range = argument0 + ', ' + argument1; - } - // If increment isn't 1, it must be explicit. - if (increment !== 1) { - range += ', ' + increment; - } - } else { - // Count down. - argument1--; - range = argument0 + ', ' + argument1 + ', -' + increment; - } - range = 'range(' + range + ')'; - } else { - // At least one of the parameters is not an integer. - if (argument0 < argument1) { - range = defineUpRange(); - } else { - range = defineDownRange(); - } - range += '(' + argument0 + ', ' + argument1 + ', ' + increment + ')'; - } - } else { - // Cache non-trivial values to variables to prevent repeated look-ups. - const scrub = function(arg, suffix) { - if (stringUtils.isNumber(arg)) { - // Simple number. - arg = Number(arg); - } else if (arg.match(/^\w+$/)) { - // Variable. - arg = 'float(' + arg + ')'; - } else { - // It's complicated. - const varName = Python.nameDB_.getDistinctName( - variable0 + suffix, NameType.VARIABLE); - code += varName + ' = float(' + arg + ')\n'; - arg = varName; - } - return arg; - }; - const startVar = scrub(argument0, '_start'); - const endVar = scrub(argument1, '_end'); - const incVar = scrub(increment, '_inc'); - - if (typeof startVar === 'number' && typeof endVar === 'number') { - if (startVar < endVar) { - range = defineUpRange(); - } else { - range = defineDownRange(); - } - range += '(' + startVar + ', ' + endVar + ', ' + incVar + ')'; - } else { - // We cannot determine direction statically. - range = generateUpDownRange(startVar, endVar, incVar); - } - } - code += 'for ' + variable0 + ' in ' + range + ':\n' + branch; - return code; -}; - -Python['controls_forEach'] = function(block) { - // For each loop. - const variable0 = - Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const argument0 = - Python.valueToCode(block, 'LIST', Python.ORDER_RELATIONAL) || '[]'; - let branch = Python.statementToCode(block, 'DO'); - branch = Python.addLoopTrap(branch, block) || Python.PASS; - const code = 'for ' + variable0 + ' in ' + argument0 + ':\n' + branch; - return code; -}; - -Python['controls_flow_statements'] = function(block) { - // Flow statements: continue, break. - let xfix = ''; - if (Python.STATEMENT_PREFIX) { - // Automatic prefix insertion is switched off for this block. Add manually. - xfix += Python.injectId(Python.STATEMENT_PREFIX, block); - } - if (Python.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the break/continue is triggered. - xfix += Python.injectId(Python.STATEMENT_SUFFIX, block); - } - if (Python.STATEMENT_PREFIX) { - const loop = block.getSurroundLoop(); - if (loop && !loop.suppressPrefixSuffix) { - // Inject loop's statement prefix here since the regular one at the end - // of the loop will not get executed if 'continue' is triggered. - // In the case of 'break', a prefix is needed due to the loop's suffix. - xfix += Python.injectId(Python.STATEMENT_PREFIX, loop); - } - } - switch (block.getFieldValue('FLOW')) { - case 'BREAK': - return xfix + 'break\n'; - case 'CONTINUE': - return xfix + 'continue\n'; - } - throw Error('Unknown flow statement.'); -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for loop blocks. + */ +'use strict'; + +goog.module('Blockly.Python.loops'); + +const Python = goog.require('Blockly.Python'); +const stringUtils = goog.require('Blockly.utils.string'); +const {NameType} = goog.require('Blockly.Names'); + +const initialArg = "(rclpy.ok() and self.getCancelFlag())"; + +Python['controls_repeat_ext'] = function(block) { + // Repeat n times. + let repeats; + if (block.getField('TIMES')) { + // Internal number. + repeats = String(parseInt(block.getFieldValue('TIMES'), 10)); + } else { + // External number. + repeats = Python.valueToCode(block, 'TIMES', Python.ORDER_NONE) || '0'; + } + if (stringUtils.isNumber(repeats)) { + repeats = parseInt(repeats, 10); + } else { + repeats = 'int(' + repeats + ')'; + } + let branch = Python.statementToCode(block, 'DO'); + branch = Python.addLoopTrap(branch, block) || Python.PASS; + const loopVar = Python.nameDB_.getDistinctName('count', NameType.VARIABLE); + + let code = ""; + + // if(initialArg !== ""){ + // code = 'for ' + loopVar + ' in range(' + repeats + ')):\n if('+initialArg+'):' + branch; + // } + // else{ + code = 'for self.' + loopVar + ' in range(' + repeats + '):\n' + branch; + //} + + return code; +}; + +Python['controls_repeat'] = Python['controls_repeat_ext']; + +Python['controls_whileUntil'] = function(block) { + // Do while/until loop. + const until = block.getFieldValue('MODE') === 'UNTIL'; + let argument0 = Python.valueToCode( + block, 'BOOL', + until ? Python.ORDER_LOGICAL_NOT : Python.ORDER_NONE) || + 'False'; + let branch = Python.statementToCode(block, 'DO'); + branch = Python.addLoopTrap(branch, block) || Python.PASS; + if (until) { + argument0 = 'not ' + argument0; + } + + if(initialArg !== ""){ + return 'while ' + initialArg + ' and (' + argument0 + '):\n' + branch; + } + else{ + return 'while ' + argument0 + ':\n' + branch; + } +}; + +Python['controls_for'] = function(block) { + // For loop. + const variable0 = + Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + let argument0 = Python.valueToCode(block, 'FROM', Python.ORDER_NONE) || '0'; + let argument1 = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || '0'; + let increment = Python.valueToCode(block, 'BY', Python.ORDER_NONE) || '1'; + let branch = Python.statementToCode(block, 'DO'); + branch = Python.addLoopTrap(branch, block) || Python.PASS; + + let code = ''; + let range; + + // Helper functions. + const defineUpRange = function() { + return Python.provideFunction_('upRange', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(self, start, stop, step): + while ` + initialArg + ` and start <= stop: + yield start + start += abs(step) +`); + }; + const defineDownRange = function() { + return Python.provideFunction_('downRange', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(self, start, stop, step): + while ` + initialArg + ` and start >= stop: + yield start + start -= abs(step) +`); + }; + // Arguments are legal Python code (numbers or strings returned by scrub()). + const generateUpDownRange = function(start, end, inc) { + return '(' + start + ' <= ' + end + ') and self.' + defineUpRange() + '(' + + start + ', ' + end + ', ' + inc + ') or self.' + defineDownRange() + '(' + + start + ', ' + end + ', ' + inc + ')'; + }; + + if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) && + stringUtils.isNumber(increment)) { + // All parameters are simple numbers. + argument0 = Number(argument0); + argument1 = Number(argument1); + increment = Math.abs(Number(increment)); + if (argument0 % 1 === 0 && argument1 % 1 === 0 && increment % 1 === 0) { + // All parameters are integers. + if (argument0 <= argument1) { + // Count up. + argument1++; + if (argument0 === 0 && increment === 1) { + // If starting index is 0, omit it. + range = argument1; + } else { + range = argument0 + ', ' + argument1; + } + // If increment isn't 1, it must be explicit. + if (increment !== 1) { + range += ', ' + increment; + } + } else { + // Count down. + argument1--; + range = argument0 + ', ' + argument1 + ', -' + increment; + } + range = 'range(' + range + ')'; + } else { + // At least one of the parameters is not an integer. + if (argument0 < argument1) { + range = defineUpRange(); + } else { + range = defineDownRange(); + } + range += '(' + argument0 + ', ' + argument1 + ', ' + increment + ')'; + } + } else { + // Cache non-trivial values to variables to prevent repeated look-ups. + const scrub = function(arg, suffix) { + if (stringUtils.isNumber(arg)) { + // Simple number. + arg = Number(arg); + } else if (arg.match(/^\w+$/)) { + // Variable. + arg = 'float(' + arg + ')'; + } else { + // It's complicated. + const varName = Python.nameDB_.getDistinctName( + variable0 + suffix, NameType.VARIABLE); + code += varName + ' = float(' + arg + ')\n'; + arg = varName; + } + return arg; + }; + const startVar = scrub(argument0, '_start'); + const endVar = scrub(argument1, '_end'); + const incVar = scrub(increment, '_inc'); + + if (typeof startVar === 'number' && typeof endVar === 'number') { + if (startVar < endVar) { + range = defineUpRange(); + } else { + range = defineDownRange(); + } + range += '(' + startVar + ', ' + endVar + ', ' + incVar + ')'; + } else { + // We cannot determine direction statically. + range = generateUpDownRange(startVar, endVar, incVar); + } + } + code += 'for self.' + variable0 + ' in ' + range + ':\n' + branch; + return code; +}; + +Python['controls_forEach'] = function(block) { + // For each loop. + const variable0 = + Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const argument0 = + Python.valueToCode(block, 'LIST', Python.ORDER_RELATIONAL) || '[]'; + let branch = Python.statementToCode(block, 'DO'); + branch = Python.addLoopTrap(branch, block) || Python.PASS; + const code = 'for self.' + variable0 + ' in ' + argument0 + ':\n' + branch; + return code; +}; + +Python['controls_flow_statements'] = function(block) { + // Flow statements: continue, break. + let xfix = ''; + if (Python.STATEMENT_PREFIX) { + // Automatic prefix insertion is switched off for this block. Add manually. + xfix += Python.injectId(Python.STATEMENT_PREFIX, block); + } + if (Python.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the break/continue is triggered. + xfix += Python.injectId(Python.STATEMENT_SUFFIX, block); + } + if (Python.STATEMENT_PREFIX) { + const loop = block.getSurroundLoop(); + if (loop && !loop.suppressPrefixSuffix) { + // Inject loop's statement prefix here since the regular one at the end + // of the loop will not get executed if 'continue' is triggered. + // In the case of 'break', a prefix is needed due to the loop's suffix. + xfix += Python.injectId(Python.STATEMENT_PREFIX, loop); + } + } + switch (block.getFieldValue('FLOW')) { + case 'BREAK': + return xfix + 'break\n'; + case 'CONTINUE': + return xfix + 'continue\n'; + } + throw Error('Unknown flow statement.'); +}; diff --git a/generators/python/math.js b/generators/python/math.js index ca23c17701e..d26fd98c86b 100644 --- a/generators/python/math.js +++ b/generators/python/math.js @@ -1,373 +1,373 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for math blocks. - */ -'use strict'; - -goog.module('Blockly.Python.math'); - -const Python = goog.require('Blockly.Python'); -const {NameType} = goog.require('Blockly.Names'); - - -// If any new block imports any library, add that library name here. -Python.addReservedWords('math,random,Number'); - -Python['math_number'] = function(block) { - // Numeric value. - let code = Number(block.getFieldValue('NUM')); - let order; - if (code === Infinity) { - code = 'float("inf")'; - order = Python.ORDER_FUNCTION_CALL; - } else if (code === -Infinity) { - code = '-float("inf")'; - order = Python.ORDER_UNARY_SIGN; - } else { - order = code < 0 ? Python.ORDER_UNARY_SIGN : Python.ORDER_ATOMIC; - } - return [code, order]; -}; - -Python['math_arithmetic'] = function(block) { - // Basic arithmetic operators, and power. - const OPERATORS = { - 'ADD': [' + ', Python.ORDER_ADDITIVE], - 'MINUS': [' - ', Python.ORDER_ADDITIVE], - 'MULTIPLY': [' * ', Python.ORDER_MULTIPLICATIVE], - 'DIVIDE': [' / ', Python.ORDER_MULTIPLICATIVE], - 'POWER': [' ** ', Python.ORDER_EXPONENTIATION], - }; - const tuple = OPERATORS[block.getFieldValue('OP')]; - const operator = tuple[0]; - const order = tuple[1]; - const argument0 = Python.valueToCode(block, 'A', order) || '0'; - const argument1 = Python.valueToCode(block, 'B', order) || '0'; - const code = argument0 + operator + argument1; - return [code, order]; - // In case of 'DIVIDE', division between integers returns different results - // in Python 2 and 3. However, is not an issue since Blockly does not - // guarantee identical results in all languages. To do otherwise would - // require every operator to be wrapped in a function call. This would kill - // legibility of the generated code. -}; - -Python['math_single'] = function(block) { - // Math operators with single operand. - const operator = block.getFieldValue('OP'); - let code; - let arg; - if (operator === 'NEG') { - // Negation is a special case given its different operator precedence. - code = Python.valueToCode(block, 'NUM', Python.ORDER_UNARY_SIGN) || '0'; - return ['-' + code, Python.ORDER_UNARY_SIGN]; - } - Python.definitions_['import_math'] = 'import math'; - if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { - arg = Python.valueToCode(block, 'NUM', Python.ORDER_MULTIPLICATIVE) || '0'; - } else { - arg = Python.valueToCode(block, 'NUM', Python.ORDER_NONE) || '0'; - } - // First, handle cases which generate values that don't need parentheses - // wrapping the code. - switch (operator) { - case 'ABS': - code = 'math.fabs(' + arg + ')'; - break; - case 'ROOT': - code = 'math.sqrt(' + arg + ')'; - break; - case 'LN': - code = 'math.log(' + arg + ')'; - break; - case 'LOG10': - code = 'math.log10(' + arg + ')'; - break; - case 'EXP': - code = 'math.exp(' + arg + ')'; - break; - case 'POW10': - code = 'math.pow(10,' + arg + ')'; - break; - case 'ROUND': - code = 'round(' + arg + ')'; - break; - case 'ROUNDUP': - code = 'math.ceil(' + arg + ')'; - break; - case 'ROUNDDOWN': - code = 'math.floor(' + arg + ')'; - break; - case 'SIN': - code = 'math.sin(' + arg + ' / 180.0 * math.pi)'; - break; - case 'COS': - code = 'math.cos(' + arg + ' / 180.0 * math.pi)'; - break; - case 'TAN': - code = 'math.tan(' + arg + ' / 180.0 * math.pi)'; - break; - } - if (code) { - return [code, Python.ORDER_FUNCTION_CALL]; - } - // Second, handle cases which generate values that may need parentheses - // wrapping the code. - switch (operator) { - case 'ASIN': - code = 'math.asin(' + arg + ') / math.pi * 180'; - break; - case 'ACOS': - code = 'math.acos(' + arg + ') / math.pi * 180'; - break; - case 'ATAN': - code = 'math.atan(' + arg + ') / math.pi * 180'; - break; - default: - throw Error('Unknown math operator: ' + operator); - } - return [code, Python.ORDER_MULTIPLICATIVE]; -}; - -Python['math_constant'] = function(block) { - // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. - const CONSTANTS = { - 'PI': ['math.pi', Python.ORDER_MEMBER], - 'E': ['math.e', Python.ORDER_MEMBER], - 'GOLDEN_RATIO': ['(1 + math.sqrt(5)) / 2', Python.ORDER_MULTIPLICATIVE], - 'SQRT2': ['math.sqrt(2)', Python.ORDER_MEMBER], - 'SQRT1_2': ['math.sqrt(1.0 / 2)', Python.ORDER_MEMBER], - 'INFINITY': ['float(\'inf\')', Python.ORDER_ATOMIC], - }; - const constant = block.getFieldValue('CONSTANT'); - if (constant !== 'INFINITY') { - Python.definitions_['import_math'] = 'import math'; - } - return CONSTANTS[constant]; -}; - -Python['math_number_property'] = function(block) { - // Check if a number is even, odd, prime, whole, positive, or negative - // or if it is divisible by certain number. Returns true or false. - const PROPERTIES = { - 'EVEN': [' % 2 == 0', Python.ORDER_MULTIPLICATIVE, Python.ORDER_RELATIONAL], - 'ODD': [' % 2 == 1', Python.ORDER_MULTIPLICATIVE, Python.ORDER_RELATIONAL], - 'WHOLE': [' % 1 == 0', Python.ORDER_MULTIPLICATIVE, - Python.ORDER_RELATIONAL], - 'POSITIVE': [' > 0', Python.ORDER_RELATIONAL, Python.ORDER_RELATIONAL], - 'NEGATIVE': [' < 0', Python.ORDER_RELATIONAL, Python.ORDER_RELATIONAL], - 'DIVISIBLE_BY': [null, Python.ORDER_MULTIPLICATIVE, - Python.ORDER_RELATIONAL], - 'PRIME': [null, Python.ORDER_NONE, Python.ORDER_FUNCTION_CALL], - } - const dropdownProperty = block.getFieldValue('PROPERTY'); - const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; - const numberToCheck = Python.valueToCode(block, 'NUMBER_TO_CHECK', - inputOrder) || '0'; - let code; - if (dropdownProperty === 'PRIME') { - // Prime is a special case as it is not a one-liner test. - Python.definitions_['import_math'] = 'import math'; - Python.definitions_['from_numbers_import_Number'] = - 'from numbers import Number'; - const functionName = Python.provideFunction_('math_isPrime', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(n): - # https://en.wikipedia.org/wiki/Primality_test#Naive_methods - # If n is not a number but a string, try parsing it. - if not isinstance(n, Number): - try: - n = float(n) - except: - return False - if n == 2 or n == 3: - return True - # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3. - if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0: - return False - # Check all the numbers of form 6k +/- 1, up to sqrt(n). - for x in range(6, int(math.sqrt(n)) + 2, 6): - if n % (x - 1) == 0 or n % (x + 1) == 0: - return False - return True -`); - code = functionName + '(' + numberToCheck + ')'; - } else if (dropdownProperty === 'DIVISIBLE_BY') { - const divisor = Python.valueToCode(block, 'DIVISOR', - Python.ORDER_MULTIPLICATIVE) || '0'; - // If 'divisor' is some code that evals to 0, Python will raise an error. - if (divisor === '0') { - return ['False', Python.ORDER_ATOMIC]; - } - code = numberToCheck + ' % ' + divisor + ' == 0'; - } else { - code = numberToCheck + suffix; - }; - return [code, outputOrder]; -}; - -Python['math_change'] = function(block) { - // Add to a variable in place. - Python.definitions_['from_numbers_import_Number'] = - 'from numbers import Number'; - const argument0 = - Python.valueToCode(block, 'DELTA', Python.ORDER_ADDITIVE) || '0'; - const varName = - Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return varName + ' = (' + varName + ' if isinstance(' + varName + - ', Number) else 0) + ' + argument0 + '\n'; -}; - -// Rounding functions have a single operand. -Python['math_round'] = Python['math_single']; -// Trigonometry functions have a single operand. -Python['math_trig'] = Python['math_single']; - -Python['math_on_list'] = function(block) { - // Math functions for lists. - const func = block.getFieldValue('OP'); - const list = Python.valueToCode(block, 'LIST', Python.ORDER_NONE) || '[]'; - let code; - switch (func) { - case 'SUM': - code = 'sum(' + list + ')'; - break; - case 'MIN': - code = 'min(' + list + ')'; - break; - case 'MAX': - code = 'max(' + list + ')'; - break; - case 'AVERAGE': { - Python.definitions_['from_numbers_import_Number'] = - 'from numbers import Number'; - // This operation excludes null and values that aren't int or float: - // math_mean([null, null, "aString", 1, 9]) -> 5.0 - const functionName = Python.provideFunction_('math_mean', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(myList): - localList = [e for e in myList if isinstance(e, Number)] - if not localList: return - return float(sum(localList)) / len(localList) -`); - code = functionName + '(' + list + ')'; - break; - } - case 'MEDIAN': { - Python.definitions_['from_numbers_import_Number'] = - 'from numbers import Number'; - // This operation excludes null values: - // math_median([null, null, 1, 3]) -> 2.0 - const functionName = Python.provideFunction_( 'math_median', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(myList): - localList = sorted([e for e in myList if isinstance(e, Number)]) - if not localList: return - if len(localList) % 2 == 0: - return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0 - else: - return localList[(len(localList) - 1) // 2] -`); - code = functionName + '(' + list + ')'; - break; - } - case 'MODE': { - // As a list of numbers can contain more than one mode, - // the returned result is provided as an array. - // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1] - const functionName = Python.provideFunction_('math_modes', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(some_list): - modes = [] - # Using a lists of [item, count] to keep count rather than dict - # to avoid "unhashable" errors when the counted item is itself a list or dict. - counts = [] - maxCount = 1 - for item in some_list: - found = False - for count in counts: - if count[0] == item: - count[1] += 1 - maxCount = max(maxCount, count[1]) - found = True - if not found: - counts.append([item, 1]) - for counted_item, item_count in counts: - if item_count == maxCount: - modes.append(counted_item) - return modes -`); - code = functionName + '(' + list + ')'; - break; - } - case 'STD_DEV': { - Python.definitions_['import_math'] = 'import math'; - const functionName = Python.provideFunction_('math_standard_deviation', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(numbers): - n = len(numbers) - if n == 0: return - mean = float(sum(numbers)) / n - variance = sum((x - mean) ** 2 for x in numbers) / n - return math.sqrt(variance) -`); - code = functionName + '(' + list + ')'; - break; - } - case 'RANDOM': - Python.definitions_['import_random'] = 'import random'; - code = 'random.choice(' + list + ')'; - break; - default: - throw Error('Unknown operator: ' + func); - } - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['math_modulo'] = function(block) { - // Remainder computation. - const argument0 = - Python.valueToCode(block, 'DIVIDEND', Python.ORDER_MULTIPLICATIVE) || '0'; - const argument1 = - Python.valueToCode(block, 'DIVISOR', Python.ORDER_MULTIPLICATIVE) || '0'; - const code = argument0 + ' % ' + argument1; - return [code, Python.ORDER_MULTIPLICATIVE]; -}; - -Python['math_constrain'] = function(block) { - // Constrain a number between two limits. - const argument0 = - Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '0'; - const argument1 = Python.valueToCode(block, 'LOW', Python.ORDER_NONE) || '0'; - const argument2 = - Python.valueToCode(block, 'HIGH', Python.ORDER_NONE) || 'float(\'inf\')'; - const code = - 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['math_random_int'] = function(block) { - // Random integer between [X] and [Y]. - Python.definitions_['import_random'] = 'import random'; - const argument0 = Python.valueToCode(block, 'FROM', Python.ORDER_NONE) || '0'; - const argument1 = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || '0'; - const code = 'random.randint(' + argument0 + ', ' + argument1 + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['math_random_float'] = function(block) { - // Random fraction between 0 and 1. - Python.definitions_['import_random'] = 'import random'; - return ['random.random()', Python.ORDER_FUNCTION_CALL]; -}; - -Python['math_atan2'] = function(block) { - // Arctangent of point (X, Y) in degrees from -180 to 180. - Python.definitions_['import_math'] = 'import math'; - const argument0 = Python.valueToCode(block, 'X', Python.ORDER_NONE) || '0'; - const argument1 = Python.valueToCode(block, 'Y', Python.ORDER_NONE) || '0'; - return [ - 'math.atan2(' + argument1 + ', ' + argument0 + ') / math.pi * 180', - Python.ORDER_MULTIPLICATIVE - ]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for math blocks. + */ +'use strict'; + +goog.module('Blockly.Python.math'); + +const Python = goog.require('Blockly.Python'); +const {NameType} = goog.require('Blockly.Names'); + + +// If any new block imports any library, add that library name here. +Python.addReservedWords('math,random,Number'); + +Python['math_number'] = function(block) { + // Numeric value. + let code = Number(block.getFieldValue('NUM')); + let order; + if (code === Infinity) { + code = 'float("inf")'; + order = Python.ORDER_FUNCTION_CALL; + } else if (code === -Infinity) { + code = '-float("inf")'; + order = Python.ORDER_UNARY_SIGN; + } else { + order = code < 0 ? Python.ORDER_UNARY_SIGN : Python.ORDER_ATOMIC; + } + return [code, order]; +}; + +Python['math_arithmetic'] = function(block) { + // Basic arithmetic operators, and power. + const OPERATORS = { + 'ADD': [' + ', Python.ORDER_ADDITIVE], + 'MINUS': [' - ', Python.ORDER_ADDITIVE], + 'MULTIPLY': [' * ', Python.ORDER_MULTIPLICATIVE], + 'DIVIDE': [' / ', Python.ORDER_MULTIPLICATIVE], + 'POWER': [' ** ', Python.ORDER_EXPONENTIATION], + }; + const tuple = OPERATORS[block.getFieldValue('OP')]; + const operator = tuple[0]; + const order = tuple[1]; + const argument0 = Python.valueToCode(block, 'A', order) || '0'; + const argument1 = Python.valueToCode(block, 'B', order) || '0'; + const code = argument0 + operator + argument1; + return [code, order]; + // In case of 'DIVIDE', division between integers returns different results + // in Python 2 and 3. However, is not an issue since Blockly does not + // guarantee identical results in all languages. To do otherwise would + // require every operator to be wrapped in a function call. This would kill + // legibility of the generated code. +}; + +Python['math_single'] = function(block) { + // Math operators with single operand. + const operator = block.getFieldValue('OP'); + let code; + let arg; + if (operator === 'NEG') { + // Negation is a special case given its different operator precedence. + code = Python.valueToCode(block, 'NUM', Python.ORDER_UNARY_SIGN) || '0'; + return ['-' + code, Python.ORDER_UNARY_SIGN]; + } + // Python.definitions_['import_math'] = 'import math'; + if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') { + arg = Python.valueToCode(block, 'NUM', Python.ORDER_MULTIPLICATIVE) || '0'; + } else { + arg = Python.valueToCode(block, 'NUM', Python.ORDER_NONE) || '0'; + } + // First, handle cases which generate values that don't need parentheses + // wrapping the code. + switch (operator) { + case 'ABS': + code = 'math.fabs(' + arg + ')'; + break; + case 'ROOT': + code = 'math.sqrt(' + arg + ')'; + break; + case 'LN': + code = 'math.log(' + arg + ')'; + break; + case 'LOG10': + code = 'math.log10(' + arg + ')'; + break; + case 'EXP': + code = 'math.exp(' + arg + ')'; + break; + case 'POW10': + code = 'math.pow(10,' + arg + ')'; + break; + case 'ROUND': + code = 'round(' + arg + ')'; + break; + case 'ROUNDUP': + code = 'math.ceil(' + arg + ')'; + break; + case 'ROUNDDOWN': + code = 'math.floor(' + arg + ')'; + break; + case 'SIN': + code = 'math.sin(' + arg + ' / 180.0 * math.pi)'; + break; + case 'COS': + code = 'math.cos(' + arg + ' / 180.0 * math.pi)'; + break; + case 'TAN': + code = 'math.tan(' + arg + ' / 180.0 * math.pi)'; + break; + } + if (code) { + return [code, Python.ORDER_FUNCTION_CALL]; + } + // Second, handle cases which generate values that may need parentheses + // wrapping the code. + switch (operator) { + case 'ASIN': + code = 'math.asin(' + arg + ') / math.pi * 180'; + break; + case 'ACOS': + code = 'math.acos(' + arg + ') / math.pi * 180'; + break; + case 'ATAN': + code = 'math.atan(' + arg + ') / math.pi * 180'; + break; + default: + throw Error('Unknown math operator: ' + operator); + } + return [code, Python.ORDER_MULTIPLICATIVE]; +}; + +Python['math_constant'] = function(block) { + // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. + const CONSTANTS = { + 'PI': ['math.pi', Python.ORDER_MEMBER], + 'E': ['math.e', Python.ORDER_MEMBER], + 'GOLDEN_RATIO': ['(1 + math.sqrt(5)) / 2', Python.ORDER_MULTIPLICATIVE], + 'SQRT2': ['math.sqrt(2)', Python.ORDER_MEMBER], + 'SQRT1_2': ['math.sqrt(1.0 / 2)', Python.ORDER_MEMBER], + 'INFINITY': ['float(\'inf\')', Python.ORDER_ATOMIC], + }; + const constant = block.getFieldValue('CONSTANT'); + if (constant !== 'INFINITY') { + // Python.definitions_['import_math'] = 'import math'; + } + return CONSTANTS[constant]; +}; + +Python['math_number_property'] = function(block) { + // Check if a number is even, odd, prime, whole, positive, or negative + // or if it is divisible by certain number. Returns true or false. + const PROPERTIES = { + 'EVEN': [' % 2 == 0', Python.ORDER_MULTIPLICATIVE, Python.ORDER_RELATIONAL], + 'ODD': [' % 2 == 1', Python.ORDER_MULTIPLICATIVE, Python.ORDER_RELATIONAL], + 'WHOLE': [' % 1 == 0', Python.ORDER_MULTIPLICATIVE, + Python.ORDER_RELATIONAL], + 'POSITIVE': [' > 0', Python.ORDER_RELATIONAL, Python.ORDER_RELATIONAL], + 'NEGATIVE': [' < 0', Python.ORDER_RELATIONAL, Python.ORDER_RELATIONAL], + 'DIVISIBLE_BY': [null, Python.ORDER_MULTIPLICATIVE, + Python.ORDER_RELATIONAL], + 'PRIME': [null, Python.ORDER_NONE, Python.ORDER_FUNCTION_CALL], + } + const dropdownProperty = block.getFieldValue('PROPERTY'); + const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty]; + const numberToCheck = Python.valueToCode(block, 'NUMBER_TO_CHECK', + inputOrder) || '0'; + let code; + if (dropdownProperty === 'PRIME') { + // Prime is a special case as it is not a one-liner test. + // Python.definitions_['import_math'] = 'import math'; + // Python.definitions_['from_numbers_import_Number'] = + // 'from numbers import Number'; + const functionName = Python.provideFunction_('math_isPrime', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(n): + # https://en.wikipedia.org/wiki/Primality_test#Naive_methods + # If n is not a number but a string, try parsing it. + if not isinstance(n, Number): + try: + n = float(n) + except: + return False + if n == 2 or n == 3: + return True + # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3. + if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0: + return False + # Check all the numbers of form 6k +/- 1, up to sqrt(n). + for x in range(6, int(math.sqrt(n)) + 2, 6): + if n % (x - 1) == 0 or n % (x + 1) == 0: + return False + return True +`); + code = functionName + '(' + numberToCheck + ')'; + } else if (dropdownProperty === 'DIVISIBLE_BY') { + const divisor = Python.valueToCode(block, 'DIVISOR', + Python.ORDER_MULTIPLICATIVE) || '0'; + // If 'divisor' is some code that evals to 0, Python will raise an error. + if (divisor === '0') { + return ['False', Python.ORDER_ATOMIC]; + } + code = numberToCheck + ' % ' + divisor + ' == 0'; + } else { + code = numberToCheck + suffix; + }; + return [code, outputOrder]; +}; + +Python['math_change'] = function(block) { + // Add to a variable in place. + // Python.definitions_['from_numbers_import_Number'] = + // 'from numbers import Number'; + const argument0 = + Python.valueToCode(block, 'DELTA', Python.ORDER_ADDITIVE) || '0'; + const varName = + Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return varName + ' = (' + varName + ' if isinstance(' + varName + + ', Number) else 0) + ' + argument0 + '\n'; +}; + +// Rounding functions have a single operand. +Python['math_round'] = Python['math_single']; +// Trigonometry functions have a single operand. +Python['math_trig'] = Python['math_single']; + +Python['math_on_list'] = function(block) { + // Math functions for lists. + const func = block.getFieldValue('OP'); + const list = Python.valueToCode(block, 'LIST', Python.ORDER_NONE) || '[]'; + let code; + switch (func) { + case 'SUM': + code = 'sum(' + list + ')'; + break; + case 'MIN': + code = 'min(' + list + ')'; + break; + case 'MAX': + code = 'max(' + list + ')'; + break; + case 'AVERAGE': { + // Python.definitions_['from_numbers_import_Number'] = + // 'from numbers import Number'; + // This operation excludes null and values that aren't int or float: + // math_mean([null, null, "aString", 1, 9]) -> 5.0 + const functionName = Python.provideFunction_('math_mean', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(myList): + localList = [e for e in myList if isinstance(e, Number)] + if not localList: return + return float(sum(localList)) / len(localList) +`); + code = functionName + '(' + list + ')'; + break; + } + case 'MEDIAN': { + // Python.definitions_['from_numbers_import_Number'] = + // 'from numbers import Number'; + // This operation excludes null values: + // math_median([null, null, 1, 3]) -> 2.0 + const functionName = Python.provideFunction_( 'math_median', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(myList): + localList = sorted([e for e in myList if isinstance(e, Number)]) + if not localList: return + if len(localList) % 2 == 0: + return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0 + else: + return localList[(len(localList) - 1) // 2] +`); + code = functionName + '(' + list + ')'; + break; + } + case 'MODE': { + // As a list of numbers can contain more than one mode, + // the returned result is provided as an array. + // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1] + const functionName = Python.provideFunction_('math_modes', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(some_list): + modes = [] + # Using a lists of [item, count] to keep count rather than dict + # to avoid "unhashable" errors when the counted item is itself a list or dict. + counts = [] + maxCount = 1 + for item in some_list: + found = False + for count in counts: + if count[0] == item: + count[1] += 1 + maxCount = max(maxCount, count[1]) + found = True + if not found: + counts.append([item, 1]) + for counted_item, item_count in counts: + if item_count == maxCount: + modes.append(counted_item) + return modes +`); + code = functionName + '(' + list + ')'; + break; + } + case 'STD_DEV': { + // Python.definitions_['import_math'] = 'import math'; + const functionName = Python.provideFunction_('math_standard_deviation', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(numbers): + n = len(numbers) + if n == 0: return + mean = float(sum(numbers)) / n + variance = sum((x - mean) ** 2 for x in numbers) / n + return math.sqrt(variance) +`); + code = functionName + '(' + list + ')'; + break; + } + case 'RANDOM': + // Python.definitions_['import_random'] = 'import random'; + code = 'random.choice(' + list + ')'; + break; + default: + throw Error('Unknown operator: ' + func); + } + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['math_modulo'] = function(block) { + // Remainder computation. + const argument0 = + Python.valueToCode(block, 'DIVIDEND', Python.ORDER_MULTIPLICATIVE) || '0'; + const argument1 = + Python.valueToCode(block, 'DIVISOR', Python.ORDER_MULTIPLICATIVE) || '0'; + const code = argument0 + ' % ' + argument1; + return [code, Python.ORDER_MULTIPLICATIVE]; +}; + +Python['math_constrain'] = function(block) { + // Constrain a number between two limits. + const argument0 = + Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '0'; + const argument1 = Python.valueToCode(block, 'LOW', Python.ORDER_NONE) || '0'; + const argument2 = + Python.valueToCode(block, 'HIGH', Python.ORDER_NONE) || 'float(\'inf\')'; + const code = + 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['math_random_int'] = function(block) { + // Random integer between [X] and [Y]. + // Python.definitions_['import_random'] = 'import random'; + const argument0 = Python.valueToCode(block, 'FROM', Python.ORDER_NONE) || '0'; + const argument1 = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || '0'; + const code = 'random.randint(' + argument0 + ', ' + argument1 + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['math_random_float'] = function(block) { + // Random fraction between 0 and 1. + // Python.definitions_['import_random'] = 'import random'; + return ['random.random()', Python.ORDER_FUNCTION_CALL]; +}; + +Python['math_atan2'] = function(block) { + // Arctangent of point (X, Y) in degrees from -180 to 180. + // Python.definitions_['import_math'] = 'import math'; + const argument0 = Python.valueToCode(block, 'X', Python.ORDER_NONE) || '0'; + const argument1 = Python.valueToCode(block, 'Y', Python.ORDER_NONE) || '0'; + return [ + 'math.atan2(' + argument1 + ', ' + argument0 + ') / math.pi * 180', + Python.ORDER_MULTIPLICATIVE + ]; +}; diff --git a/generators/python/procedures.js b/generators/python/procedures.js index b95becd3d27..6c22bfefe4b 100644 --- a/generators/python/procedures.js +++ b/generators/python/procedures.js @@ -1,129 +1,174 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for procedure blocks. - */ -'use strict'; - -goog.module('Blockly.Python.procedures'); - -const Python = goog.require('Blockly.Python'); -const Variables = goog.require('Blockly.Variables'); -const {NameType} = goog.require('Blockly.Names'); - - -Python['procedures_defreturn'] = function(block) { - // Define a procedure with a return value. - // First, add a 'global' statement for every variable that is not shadowed by - // a local parameter. - const globals = []; - const workspace = block.workspace; - const usedVariables = Variables.allUsedVarModels(workspace) || []; - for (let i = 0, variable; (variable = usedVariables[i]); i++) { - const varName = variable.name; - if (block.getVars().indexOf(varName) === -1) { - globals.push(Python.nameDB_.getName(varName, NameType.VARIABLE)); - } - } - // Add developer variables. - const devVarList = Variables.allDeveloperVariables(workspace); - for (let i = 0; i < devVarList.length; i++) { - globals.push( - Python.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE)); - } - - const globalString = globals.length ? - Python.INDENT + 'global ' + globals.join(', ') + '\n' : - ''; - const funcName = - Python.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); - let xfix1 = ''; - if (Python.STATEMENT_PREFIX) { - xfix1 += Python.injectId(Python.STATEMENT_PREFIX, block); - } - if (Python.STATEMENT_SUFFIX) { - xfix1 += Python.injectId(Python.STATEMENT_SUFFIX, block); - } - if (xfix1) { - xfix1 = Python.prefixLines(xfix1, Python.INDENT); - } - let loopTrap = ''; - if (Python.INFINITE_LOOP_TRAP) { - loopTrap = Python.prefixLines( - Python.injectId(Python.INFINITE_LOOP_TRAP, block), Python.INDENT); - } - let branch = Python.statementToCode(block, 'STACK'); - let returnValue = - Python.valueToCode(block, 'RETURN', Python.ORDER_NONE) || ''; - let xfix2 = ''; - if (branch && returnValue) { - // After executing the function body, revisit this block for the return. - xfix2 = xfix1; - } - if (returnValue) { - returnValue = Python.INDENT + 'return ' + returnValue + '\n'; - } else if (!branch) { - branch = Python.PASS; - } - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = Python.nameDB_.getName(variables[i], NameType.VARIABLE); - } - let code = 'def ' + funcName + '(' + args.join(', ') + '):\n' + globalString + - xfix1 + loopTrap + branch + xfix2 + returnValue; - code = Python.scrub_(block, code); - // Add % so as not to collide with helper functions in definitions list. - Python.definitions_['%' + funcName] = code; - return null; -}; - -// Defining a procedure without a return value uses the same generator as -// a procedure with a return value. -Python['procedures_defnoreturn'] = Python['procedures_defreturn']; - -Python['procedures_callreturn'] = function(block) { - // Call a procedure with a return value. - const funcName = - Python.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); - const args = []; - const variables = block.getVars(); - for (let i = 0; i < variables.length; i++) { - args[i] = Python.valueToCode(block, 'ARG' + i, Python.ORDER_NONE) || 'None'; - } - const code = funcName + '(' + args.join(', ') + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['procedures_callnoreturn'] = function(block) { - // Call a procedure with no return value. - // Generated code is for a function call as a statement is the same as a - // function call as a value, with the addition of line ending. - const tuple = Python['procedures_callreturn'](block); - return tuple[0] + '\n'; -}; - -Python['procedures_ifreturn'] = function(block) { - // Conditionally return value from a procedure. - const condition = - Python.valueToCode(block, 'CONDITION', Python.ORDER_NONE) || 'False'; - let code = 'if ' + condition + ':\n'; - if (Python.STATEMENT_SUFFIX) { - // Inject any statement suffix here since the regular one at the end - // will not get executed if the return is triggered. - code += Python.prefixLines( - Python.injectId(Python.STATEMENT_SUFFIX, block), Python.INDENT); - } - if (block.hasReturnValue_) { - const value = - Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || 'None'; - code += Python.INDENT + 'return ' + value + '\n'; - } else { - code += Python.INDENT + 'return\n'; - } - return code; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for procedure blocks. + */ +'use strict'; + +goog.module('Blockly.Python.procedures'); + +const Python = goog.require('Blockly.Python'); +const Variables = goog.require('Blockly.Variables'); +const {NameType} = goog.require('Blockly.Names'); + + +Python['procedures_defreturn'] = function(block) { + // Define a procedure with a return value. + // First, add a 'global' statement for every variable that is not shadowed by + // a local parameter. + const globals = []; + const workspace = block.workspace; + const usedVariables = Variables.allUsedVarModels(workspace) || []; + for (let i = 0, variable; (variable = usedVariables[i]); i++) { + const varName = variable.name; + if (block.getVars().indexOf(varName) === -1) { + globals.push(Python.nameDB_.getName(varName, NameType.VARIABLE)); + } + } + // Add developer variables. + const devVarList = Variables.allDeveloperVariables(workspace); + for (let i = 0; i < devVarList.length; i++) { + globals.push( + Python.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE)); + } + + const globalString = globals.length ? + Python.INDENT + 'global ' + globals.join(', ') + '\n' : + ''; + const funcName = + Python.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); + let xfix1 = ''; + if (Python.STATEMENT_PREFIX) { + xfix1 += Python.injectId(Python.STATEMENT_PREFIX, block); + } + if (Python.STATEMENT_SUFFIX) { + xfix1 += Python.injectId(Python.STATEMENT_SUFFIX, block); + } + if (xfix1) { + xfix1 = Python.prefixLines(xfix1, Python.INDENT); + } + let loopTrap = ''; + if (Python.INFINITE_LOOP_TRAP) { + loopTrap = Python.prefixLines( + Python.injectId(Python.INFINITE_LOOP_TRAP, block), Python.INDENT); + } + let branch = Python.statementToCode(block, 'STACK'); + let returnValue = + Python.valueToCode(block, 'RETURN', Python.ORDER_NONE) || ''; + let xfix2 = ''; + if (branch && returnValue) { + // After executing the function body, revisit this block for the return. + xfix2 = xfix1; + } + if (returnValue) { + returnValue = Python.INDENT + 'return ' + returnValue + '\n'; + } else if (!branch) { + branch = Python.PASS; + } + const args = ['self']; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i+1] = Python.nameDB_.getName(variables[i], NameType.VARIABLE); + } + + var initVariables = ""; + for(let i = 1; i < args.length; i++){ + initVariables = initVariables + Python.INDENT + "self." + args[i] + " = " + args[i] + "\n"; + } + // REMOVENDO O GLOBAL STRING + // let code = 'def ' + funcName + '(' + args.join(', ') + '):\n' + globalString + + // xfix1 + loopTrap + branch + xfix2 + returnValue; + + let code = 'def ' + funcName + '(' + args.join(', ') + '):\n' + initVariables + + xfix1 + loopTrap + branch + xfix2 + returnValue; + code = Python.scrub_(block, code); + // Add % so as not to collide with helper functions in definitions list. + Python.definitions_['%' + funcName] = code; + return null; +}; + +// Defining a procedure without a return value uses the same generator as +// a procedure with a return value. +Python['procedures_defnoreturn'] = Python['procedures_defreturn']; + +Python['procedures_callreturn'] = function(block) { + // Call a procedure with a return value. + const funcName = + Python.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE); + const args = []; + const variables = block.getVars(); + for (let i = 0; i < variables.length; i++) { + args[i] = Python.valueToCode(block, 'ARG' + i, Python.ORDER_NONE) || 'None'; + } + const code = 'self.' + funcName + '(' + args.join(', ') + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['procedures_callnoreturn'] = function(block) { + // Call a procedure with no return value. + // Generated code is for a function call as a statement is the same as a + // function call as a value, with the addition of line ending. + const tuple = Python['procedures_callreturn'](block); + return tuple[0] + '\n'; +}; + +Python['procedures_ifreturn'] = function(block) { + // Conditionally return value from a procedure. + const condition = + Python.valueToCode(block, 'CONDITION', Python.ORDER_NONE) || 'False'; + let code = 'if ' + condition + ':\n'; + if (Python.STATEMENT_SUFFIX) { + // Inject any statement suffix here since the regular one at the end + // will not get executed if the return is triggered. + code += Python.prefixLines( + Python.injectId(Python.STATEMENT_SUFFIX, block), Python.INDENT); + } + if (block.hasReturnValue_) { + const value = + Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || 'None'; + code += Python.INDENT + 'return ' + value + '\n'; + } else { + code += Python.INDENT + 'return\n'; + } + return code; +}; + + +Python["procedures_setup"] = function (block) { + let branch = Python.statementToCode(block, "DO") || Python.PASS; + // let return_value = Python.valueToCode( + // block, + // "RETURN", + // Python.ORDER_NONE + // ); + // const code = + // "def setup(self):\n" + branch + " return self.defineActor(" + return_value + ")\n"; + const code = + "def setup(self):\n" + branch + "\n"; + return code; +}; + +Python["procedures_setup_supervisor"] = function (block) { + let branch = Python.statementToCode(block, "DO") || Python.PASS; + // let return_value = Python.valueToCode( + // block, + // "RETURN", + // Python.ORDER_NONE + // ); + // const code = + // "def setup(self, actors):\n" + branch + " return self.defineActor(" + return_value + ")\n"; + const code = + "def setup(self, actors):\n" + branch + "\n"; + return code; +}; + +Python["procedures_run"] = function (block) { + let branch = Python.statementToCode(block, "DO") || Python.PASS; + const code = + "def run(self):\n" + branch + "\n"; + return code; +}; \ No newline at end of file diff --git a/generators/python/text.js b/generators/python/text.js index a097cbee215..0ca30732484 100644 --- a/generators/python/text.js +++ b/generators/python/text.js @@ -1,291 +1,291 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for text blocks. - */ -'use strict'; - -goog.module('Blockly.Python.texts'); - -const Python = goog.require('Blockly.Python'); -const stringUtils = goog.require('Blockly.utils.string'); -const {NameType} = goog.require('Blockly.Names'); - - -Python['text'] = function(block) { - // Text value. - const code = Python.quote_(block.getFieldValue('TEXT')); - return [code, Python.ORDER_ATOMIC]; -}; - -Python['text_multiline'] = function(block) { - // Text value. - const code = Python.multiline_quote_(block.getFieldValue('TEXT')); - const order = - code.indexOf('+') !== -1 ? Python.ORDER_ADDITIVE : Python.ORDER_ATOMIC; - return [code, order]; -}; - -/** - * Regular expression to detect a single-quoted string literal. - */ -const strRegExp = /^\s*'([^']|\\')*'\s*$/; - -/** - * Enclose the provided value in 'str(...)' function. - * Leave string literals alone. - * @param {string} value Code evaluating to a value. - * @return {Array} Array containing code evaluating to a string - * and - * the order of the returned code.[string, number] - */ -const forceString = function(value) { - if (strRegExp.test(value)) { - return [value, Python.ORDER_ATOMIC]; - } - return ['str(' + value + ')', Python.ORDER_FUNCTION_CALL]; -}; - -Python['text_join'] = function(block) { - // Create a string made up of any number of elements of any type. - // Should we allow joining by '-' or ',' or any other characters? - switch (block.itemCount_) { - case 0: - return ["''", Python.ORDER_ATOMIC]; - case 1: { - const element = - Python.valueToCode(block, 'ADD0', Python.ORDER_NONE) || "''"; - const codeAndOrder = forceString(element); - return codeAndOrder; - } - case 2: { - const element0 = - Python.valueToCode(block, 'ADD0', Python.ORDER_NONE) || "''"; - const element1 = - Python.valueToCode(block, 'ADD1', Python.ORDER_NONE) || "''"; - const code = forceString(element0)[0] + ' + ' + forceString(element1)[0]; - return [code, Python.ORDER_ADDITIVE]; - } - default: { - const elements = []; - for (let i = 0; i < block.itemCount_; i++) { - elements[i] = - Python.valueToCode(block, 'ADD' + i, Python.ORDER_NONE) || "''"; - } - const tempVar = Python.nameDB_.getDistinctName('x', NameType.VARIABLE); - const code = '\'\'.join([str(' + tempVar + ') for ' + tempVar + ' in [' + - elements.join(', ') + ']])'; - return [code, Python.ORDER_FUNCTION_CALL]; - } - } -}; - -Python['text_append'] = function(block) { - // Append to a variable in place. - const varName = - Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - const value = Python.valueToCode(block, 'TEXT', Python.ORDER_NONE) || "''"; - return varName + ' = str(' + varName + ') + ' + forceString(value)[0] + '\n'; -}; - -Python['text_length'] = function(block) { - // Is the string null or array empty? - const text = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || "''"; - return ['len(' + text + ')', Python.ORDER_FUNCTION_CALL]; -}; - -Python['text_isEmpty'] = function(block) { - // Is the string null or array empty? - const text = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || "''"; - const code = 'not len(' + text + ')'; - return [code, Python.ORDER_LOGICAL_NOT]; -}; - -Python['text_indexOf'] = function(block) { - // Search the text for a substring. - // Should we allow for non-case sensitive??? - const operator = block.getFieldValue('END') === 'FIRST' ? 'find' : 'rfind'; - const substring = - Python.valueToCode(block, 'FIND', Python.ORDER_NONE) || "''"; - const text = - Python.valueToCode(block, 'VALUE', Python.ORDER_MEMBER) || "''"; - const code = text + '.' + operator + '(' + substring + ')'; - if (block.workspace.options.oneBasedIndex) { - return [code + ' + 1', Python.ORDER_ADDITIVE]; - } - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['text_charAt'] = function(block) { - // Get letter at index. - // Note: Until January 2013 this block did not have the WHERE input. - const where = block.getFieldValue('WHERE') || 'FROM_START'; - const textOrder = - (where === 'RANDOM') ? Python.ORDER_NONE : Python.ORDER_MEMBER; - const text = Python.valueToCode(block, 'VALUE', textOrder) || "''"; - switch (where) { - case 'FIRST': { - const code = text + '[0]'; - return [code, Python.ORDER_MEMBER]; - } - case 'LAST': { - const code = text + '[-1]'; - return [code, Python.ORDER_MEMBER]; - } - case 'FROM_START': { - const at = Python.getAdjustedInt(block, 'AT'); - const code = text + '[' + at + ']'; - return [code, Python.ORDER_MEMBER]; - } - case 'FROM_END': { - const at = Python.getAdjustedInt(block, 'AT', 1, true); - const code = text + '[' + at + ']'; - return [code, Python.ORDER_MEMBER]; - } - case 'RANDOM': { - Python.definitions_['import_random'] = 'import random'; - const functionName = Python.provideFunction_('text_random_letter', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(text): - x = int(random.random() * len(text)) - return text[x] -`); - const code = functionName + '(' + text + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; - } - } - throw Error('Unhandled option (text_charAt).'); -}; - -Python['text_getSubstring'] = function(block) { - // Get substring. - const where1 = block.getFieldValue('WHERE1'); - const where2 = block.getFieldValue('WHERE2'); - const text = - Python.valueToCode(block, 'STRING', Python.ORDER_MEMBER) || "''"; - let at1; - switch (where1) { - case 'FROM_START': - at1 = Python.getAdjustedInt(block, 'AT1'); - if (at1 === 0) { - at1 = ''; - } - break; - case 'FROM_END': - at1 = Python.getAdjustedInt(block, 'AT1', 1, true); - break; - case 'FIRST': - at1 = ''; - break; - default: - throw Error('Unhandled option (text_getSubstring)'); - } - - let at2; - switch (where2) { - case 'FROM_START': - at2 = Python.getAdjustedInt(block, 'AT2', 1); - break; - case 'FROM_END': - at2 = Python.getAdjustedInt(block, 'AT2', 0, true); - // Ensure that if the result calculated is 0 that sub-sequence will - // include all elements as expected. - if (!stringUtils.isNumber(String(at2))) { - Python.definitions_['import_sys'] = 'import sys'; - at2 += ' or sys.maxsize'; - } else if (at2 === 0) { - at2 = ''; - } - break; - case 'LAST': - at2 = ''; - break; - default: - throw Error('Unhandled option (text_getSubstring)'); - } - const code = text + '[' + at1 + ' : ' + at2 + ']'; - return [code, Python.ORDER_MEMBER]; -}; - -Python['text_changeCase'] = function(block) { - // Change capitalization. - const OPERATORS = { - 'UPPERCASE': '.upper()', - 'LOWERCASE': '.lower()', - 'TITLECASE': '.title()' - }; - const operator = OPERATORS[block.getFieldValue('CASE')]; - const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; - const code = text + operator; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['text_trim'] = function(block) { - // Trim spaces. - const OPERATORS = { - 'LEFT': '.lstrip()', - 'RIGHT': '.rstrip()', - 'BOTH': '.strip()' - }; - const operator = OPERATORS[block.getFieldValue('MODE')]; - const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; - const code = text + operator; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['text_print'] = function(block) { - // Print statement. - const msg = Python.valueToCode(block, 'TEXT', Python.ORDER_NONE) || "''"; - return 'print(' + msg + ')\n'; -}; - -Python['text_prompt_ext'] = function(block) { - // Prompt function. - const functionName = Python.provideFunction_('text_prompt', ` -def ${Python.FUNCTION_NAME_PLACEHOLDER_}(msg): - try: - return raw_input(msg) - except NameError: - return input(msg) -`); - let msg; - if (block.getField('TEXT')) { - // Internal message. - msg = Python.quote_(block.getFieldValue('TEXT')); - } else { - // External message. - msg = Python.valueToCode(block, 'TEXT', Python.ORDER_NONE) || "''"; - } - let code = functionName + '(' + msg + ')'; - const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; - if (toNumber) { - code = 'float(' + code + ')'; - } - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['text_prompt'] = Python['text_prompt_ext']; - -Python['text_count'] = function(block) { - const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; - const sub = Python.valueToCode(block, 'SUB', Python.ORDER_NONE) || "''"; - const code = text + '.count(' + sub + ')'; - return [code, Python.ORDER_FUNCTION_CALL]; -}; - -Python['text_replace'] = function(block) { - const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; - const from = Python.valueToCode(block, 'FROM', Python.ORDER_NONE) || "''"; - const to = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || "''"; - const code = text + '.replace(' + from + ', ' + to + ')'; - return [code, Python.ORDER_MEMBER]; -}; - -Python['text_reverse'] = function(block) { - const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; - const code = text + '[::-1]'; - return [code, Python.ORDER_MEMBER]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for text blocks. + */ +'use strict'; + +goog.module('Blockly.Python.texts'); + +const Python = goog.require('Blockly.Python'); +const stringUtils = goog.require('Blockly.utils.string'); +const {NameType} = goog.require('Blockly.Names'); + + +Python['text'] = function(block) { + // Text value. + const code = Python.quote_(block.getFieldValue('TEXT')); + return [code, Python.ORDER_ATOMIC]; +}; + +Python['text_multiline'] = function(block) { + // Text value. + const code = Python.multiline_quote_(block.getFieldValue('TEXT')); + const order = + code.indexOf('+') !== -1 ? Python.ORDER_ADDITIVE : Python.ORDER_ATOMIC; + return [code, order]; +}; + +/** + * Regular expression to detect a single-quoted string literal. + */ +const strRegExp = /^\s*'([^']|\\')*'\s*$/; + +/** + * Enclose the provided value in 'str(...)' function. + * Leave string literals alone. + * @param {string} value Code evaluating to a value. + * @return {Array} Array containing code evaluating to a string + * and + * the order of the returned code.[string, number] + */ +const forceString = function(value) { + if (strRegExp.test(value)) { + return [value, Python.ORDER_ATOMIC]; + } + return ['str(' + value + ')', Python.ORDER_FUNCTION_CALL]; +}; + +Python['text_join'] = function(block) { + // Create a string made up of any number of elements of any type. + // Should we allow joining by '-' or ',' or any other characters? + switch (block.itemCount_) { + case 0: + return ["''", Python.ORDER_ATOMIC]; + case 1: { + const element = + Python.valueToCode(block, 'ADD0', Python.ORDER_NONE) || "''"; + const codeAndOrder = forceString(element); + return codeAndOrder; + } + case 2: { + const element0 = + Python.valueToCode(block, 'ADD0', Python.ORDER_NONE) || "''"; + const element1 = + Python.valueToCode(block, 'ADD1', Python.ORDER_NONE) || "''"; + const code = forceString(element0)[0] + ' + ' + forceString(element1)[0]; + return [code, Python.ORDER_ADDITIVE]; + } + default: { + const elements = []; + for (let i = 0; i < block.itemCount_; i++) { + elements[i] = + Python.valueToCode(block, 'ADD' + i, Python.ORDER_NONE) || "''"; + } + const tempVar = Python.nameDB_.getDistinctName('x', NameType.VARIABLE); + const code = '\'\'.join([str(' + tempVar + ') for ' + tempVar + ' in [' + + elements.join(', ') + ']])'; + return [code, Python.ORDER_FUNCTION_CALL]; + } + } +}; + +Python['text_append'] = function(block) { + // Append to a variable in place. + const varName = + Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + const value = Python.valueToCode(block, 'TEXT', Python.ORDER_NONE) || "''"; + return varName + ' = str(' + varName + ') + ' + forceString(value)[0] + '\n'; +}; + +Python['text_length'] = function(block) { + // Is the string null or array empty? + const text = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || "''"; + return ['len(' + text + ')', Python.ORDER_FUNCTION_CALL]; +}; + +Python['text_isEmpty'] = function(block) { + // Is the string null or array empty? + const text = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || "''"; + const code = 'not len(' + text + ')'; + return [code, Python.ORDER_LOGICAL_NOT]; +}; + +Python['text_indexOf'] = function(block) { + // Search the text for a substring. + // Should we allow for non-case sensitive??? + const operator = block.getFieldValue('END') === 'FIRST' ? 'find' : 'rfind'; + const substring = + Python.valueToCode(block, 'FIND', Python.ORDER_NONE) || "''"; + const text = + Python.valueToCode(block, 'VALUE', Python.ORDER_MEMBER) || "''"; + const code = text + '.' + operator + '(' + substring + ')'; + if (block.workspace.options.oneBasedIndex) { + return [code + ' + 1', Python.ORDER_ADDITIVE]; + } + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['text_charAt'] = function(block) { + // Get letter at index. + // Note: Until January 2013 this block did not have the WHERE input. + const where = block.getFieldValue('WHERE') || 'FROM_START'; + const textOrder = + (where === 'RANDOM') ? Python.ORDER_NONE : Python.ORDER_MEMBER; + const text = Python.valueToCode(block, 'VALUE', textOrder) || "''"; + switch (where) { + case 'FIRST': { + const code = text + '[0]'; + return [code, Python.ORDER_MEMBER]; + } + case 'LAST': { + const code = text + '[-1]'; + return [code, Python.ORDER_MEMBER]; + } + case 'FROM_START': { + const at = Python.getAdjustedInt(block, 'AT'); + const code = text + '[' + at + ']'; + return [code, Python.ORDER_MEMBER]; + } + case 'FROM_END': { + const at = Python.getAdjustedInt(block, 'AT', 1, true); + const code = text + '[' + at + ']'; + return [code, Python.ORDER_MEMBER]; + } + case 'RANDOM': { + // Python.definitions_['import_random'] = 'import random'; + const functionName = Python.provideFunction_('text_random_letter', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(text): + x = int(random.random() * len(text)) + return text[x] +`); + const code = functionName + '(' + text + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; + } + } + throw Error('Unhandled option (text_charAt).'); +}; + +Python['text_getSubstring'] = function(block) { + // Get substring. + const where1 = block.getFieldValue('WHERE1'); + const where2 = block.getFieldValue('WHERE2'); + const text = + Python.valueToCode(block, 'STRING', Python.ORDER_MEMBER) || "''"; + let at1; + switch (where1) { + case 'FROM_START': + at1 = Python.getAdjustedInt(block, 'AT1'); + if (at1 === 0) { + at1 = ''; + } + break; + case 'FROM_END': + at1 = Python.getAdjustedInt(block, 'AT1', 1, true); + break; + case 'FIRST': + at1 = ''; + break; + default: + throw Error('Unhandled option (text_getSubstring)'); + } + + let at2; + switch (where2) { + case 'FROM_START': + at2 = Python.getAdjustedInt(block, 'AT2', 1); + break; + case 'FROM_END': + at2 = Python.getAdjustedInt(block, 'AT2', 0, true); + // Ensure that if the result calculated is 0 that sub-sequence will + // include all elements as expected. + if (!stringUtils.isNumber(String(at2))) { + // Python.definitions_['import_sys'] = 'import sys'; + at2 += ' or sys.maxsize'; + } else if (at2 === 0) { + at2 = ''; + } + break; + case 'LAST': + at2 = ''; + break; + default: + throw Error('Unhandled option (text_getSubstring)'); + } + const code = text + '[' + at1 + ' : ' + at2 + ']'; + return [code, Python.ORDER_MEMBER]; +}; + +Python['text_changeCase'] = function(block) { + // Change capitalization. + const OPERATORS = { + 'UPPERCASE': '.upper()', + 'LOWERCASE': '.lower()', + 'TITLECASE': '.title()' + }; + const operator = OPERATORS[block.getFieldValue('CASE')]; + const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; + const code = text + operator; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['text_trim'] = function(block) { + // Trim spaces. + const OPERATORS = { + 'LEFT': '.lstrip()', + 'RIGHT': '.rstrip()', + 'BOTH': '.strip()' + }; + const operator = OPERATORS[block.getFieldValue('MODE')]; + const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; + const code = text + operator; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['text_print'] = function(block) { + // Print statement. + const msg = Python.valueToCode(block, 'TEXT', Python.ORDER_NONE) || "''"; + return 'self.logInfo(' + msg + ')\n'; +}; + +Python['text_prompt_ext'] = function(block) { + // Prompt function. + const functionName = Python.provideFunction_('text_prompt', ` +def ${Python.FUNCTION_NAME_PLACEHOLDER_}(msg): + try: + return raw_input(msg) + except NameError: + return input(msg) +`); + let msg; + if (block.getField('TEXT')) { + // Internal message. + msg = Python.quote_(block.getFieldValue('TEXT')); + } else { + // External message. + msg = Python.valueToCode(block, 'TEXT', Python.ORDER_NONE) || "''"; + } + let code = functionName + '(' + msg + ')'; + const toNumber = block.getFieldValue('TYPE') === 'NUMBER'; + if (toNumber) { + code = 'float(' + code + ')'; + } + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['text_prompt'] = Python['text_prompt_ext']; + +Python['text_count'] = function(block) { + const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; + const sub = Python.valueToCode(block, 'SUB', Python.ORDER_NONE) || "''"; + const code = text + '.count(' + sub + ')'; + return [code, Python.ORDER_FUNCTION_CALL]; +}; + +Python['text_replace'] = function(block) { + const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; + const from = Python.valueToCode(block, 'FROM', Python.ORDER_NONE) || "''"; + const to = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || "''"; + const code = text + '.replace(' + from + ', ' + to + ')'; + return [code, Python.ORDER_MEMBER]; +}; + +Python['text_reverse'] = function(block) { + const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || "''"; + const code = text + '[::-1]'; + return [code, Python.ORDER_MEMBER]; +}; diff --git a/generators/python/variables.js b/generators/python/variables.js index 107beda0d1f..0551c95267c 100644 --- a/generators/python/variables.js +++ b/generators/python/variables.js @@ -1,32 +1,48 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for variable blocks. - */ -'use strict'; - -goog.module('Blockly.Python.variables'); - -const Python = goog.require('Blockly.Python'); -const {NameType} = goog.require('Blockly.Names'); - - -Python['variables_get'] = function(block) { - // Variable getter. - const code = - Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return [code, Python.ORDER_ATOMIC]; -}; - -Python['variables_set'] = function(block) { - // Variable setter. - const argument0 = - Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '0'; - const varName = - Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); - return varName + ' = ' + argument0 + '\n'; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for variable blocks. + */ +'use strict'; + +goog.module('Blockly.Python.variables'); + +const Python = goog.require('Blockly.Python'); +const {NameType} = goog.require('Blockly.Names'); + + +Python['variables_get'] = function(block) { + // Variable getter. + const code = "self." + + Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return [code, Python.ORDER_ATOMIC]; +}; + +Python['variables_set'] = function(block) { + // Variable setter. + const argument0 = + Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '0'; + const varName = "self." + + Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + return varName + ' = ' + argument0 + '\n'; +}; + +Python['variables_call'] = function(block) { + const argument0 = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || "__str__()"; + const varName = Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + + var code = "self." + varName + "." + argument0 + "\n" + return code; +}; + +Python['variables_call_out'] = function(block) { + const argument0 = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || "__str__()"; + const varName = Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE); + + var code = "self." + varName + "." + argument0 + return [code, Python.ORDER_ATOMIC]; +}; \ No newline at end of file diff --git a/generators/python/variables_dynamic.js b/generators/python/variables_dynamic.js index 738b383fe0e..0523617a21f 100644 --- a/generators/python/variables_dynamic.js +++ b/generators/python/variables_dynamic.js @@ -1,21 +1,21 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for dynamic variable blocks. - */ -'use strict'; - -goog.module('Blockly.Python.variablesDynamic'); - -const Python = goog.require('Blockly.Python'); -/** @suppress {extraRequire} */ -goog.require('Blockly.Python.variables'); - - -// Python is dynamically typed. -Python['variables_get_dynamic'] = Python['variables_get']; -Python['variables_set_dynamic'] = Python['variables_set']; +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for dynamic variable blocks. + */ +'use strict'; + +goog.module('Blockly.Python.variablesDynamic'); + +const Python = goog.require('Blockly.Python'); +/** @suppress {extraRequire} */ +goog.require('Blockly.Python.variables'); + + +// Python is dynamically typed. +Python['variables_get_dynamic'] = Python['variables_get']; +Python['variables_set_dynamic'] = Python['variables_set']; diff --git a/gulpfile.js b/gulpfile.js index c78ac405a33..9c292de263f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,56 +1,56 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Gulp script to build Blockly for Node & NPM. - * Run this script by calling "npm install" in this directory. - */ -/* eslint-env node */ - -const gulp = require('gulp'); - -const buildTasks = require('./scripts/gulpfiles/build_tasks'); -const packageTasks = require('./scripts/gulpfiles/package_tasks'); -const gitTasks = require('./scripts/gulpfiles/git_tasks'); -const licenseTasks = require('./scripts/gulpfiles/license_tasks'); -const appengineTasks = require('./scripts/gulpfiles/appengine_tasks'); -const releaseTasks = require('./scripts/gulpfiles/release_tasks'); -const cleanupTasks = require('./scripts/gulpfiles/cleanup_tasks'); - -module.exports = { - deployDemos: appengineTasks.deployDemos, - deployDemosBeta: appengineTasks.deployDemosBeta, - default: buildTasks.build, - generateLangfiles: buildTasks.generateLangfiles, - build: buildTasks.build, - buildDeps: buildTasks.deps, - buildLangfiles: buildTasks.langfiles, - buildCompiled: buildTasks.compiled, - buildAdvancedCompilationTest: buildTasks.advancedCompilationTest, - buildTs: buildTasks.buildTypescript, - // TODO(5621): Re-enable once typings generation is fixed. - // checkin: gulp.parallel(buildTasks.checkinBuilt, typings.checkinTypings), - checkin: gulp.parallel(buildTasks.checkinBuilt), - checkinBuilt: buildTasks.checkinBuilt, - clangFormat: buildTasks.format, - clean: gulp.parallel(buildTasks.cleanBuildDir, packageTasks.cleanReleaseDir), - cleanBuildDir: buildTasks.cleanBuildDir, - cleanReleaseDir: packageTasks.cleanReleaseDir, - gitSyncDevelop: gitTasks.syncDevelop, - gitSyncMaster: gitTasks.syncMaster, - gitCreateRC: gitTasks.createRC, - gitUpdateGithubPages: gitTasks.updateGithubPages, - // TODO(5621): Re-enable once typings generation is fixed. - // typings: gulp.series(typings.typings, typings.msgTypings), - // checkinTypings: typings.checkinTypings, - package: packageTasks.package, - checkLicenses: licenseTasks.checkLicenses, - recompile: releaseTasks.recompile, - prepareDemos: appengineTasks.prepareDemos, - publish: releaseTasks.publish, - publishBeta: releaseTasks.publishBeta, - sortRequires: cleanupTasks.sortRequires, -}; +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Gulp script to build Blockly for Node & NPM. + * Run this script by calling "npm install" in this directory. + */ +/* eslint-env node */ + +const gulp = require('gulp'); + +const buildTasks = require('./scripts/gulpfiles/build_tasks'); +const packageTasks = require('./scripts/gulpfiles/package_tasks'); +const gitTasks = require('./scripts/gulpfiles/git_tasks'); +const licenseTasks = require('./scripts/gulpfiles/license_tasks'); +const appengineTasks = require('./scripts/gulpfiles/appengine_tasks'); +const releaseTasks = require('./scripts/gulpfiles/release_tasks'); +const cleanupTasks = require('./scripts/gulpfiles/cleanup_tasks'); + +module.exports = { + deployDemos: appengineTasks.deployDemos, + deployDemosBeta: appengineTasks.deployDemosBeta, + default: buildTasks.build, + generateLangfiles: buildTasks.generateLangfiles, + build: buildTasks.build, + buildDeps: buildTasks.deps, + buildLangfiles: buildTasks.langfiles, + buildCompiled: buildTasks.compiled, + buildAdvancedCompilationTest: buildTasks.advancedCompilationTest, + buildTs: buildTasks.buildTypescript, + // TODO(5621): Re-enable once typings generation is fixed. + // checkin: gulp.parallel(buildTasks.checkinBuilt, typings.checkinTypings), + checkin: gulp.parallel(buildTasks.checkinBuilt), + checkinBuilt: buildTasks.checkinBuilt, + clangFormat: buildTasks.format, + clean: gulp.parallel(buildTasks.cleanBuildDir, packageTasks.cleanReleaseDir), + cleanBuildDir: buildTasks.cleanBuildDir, + cleanReleaseDir: packageTasks.cleanReleaseDir, + gitSyncDevelop: gitTasks.syncDevelop, + gitSyncMaster: gitTasks.syncMaster, + gitCreateRC: gitTasks.createRC, + gitUpdateGithubPages: gitTasks.updateGithubPages, + // TODO(5621): Re-enable once typings generation is fixed. + // typings: gulp.series(typings.typings, typings.msgTypings), + // checkinTypings: typings.checkinTypings, + package: packageTasks.package, + checkLicenses: licenseTasks.checkLicenses, + recompile: releaseTasks.recompile, + prepareDemos: appengineTasks.prepareDemos, + publish: releaseTasks.publish, + publishBeta: releaseTasks.publishBeta, + sortRequires: cleanupTasks.sortRequires, +}; diff --git a/javascript_compressed.js b/javascript_compressed.js index 1bb40e813ca..9c0ed340d12 100644 --- a/javascript_compressed.js +++ b/javascript_compressed.js @@ -1,121 +1,121 @@ -// Do not edit this file; automatically generated. - -/* eslint-disable */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { // AMD - define(["./blockly_compressed.js"], factory); - } else if (typeof exports === 'object') { // Node.js - module.exports = factory(require("./blockly_compressed.js")); - } else { // Browser - var factoryExports = factory(root.Blockly); - root.Blockly.JavaScript = factoryExports; - } -}(this, function(__parent__) { -var $=__parent__.__namespace__; -var module$contents$Blockly$JavaScript_JavaScript=new $.module$exports$Blockly$Generator.Generator("JavaScript");module$contents$Blockly$JavaScript_JavaScript.addReservedWords("break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,new,return,super,switch,this,throw,try,typeof,var,void,while,with,yield,enum,implements,interface,let,package,private,protected,public,static,await,null,true,false,arguments,"+Object.getOwnPropertyNames($.module$exports$Blockly$utils$global.globalThis).join(",")); -module$contents$Blockly$JavaScript_JavaScript.ORDER_ATOMIC=0;module$contents$Blockly$JavaScript_JavaScript.ORDER_NEW=1.1;module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER=1.2;module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL=2;module$contents$Blockly$JavaScript_JavaScript.ORDER_INCREMENT=3;module$contents$Blockly$JavaScript_JavaScript.ORDER_DECREMENT=3;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_NOT=4.1; -module$contents$Blockly$JavaScript_JavaScript.ORDER_UNARY_PLUS=4.2;module$contents$Blockly$JavaScript_JavaScript.ORDER_UNARY_NEGATION=4.3;module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_NOT=4.4;module$contents$Blockly$JavaScript_JavaScript.ORDER_TYPEOF=4.5;module$contents$Blockly$JavaScript_JavaScript.ORDER_VOID=4.6;module$contents$Blockly$JavaScript_JavaScript.ORDER_DELETE=4.7;module$contents$Blockly$JavaScript_JavaScript.ORDER_AWAIT=4.8; -module$contents$Blockly$JavaScript_JavaScript.ORDER_EXPONENTIATION=5;module$contents$Blockly$JavaScript_JavaScript.ORDER_MULTIPLICATION=5.1;module$contents$Blockly$JavaScript_JavaScript.ORDER_DIVISION=5.2;module$contents$Blockly$JavaScript_JavaScript.ORDER_MODULUS=5.3;module$contents$Blockly$JavaScript_JavaScript.ORDER_SUBTRACTION=6.1;module$contents$Blockly$JavaScript_JavaScript.ORDER_ADDITION=6.2;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_SHIFT=7; -module$contents$Blockly$JavaScript_JavaScript.ORDER_RELATIONAL=8;module$contents$Blockly$JavaScript_JavaScript.ORDER_IN=8;module$contents$Blockly$JavaScript_JavaScript.ORDER_INSTANCEOF=8;module$contents$Blockly$JavaScript_JavaScript.ORDER_EQUALITY=9;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_AND=10;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_XOR=11;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_OR=12; -module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_AND=13;module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_OR=14;module$contents$Blockly$JavaScript_JavaScript.ORDER_CONDITIONAL=15;module$contents$Blockly$JavaScript_JavaScript.ORDER_ASSIGNMENT=16;module$contents$Blockly$JavaScript_JavaScript.ORDER_YIELD=17;module$contents$Blockly$JavaScript_JavaScript.ORDER_COMMA=18;module$contents$Blockly$JavaScript_JavaScript.ORDER_NONE=99; -module$contents$Blockly$JavaScript_JavaScript.ORDER_OVERRIDES=[[module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL,module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER],[module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL,module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL],[module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER,module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER],[module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER, -module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL],[module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_NOT,module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_NOT],[module$contents$Blockly$JavaScript_JavaScript.ORDER_MULTIPLICATION,module$contents$Blockly$JavaScript_JavaScript.ORDER_MULTIPLICATION],[module$contents$Blockly$JavaScript_JavaScript.ORDER_ADDITION,module$contents$Blockly$JavaScript_JavaScript.ORDER_ADDITION],[module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_AND, -module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_AND],[module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_OR,module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_OR]];module$contents$Blockly$JavaScript_JavaScript.isInitialized=!1; -module$contents$Blockly$JavaScript_JavaScript.init=function(a){Object.getPrototypeOf(this).init.call(this);this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$exports$Blockly$Names.Names(this.RESERVED_WORDS_);this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);for(var b=[],c=(0,$.module$exports$Blockly$Variables.allDeveloperVariables)(a),d=0;dc?h=g=this.ORDER_SUBTRACTION:d&&(h=g=this.ORDER_UNARY_NEGATION);a=this.valueToCode(a,b,g)||f;(0,$.module$exports$Blockly$utils$string.isNumber)(a)?(a=Number(a)+c,d&&(a=-a)):(0c&&(a=a+" - "+-c),d&&(a=c?"-("+a+")":"-"+a),h=Math.floor(h),e=Math.floor(e), -h&&e>=h&&(a="("+a+")"));return a};$.Blockly.JavaScript=module$contents$Blockly$JavaScript_JavaScript;var module$exports$Blockly$JavaScript$variables={};$.Blockly.JavaScript.variables_get=function(a){return[$.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),$.Blockly.JavaScript.ORDER_ATOMIC]}; -$.Blockly.JavaScript.variables_set=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"VALUE",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"0";return $.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" = "+b+";\n"};var module$exports$Blockly$JavaScript$variablesDynamic={};$.Blockly.JavaScript.variables_get_dynamic=$.Blockly.JavaScript.variables_get;$.Blockly.JavaScript.variables_set_dynamic=$.Blockly.JavaScript.variables_set;var module$exports$Blockly$JavaScript$texts={},module$contents$Blockly$JavaScript$texts_strRegExp=/^\s*'([^']|\\')*'\s*$/,module$contents$Blockly$JavaScript$texts_forceString=function(a){return module$contents$Blockly$JavaScript$texts_strRegExp.test(a)?[a,$.Blockly.JavaScript.ORDER_ATOMIC]:["String("+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]},module$contents$Blockly$JavaScript$texts_getSubstringIndex=function(a,b,c){return"FIRST"===b?"0":"FROM_END"===b?a+".length - 1 - "+c:"LAST"===b?a+".length - 1": -c};$.Blockly.JavaScript.text=function(a){return[$.Blockly.JavaScript.quote_(a.getFieldValue("TEXT")),$.Blockly.JavaScript.ORDER_ATOMIC]};$.Blockly.JavaScript.text_multiline=function(a){a=$.Blockly.JavaScript.multiline_quote_(a.getFieldValue("TEXT"));var b=-1!==a.indexOf("+")?$.Blockly.JavaScript.ORDER_ADDITION:$.Blockly.JavaScript.ORDER_ATOMIC;return[a,b]}; -$.Blockly.JavaScript.text_join=function(a){switch(a.itemCount_){case 0:return["''",$.Blockly.JavaScript.ORDER_ATOMIC];case 1:return a=$.Blockly.JavaScript.valueToCode(a,"ADD0",$.Blockly.JavaScript.ORDER_NONE)||"''",module$contents$Blockly$JavaScript$texts_forceString(a);case 2:var b=$.Blockly.JavaScript.valueToCode(a,"ADD0",$.Blockly.JavaScript.ORDER_NONE)||"''";a=$.Blockly.JavaScript.valueToCode(a,"ADD1",$.Blockly.JavaScript.ORDER_NONE)||"''";return[module$contents$Blockly$JavaScript$texts_forceString(b)[0]+ -" + "+module$contents$Blockly$JavaScript$texts_forceString(a)[0],$.Blockly.JavaScript.ORDER_ADDITION];default:b=Array(a.itemCount_);for(var c=0;c 0",$.Blockly.JavaScript.ORDER_RELATIONAL,$.Blockly.JavaScript.ORDER_RELATIONAL],NEGATIVE:[" < 0",$.Blockly.JavaScript.ORDER_RELATIONAL,$.Blockly.JavaScript.ORDER_RELATIONAL], -DIVISIBLE_BY:[null,$.Blockly.JavaScript.ORDER_MODULUS,$.Blockly.JavaScript.ORDER_EQUALITY],PRIME:[null,$.Blockly.JavaScript.ORDER_NONE,$.Blockly.JavaScript.ORDER_FUNCTION_CALL]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value;b=b.next().value;e=$.Blockly.JavaScript.valueToCode(a,"NUMBER_TO_CHECK",e)||"0";"PRIME"===c?a=$.Blockly.JavaScript.provideFunction_("mathIsPrime","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if (n == 2 || n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (isNaN(n) || n <= 1 || n % 1 !== 0 || n % 2 === 0 || n % 3 === 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) {\n if (n % (x - 1) === 0 || n % (x + 1) === 0) {\n return false;\n }\n }\n return true;\n}\n")+ -"("+e+")":"DIVISIBLE_BY"===c?(a=$.Blockly.JavaScript.valueToCode(a,"DIVISOR",$.Blockly.JavaScript.ORDER_MODULUS)||"0",a=e+" % "+a+" === 0"):a=e+d;return[a,b]};$.Blockly.JavaScript.math_change=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"DELTA",$.Blockly.JavaScript.ORDER_ADDITION)||"0";a=$.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE);return a+" = (typeof "+a+" === 'number' ? "+a+" : 0) + "+b+";\n"}; -$.Blockly.JavaScript.math_round=$.Blockly.JavaScript.math_single;$.Blockly.JavaScript.math_trig=$.Blockly.JavaScript.math_single; -$.Blockly.JavaScript.math_on_list=function(a){var b=a.getFieldValue("OP");switch(b){case "SUM":a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_MEMBER)||"[]";a+=".reduce(function(x, y) {return x + y;})";break;case "MIN":a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a="Math.min.apply(null, "+a+")";break;case "MAX":a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a="Math.max.apply(null, "+a+")";break;case "AVERAGE":b= -$.Blockly.JavaScript.provideFunction_("mathMean","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(myList) {\n return myList.reduce(function(x, y) {return x + y;}) / myList.length;\n}\n");a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MEDIAN":b=$.Blockly.JavaScript.provideFunction_("mathMedian","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(myList) {\n var localList = myList.filter(function (x) {return typeof x === 'number';});\n if (!localList.length) return null;\n localList.sort(function(a, b) {return b - a;});\n if (localList.length % 2 === 0) {\n return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2;\n } else {\n return localList[(localList.length - 1) / 2];\n }\n}\n"); -a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MODE":b=$.Blockly.JavaScript.provideFunction_("mathModes","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(values) {\n var modes = [];\n var counts = [];\n var maxCount = 0;\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var found = false;\n var thisCount;\n for (var j = 0; j < counts.length; j++) {\n if (counts[j][0] === value) {\n thisCount = ++counts[j][1];\n found = true;\n break;\n }\n }\n if (!found) {\n counts.push([value, 1]);\n thisCount = 1;\n }\n maxCount = Math.max(thisCount, maxCount);\n }\n for (var j = 0; j < counts.length; j++) {\n if (counts[j][1] === maxCount) {\n modes.push(counts[j][0]);\n }\n }\n return modes;\n}\n"); -a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "STD_DEV":b=$.Blockly.JavaScript.provideFunction_("mathStandardDeviation","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(numbers) {\n var n = numbers.length;\n if (!n) return null;\n var mean = numbers.reduce(function(x, y) {return x + y;}) / n;\n var variance = 0;\n for (var j = 0; j < n; j++) {\n variance += Math.pow(numbers[j] - mean, 2);\n }\n variance = variance / n;\n return Math.sqrt(variance);\n}\n"); -a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "RANDOM":b=$.Blockly.JavaScript.provideFunction_("mathRandomList","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(list) {\n var x = Math.floor(Math.random() * list.length);\n return list[x];\n}\n");a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;default:throw Error("Unknown operator: "+b);}return[a,$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; -$.Blockly.JavaScript.math_modulo=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"DIVIDEND",$.Blockly.JavaScript.ORDER_MODULUS)||"0";a=$.Blockly.JavaScript.valueToCode(a,"DIVISOR",$.Blockly.JavaScript.ORDER_MODULUS)||"0";return[b+" % "+a,$.Blockly.JavaScript.ORDER_MODULUS]}; -$.Blockly.JavaScript.math_constrain=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"VALUE",$.Blockly.JavaScript.ORDER_NONE)||"0",c=$.Blockly.JavaScript.valueToCode(a,"LOW",$.Blockly.JavaScript.ORDER_NONE)||"0";a=$.Blockly.JavaScript.valueToCode(a,"HIGH",$.Blockly.JavaScript.ORDER_NONE)||"Infinity";return["Math.min(Math.max("+b+", "+c+"), "+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; -$.Blockly.JavaScript.math_random_int=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"FROM",$.Blockly.JavaScript.ORDER_NONE)||"0";a=$.Blockly.JavaScript.valueToCode(a,"TO",$.Blockly.JavaScript.ORDER_NONE)||"0";return[$.Blockly.JavaScript.provideFunction_("mathRandomInt","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(a, b) {\n if (a > b) {\n // Swap a and b to ensure a is smaller.\n var c = a;\n a = b;\n b = c;\n }\n return Math.floor(Math.random() * (b - a + 1) + a);\n}\n")+ -"("+b+", "+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};$.Blockly.JavaScript.math_random_float=function(a){return["Math.random()",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};$.Blockly.JavaScript.math_atan2=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"X",$.Blockly.JavaScript.ORDER_NONE)||"0";return["Math.atan2("+($.Blockly.JavaScript.valueToCode(a,"Y",$.Blockly.JavaScript.ORDER_NONE)||"0")+", "+b+") / Math.PI * 180",$.Blockly.JavaScript.ORDER_DIVISION]};var module$exports$Blockly$JavaScript$loops={}; -$.Blockly.JavaScript.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(Number(a.getFieldValue("TIMES"))):$.Blockly.JavaScript.valueToCode(a,"TIMES",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"0";var c=$.Blockly.JavaScript.statementToCode(a,"DO");c=$.Blockly.JavaScript.addLoopTrap(c,a);a="";var d=$.Blockly.JavaScript.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE),e=b;b.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(b)||(e=$.Blockly.JavaScript.nameDB_.getDistinctName("repeat_end", -$.module$exports$Blockly$Names.NameType.VARIABLE),a+="var "+e+" = "+b+";\n");return a+("for (var "+d+" = 0; "+d+" < "+e+"; "+d+"++) {\n"+c+"}\n")};$.Blockly.JavaScript.controls_repeat=$.Blockly.JavaScript.controls_repeat_ext; -$.Blockly.JavaScript.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.JavaScript.valueToCode(a,"BOOL",b?$.Blockly.JavaScript.ORDER_LOGICAL_NOT:$.Blockly.JavaScript.ORDER_NONE)||"false",d=$.Blockly.JavaScript.statementToCode(a,"DO");d=$.Blockly.JavaScript.addLoopTrap(d,a);b&&(c="!"+c);return"while ("+c+") {\n"+d+"}\n"}; -$.Blockly.JavaScript.controls_for=function(a){var b=$.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.JavaScript.valueToCode(a,"FROM",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"0",d=$.Blockly.JavaScript.valueToCode(a,"TO",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"0",e=$.Blockly.JavaScript.valueToCode(a,"BY",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"1",f=$.Blockly.JavaScript.statementToCode(a,"DO");f=$.Blockly.JavaScript.addLoopTrap(f, -a);if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&&(0,$.module$exports$Blockly$utils$string.isNumber)(d)&&(0,$.module$exports$Blockly$utils$string.isNumber)(e)){var g=Number(c)<=Number(d);a="for ("+b+" = "+c+"; "+b+(g?" <= ":" >= ")+d+"; "+b;b=Math.abs(Number(e));a=(1===b?a+(g?"++":"--"):a+((g?" += ":" -= ")+b))+(") {\n"+f+"}\n")}else a="",g=c,c.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(c)||(g=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_start",$.module$exports$Blockly$Names.NameType.VARIABLE), -a+="var "+g+" = "+c+";\n"),c=d,d.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(d)||(c=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_end",$.module$exports$Blockly$Names.NameType.VARIABLE),a+="var "+c+" = "+d+";\n"),d=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_inc",$.module$exports$Blockly$Names.NameType.VARIABLE),a+="var "+d+" = ",a=(0,$.module$exports$Blockly$utils$string.isNumber)(e)?a+(Math.abs(e)+";\n"):a+("Math.abs("+e+");\n"),a=a+("if ("+g+" > "+c+") {\n")+($.Blockly.JavaScript.INDENT+ -d+" = -"+d+";\n"),a+="}\n",a+="for ("+b+" = "+g+"; "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+"; "+b+" += "+d+") {\n"+f+"}\n";return a}; -$.Blockly.JavaScript.controls_forEach=function(a){var b=$.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"[]",d=$.Blockly.JavaScript.statementToCode(a,"DO");d=$.Blockly.JavaScript.addLoopTrap(d,a);a="";var e=c;c.match(/^\w+$/)||(e=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_list",$.module$exports$Blockly$Names.NameType.VARIABLE),a+="var "+e+" = "+c+ -";\n");c=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_index",$.module$exports$Blockly$Names.NameType.VARIABLE);d=$.Blockly.JavaScript.INDENT+b+" = "+e+"["+c+"];\n"+d;return a+("for (var "+c+" in "+e+") {\n"+d+"}\n")}; -$.Blockly.JavaScript.controls_flow_statements=function(a){var b="";$.Blockly.JavaScript.STATEMENT_PREFIX&&(b+=$.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_PREFIX,a));$.Blockly.JavaScript.STATEMENT_SUFFIX&&(b+=$.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_SUFFIX,a));if($.Blockly.JavaScript.STATEMENT_PREFIX){var c=a.getSurroundLoop();c&&!c.suppressPrefixSuffix&&(b+=$.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_PREFIX,c))}switch(a.getFieldValue("FLOW")){case "BREAK":return b+ -"break;\n";case "CONTINUE":return b+"continue;\n"}throw Error("Unknown flow statement.");};var module$exports$Blockly$JavaScript$logic={}; -$.Blockly.JavaScript.controls_if=function(a){var b=0,c="";$.Blockly.JavaScript.STATEMENT_PREFIX&&(c+=$.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_PREFIX,a));do{var d=$.Blockly.JavaScript.valueToCode(a,"IF"+b,$.Blockly.JavaScript.ORDER_NONE)||"false",e=$.Blockly.JavaScript.statementToCode(a,"DO"+b);$.Blockly.JavaScript.STATEMENT_SUFFIX&&(e=$.Blockly.JavaScript.prefixLines($.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_SUFFIX,a),$.Blockly.JavaScript.INDENT)+e);c+=(0",GTE:">="}[a.getFieldValue("OP")],c="=="===b||"!="===b?$.Blockly.JavaScript.ORDER_EQUALITY:$.Blockly.JavaScript.ORDER_RELATIONAL,d=$.Blockly.JavaScript.valueToCode(a,"A",c)||"0";a=$.Blockly.JavaScript.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; -$.Blockly.JavaScript.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"&&":"||",c="&&"===b?$.Blockly.JavaScript.ORDER_LOGICAL_AND:$.Blockly.JavaScript.ORDER_LOGICAL_OR,d=$.Blockly.JavaScript.valueToCode(a,"A",c);a=$.Blockly.JavaScript.valueToCode(a,"B",c);if(d||a){var e="&&"===b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]}; -$.Blockly.JavaScript.logic_negate=function(a){var b=$.Blockly.JavaScript.ORDER_LOGICAL_NOT;return["!"+($.Blockly.JavaScript.valueToCode(a,"BOOL",b)||"true"),b]};$.Blockly.JavaScript.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"true":"false",$.Blockly.JavaScript.ORDER_ATOMIC]};$.Blockly.JavaScript.logic_null=function(a){return["null",$.Blockly.JavaScript.ORDER_ATOMIC]}; -$.Blockly.JavaScript.logic_ternary=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"IF",$.Blockly.JavaScript.ORDER_CONDITIONAL)||"false",c=$.Blockly.JavaScript.valueToCode(a,"THEN",$.Blockly.JavaScript.ORDER_CONDITIONAL)||"null";a=$.Blockly.JavaScript.valueToCode(a,"ELSE",$.Blockly.JavaScript.ORDER_CONDITIONAL)||"null";return[b+" ? "+c+" : "+a,$.Blockly.JavaScript.ORDER_CONDITIONAL]};var module$exports$Blockly$JavaScript$lists={};$.Blockly.JavaScript.lists_create_empty=function(a){return["[]",$.Blockly.JavaScript.ORDER_ATOMIC]};$.Blockly.JavaScript.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c b.toString() ? 1 : -1; },\n 'IGNORE_CASE': function(a, b) {\n return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; },\n };\n var compare = compareFuncs[type];\n return function(a, b) { return compare(a, b) * direction; };\n}\n "); -return[b+".slice().sort("+d+'("'+a+'", '+c+"))",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};$.Blockly.JavaScript.lists_split=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"INPUT",$.Blockly.JavaScript.ORDER_MEMBER),c=$.Blockly.JavaScript.valueToCode(a,"DELIM",$.Blockly.JavaScript.ORDER_NONE)||"''";a=a.getFieldValue("MODE");if("SPLIT"===a)b||(b="''"),a="split";else if("JOIN"===a)b||(b="[]"),a="join";else throw Error("Unknown mode: "+a);return[b+"."+a+"("+c+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; -$.Blockly.JavaScript.lists_reverse=function(a){return[($.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_FUNCTION_CALL)||"[]")+".slice().reverse()",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};var module$exports$Blockly$JavaScript$colour={};$.Blockly.JavaScript.colour_picker=function(a){return[$.Blockly.JavaScript.quote_(a.getFieldValue("COLOUR")),$.Blockly.JavaScript.ORDER_ATOMIC]};$.Blockly.JavaScript.colour_random=function(a){return[$.Blockly.JavaScript.provideFunction_("colourRandom","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"() {\n var num = Math.floor(Math.random() * Math.pow(2, 24));\n return '#' + ('00000' + num.toString(16)).substr(-6);\n}\n")+"()",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; -$.Blockly.JavaScript.colour_rgb=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"RED",$.Blockly.JavaScript.ORDER_NONE)||0,c=$.Blockly.JavaScript.valueToCode(a,"GREEN",$.Blockly.JavaScript.ORDER_NONE)||0;a=$.Blockly.JavaScript.valueToCode(a,"BLUE",$.Blockly.JavaScript.ORDER_NONE)||0;return[$.Blockly.JavaScript.provideFunction_("colourRgb","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(r, g, b) {\n r = Math.max(Math.min(Number(r), 100), 0) * 2.55;\n g = Math.max(Math.min(Number(g), 100), 0) * 2.55;\n b = Math.max(Math.min(Number(b), 100), 0) * 2.55;\n r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2);\n g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2);\n b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2);\n return '#' + r + g + b;\n}\n")+ -"("+b+", "+c+", "+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; -$.Blockly.JavaScript.colour_blend=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"COLOUR1",$.Blockly.JavaScript.ORDER_NONE)||"'#000000'",c=$.Blockly.JavaScript.valueToCode(a,"COLOUR2",$.Blockly.JavaScript.ORDER_NONE)||"'#000000'";a=$.Blockly.JavaScript.valueToCode(a,"RATIO",$.Blockly.JavaScript.ORDER_NONE)||.5;return[$.Blockly.JavaScript.provideFunction_("colourBlend","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(c1, c2, ratio) {\n ratio = Math.max(Math.min(Number(ratio), 1), 0);\n var r1 = parseInt(c1.substring(1, 3), 16);\n var g1 = parseInt(c1.substring(3, 5), 16);\n var b1 = parseInt(c1.substring(5, 7), 16);\n var r2 = parseInt(c2.substring(1, 3), 16);\n var g2 = parseInt(c2.substring(3, 5), 16);\n var b2 = parseInt(c2.substring(5, 7), 16);\n var r = Math.round(r1 * (1 - ratio) + r2 * ratio);\n var g = Math.round(g1 * (1 - ratio) + g2 * ratio);\n var b = Math.round(b1 * (1 - ratio) + b2 * ratio);\n r = ('0' + (r || 0).toString(16)).slice(-2);\n g = ('0' + (g || 0).toString(16)).slice(-2);\n b = ('0' + (b || 0).toString(16)).slice(-2);\n return '#' + r + g + b;\n}\n")+ -"("+b+", "+c+", "+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};var module$exports$Blockly$JavaScript$all={}; -$.Blockly.JavaScript.__namespace__=$; -return $.Blockly.JavaScript; -})); - - -//# sourceMappingURL=javascript_compressed.js.map +// Do not edit this file; automatically generated. + +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define(["./blockly_compressed.js"], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(require("./blockly_compressed.js")); + } else { // Browser + var factoryExports = factory(root.Blockly); + root.Blockly.JavaScript = factoryExports; + } +}(this, function(__parent__) { +var $=__parent__.__namespace__; +var module$contents$Blockly$JavaScript_JavaScript=new $.module$exports$Blockly$Generator.Generator("JavaScript");module$contents$Blockly$JavaScript_JavaScript.addReservedWords("break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,new,return,super,switch,this,throw,try,typeof,var,void,while,with,yield,enum,implements,interface,let,package,private,protected,public,static,await,null,true,false,arguments,"+Object.getOwnPropertyNames($.module$exports$Blockly$utils$global.globalThis).join(",")); +module$contents$Blockly$JavaScript_JavaScript.ORDER_ATOMIC=0;module$contents$Blockly$JavaScript_JavaScript.ORDER_NEW=1.1;module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER=1.2;module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL=2;module$contents$Blockly$JavaScript_JavaScript.ORDER_INCREMENT=3;module$contents$Blockly$JavaScript_JavaScript.ORDER_DECREMENT=3;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_NOT=4.1; +module$contents$Blockly$JavaScript_JavaScript.ORDER_UNARY_PLUS=4.2;module$contents$Blockly$JavaScript_JavaScript.ORDER_UNARY_NEGATION=4.3;module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_NOT=4.4;module$contents$Blockly$JavaScript_JavaScript.ORDER_TYPEOF=4.5;module$contents$Blockly$JavaScript_JavaScript.ORDER_VOID=4.6;module$contents$Blockly$JavaScript_JavaScript.ORDER_DELETE=4.7;module$contents$Blockly$JavaScript_JavaScript.ORDER_AWAIT=4.8; +module$contents$Blockly$JavaScript_JavaScript.ORDER_EXPONENTIATION=5;module$contents$Blockly$JavaScript_JavaScript.ORDER_MULTIPLICATION=5.1;module$contents$Blockly$JavaScript_JavaScript.ORDER_DIVISION=5.2;module$contents$Blockly$JavaScript_JavaScript.ORDER_MODULUS=5.3;module$contents$Blockly$JavaScript_JavaScript.ORDER_SUBTRACTION=6.1;module$contents$Blockly$JavaScript_JavaScript.ORDER_ADDITION=6.2;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_SHIFT=7; +module$contents$Blockly$JavaScript_JavaScript.ORDER_RELATIONAL=8;module$contents$Blockly$JavaScript_JavaScript.ORDER_IN=8;module$contents$Blockly$JavaScript_JavaScript.ORDER_INSTANCEOF=8;module$contents$Blockly$JavaScript_JavaScript.ORDER_EQUALITY=9;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_AND=10;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_XOR=11;module$contents$Blockly$JavaScript_JavaScript.ORDER_BITWISE_OR=12; +module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_AND=13;module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_OR=14;module$contents$Blockly$JavaScript_JavaScript.ORDER_CONDITIONAL=15;module$contents$Blockly$JavaScript_JavaScript.ORDER_ASSIGNMENT=16;module$contents$Blockly$JavaScript_JavaScript.ORDER_YIELD=17;module$contents$Blockly$JavaScript_JavaScript.ORDER_COMMA=18;module$contents$Blockly$JavaScript_JavaScript.ORDER_NONE=99; +module$contents$Blockly$JavaScript_JavaScript.ORDER_OVERRIDES=[[module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL,module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER],[module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL,module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL],[module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER,module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER],[module$contents$Blockly$JavaScript_JavaScript.ORDER_MEMBER, +module$contents$Blockly$JavaScript_JavaScript.ORDER_FUNCTION_CALL],[module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_NOT,module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_NOT],[module$contents$Blockly$JavaScript_JavaScript.ORDER_MULTIPLICATION,module$contents$Blockly$JavaScript_JavaScript.ORDER_MULTIPLICATION],[module$contents$Blockly$JavaScript_JavaScript.ORDER_ADDITION,module$contents$Blockly$JavaScript_JavaScript.ORDER_ADDITION],[module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_AND, +module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_AND],[module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_OR,module$contents$Blockly$JavaScript_JavaScript.ORDER_LOGICAL_OR]];module$contents$Blockly$JavaScript_JavaScript.isInitialized=!1; +module$contents$Blockly$JavaScript_JavaScript.init=function(a){Object.getPrototypeOf(this).init.call(this);this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$exports$Blockly$Names.Names(this.RESERVED_WORDS_);this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);for(var b=[],c=(0,$.module$exports$Blockly$Variables.allDeveloperVariables)(a),d=0;dc?h=g=this.ORDER_SUBTRACTION:d&&(h=g=this.ORDER_UNARY_NEGATION);a=this.valueToCode(a,b,g)||f;(0,$.module$exports$Blockly$utils$string.isNumber)(a)?(a=Number(a)+c,d&&(a=-a)):(0c&&(a=a+" - "+-c),d&&(a=c?"-("+a+")":"-"+a),h=Math.floor(h),e=Math.floor(e), +h&&e>=h&&(a="("+a+")"));return a};$.Blockly.JavaScript=module$contents$Blockly$JavaScript_JavaScript;var module$exports$Blockly$JavaScript$variables={};$.Blockly.JavaScript.variables_get=function(a){return[$.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),$.Blockly.JavaScript.ORDER_ATOMIC]}; +$.Blockly.JavaScript.variables_set=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"VALUE",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"0";return $.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" = "+b+";\n"};var module$exports$Blockly$JavaScript$variablesDynamic={};$.Blockly.JavaScript.variables_get_dynamic=$.Blockly.JavaScript.variables_get;$.Blockly.JavaScript.variables_set_dynamic=$.Blockly.JavaScript.variables_set;var module$exports$Blockly$JavaScript$texts={},module$contents$Blockly$JavaScript$texts_strRegExp=/^\s*'([^']|\\')*'\s*$/,module$contents$Blockly$JavaScript$texts_forceString=function(a){return module$contents$Blockly$JavaScript$texts_strRegExp.test(a)?[a,$.Blockly.JavaScript.ORDER_ATOMIC]:["String("+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]},module$contents$Blockly$JavaScript$texts_getSubstringIndex=function(a,b,c){return"FIRST"===b?"0":"FROM_END"===b?a+".length - 1 - "+c:"LAST"===b?a+".length - 1": +c};$.Blockly.JavaScript.text=function(a){return[$.Blockly.JavaScript.quote_(a.getFieldValue("TEXT")),$.Blockly.JavaScript.ORDER_ATOMIC]};$.Blockly.JavaScript.text_multiline=function(a){a=$.Blockly.JavaScript.multiline_quote_(a.getFieldValue("TEXT"));var b=-1!==a.indexOf("+")?$.Blockly.JavaScript.ORDER_ADDITION:$.Blockly.JavaScript.ORDER_ATOMIC;return[a,b]}; +$.Blockly.JavaScript.text_join=function(a){switch(a.itemCount_){case 0:return["''",$.Blockly.JavaScript.ORDER_ATOMIC];case 1:return a=$.Blockly.JavaScript.valueToCode(a,"ADD0",$.Blockly.JavaScript.ORDER_NONE)||"''",module$contents$Blockly$JavaScript$texts_forceString(a);case 2:var b=$.Blockly.JavaScript.valueToCode(a,"ADD0",$.Blockly.JavaScript.ORDER_NONE)||"''";a=$.Blockly.JavaScript.valueToCode(a,"ADD1",$.Blockly.JavaScript.ORDER_NONE)||"''";return[module$contents$Blockly$JavaScript$texts_forceString(b)[0]+ +" + "+module$contents$Blockly$JavaScript$texts_forceString(a)[0],$.Blockly.JavaScript.ORDER_ADDITION];default:b=Array(a.itemCount_);for(var c=0;c 0",$.Blockly.JavaScript.ORDER_RELATIONAL,$.Blockly.JavaScript.ORDER_RELATIONAL],NEGATIVE:[" < 0",$.Blockly.JavaScript.ORDER_RELATIONAL,$.Blockly.JavaScript.ORDER_RELATIONAL], +DIVISIBLE_BY:[null,$.Blockly.JavaScript.ORDER_MODULUS,$.Blockly.JavaScript.ORDER_EQUALITY],PRIME:[null,$.Blockly.JavaScript.ORDER_NONE,$.Blockly.JavaScript.ORDER_FUNCTION_CALL]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value;b=b.next().value;e=$.Blockly.JavaScript.valueToCode(a,"NUMBER_TO_CHECK",e)||"0";"PRIME"===c?a=$.Blockly.JavaScript.provideFunction_("mathIsPrime","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if (n == 2 || n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (isNaN(n) || n <= 1 || n % 1 !== 0 || n % 2 === 0 || n % 3 === 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) {\n if (n % (x - 1) === 0 || n % (x + 1) === 0) {\n return false;\n }\n }\n return true;\n}\n")+ +"("+e+")":"DIVISIBLE_BY"===c?(a=$.Blockly.JavaScript.valueToCode(a,"DIVISOR",$.Blockly.JavaScript.ORDER_MODULUS)||"0",a=e+" % "+a+" === 0"):a=e+d;return[a,b]};$.Blockly.JavaScript.math_change=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"DELTA",$.Blockly.JavaScript.ORDER_ADDITION)||"0";a=$.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE);return a+" = (typeof "+a+" === 'number' ? "+a+" : 0) + "+b+";\n"}; +$.Blockly.JavaScript.math_round=$.Blockly.JavaScript.math_single;$.Blockly.JavaScript.math_trig=$.Blockly.JavaScript.math_single; +$.Blockly.JavaScript.math_on_list=function(a){var b=a.getFieldValue("OP");switch(b){case "SUM":a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_MEMBER)||"[]";a+=".reduce(function(x, y) {return x + y;})";break;case "MIN":a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a="Math.min.apply(null, "+a+")";break;case "MAX":a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a="Math.max.apply(null, "+a+")";break;case "AVERAGE":b= +$.Blockly.JavaScript.provideFunction_("mathMean","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(myList) {\n return myList.reduce(function(x, y) {return x + y;}) / myList.length;\n}\n");a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MEDIAN":b=$.Blockly.JavaScript.provideFunction_("mathMedian","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(myList) {\n var localList = myList.filter(function (x) {return typeof x === 'number';});\n if (!localList.length) return null;\n localList.sort(function(a, b) {return b - a;});\n if (localList.length % 2 === 0) {\n return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2;\n } else {\n return localList[(localList.length - 1) / 2];\n }\n}\n"); +a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MODE":b=$.Blockly.JavaScript.provideFunction_("mathModes","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(values) {\n var modes = [];\n var counts = [];\n var maxCount = 0;\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var found = false;\n var thisCount;\n for (var j = 0; j < counts.length; j++) {\n if (counts[j][0] === value) {\n thisCount = ++counts[j][1];\n found = true;\n break;\n }\n }\n if (!found) {\n counts.push([value, 1]);\n thisCount = 1;\n }\n maxCount = Math.max(thisCount, maxCount);\n }\n for (var j = 0; j < counts.length; j++) {\n if (counts[j][1] === maxCount) {\n modes.push(counts[j][0]);\n }\n }\n return modes;\n}\n"); +a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "STD_DEV":b=$.Blockly.JavaScript.provideFunction_("mathStandardDeviation","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(numbers) {\n var n = numbers.length;\n if (!n) return null;\n var mean = numbers.reduce(function(x, y) {return x + y;}) / n;\n var variance = 0;\n for (var j = 0; j < n; j++) {\n variance += Math.pow(numbers[j] - mean, 2);\n }\n variance = variance / n;\n return Math.sqrt(variance);\n}\n"); +a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "RANDOM":b=$.Blockly.JavaScript.provideFunction_("mathRandomList","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(list) {\n var x = Math.floor(Math.random() * list.length);\n return list[x];\n}\n");a=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_NONE)||"[]";a=b+"("+a+")";break;default:throw Error("Unknown operator: "+b);}return[a,$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; +$.Blockly.JavaScript.math_modulo=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"DIVIDEND",$.Blockly.JavaScript.ORDER_MODULUS)||"0";a=$.Blockly.JavaScript.valueToCode(a,"DIVISOR",$.Blockly.JavaScript.ORDER_MODULUS)||"0";return[b+" % "+a,$.Blockly.JavaScript.ORDER_MODULUS]}; +$.Blockly.JavaScript.math_constrain=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"VALUE",$.Blockly.JavaScript.ORDER_NONE)||"0",c=$.Blockly.JavaScript.valueToCode(a,"LOW",$.Blockly.JavaScript.ORDER_NONE)||"0";a=$.Blockly.JavaScript.valueToCode(a,"HIGH",$.Blockly.JavaScript.ORDER_NONE)||"Infinity";return["Math.min(Math.max("+b+", "+c+"), "+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; +$.Blockly.JavaScript.math_random_int=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"FROM",$.Blockly.JavaScript.ORDER_NONE)||"0";a=$.Blockly.JavaScript.valueToCode(a,"TO",$.Blockly.JavaScript.ORDER_NONE)||"0";return[$.Blockly.JavaScript.provideFunction_("mathRandomInt","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(a, b) {\n if (a > b) {\n // Swap a and b to ensure a is smaller.\n var c = a;\n a = b;\n b = c;\n }\n return Math.floor(Math.random() * (b - a + 1) + a);\n}\n")+ +"("+b+", "+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};$.Blockly.JavaScript.math_random_float=function(a){return["Math.random()",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};$.Blockly.JavaScript.math_atan2=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"X",$.Blockly.JavaScript.ORDER_NONE)||"0";return["Math.atan2("+($.Blockly.JavaScript.valueToCode(a,"Y",$.Blockly.JavaScript.ORDER_NONE)||"0")+", "+b+") / Math.PI * 180",$.Blockly.JavaScript.ORDER_DIVISION]};var module$exports$Blockly$JavaScript$loops={}; +$.Blockly.JavaScript.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(Number(a.getFieldValue("TIMES"))):$.Blockly.JavaScript.valueToCode(a,"TIMES",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"0";var c=$.Blockly.JavaScript.statementToCode(a,"DO");c=$.Blockly.JavaScript.addLoopTrap(c,a);a="";var d=$.Blockly.JavaScript.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE),e=b;b.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(b)||(e=$.Blockly.JavaScript.nameDB_.getDistinctName("repeat_end", +$.module$exports$Blockly$Names.NameType.VARIABLE),a+="var "+e+" = "+b+";\n");return a+("for (var "+d+" = 0; "+d+" < "+e+"; "+d+"++) {\n"+c+"}\n")};$.Blockly.JavaScript.controls_repeat=$.Blockly.JavaScript.controls_repeat_ext; +$.Blockly.JavaScript.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.JavaScript.valueToCode(a,"BOOL",b?$.Blockly.JavaScript.ORDER_LOGICAL_NOT:$.Blockly.JavaScript.ORDER_NONE)||"false",d=$.Blockly.JavaScript.statementToCode(a,"DO");d=$.Blockly.JavaScript.addLoopTrap(d,a);b&&(c="!"+c);return"while ("+c+") {\n"+d+"}\n"}; +$.Blockly.JavaScript.controls_for=function(a){var b=$.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.JavaScript.valueToCode(a,"FROM",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"0",d=$.Blockly.JavaScript.valueToCode(a,"TO",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"0",e=$.Blockly.JavaScript.valueToCode(a,"BY",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"1",f=$.Blockly.JavaScript.statementToCode(a,"DO");f=$.Blockly.JavaScript.addLoopTrap(f, +a);if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&&(0,$.module$exports$Blockly$utils$string.isNumber)(d)&&(0,$.module$exports$Blockly$utils$string.isNumber)(e)){var g=Number(c)<=Number(d);a="for ("+b+" = "+c+"; "+b+(g?" <= ":" >= ")+d+"; "+b;b=Math.abs(Number(e));a=(1===b?a+(g?"++":"--"):a+((g?" += ":" -= ")+b))+(") {\n"+f+"}\n")}else a="",g=c,c.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(c)||(g=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_start",$.module$exports$Blockly$Names.NameType.VARIABLE), +a+="var "+g+" = "+c+";\n"),c=d,d.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(d)||(c=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_end",$.module$exports$Blockly$Names.NameType.VARIABLE),a+="var "+c+" = "+d+";\n"),d=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_inc",$.module$exports$Blockly$Names.NameType.VARIABLE),a+="var "+d+" = ",a=(0,$.module$exports$Blockly$utils$string.isNumber)(e)?a+(Math.abs(e)+";\n"):a+("Math.abs("+e+");\n"),a=a+("if ("+g+" > "+c+") {\n")+($.Blockly.JavaScript.INDENT+ +d+" = -"+d+";\n"),a+="}\n",a+="for ("+b+" = "+g+"; "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+"; "+b+" += "+d+") {\n"+f+"}\n";return a}; +$.Blockly.JavaScript.controls_forEach=function(a){var b=$.Blockly.JavaScript.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_ASSIGNMENT)||"[]",d=$.Blockly.JavaScript.statementToCode(a,"DO");d=$.Blockly.JavaScript.addLoopTrap(d,a);a="";var e=c;c.match(/^\w+$/)||(e=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_list",$.module$exports$Blockly$Names.NameType.VARIABLE),a+="var "+e+" = "+c+ +";\n");c=$.Blockly.JavaScript.nameDB_.getDistinctName(b+"_index",$.module$exports$Blockly$Names.NameType.VARIABLE);d=$.Blockly.JavaScript.INDENT+b+" = "+e+"["+c+"];\n"+d;return a+("for (var "+c+" in "+e+") {\n"+d+"}\n")}; +$.Blockly.JavaScript.controls_flow_statements=function(a){var b="";$.Blockly.JavaScript.STATEMENT_PREFIX&&(b+=$.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_PREFIX,a));$.Blockly.JavaScript.STATEMENT_SUFFIX&&(b+=$.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_SUFFIX,a));if($.Blockly.JavaScript.STATEMENT_PREFIX){var c=a.getSurroundLoop();c&&!c.suppressPrefixSuffix&&(b+=$.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_PREFIX,c))}switch(a.getFieldValue("FLOW")){case "BREAK":return b+ +"break;\n";case "CONTINUE":return b+"continue;\n"}throw Error("Unknown flow statement.");};var module$exports$Blockly$JavaScript$logic={}; +$.Blockly.JavaScript.controls_if=function(a){var b=0,c="";$.Blockly.JavaScript.STATEMENT_PREFIX&&(c+=$.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_PREFIX,a));do{var d=$.Blockly.JavaScript.valueToCode(a,"IF"+b,$.Blockly.JavaScript.ORDER_NONE)||"false",e=$.Blockly.JavaScript.statementToCode(a,"DO"+b);$.Blockly.JavaScript.STATEMENT_SUFFIX&&(e=$.Blockly.JavaScript.prefixLines($.Blockly.JavaScript.injectId($.Blockly.JavaScript.STATEMENT_SUFFIX,a),$.Blockly.JavaScript.INDENT)+e);c+=(0",GTE:">="}[a.getFieldValue("OP")],c="=="===b||"!="===b?$.Blockly.JavaScript.ORDER_EQUALITY:$.Blockly.JavaScript.ORDER_RELATIONAL,d=$.Blockly.JavaScript.valueToCode(a,"A",c)||"0";a=$.Blockly.JavaScript.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; +$.Blockly.JavaScript.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"&&":"||",c="&&"===b?$.Blockly.JavaScript.ORDER_LOGICAL_AND:$.Blockly.JavaScript.ORDER_LOGICAL_OR,d=$.Blockly.JavaScript.valueToCode(a,"A",c);a=$.Blockly.JavaScript.valueToCode(a,"B",c);if(d||a){var e="&&"===b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]}; +$.Blockly.JavaScript.logic_negate=function(a){var b=$.Blockly.JavaScript.ORDER_LOGICAL_NOT;return["!"+($.Blockly.JavaScript.valueToCode(a,"BOOL",b)||"true"),b]};$.Blockly.JavaScript.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"true":"false",$.Blockly.JavaScript.ORDER_ATOMIC]};$.Blockly.JavaScript.logic_null=function(a){return["null",$.Blockly.JavaScript.ORDER_ATOMIC]}; +$.Blockly.JavaScript.logic_ternary=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"IF",$.Blockly.JavaScript.ORDER_CONDITIONAL)||"false",c=$.Blockly.JavaScript.valueToCode(a,"THEN",$.Blockly.JavaScript.ORDER_CONDITIONAL)||"null";a=$.Blockly.JavaScript.valueToCode(a,"ELSE",$.Blockly.JavaScript.ORDER_CONDITIONAL)||"null";return[b+" ? "+c+" : "+a,$.Blockly.JavaScript.ORDER_CONDITIONAL]};var module$exports$Blockly$JavaScript$lists={};$.Blockly.JavaScript.lists_create_empty=function(a){return["[]",$.Blockly.JavaScript.ORDER_ATOMIC]};$.Blockly.JavaScript.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c b.toString() ? 1 : -1; },\n 'IGNORE_CASE': function(a, b) {\n return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; },\n };\n var compare = compareFuncs[type];\n return function(a, b) { return compare(a, b) * direction; };\n}\n "); +return[b+".slice().sort("+d+'("'+a+'", '+c+"))",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};$.Blockly.JavaScript.lists_split=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"INPUT",$.Blockly.JavaScript.ORDER_MEMBER),c=$.Blockly.JavaScript.valueToCode(a,"DELIM",$.Blockly.JavaScript.ORDER_NONE)||"''";a=a.getFieldValue("MODE");if("SPLIT"===a)b||(b="''"),a="split";else if("JOIN"===a)b||(b="[]"),a="join";else throw Error("Unknown mode: "+a);return[b+"."+a+"("+c+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; +$.Blockly.JavaScript.lists_reverse=function(a){return[($.Blockly.JavaScript.valueToCode(a,"LIST",$.Blockly.JavaScript.ORDER_FUNCTION_CALL)||"[]")+".slice().reverse()",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};var module$exports$Blockly$JavaScript$colour={};$.Blockly.JavaScript.colour_picker=function(a){return[$.Blockly.JavaScript.quote_(a.getFieldValue("COLOUR")),$.Blockly.JavaScript.ORDER_ATOMIC]};$.Blockly.JavaScript.colour_random=function(a){return[$.Blockly.JavaScript.provideFunction_("colourRandom","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"() {\n var num = Math.floor(Math.random() * Math.pow(2, 24));\n return '#' + ('00000' + num.toString(16)).substr(-6);\n}\n")+"()",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; +$.Blockly.JavaScript.colour_rgb=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"RED",$.Blockly.JavaScript.ORDER_NONE)||0,c=$.Blockly.JavaScript.valueToCode(a,"GREEN",$.Blockly.JavaScript.ORDER_NONE)||0;a=$.Blockly.JavaScript.valueToCode(a,"BLUE",$.Blockly.JavaScript.ORDER_NONE)||0;return[$.Blockly.JavaScript.provideFunction_("colourRgb","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(r, g, b) {\n r = Math.max(Math.min(Number(r), 100), 0) * 2.55;\n g = Math.max(Math.min(Number(g), 100), 0) * 2.55;\n b = Math.max(Math.min(Number(b), 100), 0) * 2.55;\n r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2);\n g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2);\n b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2);\n return '#' + r + g + b;\n}\n")+ +"("+b+", "+c+", "+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]}; +$.Blockly.JavaScript.colour_blend=function(a){var b=$.Blockly.JavaScript.valueToCode(a,"COLOUR1",$.Blockly.JavaScript.ORDER_NONE)||"'#000000'",c=$.Blockly.JavaScript.valueToCode(a,"COLOUR2",$.Blockly.JavaScript.ORDER_NONE)||"'#000000'";a=$.Blockly.JavaScript.valueToCode(a,"RATIO",$.Blockly.JavaScript.ORDER_NONE)||.5;return[$.Blockly.JavaScript.provideFunction_("colourBlend","\nfunction "+$.Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_+"(c1, c2, ratio) {\n ratio = Math.max(Math.min(Number(ratio), 1), 0);\n var r1 = parseInt(c1.substring(1, 3), 16);\n var g1 = parseInt(c1.substring(3, 5), 16);\n var b1 = parseInt(c1.substring(5, 7), 16);\n var r2 = parseInt(c2.substring(1, 3), 16);\n var g2 = parseInt(c2.substring(3, 5), 16);\n var b2 = parseInt(c2.substring(5, 7), 16);\n var r = Math.round(r1 * (1 - ratio) + r2 * ratio);\n var g = Math.round(g1 * (1 - ratio) + g2 * ratio);\n var b = Math.round(b1 * (1 - ratio) + b2 * ratio);\n r = ('0' + (r || 0).toString(16)).slice(-2);\n g = ('0' + (g || 0).toString(16)).slice(-2);\n b = ('0' + (b || 0).toString(16)).slice(-2);\n return '#' + r + g + b;\n}\n")+ +"("+b+", "+c+", "+a+")",$.Blockly.JavaScript.ORDER_FUNCTION_CALL]};var module$exports$Blockly$JavaScript$all={}; +$.Blockly.JavaScript.__namespace__=$; +return $.Blockly.JavaScript; +})); + + +//# sourceMappingURL=javascript_compressed.js.map diff --git a/jsconfig.json b/jsconfig.json index ba31d905bab..9f54a04b19e 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,12 +1,12 @@ -{ - "compilerOptions": { - "target": "es5" - }, - "include": [ - "core/**/**/*", - "typings/blockly.d.ts" - ], - "exclude": [ - "node_modules" - ] -} +{ + "compilerOptions": { + "target": "es5" + }, + "include": [ + "core/**/**/*", + "typings/blockly.d.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/lua_compressed.js b/lua_compressed.js index 8295384e4b5..d944a2c3c26 100644 --- a/lua_compressed.js +++ b/lua_compressed.js @@ -1,98 +1,98 @@ -// Do not edit this file; automatically generated. - -/* eslint-disable */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { // AMD - define(["./blockly_compressed.js"], factory); - } else if (typeof exports === 'object') { // Node.js - module.exports = factory(require("./blockly_compressed.js")); - } else { // Browser - var factoryExports = factory(root.Blockly); - root.Blockly.Lua = factoryExports; - } -}(this, function(__parent__) { -var $=__parent__.__namespace__; -var module$contents$Blockly$Lua_Lua=new $.module$exports$Blockly$Generator.Generator("Lua");module$contents$Blockly$Lua_Lua.addReservedWords("_,__inext,assert,bit,colors,colours,coroutine,disk,dofile,error,fs,fetfenv,getmetatable,gps,help,io,ipairs,keys,loadfile,loadstring,math,native,next,os,paintutils,pairs,parallel,pcall,peripheral,print,printError,rawequal,rawget,rawset,read,rednet,redstone,rs,select,setfenv,setmetatable,sleep,string,table,term,textutils,tonumber,tostring,turtle,type,unpack,vector,write,xpcall,_VERSION,__indext,HTTP,and,break,do,else,elseif,end,false,for,function,if,in,local,nil,not,or,repeat,return,then,true,until,while,add,sub,mul,div,mod,pow,unm,concat,len,eq,lt,le,index,newindex,call,assert,collectgarbage,dofile,error,_G,getmetatable,inpairs,load,loadfile,next,pairs,pcall,print,rawequal,rawget,rawlen,rawset,select,setmetatable,tonumber,tostring,type,_VERSION,xpcall,require,package,string,table,math,bit32,io,file,os,debug"); -module$contents$Blockly$Lua_Lua.ORDER_ATOMIC=0;module$contents$Blockly$Lua_Lua.ORDER_HIGH=1;module$contents$Blockly$Lua_Lua.ORDER_EXPONENTIATION=2;module$contents$Blockly$Lua_Lua.ORDER_UNARY=3;module$contents$Blockly$Lua_Lua.ORDER_MULTIPLICATIVE=4;module$contents$Blockly$Lua_Lua.ORDER_ADDITIVE=5;module$contents$Blockly$Lua_Lua.ORDER_CONCATENATION=6;module$contents$Blockly$Lua_Lua.ORDER_RELATIONAL=7;module$contents$Blockly$Lua_Lua.ORDER_AND=8;module$contents$Blockly$Lua_Lua.ORDER_OR=9; -module$contents$Blockly$Lua_Lua.ORDER_NONE=99;module$contents$Blockly$Lua_Lua.isInitialized=!1;module$contents$Blockly$Lua_Lua.init=function(a){Object.getPrototypeOf(this).init.call(this);this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$exports$Blockly$Names.Names(this.RESERVED_WORDS_);this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);this.isInitialized=!0}; -module$contents$Blockly$Lua_Lua.finish=function(a){var b=(0,$.module$exports$Blockly$utils$object.values)(this.definitions_);a=Object.getPrototypeOf(this).finish.call(this,a);this.isInitialized=!1;this.nameDB_.reset();return b.join("\n\n")+"\n\n\n"+a};module$contents$Blockly$Lua_Lua.scrubNakedValue=function(a){return"local _ = "+a+"\n"};module$contents$Blockly$Lua_Lua.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"}; -module$contents$Blockly$Lua_Lua.multiline_quote_=function(a){return a.split(/\n/g).map(this.quote_).join(" .. '\\n' ..\n")}; -module$contents$Blockly$Lua_Lua.scrub_=function(a,b,c){var d="";if(!a.outputConnection||!a.outputConnection.targetConnection){var e=a.getCommentText();e&&(e=(0,$.module$exports$Blockly$utils$string.wrap)(e,this.COMMENT_WRAP-3),d+=this.prefixLines(e,"-- ")+"\n");for(var f=0;fa?$.Blockly.Lua.ORDER_UNARY:$.Blockly.Lua.ORDER_ATOMIC]}; -$.Blockly.Lua.math_arithmetic=function(a){var b={ADD:[" + ",$.Blockly.Lua.ORDER_ADDITIVE],MINUS:[" - ",$.Blockly.Lua.ORDER_ADDITIVE],MULTIPLY:[" * ",$.Blockly.Lua.ORDER_MULTIPLICATIVE],DIVIDE:[" / ",$.Blockly.Lua.ORDER_MULTIPLICATIVE],POWER:[" ^ ",$.Blockly.Lua.ORDER_EXPONENTIATION]}[a.getFieldValue("OP")],c=b[0];b=b[1];var d=$.Blockly.Lua.valueToCode(a,"A",b)||"0";a=$.Blockly.Lua.valueToCode(a,"B",b)||"0";return[d+c+a,b]}; -$.Blockly.Lua.math_single=function(a){var b=a.getFieldValue("OP");if("NEG"===b)return a=$.Blockly.Lua.valueToCode(a,"NUM",$.Blockly.Lua.ORDER_UNARY)||"0",["-"+a,$.Blockly.Lua.ORDER_UNARY];if("POW10"===b)return a=$.Blockly.Lua.valueToCode(a,"NUM",$.Blockly.Lua.ORDER_EXPONENTIATION)||"0",["10 ^ "+a,$.Blockly.Lua.ORDER_EXPONENTIATION];a="ROUND"===b?$.Blockly.Lua.valueToCode(a,"NUM",$.Blockly.Lua.ORDER_ADDITIVE)||"0":$.Blockly.Lua.valueToCode(a,"NUM",$.Blockly.Lua.ORDER_NONE)||"0";switch(b){case "ABS":b= -"math.abs("+a+")";break;case "ROOT":b="math.sqrt("+a+")";break;case "LN":b="math.log("+a+")";break;case "LOG10":b="math.log("+a+", 10)";break;case "EXP":b="math.exp("+a+")";break;case "ROUND":b="math.floor("+a+" + .5)";break;case "ROUNDUP":b="math.ceil("+a+")";break;case "ROUNDDOWN":b="math.floor("+a+")";break;case "SIN":b="math.sin(math.rad("+a+"))";break;case "COS":b="math.cos(math.rad("+a+"))";break;case "TAN":b="math.tan(math.rad("+a+"))";break;case "ASIN":b="math.deg(math.asin("+a+"))";break; -case "ACOS":b="math.deg(math.acos("+a+"))";break;case "ATAN":b="math.deg(math.atan("+a+"))";break;default:throw Error("Unknown math operator: "+b);}return[b,$.Blockly.Lua.ORDER_HIGH]}; -$.Blockly.Lua.math_constant=function(a){return{PI:["math.pi",$.Blockly.Lua.ORDER_HIGH],E:["math.exp(1)",$.Blockly.Lua.ORDER_HIGH],GOLDEN_RATIO:["(1 + math.sqrt(5)) / 2",$.Blockly.Lua.ORDER_MULTIPLICATIVE],SQRT2:["math.sqrt(2)",$.Blockly.Lua.ORDER_HIGH],SQRT1_2:["math.sqrt(1 / 2)",$.Blockly.Lua.ORDER_HIGH],INFINITY:["math.huge",$.Blockly.Lua.ORDER_HIGH]}[a.getFieldValue("CONSTANT")]}; -$.Blockly.Lua.math_number_property=function(a){var b={EVEN:[" % 2 == 0",$.Blockly.Lua.ORDER_MULTIPLICATIVE,$.Blockly.Lua.ORDER_RELATIONAL],ODD:[" % 2 == 1",$.Blockly.Lua.ORDER_MULTIPLICATIVE,$.Blockly.Lua.ORDER_RELATIONAL],WHOLE:[" % 1 == 0",$.Blockly.Lua.ORDER_MULTIPLICATIVE,$.Blockly.Lua.ORDER_RELATIONAL],POSITIVE:[" > 0",$.Blockly.Lua.ORDER_RELATIONAL,$.Blockly.Lua.ORDER_RELATIONAL],NEGATIVE:[" < 0",$.Blockly.Lua.ORDER_RELATIONAL,$.Blockly.Lua.ORDER_RELATIONAL],DIVISIBLE_BY:[null,$.Blockly.Lua.ORDER_MULTIPLICATIVE, -$.Blockly.Lua.ORDER_RELATIONAL],PRIME:[null,$.Blockly.Lua.ORDER_NONE,$.Blockly.Lua.ORDER_HIGH]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value;b=b.next().value;e=$.Blockly.Lua.valueToCode(a,"NUMBER_TO_CHECK",e)||"0";if("PRIME"===c)a=$.Blockly.Lua.provideFunction_("math_isPrime","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(n)\n -- https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if n == 2 or n == 3 then\n return true\n end\n -- False if n is NaN, negative, is 1, or not whole.\n -- And false if n is divisible by 2 or 3.\n if not(n > 1) or n % 1 ~= 0 or n % 2 == 0 or n % 3 == 0 then\n return false\n end\n -- Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for x = 6, math.sqrt(n) + 1.5, 6 do\n if n % (x - 1) == 0 or n % (x + 1) == 0 then\n return false\n end\n end\n return true\nend\n")+ -"("+e+")";else if("DIVISIBLE_BY"===c){a=$.Blockly.Lua.valueToCode(a,"DIVISOR",$.Blockly.Lua.ORDER_MULTIPLICATIVE)||"0";if("0"===a)return["nil",$.Blockly.Lua.ORDER_ATOMIC];a=e+" % "+a+" == 0"}else a=e+d;return[a,b]};$.Blockly.Lua.math_change=function(a){var b=$.Blockly.Lua.valueToCode(a,"DELTA",$.Blockly.Lua.ORDER_ADDITIVE)||"0";a=$.Blockly.Lua.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE);return a+" = "+a+" + "+b+"\n"};$.Blockly.Lua.math_round=$.Blockly.Lua.math_single; -$.Blockly.Lua.math_trig=$.Blockly.Lua.math_single; -$.Blockly.Lua.math_on_list=function(a){function b(){return $.Blockly.Lua.provideFunction_("math_sum","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n local result = 0\n for _, v in ipairs(t) do\n result = result + v\n end\n return result\nend\n")}var c=a.getFieldValue("OP");a=$.Blockly.Lua.valueToCode(a,"LIST",$.Blockly.Lua.ORDER_NONE)||"{}";switch(c){case "SUM":c=b();break;case "MIN":c=$.Blockly.Lua.provideFunction_("math_min","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+ -"(t)\n if #t == 0 then\n return 0\n end\n local result = math.huge\n for _, v in ipairs(t) do\n if v < result then\n result = v\n end\n end\n return result\nend\n");break;case "AVERAGE":c=$.Blockly.Lua.provideFunction_("math_average","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n if #t == 0 then\n return 0\n end\n return "+b()+"(t) / #t\nend\n");break;case "MAX":c=$.Blockly.Lua.provideFunction_("math_max","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+ -"(t)\n if #t == 0 then\n return 0\n end\n local result = -math.huge\n for _, v in ipairs(t) do\n if v > result then\n result = v\n end\n end\n return result\nend\n");break;case "MEDIAN":c=$.Blockly.Lua.provideFunction_("math_median","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n -- Source: http://lua-users.org/wiki/SimpleStats\n if #t == 0 then\n return 0\n end\n local temp = {}\n for _, v in ipairs(t) do\n if type(v) == 'number' then\n table.insert(temp, v)\n end\n end\n table.sort(temp)\n if #temp % 2 == 0 then\n return (temp[#temp / 2] + temp[(#temp / 2) + 1]) / 2\n else\n return temp[math.ceil(#temp / 2)]\n end\nend\n"); -break;case "MODE":c=$.Blockly.Lua.provideFunction_("math_modes","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n -- Source: http://lua-users.org/wiki/SimpleStats\n local counts = {}\n for _, v in ipairs(t) do\n if counts[v] == nil then\n counts[v] = 1\n else\n counts[v] = counts[v] + 1\n end\n end\n local biggestCount = 0\n for _, v in pairs(counts) do\n if v > biggestCount then\n biggestCount = v\n end\n end\n local temp = {}\n for k, v in pairs(counts) do\n if v == biggestCount then\n table.insert(temp, k)\n end\n end\n return temp\nend\n"); -break;case "STD_DEV":c=$.Blockly.Lua.provideFunction_("math_standard_deviation","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n local m\n local vm\n local total = 0\n local count = 0\n local result\n m = #t == 0 and 0 or "+b()+"(t) / #t\n for _, v in ipairs(t) do\n if type(v) == 'number' then\n vm = v - m\n total = total + (vm * vm)\n count = count + 1\n end\n end\n result = math.sqrt(total / (count-1))\n return result\nend\n");break;case "RANDOM":c=$.Blockly.Lua.provideFunction_("math_random_list", -"\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n if #t == 0 then\n return nil\n end\n return t[math.random(#t)]\nend\n");break;default:throw Error("Unknown operator: "+c);}return[c+"("+a+")",$.Blockly.Lua.ORDER_HIGH]};$.Blockly.Lua.math_modulo=function(a){var b=$.Blockly.Lua.valueToCode(a,"DIVIDEND",$.Blockly.Lua.ORDER_MULTIPLICATIVE)||"0";a=$.Blockly.Lua.valueToCode(a,"DIVISOR",$.Blockly.Lua.ORDER_MULTIPLICATIVE)||"0";return[b+" % "+a,$.Blockly.Lua.ORDER_MULTIPLICATIVE]}; -$.Blockly.Lua.math_constrain=function(a){var b=$.Blockly.Lua.valueToCode(a,"VALUE",$.Blockly.Lua.ORDER_NONE)||"0",c=$.Blockly.Lua.valueToCode(a,"LOW",$.Blockly.Lua.ORDER_NONE)||"-math.huge";a=$.Blockly.Lua.valueToCode(a,"HIGH",$.Blockly.Lua.ORDER_NONE)||"math.huge";return["math.min(math.max("+b+", "+c+"), "+a+")",$.Blockly.Lua.ORDER_HIGH]}; -$.Blockly.Lua.math_random_int=function(a){var b=$.Blockly.Lua.valueToCode(a,"FROM",$.Blockly.Lua.ORDER_NONE)||"0";a=$.Blockly.Lua.valueToCode(a,"TO",$.Blockly.Lua.ORDER_NONE)||"0";return["math.random("+b+", "+a+")",$.Blockly.Lua.ORDER_HIGH]};$.Blockly.Lua.math_random_float=function(a){return["math.random()",$.Blockly.Lua.ORDER_HIGH]}; -$.Blockly.Lua.math_atan2=function(a){var b=$.Blockly.Lua.valueToCode(a,"X",$.Blockly.Lua.ORDER_NONE)||"0";return["math.deg(math.atan2("+($.Blockly.Lua.valueToCode(a,"Y",$.Blockly.Lua.ORDER_NONE)||"0")+", "+b+"))",$.Blockly.Lua.ORDER_HIGH]};var module$exports$Blockly$Lua$loops={},module$contents$Blockly$Lua$loops_CONTINUE_STATEMENT="goto continue\n",module$contents$Blockly$Lua$loops_addContinueLabel=function(a){return-1!==a.indexOf(module$contents$Blockly$Lua$loops_CONTINUE_STATEMENT)?a+$.Blockly.Lua.INDENT+"::continue::\n":a}; -$.Blockly.Lua.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(Number(a.getFieldValue("TIMES"))):$.Blockly.Lua.valueToCode(a,"TIMES",$.Blockly.Lua.ORDER_NONE)||"0";b=(0,$.module$exports$Blockly$utils$string.isNumber)(b)?parseInt(b,10):"math.floor("+b+")";var c=$.Blockly.Lua.statementToCode(a,"DO");c=$.Blockly.Lua.addLoopTrap(c,a);c=module$contents$Blockly$Lua$loops_addContinueLabel(c);return"for "+$.Blockly.Lua.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE)+ -" = 1, "+b+" do\n"+c+"end\n"};$.Blockly.Lua.controls_repeat=$.Blockly.Lua.controls_repeat_ext;$.Blockly.Lua.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.Lua.valueToCode(a,"BOOL",b?$.Blockly.Lua.ORDER_UNARY:$.Blockly.Lua.ORDER_NONE)||"false",d=$.Blockly.Lua.statementToCode(a,"DO");d=$.Blockly.Lua.addLoopTrap(d,a);d=module$contents$Blockly$Lua$loops_addContinueLabel(d);b&&(c="not "+c);return"while "+c+" do\n"+d+"end\n"}; -$.Blockly.Lua.controls_for=function(a){var b=$.Blockly.Lua.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.Lua.valueToCode(a,"FROM",$.Blockly.Lua.ORDER_NONE)||"0",d=$.Blockly.Lua.valueToCode(a,"TO",$.Blockly.Lua.ORDER_NONE)||"0",e=$.Blockly.Lua.valueToCode(a,"BY",$.Blockly.Lua.ORDER_NONE)||"1",f=$.Blockly.Lua.statementToCode(a,"DO");f=$.Blockly.Lua.addLoopTrap(f,a);f=module$contents$Blockly$Lua$loops_addContinueLabel(f);a="";if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&& -(0,$.module$exports$Blockly$utils$string.isNumber)(d)&&(0,$.module$exports$Blockly$utils$string.isNumber)(e))var g=(Number(c)<=Number(d)?"":"-")+Math.abs(Number(e));else a="",g=$.Blockly.Lua.nameDB_.getDistinctName(b+"_inc",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=g+" = ",a=(0,$.module$exports$Blockly$utils$string.isNumber)(e)?a+(Math.abs(e)+"\n"):a+("math.abs("+e+")\n"),a=a+("if ("+c+") > ("+d+") then\n")+($.Blockly.Lua.INDENT+g+" = -"+g+"\n"),a+="end\n";return a+("for "+b+" = "+c+", "+ -d+", "+g)+(" do\n"+f+"end\n")};$.Blockly.Lua.controls_forEach=function(a){var b=$.Blockly.Lua.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.Lua.valueToCode(a,"LIST",$.Blockly.Lua.ORDER_NONE)||"{}",d=$.Blockly.Lua.statementToCode(a,"DO");d=$.Blockly.Lua.addLoopTrap(d,a);d=module$contents$Blockly$Lua$loops_addContinueLabel(d);return"for _, "+b+" in ipairs("+c+") do \n"+d+"end\n"}; -$.Blockly.Lua.controls_flow_statements=function(a){var b="";$.Blockly.Lua.STATEMENT_PREFIX&&(b+=$.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_PREFIX,a));$.Blockly.Lua.STATEMENT_SUFFIX&&(b+=$.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_SUFFIX,a));if($.Blockly.Lua.STATEMENT_PREFIX){var c=a.getSurroundLoop();c&&!c.suppressPrefixSuffix&&(b+=$.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_PREFIX,c))}switch(a.getFieldValue("FLOW")){case "BREAK":return b+"break\n";case "CONTINUE":return b+module$contents$Blockly$Lua$loops_CONTINUE_STATEMENT}throw Error("Unknown flow statement."); -};var module$exports$Blockly$Lua$logic={}; -$.Blockly.Lua.controls_if=function(a){var b=0,c="";$.Blockly.Lua.STATEMENT_PREFIX&&(c+=$.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_PREFIX,a));do{var d=$.Blockly.Lua.valueToCode(a,"IF"+b,$.Blockly.Lua.ORDER_NONE)||"false",e=$.Blockly.Lua.statementToCode(a,"DO"+b);$.Blockly.Lua.STATEMENT_SUFFIX&&(e=$.Blockly.Lua.prefixLines($.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_SUFFIX,a),$.Blockly.Lua.INDENT)+e);c+=(0",GTE:">="}[a.getFieldValue("OP")],c=$.Blockly.Lua.valueToCode(a,"A",$.Blockly.Lua.ORDER_RELATIONAL)||"0";a=$.Blockly.Lua.valueToCode(a,"B",$.Blockly.Lua.ORDER_RELATIONAL)||"0";return[c+" "+b+" "+a,$.Blockly.Lua.ORDER_RELATIONAL]}; -$.Blockly.Lua.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"and":"or",c="and"===b?$.Blockly.Lua.ORDER_AND:$.Blockly.Lua.ORDER_OR,d=$.Blockly.Lua.valueToCode(a,"A",c);a=$.Blockly.Lua.valueToCode(a,"B",c);if(d||a){var e="and"===b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]};$.Blockly.Lua.logic_negate=function(a){return["not "+($.Blockly.Lua.valueToCode(a,"BOOL",$.Blockly.Lua.ORDER_UNARY)||"true"),$.Blockly.Lua.ORDER_UNARY]}; -$.Blockly.Lua.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"true":"false",$.Blockly.Lua.ORDER_ATOMIC]};$.Blockly.Lua.logic_null=function(a){return["nil",$.Blockly.Lua.ORDER_ATOMIC]};$.Blockly.Lua.logic_ternary=function(a){var b=$.Blockly.Lua.valueToCode(a,"IF",$.Blockly.Lua.ORDER_AND)||"false",c=$.Blockly.Lua.valueToCode(a,"THEN",$.Blockly.Lua.ORDER_AND)||"nil";a=$.Blockly.Lua.valueToCode(a,"ELSE",$.Blockly.Lua.ORDER_OR)||"nil";return[b+" and "+c+" or "+a,$.Blockly.Lua.ORDER_OR]};var module$exports$Blockly$Lua$lists={};$.Blockly.Lua.lists_create_empty=function(a){return["{}",$.Blockly.Lua.ORDER_HIGH]};$.Blockly.Lua.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;ca?$.Blockly.Lua.ORDER_UNARY:$.Blockly.Lua.ORDER_ATOMIC]}; +$.Blockly.Lua.math_arithmetic=function(a){var b={ADD:[" + ",$.Blockly.Lua.ORDER_ADDITIVE],MINUS:[" - ",$.Blockly.Lua.ORDER_ADDITIVE],MULTIPLY:[" * ",$.Blockly.Lua.ORDER_MULTIPLICATIVE],DIVIDE:[" / ",$.Blockly.Lua.ORDER_MULTIPLICATIVE],POWER:[" ^ ",$.Blockly.Lua.ORDER_EXPONENTIATION]}[a.getFieldValue("OP")],c=b[0];b=b[1];var d=$.Blockly.Lua.valueToCode(a,"A",b)||"0";a=$.Blockly.Lua.valueToCode(a,"B",b)||"0";return[d+c+a,b]}; +$.Blockly.Lua.math_single=function(a){var b=a.getFieldValue("OP");if("NEG"===b)return a=$.Blockly.Lua.valueToCode(a,"NUM",$.Blockly.Lua.ORDER_UNARY)||"0",["-"+a,$.Blockly.Lua.ORDER_UNARY];if("POW10"===b)return a=$.Blockly.Lua.valueToCode(a,"NUM",$.Blockly.Lua.ORDER_EXPONENTIATION)||"0",["10 ^ "+a,$.Blockly.Lua.ORDER_EXPONENTIATION];a="ROUND"===b?$.Blockly.Lua.valueToCode(a,"NUM",$.Blockly.Lua.ORDER_ADDITIVE)||"0":$.Blockly.Lua.valueToCode(a,"NUM",$.Blockly.Lua.ORDER_NONE)||"0";switch(b){case "ABS":b= +"math.abs("+a+")";break;case "ROOT":b="math.sqrt("+a+")";break;case "LN":b="math.log("+a+")";break;case "LOG10":b="math.log("+a+", 10)";break;case "EXP":b="math.exp("+a+")";break;case "ROUND":b="math.floor("+a+" + .5)";break;case "ROUNDUP":b="math.ceil("+a+")";break;case "ROUNDDOWN":b="math.floor("+a+")";break;case "SIN":b="math.sin(math.rad("+a+"))";break;case "COS":b="math.cos(math.rad("+a+"))";break;case "TAN":b="math.tan(math.rad("+a+"))";break;case "ASIN":b="math.deg(math.asin("+a+"))";break; +case "ACOS":b="math.deg(math.acos("+a+"))";break;case "ATAN":b="math.deg(math.atan("+a+"))";break;default:throw Error("Unknown math operator: "+b);}return[b,$.Blockly.Lua.ORDER_HIGH]}; +$.Blockly.Lua.math_constant=function(a){return{PI:["math.pi",$.Blockly.Lua.ORDER_HIGH],E:["math.exp(1)",$.Blockly.Lua.ORDER_HIGH],GOLDEN_RATIO:["(1 + math.sqrt(5)) / 2",$.Blockly.Lua.ORDER_MULTIPLICATIVE],SQRT2:["math.sqrt(2)",$.Blockly.Lua.ORDER_HIGH],SQRT1_2:["math.sqrt(1 / 2)",$.Blockly.Lua.ORDER_HIGH],INFINITY:["math.huge",$.Blockly.Lua.ORDER_HIGH]}[a.getFieldValue("CONSTANT")]}; +$.Blockly.Lua.math_number_property=function(a){var b={EVEN:[" % 2 == 0",$.Blockly.Lua.ORDER_MULTIPLICATIVE,$.Blockly.Lua.ORDER_RELATIONAL],ODD:[" % 2 == 1",$.Blockly.Lua.ORDER_MULTIPLICATIVE,$.Blockly.Lua.ORDER_RELATIONAL],WHOLE:[" % 1 == 0",$.Blockly.Lua.ORDER_MULTIPLICATIVE,$.Blockly.Lua.ORDER_RELATIONAL],POSITIVE:[" > 0",$.Blockly.Lua.ORDER_RELATIONAL,$.Blockly.Lua.ORDER_RELATIONAL],NEGATIVE:[" < 0",$.Blockly.Lua.ORDER_RELATIONAL,$.Blockly.Lua.ORDER_RELATIONAL],DIVISIBLE_BY:[null,$.Blockly.Lua.ORDER_MULTIPLICATIVE, +$.Blockly.Lua.ORDER_RELATIONAL],PRIME:[null,$.Blockly.Lua.ORDER_NONE,$.Blockly.Lua.ORDER_HIGH]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value;b=b.next().value;e=$.Blockly.Lua.valueToCode(a,"NUMBER_TO_CHECK",e)||"0";if("PRIME"===c)a=$.Blockly.Lua.provideFunction_("math_isPrime","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(n)\n -- https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if n == 2 or n == 3 then\n return true\n end\n -- False if n is NaN, negative, is 1, or not whole.\n -- And false if n is divisible by 2 or 3.\n if not(n > 1) or n % 1 ~= 0 or n % 2 == 0 or n % 3 == 0 then\n return false\n end\n -- Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for x = 6, math.sqrt(n) + 1.5, 6 do\n if n % (x - 1) == 0 or n % (x + 1) == 0 then\n return false\n end\n end\n return true\nend\n")+ +"("+e+")";else if("DIVISIBLE_BY"===c){a=$.Blockly.Lua.valueToCode(a,"DIVISOR",$.Blockly.Lua.ORDER_MULTIPLICATIVE)||"0";if("0"===a)return["nil",$.Blockly.Lua.ORDER_ATOMIC];a=e+" % "+a+" == 0"}else a=e+d;return[a,b]};$.Blockly.Lua.math_change=function(a){var b=$.Blockly.Lua.valueToCode(a,"DELTA",$.Blockly.Lua.ORDER_ADDITIVE)||"0";a=$.Blockly.Lua.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE);return a+" = "+a+" + "+b+"\n"};$.Blockly.Lua.math_round=$.Blockly.Lua.math_single; +$.Blockly.Lua.math_trig=$.Blockly.Lua.math_single; +$.Blockly.Lua.math_on_list=function(a){function b(){return $.Blockly.Lua.provideFunction_("math_sum","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n local result = 0\n for _, v in ipairs(t) do\n result = result + v\n end\n return result\nend\n")}var c=a.getFieldValue("OP");a=$.Blockly.Lua.valueToCode(a,"LIST",$.Blockly.Lua.ORDER_NONE)||"{}";switch(c){case "SUM":c=b();break;case "MIN":c=$.Blockly.Lua.provideFunction_("math_min","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+ +"(t)\n if #t == 0 then\n return 0\n end\n local result = math.huge\n for _, v in ipairs(t) do\n if v < result then\n result = v\n end\n end\n return result\nend\n");break;case "AVERAGE":c=$.Blockly.Lua.provideFunction_("math_average","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n if #t == 0 then\n return 0\n end\n return "+b()+"(t) / #t\nend\n");break;case "MAX":c=$.Blockly.Lua.provideFunction_("math_max","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+ +"(t)\n if #t == 0 then\n return 0\n end\n local result = -math.huge\n for _, v in ipairs(t) do\n if v > result then\n result = v\n end\n end\n return result\nend\n");break;case "MEDIAN":c=$.Blockly.Lua.provideFunction_("math_median","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n -- Source: http://lua-users.org/wiki/SimpleStats\n if #t == 0 then\n return 0\n end\n local temp = {}\n for _, v in ipairs(t) do\n if type(v) == 'number' then\n table.insert(temp, v)\n end\n end\n table.sort(temp)\n if #temp % 2 == 0 then\n return (temp[#temp / 2] + temp[(#temp / 2) + 1]) / 2\n else\n return temp[math.ceil(#temp / 2)]\n end\nend\n"); +break;case "MODE":c=$.Blockly.Lua.provideFunction_("math_modes","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n -- Source: http://lua-users.org/wiki/SimpleStats\n local counts = {}\n for _, v in ipairs(t) do\n if counts[v] == nil then\n counts[v] = 1\n else\n counts[v] = counts[v] + 1\n end\n end\n local biggestCount = 0\n for _, v in pairs(counts) do\n if v > biggestCount then\n biggestCount = v\n end\n end\n local temp = {}\n for k, v in pairs(counts) do\n if v == biggestCount then\n table.insert(temp, k)\n end\n end\n return temp\nend\n"); +break;case "STD_DEV":c=$.Blockly.Lua.provideFunction_("math_standard_deviation","\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n local m\n local vm\n local total = 0\n local count = 0\n local result\n m = #t == 0 and 0 or "+b()+"(t) / #t\n for _, v in ipairs(t) do\n if type(v) == 'number' then\n vm = v - m\n total = total + (vm * vm)\n count = count + 1\n end\n end\n result = math.sqrt(total / (count-1))\n return result\nend\n");break;case "RANDOM":c=$.Blockly.Lua.provideFunction_("math_random_list", +"\nfunction "+$.Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)\n if #t == 0 then\n return nil\n end\n return t[math.random(#t)]\nend\n");break;default:throw Error("Unknown operator: "+c);}return[c+"("+a+")",$.Blockly.Lua.ORDER_HIGH]};$.Blockly.Lua.math_modulo=function(a){var b=$.Blockly.Lua.valueToCode(a,"DIVIDEND",$.Blockly.Lua.ORDER_MULTIPLICATIVE)||"0";a=$.Blockly.Lua.valueToCode(a,"DIVISOR",$.Blockly.Lua.ORDER_MULTIPLICATIVE)||"0";return[b+" % "+a,$.Blockly.Lua.ORDER_MULTIPLICATIVE]}; +$.Blockly.Lua.math_constrain=function(a){var b=$.Blockly.Lua.valueToCode(a,"VALUE",$.Blockly.Lua.ORDER_NONE)||"0",c=$.Blockly.Lua.valueToCode(a,"LOW",$.Blockly.Lua.ORDER_NONE)||"-math.huge";a=$.Blockly.Lua.valueToCode(a,"HIGH",$.Blockly.Lua.ORDER_NONE)||"math.huge";return["math.min(math.max("+b+", "+c+"), "+a+")",$.Blockly.Lua.ORDER_HIGH]}; +$.Blockly.Lua.math_random_int=function(a){var b=$.Blockly.Lua.valueToCode(a,"FROM",$.Blockly.Lua.ORDER_NONE)||"0";a=$.Blockly.Lua.valueToCode(a,"TO",$.Blockly.Lua.ORDER_NONE)||"0";return["math.random("+b+", "+a+")",$.Blockly.Lua.ORDER_HIGH]};$.Blockly.Lua.math_random_float=function(a){return["math.random()",$.Blockly.Lua.ORDER_HIGH]}; +$.Blockly.Lua.math_atan2=function(a){var b=$.Blockly.Lua.valueToCode(a,"X",$.Blockly.Lua.ORDER_NONE)||"0";return["math.deg(math.atan2("+($.Blockly.Lua.valueToCode(a,"Y",$.Blockly.Lua.ORDER_NONE)||"0")+", "+b+"))",$.Blockly.Lua.ORDER_HIGH]};var module$exports$Blockly$Lua$loops={},module$contents$Blockly$Lua$loops_CONTINUE_STATEMENT="goto continue\n",module$contents$Blockly$Lua$loops_addContinueLabel=function(a){return-1!==a.indexOf(module$contents$Blockly$Lua$loops_CONTINUE_STATEMENT)?a+$.Blockly.Lua.INDENT+"::continue::\n":a}; +$.Blockly.Lua.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(Number(a.getFieldValue("TIMES"))):$.Blockly.Lua.valueToCode(a,"TIMES",$.Blockly.Lua.ORDER_NONE)||"0";b=(0,$.module$exports$Blockly$utils$string.isNumber)(b)?parseInt(b,10):"math.floor("+b+")";var c=$.Blockly.Lua.statementToCode(a,"DO");c=$.Blockly.Lua.addLoopTrap(c,a);c=module$contents$Blockly$Lua$loops_addContinueLabel(c);return"for "+$.Blockly.Lua.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE)+ +" = 1, "+b+" do\n"+c+"end\n"};$.Blockly.Lua.controls_repeat=$.Blockly.Lua.controls_repeat_ext;$.Blockly.Lua.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.Lua.valueToCode(a,"BOOL",b?$.Blockly.Lua.ORDER_UNARY:$.Blockly.Lua.ORDER_NONE)||"false",d=$.Blockly.Lua.statementToCode(a,"DO");d=$.Blockly.Lua.addLoopTrap(d,a);d=module$contents$Blockly$Lua$loops_addContinueLabel(d);b&&(c="not "+c);return"while "+c+" do\n"+d+"end\n"}; +$.Blockly.Lua.controls_for=function(a){var b=$.Blockly.Lua.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.Lua.valueToCode(a,"FROM",$.Blockly.Lua.ORDER_NONE)||"0",d=$.Blockly.Lua.valueToCode(a,"TO",$.Blockly.Lua.ORDER_NONE)||"0",e=$.Blockly.Lua.valueToCode(a,"BY",$.Blockly.Lua.ORDER_NONE)||"1",f=$.Blockly.Lua.statementToCode(a,"DO");f=$.Blockly.Lua.addLoopTrap(f,a);f=module$contents$Blockly$Lua$loops_addContinueLabel(f);a="";if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&& +(0,$.module$exports$Blockly$utils$string.isNumber)(d)&&(0,$.module$exports$Blockly$utils$string.isNumber)(e))var g=(Number(c)<=Number(d)?"":"-")+Math.abs(Number(e));else a="",g=$.Blockly.Lua.nameDB_.getDistinctName(b+"_inc",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=g+" = ",a=(0,$.module$exports$Blockly$utils$string.isNumber)(e)?a+(Math.abs(e)+"\n"):a+("math.abs("+e+")\n"),a=a+("if ("+c+") > ("+d+") then\n")+($.Blockly.Lua.INDENT+g+" = -"+g+"\n"),a+="end\n";return a+("for "+b+" = "+c+", "+ +d+", "+g)+(" do\n"+f+"end\n")};$.Blockly.Lua.controls_forEach=function(a){var b=$.Blockly.Lua.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.Lua.valueToCode(a,"LIST",$.Blockly.Lua.ORDER_NONE)||"{}",d=$.Blockly.Lua.statementToCode(a,"DO");d=$.Blockly.Lua.addLoopTrap(d,a);d=module$contents$Blockly$Lua$loops_addContinueLabel(d);return"for _, "+b+" in ipairs("+c+") do \n"+d+"end\n"}; +$.Blockly.Lua.controls_flow_statements=function(a){var b="";$.Blockly.Lua.STATEMENT_PREFIX&&(b+=$.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_PREFIX,a));$.Blockly.Lua.STATEMENT_SUFFIX&&(b+=$.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_SUFFIX,a));if($.Blockly.Lua.STATEMENT_PREFIX){var c=a.getSurroundLoop();c&&!c.suppressPrefixSuffix&&(b+=$.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_PREFIX,c))}switch(a.getFieldValue("FLOW")){case "BREAK":return b+"break\n";case "CONTINUE":return b+module$contents$Blockly$Lua$loops_CONTINUE_STATEMENT}throw Error("Unknown flow statement."); +};var module$exports$Blockly$Lua$logic={}; +$.Blockly.Lua.controls_if=function(a){var b=0,c="";$.Blockly.Lua.STATEMENT_PREFIX&&(c+=$.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_PREFIX,a));do{var d=$.Blockly.Lua.valueToCode(a,"IF"+b,$.Blockly.Lua.ORDER_NONE)||"false",e=$.Blockly.Lua.statementToCode(a,"DO"+b);$.Blockly.Lua.STATEMENT_SUFFIX&&(e=$.Blockly.Lua.prefixLines($.Blockly.Lua.injectId($.Blockly.Lua.STATEMENT_SUFFIX,a),$.Blockly.Lua.INDENT)+e);c+=(0",GTE:">="}[a.getFieldValue("OP")],c=$.Blockly.Lua.valueToCode(a,"A",$.Blockly.Lua.ORDER_RELATIONAL)||"0";a=$.Blockly.Lua.valueToCode(a,"B",$.Blockly.Lua.ORDER_RELATIONAL)||"0";return[c+" "+b+" "+a,$.Blockly.Lua.ORDER_RELATIONAL]}; +$.Blockly.Lua.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"and":"or",c="and"===b?$.Blockly.Lua.ORDER_AND:$.Blockly.Lua.ORDER_OR,d=$.Blockly.Lua.valueToCode(a,"A",c);a=$.Blockly.Lua.valueToCode(a,"B",c);if(d||a){var e="and"===b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]};$.Blockly.Lua.logic_negate=function(a){return["not "+($.Blockly.Lua.valueToCode(a,"BOOL",$.Blockly.Lua.ORDER_UNARY)||"true"),$.Blockly.Lua.ORDER_UNARY]}; +$.Blockly.Lua.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"true":"false",$.Blockly.Lua.ORDER_ATOMIC]};$.Blockly.Lua.logic_null=function(a){return["nil",$.Blockly.Lua.ORDER_ATOMIC]};$.Blockly.Lua.logic_ternary=function(a){var b=$.Blockly.Lua.valueToCode(a,"IF",$.Blockly.Lua.ORDER_AND)||"false",c=$.Blockly.Lua.valueToCode(a,"THEN",$.Blockly.Lua.ORDER_AND)||"nil";a=$.Blockly.Lua.valueToCode(a,"ELSE",$.Blockly.Lua.ORDER_OR)||"nil";return[b+" and "+c+" or "+a,$.Blockly.Lua.ORDER_OR]};var module$exports$Blockly$Lua$lists={};$.Blockly.Lua.lists_create_empty=function(a){return["{}",$.Blockly.Lua.ORDER_HIGH]};$.Blockly.Lua.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/msg/js/ab.js b/msg/js/ab.js index 2897ad9942d..7e223b9e1cf 100644 --- a/msg/js/ab.js +++ b/msg/js/ab.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Иацҵатәуп ахцәажәара"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ишәыԥсах аҵакы"; -Blockly.Msg["CLEAN_UP"] = "Иқәгатәуп аблокқәа"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Иеикәрҳәтәуп Аблокқәа"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Иеикәрҳәтәуп Аблокқәа"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "аԥштәы 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "аԥштәы 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "аԥштәы 1 ахәҭа"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "еилаҵатәуп"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ab.wikipedia.org/wiki/Аԥштәы"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Иалышәх аԥштәы"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "иарбанзаалакь аԥштәы"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Иалнахуеит аԥштәы машәыршақә"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "жәҩангәԥштәы"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "аиаҵәа"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "аҟаԥшь"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "аԥштәы аҟынтәи"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ацикл иҭыҵтәуп"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ииастәуп ацикл анаҩстәи ашьаҿахьы"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Иааннакылоит абри ацикл."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Агәҽанҵара:Ари аблок ахархәара амоуп ацикл аҩныҵҟа мацара."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "ацикл %1 ала %2 инаркны %3 рҟынӡа ашьаҿа %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Иацнаҵоит аҭагыазаашьа аблок \"акәзар\" ахь"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "акәымзар"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "акәымзар"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "акәзар"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Аҭагылазаашьа иашазар, инанагӡоит акомандақәа."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Аҭагылазаашьа иашазар, инанагӡоит актәи аблок акомандақәа. Акәымзар инанагӡоит аҩбатәи аблок акомандақәа."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ab.wikipedia.org/wiki/Ацикл"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "инагӡатәуп"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "инагӡалатәуп %1 - нтә"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Инанагӡоит акомандақәа кырынтә"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "инагӡалатәуп акәымзар"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "инагӡалатәуп акәзар"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Аҭагылазаашьа мцнаҵы, инанагӡалоит акомандақәа."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Аҭагылазаашьа иашанаҵ, инанагӡалоит акомандақәа."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ианыхтәуп аблокқәа (%1) зегьы?"; -Blockly.Msg["DELETE_BLOCK"] = "Ианыхтәуп аблок"; -Blockly.Msg["DELETE_VARIABLE"] = "Ианыхтәуп аҽеиҭак '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Ианыхтәуп %1 блокк"; -Blockly.Msg["DIALOG_CANCEL"] = "Аҟәыхра"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Иаҿыхтәуп Аблок"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Акопиа ахыхтәуп"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Иаҿыхтәуп Аблокқәа"; -Blockly.Msg["EXPAND_ALL"] = "Иаарԥштәуп Аблокқәа"; -Blockly.Msg["EXPAND_BLOCK"] = "Иаарԥштәуп Аблокқәа"; -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Ацхыраара"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "иаԥцатәуп иҭацәу ахьӡынҵа"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ахьӡынҵа"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "иаԥҵатәуп ахьӡынҵа аҟынтәи"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Иацнаҵоит аелемент ахьӡынҵахьы"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "актәи"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ анҵәамнҭа аҟынтәи"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "игатәуп"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "иалхны ианыхтәуп"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "аҵыхәтәантәи"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "иарбанзаалакь"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ианыхтәуп"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Иҳанаҭоит ахьӡынҵа актәи аелемент."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Иҳанаҭоит ахьӡынҵа аҵыхәтәантәи аелемент."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Иҳанаҭоит ахьӡынҵа иарбанзаалакь елементк."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Ианнахәуеит ахьӡынҵа актәи аелемент."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Ианнахәуеит ахьӡынҵа аҵыхәтәантәи аелемент."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Ианнахәуеит ахьӡынҵа иарбанзаалакь елементк."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "№ ала"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - аҵыхәтәантәи аелемент."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - актәи аелемент."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "ахьӡынҵа аҟны"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ҭацәуп"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Иҳанаҭоит аиаша, ахьӡынҵа ҭацәызар."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "аура %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Иҳанаҭоит ахьӡынҵа аура."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "="; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ибжьаргылатәуп"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "иаҭатәуп"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Иацнаҵоит аелемент ахьӡынҵа анҵәамҭахь."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "еиҵоу-еиҳауала"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "еиҳау-еиҵоуала"; -Blockly.Msg["LISTS_SORT_TITLE"] = "еилыԥшаатәуп %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Еилыԥшаатәуп ахьӡынҵа акопиа."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ахыԥхьаӡаратәи"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "алфавитла"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "еизгатәуп атеқст ахьӡынҵа аҟынтәи"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "амц"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Иҳанаҭоит аҵакы аиаша ма амц"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "аиаша"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ru.wikipedia.org/wiki/Аиҟарамра"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟаразар."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар ма иаҟаразар."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Иҳанаҭоит иҵоуроу аҵакы, актәи иҭагалоу аҩбатәи аасҭа еиҵазар."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҵазар ма иаҟаразар."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟарамзар."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 акәӡам"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Иҳанаҭоит аҵакы аиаша, иҭагалоу мцызар. Иҳанаҭоит аҵакы амц, иҭагалоу иашазар."; -Blockly.Msg["LOGIC_NULL"] = "акагьы"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Иҳанаҭоит акагьы"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ма"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Иҳанаҭоит аҵакы аиаша, иҭагалоу аҩбагьы иашазар."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Иҳанаҭоит аҵакы аиаша, иҭагалоу руак иашазар."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "иалхтәуп ала"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "амц акәзар"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "аиаша акәзар"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ab.wikipedia.org/wiki/Арифметика"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак реицҵалыҵ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак ршалыҵ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак реигырхалыҵ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак рышьҭыхлыҵ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "иеизырҳатәуп %1 %2 рыла"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Иацнаҵоит ахыԥхьаӡара аҽеиҭак '%1' ахь."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ab.wikipedia.org/wiki/Аматематикатә_константа"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Иҳанаҭооит аконстантақәа руак: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) ма ∞ (аҵыхәаԥҵәарадара)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ишоит ала"; -Blockly.Msg["MATH_IS_EVEN"] = "еиҩшо"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "иҵоурам"; -Blockly.Msg["MATH_IS_ODD"] = "еиҩымшо"; -Blockly.Msg["MATH_IS_POSITIVE"] = "иҵоуроу"; -Blockly.Msg["MATH_IS_PRIME"] = "имариоу"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "аибга"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ru.wikipedia.org/wiki/Ашара_цәынхала"; -Blockly.Msg["MATH_MODULO_TITLE"] = "ацәынха %1 : %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Иҳанаҭоит ацәынха ҩ-хыԥхьаӡарак ршараан."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ab.wikipedia.org/wiki/Ахыԥхьаӡара"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ахыԥхьаӡара."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ахьӡынҵа арифметикатә бжьара"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ахьӡынҵа аҟны иреиҳау"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ахьӡынҵа амедиана"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ахьӡынҵа аҟны иреиҵо"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ахьӡынҵа амода"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ахьӡынҵа иарбанзаалакь аелемент"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ахьӡынҵа аицҵалыҵ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рарифметикатә бжьара."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Иҳанаҭоит ахьӡынҵа аҟны иреиҳау ахыԥхьаӡара."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рмедиана."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Иҳанаҭоит ахьӡынҵа аҟны иреицо ахыԥхьаӡара."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Иҳанаҭоит ахьӡынҵа аҟны иарбанзаалакь елементк."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Иҳанаҭоит ахьӡынҵа иаҵанакуа ахыԥхьаӡарақәа зегьы реицҵалыҵ."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "иарбанзаалакь ахыԥхьашара 0 инаркны (иалаҵаны) 1 аҟынӡа"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Иҳанаҭоит иарбанзаалакь ахыԥхьаӡара 0.0 инаркны (иалаҵаны) 1.0 аҟынӡа."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "иарбанзаалакь еибгоу ахыԥхьаӡара %1 инаркны %2 нӡа"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ab.wikipedia.org/wiki/Ахыркәшара"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ихыркәшатәуп"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ихыркәшатәуп еиҵоу ахь"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ихыркәшатәуп еиҳау ахь"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "амодуль"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Иҳанаҭоит ахыԥхьаӡара амодуль."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Иҳанаҭоит ахыԥхьаӡара иԥсабаратәу алогарифм."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Иҳанаҭоит ахыԥхьаӡара ажәабатә логарифм."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Иҳанаҭоит иаҿагыло ахыԥхьаӡара."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ab.wikipedia.org/wiki/Атригонометриатә_функциа"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Иҳанаҭоит арккосинус градусла."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Иҳанаҭоит арксинус градусла."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Иҳанаҭоит арктангенс градусла."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Иҳанаҭоит акосинус градусла."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Иҳанаҭоит асинус градусла."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Иҳанаҭоит атангенс градусла."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Иаԥҵатәуп аҽеиҭак"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Аҽеиҭак ахьӡ ҿыц:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "аоператорқәа азин рыҭара"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "аҟынтәи:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "аҟынтәи:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Иаԥҵатәуп ааԥхьара '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Абри афункциа ахҳәа азыҟашәҵа..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "иҟаҵатәуп џьара акы"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "азы"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Иаԥнаҵоит апроцедура, аҵакы ҳазымҭо."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ирхынҳәтәуп"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Иаԥнаҵоит апроцедура, аҵакы ҳазҭо."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Актәи аҵакы иашазар, иҳанаҭоит аҩбатәи аҵакы."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Агәаҽанҵара: Ари аблок ахархәара ауеит афункциа аԥҵара аҟны."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "апараметр ахьӡ:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "апараметрқәа"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Аиҭаҟаҵара"; -Blockly.Msg["REMOVE_COMMENT"] = "Ианыхтәуп ахцәажәара"; -Blockly.Msg["RENAME_VARIABLE"] = "Аҽеиҭак ахьӡ ԥсахтәуп"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Аҽеиҭакқәа'%1' зегь рыхьӡ ԥсахтәуп аҟны:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 ахьы иацҵатәуп атеқст %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Иацҵатәуп атеқст аҽеиҭак «%1» ахь."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "игатәуп актәи анбан"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "игатәуп анбан № анҵәамҭа аҟынтәи"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "игатәуп анбан №"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "игатәуп аҵыхәтәантәи анбан"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "игатәуп иарбанзаалакь нбанк"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "атеқст %1 %2 аҟны"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Иҳанаҭоит анбан иарбоу апозициа аҟны"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Иацҵатәуп аелемент атеқст ахь."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "иеиԥшьтәуп"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "анбан № ала"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "аҵыхәтәантәи анбан ала"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "атеқст аҟны"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Иҳанаҭоит атеқст аҟны иарбоу ахәҭа."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "атеқст %1 %2 %3 аҟны"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ҭацәуп"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Иҳанаҭоит аҵакы аиаша, иҟоу атеқст ҭацәызар."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "иаԥҵатәуп атеқст аҟынтәи"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "аура %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Иҳанаҭоит асимволқәа рхыԥхьаӡара (абжьажьқәа алаҵаны) иҟоу атеқст аҟны."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "икьыԥхьтәуп %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Иакьыԥхьуеит атеқст, ахыԥхьаӡара ма даҽа обиеқтк."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "иԥсахтәуп %1 %2 ала %3 аҟны"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ab.wikipedia.org/wiki/Ацәаҳәатә_хкы"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Анбан, ажәа ма ацәаҳәа атеқст аҟны."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Иахьа"; -Blockly.Msg["UNDO"] = "Иаҟәыхтәуп"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "аелемент"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Иаԥҵатәуп аблок \"иаҭатәуп %1\" азы"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Иҳанаҭоит аҽеиҭак аҵакы."; -Blockly.Msg["VARIABLES_SET"] = "иаҭатәуп %1 = %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Аҽеиҭак ахьӡ '%1' змоу ыҟоуп."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Иацҵатәуп ахцәажәара"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ишәыԥсах аҵакы"; +Blockly.Msg["CLEAN_UP"] = "Иқәгатәуп аблокқәа"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Иеикәрҳәтәуп Аблокқәа"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Иеикәрҳәтәуп Аблокқәа"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "аԥштәы 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "аԥштәы 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "аԥштәы 1 ахәҭа"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "еилаҵатәуп"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ab.wikipedia.org/wiki/Аԥштәы"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Иалышәх аԥштәы"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "иарбанзаалакь аԥштәы"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Иалнахуеит аԥштәы машәыршақә"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "жәҩангәԥштәы"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "аиаҵәа"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "аҟаԥшь"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "аԥштәы аҟынтәи"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ацикл иҭыҵтәуп"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ииастәуп ацикл анаҩстәи ашьаҿахьы"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Иааннакылоит абри ацикл."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Агәҽанҵара:Ари аблок ахархәара амоуп ацикл аҩныҵҟа мацара."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "ацикл %1 ала %2 инаркны %3 рҟынӡа ашьаҿа %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Иацнаҵоит аҭагыазаашьа аблок \"акәзар\" ахь"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "акәымзар"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "акәымзар"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "акәзар"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Аҭагылазаашьа иашазар, инанагӡоит акомандақәа."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Аҭагылазаашьа иашазар, инанагӡоит актәи аблок акомандақәа. Акәымзар инанагӡоит аҩбатәи аблок акомандақәа."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ab.wikipedia.org/wiki/Ацикл"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "инагӡатәуп"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "инагӡалатәуп %1 - нтә"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Инанагӡоит акомандақәа кырынтә"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "инагӡалатәуп акәымзар"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "инагӡалатәуп акәзар"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Аҭагылазаашьа мцнаҵы, инанагӡалоит акомандақәа."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Аҭагылазаашьа иашанаҵ, инанагӡалоит акомандақәа."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ианыхтәуп аблокқәа (%1) зегьы?"; +Blockly.Msg["DELETE_BLOCK"] = "Ианыхтәуп аблок"; +Blockly.Msg["DELETE_VARIABLE"] = "Ианыхтәуп аҽеиҭак '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Ианыхтәуп %1 блокк"; +Blockly.Msg["DIALOG_CANCEL"] = "Аҟәыхра"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Иаҿыхтәуп Аблок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Акопиа ахыхтәуп"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Иаҿыхтәуп Аблокқәа"; +Blockly.Msg["EXPAND_ALL"] = "Иаарԥштәуп Аблокқәа"; +Blockly.Msg["EXPAND_BLOCK"] = "Иаарԥштәуп Аблокқәа"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Ацхыраара"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "иаԥцатәуп иҭацәу ахьӡынҵа"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ахьӡынҵа"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "иаԥҵатәуп ахьӡынҵа аҟынтәи"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Иацнаҵоит аелемент ахьӡынҵахьы"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "актәи"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ анҵәамнҭа аҟынтәи"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "игатәуп"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "иалхны ианыхтәуп"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "аҵыхәтәантәи"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "иарбанзаалакь"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ианыхтәуп"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Иҳанаҭоит ахьӡынҵа актәи аелемент."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Иҳанаҭоит ахьӡынҵа аҵыхәтәантәи аелемент."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Иҳанаҭоит ахьӡынҵа иарбанзаалакь елементк."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Ианнахәуеит ахьӡынҵа актәи аелемент."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Ианнахәуеит ахьӡынҵа аҵыхәтәантәи аелемент."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Ианнахәуеит ахьӡынҵа иарбанзаалакь елементк."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "№ ала"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - аҵыхәтәантәи аелемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - актәи аелемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "ахьӡынҵа аҟны"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ҭацәуп"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Иҳанаҭоит аиаша, ахьӡынҵа ҭацәызар."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "аура %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Иҳанаҭоит ахьӡынҵа аура."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "="; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ибжьаргылатәуп"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "иаҭатәуп"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Иацнаҵоит аелемент ахьӡынҵа анҵәамҭахь."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "еиҵоу-еиҳауала"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "еиҳау-еиҵоуала"; +Blockly.Msg["LISTS_SORT_TITLE"] = "еилыԥшаатәуп %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Еилыԥшаатәуп ахьӡынҵа акопиа."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ахыԥхьаӡаратәи"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "алфавитла"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "еизгатәуп атеқст ахьӡынҵа аҟынтәи"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "амц"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Иҳанаҭоит аҵакы аиаша ма амц"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "аиаша"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ru.wikipedia.org/wiki/Аиҟарамра"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟаразар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар ма иаҟаразар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Иҳанаҭоит иҵоуроу аҵакы, актәи иҭагалоу аҩбатәи аасҭа еиҵазар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҵазар ма иаҟаразар."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟарамзар."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 акәӡам"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Иҳанаҭоит аҵакы аиаша, иҭагалоу мцызар. Иҳанаҭоит аҵакы амц, иҭагалоу иашазар."; +Blockly.Msg["LOGIC_NULL"] = "акагьы"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Иҳанаҭоит акагьы"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ма"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Иҳанаҭоит аҵакы аиаша, иҭагалоу аҩбагьы иашазар."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Иҳанаҭоит аҵакы аиаша, иҭагалоу руак иашазар."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "иалхтәуп ала"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "амц акәзар"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "аиаша акәзар"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ab.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак реицҵалыҵ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак ршалыҵ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак реигырхалыҵ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Иҳанаҭоит ҩ-хыԥхьаӡарак рышьҭыхлыҵ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "иеизырҳатәуп %1 %2 рыла"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Иацнаҵоит ахыԥхьаӡара аҽеиҭак '%1' ахь."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ab.wikipedia.org/wiki/Аматематикатә_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Иҳанаҭооит аконстантақәа руак: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) ма ∞ (аҵыхәаԥҵәарадара)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ишоит ала"; +Blockly.Msg["MATH_IS_EVEN"] = "еиҩшо"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "иҵоурам"; +Blockly.Msg["MATH_IS_ODD"] = "еиҩымшо"; +Blockly.Msg["MATH_IS_POSITIVE"] = "иҵоуроу"; +Blockly.Msg["MATH_IS_PRIME"] = "имариоу"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "аибга"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ru.wikipedia.org/wiki/Ашара_цәынхала"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ацәынха %1 : %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Иҳанаҭоит ацәынха ҩ-хыԥхьаӡарак ршараан."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ab.wikipedia.org/wiki/Ахыԥхьаӡара"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ахыԥхьаӡара."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ахьӡынҵа арифметикатә бжьара"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ахьӡынҵа аҟны иреиҳау"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ахьӡынҵа амедиана"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ахьӡынҵа аҟны иреиҵо"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ахьӡынҵа амода"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ахьӡынҵа иарбанзаалакь аелемент"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ахьӡынҵа аицҵалыҵ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рарифметикатә бжьара."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Иҳанаҭоит ахьӡынҵа аҟны иреиҳау ахыԥхьаӡара."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рмедиана."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Иҳанаҭоит ахьӡынҵа аҟны иреицо ахыԥхьаӡара."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Иҳанаҭоит ахьӡынҵа аҟны иарбанзаалакь елементк."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Иҳанаҭоит ахьӡынҵа иаҵанакуа ахыԥхьаӡарақәа зегьы реицҵалыҵ."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "иарбанзаалакь ахыԥхьашара 0 инаркны (иалаҵаны) 1 аҟынӡа"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Иҳанаҭоит иарбанзаалакь ахыԥхьаӡара 0.0 инаркны (иалаҵаны) 1.0 аҟынӡа."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "иарбанзаалакь еибгоу ахыԥхьаӡара %1 инаркны %2 нӡа"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ab.wikipedia.org/wiki/Ахыркәшара"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ихыркәшатәуп"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ихыркәшатәуп еиҵоу ахь"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ихыркәшатәуп еиҳау ахь"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "амодуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Иҳанаҭоит ахыԥхьаӡара амодуль."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Иҳанаҭоит ахыԥхьаӡара иԥсабаратәу алогарифм."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Иҳанаҭоит ахыԥхьаӡара ажәабатә логарифм."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Иҳанаҭоит иаҿагыло ахыԥхьаӡара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ab.wikipedia.org/wiki/Атригонометриатә_функциа"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Иҳанаҭоит арккосинус градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Иҳанаҭоит арксинус градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Иҳанаҭоит арктангенс градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Иҳанаҭоит акосинус градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Иҳанаҭоит асинус градусла."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Иҳанаҭоит атангенс градусла."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Иаԥҵатәуп аҽеиҭак"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Аҽеиҭак ахьӡ ҿыц:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "аоператорқәа азин рыҭара"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "аҟынтәи:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "аҟынтәи:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Иаԥҵатәуп ааԥхьара '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Абри афункциа ахҳәа азыҟашәҵа..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "иҟаҵатәуп џьара акы"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "азы"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Иаԥнаҵоит апроцедура, аҵакы ҳазымҭо."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ирхынҳәтәуп"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Иаԥнаҵоит апроцедура, аҵакы ҳазҭо."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Актәи аҵакы иашазар, иҳанаҭоит аҩбатәи аҵакы."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Агәаҽанҵара: Ари аблок ахархәара ауеит афункциа аԥҵара аҟны."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "апараметр ахьӡ:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "апараметрқәа"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Аиҭаҟаҵара"; +Blockly.Msg["REMOVE_COMMENT"] = "Ианыхтәуп ахцәажәара"; +Blockly.Msg["RENAME_VARIABLE"] = "Аҽеиҭак ахьӡ ԥсахтәуп"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Аҽеиҭакқәа'%1' зегь рыхьӡ ԥсахтәуп аҟны:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 ахьы иацҵатәуп атеқст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Иацҵатәуп атеқст аҽеиҭак «%1» ахь."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "игатәуп актәи анбан"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "игатәуп анбан № анҵәамҭа аҟынтәи"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "игатәуп анбан №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "игатәуп аҵыхәтәантәи анбан"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "игатәуп иарбанзаалакь нбанк"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "атеқст %1 %2 аҟны"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Иҳанаҭоит анбан иарбоу апозициа аҟны"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Иацҵатәуп аелемент атеқст ахь."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "иеиԥшьтәуп"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "анбан № ала"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "аҵыхәтәантәи анбан ала"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "атеқст аҟны"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Иҳанаҭоит атеқст аҟны иарбоу ахәҭа."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "атеқст %1 %2 %3 аҟны"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ҭацәуп"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Иҳанаҭоит аҵакы аиаша, иҟоу атеқст ҭацәызар."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "иаԥҵатәуп атеқст аҟынтәи"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "аура %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Иҳанаҭоит асимволқәа рхыԥхьаӡара (абжьажьқәа алаҵаны) иҟоу атеқст аҟны."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "икьыԥхьтәуп %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Иакьыԥхьуеит атеқст, ахыԥхьаӡара ма даҽа обиеқтк."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "иԥсахтәуп %1 %2 ала %3 аҟны"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ab.wikipedia.org/wiki/Ацәаҳәатә_хкы"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Анбан, ажәа ма ацәаҳәа атеқст аҟны."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Иахьа"; +Blockly.Msg["UNDO"] = "Иаҟәыхтәуп"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "аелемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Иаԥҵатәуп аблок \"иаҭатәуп %1\" азы"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Иҳанаҭоит аҽеиҭак аҵакы."; +Blockly.Msg["VARIABLES_SET"] = "иаҭатәуп %1 = %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Аҽеиҭак ахьӡ '%1' змоу ыҟоуп."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ace.js b/msg/js/ace.js index 176403e73be..673daec2cb0 100644 --- a/msg/js/ace.js +++ b/msg/js/ace.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Peubateuë"; -Blockly.Msg["DIALOG_OK"] = "Ka got"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Help"; // untranslated -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Peubateuë"; +Blockly.Msg["DIALOG_OK"] = "Ka got"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/af.js b/msg/js/af.js index fb37841999b..f0db38fc36f 100644 --- a/msg/js/af.js +++ b/msg/js/af.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Voeg kommentaar by"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Wysig waarde:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "verwyder al %1 blokke?"; -Blockly.Msg["DELETE_BLOCK"] = "verwyder blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Wissig %1 gebruike van die '%2' veranderlike?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "verwyder %1 blokke"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "Oukei"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "duplikaat"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliseer kommentaar"; -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Hulp"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Skep kleur veranderlike"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Skep numeriese veranderlike"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Skep teks veranderlike"; -Blockly.Msg["NEW_VARIABLE"] = "Skep veranderlike"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nuwe veranderlike naam:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nuwe veranderlike tipe:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Doen weer"; -Blockly.Msg["REMOVE_COMMENT"] = "Verwyder kommentaar"; -Blockly.Msg["RENAME_VARIABLE"] = "Hernoem veranderlike..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Hernoem al %1 veranderlikes na:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "vandag"; -Blockly.Msg["UNDO"] = "Ontdaan"; -Blockly.Msg["UNNAMED_KEY"] = "onbenoem"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'n Veranderlike met die naam '%1' bestaan reeds."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'n Veranderlike met die naam '%1' bestaan reeds vir 'n ander tipe veranderlike: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Voeg kommentaar by"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Wysig waarde:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "verwyder al %1 blokke?"; +Blockly.Msg["DELETE_BLOCK"] = "verwyder blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Wissig %1 gebruike van die '%2' veranderlike?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "verwyder %1 blokke"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "Oukei"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "duplikaat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliseer kommentaar"; +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Hulp"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Skep kleur veranderlike"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Skep numeriese veranderlike"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Skep teks veranderlike"; +Blockly.Msg["NEW_VARIABLE"] = "Skep veranderlike"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nuwe veranderlike naam:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nuwe veranderlike tipe:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Doen weer"; +Blockly.Msg["REMOVE_COMMENT"] = "Verwyder kommentaar"; +Blockly.Msg["RENAME_VARIABLE"] = "Hernoem veranderlike..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Hernoem al %1 veranderlikes na:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "vandag"; +Blockly.Msg["UNDO"] = "Ontdaan"; +Blockly.Msg["UNNAMED_KEY"] = "onbenoem"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'n Veranderlike met die naam '%1' bestaan reeds."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'n Veranderlike met die naam '%1' bestaan reeds vir 'n ander tipe veranderlike: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/am.js b/msg/js/am.js index 7ba465ce5b5..59f037baf23 100644 --- a/msg/js/am.js +++ b/msg/js/am.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ማስታወሻ ያክሉ"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "ብሎኮቹን ይሰድሩ"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "የብሎኮቹን መረጃዎች ያሳጥሩ"; -Blockly.Msg["COLLAPSE_BLOCK"] = "የብሎኩን መረጃ ያሳጥሩ"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "%1 ያህል ብሎኮች ይሰረዙ?"; -Blockly.Msg["DELETE_BLOCK"] = "ብሎኩን ይሰርዙ"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ብሎኮች ይሰርዙ"; -Blockly.Msg["DIALOG_CANCEL"] = "ይቅር"; -Blockly.Msg["DIALOG_OK"] = "እሺ"; -Blockly.Msg["DISABLE_BLOCK"] = "ብሎኩን ለጊዜው ያጥፉ"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ቅጂ"; -Blockly.Msg["DUPLICATE_COMMENT"] = "ማስታወሻውን ይቅዱ"; -Blockly.Msg["ENABLE_BLOCK"] = "ብሎኩን ደግመው ያስጀምሩ"; -Blockly.Msg["EXPAND_ALL"] = "የብሎኮቹን መረጃዎች ዳግም ያስረዝሙ"; -Blockly.Msg["EXPAND_BLOCK"] = "የብሎኩን መረጃ ዳግም ያስረዝሙ"; -Blockly.Msg["EXTERNAL_INPUTS"] = "የውጪ ግብዓቶች"; -Blockly.Msg["HELP"] = "እገዛ"; -Blockly.Msg["INLINE_INPUTS"] = "የውስጥ ግብዓቶች"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ከእንደገና"; -Blockly.Msg["REMOVE_COMMENT"] = "ማስታወሻ ያጥፉ"; -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "ዛሬ"; -Blockly.Msg["UNDO"] = "ይቀልብሱ"; -Blockly.Msg["UNNAMED_KEY"] = "ያልተሰየመ"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ማስታወሻ ያክሉ"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "ብሎኮቹን ይሰድሩ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "የብሎኮቹን መረጃዎች ያሳጥሩ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "የብሎኩን መረጃ ያሳጥሩ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "%1 ያህል ብሎኮች ይሰረዙ?"; +Blockly.Msg["DELETE_BLOCK"] = "ብሎኩን ይሰርዙ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ብሎኮች ይሰርዙ"; +Blockly.Msg["DIALOG_CANCEL"] = "ይቅር"; +Blockly.Msg["DIALOG_OK"] = "እሺ"; +Blockly.Msg["DISABLE_BLOCK"] = "ብሎኩን ለጊዜው ያጥፉ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ቅጂ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ማስታወሻውን ይቅዱ"; +Blockly.Msg["ENABLE_BLOCK"] = "ብሎኩን ደግመው ያስጀምሩ"; +Blockly.Msg["EXPAND_ALL"] = "የብሎኮቹን መረጃዎች ዳግም ያስረዝሙ"; +Blockly.Msg["EXPAND_BLOCK"] = "የብሎኩን መረጃ ዳግም ያስረዝሙ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "የውጪ ግብዓቶች"; +Blockly.Msg["HELP"] = "እገዛ"; +Blockly.Msg["INLINE_INPUTS"] = "የውስጥ ግብዓቶች"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ከእንደገና"; +Blockly.Msg["REMOVE_COMMENT"] = "ማስታወሻ ያጥፉ"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ዛሬ"; +Blockly.Msg["UNDO"] = "ይቀልብሱ"; +Blockly.Msg["UNNAMED_KEY"] = "ያልተሰየመ"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ar.js b/msg/js/ar.js index 0b62fc5ec66..726244cbd96 100644 --- a/msg/js/ar.js +++ b/msg/js/ar.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "أضف تعليقًا"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "لايمكن حذف متغير \"%1\" بسبب انه جزء من الدالة \"%2\""; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "تغيير قيمة:"; -Blockly.Msg["CLEAN_UP"] = "ترتيب القطع"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "الكتل المطوية تحتوي على تحذيرات."; -Blockly.Msg["COLLAPSE_ALL"] = "إخفاء القطع"; -Blockly.Msg["COLLAPSE_BLOCK"] = "إخفاء القطعة"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "اللون 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "اللون 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبة"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "دمج"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دمج لونين ببعضهما البعض بنسبة (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ar.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "اختر لون من اللوحة."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "لون عشوائي"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "اختر لون بشكل عشوائي."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "أزرق"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "أخضر"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "أحمر"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "لون مع"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "إنشئ لون بالكمية المحددة من الأحمر, الأخضر والأزرق. بحيث يجب تكون كافة القيم بين 0 و 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "اخرج من الحلقة"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "استمر ابتداءا من التكرار التالي من الحلقة"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "اخرج من الحلقة الحالية."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "تخط ما تبقى من هذه الحلقة، واستمر ابتداءا من التكرار التالي."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "تحذير: يمكن استخدام هذه القطعة فقط داخل حلقة."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "لكل عنصر %1 في قائمة %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "لكل عنصر في قائمة ما، عين المتغير '%1' لهذا الغنصر، ومن ثم نفذ بعض الأوامر."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "عد بـ %1 من %2 إلى %3 بمعدل %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "اجعل المتغير %1 يأخذ القيم من رقم البداية الى رقم النهاية، وقم بالعد داخل المجال المحدد، وطبق أوامر القطع المحددة."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "إضف شرطا إلى القطعة الشرطية \"إذا\"."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "أضف شرط \"نهاية، إجمع\" إلى القطعة الشرطية \"إذا\"."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة الشرطية \"إذا\"."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "والا"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "وإﻻ إذا"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "إذا"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "إذا كانت قيمة ما تساوي صحيح, إذن قم بتنفيذ أمر ما."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "إذا كانت قيمة ما تساوي \"صحيح\"، إذن قم بتنفيذ أول قطعة من الأوامر. والا ،قم بتنفيذ القطعة الثانية من الأوامر."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا, إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا , إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر. إذا لم تكن هناك أي قيمة تساوي صحيح, قم بتنفيذ آخر قطعة من الأوامر."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ar.wikipedia.org/wiki/حلقة_تكرار"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "نفّذ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "كرر %1 مرات"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "نفّذ بعض الأوامر عدة مرات."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "اكرّر حتى"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "اكرّر طالما"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "بما ان القيمة خاطئة, نفّذ بعض الأوامر."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "بما ان القيمة صحيحة, نفّذ بعض الأوامر."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "حذف %1 قطعة؟"; -Blockly.Msg["DELETE_BLOCK"] = "احذف القطعة"; -Blockly.Msg["DELETE_VARIABLE"] = "حذف المتغير %1"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "حذف%1 1 استخدامات المتغير '%2'؟"; -Blockly.Msg["DELETE_X_BLOCKS"] = "احذف %1 قطع"; -Blockly.Msg["DIALOG_CANCEL"] = "إلغاء"; -Blockly.Msg["DIALOG_OK"] = "موافق"; -Blockly.Msg["DISABLE_BLOCK"] = "عطّل القطعة"; -Blockly.Msg["DUPLICATE_BLOCK"] = "مكرر"; -Blockly.Msg["DUPLICATE_COMMENT"] = "تعليق مكرر"; -Blockly.Msg["ENABLE_BLOCK"] = "أعد تفعيل القطعة"; -Blockly.Msg["EXPAND_ALL"] = "وسٌّع القطع"; -Blockly.Msg["EXPAND_BLOCK"] = "وسٌّع القطعة"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ادخال خارجي"; -Blockly.Msg["HELP"] = "مساعدة"; -Blockly.Msg["INLINE_INPUTS"] = "ادخال خطي"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "إنشئ قائمة فارغة"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "تقوم بإرجاع قائمة، طولها 0, لا تحتوي على أية سجلات البيانات"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "قائمة"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة قائمة القطع التالية."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "أتشئ قائمة مع"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "أضف عنصرا إلى القائمة."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "أنشىء قائمة من أي عدد من العناصر."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "أول"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# من نهاية"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "احصل على"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "احصل على و ازل"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "أخير"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "عشوائي"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ازل"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "يرجع العنصر الأول في قائمة ما."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "يقوم بإرجاع العنصر في الموضع المحدد في قائمة ما."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "يرجع العنصر الأخير في قائمة ما."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "يرجع عنصرا عشوائيا في قائمة."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "يزيل ويرجع العنصر الأول في قائمة."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "يزيل ويقوم بإرجاع العنصر في الموضع المحدد في قائمة ما."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "يزيل ويرجع العنصر الأخير في قائمة ما."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "يزيل و يرجع عنصرا عشوائيا في قائمة ما."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "يزيل العنصر الأول في قائمة ما."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "يزيل العنصر الموجود في الموضع المحدد في قائمة ما."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "يزيل العنصر الأخير في قائمة ما."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "يزيل عنصرا عشوائيا في قائمة ما."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "إلى # من نهاية"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "إلى #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "إلى الأخير"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "احصل على قائمة فرعية من الأول"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "احصل على قائمة فرعية من # من نهاية"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "احصل على قائمة فرعية من #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "يقوم بإنشاء نسخة من الجزء المحدد من قائمة ما."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 هو العنصر الأخير."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 هو العنصر الأول."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "ابحث على على التواجد الأول للعنصر"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "ابحث على التواجد الأخير للعنصر"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "تقوم بإرجاع مؤشر التواجد الأول/الأخير في القائمة. تقوم بإرجاع %1 إذا لم يتم العثور على النص."; -Blockly.Msg["LISTS_INLIST"] = "في قائمة"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 فارغ"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "يرجع \"صحيح\" إذا كانت القائمة فارغة."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "الطول من %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "تقوم بإرجاع طول قائمة."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "إنشئ قائمة مع العنصر %1 %2 مرات"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "انشئ قائمة تتألف من القيمة المعطاة متكررة لعدد محدد من المرات."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "عكس %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "عكس نسخة من القائمة."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "مثل"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "أدخل في"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "تعيين"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "يقوم بإدراج هذا العنصر في بداية قائمة."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "يقوم بإدخال العنصر في الموضع المحدد في قائمة ما."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "ألصق هذا العنصر بنهاية قائمة."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "ادخل العنصر عشوائياً في القائمة."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "يحدد العنصر الأول في قائمة."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "يحدد العنصر في الموضع المحدد في قائمة ما."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "يحدد العنصر الأخير في قائمة."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "يحدد عنصرا عشوائيا في قائمة."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "تصاعديا"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "تنازليا"; -Blockly.Msg["LISTS_SORT_TITLE"] = "رتب %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "فرز نسخة من القائمة."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "أبجديا، وتجاهل الحالة"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "رقمي"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "أبجديًا"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "إعداد قائمة من النصوص"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "إعداد نص من القائمة"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ضم قائمة النصوص في نص واحد، مفصولة بواسطة محدد."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "تقسيم النص إلى قائمة من النصوص، وكسر في كل محدد"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "مع محدد"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "خاطئ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "يرجع صحيح أو خاطئ."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "صحيح"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ar.wikipedia.org/wiki/متباينة_(جبر)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "يرجع صحيح إذا كان كلا المدخلات مساوية بعضها البعض."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "يرجع صحيح إذا كان الإدخال الأول أكبر من الإدخال الثاني."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "يرجع صحيح إذا كان الإدخال الأول أكبر من أو يساوي الإدخال الثاني."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "يرجع صحيح إذا كان الإدخال الأول أصغر من الإدخال الثاني."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "يرجع صحيح إذا كان الإدخال الأول أصغر من أو يساوي الإدخال الثاني."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "يرجع صحيح إذا كانت كلا المدخلات غير مساوية لبعضها البعض."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ليس %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "يرجع صحيح إذا كان الإدخال خاطئ . يرجع خاطئ إذا كان الإدخال صحيح."; -Blockly.Msg["LOGIC_NULL"] = "فارغ"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ترجع ملغى."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "أو"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ترجع صحيح إذا كان كلا المٌدخلات صحيح."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ترجع صحيح إذا كان واحد على الأقل من المدخلات صحيح."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "اختبار"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = ":https://ar.wikipedia.org/wiki/%3F"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "إذا كانت العبارة خاطئة"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "إذا كانت العبارة صحيحة"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "تحقق الشرط في 'الاختبار'. إذا كان الشرط صحيح، يقوم بإرجاع قيمة 'اذا كانت العبارة صحيحة'؛ خلاف ذلك يرجع قيمة 'اذا كانت العبارة خاطئة'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ar.wikipedia.org/wiki/حسابيات"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "يرجع مجموع الرقمين."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "يرجع حاصل قسمة الرقمين."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "يرجع الفرق بين الرقمين."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "يرجع حاصل ضرب الرقمين."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "يرجع الرقم الأول مرفوع إلى تربيع الرقم الثاني."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 من X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "عودة قوس ظل النقطة (س، ص) بالدرجات من -180 إلى 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "غير %1 بـ %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "إضف رقم إلى متغير '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ar.wikipedia.org/wiki/ثابت رياضي"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ير جع واحد من الثوابت الشائعة : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "تقيد %1 منخفض %2 مرتفع %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "تقييد العددليكون بين الحدود المحددة (ضمناً)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "قابل للقسمة"; -Blockly.Msg["MATH_IS_EVEN"] = "هو زوجي"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "هو سالب"; -Blockly.Msg["MATH_IS_ODD"] = "هو فرذي"; -Blockly.Msg["MATH_IS_POSITIVE"] = "هو موجب"; -Blockly.Msg["MATH_IS_PRIME"] = "هو أولي"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "تحقق إذا كان عدد ما زوجيا، فرذيا, أوليا، صحيحا،موجبا أو سالبا، أو إذا كان قابلا للقسمة على عدد معين. يرجع صحيح أو خاطئ."; -Blockly.Msg["MATH_IS_WHOLE"] = "هو صحيح"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://tr.wikipedia.org/wiki/عامل_قسمة_مع_باقي"; -Blockly.Msg["MATH_MODULO_TITLE"] = "باقي %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "يرجع الباقي من قسمة الرقمين."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ar.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "عدد ما."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "متوسط القائمة"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "الحد الأقصى لقائمة"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "متوسط القائمة"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "الحد الأدنى من قائمة"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "منوال القائمة"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "عنصر عشوائي من القائمة"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "الانحراف المعياري للقائمة"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "مجموع القائمة"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "يرجع المعدل (الوسط الحسابي) للقيم الرقمية في القائمة."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "يرجع أكبر عدد في القائمة."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "يرجع وسيط العدد في القائمة."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "يرجع أصغر رقم في القائمة."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "يرجع قائمة من العنصر أو العناصر الأكثر شيوعاً في القائمة."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "يرجع عنصر عشوائي من القائمة."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "يرجع الانحراف المعياري للقائمة."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "يرجع مجموع كافة الأرقام الموجودة في القائمة."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "كسر عشوائي"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "يرجع جزء عشوائي بين 0.0 (ضمنياً) و 1.0 (خارجيا)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = " عدد صحيح عشوائي من %1 إلى %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "يرجع عدد صحيح عشوائي بين حدين محددين, ضمنيا."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ar.wikipedia.org/wiki/تقريب_(رياضيات)"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "تقريب"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "تقريب إلى اصغر عدد صحيح"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "تقريب الى اكبر عدد صحيح"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "تقريب الى اكبر عدد صحيح أو الى اصغر عدد صحيح."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ar.wikipedia.org/wiki/جذر_تربيعي"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "الجذر التربيعي"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "يرجع القيمة المطلقة لرقم."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "يرجع ه‍ (e) مرفوعا لأس بقيمة الرقم المدخل."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "يرجع اللوغاريتم الطبيعي لرقم."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "يرجع لوغاريتم عدد معين للاساس 10."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "يرجع عدد سالب."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "يرجع مضروب الرقم 10 في نفسه ."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "يرجع الجذر التربيعي للرقم."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "جيب تمام"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ar.wikipedia.org/wiki/دوال_مثلثية"; -Blockly.Msg["MATH_TRIG_SIN"] = "جيب"; -Blockly.Msg["MATH_TRIG_TAN"] = "ظل"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "يرجع قوس جيب التمام لرقم."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "يرجع قوس الجيب للرقم."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "يرجع قوس الظل للرقم."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "يرجع جيب التمام لدرجة (لا زواية نصف قطرية)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "يرجع جيب التمام لدرجة (لا زواية نصف قطرية)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "يرجع الظل لدرجة (لا دائرة نصف قطرية)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "انشاء متغير لوني..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "انشاء متغير رقمي..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "انشاء متغير نصي..."; -Blockly.Msg["NEW_VARIABLE"] = "إنشاء متغير..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "اسم المتغير الجديد:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "نوع متغير جديد:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اسمح بالبيانات"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "مع:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ar.wikipedia.org/wiki/دالة_(برمجة)"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "تشغيل الدالة المعرفة من قبل المستخدم '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ar.wikipedia.org/wiki/دالة_(برمجة)"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "تشغيل الدالة المعرفة من قبل المستخدم %1 واستخدام مخرجاتها."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "مع:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "إنشئ '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "صف هذه الوظيفة..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://ar.wikipedia.org/wiki/دالة_(برمجة)"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "القيام بشيء ما"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "إلى"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "انشئ دالة بدون مخرجات ."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/دالة_(برمجة)"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "يرجع"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "انشئ دالة مع المخرجات."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "تحذير: هذه الدالة تحتوي على معلمات مكررة."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "تسليط الضوء على تعريف الدالة"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "إذا كانت القيمة صحيحة ، اذان قم بارجاع القيمة الثانية."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "تحذير:هذه القطعة تستخدم فقط داخل تعريف دالة."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "اسم الإدخال:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "أضف مدخلا إلى الوظيفة."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "المدخلات"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "إضافة أو إزالة أو إعادة ترتيب المدخلات لهذه المهمة."; -Blockly.Msg["REDO"] = "إعادة"; -Blockly.Msg["REMOVE_COMMENT"] = "أزل التعليق"; -Blockly.Msg["RENAME_VARIABLE"] = "إعادة تسمية المتغير..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "إعادة تسمية كافة المتغيرات '%1' إلى:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "إلى %1 إلصق نص %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "إلصق جزءا من النص إلى متغير '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "الى حروف صغيرة"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "الى حروف العنوان"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "الى حروف كبيرة"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "يرجع نسخة من النص في حالة مختلفة."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "احصل على الحرف الأول"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "الحصول على الحرف # من نهاية"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "الحصول على الحرف #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "احصل على آخر حرف"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "الحصول على حرف عشوائي"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "في النص %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "يرجع حرف ما في الموضع المحدد."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "العدد %1 في %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "احسب كم عدد بعض النصوص تتكرر ضمن نص اخر."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "إضف عنصر إلى النص."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "الانضمام إلى"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "أضف, إحذف, أو أعد ترتيب المقاطع لإعادة تكوين النص من القطع التالية."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "إلى حرف # من نهاية"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "إلى حرف #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "إلى آخر حرف"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "في النص"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "الحصول على سلسلة فرعية من الحرف الأول"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "الحصول على سلسلة حروف فرعية من الحرف # من نهاية"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "الحصول على سلسلة حروف فرعية من الحرف #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "يرجع جزء معين من النص."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ابحث عن التواجد الأول للنص"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ابحث عن التواجد الأخير للنص"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "في النص %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "تقوم بإرجاع مؤشر التواجد الأول/الأخير للنص الأول في النص الثاني. تقوم بإرجاع %1 إذا لم يتم العثور على النص."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 فارغ"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "يرجع \"صحيح\" إذا كان النص المقدم فارغ."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "انشئ نص مع"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "أنشئ جزء من النص بالصاق أي عدد من العناصر ببعضها البعض."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "تقوم بإرجاع عدد الاحرف (بما في ذلك الفراغات) في النص المقدم."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "اطبع %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "اطبع النص المحدد أو العدد أو قيمة أخرى."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "انتظر ادخال المستخذم لرقم ما."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "انتظر ادخال المستخدم لنص ما."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "انتظر ادخال المستخدم لرقم ما مع اظهار رسالة"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "انتظر ادخال المستخدم لنص ما مع اظهار رسالة"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "بدل %1 ب %2 في %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "استبدل جميع حالات حدوث بعض النصوص داخل نص آخر."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "عكس %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "يعكس ترتيب حروف النص"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ar.wikipedia.org/wiki/سلسلة_(علم_الحاسوب)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "حرف أو كلمة أو سطر من النص."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "إزالة الفراغات من كلا الجانبين"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "إزالة الفراغات من الجانب الأيسر من"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "إزالة الفراغات من الجانب الأيمن من"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "يرجع نسخة من النص مع حذف من أحد أو كلا الفراغات من أطرافه."; -Blockly.Msg["TODAY"] = "اليوم"; -Blockly.Msg["UNDO"] = "رجوع"; -Blockly.Msg["UNNAMED_KEY"] = "غير مسمى"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "البند"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "انشئ 'التعيين %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "يرجع قيمة هذا المتغير."; -Blockly.Msg["VARIABLES_SET"] = "تعيين %1 إلى %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "انشئ 'احصل على %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "تعيين هذا المتغير لتكون مساوية للقيمة المدخلة."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "المتغير '%1' موجود بالفعل"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "متغير بأسم '%1' معرف من نوع اخر : '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "مساحة عمل بلوكلي"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "قل شيئا..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "أضف تعليقًا"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "لايمكن حذف متغير \"%1\" بسبب انه جزء من الدالة \"%2\""; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "تغيير قيمة:"; +Blockly.Msg["CLEAN_UP"] = "ترتيب القطع"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "الكتل المطوية تحتوي على تحذيرات."; +Blockly.Msg["COLLAPSE_ALL"] = "إخفاء القطع"; +Blockly.Msg["COLLAPSE_BLOCK"] = "إخفاء القطعة"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "اللون 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "اللون 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبة"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "دمج"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دمج لونين ببعضهما البعض بنسبة (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ar.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "اختر لون من اللوحة."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "لون عشوائي"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "اختر لون بشكل عشوائي."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "أزرق"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "أخضر"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "أحمر"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "لون مع"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "إنشئ لون بالكمية المحددة من الأحمر, الأخضر والأزرق. بحيث يجب تكون كافة القيم بين 0 و 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "اخرج من الحلقة"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "استمر ابتداءا من التكرار التالي من الحلقة"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "اخرج من الحلقة الحالية."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "تخط ما تبقى من هذه الحلقة، واستمر ابتداءا من التكرار التالي."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "تحذير: يمكن استخدام هذه القطعة فقط داخل حلقة."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "لكل عنصر %1 في قائمة %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "لكل عنصر في قائمة ما، عين المتغير '%1' لهذا الغنصر، ومن ثم نفذ بعض الأوامر."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "عد بـ %1 من %2 إلى %3 بمعدل %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "اجعل المتغير %1 يأخذ القيم من رقم البداية الى رقم النهاية، وقم بالعد داخل المجال المحدد، وطبق أوامر القطع المحددة."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "إضف شرطا إلى القطعة الشرطية \"إذا\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "أضف شرط \"نهاية، إجمع\" إلى القطعة الشرطية \"إذا\"."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة الشرطية \"إذا\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "والا"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "وإﻻ إذا"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "إذا"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "إذا كانت قيمة ما تساوي صحيح, إذن قم بتنفيذ أمر ما."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "إذا كانت قيمة ما تساوي \"صحيح\"، إذن قم بتنفيذ أول قطعة من الأوامر. والا ،قم بتنفيذ القطعة الثانية من الأوامر."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا, إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا , إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر. إذا لم تكن هناك أي قيمة تساوي صحيح, قم بتنفيذ آخر قطعة من الأوامر."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ar.wikipedia.org/wiki/حلقة_تكرار"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "نفّذ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "كرر %1 مرات"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "نفّذ بعض الأوامر عدة مرات."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "اكرّر حتى"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "اكرّر طالما"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "بما ان القيمة خاطئة, نفّذ بعض الأوامر."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "بما ان القيمة صحيحة, نفّذ بعض الأوامر."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "حذف %1 قطعة؟"; +Blockly.Msg["DELETE_BLOCK"] = "احذف القطعة"; +Blockly.Msg["DELETE_VARIABLE"] = "حذف المتغير %1"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "حذف%1 1 استخدامات المتغير '%2'؟"; +Blockly.Msg["DELETE_X_BLOCKS"] = "احذف %1 قطع"; +Blockly.Msg["DIALOG_CANCEL"] = "إلغاء"; +Blockly.Msg["DIALOG_OK"] = "موافق"; +Blockly.Msg["DISABLE_BLOCK"] = "عطّل القطعة"; +Blockly.Msg["DUPLICATE_BLOCK"] = "مكرر"; +Blockly.Msg["DUPLICATE_COMMENT"] = "تعليق مكرر"; +Blockly.Msg["ENABLE_BLOCK"] = "أعد تفعيل القطعة"; +Blockly.Msg["EXPAND_ALL"] = "وسٌّع القطع"; +Blockly.Msg["EXPAND_BLOCK"] = "وسٌّع القطعة"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ادخال خارجي"; +Blockly.Msg["HELP"] = "مساعدة"; +Blockly.Msg["INLINE_INPUTS"] = "ادخال خطي"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "إنشئ قائمة فارغة"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "تقوم بإرجاع قائمة، طولها 0, لا تحتوي على أية سجلات البيانات"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "قائمة"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة قائمة القطع التالية."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "أتشئ قائمة مع"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "أضف عنصرا إلى القائمة."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "أنشىء قائمة من أي عدد من العناصر."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "أول"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# من نهاية"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "احصل على"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "احصل على و ازل"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "أخير"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "عشوائي"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ازل"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "يرجع العنصر الأول في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "يقوم بإرجاع العنصر في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "يرجع العنصر الأخير في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "يرجع عنصرا عشوائيا في قائمة."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "يزيل ويرجع العنصر الأول في قائمة."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "يزيل ويقوم بإرجاع العنصر في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "يزيل ويرجع العنصر الأخير في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "يزيل و يرجع عنصرا عشوائيا في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "يزيل العنصر الأول في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "يزيل العنصر الموجود في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "يزيل العنصر الأخير في قائمة ما."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "يزيل عنصرا عشوائيا في قائمة ما."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "إلى # من نهاية"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "إلى #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "إلى الأخير"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "احصل على قائمة فرعية من الأول"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "احصل على قائمة فرعية من # من نهاية"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "احصل على قائمة فرعية من #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "يقوم بإنشاء نسخة من الجزء المحدد من قائمة ما."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 هو العنصر الأخير."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 هو العنصر الأول."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "ابحث على على التواجد الأول للعنصر"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "ابحث على التواجد الأخير للعنصر"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "تقوم بإرجاع مؤشر التواجد الأول/الأخير في القائمة. تقوم بإرجاع %1 إذا لم يتم العثور على النص."; +Blockly.Msg["LISTS_INLIST"] = "في قائمة"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 فارغ"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "يرجع \"صحيح\" إذا كانت القائمة فارغة."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "الطول من %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "تقوم بإرجاع طول قائمة."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "إنشئ قائمة مع العنصر %1 %2 مرات"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "انشئ قائمة تتألف من القيمة المعطاة متكررة لعدد محدد من المرات."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "عكس %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "عكس نسخة من القائمة."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "مثل"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "أدخل في"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "تعيين"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "يقوم بإدراج هذا العنصر في بداية قائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "يقوم بإدخال العنصر في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "ألصق هذا العنصر بنهاية قائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "ادخل العنصر عشوائياً في القائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "يحدد العنصر الأول في قائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "يحدد العنصر في الموضع المحدد في قائمة ما."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "يحدد العنصر الأخير في قائمة."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "يحدد عنصرا عشوائيا في قائمة."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "تصاعديا"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "تنازليا"; +Blockly.Msg["LISTS_SORT_TITLE"] = "رتب %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "فرز نسخة من القائمة."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "أبجديا، وتجاهل الحالة"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "رقمي"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "أبجديًا"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "إعداد قائمة من النصوص"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "إعداد نص من القائمة"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ضم قائمة النصوص في نص واحد، مفصولة بواسطة محدد."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "تقسيم النص إلى قائمة من النصوص، وكسر في كل محدد"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "مع محدد"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "خاطئ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "يرجع صحيح أو خاطئ."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "صحيح"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ar.wikipedia.org/wiki/متباينة_(جبر)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "يرجع صحيح إذا كان كلا المدخلات مساوية بعضها البعض."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "يرجع صحيح إذا كان الإدخال الأول أكبر من الإدخال الثاني."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "يرجع صحيح إذا كان الإدخال الأول أكبر من أو يساوي الإدخال الثاني."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "يرجع صحيح إذا كان الإدخال الأول أصغر من الإدخال الثاني."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "يرجع صحيح إذا كان الإدخال الأول أصغر من أو يساوي الإدخال الثاني."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "يرجع صحيح إذا كانت كلا المدخلات غير مساوية لبعضها البعض."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ليس %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "يرجع صحيح إذا كان الإدخال خاطئ . يرجع خاطئ إذا كان الإدخال صحيح."; +Blockly.Msg["LOGIC_NULL"] = "فارغ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ترجع ملغى."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "أو"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ترجع صحيح إذا كان كلا المٌدخلات صحيح."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ترجع صحيح إذا كان واحد على الأقل من المدخلات صحيح."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "اختبار"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = ":https://ar.wikipedia.org/wiki/%3F"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "إذا كانت العبارة خاطئة"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "إذا كانت العبارة صحيحة"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "تحقق الشرط في 'الاختبار'. إذا كان الشرط صحيح، يقوم بإرجاع قيمة 'اذا كانت العبارة صحيحة'؛ خلاف ذلك يرجع قيمة 'اذا كانت العبارة خاطئة'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ar.wikipedia.org/wiki/حسابيات"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "يرجع مجموع الرقمين."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "يرجع حاصل قسمة الرقمين."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "يرجع الفرق بين الرقمين."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "يرجع حاصل ضرب الرقمين."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "يرجع الرقم الأول مرفوع إلى تربيع الرقم الثاني."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 من X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "عودة قوس ظل النقطة (س، ص) بالدرجات من -180 إلى 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "غير %1 بـ %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "إضف رقم إلى متغير '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ar.wikipedia.org/wiki/ثابت رياضي"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ير جع واحد من الثوابت الشائعة : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "تقيد %1 منخفض %2 مرتفع %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "تقييد العددليكون بين الحدود المحددة (ضمناً)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "قابل للقسمة"; +Blockly.Msg["MATH_IS_EVEN"] = "هو زوجي"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "هو سالب"; +Blockly.Msg["MATH_IS_ODD"] = "هو فرذي"; +Blockly.Msg["MATH_IS_POSITIVE"] = "هو موجب"; +Blockly.Msg["MATH_IS_PRIME"] = "هو أولي"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "تحقق إذا كان عدد ما زوجيا، فرذيا, أوليا، صحيحا،موجبا أو سالبا، أو إذا كان قابلا للقسمة على عدد معين. يرجع صحيح أو خاطئ."; +Blockly.Msg["MATH_IS_WHOLE"] = "هو صحيح"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://tr.wikipedia.org/wiki/عامل_قسمة_مع_باقي"; +Blockly.Msg["MATH_MODULO_TITLE"] = "باقي %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "يرجع الباقي من قسمة الرقمين."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ar.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "عدد ما."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "متوسط القائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "الحد الأقصى لقائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "متوسط القائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "الحد الأدنى من قائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "منوال القائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "عنصر عشوائي من القائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "الانحراف المعياري للقائمة"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "مجموع القائمة"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "يرجع المعدل (الوسط الحسابي) للقيم الرقمية في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "يرجع أكبر عدد في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "يرجع وسيط العدد في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "يرجع أصغر رقم في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "يرجع قائمة من العنصر أو العناصر الأكثر شيوعاً في القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "يرجع عنصر عشوائي من القائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "يرجع الانحراف المعياري للقائمة."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "يرجع مجموع كافة الأرقام الموجودة في القائمة."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "كسر عشوائي"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "يرجع جزء عشوائي بين 0.0 (ضمنياً) و 1.0 (خارجيا)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = " عدد صحيح عشوائي من %1 إلى %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "يرجع عدد صحيح عشوائي بين حدين محددين, ضمنيا."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ar.wikipedia.org/wiki/تقريب_(رياضيات)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "تقريب"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "تقريب إلى اصغر عدد صحيح"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "تقريب الى اكبر عدد صحيح"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "تقريب الى اكبر عدد صحيح أو الى اصغر عدد صحيح."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ar.wikipedia.org/wiki/جذر_تربيعي"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "الجذر التربيعي"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "يرجع القيمة المطلقة لرقم."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "يرجع ه‍ (e) مرفوعا لأس بقيمة الرقم المدخل."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "يرجع اللوغاريتم الطبيعي لرقم."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "يرجع لوغاريتم عدد معين للاساس 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "يرجع عدد سالب."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "يرجع مضروب الرقم 10 في نفسه ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "يرجع الجذر التربيعي للرقم."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "جيب تمام"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ar.wikipedia.org/wiki/دوال_مثلثية"; +Blockly.Msg["MATH_TRIG_SIN"] = "جيب"; +Blockly.Msg["MATH_TRIG_TAN"] = "ظل"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "يرجع قوس جيب التمام لرقم."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "يرجع قوس الجيب للرقم."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "يرجع قوس الظل للرقم."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "يرجع جيب التمام لدرجة (لا زواية نصف قطرية)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "يرجع جيب التمام لدرجة (لا زواية نصف قطرية)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "يرجع الظل لدرجة (لا دائرة نصف قطرية)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "انشاء متغير لوني..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "انشاء متغير رقمي..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "انشاء متغير نصي..."; +Blockly.Msg["NEW_VARIABLE"] = "إنشاء متغير..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "اسم المتغير الجديد:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "نوع متغير جديد:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اسمح بالبيانات"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "مع:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ar.wikipedia.org/wiki/دالة_(برمجة)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "تشغيل الدالة المعرفة من قبل المستخدم '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ar.wikipedia.org/wiki/دالة_(برمجة)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "تشغيل الدالة المعرفة من قبل المستخدم %1 واستخدام مخرجاتها."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "مع:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "إنشئ '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "صف هذه الوظيفة..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://ar.wikipedia.org/wiki/دالة_(برمجة)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "القيام بشيء ما"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "إلى"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "انشئ دالة بدون مخرجات ."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/دالة_(برمجة)"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "يرجع"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "انشئ دالة مع المخرجات."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "تحذير: هذه الدالة تحتوي على معلمات مكررة."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "تسليط الضوء على تعريف الدالة"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "إذا كانت القيمة صحيحة ، اذان قم بارجاع القيمة الثانية."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "تحذير:هذه القطعة تستخدم فقط داخل تعريف دالة."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "اسم الإدخال:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "أضف مدخلا إلى الوظيفة."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "المدخلات"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "إضافة أو إزالة أو إعادة ترتيب المدخلات لهذه المهمة."; +Blockly.Msg["REDO"] = "إعادة"; +Blockly.Msg["REMOVE_COMMENT"] = "أزل التعليق"; +Blockly.Msg["RENAME_VARIABLE"] = "إعادة تسمية المتغير..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "إعادة تسمية كافة المتغيرات '%1' إلى:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "إلى %1 إلصق نص %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "إلصق جزءا من النص إلى متغير '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "الى حروف صغيرة"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "الى حروف العنوان"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "الى حروف كبيرة"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "يرجع نسخة من النص في حالة مختلفة."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "احصل على الحرف الأول"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "الحصول على الحرف # من نهاية"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "الحصول على الحرف #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "احصل على آخر حرف"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "الحصول على حرف عشوائي"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "في النص %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "يرجع حرف ما في الموضع المحدد."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "العدد %1 في %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "احسب كم عدد بعض النصوص تتكرر ضمن نص اخر."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "إضف عنصر إلى النص."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "الانضمام إلى"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "أضف, إحذف, أو أعد ترتيب المقاطع لإعادة تكوين النص من القطع التالية."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "إلى حرف # من نهاية"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "إلى حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "إلى آخر حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "في النص"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "الحصول على سلسلة فرعية من الحرف الأول"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "الحصول على سلسلة حروف فرعية من الحرف # من نهاية"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "الحصول على سلسلة حروف فرعية من الحرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "يرجع جزء معين من النص."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ابحث عن التواجد الأول للنص"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ابحث عن التواجد الأخير للنص"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "في النص %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "تقوم بإرجاع مؤشر التواجد الأول/الأخير للنص الأول في النص الثاني. تقوم بإرجاع %1 إذا لم يتم العثور على النص."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 فارغ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "يرجع \"صحيح\" إذا كان النص المقدم فارغ."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "انشئ نص مع"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "أنشئ جزء من النص بالصاق أي عدد من العناصر ببعضها البعض."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "تقوم بإرجاع عدد الاحرف (بما في ذلك الفراغات) في النص المقدم."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "اطبع %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "اطبع النص المحدد أو العدد أو قيمة أخرى."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "انتظر ادخال المستخذم لرقم ما."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "انتظر ادخال المستخدم لنص ما."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "انتظر ادخال المستخدم لرقم ما مع اظهار رسالة"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "انتظر ادخال المستخدم لنص ما مع اظهار رسالة"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "بدل %1 ب %2 في %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "استبدل جميع حالات حدوث بعض النصوص داخل نص آخر."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "عكس %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "يعكس ترتيب حروف النص"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ar.wikipedia.org/wiki/سلسلة_(علم_الحاسوب)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "حرف أو كلمة أو سطر من النص."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "إزالة الفراغات من كلا الجانبين"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "إزالة الفراغات من الجانب الأيسر من"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "إزالة الفراغات من الجانب الأيمن من"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "يرجع نسخة من النص مع حذف من أحد أو كلا الفراغات من أطرافه."; +Blockly.Msg["TODAY"] = "اليوم"; +Blockly.Msg["UNDO"] = "رجوع"; +Blockly.Msg["UNNAMED_KEY"] = "غير مسمى"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "البند"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "انشئ 'التعيين %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "يرجع قيمة هذا المتغير."; +Blockly.Msg["VARIABLES_SET"] = "تعيين %1 إلى %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "انشئ 'احصل على %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "تعيين هذا المتغير لتكون مساوية للقيمة المدخلة."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "المتغير '%1' موجود بالفعل"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "متغير بأسم '%1' معرف من نوع اخر : '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "مساحة عمل بلوكلي"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "قل شيئا..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ast.js b/msg/js/ast.js index d74f2594d75..ed80486ca57 100644 --- a/msg/js/ast.js +++ b/msg/js/ast.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Encaboxar"; -Blockly.Msg["DIALOG_OK"] = "Aceutar"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Help"; // untranslated -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Encaboxar"; +Blockly.Msg["DIALOG_OK"] = "Aceutar"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/az.js b/msg/js/az.js index 70543dd5bcf..6197ed9ade8 100644 --- a/msg/js/az.js +++ b/msg/js/az.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Şərh əlavə et"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' dəyişənini silmək mümkün deyil, çünki o '%2' funksiyasının təyin hissəsidir"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Qiyməti dəyiş:"; -Blockly.Msg["CLEAN_UP"] = "Blokları təmizlə"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Blokları yığ"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Bloku yığ"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "rəng 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "rəng 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "nisbət"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "qarışdır"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "İki rəngi verilmiş nisbətdə (0,0 - 1,0) qarışdırır."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://az.wikipedia.org/wiki/Rəng"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Palitradan bir rəng seçin."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "təsadüfi rəng"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Təsadüfi bir rəng seçin."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "mavi"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "yaşıl"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "qırmızı"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "rənglə"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Qırmızı, yaşıl və mavinin göstərilən miqdarı ilə bir rəng düzəlt. Bütün qiymətlər 0 ilə 100 arasında olmalıdır."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "dövrdən çıx"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "dövrün növbəti addımından davam et"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Cari dövrdən çıx."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Bu dövrün qalanını ötür və növbəti addımla davam et."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Xəbərdarlıq: Bu blok ancaq dövr daxilində istifadə oluna bilər."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "hər element üçün %1 siyahıda %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Siyahıdakı hər element üçün \"%1\" dəyişənini elementə mənimsət və bundan sonra bəzi əmrləri yerinə yetir."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "say: %1 %2 ilə başlayıb, %3 qiymətinə kimi %4 qədər dəyiş"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "\"%1\" dəyişəni başlanğıc ədəddən son ədədə qədər göstərilən aralıqla qiymətlər aldıqca göstərilən blokları yerinə yetir."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"Əgər\" blokuna bir şərt əlavə et."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "\"Əgər\" blokuna qalan bütün halları əhatə edəb son bir şərt əlavə et."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Bu \"əgər\" blokunu dəyişdirmək üçün bölümlərin yenisini əlavə et, sil və ya yerini dəyiş."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "əks halda"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "əks halda əgər"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "əgər"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Əgər qiymət doğrudursa, onda bəzi əmrləri yerinə yetir."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Əgər qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda isə ikinci əmrlər blokunu yerinə yetir."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir. Əgər qiymətlərdən heç biri doğru deyilsə, onda axırıncı əmrlər blokunu yerinə yetir."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://az.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "icra et"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 dəfə təkrar et"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Bəzi əmrləri bir neçə dəfə yerinə yetir."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "təkrar et, ta ki"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "təkrar et, hələ ki"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Hələ ki, qiymət \"yalan\"dır, bəzi əmrləri yerinə yetir."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Hələ ki, qiymət \"doğru\"dur, bəzi əmrləri yerinə yetir."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Bütün %1 blok silinsin?"; -Blockly.Msg["DELETE_BLOCK"] = "Bloku sil"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' adlı dəyişəni sil"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' dəyişəninin %1 istifadəsini silək?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 bloku sil"; -Blockly.Msg["DIALOG_CANCEL"] = "Ləğv et"; -Blockly.Msg["DIALOG_OK"] = "TAMAM"; -Blockly.Msg["DISABLE_BLOCK"] = "Bloku söndür"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Dublikat"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Şərhin nüsxəsini yarat"; -Blockly.Msg["ENABLE_BLOCK"] = "Bloku aktivləşdir"; -Blockly.Msg["EXPAND_ALL"] = "Blokları aç"; -Blockly.Msg["EXPAND_BLOCK"] = "Bloku aç"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Xarici girişlər"; -Blockly.Msg["HELP"] = "Kömək"; -Blockly.Msg["INLINE_INPUTS"] = "Sətiriçi girişlər"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "boş siyahı düzəlt"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Heç bir verilən qeyd olunmamış, uzunluğu 0 olan bir siyahı verir"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "siyahı"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Bu siyahı blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "bunlardan siyahı düzəlt"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Siyahıya element əlavə edin."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "İstənilən ölçülü siyahı yaradın."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "birinci"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "axırdan # nömrəli"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "götür"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "götür və sil"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "axırıncı"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "təsadüfi"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "yığışdır"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Siyahının ilk elementini qaytarır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Siyahıdan təyin olunmuş indeksli elementi qaytarır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Siyahının son elementini qaytarır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Siyahıdan hər hansı təsadüfi elementi qaytarır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Siyahıdan ilk elementi silir və qaytarır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Siyahıdan təyin olunmuş indeksli elementi silir və qaytarır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Siyahıdan son elementi silir və qaytarır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Siyahıdan təsadufi elementi silir və qaytarır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Siyahıdan ilk elementi silir."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Siyahıdan təyin olunmuş indeksli elementi silir."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Siyahıdan son elementi silir."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Siyahıdan təsadüfi bir elementi silir."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "sondan # nömrəliyə"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# nömrəliyə"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "Sonuncuya"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Birincidən alt-siyahını alın"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# sonuncudan alt-siyahını alın"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# - dən alt-siyahını alın"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Siyahının təyin olunmuş hissəsinin surətini yaradın."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 son elementdir."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ilk elementdir."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Element ilə ilk rastlaşma indeksini müəyyən edin"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "Element ilə son rastlaşma indeksini müəyyən edin"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Elementin siyahıda ilk/son rastlaşma indeksini qaytarır. Əgər siyahıda mətn tapılmadısa, %1 qaytarılır."; -Blockly.Msg["LISTS_INLIST"] = "siyahıda"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 boşdur"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Siyahı boşdursa \"doğru\" cavabını qaytarır."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 siyahısının uzunluğu"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Siyahının uzunluğunu verir."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 elementinin %2 dəfə təkrarlandığı siyahı düzəlt"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Təyin olunmuş elementin/qiymətin təyin olunmuş sayda təkrarlandığı siyahını yaradır."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "əksinə dəyiş %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Siyahının nüsxəsini əksinə dəyiş."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "Kimi"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "daxil et"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "təyin et"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Elementi siyahının əvvəlinə daxil edir."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Elementi siyahıda göstərilən yerə daxil edir."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Elementi siyahının sonuna artırır."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Elementi siyahıda təsadüfi seçilmiş bir yerə atır."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Siyahıda birinci elementi təyin edir."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Siyahının göstərilən yerdəki elementini təyin edir."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Siyahının sonuncu elementini təyin edir."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Siyahının təsadüfi seçilmiş bir elementini təyin edir."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "artan üzrə"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "azalan üzrə"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 sortlaşdır"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Siyahının nüsxəsini sortlaşdır."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "əlifba üzrə, registrı nəzərə almadan"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "say üzrə"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "əlifba üzrə"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "mətndən siyahı düzəlt"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "siyahıdan mətn düzəlt"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Mətnlər siyahısından ayırıcılarla birgə bir mətn yaradır."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Mətni ayırıcılara görə bölərək mətnlər siyahısı yaradır."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ayırıcıyla"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "səhf"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "\"doğru\" və ya \"səhf\" cavanını qaytarır."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "doğru"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://az.wikipedia.org/wiki/bərabərsizlik_(riyazi)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Girişlər bir birinə bərabərdirsə \"doğru\" cavabını qaytarır."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Birinci giriş ikincidən böyükdürsə \"doğru\" cavabını qaytarır."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Birinci giriş ikincidən böyük və ya bərarbərdirsə \"doğru\" cavabını qaytarır."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Birinci giriş ikincidən kiçikdirsə \"doğru\" cavabını qaytarır."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Birinci giriş ikincidən kiçik və ya bərarbərdirsə \"doğru\" cavabını qaytarır."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Girişlər bərabər deyillərsə \"doğru\" cavabını qaytarır."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 deyil"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Giriş \"yalan\"-dursa \"doğru\" cavabını qaytarır. Giriş \"doğru\"-dursa \"səhf\" cavabını qaytarır."; -Blockly.Msg["LOGIC_NULL"] = "boş"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Boş cavab qaytarır."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "və"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "və ya"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Hər iki giriş \"doğru\"-dursa \"doğru\" cavabını qaytarır."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Girişlərdən heç olmasa biri \"doğru\"-dursa \"doğru\" cavabını qaytarır."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "əgər səhvdirsə"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "əgər doğrudursa"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'Yoxla' əmrindəki şərtə nəzər yetirin. Əgər şərt \"doğru\"-dursa \"əgər doğru\", əks halda isə \"əgər yalan\" cavabını qaytarır."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://az.wikipedia.org/wiki/Hesab"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "İki ədədin cəmini qaytarır."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "İki ədədin nisbətini qaytarır."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "İki ədədin fərqini qaytarır."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "İki ədədin hasilini verir."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Birinci ədədin ikinci ədəd dərəcəsindən qüvvətini qaytarır."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "(X,Y) nöqtələrinin -180 - 180 dərəcədə arktangensini hesabla."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "dəyiş: %1 buna: %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "'%1' dəyişəninin üzərinə bir ədəd artır."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://az.wikipedia.org/wiki/Riyazi_sabitlər"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ümumi sabitlərdən birini qaytarır π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), və ya ∞ (sonsuzluq)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 üçün ən aşağı %2, ən yuxarı %3 olmağı tələb et"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Bir ədədin verilmiş iki ədəd arasında olmasını tələb edir (sərhədlər də daxil olmaqla)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "bölünür"; -Blockly.Msg["MATH_IS_EVEN"] = "cütdür"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "mənfidir"; -Blockly.Msg["MATH_IS_ODD"] = "təkdir"; -Blockly.Msg["MATH_IS_POSITIVE"] = "müsbətdir"; -Blockly.Msg["MATH_IS_PRIME"] = "sadədir"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Bir ədədin cüt, tək, sadə, tam, müsbət, mənfi olmasını və ya müəyyən bir ədədə bölünməsini yoxlayır. \"Doğru\" və ya \"yalan\" qiymətini qaytarır."; -Blockly.Msg["MATH_IS_WHOLE"] = "tamdır"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 bölməsinin qalığı"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "İki ədədin nisbətindən alınan qalığı qaytarır."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://az.wikipedia.org/wiki/Ədəd"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ədəd."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "siyahının ədədi ortası"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "siyahının maksimumu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "siyahının medianı"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "siyahının minimumu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Siyahı modları( Ən çox rastlaşılan elementləri)"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "siyahıdan təsadüfi seçilmiş bir element"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Siyahının standart deviasiyası"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Siyahının cəmi"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Siyahıdaki ədədlərin ədədi ortasını qaytarır."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Siyahıdaki ən böyük elementi qaytarır."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Siyahının median elementini qaytarır."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Siyahıdaki ən kiçik ədədi qaytarır."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Siyahıdaki ən çox rastlanan element(lər)dən ibarət siyahı qaytarır."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Siyahıdan təsadüfi bir element qaytarır."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Siyahının standart deviasiyasını qaytarır."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Siyahıdakı bütün ədədlərin cəmini qaytarır."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "təsadüfi kəsr"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (daxil olmaqla) və 1.0 (daxil olmamaqla) ədədlərinin arasından təsadüfi bir kəsr ədəd qaytarır."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1 ilə %2 arasından təsadüfi tam ədəd"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Verilmiş iki ədəd arasından (ədədrlər də daxil olmaqla) təsadüfi bir tam ədəd qaytarır."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "yuvarlaqlaşdır"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "aşağı yuvarlaqlaşdır"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "yuxarı yuvarlaqlaşdır"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Ədədi aşağı və ya yuxari yuvarlaqşdır."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://az.wikipedia.org/wiki/Kvadrat_kökləri"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "modul"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadrat kök"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ədədin modulunu qaytarır."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "e sabitinin verilmiş ədədə qüvvətini qaytarır."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ədədin natural loqarifmini tapır."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ədədin 10-cu dərəcədən loqarifmini tapır."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Ədədin əksini qaytarır."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10-un verilmiş ədədə qüvvətini qaytarır."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ədədin kvadrat kökünü qaytarır."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://az.wikipedia.org/wiki/Triqonometrik_funksiyalar"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tg"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ədədin arccosinusunu qaytarır."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ədədin arcsinusunu qaytarır."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ədədin arctanqensini qaytarır."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Dərəcənin kosinusunu qaytarır (radianın yox)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Dərəcənin sinusunu qaytar (radianın yox)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Dərəcənin tangensini qaytar (radianın yox)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Yeni rəng dəyişəni..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Yeni rəqəm dəyişəni..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Yeni sətir dəyişəni..."; -Blockly.Msg["NEW_VARIABLE"] = "Yeni dəyişən..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Yeni dəyişənin adı:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Yeni dəyişənin tipi:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "operatorlara icazə"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ilə:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Yaradılmış '%1' funksiyasını çalışdır."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Yaradılmış '%1' funksiyasını çalışdır və nəticəni istifadə et."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ilə:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' yarat"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Bu funksiyanı təsvir et"; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "hansısa əməliyyat"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "icra et:"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Nəticəsi olmayan funksiya yaradır."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "qaytar"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Nəticəsi olan funksiya yaradır."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Xəbərdarlıq: Bu funksiyanın təkrar olunmuş parametrləri var."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Funksiyanın təyinatını vurğula"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Əgər bir dəyər \"doğru\"-dursa onda ikinci dəyəri qaytar."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Xəbərdarlıq: Bu blok ancaq bir funksiyanın təyinatı daxilində işlədilə bilər."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Giriş adı:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Funksiyaya giriş parametrləri əlavə et."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "girişlər"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bu funksiyanın giriş parametrləri üçün əlavə et, sil, və ya yenilə."; -Blockly.Msg["REDO"] = "İrəli"; -Blockly.Msg["REMOVE_COMMENT"] = "Şərhi sil"; -Blockly.Msg["RENAME_VARIABLE"] = "Dəyişənin adını dəyiş..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Bütün '%1' dəyişənlərinin adını buna dəyiş:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "bu mətnin sonuna: %1 bu mətni əlavə et: %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' dəyişəninin sonuna nəsə əlavə et."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "kiçik hərflərlə"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Baş Hərflərlə"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "BÖYÜK HƏRFLƏRLƏ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Mətndə hərflərin böyük-kiçikliyini dəyiş."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "birinci hərfi götür"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "axırdan bu nömrəli hərfi götür"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "bu nömrəli hərfi götür"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "axırıncı hərfi götür"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "təsadüfi hərf götür"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "mətndə %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Göstərilən mövqedəki hərfi qaytarır."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2 içindən %1 sayını hesabla"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Hesablayaq, mətnin bu hissəsi başqa mətndə neçə dəfə rast gəlinir."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Mətnə bir element əlavə et."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "birləşdir"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Bu mətn blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "axırdan bu nömrəli hərfə qədər"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bu nömrəli hərfə qədər"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "son hərfə qədər"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "mətndə"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "Mətnin surətini ilk hərfdən"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "Mətnin surətini sondan bu nömrəli # hərfdən"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "Mətnin surətini bu nömrəli hərfdən"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Mətnin təyin olunmuş hissəsini qaytarır."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "Bu mətn ilə ilk rastlaşmanı tap:"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "Bu mətn ilə son rastlaşmanı tap:"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "mətndə %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Birinci mətnin ikinci mətndə ilk/son rastlaşma indeksini qaytarır. Əgər rastlaşma baş verməzsə, %1 qaytarır."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 boşdur"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Verilmiş mətn boşdursa, doğru qiymətini qaytarır."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "Verilmişlərlə mətn yarat"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "İxtiyari sayda elementlərinin birləşməsi ilə mətn parçası yarat."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 - ın uzunluğu"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Verilmiş mətndəki hərflərin(sözlər arası boşluqlar sayılmaqla) sayını qaytarır."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 - i çap elə"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Təyin olunmuş mətn, ədəd və ya hər hansı bir başqa elementi çap elə."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "İstifadəçiyə ədəd daxil etməsi üçün sorğu/tələb göndərin."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "İstifadəçiyə mətn daxil etməsi üçün sorğu/tələb göndərin."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "İstifadəçiyə ədəd daxil etməsi üçün sorğunu/tələbi ismarıc kimi göndərin"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "İstifadəçiyə mətn daxil etməsi üçün sorğunu/tələbi ismarıc ilə göndərin"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%3 -də %1 əvəz et %2"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Bütün uyğunluqlu bəzi mətnlərin digər bəzi mətnlərə dəyişdirilməsi."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "əksinə dəyiş %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Mətndəki simvolların ardıcıllığını əksinə dəyiş."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Mətndəki hərf, söz və ya sətir."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "boşluqları hər iki tərəfdən pozun"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "boşluqlari yalnız sol tərəfdən pozun"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "boşluqları yalnız sağ tərəfdən pozun"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Mətnin hər iki və ya yalnız bir tərəfdən olan boşluqları pozulmuş surətini qaytarın."; -Blockly.Msg["TODAY"] = "Bugün"; -Blockly.Msg["UNDO"] = "Geri"; -Blockly.Msg["UNNAMED_KEY"] = "adsız"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 - i təyin et' - i yarat"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Bu dəyişənin qiymətini qaytarır."; -Blockly.Msg["VARIABLES_SET"] = "%1 - i bu qiymət ilə təyin et: %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 - i götür' - ü yarat"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Bu dəyişəni daxil edilmiş qiymətə bərabər edir."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' adlı dəyişən artıq mövcuddur."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' adlı dəyişən artıq '%2': tipində istifadə edilir ."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Buraya nə isə yaz..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Şərh əlavə et"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' dəyişənini silmək mümkün deyil, çünki o '%2' funksiyasının təyin hissəsidir"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Qiyməti dəyiş:"; +Blockly.Msg["CLEAN_UP"] = "Blokları təmizlə"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Blokları yığ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bloku yığ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "rəng 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "rəng 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "nisbət"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "qarışdır"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "İki rəngi verilmiş nisbətdə (0,0 - 1,0) qarışdırır."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://az.wikipedia.org/wiki/Rəng"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Palitradan bir rəng seçin."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "təsadüfi rəng"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Təsadüfi bir rəng seçin."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "mavi"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "yaşıl"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "qırmızı"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "rənglə"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Qırmızı, yaşıl və mavinin göstərilən miqdarı ilə bir rəng düzəlt. Bütün qiymətlər 0 ilə 100 arasında olmalıdır."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "dövrdən çıx"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "dövrün növbəti addımından davam et"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Cari dövrdən çıx."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Bu dövrün qalanını ötür və növbəti addımla davam et."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Xəbərdarlıq: Bu blok ancaq dövr daxilində istifadə oluna bilər."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "hər element üçün %1 siyahıda %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Siyahıdakı hər element üçün \"%1\" dəyişənini elementə mənimsət və bundan sonra bəzi əmrləri yerinə yetir."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "say: %1 %2 ilə başlayıb, %3 qiymətinə kimi %4 qədər dəyiş"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "\"%1\" dəyişəni başlanğıc ədəddən son ədədə qədər göstərilən aralıqla qiymətlər aldıqca göstərilən blokları yerinə yetir."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"Əgər\" blokuna bir şərt əlavə et."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "\"Əgər\" blokuna qalan bütün halları əhatə edəb son bir şərt əlavə et."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Bu \"əgər\" blokunu dəyişdirmək üçün bölümlərin yenisini əlavə et, sil və ya yerini dəyiş."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "əks halda"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "əks halda əgər"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "əgər"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Əgər qiymət doğrudursa, onda bəzi əmrləri yerinə yetir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Əgər qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda isə ikinci əmrlər blokunu yerinə yetir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir. Əgər qiymətlərdən heç biri doğru deyilsə, onda axırıncı əmrlər blokunu yerinə yetir."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://az.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "icra et"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 dəfə təkrar et"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Bəzi əmrləri bir neçə dəfə yerinə yetir."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "təkrar et, ta ki"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "təkrar et, hələ ki"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Hələ ki, qiymət \"yalan\"dır, bəzi əmrləri yerinə yetir."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Hələ ki, qiymət \"doğru\"dur, bəzi əmrləri yerinə yetir."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Bütün %1 blok silinsin?"; +Blockly.Msg["DELETE_BLOCK"] = "Bloku sil"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' adlı dəyişəni sil"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' dəyişəninin %1 istifadəsini silək?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 bloku sil"; +Blockly.Msg["DIALOG_CANCEL"] = "Ləğv et"; +Blockly.Msg["DIALOG_OK"] = "TAMAM"; +Blockly.Msg["DISABLE_BLOCK"] = "Bloku söndür"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dublikat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Şərhin nüsxəsini yarat"; +Blockly.Msg["ENABLE_BLOCK"] = "Bloku aktivləşdir"; +Blockly.Msg["EXPAND_ALL"] = "Blokları aç"; +Blockly.Msg["EXPAND_BLOCK"] = "Bloku aç"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Xarici girişlər"; +Blockly.Msg["HELP"] = "Kömək"; +Blockly.Msg["INLINE_INPUTS"] = "Sətiriçi girişlər"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "boş siyahı düzəlt"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Heç bir verilən qeyd olunmamış, uzunluğu 0 olan bir siyahı verir"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "siyahı"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Bu siyahı blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "bunlardan siyahı düzəlt"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Siyahıya element əlavə edin."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "İstənilən ölçülü siyahı yaradın."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "birinci"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "axırdan # nömrəli"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "götür"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "götür və sil"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "axırıncı"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "təsadüfi"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "yığışdır"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Siyahının ilk elementini qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Siyahıdan təyin olunmuş indeksli elementi qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Siyahının son elementini qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Siyahıdan hər hansı təsadüfi elementi qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Siyahıdan ilk elementi silir və qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Siyahıdan təyin olunmuş indeksli elementi silir və qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Siyahıdan son elementi silir və qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Siyahıdan təsadufi elementi silir və qaytarır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Siyahıdan ilk elementi silir."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Siyahıdan təyin olunmuş indeksli elementi silir."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Siyahıdan son elementi silir."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Siyahıdan təsadüfi bir elementi silir."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "sondan # nömrəliyə"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# nömrəliyə"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "Sonuncuya"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Birincidən alt-siyahını alın"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# sonuncudan alt-siyahını alın"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# - dən alt-siyahını alın"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Siyahının təyin olunmuş hissəsinin surətini yaradın."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 son elementdir."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ilk elementdir."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Element ilə ilk rastlaşma indeksini müəyyən edin"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "Element ilə son rastlaşma indeksini müəyyən edin"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Elementin siyahıda ilk/son rastlaşma indeksini qaytarır. Əgər siyahıda mətn tapılmadısa, %1 qaytarılır."; +Blockly.Msg["LISTS_INLIST"] = "siyahıda"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 boşdur"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Siyahı boşdursa \"doğru\" cavabını qaytarır."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 siyahısının uzunluğu"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Siyahının uzunluğunu verir."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 elementinin %2 dəfə təkrarlandığı siyahı düzəlt"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Təyin olunmuş elementin/qiymətin təyin olunmuş sayda təkrarlandığı siyahını yaradır."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "əksinə dəyiş %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Siyahının nüsxəsini əksinə dəyiş."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "Kimi"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "daxil et"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "təyin et"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Elementi siyahının əvvəlinə daxil edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Elementi siyahıda göstərilən yerə daxil edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Elementi siyahının sonuna artırır."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Elementi siyahıda təsadüfi seçilmiş bir yerə atır."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Siyahıda birinci elementi təyin edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Siyahının göstərilən yerdəki elementini təyin edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Siyahının sonuncu elementini təyin edir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Siyahının təsadüfi seçilmiş bir elementini təyin edir."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "artan üzrə"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "azalan üzrə"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 sortlaşdır"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Siyahının nüsxəsini sortlaşdır."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "əlifba üzrə, registrı nəzərə almadan"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "say üzrə"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "əlifba üzrə"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "mətndən siyahı düzəlt"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "siyahıdan mətn düzəlt"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Mətnlər siyahısından ayırıcılarla birgə bir mətn yaradır."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Mətni ayırıcılara görə bölərək mətnlər siyahısı yaradır."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ayırıcıyla"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "səhf"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "\"doğru\" və ya \"səhf\" cavanını qaytarır."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "doğru"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://az.wikipedia.org/wiki/bərabərsizlik_(riyazi)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Girişlər bir birinə bərabərdirsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Birinci giriş ikincidən böyükdürsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Birinci giriş ikincidən böyük və ya bərarbərdirsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Birinci giriş ikincidən kiçikdirsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Birinci giriş ikincidən kiçik və ya bərarbərdirsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Girişlər bərabər deyillərsə \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 deyil"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Giriş \"yalan\"-dursa \"doğru\" cavabını qaytarır. Giriş \"doğru\"-dursa \"səhf\" cavabını qaytarır."; +Blockly.Msg["LOGIC_NULL"] = "boş"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Boş cavab qaytarır."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "və"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "və ya"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Hər iki giriş \"doğru\"-dursa \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Girişlərdən heç olmasa biri \"doğru\"-dursa \"doğru\" cavabını qaytarır."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "əgər səhvdirsə"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "əgər doğrudursa"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'Yoxla' əmrindəki şərtə nəzər yetirin. Əgər şərt \"doğru\"-dursa \"əgər doğru\", əks halda isə \"əgər yalan\" cavabını qaytarır."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://az.wikipedia.org/wiki/Hesab"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "İki ədədin cəmini qaytarır."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "İki ədədin nisbətini qaytarır."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "İki ədədin fərqini qaytarır."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "İki ədədin hasilini verir."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Birinci ədədin ikinci ədəd dərəcəsindən qüvvətini qaytarır."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "(X,Y) nöqtələrinin -180 - 180 dərəcədə arktangensini hesabla."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "dəyiş: %1 buna: %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "'%1' dəyişəninin üzərinə bir ədəd artır."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://az.wikipedia.org/wiki/Riyazi_sabitlər"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ümumi sabitlərdən birini qaytarır π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), və ya ∞ (sonsuzluq)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 üçün ən aşağı %2, ən yuxarı %3 olmağı tələb et"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Bir ədədin verilmiş iki ədəd arasında olmasını tələb edir (sərhədlər də daxil olmaqla)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "bölünür"; +Blockly.Msg["MATH_IS_EVEN"] = "cütdür"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "mənfidir"; +Blockly.Msg["MATH_IS_ODD"] = "təkdir"; +Blockly.Msg["MATH_IS_POSITIVE"] = "müsbətdir"; +Blockly.Msg["MATH_IS_PRIME"] = "sadədir"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Bir ədədin cüt, tək, sadə, tam, müsbət, mənfi olmasını və ya müəyyən bir ədədə bölünməsini yoxlayır. \"Doğru\" və ya \"yalan\" qiymətini qaytarır."; +Blockly.Msg["MATH_IS_WHOLE"] = "tamdır"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 bölməsinin qalığı"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "İki ədədin nisbətindən alınan qalığı qaytarır."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://az.wikipedia.org/wiki/Ədəd"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ədəd."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "siyahının ədədi ortası"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "siyahının maksimumu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "siyahının medianı"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "siyahının minimumu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Siyahı modları( Ən çox rastlaşılan elementləri)"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "siyahıdan təsadüfi seçilmiş bir element"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Siyahının standart deviasiyası"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Siyahının cəmi"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Siyahıdaki ədədlərin ədədi ortasını qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Siyahıdaki ən böyük elementi qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Siyahının median elementini qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Siyahıdaki ən kiçik ədədi qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Siyahıdaki ən çox rastlanan element(lər)dən ibarət siyahı qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Siyahıdan təsadüfi bir element qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Siyahının standart deviasiyasını qaytarır."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Siyahıdakı bütün ədədlərin cəmini qaytarır."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "təsadüfi kəsr"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (daxil olmaqla) və 1.0 (daxil olmamaqla) ədədlərinin arasından təsadüfi bir kəsr ədəd qaytarır."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1 ilə %2 arasından təsadüfi tam ədəd"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Verilmiş iki ədəd arasından (ədədrlər də daxil olmaqla) təsadüfi bir tam ədəd qaytarır."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "yuvarlaqlaşdır"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "aşağı yuvarlaqlaşdır"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "yuxarı yuvarlaqlaşdır"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Ədədi aşağı və ya yuxari yuvarlaqşdır."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://az.wikipedia.org/wiki/Kvadrat_kökləri"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "modul"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadrat kök"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ədədin modulunu qaytarır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "e sabitinin verilmiş ədədə qüvvətini qaytarır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ədədin natural loqarifmini tapır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ədədin 10-cu dərəcədən loqarifmini tapır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Ədədin əksini qaytarır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10-un verilmiş ədədə qüvvətini qaytarır."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ədədin kvadrat kökünü qaytarır."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://az.wikipedia.org/wiki/Triqonometrik_funksiyalar"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tg"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ədədin arccosinusunu qaytarır."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ədədin arcsinusunu qaytarır."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ədədin arctanqensini qaytarır."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Dərəcənin kosinusunu qaytarır (radianın yox)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Dərəcənin sinusunu qaytar (radianın yox)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Dərəcənin tangensini qaytar (radianın yox)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Yeni rəng dəyişəni..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Yeni rəqəm dəyişəni..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Yeni sətir dəyişəni..."; +Blockly.Msg["NEW_VARIABLE"] = "Yeni dəyişən..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Yeni dəyişənin adı:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Yeni dəyişənin tipi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "operatorlara icazə"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ilə:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Yaradılmış '%1' funksiyasını çalışdır."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Yaradılmış '%1' funksiyasını çalışdır və nəticəni istifadə et."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ilə:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' yarat"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Bu funksiyanı təsvir et"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "hansısa əməliyyat"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "icra et:"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Nəticəsi olmayan funksiya yaradır."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "qaytar"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Nəticəsi olan funksiya yaradır."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Xəbərdarlıq: Bu funksiyanın təkrar olunmuş parametrləri var."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Funksiyanın təyinatını vurğula"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Əgər bir dəyər \"doğru\"-dursa onda ikinci dəyəri qaytar."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Xəbərdarlıq: Bu blok ancaq bir funksiyanın təyinatı daxilində işlədilə bilər."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Giriş adı:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Funksiyaya giriş parametrləri əlavə et."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "girişlər"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bu funksiyanın giriş parametrləri üçün əlavə et, sil, və ya yenilə."; +Blockly.Msg["REDO"] = "İrəli"; +Blockly.Msg["REMOVE_COMMENT"] = "Şərhi sil"; +Blockly.Msg["RENAME_VARIABLE"] = "Dəyişənin adını dəyiş..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Bütün '%1' dəyişənlərinin adını buna dəyiş:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "bu mətnin sonuna: %1 bu mətni əlavə et: %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' dəyişəninin sonuna nəsə əlavə et."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "kiçik hərflərlə"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Baş Hərflərlə"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "BÖYÜK HƏRFLƏRLƏ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Mətndə hərflərin böyük-kiçikliyini dəyiş."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "birinci hərfi götür"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "axırdan bu nömrəli hərfi götür"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "bu nömrəli hərfi götür"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "axırıncı hərfi götür"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "təsadüfi hərf götür"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "mətndə %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Göstərilən mövqedəki hərfi qaytarır."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2 içindən %1 sayını hesabla"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Hesablayaq, mətnin bu hissəsi başqa mətndə neçə dəfə rast gəlinir."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Mətnə bir element əlavə et."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "birləşdir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Bu mətn blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "axırdan bu nömrəli hərfə qədər"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bu nömrəli hərfə qədər"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "son hərfə qədər"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "mətndə"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "Mətnin surətini ilk hərfdən"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "Mətnin surətini sondan bu nömrəli # hərfdən"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "Mətnin surətini bu nömrəli hərfdən"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Mətnin təyin olunmuş hissəsini qaytarır."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "Bu mətn ilə ilk rastlaşmanı tap:"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "Bu mətn ilə son rastlaşmanı tap:"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "mətndə %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Birinci mətnin ikinci mətndə ilk/son rastlaşma indeksini qaytarır. Əgər rastlaşma baş verməzsə, %1 qaytarır."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 boşdur"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Verilmiş mətn boşdursa, doğru qiymətini qaytarır."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "Verilmişlərlə mətn yarat"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "İxtiyari sayda elementlərinin birləşməsi ilə mətn parçası yarat."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 - ın uzunluğu"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Verilmiş mətndəki hərflərin(sözlər arası boşluqlar sayılmaqla) sayını qaytarır."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 - i çap elə"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Təyin olunmuş mətn, ədəd və ya hər hansı bir başqa elementi çap elə."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "İstifadəçiyə ədəd daxil etməsi üçün sorğu/tələb göndərin."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "İstifadəçiyə mətn daxil etməsi üçün sorğu/tələb göndərin."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "İstifadəçiyə ədəd daxil etməsi üçün sorğunu/tələbi ismarıc kimi göndərin"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "İstifadəçiyə mətn daxil etməsi üçün sorğunu/tələbi ismarıc ilə göndərin"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%3 -də %1 əvəz et %2"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Bütün uyğunluqlu bəzi mətnlərin digər bəzi mətnlərə dəyişdirilməsi."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "əksinə dəyiş %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Mətndəki simvolların ardıcıllığını əksinə dəyiş."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Mətndəki hərf, söz və ya sətir."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "boşluqları hər iki tərəfdən pozun"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "boşluqlari yalnız sol tərəfdən pozun"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "boşluqları yalnız sağ tərəfdən pozun"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Mətnin hər iki və ya yalnız bir tərəfdən olan boşluqları pozulmuş surətini qaytarın."; +Blockly.Msg["TODAY"] = "Bugün"; +Blockly.Msg["UNDO"] = "Geri"; +Blockly.Msg["UNNAMED_KEY"] = "adsız"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 - i təyin et' - i yarat"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Bu dəyişənin qiymətini qaytarır."; +Blockly.Msg["VARIABLES_SET"] = "%1 - i bu qiymət ilə təyin et: %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 - i götür' - ü yarat"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Bu dəyişəni daxil edilmiş qiymətə bərabər edir."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' adlı dəyişən artıq mövcuddur."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' adlı dəyişən artıq '%2': tipində istifadə edilir ."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Buraya nə isə yaz..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ba.js b/msg/js/ba.js index dac0938cc5d..1bfaa34a993 100644 --- a/msg/js/ba.js +++ b/msg/js/ba.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Фекер өҫтәргә"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Мәғәнәне үҙгәртегеҙ:"; -Blockly.Msg["CLEAN_UP"] = "Блоктарҙы таҙартырға"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Блоктарҙы төрөргә"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Блокты төрөргә"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1-се төҫ"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2-се төҫ"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "1-се төҫтөң өлөшө"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ҡатнаштырырға"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Ике төҫтө бирелгән нисбәттә болғата (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Төҫ"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Палитранан төҫ һайлағыҙ."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "осраҡлы төҫ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Төҫтө осраҡлылыҡ буйынса һайлай."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "зәңгәр"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "йәшелдән"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ҡыҙылдан"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ошонан төҫ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Бирелгән нисбәттәрҙә ҡыҙылдан, йәшелдән һәм зәңгәрҙән төҫ барлыҡҡа килә. Бөтә мәғәнәләр 0 менән 100 араһында булырға тейеш."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "циклдан сығырға"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "циклдың киләһе аҙымына күсергә"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Был циклды өҙә."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Циклдың ҡалдығын төшөрөп ҡалдыра һәм киләһе аҙымға күсә."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Иҫкәртеү: был блок цикл эсендә генә ҡулланыла ала."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "һәр элемент өсөн %1 исемлектә %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Исемлектәге һәр элемент өсөн үҙгәреүсәнгә элементтың '%1' мәғәнәһен бирә һәм күрһәтелгән командаларҙы үтәй."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Үҙгәреүсәнгә башынан аҙағына тиклем тәғәйен аҙым менән %1 мәғәнәне бирә һәм күрһәтелгән командаларҙы үтәй."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"Әгәр\" блогына шарт өҫтәй"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Бер шарт та дөрөҫ булмаған осраҡҡа йомғаҡлау ярҙамсы блогын өҫтәргә."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "\"Әгәр\" блогын ҡабаттан төҙөү өсөн киҫәктәрҙе өҫтәгеҙ, юйҙырығыҙ, урындарын алмаштырығыҙ."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "юғиһә"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "юғиһә, әгәр"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "әгәр"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Мәғәнә дөрөҫ булғанда, командаларҙы үтәй."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Шарт дөрөҫ булғанда, командаларҙың беренсе блогын үтәй. Улай булмаһа, командаларҙың икенсе блогы үтәлә."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Әгәр икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй. Бер шарт та дөрөҫ булмаһа, команда блоктарының һуңғыһын үтәй."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/Цикл_(программалау)"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "үтәргә"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = " %1 тапҡыр ҡабатларға"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Командаларҙы бер нисә тапҡыр үтәй."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ҡабатларға, әлегә юҡ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ҡабатларға, әлегә"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Мәғәнә ялған булғанда, командаларҙы ҡабатлай."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Мәғәнә дөрөҫ булғанда, командаларҙы ҡабатлай."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Бөтә %1 блоктарҙы юйырғамы?"; -Blockly.Msg["DELETE_BLOCK"] = "Блокты юйҙырырға"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = " %1 блокты юйҙырырға"; -Blockly.Msg["DIALOG_CANCEL"] = " Баш тартыу"; -Blockly.Msg["DIALOG_OK"] = "Яҡшы"; -Blockly.Msg["DISABLE_BLOCK"] = "Блокты һүндерергә"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Күсереп алырға"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Блокты тоҡандырырға"; -Blockly.Msg["EXPAND_ALL"] = "Блоктарҙы йәйергә"; -Blockly.Msg["EXPAND_BLOCK"] = "Блокты йәйергә"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Тышҡы өҫтәлмә"; -Blockly.Msg["HELP"] = "Ярҙам"; -Blockly.Msg["INLINE_INPUTS"] = "Эске өҫтәлмә"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "исемлек"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "менән исемлек төҙөргә"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "беренсе"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# аҙағынан"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "алырға"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "алырға һәм юйырға"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "аҙаҡҡы"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "осраҡлы"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "юйырға"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "исемлеккә"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 буш"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "оҙонлоғо %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "кеүек"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "өҫтәп ҡуйырға"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "йыйылма"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ялған"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Дөрөҫ йәки ялғанды ҡайтара."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "дөрөҫ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(математика)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Өҫтәмәләр тигеҙ булһа, дөрөҫ мәғәнәһен кире ҡайтара."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Беренсе өҫтәмә икенсеһенән ҙурыраҡ булһа, дөрөҫ мәғәнәһен кире ҡайтара."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Беренсе өҫтәмә икенсеһенән бәләкәйерәк булһа, дөрөҫ мәғәнәһен кире ҡайтара."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Өҫтәмәләр тигеҙ булмаһа, дөрөҫ мәғәнәһен кире ҡайтара."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 түгел"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Өҫтәлмә ялған булһа, дөрөҫ аңлатманы ҡайтара. Өҫтәлмә дөрөҫ булһа, ялған аңлатманы ҡайтара."; -Blockly.Msg["LOGIC_NULL"] = "нуль"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Нулде ҡайтара."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "һәм"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "йәки"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Әгәр ҙә ике өҫтәлмә лә тап килһә, дөрөҫ аңлатманы кире ҡайтара."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Өҫтәлмәләрҙең береһе генә дөрөҫ булһа, дөрөҫ аңлатманы ҡайтара."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тест"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "әгәр ялған булһа"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "әгәр дөрөҫ булһа"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Һайлау шартын тикшерә. Әгәр ул дөрөҫ булһа, беренсе мәғәнәне, хата булһа, икенсе мәғәнәне ҡайтара."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ba.wikipedia.org/wiki/Арифметика"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ике һандың суммаһын ҡайтара."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ике һандың бүлендеген ҡайтара."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ике һандың айырмаһын ҡайтара."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ике һандың ҡабатландығын ҡайтара."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Дәрәжәгә күтәрелгән икенсе һандан тәүгеһенә ҡайтара."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ba.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 тан %2 ҡа арттырырға"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Үҙгәреүсән һанға өҫтәй '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ba.wikipedia.org/wiki/Математик_константа"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Таралған константаның береһен күрһәтә: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) йәки ∞ (сикһеҙлек)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "сикләргә %1 аҫтан %2 өҫтән %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Һанды аҫтан һәм өҫтән сикләй (сиктәгеләрен индереп)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "бүленә"; -Blockly.Msg["MATH_IS_EVEN"] = "тағы"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "тиҫкәре"; -Blockly.Msg["MATH_IS_ODD"] = "сәйер"; -Blockly.Msg["MATH_IS_POSITIVE"] = "ыңғай"; -Blockly.Msg["MATH_IS_PRIME"] = "ябай"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Һандың йоп, таҡ, ябай, бөтөн, ыңғай, кире йәки билдәле һанға ҡарата ниндәй булыуын тикшерә. Дөрөҫ йә ялған мәғәнәһен күрһәтә."; -Blockly.Msg["MATH_IS_WHOLE"] = "бөтөн"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ba.wikipedia.org/wiki/Ҡалдыҡ_менән_бүлеү"; -Blockly.Msg["MATH_MODULO_TITLE"] = "ҡалдыҡ %1 : %2 араһында"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Ике һанды бүлеү ҡалдығын күрһәтә."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ba.wikipedia.org/wiki/Һан"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Рәт."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "исемлектең уртаса арифметик дәүмәле"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "исемлектәге иң ҙуры"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "исемлек медианаһы"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Исемлектәге иң бәләкәйе"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "исемлек модалары"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "исемлектең осраҡлы элементы"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "исемлекте стандарт кире ҡағыу"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "исемлек суммаһы"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Исемлектең уртаса арифметик дәүмәле күрһәтә."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Исемлектең иң ҙур һанын күрһәтә."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Исемлек медианаһын күрһәтә."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Исемлектәге иң бәләкәй һанды күрһәтә."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Исемлектең иң күп осраған элементтарын күрһәтә."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Исемлектең осраҡлы элементын күрһәтә."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Исемлекте стандарт кире ҡағыуҙы күрһәтә."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Исемлектәрҙәге һандар суммаһын күрһәтә."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "0 (үҙен дә индереп) һәм 1 араһындағы осраҡлы һан"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1-ҙән %2-гә тиклем осраҡлы бөтөн һан"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Ике бирелгән һан араһындағы (үҙҙәрен дә индереп) осраҡлы һанды күрһәтә."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ba.wikipedia.org/wiki/Т=Түңәрәкләү"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "түңәрәк"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "бәләкәйгә тиклем түңәрәкләргә"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ҙурына тиклем түңәрәкләргә"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Һанды ҙурына йә бәләкәйенә тиклем түңәрәкләргә."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ba.wikipedia.org/wiki/Квадрат_тамыр"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "абсолют"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадрат тамыр"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Һандың модулен ҡайтара."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Күрһәтелгән дәрәжәлә ҡайтара."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Һандың натураль логаритмын ҡайтара."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Һандың унынсы логаритмын ҡайтара."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Кире һанды ҡайтара."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Күрһәтелгән 10-сы дәрәжәлә ҡайтара."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Һандың квадрат тамырын ҡайтара."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ba..wikipedia.org/wiki/Тригонометрик_функциялар"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Арккосинусты градустарҙа күрһәтә."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Арксинусты градустарҙа күрһәтә."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Арктангенсты градустарҙа күрһәтә."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Мөйөштөң косинусын градустарҙа ҡайтара."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Мөйөштөң синусын градустарҙа ҡайтара."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Мөйөштөң тангенсын градустарҙа күрһәтә."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Яңы үҙгәреүсән..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Яңы үҙгәреүсәндең исеме:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' төҙөргә"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "кире ҡайтарыу"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "инеү исеме:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "инеү"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "документтарҙы үҙгәртергә"; -Blockly.Msg["REMOVE_COMMENT"] = "Аңлатмаларҙы юйырға"; -Blockly.Msg["RENAME_VARIABLE"] = "Үҙгәреүсәндең исемен алмаштырырға..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Бөтә '%1' үҙгәреүсәндәрҙең исемен ошолай алмаштырырға:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Үҙгәреүсән «%1»-гә текст өҫтәргә."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "тәүге хәрефте алырға"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "№ хәрефен аҙаҡтан алырға"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "хат алырға #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "һуңғы хәрефте алырға"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "осраҡлы хәрефте алырға"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Текстҡа элемент өҫтәү."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ҡушылығыҙ"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# хатҡа"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "һуңғы хәрефкә тиклем"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "текста"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "текстың тәүге инеүен табырға"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "Текстың һуңғы инеүен табырға"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "текстҡа %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 буш"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "текст төҙөргә"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Элементтарҙың теләһә күпме һанын берләштереп текст фрагментын булдыра."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "оҙонлоғо %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Бирелгән текстағы символдар һанын (буш урындар менән бергә) кире ҡайтара."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 баҫтырырға"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Текстың хәрефе, һүҙе йәки юлы."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Бөгөн"; -Blockly.Msg["UNDO"] = "Кире алырға"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Фекер өҫтәргә"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Мәғәнәне үҙгәртегеҙ:"; +Blockly.Msg["CLEAN_UP"] = "Блоктарҙы таҙартырға"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Блоктарҙы төрөргә"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Блокты төрөргә"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1-се төҫ"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2-се төҫ"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "1-се төҫтөң өлөшө"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ҡатнаштырырға"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Ике төҫтө бирелгән нисбәттә болғата (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Төҫ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Палитранан төҫ һайлағыҙ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "осраҡлы төҫ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Төҫтө осраҡлылыҡ буйынса һайлай."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "зәңгәр"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "йәшелдән"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ҡыҙылдан"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ошонан төҫ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Бирелгән нисбәттәрҙә ҡыҙылдан, йәшелдән һәм зәңгәрҙән төҫ барлыҡҡа килә. Бөтә мәғәнәләр 0 менән 100 араһында булырға тейеш."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "циклдан сығырға"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "циклдың киләһе аҙымына күсергә"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Был циклды өҙә."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Циклдың ҡалдығын төшөрөп ҡалдыра һәм киләһе аҙымға күсә."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Иҫкәртеү: был блок цикл эсендә генә ҡулланыла ала."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "һәр элемент өсөн %1 исемлектә %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Исемлектәге һәр элемент өсөн үҙгәреүсәнгә элементтың '%1' мәғәнәһен бирә һәм күрһәтелгән командаларҙы үтәй."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Үҙгәреүсәнгә башынан аҙағына тиклем тәғәйен аҙым менән %1 мәғәнәне бирә һәм күрһәтелгән командаларҙы үтәй."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"Әгәр\" блогына шарт өҫтәй"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Бер шарт та дөрөҫ булмаған осраҡҡа йомғаҡлау ярҙамсы блогын өҫтәргә."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "\"Әгәр\" блогын ҡабаттан төҙөү өсөн киҫәктәрҙе өҫтәгеҙ, юйҙырығыҙ, урындарын алмаштырығыҙ."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "юғиһә"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "юғиһә, әгәр"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "әгәр"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Мәғәнә дөрөҫ булғанда, командаларҙы үтәй."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Шарт дөрөҫ булғанда, командаларҙың беренсе блогын үтәй. Улай булмаһа, командаларҙың икенсе блогы үтәлә."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Әгәр икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй. Бер шарт та дөрөҫ булмаһа, команда блоктарының һуңғыһын үтәй."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/Цикл_(программалау)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "үтәргә"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = " %1 тапҡыр ҡабатларға"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Командаларҙы бер нисә тапҡыр үтәй."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ҡабатларға, әлегә юҡ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ҡабатларға, әлегә"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Мәғәнә ялған булғанда, командаларҙы ҡабатлай."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Мәғәнә дөрөҫ булғанда, командаларҙы ҡабатлай."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Бөтә %1 блоктарҙы юйырғамы?"; +Blockly.Msg["DELETE_BLOCK"] = "Блокты юйҙырырға"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = " %1 блокты юйҙырырға"; +Blockly.Msg["DIALOG_CANCEL"] = " Баш тартыу"; +Blockly.Msg["DIALOG_OK"] = "Яҡшы"; +Blockly.Msg["DISABLE_BLOCK"] = "Блокты һүндерергә"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Күсереп алырға"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Блокты тоҡандырырға"; +Blockly.Msg["EXPAND_ALL"] = "Блоктарҙы йәйергә"; +Blockly.Msg["EXPAND_BLOCK"] = "Блокты йәйергә"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Тышҡы өҫтәлмә"; +Blockly.Msg["HELP"] = "Ярҙам"; +Blockly.Msg["INLINE_INPUTS"] = "Эске өҫтәлмә"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "исемлек"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "менән исемлек төҙөргә"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "беренсе"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# аҙағынан"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "алырға"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "алырға һәм юйырға"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "аҙаҡҡы"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "осраҡлы"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "юйырға"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "исемлеккә"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 буш"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "оҙонлоғо %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "кеүек"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "өҫтәп ҡуйырға"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "йыйылма"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ялған"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Дөрөҫ йәки ялғанды ҡайтара."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "дөрөҫ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(математика)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Өҫтәмәләр тигеҙ булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Беренсе өҫтәмә икенсеһенән ҙурыраҡ булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Беренсе өҫтәмә икенсеһенән бәләкәйерәк булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Өҫтәмәләр тигеҙ булмаһа, дөрөҫ мәғәнәһен кире ҡайтара."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 түгел"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Өҫтәлмә ялған булһа, дөрөҫ аңлатманы ҡайтара. Өҫтәлмә дөрөҫ булһа, ялған аңлатманы ҡайтара."; +Blockly.Msg["LOGIC_NULL"] = "нуль"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Нулде ҡайтара."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "һәм"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "йәки"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Әгәр ҙә ике өҫтәлмә лә тап килһә, дөрөҫ аңлатманы кире ҡайтара."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Өҫтәлмәләрҙең береһе генә дөрөҫ булһа, дөрөҫ аңлатманы ҡайтара."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тест"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "әгәр ялған булһа"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "әгәр дөрөҫ булһа"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Һайлау шартын тикшерә. Әгәр ул дөрөҫ булһа, беренсе мәғәнәне, хата булһа, икенсе мәғәнәне ҡайтара."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ba.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ике һандың суммаһын ҡайтара."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ике һандың бүлендеген ҡайтара."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ике һандың айырмаһын ҡайтара."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ике һандың ҡабатландығын ҡайтара."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Дәрәжәгә күтәрелгән икенсе һандан тәүгеһенә ҡайтара."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ba.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 тан %2 ҡа арттырырға"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Үҙгәреүсән һанға өҫтәй '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ba.wikipedia.org/wiki/Математик_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Таралған константаның береһен күрһәтә: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) йәки ∞ (сикһеҙлек)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "сикләргә %1 аҫтан %2 өҫтән %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Һанды аҫтан һәм өҫтән сикләй (сиктәгеләрен индереп)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "бүленә"; +Blockly.Msg["MATH_IS_EVEN"] = "тағы"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "тиҫкәре"; +Blockly.Msg["MATH_IS_ODD"] = "сәйер"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ыңғай"; +Blockly.Msg["MATH_IS_PRIME"] = "ябай"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Һандың йоп, таҡ, ябай, бөтөн, ыңғай, кире йәки билдәле һанға ҡарата ниндәй булыуын тикшерә. Дөрөҫ йә ялған мәғәнәһен күрһәтә."; +Blockly.Msg["MATH_IS_WHOLE"] = "бөтөн"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ba.wikipedia.org/wiki/Ҡалдыҡ_менән_бүлеү"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ҡалдыҡ %1 : %2 араһында"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Ике һанды бүлеү ҡалдығын күрһәтә."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ba.wikipedia.org/wiki/Һан"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Рәт."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "исемлектең уртаса арифметик дәүмәле"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "исемлектәге иң ҙуры"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "исемлек медианаһы"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Исемлектәге иң бәләкәйе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "исемлек модалары"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "исемлектең осраҡлы элементы"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "исемлекте стандарт кире ҡағыу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "исемлек суммаһы"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Исемлектең уртаса арифметик дәүмәле күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Исемлектең иң ҙур һанын күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Исемлек медианаһын күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Исемлектәге иң бәләкәй һанды күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Исемлектең иң күп осраған элементтарын күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Исемлектең осраҡлы элементын күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Исемлекте стандарт кире ҡағыуҙы күрһәтә."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Исемлектәрҙәге һандар суммаһын күрһәтә."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "0 (үҙен дә индереп) һәм 1 араһындағы осраҡлы һан"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1-ҙән %2-гә тиклем осраҡлы бөтөн һан"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Ике бирелгән һан араһындағы (үҙҙәрен дә индереп) осраҡлы һанды күрһәтә."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ba.wikipedia.org/wiki/Т=Түңәрәкләү"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "түңәрәк"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "бәләкәйгә тиклем түңәрәкләргә"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ҙурына тиклем түңәрәкләргә"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Һанды ҙурына йә бәләкәйенә тиклем түңәрәкләргә."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ba.wikipedia.org/wiki/Квадрат_тамыр"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "абсолют"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадрат тамыр"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Һандың модулен ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Күрһәтелгән дәрәжәлә ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Һандың натураль логаритмын ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Һандың унынсы логаритмын ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Кире һанды ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Күрһәтелгән 10-сы дәрәжәлә ҡайтара."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Һандың квадрат тамырын ҡайтара."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ba..wikipedia.org/wiki/Тригонометрик_функциялар"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Арккосинусты градустарҙа күрһәтә."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Арксинусты градустарҙа күрһәтә."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Арктангенсты градустарҙа күрһәтә."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Мөйөштөң косинусын градустарҙа ҡайтара."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Мөйөштөң синусын градустарҙа ҡайтара."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Мөйөштөң тангенсын градустарҙа күрһәтә."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Яңы үҙгәреүсән..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Яңы үҙгәреүсәндең исеме:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' төҙөргә"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "кире ҡайтарыу"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "инеү исеме:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "инеү"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "документтарҙы үҙгәртергә"; +Blockly.Msg["REMOVE_COMMENT"] = "Аңлатмаларҙы юйырға"; +Blockly.Msg["RENAME_VARIABLE"] = "Үҙгәреүсәндең исемен алмаштырырға..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Бөтә '%1' үҙгәреүсәндәрҙең исемен ошолай алмаштырырға:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Үҙгәреүсән «%1»-гә текст өҫтәргә."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "тәүге хәрефте алырға"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "№ хәрефен аҙаҡтан алырға"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "хат алырға #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "һуңғы хәрефте алырға"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "осраҡлы хәрефте алырға"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Текстҡа элемент өҫтәү."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ҡушылығыҙ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# хатҡа"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "һуңғы хәрефкә тиклем"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "текста"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "текстың тәүге инеүен табырға"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "Текстың һуңғы инеүен табырға"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "текстҡа %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 буш"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "текст төҙөргә"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Элементтарҙың теләһә күпме һанын берләштереп текст фрагментын булдыра."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "оҙонлоғо %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Бирелгән текстағы символдар һанын (буш урындар менән бергә) кире ҡайтара."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 баҫтырырға"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Текстың хәрефе, һүҙе йәки юлы."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Бөгөн"; +Blockly.Msg["UNDO"] = "Кире алырға"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/bcc.js b/msg/js/bcc.js index 97b200585b8..44064885543 100644 --- a/msg/js/bcc.js +++ b/msg/js/bcc.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "افزودن نظر"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "تغییر مقدار:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "فروپاشی بلوک‌ها"; -Blockly.Msg["COLLAPSE_BLOCK"] = "فروپاشی بلوک"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ ۱"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ ۲"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "مخلوط"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "انتخاب یک رنگ از تخته‌رنگ."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رنگ تصادفی"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "انتخاب یک رنگ به شکل تصادفی."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "آبی"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "سبز"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "قرمز"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "رنگ با"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "شکستن حلقه"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ادامه با تکرار بعدی حلقه"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "شکستن حلقهٔ شامل."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "برای هر مورد %1 در فهرست %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "با تعداد %1 از %2 به %3 با گام‌های %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "افزودن یک شرط به بلوک اگر."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "آنگاه"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "اگر آنگاه"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AD%D9%84%D9%82%D9%87_%D9%81%D9%88%D8%B1"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "انجام"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 بار تکرار"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "انجام چند عبارت چندین بار."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تکرار تا"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تکرار در حالی که"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "حذف بلوک"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "حذف بلوک‌های %1"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated -Blockly.Msg["DISABLE_BLOCK"] = "غیرفعال‌سازی بلوک"; -Blockly.Msg["DUPLICATE_BLOCK"] = "تکراری"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "فعال‌سازی بلوک"; -Blockly.Msg["EXPAND_ALL"] = "گسترش بلوک‌ها"; -Blockly.Msg["EXPAND_BLOCK"] = "گسترش بلوک"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ورودی‌های خارجی"; -Blockly.Msg["HELP"] = "کومک"; -Blockly.Msg["INLINE_INPUTS"] = "ورودی‌های درون خطی"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ایجاد فهرست خالی"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لیست"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ایجاد فهرست با"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "اضافه‌کردن یک مورد به فهرست."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "فهرستی از هر عددی از موارد می‌سازد."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "اولین"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# از انتها"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "گرفتن"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گرفتن و حذف‌کردن"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "اهرین"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "یکپارگی"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حذف‌کردن"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "اولین مورد یک فهرست را بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "موردی در محل مشخص‌شده بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "آخرین مورد در یک فهرست را بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "یک مورد تصادفی در یک فهرست بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "اولین مورد را در یک فهرست حذف می‌کند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "آخرین مورد را در یک فهرست حذف می‌کند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "یک مورد تصادفی را یک فهرست حذف می‌کند."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "به # از انتها"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "به #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "به آخرین"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "گرفتن زیرمجموعه‌ای از ابتدا"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "چݔر چیزے گِرَگ چہ # ءِ آھرا"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "گرفتن زیرمجموعه‌ای از #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 آخرین مورد است."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 اولین مورد است."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "آھری نبشتانکء بیتگݔنا درگݔج"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "یافتن آخرین رخ‌داد مورد"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر متن موجود نبود."; -Blockly.Msg["LISTS_INLIST"] = "مہ لیست‌ئا"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی است"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "اگر فهرست خالی است مقدار صجیج بر می‌گرداند."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "طول %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "طول یک فهرست را برمی‌گرداند."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "به‌عنوان"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "جاہ دیگ مہ"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "مجموعه"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "موردی به ته فهرست اضافه می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "موردی به ته فهرست الحاق می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "مورد را به صورت تصادفی در یک فهرست می‌افزاید."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "اولین مورد در یک فهرست را تعیین می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "مورد مشخص‌شده در یک فهرست را قرار می‌دهد."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "آخرین مورد در یک فهرست را تعیین می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "یک مورد تصادفی در یک فهرست را تعیین می‌کند."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ناصحیح"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "بازگرداندن یکی از صحیح یا ناصحیح."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "صحیح"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد."; -Blockly.Msg["LOGIC_NULL"] = "تهی"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "تهی بازمی‌گرداند."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمایش"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر ناصحیح"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر صحیح"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "بازگرداندن مقدار جمع دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "بازگرداندن باقی‌ماندهٔ دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "بازگرداندن تفاوت دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "بازگرداندن حاصلضرب دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "تغییر %1 با %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "افزودن یک عدد به متغیر '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "محدودکردن %1 پایین %2 بالا %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "تقسیم شده بر"; -Blockly.Msg["MATH_IS_EVEN"] = "زوج است"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی است"; -Blockly.Msg["MATH_IS_ODD"] = "فرد است"; -Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت است"; -Blockly.Msg["MATH_IS_PRIME"] = "عدد اول است"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند."; -Blockly.Msg["MATH_IS_WHOLE"] = "کامل است"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87"; -Blockly.Msg["MATH_MODULO_TITLE"] = "باقی‌ماندهٔ %1 + %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "یک عدد."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "میانگین فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بزرگ‌ترین فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "میانهٔ فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "کوچکترین فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "مد فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "مورد تصادفی از فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "انحراف معیار فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جمع فهرست"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "بزرگ‌ترین عدد در فهرست را باز می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "میانهٔ عدد در فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "کوچک‌ترین عدد در فهرست را باز می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "موردی تصادفی از فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "انحراف معیار فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "جمع همهٔ عددهای فهرست را باز می‌گرداند."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "کسر تصادفی"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "عدد صحیح تصادفی بین %1 تا %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گردکردن"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "گرد به پایین"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "گرد به بالا"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "گردکردن یک عدد به بالا یا پایین."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ریشهٔ دوم"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "قدر مطلق یک عدد را بازمی‌گرداند."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "بازگرداندن توان e یک عدد."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "لوگاریتم طبیعی یک عدد را باز می‌گرداند."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "منفی‌شدهٔ یک عدد را باز می‌گرداند."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "بازگرداندن توان ۱۰ یک عدد."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ریشهٔ دوم یک عدد را باز می‌گرداند."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "بازگرداندن آرک‌کسینوس درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "بازگرداندن آرک‌سینوس درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "بازگرداندن آرک‌تانژانت درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "بازگرداندن کسینوس درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "بازگرداندن سینوس درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "بازگرداندن تانژانت یک درجه (نه رادیان)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "متغیر تازه..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "نام متغیر تازه:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اجازه اظهارات"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "با:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1»."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "با:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "ساختن «%1»"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "انجام چیزی"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "به"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "تابعی می‌سازد بدون هیچ خروجی."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "بازگشت"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "تابعی با یک خروجی می‌سازد."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "اخطار: این تابعی پارامتر تکراری دارد."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "برجسته‌سازی تعریف تابع"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نام ورودی:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "اضافه کردن ورودی به تابع."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ورودی‌ها"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع."; -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "حذف نظر"; -Blockly.Msg["RENAME_VARIABLE"] = "تغییر نام متغیر..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تغییر نام همهٔ متغیرهای «%1» به:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "به %1 الحاق متن %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "الحاق متنی به متغیر «%1»."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "به حروف کوچک"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "به حروف بزرگ عنوان"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "به حروف بزرگ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "بازگرداندن کپی متن در حالتی متفاوت."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "گرفتن اولین حرف"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "گرفتن حرف # از آخر"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "گرفتن حرف #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "گرفتن آخرین حرف"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "گرفتن حرف تصادفی"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "حرفی در موقعیت مشخص‌شده بر می‌گرداند."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "افزودن یک مورد به متن."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "عضویت"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "به حرف # از انتها"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "به حرف #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "گرفتن آخرین حرف"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "مہ نبشتہ‌ئا"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "گرفتن زیرمتن از اولین حرف"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "گرفتن زیرمتن از حرف # به انتها"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "گرفتن زیرمتن از حرف #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "اولی نبشتانکء بیتگݔنا درگݔج"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "آھری نبشتانکء بیتگݔنا درگݔج"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "در متن %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی است"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ایجاد متن با"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "چاپ %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "اعلان برای کاربر با یک عدد."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "اعلان برای کاربر برای یک متن."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "اعلان برای عدد با پیام"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "اعلان برای متن با پیام"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "یک حرف، کلمه یا خطی از متن."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "تراشیدن فاصله‌ها از هر دو طرف"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "تراشیدن فاصله‌ها از طرف چپ"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "تراشیدن فاصله‌ها از طرف چپ"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "مورد"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "درست‌کردن «تنظیم %1»"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "مقدار این متغیر را بر می‌گرداند."; -Blockly.Msg["VARIABLES_SET"] = "مجموعه %1 به %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "درست‌کردن «تنظیم %1»"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "متغیر برابر با خروجی را مشخص می‌کند."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "افزودن نظر"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "تغییر مقدار:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "فروپاشی بلوک‌ها"; +Blockly.Msg["COLLAPSE_BLOCK"] = "فروپاشی بلوک"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ ۱"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ ۲"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "مخلوط"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "انتخاب یک رنگ از تخته‌رنگ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رنگ تصادفی"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "انتخاب یک رنگ به شکل تصادفی."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "آبی"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سبز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "قرمز"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رنگ با"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "شکستن حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ادامه با تکرار بعدی حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "شکستن حلقهٔ شامل."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "برای هر مورد %1 در فهرست %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "با تعداد %1 از %2 به %3 با گام‌های %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "افزودن یک شرط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "آنگاه"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "اگر آنگاه"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AD%D9%84%D9%82%D9%87_%D9%81%D9%88%D8%B1"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "انجام"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 بار تکرار"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "انجام چند عبارت چندین بار."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تکرار تا"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تکرار در حالی که"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "حذف بلوک"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "حذف بلوک‌های %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "غیرفعال‌سازی بلوک"; +Blockly.Msg["DUPLICATE_BLOCK"] = "تکراری"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "فعال‌سازی بلوک"; +Blockly.Msg["EXPAND_ALL"] = "گسترش بلوک‌ها"; +Blockly.Msg["EXPAND_BLOCK"] = "گسترش بلوک"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ورودی‌های خارجی"; +Blockly.Msg["HELP"] = "کومک"; +Blockly.Msg["INLINE_INPUTS"] = "ورودی‌های درون خطی"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ایجاد فهرست خالی"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لیست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ایجاد فهرست با"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "اضافه‌کردن یک مورد به فهرست."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "فهرستی از هر عددی از موارد می‌سازد."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "اولین"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# از انتها"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گرفتن"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گرفتن و حذف‌کردن"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "اهرین"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "یکپارگی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حذف‌کردن"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "اولین مورد یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "موردی در محل مشخص‌شده بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "آخرین مورد در یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "یک مورد تصادفی در یک فهرست بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "اولین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "آخرین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "یک مورد تصادفی را یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "به # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "به #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "به آخرین"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "گرفتن زیرمجموعه‌ای از ابتدا"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "چݔر چیزے گِرَگ چہ # ءِ آھرا"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "گرفتن زیرمجموعه‌ای از #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 آخرین مورد است."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 اولین مورد است."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "آھری نبشتانکء بیتگݔنا درگݔج"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "یافتن آخرین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر متن موجود نبود."; +Blockly.Msg["LISTS_INLIST"] = "مہ لیست‌ئا"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "اگر فهرست خالی است مقدار صجیج بر می‌گرداند."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "طول یک فهرست را برمی‌گرداند."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "به‌عنوان"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "جاہ دیگ مہ"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "مجموعه"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "موردی به ته فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "موردی به ته فهرست الحاق می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "مورد را به صورت تصادفی در یک فهرست می‌افزاید."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "اولین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "مورد مشخص‌شده در یک فهرست را قرار می‌دهد."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "آخرین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "یک مورد تصادفی در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ناصحیح"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "بازگرداندن یکی از صحیح یا ناصحیح."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "صحیح"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد."; +Blockly.Msg["LOGIC_NULL"] = "تهی"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "تهی بازمی‌گرداند."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمایش"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر ناصحیح"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر صحیح"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "بازگرداندن مقدار جمع دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "بازگرداندن باقی‌ماندهٔ دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "بازگرداندن تفاوت دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "بازگرداندن حاصلضرب دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "تغییر %1 با %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "افزودن یک عدد به متغیر '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "محدودکردن %1 پایین %2 بالا %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "تقسیم شده بر"; +Blockly.Msg["MATH_IS_EVEN"] = "زوج است"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی است"; +Blockly.Msg["MATH_IS_ODD"] = "فرد است"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت است"; +Blockly.Msg["MATH_IS_PRIME"] = "عدد اول است"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند."; +Blockly.Msg["MATH_IS_WHOLE"] = "کامل است"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87"; +Blockly.Msg["MATH_MODULO_TITLE"] = "باقی‌ماندهٔ %1 + %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "یک عدد."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "میانگین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بزرگ‌ترین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "میانهٔ فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "کوچکترین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "مد فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "مورد تصادفی از فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "انحراف معیار فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جمع فهرست"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "بزرگ‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "میانهٔ عدد در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "کوچک‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "موردی تصادفی از فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "انحراف معیار فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "جمع همهٔ عددهای فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "کسر تصادفی"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "عدد صحیح تصادفی بین %1 تا %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گردکردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "گرد به پایین"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "گرد به بالا"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "گردکردن یک عدد به بالا یا پایین."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ریشهٔ دوم"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "قدر مطلق یک عدد را بازمی‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "بازگرداندن توان e یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "لوگاریتم طبیعی یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "منفی‌شدهٔ یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "بازگرداندن توان ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ریشهٔ دوم یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "بازگرداندن آرک‌کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "بازگرداندن آرک‌سینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "بازگرداندن آرک‌تانژانت درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "بازگرداندن کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "بازگرداندن سینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "بازگرداندن تانژانت یک درجه (نه رادیان)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "متغیر تازه..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نام متغیر تازه:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اجازه اظهارات"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1»."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "ساختن «%1»"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "انجام چیزی"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "به"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "تابعی می‌سازد بدون هیچ خروجی."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "بازگشت"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "تابعی با یک خروجی می‌سازد."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "اخطار: این تابعی پارامتر تکراری دارد."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "برجسته‌سازی تعریف تابع"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نام ورودی:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "اضافه کردن ورودی به تابع."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ورودی‌ها"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع."; +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "حذف نظر"; +Blockly.Msg["RENAME_VARIABLE"] = "تغییر نام متغیر..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تغییر نام همهٔ متغیرهای «%1» به:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "به %1 الحاق متن %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "الحاق متنی به متغیر «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "به حروف کوچک"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "به حروف بزرگ عنوان"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "به حروف بزرگ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "بازگرداندن کپی متن در حالتی متفاوت."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "گرفتن اولین حرف"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "گرفتن حرف # از آخر"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "گرفتن حرف #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "گرفتن آخرین حرف"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "گرفتن حرف تصادفی"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "حرفی در موقعیت مشخص‌شده بر می‌گرداند."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "افزودن یک مورد به متن."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "عضویت"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "به حرف # از انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "به حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "گرفتن آخرین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "مہ نبشتہ‌ئا"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "گرفتن زیرمتن از اولین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "گرفتن زیرمتن از حرف # به انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "گرفتن زیرمتن از حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "اولی نبشتانکء بیتگݔنا درگݔج"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "آھری نبشتانکء بیتگݔنا درگݔج"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "در متن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ایجاد متن با"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "چاپ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "اعلان برای کاربر با یک عدد."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "اعلان برای کاربر برای یک متن."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "اعلان برای عدد با پیام"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "اعلان برای متن با پیام"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "یک حرف، کلمه یا خطی از متن."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "تراشیدن فاصله‌ها از هر دو طرف"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "مورد"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "درست‌کردن «تنظیم %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "مقدار این متغیر را بر می‌گرداند."; +Blockly.Msg["VARIABLES_SET"] = "مجموعه %1 به %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "درست‌کردن «تنظیم %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "متغیر برابر با خروجی را مشخص می‌کند."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/be-tarask.js b/msg/js/be-tarask.js index 33257570961..67712984a29 100644 --- a/msg/js/be-tarask.js +++ b/msg/js/be-tarask.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Дадаць камэнтар"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Немагчыма выдаліць зьменную «%1», таму што яна зьяўляецца часткай вызначэньня функцыі «%2»"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Зьмяніць значэньне:"; -Blockly.Msg["CLEAN_UP"] = "Ачысьціць блёкі"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Згорнутыя блёкі ўтрымліваюць папярэджаньні."; -Blockly.Msg["COLLAPSE_ALL"] = "Згарнуць блёкі"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Згарнуць блёк"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "колер 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "колер 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "дзеля"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "зьмяшаць"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Зьмешвае два колеры ў дадзенай прапорцыі (0.0 — 1.0)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%B5%D1%80"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Абярыце колер з палітры."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "выпадковы колер"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Абраць выпадковы колер."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "сіняга"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "зялёнага"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "чырвонага"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "колер з"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Стварыць колер з абранымі прапорцыямі чырвонага, зялёнага і сіняга. Усе значэньні павінны быць ад 0 да 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "перарваць цыкль"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "працягнуць з наступнага кроку цыклю"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Спыніць гэты цыкль."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Прапусьціць рэшту цыклю і перайсьці да наступнага кроку."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Увага: гэты блёк можа быць выкарыстаны толькі ў цыклі."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для кожнага элемэнта %1 у сьпісе %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для кожнага элемэнту сьпісу прысвойвае зьменнай '%1' ягонае значэньне і выконвае пэўныя апэрацыі."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "лічыць з %1 ад %2 да %3 па %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Прысвойвае зьменнай \"%1\" значэньні ад пачатковага да канчатковага значэньня, улічваючы зададзены крок, і выконвае абраныя блёкі."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Дадаць умову да блёку «калі»."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Дадаць заключную ўмову для ўсіх астатніх варыянтаў блёку «калі»."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку «калі»."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "інакш"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "інакш, калі"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "калі"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Калі значэньне ісьціна, выканаць пэўныя апэрацыі."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Калі значэньне ісьціна, выканаць першы блёк апэрацыяў, інакш выканаць другі блёк."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў. Калі ніводнае з значэньняў не сапраўднае, выканаць апошні блёк апэрацыяў."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "выканаць"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "паўтарыць %1 раз(ы)"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Выконвае апэрацыі некалькі разоў."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "паўтараць, пакуль не"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "паўтараць, пакуль"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Пакуль значэньне хлусьня, выконваць пэўныя апэрацыі."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Пакуль значэньне ісьціна, выконваць пэўныя апэрацыі."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Выдаліць усе блёкі %1?"; -Blockly.Msg["DELETE_BLOCK"] = "Выдаліць блёк"; -Blockly.Msg["DELETE_VARIABLE"] = "Выдаліць зьменную «%1»"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Выдаліць %1 выкарыстаньняў зьменнай «%2»?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Выдаліць %1 блёкі"; -Blockly.Msg["DIALOG_CANCEL"] = "Скасаваць"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Адключыць блёк"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Капіяваць"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Прадубляваць камэнтар"; -Blockly.Msg["ENABLE_BLOCK"] = "Уключыць блёк"; -Blockly.Msg["EXPAND_ALL"] = "Разгарнуць блёкі"; -Blockly.Msg["EXPAND_BLOCK"] = "Разгарнуць блёк"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Зьнешнія ўваходы"; -Blockly.Msg["HELP"] = "Дапамога"; -Blockly.Msg["INLINE_INPUTS"] = "Унутраныя ўваходы"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "стварыць пусты сьпіс"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Вяртае сьпіс даўжынёй 0, які ня ўтрымлівае запісаў зьвестак"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "сьпіс"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "стварыць сьпіс з"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Дадаць элемэнт да сьпісу."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ставарае сьпіс зь любой колькасьцю элемэнтаў."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "першы"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ з канца"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "атрымаць"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "атрымаць і выдаліць"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "апошні"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "выпадковы"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "выдаліць"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Вяртае першы элемэнт у сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Вяртае элемэнт у пазначанай пазыцыі ў сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Вяртае апошні элемэнт у сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Вяртае выпадковы элемэнт у сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Выдаляе і вяртае першы элемэнт у сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Выдаляе і вяртае элемэнт у пазначанай пазыцыі ў сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Выдаляе і вяртае апошні элемэнт у сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Выдаляе і вяртае выпадковы элемэнт у сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Выдаляе першы элемэнт у сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Выдаляе элемэнт у пазначанай пазыцыі ў сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Выдаляе апошні элемэнт у сьпісе."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Выдаляе выпадковы элемэнт у сьпісе."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "па № з канца"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "да #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "да апошняга"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "атрымаць падсьпіс зь першага"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "атрымаць падсьпіс з № з канца"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "атрымаць падсьпіс з №"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Стварае копію пазначанай часткі сьпісу."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "№%1 — апошні элемэнт."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "№%1 — першы элемэнт."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "знайсьці першае ўваходжаньне элемэнту"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "знайсьці апошняе ўваходжаньне элемэнту"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Вяртае індэкс першага/апошняга ўваходжаньня элемэнту ў сьпіс. Вяртае %1, калі элемэнт ня знойдзены."; -Blockly.Msg["LISTS_INLIST"] = "у сьпісе"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 пусты"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Вяртае значэньне ісьціна, калі сьпіс пусты."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "даўжыня %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Вяртае даўжыню сьпісу."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "стварыць сьпіс з элемэнту %1, які паўтараецца %2 разоў"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Стварае сьпіс, які ўтрымлівае пададзеную колькасьць копіяў элемэнту."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "адваротна %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Зьмяняе парадак копіі сьпісу на адваротны."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "як"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "уставіць у"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "усталяваць"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Устаўляе элемэнт у пачатак сьпісу."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Устаўляе элемэнт у пазначанай пазыцыі ў сьпісе."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Дадае элемэнт у канец сьпісу."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Выпадковым чынам устаўляе элемэнт у сьпіс."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Задае першы элемэнт у сьпісе."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Задае элемэнт у пазначанай пазыцыі ў сьпісе."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Задае апошні элемэнт у сьпісе."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Задае выпадковы элемэнт у сьпісе."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "па павелічэньні"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "па зьмяншэньні"; -Blockly.Msg["LISTS_SORT_TITLE"] = "сартаваць %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сартаваць копію сьпісу."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "паводле альфабэту, ігнараваць рэгістар"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "як лікі"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "паводле альфабэту"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "стварыць сьпіс з тэксту"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "стварыць тэкст са сьпісу"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Аб’ядноўвае сьпіс тэкстаў у адзін тэкст па падзяляльніках."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Падзяліць тэкст у сьпіс тэкстаў, па падзяляльніках."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "з падзяляльнікам"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "хлусьня"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Вяртае «ісьціна» ці «хлусьня»."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ісьціна"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9D%D1%8F%D1%80%D0%BE%D1%9E%D0%BD%D0%B0%D1%81%D1%8C%D1%86%D1%8C"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Вяртае «ісьціна», калі абодва ўводы роўныя."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Вяртае «ісьціна», калі першы ўвод большы за другі."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Вяртае «ісьціна», калі першы ўвод большы ці роўны другому."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Вяртае «ісьціна», калі першы ўвод меншы за другі."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Вяртае «ісьціна», калі першы ўвод меншы ці роўны другому."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Вяртае «ісьціна», калі абодва ўводы ня роўныя."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Вяртае «ісьціна», калі ўвод непраўдзівы. Вяртае «хлусьня», калі ўвод праўдзівы."; -Blockly.Msg["LOGIC_NULL"] = "нічога"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Вяртае нічога."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "і"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ці"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Вяртае «ісьціна», калі абодва ўводы праўдзівыя."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Вяртае «ісьціна», калі прынамсі адзін з уводаў праўдзівы."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тэст"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "калі хлусьня"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "калі ісьціна"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Праверыць умову ў 'тэст'. Калі ўмова праўдзівая, будзе вернутае значэньне «калі ісьціна»; інакш будзе вернутае «калі хлусьня»."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%82%D0%BC%D1%8D%D1%82%D1%8B%D0%BA%D0%B0"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Вяртае суму двух лікаў."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Вяртае дзель двух лікаў."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Вяртае рознасьць двух лікаў."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Вяртае здабытак двух лікаў."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Вяртае першы лік у ступені другога ліку."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ад X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Вяртае арктангенс пункту (X, Y) у градусах ад -180 да 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "зьмяніць %1 на %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Дадае лічбу да зьменнай '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%8D%D0%BC%D0%B0%D1%82%D1%8B%D1%87%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B0"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Вяртае адну з агульных канстантаў: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0,707...) або ∞ (бясконцасьць)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "абмежаваць %1 зьнізу %2 зьверху %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Абмяжоўвае колькасьць ніжняй і верхняй межамі (уключна)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "дзеліцца на"; -Blockly.Msg["MATH_IS_EVEN"] = "парная"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "адмоўная"; -Blockly.Msg["MATH_IS_ODD"] = "няпарная"; -Blockly.Msg["MATH_IS_POSITIVE"] = "дадатная"; -Blockly.Msg["MATH_IS_PRIME"] = "простая"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Правярае, ці зьяўляецца лік парным, няпарным, простым, станоўчым, адмоўным, ці ён дзеліцца на пэўны лік без астатку. Вяртае значэньне ісьціна або няпраўда."; -Blockly.Msg["MATH_IS_WHOLE"] = "цэлая"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "рэшта дзяленьня %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Вяртае рэшту дзяленьня двух лікаў."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9B%D1%96%D0%BA"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Лік."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "сярэдняя ў сьпісе"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "мінімальная ў сьпісе"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "мэдыяна сьпісу"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "мінімальная ў сьпісе"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "рэжымы сьпісу"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "выпадковы элемэнт сьпісу"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартнае адхіленьне сьпісу"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Сума сьпісу"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Вяртае сярэднеарытмэтычнае значэньне лікавых значэньняў у сьпісе."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Вяртае найменшы лік у сьпісе."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Вяртае мэдыяну сьпісу."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Вяртае найменшы лік у сьпісе."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Вяртае сьпіс самых распаўсюджаных элемэнтаў у сьпісе."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Вяртае выпадковы элемэнт сьпісу."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Вяртае стандартнае адхіленьне сьпісу."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Вяртае суму ўсіх лікаў у сьпісе."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "выпадковая дроб"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Вяртае выпадковую дроб у дыяпазоне ад 0,0 (уключна) да 1,0."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "выпадковая цэлая з %1 для %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Вяртае выпадковы цэлы лік паміж двума зададзенымі абмежаваньнямі ўключна."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "акругліць"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "акругліць да меншага"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "акругліць да большага"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Акругленьне ліку да большага ці меншага."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D1%8B_%D0%BA%D0%BE%D1%80%D0%B0%D0%BD%D1%8C"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратны корань"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Вяртае модуль ліку."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Вяртае e ў ступені ліку."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Вяртае натуральны лягарытм ліку."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Вяртае дзесятковы лягарытм ліку."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Вяртае супрацьлеглы лік."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Вяртае 10 у ступені ліку."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Вяртае квадратны корань ліку."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%A2%D1%80%D1%8B%D0%B3%D0%B0%D0%BD%D0%B0%D0%BC%D1%8D%D1%82%D1%80%D1%8B%D1%8F#.D0.A2.D1.80.D1.8B.D0.B3.D0.B0.D0.BD.D0.B0.D0.BC.D1.8D.D1.82.D1.80.D1.8B.D1.87.D0.BD.D1.8B.D1.8F_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.8B.D1.96"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Вяртае арккосынус ліку."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Вяртае арксынус ліку."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Вяртае арктангэнс ліку."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Вяртае косынус кута ў градусах."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Вяртае сынус кута ў градусах."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Вяртае тангэнс кута ў градусах."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Стварыць зьменную колеру…"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Стварыць лікавую зьменную…"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Стварыць радковую зьменную…"; -Blockly.Msg["NEW_VARIABLE"] = "Стварыць зьменную…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Імя новай зьменнай:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Новы тып зьменнай:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дазволіць зацьвярджэньне"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "з:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Запусьціць функцыю вызначаную карыстальнікам '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Запусьціць функцыю вызначаную карыстальнікам '%1' і выкарыстаць яе вынік."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "з:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Стварыць '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Апішыце гэтую функцыю…"; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "зрабіць што-небудзь"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "да"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Стварае функцыю бяз выніку."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "вярнуць"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Стварае функцыю з вынікам."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Увага: гэтая функцыя мае парамэтры-дублікаты."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Падсьвяціць вызначэньне функцыі"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Калі значэньне ісьціна, вярнуць другое значэньне."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Папярэджаньне: гэты блёк можа выкарыстоўвацца толькі ў вызначанай функцыі."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "назва парамэтру:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Дадаць уваходныя парамэтры ў функцыю."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "парамэтры"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Дадаць, выдаліць ці запісаць чаргу ўваходных парамэтраў для гэтай функцыі."; -Blockly.Msg["REDO"] = "Паўтарыць"; -Blockly.Msg["REMOVE_COMMENT"] = "Выдаліць камэнтар"; -Blockly.Msg["RENAME_VARIABLE"] = "Перайменаваць зьменную…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Перайменаваць усе назвы зьменных '%1' на:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "да %1 дадаць тэкст %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Дадаць які-небудзь тэкст да зьменнай '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "да ніжняга рэгістру"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Вялікія Першыя Літары"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "да ВЕРХНЯГА РЭГІСТРУ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Вярнуць копію тэксту зь іншай велічынёй літар."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "узяць першую літару"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "узяць літару № з канца"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "узяць літару №"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "узяць апошнюю літару"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "узяць выпадковую літару"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "у тэксьце %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Вяртае літару ў пазначанай пазыцыі."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "падлічыць %1 сярод %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Падлічвае колькі разоў нейкі тэкст сустракаецца ўнутры нейкага іншага тэксту."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Дадаць элемэнт да тэксту."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "далучыць"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Дадайце, выдаліце ці зьмяніце парадак разьдзелаў для перадачы тэкставага блёку."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "да літары № з канца"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "да літары №"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "да апошняй літары"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тэксьце"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "атрымаць падрадок зь першай літары"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "узяць падрадок зь літары № з канца"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "узяць падрадок зь літары №"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Вяртае пазначаную частку тэксту."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "знайсьці першае ўваходжаньне тэксту"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "знайсьці апошняе ўваходжаньне тэксту"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тэксьце %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Вяртае індэкс першага/апошняга ўваходжаньня першага тэксту ў другі тэкст. Вяртае %1, калі тэкст ня знойдзены."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 пусты"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Вяртае значэньне ісьціна, калі тэкст пусты."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "стварыць тэкст з"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Стварае фрагмэнт тэксту аб’яднаньнем любой колькасьці элемэнтаў."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "даўжыня %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Вяртае колькасьць літараў (у тым ліку прабелы) у пададзеным тэксьце."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "друкаваць %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Надрукаваць пазначаны тэкст, лічбу ці іншыя сымбалі."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запытаць у карыстальніка лічбу."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запытаць у карыстальніка тэкст."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запытаць лічбу з падказкай"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запытаць тэкст з падказкай"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замяніць %1 на %2 у %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замяняе ўсе выпадкі нейкага тэксту на іншы тэкст."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "адваротна %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Мяняе парадак сымбаляў у тэксьце на адваротны."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Літара, слова ці радок тэксту."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "абрэзаць прабелы з абодвух бакоў"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "абрэзаць прабелы зь левага боку"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "абрэзаць прабелы з правага боку"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Вяртае копію тэксту з прабеламі, выдаленымі ад аднаго ці абодвух бакоў."; -Blockly.Msg["TODAY"] = "Сёньня"; -Blockly.Msg["UNDO"] = "Скасаваць"; -Blockly.Msg["UNNAMED_KEY"] = "безназоўны"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "аб’ект"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Стварыць блёк «усталяваць %1»"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Вяртае значэньне гэтай зьменнай."; -Blockly.Msg["VARIABLES_SET"] = "усталяваць %1 да %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Стварыць блёк «атрымаць %1»"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Надаць гэтай зьменнай значэньне ўстаўкі."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Зьменная з назвай «%1» ужо існуе."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Зьменная з назвай «%1» ужо існуе зь іншым тыпам: «%2»."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Працоўная прастора Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Напішыце што-небудзь…"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Дадаць камэнтар"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Немагчыма выдаліць зьменную «%1», таму што яна зьяўляецца часткай вызначэньня функцыі «%2»"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Зьмяніць значэньне:"; +Blockly.Msg["CLEAN_UP"] = "Ачысьціць блёкі"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Згорнутыя блёкі ўтрымліваюць папярэджаньні."; +Blockly.Msg["COLLAPSE_ALL"] = "Згарнуць блёкі"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Згарнуць блёк"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "колер 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "колер 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "дзеля"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "зьмяшаць"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Зьмешвае два колеры ў дадзенай прапорцыі (0.0 — 1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%B5%D1%80"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Абярыце колер з палітры."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "выпадковы колер"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Абраць выпадковы колер."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "сіняга"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зялёнага"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "чырвонага"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "колер з"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Стварыць колер з абранымі прапорцыямі чырвонага, зялёнага і сіняга. Усе значэньні павінны быць ад 0 да 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "перарваць цыкль"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "працягнуць з наступнага кроку цыклю"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Спыніць гэты цыкль."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Прапусьціць рэшту цыклю і перайсьці да наступнага кроку."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Увага: гэты блёк можа быць выкарыстаны толькі ў цыклі."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для кожнага элемэнта %1 у сьпісе %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для кожнага элемэнту сьпісу прысвойвае зьменнай '%1' ягонае значэньне і выконвае пэўныя апэрацыі."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "лічыць з %1 ад %2 да %3 па %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Прысвойвае зьменнай \"%1\" значэньні ад пачатковага да канчатковага значэньня, улічваючы зададзены крок, і выконвае абраныя блёкі."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Дадаць умову да блёку «калі»."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Дадаць заключную ўмову для ўсіх астатніх варыянтаў блёку «калі»."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку «калі»."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "інакш"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "інакш, калі"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "калі"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Калі значэньне ісьціна, выканаць пэўныя апэрацыі."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Калі значэньне ісьціна, выканаць першы блёк апэрацыяў, інакш выканаць другі блёк."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў. Калі ніводнае з значэньняў не сапраўднае, выканаць апошні блёк апэрацыяў."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "выканаць"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "паўтарыць %1 раз(ы)"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Выконвае апэрацыі некалькі разоў."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "паўтараць, пакуль не"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "паўтараць, пакуль"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Пакуль значэньне хлусьня, выконваць пэўныя апэрацыі."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Пакуль значэньне ісьціна, выконваць пэўныя апэрацыі."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Выдаліць усе блёкі %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Выдаліць блёк"; +Blockly.Msg["DELETE_VARIABLE"] = "Выдаліць зьменную «%1»"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Выдаліць %1 выкарыстаньняў зьменнай «%2»?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Выдаліць %1 блёкі"; +Blockly.Msg["DIALOG_CANCEL"] = "Скасаваць"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Адключыць блёк"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Капіяваць"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Прадубляваць камэнтар"; +Blockly.Msg["ENABLE_BLOCK"] = "Уключыць блёк"; +Blockly.Msg["EXPAND_ALL"] = "Разгарнуць блёкі"; +Blockly.Msg["EXPAND_BLOCK"] = "Разгарнуць блёк"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Зьнешнія ўваходы"; +Blockly.Msg["HELP"] = "Дапамога"; +Blockly.Msg["INLINE_INPUTS"] = "Унутраныя ўваходы"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "стварыць пусты сьпіс"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Вяртае сьпіс даўжынёй 0, які ня ўтрымлівае запісаў зьвестак"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "сьпіс"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "стварыць сьпіс з"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Дадаць элемэнт да сьпісу."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ставарае сьпіс зь любой колькасьцю элемэнтаў."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "першы"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ з канца"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "атрымаць"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "атрымаць і выдаліць"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "апошні"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "выпадковы"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "выдаліць"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Вяртае першы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Вяртае элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Вяртае апошні элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Вяртае выпадковы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Выдаляе і вяртае першы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Выдаляе і вяртае элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Выдаляе і вяртае апошні элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Выдаляе і вяртае выпадковы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Выдаляе першы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Выдаляе элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Выдаляе апошні элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Выдаляе выпадковы элемэнт у сьпісе."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "па № з канца"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "да #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "да апошняга"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "атрымаць падсьпіс зь першага"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "атрымаць падсьпіс з № з канца"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "атрымаць падсьпіс з №"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Стварае копію пазначанай часткі сьпісу."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "№%1 — апошні элемэнт."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "№%1 — першы элемэнт."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "знайсьці першае ўваходжаньне элемэнту"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "знайсьці апошняе ўваходжаньне элемэнту"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Вяртае індэкс першага/апошняга ўваходжаньня элемэнту ў сьпіс. Вяртае %1, калі элемэнт ня знойдзены."; +Blockly.Msg["LISTS_INLIST"] = "у сьпісе"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 пусты"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Вяртае значэньне ісьціна, калі сьпіс пусты."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "даўжыня %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Вяртае даўжыню сьпісу."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "стварыць сьпіс з элемэнту %1, які паўтараецца %2 разоў"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Стварае сьпіс, які ўтрымлівае пададзеную колькасьць копіяў элемэнту."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "адваротна %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Зьмяняе парадак копіі сьпісу на адваротны."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "як"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "уставіць у"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "усталяваць"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Устаўляе элемэнт у пачатак сьпісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Устаўляе элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Дадае элемэнт у канец сьпісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Выпадковым чынам устаўляе элемэнт у сьпіс."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Задае першы элемэнт у сьпісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Задае элемэнт у пазначанай пазыцыі ў сьпісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Задае апошні элемэнт у сьпісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Задае выпадковы элемэнт у сьпісе."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "па павелічэньні"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "па зьмяншэньні"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сартаваць %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сартаваць копію сьпісу."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "паводле альфабэту, ігнараваць рэгістар"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "як лікі"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "паводле альфабэту"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "стварыць сьпіс з тэксту"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "стварыць тэкст са сьпісу"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Аб’ядноўвае сьпіс тэкстаў у адзін тэкст па падзяляльніках."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Падзяліць тэкст у сьпіс тэкстаў, па падзяляльніках."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "з падзяляльнікам"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "хлусьня"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Вяртае «ісьціна» ці «хлусьня»."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ісьціна"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9D%D1%8F%D1%80%D0%BE%D1%9E%D0%BD%D0%B0%D1%81%D1%8C%D1%86%D1%8C"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Вяртае «ісьціна», калі абодва ўводы роўныя."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Вяртае «ісьціна», калі першы ўвод большы за другі."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Вяртае «ісьціна», калі першы ўвод большы ці роўны другому."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Вяртае «ісьціна», калі першы ўвод меншы за другі."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Вяртае «ісьціна», калі першы ўвод меншы ці роўны другому."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Вяртае «ісьціна», калі абодва ўводы ня роўныя."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Вяртае «ісьціна», калі ўвод непраўдзівы. Вяртае «хлусьня», калі ўвод праўдзівы."; +Blockly.Msg["LOGIC_NULL"] = "нічога"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Вяртае нічога."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "і"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ці"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Вяртае «ісьціна», калі абодва ўводы праўдзівыя."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Вяртае «ісьціна», калі прынамсі адзін з уводаў праўдзівы."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тэст"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "калі хлусьня"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "калі ісьціна"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Праверыць умову ў 'тэст'. Калі ўмова праўдзівая, будзе вернутае значэньне «калі ісьціна»; інакш будзе вернутае «калі хлусьня»."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%82%D0%BC%D1%8D%D1%82%D1%8B%D0%BA%D0%B0"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Вяртае суму двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Вяртае дзель двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Вяртае рознасьць двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Вяртае здабытак двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Вяртае першы лік у ступені другога ліку."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ад X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Вяртае арктангенс пункту (X, Y) у градусах ад -180 да 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "зьмяніць %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Дадае лічбу да зьменнай '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%8D%D0%BC%D0%B0%D1%82%D1%8B%D1%87%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B0"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Вяртае адну з агульных канстантаў: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0,707...) або ∞ (бясконцасьць)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "абмежаваць %1 зьнізу %2 зьверху %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Абмяжоўвае колькасьць ніжняй і верхняй межамі (уключна)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "дзеліцца на"; +Blockly.Msg["MATH_IS_EVEN"] = "парная"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "адмоўная"; +Blockly.Msg["MATH_IS_ODD"] = "няпарная"; +Blockly.Msg["MATH_IS_POSITIVE"] = "дадатная"; +Blockly.Msg["MATH_IS_PRIME"] = "простая"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Правярае, ці зьяўляецца лік парным, няпарным, простым, станоўчым, адмоўным, ці ён дзеліцца на пэўны лік без астатку. Вяртае значэньне ісьціна або няпраўда."; +Blockly.Msg["MATH_IS_WHOLE"] = "цэлая"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "рэшта дзяленьня %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Вяртае рэшту дзяленьня двух лікаў."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9B%D1%96%D0%BA"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Лік."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "сярэдняя ў сьпісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "мінімальная ў сьпісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "мэдыяна сьпісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "мінімальная ў сьпісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "рэжымы сьпісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "выпадковы элемэнт сьпісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартнае адхіленьне сьпісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Сума сьпісу"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Вяртае сярэднеарытмэтычнае значэньне лікавых значэньняў у сьпісе."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Вяртае найменшы лік у сьпісе."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Вяртае мэдыяну сьпісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Вяртае найменшы лік у сьпісе."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Вяртае сьпіс самых распаўсюджаных элемэнтаў у сьпісе."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Вяртае выпадковы элемэнт сьпісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Вяртае стандартнае адхіленьне сьпісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Вяртае суму ўсіх лікаў у сьпісе."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "выпадковая дроб"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Вяртае выпадковую дроб у дыяпазоне ад 0,0 (уключна) да 1,0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "выпадковая цэлая з %1 для %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Вяртае выпадковы цэлы лік паміж двума зададзенымі абмежаваньнямі ўключна."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "акругліць"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "акругліць да меншага"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "акругліць да большага"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Акругленьне ліку да большага ці меншага."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D1%8B_%D0%BA%D0%BE%D1%80%D0%B0%D0%BD%D1%8C"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратны корань"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Вяртае модуль ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Вяртае e ў ступені ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Вяртае натуральны лягарытм ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Вяртае дзесятковы лягарытм ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Вяртае супрацьлеглы лік."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Вяртае 10 у ступені ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Вяртае квадратны корань ліку."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://be-x-old.wikipedia.org/wiki/%D0%A2%D1%80%D1%8B%D0%B3%D0%B0%D0%BD%D0%B0%D0%BC%D1%8D%D1%82%D1%80%D1%8B%D1%8F#.D0.A2.D1.80.D1.8B.D0.B3.D0.B0.D0.BD.D0.B0.D0.BC.D1.8D.D1.82.D1.80.D1.8B.D1.87.D0.BD.D1.8B.D1.8F_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.8B.D1.96"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Вяртае арккосынус ліку."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Вяртае арксынус ліку."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Вяртае арктангэнс ліку."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Вяртае косынус кута ў градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Вяртае сынус кута ў градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Вяртае тангэнс кута ў градусах."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Стварыць зьменную колеру…"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Стварыць лікавую зьменную…"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Стварыць радковую зьменную…"; +Blockly.Msg["NEW_VARIABLE"] = "Стварыць зьменную…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Імя новай зьменнай:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Новы тып зьменнай:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дазволіць зацьвярджэньне"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Запусьціць функцыю вызначаную карыстальнікам '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Запусьціць функцыю вызначаную карыстальнікам '%1' і выкарыстаць яе вынік."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Стварыць '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Апішыце гэтую функцыю…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "зрабіць што-небудзь"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "да"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Стварае функцыю бяз выніку."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "вярнуць"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Стварае функцыю з вынікам."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Увага: гэтая функцыя мае парамэтры-дублікаты."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Падсьвяціць вызначэньне функцыі"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Калі значэньне ісьціна, вярнуць другое значэньне."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Папярэджаньне: гэты блёк можа выкарыстоўвацца толькі ў вызначанай функцыі."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "назва парамэтру:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Дадаць уваходныя парамэтры ў функцыю."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "парамэтры"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Дадаць, выдаліць ці запісаць чаргу ўваходных парамэтраў для гэтай функцыі."; +Blockly.Msg["REDO"] = "Паўтарыць"; +Blockly.Msg["REMOVE_COMMENT"] = "Выдаліць камэнтар"; +Blockly.Msg["RENAME_VARIABLE"] = "Перайменаваць зьменную…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Перайменаваць усе назвы зьменных '%1' на:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "да %1 дадаць тэкст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Дадаць які-небудзь тэкст да зьменнай '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "да ніжняга рэгістру"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Вялікія Першыя Літары"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "да ВЕРХНЯГА РЭГІСТРУ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Вярнуць копію тэксту зь іншай велічынёй літар."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "узяць першую літару"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "узяць літару № з канца"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "узяць літару №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "узяць апошнюю літару"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "узяць выпадковую літару"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "у тэксьце %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Вяртае літару ў пазначанай пазыцыі."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "падлічыць %1 сярод %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Падлічвае колькі разоў нейкі тэкст сустракаецца ўнутры нейкага іншага тэксту."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Дадаць элемэнт да тэксту."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "далучыць"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Дадайце, выдаліце ці зьмяніце парадак разьдзелаў для перадачы тэкставага блёку."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "да літары № з канца"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "да літары №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "да апошняй літары"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тэксьце"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "атрымаць падрадок зь першай літары"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "узяць падрадок зь літары № з канца"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "узяць падрадок зь літары №"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Вяртае пазначаную частку тэксту."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "знайсьці першае ўваходжаньне тэксту"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "знайсьці апошняе ўваходжаньне тэксту"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тэксьце %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Вяртае індэкс першага/апошняга ўваходжаньня першага тэксту ў другі тэкст. Вяртае %1, калі тэкст ня знойдзены."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 пусты"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Вяртае значэньне ісьціна, калі тэкст пусты."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "стварыць тэкст з"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Стварае фрагмэнт тэксту аб’яднаньнем любой колькасьці элемэнтаў."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "даўжыня %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Вяртае колькасьць літараў (у тым ліку прабелы) у пададзеным тэксьце."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "друкаваць %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Надрукаваць пазначаны тэкст, лічбу ці іншыя сымбалі."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запытаць у карыстальніка лічбу."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запытаць у карыстальніка тэкст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запытаць лічбу з падказкай"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запытаць тэкст з падказкай"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замяніць %1 на %2 у %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замяняе ўсе выпадкі нейкага тэксту на іншы тэкст."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "адваротна %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Мяняе парадак сымбаляў у тэксьце на адваротны."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Літара, слова ці радок тэксту."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "абрэзаць прабелы з абодвух бакоў"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "абрэзаць прабелы зь левага боку"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "абрэзаць прабелы з правага боку"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Вяртае копію тэксту з прабеламі, выдаленымі ад аднаго ці абодвух бакоў."; +Blockly.Msg["TODAY"] = "Сёньня"; +Blockly.Msg["UNDO"] = "Скасаваць"; +Blockly.Msg["UNNAMED_KEY"] = "безназоўны"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "аб’ект"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Стварыць блёк «усталяваць %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Вяртае значэньне гэтай зьменнай."; +Blockly.Msg["VARIABLES_SET"] = "усталяваць %1 да %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Стварыць блёк «атрымаць %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Надаць гэтай зьменнай значэньне ўстаўкі."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Зьменная з назвай «%1» ужо існуе."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Зьменная з назвай «%1» ужо існуе зь іншым тыпам: «%2»."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Працоўная прастора Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Напішыце што-небудзь…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/be.js b/msg/js/be.js index 4762d2680f5..c38ecf77413 100644 --- a/msg/js/be.js +++ b/msg/js/be.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Дадаць каментарый"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Немагчыма выдаліць пераменную '%1', паколькі яна з’яўляецца часткай вызначэння функцыі '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Змяніць значэння:"; -Blockly.Msg["CLEAN_UP"] = "Выраўнаваць блокі"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Згарнуць блокі"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Згарнуць блок"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "колер 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "колер 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "суадносіны"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "змяшаць"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Змешвае два колеры разам у паказаных суадносінах (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://be.wikipedia.org/wiki/Колер"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Выбраць колер з палітры."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "выпадковы колер"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Выбраць колер наўздагад."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "сіні"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "зялёны"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "чырвоны"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "колер з"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Стварыць колер з названымі ўзроўнямі чырвонага, зялёнага і сіняга. Усе значэння павінны быць ад 0 да 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "перарваць цыкл"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "прадоўжыць з наступнай ітэрацыі цыклу"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Перарваць выкананне цыкла."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Прапусціць рэшту гэтага цыкла і перайсці да выканання наступнай ітэрацыі."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Папярэджанне: гэты блок можа быць выкарыстаны толькі ў межах цыклу."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для кожнага элемента %1 у спісе %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для кожнага элемента ў спісе пераменная '%1' атрымлівае значэнне элемента, а затым выконваюцца пэўныя дзеянні."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "лічыць з %1 ад %2 да %3 праз %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Наяўная пераменная '%1' прымае значэнні ад пачатковага да канчатковага, улічваючы зададзены інтэрвал, і выконваюцца названыя блокі."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Дадайце ўмову да блоку 'калі'"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Дадаць канчатковую, ўсёабдымную ўмову ў блок 'калі'."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Дадайце, выдаліце або змяніце парадак секцыяў, каб пераналадзіць гэты блок 'калі'."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "інакш"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "інакш калі"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "калі"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Калі значэнне ісцінае, то выканаць пэўныя дзеянні."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Калі значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку выконваецца другі блок аператараў."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў. Калі ні адно з значэнняў не з’яўляецца ісціным, то выконваецца апошні блок аператараў."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://be.wikipedia.org/wiki/Цыкл_(праграмаванне)"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "выканаць"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "паўтарыць %1 разоў"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Выканаць пэўныя дзеянні некалькі разоў."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "паўтараць, пакуль не"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "паўтараць, пакуль"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Пакуль значэнне ілжывае, выконваць пэўныя дзеянні."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Пакуль значэнне ісцінае, выконваць пэўныя дзеянні."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Выдаліць усе блокі %1?"; -Blockly.Msg["DELETE_BLOCK"] = "Выдаліць блок"; -Blockly.Msg["DELETE_VARIABLE"] = "Выдаліць пераменную '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Выдаліць %1 выкарыстання пераменнай '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Выдаліць %1 блокаў"; -Blockly.Msg["DIALOG_CANCEL"] = "Адмяніць"; -Blockly.Msg["DIALOG_OK"] = "Добра"; -Blockly.Msg["DISABLE_BLOCK"] = "Адключыць блок"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Дубляваць"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Уключыць блок"; -Blockly.Msg["EXPAND_ALL"] = "Разгарнуць блокі"; -Blockly.Msg["EXPAND_BLOCK"] = "Разгарнуць блок"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Знешнія ўваходы"; -Blockly.Msg["HELP"] = "Даведка"; -Blockly.Msg["INLINE_INPUTS"] = "Убудаваныя ўваходы"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "стварыць пусты спіс"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Вяртае спіс даўжыні 0, які не ўтрымлівае дадзеных"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "спіс"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Дадайце, выдаліце, перастаўце элементы для пераробкі блока спісу."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "стварыць спіс з"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Дадае элемент да спісу."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Стварае спіс з любым лікам элементаў."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "першы"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# з канца"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "узяць"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "узяць і выдаліць"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "апошні"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "адвольны"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "выдаліць"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Вяртае першы элемент спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Вяртае элемент ва ўказанай пазіцыі спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Вяртае апошні элемент спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Вяртае выпадковы элемент спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Видаляє і повертає перший елемент списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Выдаляе і вяртае элемент ва ўказанай пазіцыі спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Видаляє і повертає апошні элемент спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Видаляє і повертає выпадковы элемент спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Видаляє першы элемент спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Видаляє элемент ва ўказанай пазіцыі спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Видаляє апошні элемент спіса."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Видаляє выпадковы элемент спіса."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "па # з канца"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "па #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "па апошні"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "узяць падспіс з першага"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "узяць падспіс з # з канца"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "узяць падспіс з #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Стварае копію ўказанай частцы спісу."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - апошні элемент."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - першы элемент."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "знайсці першае ўваходжанне элемента"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "знайсці апошняе ўваходжанне элемента"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Вяртае нумар пазіцыі першага/апошняга ўваходжання элемента ў спісе. Вяртае %1, калі элемент не знойдзены."; -Blockly.Msg["LISTS_INLIST"] = "у спісе"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 пусты"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Вяртае значэнне ісціна, калі спіс пусты."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "даўжыня %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Вяртае даўжыню спісу."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "стварыць спіс з элемента %1, паўтаральнага %2 разоў"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Стварае спіс, які складаецца з зададзенага ліку копій элемента."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "змяніць парадак на зваротны %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Змяніць парадак спісу на адваротны."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "="; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "уставіць у"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "прысабечыць"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Устаўляе элемент у пачатак спіса."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Устаўляе элемент ва ўказанай пазіцыі спіса."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Дадае элемент у канец спісу."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Устаўляе элемент у выпадковае месца ў спісе."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Прысабечвае значэнне элемента спісу."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Прысабечвае значэнне элемента ва ўказанай пазіцыі спіса."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Прысабечвае значэнне элемента спісу."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Прысабечвае значэнне элемента спісу."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "па ўзрастанню"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "па спаданню"; -Blockly.Msg["LISTS_SORT_TITLE"] = "сартаваць %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сартаваць копію спісу."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "па алфавіце, без уліку рэгістра"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "лікавая"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "па алфавіце"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "зрабіць спіс з тэксту"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "сабраць тэкст са спісу"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Злучае спіс тэкстаў у адзін тэкст з падзельнікамі."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Разбівае тэкст у спіс тэкстаў па падзельнікам."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "з падзельнікам"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "хлусня"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Вяртае значэнне ісціна або хлусня."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ісціна"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://be.wikipedia.org/wiki/Няроўнасць"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Вяртае станоўчае значэнне, калі абодва ўводы роўныя адзін аднаму."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Вяртае значэнне ісціна, калі першая ўстаўка больш другой."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Вяртае значэнне ісціна, калі першая ўстаўка больш або роўная другой."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Вяртае станоўчае значэнне, калі першы ўвод менш другога."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Вяртае значэнне ісціна, калі першая ўстаўка менш або роўная другі."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Вяртае станоўчае значэнне, калі ўводы не роўныя."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Вяртае значэнне ісціна, калі устаўка ілжывая. Вяртае значэнне хлусня, калі устаўка ісцінная."; -Blockly.Msg["LOGIC_NULL"] = "нішто"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Вяртае нішто."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "і"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ці"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Вяртае значэнне ісціна, калі абедзве ўстаўкі ісцінныя."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Вяртае значэнне ісціна, калі хаця б адна з уставак ісцінная."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "абраць па"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "калі хлусня"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "калі ісціна"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Правярае ўмову выбару. Калі ўмова ісцінная, вяртае першае значэнне, у адваротным выпадку вяртае другое значэнне."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://be.wikipedia.org/wiki/Арыфметыка"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Вяртае суму двух лікаў."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Вяртае дзель ад дзялення першага ліку на другое."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Вяртае рознасць двух лікаў."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Вяртае твор двух лікаў."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Вяртае першы лік, узведзены ў ступень другога ліку."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://be.wikipedia.org/wiki/Ідыёма (праграмаванне)"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "павялічыць %1 на %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Дадае лік да пераменнай '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://be.wikipedia.org/wiki/Матэматычная_канстанта"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Вяртае адну з распаўсюджаных канстант: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), або ∞ (бясконцасць)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "абмежаваць %1 знізу %2 зверху %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Абмяжоўвае лік ніжняй і верхняй межамі (уключна)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "дзеліцца на"; -Blockly.Msg["MATH_IS_EVEN"] = "цотнае"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "адмоўнае"; -Blockly.Msg["MATH_IS_ODD"] = "няцотнае"; -Blockly.Msg["MATH_IS_POSITIVE"] = "станоўчае"; -Blockly.Msg["MATH_IS_PRIME"] = "простае"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Правярае, ці з’яўляецца лік цотным, няцотным, простым, цэлым, станоўчым, адмоўным ці яно кратнае пэўнаму ліку. Вяртае значэнне ісціна або хлусня."; -Blockly.Msg["MATH_IS_WHOLE"] = "цэлае"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://be.wikipedia.org/wiki/Дзяленне_з_астаткам"; -Blockly.Msg["MATH_MODULO_TITLE"] = "астатак ад %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Вяртае астатак ад дзялення двух лікаў."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://be.wikipedia.org/wiki/Лік"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Лік."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "сярэдняе арыфметычнае спісу"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "найбольшы ў спісе"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медыяна спіса"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "найменшы ў спісе"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "моды спіса"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "выпадковы элемент спіса"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартнае адхіленне спіса"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сума спіса"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Вяртае сярэдняе арыфметычнае спісу."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Вяртае найбольшы лік спісу."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Вяртае медыяну спісуа."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Вяртае найменшы лік спісу."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Вяртае спіс найбольш часта сустракаемых элементаў спісу."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Вяртае выпадковы элемент спіса."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Вяртае стандартнае адхіленне спісу."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Вяртае суму ўсіх лікаў у спісе."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "выпадковы лік ад 0 (уключна) да 1"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Вяртае выпадковы лік ад 0.0 (уключна) да 1.0."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "выпадковы цэлы лік ад %1 для %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Вяртае выпадковы лік паміж двума зададзенымі межамі (уключаючы і іх)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://be.wikipedia.org/wiki/Акругленне"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "акругліць"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "акругліць да меншага"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "акругліць да большага"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Акругляе лік да большага ці меншага."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://be.wikipedia.org/wiki/Квадратны_корань"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратны корань"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Вяртае модуль ліку."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Вяртае е ва ўказанай ступені."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Вяртае натуральны лагарыфм ліку."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Вяртае дзесятковы лагарыфм ліку."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Вяртае супрацьлеглы лік."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Вяртае 10 ва ўказанай ступені."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Вяртае квадратны корань ліку."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://be.wikipedia.org/wiki/Трыганаметрычныя_функцыі"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Вяртае арккосінус у градусах."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Вяртае арксінус у градусах."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Вяртае арктангенс у градусах."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Вяртае косінус рага ў градусах."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Вяртае сінус рага ў градусах."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Вяртае тангенс рага ў градусах."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Стварыць пераменную..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Новая назва пераменнай:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дазволіць аператары"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "з:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://be.wikipedia.org/wiki/Падпраграма"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Выконвае вызначаную карыстальнікам працэдуру '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://be.wikipedia.org/wiki/Падпраграма"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Выконвае вызначаную карыстальнікам працэдуру '%1' і вяртае вылічанае значэнне."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "з:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Стварыць выклік '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Апішыце гэтую функцыю..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "выканаць нешта"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "каб"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Стварыць працэдуру, якая ня вяртае значэнне."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "вярнуць"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Стварыць працэдуру, якая вяртае значэнне."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Папярэджанне: гэтая функцыя мае паўтаральныя параметры."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Вылучыць вызначэнне працэдуры"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Калі першае значэнне ісцінае, вяртае другое значэнне."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Папярэджанне: гэты блок можа выкарыстоўвацца толькі ўнутры вызначэння функцыі."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "імя параметра:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Дадаць уваходны параметр ў функцыю."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "параметры"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Дадаць, выдаліць або змяніць парадак уваходных параметраў для гэтай функцыі."; -Blockly.Msg["REDO"] = "Паўтарыць"; -Blockly.Msg["REMOVE_COMMENT"] = "Выдаліць каментар"; -Blockly.Msg["RENAME_VARIABLE"] = "Перайменаваць пераменную..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Перайменаваць усе пераменныя '%1' да:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "да %1 дадаць тэкст %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Дадаць тэкст да пераменнай '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "у малыя літары"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "у Загалоўныя Пачатковыя Літары"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "у ВЯЛІКІХ ЛІТАРАЎ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Вяртае копію тэксту з ВЯЛІКІМІ або малымі літарамі."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "узяць першую літару"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "узяць літару # з канца"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "узяць літару #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "узяць апошнюю літару"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "узяць выпадковую літару"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "у тэксце %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Вяртае літару ў названай пазіцыі."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "падлічыць колькасць %1 у %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Падлічыць, колькі разоў урывак тэксту з’яўляецца ў іншым тэксце."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Дадаць элемент да тэксту."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "спалучыць"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Дадайце, выдаліце, перастаўце фрагменты для пераробкі тэкставага блока."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "па літару # з канца"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "па літару #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "па апошнюю літару"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тэксце"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "узяць падрадок з першай літары"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "узяць падрадок з літары # з канца"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "узяць падрадок з літары #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Вяртае указаную частку тэксту."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "знайсці першае ўваходжанне тэксту"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "знайсці апошняе ўваходжанне тэксту"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тэксце %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Вяртае нумар пазіцыі першага/апошняга ўваходжання першага тэксту ў другім. Вяртае %1, калі тэкст не знойдзены."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 пусты"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Вяртае значэнне ісціна, калі пададзены тэкст пусты."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "стварыць тэкст з"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Стварае фрагмент тэксту, аб'ядноўваючы любы лік элементаў."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "даўжыня %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Вяртае колькасць сімвалаў (уключаючы прабелы) у зададзеным тэксце."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "надрукаваць %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Друкуе тэкст, лік або іншы аб'ект."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запытаць у карыстальніка лік."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запытаць у карыстальніка тэкст."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запытаць лік з падказкай"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запытаць тэкст з падказкай"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замяніць %1 на %2 у %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замяніць усе ўваходжанні некаторага тэксту іншым тэкстам."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "змяніць парадак на зваротны %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Мяняе парадак знакаў у тэксце на адваротны."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://be.wikipedia.org/wiki/Радковы_тып"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Літара, слова або радок тэксту."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "абрэзаць прагалы з двух бакоў"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "абрэзаць прагалы злева"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "абрэзаць прагалы справа"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Вяртае копію тэксту з прагаламі, выдаленымі з аднаго або абодвух канцоў."; -Blockly.Msg["TODAY"] = "Сёння"; -Blockly.Msg["UNDO"] = "Адкаціць"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Стварыць блок \"прысабечыць\" для %1"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Вяртае значэнне гэтай пераменнай."; -Blockly.Msg["VARIABLES_SET"] = "прысабечыць %1 = %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Стварыць устаўку %1"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Прысабечвае пераменнай значэнне ўстаўкі."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Пераменная з назвай '%1' ужо існуе."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Назва пераменнай '%1' ужо выкарыстоўваецца іншай пераменнай тыпу '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Дадаць каментарый"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Немагчыма выдаліць пераменную '%1', паколькі яна з’яўляецца часткай вызначэння функцыі '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Змяніць значэння:"; +Blockly.Msg["CLEAN_UP"] = "Выраўнаваць блокі"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Згарнуць блокі"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Згарнуць блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "колер 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "колер 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "суадносіны"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "змяшаць"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Змешвае два колеры разам у паказаных суадносінах (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://be.wikipedia.org/wiki/Колер"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Выбраць колер з палітры."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "выпадковы колер"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Выбраць колер наўздагад."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "сіні"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зялёны"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "чырвоны"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "колер з"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Стварыць колер з названымі ўзроўнямі чырвонага, зялёнага і сіняга. Усе значэння павінны быць ад 0 да 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "перарваць цыкл"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "прадоўжыць з наступнай ітэрацыі цыклу"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Перарваць выкананне цыкла."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Прапусціць рэшту гэтага цыкла і перайсці да выканання наступнай ітэрацыі."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Папярэджанне: гэты блок можа быць выкарыстаны толькі ў межах цыклу."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для кожнага элемента %1 у спісе %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для кожнага элемента ў спісе пераменная '%1' атрымлівае значэнне элемента, а затым выконваюцца пэўныя дзеянні."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "лічыць з %1 ад %2 да %3 праз %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Наяўная пераменная '%1' прымае значэнні ад пачатковага да канчатковага, улічваючы зададзены інтэрвал, і выконваюцца названыя блокі."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Дадайце ўмову да блоку 'калі'"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Дадаць канчатковую, ўсёабдымную ўмову ў блок 'калі'."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Дадайце, выдаліце або змяніце парадак секцыяў, каб пераналадзіць гэты блок 'калі'."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "інакш"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "інакш калі"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "калі"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Калі значэнне ісцінае, то выканаць пэўныя дзеянні."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Калі значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку выконваецца другі блок аператараў."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў. Калі ні адно з значэнняў не з’яўляецца ісціным, то выконваецца апошні блок аператараў."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://be.wikipedia.org/wiki/Цыкл_(праграмаванне)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "выканаць"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "паўтарыць %1 разоў"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Выканаць пэўныя дзеянні некалькі разоў."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "паўтараць, пакуль не"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "паўтараць, пакуль"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Пакуль значэнне ілжывае, выконваць пэўныя дзеянні."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Пакуль значэнне ісцінае, выконваць пэўныя дзеянні."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Выдаліць усе блокі %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Выдаліць блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Выдаліць пераменную '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Выдаліць %1 выкарыстання пераменнай '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Выдаліць %1 блокаў"; +Blockly.Msg["DIALOG_CANCEL"] = "Адмяніць"; +Blockly.Msg["DIALOG_OK"] = "Добра"; +Blockly.Msg["DISABLE_BLOCK"] = "Адключыць блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дубляваць"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Уключыць блок"; +Blockly.Msg["EXPAND_ALL"] = "Разгарнуць блокі"; +Blockly.Msg["EXPAND_BLOCK"] = "Разгарнуць блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Знешнія ўваходы"; +Blockly.Msg["HELP"] = "Даведка"; +Blockly.Msg["INLINE_INPUTS"] = "Убудаваныя ўваходы"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "стварыць пусты спіс"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Вяртае спіс даўжыні 0, які не ўтрымлівае дадзеных"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "спіс"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Дадайце, выдаліце, перастаўце элементы для пераробкі блока спісу."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "стварыць спіс з"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Дадае элемент да спісу."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Стварае спіс з любым лікам элементаў."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "першы"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# з канца"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "узяць"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "узяць і выдаліць"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "апошні"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "адвольны"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "выдаліць"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Вяртае першы элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Вяртае элемент ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Вяртае апошні элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Вяртае выпадковы элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Видаляє і повертає перший елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Выдаляе і вяртае элемент ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Видаляє і повертає апошні элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Видаляє і повертає выпадковы элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Видаляє першы элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Видаляє элемент ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Видаляє апошні элемент спіса."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Видаляє выпадковы элемент спіса."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "па # з канца"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "па #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "па апошні"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "узяць падспіс з першага"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "узяць падспіс з # з канца"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "узяць падспіс з #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Стварае копію ўказанай частцы спісу."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - апошні элемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - першы элемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "знайсці першае ўваходжанне элемента"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "знайсці апошняе ўваходжанне элемента"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Вяртае нумар пазіцыі першага/апошняга ўваходжання элемента ў спісе. Вяртае %1, калі элемент не знойдзены."; +Blockly.Msg["LISTS_INLIST"] = "у спісе"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 пусты"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Вяртае значэнне ісціна, калі спіс пусты."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "даўжыня %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Вяртае даўжыню спісу."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "стварыць спіс з элемента %1, паўтаральнага %2 разоў"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Стварае спіс, які складаецца з зададзенага ліку копій элемента."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "змяніць парадак на зваротны %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Змяніць парадак спісу на адваротны."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "="; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "уставіць у"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "прысабечыць"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Устаўляе элемент у пачатак спіса."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Устаўляе элемент ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Дадае элемент у канец спісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Устаўляе элемент у выпадковае месца ў спісе."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Прысабечвае значэнне элемента спісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Прысабечвае значэнне элемента ва ўказанай пазіцыі спіса."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Прысабечвае значэнне элемента спісу."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Прысабечвае значэнне элемента спісу."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "па ўзрастанню"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "па спаданню"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сартаваць %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сартаваць копію спісу."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "па алфавіце, без уліку рэгістра"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "лікавая"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "па алфавіце"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "зрабіць спіс з тэксту"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "сабраць тэкст са спісу"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Злучае спіс тэкстаў у адзін тэкст з падзельнікамі."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Разбівае тэкст у спіс тэкстаў па падзельнікам."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "з падзельнікам"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "хлусня"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Вяртае значэнне ісціна або хлусня."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ісціна"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://be.wikipedia.org/wiki/Няроўнасць"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Вяртае станоўчае значэнне, калі абодва ўводы роўныя адзін аднаму."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Вяртае значэнне ісціна, калі першая ўстаўка больш другой."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Вяртае значэнне ісціна, калі першая ўстаўка больш або роўная другой."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Вяртае станоўчае значэнне, калі першы ўвод менш другога."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Вяртае значэнне ісціна, калі першая ўстаўка менш або роўная другі."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Вяртае станоўчае значэнне, калі ўводы не роўныя."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Вяртае значэнне ісціна, калі устаўка ілжывая. Вяртае значэнне хлусня, калі устаўка ісцінная."; +Blockly.Msg["LOGIC_NULL"] = "нішто"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Вяртае нішто."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "і"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ці"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Вяртае значэнне ісціна, калі абедзве ўстаўкі ісцінныя."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Вяртае значэнне ісціна, калі хаця б адна з уставак ісцінная."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "абраць па"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "калі хлусня"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "калі ісціна"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Правярае ўмову выбару. Калі ўмова ісцінная, вяртае першае значэнне, у адваротным выпадку вяртае другое значэнне."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://be.wikipedia.org/wiki/Арыфметыка"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Вяртае суму двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Вяртае дзель ад дзялення першага ліку на другое."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Вяртае рознасць двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Вяртае твор двух лікаў."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Вяртае першы лік, узведзены ў ступень другога ліку."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://be.wikipedia.org/wiki/Ідыёма (праграмаванне)"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "павялічыць %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Дадае лік да пераменнай '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://be.wikipedia.org/wiki/Матэматычная_канстанта"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Вяртае адну з распаўсюджаных канстант: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), або ∞ (бясконцасць)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "абмежаваць %1 знізу %2 зверху %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Абмяжоўвае лік ніжняй і верхняй межамі (уключна)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "дзеліцца на"; +Blockly.Msg["MATH_IS_EVEN"] = "цотнае"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "адмоўнае"; +Blockly.Msg["MATH_IS_ODD"] = "няцотнае"; +Blockly.Msg["MATH_IS_POSITIVE"] = "станоўчае"; +Blockly.Msg["MATH_IS_PRIME"] = "простае"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Правярае, ці з’яўляецца лік цотным, няцотным, простым, цэлым, станоўчым, адмоўным ці яно кратнае пэўнаму ліку. Вяртае значэнне ісціна або хлусня."; +Blockly.Msg["MATH_IS_WHOLE"] = "цэлае"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://be.wikipedia.org/wiki/Дзяленне_з_астаткам"; +Blockly.Msg["MATH_MODULO_TITLE"] = "астатак ад %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Вяртае астатак ад дзялення двух лікаў."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://be.wikipedia.org/wiki/Лік"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Лік."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "сярэдняе арыфметычнае спісу"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "найбольшы ў спісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медыяна спіса"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "найменшы ў спісе"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "моды спіса"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "выпадковы элемент спіса"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартнае адхіленне спіса"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сума спіса"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Вяртае сярэдняе арыфметычнае спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Вяртае найбольшы лік спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Вяртае медыяну спісуа."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Вяртае найменшы лік спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Вяртае спіс найбольш часта сустракаемых элементаў спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Вяртае выпадковы элемент спіса."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Вяртае стандартнае адхіленне спісу."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Вяртае суму ўсіх лікаў у спісе."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "выпадковы лік ад 0 (уключна) да 1"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Вяртае выпадковы лік ад 0.0 (уключна) да 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "выпадковы цэлы лік ад %1 для %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Вяртае выпадковы лік паміж двума зададзенымі межамі (уключаючы і іх)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://be.wikipedia.org/wiki/Акругленне"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "акругліць"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "акругліць да меншага"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "акругліць да большага"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Акругляе лік да большага ці меншага."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://be.wikipedia.org/wiki/Квадратны_корань"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратны корань"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Вяртае модуль ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Вяртае е ва ўказанай ступені."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Вяртае натуральны лагарыфм ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Вяртае дзесятковы лагарыфм ліку."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Вяртае супрацьлеглы лік."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Вяртае 10 ва ўказанай ступені."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Вяртае квадратны корань ліку."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://be.wikipedia.org/wiki/Трыганаметрычныя_функцыі"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Вяртае арккосінус у градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Вяртае арксінус у градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Вяртае арктангенс у градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Вяртае косінус рага ў градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Вяртае сінус рага ў градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Вяртае тангенс рага ў градусах."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Стварыць пераменную..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Новая назва пераменнай:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дазволіць аператары"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://be.wikipedia.org/wiki/Падпраграма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Выконвае вызначаную карыстальнікам працэдуру '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://be.wikipedia.org/wiki/Падпраграма"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Выконвае вызначаную карыстальнікам працэдуру '%1' і вяртае вылічанае значэнне."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Стварыць выклік '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Апішыце гэтую функцыю..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "выканаць нешта"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "каб"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Стварыць працэдуру, якая ня вяртае значэнне."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "вярнуць"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Стварыць працэдуру, якая вяртае значэнне."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Папярэджанне: гэтая функцыя мае паўтаральныя параметры."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Вылучыць вызначэнне працэдуры"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Калі першае значэнне ісцінае, вяртае другое значэнне."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Папярэджанне: гэты блок можа выкарыстоўвацца толькі ўнутры вызначэння функцыі."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "імя параметра:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Дадаць уваходны параметр ў функцыю."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "параметры"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Дадаць, выдаліць або змяніць парадак уваходных параметраў для гэтай функцыі."; +Blockly.Msg["REDO"] = "Паўтарыць"; +Blockly.Msg["REMOVE_COMMENT"] = "Выдаліць каментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Перайменаваць пераменную..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Перайменаваць усе пераменныя '%1' да:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "да %1 дадаць тэкст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Дадаць тэкст да пераменнай '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "у малыя літары"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "у Загалоўныя Пачатковыя Літары"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "у ВЯЛІКІХ ЛІТАРАЎ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Вяртае копію тэксту з ВЯЛІКІМІ або малымі літарамі."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "узяць першую літару"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "узяць літару # з канца"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "узяць літару #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "узяць апошнюю літару"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "узяць выпадковую літару"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "у тэксце %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Вяртае літару ў названай пазіцыі."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "падлічыць колькасць %1 у %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Падлічыць, колькі разоў урывак тэксту з’яўляецца ў іншым тэксце."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Дадаць элемент да тэксту."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "спалучыць"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Дадайце, выдаліце, перастаўце фрагменты для пераробкі тэкставага блока."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "па літару # з канца"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "па літару #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "па апошнюю літару"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тэксце"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "узяць падрадок з першай літары"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "узяць падрадок з літары # з канца"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "узяць падрадок з літары #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Вяртае указаную частку тэксту."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "знайсці першае ўваходжанне тэксту"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "знайсці апошняе ўваходжанне тэксту"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тэксце %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Вяртае нумар пазіцыі першага/апошняга ўваходжання першага тэксту ў другім. Вяртае %1, калі тэкст не знойдзены."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 пусты"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Вяртае значэнне ісціна, калі пададзены тэкст пусты."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "стварыць тэкст з"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Стварае фрагмент тэксту, аб'ядноўваючы любы лік элементаў."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "даўжыня %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Вяртае колькасць сімвалаў (уключаючы прабелы) у зададзеным тэксце."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "надрукаваць %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Друкуе тэкст, лік або іншы аб'ект."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запытаць у карыстальніка лік."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запытаць у карыстальніка тэкст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запытаць лік з падказкай"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запытаць тэкст з падказкай"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замяніць %1 на %2 у %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замяніць усе ўваходжанні некаторага тэксту іншым тэкстам."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "змяніць парадак на зваротны %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Мяняе парадак знакаў у тэксце на адваротны."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://be.wikipedia.org/wiki/Радковы_тып"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Літара, слова або радок тэксту."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "абрэзаць прагалы з двух бакоў"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "абрэзаць прагалы злева"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "абрэзаць прагалы справа"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Вяртае копію тэксту з прагаламі, выдаленымі з аднаго або абодвух канцоў."; +Blockly.Msg["TODAY"] = "Сёння"; +Blockly.Msg["UNDO"] = "Адкаціць"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Стварыць блок \"прысабечыць\" для %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Вяртае значэнне гэтай пераменнай."; +Blockly.Msg["VARIABLES_SET"] = "прысабечыць %1 = %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Стварыць устаўку %1"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Прысабечвае пераменнай значэнне ўстаўкі."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Пераменная з назвай '%1' ужо існуе."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Назва пераменнай '%1' ужо выкарыстоўваецца іншай пераменнай тыпу '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/bg.js b/msg/js/bg.js index 605f8777079..bd5a222f2b9 100644 --- a/msg/js/bg.js +++ b/msg/js/bg.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Добави коментар"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Променливата '%1' не може да бъде изтрита, защото е част от определението на функцията '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Промени стойността:"; -Blockly.Msg["CLEAN_UP"] = "Премахни блокове"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Свитите блокове съдържат предупреждения."; -Blockly.Msg["COLLAPSE_ALL"] = "Скрий блокове"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Скрий блок"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "цвят 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "цвят 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "съотношение"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "смеси"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Смесва два цвят в дадено съотношение (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://bg.wikipedia.org/wiki/Цвят_(оптика)"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Избери цвят от палитрата."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случаен цвят"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Избери цвят на случаен принцип."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "син"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "зелен"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "червен"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "оцвети с"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Създай цвят с избраните пропорции, червено, зелено и синьо. Всички стойности трябва да бъдат от 0 до 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "прекъсни цикъла"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "премини към следващата стъпка от цикъла"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Прекъсни цикъла, в който се съдържа тази команда."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Премини към следващата стъпка от цикъла"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Предупреждение: Този блок може да се използва само в цикъл."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "за всеки елемент %1 в списъка %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "За всеки елемент в даден списък, присвои елемента на променливата „%1“ и след това изпълни командите."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "преброй чрез %1 от %2 до %3 през %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Нека променлива '%1' премине през стойностите от началното до крайното число през зададената стъпка и изпълни избраните блокове."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Добави условие към „ако“ блока."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Добави окончателно, прихващащо всички останали случаи условие към блок „ако“."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Добави, премахни или пренареди частите, за да промениш този „ако“ блок."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "иначе"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "иначе ако"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ако"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ако стойността е вярна, изпълни операциите."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ако стойността е вярна, изпълни първият блок. Иначе, изпълни вторият блок."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ако първата стойност е вярна, изпълни първия блок. Иначе, ако втората стойност е вярна, изпълни втория блок."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ако първата стойност е вярна, изпълни първия блок. В противен случай, ако втората стойност е вярна, изпълни втория блок. Ако нито една от стойностите не е вярна, изпълни последния блок."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://bg.wikipedia.org/wiki/Цикъл_(програмиране)#For_.D1.86.D0.B8.D0.BA.D1.8A.D0.BB.D1.8A.D1.82"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "изпълни"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Повтори %1 пъти"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Изпълнява команди няколко пъти."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повтаряй докато"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повтаряй докато е вярно, че"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Изпълни командите, ако стойността не е вярна."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Изпълни командите, ако стойността е вярна."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Изтриване на всички 1% блокове?"; -Blockly.Msg["DELETE_BLOCK"] = "Изтрий блок"; -Blockly.Msg["DELETE_VARIABLE"] = "Изтриване на променливата \"%1\""; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Изтриване на %1 използване на променлива '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Изтрий %1 блока"; -Blockly.Msg["DIALOG_CANCEL"] = "Отказ"; -Blockly.Msg["DIALOG_OK"] = "ОК"; -Blockly.Msg["DISABLE_BLOCK"] = "Деактивирай блок"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Копирай"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Дублиране на коментара"; -Blockly.Msg["ENABLE_BLOCK"] = "Активирай блок"; -Blockly.Msg["EXPAND_ALL"] = "Покажи блокове"; -Blockly.Msg["EXPAND_BLOCK"] = "Покажи блок"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Външни входове"; -Blockly.Msg["HELP"] = "Помощ"; -Blockly.Msg["INLINE_INPUTS"] = "Вътрешни входове"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "създай празен списък"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Връща списък с дължина 0, не съдържащ данни"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "списък"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Добави, премахни или пренареди частите, за да промениш този списъчен блок."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "създай списък с"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Добави елемент към текста."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Създай списък с произволен брой елементи."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "първия"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ от края"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "вземи"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "вземи и премахни"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последния"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "произволен"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "премахни"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Връща първия елемент в списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Връща елемента на определената позиция в списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Връща последния елемент в списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Връща случаен елемент от списъка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Премахва и връща първия елемент в списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Премахва и връща елемента на определена позиция в списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Премахва и връща последния елемент в списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Премахва и връща случаен елемент от списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Премахва първия елемент от списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Премахва елемент на определена позиция от списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Премахва последния елемент от списък."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Премахва случаен елемент от списък."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "до № открая"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "до №"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "до края"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "вземи подсписък от първия"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "вземи подсписък от № от края"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "вземи подсписък от №"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Копира част от списък."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 е последният елемент."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 е първият елемент."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "намери първата поява на елемента"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "намери последната поява на елемента"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Връща индекса на първото/последното появяване на елемента в списъка. Връща %1, ако елементът не е намерен."; -Blockly.Msg["LISTS_INLIST"] = "в списъка"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 е празен"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Връща стойност вярно, ако списъкът е празен."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "дължината на %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Връща дължината на списък."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "създай списък от %1 повторен %2 пъти"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Създава списък, състоящ се от определен брой копия на елемента."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "промени реда на обратно %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Промени реда на списъка на обратно."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "следното"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вмъкни на позиция"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "промени"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Вмъква елемент в началото на списъка."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Вмъква елемент на определена позиция в списък."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Добави елемент в края на списък."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Вмъква елемент на произволно място в списък."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Променя първия елемент в списък."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Променя елемента на определена позиция в списък."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Променя последния елемент в списък."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Променя случаен елемент от списък."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "възходящо"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "низходящо"; -Blockly.Msg["LISTS_SORT_TITLE"] = "сортиране по %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Подреди копие на списъка."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "по азбучен ред, без отчитане на малки и главни букви"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "в числов ред"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "по азбучен ред"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Направи списък от текст"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "направи текст от списък"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Събира списък от текстове в един текст, раделени с разделител."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Разделя текст в списък на текстове, по всеки разделител."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "с разделител"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "невярно"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Връща вярно или невярно."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "вярно"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Върни вярно, ако двата параметъра са еднакви."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Върни истина, ако първия параметър е по-голям от втория."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Върни истина, ако първия параметър е по-голям или равен на втория."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Върни вярно, ако първият параметър е по-малък от втория."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Върни истина, ако първия параметър е по-малък или равен на втория."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Върни вярно, ако двата параметъра са различни."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Върни вярно, ако параметърът е неверен. Върни невярно, ако параметърът е верен."; -Blockly.Msg["LOGIC_NULL"] = "нула"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Връща нула."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Върни вярно, ако и двата параметъра са верни."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Върни „вярно“, ако поне един от входовете е верен."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тест"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "Ако е невярно"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "Ако е вярно"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Провери условието в „тест“. Ако условието е истина, върни стойността „ако е вярно“, иначе върни стойността „ако е невярно“."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://bg.wikipedia.org/wiki/Аритметика"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Върни сумата на двете числа."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Върни частното на двете числа."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Върни разликата на двете числа."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Върни произведението на двете числа."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Върни първото число, повдигнато на степен на второто число."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 от X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Връща аркустангенс на точка (X, Y) в градуси от -180 до 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://bg.wikipedia.org/wiki/Събиране"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "промени %1 на %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Добави число към променлива „%1“."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "http://bg.wikipedia.org/wiki/Константа"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Връща една от често срещаните константи: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (безкрайност)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ограничи %1 между %2 и %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ограничи число да бъде в определените граници (включително)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "се дели на"; -Blockly.Msg["MATH_IS_EVEN"] = "е четно"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "е отрицателно"; -Blockly.Msg["MATH_IS_ODD"] = "е нечетно"; -Blockly.Msg["MATH_IS_POSITIVE"] = "е положително"; -Blockly.Msg["MATH_IS_PRIME"] = "е просто"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверете дали дадено число е четно, нечетно, просто, цяло, положително, отрицателно или дали се дели на друго число. Връща вярно или невярно."; -Blockly.Msg["MATH_IS_WHOLE"] = "е цяло"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "http://bg.wikipedia.org/wiki/Остатък"; -Blockly.Msg["MATH_MODULO_TITLE"] = "остатъка от делението на %1 на %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Върни остатъка от деление на две числа."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://bg.wikipedia.org/wiki/Число"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Число."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "средната стойност на числата в списъка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "най-голямата стойност в списъка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медианата на списък"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "най-малката стойност в списъка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "режими на списъка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случаен елемент от списъка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартно отклонение на списък"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сума на списъка"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Върни средната стойност (аритметичното средно) на числата в списъка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Върни най-голямото число в списъка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Върни медианата в списъка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Върни най-малкото число в списъка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Върни списък на най-често срещаните елементи в списъка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Върни случаен елемент от списъка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Връща стандартното отклонение на списъка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Върни сумата на всички числа в списъка."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "случайно дробно число"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Върни случайно дробно число между 0.0 (включително) и 1.0 (без да го включва)"; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "случайно цяло число между %1 и %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Върни случайно число в определените граници (включително)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "закръгли"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "закръгли надолу"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "закръгли нагоре"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Закръгли число нагоре или надолу."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "абсолютна"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "корен квадратен"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Връща абсолютната стойност на число."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Върни е (неперовото число) на степен зададеното число."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Върни натуралния логаритъм от число."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Върни десетичния логаритъм на число."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Върни числото с обърнат знак."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Върни 10 на степен зададеното число."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Връща корен квадратен от число."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://bg.wikipedia.org/wiki/Тригонометрична_функция"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Върни аркускосинус от число."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Върни аркуссинус от число."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Върни аркустангенс от число."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Върни косинус от ъгъл в градуси (не в радиани)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Върни синус от ъгъл в градуси (не в радиани)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Върни тангенс от ъгъл в градуси (не в радиани)"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Създаване на цветова променлива..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Създаване на числова променлива..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Създаване на низова променлива..."; -Blockly.Msg["NEW_VARIABLE"] = "Създаване на променлива..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ново име на променливата:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Тип на новата променлива:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "позволи операциите"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "с:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://bg.wikipedia.org/wiki/Подпрограма"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Изпълни дефинирана от потребителя функция „%1“."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://bg.wikipedia.org/wiki/Подпрограма"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Изпълни дефинирана от потребителя функция „%1“ и използвай резултата."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "с:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Създай '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишете тази функция..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "направиш"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "за да"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Създава функция, която не връща резултат."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "върни"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Създава функция, която връща резултат."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Предупреждение: Тази функция има дублиращи се параметри."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Покажи дефиницията на функцията"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ако стойността е вярна, върни втората стойност."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Предупреждение: Този блок може да се използва само във функция."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "име на параметър:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Добавяне на параметър към функцията."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "вход"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Добави, премахни или пренареди входните параметри за тази функция."; -Blockly.Msg["REDO"] = "Повторение"; -Blockly.Msg["REMOVE_COMMENT"] = "Премахни коментар"; -Blockly.Msg["RENAME_VARIABLE"] = "Преименувай променливата..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Преименувай всички '%1' променливи на:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "добавете текст %2 към %1"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Добави текст към променливата „%1“."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "с малки букви"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "с Главна Буква На Всяка Дума"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "с ГЛАВНИ БУКВИ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Връща копие на текста със сменени малки и главни букви."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "вземи първата буква"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "вземи буква № от края"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "вземи буква №"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "вземи последната буква"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "вземи произволна буква"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "в текст %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Връща буквата в определена позиция."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "пресмята броя на %1 в %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Преброй колко пъти даден текст се среща в друг текст."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Добави елемент към текста."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "свържи"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Добави, премахни или пренареди частите, за да промениш този текстов блок."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "до буква № от края"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "до буква №"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "до последната буква."; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "в текста"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "вземи текста от първата буква"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "вземи текста от буква № (броено отзад-напред)"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "вземи текста от буква №"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Връща определена част от текста."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "намери първата поява на текста"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "намери последната поява на текста"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "в текст %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Връща индекса на първото/последното срещане на първия текст във втория текст. Връща %1, ако текстът не е намерен."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 е празен"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Връща вярно, ако текста е празен."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "създай текст с"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Създай текст като съчетаеш няколко елемента."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "дължината на %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Връща броя на символите (включително и интервалите) в текста."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "отпечатай %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Отпечатай текста, числото или друга стойност."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Питай потребителя за число."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Питай потребителя за текст."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "питай за число със съобщение"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "питай за текст със съобщение"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замяна на %1 с %2 в %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замени всички появи на даден текст в друг текст."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "промени реда на обратно %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Промени реда на знаците в текста на обратно."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://bg.wikipedia.org/wiki/Низ"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Буква, дума или ред"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "премахни интервалите от двете страни"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "премахни интервалите отляво"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "премахни интервалите отдясно"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Връща копие на текста с премахнати интервали от единия или двата края."; -Blockly.Msg["TODAY"] = "Днес"; -Blockly.Msg["UNDO"] = "Отмяна"; -Blockly.Msg["UNNAMED_KEY"] = "без име"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "елемент"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Създай „промени стойността на %1“"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Връща стойността на тази променлива."; -Blockly.Msg["VARIABLES_SET"] = "нека %1 бъде %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Създай „вземи стойността на %1“"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Установява променливата със стойността на входа."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Променлива с име '%1' вече съществува."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Променлива с име '%1' вече съществува за друг тип: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Работна област на Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Коментирайте нещо..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Добави коментар"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Променливата '%1' не може да бъде изтрита, защото е част от определението на функцията '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Промени стойността:"; +Blockly.Msg["CLEAN_UP"] = "Премахни блокове"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Свитите блокове съдържат предупреждения."; +Blockly.Msg["COLLAPSE_ALL"] = "Скрий блокове"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Скрий блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "цвят 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "цвят 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "съотношение"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "смеси"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Смесва два цвят в дадено съотношение (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://bg.wikipedia.org/wiki/Цвят_(оптика)"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Избери цвят от палитрата."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случаен цвят"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Избери цвят на случаен принцип."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "син"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелен"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "червен"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "оцвети с"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Създай цвят с избраните пропорции, червено, зелено и синьо. Всички стойности трябва да бъдат от 0 до 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "прекъсни цикъла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "премини към следващата стъпка от цикъла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Прекъсни цикъла, в който се съдържа тази команда."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Премини към следващата стъпка от цикъла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Предупреждение: Този блок може да се използва само в цикъл."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "за всеки елемент %1 в списъка %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "За всеки елемент в даден списък, присвои елемента на променливата „%1“ и след това изпълни командите."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "преброй чрез %1 от %2 до %3 през %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Нека променлива '%1' премине през стойностите от началното до крайното число през зададената стъпка и изпълни избраните блокове."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Добави условие към „ако“ блока."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Добави окончателно, прихващащо всички останали случаи условие към блок „ако“."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Добави, премахни или пренареди частите, за да промениш този „ако“ блок."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "иначе"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "иначе ако"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ако"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ако стойността е вярна, изпълни операциите."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ако стойността е вярна, изпълни първият блок. Иначе, изпълни вторият блок."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ако първата стойност е вярна, изпълни първия блок. Иначе, ако втората стойност е вярна, изпълни втория блок."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ако първата стойност е вярна, изпълни първия блок. В противен случай, ако втората стойност е вярна, изпълни втория блок. Ако нито една от стойностите не е вярна, изпълни последния блок."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://bg.wikipedia.org/wiki/Цикъл_(програмиране)#For_.D1.86.D0.B8.D0.BA.D1.8A.D0.BB.D1.8A.D1.82"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "изпълни"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Повтори %1 пъти"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Изпълнява команди няколко пъти."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повтаряй докато"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повтаряй докато е вярно, че"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Изпълни командите, ако стойността не е вярна."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Изпълни командите, ако стойността е вярна."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Изтриване на всички 1% блокове?"; +Blockly.Msg["DELETE_BLOCK"] = "Изтрий блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Изтриване на променливата \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Изтриване на %1 използване на променлива '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Изтрий %1 блока"; +Blockly.Msg["DIALOG_CANCEL"] = "Отказ"; +Blockly.Msg["DIALOG_OK"] = "ОК"; +Blockly.Msg["DISABLE_BLOCK"] = "Деактивирай блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Копирай"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дублиране на коментара"; +Blockly.Msg["ENABLE_BLOCK"] = "Активирай блок"; +Blockly.Msg["EXPAND_ALL"] = "Покажи блокове"; +Blockly.Msg["EXPAND_BLOCK"] = "Покажи блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Външни входове"; +Blockly.Msg["HELP"] = "Помощ"; +Blockly.Msg["INLINE_INPUTS"] = "Вътрешни входове"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "създай празен списък"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Връща списък с дължина 0, не съдържащ данни"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "списък"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Добави, премахни или пренареди частите, за да промениш този списъчен блок."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "създай списък с"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Добави елемент към текста."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Създай списък с произволен брой елементи."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "първия"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ от края"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "вземи"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "вземи и премахни"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последния"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "произволен"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "премахни"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Връща първия елемент в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Връща елемента на определената позиция в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Връща последния елемент в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Връща случаен елемент от списъка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Премахва и връща първия елемент в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Премахва и връща елемента на определена позиция в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Премахва и връща последния елемент в списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Премахва и връща случаен елемент от списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Премахва първия елемент от списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Премахва елемент на определена позиция от списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Премахва последния елемент от списък."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Премахва случаен елемент от списък."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "до № открая"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "до №"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "до края"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "вземи подсписък от първия"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "вземи подсписък от № от края"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "вземи подсписък от №"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Копира част от списък."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 е последният елемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 е първият елемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "намери първата поява на елемента"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "намери последната поява на елемента"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Връща индекса на първото/последното появяване на елемента в списъка. Връща %1, ако елементът не е намерен."; +Blockly.Msg["LISTS_INLIST"] = "в списъка"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 е празен"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Връща стойност вярно, ако списъкът е празен."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "дължината на %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Връща дължината на списък."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "създай списък от %1 повторен %2 пъти"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Създава списък, състоящ се от определен брой копия на елемента."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "промени реда на обратно %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Промени реда на списъка на обратно."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "следното"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вмъкни на позиция"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "промени"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Вмъква елемент в началото на списъка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Вмъква елемент на определена позиция в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Добави елемент в края на списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Вмъква елемент на произволно място в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Променя първия елемент в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Променя елемента на определена позиция в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Променя последния елемент в списък."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Променя случаен елемент от списък."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "възходящо"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "низходящо"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сортиране по %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Подреди копие на списъка."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "по азбучен ред, без отчитане на малки и главни букви"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "в числов ред"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "по азбучен ред"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Направи списък от текст"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "направи текст от списък"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Събира списък от текстове в един текст, раделени с разделител."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Разделя текст в списък на текстове, по всеки разделител."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "с разделител"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "невярно"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Връща вярно или невярно."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "вярно"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Върни вярно, ако двата параметъра са еднакви."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Върни истина, ако първия параметър е по-голям от втория."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Върни истина, ако първия параметър е по-голям или равен на втория."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Върни вярно, ако първият параметър е по-малък от втория."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Върни истина, ако първия параметър е по-малък или равен на втория."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Върни вярно, ако двата параметъра са различни."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Върни вярно, ако параметърът е неверен. Върни невярно, ако параметърът е верен."; +Blockly.Msg["LOGIC_NULL"] = "нула"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Връща нула."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Върни вярно, ако и двата параметъра са верни."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Върни „вярно“, ако поне един от входовете е верен."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тест"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "Ако е невярно"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "Ако е вярно"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Провери условието в „тест“. Ако условието е истина, върни стойността „ако е вярно“, иначе върни стойността „ако е невярно“."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://bg.wikipedia.org/wiki/Аритметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Върни сумата на двете числа."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Върни частното на двете числа."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Върни разликата на двете числа."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Върни произведението на двете числа."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Върни първото число, повдигнато на степен на второто число."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 от X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Връща аркустангенс на точка (X, Y) в градуси от -180 до 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://bg.wikipedia.org/wiki/Събиране"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "промени %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Добави число към променлива „%1“."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "http://bg.wikipedia.org/wiki/Константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Връща една от често срещаните константи: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (безкрайност)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ограничи %1 между %2 и %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ограничи число да бъде в определените граници (включително)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "се дели на"; +Blockly.Msg["MATH_IS_EVEN"] = "е четно"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "е отрицателно"; +Blockly.Msg["MATH_IS_ODD"] = "е нечетно"; +Blockly.Msg["MATH_IS_POSITIVE"] = "е положително"; +Blockly.Msg["MATH_IS_PRIME"] = "е просто"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверете дали дадено число е четно, нечетно, просто, цяло, положително, отрицателно или дали се дели на друго число. Връща вярно или невярно."; +Blockly.Msg["MATH_IS_WHOLE"] = "е цяло"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "http://bg.wikipedia.org/wiki/Остатък"; +Blockly.Msg["MATH_MODULO_TITLE"] = "остатъка от делението на %1 на %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Върни остатъка от деление на две числа."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://bg.wikipedia.org/wiki/Число"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Число."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "средната стойност на числата в списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "най-голямата стойност в списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медианата на списък"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "най-малката стойност в списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "режими на списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случаен елемент от списъка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартно отклонение на списък"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сума на списъка"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Върни средната стойност (аритметичното средно) на числата в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Върни най-голямото число в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Върни медианата в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Върни най-малкото число в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Върни списък на най-често срещаните елементи в списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Върни случаен елемент от списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Връща стандартното отклонение на списъка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Върни сумата на всички числа в списъка."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "случайно дробно число"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Върни случайно дробно число между 0.0 (включително) и 1.0 (без да го включва)"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "случайно цяло число между %1 и %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Върни случайно число в определените граници (включително)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "закръгли"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "закръгли надолу"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "закръгли нагоре"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Закръгли число нагоре или надолу."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "абсолютна"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "корен квадратен"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Връща абсолютната стойност на число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Върни е (неперовото число) на степен зададеното число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Върни натуралния логаритъм от число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Върни десетичния логаритъм на число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Върни числото с обърнат знак."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Върни 10 на степен зададеното число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Връща корен квадратен от число."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://bg.wikipedia.org/wiki/Тригонометрична_функция"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Върни аркускосинус от число."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Върни аркуссинус от число."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Върни аркустангенс от число."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Върни косинус от ъгъл в градуси (не в радиани)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Върни синус от ъгъл в градуси (не в радиани)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Върни тангенс от ъгъл в градуси (не в радиани)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Създаване на цветова променлива..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Създаване на числова променлива..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Създаване на низова променлива..."; +Blockly.Msg["NEW_VARIABLE"] = "Създаване на променлива..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ново име на променливата:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Тип на новата променлива:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "позволи операциите"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "с:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://bg.wikipedia.org/wiki/Подпрограма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Изпълни дефинирана от потребителя функция „%1“."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://bg.wikipedia.org/wiki/Подпрограма"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Изпълни дефинирана от потребителя функция „%1“ и използвай резултата."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "с:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Създай '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишете тази функция..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "направиш"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "за да"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Създава функция, която не връща резултат."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "върни"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Създава функция, която връща резултат."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Предупреждение: Тази функция има дублиращи се параметри."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Покажи дефиницията на функцията"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ако стойността е вярна, върни втората стойност."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Предупреждение: Този блок може да се използва само във функция."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "име на параметър:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Добавяне на параметър към функцията."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "вход"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Добави, премахни или пренареди входните параметри за тази функция."; +Blockly.Msg["REDO"] = "Повторение"; +Blockly.Msg["REMOVE_COMMENT"] = "Премахни коментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Преименувай променливата..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Преименувай всички '%1' променливи на:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "добавете текст %2 към %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Добави текст към променливата „%1“."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "с малки букви"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "с Главна Буква На Всяка Дума"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "с ГЛАВНИ БУКВИ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Връща копие на текста със сменени малки и главни букви."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "вземи първата буква"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "вземи буква № от края"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "вземи буква №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "вземи последната буква"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "вземи произволна буква"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "в текст %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Връща буквата в определена позиция."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "пресмята броя на %1 в %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Преброй колко пъти даден текст се среща в друг текст."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Добави елемент към текста."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "свържи"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Добави, премахни или пренареди частите, за да промениш този текстов блок."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "до буква № от края"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "до буква №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "до последната буква."; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "в текста"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "вземи текста от първата буква"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "вземи текста от буква № (броено отзад-напред)"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "вземи текста от буква №"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Връща определена част от текста."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "намери първата поява на текста"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "намери последната поява на текста"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "в текст %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Връща индекса на първото/последното срещане на първия текст във втория текст. Връща %1, ако текстът не е намерен."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 е празен"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Връща вярно, ако текста е празен."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "създай текст с"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Създай текст като съчетаеш няколко елемента."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "дължината на %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Връща броя на символите (включително и интервалите) в текста."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "отпечатай %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Отпечатай текста, числото или друга стойност."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Питай потребителя за число."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Питай потребителя за текст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "питай за число със съобщение"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "питай за текст със съобщение"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замяна на %1 с %2 в %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замени всички появи на даден текст в друг текст."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "промени реда на обратно %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Промени реда на знаците в текста на обратно."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://bg.wikipedia.org/wiki/Низ"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Буква, дума или ред"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "премахни интервалите от двете страни"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "премахни интервалите отляво"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "премахни интервалите отдясно"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Връща копие на текста с премахнати интервали от единия или двата края."; +Blockly.Msg["TODAY"] = "Днес"; +Blockly.Msg["UNDO"] = "Отмяна"; +Blockly.Msg["UNNAMED_KEY"] = "без име"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "елемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Създай „промени стойността на %1“"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Връща стойността на тази променлива."; +Blockly.Msg["VARIABLES_SET"] = "нека %1 бъде %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Създай „вземи стойността на %1“"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Установява променливата със стойността на входа."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Променлива с име '%1' вече съществува."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Променлива с име '%1' вече съществува за друг тип: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Работна област на Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Коментирайте нещо..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/bn.js b/msg/js/bn.js index 439392388c5..9c2878d8c01 100644 --- a/msg/js/bn.js +++ b/msg/js/bn.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "মন্তব্য যোগ করুন"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' চলক অপসারণ করা যাবে না কারণ এটি '%2' কার্যপ্রণালীর সংজ্ঞার অংশ"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "মান পরিবর্তন করুন:"; -Blockly.Msg["CLEAN_UP"] = "ব্লকসমূহ পরিস্কার করুন"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ব্লকসমূহ সঙ্কুচিত করুন"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ব্লক সঙ্কুচিত করুন"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "রং ১"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "রং ২"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "অনুপাত"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "মিশ্রণ"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "প্রদত্ত অনুপাত(০.০ - ১.০) অনুসারে দুটি রং একসাথে মিশ্রিত করুন।"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://bn.wikipedia.org/wiki/রং"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "প্যালেট থেকে একটি রং পছন্দ করুন"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "এলোমেলো রং"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "এলোমেলোভাবে একটি রং পছন্দ করুন।"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "নীল"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "সবুজ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "লাল"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "রং সহ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "একটি রং তৈরি করুন নির্দিষ্ট পরিমাণে লাল, সবুজ এবং নীল রং মিশ্রিত করে। প্রত্যেকটির মান অবশ্যই ০ থেকে ১০০ এর মধ্যে হতে হবে।"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "প্রবেশপথ থেকে চলে অাসুন"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "পুনরাবৃত্তি চালিয়ে যান পরবর্তী প্রবেশপথে"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "সংশ্লিষ্ট প্রবেশপথ থেকে চলে অাসুন"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "এই প্রবেশপথের অবশিষ্ট অংশ বাদ দিন এবং পরবর্তী প্রচেষ্টা চালিয়ে যান।"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "সর্তকীবার্তা: এই ব্লকটি শুধুমাত্র লুপের মধ্যে ব্যবহার করা যাবে।"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "প্রত্যেকটি পদের জন্য %1 তালিকার মধ্যে %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "কোন তালিকায় প্রতিবারের জন্য, আইটেমের সাথে চলক '%1' বসান এবং কিছু বিবরণ দিন।"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "গণনা কর %1 %4 দিয়ে %2 থেকে %3"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "চলক %1 প্রস্তুত করুন, শুরু থেকে শেষ পর্যন্ত সংখ্যা গ্রহন করতে যা নির্দেশিত বিরতি গণনা করছে এবং নির্দেশিত ব্লক সমূহ সম্পন্ন করতে।"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "যদি নামক ব্লক এ একটি শর্ত যোগ করুন।"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "নতুবা"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "নতুবা যদি"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "যদি"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "যদি একটি মূল্যমাস সত্য হয়, তবে কিছু বিবরণ দিন"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "যদি একটি মূল্যমান সত্য হয়, তবে বিবৃতিসমূহের প্রথম ব্লকটা অন্যথায় বিবৃতির দ্বিতীয় ব্লক।"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "যদি প্রথম মূল্যমান সঠিক হয়, তবে বর্ণিত প্রথম ব্লকটি সম্পন্ন করুন। অন্যথায়, দ্বিতীয় মূল্যমান সঠিক হয়, দ্বিতীয় ব্লক সম্পন্ন করুন।"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://bn.wikipedia.org/wiki/প্রবেশ_পথ"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "করুন"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 বার পুনরাবৃত্তি করো"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "কিছু বিবরণ বারবার দিন।"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "অাবার করুন যতক্ষণ না"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "অাবার করুন যখন"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "যখন একটি মূল্যমান মিথ্যা, তখন কিছু বিবৃতি দিন।"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "যখন একটি মূল্যমান সঠিক, তখন কিছু বিবরণ দিন।"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "সব %1টি ব্লক অপসারণ করবেন?"; -Blockly.Msg["DELETE_BLOCK"] = "ব্লকটি মুছে ফেল"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' চলকটি অপসারণ করুন"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' চলকের '%1'টি ব্যবহার অপসারণ করবেন?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ব্লক অপসারণ কর"; -Blockly.Msg["DIALOG_CANCEL"] = "বাতিল"; -Blockly.Msg["DIALOG_OK"] = "ঠিক আছে"; -Blockly.Msg["DISABLE_BLOCK"] = "ব্লকটি বিকল কর"; -Blockly.Msg["DUPLICATE_BLOCK"] = "প্রতিলিপি"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "ব্লকটি সচল কর"; -Blockly.Msg["EXPAND_ALL"] = "ব্লকগুলো সম্প্রসারিত কর"; -Blockly.Msg["EXPAND_BLOCK"] = "ব্লকটি সম্প্রসারিত কর"; -Blockly.Msg["EXTERNAL_INPUTS"] = "বহি:স্থ ইনপুট"; -Blockly.Msg["HELP"] = "সাহায্য"; -Blockly.Msg["INLINE_INPUTS"] = "সারি ইনপুট"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "খালি তালিকা তৈরি করুন"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "পাঠাবে একটি তালিকা, দের্ঘ্য হবে ০, কোন উপাত্ত থাকবে না"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "তালিকা"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "তালিকায় একটি পদ যোগ করুন।"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "যেকোন সংখ্যক পদ নিয়ে একটি তালিকা তৈরি করুন।"; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "প্রথম"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# শেষ থেকে"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "নিন"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "নিন ও সরান"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "শেষ"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "এলোমেলো"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "অপসারণ"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "তালিকার প্রথম পদটি পাঠাবে।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "তালিকার শেষ পদটি পাঠাবে।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "এলোমেলোভাবে তালিকার যেকোন একটি পদ পাঠাবে।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "অপসারণ করুন এবং তালিকার প্রথম পদটি পাঠান।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "অপসারণ করুন এবং তালিকার শেষ পদটি পাঠান।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "অপসারণ করুন এবং তালিকার এলোমেলো একটি পদ পাঠান।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "তালিকার প্রথম পদটি অপসারণ করা হয়েছে।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "তালিকার শেষ পদটি অপসারণ করা হয়েছে।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "তালিকা থেকে এলোমেলো একটি পদ অপসারণ করা হয়েছে।"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "আইটেমের প্রথম সংঘটন খুঁজুন"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "আইটেমের শেষ সংঘটন খুঁজুন"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "তালিকার মধ্যে"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 খালি"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "পাঠাবে সত্য যদি তালিকাটি খালি হয়।"; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1-এর দৈর্ঘ্য"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "একটি তালিকার দৈর্ঘ্য পাঠাবে।"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "একটি তালিকার একটি অনুলিপি উল্টান"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "লিখা থেকে তালিকা তৈরি করুন"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "তালিকা থেকে লিখা তৈরি করুন"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "মিথ্যা"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "পাঠাবে হয় সত্য অথবা মিথ্যা।"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "সত্য"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "পাঠাবে সত্য যদি উভয় ইনপুটই সমান হয়।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় হয়।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় অথবা সমান হয়।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট হয়।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট অথবা সমান হয়।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "পাঠাবে সত্য যদি উভয় ইনপুটই সমান না হয়।"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 নয়"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "পাঠাবে সত্য যদি ইনপুট মিথ্যা হয়। পাঠাবে মিথ্যা যদি ইনপুট সত্য হয়।"; -Blockly.Msg["LOGIC_NULL"] = "কিছু না"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "কিছু ফেরত দিবে না।"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "এবং"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "অথবা"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "পাঠাবে সত্য যদি উভয় ইনপুটই সত্য হয়।"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "পাঠাবে সত্য যদি অন্ততপক্ষে যেকোন একটি ইনপুট সত্য হয়।"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "পরীক্ষা"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "যদি মিথ্যা হয়"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "যদি সত্য হয়"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "পাঠাবে দুটি সংখ্যার যোগফল।"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "পাঠাবে দুটি সংখ্যার ভাগফল।"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "পাঠাবে দুটি সংখ্যার বিয়োগফল।"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "পাঠাবে দুটি সংখ্যার গুণফল।"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "%2 দ্বারা %1 পরিবর্তন"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "দ্বারা বিভাজ্য"; -Blockly.Msg["MATH_IS_EVEN"] = "জোড় সংখ্যা"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "নেতিবাচক"; -Blockly.Msg["MATH_IS_ODD"] = "বিজোড় সংখ্যা"; -Blockly.Msg["MATH_IS_POSITIVE"] = "ইতিবাচক"; -Blockly.Msg["MATH_IS_PRIME"] = "মৌলিক সংখ্যা"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 এর ভাগশেষ"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://bn.wikipedia.org/wiki/সংখ্যা"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "একটি সংখ্যা।"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "তালিকার গড়"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "তালিকার মধ্যে সর্বোচ্চ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "তালিকার মধ্যমা"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "তালিকার মধ্যে সর্বনিম্ন"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "তালিকার এলোমেলো পদ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "তালিকার যোগফল"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "পাঠাবে তালিকার সব সংখ্যার গড়।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "তালিকার মধ্যে সর্বোচ্চ সংখ্যাটি পাঠাও"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "তালিকার মধ্যমা সংখ্যাটি পাঠাবে।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "তালিকার মধ্যে সর্বনিম্ন সংখ্যাটি পাঠাও"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "তালিকা থেকে এলোমেলোভাবে একটি পদ পাঠাবে।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "পাঠাবে তালিকার সব সংখ্যার যোগফল।"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "এলোমেলো ভগ্নাংশ"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "পরম"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "বর্গমূল"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "পাঠাবে সংখ্যার পরমমান।"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "পাঠাবে একটি সংখ্যার বর্গমূল।"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "চলক তৈরি করুন..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "নতুন চলকের নাম:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "এতে"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "আউটপুট ছাড়া একটি ক্রিয়া তৈরি করুন।"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "পাঠাবে"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "আউটপুট সহ একটি ক্রিয়া তৈরি করুন।"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "ক্রিয়ার সংজ্ঞা উজ্জল করুন"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "যদি মান সত্য হয় তাহলে দ্বিতীয় মান পাঠাবে।"; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ইনপুটের নাম:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ক্রিয়াতে একটি ইনপুট যোগ করুন।"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "পুনরায় করুন"; -Blockly.Msg["REMOVE_COMMENT"] = "মন্তব্য সরাও"; -Blockly.Msg["RENAME_VARIABLE"] = "চলকের নাম পরিবর্তন..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "'%1' চলকগুলোর নতুন নাম দিন:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ছোটহাতের অক্ষরে"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "বড়হাতের অক্ষরে"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "লেখাটিতে একটি পদ যোগ করুন।"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "যোগ"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 খালি"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "পাঠাবে সত্য যদি সরবরাহকৃত লেখাটি খালি হয়।"; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1-এর দৈর্ঘ্য"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 মুদ্রণ করুন"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 উল্টান"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "একটি অক্ষর, শব্দ অথবা বাক্য।"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "উভয় পাশ থেকে খালি অংশ ছাটাই"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "বামপাশ থেকে খালি অংশ ছাটাই"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ডানপাশ থেকে খালি অংশ ছাটাই"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "আজ"; -Blockly.Msg["UNDO"] = "পূর্বাবস্থা"; -Blockly.Msg["UNNAMED_KEY"] = "নামহীন"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "পদ"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 নিন' তৈরি করুন"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' নামের চলক পূর্ব থেকে অাছে।"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' নামের চলক '%2' ধরনের চলকের জন্য পূর্ব থেকেই অাছে।"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "মন্তব্য যোগ করুন"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' চলক অপসারণ করা যাবে না কারণ এটি '%2' কার্যপ্রণালীর সংজ্ঞার অংশ"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "মান পরিবর্তন করুন:"; +Blockly.Msg["CLEAN_UP"] = "ব্লকসমূহ পরিস্কার করুন"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ব্লকসমূহ সঙ্কুচিত করুন"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ব্লক সঙ্কুচিত করুন"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "রং ১"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "রং ২"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "অনুপাত"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "মিশ্রণ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "প্রদত্ত অনুপাত(০.০ - ১.০) অনুসারে দুটি রং একসাথে মিশ্রিত করুন।"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://bn.wikipedia.org/wiki/রং"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "প্যালেট থেকে একটি রং পছন্দ করুন"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "এলোমেলো রং"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "এলোমেলোভাবে একটি রং পছন্দ করুন।"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "নীল"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "সবুজ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "লাল"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "রং সহ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "একটি রং তৈরি করুন নির্দিষ্ট পরিমাণে লাল, সবুজ এবং নীল রং মিশ্রিত করে। প্রত্যেকটির মান অবশ্যই ০ থেকে ১০০ এর মধ্যে হতে হবে।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "প্রবেশপথ থেকে চলে অাসুন"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "পুনরাবৃত্তি চালিয়ে যান পরবর্তী প্রবেশপথে"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "সংশ্লিষ্ট প্রবেশপথ থেকে চলে অাসুন"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "এই প্রবেশপথের অবশিষ্ট অংশ বাদ দিন এবং পরবর্তী প্রচেষ্টা চালিয়ে যান।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "সর্তকীবার্তা: এই ব্লকটি শুধুমাত্র লুপের মধ্যে ব্যবহার করা যাবে।"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "প্রত্যেকটি পদের জন্য %1 তালিকার মধ্যে %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "কোন তালিকায় প্রতিবারের জন্য, আইটেমের সাথে চলক '%1' বসান এবং কিছু বিবরণ দিন।"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "গণনা কর %1 %4 দিয়ে %2 থেকে %3"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "চলক %1 প্রস্তুত করুন, শুরু থেকে শেষ পর্যন্ত সংখ্যা গ্রহন করতে যা নির্দেশিত বিরতি গণনা করছে এবং নির্দেশিত ব্লক সমূহ সম্পন্ন করতে।"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "যদি নামক ব্লক এ একটি শর্ত যোগ করুন।"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "নতুবা"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "নতুবা যদি"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "যদি"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "যদি একটি মূল্যমাস সত্য হয়, তবে কিছু বিবরণ দিন"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "যদি একটি মূল্যমান সত্য হয়, তবে বিবৃতিসমূহের প্রথম ব্লকটা অন্যথায় বিবৃতির দ্বিতীয় ব্লক।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "যদি প্রথম মূল্যমান সঠিক হয়, তবে বর্ণিত প্রথম ব্লকটি সম্পন্ন করুন। অন্যথায়, দ্বিতীয় মূল্যমান সঠিক হয়, দ্বিতীয় ব্লক সম্পন্ন করুন।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://bn.wikipedia.org/wiki/প্রবেশ_পথ"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "করুন"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 বার পুনরাবৃত্তি করো"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "কিছু বিবরণ বারবার দিন।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "অাবার করুন যতক্ষণ না"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "অাবার করুন যখন"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "যখন একটি মূল্যমান মিথ্যা, তখন কিছু বিবৃতি দিন।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "যখন একটি মূল্যমান সঠিক, তখন কিছু বিবরণ দিন।"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "সব %1টি ব্লক অপসারণ করবেন?"; +Blockly.Msg["DELETE_BLOCK"] = "ব্লকটি মুছে ফেল"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' চলকটি অপসারণ করুন"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' চলকের '%1'টি ব্যবহার অপসারণ করবেন?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ব্লক অপসারণ কর"; +Blockly.Msg["DIALOG_CANCEL"] = "বাতিল"; +Blockly.Msg["DIALOG_OK"] = "ঠিক আছে"; +Blockly.Msg["DISABLE_BLOCK"] = "ব্লকটি বিকল কর"; +Blockly.Msg["DUPLICATE_BLOCK"] = "প্রতিলিপি"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ব্লকটি সচল কর"; +Blockly.Msg["EXPAND_ALL"] = "ব্লকগুলো সম্প্রসারিত কর"; +Blockly.Msg["EXPAND_BLOCK"] = "ব্লকটি সম্প্রসারিত কর"; +Blockly.Msg["EXTERNAL_INPUTS"] = "বহি:স্থ ইনপুট"; +Blockly.Msg["HELP"] = "সাহায্য"; +Blockly.Msg["INLINE_INPUTS"] = "সারি ইনপুট"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "খালি তালিকা তৈরি করুন"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "পাঠাবে একটি তালিকা, দের্ঘ্য হবে ০, কোন উপাত্ত থাকবে না"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "তালিকা"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "তালিকায় একটি পদ যোগ করুন।"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "যেকোন সংখ্যক পদ নিয়ে একটি তালিকা তৈরি করুন।"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "প্রথম"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# শেষ থেকে"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "নিন"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "নিন ও সরান"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "শেষ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "এলোমেলো"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "অপসারণ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "তালিকার প্রথম পদটি পাঠাবে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "তালিকার শেষ পদটি পাঠাবে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "এলোমেলোভাবে তালিকার যেকোন একটি পদ পাঠাবে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "অপসারণ করুন এবং তালিকার প্রথম পদটি পাঠান।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "অপসারণ করুন এবং তালিকার শেষ পদটি পাঠান।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "অপসারণ করুন এবং তালিকার এলোমেলো একটি পদ পাঠান।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "তালিকার প্রথম পদটি অপসারণ করা হয়েছে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "তালিকার শেষ পদটি অপসারণ করা হয়েছে।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "তালিকা থেকে এলোমেলো একটি পদ অপসারণ করা হয়েছে।"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "আইটেমের প্রথম সংঘটন খুঁজুন"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "আইটেমের শেষ সংঘটন খুঁজুন"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "তালিকার মধ্যে"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 খালি"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "পাঠাবে সত্য যদি তালিকাটি খালি হয়।"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1-এর দৈর্ঘ্য"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "একটি তালিকার দৈর্ঘ্য পাঠাবে।"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "একটি তালিকার একটি অনুলিপি উল্টান"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "লিখা থেকে তালিকা তৈরি করুন"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "তালিকা থেকে লিখা তৈরি করুন"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "মিথ্যা"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "পাঠাবে হয় সত্য অথবা মিথ্যা।"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "সত্য"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "পাঠাবে সত্য যদি উভয় ইনপুটই সমান হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় অথবা সমান হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট অথবা সমান হয়।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "পাঠাবে সত্য যদি উভয় ইনপুটই সমান না হয়।"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 নয়"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "পাঠাবে সত্য যদি ইনপুট মিথ্যা হয়। পাঠাবে মিথ্যা যদি ইনপুট সত্য হয়।"; +Blockly.Msg["LOGIC_NULL"] = "কিছু না"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "কিছু ফেরত দিবে না।"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "এবং"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "অথবা"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "পাঠাবে সত্য যদি উভয় ইনপুটই সত্য হয়।"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "পাঠাবে সত্য যদি অন্ততপক্ষে যেকোন একটি ইনপুট সত্য হয়।"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "পরীক্ষা"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "যদি মিথ্যা হয়"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "যদি সত্য হয়"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "পাঠাবে দুটি সংখ্যার যোগফল।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "পাঠাবে দুটি সংখ্যার ভাগফল।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "পাঠাবে দুটি সংখ্যার বিয়োগফল।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "পাঠাবে দুটি সংখ্যার গুণফল।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "%2 দ্বারা %1 পরিবর্তন"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "দ্বারা বিভাজ্য"; +Blockly.Msg["MATH_IS_EVEN"] = "জোড় সংখ্যা"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "নেতিবাচক"; +Blockly.Msg["MATH_IS_ODD"] = "বিজোড় সংখ্যা"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ইতিবাচক"; +Blockly.Msg["MATH_IS_PRIME"] = "মৌলিক সংখ্যা"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 এর ভাগশেষ"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://bn.wikipedia.org/wiki/সংখ্যা"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "একটি সংখ্যা।"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "তালিকার গড়"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "তালিকার মধ্যে সর্বোচ্চ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "তালিকার মধ্যমা"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "তালিকার মধ্যে সর্বনিম্ন"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "তালিকার এলোমেলো পদ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "তালিকার যোগফল"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "পাঠাবে তালিকার সব সংখ্যার গড়।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "তালিকার মধ্যে সর্বোচ্চ সংখ্যাটি পাঠাও"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "তালিকার মধ্যমা সংখ্যাটি পাঠাবে।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "তালিকার মধ্যে সর্বনিম্ন সংখ্যাটি পাঠাও"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "তালিকা থেকে এলোমেলোভাবে একটি পদ পাঠাবে।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "পাঠাবে তালিকার সব সংখ্যার যোগফল।"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "এলোমেলো ভগ্নাংশ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "পরম"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "বর্গমূল"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "পাঠাবে সংখ্যার পরমমান।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "পাঠাবে একটি সংখ্যার বর্গমূল।"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "চলক তৈরি করুন..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "নতুন চলকের নাম:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "এতে"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "আউটপুট ছাড়া একটি ক্রিয়া তৈরি করুন।"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "পাঠাবে"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "আউটপুট সহ একটি ক্রিয়া তৈরি করুন।"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "ক্রিয়ার সংজ্ঞা উজ্জল করুন"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "যদি মান সত্য হয় তাহলে দ্বিতীয় মান পাঠাবে।"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ইনপুটের নাম:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ক্রিয়াতে একটি ইনপুট যোগ করুন।"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "পুনরায় করুন"; +Blockly.Msg["REMOVE_COMMENT"] = "মন্তব্য সরাও"; +Blockly.Msg["RENAME_VARIABLE"] = "চলকের নাম পরিবর্তন..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "'%1' চলকগুলোর নতুন নাম দিন:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ছোটহাতের অক্ষরে"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "বড়হাতের অক্ষরে"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "লেখাটিতে একটি পদ যোগ করুন।"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "যোগ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 খালি"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "পাঠাবে সত্য যদি সরবরাহকৃত লেখাটি খালি হয়।"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1-এর দৈর্ঘ্য"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 মুদ্রণ করুন"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 উল্টান"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "একটি অক্ষর, শব্দ অথবা বাক্য।"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "উভয় পাশ থেকে খালি অংশ ছাটাই"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "বামপাশ থেকে খালি অংশ ছাটাই"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ডানপাশ থেকে খালি অংশ ছাটাই"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "আজ"; +Blockly.Msg["UNDO"] = "পূর্বাবস্থা"; +Blockly.Msg["UNNAMED_KEY"] = "নামহীন"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "পদ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 নিন' তৈরি করুন"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' নামের চলক পূর্ব থেকে অাছে।"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' নামের চলক '%2' ধরনের চলকের জন্য পূর্ব থেকেই অাছে।"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/br.js b/msg/js/br.js index fe318bc6870..95e6778416f 100644 --- a/msg/js/br.js +++ b/msg/js/br.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Ouzhpennañ un evezhiadenn"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne ch'aller ket dilemel an argemmenn \"%1\" dre m'eo lod eus dielfennadur an arc'hwel \"%2\""; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Kemmañ an dalvoudenn :"; -Blockly.Msg["CLEAN_UP"] = "Naetaat ar bloc'hoù"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Kemennoù-diwall zo er bloc'hadoù pleget."; -Blockly.Msg["COLLAPSE_ALL"] = "Bihanaat ar bloc'hoù"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Bihanaat ar bloc'h"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "liv 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "liv 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "feur"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "meskañ"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "a gemmesk daou liv gant ur feur roet(0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://br.wikipedia.org/wiki/Liv"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Dibab ul liv diwar al livaoueg."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "liv dargouezhek"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tennañ ul liv d'ar sord"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "glas"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "gwer"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ruz"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "liv gant"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Krouiñ ul liv gant ar c'hementad spisaet a ruz, a wer hag a c'hlas. Etre 0 ha 100 e tle bezañ an holl dalvoudoù."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Mont e-maez an adlañsañ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "Kenderc'hel gant iteradur nevez ar rodell"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Mont e-maez ar boukl engronnus."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Lammat ar rest eus ar rodell, ha kenderc'hel gant an iteradur war-lerc'h."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Diwallit : ne c'hall ar bloc'h-mañ bezañ implijet nemet e-barzh ur boukl."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "evit pep elfenn %1 er roll %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Evit pep elfenn en ur roll, reiñ talvoud an elfenn d'an argemmenn '%1', ha seveniñ urzhioù zo da c'houde."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "kontañ gant %1 eus %2 da %3 dre %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ober e doare ma kemero an argemmenn \"%1\" an talvoudennoù adalek niverenn an deroù betek niverenn an dibenn, en ur inkremantiñ an esaouenn, ha seveniñ an urzhioù spisaet."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ouzhpennañ un amplegad d'ar bloc'h ma."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ouzhpennañ un amplegad dibenn lak-pep-tra d'ar bloc'h ma."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h ma."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "a-hend-all"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mod all ma"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ma"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ma vez gwir un dalvoudenn, seveniñ ar c'henañ bloc'had urzhioù neuze. Anez seveniñ an eil bloc'had urzhioù."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had urzhioù neuze. Anez ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had. Anez, ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù. Ma ne vez gwir talvoudenn ebet, seveniñ ar bloc'had diwezhañ a urzhioù."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ober"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "adober %1 gwech"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Seveniñ urzhioù zo meur a wech"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "adober betek"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "adober keit ha ma"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Keit ha ma vez faos un dalvoudenn, seveniñ urzhioù zo neuze."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Keit ha ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Diverkañ an holl vloc'hoù %1 ?"; -Blockly.Msg["DELETE_BLOCK"] = "Dilemel ar bloc'h"; -Blockly.Msg["DELETE_VARIABLE"] = "Lemel an argemm '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Lemel %1 implij eus an argemm '%2' ?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Dilemel %1 bloc'h"; -Blockly.Msg["DIALOG_CANCEL"] = "Nullañ"; -Blockly.Msg["DIALOG_OK"] = "Mat eo"; -Blockly.Msg["DISABLE_BLOCK"] = "Diweredekaat ar bloc'h"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Eiladuriñ"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Eiladiñ an eilenn"; -Blockly.Msg["ENABLE_BLOCK"] = "Gweredekaat ar bloc'h"; -Blockly.Msg["EXPAND_ALL"] = "Astenn ar bloc'hoù"; -Blockly.Msg["EXPAND_BLOCK"] = "Astenn ar bloc'h"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Monedoù diavaez"; -Blockly.Msg["HELP"] = "Skoazell"; -Blockly.Msg["INLINE_INPUTS"] = "Monedoù enlinenn"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "krouiñ ur roll goullo"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Distreiñ ul listenn, 0 a hirder, n'eus enrolladenn ebet enni"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "roll"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h listenn-mañ."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "krouiñ ur roll gant"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ouzhpennañ un elfenn d'ar roll"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Krouiñ ur roll gant un niver bennak a elfennoù."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "kentañ"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# adalek ar fin"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "tapout"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "tapout ha lemel"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "diwezhañ"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "dre zegouezh"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "lemel"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Distreiñ an elfenn gentañ en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Distreiñ an elfenn el lec'h meneget en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Distreiñ un elfenn diwezhañ en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Distreiñ un elfenn dre zegouezh en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Lemel ha distreiñ a ra an elfenn gentañ en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Lemel ha distreiñ a ra an elfenn el lec'h meneget en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Lemel ha distreiñ a ra an elfenn diwezhañ en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Lemel ha distreiñ a ra an elfenn dre zegouezh en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Lemel a ra an elfenn gentañ en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Lemel a ra an elfenn el lec'h meneget en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Lemel a ra an elfenn diwezhañ en ul listenn."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Lemel a ra un elfenn dre zegouezh en ul listenn."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "betek # adalek an dibenn"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "da #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "betek ar fin"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Kaout an islistenn adalek an deroù"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "Kaout an islistenn adalek # adalek an dibenn"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "Kaout an islistenn adalek #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Krouiñ un eilad eus lodenn spisaet ul listenn."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 eo an elfenn gentañ."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 eo an elfenn gentañ."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "kavout reveziadenn gentañ un elfenn"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "kavout reveziadenn diwezhañ un elfenn"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus an elfenn en ul listenn. Distreiñ %1 ma n'eo ket kavet an destenn."; -Blockly.Msg["LISTS_INLIST"] = "el listenn"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 zo goullo"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Distreiñ gwir m'eo goullo al listenn."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "hirder %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Distreiñ hirder ul listenn."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "Krouiñ ul listenn gant an elfenn %1 arreet %2 div wech"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Krouiñ ul listenn a c'hoarvez eus an dalvoudenn roet arreet an niver a wech meneget"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "eilpennañ %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Eilpennañ un eilskrid eus ur roll."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "evel"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ensoc'hañ evel"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "termenañ"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ensoc'hañ a ra an elfenn e deroù ul listenn."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ensoc'hañ a ra an elfenn el lec'h meneget en ul listenn."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ouzhpennañ a ra an elfenn e fin al listenn."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ensoc'hañ a ra an elfenn dre zegouezh en ul listenn."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Termenañ a ra an elfenn gentañ en ul listenn."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Termenañ a ra an elfenn el lec'h meneget en ul listenn."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Termenañ a ra an elfenn diwezhañ en ul listenn."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Termenañ a ra un elfenn dre zegouezh en ul listenn."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "war gresk"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "war zigresk"; -Blockly.Msg["LISTS_SORT_TITLE"] = "Rummañ%1,%2,%3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Rummañ un eilenn eus ar roll"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "Dre urzh al lizherenneg, hep derc'hel kont eus an direnneg"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "niverel"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Dre urzh al lizherenneg"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Krouiñ ul listenn diwar an destenn"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "Krouiñ un destenn diwar al listenn"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Bodañ ul listennad testennoù en ul listenn hepken, o tispartiañ anezho gant un dispartier."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Troc'hañ un destenn en ul listennad testennoù, o troc'hañ e pep dispartier."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "gant an dispartier"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "gaou"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Distreiñ pe gwir pe faos"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "gwir"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Distreiñ gwir m'eo par an daou voned."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil pe par dezhañ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil pe m'eo par dezhañ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Distreiñ gwir ma n'eo ket par an daou voned."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nann %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Distreiñ gwir m'eo faos ar moned. Distreiñ faos m'eo gwir ar moned."; -Blockly.Msg["LOGIC_NULL"] = "Null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Distreiñ null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ha(g)"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "pe"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Distreiñ gwir m'eo gwir an da daou voned."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Distreiñ gwir m'eo gwir unan eus an daou voned da nebeutañ."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "amprouad"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "m'eo gaou"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "m'eo gwir"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Gwiriañ an amplegad e 'prouad'. M'eo gwir an amplegad, distreiñ an dalvoudenn 'm'eo gwir'; anez distreiñ ar moned 'm'eo faos'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://br.wikipedia.org/wiki/Aritmetik"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Distreiñ sammad daou niver."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Distreiñ rannad daou niver."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Distreiñ diforc'h daou niver"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Distreiñ liesad daou niver."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Distreiñ an niver kentañ lakaet dindan gallouter an eil niver."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://fr.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 eus X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Adkas a ra ark tangent ar poent (X, Y) e derezioù etre -180 ha 180"; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "kemmañ %1 gant %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ouzhpennañ un niver d'an argemmenn '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Distreiñ unan eus digemmennoù red : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (anvevenn)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "destrizhañ %1 etre %2 ha %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Destrizhañ un niver da vezañ etre ar bevennoù spisaet (enlakaet)"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "a zo rannadus dre"; -Blockly.Msg["MATH_IS_EVEN"] = "zo par"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "a zo negativel"; -Blockly.Msg["MATH_IS_ODD"] = "zo ampar"; -Blockly.Msg["MATH_IS_POSITIVE"] = "a zo pozitivel"; -Blockly.Msg["MATH_IS_PRIME"] = "zo kentañ"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Gwiriañ m'eo par, anpar, kentañ, muiel, leiel un niverenn pe ma c'haller rannañ anezhi dre un niver roet zo. Distreiñ gwir pe faos."; -Blockly.Msg["MATH_IS_WHOLE"] = "zo anterin"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "rest eus %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Distreiñ dilerc'h rannadur an div niver"; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://br.wikipedia.org/wiki/Niver"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un niver."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Keitat al listenn"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Uc'hegenn al listenn"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Kreizad al listenn"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Izegenn al listenn"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modoù stankañ el listenn"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Elfennn eus al listenn tennet d'ar sord"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "forc'had standart eus al listenn"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Sammad al listenn"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Distreiñ keitad (niveroniel) an talvoudennoù niverel el listenn."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Distreiñ an niver brasañ el listenn."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Distreiñ an niver kreiz el listenn"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Distreiñ an niver bihanañ el listenn"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Distreiñ ul listennad elfennoù stankoc'h el listenn."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Distreiñ un elfenn zargouezhek el listenn"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Distreiñ forc'had standart al listenn."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Distreiñ sammad an holl niveroù zo el listenn."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Rann dargouezhek"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Distreiñ ur rann dargouezhek etre 0.0 (enkaelat) hag 1.0 (ezkaelat)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "anterin dargouezhek etre %1 ha %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Distreiñ un anterin dargouezhek etre an div vevenn spisaet, endalc'het."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "Rontaat"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Rontaat dindan"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Rontaat a-us"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rontaat un niver dindan pe a-us"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://br.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "dizave"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "gwrizienn garrez"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Distreiñ talvoud dizave un niver."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Distreiñ galloudad un niver."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Distreiñ logaritm naturel un niver"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Distreiñ logaritm diazez 10 un niver"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Distreiñ enebad un niver"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Distreiñ 10 da c'halloudad un niver."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Distreiñ gwrizienn garrez un niver"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://br.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Distreiñ ark kosinuz un niver"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Distreiñ ark sinuz un niver"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Distreiñ ark tangent un niver"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Distreiñ kosinuz ur c'horn (ket e radianoù)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Distreiñ sinuz ur c'horn (ket e radianoù)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Distreiñ tangent ur c'horn (ket e radianoù)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Krouiñ un argemmenn liv..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Krouiñ un argemm niver..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Krouiñ un argemmenn chadenn..."; -Blockly.Msg["NEW_VARIABLE"] = "Krouiñ un argemmenn nevez..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Anv an argemmenn nevez :"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Doare nevez a argemm:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "aotren an disklêriadurioù"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "gant :"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Seveniñ an arc'hwel '%1' termenet gant an implijer."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Seveniñ an arc'hwel '%1' termenet gant an implijer hag implijout e zisoc'h."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "gant :"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Krouiñ '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Deskrivañ an arc'hwel-mañ..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ober un dra bennak"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "da"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Krouiñ un arc'hwel hep mont er-maez."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "distreiñ"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Kouiñ un arc'hwel gant ur mont er-maez"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Diwallit : an arc'hwel-mañ en deus arventennoù eiladet."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Dreislinennañ termenadur an arc'hwel"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ma'z eo gwir un dalvoudenn, distreiñ un eil talvoudenn neuze."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Diwallit : Gallout a rafe ar bloc'h bezañ implijet e termenadur un arc'hwel hepken."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Anv ar moned"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ouzhpennañ ur moned d'an arc'hwel."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Monedoù"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Ouzhpennañ, lemel, pe adkempenn monedoù an arc'hwel-mañ."; -Blockly.Msg["REDO"] = "Adober"; -Blockly.Msg["REMOVE_COMMENT"] = "Lemel an evezhiadenn kuit"; -Blockly.Msg["RENAME_VARIABLE"] = "Adenvel an argemmenn..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Adenvel an holl argemmennoù '%1' e :"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "Ouzhpennañ an destenn %2 da %1"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Ouzhpennañ testenn d'an argemmenn'%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "e lizherennoù bihan"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Gant Ur Bennlizherenn E Deroù Pep Ger"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "e PENNLIZHERENNOÙ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Distreiñ un eilenn eus an eilenn en un direnneg all"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "tapout al lizherenn gentañ"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "Kaout al lizherenn # adalek an dibenn."; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "Kaout al lizherenn #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "tapout al lizherenn ziwezhañ"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "Kaout ul lizherenn dre zegouezh"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "en destenn %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Distreiñ al lizherenn d'al lec'h spisaet."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "niver %1 war %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Kontañ pet gwech e c'hoarvez un destenn bennak en un destenn bennak all."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ouzhpennañ un elfenn d'an destenn."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "stagañ"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h testenn-mañ."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "Betek al lizherenn # adalek an dibenn."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "betek al lizherenn #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "d'al lizherenn diwezhañ"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en destenn"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "Kaout an ischadenn adalek al lizherenn gentañ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "Kaout an ischadenn adalek al lizherenn # betek an dibenn"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "Kaout an ischadenn adalek al lizherenn #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Distreiñ un tamm spisaet eus an destenn."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "kavout reveziadenn gentañ an destenn"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "kavout reveziadenn diwezhañ an destenn"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en destenn %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus ar chadenn gentañ en eil chadenn. Distreiñ %1 ma n'eo ket kavet ar chadenn."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 zo goullo"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Adkas gwir m'eo goullo an destenn roet."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "krouiñ un destenn gant"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Krouit un tamm testenn en ur gevelstrollañ un niver bennak a elfennoù"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "hirder %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Distreiñ an niver a lizherennoù(en ur gontañ an esaouennoù e-barzh) en destenn roet."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "moullañ %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Moullañ an destenn, an niverenn pe un dalvoudenn spisaet all"; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Goulenn un niver gant an implijer."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Goulenn un destenn gant an implijer."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pedadenn evit un niver gant ur c'hemennad"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "goulenn un destenn gant ur gemennadenn"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "erlec'hiañ %1 gant %2 e %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Erlec'hiañ holl reveziadennoù un destenn bennak gant un destenn all."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "eilpennañ %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Eilpennañ urzh an arouezennoù en destenn."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Ul lizherenn, ur ger pe ul linennad testenn."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "Lemel an esaouennoù en daou du"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "Lemel an esaouennoù eus an tu kleiz"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "Lemel an esaouennoù eus an tu dehou"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Distreiñ un eilenn eus an destenn gant an esaouennoù lamet eus un tu pe eus an daou du"; -Blockly.Msg["TODAY"] = "Hiziv"; -Blockly.Msg["UNDO"] = "Dizober"; -Blockly.Msg["UNNAMED_KEY"] = "dizanv"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elfenn"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Krouiñ 'termenañ %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Distreiñ talvoud an argemm-mañ."; -Blockly.Msg["VARIABLES_SET"] = "termenañ %1 da %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Krouiñ 'kaout %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Termenañ a ra argemm-mañ evit ma vo par da dalvoudenn ar moned."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Un argemmenn anvet '%1' zo anezhi dija."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Un argemenn anvet '%1' zo c'hoazh evit un argemenn all eus ar seurt : '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Takad labour Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Lavaret un dra bennak..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ouzhpennañ un evezhiadenn"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne ch'aller ket dilemel an argemmenn \"%1\" dre m'eo lod eus dielfennadur an arc'hwel \"%2\""; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Kemmañ an dalvoudenn :"; +Blockly.Msg["CLEAN_UP"] = "Naetaat ar bloc'hoù"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Kemennoù-diwall zo er bloc'hadoù pleget."; +Blockly.Msg["COLLAPSE_ALL"] = "Bihanaat ar bloc'hoù"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bihanaat ar bloc'h"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "liv 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "liv 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "feur"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "meskañ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "a gemmesk daou liv gant ur feur roet(0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://br.wikipedia.org/wiki/Liv"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Dibab ul liv diwar al livaoueg."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "liv dargouezhek"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tennañ ul liv d'ar sord"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "glas"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "gwer"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruz"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "liv gant"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Krouiñ ul liv gant ar c'hementad spisaet a ruz, a wer hag a c'hlas. Etre 0 ha 100 e tle bezañ an holl dalvoudoù."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Mont e-maez an adlañsañ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "Kenderc'hel gant iteradur nevez ar rodell"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Mont e-maez ar boukl engronnus."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Lammat ar rest eus ar rodell, ha kenderc'hel gant an iteradur war-lerc'h."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Diwallit : ne c'hall ar bloc'h-mañ bezañ implijet nemet e-barzh ur boukl."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "evit pep elfenn %1 er roll %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Evit pep elfenn en ur roll, reiñ talvoud an elfenn d'an argemmenn '%1', ha seveniñ urzhioù zo da c'houde."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "kontañ gant %1 eus %2 da %3 dre %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ober e doare ma kemero an argemmenn \"%1\" an talvoudennoù adalek niverenn an deroù betek niverenn an dibenn, en ur inkremantiñ an esaouenn, ha seveniñ an urzhioù spisaet."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ouzhpennañ un amplegad d'ar bloc'h ma."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ouzhpennañ un amplegad dibenn lak-pep-tra d'ar bloc'h ma."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h ma."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "a-hend-all"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mod all ma"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ma"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ma vez gwir un dalvoudenn, seveniñ ar c'henañ bloc'had urzhioù neuze. Anez seveniñ an eil bloc'had urzhioù."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had urzhioù neuze. Anez ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had. Anez, ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù. Ma ne vez gwir talvoudenn ebet, seveniñ ar bloc'had diwezhañ a urzhioù."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ober"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "adober %1 gwech"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Seveniñ urzhioù zo meur a wech"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "adober betek"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "adober keit ha ma"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Keit ha ma vez faos un dalvoudenn, seveniñ urzhioù zo neuze."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Keit ha ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Diverkañ an holl vloc'hoù %1 ?"; +Blockly.Msg["DELETE_BLOCK"] = "Dilemel ar bloc'h"; +Blockly.Msg["DELETE_VARIABLE"] = "Lemel an argemm '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Lemel %1 implij eus an argemm '%2' ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Dilemel %1 bloc'h"; +Blockly.Msg["DIALOG_CANCEL"] = "Nullañ"; +Blockly.Msg["DIALOG_OK"] = "Mat eo"; +Blockly.Msg["DISABLE_BLOCK"] = "Diweredekaat ar bloc'h"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Eiladuriñ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Eiladiñ an eilenn"; +Blockly.Msg["ENABLE_BLOCK"] = "Gweredekaat ar bloc'h"; +Blockly.Msg["EXPAND_ALL"] = "Astenn ar bloc'hoù"; +Blockly.Msg["EXPAND_BLOCK"] = "Astenn ar bloc'h"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Monedoù diavaez"; +Blockly.Msg["HELP"] = "Skoazell"; +Blockly.Msg["INLINE_INPUTS"] = "Monedoù enlinenn"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "krouiñ ur roll goullo"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Distreiñ ul listenn, 0 a hirder, n'eus enrolladenn ebet enni"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "roll"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h listenn-mañ."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "krouiñ ur roll gant"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ouzhpennañ un elfenn d'ar roll"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Krouiñ ur roll gant un niver bennak a elfennoù."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "kentañ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# adalek ar fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "tapout"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "tapout ha lemel"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "diwezhañ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "dre zegouezh"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "lemel"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Distreiñ an elfenn gentañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Distreiñ an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Distreiñ un elfenn diwezhañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Distreiñ un elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Lemel ha distreiñ a ra an elfenn gentañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Lemel ha distreiñ a ra an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Lemel ha distreiñ a ra an elfenn diwezhañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Lemel ha distreiñ a ra an elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Lemel a ra an elfenn gentañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Lemel a ra an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Lemel a ra an elfenn diwezhañ en ul listenn."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Lemel a ra un elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "betek # adalek an dibenn"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "da #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "betek ar fin"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Kaout an islistenn adalek an deroù"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "Kaout an islistenn adalek # adalek an dibenn"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "Kaout an islistenn adalek #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Krouiñ un eilad eus lodenn spisaet ul listenn."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 eo an elfenn gentañ."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 eo an elfenn gentañ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "kavout reveziadenn gentañ un elfenn"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "kavout reveziadenn diwezhañ un elfenn"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus an elfenn en ul listenn. Distreiñ %1 ma n'eo ket kavet an destenn."; +Blockly.Msg["LISTS_INLIST"] = "el listenn"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 zo goullo"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Distreiñ gwir m'eo goullo al listenn."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "hirder %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Distreiñ hirder ul listenn."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Krouiñ ul listenn gant an elfenn %1 arreet %2 div wech"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Krouiñ ul listenn a c'hoarvez eus an dalvoudenn roet arreet an niver a wech meneget"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "eilpennañ %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Eilpennañ un eilskrid eus ur roll."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "evel"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ensoc'hañ evel"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "termenañ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ensoc'hañ a ra an elfenn e deroù ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ensoc'hañ a ra an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ouzhpennañ a ra an elfenn e fin al listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ensoc'hañ a ra an elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Termenañ a ra an elfenn gentañ en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Termenañ a ra an elfenn el lec'h meneget en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Termenañ a ra an elfenn diwezhañ en ul listenn."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Termenañ a ra un elfenn dre zegouezh en ul listenn."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "war gresk"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "war zigresk"; +Blockly.Msg["LISTS_SORT_TITLE"] = "Rummañ%1,%2,%3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Rummañ un eilenn eus ar roll"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "Dre urzh al lizherenneg, hep derc'hel kont eus an direnneg"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "niverel"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Dre urzh al lizherenneg"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Krouiñ ul listenn diwar an destenn"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "Krouiñ un destenn diwar al listenn"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Bodañ ul listennad testennoù en ul listenn hepken, o tispartiañ anezho gant un dispartier."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Troc'hañ un destenn en ul listennad testennoù, o troc'hañ e pep dispartier."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "gant an dispartier"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "gaou"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Distreiñ pe gwir pe faos"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "gwir"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Distreiñ gwir m'eo par an daou voned."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil pe par dezhañ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil pe m'eo par dezhañ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Distreiñ gwir ma n'eo ket par an daou voned."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nann %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Distreiñ gwir m'eo faos ar moned. Distreiñ faos m'eo gwir ar moned."; +Blockly.Msg["LOGIC_NULL"] = "Null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Distreiñ null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ha(g)"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "pe"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Distreiñ gwir m'eo gwir an da daou voned."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Distreiñ gwir m'eo gwir unan eus an daou voned da nebeutañ."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "amprouad"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "m'eo gaou"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "m'eo gwir"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Gwiriañ an amplegad e 'prouad'. M'eo gwir an amplegad, distreiñ an dalvoudenn 'm'eo gwir'; anez distreiñ ar moned 'm'eo faos'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://br.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Distreiñ sammad daou niver."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Distreiñ rannad daou niver."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Distreiñ diforc'h daou niver"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Distreiñ liesad daou niver."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Distreiñ an niver kentañ lakaet dindan gallouter an eil niver."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://fr.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 eus X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Adkas a ra ark tangent ar poent (X, Y) e derezioù etre -180 ha 180"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "kemmañ %1 gant %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ouzhpennañ un niver d'an argemmenn '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Distreiñ unan eus digemmennoù red : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (anvevenn)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "destrizhañ %1 etre %2 ha %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Destrizhañ un niver da vezañ etre ar bevennoù spisaet (enlakaet)"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "a zo rannadus dre"; +Blockly.Msg["MATH_IS_EVEN"] = "zo par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "a zo negativel"; +Blockly.Msg["MATH_IS_ODD"] = "zo ampar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "a zo pozitivel"; +Blockly.Msg["MATH_IS_PRIME"] = "zo kentañ"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Gwiriañ m'eo par, anpar, kentañ, muiel, leiel un niverenn pe ma c'haller rannañ anezhi dre un niver roet zo. Distreiñ gwir pe faos."; +Blockly.Msg["MATH_IS_WHOLE"] = "zo anterin"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "rest eus %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Distreiñ dilerc'h rannadur an div niver"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://br.wikipedia.org/wiki/Niver"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un niver."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Keitat al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Uc'hegenn al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Kreizad al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Izegenn al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modoù stankañ el listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Elfennn eus al listenn tennet d'ar sord"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "forc'had standart eus al listenn"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Sammad al listenn"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Distreiñ keitad (niveroniel) an talvoudennoù niverel el listenn."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Distreiñ an niver brasañ el listenn."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Distreiñ an niver kreiz el listenn"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Distreiñ an niver bihanañ el listenn"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Distreiñ ul listennad elfennoù stankoc'h el listenn."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Distreiñ un elfenn zargouezhek el listenn"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Distreiñ forc'had standart al listenn."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Distreiñ sammad an holl niveroù zo el listenn."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Rann dargouezhek"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Distreiñ ur rann dargouezhek etre 0.0 (enkaelat) hag 1.0 (ezkaelat)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "anterin dargouezhek etre %1 ha %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Distreiñ un anterin dargouezhek etre an div vevenn spisaet, endalc'het."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "Rontaat"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Rontaat dindan"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Rontaat a-us"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rontaat un niver dindan pe a-us"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://br.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "dizave"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "gwrizienn garrez"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Distreiñ talvoud dizave un niver."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Distreiñ galloudad un niver."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Distreiñ logaritm naturel un niver"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Distreiñ logaritm diazez 10 un niver"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Distreiñ enebad un niver"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Distreiñ 10 da c'halloudad un niver."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Distreiñ gwrizienn garrez un niver"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://br.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Distreiñ ark kosinuz un niver"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Distreiñ ark sinuz un niver"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Distreiñ ark tangent un niver"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Distreiñ kosinuz ur c'horn (ket e radianoù)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Distreiñ sinuz ur c'horn (ket e radianoù)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Distreiñ tangent ur c'horn (ket e radianoù)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Krouiñ un argemmenn liv..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Krouiñ un argemm niver..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Krouiñ un argemmenn chadenn..."; +Blockly.Msg["NEW_VARIABLE"] = "Krouiñ un argemmenn nevez..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Anv an argemmenn nevez :"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Doare nevez a argemm:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "aotren an disklêriadurioù"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "gant :"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Seveniñ an arc'hwel '%1' termenet gant an implijer."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Seveniñ an arc'hwel '%1' termenet gant an implijer hag implijout e zisoc'h."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "gant :"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Krouiñ '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Deskrivañ an arc'hwel-mañ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ober un dra bennak"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "da"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Krouiñ un arc'hwel hep mont er-maez."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "distreiñ"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Kouiñ un arc'hwel gant ur mont er-maez"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Diwallit : an arc'hwel-mañ en deus arventennoù eiladet."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Dreislinennañ termenadur an arc'hwel"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ma'z eo gwir un dalvoudenn, distreiñ un eil talvoudenn neuze."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Diwallit : Gallout a rafe ar bloc'h bezañ implijet e termenadur un arc'hwel hepken."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Anv ar moned"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ouzhpennañ ur moned d'an arc'hwel."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Monedoù"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Ouzhpennañ, lemel, pe adkempenn monedoù an arc'hwel-mañ."; +Blockly.Msg["REDO"] = "Adober"; +Blockly.Msg["REMOVE_COMMENT"] = "Lemel an evezhiadenn kuit"; +Blockly.Msg["RENAME_VARIABLE"] = "Adenvel an argemmenn..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Adenvel an holl argemmennoù '%1' e :"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "Ouzhpennañ an destenn %2 da %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Ouzhpennañ testenn d'an argemmenn'%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "e lizherennoù bihan"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Gant Ur Bennlizherenn E Deroù Pep Ger"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "e PENNLIZHERENNOÙ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Distreiñ un eilenn eus an eilenn en un direnneg all"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "tapout al lizherenn gentañ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "Kaout al lizherenn # adalek an dibenn."; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "Kaout al lizherenn #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "tapout al lizherenn ziwezhañ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "Kaout ul lizherenn dre zegouezh"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "en destenn %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Distreiñ al lizherenn d'al lec'h spisaet."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "niver %1 war %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Kontañ pet gwech e c'hoarvez un destenn bennak en un destenn bennak all."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ouzhpennañ un elfenn d'an destenn."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "stagañ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h testenn-mañ."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "Betek al lizherenn # adalek an dibenn."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "betek al lizherenn #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "d'al lizherenn diwezhañ"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en destenn"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "Kaout an ischadenn adalek al lizherenn gentañ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "Kaout an ischadenn adalek al lizherenn # betek an dibenn"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "Kaout an ischadenn adalek al lizherenn #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Distreiñ un tamm spisaet eus an destenn."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "kavout reveziadenn gentañ an destenn"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "kavout reveziadenn diwezhañ an destenn"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en destenn %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus ar chadenn gentañ en eil chadenn. Distreiñ %1 ma n'eo ket kavet ar chadenn."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 zo goullo"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Adkas gwir m'eo goullo an destenn roet."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "krouiñ un destenn gant"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Krouit un tamm testenn en ur gevelstrollañ un niver bennak a elfennoù"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "hirder %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Distreiñ an niver a lizherennoù(en ur gontañ an esaouennoù e-barzh) en destenn roet."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "moullañ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Moullañ an destenn, an niverenn pe un dalvoudenn spisaet all"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Goulenn un niver gant an implijer."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Goulenn un destenn gant an implijer."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pedadenn evit un niver gant ur c'hemennad"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "goulenn un destenn gant ur gemennadenn"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "erlec'hiañ %1 gant %2 e %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Erlec'hiañ holl reveziadennoù un destenn bennak gant un destenn all."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "eilpennañ %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Eilpennañ urzh an arouezennoù en destenn."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Ul lizherenn, ur ger pe ul linennad testenn."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "Lemel an esaouennoù en daou du"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "Lemel an esaouennoù eus an tu kleiz"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "Lemel an esaouennoù eus an tu dehou"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Distreiñ un eilenn eus an destenn gant an esaouennoù lamet eus un tu pe eus an daou du"; +Blockly.Msg["TODAY"] = "Hiziv"; +Blockly.Msg["UNDO"] = "Dizober"; +Blockly.Msg["UNNAMED_KEY"] = "dizanv"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elfenn"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Krouiñ 'termenañ %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Distreiñ talvoud an argemm-mañ."; +Blockly.Msg["VARIABLES_SET"] = "termenañ %1 da %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Krouiñ 'kaout %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Termenañ a ra argemm-mañ evit ma vo par da dalvoudenn ar moned."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Un argemmenn anvet '%1' zo anezhi dija."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Un argemenn anvet '%1' zo c'hoazh evit un argemenn all eus ar seurt : '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Takad labour Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Lavaret un dra bennak..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/bs.js b/msg/js/bs.js index f8e72d4da49..802c5ba18b2 100644 --- a/msg/js/bs.js +++ b/msg/js/bs.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne mogu izbrisati varijablu \"%1\" jer je dio definicije funckije \"%2\""; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Promijeni vrijednost:"; -Blockly.Msg["CLEAN_UP"] = "Očisti blokove"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Skupi blokove"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Skupi blok"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "boju 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "boju 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "odnos"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "pomiješaj"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Pomiješaj dvije boje zajedno sa zadanim odnosom (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://bs.wikipedia.org/wiki/Boja"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izaberi boju sa palete."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "nasumična boja"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Odaberi boju nasumično."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "plavom"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "zelenom"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "crvenom"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "boja sa"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Napravi boju s određenom količinom crvene, zelene i plave boje. Sve vrijednosti moraju biti između 0 i 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "izađi iz petlje"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nastavi sa sljedećom iteracijom petlje"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Napusti petlju koja sadrži ovaj blok."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči ostatak ove petlje i nastavi sa sljedećom iteracijom."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozorenje: Ovaj blok se može koristiti samo unutar petlje."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za svaku stavku %1 na spisku %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za svaku stavku na spisku, dodjeljuje vrijednost stavke varijabli \"%1\", a zatim izvršava neke naredbe."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "broji sa %1 od %2 do %3 po %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Neka varijabla \"%1\" uzima vrijednosti od početnog do krajnjeg broja, brojeći po određenom intervalu i neka izvršava određene blokove."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodajte uslov bloku \"ako\"."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "inače"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inače ako"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ako"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ako je vrijednost tačna, izvršava neke naredbe."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ako je vrijednost tačna, izvršava neke naredbe. U suprotnom, izvršava drugi blok naredbi."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izvrši"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1 puta"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Izvrši neku naredbu nekoliko puta."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljati do"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljati dok"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dok je vrijednost netačna, izvršava neke naredbe."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dok je vrijednost tačna, izvršava neke naredbe."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Izbrisati svih %1 blokova?"; -Blockly.Msg["DELETE_BLOCK"] = "Obriši blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Izbriši varijablu \"%1\""; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Izbrisati %1 upotrebu varijable \"%2\"?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Obriši %1 blokova"; -Blockly.Msg["DIALOG_CANCEL"] = "Otkaži"; -Blockly.Msg["DIALOG_OK"] = "U redu"; -Blockly.Msg["DISABLE_BLOCK"] = "Onemogući blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliciraj"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Kopiraj komentar"; -Blockly.Msg["ENABLE_BLOCK"] = "Omogući blok"; -Blockly.Msg["EXPAND_ALL"] = "Proširi blokove"; -Blockly.Msg["EXPAND_BLOCK"] = "Proširi blok"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Vanjski ulazi"; -Blockly.Msg["HELP"] = "Pomoć"; -Blockly.Msg["INLINE_INPUTS"] = "Redni ulazi"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "pronađi prvo pojavljivanje stavke"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "pronađi posljednje pojavljivanje stavke"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "na spisku"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazan"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vraća \"tačno\" ako je spisak prazan."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "dužina spiska %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vraća dužinu spiska."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "netačno"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vraća ili tačno ili netačno."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tačno"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://bs.wikipedia.org/wiki/Nejednakost"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nije %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "bez vrijednosti"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vraća \"bez vrijednosti\"."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ili"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ako je netačno"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ako je tačno"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://bs.wikipedia.org/wiki/Aritmetika"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vraća zbir dva broja."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vraća količnik dva broja."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vraća razliku dva broja."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vraća proizvod dva broja."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vraća prvi broj na eksponent drugog broja."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "promijeni %1 za %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodaj broj varijabli \"%1\"."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://bs.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vraća jednu od uobičajenih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) ili ∞ (beskonačnost)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je djeljiv sa"; -Blockly.Msg["MATH_IS_EVEN"] = "je paran"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativan"; -Blockly.Msg["MATH_IS_ODD"] = "je neparan"; -Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivan"; -Blockly.Msg["MATH_IS_PRIME"] = "je prost"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Provjerava da li je broj paran, neparan, prost, cijeli, pozitivan, negativan ili je djeljiv s određenim brojem. Vraća tačno ili netačno."; -Blockly.Msg["MATH_IS_WHOLE"] = "je cijeli"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://bs.wikipedia.org/wiki/Broj"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Broj."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zbir spiska"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vraća zbir svih brojeva sa spiska."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokruži"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokruži naniže"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokruži naviše"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokružuje broj na veću ili manju vrijednost."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://bs.wikipedia.org/wiki/Kvadratni_korijen"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "apsolutno"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni korijen"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vraća absolutnu vrijednost broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vraća e na eksponent broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vraća prirodni logoritam broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vraća logoritam broja za bazu 10."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vraća negaciju broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vraća 10 na eksponent broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vraća kvadratni korijen broja"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://bs.wikipedia.org/wiki/Trigonometrijska_funkcija"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vraća arkuskosinus broja."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vraća arkussinus broja."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vraća arkustangens broja."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vraća kosinus stepena (ne radijana)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vraća sinus stepena (ne radijana)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vraća tangens stepena (ne radijana)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Napravi varijablu boje..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Napravi varijablu broja..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Napravi varijablu niza..."; -Blockly.Msg["NEW_VARIABLE"] = "Napravi varijablu..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove varijable:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Vrsta nove varijable:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ime ulaza:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Ponovi"; -Blockly.Msg["REMOVE_COMMENT"] = "Ukloni komentare"; -Blockly.Msg["RENAME_VARIABLE"] = "Preimenuj varijablu..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj sve \"%1\" varijable u:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazan"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "dužina teksta %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Danas"; -Blockly.Msg["UNDO"] = "Poništi"; -Blockly.Msg["UNNAMED_KEY"] = "neimenovano"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "stavka"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Varijabla s imenom \"%1\" već postoji."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Varijabla s imenom \"%1\" već postoji za drugu vrstu: \"%2\"."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne mogu izbrisati varijablu \"%1\" jer je dio definicije funckije \"%2\""; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Promijeni vrijednost:"; +Blockly.Msg["CLEAN_UP"] = "Očisti blokove"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Skupi blokove"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Skupi blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "boju 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "boju 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "odnos"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "pomiješaj"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Pomiješaj dvije boje zajedno sa zadanim odnosom (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://bs.wikipedia.org/wiki/Boja"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izaberi boju sa palete."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "nasumična boja"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Odaberi boju nasumično."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "plavom"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelenom"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "crvenom"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "boja sa"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Napravi boju s određenom količinom crvene, zelene i plave boje. Sve vrijednosti moraju biti između 0 i 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "izađi iz petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nastavi sa sljedećom iteracijom petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Napusti petlju koja sadrži ovaj blok."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči ostatak ove petlje i nastavi sa sljedećom iteracijom."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozorenje: Ovaj blok se može koristiti samo unutar petlje."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za svaku stavku %1 na spisku %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za svaku stavku na spisku, dodjeljuje vrijednost stavke varijabli \"%1\", a zatim izvršava neke naredbe."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "broji sa %1 od %2 do %3 po %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Neka varijabla \"%1\" uzima vrijednosti od početnog do krajnjeg broja, brojeći po određenom intervalu i neka izvršava određene blokove."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodajte uslov bloku \"ako\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "inače"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inače ako"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ako"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ako je vrijednost tačna, izvršava neke naredbe."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ako je vrijednost tačna, izvršava neke naredbe. U suprotnom, izvršava drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izvrši"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1 puta"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Izvrši neku naredbu nekoliko puta."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljati do"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljati dok"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dok je vrijednost netačna, izvršava neke naredbe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dok je vrijednost tačna, izvršava neke naredbe."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Izbrisati svih %1 blokova?"; +Blockly.Msg["DELETE_BLOCK"] = "Obriši blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Izbriši varijablu \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Izbrisati %1 upotrebu varijable \"%2\"?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Obriši %1 blokova"; +Blockly.Msg["DIALOG_CANCEL"] = "Otkaži"; +Blockly.Msg["DIALOG_OK"] = "U redu"; +Blockly.Msg["DISABLE_BLOCK"] = "Onemogući blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliciraj"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kopiraj komentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Omogući blok"; +Blockly.Msg["EXPAND_ALL"] = "Proširi blokove"; +Blockly.Msg["EXPAND_BLOCK"] = "Proširi blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Vanjski ulazi"; +Blockly.Msg["HELP"] = "Pomoć"; +Blockly.Msg["INLINE_INPUTS"] = "Redni ulazi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "pronađi prvo pojavljivanje stavke"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "pronađi posljednje pojavljivanje stavke"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "na spisku"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazan"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vraća \"tačno\" ako je spisak prazan."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dužina spiska %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vraća dužinu spiska."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "netačno"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vraća ili tačno ili netačno."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tačno"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://bs.wikipedia.org/wiki/Nejednakost"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nije %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "bez vrijednosti"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vraća \"bez vrijednosti\"."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ili"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ako je netačno"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ako je tačno"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://bs.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vraća zbir dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vraća količnik dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vraća razliku dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vraća proizvod dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vraća prvi broj na eksponent drugog broja."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "promijeni %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodaj broj varijabli \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://bs.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vraća jednu od uobičajenih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) ili ∞ (beskonačnost)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je djeljiv sa"; +Blockly.Msg["MATH_IS_EVEN"] = "je paran"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativan"; +Blockly.Msg["MATH_IS_ODD"] = "je neparan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivan"; +Blockly.Msg["MATH_IS_PRIME"] = "je prost"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Provjerava da li je broj paran, neparan, prost, cijeli, pozitivan, negativan ili je djeljiv s određenim brojem. Vraća tačno ili netačno."; +Blockly.Msg["MATH_IS_WHOLE"] = "je cijeli"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://bs.wikipedia.org/wiki/Broj"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Broj."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zbir spiska"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vraća zbir svih brojeva sa spiska."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokruži"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokruži naniže"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokruži naviše"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokružuje broj na veću ili manju vrijednost."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://bs.wikipedia.org/wiki/Kvadratni_korijen"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "apsolutno"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni korijen"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vraća absolutnu vrijednost broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vraća e na eksponent broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vraća prirodni logoritam broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vraća logoritam broja za bazu 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vraća negaciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vraća 10 na eksponent broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vraća kvadratni korijen broja"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://bs.wikipedia.org/wiki/Trigonometrijska_funkcija"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vraća arkuskosinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vraća arkussinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vraća arkustangens broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vraća kosinus stepena (ne radijana)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vraća sinus stepena (ne radijana)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vraća tangens stepena (ne radijana)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Napravi varijablu boje..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Napravi varijablu broja..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Napravi varijablu niza..."; +Blockly.Msg["NEW_VARIABLE"] = "Napravi varijablu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove varijable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Vrsta nove varijable:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ime ulaza:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Ponovi"; +Blockly.Msg["REMOVE_COMMENT"] = "Ukloni komentare"; +Blockly.Msg["RENAME_VARIABLE"] = "Preimenuj varijablu..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj sve \"%1\" varijable u:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazan"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dužina teksta %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Danas"; +Blockly.Msg["UNDO"] = "Poništi"; +Blockly.Msg["UNNAMED_KEY"] = "neimenovano"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "stavka"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Varijabla s imenom \"%1\" već postoji."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Varijabla s imenom \"%1\" već postoji za drugu vrstu: \"%2\"."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ca.js b/msg/js/ca.js index 5c4521df649..af5fbf8bb8a 100644 --- a/msg/js/ca.js +++ b/msg/js/ca.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Afegeix un comentari"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "No podem esborrar la variable '%1' perquè forma part de la definició de la funció '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Canvia valor:"; -Blockly.Msg["CLEAN_UP"] = "Netejar blocs"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Els blocs plegats contenen avisos."; -Blockly.Msg["COLLAPSE_ALL"] = "Contraure blocs"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Contraure bloc"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporció"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "barreja"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Barreja dos colors amb una proporció donada (0,0 - 1,0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ca.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolliu un color de la paleta."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatori"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolliu un color a l'atzar."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verd"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "vermell"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "color amb"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crear un color amb les quantitats especificades de vermell, verd i blau. Tots els valors han de ser entre 0 i 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "sortir del bucle"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar amb la següent iteració del bucle"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sortir del bucle interior."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ometre la resta d'aquest bucle, i continuar amb la següent iteració."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Advertència: Aquest bloc només es pot utilitzar dins d'un bucle."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per a cada element %1 en la llista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Per a cada element en la llista, desar l'element dins la variable '%1', i llavors executar unes sentències."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "comptar amb %1 des de %2 fins a %3 en increments de %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fer que la variable \"%1\" prengui els valors des del nombre inicial fins al nombre final, incrementant a cada pas l'intèrval indicat, i executar els blocs especificats."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Afegeix una condició al bloc 'si'."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Afegeix una condició final, que recull qualsevol altra possibilitat, al bloc 'si'."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc 'si'."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "si no"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "si no, si"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor és cert, llavors executar unes sentències."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor és cert, llavors executar el primer bloc de sentències. En cas contrari, executar el segon bloc de sentències."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències. Si cap dels valors és cert, executar l'últim bloc de sentències."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ca.wikipedia.org/wiki/Bucle_For"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fer"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 vegades"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Executar unes sentències diverses vegades."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir fins que"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mentre"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Mentre un valor sigui fals, llavors executar unes sentències."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Mentre un valor sigui cert, llavors executar unes sentències."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Esborrar els %1 blocs?"; -Blockly.Msg["DELETE_BLOCK"] = "Esborra bloc"; -Blockly.Msg["DELETE_VARIABLE"] = "Esborrar la variable '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Esborrar '%1' crides de la variable '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Esborra %1 blocs"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel·la"; -Blockly.Msg["DIALOG_OK"] = "D'acord"; -Blockly.Msg["DISABLE_BLOCK"] = "Desactiva bloc"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplica"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Comentari duplicat"; -Blockly.Msg["ENABLE_BLOCK"] = "Activa bloc"; -Blockly.Msg["EXPAND_ALL"] = "Expandir blocs"; -Blockly.Msg["EXPAND_BLOCK"] = "Expandir bloc"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Entrades externes"; -Blockly.Msg["HELP"] = "Ajuda"; -Blockly.Msg["INLINE_INPUTS"] = "Entrades en línia"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear llista buida"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna una llista, de longitud 0, que no conté cap dada."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "llista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc de llista."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear llista amb"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Afegeix un element a la llista."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crea una llista amb qualsevol nombre d'elements."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primer"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "núm.# des del final"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "recupera"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "recupera i esborra"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "últim"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "a l'atzar"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "esborra"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna el primer element d'una llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna l'element de la posició especificada a la llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna l'últim element d'una llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna un element a l'atzar d'una llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Esborra i retorna el primer element d'una llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Esborra i retorna l'element de la posició especificada de la llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Esborra i retorna l'últim element d'una llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Esborra i retorna un element a l'atzar d'una llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Esborra el primer element d'una llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Esborra l'element de la posició especificada de la llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Esborra l'últim element d'una llista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Esborra un element a l'atzar d'una llista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "fins # des del final"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fins #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "fins l'últim"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "recupera sub-llista des del principi"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "recupera sub-llista des de # des del final"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "recupera sub-llista des de #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea una còpia de la part especificada d'una llista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 és l'últim element."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 és el primer element."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "buscar primera aparició d'un element"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "buscar última aparició d'un element"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna l'índex de la primera/última aparició d'un element a la llista. Retorna %1 si no s'hi troba l'element."; -Blockly.Msg["LISTS_INLIST"] = "en la llista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 és buida"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retorna cert si la llista és buida."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitud de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna la longitud d'una llista."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "crea llista amb element %1 repetit %2 vegades"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea una llista formada pel valor donat, repetit tantes vegades com s'indiqui."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "invertir %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Invertir la còpia d'una llista."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "com"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insereix a"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "modifica"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insereix l'element al principi d'una llista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insereix l'element a la posició especificada d'una llista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Afegeix l'element al final d'una llista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insereix l'element en una posició a l'atzar d'una llista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Modifica el primer element d'una llista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Modifica l'element de la posició especificada d'una llista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Modifica l'últim element d'una llista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Modifica un element a l'atzar d'una llista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendent"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendent"; -Blockly.Msg["LISTS_SORT_TITLE"] = "ordenar %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordena la còpia d'una llista."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabètic, ignorant majúscules"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numèric"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabètic"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fer una llista d'un text"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fer un text d'una llista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ajunta una llista de textos en un text, separats per un delimitador."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Parteix el text en una llista de textos, trencant-lo a cada delimitador."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "amb delimitador"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fals"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna o bé cert o bé fals."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "cert"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ca.wikipedia.org/wiki/Inequaci%C3%B3"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retorna cert si totes dues entrades són iguals."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retorna cert si la primera entrada és més gran que la segona entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retorna cert si la primera entrada és més gran o igual a la segona entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retorna cert si la primera entrada és més petita que la segona entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retorna cert si la primera entra és més petita o igual a la segona entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retorna cert si totes dues entrades són diferents."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "no %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retorna cert si l'entrada és falsa. Retorna fals si l'entrada és certa."; -Blockly.Msg["LOGIC_NULL"] = "nul"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nul."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retorna cer si totes dues entrades són certes."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retorna cert si almenys una de les entrades és certa."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "condició"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si és fals"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si és cert"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Comprova la condició de 'condició'. Si la condició és certa, retorna el valor 'si és cert'; en cas contrari, retorna el valor 'si és fals'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ca.wikipedia.org/wiki/Aritm%C3%A8tica"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna la suma dels dos nombres."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna el quocient dels dos nombres."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna la diferència entre els dos nombres."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna el producte del dos nombres."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna el primer nombre elevat a la potència indicada pel segon nombre."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://ca.wikipedia.org/wiki/Inverses_de_les_funcions_trigonom%C3%A8triques#L'arctangent_amb_dos_arguments"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Torna l'arctangent del punt (X,Y) en graus de -180 a 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ca.wikipedia.org/wiki/Suma"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "canvia %1 per %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Afegeix un nombre a la variable '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ca.wikipedia.org/wiki/Constant_matem%C3%A0tica"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna una de les constants més habituals: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…), o ∞ (infinit)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limitar %1 entre %2 i %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limita un nombre perquè estigui entre els límits especificats (inclosos)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "és divisible per"; -Blockly.Msg["MATH_IS_EVEN"] = "és parell"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "és negatiu"; -Blockly.Msg["MATH_IS_ODD"] = "és senar"; -Blockly.Msg["MATH_IS_POSITIVE"] = "és positiu"; -Blockly.Msg["MATH_IS_PRIME"] = "és primer"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Comprova si un nombre és parell, senar, enter, positium negatiu, o si és divisible per un cert nombre. Retorna cert o fals."; -Blockly.Msg["MATH_IS_WHOLE"] = "és enter"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ca.wikipedia.org/wiki/Residu_%28aritm%C3%A8tica%29"; -Blockly.Msg["MATH_MODULO_TITLE"] = "residu de %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retorna el residu de dividir els dos nombres."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ca.wikipedia.org/wiki/Nombre"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nombre."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mitjana de llista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "màxim de llista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de llista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mínim de llista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda de llista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element aleatori de llista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desviació estàndard de llista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma de llista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retorna la mitjana (mitjana aritmètica) dels valors numèrics de la llista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna el nombre més gran de la llista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retorna la mediana de la llista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna el nombre més petit de la llista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retorna una llista dels elements que apareixen més vegades a la llista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retorna un element aleatori de la lllista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retorna la desviació estàndard de la llista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna la suma de tots els nombres de la llista."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fracció aleatòria"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Retorna una fracció aleatòria entre 0,0 (inclòs) i 1,0 (exclòs)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "nombre aleatori entre %1 i %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retorna un nombre aleatori entre els dos límits especificats, inclosos."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ca.wikipedia.org/wiki/Arrodoniment"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrodonir"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrodonir cap avall"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrodonir cap amunt"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrodonir un nombre cap amunt o cap avall."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ca.wikipedia.org/wiki/Arrel_quadrada"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "arrel quadrada"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna el valor absolut d'un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna ''e'' elevat a la potència del nombre indicat."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna el logaritme natural d'un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna el logaritme en base 10 d'un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna l'oposat d'un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevat a la potència del nombre indicat."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna l'arrel quadrada d'un nombre."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ca.wikipedia.org/wiki/Funci%C3%B3_trigonom%C3%A8trica"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna l'arccosinus d'un nombre."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna l'arcsinus d'un nombre."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna l'arctangent d'un nombre."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna el cosinus d'un grau (no radiant)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna el sinus d'un grau (no radiant)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna la tangent d'un grau (no radiant)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear variable de color..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crea variable numèrica..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear variable de cadena…"; -Blockly.Msg["NEW_VARIABLE"] = "Crea una variable…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nou nom de variable:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nou tipus de variable:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permetre declaracions"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "amb:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executa la funció definida per usuari '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executa la funció definida per l'usuari '%1' i utilitza la seva sortida."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "amb:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descriure aquesta funció..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fes alguna cosa"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "a"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea una funció sense sortida."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorna"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea una funció amb una sortida."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advertència: Aquesta funció té paràmetres duplicats."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Iluminar la definició de la funció"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si el valor és cert, llavors retorna un segon valor."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advertència: Aquest bloc només es pot utilitzar dins de la definició d'una funció."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nom d'entrada:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Afegir una entrada per la funció."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entrades"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Afegir, eliminar o canviar l'ordre de les entrades per aquesta funció."; -Blockly.Msg["REDO"] = "Refer"; -Blockly.Msg["REMOVE_COMMENT"] = "Elimina el comentari"; -Blockly.Msg["RENAME_VARIABLE"] = "Reanomena variable..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Reanomena totes les variables '%1' a:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 afegir text %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Afegir un text a la variable '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "a minúscules"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "a Text De Títol"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "a MAJÚSCULES"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retorna una còpia del text amb diferents majúscules/minúscules."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "recupera la primera lletra"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "recupera la lletra núm.# des del final"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "recupera la lletra núm.#"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "recupera l'última lletra"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "recupera una lletra a l'atzar"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "en el text %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Recupera la lletra de la posició especificada."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "comptar %1 en %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Compta quantes vegades hi ha un text dins d'un altre text."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Afegeix un element al text."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Afegeix, esborrar o reordenar seccions per reconfigurar aquest bloc de text."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "fins a la lletra núm.# des del final"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "fins a la lletra núm.#"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "fins a l'última lletra"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en el text"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "recupera subcadena des de la primera lletra"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "recupera subcadena des de la lletra núm.# des del final"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "recupera subcadena des de la lletra núm.#"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Recupera una part especificada del text."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trobar la primera aparició del text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trobar l'última aparició del text"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en el text %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna l'índex de la primera/última aparició del primer text dins el segon. Retorna %1 si no es troba el text."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 està buit"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna cert si el text proporcionat està buit."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear text amb"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crea un tros de text per unió de qualsevol nombre d'elements."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "llargària de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Retorna el nombre de lletres (espais inclosos) en el text proporcionat."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "imprimir %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprimir el text, el nombre o altre valor especificat."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Demana que l'usuari introdueixi un nombre."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Demana que l'usuari introdueixi un text."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "demanar un nombre amb el missatge"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "demanar text amb el missatge"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "substituir %1 amb %2 en %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Substitueix totes les aparicions d'un text dins d'un altre text."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "invertir %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverteix l'ordre dels caràcters en el text."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ca.wikipedia.org/wiki/Cadena_%28inform%C3%A0tica%29"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una lletra, paraula o línia de text."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "retalla espais de tots dos extrems de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "retalla espais de l'esquerra de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "retalla espais de la dreta de"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retorna una còpia del text on s'han esborrat els espais d'un o dels dos extrems."; -Blockly.Msg["TODAY"] = "Avui"; -Blockly.Msg["UNDO"] = "Desfer"; -Blockly.Msg["UNNAMED_KEY"] = "sense nom"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crea 'modifica %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna el valor d'aquesta variable."; -Blockly.Msg["VARIABLES_SET"] = "modifica %1 a %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'recupera %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Modifica aquesta variable al valor introduït."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Ja existeix una variable anomenada '%1'."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Una variable anomenada '%1' ja existeix per al tipus '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espai de treball Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Digues alguna cosa..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Afegeix un comentari"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "No podem esborrar la variable '%1' perquè forma part de la definició de la funció '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Canvia valor:"; +Blockly.Msg["CLEAN_UP"] = "Netejar blocs"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Els blocs plegats contenen avisos."; +Blockly.Msg["COLLAPSE_ALL"] = "Contraure blocs"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Contraure bloc"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporció"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "barreja"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Barreja dos colors amb una proporció donada (0,0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ca.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolliu un color de la paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatori"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolliu un color a l'atzar."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verd"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "vermell"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "color amb"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crear un color amb les quantitats especificades de vermell, verd i blau. Tots els valors han de ser entre 0 i 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "sortir del bucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar amb la següent iteració del bucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sortir del bucle interior."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ometre la resta d'aquest bucle, i continuar amb la següent iteració."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Advertència: Aquest bloc només es pot utilitzar dins d'un bucle."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per a cada element %1 en la llista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Per a cada element en la llista, desar l'element dins la variable '%1', i llavors executar unes sentències."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "comptar amb %1 des de %2 fins a %3 en increments de %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fer que la variable \"%1\" prengui els valors des del nombre inicial fins al nombre final, incrementant a cada pas l'intèrval indicat, i executar els blocs especificats."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Afegeix una condició al bloc 'si'."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Afegeix una condició final, que recull qualsevol altra possibilitat, al bloc 'si'."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc 'si'."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "si no"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "si no, si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor és cert, llavors executar unes sentències."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor és cert, llavors executar el primer bloc de sentències. En cas contrari, executar el segon bloc de sentències."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències. Si cap dels valors és cert, executar l'últim bloc de sentències."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ca.wikipedia.org/wiki/Bucle_For"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fer"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 vegades"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Executar unes sentències diverses vegades."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir fins que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mentre"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Mentre un valor sigui fals, llavors executar unes sentències."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Mentre un valor sigui cert, llavors executar unes sentències."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Esborrar els %1 blocs?"; +Blockly.Msg["DELETE_BLOCK"] = "Esborra bloc"; +Blockly.Msg["DELETE_VARIABLE"] = "Esborrar la variable '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Esborrar '%1' crides de la variable '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Esborra %1 blocs"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel·la"; +Blockly.Msg["DIALOG_OK"] = "D'acord"; +Blockly.Msg["DISABLE_BLOCK"] = "Desactiva bloc"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplica"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Comentari duplicat"; +Blockly.Msg["ENABLE_BLOCK"] = "Activa bloc"; +Blockly.Msg["EXPAND_ALL"] = "Expandir blocs"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir bloc"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entrades externes"; +Blockly.Msg["HELP"] = "Ajuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entrades en línia"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear llista buida"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna una llista, de longitud 0, que no conté cap dada."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "llista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc de llista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear llista amb"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Afegeix un element a la llista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crea una llista amb qualsevol nombre d'elements."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primer"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "núm.# des del final"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "recupera"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "recupera i esborra"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "últim"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "a l'atzar"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "esborra"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna el primer element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna l'element de la posició especificada a la llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna l'últim element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna un element a l'atzar d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Esborra i retorna el primer element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Esborra i retorna l'element de la posició especificada de la llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Esborra i retorna l'últim element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Esborra i retorna un element a l'atzar d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Esborra el primer element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Esborra l'element de la posició especificada de la llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Esborra l'últim element d'una llista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Esborra un element a l'atzar d'una llista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "fins # des del final"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fins #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "fins l'últim"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "recupera sub-llista des del principi"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "recupera sub-llista des de # des del final"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "recupera sub-llista des de #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea una còpia de la part especificada d'una llista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 és l'últim element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 és el primer element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "buscar primera aparició d'un element"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "buscar última aparició d'un element"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna l'índex de la primera/última aparició d'un element a la llista. Retorna %1 si no s'hi troba l'element."; +Blockly.Msg["LISTS_INLIST"] = "en la llista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 és buida"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retorna cert si la llista és buida."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitud de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna la longitud d'una llista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "crea llista amb element %1 repetit %2 vegades"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea una llista formada pel valor donat, repetit tantes vegades com s'indiqui."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "invertir %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Invertir la còpia d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "com"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insereix a"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "modifica"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insereix l'element al principi d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insereix l'element a la posició especificada d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Afegeix l'element al final d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insereix l'element en una posició a l'atzar d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Modifica el primer element d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Modifica l'element de la posició especificada d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Modifica l'últim element d'una llista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Modifica un element a l'atzar d'una llista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendent"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendent"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordenar %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordena la còpia d'una llista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabètic, ignorant majúscules"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numèric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabètic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fer una llista d'un text"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fer un text d'una llista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ajunta una llista de textos en un text, separats per un delimitador."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Parteix el text en una llista de textos, trencant-lo a cada delimitador."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "amb delimitador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fals"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna o bé cert o bé fals."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "cert"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ca.wikipedia.org/wiki/Inequaci%C3%B3"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retorna cert si totes dues entrades són iguals."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retorna cert si la primera entrada és més gran que la segona entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retorna cert si la primera entrada és més gran o igual a la segona entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retorna cert si la primera entrada és més petita que la segona entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retorna cert si la primera entra és més petita o igual a la segona entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retorna cert si totes dues entrades són diferents."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "no %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retorna cert si l'entrada és falsa. Retorna fals si l'entrada és certa."; +Blockly.Msg["LOGIC_NULL"] = "nul"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nul."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retorna cer si totes dues entrades són certes."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retorna cert si almenys una de les entrades és certa."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "condició"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si és fals"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si és cert"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Comprova la condició de 'condició'. Si la condició és certa, retorna el valor 'si és cert'; en cas contrari, retorna el valor 'si és fals'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ca.wikipedia.org/wiki/Aritm%C3%A8tica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna la suma dels dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna el quocient dels dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna la diferència entre els dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna el producte del dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna el primer nombre elevat a la potència indicada pel segon nombre."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://ca.wikipedia.org/wiki/Inverses_de_les_funcions_trigonom%C3%A8triques#L'arctangent_amb_dos_arguments"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Torna l'arctangent del punt (X,Y) en graus de -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ca.wikipedia.org/wiki/Suma"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "canvia %1 per %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Afegeix un nombre a la variable '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ca.wikipedia.org/wiki/Constant_matem%C3%A0tica"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna una de les constants més habituals: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…), o ∞ (infinit)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limitar %1 entre %2 i %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limita un nombre perquè estigui entre els límits especificats (inclosos)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "és divisible per"; +Blockly.Msg["MATH_IS_EVEN"] = "és parell"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "és negatiu"; +Blockly.Msg["MATH_IS_ODD"] = "és senar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "és positiu"; +Blockly.Msg["MATH_IS_PRIME"] = "és primer"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Comprova si un nombre és parell, senar, enter, positium negatiu, o si és divisible per un cert nombre. Retorna cert o fals."; +Blockly.Msg["MATH_IS_WHOLE"] = "és enter"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ca.wikipedia.org/wiki/Residu_%28aritm%C3%A8tica%29"; +Blockly.Msg["MATH_MODULO_TITLE"] = "residu de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retorna el residu de dividir els dos nombres."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ca.wikipedia.org/wiki/Nombre"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nombre."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mitjana de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "màxim de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mínim de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element aleatori de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desviació estàndard de llista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma de llista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retorna la mitjana (mitjana aritmètica) dels valors numèrics de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna el nombre més gran de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retorna la mediana de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna el nombre més petit de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retorna una llista dels elements que apareixen més vegades a la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retorna un element aleatori de la lllista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retorna la desviació estàndard de la llista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna la suma de tots els nombres de la llista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fracció aleatòria"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Retorna una fracció aleatòria entre 0,0 (inclòs) i 1,0 (exclòs)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "nombre aleatori entre %1 i %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retorna un nombre aleatori entre els dos límits especificats, inclosos."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ca.wikipedia.org/wiki/Arrodoniment"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrodonir"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrodonir cap avall"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrodonir cap amunt"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrodonir un nombre cap amunt o cap avall."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ca.wikipedia.org/wiki/Arrel_quadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "arrel quadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna el valor absolut d'un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna ''e'' elevat a la potència del nombre indicat."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna el logaritme natural d'un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna el logaritme en base 10 d'un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna l'oposat d'un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevat a la potència del nombre indicat."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna l'arrel quadrada d'un nombre."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ca.wikipedia.org/wiki/Funci%C3%B3_trigonom%C3%A8trica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna l'arccosinus d'un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna l'arcsinus d'un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna l'arctangent d'un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna el cosinus d'un grau (no radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna el sinus d'un grau (no radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna la tangent d'un grau (no radiant)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear variable de color..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crea variable numèrica..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear variable de cadena…"; +Blockly.Msg["NEW_VARIABLE"] = "Crea una variable…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nou nom de variable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nou tipus de variable:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permetre declaracions"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "amb:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executa la funció definida per usuari '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executa la funció definida per l'usuari '%1' i utilitza la seva sortida."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "amb:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descriure aquesta funció..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fes alguna cosa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "a"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea una funció sense sortida."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorna"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea una funció amb una sortida."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advertència: Aquesta funció té paràmetres duplicats."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Iluminar la definició de la funció"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si el valor és cert, llavors retorna un segon valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advertència: Aquest bloc només es pot utilitzar dins de la definició d'una funció."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nom d'entrada:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Afegir una entrada per la funció."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entrades"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Afegir, eliminar o canviar l'ordre de les entrades per aquesta funció."; +Blockly.Msg["REDO"] = "Refer"; +Blockly.Msg["REMOVE_COMMENT"] = "Elimina el comentari"; +Blockly.Msg["RENAME_VARIABLE"] = "Reanomena variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Reanomena totes les variables '%1' a:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 afegir text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Afegir un text a la variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "a minúscules"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "a Text De Títol"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "a MAJÚSCULES"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retorna una còpia del text amb diferents majúscules/minúscules."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "recupera la primera lletra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "recupera la lletra núm.# des del final"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "recupera la lletra núm.#"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "recupera l'última lletra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "recupera una lletra a l'atzar"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "en el text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Recupera la lletra de la posició especificada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "comptar %1 en %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Compta quantes vegades hi ha un text dins d'un altre text."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Afegeix un element al text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Afegeix, esborrar o reordenar seccions per reconfigurar aquest bloc de text."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "fins a la lletra núm.# des del final"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "fins a la lletra núm.#"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "fins a l'última lletra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en el text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "recupera subcadena des de la primera lletra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "recupera subcadena des de la lletra núm.# des del final"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "recupera subcadena des de la lletra núm.#"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Recupera una part especificada del text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trobar la primera aparició del text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trobar l'última aparició del text"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en el text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna l'índex de la primera/última aparició del primer text dins el segon. Retorna %1 si no es troba el text."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 està buit"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna cert si el text proporcionat està buit."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear text amb"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crea un tros de text per unió de qualsevol nombre d'elements."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "llargària de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Retorna el nombre de lletres (espais inclosos) en el text proporcionat."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprimir %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprimir el text, el nombre o altre valor especificat."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Demana que l'usuari introdueixi un nombre."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Demana que l'usuari introdueixi un text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "demanar un nombre amb el missatge"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "demanar text amb el missatge"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "substituir %1 amb %2 en %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Substitueix totes les aparicions d'un text dins d'un altre text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "invertir %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverteix l'ordre dels caràcters en el text."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ca.wikipedia.org/wiki/Cadena_%28inform%C3%A0tica%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una lletra, paraula o línia de text."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "retalla espais de tots dos extrems de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "retalla espais de l'esquerra de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "retalla espais de la dreta de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retorna una còpia del text on s'han esborrat els espais d'un o dels dos extrems."; +Blockly.Msg["TODAY"] = "Avui"; +Blockly.Msg["UNDO"] = "Desfer"; +Blockly.Msg["UNNAMED_KEY"] = "sense nom"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crea 'modifica %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna el valor d'aquesta variable."; +Blockly.Msg["VARIABLES_SET"] = "modifica %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'recupera %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Modifica aquesta variable al valor introduït."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Ja existeix una variable anomenada '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Una variable anomenada '%1' ja existeix per al tipus '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espai de treball Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Digues alguna cosa..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/cdo.js b/msg/js/cdo.js index c5d8da2e84e..45c76d83ecf 100644 --- a/msg/js/cdo.js +++ b/msg/js/cdo.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "確定"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Help"; // untranslated -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "確定"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/cs.js b/msg/js/cs.js index 9df2578ddf7..e29ddf331d4 100644 --- a/msg/js/cs.js +++ b/msg/js/cs.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Přidat komentář"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Proměnnou '%1' není možné odstranit, protože je součástí definice funkce '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Změnit hodnotu:"; -Blockly.Msg["CLEAN_UP"] = "Uspořádat bloky"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Sbalit bloky"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Sbalit blok"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "barva 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "barva 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "poměr"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "smíchat"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Smíchá dvě barvy v daném poměru (0.0–1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://cs.wikipedia.org/wiki/Barva"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Vyberte barvu z palety."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "náhodná barva"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zvolte barvu náhodně."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "modrá"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "zelená"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "červená"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "obarvěte barvou"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Vytvoř barvu se zadaným množstvím červené, zelené a modré. Všechny hodnoty musí být mezi 0 a 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "vyskočit ze smyčky"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "pokračuj dalším opakováním smyčky"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Vyskoč z vnitřní smyčky."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Přeskoč zbytek této smyčky a pokračuj dalším opakováním."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozornění: Tento blok může být použit pouze uvnitř smyčky."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pro každou položku %1 v seznamu %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pro každou položku v seznamu nastavte do proměnné '%1' danou položku a proveďte nějaké operace."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "počítat s %1 od %2 do %3 po %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Nechá proměnnou '%1' nabývat hodnot od počátečního do koncového čísla po daném přírůstku a provádí příslušné bloky."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Přidat podmínku do \"pokud\" bloku."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Přidej konečnou podmínku zahrnující ostatní případy do bloku \"pokud\"."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Přidej, odstraň či uspořádej sekce k přenastavení tohoto bloku \"pokud\"."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "jinak"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "nebo pokud"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "pokud"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Je-li hodnota pravda, proveď určité příkazy."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Je-li hodnota pravda, proveď první blok příkazů. V opačném případě proveď druhý blok příkazů."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Je-li první hodnota pravdivá, proveď první blok příkazů. V opačném případě, je-li pravdivá druhá hodnota, proveď druhý blok příkazů."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Je-li první hodnota pravda, proveď první blok příkazů. Je-li druhá hodnota pravda, proveď druhý blok příkazů. Pokud žádná hodnota není pravda, proveď poslední blok příkazů."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://cs.wikipedia.org/wiki/Cyklus_for"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "dělej"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "opakuj %1 krát"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Proveď určité příkazy několikrát."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "opakovat dokud"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "opakovat když"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dokud je hodnota nepravdivá, prováděj určité příkazy."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dokud je hodnota pravdivá, prováděj určité příkazy."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Smazat všech %1 bloků?"; -Blockly.Msg["DELETE_BLOCK"] = "Smazat blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Odstranit proměnnou '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Odstranit %1 použití proměnné '%2'"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Smazat %1 bloků"; -Blockly.Msg["DIALOG_CANCEL"] = "Zrušit"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Deaktivovat blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikovat"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplikovat komentář"; -Blockly.Msg["ENABLE_BLOCK"] = "Povolit blok"; -Blockly.Msg["EXPAND_ALL"] = "Rozbalit bloky"; -Blockly.Msg["EXPAND_BLOCK"] = "Rozbalit blok"; -Blockly.Msg["EXTERNAL_INPUTS"] = "vnější vstupy"; -Blockly.Msg["HELP"] = "Nápověda"; -Blockly.Msg["INLINE_INPUTS"] = "Vložené vstupy"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "vytvořit prázdný seznam"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vrátí seznam nulové délky, který neobsahuje žádné datové záznamy"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "seznam"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Přidat, odebrat nebo změnit pořadí oddílů tohoto seznamu bloku."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "vytvořit seznam s"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Přidat položku do seznamu."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Vytvoř seznam s libovolným počtem položek."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "první"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od konce"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "získat"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "získat a odstranit"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "poslední"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "náhodné"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "odstranit"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vrátí první položku v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Získá položku z určené pozice v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vrátí poslední položku v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vrátí náhodnou položku ze seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Odstraní a vrátí první položku v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Odstraní a získá položku z určené pozice v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Odstraní a vrátí poslední položku v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Odstraní a vrátí náhodnou položku v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Odstraní první položku v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Odebere položku na konkrétním místě v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Odstraní poslední položku v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Odstraní náhodou položku v seznamu."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od konce"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "jako poslední"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "získat podseznam od první položky"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "získat podseznam od # od konce"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "získat podseznam od #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Vytvoří kopii určené části seznamu."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je poslední položka."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je první položka."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "najít první výskyt položky"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "najít poslední výskyt položky"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vrací index prvního/posledního výskytu položky v seznamu. Vrací %1, pokud položka nebyla nalezena."; -Blockly.Msg["LISTS_INLIST"] = "v seznamu"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prázdné"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vrátí hodnotu pravda, pokud je seznam prázdný."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "délka %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vrací počet položek v seznamu."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "vytvoř seznam s položkou %1 opakovanou %2 krát"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Vytváří seznam obsahující danou hodnotu n-krát."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "jako"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "vložit na"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "nastavit"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Vložit položku na začátek seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Vloží položku na určenou pozici v seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Připojí položku na konec seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Připojí položku náhodně do seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Nastaví první položku v seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Nastaví položku na konkrétní místo v seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Nastaví poslední položku v seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Nastaví náhodnou položku v seznamu."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "vzestupně"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "sestupně"; -Blockly.Msg["LISTS_SORT_TITLE"] = "seřadit %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Seřadit kopii seznamu."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecedně, na velikosti písmen nezáleží"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "číselné"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abecedně"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "udělat z textu seznam"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "udělat ze seznamu text"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Spojit seznam textů do jednoho textu, rozdělaného oddělovači."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Rozdělit text do seznamu textů, lámání na oddělovačích."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "s oddělovačem"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "nepravda"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vrací pravda nebo nepravda."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "pravda"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://cs.wikipedia.org/wiki/Nerovnost_(matematika)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vrátí hodnotu pravda, pokud se oba vstupy rovnají jeden druhému."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Navrátí hodnotu pravda, pokud první vstup je větší než druhý vstup."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Navrátí hodnotu pravda, pokud je první vstup větší a nebo rovný druhému vstupu."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Navrátí hodnotu pravda, pokud je první vstup menší než druhý vstup."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Navrátí hodnotu pravda, pokud je první vstup menší a nebo rovný druhému vstupu."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vrátí hodnotu pravda, pokud se oba vstupy nerovnají sobě navzájem."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Navrátí hodnotu pravda, pokud je vstup nepravda. Navrátí hodnotu nepravda, pokud je vstup pravda."; -Blockly.Msg["LOGIC_NULL"] = "prázdný"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vrátí prázdnou hodnotu"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "a"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "nebo"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vrátí hodnotu pravda, pokud oba dva vstupy jsou pravdivé."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vrátí hodnotu pravda, pokud alespoň jeden ze vstupů má hodnotu pravda."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://cs.wikipedia.org/wiki/Ternární operátor (programování)"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "pokud nepravda"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "pokud pravda"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Zkontroluje podmínku v \"testu\". Když je podmínka pravda, vrátí hodnotu \"pokud pravda\"; v opačném případě vrátí hodnotu \"pokud nepravda\"."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://cs.wikipedia.org/wiki/Aritmetika"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vrátí součet dvou čísel."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vrátí podíl dvou čísel."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vrátí rozdíl dvou čísel."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vrátí součin dvou čísel."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vrátí první číslo umocněné na druhé číslo."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://cs.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 z X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vrací arkustangens bodu (X, Y) ve stupních od -180 do 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "zaměň %1 za %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Přičti číslo k proměnné '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vraťte jednu z následujících konstant: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (nekonečno)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "omez %1 na rozmezí od %2 do %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Omezí číslo tak, aby bylo ve stanovených mezích (včetně)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je dělitelné číslem"; -Blockly.Msg["MATH_IS_EVEN"] = "je sudé"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "je záporné"; -Blockly.Msg["MATH_IS_ODD"] = "je liché"; -Blockly.Msg["MATH_IS_POSITIVE"] = "je kladné"; -Blockly.Msg["MATH_IS_PRIME"] = "je prvočíslo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrola, zda je číslo sudé, liché, prvočíslo, celé, kladné, záporné nebo zda je dělitelné daným číslem. Vrací pravdu nebo nepravdu."; -Blockly.Msg["MATH_IS_WHOLE"] = "je celé"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://cs.wikipedia.org/wiki/Modul%C3%A1rn%C3%AD_aritmetika"; -Blockly.Msg["MATH_MODULO_TITLE"] = "zbytek po dělení %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vrátí zbytek po dělení dvou čísel."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://cs.wikipedia.org/wiki/Číslo"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Číslo."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "průměr v seznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "největší v seznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medián v seznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "nejmenší v seznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "nejčastější ze seznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "náhodná položka seznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "směrodatná odchylka ze seznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma seznamu"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vrátí průměr (aritmetický průměr) číselných hodnot v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vrátí největší číslo v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vrátí medián seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vrátí nejmenší číslo v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vrátí seznam nejčastějších položek seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vrátí náhodnou položku ze seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vrátí směrodatnou odchylku seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vrátí součet všech čísel v seznamu."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "náhodné číslo mezi 0 (včetně) do 1"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vrátí náhodné číslo mezi 0,0 (včetně) až 1,0"; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "náhodné celé číslo od %1 do %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vrací náhodné celé číslo mezi dvěma určenými mezemi, včetně mezních hodnot."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokrouhlit"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokrouhlit dolů"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokrouhlit nahoru"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokrouhlit číslo nahoru nebo dolů."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://cs.wikipedia.org/wiki/Druhá_odmocnina"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolutní hodnota"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "druhá odmocnina"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vrátí absolutní hodnotu čísla."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vrátí mocninu čísla e."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vrátí přirozený logaritmus čísla."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vrátí desítkový logaritmus čísla."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vrátí zápornou hodnotu čísla."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vrátí mocninu čísla 10."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vrátí druhou odmocninu čísla."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vrátí arkus kosinus čísla."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vrátí arkus sinus čísla."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vrátí arkus tangens čísla."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vrátí kosinus úhlu ve stupních."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vrátí sinus úhlu ve stupních."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vrátí tangens úhlu ve stupních."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Vytvořit proměnnou pro barvu..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Vytvořit číselnou proměnnou..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Vytvořit textovou proměnnou..."; -Blockly.Msg["NEW_VARIABLE"] = "Vytvořit proměnnou..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nový název proměnné:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nový typ proměnné:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "povolit příkazy"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://cs.wikipedia.org/wiki/Podprogram"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Spustí uživatelem definovanou funkci '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://cs.wikipedia.org/wiki/Podprogram"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Spustí uživatelem definovanou funkci '%1' a použije její výstup."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Vytvořit '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Popište tuto funkci..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "proveď něco"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "k provedení"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Vytvořit funkci bez výstupu."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "navrátit"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Vytvořit funkci s výstupem."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozornění: Tato funkce má duplicitní parametry."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Zvýraznit definici funkce"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Je-li hodnota pravda, pak vrátí druhou hodnotu."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Varování: Tento blok může být použit pouze uvnitř definici funkce."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "vstupní jméno:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Přidat vstupy do funkce."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "vstupy"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Přidat, odebrat nebo změnit pořadí vstupů této funkce."; -Blockly.Msg["REDO"] = "Znovu"; -Blockly.Msg["REMOVE_COMMENT"] = "Odstranit komentář"; -Blockly.Msg["RENAME_VARIABLE"] = "Přejmenovat proměnnou..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Přejmenuj všech '%1' proměnných na:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "do %1 přidat text %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Přidá určitý text k proměnné '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na malá písmena"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Počáteční Velká Písmena"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na VELKÁ PÍSMENA"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vrátí kopii textu s jinou velikostí písmen."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "získat první písmeno"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "získat # písmeno od konce"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "získat písmeno #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "získat poslední písmeno"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "získat náhodné písmeno"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "v textu %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Získat písmeno na konkrétní pozici."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Přidat položku do textu."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "spojit"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Přidat, odebrat nebo změnit pořadí oddílů tohoto textového bloku."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do # písmene od konce"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do písmene #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do posledního písmene"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "v textu"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "získat podřetězec od prvního písmene"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "získat podřetězec od písmene # od konce"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "získat podřetězec od písmene #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Získat zadanou část textu."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "najít první výskyt textu"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "najít poslední výskyt textu"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "v textu %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vypíše %1."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prázdný"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vrátí pravda pokud je zadaný text prázdný."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "vytvořit text s"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Vytvoří kousek textu spojením libovolného počtu položek."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "délka %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vrátí počet písmen (včetně mezer) v zadaném textu."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "tisk %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Tisk zadaného textu, čísla nebo jiné hodnoty."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Výzva pro uživatele k zadání čísla."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Výzva pro uživatele k zadání nějakého textu."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "výzva k zadání čísla se zprávou"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "výzva k zadání textu se zprávou"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://cs.wikipedia.org/wiki/Textov%C3%BD_%C5%99et%C4%9Bzec"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Písmeno, slovo nebo řádek textu."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "odstranit mezery z obou stran"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "odstranit mezery z levé strany"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "odstranit mezery z pravé strany"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vrátí kopii textu s odstraněnými mezerami z jednoho nebo obou konců."; -Blockly.Msg["TODAY"] = "Dnes"; -Blockly.Msg["UNDO"] = "Zpět"; -Blockly.Msg["UNNAMED_KEY"] = "nepojmenovaný"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "položka"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Vytvořit \"nastavit %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vrátí hodnotu této proměnné."; -Blockly.Msg["VARIABLES_SET"] = "nastavit %1 na %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Vytvořit \"získat %1\""; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Nastaví tuto proměnnou, aby se rovnala vstupu."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Proměnná jménem '%1' již existuje"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Proměnná pojmenovaná jako '%1' již existuje pro jiný typ: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Přidat komentář"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Proměnnou '%1' není možné odstranit, protože je součástí definice funkce '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Změnit hodnotu:"; +Blockly.Msg["CLEAN_UP"] = "Uspořádat bloky"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Sbalit bloky"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Sbalit blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "barva 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "barva 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "poměr"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "smíchat"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Smíchá dvě barvy v daném poměru (0.0–1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://cs.wikipedia.org/wiki/Barva"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Vyberte barvu z palety."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "náhodná barva"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zvolte barvu náhodně."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "modrá"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelená"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "červená"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "obarvěte barvou"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Vytvoř barvu se zadaným množstvím červené, zelené a modré. Všechny hodnoty musí být mezi 0 a 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "vyskočit ze smyčky"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "pokračuj dalším opakováním smyčky"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Vyskoč z vnitřní smyčky."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Přeskoč zbytek této smyčky a pokračuj dalším opakováním."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozornění: Tento blok může být použit pouze uvnitř smyčky."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pro každou položku %1 v seznamu %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pro každou položku v seznamu nastavte do proměnné '%1' danou položku a proveďte nějaké operace."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "počítat s %1 od %2 do %3 po %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Nechá proměnnou '%1' nabývat hodnot od počátečního do koncového čísla po daném přírůstku a provádí příslušné bloky."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Přidat podmínku do \"pokud\" bloku."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Přidej konečnou podmínku zahrnující ostatní případy do bloku \"pokud\"."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Přidej, odstraň či uspořádej sekce k přenastavení tohoto bloku \"pokud\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "jinak"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "nebo pokud"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "pokud"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Je-li hodnota pravda, proveď určité příkazy."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Je-li hodnota pravda, proveď první blok příkazů. V opačném případě proveď druhý blok příkazů."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Je-li první hodnota pravdivá, proveď první blok příkazů. V opačném případě, je-li pravdivá druhá hodnota, proveď druhý blok příkazů."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Je-li první hodnota pravda, proveď první blok příkazů. Je-li druhá hodnota pravda, proveď druhý blok příkazů. Pokud žádná hodnota není pravda, proveď poslední blok příkazů."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://cs.wikipedia.org/wiki/Cyklus_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "dělej"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "opakuj %1 krát"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Proveď určité příkazy několikrát."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "opakovat dokud"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "opakovat když"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dokud je hodnota nepravdivá, prováděj určité příkazy."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dokud je hodnota pravdivá, prováděj určité příkazy."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Smazat všech %1 bloků?"; +Blockly.Msg["DELETE_BLOCK"] = "Smazat blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Odstranit proměnnou '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Odstranit %1 použití proměnné '%2'"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Smazat %1 bloků"; +Blockly.Msg["DIALOG_CANCEL"] = "Zrušit"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Deaktivovat blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikovat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplikovat komentář"; +Blockly.Msg["ENABLE_BLOCK"] = "Povolit blok"; +Blockly.Msg["EXPAND_ALL"] = "Rozbalit bloky"; +Blockly.Msg["EXPAND_BLOCK"] = "Rozbalit blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "vnější vstupy"; +Blockly.Msg["HELP"] = "Nápověda"; +Blockly.Msg["INLINE_INPUTS"] = "Vložené vstupy"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "vytvořit prázdný seznam"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vrátí seznam nulové délky, který neobsahuje žádné datové záznamy"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "seznam"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Přidat, odebrat nebo změnit pořadí oddílů tohoto seznamu bloku."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "vytvořit seznam s"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Přidat položku do seznamu."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Vytvoř seznam s libovolným počtem položek."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "první"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od konce"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "získat"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "získat a odstranit"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "poslední"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "náhodné"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "odstranit"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vrátí první položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Získá položku z určené pozice v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vrátí poslední položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vrátí náhodnou položku ze seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Odstraní a vrátí první položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Odstraní a získá položku z určené pozice v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Odstraní a vrátí poslední položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Odstraní a vrátí náhodnou položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Odstraní první položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Odebere položku na konkrétním místě v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Odstraní poslední položku v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Odstraní náhodou položku v seznamu."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od konce"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "jako poslední"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "získat podseznam od první položky"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "získat podseznam od # od konce"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "získat podseznam od #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Vytvoří kopii určené části seznamu."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je poslední položka."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je první položka."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "najít první výskyt položky"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "najít poslední výskyt položky"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vrací index prvního/posledního výskytu položky v seznamu. Vrací %1, pokud položka nebyla nalezena."; +Blockly.Msg["LISTS_INLIST"] = "v seznamu"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prázdné"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vrátí hodnotu pravda, pokud je seznam prázdný."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "délka %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vrací počet položek v seznamu."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "vytvoř seznam s položkou %1 opakovanou %2 krát"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Vytváří seznam obsahující danou hodnotu n-krát."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "jako"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "vložit na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "nastavit"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Vložit položku na začátek seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Vloží položku na určenou pozici v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Připojí položku na konec seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Připojí položku náhodně do seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Nastaví první položku v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Nastaví položku na konkrétní místo v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Nastaví poslední položku v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Nastaví náhodnou položku v seznamu."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "vzestupně"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "sestupně"; +Blockly.Msg["LISTS_SORT_TITLE"] = "seřadit %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Seřadit kopii seznamu."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecedně, na velikosti písmen nezáleží"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "číselné"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abecedně"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "udělat z textu seznam"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "udělat ze seznamu text"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Spojit seznam textů do jednoho textu, rozdělaného oddělovači."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Rozdělit text do seznamu textů, lámání na oddělovačích."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "s oddělovačem"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "nepravda"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vrací pravda nebo nepravda."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "pravda"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://cs.wikipedia.org/wiki/Nerovnost_(matematika)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vrátí hodnotu pravda, pokud se oba vstupy rovnají jeden druhému."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Navrátí hodnotu pravda, pokud první vstup je větší než druhý vstup."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Navrátí hodnotu pravda, pokud je první vstup větší a nebo rovný druhému vstupu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Navrátí hodnotu pravda, pokud je první vstup menší než druhý vstup."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Navrátí hodnotu pravda, pokud je první vstup menší a nebo rovný druhému vstupu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vrátí hodnotu pravda, pokud se oba vstupy nerovnají sobě navzájem."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Navrátí hodnotu pravda, pokud je vstup nepravda. Navrátí hodnotu nepravda, pokud je vstup pravda."; +Blockly.Msg["LOGIC_NULL"] = "prázdný"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vrátí prázdnou hodnotu"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "a"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "nebo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vrátí hodnotu pravda, pokud oba dva vstupy jsou pravdivé."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vrátí hodnotu pravda, pokud alespoň jeden ze vstupů má hodnotu pravda."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://cs.wikipedia.org/wiki/Ternární operátor (programování)"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "pokud nepravda"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "pokud pravda"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Zkontroluje podmínku v \"testu\". Když je podmínka pravda, vrátí hodnotu \"pokud pravda\"; v opačném případě vrátí hodnotu \"pokud nepravda\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://cs.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vrátí součet dvou čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vrátí podíl dvou čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vrátí rozdíl dvou čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vrátí součin dvou čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vrátí první číslo umocněné na druhé číslo."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://cs.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 z X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vrací arkustangens bodu (X, Y) ve stupních od -180 do 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "zaměň %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Přičti číslo k proměnné '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vraťte jednu z následujících konstant: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (nekonečno)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "omez %1 na rozmezí od %2 do %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Omezí číslo tak, aby bylo ve stanovených mezích (včetně)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je dělitelné číslem"; +Blockly.Msg["MATH_IS_EVEN"] = "je sudé"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je záporné"; +Blockly.Msg["MATH_IS_ODD"] = "je liché"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je kladné"; +Blockly.Msg["MATH_IS_PRIME"] = "je prvočíslo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrola, zda je číslo sudé, liché, prvočíslo, celé, kladné, záporné nebo zda je dělitelné daným číslem. Vrací pravdu nebo nepravdu."; +Blockly.Msg["MATH_IS_WHOLE"] = "je celé"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://cs.wikipedia.org/wiki/Modul%C3%A1rn%C3%AD_aritmetika"; +Blockly.Msg["MATH_MODULO_TITLE"] = "zbytek po dělení %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vrátí zbytek po dělení dvou čísel."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://cs.wikipedia.org/wiki/Číslo"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Číslo."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "průměr v seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "největší v seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medián v seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "nejmenší v seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "nejčastější ze seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "náhodná položka seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "směrodatná odchylka ze seznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma seznamu"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vrátí průměr (aritmetický průměr) číselných hodnot v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vrátí největší číslo v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vrátí medián seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vrátí nejmenší číslo v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vrátí seznam nejčastějších položek seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vrátí náhodnou položku ze seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vrátí směrodatnou odchylku seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vrátí součet všech čísel v seznamu."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "náhodné číslo mezi 0 (včetně) do 1"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vrátí náhodné číslo mezi 0,0 (včetně) až 1,0"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "náhodné celé číslo od %1 do %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vrací náhodné celé číslo mezi dvěma určenými mezemi, včetně mezních hodnot."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokrouhlit"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokrouhlit dolů"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokrouhlit nahoru"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokrouhlit číslo nahoru nebo dolů."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://cs.wikipedia.org/wiki/Druhá_odmocnina"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolutní hodnota"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "druhá odmocnina"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vrátí absolutní hodnotu čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vrátí mocninu čísla e."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vrátí přirozený logaritmus čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vrátí desítkový logaritmus čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vrátí zápornou hodnotu čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vrátí mocninu čísla 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vrátí druhou odmocninu čísla."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vrátí arkus kosinus čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vrátí arkus sinus čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vrátí arkus tangens čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vrátí kosinus úhlu ve stupních."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vrátí sinus úhlu ve stupních."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vrátí tangens úhlu ve stupních."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Vytvořit proměnnou pro barvu..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Vytvořit číselnou proměnnou..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Vytvořit textovou proměnnou..."; +Blockly.Msg["NEW_VARIABLE"] = "Vytvořit proměnnou..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nový název proměnné:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nový typ proměnné:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "povolit příkazy"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://cs.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Spustí uživatelem definovanou funkci '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://cs.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Spustí uživatelem definovanou funkci '%1' a použije její výstup."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Vytvořit '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Popište tuto funkci..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "proveď něco"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "k provedení"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Vytvořit funkci bez výstupu."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "navrátit"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Vytvořit funkci s výstupem."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozornění: Tato funkce má duplicitní parametry."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Zvýraznit definici funkce"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Je-li hodnota pravda, pak vrátí druhou hodnotu."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Varování: Tento blok může být použit pouze uvnitř definici funkce."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "vstupní jméno:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Přidat vstupy do funkce."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "vstupy"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Přidat, odebrat nebo změnit pořadí vstupů této funkce."; +Blockly.Msg["REDO"] = "Znovu"; +Blockly.Msg["REMOVE_COMMENT"] = "Odstranit komentář"; +Blockly.Msg["RENAME_VARIABLE"] = "Přejmenovat proměnnou..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Přejmenuj všech '%1' proměnných na:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "do %1 přidat text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Přidá určitý text k proměnné '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na malá písmena"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Počáteční Velká Písmena"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na VELKÁ PÍSMENA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vrátí kopii textu s jinou velikostí písmen."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "získat první písmeno"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "získat # písmeno od konce"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "získat písmeno #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "získat poslední písmeno"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "získat náhodné písmeno"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "v textu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Získat písmeno na konkrétní pozici."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Přidat položku do textu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "spojit"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Přidat, odebrat nebo změnit pořadí oddílů tohoto textového bloku."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do # písmene od konce"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do písmene #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do posledního písmene"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "v textu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "získat podřetězec od prvního písmene"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "získat podřetězec od písmene # od konce"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "získat podřetězec od písmene #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Získat zadanou část textu."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "najít první výskyt textu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "najít poslední výskyt textu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "v textu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vypíše %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prázdný"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vrátí pravda pokud je zadaný text prázdný."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "vytvořit text s"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Vytvoří kousek textu spojením libovolného počtu položek."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "délka %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vrátí počet písmen (včetně mezer) v zadaném textu."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "tisk %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Tisk zadaného textu, čísla nebo jiné hodnoty."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Výzva pro uživatele k zadání čísla."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Výzva pro uživatele k zadání nějakého textu."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "výzva k zadání čísla se zprávou"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "výzva k zadání textu se zprávou"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://cs.wikipedia.org/wiki/Textov%C3%BD_%C5%99et%C4%9Bzec"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Písmeno, slovo nebo řádek textu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "odstranit mezery z obou stran"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "odstranit mezery z levé strany"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "odstranit mezery z pravé strany"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vrátí kopii textu s odstraněnými mezerami z jednoho nebo obou konců."; +Blockly.Msg["TODAY"] = "Dnes"; +Blockly.Msg["UNDO"] = "Zpět"; +Blockly.Msg["UNNAMED_KEY"] = "nepojmenovaný"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "položka"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Vytvořit \"nastavit %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vrátí hodnotu této proměnné."; +Blockly.Msg["VARIABLES_SET"] = "nastavit %1 na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Vytvořit \"získat %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Nastaví tuto proměnnou, aby se rovnala vstupu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Proměnná jménem '%1' již existuje"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Proměnná pojmenovaná jako '%1' již existuje pro jiný typ: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/da.js b/msg/js/da.js index 09f57ab84f3..e4efeed7dc8 100644 --- a/msg/js/da.js +++ b/msg/js/da.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Tilføj Kommentar"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kan ikke slette variablen »%1« da den er en del af definitionen af funktionen »%2«"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Skift værdi:"; -Blockly.Msg["CLEAN_UP"] = "Ryd op i blokke"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Fold blokkene sammen"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Fold blokken sammen"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "farve 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "farve 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "i forholdet"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "bland"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blander to farver sammen i et bestemt forhold (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://da.wikipedia.org/wiki/Farve"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Vælg en farve fra paletten."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "tilfældig farve"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Vælg en tilfældig farve."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blå"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "grøn"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "rød"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "farve med"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Lav en farve med den angivne mængde af rød, grøn og blå. Alle værdier skal være mellem 0 og 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "bryd ud af løkken"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fortsæt med den næste gentagelse i løkken"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bryd ud af den omgivende løkke."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Spring resten af denne løkke over, og fortsæt med den næste gentagelse."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Advarsel: Denne blok kan kun bruges i en løkke."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for hvert element %1 i listen %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For hvert element i en liste, sæt variablen '%1' til elementet, og udfør derefter nogle kommandoer."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "tæl med %1 fra %2 til %3 med %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Få variablen \"%1\" til at have værdierne fra startværdien til slutværdien, mens der tælles med det angivne interval, og udfør de angivne blokke."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tilføj en betingelse til denne \"hvis\" blok."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tilføj en sidste fang-alt betingelse, til denne \"hvis\" blok."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne \"hvis\" blok."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ellers"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ellers hvis"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "hvis"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Hvis en værdi er sand, så udfør nogle kommandoer."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Hvis en værdi er sand, så udfør den første blok af kommandoer. Ellers udfør den anden blok af kommandoer."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer. Hvis ingen af værdierne er sande, så udfør den sidste blok af kommandoer."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://da.wikipedia.org/wiki/For-l%C3%B8kke"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "udfør"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "gentag %1 gange"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Udfør nogle kommandoer flere gange."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "gentag indtil"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "gentag sålænge"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Udfør nogle kommandoer, sålænge en værdi er falsk."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Udfør nogle kommandoer, sålænge en værdi er sand."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Slet alle %1 blokke?"; -Blockly.Msg["DELETE_BLOCK"] = "Slet blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Slet variablen »%1«"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Slet %1's brug af variablen »%2«?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Slet %1 blokke"; -Blockly.Msg["DIALOG_CANCEL"] = "Afbryd"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Deaktivér blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikér"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplikér Kommentar"; -Blockly.Msg["ENABLE_BLOCK"] = "Aktivér blok"; -Blockly.Msg["EXPAND_ALL"] = "Fold blokkene ud"; -Blockly.Msg["EXPAND_BLOCK"] = "Fold blokken ud"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Udvendige inputs"; -Blockly.Msg["HELP"] = "Hjælp"; -Blockly.Msg["INLINE_INPUTS"] = "Indlejrede inputs"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "opret en tom liste"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returnerer en liste af længde 0, som ikke indeholder nogen data"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne blok."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "opret liste med"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Føj et element til listen."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Opret en liste med et vilkårligt antal elementer."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "første"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# fra slutningen"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "hent"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hent og fjern"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "sidste"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "tilfældig"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fjern"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnerer det første element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returnerer elementet på den angivne position på en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnerer den sidste element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returnerer et tilfældigt element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fjerner og returnerer det første element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fjerner og returnerer elementet på den angivne position på en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fjerner og returnerer det sidste element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fjerner og returnerer et tilfældigt element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fjerner det første element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fjerner elementet på den angivne position på en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fjerner sidste element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fjerner et tilfældigt element i en liste."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "til # fra slutningen"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "til #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "til sidste"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "hent underliste fra første"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "hent underliste fra # fra slutningen"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "hent underliste fra #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Opretter en kopi af den angivne del af en liste."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 er det sidste element."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 er det første element."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find første forekomst af elementet"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find sidste forekomst af elementet"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returnerer indeks for første/sidste forekomst af elementet i listen. Returnerer %1, hvis elementet ikke kan findes."; -Blockly.Msg["LISTS_INLIST"] = "i listen"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 er tom"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnerer sand, hvis listen er tom."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "længden af %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnerer længden af en liste."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "opret liste med elementet %1 gentaget %2 gange"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Opretter en liste bestående af den givne værdi gentaget et bestemt antal gange."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "vend %1 om"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Vend en kopi af en liste om."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "som"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "indsæt ved"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "sæt"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Indsætter elementet i starten af en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Indsætter elementet på den angivne position i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Føj elementet til slutningen af en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Indsætter elementet tilfældigt i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sætter det første element i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sætter elementet på den angivne position i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sætter det sidste element i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sætter et tilfældigt element i en liste."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "stigende"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "faldende"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sorter %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sorter en kopi af en liste."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetisk, ignorer store/små bogstaver"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "nummerorden"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetisk"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lav tekst til liste"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "lav liste til tekst"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Saml en liste af tekster til én tekst, der er adskilt af et skilletegn."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Bryd tekst op i en liste af tekster med brud ved hvert skilletegn."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "med skilletegn"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsk"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnerer enten sand eller falsk."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "sand"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://da.wikipedia.org/wiki/Ulighed_(matematik)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Returnere sand, hvis begge inputs er lig med hinanden."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Returnere sand, hvis det første input er større end det andet input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Returnere sand, hvis det første input er større end eller lig med det andet input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Returnere sand, hvis det første input er mindre end det andet input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Returnere sand, hvis det første input er mindre end eller lig med det andet input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Returnere sand, hvis begge inputs ikke er lig med hinanden."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ikke %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returnerer sand, hvis input er falsk. Returnerer falsk, hvis input er sandt."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returnerer null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "og"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "eller"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Returnere sand, hvis begge inputs er sande."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Returnere sand, hvis mindst et af inputtene er sande."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "hvis falsk"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "hvis sand"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontrollér betingelsen i 'test'. Hvis betingelsen er sand, returnér \"hvis sand\" værdien; ellers returnér \"hvis falsk\" værdien."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://da.wikipedia.org/wiki/Aritmetik"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnere summen af de to tal."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returnere kvotienten af de to tal."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returnere forskellen mellem de to tal."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returnere produktet af de to tal."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Returnere det første tal opløftet til potensen af det andet tal."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 af X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "skift %1 med %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Læg et tal til variablen '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://da.wikipedia.org/wiki/Matematisk_konstant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Returnere en af de ofte brugte konstanter: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (uendeligt)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begræns %1 til mellem %2 og %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begræns et tal til at være mellem de angivne grænser (inklusiv)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = ":"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "er deleligt med"; -Blockly.Msg["MATH_IS_EVEN"] = "er lige"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "er negativt"; -Blockly.Msg["MATH_IS_ODD"] = "er ulige"; -Blockly.Msg["MATH_IS_POSITIVE"] = "er positivt"; -Blockly.Msg["MATH_IS_PRIME"] = "er et primtal"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollere, om et tal er lige, ulige, primtal, helt, positivt, negativt, eller om det er deleligt med bestemt tal. Returnere sandt eller falskt."; -Blockly.Msg["MATH_IS_WHOLE"] = "er helt"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://da.wikipedia.org/wiki/Modulo"; -Blockly.Msg["MATH_MODULO_TITLE"] = "resten af %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Returner resten fra at dividere de to tal."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://da.wikipedia.org/wiki/Tal"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Et tal."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "gennemsnit af listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "største tal i listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "listens median"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mindste tal i listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "listens typetal"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "tilfældigt element fra listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardafvigelsen for listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summen af listen"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Returner gennemsnittet (middelværdien) af de numeriske værdier i listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Returner det største tal i listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Returner listens median."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Returner det mindste tal i listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Returner en liste over de mest almindelige elementer på listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returner et tilfældigt element fra listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Returner standardafvigelsen for listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Returner summen af alle tal i listen."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://da.wikipedia.org/wiki/Tilfældighedsgenerator"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "tilfældigt decimaltal (mellem 0 og 1)"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Returner et tilfældigt decimaltal mellem 0,0 (inklusiv) og 1,0 (eksklusiv)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://da.wikipedia.org/wiki/Tilfældighedsgenerator"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "tilfældigt heltal mellem %1 og %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Returner et tilfældigt heltal mellem de to angivne grænser (inklusiv)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://da.wikipedia.org/wiki/Afrunding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "afrund"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rund ned"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rund op"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Runde et tal op eller ned."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://da.wikipedia.org/wiki/Kvadratrod"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratrod"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returnere den absolutte værdi af et tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Returnere e til potensen af et tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Returnere den naturlige logaritme af et tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returnere 10-talslogaritmen af et tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returnere negationen af et tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Returnere 10 til potensen af et tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returnere kvadratroden af et tal."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://da.wikipedia.org/wiki/Trigonometrisk_funktion"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Returnere arcus cosinus af et tal."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Returnere arcus sinus af et tal."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Returnere arcus tangens af et tal."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Returnere cosinus af en vinkel (i grader)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Returnere sinus af en vinkel (i grader)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Returnere tangens af en vinkel (i grader)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Opret farvevariabel ..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Opret nummervariabel ..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Opret strengvariabel ..."; -Blockly.Msg["NEW_VARIABLE"] = "Opret variabel ..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Navn til den nye variabel:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ny variabeltype:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "tillad erklæringer"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "med:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kør den brugerdefinerede funktion '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kør den brugerdefinerede funktion '%1' og brug dens returværdi."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "med:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Opret '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beskriv denne funktion..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "gøre noget"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "for at"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Opretter en funktion der ikke har nogen returværdi."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returnér"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Opretter en funktion der har en returværdi."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advarsel: Denne funktion har dublerede parametre."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markér funktionsdefinitionen"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Hvis en værdi er sand, så returnér en anden værdi."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advarsel: Denne blok kan kun anvendes inden for en funktionsdefinition."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "parameternavn:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tilføj en parameter til funktionen."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "parametre"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tilføje, fjerne eller ændre rækkefølgen af parametre til denne funktion."; -Blockly.Msg["REDO"] = "Omgør"; -Blockly.Msg["REMOVE_COMMENT"] = "Fjern Kommentar"; -Blockly.Msg["RENAME_VARIABLE"] = "Omdøb variabel..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Omdøb alle '%1' variabler til:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "til %1 tilføj tekst %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tilføj noget tekst til variablen '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "til små bogstaver"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "til Stort Begyndelsesbogstav"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "til STORE BOGSTAVER"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Returner en kopi af teksten hvor bogstaverne enten er udelukkende store eller små, eller hvor første bogstav i hvert ord er stort."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "hent første bogstav"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hent bogstav # fra slutningen"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hent bogstav #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "hent sidste bogstav"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hent tilfældigt bogstav"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "i tekst %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returnerer bogstavet på den angivne placering."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "tæl %1 i %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Tæl hvor mange gange noget tekst fremgår i en anden tekst."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Føj et element til teksten."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sammenføj"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne tekstblok."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "til bogstav # fra slutningen"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "til bogstav #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "til sidste bogstav"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "i teksten"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "hent delstreng fra første bogstav"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hent delstreng fra bogstav # fra slutningen"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hent delstreng fra bogstav #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returnerer den angivne del af teksten."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find første forekomst af teksten"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find sidste forekomst af teksten"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "i tekst %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returnerer indeks for første/sidste forekomst af første tekst i den anden tekst. Returnerer %1, hvis teksten ikke kan findes."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 er tom"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnerer sand, hvis den angivne tekst er tom."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "lav en tekst med"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Lav et stykke tekst ved at sætte et antal elementer sammen."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "længden af %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returnerer antallet af bogstaver (herunder mellemrum) i den angivne tekst."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "skriv %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Skriv den angivne tekst, tal eller anden værdi."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Spørg brugeren efter et tal"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Spørg brugeren efter en tekst"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "spørg efter et tal med meddelelsen"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "spørg efter tekst med meddelelsen"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "erstat %1 med %2 i %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Erstat alle forekomster af noget tekst i en anden tekst."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "vend %1 om"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Vender rækkefølgen om for tegnene i teksten."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://da.wikipedia.org/wiki/Tekststreng"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En bogstav, et ord eller en linje med tekst."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "fjern mellemrum fra begge sider af"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "fjern mellemrum fra venstre side af"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "fjern mellemrum fra højre side af"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returner en kopi af teksten med mellemrum fjernet fra den ene eller begge sider."; -Blockly.Msg["TODAY"] = "I dag"; -Blockly.Msg["UNDO"] = "Fortryd"; -Blockly.Msg["UNNAMED_KEY"] = "unavngivet"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Opret 'sæt %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnerer værdien af denne variabel."; -Blockly.Msg["VARIABLES_SET"] = "sæt %1 til %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Opret 'hent %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sætter denne variabel til at være lig med input."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "En variabel med navnet »%1« findes allerede."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "En variabel med navnet »%1« findes allerede for en anden type: »%2«."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sig noget ..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Tilføj Kommentar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kan ikke slette variablen »%1« da den er en del af definitionen af funktionen »%2«"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Skift værdi:"; +Blockly.Msg["CLEAN_UP"] = "Ryd op i blokke"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Fold blokkene sammen"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Fold blokken sammen"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "farve 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "farve 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "i forholdet"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "bland"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blander to farver sammen i et bestemt forhold (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://da.wikipedia.org/wiki/Farve"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Vælg en farve fra paletten."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "tilfældig farve"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Vælg en tilfældig farve."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blå"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grøn"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rød"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "farve med"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Lav en farve med den angivne mængde af rød, grøn og blå. Alle værdier skal være mellem 0 og 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "bryd ud af løkken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fortsæt med den næste gentagelse i løkken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bryd ud af den omgivende løkke."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Spring resten af denne løkke over, og fortsæt med den næste gentagelse."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Advarsel: Denne blok kan kun bruges i en løkke."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for hvert element %1 i listen %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For hvert element i en liste, sæt variablen '%1' til elementet, og udfør derefter nogle kommandoer."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "tæl med %1 fra %2 til %3 med %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Få variablen \"%1\" til at have værdierne fra startværdien til slutværdien, mens der tælles med det angivne interval, og udfør de angivne blokke."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tilføj en betingelse til denne \"hvis\" blok."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tilføj en sidste fang-alt betingelse, til denne \"hvis\" blok."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne \"hvis\" blok."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ellers"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ellers hvis"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "hvis"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Hvis en værdi er sand, så udfør nogle kommandoer."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Hvis en værdi er sand, så udfør den første blok af kommandoer. Ellers udfør den anden blok af kommandoer."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer. Hvis ingen af værdierne er sande, så udfør den sidste blok af kommandoer."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://da.wikipedia.org/wiki/For-l%C3%B8kke"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "udfør"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "gentag %1 gange"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Udfør nogle kommandoer flere gange."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "gentag indtil"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "gentag sålænge"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Udfør nogle kommandoer, sålænge en værdi er falsk."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Udfør nogle kommandoer, sålænge en værdi er sand."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Slet alle %1 blokke?"; +Blockly.Msg["DELETE_BLOCK"] = "Slet blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Slet variablen »%1«"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Slet %1's brug af variablen »%2«?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Slet %1 blokke"; +Blockly.Msg["DIALOG_CANCEL"] = "Afbryd"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Deaktivér blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikér"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplikér Kommentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktivér blok"; +Blockly.Msg["EXPAND_ALL"] = "Fold blokkene ud"; +Blockly.Msg["EXPAND_BLOCK"] = "Fold blokken ud"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Udvendige inputs"; +Blockly.Msg["HELP"] = "Hjælp"; +Blockly.Msg["INLINE_INPUTS"] = "Indlejrede inputs"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "opret en tom liste"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returnerer en liste af længde 0, som ikke indeholder nogen data"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne blok."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "opret liste med"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Føj et element til listen."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Opret en liste med et vilkårligt antal elementer."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "første"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# fra slutningen"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "hent"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hent og fjern"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "sidste"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "tilfældig"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fjern"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnerer det første element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returnerer elementet på den angivne position på en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnerer den sidste element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returnerer et tilfældigt element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fjerner og returnerer det første element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fjerner og returnerer elementet på den angivne position på en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fjerner og returnerer det sidste element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fjerner og returnerer et tilfældigt element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fjerner det første element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fjerner elementet på den angivne position på en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fjerner sidste element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fjerner et tilfældigt element i en liste."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "til # fra slutningen"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "til #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "til sidste"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "hent underliste fra første"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "hent underliste fra # fra slutningen"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "hent underliste fra #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Opretter en kopi af den angivne del af en liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 er det sidste element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 er det første element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find første forekomst af elementet"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find sidste forekomst af elementet"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returnerer indeks for første/sidste forekomst af elementet i listen. Returnerer %1, hvis elementet ikke kan findes."; +Blockly.Msg["LISTS_INLIST"] = "i listen"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 er tom"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnerer sand, hvis listen er tom."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "længden af %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnerer længden af en liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "opret liste med elementet %1 gentaget %2 gange"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Opretter en liste bestående af den givne værdi gentaget et bestemt antal gange."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "vend %1 om"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Vend en kopi af en liste om."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "som"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "indsæt ved"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "sæt"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Indsætter elementet i starten af en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Indsætter elementet på den angivne position i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Føj elementet til slutningen af en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Indsætter elementet tilfældigt i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sætter det første element i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sætter elementet på den angivne position i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sætter det sidste element i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sætter et tilfældigt element i en liste."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "stigende"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "faldende"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sorter %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sorter en kopi af en liste."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetisk, ignorer store/små bogstaver"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "nummerorden"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetisk"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lav tekst til liste"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "lav liste til tekst"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Saml en liste af tekster til én tekst, der er adskilt af et skilletegn."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Bryd tekst op i en liste af tekster med brud ved hvert skilletegn."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "med skilletegn"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsk"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnerer enten sand eller falsk."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "sand"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://da.wikipedia.org/wiki/Ulighed_(matematik)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Returnere sand, hvis begge inputs er lig med hinanden."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Returnere sand, hvis det første input er større end det andet input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Returnere sand, hvis det første input er større end eller lig med det andet input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Returnere sand, hvis det første input er mindre end det andet input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Returnere sand, hvis det første input er mindre end eller lig med det andet input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Returnere sand, hvis begge inputs ikke er lig med hinanden."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ikke %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returnerer sand, hvis input er falsk. Returnerer falsk, hvis input er sandt."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returnerer null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "og"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "eller"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Returnere sand, hvis begge inputs er sande."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Returnere sand, hvis mindst et af inputtene er sande."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "hvis falsk"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "hvis sand"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontrollér betingelsen i 'test'. Hvis betingelsen er sand, returnér \"hvis sand\" værdien; ellers returnér \"hvis falsk\" værdien."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://da.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnere summen af de to tal."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returnere kvotienten af de to tal."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returnere forskellen mellem de to tal."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returnere produktet af de to tal."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Returnere det første tal opløftet til potensen af det andet tal."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 af X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "skift %1 med %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Læg et tal til variablen '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://da.wikipedia.org/wiki/Matematisk_konstant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Returnere en af de ofte brugte konstanter: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (uendeligt)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begræns %1 til mellem %2 og %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begræns et tal til at være mellem de angivne grænser (inklusiv)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = ":"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "er deleligt med"; +Blockly.Msg["MATH_IS_EVEN"] = "er lige"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "er negativt"; +Blockly.Msg["MATH_IS_ODD"] = "er ulige"; +Blockly.Msg["MATH_IS_POSITIVE"] = "er positivt"; +Blockly.Msg["MATH_IS_PRIME"] = "er et primtal"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollere, om et tal er lige, ulige, primtal, helt, positivt, negativt, eller om det er deleligt med bestemt tal. Returnere sandt eller falskt."; +Blockly.Msg["MATH_IS_WHOLE"] = "er helt"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://da.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resten af %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Returner resten fra at dividere de to tal."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://da.wikipedia.org/wiki/Tal"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Et tal."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "gennemsnit af listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "største tal i listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "listens median"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mindste tal i listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "listens typetal"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "tilfældigt element fra listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardafvigelsen for listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summen af listen"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Returner gennemsnittet (middelværdien) af de numeriske værdier i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Returner det største tal i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Returner listens median."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Returner det mindste tal i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Returner en liste over de mest almindelige elementer på listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returner et tilfældigt element fra listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Returner standardafvigelsen for listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Returner summen af alle tal i listen."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://da.wikipedia.org/wiki/Tilfældighedsgenerator"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "tilfældigt decimaltal (mellem 0 og 1)"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Returner et tilfældigt decimaltal mellem 0,0 (inklusiv) og 1,0 (eksklusiv)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://da.wikipedia.org/wiki/Tilfældighedsgenerator"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "tilfældigt heltal mellem %1 og %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Returner et tilfældigt heltal mellem de to angivne grænser (inklusiv)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://da.wikipedia.org/wiki/Afrunding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "afrund"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rund ned"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rund op"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Runde et tal op eller ned."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://da.wikipedia.org/wiki/Kvadratrod"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratrod"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returnere den absolutte værdi af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Returnere e til potensen af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Returnere den naturlige logaritme af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returnere 10-talslogaritmen af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returnere negationen af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Returnere 10 til potensen af et tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returnere kvadratroden af et tal."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://da.wikipedia.org/wiki/Trigonometrisk_funktion"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Returnere arcus cosinus af et tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Returnere arcus sinus af et tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Returnere arcus tangens af et tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Returnere cosinus af en vinkel (i grader)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Returnere sinus af en vinkel (i grader)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Returnere tangens af en vinkel (i grader)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Opret farvevariabel ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Opret nummervariabel ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Opret strengvariabel ..."; +Blockly.Msg["NEW_VARIABLE"] = "Opret variabel ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Navn til den nye variabel:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ny variabeltype:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "tillad erklæringer"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kør den brugerdefinerede funktion '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kør den brugerdefinerede funktion '%1' og brug dens returværdi."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Opret '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beskriv denne funktion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "gøre noget"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "for at"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Opretter en funktion der ikke har nogen returværdi."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returnér"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Opretter en funktion der har en returværdi."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advarsel: Denne funktion har dublerede parametre."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markér funktionsdefinitionen"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Hvis en værdi er sand, så returnér en anden værdi."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advarsel: Denne blok kan kun anvendes inden for en funktionsdefinition."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "parameternavn:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tilføj en parameter til funktionen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "parametre"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tilføje, fjerne eller ændre rækkefølgen af parametre til denne funktion."; +Blockly.Msg["REDO"] = "Omgør"; +Blockly.Msg["REMOVE_COMMENT"] = "Fjern Kommentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Omdøb variabel..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Omdøb alle '%1' variabler til:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "til %1 tilføj tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tilføj noget tekst til variablen '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "til små bogstaver"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "til Stort Begyndelsesbogstav"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "til STORE BOGSTAVER"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Returner en kopi af teksten hvor bogstaverne enten er udelukkende store eller små, eller hvor første bogstav i hvert ord er stort."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hent første bogstav"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hent bogstav # fra slutningen"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hent bogstav #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hent sidste bogstav"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hent tilfældigt bogstav"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "i tekst %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returnerer bogstavet på den angivne placering."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "tæl %1 i %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Tæl hvor mange gange noget tekst fremgår i en anden tekst."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Føj et element til teksten."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sammenføj"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne tekstblok."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "til bogstav # fra slutningen"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "til bogstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "til sidste bogstav"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "i teksten"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "hent delstreng fra første bogstav"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hent delstreng fra bogstav # fra slutningen"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hent delstreng fra bogstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returnerer den angivne del af teksten."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find første forekomst af teksten"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find sidste forekomst af teksten"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "i tekst %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returnerer indeks for første/sidste forekomst af første tekst i den anden tekst. Returnerer %1, hvis teksten ikke kan findes."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 er tom"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnerer sand, hvis den angivne tekst er tom."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "lav en tekst med"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Lav et stykke tekst ved at sætte et antal elementer sammen."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "længden af %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returnerer antallet af bogstaver (herunder mellemrum) i den angivne tekst."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "skriv %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Skriv den angivne tekst, tal eller anden værdi."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Spørg brugeren efter et tal"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Spørg brugeren efter en tekst"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "spørg efter et tal med meddelelsen"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "spørg efter tekst med meddelelsen"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "erstat %1 med %2 i %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Erstat alle forekomster af noget tekst i en anden tekst."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "vend %1 om"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Vender rækkefølgen om for tegnene i teksten."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://da.wikipedia.org/wiki/Tekststreng"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En bogstav, et ord eller en linje med tekst."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "fjern mellemrum fra begge sider af"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "fjern mellemrum fra venstre side af"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "fjern mellemrum fra højre side af"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returner en kopi af teksten med mellemrum fjernet fra den ene eller begge sider."; +Blockly.Msg["TODAY"] = "I dag"; +Blockly.Msg["UNDO"] = "Fortryd"; +Blockly.Msg["UNNAMED_KEY"] = "unavngivet"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Opret 'sæt %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnerer værdien af denne variabel."; +Blockly.Msg["VARIABLES_SET"] = "sæt %1 til %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Opret 'hent %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sætter denne variabel til at være lig med input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "En variabel med navnet »%1« findes allerede."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "En variabel med navnet »%1« findes allerede for en anden type: »%2«."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sig noget ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/de.js b/msg/js/de.js index 5ba539622db..f16b957b7dd 100644 --- a/msg/js/de.js +++ b/msg/js/de.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Kommentar hinzufügen"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Die Variable „%1“ kann nicht gelöscht werden, da sie Teil der Definition der Funktion „%2“ ist."; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Wert ändern:"; -Blockly.Msg["CLEAN_UP"] = "Bausteine aufräumen"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Eingeklappte Blöcke enthalten Warnungen."; -Blockly.Msg["COLLAPSE_ALL"] = "Alle Bausteine zusammenfalten"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Baustein zusammenfalten"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Farbe 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "und Farbe 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "im Verhältnis"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mische"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Vermischt 2 Farben mit konfigurierbarem Farbverhältnis (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://de.wikipedia.org/wiki/Farbe"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Wählt eine Farbe aus der Palette aus."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "zufällige Farbe"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Erzeugt eine Farbe nach dem Zufallsprinzip."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "grün"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "rot"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "Farbe aus"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Erzeugt eine Farbe mit selbst definierten Rot-, Grün- und Blauwerten. Alle Werte müssen zwischen 0 und 100 liegen."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://de.wikipedia.org/wiki/Kontrollstruktur"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "die Schleife abbrechen"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "sofort mit nächstem Schleifendurchlauf fortfahren"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Die umgebende Schleife beenden."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Diese Anweisung abbrechen und mit dem nächsten Schleifendurchlauf fortfahren."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warnung: Dieser Baustein kann nur in einer Schleife verwendet werden."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://de.wikipedia.org/wiki/For-Schleife"; -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "für jeden Wert %1 aus der Liste %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Führt eine Anweisung für jeden Wert in der Liste aus und setzt dabei die Variable \"%1\" auf den aktuellen Listenwert."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://de.wikipedia.org/wiki/For-Schleife"; -Blockly.Msg["CONTROLS_FOR_TITLE"] = "zähle %1 von %2 bis %3 in Schritten von %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Zählt die Variable \"%1\" von einem Startwert bis zu einem Endwert und führt für jeden Wert eine Anweisung aus."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Eine weitere Bedingung hinzufügen."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Eine sonst-Bedingung hinzufügen. Führt eine Anweisung aus, falls keine Bedingung zutrifft."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Hinzufügen, entfernen oder sortieren von Sektionen"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sonst"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sonst falls"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "falls"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Führt eine Anweisung aus, falls eine Bedingung wahr ist."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Führt die erste Anweisung aus, falls eine Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Führt die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Führe die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist. Führt die dritte Anweisung aus, falls keine der beiden Bedingungen wahr ist"; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://de.wikipedia.org/wiki/For-Schleife"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "mache"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "wiederhole %1 mal:"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Eine Anweisung mehrfach ausführen."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://de.wikipedia.org/wiki/Schleife_%28Programmierung%29"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "wiederhole bis"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "wiederhole solange"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Führt Anweisungen aus solange die Bedingung unwahr ist."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Führt Anweisungen aus solange die Bedingung wahr ist."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Alle %1 Bausteine löschen?"; -Blockly.Msg["DELETE_BLOCK"] = "Baustein löschen"; -Blockly.Msg["DELETE_VARIABLE"] = "Die Variable „%1“ löschen"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1 Verwendungen der Variable „%2“ löschen?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 Bausteine löschen"; -Blockly.Msg["DIALOG_CANCEL"] = "Abbrechen"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Baustein deaktivieren"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Kopieren"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Kommentar duplizieren"; -Blockly.Msg["ENABLE_BLOCK"] = "Baustein aktivieren"; -Blockly.Msg["EXPAND_ALL"] = "Alle Bausteine entfalten"; -Blockly.Msg["EXPAND_BLOCK"] = "Baustein entfalten"; -Blockly.Msg["EXTERNAL_INPUTS"] = "externe Eingänge"; -Blockly.Msg["HELP"] = "Hilfe"; -Blockly.Msg["INLINE_INPUTS"] = "interne Eingänge"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "erzeuge eine leere Liste"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Erzeugt eine leere Liste ohne Inhalt."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "Liste"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Hinzufügen, entfernen und sortieren von Elementen."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "erzeuge Liste mit"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ein Element zur Liste hinzufügen."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Erzeugt eine Liste aus den angegebenen Elementen."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "Erste"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "von hinten das"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "das"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "nimm"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "nimm und entferne"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "Letzte"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "Zufällig"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "entferne"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "Element"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Extrahiert das erste Element aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Extrahiert das Element an der angegebenen Position in der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Extrahiert das letzte Element aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Extrahiert ein zufälliges Element aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Extrahiert und entfernt das erste Element aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Extrahiert und entfernt das Element an der angegebenen Position aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Extrahiert und entfernt das letzte Element aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Extrahiert und entfernt ein zufälliges Element aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Entfernt das erste Element aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Entfernt das Element an der angegebenen Position aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Entfernt das letzte Element aus der Liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Entfernt ein zufälliges Element aus der Liste."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "bis von hinten"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "bis"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "bis letztes"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "nimm Teilliste ab erstes"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "nimm Teilliste ab von hinten"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "nimm Teilliste ab"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "Element"; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Erstellt eine Kopie mit dem angegebenen Abschnitt der Liste."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ist das letzte Element."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ist das erste Element."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "suche erstes Auftreten von"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "suche letztes Auftreten von"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Sucht die Position (Index) eines Elementes in der Liste. Gibt %1 zurück, falls kein Element gefunden wurde."; -Blockly.Msg["LISTS_INLIST"] = "in der Liste"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ist leer"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ist wahr, falls die Liste leer ist."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "Länge von %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Die Anzahl von Elementen in der Liste."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; -Blockly.Msg["LISTS_REPEAT_TITLE"] = "erzeuge Liste mit %2 mal dem Element %1​"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Erzeugt eine Liste mit einer variablen Anzahl von Elementen"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "kehre %1 um"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Kehre eine Kopie einer Liste um."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ein"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "füge als"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "setze für"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Fügt das Element an den Anfang der Liste an."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Fügt das Element an der angegebenen Position in die Liste ein."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Fügt das Element ans Ende der Liste an."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Fügt das Element zufällig in die Liste ein."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Setzt das erste Element in der Liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setzt das Element an der angegebenen Position in der Liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setzt das letzte Element in die Liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setzt ein zufälliges Element in der Liste."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "aufsteigend"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "absteigend"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 sortieren"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Eine Kopie einer Liste sortieren."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetisch, Großschreibung ignorieren"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerisch"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetisch"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Liste aus Text erstellen"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "Text aus Liste erstellen"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Liste mit Texten in einen Text vereinen, getrennt durch ein Trennzeichen."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Text in eine Liste mit Texten aufteilen, unterbrochen bei jedem Trennzeichen."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "mit Trennzeichen"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsch"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ist entweder wahr oder falsch"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "wahr"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://de.wikipedia.org/wiki/Vergleich_%28Zahlen%29"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ist wahr, falls beide Werte gleich sind."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ist wahr, falls der erste Wert größer als der zweite Wert ist."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ist wahr, falls der erste Wert größer als oder gleich groß wie der zweite Wert ist."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ist wahr, falls der erste Wert kleiner als der zweite Wert ist."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ist wahr, falls der erste Wert kleiner als oder gleich groß wie der zweite Wert ist."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ist wahr, falls beide Werte unterschiedlich sind."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nicht %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ist wahr, falls der Eingabewert unwahr ist. Ist unwahr, falls der Eingabewert wahr ist."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://de.wikipedia.org/wiki/Nullwert"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Ist \"null\"."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "und"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "oder"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ist wahr, falls beide Werte wahr sind."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ist wahr, falls einer der beiden Werte wahr ist."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "prüfe"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://de.wikipedia.org/wiki/%3F:#Auswahloperator"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "falls falsch"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "falls wahr"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Überprüft eine Bedingung \"prüfe\". Falls die Bedingung wahr ist, wird der \"falls wahr\" Wert zurückgegeben, andernfalls der \"falls unwahr\" Wert"; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://de.wikipedia.org/wiki/Grundrechenart"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ist die Summe zweier Zahlen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ist der Quotient zweier Zahlen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ist die Differenz zweier Zahlen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ist das Produkt zweier Zahlen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ist die erste Zahl potenziert mit der zweiten Zahl."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://de.wikipedia.org/wiki/Arctan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 von X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Gibt den Arkustangens des Punktes (X, Y) in Grad von -180 bis 180 zurück."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://de.wikipedia.org/wiki/Inkrement_und_Dekrement"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "erhöhe %1 um %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Addiert eine Zahl zu \"%1\"."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://de.wikipedia.org/wiki/Mathematische_Konstante"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Mathematische Konstanten wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begrenze %1 zwischen %2 und %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begrenzt eine Zahl auf den Wertebereich zwischen zwei anderen Zahlen (inklusiv)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ist teilbar durch"; -Blockly.Msg["MATH_IS_EVEN"] = "ist gerade"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "ist negativ"; -Blockly.Msg["MATH_IS_ODD"] = "ist ungerade"; -Blockly.Msg["MATH_IS_POSITIVE"] = "ist positiv"; -Blockly.Msg["MATH_IS_PRIME"] = "ist eine Primzahl"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Überprüft ob eine Zahl gerade, ungerade, eine Primzahl, ganzzahlig, positiv, negativ oder durch eine zweite Zahl teilbar ist. Gibt wahr oder falsch zurück."; -Blockly.Msg["MATH_IS_WHOLE"] = "ist eine ganze Zahl"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://de.wikipedia.org/wiki/Modulo"; -Blockly.Msg["MATH_MODULO_TITLE"] = "Rest von %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Der Rest nach einer Division."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://de.wikipedia.org/wiki/Zahl"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Eine Zahl."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = "http://www.sysplus.ch/einstieg.php?links=menu&seite=4125&grad=Crash&prog=Excel"; -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Mittelwert der Liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Maximalwert der Liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Median der Liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Minimalwert der Liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "am häufigsten in der Liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Zufallswert aus der Liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Standardabweichung der Liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Summe über die Liste"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ist der Durchschnittswert aller Zahlen in einer Liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ist die größte Zahl in einer Liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Ist der Median aller Zahlen in einer Liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ist die kleinste Zahl in einer Liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Findet die Werte mit dem häufigstem Vorkommen in der Liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Gibt einen zufälligen Wert aus der Liste zurück."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ist die Standardabweichung aller Werte in der Liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ist die Summe aller Zahlen in einer Liste."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://de.wikipedia.org/wiki/Zufallszahlen"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Zufallszahl (0.0 - 1.0)"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Erzeugt eine Zufallszahl zwischen 0.0 (inklusiv) und 1.0 (exklusiv)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://de.wikipedia.org/wiki/Zufallszahlen"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ganzzahlige Zufallszahl zwischen %1 und %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Erzeugt eine ganzzahlige Zufallszahl zwischen zwei Zahlen (inklusiv)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://de.wikipedia.org/wiki/Runden"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "runde"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "runde ab"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "runde auf"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Eine Zahl auf- oder abrunden."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://de.wikipedia.org/wiki/Quadratwurzel"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "Betrag"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Quadratwurzel"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ist der Betrag einer Zahl."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ist Wert der Exponentialfunktion einer Zahl."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ist der natürliche Logarithmus einer Zahl."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ist der dekadische Logarithmus einer Zahl."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Negiert eine Zahl."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Rechnet 10 hoch eine Zahl."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ist die Quadratwurzel einer Zahl."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://de.wikipedia.org/wiki/Trigonometrie"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ist der Arkuskosinus des Eingabewertes."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ist der Arkussinus des Eingabewertes."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ist der Arkustangens des Eingabewertes."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ist der Kosinus des Winkels."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ist der Sinus des Winkels (nicht Radiant)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ist der Tangens des Winkels (nicht Radiant)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Farbvariable erstellen …"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Zahlenvariable erstellen …"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Zeichenfolgenvariable erstellen …"; -Blockly.Msg["NEW_VARIABLE"] = "Variable erstellen …"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Name der neuen Variable:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Neuer Variablentyp:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "."; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "Anweisungen erlauben"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "mit:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Unterprogramm"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Rufe einen Funktionsblock ohne Rückgabewert auf."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Unterprogramm"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Rufe einen Funktionsblock mit Rückgabewert auf."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "mit:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Erzeuge \"Aufruf %1\""; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beschreibe diese Funktion …"; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "etwas tun"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "um"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ein Funktionsblock ohne Rückgabewert."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "gib zurück"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ein Funktionsblock mit Rückgabewert."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warnung: Dieser Funktionsblock hat zwei gleich benannte Parameter."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markiere Funktionsblock"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Gibt den zweiten Wert zurück und verlässt die Funktion, falls der erste Wert wahr ist."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warnung: Dieser Block darf nur innerhalb eines Funktionsblocks genutzt werden."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Variable:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Eine Eingabe zur Funktion hinzufügen."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Parameter"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Die Eingaben zu dieser Funktion hinzufügen, entfernen oder neu anordnen."; -Blockly.Msg["REDO"] = "Wiederholen"; -Blockly.Msg["REMOVE_COMMENT"] = "Kommentar entfernen"; -Blockly.Msg["RENAME_VARIABLE"] = "Variable umbenennen …"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Alle \"%1\" Variablen umbenennen in:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "zu %1 Text %2 anhängen"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Text an die Variable \"%1\" anhängen."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "wandel um in kleinbuchstaben"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "wandel um in Substantive"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "wandel um in GROSSBUCHSTABEN"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Wandelt Schreibweise von Texten um, in Großbuchstaben, Kleinbuchstaben oder den ersten Buchstaben jedes Wortes groß und die anderen klein."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "nimm ersten"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "nimm von hinten"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "nimm"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; -Blockly.Msg["TEXT_CHARAT_LAST"] = "nimm letzten"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "nimm zufälligen"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = "Buchstaben"; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "im Text %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Extrahiert einen Buchstaben von einer bestimmten Position."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "zähle %1 in %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Zähle, wie oft ein Text innerhalb eines anderen Textes vorkommt."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ein Element zum Text hinzufügen."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "verbinden"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Hinzufügen, entfernen und sortieren von Elementen."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "bis von hinten"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bis"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "bis letzter"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "im Text"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "nimm Teil ab erster"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "nimm Teil ab von hinten"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "nimm Teil ab"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "Buchstabe"; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Gibt den angegebenen Textabschnitt zurück."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "suche erstes Auftreten des Begriffs"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "suche letztes Auftreten des Begriffs"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "im Text %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Findet das erste / letzte Auftreten eines Suchbegriffs in einem Text. Gibt die Position des Begriffs zurück oder %1 falls der Suchbegriff nicht gefunden wurde."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ist leer"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Ist wahr, falls der Text keine Zeichen enthält."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = ""; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "erstelle Text aus"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Erstellt einen Text durch das Verbinden von mehreren Textelementen."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "Länge von %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Die Anzahl von Zeichen in einem Text (inkl. Leerzeichen)."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "gib aus %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Gibt den Text aus."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Fragt den Benutzer nach einer Zahl."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Fragt den Benutzer nach einem Text."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "frage nach Zahl mit Hinweis"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "frage nach Text mit Hinweis"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "ersetze %1 durch %2 in %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ersetze alle Vorkommen eines Textes innerhalb eines anderen Textes."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "kehre %1 um"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Kehre die Reihenfolge der Zeichen im Text um."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://de.wikipedia.org/wiki/Zeichenkette"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Ein Buchstabe, Text oder Satz."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "entferne Leerzeichen vom Anfang und vom Ende (links und rechts)"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "entferne Leerzeichen vom Anfang (links)"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "entferne Leerzeichen vom Ende (rechts)"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Entfernt Leerzeichen vom Anfang und / oder Ende eines Textes."; -Blockly.Msg["TODAY"] = "Heute"; -Blockly.Msg["UNDO"] = "Rückgängig"; -Blockly.Msg["UNNAMED_KEY"] = "unbenannt"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Erzeuge \"Schreibe %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29"; -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Gibt den Wert der Variable zurück."; -Blockly.Msg["VARIABLES_SET"] = "setze %1 auf %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Erzeuge \"Lese %1\""; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29"; -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setzt den Wert einer Variable."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Eine Variable namens „%1“ ist bereits vorhanden."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Eine Variable namens „%1“ ist bereits für einen anderen Typ vorhanden: „%2“."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Arbeitsbereich"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Teile etwas mit…"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Kommentar hinzufügen"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Die Variable „%1“ kann nicht gelöscht werden, da sie Teil der Definition der Funktion „%2“ ist."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Wert ändern:"; +Blockly.Msg["CLEAN_UP"] = "Bausteine aufräumen"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Eingeklappte Blöcke enthalten Warnungen."; +Blockly.Msg["COLLAPSE_ALL"] = "Alle Bausteine zusammenfalten"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Baustein zusammenfalten"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Farbe 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "und Farbe 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "im Verhältnis"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mische"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Vermischt 2 Farben mit konfigurierbarem Farbverhältnis (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://de.wikipedia.org/wiki/Farbe"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Wählt eine Farbe aus der Palette aus."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "zufällige Farbe"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Erzeugt eine Farbe nach dem Zufallsprinzip."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grün"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rot"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Farbe aus"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Erzeugt eine Farbe mit selbst definierten Rot-, Grün- und Blauwerten. Alle Werte müssen zwischen 0 und 100 liegen."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://de.wikipedia.org/wiki/Kontrollstruktur"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "die Schleife abbrechen"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "sofort mit nächstem Schleifendurchlauf fortfahren"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Die umgebende Schleife beenden."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Diese Anweisung abbrechen und mit dem nächsten Schleifendurchlauf fortfahren."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warnung: Dieser Baustein kann nur in einer Schleife verwendet werden."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://de.wikipedia.org/wiki/For-Schleife"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "für jeden Wert %1 aus der Liste %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Führt eine Anweisung für jeden Wert in der Liste aus und setzt dabei die Variable \"%1\" auf den aktuellen Listenwert."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://de.wikipedia.org/wiki/For-Schleife"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "zähle %1 von %2 bis %3 in Schritten von %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Zählt die Variable \"%1\" von einem Startwert bis zu einem Endwert und führt für jeden Wert eine Anweisung aus."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Eine weitere Bedingung hinzufügen."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Eine sonst-Bedingung hinzufügen. Führt eine Anweisung aus, falls keine Bedingung zutrifft."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Hinzufügen, entfernen oder sortieren von Sektionen"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sonst"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sonst falls"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "falls"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Führt eine Anweisung aus, falls eine Bedingung wahr ist."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Führt die erste Anweisung aus, falls eine Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Führt die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Führe die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist. Führt die dritte Anweisung aus, falls keine der beiden Bedingungen wahr ist"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://de.wikipedia.org/wiki/For-Schleife"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "mache"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "wiederhole %1 mal:"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Eine Anweisung mehrfach ausführen."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://de.wikipedia.org/wiki/Schleife_%28Programmierung%29"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "wiederhole bis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "wiederhole solange"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Führt Anweisungen aus solange die Bedingung unwahr ist."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Führt Anweisungen aus solange die Bedingung wahr ist."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Alle %1 Bausteine löschen?"; +Blockly.Msg["DELETE_BLOCK"] = "Baustein löschen"; +Blockly.Msg["DELETE_VARIABLE"] = "Die Variable „%1“ löschen"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1 Verwendungen der Variable „%2“ löschen?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 Bausteine löschen"; +Blockly.Msg["DIALOG_CANCEL"] = "Abbrechen"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Baustein deaktivieren"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopieren"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kommentar duplizieren"; +Blockly.Msg["ENABLE_BLOCK"] = "Baustein aktivieren"; +Blockly.Msg["EXPAND_ALL"] = "Alle Bausteine entfalten"; +Blockly.Msg["EXPAND_BLOCK"] = "Baustein entfalten"; +Blockly.Msg["EXTERNAL_INPUTS"] = "externe Eingänge"; +Blockly.Msg["HELP"] = "Hilfe"; +Blockly.Msg["INLINE_INPUTS"] = "interne Eingänge"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "erzeuge eine leere Liste"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Erzeugt eine leere Liste ohne Inhalt."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "Liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Hinzufügen, entfernen und sortieren von Elementen."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "erzeuge Liste mit"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ein Element zur Liste hinzufügen."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Erzeugt eine Liste aus den angegebenen Elementen."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "Erste"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "von hinten das"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "das"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "nimm"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "nimm und entferne"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "Letzte"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "Zufällig"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "entferne"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "Element"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Extrahiert das erste Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Extrahiert das Element an der angegebenen Position in der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Extrahiert das letzte Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Extrahiert ein zufälliges Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Extrahiert und entfernt das erste Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Extrahiert und entfernt das Element an der angegebenen Position aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Extrahiert und entfernt das letzte Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Extrahiert und entfernt ein zufälliges Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Entfernt das erste Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Entfernt das Element an der angegebenen Position aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Entfernt das letzte Element aus der Liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Entfernt ein zufälliges Element aus der Liste."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "bis von hinten"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "bis"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "bis letztes"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "nimm Teilliste ab erstes"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "nimm Teilliste ab von hinten"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "nimm Teilliste ab"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "Element"; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Erstellt eine Kopie mit dem angegebenen Abschnitt der Liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ist das letzte Element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ist das erste Element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "suche erstes Auftreten von"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "suche letztes Auftreten von"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Sucht die Position (Index) eines Elementes in der Liste. Gibt %1 zurück, falls kein Element gefunden wurde."; +Blockly.Msg["LISTS_INLIST"] = "in der Liste"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ist leer"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ist wahr, falls die Liste leer ist."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "Länge von %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Die Anzahl von Elementen in der Liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "erzeuge Liste mit %2 mal dem Element %1​"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Erzeugt eine Liste mit einer variablen Anzahl von Elementen"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "kehre %1 um"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Kehre eine Kopie einer Liste um."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ein"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "füge als"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "setze für"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Fügt das Element an den Anfang der Liste an."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Fügt das Element an der angegebenen Position in die Liste ein."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Fügt das Element ans Ende der Liste an."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Fügt das Element zufällig in die Liste ein."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Setzt das erste Element in der Liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setzt das Element an der angegebenen Position in der Liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setzt das letzte Element in die Liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setzt ein zufälliges Element in der Liste."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "aufsteigend"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "absteigend"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 sortieren"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Eine Kopie einer Liste sortieren."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetisch, Großschreibung ignorieren"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerisch"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetisch"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Liste aus Text erstellen"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "Text aus Liste erstellen"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Liste mit Texten in einen Text vereinen, getrennt durch ein Trennzeichen."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Text in eine Liste mit Texten aufteilen, unterbrochen bei jedem Trennzeichen."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "mit Trennzeichen"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsch"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ist entweder wahr oder falsch"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "wahr"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://de.wikipedia.org/wiki/Vergleich_%28Zahlen%29"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ist wahr, falls beide Werte gleich sind."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ist wahr, falls der erste Wert größer als der zweite Wert ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ist wahr, falls der erste Wert größer als oder gleich groß wie der zweite Wert ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ist wahr, falls der erste Wert kleiner als der zweite Wert ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ist wahr, falls der erste Wert kleiner als oder gleich groß wie der zweite Wert ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ist wahr, falls beide Werte unterschiedlich sind."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nicht %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ist wahr, falls der Eingabewert unwahr ist. Ist unwahr, falls der Eingabewert wahr ist."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://de.wikipedia.org/wiki/Nullwert"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Ist \"null\"."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "und"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "oder"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ist wahr, falls beide Werte wahr sind."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ist wahr, falls einer der beiden Werte wahr ist."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "prüfe"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://de.wikipedia.org/wiki/%3F:#Auswahloperator"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "falls falsch"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "falls wahr"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Überprüft eine Bedingung \"prüfe\". Falls die Bedingung wahr ist, wird der \"falls wahr\" Wert zurückgegeben, andernfalls der \"falls unwahr\" Wert"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://de.wikipedia.org/wiki/Grundrechenart"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ist die Summe zweier Zahlen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ist der Quotient zweier Zahlen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ist die Differenz zweier Zahlen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ist das Produkt zweier Zahlen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ist die erste Zahl potenziert mit der zweiten Zahl."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://de.wikipedia.org/wiki/Arctan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 von X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Gibt den Arkustangens des Punktes (X, Y) in Grad von -180 bis 180 zurück."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://de.wikipedia.org/wiki/Inkrement_und_Dekrement"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "erhöhe %1 um %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Addiert eine Zahl zu \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://de.wikipedia.org/wiki/Mathematische_Konstante"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Mathematische Konstanten wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begrenze %1 zwischen %2 und %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begrenzt eine Zahl auf den Wertebereich zwischen zwei anderen Zahlen (inklusiv)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ist teilbar durch"; +Blockly.Msg["MATH_IS_EVEN"] = "ist gerade"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ist negativ"; +Blockly.Msg["MATH_IS_ODD"] = "ist ungerade"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ist positiv"; +Blockly.Msg["MATH_IS_PRIME"] = "ist eine Primzahl"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Überprüft ob eine Zahl gerade, ungerade, eine Primzahl, ganzzahlig, positiv, negativ oder durch eine zweite Zahl teilbar ist. Gibt wahr oder falsch zurück."; +Blockly.Msg["MATH_IS_WHOLE"] = "ist eine ganze Zahl"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://de.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "Rest von %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Der Rest nach einer Division."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://de.wikipedia.org/wiki/Zahl"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Eine Zahl."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = "http://www.sysplus.ch/einstieg.php?links=menu&seite=4125&grad=Crash&prog=Excel"; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Mittelwert der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Maximalwert der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Median der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Minimalwert der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "am häufigsten in der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Zufallswert aus der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Standardabweichung der Liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Summe über die Liste"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ist der Durchschnittswert aller Zahlen in einer Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ist die größte Zahl in einer Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Ist der Median aller Zahlen in einer Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ist die kleinste Zahl in einer Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Findet die Werte mit dem häufigstem Vorkommen in der Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Gibt einen zufälligen Wert aus der Liste zurück."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ist die Standardabweichung aller Werte in der Liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ist die Summe aller Zahlen in einer Liste."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://de.wikipedia.org/wiki/Zufallszahlen"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Zufallszahl (0.0 - 1.0)"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Erzeugt eine Zufallszahl zwischen 0.0 (inklusiv) und 1.0 (exklusiv)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://de.wikipedia.org/wiki/Zufallszahlen"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ganzzahlige Zufallszahl zwischen %1 und %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Erzeugt eine ganzzahlige Zufallszahl zwischen zwei Zahlen (inklusiv)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://de.wikipedia.org/wiki/Runden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "runde"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "runde ab"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "runde auf"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Eine Zahl auf- oder abrunden."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://de.wikipedia.org/wiki/Quadratwurzel"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "Betrag"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Quadratwurzel"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ist der Betrag einer Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ist Wert der Exponentialfunktion einer Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ist der natürliche Logarithmus einer Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ist der dekadische Logarithmus einer Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Negiert eine Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Rechnet 10 hoch eine Zahl."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ist die Quadratwurzel einer Zahl."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://de.wikipedia.org/wiki/Trigonometrie"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ist der Arkuskosinus des Eingabewertes."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ist der Arkussinus des Eingabewertes."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ist der Arkustangens des Eingabewertes."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ist der Kosinus des Winkels."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ist der Sinus des Winkels (nicht Radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ist der Tangens des Winkels (nicht Radiant)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Farbvariable erstellen …"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Zahlenvariable erstellen …"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Zeichenfolgenvariable erstellen …"; +Blockly.Msg["NEW_VARIABLE"] = "Variable erstellen …"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Name der neuen Variable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Neuer Variablentyp:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "."; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "Anweisungen erlauben"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "mit:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Unterprogramm"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Rufe einen Funktionsblock ohne Rückgabewert auf."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Unterprogramm"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Rufe einen Funktionsblock mit Rückgabewert auf."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "mit:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Erzeuge \"Aufruf %1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beschreibe diese Funktion …"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "etwas tun"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "um"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ein Funktionsblock ohne Rückgabewert."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "gib zurück"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ein Funktionsblock mit Rückgabewert."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warnung: Dieser Funktionsblock hat zwei gleich benannte Parameter."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markiere Funktionsblock"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Gibt den zweiten Wert zurück und verlässt die Funktion, falls der erste Wert wahr ist."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warnung: Dieser Block darf nur innerhalb eines Funktionsblocks genutzt werden."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Variable:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Eine Eingabe zur Funktion hinzufügen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Parameter"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Die Eingaben zu dieser Funktion hinzufügen, entfernen oder neu anordnen."; +Blockly.Msg["REDO"] = "Wiederholen"; +Blockly.Msg["REMOVE_COMMENT"] = "Kommentar entfernen"; +Blockly.Msg["RENAME_VARIABLE"] = "Variable umbenennen …"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Alle \"%1\" Variablen umbenennen in:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "zu %1 Text %2 anhängen"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Text an die Variable \"%1\" anhängen."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "wandel um in kleinbuchstaben"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "wandel um in Substantive"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "wandel um in GROSSBUCHSTABEN"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Wandelt Schreibweise von Texten um, in Großbuchstaben, Kleinbuchstaben oder den ersten Buchstaben jedes Wortes groß und die anderen klein."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "nimm ersten"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "nimm von hinten"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "nimm"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "nimm letzten"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "nimm zufälligen"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "Buchstaben"; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "im Text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Extrahiert einen Buchstaben von einer bestimmten Position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "zähle %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Zähle, wie oft ein Text innerhalb eines anderen Textes vorkommt."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ein Element zum Text hinzufügen."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "verbinden"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Hinzufügen, entfernen und sortieren von Elementen."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "bis von hinten"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bis"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "bis letzter"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "im Text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "nimm Teil ab erster"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "nimm Teil ab von hinten"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "nimm Teil ab"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "Buchstabe"; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Gibt den angegebenen Textabschnitt zurück."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "suche erstes Auftreten des Begriffs"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "suche letztes Auftreten des Begriffs"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "im Text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Findet das erste / letzte Auftreten eines Suchbegriffs in einem Text. Gibt die Position des Begriffs zurück oder %1 falls der Suchbegriff nicht gefunden wurde."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ist leer"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Ist wahr, falls der Text keine Zeichen enthält."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = ""; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "erstelle Text aus"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Erstellt einen Text durch das Verbinden von mehreren Textelementen."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "Länge von %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Die Anzahl von Zeichen in einem Text (inkl. Leerzeichen)."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "gib aus %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Gibt den Text aus."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Fragt den Benutzer nach einer Zahl."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Fragt den Benutzer nach einem Text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "frage nach Zahl mit Hinweis"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "frage nach Text mit Hinweis"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "ersetze %1 durch %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ersetze alle Vorkommen eines Textes innerhalb eines anderen Textes."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "kehre %1 um"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Kehre die Reihenfolge der Zeichen im Text um."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://de.wikipedia.org/wiki/Zeichenkette"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Ein Buchstabe, Text oder Satz."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "entferne Leerzeichen vom Anfang und vom Ende (links und rechts)"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "entferne Leerzeichen vom Anfang (links)"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "entferne Leerzeichen vom Ende (rechts)"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Entfernt Leerzeichen vom Anfang und / oder Ende eines Textes."; +Blockly.Msg["TODAY"] = "Heute"; +Blockly.Msg["UNDO"] = "Rückgängig"; +Blockly.Msg["UNNAMED_KEY"] = "unbenannt"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Erzeuge \"Schreibe %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Gibt den Wert der Variable zurück."; +Blockly.Msg["VARIABLES_SET"] = "setze %1 auf %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Erzeuge \"Lese %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setzt den Wert einer Variable."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Eine Variable namens „%1“ ist bereits vorhanden."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Eine Variable namens „%1“ ist bereits für einen anderen Typ vorhanden: „%2“."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Arbeitsbereich"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Teile etwas mit…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/diq.js b/msg/js/diq.js index 21e7a6abbb5..a089c593a3a 100644 --- a/msg/js/diq.js +++ b/msg/js/diq.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Tefsir cı ke"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Vurniyaye '%1' nêşeno besteriyo, çıke parçeyê şınasnayışiyê fonksiyonê '%2'yo"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Erci bıvurne:"; -Blockly.Msg["CLEAN_UP"] = "Blokan pak ke"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Blokan teng ke"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Bloki teng ke"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "reng 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "reng 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "nısbet"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "tewde"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://diq.wikipedia.org/wiki/Reng"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Şıma palet ra yew reng weçinê."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rengo rastameye"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tesadufi yu ren bıweçin"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "kewe"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "kıho"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "sur"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "komponentên rengan"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Şıma renganê sûr, aşıl u kohoy ra rengê do spesifik vırazê. Gani ê pêro 0 u 100 miyan de bıbê."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Çerxen ra vec"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "Gama bin da çerxeni ra dewam ke"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Öujtewada çerxeni ra bıvıci"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Diqat: No bloke şeno teyna yew çerxiyayış miyan de bıgırweyo."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "Lista %2 de her item %1 rê"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Yew lista de her item rê, varyansê '%1' itemi rê vırazê, u dıma tayê akerdışi (beyani) bıdê"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "Pê amarêno %1 %2 ra %3 rê , herg gam de %4 vurnayışi"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Bloq da if'i rê yu şert dekerê de."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "eke çıniyo"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "eke nêyo"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "eke"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Eger yew vaye raşto, o taw şıma tayê akerdışi kerê."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "bıke"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 fıni tekrar ke"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Şıma tayêna reyi akerdışi kerê."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "hend tekrar ke"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Tekrar kerdış de"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Yew erc xırabo se tay beyanati bıd"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Yew erc raşto se yu beyanat bıd."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Pêro %1 bloki besteriyê?"; -Blockly.Msg["DELETE_BLOCK"] = "Bloki bestere"; -Blockly.Msg["DELETE_VARIABLE"] = "Şıma vırnaoğê '%1'i besterê"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1 ke vırnayışê '%2'i gırweneno, besteriyo?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 blokan bestere"; -Blockly.Msg["DIALOG_CANCEL"] = "Bıtexelne"; -Blockly.Msg["DIALOG_OK"] = "TEMAM"; -Blockly.Msg["DISABLE_BLOCK"] = "Çengi devre ra vec"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Zewnc"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Mışewreyo zewnc"; -Blockly.Msg["ENABLE_BLOCK"] = "Bloki feal ke"; -Blockly.Msg["EXPAND_ALL"] = "Blokan hera ke"; -Blockly.Msg["EXPAND_BLOCK"] = "Bloki hera ke"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Cıkewtışê xarıciy"; -Blockly.Msg["HELP"] = "Peşti"; -Blockly.Msg["INLINE_INPUTS"] = "Cıkerdışê xomiyani"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "lista venge vıraze"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Liste ya vıraz"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Yew işaret liste ke."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "verên"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# peyniye ra"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "bıgê"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "Bıgi u wedarne"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "peyên"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "raştameye"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "wedare"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Lista de obcey sıfteyıni tadano"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Lista de obcey peyêni tadano"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Lista de obcey raşt ameyayi tadano"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Lista de obcey sıfteyıni wedareno"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Lista de obcey peyêni wedareno"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Lista de obcey raşt ameyayi wedareno"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "Peyni # ra hetana"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "#'ya"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "Hetana pey"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "verênde lista bınêne bıgêrê"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "lista # ra lista bınêne bıgêrê"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 objeyo peyên o"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 objeyo sıfteyên o"; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "vıraştışê işaretê verêni bıvêne"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "vıraştışê nuşteyê verêni bıvêne"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "lista de"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 vengo"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Eger kı lista venga se raşt keno çerğ"; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "dergiya %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Derganiya yu lister dano."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 dimlaşt kerê"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Yew kopyaya yew lista dimlaşt kerê."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "zey"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "De fi"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "ca ke"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Lista de obcey sıfteyıni eyar keno"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Lista de obcey peyêni eyar keno"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Lista de obcey raşt ameyayi eyar keno"; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "zeydıyen"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "Kemeyen"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 weçine"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Kopyay yew lista rêz kerê"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetik, nezeri mekerên"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "Amoriyal"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Alfabetik"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "metini ra lista bıkerê"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "Lista ra metin bıkerê"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "Hududoxi ya"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ğelet"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Raşt yana çep erc dano"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "raşt"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Debiyaye dı erci zey pêyêse ercê \"True\" dane."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 niyo"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "veng"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Veng çarneno ra."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "û"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ya zi"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Eger her dı cıkewtışi zi raştê, şıma ageyrê."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "eke ğeleto"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "eke raşto"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Şerta'test'i test keno. Eger ke şert raşta se erca 'raşt'i çarneno, çepo se erca 'çep' çarneno."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Aritmetik"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Arêdayışê dı amara tadê"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Letey iya dı amara tadê"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ferqê dı amara tadê"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Reyina dı amara tadê"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://diq.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2, X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "%2, keno %1 vurneno"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Sabitanê wertağan ra yew açarne: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (bêpeyniye)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "Leteyêno"; -Blockly.Msg["MATH_IS_EVEN"] = "zewnco"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "negatifo"; -Blockly.Msg["MATH_IS_ODD"] = "kıto"; -Blockly.Msg["MATH_IS_POSITIVE"] = "pozitifo"; -Blockly.Msg["MATH_IS_PRIME"] = "bıngehên"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "tamo"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 ra menden"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Mendeyan ra teqsimkerdışê dı amaran açarne."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://diq.wikipedia.org/wiki/Numre"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Yew numre."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Averacê lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Tewr gırdê lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Wertey lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Tewr qıcê lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "listey modi"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Raştamaye objeya lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Standart ferqıziya lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "koma liste"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Lista de amara tewr qıckeke tadê"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Lista ra amara werti tadê"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Lista de tewr qıckek amar tadê"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Liste ra yew elemento rastameye açarne."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Raştamaye nimande amor"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "gılor ke"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Loğê cêri ke"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Loğê cori ke"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Yu amorer loğê cêri yana cori ke"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "mutlaq"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "karekok"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ercê mutlaqê yew amarer tadê"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "E quwetê yew amar tadano."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Tebi algoritmaya yew amarer tadê"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Logaritmay 10i yew amari rê peyser tadê"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Nêrazibiyena yew amari açarne."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Quweta yew amariya 10ıne tade."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Karerêçê yew amarer tadê"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://diq.wikipedia.org/wiki/Fonksiyonê_trigonometriye"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Arkkosinusê yew amari açarne."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Arksinusê yew amari açarne."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Arktangensê yew amari açarne."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Derecey yew kosinusi tadê (radyan niyo)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Sinusi yew derece tadê (radyan niyo)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Tanjantê yew derecey tadê (radyan niyo)"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Vurriyayoğê rengi vıraze..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Vurriyayoğê amari vıraze..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Vurriyayoğê rêze vıraze..."; -Blockly.Msg["NEW_VARIABLE"] = "Vuriyayeyo bıvıraz..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Tewrê vurriyayoğê neweyi:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tewrê vurriyayoğê neweyi:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ifade rê mısade bıde"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ebe:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ebe:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' vıraze"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Nê fonksiyoni beyan ke..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Çıyê bık"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "rê"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Yew fonksiyono çap nêdate vırazeno"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "peyser biya"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Yew fonksiyono çap daye vırazeno"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Tembe: Nê fonksiyoni de parametreyê dıleti estê."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "namey cıkewtışi:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Funksiyoni rê yew cıkewtış ilawe ke."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "cıkewtışi"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Newe ke"; -Blockly.Msg["REMOVE_COMMENT"] = "Tefsiri Wedare"; -Blockly.Msg["RENAME_VARIABLE"] = "Vuriyayey fına name ke..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Pêro vırnayışê '%1' reyna name ke:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "rê %1 Metin dek %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "Herfanê werdiyana"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Ser herf gırd"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "HERFANÊ GIRDANA"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "Herfa sıfti bıgi"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "herfa # peyêne ra bıgê"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "Herfa # bıgi"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "herfa peyêne bıgê"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "Raştamaye yu herf bıgi"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "metın de %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Şınasnaye pozisyon de yu herfer çerğ keno"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 miyan de %2 bımare"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Yew işaret nuşteyi ke."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "gıre de"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "heta herfa # peyêne"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "heta herfa #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "heta herfa peyêne"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "metın de"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "rêza bınêne herfa # peyêne ra bıgê"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "rêza bınêne herfa # ra bıgê"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Tay letey metini çerğ keno"; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "vıraştışê nuşteyê verêni bıvêne"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "vıraştışê nuşteyê verêni bıvêne"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "metın de %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 vengo"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ya metin vıraz"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "dergiya %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 çap"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Seba yew numreya karber persiyê"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Seba tay metinan karberi persiyê"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 heruna ra zerrey %3 zerrey %2 ya bıvurne"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "karakteranê %1 weçarne"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Yu herfa, satır yana çekuya metini"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Ewro"; -Blockly.Msg["UNDO"] = "Peyser bıgê"; -Blockly.Msg["UNNAMED_KEY"] = "bêname"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "unsur"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 bınuse' vıraze"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Ercê nê vurnayoği tadano"; -Blockly.Msg["VARIABLES_SET"] = "%1 ra %2 rê eyar kerê"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 bıwane' vıraze"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Yew vırnayış be namey '%1' xora est."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Vurnaye be nameyê '%1' ra be babetê bini ra esto: '%2'"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Caygurenayışi"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Çiyê vace..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Tefsir cı ke"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Vurniyaye '%1' nêşeno besteriyo, çıke parçeyê şınasnayışiyê fonksiyonê '%2'yo"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Erci bıvurne:"; +Blockly.Msg["CLEAN_UP"] = "Blokan pak ke"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Blokan teng ke"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bloki teng ke"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "reng 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "reng 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "nısbet"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "tewde"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://diq.wikipedia.org/wiki/Reng"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Şıma palet ra yew reng weçinê."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rengo rastameye"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tesadufi yu ren bıweçin"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "kewe"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "kıho"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "sur"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "komponentên rengan"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Şıma renganê sûr, aşıl u kohoy ra rengê do spesifik vırazê. Gani ê pêro 0 u 100 miyan de bıbê."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Çerxen ra vec"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "Gama bin da çerxeni ra dewam ke"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Öujtewada çerxeni ra bıvıci"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Diqat: No bloke şeno teyna yew çerxiyayış miyan de bıgırweyo."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "Lista %2 de her item %1 rê"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Yew lista de her item rê, varyansê '%1' itemi rê vırazê, u dıma tayê akerdışi (beyani) bıdê"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Pê amarêno %1 %2 ra %3 rê , herg gam de %4 vurnayışi"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Bloq da if'i rê yu şert dekerê de."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "eke çıniyo"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "eke nêyo"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "eke"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Eger yew vaye raşto, o taw şıma tayê akerdışi kerê."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "bıke"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 fıni tekrar ke"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Şıma tayêna reyi akerdışi kerê."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "hend tekrar ke"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Tekrar kerdış de"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Yew erc xırabo se tay beyanati bıd"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Yew erc raşto se yu beyanat bıd."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Pêro %1 bloki besteriyê?"; +Blockly.Msg["DELETE_BLOCK"] = "Bloki bestere"; +Blockly.Msg["DELETE_VARIABLE"] = "Şıma vırnaoğê '%1'i besterê"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1 ke vırnayışê '%2'i gırweneno, besteriyo?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 blokan bestere"; +Blockly.Msg["DIALOG_CANCEL"] = "Bıtexelne"; +Blockly.Msg["DIALOG_OK"] = "TEMAM"; +Blockly.Msg["DISABLE_BLOCK"] = "Çengi devre ra vec"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Zewnc"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Mışewreyo zewnc"; +Blockly.Msg["ENABLE_BLOCK"] = "Bloki feal ke"; +Blockly.Msg["EXPAND_ALL"] = "Blokan hera ke"; +Blockly.Msg["EXPAND_BLOCK"] = "Bloki hera ke"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Cıkewtışê xarıciy"; +Blockly.Msg["HELP"] = "Peşti"; +Blockly.Msg["INLINE_INPUTS"] = "Cıkerdışê xomiyani"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "lista venge vıraze"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Liste ya vıraz"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Yew işaret liste ke."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "verên"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# peyniye ra"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "bıgê"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "Bıgi u wedarne"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "peyên"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "raştameye"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "wedare"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Lista de obcey sıfteyıni tadano"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Lista de obcey peyêni tadano"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Lista de obcey raşt ameyayi tadano"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Lista de obcey sıfteyıni wedareno"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Lista de obcey peyêni wedareno"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Lista de obcey raşt ameyayi wedareno"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "Peyni # ra hetana"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "#'ya"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "Hetana pey"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "verênde lista bınêne bıgêrê"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "lista # ra lista bınêne bıgêrê"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 objeyo peyên o"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 objeyo sıfteyên o"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "vıraştışê işaretê verêni bıvêne"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "vıraştışê nuşteyê verêni bıvêne"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "lista de"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 vengo"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Eger kı lista venga se raşt keno çerğ"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dergiya %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Derganiya yu lister dano."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 dimlaşt kerê"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Yew kopyaya yew lista dimlaşt kerê."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "zey"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "De fi"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ca ke"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Lista de obcey sıfteyıni eyar keno"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Lista de obcey peyêni eyar keno"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Lista de obcey raşt ameyayi eyar keno"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "zeydıyen"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "Kemeyen"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 weçine"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Kopyay yew lista rêz kerê"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetik, nezeri mekerên"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "Amoriyal"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Alfabetik"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "metini ra lista bıkerê"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "Lista ra metin bıkerê"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "Hududoxi ya"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ğelet"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Raşt yana çep erc dano"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "raşt"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Debiyaye dı erci zey pêyêse ercê \"True\" dane."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 niyo"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "veng"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Veng çarneno ra."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "û"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ya zi"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Eger her dı cıkewtışi zi raştê, şıma ageyrê."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "eke ğeleto"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "eke raşto"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Şerta'test'i test keno. Eger ke şert raşta se erca 'raşt'i çarneno, çepo se erca 'çep' çarneno."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Arêdayışê dı amara tadê"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Letey iya dı amara tadê"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ferqê dı amara tadê"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Reyina dı amara tadê"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://diq.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2, X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%2, keno %1 vurneno"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Sabitanê wertağan ra yew açarne: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (bêpeyniye)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "Leteyêno"; +Blockly.Msg["MATH_IS_EVEN"] = "zewnco"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatifo"; +Blockly.Msg["MATH_IS_ODD"] = "kıto"; +Blockly.Msg["MATH_IS_POSITIVE"] = "pozitifo"; +Blockly.Msg["MATH_IS_PRIME"] = "bıngehên"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "tamo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 ra menden"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Mendeyan ra teqsimkerdışê dı amaran açarne."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://diq.wikipedia.org/wiki/Numre"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Yew numre."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Averacê lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Tewr gırdê lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Wertey lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Tewr qıcê lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "listey modi"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Raştamaye objeya lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Standart ferqıziya lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "koma liste"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Lista de amara tewr qıckeke tadê"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Lista ra amara werti tadê"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Lista de tewr qıckek amar tadê"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Liste ra yew elemento rastameye açarne."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Raştamaye nimande amor"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "gılor ke"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Loğê cêri ke"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Loğê cori ke"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Yu amorer loğê cêri yana cori ke"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "mutlaq"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "karekok"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ercê mutlaqê yew amarer tadê"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "E quwetê yew amar tadano."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Tebi algoritmaya yew amarer tadê"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Logaritmay 10i yew amari rê peyser tadê"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Nêrazibiyena yew amari açarne."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Quweta yew amariya 10ıne tade."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Karerêçê yew amarer tadê"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://diq.wikipedia.org/wiki/Fonksiyonê_trigonometriye"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Arkkosinusê yew amari açarne."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Arksinusê yew amari açarne."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Arktangensê yew amari açarne."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Derecey yew kosinusi tadê (radyan niyo)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Sinusi yew derece tadê (radyan niyo)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Tanjantê yew derecey tadê (radyan niyo)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Vurriyayoğê rengi vıraze..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Vurriyayoğê amari vıraze..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Vurriyayoğê rêze vıraze..."; +Blockly.Msg["NEW_VARIABLE"] = "Vuriyayeyo bıvıraz..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Tewrê vurriyayoğê neweyi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tewrê vurriyayoğê neweyi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ifade rê mısade bıde"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ebe:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ebe:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' vıraze"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Nê fonksiyoni beyan ke..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Çıyê bık"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "rê"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Yew fonksiyono çap nêdate vırazeno"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "peyser biya"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Yew fonksiyono çap daye vırazeno"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Tembe: Nê fonksiyoni de parametreyê dıleti estê."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "namey cıkewtışi:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Funksiyoni rê yew cıkewtış ilawe ke."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "cıkewtışi"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Newe ke"; +Blockly.Msg["REMOVE_COMMENT"] = "Tefsiri Wedare"; +Blockly.Msg["RENAME_VARIABLE"] = "Vuriyayey fına name ke..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Pêro vırnayışê '%1' reyna name ke:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "rê %1 Metin dek %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "Herfanê werdiyana"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Ser herf gırd"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "HERFANÊ GIRDANA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "Herfa sıfti bıgi"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "herfa # peyêne ra bıgê"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "Herfa # bıgi"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "herfa peyêne bıgê"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "Raştamaye yu herf bıgi"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "metın de %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Şınasnaye pozisyon de yu herfer çerğ keno"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 miyan de %2 bımare"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Yew işaret nuşteyi ke."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "gıre de"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "heta herfa # peyêne"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "heta herfa #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "heta herfa peyêne"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "metın de"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "rêza bınêne herfa # peyêne ra bıgê"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "rêza bınêne herfa # ra bıgê"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Tay letey metini çerğ keno"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "vıraştışê nuşteyê verêni bıvêne"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "vıraştışê nuşteyê verêni bıvêne"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "metın de %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 vengo"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ya metin vıraz"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dergiya %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 çap"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Seba yew numreya karber persiyê"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Seba tay metinan karberi persiyê"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 heruna ra zerrey %3 zerrey %2 ya bıvurne"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "karakteranê %1 weçarne"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Yu herfa, satır yana çekuya metini"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Ewro"; +Blockly.Msg["UNDO"] = "Peyser bıgê"; +Blockly.Msg["UNNAMED_KEY"] = "bêname"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "unsur"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 bınuse' vıraze"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Ercê nê vurnayoği tadano"; +Blockly.Msg["VARIABLES_SET"] = "%1 ra %2 rê eyar kerê"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 bıwane' vıraze"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Yew vırnayış be namey '%1' xora est."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Vurnaye be nameyê '%1' ra be babetê bini ra esto: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Caygurenayışi"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Çiyê vace..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/dty.js b/msg/js/dty.js index 9e124985e5c..12e237c1b56 100644 --- a/msg/js/dty.js +++ b/msg/js/dty.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "टिप्पणी थप्दे"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "मान बदल"; -Blockly.Msg["CLEAN_UP"] = "ब्लकनलाई हटाओ"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ब्लक भत्काओ"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ब्लक भत्का"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "रंग 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "रंग 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "अनुपात"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "मिश्रण गर"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "दियाका अनुपात (0.0 - 1.0) का साथ दुई रंगहरूको मिश्रण गरन्छ ।"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "पैलेट बाट एक रंग चुन ।"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "जुनसुकै रङ्ग"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "रैन्डम्ली एक रंग चयन गर ।"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "निलो"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "हरियो"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "रातो"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "यै रङ्गको"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "रातो, हरियो और नीलोको निर्दिष्ट मात्राकी साथ एक रंग बनाओ । सबै मान ० देखि १०० का बीच हुनु पडन्छ ।"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "लूप बाट भाइर निकलौं"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "लूपको अर्को आईटरेशन जारी राख"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "भीत्री लूप बाट बाहिर निस्कने"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "बचेका लूपलाई छोड, और अर्को आईटरेशन जारी राख ।"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "सावधान: यो ब्लक केवल लूप भित्रमात्र प्रयोग गद्द सकिन्छ ।"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 सूचीमी भयाः प्रत्येक आइटम %1 खिलाइ"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "सूचीको प्रत्येक आइटमको लागी, आइटममी चरको मान '%1' राखौं और पाछा क्यै कथन लेख ।"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "गन्ती गर %1 देखी %2 %3 %4 सम्म"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "यदि ब्लकमा एक शर्त जोडौं ।"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "एल्स"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "एल्स इफ"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "इफ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "यदि एक मान सत्य छ भण्या कथनहरूको प्रथम खण्ड बणाओ । अन्यथा कथनहरूको अर्को भाग निर्मित गर ।"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "डू"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 पल्ट दोसराओ"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "क्यै स्टेट्मन्ट कैयों पल्ट चलाओ ।"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "दोहराओ जब तलक"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "दोहराओ जब की"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "जब तक मान फॉल्स छ, तब तक क्यै स्टेट्मेंट्स चलाओ ।"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "सबै %1 ब्लकनलाई हटाउन्या ?"; -Blockly.Msg["DELETE_BLOCK"] = "ब्लक हटाउन्या"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' भेरिएबल मेट:"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' भेरिएबला %1 प्रयोग मेट्ट्या?"; -Blockly.Msg["DELETE_X_BLOCKS"] = " %1 ब्लकहरू हटाउन्या"; -Blockly.Msg["DIALOG_CANCEL"] = "खारेजी"; -Blockly.Msg["DIALOG_OK"] = "हुन्छ"; -Blockly.Msg["DISABLE_BLOCK"] = "ब्लकलाई निश्क्रिय पाड्डे"; -Blockly.Msg["DUPLICATE_BLOCK"] = "कपी गर"; -Blockly.Msg["DUPLICATE_COMMENT"] = "हूबहू टिप्पणी"; -Blockly.Msg["ENABLE_BLOCK"] = "ब्लकलाई सक्रिय पाड्डे"; -Blockly.Msg["EXPAND_ALL"] = "ब्लकनलाई फैलाओ"; -Blockly.Msg["EXPAND_BLOCK"] = "ब्लकनलाई फैलाओ"; -Blockly.Msg["EXTERNAL_INPUTS"] = "भाइरका इन्पुटहरू"; -Blockly.Msg["HELP"] = "सहायता"; -Blockly.Msg["INLINE_INPUTS"] = "इनलाइन इन्पुटहरू"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "असत्य"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "सत्य या असत्य फिर्ता अरन्छ।"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "सत्य"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "यदी दुवै इनपुट एक अर्काका बराबर छन् भण्या टु रिटर्न गर ।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "पैल्लो इनपुट दोसरा इनपुट है ठुलो भया ट्रू फिर्ता अर:।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "पैल्लो इनपुट दोसरा इनपुट है ठुलो या उइ सित बराबर भया ट्रू फिर्ता अर:।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "पैल्लो इनपुट दोसरा इनपुट है नानो भया ट्रू फिर्ता अर:।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "पैल्लो इनपुट दोसरा इनपुट है नानो या उइ सित बराबर भया ट्रू फिर्ता अर:।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "यदी दुवै इनपुट एक अर्काको बराबर नाइथिन् भणया टु रिटर्न गर ।"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "इनपुट असत्य भयाले सन्य फिर्ता अरन्छ। इनपुट सत्य भयाले असत्य फिर्ता अरन्छ।"; -Blockly.Msg["LOGIC_NULL"] = "शू्य"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "शून्य फिर्ता अरन्छ।"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "रे"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "या"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "दुएइ इनपुट ट्रू भया ट्रू फिर्ता अर:।"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "कम्तीमी लै १ इनपुट सत्य भयाले सत्य फिर्ता अर।"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "भेरिएवल बना:"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "नयाँ भेरिबलको नाम:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "पुन: कायम गद्दे"; -Blockly.Msg["REMOVE_COMMENT"] = "टिप्पणी हटाउन्या"; -Blockly.Msg["RENAME_VARIABLE"] = "भेरिबललाई पुनः नामांकन गर..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "सबै भेरिबलनका %1 नाम बदल्न्या:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "आज"; -Blockly.Msg["UNDO"] = "रद्द गर्न्या"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "वस्तु"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' नाउँ अरियाऽ भेरिएबल पैली बठेइ छ।"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "केयि भँण..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "टिप्पणी थप्दे"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "मान बदल"; +Blockly.Msg["CLEAN_UP"] = "ब्लकनलाई हटाओ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ब्लक भत्काओ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ब्लक भत्का"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "रंग 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "रंग 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "अनुपात"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "मिश्रण गर"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "दियाका अनुपात (0.0 - 1.0) का साथ दुई रंगहरूको मिश्रण गरन्छ ।"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "पैलेट बाट एक रंग चुन ।"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "जुनसुकै रङ्ग"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "रैन्डम्ली एक रंग चयन गर ।"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "निलो"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "हरियो"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "रातो"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "यै रङ्गको"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "रातो, हरियो और नीलोको निर्दिष्ट मात्राकी साथ एक रंग बनाओ । सबै मान ० देखि १०० का बीच हुनु पडन्छ ।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "लूप बाट भाइर निकलौं"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "लूपको अर्को आईटरेशन जारी राख"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "भीत्री लूप बाट बाहिर निस्कने"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "बचेका लूपलाई छोड, और अर्को आईटरेशन जारी राख ।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "सावधान: यो ब्लक केवल लूप भित्रमात्र प्रयोग गद्द सकिन्छ ।"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 सूचीमी भयाः प्रत्येक आइटम %1 खिलाइ"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "सूचीको प्रत्येक आइटमको लागी, आइटममी चरको मान '%1' राखौं और पाछा क्यै कथन लेख ।"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "गन्ती गर %1 देखी %2 %3 %4 सम्म"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "यदि ब्लकमा एक शर्त जोडौं ।"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "एल्स"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "एल्स इफ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "इफ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "यदि एक मान सत्य छ भण्या कथनहरूको प्रथम खण्ड बणाओ । अन्यथा कथनहरूको अर्को भाग निर्मित गर ।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "डू"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 पल्ट दोसराओ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "क्यै स्टेट्मन्ट कैयों पल्ट चलाओ ।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "दोहराओ जब तलक"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "दोहराओ जब की"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "जब तक मान फॉल्स छ, तब तक क्यै स्टेट्मेंट्स चलाओ ।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "सबै %1 ब्लकनलाई हटाउन्या ?"; +Blockly.Msg["DELETE_BLOCK"] = "ब्लक हटाउन्या"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' भेरिएबल मेट:"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' भेरिएबला %1 प्रयोग मेट्ट्या?"; +Blockly.Msg["DELETE_X_BLOCKS"] = " %1 ब्लकहरू हटाउन्या"; +Blockly.Msg["DIALOG_CANCEL"] = "खारेजी"; +Blockly.Msg["DIALOG_OK"] = "हुन्छ"; +Blockly.Msg["DISABLE_BLOCK"] = "ब्लकलाई निश्क्रिय पाड्डे"; +Blockly.Msg["DUPLICATE_BLOCK"] = "कपी गर"; +Blockly.Msg["DUPLICATE_COMMENT"] = "हूबहू टिप्पणी"; +Blockly.Msg["ENABLE_BLOCK"] = "ब्लकलाई सक्रिय पाड्डे"; +Blockly.Msg["EXPAND_ALL"] = "ब्लकनलाई फैलाओ"; +Blockly.Msg["EXPAND_BLOCK"] = "ब्लकनलाई फैलाओ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "भाइरका इन्पुटहरू"; +Blockly.Msg["HELP"] = "सहायता"; +Blockly.Msg["INLINE_INPUTS"] = "इनलाइन इन्पुटहरू"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "असत्य"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "सत्य या असत्य फिर्ता अरन्छ।"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "सत्य"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "यदी दुवै इनपुट एक अर्काका बराबर छन् भण्या टु रिटर्न गर ।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "पैल्लो इनपुट दोसरा इनपुट है ठुलो भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "पैल्लो इनपुट दोसरा इनपुट है ठुलो या उइ सित बराबर भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "पैल्लो इनपुट दोसरा इनपुट है नानो भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "पैल्लो इनपुट दोसरा इनपुट है नानो या उइ सित बराबर भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "यदी दुवै इनपुट एक अर्काको बराबर नाइथिन् भणया टु रिटर्न गर ।"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "इनपुट असत्य भयाले सन्य फिर्ता अरन्छ। इनपुट सत्य भयाले असत्य फिर्ता अरन्छ।"; +Blockly.Msg["LOGIC_NULL"] = "शू्य"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "शून्य फिर्ता अरन्छ।"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "रे"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "या"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "दुएइ इनपुट ट्रू भया ट्रू फिर्ता अर:।"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "कम्तीमी लै १ इनपुट सत्य भयाले सत्य फिर्ता अर।"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "भेरिएवल बना:"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "नयाँ भेरिबलको नाम:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "पुन: कायम गद्दे"; +Blockly.Msg["REMOVE_COMMENT"] = "टिप्पणी हटाउन्या"; +Blockly.Msg["RENAME_VARIABLE"] = "भेरिबललाई पुनः नामांकन गर..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "सबै भेरिबलनका %1 नाम बदल्न्या:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "आज"; +Blockly.Msg["UNDO"] = "रद्द गर्न्या"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "वस्तु"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' नाउँ अरियाऽ भेरिएबल पैली बठेइ छ।"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "केयि भँण..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ee.js b/msg/js/ee.js index d14d7bcd2bf..cb2fd943eee 100644 --- a/msg/js/ee.js +++ b/msg/js/ee.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Ŋlɔ Numeɖeɖe"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Mate ŋu atutu teaŋutrɔna '%1' o elabe ewɔ akpa aɖe le teaŋutrɔna '%2' me."; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Trɔ nuŋlɔdzesiawo:"; -Blockly.Msg["CLEAN_UP"] = "Tutu Nuawo"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Hatsotsoawo Me Nuwo Nebu"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Hatsotso Me Nuwo Nebu"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "amedede 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "amadede 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "agbɔsɔsɔ"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "tsaka"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Tsaka amadede eve kple agbɔsɔsɔ si nye (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ee.wikipedia.org/wiki/Amadede"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Tia amadede ɖeka le amadedetiaƒea."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "amadede aɖe ko"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tia amadede aɖe ko."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blɔ"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "gbemumu"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "dzĩ"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "de amae kple"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "tsaka"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Nedo le wɔtiaɖenua me"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "neyi edzi kple wɔtiaɖenua si kplɔe ɖo"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Nedo le wɔtiaɖenua si me wòlea me."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Neto wɔtiaɖenu sia susɔea ta wòayi bubu dzi."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Nuxlɔ̃ame: Wɔtiaɖenu me ko woate ŋu azã ƒuƒoƒo sia le."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "nu sia nu natso %2 me ayi %1 me"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Tia teaŋutrɔna '%1' na nuawo dometɔ ɖe sia ɖe si li, eye nàŋlɔ gbedeasi aɖe."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "Xlẽ %1 tso %2 yi %3 to %4 dzi"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Xexlẽdzesi tɔtrɔ '%1' nenye xexlẽdzesi si dze egɔme kple esiwo kplɔe ɖo va se ɖe mamlɛtɔ dzi, nebu dometsotso si wofia kple nyatakaka suetɔ siwo wofia asii."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tsɔ biabia aɖe kpe ne ƒuƒoƒo la."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tsɔ lé wo katã ƒe ne ƒe ƒuƒoƒo kpe biabia mamlɛa."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tsɔ kpee, ɖee le eme alo gbugbɔ akpawo ɖo nàtsɔ asi le ne ƒe ƒuƒoƒoa ŋu."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ke boŋ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "Ke boŋ ne"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "Ne"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ne asime aɖe le eme la, ke taɖodzinya aɖewo neva eme."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ne asime aɖe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ne menye nenem o la, ke taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ne asime gbãtɔe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Gake ne asime eveliae le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia boŋ neva eme."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ne asime gbãtɔ le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ke ne taɖodzinyawo ƒe ƒuƒoƒo evelia boŋue le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme. Ne taɖodzinya aɖeke mele eme o la,taɖodzinyawo ƒe ƒuƒoƒo mamlɛtɔ neva eme."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ee.wikipedia.org/wiki/Na_nogo"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "wɔ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Wɔe zi %1"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Gbugbɔ biabia aɖewo zi geɖe."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "gbugbɔ wɔe va se ɖe"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "gbugbɔ wɔe ne"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Ne nyatakaka dea, ke wɔ biabia aɖewo."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Ne nyatakaka dea, ke wɔ biabia aɖewo."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Èdi be netutu nu %1 katã?"; -Blockly.Msg["DELETE_BLOCK"] = "Tutu Hatsotsoa"; -Blockly.Msg["DELETE_VARIABLE"] = "Tutu teaŋutrɔna '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Netutu %1 ŋkɔ si nètsɔ na teaŋutrɔna '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Tutu Hatsotso %1"; -Blockly.Msg["DIALOG_CANCEL"] = "Natasii"; -Blockly.Msg["DIALOG_OK"] = "Yoo"; -Blockly.Msg["DISABLE_BLOCK"] = "Tsi Hatsotsoa"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Gbugbɔe Wɔ"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Kɔpi Numeɖeɖea"; -Blockly.Msg["ENABLE_BLOCK"] = "Si Hatsotsoa"; -Blockly.Msg["EXPAND_ALL"] = "Hatsotsoawo Me Nuwo Nedze"; -Blockly.Msg["EXPAND_BLOCK"] = "Hatsotsoa Me Nuwo Nedze"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Gotakpeɖeŋunuwo"; -Blockly.Msg["HELP"] = "Kpekpeɖeŋu"; -Blockly.Msg["INLINE_INPUTS"] = "Interdzikpeɖeŋuwo"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "gbãtɔ"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# tso nuwuwu"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "mamlɛtɔ"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ɖe sia ɖe ko"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ɖee ɖa"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Aʋu nu gbãtɔ."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Aʋu nua le afi si wòle le nuwo dome."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Aʋu nu mamlɛtɔ."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Aʋu nu ɖe sia ɖe aɖe ko."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Eɖea nu gbãtɔ ɖa eye eya kee gaʋua nu gbãtɔ."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Aɖe nua ɖa eye wòaʋu nua le afi si wòle le nuawo dome."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Eɖea nu mamlɛtɔ ɖa eye eya kee gaʋua nu mamlɛtɔ."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "yi # tso nuwuwu"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "yi #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "yi mamlɛtɔ"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 nye nu mamlɛtɔ."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 nye nu gbãtɔ."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 le ƒuƒlu"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "dzi yim"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ɖiɖim"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "mademadea"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Nefia dedia alo mademadea."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "dedia"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Masɔmasɔ_(akɔntabubu)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo sɔ kple wo nɔewo."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia alo sɔ kplii."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o alo sɔ kplii."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo mesɔ kple wo nɔewo o."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "menye %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ŋuɖoɖoa nenye nyateƒe ne nudemea menye nyateƒe o. Ŋuɖoɖoa nenye aʋatso ne nudemea nye nyateƒe."; -Blockly.Msg["LOGIC_NULL"] = "ɖeke o"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Mekpɔ ɖeke o."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "eye"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "alo"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo nye nyateƒe."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme ɖeka teti nye nyateƒe."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "dodokpɔ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "nenye dedietɔ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "nenye nyuitɔ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kpɔ nu si dze le \"dodokpɔ\" me. Ne dediae dze la, tia \"ne dedia\"; ke ne manyomanyotɔe la, tia \"ne mademadea.\""; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ee.wikipedia.org/wiki/Xexlẽdzesibubu"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Bu xexlẽdzesi evea ƒoƒo ƒu ƒe akɔnta."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Bu xexlẽdzesi ɖeka mama ɖe xexlẽdzesi evelia me ƒe akɔnta."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Bu xexlẽdzesi ɖeka ɖeɖe le evelia me ƒe akɔnta."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Bu xexlẽdzesi gbãtɔ teƒe evelia ƒe akɔnta."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Na be xexlẽdzesi gbãtɔ nadzi eɖokui ɖe edzi zigbɔzi xexlẽdzesi evelia."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "woate ŋu amae ɖe"; -Blockly.Msg["MATH_IS_EVEN"] = "enye eve ƒomevi"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "enye xexlẽme megbeyitɔ"; -Blockly.Msg["MATH_IS_ODD"] = "enye etɔ̃ ƒomevi"; -Blockly.Msg["MATH_IS_POSITIVE"] = "enye xexlẽme ŋgɔgbeyitɔ"; -Blockly.Msg["MATH_IS_PRIME"] = " enye xexlẽme blibo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "enye blibo"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ee.wikipedia.org/wiki/Xexlẽdzesi"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Xexlẽdzesi aɖe"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "gãtɔ le nuwo dome"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "suetɔ le wo dome"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Neʋu xexlẽdzesi gãtɔ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Neʋu suetɔ le nuwo dome."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/dzidziɖedzi_eɖokui zigbɔzi eve"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "xexlẽ blibo"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "eƒe teƒe eve"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Nena xexlẽdzesi aɖe nanye xexlẽ blibo."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Nebu e-teƒe-e zigbɔzi xexlẽdzesia."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Xexlẽdzesia nedzi ɖe edzi eɖokui zigbzi e."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Nebu zigbɔzi neni 10-teƒe-10 awɔ xexlẽdzesia."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Nena xexlẽdzesi aɖe nanye xexlẽdzesi madenanekeo."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = " Nebu ewo-teƒe-ewo zigbɔzi xexlẽdzesia."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Xexlẽdzesia nedzi ɖe edzi teƒe eɖokui"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Nebu dzogɔe le digri me (menye radiã o)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Wɔ amadede teaŋutrɔna..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Wɔ xexlẽdzesi teaŋutrɔna..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Wɔ nya teaŋutrɔna..."; -Blockly.Msg["NEW_VARIABLE"] = "Wɔ teaŋutrɔna..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nuŋlɔdzesi tɔtrɔa yeye ƒe ŋkɔ:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Teaŋutrɔna ƒomevi yeye:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "kple:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "kple:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Trɔ Wɔe"; -Blockly.Msg["REMOVE_COMMENT"] = "Ɖe Numeɖeɖea Ɖa"; -Blockly.Msg["RENAME_VARIABLE"] = "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa '%1' yi:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Egbe"; -Blockly.Msg["UNDO"] = "Gbugbɔe"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "nu"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Teaŋutrɔna si ŋkɔe nye '%1' li xoxo."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Teaŋutrɔna '%1' li xoxo eye wotsɔ ŋkɔ sia xoxo na bubu si nye: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ŋlɔ Numeɖeɖe"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Mate ŋu atutu teaŋutrɔna '%1' o elabe ewɔ akpa aɖe le teaŋutrɔna '%2' me."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Trɔ nuŋlɔdzesiawo:"; +Blockly.Msg["CLEAN_UP"] = "Tutu Nuawo"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Hatsotsoawo Me Nuwo Nebu"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Hatsotso Me Nuwo Nebu"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "amedede 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "amadede 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "agbɔsɔsɔ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "tsaka"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Tsaka amadede eve kple agbɔsɔsɔ si nye (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ee.wikipedia.org/wiki/Amadede"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Tia amadede ɖeka le amadedetiaƒea."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "amadede aɖe ko"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tia amadede aɖe ko."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blɔ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "gbemumu"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "dzĩ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "de amae kple"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "tsaka"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Nedo le wɔtiaɖenua me"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "neyi edzi kple wɔtiaɖenua si kplɔe ɖo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Nedo le wɔtiaɖenua si me wòlea me."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Neto wɔtiaɖenu sia susɔea ta wòayi bubu dzi."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Nuxlɔ̃ame: Wɔtiaɖenu me ko woate ŋu azã ƒuƒoƒo sia le."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "nu sia nu natso %2 me ayi %1 me"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Tia teaŋutrɔna '%1' na nuawo dometɔ ɖe sia ɖe si li, eye nàŋlɔ gbedeasi aɖe."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Xlẽ %1 tso %2 yi %3 to %4 dzi"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Xexlẽdzesi tɔtrɔ '%1' nenye xexlẽdzesi si dze egɔme kple esiwo kplɔe ɖo va se ɖe mamlɛtɔ dzi, nebu dometsotso si wofia kple nyatakaka suetɔ siwo wofia asii."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tsɔ biabia aɖe kpe ne ƒuƒoƒo la."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tsɔ lé wo katã ƒe ne ƒe ƒuƒoƒo kpe biabia mamlɛa."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tsɔ kpee, ɖee le eme alo gbugbɔ akpawo ɖo nàtsɔ asi le ne ƒe ƒuƒoƒoa ŋu."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ke boŋ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "Ke boŋ ne"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "Ne"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ne asime aɖe le eme la, ke taɖodzinya aɖewo neva eme."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ne asime aɖe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ne menye nenem o la, ke taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ne asime gbãtɔe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Gake ne asime eveliae le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia boŋ neva eme."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ne asime gbãtɔ le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ke ne taɖodzinyawo ƒe ƒuƒoƒo evelia boŋue le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme. Ne taɖodzinya aɖeke mele eme o la,taɖodzinyawo ƒe ƒuƒoƒo mamlɛtɔ neva eme."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ee.wikipedia.org/wiki/Na_nogo"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "wɔ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Wɔe zi %1"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Gbugbɔ biabia aɖewo zi geɖe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "gbugbɔ wɔe va se ɖe"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "gbugbɔ wɔe ne"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Ne nyatakaka dea, ke wɔ biabia aɖewo."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Ne nyatakaka dea, ke wɔ biabia aɖewo."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Èdi be netutu nu %1 katã?"; +Blockly.Msg["DELETE_BLOCK"] = "Tutu Hatsotsoa"; +Blockly.Msg["DELETE_VARIABLE"] = "Tutu teaŋutrɔna '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Netutu %1 ŋkɔ si nètsɔ na teaŋutrɔna '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Tutu Hatsotso %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Natasii"; +Blockly.Msg["DIALOG_OK"] = "Yoo"; +Blockly.Msg["DISABLE_BLOCK"] = "Tsi Hatsotsoa"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Gbugbɔe Wɔ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kɔpi Numeɖeɖea"; +Blockly.Msg["ENABLE_BLOCK"] = "Si Hatsotsoa"; +Blockly.Msg["EXPAND_ALL"] = "Hatsotsoawo Me Nuwo Nedze"; +Blockly.Msg["EXPAND_BLOCK"] = "Hatsotsoa Me Nuwo Nedze"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Gotakpeɖeŋunuwo"; +Blockly.Msg["HELP"] = "Kpekpeɖeŋu"; +Blockly.Msg["INLINE_INPUTS"] = "Interdzikpeɖeŋuwo"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "gbãtɔ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# tso nuwuwu"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "mamlɛtɔ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ɖe sia ɖe ko"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ɖee ɖa"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Aʋu nu gbãtɔ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Aʋu nua le afi si wòle le nuwo dome."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Aʋu nu mamlɛtɔ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Aʋu nu ɖe sia ɖe aɖe ko."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Eɖea nu gbãtɔ ɖa eye eya kee gaʋua nu gbãtɔ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Aɖe nua ɖa eye wòaʋu nua le afi si wòle le nuawo dome."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Eɖea nu mamlɛtɔ ɖa eye eya kee gaʋua nu mamlɛtɔ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "yi # tso nuwuwu"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "yi #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "yi mamlɛtɔ"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 nye nu mamlɛtɔ."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 nye nu gbãtɔ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 le ƒuƒlu"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "dzi yim"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ɖiɖim"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "mademadea"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Nefia dedia alo mademadea."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "dedia"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Masɔmasɔ_(akɔntabubu)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo sɔ kple wo nɔewo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia alo sɔ kplii."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o alo sɔ kplii."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo mesɔ kple wo nɔewo o."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "menye %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ŋuɖoɖoa nenye nyateƒe ne nudemea menye nyateƒe o. Ŋuɖoɖoa nenye aʋatso ne nudemea nye nyateƒe."; +Blockly.Msg["LOGIC_NULL"] = "ɖeke o"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Mekpɔ ɖeke o."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "eye"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "alo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo nye nyateƒe."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ŋuɖoɖoa nenye nyateƒe ne nudeme ɖeka teti nye nyateƒe."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "dodokpɔ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "nenye dedietɔ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "nenye nyuitɔ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kpɔ nu si dze le \"dodokpɔ\" me. Ne dediae dze la, tia \"ne dedia\"; ke ne manyomanyotɔe la, tia \"ne mademadea.\""; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ee.wikipedia.org/wiki/Xexlẽdzesibubu"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Bu xexlẽdzesi evea ƒoƒo ƒu ƒe akɔnta."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Bu xexlẽdzesi ɖeka mama ɖe xexlẽdzesi evelia me ƒe akɔnta."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Bu xexlẽdzesi ɖeka ɖeɖe le evelia me ƒe akɔnta."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Bu xexlẽdzesi gbãtɔ teƒe evelia ƒe akɔnta."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Na be xexlẽdzesi gbãtɔ nadzi eɖokui ɖe edzi zigbɔzi xexlẽdzesi evelia."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "woate ŋu amae ɖe"; +Blockly.Msg["MATH_IS_EVEN"] = "enye eve ƒomevi"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "enye xexlẽme megbeyitɔ"; +Blockly.Msg["MATH_IS_ODD"] = "enye etɔ̃ ƒomevi"; +Blockly.Msg["MATH_IS_POSITIVE"] = "enye xexlẽme ŋgɔgbeyitɔ"; +Blockly.Msg["MATH_IS_PRIME"] = " enye xexlẽme blibo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "enye blibo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ee.wikipedia.org/wiki/Xexlẽdzesi"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Xexlẽdzesi aɖe"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "gãtɔ le nuwo dome"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "suetɔ le wo dome"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Neʋu xexlẽdzesi gãtɔ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Neʋu suetɔ le nuwo dome."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/dzidziɖedzi_eɖokui zigbɔzi eve"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "xexlẽ blibo"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "eƒe teƒe eve"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Nena xexlẽdzesi aɖe nanye xexlẽ blibo."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Nebu e-teƒe-e zigbɔzi xexlẽdzesia."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Xexlẽdzesia nedzi ɖe edzi eɖokui zigbzi e."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Nebu zigbɔzi neni 10-teƒe-10 awɔ xexlẽdzesia."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Nena xexlẽdzesi aɖe nanye xexlẽdzesi madenanekeo."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = " Nebu ewo-teƒe-ewo zigbɔzi xexlẽdzesia."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Xexlẽdzesia nedzi ɖe edzi teƒe eɖokui"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Nebu dzogɔe le digri me (menye radiã o)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Wɔ amadede teaŋutrɔna..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Wɔ xexlẽdzesi teaŋutrɔna..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Wɔ nya teaŋutrɔna..."; +Blockly.Msg["NEW_VARIABLE"] = "Wɔ teaŋutrɔna..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nuŋlɔdzesi tɔtrɔa yeye ƒe ŋkɔ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Teaŋutrɔna ƒomevi yeye:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "kple:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "kple:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Trɔ Wɔe"; +Blockly.Msg["REMOVE_COMMENT"] = "Ɖe Numeɖeɖea Ɖa"; +Blockly.Msg["RENAME_VARIABLE"] = "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa '%1' yi:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Egbe"; +Blockly.Msg["UNDO"] = "Gbugbɔe"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "nu"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Teaŋutrɔna si ŋkɔe nye '%1' li xoxo."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Teaŋutrɔna '%1' li xoxo eye wotsɔ ŋkɔ sia xoxo na bubu si nye: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/el.js b/msg/js/el.js index 6c6ff0ab34f..083e9bbc7da 100644 --- a/msg/js/el.js +++ b/msg/js/el.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Προσθήκη σχολίου"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Δεν μπορώ να διαγράψω την μεταβλητή '%1' διότι είναι μέρος του ορισμού της λειτουργίας '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Άλλαξε την τιμή:"; -Blockly.Msg["CLEAN_UP"] = "Ταξινομείστε τα Μπλοκ"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Υπάρχουν προειδοποιήσεις για συμπτυγμένα μπλοκ."; -Blockly.Msg["COLLAPSE_ALL"] = "Σύμπτυξε Όλα Τα Μπλοκ"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Σύμπτυξε Το Μπλοκ"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "χρώμα 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "χρώμα 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "αναλογία"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "μείγμα"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Συνδυάζει δύο χρώματα μαζί με μια δεδομένη αναλογία (0.0 - 1,0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Επιτρέπει επιλογή χρώματος από την παλέτα."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "τυχαίο χρώμα"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Επιλέγει χρώμα τυχαία."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "μπλε"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "πράσινο"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "κόκκινο"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "χρώμα με"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Δημιουργήστε ένα χρώμα με την καθορισμένη ποσότητα κόκκινου, πράσινου και μπλε. Όλες οι τιμές πρέπει να είναι μεταξύ 0 και 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "φεύγει από το μπλοκ επαναλήψεως"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "συνέχισε με την επόμενη επανάληψη του μπλοκ επαναλήψεως"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ξεφεύγει (βγαίνει έξω) από την επανάληψη."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Παραλείπει το υπόλοιπο τμήμα αυτού του μπλοκ επαναλήψεως, και συνεχίζει με την επόμενη επανάληψη."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο μέσα σε μια επανάληψη."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "για κάθε στοιχείο %1 στη λίστα %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Για κάθε στοιχείο σε μια λίστα, ορίζει τη μεταβλητή «%1» στο στοιχείο και, στη συνέχεια, εκτελεί κάποιες εντολές."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; -Blockly.Msg["CONTROLS_FOR_TITLE"] = "μέτρησε με %1 από το %2 έως το %3 ανά %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Η μεταβλητή «%1» παίρνει τιμές ξεκινώντας από τον αριθμό έναρξης μέχρι τον αριθμό τέλους αυξάνοντας κάθε φορά με το καθορισμένο βήμα και εκτελώντας το καθορισμένο μπλοκ."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Πρόσθετει μια κατάσταση/συνθήκη στο μπλοκ «εάν»."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Προσθέτει μια τελική κατάσταση/συνθήκη, που πιάνει όλες τις άλλες περιπτώσεις, στο μπλοκ «εάν»."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ «εάν»."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "αλλιώς"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "εναλλακτικά εάν"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "εάν"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Αν μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Αν μια τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, εκτελεί το δεύτερο τμήμα εντολών."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο μπλοκ εντολών."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο τμήμα εντολών. Αν καμία από τις τιμές δεν είναι αληθής, εκτελεί το τελευταίο τμήμα εντολών."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "κάνε"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "επανάλαβε %1 φορές"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Εκτελεί κάποιες εντολές αρκετές φορές."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "επανάλαβε μέχρι"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "επανάλαβε ενώ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Εφόσον μια τιμή είναι ψευδής, τότε εκτελεί κάποιες εντολές."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Εφόσον μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Να διαγραφούν όλα τα %1 μπλοκ;"; -Blockly.Msg["DELETE_BLOCK"] = "Διαγραφή μπλοκ"; -Blockly.Msg["DELETE_VARIABLE"] = "Διαγράψτε την μεταβλητή '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Θέλετε να διαγράψετε το %1 που χρησιμοποιείτε από την μεταβλητή '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Διαγραφή %1 μπλοκ"; -Blockly.Msg["DIALOG_CANCEL"] = "Ακύρωση"; -Blockly.Msg["DIALOG_OK"] = "Εντάξει"; -Blockly.Msg["DISABLE_BLOCK"] = "Απενεργοποίησε Το Μπλοκ"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Διπλότυπο"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Αντιγραφή σχόλιου"; -Blockly.Msg["ENABLE_BLOCK"] = "Ενεργοποίησε Το Μπλοκ"; -Blockly.Msg["EXPAND_ALL"] = "Επέκτεινε Όλα Τα Μπλοκ"; -Blockly.Msg["EXPAND_BLOCK"] = "Επέκτεινε Το Μπλοκ"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Εξωτερικές προσθήκες"; -Blockly.Msg["HELP"] = "Βοήθεια"; -Blockly.Msg["INLINE_INPUTS"] = "Εσωτερικές προσθήκες"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "δημιούργησε κενή λίστα"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Επιστρέφει μια λίστα, με μήκος 0, η οποία δεν περιέχει εγγραφές δεδομένων"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "λίστα"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ λίστας."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "δημιούργησε λίστα με"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Προσθέτει αντικείμενο στη λίστα."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Δημιουργεί λίστα με οποιονδήποτε αριθμό αντικειμένων."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "πρώτο"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# από το τέλος"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "πάρε"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "πάρε και αφαίρεσε"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "τελευταίο"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "τυχαίο"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "αφαίρεσε"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Επιστρέφει το πρώτο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Επιστρέφει το τελευταίο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Καταργεί και επιστρέφει το πρώτο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Καταργεί και επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Καταργεί και επιστρέφει το τελευταίο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Καταργεί και επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Καταργεί το πρώτο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Καταργεί το στοιχείο στην καθορισμένη θέση σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Καταργεί το τελευταίο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Καταργεί ένα τυχαίο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "έως # από το τέλος"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "έως #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "έως το τελευταίο"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "Blockly"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "πάρε υπολίστα από την αρχή"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "πάρε υπολίστα από # από το τέλος"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "πάρε υπολίστα από #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Δημιουργεί ένα αντίγραφο του καθορισμένου τμήματος μιας λίστας."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Το %1 είναι το τελευταίο στοιχείο."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Το %1 είναι το πρώτο στοιχείο."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "βρες την πρώτη εμφάνιση του στοιχείου"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "Blockly"; -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "βρες την τελευταία εμφάνιση του στοιχείου"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του στοιχείου στη λίστα. Επιστρέφει τιμή %1, αν το στοιχείο δεν βρεθεί."; -Blockly.Msg["LISTS_INLIST"] = "στη λίστα"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "το %1 είναι κενό"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Επιστρέφει αληθής αν η λίστα είναι κενή."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "Blockly"; -Blockly.Msg["LISTS_LENGTH_TITLE"] = "το μήκος του %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Επιστρέφει το μήκος μιας λίστας."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "Blockly"; -Blockly.Msg["LISTS_REPEAT_TITLE"] = "δημιούργησε λίστα με το στοιχείο %1 να επαναλαμβάνεται %2 φορές"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Δημιουργεί μια λίστα που αποτελείται από την δεδομένη τιμή που επαναλαμβάνεται για συγκεκριμένο αριθμό επαναλήψεων."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "ανάκληση %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Α"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "σε"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "είσαγε στο"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "όρισε"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Εισάγει το στοιχείο στην αρχή μιας λίστας."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Εισάγει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Αναθέτει το στοιχείο στο τέλος μιας λίστας."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Εισάγει το στοιχείο τυχαία σε μια λίστα."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ορίζει το πρώτο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ορίζει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ορίζει το τελευταίο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ορίζει ένα τυχαίο στοιχείο σε μια λίστα."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "Αύξουσα"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "Φθίνουσα"; -Blockly.Msg["LISTS_SORT_TITLE"] = "επιλογή %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Επιλέξετε ένα αντίγραφο της λίστας."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "αλφαβητικά, αγνοήστε το στοιχείο"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "αριθμητικό"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Αλφαβητικά"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "κάνετε λίστα από το κείμενο"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "κάνετε κείμενο από τη λίστα"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ενώστε μια λίστα κειμένων σε ένα κείμενο, που χωρίζονται από ένα διαχωριστικό."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Διαίρεση του κειμένου σε μια λίστα κειμένων, με σπάσιμο σε κάθε διαχωριστικό."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "με διαχωριστικό"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ψευδής"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Επιστρέφει είτε αληθής είτε ψευδής."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "αληθής"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι ίσες μεταξύ τους."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μεγαλύτερη από τη δεύτερη είσοδο."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη ή ίση με τη δεύτερη είσοδο."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από τη δεύτερη είσοδο."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από ή ίση με τη δεύτερη είσοδο."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Επιστρέφει αληθής αν και οι δύο είσοδοι δεν είναι ίσες μεταξύ τους."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "όχι %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Επιστρέφει αληθής αν η είσοδος είναι ψευδής. Επιστρέφει ψευδής αν η είσοδος είναι αληθής."; -Blockly.Msg["LOGIC_NULL"] = "κενό"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Επιστρέφει κενό."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "και"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; -Blockly.Msg["LOGIC_OPERATION_OR"] = "ή"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι αληθής."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Επιστρέφει αληθής αν τουλάχιστον μια από τις εισόδους είναι αληθής."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "έλεγχος"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "εάν είναι ψευδής"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "εάν είναι αληθής"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Ελέγχει την κατάσταση/συνθήκη στον «έλεγχο». Αν η κατάσταση/συνθήκη είναι αληθής, επιστρέφει την τιμή «εάν αληθής», διαφορετικά επιστρέφει την τιμή «εάν ψευδής»."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CE%B7%CF%84%CE%B9%CE%BA%CE%AE"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Επιστρέφει το άθροισμα των δύο αριθμών."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Επιστρέφει το πηλίκο των δύο αριθμών."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Επιστρέφει τη διαφορά των δύο αριθμών."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Επιστρέφει το γινόμενο των δύο αριθμών."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Επιστρέφει τον πρώτο αριθμό υψωμένο στη δύναμη του δεύτερου αριθμού."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 από X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Επιστρέφει την διαφορά τόξου των σημείων (X, Y) σε μοίρες από -180 σε 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A0%CF%81%CF%8C%CF%83%CE%B8%CE%B5%CF%83%CE%B7"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "άλλαξε %1 αυξάνοντας κατά %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Προσθέτει έναν αριθμό στη μεταβλητή «%1»."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Επιστρέφει μία από τις κοινές σταθερές: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...), ή ∞ (άπειρο)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "περιόρισε %1 χαμηλή %2 υψηλή %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Περιορίζει έναν αριθμό μεταξύ των προβλεπόμενων ορίων (χωρίς αποκλεισμούς)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "είναι διαιρετός από το"; -Blockly.Msg["MATH_IS_EVEN"] = "είναι άρτιος"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "είναι αρνητικός"; -Blockly.Msg["MATH_IS_ODD"] = "είναι περιττός"; -Blockly.Msg["MATH_IS_POSITIVE"] = "είναι θετικός"; -Blockly.Msg["MATH_IS_PRIME"] = "είναι πρώτος"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Ελέγχει αν ένας αριθμός είναι άρτιος, περιττός, πρώτος, ακέραιος, θετικός, αρνητικός, ή αν είναι διαιρετός από έναν ορισμένο αριθμό. Επιστρέφει αληθής ή ψευδής."; -Blockly.Msg["MATH_IS_WHOLE"] = "είναι ακέραιος"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "υπόλοιπο της %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Επιστρέφει το υπόλοιπο της διαίρεσης των δύο αριθμών."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ένας αριθμός."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "μέσος όρος λίστας"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "μεγαλύτερος λίστας"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "διάμεσος λίστας"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "μικρότερος λίστας"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "μορφές λίστας"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "τυχαίο στοιχείο λίστας"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "τυπική απόκλιση λίστας"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "άθροισμα λίστας"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Επιστρέφει τον αριθμητικό μέσο όρο από τις αριθμητικές τιμές στη λίστα."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Επιστρέφει τον μεγαλύτερο αριθμό στη λίστα."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Επιστρέφει τον διάμεσο της λίστας."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Επιστρέφει τον μικρότερο αριθμό στη λίστα."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Επιστρέφει μια λίστα με τα πιο κοινά στοιχεία στη λίστα."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Επιστρέφει ένα τυχαίο στοιχείο από τη λίστα."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Επιστρέφει την τυπική απόκλιση της λίστας."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Επιστρέφει το άθροισμα όλων των αριθμών στη λίστα."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^ ύψωση σε δύναμη"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%93%CE%B5%CE%BD%CE%BD%CE%AE%CF%84%CF%81%CE%B9%CE%B1_%CE%A4%CF%85%CF%87%CE%B1%CE%AF%CF%89%CE%BD_%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8E%CE%BD"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "τυχαίο κλάσμα"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Επιστρέψει ένα τυχαία κλάσμα μεταξύ 0,0 (κλειστό) και 1,0 (ανοικτό)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "τυχαίος ακέραιος από το %1 έως το %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Επιστρέφει έναν τυχαίο ακέραιο αριθμό μεταξύ δύο συγκεκριμένων ορίων (εντός - συμπεριλαμβανομένων και των ακραίων τιμών)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "στρογγυλοποίησε"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "στρογγυλοποίησε προς τα κάτω"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "στρογγυλοποίησε προς τα πάνω"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Στρογγυλοποιεί έναν αριθμό προς τα πάνω ή προς τα κάτω."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A4%CE%B5%CF%84%CF%81%CE%B1%CE%B3%CF%89%CE%BD%CE%B9%CE%BA%CE%AE_%CF%81%CE%AF%CE%B6%CE%B1"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "απόλυτη"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "τετραγωνική ρίζα"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Επιστρέφει την απόλυτη τιμή ενός αριθμού."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Επιστρέφει το e υψωμένο στη δύναμη ενός αριθμού."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Επιστρέφει τον νεπέρειο λογάριθμο ενός αριθμού."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Επιστρέφει τον λογάριθμο με βάση το 10 ενός αριθμού."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Επιστρέφει την αρνητική ενός αριθμού."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Επιστρέφει το 10 υψωμένο στη δύναμη ενός αριθμού."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Επιστρέφει την τετραγωνική ρίζα ενός αριθμού."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "συν"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A4%CF%81%CE%B9%CE%B3%CF%89%CE%BD%CE%BF%CE%BC%CE%B5%CF%84%CF%81%CE%B9%CE%BA%CE%AE_%CF%83%CF%85%CE%BD%CE%AC%CF%81%CF%84%CE%B7%CF%83%CE%B7"; -Blockly.Msg["MATH_TRIG_SIN"] = "ημ"; -Blockly.Msg["MATH_TRIG_TAN"] = "εφ"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Επιστρέφει το τόξο συνημίτονου ενός αριθμού."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Επιστρέφει το τόξο ημίτονου ενός αριθμού."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Επιστρέφει το τόξο εφαπτομένης ενός αριθμού."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Επιστρέφει το συνημίτονο ενός βαθμού (όχι ακτινίου)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Επιστρέφει το ημίτονο ενός βαθμού (όχι ακτινίου)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Επιστρέφει την εφαπτομένη ενός βαθμού (όχι ακτινίου)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Δημιουργία μεταβλητής χρώματος..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Δημιουργία μεταβλητής αριθμού..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Δημιουργία μεταβλητή συμβολοσειράς..."; -Blockly.Msg["NEW_VARIABLE"] = "Δημιουργήστε μεταβλητή..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Νέο όνομα μεταβλητής:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Νέος τύπος μεταβλητής:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "να επιτρέπονται οι δηλώσεις"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "με:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1»."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1» και χρησιμοποίησε την έξοδό της."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "με:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Δημιούργησε «%1»"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Περιγράψετε αυτήν την ιδιότητα.."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "κάνε κάτι"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "στο"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Δημιουργεί μια συνάρτηση χωρίς έξοδο."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "επέστρεψε"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Δημιουργεί μια συνάρτηση με μια έξοδο."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Προειδοποίηση: Αυτή η συνάρτηση έχει διπλότυπες παραμέτρους."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Επισημάνετε τον ορισμό συνάρτησης"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Αν μια τιμή είναι αληθής, τότε επιστρέφει τη δεύτερη τιμή."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο στον ορισμό μιας συνάρτησης."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "όνομα εισόδου:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Πρόσθεσε μια είσοδος στη συνάρτηση"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "είσοδοι"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει εισόδους σε αυτήν τη λειτουργία"; -Blockly.Msg["REDO"] = "Ακύρωση αναίρεσης"; -Blockly.Msg["REMOVE_COMMENT"] = "Αφαίρεση σχολίου"; -Blockly.Msg["RENAME_VARIABLE"] = "Μετονόμασε τη μεταβλητή..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Μετονόμασε όλες τις μεταβλητές «%1» σε:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_APPEND_TITLE"] = "έως %1 ανάθεσε κείμενο %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Αναθέτει κείμενο στη μεταβλητή «%1»."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "σε πεζά"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "σε Λέξεις Με Πρώτα Κεφαλαία"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "σε ΚΕΦΑΛΑΙΑ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Επιστρέφει ένα αντίγραφο του κειμένου σε διαφορετική μορφή γραμμάτων."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "πάρε το πρώτο γράμμα"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "πάρε το γράμμα # από το τέλος"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "πάρε το γράμμα #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; -Blockly.Msg["TEXT_CHARAT_LAST"] = "πάρε το τελευταίο γράμμα"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "πάρε τυχαίο γράμμα"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "στο κείμενο %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Επιστρέφει το γράμμα στην καθορισμένη θέση."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "αριθμός %1 σε %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Μετρά πόσες φορές κάποιο κείμενο εμφανίζεται μέσα σε ένα άλλο κείμενο."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Προσθέτει ένα στοιχείο στο κείμενο."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ένωσε"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει τους τομείς για να αναδιαμορφώσει αυτό το μπλοκ κειμένου."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "μέχρι το # γράμμα από το τέλος"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "μέχρι το # γράμμα"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "μέχρι το τελευταίο γράμμα"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "στο κείμενο"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "πάρε τη δευτερεύουσα συμβολοσειρά από το πρώτο γράμμα"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα από το τέλος"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Επιστρέφει ένα συγκεκριμένο τμήμα του κειμένου."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "βρες την πρώτη εμφάνιση του κειμένου"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "βρες την τελευταία εμφάνιση του κειμένου"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "στο κείμενο %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του πρώτου κειμένου στο δεύτερο κείμενο. Επιστρέφει τιμή %1, αν δε βρει το κείμενο."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "το %1 είναι κενό"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Επιστρέφει αληθής αν το παρεχόμενο κείμενο είναι κενό."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "δημιούργησε κείμενο με"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Δημιουργεί ένα κομμάτι κειμένου ενώνοντας έναν απεριόριστο αριθμό αντικειμένων."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_LENGTH_TITLE"] = "το μήκος του %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Επιστρέφει το πλήθος των γραμμάτων (συμπεριλαμβανομένων και των κενών διαστημάτων) στο παρεχόμενο κείμενο."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; -Blockly.Msg["TEXT_PRINT_TITLE"] = "εκτύπωσε %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Εκτυπώνει το καθορισμένο κείμενο, αριθμό ή άλλη τιμή."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Δημιουργεί προτροπή για τον χρήστη για να δώσει ένα αριθμό."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Δημιουργεί προτροπή για το χρήστη για να δώσει κάποιο κείμενο."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "πρότρεψε με μήνυμα για να δοθεί αριθμός"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "πρότρεψε με μήνυμα για να δοθεί κείμενο"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "αντικαταστήσετε το %1 με %2 σε %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Αντικαταστήστε όλα τα ήδη υπάρχοντα στοιχεία μέρους του κειμένου με κάποιο άλλο κείμενο"; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "ανάκληση %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Αναγραμματισμός των χαρακτήρων του κειμένου"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A3%CF%85%CE%BC%CE%B2%CE%BF%CE%BB%CE%BF%CF%83%CE%B5%CE%B9%CF%81%CE%AC"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Ένα γράμμα, μια λέξη ή μια γραμμή κειμένου."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "περίκοψε τα κενά και από τις δυο πλευρές του"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "περίκοψε τα κενά από την αριστερή πλευρά του"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "περίκοψε τα κενά από την δεξιά πλευρά του"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Επιστρέφει ένα αντίγραφο του κειμένου με αφαιρεμένα τα κενά από το ένα ή και τα δύο άκρα."; -Blockly.Msg["TODAY"] = "Σήμερα"; -Blockly.Msg["UNDO"] = "Αναίρεση"; -Blockly.Msg["UNNAMED_KEY"] = "χωρίς όνομα"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "αντικείμενο"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Δημιούργησε «όρισε %1»"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Επιστρέφει την τιμή αυτής της μεταβλητής."; -Blockly.Msg["VARIABLES_SET"] = "ανάθεσε στην %1 το %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Δημιούργησε «πάρε %1»"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ορίζει αυτή τη μεταβλητή να είναι ίση με την είσοδο."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Η μεταβλητή με το όνομα '%1' υπάρχει ήδη."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Μια μεταβλητή με όνομα '%1' υπάρχει πάντα για έναν άλλο τύπο: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Χώρος εργασίας Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Πείτε κάτι..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Προσθήκη σχολίου"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Δεν μπορώ να διαγράψω την μεταβλητή '%1' διότι είναι μέρος του ορισμού της λειτουργίας '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Άλλαξε την τιμή:"; +Blockly.Msg["CLEAN_UP"] = "Ταξινομείστε τα Μπλοκ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Υπάρχουν προειδοποιήσεις για συμπτυγμένα μπλοκ."; +Blockly.Msg["COLLAPSE_ALL"] = "Σύμπτυξε Όλα Τα Μπλοκ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Σύμπτυξε Το Μπλοκ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "χρώμα 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "χρώμα 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "αναλογία"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "μείγμα"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Συνδυάζει δύο χρώματα μαζί με μια δεδομένη αναλογία (0.0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Επιτρέπει επιλογή χρώματος από την παλέτα."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "τυχαίο χρώμα"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Επιλέγει χρώμα τυχαία."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "μπλε"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "πράσινο"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "κόκκινο"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "χρώμα με"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Δημιουργήστε ένα χρώμα με την καθορισμένη ποσότητα κόκκινου, πράσινου και μπλε. Όλες οι τιμές πρέπει να είναι μεταξύ 0 και 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "φεύγει από το μπλοκ επαναλήψεως"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "συνέχισε με την επόμενη επανάληψη του μπλοκ επαναλήψεως"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ξεφεύγει (βγαίνει έξω) από την επανάληψη."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Παραλείπει το υπόλοιπο τμήμα αυτού του μπλοκ επαναλήψεως, και συνεχίζει με την επόμενη επανάληψη."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο μέσα σε μια επανάληψη."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "για κάθε στοιχείο %1 στη λίστα %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Για κάθε στοιχείο σε μια λίστα, ορίζει τη μεταβλητή «%1» στο στοιχείο και, στη συνέχεια, εκτελεί κάποιες εντολές."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "μέτρησε με %1 από το %2 έως το %3 ανά %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Η μεταβλητή «%1» παίρνει τιμές ξεκινώντας από τον αριθμό έναρξης μέχρι τον αριθμό τέλους αυξάνοντας κάθε φορά με το καθορισμένο βήμα και εκτελώντας το καθορισμένο μπλοκ."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Πρόσθετει μια κατάσταση/συνθήκη στο μπλοκ «εάν»."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Προσθέτει μια τελική κατάσταση/συνθήκη, που πιάνει όλες τις άλλες περιπτώσεις, στο μπλοκ «εάν»."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ «εάν»."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "αλλιώς"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "εναλλακτικά εάν"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "εάν"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Αν μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Αν μια τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, εκτελεί το δεύτερο τμήμα εντολών."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο μπλοκ εντολών."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο τμήμα εντολών. Αν καμία από τις τιμές δεν είναι αληθής, εκτελεί το τελευταίο τμήμα εντολών."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "κάνε"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "επανάλαβε %1 φορές"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Εκτελεί κάποιες εντολές αρκετές φορές."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "επανάλαβε μέχρι"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "επανάλαβε ενώ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Εφόσον μια τιμή είναι ψευδής, τότε εκτελεί κάποιες εντολές."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Εφόσον μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Να διαγραφούν όλα τα %1 μπλοκ;"; +Blockly.Msg["DELETE_BLOCK"] = "Διαγραφή μπλοκ"; +Blockly.Msg["DELETE_VARIABLE"] = "Διαγράψτε την μεταβλητή '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Θέλετε να διαγράψετε το %1 που χρησιμοποιείτε από την μεταβλητή '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Διαγραφή %1 μπλοκ"; +Blockly.Msg["DIALOG_CANCEL"] = "Ακύρωση"; +Blockly.Msg["DIALOG_OK"] = "Εντάξει"; +Blockly.Msg["DISABLE_BLOCK"] = "Απενεργοποίησε Το Μπλοκ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Διπλότυπο"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Αντιγραφή σχόλιου"; +Blockly.Msg["ENABLE_BLOCK"] = "Ενεργοποίησε Το Μπλοκ"; +Blockly.Msg["EXPAND_ALL"] = "Επέκτεινε Όλα Τα Μπλοκ"; +Blockly.Msg["EXPAND_BLOCK"] = "Επέκτεινε Το Μπλοκ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Εξωτερικές προσθήκες"; +Blockly.Msg["HELP"] = "Βοήθεια"; +Blockly.Msg["INLINE_INPUTS"] = "Εσωτερικές προσθήκες"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "δημιούργησε κενή λίστα"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Επιστρέφει μια λίστα, με μήκος 0, η οποία δεν περιέχει εγγραφές δεδομένων"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "λίστα"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ λίστας."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "δημιούργησε λίστα με"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Προσθέτει αντικείμενο στη λίστα."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Δημιουργεί λίστα με οποιονδήποτε αριθμό αντικειμένων."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "πρώτο"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# από το τέλος"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "πάρε"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "πάρε και αφαίρεσε"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "τελευταίο"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "τυχαίο"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "αφαίρεσε"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Επιστρέφει το πρώτο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Επιστρέφει το τελευταίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Καταργεί και επιστρέφει το πρώτο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Καταργεί και επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Καταργεί και επιστρέφει το τελευταίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Καταργεί και επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Καταργεί το πρώτο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Καταργεί το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Καταργεί το τελευταίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Καταργεί ένα τυχαίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "έως # από το τέλος"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "έως #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "έως το τελευταίο"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "Blockly"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "πάρε υπολίστα από την αρχή"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "πάρε υπολίστα από # από το τέλος"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "πάρε υπολίστα από #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Δημιουργεί ένα αντίγραφο του καθορισμένου τμήματος μιας λίστας."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Το %1 είναι το τελευταίο στοιχείο."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Το %1 είναι το πρώτο στοιχείο."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "βρες την πρώτη εμφάνιση του στοιχείου"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "Blockly"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "βρες την τελευταία εμφάνιση του στοιχείου"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του στοιχείου στη λίστα. Επιστρέφει τιμή %1, αν το στοιχείο δεν βρεθεί."; +Blockly.Msg["LISTS_INLIST"] = "στη λίστα"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "το %1 είναι κενό"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Επιστρέφει αληθής αν η λίστα είναι κενή."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "Blockly"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "το μήκος του %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Επιστρέφει το μήκος μιας λίστας."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "Blockly"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "δημιούργησε λίστα με το στοιχείο %1 να επαναλαμβάνεται %2 φορές"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Δημιουργεί μια λίστα που αποτελείται από την δεδομένη τιμή που επαναλαμβάνεται για συγκεκριμένο αριθμό επαναλήψεων."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "ανάκληση %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Α"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "σε"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "είσαγε στο"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "όρισε"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Εισάγει το στοιχείο στην αρχή μιας λίστας."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Εισάγει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Αναθέτει το στοιχείο στο τέλος μιας λίστας."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Εισάγει το στοιχείο τυχαία σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ορίζει το πρώτο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ορίζει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ορίζει το τελευταίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ορίζει ένα τυχαίο στοιχείο σε μια λίστα."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "Αύξουσα"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "Φθίνουσα"; +Blockly.Msg["LISTS_SORT_TITLE"] = "επιλογή %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Επιλέξετε ένα αντίγραφο της λίστας."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "αλφαβητικά, αγνοήστε το στοιχείο"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "αριθμητικό"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Αλφαβητικά"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "κάνετε λίστα από το κείμενο"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "κάνετε κείμενο από τη λίστα"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ενώστε μια λίστα κειμένων σε ένα κείμενο, που χωρίζονται από ένα διαχωριστικό."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Διαίρεση του κειμένου σε μια λίστα κειμένων, με σπάσιμο σε κάθε διαχωριστικό."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "με διαχωριστικό"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ψευδής"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Επιστρέφει είτε αληθής είτε ψευδής."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "αληθής"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι ίσες μεταξύ τους."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μεγαλύτερη από τη δεύτερη είσοδο."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη ή ίση με τη δεύτερη είσοδο."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από τη δεύτερη είσοδο."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από ή ίση με τη δεύτερη είσοδο."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Επιστρέφει αληθής αν και οι δύο είσοδοι δεν είναι ίσες μεταξύ τους."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "όχι %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Επιστρέφει αληθής αν η είσοδος είναι ψευδής. Επιστρέφει ψευδής αν η είσοδος είναι αληθής."; +Blockly.Msg["LOGIC_NULL"] = "κενό"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Επιστρέφει κενό."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "και"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "ή"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι αληθής."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Επιστρέφει αληθής αν τουλάχιστον μια από τις εισόδους είναι αληθής."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "έλεγχος"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "εάν είναι ψευδής"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "εάν είναι αληθής"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Ελέγχει την κατάσταση/συνθήκη στον «έλεγχο». Αν η κατάσταση/συνθήκη είναι αληθής, επιστρέφει την τιμή «εάν αληθής», διαφορετικά επιστρέφει την τιμή «εάν ψευδής»."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CE%B7%CF%84%CE%B9%CE%BA%CE%AE"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Επιστρέφει το άθροισμα των δύο αριθμών."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Επιστρέφει το πηλίκο των δύο αριθμών."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Επιστρέφει τη διαφορά των δύο αριθμών."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Επιστρέφει το γινόμενο των δύο αριθμών."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Επιστρέφει τον πρώτο αριθμό υψωμένο στη δύναμη του δεύτερου αριθμού."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 από X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Επιστρέφει την διαφορά τόξου των σημείων (X, Y) σε μοίρες από -180 σε 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A0%CF%81%CF%8C%CF%83%CE%B8%CE%B5%CF%83%CE%B7"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "άλλαξε %1 αυξάνοντας κατά %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Προσθέτει έναν αριθμό στη μεταβλητή «%1»."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Επιστρέφει μία από τις κοινές σταθερές: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...), ή ∞ (άπειρο)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "περιόρισε %1 χαμηλή %2 υψηλή %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Περιορίζει έναν αριθμό μεταξύ των προβλεπόμενων ορίων (χωρίς αποκλεισμούς)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "είναι διαιρετός από το"; +Blockly.Msg["MATH_IS_EVEN"] = "είναι άρτιος"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "είναι αρνητικός"; +Blockly.Msg["MATH_IS_ODD"] = "είναι περιττός"; +Blockly.Msg["MATH_IS_POSITIVE"] = "είναι θετικός"; +Blockly.Msg["MATH_IS_PRIME"] = "είναι πρώτος"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Ελέγχει αν ένας αριθμός είναι άρτιος, περιττός, πρώτος, ακέραιος, θετικός, αρνητικός, ή αν είναι διαιρετός από έναν ορισμένο αριθμό. Επιστρέφει αληθής ή ψευδής."; +Blockly.Msg["MATH_IS_WHOLE"] = "είναι ακέραιος"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "υπόλοιπο της %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Επιστρέφει το υπόλοιπο της διαίρεσης των δύο αριθμών."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ένας αριθμός."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "μέσος όρος λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "μεγαλύτερος λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "διάμεσος λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "μικρότερος λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "μορφές λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "τυχαίο στοιχείο λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "τυπική απόκλιση λίστας"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "άθροισμα λίστας"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Επιστρέφει τον αριθμητικό μέσο όρο από τις αριθμητικές τιμές στη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Επιστρέφει τον μεγαλύτερο αριθμό στη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Επιστρέφει τον διάμεσο της λίστας."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Επιστρέφει τον μικρότερο αριθμό στη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Επιστρέφει μια λίστα με τα πιο κοινά στοιχεία στη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Επιστρέφει ένα τυχαίο στοιχείο από τη λίστα."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Επιστρέφει την τυπική απόκλιση της λίστας."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Επιστρέφει το άθροισμα όλων των αριθμών στη λίστα."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^ ύψωση σε δύναμη"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%93%CE%B5%CE%BD%CE%BD%CE%AE%CF%84%CF%81%CE%B9%CE%B1_%CE%A4%CF%85%CF%87%CE%B1%CE%AF%CF%89%CE%BD_%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8E%CE%BD"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "τυχαίο κλάσμα"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Επιστρέψει ένα τυχαία κλάσμα μεταξύ 0,0 (κλειστό) και 1,0 (ανοικτό)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "τυχαίος ακέραιος από το %1 έως το %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Επιστρέφει έναν τυχαίο ακέραιο αριθμό μεταξύ δύο συγκεκριμένων ορίων (εντός - συμπεριλαμβανομένων και των ακραίων τιμών)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "στρογγυλοποίησε"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "στρογγυλοποίησε προς τα κάτω"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "στρογγυλοποίησε προς τα πάνω"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Στρογγυλοποιεί έναν αριθμό προς τα πάνω ή προς τα κάτω."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A4%CE%B5%CF%84%CF%81%CE%B1%CE%B3%CF%89%CE%BD%CE%B9%CE%BA%CE%AE_%CF%81%CE%AF%CE%B6%CE%B1"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "απόλυτη"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "τετραγωνική ρίζα"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Επιστρέφει την απόλυτη τιμή ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Επιστρέφει το e υψωμένο στη δύναμη ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Επιστρέφει τον νεπέρειο λογάριθμο ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Επιστρέφει τον λογάριθμο με βάση το 10 ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Επιστρέφει την αρνητική ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Επιστρέφει το 10 υψωμένο στη δύναμη ενός αριθμού."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Επιστρέφει την τετραγωνική ρίζα ενός αριθμού."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "συν"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A4%CF%81%CE%B9%CE%B3%CF%89%CE%BD%CE%BF%CE%BC%CE%B5%CF%84%CF%81%CE%B9%CE%BA%CE%AE_%CF%83%CF%85%CE%BD%CE%AC%CF%81%CF%84%CE%B7%CF%83%CE%B7"; +Blockly.Msg["MATH_TRIG_SIN"] = "ημ"; +Blockly.Msg["MATH_TRIG_TAN"] = "εφ"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Επιστρέφει το τόξο συνημίτονου ενός αριθμού."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Επιστρέφει το τόξο ημίτονου ενός αριθμού."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Επιστρέφει το τόξο εφαπτομένης ενός αριθμού."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Επιστρέφει το συνημίτονο ενός βαθμού (όχι ακτινίου)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Επιστρέφει το ημίτονο ενός βαθμού (όχι ακτινίου)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Επιστρέφει την εφαπτομένη ενός βαθμού (όχι ακτινίου)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Δημιουργία μεταβλητής χρώματος..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Δημιουργία μεταβλητής αριθμού..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Δημιουργία μεταβλητή συμβολοσειράς..."; +Blockly.Msg["NEW_VARIABLE"] = "Δημιουργήστε μεταβλητή..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Νέο όνομα μεταβλητής:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Νέος τύπος μεταβλητής:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "να επιτρέπονται οι δηλώσεις"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "με:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1»."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1» και χρησιμοποίησε την έξοδό της."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "με:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Δημιούργησε «%1»"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Περιγράψετε αυτήν την ιδιότητα.."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "κάνε κάτι"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "στο"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Δημιουργεί μια συνάρτηση χωρίς έξοδο."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "επέστρεψε"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Δημιουργεί μια συνάρτηση με μια έξοδο."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Προειδοποίηση: Αυτή η συνάρτηση έχει διπλότυπες παραμέτρους."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Επισημάνετε τον ορισμό συνάρτησης"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Αν μια τιμή είναι αληθής, τότε επιστρέφει τη δεύτερη τιμή."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο στον ορισμό μιας συνάρτησης."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "όνομα εισόδου:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Πρόσθεσε μια είσοδος στη συνάρτηση"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "είσοδοι"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει εισόδους σε αυτήν τη λειτουργία"; +Blockly.Msg["REDO"] = "Ακύρωση αναίρεσης"; +Blockly.Msg["REMOVE_COMMENT"] = "Αφαίρεση σχολίου"; +Blockly.Msg["RENAME_VARIABLE"] = "Μετονόμασε τη μεταβλητή..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Μετονόμασε όλες τις μεταβλητές «%1» σε:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "έως %1 ανάθεσε κείμενο %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Αναθέτει κείμενο στη μεταβλητή «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "σε πεζά"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "σε Λέξεις Με Πρώτα Κεφαλαία"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "σε ΚΕΦΑΛΑΙΑ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Επιστρέφει ένα αντίγραφο του κειμένου σε διαφορετική μορφή γραμμάτων."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "πάρε το πρώτο γράμμα"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "πάρε το γράμμα # από το τέλος"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "πάρε το γράμμα #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "πάρε το τελευταίο γράμμα"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "πάρε τυχαίο γράμμα"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "στο κείμενο %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Επιστρέφει το γράμμα στην καθορισμένη θέση."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "αριθμός %1 σε %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Μετρά πόσες φορές κάποιο κείμενο εμφανίζεται μέσα σε ένα άλλο κείμενο."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Προσθέτει ένα στοιχείο στο κείμενο."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ένωσε"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Προσθέτει, αφαιρεί ή αναδιατάσσει τους τομείς για να αναδιαμορφώσει αυτό το μπλοκ κειμένου."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "μέχρι το # γράμμα από το τέλος"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "μέχρι το # γράμμα"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "μέχρι το τελευταίο γράμμα"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "στο κείμενο"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "πάρε τη δευτερεύουσα συμβολοσειρά από το πρώτο γράμμα"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα από το τέλος"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Επιστρέφει ένα συγκεκριμένο τμήμα του κειμένου."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "βρες την πρώτη εμφάνιση του κειμένου"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "βρες την τελευταία εμφάνιση του κειμένου"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "στο κείμενο %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του πρώτου κειμένου στο δεύτερο κείμενο. Επιστρέφει τιμή %1, αν δε βρει το κείμενο."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "το %1 είναι κενό"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Επιστρέφει αληθής αν το παρεχόμενο κείμενο είναι κενό."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "δημιούργησε κείμενο με"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Δημιουργεί ένα κομμάτι κειμένου ενώνοντας έναν απεριόριστο αριθμό αντικειμένων."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "το μήκος του %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Επιστρέφει το πλήθος των γραμμάτων (συμπεριλαμβανομένων και των κενών διαστημάτων) στο παρεχόμενο κείμενο."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "εκτύπωσε %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Εκτυπώνει το καθορισμένο κείμενο, αριθμό ή άλλη τιμή."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Δημιουργεί προτροπή για τον χρήστη για να δώσει ένα αριθμό."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Δημιουργεί προτροπή για το χρήστη για να δώσει κάποιο κείμενο."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "πρότρεψε με μήνυμα για να δοθεί αριθμός"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "πρότρεψε με μήνυμα για να δοθεί κείμενο"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "αντικαταστήσετε το %1 με %2 σε %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Αντικαταστήστε όλα τα ήδη υπάρχοντα στοιχεία μέρους του κειμένου με κάποιο άλλο κείμενο"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "ανάκληση %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Αναγραμματισμός των χαρακτήρων του κειμένου"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://el.wikipedia.org/wiki/%CE%A3%CF%85%CE%BC%CE%B2%CE%BF%CE%BB%CE%BF%CF%83%CE%B5%CE%B9%CF%81%CE%AC"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Ένα γράμμα, μια λέξη ή μια γραμμή κειμένου."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "περίκοψε τα κενά και από τις δυο πλευρές του"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "περίκοψε τα κενά από την αριστερή πλευρά του"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "περίκοψε τα κενά από την δεξιά πλευρά του"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Επιστρέφει ένα αντίγραφο του κειμένου με αφαιρεμένα τα κενά από το ένα ή και τα δύο άκρα."; +Blockly.Msg["TODAY"] = "Σήμερα"; +Blockly.Msg["UNDO"] = "Αναίρεση"; +Blockly.Msg["UNNAMED_KEY"] = "χωρίς όνομα"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "αντικείμενο"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Δημιούργησε «όρισε %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Επιστρέφει την τιμή αυτής της μεταβλητής."; +Blockly.Msg["VARIABLES_SET"] = "ανάθεσε στην %1 το %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Δημιούργησε «πάρε %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ορίζει αυτή τη μεταβλητή να είναι ίση με την είσοδο."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Η μεταβλητή με το όνομα '%1' υπάρχει ήδη."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Μια μεταβλητή με όνομα '%1' υπάρχει πάντα για έναν άλλο τύπο: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Χώρος εργασίας Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Πείτε κάτι..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/en-gb.js b/msg/js/en-gb.js index 21c1b8ff860..e9dd7cc1922 100644 --- a/msg/js/en-gb.js +++ b/msg/js/en-gb.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Colour"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; -Blockly.Msg["HELP"] = "Help"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; -Blockly.Msg["MATH_IS_EVEN"] = "is even"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; -Blockly.Msg["MATH_IS_ODD"] = "is odd"; -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; -Blockly.Msg["TODAY"] = "Today"; -Blockly.Msg["UNDO"] = "Undo"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Colour"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; +Blockly.Msg["HELP"] = "Help"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; +Blockly.Msg["MATH_IS_EVEN"] = "is even"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; +Blockly.Msg["TODAY"] = "Today"; +Blockly.Msg["UNDO"] = "Undo"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/en.js b/msg/js/en.js index f6a0304ab4b..c632805ca0a 100644 --- a/msg/js/en.js +++ b/msg/js/en.js @@ -1,425 +1,438 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "red"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; -Blockly.Msg["HELP"] = "Help"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; -Blockly.Msg["LISTS_INLIST"] = "in list"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; -Blockly.Msg["MATH_IS_EVEN"] = "is even"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; -Blockly.Msg["MATH_IS_ODD"] = "is odd"; -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; -Blockly.Msg["REDO"] = "Redo"; -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; -Blockly.Msg["TODAY"] = "Today"; -Blockly.Msg["UNDO"] = "Undo"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; -Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "red"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; +Blockly.Msg["HELP"] = "Help"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; +Blockly.Msg["LISTS_INLIST"] = "in list"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; +Blockly.Msg["MATH_IS_EVEN"] = "is even"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; +Blockly.Msg["REDO"] = "Redo"; +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; +Blockly.Msg["TODAY"] = "Today"; +Blockly.Msg["UNDO"] = "Undo"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; + +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Chama um método da variável atual com retorno."; +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Chama um método da variável atual."; +Blockly.Msg["CALL_TEXT"] = "chamar"; +Blockly.Msg["RETURN_TEXT"] = "retornar"; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Block that contains the blocks related to the setup of the supervisor."; +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Block that contains the blocks of the setup of the program."; +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Block that contains the blocks of the execution of the program."; +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Setup"; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Supervisor Setup"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Run"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Method calls"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Main functions" \ No newline at end of file diff --git a/msg/js/eo.js b/msg/js/eo.js index 8cf1cc619b2..9a8b018a8f8 100644 --- a/msg/js/eo.js +++ b/msg/js/eo.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Aldoni komenton"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne povas forigi la variablon '%1' ĉar ĝi estas parto de la difino de la funkcio '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ŝangi valoron:"; -Blockly.Msg["CLEAN_UP"] = "Purigi blokojn"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Falditaj blokoj enhavas avertojn."; -Blockly.Msg["COLLAPSE_ALL"] = "Faldi blokojn"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Faldi blokon"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "koloro 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "koloro 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporcio"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "miksi"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Kunmiksas du kolorojn laŭ specifita proporcio (0,0 - 1,0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://eo.wikipedia.org/wiki/Koloro"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Elekti koloron el la paletro."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "hazarda koloro"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Elekti hazardan koloron."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blua"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verda"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ruĝa"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "kolorigi per"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kreas koloron kun specifita kvanto de ruĝo, verdo, kaj bluo. Ĉiuj valoroj devas esti inter 0 kaj 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "eliri el la ciklo"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "daŭrigi je la venonta ripeto de la ciklo"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Eliri el la enhava ciklo."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Pretersalti la ceteron de tiu ĉi ciklo kaj daŭrigi je la venonta ripeto."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Averto: tiu ĉi bloko uzeblas nur ene de ciklo."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "por ĉiu elemento %1 en la listo %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pri ĉiu elemento en listo, difinas la variablon '%1' al la elemento, kaj faras kelkajn ordonojn."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "kalkuli kun variablo %1 ekde %2 ĝis %3 per diferenco %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Varias la variablon '%1', ekde la komenca nombro ĝis la fina nombro, laŭ la specifita diferenco; dume rulas la specifitajn blokojn."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Aldoni kondiĉon al la bloko 'se'"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Aldoni 'aliokaze' kondiĉon al la 'se' bloko."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Aldoni, forigi aŭ reorganizi partojn por reagordi la 'se'-blokon."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "alie"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "alie se"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Plenumi ordonojn se la valoro estas vero."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Plenumi la unuan blokon de ordonoj se la valoro estas vero, se ne, la duan."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj. Se neniu el la du valoroj estas vero, do faras la lastan blokon de ordonoj."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://eo.wikipedia.org/wiki/Iteracio"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fari"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ripeti %1 fojojn"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Plenumas kelkajn ordonojn plurfoje."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ripeti ĝis"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ripeti dum"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Plenumi ordonojn dum valoro egalas malvero."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Plenumi ordonojn dum la valoro egalas veron."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ĉu forigi ĉiujn %1 blokojn?"; -Blockly.Msg["DELETE_BLOCK"] = "Forigi blokon"; -Blockly.Msg["DELETE_VARIABLE"] = "Forigi la variablon '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ĉu forigi %1 uzojn de la variablo '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Forigi %1 blokojn"; -Blockly.Msg["DIALOG_CANCEL"] = "Nuligi"; -Blockly.Msg["DIALOG_OK"] = "Bone"; -Blockly.Msg["DISABLE_BLOCK"] = "Malŝalti blokon"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duobligi"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duobligi Komenton"; -Blockly.Msg["ENABLE_BLOCK"] = "Ŝalti blokon"; -Blockly.Msg["EXPAND_ALL"] = "Malfaldi blokojn"; -Blockly.Msg["EXPAND_BLOCK"] = "Malfaldi blokon"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Eksteraj eniroj"; -Blockly.Msg["HELP"] = "Helpo"; -Blockly.Msg["INLINE_INPUTS"] = "Entekstaj eniroj"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "krei malplenan liston"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Liveri liston, de longo 0, sen datenaj rikordoj"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listo"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Aldoni, forigi aŭ ordigi partojn por reagordi la listan blokon."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "krei liston kun"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Aldoni elementon al la listo."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Krei liston kun ajna nombro de elementoj."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "unuan"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "#el la fino"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "akiri"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "akiri kaj forigi"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "lastan"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "hazardan"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "forigi"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "La unua elemento en la listo esto liverita."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Liveri la elementon ĉe la specifita pozicio en listo."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Liveri la lastan elementon en la listo."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Hazarda elemento en la listo estos liverita."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "La unua elemento en la listo estos liverita kaj forigita."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Liveri kaj forigi la elementon en la specifita pozicio de la listo."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Forigi kaj liveri la lastan elementon en listo."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Hazarda elemento en la listo estos liverita kaj forigita."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "La unua elemento en la listo estos forigita."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "La elemento en la specifita pozicio en la listo estos forigita."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "La lasta elemento en la listo estos forigita."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Hazarda elemento en la listo estos forigita."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ĝis elemento de inversa numero"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ĝis elemento de numero"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ĝis la lasta elemento"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "akiri subliston ekde la unua elemento"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "akiri subliston ekde elemento de inversa numero"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "akiri subliston ekde elemento de numero"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Kreas kopion de la specifita parto de listo."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 estas la lasta elemento."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 estas la unua elemento."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trovi la unuan aperon de elemento"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trovi la lastan aperon de elemento"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "La indekso de la unua/lasta apero de la elemento en la listo estos liverita. %1 estos liverita se la elemento ne estas trovita."; -Blockly.Msg["LISTS_INLIST"] = "en la listo"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 malplenas"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Liveri veron, se la listo malplenas."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "longo de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Liveri la longon de listo."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "krei liston kun elemento %1 ripetita %2 fojojn"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Listo kun la specifita nombro de elementoj, kiuj havos la donitan valoron, estos kreita."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inversigi liston %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inversigi kopion de listo."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kiel"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "enmeti je"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "difini"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Antaŭaldonas la elementon ĉe la komenco de listo."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Enigas la elementon ĉe specifita pozicio en listo."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Postaldonas la elementon ĉe la fino de listo."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Enigas la elementon hazarde en listo."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Difinas la unua elementon en listo."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Difinas la elementon ĉe la specifita pozicio en listo"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Difinas la lastan elementon en listo."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Difinas hazardan elementon en listo."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "kreskante"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "malkreskante"; -Blockly.Msg["LISTS_SORT_TITLE"] = "ordigi %1 %2 liston %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordigas kopion de listo."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabete, ignorante usklon"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "nombre"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabete"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fari liston el teksto"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fari tekston el listo"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Kunigas liston de tekstoj en unu tekston, kun apartigilo inter la elementoj."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Disdividas tekston en liston da tekstoj, laŭ apartigilo."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "kun apartigilo"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsa"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Liveri ĉu veron ĉu malveron."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "vera"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://eo.wikipedia.org/wiki/Neegala%C4%B5o_(pli_granda,_malpli_granda)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Liveri veron, se la du eniroj egalas."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Liveri veron, se la unua eniro estas pli granda ol la dua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vero estos liverita, se la unua eniro estas pli granda aŭ egala al la dua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Liveri veron, se la unua eniro estas pli malgranda ol la dua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vero estos liverita, se la unua eniro estas pli eta aŭ egala al la dua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Liveri veron, se la du eniroj ne egalas."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "maligi %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Liveri veron, se la eniro egalas malveron. Liveri malveron, se la eniro egalas veron."; -Blockly.Msg["LOGIC_NULL"] = "senvalora"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Liveras senvaloron."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "kaj"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "aŭ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Liveri veron, se la du eniroj egalas veron."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Liveri veron, se almenaŭ unu el la eniroj egalas veron."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "testi"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se estas malvero"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se estas vero"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontroli la kondiĉon en 'testo'. Se la kondiĉo egalas veron, liveri la valoron 'se estas vero', aliokaze liveri la valoron 'se estas malvero'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://eo.wikipedia.org/wiki/Aritmetiko"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Liveri la sumon de la du nombroj."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Liveri la kvocienton de la du nombroj."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Liveri la diferencon inter la du nombroj."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "La produto de la du numeroj estos liverita."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Livero la tian potencon de la unua nombro, kia la dua nombro estas"; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://eo.wikipedia.org/wiki/Inversa_trigonometria_funkcio#Duargumenta_varianto_de_tangentarko"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Liveras la arkotangenton de punkto (X, Y) en gradoj inter -180 kaj 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://eo.wikipedia.org/wiki/Kremento"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "krementi %1 per %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Aldoni nombron al variablo '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://eo.wikipedia.org/wiki/Matematika_konstanto"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Liveras unu el la ofte uzataj konstantoj: π (3,141…), e (2,718…), φ (1,618…), √2 (1,414…), √½ (0,707…), aŭ ∞ (malfinio)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limigi %1 inter %2 kaj %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "La nombro estos limigita tiel ke ĝi egalas la limojn aŭ troviĝas inter ili."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "estas dividebla de"; -Blockly.Msg["MATH_IS_EVEN"] = "estas para"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "estas negativa"; -Blockly.Msg["MATH_IS_ODD"] = "estas nepara"; -Blockly.Msg["MATH_IS_POSITIVE"] = "estas pozitiva"; -Blockly.Msg["MATH_IS_PRIME"] = "estas primo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Vero aŭ malvero estos liverita, depende de la rezulto de kontrolo, ĉu nombro estas para, nepara, pozitiva, negativa, aŭ dividebla de iu nombro."; -Blockly.Msg["MATH_IS_WHOLE"] = "estas entjero"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://eo.wikipedia.org/wiki/Resto"; -Blockly.Msg["MATH_MODULO_TITLE"] = "resto de %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Liveri la reston de la divido de la du nombroj."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://eo.wikipedia.org/wiki/Nombro"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Nombro."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "listmezumo"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "listmaksimumo"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediano de listo"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "listminimumo"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modoj de listo"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "hazarda elemento el la listo"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Norma devio de la listo"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sumo de listo"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Liveri la aritmetikan meznombron de la nombroj en la listo."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Liveri la plej grandan nombron en la listo."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Liveras la medianan nombron en la listo."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Liveri la plej malgrandan nombron en la listo."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Liveras liston de la plej ofta(j) elemento(j) en la listo."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Liveri hazardan elementon el la listo."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Liveri la norman devion de la listo."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Liveri la sumon de ĉiuj nombroj en la listo."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://eo.wikipedia.org/wiki/Hazardo"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "hazarda frakcio"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Liveras hazardan frakcion inter 0,0 (inkluzive) kaj 1,0 (ekskluzive)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "hazarda entjero inter %1 kaj %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Nombro estos hazarde liverita, tiel ke ĝi egalas la limojn aŭ troviĝas inter ili."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "rondigi"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rondigi malsupren"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Rondigi supren"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rondigi nombroj, supren aŭ malsupren."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://eo.wikipedia.org/wiki/Kvadrata_radiko"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluta"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadrata radiko"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Liveri la absolutan valoron de nombro."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Liveri potencon de e."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Liveri la naturan logaritmon de nombro."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "La dekbaza logaritmo de numero estos liverita."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "La negativigo de numero estos liverita."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Liveri tian potencon de 10, kia la eniro estas."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Liveri la kvadratan radikon de nombro."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://eo.wikipedia.org/wiki/Trigonometria_funkcio"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Liveras la arkokosinuson de nombro."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "La sinusarko de nombro estos liverita."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "La targentarko de nombro estos liverita."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Liveras la kosinuson de angulo en gradoj (ne radianoj)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Liveras la sinuson de angulo en gradoj (ne radianoj)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Liveras la tangenton de angulo en gradoj (ne radianoj)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Krei koloran variablon..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Krei nombran variablon..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Krei signoĉenan variablon..."; -Blockly.Msg["NEW_VARIABLE"] = "Nova variablo..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nova nomo de variablo:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo de nova variablo:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permesi ordonojn"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "kun:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://eo.wikipedia.org/wiki/Subprogramo"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ruli la uzanto-difinitan funkcion '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://eo.wikipedia.org/wiki/Subprogramo"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ruli la uzanto-difinitan funkcion '%1' kaj uzi ĝian eliron."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "kun:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Krei '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Priskribi ĉi tiun funkcion..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fari ion"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "por"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Krei funkcion sen eliro."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "liveri"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Krei funkcion kun unu eliro."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Averto: la funkcio havas du parametrojn kun la sama nomo."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Emfazi difinon de funkcio"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se valoro estas vero, do liveras duan valoron."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Averto: Ĉi tiu bloko estas uzebla nur en difino de funkcio."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nomo de enigo:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Aldoni eniron al la funkcio."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "eniroj"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Aldoni, forigi, aŭ reorganizi enirojn je ĉi tiu funkcio."; -Blockly.Msg["REDO"] = "Refari"; -Blockly.Msg["REMOVE_COMMENT"] = "Forigi komenton"; -Blockly.Msg["RENAME_VARIABLE"] = "Renomi variablon..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomi ĉiujn '%1' variablojn kiel:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "al %1 postaldoni tekston %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Postapendi iom da teksto al variablo '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "minuskligi"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Nomuskligi"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "MAJUSKLIGI"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Liveras kopion de la teksto je alia usklo."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "akiri unuan literon"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "akiri literon de inversa numero"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "akiri literon de numero"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "akiri lastan literon"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "akiri hazardan literon"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "en la teksto %1, %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Liveras literon ĉe specifita loko."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "kalkuli la okazojn de %1 en %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Kalkuli kiomfoje iu teksto okazas en iu alia teksto."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Aldoni eron al la teksto."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "kunigi"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Aldonu, forigu, aŭ reorganizu partojn por reagordi la tekstan blokon."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ĝis litero de inversa numero"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ĝis litero de numero"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ĝis lasta litero"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en la teksto"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "akiri subsignoĉenon ekde la unua litero"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "akiri subsignoĉenon ekde litero de inversa numero"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "akiri subsignoĉenon ekde litero de numero"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Liveri specifitan parto de la teksto."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trovi la unuan okazon de teksto"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trovi la lastan okazon de teksto"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en la teksto %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Liveras indekson de la unua/lasta okazo de la unua teksto en la dua teksto. Liveras %1 se la unua teksto ne okazas en la dua teksto."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 malplenas"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Liveras veron, se la provizita teksto estas malplena."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "krei tekston kun"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Krei pecon de teksto per kunigi ajnan nombron de eroj."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "longo de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Liveras la nombron de literoj (inkluzive de spacetoj) en la provizita teksto."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "presi %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Presi la specifitan tekston, nombron aŭ alian valoron."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Peti nombron al uzanto."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Peti tekston al uzanto."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "ricevi nombron per mesaĝo"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ricevi tekston per mesaĝo"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "anstataŭigi tekston %1 per %2 en %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Anstataŭigi ĉiujn okazojn de iu teksto en alia teksto."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inversigi tekston %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inversigi la ordon de la skribsignoj en la teksto."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://eo.wikipedia.org/wiki/Signoĉeno"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Litero, vorto, aŭ linio da teksto."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "forigi spacetojn for de ambaŭ finoj de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "forigi spacetojn for de maldekstra fino de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "forigi spacetojn for de dekstra fino de"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Liveras kopion de teksto, de kies fino(j) spacetoj foriĝis."; -Blockly.Msg["TODAY"] = "Hodiaŭ"; -Blockly.Msg["UNDO"] = "Malfari"; -Blockly.Msg["UNNAMED_KEY"] = "nenomita"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Krei blokon 'difini variablon %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Liveras la valoron de ĉi tiu variablo."; -Blockly.Msg["VARIABLES_SET"] = "difini %1 kiel %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Krei blokon 'akiri variablon %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Difinas ĉi tiun variablon kiel la eniron."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Jam ekzistas variablo kun la nomo '%1'."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Jam ekzistas variablo kun la nomo '%1' por alia tipo: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Laborspaco de Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Diru ion…"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Aldoni komenton"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne povas forigi la variablon '%1' ĉar ĝi estas parto de la difino de la funkcio '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ŝangi valoron:"; +Blockly.Msg["CLEAN_UP"] = "Purigi blokojn"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Falditaj blokoj enhavas avertojn."; +Blockly.Msg["COLLAPSE_ALL"] = "Faldi blokojn"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Faldi blokon"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "koloro 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "koloro 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporcio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "miksi"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Kunmiksas du kolorojn laŭ specifita proporcio (0,0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://eo.wikipedia.org/wiki/Koloro"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Elekti koloron el la paletro."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "hazarda koloro"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Elekti hazardan koloron."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blua"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verda"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruĝa"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "kolorigi per"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kreas koloron kun specifita kvanto de ruĝo, verdo, kaj bluo. Ĉiuj valoroj devas esti inter 0 kaj 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "eliri el la ciklo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "daŭrigi je la venonta ripeto de la ciklo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Eliri el la enhava ciklo."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Pretersalti la ceteron de tiu ĉi ciklo kaj daŭrigi je la venonta ripeto."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Averto: tiu ĉi bloko uzeblas nur ene de ciklo."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "por ĉiu elemento %1 en la listo %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pri ĉiu elemento en listo, difinas la variablon '%1' al la elemento, kaj faras kelkajn ordonojn."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "kalkuli kun variablo %1 ekde %2 ĝis %3 per diferenco %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Varias la variablon '%1', ekde la komenca nombro ĝis la fina nombro, laŭ la specifita diferenco; dume rulas la specifitajn blokojn."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Aldoni kondiĉon al la bloko 'se'"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Aldoni 'aliokaze' kondiĉon al la 'se' bloko."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Aldoni, forigi aŭ reorganizi partojn por reagordi la 'se'-blokon."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "alie"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "alie se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Plenumi ordonojn se la valoro estas vero."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Plenumi la unuan blokon de ordonoj se la valoro estas vero, se ne, la duan."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj. Se neniu el la du valoroj estas vero, do faras la lastan blokon de ordonoj."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://eo.wikipedia.org/wiki/Iteracio"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fari"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ripeti %1 fojojn"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Plenumas kelkajn ordonojn plurfoje."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ripeti ĝis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ripeti dum"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Plenumi ordonojn dum valoro egalas malvero."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Plenumi ordonojn dum la valoro egalas veron."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ĉu forigi ĉiujn %1 blokojn?"; +Blockly.Msg["DELETE_BLOCK"] = "Forigi blokon"; +Blockly.Msg["DELETE_VARIABLE"] = "Forigi la variablon '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ĉu forigi %1 uzojn de la variablo '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Forigi %1 blokojn"; +Blockly.Msg["DIALOG_CANCEL"] = "Nuligi"; +Blockly.Msg["DIALOG_OK"] = "Bone"; +Blockly.Msg["DISABLE_BLOCK"] = "Malŝalti blokon"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duobligi"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duobligi Komenton"; +Blockly.Msg["ENABLE_BLOCK"] = "Ŝalti blokon"; +Blockly.Msg["EXPAND_ALL"] = "Malfaldi blokojn"; +Blockly.Msg["EXPAND_BLOCK"] = "Malfaldi blokon"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Eksteraj eniroj"; +Blockly.Msg["HELP"] = "Helpo"; +Blockly.Msg["INLINE_INPUTS"] = "Entekstaj eniroj"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "krei malplenan liston"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Liveri liston, de longo 0, sen datenaj rikordoj"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listo"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Aldoni, forigi aŭ ordigi partojn por reagordi la listan blokon."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "krei liston kun"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Aldoni elementon al la listo."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Krei liston kun ajna nombro de elementoj."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "unuan"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "#el la fino"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "akiri"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "akiri kaj forigi"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "lastan"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "hazardan"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "forigi"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "La unua elemento en la listo esto liverita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Liveri la elementon ĉe la specifita pozicio en listo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Liveri la lastan elementon en la listo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Hazarda elemento en la listo estos liverita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "La unua elemento en la listo estos liverita kaj forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Liveri kaj forigi la elementon en la specifita pozicio de la listo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Forigi kaj liveri la lastan elementon en listo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Hazarda elemento en la listo estos liverita kaj forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "La unua elemento en la listo estos forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "La elemento en la specifita pozicio en la listo estos forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "La lasta elemento en la listo estos forigita."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Hazarda elemento en la listo estos forigita."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ĝis elemento de inversa numero"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ĝis elemento de numero"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ĝis la lasta elemento"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "akiri subliston ekde la unua elemento"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "akiri subliston ekde elemento de inversa numero"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "akiri subliston ekde elemento de numero"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Kreas kopion de la specifita parto de listo."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 estas la lasta elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 estas la unua elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trovi la unuan aperon de elemento"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trovi la lastan aperon de elemento"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "La indekso de la unua/lasta apero de la elemento en la listo estos liverita. %1 estos liverita se la elemento ne estas trovita."; +Blockly.Msg["LISTS_INLIST"] = "en la listo"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 malplenas"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Liveri veron, se la listo malplenas."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longo de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Liveri la longon de listo."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "krei liston kun elemento %1 ripetita %2 fojojn"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Listo kun la specifita nombro de elementoj, kiuj havos la donitan valoron, estos kreita."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inversigi liston %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inversigi kopion de listo."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kiel"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "enmeti je"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "difini"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Antaŭaldonas la elementon ĉe la komenco de listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Enigas la elementon ĉe specifita pozicio en listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Postaldonas la elementon ĉe la fino de listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Enigas la elementon hazarde en listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Difinas la unua elementon en listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Difinas la elementon ĉe la specifita pozicio en listo"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Difinas la lastan elementon en listo."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Difinas hazardan elementon en listo."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "kreskante"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "malkreskante"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordigi %1 %2 liston %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordigas kopion de listo."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabete, ignorante usklon"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "nombre"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabete"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fari liston el teksto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fari tekston el listo"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Kunigas liston de tekstoj en unu tekston, kun apartigilo inter la elementoj."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Disdividas tekston en liston da tekstoj, laŭ apartigilo."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "kun apartigilo"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsa"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Liveri ĉu veron ĉu malveron."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "vera"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://eo.wikipedia.org/wiki/Neegala%C4%B5o_(pli_granda,_malpli_granda)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Liveri veron, se la du eniroj egalas."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Liveri veron, se la unua eniro estas pli granda ol la dua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vero estos liverita, se la unua eniro estas pli granda aŭ egala al la dua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Liveri veron, se la unua eniro estas pli malgranda ol la dua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vero estos liverita, se la unua eniro estas pli eta aŭ egala al la dua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Liveri veron, se la du eniroj ne egalas."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "maligi %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Liveri veron, se la eniro egalas malveron. Liveri malveron, se la eniro egalas veron."; +Blockly.Msg["LOGIC_NULL"] = "senvalora"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Liveras senvaloron."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "kaj"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "aŭ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Liveri veron, se la du eniroj egalas veron."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Liveri veron, se almenaŭ unu el la eniroj egalas veron."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "testi"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se estas malvero"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se estas vero"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontroli la kondiĉon en 'testo'. Se la kondiĉo egalas veron, liveri la valoron 'se estas vero', aliokaze liveri la valoron 'se estas malvero'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://eo.wikipedia.org/wiki/Aritmetiko"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Liveri la sumon de la du nombroj."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Liveri la kvocienton de la du nombroj."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Liveri la diferencon inter la du nombroj."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "La produto de la du numeroj estos liverita."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Livero la tian potencon de la unua nombro, kia la dua nombro estas"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://eo.wikipedia.org/wiki/Inversa_trigonometria_funkcio#Duargumenta_varianto_de_tangentarko"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Liveras la arkotangenton de punkto (X, Y) en gradoj inter -180 kaj 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://eo.wikipedia.org/wiki/Kremento"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "krementi %1 per %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Aldoni nombron al variablo '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://eo.wikipedia.org/wiki/Matematika_konstanto"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Liveras unu el la ofte uzataj konstantoj: π (3,141…), e (2,718…), φ (1,618…), √2 (1,414…), √½ (0,707…), aŭ ∞ (malfinio)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limigi %1 inter %2 kaj %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "La nombro estos limigita tiel ke ĝi egalas la limojn aŭ troviĝas inter ili."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "estas dividebla de"; +Blockly.Msg["MATH_IS_EVEN"] = "estas para"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "estas negativa"; +Blockly.Msg["MATH_IS_ODD"] = "estas nepara"; +Blockly.Msg["MATH_IS_POSITIVE"] = "estas pozitiva"; +Blockly.Msg["MATH_IS_PRIME"] = "estas primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Vero aŭ malvero estos liverita, depende de la rezulto de kontrolo, ĉu nombro estas para, nepara, pozitiva, negativa, aŭ dividebla de iu nombro."; +Blockly.Msg["MATH_IS_WHOLE"] = "estas entjero"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://eo.wikipedia.org/wiki/Resto"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Liveri la reston de la divido de la du nombroj."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://eo.wikipedia.org/wiki/Nombro"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Nombro."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "listmezumo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "listmaksimumo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediano de listo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "listminimumo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modoj de listo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "hazarda elemento el la listo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Norma devio de la listo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sumo de listo"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Liveri la aritmetikan meznombron de la nombroj en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Liveri la plej grandan nombron en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Liveras la medianan nombron en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Liveri la plej malgrandan nombron en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Liveras liston de la plej ofta(j) elemento(j) en la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Liveri hazardan elementon el la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Liveri la norman devion de la listo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Liveri la sumon de ĉiuj nombroj en la listo."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://eo.wikipedia.org/wiki/Hazardo"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "hazarda frakcio"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Liveras hazardan frakcion inter 0,0 (inkluzive) kaj 1,0 (ekskluzive)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "hazarda entjero inter %1 kaj %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Nombro estos hazarde liverita, tiel ke ĝi egalas la limojn aŭ troviĝas inter ili."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "rondigi"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rondigi malsupren"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Rondigi supren"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rondigi nombroj, supren aŭ malsupren."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://eo.wikipedia.org/wiki/Kvadrata_radiko"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluta"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadrata radiko"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Liveri la absolutan valoron de nombro."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Liveri potencon de e."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Liveri la naturan logaritmon de nombro."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "La dekbaza logaritmo de numero estos liverita."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "La negativigo de numero estos liverita."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Liveri tian potencon de 10, kia la eniro estas."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Liveri la kvadratan radikon de nombro."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://eo.wikipedia.org/wiki/Trigonometria_funkcio"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Liveras la arkokosinuson de nombro."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "La sinusarko de nombro estos liverita."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "La targentarko de nombro estos liverita."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Liveras la kosinuson de angulo en gradoj (ne radianoj)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Liveras la sinuson de angulo en gradoj (ne radianoj)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Liveras la tangenton de angulo en gradoj (ne radianoj)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Krei koloran variablon..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Krei nombran variablon..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Krei signoĉenan variablon..."; +Blockly.Msg["NEW_VARIABLE"] = "Nova variablo..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nova nomo de variablo:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo de nova variablo:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permesi ordonojn"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "kun:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://eo.wikipedia.org/wiki/Subprogramo"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ruli la uzanto-difinitan funkcion '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://eo.wikipedia.org/wiki/Subprogramo"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ruli la uzanto-difinitan funkcion '%1' kaj uzi ĝian eliron."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "kun:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Krei '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Priskribi ĉi tiun funkcion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fari ion"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "por"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Krei funkcion sen eliro."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "liveri"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Krei funkcion kun unu eliro."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Averto: la funkcio havas du parametrojn kun la sama nomo."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Emfazi difinon de funkcio"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se valoro estas vero, do liveras duan valoron."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Averto: Ĉi tiu bloko estas uzebla nur en difino de funkcio."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nomo de enigo:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Aldoni eniron al la funkcio."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "eniroj"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Aldoni, forigi, aŭ reorganizi enirojn je ĉi tiu funkcio."; +Blockly.Msg["REDO"] = "Refari"; +Blockly.Msg["REMOVE_COMMENT"] = "Forigi komenton"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomi variablon..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomi ĉiujn '%1' variablojn kiel:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "al %1 postaldoni tekston %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Postapendi iom da teksto al variablo '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "minuskligi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Nomuskligi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "MAJUSKLIGI"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Liveras kopion de la teksto je alia usklo."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "akiri unuan literon"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "akiri literon de inversa numero"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "akiri literon de numero"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "akiri lastan literon"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "akiri hazardan literon"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "en la teksto %1, %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Liveras literon ĉe specifita loko."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "kalkuli la okazojn de %1 en %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Kalkuli kiomfoje iu teksto okazas en iu alia teksto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Aldoni eron al la teksto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "kunigi"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Aldonu, forigu, aŭ reorganizu partojn por reagordi la tekstan blokon."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ĝis litero de inversa numero"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ĝis litero de numero"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ĝis lasta litero"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en la teksto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "akiri subsignoĉenon ekde la unua litero"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "akiri subsignoĉenon ekde litero de inversa numero"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "akiri subsignoĉenon ekde litero de numero"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Liveri specifitan parto de la teksto."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trovi la unuan okazon de teksto"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trovi la lastan okazon de teksto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en la teksto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Liveras indekson de la unua/lasta okazo de la unua teksto en la dua teksto. Liveras %1 se la unua teksto ne okazas en la dua teksto."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 malplenas"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Liveras veron, se la provizita teksto estas malplena."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "krei tekston kun"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Krei pecon de teksto per kunigi ajnan nombron de eroj."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longo de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Liveras la nombron de literoj (inkluzive de spacetoj) en la provizita teksto."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "presi %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Presi la specifitan tekston, nombron aŭ alian valoron."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Peti nombron al uzanto."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Peti tekston al uzanto."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "ricevi nombron per mesaĝo"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ricevi tekston per mesaĝo"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "anstataŭigi tekston %1 per %2 en %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Anstataŭigi ĉiujn okazojn de iu teksto en alia teksto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inversigi tekston %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inversigi la ordon de la skribsignoj en la teksto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://eo.wikipedia.org/wiki/Signoĉeno"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Litero, vorto, aŭ linio da teksto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "forigi spacetojn for de ambaŭ finoj de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "forigi spacetojn for de maldekstra fino de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "forigi spacetojn for de dekstra fino de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Liveras kopion de teksto, de kies fino(j) spacetoj foriĝis."; +Blockly.Msg["TODAY"] = "Hodiaŭ"; +Blockly.Msg["UNDO"] = "Malfari"; +Blockly.Msg["UNNAMED_KEY"] = "nenomita"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Krei blokon 'difini variablon %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Liveras la valoron de ĉi tiu variablo."; +Blockly.Msg["VARIABLES_SET"] = "difini %1 kiel %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Krei blokon 'akiri variablon %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Difinas ĉi tiun variablon kiel la eniron."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Jam ekzistas variablo kun la nomo '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Jam ekzistas variablo kun la nomo '%1' por alia tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Laborspaco de Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Diru ion…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/es.js b/msg/js/es.js index 6c3fe6ca127..6ad943cc30d 100644 --- a/msg/js/es.js +++ b/msg/js/es.js @@ -1,425 +1,438 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Añadir comentario"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "No se puede eliminar la variable '%1' porque es parte de la definición de la función '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar el valor:"; -Blockly.Msg["CLEAN_UP"] = "Limpiar los bloques"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Bloques colapsados contienen advertencias."; -Blockly.Msg["COLLAPSE_ALL"] = "Contraer bloques"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Contraer bloque"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporción"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "combinar"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Combina dos colores con una proporción determinada (0,0-1,0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://es.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Elige un color de la paleta."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatorio"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Elige un color al azar."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "rojo"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colorear con"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crea un color con cantidades específicas de rojo, verde y azul. Todos los valores deben encontrarse entre 0 y 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "romper el bucle"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar con la siguiente iteración del bucle"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Romper el bucle que lo contiene."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Saltar el resto de este bucle, y continuar con la siguiente iteración."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atención: este bloque puede usarse solamente dentro de un bucle."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://es.wikipedia.org/wiki/Foreach"; -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "para cada elemento %1 en la lista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para cada elemento en una lista, establecer la variable '%1' al elemento y luego hacer algunas declaraciones."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar con %1 desde %2 hasta %3 de a %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Hacer que la variable \"%1\" tome los valores desde el número de inicio hasta el número final, contando con el intervalo especificado, y hacer los bloques especificados."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Agregar una condición a este bloque."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Agregar una condición general final a este bloque."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sino"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sino si"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor es verdadero, entonces hacer algunas declaraciones."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, hacer el segundo bloque de declaraciones."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones. Si ninguno de los valores son verdaderos, hacer el último bloque de declaraciones."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://es.wikipedia.org/wiki/Bucle_for"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "hacer"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 veces"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Hacer algunas declaraciones varias veces."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir hasta"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mientras"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Mientras un valor sea falso, entonces hacer algunas declaraciones."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Mientras un valor sea verdadero, entonces hacer algunas declaraciones."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "¿Eliminar todos los %1 bloques?"; -Blockly.Msg["DELETE_BLOCK"] = "Eliminar bloque"; -Blockly.Msg["DELETE_VARIABLE"] = "Borrar la variable \"%1\""; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "¿Borrar %1 usos de la variable '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Eliminar %1 bloques"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; -Blockly.Msg["DIALOG_OK"] = "Aceptar"; -Blockly.Msg["DISABLE_BLOCK"] = "Desactivar bloque"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar comentario"; -Blockly.Msg["ENABLE_BLOCK"] = "Activar bloque"; -Blockly.Msg["EXPAND_ALL"] = "Expandir bloques"; -Blockly.Msg["EXPAND_BLOCK"] = "Expandir bloque"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas"; -Blockly.Msg["HELP"] = "Ayuda"; -Blockly.Msg["INLINE_INPUTS"] = "Entradas en línea"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear lista vacía"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Devuelve una lista, de longitud 0, sin ningún dato"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Agregar, eliminar o reorganizar las secciones para reconfigurar este bloque de lista."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear lista con"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Agregar un elemento a la lista."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crear una lista con cualquier número de elementos."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primero"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# del final"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "obtener"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obtener y eliminar"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "último"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatorio"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "eliminar"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Devuelve el primer elemento de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Devuelve el elemento en la posición especificada en una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Devuelve el último elemento de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Devuelve un elemento aleatorio en una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Elimina y devuelve el primer elemento de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Elimina y devuelve el elemento en la posición especificada en una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Elimina y devuelve el último elemento de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Elimina y devuelve un elemento aleatorio en una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Elimina el primer elemento de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Elimina el elemento en la posición especificada en una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Elimina el último elemento de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Elimina un elemento aleatorio en una lista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "hasta # del final"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "hasta #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "hasta el último"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtener sublista desde el primero"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtener sublista desde # del final"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtener sublista desde #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea una copia de la parte especificada de una lista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es el último elemento."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es el primer elemento."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "encontrar la primera aparición del elemento"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "encontrar la última aparición del elemento"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Devuelve el índice de la primera/última aparición del elemento en la lista. Devuelve %1 si el elemento no se encuentra."; -Blockly.Msg["LISTS_INLIST"] = "en la lista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 está vacía"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Devuelve verdadero si la lista está vacía."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitud de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Devuelve la longitud de una lista."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "crear lista con el elemento %1 repetido %2 veces"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea una lista que consta de un valor dado repetido el número de veces especificado."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "invertir %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Invertir una copia de una lista."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insertar en"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "establecer"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserta el elemento al inicio de una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserta el elemento en la posición especificada en una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Añade el elemento al final de una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserta el elemento aleatoriamente en una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Establece el primer elemento de una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Establece el elemento en la posición especificada en una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Establece el último elemento de una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Establece un elemento aleatorio en una lista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; -Blockly.Msg["LISTS_SORT_TITLE"] = "orden %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordenar una copia de una lista."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabético, ignorar mayúscula/minúscula"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérico"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabético"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "hacer lista a partir de texto"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "hacer texto a partir de lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Unir una lista de textos en un solo texto, separado por un delimitador."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividir el texto en una lista de textos, separando en cada delimitador."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con delimitador"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Devuelve verdadero o falso."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadero"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://es.wikipedia.org/wiki/Desigualdad_matemática"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Devuelve verdadero si ambas entradas son iguales."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Devuelve verdadero si la primera entrada es mayor que la segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Devuelve verdadero si la primera entrada es mayor o igual a la segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Devuelve verdadero si la primera entrada es menor que la segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Devuelve verdadero si la primera entrada es menor que o igual a la segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Devuelve verdadero si ambas entradas son distintas."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "no %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Devuelve verdadero si la entrada es falsa. Devuelve falso si la entrada es verdadera."; -Blockly.Msg["LOGIC_NULL"] = "nulo"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Devuelve nulo."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "y"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Devuelve verdadero si ambas entradas son verdaderas."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Devuelve verdadero si al menos una de las entradas es verdadera."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "prueba"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si es falso"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si es verdadero"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Comprueba la condición en \"prueba\". Si la condición es verdadera, devuelve el valor \"si es verdadero\"; de lo contrario, devuelve el valor \"si es falso\"."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://es.wikipedia.org/wiki/Aritmética"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Devuelve la suma de ambos números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Devuelve el cociente de ambos números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Devuelve la diferencia de ambos números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Devuelve el producto de ambos números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Devuelve el primer número elevado a la potencia del segundo."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://es.wikipedia.org/wiki/Arcotangente_de_dos_par%C3%A1metros"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "Arcotangente de X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Regresar el arcotangente del punto (X,Y) en grados de -180 a 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "añadir %2 a %1"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Añadir un número a la variable «%1»."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://es.wikipedia.org/wiki/Anexo:Constantes_matemáticas"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Devuelve una de las constantes comunes: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinito)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limitar %1 entre %2 y %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limitar un número entre los límites especificados (inclusive)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "es divisible por"; -Blockly.Msg["MATH_IS_EVEN"] = "es par"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "es negativo"; -Blockly.Msg["MATH_IS_ODD"] = "es impar"; -Blockly.Msg["MATH_IS_POSITIVE"] = "es positivo"; -Blockly.Msg["MATH_IS_PRIME"] = "es primo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Comprueba si un número es par, impar, primo, entero, positivo, negativo, o si es divisible por un número determinado. Devuelve verdadero o falso."; -Blockly.Msg["MATH_IS_WHOLE"] = "es entero"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "resto de %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Devuelve el resto al dividir los dos números."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://es.wikipedia.org/wiki/Número"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un número."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "promedio de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "máximo de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mínimo de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modas de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "elemento aleatorio de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desviación estándar de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma de la lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Devuelve el promedio (media aritmética) de los valores numéricos en la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Devuelve el número más grande en la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Devuelve la mediana en la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Devuelve el número más pequeño en la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Devuelve una lista de los elementos más comunes en la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Devuelve un elemento aleatorio de la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Devuelve la desviación estándar de la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Devuelve la suma de todos los números en la lista."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fracción aleatoria"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Devuelve una fracción aleatoria entre 0,0 (ambos inclusive) y 1.0 (exclusivo)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "entero aleatorio de %1 a %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Devuelve un entero aleatorio entre los dos límites especificados, inclusive."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://es.wikipedia.org/wiki/Redondeo"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "redondear"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "redondear a la baja"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "redondear al alza"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Redondear un número al alza o a la baja."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://es.wikipedia.org/wiki/Ra%C3%ADz_cuadrada"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz cuadrada"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Devuelve el valor absoluto de un número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Devuelve e a la potencia de un número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Devuelve el logaritmo natural de un número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Devuelve el logaritmo base 10 de un número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Devuelve la negación de un número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Devuelve 10 a la potencia de un número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Devuelve la raíz cuadrada de un número."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://es.wikipedia.org/wiki/Función_trigonométrica"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Devuelve el arcocoseno de un número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Devuelve el arcoseno de un número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Devuelve el arcotangente de un número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Devuelve el coseno de un grado (no radián)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Devuelve el seno de un grado (no radián)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Devuelve la tangente de un grado (no radián)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear una variable de color..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crear una variable de número..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear una cadena variable..."; -Blockly.Msg["NEW_VARIABLE"] = "Crear variable…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nombre de variable nueva:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nuevo tipo de variable:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitir declaraciones"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://es.wikipedia.org/wiki/Subrutina"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ejecuta la función definida por el usuario '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://es.wikipedia.org/wiki/Subrutina"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ejecuta la función definida por el usuario '%1' y usa su salida."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe esta función..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "hacer algo"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "para"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea una función sin salida."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "devuelve"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea una función con una salida."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advertencia: Esta función tiene parámetros duplicados."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Destacar definición de la función"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si un valor es verdadero, entonces devuelve un segundo valor."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advertencia: Este bloque solo puede ser utilizado dentro de la definición de una función."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nombre de entrada:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Añadir una entrada a la función."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Añadir, eliminar o reordenar entradas para esta función."; -Blockly.Msg["REDO"] = "Rehacer"; -Blockly.Msg["REMOVE_COMMENT"] = "Eliminar comentario"; -Blockly.Msg["RENAME_VARIABLE"] = "Cambiar nombre de variable…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renombrar todas las variables «%1» a:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 añade el texto %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Añadir texto a la variable '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "a minúsculas"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "a Mayúsculas Cada Palabra"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "a MAYÚSCULAS"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Devuelve una copia del texto en un tamaño diferente."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "obtener la primera letra"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obtener la letra # del final"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obtener la letra #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "obtener la última letra"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obtener letra aleatoria"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "en el texto %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Devuelve la letra en la posición especificada."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "contar %1 en %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Cuantas veces aparece un texto dentro de otro texto."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Agregar un elemento al texto."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque de texto."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "hasta la letra # del final"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "hasta la letra #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "hasta la última letra"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en el texto"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obtener subcadena desde la primera letra"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obtener subcadena desde la letra # del final"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obtener subcadena desde la letra #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Devuelve una porción determinada del texto."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "encontrar la primera aparición del texto"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "encontrar la última aparición del texto"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en el texto %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Devuelve el índice de la primera/última aparición del primer texto en el segundo texto. Devuelve %1 si el texto no se encuentra."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 está vacío"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Devuelve verdadero si el texto proporcionado está vacío."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear texto con"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crear un fragmento de texto al unir cualquier número de elementos."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "longitud de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Devuelve el número de letras (espacios incluidos) del texto proporcionado."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "imprimir %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprimir el texto, número u otro valor especificado."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Solicitar al usuario un número."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Solicitar al usuario un texto."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "solicitar número con el mensaje"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "solicitar texto con el mensaje"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "reemplazar %1 con %2 en %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Reemplazar todas las veces que un texto dentro de otro texto."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "invertir %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Invierte el orden de los caracteres en el texto."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://es.wikipedia.org/wiki/Cadena_de_caracteres"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una letra, palabra o línea de texto."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "quitar espacios de ambos lados de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "quitar espacios iniciales de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "quitar espacios finales de"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Devuelve una copia del texto sin los espacios de uno o ambos extremos."; -Blockly.Msg["TODAY"] = "Hoy"; -Blockly.Msg["UNDO"] = "Deshacer"; -Blockly.Msg["UNNAMED_KEY"] = "Sin nombre"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crear 'establecer %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Devuelve el valor de esta variable."; -Blockly.Msg["VARIABLES_SET"] = "establecer %1 a %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'obtener %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Establece esta variable para que sea igual a la entrada."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Ya existe una variable llamada '%1'."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Ya existe una variable nombrada '%1' para otra variable del tipo: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espacio de trabajo de Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Di algo…"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; -Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Añadir comentario"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "No se puede eliminar la variable '%1' porque es parte de la definición de la función '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar el valor:"; +Blockly.Msg["CLEAN_UP"] = "Limpiar los bloques"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Bloques colapsados contienen advertencias."; +Blockly.Msg["COLLAPSE_ALL"] = "Contraer bloques"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Contraer bloque"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporción"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "combinar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Combina dos colores con una proporción determinada (0,0-1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://es.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Elige un color de la paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatorio"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Elige un color al azar."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rojo"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorear con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crea un color con cantidades específicas de rojo, verde y azul. Todos los valores deben encontrarse entre 0 y 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "romper el bucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar con la siguiente iteración del bucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Romper el bucle que lo contiene."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Saltar el resto de este bucle, y continuar con la siguiente iteración."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atención: este bloque puede usarse solamente dentro de un bucle."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://es.wikipedia.org/wiki/Foreach"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "para cada elemento %1 en la lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para cada elemento en una lista, establecer la variable '%1' al elemento y luego hacer algunas declaraciones."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar con %1 desde %2 hasta %3 de a %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Hacer que la variable \"%1\" tome los valores desde el número de inicio hasta el número final, contando con el intervalo especificado, y hacer los bloques especificados."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Agregar una condición a este bloque."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Agregar una condición general final a este bloque."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sino"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sino si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor es verdadero, entonces hacer algunas declaraciones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, hacer el segundo bloque de declaraciones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones. Si ninguno de los valores son verdaderos, hacer el último bloque de declaraciones."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://es.wikipedia.org/wiki/Bucle_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "hacer"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 veces"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Hacer algunas declaraciones varias veces."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir hasta"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mientras"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Mientras un valor sea falso, entonces hacer algunas declaraciones."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Mientras un valor sea verdadero, entonces hacer algunas declaraciones."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "¿Eliminar todos los %1 bloques?"; +Blockly.Msg["DELETE_BLOCK"] = "Eliminar bloque"; +Blockly.Msg["DELETE_VARIABLE"] = "Borrar la variable \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "¿Borrar %1 usos de la variable '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Eliminar %1 bloques"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; +Blockly.Msg["DIALOG_OK"] = "Aceptar"; +Blockly.Msg["DISABLE_BLOCK"] = "Desactivar bloque"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar comentario"; +Blockly.Msg["ENABLE_BLOCK"] = "Activar bloque"; +Blockly.Msg["EXPAND_ALL"] = "Expandir bloques"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir bloque"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas"; +Blockly.Msg["HELP"] = "Ayuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas en línea"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear lista vacía"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Devuelve una lista, de longitud 0, sin ningún dato"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Agregar, eliminar o reorganizar las secciones para reconfigurar este bloque de lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear lista con"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Agregar un elemento a la lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crear una lista con cualquier número de elementos."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primero"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# del final"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obtener"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obtener y eliminar"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "último"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatorio"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "eliminar"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Devuelve el primer elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Devuelve el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Devuelve el último elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Devuelve un elemento aleatorio en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Elimina y devuelve el primer elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Elimina y devuelve el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Elimina y devuelve el último elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Elimina y devuelve un elemento aleatorio en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Elimina el primer elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Elimina el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Elimina el último elemento de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Elimina un elemento aleatorio en una lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "hasta # del final"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "hasta #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "hasta el último"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtener sublista desde el primero"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtener sublista desde # del final"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtener sublista desde #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea una copia de la parte especificada de una lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es el último elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es el primer elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "encontrar la primera aparición del elemento"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "encontrar la última aparición del elemento"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Devuelve el índice de la primera/última aparición del elemento en la lista. Devuelve %1 si el elemento no se encuentra."; +Blockly.Msg["LISTS_INLIST"] = "en la lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 está vacía"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Devuelve verdadero si la lista está vacía."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitud de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Devuelve la longitud de una lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "crear lista con el elemento %1 repetido %2 veces"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea una lista que consta de un valor dado repetido el número de veces especificado."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "invertir %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Invertir una copia de una lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insertar en"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "establecer"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserta el elemento al inicio de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserta el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Añade el elemento al final de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserta el elemento aleatoriamente en una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Establece el primer elemento de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Establece el elemento en la posición especificada en una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Establece el último elemento de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Establece un elemento aleatorio en una lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "orden %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordenar una copia de una lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabético, ignorar mayúscula/minúscula"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérico"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabético"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "hacer lista a partir de texto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "hacer texto a partir de lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Unir una lista de textos en un solo texto, separado por un delimitador."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividir el texto en una lista de textos, separando en cada delimitador."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con delimitador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Devuelve verdadero o falso."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadero"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://es.wikipedia.org/wiki/Desigualdad_matemática"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Devuelve verdadero si ambas entradas son iguales."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Devuelve verdadero si la primera entrada es mayor que la segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Devuelve verdadero si la primera entrada es mayor o igual a la segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Devuelve verdadero si la primera entrada es menor que la segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Devuelve verdadero si la primera entrada es menor que o igual a la segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Devuelve verdadero si ambas entradas son distintas."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "no %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Devuelve verdadero si la entrada es falsa. Devuelve falso si la entrada es verdadera."; +Blockly.Msg["LOGIC_NULL"] = "nulo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Devuelve nulo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "y"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Devuelve verdadero si ambas entradas son verdaderas."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Devuelve verdadero si al menos una de las entradas es verdadera."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "prueba"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si es falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si es verdadero"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Comprueba la condición en \"prueba\". Si la condición es verdadera, devuelve el valor \"si es verdadero\"; de lo contrario, devuelve el valor \"si es falso\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://es.wikipedia.org/wiki/Aritmética"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Devuelve la suma de ambos números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Devuelve el cociente de ambos números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Devuelve la diferencia de ambos números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Devuelve el producto de ambos números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Devuelve el primer número elevado a la potencia del segundo."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://es.wikipedia.org/wiki/Arcotangente_de_dos_par%C3%A1metros"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "Arcotangente de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Regresar el arcotangente del punto (X,Y) en grados de -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "añadir %2 a %1"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Añadir un número a la variable «%1»."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://es.wikipedia.org/wiki/Anexo:Constantes_matemáticas"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Devuelve una de las constantes comunes: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limitar %1 entre %2 y %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limitar un número entre los límites especificados (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "es divisible por"; +Blockly.Msg["MATH_IS_EVEN"] = "es par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "es negativo"; +Blockly.Msg["MATH_IS_ODD"] = "es impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "es positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "es primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Comprueba si un número es par, impar, primo, entero, positivo, negativo, o si es divisible por un número determinado. Devuelve verdadero o falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "es entero"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Devuelve el resto al dividir los dos números."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://es.wikipedia.org/wiki/Número"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un número."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "promedio de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "máximo de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mínimo de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modas de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "elemento aleatorio de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desviación estándar de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma de la lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Devuelve el promedio (media aritmética) de los valores numéricos en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Devuelve el número más grande en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Devuelve la mediana en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Devuelve el número más pequeño en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Devuelve una lista de los elementos más comunes en la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Devuelve un elemento aleatorio de la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Devuelve la desviación estándar de la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Devuelve la suma de todos los números en la lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fracción aleatoria"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Devuelve una fracción aleatoria entre 0,0 (ambos inclusive) y 1.0 (exclusivo)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "entero aleatorio de %1 a %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Devuelve un entero aleatorio entre los dos límites especificados, inclusive."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://es.wikipedia.org/wiki/Redondeo"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "redondear"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "redondear a la baja"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "redondear al alza"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Redondear un número al alza o a la baja."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://es.wikipedia.org/wiki/Ra%C3%ADz_cuadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz cuadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Devuelve el valor absoluto de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Devuelve e a la potencia de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Devuelve el logaritmo natural de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Devuelve el logaritmo base 10 de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Devuelve la negación de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Devuelve 10 a la potencia de un número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Devuelve la raíz cuadrada de un número."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://es.wikipedia.org/wiki/Función_trigonométrica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Devuelve el arcocoseno de un número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Devuelve el arcoseno de un número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Devuelve el arcotangente de un número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Devuelve el coseno de un grado (no radián)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Devuelve el seno de un grado (no radián)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Devuelve la tangente de un grado (no radián)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear una variable de color..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crear una variable de número..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear una cadena variable..."; +Blockly.Msg["NEW_VARIABLE"] = "Crear variable…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nombre de variable nueva:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nuevo tipo de variable:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitir declaraciones"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://es.wikipedia.org/wiki/Subrutina"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ejecuta la función definida por el usuario '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://es.wikipedia.org/wiki/Subrutina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ejecuta la función definida por el usuario '%1' y usa su salida."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe esta función..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "hacer algo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "para"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea una función sin salida."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "devuelve"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea una función con una salida."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advertencia: Esta función tiene parámetros duplicados."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Destacar definición de la función"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si un valor es verdadero, entonces devuelve un segundo valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advertencia: Este bloque solo puede ser utilizado dentro de la definición de una función."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nombre de entrada:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Añadir una entrada a la función."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Añadir, eliminar o reordenar entradas para esta función."; +Blockly.Msg["REDO"] = "Rehacer"; +Blockly.Msg["REMOVE_COMMENT"] = "Eliminar comentario"; +Blockly.Msg["RENAME_VARIABLE"] = "Cambiar nombre de variable…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renombrar todas las variables «%1» a:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 añade el texto %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Añadir texto a la variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "a minúsculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "a Mayúsculas Cada Palabra"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "a MAYÚSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Devuelve una copia del texto en un tamaño diferente."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obtener la primera letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obtener la letra # del final"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obtener la letra #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obtener la última letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obtener letra aleatoria"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "en el texto %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Devuelve la letra en la posición especificada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "contar %1 en %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Cuantas veces aparece un texto dentro de otro texto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Agregar un elemento al texto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque de texto."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "hasta la letra # del final"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "hasta la letra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "hasta la última letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "en el texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obtener subcadena desde la primera letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obtener subcadena desde la letra # del final"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obtener subcadena desde la letra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Devuelve una porción determinada del texto."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "encontrar la primera aparición del texto"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "encontrar la última aparición del texto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "en el texto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Devuelve el índice de la primera/última aparición del primer texto en el segundo texto. Devuelve %1 si el texto no se encuentra."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 está vacío"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Devuelve verdadero si el texto proporcionado está vacío."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear texto con"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crear un fragmento de texto al unir cualquier número de elementos."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longitud de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Devuelve el número de letras (espacios incluidos) del texto proporcionado."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprimir %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprimir el texto, número u otro valor especificado."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Solicitar al usuario un número."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Solicitar al usuario un texto."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "solicitar número con el mensaje"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "solicitar texto con el mensaje"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "reemplazar %1 con %2 en %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Reemplazar todas las veces que un texto dentro de otro texto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "invertir %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Invierte el orden de los caracteres en el texto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://es.wikipedia.org/wiki/Cadena_de_caracteres"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una letra, palabra o línea de texto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "quitar espacios de ambos lados de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "quitar espacios iniciales de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "quitar espacios finales de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Devuelve una copia del texto sin los espacios de uno o ambos extremos."; +Blockly.Msg["TODAY"] = "Hoy"; +Blockly.Msg["UNDO"] = "Deshacer"; +Blockly.Msg["UNNAMED_KEY"] = "Sin nombre"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crear 'establecer %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Devuelve el valor de esta variable."; +Blockly.Msg["VARIABLES_SET"] = "establecer %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'obtener %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Establece esta variable para que sea igual a la entrada."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Ya existe una variable llamada '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Ya existe una variable nombrada '%1' para otra variable del tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espacio de trabajo de Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Di algo…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; + +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Llama un método de la variable actual con retorno."; +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Llama un método de la variable actual."; +Blockly.Msg["CALL_TEXT"] = "llamar"; +Blockly.Msg["RETURN_TEXT"] = "retornar"; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Bloque que contine los bloques de inicialización del supervisório."; +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Bloque que contine los bloques de inicialización del programa."; +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Bloque que contine los bloques de ejecución del programa."; +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Inicialización"; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Inicialización do Supervisório"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Ejecución"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Llamadas de métodos"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Funciones principales" \ No newline at end of file diff --git a/msg/js/et.js b/msg/js/et.js index 70d667af3e4..4b2f64f9688 100644 --- a/msg/js/et.js +++ b/msg/js/et.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Lisa kommentaar"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Muutujat '%1' ei saa kustutada, sest see on osa funktsiooni '%2' määratlusest"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muuda väärtust:"; -Blockly.Msg["CLEAN_UP"] = "Korista plokid kokku"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Kokkuvajunud plokid sisaldavad hoiatusi."; -Blockly.Msg["COLLAPSE_ALL"] = "Tõmba plokid kokku"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Tõmba plokk kokku"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1. värvist"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2. värvist"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "suhtega"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "segu"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Segab kaks värvi määratud suhtega (0.0 - 1.0) kokku."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Valitud värv paletist."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "juhuslik värv"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Juhuslikult valitud värv."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "sinisest"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "rohelisest"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "punasest"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "segu"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Tekitab värvi määratud hulgast punasest, rohelisest ja sinisest. Kõik väärtused peavad olema 0 ja 100 vahel."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "välju kordusest"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "katkesta see kordus ja liigu järgmisele"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Väljub kordusest ja liigub edasi korduse järel oleva koodi käivitamisele."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Katkestab korduses oleva koodi käivitamise ja käivitab järgmise korduse."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Hoiatus: Seda plokki saab kasutada ainult korduse sees."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "iga elemendiga %1 loendis %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Iga elemendiga loendis anna muutujale '%1' elemendi väärtus ja kõivita plokis olevad käsud."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "loendus muutujaga %1 alates %2 kuni %3, %4 kaupa"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Annab muutujale '%1' väärtused ühest numbrist teiseni, muutes seda intervalli kaupa ja käivitab igal muudatusel ploki sees oleva koodi."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Lisab „kui“ plokile tingimuse."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Lisab „kui“ plokile lõpliku tingimuseta koodiploki."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Selle „kui“ ploki muutmine sektsioonide lisamise, eemaldamise ja järjestamisega."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "vastasel juhul"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "vastasel juhul, kui"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "kui"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Kui avaldis on tõene, käivita ploki sees olevad käsud."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Kui avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul käivita käsud teisest plokist."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist. Kui ükski avaldistest pole tõene, käivita käsud viimasest plokist."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "käivita"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 korda"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Plokis olevate käskude käivitamine määratud arv kordi."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "seni kuni pole"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "seni kuni on"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Plokis olevaid käske korratakse seni kui avaldis pole tõene."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Plokis olevaid käske korratakse seni kui avaldis on tõene."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Kas kustutada kõik %1 plokki?"; -Blockly.Msg["DELETE_BLOCK"] = "Kustuta plokk"; -Blockly.Msg["DELETE_VARIABLE"] = "Kustuta muutuja '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Kas kustutada %1 kohas kasutatav muutuja '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Kustuta %1 plokki"; -Blockly.Msg["DIALOG_CANCEL"] = "Loobu"; -Blockly.Msg["DIALOG_OK"] = "Sobib"; -Blockly.Msg["DISABLE_BLOCK"] = "Keela ploki kasutamine"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Tekita duplikaat"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Dubleeri kommentaar"; -Blockly.Msg["ENABLE_BLOCK"] = "Luba ploki kasutamine"; -Blockly.Msg["EXPAND_ALL"] = "Laota plokid laiali"; -Blockly.Msg["EXPAND_BLOCK"] = "Laota plokk laiali"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Sisendid ploki taga"; -Blockly.Msg["HELP"] = "Abi"; -Blockly.Msg["INLINE_INPUTS"] = "Sisendid ploki sees"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tühi loend"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Tagastab loendi, mille pikkus on 0 ja milles pole ühtegi elementi."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "loend"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Loendiploki elementide lisamine, eemaldamine või järjestuse muutmine."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "uus loend"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Elemendi lisamine loendisse."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Tekitab mistahes arvust elementidest loendi."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "esimene element"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "element # (lõpust)"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "element #"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "võetud"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "võetud ja eemaldatud"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "viimane element"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "juhuslik element"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "eemalda"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Tagastab loendi esimese elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Tagastab loendis määratud asukohal oleva elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Tagastab loendi viimase elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Tagastab loendi juhusliku elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Tagastab ja eemaldab loendist esimese elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Tagastab ja eemaldab loendist määratud asukohal oleva elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Tagastab ja eemaldab loendist viimase elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Tagastab ja eemaldab loendist juhusliku elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Eemaldab loendist esimese elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Eemaldab loendist määratud asukohal oleva elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Eemaldab loendist viimase elemendi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Eemaldab loendist juhusliku elemendi."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "elemendini # (lõpust)"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "elemendini #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "lõpuni"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "alamloend algusest"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "alamloend elemendist # (lõpust)"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "alamloend elemendist #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Tekitab loendi määratud osast koopia."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Viimane element on %1."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Esimene element on %1."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "esimene leitud"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "viimase leitud"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Tagastab esimese/viimase loendist leitud objekti asukoha (objekti järjekorranumbri loendis). Kui objekti ei leita, tagastab %1."; -Blockly.Msg["LISTS_INLIST"] = "loendis"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 on tühi"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Tagastab „tõene“ kui loend on tühi."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 pikkus"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Tagastab loendi pikkuse."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "loend pikkusega %2 elemendist %1"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Tekitab uue loendi, millesse lisatakse ühte elementi pikkusega määratud arv kordi."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Loendi koopia ümberpööramine."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = ", väärtus"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "lisa asukohale"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "asenda"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Lisab loendi algusesse uue elemendi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Lisab määratud asukohale loendis uue elemendi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Lisab loendi lõppu uue elemendi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Lisab juhuslikule kohale loendis uue elemendi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Asendab loendis esimese elemendi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Asendab loendis määratud kohal oleva elemendi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Asendab loendis viimase elemendi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Asendab loendis juhusliku elemendi."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "kasvavalt"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "kahanevalt"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 sorteeritud %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Loendi koopia sorteerimine."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "tähestiku järgi (tähesuurust eirates)"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "arvväärtuste järgi"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "tähestiku järgi"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "loend, tekitatud tekstist"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tekst, tekitatud loendist"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ühendab tekstide loendis olevad tükid üheks tekstiks, asetades tükkide vahele eraldaja."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tükeldab teksti eraldajade kohalt ja asetab tükid tekstide loendisse."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "eraldajaga"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "väär"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Tagastab tõeväärtuse – kas „tõene“ või „väär“."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tõene"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Tagastab „tõene“, kui avaldiste väärtused on võrdsed."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Tagastab „tõene“, kui esimese avaldise väärtus on suurem kui teise väärtus."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Tagastab „tõene“, kui esimese avaldise väärtus on suurem või võrdne teise väärtusega."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem kui teise väärtus."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem või võrdne teise väärtusega."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Tagastab „tõene“, kui avaldiste väärtused pole võrdsed."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "pole %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Tagastab „tõene“, kui avaldis on väär. Tagastab „väär“, kui avaldis on tõene."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Tagastab nulli."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ja"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "või"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Tagastab „tõene“, kui mõlemad avaldised on tõesed."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Tagastab „tõene“, kui vähemalt üks avaldistest on tõene."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "tingimus"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "kui väär"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "kui tõene"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kui tingimuse väärtus on tõene, tagastab „kui tõene“ väärtuse, vastasel juhul „kui väär“ väärtuse."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://et.wikipedia.org/wiki/Aritmeetika"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Tagastab kahe arvu summa."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Tagastab kahe arvu jagatise."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Tagastab kahe arvu vahe."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Tagastab kahe arvu korrutise."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Tagastab esimese arvu teise arvu astmes."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2(X:%1, Y:%2)"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Tagastab punkti (X, Y) arkustangentsit kraadides vahemikus -180 kuni 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "muuda %1 %2 võrra"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lisab arvu muutujale '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Tagastab ühe konstantidest: π (3,141…), e (2,718…), φ (1.618…), √2) (1,414…), √½ (0,707…), või ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 piirang %2 ja %3 vahele"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Piirab arvu väärtuse toodud piiridesse (piirarvud kaasa arvatud)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "jagub arvuga"; -Blockly.Msg["MATH_IS_EVEN"] = "on paarisarv"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "on negatiivne arv"; -Blockly.Msg["MATH_IS_ODD"] = "on paaritu arv"; -Blockly.Msg["MATH_IS_POSITIVE"] = "on positiivne arv"; -Blockly.Msg["MATH_IS_PRIME"] = "on algarv"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollib kas arv on paarisarv, paaritu arv, algarv, täisarv, positiivne, negatiivne või jagub kindla arvuga. Tagastab „tõene“ või „väär“."; -Blockly.Msg["MATH_IS_WHOLE"] = "on täisarv"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 jääk"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Tagastab esimese numbri teisega jagamisel tekkiva jäägi."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://et.wikipedia.org/wiki/Arv"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Arv."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "loendi keskmine"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "loendi maksimum"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "loendi mediaan"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "loendi miinimum"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "loendi moodid"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "juhuslik element loendist"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "loendi standardhälve"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "loendi summa"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Tagastab loendis olevate arvväärtuste aritmeetilise keskmise."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Tagastab suurima loendis oleva arvu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Tagastab väikseima loendis oleva arvu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Tagastab loendi kõige sagedamini esinevate loendi liikmetega."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Tagastab juhusliku elemendi loendist."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Tagastab loendi standardhälbe."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Tagastab kõigi loendis olevate arvude summa."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "juhuslik murdosa"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Tagastab juhusliku murdosa 0.0 (kaasa arvatud) and 1.0 (välja arvatud) vahel."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "juhuslik täisarv %1 ja %2 vahel"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Tagastab juhusliku täisarvu toodud piiride vahel (piirarvud kaasa arvatud)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ümarda"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ümarda alla"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ümarda üles"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Ümardab arvu üles või alla."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://et.wikipedia.org/wiki/Ruutjuur"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluutväärtus"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ruutjuur"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Tagastab arvu absoluutväärtuse."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Tagasta e arvu astmes."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Tagastab arvu naturaallogaritmi."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Tagastab arvu kümnendlogaritm."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Tagastab arvu vastandväärtuse."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Tagastab 10 arvu astmes."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Tagastab arvu ruutjuure."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://et.wikipedia.org/wiki/Trigonomeetrilised_funktsioonid"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Tagastab arvu arkuskoosiinuse."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Tagastab arvu arkussiinuse."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Tagastab arvu arkustangensi."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Tagastab arvu (kraadid) kosiinuse."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Tagastab arvu (kraadid) siinuse."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Tagastab arvu (kraadid) tangensi."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Loo muutuja värvina..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Loo muutuja arvuna..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Loo muutuja sõnena..."; -Blockly.Msg["NEW_VARIABLE"] = "Uus muutuja ..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Uue muutuja nimi:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Uue muutuja tüüp:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "kood plokis"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "sisenditega:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://et.wikipedia.org/wiki/Alamprogramm"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Käivitab kasutaja defineeritud funktsiooni '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://et.wikipedia.org/wiki/Alamprogramm"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "sisenditega:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Tekita '%1' plokk"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Funktsiooni kirjeldus ..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "teeme midagi"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "funktsioon"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Tekitab funktsiooni, mis ei tagasta midagi."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "tagasta"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Tekitab funktsiooni, mis tagastab midagi."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Hoiatus: Sel funktsioonil on mitu sama nimega sisendit."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Tõsta funktsiooni definitsioon esile"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Kui väärtus on tõene, tagastatakse teine väärtus."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Hoiatus: Seda plokki saab kasutada ainult funktsiooni definitsioonis."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "sisend nimega:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Lisab funktsioonile sisendi."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "sisendid"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Funktsiooni sisendite lisamine, eemaldamine või järjestuse muutmine."; -Blockly.Msg["REDO"] = "Tee uuesti"; -Blockly.Msg["REMOVE_COMMENT"] = "Eemalda kommentaar"; -Blockly.Msg["RENAME_VARIABLE"] = "Nimeta muutuja ümber ..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Muutuja „%1“ uus nimi:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "lisa muutuja %1 lõppu tekst %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Lisab teksti muutuja „%1“ väärtuse lõppu."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "väikeste tähtedega"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Suurte Esitähtedega"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "SUURTE TÄHTEDEGA"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Tagastab muudetud tähesuurusega teksti koopia."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "esimene sümbol"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "lõpust sümbol #"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "sümbol #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "viimane sümbol"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "juhuslik sümbol"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "tekstis %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Tagastab tekstis määratud asukohal oleva sümboli."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "loenda %1 %2-ses"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Loenda, mitu korda mingi tekst esineb teise teksti sees."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Objekti lisamine tekstile."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ühenda"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tekstiploki muutmine sektsioonide lisamise, eemaldamise või järjestuse muutmisega."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "kuni (lõpust) sümbolini #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "kuni sümbolini #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "kuni viimase sümbolini"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "tekstist"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "alates esimesest sümbolist"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "alates (lõpust) sümbolist #"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "alates sümbolist #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Tagastab määratud tüki tekstist."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "esimese leitud tekstitüki"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "viimase leitud tekstitüki"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekstist %1 %2 %3 asukoht"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Tagastab esimesest tekstist esimese/viimase leitud teise teksti asukoha (indeksi). Kui teksti ei leita, tagastab %1."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 on tühi"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Tagastab „tõene“, kui tekstis pole ühtegi sümbolit."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "tekita tekst"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tekitab teksti ühendades mistahes arvu elemente."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 pikkus"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Tagastab sümbolite aru (ka tühikud) toodud tekstis."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "trüki %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Trükib määratud teksti, numbri või mõne muu objekti väärtuse."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Küsib kasutajalt teadet näidates mingit arvu."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Küsib kasutajalt teadet näidates mingit teksti."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "kasutajalt küsitud arv teatega"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "kasutajalt küsitud tekst teatega"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "asenda %1 %2-ga %3-s"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Asenda mõne teksti esinemine mõnes muus tekstis."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "ümberpöördud %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Pöörab tekstis tähemärkide järjestuse ümber."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Täht, sõna või rida teksti."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "mõlemalt poolt eemaldatud tühikutega"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "algusest eemaldatud tühikutega"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "lõpust eemaldatud tühikutega"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Tagastab koopia tekstist, millel on tühikud ühelt või mõlemalt poolt eemaldatud."; -Blockly.Msg["TODAY"] = "Täna"; -Blockly.Msg["UNDO"] = "Võta tagasi"; -Blockly.Msg["UNNAMED_KEY"] = "nimetu"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "objekt"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Tekita 'määra „%1“ väärtuseks' plokk"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Tagastab selle muutuja väärtuse."; -Blockly.Msg["VARIABLES_SET"] = "määra %1 väärtuseks %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Tekita '„%1“ väärtus' plokk"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Määrab selle muutuja väärtuse võrdseks sisendi väärtusega."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1'-nimeline muutuja on juba olemas."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Muutuja nimega '%1' juba eksisteerib teise tüübina: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly tööruum"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Ütle midagi..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Lisa kommentaar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Muutujat '%1' ei saa kustutada, sest see on osa funktsiooni '%2' määratlusest"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muuda väärtust:"; +Blockly.Msg["CLEAN_UP"] = "Korista plokid kokku"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Kokkuvajunud plokid sisaldavad hoiatusi."; +Blockly.Msg["COLLAPSE_ALL"] = "Tõmba plokid kokku"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Tõmba plokk kokku"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1. värvist"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2. värvist"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "suhtega"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "segu"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Segab kaks värvi määratud suhtega (0.0 - 1.0) kokku."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Valitud värv paletist."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "juhuslik värv"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Juhuslikult valitud värv."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "sinisest"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "rohelisest"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "punasest"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "segu"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Tekitab värvi määratud hulgast punasest, rohelisest ja sinisest. Kõik väärtused peavad olema 0 ja 100 vahel."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "välju kordusest"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "katkesta see kordus ja liigu järgmisele"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Väljub kordusest ja liigub edasi korduse järel oleva koodi käivitamisele."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Katkestab korduses oleva koodi käivitamise ja käivitab järgmise korduse."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Hoiatus: Seda plokki saab kasutada ainult korduse sees."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "iga elemendiga %1 loendis %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Iga elemendiga loendis anna muutujale '%1' elemendi väärtus ja kõivita plokis olevad käsud."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "loendus muutujaga %1 alates %2 kuni %3, %4 kaupa"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Annab muutujale '%1' väärtused ühest numbrist teiseni, muutes seda intervalli kaupa ja käivitab igal muudatusel ploki sees oleva koodi."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Lisab „kui“ plokile tingimuse."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Lisab „kui“ plokile lõpliku tingimuseta koodiploki."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Selle „kui“ ploki muutmine sektsioonide lisamise, eemaldamise ja järjestamisega."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "vastasel juhul"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "vastasel juhul, kui"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "kui"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Kui avaldis on tõene, käivita ploki sees olevad käsud."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Kui avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul käivita käsud teisest plokist."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist. Kui ükski avaldistest pole tõene, käivita käsud viimasest plokist."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "käivita"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 korda"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Plokis olevate käskude käivitamine määratud arv kordi."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "seni kuni pole"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "seni kuni on"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Plokis olevaid käske korratakse seni kui avaldis pole tõene."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Plokis olevaid käske korratakse seni kui avaldis on tõene."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Kas kustutada kõik %1 plokki?"; +Blockly.Msg["DELETE_BLOCK"] = "Kustuta plokk"; +Blockly.Msg["DELETE_VARIABLE"] = "Kustuta muutuja '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Kas kustutada %1 kohas kasutatav muutuja '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Kustuta %1 plokki"; +Blockly.Msg["DIALOG_CANCEL"] = "Loobu"; +Blockly.Msg["DIALOG_OK"] = "Sobib"; +Blockly.Msg["DISABLE_BLOCK"] = "Keela ploki kasutamine"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Tekita duplikaat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dubleeri kommentaar"; +Blockly.Msg["ENABLE_BLOCK"] = "Luba ploki kasutamine"; +Blockly.Msg["EXPAND_ALL"] = "Laota plokid laiali"; +Blockly.Msg["EXPAND_BLOCK"] = "Laota plokk laiali"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Sisendid ploki taga"; +Blockly.Msg["HELP"] = "Abi"; +Blockly.Msg["INLINE_INPUTS"] = "Sisendid ploki sees"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tühi loend"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Tagastab loendi, mille pikkus on 0 ja milles pole ühtegi elementi."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "loend"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Loendiploki elementide lisamine, eemaldamine või järjestuse muutmine."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "uus loend"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Elemendi lisamine loendisse."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Tekitab mistahes arvust elementidest loendi."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "esimene element"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "element # (lõpust)"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "element #"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "võetud"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "võetud ja eemaldatud"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "viimane element"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "juhuslik element"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "eemalda"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Tagastab loendi esimese elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Tagastab loendis määratud asukohal oleva elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Tagastab loendi viimase elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Tagastab loendi juhusliku elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Tagastab ja eemaldab loendist esimese elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Tagastab ja eemaldab loendist määratud asukohal oleva elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Tagastab ja eemaldab loendist viimase elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Tagastab ja eemaldab loendist juhusliku elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Eemaldab loendist esimese elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Eemaldab loendist määratud asukohal oleva elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Eemaldab loendist viimase elemendi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Eemaldab loendist juhusliku elemendi."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "elemendini # (lõpust)"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "elemendini #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "lõpuni"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "alamloend algusest"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "alamloend elemendist # (lõpust)"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "alamloend elemendist #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Tekitab loendi määratud osast koopia."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Viimane element on %1."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Esimene element on %1."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "esimene leitud"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "viimase leitud"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Tagastab esimese/viimase loendist leitud objekti asukoha (objekti järjekorranumbri loendis). Kui objekti ei leita, tagastab %1."; +Blockly.Msg["LISTS_INLIST"] = "loendis"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 on tühi"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Tagastab „tõene“ kui loend on tühi."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 pikkus"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Tagastab loendi pikkuse."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "loend pikkusega %2 elemendist %1"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Tekitab uue loendi, millesse lisatakse ühte elementi pikkusega määratud arv kordi."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Loendi koopia ümberpööramine."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = ", väärtus"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "lisa asukohale"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "asenda"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Lisab loendi algusesse uue elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Lisab määratud asukohale loendis uue elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Lisab loendi lõppu uue elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Lisab juhuslikule kohale loendis uue elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Asendab loendis esimese elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Asendab loendis määratud kohal oleva elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Asendab loendis viimase elemendi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Asendab loendis juhusliku elemendi."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "kasvavalt"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "kahanevalt"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 sorteeritud %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Loendi koopia sorteerimine."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "tähestiku järgi (tähesuurust eirates)"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "arvväärtuste järgi"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "tähestiku järgi"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "loend, tekitatud tekstist"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tekst, tekitatud loendist"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ühendab tekstide loendis olevad tükid üheks tekstiks, asetades tükkide vahele eraldaja."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tükeldab teksti eraldajade kohalt ja asetab tükid tekstide loendisse."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "eraldajaga"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "väär"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Tagastab tõeväärtuse – kas „tõene“ või „väär“."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tõene"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Tagastab „tõene“, kui avaldiste väärtused on võrdsed."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Tagastab „tõene“, kui esimese avaldise väärtus on suurem kui teise väärtus."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Tagastab „tõene“, kui esimese avaldise väärtus on suurem või võrdne teise väärtusega."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem kui teise väärtus."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem või võrdne teise väärtusega."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Tagastab „tõene“, kui avaldiste väärtused pole võrdsed."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "pole %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Tagastab „tõene“, kui avaldis on väär. Tagastab „väär“, kui avaldis on tõene."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Tagastab nulli."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ja"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "või"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Tagastab „tõene“, kui mõlemad avaldised on tõesed."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Tagastab „tõene“, kui vähemalt üks avaldistest on tõene."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "tingimus"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "kui väär"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "kui tõene"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kui tingimuse väärtus on tõene, tagastab „kui tõene“ väärtuse, vastasel juhul „kui väär“ väärtuse."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://et.wikipedia.org/wiki/Aritmeetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Tagastab kahe arvu summa."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Tagastab kahe arvu jagatise."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Tagastab kahe arvu vahe."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Tagastab kahe arvu korrutise."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Tagastab esimese arvu teise arvu astmes."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2(X:%1, Y:%2)"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Tagastab punkti (X, Y) arkustangentsit kraadides vahemikus -180 kuni 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "muuda %1 %2 võrra"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lisab arvu muutujale '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Tagastab ühe konstantidest: π (3,141…), e (2,718…), φ (1.618…), √2) (1,414…), √½ (0,707…), või ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 piirang %2 ja %3 vahele"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Piirab arvu väärtuse toodud piiridesse (piirarvud kaasa arvatud)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "jagub arvuga"; +Blockly.Msg["MATH_IS_EVEN"] = "on paarisarv"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "on negatiivne arv"; +Blockly.Msg["MATH_IS_ODD"] = "on paaritu arv"; +Blockly.Msg["MATH_IS_POSITIVE"] = "on positiivne arv"; +Blockly.Msg["MATH_IS_PRIME"] = "on algarv"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollib kas arv on paarisarv, paaritu arv, algarv, täisarv, positiivne, negatiivne või jagub kindla arvuga. Tagastab „tõene“ või „väär“."; +Blockly.Msg["MATH_IS_WHOLE"] = "on täisarv"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 jääk"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Tagastab esimese numbri teisega jagamisel tekkiva jäägi."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://et.wikipedia.org/wiki/Arv"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Arv."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "loendi keskmine"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "loendi maksimum"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "loendi mediaan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "loendi miinimum"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "loendi moodid"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "juhuslik element loendist"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "loendi standardhälve"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "loendi summa"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Tagastab loendis olevate arvväärtuste aritmeetilise keskmise."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Tagastab suurima loendis oleva arvu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Tagastab väikseima loendis oleva arvu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Tagastab loendi kõige sagedamini esinevate loendi liikmetega."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Tagastab juhusliku elemendi loendist."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Tagastab loendi standardhälbe."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Tagastab kõigi loendis olevate arvude summa."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "juhuslik murdosa"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Tagastab juhusliku murdosa 0.0 (kaasa arvatud) and 1.0 (välja arvatud) vahel."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "juhuslik täisarv %1 ja %2 vahel"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Tagastab juhusliku täisarvu toodud piiride vahel (piirarvud kaasa arvatud)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ümarda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ümarda alla"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ümarda üles"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Ümardab arvu üles või alla."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://et.wikipedia.org/wiki/Ruutjuur"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluutväärtus"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ruutjuur"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Tagastab arvu absoluutväärtuse."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Tagasta e arvu astmes."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Tagastab arvu naturaallogaritmi."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Tagastab arvu kümnendlogaritm."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Tagastab arvu vastandväärtuse."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Tagastab 10 arvu astmes."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Tagastab arvu ruutjuure."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://et.wikipedia.org/wiki/Trigonomeetrilised_funktsioonid"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Tagastab arvu arkuskoosiinuse."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Tagastab arvu arkussiinuse."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Tagastab arvu arkustangensi."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Tagastab arvu (kraadid) kosiinuse."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Tagastab arvu (kraadid) siinuse."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Tagastab arvu (kraadid) tangensi."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Loo muutuja värvina..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Loo muutuja arvuna..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Loo muutuja sõnena..."; +Blockly.Msg["NEW_VARIABLE"] = "Uus muutuja ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Uue muutuja nimi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Uue muutuja tüüp:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "kood plokis"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "sisenditega:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://et.wikipedia.org/wiki/Alamprogramm"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Käivitab kasutaja defineeritud funktsiooni '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://et.wikipedia.org/wiki/Alamprogramm"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "sisenditega:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Tekita '%1' plokk"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Funktsiooni kirjeldus ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "teeme midagi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "funktsioon"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Tekitab funktsiooni, mis ei tagasta midagi."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "tagasta"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Tekitab funktsiooni, mis tagastab midagi."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Hoiatus: Sel funktsioonil on mitu sama nimega sisendit."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Tõsta funktsiooni definitsioon esile"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Kui väärtus on tõene, tagastatakse teine väärtus."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Hoiatus: Seda plokki saab kasutada ainult funktsiooni definitsioonis."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "sisend nimega:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Lisab funktsioonile sisendi."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "sisendid"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Funktsiooni sisendite lisamine, eemaldamine või järjestuse muutmine."; +Blockly.Msg["REDO"] = "Tee uuesti"; +Blockly.Msg["REMOVE_COMMENT"] = "Eemalda kommentaar"; +Blockly.Msg["RENAME_VARIABLE"] = "Nimeta muutuja ümber ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Muutuja „%1“ uus nimi:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "lisa muutuja %1 lõppu tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Lisab teksti muutuja „%1“ väärtuse lõppu."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "väikeste tähtedega"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Suurte Esitähtedega"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "SUURTE TÄHTEDEGA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Tagastab muudetud tähesuurusega teksti koopia."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "esimene sümbol"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "lõpust sümbol #"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "sümbol #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "viimane sümbol"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "juhuslik sümbol"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "tekstis %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Tagastab tekstis määratud asukohal oleva sümboli."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "loenda %1 %2-ses"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Loenda, mitu korda mingi tekst esineb teise teksti sees."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Objekti lisamine tekstile."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ühenda"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tekstiploki muutmine sektsioonide lisamise, eemaldamise või järjestuse muutmisega."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "kuni (lõpust) sümbolini #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "kuni sümbolini #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "kuni viimase sümbolini"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "tekstist"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "alates esimesest sümbolist"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "alates (lõpust) sümbolist #"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "alates sümbolist #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Tagastab määratud tüki tekstist."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "esimese leitud tekstitüki"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "viimase leitud tekstitüki"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekstist %1 %2 %3 asukoht"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Tagastab esimesest tekstist esimese/viimase leitud teise teksti asukoha (indeksi). Kui teksti ei leita, tagastab %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 on tühi"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Tagastab „tõene“, kui tekstis pole ühtegi sümbolit."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "tekita tekst"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tekitab teksti ühendades mistahes arvu elemente."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 pikkus"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Tagastab sümbolite aru (ka tühikud) toodud tekstis."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "trüki %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Trükib määratud teksti, numbri või mõne muu objekti väärtuse."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Küsib kasutajalt teadet näidates mingit arvu."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Küsib kasutajalt teadet näidates mingit teksti."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "kasutajalt küsitud arv teatega"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "kasutajalt küsitud tekst teatega"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "asenda %1 %2-ga %3-s"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Asenda mõne teksti esinemine mõnes muus tekstis."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "ümberpöördud %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Pöörab tekstis tähemärkide järjestuse ümber."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Täht, sõna või rida teksti."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "mõlemalt poolt eemaldatud tühikutega"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "algusest eemaldatud tühikutega"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "lõpust eemaldatud tühikutega"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Tagastab koopia tekstist, millel on tühikud ühelt või mõlemalt poolt eemaldatud."; +Blockly.Msg["TODAY"] = "Täna"; +Blockly.Msg["UNDO"] = "Võta tagasi"; +Blockly.Msg["UNNAMED_KEY"] = "nimetu"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "objekt"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Tekita 'määra „%1“ väärtuseks' plokk"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Tagastab selle muutuja väärtuse."; +Blockly.Msg["VARIABLES_SET"] = "määra %1 väärtuseks %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Tekita '„%1“ väärtus' plokk"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Määrab selle muutuja väärtuse võrdseks sisendi väärtusega."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1'-nimeline muutuja on juba olemas."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Muutuja nimega '%1' juba eksisteerib teise tüübina: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly tööruum"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Ütle midagi..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/eu.js b/msg/js/eu.js index 7a4a2dc8b86..b56c986a347 100644 --- a/msg/js/eu.js +++ b/msg/js/eu.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Iruzkina gehitu"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ezin da '%1' aldagaia ezabatu '%2' funtzioaren definizioaren zati delako."; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Aldatu balioa:"; -Blockly.Msg["CLEAN_UP"] = "Blokeak garbitu"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Blokeak kolapsatu"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Blokea kolapsatu"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1 Kolorea"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2 Kolorea"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "Ratioa"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "Nahastu"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Bi koloreko nahasketak erlazio jakin batekin nahasten ditu (0.0-1.0)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://eu.wikipedia.org/wiki/Kolore"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Hautatu kolore bat paletatik."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ausazko kolorea"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Aukeratu ausaz kolore bat."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "urdina"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "berdea"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "gorria"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Sortu kolorea zehaztutako gorriz, berdearekin eta urdinekin. Balio guztiak 0 eta 100 artean egon behar dira."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "begizta eten"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "jarraitu hurrengo begizta iterazioarekin"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Agertzen den begiztatik ihes egin."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%1 elementu bakoitzeko %2 zerrendan"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Zerrendako elementu bakoitzarentzat, ezarri %1 aldagaia elementura, eta egin adierazpen batzuk."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 zenbatu %2-tik %3-ra %4-ra"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "%1 aldagaiak hasierako zenbakiaren eta amaierako zenbakirako balioak hartzen ditu, zehaztutako tartea zenbatzen du eta zehaztutako blokeak egin."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Gehitu, ezabatu, ala berrantolatu aukeraketak \"ba\" bloke hau berrezartzeko."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "bestela"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "bestela baldin eta"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "baldin eta"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Balorea egia den bitartean, egin adierazpen batzuk."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, egin ezazu bigarren adierazpen blokea."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea. Baloreetako bat ere ez bada egia, egin ezazu adierazpenen azkeneko blokea."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://eu.wikipedia.org/wiki/For_begizta"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "egin"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "errepikatu %1 aldiz"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Adierazpen batzuk hainbat aldiz egin."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "arte errepikatu"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "bitartean errepikatu"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Balorea gezurra den bitartean, egin adierazpen batzuk."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Balorea egia den bitartean, egin adierazpen batzuk."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ezabatu %1 blokeak?"; -Blockly.Msg["DELETE_BLOCK"] = "Ezabatu blokea"; -Blockly.Msg["DELETE_VARIABLE"] = "%1 parametro izena ezabatu."; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ezabatu %2 aldagaiaren %1 erabilerak?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Ezabatu %1 bloke"; -Blockly.Msg["DIALOG_CANCEL"] = "Utzi"; -Blockly.Msg["DIALOG_OK"] = "Ados"; -Blockly.Msg["DISABLE_BLOCK"] = "Ezgaitu blokea"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Bikoiztu"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Iruzkina bikoiztu"; -Blockly.Msg["ENABLE_BLOCK"] = "Gaitu blokea"; -Blockly.Msg["EXPAND_ALL"] = "Blokeak Hedatu"; -Blockly.Msg["EXPAND_BLOCK"] = "Blokea Hedatu"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Kanpoko sarrerak"; -Blockly.Msg["HELP"] = "Laguntza"; -Blockly.Msg["INLINE_INPUTS"] = "Inpuntak Linean"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "sortu zerrenda hutsa"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Zerrenda bat itzultzen du, 0 luzera duena, daturik gabekoa"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "zerrenda"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Zerrenda sortu hurrengoarekin"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "lehena"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "lortu"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "lortu eta kendu"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "azkena"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ausazkoa"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "kendu"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Lehenengo artikulua zerrendara bueltatzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Artikulua zerrendako posizio zehatz batera bueltatzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Azken artikulua zerrendara bueltatzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Artikulu aleatorioa zerrendara bueltatzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Lehenengo artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Zerrendako azken artikulua kentzen eta bueltatzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Artikulu aleatorio bat zerrendatik kentzen eta bueltatzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Lehenengo artikulua zerrendatik kentzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Artikulua zerrendako posizio zehatz batetik kentzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Azken artikulua zerrendatik kentzen du."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Artikulu aleatorioa zerrendatik kentzen du."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 azken artikulua da."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 lehenengo artikulua da."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "zerrendan"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 hutsik dago"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "egia itzultzen du zerrenda hutsik badago."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "zerrendaren luzera"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "zerrendaren luzera itzultzen du"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "honela"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "ezarri"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "goranzkoa"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "beheranzkoa"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "Zenbakizkoa"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Alfabetikoki"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Testuatik lista sortu"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "listatik testua sortu"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "gezurra"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "egia"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://eu.wikipedia.org/wiki/Desberdintza"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ez %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "nulu"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "eta"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "edo"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "Froga"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "gezurra bada"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "egia bada"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://eu.wikipedia.org/wiki/Aritmetika"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Bi zenbakien batura ematen du."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Bi zenbakien zatidura ematen du."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Bi zenbakien kendura ematen du."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Bi zenbakien biderkadura ematen du."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "aldatu %1 %2(e)ra"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Gehitu zenbakia '%1' aldagaiari."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Konstante ohikoenetako bat itzultzen du: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), edo ∞ (infinitua)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "honakoaz zatigarria da"; -Blockly.Msg["MATH_IS_EVEN"] = "bikoitia da"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "negatiboa da"; -Blockly.Msg["MATH_IS_ODD"] = "bakoitia da"; -Blockly.Msg["MATH_IS_POSITIVE"] = "positiboa da"; -Blockly.Msg["MATH_IS_PRIME"] = "zenbaki lehena da"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "zenbaki osoa da"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2(r)en oroigarria"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://eu.wikipedia.org/wiki/Zenbaki"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Zenbaki bat."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "zerrendaren batazbestekoa"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "zerrendako maximoa"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "zerrendako mediana"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "zerrendako minimoa"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "zerrendako modak"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "zerrendako artikulu aleatorioa"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "zerrendako deribazio estandarra"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zerrendaren batura"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Zerrendako zenbakizko balioen batazbestekoa (aritmetikoa) itzultzen du."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Eman zerrendako zenbakirik handiena."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Eman zerrendako zenbaki media."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Eman zerrendako zenbakirik txikiena."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Bueltatu artikulurik ohikoenetarikoen zerrenda."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Itzuli zerrendako elementu aleatorioa."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Eman zerrendako zenbaki guztien batura."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "zatiki aleatorioa"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://eu.wikipedia.org/wiki/Biribiltze"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "biribildu"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "gutxiagoz biribildu"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "gehiagoz biribildu"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zenbaki bat gehiagoz edo gutxiagoz biribildu."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://eu.wikipedia.org/wiki/Erro_karratu"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolutua"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "erro karratua"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Zenbaki baten balio absolutua ematen du."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Zenbaki baten logaritmo naturala ematen du."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Zenbaki baten erro karratua ematen du."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://eu.wikipedia.org/wiki/Funtzio_trigonometriko"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Zenbaki baten arku kosinua ematen du."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Zenbaki baten arku sinua ematen du."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Zenbaki baten arku tangentea ematen du."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Kolore aldagaia sortu..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Zenbaki aldagaia sortu..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Kate aldakorra sortu..."; -Blockly.Msg["NEW_VARIABLE"] = "Aldagaia sortu..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Aldagai berriaren izena:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Aldagai mota berria:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "honekin"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Azpierrutina"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Azpierrutina"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "honekin"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' sortu"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "egin zerbait"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "honi"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "itzuli"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Abisua: Funtzio honek parametro bikoiztuak dauzka."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Balioa egiazkoa bada, orduan itzuli bigarren baliora."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "sarreraren izena:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "sarrerak"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Berregin"; -Blockly.Msg["REMOVE_COMMENT"] = "Iruzkina ezabatu"; -Blockly.Msg["RENAME_VARIABLE"] = "Aldatu aldagaiaren izena..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Aldatu '%1' aldagai guztien izenak eta izen hau eman:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "%1tik testu atxikita %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "hartu lehenengo letra"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hartu # letra bukaeratik"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hartu # letra"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "hartu azkenengo letra"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "letra aleatorioa lortu"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "testuan %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Gehitu artikulu bat testura."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "elkartu"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Gehitu, ezabatu, ala berrantolatu aukeraketak testu bloke hau berrezartzeko."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "testuan"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "bilatu testuaren lehenengo agerpena"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "bilatu testuaren azkenengo agerpena"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "testuan %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 hutsik dago"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "Testua sortu hurrengoarekin"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1(r)en luzeera"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "inprimatu %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "zehaztutako testua, zenbakia edo bestelako balioa inprimatzen du."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1(e)ri buelta eman"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Letra bat, hitza edo testuko lerroa."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Gaur"; -Blockly.Msg["UNDO"] = "Desegin"; -Blockly.Msg["UNNAMED_KEY"] = "izenik gabe"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elementua"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "%1 izeneko aldagaia dagoeneko existitzen da."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "%1 izeneko aldagaia dagoeneko existitzen da %2 motako beste aldagai batekin."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Esan zerbait..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Iruzkina gehitu"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ezin da '%1' aldagaia ezabatu '%2' funtzioaren definizioaren zati delako."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Aldatu balioa:"; +Blockly.Msg["CLEAN_UP"] = "Blokeak garbitu"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Blokeak kolapsatu"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Blokea kolapsatu"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1 Kolorea"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2 Kolorea"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "Ratioa"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "Nahastu"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Bi koloreko nahasketak erlazio jakin batekin nahasten ditu (0.0-1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://eu.wikipedia.org/wiki/Kolore"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Hautatu kolore bat paletatik."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ausazko kolorea"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Aukeratu ausaz kolore bat."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "urdina"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "berdea"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "gorria"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Sortu kolorea zehaztutako gorriz, berdearekin eta urdinekin. Balio guztiak 0 eta 100 artean egon behar dira."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "begizta eten"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "jarraitu hurrengo begizta iterazioarekin"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Agertzen den begiztatik ihes egin."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%1 elementu bakoitzeko %2 zerrendan"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Zerrendako elementu bakoitzarentzat, ezarri %1 aldagaia elementura, eta egin adierazpen batzuk."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 zenbatu %2-tik %3-ra %4-ra"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "%1 aldagaiak hasierako zenbakiaren eta amaierako zenbakirako balioak hartzen ditu, zehaztutako tartea zenbatzen du eta zehaztutako blokeak egin."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Gehitu, ezabatu, ala berrantolatu aukeraketak \"ba\" bloke hau berrezartzeko."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "bestela"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "bestela baldin eta"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "baldin eta"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Balorea egia den bitartean, egin adierazpen batzuk."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, egin ezazu bigarren adierazpen blokea."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea. Baloreetako bat ere ez bada egia, egin ezazu adierazpenen azkeneko blokea."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://eu.wikipedia.org/wiki/For_begizta"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "egin"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "errepikatu %1 aldiz"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Adierazpen batzuk hainbat aldiz egin."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "arte errepikatu"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "bitartean errepikatu"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Balorea gezurra den bitartean, egin adierazpen batzuk."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Balorea egia den bitartean, egin adierazpen batzuk."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ezabatu %1 blokeak?"; +Blockly.Msg["DELETE_BLOCK"] = "Ezabatu blokea"; +Blockly.Msg["DELETE_VARIABLE"] = "%1 parametro izena ezabatu."; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ezabatu %2 aldagaiaren %1 erabilerak?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Ezabatu %1 bloke"; +Blockly.Msg["DIALOG_CANCEL"] = "Utzi"; +Blockly.Msg["DIALOG_OK"] = "Ados"; +Blockly.Msg["DISABLE_BLOCK"] = "Ezgaitu blokea"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Bikoiztu"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Iruzkina bikoiztu"; +Blockly.Msg["ENABLE_BLOCK"] = "Gaitu blokea"; +Blockly.Msg["EXPAND_ALL"] = "Blokeak Hedatu"; +Blockly.Msg["EXPAND_BLOCK"] = "Blokea Hedatu"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Kanpoko sarrerak"; +Blockly.Msg["HELP"] = "Laguntza"; +Blockly.Msg["INLINE_INPUTS"] = "Inpuntak Linean"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "sortu zerrenda hutsa"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Zerrenda bat itzultzen du, 0 luzera duena, daturik gabekoa"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "zerrenda"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Zerrenda sortu hurrengoarekin"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "lehena"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "lortu"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "lortu eta kendu"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "azkena"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ausazkoa"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "kendu"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Lehenengo artikulua zerrendara bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Artikulua zerrendako posizio zehatz batera bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Azken artikulua zerrendara bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Artikulu aleatorioa zerrendara bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Lehenengo artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Zerrendako azken artikulua kentzen eta bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Artikulu aleatorio bat zerrendatik kentzen eta bueltatzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Lehenengo artikulua zerrendatik kentzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Artikulua zerrendako posizio zehatz batetik kentzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Azken artikulua zerrendatik kentzen du."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Artikulu aleatorioa zerrendatik kentzen du."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 azken artikulua da."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 lehenengo artikulua da."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "zerrendan"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 hutsik dago"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "egia itzultzen du zerrenda hutsik badago."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "zerrendaren luzera"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "zerrendaren luzera itzultzen du"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "honela"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ezarri"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "goranzkoa"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "beheranzkoa"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "Zenbakizkoa"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "Alfabetikoki"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Testuatik lista sortu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "listatik testua sortu"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "gezurra"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "egia"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://eu.wikipedia.org/wiki/Desberdintza"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ez %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "nulu"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "eta"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "edo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "Froga"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "gezurra bada"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "egia bada"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://eu.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Bi zenbakien batura ematen du."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Bi zenbakien zatidura ematen du."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Bi zenbakien kendura ematen du."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Bi zenbakien biderkadura ematen du."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "aldatu %1 %2(e)ra"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Gehitu zenbakia '%1' aldagaiari."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Konstante ohikoenetako bat itzultzen du: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), edo ∞ (infinitua)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "honakoaz zatigarria da"; +Blockly.Msg["MATH_IS_EVEN"] = "bikoitia da"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatiboa da"; +Blockly.Msg["MATH_IS_ODD"] = "bakoitia da"; +Blockly.Msg["MATH_IS_POSITIVE"] = "positiboa da"; +Blockly.Msg["MATH_IS_PRIME"] = "zenbaki lehena da"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "zenbaki osoa da"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2(r)en oroigarria"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://eu.wikipedia.org/wiki/Zenbaki"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Zenbaki bat."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "zerrendaren batazbestekoa"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "zerrendako maximoa"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "zerrendako mediana"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "zerrendako minimoa"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "zerrendako modak"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "zerrendako artikulu aleatorioa"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "zerrendako deribazio estandarra"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zerrendaren batura"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Zerrendako zenbakizko balioen batazbestekoa (aritmetikoa) itzultzen du."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Eman zerrendako zenbakirik handiena."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Eman zerrendako zenbaki media."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Eman zerrendako zenbakirik txikiena."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Bueltatu artikulurik ohikoenetarikoen zerrenda."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Itzuli zerrendako elementu aleatorioa."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Eman zerrendako zenbaki guztien batura."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "zatiki aleatorioa"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://eu.wikipedia.org/wiki/Biribiltze"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "biribildu"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "gutxiagoz biribildu"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "gehiagoz biribildu"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zenbaki bat gehiagoz edo gutxiagoz biribildu."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://eu.wikipedia.org/wiki/Erro_karratu"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolutua"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "erro karratua"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Zenbaki baten balio absolutua ematen du."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Zenbaki baten logaritmo naturala ematen du."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Zenbaki baten erro karratua ematen du."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://eu.wikipedia.org/wiki/Funtzio_trigonometriko"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Zenbaki baten arku kosinua ematen du."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Zenbaki baten arku sinua ematen du."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Zenbaki baten arku tangentea ematen du."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Kolore aldagaia sortu..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Zenbaki aldagaia sortu..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Kate aldakorra sortu..."; +Blockly.Msg["NEW_VARIABLE"] = "Aldagaia sortu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Aldagai berriaren izena:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Aldagai mota berria:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "honekin"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Azpierrutina"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Azpierrutina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "honekin"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' sortu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "egin zerbait"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "honi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "itzuli"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Abisua: Funtzio honek parametro bikoiztuak dauzka."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Balioa egiazkoa bada, orduan itzuli bigarren baliora."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "sarreraren izena:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "sarrerak"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Berregin"; +Blockly.Msg["REMOVE_COMMENT"] = "Iruzkina ezabatu"; +Blockly.Msg["RENAME_VARIABLE"] = "Aldatu aldagaiaren izena..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Aldatu '%1' aldagai guztien izenak eta izen hau eman:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1tik testu atxikita %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hartu lehenengo letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hartu # letra bukaeratik"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hartu # letra"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hartu azkenengo letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "letra aleatorioa lortu"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "testuan %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Gehitu artikulu bat testura."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "elkartu"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Gehitu, ezabatu, ala berrantolatu aukeraketak testu bloke hau berrezartzeko."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "testuan"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "bilatu testuaren lehenengo agerpena"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "bilatu testuaren azkenengo agerpena"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "testuan %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 hutsik dago"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "Testua sortu hurrengoarekin"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1(r)en luzeera"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "inprimatu %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "zehaztutako testua, zenbakia edo bestelako balioa inprimatzen du."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1(e)ri buelta eman"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Letra bat, hitza edo testuko lerroa."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Gaur"; +Blockly.Msg["UNDO"] = "Desegin"; +Blockly.Msg["UNNAMED_KEY"] = "izenik gabe"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elementua"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "%1 izeneko aldagaia dagoeneko existitzen da."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "%1 izeneko aldagaia dagoeneko existitzen da %2 motako beste aldagai batekin."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Esan zerbait..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/fa.js b/msg/js/fa.js index c2957c2c40f..3733e1b50a8 100644 --- a/msg/js/fa.js +++ b/msg/js/fa.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "افزودن نظر"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "متغیر '%1' را نمی‌توان پاک کرد، زیرا جزیی از تعریف تابع '%2' می‌باشد"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "تغییر مقدار:"; -Blockly.Msg["CLEAN_UP"] = "تمیز کردن بلوک‌ها"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "فروپاشی بلوک‌ها"; -Blockly.Msg["COLLAPSE_BLOCK"] = "فروپاشی بلوک"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ ۱"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ ۲"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "مخلوط"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "انتخاب یک رنگ از تخته‌رنگ."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رنگ تصادفی"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "انتخاب یک رنگ به شکل تصادفی."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "آبی"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "سبز"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "قرمز"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "رنگ با"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "خروج از حلقه"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ادامه با تکرار بعدی حلقه"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "شکستن حلقهٔ شامل."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "برای هر مورد %1 در فهرست %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "با تعداد %1 از %2 به %3 با گام‌های %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "افزودن یک شرط به بلوک اگر."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "اضافه کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "درغیر اینصورت"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "درغیر اینصورت اگر"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://fa.wikipedia.org/wiki/حلقه_فور"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "انجام"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 بار تکرار"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "انجام چند عبارت چندین بار."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تکرار تا زمانی که"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تکرار در حالی که"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "حذف همهٔ بلاک‌های %1؟"; -Blockly.Msg["DELETE_BLOCK"] = "حذف بلوک"; -Blockly.Msg["DELETE_VARIABLE"] = "متغیر '%1'را پاک کنید"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "تعداد %1 استفاده از متغیر '%2' پاک شود؟"; -Blockly.Msg["DELETE_X_BLOCKS"] = "حذف بلوک‌های %1"; -Blockly.Msg["DIALOG_CANCEL"] = "لغو"; -Blockly.Msg["DIALOG_OK"] = "تأیید"; -Blockly.Msg["DISABLE_BLOCK"] = "غیرفعال‌سازی بلوک"; -Blockly.Msg["DUPLICATE_BLOCK"] = "تکراری"; -Blockly.Msg["DUPLICATE_COMMENT"] = "دیدگاه تکراری"; -Blockly.Msg["ENABLE_BLOCK"] = "فعال‌سازی بلوک"; -Blockly.Msg["EXPAND_ALL"] = "گسترش بلوک‌ها"; -Blockly.Msg["EXPAND_BLOCK"] = "گسترش بلوک"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ورودی‌های خارجی"; -Blockly.Msg["HELP"] = "راهنما"; -Blockly.Msg["INLINE_INPUTS"] = "ورودی‌های درون خطی"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ایجاد فهرست خالی"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "فهرست"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "اضافه کردن، حذف کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ایجاد فهرست با"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "اضافه کردن یک مورد به فهرست."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "فهرستی از هر عددی از موارد می‌سازد."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "اولین"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# از انتها"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "گرفتن"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گرفتن و حذف‌کردن"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخرین"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "تصادفی"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حذف‌کردن"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "اولین مورد یک فهرست را بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "موردی در محل مشخص‌شده بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "آخرین مورد در یک فهرست را بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "یک مورد تصادفی در یک فهرست بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "اولین مورد را در یک فهرست حذف می‌کند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "آخرین مورد را در یک فهرست حذف می‌کند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "یک مورد تصادفی را یک فهرست حذف می‌کند."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "به # از انتها"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "به #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "به آخرین"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "گرفتن زیرمجموعه‌ای از ابتدا"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "گرفتن زیرمجموعه‌ای از # از انتها"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "گرفتن زیرمجموعه‌ای از #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 آخرین مورد است."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 اولین مورد است."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "یافتن اولین رخ‌داد مورد"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "یافتن آخرین رخ‌داد مورد"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود."; -Blockly.Msg["LISTS_INLIST"] = "در فهرست"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی است"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "اگر فهرست خالی است مقدار صجیج بر می‌گرداند."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "طول %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "طول یک فهرست را برمی‌گرداند."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "معکوس %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "یک کپی از لیست را معکوس کنید."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "به عنوان"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "درج در"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "اعمال"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "موردی به ته فهرست اضافه می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "موردی به ته فهرست الحاق می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "مورد را به صورت تصادفی در یک فهرست می‌افزاید."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "اولین مورد در یک فهرست را تعیین می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "مورد مشخص‌شده در یک فهرست را قرار می‌دهد."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "آخرین مورد در یک فهرست را تعیین می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "یک مورد تصادفی در یک فهرست را تعیین می‌کند."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "صعودی"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "نزولی"; -Blockly.Msg["LISTS_SORT_TITLE"] = "مرتب‌سازی%1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "یک کپی از لیست را مرتب کنید."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "حروفی ، رد کردن مورد"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "عددی"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "حروفی ، الفبایی"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ایجاد فهرست از متن"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ایجاد متن از فهرست"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "چسباندن یک فهرست از متن‌ها و تشکیل یک متن که با یک جداکننده جدا شده‌اند"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "شکستن متن به فهرستی از متن‌ها، شکستن در محل جداکننده"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "همراه جداساز"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ناصحیح"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "بازگرداندن یکی از صحیح یا ناصحیح."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "صحیح"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد."; -Blockly.Msg["LOGIC_NULL"] = "تهی"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "تهی بازمی‌گرداند."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمایش"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر ناصحیح"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر صحیح"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "بازگرداندن مقدار جمع دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "بازگرداندن باقی‌ماندهٔ دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "بازگرداندن تفاوت دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "بازگرداندن حاصلضرب دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "تغییر %1 با %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "افزودن یک عدد به متغیر '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "یکی از مقادیر ثابت جهانی را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "محدودکردن %1 پایین %2 بالا %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "تقسیم شده بر"; -Blockly.Msg["MATH_IS_EVEN"] = "زوج است"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی است"; -Blockly.Msg["MATH_IS_ODD"] = "فرد است"; -Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت است"; -Blockly.Msg["MATH_IS_PRIME"] = "عدد اول است"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند."; -Blockly.Msg["MATH_IS_WHOLE"] = "کامل است"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87"; -Blockly.Msg["MATH_MODULO_TITLE"] = "باقی‌ماندهٔ %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "یک عدد."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "میانگین فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بزرگ‌ترین عدد در فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "میانهٔ فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "کوچک‌ترین عدد در فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "مد فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "مورد تصادفی از فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "انحراف معیار فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جمع فهرست"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "بزرگ‌ترین عدد در فهرست را باز می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "میانهٔ عدد در فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "کوچک‌ترین عدد در فهرست را باز می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "موردی تصادفی از فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "انحراف معیار فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "جمع همهٔ عددهای فهرست را باز می‌گرداند."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "کسر تصادفی"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "عدد صحیح تصادفی بین %1 تا %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گردکردن"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "گرد به پایین"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "گرد به بالا"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "گردکردن یک عدد به بالا یا پایین."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ریشهٔ دوم"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "قدر مطلق یک عدد را بازمی‌گرداند."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "بازگرداندن توان e یک عدد."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "لوگاریتم طبیعی یک عدد را باز می‌گرداند."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "منفی‌شدهٔ یک عدد را باز می‌گرداند."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "بازگرداندن توان ۱۰ یک عدد."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ریشهٔ دوم یک عدد را باز می‌گرداند."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "بازگرداندن آرک‌کسینوس درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "بازگرداندن آرک‌سینوس درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "بازگرداندن آرک‌تانژانت درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "بازگرداندن کسینوس یک زاویه درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "بازگرداندن سینوس یک زاویه به درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "بازگرداندن تانژانت یک زاویه به درجه (نه رادیان)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ساخت متغیر رنگ..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ساخت متغیر عددی..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "ساخت متغیر رشته..."; -Blockly.Msg["NEW_VARIABLE"] = "ایجاد متغیر..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "نام متغیر تازه:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "نوع متغیر جدید:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اجازه اظهارات"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "با:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_(%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87)"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1»."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "با:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "ساختن «%1»"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "توصیف این عملکرد..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "انجام چیزی"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "به"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "تابعی می‌سازد بدون هیچ خروجی."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "بازگشت"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "تابعی با یک خروجی می‌سازد."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "اخطار: این تابعی پارامتر تکراری دارد."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "برجسته‌سازی تعریف تابع"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نام ورودی:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "اضافه کردن ورودی به تابع."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ورودی‌ها"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع."; -Blockly.Msg["REDO"] = "انجام دوباره"; -Blockly.Msg["REMOVE_COMMENT"] = "حذف نظر"; -Blockly.Msg["RENAME_VARIABLE"] = "تغییر نام متغیر..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تغییر نام همهٔ متغیرهای «%1» به:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "به %1 الحاق متن %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "الحاق متنی به متغیر «%1»."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "به حروف کوچک"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "به حروف بزرگ عنوان"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "به حروف بزرگ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "بازگرداندن کپی متن در حالتی متفاوت."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "گرفتن اولین حرف"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "گرفتن حرف # از آخر"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "گرفتن حرف #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "گرفتن آخرین حرف"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "گرفتن حرف تصادفی"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "در متن %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "حرفی در موقعیت مشخص‌شده بر می‌گرداند."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "تعداد %1 را در %2 بشمار"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "تعداد دفعاتی که یک متن درون یک متن دیگر تکرار شده است را برمی‌گرداند"; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "افزودن یک مورد به متن."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "عضویت"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "اضافه کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "به حرف # از انتها"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "به حرف #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "به آخرین حرف"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "در متن"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "گرفتن زیرمتن از اولین حرف"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "گرفتن زیرمتن از حرف # به انتها"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "گرفتن زیرمتن از حرف #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "اولین رخداد متن را بیاب"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "آخرین رخداد متن را بیاب"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "در متن %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی است"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "اضافه کردن صحیح اگر متن فراهم‌شده خالی است."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ایجاد متن با"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "چاپ %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "اعلان برای کاربر با یک عدد."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "اعلان برای کاربر برای یک متن."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "اعلان برای عدد با پیام"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "اعلان برای متن با پیام"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "درون %3، متن %1 را با %2 جایگزین کن"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "جایگزین کردن تمام مواردی که از متنی درون متن دیگر وجود دارد"; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "معکوس %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "چینش کاراکترها درون متن را برعکس می‌کند"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "یک حرف، کلمه یا خطی از متن."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "تراشیدن فاصله‌ها از هر دو طرف"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "تراشیدن فاصله‌ها از طرف چپ"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "تراشیدن فاصله‌ها از طرف چپ"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; -Blockly.Msg["TODAY"] = "امروز"; -Blockly.Msg["UNDO"] = "واگردانی"; -Blockly.Msg["UNNAMED_KEY"] = "بدون نام"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "مورد"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "درست‌کردن «تنظیم %1»"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "مقدار این متغیر را بر می‌گرداند."; -Blockly.Msg["VARIABLES_SET"] = "مجموعه %1 به %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "درست‌کردن «گرفتن %1»"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "متغیر برابر با خروجی را مشخص می‌کند."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "متغیری با نام '%1' هم اکنون وجود دارد"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "در حال حاضر یک متغیر با نام '%1' برای متغیر دیگری از نوع '%2' وجود دارد."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "یک چیزی بگو..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "افزودن نظر"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "متغیر '%1' را نمی‌توان پاک کرد، زیرا جزیی از تعریف تابع '%2' می‌باشد"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "تغییر مقدار:"; +Blockly.Msg["CLEAN_UP"] = "تمیز کردن بلوک‌ها"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "فروپاشی بلوک‌ها"; +Blockly.Msg["COLLAPSE_BLOCK"] = "فروپاشی بلوک"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ ۱"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ ۲"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "مخلوط"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "انتخاب یک رنگ از تخته‌رنگ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رنگ تصادفی"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "انتخاب یک رنگ به شکل تصادفی."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "آبی"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سبز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "قرمز"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رنگ با"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "خروج از حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ادامه با تکرار بعدی حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "شکستن حلقهٔ شامل."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "برای هر مورد %1 در فهرست %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "با تعداد %1 از %2 به %3 با گام‌های %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "افزودن یک شرط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "اضافه کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "درغیر اینصورت"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "درغیر اینصورت اگر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://fa.wikipedia.org/wiki/حلقه_فور"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "انجام"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 بار تکرار"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "انجام چند عبارت چندین بار."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تکرار تا زمانی که"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تکرار در حالی که"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "حذف همهٔ بلاک‌های %1؟"; +Blockly.Msg["DELETE_BLOCK"] = "حذف بلوک"; +Blockly.Msg["DELETE_VARIABLE"] = "متغیر '%1'را پاک کنید"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "تعداد %1 استفاده از متغیر '%2' پاک شود؟"; +Blockly.Msg["DELETE_X_BLOCKS"] = "حذف بلوک‌های %1"; +Blockly.Msg["DIALOG_CANCEL"] = "لغو"; +Blockly.Msg["DIALOG_OK"] = "تأیید"; +Blockly.Msg["DISABLE_BLOCK"] = "غیرفعال‌سازی بلوک"; +Blockly.Msg["DUPLICATE_BLOCK"] = "تکراری"; +Blockly.Msg["DUPLICATE_COMMENT"] = "دیدگاه تکراری"; +Blockly.Msg["ENABLE_BLOCK"] = "فعال‌سازی بلوک"; +Blockly.Msg["EXPAND_ALL"] = "گسترش بلوک‌ها"; +Blockly.Msg["EXPAND_BLOCK"] = "گسترش بلوک"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ورودی‌های خارجی"; +Blockly.Msg["HELP"] = "راهنما"; +Blockly.Msg["INLINE_INPUTS"] = "ورودی‌های درون خطی"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ایجاد فهرست خالی"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "فهرست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "اضافه کردن، حذف کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ایجاد فهرست با"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "اضافه کردن یک مورد به فهرست."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "فهرستی از هر عددی از موارد می‌سازد."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "اولین"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# از انتها"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گرفتن"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گرفتن و حذف‌کردن"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخرین"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "تصادفی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حذف‌کردن"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "اولین مورد یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "موردی در محل مشخص‌شده بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "آخرین مورد در یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "یک مورد تصادفی در یک فهرست بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "اولین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "آخرین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "یک مورد تصادفی را یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "به # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "به #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "به آخرین"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "گرفتن زیرمجموعه‌ای از ابتدا"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "گرفتن زیرمجموعه‌ای از # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "گرفتن زیرمجموعه‌ای از #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 آخرین مورد است."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 اولین مورد است."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "یافتن اولین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "یافتن آخرین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود."; +Blockly.Msg["LISTS_INLIST"] = "در فهرست"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "اگر فهرست خالی است مقدار صجیج بر می‌گرداند."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "طول یک فهرست را برمی‌گرداند."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "معکوس %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "یک کپی از لیست را معکوس کنید."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "به عنوان"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "درج در"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "اعمال"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "موردی به ته فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "موردی به ته فهرست الحاق می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "مورد را به صورت تصادفی در یک فهرست می‌افزاید."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "اولین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "مورد مشخص‌شده در یک فهرست را قرار می‌دهد."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "آخرین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "یک مورد تصادفی در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "صعودی"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "نزولی"; +Blockly.Msg["LISTS_SORT_TITLE"] = "مرتب‌سازی%1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "یک کپی از لیست را مرتب کنید."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "حروفی ، رد کردن مورد"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "عددی"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "حروفی ، الفبایی"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ایجاد فهرست از متن"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ایجاد متن از فهرست"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "چسباندن یک فهرست از متن‌ها و تشکیل یک متن که با یک جداکننده جدا شده‌اند"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "شکستن متن به فهرستی از متن‌ها، شکستن در محل جداکننده"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "همراه جداساز"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ناصحیح"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "بازگرداندن یکی از صحیح یا ناصحیح."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "صحیح"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد."; +Blockly.Msg["LOGIC_NULL"] = "تهی"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "تهی بازمی‌گرداند."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمایش"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر ناصحیح"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر صحیح"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "بازگرداندن مقدار جمع دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "بازگرداندن باقی‌ماندهٔ دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "بازگرداندن تفاوت دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "بازگرداندن حاصلضرب دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "تغییر %1 با %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "افزودن یک عدد به متغیر '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "یکی از مقادیر ثابت جهانی را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "محدودکردن %1 پایین %2 بالا %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "تقسیم شده بر"; +Blockly.Msg["MATH_IS_EVEN"] = "زوج است"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی است"; +Blockly.Msg["MATH_IS_ODD"] = "فرد است"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت است"; +Blockly.Msg["MATH_IS_PRIME"] = "عدد اول است"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند."; +Blockly.Msg["MATH_IS_WHOLE"] = "کامل است"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87"; +Blockly.Msg["MATH_MODULO_TITLE"] = "باقی‌ماندهٔ %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "یک عدد."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "میانگین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بزرگ‌ترین عدد در فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "میانهٔ فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "کوچک‌ترین عدد در فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "مد فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "مورد تصادفی از فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "انحراف معیار فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جمع فهرست"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "بزرگ‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "میانهٔ عدد در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "کوچک‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "موردی تصادفی از فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "انحراف معیار فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "جمع همهٔ عددهای فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "کسر تصادفی"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "عدد صحیح تصادفی بین %1 تا %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گردکردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "گرد به پایین"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "گرد به بالا"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "گردکردن یک عدد به بالا یا پایین."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ریشهٔ دوم"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "قدر مطلق یک عدد را بازمی‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "بازگرداندن توان e یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "لوگاریتم طبیعی یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "منفی‌شدهٔ یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "بازگرداندن توان ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ریشهٔ دوم یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "بازگرداندن آرک‌کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "بازگرداندن آرک‌سینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "بازگرداندن آرک‌تانژانت درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "بازگرداندن کسینوس یک زاویه درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "بازگرداندن سینوس یک زاویه به درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "بازگرداندن تانژانت یک زاویه به درجه (نه رادیان)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ساخت متغیر رنگ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ساخت متغیر عددی..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "ساخت متغیر رشته..."; +Blockly.Msg["NEW_VARIABLE"] = "ایجاد متغیر..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نام متغیر تازه:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "نوع متغیر جدید:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اجازه اظهارات"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_(%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1»."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "ساختن «%1»"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "توصیف این عملکرد..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "انجام چیزی"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "به"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "تابعی می‌سازد بدون هیچ خروجی."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "بازگشت"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "تابعی با یک خروجی می‌سازد."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "اخطار: این تابعی پارامتر تکراری دارد."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "برجسته‌سازی تعریف تابع"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نام ورودی:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "اضافه کردن ورودی به تابع."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ورودی‌ها"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع."; +Blockly.Msg["REDO"] = "انجام دوباره"; +Blockly.Msg["REMOVE_COMMENT"] = "حذف نظر"; +Blockly.Msg["RENAME_VARIABLE"] = "تغییر نام متغیر..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تغییر نام همهٔ متغیرهای «%1» به:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "به %1 الحاق متن %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "الحاق متنی به متغیر «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "به حروف کوچک"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "به حروف بزرگ عنوان"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "به حروف بزرگ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "بازگرداندن کپی متن در حالتی متفاوت."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "گرفتن اولین حرف"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "گرفتن حرف # از آخر"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "گرفتن حرف #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "گرفتن آخرین حرف"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "گرفتن حرف تصادفی"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "در متن %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "حرفی در موقعیت مشخص‌شده بر می‌گرداند."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "تعداد %1 را در %2 بشمار"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "تعداد دفعاتی که یک متن درون یک متن دیگر تکرار شده است را برمی‌گرداند"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "افزودن یک مورد به متن."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "عضویت"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "اضافه کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "به حرف # از انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "به حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "به آخرین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "در متن"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "گرفتن زیرمتن از اولین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "گرفتن زیرمتن از حرف # به انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "گرفتن زیرمتن از حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "اولین رخداد متن را بیاب"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "آخرین رخداد متن را بیاب"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "در متن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "اضافه کردن صحیح اگر متن فراهم‌شده خالی است."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ایجاد متن با"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "چاپ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "اعلان برای کاربر با یک عدد."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "اعلان برای کاربر برای یک متن."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "اعلان برای عدد با پیام"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "اعلان برای متن با پیام"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "درون %3، متن %1 را با %2 جایگزین کن"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "جایگزین کردن تمام مواردی که از متنی درون متن دیگر وجود دارد"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "معکوس %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "چینش کاراکترها درون متن را برعکس می‌کند"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "یک حرف، کلمه یا خطی از متن."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "تراشیدن فاصله‌ها از هر دو طرف"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; +Blockly.Msg["TODAY"] = "امروز"; +Blockly.Msg["UNDO"] = "واگردانی"; +Blockly.Msg["UNNAMED_KEY"] = "بدون نام"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "مورد"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "درست‌کردن «تنظیم %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "مقدار این متغیر را بر می‌گرداند."; +Blockly.Msg["VARIABLES_SET"] = "مجموعه %1 به %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "درست‌کردن «گرفتن %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "متغیر برابر با خروجی را مشخص می‌کند."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "متغیری با نام '%1' هم اکنون وجود دارد"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "در حال حاضر یک متغیر با نام '%1' برای متغیر دیگری از نوع '%2' وجود دارد."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "یک چیزی بگو..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/fi.js b/msg/js/fi.js index 3382d56dbea..5f67eb2bb4d 100644 --- a/msg/js/fi.js +++ b/msg/js/fi.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Lisää kommentti"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ei voida poistaa muuttujaa '%1' koska se on osa funktion määritelmää '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muuta arvoa:"; -Blockly.Msg["CLEAN_UP"] = "Siivoa lohkot"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Supistetut lohkot sisältävät varoituksia."; -Blockly.Msg["COLLAPSE_ALL"] = "Sulje lohkot"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Sulje lohko"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "väri 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "väri 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "suhde"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "sekoitus"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sekoittaa kaksi väriä keskenään annetussa suhteessa (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fi.wikipedia.org/wiki/V%C3%A4ri"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Valitse väri paletista."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "satunnainen väri"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Valitse väri sattumanvaraisesti."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "sininen"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "vihreä"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "punainen"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "väri, jossa on"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Luo väri, jossa on tietty määrä punaista, vihreää ja sinistä. Kaikkien arvojen tulee olla välillä 0 - 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "poistu silmukasta"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "jatka silmukan seuraavaan toistoon"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Poistu sisemmästä silmukasta."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ohita loput tästä silmukasta ja siirry seuraavaan toistoon."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Varoitus: Tätä lohkoa voi käyttää vain silmukan sisällä."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "kullekin kohteelle %1 listassa %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Aseta muuttujan %1 arvoksi kukin listan kohde vuorollaan ja suorita joukko lausekkeita."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "laske %1 Väli %2-%3 %4:n välein"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Aseta muuttujaan \"%1\" arvot alkuarvosta loppuarvoon annetun askeleen välein ja suorita joka askeleella annettu koodilohko."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Lisää ehto \"jos\" lohkoon."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Lisää lopullinen \"muuten\" lohko \"jos\" lohkoon."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Lisää, poista tai järjestele osioita tässä \"jos\" lohkossa."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "muuten"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "muuten jos"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jos"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jos arvo on tosi, suorita lauseke."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jos arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten suorita toinen lohko lausekkeita."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita. Jos mikään arvoista ei ole tosi, suorita viimeinen lohko lausekkeita."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "tee"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "toista %1 kertaa"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Suorita joukko lausekkeita useampi kertaa."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "toista kunnes"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "toista niin kauan kuin"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Niin kauan kuin arvo on epätosi, suorita joukko lausekkeita."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Niin kauan kuin arvo on tosi, suorita joukko lausekkeita."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Poistetaanko kaikki %1 lohkoa?"; -Blockly.Msg["DELETE_BLOCK"] = "Poista lohko"; -Blockly.Msg["DELETE_VARIABLE"] = "Poista muuttuja '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Poistetaanko %1 käyttöä muuttujalta '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Poista %1 lohkoa"; -Blockly.Msg["DIALOG_CANCEL"] = "Peru"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Passivoi lohko"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Kaksoiskappale"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Kahdenna kommentti"; -Blockly.Msg["ENABLE_BLOCK"] = "Aktivoi lohko"; -Blockly.Msg["EXPAND_ALL"] = "Laajenna lohkot"; -Blockly.Msg["EXPAND_BLOCK"] = "Laajenna lohko"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Ulkoiset syötteet"; -Blockly.Msg["HELP"] = "Apua"; -Blockly.Msg["INLINE_INPUTS"] = "Tuo syötteet"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Luo tyhjä lista"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Palauta tyhjä lista, pituus 0"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Listää, poista tai järjestele uudestaan osioita tässä lohkossa."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "luo lista"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Lisää kohde listaan."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Luo lista, jossa on mikä tahansa määrä kohteita."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ensimmäinen"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "nro (lopusta laskien)"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "nro"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "hae"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hae ja poista"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "viimeinen"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "satunnainen"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "poista"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Palauta ensimmäinen kohde listalta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Palauta kohde annetusta kohdasta listaa."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Palauttaa listan viimeisen kohteen."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Palauttaa satunnaisen kohteen listalta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Poistaa ja palauttaa ensimmäisen kohteen listalta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Poistaa ja palauttaa kohteen listan annetusta kohdasta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Poistaa ja palauttaa viimeisen kohteen listalta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Poistaa ja palauttaa satunnaisen kohteen listalta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Poistaa ensimmäisen kohteen listalta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Poistaa kohteen listalta annetusta kohtaa."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Poistaa viimeisen kohteen listalta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Poistaa satunnaisen kohteen listalta."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "päättyen kohtaan (lopusta laskien)"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "päättyen kohtaan"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "viimeinen"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "hae osalista alkaen alusta"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "hae osalista alkaen kohdasta (lopusta laskien)"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "hae osalista alkaen kohdasta"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Luo kopio määrätystä kohden listaa."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Numero %1 tarkoittaa listan viimeistä kohdetta."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Numero %1 tarkoittaa listan ensimmäistä kohdetta."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "etsi ensimmäinen esiintymä kohteelle"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "etsi viimeinen esiintymä kohteelle"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Palauttaa kohteen ensimmäisen/viimeisen esiintymän kohdan listassa. Palauttaa %1 jos kohdetta ei löydy."; -Blockly.Msg["LISTS_INLIST"] = "listassa"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 on tyhjä"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Palauttaa tosi, jos lista on tyhjä."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1:n pituus"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Palauttaa listan pituuden."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "luo lista, jossa kohde %1 toistuu %2 kertaa"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Luo listan, jossa annettu arvo toistuu määrätyn monta kertaa."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 takaperin"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Palauta käännetty kopio listasta."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kohteeksi"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "lisää kohtaan"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "aseta"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Lisää kohteen listan kärkeen."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Lisää kohteen annettuun kohtaan listassa."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Lisää kohteen listan loppuun."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Lisää kohteen satunnaiseen kohtaan listassa."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Asettaa listan ensimmäisen kohteen."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Asettaa kohteen annettuun kohtaan listassa."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Asettaa listan viimeisen kohteen."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Asettaa satunnaisen kohteen listassa."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "nouseva"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "laskeva"; -Blockly.Msg["LISTS_SORT_TITLE"] = "lajittele %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Lajittele kopio luettelosta."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "aakkosjärjestyksessä, välittämättä kirjainkoosta"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeerinen"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "aakkosjärjestys"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "tee lista tekstistä"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tee listasta teksti"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Yhdistä luettelon tekstit yhdeksi tekstiksi, erotettuina välimerkillä."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Jaa teksti osiin erotinmerkin perusteella ja järjestä osat listaksi."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "erottimen kanssa"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "epätosi"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Palauttaa joko tosi tai epätosi."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tosi"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fi.wikipedia.org/wiki/Ep%C3%A4yht%C3%A4l%C3%B6"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Palauta tosi, jos syötteet ovat keskenään samat."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Palauttaa tosi, jos ensimmäinen syöte on suurempi, kuin toinen."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Palauttaa tosi, jos ensimmäinen syöte on suurempi tai yhtä suuri, kuin toinen."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Palauttaa tosi, jos ensimmäinen syöte on pienempi, kuin toinen."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Palauttaa tosi, jos ensimmäinen syöte on pienempi tai yhtä suuri, kuin toinen."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Palauttaa tosi, jos syötteet eivät ole keskenään samoja."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ei %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Palauttaa tosi, jos syöte on epätosi. Palauttaa epätosi, jos syöte on tosi."; -Blockly.Msg["LOGIC_NULL"] = "ei mitään"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Palauttaa \"ei mitään\"-arvon."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ja"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "tai"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Palauttaa tosi, jos kummatkin syötteet ovat tosia."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Palauttaa tosi, jos ainakin yksi syötteistä on tosi."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "testi"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jos epätosi"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jos tosi"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Tarkistaa testin ehdon. Jos ehto on tosi, palauttaa \"jos tosi\" arvon, muuten palauttaa \"jos epätosi\" arvon."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "http://fi.wikipedia.org/wiki/Aritmetiikka"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Palauttaa kahden luvun summan."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Palauttaa jakolaskun osamäärän."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Palauttaa kahden luvun erotuksen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Palauttaa kertolaskun tulon."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Palauttaa ensimmäisen luvun korotettuna toisen luvun potenssiin."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan(X:%1,Y:%2)"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Palauta pisteen (X,Y) arkustangentti välillä -180–180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fi.wikipedia.org/wiki/Yhteenlasku"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "muuta %1 arvolla %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lisää arvo muuttujaan '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Palauttaa jonkin seuraavista vakioista: π (3.141…), e (2.718…), φ (1.618…), neliöjuuri(2) (1.414…), neliöjuuri(½) (0.707…), or ∞ (ääretön)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "rajoita %1 vähintään %2 enintään %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Rajoittaa arvon annetulle suljetulle välille."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "on jaollinen luvulla"; -Blockly.Msg["MATH_IS_EVEN"] = "on parillinen"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "on negatiivinen"; -Blockly.Msg["MATH_IS_ODD"] = "on pariton"; -Blockly.Msg["MATH_IS_POSITIVE"] = "on positiivinen"; -Blockly.Msg["MATH_IS_PRIME"] = "on alkuluku"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Tarkistaa onko numero parillinen, pariton, alkuluku, kokonaisluku, positiivinen, negatiivinen, tai jos se on jaollinen toisella luvulla. Palauttaa tosi tai epätosi."; -Blockly.Msg["MATH_IS_WHOLE"] = "on kokonaisluku"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 jakojäännös"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Palauttaa jakolaskun jakojäännöksen."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "⋅"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fi.wikipedia.org/wiki/Luku"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Luku."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "keskiarvo luvuista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "suurin luvuista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "keskiluku luvuista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "pienin luvuista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "tyyppiarvo luvuista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "satunnainen valinta luvuista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "keskihajonta luvuista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa luvuista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Palauttaa aritmeettisen keskiarvon annetuista luvuista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Palauttaa suurimman annetuista luvuista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Palauttaa annettujen lukujen keskiluvun."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Palauttaa pienimmän annetuista luvuista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Palauttaa luettelon yleisimmistä luvuista annetussa listassa."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Palauttaa satunnaisesti valitun luvun annetuista luvuista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Palauttaa annettujen lukujen keskihajonnan."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Palauttaa kaikkien annettujen lukujen summan."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fi.wikipedia.org/wiki/Satunnaisluku"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "satunnainen murtoluku"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Palauttaa satunnaisen luvun oikealta puoliavoimesta välistä [0.0, 1.0)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fi.wikipedia.org/wiki/Satunnaisluku"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "Palauttaa satunnaisen kokonaisluvun väliltä %1-%2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Palauttaa satunnaisen kokonaisluvun kahden annetun arvon suljetulta väliltä."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fi.wikipedia.org/wiki/Py%C3%B6rist%C3%A4minen"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "pyöristä"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "pyöristä alaspäin"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "pyöristä ylöspäin"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Pyöristää luvun ylös- tai alaspäin."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fi.wikipedia.org/wiki/Neli%C3%B6juuri"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "itseisarvo"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "neliöjuuri"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Palauttaa luvun itseisarvon."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Palauttaa e potenssiin luku."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Palauttaa luvun luonnollisen logaritmin."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Palauttaa luvun kymmenkantaisen logaritmin."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Palauttaa numeron vastaluvun."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Palauttaa 10 potenssiin luku."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Palauttaa luvun neliöjuuren."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fi.wikipedia.org/wiki/Trigonometrinen_funktio"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Palauttaa luvun arkuskosinin."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Palauttaa luvun arkussinin."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Palauttaa luvun arkustangentin."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Palauttaa asteluvun (ei radiaanin) kosinin."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Palauttaa asteluvun (ei radiaanin) sinin."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Palauttaa asteluvun (ei radiaanin) tangentin."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Luo värimuuttuja..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Luo numeromuuttuja..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Luo merkkijonomuuttuja..."; -Blockly.Msg["NEW_VARIABLE"] = "Luo muuttuja..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Uuden muuttujan nimi:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Uuden muuttujan tyyppi:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "salli kommentit"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "parametrit:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fi.wikipedia.org/wiki/Aliohjelma"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Suorittaa käyttäjän määrittelemä funktio '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fi.wikipedia.org/wiki/Aliohjelma"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Suorittaa käyttäjän määrittelemän funktion '%1' ja käyttää sen tuotosta."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "parametrit:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Luo '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Kuvaile tämä funktio..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "tee jotain"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "tehdäksesi"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Luo funktio, jolla ei ole tuotosta."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "palauta"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Luo funktio, jolla ei ole tuotosta."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Varoitus: tällä funktiolla on sama parametri useamman kerran."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Korosta funktion määritelmä"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jos arvo on tosi, palauta toinen arvo."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Varoitus: tätä lohkoa voi käyttää vain funktion määrityksessä."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "syötteen nimi:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Lisää sisääntulon funktioon."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "syötteet"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Lisää, poista tai järjestele uudelleen tämän toiminnon tulot."; -Blockly.Msg["REDO"] = "Tee uudelleen"; -Blockly.Msg["REMOVE_COMMENT"] = "Poista kommentti"; -Blockly.Msg["RENAME_VARIABLE"] = "Nimeä uudelleen muuttuja..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Nimeä uudelleen kaikki '%1' muuttujaa:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "muuttujaan %1 lisää teksti %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Lisää tekstiä muuttujaan '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "pienet kirjaimet"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "isot alkukirjaimet"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "isot kirjaimet"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Palauttaa kopion tekstistä eri kirjainkoossa."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "hae ensimmäinen kirjain"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "Hae kirjain nro (lopusta laskien)"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "Hae kirjain nro"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "hae viimeinen kirjain"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hae satunnainen kirjain"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "tekstissä %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Palauttaa annetussa kohdassa olevan kirjaimen."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "laske määrä '%1' '%2' sisällä"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Laske kuinka monta kertaa jokin teksti esiintyy jossakin toisessa tekstissä."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Lisää kohteen tekstiin."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "liitä"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Lisää, poista tai uudelleen järjestä osioita tässä lohkossa."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "kirjaimeen nro (lopusta laskien)"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "kirjaimeen nro"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "viimeiseen kirjaimeen"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "merkkijonosta"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "hae osa alkaen ensimmäisestä kirjaimesta"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hae osa alkaen kirjaimesta nro (lopusta laskien)"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hae osa alkaen kirjaimesta nro"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Palauttaa määrätyn osan tekstistä."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "etsi ensimmäinen esiintymä merkkijonolle"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "etsi viimeinen esiintymä merkkijonolle"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekstissä %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Palauttaa ensin annetun tekstin ensimmäisen/viimeisen esiintymän osoitteen toisessa tekstissä. Palauttaa osoitteen %1 jos tekstiä ei löytynyt."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 on tyhjä"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Palauttaa tosi, jos annettu teksti on tyhjä."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "luo teksti"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Luo merkkijonon liittämällä yhteen minkä tahansa määrän kohteita."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1:n pituus"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Palauttaa annetussa tekstissä olevien merkkien määrän (välilyönnit mukaan lukien)."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "tulosta %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Tulostaa annetun tekstin, numeron tai muun arvon."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Kehottaa käyttäjää syöttämään numeron."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Kehottaa käyttäjää syöttämään tekstiä."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "käyttäen annettua viestiä, kehottaa syöttämään numeron"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "käyttäen annettua viestiä, kehottaa syöttämään tekstiä"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "Korvaa teksti %1 tekstillä %2 tekstissä %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Korvaa tietyn tekstin ilmentymät tekstin sisällä."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 takaperin"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Muuttaa tekstin kirjainten järjestyksen toisin päin."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fi.wikipedia.org/wiki/Merkkijono"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Kirjain, sana tai rivi tekstiä."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "poistaa välilyönnit kummaltakin puolelta"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "poistaa välilyönnit vasemmalta puolelta"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "poistaa välilyönnit oikealta puolelta"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Palauttaa kopion tekstistä siten, että välilyönnit on poistettu yhdestä tai molemmista päistä."; -Blockly.Msg["TODAY"] = "Tänään"; -Blockly.Msg["UNDO"] = "Kumoa"; -Blockly.Msg["UNNAMED_KEY"] = "nimetön"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "kohde"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Luo 'aseta %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Palauttaa muuttujan arvon."; -Blockly.Msg["VARIABLES_SET"] = "aseta %1 arvoksi %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Luo 'hae %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Asettaa muutujan arvoksi annetun syötteen."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Muuttuja nimeltään '%1' on jo olemassa."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Muuttuja nimeltä '%1' on jo olemassa toiselle tyypille: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklyn työnäkymä"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sano jotakin..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Lisää kommentti"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ei voida poistaa muuttujaa '%1' koska se on osa funktion määritelmää '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muuta arvoa:"; +Blockly.Msg["CLEAN_UP"] = "Siivoa lohkot"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Supistetut lohkot sisältävät varoituksia."; +Blockly.Msg["COLLAPSE_ALL"] = "Sulje lohkot"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Sulje lohko"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "väri 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "väri 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "suhde"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "sekoitus"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sekoittaa kaksi väriä keskenään annetussa suhteessa (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fi.wikipedia.org/wiki/V%C3%A4ri"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Valitse väri paletista."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "satunnainen väri"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Valitse väri sattumanvaraisesti."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "sininen"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "vihreä"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "punainen"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "väri, jossa on"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Luo väri, jossa on tietty määrä punaista, vihreää ja sinistä. Kaikkien arvojen tulee olla välillä 0 - 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "poistu silmukasta"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "jatka silmukan seuraavaan toistoon"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Poistu sisemmästä silmukasta."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ohita loput tästä silmukasta ja siirry seuraavaan toistoon."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Varoitus: Tätä lohkoa voi käyttää vain silmukan sisällä."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "kullekin kohteelle %1 listassa %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Aseta muuttujan %1 arvoksi kukin listan kohde vuorollaan ja suorita joukko lausekkeita."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "laske %1 Väli %2-%3 %4:n välein"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Aseta muuttujaan \"%1\" arvot alkuarvosta loppuarvoon annetun askeleen välein ja suorita joka askeleella annettu koodilohko."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Lisää ehto \"jos\" lohkoon."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Lisää lopullinen \"muuten\" lohko \"jos\" lohkoon."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Lisää, poista tai järjestele osioita tässä \"jos\" lohkossa."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "muuten"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "muuten jos"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jos"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jos arvo on tosi, suorita lauseke."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jos arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten suorita toinen lohko lausekkeita."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita. Jos mikään arvoista ei ole tosi, suorita viimeinen lohko lausekkeita."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "tee"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "toista %1 kertaa"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Suorita joukko lausekkeita useampi kertaa."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "toista kunnes"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "toista niin kauan kuin"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Niin kauan kuin arvo on epätosi, suorita joukko lausekkeita."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Niin kauan kuin arvo on tosi, suorita joukko lausekkeita."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Poistetaanko kaikki %1 lohkoa?"; +Blockly.Msg["DELETE_BLOCK"] = "Poista lohko"; +Blockly.Msg["DELETE_VARIABLE"] = "Poista muuttuja '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Poistetaanko %1 käyttöä muuttujalta '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Poista %1 lohkoa"; +Blockly.Msg["DIALOG_CANCEL"] = "Peru"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Passivoi lohko"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kaksoiskappale"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kahdenna kommentti"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktivoi lohko"; +Blockly.Msg["EXPAND_ALL"] = "Laajenna lohkot"; +Blockly.Msg["EXPAND_BLOCK"] = "Laajenna lohko"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ulkoiset syötteet"; +Blockly.Msg["HELP"] = "Apua"; +Blockly.Msg["INLINE_INPUTS"] = "Tuo syötteet"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Luo tyhjä lista"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Palauta tyhjä lista, pituus 0"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Listää, poista tai järjestele uudestaan osioita tässä lohkossa."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "luo lista"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Lisää kohde listaan."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Luo lista, jossa on mikä tahansa määrä kohteita."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ensimmäinen"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "nro (lopusta laskien)"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "nro"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "hae"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hae ja poista"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "viimeinen"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "satunnainen"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "poista"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Palauta ensimmäinen kohde listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Palauta kohde annetusta kohdasta listaa."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Palauttaa listan viimeisen kohteen."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Palauttaa satunnaisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Poistaa ja palauttaa ensimmäisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Poistaa ja palauttaa kohteen listan annetusta kohdasta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Poistaa ja palauttaa viimeisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Poistaa ja palauttaa satunnaisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Poistaa ensimmäisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Poistaa kohteen listalta annetusta kohtaa."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Poistaa viimeisen kohteen listalta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Poistaa satunnaisen kohteen listalta."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "päättyen kohtaan (lopusta laskien)"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "päättyen kohtaan"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "viimeinen"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "hae osalista alkaen alusta"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "hae osalista alkaen kohdasta (lopusta laskien)"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "hae osalista alkaen kohdasta"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Luo kopio määrätystä kohden listaa."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Numero %1 tarkoittaa listan viimeistä kohdetta."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Numero %1 tarkoittaa listan ensimmäistä kohdetta."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "etsi ensimmäinen esiintymä kohteelle"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "etsi viimeinen esiintymä kohteelle"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Palauttaa kohteen ensimmäisen/viimeisen esiintymän kohdan listassa. Palauttaa %1 jos kohdetta ei löydy."; +Blockly.Msg["LISTS_INLIST"] = "listassa"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 on tyhjä"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Palauttaa tosi, jos lista on tyhjä."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1:n pituus"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Palauttaa listan pituuden."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "luo lista, jossa kohde %1 toistuu %2 kertaa"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Luo listan, jossa annettu arvo toistuu määrätyn monta kertaa."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 takaperin"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Palauta käännetty kopio listasta."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kohteeksi"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "lisää kohtaan"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "aseta"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Lisää kohteen listan kärkeen."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Lisää kohteen annettuun kohtaan listassa."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Lisää kohteen listan loppuun."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Lisää kohteen satunnaiseen kohtaan listassa."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Asettaa listan ensimmäisen kohteen."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Asettaa kohteen annettuun kohtaan listassa."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Asettaa listan viimeisen kohteen."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Asettaa satunnaisen kohteen listassa."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "nouseva"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "laskeva"; +Blockly.Msg["LISTS_SORT_TITLE"] = "lajittele %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Lajittele kopio luettelosta."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "aakkosjärjestyksessä, välittämättä kirjainkoosta"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeerinen"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "aakkosjärjestys"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "tee lista tekstistä"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tee listasta teksti"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Yhdistä luettelon tekstit yhdeksi tekstiksi, erotettuina välimerkillä."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Jaa teksti osiin erotinmerkin perusteella ja järjestä osat listaksi."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "erottimen kanssa"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "epätosi"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Palauttaa joko tosi tai epätosi."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tosi"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fi.wikipedia.org/wiki/Ep%C3%A4yht%C3%A4l%C3%B6"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Palauta tosi, jos syötteet ovat keskenään samat."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Palauttaa tosi, jos ensimmäinen syöte on suurempi, kuin toinen."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Palauttaa tosi, jos ensimmäinen syöte on suurempi tai yhtä suuri, kuin toinen."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Palauttaa tosi, jos ensimmäinen syöte on pienempi, kuin toinen."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Palauttaa tosi, jos ensimmäinen syöte on pienempi tai yhtä suuri, kuin toinen."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Palauttaa tosi, jos syötteet eivät ole keskenään samoja."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ei %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Palauttaa tosi, jos syöte on epätosi. Palauttaa epätosi, jos syöte on tosi."; +Blockly.Msg["LOGIC_NULL"] = "ei mitään"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Palauttaa \"ei mitään\"-arvon."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ja"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "tai"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Palauttaa tosi, jos kummatkin syötteet ovat tosia."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Palauttaa tosi, jos ainakin yksi syötteistä on tosi."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "testi"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jos epätosi"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jos tosi"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Tarkistaa testin ehdon. Jos ehto on tosi, palauttaa \"jos tosi\" arvon, muuten palauttaa \"jos epätosi\" arvon."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "http://fi.wikipedia.org/wiki/Aritmetiikka"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Palauttaa kahden luvun summan."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Palauttaa jakolaskun osamäärän."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Palauttaa kahden luvun erotuksen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Palauttaa kertolaskun tulon."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Palauttaa ensimmäisen luvun korotettuna toisen luvun potenssiin."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan(X:%1,Y:%2)"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Palauta pisteen (X,Y) arkustangentti välillä -180–180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fi.wikipedia.org/wiki/Yhteenlasku"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "muuta %1 arvolla %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lisää arvo muuttujaan '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Palauttaa jonkin seuraavista vakioista: π (3.141…), e (2.718…), φ (1.618…), neliöjuuri(2) (1.414…), neliöjuuri(½) (0.707…), or ∞ (ääretön)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "rajoita %1 vähintään %2 enintään %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Rajoittaa arvon annetulle suljetulle välille."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "on jaollinen luvulla"; +Blockly.Msg["MATH_IS_EVEN"] = "on parillinen"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "on negatiivinen"; +Blockly.Msg["MATH_IS_ODD"] = "on pariton"; +Blockly.Msg["MATH_IS_POSITIVE"] = "on positiivinen"; +Blockly.Msg["MATH_IS_PRIME"] = "on alkuluku"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Tarkistaa onko numero parillinen, pariton, alkuluku, kokonaisluku, positiivinen, negatiivinen, tai jos se on jaollinen toisella luvulla. Palauttaa tosi tai epätosi."; +Blockly.Msg["MATH_IS_WHOLE"] = "on kokonaisluku"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 jakojäännös"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Palauttaa jakolaskun jakojäännöksen."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "⋅"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fi.wikipedia.org/wiki/Luku"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Luku."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "keskiarvo luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "suurin luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "keskiluku luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "pienin luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "tyyppiarvo luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "satunnainen valinta luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "keskihajonta luvuista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa luvuista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Palauttaa aritmeettisen keskiarvon annetuista luvuista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Palauttaa suurimman annetuista luvuista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Palauttaa annettujen lukujen keskiluvun."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Palauttaa pienimmän annetuista luvuista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Palauttaa luettelon yleisimmistä luvuista annetussa listassa."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Palauttaa satunnaisesti valitun luvun annetuista luvuista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Palauttaa annettujen lukujen keskihajonnan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Palauttaa kaikkien annettujen lukujen summan."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fi.wikipedia.org/wiki/Satunnaisluku"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "satunnainen murtoluku"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Palauttaa satunnaisen luvun oikealta puoliavoimesta välistä [0.0, 1.0)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fi.wikipedia.org/wiki/Satunnaisluku"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "Palauttaa satunnaisen kokonaisluvun väliltä %1-%2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Palauttaa satunnaisen kokonaisluvun kahden annetun arvon suljetulta väliltä."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fi.wikipedia.org/wiki/Py%C3%B6rist%C3%A4minen"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "pyöristä"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "pyöristä alaspäin"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "pyöristä ylöspäin"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Pyöristää luvun ylös- tai alaspäin."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fi.wikipedia.org/wiki/Neli%C3%B6juuri"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "itseisarvo"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "neliöjuuri"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Palauttaa luvun itseisarvon."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Palauttaa e potenssiin luku."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Palauttaa luvun luonnollisen logaritmin."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Palauttaa luvun kymmenkantaisen logaritmin."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Palauttaa numeron vastaluvun."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Palauttaa 10 potenssiin luku."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Palauttaa luvun neliöjuuren."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fi.wikipedia.org/wiki/Trigonometrinen_funktio"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Palauttaa luvun arkuskosinin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Palauttaa luvun arkussinin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Palauttaa luvun arkustangentin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Palauttaa asteluvun (ei radiaanin) kosinin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Palauttaa asteluvun (ei radiaanin) sinin."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Palauttaa asteluvun (ei radiaanin) tangentin."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Luo värimuuttuja..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Luo numeromuuttuja..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Luo merkkijonomuuttuja..."; +Blockly.Msg["NEW_VARIABLE"] = "Luo muuttuja..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Uuden muuttujan nimi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Uuden muuttujan tyyppi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "salli kommentit"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "parametrit:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fi.wikipedia.org/wiki/Aliohjelma"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Suorittaa käyttäjän määrittelemä funktio '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fi.wikipedia.org/wiki/Aliohjelma"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Suorittaa käyttäjän määrittelemän funktion '%1' ja käyttää sen tuotosta."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "parametrit:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Luo '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Kuvaile tämä funktio..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "tee jotain"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "tehdäksesi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Luo funktio, jolla ei ole tuotosta."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "palauta"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Luo funktio, jolla ei ole tuotosta."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Varoitus: tällä funktiolla on sama parametri useamman kerran."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Korosta funktion määritelmä"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jos arvo on tosi, palauta toinen arvo."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Varoitus: tätä lohkoa voi käyttää vain funktion määrityksessä."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "syötteen nimi:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Lisää sisääntulon funktioon."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "syötteet"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Lisää, poista tai järjestele uudelleen tämän toiminnon tulot."; +Blockly.Msg["REDO"] = "Tee uudelleen"; +Blockly.Msg["REMOVE_COMMENT"] = "Poista kommentti"; +Blockly.Msg["RENAME_VARIABLE"] = "Nimeä uudelleen muuttuja..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Nimeä uudelleen kaikki '%1' muuttujaa:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "muuttujaan %1 lisää teksti %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Lisää tekstiä muuttujaan '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "pienet kirjaimet"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "isot alkukirjaimet"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "isot kirjaimet"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Palauttaa kopion tekstistä eri kirjainkoossa."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hae ensimmäinen kirjain"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "Hae kirjain nro (lopusta laskien)"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "Hae kirjain nro"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hae viimeinen kirjain"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hae satunnainen kirjain"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "tekstissä %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Palauttaa annetussa kohdassa olevan kirjaimen."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "laske määrä '%1' '%2' sisällä"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Laske kuinka monta kertaa jokin teksti esiintyy jossakin toisessa tekstissä."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Lisää kohteen tekstiin."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "liitä"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Lisää, poista tai uudelleen järjestä osioita tässä lohkossa."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "kirjaimeen nro (lopusta laskien)"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "kirjaimeen nro"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "viimeiseen kirjaimeen"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "merkkijonosta"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "hae osa alkaen ensimmäisestä kirjaimesta"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hae osa alkaen kirjaimesta nro (lopusta laskien)"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hae osa alkaen kirjaimesta nro"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Palauttaa määrätyn osan tekstistä."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "etsi ensimmäinen esiintymä merkkijonolle"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "etsi viimeinen esiintymä merkkijonolle"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekstissä %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Palauttaa ensin annetun tekstin ensimmäisen/viimeisen esiintymän osoitteen toisessa tekstissä. Palauttaa osoitteen %1 jos tekstiä ei löytynyt."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 on tyhjä"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Palauttaa tosi, jos annettu teksti on tyhjä."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "luo teksti"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Luo merkkijonon liittämällä yhteen minkä tahansa määrän kohteita."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1:n pituus"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Palauttaa annetussa tekstissä olevien merkkien määrän (välilyönnit mukaan lukien)."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "tulosta %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Tulostaa annetun tekstin, numeron tai muun arvon."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Kehottaa käyttäjää syöttämään numeron."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Kehottaa käyttäjää syöttämään tekstiä."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "käyttäen annettua viestiä, kehottaa syöttämään numeron"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "käyttäen annettua viestiä, kehottaa syöttämään tekstiä"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "Korvaa teksti %1 tekstillä %2 tekstissä %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Korvaa tietyn tekstin ilmentymät tekstin sisällä."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 takaperin"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Muuttaa tekstin kirjainten järjestyksen toisin päin."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fi.wikipedia.org/wiki/Merkkijono"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Kirjain, sana tai rivi tekstiä."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "poistaa välilyönnit kummaltakin puolelta"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "poistaa välilyönnit vasemmalta puolelta"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "poistaa välilyönnit oikealta puolelta"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Palauttaa kopion tekstistä siten, että välilyönnit on poistettu yhdestä tai molemmista päistä."; +Blockly.Msg["TODAY"] = "Tänään"; +Blockly.Msg["UNDO"] = "Kumoa"; +Blockly.Msg["UNNAMED_KEY"] = "nimetön"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "kohde"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Luo 'aseta %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Palauttaa muuttujan arvon."; +Blockly.Msg["VARIABLES_SET"] = "aseta %1 arvoksi %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Luo 'hae %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Asettaa muutujan arvoksi annetun syötteen."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Muuttuja nimeltään '%1' on jo olemassa."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Muuttuja nimeltä '%1' on jo olemassa toiselle tyypille: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklyn työnäkymä"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sano jotakin..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/fo.js b/msg/js/fo.js index 6611c7020da..de609783a02 100644 --- a/msg/js/fo.js +++ b/msg/js/fo.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Viðmerk"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kann ikki strika variabulin '%1', tí hann er partur av allýsingini av funktiónini '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Broyt virði:"; -Blockly.Msg["CLEAN_UP"] = "Rudda blokkar"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Fell blokkar saman"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Fell blokk saman"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Strika allar %1 blokkar?"; -Blockly.Msg["DELETE_BLOCK"] = "Strika blokk"; -Blockly.Msg["DELETE_VARIABLE"] = "Strika '%1' variabulin"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Strika %1 brúk av '%2' variablinum?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Strika %1 blokkar"; -Blockly.Msg["DIALOG_CANCEL"] = "Angra"; -Blockly.Msg["DIALOG_OK"] = "Í lagi"; -Blockly.Msg["DISABLE_BLOCK"] = "Ger blokk óvirknan"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Tvífalda"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Tvífalda viðmerking"; -Blockly.Msg["ENABLE_BLOCK"] = "Ger blokk virknan"; -Blockly.Msg["EXPAND_ALL"] = "Víðka blokkar"; -Blockly.Msg["EXPAND_BLOCK"] = "Víðka blokk"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Innputt uttanifrá"; -Blockly.Msg["HELP"] = "Hjálp"; -Blockly.Msg["INLINE_INPUTS"] = "Innlinju innputt"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ger litvariabul..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ger talvariabul..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Ger strongvariabul..."; -Blockly.Msg["NEW_VARIABLE"] = "Ger variabul..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Navn á nýggjum variabli:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nýtt variabulslag:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Ger umaftur"; -Blockly.Msg["REMOVE_COMMENT"] = "Strika viðmerking"; -Blockly.Msg["RENAME_VARIABLE"] = "Broyt navn á variabli..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Broyt navnið á øllum '%1' variablum til:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Í dag"; -Blockly.Msg["UNDO"] = "Angra"; -Blockly.Msg["UNNAMED_KEY"] = "ónevnt"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "lutur"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Ein variabul við navninum '%1' finst longu."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Ein variabul við navninum '%1' finst longu fyri eina aðra typu: '%2'"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Viðmerk"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kann ikki strika variabulin '%1', tí hann er partur av allýsingini av funktiónini '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Broyt virði:"; +Blockly.Msg["CLEAN_UP"] = "Rudda blokkar"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Fell blokkar saman"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Fell blokk saman"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Strika allar %1 blokkar?"; +Blockly.Msg["DELETE_BLOCK"] = "Strika blokk"; +Blockly.Msg["DELETE_VARIABLE"] = "Strika '%1' variabulin"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Strika %1 brúk av '%2' variablinum?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Strika %1 blokkar"; +Blockly.Msg["DIALOG_CANCEL"] = "Angra"; +Blockly.Msg["DIALOG_OK"] = "Í lagi"; +Blockly.Msg["DISABLE_BLOCK"] = "Ger blokk óvirknan"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Tvífalda"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Tvífalda viðmerking"; +Blockly.Msg["ENABLE_BLOCK"] = "Ger blokk virknan"; +Blockly.Msg["EXPAND_ALL"] = "Víðka blokkar"; +Blockly.Msg["EXPAND_BLOCK"] = "Víðka blokk"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Innputt uttanifrá"; +Blockly.Msg["HELP"] = "Hjálp"; +Blockly.Msg["INLINE_INPUTS"] = "Innlinju innputt"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ger litvariabul..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ger talvariabul..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ger strongvariabul..."; +Blockly.Msg["NEW_VARIABLE"] = "Ger variabul..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Navn á nýggjum variabli:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nýtt variabulslag:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Ger umaftur"; +Blockly.Msg["REMOVE_COMMENT"] = "Strika viðmerking"; +Blockly.Msg["RENAME_VARIABLE"] = "Broyt navn á variabli..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Broyt navnið á øllum '%1' variablum til:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Í dag"; +Blockly.Msg["UNDO"] = "Angra"; +Blockly.Msg["UNNAMED_KEY"] = "ónevnt"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "lutur"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Ein variabul við navninum '%1' finst longu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Ein variabul við navninum '%1' finst longu fyri eina aðra typu: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/fr.js b/msg/js/fr.js index 03d48572786..471b75b04a9 100644 --- a/msg/js/fr.js +++ b/msg/js/fr.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Ajouter un commentaire"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Impossible de supprimer la variable « %1 » parce qu’elle fait partie de la définition de la fonction « %2 »"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modifier la valeur :"; -Blockly.Msg["CLEAN_UP"] = "Nettoyer les blocs"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Les blocs repliés contiennent des avertissements."; -Blockly.Msg["COLLAPSE_ALL"] = "Réduire les blocs"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Réduire le bloc"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "couleur 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "couleur 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "taux"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mélanger"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mélange deux couleurs dans une proportion donnée (de 0.0 à 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fr.wikipedia.org/wiki/Couleur"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choisir une couleur dans la palette."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "couleur aléatoire"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choisir une couleur au hasard."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "bleu"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "vert"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "rouge"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colorier en"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Créer une couleur avec la quantité spécifiée de rouge, vert et bleu. Les valeurs doivent être comprises entre 0 et 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "quitter la boucle"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "passer à l’itération de boucle suivante"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sortir de la boucle englobante."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sauter le reste de cette boucle, et poursuivre avec l’itération suivante."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Attention : ce bloc ne devrait être utilisé que dans une boucle."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pour chaque élément %1 dans la liste %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pour chaque élément d’une liste, assigner la valeur de l’élément à la variable « %1 », puis exécuter des instructions."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "compter avec %1 de %2 à %3 par %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Faire prendre successivement à la variable « %1 » les valeurs entre deux nombres de début et de fin par incrément du pas spécifié et exécuter les instructions spécifiées."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ajouter une condition au bloc conditionnel."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ajouter une condition finale déclenchée dans tous les autres cas au bloc conditionnel."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ajouter, supprimer ou réordonner les sections pour reconfigurer ce bloc conditionnel."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sinon"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sinon si"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si une valeur est vraie, alors exécuter certaines instructions."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si une valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, exécuter le second bloc d’instructions."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instructions."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instruction. Si aucune des valeurs n’est vraie, exécuter le dernier bloc d’instruction."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://fr.wikipedia.org/wiki/Boucle_for"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "faire"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "répéter %1 fois"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Exécuter des instructions plusieurs fois."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "répéter jusqu’à ce que"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "répéter tant que"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Tant qu’une valeur est fausse, alors exécuter des instructions."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Tant qu’une valeur est vraie, alors exécuter des instructions."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Supprimer ces %1 blocs ?"; -Blockly.Msg["DELETE_BLOCK"] = "Supprimer le bloc"; -Blockly.Msg["DELETE_VARIABLE"] = "Supprimer la variable « %1 »"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Supprimer %1 utilisations de la variable « %2 » ?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Supprimer %1 blocs"; -Blockly.Msg["DIALOG_CANCEL"] = "Annuler"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Désactiver le bloc"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliquer"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliquer le commentaire"; -Blockly.Msg["ENABLE_BLOCK"] = "Activer le bloc"; -Blockly.Msg["EXPAND_ALL"] = "Développer les blocs"; -Blockly.Msg["EXPAND_BLOCK"] = "Développer le bloc"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Entrées externes"; -Blockly.Msg["HELP"] = "Aide"; -Blockly.Msg["INLINE_INPUTS"] = "Entrées en ligne"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "créer une liste vide"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Renvoyer une liste, de longueur 0, ne contenant aucun enregistrement de données"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Ajouter, supprimer, ou réordonner les sections pour reconfigurer ce bloc de liste."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "créer une liste avec"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ajouter un élément à la liste."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Créer une liste avec un nombre quelconque d’éléments."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "premier"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "n° depuis la fin"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "nº"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "obtenir"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obtenir et supprimer"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "dernier"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "au hasard"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "supprimer"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Renvoie le premier élément dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Renvoie l’élément à la position indiquée dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Renvoie le dernier élément dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Renvoie un élément au hasard dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Supprime et renvoie le premier élément dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Supprime et renvoie l’élément à la position indiquée dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Supprime et renvoie le dernier élément dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Supprime et renvoie un élément au hasard dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Supprime le premier élément dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Supprime l’élément à la position indiquée dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Supprime le dernier élément dans une liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Supprime un élément au hasard dans une liste."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "jusqu’au n° depuis la fin"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "jusqu’au n°"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "jusqu’à la fin"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtenir la sous-liste depuis le début"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtenir la sous-liste depuis le n° depuis la fin"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtenir la sous-liste depuis le n°"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crée une copie de la partie spécifiée d’une liste."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 est le dernier élément."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 est le premier élément."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trouver la première occurrence de l’élément"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trouver la dernière occurrence de l’élément"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Renvoie l’index de la première/dernière occurrence de l’élément dans la liste. Renvoie %1 si l’élément n’est pas trouvé."; -Blockly.Msg["LISTS_INLIST"] = "dans la liste"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 est vide"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Renvoie vrai si la liste est vide."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "longueur de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Renvoie la longueur d’une liste."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "créer une liste avec l’élément %1 répété %2 fois"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crée une liste consistant en la valeur fournie répétée le nombre de fois indiqué."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverser %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverser la copie d’une liste."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "comme"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insérer en"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "mettre"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insère l’élément au début d’une liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insère l’élément à la position indiquée dans une liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ajoute l’élément à la fin d’une liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insère l’élément au hasard dans une liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Définit le premier élément dans une liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Définit l’élément à la position indiquée dans une liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Définit le dernier élément dans une liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Définit un élément au hasard dans une liste."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "croissant"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "décroissant"; -Blockly.Msg["LISTS_SORT_TITLE"] = "trier %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Trier une copie d’une liste."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabétique, en ignorant la casse"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérique"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabétique"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "créer une liste depuis le texte"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "créer un texte depuis la liste"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Réunir une liste de textes en un seul, en les joignant par un séparateur."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Couper un texte en une liste de textes, en coupant à chaque séparateur."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "avec séparateur"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "faux"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Renvoie soit vrai soit faux."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "vrai"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fr.wikipedia.org/wiki/In%C3%A9galit%C3%A9_(math%C3%A9matiques)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Renvoyer vrai si les deux entrées sont égales."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Renvoyer vrai si la première entrée est plus grande que la seconde."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Renvoyer true si la première entrée est supérieure ou égale à la seconde."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Renvoyer vrai si la première entrée est plus petite que la seconde."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Renvoyer vrai si la première entrée est plus petite ou égale à la seconde."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Renvoyer vrai si les deux entrées sont différentes."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Renvoie vrai si l’entrée est fausse. Renvoie faux si l’entrée est vraie."; -Blockly.Msg["LOGIC_NULL"] = "nul"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Renvoie nul."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "et"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Renvoyer vrai si les deux entrées sont vraies."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Renvoyer vrai si au moins une des entrées est vraie."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F%3A"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si faux"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si vrai"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Vérifie la condition indiquée dans « test ». Si elle est vraie, renvoie la valeur « si vrai » ; sinon renvoie la valeur « si faux »."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://fr.wikipedia.org/wiki/Arithm%C3%A9tique"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Renvoie la somme des deux nombres."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Renvoie le quotient des deux nombres."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Renvoie la différence des deux nombres."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Renvoie le produit des deux nombres."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Renvoie le premier nombre élevé à la puissance du second."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://fr.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de (x : %1 ; y : %2)"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Renvoie l’arc-tangente du point (X, Y) en degrés entre -180 et 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fr.wikipedia.org/wiki/Idiome_de_programmation"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "incrémenter %1 de %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ajouter un nombre à la variable « %1 »."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://fr.wikipedia.org/wiki/Table_de_constantes_math%C3%A9matiques"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Renvoie une des constantes courantes : π (3,141...), e (2,718...), φ (nom d’or : ½(1+√5) = 1,618…), √2 (1,414...), √½ (0,707...), ou ∞ (infini)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "contraindre %1 entre %2 et %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Contraindre un nombre à rester entre les limites spécifiées (incluses)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "est divisible par"; -Blockly.Msg["MATH_IS_EVEN"] = "est pair"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "est négatif"; -Blockly.Msg["MATH_IS_ODD"] = "est impair"; -Blockly.Msg["MATH_IS_POSITIVE"] = "est positif"; -Blockly.Msg["MATH_IS_PRIME"] = "est premier"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Vérifier si un nombre est pair, impair, premier, entier, positif, négatif ou s’il est divisible par un certain nombre. Renvoie vrai ou faux."; -Blockly.Msg["MATH_IS_WHOLE"] = "est entier"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://fr.wikipedia.org/wiki/Modulo_(op%C3%A9ration)"; -Blockly.Msg["MATH_MODULO_TITLE"] = "reste de %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Renvoyer le reste de la division euclidienne des deux nombres."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fr.wikipedia.org/wiki/Nombre"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nombre."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "moyenne de la liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximum de la liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "médiane de la liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum de la liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "majoritaires de la liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "élément aléatoire de la liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "écart type de la liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "somme de la liste"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Renvoyer la moyenne (arithmétique) des valeurs numériques dans la liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Renvoyer le plus grand nombre dans la liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Renvoyer le nombre médian de la liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Renvoyer le plus petit nombre dans la liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Renvoyer une liste d’un ou plusieurs éléments les plus fréquents dans la liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Renvoyer un élément au hasard dans la liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Renvoyer l’écart type de la liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Renvoyer la somme de tous les nombres dans la liste."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraction aléatoire"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Renvoyer une fraction aléatoire entre 0,0 (inclus) et 1,0 (exclus)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "entier aléatoire entre %1 et %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Renvoyer un entier aléatoire entre les deux limites spécifiées, incluses."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques)"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrondir"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrondir par défaut (à l’entier inférieur le plus proche)"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrondir par excès (à l’entier supérieur le plus proche)"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrondir un nombre au-dessus ou au-dessous."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fr.wikipedia.org/wiki/Racine_carr%C3%A9e"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "valeur absolue"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "racine carrée"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Renvoie la valeur absolue d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Renvoie e à la puissance d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Renvoie le logarithme naturel d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Renvoie le logarithme décimal d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Renvoie l’opposé d’un nombre"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Renvoie 10 à la puissance d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Renvoie la racine carrée d’un nombre."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "−"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fr.wikipedia.org/wiki/Fonction_trigonom%C3%A9trique"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Renvoie l’arccosinus d’un nombre."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Renvoie l’arcsinus d’un nombre."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Renvoie l’arctangente d’un nombre."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Renvoie le cosinus d’un angle en degrés (pas en radians)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Renvoie le sinus d’un angle en degrés (pas en radians)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Renvoie la tangente d’un angle en degrés (pas en radians)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Créer une variable de couleur..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Créer une variable numérique..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Créer une variable de chaîne..."; -Blockly.Msg["NEW_VARIABLE"] = "Créer une variable..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nom de la nouvelle variable :"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nouveau type de variable :"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "autoriser les ordres"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "avec :"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Exécuter la fonction « %1 » définie par l’utilisateur."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Exécuter la fonction « %1 » définie par l’utilisateur et utiliser son résultat."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "avec :"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Créer « %1 »"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Décrivez cette fonction..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "faire quelque chose"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "pour"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crée une fonction sans sortie."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retourner"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crée une fonction avec une sortie."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Attention : cette fonction a des paramètres en doublon."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Surligner la définition de la fonction"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si une valeur est vraie, alors renvoyer une seconde valeur."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Attention : ce bloc ne peut être utilisé que dans une définition de fonction."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nom de l’entrée :"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ajouter une entrée à la fonction."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entrées"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Ajouter, supprimer, ou réarranger les entrées de cette fonction."; -Blockly.Msg["REDO"] = "Refaire"; -Blockly.Msg["REMOVE_COMMENT"] = "Supprimer un commentaire"; -Blockly.Msg["RENAME_VARIABLE"] = "Renommer la variable..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renommer toutes les variables « %1 » en :"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "ajouter le texte %2 à %1"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Ajouter du texte à la variable « %1 »."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "en minuscules"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "en Capitale Initiale Pour Chaque Mot"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "en MAJUSCULES"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Renvoyer une copie du texte dans une autre casse."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "obtenir la première lettre"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obtenir la lettre nº (depuis la fin)"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obtenir la lettre nº"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "obtenir la dernière lettre"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obtenir une lettre au hasard"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "%2 dans le texte %1"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Renvoie la lettre à la position indiquée."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "nombre %1 sur %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Compter combien de fois un texte donné apparaît dans un autre."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ajouter un élément au texte."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "joindre"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Ajouter, supprimer, ou réordonner des sections pour reconfigurer ce bloc de texte."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "jusqu’à la lettre nº (depuis la fin)"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "jusqu’à la lettre nº"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "jusqu’à la dernière lettre"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "dans le texte"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obtenir la sous-chaîne depuis la première lettre"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obtenir la sous-chaîne depuis la lettre nº (depuis la fin)"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obtenir la sous-chaîne depuis la lettre nº"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Renvoie une partie indiquée du texte."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trouver la première occurrence de la chaîne"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trouver la dernière occurrence du texte"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "%2 %3 dans le texte %1"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Renvoie l’index de la première/dernière occurrence de la première chaîne dans la seconde. Renvoie %1 si la chaîne n’est pas trouvée."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 est vide"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Renvoie vrai si le texte fourni est vide."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "créer un texte avec"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Créer un morceau de texte en joignant bout à bout et successivement un nombre quelconque d’éléments dans le même ordre."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "longueur de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Renvoie le nombre de lettres (chiffres, ponctuations, symboles et espaces compris) dans le texte fourni."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "afficher %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Afficher le texte, le nombre ou une autre valeur spécifiée."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Demander un nombre à l’utilisateur."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Demander un texte à l’utilisateur."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "demander un nombre avec un message"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "demander un texte avec un message"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "remplacer %1 par %2 dans %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Remplacer toutes les occurrences d’un texte par un autre."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "renverser %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Renverse l’ordre des caractères dans le texte."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fr.wikipedia.org/wiki/Cha%C3%AEne_de_caract%C3%A8res"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Une lettre, un mot ou une ligne de texte."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "supprimer les espaces des deux côtés de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "supprimer les espaces du côté gauche de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "supprimer les espaces du côté droit de"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Renvoyer une copie du texte avec les espaces supprimés d’un ou des deux bouts."; -Blockly.Msg["TODAY"] = "Aujourd'hui"; -Blockly.Msg["UNDO"] = "Annuler"; -Blockly.Msg["UNNAMED_KEY"] = "non nommé"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "élément"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Créer « définir %1 »"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Renvoie la valeur de cette variable."; -Blockly.Msg["VARIABLES_SET"] = "définir %1 à %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Créer « obtenir %1 »"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Définit cette variable pour qu’elle soit égale à la valeur de l’entrée."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Une variable nommée « %1 » existe déjà."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Une variable nommée « %1 » existe déjà pour un autre type : « %2 »."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espace de travail de Blocky"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Expliquez quelque chose..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ajouter un commentaire"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Impossible de supprimer la variable « %1 » parce qu’elle fait partie de la définition de la fonction « %2 »"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modifier la valeur :"; +Blockly.Msg["CLEAN_UP"] = "Nettoyer les blocs"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Les blocs repliés contiennent des avertissements."; +Blockly.Msg["COLLAPSE_ALL"] = "Réduire les blocs"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Réduire le bloc"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "couleur 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "couleur 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "taux"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mélanger"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mélange deux couleurs dans une proportion donnée (de 0.0 à 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://fr.wikipedia.org/wiki/Couleur"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choisir une couleur dans la palette."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "couleur aléatoire"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choisir une couleur au hasard."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "bleu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "vert"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rouge"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorier en"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Créer une couleur avec la quantité spécifiée de rouge, vert et bleu. Les valeurs doivent être comprises entre 0 et 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "quitter la boucle"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "passer à l’itération de boucle suivante"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sortir de la boucle englobante."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sauter le reste de cette boucle, et poursuivre avec l’itération suivante."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Attention : ce bloc ne devrait être utilisé que dans une boucle."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pour chaque élément %1 dans la liste %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pour chaque élément d’une liste, assigner la valeur de l’élément à la variable « %1 », puis exécuter des instructions."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "compter avec %1 de %2 à %3 par %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Faire prendre successivement à la variable « %1 » les valeurs entre deux nombres de début et de fin par incrément du pas spécifié et exécuter les instructions spécifiées."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ajouter une condition au bloc conditionnel."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ajouter une condition finale déclenchée dans tous les autres cas au bloc conditionnel."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ajouter, supprimer ou réordonner les sections pour reconfigurer ce bloc conditionnel."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sinon"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sinon si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si une valeur est vraie, alors exécuter certaines instructions."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si une valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, exécuter le second bloc d’instructions."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instructions."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instruction. Si aucune des valeurs n’est vraie, exécuter le dernier bloc d’instruction."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://fr.wikipedia.org/wiki/Boucle_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "faire"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "répéter %1 fois"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Exécuter des instructions plusieurs fois."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "répéter jusqu’à ce que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "répéter tant que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Tant qu’une valeur est fausse, alors exécuter des instructions."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Tant qu’une valeur est vraie, alors exécuter des instructions."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Supprimer ces %1 blocs ?"; +Blockly.Msg["DELETE_BLOCK"] = "Supprimer le bloc"; +Blockly.Msg["DELETE_VARIABLE"] = "Supprimer la variable « %1 »"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Supprimer %1 utilisations de la variable « %2 » ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Supprimer %1 blocs"; +Blockly.Msg["DIALOG_CANCEL"] = "Annuler"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Désactiver le bloc"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliquer"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliquer le commentaire"; +Blockly.Msg["ENABLE_BLOCK"] = "Activer le bloc"; +Blockly.Msg["EXPAND_ALL"] = "Développer les blocs"; +Blockly.Msg["EXPAND_BLOCK"] = "Développer le bloc"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entrées externes"; +Blockly.Msg["HELP"] = "Aide"; +Blockly.Msg["INLINE_INPUTS"] = "Entrées en ligne"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "créer une liste vide"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Renvoyer une liste, de longueur 0, ne contenant aucun enregistrement de données"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Ajouter, supprimer, ou réordonner les sections pour reconfigurer ce bloc de liste."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "créer une liste avec"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ajouter un élément à la liste."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Créer une liste avec un nombre quelconque d’éléments."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "premier"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "n° depuis la fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "nº"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obtenir"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obtenir et supprimer"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "dernier"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "au hasard"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "supprimer"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Renvoie le premier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Renvoie l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Renvoie le dernier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Renvoie un élément au hasard dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Supprime et renvoie le premier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Supprime et renvoie l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Supprime et renvoie le dernier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Supprime et renvoie un élément au hasard dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Supprime le premier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Supprime l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Supprime le dernier élément dans une liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Supprime un élément au hasard dans une liste."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "jusqu’au n° depuis la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "jusqu’au n°"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "jusqu’à la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtenir la sous-liste depuis le début"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtenir la sous-liste depuis le n° depuis la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtenir la sous-liste depuis le n°"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crée une copie de la partie spécifiée d’une liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 est le dernier élément."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 est le premier élément."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trouver la première occurrence de l’élément"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trouver la dernière occurrence de l’élément"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Renvoie l’index de la première/dernière occurrence de l’élément dans la liste. Renvoie %1 si l’élément n’est pas trouvé."; +Blockly.Msg["LISTS_INLIST"] = "dans la liste"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 est vide"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Renvoie vrai si la liste est vide."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longueur de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Renvoie la longueur d’une liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "créer une liste avec l’élément %1 répété %2 fois"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crée une liste consistant en la valeur fournie répétée le nombre de fois indiqué."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverser %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverser la copie d’une liste."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "comme"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insérer en"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "mettre"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insère l’élément au début d’une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insère l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ajoute l’élément à la fin d’une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insère l’élément au hasard dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Définit le premier élément dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Définit l’élément à la position indiquée dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Définit le dernier élément dans une liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Définit un élément au hasard dans une liste."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "croissant"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "décroissant"; +Blockly.Msg["LISTS_SORT_TITLE"] = "trier %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Trier une copie d’une liste."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabétique, en ignorant la casse"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérique"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabétique"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "créer une liste depuis le texte"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "créer un texte depuis la liste"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Réunir une liste de textes en un seul, en les joignant par un séparateur."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Couper un texte en une liste de textes, en coupant à chaque séparateur."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "avec séparateur"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "faux"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Renvoie soit vrai soit faux."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "vrai"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fr.wikipedia.org/wiki/In%C3%A9galit%C3%A9_(math%C3%A9matiques)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Renvoyer vrai si les deux entrées sont égales."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Renvoyer vrai si la première entrée est plus grande que la seconde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Renvoyer true si la première entrée est supérieure ou égale à la seconde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Renvoyer vrai si la première entrée est plus petite que la seconde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Renvoyer vrai si la première entrée est plus petite ou égale à la seconde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Renvoyer vrai si les deux entrées sont différentes."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Renvoie vrai si l’entrée est fausse. Renvoie faux si l’entrée est vraie."; +Blockly.Msg["LOGIC_NULL"] = "nul"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Renvoie nul."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "et"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Renvoyer vrai si les deux entrées sont vraies."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Renvoyer vrai si au moins une des entrées est vraie."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F%3A"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si faux"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si vrai"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Vérifie la condition indiquée dans « test ». Si elle est vraie, renvoie la valeur « si vrai » ; sinon renvoie la valeur « si faux »."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://fr.wikipedia.org/wiki/Arithm%C3%A9tique"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Renvoie la somme des deux nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Renvoie le quotient des deux nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Renvoie la différence des deux nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Renvoie le produit des deux nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Renvoie le premier nombre élevé à la puissance du second."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://fr.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de (x : %1 ; y : %2)"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Renvoie l’arc-tangente du point (X, Y) en degrés entre -180 et 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://fr.wikipedia.org/wiki/Idiome_de_programmation"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "incrémenter %1 de %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ajouter un nombre à la variable « %1 »."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://fr.wikipedia.org/wiki/Table_de_constantes_math%C3%A9matiques"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Renvoie une des constantes courantes : π (3,141...), e (2,718...), φ (nom d’or : ½(1+√5) = 1,618…), √2 (1,414...), √½ (0,707...), ou ∞ (infini)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "contraindre %1 entre %2 et %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Contraindre un nombre à rester entre les limites spécifiées (incluses)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "est divisible par"; +Blockly.Msg["MATH_IS_EVEN"] = "est pair"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "est négatif"; +Blockly.Msg["MATH_IS_ODD"] = "est impair"; +Blockly.Msg["MATH_IS_POSITIVE"] = "est positif"; +Blockly.Msg["MATH_IS_PRIME"] = "est premier"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Vérifier si un nombre est pair, impair, premier, entier, positif, négatif ou s’il est divisible par un certain nombre. Renvoie vrai ou faux."; +Blockly.Msg["MATH_IS_WHOLE"] = "est entier"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://fr.wikipedia.org/wiki/Modulo_(op%C3%A9ration)"; +Blockly.Msg["MATH_MODULO_TITLE"] = "reste de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Renvoyer le reste de la division euclidienne des deux nombres."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://fr.wikipedia.org/wiki/Nombre"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nombre."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "moyenne de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximum de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "médiane de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "majoritaires de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "élément aléatoire de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "écart type de la liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "somme de la liste"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Renvoyer la moyenne (arithmétique) des valeurs numériques dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Renvoyer le plus grand nombre dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Renvoyer le nombre médian de la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Renvoyer le plus petit nombre dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Renvoyer une liste d’un ou plusieurs éléments les plus fréquents dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Renvoyer un élément au hasard dans la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Renvoyer l’écart type de la liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Renvoyer la somme de tous les nombres dans la liste."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraction aléatoire"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Renvoyer une fraction aléatoire entre 0,0 (inclus) et 1,0 (exclus)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "entier aléatoire entre %1 et %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Renvoyer un entier aléatoire entre les deux limites spécifiées, incluses."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrondir"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrondir par défaut (à l’entier inférieur le plus proche)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrondir par excès (à l’entier supérieur le plus proche)"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrondir un nombre au-dessus ou au-dessous."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fr.wikipedia.org/wiki/Racine_carr%C3%A9e"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "valeur absolue"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "racine carrée"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Renvoie la valeur absolue d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Renvoie e à la puissance d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Renvoie le logarithme naturel d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Renvoie le logarithme décimal d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Renvoie l’opposé d’un nombre"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Renvoie 10 à la puissance d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Renvoie la racine carrée d’un nombre."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "−"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://fr.wikipedia.org/wiki/Fonction_trigonom%C3%A9trique"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Renvoie l’arccosinus d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Renvoie l’arcsinus d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Renvoie l’arctangente d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Renvoie le cosinus d’un angle en degrés (pas en radians)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Renvoie le sinus d’un angle en degrés (pas en radians)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Renvoie la tangente d’un angle en degrés (pas en radians)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Créer une variable de couleur..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Créer une variable numérique..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Créer une variable de chaîne..."; +Blockly.Msg["NEW_VARIABLE"] = "Créer une variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nom de la nouvelle variable :"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nouveau type de variable :"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "autoriser les ordres"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "avec :"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Exécuter la fonction « %1 » définie par l’utilisateur."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Exécuter la fonction « %1 » définie par l’utilisateur et utiliser son résultat."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "avec :"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Créer « %1 »"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Décrivez cette fonction..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "faire quelque chose"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "pour"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crée une fonction sans sortie."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://fr.wikipedia.org/wiki/Sous-programme"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retourner"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crée une fonction avec une sortie."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Attention : cette fonction a des paramètres en doublon."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Surligner la définition de la fonction"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si une valeur est vraie, alors renvoyer une seconde valeur."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Attention : ce bloc ne peut être utilisé que dans une définition de fonction."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nom de l’entrée :"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ajouter une entrée à la fonction."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entrées"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Ajouter, supprimer, ou réarranger les entrées de cette fonction."; +Blockly.Msg["REDO"] = "Refaire"; +Blockly.Msg["REMOVE_COMMENT"] = "Supprimer un commentaire"; +Blockly.Msg["RENAME_VARIABLE"] = "Renommer la variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renommer toutes les variables « %1 » en :"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "ajouter le texte %2 à %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Ajouter du texte à la variable « %1 »."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "en minuscules"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "en Capitale Initiale Pour Chaque Mot"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "en MAJUSCULES"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Renvoyer une copie du texte dans une autre casse."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obtenir la première lettre"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obtenir la lettre nº (depuis la fin)"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obtenir la lettre nº"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obtenir la dernière lettre"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obtenir une lettre au hasard"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "%2 dans le texte %1"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Renvoie la lettre à la position indiquée."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "nombre %1 sur %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Compter combien de fois un texte donné apparaît dans un autre."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ajouter un élément au texte."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "joindre"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Ajouter, supprimer, ou réordonner des sections pour reconfigurer ce bloc de texte."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "jusqu’à la lettre nº (depuis la fin)"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "jusqu’à la lettre nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "jusqu’à la dernière lettre"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "dans le texte"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obtenir la sous-chaîne depuis la première lettre"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obtenir la sous-chaîne depuis la lettre nº (depuis la fin)"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obtenir la sous-chaîne depuis la lettre nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Renvoie une partie indiquée du texte."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trouver la première occurrence de la chaîne"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trouver la dernière occurrence du texte"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "%2 %3 dans le texte %1"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Renvoie l’index de la première/dernière occurrence de la première chaîne dans la seconde. Renvoie %1 si la chaîne n’est pas trouvée."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 est vide"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Renvoie vrai si le texte fourni est vide."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "créer un texte avec"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Créer un morceau de texte en joignant bout à bout et successivement un nombre quelconque d’éléments dans le même ordre."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longueur de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Renvoie le nombre de lettres (chiffres, ponctuations, symboles et espaces compris) dans le texte fourni."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "afficher %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Afficher le texte, le nombre ou une autre valeur spécifiée."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Demander un nombre à l’utilisateur."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Demander un texte à l’utilisateur."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "demander un nombre avec un message"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "demander un texte avec un message"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "remplacer %1 par %2 dans %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Remplacer toutes les occurrences d’un texte par un autre."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "renverser %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Renverse l’ordre des caractères dans le texte."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://fr.wikipedia.org/wiki/Cha%C3%AEne_de_caract%C3%A8res"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Une lettre, un mot ou une ligne de texte."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "supprimer les espaces des deux côtés de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "supprimer les espaces du côté gauche de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "supprimer les espaces du côté droit de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Renvoyer une copie du texte avec les espaces supprimés d’un ou des deux bouts."; +Blockly.Msg["TODAY"] = "Aujourd'hui"; +Blockly.Msg["UNDO"] = "Annuler"; +Blockly.Msg["UNNAMED_KEY"] = "non nommé"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "élément"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Créer « définir %1 »"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Renvoie la valeur de cette variable."; +Blockly.Msg["VARIABLES_SET"] = "définir %1 à %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Créer « obtenir %1 »"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Définit cette variable pour qu’elle soit égale à la valeur de l’entrée."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Une variable nommée « %1 » existe déjà."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Une variable nommée « %1 » existe déjà pour un autre type : « %2 »."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espace de travail de Blocky"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Expliquez quelque chose..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/frr.js b/msg/js/frr.js index 96dc581bbbd..8b8eca8f298 100644 --- a/msg/js/frr.js +++ b/msg/js/frr.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Help"; // untranslated -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/gl.js b/msg/js/gl.js index e6fed38e971..1c101cadb7a 100644 --- a/msg/js/gl.js +++ b/msg/js/gl.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Engadir un comentario"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar o valor:"; -Blockly.Msg["CLEAN_UP"] = "Limpar os bloques"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Contraer os bloques"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Contraer o bloque"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporción"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mesturar"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mestura dúas cores ca proporción indicada (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://gl.wikipedia.org/wiki/Cor"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolle unha cor da paleta."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor ó chou"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolle unha cor ao chou."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "vermello"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colorar con"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senón"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mais se"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "facer"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faga algunhas instrucións varias veces."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir ata"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mentres"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Queres eliminar os %1 bloques?"; -Blockly.Msg["DELETE_BLOCK"] = "Borrar o bloque"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Borrar %1 bloques"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; -Blockly.Msg["DIALOG_OK"] = "Aceptar"; -Blockly.Msg["DISABLE_BLOCK"] = "Desactivar o bloque"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar o comentario"; -Blockly.Msg["ENABLE_BLOCK"] = "Activar o bloque"; -Blockly.Msg["EXPAND_ALL"] = "Expandir os bloques"; -Blockly.Msg["EXPAND_BLOCK"] = "Expandir o bloque"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas"; -Blockly.Msg["HELP"] = "Axuda"; -Blockly.Msg["INLINE_INPUTS"] = "Entradas en liña"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listaxe"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "derradeiro"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ó chou"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o derradeiro elemento."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro elemento."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "na listaxe"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 atópase baleira"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retona verdadeiro se a listaxe atópase baleira."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir en"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordear unha copia dunha listaxe."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabética, iñorar maiúsculas/minúsculas"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérica"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabética"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "nulo"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retornar nulo."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "proba"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://gl.wikipedia.org/wiki/Aritmética"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a suma de dous números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o cociente da división de dous números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferenza de dous números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto de dous números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado á potencia do segundo número."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "mudar %1 por %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Suma un número á variábel '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://gl.wikipedia.org/wiki/Constante_matemática"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna unha das constantes comúns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisíbel por"; -Blockly.Msg["MATH_IS_EVEN"] = "é par"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo"; -Blockly.Msg["MATH_IS_ODD"] = "é impar"; -Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo"; -Blockly.Msg["MATH_IS_PRIME"] = "é primo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se un número é par, impar, primo, enteiro, positivo, negativo, ou se é divisíbel por outro número. Retorna verdadeiro ou falso."; -Blockly.Msg["MATH_IS_WHOLE"] = "é enteiro"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un número."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media dunha listaxe"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior dunha listaxe"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor dunha listaxe"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma da listaxe"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da listaxe"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da listaxe."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a suma de tódolos números da listaxe."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://gl.wikipedia.org/wiki/Arredondamento"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda cara abaixo"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda cara arriba"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda un número cara enriba ou cara abaixo."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://gl.wikipedia.org/wiki/Raíz_cadrada"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz cadrada"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto dun número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado á potencia dun número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logarítmo natural dun número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logarítmo en base 10 dun número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto dun número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado á potencia dun número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raíz cadrada dun número."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://gl.m.wikipedia.org/wiki/Función_trigonométrica"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco coseno dun número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno dum número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tanxente dun número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o coseno dun grao (non radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno dun grao (non radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tanxente dun grao (non radiano)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Crar unha variábel de cadea..."; -Blockly.Msg["NEW_VARIABLE"] = "Crear a variable..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variable:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "facer algo"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "cara"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retornar"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Refacer"; -Blockly.Msg["REMOVE_COMMENT"] = "Eliminar o comentario"; -Blockly.Msg["RENAME_VARIABLE"] = "Renomear a variable..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variables \"%1\" a:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no texto"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Hoxe"; -Blockly.Msg["UNDO"] = "Desfacer"; -Blockly.Msg["UNNAMED_KEY"] = "innominada"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Engadir un comentario"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar o valor:"; +Blockly.Msg["CLEAN_UP"] = "Limpar os bloques"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Contraer os bloques"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Contraer o bloque"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporción"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mesturar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mestura dúas cores ca proporción indicada (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://gl.wikipedia.org/wiki/Cor"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolle unha cor da paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor ó chou"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolle unha cor ao chou."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "vermello"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorar con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senón"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mais se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "facer"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faga algunhas instrucións varias veces."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir ata"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir mentres"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Queres eliminar os %1 bloques?"; +Blockly.Msg["DELETE_BLOCK"] = "Borrar o bloque"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Borrar %1 bloques"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; +Blockly.Msg["DIALOG_OK"] = "Aceptar"; +Blockly.Msg["DISABLE_BLOCK"] = "Desactivar o bloque"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar o comentario"; +Blockly.Msg["ENABLE_BLOCK"] = "Activar o bloque"; +Blockly.Msg["EXPAND_ALL"] = "Expandir os bloques"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir o bloque"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas"; +Blockly.Msg["HELP"] = "Axuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas en liña"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listaxe"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "derradeiro"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ó chou"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o derradeiro elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "na listaxe"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 atópase baleira"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retona verdadeiro se a listaxe atópase baleira."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir en"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordear unha copia dunha listaxe."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabética, iñorar maiúsculas/minúsculas"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérica"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabética"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "nulo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retornar nulo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "proba"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://gl.wikipedia.org/wiki/Aritmética"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a suma de dous números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o cociente da división de dous números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferenza de dous números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto de dous números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado á potencia do segundo número."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "mudar %1 por %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Suma un número á variábel '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://gl.wikipedia.org/wiki/Constante_matemática"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna unha das constantes comúns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisíbel por"; +Blockly.Msg["MATH_IS_EVEN"] = "é par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo"; +Blockly.Msg["MATH_IS_ODD"] = "é impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "é primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se un número é par, impar, primo, enteiro, positivo, negativo, ou se é divisíbel por outro número. Retorna verdadeiro ou falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "é enteiro"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un número."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media dunha listaxe"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior dunha listaxe"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor dunha listaxe"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma da listaxe"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da listaxe"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da listaxe."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a suma de tódolos números da listaxe."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://gl.wikipedia.org/wiki/Arredondamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda cara abaixo"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda cara arriba"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda un número cara enriba ou cara abaixo."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://gl.wikipedia.org/wiki/Raíz_cadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz cadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado á potencia dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logarítmo natural dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logarítmo en base 10 dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado á potencia dun número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raíz cadrada dun número."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://gl.m.wikipedia.org/wiki/Función_trigonométrica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco coseno dun número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno dum número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tanxente dun número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o coseno dun grao (non radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno dun grao (non radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tanxente dun grao (non radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crar unha variábel de cadea..."; +Blockly.Msg["NEW_VARIABLE"] = "Crear a variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "facer algo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "cara"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retornar"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Refacer"; +Blockly.Msg["REMOVE_COMMENT"] = "Eliminar o comentario"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomear a variable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variables \"%1\" a:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Hoxe"; +Blockly.Msg["UNDO"] = "Desfacer"; +Blockly.Msg["UNNAMED_KEY"] = "innominada"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/gn.js b/msg/js/gn.js index 520cc07a80b..2f53b751572 100644 --- a/msg/js/gn.js +++ b/msg/js/gn.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Ñeimo'ã"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Tepy ñemoambueː"; -Blockly.Msg["CLEAN_UP"] = "Toñemopotĩ Atýra kuéra"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Toñemomichĩ Atýra kuéra"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Toñemomichĩ Atýra"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "sa'y 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "sa'y 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "jojaha"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mbopara"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "hovy"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "hovyũ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "pytã"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ejapo hag̃ua peteĩ sa'y eñembopara pytã, hovyũ ha hovy. Opa papaha oĩ va'erã 0 ha 100 imbytépe."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "japo"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Reipe'asépa opa %1 atýra?"; -Blockly.Msg["DELETE_BLOCK"] = "Tojeipe'a Atýra"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Tojeipe'a %1 Atýra"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "Oĩma"; -Blockly.Msg["DISABLE_BLOCK"] = "Toñemboiko'ỹ Atýra"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Momokõi"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Toñemokõi Ñeimo'ã"; -Blockly.Msg["ENABLE_BLOCK"] = "Toñemboiko Atýra"; -Blockly.Msg["EXPAND_ALL"] = "Toñembotuicha Atýra kuéra"; -Blockly.Msg["EXPAND_BLOCK"] = "Toñembotuicha Atýra"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Jeikeha Okapegua"; -Blockly.Msg["HELP"] = "Pytyvõhára"; -Blockly.Msg["INLINE_INPUTS"] = "Jeikeha Pypegua"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "tysýi"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "achengety rupi, taiguasu ha tai'i jehecha'ỹre"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "papaha rupi"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "achengety rupi"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "japu"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "añete"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "mba'evegua"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "ha"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "térã"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ñeha'ã"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ijapúrõ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "iñañetérõ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://es.wikipedia.org/wiki/Aritmética"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Jey"; -Blockly.Msg["REMOVE_COMMENT"] = "Toipe'a Ñeimo'ã"; -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 inandi"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Ko ára"; -Blockly.Msg["UNDO"] = "Tojehara"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "temimoĩmby"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ñeimo'ã"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Tepy ñemoambueː"; +Blockly.Msg["CLEAN_UP"] = "Toñemopotĩ Atýra kuéra"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Toñemomichĩ Atýra kuéra"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Toñemomichĩ Atýra"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "sa'y 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "sa'y 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "jojaha"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mbopara"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "hovy"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "hovyũ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "pytã"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ejapo hag̃ua peteĩ sa'y eñembopara pytã, hovyũ ha hovy. Opa papaha oĩ va'erã 0 ha 100 imbytépe."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "japo"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Reipe'asépa opa %1 atýra?"; +Blockly.Msg["DELETE_BLOCK"] = "Tojeipe'a Atýra"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Tojeipe'a %1 Atýra"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "Oĩma"; +Blockly.Msg["DISABLE_BLOCK"] = "Toñemboiko'ỹ Atýra"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Momokõi"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Toñemokõi Ñeimo'ã"; +Blockly.Msg["ENABLE_BLOCK"] = "Toñemboiko Atýra"; +Blockly.Msg["EXPAND_ALL"] = "Toñembotuicha Atýra kuéra"; +Blockly.Msg["EXPAND_BLOCK"] = "Toñembotuicha Atýra"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Jeikeha Okapegua"; +Blockly.Msg["HELP"] = "Pytyvõhára"; +Blockly.Msg["INLINE_INPUTS"] = "Jeikeha Pypegua"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "tysýi"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "achengety rupi, taiguasu ha tai'i jehecha'ỹre"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "papaha rupi"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "achengety rupi"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "japu"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "añete"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "mba'evegua"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "ha"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "térã"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ñeha'ã"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ijapúrõ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "iñañetérõ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://es.wikipedia.org/wiki/Aritmética"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Jey"; +Blockly.Msg["REMOVE_COMMENT"] = "Toipe'a Ñeimo'ã"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 inandi"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Ko ára"; +Blockly.Msg["UNDO"] = "Tojehara"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "temimoĩmby"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/gor.js b/msg/js/gor.js index 4256f3c8265..b0b5519d6e7 100644 --- a/msg/js/gor.js +++ b/msg/js/gor.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Moduhenga tuladu"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ubawa nilai"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Mohe'uto Blok"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Mohe'uto Blok"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "laku 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "laku 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "rasio"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "Ulawuwa"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mongulawu dulo laku pe'eenta wolo rasio (0.0-1.0)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Laku"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Piliya laku lonto daputari lo laku"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "Laku acak"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Piliya laku acak"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "wahu'ente"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "moyidu"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "meela"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "wolo laku"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Pohutuwa laku wolo jumula u tilantu monto u meela, moyidu wawu wahu'ente. Nga'amila musi o woolota 0 wawu 100"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Mokaluwari lonto u'uulangiya"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "uweewo"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "wonu uweewo"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "wonu"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "pohutuwa"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulangiya %1 kali"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulangiya sambe"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Ulangiya wonu"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Wonu nilai diya banari, pohutuwa parenta"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Wonu nilai banari, pohutuwa po'ongoolo"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Luluta nga'amila %1 blocks?"; -Blockly.Msg["DELETE_BLOCK"] = "Moluluto Blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Moluluto %1 Blok"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated -Blockly.Msg["DISABLE_BLOCK"] = "Moberenti Blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikat"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Momulayi Blok"; -Blockly.Msg["EXPAND_ALL"] = "Lolade Blok"; -Blockly.Msg["EXPAND_BLOCK"] = "Lolade Blok"; -Blockly.Msg["EXTERNAL_INPUTS"] = "tuwanga lonto eksternal"; -Blockly.Msg["HELP"] = "Tuulungi"; -Blockly.Msg["INLINE_INPUTS"] = "tuwanga lo inline"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "tala"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "banari"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "diila %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "noolo"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "wawu"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "meyalo"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "yimontalo"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "wonu tala"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "wonu banari"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Noomoro"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "akar pangkat dua"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Variabel bohu..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Tanggulo Variabel bohu"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Pohutu '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Mohinggi tuladu"; -Blockly.Msg["RENAME_VARIABLE"] = "Tangguli uulangi variabel"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tangguli uulangi nga'amila % variabel ode:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "mowali hurupu kiki'o"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "mowali HURUPU DAMANGO"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "hama tulade bungaliyo"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hama hurupu # monto wuleya"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hama hurupu #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "hama tulade pulitiyo"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hama tulade ambulati"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "wayito"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Duhengi, yinggila, meyalo susungiya ulangi tuladu blok."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ode tuladu # monto wuleya"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ode hurupu"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to tulade pulitiyo"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "to delomo tuladu"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "lolohe u yilowali bohuliyo to delomo tuladu"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "lolohe u yilowali pulitiyo to delomo tuladu"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 koosongi"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Pohalinga banari wonu tuladu u sadi-sadia koosongi."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "haya'o lo %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Engontiye"; -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Moduhenga tuladu"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ubawa nilai"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Mohe'uto Blok"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Mohe'uto Blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "laku 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "laku 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "rasio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "Ulawuwa"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mongulawu dulo laku pe'eenta wolo rasio (0.0-1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Laku"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Piliya laku lonto daputari lo laku"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "Laku acak"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Piliya laku acak"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "wahu'ente"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "moyidu"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "meela"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "wolo laku"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Pohutuwa laku wolo jumula u tilantu monto u meela, moyidu wawu wahu'ente. Nga'amila musi o woolota 0 wawu 100"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Mokaluwari lonto u'uulangiya"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "uweewo"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "wonu uweewo"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "wonu"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "pohutuwa"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulangiya %1 kali"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulangiya sambe"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Ulangiya wonu"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Wonu nilai diya banari, pohutuwa parenta"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Wonu nilai banari, pohutuwa po'ongoolo"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Luluta nga'amila %1 blocks?"; +Blockly.Msg["DELETE_BLOCK"] = "Moluluto Blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Moluluto %1 Blok"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "Moberenti Blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Momulayi Blok"; +Blockly.Msg["EXPAND_ALL"] = "Lolade Blok"; +Blockly.Msg["EXPAND_BLOCK"] = "Lolade Blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "tuwanga lonto eksternal"; +Blockly.Msg["HELP"] = "Tuulungi"; +Blockly.Msg["INLINE_INPUTS"] = "tuwanga lo inline"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "tala"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "banari"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "diila %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "noolo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "wawu"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "meyalo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "yimontalo"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "wonu tala"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "wonu banari"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Noomoro"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "akar pangkat dua"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Variabel bohu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Tanggulo Variabel bohu"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Pohutu '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Mohinggi tuladu"; +Blockly.Msg["RENAME_VARIABLE"] = "Tangguli uulangi variabel"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tangguli uulangi nga'amila % variabel ode:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "mowali hurupu kiki'o"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "mowali HURUPU DAMANGO"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hama tulade bungaliyo"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hama hurupu # monto wuleya"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hama hurupu #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hama tulade pulitiyo"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hama tulade ambulati"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "wayito"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Duhengi, yinggila, meyalo susungiya ulangi tuladu blok."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ode tuladu # monto wuleya"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ode hurupu"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to tulade pulitiyo"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "to delomo tuladu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "lolohe u yilowali bohuliyo to delomo tuladu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "lolohe u yilowali pulitiyo to delomo tuladu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 koosongi"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Pohalinga banari wonu tuladu u sadi-sadia koosongi."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "haya'o lo %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Engontiye"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ha.js b/msg/js/ha.js index b22f289886e..bfd5d1d47f8 100644 --- a/msg/js/ha.js +++ b/msg/js/ha.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Daɗa Sharhi"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "An kasa goge siffa '%1' sabo da tana daga sashi na bayanin aikin '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Canza kima:"; -Blockly.Msg["CLEAN_UP"] = "A share Bululluka"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Rusa Bululluka"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Rusa Bulo"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "launi na 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "launi na 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "lissafi"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "gauraya"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Ana gauraya launuka biyu tare da wani lissafi da aka bayar (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Zaɓi launi daga faifan launuka."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "launuka da aka hargitsa"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zaɓi launi daga wanɗanda aka hargitsa."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "shuɗi"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "kore"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ja"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "launi tare da"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ƙirƙiri launi tare da wani yawa da aka fayyace na ja, kore, da shuɗi. Duk kimomin dole su zamo tsakanin 0 da 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ɓalle daga cikin kewaye"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fara da maimaitawa ta gaba ta kewaye"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ɓalle daga kewaye wanda ya ƙunsa."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Tsallake sauran wannan kewaye, sannan kuma a ci gaba da maimaitawa ta gaba ta kewaye."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Gargaɗi: Wannan bulon za a iya amfani da shi ne kawai a wajen kewaye."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ga kowane abu %1 a cikin jeri %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Ga kowane abu a jeri, saka siffar '%1' zuwa ga abin, sannan a maimaita wasu lambobin."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "Ƙirga da %1 daga %2 zuwa %3 ƙara %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Sami siffar '%1' ta ɗauki kowa ce kima daga lambar da aka fara da ita zuwa lambar da aka ƙare da ita, ana ƙirgawa daga wata tazara da aka fayyace. Maimaita wannan lamba a kowane lokaci:"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Daɗa sharaɗi zuwa idan bulo."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Daɗa na ƙarshe, sharaɗin kama-duk zuwa idan bulo."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan idan bulo."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "wani"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "wani idan"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "idan"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Idan kima gaskiya ce, to a yi wasu maganganu."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Idan kimar gaskiya ce, to a yi bulo na farko na maganganu. Idan ba haka ba, yi bulo na biyu na maganganu."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun. Idan babu kimar da take gaskiya, yi bulo na ƙarshe na maganganun."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "yi"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "maimaita sau %1"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Yi wasu bayanai sau da dama."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "maimaita har sai"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "maimaita yayin da"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Yayin da wata kima ta zama ƙarya, maimaita wasu lambobi."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Yayin da wata kima ta zama gaskiya, maimaita wasu lambobi."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "A goge duk bululluka %1?"; -Blockly.Msg["DELETE_BLOCK"] = "Goge Bulo"; -Blockly.Msg["DELETE_VARIABLE"] = "A goge siffar '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "A goge amfanunnukan %1 na siffar '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Goge Bulo %1"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Kashe Bulo"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Yi kwafi"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Kwafi Sharhi"; -Blockly.Msg["ENABLE_BLOCK"] = "Kunna Bulo"; -Blockly.Msg["EXPAND_ALL"] = "Faɗaɗa Bulullaka"; -Blockly.Msg["EXPAND_BLOCK"] = "Faɗaɗa Bulo"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Bayanan Waje"; -Blockly.Msg["HELP"] = "Taimako"; -Blockly.Msg["INLINE_INPUTS"] = "Bayanai na Cikin layi"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ƙirƙiri jeri wanda babu komai"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ya dawo da jeri, na tsawon 0, wanda bai ƙunshi ajiye bayanai ba"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "jeri"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ƙirƙiri jeri"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Daɗa wani kaya zuwa jerin."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ƙiƙiri jeri tare da kowace lamba na kayayyaki."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "farko"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# daga ƙarshe"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "samowa"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "samowa da cirewa"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ƙarshe"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "bazuwa"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "cire"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Ya dawo da wani abu na farko a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ya dawo da abin a wani gurbi da aka fayyace a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Ya dawo da wani abu na ƙarshe a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Ya dawo da wani abu a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Ya cire kuma ya dawo da abin farko a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Ya cire kuma ya dawo da abin a gurbin da aka fayyace a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Ya cire kuma ya dawo da abin ƙarshe a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Ya cire kuma ya dawo abu mai bazuwa a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Ya cire abin farko a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Ya cire wani abin a wani gurbi da aka fayyace a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Ya cire abin ƙarshe a cikin jeri."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Ya cire abu mai bazuwa a cikin jeri."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "zuwa # daga ƙarshe"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "zuwa #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "zuwa ƙarshe"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "sami sashin jeri daga farko"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "sami sashin jeri daga # daga ƙarshe"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "sami sashin jeri daga #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ƙirƙiri kwafi na ɓangaren da aka fayyace daga wani jeri."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 shine wani abu na ƙarshe."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 shine wani abu na farko."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "nemo afkuwar farko daga wani abu"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "nemo afkuwar ƙarshe daga wani abu"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Ya dawo da jeri na farkon/ƙarshen afkuwa na wani abu a cikin jerin. Ya dawo da %1 idan ba a sami wani abin ba."; -Blockly.Msg["LISTS_INLIST"] = "a jeri"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 babu komai"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ya dawo gaskiya idan jerin babu komai."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "tsawo na %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Ya dawo da tsawon wani jeri."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "ƙirƙiri jeri tare da wani abu %1 da aka maimaita sau %2"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ya ƙirƙiri jeri da ya ƙunshi wata kima da aka bayar da aka maimaita yawan lambar da aka fayyace."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "juya %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Sauya tsarin kwafi daga jeri."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "a matsayin"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "cusa a"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "shirya"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ya cusa wani abin a farko na jeri."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ya cusa wani abin a wani gurbi da aka fayyace a cikin jeri."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ya maƙala wani abin a ƙarshe na jeri."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Cusa wani abu ta hanyar bazawa a cikin jeri."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ya shirya abin farko a cikin jeri."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ya shirya wani abin a wani gurbi da aka fayyace a cikin jeri."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ya shirya abin ƙarshe a cikin jeri."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ya shirya abu mai bazuwa a cikin jeri."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "hawa"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "sauka"; -Blockly.Msg["LISTS_SORT_TITLE"] = "ware %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ware kwafi na jeri."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "na haruffa, a=A"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "na lamba"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "na haruffa"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "yi jeri daga rubutu"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "yi rubutu daga jeri"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Haɗa jerin rubututtuka zuwa rubutu guda ɗaya, a raba tare da mai raba rubutu."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tsaga rubutu zuwa jerin rubututtuka, a karya a kowane mai raba kalmomi."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "tare da mai raba kalmomi"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ƙarya"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ya koma kodai gaskiya ko ƙarya."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "gaskiya"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Koma gaskiya idan duk bayanan sun yi dai dai da juna."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Koma gaskiya idan bayanin farko ya fi bayani na biyu yawa."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Koma gaskiya idan bayanin farko ya fi ko ya yi dai dai da bayani na biyu."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Koma gaskiya idan bayanin farko ya fi na biyu ƙanƙanta."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Koma gaskiya idan bayanin farko ya fi ƙanƙanta ko dai dai da bayani na biyu."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Koma gaskiya idan duk bayanan ba su yi dai dai da juna ba."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ba %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Koma gaskiya idan bayanin ƙarya ne. Koma ƙarya idan bayanin gaskiya ne."; -Blockly.Msg["LOGIC_NULL"] = "maras amfani"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Ya koma maras amfani."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "kuma"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ko"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Koma gaskiya idan duk bayanan gaskiya ne."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Koma gaskiya idan a ƙalla ɗayan bayanan gaskiya ne."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "gwaji"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "idan ƙarya ne"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "idan gaskiya ne"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Duba sharaɗin a cikin 'gwaji'. Idan sharaɗin gaskiya ne, mayar da kimar 'idan gaskiya ne'; idan ba haka ba mayar da kimar 'idan ƙarya ne'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Dawo da jumlar lambobin guda biyu."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Dawo da sakamakon lambobin guda biyu bayan an raba su da juna."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Dawo da bambancin lambobin guda biyu."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Dawo da ruɓin lambobin guda biyu."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Dawo da lambar farko wadda aka ɗaga ta zuwa ƙarfin lamba ta biyu."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 na X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Dawo da arctangent na tsinin (X, Y) a gwargwado daga -180 zuwa 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "canza %1 da %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Daɗa wata lamba zuwa siffa '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Dawo da ɗaya daga cikin sanannen zaunannen lissafi: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ko ∞ (maras iyaka)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ƙarfi %1 ƙasa %2 sama %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Tsare lamba tsakanin lambobi da aka fayyace masu ƙarama da babbar kima (haɗawa)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "lamba ce da za a iya rabawa da"; -Blockly.Msg["MATH_IS_EVEN"] = "lamba da za a iya rabawa da biyu"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "lamba ce da bata kai sufuli ba"; -Blockly.Msg["MATH_IS_ODD"] = "lamba ce da ba za a iya rabawa da biyu ba"; -Blockly.Msg["MATH_IS_POSITIVE"] = "lamba ce da tafi sufuli"; -Blockly.Msg["MATH_IS_PRIME"] = "lamba ce da kawai za a iya rabawa da kanta"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Duba idan lamba ce da za a iya rabawa da biyu, lamba wadda ba za a iya rabawa da biyu ba, lamba ce kawai da za a iya rabawa da kanta, lamba ce cikakkiya,lamba ce da tafi sufuli, lamba ce da bata kai sufuli ba, lamba ce da za a iya rabawa da wata lamba. Ta dawo da gaskiya ko ƙarya."; -Blockly.Msg["MATH_IS_WHOLE"] = "lamba ce cikakkiya"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "saura daga raba %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Dawo da saura daga raba lambobin guda biyu."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Lambda."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Tsaka-tsaki na jeri"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "cikakke na jeri"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "tsakiyar jeri"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Taƙaicewa na jeri"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mai yawan bayyana na jeri"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "bazuwar kaya na jeri"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "matakan bambance-bambance na jeri"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "jumlar jeri"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Dawo da tsaka-tsaki (matsakaicin lissafi) na kimar lambobi dake cikin jerin."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Dawo da babbar lamba dake cikin jerin."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Dawo da lambar tsakiya ta cikin jeri."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Dawo da lambobi ƙanana a cikin jerin."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Dawo da jeri na abubuwan da suka fi bayyana a cikin jeri."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Dawo da bazuwar kaya daga jerin."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Dawo da matakan bambance-bambance na jeri."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Dawo da jumlar duk lambobi na cikin jerin."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "ɓangare mai buzuwa"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Dawo da ɓangare mai bazuwa tsakanin 0.0 (haɗawa) da 1.0 (rabewa)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "bazuwar cikakkiyar lamba daga %1 zuwa %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Dawo da bazuwar cikakkiyar lamba tsakanin wani gwargwado da aka fayyace, haɗawa."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "cika"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "cika ƙasa"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "cika sama"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Cika lamba sama ko ƙasa."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "cikakkiya"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "lamba da ta ruɓanya kanta"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Dawo da cikakkiyar kima na wata lamba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Dawo da e zuwa ƙarfin wata lamba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Dawo da jerin lambobi da aka tara ko aka ɗebe."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Dawo da tushe 10 na jerin lambobi da aka tara ko aka ɗebe na wata lamba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Dawo da kishiya na wata lamba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Dawo da 10 zuwa ƙarfin wata lamba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Dawo da wata lamba da ta ruɓanya kanta."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Dawo da arccosine na wata lamba."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Dawo da arcsine na wata lamba."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Dawo da arctangent na wata lamba."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Dawo da cosine na wani gwargwado (banda layin kusurwar waje)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Dawo da sine na wani gwargwado (banda layin kusurwar waje)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Dawo da tangent na wani gwargwado (banda layin kusurwar waje)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ƙirƙiri siffa ta launi..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ƙirƙiri siffa ta lamba..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Ƙiriƙiri kalmar siffa..."; -Blockly.Msg["NEW_VARIABLE"] = "Ƙirƙiri siffofi..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Sunan sabuwar siffa:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Irin sabuwar siffa:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ƙyale bayanai"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "tare da:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Gudanar da aiki '%1' wanda mai amfani ya ayyana."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Gudanar da aiki '%1' kuma a yi amfani da sakamakon sa."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "tare da:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ƙirƙiri '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Kwatanta wannan aiki..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "yi"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "da"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ya ƙirƙiri wani aiki ba tare da sakamako ba."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "mayar"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ya ƙirƙiri wani aiki ba tare da wani sakamako ba."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Gardaɗi: Wannan aikin yana da ruɓi na gazawa."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Bayar da haske na bayanin aiki"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Idan wata kima gaskiya ce, to dawo da kima ta biyu."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Gargaɗi: Za a iya amfani da wannan bulo ne kawai a cikin bayani na wani aiki."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "saka suna:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Daɗa wani bayani ga aikin."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "bayani"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Daɗa, cire, ko sake tsarin bayani na wannan aiki."; -Blockly.Msg["REDO"] = "Sake"; -Blockly.Msg["REMOVE_COMMENT"] = "Cire Sharhi"; -Blockly.Msg["RENAME_VARIABLE"] = "Sake sunan siffa..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Sake sunnan duk siffofi '%1' zuwa:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "zuwa %1 daɗa rubutu %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Daɗa wani rubutu zuwa siffa ta '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "zuwa ƙananan baƙaƙe"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "zuwa Baƙaƙe Dake nuna Suna"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "zuwa MANYAN BAƘAƘE"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "sami harafin farko"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "sami harafin # daga ƙarshe"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "sami harafin #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "sami harafin ƙarshe"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "sami harafi mai bazuwa"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "ta rubutu %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Ya dawo da harafi a gurbi da aka fayyace."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "ƙirga %1 a cikin %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Ƙirga sau nawa wani rubutu ya afku a cikin sauran wasu rubutu."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Daɗa wani kaya zuwa ga rubutun."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "haɗa"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo na rubutu."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "zuwa harafin # daga ƙarshe"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "zuwa harafin #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "zuwa harafi na ƙarshe"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ta rubutu"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "sami sashin jumla daga harafin farko"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "sami sashin jumla daga harafin # daga ƙarshe"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "sami sashin jumla daga harafin #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Ya dawo da ɓangaren rubutu da aka fayyace."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "nemo afkuwar farko ta rubutu"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "nemo afkuwar ƙarshe ta rubutu"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ta rubutu %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "nemo a cikin rubutu. Returns %1 if text is not found."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 babu komai"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Ya dawo gaskiya idan rubutun da aka bayar babu komai."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ƙirƙiri rubutu da"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ƙirƙiri guntun rubutu ta haɗa kowace lamba ta kayayyaki."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "tsawon %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Ya dawo lamba ta haruffa (da ya haɗa da sarari) a cikin rubutun da aka bayar."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "buga %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Buga rubutun da aka fayyace, lamba ko wata kima."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Samo wani mai amfani domin wata lamba."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Samo wani mai amfani domin wani rubutu."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "samo lamba tare da saƙo"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "samo rubutu tare da saƙo"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "maye gurbin %1 da %2 a cikin %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Maye gurbin duk afkuwa na wani rubutu a cikin wasu rubutu."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "juya %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Ya juya tsari na haruffa a cikin rubutu."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Harafi, kalma, ko layi na rubutu."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "datse sarari daga ɓangarori guda biyu na"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "datse sarari daga ɓangaren hagu na"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "datse sarari daga ɓangaren dama na"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Dawo da kwafin rubutu tare da sauran sarari da aka cire daga ƙarshe ɗaya ko biyu."; -Blockly.Msg["TODAY"] = "Yau"; -Blockly.Msg["UNDO"] = "Fasa"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "waniabu"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ƙirƙiri 'set %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Ya dawo da kima na wannan siffa."; -Blockly.Msg["VARIABLES_SET"] = "saita %1 zuwa %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Ƙirƙiri 'get %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ya saita wannan siffa ta zama dai dai da bayanin."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Tuni akwai sunnan siffa da aka kira '%1'."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Tuni akwai sunan siffa da aka kira '%1' domin wata iri ta: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Faɗi wani abu..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Daɗa Sharhi"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "An kasa goge siffa '%1' sabo da tana daga sashi na bayanin aikin '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Canza kima:"; +Blockly.Msg["CLEAN_UP"] = "A share Bululluka"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Rusa Bululluka"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Rusa Bulo"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "launi na 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "launi na 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "lissafi"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "gauraya"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Ana gauraya launuka biyu tare da wani lissafi da aka bayar (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Zaɓi launi daga faifan launuka."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "launuka da aka hargitsa"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zaɓi launi daga wanɗanda aka hargitsa."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "shuɗi"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "kore"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ja"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "launi tare da"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ƙirƙiri launi tare da wani yawa da aka fayyace na ja, kore, da shuɗi. Duk kimomin dole su zamo tsakanin 0 da 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ɓalle daga cikin kewaye"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fara da maimaitawa ta gaba ta kewaye"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ɓalle daga kewaye wanda ya ƙunsa."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Tsallake sauran wannan kewaye, sannan kuma a ci gaba da maimaitawa ta gaba ta kewaye."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Gargaɗi: Wannan bulon za a iya amfani da shi ne kawai a wajen kewaye."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ga kowane abu %1 a cikin jeri %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Ga kowane abu a jeri, saka siffar '%1' zuwa ga abin, sannan a maimaita wasu lambobin."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Ƙirga da %1 daga %2 zuwa %3 ƙara %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Sami siffar '%1' ta ɗauki kowa ce kima daga lambar da aka fara da ita zuwa lambar da aka ƙare da ita, ana ƙirgawa daga wata tazara da aka fayyace. Maimaita wannan lamba a kowane lokaci:"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Daɗa sharaɗi zuwa idan bulo."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Daɗa na ƙarshe, sharaɗin kama-duk zuwa idan bulo."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan idan bulo."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "wani"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "wani idan"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "idan"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Idan kima gaskiya ce, to a yi wasu maganganu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Idan kimar gaskiya ce, to a yi bulo na farko na maganganu. Idan ba haka ba, yi bulo na biyu na maganganu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun. Idan babu kimar da take gaskiya, yi bulo na ƙarshe na maganganun."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "yi"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "maimaita sau %1"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Yi wasu bayanai sau da dama."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "maimaita har sai"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "maimaita yayin da"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Yayin da wata kima ta zama ƙarya, maimaita wasu lambobi."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Yayin da wata kima ta zama gaskiya, maimaita wasu lambobi."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "A goge duk bululluka %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Goge Bulo"; +Blockly.Msg["DELETE_VARIABLE"] = "A goge siffar '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "A goge amfanunnukan %1 na siffar '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Goge Bulo %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Kashe Bulo"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Yi kwafi"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Kwafi Sharhi"; +Blockly.Msg["ENABLE_BLOCK"] = "Kunna Bulo"; +Blockly.Msg["EXPAND_ALL"] = "Faɗaɗa Bulullaka"; +Blockly.Msg["EXPAND_BLOCK"] = "Faɗaɗa Bulo"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Bayanan Waje"; +Blockly.Msg["HELP"] = "Taimako"; +Blockly.Msg["INLINE_INPUTS"] = "Bayanai na Cikin layi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ƙirƙiri jeri wanda babu komai"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ya dawo da jeri, na tsawon 0, wanda bai ƙunshi ajiye bayanai ba"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "jeri"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ƙirƙiri jeri"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Daɗa wani kaya zuwa jerin."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ƙiƙiri jeri tare da kowace lamba na kayayyaki."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "farko"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# daga ƙarshe"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "samowa"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "samowa da cirewa"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ƙarshe"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "bazuwa"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "cire"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Ya dawo da wani abu na farko a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ya dawo da abin a wani gurbi da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Ya dawo da wani abu na ƙarshe a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Ya dawo da wani abu a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Ya cire kuma ya dawo da abin farko a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Ya cire kuma ya dawo da abin a gurbin da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Ya cire kuma ya dawo da abin ƙarshe a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Ya cire kuma ya dawo abu mai bazuwa a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Ya cire abin farko a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Ya cire wani abin a wani gurbi da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Ya cire abin ƙarshe a cikin jeri."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Ya cire abu mai bazuwa a cikin jeri."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "zuwa # daga ƙarshe"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "zuwa #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "zuwa ƙarshe"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "sami sashin jeri daga farko"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "sami sashin jeri daga # daga ƙarshe"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "sami sashin jeri daga #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ƙirƙiri kwafi na ɓangaren da aka fayyace daga wani jeri."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 shine wani abu na ƙarshe."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 shine wani abu na farko."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "nemo afkuwar farko daga wani abu"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "nemo afkuwar ƙarshe daga wani abu"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Ya dawo da jeri na farkon/ƙarshen afkuwa na wani abu a cikin jerin. Ya dawo da %1 idan ba a sami wani abin ba."; +Blockly.Msg["LISTS_INLIST"] = "a jeri"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 babu komai"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ya dawo gaskiya idan jerin babu komai."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "tsawo na %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Ya dawo da tsawon wani jeri."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ƙirƙiri jeri tare da wani abu %1 da aka maimaita sau %2"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ya ƙirƙiri jeri da ya ƙunshi wata kima da aka bayar da aka maimaita yawan lambar da aka fayyace."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "juya %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Sauya tsarin kwafi daga jeri."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "a matsayin"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "cusa a"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "shirya"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ya cusa wani abin a farko na jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ya cusa wani abin a wani gurbi da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ya maƙala wani abin a ƙarshe na jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Cusa wani abu ta hanyar bazawa a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ya shirya abin farko a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ya shirya wani abin a wani gurbi da aka fayyace a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ya shirya abin ƙarshe a cikin jeri."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ya shirya abu mai bazuwa a cikin jeri."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "hawa"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "sauka"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ware %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ware kwafi na jeri."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "na haruffa, a=A"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "na lamba"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "na haruffa"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "yi jeri daga rubutu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "yi rubutu daga jeri"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Haɗa jerin rubututtuka zuwa rubutu guda ɗaya, a raba tare da mai raba rubutu."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tsaga rubutu zuwa jerin rubututtuka, a karya a kowane mai raba kalmomi."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "tare da mai raba kalmomi"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ƙarya"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ya koma kodai gaskiya ko ƙarya."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "gaskiya"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Koma gaskiya idan duk bayanan sun yi dai dai da juna."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Koma gaskiya idan bayanin farko ya fi bayani na biyu yawa."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Koma gaskiya idan bayanin farko ya fi ko ya yi dai dai da bayani na biyu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Koma gaskiya idan bayanin farko ya fi na biyu ƙanƙanta."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Koma gaskiya idan bayanin farko ya fi ƙanƙanta ko dai dai da bayani na biyu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Koma gaskiya idan duk bayanan ba su yi dai dai da juna ba."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ba %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Koma gaskiya idan bayanin ƙarya ne. Koma ƙarya idan bayanin gaskiya ne."; +Blockly.Msg["LOGIC_NULL"] = "maras amfani"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Ya koma maras amfani."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "kuma"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ko"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Koma gaskiya idan duk bayanan gaskiya ne."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Koma gaskiya idan a ƙalla ɗayan bayanan gaskiya ne."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "gwaji"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "idan ƙarya ne"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "idan gaskiya ne"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Duba sharaɗin a cikin 'gwaji'. Idan sharaɗin gaskiya ne, mayar da kimar 'idan gaskiya ne'; idan ba haka ba mayar da kimar 'idan ƙarya ne'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Dawo da jumlar lambobin guda biyu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Dawo da sakamakon lambobin guda biyu bayan an raba su da juna."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Dawo da bambancin lambobin guda biyu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Dawo da ruɓin lambobin guda biyu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Dawo da lambar farko wadda aka ɗaga ta zuwa ƙarfin lamba ta biyu."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 na X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Dawo da arctangent na tsinin (X, Y) a gwargwado daga -180 zuwa 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "canza %1 da %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Daɗa wata lamba zuwa siffa '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Dawo da ɗaya daga cikin sanannen zaunannen lissafi: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ko ∞ (maras iyaka)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ƙarfi %1 ƙasa %2 sama %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Tsare lamba tsakanin lambobi da aka fayyace masu ƙarama da babbar kima (haɗawa)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "lamba ce da za a iya rabawa da"; +Blockly.Msg["MATH_IS_EVEN"] = "lamba da za a iya rabawa da biyu"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "lamba ce da bata kai sufuli ba"; +Blockly.Msg["MATH_IS_ODD"] = "lamba ce da ba za a iya rabawa da biyu ba"; +Blockly.Msg["MATH_IS_POSITIVE"] = "lamba ce da tafi sufuli"; +Blockly.Msg["MATH_IS_PRIME"] = "lamba ce da kawai za a iya rabawa da kanta"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Duba idan lamba ce da za a iya rabawa da biyu, lamba wadda ba za a iya rabawa da biyu ba, lamba ce kawai da za a iya rabawa da kanta, lamba ce cikakkiya,lamba ce da tafi sufuli, lamba ce da bata kai sufuli ba, lamba ce da za a iya rabawa da wata lamba. Ta dawo da gaskiya ko ƙarya."; +Blockly.Msg["MATH_IS_WHOLE"] = "lamba ce cikakkiya"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "saura daga raba %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Dawo da saura daga raba lambobin guda biyu."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Lambda."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Tsaka-tsaki na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "cikakke na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "tsakiyar jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Taƙaicewa na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mai yawan bayyana na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "bazuwar kaya na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "matakan bambance-bambance na jeri"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "jumlar jeri"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Dawo da tsaka-tsaki (matsakaicin lissafi) na kimar lambobi dake cikin jerin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Dawo da babbar lamba dake cikin jerin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Dawo da lambar tsakiya ta cikin jeri."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Dawo da lambobi ƙanana a cikin jerin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Dawo da jeri na abubuwan da suka fi bayyana a cikin jeri."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Dawo da bazuwar kaya daga jerin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Dawo da matakan bambance-bambance na jeri."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Dawo da jumlar duk lambobi na cikin jerin."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "ɓangare mai buzuwa"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Dawo da ɓangare mai bazuwa tsakanin 0.0 (haɗawa) da 1.0 (rabewa)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "bazuwar cikakkiyar lamba daga %1 zuwa %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Dawo da bazuwar cikakkiyar lamba tsakanin wani gwargwado da aka fayyace, haɗawa."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "cika"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "cika ƙasa"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "cika sama"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Cika lamba sama ko ƙasa."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "cikakkiya"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "lamba da ta ruɓanya kanta"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Dawo da cikakkiyar kima na wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Dawo da e zuwa ƙarfin wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Dawo da jerin lambobi da aka tara ko aka ɗebe."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Dawo da tushe 10 na jerin lambobi da aka tara ko aka ɗebe na wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Dawo da kishiya na wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Dawo da 10 zuwa ƙarfin wata lamba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Dawo da wata lamba da ta ruɓanya kanta."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Dawo da arccosine na wata lamba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Dawo da arcsine na wata lamba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Dawo da arctangent na wata lamba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Dawo da cosine na wani gwargwado (banda layin kusurwar waje)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Dawo da sine na wani gwargwado (banda layin kusurwar waje)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Dawo da tangent na wani gwargwado (banda layin kusurwar waje)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ƙirƙiri siffa ta launi..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ƙirƙiri siffa ta lamba..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ƙiriƙiri kalmar siffa..."; +Blockly.Msg["NEW_VARIABLE"] = "Ƙirƙiri siffofi..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Sunan sabuwar siffa:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Irin sabuwar siffa:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ƙyale bayanai"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "tare da:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Gudanar da aiki '%1' wanda mai amfani ya ayyana."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Gudanar da aiki '%1' kuma a yi amfani da sakamakon sa."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "tare da:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ƙirƙiri '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Kwatanta wannan aiki..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "yi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "da"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ya ƙirƙiri wani aiki ba tare da sakamako ba."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "mayar"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ya ƙirƙiri wani aiki ba tare da wani sakamako ba."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Gardaɗi: Wannan aikin yana da ruɓi na gazawa."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Bayar da haske na bayanin aiki"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Idan wata kima gaskiya ce, to dawo da kima ta biyu."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Gargaɗi: Za a iya amfani da wannan bulo ne kawai a cikin bayani na wani aiki."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "saka suna:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Daɗa wani bayani ga aikin."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "bayani"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Daɗa, cire, ko sake tsarin bayani na wannan aiki."; +Blockly.Msg["REDO"] = "Sake"; +Blockly.Msg["REMOVE_COMMENT"] = "Cire Sharhi"; +Blockly.Msg["RENAME_VARIABLE"] = "Sake sunan siffa..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Sake sunnan duk siffofi '%1' zuwa:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "zuwa %1 daɗa rubutu %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Daɗa wani rubutu zuwa siffa ta '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "zuwa ƙananan baƙaƙe"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "zuwa Baƙaƙe Dake nuna Suna"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "zuwa MANYAN BAƘAƘE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "sami harafin farko"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "sami harafin # daga ƙarshe"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "sami harafin #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "sami harafin ƙarshe"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "sami harafi mai bazuwa"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ta rubutu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Ya dawo da harafi a gurbi da aka fayyace."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "ƙirga %1 a cikin %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Ƙirga sau nawa wani rubutu ya afku a cikin sauran wasu rubutu."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Daɗa wani kaya zuwa ga rubutun."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "haɗa"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo na rubutu."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "zuwa harafin # daga ƙarshe"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "zuwa harafin #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "zuwa harafi na ƙarshe"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ta rubutu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "sami sashin jumla daga harafin farko"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "sami sashin jumla daga harafin # daga ƙarshe"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "sami sashin jumla daga harafin #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Ya dawo da ɓangaren rubutu da aka fayyace."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "nemo afkuwar farko ta rubutu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "nemo afkuwar ƙarshe ta rubutu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ta rubutu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "nemo a cikin rubutu. Returns %1 if text is not found."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 babu komai"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Ya dawo gaskiya idan rubutun da aka bayar babu komai."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ƙirƙiri rubutu da"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ƙirƙiri guntun rubutu ta haɗa kowace lamba ta kayayyaki."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "tsawon %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Ya dawo lamba ta haruffa (da ya haɗa da sarari) a cikin rubutun da aka bayar."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "buga %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Buga rubutun da aka fayyace, lamba ko wata kima."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Samo wani mai amfani domin wata lamba."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Samo wani mai amfani domin wani rubutu."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "samo lamba tare da saƙo"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "samo rubutu tare da saƙo"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "maye gurbin %1 da %2 a cikin %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Maye gurbin duk afkuwa na wani rubutu a cikin wasu rubutu."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "juya %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Ya juya tsari na haruffa a cikin rubutu."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Harafi, kalma, ko layi na rubutu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "datse sarari daga ɓangarori guda biyu na"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "datse sarari daga ɓangaren hagu na"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "datse sarari daga ɓangaren dama na"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Dawo da kwafin rubutu tare da sauran sarari da aka cire daga ƙarshe ɗaya ko biyu."; +Blockly.Msg["TODAY"] = "Yau"; +Blockly.Msg["UNDO"] = "Fasa"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "waniabu"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ƙirƙiri 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Ya dawo da kima na wannan siffa."; +Blockly.Msg["VARIABLES_SET"] = "saita %1 zuwa %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Ƙirƙiri 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ya saita wannan siffa ta zama dai dai da bayanin."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Tuni akwai sunnan siffa da aka kira '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Tuni akwai sunan siffa da aka kira '%1' domin wata iri ta: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Faɗi wani abu..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/hak.js b/msg/js/hak.js index 8c1c0165bd8..bc5942563d0 100644 --- a/msg/js/hak.js +++ b/msg/js/hak.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "加上解釋"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "刪忒封鎖"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "刪忒 %1 封鎖"; -Blockly.Msg["DIALOG_CANCEL"] = "取消"; -Blockly.Msg["DIALOG_OK"] = "確定"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "複製"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "多行輸入"; -Blockly.Msg["HELP"] = "Help"; // untranslated -Blockly.Msg["INLINE_INPUTS"] = "單行輸入"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "移忒解釋"; -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "變量"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "加上解釋"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "刪忒封鎖"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "刪忒 %1 封鎖"; +Blockly.Msg["DIALOG_CANCEL"] = "取消"; +Blockly.Msg["DIALOG_OK"] = "確定"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "複製"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "多行輸入"; +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "單行輸入"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "移忒解釋"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "變量"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/he.js b/msg/js/he.js index a52f88b5dd9..f0866b4686b 100644 --- a/msg/js/he.js +++ b/msg/js/he.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "הוסף תגובה"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "אי אפשר למחוק את המשתנה \"%1\", מכיוון שהגדרת הפונקציה \"%2\" משתמשת בו."; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "שנה ערך:"; -Blockly.Msg["CLEAN_UP"] = "סידור בלוקים"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "קוביות מצומצמות מכילות אזהרות."; -Blockly.Msg["COLLAPSE_ALL"] = "צמצם קטעי קוד"; -Blockly.Msg["COLLAPSE_BLOCK"] = "צמצום קוביה"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "צבע 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "צבע 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "יחס"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ערבב"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "מערבב שני צבעים יחד עם יחס נתון(0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://he.wikipedia.org/wiki/%D7%A6%D7%91%D7%A2"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "בחר צבע מן הצבעים."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "צבע אקראי"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "בחר צבא אקראי."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "כחול"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ירוק"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "אדום"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "צבע עם"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "צור צבע עם הסכום המצוין של אדום, ירוק וכחול. כל הערכים חייבים להיות בין 0 ל100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "צא מהלולאה"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "המשך עם האיטרציה הבאה של הלולאה"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "צא אל מחוץ ללולאה הכוללת."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "דלג על שאר הלולאה והמשך עם האיטרציה הבאה."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "אזהרה: קוביה זו עשויה לשמש רק בתוך לולאה."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "לכל פריט %1 ברשימה %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "לכל פריט ברשימה, להגדיר את המשתנה '%1' לפריט הזה, ולאחר מכן לעשות כמה פעולות."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "תספור עם %1 מ־%2 עד %3 בצעדי %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "לעשות שהערך ‚%1’ יקבל את הערכים מהמספר ההתחלתי עד המספר הסופי, בהתאם למרווח שהוגדר, ולבצע את הקוביות הנבחרות."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "תוסיף תנאי לבלוק If."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ניתן להוסיף תנאי סופי שלוכד את כולם לקוביית ההתניה (If)."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ניתן להוסיף, למחוק או לסדר מחדש כדי להגדיר מחדש את קוביית ההתניה (If)."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "אחרת"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "אחרת אם"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "אם"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "אם ערך נכון, לבצע כמה פעולות."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "אם הערך הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, לבצע את קוביית הפעולות השנייה."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה. אם אף אחד מהם אינו נכון, לבצע את קוביית הפעולות האחרונה."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "http://he.wikipedia.org/wiki/בקרת_זרימה"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "תעשה"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "חזור על הפעולה %1 פעמים"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "לעשות כמה פעולות מספר פעמים."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "חזור עד ש..."; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "חזור כל עוד"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "בזמן שהערך שווה לשגוי, תעשה מספר חישובים."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "כל עוד הערך הוא אמת, לעשות כמה פעולות."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "האם למחוק את כל %1 הקוביות?"; -Blockly.Msg["DELETE_BLOCK"] = "מחיקת קוביה"; -Blockly.Msg["DELETE_VARIABLE"] = "מחק את משתנה ה'%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "למחוק %1 שימושים במשתנה ‚%2’?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "מחק %1 קטעי קוד"; -Blockly.Msg["DIALOG_CANCEL"] = "ביטול"; -Blockly.Msg["DIALOG_OK"] = "אישור"; -Blockly.Msg["DISABLE_BLOCK"] = "השבתת קוביה"; -Blockly.Msg["DUPLICATE_BLOCK"] = "שכפל"; -Blockly.Msg["DUPLICATE_COMMENT"] = "שכפול ההערה"; -Blockly.Msg["ENABLE_BLOCK"] = "הפעל קטע קוד"; -Blockly.Msg["EXPAND_ALL"] = "הרחב קטעי קוד"; -Blockly.Msg["EXPAND_BLOCK"] = "הרחבת קוביה"; -Blockly.Msg["EXTERNAL_INPUTS"] = "קלטים חיצוניים"; -Blockly.Msg["HELP"] = "עזרה"; -Blockly.Msg["INLINE_INPUTS"] = "קלטים פנימיים"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "צור רשימה ריקה"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "החזר רשימה,באורך 0, המכילה רשומות נתונים"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "רשימה"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "ניתן להוסיף, למחוק או לסדר מחדש סעיפים כדי להגדיר מחדש את קוביית הרשימה הזאת."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "צור רשימה עם"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "הוסף פריט לרשימה."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "צור רשימה עם כל מספר של פריטים."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ראשון"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# מהסוף"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "לקבל"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "קבל ומחק"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "אחרון"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "אקראי"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "הסרה"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "מחזיר את הפריט הראשון ברשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "מחזיר פריט במיקום שצוין ברשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "מחזיר את הפריט האחרון ברשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "מחזיר פריט אקראי מהרשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "מסיר ומחזיר את הפריט הראשון ברשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "מסיר ומחזיר את הפריט במיקום שצוין ברשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "מסיר ומחזיר את הפריט האחרון ברשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "מחק והחזר פריט אקראי מהרשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "הסר את הפריט הראשון ברשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "מחזיר פריט במיקום שצוין ברשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "הסר את הפריט הראשון ברשימה."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "הסר פריט אקראי ברשימה."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ל # מהסוף"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ל #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "לאחרון"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "לקבל חלק מהרשימה החל מהתחלה"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "לקבל חלק מהרשימה החל מ-# עד הסוף"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "לקבל חלק מהרשימה החל מ-#"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "יוצרת עותק של חלק מסוים מהרשימה."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 הוא הפריט האחרון."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 הוא הפריט הראשון."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "מחזירה את המיקום הראשון של פריט ברשימה"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "מחזירה את המיקום האחרון של פריט ברשימה"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "מחזירה את האינדקס של המופע הראשון/האחרון של הפריט ברשימה. מחזירה %1 אם הפריט אינו נמצא."; -Blockly.Msg["LISTS_INLIST"] = "ברשימה"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 הוא ריק"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "מחזיר אמת אם הרשימה ריקה."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "אורכו של %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "מחזירה את האורך של רשימה."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "ליצור רשימה עם הפריט %1 %2 פעמים"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "יוצר רשימה המורכבת מהערך נתון חוזר מספר פעמים שצוין."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "היפוך %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "היפוך עותק של רשימה."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "כמו"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "הכנס ב"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "הגדר"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "מכניס את הפריט בתחילת רשימה."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "מכניס את הפריט במיקום שצוין ברשימה."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "מוסיף את הפריט בסוף רשימה."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "הוסף פריט באופן אקראי ברשימה."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "מגדיר את הפריט הראשון ברשימה."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "מגדיר את הפריט במיקום שצוין ברשימה."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "מגדיר את הפריט האחרון ברשימה."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "מגדיר פריט אקראי ברשימה."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "סדר עולה"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "סדר יורד"; -Blockly.Msg["LISTS_SORT_TITLE"] = "מיון %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "מיון עותק של הרשימה."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "סדר אלפביתי, לא תלוי רישיות"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "נומרי"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "סדר אלפביתי"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "יצירת רשימה מטקסט"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "יצירת טקסט מרשימה"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "צירוף רשימת טקסטים לטקסט אחד, מופרדים בתו הפרדה."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "פיצול טקסט לרשימה של טקסטים, יחתכו לפי תו הפרדה."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "עם מפריד"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "שגוי"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "מחזיר או האם נכון או האם שגוי."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "נכון"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://he.wikipedia.org/wiki/אי-שוויון_(מתמטיקה)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "תחזיר נכון אם שני הקלטים שווים אחד לשני."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "תחזיר נכון אם הקלט הראשון גדול יותר מהקלט השני."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "תחזיר נכון אם הקלט הראשון גדול יותר או שווה לכניסה השנייה."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "תחזיר אמת (true) אם הקלט הראשון הוא קטן יותר מאשר הקלט השני."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "תחזיר אמת אם הקלט הראשון הוא קטן יותר או שווה לקלט השני."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "תחזיר אמת אם שני הקלטים אינם שווים זה לזה."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "לא %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "החזר אמת אם הקלט הוא שקר. החזר שקר אם הקלט אמת."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "תחזיר ריק."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "וגם"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "או"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "תחזיר נכון אם שני הקלטים נכונים."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "תחזיר נכון אם מתקיים לפחות אחד מהקלטים נכונים."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "בדיקה"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "אם שגוי"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "אם נכון"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "בדוק את התנאי ב'מבחן'. אם התנאי נכון, תחזיר את הערך 'אם נכון'; אחרת תחזיר את הערך 'אם שגוי'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://he.wikipedia.org/wiki/ארבע_פעולות_החשבון"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "תחזיר את סכום שני המספרים."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "החזרת המנה של שני המספרים."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "החזרת ההפרש בין שני מספרים."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "החזרת תוצאת הכפל בין שני מספרים."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "החזרת המספר הראשון בחזקת המספר השני."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 של X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "מחזיר את הארכטנגנס של נקודה (X, Y) במעלות מ־‎-180 עד 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "שינוי %1 על־ידי %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "הוסף מספר למשתנה '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://he.wikipedia.org/wiki/קבוע_מתמטי"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "החזרת אחד מהקבועים המקובלים: π (3.141…),‏ e (2.718…),‏ φ (1.618…),‏ sqrt(2) (1.414…),‏ sqrt(½) (0.707…)‏ או ∞ (אינסוף)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "הגבל %1 בין %2 ל %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "הגבלת מספר כך שיהיה בין המגבלות שמוגדרות (כולל)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "מתחלק ב"; -Blockly.Msg["MATH_IS_EVEN"] = "זוגי"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "שלילי"; -Blockly.Msg["MATH_IS_ODD"] = "אי-זוגי"; -Blockly.Msg["MATH_IS_POSITIVE"] = "חיובי"; -Blockly.Msg["MATH_IS_PRIME"] = "ראשוני"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "בדיקה האם מספר הוא זוגי, אי־זוגי, ראשוני, שלם, חיובי, שלילי או אם ניתן לחלק אותו במספר כלשהו. מחזירה אמת או שקר."; -Blockly.Msg["MATH_IS_WHOLE"] = "שלם"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://he.wikipedia.org/wiki/חשבון_מודולרי"; -Blockly.Msg["MATH_MODULO_TITLE"] = "שארית החילוק %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "החזרת השארית מחלוקת שני המספרים."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://he.wikipedia.org/wiki/מספר_ממשי"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "מספר."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ממוצע של רשימה"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "מקסימום של רשימה"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "חציון של רשימה"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "מינימום של רשימה"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "שכיחי הרשימה"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "פריט אקראי מרשימה"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "סטיית תקן של רשימה"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "סכום של רשימה"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "החזרת הממוצע (ממוצע חשבוני) של הערכים המספריים שברשימה."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "תחזיר את המספר הגדול ביותר ברשימה."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "תחזיר את המספר החיצוני ביותר ברשימה."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "תחזיר את המספר הקטן ביותר ברשימה."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "החזרת רשימה של הפריטים הנפוצים ביותר ברשימה"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "תחזיר רכיב אקראי מרשימה."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "מחזיר את סטיית התקן של הרשימה."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "החזרת הסכום של המספרים ברשימה."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "שבר אקראי"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "מחזיר שבר אקראי בין 0.0 (כולל) עד 1.0 (כולל)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "מספר שלם אקראי בין %1 ל-%2 (כולל)"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "החזרת מספר שלם, חיובי ואקראי בין שני הגבולות שהוגדרו, כולל."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://he.wikipedia.org/wiki/עיגול_(אריתמטיקה)"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "עיגול"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "עיגול למטה"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "עיגול למעלה"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "עיגול מספר למעלה או למטה."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://he.wikipedia.org/wiki/שורש_ריבועי"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ערך מוחלט"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "שורש ריבועי"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "החזרת הערך המוחלט של מספר."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "החזרת e בחזקת מספר."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "החזרת הלוגריתם הטבעי של מספר."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "החזרת הלוגריתם לפי בסיס עשר של מספר."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "החזרת הערך הנגדי של מספר."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "החזרת 10 בחזקת מספר."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "החזרת השורש הריבועי של מספר."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://he.wikipedia.org/wiki/פונקציות_טריגונומטריות"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "החזרת הארק-קוסינוס של מספר."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "החזרת הארק-סינוס של מספר."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "החזרת הארק-טנגנס של מספר."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "החזרת הקוסינוס של מעלה (לא רדיאן)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "החזרת הסינוס של מעלה (לא רדיאן)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "החזרת הטנגס של מעלה (לא רדיאן)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "יצירת משתנה צבע..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "צור משתנה מחרוזת"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "צור משתנה מחרוזת"; -Blockly.Msg["NEW_VARIABLE"] = "צור משתנה..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "שם המשתנה החדש:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "סוג המשתנה החדש:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "לאפשר פעולות"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "עם:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://he.wikipedia.org/wiki/שגרה_(תכנות)"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://he.wikipedia.org/wiki/שגרה_(תכנות)"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1' ולהשתמש הפלט שלה."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "עם:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "ליצור '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "תאר את הפונקציה הזאת..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "לעשות משהו"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "לביצוע:"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "יצירת פונקציה ללא פלט."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "להחזיר"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "יצירת פונקציה עם פלט."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "אזהרה: לפונקציה זו יש פרמטרים כפולים."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "הדגש הגדרה של פונקציה"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "אם ערך נכון, אז להחזיר ערך שני."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "אזהרה: קוביה זו עשויה לשמש רק בתוך הגדרה של פונקציה."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "שם הקלט:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "הוסף קלט לפונקציה"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "מקורות קלט"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "הוסף, הסר או סדר מחדש קלטים לפונקציה זו"; -Blockly.Msg["REDO"] = "ביצוע חוזר"; -Blockly.Msg["REMOVE_COMMENT"] = "הסר תגובה"; -Blockly.Msg["RENAME_VARIABLE"] = "שנה את שם המשתנה..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "שנה את שם כל '%1' המשתנים ל:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "אל %1 הוספת טקסט %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "הוספת טקסט למשתנה ‚%1’."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "לאותיות קטנות (עבור טקסט באנגלית)"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "לאותיות גדולות בתחילת כל מילה (עבור טקסט באנגלית)"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "לאותיות גדולות (עבור טקסט באנגלית)"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "החזרת עותק של הטקסט בשינוי רישיות."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "לקבל את האות הראשונה"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "קבלת אות מס׳ מהסוף"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "קבלת אות מס׳"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "לקבל את האות האחרונה"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "לקבל אות אקראית"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "בטקסט %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "מחזיר את האות במיקום שהוגדר."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "לספור %1 ב־%2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "סופרת כמה פעמים טקסט מסוים מופיע בתוך טקסט אחר."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "הוספת פריט לטקסט."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "צירוף"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "ניתן להוסיף, להסיר או לסדר מחדש סעיפים כדי להגדיר את קוביית הטקסט הזאת מחדש."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "לאות # מהסוף"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "לאות #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "עד האות האחרונה"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "בתוך הטקסט"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "קבלת תת־מחרוזת מהאות הראשונה"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "קבלת מחרוזת מאות מס׳ מהסוף"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "קבלת תת־מחרוזת מאות מס׳"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "החזרת קטע מסוים מהטקסט."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "איתור המופע הראשון של טקסט"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "איתור המופע האחרון של טקסט"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "בטקסט %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "מחזירה את האינדקס של המופע הראשון/האחרון בטקסט הראשון לתוך הטקסט השני. מחזירה %1 אם הטקסט אינו נמצא."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 הוא ריק"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "מחזירה אמת אם הטקסט שצוין ריק."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "יצירת טקסט עם"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "יצירת מקטע טקסט על ידי צירוף של כמות כלשהי של פריטים יחדיו."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "אורכו של %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "מחזיר את מספר התווים (אותיות, רווחים וכו') בטקסט שהוזן."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "הדפס %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "להדפיס טקסט, מספר או ערך אחר שצוין"; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "בקש מהמשתמש מספר."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "בקשה למשתמש להזין טקסט כלשהו."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "בקשה למספר עם הודעה"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "בקשה להזנת טקסט עם הודעה"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "החלפת %1 בביטוי %2 בתוך %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "מחליפה את כל המופעים של טקסט מסוים בתוך טקסט אחר."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "היפוך %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "הופכת את הסדר של התווים בטקסט."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://he.wikipedia.org/wiki/מחרוזת_(מדעי_המחשב)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "אות, מילה, או שורת טקסט."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "למחוק רווחים משני הקצוות"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "למחוק רווחים מימין"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "למחוק רווחים משמאל"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "להחזיר עותק של הטקסט לאחר מחיקת רווחים מאחד או משני הקצוות."; -Blockly.Msg["TODAY"] = "היום"; -Blockly.Msg["UNDO"] = "ביטול"; -Blockly.Msg["UNNAMED_KEY"] = "ללא שם"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "פריט"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "ליצור 'הגדר %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "להחזיר את הערך של משתנה זה."; -Blockly.Msg["VARIABLES_SET"] = "הגדר %1 ל- %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "ליצור 'קרא %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "מגדיר משתנה זה להיות שווה לקלט."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "קיים כבר משתנה בשם \"%1\"."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "קיים כבר משתנה בשם \"%1\" מסוג אחר: \"%2\""; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "סביבת העבודה בלוקלי"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "נא להזין הערה..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "הוסף תגובה"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "אי אפשר למחוק את המשתנה \"%1\", מכיוון שהגדרת הפונקציה \"%2\" משתמשת בו."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "שנה ערך:"; +Blockly.Msg["CLEAN_UP"] = "סידור בלוקים"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "קוביות מצומצמות מכילות אזהרות."; +Blockly.Msg["COLLAPSE_ALL"] = "צמצם קטעי קוד"; +Blockly.Msg["COLLAPSE_BLOCK"] = "צמצום קוביה"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "צבע 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "צבע 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "יחס"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ערבב"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "מערבב שני צבעים יחד עם יחס נתון(0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://he.wikipedia.org/wiki/%D7%A6%D7%91%D7%A2"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "בחר צבע מן הצבעים."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "צבע אקראי"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "בחר צבא אקראי."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "כחול"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ירוק"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "אדום"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "צבע עם"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "צור צבע עם הסכום המצוין של אדום, ירוק וכחול. כל הערכים חייבים להיות בין 0 ל100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "צא מהלולאה"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "המשך עם האיטרציה הבאה של הלולאה"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "צא אל מחוץ ללולאה הכוללת."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "דלג על שאר הלולאה והמשך עם האיטרציה הבאה."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "אזהרה: קוביה זו עשויה לשמש רק בתוך לולאה."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "לכל פריט %1 ברשימה %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "לכל פריט ברשימה, להגדיר את המשתנה '%1' לפריט הזה, ולאחר מכן לעשות כמה פעולות."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "תספור עם %1 מ־%2 עד %3 בצעדי %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "לעשות שהערך ‚%1’ יקבל את הערכים מהמספר ההתחלתי עד המספר הסופי, בהתאם למרווח שהוגדר, ולבצע את הקוביות הנבחרות."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "תוסיף תנאי לבלוק If."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ניתן להוסיף תנאי סופי שלוכד את כולם לקוביית ההתניה (If)."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ניתן להוסיף, למחוק או לסדר מחדש כדי להגדיר מחדש את קוביית ההתניה (If)."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "אחרת"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "אחרת אם"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "אם"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "אם ערך נכון, לבצע כמה פעולות."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "אם הערך הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, לבצע את קוביית הפעולות השנייה."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה. אם אף אחד מהם אינו נכון, לבצע את קוביית הפעולות האחרונה."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "http://he.wikipedia.org/wiki/בקרת_זרימה"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "תעשה"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "חזור על הפעולה %1 פעמים"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "לעשות כמה פעולות מספר פעמים."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "חזור עד ש..."; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "חזור כל עוד"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "בזמן שהערך שווה לשגוי, תעשה מספר חישובים."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "כל עוד הערך הוא אמת, לעשות כמה פעולות."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "האם למחוק את כל %1 הקוביות?"; +Blockly.Msg["DELETE_BLOCK"] = "מחיקת קוביה"; +Blockly.Msg["DELETE_VARIABLE"] = "מחק את משתנה ה'%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "למחוק %1 שימושים במשתנה ‚%2’?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "מחק %1 קטעי קוד"; +Blockly.Msg["DIALOG_CANCEL"] = "ביטול"; +Blockly.Msg["DIALOG_OK"] = "אישור"; +Blockly.Msg["DISABLE_BLOCK"] = "השבתת קוביה"; +Blockly.Msg["DUPLICATE_BLOCK"] = "שכפל"; +Blockly.Msg["DUPLICATE_COMMENT"] = "שכפול ההערה"; +Blockly.Msg["ENABLE_BLOCK"] = "הפעל קטע קוד"; +Blockly.Msg["EXPAND_ALL"] = "הרחב קטעי קוד"; +Blockly.Msg["EXPAND_BLOCK"] = "הרחבת קוביה"; +Blockly.Msg["EXTERNAL_INPUTS"] = "קלטים חיצוניים"; +Blockly.Msg["HELP"] = "עזרה"; +Blockly.Msg["INLINE_INPUTS"] = "קלטים פנימיים"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "צור רשימה ריקה"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "החזר רשימה,באורך 0, המכילה רשומות נתונים"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "רשימה"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "ניתן להוסיף, למחוק או לסדר מחדש סעיפים כדי להגדיר מחדש את קוביית הרשימה הזאת."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "צור רשימה עם"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "הוסף פריט לרשימה."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "צור רשימה עם כל מספר של פריטים."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ראשון"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# מהסוף"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "לקבל"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "קבל ומחק"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "אחרון"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "אקראי"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "הסרה"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "מחזיר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "מחזיר פריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "מחזיר את הפריט האחרון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "מחזיר פריט אקראי מהרשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "מסיר ומחזיר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "מסיר ומחזיר את הפריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "מסיר ומחזיר את הפריט האחרון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "מחק והחזר פריט אקראי מהרשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "הסר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "מחזיר פריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "הסר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "הסר פריט אקראי ברשימה."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ל # מהסוף"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ל #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "לאחרון"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "לקבל חלק מהרשימה החל מהתחלה"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "לקבל חלק מהרשימה החל מ-# עד הסוף"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "לקבל חלק מהרשימה החל מ-#"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "יוצרת עותק של חלק מסוים מהרשימה."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 הוא הפריט האחרון."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 הוא הפריט הראשון."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "מחזירה את המיקום הראשון של פריט ברשימה"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "מחזירה את המיקום האחרון של פריט ברשימה"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "מחזירה את האינדקס של המופע הראשון/האחרון של הפריט ברשימה. מחזירה %1 אם הפריט אינו נמצא."; +Blockly.Msg["LISTS_INLIST"] = "ברשימה"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 הוא ריק"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "מחזיר אמת אם הרשימה ריקה."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "אורכו של %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "מחזירה את האורך של רשימה."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ליצור רשימה עם הפריט %1 %2 פעמים"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "יוצר רשימה המורכבת מהערך נתון חוזר מספר פעמים שצוין."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "היפוך %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "היפוך עותק של רשימה."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "כמו"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "הכנס ב"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "הגדר"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "מכניס את הפריט בתחילת רשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "מכניס את הפריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "מוסיף את הפריט בסוף רשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "הוסף פריט באופן אקראי ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "מגדיר את הפריט הראשון ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "מגדיר את הפריט במיקום שצוין ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "מגדיר את הפריט האחרון ברשימה."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "מגדיר פריט אקראי ברשימה."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "סדר עולה"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "סדר יורד"; +Blockly.Msg["LISTS_SORT_TITLE"] = "מיון %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "מיון עותק של הרשימה."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "סדר אלפביתי, לא תלוי רישיות"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "נומרי"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "סדר אלפביתי"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "יצירת רשימה מטקסט"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "יצירת טקסט מרשימה"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "צירוף רשימת טקסטים לטקסט אחד, מופרדים בתו הפרדה."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "פיצול טקסט לרשימה של טקסטים, יחתכו לפי תו הפרדה."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "עם מפריד"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "שגוי"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "מחזיר או האם נכון או האם שגוי."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "נכון"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://he.wikipedia.org/wiki/אי-שוויון_(מתמטיקה)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "תחזיר נכון אם שני הקלטים שווים אחד לשני."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "תחזיר נכון אם הקלט הראשון גדול יותר מהקלט השני."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "תחזיר נכון אם הקלט הראשון גדול יותר או שווה לכניסה השנייה."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "תחזיר אמת (true) אם הקלט הראשון הוא קטן יותר מאשר הקלט השני."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "תחזיר אמת אם הקלט הראשון הוא קטן יותר או שווה לקלט השני."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "תחזיר אמת אם שני הקלטים אינם שווים זה לזה."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "לא %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "החזר אמת אם הקלט הוא שקר. החזר שקר אם הקלט אמת."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "תחזיר ריק."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "וגם"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "או"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "תחזיר נכון אם שני הקלטים נכונים."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "תחזיר נכון אם מתקיים לפחות אחד מהקלטים נכונים."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "בדיקה"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "אם שגוי"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "אם נכון"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "בדוק את התנאי ב'מבחן'. אם התנאי נכון, תחזיר את הערך 'אם נכון'; אחרת תחזיר את הערך 'אם שגוי'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://he.wikipedia.org/wiki/ארבע_פעולות_החשבון"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "תחזיר את סכום שני המספרים."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "החזרת המנה של שני המספרים."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "החזרת ההפרש בין שני מספרים."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "החזרת תוצאת הכפל בין שני מספרים."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "החזרת המספר הראשון בחזקת המספר השני."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 של X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "מחזיר את הארכטנגנס של נקודה (X, Y) במעלות מ־‎-180 עד 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "שינוי %1 על־ידי %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "הוסף מספר למשתנה '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://he.wikipedia.org/wiki/קבוע_מתמטי"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "החזרת אחד מהקבועים המקובלים: π (3.141…),‏ e (2.718…),‏ φ (1.618…),‏ sqrt(2) (1.414…),‏ sqrt(½) (0.707…)‏ או ∞ (אינסוף)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "הגבל %1 בין %2 ל %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "הגבלת מספר כך שיהיה בין המגבלות שמוגדרות (כולל)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "מתחלק ב"; +Blockly.Msg["MATH_IS_EVEN"] = "זוגי"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "שלילי"; +Blockly.Msg["MATH_IS_ODD"] = "אי-זוגי"; +Blockly.Msg["MATH_IS_POSITIVE"] = "חיובי"; +Blockly.Msg["MATH_IS_PRIME"] = "ראשוני"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "בדיקה האם מספר הוא זוגי, אי־זוגי, ראשוני, שלם, חיובי, שלילי או אם ניתן לחלק אותו במספר כלשהו. מחזירה אמת או שקר."; +Blockly.Msg["MATH_IS_WHOLE"] = "שלם"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://he.wikipedia.org/wiki/חשבון_מודולרי"; +Blockly.Msg["MATH_MODULO_TITLE"] = "שארית החילוק %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "החזרת השארית מחלוקת שני המספרים."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://he.wikipedia.org/wiki/מספר_ממשי"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "מספר."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ממוצע של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "מקסימום של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "חציון של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "מינימום של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "שכיחי הרשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "פריט אקראי מרשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "סטיית תקן של רשימה"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "סכום של רשימה"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "החזרת הממוצע (ממוצע חשבוני) של הערכים המספריים שברשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "תחזיר את המספר הגדול ביותר ברשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "תחזיר את המספר החיצוני ביותר ברשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "תחזיר את המספר הקטן ביותר ברשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "החזרת רשימה של הפריטים הנפוצים ביותר ברשימה"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "תחזיר רכיב אקראי מרשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "מחזיר את סטיית התקן של הרשימה."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "החזרת הסכום של המספרים ברשימה."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "שבר אקראי"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "מחזיר שבר אקראי בין 0.0 (כולל) עד 1.0 (כולל)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "מספר שלם אקראי בין %1 ל-%2 (כולל)"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "החזרת מספר שלם, חיובי ואקראי בין שני הגבולות שהוגדרו, כולל."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://he.wikipedia.org/wiki/עיגול_(אריתמטיקה)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "עיגול"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "עיגול למטה"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "עיגול למעלה"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "עיגול מספר למעלה או למטה."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://he.wikipedia.org/wiki/שורש_ריבועי"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ערך מוחלט"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "שורש ריבועי"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "החזרת הערך המוחלט של מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "החזרת e בחזקת מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "החזרת הלוגריתם הטבעי של מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "החזרת הלוגריתם לפי בסיס עשר של מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "החזרת הערך הנגדי של מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "החזרת 10 בחזקת מספר."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "החזרת השורש הריבועי של מספר."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://he.wikipedia.org/wiki/פונקציות_טריגונומטריות"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "החזרת הארק-קוסינוס של מספר."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "החזרת הארק-סינוס של מספר."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "החזרת הארק-טנגנס של מספר."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "החזרת הקוסינוס של מעלה (לא רדיאן)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "החזרת הסינוס של מעלה (לא רדיאן)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "החזרת הטנגס של מעלה (לא רדיאן)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "יצירת משתנה צבע..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "צור משתנה מחרוזת"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "צור משתנה מחרוזת"; +Blockly.Msg["NEW_VARIABLE"] = "צור משתנה..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "שם המשתנה החדש:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "סוג המשתנה החדש:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "לאפשר פעולות"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "עם:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://he.wikipedia.org/wiki/שגרה_(תכנות)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://he.wikipedia.org/wiki/שגרה_(תכנות)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1' ולהשתמש הפלט שלה."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "עם:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "ליצור '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "תאר את הפונקציה הזאת..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "לעשות משהו"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "לביצוע:"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "יצירת פונקציה ללא פלט."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "להחזיר"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "יצירת פונקציה עם פלט."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "אזהרה: לפונקציה זו יש פרמטרים כפולים."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "הדגש הגדרה של פונקציה"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "אם ערך נכון, אז להחזיר ערך שני."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "אזהרה: קוביה זו עשויה לשמש רק בתוך הגדרה של פונקציה."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "שם הקלט:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "הוסף קלט לפונקציה"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "מקורות קלט"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "הוסף, הסר או סדר מחדש קלטים לפונקציה זו"; +Blockly.Msg["REDO"] = "ביצוע חוזר"; +Blockly.Msg["REMOVE_COMMENT"] = "הסר תגובה"; +Blockly.Msg["RENAME_VARIABLE"] = "שנה את שם המשתנה..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "שנה את שם כל '%1' המשתנים ל:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "אל %1 הוספת טקסט %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "הוספת טקסט למשתנה ‚%1’."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "לאותיות קטנות (עבור טקסט באנגלית)"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "לאותיות גדולות בתחילת כל מילה (עבור טקסט באנגלית)"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "לאותיות גדולות (עבור טקסט באנגלית)"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "החזרת עותק של הטקסט בשינוי רישיות."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "לקבל את האות הראשונה"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "קבלת אות מס׳ מהסוף"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "קבלת אות מס׳"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "לקבל את האות האחרונה"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "לקבל אות אקראית"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "בטקסט %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "מחזיר את האות במיקום שהוגדר."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "לספור %1 ב־%2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "סופרת כמה פעמים טקסט מסוים מופיע בתוך טקסט אחר."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "הוספת פריט לטקסט."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "צירוף"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "ניתן להוסיף, להסיר או לסדר מחדש סעיפים כדי להגדיר את קוביית הטקסט הזאת מחדש."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "לאות # מהסוף"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "לאות #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "עד האות האחרונה"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "בתוך הטקסט"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "קבלת תת־מחרוזת מהאות הראשונה"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "קבלת מחרוזת מאות מס׳ מהסוף"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "קבלת תת־מחרוזת מאות מס׳"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "החזרת קטע מסוים מהטקסט."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "איתור המופע הראשון של טקסט"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "איתור המופע האחרון של טקסט"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "בטקסט %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "מחזירה את האינדקס של המופע הראשון/האחרון בטקסט הראשון לתוך הטקסט השני. מחזירה %1 אם הטקסט אינו נמצא."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 הוא ריק"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "מחזירה אמת אם הטקסט שצוין ריק."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "יצירת טקסט עם"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "יצירת מקטע טקסט על ידי צירוף של כמות כלשהי של פריטים יחדיו."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "אורכו של %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "מחזיר את מספר התווים (אותיות, רווחים וכו') בטקסט שהוזן."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "הדפס %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "להדפיס טקסט, מספר או ערך אחר שצוין"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "בקש מהמשתמש מספר."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "בקשה למשתמש להזין טקסט כלשהו."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "בקשה למספר עם הודעה"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "בקשה להזנת טקסט עם הודעה"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "החלפת %1 בביטוי %2 בתוך %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "מחליפה את כל המופעים של טקסט מסוים בתוך טקסט אחר."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "היפוך %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "הופכת את הסדר של התווים בטקסט."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://he.wikipedia.org/wiki/מחרוזת_(מדעי_המחשב)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "אות, מילה, או שורת טקסט."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "למחוק רווחים משני הקצוות"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "למחוק רווחים מימין"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "למחוק רווחים משמאל"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "להחזיר עותק של הטקסט לאחר מחיקת רווחים מאחד או משני הקצוות."; +Blockly.Msg["TODAY"] = "היום"; +Blockly.Msg["UNDO"] = "ביטול"; +Blockly.Msg["UNNAMED_KEY"] = "ללא שם"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "פריט"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "ליצור 'הגדר %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "להחזיר את הערך של משתנה זה."; +Blockly.Msg["VARIABLES_SET"] = "הגדר %1 ל- %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "ליצור 'קרא %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "מגדיר משתנה זה להיות שווה לקלט."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "קיים כבר משתנה בשם \"%1\"."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "קיים כבר משתנה בשם \"%1\" מסוג אחר: \"%2\""; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "סביבת העבודה בלוקלי"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "נא להזין הערה..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/hi.js b/msg/js/hi.js index 89938774d12..1528035dca7 100644 --- a/msg/js/hi.js +++ b/msg/js/hi.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "टिप्पणी छोड़ें"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "चर '%1' को नहीं हटा सकता क्योंकि यह फ़ंक्शन '%2' की परिभाषा का हिस्सा है"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "मान परिवर्तित करें:"; -Blockly.Msg["CLEAN_UP"] = "खानों को साफ करें"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ब्लॉक संक्षिप्त करें"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ब्लॉक को संक्षिप्त करें"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "रंग 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "रंग 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "अनुपात"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "मिश्रण करें"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "दिए गए अनुपात (0.0 - 1.0) के साथ दो रंगों का मिश्रण करता है।"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "पैलेट से एक रंग चुनें।"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "कोई भी रंग"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "कोई भी एक रंग का चयन करें।"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "नीला"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "हरा"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "लाल"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "इसके साथ रंग करें"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "लाल, हरा और नीले की निर्दिष्ट मात्रा के साथ एक रंग बनायें। सभी मान ० से १०० के बीच होने चाहिए।"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "फंदे से बाहर निकलें"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "फंदे की अगली यात्रा के साथ जारी रखें"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "भीतरी फंदे से बाहर निकलें।"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "बाकी बचे फंदे को छोड़ें, और अगली यात्रा जारी रखें।"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "सावधान: ये ब्लॉक केवल लूप के अंदर इस्तेमाल किया जा सकता है।"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "प्रत्येक वस्तु के लिए %1 सूची में %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "सूची के प्रत्येक वस्तु के लिए, वस्तु में चर का मान '%1' रखें और बाद में कुछ कथन लिखें।"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 से %2 से %3 तक %4 के साथ गिनती करें"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "क्या चर '%1' प्रारंभ संख्या से अंत संख्या तक मानों को लेता है, निर्दिष्ट अंतराल के अनुसार गिनती करता है, और निर्दिष्ट रुकावटों को करता है।"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "एक शर्त जोड़ें यदि ब्लॉक है।"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "यदि ब्लॉक है तो इसके लिए एक अंतिम, कैच-सभी स्थिति जोड़ें।"; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "अन्य"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "यदि अन्य"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "यदि"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "यदी मान सही है, तो कुछ विवरण चलाएँ।"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "यदि एक मान सत्य है तो कथनों का प्रथम खण्ड बनायें। अन्यथा कथनों का दूसरा भाग निर्मित करें।"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "यदि पहले मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें।"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "यदि पहला मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें। यदि कोई भी मान सही नहीं है, तो बयानों का अंतिम खंड करें।"; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "करें"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 बार दोहराएँ"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "कुछ विवरण कई बार चलाएँ।"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "दोहराएँ जब तक"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "दोहराएँ जब कि"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "जब तक मान गलत है, तब तक कुछ विवरण चलाएँ।"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "जब तक मान सही है, तब तक कुछ विवरण चलाएँ।"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "सभी %1 खानों को हटा दें?"; -Blockly.Msg["DELETE_BLOCK"] = "ब्लॉक हटाएँ"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' चर को हटाएँ"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' चर के %1 उपयोग को हटाएँ?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ब्लॉक हटाएँ"; -Blockly.Msg["DIALOG_CANCEL"] = "रद्द करें"; -Blockly.Msg["DIALOG_OK"] = "ठीक है"; -Blockly.Msg["DISABLE_BLOCK"] = "ब्लॉक को अक्षम करें"; -Blockly.Msg["DUPLICATE_BLOCK"] = "कॉपी करें"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "ब्लॉक को सक्षम करें"; -Blockly.Msg["EXPAND_ALL"] = "ब्लॉक विस्तार करें"; -Blockly.Msg["EXPAND_BLOCK"] = "ब्लॉक का विस्तार करें"; -Blockly.Msg["EXTERNAL_INPUTS"] = "बाहरी इनपुट"; -Blockly.Msg["HELP"] = "सहायता"; -Blockly.Msg["INLINE_INPUTS"] = "इनलाइन इनपुट"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "खाली सूची बनाएँ"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "0 लंबाई की, कोई भी डेटा ना रखने वाली एक सूची लौटती है"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "सूची"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "इस सूची ब्लॉक को पुन: आकार देने के लिए वर्गों को जोड़ें, निकालें, या पुन: क्रमित करें।"; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "इसके सूची बनाएँ"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "सूची मे एक आइटम जोड़ें।"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "कितने भी आइटम वाली एक सूची बनाएँ।"; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "पहला"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "अंत से #"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "प्राप्त"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "प्राप्त करे और हटाए"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "आखिरी"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "रैन्डम"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "निकालें"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "सूची का पहला आइटम रिटर्न करता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "एक सूची में निर्दिष्ट स्थान पर वस्तु को लौटाता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "सूची का आखरी आइटम रिटर्न करता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "सूची से रैन्डम आइटम रिटर्न करता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "सूची का पहला आइटम निकालता है और रिटर्न करता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "एक सूची में निर्दिष्ट स्थिति में आइटम निकालता है और लौटाता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "सूची का आखरी आइटम निकालता है और रिटर्न करता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "सूची से रैन्डम आइटम निकालता है और रिटर्न करता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "सूची का पहला आइटम निकालता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "एक सूची में निर्दिष्ट स्थान पर आइटम निकाल देता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "सूची का आखरी आइटम निकालता है।"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "सूची से रैन्डम आइटम निकालता है।"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "अंतिम से # को"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# को"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "अंत से"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "प्रथम से उप-सूची प्राप्त करें"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "अंत से # से उप-सूची प्राप्त करें"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# से उप-सूची प्राप्त करें"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "सूची के बताए गये भाग की कॉपी बनता है।"; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 आखिरी वस्तु है।"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 पहली वस्तु है।"; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "आइटम पहली बार जहाँ आया है उसे ढूढ़े"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "आइटम आखरी बार जहाँ आया है उसे ढूढ़े"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "सूची में आइटम की पहली/अंतिम घटना का सूचक देता है। यदि आइटम नहीं मिला है तो %1 रिटर्न होता है।"; -Blockly.Msg["LISTS_INLIST"] = "सूची में"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 खाली है"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "यदि सूची खाली है तो ट्रू रिटर्न करता है।"; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 की लंबाई"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "सूची की लंबाई रिटर्न करता है।"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "वस्तु %1 के साथ %2 बार दोहराई गयी सूची बनाएं"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "निर्धारित मान की बार-बार दोहराई गई एक सूची बनाता है।"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 को बदल दें"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "एक सूची की एक प्रति को छांटे।"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "बतौर"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "पर डालें"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "सैट करें"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "आइटम को सूची के शुरू में इनसर्ट करता है।"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "सूची मे बताए गये स्थान में आइटम इनसर्ट करता है।"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "आइटम को सूची के अंत में जोड़ता है।"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "आइटम को सूची में रैन्डम्ली इनसर्ट करता है।"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "सूची में पहला आइटम सैट करता है।"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "सूची मे बताए गये स्थान में आइटम सैट करता है।"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "सूची में आखरी आइटम सैट करता है।"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "सूची में रैन्डम आइटम सैट करता है।"; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "बढ़ते क्रम"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "बढ़ते क्रम में"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 को छांटे"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "एक सूची की एक प्रति को छांटे।"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "वर्णक्रमानुसार, मामले की अनदेखी करें"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "अंकीय"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "वर्णक्रमानुसार"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "पाठ से एक सूची बनाएं"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "सूची से एक पाठ बनाएं"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ग्रंथों की एक सूची में शामिल करें, जो एक सीमांकक से अलग हो।"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "ग्रंथों की सूची में पाठ को विभाजित करें, प्रत्येक सीमांकक पर तोड़कर।"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "सीमांकक के साथ"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "गलत"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ट्रू या फॉल्स रिटर्न करता है।"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "सही"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर हों।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो या बराबर हो।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो या बराबर हो।"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर नहीं हों।"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "NOT (पूरक) %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ट्रू रिटर्न करता है यदि इनपुट फॉल्स है। फॉल्स रिटर्न करता है यदि इनपुट ट्रू है।"; -Blockly.Msg["LOGIC_NULL"] = "NULL (अमान्य)"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "null (अमान्य) रिटर्न करता है।"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "AND (तथा)"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "OR (अथवा)"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ट्रू रिटर्न करें यदि दोनो इनपुट ट्रू हों।"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ट्रू रिटर्न करें यदि दोनो मे से इक इनपुट ट्रू हो।"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "टेस्ट"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "यदि गलत है"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "यदि सही है"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'परीक्षण' में हालत की जांच करें। यदि स्थिति सही है, तो 'सच' मान लौटाता है; अन्यथा वापस लौटता 'अगर झूठा'मान देता है।"; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "दो संख्याओं का योग रिटर्न करें।"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "दो संख्याओं का भागफल रिटर्न करें।"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "दो संख्याओं का अंतर रिटर्न करें।"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "दो संख्याओं का गुणन रिटर्न करें।"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "दूसरे नंबर की शक्ति को उठाए गए पहले नंबर पर लौटें"; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 को %2 से बदलें"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "संख्या को चर '%1' से जोड़ें।"; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "सामान्य स्थिरांक में से एक को वापस लौटें:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)।"; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 कम %2 उच्च %3 बाधित करें"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "एक संख्या को निर्दिष्ट सीमा (सम्मिलित) के बीच बाधित करें।"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "इसके द्वारा विभाज्य है"; -Blockly.Msg["MATH_IS_EVEN"] = "सम है"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "ऋणात्मक है"; -Blockly.Msg["MATH_IS_ODD"] = "विषम है"; -Blockly.Msg["MATH_IS_POSITIVE"] = "धनात्मक है"; -Blockly.Msg["MATH_IS_PRIME"] = "अभाज्य है"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "जांचें कि क्या कोई संख्या एक सम, विषम, मुख्य, संपूर्ण, सकारात्मक, नकारात्मक है या यदि वह निश्चित संख्या से विभाजित है। वास्तविक या गलत रिटर्न देता है।"; -Blockly.Msg["MATH_IS_WHOLE"] = "पूर्णांक है"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 का शेषफल"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "दो संख्याओं के भाग का शेषफल रिटर्न करें।"; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "एक संख्या।"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "सूची का औसत मान"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "सूची मे अधिकतम"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "सूची की माध्यिका"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "सूची मे न्यूनतम"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "सूची का मोड"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "सूची का रैन्डम आइटम"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "सूची का मानक विचलन"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "सूची का योग"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "सूची में संख्यात्मक मानों का औसत (अंकगणित माध्य) लौटें।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "सूची में सबसे बड़ी संख्या रिटर्न करें।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "सूची की माध्यिका संख्या रिटर्न करें।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "सूची मे सबसे छोटी संख्या रिटर्न करें।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "सूची मे सबसे आम आइटम(s) की सूची रिटर्न करें।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "सूची से एक रैन्डम आइटम रिटर्न करें।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "सूची का मानक विचलन रिटर्न करें।"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "सूची की सभी संख्याओं का योग रिटर्न करें।"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "रैन्डम अंश"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (समावेशी) और 1.0 (विशिष्ट) के बीच एक यादृच्छिक अंश पर लौटें।"; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1 से %2 तक रैन्डम पूर्णांक"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "दो निर्दिष्ट सीमाओं, समावेशी के बीच एक यादृच्छिक पूर्णांक लौटें।"; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "पूर्णांक बनाएँ"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "घटा के पूर्णांक बनाएँ"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "बड़ा के पूर्णांक बनाएँ"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "संख्या को बड़ा या घटा के पूर्णांक बनाएँ।"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "परम"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "वर्गमूल"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "संख्या का परम मान रिटर्न करें।"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "किसी संख्या की शक्ति को वापस ई करें।"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "संख्या का प्राकृतिक लघुगणक रिटर्न करें।"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "संख्या का मूल 10 लघुगणक रिटर्न करें।"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "संख्या का निषेध मान रिटर्न करें।"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "किसी संख्या की शक्ति पर 10 लौटें।"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "संख्या का वर्गमूल रिटर्न करें।"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "संख्या का आर्ककोसाइन रिटर्न करें।"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "संख्या का आर्कसाइन रिटर्न करें।"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "संख्या का आर्कटैन्जन्ट रिटर्न करें।"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "डिग्री का कोसाइन रिटर्न करें (रेडियन नही)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "डिग्री का साइन रिटर्न करें (रेडियन नही)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "डिग्री का टैन्जन्ट रिटर्न करें (रेडियन नही)"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "रंग चर बनाएँ..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "संख्या चर बनायें..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "लड़ी चर बनायें..."; -Blockly.Msg["NEW_VARIABLE"] = "चर बनाएँ..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "नए चर का नाम:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "नए चर का नाम:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "बयानों की अनुमति दें"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = ": के साथ"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ।"; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ और उसका आउटपुट इस्तेमाल करें।"; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = ": के साथ"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' बनाएँ"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "इस फंकशन को समझाएँ..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "कुछ करें"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "को"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "बिना आउटपुट वाला एक फ़ंक्शन बनाता है।"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "वापस आएं"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "आउटपुट वाला एक फ़ंक्शन बनाता है।"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "सावधान: इस फ़ंक्शन मे डुप्लिकेट पैरामीटर हैं।"; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "फ़ंक्शन परिभाषा को हाइलाइट करें"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "यदि एक मान ट्रू है तो, दूसरा मान रिटर्न करें।"; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "सावधान: ये ब्लॉक फ़ंक्शन परिभाषा के अंदर ही इस्तेमाल किया जा सकता।"; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "इनपुट का नाम:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "फंगक्शन को इनपुट प्रदान करें।"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "इनपुट"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "इस फ़ंक्शन में इनपुट जोड़ें, निकालें, या पुन: क्रमित करें।"; -Blockly.Msg["REDO"] = "फिर से करें"; -Blockly.Msg["REMOVE_COMMENT"] = "टिप्पणी हटायें"; -Blockly.Msg["RENAME_VARIABLE"] = "चर का नाम बदलें..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "सभी '%1' चरों के नाम बदलें:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 में पाठ %2 को जोड़ें"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "कुछ टेक्स्ट इस चर '%1' से जोड़ें।"; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "छोटे अक्षर मे"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "टाइटल केस मे"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "बड़े अक्षर मे"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "टेक्स्ट की कॉपी भिन्न केस (अक्षर से संबंधित) मे रिटर्न करें।"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "पहला अक्षर पाएँ"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "आखिर से अक्षर # पाएँ"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "अक्षर # पाएँ"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "आखरी अक्षर पाएँ"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "रैन्डम अक्षर पाएँ"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "पाठ %1 %2 में"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "बताई गयी जगह से अक्षर रिटर्न करता है"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 को %2 में गिने"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "गिने, कितनी बार कुछ पाठ कुछ अन्य पाठ के अंदर समाहित होता है।"; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "सूची मे एक आइटम जोड़ें।"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "जोड़"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "आखिर से यहाँ तक अक्षर #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "यहाँ तक अक्षर #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "यहाँ तक आखरी अक्षर"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "इस टेक्स्ट मे"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "पहले अक्षर से सबस्ट्रिंग पाएँ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "आखरी अक्षर # से सबस्ट्रिंग पाएँ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "अक्षर # से सबस्ट्रिंग पाएँ"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "टेक्स्ट का बताया गया अंश रिटर्न करता है"; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "टेक्स्ट पहली बार जहाँ आया है उसे ढूढ़े"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "टेक्स्ट आखरी बार जहाँ आया है उसे ढूढ़े"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "पाठ %1 %2 %3 में"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "दूसरे पाठ में पहले पाठ की पहली/अंतिम घटना का सूचक देता है। यदि पाठ नहीं मिला है तो %1 रिटर्न होता है।"; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 खाली है"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "ट्रू रिटर्न करता है यदि दिया गया टेक्स्ट खाली है।"; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "इसके साथ टेक्स्ट बनाएँ"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "किसी भी संख्या के मदों को एक साथ जोड़ कर पाठ का एक टुकड़ा बनाएं।"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 की लंबाई"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "दिए गये टेक्स्ट मे अक्षरों की संख्या रिटर्न करता है (खाली स्थान मिला के)।"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "प्रिंट करें %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "दिया गया टेक्स्ट प्रिंट करें, संख्या या अन्य मान।"; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "यूज़र से संख्या के लिए प्रॉम्प्ट करें।"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "यूज़र से कुछ टेक्स्ट के लिए प्रॉम्प्ट करें।"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "सूचना के साथ संख्या के लिए प्रॉम्प्ट करें"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "सूचना के साथ टेक्स्ट के लिए प्रॉम्प्ट करें"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 को %2 के साथ %3 में बदलें"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "कुछ अन्य पाठ के अंदर कुछ पाठ की सभी जगहों को बदलें।"; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 को बदल दें"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "पाठ में वर्णों के क्रम को उलट देता है।"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "एक अक्षर, शब्द, या टेक्स्ट की पंक्ति।"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "रिक्त स्थान को इस टेक्स्ट के दोनों तरफ से निकालें"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "रिक्त स्थान को इस टेक्स्ट के बायें तरफ से निकालें"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "रिक्त स्थान को इस टेक्स्ट के दाईं तरफ से निकालें"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "एक या दोनों सिरों से हटाए गए रिक्त स्थान के साथ पाठ की एक प्रति लौटाएं।"; -Blockly.Msg["TODAY"] = "आज"; -Blockly.Msg["UNDO"] = "पूर्ववत करें"; -Blockly.Msg["UNNAMED_KEY"] = "अज्ञात"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "वस्तु"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "सेट '%1' बनाएँ"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "इस चर का मान रिटर्न करता है।"; -Blockly.Msg["VARIABLES_SET"] = "सेट करें %1 को %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'प्राप्त करें %1' बनाएं"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "इस चर को इनपुट के बराबर सेट करता है।"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "प्राचल नाम '%1' पहले से मौजूद है।"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' नाम का एक चर पहले से '%2' प्रकार के अन्य चर के लिए मौजूद है।"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "टिप्पणी छोड़ें"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "चर '%1' को नहीं हटा सकता क्योंकि यह फ़ंक्शन '%2' की परिभाषा का हिस्सा है"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "मान परिवर्तित करें:"; +Blockly.Msg["CLEAN_UP"] = "खानों को साफ करें"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ब्लॉक संक्षिप्त करें"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ब्लॉक को संक्षिप्त करें"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "रंग 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "रंग 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "अनुपात"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "मिश्रण करें"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "दिए गए अनुपात (0.0 - 1.0) के साथ दो रंगों का मिश्रण करता है।"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "पैलेट से एक रंग चुनें।"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "कोई भी रंग"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "कोई भी एक रंग का चयन करें।"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "नीला"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "हरा"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "लाल"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "इसके साथ रंग करें"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "लाल, हरा और नीले की निर्दिष्ट मात्रा के साथ एक रंग बनायें। सभी मान ० से १०० के बीच होने चाहिए।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "फंदे से बाहर निकलें"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "फंदे की अगली यात्रा के साथ जारी रखें"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "भीतरी फंदे से बाहर निकलें।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "बाकी बचे फंदे को छोड़ें, और अगली यात्रा जारी रखें।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "सावधान: ये ब्लॉक केवल लूप के अंदर इस्तेमाल किया जा सकता है।"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "प्रत्येक वस्तु के लिए %1 सूची में %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "सूची के प्रत्येक वस्तु के लिए, वस्तु में चर का मान '%1' रखें और बाद में कुछ कथन लिखें।"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 से %2 से %3 तक %4 के साथ गिनती करें"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "क्या चर '%1' प्रारंभ संख्या से अंत संख्या तक मानों को लेता है, निर्दिष्ट अंतराल के अनुसार गिनती करता है, और निर्दिष्ट रुकावटों को करता है।"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "एक शर्त जोड़ें यदि ब्लॉक है।"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "यदि ब्लॉक है तो इसके लिए एक अंतिम, कैच-सभी स्थिति जोड़ें।"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "अन्य"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "यदि अन्य"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "यदि"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "यदी मान सही है, तो कुछ विवरण चलाएँ।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "यदि एक मान सत्य है तो कथनों का प्रथम खण्ड बनायें। अन्यथा कथनों का दूसरा भाग निर्मित करें।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "यदि पहले मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें।"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "यदि पहला मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें। यदि कोई भी मान सही नहीं है, तो बयानों का अंतिम खंड करें।"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "करें"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 बार दोहराएँ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "कुछ विवरण कई बार चलाएँ।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "दोहराएँ जब तक"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "दोहराएँ जब कि"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "जब तक मान गलत है, तब तक कुछ विवरण चलाएँ।"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "जब तक मान सही है, तब तक कुछ विवरण चलाएँ।"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "सभी %1 खानों को हटा दें?"; +Blockly.Msg["DELETE_BLOCK"] = "ब्लॉक हटाएँ"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' चर को हटाएँ"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' चर के %1 उपयोग को हटाएँ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ब्लॉक हटाएँ"; +Blockly.Msg["DIALOG_CANCEL"] = "रद्द करें"; +Blockly.Msg["DIALOG_OK"] = "ठीक है"; +Blockly.Msg["DISABLE_BLOCK"] = "ब्लॉक को अक्षम करें"; +Blockly.Msg["DUPLICATE_BLOCK"] = "कॉपी करें"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ब्लॉक को सक्षम करें"; +Blockly.Msg["EXPAND_ALL"] = "ब्लॉक विस्तार करें"; +Blockly.Msg["EXPAND_BLOCK"] = "ब्लॉक का विस्तार करें"; +Blockly.Msg["EXTERNAL_INPUTS"] = "बाहरी इनपुट"; +Blockly.Msg["HELP"] = "सहायता"; +Blockly.Msg["INLINE_INPUTS"] = "इनलाइन इनपुट"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "खाली सूची बनाएँ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "0 लंबाई की, कोई भी डेटा ना रखने वाली एक सूची लौटती है"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "सूची"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "इस सूची ब्लॉक को पुन: आकार देने के लिए वर्गों को जोड़ें, निकालें, या पुन: क्रमित करें।"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "इसके सूची बनाएँ"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "सूची मे एक आइटम जोड़ें।"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "कितने भी आइटम वाली एक सूची बनाएँ।"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "पहला"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "अंत से #"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "प्राप्त"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "प्राप्त करे और हटाए"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "आखिरी"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "रैन्डम"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "निकालें"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "सूची का पहला आइटम रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "एक सूची में निर्दिष्ट स्थान पर वस्तु को लौटाता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "सूची का आखरी आइटम रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "सूची से रैन्डम आइटम रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "सूची का पहला आइटम निकालता है और रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "एक सूची में निर्दिष्ट स्थिति में आइटम निकालता है और लौटाता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "सूची का आखरी आइटम निकालता है और रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "सूची से रैन्डम आइटम निकालता है और रिटर्न करता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "सूची का पहला आइटम निकालता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "एक सूची में निर्दिष्ट स्थान पर आइटम निकाल देता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "सूची का आखरी आइटम निकालता है।"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "सूची से रैन्डम आइटम निकालता है।"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "अंतिम से # को"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# को"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "अंत से"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "प्रथम से उप-सूची प्राप्त करें"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "अंत से # से उप-सूची प्राप्त करें"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# से उप-सूची प्राप्त करें"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "सूची के बताए गये भाग की कॉपी बनता है।"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 आखिरी वस्तु है।"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 पहली वस्तु है।"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "आइटम पहली बार जहाँ आया है उसे ढूढ़े"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "आइटम आखरी बार जहाँ आया है उसे ढूढ़े"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "सूची में आइटम की पहली/अंतिम घटना का सूचक देता है। यदि आइटम नहीं मिला है तो %1 रिटर्न होता है।"; +Blockly.Msg["LISTS_INLIST"] = "सूची में"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 खाली है"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "यदि सूची खाली है तो ट्रू रिटर्न करता है।"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 की लंबाई"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "सूची की लंबाई रिटर्न करता है।"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "वस्तु %1 के साथ %2 बार दोहराई गयी सूची बनाएं"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "निर्धारित मान की बार-बार दोहराई गई एक सूची बनाता है।"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 को बदल दें"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "एक सूची की एक प्रति को छांटे।"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "बतौर"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "पर डालें"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "सैट करें"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "आइटम को सूची के शुरू में इनसर्ट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "सूची मे बताए गये स्थान में आइटम इनसर्ट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "आइटम को सूची के अंत में जोड़ता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "आइटम को सूची में रैन्डम्ली इनसर्ट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "सूची में पहला आइटम सैट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "सूची मे बताए गये स्थान में आइटम सैट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "सूची में आखरी आइटम सैट करता है।"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "सूची में रैन्डम आइटम सैट करता है।"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "बढ़ते क्रम"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "बढ़ते क्रम में"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 को छांटे"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "एक सूची की एक प्रति को छांटे।"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "वर्णक्रमानुसार, मामले की अनदेखी करें"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "अंकीय"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "वर्णक्रमानुसार"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "पाठ से एक सूची बनाएं"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "सूची से एक पाठ बनाएं"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ग्रंथों की एक सूची में शामिल करें, जो एक सीमांकक से अलग हो।"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "ग्रंथों की सूची में पाठ को विभाजित करें, प्रत्येक सीमांकक पर तोड़कर।"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "सीमांकक के साथ"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "गलत"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ट्रू या फॉल्स रिटर्न करता है।"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "सही"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर हों।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो या बराबर हो।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो या बराबर हो।"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर नहीं हों।"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "NOT (पूरक) %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ट्रू रिटर्न करता है यदि इनपुट फॉल्स है। फॉल्स रिटर्न करता है यदि इनपुट ट्रू है।"; +Blockly.Msg["LOGIC_NULL"] = "NULL (अमान्य)"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "null (अमान्य) रिटर्न करता है।"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "AND (तथा)"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "OR (अथवा)"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ट्रू रिटर्न करें यदि दोनो इनपुट ट्रू हों।"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ट्रू रिटर्न करें यदि दोनो मे से इक इनपुट ट्रू हो।"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "टेस्ट"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "यदि गलत है"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "यदि सही है"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'परीक्षण' में हालत की जांच करें। यदि स्थिति सही है, तो 'सच' मान लौटाता है; अन्यथा वापस लौटता 'अगर झूठा'मान देता है।"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "दो संख्याओं का योग रिटर्न करें।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "दो संख्याओं का भागफल रिटर्न करें।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "दो संख्याओं का अंतर रिटर्न करें।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "दो संख्याओं का गुणन रिटर्न करें।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "दूसरे नंबर की शक्ति को उठाए गए पहले नंबर पर लौटें"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 को %2 से बदलें"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "संख्या को चर '%1' से जोड़ें।"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "सामान्य स्थिरांक में से एक को वापस लौटें:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)।"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 कम %2 उच्च %3 बाधित करें"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "एक संख्या को निर्दिष्ट सीमा (सम्मिलित) के बीच बाधित करें।"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "इसके द्वारा विभाज्य है"; +Blockly.Msg["MATH_IS_EVEN"] = "सम है"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ऋणात्मक है"; +Blockly.Msg["MATH_IS_ODD"] = "विषम है"; +Blockly.Msg["MATH_IS_POSITIVE"] = "धनात्मक है"; +Blockly.Msg["MATH_IS_PRIME"] = "अभाज्य है"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "जांचें कि क्या कोई संख्या एक सम, विषम, मुख्य, संपूर्ण, सकारात्मक, नकारात्मक है या यदि वह निश्चित संख्या से विभाजित है। वास्तविक या गलत रिटर्न देता है।"; +Blockly.Msg["MATH_IS_WHOLE"] = "पूर्णांक है"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 का शेषफल"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "दो संख्याओं के भाग का शेषफल रिटर्न करें।"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "एक संख्या।"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "सूची का औसत मान"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "सूची मे अधिकतम"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "सूची की माध्यिका"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "सूची मे न्यूनतम"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "सूची का मोड"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "सूची का रैन्डम आइटम"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "सूची का मानक विचलन"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "सूची का योग"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "सूची में संख्यात्मक मानों का औसत (अंकगणित माध्य) लौटें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "सूची में सबसे बड़ी संख्या रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "सूची की माध्यिका संख्या रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "सूची मे सबसे छोटी संख्या रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "सूची मे सबसे आम आइटम(s) की सूची रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "सूची से एक रैन्डम आइटम रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "सूची का मानक विचलन रिटर्न करें।"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "सूची की सभी संख्याओं का योग रिटर्न करें।"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "रैन्डम अंश"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (समावेशी) और 1.0 (विशिष्ट) के बीच एक यादृच्छिक अंश पर लौटें।"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1 से %2 तक रैन्डम पूर्णांक"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "दो निर्दिष्ट सीमाओं, समावेशी के बीच एक यादृच्छिक पूर्णांक लौटें।"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "पूर्णांक बनाएँ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "घटा के पूर्णांक बनाएँ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "बड़ा के पूर्णांक बनाएँ"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "संख्या को बड़ा या घटा के पूर्णांक बनाएँ।"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "परम"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "वर्गमूल"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "संख्या का परम मान रिटर्न करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "किसी संख्या की शक्ति को वापस ई करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "संख्या का प्राकृतिक लघुगणक रिटर्न करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "संख्या का मूल 10 लघुगणक रिटर्न करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "संख्या का निषेध मान रिटर्न करें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "किसी संख्या की शक्ति पर 10 लौटें।"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "संख्या का वर्गमूल रिटर्न करें।"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "संख्या का आर्ककोसाइन रिटर्न करें।"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "संख्या का आर्कसाइन रिटर्न करें।"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "संख्या का आर्कटैन्जन्ट रिटर्न करें।"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "डिग्री का कोसाइन रिटर्न करें (रेडियन नही)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "डिग्री का साइन रिटर्न करें (रेडियन नही)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "डिग्री का टैन्जन्ट रिटर्न करें (रेडियन नही)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "रंग चर बनाएँ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "संख्या चर बनायें..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "लड़ी चर बनायें..."; +Blockly.Msg["NEW_VARIABLE"] = "चर बनाएँ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "नए चर का नाम:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "नए चर का नाम:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "बयानों की अनुमति दें"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = ": के साथ"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ।"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ और उसका आउटपुट इस्तेमाल करें।"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = ": के साथ"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' बनाएँ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "इस फंकशन को समझाएँ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "कुछ करें"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "को"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "बिना आउटपुट वाला एक फ़ंक्शन बनाता है।"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "वापस आएं"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "आउटपुट वाला एक फ़ंक्शन बनाता है।"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "सावधान: इस फ़ंक्शन मे डुप्लिकेट पैरामीटर हैं।"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "फ़ंक्शन परिभाषा को हाइलाइट करें"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "यदि एक मान ट्रू है तो, दूसरा मान रिटर्न करें।"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "सावधान: ये ब्लॉक फ़ंक्शन परिभाषा के अंदर ही इस्तेमाल किया जा सकता।"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "इनपुट का नाम:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "फंगक्शन को इनपुट प्रदान करें।"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "इनपुट"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "इस फ़ंक्शन में इनपुट जोड़ें, निकालें, या पुन: क्रमित करें।"; +Blockly.Msg["REDO"] = "फिर से करें"; +Blockly.Msg["REMOVE_COMMENT"] = "टिप्पणी हटायें"; +Blockly.Msg["RENAME_VARIABLE"] = "चर का नाम बदलें..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "सभी '%1' चरों के नाम बदलें:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 में पाठ %2 को जोड़ें"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "कुछ टेक्स्ट इस चर '%1' से जोड़ें।"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "छोटे अक्षर मे"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "टाइटल केस मे"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "बड़े अक्षर मे"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "टेक्स्ट की कॉपी भिन्न केस (अक्षर से संबंधित) मे रिटर्न करें।"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "पहला अक्षर पाएँ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "आखिर से अक्षर # पाएँ"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "अक्षर # पाएँ"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "आखरी अक्षर पाएँ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "रैन्डम अक्षर पाएँ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "पाठ %1 %2 में"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "बताई गयी जगह से अक्षर रिटर्न करता है"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 को %2 में गिने"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "गिने, कितनी बार कुछ पाठ कुछ अन्य पाठ के अंदर समाहित होता है।"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "सूची मे एक आइटम जोड़ें।"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "जोड़"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "आखिर से यहाँ तक अक्षर #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "यहाँ तक अक्षर #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "यहाँ तक आखरी अक्षर"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "इस टेक्स्ट मे"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "पहले अक्षर से सबस्ट्रिंग पाएँ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "आखरी अक्षर # से सबस्ट्रिंग पाएँ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "अक्षर # से सबस्ट्रिंग पाएँ"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "टेक्स्ट का बताया गया अंश रिटर्न करता है"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "टेक्स्ट पहली बार जहाँ आया है उसे ढूढ़े"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "टेक्स्ट आखरी बार जहाँ आया है उसे ढूढ़े"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "पाठ %1 %2 %3 में"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "दूसरे पाठ में पहले पाठ की पहली/अंतिम घटना का सूचक देता है। यदि पाठ नहीं मिला है तो %1 रिटर्न होता है।"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 खाली है"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "ट्रू रिटर्न करता है यदि दिया गया टेक्स्ट खाली है।"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "इसके साथ टेक्स्ट बनाएँ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "किसी भी संख्या के मदों को एक साथ जोड़ कर पाठ का एक टुकड़ा बनाएं।"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 की लंबाई"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "दिए गये टेक्स्ट मे अक्षरों की संख्या रिटर्न करता है (खाली स्थान मिला के)।"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "प्रिंट करें %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "दिया गया टेक्स्ट प्रिंट करें, संख्या या अन्य मान।"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "यूज़र से संख्या के लिए प्रॉम्प्ट करें।"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "यूज़र से कुछ टेक्स्ट के लिए प्रॉम्प्ट करें।"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "सूचना के साथ संख्या के लिए प्रॉम्प्ट करें"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "सूचना के साथ टेक्स्ट के लिए प्रॉम्प्ट करें"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 को %2 के साथ %3 में बदलें"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "कुछ अन्य पाठ के अंदर कुछ पाठ की सभी जगहों को बदलें।"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 को बदल दें"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "पाठ में वर्णों के क्रम को उलट देता है।"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "एक अक्षर, शब्द, या टेक्स्ट की पंक्ति।"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "रिक्त स्थान को इस टेक्स्ट के दोनों तरफ से निकालें"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "रिक्त स्थान को इस टेक्स्ट के बायें तरफ से निकालें"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "रिक्त स्थान को इस टेक्स्ट के दाईं तरफ से निकालें"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "एक या दोनों सिरों से हटाए गए रिक्त स्थान के साथ पाठ की एक प्रति लौटाएं।"; +Blockly.Msg["TODAY"] = "आज"; +Blockly.Msg["UNDO"] = "पूर्ववत करें"; +Blockly.Msg["UNNAMED_KEY"] = "अज्ञात"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "वस्तु"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "सेट '%1' बनाएँ"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "इस चर का मान रिटर्न करता है।"; +Blockly.Msg["VARIABLES_SET"] = "सेट करें %1 को %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'प्राप्त करें %1' बनाएं"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "इस चर को इनपुट के बराबर सेट करता है।"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "प्राचल नाम '%1' पहले से मौजूद है।"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' नाम का एक चर पहले से '%2' प्रकार के अन्य चर के लिए मौजूद है।"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/hr.js b/msg/js/hr.js index 53b8e4f361f..7b7fb50aa99 100644 --- a/msg/js/hr.js +++ b/msg/js/hr.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne mogu obrisati varijablu '%1' zato što je dio definicije funkcije '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Promijeni vrijednost:"; -Blockly.Msg["CLEAN_UP"] = "Uredi blokove"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Sažeti blokovi sadrže upozorenje"; -Blockly.Msg["COLLAPSE_ALL"] = "Skupi blokove"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Sažmi blok"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "boja 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "boja 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "omjer"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "pomiješaj"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Miješa dvije boje u zadanom omjeru (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hr.wikipedia.org/wiki/Boja"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Odaberi boju iz palete."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "slučajna boja"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Odaberi boju nasumično."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "plavo"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "zeleno"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "crveno"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "boja sa"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Stvori boju sa zadanom količinom crvene, zelene i plave. Sve vrijednosti moraju biti između 0 i 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "izađi iz petlje"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nastavi sa sljedećim ponavljanjem u petlji"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Prekinite postojeću petlju"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči ostatak petlje i nastavi sa sljedećim ponavljanjem"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozorenje: Ovaj blok se može koristiti samo u petlji."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za svaki član %1 u listi %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za svaki član u listi daje varijabli '%1' vrijednost člana i zatim izvrši neke naredbe"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "broji s %1 od %2 do %3 za %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Varijabla '%1' poprima vrijednosti od početnog broja do završnog broja, brojeći u zadanim intervalima i izvršavajući odabrane blokove."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodaj uvjet bloku."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodaj završni, \"vrijedi za sve\" uvjet bloku."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj blok."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "onda"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inače ako"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ako"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ako je vrijednost istinita izvrši neke naredbe"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ako je vrijednost istina, tada izvrši prvi blok naredbi. Inače izvrši drugi blok naredbi."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi. Ako niti jedna vrijednost nije istina, izvrši zadnji blok naredbi."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://hr.wikipedia.org/wiki/For_petlja"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "radi"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1 puta"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Ponovi zadane naredbe više puta."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljaj do"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljaj dok"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dok je vrijednost lažna, izvrši izjave."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dok je vrijednost istinita, izvrši izjave."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Obrisati svih %1 blokova?"; -Blockly.Msg["DELETE_BLOCK"] = "Obriši blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Obriši varijablu '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Obriši %1 korištenja varijable '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Obriši %1 blokova"; -Blockly.Msg["DIALOG_CANCEL"] = "Odustani"; -Blockly.Msg["DIALOG_OK"] = "U redu"; -Blockly.Msg["DISABLE_BLOCK"] = "Onemogući blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Kloniraj"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliciraj komentar"; -Blockly.Msg["ENABLE_BLOCK"] = "Omogući blok"; -Blockly.Msg["EXPAND_ALL"] = "Proširi blokove"; -Blockly.Msg["EXPAND_BLOCK"] = "Proširi blok"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Vanjski Ulazi"; -Blockly.Msg["HELP"] = "Pomoć"; -Blockly.Msg["INLINE_INPUTS"] = "Poravnati Ulazi"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "stvori praznu listu"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vraća listu, duljine 0, koja ne sadrži podatke"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Dodaj, ukloni ili promijeni redoslijed kako biste presložili blok liste"; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "stvori listu s"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Dodaj član u listu"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Stvara listu s bilo kojim brojem članova"; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prvi"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od kraja"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "dohvati"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "uzmi i ukloni"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "posljednji"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "slučajno"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ukloni"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vraća prvi član liste"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vraća član sa zadanog mjesta u listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vraća zadnji član liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vraća slučajno odabrani član u listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Uklanja i vraća prvi član u listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Uklanja i vraća član na zadanom mjestu u listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Uklanja i vraća zadnji član u listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Uklanja i vraća slučajno odabrani član u listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Uklanja prvi član u listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Uklanja član na odabranom mjestu u listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Uklanja zadnji član u listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Uklanja slučajno odabrani član u listi."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od kraja"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do zadnjeg"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "dohvati podlistu od prvog"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "uzmi podlistu od # od kraja"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "dohvati podlistu od #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Stvara kopiju odabranog dijela liste"; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je zadnji član."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je prvi član."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "nađi prvo pojavljivanje člana"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "nađi zadnje pojavljivanje člana"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vraća indeks prvog/zadnjeg pojavljivanja člana u listi. Vraća %1 ako član nije pronađen."; -Blockly.Msg["LISTS_INLIST"] = "u listi"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazno"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vraća istinu ako je lista prazna."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "duljina %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vraća duljinu liste."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "stvori listu s članom %1 ponovljenim %2 puta"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Stvara listu ponavljanjem dane vrijednosti zadani broj puta."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrnuto %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrnuta kopija liste"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kao"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "umetni na"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "postavi"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Umeće član na početak liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Umeće član na odabrano mjesto u listi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Dodaje član na kraj liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Umeće član na slučajno odabrano mjesto u listi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Postavlja prvi član u listi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Postavlja član na odabrano mjesto u listi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Postavlja zadnji član u listi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Postavlja slučajno odabrani član u listi."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "uzlazno"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "silazno"; -Blockly.Msg["LISTS_SORT_TITLE"] = "Sortiraj %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortiraj kopiju liste"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "po abecedi, zanemari mala/velika slova"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "kao brojeve"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "po abecedi"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "napravi listu od teksta"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "napravi tekst od liste"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Poveži niz tekstova u jedan tekst podijeljen razdjelnikom"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Podijeli tekst u niz tekstova prema razdjelniku"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "S razdjelnikom"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "laž"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vraća ili istina ili laž."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "istina"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vraća istina ako su obje ulazne vrijednosti jednake jedna drugoj."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vraća istina ako je prva ulazna vrijednost veća od druge."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vraća istina ako je prva ulazna vrijednost veća ili jednaka od druge."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vraća istina ako je prva ulazna vrijednost manja od druge."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vraća istina ako je prva ulazna vrijednost manja ili jednaka od druge."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vraća istina ako obje ulazne vrijednosti nisu jednake jedna drugoj."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vraća istina ako je ulazna vrijednost lažna. Vraća laž ako je ulazna vrijednost istinita."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vraća null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ili"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vraća istina ako su obje ulazne vrijednosti istinite."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vraća istina ako je barem jedna od ulaznih vrijednosti istinita."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "izraz"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ako je laž"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ako je istina"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Provjerite uvjet u \"izrazu\". Ako je uvjet istinit, vraća vrijednost \"ako je istinito\"; inače vraća vrijednost \"ako je lažno\"."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hr.wikipedia.org/wiki/Aritmetika"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vraća zbroj dvaju brojeva."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vraća kvocijent dvaju brojeva."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vraća razliku dvaju brojeva."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vraća umnožak dvaju brojeva."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vraća prvi broj podignut na potenciju drugog broja."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 od X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vraća vrijednost arkus tangensa točke (X, Y) u stupnjevima od -180 do 180"; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "promijeni %1 za %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodaj broj varijabli '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hr.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vraća jednu od uobičajenih konstanti: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(1/2) (0.707...) ili ∞ (beskonačnost)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ograniči %1 od %2 do %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ograničava broj da bude unutar zadanih granica (uključivši rubne vrijednosti)"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je djeljiv s"; -Blockly.Msg["MATH_IS_EVEN"] = "je paran"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativan"; -Blockly.Msg["MATH_IS_ODD"] = "je neparan"; -Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivan"; -Blockly.Msg["MATH_IS_PRIME"] = "je prost broj"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Provjerava je li broj paran, neparan, prim, cijeli, pozitivan, negativan ili je djeljiv određenim brojem. Vraća istina ili laž."; -Blockly.Msg["MATH_IS_WHOLE"] = "je cijeli broj"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "ostatak pri dijeljenju %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vraća ostatak pri dijeljenju dvaju brojeva."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hr.wikipedia.org/wiki/Broj"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "broj"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "prosječna vrijednost liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "najveća vrijednost u listi"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medijan liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "najmanja vrijednost u listi"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mod liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "slučajno odabran član liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardna devijacija liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zbroj liste"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vraća prosjek (aritmetičku sredinu) numeričkih vrijednosti liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vraća najveći broj u listi."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vraća srednji broj u listi."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vraća najmanji broj u listi."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vraća listu najčešćih vrijednosti (mod) u listi"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vraća slučajan član liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vraća standardnu devijaciju liste."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vraća zbroj svih brojeva u listi."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slučajan razlomak"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vraća slučajan razlomak vrijednosti između 0.0 (uključivo) i 1.0 (isključivo)"; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "slučajan cijeli broj između %1 i %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vraća slučajan cijeli broj između dviju zadanih vrijednosti, uključivši i rubne vrijednosti."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokružiti"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokružiti na manje"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokružiti na više"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokružuje broj na više ili manje"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://hr.wikipedia.org/wiki/Kvadratni_korijen"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "apsolutna vrijednost"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni korijen"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vraća apsolutnu vrijednost broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vraća e na potenciju broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vraća prirodni logaritam broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vraća logaritam po bazi 10 zadanog broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vraća negaciju broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vraća 10 na potenciju broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vraća drugi korijen broja."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vraća arkus kosinus broja."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vraća arkus sinus broja."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vraća arkus tangens broja."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vraća kosinus stupnjeva (ne radijana)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vraća sinus stupnjeva (ne radijana)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vraća tangens stupnjeva (ne radijana)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Kreiraj varijablu s bojama"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Kreiraj varijablu s brojkama"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Kreiraj varijablu s nizom slova"; -Blockly.Msg["NEW_VARIABLE"] = "Kreiraj varijablu..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove varijable:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Novi tip varijable:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "Dopustite izjave"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Pokrenite korisnički definiranu funkciju '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Pokrenite korisnički definiranu funkciju '%1' i upotrijebite njenu izlaznu vrijednost"; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Stvori '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opis funkcije"; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "napravi nešto"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "za"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Stvaranje funkcije bez izlazne vrijednosti"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "Vrati"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Stvara funkciju s izlaznom vrijednošću"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozorenje: Ova funkcija ima varijable istog imena"; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Označavanje definicije funkcije"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Iako je vrijednost istina, tada vrati drugu vrijednost"; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Upozorenje: Ovaj blok se može koristiti samo u definiciji funkcije"; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Naziv ulazne varijable"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Dodajte ulaznu varijablu funkcije"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Ulazne varijable"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Dodajte, uklonite ili promijenite redoslijed ulaznih varijabli funkcije"; -Blockly.Msg["REDO"] = "Ponovi"; -Blockly.Msg["REMOVE_COMMENT"] = "Obriši komentar"; -Blockly.Msg["RENAME_VARIABLE"] = "Preimenovanje varijable..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj svih %1 varijabli u:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "varijabli %1 dodajte tekst %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Dodajte neki tekst varijabli '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "u mala slova"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "u Prvo Veliko Slovo"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "u VELIKA SLOVA"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vraća kopiju teksta s malim ili velikim slovima"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "dohvati prvo slovo"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "dohvati slovo # od kraja"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "dohvati slovo #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "dohvati zadnje slovo"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "dohvati slučajno slovo"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "u tekstu %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vraća slovo koje je na zadanom mjestu"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "prebroji %1 u %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Prebrojava koliko puta se neki tekst pojavljuje u drugom tekstu"; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Dodajte stavku u tekst"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "poveži"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj tekstualni blok"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do slova # od kraja"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do slova #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do zadnjeg slova"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "u tekstu"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "dohvati podtekst od prvog slova"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "dohvati podtekst od slova # od kraja"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "dohvati podtekst od slova #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Daje traženi dio teksta"; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "nađi prvo pojavljivanje teksta"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "nađi zadnje pojavljivanje teksta"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "u tekstu %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vraća indeks prvog/zadnjeg pojavljivanja prvog teksta u drugom tekstu. Vraća vrijednost %1 ako tekst nije pronađen."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazno"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vraća vrijednost istina ako je dani tekst prazan"; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "stvori tekst od"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Stvara tekst povezivanjem bilo kojeg broja dijelova"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "duljina %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vraća broj slova (uključivši razmake) teksta"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "ispiši %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Ispisuje određeni tekst, broj ili drugu vrijednost."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Zatraži broj od korisnika."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Zatraži tekst od korisnika"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Zatraži broj porukom"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Zatraži tekst porukom"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamijeni %1 s %2 u %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zamijeni sva pojavljivanja nekog teksta u drugom tekstu."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "obrnuto %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Okreće redoslijed znakova u tekstu"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Slovo, riječ ili linija teksta"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ukloni razmake s obje strane od"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ukloni razmake s lijeve strane od"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ukloni razmake s desne strane od"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vraća kopiju teksta s uklonjenim razmakom s početka ili kraja"; -Blockly.Msg["TODAY"] = "Danas"; -Blockly.Msg["UNDO"] = "Poništi"; -Blockly.Msg["UNNAMED_KEY"] = "neimenovano"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "stavka"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Stvori 'set %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vraća vrijednost varijable"; -Blockly.Msg["VARIABLES_SET"] = "Postavi %1 na %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Stvori 'get %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Postavi vrijednost varijable jednaku izlaznoj vrijednosti"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Varijabla s nazivom '%1' već postoji."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Varijabla pod nazivom '%1' već postoji za drugi tip: '%2'"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Radni prostor Blocklyja"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Recite nešto"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne mogu obrisati varijablu '%1' zato što je dio definicije funkcije '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Promijeni vrijednost:"; +Blockly.Msg["CLEAN_UP"] = "Uredi blokove"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Sažeti blokovi sadrže upozorenje"; +Blockly.Msg["COLLAPSE_ALL"] = "Skupi blokove"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Sažmi blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "boja 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "boja 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "omjer"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "pomiješaj"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Miješa dvije boje u zadanom omjeru (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hr.wikipedia.org/wiki/Boja"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Odaberi boju iz palete."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "slučajna boja"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Odaberi boju nasumično."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "plavo"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zeleno"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "crveno"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "boja sa"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Stvori boju sa zadanom količinom crvene, zelene i plave. Sve vrijednosti moraju biti između 0 i 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "izađi iz petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nastavi sa sljedećim ponavljanjem u petlji"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Prekinite postojeću petlju"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči ostatak petlje i nastavi sa sljedećim ponavljanjem"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozorenje: Ovaj blok se može koristiti samo u petlji."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za svaki član %1 u listi %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za svaki član u listi daje varijabli '%1' vrijednost člana i zatim izvrši neke naredbe"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "broji s %1 od %2 do %3 za %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Varijabla '%1' poprima vrijednosti od početnog broja do završnog broja, brojeći u zadanim intervalima i izvršavajući odabrane blokove."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodaj uvjet bloku."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodaj završni, \"vrijedi za sve\" uvjet bloku."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj blok."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "onda"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inače ako"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ako"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ako je vrijednost istinita izvrši neke naredbe"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ako je vrijednost istina, tada izvrši prvi blok naredbi. Inače izvrši drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi. Ako niti jedna vrijednost nije istina, izvrši zadnji blok naredbi."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://hr.wikipedia.org/wiki/For_petlja"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "radi"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1 puta"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Ponovi zadane naredbe više puta."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljaj do"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljaj dok"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dok je vrijednost lažna, izvrši izjave."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dok je vrijednost istinita, izvrši izjave."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Obrisati svih %1 blokova?"; +Blockly.Msg["DELETE_BLOCK"] = "Obriši blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Obriši varijablu '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Obriši %1 korištenja varijable '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Obriši %1 blokova"; +Blockly.Msg["DIALOG_CANCEL"] = "Odustani"; +Blockly.Msg["DIALOG_OK"] = "U redu"; +Blockly.Msg["DISABLE_BLOCK"] = "Onemogući blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kloniraj"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliciraj komentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Omogući blok"; +Blockly.Msg["EXPAND_ALL"] = "Proširi blokove"; +Blockly.Msg["EXPAND_BLOCK"] = "Proširi blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Vanjski Ulazi"; +Blockly.Msg["HELP"] = "Pomoć"; +Blockly.Msg["INLINE_INPUTS"] = "Poravnati Ulazi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "stvori praznu listu"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vraća listu, duljine 0, koja ne sadrži podatke"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Dodaj, ukloni ili promijeni redoslijed kako biste presložili blok liste"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "stvori listu s"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Dodaj član u listu"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Stvara listu s bilo kojim brojem članova"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prvi"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od kraja"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "dohvati"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "uzmi i ukloni"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "posljednji"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "slučajno"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ukloni"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vraća prvi član liste"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vraća član sa zadanog mjesta u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vraća zadnji član liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vraća slučajno odabrani član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Uklanja i vraća prvi član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Uklanja i vraća član na zadanom mjestu u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Uklanja i vraća zadnji član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Uklanja i vraća slučajno odabrani član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Uklanja prvi član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Uklanja član na odabranom mjestu u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Uklanja zadnji član u listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Uklanja slučajno odabrani član u listi."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od kraja"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do zadnjeg"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "dohvati podlistu od prvog"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "uzmi podlistu od # od kraja"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "dohvati podlistu od #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Stvara kopiju odabranog dijela liste"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je zadnji član."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je prvi član."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "nađi prvo pojavljivanje člana"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "nađi zadnje pojavljivanje člana"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vraća indeks prvog/zadnjeg pojavljivanja člana u listi. Vraća %1 ako član nije pronađen."; +Blockly.Msg["LISTS_INLIST"] = "u listi"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazno"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vraća istinu ako je lista prazna."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "duljina %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vraća duljinu liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "stvori listu s članom %1 ponovljenim %2 puta"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Stvara listu ponavljanjem dane vrijednosti zadani broj puta."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrnuto %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrnuta kopija liste"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kao"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "umetni na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "postavi"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Umeće član na početak liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Umeće član na odabrano mjesto u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Dodaje član na kraj liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Umeće član na slučajno odabrano mjesto u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Postavlja prvi član u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Postavlja član na odabrano mjesto u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Postavlja zadnji član u listi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Postavlja slučajno odabrani član u listi."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "uzlazno"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "silazno"; +Blockly.Msg["LISTS_SORT_TITLE"] = "Sortiraj %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortiraj kopiju liste"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "po abecedi, zanemari mala/velika slova"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "kao brojeve"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "po abecedi"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "napravi listu od teksta"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "napravi tekst od liste"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Poveži niz tekstova u jedan tekst podijeljen razdjelnikom"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Podijeli tekst u niz tekstova prema razdjelniku"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "S razdjelnikom"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "laž"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vraća ili istina ili laž."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "istina"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vraća istina ako su obje ulazne vrijednosti jednake jedna drugoj."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vraća istina ako je prva ulazna vrijednost veća od druge."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vraća istina ako je prva ulazna vrijednost veća ili jednaka od druge."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vraća istina ako je prva ulazna vrijednost manja od druge."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vraća istina ako je prva ulazna vrijednost manja ili jednaka od druge."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vraća istina ako obje ulazne vrijednosti nisu jednake jedna drugoj."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vraća istina ako je ulazna vrijednost lažna. Vraća laž ako je ulazna vrijednost istinita."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vraća null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ili"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vraća istina ako su obje ulazne vrijednosti istinite."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vraća istina ako je barem jedna od ulaznih vrijednosti istinita."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "izraz"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ako je laž"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ako je istina"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Provjerite uvjet u \"izrazu\". Ako je uvjet istinit, vraća vrijednost \"ako je istinito\"; inače vraća vrijednost \"ako je lažno\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hr.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vraća zbroj dvaju brojeva."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vraća kvocijent dvaju brojeva."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vraća razliku dvaju brojeva."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vraća umnožak dvaju brojeva."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vraća prvi broj podignut na potenciju drugog broja."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 od X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vraća vrijednost arkus tangensa točke (X, Y) u stupnjevima od -180 do 180"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "promijeni %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodaj broj varijabli '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hr.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vraća jednu od uobičajenih konstanti: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(1/2) (0.707...) ili ∞ (beskonačnost)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ograniči %1 od %2 do %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ograničava broj da bude unutar zadanih granica (uključivši rubne vrijednosti)"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je djeljiv s"; +Blockly.Msg["MATH_IS_EVEN"] = "je paran"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativan"; +Blockly.Msg["MATH_IS_ODD"] = "je neparan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivan"; +Blockly.Msg["MATH_IS_PRIME"] = "je prost broj"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Provjerava je li broj paran, neparan, prim, cijeli, pozitivan, negativan ili je djeljiv određenim brojem. Vraća istina ili laž."; +Blockly.Msg["MATH_IS_WHOLE"] = "je cijeli broj"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ostatak pri dijeljenju %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vraća ostatak pri dijeljenju dvaju brojeva."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hr.wikipedia.org/wiki/Broj"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "broj"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "prosječna vrijednost liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "najveća vrijednost u listi"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medijan liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "najmanja vrijednost u listi"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mod liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "slučajno odabran član liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardna devijacija liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zbroj liste"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vraća prosjek (aritmetičku sredinu) numeričkih vrijednosti liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vraća najveći broj u listi."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vraća srednji broj u listi."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vraća najmanji broj u listi."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vraća listu najčešćih vrijednosti (mod) u listi"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vraća slučajan član liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vraća standardnu devijaciju liste."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vraća zbroj svih brojeva u listi."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slučajan razlomak"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vraća slučajan razlomak vrijednosti između 0.0 (uključivo) i 1.0 (isključivo)"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "slučajan cijeli broj između %1 i %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vraća slučajan cijeli broj između dviju zadanih vrijednosti, uključivši i rubne vrijednosti."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokružiti"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokružiti na manje"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokružiti na više"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokružuje broj na više ili manje"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://hr.wikipedia.org/wiki/Kvadratni_korijen"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "apsolutna vrijednost"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni korijen"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vraća apsolutnu vrijednost broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vraća e na potenciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vraća prirodni logaritam broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vraća logaritam po bazi 10 zadanog broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vraća negaciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vraća 10 na potenciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vraća drugi korijen broja."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vraća arkus kosinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vraća arkus sinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vraća arkus tangens broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vraća kosinus stupnjeva (ne radijana)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vraća sinus stupnjeva (ne radijana)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vraća tangens stupnjeva (ne radijana)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Kreiraj varijablu s bojama"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Kreiraj varijablu s brojkama"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Kreiraj varijablu s nizom slova"; +Blockly.Msg["NEW_VARIABLE"] = "Kreiraj varijablu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove varijable:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Novi tip varijable:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "Dopustite izjave"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Pokrenite korisnički definiranu funkciju '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Pokrenite korisnički definiranu funkciju '%1' i upotrijebite njenu izlaznu vrijednost"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Stvori '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opis funkcije"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "napravi nešto"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "za"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Stvaranje funkcije bez izlazne vrijednosti"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "Vrati"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Stvara funkciju s izlaznom vrijednošću"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozorenje: Ova funkcija ima varijable istog imena"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Označavanje definicije funkcije"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Iako je vrijednost istina, tada vrati drugu vrijednost"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Upozorenje: Ovaj blok se može koristiti samo u definiciji funkcije"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Naziv ulazne varijable"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Dodajte ulaznu varijablu funkcije"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Ulazne varijable"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Dodajte, uklonite ili promijenite redoslijed ulaznih varijabli funkcije"; +Blockly.Msg["REDO"] = "Ponovi"; +Blockly.Msg["REMOVE_COMMENT"] = "Obriši komentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Preimenovanje varijable..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj svih %1 varijabli u:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "varijabli %1 dodajte tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Dodajte neki tekst varijabli '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "u mala slova"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "u Prvo Veliko Slovo"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "u VELIKA SLOVA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vraća kopiju teksta s malim ili velikim slovima"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "dohvati prvo slovo"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "dohvati slovo # od kraja"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "dohvati slovo #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "dohvati zadnje slovo"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "dohvati slučajno slovo"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "u tekstu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vraća slovo koje je na zadanom mjestu"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "prebroji %1 u %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Prebrojava koliko puta se neki tekst pojavljuje u drugom tekstu"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Dodajte stavku u tekst"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "poveži"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj tekstualni blok"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do slova # od kraja"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do slova #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do zadnjeg slova"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "u tekstu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "dohvati podtekst od prvog slova"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "dohvati podtekst od slova # od kraja"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "dohvati podtekst od slova #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Daje traženi dio teksta"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "nađi prvo pojavljivanje teksta"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "nađi zadnje pojavljivanje teksta"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "u tekstu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vraća indeks prvog/zadnjeg pojavljivanja prvog teksta u drugom tekstu. Vraća vrijednost %1 ako tekst nije pronađen."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazno"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vraća vrijednost istina ako je dani tekst prazan"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "stvori tekst od"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Stvara tekst povezivanjem bilo kojeg broja dijelova"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "duljina %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vraća broj slova (uključivši razmake) teksta"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "ispiši %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Ispisuje određeni tekst, broj ili drugu vrijednost."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Zatraži broj od korisnika."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Zatraži tekst od korisnika"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Zatraži broj porukom"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Zatraži tekst porukom"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamijeni %1 s %2 u %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zamijeni sva pojavljivanja nekog teksta u drugom tekstu."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "obrnuto %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Okreće redoslijed znakova u tekstu"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Slovo, riječ ili linija teksta"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ukloni razmake s obje strane od"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ukloni razmake s lijeve strane od"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ukloni razmake s desne strane od"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vraća kopiju teksta s uklonjenim razmakom s početka ili kraja"; +Blockly.Msg["TODAY"] = "Danas"; +Blockly.Msg["UNDO"] = "Poništi"; +Blockly.Msg["UNNAMED_KEY"] = "neimenovano"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "stavka"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Stvori 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vraća vrijednost varijable"; +Blockly.Msg["VARIABLES_SET"] = "Postavi %1 na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Stvori 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Postavi vrijednost varijable jednaku izlaznoj vrijednosti"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Varijabla s nazivom '%1' već postoji."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Varijabla pod nazivom '%1' već postoji za drugi tip: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Radni prostor Blocklyja"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Recite nešto"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/hrx.js b/msg/js/hrx.js index 43dc296e82a..e5bc24cb364 100644 --- a/msg/js/hrx.js +++ b/msg/js/hrx.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Kommentar hinzufüche"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Neie Variable..."; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Blocke zusammerfalte"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Block zusammerfalte"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Farreb 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "mit Farreb 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "im Verhältniss"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "misch"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Vermischt 2 Farwe mit konfigurierbare Farrebverhältniss (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hrx.wikipedia.org/wiki/Farreb"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Wähl en Farreb von der Palett."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "zufälliche Farwe"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Wähl en Farreb noh dem Zufallsprinzip."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "grün"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "rot"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "Färreb mit"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kreiere ene Farreb mit sellrbst definierte rot, grün und blau Wearte. All Wearte müsse zwischich 0 und 100 liehe."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ausbreche aus der Schleif"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "mit der nächste Iteration fortfoohre aus der Schleifa"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Die umgebne Schleif beenne."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Die Oonweisung abbreche und mit der nächste Schleifiteration fortfoohre."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warnung: Die block sollt nuar in en Schleif verwennet sin."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "Für Weart %1 aus der List %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Füahr en Oonweisung für jede Weart in der List aus und setzt dabei die Variable \"%1\" uff den aktuelle List Weart."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "Zähl %1 von %2 bis %3 mit %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Zähl die Variable \"%1\" von enem Startweart bis zu enem Zielweart und füahrefür jede Weart en Oonweisung aus."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "En weitre Bedingung hinzufüche."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "En orrer Bedingung hinzufüche, füahrt en Oonweisung aus falls ken Bedingung zutrifft."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Hinzufüche, entferne orrer sortiere von Sektione"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "orrer"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "orrer wenn"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "wenn"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Wenn en Bedingung woahr (true) ist, dann füahr en Oonweisung aus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Wenn en Bedingung woahr (true) ist, dann füahr die earscht Oonweisung aus. Ansonscht füahr die zwooite Oonweisung aus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Wenn der erschte Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Wenn der erscht Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus. Falls ken der beide Bedingungen woahr (true) ist, dann füahr die dritte Oonweisung aus."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://hrx.wikipedia.org/wiki/For-Schleif"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "mach"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "wiederhol %1 mol"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "En Oonweisung meahrfach ausführe."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "Repetiere bis"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Repetier solang"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Füahr die Oonweisung solang aus wie die Bedingung falsch (false) ist."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Füahr die Oonweisung solang aus wie die Bedingung woahr (true) ist."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "All %1 Bausten lösche?"; -Blockly.Msg["DELETE_BLOCK"] = "Block lösche"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Block %1 lösche"; -Blockly.Msg["DIALOG_CANCEL"] = "Abbreche"; -Blockly.Msg["DIALOG_OK"] = "Okay"; -Blockly.Msg["DISABLE_BLOCK"] = "Block deaktivieren"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Kopieren"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Block aktivieren"; -Blockly.Msg["EXPAND_ALL"] = "Blocke expandiere"; -Blockly.Msg["EXPAND_BLOCK"] = "Block entfalte"; -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputsexterne Ingänge"; -Blockly.Msg["HELP"] = "Hellef"; -Blockly.Msg["INLINE_INPUTS"] = "interne Ingänge"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Generier/erzeich en leear List"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Generier/erzeich en leear List ohne Inhalt."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "List"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Hinzufüche, entferne und sortiere von Elemente."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Erzeich List mit"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "En Element zur List hinzufüche."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Generier/erzeich en List mit konfigurierte Elemente."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "earste"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "#te von hinne"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "Nehm"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "Nehm und entfern"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "letzte"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "zufälliches"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "Entfern"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Extrahiert das earste Element von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Extrahiert das Element zu en definierte Stell von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Extrahiert das letzte Element von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Extrahiert en zufälliches Element von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Extrahiert und entfernt das earste Element von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Extrahiert und entfernt das Element zu en definierte Stell von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Extrahiert und entfernt das letzte Element von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Extrahiert und entfernt en zufälliches Element von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Entfernt das earste Element von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Entfernt das Element zu en definierte Stell von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Entfernt das letzte Element von der List."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Entfernt en zufälliches Element von der List."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "zu # vom End"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "zu #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "zum Letzte"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "hol Unnerliste vom Earste"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "hol Unnerliste von # vom End"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "hol Unnerlist von #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Generiert en Kopie von en definierte Tel von en List."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ist das letzte Element."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ist das earschte Element."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Such earstes Voarkommniss"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "Such letztes Voarkommniss"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Sucht die Position (index) von en Element in der List Gebt %1 zurück wenn nixs gefunn woard."; -Blockly.Msg["LISTS_INLIST"] = "in der List"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ist leear?"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ist woahr (true), wenn die List leear ist."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "länge %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Die Oonzoohl von Elemente in der List."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "Erzich List mit Element %1 wiederhol das %2 mol"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Erzeicht en List mit en variable Oonzoohl von Elemente"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "uff"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "tue ren setz an"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "setz"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Tut das Element an en Oonfang von en List ren setze."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Tut das Element ren setze an en definierte Stell an en List."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Oonhängt das Element zu en List sei End."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Tut das Element zufällich an en List ren setze."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list.Setzt das earschte Element an en list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setzt das Element zu en definierte Stell in en List."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setzt das letzte Element an en List."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setzt en zufälliches Element an en List."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsch"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ist entweder woahr (true) orrer falsch (false)"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "woahr"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://hrx.wikipedia.org/wiki/Vergleich_%28Zahlen%29"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ist woahr (true) wenn beide Wearte identisch sind."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ist woahr (true) wenn der erschte Weart grösser als der zwooite Weart ist."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ist woahr (true) wenn der erschte Weart grösser als orrer gleich gross wie zwooite Weart ist."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ist woahr (true) wenn der earschte Weart klener als der zwooite Weart ist."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ist woahr (true) wenn der earscht Weart klener als orrer gleich gross wie zwooite Weart ist."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ist woahr (true) wenn beide Wearte unnerschiedlich sind."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "net %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ist woahr (true) wenn der Ingäweweart falsch (false) ist. Ist falsch (false) wenn der Ingäweweart woahr (true) ist."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Is NULL."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "und"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "orrer"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ist woahr (true) wenn beide Wearte woahr (true) sind."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ist woahr (true) wenn en von der beide Wearte woahr (true) ist."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "wenn falsch"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "wenn woahr"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Üwerprüft en Bedingung \"test\". Wenn die Bedingung woahr ist weerd der \"wenn woahr\" Weart zurückgeb, annerfalls der \"wenn falsch\" Weart"; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hrx.wikipedia.org/wiki/Grundrechenoort"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ist die Summe zwooier Wearte."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ist der Quotient zwooier Wearte."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ist die Differenz zwooier Wearte."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ist das Produkt zwooier Wearte."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ist der earschte Weart potenziert mit dem zoiten Weart."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://hrx.wikipedia.org/wiki/Inkrement_und_Dekrement"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "mach höcher / erhöhe %1 um %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Addiert en Weart zur Variable \"%1\" hinzu."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hrx.wikipedia.org/wiki/Mathematische_Konstante"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Mathematische Konstante wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begrenze %1 von %2 bis %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begrenzt den Weartebereich mittels von / bis Wearte. (inklusiv)"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ist telbar/kann getelt sin doorrich"; -Blockly.Msg["MATH_IS_EVEN"] = "ist grood"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "ist negativ"; -Blockly.Msg["MATH_IS_ODD"] = "ist ungrood"; -Blockly.Msg["MATH_IS_POSITIVE"] = "ist positiv"; -Blockly.Msg["MATH_IS_PRIME"] = "ist en Primenzoohl"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Üwerprüft ob en Zoohl grood, ungrood, en Primenzoohl, ganzzoohlich, positiv, negativ orrer doorrich en zwooite Zoohl telbar ist. Gebt woahr (true) orrer falsch (false) zurück."; -Blockly.Msg["MATH_IS_WHOLE"] = "ganze Zoohl"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://hrx.wikipedia.org/wiki/Modulo"; -Blockly.Msg["MATH_MODULO_TITLE"] = "Rest von %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Der Rest noh en Division."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hrx.wikipedia.org/wiki/Zoohl"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "En Zoohl."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Mittelweart en List"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Maximalweart en List"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Median von en List"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Minimalweart von en List"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Restweart von en List"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Zufallsweart von en List"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Standart/Padrong Abweichung von en List"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Summe von en List"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ist der Doorrichschnittsweart von aller Wearte in en List."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ist der grösste Weart in en List."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Ist der Zentralweart von aller Wearte in en List."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ist der klenste Weart in en List."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Findt den am häifichste voarkommend Weart in en List. Falls ken Weart öftersch voarkomme als all annre, weard die originale List zurückgeche"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Geb en Zufallsweart aus der List zurück."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ist die standartiesierte/padronisierte Standartabweichung/Padrongabweichung von aller Wearte in der List"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ist die Summ aller Wearte in en List."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://hex.wikipedia.org/wiki/Zufallszoohle"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Zufallszoohl (0.0 -1.0)"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Generier/erzeich en Zufallszoohl zwischich 0.0 (inklusiv) und 1.0 (exklusiv)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://hrx.wikipedia.org/wiki/Zufallszahlen"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ganzoohlicher Zufallswearte zwischich %1 bis %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Generier/erzeich en ganzähliche Zufallsweart zwischich zwooi Wearte (inklusiv)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://hrx.wikipedia.org/wiki/Runden"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "runde"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ab runde"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "uff runde"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "En Zoohl uff orrer ab runde."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://hrx.wikipedia.org/wiki/Quadratwoorzel"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "Absolutweart"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Quadratwoorzel"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ist der Absolutweart von en Weart."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ist Weart von der Exponentialfunktion von en Weart."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ist der natüarliche Logarithmus von en Weart."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ist der dekoodische Logarithmus von en Weart."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Negiert en Weart."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Rechnet 10 hoch Ingäbweart."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ist die Qudratwoorzel von en Weart."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://hrx.wikipedia.org/wiki/Trigonometrie"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ist der Arcuscosinus von en Ingabweart."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ist der Arcussinus von en Ingäbweart."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ist der Arcustangens von en Ingäbweart."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ist der Cosinus von en Winkel."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ist der Sinus von en Winkel."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ist der Tangens von en Winkel."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Neie Variable..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Die neie Variable sei Noome:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "mit:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ruf en Funktionsblock ohne Rückgäweart uff."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ruf en Funktionsblock mit Rückgäbweart uff."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "mit:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Generier/erzeich \"Uffruf %1\""; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Funktionsblock"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "zu"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "En Funktionsblock ohne Rückgäbweart."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "geb zurück"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "En Funktionsblock mit Rückgäbweart."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warnung: die Funktionsblock hot doppelt Parameter."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markiear Funktionsblock"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Wenn der earste Weart woahr (true) ist, Geb den zwooite Weart zurück."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warnung: Der Block därref nuar innich en Funktionsblock genutzt sin."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Markiear Funktionsblock"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Generier/erzeich \"Uffruf %1\""; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Parameter"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Variable:"; -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Kommentar entferne"; -Blockly.Msg["RENAME_VARIABLE"] = "Die neie Variable sei Noome:"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "All \"%1\" Variable umbenenne in:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "An %1 Text oonhänge %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Text an die Variable \"%1\" oonhänge."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "umwandle in klenbuchstoobe"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "umwandle in Wörter"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "umwandle in GROSSBUCHSTOOBE"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Wandelt Schreibweise von Texte um, in Grossbuchstoobe, Klenbuchstoobe orrer den earste Buchstoob von jedes Wort gross und die annre klen."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "hol earschte Buchstoob"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hol Buchstoob # von End"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hol Buchstoob #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "hol letztes Wort"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hol zufälliches Buchstoob"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Extrahiear en Buchstoob von en spezifizierte Position."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "En Element zum Text hinzufüche."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "verbinne"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Hinzufüche, entfernne und sortiere von Elemente."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "bis #te Buchstoob von hinne"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bis Buchstoob #te"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "bis letzte Buchstoob"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in Text"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "earschte Buchstoob"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hol #te Buchstoob von hinne"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hol substring Buchstoob #te"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Schickt en bestimmstes Tel von dem Text retuar."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "Such der Begriff sein earstes Voarkommniss"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "Suche der Begriff sein letztes Vorkommniss."; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "im Text %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Findt das earste / letzte Voarkommniss von en Suchbegriffes in enem Text. Gebt die Position von dem Begriff orrer %1 zurück."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ist leer?"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Ist woahr (true), wenn der Text leer ist."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "Erstell Text aus"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Erstellt en Text doorrich das verbinne von mehre Textelemente."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "läng %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Die Oonzoohl von Zeiche in enem Text. (inkl. Leerzeiche)"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "Ausgäb %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Geb den Inhalt von en Variable aus."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Frocht den Benutzer noh en Zoohl."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Frocht den Benutzer noh enem Text."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Frächt noh Zoohl mit Hinweis"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Frocht noh Text mit Hinweis"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)https://hrx.wikipedia.org/wiki/Zeichenkette"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En Buchstoob, Text orrer Satz."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "entfern Leerzeiche von Oonfang und End Seite"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "entferne Leerzeiche von Oonfang Seite"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "entferne Leerzeiche von End Seite von"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Entfernt Leerzeiche vom Oonfang und / orrer End von en Text."; -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Generier/erzeiche \"Schreibe %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Gebt der Variable sein Weart zurück."; -Blockly.Msg["VARIABLES_SET"] = "Schreib %1 zu %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Generier/erzeich \"Lese %1\""; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setzt en Variable sei Weart."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Kommentar hinzufüche"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Neie Variable..."; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Blocke zusammerfalte"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Block zusammerfalte"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Farreb 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "mit Farreb 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "im Verhältniss"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "misch"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Vermischt 2 Farwe mit konfigurierbare Farrebverhältniss (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hrx.wikipedia.org/wiki/Farreb"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Wähl en Farreb von der Palett."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "zufälliche Farwe"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Wähl en Farreb noh dem Zufallsprinzip."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grün"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rot"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Färreb mit"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kreiere ene Farreb mit sellrbst definierte rot, grün und blau Wearte. All Wearte müsse zwischich 0 und 100 liehe."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ausbreche aus der Schleif"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "mit der nächste Iteration fortfoohre aus der Schleifa"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Die umgebne Schleif beenne."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Die Oonweisung abbreche und mit der nächste Schleifiteration fortfoohre."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warnung: Die block sollt nuar in en Schleif verwennet sin."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "Für Weart %1 aus der List %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Füahr en Oonweisung für jede Weart in der List aus und setzt dabei die Variable \"%1\" uff den aktuelle List Weart."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Zähl %1 von %2 bis %3 mit %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Zähl die Variable \"%1\" von enem Startweart bis zu enem Zielweart und füahrefür jede Weart en Oonweisung aus."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "En weitre Bedingung hinzufüche."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "En orrer Bedingung hinzufüche, füahrt en Oonweisung aus falls ken Bedingung zutrifft."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Hinzufüche, entferne orrer sortiere von Sektione"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "orrer"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "orrer wenn"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "wenn"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Wenn en Bedingung woahr (true) ist, dann füahr en Oonweisung aus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Wenn en Bedingung woahr (true) ist, dann füahr die earscht Oonweisung aus. Ansonscht füahr die zwooite Oonweisung aus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Wenn der erschte Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Wenn der erscht Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus. Falls ken der beide Bedingungen woahr (true) ist, dann füahr die dritte Oonweisung aus."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://hrx.wikipedia.org/wiki/For-Schleif"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "mach"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "wiederhol %1 mol"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "En Oonweisung meahrfach ausführe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "Repetiere bis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Repetier solang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Füahr die Oonweisung solang aus wie die Bedingung falsch (false) ist."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Füahr die Oonweisung solang aus wie die Bedingung woahr (true) ist."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "All %1 Bausten lösche?"; +Blockly.Msg["DELETE_BLOCK"] = "Block lösche"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Block %1 lösche"; +Blockly.Msg["DIALOG_CANCEL"] = "Abbreche"; +Blockly.Msg["DIALOG_OK"] = "Okay"; +Blockly.Msg["DISABLE_BLOCK"] = "Block deaktivieren"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopieren"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Block aktivieren"; +Blockly.Msg["EXPAND_ALL"] = "Blocke expandiere"; +Blockly.Msg["EXPAND_BLOCK"] = "Block entfalte"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputsexterne Ingänge"; +Blockly.Msg["HELP"] = "Hellef"; +Blockly.Msg["INLINE_INPUTS"] = "interne Ingänge"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Generier/erzeich en leear List"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Generier/erzeich en leear List ohne Inhalt."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "List"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Hinzufüche, entferne und sortiere von Elemente."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Erzeich List mit"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "En Element zur List hinzufüche."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Generier/erzeich en List mit konfigurierte Elemente."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "earste"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "#te von hinne"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "Nehm"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "Nehm und entfern"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "letzte"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "zufälliches"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "Entfern"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Extrahiert das earste Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Extrahiert das Element zu en definierte Stell von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Extrahiert das letzte Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Extrahiert en zufälliches Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Extrahiert und entfernt das earste Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Extrahiert und entfernt das Element zu en definierte Stell von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Extrahiert und entfernt das letzte Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Extrahiert und entfernt en zufälliches Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Entfernt das earste Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Entfernt das Element zu en definierte Stell von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Entfernt das letzte Element von der List."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Entfernt en zufälliches Element von der List."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "zu # vom End"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "zu #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "zum Letzte"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "hol Unnerliste vom Earste"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "hol Unnerliste von # vom End"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "hol Unnerlist von #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Generiert en Kopie von en definierte Tel von en List."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ist das letzte Element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ist das earschte Element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Such earstes Voarkommniss"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "Such letztes Voarkommniss"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Sucht die Position (index) von en Element in der List Gebt %1 zurück wenn nixs gefunn woard."; +Blockly.Msg["LISTS_INLIST"] = "in der List"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ist leear?"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ist woahr (true), wenn die List leear ist."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "länge %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Die Oonzoohl von Elemente in der List."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Erzich List mit Element %1 wiederhol das %2 mol"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Erzeicht en List mit en variable Oonzoohl von Elemente"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "uff"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "tue ren setz an"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "setz"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Tut das Element an en Oonfang von en List ren setze."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Tut das Element ren setze an en definierte Stell an en List."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Oonhängt das Element zu en List sei End."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Tut das Element zufällich an en List ren setze."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list.Setzt das earschte Element an en list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setzt das Element zu en definierte Stell in en List."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setzt das letzte Element an en List."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setzt en zufälliches Element an en List."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsch"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ist entweder woahr (true) orrer falsch (false)"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "woahr"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://hrx.wikipedia.org/wiki/Vergleich_%28Zahlen%29"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ist woahr (true) wenn beide Wearte identisch sind."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ist woahr (true) wenn der erschte Weart grösser als der zwooite Weart ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ist woahr (true) wenn der erschte Weart grösser als orrer gleich gross wie zwooite Weart ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ist woahr (true) wenn der earschte Weart klener als der zwooite Weart ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ist woahr (true) wenn der earscht Weart klener als orrer gleich gross wie zwooite Weart ist."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ist woahr (true) wenn beide Wearte unnerschiedlich sind."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "net %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ist woahr (true) wenn der Ingäweweart falsch (false) ist. Ist falsch (false) wenn der Ingäweweart woahr (true) ist."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Is NULL."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "und"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "orrer"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ist woahr (true) wenn beide Wearte woahr (true) sind."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ist woahr (true) wenn en von der beide Wearte woahr (true) ist."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "wenn falsch"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "wenn woahr"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Üwerprüft en Bedingung \"test\". Wenn die Bedingung woahr ist weerd der \"wenn woahr\" Weart zurückgeb, annerfalls der \"wenn falsch\" Weart"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hrx.wikipedia.org/wiki/Grundrechenoort"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ist die Summe zwooier Wearte."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ist der Quotient zwooier Wearte."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ist die Differenz zwooier Wearte."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ist das Produkt zwooier Wearte."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ist der earschte Weart potenziert mit dem zoiten Weart."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://hrx.wikipedia.org/wiki/Inkrement_und_Dekrement"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "mach höcher / erhöhe %1 um %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Addiert en Weart zur Variable \"%1\" hinzu."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hrx.wikipedia.org/wiki/Mathematische_Konstante"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Mathematische Konstante wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begrenze %1 von %2 bis %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begrenzt den Weartebereich mittels von / bis Wearte. (inklusiv)"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ist telbar/kann getelt sin doorrich"; +Blockly.Msg["MATH_IS_EVEN"] = "ist grood"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ist negativ"; +Blockly.Msg["MATH_IS_ODD"] = "ist ungrood"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ist positiv"; +Blockly.Msg["MATH_IS_PRIME"] = "ist en Primenzoohl"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Üwerprüft ob en Zoohl grood, ungrood, en Primenzoohl, ganzzoohlich, positiv, negativ orrer doorrich en zwooite Zoohl telbar ist. Gebt woahr (true) orrer falsch (false) zurück."; +Blockly.Msg["MATH_IS_WHOLE"] = "ganze Zoohl"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://hrx.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "Rest von %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Der Rest noh en Division."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hrx.wikipedia.org/wiki/Zoohl"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "En Zoohl."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Mittelweart en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Maximalweart en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Median von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "Minimalweart von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Restweart von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Zufallsweart von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "Standart/Padrong Abweichung von en List"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Summe von en List"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ist der Doorrichschnittsweart von aller Wearte in en List."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ist der grösste Weart in en List."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Ist der Zentralweart von aller Wearte in en List."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ist der klenste Weart in en List."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Findt den am häifichste voarkommend Weart in en List. Falls ken Weart öftersch voarkomme als all annre, weard die originale List zurückgeche"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Geb en Zufallsweart aus der List zurück."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ist die standartiesierte/padronisierte Standartabweichung/Padrongabweichung von aller Wearte in der List"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ist die Summ aller Wearte in en List."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://hex.wikipedia.org/wiki/Zufallszoohle"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "Zufallszoohl (0.0 -1.0)"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Generier/erzeich en Zufallszoohl zwischich 0.0 (inklusiv) und 1.0 (exklusiv)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://hrx.wikipedia.org/wiki/Zufallszahlen"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ganzoohlicher Zufallswearte zwischich %1 bis %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Generier/erzeich en ganzähliche Zufallsweart zwischich zwooi Wearte (inklusiv)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://hrx.wikipedia.org/wiki/Runden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "runde"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ab runde"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "uff runde"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "En Zoohl uff orrer ab runde."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://hrx.wikipedia.org/wiki/Quadratwoorzel"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "Absolutweart"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Quadratwoorzel"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ist der Absolutweart von en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ist Weart von der Exponentialfunktion von en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ist der natüarliche Logarithmus von en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ist der dekoodische Logarithmus von en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Negiert en Weart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Rechnet 10 hoch Ingäbweart."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ist die Qudratwoorzel von en Weart."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://hrx.wikipedia.org/wiki/Trigonometrie"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ist der Arcuscosinus von en Ingabweart."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ist der Arcussinus von en Ingäbweart."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ist der Arcustangens von en Ingäbweart."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ist der Cosinus von en Winkel."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ist der Sinus von en Winkel."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ist der Tangens von en Winkel."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Neie Variable..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Die neie Variable sei Noome:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "mit:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ruf en Funktionsblock ohne Rückgäweart uff."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ruf en Funktionsblock mit Rückgäbweart uff."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "mit:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Generier/erzeich \"Uffruf %1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Funktionsblock"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "zu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "En Funktionsblock ohne Rückgäbweart."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "geb zurück"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "En Funktionsblock mit Rückgäbweart."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warnung: die Funktionsblock hot doppelt Parameter."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markiear Funktionsblock"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Wenn der earste Weart woahr (true) ist, Geb den zwooite Weart zurück."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warnung: Der Block därref nuar innich en Funktionsblock genutzt sin."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Markiear Funktionsblock"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Generier/erzeich \"Uffruf %1\""; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Parameter"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Variable:"; +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Kommentar entferne"; +Blockly.Msg["RENAME_VARIABLE"] = "Die neie Variable sei Noome:"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "All \"%1\" Variable umbenenne in:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "An %1 Text oonhänge %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Text an die Variable \"%1\" oonhänge."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "umwandle in klenbuchstoobe"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "umwandle in Wörter"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "umwandle in GROSSBUCHSTOOBE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Wandelt Schreibweise von Texte um, in Grossbuchstoobe, Klenbuchstoobe orrer den earste Buchstoob von jedes Wort gross und die annre klen."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hol earschte Buchstoob"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hol Buchstoob # von End"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hol Buchstoob #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hol letztes Wort"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hol zufälliches Buchstoob"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Extrahiear en Buchstoob von en spezifizierte Position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "En Element zum Text hinzufüche."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "verbinne"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Hinzufüche, entfernne und sortiere von Elemente."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "bis #te Buchstoob von hinne"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bis Buchstoob #te"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "bis letzte Buchstoob"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in Text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "earschte Buchstoob"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hol #te Buchstoob von hinne"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hol substring Buchstoob #te"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Schickt en bestimmstes Tel von dem Text retuar."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "Such der Begriff sein earstes Voarkommniss"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "Suche der Begriff sein letztes Vorkommniss."; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "im Text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Findt das earste / letzte Voarkommniss von en Suchbegriffes in enem Text. Gebt die Position von dem Begriff orrer %1 zurück."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ist leer?"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Ist woahr (true), wenn der Text leer ist."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "Erstell Text aus"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Erstellt en Text doorrich das verbinne von mehre Textelemente."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "läng %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Die Oonzoohl von Zeiche in enem Text. (inkl. Leerzeiche)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "Ausgäb %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Geb den Inhalt von en Variable aus."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Frocht den Benutzer noh en Zoohl."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Frocht den Benutzer noh enem Text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Frächt noh Zoohl mit Hinweis"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Frocht noh Text mit Hinweis"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)https://hrx.wikipedia.org/wiki/Zeichenkette"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En Buchstoob, Text orrer Satz."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "entfern Leerzeiche von Oonfang und End Seite"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "entferne Leerzeiche von Oonfang Seite"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "entferne Leerzeiche von End Seite von"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Entfernt Leerzeiche vom Oonfang und / orrer End von en Text."; +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Generier/erzeiche \"Schreibe %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Gebt der Variable sein Weart zurück."; +Blockly.Msg["VARIABLES_SET"] = "Schreib %1 zu %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Generier/erzeich \"Lese %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setzt en Variable sei Weart."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/hu.js b/msg/js/hu.js index 7039a761a11..c6395f89a9b 100644 --- a/msg/js/hu.js +++ b/msg/js/hu.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Megjegyzés hozzáadása"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "A(z) „%1” változó nem törölhető, mert része a(z) „%2” függvény definíciójának."; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Érték módosítása:"; -Blockly.Msg["CLEAN_UP"] = "Blokkok kiürítése"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Az összecsukott blokk figyelmeztetéseket tartalmaz."; -Blockly.Msg["COLLAPSE_ALL"] = "Blokkok összecsukása"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Blokk összecsukása"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "szín 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "szín 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "arány"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "színkeverés"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Két színt kever össze a megadott arányban (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hu.wikipedia.org/wiki/Szín"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Válassz színt a palettáról."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "véletlen szín"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Véletlenszerűen kiválasztott szín."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "kék"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "zöld"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "vörös"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "Szín"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Szín előállítása a megadott vörös, zöld, és kék értékekkel. Minden értéknek 0 és 100 közé kell esnie."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "befejezi az ismétlést"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "folytatja a következővel"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Megszakítja az utasítást tartalmazó ciklust."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Kihagyja a ciklus további részét, és elölről kezdi a következő elemmel."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Figyelem: Ez a blokk csak cikluson belül használható."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "minden %1 elemre a %2 listában"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "A '%1' változó minden lépésben megkapja a lista adott elemének értékét, és végrehajt vele néhány utasítást."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "számolj %1 értékével %2 és %3 között %4 lépésközzel"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "A(z) '%1' változó felveszi a kezdőérték és a végérték közötti értékeket a meghatározott lépésközzel. Eközben a meghatározott blokkokat hajtja végre."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Feltétel hozzáadása a ha blokkhoz."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Végső feltétel hozzáadása a ha blokkhoz."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "A ha blokk testreszabásához bővítsd, töröld vagy rendezd át a részeit."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "különben"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "különben ha"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ha"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ha a kifejezés igaz, akkor végrehajtja az utasításokat."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ha a kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben a második utasításblokk kerül végrehajtásra."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ha az első kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben, ha a második kifejezés igaz, akkor végrehajtja a második utasítás blokkot."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ha az első kifejezés igaz, akkor végrehajtjuk az első utasítás blokkot. Ha a második kifejezés igaz, akkor végrehajtjuk a második utasítás blokkot. Amennyiben egyik kifejezés sem igaz, akkor az utolsó utasítás blokk kerül végrehajtásra."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://hu.wikipedia.org/wiki/Ciklus_(programoz%C3%A1s)#Sz.C3.A1ml.C3.A1l.C3.B3s_.28FOR.29_ciklus"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = ""; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ismételd %1 alkalommal"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Megadott kódrészlet ismételt végrehajtása."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ismételd amíg"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ismételd amíg"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Amíg a feltétel hamis, végrehajtja az utasításokat."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Amíg a feltétel igaz, végrehajtja az utasításokat."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Az összes %1 blokk törlése?"; -Blockly.Msg["DELETE_BLOCK"] = "Blokk törlése"; -Blockly.Msg["DELETE_VARIABLE"] = "A(z) „%1” változó törlése"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "A(z) „%2” változó %1 használatának törlése?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 blokk törlése"; -Blockly.Msg["DIALOG_CANCEL"] = "Mégse"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Blokk letiltása"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Másolat"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Blokk engedélyezése"; -Blockly.Msg["EXPAND_ALL"] = "Blokkok kinyitása"; -Blockly.Msg["EXPAND_BLOCK"] = "Blokk kinyitása"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Külső kapcsolatok"; -Blockly.Msg["HELP"] = "Súgó"; -Blockly.Msg["INLINE_INPUTS"] = "Belső kapcsolatok"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "üres lista"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Elemeket nem tartalmazó üres listát ad eredményül"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Lista készítés, elemek:"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Elem hozzáadása listához."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Listát készít a megadott elemekből."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "az első"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "a végétől számított"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "az elejétől számított"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "listából értéke"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "listából kivétele"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "az utolsó"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "bármely"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "listából törlése"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "elemnek"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "A lista első elemét adja eredményül."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "A lista megadott sorszámú elemét adja eredményül."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "A lista utolsó elemét adja eredményül."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "A lista véletlenszerűen választott elemét adja eredményül."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Az első elem kivétele a listából."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "A megadott sorszámú elem kivétele a listából."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Az utolsó elem kivétele a listából."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Véletlenszerűen választott elem kivétele a listából."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Az első elem törlése a listából."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "A megadott sorszámú elem törlése a listából."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Az utolsó elem törlése a listából."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Véletlenszerűen választott elem törlése a listából."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "és a végétől számított"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "és az elejétől számított"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "és az utolsó"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "részlistája az első"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "részlistája a végétől számított"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "részlistája az elejétől számított"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "elem között"; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "A lista adott részéről másolat."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 az utolsó elemet jelenti."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 az első elemet jelenti."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "listában első előfordulásaː"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "listában utolsó előfordulásaː"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "A megadott elem első vagy utolsó előfordulásával tér vissza. Ha nem talál ilyen elemet, akkor %1 a visszatérési érték."; -Blockly.Msg["LISTS_INLIST"] = "A(z)"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 üres lista?"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Az eredmény igaz, ha a lista nem tartalmaz elemeket."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 lista hossza"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "A lista elemszámát adja eredményül."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "Lista készítése %1 elemet %2 alkalommal hozzáadva"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "A megadtott elem felhasználásával n elemű listát készít"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 megfordítása"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Megfordítja a lista másolatát."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "elemkéntː"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "listába szúrd be"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "listába állítsd be"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Beszúrás a lista elejére."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Beszúrás a megadott sorszámú elem elé a listában."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Beszúrás a lista végére."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Beszúrás véletlenszerűen választott elem elé a listában."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Az első elem cseréje a listában."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "A megadott sorszámú elem cseréje a listában."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Az utolsó elem cseréje a listában."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Véletlenszerűen választott elem cseréje a listában."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "növekvő"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "csökkenő"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 rendezés"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Egy lista egy másolatának rendezése."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "betűrendben nagybetű figyelmen kívül hagyásával"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerikus"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "betűrendben"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lista készítése szövegből"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "sztring készítése listából"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "A lista elemeit összefűzi szöveggé a határoló karaktereket is felhasználva."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Listát készít a határoló karaktereknél törve a szöveget."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "határoló karakter"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "hamis"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Igaz, vagy hamis érték"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "igaz"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://hu.wikipedia.org/wiki/Egyenl%C5%91tlens%C3%A9g"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Igaz, ha a kifejezés két oldala egyenlő."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Igaz, ha a bal oldali kifejezés nagyobb, mint a jobb oldali."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Igaz, ha a bal oldali kifejezés nagyobb vagy egyenlő, mint a jobb oldali."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Igaz, ha a bal oldali kifejezés kisebb, mint a jobb oldali."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Igaz, ha a bal oldali kifejezés kisebb vagy egyenlő, mint a jobb oldali."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Igaz, ha a kifejezés két oldala nem egyenlő.."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nem %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Igaz, ha a kifejezés hamis. Hamis, ha a kifejezés igaz."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "null érték."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "és"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "vagy"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Igaz, ha mindkét kifejezés igaz."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Igaz, ha legalább az egyik kifejezés igaz."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "vizsgáld meg:"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "érték, ha hamis:"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "érték, ha igaz:"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kiértékeli a megvizsgálandó kifejezést. Ha a kifejezés igaz, visszatér az \"érték, ha igaz\" értékkel, különben az \"érték, ha hamis\" értékkel."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hu.wikipedia.org/wiki/Matematikai_m%C5%B1velet"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Két szám összege."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Két szám hányadosa."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Két szám különbsége."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Két szám szorzata."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Az első számnak a második számmal megegyező hatványa."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://hu.wikipedia.org/wiki/Arctg2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "Arctg2 X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Az (X,Y) pont arkusz tangens értéke fokban -180 és 180 között."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://hu.wikipedia.org/wiki/JavaScript#Aritmetikai_oper.C3.A1torok"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "növeld %1 értékét %2 -vel"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "A \"%1\" változó értékének növelése egy számmal."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hu.wikipedia.org/wiki/Matematikai_konstans"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ismert matematikai konstans: π (3.141…), e (2.718…), φ (1.618…), gyök(2) (1.414…), gyök(½) (0.707…), vagy ∞ (végtelen)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "korlátozd %1-t %2 és %3 közé"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Egy változó értékének korlátozása a megadott zárt intervallumra."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "-nek osztója"; -Blockly.Msg["MATH_IS_EVEN"] = "páros"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "negatív"; -Blockly.Msg["MATH_IS_ODD"] = "páratlan"; -Blockly.Msg["MATH_IS_POSITIVE"] = "pozitív"; -Blockly.Msg["MATH_IS_PRIME"] = "prím"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Ellenőrzi, hogy a szám páros, páratlan, prím, egész, pozitív vagy negatív-e, illetve osztható-e a másodikkal. Igaz, vagy hamis értéket ad eredményül."; -Blockly.Msg["MATH_IS_WHOLE"] = "egész"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Als.C3.B3_eg.C3.A9szr.C3.A9sz"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 maradéka"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Az egész osztás maradékát adja eredméynül."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hu.wikipedia.org/wiki/Sz%C3%A1m"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Egy szám."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "lista elemeinek átlaga"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "lista legnagyobb eleme"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "lista mediánja"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "lista legkisebb eleme"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "lista módusza"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "lista véletlen eleme"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "lista elemeinek szórása"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "lista elemeinek összege"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "A lista elemeinek átlagát adja eredményül."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "A lista legnagyobb elemét adja vissza."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "A lista elemeinek mediánját adja eredményül."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "A lista legkisebb elemét adja vissza."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "A lista elemeinek móduszát adja eredményül."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "A lista egy véletlen elemét adja eredményül."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "A lista elemeinek szórását adja eredményül."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "A lista elemeinek összegét adja eredményül."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://hu.wikipedia.org/wiki/V%C3%A9letlen"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "véletlen tört"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Véletlen tört érték 0.0 és 1.0 között."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://hu.wikipedia.org/wiki/V%C3%A9letlen"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "véletlen egész szám %1 között %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Véletlen egész szám a megadott zárt intervallumon belül."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Kerek.C3.ADt.C3.A9s"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "kerekítsd"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "kerekítsd lefelé"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "kerekítsd felfelé"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Egy szám kerekítése felfelé vagy lefelé."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://hu.wikipedia.org/wiki/Gy%C3%B6kvon%C3%A1s"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "abszolútérték"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "négyzetgyök"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "A szám abszolútértéke."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Az e megadott számú hatványa."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "A szám természetes alapú logaritmusa."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "A szám 10-es alapú logaritmusa."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "A szám -1 szerese."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "A 10 megadott számú hatványa."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "A szám négyzetgyöke."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://hu.wikipedia.org/wiki/Sz%C3%B6gf%C3%BCggv%C3%A9nyek"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "A fokban megadott szög arkusz koszinusz értéke."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "A fokban megadott szög arkusz szinusz értéke."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "A fokban megadott szög arkusz tangens értéke."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "A fokban megadott szög koszinusz értéke."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "A fokban megadott szög szinusz értéke."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "A fokban megadott szög tangens értéke."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Változó létrehozása…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Az új változó neve:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Az új változó típusa:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "."; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "utasítások engedélyezése"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "paraméterlistaː"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Végrehajtja az eljárást."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Meghívja a függvényt."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "paraméterlistaː"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "„%1” létrehozása"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Írj erről a funkcióról..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "név"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "Eljárás"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Eljárás (nem ad vissza eredményt)."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "eredménye"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Függvény eredménnyel."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Figyelem: Az eljárásban azonos elnevezésű paramétert adtál meg."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Függvénydefiníció kiemelése"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ha az érték igaz, akkor visszatér a függvény értékével."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Figyelem: Ez a blokk csak függvénydefiníción belül használható."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "változó:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Bemenet hozzáadása a függvényhez."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "paraméterek"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bemenetek hozzáadása, eltávolítása vagy átrendezése ehhez a függvényhez."; -Blockly.Msg["REDO"] = "Újra"; -Blockly.Msg["REMOVE_COMMENT"] = "Megjegyzés eltávolítása"; -Blockly.Msg["RENAME_VARIABLE"] = "Változó átnevezése…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Minden „%1” változó átnevezése erre:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "A %1 szövegéhez fűzd hozzá %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Szöveget fűz a \"%1\" változó értékéhez."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "kisbetűs"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Címként Formázott"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "NAGYBETŰS"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "első"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hátulról"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "elölről"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "utolsó"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "véletlen"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = "karaktere"; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "a szövegben: %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "A szöveg egy megadott karakterét adja eredményül."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 száma ebben: %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "A szöveg előfordulásainak megszámolása egy másik szövegben."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Elem hozzáfűzése a szöveghez."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "fűzd össze"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Összefűzéssel, törléssel vagy rendezéssel kapcsolato sblokkok szöveg szerkesztéséhez."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "betűtől a hátulról számított"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "betűtől a(z)"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "betűtől az utolsó"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "a"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "szövegben válaszd ki az első"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "szövegben válaszd ki a hátulról a(z)"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "szövegben válaszd ki a(z)"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "betűig tartó betűsort"; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "A megadott szövegrészletet adja eredményül."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "szövegben az első előfordulásának helye"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "szövegben az utolsó előfordulásának helye"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "A(z) %1 %2 %3 szövegnek"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "A keresett szöveg első vagy utolsó előfordulásával tér vissza. %1 esetén a szövegrészlet nem található."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 üres"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Igaz, ha a vizsgált szöveg hossza 0."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "fűzd össze"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tetszőleges számú szövegrészletet fűz össze egybefüggő szöveggé."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 hossza"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "A megadott szöveg karaktereinek számát adja eredményül (beleértve a szóközöket)."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "Üzenet %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Megejelníti a megadott kaakterláncot üzenetként a képernyőn."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Számot kér be a felhasználótól."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Szöveget kér be a felhasználótól."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Kérj be számot"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Kérj be szöveget"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 cseréje %2-vel %3-ban"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "A szöveg összes előfordulásának cseréje egy másik szöveggel."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 megfordítása"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Megfordítja a karakterek sorrendjét a szövegben."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://hu.wikipedia.org/wiki/String"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Egy betű, szó vagy szöveg egy sora."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "szóközök levágása mindkét végéről"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "szóközök levágása az elejéről"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "szóközök levágása a végéről"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Levágja a megadott szöveg végeiről a szóközöket."; -Blockly.Msg["TODAY"] = "Ma"; -Blockly.Msg["UNDO"] = "Visszavonás"; -Blockly.Msg["UNNAMED_KEY"] = "névtelen"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "változó"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Készíts \"%1=\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A változó értékét adja eredményül."; -Blockly.Msg["VARIABLES_SET"] = "%1 %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Készíts \"%1\""; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "A változónak adhatunk értéket."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A(z) „%1” nevű változó már létezik."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Egy „%1” nevű változó már létezik egy másik típussal: „%2”."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly munkaterület"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Mondj valamit..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Megjegyzés hozzáadása"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "A(z) „%1” változó nem törölhető, mert része a(z) „%2” függvény definíciójának."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Érték módosítása:"; +Blockly.Msg["CLEAN_UP"] = "Blokkok kiürítése"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Az összecsukott blokk figyelmeztetéseket tartalmaz."; +Blockly.Msg["COLLAPSE_ALL"] = "Blokkok összecsukása"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Blokk összecsukása"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "szín 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "szín 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "arány"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "színkeverés"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Két színt kever össze a megadott arányban (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hu.wikipedia.org/wiki/Szín"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Válassz színt a palettáról."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "véletlen szín"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Véletlenszerűen kiválasztott szín."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "kék"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zöld"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "vörös"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Szín"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Szín előállítása a megadott vörös, zöld, és kék értékekkel. Minden értéknek 0 és 100 közé kell esnie."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "befejezi az ismétlést"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "folytatja a következővel"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Megszakítja az utasítást tartalmazó ciklust."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Kihagyja a ciklus további részét, és elölről kezdi a következő elemmel."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Figyelem: Ez a blokk csak cikluson belül használható."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "minden %1 elemre a %2 listában"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "A '%1' változó minden lépésben megkapja a lista adott elemének értékét, és végrehajt vele néhány utasítást."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "számolj %1 értékével %2 és %3 között %4 lépésközzel"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "A(z) '%1' változó felveszi a kezdőérték és a végérték közötti értékeket a meghatározott lépésközzel. Eközben a meghatározott blokkokat hajtja végre."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Feltétel hozzáadása a ha blokkhoz."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Végső feltétel hozzáadása a ha blokkhoz."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "A ha blokk testreszabásához bővítsd, töröld vagy rendezd át a részeit."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "különben"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "különben ha"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ha"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ha a kifejezés igaz, akkor végrehajtja az utasításokat."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ha a kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben a második utasításblokk kerül végrehajtásra."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ha az első kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben, ha a második kifejezés igaz, akkor végrehajtja a második utasítás blokkot."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ha az első kifejezés igaz, akkor végrehajtjuk az első utasítás blokkot. Ha a második kifejezés igaz, akkor végrehajtjuk a második utasítás blokkot. Amennyiben egyik kifejezés sem igaz, akkor az utolsó utasítás blokk kerül végrehajtásra."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://hu.wikipedia.org/wiki/Ciklus_(programoz%C3%A1s)#Sz.C3.A1ml.C3.A1l.C3.B3s_.28FOR.29_ciklus"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = ""; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ismételd %1 alkalommal"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Megadott kódrészlet ismételt végrehajtása."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ismételd amíg"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ismételd amíg"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Amíg a feltétel hamis, végrehajtja az utasításokat."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Amíg a feltétel igaz, végrehajtja az utasításokat."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Az összes %1 blokk törlése?"; +Blockly.Msg["DELETE_BLOCK"] = "Blokk törlése"; +Blockly.Msg["DELETE_VARIABLE"] = "A(z) „%1” változó törlése"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "A(z) „%2” változó %1 használatának törlése?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 blokk törlése"; +Blockly.Msg["DIALOG_CANCEL"] = "Mégse"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Blokk letiltása"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Másolat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Blokk engedélyezése"; +Blockly.Msg["EXPAND_ALL"] = "Blokkok kinyitása"; +Blockly.Msg["EXPAND_BLOCK"] = "Blokk kinyitása"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Külső kapcsolatok"; +Blockly.Msg["HELP"] = "Súgó"; +Blockly.Msg["INLINE_INPUTS"] = "Belső kapcsolatok"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "üres lista"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Elemeket nem tartalmazó üres listát ad eredményül"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "Lista készítés, elemek:"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Elem hozzáadása listához."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Listát készít a megadott elemekből."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "az első"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "a végétől számított"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "az elejétől számított"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "listából értéke"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "listából kivétele"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "az utolsó"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "bármely"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "listából törlése"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "elemnek"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "A lista első elemét adja eredményül."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "A lista megadott sorszámú elemét adja eredményül."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "A lista utolsó elemét adja eredményül."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "A lista véletlenszerűen választott elemét adja eredményül."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Az első elem kivétele a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "A megadott sorszámú elem kivétele a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Az utolsó elem kivétele a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Véletlenszerűen választott elem kivétele a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Az első elem törlése a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "A megadott sorszámú elem törlése a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Az utolsó elem törlése a listából."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Véletlenszerűen választott elem törlése a listából."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "és a végétől számított"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "és az elejétől számított"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "és az utolsó"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "részlistája az első"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "részlistája a végétől számított"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "részlistája az elejétől számított"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "elem között"; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "A lista adott részéről másolat."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 az utolsó elemet jelenti."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 az első elemet jelenti."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "listában első előfordulásaː"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "listában utolsó előfordulásaː"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "A megadott elem első vagy utolsó előfordulásával tér vissza. Ha nem talál ilyen elemet, akkor %1 a visszatérési érték."; +Blockly.Msg["LISTS_INLIST"] = "A(z)"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 üres lista?"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Az eredmény igaz, ha a lista nem tartalmaz elemeket."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 lista hossza"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "A lista elemszámát adja eredményül."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Lista készítése %1 elemet %2 alkalommal hozzáadva"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "A megadtott elem felhasználásával n elemű listát készít"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 megfordítása"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Megfordítja a lista másolatát."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "elemkéntː"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "listába szúrd be"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "listába állítsd be"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Beszúrás a lista elejére."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Beszúrás a megadott sorszámú elem elé a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Beszúrás a lista végére."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Beszúrás véletlenszerűen választott elem elé a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Az első elem cseréje a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "A megadott sorszámú elem cseréje a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Az utolsó elem cseréje a listában."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Véletlenszerűen választott elem cseréje a listában."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "növekvő"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "csökkenő"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 rendezés"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Egy lista egy másolatának rendezése."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "betűrendben nagybetű figyelmen kívül hagyásával"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerikus"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "betűrendben"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lista készítése szövegből"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "sztring készítése listából"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "A lista elemeit összefűzi szöveggé a határoló karaktereket is felhasználva."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Listát készít a határoló karaktereknél törve a szöveget."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "határoló karakter"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "hamis"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Igaz, vagy hamis érték"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "igaz"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://hu.wikipedia.org/wiki/Egyenl%C5%91tlens%C3%A9g"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Igaz, ha a kifejezés két oldala egyenlő."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Igaz, ha a bal oldali kifejezés nagyobb, mint a jobb oldali."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Igaz, ha a bal oldali kifejezés nagyobb vagy egyenlő, mint a jobb oldali."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Igaz, ha a bal oldali kifejezés kisebb, mint a jobb oldali."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Igaz, ha a bal oldali kifejezés kisebb vagy egyenlő, mint a jobb oldali."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Igaz, ha a kifejezés két oldala nem egyenlő.."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nem %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Igaz, ha a kifejezés hamis. Hamis, ha a kifejezés igaz."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "null érték."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "és"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "vagy"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Igaz, ha mindkét kifejezés igaz."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Igaz, ha legalább az egyik kifejezés igaz."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "vizsgáld meg:"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "érték, ha hamis:"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "érték, ha igaz:"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kiértékeli a megvizsgálandó kifejezést. Ha a kifejezés igaz, visszatér az \"érték, ha igaz\" értékkel, különben az \"érték, ha hamis\" értékkel."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hu.wikipedia.org/wiki/Matematikai_m%C5%B1velet"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Két szám összege."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Két szám hányadosa."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Két szám különbsége."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Két szám szorzata."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Az első számnak a második számmal megegyező hatványa."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://hu.wikipedia.org/wiki/Arctg2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "Arctg2 X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Az (X,Y) pont arkusz tangens értéke fokban -180 és 180 között."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://hu.wikipedia.org/wiki/JavaScript#Aritmetikai_oper.C3.A1torok"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "növeld %1 értékét %2 -vel"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "A \"%1\" változó értékének növelése egy számmal."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hu.wikipedia.org/wiki/Matematikai_konstans"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ismert matematikai konstans: π (3.141…), e (2.718…), φ (1.618…), gyök(2) (1.414…), gyök(½) (0.707…), vagy ∞ (végtelen)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "korlátozd %1-t %2 és %3 közé"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Egy változó értékének korlátozása a megadott zárt intervallumra."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "-nek osztója"; +Blockly.Msg["MATH_IS_EVEN"] = "páros"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatív"; +Blockly.Msg["MATH_IS_ODD"] = "páratlan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "pozitív"; +Blockly.Msg["MATH_IS_PRIME"] = "prím"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Ellenőrzi, hogy a szám páros, páratlan, prím, egész, pozitív vagy negatív-e, illetve osztható-e a másodikkal. Igaz, vagy hamis értéket ad eredményül."; +Blockly.Msg["MATH_IS_WHOLE"] = "egész"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Als.C3.B3_eg.C3.A9szr.C3.A9sz"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 maradéka"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Az egész osztás maradékát adja eredméynül."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hu.wikipedia.org/wiki/Sz%C3%A1m"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Egy szám."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "lista elemeinek átlaga"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "lista legnagyobb eleme"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "lista mediánja"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "lista legkisebb eleme"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "lista módusza"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "lista véletlen eleme"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "lista elemeinek szórása"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "lista elemeinek összege"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "A lista elemeinek átlagát adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "A lista legnagyobb elemét adja vissza."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "A lista elemeinek mediánját adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "A lista legkisebb elemét adja vissza."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "A lista elemeinek móduszát adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "A lista egy véletlen elemét adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "A lista elemeinek szórását adja eredményül."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "A lista elemeinek összegét adja eredményül."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://hu.wikipedia.org/wiki/V%C3%A9letlen"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "véletlen tört"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Véletlen tört érték 0.0 és 1.0 között."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://hu.wikipedia.org/wiki/V%C3%A9letlen"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "véletlen egész szám %1 között %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Véletlen egész szám a megadott zárt intervallumon belül."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Kerek.C3.ADt.C3.A9s"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "kerekítsd"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "kerekítsd lefelé"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "kerekítsd felfelé"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Egy szám kerekítése felfelé vagy lefelé."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://hu.wikipedia.org/wiki/Gy%C3%B6kvon%C3%A1s"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "abszolútérték"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "négyzetgyök"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "A szám abszolútértéke."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Az e megadott számú hatványa."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "A szám természetes alapú logaritmusa."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "A szám 10-es alapú logaritmusa."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "A szám -1 szerese."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "A 10 megadott számú hatványa."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "A szám négyzetgyöke."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://hu.wikipedia.org/wiki/Sz%C3%B6gf%C3%BCggv%C3%A9nyek"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "A fokban megadott szög arkusz koszinusz értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "A fokban megadott szög arkusz szinusz értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "A fokban megadott szög arkusz tangens értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "A fokban megadott szög koszinusz értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "A fokban megadott szög szinusz értéke."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "A fokban megadott szög tangens értéke."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Változó létrehozása…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Az új változó neve:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Az új változó típusa:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "."; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "utasítások engedélyezése"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "paraméterlistaː"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Végrehajtja az eljárást."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Meghívja a függvényt."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "paraméterlistaː"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "„%1” létrehozása"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Írj erről a funkcióról..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "név"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "Eljárás"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Eljárás (nem ad vissza eredményt)."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "eredménye"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Függvény eredménnyel."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Figyelem: Az eljárásban azonos elnevezésű paramétert adtál meg."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Függvénydefiníció kiemelése"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ha az érték igaz, akkor visszatér a függvény értékével."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Figyelem: Ez a blokk csak függvénydefiníción belül használható."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "változó:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Bemenet hozzáadása a függvényhez."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "paraméterek"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bemenetek hozzáadása, eltávolítása vagy átrendezése ehhez a függvényhez."; +Blockly.Msg["REDO"] = "Újra"; +Blockly.Msg["REMOVE_COMMENT"] = "Megjegyzés eltávolítása"; +Blockly.Msg["RENAME_VARIABLE"] = "Változó átnevezése…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Minden „%1” változó átnevezése erre:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "A %1 szövegéhez fűzd hozzá %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Szöveget fűz a \"%1\" változó értékéhez."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "kisbetűs"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Címként Formázott"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "NAGYBETŰS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "első"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hátulról"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "elölről"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "utolsó"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "véletlen"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "karaktere"; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "a szövegben: %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "A szöveg egy megadott karakterét adja eredményül."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 száma ebben: %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "A szöveg előfordulásainak megszámolása egy másik szövegben."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Elem hozzáfűzése a szöveghez."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "fűzd össze"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Összefűzéssel, törléssel vagy rendezéssel kapcsolato sblokkok szöveg szerkesztéséhez."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "betűtől a hátulról számított"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "betűtől a(z)"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "betűtől az utolsó"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "a"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "szövegben válaszd ki az első"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "szövegben válaszd ki a hátulról a(z)"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "szövegben válaszd ki a(z)"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "betűig tartó betűsort"; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "A megadott szövegrészletet adja eredményül."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "szövegben az első előfordulásának helye"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "szövegben az utolsó előfordulásának helye"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "A(z) %1 %2 %3 szövegnek"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "A keresett szöveg első vagy utolsó előfordulásával tér vissza. %1 esetén a szövegrészlet nem található."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 üres"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Igaz, ha a vizsgált szöveg hossza 0."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "fűzd össze"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tetszőleges számú szövegrészletet fűz össze egybefüggő szöveggé."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 hossza"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "A megadott szöveg karaktereinek számát adja eredményül (beleértve a szóközöket)."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "Üzenet %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Megejelníti a megadott kaakterláncot üzenetként a képernyőn."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Számot kér be a felhasználótól."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Szöveget kér be a felhasználótól."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Kérj be számot"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Kérj be szöveget"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 cseréje %2-vel %3-ban"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "A szöveg összes előfordulásának cseréje egy másik szöveggel."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 megfordítása"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Megfordítja a karakterek sorrendjét a szövegben."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://hu.wikipedia.org/wiki/String"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Egy betű, szó vagy szöveg egy sora."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "szóközök levágása mindkét végéről"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "szóközök levágása az elejéről"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "szóközök levágása a végéről"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Levágja a megadott szöveg végeiről a szóközöket."; +Blockly.Msg["TODAY"] = "Ma"; +Blockly.Msg["UNDO"] = "Visszavonás"; +Blockly.Msg["UNNAMED_KEY"] = "névtelen"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "változó"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Készíts \"%1=\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A változó értékét adja eredményül."; +Blockly.Msg["VARIABLES_SET"] = "%1 %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Készíts \"%1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "A változónak adhatunk értéket."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A(z) „%1” nevű változó már létezik."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Egy „%1” nevű változó már létezik egy másik típussal: „%2”."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly munkaterület"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Mondj valamit..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/hy.js b/msg/js/hy.js index f02da62aade..ed606c9fc94 100644 --- a/msg/js/hy.js +++ b/msg/js/hy.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Ավելացնել մեկնաբանություն"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Հնարավոր չի ջնջել %1 փոփոխականը, որովհետև այն '%2' ֆունկցիայի հայտարարման մասն է"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Փոխել նշանակություն:"; -Blockly.Msg["CLEAN_UP"] = "Մաքրել բլոկները"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Քանդել բլոկները"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Կրճատել բլոկը"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "գույն 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "գույն 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "հարաբերակցություն"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "խառնել"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Խառնում է երկու գույները միմյանց հետ տրված հարաբերակցությամբ (0.0 - 1.0):"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hy.wikipedia.org/wiki/Գույն"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Ընտրիր գույն ներկապնակից:"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "պատահական գույն"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Ընտրում է գույն պատահականության սկզբունքով:"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "կապույտ"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "կանաչ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "կարմիր"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "գույնը"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ստեղծում է գույն կարմիրի, կանաչի և կապույտի նշված քանակություններով: Բոլոր արժեքները պետք է լինեն 0-ի և 100-ի միջև:"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "դուրս գալ ցիկլից"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "անցնել կրկնության հաջորդ կատարմանը"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Դադարեցնում է տվյալ կրկնությունը"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Դադարեցնում կրկնության մնացած մասը և անցնում է հաջորդ քայլին։"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ցիկլի ներսում:"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "յուրաքանչյուր %1 էլեմենտի համար %2 ցանկից"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Ցանկի յուրաքանչյուր անդամի արժեքը վերագրում է '%1' փոփոխականին և կատարում նշված հրամանները։"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "հաշվել %1-ը, %2֊ից մինչև %3, քայլը %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "'%1' փոփոխականին վերագրում է արժեքներ, սկսելով նախնական արժեքից, տրված քայլով և կատարում է նշված հրամանները"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ավելացնում է պայման «եթե» բլոկին:"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ավելացնել վերջնական ենթաբլոկ (այն կաշխատի, եթե բոլոր պայմանները կեղծ են)"; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ավելացնել, հեռացնել կամ փոխել հերթականությունը այս \"եթե\" բլոկը վերակարգավորելու համար։"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "հակառակ դեպքում"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "հակառակ դեպքում, եթե"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "եթե"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Եթե պայմանը ճշմարիտ է, կատարում է որոշ հրահանգներ:"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Եթե պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում կատարում է հրահանգների երկրորդ բլոկը:"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը:"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը: Եթե պայմաններից ոչ մեկը ճշմարիտ չեն, ապա կատարում է հրահանգների վերջին բլոկը:"; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "կատարել"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "կրկնել %1 անգամ"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Կատարում է որոշ հրահանգներ մի քանի անգամ:"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "կրկնել, քանի դեռ չի"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "կրկնել, քանի դեռ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Քանի դեռ արժեքը կեղծ է, կատարում է որոշակի հրահանգներ:"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Քանի դեռ արժեքը ճշմարիտ է, կատարում է հրահանգները:"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ջնջե՞լ բոլոր %1 բլոկները:"; -Blockly.Msg["DELETE_BLOCK"] = "Ջնջել բլոկը"; -Blockly.Msg["DELETE_VARIABLE"] = "Հեռացնել '%1' փոփոխականը"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ջնջե՞լ '%2' փոփոխականի %1 կիրառությունները"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Ջնջել %1 բլոկ"; -Blockly.Msg["DIALOG_CANCEL"] = "Չեղարկել"; -Blockly.Msg["DIALOG_OK"] = "Լավ"; -Blockly.Msg["DISABLE_BLOCK"] = "Անջատել բլոկը"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Պատճենել"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Կրկնօրինակել մեկնաբանությունը"; -Blockly.Msg["ENABLE_BLOCK"] = "Միացնել բլոկը"; -Blockly.Msg["EXPAND_ALL"] = "Բացել բլոկները"; -Blockly.Msg["EXPAND_BLOCK"] = "Բացել բլոկը"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Արտաքին մուտքեր"; -Blockly.Msg["HELP"] = "Օգնություն"; -Blockly.Msg["INLINE_INPUTS"] = "Գծային մուտք"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ստեղծել դատարկ ցանկ"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Վերադարձնում է 0 երկարությամբ ցանկ, որը տվյալներ չի պարունակում:"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ցանկ"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Այս ցանկ բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հաջորդականությունը։"; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ստեղծել ցանկ"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ավելացնել տարր ցանկին:"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ստեղծում է ցանկ ցանկացած քանակությամբ տվյալներով:"; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "առաջինը"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ վերջից"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "վերցնել"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "վերցնել և հեռացնել"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "վերջինը"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "պատահական"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "հեռացնել"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Վերադարձնում է ցանկի առաջին տարրը:"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Վերադարձնում է ցանկի վերջին տարրը:"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Վերադարձնում է ցանկի պատահական տարր:"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Հեռացնում և վերադարձնում է ցանկի առաջին տարրը:"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Հեռացնում և վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Հեռացնում և վերադարձնում է ցանկի վերջին տարրը:"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Հեռացնում և վերադարձնում է ցանկի պատահական տարր:"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Հեռացնում է ցանկի առաջին տարրը:"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Ցանկից հեռացնում է նշված դիրքում գտնվող անդամը։"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Հեռացնում է ցանկի վերջին տարրը:"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Հեռացնում է ցանկից պատահական տարր:"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "մինչև # վերջից"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "մինչև #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "մինչև վերջ"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "վերցնել ենթա֊ցանկ սկզբից"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "վերցնել ենթացանկ, սկսած # վերջից"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "վերցնել ենթացանկ, սկսած #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ստեղծում է ցանկի նշված մասի պատճենը։"; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 վերջին տարրն է:"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 առաջին տարրն է:"; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "գտնել անդամի առաջին հանդիպման դիրքը"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "գտնել անդամի վերջին հանդիպման դիրքը"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Վերադարձնում է ցանկում անդամի առաջին/վերջին հանդիպման դիրքը։ Վերադարձնում է %1, եթե անդամը չի գտնվել։"; -Blockly.Msg["LISTS_INLIST"] = "ցանկում"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 դատարկ է"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Վերադարձնում է \"ճշմարիտ\" եթե ցանկը դատարկ է։"; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1֊ի երկարությունը"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Վերադարձնում է ցանկի երկարությունը:"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "ստեղծել ցանկ, %1 արժեքը կրկնելով %2 անգամ"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Տրված արժեքը նշված քանակով կրկնելու միջոցով, ստեղծում է ցանկ։"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "շրջել %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Շրջում է ցանկի պատճենը։"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "որպես"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ներմուծել"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "դնել"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ներմուծում է անդամը ցանկի սկզբում։"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ներմուծում է անդամը ցանկի նշված դիրքում։"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ավելացնում է անդամ ցանկի վերջում։"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ներմուծում է անդամը ցանկի պատահական դիրքում։"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Սահմանում է ցանկի առաջին տարրը:"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Տեղադրում է անդամը ցանկի նշված դիրքում։"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Սահմանում է ցանկի վերջին տարրը:"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Սահմանում է ցանկից պատահական տարր:"; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "աճման կարգ"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "նվազման կարգ"; -Blockly.Msg["LISTS_SORT_TITLE"] = "դասավորել %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Դասավորում է ցանկի պատճենը"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "այբենական, անտեսել ռեգիստրը"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "թվային կարգ"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "այբբենական կարգ"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ստեղծել ցանկ տեքստից"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ստեղծել տեքստ ցանկից"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ցանկից ստեղծվում է միացյալ տեքստ, ցանկի անդամները միացվում են բաժանարարներով։"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Տեքստը վեր է ածվում ցանկի, նշված բաժանարարով։"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "բաժանարարով"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "կեղծ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Վերադարձնում է ճշմարիտ կամ կեղծ արժեք:"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ճշմարիտ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://hy.wikipedia.org/wiki/Անհավասարություն"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար են միմյանց:"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ է երկրորդից:"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ կամ հավասար է երկրորդին:"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից առաջինը փոքր է երկրորդից:"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը փոքր կամ հավասար է երկրորդին:"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար չեն միմյանց:"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ոչ %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքը կեղծ է: Վերադարձնում է կեղծ արժեք, եթե մուտքը ճշմարիտ է:"; -Blockly.Msg["LOGIC_NULL"] = "ոչինչ"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Վերադարձնում է null (ոչինչ)"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "և"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "կամ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ ճշմարիտ են:"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից գոնե մեկը ճշմարիտ է:"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ստուգում"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "եթե կեղծ է"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "եթե ճշմարիտ է"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Ստուգում է ընտրության պայմանը։ Եթե այն ճշմարիտ է, վերադարձնում է առաջին արժեքը, հակառակ դեպքում ՝ երկրորդը։"; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hy.wikipedia.org/wiki/Թվաբանություն"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Վերադարձնում է երկու թվերի գումարը:"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Վերադարձնում է քանորդը"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Վերադարձնում է երկու թվերի տարբերությունը:"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Վերադարձնում է երկու թվերի արտադրյալը"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Վերադարձնում է առաջին թիվի աստիճանը"; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 ֊ի atan2֊ը"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Վերադարձնում է (X, Y) կետի արկտանգենսը աստիճաններով -180-ից մինչև 180:"; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "փոխել %1-ի արժեքը %2֊ով"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ավելացնում է թիվ %1 փոփոխականին:"; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hy.wikipedia.org/wiki/Մաթեմատիկական_հաստատուն"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Վերադարձնում է տարածված հաստատուններից մեկը՝ π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), կամ ∞ (անվերջություն):"; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "սահմանափակել %1֊ը %2֊ի և %3֊ի միջև"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Սահմանափակել թիվը երկու արժեքներով (ներառյալ)"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "բաժանվում է"; -Blockly.Msg["MATH_IS_EVEN"] = "զույգ է"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "բացասական է"; -Blockly.Msg["MATH_IS_ODD"] = "կենտ է"; -Blockly.Msg["MATH_IS_POSITIVE"] = "դրական է"; -Blockly.Msg["MATH_IS_PRIME"] = "պարզ է"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Ստուգում է, թե թիվը զույգ է, կենտ է, պարզ է, ամբողջ է, դրական է, բացասական է կամ թե այն բաժանվում է որոշակի թվի վրա: Վերադարձնում է ճշմարիտ կամ կեղծ:"; -Blockly.Msg["MATH_IS_WHOLE"] = "ամբողջ է"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "%1֊ի և %2֊ի բաժանման մնացորդը"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Վերադարձնում է երկու թվերի բաժանման մնացորդը:"; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hy.wikipedia.org/wiki/Թիվ"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Թիվ"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ցանկի միջինը"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ցանկի առավելագույնը"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ցանկի միջնարժեք"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ցանկի նվազագույնը"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ցանկի մոդան"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ցանկի պատահական տարր"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ցանկի ստանդարտ շեղում"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ցանկի գումարը"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Վերադարձնում է ցանկում գտնվող արժեքների թվաբանական միջինը"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Վերադարձնում է ցանկի արժեքներից առավելագույնը"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Վերադարձնում է ցանկի միջնարժեք:"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Վերադարձնում է ցանկի արժեքներից նվազագույնը"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Վերադարձնում է ցանկի առավել հաճախ հանդիպող անդամների ցանկը։"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Վերադարձնում է պատահական տարր ցանկից:"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Վերադարձնում է ցանկի ստանդարտ շեղումը:"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Վերադարձնում է ցանկի բոլոր թվերի գումարը:"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Պատահական_թվերի_գեներատոր"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "պատահական կոտորակ"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Վերադարձնում է պատահական թիվ 0.0-ից (ներառյալ) 1.0 միջակայքից:"; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "պատահական ամբողջ թիվ %1 -ից %2 -ը"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Վերադարձնում է պատահական ամբողջ թիվ տրված երկու թվերի միջև (ներառյալ):"; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Կլորացում"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "կլորացնել"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "կլորացնել ցած"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "կլորացնել վեր"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Կլորացնում է թիվը վերև կամ ներքև:"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "բացարձակ"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Քառակուսի արմատ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Վերադարձնում է թվի բացարձակ արժեքը:"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Վերադարձնում է թվի աստիճանը։"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Վերադարձնում է թվի բնական լոգարիթմը:"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Վերադարձնում է թվի 10 հիմքով լոգարիթմը:"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Վերադարձնում է ժխտված թիվը:"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Վերադարձնում է 10֊ի նշված աստիճանը։"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Վերադարձնում է թվի քառակուսի աստիճանը"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://hy.wikipedia.org/wiki/Եռանկյունաչափական_ֆունկցիաներ"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Վերադարձնում է թվի արկկոսինուսը:"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Վերադարձնում է թվի արկսինուսը(աստիճաններով):"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Վերադարձնում է թվի արկտանգենսը:"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Վերադարձնում է անկյան կոսինուսը աստիճաններով (ոչ ռադիաններով):"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Վերադարձնում է անկյան սինուսը աստիճաններով(ոչ ռադիաններով):"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Վերադարձնում է անկյան տանգենսը աստիճաններով (ոչ ռադիաններով):"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ստեղծել գույնի փոփոխական"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ստեղծել թվային փոփոխական"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Ստեղծել տեքստային փոփոխական"; -Blockly.Msg["NEW_VARIABLE"] = "Ստեղծել փոփոխական..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Նոր փոփոխականի անունը՝"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Փոփոխականի նոր տիպ"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "թույլատրել արտահայտությունները"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "պարամետրերի ցանկ՝"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Կատարում է %1 ֆունկցիան"; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Կատարում է '%1' ֆունկցիան և օգտագործում դրա արդյունքը։"; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "պարամետրերի ցանկ՝"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ստեղծել '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Նկարագրիր այս ֆունկցիան..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "կատարել որևէ բան"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ֆունկցիա"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ստեղծում է ֆունկցիա, որը արժեք չի վերադարձնում:"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "վերադարձնել"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ստեղծում է ֆունկցիա, որը վերադարձնում է արժեք:"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Զգուշացում։ Այս ֆունկցիան ունի կրկնվող պարամտերեր։"; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Ընդգծել ֆունկցիայի հայտարարումը"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Եթե արժեքը ճշմարիտ է, վերադարձնում է երկորդ արժեքը:"; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ֆունկցիայի սահմանման ներսում:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "մուտքի անուն՝"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ֆունկցիային ավելալցնել մուտք (պարամետր)։"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "մուտքեր"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Ավելացնել, հեռացնել կամ վերադասավորել է այս ֆունկցիայի մուտքերը (պարամետրերը)։"; -Blockly.Msg["REDO"] = "Կրկին անել"; -Blockly.Msg["REMOVE_COMMENT"] = "Հեռացնել մեկնաբանությունը"; -Blockly.Msg["RENAME_VARIABLE"] = "Վերանվանել փոփոխականը..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "%1֊ին կցել %2 տեքստը"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Կցել տեքստ '%1' փոփոխականին"; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "բերել փոքրատառերի"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "բերել Սկզբնա Մեծատառերի"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "բերել ՄԵԾԱՏԱՌԵՐԻ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Վերադարձնում է տեքստի կրկնօրինակը, ՄԵԾԱՏԱՌԵՐՈՎ կամ փոքրատառերով"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "վերցնել առաջին տառը"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "վերցնել տառ № վերջից"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "վերցնել տառ №"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "վերցնել վերջին տառը"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "վերցնել պատահական տառ"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "տեքստում %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Վերադարձնում է նշված դիրքի տառը"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "հաշվել %1 %2֊ում"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Հաշվել, թե քանի անգամ է տեքստը հանդիպում մեկ այլ տեքստի մեջ։"; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ավելացնել էլեմենտ տեքստին:"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "կցել"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Այս տեքստային բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հերթականությունը"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "մինչև # տառը, վերջից"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "մինչև # տառը"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "մինչև վերջին տառը"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "տեքստում"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "տալիս է ենթատող առաջին տառից"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "տալիս է ենթատող # տառից սկսած, վերջից"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "տալիս է ենթատող սկսելով # տառից"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Վերադարձնում է տեքստի նշված մասը։"; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "գտնել տեքստի առաջին հանդիպումը"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "գտնել տեքստի վերջին հանդիպումը"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "Տեքստում %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Վերադարձնում է առաջին տեքստի հանդիպման առաջին (կամ վերջին) դիրքը երկրորդ տեքստում։ Վերադարձնում է %1, եթե տեքստը չի գտնվել։"; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 -ը դատարկ է"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Վերադարձնում է ճշմարիտ արժեք, եթե տրամադրված տեքստը դատարկ է:"; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ստեղծել տեքստ"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ստեղծում է տեքստի մաս՝ միմյանց կցելով ցանկացած քանակությամբ տարրեր:"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 -ի երկարությունը"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Վերադարձնում է տրված տեքստի տառերի քանակը (ներառյալ բացատները)"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "տպել %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Տպում է նշված տեքստը, թիվը կամ այլ արժեք․"; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Հարցնել թիվ օգտատիրոջից։"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Հարցնել տեքստ օգտատիրոջից։"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "հացնել թիվ, հուշումով"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "հարցնել տեքստ, հուշումով"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "փոխարինել %1֊ը %2֊ով %3֊ում"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Փոխարինել տեքստի բոլոր գտնված տարբերակները մեկ այլ տեսքով։"; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "շրջել %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Փոխում է տեքստում տառերի հաջորդականությունը։"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Տառ, բառ կամ տեքստի տող:"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "կտրում է բացատները երկու կողմերից"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "կտրում է բացատները ձախ կողմից"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "կտրում է բացատները աջ կողմից"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Վերադարձնում է տեքստի կրկնօրինակը, առանց սկզբի կամ/և վերջի բացատների։"; -Blockly.Msg["TODAY"] = "Այսօր"; -Blockly.Msg["UNDO"] = "Հետ շրջել"; -Blockly.Msg["UNNAMED_KEY"] = "անանուն"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "տարր"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ստեղծել 'վերագրել %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Վերադարձնում է այս փոփոխականի արժեքը:"; -Blockly.Msg["VARIABLES_SET"] = "վերագրել %1֊ին %2 արժեքը"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "ստեղծել 'ստանալ %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Փոփոխականին վերագրում է ներմուծված արժեքը։"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' անունով փոփոխական արդեն գոյություն ունի"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' անունով փոփոխական արդեն գոյություն ունի այլ տիպի համար: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Մի բան ասա ․․․"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ավելացնել մեկնաբանություն"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Հնարավոր չի ջնջել %1 փոփոխականը, որովհետև այն '%2' ֆունկցիայի հայտարարման մասն է"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Փոխել նշանակություն:"; +Blockly.Msg["CLEAN_UP"] = "Մաքրել բլոկները"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Քանդել բլոկները"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Կրճատել բլոկը"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "գույն 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "գույն 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "հարաբերակցություն"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "խառնել"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Խառնում է երկու գույները միմյանց հետ տրված հարաբերակցությամբ (0.0 - 1.0):"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://hy.wikipedia.org/wiki/Գույն"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Ընտրիր գույն ներկապնակից:"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "պատահական գույն"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Ընտրում է գույն պատահականության սկզբունքով:"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "կապույտ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "կանաչ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "կարմիր"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "գույնը"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ստեղծում է գույն կարմիրի, կանաչի և կապույտի նշված քանակություններով: Բոլոր արժեքները պետք է լինեն 0-ի և 100-ի միջև:"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "դուրս գալ ցիկլից"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "անցնել կրկնության հաջորդ կատարմանը"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Դադարեցնում է տվյալ կրկնությունը"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Դադարեցնում կրկնության մնացած մասը և անցնում է հաջորդ քայլին։"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ցիկլի ներսում:"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "յուրաքանչյուր %1 էլեմենտի համար %2 ցանկից"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Ցանկի յուրաքանչյուր անդամի արժեքը վերագրում է '%1' փոփոխականին և կատարում նշված հրամանները։"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "հաշվել %1-ը, %2֊ից մինչև %3, քայլը %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "'%1' փոփոխականին վերագրում է արժեքներ, սկսելով նախնական արժեքից, տրված քայլով և կատարում է նշված հրամանները"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ավելացնում է պայման «եթե» բլոկին:"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ավելացնել վերջնական ենթաբլոկ (այն կաշխատի, եթե բոլոր պայմանները կեղծ են)"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ավելացնել, հեռացնել կամ փոխել հերթականությունը այս \"եթե\" բլոկը վերակարգավորելու համար։"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "հակառակ դեպքում"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "հակառակ դեպքում, եթե"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "եթե"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Եթե պայմանը ճշմարիտ է, կատարում է որոշ հրահանգներ:"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Եթե պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում կատարում է հրահանգների երկրորդ բլոկը:"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը:"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը: Եթե պայմաններից ոչ մեկը ճշմարիտ չեն, ապա կատարում է հրահանգների վերջին բլոկը:"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "կատարել"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "կրկնել %1 անգամ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Կատարում է որոշ հրահանգներ մի քանի անգամ:"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "կրկնել, քանի դեռ չի"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "կրկնել, քանի դեռ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Քանի դեռ արժեքը կեղծ է, կատարում է որոշակի հրահանգներ:"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Քանի դեռ արժեքը ճշմարիտ է, կատարում է հրահանգները:"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ջնջե՞լ բոլոր %1 բլոկները:"; +Blockly.Msg["DELETE_BLOCK"] = "Ջնջել բլոկը"; +Blockly.Msg["DELETE_VARIABLE"] = "Հեռացնել '%1' փոփոխականը"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ջնջե՞լ '%2' փոփոխականի %1 կիրառությունները"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Ջնջել %1 բլոկ"; +Blockly.Msg["DIALOG_CANCEL"] = "Չեղարկել"; +Blockly.Msg["DIALOG_OK"] = "Լավ"; +Blockly.Msg["DISABLE_BLOCK"] = "Անջատել բլոկը"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Պատճենել"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Կրկնօրինակել մեկնաբանությունը"; +Blockly.Msg["ENABLE_BLOCK"] = "Միացնել բլոկը"; +Blockly.Msg["EXPAND_ALL"] = "Բացել բլոկները"; +Blockly.Msg["EXPAND_BLOCK"] = "Բացել բլոկը"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Արտաքին մուտքեր"; +Blockly.Msg["HELP"] = "Օգնություն"; +Blockly.Msg["INLINE_INPUTS"] = "Գծային մուտք"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ստեղծել դատարկ ցանկ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Վերադարձնում է 0 երկարությամբ ցանկ, որը տվյալներ չի պարունակում:"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ցանկ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Այս ցանկ բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հաջորդականությունը։"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ստեղծել ցանկ"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ավելացնել տարր ցանկին:"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ստեղծում է ցանկ ցանկացած քանակությամբ տվյալներով:"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "առաջինը"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ վերջից"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "վերցնել"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "վերցնել և հեռացնել"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "վերջինը"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "պատահական"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "հեռացնել"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Վերադարձնում է ցանկի առաջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Վերադարձնում է ցանկի վերջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Վերադարձնում է ցանկի պատահական տարր:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Հեռացնում և վերադարձնում է ցանկի առաջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Հեռացնում և վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Հեռացնում և վերադարձնում է ցանկի վերջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Հեռացնում և վերադարձնում է ցանկի պատահական տարր:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Հեռացնում է ցանկի առաջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Ցանկից հեռացնում է նշված դիրքում գտնվող անդամը։"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Հեռացնում է ցանկի վերջին տարրը:"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Հեռացնում է ցանկից պատահական տարր:"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "մինչև # վերջից"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "մինչև #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "մինչև վերջ"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "վերցնել ենթա֊ցանկ սկզբից"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "վերցնել ենթացանկ, սկսած # վերջից"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "վերցնել ենթացանկ, սկսած #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ստեղծում է ցանկի նշված մասի պատճենը։"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 վերջին տարրն է:"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 առաջին տարրն է:"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "գտնել անդամի առաջին հանդիպման դիրքը"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "գտնել անդամի վերջին հանդիպման դիրքը"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Վերադարձնում է ցանկում անդամի առաջին/վերջին հանդիպման դիրքը։ Վերադարձնում է %1, եթե անդամը չի գտնվել։"; +Blockly.Msg["LISTS_INLIST"] = "ցանկում"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 դատարկ է"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Վերադարձնում է \"ճշմարիտ\" եթե ցանկը դատարկ է։"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1֊ի երկարությունը"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Վերադարձնում է ցանկի երկարությունը:"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ստեղծել ցանկ, %1 արժեքը կրկնելով %2 անգամ"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Տրված արժեքը նշված քանակով կրկնելու միջոցով, ստեղծում է ցանկ։"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "շրջել %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Շրջում է ցանկի պատճենը։"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "որպես"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ներմուծել"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "դնել"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ներմուծում է անդամը ցանկի սկզբում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ներմուծում է անդամը ցանկի նշված դիրքում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ավելացնում է անդամ ցանկի վերջում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ներմուծում է անդամը ցանկի պատահական դիրքում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Սահմանում է ցանկի առաջին տարրը:"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Տեղադրում է անդամը ցանկի նշված դիրքում։"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Սահմանում է ցանկի վերջին տարրը:"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Սահմանում է ցանկից պատահական տարր:"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "աճման կարգ"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "նվազման կարգ"; +Blockly.Msg["LISTS_SORT_TITLE"] = "դասավորել %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Դասավորում է ցանկի պատճենը"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "այբենական, անտեսել ռեգիստրը"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "թվային կարգ"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "այբբենական կարգ"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ստեղծել ցանկ տեքստից"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ստեղծել տեքստ ցանկից"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ցանկից ստեղծվում է միացյալ տեքստ, ցանկի անդամները միացվում են բաժանարարներով։"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Տեքստը վեր է ածվում ցանկի, նշված բաժանարարով։"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "բաժանարարով"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "կեղծ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Վերադարձնում է ճշմարիտ կամ կեղծ արժեք:"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ճշմարիտ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://hy.wikipedia.org/wiki/Անհավասարություն"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար են միմյանց:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ է երկրորդից:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ կամ հավասար է երկրորդին:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից առաջինը փոքր է երկրորդից:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը փոքր կամ հավասար է երկրորդին:"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար չեն միմյանց:"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ոչ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքը կեղծ է: Վերադարձնում է կեղծ արժեք, եթե մուտքը ճշմարիտ է:"; +Blockly.Msg["LOGIC_NULL"] = "ոչինչ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Վերադարձնում է null (ոչինչ)"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "և"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "կամ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ ճշմարիտ են:"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից գոնե մեկը ճշմարիտ է:"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ստուգում"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "եթե կեղծ է"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "եթե ճշմարիտ է"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Ստուգում է ընտրության պայմանը։ Եթե այն ճշմարիտ է, վերադարձնում է առաջին արժեքը, հակառակ դեպքում ՝ երկրորդը։"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://hy.wikipedia.org/wiki/Թվաբանություն"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Վերադարձնում է երկու թվերի գումարը:"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Վերադարձնում է քանորդը"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Վերադարձնում է երկու թվերի տարբերությունը:"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Վերադարձնում է երկու թվերի արտադրյալը"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Վերադարձնում է առաջին թիվի աստիճանը"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 ֊ի atan2֊ը"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Վերադարձնում է (X, Y) կետի արկտանգենսը աստիճաններով -180-ից մինչև 180:"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "փոխել %1-ի արժեքը %2֊ով"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ավելացնում է թիվ %1 փոփոխականին:"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://hy.wikipedia.org/wiki/Մաթեմատիկական_հաստատուն"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Վերադարձնում է տարածված հաստատուններից մեկը՝ π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), կամ ∞ (անվերջություն):"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "սահմանափակել %1֊ը %2֊ի և %3֊ի միջև"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Սահմանափակել թիվը երկու արժեքներով (ներառյալ)"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "բաժանվում է"; +Blockly.Msg["MATH_IS_EVEN"] = "զույգ է"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "բացասական է"; +Blockly.Msg["MATH_IS_ODD"] = "կենտ է"; +Blockly.Msg["MATH_IS_POSITIVE"] = "դրական է"; +Blockly.Msg["MATH_IS_PRIME"] = "պարզ է"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Ստուգում է, թե թիվը զույգ է, կենտ է, պարզ է, ամբողջ է, դրական է, բացասական է կամ թե այն բաժանվում է որոշակի թվի վրա: Վերադարձնում է ճշմարիտ կամ կեղծ:"; +Blockly.Msg["MATH_IS_WHOLE"] = "ամբողջ է"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "%1֊ի և %2֊ի բաժանման մնացորդը"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Վերադարձնում է երկու թվերի բաժանման մնացորդը:"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://hy.wikipedia.org/wiki/Թիվ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Թիվ"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ցանկի միջինը"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ցանկի առավելագույնը"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ցանկի միջնարժեք"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ցանկի նվազագույնը"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ցանկի մոդան"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ցանկի պատահական տարր"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ցանկի ստանդարտ շեղում"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ցանկի գումարը"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Վերադարձնում է ցանկում գտնվող արժեքների թվաբանական միջինը"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Վերադարձնում է ցանկի արժեքներից առավելագույնը"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Վերադարձնում է ցանկի միջնարժեք:"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Վերադարձնում է ցանկի արժեքներից նվազագույնը"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Վերադարձնում է ցանկի առավել հաճախ հանդիպող անդամների ցանկը։"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Վերադարձնում է պատահական տարր ցանկից:"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Վերադարձնում է ցանկի ստանդարտ շեղումը:"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Վերադարձնում է ցանկի բոլոր թվերի գումարը:"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Պատահական_թվերի_գեներատոր"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "պատահական կոտորակ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Վերադարձնում է պատահական թիվ 0.0-ից (ներառյալ) 1.0 միջակայքից:"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "պատահական ամբողջ թիվ %1 -ից %2 -ը"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Վերադարձնում է պատահական ամբողջ թիվ տրված երկու թվերի միջև (ներառյալ):"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Կլորացում"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "կլորացնել"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "կլորացնել ցած"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "կլորացնել վեր"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Կլորացնում է թիվը վերև կամ ներքև:"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "բացարձակ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Քառակուսի արմատ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Վերադարձնում է թվի բացարձակ արժեքը:"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Վերադարձնում է թվի աստիճանը։"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Վերադարձնում է թվի բնական լոգարիթմը:"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Վերադարձնում է թվի 10 հիմքով լոգարիթմը:"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Վերադարձնում է ժխտված թիվը:"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Վերադարձնում է 10֊ի նշված աստիճանը։"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Վերադարձնում է թվի քառակուսի աստիճանը"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://hy.wikipedia.org/wiki/Եռանկյունաչափական_ֆունկցիաներ"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Վերադարձնում է թվի արկկոսինուսը:"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Վերադարձնում է թվի արկսինուսը(աստիճաններով):"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Վերադարձնում է թվի արկտանգենսը:"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Վերադարձնում է անկյան կոսինուսը աստիճաններով (ոչ ռադիաններով):"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Վերադարձնում է անկյան սինուսը աստիճաններով(ոչ ռադիաններով):"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Վերադարձնում է անկյան տանգենսը աստիճաններով (ոչ ռադիաններով):"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ստեղծել գույնի փոփոխական"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ստեղծել թվային փոփոխական"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ստեղծել տեքստային փոփոխական"; +Blockly.Msg["NEW_VARIABLE"] = "Ստեղծել փոփոխական..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Նոր փոփոխականի անունը՝"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Փոփոխականի նոր տիպ"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "թույլատրել արտահայտությունները"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "պարամետրերի ցանկ՝"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Կատարում է %1 ֆունկցիան"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Կատարում է '%1' ֆունկցիան և օգտագործում դրա արդյունքը։"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "պարամետրերի ցանկ՝"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ստեղծել '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Նկարագրիր այս ֆունկցիան..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "կատարել որևէ բան"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ֆունկցիա"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ստեղծում է ֆունկցիա, որը արժեք չի վերադարձնում:"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "վերադարձնել"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ստեղծում է ֆունկցիա, որը վերադարձնում է արժեք:"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Զգուշացում։ Այս ֆունկցիան ունի կրկնվող պարամտերեր։"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Ընդգծել ֆունկցիայի հայտարարումը"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Եթե արժեքը ճշմարիտ է, վերադարձնում է երկորդ արժեքը:"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ֆունկցիայի սահմանման ներսում:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "մուտքի անուն՝"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ֆունկցիային ավելալցնել մուտք (պարամետր)։"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "մուտքեր"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Ավելացնել, հեռացնել կամ վերադասավորել է այս ֆունկցիայի մուտքերը (պարամետրերը)։"; +Blockly.Msg["REDO"] = "Կրկին անել"; +Blockly.Msg["REMOVE_COMMENT"] = "Հեռացնել մեկնաբանությունը"; +Blockly.Msg["RENAME_VARIABLE"] = "Վերանվանել փոփոխականը..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1֊ին կցել %2 տեքստը"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Կցել տեքստ '%1' փոփոխականին"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "բերել փոքրատառերի"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "բերել Սկզբնա Մեծատառերի"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "բերել ՄԵԾԱՏԱՌԵՐԻ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Վերադարձնում է տեքստի կրկնօրինակը, ՄԵԾԱՏԱՌԵՐՈՎ կամ փոքրատառերով"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "վերցնել առաջին տառը"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "վերցնել տառ № վերջից"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "վերցնել տառ №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "վերցնել վերջին տառը"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "վերցնել պատահական տառ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "տեքստում %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Վերադարձնում է նշված դիրքի տառը"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "հաշվել %1 %2֊ում"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Հաշվել, թե քանի անգամ է տեքստը հանդիպում մեկ այլ տեքստի մեջ։"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ավելացնել էլեմենտ տեքստին:"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "կցել"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Այս տեքստային բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հերթականությունը"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "մինչև # տառը, վերջից"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "մինչև # տառը"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "մինչև վերջին տառը"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "տեքստում"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "տալիս է ենթատող առաջին տառից"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "տալիս է ենթատող # տառից սկսած, վերջից"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "տալիս է ենթատող սկսելով # տառից"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Վերադարձնում է տեքստի նշված մասը։"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "գտնել տեքստի առաջին հանդիպումը"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "գտնել տեքստի վերջին հանդիպումը"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "Տեքստում %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Վերադարձնում է առաջին տեքստի հանդիպման առաջին (կամ վերջին) դիրքը երկրորդ տեքստում։ Վերադարձնում է %1, եթե տեքստը չի գտնվել։"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 -ը դատարկ է"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Վերադարձնում է ճշմարիտ արժեք, եթե տրամադրված տեքստը դատարկ է:"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ստեղծել տեքստ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ստեղծում է տեքստի մաս՝ միմյանց կցելով ցանկացած քանակությամբ տարրեր:"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 -ի երկարությունը"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Վերադարձնում է տրված տեքստի տառերի քանակը (ներառյալ բացատները)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "տպել %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Տպում է նշված տեքստը, թիվը կամ այլ արժեք․"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Հարցնել թիվ օգտատիրոջից։"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Հարցնել տեքստ օգտատիրոջից։"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "հացնել թիվ, հուշումով"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "հարցնել տեքստ, հուշումով"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "փոխարինել %1֊ը %2֊ով %3֊ում"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Փոխարինել տեքստի բոլոր գտնված տարբերակները մեկ այլ տեսքով։"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "շրջել %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Փոխում է տեքստում տառերի հաջորդականությունը։"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Տառ, բառ կամ տեքստի տող:"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "կտրում է բացատները երկու կողմերից"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "կտրում է բացատները ձախ կողմից"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "կտրում է բացատները աջ կողմից"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Վերադարձնում է տեքստի կրկնօրինակը, առանց սկզբի կամ/և վերջի բացատների։"; +Blockly.Msg["TODAY"] = "Այսօր"; +Blockly.Msg["UNDO"] = "Հետ շրջել"; +Blockly.Msg["UNNAMED_KEY"] = "անանուն"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "տարր"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ստեղծել 'վերագրել %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Վերադարձնում է այս փոփոխականի արժեքը:"; +Blockly.Msg["VARIABLES_SET"] = "վերագրել %1֊ին %2 արժեքը"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "ստեղծել 'ստանալ %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Փոփոխականին վերագրում է ներմուծված արժեքը։"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' անունով փոփոխական արդեն գոյություն ունի"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' անունով փոփոխական արդեն գոյություն ունի այլ տիպի համար: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Մի բան ասա ․․․"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ia.js b/msg/js/ia.js index a241cf4ad3e..69b265b4646 100644 --- a/msg/js/ia.js +++ b/msg/js/ia.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Adder commento"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Impossibile deler le variabile '%1' perque illo face parte del definition del function '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar valor:"; -Blockly.Msg["CLEAN_UP"] = "Rangiar le blocos"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blocos plicate contine advertimentos."; -Blockly.Msg["COLLAPSE_ALL"] = "Plicar blocos"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Plicar bloco"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ration"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "miscer"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Misce duo colores con un ration specificate (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ia.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Elige un color del paletta."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatori"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Eliger un color al hasardo."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "rubie"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colorar con"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crear un color con le quantitate specificate de rubie, verde e blau. Tote le valores debe esser inter 0 e 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "escappar del bucla"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar con le proxime iteration del bucla"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Escappar del bucla continente."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Saltar le resto de iste bucla e continuar con le proxime iteration."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Attention: Iste bloco pote solmente esser usate in un bucla."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pro cata elemento %1 in lista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pro cata elemento in un lista, mitter lo in le variabile '%1' e exequer certe instructiones."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar con %1 de %2 a %3 per %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Mitter in le variabile '%1' le valores ab le numero initial usque al numero final, con passos secundo le intervallo specificate, e exequer le blocos specificate."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Adder un condition al bloco \"si\"."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Adder un condition final de reserva al bloco \"si\"."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Adde, remove o reordina sectiones pro reconfigurar iste bloco \"si\"."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "si non"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "si non si"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor es ver, exequer certe instructiones."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor es ver, exequer le prime bloco de instructiones. Si non, exequer le secunde bloco de instructiones."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones. Si necun del valores es ver, exequer le ultime bloco de instructiones."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ia.wikipedia.org/wiki/Bucla_for"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "face"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeter %1 vices"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Exequer certe instructiones plure vices."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeter usque a"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeter durante que"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Durante que un valor es false, exequer certe instructiones."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Durante que un valor es ver, exequer certe instructiones."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Deler tote le %1 blocos?"; -Blockly.Msg["DELETE_BLOCK"] = "Deler bloco"; -Blockly.Msg["DELETE_VARIABLE"] = "Deler le variabile '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Deler %1 usos del variabile '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Deler %1 blocos"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancellar"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Disactivar bloco"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar commento"; -Blockly.Msg["ENABLE_BLOCK"] = "Activar bloco"; -Blockly.Msg["EXPAND_ALL"] = "Displicar blocos"; -Blockly.Msg["EXPAND_BLOCK"] = "Displicar bloco"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Entrata externe"; -Blockly.Msg["HELP"] = "Adjuta"; -Blockly.Msg["INLINE_INPUTS"] = "Entrata interne"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear un lista vacue"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna un lista, de longitude 0, sin datos."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Adde, remove o reordina sectiones pro reconfigurar iste bloco de listas."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear lista con"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Adder un elemento al lista."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crear un lista con un numero qualcunque de elementos."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prime"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ ab fin"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "prender"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "prender e remover"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ultime"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatori"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remover"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna le prime elemento in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna le elemento presente al position specificate in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna le ultime elemento in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna un elemento aleatori in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Remove e retorna le prime elemento in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Remove e retorna le elemento presente al position specificate in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Remove e retorna le ultime elemento in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Remove e retorna un elemento aleatori in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Remove le prime elemento in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Remove le elemento presente al position specificate in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Remove le ultime elemento in un lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Remove un elemento aleatori in un lista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "usque al № ab fin"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "usque al №"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "usque al ultime"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "prender sublista ab initio"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "prender sublista ab № a partir del fin"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "prender sublista ab №"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea un copia del parte specificate de un lista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es le ultime elemento."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es le prime elemento."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "cercar le prime occurrentia del elemento"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "cercar le ultime occurrentia del elemento"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna le indice del prime/ultime occurrentia del elemento in le lista. Retorna %1 si le elemento non es trovate."; -Blockly.Msg["LISTS_INLIST"] = "in lista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 es vacue"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retorna ver si le lista es vacue."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitude de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna le longitude de un lista."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "crear lista con elemento %1 repetite %2 vices"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea un lista que contine le valor fornite, repetite le numero specificate de vices."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverter %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverter un copia de un lista."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "a"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserer in"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "mitter"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insere le elemento al initio de un lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insere le elemento al position specificate in un lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Adjunge le elemento al fin de un lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insere le elemento a un position aleatori in un lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Defini le valor del prime elemento in un lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Defini le valor del elemento al position specificate in un lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Defini le valor del ultime elemento in un lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Defini le valor de un elemento aleatori in un lista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; -Blockly.Msg["LISTS_SORT_TITLE"] = "ordinamento %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordinar un copia de un lista."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignorar majuscula/minuscula"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "crear lista ab texto"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "crear texto ab lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Unir un lista de textos, separate per un delimitator, in un sol texto."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Divider texto in un lista de textos, separante lo a cata delimitator."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con delimitator"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna o ver o false."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ver"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ia.wikipedia.org/wiki/Inequalitate_(mathematica)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retornar ver si le duo entratas es equal."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retornar ver si le prime entrata es major que le secunde."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retornar ver si le prime entrata es major que o equal al secunde."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retornar ver si le prime entrata es minor que le secunde."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retornar ver si le prime entrata es minor que o equal al secunde."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retornar ver si le duo entratas non es equal."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retornar ver si le entrata es false. Retornar false si le entrata es ver."; -Blockly.Msg["LOGIC_NULL"] = "nulle"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nulle."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retornar ver si ambe entratas es ver."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retornar ver si al minus un del entratas es ver."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si false"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si ver"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Verificar le condition in 'test'. Si le condition es ver, retorna le valor de 'si ver'; si non, retorna le valor de 'si false'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ia.wikipedia.org/wiki/Arithmetica"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retornar le summa del duo numeros."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retornar le quotiente del duo numeros."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retornar le differentia del duo numeros."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retornar le producto del duo numeros."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retornar le prime numero elevate al potentia del secunde numero."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Retornar le arco tangente del puncto (X, Y) in grados de -180 a 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "cambiar %1 per %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Adder un numero al variabile '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ia.wikipedia.org/wiki/Constante_mathematic"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retornar un del constantes commun: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…) o ∞ (infinite)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limitar %1 inter %2 e %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limitar un numero a esser inter le limites specificate (incluse)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "es divisibile per"; -Blockly.Msg["MATH_IS_EVEN"] = "es par"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "es negative"; -Blockly.Msg["MATH_IS_ODD"] = "es impare"; -Blockly.Msg["MATH_IS_POSITIVE"] = "es positive"; -Blockly.Msg["MATH_IS_PRIME"] = "es prime"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Verificar si un numero es par, impare, prime, integre, positive, negative, o divisibile per un certe numero. Retorna ver o false."; -Blockly.Msg["MATH_IS_WHOLE"] = "es integre"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "resto de %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retornar le resto del division del duo numeros."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ia.wikipedia.org/wiki/Numero"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un numero."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media del lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximo del lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana del lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimo del lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modas del lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "elemento aleatori del lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviation standard del lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa del lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retornar le media arithmetic del valores numeric in le lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retornar le numero le plus grande in le lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retornar le numero median del lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retornar le numero le plus parve in le lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retornar un lista del elemento(s) le plus commun in le lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retornar un elemento aleatori del lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retornar le deviation standard del lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retornar le summa de tote le numeros in le lista."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraction aleatori"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Retornar un fraction aleatori inter 0.0 (incluse) e 1.0 (excluse)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "numero integre aleatori inter %1 e %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retornar un numero integre aleatori inter le duo limites specificate, incluse."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ia.wikipedia.org/wiki/Rotundamento"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrotundar"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrotundar a infra"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrotundar a supra"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrotundar un numero a supra o a infra."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ia.wikipedia.org/wiki/Radice_quadrate"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "radice quadrate"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retornar le valor absolute de un numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retornar e elevate al potentia de un numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retornar le logarithmo natural de un numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retornar le logarithmo in base 10 de un numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retornar le negation de un numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retornar 10 elevate al potentia de un numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retornar le radice quadrate de un numero."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retornar le arcocosino de un numero."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retornar le arcosino de un numero."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retornar le arcotangente de un numero."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retornar le cosino de un grado (non radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retornar le sino de un grado (non radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retornar le tangente de un grado (non radiano)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear variabile de color..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crear variabile numeric..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear variabile textual..."; -Blockly.Msg["NEW_VARIABLE"] = "Crear variabile..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nomine del nove variabile:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nove typo de variabile:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitter declarationes"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executar le function '%1' definite per le usator."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executar le function '%1' definite per le usator e usar su resultato."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe iste function..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "facer qualcosa"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "pro"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea un function que non retorna un valor."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retornar"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea un function que retorna un valor."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Attention: Iste function ha parametros duplicate."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Accentuar le definition del function"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si un valor es ver, alora retornar un secunde valor."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Attention: Iste bloco pote solmente esser usate in le definition de un function."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nomine del entrata:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adder un entrata al function."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entratas"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adder, remover o reordinar le entratas pro iste function."; -Blockly.Msg["REDO"] = "Refacer"; -Blockly.Msg["REMOVE_COMMENT"] = "Remover commento"; -Blockly.Msg["RENAME_VARIABLE"] = "Renominar variabile..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renominar tote le variabiles '%1' a:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 adjunger texto %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Adjunger un texto al variabile '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "in minusculas"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "con Initiales Majuscule"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "in MAJUSCULAS"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retornar un copia del texto con differente majusculas/minusculas."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "prender le prime littera"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "prender ab le fin le littera №"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "prender le littera №"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "prender le ultime littera"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "prender un littera aleatori"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in le texto %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Retorna le littera presente al position specificate."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "contar %1 in %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Contar quante vices un texto occurre intra un altere texto."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Adder un elemento al texto."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Adde, remove o reordina sectiones pro reconfigurar iste bloco de texto."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ab le fin usque al littera №"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "usque al littera №"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "usque al ultime littera"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in le texto"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "prender subcatena ab le prime littera"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "prender subcatena ab le fin ab le littera №"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "prender subcatena ab le littera №"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Retorna le parte specificate del texto."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "cercar le prime occurrentia del texto"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "cercar le ultime occurrentia del texto"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in le texto %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna le indice del prime/ultime occurrentia del prime texto in le secunde texto. Retorna %1 si le texto non es trovate."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 es vacue"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna ver si le texto fornite es vacue."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear texto con"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crear un pecia de texto uniente un certe numero de elementos."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "longitude de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Retorna le numero de litteras (incluse spatios) in le texto fornite."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "scriber %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Scriber le texto, numero o altere valor specificate."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Peter un numero al usator."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Peter un texto al usator."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "peter un numero con le message"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "peter un texto con le message"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "reimplaciar %1 per %2 in %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Reimplaciar tote le occurrentias de un texto intra un altere texto."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverter %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverte le ordine del characteres in le texto."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Un littera, parola o linea de texto."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "remover spatios de ambe lateres de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "remover spatios del sinistre latere de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "remover spatios del dextre latere de"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retornar un copia del texto con spatios eliminate de un extremitate o ambes."; -Blockly.Msg["TODAY"] = "Hodie"; -Blockly.Msg["UNDO"] = "Disfacer"; -Blockly.Msg["UNNAMED_KEY"] = "sin nomine"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "cosa"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crea 'mitter %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna le valor de iste variabile."; -Blockly.Msg["VARIABLES_SET"] = "mitter %1 a %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'prender %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Mitte iste variabile al valor del entrata."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Un variabile con le nomine '%1' jam existe."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Un variabile con le nomine '%1' jam existe pro un altere typo: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Spatio de travalio de Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Dice qualcosa..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Adder commento"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Impossibile deler le variabile '%1' perque illo face parte del definition del function '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Cambiar valor:"; +Blockly.Msg["CLEAN_UP"] = "Rangiar le blocos"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blocos plicate contine advertimentos."; +Blockly.Msg["COLLAPSE_ALL"] = "Plicar blocos"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Plicar bloco"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ration"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "miscer"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Misce duo colores con un ration specificate (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ia.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Elige un color del paletta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatori"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Eliger un color al hasardo."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rubie"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorar con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crear un color con le quantitate specificate de rubie, verde e blau. Tote le valores debe esser inter 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "escappar del bucla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar con le proxime iteration del bucla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Escappar del bucla continente."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Saltar le resto de iste bucla e continuar con le proxime iteration."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Attention: Iste bloco pote solmente esser usate in un bucla."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pro cata elemento %1 in lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pro cata elemento in un lista, mitter lo in le variabile '%1' e exequer certe instructiones."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar con %1 de %2 a %3 per %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Mitter in le variabile '%1' le valores ab le numero initial usque al numero final, con passos secundo le intervallo specificate, e exequer le blocos specificate."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Adder un condition al bloco \"si\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Adder un condition final de reserva al bloco \"si\"."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Adde, remove o reordina sectiones pro reconfigurar iste bloco \"si\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "si non"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "si non si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor es ver, exequer certe instructiones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor es ver, exequer le prime bloco de instructiones. Si non, exequer le secunde bloco de instructiones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones. Si necun del valores es ver, exequer le ultime bloco de instructiones."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ia.wikipedia.org/wiki/Bucla_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "face"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeter %1 vices"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Exequer certe instructiones plure vices."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeter usque a"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeter durante que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Durante que un valor es false, exequer certe instructiones."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Durante que un valor es ver, exequer certe instructiones."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Deler tote le %1 blocos?"; +Blockly.Msg["DELETE_BLOCK"] = "Deler bloco"; +Blockly.Msg["DELETE_VARIABLE"] = "Deler le variabile '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Deler %1 usos del variabile '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Deler %1 blocos"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancellar"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disactivar bloco"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar commento"; +Blockly.Msg["ENABLE_BLOCK"] = "Activar bloco"; +Blockly.Msg["EXPAND_ALL"] = "Displicar blocos"; +Blockly.Msg["EXPAND_BLOCK"] = "Displicar bloco"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entrata externe"; +Blockly.Msg["HELP"] = "Adjuta"; +Blockly.Msg["INLINE_INPUTS"] = "Entrata interne"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear un lista vacue"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna un lista, de longitude 0, sin datos."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Adde, remove o reordina sectiones pro reconfigurar iste bloco de listas."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear lista con"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Adder un elemento al lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crear un lista con un numero qualcunque de elementos."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prime"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ ab fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "prender"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "prender e remover"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ultime"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatori"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remover"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna le prime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna le elemento presente al position specificate in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna le ultime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna un elemento aleatori in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Remove e retorna le prime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Remove e retorna le elemento presente al position specificate in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Remove e retorna le ultime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Remove e retorna un elemento aleatori in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Remove le prime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Remove le elemento presente al position specificate in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Remove le ultime elemento in un lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Remove un elemento aleatori in un lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "usque al № ab fin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "usque al №"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "usque al ultime"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "prender sublista ab initio"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "prender sublista ab № a partir del fin"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "prender sublista ab №"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea un copia del parte specificate de un lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es le ultime elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es le prime elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "cercar le prime occurrentia del elemento"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "cercar le ultime occurrentia del elemento"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna le indice del prime/ultime occurrentia del elemento in le lista. Retorna %1 si le elemento non es trovate."; +Blockly.Msg["LISTS_INLIST"] = "in lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 es vacue"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retorna ver si le lista es vacue."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitude de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna le longitude de un lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "crear lista con elemento %1 repetite %2 vices"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea un lista que contine le valor fornite, repetite le numero specificate de vices."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverter un copia de un lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "a"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserer in"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "mitter"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insere le elemento al initio de un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insere le elemento al position specificate in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Adjunge le elemento al fin de un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insere le elemento a un position aleatori in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Defini le valor del prime elemento in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Defini le valor del elemento al position specificate in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Defini le valor del ultime elemento in un lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Defini le valor de un elemento aleatori in un lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordinamento %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordinar un copia de un lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignorar majuscula/minuscula"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "crear lista ab texto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "crear texto ab lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Unir un lista de textos, separate per un delimitator, in un sol texto."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Divider texto in un lista de textos, separante lo a cata delimitator."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con delimitator"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna o ver o false."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ver"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ia.wikipedia.org/wiki/Inequalitate_(mathematica)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retornar ver si le duo entratas es equal."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retornar ver si le prime entrata es major que le secunde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retornar ver si le prime entrata es major que o equal al secunde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retornar ver si le prime entrata es minor que le secunde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retornar ver si le prime entrata es minor que o equal al secunde."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retornar ver si le duo entratas non es equal."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retornar ver si le entrata es false. Retornar false si le entrata es ver."; +Blockly.Msg["LOGIC_NULL"] = "nulle"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nulle."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retornar ver si ambe entratas es ver."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retornar ver si al minus un del entratas es ver."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si false"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si ver"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Verificar le condition in 'test'. Si le condition es ver, retorna le valor de 'si ver'; si non, retorna le valor de 'si false'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ia.wikipedia.org/wiki/Arithmetica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retornar le summa del duo numeros."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retornar le quotiente del duo numeros."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retornar le differentia del duo numeros."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retornar le producto del duo numeros."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retornar le prime numero elevate al potentia del secunde numero."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Retornar le arco tangente del puncto (X, Y) in grados de -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "cambiar %1 per %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Adder un numero al variabile '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ia.wikipedia.org/wiki/Constante_mathematic"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retornar un del constantes commun: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…) o ∞ (infinite)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limitar %1 inter %2 e %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limitar un numero a esser inter le limites specificate (incluse)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "es divisibile per"; +Blockly.Msg["MATH_IS_EVEN"] = "es par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "es negative"; +Blockly.Msg["MATH_IS_ODD"] = "es impare"; +Blockly.Msg["MATH_IS_POSITIVE"] = "es positive"; +Blockly.Msg["MATH_IS_PRIME"] = "es prime"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verificar si un numero es par, impare, prime, integre, positive, negative, o divisibile per un certe numero. Retorna ver o false."; +Blockly.Msg["MATH_IS_WHOLE"] = "es integre"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "resto de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retornar le resto del division del duo numeros."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ia.wikipedia.org/wiki/Numero"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un numero."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximo del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimo del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modas del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "elemento aleatori del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviation standard del lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa del lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retornar le media arithmetic del valores numeric in le lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retornar le numero le plus grande in le lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retornar le numero median del lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retornar le numero le plus parve in le lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retornar un lista del elemento(s) le plus commun in le lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retornar un elemento aleatori del lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retornar le deviation standard del lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retornar le summa de tote le numeros in le lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraction aleatori"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Retornar un fraction aleatori inter 0.0 (incluse) e 1.0 (excluse)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "numero integre aleatori inter %1 e %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retornar un numero integre aleatori inter le duo limites specificate, incluse."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ia.wikipedia.org/wiki/Rotundamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrotundar"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrotundar a infra"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrotundar a supra"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrotundar un numero a supra o a infra."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ia.wikipedia.org/wiki/Radice_quadrate"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "radice quadrate"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retornar le valor absolute de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retornar e elevate al potentia de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retornar le logarithmo natural de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retornar le logarithmo in base 10 de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retornar le negation de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retornar 10 elevate al potentia de un numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retornar le radice quadrate de un numero."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retornar le arcocosino de un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retornar le arcosino de un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retornar le arcotangente de un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retornar le cosino de un grado (non radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retornar le sino de un grado (non radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retornar le tangente de un grado (non radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear variabile de color..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crear variabile numeric..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear variabile textual..."; +Blockly.Msg["NEW_VARIABLE"] = "Crear variabile..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nomine del nove variabile:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nove typo de variabile:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitter declarationes"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executar le function '%1' definite per le usator."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executar le function '%1' definite per le usator e usar su resultato."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe iste function..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "facer qualcosa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "pro"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea un function que non retorna un valor."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retornar"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea un function que retorna un valor."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Attention: Iste function ha parametros duplicate."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Accentuar le definition del function"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si un valor es ver, alora retornar un secunde valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Attention: Iste bloco pote solmente esser usate in le definition de un function."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nomine del entrata:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adder un entrata al function."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entratas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adder, remover o reordinar le entratas pro iste function."; +Blockly.Msg["REDO"] = "Refacer"; +Blockly.Msg["REMOVE_COMMENT"] = "Remover commento"; +Blockly.Msg["RENAME_VARIABLE"] = "Renominar variabile..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renominar tote le variabiles '%1' a:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 adjunger texto %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Adjunger un texto al variabile '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "in minusculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "con Initiales Majuscule"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "in MAJUSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retornar un copia del texto con differente majusculas/minusculas."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "prender le prime littera"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "prender ab le fin le littera №"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "prender le littera №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "prender le ultime littera"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "prender un littera aleatori"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in le texto %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Retorna le littera presente al position specificate."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "contar %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Contar quante vices un texto occurre intra un altere texto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Adder un elemento al texto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Adde, remove o reordina sectiones pro reconfigurar iste bloco de texto."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ab le fin usque al littera №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "usque al littera №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "usque al ultime littera"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in le texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "prender subcatena ab le prime littera"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "prender subcatena ab le fin ab le littera №"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "prender subcatena ab le littera №"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Retorna le parte specificate del texto."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "cercar le prime occurrentia del texto"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "cercar le ultime occurrentia del texto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in le texto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna le indice del prime/ultime occurrentia del prime texto in le secunde texto. Retorna %1 si le texto non es trovate."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 es vacue"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna ver si le texto fornite es vacue."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear texto con"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crear un pecia de texto uniente un certe numero de elementos."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longitude de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Retorna le numero de litteras (incluse spatios) in le texto fornite."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "scriber %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Scriber le texto, numero o altere valor specificate."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Peter un numero al usator."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Peter un texto al usator."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "peter un numero con le message"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "peter un texto con le message"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "reimplaciar %1 per %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Reimplaciar tote le occurrentias de un texto intra un altere texto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverte le ordine del characteres in le texto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Un littera, parola o linea de texto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "remover spatios de ambe lateres de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "remover spatios del sinistre latere de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "remover spatios del dextre latere de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retornar un copia del texto con spatios eliminate de un extremitate o ambes."; +Blockly.Msg["TODAY"] = "Hodie"; +Blockly.Msg["UNDO"] = "Disfacer"; +Blockly.Msg["UNNAMED_KEY"] = "sin nomine"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "cosa"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crea 'mitter %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna le valor de iste variabile."; +Blockly.Msg["VARIABLES_SET"] = "mitter %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'prender %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Mitte iste variabile al valor del entrata."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Un variabile con le nomine '%1' jam existe."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Un variabile con le nomine '%1' jam existe pro un altere typo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Spatio de travalio de Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Dice qualcosa..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/id.js b/msg/js/id.js index 5fc26f70b17..2e5718bc918 100644 --- a/msg/js/id.js +++ b/msg/js/id.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Tambahkan Komentar"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Tidak bisa menghapus variabel '%1' karena variabel ini bagian dari sebuah definisi dari fungsi '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ubah nilai:"; -Blockly.Msg["CLEAN_UP"] = "Bersihkan Blok"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blok yang diciutkan memiliki peringatan."; -Blockly.Msg["COLLAPSE_ALL"] = "Ciutkan Blok"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Ciutkan Blok"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "warna 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "warna 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "rasio"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "campur"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Campur dua warna secara bersamaan dengan perbandingan (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Pilih warna dari daftar warna."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "Warna acak"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Pilih warna secara acak."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "biru"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "hijau"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "merah"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "Dengan warna"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Buatlah warna dengan jumlah yang ditentukan dari merah, hijau dan biru. Semua nilai harus antarai 0 sampai 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "keluar dari perulangan"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "lanjutkan dengan langkah perulangan berikutnya"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Keluar dari perulangan."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Abaikan sisa dari perulangan ini, dan lanjutkan dengan langkah berikutnya."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Peringatan: Blok ini hanya dapat digunakan dalam perulangan."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "untuk setiap item %1 di dalam list %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Untuk tiap-tiap item di dalam list, tetapkan variabel '%1' ke dalam item, selanjutnya kerjakan beberapa statement."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "Cacah dengan %1 dari %2 ke %3 dengan step / penambahan %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Menggunakan variabel \"%1\" dengan mengambil nilai dari batas awal hingga ke batas akhir, dengan interval tertentu, dan mengerjakan block tertentu."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tambahkan prasyarat ke dalam blok IF."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Terakhir, tambahkan kondisi tangkap-semua kedalam blok IF."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tambahkan, hapus, atau susun kembali bagian untuk mengkonfigurasi blok IF ini."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "lainnya"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "atau jika"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jika"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jika nilainya benar, maka lakukan beberapa perintah."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jika nilainya benar, maka kerjakan perintah blok pertama. Jika tidak, kerjakan perintah blok kedua."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua. Jika dua-duanya tidak benar, kerjakan perintah blok terakhir."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "kerjakan"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulangi %1 kali"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Lakukan beberapa perintah beberapa kali."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulangi sampai"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ulangi jika"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Selagi nilainya salah, maka lakukan beberapa perintah."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Selagi nilainya benar, maka lakukan beberapa perintah."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hapus semua %1 blok?"; -Blockly.Msg["DELETE_BLOCK"] = "Hapus Blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Hapus variabel '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Hapus %1 yang digunakan pada variabel '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Hapus %1 Blok"; -Blockly.Msg["DIALOG_CANCEL"] = "Batal"; -Blockly.Msg["DIALOG_OK"] = "Oke"; -Blockly.Msg["DISABLE_BLOCK"] = "Nonaktifkan Blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikat"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplikat Komentar"; -Blockly.Msg["ENABLE_BLOCK"] = "Aktifkan Blok"; -Blockly.Msg["EXPAND_ALL"] = "Kembangkan Blok"; -Blockly.Msg["EXPAND_BLOCK"] = "Kembangkan Blok"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Input Eksternal"; -Blockly.Msg["HELP"] = "Bantuan"; -Blockly.Msg["INLINE_INPUTS"] = "Input Inline"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "buat list kosong"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Kembalikan list, dengan panjang 0, tidak berisi data"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tambahkan, hapus, atau susun ulang bagian untuk mengkonfigurasi blok list ini."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "buat list dengan"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tambahkan sebuah item ke list."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Buat sebuah list dengan sejumlah item."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pertama"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dari akhir"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "dapatkan"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "dapatkan dan hapus"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "terakhir"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "acak"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "Hapus"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Kembalikan item pertama dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Kembalikan item di posisi tertentu dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Kembalikan item terakhir dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Kembalikan item acak dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Hapus dan kembalikan item pertama dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Hapus dan kembalikan item di posisi tertentu dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Hapus dan kembalikan item terakhir dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Hapus dan kembalikan item acak dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Hapus item pertama dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Hapus item di posisi tertentu dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Hapus item terakhir dalam list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Hapus sebuah item acak dalam list."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ke # dari akhir"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ke #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ke yang paling akhir"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "dapatkan sub-list dari pertama"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "dapatkan sub-list dari nomor # dari akhir"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "dapatkan sub-list dari #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Buat salinan bagian tertentu dari list."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 adalah item terakhir."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 adalah item pertama."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "cari kejadian pertama item"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "cari kejadian terakhir item"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Kembalikan indeks dari item pertama/terakhir kali muncul dalam list. Kembalikan %1 jika item tidak ditemukan."; -Blockly.Msg["LISTS_INLIST"] = "dalam list"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 kosong"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika list kosong."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "panjang dari %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Kembalikan panjang list."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "buat list dengan item %1 diulang %2 kali"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Buat sebuah list yang terdiri dari nilai yang diberikan diulang sebanyak jumlah yang ditentukan."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "balikkan %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Balikkan salinan dari daftar."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sebagai"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "sisipkan di"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "tetapkan"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Sisipkan item di bagian awal dari list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Sisipkan item ke dalam posisi yang telah ditentukan di dalam list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Tambahkan item ke bagian akhir list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Sisipkan item secara acak ke dalam list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Tetapkan item pertama di dalam list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Tetapkan item ke dalam posisi yang telah ditentukan di dalam list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Menetapkan item terakhir dalam list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Tetapkan secara acak sebuah item dalam list."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "menaik"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "menurun"; -Blockly.Msg["LISTS_SORT_TITLE"] = "urutkan %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Urutkan salinan dari daftar"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "sesuai abjad, abaikan kasus"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "sesuai nomor"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "sesuai abjad"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "buat list dari teks"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "buat teks dari list"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Gabung daftar teks menjadi satu teks, yang dipisahkan oleh pembatas."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Membagi teks ke dalam daftar teks, pisahkan pada setiap pembatas."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "dengan pembatas"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "salah"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Kembalikan benar atau salah."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "benar"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Kembalikan benar jika kedua input sama satu dengan lainnya."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Kembalikan benar jika input pertama lebih besar dari input kedua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Kembalikan benar jika input pertama lebih besar dari atau sama dengan input kedua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Kembalikan benar jika input pertama lebih kecil dari input kedua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Kembalikan benar jika input pertama lebih kecil atau sama dengan input kedua ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Kembalikan benar jika kedua input tidak sama satu dengan lainnya."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "bukan (not) %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Kembalikan benar jika input salah. Kembalikan salah jika input benar."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Kembalikan null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "dan"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "atau"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Kembalikan benar jika kedua input adalah benar."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Kembalikan benar jika minimal satu input nilainya benar."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jika salah"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jika benar"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Periksa kondisi di 'test'. Jika kondisi benar, kembalikan nilai 'if true'; jika sebaliknya kembalikan nilai 'if false'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://id.wikipedia.org/wiki/Aritmetika"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Kembalikan jumlah dari kedua angka."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Kembalikan hasil bagi dari kedua angka."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Kembalikan selisih dari kedua angka."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Kembalikan perkalian dari kedua angka."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Kembalikan angka pertama pangkat angka kedua."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Kembalikan arctangen titik (X, Y) dalam derajat dari -180 hingga 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "ubah %1 oleh %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Tambahkan angka kedalam variabel '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Kembalikan salah satu konstanta: π (3,141…), e (2,718…), φ (1,618…), akar(2) (1,414…), akar(½) (0.707…), atau ∞ (tak terhingga)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "Batasi %1 rendah %2 tinggi %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Batasi angka antara batas yang ditentukan (inklusif)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "dapat dibagi oleh"; -Blockly.Msg["MATH_IS_EVEN"] = "adalah bilangan genap"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "adalah bilangan negatif"; -Blockly.Msg["MATH_IS_ODD"] = "adalah bilangan ganjil"; -Blockly.Msg["MATH_IS_POSITIVE"] = "adalah bilangan positif"; -Blockly.Msg["MATH_IS_PRIME"] = "adalah bilangan pokok"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Periksa apakah angka adalah bilangan genap, bilangan ganjil, bilangan pokok, bilangan bulat, bilangan positif, bilangan negatif, atau apakan bisa dibagi oleh angka tertentu. Kembalikan benar atau salah."; -Blockly.Msg["MATH_IS_WHOLE"] = "adalah bilangan bulat"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "sisa dari %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Kembalikan sisa dari pembagian ke dua angka."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Suatu angka."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "rata-rata dari list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum dari list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median dari list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum dari list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mode-mode dari list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "item acak dari list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviasi standar dari list"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "jumlah dari list"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Kembalikan rata-rata (mean aritmetik) dari nilai numerik dari list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Kembalikan angka terbesar dari list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Kembalikan median dari list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Kembalikan angka terkecil dari list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Kembalikan list berisi item yang paling umum dari dalam list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Kembalikan elemen acak dari list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Kembalikan standard deviasi dari list."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Kembalikan jumlah dari seluruh bilangan dari list."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "nilai pecahan acak"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Kembalikan nilai pecahan acak antara 0.0 (inklusif) dan 1.0 (eksklusif)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "acak bulat dari %1 sampai %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Kembalikan bilangan acak antara dua batas yang ditentukan, inklusif."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "membulatkan"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "membulatkan kebawah"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "membulatkan keatas"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Bulatkan suatu bilangan naik atau turun."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "mutlak"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "akar"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Kembalikan nilai absolut angka."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Kembalikan 10 pangkat angka."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Kembalikan logaritma natural dari angka."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Kembalikan dasar logaritma 10 dari angka."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Kembalikan penyangkalan terhadap angka."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Kembalikan 10 pangkat angka."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Kembalikan akar dari angka."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Kembalikan acosine dari angka."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Kembalikan asin dari angka."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Kembalikan atan dari angka."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kembalikan cosinus dari derajat (bukan radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Kembalikan sinus dari derajat (bukan radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Kembalikan tangen dari derajat (bukan radian)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Buat variabel warna..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Buat variabel number..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Buat variabel string..."; -Blockly.Msg["NEW_VARIABLE"] = "Buat variabel..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nama variabel baru:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipe variabel baru:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "memungkinkan pernyataan"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "dengan:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Menjalankan fungsi '%1' yang ditetapkan pengguna."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Menjalankan fungsi '%1' yang ditetapkan pengguna dan menggunakan outputnya."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "dengan:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Buat '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Jelaskan fungsi ini..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "buat sesuatu"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "untuk"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Buat sebuah fungsi tanpa output."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "kembali"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Buat sebuah fungsi dengan satu output."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Peringatan: Fungsi ini memiliki parameter duplikat."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sorot definisi fungsi"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jika nilai yang benar, kemudian kembalikan nilai kedua."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Peringatan: Blok ini dapat digunakan hanya dalam definisi fungsi."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "masukan Nama:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tambahkan masukan ke fungsi."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "input"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Menambah, menghapus, atau menyusun ulang masukan untuk fungsi ini."; -Blockly.Msg["REDO"] = "Lakukan ulang"; -Blockly.Msg["REMOVE_COMMENT"] = "Hapus Komentar"; -Blockly.Msg["RENAME_VARIABLE"] = "Ubah nama variabel..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Ubah nama semua variabel '%1' menjadi:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "untuk %1 tambahkan teks %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tambahkan beberapa teks ke variabel '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "menjadi huruf kecil"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "menjadi huruf pertama kapital"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "menjadi huruf kapital"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Kembalikan kopi dari text dengan kapitalisasi yang berbeda."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "ambil huruf pertama"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ambil huruf nomor # dari belakang"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "ambil huruf ke #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "ambil huruf terakhir"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ambil huruf secara acak"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "dalam teks %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Kembalikan karakter dari posisi tertentu."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "hitung %1 dalam %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Hitung berapa banyak teks muncul dalam teks lain."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Tambahkan suatu item ke dalam teks."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tambah, ambil, atau susun ulang teks blok."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "pada huruf nomer # dari terakhir"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "pada huruf #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "pada huruf terakhir"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in teks"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ambil bagian teks (substring) dari huruf pertama"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "ambil bagian teks (substring) dari huruf ke # dari terakhir"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "ambil bagian teks (substring) dari huruf no #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Kembalikan spesifik bagian dari teks."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "temukan kejadian pertama dalam teks"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "temukan kejadian terakhir dalam teks"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "dalam teks %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Kembalikan indeks pertama dan terakhir dari kejadian pertama/terakhir dari teks pertama dalam teks kedua. Kembalikan %1 jika teks tidak ditemukan."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 kosong"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika teks yang disediakan kosong."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "buat teks dengan"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Buat teks dengan cara gabungkan sejumlah item."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "panjang dari %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Kembalikan sejumlah huruf (termasuk spasi) dari teks yang disediakan."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "cetak %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Cetak teks yant ditentukan, angka atau ninlai lainnya."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Meminta pengguna untuk memberi sebuah angka."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Meminta pengguna untuk memberi beberapa teks."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Meminta angka dengan pesan"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "meminta teks dengan pesan"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "ganti %1 dengan %2 dalam %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ganti semua kemunculan teks dalam teks lain."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "balikkan %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Balikkan urutan huruf dalam teks."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Huruf, kata atau baris teks."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "pangkas ruang dari kedua belah sisi"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "pangkas ruang dari sisi kiri"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "pangkas ruang dari sisi kanan"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Kembali salinan teks dengan spasi dihapus dari satu atau kedua ujungnya."; -Blockly.Msg["TODAY"] = "Hari ini"; -Blockly.Msg["UNDO"] = "Urungkan"; -Blockly.Msg["UNNAMED_KEY"] = "tanpa nama"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Buat 'set %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Kembalikan nilai variabel ini."; -Blockly.Msg["VARIABLES_SET"] = "tetapkan %1 untuk %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Buat 'get %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "tetapkan variabel ini dengan input yang sama."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Sebuah variabel dengan nama '%1' sudah ada."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Variabel yg bernama '%1' sudah ada untuk tipe lain: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Ruang Kerja Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Ucapkan sesuatu..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Tambahkan Komentar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Tidak bisa menghapus variabel '%1' karena variabel ini bagian dari sebuah definisi dari fungsi '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ubah nilai:"; +Blockly.Msg["CLEAN_UP"] = "Bersihkan Blok"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blok yang diciutkan memiliki peringatan."; +Blockly.Msg["COLLAPSE_ALL"] = "Ciutkan Blok"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Ciutkan Blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "warna 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "warna 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "rasio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "campur"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Campur dua warna secara bersamaan dengan perbandingan (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Pilih warna dari daftar warna."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "Warna acak"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Pilih warna secara acak."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "biru"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "hijau"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "merah"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Dengan warna"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Buatlah warna dengan jumlah yang ditentukan dari merah, hijau dan biru. Semua nilai harus antarai 0 sampai 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "keluar dari perulangan"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "lanjutkan dengan langkah perulangan berikutnya"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Keluar dari perulangan."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Abaikan sisa dari perulangan ini, dan lanjutkan dengan langkah berikutnya."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Peringatan: Blok ini hanya dapat digunakan dalam perulangan."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "untuk setiap item %1 di dalam list %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Untuk tiap-tiap item di dalam list, tetapkan variabel '%1' ke dalam item, selanjutnya kerjakan beberapa statement."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "Cacah dengan %1 dari %2 ke %3 dengan step / penambahan %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Menggunakan variabel \"%1\" dengan mengambil nilai dari batas awal hingga ke batas akhir, dengan interval tertentu, dan mengerjakan block tertentu."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tambahkan prasyarat ke dalam blok IF."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Terakhir, tambahkan kondisi tangkap-semua kedalam blok IF."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tambahkan, hapus, atau susun kembali bagian untuk mengkonfigurasi blok IF ini."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "lainnya"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "atau jika"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jika"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jika nilainya benar, maka lakukan beberapa perintah."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jika nilainya benar, maka kerjakan perintah blok pertama. Jika tidak, kerjakan perintah blok kedua."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua. Jika dua-duanya tidak benar, kerjakan perintah blok terakhir."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "kerjakan"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulangi %1 kali"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Lakukan beberapa perintah beberapa kali."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulangi sampai"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ulangi jika"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Selagi nilainya salah, maka lakukan beberapa perintah."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Selagi nilainya benar, maka lakukan beberapa perintah."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hapus semua %1 blok?"; +Blockly.Msg["DELETE_BLOCK"] = "Hapus Blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Hapus variabel '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Hapus %1 yang digunakan pada variabel '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Hapus %1 Blok"; +Blockly.Msg["DIALOG_CANCEL"] = "Batal"; +Blockly.Msg["DIALOG_OK"] = "Oke"; +Blockly.Msg["DISABLE_BLOCK"] = "Nonaktifkan Blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplikat Komentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktifkan Blok"; +Blockly.Msg["EXPAND_ALL"] = "Kembangkan Blok"; +Blockly.Msg["EXPAND_BLOCK"] = "Kembangkan Blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Input Eksternal"; +Blockly.Msg["HELP"] = "Bantuan"; +Blockly.Msg["INLINE_INPUTS"] = "Input Inline"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "buat list kosong"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Kembalikan list, dengan panjang 0, tidak berisi data"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tambahkan, hapus, atau susun ulang bagian untuk mengkonfigurasi blok list ini."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "buat list dengan"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tambahkan sebuah item ke list."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Buat sebuah list dengan sejumlah item."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pertama"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dari akhir"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "dapatkan"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "dapatkan dan hapus"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "terakhir"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "acak"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "Hapus"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Kembalikan item pertama dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Kembalikan item di posisi tertentu dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Kembalikan item terakhir dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Kembalikan item acak dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Hapus dan kembalikan item pertama dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Hapus dan kembalikan item di posisi tertentu dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Hapus dan kembalikan item terakhir dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Hapus dan kembalikan item acak dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Hapus item pertama dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Hapus item di posisi tertentu dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Hapus item terakhir dalam list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Hapus sebuah item acak dalam list."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ke # dari akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ke #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ke yang paling akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "dapatkan sub-list dari pertama"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "dapatkan sub-list dari nomor # dari akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "dapatkan sub-list dari #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Buat salinan bagian tertentu dari list."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 adalah item terakhir."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 adalah item pertama."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "cari kejadian pertama item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "cari kejadian terakhir item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Kembalikan indeks dari item pertama/terakhir kali muncul dalam list. Kembalikan %1 jika item tidak ditemukan."; +Blockly.Msg["LISTS_INLIST"] = "dalam list"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 kosong"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika list kosong."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "panjang dari %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Kembalikan panjang list."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "buat list dengan item %1 diulang %2 kali"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Buat sebuah list yang terdiri dari nilai yang diberikan diulang sebanyak jumlah yang ditentukan."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "balikkan %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Balikkan salinan dari daftar."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sebagai"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "sisipkan di"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "tetapkan"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Sisipkan item di bagian awal dari list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Sisipkan item ke dalam posisi yang telah ditentukan di dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Tambahkan item ke bagian akhir list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Sisipkan item secara acak ke dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Tetapkan item pertama di dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Tetapkan item ke dalam posisi yang telah ditentukan di dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Menetapkan item terakhir dalam list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Tetapkan secara acak sebuah item dalam list."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "menaik"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "menurun"; +Blockly.Msg["LISTS_SORT_TITLE"] = "urutkan %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Urutkan salinan dari daftar"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "sesuai abjad, abaikan kasus"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "sesuai nomor"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "sesuai abjad"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "buat list dari teks"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "buat teks dari list"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Gabung daftar teks menjadi satu teks, yang dipisahkan oleh pembatas."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Membagi teks ke dalam daftar teks, pisahkan pada setiap pembatas."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "dengan pembatas"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "salah"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Kembalikan benar atau salah."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "benar"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Kembalikan benar jika kedua input sama satu dengan lainnya."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Kembalikan benar jika input pertama lebih besar dari input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Kembalikan benar jika input pertama lebih besar dari atau sama dengan input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Kembalikan benar jika input pertama lebih kecil dari input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Kembalikan benar jika input pertama lebih kecil atau sama dengan input kedua ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Kembalikan benar jika kedua input tidak sama satu dengan lainnya."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "bukan (not) %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Kembalikan benar jika input salah. Kembalikan salah jika input benar."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Kembalikan null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "dan"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "atau"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Kembalikan benar jika kedua input adalah benar."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Kembalikan benar jika minimal satu input nilainya benar."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jika salah"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jika benar"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Periksa kondisi di 'test'. Jika kondisi benar, kembalikan nilai 'if true'; jika sebaliknya kembalikan nilai 'if false'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://id.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Kembalikan jumlah dari kedua angka."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Kembalikan hasil bagi dari kedua angka."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Kembalikan selisih dari kedua angka."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Kembalikan perkalian dari kedua angka."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Kembalikan angka pertama pangkat angka kedua."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Kembalikan arctangen titik (X, Y) dalam derajat dari -180 hingga 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "ubah %1 oleh %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Tambahkan angka kedalam variabel '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Kembalikan salah satu konstanta: π (3,141…), e (2,718…), φ (1,618…), akar(2) (1,414…), akar(½) (0.707…), atau ∞ (tak terhingga)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "Batasi %1 rendah %2 tinggi %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Batasi angka antara batas yang ditentukan (inklusif)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "dapat dibagi oleh"; +Blockly.Msg["MATH_IS_EVEN"] = "adalah bilangan genap"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "adalah bilangan negatif"; +Blockly.Msg["MATH_IS_ODD"] = "adalah bilangan ganjil"; +Blockly.Msg["MATH_IS_POSITIVE"] = "adalah bilangan positif"; +Blockly.Msg["MATH_IS_PRIME"] = "adalah bilangan pokok"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Periksa apakah angka adalah bilangan genap, bilangan ganjil, bilangan pokok, bilangan bulat, bilangan positif, bilangan negatif, atau apakan bisa dibagi oleh angka tertentu. Kembalikan benar atau salah."; +Blockly.Msg["MATH_IS_WHOLE"] = "adalah bilangan bulat"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "sisa dari %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Kembalikan sisa dari pembagian ke dua angka."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Suatu angka."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "rata-rata dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mode-mode dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "item acak dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviasi standar dari list"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "jumlah dari list"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Kembalikan rata-rata (mean aritmetik) dari nilai numerik dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Kembalikan angka terbesar dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Kembalikan median dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Kembalikan angka terkecil dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Kembalikan list berisi item yang paling umum dari dalam list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Kembalikan elemen acak dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Kembalikan standard deviasi dari list."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Kembalikan jumlah dari seluruh bilangan dari list."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "nilai pecahan acak"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Kembalikan nilai pecahan acak antara 0.0 (inklusif) dan 1.0 (eksklusif)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "acak bulat dari %1 sampai %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Kembalikan bilangan acak antara dua batas yang ditentukan, inklusif."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "membulatkan"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "membulatkan kebawah"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "membulatkan keatas"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Bulatkan suatu bilangan naik atau turun."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "mutlak"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "akar"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Kembalikan nilai absolut angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Kembalikan 10 pangkat angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Kembalikan logaritma natural dari angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Kembalikan dasar logaritma 10 dari angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Kembalikan penyangkalan terhadap angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Kembalikan 10 pangkat angka."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Kembalikan akar dari angka."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Kembalikan acosine dari angka."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Kembalikan asin dari angka."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Kembalikan atan dari angka."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kembalikan cosinus dari derajat (bukan radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Kembalikan sinus dari derajat (bukan radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Kembalikan tangen dari derajat (bukan radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Buat variabel warna..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Buat variabel number..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Buat variabel string..."; +Blockly.Msg["NEW_VARIABLE"] = "Buat variabel..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nama variabel baru:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipe variabel baru:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "memungkinkan pernyataan"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "dengan:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Menjalankan fungsi '%1' yang ditetapkan pengguna."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Menjalankan fungsi '%1' yang ditetapkan pengguna dan menggunakan outputnya."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "dengan:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Buat '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Jelaskan fungsi ini..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "buat sesuatu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "untuk"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Buat sebuah fungsi tanpa output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "kembali"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Buat sebuah fungsi dengan satu output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Peringatan: Fungsi ini memiliki parameter duplikat."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sorot definisi fungsi"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jika nilai yang benar, kemudian kembalikan nilai kedua."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Peringatan: Blok ini dapat digunakan hanya dalam definisi fungsi."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "masukan Nama:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tambahkan masukan ke fungsi."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "input"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Menambah, menghapus, atau menyusun ulang masukan untuk fungsi ini."; +Blockly.Msg["REDO"] = "Lakukan ulang"; +Blockly.Msg["REMOVE_COMMENT"] = "Hapus Komentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Ubah nama variabel..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Ubah nama semua variabel '%1' menjadi:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "untuk %1 tambahkan teks %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tambahkan beberapa teks ke variabel '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "menjadi huruf kecil"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "menjadi huruf pertama kapital"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "menjadi huruf kapital"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Kembalikan kopi dari text dengan kapitalisasi yang berbeda."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ambil huruf pertama"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ambil huruf nomor # dari belakang"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "ambil huruf ke #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "ambil huruf terakhir"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ambil huruf secara acak"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "dalam teks %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Kembalikan karakter dari posisi tertentu."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "hitung %1 dalam %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Hitung berapa banyak teks muncul dalam teks lain."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Tambahkan suatu item ke dalam teks."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tambah, ambil, atau susun ulang teks blok."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "pada huruf nomer # dari terakhir"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "pada huruf #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "pada huruf terakhir"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in teks"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ambil bagian teks (substring) dari huruf pertama"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "ambil bagian teks (substring) dari huruf ke # dari terakhir"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "ambil bagian teks (substring) dari huruf no #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Kembalikan spesifik bagian dari teks."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "temukan kejadian pertama dalam teks"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "temukan kejadian terakhir dalam teks"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "dalam teks %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Kembalikan indeks pertama dan terakhir dari kejadian pertama/terakhir dari teks pertama dalam teks kedua. Kembalikan %1 jika teks tidak ditemukan."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 kosong"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika teks yang disediakan kosong."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "buat teks dengan"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Buat teks dengan cara gabungkan sejumlah item."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "panjang dari %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Kembalikan sejumlah huruf (termasuk spasi) dari teks yang disediakan."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "cetak %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Cetak teks yant ditentukan, angka atau ninlai lainnya."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Meminta pengguna untuk memberi sebuah angka."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Meminta pengguna untuk memberi beberapa teks."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Meminta angka dengan pesan"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "meminta teks dengan pesan"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "ganti %1 dengan %2 dalam %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ganti semua kemunculan teks dalam teks lain."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "balikkan %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Balikkan urutan huruf dalam teks."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Huruf, kata atau baris teks."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "pangkas ruang dari kedua belah sisi"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "pangkas ruang dari sisi kiri"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "pangkas ruang dari sisi kanan"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Kembali salinan teks dengan spasi dihapus dari satu atau kedua ujungnya."; +Blockly.Msg["TODAY"] = "Hari ini"; +Blockly.Msg["UNDO"] = "Urungkan"; +Blockly.Msg["UNNAMED_KEY"] = "tanpa nama"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Buat 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Kembalikan nilai variabel ini."; +Blockly.Msg["VARIABLES_SET"] = "tetapkan %1 untuk %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Buat 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "tetapkan variabel ini dengan input yang sama."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Sebuah variabel dengan nama '%1' sudah ada."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Variabel yg bernama '%1' sudah ada untuk tipe lain: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Ruang Kerja Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Ucapkan sesuatu..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ig.js b/msg/js/ig.js index 470d97df364..d5cf57ed435 100644 --- a/msg/js/ig.js +++ b/msg/js/ig.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Tịnye okwu"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Agaghị ekpochapụlị agbanwe '%1' maka nsonye ya na nkọwa nke ọrụ ahụ '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Gbanwee akara:"; -Blockly.Msg["CLEAN_UP"] = "Hichapụ ngọngọ"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Kwada Ngọngọ"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Kwada Ngọngọ"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "agba 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "agba 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "oke"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ngwakọta"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Na ngwakọta agba abụọ ọnụ na na oke enyere (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Họrọ agba site na palette."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "agba ọbụla"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Họrọ agba na-nke ọbụla."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "bluu"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "akwụkwọ ndụ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "uhie"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "agba ya na"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Mepụta agba nwere ọnụ ọgụgụ kpọmkwem nke agba uhie, akwụkwọ ndụ, na akara niile ga-adịrịrị n'etiti 0 rụọ 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "gbapuo na meghachi a"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "malite na nsoghari nke meghachi ozo"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Gba puo na gburugburu nke ọdị n’ime ya."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Wụọ mkpụchị meghachi ndị a fọdụrụ, ma gaa n'ihu na nsoghari nke aka."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Ịdọ aka ná ntị: Enwere ike iji ngọngọ a naanị n'ime meghachi."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "maka ihe ọ bụla %1 n'ime ndepụta %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Maka ihe ọ bụla n'ime ndepụta, debe agbanwe '%1' na ihe ahụ, wee degharịa ụfọdụ koodu."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "gụọ na %1 site na %2 rụọ %3 tupu %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Nwere ngwakọta '%1' na akara ọbụla sịte na mbịdo ọnụọgụgụ rụọ na ngwụcha ọnụọgụgụ, na-ngụta sịtere na nkeji oge kpọmkwem. megharịa koodu oge ọbụla:"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tinye ọnọdụ na ngọngọ ma ọ bụrụ."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tinye ngwucha, ọnọdụ jide-niile na ngọngọ ma ọ bụrụ."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearịa nke a ma ọ bụrụ na ngọngọ."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ọzọ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ọzọ ma ọ bụrụ"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ọ bụrụ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ọ bụrụ na akara bụ ezịọkwụ, mezie ụfọdụ okwu."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ọ bụrụ na akara bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, mezie ngọngọ nke abụọ nke okwu."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu. Ọ bụrụ na onweghị akara bụ ezịọkwụ, mee ngọngọ okwu ikpeazụ."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "mee"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "meghachi ụgbọ %1"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Mee ụfọdụ okwu ọtụtụ ugboro."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "megharịa tụpụ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "megharịa mgbe"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Ọ bụ ebe akara bụ ụgha, megharịa ụfọdụ koodu."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Ọ bụ ebe akara bụ ezịọkwụ, megharịa ụfọdụ koodu."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Mkpọchi %1 ngọngọ niile?"; -Blockly.Msg["DELETE_BLOCK"] = "Kpochapụ Ngọngọ"; -Blockly.Msg["DELETE_VARIABLE"] = "Kpochapụ agbanwe ‘%1' ahu"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Kpochapụ %1 ojịjị nke agbanwe '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Kpochapụ %1 Ngọngọ"; -Blockly.Msg["DIALOG_CANCEL"] = "Hapụ̀"; -Blockly.Msg["DIALOG_OK"] = "Ọ DỊ MMA"; -Blockly.Msg["DISABLE_BLOCK"] = "Gbanyụọ Ngọngọ"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Ntụgharị"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Tụgharịa okwu"; -Blockly.Msg["ENABLE_BLOCK"] = "Gbanye Ngọngọ"; -Blockly.Msg["EXPAND_ALL"] = "Gbasaa Ngọngọ"; -Blockly.Msg["EXPAND_BLOCK"] = "Gbasaa Ngọngọ"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Ntinye Mpụta"; -Blockly.Msg["HELP"] = "Enyemaka"; -Blockly.Msg["INLINE_INPUTS"] = "Ntinye N'ahịrị"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "mepụta ndepụta efu"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Weghachite ndepụta, nke ogologo 0, nke enweghị ndekọ data"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ndepụta"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "mepụta ndepụta"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tinye ihe na ndepụta."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Mepụta ndepụta na nọmba ọ bụla."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "mbu"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# site na njedebe"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "nweta"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "nweta ma wepu"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ikpeazụ"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "nke ọ bụla"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "wepu"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Weghachitere ihe mbụ n'ime ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Weghachitere ihe na ọnọdụ a kapịrị ọnụ na ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Weghachitere ihe ikpeazụ n'ime ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Weghachitere ihe ọbụla n'ime ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Wepu ma weghachite ihe mbu na ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Wepu ma weghachite ihe na ọnọdụ a kapịrị ọnụ na ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Wepu ma weghachite ihe ikpeazụ n'ime ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Wepu ma weghachite ihe ọbụla n'ime ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Wepu ihe mbụ n'ime ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Wepu ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Wepu ihe ikpeazụ n'ime ndepụta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Wepu ihe ọbụla n'ime ndepụta."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "rụọ # site na njedebe"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "rụọ #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "rụọ na ngwụcha"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "nweta akụkụ ndepụta site na mbịdo"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "nweta akụkụ ndepụta site na # site na njedebe"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "nweta akụkụ ndepụta site na #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Na-emepụta otu akụkụ a kapịrị ọnụ nke ndepụta."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 bụ ihe ikpeazụ."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 bụ ihe mbụ."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "chọta ihe mbu nke ihe"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "chọta ihe ikpeazụ nke ihe"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe."; -Blockly.Msg["LISTS_INLIST"] = "n’ime ndepụta"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ghe oghe"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Weghachite eziokwu ma ọ bụrụ na ndepụta ahụ dị n’efu."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "ogo nke %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Weghachite ogo nke ndepụta."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "mepụta ndepụta na ihe %1 emegharịrị ugboro %2"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Na-emepụta listi ndepụta gụnyere akara a nyere ya ugboro ugboro."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "gbanwe %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Tụgharịa otu akụkụ ndepụta."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "dị ka"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "tinye na"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Na-etinye ihe ahụ na mmalite nke ndepụta."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Na-etinye ihe na ọnọdụ a kapịrị ọnụ na ndepụta."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Na-etinye ihe ahụ na ngwụcha nke ndepụta."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Na-etinye ihe ahụ na ebe ọbụla nke ndepụta."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Debe ihe mbụ n'ime ndepụta."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Debe ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Debe ihe ikpeazụ n'ime ndepụta."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Debe ihe ọbụla n'ime ndepụta."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "arịgo"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "agbada"; -Blockly.Msg["LISTS_SORT_TITLE"] = "hazie %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Tọọ otu akụkụ ndepụta ahụ."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "mkpụrụ edemede, leghara ọnọdụ anya"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "nọmba"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "mkpụrụ edemede"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "mee ndepụta site na ederede"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "mee ederede site na ndepụta"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Jikọọ ndepụta nke ederede gaa na otu ederede, nke oihe nkewa kewara."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Kewaa ederede n'ime ndepụta nke ederede, na-agbasa na ihe nkwea ọ bụla."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "na ihe nkewa"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ụgha"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Weghachitere ezịọkwụ ma ọ bụ ụgha."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ezịọkwụ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye hatara onwe ha."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ntinye nke abụọ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ma ọ bụ hatara ntinye nke abụọ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ntinye nke abụọ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ma ọ bụ hatara ntinye nke abụọ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye aghataghị onwe ha."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ma ọ bụghị %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Weghachitere ezịọkwụ ma ọ bụrụ na ntinye bụ ụgha. Weghachitere ụgha ma ọ bụrụ na ntinye bụ ezịọkwụ."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Weghachitere nkịtị."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ma"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ma ọ bụrụ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye abụọ a bụ ezịọkwụ."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Weghachi ezịọkwụ ma ọ bụrụ na ọdịkarịa ala otu n’ime ntinye a bụ ezịọkwụ."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ule"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ọ bụrụ ụgha"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ọ bụrụ na eziokwu"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Lelee ọnọdụ na 'ule'. Ọ bụrụ na ọnọdụ ahụ bụ eziokwu, weghachitere akara 'ọ bụrụ na eziokwu’; ma ọ bụghị ya weghachitere akara 'ọ bụrụ ụgha'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Weghachite ngụkọ ọnụ ọgụgụ abụọ ahụ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Weghachite kwenye ọnụ ọgụgụ abụọ ahụ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Weghachite nwepụ ọnụ ọgụgụ abụọ ahụ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Weghachite mụbaa ọnụ ọgụgụ abụọ ahụ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Weghachite nọmba mbu nke emeturu ike nke nọmba nke abụọ."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 nke X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Weghachite aktanjentị nke isi (X, Y) na ogo site na -180 rụọ 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "gbanwee %1 site na %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Tinye nọmba na agbanwe '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Weghachite otu n'ime kọnstant ndị nkịtị: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "gbochịe %1 ala %2 elu %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Gbochịe ọnụọgụgụ dị n'etiti nọmba dị oke ala na nọmba dị oke elu (gụnyere)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ga ekenwụ"; -Blockly.Msg["MATH_IS_EVEN"] = "bụ ịvụn"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "bụ negetịf"; -Blockly.Msg["MATH_IS_ODD"] = "bụ ọd"; -Blockly.Msg["MATH_IS_POSITIVE"] = "bu posịtịf"; -Blockly.Msg["MATH_IS_PRIME"] = "bụ praim"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Tụlee ma nọmba ọ bụ ịvụn, ọd, praim, zuru ezu, posịtịf, negetịf, ma e nwere nọmba ga ekenwu ya. Weghachitere eziokwu ma ọ bụ ụgha."; -Blockly.Msg["MATH_IS_WHOLE"] = "zuru ezu"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "ihe fọdụrụ nke %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Weghachite ihe fọdụrụ site na nkewa nọmba abụọ."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ọnụọgụgụ."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "agbaetiti nke ndepụta"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ọkacha ukwuu nke ndepụta"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "etiti nke ndepụta"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "opekempe nke ndepụta"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ụdị ndepụta"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Ihe ọbụla nke ndepụta"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ntughari usoro nke ndepụta"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "nchịkọta nke ndepụta"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Weghachite agbaetiti (nchịkọta mpụta) nke akara ọnụọgụ na ndepụta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Weghachite nọmba kacha ukwuu na ndepụta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Weghachite nọmba agbaetiti na ndepụta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Weghachite nọmba kacha obere na ndepụta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Weghachite ndepụta nke nke ihe kachasị mkpa na ndepụta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Weghachite Ihe ọbụla site na ndepụta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Weghachite ntughari usoro nke ndepụta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Weghachite nchịkọta nke nọmba niile na ndepụta."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "nkewa ọbụla"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Weghachite ọnụọgụgụ ọbụla dị n'etiti 0.0 (gụnyere) na 1.0 (agụnyeghị)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ọnụọgụgụ ọbụla site na %1 rụọ %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Weghachite ọnụọgụgụ ọbụla dị n'etiti ihe abụọ a kapịrị ọnụ, agụnyere."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "gbaarịa"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "gbatụọ ala"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "gbaago elu"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Gbaago nọmba n'elu ma ọ bụ ala."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ozụzụ"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Isi ngụkọ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Weghachite akara ozụzụ nke nọmba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Weghachite na ike nke nọmba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Weghachite lọgarịdịm nke di na nọmba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Weghachite isi lọgarịdịm 10 nke nọmba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Weghachite njụ nke nọmba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Weghachite 10 na ike nke nọmba."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Weghachite Isi ngụkọ nke nọmba."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Weghachite akosaịn nke nọmba."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Weghachite aksaịn nke nọmba."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Weghachite aktanjentị nke nọmba."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Weghachite kosaịn nke ogo (ọ bụghị redian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Weghachite saịn nke ogo (ọ bụghị redian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Weghachite tanjentị nke ogo (ọ bụghị redian)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Mepụta agba agbanwe..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Mepụta nọmba agbanwe..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Mepụta njikọ agbanwe..."; -Blockly.Msg["NEW_VARIABLE"] = "Mepụta agbanwe..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Aha agbanwe ọhụụ:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ụdị agbanwe ọhụụ:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "kwe ka okwu"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "na:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Gbaa ọrụ a kọwaa onye-ọrụ '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Gbaa ọrụ a kọwaa onye-ọrụ '%1' ma jiri mmepụta ya."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "na:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Mepụta '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Kọwaa ọrụ a..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "megharịa"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ga na"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Na emepụta ọrụ na-enweghị mmepụta."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "weghachite"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Na emepụta ọrụ nwere mmepụta."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Nkọwapụta njirimara ọrụ"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Weghachite akara nke agbanwe a."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "tinye aha:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tinye ntinye aka na ọrụ ahụ."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ntinye"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tinye, wepu, ma ọ bụ tugharịa ntinye na ọrụ a."; -Blockly.Msg["REDO"] = "Megharịa"; -Blockly.Msg["REMOVE_COMMENT"] = "Wepu okwu"; -Blockly.Msg["RENAME_VARIABLE"] = "Nyegharịa agbanwe aha..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Nyegharịa agbanwe '%1' nille ga:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "iji %1 tinye ederede %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tinye ederede na mgbanwee '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na ahịrị elu"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Aha Ahịrị"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na AHỊRỊ ELU"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "AA <-> aa"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "nweta akwụkwọ ozi mbu"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "nweta akwụkwọ ozi # site na njedebe"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "nweta akwụkwọ ozi #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "nweta akwụkwọ ozi ikpeazụ"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "nweta akwụkwọ ozi ọbụla"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "chọta na ederede %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Weghachite akwụkwọ ozi ahụ na ọnọdụ a kapịrị ọnụ."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "gụọ %1 n’ime %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Gụọ ugboro ole ụfọdụ ederede na’apụta n’ụfọdụ ederede ọzọ."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Tinye ihe na ederede."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "jikọta"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "na akwụkwọ ozi # site na njedebe"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "na akwụkwọ ozi #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "na leta ikpeazụ"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "chọta na ederede"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "nweta njịkọ-ala na akwụkwọ ozi mbu"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "nweta njịkọ-ala na akwụkwọ ozi # site na njedebe"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "nweta njịkọ-ala na akwụkwọ ozi #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Weghachite akụkụ nke akọwapụtara ederede."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "chọta ihe omume mbu nke ederede"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "chọta ihe omume ikpeazụ nke ederede"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "chọta na ederede %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 di n’efu"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Weghachitere ezịọkwụ ma ọ bụrụ na ederede enyere di n’efu."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "mepụta ederede na"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Mepụta otu ederede site na ijikọta ọnụ ọgụgụ ihe ọ bụla."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "ogologo nke %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Weghachitere nọmba nke akwụkwọ ozi (gụnyere oghere) na ederede enyere."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "bipụta %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Bipụta ederede a kapịrị ọnụ, nọmba ma ọ bụ akara ọzọ."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Mepụta ngwa onye ọrụ maka nọmba."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Mepụta ngwa onye ọrụ maka ederede."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Mepụta ngwa maka maka nọmba na ozi"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Mepụta ngwa maka iji ederede na ozi"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "dochie %1 na %2 n’ime %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Dochie ihe omuma nke ederede ufodu n'ime ufodu ederede ozo."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "gbanwe %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Na-agbanwe iwu nke ndị odide na ederede."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Akwụkwọ ozi, okwu, ma ọ bụ akara ederede."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "belata oghere dị mkpụmkpụ si n'akụkụ abụọ nke"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "belata oghere dị mkpụmkpụ si n'akụkụ aka ịkpa nke"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "belata oghere dị mkpụmkpụ si n'akụkụ aka nrị nke"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Weghachite otu ederede ya na oghere ọzọ wepụrụ site n'otu ma ọ bụ akụkụ mechị abụọ."; -Blockly.Msg["TODAY"] = "Taa"; -Blockly.Msg["UNDO"] = "Me la àzụ"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ihe"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Mepụta 'dozie %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Weghachite akara nke agbanwe a."; -Blockly.Msg["VARIABLES_SET"] = "dozie %1 ga na %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Mepụta 'nweta uru %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Debe mgbanwe a ka ọ ghata ihe ntinye."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Agbanwe akpọrọ '%1' dị adị."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Agbanwe akpọrọ '%1' dị adị na ụdị ozo: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Kwuo ihe ọ bụla..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Tịnye okwu"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Agaghị ekpochapụlị agbanwe '%1' maka nsonye ya na nkọwa nke ọrụ ahụ '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Gbanwee akara:"; +Blockly.Msg["CLEAN_UP"] = "Hichapụ ngọngọ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Kwada Ngọngọ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Kwada Ngọngọ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "agba 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "agba 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "oke"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ngwakọta"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Na ngwakọta agba abụọ ọnụ na na oke enyere (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Họrọ agba site na palette."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "agba ọbụla"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Họrọ agba na-nke ọbụla."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "bluu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "akwụkwọ ndụ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "uhie"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "agba ya na"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Mepụta agba nwere ọnụ ọgụgụ kpọmkwem nke agba uhie, akwụkwọ ndụ, na akara niile ga-adịrịrị n'etiti 0 rụọ 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "gbapuo na meghachi a"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "malite na nsoghari nke meghachi ozo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Gba puo na gburugburu nke ọdị n’ime ya."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Wụọ mkpụchị meghachi ndị a fọdụrụ, ma gaa n'ihu na nsoghari nke aka."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Ịdọ aka ná ntị: Enwere ike iji ngọngọ a naanị n'ime meghachi."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "maka ihe ọ bụla %1 n'ime ndepụta %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Maka ihe ọ bụla n'ime ndepụta, debe agbanwe '%1' na ihe ahụ, wee degharịa ụfọdụ koodu."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "gụọ na %1 site na %2 rụọ %3 tupu %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Nwere ngwakọta '%1' na akara ọbụla sịte na mbịdo ọnụọgụgụ rụọ na ngwụcha ọnụọgụgụ, na-ngụta sịtere na nkeji oge kpọmkwem. megharịa koodu oge ọbụla:"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tinye ọnọdụ na ngọngọ ma ọ bụrụ."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tinye ngwucha, ọnọdụ jide-niile na ngọngọ ma ọ bụrụ."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearịa nke a ma ọ bụrụ na ngọngọ."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ọzọ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ọzọ ma ọ bụrụ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ọ bụrụ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ọ bụrụ na akara bụ ezịọkwụ, mezie ụfọdụ okwu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ọ bụrụ na akara bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, mezie ngọngọ nke abụọ nke okwu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu. Ọ bụrụ na onweghị akara bụ ezịọkwụ, mee ngọngọ okwu ikpeazụ."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "mee"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "meghachi ụgbọ %1"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Mee ụfọdụ okwu ọtụtụ ugboro."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "megharịa tụpụ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "megharịa mgbe"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Ọ bụ ebe akara bụ ụgha, megharịa ụfọdụ koodu."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Ọ bụ ebe akara bụ ezịọkwụ, megharịa ụfọdụ koodu."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Mkpọchi %1 ngọngọ niile?"; +Blockly.Msg["DELETE_BLOCK"] = "Kpochapụ Ngọngọ"; +Blockly.Msg["DELETE_VARIABLE"] = "Kpochapụ agbanwe ‘%1' ahu"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Kpochapụ %1 ojịjị nke agbanwe '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Kpochapụ %1 Ngọngọ"; +Blockly.Msg["DIALOG_CANCEL"] = "Hapụ̀"; +Blockly.Msg["DIALOG_OK"] = "Ọ DỊ MMA"; +Blockly.Msg["DISABLE_BLOCK"] = "Gbanyụọ Ngọngọ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Ntụgharị"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Tụgharịa okwu"; +Blockly.Msg["ENABLE_BLOCK"] = "Gbanye Ngọngọ"; +Blockly.Msg["EXPAND_ALL"] = "Gbasaa Ngọngọ"; +Blockly.Msg["EXPAND_BLOCK"] = "Gbasaa Ngọngọ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ntinye Mpụta"; +Blockly.Msg["HELP"] = "Enyemaka"; +Blockly.Msg["INLINE_INPUTS"] = "Ntinye N'ahịrị"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "mepụta ndepụta efu"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Weghachite ndepụta, nke ogologo 0, nke enweghị ndekọ data"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ndepụta"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "mepụta ndepụta"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tinye ihe na ndepụta."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Mepụta ndepụta na nọmba ọ bụla."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "mbu"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# site na njedebe"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "nweta"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "nweta ma wepu"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ikpeazụ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "nke ọ bụla"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "wepu"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Weghachitere ihe mbụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Weghachitere ihe na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Weghachitere ihe ikpeazụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Weghachitere ihe ọbụla n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Wepu ma weghachite ihe mbu na ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Wepu ma weghachite ihe na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Wepu ma weghachite ihe ikpeazụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Wepu ma weghachite ihe ọbụla n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Wepu ihe mbụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Wepu ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Wepu ihe ikpeazụ n'ime ndepụta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Wepu ihe ọbụla n'ime ndepụta."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "rụọ # site na njedebe"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "rụọ #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "rụọ na ngwụcha"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "nweta akụkụ ndepụta site na mbịdo"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "nweta akụkụ ndepụta site na # site na njedebe"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "nweta akụkụ ndepụta site na #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Na-emepụta otu akụkụ a kapịrị ọnụ nke ndepụta."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 bụ ihe ikpeazụ."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 bụ ihe mbụ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "chọta ihe mbu nke ihe"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "chọta ihe ikpeazụ nke ihe"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe."; +Blockly.Msg["LISTS_INLIST"] = "n’ime ndepụta"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ghe oghe"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Weghachite eziokwu ma ọ bụrụ na ndepụta ahụ dị n’efu."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "ogo nke %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Weghachite ogo nke ndepụta."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "mepụta ndepụta na ihe %1 emegharịrị ugboro %2"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Na-emepụta listi ndepụta gụnyere akara a nyere ya ugboro ugboro."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "gbanwe %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Tụgharịa otu akụkụ ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "dị ka"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "tinye na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Na-etinye ihe ahụ na mmalite nke ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Na-etinye ihe na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Na-etinye ihe ahụ na ngwụcha nke ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Na-etinye ihe ahụ na ebe ọbụla nke ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Debe ihe mbụ n'ime ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Debe ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Debe ihe ikpeazụ n'ime ndepụta."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Debe ihe ọbụla n'ime ndepụta."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "arịgo"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "agbada"; +Blockly.Msg["LISTS_SORT_TITLE"] = "hazie %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Tọọ otu akụkụ ndepụta ahụ."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "mkpụrụ edemede, leghara ọnọdụ anya"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "nọmba"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "mkpụrụ edemede"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "mee ndepụta site na ederede"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "mee ederede site na ndepụta"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Jikọọ ndepụta nke ederede gaa na otu ederede, nke oihe nkewa kewara."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Kewaa ederede n'ime ndepụta nke ederede, na-agbasa na ihe nkwea ọ bụla."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "na ihe nkewa"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ụgha"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Weghachitere ezịọkwụ ma ọ bụ ụgha."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ezịọkwụ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye hatara onwe ha."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ntinye nke abụọ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ma ọ bụ hatara ntinye nke abụọ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ntinye nke abụọ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ma ọ bụ hatara ntinye nke abụọ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye aghataghị onwe ha."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ma ọ bụghị %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Weghachitere ezịọkwụ ma ọ bụrụ na ntinye bụ ụgha. Weghachitere ụgha ma ọ bụrụ na ntinye bụ ezịọkwụ."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Weghachitere nkịtị."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ma"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ma ọ bụrụ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Weghachi ezịọkwụ ma ọ bụrụ na ntinye abụọ a bụ ezịọkwụ."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Weghachi ezịọkwụ ma ọ bụrụ na ọdịkarịa ala otu n’ime ntinye a bụ ezịọkwụ."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ule"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ọ bụrụ ụgha"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ọ bụrụ na eziokwu"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Lelee ọnọdụ na 'ule'. Ọ bụrụ na ọnọdụ ahụ bụ eziokwu, weghachitere akara 'ọ bụrụ na eziokwu’; ma ọ bụghị ya weghachitere akara 'ọ bụrụ ụgha'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Weghachite ngụkọ ọnụ ọgụgụ abụọ ahụ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Weghachite kwenye ọnụ ọgụgụ abụọ ahụ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Weghachite nwepụ ọnụ ọgụgụ abụọ ahụ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Weghachite mụbaa ọnụ ọgụgụ abụọ ahụ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Weghachite nọmba mbu nke emeturu ike nke nọmba nke abụọ."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 nke X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Weghachite aktanjentị nke isi (X, Y) na ogo site na -180 rụọ 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "gbanwee %1 site na %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Tinye nọmba na agbanwe '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Weghachite otu n'ime kọnstant ndị nkịtị: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "gbochịe %1 ala %2 elu %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Gbochịe ọnụọgụgụ dị n'etiti nọmba dị oke ala na nọmba dị oke elu (gụnyere)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ga ekenwụ"; +Blockly.Msg["MATH_IS_EVEN"] = "bụ ịvụn"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "bụ negetịf"; +Blockly.Msg["MATH_IS_ODD"] = "bụ ọd"; +Blockly.Msg["MATH_IS_POSITIVE"] = "bu posịtịf"; +Blockly.Msg["MATH_IS_PRIME"] = "bụ praim"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Tụlee ma nọmba ọ bụ ịvụn, ọd, praim, zuru ezu, posịtịf, negetịf, ma e nwere nọmba ga ekenwu ya. Weghachitere eziokwu ma ọ bụ ụgha."; +Blockly.Msg["MATH_IS_WHOLE"] = "zuru ezu"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ihe fọdụrụ nke %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Weghachite ihe fọdụrụ site na nkewa nọmba abụọ."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ọnụọgụgụ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "agbaetiti nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ọkacha ukwuu nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "etiti nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "opekempe nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ụdị ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Ihe ọbụla nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ntughari usoro nke ndepụta"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "nchịkọta nke ndepụta"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Weghachite agbaetiti (nchịkọta mpụta) nke akara ọnụọgụ na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Weghachite nọmba kacha ukwuu na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Weghachite nọmba agbaetiti na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Weghachite nọmba kacha obere na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Weghachite ndepụta nke nke ihe kachasị mkpa na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Weghachite Ihe ọbụla site na ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Weghachite ntughari usoro nke ndepụta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Weghachite nchịkọta nke nọmba niile na ndepụta."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "nkewa ọbụla"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Weghachite ọnụọgụgụ ọbụla dị n'etiti 0.0 (gụnyere) na 1.0 (agụnyeghị)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ọnụọgụgụ ọbụla site na %1 rụọ %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Weghachite ọnụọgụgụ ọbụla dị n'etiti ihe abụọ a kapịrị ọnụ, agụnyere."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "gbaarịa"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "gbatụọ ala"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "gbaago elu"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Gbaago nọmba n'elu ma ọ bụ ala."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ozụzụ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Isi ngụkọ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Weghachite akara ozụzụ nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Weghachite na ike nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Weghachite lọgarịdịm nke di na nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Weghachite isi lọgarịdịm 10 nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Weghachite njụ nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Weghachite 10 na ike nke nọmba."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Weghachite Isi ngụkọ nke nọmba."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Weghachite akosaịn nke nọmba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Weghachite aksaịn nke nọmba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Weghachite aktanjentị nke nọmba."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Weghachite kosaịn nke ogo (ọ bụghị redian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Weghachite saịn nke ogo (ọ bụghị redian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Weghachite tanjentị nke ogo (ọ bụghị redian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Mepụta agba agbanwe..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Mepụta nọmba agbanwe..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Mepụta njikọ agbanwe..."; +Blockly.Msg["NEW_VARIABLE"] = "Mepụta agbanwe..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Aha agbanwe ọhụụ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ụdị agbanwe ọhụụ:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "kwe ka okwu"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "na:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Gbaa ọrụ a kọwaa onye-ọrụ '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Gbaa ọrụ a kọwaa onye-ọrụ '%1' ma jiri mmepụta ya."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "na:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Mepụta '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Kọwaa ọrụ a..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "megharịa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ga na"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Na emepụta ọrụ na-enweghị mmepụta."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "weghachite"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Na emepụta ọrụ nwere mmepụta."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Nkọwapụta njirimara ọrụ"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Weghachite akara nke agbanwe a."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "tinye aha:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tinye ntinye aka na ọrụ ahụ."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ntinye"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tinye, wepu, ma ọ bụ tugharịa ntinye na ọrụ a."; +Blockly.Msg["REDO"] = "Megharịa"; +Blockly.Msg["REMOVE_COMMENT"] = "Wepu okwu"; +Blockly.Msg["RENAME_VARIABLE"] = "Nyegharịa agbanwe aha..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Nyegharịa agbanwe '%1' nille ga:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "iji %1 tinye ederede %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tinye ederede na mgbanwee '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na ahịrị elu"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Aha Ahịrị"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na AHỊRỊ ELU"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "AA <-> aa"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "nweta akwụkwọ ozi mbu"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "nweta akwụkwọ ozi # site na njedebe"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "nweta akwụkwọ ozi #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "nweta akwụkwọ ozi ikpeazụ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "nweta akwụkwọ ozi ọbụla"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "chọta na ederede %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Weghachite akwụkwọ ozi ahụ na ọnọdụ a kapịrị ọnụ."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "gụọ %1 n’ime %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Gụọ ugboro ole ụfọdụ ederede na’apụta n’ụfọdụ ederede ọzọ."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Tinye ihe na ederede."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "jikọta"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "na akwụkwọ ozi # site na njedebe"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "na akwụkwọ ozi #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "na leta ikpeazụ"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "chọta na ederede"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "nweta njịkọ-ala na akwụkwọ ozi mbu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "nweta njịkọ-ala na akwụkwọ ozi # site na njedebe"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "nweta njịkọ-ala na akwụkwọ ozi #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Weghachite akụkụ nke akọwapụtara ederede."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "chọta ihe omume mbu nke ederede"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "chọta ihe omume ikpeazụ nke ederede"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "chọta na ederede %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 di n’efu"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Weghachitere ezịọkwụ ma ọ bụrụ na ederede enyere di n’efu."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "mepụta ederede na"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Mepụta otu ederede site na ijikọta ọnụ ọgụgụ ihe ọ bụla."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "ogologo nke %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Weghachitere nọmba nke akwụkwọ ozi (gụnyere oghere) na ederede enyere."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "bipụta %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Bipụta ederede a kapịrị ọnụ, nọmba ma ọ bụ akara ọzọ."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Mepụta ngwa onye ọrụ maka nọmba."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Mepụta ngwa onye ọrụ maka ederede."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Mepụta ngwa maka maka nọmba na ozi"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Mepụta ngwa maka iji ederede na ozi"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "dochie %1 na %2 n’ime %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Dochie ihe omuma nke ederede ufodu n'ime ufodu ederede ozo."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "gbanwe %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Na-agbanwe iwu nke ndị odide na ederede."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Akwụkwọ ozi, okwu, ma ọ bụ akara ederede."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "belata oghere dị mkpụmkpụ si n'akụkụ abụọ nke"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "belata oghere dị mkpụmkpụ si n'akụkụ aka ịkpa nke"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "belata oghere dị mkpụmkpụ si n'akụkụ aka nrị nke"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Weghachite otu ederede ya na oghere ọzọ wepụrụ site n'otu ma ọ bụ akụkụ mechị abụọ."; +Blockly.Msg["TODAY"] = "Taa"; +Blockly.Msg["UNDO"] = "Me la àzụ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ihe"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Mepụta 'dozie %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Weghachite akara nke agbanwe a."; +Blockly.Msg["VARIABLES_SET"] = "dozie %1 ga na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Mepụta 'nweta uru %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Debe mgbanwe a ka ọ ghata ihe ntinye."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Agbanwe akpọrọ '%1' dị adị."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Agbanwe akpọrọ '%1' dị adị na ụdị ozo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Kwuo ihe ọ bụla..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/inh.js b/msg/js/inh.js index 44e7aa039a6..144e1bf3eb7 100644 --- a/msg/js/inh.js +++ b/msg/js/inh.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ТӀатоха алар (комментари)"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Хувцалушъяр %1 дӀайоаккхалац, хӀана аьлча %2 функце къоастаяра дакъа да из."; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "МаIан хувца:"; -Blockly.Msg["CLEAN_UP"] = "ДӀаяха блокаш"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ДIахьулъе блокаш"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ДIахьулъе блок"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "бос 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "бос 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "беса дáкъа 1"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "кегаде"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Ши бос беззача боарамах вӀашагӀтох (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://inh.wikipedia.org/wiki/Бос"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Харжа палитра чура бос."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ца ховш нийсбенна бос"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Укхо бос хьахоржа дагадоацача тайпара"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "сийнача"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "баьццарара"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "цIеча"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "бесах"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ӏооттабаьчча боарамах цӀеи, баьццареи, сийнеи бесаш тохаш бос хьакхолла. Деррига боарамаш 0-и 100-ненни юкъе хила деза."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "вешта"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "вешта нагахьа"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "нагахьа санна"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Цикл_(программирование)"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "кхоачашде"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "юхаде %1-зза"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "ДӀаяккха еррига блокаш (%1)?"; -Blockly.Msg["DELETE_BLOCK"] = "ДӀаяккха блок"; -Blockly.Msg["DELETE_VARIABLE"] = "%1 хувцалушър дӀаяккха"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' хувцалушъяр %1 лелаяр дӀаяккха езий?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "ДӀаяккха %1 блокаш"; -Blockly.Msg["DIALOG_CANCEL"] = "Эшац"; -Blockly.Msg["DIALOG_OK"] = "Мег"; -Blockly.Msg["DISABLE_BLOCK"] = "ДIайоае блок"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Кеп яккха"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Комментарий шолхаяккха"; -Blockly.Msg["ENABLE_BLOCK"] = "Хьалотае блок"; -Blockly.Msg["EXPAND_ALL"] = "Хьайоаржае блокаш"; -Blockly.Msg["EXPAND_BLOCK"] = "Хьайоаржае блок"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Арахьара юкъеоттадаьраш"; -Blockly.Msg["HELP"] = "Новкъoстал"; -Blockly.Msg["INLINE_INPUTS"] = "Чухьнахьара юкъеоттадаьраш"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "харцдар"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "бакъдар"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "цхьаккха"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Цхьаккха доаца хIама юхадерзаду."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "иштта"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "e"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "нагахьа харца дале"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "нагахьа бакъа дале"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://inh.wikipedia.org/wiki/Арифметика"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://inh.wikipedia.org/wiki/Таьрахь"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Таьрахь."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Хьакхолла беса хувцалушъяр"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Хьакхолла таьрахьа хувцалушъяр..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Хьакхолла мугӀара хувцалушъяр..."; -Blockly.Msg["NEW_VARIABLE"] = "Хьакхолла керда хувцалушъяр..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Керда хувцалушъяра цIи:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Хувцалушъяра керда тайпа:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Хьакхолла дIакхайкар '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Юхадоаладе"; -Blockly.Msg["REMOVE_COMMENT"] = "ДӀадаккха алар (комментари)"; -Blockly.Msg["RENAME_VARIABLE"] = "Хувцалушъяра цIи хувца..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Хувца ерригача хувцалушъяраша цIераш укх цIерах '%1':"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Тахан"; -Blockly.Msg["UNDO"] = "Юхадаккха"; -Blockly.Msg["UNNAMED_KEY"] = "цӀи яц"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' яхаш йола хувцалушъяр йолаш я."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' яхаш йола хувцалушъяр кхыча тайпан йолаш я: '%2'"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ТӀатоха алар (комментари)"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Хувцалушъяр %1 дӀайоаккхалац, хӀана аьлча %2 функце къоастаяра дакъа да из."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "МаIан хувца:"; +Blockly.Msg["CLEAN_UP"] = "ДӀаяха блокаш"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ДIахьулъе блокаш"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ДIахьулъе блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "бос 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "бос 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "беса дáкъа 1"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "кегаде"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Ши бос беззача боарамах вӀашагӀтох (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://inh.wikipedia.org/wiki/Бос"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Харжа палитра чура бос."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ца ховш нийсбенна бос"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Укхо бос хьахоржа дагадоацача тайпара"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "сийнача"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "баьццарара"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "цIеча"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "бесах"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ӏооттабаьчча боарамах цӀеи, баьццареи, сийнеи бесаш тохаш бос хьакхолла. Деррига боарамаш 0-и 100-ненни юкъе хила деза."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "вешта"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "вешта нагахьа"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "нагахьа санна"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Цикл_(программирование)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "кхоачашде"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "юхаде %1-зза"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ДӀаяккха еррига блокаш (%1)?"; +Blockly.Msg["DELETE_BLOCK"] = "ДӀаяккха блок"; +Blockly.Msg["DELETE_VARIABLE"] = "%1 хувцалушър дӀаяккха"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' хувцалушъяр %1 лелаяр дӀаяккха езий?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "ДӀаяккха %1 блокаш"; +Blockly.Msg["DIALOG_CANCEL"] = "Эшац"; +Blockly.Msg["DIALOG_OK"] = "Мег"; +Blockly.Msg["DISABLE_BLOCK"] = "ДIайоае блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Кеп яккха"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Комментарий шолхаяккха"; +Blockly.Msg["ENABLE_BLOCK"] = "Хьалотае блок"; +Blockly.Msg["EXPAND_ALL"] = "Хьайоаржае блокаш"; +Blockly.Msg["EXPAND_BLOCK"] = "Хьайоаржае блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Арахьара юкъеоттадаьраш"; +Blockly.Msg["HELP"] = "Новкъoстал"; +Blockly.Msg["INLINE_INPUTS"] = "Чухьнахьара юкъеоттадаьраш"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "харцдар"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "бакъдар"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "цхьаккха"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Цхьаккха доаца хIама юхадерзаду."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "иштта"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "e"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "нагахьа харца дале"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "нагахьа бакъа дале"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://inh.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://inh.wikipedia.org/wiki/Таьрахь"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Таьрахь."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Хьакхолла беса хувцалушъяр"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Хьакхолла таьрахьа хувцалушъяр..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Хьакхолла мугӀара хувцалушъяр..."; +Blockly.Msg["NEW_VARIABLE"] = "Хьакхолла керда хувцалушъяр..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Керда хувцалушъяра цIи:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Хувцалушъяра керда тайпа:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Хьакхолла дIакхайкар '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Юхадоаладе"; +Blockly.Msg["REMOVE_COMMENT"] = "ДӀадаккха алар (комментари)"; +Blockly.Msg["RENAME_VARIABLE"] = "Хувцалушъяра цIи хувца..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Хувца ерригача хувцалушъяраша цIераш укх цIерах '%1':"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Тахан"; +Blockly.Msg["UNDO"] = "Юхадаккха"; +Blockly.Msg["UNNAMED_KEY"] = "цӀи яц"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' яхаш йола хувцалушъяр йолаш я."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' яхаш йола хувцалушъяр кхыча тайпан йолаш я: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/is.js b/msg/js/is.js index cf2cf75e262..33ffccba6e4 100644 --- a/msg/js/is.js +++ b/msg/js/is.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Skrifa skýringu"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Breyta gildi:"; -Blockly.Msg["CLEAN_UP"] = "Hreinsa kubba"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Loka kubbum"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Loka kubbi"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "litur 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "litur 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "hlutfall"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blöndun"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blandar tveimur litum í gefnu hlutfalli (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Velja lit úr litakorti."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "einhver litur"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Velja einhvern lit af handahófi."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blátt"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "grænt"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "rauður"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "litur"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Búa til lit úr tilteknu magni af rauðu, grænu og bláu. Allar tölurnar verða að vera á bilinu 0 til 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "fara út úr lykkju"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fara beint í næstu umferð lykkjunnar"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Fara út úr umlykjandi lykkju."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sleppa afganginum af lykkjunni og fara beint í næstu umferð hennar."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Aðvörun: Þennan kubb má aðeins nota innan lykkju."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "fyrir hvert %1 í lista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Fyrir hvert atriði í lista er breyta '%1' stillt á atriðið og skipanir gerðar."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; -Blockly.Msg["CONTROLS_FOR_TITLE"] = "telja með %1 frá %2 til %3 um %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Láta breytuna '%1' taka inn gildi frá fyrstu tölu til síðustu tölu, hlaupandi á tiltekna bilinu og gera tilteknu kubbana."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Bæta skilyrði við EF kubbinn."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Bæta við hluta EF kubbs sem grípur öll tilfelli sem uppfylla ekki hin skilyrðin."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Bæta við, fjarlægja eða umraða til að breyta skipan þessa EF kubbs."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "annars"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "annars ef"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ef"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ef gildi er satt skal gera einhverjar skipanir."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ef gildi er satt skal gera skipanir í fyrri kubbnum. Annars skal gera skipanir í seinni kubbnum."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, þá skal gera skipanir í seinni kubbnum."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, skal gera skipanir í seinni kubbnum. Ef hvorugt gildið er satt, skal gera skipanir í síðasta kubbnum."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "gera"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "endurtaka %1 sinnum"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Gera eitthvað aftur og aftur."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "endurtaka þar til"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "endurtaka á meðan"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Endurtaka eitthvað á meðan gildi er ósatt."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Endurtaka eitthvað á meðan gildi er satt."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Eyða öllum %1 kubbunum?"; -Blockly.Msg["DELETE_BLOCK"] = "Eyða kubbi"; -Blockly.Msg["DELETE_VARIABLE"] = "Eyða '%1' breytunni"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Eyða %1 kubbum"; -Blockly.Msg["DIALOG_CANCEL"] = "Hætta við"; -Blockly.Msg["DIALOG_OK"] = "Í lagi"; -Blockly.Msg["DISABLE_BLOCK"] = "Óvirkja kubb"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Afrita"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Tvítaka athugasemd"; -Blockly.Msg["ENABLE_BLOCK"] = "Virkja kubb"; -Blockly.Msg["EXPAND_ALL"] = "Opna kubba"; -Blockly.Msg["EXPAND_BLOCK"] = "Opna kubb"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Ytri inntök"; -Blockly.Msg["HELP"] = "Hjálp"; -Blockly.Msg["INLINE_INPUTS"] = "Innri inntök"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "búa til tóman lista"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Skilar lista með lengdina 0 án gagna"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listi"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa listakubbs."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "búa til lista með"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Bæta atriði við listann."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Búa til lista með einhverjum fjölda atriða."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "fyrsta"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# frá enda"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "sækja"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "sækja og fjarlægja"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "síðasta"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "eitthvert"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fjarlægja"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Skilar fyrsta atriði í lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Skilar atriðinu í hinum tiltekna stað í lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Skilar síðasta atriði í lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Skilar einhverju atriði úr lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fjarlægir og skilar fyrsta atriðinu í lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fjarlægir og skilar atriðinu á hinum tiltekna stað í lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fjarlægir og skilar síðasta atriðinu í lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fjarlægir og skilar einhverju atriði úr lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fjarlægir fyrsta atriðið í lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fjarlægir atriðið á hinum tiltekna stað í lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fjarlægir síðasta atriðið í lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fjarlægir eitthvert atriði úr lista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "til # frá enda"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "til #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "til síðasta"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "sækja undirlista frá fyrsta"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "sækja undirlista frá # frá enda"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "sækja undirlista frá #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Býr til afrit af tilteknum hluta lista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 er síðasta atriðið."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 er fyrsta atriðið."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "finna fyrsta tilfelli atriðis"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "finna síðasta tilfelli atriðis"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Finnur hvar atriðið kemur fyrir fyrst/síðast í listanum og skilar sæti þess. Skilar %1 ef atriðið finnst ekki."; -Blockly.Msg["LISTS_INLIST"] = "í lista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 er tómur"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Skilar sönnu ef listinn er tómur."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; -Blockly.Msg["LISTS_LENGTH_TITLE"] = "lengd %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Skilar lengd lista."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_REPEAT_TITLE"] = "búa til lista með atriði %1 endurtekið %2 sinnum"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Býr til lista sem inniheldur tiltekna gildið endurtekið tiltekið oft."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "snúa við %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Snúa við afriti lista."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sem"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "bæta við"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "setja í"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Bætir atriðinu fremst í listann."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Bætir atriðinu í listann á tilteknum stað."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Bætir atriðinu aftan við listann."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Bætir atriðinu einhversstaðar við listann."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Setur atriðið í fyrsta sæti lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setur atriðið í tiltekna sætið í listanum."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setur atriðið í síðasta sæti lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setur atriðið í eitthvert sæti lista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "hækkandi"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "lækkandi"; -Blockly.Msg["LISTS_SORT_TITLE"] = "raða %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Raða afriti lista."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "í stafrófsröð án tillits til stafstöðu"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "í númeraröð"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "í stafrófsröð"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "gera lista úr texta"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "gera texta úr lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Sameinar lista af textum í einn texta, með skiltákn á milli."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Skiptir texta í lista af textum, með skil við hvert skiltákn."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "með skiltákni"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ósatt"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Skilar annað hvort sönnu eða ósönnu."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "satt"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Skila sönnu ef inntökin eru jöfn."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Skila sönnu ef fyrra inntakið er stærra en seinna inntakið."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Skila sönnu ef fyrra inntakið er stærra en eða jafnt og seinna inntakið."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Skila sönnu ef fyrra inntakið er minna en seinna inntakið."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Skila sönnu ef fyrra inntakið er minna en eða jafnt og seinna inntakið."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Skila sönnu ef inntökin eru ekki jöfn."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ekki %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Skilar sönnu ef inntakið er ósatt. Skilar ósönnu ef inntakið er satt."; -Blockly.Msg["LOGIC_NULL"] = "tómagildi"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Skilar tómagildi."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "og"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; -Blockly.Msg["LOGIC_OPERATION_OR"] = "eða"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Skila sönnu ef bæði inntökin eru sönn."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Skila sönnu ef að minnsta kosti eitt inntak er satt."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "prófun"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ef ósatt"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ef satt"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kanna skilyrðið í 'prófun'. Skilar 'ef satt' gildinu ef skilyrðið er satt, en skilar annars 'ef ósatt' gildinu."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Skila summu talnanna tveggja."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Skila deilingu talnanna."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Skila mismun talnanna."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Skila margfeldi talnanna."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Skila fyrri tölunni í veldinu seinni talan."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "breyta %1 um %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Bæta tölu við breytu '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Skila algengum fasta: π (3.141…), e (2.718…), φ (1.618…), kvrót(2) (1.414…), kvrót(½) (0.707…) eða ∞ (óendanleika)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "þröngva %1 lægst %2 hæst %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Þröngva tölu til að vera innan hinna tilgreindu marka (að báðum meðtöldum)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "er\u00A0deilanleg með"; -Blockly.Msg["MATH_IS_EVEN"] = "er\u00A0jöfn tala"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "er neikvæð"; -Blockly.Msg["MATH_IS_ODD"] = "er oddatala"; -Blockly.Msg["MATH_IS_POSITIVE"] = "er jákvæð"; -Blockly.Msg["MATH_IS_PRIME"] = "er prímtala"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Kanna hvort tala sé jöfn tala, oddatala, jákvæð, neikvæð eða deilanleg með tiltekinni tölu. Skilar sönnu eða ósönnu."; -Blockly.Msg["MATH_IS_WHOLE"] = "er heiltala"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "afgangur af %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Skila afgangi deilingar með tölunum."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Tala."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "meðaltal lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "stærst í lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "miðgildi lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minnst í lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "tíðast í lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "eitthvað úr lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "staðalfrávik lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Skila meðaltali talna í listanum."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Skila stærstu tölu í listanum."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Skila miðgildi listans."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Skila minnstu tölu í listanum."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Skila lista yfir tíðustu gildin í listanum."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Skila einhverju atriði úr listanum."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Skila staðalfráviki lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Skila summu allra talna í listanum."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slembibrot"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Skila broti sem er valið af handahófi úr tölum á bilinu frá og með 0.0 til (en ekki með) 1.0."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "slembitala frá %1 til %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Skila heiltölu sem valin er af handahófi og er innan tilgreindra marka, að báðum meðtöldum."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "námunda"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "námunda niður"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "námunda upp"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Námunda tölu upp eða niður."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "algildi"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvaðratrót"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Skila algildi tölu."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Skila e í veldi tölu."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Skila náttúrlegum lógaritma tölu."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Skila tugalógaritma tölu."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Skila neitun tölu (tölunni með öfugu formerki)."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Skila 10 í veldi tölu."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Skila kvaðratrót tölu."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Skila arkarkósínusi tölu."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Skila arkarsínusi tölu."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Skila arkartangensi tölu."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Skila kósínusi horns gefnu í gráðum."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Skila sínusi horns gefnu í gráðum."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Skila tangensi horns gefnu í gráðum."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Búa til breytu..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Heiti nýrrar breytu:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "leyfa setningar"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "með:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Keyra heimatilbúna fallið '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Keyra heimatilbúna fallið '%1' og nota úttak þess."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "með:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Búa til '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Lýstu þessari aðgerð/falli..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "gera eitthvað"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "til að"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Býr til fall sem skilar engu."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "skila"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Býr til fall sem skilar úttaki."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Aðvörun: Þetta fall er með tvítekna stika."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sýna skilgreiningu falls"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ef gildi er satt, skal skila öðru gildi."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Aðvörun: Þennan kubb má aðeins nota í skilgreiningu falls."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "heiti inntaks:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Bæta inntaki við fallið."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inntök"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bæta við, fjarlægja eða umraða inntökum fyrir þetta fall."; -Blockly.Msg["REDO"] = "Endurtaka"; -Blockly.Msg["REMOVE_COMMENT"] = "Fjarlægja skýringu"; -Blockly.Msg["RENAME_VARIABLE"] = "Endurnefna breytu..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Endurnefna allar '%1' breyturnar:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_APPEND_TITLE"] = "við %1 bæta texta %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Bæta texta við breytuna '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "í lágstafi"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "í Upphafstafi"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "í HÁSTAFI"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Skila afriti af textanum með annarri stafastöðu."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "sækja fyrsta staf"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "sækja staf # frá enda"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "sækja staf #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; -Blockly.Msg["TEXT_CHARAT_LAST"] = "sækja síðasta staf"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "sækja einhvern staf"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "í texta %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Skila staf á tilteknum stað."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "fjöldi %1 í %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Bæta atriði við textann."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "tengja"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa textakubbs."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "að staf # frá enda"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "að staf #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "að síðasta staf"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "í texta"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "sækja textabút frá fyrsta staf"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "sækja textabút frá staf # frá enda"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "sækja textabút frá staf #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Skilar tilteknum hluta textans."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "finna fyrsta tilfelli texta"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "finna síðasta tilfelli texta"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "í texta %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Finnur fyrsta/síðasta tilfelli fyrri textans í seinni textanum og skilar sæti hans. Skilar %1 ef textinn finnst ekki."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 er tómur"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Skilar sönnu ef gefni textinn er tómur."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "búa til texta með"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Búa til texta með því að tengja saman einhvern fjölda atriða."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_LENGTH_TITLE"] = "lengd %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Skilar fjölda stafa (með bilum) í gefna textanum."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; -Blockly.Msg["TEXT_PRINT_TITLE"] = "prenta %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Prenta tiltekinn texta, tölu eða annað gildi."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Biðja notandann um tölu."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Biðja notandann um texta."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "biðja um tölu með skilaboðum"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "biðja um texta með skilaboðum"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "skipta %1 út með %2 í %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "snúa við %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Snýr við röð stafanna í textanum."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Stafur, orð eða textalína."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "eyða bilum báðum megin við"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "eyða bilum vinstra megin við"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "eyða bilum hægra megin við"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Skila afriti af textanum þar sem möguleg bil við báða enda hafa verið fjarlægð."; -Blockly.Msg["TODAY"] = "Í dag"; -Blockly.Msg["UNDO"] = "Afturkalla"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "atriði"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Búa til 'stilla %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Skilar gildi þessarar breytu."; -Blockly.Msg["VARIABLES_SET"] = "stilla %1 á %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Búa til 'sækja %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Stillir þessa breytu á innihald inntaksins."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Breyta með heitinu '%1' er þegar til staðar."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Segðu eitthvað..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Skrifa skýringu"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Breyta gildi:"; +Blockly.Msg["CLEAN_UP"] = "Hreinsa kubba"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Loka kubbum"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Loka kubbi"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "litur 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "litur 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "hlutfall"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blöndun"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blandar tveimur litum í gefnu hlutfalli (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Velja lit úr litakorti."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "einhver litur"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Velja einhvern lit af handahófi."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blátt"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grænt"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rauður"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "litur"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Búa til lit úr tilteknu magni af rauðu, grænu og bláu. Allar tölurnar verða að vera á bilinu 0 til 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "fara út úr lykkju"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fara beint í næstu umferð lykkjunnar"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Fara út úr umlykjandi lykkju."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sleppa afganginum af lykkjunni og fara beint í næstu umferð hennar."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Aðvörun: Þennan kubb má aðeins nota innan lykkju."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "fyrir hvert %1 í lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Fyrir hvert atriði í lista er breyta '%1' stillt á atriðið og skipanir gerðar."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "telja með %1 frá %2 til %3 um %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Láta breytuna '%1' taka inn gildi frá fyrstu tölu til síðustu tölu, hlaupandi á tiltekna bilinu og gera tilteknu kubbana."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Bæta skilyrði við EF kubbinn."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Bæta við hluta EF kubbs sem grípur öll tilfelli sem uppfylla ekki hin skilyrðin."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Bæta við, fjarlægja eða umraða til að breyta skipan þessa EF kubbs."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "annars"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "annars ef"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ef"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ef gildi er satt skal gera einhverjar skipanir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ef gildi er satt skal gera skipanir í fyrri kubbnum. Annars skal gera skipanir í seinni kubbnum."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, þá skal gera skipanir í seinni kubbnum."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, skal gera skipanir í seinni kubbnum. Ef hvorugt gildið er satt, skal gera skipanir í síðasta kubbnum."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "gera"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "endurtaka %1 sinnum"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Gera eitthvað aftur og aftur."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "endurtaka þar til"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "endurtaka á meðan"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Endurtaka eitthvað á meðan gildi er ósatt."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Endurtaka eitthvað á meðan gildi er satt."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Eyða öllum %1 kubbunum?"; +Blockly.Msg["DELETE_BLOCK"] = "Eyða kubbi"; +Blockly.Msg["DELETE_VARIABLE"] = "Eyða '%1' breytunni"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Eyða %1 kubbum"; +Blockly.Msg["DIALOG_CANCEL"] = "Hætta við"; +Blockly.Msg["DIALOG_OK"] = "Í lagi"; +Blockly.Msg["DISABLE_BLOCK"] = "Óvirkja kubb"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Afrita"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Tvítaka athugasemd"; +Blockly.Msg["ENABLE_BLOCK"] = "Virkja kubb"; +Blockly.Msg["EXPAND_ALL"] = "Opna kubba"; +Blockly.Msg["EXPAND_BLOCK"] = "Opna kubb"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ytri inntök"; +Blockly.Msg["HELP"] = "Hjálp"; +Blockly.Msg["INLINE_INPUTS"] = "Innri inntök"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "búa til tóman lista"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Skilar lista með lengdina 0 án gagna"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listi"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa listakubbs."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "búa til lista með"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Bæta atriði við listann."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Búa til lista með einhverjum fjölda atriða."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "fyrsta"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# frá enda"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "sækja"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "sækja og fjarlægja"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "síðasta"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "eitthvert"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fjarlægja"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Skilar fyrsta atriði í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Skilar atriðinu í hinum tiltekna stað í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Skilar síðasta atriði í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Skilar einhverju atriði úr lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fjarlægir og skilar fyrsta atriðinu í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fjarlægir og skilar atriðinu á hinum tiltekna stað í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fjarlægir og skilar síðasta atriðinu í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fjarlægir og skilar einhverju atriði úr lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fjarlægir fyrsta atriðið í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fjarlægir atriðið á hinum tiltekna stað í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fjarlægir síðasta atriðið í lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fjarlægir eitthvert atriði úr lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "til # frá enda"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "til #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "til síðasta"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "sækja undirlista frá fyrsta"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "sækja undirlista frá # frá enda"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "sækja undirlista frá #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Býr til afrit af tilteknum hluta lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 er síðasta atriðið."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 er fyrsta atriðið."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "finna fyrsta tilfelli atriðis"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "finna síðasta tilfelli atriðis"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Finnur hvar atriðið kemur fyrir fyrst/síðast í listanum og skilar sæti þess. Skilar %1 ef atriðið finnst ekki."; +Blockly.Msg["LISTS_INLIST"] = "í lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 er tómur"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Skilar sönnu ef listinn er tómur."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lengd %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Skilar lengd lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "búa til lista með atriði %1 endurtekið %2 sinnum"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Býr til lista sem inniheldur tiltekna gildið endurtekið tiltekið oft."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "snúa við %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Snúa við afriti lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sem"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "bæta við"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "setja í"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Bætir atriðinu fremst í listann."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Bætir atriðinu í listann á tilteknum stað."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Bætir atriðinu aftan við listann."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Bætir atriðinu einhversstaðar við listann."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Setur atriðið í fyrsta sæti lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setur atriðið í tiltekna sætið í listanum."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setur atriðið í síðasta sæti lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setur atriðið í eitthvert sæti lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "hækkandi"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "lækkandi"; +Blockly.Msg["LISTS_SORT_TITLE"] = "raða %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Raða afriti lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "í stafrófsröð án tillits til stafstöðu"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "í númeraröð"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "í stafrófsröð"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "gera lista úr texta"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "gera texta úr lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Sameinar lista af textum í einn texta, með skiltákn á milli."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Skiptir texta í lista af textum, með skil við hvert skiltákn."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "með skiltákni"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ósatt"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Skilar annað hvort sönnu eða ósönnu."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "satt"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Skila sönnu ef inntökin eru jöfn."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Skila sönnu ef fyrra inntakið er stærra en seinna inntakið."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Skila sönnu ef fyrra inntakið er stærra en eða jafnt og seinna inntakið."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Skila sönnu ef fyrra inntakið er minna en seinna inntakið."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Skila sönnu ef fyrra inntakið er minna en eða jafnt og seinna inntakið."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Skila sönnu ef inntökin eru ekki jöfn."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ekki %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Skilar sönnu ef inntakið er ósatt. Skilar ósönnu ef inntakið er satt."; +Blockly.Msg["LOGIC_NULL"] = "tómagildi"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Skilar tómagildi."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "og"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "eða"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Skila sönnu ef bæði inntökin eru sönn."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Skila sönnu ef að minnsta kosti eitt inntak er satt."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "prófun"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ef ósatt"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ef satt"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kanna skilyrðið í 'prófun'. Skilar 'ef satt' gildinu ef skilyrðið er satt, en skilar annars 'ef ósatt' gildinu."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Skila summu talnanna tveggja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Skila deilingu talnanna."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Skila mismun talnanna."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Skila margfeldi talnanna."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Skila fyrri tölunni í veldinu seinni talan."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "breyta %1 um %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Bæta tölu við breytu '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Skila algengum fasta: π (3.141…), e (2.718…), φ (1.618…), kvrót(2) (1.414…), kvrót(½) (0.707…) eða ∞ (óendanleika)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "þröngva %1 lægst %2 hæst %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Þröngva tölu til að vera innan hinna tilgreindu marka (að báðum meðtöldum)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "er\u00A0deilanleg með"; +Blockly.Msg["MATH_IS_EVEN"] = "er\u00A0jöfn tala"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "er neikvæð"; +Blockly.Msg["MATH_IS_ODD"] = "er oddatala"; +Blockly.Msg["MATH_IS_POSITIVE"] = "er jákvæð"; +Blockly.Msg["MATH_IS_PRIME"] = "er prímtala"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kanna hvort tala sé jöfn tala, oddatala, jákvæð, neikvæð eða deilanleg með tiltekinni tölu. Skilar sönnu eða ósönnu."; +Blockly.Msg["MATH_IS_WHOLE"] = "er heiltala"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "afgangur af %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Skila afgangi deilingar með tölunum."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Tala."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "meðaltal lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "stærst í lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "miðgildi lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minnst í lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "tíðast í lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "eitthvað úr lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "staðalfrávik lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Skila meðaltali talna í listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Skila stærstu tölu í listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Skila miðgildi listans."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Skila minnstu tölu í listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Skila lista yfir tíðustu gildin í listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Skila einhverju atriði úr listanum."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Skila staðalfráviki lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Skila summu allra talna í listanum."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slembibrot"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Skila broti sem er valið af handahófi úr tölum á bilinu frá og með 0.0 til (en ekki með) 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "slembitala frá %1 til %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Skila heiltölu sem valin er af handahófi og er innan tilgreindra marka, að báðum meðtöldum."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "námunda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "námunda niður"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "námunda upp"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Námunda tölu upp eða niður."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "algildi"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvaðratrót"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Skila algildi tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Skila e í veldi tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Skila náttúrlegum lógaritma tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Skila tugalógaritma tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Skila neitun tölu (tölunni með öfugu formerki)."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Skila 10 í veldi tölu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Skila kvaðratrót tölu."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Skila arkarkósínusi tölu."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Skila arkarsínusi tölu."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Skila arkartangensi tölu."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Skila kósínusi horns gefnu í gráðum."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Skila sínusi horns gefnu í gráðum."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Skila tangensi horns gefnu í gráðum."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Búa til breytu..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Heiti nýrrar breytu:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "leyfa setningar"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "með:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Keyra heimatilbúna fallið '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Keyra heimatilbúna fallið '%1' og nota úttak þess."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "með:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Búa til '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Lýstu þessari aðgerð/falli..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "gera eitthvað"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "til að"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Býr til fall sem skilar engu."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "skila"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Býr til fall sem skilar úttaki."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Aðvörun: Þetta fall er með tvítekna stika."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sýna skilgreiningu falls"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ef gildi er satt, skal skila öðru gildi."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Aðvörun: Þennan kubb má aðeins nota í skilgreiningu falls."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "heiti inntaks:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Bæta inntaki við fallið."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inntök"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bæta við, fjarlægja eða umraða inntökum fyrir þetta fall."; +Blockly.Msg["REDO"] = "Endurtaka"; +Blockly.Msg["REMOVE_COMMENT"] = "Fjarlægja skýringu"; +Blockly.Msg["RENAME_VARIABLE"] = "Endurnefna breytu..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Endurnefna allar '%1' breyturnar:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "við %1 bæta texta %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Bæta texta við breytuna '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "í lágstafi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "í Upphafstafi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "í HÁSTAFI"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Skila afriti af textanum með annarri stafastöðu."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "sækja fyrsta staf"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "sækja staf # frá enda"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "sækja staf #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "sækja síðasta staf"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "sækja einhvern staf"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "í texta %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Skila staf á tilteknum stað."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "fjöldi %1 í %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Bæta atriði við textann."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "tengja"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa textakubbs."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "að staf # frá enda"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "að staf #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "að síðasta staf"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "í texta"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "sækja textabút frá fyrsta staf"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "sækja textabút frá staf # frá enda"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "sækja textabút frá staf #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Skilar tilteknum hluta textans."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "finna fyrsta tilfelli texta"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "finna síðasta tilfelli texta"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "í texta %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Finnur fyrsta/síðasta tilfelli fyrri textans í seinni textanum og skilar sæti hans. Skilar %1 ef textinn finnst ekki."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 er tómur"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Skilar sönnu ef gefni textinn er tómur."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "búa til texta með"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Búa til texta með því að tengja saman einhvern fjölda atriða."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lengd %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Skilar fjölda stafa (með bilum) í gefna textanum."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "prenta %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Prenta tiltekinn texta, tölu eða annað gildi."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Biðja notandann um tölu."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Biðja notandann um texta."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "biðja um tölu með skilaboðum"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "biðja um texta með skilaboðum"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "skipta %1 út með %2 í %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "snúa við %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Snýr við röð stafanna í textanum."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Stafur, orð eða textalína."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "eyða bilum báðum megin við"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "eyða bilum vinstra megin við"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "eyða bilum hægra megin við"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Skila afriti af textanum þar sem möguleg bil við báða enda hafa verið fjarlægð."; +Blockly.Msg["TODAY"] = "Í dag"; +Blockly.Msg["UNDO"] = "Afturkalla"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "atriði"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Búa til 'stilla %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Skilar gildi þessarar breytu."; +Blockly.Msg["VARIABLES_SET"] = "stilla %1 á %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Búa til 'sækja %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Stillir þessa breytu á innihald inntaksins."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Breyta með heitinu '%1' er þegar til staðar."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Segðu eitthvað..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/it.js b/msg/js/it.js index e133da5a5df..df1801efa75 100644 --- a/msg/js/it.js +++ b/msg/js/it.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Aggiungi commento"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Non si può cancellare la variabile '%1' perché è parte della definizione della funzione '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modifica valore:"; -Blockly.Msg["CLEAN_UP"] = "Pulisci i blocchi"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "I blocchi compressi contengono avvertimenti."; -Blockly.Msg["COLLAPSE_ALL"] = "Comprimi blocchi"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Comprimi blocco"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colore 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colore 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "rapporto"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "miscela"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mescola due colori insieme con un determinato rapporto (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://it.wikipedia.org/wiki/Colore"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Scegli un colore dalla tavolozza."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "colore casuale"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Scegli un colore a caso."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blu"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "rosso"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colora con"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crea un colore con la quantità specificata di rosso, verde e blu. Tutti i valori devono essere compresi tra 0 e 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "esce dal ciclo"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "prosegui con la successiva iterazione del ciclo"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Esce dal ciclo."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Salta il resto di questo ciclo e prosegue con la successiva iterazione."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Attenzioneː Questo blocco può essere usato solo in un ciclo."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per ogni elemento %1 nella lista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Per ogni elemento in una lista, imposta la variabile '%1' pari all'elemento e quindi esegue alcune istruzioni."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "conta con %1 da %2 a %3 per %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fa sì che la variabile '%1' prenda tutti i valori a partire dal numero di partenza fino a quello di arrivo, con passo pari all'intervallo specificato, ed esegue il blocco indicato."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Aggiungi una condizione al blocco se."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Aggiungi una condizione finale pigliatutto al blocco se."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Aggiungi, elimina o riordina le sezioni per riconfigurare questo blocco se."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "altrimenti"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "altrimenti se"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Se un valore è vero allora esegue alcune istruzioni."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Se un valore è vero allora esegue il primo blocco di istruzioni. Altrimenti esegue il secondo blocco di istruzioni."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni. Se nessuno dei valori è vero esegue l'ultimo blocco di istruzioni."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://it.wikipedia.org/wiki/Ciclo_for"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fai"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ripeti %1 volte"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Esegue alcune istruzione diverse volte."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ripeti fino a che"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ripeti mentre"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Finché un valore è falso, esegue alcune istruzioni."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Finché un valore è vero, esegue alcune istruzioni."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Cancellare tutti i %1 blocchi?"; -Blockly.Msg["DELETE_BLOCK"] = "Cancella blocco"; -Blockly.Msg["DELETE_VARIABLE"] = "Cancella la variabile '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Cancella %1 usi della variabile '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Cancella %1 blocchi"; -Blockly.Msg["DIALOG_CANCEL"] = "Annulla"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Disattiva blocco"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplica"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplica commento"; -Blockly.Msg["ENABLE_BLOCK"] = "Attiva blocco"; -Blockly.Msg["EXPAND_ALL"] = "Espandi blocchi"; -Blockly.Msg["EXPAND_BLOCK"] = "Espandi blocco"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Ingressi esterni"; -Blockly.Msg["HELP"] = "Aiuto"; -Blockly.Msg["INLINE_INPUTS"] = "Ingressi in linea"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crea lista vuota"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Restituisce una lista, di lunghezza 0, contenente nessun record di dati"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Aggiungi, rimuovi o riordina le sezioni per riconfigurare il blocco lista."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crea lista con"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Aggiunge un elemento alla lista."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crea una lista con un certo numero di elementi."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primo"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dalla fine"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "prendi"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "prendi e rimuovi"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ultimo"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "casuale"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "rimuovi"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Restituisce il primo elemento in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Restituisce l'elemento nella posizione indicata della lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Restituisce l'ultimo elemento in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Restituisce un elemento casuale in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Rimuove e restituisce il primo elemento in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Rimuove e restituisce l'elemento nella posizione indicata in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Restituisce e rimuove l'ultimo elemento in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Restituisce e rimuove un elemento casuale in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Rimuove il primo elemento in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Rimuove l'elemento nella posizione indicata in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Rimuove l'ultimo elemento in una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Rimuove un elemento casuale in una lista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "da # dalla fine"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fino a #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "dagli ultimi"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "prendi sotto-lista dall'inizio"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "prendi sotto-lista da # dalla fine"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "prendi sotto-lista da #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea una copia della porzione specificata di una lista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 corrisponde all'ultimo elemento."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 corrisponde al primo elemento."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trova la prima occorrenza dell'elemento"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trova l'ultima occorrenza dell'elemento"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Restituisce l'indice della prima/ultima occorrenza dell'elemento nella lista. Restituisce %1 se l'elemento non viene trovato."; -Blockly.Msg["LISTS_INLIST"] = "nella lista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 è vuota"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Restituisce vero se la lista è vuota."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "lunghezza di %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Restituisce la lunghezza della lista"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "crea una lista con l'elemento %1 ripetuto %2 volte"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea una lista costituita dal valore indicato ripetuto per il numero di volte specificato."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverti %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverti una copia di un elenco."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "come"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserisci in"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "imposta"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserisci l'elemento all'inizio della lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserisci un elemento nella posizione indicata in una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Aggiungi un elemento alla fine di una lista"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserisce l'elemento casualmente in una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Imposta il primo elemento in una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Imposta l'elemento nella posizione indicata di una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Imposta l'ultimo elemento in una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Imposta un elemento casuale in una lista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "crescente"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "decrescente"; -Blockly.Msg["LISTS_SORT_TITLE"] = "ordinamento %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordina una copia di un elenco."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetico, ignorare differenze maiuscole e minuscole"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerico"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetico"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "crea lista da testo"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "crea testo da lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Unisci una lista di testi in un unico testo, separato da un delimitatore."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividi il testo in un elenco di testi, interrompendo ad ogni delimitatore."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con delimitatore"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Restituisce vero o falso."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "vero"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://it.wikipedia.org/wiki/Disuguaglianza"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Restituisce vero se gli input sono uno uguale all'altro."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Restituisce vero se il primo input è maggiore o uguale al secondo."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Restituisce uguale se il primo input è maggiore o uguale al secondo input."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Restituisce vero se il primo input è minore del secondo."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Restituisce vero se il primo input è minore o uguale al secondo."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Restituisce vero se gli input non sono uno uguale all'altro."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Restituisce vero se l'input è falso. Restituisce falso se l'input è vero."; -Blockly.Msg["LOGIC_NULL"] = "nullo"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Restituisce valore nullo."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Restituisce vero se entrambi gli input sono veri."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Restituisce vero se almeno uno degli input è vero."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se vero"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Verifica la condizione in 'test'. Se questa è vera restituisce il valore 'se vero' altrimenti restituisce il valore 'se falso'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://it.wikipedia.org/wiki/Aritmetica"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Restituisce la somma dei due numeri."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Restituisce il quoziente dei due numeri."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Restituisce la differenza dei due numeri."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Restituisce il prodotto dei due numeri."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Restituisce il primo numero elevato alla potenza del secondo numero."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://it.wikipedia.org/wiki/Arcotangente2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 di X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Restituisce l'arcotangente del punto (X, Y) in gradi da -180 a 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://it.wikipedia.org/wiki/Addizione"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "cambia %1 di %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Aggiunge un numero alla variabile '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://it.wikipedia.org/wiki/Costante_matematica"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Restituisce una delle costanti comuniː π (3.141…), e (2.718…), φ (1.618…), radq(2) (1.414…), radq(½) (0.707…) o ∞ (infinito)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "costringi %1 da %2 a %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Costringe un numero all'interno dei limiti indicati (compresi)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "è divisibile per"; -Blockly.Msg["MATH_IS_EVEN"] = "è pari"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "è negativo"; -Blockly.Msg["MATH_IS_ODD"] = "è dispari"; -Blockly.Msg["MATH_IS_POSITIVE"] = "è positivo"; -Blockly.Msg["MATH_IS_PRIME"] = "è primo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se un numero è pari, dispari, primo, intero, positivo, negativo o se è divisibile per un certo numero. Restituisce vero o falso."; -Blockly.Msg["MATH_IS_WHOLE"] = "è intero"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://it.wikipedia.org/wiki/Resto"; -Blockly.Msg["MATH_MODULO_TITLE"] = "resto di %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Restituisce il resto della divisione di due numeri."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://it.wikipedia.org/wiki/Numero"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un numero."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media della lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "massimo della lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana della lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimo della lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mode della lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "elemento casuale della lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviazione standard della lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "somma la lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Restituisce la media (media aritmetica) dei valori numerici nella lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Restituisce il più grande numero della lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Restituisce il valore mediano della lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Restituisce il più piccolo numero della lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Restituisce una lista degli elementi più frequenti nella lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Restituisce un elemento casuale della lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Restituisce la deviazione standard della lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Restituisce la somma si tutti i numeri nella lista."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "frazione casuale"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Restituisce una frazione compresa fra 0.0 (incluso) e 1.0 (escluso)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "intero casuale da %1 a %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Restituisce un numero intero casuale compreso tra i due limiti indicati (inclusi)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://it.wikipedia.org/wiki/Arrotondamento"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrotonda"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrotonda verso il basso"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrotonda verso l'alto"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrotonda un numero verso l'alto o verso il basso."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://it.wikipedia.org/wiki/Radice_quadrata"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "assoluto"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "radice quadrata"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Restituisce il valore assoluto del numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Restituisce e elevato alla potenza del numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Restituisce il logaritmo naturale del numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Restituisce il logaritmo in base 10 del numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Restituisce l'opposto del numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Restituisce 10 elevato alla potenza del numero."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Restituisce la radice quadrata del numero."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://it.wikipedia.org/wiki/Funzione_trigonometrica"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Restituisce l'arco-coseno di un numero."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Restituisce l'arco-seno di un numero."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Restituisce l'arco-tangente di un numero."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Restituisce il coseno di un angolo espresso in gradi (non radianti)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Restituisce il seno di un angolo espresso in gradi (non radianti)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Restituisce la tangente di un angolo espresso in gradi (non radianti)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crea variabile colore..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crea variabile numero..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Crea variabile stringa..."; -Blockly.Msg["NEW_VARIABLE"] = "Crea variabile..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome della nuova variabile:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo della nuova variabile:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "consenti dichiarazioni"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "conː"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://it.wikipedia.org/wiki/Funzione (informatica)"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Esegue la funzione definita dall'utente '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://it.wikipedia.org/wiki/Funzione (informatica)"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Esegue la funzione definita dall'utente '%1' ed usa il suo output."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "conː"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crea '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descrivi questa funzione..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fai qualcosa"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "per"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea una funzione senza output."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ritorna"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea una funzione con un output."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Attenzioneː Questa funzione ha parametri duplicati."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Evidenzia definizione di funzione"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se un valore è vero allora restituisce un secondo valore."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Attenzioneː Questo blocco può essere usato solo all'interno di una definizione di funzione."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nome inputː"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Aggiungi un input alla funzione."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "input"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Aggiungi, rimuovi o riordina input alla funzione."; -Blockly.Msg["REDO"] = "Ripeti"; -Blockly.Msg["REMOVE_COMMENT"] = "Rimuovi commento"; -Blockly.Msg["RENAME_VARIABLE"] = "Rinomina variabile..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rinomina tutte le variabili '%1' in:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 aggiungi il testo %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Aggiunge del testo alla variabile '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "in minuscolo"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "con Iniziali Maiuscole"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "in MAIUSCOLO"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Restituisce una copia del testo in un diverso formato maiuscole/minuscole."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "prendi la prima lettera"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "prendi la lettera # dalla fine"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "prendi la lettera #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "prendi l'ultima lettera"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "prendi lettera casuale"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "nel testo %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Restituisce la lettera nella posizione indicata."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "conta %1 in %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Contare quante volte una parte di testo si ripete all'interno di qualche altro testo."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Aggiungi un elemento al testo."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unisci"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Aggiungi, rimuovi o riordina le sezioni per riconfigurare questo blocco testo."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "alla lettera # dalla fine"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "alla lettera #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "all'ultima lettera"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "nel testo"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "prendi sotto-stringa dalla prima lettera"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "prendi sotto-stringa dalla lettera # dalla fine"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "prendi sotto-stringa dalla lettera #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Restituisce la porzione di testo indicata."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trova la prima occorrenza del testo"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trova l'ultima occorrenza del testo"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "nel testo %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Restituisce l'indice della prima occorrenza del primo testo all'interno del secondo testo. Restituisce %1 se il testo non viene trovato."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 è vuoto"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Restituisce vero se il testo fornito è vuoto."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crea testo con"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crea un blocco di testo unendo un certo numero di elementi."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "lunghezza di %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Restituisce il numero di lettere (inclusi gli spazi) nel testo fornito."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "scrivi %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Scrive il testo, numero o altro valore indicato."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Richiedi un numero all'utente."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Richiede del testo da parte dell'utente."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "richiedi numero con messaggio"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "richiedi testo con messaggio"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "sostituisci %1 con %2 in %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "sostituisci tutte le occorrenze di un certo testo con qualche altro testo."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverti %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverte l'ordine dei caratteri nel testo."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://it.wikipedia.org/wiki/Stringa_(informatica)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una lettera, una parola o una linea di testo."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "rimuovi spazi da entrambi gli estremi"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "rimuovi spazi a sinistra"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "rimuovi spazi a destra"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Restituisce una copia del testo con gli spazi rimossi ad uno o entrambe le estremità."; -Blockly.Msg["TODAY"] = "Oggi"; -Blockly.Msg["UNDO"] = "Annulla"; -Blockly.Msg["UNNAMED_KEY"] = "senza nome"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crea 'imposta %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Restituisce il valore di una variabile."; -Blockly.Msg["VARIABLES_SET"] = "imposta %1 a %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crea 'prendi %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Imposta questa variabile ad essere pari all'input."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Una variabile denominata '%1' esiste già."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Una variabile nominata '%1' esiste già per un altro tipo: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Area di lavoro di Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Scrivi qualcosa..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Aggiungi commento"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Non si può cancellare la variabile '%1' perché è parte della definizione della funzione '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modifica valore:"; +Blockly.Msg["CLEAN_UP"] = "Pulisci i blocchi"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "I blocchi compressi contengono avvertimenti."; +Blockly.Msg["COLLAPSE_ALL"] = "Comprimi blocchi"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Comprimi blocco"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colore 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colore 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "rapporto"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "miscela"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mescola due colori insieme con un determinato rapporto (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://it.wikipedia.org/wiki/Colore"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Scegli un colore dalla tavolozza."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "colore casuale"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Scegli un colore a caso."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rosso"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colora con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Crea un colore con la quantità specificata di rosso, verde e blu. Tutti i valori devono essere compresi tra 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "esce dal ciclo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "prosegui con la successiva iterazione del ciclo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Esce dal ciclo."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Salta il resto di questo ciclo e prosegue con la successiva iterazione."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Attenzioneː Questo blocco può essere usato solo in un ciclo."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per ogni elemento %1 nella lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Per ogni elemento in una lista, imposta la variabile '%1' pari all'elemento e quindi esegue alcune istruzioni."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "conta con %1 da %2 a %3 per %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fa sì che la variabile '%1' prenda tutti i valori a partire dal numero di partenza fino a quello di arrivo, con passo pari all'intervallo specificato, ed esegue il blocco indicato."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Aggiungi una condizione al blocco se."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Aggiungi una condizione finale pigliatutto al blocco se."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Aggiungi, elimina o riordina le sezioni per riconfigurare questo blocco se."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "altrimenti"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "altrimenti se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Se un valore è vero allora esegue alcune istruzioni."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Se un valore è vero allora esegue il primo blocco di istruzioni. Altrimenti esegue il secondo blocco di istruzioni."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni. Se nessuno dei valori è vero esegue l'ultimo blocco di istruzioni."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://it.wikipedia.org/wiki/Ciclo_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fai"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ripeti %1 volte"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Esegue alcune istruzione diverse volte."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ripeti fino a che"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ripeti mentre"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Finché un valore è falso, esegue alcune istruzioni."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Finché un valore è vero, esegue alcune istruzioni."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Cancellare tutti i %1 blocchi?"; +Blockly.Msg["DELETE_BLOCK"] = "Cancella blocco"; +Blockly.Msg["DELETE_VARIABLE"] = "Cancella la variabile '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Cancella %1 usi della variabile '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Cancella %1 blocchi"; +Blockly.Msg["DIALOG_CANCEL"] = "Annulla"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disattiva blocco"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplica"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplica commento"; +Blockly.Msg["ENABLE_BLOCK"] = "Attiva blocco"; +Blockly.Msg["EXPAND_ALL"] = "Espandi blocchi"; +Blockly.Msg["EXPAND_BLOCK"] = "Espandi blocco"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ingressi esterni"; +Blockly.Msg["HELP"] = "Aiuto"; +Blockly.Msg["INLINE_INPUTS"] = "Ingressi in linea"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crea lista vuota"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Restituisce una lista, di lunghezza 0, contenente nessun record di dati"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Aggiungi, rimuovi o riordina le sezioni per riconfigurare il blocco lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crea lista con"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Aggiunge un elemento alla lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Crea una lista con un certo numero di elementi."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primo"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dalla fine"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "prendi"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "prendi e rimuovi"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ultimo"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "casuale"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "rimuovi"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Restituisce il primo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Restituisce l'elemento nella posizione indicata della lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Restituisce l'ultimo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Restituisce un elemento casuale in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Rimuove e restituisce il primo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Rimuove e restituisce l'elemento nella posizione indicata in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Restituisce e rimuove l'ultimo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Restituisce e rimuove un elemento casuale in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Rimuove il primo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Rimuove l'elemento nella posizione indicata in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Rimuove l'ultimo elemento in una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Rimuove un elemento casuale in una lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "da # dalla fine"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fino a #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "dagli ultimi"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "prendi sotto-lista dall'inizio"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "prendi sotto-lista da # dalla fine"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "prendi sotto-lista da #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Crea una copia della porzione specificata di una lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 corrisponde all'ultimo elemento."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 corrisponde al primo elemento."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trova la prima occorrenza dell'elemento"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trova l'ultima occorrenza dell'elemento"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Restituisce l'indice della prima/ultima occorrenza dell'elemento nella lista. Restituisce %1 se l'elemento non viene trovato."; +Blockly.Msg["LISTS_INLIST"] = "nella lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 è vuota"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Restituisce vero se la lista è vuota."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lunghezza di %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Restituisce la lunghezza della lista"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "crea una lista con l'elemento %1 ripetuto %2 volte"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Crea una lista costituita dal valore indicato ripetuto per il numero di volte specificato."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverti %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverti una copia di un elenco."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "come"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserisci in"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "imposta"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserisci l'elemento all'inizio della lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserisci un elemento nella posizione indicata in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Aggiungi un elemento alla fine di una lista"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserisce l'elemento casualmente in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Imposta il primo elemento in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Imposta l'elemento nella posizione indicata di una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Imposta l'ultimo elemento in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Imposta un elemento casuale in una lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "crescente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "decrescente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordinamento %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordina una copia di un elenco."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetico, ignorare differenze maiuscole e minuscole"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerico"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetico"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "crea lista da testo"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "crea testo da lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Unisci una lista di testi in un unico testo, separato da un delimitatore."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividi il testo in un elenco di testi, interrompendo ad ogni delimitatore."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con delimitatore"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Restituisce vero o falso."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "vero"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://it.wikipedia.org/wiki/Disuguaglianza"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Restituisce vero se gli input sono uno uguale all'altro."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Restituisce vero se il primo input è maggiore o uguale al secondo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Restituisce uguale se il primo input è maggiore o uguale al secondo input."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Restituisce vero se il primo input è minore del secondo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Restituisce vero se il primo input è minore o uguale al secondo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Restituisce vero se gli input non sono uno uguale all'altro."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Restituisce vero se l'input è falso. Restituisce falso se l'input è vero."; +Blockly.Msg["LOGIC_NULL"] = "nullo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Restituisce valore nullo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Restituisce vero se entrambi gli input sono veri."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Restituisce vero se almeno uno degli input è vero."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se vero"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Verifica la condizione in 'test'. Se questa è vera restituisce il valore 'se vero' altrimenti restituisce il valore 'se falso'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://it.wikipedia.org/wiki/Aritmetica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Restituisce la somma dei due numeri."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Restituisce il quoziente dei due numeri."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Restituisce la differenza dei due numeri."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Restituisce il prodotto dei due numeri."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Restituisce il primo numero elevato alla potenza del secondo numero."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://it.wikipedia.org/wiki/Arcotangente2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 di X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Restituisce l'arcotangente del punto (X, Y) in gradi da -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://it.wikipedia.org/wiki/Addizione"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "cambia %1 di %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Aggiunge un numero alla variabile '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://it.wikipedia.org/wiki/Costante_matematica"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Restituisce una delle costanti comuniː π (3.141…), e (2.718…), φ (1.618…), radq(2) (1.414…), radq(½) (0.707…) o ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "costringi %1 da %2 a %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Costringe un numero all'interno dei limiti indicati (compresi)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "è divisibile per"; +Blockly.Msg["MATH_IS_EVEN"] = "è pari"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "è negativo"; +Blockly.Msg["MATH_IS_ODD"] = "è dispari"; +Blockly.Msg["MATH_IS_POSITIVE"] = "è positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "è primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se un numero è pari, dispari, primo, intero, positivo, negativo o se è divisibile per un certo numero. Restituisce vero o falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "è intero"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://it.wikipedia.org/wiki/Resto"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto di %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Restituisce il resto della divisione di due numeri."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://it.wikipedia.org/wiki/Numero"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un numero."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "massimo della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimo della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mode della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "elemento casuale della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviazione standard della lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "somma la lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Restituisce la media (media aritmetica) dei valori numerici nella lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Restituisce il più grande numero della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Restituisce il valore mediano della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Restituisce il più piccolo numero della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Restituisce una lista degli elementi più frequenti nella lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Restituisce un elemento casuale della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Restituisce la deviazione standard della lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Restituisce la somma si tutti i numeri nella lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "frazione casuale"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Restituisce una frazione compresa fra 0.0 (incluso) e 1.0 (escluso)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "intero casuale da %1 a %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Restituisce un numero intero casuale compreso tra i due limiti indicati (inclusi)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://it.wikipedia.org/wiki/Arrotondamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arrotonda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arrotonda verso il basso"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arrotonda verso l'alto"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arrotonda un numero verso l'alto o verso il basso."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://it.wikipedia.org/wiki/Radice_quadrata"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "assoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "radice quadrata"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Restituisce il valore assoluto del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Restituisce e elevato alla potenza del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Restituisce il logaritmo naturale del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Restituisce il logaritmo in base 10 del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Restituisce l'opposto del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Restituisce 10 elevato alla potenza del numero."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Restituisce la radice quadrata del numero."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://it.wikipedia.org/wiki/Funzione_trigonometrica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Restituisce l'arco-coseno di un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Restituisce l'arco-seno di un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Restituisce l'arco-tangente di un numero."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Restituisce il coseno di un angolo espresso in gradi (non radianti)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Restituisce il seno di un angolo espresso in gradi (non radianti)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Restituisce la tangente di un angolo espresso in gradi (non radianti)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crea variabile colore..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crea variabile numero..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crea variabile stringa..."; +Blockly.Msg["NEW_VARIABLE"] = "Crea variabile..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome della nuova variabile:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo della nuova variabile:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "consenti dichiarazioni"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "conː"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://it.wikipedia.org/wiki/Funzione (informatica)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Esegue la funzione definita dall'utente '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://it.wikipedia.org/wiki/Funzione (informatica)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Esegue la funzione definita dall'utente '%1' ed usa il suo output."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "conː"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crea '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descrivi questa funzione..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fai qualcosa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "per"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crea una funzione senza output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ritorna"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Crea una funzione con un output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Attenzioneː Questa funzione ha parametri duplicati."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Evidenzia definizione di funzione"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se un valore è vero allora restituisce un secondo valore."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Attenzioneː Questo blocco può essere usato solo all'interno di una definizione di funzione."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nome inputː"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Aggiungi un input alla funzione."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "input"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Aggiungi, rimuovi o riordina input alla funzione."; +Blockly.Msg["REDO"] = "Ripeti"; +Blockly.Msg["REMOVE_COMMENT"] = "Rimuovi commento"; +Blockly.Msg["RENAME_VARIABLE"] = "Rinomina variabile..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rinomina tutte le variabili '%1' in:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 aggiungi il testo %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Aggiunge del testo alla variabile '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "in minuscolo"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "con Iniziali Maiuscole"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "in MAIUSCOLO"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Restituisce una copia del testo in un diverso formato maiuscole/minuscole."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "prendi la prima lettera"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "prendi la lettera # dalla fine"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "prendi la lettera #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "prendi l'ultima lettera"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "prendi lettera casuale"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "nel testo %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Restituisce la lettera nella posizione indicata."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "conta %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Contare quante volte una parte di testo si ripete all'interno di qualche altro testo."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Aggiungi un elemento al testo."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unisci"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Aggiungi, rimuovi o riordina le sezioni per riconfigurare questo blocco testo."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "alla lettera # dalla fine"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "alla lettera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "all'ultima lettera"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "nel testo"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "prendi sotto-stringa dalla prima lettera"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "prendi sotto-stringa dalla lettera # dalla fine"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "prendi sotto-stringa dalla lettera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Restituisce la porzione di testo indicata."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trova la prima occorrenza del testo"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trova l'ultima occorrenza del testo"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "nel testo %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Restituisce l'indice della prima occorrenza del primo testo all'interno del secondo testo. Restituisce %1 se il testo non viene trovato."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 è vuoto"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Restituisce vero se il testo fornito è vuoto."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crea testo con"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Crea un blocco di testo unendo un certo numero di elementi."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lunghezza di %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Restituisce il numero di lettere (inclusi gli spazi) nel testo fornito."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "scrivi %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Scrive il testo, numero o altro valore indicato."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Richiedi un numero all'utente."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Richiede del testo da parte dell'utente."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "richiedi numero con messaggio"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "richiedi testo con messaggio"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "sostituisci %1 con %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "sostituisci tutte le occorrenze di un certo testo con qualche altro testo."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverti %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverte l'ordine dei caratteri nel testo."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://it.wikipedia.org/wiki/Stringa_(informatica)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una lettera, una parola o una linea di testo."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "rimuovi spazi da entrambi gli estremi"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "rimuovi spazi a sinistra"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "rimuovi spazi a destra"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Restituisce una copia del testo con gli spazi rimossi ad uno o entrambe le estremità."; +Blockly.Msg["TODAY"] = "Oggi"; +Blockly.Msg["UNDO"] = "Annulla"; +Blockly.Msg["UNNAMED_KEY"] = "senza nome"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elemento"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crea 'imposta %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Restituisce il valore di una variabile."; +Blockly.Msg["VARIABLES_SET"] = "imposta %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crea 'prendi %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Imposta questa variabile ad essere pari all'input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Una variabile denominata '%1' esiste già."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Una variabile nominata '%1' esiste già per un altro tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Area di lavoro di Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Scrivi qualcosa..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ja.js b/msg/js/ja.js index 60a79328665..f929e195e2b 100644 --- a/msg/js/ja.js +++ b/msg/js/ja.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "コメントを追加"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "変数 '%1' は関数 '%2' の定義の一部であるため、削除できません"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "値を変える:"; -Blockly.Msg["CLEAN_UP"] = "ブロックを整理する"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "つぶしたブロックには警告が入っています。"; -Blockly.Msg["COLLAPSE_ALL"] = "ブロックを折りたたむ"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ブロックを折りたたむ"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "色 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "色 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "比率"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ブレンド"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "2色を与えられた比率(0.0~1.0)で混ぜます。"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ja.wikipedia.org/wiki/色"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "パレットから色を選んでください。"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ランダムな色"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ランダムに色を選ぶ。"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "青"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "緑"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "赤"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "色:"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "赤、緑、および青の指定された量で色を作成します。すべての値は 0 ~ 100 の間でなければなりません。"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ループから抜け出す"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ループの次の反復処理を続行します"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "入っているループから抜け出します。"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "このループの残りの部分をスキップして、ループの繰り返しを続けます。"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "注意: このブロックは、ループ内でのみ使用できます。"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "リスト%2の各項目%1について"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "リストの各項目について、その項目を変数'%1'として、いくつかのステートメントを実行します。"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; -Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 を %2 から %3 まで %4 ずつカウントする"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "変数 '%1' が開始番号から終了番号まで指定した間隔での値をとって、指定したブロックを実行する。"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "「もしも」のブロックに条件を追加します。"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ifブロックに、すべてをキャッチする条件を追加。"; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "追加、削除、またはセクションを順序変更して、ブロックをこれを再構成します。"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "そうでなければ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "そうでなくもし"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "もし"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "値が true の場合、ステートメントを実行します。"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合は、2番目のステートメントのブロックを実行します。"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。すべての値が true でない場合は、最後のステートメントのブロックを実行します。"; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ja.wikipedia.org/wiki/for文"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "実行"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 回繰り返す"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "いくつかのステートメントを数回実行します。"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "繰り返す:終わる条件"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "繰り返す:続ける条件"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "値がfalseの間、いくつかのステートメントを実行する。"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "値がtrueの間、いくつかのステートメントを実行する。"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "%1個あるすべてのブロックを削除しますか?"; -Blockly.Msg["DELETE_BLOCK"] = "ブロックを削除"; -Blockly.Msg["DELETE_VARIABLE"] = "変数 '%1' を削除"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1か所で使われている変数 '%2' を削除しますか?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1個のブロックを削除"; -Blockly.Msg["DIALOG_CANCEL"] = "キャンセル"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "ブロックを無効にする"; -Blockly.Msg["DUPLICATE_BLOCK"] = "複製"; -Blockly.Msg["DUPLICATE_COMMENT"] = "コメントを複製"; -Blockly.Msg["ENABLE_BLOCK"] = "ブロックを有効にする"; -Blockly.Msg["EXPAND_ALL"] = "ブロックを展開する"; -Blockly.Msg["EXPAND_BLOCK"] = "ブロックを展開する"; -Blockly.Msg["EXTERNAL_INPUTS"] = "外部入力"; -Blockly.Msg["HELP"] = "ヘルプ"; -Blockly.Msg["INLINE_INPUTS"] = "インライン入力"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "空のリストを作成"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "長さ0でデータ・レコードを含まない空のリストを返す"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "リスト"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "追加、削除、またはセクションの順序変更をして、このリスト・ブロックを再構成する。"; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "以下を使ってリストを作成:"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "リストに項目を追加。"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "項目数が不定のリストを作成。"; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "最初"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "位置:後ろから"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得して削除"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最後"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ランダム"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "削除"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "リストの最初の項目を返します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "リスト内の指定位置にある項目を返します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "リストの最後の項目を返します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "ランダム アイテム リストを返します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "リスト内の最初の項目を削除し返します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "リスト内の指定位置にある項目を削除し、返します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "リスト内の最後の項目を削除したあと返します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "リストのランダムなアイテムを削除し返します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "リスト内の最初の項目を削除します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "リスト内の指定された項目を削除します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "リスト内の最後の項目を削除します。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "リスト内にあるアイテムをランダムに削除します。"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "終了位置:後ろから"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "終了位置:"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "最後まで"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "最初からサブリストを取得する。"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "端から #のサブリストを取得します。"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# からサブディレクトリのリストを取得します。"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "リストの指定された部分のコピーを作成します。"; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 は、最後の項目です。"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 は、最初の項目です。"; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "で以下のアイテムの最初の出現箇所を検索:"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "で以下のテキストの最後の出現箇所を検索:"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "リスト項目の最初/最後に出現するインデックス位置を返します。項目が見つからない場合は %1 を返します。"; -Blockly.Msg["LISTS_INLIST"] = "リスト"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1が空"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "リストが空の場合は、true を返します。"; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1の長さ"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "リストの長さを返します。"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_REPEAT_TITLE"] = "項目%1を%2回繰り返したリストを作成"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "与えられた値を指定された回数繰り返してリストを作成。"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1を逆順に"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "リストのコピーを逆順にする。"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "値:"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "挿入位置:"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "セット"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "リストの先頭に項目を挿入します。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "リスト内の指定位置に項目を挿入します。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "リストの末尾に項目を追加します。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "リストに項目をランダムに挿入します。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "リスト内に最初の項目を設定します。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "リスト内の指定された位置に項目を設定します。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "リスト内の最後の項目を設定します。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "リスト内にランダムなアイテムを設定します。"; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "昇順"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降順"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 ( %2 ) に %3 を並び替える"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "リストのコピーを並べ替え"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "アルファベット順(大文字・小文字の区別無し)"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "数値順"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "アルファベット順"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "テキストからリストを作る"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "リストからテキストを作る"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "テキストのリストを区切り記号で区切られた一つのテキストにする"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "テキストを区切り記号で分割したリストにする"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "区切り記号"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "true または false を返します。"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ja.wikipedia.org/wiki/不等式"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "両方の入力が互いに等しい場合に true を返します。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "最初の入力が 2 番目の入力よりも大きい場合は true を返します。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "最初の入力が 2 番目の入力以上の場合に true を返します。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "最初の入力が 2 番目の入力よりも小さい場合は true を返します。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "最初の入力が 2 番目の入力以下の場合に true を返します。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "両方の入力が互いに等しくない場合に true を返します。"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1ではない"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "入力が false の場合は、true を返します。入力が true の場合は false を返します。"; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "null を返します。"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "かつ"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; -Blockly.Msg["LOGIC_OPERATION_OR"] = "または"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "両方の入力が true のときに true を返します。"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "少なくとも 1 つの入力が true のときに true を返します。"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "テスト"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://ja.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "false の場合"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "true の場合"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'テスト' の条件をチェックします。条件が true の場合、'true' の値を返します。それ以外の場合 'false' のを返します。"; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ja.wikipedia.org/wiki/算術"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "2 つの数の合計を返します。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "2 つの数の商を返します。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "2 つの数の差を返します。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "2 つの数の積を返します。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "最初の数を2 番目の値で累乗した結果を返します。"; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://ja.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2のatan2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "アークタンジェントを用いて、点 (X, Y) の角度を -180度から 180度で返します。"; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ja.wikipedia.org/wiki/加法"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 を %2 増やす"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "変数'%1'に数をたす。"; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ja.wikipedia.org/wiki/数学定数"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "いずれかの共通の定数のを返す: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (無限)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 を %2 以上 %3 以下の範囲に制限"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "指定した上限と下限の間に値を制限する(上限と下限の値を含む)。"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "は以下で割りきれる:"; -Blockly.Msg["MATH_IS_EVEN"] = "は偶数"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "は負"; -Blockly.Msg["MATH_IS_ODD"] = "は奇数"; -Blockly.Msg["MATH_IS_POSITIVE"] = "は正"; -Blockly.Msg["MATH_IS_PRIME"] = "は素数"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "数字が、偶数、奇数、素数、整数、正数、負数、または特定の数で割り切れるかどうかを判定し、true か false を返します。"; -Blockly.Msg["MATH_IS_WHOLE"] = "は整数"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ja.wikipedia.org/wiki/剰余演算"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1÷%2の余り"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "2つの数値の割り算の余りを返す。"; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ja.wikipedia.org/wiki/数"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "数です。"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "リストの平均"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "リストの最大値"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "リストの中央値"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "リストの最小値"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "リストの最頻値"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "リストからランダムに選ばれた項目"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "リストの標準偏差"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "リストの合計"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "リストの数値の平均 (算術平均) を返す。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "リストの最大値を返す。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "リストの中央値を返す。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "リストの最小値を返す。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "リスト中の最頻項目のリストを返す。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "リストからランダムに選ばれた要素を返す。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "リストの標準偏差を返す。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "リストの数値を足して返す。"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ja.wikipedia.org/wiki/疑似乱数"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "1未満の正の乱数"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0以上で1.0未満の範囲の乱数を返します。"; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ja.wikipedia.org/wiki/疑似乱数"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1から%2までのランダムな整数"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "指定された(上下限を含む)範囲のランダムな整数を返します。"; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ja.wikipedia.org/wiki/端数処理"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四捨五入"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "切り捨て"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "切り上げ"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "数値を切り上げるか切り捨てる"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ja.wikipedia.org/wiki/平方根"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "絶対値"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "平方根"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "絶対値を返す。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "ネイピア数eの数値乗を返す。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "数値の自然対数を返す。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "底が10の対数を返す。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "負の数を返す。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10の数値乗を返す。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "平方根を返す。"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ja.wikipedia.org/wiki/三角関数"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "アークコサイン(arccosin)を返す。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "アークサイン(arcsin)を返す。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "アークタンジェント(arctan)を返す。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "(ラジアンではなく)度数の余弦(cosin)を返す。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "(ラジアンではなく)度数の正弦(sin)を返す。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "(ラジアンではなく)度数の正接(tan)を返す。"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "色の変数を作る..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "数の変数を作る..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "文字列の変数を作る..."; -Blockly.Msg["NEW_VARIABLE"] = "変数の作成…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "新しい変数の名前:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新しい変数の型:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ステートメントを許可"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "引数:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ja.wikipedia.org/wiki/サブルーチン"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "ユーザー定義関数 '%1' を実行します。"; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ja.wikipedia.org/wiki/サブルーチン"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "ユーザー定義関数 '%1' を実行し、その出力を使用します。"; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "引数:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' を作成"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "この関数の説明…"; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "何かする"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "関数"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "出力なしの関数を作成します。"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返す"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "一つの出力を持つ関数を作成します。"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告: この関数には重複するパラメーターがあります。"; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "関数の内容を強調表示します。"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "1番目の値が true の場合、2番目の値を返します。"; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告: このブロックは、関数定義内でのみ使用できます。"; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "入力名:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "関数への入力の追加。"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "入力"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "この関数への入力の追加、削除、順番変更。"; -Blockly.Msg["REDO"] = "やり直す"; -Blockly.Msg["REMOVE_COMMENT"] = "コメントを削除"; -Blockly.Msg["RENAME_VARIABLE"] = "変数の名前を変える…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "選択した%1個すべての変数の名前を変える:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_APPEND_TITLE"] = "項目 %1 へテキストを追加 %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "変数 '%1' にテキストを追加。"; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "小文字に"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "タイトル ケースに"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "大文字に"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "別のケースに、テキストのコピーを返します。"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "最初の文字を得る"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "の、後ろから以下の数字番目の文字:"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "の、以下の数字番目の文字:"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; -Blockly.Msg["TEXT_CHARAT_LAST"] = "最後の文字を得る"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ランダムな文字を得る"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "テキスト %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "指定された位置に文字を返します。"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2に含まれる%1の数を数える"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "とある文が別の文のなかに使われた回数を数える。"; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "テキストへ項目を追加。"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "結合"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "セクションを追加、削除、または順序変更して、ブロックを再構成。"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "終了位置:後ろから"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "終了位置:"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "最後の文字"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "テキスト"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "の部分文字列を取得;最初から"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "の部分文字列を取得;開始位置:後ろから"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "の部分文字列を取得;開始位置:"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "テキストの指定部分を返します。"; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "で以下のテキストの最初の出現箇所を検索:"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "で以下のテキストの最後の出現箇所を検索:"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "テキスト %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "二番目のテキストの中で一番目のテキストが最初/最後に出現したインデックスを返す。テキストが見つからない場合は%1を返す。"; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1が空"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "与えられたテキストが空の場合は true を返す。"; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "テキストの作成:"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "任意の数の項目一部を一緒に接合してテキストを作成。"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1の長さ"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "与えられたテキストの(スペースを含む)文字数を返す。"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 を表示"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "指定したテキスト、番号または他の値を印刷します。"; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "ユーザーに数値のインプットを求める。"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "ユーザーにテキスト入力を求める。"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "メッセージで番号の入力を求める"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "メッセージでテキスト入力を求める"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%3に含まれる%1を%2に置換"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "文に含まれるキーワードを置換する。"; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1を逆順に"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "文の文字を逆順にする。"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ja.wikipedia.org/wiki/文字列"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "文字、単語、または行のテキスト。"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "両端のスペースを取り除く"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "左端のスペースを取り除く"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "右端のスペースを取り除く"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "スペースを 1 つまたは両方の端から削除したのち、テキストのコピーを返します。"; -Blockly.Msg["TODAY"] = "今日"; -Blockly.Msg["UNDO"] = "取り消す"; -Blockly.Msg["UNNAMED_KEY"] = "名前なし"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "項目"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'セット%1を作成します。"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "この変数の値を返します。"; -Blockly.Msg["VARIABLES_SET"] = "%1 に %2 をセット"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 を取得' を作成します。"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "この入力を変数と等しくなるように設定します。"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "変数名 '%1' は既に存在しています。"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%2' 型の '%1' という名前の変数が既に存在します。"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklyワークスペース"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ここへ入力"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "コメントを追加"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "変数 '%1' は関数 '%2' の定義の一部であるため、削除できません"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "値を変える:"; +Blockly.Msg["CLEAN_UP"] = "ブロックを整理する"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "つぶしたブロックには警告が入っています。"; +Blockly.Msg["COLLAPSE_ALL"] = "ブロックを折りたたむ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ブロックを折りたたむ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "色 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "色 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "比率"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ブレンド"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "2色を与えられた比率(0.0~1.0)で混ぜます。"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ja.wikipedia.org/wiki/色"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "パレットから色を選んでください。"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ランダムな色"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ランダムに色を選ぶ。"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "青"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "緑"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "赤"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "色:"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "赤、緑、および青の指定された量で色を作成します。すべての値は 0 ~ 100 の間でなければなりません。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ループから抜け出す"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ループの次の反復処理を続行します"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "入っているループから抜け出します。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "このループの残りの部分をスキップして、ループの繰り返しを続けます。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "注意: このブロックは、ループ内でのみ使用できます。"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "リスト%2の各項目%1について"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "リストの各項目について、その項目を変数'%1'として、いくつかのステートメントを実行します。"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 を %2 から %3 まで %4 ずつカウントする"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "変数 '%1' が開始番号から終了番号まで指定した間隔での値をとって、指定したブロックを実行する。"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "「もしも」のブロックに条件を追加します。"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ifブロックに、すべてをキャッチする条件を追加。"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "追加、削除、またはセクションを順序変更して、ブロックをこれを再構成します。"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "そうでなければ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "そうでなくもし"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "もし"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "値が true の場合、ステートメントを実行します。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合は、2番目のステートメントのブロックを実行します。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。すべての値が true でない場合は、最後のステートメントのブロックを実行します。"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ja.wikipedia.org/wiki/for文"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "実行"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 回繰り返す"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "いくつかのステートメントを数回実行します。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "繰り返す:終わる条件"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "繰り返す:続ける条件"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "値がfalseの間、いくつかのステートメントを実行する。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "値がtrueの間、いくつかのステートメントを実行する。"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "%1個あるすべてのブロックを削除しますか?"; +Blockly.Msg["DELETE_BLOCK"] = "ブロックを削除"; +Blockly.Msg["DELETE_VARIABLE"] = "変数 '%1' を削除"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1か所で使われている変数 '%2' を削除しますか?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1個のブロックを削除"; +Blockly.Msg["DIALOG_CANCEL"] = "キャンセル"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "ブロックを無効にする"; +Blockly.Msg["DUPLICATE_BLOCK"] = "複製"; +Blockly.Msg["DUPLICATE_COMMENT"] = "コメントを複製"; +Blockly.Msg["ENABLE_BLOCK"] = "ブロックを有効にする"; +Blockly.Msg["EXPAND_ALL"] = "ブロックを展開する"; +Blockly.Msg["EXPAND_BLOCK"] = "ブロックを展開する"; +Blockly.Msg["EXTERNAL_INPUTS"] = "外部入力"; +Blockly.Msg["HELP"] = "ヘルプ"; +Blockly.Msg["INLINE_INPUTS"] = "インライン入力"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "空のリストを作成"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "長さ0でデータ・レコードを含まない空のリストを返す"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "リスト"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "追加、削除、またはセクションの順序変更をして、このリスト・ブロックを再構成する。"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "以下を使ってリストを作成:"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "リストに項目を追加。"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "項目数が不定のリストを作成。"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "最初"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "位置:後ろから"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得して削除"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最後"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ランダム"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "削除"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "リストの最初の項目を返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "リスト内の指定位置にある項目を返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "リストの最後の項目を返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "ランダム アイテム リストを返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "リスト内の最初の項目を削除し返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "リスト内の指定位置にある項目を削除し、返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "リスト内の最後の項目を削除したあと返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "リストのランダムなアイテムを削除し返します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "リスト内の最初の項目を削除します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "リスト内の指定された項目を削除します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "リスト内の最後の項目を削除します。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "リスト内にあるアイテムをランダムに削除します。"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "終了位置:後ろから"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "終了位置:"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "最後まで"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "最初からサブリストを取得する。"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "端から #のサブリストを取得します。"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# からサブディレクトリのリストを取得します。"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "リストの指定された部分のコピーを作成します。"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 は、最後の項目です。"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 は、最初の項目です。"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "で以下のアイテムの最初の出現箇所を検索:"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "で以下のテキストの最後の出現箇所を検索:"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "リスト項目の最初/最後に出現するインデックス位置を返します。項目が見つからない場合は %1 を返します。"; +Blockly.Msg["LISTS_INLIST"] = "リスト"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1が空"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "リストが空の場合は、true を返します。"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1の長さ"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "リストの長さを返します。"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "項目%1を%2回繰り返したリストを作成"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "与えられた値を指定された回数繰り返してリストを作成。"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1を逆順に"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "リストのコピーを逆順にする。"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "値:"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "挿入位置:"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "セット"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "リストの先頭に項目を挿入します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "リスト内の指定位置に項目を挿入します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "リストの末尾に項目を追加します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "リストに項目をランダムに挿入します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "リスト内に最初の項目を設定します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "リスト内の指定された位置に項目を設定します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "リスト内の最後の項目を設定します。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "リスト内にランダムなアイテムを設定します。"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "昇順"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降順"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 ( %2 ) に %3 を並び替える"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "リストのコピーを並べ替え"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "アルファベット順(大文字・小文字の区別無し)"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "数値順"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "アルファベット順"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "テキストからリストを作る"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "リストからテキストを作る"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "テキストのリストを区切り記号で区切られた一つのテキストにする"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "テキストを区切り記号で分割したリストにする"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "区切り記号"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "true または false を返します。"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ja.wikipedia.org/wiki/不等式"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "両方の入力が互いに等しい場合に true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "最初の入力が 2 番目の入力よりも大きい場合は true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "最初の入力が 2 番目の入力以上の場合に true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "最初の入力が 2 番目の入力よりも小さい場合は true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "最初の入力が 2 番目の入力以下の場合に true を返します。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "両方の入力が互いに等しくない場合に true を返します。"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1ではない"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "入力が false の場合は、true を返します。入力が true の場合は false を返します。"; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "null を返します。"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "かつ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "または"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "両方の入力が true のときに true を返します。"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "少なくとも 1 つの入力が true のときに true を返します。"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "テスト"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://ja.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "false の場合"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "true の場合"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'テスト' の条件をチェックします。条件が true の場合、'true' の値を返します。それ以外の場合 'false' のを返します。"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ja.wikipedia.org/wiki/算術"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "2 つの数の合計を返します。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "2 つの数の商を返します。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "2 つの数の差を返します。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "2 つの数の積を返します。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "最初の数を2 番目の値で累乗した結果を返します。"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://ja.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2のatan2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "アークタンジェントを用いて、点 (X, Y) の角度を -180度から 180度で返します。"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ja.wikipedia.org/wiki/加法"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 を %2 増やす"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "変数'%1'に数をたす。"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ja.wikipedia.org/wiki/数学定数"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "いずれかの共通の定数のを返す: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (無限)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 を %2 以上 %3 以下の範囲に制限"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "指定した上限と下限の間に値を制限する(上限と下限の値を含む)。"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "は以下で割りきれる:"; +Blockly.Msg["MATH_IS_EVEN"] = "は偶数"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "は負"; +Blockly.Msg["MATH_IS_ODD"] = "は奇数"; +Blockly.Msg["MATH_IS_POSITIVE"] = "は正"; +Blockly.Msg["MATH_IS_PRIME"] = "は素数"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "数字が、偶数、奇数、素数、整数、正数、負数、または特定の数で割り切れるかどうかを判定し、true か false を返します。"; +Blockly.Msg["MATH_IS_WHOLE"] = "は整数"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ja.wikipedia.org/wiki/剰余演算"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1÷%2の余り"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "2つの数値の割り算の余りを返す。"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ja.wikipedia.org/wiki/数"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "数です。"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "リストの平均"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "リストの最大値"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "リストの中央値"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "リストの最小値"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "リストの最頻値"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "リストからランダムに選ばれた項目"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "リストの標準偏差"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "リストの合計"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "リストの数値の平均 (算術平均) を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "リストの最大値を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "リストの中央値を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "リストの最小値を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "リスト中の最頻項目のリストを返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "リストからランダムに選ばれた要素を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "リストの標準偏差を返す。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "リストの数値を足して返す。"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ja.wikipedia.org/wiki/疑似乱数"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "1未満の正の乱数"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0以上で1.0未満の範囲の乱数を返します。"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ja.wikipedia.org/wiki/疑似乱数"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1から%2までのランダムな整数"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "指定された(上下限を含む)範囲のランダムな整数を返します。"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ja.wikipedia.org/wiki/端数処理"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四捨五入"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "切り捨て"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "切り上げ"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "数値を切り上げるか切り捨てる"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ja.wikipedia.org/wiki/平方根"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "絶対値"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "平方根"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "絶対値を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "ネイピア数eの数値乗を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "数値の自然対数を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "底が10の対数を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "負の数を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10の数値乗を返す。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "平方根を返す。"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ja.wikipedia.org/wiki/三角関数"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "アークコサイン(arccosin)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "アークサイン(arcsin)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "アークタンジェント(arctan)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "(ラジアンではなく)度数の余弦(cosin)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "(ラジアンではなく)度数の正弦(sin)を返す。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "(ラジアンではなく)度数の正接(tan)を返す。"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "色の変数を作る..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "数の変数を作る..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "文字列の変数を作る..."; +Blockly.Msg["NEW_VARIABLE"] = "変数の作成…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "新しい変数の名前:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新しい変数の型:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ステートメントを許可"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "引数:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ja.wikipedia.org/wiki/サブルーチン"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "ユーザー定義関数 '%1' を実行します。"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ja.wikipedia.org/wiki/サブルーチン"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "ユーザー定義関数 '%1' を実行し、その出力を使用します。"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "引数:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' を作成"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "この関数の説明…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "何かする"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "関数"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "出力なしの関数を作成します。"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返す"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "一つの出力を持つ関数を作成します。"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告: この関数には重複するパラメーターがあります。"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "関数の内容を強調表示します。"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "1番目の値が true の場合、2番目の値を返します。"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告: このブロックは、関数定義内でのみ使用できます。"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "入力名:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "関数への入力の追加。"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "入力"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "この関数への入力の追加、削除、順番変更。"; +Blockly.Msg["REDO"] = "やり直す"; +Blockly.Msg["REMOVE_COMMENT"] = "コメントを削除"; +Blockly.Msg["RENAME_VARIABLE"] = "変数の名前を変える…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "選択した%1個すべての変数の名前を変える:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "項目 %1 へテキストを追加 %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "変数 '%1' にテキストを追加。"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "小文字に"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "タイトル ケースに"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "大文字に"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "別のケースに、テキストのコピーを返します。"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "最初の文字を得る"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "の、後ろから以下の数字番目の文字:"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "の、以下の数字番目の文字:"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "最後の文字を得る"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ランダムな文字を得る"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "テキスト %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "指定された位置に文字を返します。"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2に含まれる%1の数を数える"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "とある文が別の文のなかに使われた回数を数える。"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "テキストへ項目を追加。"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "結合"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "セクションを追加、削除、または順序変更して、ブロックを再構成。"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "終了位置:後ろから"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "終了位置:"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "最後の文字"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "テキスト"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "の部分文字列を取得;最初から"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "の部分文字列を取得;開始位置:後ろから"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "の部分文字列を取得;開始位置:"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "テキストの指定部分を返します。"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "で以下のテキストの最初の出現箇所を検索:"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "で以下のテキストの最後の出現箇所を検索:"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "テキスト %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "二番目のテキストの中で一番目のテキストが最初/最後に出現したインデックスを返す。テキストが見つからない場合は%1を返す。"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1が空"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "与えられたテキストが空の場合は true を返す。"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "テキストの作成:"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "任意の数の項目一部を一緒に接合してテキストを作成。"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1の長さ"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "与えられたテキストの(スペースを含む)文字数を返す。"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 を表示"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "指定したテキスト、番号または他の値を印刷します。"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "ユーザーに数値のインプットを求める。"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "ユーザーにテキスト入力を求める。"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "メッセージで番号の入力を求める"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "メッセージでテキスト入力を求める"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%3に含まれる%1を%2に置換"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "文に含まれるキーワードを置換する。"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1を逆順に"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "文の文字を逆順にする。"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ja.wikipedia.org/wiki/文字列"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "文字、単語、または行のテキスト。"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "両端のスペースを取り除く"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "左端のスペースを取り除く"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "右端のスペースを取り除く"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "スペースを 1 つまたは両方の端から削除したのち、テキストのコピーを返します。"; +Blockly.Msg["TODAY"] = "今日"; +Blockly.Msg["UNDO"] = "取り消す"; +Blockly.Msg["UNNAMED_KEY"] = "名前なし"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "項目"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'セット%1を作成します。"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "この変数の値を返します。"; +Blockly.Msg["VARIABLES_SET"] = "%1 に %2 をセット"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 を取得' を作成します。"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "この入力を変数と等しくなるように設定します。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "変数名 '%1' は既に存在しています。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%2' 型の '%1' という名前の変数が既に存在します。"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklyワークスペース"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ここへ入力"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ka.js b/msg/js/ka.js index 7eea02012ee..1603e3360bd 100644 --- a/msg/js/ka.js +++ b/msg/js/ka.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "კარგი"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "ბლოკის ჩართვა"; -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Help"; // untranslated -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "სიის ჯამი"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "კარგი"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ბლოკის ჩართვა"; +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "სიის ჯამი"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/kab.js b/msg/js/kab.js index 1e428de6ee1..fb219164dac 100644 --- a/msg/js/kab.js +++ b/msg/js/kab.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Rnu awennit"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ur izmir ara ad yekkes amutti '%1' acku yedda di tbadut n twuri '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Beddel azal:"; -Blockly.Msg["CLEAN_UP"] = "Sfeḍ iḥedran"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Iḥedran yettin gebren ilɣa."; -Blockly.Msg["COLLAPSE_ALL"] = "Fneẓ iḥedran"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Fneẓ iḥder"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ini 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ini 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "afmiḍi"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "rkec"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sexleḍ sin n yiniten d tesmekta (gar 0.0 ar 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://kab.wikipedia.org/wiki/Ini"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Fren ini seg ugalis."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ini agacuran"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Fren ini s wudem agacuran."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "anili"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "azegzaw"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "azeggaɣ"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ini s"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Rnu ini s tnecta yettunefk s tesmekta n uzeggaɣ, azegzaw, akked unili. Yessefk akk azalen ad ilin gar 0 akked 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ffeɣ seg tneddict"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "kemmel s wallus d tneddict d-iteddun"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ffeɣ si tneddict tamagbart."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Zgel ayen i d-yeqqimen di tneddict-a, sakin kemmel allus d-itteddun."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Ɣur-k: Iḥder-a yessefk ad yettwaseqdec di tneddict."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "i yal aferdis %1 di tebdart %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "I yal aferdis n tebdart, mudd azal n uferdis i umutti '%1', sakin selkem tinaḍin."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "siḍen akked %1 seg %2 ar %3 s %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Mudd i umutti '%1' azalen seg umḍan n tazwara armi d amḍan n taggara, s tmerna n usurif yettunefken, sakin selkem tinaḍin yettunefken."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Rnu tawtilt i yiḥder ma."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Rnu tawtilt taneggarut i yiḥder ma igebren akk tinaḍin."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Rnu, kkes, neq ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a ma."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "neɣ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "neɣ ma"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ma"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "mayella azal d idetti, ihi selkem kra n tinaḍin."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Mayella azal d idetti, selkem iḥder amezwaru. Neɣ ma ulac, selkem iḥder wis sin."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ ma azal wis sin d ucciḍ, selkem iḥder wis sin."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ, mayella azal wis sin d idetti, selkem iḥder wis sin. Mayella ula d yiwen seg-sen ur yelli d idetti, selkem iḥder aneggaru."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "eg"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Ales %1 n tikkal"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Selkem ddeqs n tinaḍin ddeqs n tikal."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ales armi"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ales skud"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Skud azal d ucciḍ, selkem ihi tinadin."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Skud azal d idetti, selkem ihi tinadin."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Kkes akk %1 n yiḥedran?"; -Blockly.Msg["DELETE_BLOCK"] = "Kkes iḥder"; -Blockly.Msg["DELETE_VARIABLE"] = "Kkes amutti '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Kkes %1 n useqdec n umutti '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Kkes %1 n yiḥedran"; -Blockly.Msg["DIALOG_CANCEL"] = "Sefsex"; -Blockly.Msg["DIALOG_OK"] = "IH"; -Blockly.Msg["DISABLE_BLOCK"] = "Sens iḥder"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Sleg"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Sleg awennit"; -Blockly.Msg["ENABLE_BLOCK"] = "Sens iḥedran"; -Blockly.Msg["EXPAND_ALL"] = "Snefli iḥedran"; -Blockly.Msg["EXPAND_BLOCK"] = "Snefli iḥder"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Inekcam izɣarayen"; -Blockly.Msg["HELP"] = "Tallelt"; -Blockly.Msg["INLINE_INPUTS"] = "Inekcam srid"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "rnu tabdart tilemt"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ad d-yerr tabdart n teɣzi 0 ur yegbiren ara ikalasen"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "tabdart"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a n tebdart."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "rnu tabdart s"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ad yernu aferdis ɣer tebdart."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ad yernu tabdart s umḍan n yiferdisen."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "amezwaru"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# si taggara"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "awi"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "awi rnu kkes"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "aneggaru"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "agacuran"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "kkes"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Ad d-yerr aferdis amezwaru n tebdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ad d-yerr aferdis n wadig yettwamlen deg tabdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Ad d-yerr aferdis aneggaru di tebdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Ad yerr aferdis agacuran di tebdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Ad yekkes sakin ad -yerr aferdis amezwaru di tebdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Ad yekkes syin ad d-yerr aferdis n wadig yettwamlen deg tabdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Ad yekkes sakin ad yerr aferdis aneggaru di tebdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Ad yekkes sakin ad d-yerr aferdis agacuran di tebdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Ad yekkes aferdis amezwaru n tebdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Ad yekkes aferdis n wadig yettwamlen deg tabdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Ad yekkes aferdis aneggaru di tebdart."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Ad yekkes aferdis agacuran di tebdart."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ar # si tagara"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ar #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ar taggara"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "awi-d tabdart tasnawant si tazwara"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "awi-d tabdart tasnawant seg # si taggara"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "awi-d tabdart tasnawant seg #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ad yernu anɣel n uḥric yettwamlen n tebdart."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 d aferdis aneggaru."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 d aferdis amezwaru."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "af-d timeḍriwt tamezwarut n uferdis"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "af-d timeḍriwt taneggarut n uferdis"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uferdis amezwaru deg tebdart. Ad d-yerr %1 ma yella ulac aferdis."; -Blockly.Msg["LISTS_INLIST"] = "di tebdart"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 d ilem"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ad d-yerr idetti mayella tabdart d tilemt."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "teɣzi n %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Ad d-yerr teɣzi n tebdart."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "ad yernu tabdart s uferdis %1 s tmeḍriwt %2"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ad yernu tabdart inetmen n wazal yettunefken ddeqs n tikal s umḍan yettwammlen."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "tti %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Tti anɣel n tebdart."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "am"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ger s"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "sbadu"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ad iger aferdis di tazwara n tebdart."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ad iger aferdis n wadig yettwamlen deg tabdart."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ad yernu aferdis ar taggara n tebdart."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ad iger aferdis s wudem agacuran deg tebdart."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ad d-yerr aferdis amezwaru di tebdart."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ad yesbadu aferdis n wadig yettwamlen deg tabdart."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ad d-yerr aferdis aneggaru di tebdart."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ad yesbadu aferdis agacuran di tebdart."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "igemmen"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "amnusruy"; -Blockly.Msg["LISTS_SORT_TITLE"] = "smizzwer %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Smizzwer anɣel n tebdart."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "agemmayan, anef i truẓi n usekkil"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "umḍin"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "agemmayan"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "rnu tabdart seg uḍris"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "rnu aḍris si tebdart"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ad yesdukel tabdart n yiḍrisen deg yiwen s usnabraz."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Ad yegzem aḍris ɣef ddeqs n tebdarin n yiḍrisen, s unegzum yal anabraz."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "s unabraz"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ucciḍ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ad d-yerr idetti neɣ ucciḍ"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "idetti"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ad yerr idetti ma yella i sin n yinekcam d imegduya."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ad d-yerr idetti ma anekcam amezwaru meqqer ɣef wis sin."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ad d-yerr idetti ma anekcam amezwaru meqqer neɣ yegda wis sin."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy ɣef wis sin."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy neɣ yegda wis sin."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ad d-yerr idetti mayella i sin n yinekcam mačči d imegduya."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "mačči %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ad d-yerr idetti ma anekcam d ucciḍ. Ad d-yerr ucciḍ ma yella anekcam d idetti."; -Blockly.Msg["LOGIC_NULL"] = "Ilem"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Ad d-yerr ilem"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "akked"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "neɣ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ad d-yerr idetti ma inekcam d idettiyen."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ad d-yerr idetti ma ɣarsum yiwen seg yinekcam d idetti."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "sekyed"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ma d ucciḍ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ma d idetti"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Senqed tawtilt deg 'sekyed'. Ma d idetti, ad d-yerr azal 'ma idetti', ma ulac ad d-yerr azam 'ma ucciḍ'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ad d-yerr tmerni n sin n yimiḍanen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ad d-yerr aful n sin n yimḍanen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ad d-yerr tmernit n sin n yimiḍanen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ad d-yerr tukksa gar sin n yimiḍanen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ad d-yerr amḍan amezwaru uzmir wis sin."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://kab.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 seg X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Ad d-yerr arctangent n waggaz (X, Y) s tfesniwin deg -180 ɣer 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "snifel %1 s %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Rnu amḍan i umutti '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ad d-yerr yiwet seg tmezgiyin yettwasnen : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), neɣ ∞ (ifeḍ)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "Err tamara i %1 gar %2 akked %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Err tamara n umḍan akken ad yili gar snat n tlisa (ddant)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "d ubṭay ɣef"; -Blockly.Msg["MATH_IS_EVEN"] = "d ayugan"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "d uzdir"; -Blockly.Msg["MATH_IS_ODD"] = "d aryugan"; -Blockly.Msg["MATH_IS_POSITIVE"] = "d ufrar"; -Blockly.Msg["MATH_IS_PRIME"] = "d amenzu"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Senqed ma amḍan d ayugan, d aryugan, d amenzu, d ummid, d ufrar, d uzdir, neɣ d ubṭay ɣef kra n umḍan. Ad d-yerr idetti neɣ ucciḍ."; -Blockly.Msg["MATH_IS_WHOLE"] = "d ummid"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "tasagert n %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Ad d-yerr tasagert n beṭṭu n sin n yimḍanen."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Amḍan."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "talemmast n tebdart"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "afellay n tebdart"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "tanammast n tebdart"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "adday n tebdart"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Tiggtiwin n tebdart"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "aferdis agacuran n tebdart"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "azza n tebdart"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Timernit n tebdart"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ad d-yerr talemmas( tasnamḍant) n wazalen umḍinen di tebdart."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ad d-yerr amḍan ameqqran di tebdart."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Ad d-yerr amḍan n unammas n tebdart."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ad d-yerr amḍan ameẓẓyan di tebdart."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Ad d-yerr tabdart n yiferdisen i d-yettuɣalen s waṭas di tebdart."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Ad d-yerr aferdis seg tebdart s wudem agacuran."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ad d-yerr azza n tebdart."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ad d-yerr timernit n yimḍanen meṛṛa deg tebdart."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "tirẓi tagacurant"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Ad d-yerr tirẓi tagacurant gar 0.0 (yedda) akked 1.0 (ur yeddi ara)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ummid agacuran gar %1 akked %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Ad d-yerr ummid agacuran gar snat n tlisa, ddant."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "Saẓ"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Saẓ d akesser"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Saẓ d asawen"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Saẓ amiḍan d asawen neɣ d akesser."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "azal amagdez"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "aẓar uzmir 2"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ad d-yerr azal amagdez n umiḍan."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ad d-yerr e uzmir amiḍan."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ad d-yerr alugaritm agamawan n umiḍan."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ad d-yerr alugaritm 10 n umiḍan."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Ad d-yerr ugmiḍ n umḍan."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Ad d-yerr 10 uzmir amiḍan."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ad d-yerr aẓar uzmir sin n umḍan."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ad d-yerr taganzi n ukusinus n umḍan."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ad d-yerr taganzi n usinus n umḍan."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ad d-yerr taganzi n teslayt n umiḍan."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ad d-yerr akusinus n teɣmert s tfesna (mačči aṛadyan)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ad d-yerr asinus n teɣmert s tfesna (mačči aṛadyan)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ad d-yerr taslayt n teɣmert s tfesna (mačči aṛadyan)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Rnu amutti ini..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Rnu amutti amḍan..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Rnu amutti azrir n yisekkilen..."; -Blockly.Msg["NEW_VARIABLE"] = "Rnu amutti..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Isem amaynut n wazal:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Anaw amaynut n umutti:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "Sireg asmizzwer"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Selkem tawuri '%1' i yesbadu useqdac."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Selkem tawuri '%1' i yesbadu useqdac sakin seqdec agmuḍ-is."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Rnu '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Seglem tawuri-a..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "eg kra"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "i"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Rnu tawuri s war anekcam."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "tuɣalin"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "ad yernu tawuri s tuffɣa."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ɣur-k: Tawuri-a ɣur-s iɣewwaṛen usligen."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sebrureq tabadut n twuri"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ma yella azal d idetti, ad d-yerr azal-nniḍen wis sin."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Ɣur-k: Iḥder-a yezmer ur yettwaseqdac ara anagar deg tebadut n twuri-a."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "isem n unekcum:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "rnu anekcam ɣer twuri-a."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inekcam"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Rnu, kkes neɣ ales asmizzwer n yinekcam i twuri-a."; -Blockly.Msg["REDO"] = "Uɣal"; -Blockly.Msg["REMOVE_COMMENT"] = "Kkes awennit"; -Blockly.Msg["RENAME_VARIABLE"] = "Beddel isem n umutti..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Beddel akk isem n yimuttiyen '%1' ar:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "Rnu aḍris %2 ɣer %1"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Rnu aḍris ɣer umutti '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "s usekkil ameẓẓyan"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "s Umeqqran Di Tazwara n Yal Awal."; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "s USEKKIL AMEQQRAN"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Ad d-yerr anɣel n uḍris s truẓi-nniḍen."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "awi-d asekkil amezwaru"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "awi-d asekkil # si taggara"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "awi asekkel #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "awi-d asekkil aneggaru"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "awi-d asekkil s wudem agacuran"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "deg uḍris %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Ad d-yerr asekkil deg wuṭṭun yettwamlen."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "amḍan %1 ɣef %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Ad isiḍen amḍan n tmeḍriwt n uḍris deg wayeḍ."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Rnu aferdis ɣer uḍris."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sdukkel"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "armi d asekkil # si taggara"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "armi d asekkil #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "armi d asekkil aneggaru"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "deg uḍris"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "awi-d azrir asnawan seg usekkil amezwaru"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "awi-d azrir asnawan seg usekkil # si taggara"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "awi-d azrir asnawan seg usekkil #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Ad d-yerr aḥric yettwamlen deg uḍris."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "af-d timeḍriwt tamezwarut n uḍris"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "af-d timeḍriwt taneggarut deg uḍris"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "deg uḍris %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uḍris amezwaru deg uḍris wis sin. Ad d-yerr %1 ma yella ulac aḍris."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 d ilem"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Add d-yerr idetti ma yella aḍris d ilem."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "rnu aḍris s"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ad yernu taceqquft n uḍris s usdukel gar yal amḍan n yiferdisen."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "teɣzi n %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Ad d-yerr amḍan n yisekkilen (ddan ula d imellalen) deg uḍris d-ittunefken."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "ad d-yesken %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Sken aḍris, amḍan neɣ azal-nniḍen d-ittunefken."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Suter amḍan i useqdac."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Suter aḍris i useqdac."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "aneftaɣ i umḍan s yizen"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "aneftaɣ i uḍris s yizen"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "semselsi %1 s %2 di %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ad isemselsi akk timeḍriwin n uḍris s wayeḍ."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "tti %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Ad yetti asmizzwer n yisekkilen deg uḍris."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Asekkil, awal neɣ izirig n uḍris."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "Tukksa n yisekkilen imellalen seg sin n yidisan"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "tukksa n yisekkilen seg uzelmaḍ"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "tukksa n yisekkilen seg uyeffus"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Ad d-yerr anɣel n uḍris s yisekkilen ilmawen yettwakksen seg yixf neɣ i sin."; -Blockly.Msg["TODAY"] = "Ass-a"; -Blockly.Msg["UNDO"] = "Err-d"; -Blockly.Msg["UNNAMED_KEY"] = "war isem"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "aferdis"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Rnu 'sbadu %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Ad d-yerr azal n umutti-a."; -Blockly.Msg["VARIABLES_SET"] = "sbadu %1 ar %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Rnu 'awi-d %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ad yesbadu amutti-a akken ad yegdu azal n unekcam."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Amutti s yisem '%1' yella yakan."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Amutti s yisem '%1' yella yakan i wanaw-nniḍen: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Tallunt n umahel Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Ini kra..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Rnu awennit"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ur izmir ara ad yekkes amutti '%1' acku yedda di tbadut n twuri '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Beddel azal:"; +Blockly.Msg["CLEAN_UP"] = "Sfeḍ iḥedran"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Iḥedran yettin gebren ilɣa."; +Blockly.Msg["COLLAPSE_ALL"] = "Fneẓ iḥedran"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Fneẓ iḥder"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ini 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ini 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "afmiḍi"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "rkec"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sexleḍ sin n yiniten d tesmekta (gar 0.0 ar 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://kab.wikipedia.org/wiki/Ini"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Fren ini seg ugalis."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ini agacuran"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Fren ini s wudem agacuran."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "anili"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "azegzaw"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "azeggaɣ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ini s"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Rnu ini s tnecta yettunefk s tesmekta n uzeggaɣ, azegzaw, akked unili. Yessefk akk azalen ad ilin gar 0 akked 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ffeɣ seg tneddict"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "kemmel s wallus d tneddict d-iteddun"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ffeɣ si tneddict tamagbart."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Zgel ayen i d-yeqqimen di tneddict-a, sakin kemmel allus d-itteddun."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Ɣur-k: Iḥder-a yessefk ad yettwaseqdec di tneddict."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "i yal aferdis %1 di tebdart %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "I yal aferdis n tebdart, mudd azal n uferdis i umutti '%1', sakin selkem tinaḍin."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "siḍen akked %1 seg %2 ar %3 s %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Mudd i umutti '%1' azalen seg umḍan n tazwara armi d amḍan n taggara, s tmerna n usurif yettunefken, sakin selkem tinaḍin yettunefken."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Rnu tawtilt i yiḥder ma."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Rnu tawtilt taneggarut i yiḥder ma igebren akk tinaḍin."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Rnu, kkes, neq ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a ma."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "neɣ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "neɣ ma"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ma"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "mayella azal d idetti, ihi selkem kra n tinaḍin."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Mayella azal d idetti, selkem iḥder amezwaru. Neɣ ma ulac, selkem iḥder wis sin."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ ma azal wis sin d ucciḍ, selkem iḥder wis sin."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ, mayella azal wis sin d idetti, selkem iḥder wis sin. Mayella ula d yiwen seg-sen ur yelli d idetti, selkem iḥder aneggaru."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "eg"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Ales %1 n tikkal"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Selkem ddeqs n tinaḍin ddeqs n tikal."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ales armi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ales skud"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Skud azal d ucciḍ, selkem ihi tinadin."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Skud azal d idetti, selkem ihi tinadin."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Kkes akk %1 n yiḥedran?"; +Blockly.Msg["DELETE_BLOCK"] = "Kkes iḥder"; +Blockly.Msg["DELETE_VARIABLE"] = "Kkes amutti '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Kkes %1 n useqdec n umutti '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Kkes %1 n yiḥedran"; +Blockly.Msg["DIALOG_CANCEL"] = "Sefsex"; +Blockly.Msg["DIALOG_OK"] = "IH"; +Blockly.Msg["DISABLE_BLOCK"] = "Sens iḥder"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Sleg"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Sleg awennit"; +Blockly.Msg["ENABLE_BLOCK"] = "Sens iḥedran"; +Blockly.Msg["EXPAND_ALL"] = "Snefli iḥedran"; +Blockly.Msg["EXPAND_BLOCK"] = "Snefli iḥder"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Inekcam izɣarayen"; +Blockly.Msg["HELP"] = "Tallelt"; +Blockly.Msg["INLINE_INPUTS"] = "Inekcam srid"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "rnu tabdart tilemt"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ad d-yerr tabdart n teɣzi 0 ur yegbiren ara ikalasen"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "tabdart"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a n tebdart."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "rnu tabdart s"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Ad yernu aferdis ɣer tebdart."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ad yernu tabdart s umḍan n yiferdisen."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "amezwaru"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# si taggara"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "awi"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "awi rnu kkes"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "aneggaru"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "agacuran"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "kkes"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Ad d-yerr aferdis amezwaru n tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ad d-yerr aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Ad d-yerr aferdis aneggaru di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Ad yerr aferdis agacuran di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Ad yekkes sakin ad -yerr aferdis amezwaru di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Ad yekkes syin ad d-yerr aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Ad yekkes sakin ad yerr aferdis aneggaru di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Ad yekkes sakin ad d-yerr aferdis agacuran di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Ad yekkes aferdis amezwaru n tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Ad yekkes aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Ad yekkes aferdis aneggaru di tebdart."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Ad yekkes aferdis agacuran di tebdart."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ar # si tagara"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ar #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ar taggara"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "awi-d tabdart tasnawant si tazwara"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "awi-d tabdart tasnawant seg # si taggara"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "awi-d tabdart tasnawant seg #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ad yernu anɣel n uḥric yettwamlen n tebdart."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 d aferdis aneggaru."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 d aferdis amezwaru."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "af-d timeḍriwt tamezwarut n uferdis"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "af-d timeḍriwt taneggarut n uferdis"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uferdis amezwaru deg tebdart. Ad d-yerr %1 ma yella ulac aferdis."; +Blockly.Msg["LISTS_INLIST"] = "di tebdart"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 d ilem"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Ad d-yerr idetti mayella tabdart d tilemt."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "teɣzi n %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Ad d-yerr teɣzi n tebdart."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ad yernu tabdart s uferdis %1 s tmeḍriwt %2"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ad yernu tabdart inetmen n wazal yettunefken ddeqs n tikal s umḍan yettwammlen."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "tti %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Tti anɣel n tebdart."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "am"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ger s"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "sbadu"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ad iger aferdis di tazwara n tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ad iger aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Ad yernu aferdis ar taggara n tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ad iger aferdis s wudem agacuran deg tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ad d-yerr aferdis amezwaru di tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ad yesbadu aferdis n wadig yettwamlen deg tabdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ad d-yerr aferdis aneggaru di tebdart."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ad yesbadu aferdis agacuran di tebdart."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "igemmen"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "amnusruy"; +Blockly.Msg["LISTS_SORT_TITLE"] = "smizzwer %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Smizzwer anɣel n tebdart."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "agemmayan, anef i truẓi n usekkil"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "umḍin"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "agemmayan"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "rnu tabdart seg uḍris"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "rnu aḍris si tebdart"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ad yesdukel tabdart n yiḍrisen deg yiwen s usnabraz."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Ad yegzem aḍris ɣef ddeqs n tebdarin n yiḍrisen, s unegzum yal anabraz."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "s unabraz"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ucciḍ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Ad d-yerr idetti neɣ ucciḍ"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "idetti"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ad yerr idetti ma yella i sin n yinekcam d imegduya."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ad d-yerr idetti ma anekcam amezwaru meqqer ɣef wis sin."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ad d-yerr idetti ma anekcam amezwaru meqqer neɣ yegda wis sin."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy ɣef wis sin."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy neɣ yegda wis sin."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ad d-yerr idetti mayella i sin n yinekcam mačči d imegduya."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "mačči %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ad d-yerr idetti ma anekcam d ucciḍ. Ad d-yerr ucciḍ ma yella anekcam d idetti."; +Blockly.Msg["LOGIC_NULL"] = "Ilem"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Ad d-yerr ilem"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "akked"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "neɣ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ad d-yerr idetti ma inekcam d idettiyen."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ad d-yerr idetti ma ɣarsum yiwen seg yinekcam d idetti."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "sekyed"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ma d ucciḍ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ma d idetti"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Senqed tawtilt deg 'sekyed'. Ma d idetti, ad d-yerr azal 'ma idetti', ma ulac ad d-yerr azam 'ma ucciḍ'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Ad d-yerr tmerni n sin n yimiḍanen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Ad d-yerr aful n sin n yimḍanen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Ad d-yerr tmernit n sin n yimiḍanen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Ad d-yerr tukksa gar sin n yimiḍanen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ad d-yerr amḍan amezwaru uzmir wis sin."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://kab.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 seg X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Ad d-yerr arctangent n waggaz (X, Y) s tfesniwin deg -180 ɣer 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "snifel %1 s %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Rnu amḍan i umutti '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ad d-yerr yiwet seg tmezgiyin yettwasnen : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), neɣ ∞ (ifeḍ)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "Err tamara i %1 gar %2 akked %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Err tamara n umḍan akken ad yili gar snat n tlisa (ddant)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "d ubṭay ɣef"; +Blockly.Msg["MATH_IS_EVEN"] = "d ayugan"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "d uzdir"; +Blockly.Msg["MATH_IS_ODD"] = "d aryugan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "d ufrar"; +Blockly.Msg["MATH_IS_PRIME"] = "d amenzu"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Senqed ma amḍan d ayugan, d aryugan, d amenzu, d ummid, d ufrar, d uzdir, neɣ d ubṭay ɣef kra n umḍan. Ad d-yerr idetti neɣ ucciḍ."; +Blockly.Msg["MATH_IS_WHOLE"] = "d ummid"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "tasagert n %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Ad d-yerr tasagert n beṭṭu n sin n yimḍanen."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Amḍan."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "talemmast n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "afellay n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "tanammast n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "adday n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Tiggtiwin n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "aferdis agacuran n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "azza n tebdart"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Timernit n tebdart"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ad d-yerr talemmas( tasnamḍant) n wazalen umḍinen di tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ad d-yerr amḍan ameqqran di tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Ad d-yerr amḍan n unammas n tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ad d-yerr amḍan ameẓẓyan di tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Ad d-yerr tabdart n yiferdisen i d-yettuɣalen s waṭas di tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Ad d-yerr aferdis seg tebdart s wudem agacuran."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ad d-yerr azza n tebdart."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ad d-yerr timernit n yimḍanen meṛṛa deg tebdart."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "tirẓi tagacurant"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Ad d-yerr tirẓi tagacurant gar 0.0 (yedda) akked 1.0 (ur yeddi ara)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ummid agacuran gar %1 akked %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Ad d-yerr ummid agacuran gar snat n tlisa, ddant."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "Saẓ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Saẓ d akesser"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Saẓ d asawen"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Saẓ amiḍan d asawen neɣ d akesser."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "azal amagdez"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "aẓar uzmir 2"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ad d-yerr azal amagdez n umiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ad d-yerr e uzmir amiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Ad d-yerr alugaritm agamawan n umiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Ad d-yerr alugaritm 10 n umiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Ad d-yerr ugmiḍ n umḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Ad d-yerr 10 uzmir amiḍan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Ad d-yerr aẓar uzmir sin n umḍan."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ad d-yerr taganzi n ukusinus n umḍan."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ad d-yerr taganzi n usinus n umḍan."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ad d-yerr taganzi n teslayt n umiḍan."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ad d-yerr akusinus n teɣmert s tfesna (mačči aṛadyan)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ad d-yerr asinus n teɣmert s tfesna (mačči aṛadyan)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ad d-yerr taslayt n teɣmert s tfesna (mačči aṛadyan)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Rnu amutti ini..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Rnu amutti amḍan..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Rnu amutti azrir n yisekkilen..."; +Blockly.Msg["NEW_VARIABLE"] = "Rnu amutti..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Isem amaynut n wazal:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Anaw amaynut n umutti:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "Sireg asmizzwer"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Selkem tawuri '%1' i yesbadu useqdac."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Selkem tawuri '%1' i yesbadu useqdac sakin seqdec agmuḍ-is."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Rnu '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Seglem tawuri-a..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "eg kra"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "i"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Rnu tawuri s war anekcam."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "tuɣalin"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "ad yernu tawuri s tuffɣa."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ɣur-k: Tawuri-a ɣur-s iɣewwaṛen usligen."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sebrureq tabadut n twuri"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ma yella azal d idetti, ad d-yerr azal-nniḍen wis sin."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Ɣur-k: Iḥder-a yezmer ur yettwaseqdac ara anagar deg tebadut n twuri-a."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "isem n unekcum:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "rnu anekcam ɣer twuri-a."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inekcam"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Rnu, kkes neɣ ales asmizzwer n yinekcam i twuri-a."; +Blockly.Msg["REDO"] = "Uɣal"; +Blockly.Msg["REMOVE_COMMENT"] = "Kkes awennit"; +Blockly.Msg["RENAME_VARIABLE"] = "Beddel isem n umutti..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Beddel akk isem n yimuttiyen '%1' ar:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "Rnu aḍris %2 ɣer %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Rnu aḍris ɣer umutti '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "s usekkil ameẓẓyan"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "s Umeqqran Di Tazwara n Yal Awal."; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "s USEKKIL AMEQQRAN"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Ad d-yerr anɣel n uḍris s truẓi-nniḍen."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "awi-d asekkil amezwaru"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "awi-d asekkil # si taggara"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "awi asekkel #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "awi-d asekkil aneggaru"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "awi-d asekkil s wudem agacuran"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "deg uḍris %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Ad d-yerr asekkil deg wuṭṭun yettwamlen."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "amḍan %1 ɣef %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Ad isiḍen amḍan n tmeḍriwt n uḍris deg wayeḍ."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Rnu aferdis ɣer uḍris."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sdukkel"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "armi d asekkil # si taggara"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "armi d asekkil #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "armi d asekkil aneggaru"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "deg uḍris"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "awi-d azrir asnawan seg usekkil amezwaru"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "awi-d azrir asnawan seg usekkil # si taggara"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "awi-d azrir asnawan seg usekkil #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Ad d-yerr aḥric yettwamlen deg uḍris."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "af-d timeḍriwt tamezwarut n uḍris"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "af-d timeḍriwt taneggarut deg uḍris"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "deg uḍris %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uḍris amezwaru deg uḍris wis sin. Ad d-yerr %1 ma yella ulac aḍris."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 d ilem"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Add d-yerr idetti ma yella aḍris d ilem."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "rnu aḍris s"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ad yernu taceqquft n uḍris s usdukel gar yal amḍan n yiferdisen."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "teɣzi n %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Ad d-yerr amḍan n yisekkilen (ddan ula d imellalen) deg uḍris d-ittunefken."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "ad d-yesken %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Sken aḍris, amḍan neɣ azal-nniḍen d-ittunefken."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Suter amḍan i useqdac."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Suter aḍris i useqdac."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "aneftaɣ i umḍan s yizen"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "aneftaɣ i uḍris s yizen"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "semselsi %1 s %2 di %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ad isemselsi akk timeḍriwin n uḍris s wayeḍ."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "tti %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Ad yetti asmizzwer n yisekkilen deg uḍris."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Asekkil, awal neɣ izirig n uḍris."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "Tukksa n yisekkilen imellalen seg sin n yidisan"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "tukksa n yisekkilen seg uzelmaḍ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "tukksa n yisekkilen seg uyeffus"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Ad d-yerr anɣel n uḍris s yisekkilen ilmawen yettwakksen seg yixf neɣ i sin."; +Blockly.Msg["TODAY"] = "Ass-a"; +Blockly.Msg["UNDO"] = "Err-d"; +Blockly.Msg["UNNAMED_KEY"] = "war isem"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "aferdis"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Rnu 'sbadu %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Ad d-yerr azal n umutti-a."; +Blockly.Msg["VARIABLES_SET"] = "sbadu %1 ar %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Rnu 'awi-d %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ad yesbadu amutti-a akken ad yegdu azal n unekcam."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Amutti s yisem '%1' yella yakan."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Amutti s yisem '%1' yella yakan i wanaw-nniḍen: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Tallunt n umahel Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Ini kra..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/kbd-cyrl.js b/msg/js/kbd-cyrl.js index 46df09443fc..43796f7d485 100644 --- a/msg/js/kbd-cyrl.js +++ b/msg/js/kbd-cyrl.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "КIэщIэтхэн"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Блокхэр зэкIуэцIылъхьэн"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Блокыр зэкIуэцIылъхьэн"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1 плъыфэ"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2 плъыфэ"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "1 плъыфэм щыщу"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "зэхэпщэн"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ПлъыфитIыр епт зэхущытыкIэмкIэ хэхэпщэн (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ru.wikipedia.org/wiki/Цвет"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Плъыфэхэм узыхуейр къыхэх."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "сыт хуэдэ плъыфэми"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Плъыфэр езыр-езыру къыхегъэхын."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "щIыхуу"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "удзыфэу"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "плъыжьу"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "плъыфэхэм щыщ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "армырамэ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "армырамэ щыпкъэу"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "щыпкъэу"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Цикл_(программирование)"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "гъэзэщIэн"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 къытегъэзэжын"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Унафэр зыбжанэрэ егъэзащIэ."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "къытегъэзэжын, къихьэх"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Блокыр тегъэкIын"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Блоку %1 тегъэкIын"; -Blockly.Msg["DIALOG_CANCEL"] = "ЩӀегъуэжын"; -Blockly.Msg["DIALOG_OK"] = "ХЪУАЩ"; -Blockly.Msg["DISABLE_BLOCK"] = "Блокыр гъэуфIынкIын"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ЩIэтхыкIын"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Блокыр щIэгъэнэн"; -Blockly.Msg["EXPAND_ALL"] = "Блокхэр зэкIуэц1ыхын"; -Blockly.Msg["EXPAND_BLOCK"] = "Блокыр зэкIуэц1ыхын"; -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "ДэӀэпыкъуэгъуэ"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "пцIы"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Е щыпкъэ е пцIы къуетыж."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "щыпкъэ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "зыри"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Зыри къуетыж."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "икIи"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "е"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ru.wikipedia.org/wiki/Арифметика"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "БжыгъитIыр зэхелъхьэри къыщIэкIар къуетыж."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Япэ бжыгъэр етIуанэмкIэ егуэшри къыщIэкIар къуетыж."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "БжыгъитIыр зэхехри къыщIэкIар къуетыж."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "БжыгъитIыр зэхуегъэбагъуэри къыщIэкIар къуетыж."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ru.wikipedia.org/wiki/Математическая_константа"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "мыбыкIэ мэгуэш"; -Blockly.Msg["MATH_IS_EVEN"] = "зэпэбж"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "зэпэмыбж"; -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "къызэрыгуэкI"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "бжыгъэ псо"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ru.wikipedia.org/wiki/Деление_с_остатком"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 бгуэшмэ къыдэхуэр"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "БжыгъитIыр зэхуэбгуэшмэ къыдэхуэр къуетыж."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ru.wikipedia.org/wiki/Число"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Бжыгъэ."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "къебжэкIым и нэхъыбэр"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "къебжэкIым и нэхъ мащIэр"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "къебжэкIыр зэхэлъхьауэ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "КъебжэкIым и нэхъыбэр къуетыж."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "КъебжэкIым и нэхъ мащIэр къуетыж."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ru.wikipedia.org/wiki/Округление"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ru.wikipedia.org/wiki/Квадратный_корень"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ru.wikipedia.org/wiki/Тригонометрические_функции"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "игъусэр:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Функция_%28программирование%29"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Функция_%28программирование%29"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "игъусэр:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "КIэщIэтхэр тегъэкIыжын"; -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "япэу къыщыхэщыр къэгъуэтын"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "иужьыу къыщыхэщыр къэгъуэтын"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 нэщIщ"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 и кIыхьагъыр"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ru.wikipedia.org/wiki/Строковый_тип"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Iыхьэ"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "КIэщIэтхэн"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Блокхэр зэкIуэцIылъхьэн"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Блокыр зэкIуэцIылъхьэн"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1 плъыфэ"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2 плъыфэ"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "1 плъыфэм щыщу"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "зэхэпщэн"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ПлъыфитIыр епт зэхущытыкIэмкIэ хэхэпщэн (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ru.wikipedia.org/wiki/Цвет"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Плъыфэхэм узыхуейр къыхэх."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "сыт хуэдэ плъыфэми"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Плъыфэр езыр-езыру къыхегъэхын."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "щIыхуу"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "удзыфэу"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "плъыжьу"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "плъыфэхэм щыщ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "армырамэ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "армырамэ щыпкъэу"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "щыпкъэу"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Цикл_(программирование)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "гъэзэщIэн"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 къытегъэзэжын"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Унафэр зыбжанэрэ егъэзащIэ."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "къытегъэзэжын, къихьэх"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Блокыр тегъэкIын"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Блоку %1 тегъэкIын"; +Blockly.Msg["DIALOG_CANCEL"] = "ЩӀегъуэжын"; +Blockly.Msg["DIALOG_OK"] = "ХЪУАЩ"; +Blockly.Msg["DISABLE_BLOCK"] = "Блокыр гъэуфIынкIын"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ЩIэтхыкIын"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Блокыр щIэгъэнэн"; +Blockly.Msg["EXPAND_ALL"] = "Блокхэр зэкIуэц1ыхын"; +Blockly.Msg["EXPAND_BLOCK"] = "Блокыр зэкIуэц1ыхын"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "ДэӀэпыкъуэгъуэ"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "пцIы"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Е щыпкъэ е пцIы къуетыж."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "щыпкъэ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "зыри"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Зыри къуетыж."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "икIи"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "е"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ru.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "БжыгъитIыр зэхелъхьэри къыщIэкIар къуетыж."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Япэ бжыгъэр етIуанэмкIэ егуэшри къыщIэкIар къуетыж."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "БжыгъитIыр зэхехри къыщIэкIар къуетыж."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "БжыгъитIыр зэхуегъэбагъуэри къыщIэкIар къуетыж."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ru.wikipedia.org/wiki/Математическая_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "мыбыкIэ мэгуэш"; +Blockly.Msg["MATH_IS_EVEN"] = "зэпэбж"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "зэпэмыбж"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "къызэрыгуэкI"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "бжыгъэ псо"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ru.wikipedia.org/wiki/Деление_с_остатком"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 бгуэшмэ къыдэхуэр"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "БжыгъитIыр зэхуэбгуэшмэ къыдэхуэр къуетыж."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ru.wikipedia.org/wiki/Число"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Бжыгъэ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "къебжэкIым и нэхъыбэр"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "къебжэкIым и нэхъ мащIэр"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "къебжэкIыр зэхэлъхьауэ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "КъебжэкIым и нэхъыбэр къуетыж."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "КъебжэкIым и нэхъ мащIэр къуетыж."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ru.wikipedia.org/wiki/Округление"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ru.wikipedia.org/wiki/Квадратный_корень"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ru.wikipedia.org/wiki/Тригонометрические_функции"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "игъусэр:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Функция_%28программирование%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Функция_%28программирование%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "игъусэр:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "КIэщIэтхэр тегъэкIыжын"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "япэу къыщыхэщыр къэгъуэтын"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "иужьыу къыщыхэщыр къэгъуэтын"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 нэщIщ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 и кIыхьагъыр"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ru.wikipedia.org/wiki/Строковый_тип"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Iыхьэ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/km.js b/msg/js/km.js index ee69d5631d2..f0a21f8b7b2 100644 --- a/msg/js/km.js +++ b/msg/js/km.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "បន្ថែម​មតិ"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ប្ដូរ​តម្លៃ៖"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ជ្រើស​ពណ៌​មួយ​ពី​បន្ទះ​ពណ៌"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "លុបប្លុក %1 ទាំងអស់?"; -Blockly.Msg["DELETE_BLOCK"] = "លុបប្លុក"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "លុបប្លុក %1"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "យល់ព្រម"; -Blockly.Msg["DISABLE_BLOCK"] = "បិទប្លុក"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ធ្វើស្ទួន"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "បើកប្លុក"; -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "ធាតុបញ្ចូលខាងក្រៅ"; -Blockly.Msg["HELP"] = "ជំនួយ"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "បង្កើតអថេរ..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ឈ្មោះ​អថេរ​ថ្មី៖"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ធ្វើ​វិញ"; -Blockly.Msg["REMOVE_COMMENT"] = "ដក​មតិ​ចេញ"; -Blockly.Msg["RENAME_VARIABLE"] = "ដក​អថេរ​ចេញ..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ប្ដូរ​ឈ្មោះ​អថេរ​ទាំង '%1' ទៅ​ជា៖"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "ថ្ងៃនេះ"; -Blockly.Msg["UNDO"] = "មិន​ធ្វើ​វិញ"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ធាតុ"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "បន្ថែម​មតិ"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ប្ដូរ​តម្លៃ៖"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ជ្រើស​ពណ៌​មួយ​ពី​បន្ទះ​ពណ៌"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "លុបប្លុក %1 ទាំងអស់?"; +Blockly.Msg["DELETE_BLOCK"] = "លុបប្លុក"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "លុបប្លុក %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "យល់ព្រម"; +Blockly.Msg["DISABLE_BLOCK"] = "បិទប្លុក"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ធ្វើស្ទួន"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "បើកប្លុក"; +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "ធាតុបញ្ចូលខាងក្រៅ"; +Blockly.Msg["HELP"] = "ជំនួយ"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "បង្កើតអថេរ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ឈ្មោះ​អថេរ​ថ្មី៖"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ធ្វើ​វិញ"; +Blockly.Msg["REMOVE_COMMENT"] = "ដក​មតិ​ចេញ"; +Blockly.Msg["RENAME_VARIABLE"] = "ដក​អថេរ​ចេញ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ប្ដូរ​ឈ្មោះ​អថេរ​ទាំង '%1' ទៅ​ជា៖"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ថ្ងៃនេះ"; +Blockly.Msg["UNDO"] = "មិន​ធ្វើ​វិញ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ធាតុ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/kn.js b/msg/js/kn.js index d899535d893..84b4d68769c 100644 --- a/msg/js/kn.js +++ b/msg/js/kn.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ಟಿಪ್ಪಣಿ ಸೇರಿಸು"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ. ಏಕೆಂದರೆ ಇದು '%2' ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದ ಭಾಗವಾಗಿದೆ"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ಮೌಲ್ಯ ಬದಲಾಯಿಸು:"; -Blockly.Msg["CLEAN_UP"] = "ಬ್ಲಾಕ್‍ಗಳನ್ನೆಲ್ಲಾ ಒಪ್ಪವಾಗಿರಿಸು"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "ಸಂಕುಚಿತಗೊಂಡ ಬ್ಲಾಕ್ ಗಳು ಎಚ್ಚರಿಕೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ."; -Blockly.Msg["COLLAPSE_ALL"] = "ಬ್ಲಾಕ್‍ಗಳನ್ನು ಮಡಿಸಿಬಿಡು"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ಬ್ಲಾಕ್‍ನ್ನು ಮಡಿಸಿಬಿಡು"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ಬಣ್ಣ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ಬಣ್ಣ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ಅನುಪಾತ"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ಮಿಶ್ರಣಮಾಡು"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ಕೊಟ್ಟಿರುವ ಅನುಪಾತದಂತೆ(0.0 - 1.0) ಎರಡು ಬಣ್ಣಗಳನ್ನು ಮಿಶ್ರಣ ಮಾಡುತ್ತದೆ."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ವರ್ಣಫಲಕದಿಂದ ಬಣ್ಣವನ್ನು ಆರಿಸು."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ಯಾದೃಚ್ಛಿಕ ಬಣ್ಣ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ಯಾದೃಚ್ಛಿಕವಾಗಿ ಯಾವುದಾದರೂ ಒಂದು ಬಣ್ಣವನ್ನು ಆರಿಸು."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "ನೀಲಿ"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ಹಸಿರು"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ಕೆಂಪು"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ಬಣ್ಣದಿಂದ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟ ಪ್ರಮಾಣದಲ್ಲಿ ಕೆಂಪು, ಹಸಿರು ಮತ್ತು ನೀಲಿಯನ್ನು ಹೊಂದಿದ ಒಂದು ಬಣ್ಣವನ್ನು ರಚಿಸಿ. ಎಲ್ಲಾ ಮೌಲ್ಯಗಳು 0 ಮತ್ತು 100 ರ ನಡುವೆ ಇರಲಿ."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ಪುನರಾವರ್ತನೆಯಿಂದ ನಿರ್ಗಮಿಸು"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ಲೂಪ್ ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರೆಯಲಿ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ಒಳಹೊಕ್ಕಿರುವ ಲೂಪಿನಿಂದ ನಿರ್ಗಮಿಸು."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ಈ ಲೂಪಿನ ಉಳಿದ ಭಾಗವನ್ನು ಬಿಟ್ಟು, ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರಿಸಿ."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕನ್ನು ಲೂಪ್‌ನಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿ %1 ಅಂಶಕ್ಕೆ"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಅಂಶಕ್ಕೆ, ಚರಾಂಶ '%1'ನ್ನು ಅಂಶಕ್ಕೆ ಜೋಡಿಸಿ, ತದನಂತರ ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 ಜೊತೆ ಎಣಿಸು %2 ಇಂದ %3 ತನಕ %4 ಪ್ರಮಾಣದಲ್ಲಿ"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ಚರಾಂಶವಾದ %1 ಪ್ರಾರಂಭ ಸಂಖ್ಯೆಯಿಂದ ಅಂತಿಮ ಸಂಖ್ಯೆಯವರೆಗೆ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಿ, ನಿರ್ದಿಷ್ಟ ಮಧ್ಯಂತರದಿಂದ ಎಣಿಸಿ, ಮತ್ತು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಬ್ಲಾಕ್ ಗಳನ್ನು ಮಾಡಲಿ."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಒಂದು ಷರತ್ತು ಸೇರಿಸಿ."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ಅಂತಿಮವಾದ, ಎಲ್ಲವನ್ನೂ-ಹಿಡಿ ಷರತ್ತನ್ನು 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಸೇರಿಸಿ."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ಈ 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ಇಲ್ಲದಿದ್ದರೆ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ಆಗಿರದಿದ್ದರೆ"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ಆಗಿದ್ದರೆ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು, ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ಮೊದಲನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ. ಇಲ್ಲದಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ಮೊದಲನೆಯ ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಒಂದುವೇಳೆ ಯಾವುದೇ ಮೌಲ್ಯವೂ ಸತ್ಯವಾಗಿರದಿದ್ದರೆ, ಕೊನೆಯ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ಮಾಡು"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 ಬಾರಿ ಪುನರಾವರ್ತಿಸು"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಹಲವಾರು ಬಾರಿ ಮಾಡು."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ತನಕ ಪುನರಾವರ್ತಿಸು"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ಷರತ್ತು 'ಸತ್ಯ' ಆಗಿರುವವರೆಗೆ ಪುನರಾವರ್ತಿಸು"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ಮೌಲ್ಯವು ಸುಳ್ಳಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "ಎಲ್ಲಾ %1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸುವುದೇ ?"; -Blockly.Msg["DELETE_BLOCK"] = "ಬ್ಲಾಕನ್ನು ಅಳಿಸು"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸು"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' ಚರಾಂಶದ '%1' ಉಪಯೋಗಗಳನ್ನು ಅಳಿಸುವುದೇ ?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸು"; -Blockly.Msg["DIALOG_CANCEL"] = "ರದ್ದುಮಾಡಿ"; -Blockly.Msg["DIALOG_OK"] = "ಸರಿ"; -Blockly.Msg["DISABLE_BLOCK"] = "ಬ್ಲಾಕನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ಪ್ರತಿ"; -Blockly.Msg["DUPLICATE_COMMENT"] = "ಟಿಪ್ಪಣಿಯ ಪ್ರತಿ ಮಾಡು"; -Blockly.Msg["ENABLE_BLOCK"] = "ಬ್ಲಾಕನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು"; -Blockly.Msg["EXPAND_ALL"] = "ಬ್ಲಾಕ್‍ಗಳನ್ನು ವಿಸ್ತರಿಸು"; -Blockly.Msg["EXPAND_BLOCK"] = "ಬ್ಲಾಕನ್ನು ವಿಸ್ತರಿಸು"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ಬಾಹ್ಯ ಒಳಾಂಶಗಳು"; -Blockly.Msg["HELP"] = "ಸಹಾಯ"; -Blockly.Msg["INLINE_INPUTS"] = "ಸಾಲಿನಲ್ಲಿರುವ ಒಳಾoಶಗಳು"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ಖಾಲಿ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "ಯಾವುದೇ ದತ್ತಾಂಶ ದಾಖಲೆಗಳನ್ನು ಹೊಂದಿರದ, 0 ಉದ್ದದ, ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ಪಟ್ಟಿ"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "ಈ ಪಟ್ಟಿಯ ಬ್ಲಾಕ್ ಅನ್ನು ಮರುಸಂರಚಿಸಲು ವಿಭಾಗಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ಇದರೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ."; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "ಪಟ್ಟಿಗೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "ಹಲವು ಅಂಶಗಳೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ಮೊದಲ"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# ಕೊನೆಯಿಂದ"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "ಪಡೆಯಿರಿ"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "ಪಡೆಯಿರಿ ಮತ್ತು ತೆಗೆದುಹಾಕಿ"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ಕೊನೆಯ"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ಯಾದೃಚ್ಛಿಕ"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ತೆಗೆ"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಇರುವ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು ."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿರುವ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ಕೊನೆಯಿಂದ # ವರೆಗೆ"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# ವರೆಗೆ"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ಕೊನೆಯವರೆಗೂ"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ಮೊದಲಿನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "ಪಟ್ಟಿಯ ನಿರ್ದಿಷ್ಟ ಭಾಗದ ಪ್ರತಿಯನ್ನು ರಚಿಸುತ್ತದೆ."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ಕೊನೆಯ ಅಂಶ ಆಗಿದೆ."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ಮೊದಲ ಅಂಶ ಆಗಿದೆ."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "ಅಂಶದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "ಅಂಶದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಅಂಶದ ಮೊದಲ/ಕೊನೆಯ ಸಂಭಾವ್ಯದ ಸೂಚಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಅಂಶ ಕಂಡುಬರದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_INLIST"] = "ಪಟ್ಟಿಯಲ್ಲಿ"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ಖಾಲಿಯಾಗಿದೆ"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "ಪಟ್ಟಿ ಖಾಲಿಯಾಗಿದ್ದರೆ ಸತ್ಯ ಎಂದು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 ರ ಉದ್ದ"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "ಪಟ್ಟಿಯ ಉದ್ದವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 ಅಂಶದೊಂದಿಗೆ %2 ಬಾರಿ ಪುನರಾವರ್ತಿತಗೊಂಡ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ."; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "ಕೊಟ್ಟಿರುವ ಮೌಲ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟ ಬಾರಿ ಪುನರಾವರ್ತಿಸುವ ಪಟ್ಟಿಯನ್ನು ರಚಿಸುತ್ತದೆ."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 ನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ಹಾಗೆ"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ನಲ್ಲಿ ಸೇರಿಸಿ"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "ಗೊತ್ತುಪಡಿಸಿ"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "ಪಟ್ಟಿಯ ಪ್ರಾರಂಭದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "ಅಂಶವನ್ನು ಪಟ್ಟಿಯ ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "ಅಂಶವನ್ನು ಪಟ್ಟಿಯಲ್ಲಿ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಒಳಸೇರಿಸುತ್ತದೆ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿ ಮೊದಲ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿ ಕೊನೆಯ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ಆರೋಹಣ"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ಅವರೋಹಣ"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 ವಿಂಗಡಿಸಿ"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ವಿಂಗಡಿಸಿ."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ವರ್ಣಮಾಲೆಯ, ದೊಡ್ಡಕ್ಷರ/ಸಣ್ಣಕ್ಷರವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ಸಂಖ್ಯಾತ್ಮಕ"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "ವರ್ಣಮಾಲೆಯ"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ಪಠ್ಯದಿಂದ ಪಟ್ಟಿಯನ್ನು ಮಾಡಿ"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ಪಟ್ಟಿಯಿಂದ ಪಠ್ಯವನ್ನು ಮಾಡಿ"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಿಂದ ಬೇರ್ಪಡಿಸಲಾಗಿರುವ ಪಠ್ಯಗಳ ಪಟ್ಟಿಯನ್ನೆಲ್ಲಾ ಒಂದು ಪಠ್ಯಕ್ಕೆ ಸೇರಿಸಿ."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಲ್ಲಿ ಮುರಿದು, ಪಠ್ಯವನ್ನು ವಿಭಜಿಸಿ ಪಠ್ಯಗಳ ಪಟ್ಟಿಮಾಡಿ."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯೊಡನೆ"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ಸುಳ್ಳು"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಎರಡರಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ಸತ್ಯ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿದ್ದರೆ, ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದ್ದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿರದಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 ಅಲ್ಲ"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ಒದಗಿಸುವ ಅಂಶ ಸುಳ್ಳಾಗಿದ್ದರೆ ಸರಿಯೆನ್ನಿ. ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ತಪ್ಪೆನ್ನಿ."; -Blockly.Msg["LOGIC_NULL"] = "ಶೂನ್ಯ"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ಶೂನ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ಮತ್ತು"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ಅಥವಾ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ಒದಗಿಸುವ ಎರಡೂ ಅಂಶಗಳು ಸರಿಯಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ಯಾವುದಾದರೂ ಒಂದು ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ಪರೀಕ್ಷೆ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ಸುಳ್ಳು ಆಗಿದ್ದರೆ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ಸತ್ಯ ಆಗಿದ್ದರೆ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'ಪರೀಕ್ಷೆ'ಯಲ್ಲಿನ ಷರತ್ತನ್ನು ಪರಿಶೀಲಿಸಿ. ಷರತ್ತು ಸರಿಯಾಗಿದ್ದರೆ, 'ಸತ್ಯವಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನು; ಇಲ್ಲದಿದ್ದರೆ 'ಸುಳ್ಳಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನೂ ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ಭಾಗಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ವ್ಯತ್ಯಾಸವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ಗುಣಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "ಮೊದಲ ಸಂಖ್ಯೆಯ ಘಾತಾಂಶ ಎರಡನೇ ಸಂಖ್ಯೆಯಾದಾಗಿನ ಫಲಿತಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 ಬಿಂದುವಿನ ಆರ್ಕ್ ಟ್ಯಾನ್"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "ಬಿಂದು (X,Y) ನ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ನ್ನು -180 ರಿಂದ 180 ರವರೆಗಿನ ಡಿಗ್ರಿಗಳಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 ಅನ್ನು %2 ರಿಂದ ಬದಲಾಯಿಸಿ"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "ಚರಾಂಶ '%1' ಕ್ಕೆ ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕಗಳಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸಿ:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1ಅನ್ನು ಕಡಿಮೆ %2 ಹೆಚ್ಚಿನ %3 ಮೌಲ್ಯಗಳ ನಡುವೆ ನಿರ್ಬಂಧಿಸಿ"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "ನಿಗದಿತ ಮಿತಿಗಳ ನಡುವೆ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸಿ(ಒಳಗೊ೦ಡ)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ಇದರಿಂದ ಭಾಗಿಸಬಹುದೇ?"; -Blockly.Msg["MATH_IS_EVEN"] = "ಸಮ ಸಂಖ್ಯೆಯೇ?"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "ಋಣಾತ್ಮಕವೇ?"; -Blockly.Msg["MATH_IS_ODD"] = "ಬೆಸ ಸಂಖ್ಯೆಯೇ?"; -Blockly.Msg["MATH_IS_POSITIVE"] = "ಧನಾತ್ಮಕವೇ?"; -Blockly.Msg["MATH_IS_PRIME"] = "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆಯೇ?"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "ಒಂದು ಸಂಖ್ಯೆ ಸಮ, ಬೆಸ, ಅವಿಭಾಜ್ಯ, ಪೂರ್ಣ, ಧನಾತ್ಮಕ, ಋಣಾತ್ಮಕವಾಗಿದೆಯೇ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯಿಂದ ಭಾಗಿಸ ಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_IS_WHOLE"] = "ಪೂರ್ಣಸಂಖ್ಯೆಯೇ?"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 ರ ಶೇಷ"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ವಿಭಜನೆಯ ಶೇಷವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ಒಂದು ಸಂಖ್ಯೆ."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ಪಟ್ಟಿಯ ಸರಾಸರಿ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ಪಟ್ಟಿಯ ಗರಿಷ್ಠ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ಪಟ್ಟಿಯ ಮಧ್ಯಾಂಕ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ಪಟ್ಟಿಯ ಕನಿಷ್ಠ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಆಗಾಗ್ಗೆ ಕಾಣಿಸಿಕೊಳ್ಳುವ ಸಂಖ್ಯೆಗಳು"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ಪಟ್ಟಿಯ ಮೊತ್ತ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಸಂಖ್ಯಾ ಮೌಲ್ಯಗಳ ಸರಾಸರಿ (ಅಂಕಗಣಿತದ ಸರಾಸರಿ) ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮಧ್ಯಾಂಕ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಕನಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಸಾಮಾನ್ಯ ಅಂಶಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿ"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (ಒಳಗೊಂಡ) ಮತ್ತು 1.0 (ವಿಶೇಷ) ನಡುವೆ ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕ %1 ರಿಂದ %2 ರವರೆಗೆ"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "ಎರಡು ನಿರ್ದಿಷ್ಟ ಮಿತಿಗಳ ನಡುವೆ ಇರುವ ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ಸುತ್ತು"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ."; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ಮೇಲಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ."; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಮೇಲಿನ ಅಥವಾ ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ಪರಿಪೂರ್ಣ"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ವರ್ಗಮೂಲ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "ಸಂಖ್ಯೆಯೊಂದರ ಪರಿಪೂರ್ಣ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "ಒಂದು ಸಂಖ್ಯೆಯ e ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ಸಂಖ್ಯೆಯ ನೈಸರ್ಗಿಕ ಲಾಗರಿಥಮ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ಒಂದು ಸಂಖ್ಯೆಯ ಆಧಾರ 10 ಲಾಗರಿಥಮನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ಸಂಖ್ಯೆಯೊಂದರ ನಿರಾಕರಣೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "ಒಂದು ಸಂಖ್ಯೆಯ 10ರ ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ಸಂಖ್ಯೆಯ ವರ್ಗಮೂಲವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "ಕೋನವೊಂದರ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "ಕೋನವೊಂದರ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "ಕೋನವೊಂದರ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ಬಣ್ಣದ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ಸಂಖ್ಯಾ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "ಚಿಹ್ನೆಗಳ ಸರಣಿಯ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು..."; -Blockly.Msg["NEW_VARIABLE"] = "ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ಹೊಸ ಚರಾಂಶದ ಹೆಸರು:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ಹೊಸ ಚರಾಂಶದ ಡೇಟಾಪ್ರಕಾರ:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ಹೇಳಿಕೆಗಳನ್ನು ಅನುಮತಿಸಿ"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ಜೊತೆ:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ ಮತ್ತು ಅದರ ಹೊರಾಂಶವನ್ನು ಉಪಯೋಗಿಸಿ"; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ಜೊತೆ:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' ರಚಿಸಿ"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "ಈ ಕಾರ್ಯಘಟಕವನ್ನು ವಿವರಿಸಿ ..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ಏನಾದರೂ ಮಾಡಿ"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ಗೆ"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "ಯಾವುದೇ ಹೊರಾಂಶ ಇಲ್ಲದ ಕಾರ್ಯಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ಹಿಂತಿರುಗಿಸಿ"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "ಹೊರಾಂಶ ಇರುವ ಕಾರ್ಯ ಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯಘಟಕವು ನಕಲಿ ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿದೆ."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ಒಂದು ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕ್ ಅನ್ನು ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ಒಳಾoಶದ ಹೆಸರು:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ಕಾರ್ಯಘಟಕಕ್ಕೆ ಒಳಾoಶವನ್ನು ಸೇರಿಸಿ."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ಒಳಾoಶಗಳು"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "ಈ ಕಾರ್ಯಕ್ಕೆ ಒಳಾoಶಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ."; -Blockly.Msg["REDO"] = "ಮತ್ತೆ ಮಾಡು"; -Blockly.Msg["REMOVE_COMMENT"] = "ಟಿಪ್ಪಣಿ ಅಳಿಸು"; -Blockly.Msg["RENAME_VARIABLE"] = "ಚರಾಂಶವನ್ನು ಮರುಹೆಸರಿಸು..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ಎಲ್ಲ '%1' ಚರಾಂಶಗಳನ್ನು ಮರುಹೆಸರಿಸು:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = " %1 ಕ್ಕೆ ಪಠ್ಯ %2 ನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ."; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' ಚರಾಂಶಕ್ಕೆ ಕೆಲವು ಪಠ್ಯವನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ಸಣ್ಣಕ್ಷರಕ್ಕೆ"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "ಶೀರ್ಷಿಕೆಯ ಅಕ್ಷರವಾಗಿ"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "ದೊಡ್ಡಕ್ಷರಕ್ಕೆ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಪ್ರಸ್ತುತಕ್ಕೆ ವಿರುದ್ಡವಾದ ದೊಡ್ಡಕ್ಷರ ಅಥವಾ ಸಣ್ಣಕ್ಷರದಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "ಮೊದಲ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ಕೊನೆಯಿಂದ # ಅಕ್ಷರ ಪಡೆಯಿರಿ"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# ಅಕ್ಷರ ಪಡೆಯಿರಿ"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "ಕೊನೆಯ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ಯಾದೃಚ್ಛಿತ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "ಪಠ್ಯದಲ್ಲಿ %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಕ್ಷರವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2 ರಲ್ಲಿ %1 ಅನ್ನು ಎಣಿಸಿ"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "ಬೇರೆ ಕೆಲವು ಪಠ್ಯಗಳಲ್ಲಿ ಕೆಲವು ಪಠ್ಯವು ಎಷ್ಟು ಬಾರಿ ಸಂಭವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಎಣಿಸಿ."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "ಪಠ್ಯಕ್ಕೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ಸೇರಿಸು"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "ಈ ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ಕೊನೆಯಿಂದ # ಅಕ್ಷರದವರೆಗೆ"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# ಅಕ್ಷರದವರೆಗೆ"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ಕೊನೆಯ ಅಕ್ಷರದವರೆಗೆ"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ಪಠ್ಯದಲ್ಲಿ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ಮೊದಲ ಅಕ್ಷರದಿಂದ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "ಪಠ್ಯದ ನಿರ್ದಿಷ್ಟ ಭಾಗವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ಪಠ್ಯದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ಪಠ್ಯದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ಪಠ್ಯದಲ್ಲಿ %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "ಎರಡನೇ ಪಠ್ಯದಲ್ಲಿ ಮೊದಲ ಪಠ್ಯದ ಸಂಭಾವ್ಯದ, ಮೊದಲ/ಕೊನೆಯ ಸೂಚ್ಯಂಕವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಪಠ್ಯ ಕಂಡುಬಂದಿಲ್ಲದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ಖಾಲಿಯಿದೆ"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "ಒದಗಿಸಿದ ಪಠ್ಯ ಖಾಲಿಯಾಗಿದ್ದರೆ 'ಸತ್ಯ' ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ಇದರೊಂದಿಗೆ ಪಠ್ಯವನ್ನು ರಚಿಸಿ"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "ಹಲವಾರು ಅಂಶಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸುವ ಮೂಲಕ ಪಠ್ಯದ ತುಣುಕನ್ನು ರಚಿಸಿ."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1ರ ಉದ್ದ"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "ಒದಗಿಸಿದ ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಸಂಖ್ಯೆಯನ್ನು (ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ) ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 ಮುದ್ರಿಸಿ"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪಠ್ಯ, ಸಂಖ್ಯೆ ಅಥವಾ ಇತರ ಮೌಲ್ಯವನ್ನು ಮುದ್ರಿಸಿ."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "ಬಳಕೆದಾರರಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "ಬಳಕೆದಾರರಿಗೆ ಕೆಲವು ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "ಸಂದೇಶದೊಂದಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ಸಂದೇಶದೊಂದಿಗೆ ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 ಅನ್ನು %3 ರಲ್ಲಿ %2 ರೊಂದಿಗೆ ಬದಲಾಯಿಸಿ."; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "ಬೇರೆ ಪಠ್ಯದೊಳಗಿನ ಎಲ್ಲಾ ಕೆಲವು ಪಠ್ಯದ ಸಂಭಾವ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಿ."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 ಅನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ."; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಕ್ರಮವನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "ಒಂದು ಅಕ್ಷರ, ಪದ ಅಥವಾ ಪಠ್ಯದ ಸಾಲು."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ಎರಡೂ ಕಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ಎಡಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ಬಲಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "ಒಂದು ಅಥವಾ ಎರಡೂ ತುದಿಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾದ ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; -Blockly.Msg["TODAY"] = "ಇಂದು"; -Blockly.Msg["UNDO"] = "ಹಿಂದಿನಂತೆ ಮಾಡು"; -Blockly.Msg["UNNAMED_KEY"] = "ಹೆಸರಿಡದ"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ಅಂಶ"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 ಬದಲಿಸಿ' ರಚಿಸಿ"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "ಈ ಚರಾಂಶದ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ."; -Blockly.Msg["VARIABLES_SET"] = "%1 ನ್ನು %2 ಕ್ಕೆ ಬದಲಿಸಿ"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 ಪಡೆಯಿರಿ' ರಚಿಸಿ"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "ಈ ಚರಾಂಶವನ್ನು ಸೇರಿಸುವ ಅಂಶಕ್ಕೆ ಸಮಾನವಾಗಿ ಬದಲಿಸುತ್ತದೆ."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ '%2' ಡೇಟಾ ಪ್ರಕಾರದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "ಬ್ಲಾಕ್ಲಿ ಕಾರ್ಯಕ್ಷೇತ್ರ"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ಏನಾದರು ಹೇಳಿ..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ಟಿಪ್ಪಣಿ ಸೇರಿಸು"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ. ಏಕೆಂದರೆ ಇದು '%2' ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದ ಭಾಗವಾಗಿದೆ"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ಮೌಲ್ಯ ಬದಲಾಯಿಸು:"; +Blockly.Msg["CLEAN_UP"] = "ಬ್ಲಾಕ್‍ಗಳನ್ನೆಲ್ಲಾ ಒಪ್ಪವಾಗಿರಿಸು"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "ಸಂಕುಚಿತಗೊಂಡ ಬ್ಲಾಕ್ ಗಳು ಎಚ್ಚರಿಕೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ."; +Blockly.Msg["COLLAPSE_ALL"] = "ಬ್ಲಾಕ್‍ಗಳನ್ನು ಮಡಿಸಿಬಿಡು"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ಬ್ಲಾಕ್‍ನ್ನು ಮಡಿಸಿಬಿಡು"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ಬಣ್ಣ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ಬಣ್ಣ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ಅನುಪಾತ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ಮಿಶ್ರಣಮಾಡು"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ಕೊಟ್ಟಿರುವ ಅನುಪಾತದಂತೆ(0.0 - 1.0) ಎರಡು ಬಣ್ಣಗಳನ್ನು ಮಿಶ್ರಣ ಮಾಡುತ್ತದೆ."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ವರ್ಣಫಲಕದಿಂದ ಬಣ್ಣವನ್ನು ಆರಿಸು."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ಯಾದೃಚ್ಛಿಕ ಬಣ್ಣ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ಯಾದೃಚ್ಛಿಕವಾಗಿ ಯಾವುದಾದರೂ ಒಂದು ಬಣ್ಣವನ್ನು ಆರಿಸು."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ನೀಲಿ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ಹಸಿರು"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ಕೆಂಪು"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ಬಣ್ಣದಿಂದ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟ ಪ್ರಮಾಣದಲ್ಲಿ ಕೆಂಪು, ಹಸಿರು ಮತ್ತು ನೀಲಿಯನ್ನು ಹೊಂದಿದ ಒಂದು ಬಣ್ಣವನ್ನು ರಚಿಸಿ. ಎಲ್ಲಾ ಮೌಲ್ಯಗಳು 0 ಮತ್ತು 100 ರ ನಡುವೆ ಇರಲಿ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ಪುನರಾವರ್ತನೆಯಿಂದ ನಿರ್ಗಮಿಸು"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ಲೂಪ್ ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರೆಯಲಿ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ಒಳಹೊಕ್ಕಿರುವ ಲೂಪಿನಿಂದ ನಿರ್ಗಮಿಸು."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ಈ ಲೂಪಿನ ಉಳಿದ ಭಾಗವನ್ನು ಬಿಟ್ಟು, ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರಿಸಿ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕನ್ನು ಲೂಪ್‌ನಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿ %1 ಅಂಶಕ್ಕೆ"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಅಂಶಕ್ಕೆ, ಚರಾಂಶ '%1'ನ್ನು ಅಂಶಕ್ಕೆ ಜೋಡಿಸಿ, ತದನಂತರ ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 ಜೊತೆ ಎಣಿಸು %2 ಇಂದ %3 ತನಕ %4 ಪ್ರಮಾಣದಲ್ಲಿ"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ಚರಾಂಶವಾದ %1 ಪ್ರಾರಂಭ ಸಂಖ್ಯೆಯಿಂದ ಅಂತಿಮ ಸಂಖ್ಯೆಯವರೆಗೆ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಿ, ನಿರ್ದಿಷ್ಟ ಮಧ್ಯಂತರದಿಂದ ಎಣಿಸಿ, ಮತ್ತು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಬ್ಲಾಕ್ ಗಳನ್ನು ಮಾಡಲಿ."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಒಂದು ಷರತ್ತು ಸೇರಿಸಿ."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ಅಂತಿಮವಾದ, ಎಲ್ಲವನ್ನೂ-ಹಿಡಿ ಷರತ್ತನ್ನು 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಸೇರಿಸಿ."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ಈ 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ಇಲ್ಲದಿದ್ದರೆ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ಆಗಿರದಿದ್ದರೆ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ಆಗಿದ್ದರೆ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು, ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ಮೊದಲನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ. ಇಲ್ಲದಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ಮೊದಲನೆಯ ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಒಂದುವೇಳೆ ಯಾವುದೇ ಮೌಲ್ಯವೂ ಸತ್ಯವಾಗಿರದಿದ್ದರೆ, ಕೊನೆಯ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ಮಾಡು"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 ಬಾರಿ ಪುನರಾವರ್ತಿಸು"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಹಲವಾರು ಬಾರಿ ಮಾಡು."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ತನಕ ಪುನರಾವರ್ತಿಸು"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ಷರತ್ತು 'ಸತ್ಯ' ಆಗಿರುವವರೆಗೆ ಪುನರಾವರ್ತಿಸು"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ಮೌಲ್ಯವು ಸುಳ್ಳಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ಎಲ್ಲಾ %1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸುವುದೇ ?"; +Blockly.Msg["DELETE_BLOCK"] = "ಬ್ಲಾಕನ್ನು ಅಳಿಸು"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸು"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' ಚರಾಂಶದ '%1' ಉಪಯೋಗಗಳನ್ನು ಅಳಿಸುವುದೇ ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸು"; +Blockly.Msg["DIALOG_CANCEL"] = "ರದ್ದುಮಾಡಿ"; +Blockly.Msg["DIALOG_OK"] = "ಸರಿ"; +Blockly.Msg["DISABLE_BLOCK"] = "ಬ್ಲಾಕನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ಪ್ರತಿ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ಟಿಪ್ಪಣಿಯ ಪ್ರತಿ ಮಾಡು"; +Blockly.Msg["ENABLE_BLOCK"] = "ಬ್ಲಾಕನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು"; +Blockly.Msg["EXPAND_ALL"] = "ಬ್ಲಾಕ್‍ಗಳನ್ನು ವಿಸ್ತರಿಸು"; +Blockly.Msg["EXPAND_BLOCK"] = "ಬ್ಲಾಕನ್ನು ವಿಸ್ತರಿಸು"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ಬಾಹ್ಯ ಒಳಾಂಶಗಳು"; +Blockly.Msg["HELP"] = "ಸಹಾಯ"; +Blockly.Msg["INLINE_INPUTS"] = "ಸಾಲಿನಲ್ಲಿರುವ ಒಳಾoಶಗಳು"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ಖಾಲಿ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "ಯಾವುದೇ ದತ್ತಾಂಶ ದಾಖಲೆಗಳನ್ನು ಹೊಂದಿರದ, 0 ಉದ್ದದ, ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ಪಟ್ಟಿ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "ಈ ಪಟ್ಟಿಯ ಬ್ಲಾಕ್ ಅನ್ನು ಮರುಸಂರಚಿಸಲು ವಿಭಾಗಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ಇದರೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ."; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "ಪಟ್ಟಿಗೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "ಹಲವು ಅಂಶಗಳೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ಮೊದಲ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# ಕೊನೆಯಿಂದ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "ಪಡೆಯಿರಿ"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "ಪಡೆಯಿರಿ ಮತ್ತು ತೆಗೆದುಹಾಕಿ"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ಕೊನೆಯ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ಯಾದೃಚ್ಛಿಕ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ತೆಗೆ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಇರುವ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿರುವ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ಕೊನೆಯಿಂದ # ವರೆಗೆ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# ವರೆಗೆ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ಕೊನೆಯವರೆಗೂ"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ಮೊದಲಿನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "ಪಟ್ಟಿಯ ನಿರ್ದಿಷ್ಟ ಭಾಗದ ಪ್ರತಿಯನ್ನು ರಚಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ಕೊನೆಯ ಅಂಶ ಆಗಿದೆ."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ಮೊದಲ ಅಂಶ ಆಗಿದೆ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "ಅಂಶದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "ಅಂಶದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಅಂಶದ ಮೊದಲ/ಕೊನೆಯ ಸಂಭಾವ್ಯದ ಸೂಚಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಅಂಶ ಕಂಡುಬರದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_INLIST"] = "ಪಟ್ಟಿಯಲ್ಲಿ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ಖಾಲಿಯಾಗಿದೆ"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "ಪಟ್ಟಿ ಖಾಲಿಯಾಗಿದ್ದರೆ ಸತ್ಯ ಎಂದು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 ರ ಉದ್ದ"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "ಪಟ್ಟಿಯ ಉದ್ದವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 ಅಂಶದೊಂದಿಗೆ %2 ಬಾರಿ ಪುನರಾವರ್ತಿತಗೊಂಡ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ."; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "ಕೊಟ್ಟಿರುವ ಮೌಲ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟ ಬಾರಿ ಪುನರಾವರ್ತಿಸುವ ಪಟ್ಟಿಯನ್ನು ರಚಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 ನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ಹಾಗೆ"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ನಲ್ಲಿ ಸೇರಿಸಿ"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ಗೊತ್ತುಪಡಿಸಿ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "ಪಟ್ಟಿಯ ಪ್ರಾರಂಭದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "ಅಂಶವನ್ನು ಪಟ್ಟಿಯ ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "ಅಂಶವನ್ನು ಪಟ್ಟಿಯಲ್ಲಿ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಒಳಸೇರಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "ಪಟ್ಟಿಯಲ್ಲಿ ಮೊದಲ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "ಪಟ್ಟಿಯಲ್ಲಿ ಕೊನೆಯ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ಆರೋಹಣ"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ಅವರೋಹಣ"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 ವಿಂಗಡಿಸಿ"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ವಿಂಗಡಿಸಿ."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ವರ್ಣಮಾಲೆಯ, ದೊಡ್ಡಕ್ಷರ/ಸಣ್ಣಕ್ಷರವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ಸಂಖ್ಯಾತ್ಮಕ"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "ವರ್ಣಮಾಲೆಯ"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ಪಠ್ಯದಿಂದ ಪಟ್ಟಿಯನ್ನು ಮಾಡಿ"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ಪಟ್ಟಿಯಿಂದ ಪಠ್ಯವನ್ನು ಮಾಡಿ"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಿಂದ ಬೇರ್ಪಡಿಸಲಾಗಿರುವ ಪಠ್ಯಗಳ ಪಟ್ಟಿಯನ್ನೆಲ್ಲಾ ಒಂದು ಪಠ್ಯಕ್ಕೆ ಸೇರಿಸಿ."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಲ್ಲಿ ಮುರಿದು, ಪಠ್ಯವನ್ನು ವಿಭಜಿಸಿ ಪಠ್ಯಗಳ ಪಟ್ಟಿಮಾಡಿ."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯೊಡನೆ"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ಸುಳ್ಳು"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಎರಡರಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ಸತ್ಯ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿದ್ದರೆ, ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದ್ದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿರದಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 ಅಲ್ಲ"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ಒದಗಿಸುವ ಅಂಶ ಸುಳ್ಳಾಗಿದ್ದರೆ ಸರಿಯೆನ್ನಿ. ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ತಪ್ಪೆನ್ನಿ."; +Blockly.Msg["LOGIC_NULL"] = "ಶೂನ್ಯ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ಶೂನ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ಮತ್ತು"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ಅಥವಾ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ಒದಗಿಸುವ ಎರಡೂ ಅಂಶಗಳು ಸರಿಯಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ಯಾವುದಾದರೂ ಒಂದು ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ಪರೀಕ್ಷೆ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ಸುಳ್ಳು ಆಗಿದ್ದರೆ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ಸತ್ಯ ಆಗಿದ್ದರೆ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'ಪರೀಕ್ಷೆ'ಯಲ್ಲಿನ ಷರತ್ತನ್ನು ಪರಿಶೀಲಿಸಿ. ಷರತ್ತು ಸರಿಯಾಗಿದ್ದರೆ, 'ಸತ್ಯವಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನು; ಇಲ್ಲದಿದ್ದರೆ 'ಸುಳ್ಳಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನೂ ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ಭಾಗಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ವ್ಯತ್ಯಾಸವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ಗುಣಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "ಮೊದಲ ಸಂಖ್ಯೆಯ ಘಾತಾಂಶ ಎರಡನೇ ಸಂಖ್ಯೆಯಾದಾಗಿನ ಫಲಿತಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 ಬಿಂದುವಿನ ಆರ್ಕ್ ಟ್ಯಾನ್"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "ಬಿಂದು (X,Y) ನ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ನ್ನು -180 ರಿಂದ 180 ರವರೆಗಿನ ಡಿಗ್ರಿಗಳಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 ಅನ್ನು %2 ರಿಂದ ಬದಲಾಯಿಸಿ"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "ಚರಾಂಶ '%1' ಕ್ಕೆ ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕಗಳಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸಿ:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1ಅನ್ನು ಕಡಿಮೆ %2 ಹೆಚ್ಚಿನ %3 ಮೌಲ್ಯಗಳ ನಡುವೆ ನಿರ್ಬಂಧಿಸಿ"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "ನಿಗದಿತ ಮಿತಿಗಳ ನಡುವೆ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸಿ(ಒಳಗೊ೦ಡ)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ಇದರಿಂದ ಭಾಗಿಸಬಹುದೇ?"; +Blockly.Msg["MATH_IS_EVEN"] = "ಸಮ ಸಂಖ್ಯೆಯೇ?"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ಋಣಾತ್ಮಕವೇ?"; +Blockly.Msg["MATH_IS_ODD"] = "ಬೆಸ ಸಂಖ್ಯೆಯೇ?"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ಧನಾತ್ಮಕವೇ?"; +Blockly.Msg["MATH_IS_PRIME"] = "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆಯೇ?"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "ಒಂದು ಸಂಖ್ಯೆ ಸಮ, ಬೆಸ, ಅವಿಭಾಜ್ಯ, ಪೂರ್ಣ, ಧನಾತ್ಮಕ, ಋಣಾತ್ಮಕವಾಗಿದೆಯೇ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯಿಂದ ಭಾಗಿಸ ಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_IS_WHOLE"] = "ಪೂರ್ಣಸಂಖ್ಯೆಯೇ?"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 ರ ಶೇಷ"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "ಎರಡು ಸಂಖ್ಯೆಗಳ ವಿಭಜನೆಯ ಶೇಷವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ಒಂದು ಸಂಖ್ಯೆ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ಪಟ್ಟಿಯ ಸರಾಸರಿ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ಪಟ್ಟಿಯ ಗರಿಷ್ಠ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ಪಟ್ಟಿಯ ಮಧ್ಯಾಂಕ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ಪಟ್ಟಿಯ ಕನಿಷ್ಠ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಆಗಾಗ್ಗೆ ಕಾಣಿಸಿಕೊಳ್ಳುವ ಸಂಖ್ಯೆಗಳು"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ಪಟ್ಟಿಯ ಮೊತ್ತ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಸಂಖ್ಯಾ ಮೌಲ್ಯಗಳ ಸರಾಸರಿ (ಅಂಕಗಣಿತದ ಸರಾಸರಿ) ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "ಪಟ್ಟಿಯಲ್ಲಿನ ಮಧ್ಯಾಂಕ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಕನಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಸಾಮಾನ್ಯ ಅಂಶಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (ಒಳಗೊಂಡ) ಮತ್ತು 1.0 (ವಿಶೇಷ) ನಡುವೆ ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕ %1 ರಿಂದ %2 ರವರೆಗೆ"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "ಎರಡು ನಿರ್ದಿಷ್ಟ ಮಿತಿಗಳ ನಡುವೆ ಇರುವ ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ಸುತ್ತು"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ."; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ಮೇಲಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ."; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಮೇಲಿನ ಅಥವಾ ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ಪರಿಪೂರ್ಣ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ವರ್ಗಮೂಲ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "ಸಂಖ್ಯೆಯೊಂದರ ಪರಿಪೂರ್ಣ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "ಒಂದು ಸಂಖ್ಯೆಯ e ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ಸಂಖ್ಯೆಯ ನೈಸರ್ಗಿಕ ಲಾಗರಿಥಮ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ಒಂದು ಸಂಖ್ಯೆಯ ಆಧಾರ 10 ಲಾಗರಿಥಮನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ಸಂಖ್ಯೆಯೊಂದರ ನಿರಾಕರಣೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "ಒಂದು ಸಂಖ್ಯೆಯ 10ರ ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ಸಂಖ್ಯೆಯ ವರ್ಗಮೂಲವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "ಕೋನವೊಂದರ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "ಕೋನವೊಂದರ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "ಕೋನವೊಂದರ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ಬಣ್ಣದ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ಸಂಖ್ಯಾ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "ಚಿಹ್ನೆಗಳ ಸರಣಿಯ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು..."; +Blockly.Msg["NEW_VARIABLE"] = "ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ಹೊಸ ಚರಾಂಶದ ಹೆಸರು:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ಹೊಸ ಚರಾಂಶದ ಡೇಟಾಪ್ರಕಾರ:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ಹೇಳಿಕೆಗಳನ್ನು ಅನುಮತಿಸಿ"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ಜೊತೆ:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ ಮತ್ತು ಅದರ ಹೊರಾಂಶವನ್ನು ಉಪಯೋಗಿಸಿ"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ಜೊತೆ:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' ರಚಿಸಿ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "ಈ ಕಾರ್ಯಘಟಕವನ್ನು ವಿವರಿಸಿ ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ಏನಾದರೂ ಮಾಡಿ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ಗೆ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "ಯಾವುದೇ ಹೊರಾಂಶ ಇಲ್ಲದ ಕಾರ್ಯಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ಹಿಂತಿರುಗಿಸಿ"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "ಹೊರಾಂಶ ಇರುವ ಕಾರ್ಯ ಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯಘಟಕವು ನಕಲಿ ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿದೆ."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ಒಂದು ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕ್ ಅನ್ನು ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ಒಳಾoಶದ ಹೆಸರು:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ಕಾರ್ಯಘಟಕಕ್ಕೆ ಒಳಾoಶವನ್ನು ಸೇರಿಸಿ."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ಒಳಾoಶಗಳು"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "ಈ ಕಾರ್ಯಕ್ಕೆ ಒಳಾoಶಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ."; +Blockly.Msg["REDO"] = "ಮತ್ತೆ ಮಾಡು"; +Blockly.Msg["REMOVE_COMMENT"] = "ಟಿಪ್ಪಣಿ ಅಳಿಸು"; +Blockly.Msg["RENAME_VARIABLE"] = "ಚರಾಂಶವನ್ನು ಮರುಹೆಸರಿಸು..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ಎಲ್ಲ '%1' ಚರಾಂಶಗಳನ್ನು ಮರುಹೆಸರಿಸು:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = " %1 ಕ್ಕೆ ಪಠ್ಯ %2 ನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ."; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' ಚರಾಂಶಕ್ಕೆ ಕೆಲವು ಪಠ್ಯವನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ಸಣ್ಣಕ್ಷರಕ್ಕೆ"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "ಶೀರ್ಷಿಕೆಯ ಅಕ್ಷರವಾಗಿ"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "ದೊಡ್ಡಕ್ಷರಕ್ಕೆ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಪ್ರಸ್ತುತಕ್ಕೆ ವಿರುದ್ಡವಾದ ದೊಡ್ಡಕ್ಷರ ಅಥವಾ ಸಣ್ಣಕ್ಷರದಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ಮೊದಲ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ಕೊನೆಯಿಂದ # ಅಕ್ಷರ ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# ಅಕ್ಷರ ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "ಕೊನೆಯ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ಯಾದೃಚ್ಛಿತ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ಪಠ್ಯದಲ್ಲಿ %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಕ್ಷರವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2 ರಲ್ಲಿ %1 ಅನ್ನು ಎಣಿಸಿ"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "ಬೇರೆ ಕೆಲವು ಪಠ್ಯಗಳಲ್ಲಿ ಕೆಲವು ಪಠ್ಯವು ಎಷ್ಟು ಬಾರಿ ಸಂಭವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಎಣಿಸಿ."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "ಪಠ್ಯಕ್ಕೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ಸೇರಿಸು"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "ಈ ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ಕೊನೆಯಿಂದ # ಅಕ್ಷರದವರೆಗೆ"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# ಅಕ್ಷರದವರೆಗೆ"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ಕೊನೆಯ ಅಕ್ಷರದವರೆಗೆ"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ಪಠ್ಯದಲ್ಲಿ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ಮೊದಲ ಅಕ್ಷರದಿಂದ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "ಪಠ್ಯದ ನಿರ್ದಿಷ್ಟ ಭಾಗವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ಪಠ್ಯದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ಪಠ್ಯದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ಪಠ್ಯದಲ್ಲಿ %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "ಎರಡನೇ ಪಠ್ಯದಲ್ಲಿ ಮೊದಲ ಪಠ್ಯದ ಸಂಭಾವ್ಯದ, ಮೊದಲ/ಕೊನೆಯ ಸೂಚ್ಯಂಕವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಪಠ್ಯ ಕಂಡುಬಂದಿಲ್ಲದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ಖಾಲಿಯಿದೆ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "ಒದಗಿಸಿದ ಪಠ್ಯ ಖಾಲಿಯಾಗಿದ್ದರೆ 'ಸತ್ಯ' ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ಇದರೊಂದಿಗೆ ಪಠ್ಯವನ್ನು ರಚಿಸಿ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "ಹಲವಾರು ಅಂಶಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸುವ ಮೂಲಕ ಪಠ್ಯದ ತುಣುಕನ್ನು ರಚಿಸಿ."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1ರ ಉದ್ದ"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "ಒದಗಿಸಿದ ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಸಂಖ್ಯೆಯನ್ನು (ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ) ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 ಮುದ್ರಿಸಿ"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪಠ್ಯ, ಸಂಖ್ಯೆ ಅಥವಾ ಇತರ ಮೌಲ್ಯವನ್ನು ಮುದ್ರಿಸಿ."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "ಬಳಕೆದಾರರಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "ಬಳಕೆದಾರರಿಗೆ ಕೆಲವು ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "ಸಂದೇಶದೊಂದಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ಸಂದೇಶದೊಂದಿಗೆ ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 ಅನ್ನು %3 ರಲ್ಲಿ %2 ರೊಂದಿಗೆ ಬದಲಾಯಿಸಿ."; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "ಬೇರೆ ಪಠ್ಯದೊಳಗಿನ ಎಲ್ಲಾ ಕೆಲವು ಪಠ್ಯದ ಸಂಭಾವ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಿ."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 ಅನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ."; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಕ್ರಮವನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "ಒಂದು ಅಕ್ಷರ, ಪದ ಅಥವಾ ಪಠ್ಯದ ಸಾಲು."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ಎರಡೂ ಕಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ಎಡಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ಬಲಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "ಒಂದು ಅಥವಾ ಎರಡೂ ತುದಿಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾದ ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು."; +Blockly.Msg["TODAY"] = "ಇಂದು"; +Blockly.Msg["UNDO"] = "ಹಿಂದಿನಂತೆ ಮಾಡು"; +Blockly.Msg["UNNAMED_KEY"] = "ಹೆಸರಿಡದ"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ಅಂಶ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 ಬದಲಿಸಿ' ರಚಿಸಿ"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "ಈ ಚರಾಂಶದ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ."; +Blockly.Msg["VARIABLES_SET"] = "%1 ನ್ನು %2 ಕ್ಕೆ ಬದಲಿಸಿ"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 ಪಡೆಯಿರಿ' ರಚಿಸಿ"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "ಈ ಚರಾಂಶವನ್ನು ಸೇರಿಸುವ ಅಂಶಕ್ಕೆ ಸಮಾನವಾಗಿ ಬದಲಿಸುತ್ತದೆ."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ '%2' ಡೇಟಾ ಪ್ರಕಾರದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "ಬ್ಲಾಕ್ಲಿ ಕಾರ್ಯಕ್ಷೇತ್ರ"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ಏನಾದರು ಹೇಳಿ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ko.js b/msg/js/ko.js index 1bb624c68ef..2efb2112de4 100644 --- a/msg/js/ko.js +++ b/msg/js/ko.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "주석 추가"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%2' 함수 정의의 일부이기 때문에 '%1' 변수를 삭제할 수 없습니다"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "값 바꾸기:"; -Blockly.Msg["CLEAN_UP"] = "블록 정리"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "접힌 블록이 경고를 포함하고 있습니다."; -Blockly.Msg["COLLAPSE_ALL"] = "블록 축소"; -Blockly.Msg["COLLAPSE_BLOCK"] = "블록 축소"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "색 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "색 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "비율"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "혼합"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "두 색을 주어진 비율로 혼합 (0.0 - 1.0)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ko.wikipedia.org/wiki/색"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "팔레트에서 색을 고릅니다"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "무작위 색상"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "무작위로 색을 고릅니다."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "파랑"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "초록"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "빨강"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "색"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "빨강,파랑,초록의 값을 이용하여 색을 만드십시오. 모든 값은 0과 100 사이에 있어야 합니다."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://ko.wikipedia.org/wiki/%EC%A0%9C%EC%96%B4_%ED%9D%90%EB%A6%84"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "반복 중단"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "다음 반복"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "현재 반복 실행 블럭을 빠져나갑니다."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "나머지 반복 부분을 더 이상 실행하지 않고, 다음 반복을 수행합니다."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "경고 : 이 블록은 반복 실행 블럭 안에서만 사용됩니다."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84#.EC.9E.84.EC.9D.98.EC.9D.98_.EC.A7.91.ED.95.A9"; -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "각 항목에 대해 %1 목록으로 %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "리스트 안에 들어있는 각 아이템들을, 순서대로 변수 '%1' 에 한 번씩 저장시키고, 그 때 마다 명령을 실행합니다."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84"; -Blockly.Msg["CONTROLS_FOR_TITLE"] = "으로 계산 %1 %2에서 %4을 이용하여 %3로"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "변수 \"%1\"은 지정된 간격으로 시작 수에서 끝 수까지를 세어 지정된 블록을 수행해야 합니다."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"만약\" 블럭에 조건 검사를 추가합니다."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "\"만약\" 블럭의 마지막에, 모든 검사 결과가 거짓인 경우 실행할 부분을 추가합니다."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%AC%B8"; -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "섹션을 추가, 제거하거나 순서를 변경하여 이 if 블럭을 재구성합니다."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "아니라면"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "다른 경우"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "만약"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "조건식의 계산 결과가 참이면, 명령을 실행합니다."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 그렇지 않으면 두 번째 블럭의 명령을 실행합니다."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행합니다."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행하고, ... , 어떤 조건식의 계산 결과도 참이 아니면, 마지막 블럭의 명령을 실행합니다."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ko.wikipedia.org/wiki/For_루프"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "하기"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1회 반복"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "여러 번 반복해 명령들을 실행합니다."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://ko.wikipedia.org/wiki/While_%EB%A3%A8%ED%94%84"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "다음까지 반복"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "동안 반복"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "값이 거짓일 때, 몇 가지 선언을 합니다."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "값이 참일 때, 몇 가지 선언을 합니다."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "모든 블록 %1개를 삭제하겠습니까?"; -Blockly.Msg["DELETE_BLOCK"] = "블록 삭제"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' 변수를 삭제합니다"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' 변수에서 %1을(를) 삭제하시겠습니까?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "블록 %1개 삭제"; -Blockly.Msg["DIALOG_CANCEL"] = "취소"; -Blockly.Msg["DIALOG_OK"] = "확인"; -Blockly.Msg["DISABLE_BLOCK"] = "블록 비활성화"; -Blockly.Msg["DUPLICATE_BLOCK"] = "복제"; -Blockly.Msg["DUPLICATE_COMMENT"] = "주석 복제하기"; -Blockly.Msg["ENABLE_BLOCK"] = "블록 활성화"; -Blockly.Msg["EXPAND_ALL"] = "블록 확장"; -Blockly.Msg["EXPAND_BLOCK"] = "블록 확장"; -Blockly.Msg["EXTERNAL_INPUTS"] = "외부 입력"; -Blockly.Msg["HELP"] = "도움말"; -Blockly.Msg["INLINE_INPUTS"] = "내부 입력"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "빈 리스트 생성"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "데이터 레코드가 없는, 길이가 0인 목록을 반환합니다."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "리스트"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "섹션을 추가, 제거하거나 순서를 변경하여 이 리스트 블럭을 재구성합니다."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "리스트 만들기"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "아이템을 리스트에 추가합니다."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "원하는 수의 항목들로 목록을 생성합니다."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "첫 번째"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "마지막 번째 위치부터, # 번째"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "가져오기"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "잘라 내기"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "마지막"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "임의로"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "삭제"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "첫 번째 아이템을 찾아 돌려줍니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "목록에서 특정 위치의 항목을 반환합니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "마지막 아이템을 찾아 돌려줍니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "리스트의 아이템들 중, 랜덤으로 선택해 돌려줍니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "첫 번째 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "목록의 특정 위치에 있는 항목을 제거하고 반환합니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "마지막 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "목록에서 임의 위치의 아이템을 찾아내 삭제하고 돌려줍니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "리스트에서 첫 번째 아이템을 삭제합니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "목록에서 특정 위치의 항목을 삭제합니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "리스트에서 마지막 아이템을 찾아 삭제합니다."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "리스트에서 랜덤하게 아이템을 삭제합니다."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "끝에서부터 # 번째로"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "앞에서부터 # 번째로"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "마지막으로"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "첫 번째 위치부터, 서브 리스트 추출"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "마지막부터 # 번째 위치부터, 서브 리스트 추출"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "처음 # 번째 위치부터, 서브 리스트 추출"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "목록의 특정 부분에 대한 복사본을 만듭니다."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1은(는) 마지막 항목입니다."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1은 첫 번째 항목입니다."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "처음으로 나타난 위치"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "마지막으로 나타난 위치"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "목록에서 항목이 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 항목이 없으면 %1을 반환합니다."; -Blockly.Msg["LISTS_INLIST"] = "리스트"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1이 비어 있습니다"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "목록이 비었을 때 참을 반환합니다."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1의 길이"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "목록의 길이를 반환합니다."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1을 %2번 넣어, 리스트 생성"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "지정된 값을, 지정된 개수 만큼 넣어, 목록을 생성합니다."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 뒤집기"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "리스트의 복사본을 뒤집습니다."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "에"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "에서 원하는 위치에 삽입"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "에서 설정"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "항목을 목록의 처음 위치에 삽입합니다."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "목록의 특정 위치에 항목을 삽입합니다."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "리스트의 마지막에 아이템을 추가합니다."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "목록에서 임의 위치에 아이템을 삽입합니다."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "첫 번째 위치의 아이템으로 설정합니다."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "목록의 특정 위치에 있는 항목으로 설정합니다."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "마지막 아이템으로 설정합니다."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "목록에서 임의 위치의 아이템을 설정합니다."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "오름차순"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "내림차순"; -Blockly.Msg["LISTS_SORT_TITLE"] = "정렬 %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "목록의 사본을 정렬합니다."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "알파벳순 (대소문자 구분 안 함)"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "숫자순"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "알파벳순"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "텍스트에서 목록 만들기"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "목록에서 텍스트 만들기"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "구분 기호로 구분하여 텍스트 목록을 하나의 텍스트에 병합합니다."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "각 속보, 텍스트의 목록들에서 텍스트를 분할합니다."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "분리와"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "거짓"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://ko.wikipedia.org/wiki/%EC%A7%84%EB%A6%BF%EA%B0%92"; -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "참 혹은 거짓 모두 반환합니다."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "참"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ko.wikipedia.org/wiki/부등식"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "두 값이 같으면, 참(true) 값을 돌려줍니다."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "첫 번째 값이 두 번째 값보다 크면, 참(true) 값을 돌려줍니다."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "첫 번째 값이 두 번째 값보다 크거나 같으면, 참(true) 값을 돌려줍니다."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "첫 번째 값이 두 번째 값보다 작으면, 참(true) 값을 돌려줍니다."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "첫 번째 값이 두 번째 값보다 작거나 같으면, 참(true) 값을 돌려줍니다."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "두 값이 서로 다르면, 참(true) 값을 돌려줍니다."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B6%80%EC%A0%95"; -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1가 아닙니다"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "입력값이 거짓이라면 참을 반환합니다. 참이라면 거짓을 반환합니다."; -Blockly.Msg["LOGIC_NULL"] = "빈 값"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "빈 값을 반환합니다."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "그리고"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B6%88_%EB%85%BC%EB%A6%AC"; -Blockly.Msg["LOGIC_OPERATION_OR"] = "또는"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "두 값이 모두 참(true) 값이면, 참 값을 돌려줍니다."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "적어도 하나의 값이 참일 경우 참을 반환합니다."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "테스트"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://ko.wikipedia.org/wiki/물음표"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "만약 거짓이라면"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "만약 참이라면"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'test'의 조건을 검사합니다. 조건이 참이면 'if true' 값을 반환합니다. 거짓이면 'if false' 값을 반환합니다."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ko.wikipedia.org/wiki/산술"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "두 수의 합을 반환합니다."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "두 수의 나눈 결과를 반환합니다."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "두 수간의 차이를 반환합니다."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "두 수의 곱을 반환합니다."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "첫 번째 수를 두 번째 수 만큼, 거듭제곱 한 결과값을 돌려줍니다."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2의 atan2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "점 (X, Y)의 아크탄젠트를 -180에서 180까지 도 단위로 반환합니다."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "바꾸기 %1 만큼 %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "변수 '%1' 에 저장되어있는 값에, 어떤 수를 더해, 변수에 다시 저장합니다."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ko.wikipedia.org/wiki/수학_상수"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "일반적인 상수 값들 중 하나를 돌려줍니다. : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://ko.wikipedia.org/wiki/클램핑_(그래픽)"; -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1의 값을, 최소 %2 최대 %3으로 조정"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "어떤 수를, 특정 범위의 값이 되도록 강제로 조정합니다."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "가 다음 수로 나누어 떨어지면 :"; -Blockly.Msg["MATH_IS_EVEN"] = "가 짝수(even) 이면"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "가 음(-)수 이면"; -Blockly.Msg["MATH_IS_ODD"] = "가 홀수(odd) 이면"; -Blockly.Msg["MATH_IS_POSITIVE"] = "가 양(+)수 이면"; -Blockly.Msg["MATH_IS_PRIME"] = "가 소수(prime) 이면"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "어떤 수가 짝 수, 홀 수, 소 수, 정 수, 양 수, 음 수, 나누어 떨어지는 수 인지 검사해 결과값을 돌려줍니다. 참(true) 또는 거짓(false) 값을 돌려줌."; -Blockly.Msg["MATH_IS_WHOLE"] = "가 정수이면"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2의 나머지"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "첫 번째 수를 두 번째 수로 나눈, 나머지 값을 돌려줍니다."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ko.wikipedia.org/wiki/수_(수학)"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "수"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "평균값"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "최대값"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "중간값"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "최소값"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "가장 여러 개 있는 값"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "목록의 임의 항목"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "표준 편차"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "합"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "리스트에 들어있는 수(값)들에 대해, 산술 평균(arithmetic mean) 한 값을 돌려줍니다."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "리스트에 들어있는 수(값) 들 중, 가장 큰(max) 수(값)를 돌려줍니다."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "리스트에 들어있는 수(값) 들 중, 중간(median) 수(값)를 돌려줍니다."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "리스트에 들어있는 수(값) 들 중, 가장 작은(min) 수(값)를 돌려줍니다."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "리스트에 들어있는 아이템들 중에서, 가장 여러 번 들어있는 아이템들을 리스트로 만들어 돌려줍니다. (최빈값, modes)"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "목록에서 임의의 아이템을 돌려줍니다."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "이 리스트의 표준 편차를 반환합니다."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "리스트에 들어있는 수(값)들을, 모두 합(sum) 한, 총합(sum)을 돌려줍니다."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "임의 분수"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (포함)과 1.0 (배타적) 사이의 임의 분수 값을 돌려줍니다."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "랜덤정수(%1<= n <=%2)"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "두 주어진 제한된 범위 사이의 임의 정수값을 돌려줍니다."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ko.wikipedia.org/wiki/반올림"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "반올림"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "버림"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "올림"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "어떤 수를 반올림/올림/버림한 결과를, 정수값으로 돌려줍니다."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ko.wikipedia.org/wiki/제곱근"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "절대값"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "제곱근"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "어떤 수의 절대값(absolute)을 계산한 결과를, 정수값으로 돌려줍니다."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "e의 거듭제곱 값을 반환합니다."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "어떤 수의, 자연로그(natural logarithm) 값을 돌려줍니다.(밑 e, 예시 log e x)"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "어떤 수의, 기본로그(logarithm) 값을 돌려줍니다.(밑 10, 예시 log 10 x)"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "음(-)/양(+), 부호를 반대로 하여 값을 돌려줍니다."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10의 거듭제곱 값을 반환합니다."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "숫자의 제곱근을 반환합니다."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ko.wikipedia.org/wiki/삼각함수"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "어떤 수에 대한, acos(arccosine) 값을 돌려줍니다."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "어떤 수에 대한, asin(arcsine) 값을 돌려줍니다."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "어떤 수에 대한, atan(arctangent) 값을 돌려줍니다."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "각도의 코사인을 반환합니다. (라디안 아님)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "각도의 사인을 반환합니다. (라디안 아님)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "각도의 탄젠트를 반환합니다. (라디안 아님)"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "색 변수 만들기..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "숫자 변수 만들기...."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "문자열 변수 만들기..."; -Blockly.Msg["NEW_VARIABLE"] = "변수 만들기..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "새 변수 이름:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "새 변수 유형:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "서술 허가"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "사용:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/함수_(프로그래밍)"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "미리 정의해 둔 '%1' 함수를 실행합니다."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/함수_(프로그래밍)"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "미리 정의해 둔 '%1' 함수를 실행하고, 함수를 실행한 결과 값을 돌려줍니다."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "사용:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' 생성"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "이 함수를 설명하세요..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "함수 이름"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "함수"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "실행 후, 결과 값을 돌려주지 않는 함수를 만듭니다."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "다음을 돌려줌"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "실행 후, 결과 값을 돌려주는 함수를 만듭니다."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "경고: 이 함수에는, 같은 이름을 사용하는 매개 변수들이 있습니다."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "함수 정의 찾기"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "값이 참이라면, 두 번째 값을 반환합니다."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "경고: 이 블럭은, 함수 정의 블럭 안에서만 사용할 수 있습니다."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "매개 변수:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "함수에 값을 더합니다."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "매개 변수들"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "이 함수를 추가, 삭제, 혹은 재정렬합니다."; -Blockly.Msg["REDO"] = "다시 실행"; -Blockly.Msg["REMOVE_COMMENT"] = "주석 제거"; -Blockly.Msg["RENAME_VARIABLE"] = "변수 이름 바꾸기:"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "'%1' 변수 이름을 바꾸기:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_APPEND_TITLE"] = "다음 %1 내용 덧붙이기 %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' 변수의 끝에 일부 텍스트를 덧붙입니다."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "소문자로"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "첫 문자만 대문자로"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "대문자로"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "영문 대소문자 형태를 변경해 돌려줍니다."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "에서, 첫 번째 문자 얻기"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "에서, 마지막부터 # 번째 위치의 문자 얻기"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "에서, 앞에서부터 # 번째 위치의 문자 얻기"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; -Blockly.Msg["TEXT_CHARAT_LAST"] = "에서, 마지막 문자 얻기"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "에서, 랜덤하게 한 문자 얻기"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "텍스트 %1 %2에서"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "특정 번째 위치에서, 문자를 얻어내 돌려줍니다."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2에서 %1 숫자 세기"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "다른 어떤 텍스트에서 어떤 텍스트가 나타난 횟수를 셉니다."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "텍스트에 항목을 추가합니다."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "가입"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "섹션을 추가, 제거하거나 순서를 변경하여 이 텍스트 블럭을 재구성합니다."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "끝에서부터 # 번째 문자까지"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# 번째 문자까지"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "마지막 문자까지"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "문장"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "에서, 처음부터 얻어냄"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "에서, 마지막에서 # 번째부터 얻어냄"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "에서, 처음부터 # 번째 문자부터 얻어냄"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "문장 중 일부를 얻어내 돌려줍니다."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "에서 다음 문장이 처음으로 나타난 위치 찾기 :"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "에서 다음 문장이 마지막으로 나타난 위치 찾기 :"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "문장 %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "두 번째 텍스트에서 첫 번째 텍스트가 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 텍스트가 없으면 %1을 반환합니다."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1이 비어 있습니다"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "입력된 문장이, 빈 문장(\"\")이면 참(true) 값을 돌려줍니다."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "텍스트 만들기"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "여러 개의 아이템들을 연결해(묶어), 새로운 문장을 만듭니다."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_LENGTH_TITLE"] = "다음 문장의 문자 개수 %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "입력된 문장의, 문자 개수를 돌려줍니다.(공백문자 포함)"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; -Blockly.Msg["TEXT_PRINT_TITLE"] = "다음 내용 출력 %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "원하는 문장, 수, 값 등을 출력합니다."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "수에 대해 사용자의 입력을 받습니다."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "문장에 대해 사용자의 입력을 받습니다."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "메시지를 활용해 수 입력"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "메시지를 활용해 문장 입력"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%3에서 %2을(를) %1(으)로 바꾸기"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "다른 텍스트 내에서 일부 텍스트의 모든 발생을 치환합니다."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 뒤집기"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "텍스트 안의 문자의 순서를 반전시킵니다."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ko.wikipedia.org/wiki/문자열"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "문자, 단어, 문장."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "양쪽의 공백 문자 제거"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "왼쪽의 공백 문자 제거"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "오른쪽의 공백 문자 제거"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "문장의 왼쪽/오른쪽/양쪽에서 스페이스 문자를 제거해 돌려줍니다."; -Blockly.Msg["TODAY"] = "오늘"; -Blockly.Msg["UNDO"] = "실행 취소"; -Blockly.Msg["UNNAMED_KEY"] = "이름이 없는"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "항목"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'집합 %1' 생성"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)"; -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "변수에 저장 되어있는 값을 돌려줍니다."; -Blockly.Msg["VARIABLES_SET"] = "%1를 %2로 설정"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 값 읽기' 블럭 생성"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)"; -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "변수의 값을 입력한 값으로 변경해 줍니다."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' 변수는 이미 존재합니다."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' 변수는 다른 유형에 대해 이미 존재합니다: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly 워크스페이스"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "말해 보세요..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "주석 추가"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%2' 함수 정의의 일부이기 때문에 '%1' 변수를 삭제할 수 없습니다"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "값 바꾸기:"; +Blockly.Msg["CLEAN_UP"] = "블록 정리"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "접힌 블록이 경고를 포함하고 있습니다."; +Blockly.Msg["COLLAPSE_ALL"] = "블록 축소"; +Blockly.Msg["COLLAPSE_BLOCK"] = "블록 축소"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "색 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "색 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "비율"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "혼합"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "두 색을 주어진 비율로 혼합 (0.0 - 1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ko.wikipedia.org/wiki/색"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "팔레트에서 색을 고릅니다"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "무작위 색상"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "무작위로 색을 고릅니다."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "파랑"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "초록"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "빨강"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "색"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "빨강,파랑,초록의 값을 이용하여 색을 만드십시오. 모든 값은 0과 100 사이에 있어야 합니다."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://ko.wikipedia.org/wiki/%EC%A0%9C%EC%96%B4_%ED%9D%90%EB%A6%84"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "반복 중단"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "다음 반복"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "현재 반복 실행 블럭을 빠져나갑니다."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "나머지 반복 부분을 더 이상 실행하지 않고, 다음 반복을 수행합니다."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "경고 : 이 블록은 반복 실행 블럭 안에서만 사용됩니다."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84#.EC.9E.84.EC.9D.98.EC.9D.98_.EC.A7.91.ED.95.A9"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "각 항목에 대해 %1 목록으로 %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "리스트 안에 들어있는 각 아이템들을, 순서대로 변수 '%1' 에 한 번씩 저장시키고, 그 때 마다 명령을 실행합니다."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "으로 계산 %1 %2에서 %4을 이용하여 %3로"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "변수 \"%1\"은 지정된 간격으로 시작 수에서 끝 수까지를 세어 지정된 블록을 수행해야 합니다."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"만약\" 블럭에 조건 검사를 추가합니다."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "\"만약\" 블럭의 마지막에, 모든 검사 결과가 거짓인 경우 실행할 부분을 추가합니다."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%AC%B8"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "섹션을 추가, 제거하거나 순서를 변경하여 이 if 블럭을 재구성합니다."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "아니라면"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "다른 경우"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "만약"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "조건식의 계산 결과가 참이면, 명령을 실행합니다."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 그렇지 않으면 두 번째 블럭의 명령을 실행합니다."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행합니다."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행하고, ... , 어떤 조건식의 계산 결과도 참이 아니면, 마지막 블럭의 명령을 실행합니다."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ko.wikipedia.org/wiki/For_루프"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "하기"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1회 반복"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "여러 번 반복해 명령들을 실행합니다."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://ko.wikipedia.org/wiki/While_%EB%A3%A8%ED%94%84"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "다음까지 반복"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "동안 반복"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "값이 거짓일 때, 몇 가지 선언을 합니다."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "값이 참일 때, 몇 가지 선언을 합니다."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "모든 블록 %1개를 삭제하겠습니까?"; +Blockly.Msg["DELETE_BLOCK"] = "블록 삭제"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' 변수를 삭제합니다"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' 변수에서 %1을(를) 삭제하시겠습니까?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "블록 %1개 삭제"; +Blockly.Msg["DIALOG_CANCEL"] = "취소"; +Blockly.Msg["DIALOG_OK"] = "확인"; +Blockly.Msg["DISABLE_BLOCK"] = "블록 비활성화"; +Blockly.Msg["DUPLICATE_BLOCK"] = "복제"; +Blockly.Msg["DUPLICATE_COMMENT"] = "주석 복제하기"; +Blockly.Msg["ENABLE_BLOCK"] = "블록 활성화"; +Blockly.Msg["EXPAND_ALL"] = "블록 확장"; +Blockly.Msg["EXPAND_BLOCK"] = "블록 확장"; +Blockly.Msg["EXTERNAL_INPUTS"] = "외부 입력"; +Blockly.Msg["HELP"] = "도움말"; +Blockly.Msg["INLINE_INPUTS"] = "내부 입력"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "빈 리스트 생성"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "데이터 레코드가 없는, 길이가 0인 목록을 반환합니다."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "리스트"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "섹션을 추가, 제거하거나 순서를 변경하여 이 리스트 블럭을 재구성합니다."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "리스트 만들기"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "아이템을 리스트에 추가합니다."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "원하는 수의 항목들로 목록을 생성합니다."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "첫 번째"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "마지막 번째 위치부터, # 번째"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "가져오기"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "잘라 내기"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "마지막"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "임의로"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "삭제"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "첫 번째 아이템을 찾아 돌려줍니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "목록에서 특정 위치의 항목을 반환합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "마지막 아이템을 찾아 돌려줍니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "리스트의 아이템들 중, 랜덤으로 선택해 돌려줍니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "첫 번째 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "목록의 특정 위치에 있는 항목을 제거하고 반환합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "마지막 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "목록에서 임의 위치의 아이템을 찾아내 삭제하고 돌려줍니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "리스트에서 첫 번째 아이템을 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "목록에서 특정 위치의 항목을 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "리스트에서 마지막 아이템을 찾아 삭제합니다."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "리스트에서 랜덤하게 아이템을 삭제합니다."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "끝에서부터 # 번째로"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "앞에서부터 # 번째로"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "마지막으로"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "첫 번째 위치부터, 서브 리스트 추출"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "마지막부터 # 번째 위치부터, 서브 리스트 추출"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "처음 # 번째 위치부터, 서브 리스트 추출"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "목록의 특정 부분에 대한 복사본을 만듭니다."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1은(는) 마지막 항목입니다."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1은 첫 번째 항목입니다."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "처음으로 나타난 위치"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "마지막으로 나타난 위치"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "목록에서 항목이 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 항목이 없으면 %1을 반환합니다."; +Blockly.Msg["LISTS_INLIST"] = "리스트"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1이 비어 있습니다"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "목록이 비었을 때 참을 반환합니다."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1의 길이"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "목록의 길이를 반환합니다."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1을 %2번 넣어, 리스트 생성"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "지정된 값을, 지정된 개수 만큼 넣어, 목록을 생성합니다."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 뒤집기"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "리스트의 복사본을 뒤집습니다."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "에"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "에서 원하는 위치에 삽입"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "에서 설정"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "항목을 목록의 처음 위치에 삽입합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "목록의 특정 위치에 항목을 삽입합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "리스트의 마지막에 아이템을 추가합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "목록에서 임의 위치에 아이템을 삽입합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "첫 번째 위치의 아이템으로 설정합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "목록의 특정 위치에 있는 항목으로 설정합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "마지막 아이템으로 설정합니다."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "목록에서 임의 위치의 아이템을 설정합니다."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "오름차순"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "내림차순"; +Blockly.Msg["LISTS_SORT_TITLE"] = "정렬 %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "목록의 사본을 정렬합니다."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "알파벳순 (대소문자 구분 안 함)"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "숫자순"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "알파벳순"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "텍스트에서 목록 만들기"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "목록에서 텍스트 만들기"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "구분 기호로 구분하여 텍스트 목록을 하나의 텍스트에 병합합니다."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "각 속보, 텍스트의 목록들에서 텍스트를 분할합니다."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "분리와"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "거짓"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://ko.wikipedia.org/wiki/%EC%A7%84%EB%A6%BF%EA%B0%92"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "참 혹은 거짓 모두 반환합니다."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "참"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ko.wikipedia.org/wiki/부등식"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "두 값이 같으면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "첫 번째 값이 두 번째 값보다 크면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "첫 번째 값이 두 번째 값보다 크거나 같으면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "첫 번째 값이 두 번째 값보다 작으면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "첫 번째 값이 두 번째 값보다 작거나 같으면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "두 값이 서로 다르면, 참(true) 값을 돌려줍니다."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B6%80%EC%A0%95"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1가 아닙니다"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "입력값이 거짓이라면 참을 반환합니다. 참이라면 거짓을 반환합니다."; +Blockly.Msg["LOGIC_NULL"] = "빈 값"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "빈 값을 반환합니다."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "그리고"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B6%88_%EB%85%BC%EB%A6%AC"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "또는"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "두 값이 모두 참(true) 값이면, 참 값을 돌려줍니다."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "적어도 하나의 값이 참일 경우 참을 반환합니다."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "테스트"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://ko.wikipedia.org/wiki/물음표"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "만약 거짓이라면"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "만약 참이라면"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'test'의 조건을 검사합니다. 조건이 참이면 'if true' 값을 반환합니다. 거짓이면 'if false' 값을 반환합니다."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ko.wikipedia.org/wiki/산술"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "두 수의 합을 반환합니다."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "두 수의 나눈 결과를 반환합니다."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "두 수간의 차이를 반환합니다."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "두 수의 곱을 반환합니다."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "첫 번째 수를 두 번째 수 만큼, 거듭제곱 한 결과값을 돌려줍니다."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2의 atan2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "점 (X, Y)의 아크탄젠트를 -180에서 180까지 도 단위로 반환합니다."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "바꾸기 %1 만큼 %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "변수 '%1' 에 저장되어있는 값에, 어떤 수를 더해, 변수에 다시 저장합니다."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ko.wikipedia.org/wiki/수학_상수"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "일반적인 상수 값들 중 하나를 돌려줍니다. : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://ko.wikipedia.org/wiki/클램핑_(그래픽)"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1의 값을, 최소 %2 최대 %3으로 조정"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "어떤 수를, 특정 범위의 값이 되도록 강제로 조정합니다."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "가 다음 수로 나누어 떨어지면 :"; +Blockly.Msg["MATH_IS_EVEN"] = "가 짝수(even) 이면"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "가 음(-)수 이면"; +Blockly.Msg["MATH_IS_ODD"] = "가 홀수(odd) 이면"; +Blockly.Msg["MATH_IS_POSITIVE"] = "가 양(+)수 이면"; +Blockly.Msg["MATH_IS_PRIME"] = "가 소수(prime) 이면"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "어떤 수가 짝 수, 홀 수, 소 수, 정 수, 양 수, 음 수, 나누어 떨어지는 수 인지 검사해 결과값을 돌려줍니다. 참(true) 또는 거짓(false) 값을 돌려줌."; +Blockly.Msg["MATH_IS_WHOLE"] = "가 정수이면"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2의 나머지"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "첫 번째 수를 두 번째 수로 나눈, 나머지 값을 돌려줍니다."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ko.wikipedia.org/wiki/수_(수학)"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "수"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "평균값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "최대값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "중간값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "최소값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "가장 여러 개 있는 값"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "목록의 임의 항목"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "표준 편차"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "합"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "리스트에 들어있는 수(값)들에 대해, 산술 평균(arithmetic mean) 한 값을 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "리스트에 들어있는 수(값) 들 중, 가장 큰(max) 수(값)를 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "리스트에 들어있는 수(값) 들 중, 중간(median) 수(값)를 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "리스트에 들어있는 수(값) 들 중, 가장 작은(min) 수(값)를 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "리스트에 들어있는 아이템들 중에서, 가장 여러 번 들어있는 아이템들을 리스트로 만들어 돌려줍니다. (최빈값, modes)"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "목록에서 임의의 아이템을 돌려줍니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "이 리스트의 표준 편차를 반환합니다."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "리스트에 들어있는 수(값)들을, 모두 합(sum) 한, 총합(sum)을 돌려줍니다."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "임의 분수"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (포함)과 1.0 (배타적) 사이의 임의 분수 값을 돌려줍니다."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "랜덤정수(%1<= n <=%2)"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "두 주어진 제한된 범위 사이의 임의 정수값을 돌려줍니다."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ko.wikipedia.org/wiki/반올림"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "반올림"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "버림"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "올림"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "어떤 수를 반올림/올림/버림한 결과를, 정수값으로 돌려줍니다."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ko.wikipedia.org/wiki/제곱근"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "절대값"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "제곱근"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "어떤 수의 절대값(absolute)을 계산한 결과를, 정수값으로 돌려줍니다."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "e의 거듭제곱 값을 반환합니다."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "어떤 수의, 자연로그(natural logarithm) 값을 돌려줍니다.(밑 e, 예시 log e x)"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "어떤 수의, 기본로그(logarithm) 값을 돌려줍니다.(밑 10, 예시 log 10 x)"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "음(-)/양(+), 부호를 반대로 하여 값을 돌려줍니다."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10의 거듭제곱 값을 반환합니다."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "숫자의 제곱근을 반환합니다."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ko.wikipedia.org/wiki/삼각함수"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "어떤 수에 대한, acos(arccosine) 값을 돌려줍니다."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "어떤 수에 대한, asin(arcsine) 값을 돌려줍니다."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "어떤 수에 대한, atan(arctangent) 값을 돌려줍니다."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "각도의 코사인을 반환합니다. (라디안 아님)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "각도의 사인을 반환합니다. (라디안 아님)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "각도의 탄젠트를 반환합니다. (라디안 아님)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "색 변수 만들기..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "숫자 변수 만들기...."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "문자열 변수 만들기..."; +Blockly.Msg["NEW_VARIABLE"] = "변수 만들기..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "새 변수 이름:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "새 변수 유형:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "서술 허가"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "사용:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/함수_(프로그래밍)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "미리 정의해 둔 '%1' 함수를 실행합니다."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/함수_(프로그래밍)"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "미리 정의해 둔 '%1' 함수를 실행하고, 함수를 실행한 결과 값을 돌려줍니다."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "사용:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' 생성"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "이 함수를 설명하세요..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "함수 이름"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "함수"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "실행 후, 결과 값을 돌려주지 않는 함수를 만듭니다."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "다음을 돌려줌"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "실행 후, 결과 값을 돌려주는 함수를 만듭니다."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "경고: 이 함수에는, 같은 이름을 사용하는 매개 변수들이 있습니다."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "함수 정의 찾기"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "값이 참이라면, 두 번째 값을 반환합니다."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "경고: 이 블럭은, 함수 정의 블럭 안에서만 사용할 수 있습니다."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "매개 변수:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "함수에 값을 더합니다."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "매개 변수들"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "이 함수를 추가, 삭제, 혹은 재정렬합니다."; +Blockly.Msg["REDO"] = "다시 실행"; +Blockly.Msg["REMOVE_COMMENT"] = "주석 제거"; +Blockly.Msg["RENAME_VARIABLE"] = "변수 이름 바꾸기:"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "'%1' 변수 이름을 바꾸기:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "다음 %1 내용 덧붙이기 %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' 변수의 끝에 일부 텍스트를 덧붙입니다."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "소문자로"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "첫 문자만 대문자로"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "대문자로"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "영문 대소문자 형태를 변경해 돌려줍니다."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "에서, 첫 번째 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "에서, 마지막부터 # 번째 위치의 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "에서, 앞에서부터 # 번째 위치의 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "에서, 마지막 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "에서, 랜덤하게 한 문자 얻기"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "텍스트 %1 %2에서"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "특정 번째 위치에서, 문자를 얻어내 돌려줍니다."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%2에서 %1 숫자 세기"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "다른 어떤 텍스트에서 어떤 텍스트가 나타난 횟수를 셉니다."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "텍스트에 항목을 추가합니다."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "가입"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "섹션을 추가, 제거하거나 순서를 변경하여 이 텍스트 블럭을 재구성합니다."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "끝에서부터 # 번째 문자까지"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# 번째 문자까지"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "마지막 문자까지"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "문장"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "에서, 처음부터 얻어냄"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "에서, 마지막에서 # 번째부터 얻어냄"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "에서, 처음부터 # 번째 문자부터 얻어냄"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "문장 중 일부를 얻어내 돌려줍니다."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "에서 다음 문장이 처음으로 나타난 위치 찾기 :"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "에서 다음 문장이 마지막으로 나타난 위치 찾기 :"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "문장 %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "두 번째 텍스트에서 첫 번째 텍스트가 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 텍스트가 없으면 %1을 반환합니다."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1이 비어 있습니다"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "입력된 문장이, 빈 문장(\"\")이면 참(true) 값을 돌려줍니다."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "텍스트 만들기"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "여러 개의 아이템들을 연결해(묶어), 새로운 문장을 만듭니다."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "다음 문장의 문자 개수 %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "입력된 문장의, 문자 개수를 돌려줍니다.(공백문자 포함)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "다음 내용 출력 %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "원하는 문장, 수, 값 등을 출력합니다."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "수에 대해 사용자의 입력을 받습니다."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "문장에 대해 사용자의 입력을 받습니다."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "메시지를 활용해 수 입력"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "메시지를 활용해 문장 입력"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%3에서 %2을(를) %1(으)로 바꾸기"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "다른 텍스트 내에서 일부 텍스트의 모든 발생을 치환합니다."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 뒤집기"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "텍스트 안의 문자의 순서를 반전시킵니다."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ko.wikipedia.org/wiki/문자열"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "문자, 단어, 문장."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "양쪽의 공백 문자 제거"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "왼쪽의 공백 문자 제거"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "오른쪽의 공백 문자 제거"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "문장의 왼쪽/오른쪽/양쪽에서 스페이스 문자를 제거해 돌려줍니다."; +Blockly.Msg["TODAY"] = "오늘"; +Blockly.Msg["UNDO"] = "실행 취소"; +Blockly.Msg["UNNAMED_KEY"] = "이름이 없는"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "항목"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'집합 %1' 생성"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "변수에 저장 되어있는 값을 돌려줍니다."; +Blockly.Msg["VARIABLES_SET"] = "%1를 %2로 설정"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'%1 값 읽기' 블럭 생성"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "변수의 값을 입력한 값으로 변경해 줍니다."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' 변수는 이미 존재합니다."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' 변수는 다른 유형에 대해 이미 존재합니다: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly 워크스페이스"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "말해 보세요..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ksh.js b/msg/js/ksh.js index d705ac40fd7..6518013875d 100644 --- a/msg/js/ksh.js +++ b/msg/js/ksh.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Dä Wäät tuusche:"; -Blockly.Msg["CLEAN_UP"] = "Klözjer opprühme"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Donn di Klözjer zesammefallde"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Donn dat Klözje zesammefallde"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "eezte Färv"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "zwaite Färv"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "Verhhälltneß"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mesch zwai Färve med enem beschtempte Verhältneß (zwesche 0.0 un 1.0)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "en föhfälleje Färv"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Söhg en Färv pä Zohfall uß."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blou"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "jröhn"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ruhd"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "enfärve met"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "zäll %1 vun %2 noh %3 en Schredde vun %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sönst"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "maach"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 Mohl widerhole"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "widerholl bes"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "widderholl, esu lang wi"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Schmiiß dat Klözje fott"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Schmiiß %1 Klözjer fott"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "Jebongt!"; -Blockly.Msg["DISABLE_BLOCK"] = "Donn dat Klözje ußschallde"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Donn dat Klözje enschallde"; -Blockly.Msg["EXPAND_ALL"] = "Donn di Klözjer opfallde"; -Blockly.Msg["EXPAND_BLOCK"] = "Donn dat Klözje opfallde"; -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Hölp"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es de Läzde en de Leß."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es de Eezde en de Leß."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 es läddesch"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Jitt „Wohr“ us, wann en dä Leß nix dren es."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "opwääts"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "rökwääts zottehre"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "donn dä Wääd_en %1 öm %2 ändere"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "säz der Wäät en %1 op %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Dä Wäät tuusche:"; +Blockly.Msg["CLEAN_UP"] = "Klözjer opprühme"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Donn di Klözjer zesammefallde"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Donn dat Klözje zesammefallde"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "eezte Färv"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "zwaite Färv"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "Verhhälltneß"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mesch zwai Färve med enem beschtempte Verhältneß (zwesche 0.0 un 1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "en föhfälleje Färv"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Söhg en Färv pä Zohfall uß."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blou"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "jröhn"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruhd"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "enfärve met"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "zäll %1 vun %2 noh %3 en Schredde vun %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sönst"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "maach"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 Mohl widerhole"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "widerholl bes"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "widderholl, esu lang wi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Schmiiß dat Klözje fott"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Schmiiß %1 Klözjer fott"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "Jebongt!"; +Blockly.Msg["DISABLE_BLOCK"] = "Donn dat Klözje ußschallde"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Donn dat Klözje enschallde"; +Blockly.Msg["EXPAND_ALL"] = "Donn di Klözjer opfallde"; +Blockly.Msg["EXPAND_BLOCK"] = "Donn dat Klözje opfallde"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Hölp"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es de Läzde en de Leß."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es de Eezde en de Leß."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 es läddesch"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Jitt „Wohr“ us, wann en dä Leß nix dren es."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "opwääts"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "rökwääts zottehre"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "donn dä Wääd_en %1 öm %2 ändere"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "säz der Wäät en %1 op %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ku-latn.js b/msg/js/ku-latn.js index 5844e6d23c0..472b0630299 100644 --- a/msg/js/ku-latn.js +++ b/msg/js/ku-latn.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Şîroveyekê lê zêde bike"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "reng 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "reng 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rengeke ketober"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "şîn"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "kesk"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "sor"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "heke"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Betal bike"; -Blockly.Msg["DIALOG_OK"] = "Baş e"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Alîkarî"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lîste"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ya pêşîn"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ya paşîn"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ketober"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 vala ye"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "nerast"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "rast"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "û"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "an"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "heke nerast be"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "heke rast be"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Biafirîne '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vegere"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "beşdarî"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 vala ye"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "çap %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Îro"; -Blockly.Msg["UNDO"] = "Betal bike"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Tiştek bibêje..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Şîroveyekê lê zêde bike"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "reng 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "reng 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rengeke ketober"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "şîn"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "kesk"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "sor"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "heke"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Betal bike"; +Blockly.Msg["DIALOG_OK"] = "Baş e"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Alîkarî"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lîste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ya pêşîn"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ya paşîn"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ketober"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 vala ye"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "nerast"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "rast"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "û"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "an"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "heke nerast be"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "heke rast be"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Biafirîne '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vegere"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "beşdarî"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 vala ye"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "çap %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Îro"; +Blockly.Msg["UNDO"] = "Betal bike"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Tiştek bibêje..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ky.js b/msg/js/ky.js index 47d331e14da..187246b59e9 100644 --- a/msg/js/ky.js +++ b/msg/js/ky.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Пикириңизди кошуңуз"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "маанисин өзгөрт"; -Blockly.Msg["CLEAN_UP"] = "Блокторду тазалоо"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Блокторду жашыруу"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Блокту жашыруу"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1-түс"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2-түс"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "катышы"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "аралаштыруу"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Эки түстү берилген катыш (0.0 - 1.0) менен аралаштыр."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "палитрадан түс танда"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "тушкелди түс"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Түстү тушкелди тандоо."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "көк"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "жашыл"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "кызыл"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "түсү менен"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Кызыл, жашыл жана көк түстөрдөн жаңы түс жаса. Ар бир түстүн мааниси 0 менен 100 арасында болуусу керек."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 катарынын ар бир элементи %1 үчүн"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 менен %2 ден %3 кө чейин %4 төн эсепте"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "башка"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "же болбосо"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "эгерде"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "жаса"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 жолу кайтала"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Билдирүүнү бир канча жолу кайтала"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "Кайтала чейин"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Кайтала эгерде"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Маани ката болгон учурда билдирүүлөрдү кайтала"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Маани туура болгон учурда билдирүүлөрдү кайтала"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "1% блоктордун баарын өчүрүү, йа?"; -Blockly.Msg["DELETE_BLOCK"] = "Блокту Өчүрүү"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Блоктун 1%ын Өчүрүү"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Блок жараксыз"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Дубликат"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Блок жарактуу"; -Blockly.Msg["EXPAND_ALL"] = "Блокторду кеңейтүү"; -Blockly.Msg["EXPAND_BLOCK"] = "Блокту кеңейтүү"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Тышкы Толуктоолор"; -Blockly.Msg["HELP"] = "Жардам"; -Blockly.Msg["INLINE_INPUTS"] = "Ички Толуктоолор"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = " %1 эмес"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "же"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "текшерүү"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ката болсо"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "туура болсо"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ky.wikipedia.org/wiki/Тригонометриялык_функциялар"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "жаңы өзгөрмө"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Жаңы өзгөрмөнүн аты"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Жорумду өчүрүү"; -Blockly.Msg["RENAME_VARIABLE"] = "Өзгөрмөнүн атын алмаштыруу"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Баардык '%1' өзгөрмөнүнүн атын алмаштыр"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 бош"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Бүгүн"; -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Пикириңизди кошуңуз"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "маанисин өзгөрт"; +Blockly.Msg["CLEAN_UP"] = "Блокторду тазалоо"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Блокторду жашыруу"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Блокту жашыруу"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1-түс"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2-түс"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "катышы"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "аралаштыруу"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Эки түстү берилген катыш (0.0 - 1.0) менен аралаштыр."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "палитрадан түс танда"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "тушкелди түс"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Түстү тушкелди тандоо."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "көк"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "жашыл"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "кызыл"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "түсү менен"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Кызыл, жашыл жана көк түстөрдөн жаңы түс жаса. Ар бир түстүн мааниси 0 менен 100 арасында болуусу керек."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 катарынын ар бир элементи %1 үчүн"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 менен %2 ден %3 кө чейин %4 төн эсепте"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "башка"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "же болбосо"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "эгерде"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "жаса"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 жолу кайтала"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Билдирүүнү бир канча жолу кайтала"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "Кайтала чейин"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Кайтала эгерде"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Маани ката болгон учурда билдирүүлөрдү кайтала"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Маани туура болгон учурда билдирүүлөрдү кайтала"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "1% блоктордун баарын өчүрүү, йа?"; +Blockly.Msg["DELETE_BLOCK"] = "Блокту Өчүрүү"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Блоктун 1%ын Өчүрүү"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Блок жараксыз"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дубликат"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Блок жарактуу"; +Blockly.Msg["EXPAND_ALL"] = "Блокторду кеңейтүү"; +Blockly.Msg["EXPAND_BLOCK"] = "Блокту кеңейтүү"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Тышкы Толуктоолор"; +Blockly.Msg["HELP"] = "Жардам"; +Blockly.Msg["INLINE_INPUTS"] = "Ички Толуктоолор"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = " %1 эмес"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "же"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "текшерүү"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ката болсо"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "туура болсо"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ky.wikipedia.org/wiki/Тригонометриялык_функциялар"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "жаңы өзгөрмө"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Жаңы өзгөрмөнүн аты"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Жорумду өчүрүү"; +Blockly.Msg["RENAME_VARIABLE"] = "Өзгөрмөнүн атын алмаштыруу"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Баардык '%1' өзгөрмөнүнүн атын алмаштыр"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 бош"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Бүгүн"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/la.js b/msg/js/la.js index a9bbc3abcc9..c82992e1b12 100644 --- a/msg/js/la.js +++ b/msg/js/la.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "ASSENTIOR"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Help"; // untranslated -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "ASSENTIOR"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/lb.js b/msg/js/lb.js index 503297699ef..c58712fbd9e 100644 --- a/msg/js/lb.js +++ b/msg/js/lb.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Bemierkung derbäisetzen"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Wäert änneren:"; -Blockly.Msg["CLEAN_UP"] = "Bléck opraumen"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Bléck zesummeklappen"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Block zesummeklappen"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Faarf 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "Faarf 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mëschen"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Sicht eng Faarf an der Palette eraus."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "zoufälleg Faarf"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Eng zoufälleg Faarf eraussichen."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blo"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "gréng"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "rout"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "fierwe mat"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "fir all Element %1 an der Lëscht %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "zielt mat %1 vun %2 bis %3 mat %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "soss"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "wann"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "maach"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1-mol widderhuelen"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "widderhuele bis"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Widderhuel soulaang"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Féiert d'Uweisungen aus, soulaang wéi de Wäert falsch ass."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Féiert d'Uweisungen aus, soulaang wéi de Wäert richteg ass"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Block läschen"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 Bléck läschen"; -Blockly.Msg["DIALOG_CANCEL"] = "Ofbriechen"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Block desaktivéieren"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Eng Kopie maachen"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Bemierkung kopéieren"; -Blockly.Msg["ENABLE_BLOCK"] = "Block aktivéieren"; -Blockly.Msg["EXPAND_ALL"] = "Bléck opklappen"; -Blockly.Msg["EXPAND_BLOCK"] = "Block opklappen"; -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Hëllef"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "Lëscht"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "En Element op d'Lëscht derbäisetzen."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "éischt"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# vun hannen"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "lescht"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "Zoufall"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ewechhuelen"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Schéckt en zoufällegt Element aus enger Lëscht zréck."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Hëlt dat lescht Element aus enger Lëscht eraus."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Hëlt en zoufällegt Element aus enger Lëscht eraus."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ass dat éischt Element."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ass dat éischt Element."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "an der Lëscht"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ass eidel"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "Längt vu(n) %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 ëmdréinen"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "als"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "asetzen op"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Setzt d'Element um Enn vun enger Lëscht derbäi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Setzt d'Element op eng zoufälleg Plaz an d'Lëscht derbäi."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setzt en zoufällegt Element an eng Lëscht."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 zortéieren"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeresch"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetesch"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsch"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Schéckt entweder richteg oder falsch zréck."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "wouer"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "net %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "an"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "oder"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "Test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "wa falsch"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "wa wouer"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Den Total vun den zwou Zuelen zréckginn."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "D'Produkt vun den zwou Zuelen zréckginn."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "änneren %1 ëm %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "ass gerued"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "ass negativ"; -Blockly.Msg["MATH_IS_ODD"] = "ass ongerued"; -Blockly.Msg["MATH_IS_POSITIVE"] = "ass positiv"; -Blockly.Msg["MATH_IS_PRIME"] = "ass eng Primzuel"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "ass eng ganz Zuel"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "Rescht vu(n) %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Eng Zuel."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Moyenne vun der Lëscht"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Maximum aus der Lëscht"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "zoufällegt Element vun enger Lëscht"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Schéckt de gréisste Wäert aus enger Lëscht zréck."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "zoufälleg ganz Zuel tëscht %1 a(n) %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "opronnen"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ofrënnen"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "oprënnen"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Eng Zuel op- oder ofrënnen."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://lb.wikipedia.org/wiki/Racine carrée"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Quadratwuerzel"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Variabel uleeën..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Neie variabelen Numm:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "mat:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "mat:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' uleeën"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Dës Funktioun beschreiwen..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "eppes maachen"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "zréck"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Widderhuelen"; -Blockly.Msg["REMOVE_COMMENT"] = "Bemierkung ewechhuelen"; -Blockly.Msg["RENAME_VARIABLE"] = "Variabel ëmbenennen..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "All '%1' Variabelen ëmbenennen op:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "am Text %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "En Element bei den Text derbäisetzen."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bis bei de Buschtaf #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "bis bei de leschte Buschtaf"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "am Text"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "am Text %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ass eidel"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "Längt vu(n) %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 drécken"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Frot de Benotzer no engem Text."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 duerch %2 a(n) %3 ersetzen"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "All Kéiers wou e bestëmmten Text do ass duerch en aneren Text ersetzen."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Dréint d'Reiefolleg vun den Zeechen am Text ëm."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "E Buschtaf, e Wuert oder eng Textzeil."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Haut"; -Blockly.Msg["UNDO"] = "Réckgängeg maachen"; -Blockly.Msg["UNNAMED_KEY"] = "ouni Numm"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sot eppes..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Bemierkung derbäisetzen"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Wäert änneren:"; +Blockly.Msg["CLEAN_UP"] = "Bléck opraumen"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Bléck zesummeklappen"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Block zesummeklappen"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Faarf 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "Faarf 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mëschen"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Sicht eng Faarf an der Palette eraus."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "zoufälleg Faarf"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Eng zoufälleg Faarf eraussichen."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blo"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "gréng"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "rout"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "fierwe mat"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "fir all Element %1 an der Lëscht %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "zielt mat %1 vun %2 bis %3 mat %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "soss"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "wann"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "maach"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1-mol widderhuelen"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "widderhuele bis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "Widderhuel soulaang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Féiert d'Uweisungen aus, soulaang wéi de Wäert falsch ass."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Féiert d'Uweisungen aus, soulaang wéi de Wäert richteg ass"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Block läschen"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 Bléck läschen"; +Blockly.Msg["DIALOG_CANCEL"] = "Ofbriechen"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Block desaktivéieren"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Eng Kopie maachen"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Bemierkung kopéieren"; +Blockly.Msg["ENABLE_BLOCK"] = "Block aktivéieren"; +Blockly.Msg["EXPAND_ALL"] = "Bléck opklappen"; +Blockly.Msg["EXPAND_BLOCK"] = "Block opklappen"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Hëllef"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "Lëscht"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "En Element op d'Lëscht derbäisetzen."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "éischt"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# vun hannen"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "lescht"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "Zoufall"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ewechhuelen"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Schéckt en zoufällegt Element aus enger Lëscht zréck."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Hëlt dat lescht Element aus enger Lëscht eraus."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Hëlt en zoufällegt Element aus enger Lëscht eraus."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ass dat éischt Element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ass dat éischt Element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "an der Lëscht"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ass eidel"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "Längt vu(n) %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 ëmdréinen"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "als"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "asetzen op"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Setzt d'Element um Enn vun enger Lëscht derbäi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Setzt d'Element op eng zoufälleg Plaz an d'Lëscht derbäi."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setzt en zoufällegt Element an eng Lëscht."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 zortéieren"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeresch"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetesch"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falsch"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Schéckt entweder richteg oder falsch zréck."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "wouer"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "net %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "an"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "oder"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "Test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "wa falsch"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "wa wouer"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Den Total vun den zwou Zuelen zréckginn."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "D'Produkt vun den zwou Zuelen zréckginn."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "änneren %1 ëm %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "ass gerued"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ass negativ"; +Blockly.Msg["MATH_IS_ODD"] = "ass ongerued"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ass positiv"; +Blockly.Msg["MATH_IS_PRIME"] = "ass eng Primzuel"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "ass eng ganz Zuel"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "Rescht vu(n) %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Eng Zuel."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "Moyenne vun der Lëscht"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Maximum aus der Lëscht"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "zoufällegt Element vun enger Lëscht"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Schéckt de gréisste Wäert aus enger Lëscht zréck."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "zoufälleg ganz Zuel tëscht %1 a(n) %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "opronnen"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ofrënnen"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "oprënnen"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Eng Zuel op- oder ofrënnen."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://lb.wikipedia.org/wiki/Racine carrée"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Quadratwuerzel"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Variabel uleeën..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Neie variabelen Numm:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "mat:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "mat:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' uleeën"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Dës Funktioun beschreiwen..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "eppes maachen"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "zréck"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Widderhuelen"; +Blockly.Msg["REMOVE_COMMENT"] = "Bemierkung ewechhuelen"; +Blockly.Msg["RENAME_VARIABLE"] = "Variabel ëmbenennen..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "All '%1' Variabelen ëmbenennen op:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "am Text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "En Element bei den Text derbäisetzen."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "bis bei de Buschtaf #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "bis bei de leschte Buschtaf"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "am Text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "am Text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ass eidel"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "Längt vu(n) %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 drécken"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Frot de Benotzer no engem Text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 duerch %2 a(n) %3 ersetzen"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "All Kéiers wou e bestëmmten Text do ass duerch en aneren Text ersetzen."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Dréint d'Reiefolleg vun den Zeechen am Text ëm."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "E Buschtaf, e Wuert oder eng Textzeil."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Haut"; +Blockly.Msg["UNDO"] = "Réckgängeg maachen"; +Blockly.Msg["UNNAMED_KEY"] = "ouni Numm"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sot eppes..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/lki.js b/msg/js/lki.js index 39b7de5c6e2..d25d89bd3aa 100644 --- a/msg/js/lki.js +++ b/msg/js/lki.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "گةپ دائن"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "تةغییر مقدار:"; -Blockly.Msg["CLEAN_UP"] = "تمیزکردن بلاکةل"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "چؤیچانن/پشکانن بلاکةل"; -Blockly.Msg["COLLAPSE_BLOCK"] = "چؤیچانن/پشکانن بلاک"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رةنگ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رةنگ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "قاتی پاتی"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lki.wikipedia.org/wiki/ڕەنگ"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "رةنگێ إژ تةختة رةنگ انتخاب کةن"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رةنگ بةختةکی"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = ".رةنگئ بةختةکی انتخاب کةن"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "کاوو"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "سؤز"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "سۆر"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "رةنگ وة"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ساخت یک رنگ با مقدار مشخص‌شده‌ای از سۆر، سؤز و کاوو. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "شکانِن حلقه"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ادامه با تکرار بعدی حلقه"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "شکستن حلقهٔ شامل."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ئةرا هر مورد %1 وۀ نام لیست%2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "با تعداد %1 از %2 به %3 با گام‌های %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "افزودن یک شرط به بلوک اگر."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "آنگاه"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "اگر آنگاه"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://lki.wikipedia.org/wiki/حلقه_فور"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "انجوم بی"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%بار تکرار 1"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "انجام چةن عبارت چندین گِل."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تکرار تا وةختێ گإ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تکرار در حالی که"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "حةذف کؤل %1 بلاکةل?"; -Blockly.Msg["DELETE_BLOCK"] = "پاک کردن بلاک"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "حةذف %1 بلاکةل"; -Blockly.Msg["DIALOG_CANCEL"] = "ئآهووسانن/لغو"; -Blockly.Msg["DIALOG_OK"] = "تأیید"; -Blockly.Msg["DISABLE_BLOCK"] = "إ کار کةتن(غیرفعال‌سازی) بلاک"; -Blockly.Msg["DUPLICATE_BLOCK"] = "کؤپی کردن"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "إ کارآشتن(فعال)بلاک"; -Blockly.Msg["EXPAND_ALL"] = "کةلنگآ کردِن بلاکةل"; -Blockly.Msg["EXPAND_BLOCK"] = "کةلنگآ کردِن بلاک"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ورودیةل خروجی"; -Blockly.Msg["HELP"] = "کؤمةک"; -Blockly.Msg["INLINE_INPUTS"] = "ورودیةل نوم جا"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ایجاد فهرست خالی"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لیست"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ایجاد فهرست با"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "اضافه‌کردن یک مورد به فهرست."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "فهرستی از هر عددی از موارد می‌سازد."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "إژ أؤةل"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# إژ دؤما آخر"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "گِرتِن"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گِرتِن و حةذف کردن"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "دؤمائن/آخرین"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "بةختةکی"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حةذف کردن"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "اولین مورد یک فهرست را بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "موردی در محل مشخص‌شده بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "آخرین مورد در یک فهرست را بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "یک مورد تصادفی در یک فهرست بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "اولین مورد را در یک فهرست حذف می‌کند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "آخرین مورد را در یک فهرست حذف می‌کند."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "یک مورد تصادفی را یک فهرست حذف می‌کند."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "به # از انتها"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "به #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "به آخرین"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "گرفتن زیرمجموعه‌ای از ابتدا"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "گرفتن زیرمجموعه‌ای از # از انتها"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "گرفتن زیرمجموعه‌ای از #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 آخرین مورد است."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 اولین مورد است."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "یافتن اولین رخ‌داد مورد"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "یافتن آخرین رخ‌داد مورد"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود."; -Blockly.Msg["LISTS_INLIST"] = "در فهرست"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی است"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "اگر فهرست خالی است مقدار صجیج بر می‌گرداند."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "طول %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "طول یک فهرست را برمی‌گرداند."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "به عنوان"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "درج در"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "مجموعه"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "موردی به ته فهرست اضافه می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "موردی به ته فهرست الحاق می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "مورد را به صورت تصادفی در یک فهرست می‌افزاید."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "اولین مورد در یک فهرست را تعیین می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "مورد مشخص‌شده در یک فهرست را قرار می‌دهد."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "آخرین مورد در یک فهرست را تعیین می‌کند."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "یک مورد تصادفی در یک فهرست را تعیین می‌کند."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ساخت لیست إژ متن"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ساخت متن إژ لیست"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "همراه جداساز"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "نادرست"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "بازگرداندن یکی از صحیح یا ناصحیح."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "درست"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد."; -Blockly.Msg["LOGIC_NULL"] = "پةتی/خالی"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "تهی باز می گرداند"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمائشت"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر نادرست"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر درست"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "بازگرداندن مقدار جمع دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "بازگرداندن باقی‌ماندهٔ دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "بازگرداندن تفاوت دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "بازگرداندن حاصلضرب دو عدد."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "تغییر %1 با %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "افزودن یک عدد به متغیر '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "محدودکردن %1 پایین %2 بالا %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "تقسیم شده بر"; -Blockly.Msg["MATH_IS_EVEN"] = "زوج است"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی است"; -Blockly.Msg["MATH_IS_ODD"] = "فرد است"; -Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت است"; -Blockly.Msg["MATH_IS_PRIME"] = "عدد اول است"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند."; -Blockly.Msg["MATH_IS_WHOLE"] = "کامل است"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "باقی‌ماندهٔ %1 + %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "شؤمارە یەک"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "میانگین فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بزرگ‌ترین فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "میانهٔ فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "گوجةرتةرین لیست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "مد فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "مورد تصادفی از فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "انحراف معیار فهرست"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جمع لیست"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "بزرگ‌ترین عدد در فهرست را باز می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "میانهٔ عدد در فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "کوچک‌ترین عدد در فهرست را باز می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "موردی تصادفی از فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "انحراف معیار فهرست را بر می‌گرداند."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "جمع همهٔ عددهای فهرست را باز می‌گرداند."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "کسر تصادفی"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "عدد صحیح تصادفی بین %1 تا %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گردکردن"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "گرد به پایین"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "گرد به بالا"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "گردکردن یک عدد به بالا یا پایین."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ریشهٔ دوم"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "قدر مطلق یک عدد را بازمی‌گرداند."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "بازگرداندن توان e یک عدد."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "لوگاریتم طبیعی یک عدد را باز می‌گرداند."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "منفی‌شدهٔ یک عدد را باز می‌گرداند."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "بازگرداندن توان ۱۰ یک عدد."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ریشهٔ دوم یک عدد را باز می‌گرداند."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "بازگرداندن آرک‌کسینوس درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = ".(بازگرداندن آرک‌سینوس درجه (نه رادیان"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "بازگرداندن آرک‌تانژانت درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "بازگرداندن کسینوس درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "بازگرداندن سینوس درجه (نه رادیان)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "بازگرداندن تانژانت یک درجه (نه رادیان)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "متغیر تازه..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "نام متغیر تازه:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اجازه اظهارات"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "با:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1»."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "با:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "ساختن «%1»"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "انجام چیزی"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "به"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "تابعی می‌سازد بدون هیچ خروجی."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "بازگشت"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "تابعی با یک خروجی می‌سازد."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "اخطار: این تابعی پارامتر تکراری دارد."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "برجسته‌سازی تعریف تابع"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نام ورودی:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "اضافه کردن ورودی به تابع."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ورودی‌ها"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع."; -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "پاک کردن گةپةل/قِسةل"; -Blockly.Msg["RENAME_VARIABLE"] = "تغییر نام متغیر..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تغییر نام همهٔ متغیرهای «%1» به:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "به %1 چسباندن متن %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "الحاق متنی به متغیر «%1»."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "به حروف کوچک"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "به حروف بزرگ عنوان"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "به حروف بزرگ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "بازگرداندن کپی متن در حالتی متفاوت."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "گرفتن اولین حرف"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "گرفتن حرف # از آخر"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "گرفتن حرف #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "گرفتن آخرین حرف"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "گرفتن حرف تصادفی"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "حرفی در موقعیت مشخص‌شده بر می‌گرداند."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "افزودن یک مورد به متن."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "نام نؤیسی"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "اضافه‌کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "به حرف # از انتها"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "به حرف #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "به آخرین حرف"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "در متن"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "گرفتن زیرمتن از اولین حرف"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "گرفتن زیرمتن از حرف # به انتها"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "گرفتن زیرمتن از حرف #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "اولین رخداد متن را بیاب"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "آخرین رخداد متن را بیاب"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "در متن %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی است"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ایجاد متن با"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "چاپ %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "اعلان برای کاربر با یک عدد."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "اعلان برای کاربر برای یک متن."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "اعلان برای عدد با پیام"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "اعلان برای متن با پیام"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "یک حرف، کلمه یا خطی از متن."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "تراشیدن فاصله‌ها از هر دو طرف"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "تراشیدن فاصله‌ها از طرف چپ"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "تراشیدن فاصله‌ها از طرف چپ"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; -Blockly.Msg["TODAY"] = "ایمڕۆ"; -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "آیتم"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "درست‌کردن «تنظیم %1»"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "مقدار این متغیر را بر می‌گرداند."; -Blockly.Msg["VARIABLES_SET"] = "مجموعه %1 به %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "درست‌کردن «گرفتن %1»"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "متغیر برابر با خروجی را مشخص می‌کند."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "گةپ دائن"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "تةغییر مقدار:"; +Blockly.Msg["CLEAN_UP"] = "تمیزکردن بلاکةل"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "چؤیچانن/پشکانن بلاکةل"; +Blockly.Msg["COLLAPSE_BLOCK"] = "چؤیچانن/پشکانن بلاک"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رةنگ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رةنگ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "قاتی پاتی"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lki.wikipedia.org/wiki/ڕەنگ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "رةنگێ إژ تةختة رةنگ انتخاب کةن"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رةنگ بةختةکی"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = ".رةنگئ بةختةکی انتخاب کةن"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "کاوو"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سؤز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "سۆر"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رةنگ وة"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ساخت یک رنگ با مقدار مشخص‌شده‌ای از سۆر، سؤز و کاوو. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "شکانِن حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ادامه با تکرار بعدی حلقه"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "شکستن حلقهٔ شامل."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ئةرا هر مورد %1 وۀ نام لیست%2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "با تعداد %1 از %2 به %3 با گام‌های %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "افزودن یک شرط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "آنگاه"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "اگر آنگاه"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://lki.wikipedia.org/wiki/حلقه_فور"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "انجوم بی"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%بار تکرار 1"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "انجام چةن عبارت چندین گِل."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تکرار تا وةختێ گإ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تکرار در حالی که"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "حةذف کؤل %1 بلاکةل?"; +Blockly.Msg["DELETE_BLOCK"] = "پاک کردن بلاک"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "حةذف %1 بلاکةل"; +Blockly.Msg["DIALOG_CANCEL"] = "ئآهووسانن/لغو"; +Blockly.Msg["DIALOG_OK"] = "تأیید"; +Blockly.Msg["DISABLE_BLOCK"] = "إ کار کةتن(غیرفعال‌سازی) بلاک"; +Blockly.Msg["DUPLICATE_BLOCK"] = "کؤپی کردن"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "إ کارآشتن(فعال)بلاک"; +Blockly.Msg["EXPAND_ALL"] = "کةلنگآ کردِن بلاکةل"; +Blockly.Msg["EXPAND_BLOCK"] = "کةلنگآ کردِن بلاک"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ورودیةل خروجی"; +Blockly.Msg["HELP"] = "کؤمةک"; +Blockly.Msg["INLINE_INPUTS"] = "ورودیةل نوم جا"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ایجاد فهرست خالی"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لیست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ایجاد فهرست با"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "اضافه‌کردن یک مورد به فهرست."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "فهرستی از هر عددی از موارد می‌سازد."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "إژ أؤةل"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# إژ دؤما آخر"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گِرتِن"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گِرتِن و حةذف کردن"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "دؤمائن/آخرین"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "بةختةکی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حةذف کردن"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "اولین مورد یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "موردی در محل مشخص‌شده بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "آخرین مورد در یک فهرست را بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "یک مورد تصادفی در یک فهرست بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "اولین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "آخرین مورد را در یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "یک مورد تصادفی را یک فهرست حذف می‌کند."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "به # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "به #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "به آخرین"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "گرفتن زیرمجموعه‌ای از ابتدا"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "گرفتن زیرمجموعه‌ای از # از انتها"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "گرفتن زیرمجموعه‌ای از #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 آخرین مورد است."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 اولین مورد است."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "یافتن اولین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "یافتن آخرین رخ‌داد مورد"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود."; +Blockly.Msg["LISTS_INLIST"] = "در فهرست"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "اگر فهرست خالی است مقدار صجیج بر می‌گرداند."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "طول یک فهرست را برمی‌گرداند."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "به عنوان"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "درج در"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "مجموعه"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "موردی به ته فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "موردی به ته فهرست الحاق می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "مورد را به صورت تصادفی در یک فهرست می‌افزاید."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "اولین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "مورد مشخص‌شده در یک فهرست را قرار می‌دهد."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "آخرین مورد در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "یک مورد تصادفی در یک فهرست را تعیین می‌کند."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ساخت لیست إژ متن"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ساخت متن إژ لیست"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "همراه جداساز"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "نادرست"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "بازگرداندن یکی از صحیح یا ناصحیح."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "درست"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد."; +Blockly.Msg["LOGIC_NULL"] = "پةتی/خالی"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "تهی باز می گرداند"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "و"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمائشت"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر نادرست"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر درست"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "بازگرداندن مقدار جمع دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "بازگرداندن باقی‌ماندهٔ دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "بازگرداندن تفاوت دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "بازگرداندن حاصلضرب دو عدد."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "تغییر %1 با %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "افزودن یک عدد به متغیر '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "محدودکردن %1 پایین %2 بالا %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "تقسیم شده بر"; +Blockly.Msg["MATH_IS_EVEN"] = "زوج است"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی است"; +Blockly.Msg["MATH_IS_ODD"] = "فرد است"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت است"; +Blockly.Msg["MATH_IS_PRIME"] = "عدد اول است"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند."; +Blockly.Msg["MATH_IS_WHOLE"] = "کامل است"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "باقی‌ماندهٔ %1 + %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "شؤمارە یەک"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "میانگین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بزرگ‌ترین فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "میانهٔ فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "گوجةرتةرین لیست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "مد فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "مورد تصادفی از فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "انحراف معیار فهرست"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جمع لیست"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "بزرگ‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "میانهٔ عدد در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "کوچک‌ترین عدد در فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "موردی تصادفی از فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "انحراف معیار فهرست را بر می‌گرداند."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "جمع همهٔ عددهای فهرست را باز می‌گرداند."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "کسر تصادفی"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "عدد صحیح تصادفی بین %1 تا %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گردکردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "گرد به پایین"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "گرد به بالا"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "گردکردن یک عدد به بالا یا پایین."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ریشهٔ دوم"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "قدر مطلق یک عدد را بازمی‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "بازگرداندن توان e یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "لوگاریتم طبیعی یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "منفی‌شدهٔ یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "بازگرداندن توان ۱۰ یک عدد."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ریشهٔ دوم یک عدد را باز می‌گرداند."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "بازگرداندن آرک‌کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = ".(بازگرداندن آرک‌سینوس درجه (نه رادیان"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "بازگرداندن آرک‌تانژانت درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "بازگرداندن کسینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "بازگرداندن سینوس درجه (نه رادیان)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "بازگرداندن تانژانت یک درجه (نه رادیان)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "متغیر تازه..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نام متغیر تازه:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "اجازه اظهارات"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1»."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "با:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "ساختن «%1»"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "انجام چیزی"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "به"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "تابعی می‌سازد بدون هیچ خروجی."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "بازگشت"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "تابعی با یک خروجی می‌سازد."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "اخطار: این تابعی پارامتر تکراری دارد."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "برجسته‌سازی تعریف تابع"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "اگر یک مقدار صحیح است، مقدار دوم را برگردان."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نام ورودی:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "اضافه کردن ورودی به تابع."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ورودی‌ها"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع."; +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "پاک کردن گةپةل/قِسةل"; +Blockly.Msg["RENAME_VARIABLE"] = "تغییر نام متغیر..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تغییر نام همهٔ متغیرهای «%1» به:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "به %1 چسباندن متن %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "الحاق متنی به متغیر «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "به حروف کوچک"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "به حروف بزرگ عنوان"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "به حروف بزرگ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "بازگرداندن کپی متن در حالتی متفاوت."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "گرفتن اولین حرف"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "گرفتن حرف # از آخر"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "گرفتن حرف #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "گرفتن آخرین حرف"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "گرفتن حرف تصادفی"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "حرفی در موقعیت مشخص‌شده بر می‌گرداند."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "افزودن یک مورد به متن."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "نام نؤیسی"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "اضافه‌کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "به حرف # از انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "به حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "به آخرین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "در متن"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "گرفتن زیرمتن از اولین حرف"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "گرفتن زیرمتن از حرف # به انتها"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "گرفتن زیرمتن از حرف #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "اولین رخداد متن را بیاب"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "آخرین رخداد متن را بیاب"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "در متن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی است"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ایجاد متن با"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "طول %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "چاپ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "اعلان برای کاربر با یک عدد."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "اعلان برای کاربر برای یک متن."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "اعلان برای عدد با پیام"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "اعلان برای متن با پیام"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "یک حرف، کلمه یا خطی از متن."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "تراشیدن فاصله‌ها از هر دو طرف"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "تراشیدن فاصله‌ها از طرف چپ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند."; +Blockly.Msg["TODAY"] = "ایمڕۆ"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "آیتم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "درست‌کردن «تنظیم %1»"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "مقدار این متغیر را بر می‌گرداند."; +Blockly.Msg["VARIABLES_SET"] = "مجموعه %1 به %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "درست‌کردن «گرفتن %1»"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "متغیر برابر با خروجی را مشخص می‌کند."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/lo.js b/msg/js/lo.js index 3b4cc751fb2..ae56303ad02 100644 --- a/msg/js/lo.js +++ b/msg/js/lo.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ເພີ່ມຄຳອະທິບາຍ"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ປ່ຽນຄ່າ:"; -Blockly.Msg["CLEAN_UP"] = "ຈັດລຽນບລັອກໃຫ້ເປັນແຖວ"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ຍຸບບລັອກ"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ຍຸບບລັອກ"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ສີ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ສີ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ອັດຕາສ່ວນ"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ປະສົມ"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ປະສົມສອງສີເຂົ້າກັນດ້ວຍອັດຕາສ່ວນ (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lo.wikipedia.org/wiki/ສີ"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ເລືອກສີຈາກຈານສີ."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ສຸ່ມສີ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ເລືອກສີແບບສຸ່ມ."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "ຄ່າສີນ້ຳເງິນ"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ຄ່າສີຂຽວ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ຄ່າສີແດງ"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ສີທີ່ປະກອບດ້ວຍ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ສ້າງສີດ້ວຍການກຳນົດຄ່າສີແດງ, ສີຂຽວ, ແລະສີນ້ຳເງິນ. ຄ່າທັງໝົດຕ້ອງຢູ່ລະຫວ່າງ 0 ເຖິງ 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ອອກຈາກການວົນຊ້ຳ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ອອກຈາກການວົນຊ້ຳທີ່ຢູ່."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ຂ້າມຜ່ານຄຳສັ່ງທີ່ເຫຼືອຢູ່, ແລະເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ຄຳເຕືອນ: ບລັອກນີ້ໃຊ້ງານໄດ້ພາຍໃນການວົນຊ້ຳເທົ່ານັ້ນ."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ຈາກທຸກລາຍການ %1 ໃນລາຍຊື່ %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "ສຳລັບທຸກລາຍການໃນລາຍຊື່, ໃຫ້ຕັ້ງຄ່າຕົວແປ '%1' ເປັນລາຍການ, ແລະເຮັດຕາມຄຳສັ່ງທີ່ກຳນົດໄວ້."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "ນັບດ້ວຍ %1 ຈາກ %2 ເຖິງ %3 ປ່ຽນຄ່າທີລະ %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ຕົວແປ '%1' ຈະເລີ່ມຈາກຈຳນວນເລີ່ມຕົ້ນໄປຫາຈຳນວນສຸດທ້າຍ, ນັບຕາມຊ່ວງໄລຍະທີ່ກຳນົດ, ແລະເຮັດຕາມບລັອກທີ່ກຳນົດໄວ້."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "ເພີ່ມເງື່ອນໄຂລົງໃນບລັອກ \"ຖ້າ\"."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ເພີ່ມສິ່ງສຸດທ້າຍ, ກວດຫາຄວາມເປັນໄປໄດ້ທັງໝົດຂອງບລັອກ \"ຖ້າ\"."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ເພີ່ມ, ລຶບ, ຫຼື ຈັດລຽງບລັອກ \"ຖ້າ\" ນີ້ໃໝ່."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ນອກຈາກນີ້"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ນອກຈາກນີ້ ຖ້າ"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ຖ້າ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ຖ້າເງື່ອນໄຂເປັນຈິງ, ກໍຈະເຮັດຕາມທີ່ກຳນົດ."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ເຮັດ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ເຮັດຄືນ %1 ຄັ້ງ"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ເຮັດຄຳສັ່ງບາງຄຳສັ່ງຄືນຫຼາຍໆຄັ້ງ."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ເຮັດຄືນຈົນກະທັ່ງ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ເຮັດຄືນຂະນະທີ່"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ຂະນະທີ່ຄ່າເປັນເທັດ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ຂະນະທີ່ຄ່າເປັນຈິງ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "ລຶບ %1 ບລັອກທັງໝົດຫຼືບໍ່?"; -Blockly.Msg["DELETE_BLOCK"] = "ລຶບບລັອກ"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "ລຶບ %1 ບລັອກ"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated -Blockly.Msg["DISABLE_BLOCK"] = "ປິດໃຊ້ງານບລັອກ"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ເຮັດສຳເນົາ"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "ເປີດໃຊ້ງານບລັອກ"; -Blockly.Msg["EXPAND_ALL"] = "ຂະຫຍາຍບລັອກ"; -Blockly.Msg["EXPAND_BLOCK"] = "ຂະຫຍາຍບລັອກ"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ອິນພຸດພາຍນອກ"; -Blockly.Msg["HELP"] = "ຊ່ວຍເຫຼືອ"; -Blockly.Msg["INLINE_INPUTS"] = "ອິນພຸດໃນບັນທັດ"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ເທັດ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ຄືນຄ່າເປັນຈິງ ຫຼື ເທັດ."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ຈິງ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://​​lo.wikipedia.org/wiki/ອະສົມຜົນ"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນເທົ່າກັນ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າຄ່າທີ່ສອງ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າຄ່າທີ່ສອງ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນບໍ່ເທົ່າກັນ."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ບໍ່ %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທີ່ໃສ່ເປັນເທັດ. ຄືນຄ່າເປັນເທັດຖ້າຄ່າທີ່ໃສ່ເປັນຈິງ."; -Blockly.Msg["LOGIC_NULL"] = "ບໍ່ກຳນົດ"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ຄືນຄ່າບໍ່ກຳນົດ."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ແລະ"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ຫຼື"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທັງສອງເປັນຈິງ."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ຄືນຄ່າເປັນຈິງຖ້າມີຄ່າຢ່າງນ້ອຍໜຶ່ງຄ່າທີ່ເປັນຈິງ."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ທົດສອບ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ຖ້າ ເປັນເທັດ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ຖ້າ ເປັນຈິງ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "ກວດສອບເງື່ອນໄຂໃນ 'ທົດສອບ'. ຖ້າເງື່ອນໄຂເປັນຈິງ, ຄືນຄ່າ 'ຖ້າ ເປັນຈິງ'; ຖ້າເງື່ອນໄຂເປັນເທັດ, ໃຫ້ຄືນຄ່າ 'ຖ້າ ເປັນເທັດ'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://lo.wikipedia.org/wiki/ຈຳນວນ"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ຈຳນວນໜຶ່ງ."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ຊື່ຕົວແປໃໝ່:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ເຮັດຄືນ"; -Blockly.Msg["REMOVE_COMMENT"] = "ເອົາຄຳອະທິບາຍອອກ"; -Blockly.Msg["RENAME_VARIABLE"] = "ປ່ຽນຊື່ຕົວແປ..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ປ່ຽນຊື່ຕົວແປ '%1' ທັງໝົດເປັນ:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "ມື້ນີ້"; -Blockly.Msg["UNDO"] = "ກັບຄືນ"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ລາຍການ"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ເພີ່ມຄຳອະທິບາຍ"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ປ່ຽນຄ່າ:"; +Blockly.Msg["CLEAN_UP"] = "ຈັດລຽນບລັອກໃຫ້ເປັນແຖວ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ຍຸບບລັອກ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ຍຸບບລັອກ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ສີ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ສີ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ອັດຕາສ່ວນ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ປະສົມ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ປະສົມສອງສີເຂົ້າກັນດ້ວຍອັດຕາສ່ວນ (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lo.wikipedia.org/wiki/ສີ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ເລືອກສີຈາກຈານສີ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ສຸ່ມສີ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ເລືອກສີແບບສຸ່ມ."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ຄ່າສີນ້ຳເງິນ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ຄ່າສີຂຽວ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ຄ່າສີແດງ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ສີທີ່ປະກອບດ້ວຍ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ສ້າງສີດ້ວຍການກຳນົດຄ່າສີແດງ, ສີຂຽວ, ແລະສີນ້ຳເງິນ. ຄ່າທັງໝົດຕ້ອງຢູ່ລະຫວ່າງ 0 ເຖິງ 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ອອກຈາກການວົນຊ້ຳ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ອອກຈາກການວົນຊ້ຳທີ່ຢູ່."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ຂ້າມຜ່ານຄຳສັ່ງທີ່ເຫຼືອຢູ່, ແລະເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ຄຳເຕືອນ: ບລັອກນີ້ໃຊ້ງານໄດ້ພາຍໃນການວົນຊ້ຳເທົ່ານັ້ນ."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ຈາກທຸກລາຍການ %1 ໃນລາຍຊື່ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "ສຳລັບທຸກລາຍການໃນລາຍຊື່, ໃຫ້ຕັ້ງຄ່າຕົວແປ '%1' ເປັນລາຍການ, ແລະເຮັດຕາມຄຳສັ່ງທີ່ກຳນົດໄວ້."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "ນັບດ້ວຍ %1 ຈາກ %2 ເຖິງ %3 ປ່ຽນຄ່າທີລະ %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ຕົວແປ '%1' ຈະເລີ່ມຈາກຈຳນວນເລີ່ມຕົ້ນໄປຫາຈຳນວນສຸດທ້າຍ, ນັບຕາມຊ່ວງໄລຍະທີ່ກຳນົດ, ແລະເຮັດຕາມບລັອກທີ່ກຳນົດໄວ້."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "ເພີ່ມເງື່ອນໄຂລົງໃນບລັອກ \"ຖ້າ\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ເພີ່ມສິ່ງສຸດທ້າຍ, ກວດຫາຄວາມເປັນໄປໄດ້ທັງໝົດຂອງບລັອກ \"ຖ້າ\"."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ເພີ່ມ, ລຶບ, ຫຼື ຈັດລຽງບລັອກ \"ຖ້າ\" ນີ້ໃໝ່."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ນອກຈາກນີ້"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ນອກຈາກນີ້ ຖ້າ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ຖ້າ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ຖ້າເງື່ອນໄຂເປັນຈິງ, ກໍຈະເຮັດຕາມທີ່ກຳນົດ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ເຮັດ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ເຮັດຄືນ %1 ຄັ້ງ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ເຮັດຄຳສັ່ງບາງຄຳສັ່ງຄືນຫຼາຍໆຄັ້ງ."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ເຮັດຄືນຈົນກະທັ່ງ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ເຮັດຄືນຂະນະທີ່"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ຂະນະທີ່ຄ່າເປັນເທັດ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ຂະນະທີ່ຄ່າເປັນຈິງ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ລຶບ %1 ບລັອກທັງໝົດຫຼືບໍ່?"; +Blockly.Msg["DELETE_BLOCK"] = "ລຶບບລັອກ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "ລຶບ %1 ບລັອກ"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ປິດໃຊ້ງານບລັອກ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ເຮັດສຳເນົາ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ເປີດໃຊ້ງານບລັອກ"; +Blockly.Msg["EXPAND_ALL"] = "ຂະຫຍາຍບລັອກ"; +Blockly.Msg["EXPAND_BLOCK"] = "ຂະຫຍາຍບລັອກ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ອິນພຸດພາຍນອກ"; +Blockly.Msg["HELP"] = "ຊ່ວຍເຫຼືອ"; +Blockly.Msg["INLINE_INPUTS"] = "ອິນພຸດໃນບັນທັດ"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ເທັດ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ຄືນຄ່າເປັນຈິງ ຫຼື ເທັດ."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ຈິງ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://​​lo.wikipedia.org/wiki/ອະສົມຜົນ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນເທົ່າກັນ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າຄ່າທີ່ສອງ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າຄ່າທີ່ສອງ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນບໍ່ເທົ່າກັນ."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ບໍ່ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທີ່ໃສ່ເປັນເທັດ. ຄືນຄ່າເປັນເທັດຖ້າຄ່າທີ່ໃສ່ເປັນຈິງ."; +Blockly.Msg["LOGIC_NULL"] = "ບໍ່ກຳນົດ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ຄືນຄ່າບໍ່ກຳນົດ."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ແລະ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ຫຼື"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທັງສອງເປັນຈິງ."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ຄືນຄ່າເປັນຈິງຖ້າມີຄ່າຢ່າງນ້ອຍໜຶ່ງຄ່າທີ່ເປັນຈິງ."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ທົດສອບ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ຖ້າ ເປັນເທັດ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ຖ້າ ເປັນຈິງ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "ກວດສອບເງື່ອນໄຂໃນ 'ທົດສອບ'. ຖ້າເງື່ອນໄຂເປັນຈິງ, ຄືນຄ່າ 'ຖ້າ ເປັນຈິງ'; ຖ້າເງື່ອນໄຂເປັນເທັດ, ໃຫ້ຄືນຄ່າ 'ຖ້າ ເປັນເທັດ'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://lo.wikipedia.org/wiki/ຈຳນວນ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ຈຳນວນໜຶ່ງ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ຊື່ຕົວແປໃໝ່:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ເຮັດຄືນ"; +Blockly.Msg["REMOVE_COMMENT"] = "ເອົາຄຳອະທິບາຍອອກ"; +Blockly.Msg["RENAME_VARIABLE"] = "ປ່ຽນຊື່ຕົວແປ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ປ່ຽນຊື່ຕົວແປ '%1' ທັງໝົດເປັນ:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ມື້ນີ້"; +Blockly.Msg["UNDO"] = "ກັບຄືນ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ລາຍການ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/lrc.js b/msg/js/lrc.js index 7ce381ee7b3..32a3b5ef529 100644 --- a/msg/js/lrc.js +++ b/msg/js/lrc.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "نٱزٱرتو ناْ اْزاف بٱکؽت"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ٱرزشت آلشت کو:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "کوچک کردن برشتؽا"; -Blockly.Msg["COLLAPSE_BLOCK"] = "کوچک کردن برشت"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رٱنڳ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رٱنڳ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسڤٱت"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "شؽڤسٱ"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "هٱر کوم د رٱنڳؽا ناْ ڤا نسڤٱت داٛئٱ بٱ بٱشؽڤن(0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "یاٛ رٱنڳ د رٱنڳدو اْنتخاو بٱکؽت"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رٱنڳ بٱختٱکی"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "یاٛ ٱنڳ بٱختٱکی اْنتخاو بٱکؽت"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "آوئی"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "سۉز"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "سۏز"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "رٱنڳ ڤا"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "هٱلقٱ ناْ خراو کو"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "هٱلقٱ شومل بیٱ ناْ خراو کو"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "سی هٱر قلٱم %1 د نومگٱ %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "شماردن وا %1 د %2 سی %3 ڤا %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "هنی"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "هنی ٱر"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ٱر"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ٱنجوم باٛ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 تکرار کو چٱن بار"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تا تکرار کو"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تا تکرار کو"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "پاکسا کردن برشت"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "پاکسا کردن%1 د برشتؽا"; -Blockly.Msg["DIALOG_CANCEL"] = "رٱد كردن"; -Blockly.Msg["DIALOG_OK"] = "خۊئٱ"; -Blockly.Msg["DISABLE_BLOCK"] = "ناکشتگر کردن برشت"; -Blockly.Msg["DUPLICATE_BLOCK"] = "کپی کردن"; -Blockly.Msg["DUPLICATE_COMMENT"] = "نٱزٱر تکراری"; -Blockly.Msg["ENABLE_BLOCK"] = "کنشتگر کردن برشت"; -Blockly.Msg["EXPAND_ALL"] = "گٱپ کردن برشتؽا"; -Blockly.Msg["EXPAND_BLOCK"] = "گٱپ کردن برشت"; -Blockly.Msg["EXTERNAL_INPUTS"] = "دادٱیا ڤ دری"; -Blockly.Msg["HELP"] = "هومياری"; -Blockly.Msg["INLINE_INPUTS"] = "دادٱیا مؽنجا"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "یاٛ نومگٱ هالٛی دۏرس بٱکؽت"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "نومگٱ"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ٱڤلی"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# تا آخر"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "گرتن"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گرتن ۉ جا ڤ جا بیئن"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخر"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "بٱختٱکی"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ڤرداشتن"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "سی#"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "سی آخر"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "د نومگٱ"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 هالٛیٱ"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "چی"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "بٱنؽ د"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "غلٱت"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "هٱم غلٱت ۉ هٱم دۏرس ڤرگٱردن"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "راس ۉ دۏرس"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نٱ %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "خونسا"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "ۉ"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزماشت کردن"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ٱر غلٱت بی"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ٱر دۏرس بی"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ڤاْ ٱندازٱ دۏ شمارٱ ڤرگٱردن."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "آلشت بٱکؽت %1 وا %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "یٱ ڤا بٱئر بیٱ"; -Blockly.Msg["MATH_IS_EVEN"] = "همیشٱ هؽسش"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "مٱنفی ٱ"; -Blockly.Msg["MATH_IS_ODD"] = "تٱنڳؽا ٱ"; -Blockly.Msg["MATH_IS_POSITIVE"] = "موسبٱتٱ"; -Blockly.Msg["MATH_IS_PRIME"] = "ڤٱ ٱڤلٱ"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "همٱشٱ"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "یاٛ شمارٱ."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "مؽنجاگٱ نومگٱ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بؽشترونٱ د نومگٱ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "مؽنجا نومگٱ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "کٱمترونٱ د نومگٱ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "بؽشری د نومگٱ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جٱم کردن نومگٱ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گرد کردن"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ڤ هار گرد کردن"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ڤ رۉ گرد کردن"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "تموم ۉ کمال"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "چارسوک ریشٱ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "آلشتگر تازٱ..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "نوم آلشتگر تازٱ:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "نوع آلشتگر تازٱ"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ڤا:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ڤا:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "دۏرس کردن%1"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "یاٛ کار ٱنجوم باٛئؽت"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "سی"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ڤرگٱردنیئن"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نوم دادٱ:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "دادٱیا"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "د نۊ ٱنجوم داٛئن"; -Blockly.Msg["REMOVE_COMMENT"] = "هٱزف نٱزٱر"; -Blockly.Msg["RENAME_VARIABLE"] = "د نۊ نوم نؽاین آلشتگر..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "د نو نوم نؽاین %1 د تموم آلشتگریا د:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "سی ڤاج کوچک"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "سی هٱرف گٱپ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "پاٛڤٱسن"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "سی ڤاج# تا آخر"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "سی ڤاج#"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "سی آخری ڤاج"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "د مٱتن"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "د مٱتن %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 هالٛیٱ"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "دۏرس کردن مٱتن ڤا"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "اؽمرۊ"; -Blockly.Msg["UNDO"] = "ٱنجوم نٱداٛئن"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "قلٱم"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "میزوکاری %1 سی %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "نٱزٱرتو ناْ اْزاف بٱکؽت"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ٱرزشت آلشت کو:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "کوچک کردن برشتؽا"; +Blockly.Msg["COLLAPSE_BLOCK"] = "کوچک کردن برشت"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رٱنڳ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رٱنڳ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسڤٱت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "شؽڤسٱ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "هٱر کوم د رٱنڳؽا ناْ ڤا نسڤٱت داٛئٱ بٱ بٱشؽڤن(0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "یاٛ رٱنڳ د رٱنڳدو اْنتخاو بٱکؽت"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "رٱنڳ بٱختٱکی"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "یاٛ ٱنڳ بٱختٱکی اْنتخاو بٱکؽت"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "آوئی"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سۉز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "سۏز"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رٱنڳ ڤا"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "هٱلقٱ ناْ خراو کو"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "هٱلقٱ شومل بیٱ ناْ خراو کو"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "سی هٱر قلٱم %1 د نومگٱ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "شماردن وا %1 د %2 سی %3 ڤا %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "هنی"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "هنی ٱر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ٱر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ٱنجوم باٛ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 تکرار کو چٱن بار"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تا تکرار کو"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تا تکرار کو"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "پاکسا کردن برشت"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "پاکسا کردن%1 د برشتؽا"; +Blockly.Msg["DIALOG_CANCEL"] = "رٱد كردن"; +Blockly.Msg["DIALOG_OK"] = "خۊئٱ"; +Blockly.Msg["DISABLE_BLOCK"] = "ناکشتگر کردن برشت"; +Blockly.Msg["DUPLICATE_BLOCK"] = "کپی کردن"; +Blockly.Msg["DUPLICATE_COMMENT"] = "نٱزٱر تکراری"; +Blockly.Msg["ENABLE_BLOCK"] = "کنشتگر کردن برشت"; +Blockly.Msg["EXPAND_ALL"] = "گٱپ کردن برشتؽا"; +Blockly.Msg["EXPAND_BLOCK"] = "گٱپ کردن برشت"; +Blockly.Msg["EXTERNAL_INPUTS"] = "دادٱیا ڤ دری"; +Blockly.Msg["HELP"] = "هومياری"; +Blockly.Msg["INLINE_INPUTS"] = "دادٱیا مؽنجا"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "یاٛ نومگٱ هالٛی دۏرس بٱکؽت"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "نومگٱ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ٱڤلی"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# تا آخر"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گرتن"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گرتن ۉ جا ڤ جا بیئن"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخر"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "بٱختٱکی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ڤرداشتن"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "سی#"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "سی آخر"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "د نومگٱ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 هالٛیٱ"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "چی"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "بٱنؽ د"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "غلٱت"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "هٱم غلٱت ۉ هٱم دۏرس ڤرگٱردن"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "راس ۉ دۏرس"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نٱ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "خونسا"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "ۉ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزماشت کردن"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ٱر غلٱت بی"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ٱر دۏرس بی"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ڤاْ ٱندازٱ دۏ شمارٱ ڤرگٱردن."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "آلشت بٱکؽت %1 وا %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "یٱ ڤا بٱئر بیٱ"; +Blockly.Msg["MATH_IS_EVEN"] = "همیشٱ هؽسش"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "مٱنفی ٱ"; +Blockly.Msg["MATH_IS_ODD"] = "تٱنڳؽا ٱ"; +Blockly.Msg["MATH_IS_POSITIVE"] = "موسبٱتٱ"; +Blockly.Msg["MATH_IS_PRIME"] = "ڤٱ ٱڤلٱ"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "همٱشٱ"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "یاٛ شمارٱ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "مؽنجاگٱ نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "بؽشترونٱ د نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "مؽنجا نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "کٱمترونٱ د نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "بؽشری د نومگٱ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "جٱم کردن نومگٱ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "گرد کردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ڤ هار گرد کردن"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ڤ رۉ گرد کردن"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "تموم ۉ کمال"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "چارسوک ریشٱ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "آلشتگر تازٱ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نوم آلشتگر تازٱ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "نوع آلشتگر تازٱ"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ڤا:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ڤا:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "دۏرس کردن%1"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "یاٛ کار ٱنجوم باٛئؽت"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "سی"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ڤرگٱردنیئن"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "نوم دادٱ:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "دادٱیا"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "د نۊ ٱنجوم داٛئن"; +Blockly.Msg["REMOVE_COMMENT"] = "هٱزف نٱزٱر"; +Blockly.Msg["RENAME_VARIABLE"] = "د نۊ نوم نؽاین آلشتگر..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "د نو نوم نؽاین %1 د تموم آلشتگریا د:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "سی ڤاج کوچک"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "سی هٱرف گٱپ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "پاٛڤٱسن"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "سی ڤاج# تا آخر"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "سی ڤاج#"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "سی آخری ڤاج"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "د مٱتن"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "د مٱتن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 هالٛیٱ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "دۏرس کردن مٱتن ڤا"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "اؽمرۊ"; +Blockly.Msg["UNDO"] = "ٱنجوم نٱداٛئن"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "قلٱم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "میزوکاری %1 سی %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/lt.js b/msg/js/lt.js index b1c49a710b1..08ec42cf81d 100644 --- a/msg/js/lt.js +++ b/msg/js/lt.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Palikti komentarą"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Negalima ištrinti kintamojo '%1', nes jis yra dalis funkcijos '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Keisti reikšmę:"; -Blockly.Msg["CLEAN_UP"] = "Išvalyti blokus"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Suskleisti blokus"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Suskleisti bloką"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1 spalva"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2 spalva"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "santykis"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "sumaišyk"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sumaišo dvi spalvas su pateiktu santykiu (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lt.wikipedia.org/wiki/Spalva"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Pasirinkti spalvą iš paletės."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "atsitiktinė spalva"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Pasirinkti spalvą atsitiktinai."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "mėlyna"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "žalia"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "raudona"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "spalva su"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Spalvą galima sudaryti iš raudonos, žalios ir mėlynos dedamųjų. Kiekvienos intensyvumas nuo 0 iki 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "nutraukti kartojimą"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "šį kartą praleisti likusius veiksmus ir tęsti kartojimą"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Nutraukia (artimiausią) vykstantį kartojimą."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Praleidžia žemiau išvardintus kartojimo veiksmus (ir tęsia darbą nuo kartojimo pradinio veiksmo)."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atsargiai: šis blokas gali būt naudojamas tik kartojimo bloko viduje."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "kartok su kiekvienu %1 iš sąrašo %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Kartok veiksmus, kol kintamasis \"%1\" paeiliui gauna kiekvieną sąrašo reikšmę."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "kartok, kai %1 kinta nuo %2 iki %3 po %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Imama kintamoji '%1' reikšmė nuo pradinio skaičiaus iki pabaigos skaičiaus, skaičiuojant nustatytais intervalais ir atliekant nustatytus blokus."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Pridėti sąlygą „jei“ blokui."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Pridėti veiksmų vykdymo variantą/\"šaką\", kai netenkinama nė viena sąlyga."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Galite pridėt/pašalinti/pertvarkyti sąlygų \"šakas\"."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "kitu atveju"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "arba jei"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jei"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jeigu sąlyga tenkinama, tai atlik veiksmus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jei sąlyga tenkinama, atlikti jai priklausančius veiksmus, o jei ne -- atlikti kitus nurodytus veiksmus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus. Kitais atvejais -- atlikti paskutinio bloko veiksmus."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "daryti"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "pakartokite %1 kartus"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Leidžia atlikti išvardintus veiksmus kelis kartus."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "kartok, kol pasieksi"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "kartok kol"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Kartoja veiksmus, kol bus pasiekta nurodyta sąlyga."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Kartoja veiksmus, kol sąlyga tenkinama."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ištrinti visus %1 blokus?"; -Blockly.Msg["DELETE_BLOCK"] = "Ištrinti bloką"; -Blockly.Msg["DELETE_VARIABLE"] = "Ištrinti „%1“ kintamąjį"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ištrinti %1 '%2' panaudojimus?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Ištrinti %1 blokus"; -Blockly.Msg["DIALOG_CANCEL"] = "Atšaukti"; -Blockly.Msg["DIALOG_OK"] = "Gerai"; -Blockly.Msg["DISABLE_BLOCK"] = "Išjungti bloką"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Kopijuoti"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Dubliuoti Komentarą"; -Blockly.Msg["ENABLE_BLOCK"] = "Įjungti bloką"; -Blockly.Msg["EXPAND_ALL"] = "Išskleisti blokus"; -Blockly.Msg["EXPAND_BLOCK"] = "Išskleisti bloką"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Išdėstyti stulpeliu, kai daug parametrų"; -Blockly.Msg["HELP"] = "Pagalba"; -Blockly.Msg["INLINE_INPUTS"] = "Išdėstyti vienoje eilutėje"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tuščias sąrašas"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Grąžina sąrašą, ilgio 0, neturintį duomenų"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "sąrašas"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "sukurti sąrašą su"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Pridėti elementą į sąrašą."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Sukurti sąrašą iš bet kokio skaičiaus elementų."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pirmas"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# nuo galo"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "paimk"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "paimk ir ištrink"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "paskutinis"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "atsitiktinis"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "pašalinti"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Grąžina pirmąjį sąrašo elementą."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Gražina objektą į nurodyta poziciją sąraše."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Grąžina paskutinį elementą iš sąrašo."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Grąžina atsitiktinį elementą iš sąrašo."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Pašalina pirmą objektą sąraše."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Pašalina objektą iš nurodytos vietos sąraše."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Pašalina paskutinį objektą sąraše."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Pašalina atsitiktinį objektą sąraše."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "iki # nuo galo"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "iki #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "iki galo"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "sąrašo dalis nuo pradžios"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "sąrašo dalis nuo # nuo galo"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "sąrašo dalis nuo #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Sukuria nurodytos sąrašo dalies kopiją."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 yra paskutinis objektas."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 yra pirmasis objektas."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "rask pirmą reikšmę"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "rask paskutinę reikšmę"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Grąžina pirmos/paskutinės reikšmės eilės nr. sąraše. Grąžina %1, jei reikšmės neranda."; -Blockly.Msg["LISTS_INLIST"] = "sąraše"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 yra tuščias"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Grąžina „true“, jeigu sąrašas tuščias."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "ilgis %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Grąžina sąrašo ilgį."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "sukurk sąrašą, kuriame %1 bus %2 kartus"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kaip"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "įterpk į vietą"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "priskirk elementui"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Įterpia objektą į sąrašo pradžią."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Įterpią objektą į nurodytą poziciją sąraše."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Įterpia objektą į atsitiktinę sąrašo vietą."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "didėjančia tvarka"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "mažėjančia tvarka"; -Blockly.Msg["LISTS_SORT_TITLE"] = "rūšiuoti %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Rūšiuoti sąrašo kopiją."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecėlės, ignoruoti raidžių dydį"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "skaitmeninis"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abėcėlės"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "su dalikliu"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "klaidinga"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Reikšmė gali būti \"teisinga\"/\"Taip\" arba \"klaidinga\"/\"Ne\"."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tiesa"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Tenkinama, jei abu reiškiniai lygūs."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Grįžti tiesa, jei pirmoji įvestis didesnė nei antroji įvestis."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Grįžti tiesa, jei pirma įvestis didesnė arba lygi antrajai įvesčiai."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Grįžti tiesa, jei pirma įvestis mažesnė nei antra įvestis."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Grįžti tiesa, jei pirma įvestis mažesnė arba lygi antrajai įvesčiai."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Grįžti tiesa, jeigu abi įvestys ne lygios tarpusavyje."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Grįžti tiesa, jei įvestis klaidinga. Grįžti klaidinga, jei įvestis teisinga."; -Blockly.Msg["LOGIC_NULL"] = "nieko"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Reikšmė nebuvo nurodyta..."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ir"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "arba"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Bus teisinga, kai abi sąlygos bus tenkinamos."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Grįžti tiesa, jei bent viena įvestis teisinga."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "sąlyga"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jei ne"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jei taip"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Jeigu sąlygą tenkinama, grąžina pirmą reikšmę, o jei ne - antrąją."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Grąžina dviejų skaičių sumą."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Grąžina dviejų skaičių dalmenį."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Grąžina dviejų skaičių skirtumą."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Grąžina dviejų skaičių sandaugą."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Grąžina pirmą skaičių pakeltą laipsniu pagal antrą skaičių."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "padidink %1 (emptypage) %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Prideda skaičių prie kintamojo '%1'. Kai skaičius neigiamas - gaunasi atimtis."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Grįžti viena iš pagrindinių konstantų: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (begalybė)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "apribok %1 tarp %2 ir %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Apriboti skaičių, kad būtų tarp nustatytų ribų (imtinai)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "yra dalus iš"; -Blockly.Msg["MATH_IS_EVEN"] = "yra lyginis"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "yra neigiamas"; -Blockly.Msg["MATH_IS_ODD"] = "yra nelyginis"; -Blockly.Msg["MATH_IS_POSITIVE"] = "yra teigiamas"; -Blockly.Msg["MATH_IS_PRIME"] = "yra pirminis"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Patikrina skaičiaus savybę: (ne)lyginis/pirminis/sveikasis/teigiamas/neigiamas/dalus iš x."; -Blockly.Msg["MATH_IS_WHOLE"] = "yra sveikasis"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "dalybos liekana %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Grįžti likučiu nuo dviejų skaičių dalybos."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://lt.wikipedia.org/wiki/Skaičius"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Skaičius."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "vidurkis"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "didžiausia reikšmė sąraše"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana sąrašui"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mažiausia reikšmė sąraše"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "statistinė moda sąrašui"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "atsitiktinis elementas iš sąrašo"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standartinis nuokrypis sąraše"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Grįžti vidurkiu (aritmetinis vidurkis) iš skaitinių reikšmių sąraše."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Grįžti didžiausiu skaičiumi sąraše."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Grąžinti sąrašo medianą."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Grįžti mažiausiu skaičiumi sąraše."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Grąžinti sąrašą dažniausių elementų sąraše."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Grąžinti atsitiktinį elementą iš sąrašo."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Grįžti standartine pakraipa iš sąrašo."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "didžiausia reikšmė"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "atsitiktinė trupmena"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Atsitiktinė trupmena nuo 0 (imtinai) iki 1 (neimtinai)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "atsitiktinis sveikas sk. nuo %1 iki %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Grįžti atsitiktinį sveikąjį skaičių tarp dviejų nustatytų ribų, imtinai."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://lt.wikipedia.org/wiki/Apvalinimas"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "apvalink"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "apvalink žemyn"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "apvalink aukštyn"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Suapvalinti skaičių į žemesnę ar aukštesnę reikšmę."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "modulis"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratinė šaknis"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Skaičiaus modulis - reikšmė be ženklo (panaikina minusą)."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Grąžinti skaičių laipsniu e."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Grąžinti skaičiaus natūrinį logaritmą."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Grįžti 10 pagrindinių logaritmų iš skaičiaus."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Grąžina skaičiui priešingą skaičių."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Grąžinti skaičių laipsniu 10."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Grįžti kvadratinę šaknį iš skaičiaus."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://lt.wikipedia.org/wiki/Trigonometrinės_funkcijos"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Grąžinti skaičiaus arkkosinusą."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Grąžinti skaičiaus arksinusą."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Grąžinti skaičiaus arktangentą."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Grąžinti laipsnio kosinusą (ne radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Grąžinti laipsnio sinusą (ne radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Grąžinti laipsnio tangentą (ne radiano)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Sukurti spalvos kintamąjį..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Sukurti skaičiaus kintamąjį..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Sukurti kintamąjį"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Naujo kintamojo pavadinimas:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Naujas kintamojo tipas:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "leisti vidinius veiksmus"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "pagal:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Vykdyti sukurtą komandą \"%1\"."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Įvykdyti komandą \"%1\" ir naudoti jos suskaičiuotą (atiduotą) reikšmę."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "su:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Sukurti \"%1\""; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Apibūdinkite šią funkciją..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "daryk kažką"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "komanda:"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Sukuria procedūrą - komandą, kuri nepateikia jokio rezultato (tik atlieka veiksmus)."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "duok"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Sukuria funkciją - komandą, kuri ne tik atlieka veiksmus bet ir pateikia (grąžina/duoda) rezultatą."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ši komanda turi du vienodus gaunamų duomenų pavadinimus."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jeigu pirma reikšmė yra teisinga (sąlyga tenkinama), grąžina antrą reikšmę."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Perspėjimas: šis blokas gali būti naudojamas tik aprašant funkciją."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "parametro pavadinimas:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Pridėti funkcijos parametrą (gaunamų duomenų pavadinimą)."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "gaunami duomenys (parametrai)"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tvarkyti komandos gaunamus duomenis (parametrus)."; -Blockly.Msg["REDO"] = "Atkurti"; -Blockly.Msg["REMOVE_COMMENT"] = "Pašalinti komentarą"; -Blockly.Msg["RENAME_VARIABLE"] = "Pervardyti kintamajį..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Pervadinti visus '%1' kintamuosius į:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "prie %1 pridėk tekstą %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Pridėti tekstą prie kintamojo '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = " mažosiom raidėm"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = " Pavadinimo Raidėmis"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = " DIDŽIOSIOM RAIDĖM"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Kitu atvėju, grąžina teksto kopiją."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "gauti pirmą raidę"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "raidė nuo galo #"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "gauti raidę #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "gauti paskutinę raidę"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "gauti atsitiktinę raidę"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Grąžina raidę į tam tikrą poziciją."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "skaičius %1 iš %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Suskaičiuoti, kiek kartų šis tekstas kartojasi kitame tekste."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Pridėti teksto elementą."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sujunk"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "iki raidės nuo galo #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "iki raidės #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "iki pabaigos"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "tekste"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "dalis nuo pradžios"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "dalis nuo raidės #"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "dalis nuo raidės #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Grąžina tam tikrą teksto dalį."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "rask,kur pirmą kartą paminėta"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "rask,kur paskutinį kartą paminėta"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekste %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Grąžina pirmą/paskutinę pirmo teksto reikšmę antrame tekste. Grąžina %1, jei tekstas nerastas."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 yra tuščias"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Grįžti tiesa, jei numatytas tekstas tuščias."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "sukurti tekstą su"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Sukurti teksto fragmentą sujungiant bet kokį skaičių fragmentų."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "teksto %1 ilgis"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Suranda teksto simbolių kiekį (įskaitant ir tarpus)"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "spausdinti %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Spausdinti nurodytą tekstą, skaičių ar kitą reikšmę."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prašyti vartotoją įvesti skaičių."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prašyti vartotoją įvesti tekstą."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "paprašyk įvesti skaičių :"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "paprašyk įvesti tekstą :"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "pakeisti %1 į %2 šiame %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Pašalinti visas teksto dalis kitame tekste."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "atbulai %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Apversti teksto simbolių tvarką."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Tekstas (arba žodis, ar raidė)"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "išvalyk tarpus šonuose"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "išvalyk tarpus pradžioje"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "išvalyk tarpus pabaigoje"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Grąžina teksto kopiją, pašalinus tarpus iš vieno ar abiejų kraštų."; -Blockly.Msg["TODAY"] = "Šiandien"; -Blockly.Msg["UNDO"] = "Anuliuoti"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elementas"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Sukurk \"priskirk %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "priskirk %1 = %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Sukurti 'kintamasis %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Kintamasis, pavadinimu '%1', jau egzistuoja."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Kintamasis, pavadinimu '%1', jau egzistuoja kaip kitas tipas: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Kažką pasakykite..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Palikti komentarą"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Negalima ištrinti kintamojo '%1', nes jis yra dalis funkcijos '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Keisti reikšmę:"; +Blockly.Msg["CLEAN_UP"] = "Išvalyti blokus"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Suskleisti blokus"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Suskleisti bloką"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1 spalva"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2 spalva"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "santykis"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "sumaišyk"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sumaišo dvi spalvas su pateiktu santykiu (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lt.wikipedia.org/wiki/Spalva"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Pasirinkti spalvą iš paletės."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "atsitiktinė spalva"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Pasirinkti spalvą atsitiktinai."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "mėlyna"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "žalia"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "raudona"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "spalva su"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Spalvą galima sudaryti iš raudonos, žalios ir mėlynos dedamųjų. Kiekvienos intensyvumas nuo 0 iki 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "nutraukti kartojimą"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "šį kartą praleisti likusius veiksmus ir tęsti kartojimą"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Nutraukia (artimiausią) vykstantį kartojimą."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Praleidžia žemiau išvardintus kartojimo veiksmus (ir tęsia darbą nuo kartojimo pradinio veiksmo)."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atsargiai: šis blokas gali būt naudojamas tik kartojimo bloko viduje."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "kartok su kiekvienu %1 iš sąrašo %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Kartok veiksmus, kol kintamasis \"%1\" paeiliui gauna kiekvieną sąrašo reikšmę."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "kartok, kai %1 kinta nuo %2 iki %3 po %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Imama kintamoji '%1' reikšmė nuo pradinio skaičiaus iki pabaigos skaičiaus, skaičiuojant nustatytais intervalais ir atliekant nustatytus blokus."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Pridėti sąlygą „jei“ blokui."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Pridėti veiksmų vykdymo variantą/\"šaką\", kai netenkinama nė viena sąlyga."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Galite pridėt/pašalinti/pertvarkyti sąlygų \"šakas\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "kitu atveju"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "arba jei"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jei"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jeigu sąlyga tenkinama, tai atlik veiksmus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jei sąlyga tenkinama, atlikti jai priklausančius veiksmus, o jei ne -- atlikti kitus nurodytus veiksmus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus. Kitais atvejais -- atlikti paskutinio bloko veiksmus."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "daryti"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "pakartokite %1 kartus"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Leidžia atlikti išvardintus veiksmus kelis kartus."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "kartok, kol pasieksi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "kartok kol"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Kartoja veiksmus, kol bus pasiekta nurodyta sąlyga."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Kartoja veiksmus, kol sąlyga tenkinama."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ištrinti visus %1 blokus?"; +Blockly.Msg["DELETE_BLOCK"] = "Ištrinti bloką"; +Blockly.Msg["DELETE_VARIABLE"] = "Ištrinti „%1“ kintamąjį"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Ištrinti %1 '%2' panaudojimus?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Ištrinti %1 blokus"; +Blockly.Msg["DIALOG_CANCEL"] = "Atšaukti"; +Blockly.Msg["DIALOG_OK"] = "Gerai"; +Blockly.Msg["DISABLE_BLOCK"] = "Išjungti bloką"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopijuoti"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dubliuoti Komentarą"; +Blockly.Msg["ENABLE_BLOCK"] = "Įjungti bloką"; +Blockly.Msg["EXPAND_ALL"] = "Išskleisti blokus"; +Blockly.Msg["EXPAND_BLOCK"] = "Išskleisti bloką"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Išdėstyti stulpeliu, kai daug parametrų"; +Blockly.Msg["HELP"] = "Pagalba"; +Blockly.Msg["INLINE_INPUTS"] = "Išdėstyti vienoje eilutėje"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tuščias sąrašas"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Grąžina sąrašą, ilgio 0, neturintį duomenų"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "sąrašas"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "sukurti sąrašą su"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Pridėti elementą į sąrašą."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Sukurti sąrašą iš bet kokio skaičiaus elementų."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pirmas"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# nuo galo"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "paimk"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "paimk ir ištrink"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "paskutinis"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "atsitiktinis"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "pašalinti"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Grąžina pirmąjį sąrašo elementą."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Gražina objektą į nurodyta poziciją sąraše."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Grąžina paskutinį elementą iš sąrašo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Grąžina atsitiktinį elementą iš sąrašo."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Pašalina pirmą objektą sąraše."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Pašalina objektą iš nurodytos vietos sąraše."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Pašalina paskutinį objektą sąraše."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Pašalina atsitiktinį objektą sąraše."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "iki # nuo galo"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "iki #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "iki galo"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "sąrašo dalis nuo pradžios"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "sąrašo dalis nuo # nuo galo"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "sąrašo dalis nuo #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Sukuria nurodytos sąrašo dalies kopiją."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 yra paskutinis objektas."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 yra pirmasis objektas."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "rask pirmą reikšmę"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "rask paskutinę reikšmę"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Grąžina pirmos/paskutinės reikšmės eilės nr. sąraše. Grąžina %1, jei reikšmės neranda."; +Blockly.Msg["LISTS_INLIST"] = "sąraše"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 yra tuščias"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Grąžina „true“, jeigu sąrašas tuščias."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "ilgis %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Grąžina sąrašo ilgį."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "sukurk sąrašą, kuriame %1 bus %2 kartus"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kaip"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "įterpk į vietą"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "priskirk elementui"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Įterpia objektą į sąrašo pradžią."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Įterpią objektą į nurodytą poziciją sąraše."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Įterpia objektą į atsitiktinę sąrašo vietą."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "didėjančia tvarka"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "mažėjančia tvarka"; +Blockly.Msg["LISTS_SORT_TITLE"] = "rūšiuoti %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Rūšiuoti sąrašo kopiją."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecėlės, ignoruoti raidžių dydį"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "skaitmeninis"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abėcėlės"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "su dalikliu"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "klaidinga"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Reikšmė gali būti \"teisinga\"/\"Taip\" arba \"klaidinga\"/\"Ne\"."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tiesa"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Tenkinama, jei abu reiškiniai lygūs."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Grįžti tiesa, jei pirmoji įvestis didesnė nei antroji įvestis."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Grįžti tiesa, jei pirma įvestis didesnė arba lygi antrajai įvesčiai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Grįžti tiesa, jei pirma įvestis mažesnė nei antra įvestis."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Grįžti tiesa, jei pirma įvestis mažesnė arba lygi antrajai įvesčiai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Grįžti tiesa, jeigu abi įvestys ne lygios tarpusavyje."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Grįžti tiesa, jei įvestis klaidinga. Grįžti klaidinga, jei įvestis teisinga."; +Blockly.Msg["LOGIC_NULL"] = "nieko"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Reikšmė nebuvo nurodyta..."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ir"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "arba"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Bus teisinga, kai abi sąlygos bus tenkinamos."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Grįžti tiesa, jei bent viena įvestis teisinga."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "sąlyga"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jei ne"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jei taip"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Jeigu sąlygą tenkinama, grąžina pirmą reikšmę, o jei ne - antrąją."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Grąžina dviejų skaičių sumą."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Grąžina dviejų skaičių dalmenį."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Grąžina dviejų skaičių skirtumą."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Grąžina dviejų skaičių sandaugą."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Grąžina pirmą skaičių pakeltą laipsniu pagal antrą skaičių."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "padidink %1 (emptypage) %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Prideda skaičių prie kintamojo '%1'. Kai skaičius neigiamas - gaunasi atimtis."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Grįžti viena iš pagrindinių konstantų: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (begalybė)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "apribok %1 tarp %2 ir %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Apriboti skaičių, kad būtų tarp nustatytų ribų (imtinai)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "yra dalus iš"; +Blockly.Msg["MATH_IS_EVEN"] = "yra lyginis"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "yra neigiamas"; +Blockly.Msg["MATH_IS_ODD"] = "yra nelyginis"; +Blockly.Msg["MATH_IS_POSITIVE"] = "yra teigiamas"; +Blockly.Msg["MATH_IS_PRIME"] = "yra pirminis"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Patikrina skaičiaus savybę: (ne)lyginis/pirminis/sveikasis/teigiamas/neigiamas/dalus iš x."; +Blockly.Msg["MATH_IS_WHOLE"] = "yra sveikasis"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "dalybos liekana %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Grįžti likučiu nuo dviejų skaičių dalybos."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://lt.wikipedia.org/wiki/Skaičius"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Skaičius."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "vidurkis"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "didžiausia reikšmė sąraše"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana sąrašui"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mažiausia reikšmė sąraše"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "statistinė moda sąrašui"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "atsitiktinis elementas iš sąrašo"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standartinis nuokrypis sąraše"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Grįžti vidurkiu (aritmetinis vidurkis) iš skaitinių reikšmių sąraše."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Grįžti didžiausiu skaičiumi sąraše."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Grąžinti sąrašo medianą."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Grįžti mažiausiu skaičiumi sąraše."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Grąžinti sąrašą dažniausių elementų sąraše."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Grąžinti atsitiktinį elementą iš sąrašo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Grįžti standartine pakraipa iš sąrašo."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "didžiausia reikšmė"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "atsitiktinė trupmena"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Atsitiktinė trupmena nuo 0 (imtinai) iki 1 (neimtinai)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "atsitiktinis sveikas sk. nuo %1 iki %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Grįžti atsitiktinį sveikąjį skaičių tarp dviejų nustatytų ribų, imtinai."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://lt.wikipedia.org/wiki/Apvalinimas"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "apvalink"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "apvalink žemyn"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "apvalink aukštyn"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Suapvalinti skaičių į žemesnę ar aukštesnę reikšmę."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "modulis"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratinė šaknis"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Skaičiaus modulis - reikšmė be ženklo (panaikina minusą)."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Grąžinti skaičių laipsniu e."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Grąžinti skaičiaus natūrinį logaritmą."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Grįžti 10 pagrindinių logaritmų iš skaičiaus."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Grąžina skaičiui priešingą skaičių."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Grąžinti skaičių laipsniu 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Grįžti kvadratinę šaknį iš skaičiaus."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://lt.wikipedia.org/wiki/Trigonometrinės_funkcijos"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Grąžinti skaičiaus arkkosinusą."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Grąžinti skaičiaus arksinusą."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Grąžinti skaičiaus arktangentą."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Grąžinti laipsnio kosinusą (ne radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Grąžinti laipsnio sinusą (ne radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Grąžinti laipsnio tangentą (ne radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Sukurti spalvos kintamąjį..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Sukurti skaičiaus kintamąjį..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Sukurti kintamąjį"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Naujo kintamojo pavadinimas:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Naujas kintamojo tipas:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "leisti vidinius veiksmus"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "pagal:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Vykdyti sukurtą komandą \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Įvykdyti komandą \"%1\" ir naudoti jos suskaičiuotą (atiduotą) reikšmę."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "su:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Sukurti \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Apibūdinkite šią funkciją..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "daryk kažką"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "komanda:"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Sukuria procedūrą - komandą, kuri nepateikia jokio rezultato (tik atlieka veiksmus)."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "duok"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Sukuria funkciją - komandą, kuri ne tik atlieka veiksmus bet ir pateikia (grąžina/duoda) rezultatą."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ši komanda turi du vienodus gaunamų duomenų pavadinimus."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jeigu pirma reikšmė yra teisinga (sąlyga tenkinama), grąžina antrą reikšmę."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Perspėjimas: šis blokas gali būti naudojamas tik aprašant funkciją."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "parametro pavadinimas:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Pridėti funkcijos parametrą (gaunamų duomenų pavadinimą)."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "gaunami duomenys (parametrai)"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tvarkyti komandos gaunamus duomenis (parametrus)."; +Blockly.Msg["REDO"] = "Atkurti"; +Blockly.Msg["REMOVE_COMMENT"] = "Pašalinti komentarą"; +Blockly.Msg["RENAME_VARIABLE"] = "Pervardyti kintamajį..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Pervadinti visus '%1' kintamuosius į:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "prie %1 pridėk tekstą %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Pridėti tekstą prie kintamojo '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = " mažosiom raidėm"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = " Pavadinimo Raidėmis"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = " DIDŽIOSIOM RAIDĖM"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Kitu atvėju, grąžina teksto kopiją."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "gauti pirmą raidę"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "raidė nuo galo #"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "gauti raidę #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "gauti paskutinę raidę"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "gauti atsitiktinę raidę"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Grąžina raidę į tam tikrą poziciją."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "skaičius %1 iš %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Suskaičiuoti, kiek kartų šis tekstas kartojasi kitame tekste."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Pridėti teksto elementą."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sujunk"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "iki raidės nuo galo #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "iki raidės #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "iki pabaigos"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "tekste"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "dalis nuo pradžios"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "dalis nuo raidės #"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "dalis nuo raidės #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Grąžina tam tikrą teksto dalį."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "rask,kur pirmą kartą paminėta"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "rask,kur paskutinį kartą paminėta"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekste %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Grąžina pirmą/paskutinę pirmo teksto reikšmę antrame tekste. Grąžina %1, jei tekstas nerastas."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 yra tuščias"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Grįžti tiesa, jei numatytas tekstas tuščias."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "sukurti tekstą su"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Sukurti teksto fragmentą sujungiant bet kokį skaičių fragmentų."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "teksto %1 ilgis"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Suranda teksto simbolių kiekį (įskaitant ir tarpus)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "spausdinti %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Spausdinti nurodytą tekstą, skaičių ar kitą reikšmę."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prašyti vartotoją įvesti skaičių."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prašyti vartotoją įvesti tekstą."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "paprašyk įvesti skaičių :"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "paprašyk įvesti tekstą :"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "pakeisti %1 į %2 šiame %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Pašalinti visas teksto dalis kitame tekste."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "atbulai %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Apversti teksto simbolių tvarką."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Tekstas (arba žodis, ar raidė)"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "išvalyk tarpus šonuose"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "išvalyk tarpus pradžioje"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "išvalyk tarpus pabaigoje"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Grąžina teksto kopiją, pašalinus tarpus iš vieno ar abiejų kraštų."; +Blockly.Msg["TODAY"] = "Šiandien"; +Blockly.Msg["UNDO"] = "Anuliuoti"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "elementas"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Sukurk \"priskirk %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "priskirk %1 = %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Sukurti 'kintamasis %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Kintamasis, pavadinimu '%1', jau egzistuoja."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Kintamasis, pavadinimu '%1', jau egzistuoja kaip kitas tipas: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Kažką pasakykite..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/lv.js b/msg/js/lv.js index 80338ab2cc9..d65ff813fce 100644 --- a/msg/js/lv.js +++ b/msg/js/lv.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Pievienot komentāru"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nevar izdzēst mainīgo '%1', jo tā ir daļa no funkcijas '%2' definīcijas."; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Mainīt vērtību:"; -Blockly.Msg["CLEAN_UP"] = "Sakopt blokus"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Sakļautie bloki satur brīdinājumus."; -Blockly.Msg["COLLAPSE_ALL"] = "Sakļaut blokus"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Sakļaut bloku"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1. krāsa"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2. krāsa"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "attiecība"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "sajaukt"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sajauc kopā divas krāsas ar doto attiecību (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lv.wikipedia.org/wiki/Krāsa"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izvēlēties krāsu no paletes."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "nejauša krāsa"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Izvēlēties krāsu pēc nejaušības principa."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "zila"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "zaļa"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "sarkana"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "veido krāsu no"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Izveidot krāsu ar norādīto daudzumu sarkanā, zaļā un zilā toņu. Visas vērtības ir starp 0 un 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "iet ārā no cikla"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "turpināt ar cikla nākamo iterāciju"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Iet ārā no iekļaujošā cikla"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Nepildīt atlikušo cikla daļu bet sākt nākamo iterāciju."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Brīdinājums: šo bloku drīkst izmantot tikai cikla iekšienē."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "visiem %1 no saraksta %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Katram objektam no saraksta piešķirt mainīgajam '%1' šo objektu un izpildīt komandas."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "skaitīt %1 no %2 līdz %3 ar soli %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ļauj mainīgajam '%1' pieņemt vērtības no sākuma līdz beigu vērtībai, un izpildīt iekļautos blokus katrai no šīm pieņemtajām vērtībām."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Pievienot nosacījumu \"ja\" blokam."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Pievienot gala nosacījumu \"ja\" blokam."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Pievienot, noņemt vai mainīt sekciju secību šim \"ja\" blokam."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "citādi"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "citādi, ja"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ja"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ja vērtība ir patiesa, tad izpildīt komandas."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ja vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi izpildīt otro bloku ar komandām."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām. Ja neviena no vertībām nav patiesa, tad izpildīt pēdējo bloku ar komandām."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://lv.wikipedia.org/wiki/Cikls"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izpildi"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "atkārtot %1 reizes"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Izpildīt komandas vairākas reizes."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "atkārtot līdz"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "atkārtot kamēr"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Izpildīt komandas, kamēr vērtība ir nepatiesa."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Izpildīt komandas, kamēr vērtība ir patiesa."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Izdzēst visus %1 blokus?"; -Blockly.Msg["DELETE_BLOCK"] = "Izmest bloku"; -Blockly.Msg["DELETE_VARIABLE"] = "Izdzēst mainīgo \"%1\""; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Mainīgais \"%2\" tiek izmantots %1 vietās. Dzēst?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Izmest %1 blokus"; -Blockly.Msg["DIALOG_CANCEL"] = "Atcelt"; -Blockly.Msg["DIALOG_OK"] = "Labi"; -Blockly.Msg["DISABLE_BLOCK"] = "Atspējot bloku"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Dublēt"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Izveidot komentāra duplikātu"; -Blockly.Msg["ENABLE_BLOCK"] = "Iespējot bloku"; -Blockly.Msg["EXPAND_ALL"] = "Izvērst blokus"; -Blockly.Msg["EXPAND_BLOCK"] = "Izvērst bloku"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Ārējie ievaddati"; -Blockly.Msg["HELP"] = "Palīdzība"; -Blockly.Msg["INLINE_INPUTS"] = "Iekšējie ievaddati"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "izveidot tukšu sarakstu"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Izveidot sarakstu bez elementiem tajā."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "saraksts"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Pievienot, noņemt vai mainīt sekciju secību šim \"saraksta\" blokam."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "izveidot sarakstu no"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Pievienot objektu sarakstam."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Izveidot sarakstu no jebkura skaita vienību."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pirmo"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "no beigām numur"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "paņemt"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "paņemt uz dzēst"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "pēdējo"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "nejauši izvēlētu"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "dzēst"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Atgriež pirmo saraksta elementu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Atgriež norādīto elementu no saraksta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Atgriež pēdējo saraksta elementu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Atgriež nejauši izvēlētu saraksta elementu"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Atgriež un izdzēš saraksta pirmo elementu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Atgriež un izdzēš no saraksta norādīto elementu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Atgriež un izdzēš saraksta pēdējo elementu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Atgriež un izdzēš no saraksta nejauši izvēlētu elementu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Izdēš pirmo saraksta elementu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Izdēš norādīto elementu no saraksta."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Izdēš pēdējo saraksta elementu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Izdzēš no saraksta nejauši izvēlētu elementu."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "līdz pozīcijai no beigām"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "līdz pozīcijai"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "līdz beigām"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "paņemt apakšsarakstu no sākuma"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "paņemt apakšsarakstu no beigām no pozīcijas"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "paņemt apakšsarakstu no pozīcijas"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Nokopēt daļu no dotā saraksta."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Saraksta elementu numerācija no beigām sākas no %1"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Saraksta elementu numerācija sākas no %1"; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "atrast pirmo elementu, kas vienāds ar"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "atrast pēdējo elementu, kas vienāds ar"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Atgriež pozīciju sarakstā, kurā atrodas dotais objekts. Atgriež %1 ja objekts neatrodas sarakstā."; -Blockly.Msg["LISTS_INLIST"] = "sarakstā"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ir tukšs"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Patiess, ja saraksts ir tukšs."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 garums"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Atgriež elementu skaitu srakstā."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "saraksts no %1 atkārtots %2 reizes"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Izveido sarakstu, kas sastāv no dotās vērtības noteiktu reižu skaita."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "apgriezt otrādi %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Apgriezt otrādi saraksta kopiju"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kā"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ievieto"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "aizvieto"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ievieto elementu saraksta sākumā."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ievieto sarakstā elementu norādītajā pozīcijā."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Pievieno elementu saraksta beigās."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ievieto sarakstā jaunu elementu nejauši izvēlētā pozīcijā."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Aizvieto elementu saraksta sākumā."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Aizvieto sarakstā elementu norādītajā pozīcijā."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Aizvieto elementu saraksta beigās."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Aizvieto sarakstā elementu nejauši izvēlētā pozīcijā."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "augošā"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "dilstošā"; -Blockly.Msg["LISTS_SORT_TITLE"] = "Sakārtot sarakstu no %3 elementiem %2 secībā %1"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Saraksta sakārtota kopija."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "pēc alfabēta, ignorēt mazos/lielos burtus"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "skaitliski"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "pēc alfabēta"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "vārdu saraksts no teksta"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "izveidot tekstu no saraksta"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Apvienot tekstu izmantojot atdalītāju."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Sadalīt tekstu vārdos izmantojot atdalītāju."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ar atdalītāju"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "aplams"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Atgriež rezultātu \"patiess\" vai \"aplams\"."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "patiess"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Patiess, ja abas puses ir vienādas."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Patiess, ja kreisā puse ir lielāka par labo pusi."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Patiess, ja kreisā puse ir lielāka vai vienāda ar labo pusi."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Patiess, ja kreisā puse ir mazāka par labo pusi."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Patiess, ja kreisā puse ir mazāka vai vienāda ar labo pusi."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Patiess, ja abas puses nav vienādas."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Patiess, ja arguments ir aplams."; -Blockly.Msg["LOGIC_NULL"] = "nekas"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Atgriež neko."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "un"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "vai"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Patiess, ja abas puses ir patiesas."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Patiess, ja vismaz viena puse ir patiesa."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "nosacījums"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ja aplams"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ja patiess"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Pārbaudīt nosacījumu. Ja 'nosacījums' ir patiess, atgriež vērtību 'ja patiess', pretējā gadījumā vērtību 'ja aplams'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Atgriež divu skaitļu summu."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Atgriež divu skaitļu dalījumu."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Atgriež divu skaitļu starpību."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Atgriež divu skaitļu reizinājumu."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Atgriež pirmo skaitli kāpinātu pakāpē otrais skaitlis."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "ATAN2 no X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Atgriezt arktangensu punktam (X, Y) grādos no -180 līdz 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "izmainīt %1 par %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Pieskaitīt doto skaitli mainīgajam '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Atgriež kādu no matemātikas konstantēm: π (3.141…), e (2.718…), φ (1.618…), √(2) (1.414…), √(½) (0.707…), ∞ (bezgalība)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ierobežot %1 no %2 līdz %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ierobežo skaitli no noteiktajās robežās (ieskaitot galapunktus)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "dalās bez atlikuma ar"; -Blockly.Msg["MATH_IS_EVEN"] = "ir pāra"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "ir negatīvs"; -Blockly.Msg["MATH_IS_ODD"] = "ir nepāra"; -Blockly.Msg["MATH_IS_POSITIVE"] = "ir pozitīvs"; -Blockly.Msg["MATH_IS_PRIME"] = "ir pirmskaitlis"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Pārbauda, vai skaitlis ir pāra, nepāra, vesels, pozitīvs, negatīvs vai dalās ar noteiktu skaitli. Atgriež \"patiess\" vai \"aplams\"."; -Blockly.Msg["MATH_IS_WHOLE"] = "ir vesels"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "atlikums no %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Atlikums no divu skaitļu dalījuma."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://lv.wikipedia.org/wiki/Skaitlis"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Skaitlis."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "vidējais"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "lielākais"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediāna"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mazākais"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "nejaušs"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standartnovirze"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Atgriež dotā saraksta vidējo aritmētisko vērtību."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Atgriež lielāko vērtību no saraksta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Atgriež dotā saraksta mediānas vērtību."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Atgriež mazāko vērtību no saraksta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Atgriež dotā saraksta biežāk sastopamās vērtības (modas)."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Atgriež nejauši izvēlētu vērtību no dotā saraksta."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Atgriež dotā saraksta standartnovirzi."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Saskaitīt visus skaitļus no dotā saraksta."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "nejaušs skaitlis [0..1)"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Atgriež nejaušu reālo skaitli robežās no 0 (iekļaujot) līdz 1 (neiekļaujot)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "nejaušs vesels skaitlis no %1 līdz %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Atgriež nejaušu veselu skaitli dotajās robežās (iekļaujot galapunktus)"; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "noapaļot"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "apaļot uz leju"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "apaļot uz augšu"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Noapaļot skaitli uz augšu vai uz leju."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolūtā vērtība"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadrātsakne"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Atgriež skaitļa absolūto vērtību."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Atgriež e pakāpē dotais skaitlis."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Atgriež skaitļa naturālo logaritmu."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Atgriež skaitļa logaritmu pie bāzes 10."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Atgriež pretējo skaitli."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Atgriež 10 pakāpē dotais skaitlis."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Atgriež skaitļa kvadrātsakni."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Arkkosinuss (grādos)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Arksinuss (grādos)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Arktangenss (grādos)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kosinuss no grādiem (nevis radiāniem)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Sinuss no grādiem (nevis radiāniem)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Tangenss no grādiem (nevis radiāniem)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Izveidot krāsas mainīgo..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Izveidot skaitļa mainīgo..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Izveidot virknes mainīgo..."; -Blockly.Msg["NEW_VARIABLE"] = "Izveidot mainīgo..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Jaunā mainīgā vārds:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Jauns mainīgā tips:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "atļaut apakškomandas"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ar:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Izpildīt iepriekš definētu funkcju '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Izpildīt iepriekš definētu funkcju '%1' un izmantot tās rezultātu."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ar:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Izveidot '%1' izsaukumu"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Funkcijas apraksts..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "darīt kaut ko"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "funkcija"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Izveido funkciju, kas neatgriež rezultātu."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "atgriezt"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Izveido funkciju, kas atgriež rezultātu."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Brīdinājums: funkcijai ir vienādi argumenti."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Izcelt funkcijas definīciju"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ja pirmā vērtība ir \"patiesa\", tad atgriezt otro vērtību."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Brīdinājums: Šo bloku var izmantot tikai funkcijas definīcijā."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "arguments:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Pievienot funkcijai argumentu."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "argumenti"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Pievienot, pārkārtot vai dzēst funkcijas argumentus."; -Blockly.Msg["REDO"] = "Atcelt atsaukšanu"; -Blockly.Msg["REMOVE_COMMENT"] = "Noņemt komentāru"; -Blockly.Msg["RENAME_VARIABLE"] = "Pārdēvēt mainīgo..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Pārdēvējiet visus '%1' mainīgos:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "tekstam %1 pievienot tekstu %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Pievienot tekstu mainīgajam '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "kā mazie burti"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "kā Nosaukuma Burti"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "kā LIELIE BURTI"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Atgriež teksta kopiju ar mainītiem lielajiem/mazajiem burtiem."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "paņemt pirmo burtu"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "paņemt no beigām burtu #"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "paņemt burtu #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "paņemt pēdējo burtu"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "paņemt nejaušu burtu"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "tekstā %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Atgriež burtu dotajā pozīcijā."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "skaitīt %1 iekš %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Saskaitīt, cik reizes kāds teksts atrodas iekš kāda cita teksta."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Pievienot tekstam objektu."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "savienot"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Pievienot, noņemt vai mainīt sekciju secību šim \"teksta\" blokam."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "līdz burtam nr (no beigām)"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "līdz burtam nr"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "līdz pēdējam burtam"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no teksta"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "paņemt apakšvirkni no sākuma"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "paņemt apakšvirkni no beigām sākot ar burta nr"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "paņemt apakšvirkni sākot no burta nr"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Atgriež norādīto teksta daļu."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "meklēt pirmo vietu, kur sākas teksts"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "meklēt pēdējo vietu, kur sākas teksts"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekstā %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Meklē pirmā teksta rindu otrajā tekstā. Atgriež pozīciju otrajā tekstā, kurā sākas pirmais teksts. Atgriež %1 ja pirmā teksta rinda nav atrasta."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ir tukšs"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Patiess, ja teksts ir tukšs."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "veidot tekstu no"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Izveidot tekstu savienojot dotos argumentus."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "garums tekstam %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Atgriež burtu skaitu (ieskaitot atstarpes) dotajā tekstā."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "parādīt %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Parādīt norādīto tekstu vai skaitli."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Palūgt lietotāju ievadīt skaitli."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Palūgt lietotāju ievadīt tekstu."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "palūgt ievadīt skaitli ar ziņu"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "palūgt ievadīt tekstu ar ziņu"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "apmainīt %1 ar %2 iekš %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Apmainīt kāda teksta fragmentus citā tekstā."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "apgriezt otrādi %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Apgriež otrādi teksta rakstzīmju kārtu."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Burts, vārds vai jebkāda teksta rinda."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "Dzēst atstarpes no abām pusēm"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "Dzēst atstarpes no sākuma"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "Dzēst atstarpes no beigām"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Atgriež teksta kopiju ar noņemtām atstarpēm vienā vai otrā galā."; -Blockly.Msg["TODAY"] = "Šodiena"; -Blockly.Msg["UNDO"] = "Atsaukt"; -Blockly.Msg["UNNAMED_KEY"] = "nenosaukts"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "vienums"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Izveidot piešķiršanu mainīgajam %1"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Atgriež mainīgā vērtību."; -Blockly.Msg["VARIABLES_SET"] = "piešķirt mainīgajam %1 vērtību %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Izveidot 'ņem %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Piešķirt mainīgajam vērtību."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Mainīgais '%1' jau eksistē."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Mainīgais ar nosaukumu '%1' jau pastāv citam tipam: '%2'"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Darbavieta"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Saki kaut ko..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Pievienot komentāru"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nevar izdzēst mainīgo '%1', jo tā ir daļa no funkcijas '%2' definīcijas."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Mainīt vērtību:"; +Blockly.Msg["CLEAN_UP"] = "Sakopt blokus"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Sakļautie bloki satur brīdinājumus."; +Blockly.Msg["COLLAPSE_ALL"] = "Sakļaut blokus"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Sakļaut bloku"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1. krāsa"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2. krāsa"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "attiecība"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "sajaukt"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Sajauc kopā divas krāsas ar doto attiecību (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://lv.wikipedia.org/wiki/Krāsa"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izvēlēties krāsu no paletes."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "nejauša krāsa"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Izvēlēties krāsu pēc nejaušības principa."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "zila"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zaļa"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "sarkana"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "veido krāsu no"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Izveidot krāsu ar norādīto daudzumu sarkanā, zaļā un zilā toņu. Visas vērtības ir starp 0 un 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "iet ārā no cikla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "turpināt ar cikla nākamo iterāciju"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Iet ārā no iekļaujošā cikla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Nepildīt atlikušo cikla daļu bet sākt nākamo iterāciju."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Brīdinājums: šo bloku drīkst izmantot tikai cikla iekšienē."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "visiem %1 no saraksta %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Katram objektam no saraksta piešķirt mainīgajam '%1' šo objektu un izpildīt komandas."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "skaitīt %1 no %2 līdz %3 ar soli %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ļauj mainīgajam '%1' pieņemt vērtības no sākuma līdz beigu vērtībai, un izpildīt iekļautos blokus katrai no šīm pieņemtajām vērtībām."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Pievienot nosacījumu \"ja\" blokam."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Pievienot gala nosacījumu \"ja\" blokam."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Pievienot, noņemt vai mainīt sekciju secību šim \"ja\" blokam."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "citādi"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "citādi, ja"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ja"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ja vērtība ir patiesa, tad izpildīt komandas."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ja vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi izpildīt otro bloku ar komandām."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām. Ja neviena no vertībām nav patiesa, tad izpildīt pēdējo bloku ar komandām."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://lv.wikipedia.org/wiki/Cikls"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izpildi"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "atkārtot %1 reizes"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Izpildīt komandas vairākas reizes."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "atkārtot līdz"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "atkārtot kamēr"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Izpildīt komandas, kamēr vērtība ir nepatiesa."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Izpildīt komandas, kamēr vērtība ir patiesa."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Izdzēst visus %1 blokus?"; +Blockly.Msg["DELETE_BLOCK"] = "Izmest bloku"; +Blockly.Msg["DELETE_VARIABLE"] = "Izdzēst mainīgo \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Mainīgais \"%2\" tiek izmantots %1 vietās. Dzēst?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Izmest %1 blokus"; +Blockly.Msg["DIALOG_CANCEL"] = "Atcelt"; +Blockly.Msg["DIALOG_OK"] = "Labi"; +Blockly.Msg["DISABLE_BLOCK"] = "Atspējot bloku"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dublēt"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Izveidot komentāra duplikātu"; +Blockly.Msg["ENABLE_BLOCK"] = "Iespējot bloku"; +Blockly.Msg["EXPAND_ALL"] = "Izvērst blokus"; +Blockly.Msg["EXPAND_BLOCK"] = "Izvērst bloku"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Ārējie ievaddati"; +Blockly.Msg["HELP"] = "Palīdzība"; +Blockly.Msg["INLINE_INPUTS"] = "Iekšējie ievaddati"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "izveidot tukšu sarakstu"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Izveidot sarakstu bez elementiem tajā."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "saraksts"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Pievienot, noņemt vai mainīt sekciju secību šim \"saraksta\" blokam."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "izveidot sarakstu no"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Pievienot objektu sarakstam."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Izveidot sarakstu no jebkura skaita vienību."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pirmo"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "no beigām numur"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "paņemt"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "paņemt uz dzēst"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "pēdējo"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "nejauši izvēlētu"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "dzēst"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Atgriež pirmo saraksta elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Atgriež norādīto elementu no saraksta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Atgriež pēdējo saraksta elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Atgriež nejauši izvēlētu saraksta elementu"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Atgriež un izdzēš saraksta pirmo elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Atgriež un izdzēš no saraksta norādīto elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Atgriež un izdzēš saraksta pēdējo elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Atgriež un izdzēš no saraksta nejauši izvēlētu elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Izdēš pirmo saraksta elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Izdēš norādīto elementu no saraksta."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Izdēš pēdējo saraksta elementu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Izdzēš no saraksta nejauši izvēlētu elementu."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "līdz pozīcijai no beigām"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "līdz pozīcijai"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "līdz beigām"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "paņemt apakšsarakstu no sākuma"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "paņemt apakšsarakstu no beigām no pozīcijas"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "paņemt apakšsarakstu no pozīcijas"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Nokopēt daļu no dotā saraksta."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Saraksta elementu numerācija no beigām sākas no %1"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Saraksta elementu numerācija sākas no %1"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "atrast pirmo elementu, kas vienāds ar"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "atrast pēdējo elementu, kas vienāds ar"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Atgriež pozīciju sarakstā, kurā atrodas dotais objekts. Atgriež %1 ja objekts neatrodas sarakstā."; +Blockly.Msg["LISTS_INLIST"] = "sarakstā"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ir tukšs"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Patiess, ja saraksts ir tukšs."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 garums"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Atgriež elementu skaitu srakstā."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "saraksts no %1 atkārtots %2 reizes"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Izveido sarakstu, kas sastāv no dotās vērtības noteiktu reižu skaita."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "apgriezt otrādi %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Apgriezt otrādi saraksta kopiju"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kā"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ievieto"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "aizvieto"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ievieto elementu saraksta sākumā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ievieto sarakstā elementu norādītajā pozīcijā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Pievieno elementu saraksta beigās."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ievieto sarakstā jaunu elementu nejauši izvēlētā pozīcijā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Aizvieto elementu saraksta sākumā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Aizvieto sarakstā elementu norādītajā pozīcijā."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Aizvieto elementu saraksta beigās."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Aizvieto sarakstā elementu nejauši izvēlētā pozīcijā."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "augošā"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "dilstošā"; +Blockly.Msg["LISTS_SORT_TITLE"] = "Sakārtot sarakstu no %3 elementiem %2 secībā %1"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Saraksta sakārtota kopija."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "pēc alfabēta, ignorēt mazos/lielos burtus"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "skaitliski"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "pēc alfabēta"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "vārdu saraksts no teksta"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "izveidot tekstu no saraksta"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Apvienot tekstu izmantojot atdalītāju."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Sadalīt tekstu vārdos izmantojot atdalītāju."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ar atdalītāju"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "aplams"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Atgriež rezultātu \"patiess\" vai \"aplams\"."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "patiess"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Patiess, ja abas puses ir vienādas."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Patiess, ja kreisā puse ir lielāka par labo pusi."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Patiess, ja kreisā puse ir lielāka vai vienāda ar labo pusi."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Patiess, ja kreisā puse ir mazāka par labo pusi."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Patiess, ja kreisā puse ir mazāka vai vienāda ar labo pusi."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Patiess, ja abas puses nav vienādas."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Patiess, ja arguments ir aplams."; +Blockly.Msg["LOGIC_NULL"] = "nekas"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Atgriež neko."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "un"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "vai"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Patiess, ja abas puses ir patiesas."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Patiess, ja vismaz viena puse ir patiesa."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "nosacījums"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ja aplams"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ja patiess"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Pārbaudīt nosacījumu. Ja 'nosacījums' ir patiess, atgriež vērtību 'ja patiess', pretējā gadījumā vērtību 'ja aplams'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Atgriež divu skaitļu summu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Atgriež divu skaitļu dalījumu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Atgriež divu skaitļu starpību."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Atgriež divu skaitļu reizinājumu."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Atgriež pirmo skaitli kāpinātu pakāpē otrais skaitlis."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "ATAN2 no X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Atgriezt arktangensu punktam (X, Y) grādos no -180 līdz 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "izmainīt %1 par %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Pieskaitīt doto skaitli mainīgajam '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Atgriež kādu no matemātikas konstantēm: π (3.141…), e (2.718…), φ (1.618…), √(2) (1.414…), √(½) (0.707…), ∞ (bezgalība)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ierobežot %1 no %2 līdz %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ierobežo skaitli no noteiktajās robežās (ieskaitot galapunktus)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "dalās bez atlikuma ar"; +Blockly.Msg["MATH_IS_EVEN"] = "ir pāra"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ir negatīvs"; +Blockly.Msg["MATH_IS_ODD"] = "ir nepāra"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ir pozitīvs"; +Blockly.Msg["MATH_IS_PRIME"] = "ir pirmskaitlis"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Pārbauda, vai skaitlis ir pāra, nepāra, vesels, pozitīvs, negatīvs vai dalās ar noteiktu skaitli. Atgriež \"patiess\" vai \"aplams\"."; +Blockly.Msg["MATH_IS_WHOLE"] = "ir vesels"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "atlikums no %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Atlikums no divu skaitļu dalījuma."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://lv.wikipedia.org/wiki/Skaitlis"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Skaitlis."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "vidējais"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "lielākais"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediāna"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mazākais"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "nejaušs"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standartnovirze"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summa"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Atgriež dotā saraksta vidējo aritmētisko vērtību."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Atgriež lielāko vērtību no saraksta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Atgriež dotā saraksta mediānas vērtību."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Atgriež mazāko vērtību no saraksta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Atgriež dotā saraksta biežāk sastopamās vērtības (modas)."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Atgriež nejauši izvēlētu vērtību no dotā saraksta."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Atgriež dotā saraksta standartnovirzi."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Saskaitīt visus skaitļus no dotā saraksta."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "nejaušs skaitlis [0..1)"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Atgriež nejaušu reālo skaitli robežās no 0 (iekļaujot) līdz 1 (neiekļaujot)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "nejaušs vesels skaitlis no %1 līdz %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Atgriež nejaušu veselu skaitli dotajās robežās (iekļaujot galapunktus)"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "noapaļot"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "apaļot uz leju"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "apaļot uz augšu"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Noapaļot skaitli uz augšu vai uz leju."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolūtā vērtība"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadrātsakne"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Atgriež skaitļa absolūto vērtību."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Atgriež e pakāpē dotais skaitlis."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Atgriež skaitļa naturālo logaritmu."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Atgriež skaitļa logaritmu pie bāzes 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Atgriež pretējo skaitli."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Atgriež 10 pakāpē dotais skaitlis."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Atgriež skaitļa kvadrātsakni."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Arkkosinuss (grādos)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Arksinuss (grādos)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Arktangenss (grādos)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kosinuss no grādiem (nevis radiāniem)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Sinuss no grādiem (nevis radiāniem)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Tangenss no grādiem (nevis radiāniem)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Izveidot krāsas mainīgo..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Izveidot skaitļa mainīgo..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Izveidot virknes mainīgo..."; +Blockly.Msg["NEW_VARIABLE"] = "Izveidot mainīgo..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Jaunā mainīgā vārds:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Jauns mainīgā tips:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "atļaut apakškomandas"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ar:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Izpildīt iepriekš definētu funkcju '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Izpildīt iepriekš definētu funkcju '%1' un izmantot tās rezultātu."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ar:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Izveidot '%1' izsaukumu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Funkcijas apraksts..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "darīt kaut ko"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "funkcija"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Izveido funkciju, kas neatgriež rezultātu."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "atgriezt"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Izveido funkciju, kas atgriež rezultātu."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Brīdinājums: funkcijai ir vienādi argumenti."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Izcelt funkcijas definīciju"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ja pirmā vērtība ir \"patiesa\", tad atgriezt otro vērtību."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Brīdinājums: Šo bloku var izmantot tikai funkcijas definīcijā."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "arguments:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Pievienot funkcijai argumentu."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "argumenti"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Pievienot, pārkārtot vai dzēst funkcijas argumentus."; +Blockly.Msg["REDO"] = "Atcelt atsaukšanu"; +Blockly.Msg["REMOVE_COMMENT"] = "Noņemt komentāru"; +Blockly.Msg["RENAME_VARIABLE"] = "Pārdēvēt mainīgo..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Pārdēvējiet visus '%1' mainīgos:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "tekstam %1 pievienot tekstu %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Pievienot tekstu mainīgajam '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "kā mazie burti"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "kā Nosaukuma Burti"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "kā LIELIE BURTI"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Atgriež teksta kopiju ar mainītiem lielajiem/mazajiem burtiem."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "paņemt pirmo burtu"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "paņemt no beigām burtu #"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "paņemt burtu #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "paņemt pēdējo burtu"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "paņemt nejaušu burtu"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "tekstā %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Atgriež burtu dotajā pozīcijā."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "skaitīt %1 iekš %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Saskaitīt, cik reizes kāds teksts atrodas iekš kāda cita teksta."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Pievienot tekstam objektu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "savienot"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Pievienot, noņemt vai mainīt sekciju secību šim \"teksta\" blokam."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "līdz burtam nr (no beigām)"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "līdz burtam nr"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "līdz pēdējam burtam"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no teksta"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "paņemt apakšvirkni no sākuma"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "paņemt apakšvirkni no beigām sākot ar burta nr"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "paņemt apakšvirkni sākot no burta nr"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Atgriež norādīto teksta daļu."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "meklēt pirmo vietu, kur sākas teksts"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "meklēt pēdējo vietu, kur sākas teksts"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "tekstā %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Meklē pirmā teksta rindu otrajā tekstā. Atgriež pozīciju otrajā tekstā, kurā sākas pirmais teksts. Atgriež %1 ja pirmā teksta rinda nav atrasta."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ir tukšs"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Patiess, ja teksts ir tukšs."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "veidot tekstu no"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Izveidot tekstu savienojot dotos argumentus."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "garums tekstam %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Atgriež burtu skaitu (ieskaitot atstarpes) dotajā tekstā."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "parādīt %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Parādīt norādīto tekstu vai skaitli."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Palūgt lietotāju ievadīt skaitli."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Palūgt lietotāju ievadīt tekstu."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "palūgt ievadīt skaitli ar ziņu"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "palūgt ievadīt tekstu ar ziņu"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "apmainīt %1 ar %2 iekš %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Apmainīt kāda teksta fragmentus citā tekstā."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "apgriezt otrādi %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Apgriež otrādi teksta rakstzīmju kārtu."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Burts, vārds vai jebkāda teksta rinda."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "Dzēst atstarpes no abām pusēm"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "Dzēst atstarpes no sākuma"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "Dzēst atstarpes no beigām"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Atgriež teksta kopiju ar noņemtām atstarpēm vienā vai otrā galā."; +Blockly.Msg["TODAY"] = "Šodiena"; +Blockly.Msg["UNDO"] = "Atsaukt"; +Blockly.Msg["UNNAMED_KEY"] = "nenosaukts"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "vienums"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Izveidot piešķiršanu mainīgajam %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Atgriež mainīgā vērtību."; +Blockly.Msg["VARIABLES_SET"] = "piešķirt mainīgajam %1 vērtību %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Izveidot 'ņem %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Piešķirt mainīgajam vērtību."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Mainīgais '%1' jau eksistē."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Mainīgais ar nosaukumu '%1' jau pastāv citam tipam: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Darbavieta"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Saki kaut ko..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/mg.js b/msg/js/mg.js index 4a08e24bb58..5e17b0eedcc 100644 --- a/msg/js/mg.js +++ b/msg/js/mg.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Hanampy resaka"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Hanova sanda:"; -Blockly.Msg["CLEAN_UP"] = "Hanadio bilaoky"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "loko 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "loko 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "taha"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "afangaro"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "loko kisendra"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "manga"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "maitso"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "mena"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "raha tsy izany raha"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "raha tsy izany"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "raha"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "atao"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hamafa ny bilaoky %1 rehetra ?"; -Blockly.Msg["DELETE_BLOCK"] = "Hamafa bilaoky"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Hamafa bilaoky %1"; -Blockly.Msg["DIALOG_CANCEL"] = "Aoka ihany"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Hanajanona ny bilaoky"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Tahahana"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Handefa ny bilaoky"; -Blockly.Msg["EXPAND_ALL"] = "Hanitatra bilaoky"; -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "Iditra ivelany"; -Blockly.Msg["HELP"] = "Fanoroana"; -Blockly.Msg["INLINE_INPUTS"] = "Iditra an'andalana"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "diso"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "marina"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "tsy %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "foana"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Mamerina sanda foana"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "sady"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "na"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "andrana"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "raha diso"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "raha marina"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Laharana."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "lehibe indrindra amin'ny lisitra"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "kely indrindra amin'ny lisitra"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "tambatry ny lisitra"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "boriboriana"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "boriboriana amin'ny sanda ambany"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "boriboriana amin'ny sanda ambony"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Averina atao"; -Blockly.Msg["REMOVE_COMMENT"] = "Hanala resaka"; -Blockly.Msg["RENAME_VARIABLE"] = "Hanova anarana ny ova..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Androany"; -Blockly.Msg["UNDO"] = "Esorina"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Zavatra"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Hanampy resaka"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Hanova sanda:"; +Blockly.Msg["CLEAN_UP"] = "Hanadio bilaoky"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "loko 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "loko 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "taha"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "afangaro"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "loko kisendra"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "manga"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "maitso"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "mena"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "raha tsy izany raha"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "raha tsy izany"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "raha"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "atao"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hamafa ny bilaoky %1 rehetra ?"; +Blockly.Msg["DELETE_BLOCK"] = "Hamafa bilaoky"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Hamafa bilaoky %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Aoka ihany"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Hanajanona ny bilaoky"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Tahahana"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Handefa ny bilaoky"; +Blockly.Msg["EXPAND_ALL"] = "Hanitatra bilaoky"; +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "Iditra ivelany"; +Blockly.Msg["HELP"] = "Fanoroana"; +Blockly.Msg["INLINE_INPUTS"] = "Iditra an'andalana"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "diso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "marina"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "tsy %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "foana"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Mamerina sanda foana"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "sady"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "na"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "andrana"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "raha diso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "raha marina"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Laharana."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "lehibe indrindra amin'ny lisitra"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "kely indrindra amin'ny lisitra"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "tambatry ny lisitra"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "boriboriana"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "boriboriana amin'ny sanda ambany"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "boriboriana amin'ny sanda ambony"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Averina atao"; +Blockly.Msg["REMOVE_COMMENT"] = "Hanala resaka"; +Blockly.Msg["RENAME_VARIABLE"] = "Hanova anarana ny ova..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Androany"; +Blockly.Msg["UNDO"] = "Esorina"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Zavatra"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/mk.js b/msg/js/mk.js index cc3d90ac1bc..22cf723bcd7 100644 --- a/msg/js/mk.js +++ b/msg/js/mk.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Додај коментар:"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Променливата '%1' не може се избрише бидејќи е дел од определението на функцијата '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Смена на вредност:"; -Blockly.Msg["CLEAN_UP"] = "Исчисти блокови"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Собери блокови"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Собери блок"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "боја 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "боја 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "сооднос"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "смешај"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Меша две бои во даден сооднос (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://mk.wikipedia.org/wiki/Боја"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Изберете боја од палетата."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случајна боја"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Избери боја на тепка."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "сина"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "зелена"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "црвена"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "боја со"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Создајте боја со укажаните износи на црвена, зелена и сина. Сите вредности мора да бидат помеѓу 0 и 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "излези од јамката"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "продолжи со следното повторување на јамката"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Излези од содржечката јамка."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "за секој елемент %1 на списокот %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Му ја задава променливата „%1“ на секој елемент на списокот, а потоа исполнува наредби."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "број со %1 од %2 до %3 со %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Променливата „%1“ да ги земе вредностите од почетниот до завршниот број, броејќи според укажаниот интервал и ги исполнува укажаните блокови."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Додај услов кон „ако“ блокот."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Додава, отстранува или прередува делови за прераспоредување на овој блок „ако“."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "инаку"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "инаку ако"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ако"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ако вредноста е вистинита, исполни некои наредби."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://mk.wikipedia.org/wiki/For-јамка"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "исполни"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "повтори %1 пати"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Исполнува наредби неколку пати."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повторувај сè до"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повторувај додека"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Додека вредноста е невистинита, исполнува наредби."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Додека вредноста е вистинита, исполнува наредби."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Да ги избришам сите %1 блокчиња?"; -Blockly.Msg["DELETE_BLOCK"] = "Избриши блок"; -Blockly.Msg["DELETE_VARIABLE"] = "Избриши ја променливата \"%1\""; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Избриши %1 блока"; -Blockly.Msg["DIALOG_CANCEL"] = "Откажи"; -Blockly.Msg["DIALOG_OK"] = "ОК"; -Blockly.Msg["DISABLE_BLOCK"] = "Исклучи блок"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Ископирај"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Дуплирај коментар"; -Blockly.Msg["ENABLE_BLOCK"] = "Вклучи блок"; -Blockly.Msg["EXPAND_ALL"] = "Рашири блокови"; -Blockly.Msg["EXPAND_BLOCK"] = "Рашири го блокови"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Надворешен внос"; -Blockly.Msg["HELP"] = "Помош"; -Blockly.Msg["INLINE_INPUTS"] = "Внатрешен внос"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "создај празен список"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "список"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „список“."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "создај список со"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Додај ставка кон списокот."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "прв"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# од крајот"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последен"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "случаен"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "отстрани"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "во списокот"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 е празен"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "должина на %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "како"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вметни на"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "задај"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "подреди %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "невистина"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Дава или вистина или невистина."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "вистина"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://mk.wikipedia.org/wiki/Неравенство"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Дава вистина ако обата вноса се еднакви."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Дава вистина ако првиот внос е поголем од вториот."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Дава вистина ако првиот внос е поголем или еднаков на вториот."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Дава вистина ако првиот внос е помал од вториот."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Дава вистина ако првиот внос е помал или еднаков на вториот."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Дава вистина ако обата вноса не се еднакви."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Дава вистина ако вносот е невистинит. Дава невистина ако вносот е вистинит."; -Blockly.Msg["LOGIC_NULL"] = "ништо"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Дава ништо."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Дава вистина ако обата вноса се вистинити."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Дава вистина ако барем еден од вносовите е вистинит."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "испробај"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ако е невистинито"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ако е вистинито"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://mk.wikipedia.org/wiki/Аритметика"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter?uselang=mk"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "повиши %1 за %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ѝ додава број на променливата „%1“."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://mk.wikipedia.org/wiki/Математичка_константа"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Дава една од вообичаените константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконечност)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "е делив со"; -Blockly.Msg["MATH_IS_EVEN"] = "е парен"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "е негативен"; -Blockly.Msg["MATH_IS_ODD"] = "е непарен"; -Blockly.Msg["MATH_IS_POSITIVE"] = "е позитивен"; -Blockly.Msg["MATH_IS_PRIME"] = "е прост"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверува дали бројот е парен, непарен, прост, цел, позитивен, негативен или делив со некој број. Дава вистина или невистина."; -Blockly.Msg["MATH_IS_WHOLE"] = "е цел"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://mk.wikipedia.org/wiki/Број"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Број."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "просек на списокот"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "најголем на списокот"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медијана на списокот"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "најмал на списокот"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "модул на списокот"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случајна ставка од списокот"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "збир од списокот"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Дава просек (аритметичка средина) од броевите на списокот."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Го дава најголемиот број на списокот."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Дава медијана од броевите на списокот."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Го дава најмалиот број на списокот."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Дава список на најзастапен(и) елемент(и) на списокот."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Дава збир од сите броеви на списокот."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://mk.wikipedia.org/wiki/Заокружување"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "заокружи"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "заокружи на помало"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "заокружи на поголемо"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Го заокружува бројот на поголем или помал."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "апсолутна"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "корен квадратен"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ја дава апсолутната вредност на број."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Дава корен квадратен од број."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://mk.wikipediа.org/wiki/Тригонометриски_функции"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Создај променлива на низа..."; -Blockly.Msg["NEW_VARIABLE"] = "Создај променлива..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Назив на новата променлива:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Тип на новата променлива:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дозволи тврдења"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "со:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://mk.wikipedia.org/wiki/Потпрограма"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "со:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Создај го '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишете ја оваа функција..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "направиш"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "за да"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "назад"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Додај, отстрани или пренареди ги влезните параметри за оваа функција."; -Blockly.Msg["REDO"] = "Повтори"; -Blockly.Msg["REMOVE_COMMENT"] = "Отстрани коментар"; -Blockly.Msg["RENAME_VARIABLE"] = "Преименувај променлива..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Преименувај ги сите променливи „%1“ во:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "во текст %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "пресметка на %1 во %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Додај ставка кон текстот."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "поврзи"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „текст“."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "во текстот"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "во текст %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 е празен"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "создај текст со"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "должина на %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замени го %1 со %2 во %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Денес"; -Blockly.Msg["UNDO"] = "Откажи"; -Blockly.Msg["UNNAMED_KEY"] = "без име"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "елемент"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Создај „задавање на %1“"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "задај %1 на %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Променлива со име '%1' веќе постои."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Променлива со име '%1' веќе постои за друг тип: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Работен простор на Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Додај коментар:"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Променливата '%1' не може се избрише бидејќи е дел од определението на функцијата '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Смена на вредност:"; +Blockly.Msg["CLEAN_UP"] = "Исчисти блокови"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Собери блокови"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Собери блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "боја 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "боја 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "сооднос"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "смешај"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Меша две бои во даден сооднос (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://mk.wikipedia.org/wiki/Боја"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Изберете боја од палетата."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случајна боја"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Избери боја на тепка."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "сина"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелена"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "црвена"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "боја со"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Создајте боја со укажаните износи на црвена, зелена и сина. Сите вредности мора да бидат помеѓу 0 и 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "излези од јамката"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "продолжи со следното повторување на јамката"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Излези од содржечката јамка."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "за секој елемент %1 на списокот %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Му ја задава променливата „%1“ на секој елемент на списокот, а потоа исполнува наредби."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "број со %1 од %2 до %3 со %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Променливата „%1“ да ги земе вредностите од почетниот до завршниот број, броејќи според укажаниот интервал и ги исполнува укажаните блокови."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Додај услов кон „ако“ блокот."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Додава, отстранува или прередува делови за прераспоредување на овој блок „ако“."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "инаку"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "инаку ако"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ако"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ако вредноста е вистинита, исполни некои наредби."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://mk.wikipedia.org/wiki/For-јамка"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "исполни"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "повтори %1 пати"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Исполнува наредби неколку пати."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повторувај сè до"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повторувај додека"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Додека вредноста е невистинита, исполнува наредби."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Додека вредноста е вистинита, исполнува наредби."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Да ги избришам сите %1 блокчиња?"; +Blockly.Msg["DELETE_BLOCK"] = "Избриши блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Избриши ја променливата \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Избриши %1 блока"; +Blockly.Msg["DIALOG_CANCEL"] = "Откажи"; +Blockly.Msg["DIALOG_OK"] = "ОК"; +Blockly.Msg["DISABLE_BLOCK"] = "Исклучи блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Ископирај"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дуплирај коментар"; +Blockly.Msg["ENABLE_BLOCK"] = "Вклучи блок"; +Blockly.Msg["EXPAND_ALL"] = "Рашири блокови"; +Blockly.Msg["EXPAND_BLOCK"] = "Рашири го блокови"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Надворешен внос"; +Blockly.Msg["HELP"] = "Помош"; +Blockly.Msg["INLINE_INPUTS"] = "Внатрешен внос"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "создај празен список"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "список"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „список“."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "создај список со"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Додај ставка кон списокот."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "прв"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# од крајот"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последен"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "случаен"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "отстрани"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "во списокот"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 е празен"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "должина на %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "како"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вметни на"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "задај"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "подреди %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "невистина"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Дава или вистина или невистина."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "вистина"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://mk.wikipedia.org/wiki/Неравенство"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Дава вистина ако обата вноса се еднакви."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Дава вистина ако првиот внос е поголем од вториот."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Дава вистина ако првиот внос е поголем или еднаков на вториот."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Дава вистина ако првиот внос е помал од вториот."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Дава вистина ако првиот внос е помал или еднаков на вториот."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Дава вистина ако обата вноса не се еднакви."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Дава вистина ако вносот е невистинит. Дава невистина ако вносот е вистинит."; +Blockly.Msg["LOGIC_NULL"] = "ништо"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Дава ништо."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Дава вистина ако обата вноса се вистинити."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Дава вистина ако барем еден од вносовите е вистинит."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "испробај"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ако е невистинито"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ако е вистинито"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://mk.wikipedia.org/wiki/Аритметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter?uselang=mk"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "повиши %1 за %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Ѝ додава број на променливата „%1“."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://mk.wikipedia.org/wiki/Математичка_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Дава една од вообичаените константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконечност)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "е делив со"; +Blockly.Msg["MATH_IS_EVEN"] = "е парен"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "е негативен"; +Blockly.Msg["MATH_IS_ODD"] = "е непарен"; +Blockly.Msg["MATH_IS_POSITIVE"] = "е позитивен"; +Blockly.Msg["MATH_IS_PRIME"] = "е прост"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверува дали бројот е парен, непарен, прост, цел, позитивен, негативен или делив со некој број. Дава вистина или невистина."; +Blockly.Msg["MATH_IS_WHOLE"] = "е цел"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://mk.wikipedia.org/wiki/Број"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Број."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "просек на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "најголем на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медијана на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "најмал на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "модул на списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случајна ставка од списокот"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "збир од списокот"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Дава просек (аритметичка средина) од броевите на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Го дава најголемиот број на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Дава медијана од броевите на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Го дава најмалиот број на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Дава список на најзастапен(и) елемент(и) на списокот."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Дава збир од сите броеви на списокот."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://mk.wikipedia.org/wiki/Заокружување"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "заокружи"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "заокружи на помало"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "заокружи на поголемо"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Го заокружува бројот на поголем или помал."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "апсолутна"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "корен квадратен"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Ја дава апсолутната вредност на број."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Дава корен квадратен од број."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://mk.wikipediа.org/wiki/Тригонометриски_функции"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Создај променлива на низа..."; +Blockly.Msg["NEW_VARIABLE"] = "Создај променлива..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Назив на новата променлива:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Тип на новата променлива:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дозволи тврдења"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "со:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://mk.wikipedia.org/wiki/Потпрограма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "со:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Создај го '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишете ја оваа функција..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "направиш"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "за да"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "назад"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Додај, отстрани или пренареди ги влезните параметри за оваа функција."; +Blockly.Msg["REDO"] = "Повтори"; +Blockly.Msg["REMOVE_COMMENT"] = "Отстрани коментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Преименувај променлива..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Преименувај ги сите променливи „%1“ во:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "во текст %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "пресметка на %1 во %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Додај ставка кон текстот."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "поврзи"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „текст“."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "во текстот"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "во текст %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 е празен"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "создај текст со"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "должина на %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замени го %1 со %2 во %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Денес"; +Blockly.Msg["UNDO"] = "Откажи"; +Blockly.Msg["UNNAMED_KEY"] = "без име"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "елемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Создај „задавање на %1“"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "задај %1 на %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Променлива со име '%1' веќе постои."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Променлива со име '%1' веќе постои за друг тип: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Работен простор на Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ml.js b/msg/js/ml.js index 7ecb2cf2a45..83c18cdf9a2 100644 --- a/msg/js/ml.js +++ b/msg/js/ml.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "അഭിപ്രായം ചേർക്കുക"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ഒന്നാം നിറം"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "രണ്ടാം നിറം"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "അനുപാതം"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ക്രമരഹിത നിറം"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ക്രമരഹിതമായി ഒരു നിറം തിരഞ്ഞെടുക്കുക."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "നീല"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "പച്ച"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ചുവപ്പ്"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "കുരുക്കിന് പുറത്തുകടക്കുക"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 തവണ ആവർത്തിക്കുക"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ചില വരികൾ കൂടുതൽ തവണ ചെയ്യുക."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "ശരി"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "പകർപ്പ്"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "സഹായം"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "നിറം ചരം സൃഷ്ടിക്കുക..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ക്രമസംഖ്യ ചരം സൃഷ്ടിക്കുക..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "സ്ട്രിങ് ചരം സൃഷ്ടിക്കുക..."; -Blockly.Msg["NEW_VARIABLE"] = "ചരം സൃഷ്ടിക്കുക..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "പുതിയ ചരത്തിന്റെ പേര്:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "വീണ്ടും ചെയ്യുക"; -Blockly.Msg["REMOVE_COMMENT"] = "അഭിപ്രായം ഒഴിവാക്കുക"; -Blockly.Msg["RENAME_VARIABLE"] = "ചരത്തിന്റെ പേര് മാറ്റുക..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "ഇന്ന്"; -Blockly.Msg["UNDO"] = "തിരസ്കരിക്കുക"; -Blockly.Msg["UNNAMED_KEY"] = "പേരില്ലാത്തവ"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ഇനം"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "\"%1\" എന്ന പേരിലുള്ള ചരം നിലവിലുണ്ട്."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "അഭിപ്രായം ചേർക്കുക"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ഒന്നാം നിറം"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "രണ്ടാം നിറം"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "അനുപാതം"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ക്രമരഹിത നിറം"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ക്രമരഹിതമായി ഒരു നിറം തിരഞ്ഞെടുക്കുക."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "നീല"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "പച്ച"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ചുവപ്പ്"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "കുരുക്കിന് പുറത്തുകടക്കുക"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 തവണ ആവർത്തിക്കുക"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ചില വരികൾ കൂടുതൽ തവണ ചെയ്യുക."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "ശരി"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "പകർപ്പ്"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "സഹായം"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "നിറം ചരം സൃഷ്ടിക്കുക..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ക്രമസംഖ്യ ചരം സൃഷ്ടിക്കുക..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "സ്ട്രിങ് ചരം സൃഷ്ടിക്കുക..."; +Blockly.Msg["NEW_VARIABLE"] = "ചരം സൃഷ്ടിക്കുക..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "പുതിയ ചരത്തിന്റെ പേര്:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "വീണ്ടും ചെയ്യുക"; +Blockly.Msg["REMOVE_COMMENT"] = "അഭിപ്രായം ഒഴിവാക്കുക"; +Blockly.Msg["RENAME_VARIABLE"] = "ചരത്തിന്റെ പേര് മാറ്റുക..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ഇന്ന്"; +Blockly.Msg["UNDO"] = "തിരസ്കരിക്കുക"; +Blockly.Msg["UNNAMED_KEY"] = "പേരില്ലാത്തവ"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ഇനം"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "\"%1\" എന്ന പേരിലുള്ള ചരം നിലവിലുണ്ട്."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/mnw.js b/msg/js/mnw.js index a1f1fc78c2b..90004613790 100644 --- a/msg/js/mnw.js +++ b/msg/js/mnw.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "စုတ် လညာတ်"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "မပြံင်လှာဲ '%1' ဂှ် ဇိုတ်ပလီု ဟွံဂွံ၊ ဟိုတ်နူ ဍေဟ်ဂှ် ဆက်စပ်ဒၟံင် ကုဝှင်ရှေန် '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "သၠာဲ ဍာ်ဒကေဝ်"; -Blockly.Msg["CLEAN_UP"] = "ဖအး ဗလံက်"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ဖဍိုန်ဖ္ဍောတ် ဗလံက်ဂမၠိုင်"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ဖဍိုန်ဖ္ဍောတ် ဗလံက်"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "အသာ် ၁"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "အသာ် ၂"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ဗၞတ်ဗ္ၜတ်"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ပနှဴ"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ပနှဴ အသာ် ၜါ နကဵု ဗၞတ်ဗ္ၜတ် (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ရုဲကေတ် အသာ် မွဲ နူကဵု ဖလာတ်"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ဇျောမ်ကေတ် အသာ်"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ရုဲစှ်ကေတ် အသာ် မွဲ ပ္ဍဲ ဇဟောမ်"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "သာ်ဍီု"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "သာ်ၚေက်"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ဗကေတ်"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "နကဵု အသာ်"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ခၞံကၠောန်ကေတ် အသာ်တၟေင် အကြာ ဗကေတ်၊ သာ်ၚေက်၊ သာ်ဍီု၊၊ ဍာ်ဒကေဝ် သီုဖအိုတ် သ္ဒးဒှ် အကြာ ၀ ကဵု ၁၀၀၊၊"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ကၟာတ်ထောအ် loop"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ဆက်ကၠောန် နကဵု ပရေင်ချဳဒရာင်ဗွဲအပ္ဍဲ loop"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "သွက်ဇၟာပ် ဒကုတ် %1 ပ္ဍဲ စရင် %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "သွက်ဇၟာပ် ဒကုတ် ပ္ဍဲစရင်မွဲ မစုတ်လဝ် ပရေင်ပြံင်လှာဲ %1 သွက် ဒကုတ်၊ တုဲမ္ဂး ကၠောန်ပ တင်ဂရင်ဗ္တီ၊၊"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "ရိုဟ်လၟိဟ် %1 နူ %2 စဵုကဵု %3 နကဵု %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ကလိဂွံ ပရေင်အပြံင်အလှာဲ '%1'ဏအ် ကေတ် ဍာ်ဒကေဝ် နူကဵု လၟိဟ်ဂၞန်စ စဵုကဵု လၟိဟ်ဂၞန်အိုတ်၊ မရိုဟ်လၟိဟ် နကဵုဗၞတ်ဗ္ၜတ် ဗွဲတၟေင် တုဲ ကၠောန်ပ ဗလံက် ဗွဲတၟေင်၊၊"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ထပ်, ပတိတ်, ဟွံသေၚ် ကလေၚ်ဖျေံလၟေၚ် ရုဲစှ် သွက်ဂွံကလေၚ်ထမံက်ဣဏံ ယဝ်ရကၟာတ်မ္ဂး"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "မုနွံ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ယဝ်နွံမံၚ်ဏီ"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ယဝ်ရ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ပ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ထပ်ဂလိုင်ပတိုန် %1 နာဍဳ"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ကၠောန်ပတိတ် လလောင်တြး မဂၠိုင် ကုအလန်၊၊"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ထပ်ဂလိုင်ပတိုန် စဵုကဵု"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ထပ်ဂလိုင်ပတိုန် အခိင်"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ဍာ်ဒကေဝ် ဍေဟ် ဗၠေတ်၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ဍာ်ဒကေတ် ဍေဟ် ဒး၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "ဇိုတ်ပလီု %1 ဗလံက် သီုဖအိုတ်ဟာ?"; -Blockly.Msg["DELETE_BLOCK"] = "ဇိုတ်ပလီု ဗလံက်"; -Blockly.Msg["DELETE_VARIABLE"] = "ဇိုတ်ပလီု အပြံင်အလှာဲ '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "ဇိုတ်ပလီု %1 တုဲ ရပ်စပ် '%2' နဒဒှ်မပြံင်လှာဲဟာ?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "ဇိုတ်ပလီု %1 ဗလံက်ဂမၠိုင်"; -Blockly.Msg["DIALOG_CANCEL"] = "တးပဲါ"; -Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated -Blockly.Msg["DISABLE_BLOCK"] = "ပဟွံသၟဟ်အစောံ ဗလံက်"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ချာဲ"; -Blockly.Msg["DUPLICATE_COMMENT"] = "ချာဲ လညာတ်"; -Blockly.Msg["ENABLE_BLOCK"] = "ပသၟဟ်အစောံ ဗလံက်"; -Blockly.Msg["EXPAND_ALL"] = "ဗဇာပတိုန် ဗလံက်ဂမၠိုင်"; -Blockly.Msg["EXPAND_BLOCK"] = "ဗဇာပတိုန် ဗလံက်"; -Blockly.Msg["EXTERNAL_INPUTS"] = "မစုတ် ဗွဲမ္ၚး"; -Blockly.Msg["HELP"] = "ရီု"; -Blockly.Msg["INLINE_INPUTS"] = "မစုတ် ဗွဲအပ္ဍဲ"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ဗၠေတ်"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ကလေၚ် ဍာံလေဝ်ဟွံသေၚ် ဗၠောတ်လေဝ်ဟွံသေၚ်"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ဍာံ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/ဟွံညဳသၟဟ်_(သၚ်္ချာဂမၠိုၚ်)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ဟွံသေၚ် %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ကလေၚ်မဍာံတေံ ယဝ်ရတၚ်စုတ်ဏံဗၠေတ်မ္ဂး. ကလေၚ်မဗၠောတ်တေံ ယဝ်ရတၚ်စုတ်ဏံဒးမ္ဂး"; -Blockly.Msg["LOGIC_NULL"] = "ကၠိခန်"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ကလေၚ်ဟွံလုပ်အဝေါၚ်"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ကေုာံ"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ဟွံသေင်မ္ဂး"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "စမ်ၜတ်"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ယဝ်ဗၠေတ်"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ယဝ်ဍာံ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "မဂၞန်မွဲ"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ဍာံဍာံ"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် အသာ်..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် လၟိဟ်ဂၞန်..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "အဃောမပြံင်လှာဲကၠောန်ဒၟံင် လၟေင်..."; -Blockly.Msg["NEW_VARIABLE"] = "အဃောမပြံင်လှာဲဒၟံင်..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ယၟု မပြံင်လှာဲလဝ် တၟိ -"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ဗီုပြင် မပြံင်လှာဲလဝ် တၟိ -"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ကလေင်ပ"; -Blockly.Msg["REMOVE_COMMENT"] = "ပဲါပ္တိတ် လညာတ်"; -Blockly.Msg["RENAME_VARIABLE"] = "ကလေင်ကဵုယၟု မပြံင်လှာဲ..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "'%1' သီုဖအိုတ်ဂှ် ကဵုယၟုတၟိ ပြံင်လှာဲထောအ်:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "တ္ၚဲဏအ်"; -Blockly.Msg["UNDO"] = "ဟွံပ"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ဒကုတ်"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ၊၊"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ နကဵုဗီုပြင်တၞဟ် - '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "စုတ် လညာတ်"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "မပြံင်လှာဲ '%1' ဂှ် ဇိုတ်ပလီု ဟွံဂွံ၊ ဟိုတ်နူ ဍေဟ်ဂှ် ဆက်စပ်ဒၟံင် ကုဝှင်ရှေန် '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "သၠာဲ ဍာ်ဒကေဝ်"; +Blockly.Msg["CLEAN_UP"] = "ဖအး ဗလံက်"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ဖဍိုန်ဖ္ဍောတ် ဗလံက်ဂမၠိုင်"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ဖဍိုန်ဖ္ဍောတ် ဗလံက်"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "အသာ် ၁"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "အသာ် ၂"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ဗၞတ်ဗ္ၜတ်"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ပနှဴ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ပနှဴ အသာ် ၜါ နကဵု ဗၞတ်ဗ္ၜတ် (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ရုဲကေတ် အသာ် မွဲ နူကဵု ဖလာတ်"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ဇျောမ်ကေတ် အသာ်"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ရုဲစှ်ကေတ် အသာ် မွဲ ပ္ဍဲ ဇဟောမ်"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "သာ်ဍီု"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "သာ်ၚေက်"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ဗကေတ်"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "နကဵု အသာ်"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ခၞံကၠောန်ကေတ် အသာ်တၟေင် အကြာ ဗကေတ်၊ သာ်ၚေက်၊ သာ်ဍီု၊၊ ဍာ်ဒကေဝ် သီုဖအိုတ် သ္ဒးဒှ် အကြာ ၀ ကဵု ၁၀၀၊၊"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ကၟာတ်ထောအ် loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ဆက်ကၠောန် နကဵု ပရေင်ချဳဒရာင်ဗွဲအပ္ဍဲ loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "သွက်ဇၟာပ် ဒကုတ် %1 ပ္ဍဲ စရင် %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "သွက်ဇၟာပ် ဒကုတ် ပ္ဍဲစရင်မွဲ မစုတ်လဝ် ပရေင်ပြံင်လှာဲ %1 သွက် ဒကုတ်၊ တုဲမ္ဂး ကၠောန်ပ တင်ဂရင်ဗ္တီ၊၊"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "ရိုဟ်လၟိဟ် %1 နူ %2 စဵုကဵု %3 နကဵု %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ကလိဂွံ ပရေင်အပြံင်အလှာဲ '%1'ဏအ် ကေတ် ဍာ်ဒကေဝ် နူကဵု လၟိဟ်ဂၞန်စ စဵုကဵု လၟိဟ်ဂၞန်အိုတ်၊ မရိုဟ်လၟိဟ် နကဵုဗၞတ်ဗ္ၜတ် ဗွဲတၟေင် တုဲ ကၠောန်ပ ဗလံက် ဗွဲတၟေင်၊၊"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ထပ်, ပတိတ်, ဟွံသေၚ် ကလေၚ်ဖျေံလၟေၚ် ရုဲစှ် သွက်ဂွံကလေၚ်ထမံက်ဣဏံ ယဝ်ရကၟာတ်မ္ဂး"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "မုနွံ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ယဝ်နွံမံၚ်ဏီ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ယဝ်ရ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ပ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ထပ်ဂလိုင်ပတိုန် %1 နာဍဳ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ကၠောန်ပတိတ် လလောင်တြး မဂၠိုင် ကုအလန်၊၊"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ထပ်ဂလိုင်ပတိုန် စဵုကဵု"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ထပ်ဂလိုင်ပတိုန် အခိင်"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ဍာ်ဒကေဝ် ဍေဟ် ဗၠေတ်၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ဍာ်ဒကေတ် ဍေဟ် ဒး၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ဇိုတ်ပလီု %1 ဗလံက် သီုဖအိုတ်ဟာ?"; +Blockly.Msg["DELETE_BLOCK"] = "ဇိုတ်ပလီု ဗလံက်"; +Blockly.Msg["DELETE_VARIABLE"] = "ဇိုတ်ပလီု အပြံင်အလှာဲ '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "ဇိုတ်ပလီု %1 တုဲ ရပ်စပ် '%2' နဒဒှ်မပြံင်လှာဲဟာ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "ဇိုတ်ပလီု %1 ဗလံက်ဂမၠိုင်"; +Blockly.Msg["DIALOG_CANCEL"] = "တးပဲါ"; +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ပဟွံသၟဟ်အစောံ ဗလံက်"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ချာဲ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ချာဲ လညာတ်"; +Blockly.Msg["ENABLE_BLOCK"] = "ပသၟဟ်အစောံ ဗလံက်"; +Blockly.Msg["EXPAND_ALL"] = "ဗဇာပတိုန် ဗလံက်ဂမၠိုင်"; +Blockly.Msg["EXPAND_BLOCK"] = "ဗဇာပတိုန် ဗလံက်"; +Blockly.Msg["EXTERNAL_INPUTS"] = "မစုတ် ဗွဲမ္ၚး"; +Blockly.Msg["HELP"] = "ရီု"; +Blockly.Msg["INLINE_INPUTS"] = "မစုတ် ဗွဲအပ္ဍဲ"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ဗၠေတ်"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ကလေၚ် ဍာံလေဝ်ဟွံသေၚ် ဗၠောတ်လေဝ်ဟွံသေၚ်"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ဍာံ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/ဟွံညဳသၟဟ်_(သၚ်္ချာဂမၠိုၚ်)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ဟွံသေၚ် %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ကလေၚ်မဍာံတေံ ယဝ်ရတၚ်စုတ်ဏံဗၠေတ်မ္ဂး. ကလေၚ်မဗၠောတ်တေံ ယဝ်ရတၚ်စုတ်ဏံဒးမ္ဂး"; +Blockly.Msg["LOGIC_NULL"] = "ကၠိခန်"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ကလေၚ်ဟွံလုပ်အဝေါၚ်"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ကေုာံ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ဟွံသေင်မ္ဂး"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "စမ်ၜတ်"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ယဝ်ဗၠေတ်"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ယဝ်ဍာံ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "မဂၞန်မွဲ"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ဍာံဍာံ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် အသာ်..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် လၟိဟ်ဂၞန်..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "အဃောမပြံင်လှာဲကၠောန်ဒၟံင် လၟေင်..."; +Blockly.Msg["NEW_VARIABLE"] = "အဃောမပြံင်လှာဲဒၟံင်..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ယၟု မပြံင်လှာဲလဝ် တၟိ -"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ဗီုပြင် မပြံင်လှာဲလဝ် တၟိ -"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ကလေင်ပ"; +Blockly.Msg["REMOVE_COMMENT"] = "ပဲါပ္တိတ် လညာတ်"; +Blockly.Msg["RENAME_VARIABLE"] = "ကလေင်ကဵုယၟု မပြံင်လှာဲ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "'%1' သီုဖအိုတ်ဂှ် ကဵုယၟုတၟိ ပြံင်လှာဲထောအ်:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "တ္ၚဲဏအ်"; +Blockly.Msg["UNDO"] = "ဟွံပ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ဒကုတ်"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ၊၊"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ နကဵုဗီုပြင်တၞဟ် - '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ms.js b/msg/js/ms.js index 5ef7ecd5357..1307c8116ad 100644 --- a/msg/js/ms.js +++ b/msg/js/ms.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Berikan Komen"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ubah nilai:"; -Blockly.Msg["CLEAN_UP"] = "Kemaskan Blok"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Lipat Blok²"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Lipat Blok"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "warna 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "warna 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "nisbah"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "adun"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Campurkan dua warna sekali pada nisbah yang ditentukan (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ms.wikipedia.org/wiki/Warna"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Pilih satu warna daripada palet."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "warna rawak"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Pilih satu warna secara rawak."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "biru"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "hijau"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "merah"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "warnakan"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Peroleh satu warna dengan menentukan amaun campuran merah, hijau dan biru. Kesemua nilai haruslah antara 0 hingga 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "hentikan gelung"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "teruskan dengan lelaran gelung seterusnya"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Keluar dari gelung pengandung."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Langkau seluruh gelung yang tinggal dan bersambung dengan lelaran seterusnya."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Amaran: Blok ini hanya boleh digunakan dalam satu gelung."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "untuk setiap perkara %1 dalam senarai %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Untuk setiap perkara dalam senarai, tetapkan pembolehubah '%1' pada perkara, kemudian lakukan beberapa perintah."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "kira dengan %1 dari %2 hingga %3 selang %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Gunakan pembolehubah '%1' pada nilai-nilai dari nombor pangkal hingga nombor hujung, mengira mengikut selang yang ditentukan, dan lakukan blok-blok yang tertentu."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tambah satu syarat kepada blok jika."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tambah yang terakhir, alihkan semua keadaan ke blok jika."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula blok jika."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "lain"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "lain jika"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jika"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jika nilai yang benar, lakukan beberapa penyata."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jika suatu nilai benar, lakukan penyata blok pertama. Jika tidak, bina penyata blok kedua."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jika nilai yang pertama adalah benar, lakukan penyata pertama blok. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jika nilai yang pertama adalah benar, lakukan penyata blok pertama. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua. Jika tiada nilai adalah benar, lakukan penyata blok terakhir."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "lakukan"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulang %1 kali"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Lakukan perintah berulang kali."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulangi sehingga"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ulangi apabila"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Lakukan beberapa perintah apabila nilainya palsu (false)."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Lakukan beberapa perintah apabila nilainya benar (true)."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hapuskan kesemua %1 blok?"; -Blockly.Msg["DELETE_BLOCK"] = "Hapuskan Blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Hapuskan %1 Blok"; -Blockly.Msg["DIALOG_CANCEL"] = "Batalkan"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Matikan Blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Pendua"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Hidupkan Blok"; -Blockly.Msg["EXPAND_ALL"] = "Buka Blok²"; -Blockly.Msg["EXPAND_BLOCK"] = "Buka Blok"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Input Luaran"; -Blockly.Msg["HELP"] = "Bantuan"; -Blockly.Msg["INLINE_INPUTS"] = "Input Sebaris"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Wujudkan senarai kosong"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Kembalikan senarai panjang 0, yang tidak mengandungi rekod data"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "senarai"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula senarai blok."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "wujudkan senarai dengan"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tambah item ke dalam senarai."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Wujudkan senarai dengan apa jua nombor item."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pertama"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dari akhir"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "dapatkan"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "dapat dan alihkan"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "terakhir"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "rawak"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "alihkan"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Kembalikan item pertama dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Kembalikan item dalam kedudukan yang ditetapkan dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Kembalikan item pertama dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Kembalikan item rawak dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Alihkan dan kembalikan item pertama dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Alihkan dan kembalikan item mengikut spesifikasi posisi dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Alihkan dan kembalikan item terakhir dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Alihkan dan kembalikan item rawak dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Alihkan item pertama dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Alihkan item pada posisi mengikut spesifikasi dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Alihkan item terakhir dalam senarai."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Alihkan item rawak dalam senarai."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ke # dari akhir"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ke #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ke akhir"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "dapatkan sub-senarai daripada pertama"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "dapatkan sub-senarai daripada # daripada terakhir"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "dapatkan sub-senarai daripada #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Wujudkan salinan bahagian yang ditentukan dari senarai."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ialah item terakhir."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ialah item pertama."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "cari pertama item kejadian"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "cari kejadian akhir item"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Menyatakan indeks kejadian pertama/terakhir item berkenaan dalam senarai. Menyatakan %1 jika item berkenaan tidak ditemui."; -Blockly.Msg["LISTS_INLIST"] = "dalam senarai"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 adalah kosong"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika senarai kosong."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "panjang %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Kembalikan panjang senarai"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "wujudkan senarai dengan item %1 diulangi %2 kali"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Wujudkan senarai yang terdiri daripada nilai berulang mengikut nombor yang ditentukan."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sebagai"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "masukkan pada"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Selit item pada permulaan senarai."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Masukkan item pada posisi yand ditentukan dalam senarai."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Tambahkan item dalam senarai akhir."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Selit item secara rawak di dalam senarai."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Set item pertama dalam senarai."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Masukkan item pada posisi yang ditentukan dalam senarai."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Set item terakhir dalam senarai."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Set item rawak dalam senarai."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "buat senarai dgn teks"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "buat teks drpd senarai"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Cantumkan senarai teks menjadi satu teks, dipecahkan oleh delimiter."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Pecahkan teks kepada senarai teks, berpecah di setiap delimiter."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "dengan delimiter"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "palsu"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Kembalikan samada benar atau palsu."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "benar"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://id.wikipedia.org/wiki/Pertidaksamaan"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Kembali benar jika kedua-dua input benar antara satu sama lain."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Kembali benar jika input pertama adalah lebih besar daripada input kedua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Kembali benar jika input pertama adalah lebih besar daripada atau sama dengan input kedua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Kembali benar jika input pertama adalah lebih kecil daripada input kedua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Kembali benar jika input pertama adalah lebih kecil daripada atau sama dengan input kedua."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Taip balik benar jika kedua-dua input tidak sama."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "bukan %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "'Benar' akan dibalas jika inputnya salah. 'Salah' akan dibalas jika inputnya benar."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "dan"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "atau"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "Jika palsu"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "Jika benar"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ms.wikipedia.org/wiki/Aritmetik"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Kembalikan jumlah kedua-dua bilangan."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Taip balik hasil bahagi dua nombor tersebut."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Taip balik hasil tolak dua nombor tersebut."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Taip balik hasil darab dua nombor tersebut."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://id.wikipedia.org/wiki/Perjumlahan"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "perubahan %1 oleh %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Tambah nombor kepada pembolehubah '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ms.wikipedia.org/wiki/Pemalar_matematik"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "Boleh dibahagikan dengan"; -Blockly.Msg["MATH_IS_EVEN"] = "Adalah genap"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "negatif"; -Blockly.Msg["MATH_IS_ODD"] = "aneh"; -Blockly.Msg["MATH_IS_POSITIVE"] = "adalah positif"; -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://id.wikipedia.org/wiki/Operasi_modulus"; -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Taip balik baki yang didapat daripada pembahagian dua nombor tersebut."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ms.wikipedia.org/wiki/Nombor"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Suatu nombor."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "purata daripada senarai"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Max senarai"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Median senarai"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min dalam senarai"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "jenis senarai"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Item rawak daripada senarai"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "sisihan piawai bagi senarai"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Jumlah senarai"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Kembalikan purata (min aritmetik) nilai-nilai angka di dalam senarai."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Pulangkan jumlah terbesar dalam senarai."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Kembalikan nombor median dalam senarai."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Kembalikan nombor terkecil dalam senarai."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Kembali senarai item yang paling biasa dalam senarai."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Kembalikan elemen rawak daripada senarai."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Kembali dengan sisihan piawai daripada senarai."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Kembalikan jumlah semua nombor dalam senarai."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "pecahan rawak"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Kembali sebahagian kecil rawak antara 0.0 (inklusif) dan 1.0 (eksklusif)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "integer rawak dari %1ke %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Kembalikan integer rawak diantara dua had yang ditentukan, inklusif."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "pusingan"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Pusingan ke bawah"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "pusingan ke atas"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Bulat nombor yang naik atau turun."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ms.wikipedia.org/wiki/Punca_kuasa_dua"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "mutlak"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Punca kuasa dua"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Kembalikan nilai mutlak suatu nombor."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Kembalikan e kepada kuasa nombor."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Kembali dalam logaritma nombor asli."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Kembali logarithm 10 asas nombor."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Kembalikan nombor yang songsang."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Kembalikan 10 kepada kuasa nombor."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Kembalikan punca kuasa nombor."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ms.wikipedia.org/wiki/Fungsi_trigonometri"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Kembali arccosine beberapa nombor."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Kembalikan arcsince beberapa nombor."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Kembalikan beberapa nombor arctangent."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kembalikan darjah kosinus (bukan radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Kembalikan darjah sine (bukan radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Kembalikan darjah tangen (bukan radian)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Pembolehubah baru..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nama pembolehubah baru:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "bolehkan kenyataan"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "dengan:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ms.wikipedia.org/wiki/Fungsi"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ms.wikipedia.org/wiki/Fungsi"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "dengan:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Hasilkan '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Terangkan fungsi ini..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Buat sesuatu"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "Untuk"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Menghasilkan suatu fungsi tanpa output."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "kembali"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Mencipta satu fungsi dengan pengeluaran."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Amaran: Fungsi ini mempunyai parameter yang berganda."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Serlahkan definisi fungsi"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Amaran: Blok ini hanya boleh digunakan dalam fungsi definisi."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Nama input:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tambah satu input pada fungsi."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Input-input"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tambah, alih keluar atau susun semula input pada fungsi ini."; -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Padamkan Komen"; -Blockly.Msg["RENAME_VARIABLE"] = "Tukar nama pembolehubah..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tukar nama semua pembolehubah '%1' kepada:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "Kepada huruf kecil"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "Kepada HURUF BESAR"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "Dapatkan abjad terakhir"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "Dapatkan abjad rawak"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "Sertai"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "untuk huruf terakhir"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "dalam teks"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "mencari kejadian pertama teks"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "mencari kejadian terakhir teks"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "dalam teks %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Kembalikan Indeks kejadian pertama/terakhir dari teks pertama ke dalam teks kedua. Kembalikan %1 Jika teks tidak ditemui."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 adalah kosong"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika teks yang disediakan adalah kosong."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "hasilkan teks dengan"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Hasilkan sebahagian teks dengan menghubungkan apa jua nombor item."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "panjang %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Kembalikan jumlah huruf (termasuk ruang) dalam teks yang disediakan."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "cetak %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Cetak teks yang ditentukan, nombor atau nilai lain."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Peringatan kepada pengguna untuk nombor."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Peringatkan pengguna untuk sebahagian teks."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Prom untuk nombor dengan mesej"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Prom untuk teks dengan mesej"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ms.wikipedia.org/wiki/Rentetan"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Huruf, perkataan, atau baris teks."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "mengurangkan kawasan dari kedua-dua belah"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "mengurangkan ruang dari sebelah kiri"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "mengurangkan kawasan dari sisi kanan"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Kembali salinan teks dengan ruang yang dikeluarkan daripada satu atau hujung kedua belah."; -Blockly.Msg["TODAY"] = "Hari ini"; -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Perkara"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Hasilkan 'set %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Kembalikan nilai pemboleh ubah ini."; -Blockly.Msg["VARIABLES_SET"] = "set %1 ke %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Hasilkan 'set %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Set pembolehubah ini supaya sama dengan input."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Berikan Komen"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ubah nilai:"; +Blockly.Msg["CLEAN_UP"] = "Kemaskan Blok"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Lipat Blok²"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Lipat Blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "warna 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "warna 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "nisbah"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "adun"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Campurkan dua warna sekali pada nisbah yang ditentukan (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ms.wikipedia.org/wiki/Warna"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Pilih satu warna daripada palet."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "warna rawak"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Pilih satu warna secara rawak."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "biru"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "hijau"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "merah"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "warnakan"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Peroleh satu warna dengan menentukan amaun campuran merah, hijau dan biru. Kesemua nilai haruslah antara 0 hingga 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "hentikan gelung"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "teruskan dengan lelaran gelung seterusnya"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Keluar dari gelung pengandung."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Langkau seluruh gelung yang tinggal dan bersambung dengan lelaran seterusnya."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Amaran: Blok ini hanya boleh digunakan dalam satu gelung."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "untuk setiap perkara %1 dalam senarai %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Untuk setiap perkara dalam senarai, tetapkan pembolehubah '%1' pada perkara, kemudian lakukan beberapa perintah."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "kira dengan %1 dari %2 hingga %3 selang %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Gunakan pembolehubah '%1' pada nilai-nilai dari nombor pangkal hingga nombor hujung, mengira mengikut selang yang ditentukan, dan lakukan blok-blok yang tertentu."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Tambah satu syarat kepada blok jika."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Tambah yang terakhir, alihkan semua keadaan ke blok jika."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula blok jika."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "lain"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "lain jika"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jika"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jika nilai yang benar, lakukan beberapa penyata."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jika suatu nilai benar, lakukan penyata blok pertama. Jika tidak, bina penyata blok kedua."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jika nilai yang pertama adalah benar, lakukan penyata pertama blok. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jika nilai yang pertama adalah benar, lakukan penyata blok pertama. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua. Jika tiada nilai adalah benar, lakukan penyata blok terakhir."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "lakukan"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulang %1 kali"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Lakukan perintah berulang kali."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulangi sehingga"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ulangi apabila"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Lakukan beberapa perintah apabila nilainya palsu (false)."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Lakukan beberapa perintah apabila nilainya benar (true)."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hapuskan kesemua %1 blok?"; +Blockly.Msg["DELETE_BLOCK"] = "Hapuskan Blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Hapuskan %1 Blok"; +Blockly.Msg["DIALOG_CANCEL"] = "Batalkan"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Matikan Blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Pendua"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Hidupkan Blok"; +Blockly.Msg["EXPAND_ALL"] = "Buka Blok²"; +Blockly.Msg["EXPAND_BLOCK"] = "Buka Blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Input Luaran"; +Blockly.Msg["HELP"] = "Bantuan"; +Blockly.Msg["INLINE_INPUTS"] = "Input Sebaris"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Wujudkan senarai kosong"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Kembalikan senarai panjang 0, yang tidak mengandungi rekod data"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "senarai"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula senarai blok."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "wujudkan senarai dengan"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tambah item ke dalam senarai."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Wujudkan senarai dengan apa jua nombor item."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pertama"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dari akhir"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "dapatkan"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "dapat dan alihkan"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "terakhir"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "rawak"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "alihkan"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Kembalikan item pertama dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Kembalikan item dalam kedudukan yang ditetapkan dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Kembalikan item pertama dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Kembalikan item rawak dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Alihkan dan kembalikan item pertama dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Alihkan dan kembalikan item mengikut spesifikasi posisi dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Alihkan dan kembalikan item terakhir dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Alihkan dan kembalikan item rawak dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Alihkan item pertama dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Alihkan item pada posisi mengikut spesifikasi dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Alihkan item terakhir dalam senarai."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Alihkan item rawak dalam senarai."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ke # dari akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ke #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ke akhir"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "dapatkan sub-senarai daripada pertama"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "dapatkan sub-senarai daripada # daripada terakhir"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "dapatkan sub-senarai daripada #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Wujudkan salinan bahagian yang ditentukan dari senarai."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ialah item terakhir."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ialah item pertama."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "cari pertama item kejadian"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "cari kejadian akhir item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Menyatakan indeks kejadian pertama/terakhir item berkenaan dalam senarai. Menyatakan %1 jika item berkenaan tidak ditemui."; +Blockly.Msg["LISTS_INLIST"] = "dalam senarai"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 adalah kosong"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika senarai kosong."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "panjang %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Kembalikan panjang senarai"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "wujudkan senarai dengan item %1 diulangi %2 kali"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Wujudkan senarai yang terdiri daripada nilai berulang mengikut nombor yang ditentukan."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sebagai"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "masukkan pada"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Selit item pada permulaan senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Masukkan item pada posisi yand ditentukan dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Tambahkan item dalam senarai akhir."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Selit item secara rawak di dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Set item pertama dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Masukkan item pada posisi yang ditentukan dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Set item terakhir dalam senarai."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Set item rawak dalam senarai."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "buat senarai dgn teks"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "buat teks drpd senarai"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Cantumkan senarai teks menjadi satu teks, dipecahkan oleh delimiter."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Pecahkan teks kepada senarai teks, berpecah di setiap delimiter."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "dengan delimiter"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "palsu"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Kembalikan samada benar atau palsu."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "benar"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://id.wikipedia.org/wiki/Pertidaksamaan"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Kembali benar jika kedua-dua input benar antara satu sama lain."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Kembali benar jika input pertama adalah lebih besar daripada input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Kembali benar jika input pertama adalah lebih besar daripada atau sama dengan input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Kembali benar jika input pertama adalah lebih kecil daripada input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Kembali benar jika input pertama adalah lebih kecil daripada atau sama dengan input kedua."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Taip balik benar jika kedua-dua input tidak sama."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "bukan %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "'Benar' akan dibalas jika inputnya salah. 'Salah' akan dibalas jika inputnya benar."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "dan"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "atau"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "Jika palsu"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "Jika benar"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ms.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Kembalikan jumlah kedua-dua bilangan."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Taip balik hasil bahagi dua nombor tersebut."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Taip balik hasil tolak dua nombor tersebut."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Taip balik hasil darab dua nombor tersebut."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://id.wikipedia.org/wiki/Perjumlahan"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "perubahan %1 oleh %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Tambah nombor kepada pembolehubah '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ms.wikipedia.org/wiki/Pemalar_matematik"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "Boleh dibahagikan dengan"; +Blockly.Msg["MATH_IS_EVEN"] = "Adalah genap"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatif"; +Blockly.Msg["MATH_IS_ODD"] = "aneh"; +Blockly.Msg["MATH_IS_POSITIVE"] = "adalah positif"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://id.wikipedia.org/wiki/Operasi_modulus"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Taip balik baki yang didapat daripada pembahagian dua nombor tersebut."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ms.wikipedia.org/wiki/Nombor"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Suatu nombor."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "purata daripada senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "Max senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "Median senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min dalam senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "jenis senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "Item rawak daripada senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "sisihan piawai bagi senarai"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "Jumlah senarai"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Kembalikan purata (min aritmetik) nilai-nilai angka di dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Pulangkan jumlah terbesar dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Kembalikan nombor median dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Kembalikan nombor terkecil dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Kembali senarai item yang paling biasa dalam senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Kembalikan elemen rawak daripada senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Kembali dengan sisihan piawai daripada senarai."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Kembalikan jumlah semua nombor dalam senarai."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "pecahan rawak"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Kembali sebahagian kecil rawak antara 0.0 (inklusif) dan 1.0 (eksklusif)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "integer rawak dari %1ke %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Kembalikan integer rawak diantara dua had yang ditentukan, inklusif."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "pusingan"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "Pusingan ke bawah"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "pusingan ke atas"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Bulat nombor yang naik atau turun."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ms.wikipedia.org/wiki/Punca_kuasa_dua"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "mutlak"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Punca kuasa dua"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Kembalikan nilai mutlak suatu nombor."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Kembalikan e kepada kuasa nombor."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Kembali dalam logaritma nombor asli."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Kembali logarithm 10 asas nombor."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Kembalikan nombor yang songsang."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Kembalikan 10 kepada kuasa nombor."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Kembalikan punca kuasa nombor."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ms.wikipedia.org/wiki/Fungsi_trigonometri"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Kembali arccosine beberapa nombor."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Kembalikan arcsince beberapa nombor."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Kembalikan beberapa nombor arctangent."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kembalikan darjah kosinus (bukan radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Kembalikan darjah sine (bukan radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Kembalikan darjah tangen (bukan radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Pembolehubah baru..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nama pembolehubah baru:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "bolehkan kenyataan"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "dengan:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ms.wikipedia.org/wiki/Fungsi"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ms.wikipedia.org/wiki/Fungsi"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "dengan:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Hasilkan '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Terangkan fungsi ini..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Buat sesuatu"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "Untuk"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Menghasilkan suatu fungsi tanpa output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "kembali"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Mencipta satu fungsi dengan pengeluaran."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Amaran: Fungsi ini mempunyai parameter yang berganda."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Serlahkan definisi fungsi"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Amaran: Blok ini hanya boleh digunakan dalam fungsi definisi."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Nama input:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Tambah satu input pada fungsi."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Input-input"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Tambah, alih keluar atau susun semula input pada fungsi ini."; +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Padamkan Komen"; +Blockly.Msg["RENAME_VARIABLE"] = "Tukar nama pembolehubah..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tukar nama semua pembolehubah '%1' kepada:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "Kepada huruf kecil"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "Kepada HURUF BESAR"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "Dapatkan abjad terakhir"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "Dapatkan abjad rawak"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "Sertai"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "untuk huruf terakhir"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "dalam teks"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "mencari kejadian pertama teks"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "mencari kejadian terakhir teks"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "dalam teks %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Kembalikan Indeks kejadian pertama/terakhir dari teks pertama ke dalam teks kedua. Kembalikan %1 Jika teks tidak ditemui."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 adalah kosong"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Kembalikan benar jika teks yang disediakan adalah kosong."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "hasilkan teks dengan"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Hasilkan sebahagian teks dengan menghubungkan apa jua nombor item."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "panjang %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Kembalikan jumlah huruf (termasuk ruang) dalam teks yang disediakan."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "cetak %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Cetak teks yang ditentukan, nombor atau nilai lain."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Peringatan kepada pengguna untuk nombor."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Peringatkan pengguna untuk sebahagian teks."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Prom untuk nombor dengan mesej"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Prom untuk teks dengan mesej"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ms.wikipedia.org/wiki/Rentetan"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Huruf, perkataan, atau baris teks."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "mengurangkan kawasan dari kedua-dua belah"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "mengurangkan ruang dari sebelah kiri"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "mengurangkan kawasan dari sisi kanan"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Kembali salinan teks dengan ruang yang dikeluarkan daripada satu atau hujung kedua belah."; +Blockly.Msg["TODAY"] = "Hari ini"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Perkara"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Hasilkan 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Kembalikan nilai pemboleh ubah ini."; +Blockly.Msg["VARIABLES_SET"] = "set %1 ke %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Hasilkan 'set %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Set pembolehubah ini supaya sama dengan input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/my.js b/msg/js/my.js index fcd65941707..f44061f484a 100644 --- a/msg/js/my.js +++ b/msg/js/my.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "မှတ်ချက် ပေါင်းထည့်ရန်"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "လုပ်ဆောင်ချက် \"%2%\" ၏ သတ်မှတ်ချက်တစ်စိတ်တစ်ပိုင်း ဖြစ်သောကြောင့် ကိန်းရှင် \"%1\" ကို ဖျက်လို့မရပါ။"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "တန်ဖိုး ပြောင်းလဲရန်:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "အရောင် ၁"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "အရောင် ၂"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "အချိုး"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://my.wikipedia.org/wiki/အရောင်"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ကျပန်း အရောင်"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ကျပန်းပုံစံဖြင့် အရောင်ရွေးပါ"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "အပြာရောင်"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "အစိမ်း"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "အနီ"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "ကိန်းရှင် \"%1\" ကို ဖျက်ရန်"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "ဖျက်မည်။"; -Blockly.Msg["DIALOG_OK"] = "အိုကေ"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "ထပ်ပွား"; -Blockly.Msg["DUPLICATE_COMMENT"] = "မှတ်ချက်ပွားရန်"; -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "အ​ကူ​အ​ညီ​"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ပထမဆုံး"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "နောက်ဆုံး"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ကျပန်း"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ဖယ်ရှားရန်"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ငယ်စဉ်ကြီးလိုက်"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ကြီးစဉ်ငယ်လိုက်"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 အဖြစ် စီစဉ်ရန်"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "နှင့်"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "သို့မဟုတ်"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://my.wikipedia.org/wiki/ဂဏန်းသင်္ချာ"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://my.wikipedia.org/wiki/ကိန်း"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ကိန်းတစ်ခု။"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://my.wikipedia.org/wiki/စတုရန်း"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "အရောင်ကိန်းရှင် ဖန်တီးရန်"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ဂဏန်းကိန်းရှင် ဖန်တီးရန်"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "ကိန်းရှင် ဖန်တီးရန်"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ကိန်းရှင်အသစ်နာမည်"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ကိန်းရှင်အမျိုးအစားသစ်:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' ကို ဖန်တီးရန်"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ရှေ့သို့ ပြန်ပြင်ရန်"; -Blockly.Msg["REMOVE_COMMENT"] = "မှတ်ချက် ဖယ်ရှားရန်"; -Blockly.Msg["RENAME_VARIABLE"] = "ကိန်းရှင် အမည်ပြောင်းရန်"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ကိန်းရှင် %1 ခုကို အမည်ပြောင်းရန်"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "ယနေ့"; -Blockly.Msg["UNDO"] = "နောက်ပြန် ပြန်ပြင်ရန်"; -Blockly.Msg["UNNAMED_KEY"] = "အမည်မဲ့"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ကိန်းရှင်၏အမည် %1 သည် ရှိပြီးသားဖြစ်သည်။"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ကိန်းရှင်အမည် \"%1\" သည် အခြားအမျိုးအစား \"%2%\" အတွက် ရှိပြီးသားဖြစ်သည်။"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "လုပ်ငန်းခွင်ပိတ်ဆို့မှု"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "တစ်ခုခု ပြောခဲ့ပါ..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "မှတ်ချက် ပေါင်းထည့်ရန်"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "လုပ်ဆောင်ချက် \"%2%\" ၏ သတ်မှတ်ချက်တစ်စိတ်တစ်ပိုင်း ဖြစ်သောကြောင့် ကိန်းရှင် \"%1\" ကို ဖျက်လို့မရပါ။"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "တန်ဖိုး ပြောင်းလဲရန်:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "အရောင် ၁"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "အရောင် ၂"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "အချိုး"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://my.wikipedia.org/wiki/အရောင်"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ကျပန်း အရောင်"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ကျပန်းပုံစံဖြင့် အရောင်ရွေးပါ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "အပြာရောင်"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "အစိမ်း"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "အနီ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "ကိန်းရှင် \"%1\" ကို ဖျက်ရန်"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "ဖျက်မည်။"; +Blockly.Msg["DIALOG_OK"] = "အိုကေ"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "ထပ်ပွား"; +Blockly.Msg["DUPLICATE_COMMENT"] = "မှတ်ချက်ပွားရန်"; +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "အ​ကူ​အ​ညီ​"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ပထမဆုံး"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "နောက်ဆုံး"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ကျပန်း"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ဖယ်ရှားရန်"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ငယ်စဉ်ကြီးလိုက်"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ကြီးစဉ်ငယ်လိုက်"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 အဖြစ် စီစဉ်ရန်"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "နှင့်"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "သို့မဟုတ်"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://my.wikipedia.org/wiki/ဂဏန်းသင်္ချာ"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://my.wikipedia.org/wiki/ကိန်း"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ကိန်းတစ်ခု။"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://my.wikipedia.org/wiki/စတုရန်း"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "အရောင်ကိန်းရှင် ဖန်တီးရန်"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ဂဏန်းကိန်းရှင် ဖန်တီးရန်"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ကိန်းရှင် ဖန်တီးရန်"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ကိန်းရှင်အသစ်နာမည်"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ကိန်းရှင်အမျိုးအစားသစ်:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' ကို ဖန်တီးရန်"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ရှေ့သို့ ပြန်ပြင်ရန်"; +Blockly.Msg["REMOVE_COMMENT"] = "မှတ်ချက် ဖယ်ရှားရန်"; +Blockly.Msg["RENAME_VARIABLE"] = "ကိန်းရှင် အမည်ပြောင်းရန်"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ကိန်းရှင် %1 ခုကို အမည်ပြောင်းရန်"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ယနေ့"; +Blockly.Msg["UNDO"] = "နောက်ပြန် ပြန်ပြင်ရန်"; +Blockly.Msg["UNNAMED_KEY"] = "အမည်မဲ့"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ကိန်းရှင်၏အမည် %1 သည် ရှိပြီးသားဖြစ်သည်။"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ကိန်းရှင်အမည် \"%1\" သည် အခြားအမျိုးအစား \"%2%\" အတွက် ရှိပြီးသားဖြစ်သည်။"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "လုပ်ငန်းခွင်ပိတ်ဆို့မှု"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "တစ်ခုခု ပြောခဲ့ပါ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/mzn.js b/msg/js/mzn.js index 70cfbbae226..d0d4c90c474 100644 --- a/msg/js/mzn.js +++ b/msg/js/mzn.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "خا"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Help"; // untranslated -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "خا"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/nb.js b/msg/js/nb.js index eeabd65f975..66a3a2839a1 100644 --- a/msg/js/nb.js +++ b/msg/js/nb.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Legg til kommentar"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kan ikke slette variabelen «%1» fordi den er del av definisjonen for funksjonen «%2»"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Bytt verdi:"; -Blockly.Msg["CLEAN_UP"] = "Rydd opp Blocks"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Skjul blokker"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Skjul blokk"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "farge 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "farge 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "forhold"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blande"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blander to farger sammen med et gitt forhold (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Velg en farge fra paletten."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "tilfeldig farge"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Velg en tilfeldig farge."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blå"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "grønn"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "rød"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "farge med"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Lag en farge med angitt verdi av rød, grønn og blå. Alle verdier må være mellom 0 og 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "bryt ut av løkken"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fortsett med neste gjentakelse av løkken"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bryt ut av den gjeldende løkken."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Hopp over resten av denne løkken og fortsett med neste gjentakelse."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Advarsel: Denne blokken kan kun brukes innenfor en løkke."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for hvert element %1 i listen %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For hvert element i en liste, angi variabelen '%1' til elementet, og deretter lag noen setninger."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "tell med %1 fra %2 til %3 med %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ha variabel \"%1\" ta verdiene fra start nummer til slutt nummer, telle med spesifisert intervall og lag de spesifiserte blokkene."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Legg til en betingelse til hvis blokken."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Legg til hva som skal skje hvis de andre ikke slår til."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Legg til, fjern eller flytt seksjoner i denne hvis-blokken."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ellers"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ellers hvis"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "hvis"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Hvis dette er sant, så gjør følgende."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Hvis dette er sant, så utfør den første blokken av instruksjoner. Hvis ikke, utfør den andre blokken."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Hvis det første stemmer, så utfør den første blokken av instruksjoner. Ellers, hvis det andre stemmer, utfør den andre blokken av instruksjoner."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Hvis den første verdien er sann, så utfør den første blokken med setninger. Ellers, hvis den andre verdien er sann, så utfør den andre blokken med setninger. Hvis ingen av verdiene er sanne, så utfør den siste blokken med setninger."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "gjør"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "gjenta %1 ganger"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Gjenta noen instruksjoner flere ganger."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "gjenta til"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "gjenta mens"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Så lenge et utsagn ikke stemmer, gjør noen instruksjoner."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Så lenge et utsagn stemmer, utfør noen instruksjoner."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Slett alle %1 blokker?"; -Blockly.Msg["DELETE_BLOCK"] = "Slett blokk"; -Blockly.Msg["DELETE_VARIABLE"] = "Slett variabelen «%1»"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Slett %1 bruk av variabelen «%2»?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Slett %1 blokker"; -Blockly.Msg["DIALOG_CANCEL"] = "Avbryt"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Deaktiver blokk"; -Blockly.Msg["DUPLICATE_BLOCK"] = "duplikat"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliser kommentar"; -Blockly.Msg["ENABLE_BLOCK"] = "Aktiver blokk"; -Blockly.Msg["EXPAND_ALL"] = "Utvid blokker"; -Blockly.Msg["EXPAND_BLOCK"] = "Utvid blokk"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Eksterne kilder"; -Blockly.Msg["HELP"] = "Hjelp"; -Blockly.Msg["INLINE_INPUTS"] = "Interne kilder"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "opprett en tom liste"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returnerer en tom liste, altså med lengde 0"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Legg til, fjern eller endre rekkefølgen for å endre på denne delen av listen."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "lag en liste med"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tilføy et element til listen."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Lag en liste med et vilkårlig antall elementer."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "først"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# fra slutten"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "hent"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hent og fjern"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "siste"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "tilfeldig"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fjern"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnerer det første elementet i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returner elementet på den angitte posisjonen i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnerer det siste elementet i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returnerer et tilfeldig element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fjerner og returnerer det første elementet i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fjerner og returnerer elementet ved en gitt posisjon i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fjerner og returnerer det siste elementet i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fjerner og returnerer et tilfeldig element i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fjerner det første elementet i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fjerner et element ved en gitt posisjon i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fjerner det siste elementet i en liste."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fjerner et tilfeldig element i en liste."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "til # fra slutten"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "til #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "til siste"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Hent en del av listen"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "Hent de siste # elementene"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "Hent del-listen fra #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Kopiérer en ønsket del av en liste."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 er det siste elementet."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 er det første elementet."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "finn første forekomst av elementet"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "finn siste forekomst av elementet"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returnerer indeksen av den første/siste forekomsten av elementet i lista. Returnerer %1 hvis ikke funnet."; -Blockly.Msg["LISTS_INLIST"] = "i listen"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 er tom"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnerer sann hvis listen er tom."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "lengden på %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnerer lengden til en liste."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "Lag en liste hvor elementet %1 forekommer %2 ganger"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Lager en liste hvor den gitte verdien gjentas et antall ganger."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverser %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverser en kopi av ei liste."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "som"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "sett inn ved"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "sett"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Setter inn elementet i starten av en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Setter inn elementet ved den angitte posisjonen i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Tilføy elementet til slutten av en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Setter inn elementet ved en tilfeldig posisjon i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Angir det første elementet i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setter inn elementet ved den angitte posisjonen i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Angir det siste elementet i en liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Angir et tilfeldig element i en liste."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "stigende"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "synkende"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sorter %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sorter en kopi av en liste."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetisk, ignorert store/små bokstaver"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerisk"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetisk"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lag liste av tekst"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "lag tekst av liste"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Føy sammen en liste tekster til én tekst, avskilt av en avgrenser."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Splitt teksten til en liste med tekster, brutt ved hver avgrenser."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "med avgrenser"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "usann"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnerer enten sann eller usann."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "sann"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Returnerer sann hvis begge inputene er like hverandre."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Returnerer sant hvis det første argumentet er større enn den andre argumentet."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Returnerer sant hvis det første argumentet er større enn eller likt det andre argumentet."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Returnerer sant hvis det første argumentet er mindre enn det andre argumentet."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Returnerer sant hvis det første argumentet er mindre enn eller likt det andre argumentet."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Returnerer sant hvis begge argumentene er ulike hverandre."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ikke %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returnerer sant hvis argumentet er usant. Returnerer usant hvis argumentet er sant."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returnerer null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "og"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "eller"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Returnerer sant hvis begge argumentene er sanne."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Returnerer sant hvis minst ett av argumentene er sant."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "hvis usant"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "hvis sant"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Sjekk betingelsen i 'test'. Hvis betingelsen er sann, da returneres 'hvis sant' verdien. Hvis ikke returneres 'hvis usant' verdien."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://no.wikipedia.org/wiki/Aritmetikk"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnerer summen av to tall."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returner kvotienten av to tall."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returner differansen mellom to tall."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returner produktet av to tall."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Returner det første tallet opphøyd i den andre tallet."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 av X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "endre %1 ved %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Addere et tall til variabelen '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Returner en av felleskonstantene π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), eller ∞ (uendelig)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begrense %1 lav %2 høy %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begrens et tall til å være mellom de angitte grenseverdiene (inklusiv)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "er delelig med"; -Blockly.Msg["MATH_IS_EVEN"] = "er et partall"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "er negativer negativt"; -Blockly.Msg["MATH_IS_ODD"] = "er et oddetall"; -Blockly.Msg["MATH_IS_POSITIVE"] = "er positivt"; -Blockly.Msg["MATH_IS_PRIME"] = "er et primtall"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Sjekk om et tall er et partall, oddetall, primtall, heltall, positivt, negativt, eller om det er delelig med et annet tall. Returnerer sant eller usant."; -Blockly.Msg["MATH_IS_WHOLE"] = "er et heltall"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "resten av %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Returner resten fra delingen av to tall."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Et tall."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "gjennomsnittet av listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum av liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medianen til listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum av listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Listens typetall"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "tilfeldig element i listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardavviket til listen"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summen av listen"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Returner det aritmetiske gjennomsnittet av tallene i listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Returner det største tallet i listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Returner listens median."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Returner det minste tallet i listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Returner en liste av de vanligste elementene i listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returner et tilfeldig element fra listen."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Returner listens standardavvik."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Returner summen av alle tallene i listen."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "tilfeldig flyttall"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Returner et tilfeldig flyttall mellom 0.0 (inkludert) og 1.0 (ikke inkludert)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "Et tilfeldig heltall mellom %1 og %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Returner et tilfeldig tall mellom de to spesifiserte grensene, inkludert de to."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "avrunding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rund ned"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rund opp"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Avrund et tall ned eller opp."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluttverdi"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratrot"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returner absoluttverdien av et tall."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Returner e opphøyd i et tall."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Returner den naturlige logaritmen til et tall."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returner base-10 logaritmen til et tall."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returner det negative tallet."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Returner 10 opphøyd i et tall."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returner kvadratroten av et tall."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Returner arccosinus til et tall."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Returner arcsinus til et tall."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Returner arctangens til et tall."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Returner cosinus av en vinkel (ikke radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Returner sinus av en vinkel (ikke radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Returner tangenten av en vinkel (ikke radian)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Oppretter fargevariabel …"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Oppretter tallvariabel …"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Oppretter strengvariabel …"; -Blockly.Msg["NEW_VARIABLE"] = "Opprett variabel…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nytt variabelnavn:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ny variabeltype:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "tillat uttalelser"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "med:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kjør den brukerdefinerte funksjonen '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kjør den brukerdefinerte funksjonen'%1' og bruk resultatet av den."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "med:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Opprett '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beskriv denne funksjonen…"; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "gjør noe"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "til"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Opprett en funksjon som ikke har noe resultat."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returner"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Oppretter en funksjon som har et resultat."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advarsel: Denne funksjonen har duplikate parametere."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Marker funksjonsdefinisjonen"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Hvis en verdi er sann, returner da en annen verdi."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advarsel: Denne blokken kan bare benyttes innenfor en funksjonsdefinisjon."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Navn på parameter:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Legg til en input til funksjonen."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "parametere"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Legg til, fjern eller endre rekkefølgen på input til denne funksjonen."; -Blockly.Msg["REDO"] = "Gjør om"; -Blockly.Msg["REMOVE_COMMENT"] = "Fjern kommentar"; -Blockly.Msg["RENAME_VARIABLE"] = "Gi nytt navn til variabel…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Endre navnet til alle '%1' variabler til:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "til %1, legg til teksten %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tilføy tekst til variabelen '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "til små bokstaver"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "til store forbokstaver"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "til STORE BOKSTAVER"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Returnerer en kopi av teksten der store og små bokstaver er byttet om."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "hent første bokstav"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hent bokstav # fra slutten"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hent bokstav #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "hent den siste bokstaven"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hent en tilfeldig bokstav"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "i teksten %1, %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returnerer bokstaven på angitt plassering."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "tell %1 i %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Tell hvor mange ganger noe tekst dukker opp i annen tekst."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Legg til et element til teksten."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "føy sammen"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Legg til, fjern eller forandre rekkefølgen for å forandre på denne tekstblokken."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "til bokstav # fra slutten"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "til bokstav #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "til siste bokstav"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "i tekst"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "hent delstreng fra første bokstav"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hent delstreng fra bokstav # fra slutten"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hent delstreng fra bokstav #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returnerer den angitte delen av teksten."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "finn første forekomst av tekst"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "finn siste forekomst av tekst"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "i teksten %1, %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returnerer posisjonen for første/siste forekomsten av den første tekst i den andre teksten. Returnerer %1 hvis teksten ikke blir funnet."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 er tom"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnerer sann hvis den angitte teksten er tom."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "lag tekst med"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Opprett en tekst ved å sette sammen et antall elementer."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "lengden av %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returnerer antall bokstaver (inkludert mellomrom) i den angitte teksten."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "skriv ut %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Skriv ut angitt tekst, tall eller annet innhold."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Be brukeren om et tall."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Spør brukeren om tekst."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "spør om et tall med en melding"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "spør om tekst med en melding"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "erstatt %1 med %2 i %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Erstatter alle forekomster av noe tekst i en annen tekst."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverser %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverserer rekkefølgen på tegnene i teksten."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En bokstav, ett ord eller en linje med tekst."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "fjern mellomrom fra begge sider av"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "fjern mellomrom fra venstre side av"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "fjern mellomrom fra høyre side av"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returner en kopi av teksten med mellomrom fjernet fra en eller begge sidene."; -Blockly.Msg["TODAY"] = "I dag"; -Blockly.Msg["UNDO"] = "Angre"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Opprett 'sett %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnerer verdien av denne variabelen."; -Blockly.Msg["VARIABLES_SET"] = "sett %1 til %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Opprett 'hent %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setter verdien av denne variablen lik parameteren."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "En variabel med navn «%1» finnes allerede."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "En variabel med navn «%1» finnes allerede for en annen type: «%2»."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Si noe …"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Legg til kommentar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kan ikke slette variabelen «%1» fordi den er del av definisjonen for funksjonen «%2»"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Bytt verdi:"; +Blockly.Msg["CLEAN_UP"] = "Rydd opp Blocks"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Skjul blokker"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Skjul blokk"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "farge 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "farge 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "forhold"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blande"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blander to farger sammen med et gitt forhold (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Velg en farge fra paletten."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "tilfeldig farge"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Velg en tilfeldig farge."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blå"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grønn"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rød"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "farge med"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Lag en farge med angitt verdi av rød, grønn og blå. Alle verdier må være mellom 0 og 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "bryt ut av løkken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fortsett med neste gjentakelse av løkken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bryt ut av den gjeldende løkken."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Hopp over resten av denne løkken og fortsett med neste gjentakelse."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Advarsel: Denne blokken kan kun brukes innenfor en løkke."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for hvert element %1 i listen %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For hvert element i en liste, angi variabelen '%1' til elementet, og deretter lag noen setninger."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "tell med %1 fra %2 til %3 med %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ha variabel \"%1\" ta verdiene fra start nummer til slutt nummer, telle med spesifisert intervall og lag de spesifiserte blokkene."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Legg til en betingelse til hvis blokken."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Legg til hva som skal skje hvis de andre ikke slår til."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Legg til, fjern eller flytt seksjoner i denne hvis-blokken."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ellers"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ellers hvis"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "hvis"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Hvis dette er sant, så gjør følgende."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Hvis dette er sant, så utfør den første blokken av instruksjoner. Hvis ikke, utfør den andre blokken."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Hvis det første stemmer, så utfør den første blokken av instruksjoner. Ellers, hvis det andre stemmer, utfør den andre blokken av instruksjoner."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Hvis den første verdien er sann, så utfør den første blokken med setninger. Ellers, hvis den andre verdien er sann, så utfør den andre blokken med setninger. Hvis ingen av verdiene er sanne, så utfør den siste blokken med setninger."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "gjør"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "gjenta %1 ganger"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Gjenta noen instruksjoner flere ganger."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "gjenta til"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "gjenta mens"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Så lenge et utsagn ikke stemmer, gjør noen instruksjoner."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Så lenge et utsagn stemmer, utfør noen instruksjoner."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Slett alle %1 blokker?"; +Blockly.Msg["DELETE_BLOCK"] = "Slett blokk"; +Blockly.Msg["DELETE_VARIABLE"] = "Slett variabelen «%1»"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Slett %1 bruk av variabelen «%2»?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Slett %1 blokker"; +Blockly.Msg["DIALOG_CANCEL"] = "Avbryt"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Deaktiver blokk"; +Blockly.Msg["DUPLICATE_BLOCK"] = "duplikat"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliser kommentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktiver blokk"; +Blockly.Msg["EXPAND_ALL"] = "Utvid blokker"; +Blockly.Msg["EXPAND_BLOCK"] = "Utvid blokk"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Eksterne kilder"; +Blockly.Msg["HELP"] = "Hjelp"; +Blockly.Msg["INLINE_INPUTS"] = "Interne kilder"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "opprett en tom liste"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returnerer en tom liste, altså med lengde 0"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Legg til, fjern eller endre rekkefølgen for å endre på denne delen av listen."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "lag en liste med"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Tilføy et element til listen."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Lag en liste med et vilkårlig antall elementer."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "først"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# fra slutten"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "hent"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hent og fjern"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "siste"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "tilfeldig"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fjern"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnerer det første elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returner elementet på den angitte posisjonen i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnerer det siste elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returnerer et tilfeldig element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fjerner og returnerer det første elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fjerner og returnerer elementet ved en gitt posisjon i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fjerner og returnerer det siste elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fjerner og returnerer et tilfeldig element i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fjerner det første elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fjerner et element ved en gitt posisjon i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fjerner det siste elementet i en liste."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fjerner et tilfeldig element i en liste."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "til # fra slutten"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "til #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "til siste"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Hent en del av listen"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "Hent de siste # elementene"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "Hent del-listen fra #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Kopiérer en ønsket del av en liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 er det siste elementet."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 er det første elementet."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "finn første forekomst av elementet"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "finn siste forekomst av elementet"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returnerer indeksen av den første/siste forekomsten av elementet i lista. Returnerer %1 hvis ikke funnet."; +Blockly.Msg["LISTS_INLIST"] = "i listen"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 er tom"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnerer sann hvis listen er tom."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lengden på %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnerer lengden til en liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Lag en liste hvor elementet %1 forekommer %2 ganger"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Lager en liste hvor den gitte verdien gjentas et antall ganger."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverser %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverser en kopi av ei liste."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "som"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "sett inn ved"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "sett"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Setter inn elementet i starten av en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Setter inn elementet ved den angitte posisjonen i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Tilføy elementet til slutten av en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Setter inn elementet ved en tilfeldig posisjon i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Angir det første elementet i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setter inn elementet ved den angitte posisjonen i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Angir det siste elementet i en liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Angir et tilfeldig element i en liste."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "stigende"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "synkende"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sorter %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sorter en kopi av en liste."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetisk, ignorert store/små bokstaver"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerisk"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetisk"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lag liste av tekst"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "lag tekst av liste"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Føy sammen en liste tekster til én tekst, avskilt av en avgrenser."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Splitt teksten til en liste med tekster, brutt ved hver avgrenser."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "med avgrenser"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "usann"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnerer enten sann eller usann."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "sann"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Returnerer sann hvis begge inputene er like hverandre."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Returnerer sant hvis det første argumentet er større enn den andre argumentet."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Returnerer sant hvis det første argumentet er større enn eller likt det andre argumentet."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Returnerer sant hvis det første argumentet er mindre enn det andre argumentet."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Returnerer sant hvis det første argumentet er mindre enn eller likt det andre argumentet."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Returnerer sant hvis begge argumentene er ulike hverandre."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ikke %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returnerer sant hvis argumentet er usant. Returnerer usant hvis argumentet er sant."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returnerer null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "og"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "eller"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Returnerer sant hvis begge argumentene er sanne."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Returnerer sant hvis minst ett av argumentene er sant."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "hvis usant"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "hvis sant"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Sjekk betingelsen i 'test'. Hvis betingelsen er sann, da returneres 'hvis sant' verdien. Hvis ikke returneres 'hvis usant' verdien."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://no.wikipedia.org/wiki/Aritmetikk"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnerer summen av to tall."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returner kvotienten av to tall."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returner differansen mellom to tall."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returner produktet av to tall."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Returner det første tallet opphøyd i den andre tallet."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 av X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "endre %1 ved %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Addere et tall til variabelen '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Returner en av felleskonstantene π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), eller ∞ (uendelig)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begrense %1 lav %2 høy %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begrens et tall til å være mellom de angitte grenseverdiene (inklusiv)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "er delelig med"; +Blockly.Msg["MATH_IS_EVEN"] = "er et partall"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "er negativer negativt"; +Blockly.Msg["MATH_IS_ODD"] = "er et oddetall"; +Blockly.Msg["MATH_IS_POSITIVE"] = "er positivt"; +Blockly.Msg["MATH_IS_PRIME"] = "er et primtall"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Sjekk om et tall er et partall, oddetall, primtall, heltall, positivt, negativt, eller om det er delelig med et annet tall. Returnerer sant eller usant."; +Blockly.Msg["MATH_IS_WHOLE"] = "er et heltall"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resten av %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Returner resten fra delingen av to tall."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Et tall."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "gjennomsnittet av listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum av liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medianen til listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum av listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "Listens typetall"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "tilfeldig element i listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardavviket til listen"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summen av listen"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Returner det aritmetiske gjennomsnittet av tallene i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Returner det største tallet i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Returner listens median."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Returner det minste tallet i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Returner en liste av de vanligste elementene i listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returner et tilfeldig element fra listen."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Returner listens standardavvik."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Returner summen av alle tallene i listen."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "tilfeldig flyttall"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Returner et tilfeldig flyttall mellom 0.0 (inkludert) og 1.0 (ikke inkludert)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "Et tilfeldig heltall mellom %1 og %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Returner et tilfeldig tall mellom de to spesifiserte grensene, inkludert de to."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "avrunding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rund ned"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rund opp"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Avrund et tall ned eller opp."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluttverdi"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratrot"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returner absoluttverdien av et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Returner e opphøyd i et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Returner den naturlige logaritmen til et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returner base-10 logaritmen til et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returner det negative tallet."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Returner 10 opphøyd i et tall."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returner kvadratroten av et tall."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Returner arccosinus til et tall."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Returner arcsinus til et tall."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Returner arctangens til et tall."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Returner cosinus av en vinkel (ikke radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Returner sinus av en vinkel (ikke radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Returner tangenten av en vinkel (ikke radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Oppretter fargevariabel …"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Oppretter tallvariabel …"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Oppretter strengvariabel …"; +Blockly.Msg["NEW_VARIABLE"] = "Opprett variabel…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nytt variabelnavn:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ny variabeltype:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "tillat uttalelser"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kjør den brukerdefinerte funksjonen '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kjør den brukerdefinerte funksjonen'%1' og bruk resultatet av den."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Opprett '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beskriv denne funksjonen…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "gjør noe"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "til"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Opprett en funksjon som ikke har noe resultat."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returner"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Oppretter en funksjon som har et resultat."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Advarsel: Denne funksjonen har duplikate parametere."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Marker funksjonsdefinisjonen"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Hvis en verdi er sann, returner da en annen verdi."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Advarsel: Denne blokken kan bare benyttes innenfor en funksjonsdefinisjon."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Navn på parameter:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Legg til en input til funksjonen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "parametere"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Legg til, fjern eller endre rekkefølgen på input til denne funksjonen."; +Blockly.Msg["REDO"] = "Gjør om"; +Blockly.Msg["REMOVE_COMMENT"] = "Fjern kommentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Gi nytt navn til variabel…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Endre navnet til alle '%1' variabler til:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "til %1, legg til teksten %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Tilføy tekst til variabelen '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "til små bokstaver"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "til store forbokstaver"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "til STORE BOKSTAVER"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Returnerer en kopi av teksten der store og små bokstaver er byttet om."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hent første bokstav"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hent bokstav # fra slutten"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hent bokstav #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hent den siste bokstaven"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hent en tilfeldig bokstav"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "i teksten %1, %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returnerer bokstaven på angitt plassering."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "tell %1 i %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Tell hvor mange ganger noe tekst dukker opp i annen tekst."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Legg til et element til teksten."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "føy sammen"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Legg til, fjern eller forandre rekkefølgen for å forandre på denne tekstblokken."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "til bokstav # fra slutten"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "til bokstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "til siste bokstav"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "i tekst"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "hent delstreng fra første bokstav"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "hent delstreng fra bokstav # fra slutten"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "hent delstreng fra bokstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returnerer den angitte delen av teksten."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "finn første forekomst av tekst"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "finn siste forekomst av tekst"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "i teksten %1, %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returnerer posisjonen for første/siste forekomsten av den første tekst i den andre teksten. Returnerer %1 hvis teksten ikke blir funnet."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 er tom"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnerer sann hvis den angitte teksten er tom."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "lag tekst med"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Opprett en tekst ved å sette sammen et antall elementer."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lengden av %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returnerer antall bokstaver (inkludert mellomrom) i den angitte teksten."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "skriv ut %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Skriv ut angitt tekst, tall eller annet innhold."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Be brukeren om et tall."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Spør brukeren om tekst."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "spør om et tall med en melding"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "spør om tekst med en melding"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "erstatt %1 med %2 i %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Erstatter alle forekomster av noe tekst i en annen tekst."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverser %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverserer rekkefølgen på tegnene i teksten."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En bokstav, ett ord eller en linje med tekst."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "fjern mellomrom fra begge sider av"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "fjern mellomrom fra venstre side av"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "fjern mellomrom fra høyre side av"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returner en kopi av teksten med mellomrom fjernet fra en eller begge sidene."; +Blockly.Msg["TODAY"] = "I dag"; +Blockly.Msg["UNDO"] = "Angre"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Opprett 'sett %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnerer verdien av denne variabelen."; +Blockly.Msg["VARIABLES_SET"] = "sett %1 til %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Opprett 'hent %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setter verdien av denne variablen lik parameteren."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "En variabel med navn «%1» finnes allerede."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "En variabel med navn «%1» finnes allerede for en annen type: «%2»."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Si noe …"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ne.js b/msg/js/ne.js index 2ef877544d0..f7e6fb0910f 100644 --- a/msg/js/ne.js +++ b/msg/js/ne.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "टिप्पणी थप्ने"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "मान बदल्नुहोस :"; -Blockly.Msg["CLEAN_UP"] = "ब्लकहरू हटाउनुहोस्"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ब्लक भत्काउनुहोस्"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ब्लक भत्काउनुहोस्"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = " रङ्ग १"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "रङ्ग २"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "अनुपात"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "जुनसुकै रङ्ग"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "निलो"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "हरियो"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "रातो"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "यस रङ्गको"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "ब्लक हटाउने"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = " %1 ब्लकहरू हटाउने"; -Blockly.Msg["DIALOG_CANCEL"] = "रद्द गर्ने"; -Blockly.Msg["DIALOG_OK"] = "हुन्छ"; -Blockly.Msg["DISABLE_BLOCK"] = "ब्लकलाई सक्रिय पार्ने"; -Blockly.Msg["DUPLICATE_BLOCK"] = "प्रतिलिपी गर्ने"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "ब्लकलाई निश्कृयपार्ने"; -Blockly.Msg["EXPAND_ALL"] = "ब्लकहरू फिजाउने"; -Blockly.Msg["EXPAND_BLOCK"] = "ब्लकहरू फिजाउने"; -Blockly.Msg["EXTERNAL_INPUTS"] = "बाह्य इन्पुटहरू"; -Blockly.Msg["HELP"] = "सहायता"; -Blockly.Msg["INLINE_INPUTS"] = "इनलाइन इन्पुटहरू"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "जोर संख्या हो"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "ऋणात्मक संख्या हो"; -Blockly.Msg["MATH_IS_ODD"] = "बिजोर संख्या हो"; -Blockly.Msg["MATH_IS_POSITIVE"] = "धनात्मक संख्या हो"; -Blockly.Msg["MATH_IS_PRIME"] = "रुढ संख्या हो"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "नयाँ भेरिएबल ..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "नयाँ भेरिएबल नाम:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "इन्पुटहरू"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "पुन: कायम गर्ने"; -Blockly.Msg["REMOVE_COMMENT"] = "टिप्पणी हटाउने"; -Blockly.Msg["RENAME_VARIABLE"] = "भेरिएबल पुन: नामाकरण गर्ने ..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "आज"; -Blockly.Msg["UNDO"] = "रद्द गर्ने"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "वस्तु"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "टिप्पणी थप्ने"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "मान बदल्नुहोस :"; +Blockly.Msg["CLEAN_UP"] = "ब्लकहरू हटाउनुहोस्"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ब्लक भत्काउनुहोस्"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ब्लक भत्काउनुहोस्"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = " रङ्ग १"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "रङ्ग २"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "अनुपात"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "जुनसुकै रङ्ग"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "निलो"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "हरियो"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "रातो"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "यस रङ्गको"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "ब्लक हटाउने"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = " %1 ब्लकहरू हटाउने"; +Blockly.Msg["DIALOG_CANCEL"] = "रद्द गर्ने"; +Blockly.Msg["DIALOG_OK"] = "हुन्छ"; +Blockly.Msg["DISABLE_BLOCK"] = "ब्लकलाई सक्रिय पार्ने"; +Blockly.Msg["DUPLICATE_BLOCK"] = "प्रतिलिपी गर्ने"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ब्लकलाई निश्कृयपार्ने"; +Blockly.Msg["EXPAND_ALL"] = "ब्लकहरू फिजाउने"; +Blockly.Msg["EXPAND_BLOCK"] = "ब्लकहरू फिजाउने"; +Blockly.Msg["EXTERNAL_INPUTS"] = "बाह्य इन्पुटहरू"; +Blockly.Msg["HELP"] = "सहायता"; +Blockly.Msg["INLINE_INPUTS"] = "इनलाइन इन्पुटहरू"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "जोर संख्या हो"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ऋणात्मक संख्या हो"; +Blockly.Msg["MATH_IS_ODD"] = "बिजोर संख्या हो"; +Blockly.Msg["MATH_IS_POSITIVE"] = "धनात्मक संख्या हो"; +Blockly.Msg["MATH_IS_PRIME"] = "रुढ संख्या हो"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "नयाँ भेरिएबल ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "नयाँ भेरिएबल नाम:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "इन्पुटहरू"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "पुन: कायम गर्ने"; +Blockly.Msg["REMOVE_COMMENT"] = "टिप्पणी हटाउने"; +Blockly.Msg["RENAME_VARIABLE"] = "भेरिएबल पुन: नामाकरण गर्ने ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "आज"; +Blockly.Msg["UNDO"] = "रद्द गर्ने"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "वस्तु"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/nl.js b/msg/js/nl.js index c7ed375aa13..058170524e8 100644 --- a/msg/js/nl.js +++ b/msg/js/nl.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Opmerking toevoegen"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "De variabele \"%1\" kan niet verwijderd worden omdat die onderdeel uitmaakt van de definitie van de functie \"%2\""; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Waarde wijzigen:"; -Blockly.Msg["CLEAN_UP"] = "Blokken opschonen"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Samengevouwen blokken bevatten waarschuwingen."; -Blockly.Msg["COLLAPSE_ALL"] = "Blokken samenvouwen"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Blok samenvouwen"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "kleur 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "kleur 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "verhouding"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mengen"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mengt twee kleuren samen met een bepaalde verhouding (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://nl.wikipedia.org/wiki/Kleur"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Kies een kleur in het palet."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "willekeurige kleur"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Kies een willekeurige kleur."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blauw"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "groen"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "rood"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "kleuren met"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Maak een kleur met de opgegeven hoeveelheid rood, groen en blauw. Alle waarden moeten tussen 0 en 100 liggen."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "uit lus breken"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "doorgaan met de volgende iteratie van de lus"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Uit de bovenliggende lus breken."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "De rest van deze lus overslaan en doorgaan met de volgende herhaling."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Waarschuwing: dit blok mag alleen gebruikt worden in een lus."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "voor ieder item %1 in lijst %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Voor ieder item in een lijst, stel de variabele \"%1\" in op het item en voer daarna opdrachten uit."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; -Blockly.Msg["CONTROLS_FOR_TITLE"] = "rekenen met %1 van %2 tot %3 in stappen van %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Laat de variabele \"%1\" de waarden aannemen van het beginnummer tot het laatste nummer, tellende met het opgegeven interval, en met uitvoering van de opgegeven blokken."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Voeg een voorwaarde toe aan het als-blok."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Voeg een laatste, vang-alles conditie toe aan het als-statement."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Voeg stukken toe, verwijder of wijzig de volgorde om dit \"als\"-blok te wijzigen."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "anders"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "anders als"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "als"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Als een waarde waar is, voer dan opdrachten uit."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Als een waarde waar is, voert dan het eerste blok met opdrachten uit. Voer andere het tweede blok met opdrachten uit."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Als de eerste waarde waar is, voer dan het eerste blok met opdrachten uit. Voer anders, als de tweede waarde waar is, het tweede blok met opdrachten uit."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Als de eerste waarde \"waar\" is, voer dan het eerste blok uit. Voer anders wanneer de tweede waarde \"waar\" is, het tweede blok uit. Als geen van beide waarden waar zijn, voer dan het laatste blok uit."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://nl.wikipedia.org/wiki/Repetitie_(informatica)#For_en_Foreach"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "voer uit"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 keer herhalen"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Voer een aantal opdrachten meerdere keren uit."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "herhalen totdat"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "herhalen zolang"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Terwijl een waarde onwaar is de volgende opdrachten uitvoeren."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Terwijl een waarde waar is de volgende opdrachten uitvoeren."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Alle %1 blokken verwijderen?"; -Blockly.Msg["DELETE_BLOCK"] = "Blok verwijderen"; -Blockly.Msg["DELETE_VARIABLE"] = "Verwijder de variabele \"%1\""; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1 gebruiken van de variabele \"%2\" verwijderen?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 blokken verwijderen"; -Blockly.Msg["DIALOG_CANCEL"] = "Annuleren"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Blok uitschakelen"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliceren"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Opmerking dupliceren"; -Blockly.Msg["ENABLE_BLOCK"] = "Blok inschakelen"; -Blockly.Msg["EXPAND_ALL"] = "Blokken uitvouwen"; -Blockly.Msg["EXPAND_BLOCK"] = "Blok uitvouwen"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Externe invoer"; -Blockly.Msg["HELP"] = "Hulp"; -Blockly.Msg["INLINE_INPUTS"] = "Inline invoer"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "maak een lege lijst"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Geeft een lijst terug met lengte 0, zonder items"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lijst"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Voeg stukken toe, verwijder ze of wijzig de volgorde om dit lijstblok aan te passen."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "maak een lijst met"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Voeg iets toe aan de lijst."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Maak een lijst met een willekeurig aantal items."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "eerste"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# van einde"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "haal op"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "haal op en verwijder"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "laatste"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "willekeurig"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "verwijder"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Geeft het eerste item in een lijst terug."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Geeft het item op de opgegeven positie in een lijst."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Geeft het laatste item in een lijst terug."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Geeft een willekeurig item uit een lijst."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Geeft het laatste item in een lijst terug en verwijdert het."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Geeft het item op de opgegeven positie in een lijst terug en verwijdert het."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Geeft het laatste item uit een lijst terug en verwijdert het."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Geeft een willekeurig item in een lijst terug en verwijdert het."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Verwijdert het eerste item in een lijst."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Verwijdert het item op de opgegeven positie in een lijst."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Verwijdert het laatste item uit een lijst."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Verwijdert een willekeurig item uit een lijst."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "naar # vanaf einde"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "naar item"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "naar laatste"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "haal sublijst op vanaf eerste"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "haal sublijst op van positie vanaf einde"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "haal sublijst op vanaf positie"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Maakt een kopie van het opgegeven deel van de lijst."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Item %1 is het laatste item."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Item %1 is het eerste item."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "zoek eerste voorkomen van item"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "zoek laatste voorkomen van item"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Geeft de index terug van het eerste of laatste voorkomen van een item in de lijst. Geeft %1 terug als het item niet is gevonden."; -Blockly.Msg["LISTS_INLIST"] = "in lijst"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is leeg"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Geeft waar terug als de lijst leeg is."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; -Blockly.Msg["LISTS_LENGTH_TITLE"] = "lengte van %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Geeft de lengte van een lijst terug."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_REPEAT_TITLE"] = "Maak lijst met item %1, %2 keer herhaald"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Maakt een lijst die bestaat uit de opgegeven waarde, het opgegeven aantal keer herhaald."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 omkeren"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Keert een kopie van een lijst om."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "als"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "tussenvoegen op"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "stel in"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Voegt het item toe aan het begin van de lijst."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Voegt het item op een opgegeven positie in een lijst in."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Voeg het item aan het einde van een lijst toe."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Voegt het item op een willekeurige positie in de lijst in."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Stelt het eerste item in een lijst in."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Zet het item op de opgegeven positie in de lijst."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Stelt het laatste item van een lijst in."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Stelt een willekeurig item uit de lijst in."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "oplopend"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "aflopend"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sorteer %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sorteer een kopie van een lijst."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetisch, negeer hoofd-/kleine letters"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeriek"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetisch"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lijst maken van tekst"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tekst maken van lijst"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Lijst van tekstdelen samenvoegen in één stuk tekst, waarbij de tekstdelen gescheiden zijn door een scheidingsteken."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tekst splitsen in een lijst van teksten op basis van een scheidingsteken."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "met scheidingsteken"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "onwaar"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Geeft \"waar\" of \"onwaar\" terug."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "waar"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://nl.wikipedia.org/wiki/Ongelijkheid_(wiskunde)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Geeft \"waar\", als beide waarden gelijk aan elkaar zijn."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Geeft \"waar\" terug als de eerste invoer meer is dan de tweede invoer."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Geeft \"waar\" terug als de eerste invoer groter is of gelijk aan de tweede invoer."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Geeft \"waar\" als de eerste invoer kleiner is dan de tweede invoer."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Geeft \"waar\" terug als de eerste invoer kleiner of gelijk is aan de tweede invoer."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Geeft \"waar\" terug als de waarden niet gelijk zijn aan elkaar."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "niet %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Geeft \"waar\" terug als de invoer \"onwaar\" is. Geeft \"onwaar\" als de invoer \"waar\" is."; -Blockly.Msg["LOGIC_NULL"] = "niets"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Geeft niets terug."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "en"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; -Blockly.Msg["LOGIC_OPERATION_OR"] = "of"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Geeft waar als beide waarden waar zijn."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Geeft \"waar\" terug als in ieder geval één van de waarden waar is."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "als onwaar"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "als waar"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Test de voorwaarde in \"test\". Als de voorwaarde \"waar\" is, geef de waarde van \"als waar\" terug; geef anders de waarde van \"als onwaar\" terug."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://nl.wikipedia.org/wiki/Rekenen"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Geeft de som van 2 getallen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Geeft de gedeelde waarde van twee getallen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Geeft het verschil van de twee getallen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Geeft het product terug van de twee getallen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Geeft het eerste getal tot de macht van het tweede getal."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 van X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Geef de boogtangens van punt (X, Y) terug in graden tussen -180 naar 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 wijzigen met %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Voegt een getal toe aan variabele \"%1\"."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://nl.wikipedia.org/wiki/Wiskundige_constante"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Geeft een van de vaak voorkomende constante waardes: π (3.141…), e (2.718…), φ (1.618…), √2 (1.414…), √½ (0.707…), of ∞ (oneindig)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "beperk %1 van minimaal %2 tot maximaal %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Beperk een getal tussen de twee opgegeven limieten (inclusief)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is deelbaar door"; -Blockly.Msg["MATH_IS_EVEN"] = "is even"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negatief"; -Blockly.Msg["MATH_IS_ODD"] = "is oneven"; -Blockly.Msg["MATH_IS_POSITIVE"] = "is positief"; -Blockly.Msg["MATH_IS_PRIME"] = "is priemgetal"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Test of een getal even, oneven, een priemgetal, geheel, positief of negatief is, of deelbaar is door een bepaald getal. Geeft \"waar\" of \"onwaar\"."; -Blockly.Msg["MATH_IS_WHOLE"] = "is geheel getal"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://nl.wikipedia.org/wiki/Modulair_rekenen"; -Blockly.Msg["MATH_MODULO_TITLE"] = "restgetal van %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Geeft het restgetal van het resultaat van de deling van de twee getallen."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://nl.wikipedia.org/wiki/Getal_%28wiskunde%29"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Een getal."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "gemiddelde van lijst"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "hoogste uit lijst"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediaan van lijst"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "laagste uit lijst"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modi van lijst"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "willekeurige item van lijst"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standaarddeviatie van lijst"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "som van lijst"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Geeft het gemiddelde terug van de numerieke waardes in een lijst."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Geeft het grootste getal in een lijst."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Geeft de mediaan in de lijst."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Geeft het kleinste getal uit een lijst."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Geeft een lijst van de meest voorkomende onderdelen in de lijst."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Geeft een willekeurig item uit de lijst terug."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Geeft de standaardafwijking van de lijst."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Geeft de som van alle getallen in de lijst."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://nl.wikipedia.org/wiki/Toevalsgenerator"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "willekeurige fractie"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Geeft een willekeurige fractie tussen 0.0 (inclusief) en 1.0 (exclusief)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://nl.wikipedia.org/wiki/Toevalsgenerator"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "willekeurig geheel getal van %1 tot %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Geeft een willekeurig getal tussen de 2 opgegeven limieten in, inclusief."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://nl.wikipedia.org/wiki/Afronden"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "afronden"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "naar beneden afronden"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "omhoog afronden"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rondt een getal af omhoog of naar beneden."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://nl.wikipedia.org/wiki/Vierkantswortel"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluut"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "wortel"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Geeft de absolute waarde van een getal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Geeft e tot de macht van een getal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Geeft het natuurlijk logaritme van een getal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Geeft het logaritme basis 10 van een getal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Geeft de negatief van een getal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Geeft 10 tot de macht van een getal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Geeft de wortel van een getal."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://nl.wikipedia.org/wiki/Goniometrische_functie"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Geeft de arccosinus van een getal."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Geeft de arcsinus van een getal."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Geeft de arctangens van een getal."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Geeft de cosinus van een graad (geen radialen)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Geeft de sinus van een graad (geen radialen)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Geeft de tangens van een graad (geen radialen)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Creëer kleurvariabele"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Creëer numeriek variabele"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Creëer tekstvariabele"; -Blockly.Msg["NEW_VARIABLE"] = "Variabele maken..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nieuwe variabelenaam:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nieuw soort variabele"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "statements toestaan"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "met:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Voer de door de gebruiker gedefinieerde functie \"%1\" uit."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Voer de door de gebruiker gedefinieerde functie \"%1\" uit en gebruik de uitvoer."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "met:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Maak \"%1\""; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Deze functie beschrijven..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "doe iets"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "om"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Maakt een functie zonder uitvoer."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "uitvoeren"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Maakt een functie met een uitvoer."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Waarschuwing: deze functie heeft parameters met dezelfde naam."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Accentueer functiedefinitie"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Als de eerste waarde \"waar\" is, geef dan de tweede waarde terug."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Waarschuwing: dit blok mag alleen gebruikt worden binnen de definitie van een functie."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "invoernaam:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Een invoer aan de functie toevoegen."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ingangen"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Invoer van deze functie toevoegen, verwijderen of herordenen."; -Blockly.Msg["REDO"] = "Opnieuw"; -Blockly.Msg["REMOVE_COMMENT"] = "Opmerking verwijderen"; -Blockly.Msg["RENAME_VARIABLE"] = "Variabele hernoemen..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Alle variabelen \"%1\" hernoemen naar:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_APPEND_TITLE"] = "voor%1 voeg tekst toe van %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Voeg tekst toe aan de variabele \"%1\"."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "naar kleine letters"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "naar Hoofdletter Per Woord"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "naar HOOFDLETTERS"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Geef een kopie van de tekst met veranderde hoofdletters terug."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "haal eerste letter op"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "haal letter # op vanaf einde"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "haal letter # op"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; -Blockly.Msg["TEXT_CHARAT_LAST"] = "haal laatste letter op"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "haal willekeurige letter op"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in tekst %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Geeft de letter op de opgegeven positie terug."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 in %2 tellen"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Tel hoe vaak bepaalde tekst voorkomt in andere tekst."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Voegt een item aan de tekst toe."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "samenvoegen"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Toevoegen, verwijderen of volgorde wijzigen van secties om dit tekstblok opnieuw in te stellen."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "van letter # tot einde"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "naar letter #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "naar laatste letter"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in tekst"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "haal subtekst op van eerste letter"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "haal subtekst op vanaf letter # vanaf einde"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "haal subtekst op vanaf letter #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Geeft het opgegeven onderdeel van de tekst terug."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "zoek eerste voorkomen van tekst"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "zoek het laatste voorkomen van tekst"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in tekst %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Geeft de index terug van het eerste of laatste voorkomen van de eerste tekst in de tweede tekst. Geeft %1 terug als de tekst niet gevonden is."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is leeg"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Geeft \"waar\" terug, als de opgegeven tekst leeg is."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "maak tekst met"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Maakt een stuk tekst door één of meer items samen te voegen."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_LENGTH_TITLE"] = "lengte van %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Geeft het aantal tekens terug (inclusief spaties) in de opgegeven tekst."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; -Blockly.Msg["TEXT_PRINT_TITLE"] = "tekst weergeven: %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Drukt de opgegeven tekst, getal of een andere waarde af."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Vraagt de gebruiker om een getal in te voeren."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Vraagt de gebruiker om invoer."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "vraagt de gebruiker om een getal met de tekst"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "vraagt om invoer met bericht"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "vervang %1 door %2 in %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Vervang alle voorkomens van tekst in een andere tekst."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 omkeren"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Keert de volgorde van de tekens in de tekst om."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://nl.wikipedia.org/wiki/String_%28informatica%29"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Een letter, woord of een regel tekst."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "spaties van beide kanten afhalen van"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "spaties van de linkerkant verwijderen van"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "spaties van de rechterkant verwijderen van"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Geeft een kopie van de tekst met verwijderde spaties van één of beide kanten."; -Blockly.Msg["TODAY"] = "Vandaag"; -Blockly.Msg["UNDO"] = "Ongedaan maken"; -Blockly.Msg["UNNAMED_KEY"] = "zonder naam"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Maak \"verander %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Geeft de waarde van deze variabele."; -Blockly.Msg["VARIABLES_SET"] = "stel %1 in op %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Maak 'opvragen van %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Verandert de waarde van de variabele naar de waarde van de invoer."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Er bestaat al een variabele met de naam \"%1\"."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Een variabele met de naam '%1' bestaat al voor een ander soort variabele: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly werkruimte"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Zeg iets..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Opmerking toevoegen"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "De variabele \"%1\" kan niet verwijderd worden omdat die onderdeel uitmaakt van de definitie van de functie \"%2\""; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Waarde wijzigen:"; +Blockly.Msg["CLEAN_UP"] = "Blokken opschonen"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Samengevouwen blokken bevatten waarschuwingen."; +Blockly.Msg["COLLAPSE_ALL"] = "Blokken samenvouwen"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Blok samenvouwen"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "kleur 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "kleur 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "verhouding"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mengen"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mengt twee kleuren samen met een bepaalde verhouding (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://nl.wikipedia.org/wiki/Kleur"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Kies een kleur in het palet."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "willekeurige kleur"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Kies een willekeurige kleur."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blauw"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "groen"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rood"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "kleuren met"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Maak een kleur met de opgegeven hoeveelheid rood, groen en blauw. Alle waarden moeten tussen 0 en 100 liggen."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "uit lus breken"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "doorgaan met de volgende iteratie van de lus"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Uit de bovenliggende lus breken."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "De rest van deze lus overslaan en doorgaan met de volgende herhaling."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Waarschuwing: dit blok mag alleen gebruikt worden in een lus."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "voor ieder item %1 in lijst %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Voor ieder item in een lijst, stel de variabele \"%1\" in op het item en voer daarna opdrachten uit."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "rekenen met %1 van %2 tot %3 in stappen van %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Laat de variabele \"%1\" de waarden aannemen van het beginnummer tot het laatste nummer, tellende met het opgegeven interval, en met uitvoering van de opgegeven blokken."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Voeg een voorwaarde toe aan het als-blok."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Voeg een laatste, vang-alles conditie toe aan het als-statement."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Voeg stukken toe, verwijder of wijzig de volgorde om dit \"als\"-blok te wijzigen."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "anders"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "anders als"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "als"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Als een waarde waar is, voer dan opdrachten uit."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Als een waarde waar is, voert dan het eerste blok met opdrachten uit. Voer andere het tweede blok met opdrachten uit."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Als de eerste waarde waar is, voer dan het eerste blok met opdrachten uit. Voer anders, als de tweede waarde waar is, het tweede blok met opdrachten uit."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Als de eerste waarde \"waar\" is, voer dan het eerste blok uit. Voer anders wanneer de tweede waarde \"waar\" is, het tweede blok uit. Als geen van beide waarden waar zijn, voer dan het laatste blok uit."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://nl.wikipedia.org/wiki/Repetitie_(informatica)#For_en_Foreach"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "voer uit"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 keer herhalen"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Voer een aantal opdrachten meerdere keren uit."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "herhalen totdat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "herhalen zolang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Terwijl een waarde onwaar is de volgende opdrachten uitvoeren."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Terwijl een waarde waar is de volgende opdrachten uitvoeren."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Alle %1 blokken verwijderen?"; +Blockly.Msg["DELETE_BLOCK"] = "Blok verwijderen"; +Blockly.Msg["DELETE_VARIABLE"] = "Verwijder de variabele \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%1 gebruiken van de variabele \"%2\" verwijderen?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 blokken verwijderen"; +Blockly.Msg["DIALOG_CANCEL"] = "Annuleren"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Blok uitschakelen"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliceren"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Opmerking dupliceren"; +Blockly.Msg["ENABLE_BLOCK"] = "Blok inschakelen"; +Blockly.Msg["EXPAND_ALL"] = "Blokken uitvouwen"; +Blockly.Msg["EXPAND_BLOCK"] = "Blok uitvouwen"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Externe invoer"; +Blockly.Msg["HELP"] = "Hulp"; +Blockly.Msg["INLINE_INPUTS"] = "Inline invoer"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "maak een lege lijst"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Geeft een lijst terug met lengte 0, zonder items"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lijst"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Voeg stukken toe, verwijder ze of wijzig de volgorde om dit lijstblok aan te passen."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "maak een lijst met"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Voeg iets toe aan de lijst."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Maak een lijst met een willekeurig aantal items."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "eerste"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# van einde"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "haal op"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "haal op en verwijder"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "laatste"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "willekeurig"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "verwijder"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Geeft het eerste item in een lijst terug."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Geeft het item op de opgegeven positie in een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Geeft het laatste item in een lijst terug."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Geeft een willekeurig item uit een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Geeft het laatste item in een lijst terug en verwijdert het."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Geeft het item op de opgegeven positie in een lijst terug en verwijdert het."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Geeft het laatste item uit een lijst terug en verwijdert het."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Geeft een willekeurig item in een lijst terug en verwijdert het."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Verwijdert het eerste item in een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Verwijdert het item op de opgegeven positie in een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Verwijdert het laatste item uit een lijst."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Verwijdert een willekeurig item uit een lijst."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "naar # vanaf einde"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "naar item"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "naar laatste"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "haal sublijst op vanaf eerste"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "haal sublijst op van positie vanaf einde"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "haal sublijst op vanaf positie"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Maakt een kopie van het opgegeven deel van de lijst."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Item %1 is het laatste item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Item %1 is het eerste item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "zoek eerste voorkomen van item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "zoek laatste voorkomen van item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Geeft de index terug van het eerste of laatste voorkomen van een item in de lijst. Geeft %1 terug als het item niet is gevonden."; +Blockly.Msg["LISTS_INLIST"] = "in lijst"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is leeg"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Geeft waar terug als de lijst leeg is."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lengte van %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Geeft de lengte van een lijst terug."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Maak lijst met item %1, %2 keer herhaald"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Maakt een lijst die bestaat uit de opgegeven waarde, het opgegeven aantal keer herhaald."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 omkeren"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Keert een kopie van een lijst om."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "als"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "tussenvoegen op"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "stel in"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Voegt het item toe aan het begin van de lijst."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Voegt het item op een opgegeven positie in een lijst in."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Voeg het item aan het einde van een lijst toe."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Voegt het item op een willekeurige positie in de lijst in."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Stelt het eerste item in een lijst in."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Zet het item op de opgegeven positie in de lijst."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Stelt het laatste item van een lijst in."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Stelt een willekeurig item uit de lijst in."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "oplopend"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "aflopend"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sorteer %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sorteer een kopie van een lijst."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetisch, negeer hoofd-/kleine letters"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeriek"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetisch"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "lijst maken van tekst"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tekst maken van lijst"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Lijst van tekstdelen samenvoegen in één stuk tekst, waarbij de tekstdelen gescheiden zijn door een scheidingsteken."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tekst splitsen in een lijst van teksten op basis van een scheidingsteken."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "met scheidingsteken"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "onwaar"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Geeft \"waar\" of \"onwaar\" terug."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "waar"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://nl.wikipedia.org/wiki/Ongelijkheid_(wiskunde)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Geeft \"waar\", als beide waarden gelijk aan elkaar zijn."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Geeft \"waar\" terug als de eerste invoer meer is dan de tweede invoer."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Geeft \"waar\" terug als de eerste invoer groter is of gelijk aan de tweede invoer."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Geeft \"waar\" als de eerste invoer kleiner is dan de tweede invoer."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Geeft \"waar\" terug als de eerste invoer kleiner of gelijk is aan de tweede invoer."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Geeft \"waar\" terug als de waarden niet gelijk zijn aan elkaar."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "niet %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Geeft \"waar\" terug als de invoer \"onwaar\" is. Geeft \"onwaar\" als de invoer \"waar\" is."; +Blockly.Msg["LOGIC_NULL"] = "niets"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Geeft niets terug."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "en"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "of"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Geeft waar als beide waarden waar zijn."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Geeft \"waar\" terug als in ieder geval één van de waarden waar is."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "als onwaar"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "als waar"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Test de voorwaarde in \"test\". Als de voorwaarde \"waar\" is, geef de waarde van \"als waar\" terug; geef anders de waarde van \"als onwaar\" terug."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://nl.wikipedia.org/wiki/Rekenen"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Geeft de som van 2 getallen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Geeft de gedeelde waarde van twee getallen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Geeft het verschil van de twee getallen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Geeft het product terug van de twee getallen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Geeft het eerste getal tot de macht van het tweede getal."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 van X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Geef de boogtangens van punt (X, Y) terug in graden tussen -180 naar 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 wijzigen met %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Voegt een getal toe aan variabele \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://nl.wikipedia.org/wiki/Wiskundige_constante"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Geeft een van de vaak voorkomende constante waardes: π (3.141…), e (2.718…), φ (1.618…), √2 (1.414…), √½ (0.707…), of ∞ (oneindig)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "beperk %1 van minimaal %2 tot maximaal %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Beperk een getal tussen de twee opgegeven limieten (inclusief)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is deelbaar door"; +Blockly.Msg["MATH_IS_EVEN"] = "is even"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negatief"; +Blockly.Msg["MATH_IS_ODD"] = "is oneven"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positief"; +Blockly.Msg["MATH_IS_PRIME"] = "is priemgetal"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Test of een getal even, oneven, een priemgetal, geheel, positief of negatief is, of deelbaar is door een bepaald getal. Geeft \"waar\" of \"onwaar\"."; +Blockly.Msg["MATH_IS_WHOLE"] = "is geheel getal"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://nl.wikipedia.org/wiki/Modulair_rekenen"; +Blockly.Msg["MATH_MODULO_TITLE"] = "restgetal van %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Geeft het restgetal van het resultaat van de deling van de twee getallen."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://nl.wikipedia.org/wiki/Getal_%28wiskunde%29"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Een getal."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "gemiddelde van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "hoogste uit lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediaan van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "laagste uit lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modi van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "willekeurige item van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standaarddeviatie van lijst"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "som van lijst"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Geeft het gemiddelde terug van de numerieke waardes in een lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Geeft het grootste getal in een lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Geeft de mediaan in de lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Geeft het kleinste getal uit een lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Geeft een lijst van de meest voorkomende onderdelen in de lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Geeft een willekeurig item uit de lijst terug."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Geeft de standaardafwijking van de lijst."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Geeft de som van alle getallen in de lijst."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://nl.wikipedia.org/wiki/Toevalsgenerator"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "willekeurige fractie"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Geeft een willekeurige fractie tussen 0.0 (inclusief) en 1.0 (exclusief)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://nl.wikipedia.org/wiki/Toevalsgenerator"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "willekeurig geheel getal van %1 tot %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Geeft een willekeurig getal tussen de 2 opgegeven limieten in, inclusief."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://nl.wikipedia.org/wiki/Afronden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "afronden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "naar beneden afronden"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "omhoog afronden"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rondt een getal af omhoog of naar beneden."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://nl.wikipedia.org/wiki/Vierkantswortel"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "wortel"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Geeft de absolute waarde van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Geeft e tot de macht van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Geeft het natuurlijk logaritme van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Geeft het logaritme basis 10 van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Geeft de negatief van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Geeft 10 tot de macht van een getal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Geeft de wortel van een getal."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://nl.wikipedia.org/wiki/Goniometrische_functie"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Geeft de arccosinus van een getal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Geeft de arcsinus van een getal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Geeft de arctangens van een getal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Geeft de cosinus van een graad (geen radialen)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Geeft de sinus van een graad (geen radialen)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Geeft de tangens van een graad (geen radialen)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Creëer kleurvariabele"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Creëer numeriek variabele"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Creëer tekstvariabele"; +Blockly.Msg["NEW_VARIABLE"] = "Variabele maken..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nieuwe variabelenaam:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nieuw soort variabele"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "statements toestaan"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "met:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Voer de door de gebruiker gedefinieerde functie \"%1\" uit."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Voer de door de gebruiker gedefinieerde functie \"%1\" uit en gebruik de uitvoer."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "met:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Maak \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Deze functie beschrijven..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "doe iets"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "om"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Maakt een functie zonder uitvoer."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://nl.wikipedia.org/wiki/Subprogramma"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "uitvoeren"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Maakt een functie met een uitvoer."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Waarschuwing: deze functie heeft parameters met dezelfde naam."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Accentueer functiedefinitie"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Als de eerste waarde \"waar\" is, geef dan de tweede waarde terug."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Waarschuwing: dit blok mag alleen gebruikt worden binnen de definitie van een functie."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "invoernaam:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Een invoer aan de functie toevoegen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ingangen"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Invoer van deze functie toevoegen, verwijderen of herordenen."; +Blockly.Msg["REDO"] = "Opnieuw"; +Blockly.Msg["REMOVE_COMMENT"] = "Opmerking verwijderen"; +Blockly.Msg["RENAME_VARIABLE"] = "Variabele hernoemen..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Alle variabelen \"%1\" hernoemen naar:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "voor%1 voeg tekst toe van %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Voeg tekst toe aan de variabele \"%1\"."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "naar kleine letters"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "naar Hoofdletter Per Woord"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "naar HOOFDLETTERS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Geef een kopie van de tekst met veranderde hoofdletters terug."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "haal eerste letter op"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "haal letter # op vanaf einde"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "haal letter # op"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "haal laatste letter op"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "haal willekeurige letter op"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in tekst %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Geeft de letter op de opgegeven positie terug."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 in %2 tellen"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Tel hoe vaak bepaalde tekst voorkomt in andere tekst."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Voegt een item aan de tekst toe."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "samenvoegen"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Toevoegen, verwijderen of volgorde wijzigen van secties om dit tekstblok opnieuw in te stellen."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "van letter # tot einde"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "naar letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "naar laatste letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in tekst"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "haal subtekst op van eerste letter"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "haal subtekst op vanaf letter # vanaf einde"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "haal subtekst op vanaf letter #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Geeft het opgegeven onderdeel van de tekst terug."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "zoek eerste voorkomen van tekst"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "zoek het laatste voorkomen van tekst"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in tekst %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Geeft de index terug van het eerste of laatste voorkomen van de eerste tekst in de tweede tekst. Geeft %1 terug als de tekst niet gevonden is."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is leeg"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Geeft \"waar\" terug, als de opgegeven tekst leeg is."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "maak tekst met"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Maakt een stuk tekst door één of meer items samen te voegen."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lengte van %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Geeft het aantal tekens terug (inclusief spaties) in de opgegeven tekst."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "tekst weergeven: %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Drukt de opgegeven tekst, getal of een andere waarde af."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Vraagt de gebruiker om een getal in te voeren."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Vraagt de gebruiker om invoer."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "vraagt de gebruiker om een getal met de tekst"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "vraagt om invoer met bericht"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "vervang %1 door %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Vervang alle voorkomens van tekst in een andere tekst."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 omkeren"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Keert de volgorde van de tekens in de tekst om."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://nl.wikipedia.org/wiki/String_%28informatica%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Een letter, woord of een regel tekst."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "spaties van beide kanten afhalen van"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "spaties van de linkerkant verwijderen van"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "spaties van de rechterkant verwijderen van"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Geeft een kopie van de tekst met verwijderde spaties van één of beide kanten."; +Blockly.Msg["TODAY"] = "Vandaag"; +Blockly.Msg["UNDO"] = "Ongedaan maken"; +Blockly.Msg["UNNAMED_KEY"] = "zonder naam"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Maak \"verander %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Geeft de waarde van deze variabele."; +Blockly.Msg["VARIABLES_SET"] = "stel %1 in op %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Maak 'opvragen van %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Verandert de waarde van de variabele naar de waarde van de invoer."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Er bestaat al een variabele met de naam \"%1\"."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Een variabele met de naam '%1' bestaat al voor een ander soort variabele: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly werkruimte"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Zeg iets..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/oc.js b/msg/js/oc.js index 3ed6505c6d8..599f418aafd 100644 --- a/msg/js/oc.js +++ b/msg/js/oc.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Apondre un comentari"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modificar la valor :"; -Blockly.Msg["CLEAN_UP"] = "Netejar los blòts"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Redusir los blòts"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Redusir lo blòt"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mesclar"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://oc.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Causir una color dins la paleta."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatòria"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Causir una color a l'azard."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verd"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "roge"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "coloriar amb"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "quitar la bocla"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "passar a l’iteracion de bocla seguenta"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sortir de la bocla englobanta."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per cada element %1 dins la lista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "comptar amb %1 de %2 a %3 per %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Apondre una condicion al blòt 'se'."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "siquenon"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "siquenon se"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://oc.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "far"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 còps"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir fins a"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir tant que"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Suprimir totes los %1 blòts ?"; -Blockly.Msg["DELETE_BLOCK"] = "Suprimir lo blòt"; -Blockly.Msg["DELETE_VARIABLE"] = "Suprimir la variabla '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Suprimir %1 blòts"; -Blockly.Msg["DIALOG_CANCEL"] = "Anullar"; -Blockly.Msg["DIALOG_OK"] = "D'acòrdi"; -Blockly.Msg["DISABLE_BLOCK"] = "Desactivar lo blòt"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Activar lo blòt"; -Blockly.Msg["EXPAND_ALL"] = "Desvolopar los blòts"; -Blockly.Msg["EXPAND_BLOCK"] = "Desvolopar lo blòt"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas extèrnas"; -Blockly.Msg["HELP"] = "Ajuda"; -Blockly.Msg["INLINE_INPUTS"] = "Entradas en linha"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear una lista voida"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear una lista amb"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Apondre un element a la lista."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primièr"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dempuèi la fin"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "obténer"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obténer e suprimir"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "darrièr"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatòri"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "suprimit"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Renvia lo primièr element dins una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Renvia l'element de la posicion especificada dins la lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "fins a # dempuèi la fin"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fins a #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "fins a la fin"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es lo darrièr element."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es lo primièr element."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "dins la lista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 es voida"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitud de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inversar %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inversar la còpia d’una lista."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "coma"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir en"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "metre"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "creissent"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descreissent"; -Blockly.Msg["LISTS_SORT_TITLE"] = "triar %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetic"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "amb lo separador"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fals"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Renvia siá verai siá fals."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verai"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fr.wikipedia.org/wiki/Inegalite_(mathematiques)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Renviar verai se las doas entradas son egalas."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Renviar verai se las doas entradas son diferentas."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "pas %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "nul"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Renvia nul."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Renviar verai se las doas entradas son vertadièras."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "tèst"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se fals"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verai"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://oc.wikipedia.org/wiki/Aritmetica"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Renvia la soma dels dos nombres."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "incrementar %1 per %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrénher %1 entre %2 e %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "es devesible per"; -Blockly.Msg["MATH_IS_EVEN"] = "es par"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "es negatiu"; -Blockly.Msg["MATH_IS_ODD"] = "es impar"; -Blockly.Msg["MATH_IS_POSITIVE"] = "es positiu"; -Blockly.Msg["MATH_IS_PRIME"] = "es primièr"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "es entièr"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "residú de %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://oc.wikipedia.org/wiki/Nombre"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nombre."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mejana de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximum de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "majoritaris de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element aleatòri de lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "escart-tipe de la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma de la lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraccion aleatòria"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredondir"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredondir a l’inferior"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredondir al superior"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fr.wikipedia.org/wiki/Racine_carree"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raiç carrada"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Renvia la valor absoluda d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Renvia a la poténcia d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Renvia lo logaritme natural d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Renvia lo logaritme decimal d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Renvia l’opausat d’un nombre"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Renvia 10 a la poténcia d’un nombre."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Renvia la raiç carrada d’un nombre."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Renvia l’arccosinus d’un nombre."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Renvia l’arcsinus d’un nombre."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Renvia l’arctangenta d’un nombre."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Renvia lo cosinus d’un angle en grases (pas en radians)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Renvia lo sinus d’un angle en grases (pas en radians)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Renvia la tangenta d’un angle en grases (pas en radians)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear una variabla color…"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crear una variabla nombre…"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear una variabla cadena…"; -Blockly.Msg["NEW_VARIABLE"] = "Crear una variabla..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nom de la novèla variabla :"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Novèl tipe de variabla :"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "autorizar los òrdres"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "amb :"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "amb :"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "far quicòm"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "a"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorn"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nom de l’entrada :"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Refar"; -Blockly.Msg["REMOVE_COMMENT"] = "Suprimir un comentari"; -Blockly.Msg["RENAME_VARIABLE"] = "Renomenar la variabla…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomenar totas las variablas « %1 » a :"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 apondre lo tèxte %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "en minusculas"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "en Majuscula Al Començament De Cada Mot"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "en MAJUSCULAS"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "obténer la primièra letra"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obténer la letra # dempuèi la fin"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obténer la letra #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "obténer la darrièra letra"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obténer una letra a l'azard"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "dins lo tèxte %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Renvia la letra a la posicion indicada."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "nombre %1 sus %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "jónher"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "fins a la letra #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "fins a la darrièra letra"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "dins lo tèxte"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "dins lo tèxte %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 es void"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear un tèxte amb"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "longor de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "afichar %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inversar %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una letra, un mot o una linha de tèxte."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "suprimir los espacis dels dos costats"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Uèi"; -Blockly.Msg["UNDO"] = "Anullar"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crear 'fixar %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "fixar %1 a %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'obténer %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Existís ja una variabla nomenada \"%1\"."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Apondre un comentari"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modificar la valor :"; +Blockly.Msg["CLEAN_UP"] = "Netejar los blòts"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Redusir los blòts"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Redusir lo blòt"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mesclar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://oc.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Causir una color dins la paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color aleatòria"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Causir una color a l'azard."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blau"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verd"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "roge"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "coloriar amb"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "quitar la bocla"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "passar a l’iteracion de bocla seguenta"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sortir de la bocla englobanta."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per cada element %1 dins la lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "comptar amb %1 de %2 a %3 per %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Apondre una condicion al blòt 'se'."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "siquenon"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "siquenon se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://oc.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "far"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 còps"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir fins a"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir tant que"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Suprimir totes los %1 blòts ?"; +Blockly.Msg["DELETE_BLOCK"] = "Suprimir lo blòt"; +Blockly.Msg["DELETE_VARIABLE"] = "Suprimir la variabla '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Suprimir %1 blòts"; +Blockly.Msg["DIALOG_CANCEL"] = "Anullar"; +Blockly.Msg["DIALOG_OK"] = "D'acòrdi"; +Blockly.Msg["DISABLE_BLOCK"] = "Desactivar lo blòt"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Activar lo blòt"; +Blockly.Msg["EXPAND_ALL"] = "Desvolopar los blòts"; +Blockly.Msg["EXPAND_BLOCK"] = "Desvolopar lo blòt"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas extèrnas"; +Blockly.Msg["HELP"] = "Ajuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas en linha"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "crear una lista voida"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "crear una lista amb"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Apondre un element a la lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primièr"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# dempuèi la fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obténer"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obténer e suprimir"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "darrièr"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatòri"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "suprimit"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Renvia lo primièr element dins una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Renvia l'element de la posicion especificada dins la lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "fins a # dempuèi la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fins a #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "fins a la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 es lo darrièr element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 es lo primièr element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "dins la lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 es voida"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longitud de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inversar %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inversar la còpia d’una lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "coma"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir en"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "metre"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "creissent"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descreissent"; +Blockly.Msg["LISTS_SORT_TITLE"] = "triar %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "amb lo separador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fals"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Renvia siá verai siá fals."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verai"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://fr.wikipedia.org/wiki/Inegalite_(mathematiques)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Renviar verai se las doas entradas son egalas."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Renviar verai se las doas entradas son diferentas."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "pas %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "nul"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Renvia nul."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Renviar verai se las doas entradas son vertadièras."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "tèst"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se fals"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verai"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://oc.wikipedia.org/wiki/Aritmetica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Renvia la soma dels dos nombres."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "incrementar %1 per %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrénher %1 entre %2 e %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "es devesible per"; +Blockly.Msg["MATH_IS_EVEN"] = "es par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "es negatiu"; +Blockly.Msg["MATH_IS_ODD"] = "es impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "es positiu"; +Blockly.Msg["MATH_IS_PRIME"] = "es primièr"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "es entièr"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "residú de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://oc.wikipedia.org/wiki/Nombre"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nombre."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mejana de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximum de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "majoritaris de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element aleatòri de lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "escart-tipe de la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma de la lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraccion aleatòria"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredondir"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredondir a l’inferior"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredondir al superior"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://fr.wikipedia.org/wiki/Racine_carree"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raiç carrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Renvia la valor absoluda d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Renvia a la poténcia d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Renvia lo logaritme natural d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Renvia lo logaritme decimal d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Renvia l’opausat d’un nombre"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Renvia 10 a la poténcia d’un nombre."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Renvia la raiç carrada d’un nombre."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Renvia l’arccosinus d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Renvia l’arcsinus d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Renvia l’arctangenta d’un nombre."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Renvia lo cosinus d’un angle en grases (pas en radians)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Renvia lo sinus d’un angle en grases (pas en radians)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Renvia la tangenta d’un angle en grases (pas en radians)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crear una variabla color…"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crear una variabla nombre…"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crear una variabla cadena…"; +Blockly.Msg["NEW_VARIABLE"] = "Crear una variabla..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nom de la novèla variabla :"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Novèl tipe de variabla :"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "autorizar los òrdres"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "amb :"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "amb :"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Crear '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "far quicòm"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "a"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorn"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nom de l’entrada :"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Refar"; +Blockly.Msg["REMOVE_COMMENT"] = "Suprimir un comentari"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomenar la variabla…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomenar totas las variablas « %1 » a :"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 apondre lo tèxte %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "en minusculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "en Majuscula Al Començament De Cada Mot"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "en MAJUSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obténer la primièra letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obténer la letra # dempuèi la fin"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obténer la letra #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obténer la darrièra letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obténer una letra a l'azard"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "dins lo tèxte %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Renvia la letra a la posicion indicada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "nombre %1 sus %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "jónher"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "fins a la letra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "fins a la darrièra letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "dins lo tèxte"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "dins lo tèxte %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 es void"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crear un tèxte amb"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longor de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "afichar %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inversar %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una letra, un mot o una linha de tèxte."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "suprimir los espacis dels dos costats"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Uèi"; +Blockly.Msg["UNDO"] = "Anullar"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crear 'fixar %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "fixar %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crear 'obténer %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Existís ja una variabla nomenada \"%1\"."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/olo.js b/msg/js/olo.js index 89ff2d3da22..590c1566a4a 100644 --- a/msg/js/olo.js +++ b/msg/js/olo.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Ližätä kommentarii"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muuttua merkitys:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "väri 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "väri 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "sinine"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "vihandu"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ruskei"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "Väri"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sit"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sit gu"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "gu"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "rua"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Hylgiä"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Kopiiruija"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Kyzy abuu"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "valeh"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tozi"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "da"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "libo"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ei olle tozi"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ollou tozi"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "on negatiivine"; -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "on pozitiivine"; -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Poistua kommentarii"; -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "eči kirjain #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "luaji tekstu"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Kirjain, sana libo riädy tekstua."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Tänäpäi"; -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ližätä kommentarii"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muuttua merkitys:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "väri 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "väri 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "sinine"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "vihandu"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruskei"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "Väri"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sit"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sit gu"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "gu"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "rua"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Hylgiä"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopiiruija"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Kyzy abuu"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "valeh"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tozi"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "da"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "libo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ei olle tozi"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ollou tozi"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "on negatiivine"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "on pozitiivine"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Poistua kommentarii"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "eči kirjain #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "luaji tekstu"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Kirjain, sana libo riädy tekstua."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Tänäpäi"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/pa.js b/msg/js/pa.js index 80a45616def..a73d9bb0206 100644 --- a/msg/js/pa.js +++ b/msg/js/pa.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ਟਿੱਪਣੀ ਕਰੋ"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ਮੁੱਲ ਬਦਲੋ:"; -Blockly.Msg["CLEAN_UP"] = "ਬਲਾਕ ਸਾਫ਼ ਕਰੋ"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ਬਲਾਕਾਂ ਨੂੰ ਸਮੇਟੋ"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ਬਲਾਕ ਸਮੇਟੋ"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ਰੰਗ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ਰੰਗ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ਅਨੁਪਾਤ"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ਮਿਸ਼ਰਣ ਕਰੋ"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ਦਿੱਤੇ ਅਨੁਪਾਤ (0.0 - 1.0) ਅਨੁਸਾਰ ਦੋ ਰੰਗ ਮਿਲਾਓ।"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ਰੰਗ-ਫੱਟੀ ਵਿੱਚੋਂ ਰੰਗ ਚੁਣੋ"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ਰਲ਼ਵਾਂ ਰੰਗ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ਰਲ਼ਵਾਂ ਰੰਗ ਚੁਣੋ"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "ਨੀਲਾ"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ਹਰਾ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ਲਾਲ"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ਰੰਗ ਬਣਾਉਣ ਲਈ ਲਾਲ, ਹਰੇ ਅਤੇ ਨੀਲੇ ਨੂੰ ਨਿਰਧਾਰਿਤ ਮਾਤਰਾ ਵਿੱਚ ਮਿਲਾਓ। ਰਲਾਉਣ ਦੀ ਮਾਤਰਾ ਦਾ ਮੁੱਲ 0 ਤੋਂ 100 ਦੇ ਵਿਚਕਾਰ ਹੀ ਰੱਖੋ।"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ਹੋਰ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ਜੇ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ਕਰੋ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 ਵਾਰੀ ਦੁਹਰਾਉ"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "ਕੀ ਸਾਰੇ %1 ਬਲਾਕ ਮਿਟਾਉਣੇ ਹਨ?"; -Blockly.Msg["DELETE_BLOCK"] = "ਬਲਾਕ ਮਿਟਾਉ"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ਬਲਾਕ ਮਿਟਾਉ"; -Blockly.Msg["DIALOG_CANCEL"] = "ਰੱਦ ਕਰੋ"; -Blockly.Msg["DIALOG_OK"] = "ਠੀਕ ਹੈ।"; -Blockly.Msg["DISABLE_BLOCK"] = "ਬਲਾਕ ਬੰਦ ਕਰੋ"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ਨਕਲ"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "ਬਲਾਕ ਚਾਲੂ ਕਰੋ"; -Blockly.Msg["EXPAND_ALL"] = "ਬਲਾਕਾਂ ਨੂੰ ਫੈਲਾਉ"; -Blockly.Msg["EXPAND_BLOCK"] = "ਬਲਾਕ ਫੈਲਾਉ"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ਬਾਹਰੀ ਇੱਨਪੁੱਟ"; -Blockly.Msg["HELP"] = "ਮਦਦ"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ਪਹਿਲਾ"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ਆਖ਼ਰੀ"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ਰਲ਼ਵਾਂ"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ਘਟਦੇ ਕ੍ਰਮ ਵਿੱਚ"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ਝੂਠ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ਸੱਚ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "ਨੱਲ"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ਨੱਲ ਮੋੜਦਾ ਹੈ।"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ਅਤੇ"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ਜਾਂ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ਟੈਸਟ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ਜੇ ਝੂਠ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ਜੇ ਸੱਚ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://pa.wikipedia.org/wiki/ਗਿਣਤੀ"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ਦੋ ਅੰਕਾੰ ਦਾ ਜੋੜ ਮੋੜੋ।"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ਇੱਕ ਅੰਕ"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://pa.wikipedia.org/wiki/ਵਰਗ_ਮੂਲ"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ਵਰਗ ਮੂਲ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ਇੱਕ ਅੰਕ ਦਾ ਵਰਗ ਮੂਲ ਮੋੜੋ।"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ਮੋੜੋ"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ਮੁੜ ਕਰੋ"; -Blockly.Msg["REMOVE_COMMENT"] = "ਟਿੱਪਣੀ ਹਟਾਉ"; -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "ਅੱਜ"; -Blockly.Msg["UNDO"] = "ਅਣਕੀਤਾ ਕਰੋ"; -Blockly.Msg["UNNAMED_KEY"] = "ਬੇਨਾਮ"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ਸਮੱਗਰੀ"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ਟਿੱਪਣੀ ਕਰੋ"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ਮੁੱਲ ਬਦਲੋ:"; +Blockly.Msg["CLEAN_UP"] = "ਬਲਾਕ ਸਾਫ਼ ਕਰੋ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ਬਲਾਕਾਂ ਨੂੰ ਸਮੇਟੋ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ਬਲਾਕ ਸਮੇਟੋ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ਰੰਗ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ਰੰਗ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ਅਨੁਪਾਤ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ਮਿਸ਼ਰਣ ਕਰੋ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ਦਿੱਤੇ ਅਨੁਪਾਤ (0.0 - 1.0) ਅਨੁਸਾਰ ਦੋ ਰੰਗ ਮਿਲਾਓ।"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ਰੰਗ-ਫੱਟੀ ਵਿੱਚੋਂ ਰੰਗ ਚੁਣੋ"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ਰਲ਼ਵਾਂ ਰੰਗ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ਰਲ਼ਵਾਂ ਰੰਗ ਚੁਣੋ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ਨੀਲਾ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ਹਰਾ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ਲਾਲ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ਰੰਗ ਬਣਾਉਣ ਲਈ ਲਾਲ, ਹਰੇ ਅਤੇ ਨੀਲੇ ਨੂੰ ਨਿਰਧਾਰਿਤ ਮਾਤਰਾ ਵਿੱਚ ਮਿਲਾਓ। ਰਲਾਉਣ ਦੀ ਮਾਤਰਾ ਦਾ ਮੁੱਲ 0 ਤੋਂ 100 ਦੇ ਵਿਚਕਾਰ ਹੀ ਰੱਖੋ।"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ਹੋਰ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ਜੇ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ਕਰੋ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 ਵਾਰੀ ਦੁਹਰਾਉ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ਕੀ ਸਾਰੇ %1 ਬਲਾਕ ਮਿਟਾਉਣੇ ਹਨ?"; +Blockly.Msg["DELETE_BLOCK"] = "ਬਲਾਕ ਮਿਟਾਉ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ਬਲਾਕ ਮਿਟਾਉ"; +Blockly.Msg["DIALOG_CANCEL"] = "ਰੱਦ ਕਰੋ"; +Blockly.Msg["DIALOG_OK"] = "ਠੀਕ ਹੈ।"; +Blockly.Msg["DISABLE_BLOCK"] = "ਬਲਾਕ ਬੰਦ ਕਰੋ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ਨਕਲ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ਬਲਾਕ ਚਾਲੂ ਕਰੋ"; +Blockly.Msg["EXPAND_ALL"] = "ਬਲਾਕਾਂ ਨੂੰ ਫੈਲਾਉ"; +Blockly.Msg["EXPAND_BLOCK"] = "ਬਲਾਕ ਫੈਲਾਉ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ਬਾਹਰੀ ਇੱਨਪੁੱਟ"; +Blockly.Msg["HELP"] = "ਮਦਦ"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ਪਹਿਲਾ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ਆਖ਼ਰੀ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ਰਲ਼ਵਾਂ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ਘਟਦੇ ਕ੍ਰਮ ਵਿੱਚ"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ਝੂਠ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ਸੱਚ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "ਨੱਲ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ਨੱਲ ਮੋੜਦਾ ਹੈ।"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ਅਤੇ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ਜਾਂ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ਟੈਸਟ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ਜੇ ਝੂਠ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ਜੇ ਸੱਚ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://pa.wikipedia.org/wiki/ਗਿਣਤੀ"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ਦੋ ਅੰਕਾੰ ਦਾ ਜੋੜ ਮੋੜੋ।"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ਇੱਕ ਅੰਕ"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://pa.wikipedia.org/wiki/ਵਰਗ_ਮੂਲ"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ਵਰਗ ਮੂਲ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ਇੱਕ ਅੰਕ ਦਾ ਵਰਗ ਮੂਲ ਮੋੜੋ।"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ਮੋੜੋ"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ਮੁੜ ਕਰੋ"; +Blockly.Msg["REMOVE_COMMENT"] = "ਟਿੱਪਣੀ ਹਟਾਉ"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ਅੱਜ"; +Blockly.Msg["UNDO"] = "ਅਣਕੀਤਾ ਕਰੋ"; +Blockly.Msg["UNNAMED_KEY"] = "ਬੇਨਾਮ"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ਸਮੱਗਰੀ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/pl.js b/msg/js/pl.js index 7872b88bae1..d3dc99a9a9a 100644 --- a/msg/js/pl.js +++ b/msg/js/pl.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Dodaj Komentarz"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nie można usunąć zmiennej '%1', ponieważ jest częścią definicji funkcji '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Zmień wartość:"; -Blockly.Msg["CLEAN_UP"] = "Uporządkuj Bloki"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Zwinięte bloki zawierają ostrzeżenia."; -Blockly.Msg["COLLAPSE_ALL"] = "Zwiń Bloki"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Zwiń Klocek"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "kolor 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "kolor 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporcja"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "wymieszaj"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Miesza dwa kolory w danej proporcji (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Wybierz kolor z palety."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "losowy kolor"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Wybierz kolor w sposób losowy."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "niebieski"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "zielony"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "czerwony"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "kolor z"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Utwórz kolor składający sie z podanej ilości czerwieni, zieleni i błękitu. Zakres wartości: 0 do 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "przerwij pętlę"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "przejdź do kolejnej iteracji pętli"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Przerwij działanie pętli."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Pomiń resztę pętli i kontynuuj w kolejnej iteracji."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Uwaga: Ten klocek może być użyty tylko wewnątrz pętli."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "dla każdego elementu %1 listy %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Przypisz zmiennej '%1' kolejno wartość każdego elementu listy, a następnie wykonaj kilka instrukcji."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "licz z %1 od %2 do %3 co %4 (wartość kroku)"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Zmiennej '%1' przypisuje wartości z podanego zakresu z podanym interwałem i wykonuje zadane bloki."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodaj warunek do klocka „jeśli”."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodaj ostatni zawsze prawdziwy warunek do klocka „jeśli”."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność czynności, żeby zmodyfikować ten klocek „jeśli”."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "w przeciwnym razie"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "w przeciwnym razie, jeśli"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jeśli"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jeśli warunek jest spełniony, wykonaj zadane czynności."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jeśli warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, wykonaj drugi blok instrukcji."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, jeśli drugi warunek jest spełniony, wykonaj drugi blok instrukcji."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok czynności. W przeciwnym razie jeśli drugi warunek jest spełniony, wykonaj drugi blok czynności. Jeżeli żaden z warunków nie zostanie spełniony, wykonaj ostatni blok czynności."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "wykonaj"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "powtórz %1 razy"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Wykonaj niektóre instrukcje kilka razy."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "powtarzaj aż do"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "powtarzaj dopóki"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dopóki wyrażenie jest nieprawdziwe, wykonaj zadane czynności."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dopóki wyrażenie jest prawdziwe, wykonaj zadane czynności."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Usunąć wszystkie klocki z %1?"; -Blockly.Msg["DELETE_BLOCK"] = "Usuń Klocek"; -Blockly.Msg["DELETE_VARIABLE"] = "Usuń zmienną '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Usunąć %1 wystąpień zmiennej '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Usuń %1 Bloki(ów)"; -Blockly.Msg["DIALOG_CANCEL"] = "Anuluj"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Wyłącz Klocek"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Powiel"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Zduplikowany komentarz"; -Blockly.Msg["ENABLE_BLOCK"] = "Włącz Blok"; -Blockly.Msg["EXPAND_ALL"] = "Rozwiń Bloki"; -Blockly.Msg["EXPAND_BLOCK"] = "Rozwiń Klocek"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Zewnętrzne Wejścia"; -Blockly.Msg["HELP"] = "Pomoc"; -Blockly.Msg["INLINE_INPUTS"] = "Wbudowane Wejścia"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "utwórz pustą listę"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Zwraca listę o długości 0, nie zawierającą danych"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność sekcji aby przekonfigurować blok tej listy."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "utwórz listę z"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Dodaj element do listy."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Utwórz listę z dowolną ilością elementów."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pierwszy"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od końca"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "pobierz"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "zabierz"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ostatni"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "losowy"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "usuń"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Zwraca pierwszy element z listy."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Zwraca element z konkretnej pozycji na liście."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Zwraca ostatni element z listy."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Zwraca losowy element z listy."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Usuwa i zwraca pierwszy element z listy."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Usuwa i zwraca element z określonej pozycji na liście."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Usuwa i zwraca ostatni element z listy."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Usuwa i zwraca losowy element z listy."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Usuwa pierwszy element z listy."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Usuwa element z określonej pozycji na liście."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Usuwa ostatni element z listy."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Usuwa losowy element z listy."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od końca"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do ostatniego"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "utwórz listę podrzędną od pierwszego"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "utwórz listę podrzędną z # od końca"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "utwórz listę podrzędną z #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Tworzy kopię żądanej części listy."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 to ostatni element."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 to pierwszy element."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "znajdź pierwsze wystąpienie elementu"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "znajdź ostatanie wystąpienie elementu"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Zwraca indeks pierwszego/ostatniego wystąpienia elementu z listy. Zwraca %1, jeśli nie zostanie znaleziony."; -Blockly.Msg["LISTS_INLIST"] = "na liście"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 jest pusta"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Zwraca \"prawda\" jeśli lista jest pusta."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "długość %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Zwraca długość listy."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "utwórz listę powtarzając %1 %2 razy."; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Tworzy listę zawierającą podaną wartość powtórzoną żądaną ilość razy."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "odwróć %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Odwraca kolejność danych w kopii listy."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "jako"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "wstaw w"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "ustaw"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Wstawia element na początku listy."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Wstawia element na żądanej pozycji listy."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Dodaj element na koniec listy."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Wstawia element w losowym miejscu na liście."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ustawia pierwszy element na liście."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ustawia element w określonym miejscu na liście."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ustawia ostatni element na liście."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ustawia losowy element na liście."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "rosnąco"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "malejąco"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sortuj %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortuj kopię listy."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetycznie, ignoruj wielkość liter"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerycznie"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetycznie"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "utwórz listę z tekstu"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "utwórz tekst z listy"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Łączy listę tekstów w jeden tekst, rozdzielany separatorem."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Rozdziela tekst zgodnie z separatorem tworząc listę z powstałych elementów."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "z separatorem"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fałsz"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Zwraca 'prawda' lub 'fałsz'."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "prawda"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://pl.wikipedia.org/wiki/Nierówność"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Zwraca \"prawda\", jeśli wejścia są identyczne."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Zwraca \"prawda\" jeśli pierwsze wejście jest większe od drugiego."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Zwraca \"prawda\", jeśli pierwsze wejście jest większe lub równe drugiemu."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Zwraca \"prawda\" jeśli pierwsze wejście jest mniejsze od drugiego."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Zwraca \"prawda\", jeśli pierwsze wejście jest mniejsze lub równe drugiemu."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Zwraca \"prawda\", jeśli wejścia nie są identyczne."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nie %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Zwraca \"prawda\", jeśli wejściu jest \"fałsz\". Zwraca \"fałsz\", jeśli na wejściu jest \"prawda\"."; -Blockly.Msg["LOGIC_NULL"] = "nic"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Zwraca nic."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "lub"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Zwraca \"prawda\" jeśli na obydwóch wejściach jest \"prawda\"."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Zwraca \"prawda\" jeśli co najmniej na jednyk wejściu jest \"prawda\"."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jeśli fałsz"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jeśli prawda"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Sprawdź warunek w „test”. Jeśli warunek jest prawdziwy, to zwróci „jeśli prawda”; jeśli nie jest prawdziwy to zwróci „jeśli fałsz”."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://pl.wikipedia.org/wiki/Arytmetyka"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Zwróć sumę dwóch liczb."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Zwróć iloraz dwóch liczb."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Zwróć różnicę dwóch liczb."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Zwróć iloczyn dwóch liczb."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Zwróć pierwszą liczbę podniesioną do potęgi o wykładniku drugiej liczby."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Zwraca arcus tangens punktu (X, Y) w stopniach od -180 do 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "zmień %1 o %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodaj liczbę do zmiennej '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://pl.wikipedia.org/wiki/Stała_(matematyka)"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Zwróć jedną wspólną stałą: π (3.141), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) lub ∞ (nieskończoność)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ogranicz %1 z dołu %2 z góry %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ogranicz liczbę, aby była w określonych granicach (włącznie)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "/"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "jest podzielna przez"; -Blockly.Msg["MATH_IS_EVEN"] = "jest parzysta"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "jest ujemna"; -Blockly.Msg["MATH_IS_ODD"] = "jest nieparzysta"; -Blockly.Msg["MATH_IS_POSITIVE"] = "jest dodatnia"; -Blockly.Msg["MATH_IS_PRIME"] = "jest liczbą pierwszą"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Sprawdź, czy liczba jest parzysta, nieparzysta, pierwsza, całkowita, dodatnia, ujemna, lub czy jest podzielna przez podaną liczbę. Zwraca wartość \"prawda\" lub \"fałsz\"."; -Blockly.Msg["MATH_IS_WHOLE"] = "jest liczbą całkowitą"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://pl.wikipedia.org/wiki/Modulo"; -Blockly.Msg["MATH_MODULO_TITLE"] = "reszta z dzielenia %1 przez %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Zwróć resztę z dzielenia dwóch liczb przez siebie."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Liczba."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "średnia elementów listy"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksymalna wartość z listy"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana listy"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimalna wartość z listy"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "dominanty listy"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "losowy element z listy"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "odchylenie standardowe listy"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma elementów listy"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Zwróć średnią (średnią arytmetyczną) wartości liczbowych z listy."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Zwróć największą liczbę w liście."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Zwróć medianę listy."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Zwróć najmniejszą liczbę w liście."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Zwróć listę najczęściej występujących elementów w liście."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Zwróć losowy element z listy."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Zwróć odchylenie standardowe listy."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Zwróć sumę wszystkich liczb z listy."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "losowy ułamek"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Zwróć losowy ułamek między 0.0 (włącznie), a 1.0 (wyłącznie)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "losowa liczba całkowita od %1 do %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Zwróć losową liczbę całkowitą w ramach dwóch wyznaczonych granic, włącznie."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://pl.wikipedia.org/wiki/Zaokrąglanie"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokrąglij"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokrąglij w dół"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokrąglij w górę"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokrąglij w górę lub w dół."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://pl.wikipedia.org/wiki/Pierwiastek_kwadratowy"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "wartość bezwzględna"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "pierwiastek kwadratowy"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Zwróć wartość bezwzględną danej liczby."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Zwróć e do potęgi danej liczby."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Zwróć logarytm naturalny danej liczby."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Zwraca logarytm dziesiętny danej liczby."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Zwróć negację danej liczby."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Zwróć 10 do potęgi danej liczby."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Zwróć pierwiastek kwadratowy danej liczby."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "arctg"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://pl.wikipedia.org/wiki/Funkcje_trygonometryczne"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tg"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Zwróć arcus cosinus danej liczby."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Zwróć arcus sinus danej liczby."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Zwróć arcus tangens danej liczby."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Zwróć wartość cosinusa o stopniu (nie w radianach)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Zwróć wartość sinusa o stopniu (nie w radianach)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Zwróć tangens o stopniu (nie w radianach)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Utwórz zmienną colour"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Utwórz zmienną typu number"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Utwórz zmienną typu string"; -Blockly.Msg["NEW_VARIABLE"] = "Utwórz zmienną..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nowa nazwa zmiennej:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nowy typ zmiennej:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "zezwól na czynności"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "z:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://pl.wikipedia.org/wiki/Podprogram"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Uruchom zdefiniowaną przez użytkownika funkcję '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://pl.wikipedia.org/wiki/Podprogram"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Uruchom zdefiniowaną przez użytkownika funkcję '%1' i użyj jej wyjścia."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "z:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Utwórz '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opisz tę funkcję..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "zrób coś"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "do"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Tworzy funkcję nie posiadającą wyjścia."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "zwróć"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Tworzy funkcję posiadającą wyjście."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Uwaga: Ta funkcja ma powtórzone parametry."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Podświetl definicję funkcji"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jeśli warunek jest spełniony zwróć drugą wartość."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Uwaga: Ten klocek może być używany tylko w definicji funkcji."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nazwa wejścia:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Dodaj wejście do funkcji."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "wejścia"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność wejść tej funkcji."; -Blockly.Msg["REDO"] = "Ponów"; -Blockly.Msg["REMOVE_COMMENT"] = "Usuń komentarz"; -Blockly.Msg["RENAME_VARIABLE"] = "Zmień nazwę zmiennej..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Zmień nazwy wszystkich '%1' zmiennych na:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "dodaj tekst %2 do %1"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Dołącz tekst do zmiennej '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na małe litery"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Pierwsza Duża"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na WIELKIE LITERY"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Zwraca kopię tekstu z odwruconą wielkością liter."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "pobierz pierwszą literę"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "pobierz literę # od końca"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "pobierz literę #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "pobierz ostatnią literę"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "pobierz losową literę"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "w tekście %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Zwraca literę z określonej pozycji."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "policz %1 w %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Liczy ile razy dany tekst występuje w innym tekście."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Dodaj element do tekstu."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "połącz"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność sekcji, aby zmodyfikować klocek tekstowy."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do # litery od końca"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do # litery"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do ostatniej litery"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "w tekście"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "pobierz podciąg od pierwszej litery"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "pobierz podciąg od # litery od końca"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "pobierz podciąg od # litery"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Zwraca określoną część tekstu."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "znajdź pierwsze wystąpienie tekstu"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "znajdź ostatnie wystąpienie tekstu"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "w tekście %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Zwraca indeks pierwszego/ostatniego wystąpienia pierwszego tekstu w drugim tekście. Zwraca wartość %1, jeśli tekst nie został znaleziony."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 jest pusty"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Zwraca prawda (true), jeśli podany tekst jest pusty."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "utwórz tekst z"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tworzy fragment tekstu, łącząc ze sobą dowolną liczbę tekstów."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "długość %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Zwraca liczbę liter (łącznie ze spacjami) w podanym tekście."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "wydrukuj %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Wyświetl określony tekst, liczbę lub inną wartość."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Zapytaj użytkownika o liczbę."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Zapytaj użytkownika o jakiś tekst."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "poproś o liczbę z tą wiadomością"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "poproś o tekst z tą wiadomością"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamień %1 na %2 w %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zastąp wszystkie wystąpienia danego tekstu innym."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "odwróć %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Odwraca kolejność znaków w tekście."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://pl.wikipedia.org/wiki/Tekstowy_typ_danych"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Litera, wyraz lub linia tekstu."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "usuń spacje po obu stronach"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "usuń spacje z lewej strony"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "usuń spacje z prawej strony"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Zwraca kopię tekstu z usuniętymi spacjami z jednego lub z obu końców tekstu."; -Blockly.Msg["TODAY"] = "Dzisiaj"; -Blockly.Msg["UNDO"] = "Cofnij"; -Blockly.Msg["UNNAMED_KEY"] = "bez nazwy"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Utwórz klocek 'ustaw %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Zwraca wartość tej zmiennej."; -Blockly.Msg["VARIABLES_SET"] = "przypisz %1 wartość %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Utwórz klocek 'pobierz %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Wartości zmiennej i wejście będą identyczne."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Zmienna o nazwie '%1' już istnieje."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Zmienna o nazwie '%1' już istnieje i jest typu '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Powiedz coś..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj Komentarz"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nie można usunąć zmiennej '%1', ponieważ jest częścią definicji funkcji '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Zmień wartość:"; +Blockly.Msg["CLEAN_UP"] = "Uporządkuj Bloki"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Zwinięte bloki zawierają ostrzeżenia."; +Blockly.Msg["COLLAPSE_ALL"] = "Zwiń Bloki"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Zwiń Klocek"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "kolor 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "kolor 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporcja"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "wymieszaj"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Miesza dwa kolory w danej proporcji (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Wybierz kolor z palety."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "losowy kolor"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Wybierz kolor w sposób losowy."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "niebieski"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zielony"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "czerwony"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "kolor z"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Utwórz kolor składający sie z podanej ilości czerwieni, zieleni i błękitu. Zakres wartości: 0 do 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "przerwij pętlę"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "przejdź do kolejnej iteracji pętli"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Przerwij działanie pętli."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Pomiń resztę pętli i kontynuuj w kolejnej iteracji."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Uwaga: Ten klocek może być użyty tylko wewnątrz pętli."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "dla każdego elementu %1 listy %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Przypisz zmiennej '%1' kolejno wartość każdego elementu listy, a następnie wykonaj kilka instrukcji."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "licz z %1 od %2 do %3 co %4 (wartość kroku)"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Zmiennej '%1' przypisuje wartości z podanego zakresu z podanym interwałem i wykonuje zadane bloki."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodaj warunek do klocka „jeśli”."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodaj ostatni zawsze prawdziwy warunek do klocka „jeśli”."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność czynności, żeby zmodyfikować ten klocek „jeśli”."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "w przeciwnym razie"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "w przeciwnym razie, jeśli"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jeśli"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Jeśli warunek jest spełniony, wykonaj zadane czynności."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Jeśli warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, wykonaj drugi blok instrukcji."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, jeśli drugi warunek jest spełniony, wykonaj drugi blok instrukcji."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok czynności. W przeciwnym razie jeśli drugi warunek jest spełniony, wykonaj drugi blok czynności. Jeżeli żaden z warunków nie zostanie spełniony, wykonaj ostatni blok czynności."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "wykonaj"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "powtórz %1 razy"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Wykonaj niektóre instrukcje kilka razy."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "powtarzaj aż do"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "powtarzaj dopóki"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dopóki wyrażenie jest nieprawdziwe, wykonaj zadane czynności."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dopóki wyrażenie jest prawdziwe, wykonaj zadane czynności."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Usunąć wszystkie klocki z %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Usuń Klocek"; +Blockly.Msg["DELETE_VARIABLE"] = "Usuń zmienną '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Usunąć %1 wystąpień zmiennej '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Usuń %1 Bloki(ów)"; +Blockly.Msg["DIALOG_CANCEL"] = "Anuluj"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Wyłącz Klocek"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Powiel"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Zduplikowany komentarz"; +Blockly.Msg["ENABLE_BLOCK"] = "Włącz Blok"; +Blockly.Msg["EXPAND_ALL"] = "Rozwiń Bloki"; +Blockly.Msg["EXPAND_BLOCK"] = "Rozwiń Klocek"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Zewnętrzne Wejścia"; +Blockly.Msg["HELP"] = "Pomoc"; +Blockly.Msg["INLINE_INPUTS"] = "Wbudowane Wejścia"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "utwórz pustą listę"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Zwraca listę o długości 0, nie zawierającą danych"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność sekcji aby przekonfigurować blok tej listy."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "utwórz listę z"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Dodaj element do listy."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Utwórz listę z dowolną ilością elementów."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "pierwszy"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od końca"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "pobierz"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "zabierz"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ostatni"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "losowy"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "usuń"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Zwraca pierwszy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Zwraca element z konkretnej pozycji na liście."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Zwraca ostatni element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Zwraca losowy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Usuwa i zwraca pierwszy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Usuwa i zwraca element z określonej pozycji na liście."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Usuwa i zwraca ostatni element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Usuwa i zwraca losowy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Usuwa pierwszy element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Usuwa element z określonej pozycji na liście."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Usuwa ostatni element z listy."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Usuwa losowy element z listy."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od końca"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do ostatniego"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "utwórz listę podrzędną od pierwszego"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "utwórz listę podrzędną z # od końca"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "utwórz listę podrzędną z #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Tworzy kopię żądanej części listy."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 to ostatni element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 to pierwszy element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "znajdź pierwsze wystąpienie elementu"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "znajdź ostatanie wystąpienie elementu"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Zwraca indeks pierwszego/ostatniego wystąpienia elementu z listy. Zwraca %1, jeśli nie zostanie znaleziony."; +Blockly.Msg["LISTS_INLIST"] = "na liście"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 jest pusta"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Zwraca \"prawda\" jeśli lista jest pusta."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "długość %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Zwraca długość listy."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "utwórz listę powtarzając %1 %2 razy."; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Tworzy listę zawierającą podaną wartość powtórzoną żądaną ilość razy."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "odwróć %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Odwraca kolejność danych w kopii listy."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "jako"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "wstaw w"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ustaw"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Wstawia element na początku listy."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Wstawia element na żądanej pozycji listy."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Dodaj element na koniec listy."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Wstawia element w losowym miejscu na liście."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Ustawia pierwszy element na liście."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ustawia element w określonym miejscu na liście."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Ustawia ostatni element na liście."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Ustawia losowy element na liście."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "rosnąco"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "malejąco"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sortuj %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortuj kopię listy."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetycznie, ignoruj wielkość liter"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerycznie"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetycznie"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "utwórz listę z tekstu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "utwórz tekst z listy"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Łączy listę tekstów w jeden tekst, rozdzielany separatorem."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Rozdziela tekst zgodnie z separatorem tworząc listę z powstałych elementów."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "z separatorem"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fałsz"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Zwraca 'prawda' lub 'fałsz'."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "prawda"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://pl.wikipedia.org/wiki/Nierówność"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Zwraca \"prawda\", jeśli wejścia są identyczne."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Zwraca \"prawda\" jeśli pierwsze wejście jest większe od drugiego."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Zwraca \"prawda\", jeśli pierwsze wejście jest większe lub równe drugiemu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Zwraca \"prawda\" jeśli pierwsze wejście jest mniejsze od drugiego."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Zwraca \"prawda\", jeśli pierwsze wejście jest mniejsze lub równe drugiemu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Zwraca \"prawda\", jeśli wejścia nie są identyczne."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nie %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Zwraca \"prawda\", jeśli wejściu jest \"fałsz\". Zwraca \"fałsz\", jeśli na wejściu jest \"prawda\"."; +Blockly.Msg["LOGIC_NULL"] = "nic"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Zwraca nic."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "lub"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Zwraca \"prawda\" jeśli na obydwóch wejściach jest \"prawda\"."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Zwraca \"prawda\" jeśli co najmniej na jednyk wejściu jest \"prawda\"."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jeśli fałsz"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jeśli prawda"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Sprawdź warunek w „test”. Jeśli warunek jest prawdziwy, to zwróci „jeśli prawda”; jeśli nie jest prawdziwy to zwróci „jeśli fałsz”."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://pl.wikipedia.org/wiki/Arytmetyka"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Zwróć sumę dwóch liczb."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Zwróć iloraz dwóch liczb."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Zwróć różnicę dwóch liczb."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Zwróć iloczyn dwóch liczb."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Zwróć pierwszą liczbę podniesioną do potęgi o wykładniku drugiej liczby."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Zwraca arcus tangens punktu (X, Y) w stopniach od -180 do 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "zmień %1 o %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodaj liczbę do zmiennej '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://pl.wikipedia.org/wiki/Stała_(matematyka)"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Zwróć jedną wspólną stałą: π (3.141), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) lub ∞ (nieskończoność)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ogranicz %1 z dołu %2 z góry %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ogranicz liczbę, aby była w określonych granicach (włącznie)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "/"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "jest podzielna przez"; +Blockly.Msg["MATH_IS_EVEN"] = "jest parzysta"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "jest ujemna"; +Blockly.Msg["MATH_IS_ODD"] = "jest nieparzysta"; +Blockly.Msg["MATH_IS_POSITIVE"] = "jest dodatnia"; +Blockly.Msg["MATH_IS_PRIME"] = "jest liczbą pierwszą"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Sprawdź, czy liczba jest parzysta, nieparzysta, pierwsza, całkowita, dodatnia, ujemna, lub czy jest podzielna przez podaną liczbę. Zwraca wartość \"prawda\" lub \"fałsz\"."; +Blockly.Msg["MATH_IS_WHOLE"] = "jest liczbą całkowitą"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://pl.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "reszta z dzielenia %1 przez %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Zwróć resztę z dzielenia dwóch liczb przez siebie."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Liczba."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "średnia elementów listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksymalna wartość z listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimalna wartość z listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "dominanty listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "losowy element z listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "odchylenie standardowe listy"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma elementów listy"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Zwróć średnią (średnią arytmetyczną) wartości liczbowych z listy."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Zwróć największą liczbę w liście."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Zwróć medianę listy."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Zwróć najmniejszą liczbę w liście."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Zwróć listę najczęściej występujących elementów w liście."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Zwróć losowy element z listy."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Zwróć odchylenie standardowe listy."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Zwróć sumę wszystkich liczb z listy."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "losowy ułamek"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Zwróć losowy ułamek między 0.0 (włącznie), a 1.0 (wyłącznie)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "losowa liczba całkowita od %1 do %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Zwróć losową liczbę całkowitą w ramach dwóch wyznaczonych granic, włącznie."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://pl.wikipedia.org/wiki/Zaokrąglanie"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokrąglij"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokrąglij w dół"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokrąglij w górę"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokrąglij w górę lub w dół."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://pl.wikipedia.org/wiki/Pierwiastek_kwadratowy"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "wartość bezwzględna"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "pierwiastek kwadratowy"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Zwróć wartość bezwzględną danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Zwróć e do potęgi danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Zwróć logarytm naturalny danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Zwraca logarytm dziesiętny danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Zwróć negację danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Zwróć 10 do potęgi danej liczby."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Zwróć pierwiastek kwadratowy danej liczby."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctg"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://pl.wikipedia.org/wiki/Funkcje_trygonometryczne"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tg"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Zwróć arcus cosinus danej liczby."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Zwróć arcus sinus danej liczby."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Zwróć arcus tangens danej liczby."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Zwróć wartość cosinusa o stopniu (nie w radianach)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Zwróć wartość sinusa o stopniu (nie w radianach)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Zwróć tangens o stopniu (nie w radianach)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Utwórz zmienną colour"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Utwórz zmienną typu number"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Utwórz zmienną typu string"; +Blockly.Msg["NEW_VARIABLE"] = "Utwórz zmienną..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nowa nazwa zmiennej:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Nowy typ zmiennej:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "zezwól na czynności"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "z:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://pl.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Uruchom zdefiniowaną przez użytkownika funkcję '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://pl.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Uruchom zdefiniowaną przez użytkownika funkcję '%1' i użyj jej wyjścia."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "z:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Utwórz '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opisz tę funkcję..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "zrób coś"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "do"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Tworzy funkcję nie posiadającą wyjścia."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "zwróć"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Tworzy funkcję posiadającą wyjście."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Uwaga: Ta funkcja ma powtórzone parametry."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Podświetl definicję funkcji"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Jeśli warunek jest spełniony zwróć drugą wartość."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Uwaga: Ten klocek może być używany tylko w definicji funkcji."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nazwa wejścia:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Dodaj wejście do funkcji."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "wejścia"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność wejść tej funkcji."; +Blockly.Msg["REDO"] = "Ponów"; +Blockly.Msg["REMOVE_COMMENT"] = "Usuń komentarz"; +Blockly.Msg["RENAME_VARIABLE"] = "Zmień nazwę zmiennej..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Zmień nazwy wszystkich '%1' zmiennych na:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "dodaj tekst %2 do %1"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Dołącz tekst do zmiennej '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na małe litery"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Pierwsza Duża"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na WIELKIE LITERY"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Zwraca kopię tekstu z odwruconą wielkością liter."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "pobierz pierwszą literę"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "pobierz literę # od końca"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "pobierz literę #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "pobierz ostatnią literę"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "pobierz losową literę"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "w tekście %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Zwraca literę z określonej pozycji."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "policz %1 w %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Liczy ile razy dany tekst występuje w innym tekście."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Dodaj element do tekstu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "połącz"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Dodaj, usuń lub zmień kolejność sekcji, aby zmodyfikować klocek tekstowy."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do # litery od końca"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do # litery"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do ostatniej litery"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "w tekście"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "pobierz podciąg od pierwszej litery"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "pobierz podciąg od # litery od końca"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "pobierz podciąg od # litery"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Zwraca określoną część tekstu."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "znajdź pierwsze wystąpienie tekstu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "znajdź ostatnie wystąpienie tekstu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "w tekście %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Zwraca indeks pierwszego/ostatniego wystąpienia pierwszego tekstu w drugim tekście. Zwraca wartość %1, jeśli tekst nie został znaleziony."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 jest pusty"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Zwraca prawda (true), jeśli podany tekst jest pusty."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "utwórz tekst z"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tworzy fragment tekstu, łącząc ze sobą dowolną liczbę tekstów."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "długość %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Zwraca liczbę liter (łącznie ze spacjami) w podanym tekście."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "wydrukuj %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Wyświetl określony tekst, liczbę lub inną wartość."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Zapytaj użytkownika o liczbę."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Zapytaj użytkownika o jakiś tekst."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "poproś o liczbę z tą wiadomością"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "poproś o tekst z tą wiadomością"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamień %1 na %2 w %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zastąp wszystkie wystąpienia danego tekstu innym."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "odwróć %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Odwraca kolejność znaków w tekście."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://pl.wikipedia.org/wiki/Tekstowy_typ_danych"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Litera, wyraz lub linia tekstu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "usuń spacje po obu stronach"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "usuń spacje z lewej strony"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "usuń spacje z prawej strony"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Zwraca kopię tekstu z usuniętymi spacjami z jednego lub z obu końców tekstu."; +Blockly.Msg["TODAY"] = "Dzisiaj"; +Blockly.Msg["UNDO"] = "Cofnij"; +Blockly.Msg["UNNAMED_KEY"] = "bez nazwy"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Utwórz klocek 'ustaw %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Zwraca wartość tej zmiennej."; +Blockly.Msg["VARIABLES_SET"] = "przypisz %1 wartość %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Utwórz klocek 'pobierz %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Wartości zmiennej i wejście będą identyczne."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Zmienna o nazwie '%1' już istnieje."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Zmienna o nazwie '%1' już istnieje i jest typu '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Powiedz coś..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/pms.js b/msg/js/pms.js index 21d9c76a14e..75a0dcf6fe7 100644 --- a/msg/js/pms.js +++ b/msg/js/pms.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Gionté un coment"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "As peul nen eliminesse la variàbil '%1' përchè a l'é part ëd la definission dla fonsion '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modifiché ël valor:"; -Blockly.Msg["CLEAN_UP"] = "Dëscancelé ij blòch"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Ij blòch sarà a conten-o dj'avertense."; -Blockly.Msg["COLLAPSE_ALL"] = "Arduve ij blòch"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Arduve ël blòch"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "rapòrt"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mës-cé"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "A mës-cia doi color ansema con un rapòrt dàit (0,0 - 1,0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Serne un color ant la taulòssa."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color a asar"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Serne un color a asar."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "bleu"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verd"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ross"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "coloré con"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Creé un color con la quantità spessificà ëd ross, verd e bleu. Tuti ij valor a devo esse antra 0 e 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "seurte da la liassa"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continué con l'iterassion sucessiva dla liassa"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Seurte da la liassa anglobanta."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sauté ël rest ëd sa liassa, e continué con l'iterassion apress."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atension: Ës blòch a peul mach esse dovrà andrinta a na liassa."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "për minca n'element %1 ant la lista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Për minca element an na lista, dé ël valor ëd l'element a la variàbil '%1', peui eseguì chèiche anstrussion."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "conté con %1 da %2 a %3 për %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fé an manera che la variàbil \"%1\" a pija ij valor dal nùmer inissial fin-a al nùmer final, an contand për l'antërval ëspessificà, e eseguì ij bloch ëspessificà."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Gionté na condission al blòch si."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Gionté na condission final ch'a cheuj tut al blòch si."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Gionté, gavé o riordiné le session për cinfiguré torna ës blòch si."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "dësnò"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "dësnò si"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor a l'é ver, antlora eseguì chèiche anstrussion."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor a l'é ver, antlora eseguì ël prim blòch d'anstrussion. Dësnò, eseguì ël second blòch d'anstrussion."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòch d'anstrussion."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòcj d'anstrussion. Si gnun dij valor a l'é ver, fé andé l'ùltim blòch d'anstrussion."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fé"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "arpete %1 vire"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Eseguì chèiche anstrussion vàire vire."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "arpete fin-a a"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "arpete antramentre che"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Cand un valor a l'é fàuss, eseguì chèiche anstrussion."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Cand un valor a l'é ver, eseguì chèiche anstrussion."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Scancelé tuti ij %1 blòch?"; -Blockly.Msg["DELETE_BLOCK"] = "Scancelé ël blòch"; -Blockly.Msg["DELETE_VARIABLE"] = "Eliminé la variàbil '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Eliminé %1 utilisassion ëd la variàbil '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Scancelé %1 blòch"; -Blockly.Msg["DIALOG_CANCEL"] = "Anulé"; -Blockly.Msg["DIALOG_OK"] = "Va bin"; -Blockly.Msg["DISABLE_BLOCK"] = "Disativé ël blòch"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliché"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliché ël coment"; -Blockly.Msg["ENABLE_BLOCK"] = "Ativé ël blòch"; -Blockly.Msg["EXPAND_ALL"] = "Dësvlupé ij blòch"; -Blockly.Msg["EXPAND_BLOCK"] = "Dësvlupé ël blòch"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Imission esterne"; -Blockly.Msg["HELP"] = "Agiut"; -Blockly.Msg["INLINE_INPUTS"] = "Imission an linia"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "creé na lista veuida"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Smon-e na lista, ëd longheur 0, ch'a conten gnun-a argistrassion"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Gionté, gavé o riordiné le session për configuré torna cost blòch ëd lista."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "creé na lista con"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Gionté n'element a la lista."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Creé na lista con un nùmer qualsëssìa d'element."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prim"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# da la fin"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "oten-e"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "oten-e e eliminé"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ùltim"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "a l'ancàpit"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "eliminé"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "A smon ël prim element an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "A smon l'element a la posission ëspessificà an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "A smon l'ùltim element an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "A smon n'element a l'ancàpit an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "A gava e a smon ël prim element an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "A gava e a smon l'element a la posission ëspessificà an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "A gava e a smon l'ùltim element an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "A gava e a smon n'element a l'ancàpit an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "A gava ël prim element an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "A gava l'element a la posission ëspessificà an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "A gava l'ùltim element an na lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "A gava n'element a l'ancàpit da na lista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "fin-a a # da la fin"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fin-a a #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "fin-a a l'ùltim"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "oten-e la sot-lista dal prim"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "oten-e la sot-lista da # da la fin"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "oten-e la sot-lista da #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "A crea na còpia dël tòch ëspessificà ëd na lista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 a l'é l'ùltim element."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 a l'é ël prim element."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trové la prima ocorensa dl'element"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trové l'ùltima ocorensa dl'element"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "A smon l'ìndes ëd la prima/ùltima ocorensa dl'element ant la lista. A smon %1 se l'element a l'é nen trovà."; -Blockly.Msg["LISTS_INLIST"] = "ant la lista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 a l'é veuid"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "A smon ver se la lista a l'é veuida."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "longheur ëd %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "A smon la longheur ¨d na lista."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "creé na lista con l'element %1 arpetù %2 vire"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "A crea na lista ch'a consist dël valor dàit arpetù ël nùmer ëspessificà ëd vire."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "anversé %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Anversé na còpia ëd na lista"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "tanme"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "anserì an"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "buté"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "A anseriss l'element al prinsipi ëd na lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "A anseriss l'element a la posission ëspessificà an na lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Gionté l'element a la fin ëd na lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "A anseriss l'element a l'ancàpit an na lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "A fissa ël prim element an na lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "A fissa l'element a la posission ëspessificà an na lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "A fissa l'ùltim element an na lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "A fissa n'element a l'ancàpit an na lista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "chërsent"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "calant"; -Blockly.Msg["LISTS_SORT_TITLE"] = "ordiné %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordiné na còpia ëd na lista."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabétich, ignorand ël caràter minùscol o majùscol"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérich"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabétich"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fé na lista da 'n test"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fé 'n test da na lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Gionze na lista ëd test ant un test sol, separandje con un separator."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Divide un test an na lista ëd test, tajand a minca 'n separator."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con ël separator"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fàuss"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "A rëspond ver o fàuss."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ver"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Rësponde ver si le doe imission a son uguaj."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Rësponde ver si la prima imission a l'é pi granda che la sconda."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Rësponde ver si la prima imission a l'é pi granda o ugual a la sconda."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Rësponde ver si la prima imission a l'é pi cita dla sconda."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Rësponde ver si la prima imission a l'é pi cita o ugual a la sconda."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Rësponde ver si le doe imission a son nen uguaj."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nen %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "A rëspond ver se l'imission a l'é fàussa. A rëspond fàuss se l'imission a l'é vera."; -Blockly.Msg["LOGIC_NULL"] = "gnente"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "A rëspond gnente."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Rësponde ver se tute doe j'imission a son vere."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Rësponde ver se almanch un-a d'imission a l'é vera."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "preuva"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se fàuss"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se ver"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Controlé la condission an 'preuva'. Se la condission a l'é vera, a rëspond con ël valor 'se ver'; dësnò a rëspond con ël valor 'se fàuss'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "A smon la soma ëd doi nùmer."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "A smon ël cossient dij doi nùmer."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "A smon la diferensa dij doi nùmer."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "A smon ël prodot dij doi nùmer."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "A smon ël prim nùmer alvà a la potensa dël second."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ëd X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "A rëspond con l'arch-tangent dël pont (X, Y) an gre da -180 a 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "ancrementé %1 për %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Gionté un nùmer a la variàbil '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "A smon un-a dle costante comun-e π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinì)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limité %1 antra %2 e %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limité un nùmer a esse antra le limitassion ëspessificà (comprèise)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "a l'é divisìbil për"; -Blockly.Msg["MATH_IS_EVEN"] = "a l'é cobi"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "a l'é negativ"; -Blockly.Msg["MATH_IS_ODD"] = "a l'é dëscobi"; -Blockly.Msg["MATH_IS_POSITIVE"] = "a l'é positiv"; -Blockly.Msg["MATH_IS_PRIME"] = "a l'é prim"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "A contròla si un nùmer a l'é cobi, dëscobi, prim, antreghm positiv, negativ, o s'a l'é divisìbil për un nùmer dàit. A rëspond ver o fàuss."; -Blockly.Msg["MATH_IS_WHOLE"] = "a l'é antregh"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "resta ëd %1:%2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "A smon la resta ëd la division dij doi nùmer."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nùmer."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media dla lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "màssim ëd la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mesan-a dla lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mìnim ëd la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mòde dla lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element a l'ancàpit ëd la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviassion ëstàndard ëd la lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma dla lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "A smon la media (aritmética) dij valor numérich ant la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "A smon ël pi gròss nùmer ëd la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "A smon ël nùmer mesan ëd la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "A smon ël pi cit nùmer ëd la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "A smon na lista dj'element pi frequent ëd la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "A smon n'element a l'ancàpit da la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "A smon la deviassion ëstàndard ëd la lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "A smon la soma ëd tuti ij nùmer ant la lista."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "frassion aleatòria"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "A smon na frassion aleatòria antra 0,0 (comprèis) e 1,0 (esclus)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "antregh aleatòri antra %1 e %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "A smon n'antregh aleatòri antra ij doi lìmit ëspessificà, comprèis."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ariondé"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ariondé për difet"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ariondé për ecess"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "A arionda un nùmer për difet o ecess."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "assolù"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "rèis quadra"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "A smon ël valor assolù d'un nùmer."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "A smon e a la potensa d'un nùmer."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "A smon ël logaritm natural d'un nùmer."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "A smon ël logaritm an base 10 d'un nùmer."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "A smon l'opòst d'un nùmer."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "A smon 10 a la potensa d'un nùmer."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "A smon la rèis quadra d'un nùmer."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "A smon l'arch-cosen d'un nùmer."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "A smon l'arch-sen d'un nùmer."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "A smon l'arch-tangenta d'un nùmer."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "A smon ël cosen ëd n'àngol an gré (pa an radiant)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "A smon ël sen ëd n'àngol an gré (pa an radiant)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "A smon la tangenta ëd n'àngol an gré (pa an radiant)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Creé na variàbil ëd color..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Creé na variàbil numérica..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Creé na variàbil dë stringa..."; -Blockly.Msg["NEW_VARIABLE"] = "Creé na variàbil..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nòm ëd la neuva variàbil:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Neuva sòrt ëd variàbil:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "përmëtte le diciairassion"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Eseguì la fonsion '%1' definìa da l'utent."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Eseguì la fonsion '%1' definìa da l'utent e dovré sò arzultà."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Creé '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descrive sa fonsion..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fé cheicòs"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "a"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "A crea na fonsion sensa surtìa."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "artorn"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "A crea na fonsion con na surtìa."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Atension: Costa fonsion a l'ha dij paràmeter duplicà."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sot-ligné la definission dla fonsion"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se un valor a l'é ver, antlora smon-e un second valor."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Atension: Ës blòch a podria esse dovrà mach an na definission ëd fonsion."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nòm ëd l'imission:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Gionté n'imission a la fonsion."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "imission"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Gionté, gavé o riordiné j'imission ëd sa fonsion."; -Blockly.Msg["REDO"] = "Fé torna"; -Blockly.Msg["REMOVE_COMMENT"] = "Scancelé un coment"; -Blockly.Msg["RENAME_VARIABLE"] = "Arnomé la variàbil..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Arnomé tute le variàbij '%1' 'me:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 taché ël test %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Taché dël test a la variàbil '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "an minùscul"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "an Majùscol A L'Ancamin Ëd Minca Paròla"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "an MAJÙSCOL"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "A smon na còpia dël test ant un caràter diferent."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "oten-e la prima litra"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "oten-e la litra # da la fin"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "oten-e la litra #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "oten-e l'ùltima litra"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "oten-e na litra a l'ancàpit"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "ant ël test %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "A smon la litra ant la posission ëspessificà."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "nùmer %1 su %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Conté vàire vire un test dàit a compariss an n'àutr test."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Gionté n'element al test."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "gionze"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Gionté, gavé o riordiné le session për configuré torna ës blòch ëd test."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "fin-a a la litra # da la fin"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "fin-a a la litra #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "fin-a a l'ùltima litra"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ant ël test"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "oten-e la sota-stringa da la prima litra"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "oten-e la sota-stringa da la litra # da la fin"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "oten-e la sota-stringa da la litra #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "A smon un tòch ëspessificà dël test."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trové la prima ocorensa dël test"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trové l'ùltima ocorensa dël test"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ant ël test %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "A smon l'ìndes dla prima/ùltima ocorensa dël prim test ant ël second test. A smon %1 se ël test a l'é nen trovà."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 a l'é veuid"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "A smon ver se ël test fornì a l'é veuid."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "creé ël test con"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Creé un tòch ëd test an gionzend un nùmer qualsëssìa d'element."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "longheur ëd %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "A smon ël nùmer ëd litre (spassi comprèis) ant ël test fornì."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "smon-e %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Smon-e ël test, ël nùmer o n'àutr valor ëspessificà."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Ciamé un nùmer a l'utent."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Ciamé un test a l'utent."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "anvit për un nùmer con un mëssagi"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "anvit për un test con un mëssagi"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "rampiassé %1 con %2 an %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Rampiassé tute j'ocorense d'un test con n'àutr."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "Anversé %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Anversé l'òrdin dij caràter ant ël test."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Na litra, na paròla o na linia ëd test."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "gavé jë spassi da le doe bande ëd"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "gavé jë spassi da la banda snistra ëd"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "gavé jë spassi da la banda drita ëd"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "A smon na còpia dël test con jë spassi gavà da n'estremità o da tute doe."; -Blockly.Msg["TODAY"] = "Ancheuj"; -Blockly.Msg["UNDO"] = "Anulé"; -Blockly.Msg["UNNAMED_KEY"] = "anònim"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Creé 'fissé %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A smon ël valor ëd sa variàbil."; -Blockly.Msg["VARIABLES_SET"] = "fissé %1 a %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Creé 'oten-e %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Fissé costa variàbil ugual al valor d'imission."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Na variàbil con ël nòm '%1' a esist già."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Na variàbil ciamà '%1' a esist già për n'àutra sòrt: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Spassi ëd travaj ëd Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Dì cheicòs..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Gionté un coment"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "As peul nen eliminesse la variàbil '%1' përchè a l'é part ëd la definission dla fonsion '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Modifiché ël valor:"; +Blockly.Msg["CLEAN_UP"] = "Dëscancelé ij blòch"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Ij blòch sarà a conten-o dj'avertense."; +Blockly.Msg["COLLAPSE_ALL"] = "Arduve ij blòch"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Arduve ël blòch"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "color 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "color 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "rapòrt"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mës-cé"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "A mës-cia doi color ansema con un rapòrt dàit (0,0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Serne un color ant la taulòssa."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "color a asar"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Serne un color a asar."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "bleu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verd"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ross"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "coloré con"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Creé un color con la quantità spessificà ëd ross, verd e bleu. Tuti ij valor a devo esse antra 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "seurte da la liassa"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continué con l'iterassion sucessiva dla liassa"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Seurte da la liassa anglobanta."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sauté ël rest ëd sa liassa, e continué con l'iterassion apress."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atension: Ës blòch a peul mach esse dovrà andrinta a na liassa."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "për minca n'element %1 ant la lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Për minca element an na lista, dé ël valor ëd l'element a la variàbil '%1', peui eseguì chèiche anstrussion."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "conté con %1 da %2 a %3 për %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fé an manera che la variàbil \"%1\" a pija ij valor dal nùmer inissial fin-a al nùmer final, an contand për l'antërval ëspessificà, e eseguì ij bloch ëspessificà."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Gionté na condission al blòch si."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Gionté na condission final ch'a cheuj tut al blòch si."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Gionté, gavé o riordiné le session për cinfiguré torna ës blòch si."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "dësnò"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "dësnò si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si un valor a l'é ver, antlora eseguì chèiche anstrussion."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si un valor a l'é ver, antlora eseguì ël prim blòch d'anstrussion. Dësnò, eseguì ël second blòch d'anstrussion."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòch d'anstrussion."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòcj d'anstrussion. Si gnun dij valor a l'é ver, fé andé l'ùltim blòch d'anstrussion."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fé"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "arpete %1 vire"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Eseguì chèiche anstrussion vàire vire."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "arpete fin-a a"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "arpete antramentre che"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Cand un valor a l'é fàuss, eseguì chèiche anstrussion."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Cand un valor a l'é ver, eseguì chèiche anstrussion."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Scancelé tuti ij %1 blòch?"; +Blockly.Msg["DELETE_BLOCK"] = "Scancelé ël blòch"; +Blockly.Msg["DELETE_VARIABLE"] = "Eliminé la variàbil '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Eliminé %1 utilisassion ëd la variàbil '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Scancelé %1 blòch"; +Blockly.Msg["DIALOG_CANCEL"] = "Anulé"; +Blockly.Msg["DIALOG_OK"] = "Va bin"; +Blockly.Msg["DISABLE_BLOCK"] = "Disativé ël blòch"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliché"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dupliché ël coment"; +Blockly.Msg["ENABLE_BLOCK"] = "Ativé ël blòch"; +Blockly.Msg["EXPAND_ALL"] = "Dësvlupé ij blòch"; +Blockly.Msg["EXPAND_BLOCK"] = "Dësvlupé ël blòch"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Imission esterne"; +Blockly.Msg["HELP"] = "Agiut"; +Blockly.Msg["INLINE_INPUTS"] = "Imission an linia"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "creé na lista veuida"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Smon-e na lista, ëd longheur 0, ch'a conten gnun-a argistrassion"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Gionté, gavé o riordiné le session për configuré torna cost blòch ëd lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "creé na lista con"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Gionté n'element a la lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Creé na lista con un nùmer qualsëssìa d'element."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prim"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# da la fin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "oten-e"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "oten-e e eliminé"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ùltim"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "a l'ancàpit"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "eliminé"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "A smon ël prim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "A smon l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "A smon l'ùltim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "A smon n'element a l'ancàpit an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "A gava e a smon ël prim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "A gava e a smon l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "A gava e a smon l'ùltim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "A gava e a smon n'element a l'ancàpit an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "A gava ël prim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "A gava l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "A gava l'ùltim element an na lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "A gava n'element a l'ancàpit da na lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "fin-a a # da la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fin-a a #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "fin-a a l'ùltim"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "oten-e la sot-lista dal prim"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "oten-e la sot-lista da # da la fin"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "oten-e la sot-lista da #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "A crea na còpia dël tòch ëspessificà ëd na lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 a l'é l'ùltim element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 a l'é ël prim element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "trové la prima ocorensa dl'element"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "trové l'ùltima ocorensa dl'element"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "A smon l'ìndes ëd la prima/ùltima ocorensa dl'element ant la lista. A smon %1 se l'element a l'é nen trovà."; +Blockly.Msg["LISTS_INLIST"] = "ant la lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 a l'é veuid"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "A smon ver se la lista a l'é veuida."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longheur ëd %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "A smon la longheur ¨d na lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "creé na lista con l'element %1 arpetù %2 vire"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "A crea na lista ch'a consist dël valor dàit arpetù ël nùmer ëspessificà ëd vire."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "anversé %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Anversé na còpia ëd na lista"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "tanme"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "anserì an"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "buté"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "A anseriss l'element al prinsipi ëd na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "A anseriss l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Gionté l'element a la fin ëd na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "A anseriss l'element a l'ancàpit an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "A fissa ël prim element an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "A fissa l'element a la posission ëspessificà an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "A fissa l'ùltim element an na lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "A fissa n'element a l'ancàpit an na lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "chërsent"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "calant"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordiné %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordiné na còpia ëd na lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabétich, ignorand ël caràter minùscol o majùscol"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérich"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabétich"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fé na lista da 'n test"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fé 'n test da na lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Gionze na lista ëd test ant un test sol, separandje con un separator."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Divide un test an na lista ëd test, tajand a minca 'n separator."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "con ël separator"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fàuss"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "A rëspond ver o fàuss."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ver"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Rësponde ver si le doe imission a son uguaj."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Rësponde ver si la prima imission a l'é pi granda che la sconda."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Rësponde ver si la prima imission a l'é pi granda o ugual a la sconda."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Rësponde ver si la prima imission a l'é pi cita dla sconda."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Rësponde ver si la prima imission a l'é pi cita o ugual a la sconda."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Rësponde ver si le doe imission a son nen uguaj."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nen %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "A rëspond ver se l'imission a l'é fàussa. A rëspond fàuss se l'imission a l'é vera."; +Blockly.Msg["LOGIC_NULL"] = "gnente"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "A rëspond gnente."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Rësponde ver se tute doe j'imission a son vere."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Rësponde ver se almanch un-a d'imission a l'é vera."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "preuva"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se fàuss"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se ver"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Controlé la condission an 'preuva'. Se la condission a l'é vera, a rëspond con ël valor 'se ver'; dësnò a rëspond con ël valor 'se fàuss'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "A smon la soma ëd doi nùmer."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "A smon ël cossient dij doi nùmer."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "A smon la diferensa dij doi nùmer."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "A smon ël prodot dij doi nùmer."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "A smon ël prim nùmer alvà a la potensa dël second."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ëd X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "A rëspond con l'arch-tangent dël pont (X, Y) an gre da -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "ancrementé %1 për %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Gionté un nùmer a la variàbil '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "A smon un-a dle costante comun-e π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinì)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "limité %1 antra %2 e %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Limité un nùmer a esse antra le limitassion ëspessificà (comprèise)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "a l'é divisìbil për"; +Blockly.Msg["MATH_IS_EVEN"] = "a l'é cobi"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "a l'é negativ"; +Blockly.Msg["MATH_IS_ODD"] = "a l'é dëscobi"; +Blockly.Msg["MATH_IS_POSITIVE"] = "a l'é positiv"; +Blockly.Msg["MATH_IS_PRIME"] = "a l'é prim"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "A contròla si un nùmer a l'é cobi, dëscobi, prim, antreghm positiv, negativ, o s'a l'é divisìbil për un nùmer dàit. A rëspond ver o fàuss."; +Blockly.Msg["MATH_IS_WHOLE"] = "a l'é antregh"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resta ëd %1:%2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "A smon la resta ëd la division dij doi nùmer."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un nùmer."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media dla lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "màssim ëd la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mesan-a dla lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "mìnim ëd la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "mòde dla lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element a l'ancàpit ëd la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviassion ëstàndard ëd la lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma dla lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "A smon la media (aritmética) dij valor numérich ant la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "A smon ël pi gròss nùmer ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "A smon ël nùmer mesan ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "A smon ël pi cit nùmer ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "A smon na lista dj'element pi frequent ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "A smon n'element a l'ancàpit da la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "A smon la deviassion ëstàndard ëd la lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "A smon la soma ëd tuti ij nùmer ant la lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "frassion aleatòria"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "A smon na frassion aleatòria antra 0,0 (comprèis) e 1,0 (esclus)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "antregh aleatòri antra %1 e %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "A smon n'antregh aleatòri antra ij doi lìmit ëspessificà, comprèis."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ariondé"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ariondé për difet"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ariondé për ecess"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "A arionda un nùmer për difet o ecess."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "assolù"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "rèis quadra"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "A smon ël valor assolù d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "A smon e a la potensa d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "A smon ël logaritm natural d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "A smon ël logaritm an base 10 d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "A smon l'opòst d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "A smon 10 a la potensa d'un nùmer."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "A smon la rèis quadra d'un nùmer."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "A smon l'arch-cosen d'un nùmer."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "A smon l'arch-sen d'un nùmer."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "A smon l'arch-tangenta d'un nùmer."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "A smon ël cosen ëd n'àngol an gré (pa an radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "A smon ël sen ëd n'àngol an gré (pa an radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "A smon la tangenta ëd n'àngol an gré (pa an radiant)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Creé na variàbil ëd color..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Creé na variàbil numérica..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Creé na variàbil dë stringa..."; +Blockly.Msg["NEW_VARIABLE"] = "Creé na variàbil..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nòm ëd la neuva variàbil:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Neuva sòrt ëd variàbil:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "përmëtte le diciairassion"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Eseguì la fonsion '%1' definìa da l'utent."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Eseguì la fonsion '%1' definìa da l'utent e dovré sò arzultà."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Creé '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descrive sa fonsion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fé cheicòs"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "a"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "A crea na fonsion sensa surtìa."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "artorn"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "A crea na fonsion con na surtìa."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Atension: Costa fonsion a l'ha dij paràmeter duplicà."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Sot-ligné la definission dla fonsion"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se un valor a l'é ver, antlora smon-e un second valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Atension: Ës blòch a podria esse dovrà mach an na definission ëd fonsion."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nòm ëd l'imission:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Gionté n'imission a la fonsion."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "imission"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Gionté, gavé o riordiné j'imission ëd sa fonsion."; +Blockly.Msg["REDO"] = "Fé torna"; +Blockly.Msg["REMOVE_COMMENT"] = "Scancelé un coment"; +Blockly.Msg["RENAME_VARIABLE"] = "Arnomé la variàbil..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Arnomé tute le variàbij '%1' 'me:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 taché ël test %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Taché dël test a la variàbil '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "an minùscul"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "an Majùscol A L'Ancamin Ëd Minca Paròla"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "an MAJÙSCOL"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "A smon na còpia dël test ant un caràter diferent."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "oten-e la prima litra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "oten-e la litra # da la fin"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "oten-e la litra #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "oten-e l'ùltima litra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "oten-e na litra a l'ancàpit"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ant ël test %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "A smon la litra ant la posission ëspessificà."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "nùmer %1 su %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Conté vàire vire un test dàit a compariss an n'àutr test."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Gionté n'element al test."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "gionze"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Gionté, gavé o riordiné le session për configuré torna ës blòch ëd test."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "fin-a a la litra # da la fin"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "fin-a a la litra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "fin-a a l'ùltima litra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ant ël test"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "oten-e la sota-stringa da la prima litra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "oten-e la sota-stringa da la litra # da la fin"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "oten-e la sota-stringa da la litra #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "A smon un tòch ëspessificà dël test."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "trové la prima ocorensa dël test"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "trové l'ùltima ocorensa dël test"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ant ël test %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "A smon l'ìndes dla prima/ùltima ocorensa dël prim test ant ël second test. A smon %1 se ël test a l'é nen trovà."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 a l'é veuid"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "A smon ver se ël test fornì a l'é veuid."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "creé ël test con"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Creé un tòch ëd test an gionzend un nùmer qualsëssìa d'element."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longheur ëd %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "A smon ël nùmer ëd litre (spassi comprèis) ant ël test fornì."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "smon-e %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Smon-e ël test, ël nùmer o n'àutr valor ëspessificà."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Ciamé un nùmer a l'utent."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Ciamé un test a l'utent."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "anvit për un nùmer con un mëssagi"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "anvit për un test con un mëssagi"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "rampiassé %1 con %2 an %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Rampiassé tute j'ocorense d'un test con n'àutr."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "Anversé %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Anversé l'òrdin dij caràter ant ël test."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Na litra, na paròla o na linia ëd test."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "gavé jë spassi da le doe bande ëd"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "gavé jë spassi da la banda snistra ëd"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "gavé jë spassi da la banda drita ëd"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "A smon na còpia dël test con jë spassi gavà da n'estremità o da tute doe."; +Blockly.Msg["TODAY"] = "Ancheuj"; +Blockly.Msg["UNDO"] = "Anulé"; +Blockly.Msg["UNNAMED_KEY"] = "anònim"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Creé 'fissé %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "A smon ël valor ëd sa variàbil."; +Blockly.Msg["VARIABLES_SET"] = "fissé %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Creé 'oten-e %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Fissé costa variàbil ugual al valor d'imission."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Na variàbil con ël nòm '%1' a esist già."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Na variàbil ciamà '%1' a esist già për n'àutra sòrt: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Spassi ëd travaj ëd Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Dì cheicòs..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ps.js b/msg/js/ps.js index 5422cb13849..248219df40b 100644 --- a/msg/js/ps.js +++ b/msg/js/ps.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "تبصره ورگډول"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ارزښت بدلول:"; -Blockly.Msg["CLEAN_UP"] = "بلاکونه پاکول"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "بلاکونه پرځول"; -Blockly.Msg["COLLAPSE_BLOCK"] = "بلاک پرځول"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ps.wikipedia.org/wiki/رنگ"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ناټاکلی رنگ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "شين"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "زرغون"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "سور"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "د رنگ سره"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "که"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "بلاک ړنگول"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 بلاکونه ړنگول"; -Blockly.Msg["DIALOG_CANCEL"] = "ناگارل"; -Blockly.Msg["DIALOG_OK"] = "ښه"; -Blockly.Msg["DISABLE_BLOCK"] = "بلاک ناچارنول"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "بلاک چارنول"; -Blockly.Msg["EXPAND_ALL"] = "بلاکونه غځول"; -Blockly.Msg["EXPAND_BLOCK"] = "بلاک غځول"; -Blockly.Msg["EXTERNAL_INPUTS"] = "باندنۍ ننوېستنې"; -Blockly.Msg["HELP"] = "لارښود"; -Blockly.Msg["INLINE_INPUTS"] = "پرکرښه ننوېستنې"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لړليک"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "لومړنی"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "ترلاسه کول"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "وروستنی"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ناټاکلی"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 تش دی"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "لکه"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ناسم"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سم"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "او"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "يا"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمويل"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' جوړول"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "بياکړل"; -Blockly.Msg["REMOVE_COMMENT"] = "تبصره غورځول"; -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "په متن کې"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "نن"; -Blockly.Msg["UNDO"] = "ناکړل"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "توکی"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "تبصره ورگډول"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ارزښت بدلول:"; +Blockly.Msg["CLEAN_UP"] = "بلاکونه پاکول"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "بلاکونه پرځول"; +Blockly.Msg["COLLAPSE_BLOCK"] = "بلاک پرځول"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ps.wikipedia.org/wiki/رنگ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ناټاکلی رنگ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "شين"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "زرغون"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "سور"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "د رنگ سره"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "که"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "بلاک ړنگول"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 بلاکونه ړنگول"; +Blockly.Msg["DIALOG_CANCEL"] = "ناگارل"; +Blockly.Msg["DIALOG_OK"] = "ښه"; +Blockly.Msg["DISABLE_BLOCK"] = "بلاک ناچارنول"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "بلاک چارنول"; +Blockly.Msg["EXPAND_ALL"] = "بلاکونه غځول"; +Blockly.Msg["EXPAND_BLOCK"] = "بلاک غځول"; +Blockly.Msg["EXTERNAL_INPUTS"] = "باندنۍ ننوېستنې"; +Blockly.Msg["HELP"] = "لارښود"; +Blockly.Msg["INLINE_INPUTS"] = "پرکرښه ننوېستنې"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لړليک"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "لومړنی"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "ترلاسه کول"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "وروستنی"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ناټاکلی"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 تش دی"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "لکه"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ناسم"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سم"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نه %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "او"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "يا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "آزمويل"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' جوړول"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "بياکړل"; +Blockly.Msg["REMOVE_COMMENT"] = "تبصره غورځول"; +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "په متن کې"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "نن"; +Blockly.Msg["UNDO"] = "ناکړل"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "توکی"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/pt-br.js b/msg/js/pt-br.js index 076fca083b1..32308d0c0f1 100644 --- a/msg/js/pt-br.js +++ b/msg/js/pt-br.js @@ -1,425 +1,438 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Adicionar comentário"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Não se pode deletar a variável '%1' porque é parte da definição da função '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Mudar valor:"; -Blockly.Msg["CLEAN_UP"] = "Limpar blocos"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Bloqueios recolhidos contêm avisos."; -Blockly.Msg["COLLAPSE_ALL"] = "Colapsar Blocos"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Colapsar Bloco"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporção"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "misturar"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mistura duas cores em uma dada proporção (0,0 - 1,0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://pt.wikipedia.org/wiki/Cor"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolher uma cor da palheta de cores."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor aleatória"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolher cor de forma aleatória."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "vermelho"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colorir com"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Criar uma cor com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "encerra o laço"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continua com a próxima iteração do laço"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Encerra o laço."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ignora o resto deste laço, e continua com a próxima iteração."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atenção: Este bloco só pode ser usado dentro de um laço."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "para cada item %1 na lista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para cada item em uma lista, atribua o item à variável '%1' e então realize algumas instruções."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar com %1 de %2 até %3 por %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Faça com que a variável '%1' assuma os valores do número inicial ao número final, contando de acordo com o intervalo especificado e execute os blocos especificados."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Acrescente uma condição para o bloco se."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Acrescente uma condição final para o bloco se."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Acrescente, remova ou reordene seções para reconfigurar este bloco."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senão"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "senão se"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Se um valor for verdadeiro, então realize algumas instruções."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Se um valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se o primeiro valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "faça"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repita %1 vezes"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faça algumas instruções várias vezes."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repita até"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repita enquanto"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Enquanto um valor for falso, então faça algumas instruções."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Enquanto um valor for verdadeiro, então faça algumas instruções."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Deletar todos os blocos %1?"; -Blockly.Msg["DELETE_BLOCK"] = "Deletar bloco"; -Blockly.Msg["DELETE_VARIABLE"] = "Deletar a variável '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Deletar %1 usos da variável '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Deletar %1 blocos"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Desabilitar bloco"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar comentário"; -Blockly.Msg["ENABLE_BLOCK"] = "Habilitar bloco"; -Blockly.Msg["EXPAND_ALL"] = "Expandir blocos"; -Blockly.Msg["EXPAND_BLOCK"] = "Expandir bloco"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas"; -Blockly.Msg["HELP"] = "Ajuda"; -Blockly.Msg["INLINE_INPUTS"] = "Entradas incorporadas"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "criar lista vazia"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna uma lista, de tamanho 0, contendo nenhum registro"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Acrescenta, remove ou reordena seções para reconfigurar este bloco de lista."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "criar lista com"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Acrescenta um item à lista."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Cria uma lista com a quantidade de itens informada."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "nº a partir do final"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "nº"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "obter"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obter e remover"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "último"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatório"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remover"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna o primeiro item em uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna o item da lista na posição especificada."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna o último item em uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna um item aleatório de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Remove e retorna o primeiro item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Remove e retorna o item na posição especificada em uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Remove e retorna o último item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Remove e retorna um item aleatório de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Remove o primeiro item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Remove o item na posição especificada em uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Remove o último item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Remove um item aleatório de uma lista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "até nº a partir do final"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "até nº"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "até último"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtém sublista a partir do primeiro"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtém sublista de nº a partir do final"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtém sublista de nº"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Cria uma cópia da porção especificada de uma lista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o último item."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro item."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "encontre a primeira ocorrência do item"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "encontre a última ocorrência do item"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna o índice da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado."; -Blockly.Msg["LISTS_INLIST"] = "na lista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 é vazia"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retorna ao verdadeiro se a lista estiver vazia."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; -Blockly.Msg["LISTS_LENGTH_TITLE"] = "tamanho de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna o tamanho de uma lista."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_REPEAT_TITLE"] = "criar lista com item %1 repetido %2 vezes"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Cria uma lista consistindo no valor informado repetido o número de vezes especificado."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Listas#invertendo-uma-lista"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverter %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverter uma cópia da lista."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir em"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insere o item no início de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insere o item na posição especificada em uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Insere o item no final de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insere o item em uma posição qualquer de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Define o primeiro item de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Define o item da posição especificada de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Define o último item de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Define um item aleatório de uma lista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; -Blockly.Msg["LISTS_SORT_TITLE"] = "ordenar %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordenar uma cópia de uma lista."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabético, ignorar maiúscula/minúscula"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérico"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabético"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Fazer uma lista a partir do texto"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fazer um texto a partir da lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Juntar uma lista de textos em um único texto, separado por um delimitador."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividir o texto em uma lista de textos, separando-o em cada delimitador."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "com delimitador"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna verdadeiro ou falso."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retorna verdadeiro se ambas as entradas forem iguais."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retorna verdadeiro se ambas as entradas forem diferentes."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "não %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retorna verdadeiro se a entrada for falsa. Retorna falsa se a entrada for verdadeira."; -Blockly.Msg["LOGIC_NULL"] = "nulo"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nulo."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retorna verdadeiro se ambas as entradas forem verdadeiras."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retorna verdadeiro se uma das estradas for verdadeira."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "teste"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\"."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://pt.wikipedia.org/wiki/Aritm%C3%A9tica"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a soma dos dois números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o quociente da divisão dos dois números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferença entre os dois números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto dos dois números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado à potência do segundo número."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Retorne o arco tangente do ponto (X, Y) em graus de -180 a 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "alterar %1 por %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Soma um número à variável \"%1\"."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "restringe %1 inferior %2 superior %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Restringe um número entre os limites especificados (inclusivo)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisível por"; -Blockly.Msg["MATH_IS_EVEN"] = "é par"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo"; -Blockly.Msg["MATH_IS_ODD"] = "é ímpar"; -Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo"; -Blockly.Msg["MATH_IS_PRIME"] = "é primo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se um número é par, ímpar, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso."; -Blockly.Msg["MATH_IS_WHOLE"] = "é inteiro"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo"; -Blockly.Msg["MATH_MODULO_TITLE"] = "resto da divisão de %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retorna o resto da divisão de dois números."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://pt.wikipedia.org/wiki/N%C3%BAmero"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Um número."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "média da lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior da lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana da lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor da lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda da lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "item aleatório da lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desvio padrão da lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma de uma lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retorna a média aritmética dos números da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retorna a mediana dos números da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retorna uma lista do(s) item(ns) mais comum(ns) da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retorna um elemento aleatório da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retorna o desvio padrão dos números da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a soma de todos os números na lista."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fração aleatória"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Retorna uma fração aleatória entre 0.0 (inclusivo) e 1.0 (exclusivo)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "inteiro aleatório entre %1 e %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retorna um número inteiro entre os dois limites informados, inclusivo."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://pt.wikipedia.org/wiki/Arredondamento"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda para baixo"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda para cima"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda um número para cima ou para baixo."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://pt.wikipedia.org/wiki/Raiz_quadrada"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raiz quadrada"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado à potência de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logaritmo natural de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logaritmo em base 10 de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado à potência de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raiz quadrada de um número."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco cosseno de um número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno de um número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tangente de um número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o cosseno de um grau (não radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno de um grau (não radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tangente de um grau (não radiano)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Criar variável colorida..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Criar variável numérica..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Criar variável de segmentos de texto..."; -Blockly.Msg["NEW_VARIABLE"] = "Criar variável..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variável:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo da nova variável:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitir declarações"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "com:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executa a função definida pelo usuário \"%1\"."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/Sub-rotina"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executa a função definida pelo usuário \"%1\" e usa seu retorno."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "com:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Criar \"%1\""; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descreva esta função..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "faça algo"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "para"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Cria uma função que não tem retorno."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorna"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Cria uma função que possui um valor de retorno."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Atenção: Esta função tem parâmetros duplicados."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Destacar definição da função"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se um valor é verdadeiro, então retorna um valor."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Atenção: Este bloco só pode ser utilizado dentro da definição de uma função."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nome da entrada:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adiciona uma entrada para esta função"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adiciona, remove, ou reordena as entradas para esta função."; -Blockly.Msg["REDO"] = "Refazer"; -Blockly.Msg["REMOVE_COMMENT"] = "Remover comentário"; -Blockly.Msg["RENAME_VARIABLE"] = "Renomear variável..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variáveis '%1' para:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "para %1 anexar texto %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Acrescentar um pedaço de texto à variável \"%1\"."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "para minúsculas"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "para Nomes Próprios"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "para MAIÚSCULAS"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retorna uma cópia do texto em um formato diferente."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "obter primeira letra"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obter letra # a partir do final"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obter letra nº"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "obter última letra"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obter letra aleatória"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "no texto %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Retorna a letra na posição especificada."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "Contar %1 em %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Calcule quantas vezes algum texto aparece centro de algum outro texto."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Acrescentar um item ao texto."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "até letra nº a partir do final"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "até letra nº"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "até última letra"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no texto"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obter trecho de primeira letra"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obter trecho de letra nº a partir do final"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obter trecho de letra nº"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Retorna o trecho de texto especificado."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "encontre a primeira ocorrência do item"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "encontre a última ocorrência do texto"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "no texto %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 é vazio"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna verdadeiro se o texto fornecido for vazio."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "criar texto com"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Criar um pedaço de texto juntando qualquer número de itens."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "tamanho de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Retorna o número de letras (incluindo espaços) no texto fornecido."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; -Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprime o texto, número ou valor especificado."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pede ao usuário um número."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pede ao usuário um texto."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Pede um número com uma mensagem"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Pede um texto com uma mensagem"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Texto#substituindo-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "substituir %1 por %2 em %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Substitua todas as ocorrências de algum texto dentro de algum outro texto."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Texto#invertendo-texto"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverter %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverter a ordem dos caracteres no texto."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://pt.wikipedia.org/wiki/Cadeia_de_caracteres"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Uma letra, palavra ou linha de texto."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "remover espaços de ambos os lados de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "remover espaços à esquerda de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "remover espaços à direita de"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retorna uma cópia do texto com os espaços removidos de uma ou ambas extremidades."; -Blockly.Msg["TODAY"] = "Hoje"; -Blockly.Msg["UNDO"] = "Desfazer"; -Blockly.Msg["UNNAMED_KEY"] = "Sem título"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Criar \"definir %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna o valor desta variável."; -Blockly.Msg["VARIABLES_SET"] = "definir %1 para %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Criar \"obter %1\""; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Define esta variável para o valor da entrada."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variável chamada '%1' já existe."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Já existe uma variável chamada '%1' para outra do tipo: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espaço de trabalho do Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Diz algo..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; -Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Adicionar comentário"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Não se pode deletar a variável '%1' porque é parte da definição da função '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Mudar valor:"; +Blockly.Msg["CLEAN_UP"] = "Limpar blocos"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Bloqueios recolhidos contêm avisos."; +Blockly.Msg["COLLAPSE_ALL"] = "Colapsar Blocos"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Colapsar Bloco"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporção"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "misturar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mistura duas cores em uma dada proporção (0,0 - 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://pt.wikipedia.org/wiki/Cor"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolher uma cor da palheta de cores."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor aleatória"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolher cor de forma aleatória."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "vermelho"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorir com"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Criar uma cor com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "encerra o laço"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continua com a próxima iteração do laço"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Encerra o laço."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ignora o resto deste laço, e continua com a próxima iteração."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Atenção: Este bloco só pode ser usado dentro de um laço."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "para cada item %1 na lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para cada item em uma lista, atribua o item à variável '%1' e então realize algumas instruções."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar com %1 de %2 até %3 por %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Faça com que a variável '%1' assuma os valores do número inicial ao número final, contando de acordo com o intervalo especificado e execute os blocos especificados."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Acrescente uma condição para o bloco se."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Acrescente uma condição final para o bloco se."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Acrescente, remova ou reordene seções para reconfigurar este bloco."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senão"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "senão se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Se um valor for verdadeiro, então realize algumas instruções."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Se um valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se o primeiro valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "faça"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repita %1 vezes"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faça algumas instruções várias vezes."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repita até"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repita enquanto"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Enquanto um valor for falso, então faça algumas instruções."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Enquanto um valor for verdadeiro, então faça algumas instruções."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Deletar todos os blocos %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Deletar bloco"; +Blockly.Msg["DELETE_VARIABLE"] = "Deletar a variável '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Deletar %1 usos da variável '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Deletar %1 blocos"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Desabilitar bloco"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar comentário"; +Blockly.Msg["ENABLE_BLOCK"] = "Habilitar bloco"; +Blockly.Msg["EXPAND_ALL"] = "Expandir blocos"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir bloco"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas externas"; +Blockly.Msg["HELP"] = "Ajuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas incorporadas"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "criar lista vazia"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna uma lista, de tamanho 0, contendo nenhum registro"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Acrescenta, remove ou reordena seções para reconfigurar este bloco de lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "criar lista com"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Acrescenta um item à lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Cria uma lista com a quantidade de itens informada."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "nº a partir do final"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "nº"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obter"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obter e remover"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "último"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatório"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remover"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna o primeiro item em uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna o item da lista na posição especificada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna o último item em uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Remove e retorna o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Remove e retorna o item na posição especificada em uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Remove e retorna o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Remove e retorna um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Remove o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Remove o item na posição especificada em uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Remove o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Remove um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "até nº a partir do final"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "até nº"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "até último"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtém sublista a partir do primeiro"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtém sublista de nº a partir do final"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtém sublista de nº"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Cria uma cópia da porção especificada de uma lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o último item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "encontre a primeira ocorrência do item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "encontre a última ocorrência do item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna o índice da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado."; +Blockly.Msg["LISTS_INLIST"] = "na lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 é vazia"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retorna ao verdadeiro se a lista estiver vazia."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "tamanho de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna o tamanho de uma lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "criar lista com item %1 repetido %2 vezes"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Cria uma lista consistindo no valor informado repetido o número de vezes especificado."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Listas#invertendo-uma-lista"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverter uma cópia da lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir em"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insere o item no início de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insere o item na posição especificada em uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Insere o item no final de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insere o item em uma posição qualquer de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Define o primeiro item de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Define o item da posição especificada de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Define o último item de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Define um item aleatório de uma lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordenar %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordenar uma cópia de uma lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabético, ignorar maiúscula/minúscula"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérico"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabético"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "Fazer uma lista a partir do texto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fazer um texto a partir da lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Juntar uma lista de textos em um único texto, separado por um delimitador."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividir o texto em uma lista de textos, separando-o em cada delimitador."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "com delimitador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna verdadeiro ou falso."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retorna verdadeiro se ambas as entradas forem iguais."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retorna verdadeiro se ambas as entradas forem diferentes."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "não %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retorna verdadeiro se a entrada for falsa. Retorna falsa se a entrada for verdadeira."; +Blockly.Msg["LOGIC_NULL"] = "nulo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nulo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retorna verdadeiro se ambas as entradas forem verdadeiras."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retorna verdadeiro se uma das estradas for verdadeira."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "teste"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://pt.wikipedia.org/wiki/Aritm%C3%A9tica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a soma dos dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o quociente da divisão dos dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferença entre os dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto dos dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado à potência do segundo número."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Retorne o arco tangente do ponto (X, Y) em graus de -180 a 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "alterar %1 por %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Soma um número à variável \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "restringe %1 inferior %2 superior %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Restringe um número entre os limites especificados (inclusivo)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisível por"; +Blockly.Msg["MATH_IS_EVEN"] = "é par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo"; +Blockly.Msg["MATH_IS_ODD"] = "é ímpar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "é primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se um número é par, ímpar, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "é inteiro"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto da divisão de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retorna o resto da divisão de dois números."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://pt.wikipedia.org/wiki/N%C3%BAmero"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Um número."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "média da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "item aleatório da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desvio padrão da lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma de uma lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retorna a média aritmética dos números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retorna a mediana dos números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retorna uma lista do(s) item(ns) mais comum(ns) da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retorna um elemento aleatório da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retorna o desvio padrão dos números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a soma de todos os números na lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fração aleatória"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Retorna uma fração aleatória entre 0.0 (inclusivo) e 1.0 (exclusivo)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "inteiro aleatório entre %1 e %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retorna um número inteiro entre os dois limites informados, inclusivo."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://pt.wikipedia.org/wiki/Arredondamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda para baixo"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda para cima"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda um número para cima ou para baixo."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://pt.wikipedia.org/wiki/Raiz_quadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raiz quadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado à potência de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logaritmo natural de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logaritmo em base 10 de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado à potência de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raiz quadrada de um número."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco cosseno de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tangente de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o cosseno de um grau (não radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno de um grau (não radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tangente de um grau (não radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Criar variável colorida..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Criar variável numérica..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Criar variável de segmentos de texto..."; +Blockly.Msg["NEW_VARIABLE"] = "Criar variável..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variável:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo da nova variável:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitir declarações"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "com:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executa a função definida pelo usuário \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/Sub-rotina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executa a função definida pelo usuário \"%1\" e usa seu retorno."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "com:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Criar \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descreva esta função..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "faça algo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "para"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Cria uma função que não tem retorno."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorna"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Cria uma função que possui um valor de retorno."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Atenção: Esta função tem parâmetros duplicados."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Destacar definição da função"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Se um valor é verdadeiro, então retorna um valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Atenção: Este bloco só pode ser utilizado dentro da definição de uma função."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nome da entrada:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adiciona uma entrada para esta função"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adiciona, remove, ou reordena as entradas para esta função."; +Blockly.Msg["REDO"] = "Refazer"; +Blockly.Msg["REMOVE_COMMENT"] = "Remover comentário"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomear variável..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variáveis '%1' para:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "para %1 anexar texto %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Acrescentar um pedaço de texto à variável \"%1\"."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "para minúsculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "para Nomes Próprios"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "para MAIÚSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retorna uma cópia do texto em um formato diferente."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obter primeira letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obter letra # a partir do final"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obter letra nº"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obter última letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obter letra aleatória"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "no texto %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Retorna a letra na posição especificada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "Contar %1 em %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Calcule quantas vezes algum texto aparece centro de algum outro texto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Acrescentar um item ao texto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "até letra nº a partir do final"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "até letra nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "até última letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obter trecho de primeira letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obter trecho de letra nº a partir do final"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obter trecho de letra nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Retorna o trecho de texto especificado."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "encontre a primeira ocorrência do item"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "encontre a última ocorrência do texto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "no texto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 é vazio"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna verdadeiro se o texto fornecido for vazio."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "criar texto com"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Criar um pedaço de texto juntando qualquer número de itens."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "tamanho de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Retorna o número de letras (incluindo espaços) no texto fornecido."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprime o texto, número ou valor especificado."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pede ao usuário um número."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pede ao usuário um texto."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Pede um número com uma mensagem"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Pede um texto com uma mensagem"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Texto#substituindo-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "substituir %1 por %2 em %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Substitua todas as ocorrências de algum texto dentro de algum outro texto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Texto#invertendo-texto"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverter a ordem dos caracteres no texto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://pt.wikipedia.org/wiki/Cadeia_de_caracteres"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Uma letra, palavra ou linha de texto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "remover espaços de ambos os lados de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "remover espaços à esquerda de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "remover espaços à direita de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retorna uma cópia do texto com os espaços removidos de uma ou ambas extremidades."; +Blockly.Msg["TODAY"] = "Hoje"; +Blockly.Msg["UNDO"] = "Desfazer"; +Blockly.Msg["UNNAMED_KEY"] = "Sem título"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Criar \"definir %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna o valor desta variável."; +Blockly.Msg["VARIABLES_SET"] = "definir %1 para %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Criar \"obter %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Define esta variável para o valor da entrada."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variável chamada '%1' já existe."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Já existe uma variável chamada '%1' para outra do tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espaço de trabalho do Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Diz algo..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; + +Blockly.Msg["VARIABLES_CALL_OUT_TOOLTIP"] = "Chama um método da variável atual com retorno."; +Blockly.Msg["VARIABLES_CALL_TOOLTIP"] = "Chama um método da variável atual."; +Blockly.Msg["CALL_TEXT"] = "chamar"; +Blockly.Msg["RETURN_TEXT"] = "retornar"; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TOOLTIP"] = "Bloco que contem os blocos de inicialização do supervisório."; +Blockly.Msg["PROCEDURES_SETUP_TOOLTIP"] = "Bloco que contem os blocos de inicialização do programa."; +Blockly.Msg["PROCEDURES_RUN_TOOLTIP"] = "Bloco que contem os blocos de execução do programa."; +Blockly.Msg["PROCEDURES_SETUP_TITLE"] = "Inicialização"; +Blockly.Msg["PROCEDURES_SETUP_SUPERVISOR_TITLE"] = "Inicialização do Supervisório"; +Blockly.Msg["PROCEDURES_RUN_TITLE"] = "Execução"; +Blockly.Msg["VARIABLES_METHODS_CALLS"] = "Chamadas de métodos"; +Blockly.Msg["PROCEDURES_MAIN_FUNCS"] = "Funções principais" \ No newline at end of file diff --git a/msg/js/pt.js b/msg/js/pt.js index c4104bf6f43..2a1808b9ddf 100644 --- a/msg/js/pt.js +++ b/msg/js/pt.js @@ -1,425 +1,426 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Adicionar Comentário"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Não se pode eliminar a variável '%1' porque faz parte da definição da função '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Alterar valor:"; -Blockly.Msg["CLEAN_UP"] = "Limpar Blocos"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Os blocos ocultados contêm avisos."; -Blockly.Msg["COLLAPSE_ALL"] = "Ocultar Blocos"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Ocultar Bloco"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporção"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "misturar"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mistura duas cores com a proporção indicada (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://pt.wikipedia.org/wiki/Cor"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolha uma cor da paleta de cores."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor aleatória"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolha uma cor aleatoriamente."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "vermelho"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "pinte com"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Cria uma cor de acordo com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "sair do ciclo"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar com a próxima iteração do ciclo"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sair do ciclo que está contido."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ignorar o resto deste ciclo, e continuar com a próxima iteração."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Aviso: Este bloco só pode ser usado dentro de um ciclo."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "para cada item %1 na lista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para cada item numa lista, define a variável \"%1\" para o item e então faz algumas instruções."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar com %1 de %2 até %3 por %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Faz com que a variável \"%1\" assuma os valores desde o número inicial até ao número final, contando de acordo com o intervalo especificado e executa os blocos especificados."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Acrescente uma condição ao bloco se."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Acrescente uma condição de excepação final para o bloco se."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Acrescente, remova ou reordene secções para reconfigurar este bloco se."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senão"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "senão se"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Se um valor é verdadeiro, então realize alguns passos."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Se um valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "http://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "faça"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 vez"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faça algumas instruções várias vezes."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir até"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir enquanto"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Enquanto um valor for falso, então faça algumas instruções."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Enquanto um valor for verdadeiro, então faça algumas instruções."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Eliminar todos os %1 blocos?"; -Blockly.Msg["DELETE_BLOCK"] = "Eliminar Bloco"; -Blockly.Msg["DELETE_VARIABLE"] = "Eliminar a variável '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Eliminar %1 utilizações da variável '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Eliminar %1 Blocos"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Desativar Bloco"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar comentário"; -Blockly.Msg["ENABLE_BLOCK"] = "Ativar Bloco"; -Blockly.Msg["EXPAND_ALL"] = "Expandir Blocos"; -Blockly.Msg["EXPAND_BLOCK"] = "Expandir Bloco"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas Externas"; -Blockly.Msg["HELP"] = "Ajuda"; -Blockly.Msg["INLINE_INPUTS"] = "Entradas Em Linhas"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "criar lista vazia"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna uma lista, de tamanho 0, contendo nenhum registo"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Acrescente, remova ou reordene as seções para reconfigurar este bloco lista."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "criar lista com"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Acrescenta um item à lista."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Cria uma lista com qualquer número de itens."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# a partir do final"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "obter"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obter e remover"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "último"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatório"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remover"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna o primeiro item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna o item na posição especificada da lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna o último item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna um item aleatório de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Remove e retorna o primeiro item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Remove e retorna o item na posição especificada de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Remove e retorna o último item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Remove e retorna um item aleatório de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Remove o primeiro item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Remove o item de uma posição especifica da lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Remove o último item de uma lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Remove um item aleatório de uma lista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "até #, a partir do final"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "até #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "para o último"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtem sublista da primeira lista"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtem sublista de # a partir do final"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtem sublista de #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Cria uma cópia da porção especificada de uma lista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o último item."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro item."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "encontre a primeira ocorrência do item"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "encontre a última ocorrência do item"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna a posição da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado."; -Blockly.Msg["LISTS_INLIST"] = "na lista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 está vazia"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retona verdadeiro se a lista estiver vazia."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "tamanho de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna o tamanho de uma lista."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "criar lista com o item %1 repetido %2 vezes"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Cria uma lista constituída por um dado valor repetido o número de vezes especificado."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverter %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverter uma cópia da lista."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir em"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insere o item no início da lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insere o item numa posição especificada numa lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Insere o item no final da lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insere o item numa posição aleatória de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Define o primeiro item de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Define o item na posição especificada de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Define o último item de uma lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Define um item aleatório de uma lista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; -Blockly.Msg["LISTS_SORT_TITLE"] = "ordenar %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordenar uma cópia de uma lista."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabética, ignorar maiúsculas/minúsculas"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérica"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabética"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fazer lista a partir de texto"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fazer texto a partir da lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Juntar uma lista de textos num único texto, separado por um delimitador."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividir o texto numa lista de textos, separando-o em cada delimitador."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "com delimitador"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna verdadeiro ou falso."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "http://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retorna verdadeiro se ambas as entradas forem iguais entre si."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retorna verdadeiro se ambas as entradas forem diferentes entre si."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "não %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retorna verdadeiro se a entrada for falsa. Retorna falso se a entrada for verdadeira."; -Blockly.Msg["LOGIC_NULL"] = "nulo"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "http://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nulo."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retorna verdadeiro se ambas as entradas forem verdadeiras."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retorna verdadeiro se pelo menos uma das estradas for verdadeira."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "teste"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "http://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\"."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "http://pt.wikipedia.org/wiki/Aritm%C3%A9tica"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a soma de dois números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o quociente da divisão de dois números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferença de dois números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto de dois números."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado à potência do segundo número."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Devolver o arco tangente do ponto (X, Y) em graus entre -180 e 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "http://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "alterar %1 por %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Soma um número à variável \"%1\"."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "http://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "restringe %1 inferior %2 superior %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Restringe um número entre os limites especificados (inclusive)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisível por"; -Blockly.Msg["MATH_IS_EVEN"] = "é par"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo"; -Blockly.Msg["MATH_IS_ODD"] = "é impar"; -Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo"; -Blockly.Msg["MATH_IS_PRIME"] = "é primo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se um número é par, impar, primo, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso."; -Blockly.Msg["MATH_IS_WHOLE"] = "é inteiro"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "http://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo"; -Blockly.Msg["MATH_MODULO_TITLE"] = "resto da divisão de %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retorna o resto da divisão de dois números."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "http://pt.wikipedia.org/wiki/N%C3%BAmero"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Um número."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "média de uma lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior de uma lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de uma lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor de uma lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda de uma lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "item aleatório de uma lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desvio padrão de uma lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma da lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retorna a média aritmética dos valores números da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retorna a mediana da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retorna a lista de item(ns) mais comum(ns) da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retorna um elemento aleatório da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retorna o desvio padrão dos números da lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a soma de todos os números da lista."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fração aleatória"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Insere uma fração aleatória entre 0.0 (inclusive) e 1.0 (exclusive)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "inteiro aleatório entre %1 e %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retorna um número inteiro entre os dois limites especificados, inclusive."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "http://pt.wikipedia.org/wiki/Arredondamento"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda para baixo"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda para cima"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda um número para cima ou para baixo."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "http://pt.wikipedia.org/wiki/Raiz_quadrada"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz quadrada"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado à potência de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logarítmo natural de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logarítmo em base 10 de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado à potência de um número."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raiz quadrada de um número."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "http://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco cosseno de um número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno de um número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tangente de um número."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o cosseno de um grau (não radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno de um grau (não radiano)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tangente de um grau (não radiano)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Criar variável colorida..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Criar variável numérica..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Criar variável de segmentos de texto..."; -Blockly.Msg["NEW_VARIABLE"] = "Criar variável…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variável:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo da nova variável:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitir declarações"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "com:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/Sub-rotina"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executa a função \"%1\"."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/Sub-rotina"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executa a função \"%1\" e usa o seu retorno."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "com:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Criar \"%1\""; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descreva esta função..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "faz algo"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "para"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Cria uma função que não tem retorno."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorna"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Cria uma função que possui um valor de retorno."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Aviso: Esta função tem parâmetros duplicados."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Destacar definição da função"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "se o valor é verdadeiro, então retorna um segundo valor."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Aviso: Este bloco só pode ser utilizado dentro da definição de uma função."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nome da entrada:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adicionar uma entrada para a função."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adicionar, remover ou reordenar as entradas para esta função."; -Blockly.Msg["REDO"] = "Refazer"; -Blockly.Msg["REMOVE_COMMENT"] = "Remover Comentário"; -Blockly.Msg["RENAME_VARIABLE"] = "Renomear variável..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variáveis '%1' para:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "para %1 acrescentar texto %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Acrescentar um pedaço de texto à variável \"%1\"."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "para minúsculas"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "para Iniciais Maiúsculas"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "para MAIÚSCULAS"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retorna uma cópia do texto em formato diferente."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "obter primeira letra"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obter letra nº a partir do final"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obter letra nº"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "obter última letra"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obter letra aleatória"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "no texto %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Retorna a letra na posição especificada."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "contar %1 em %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Conte quantas vezes um certo texto aparece dentro de algum outro texto."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Acrescentar um item ao texto."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "até letra nº a partir do final"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "até letra nº"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "até última letra"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no texto"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obter subsequência a partir da primeira letra"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obter subsequência de tamanho # a partir do final"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obter subsequência de tamanho #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Retorna a parte especificada do texto."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "primeira ocorrência do texto"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "última ocorrência do texto"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "no texto %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 está vazio"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna verdadeiro se o texto fornecido estiver vazio."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "criar texto com"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Criar um pedaço de texto juntando qualquer número de itens."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "tamanho de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Devolve o número de letras (incluindo espaços) do texto fornecido."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprime o texto, número ou outro valor especificado."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pede ao utilizador um número."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pede ao utilizador um texto."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pede um número com a mensagem"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Pede um texto com a mensagem"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "substituir %1 por %2 em %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Substituir todas as ocorrências de um certo texto dentro de algum outro texto."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverter %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverte a ordem dos caracteres no texto."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "http://pt.wikipedia.org/wiki/Cadeia_de_caracteres"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Uma letra, palavra ou linha de texto."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "remover espaços de ambos os lados"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "remover espaços à esquerda de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "remover espaços à direita"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retorna uma cópia do texto com os espaços removidos de uma ou ambas as extremidades."; -Blockly.Msg["TODAY"] = "Hoje"; -Blockly.Msg["UNDO"] = "Desfazer"; -Blockly.Msg["UNNAMED_KEY"] = "sem nome"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Criar \"definir %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna o valor desta variável."; -Blockly.Msg["VARIABLES_SET"] = "definir %1 para %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Criar \"obter %1\""; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Define esta variável para o valor inserido."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Já existe uma variável com o nome de '%1'."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Já existe uma variável chamada '%1' para outra do tipo: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espaço de trabalho de Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Diz algo..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; -Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Adicionar Comentário"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Não se pode eliminar a variável '%1' porque faz parte da definição da função '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Alterar valor:"; +Blockly.Msg["CLEAN_UP"] = "Limpar Blocos"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Os blocos ocultados contêm avisos."; +Blockly.Msg["COLLAPSE_ALL"] = "Ocultar Blocos"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Ocultar Bloco"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "cor 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "cor 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporção"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "misturar"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Mistura duas cores com a proporção indicada (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://pt.wikipedia.org/wiki/Cor"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Escolha uma cor da paleta de cores."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "cor aleatória"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Escolha uma cor aleatoriamente."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "azul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "vermelho"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "pinte com"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Cria uma cor de acordo com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "sair do ciclo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuar com a próxima iteração do ciclo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Sair do ciclo que está contido."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ignorar o resto deste ciclo, e continuar com a próxima iteração."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Aviso: Este bloco só pode ser usado dentro de um ciclo."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "para cada item %1 na lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para cada item numa lista, define a variável \"%1\" para o item e então faz algumas instruções."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "contar com %1 de %2 até %3 por %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Faz com que a variável \"%1\" assuma os valores desde o número inicial até ao número final, contando de acordo com o intervalo especificado e executa os blocos especificados."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Acrescente uma condição ao bloco se."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Acrescente uma condição de excepação final para o bloco se."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Acrescente, remova ou reordene secções para reconfigurar este bloco se."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "senão"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "senão se"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "se"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Se um valor é verdadeiro, então realize alguns passos."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Se um valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "http://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "faça"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetir %1 vez"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Faça algumas instruções várias vezes."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repetir até"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetir enquanto"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Enquanto um valor for falso, então faça algumas instruções."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Enquanto um valor for verdadeiro, então faça algumas instruções."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Eliminar todos os %1 blocos?"; +Blockly.Msg["DELETE_BLOCK"] = "Eliminar Bloco"; +Blockly.Msg["DELETE_VARIABLE"] = "Eliminar a variável '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Eliminar %1 utilizações da variável '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Eliminar %1 Blocos"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancelar"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Desativar Bloco"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicar"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicar comentário"; +Blockly.Msg["ENABLE_BLOCK"] = "Ativar Bloco"; +Blockly.Msg["EXPAND_ALL"] = "Expandir Blocos"; +Blockly.Msg["EXPAND_BLOCK"] = "Expandir Bloco"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Entradas Externas"; +Blockly.Msg["HELP"] = "Ajuda"; +Blockly.Msg["INLINE_INPUTS"] = "Entradas Em Linhas"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "criar lista vazia"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Retorna uma lista, de tamanho 0, contendo nenhum registo"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Acrescente, remova ou reordene as seções para reconfigurar este bloco lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "criar lista com"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Acrescenta um item à lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Cria uma lista com qualquer número de itens."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primeiro"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# a partir do final"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obter"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obter e remover"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "último"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleatório"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remover"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Retorna o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Retorna o item na posição especificada da lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Retorna o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Retorna um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Remove e retorna o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Remove e retorna o item na posição especificada de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Remove e retorna o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Remove e retorna um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Remove o primeiro item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Remove o item de uma posição especifica da lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Remove o último item de uma lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Remove um item aleatório de uma lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "até #, a partir do final"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "até #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "para o último"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obtem sublista da primeira lista"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obtem sublista de # a partir do final"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obtem sublista de #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Cria uma cópia da porção especificada de uma lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 é o último item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 é o primeiro item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "encontre a primeira ocorrência do item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "encontre a última ocorrência do item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Retorna a posição da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado."; +Blockly.Msg["LISTS_INLIST"] = "na lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 está vazia"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Retona verdadeiro se a lista estiver vazia."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "tamanho de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Retorna o tamanho de uma lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "criar lista com o item %1 repetido %2 vezes"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Cria uma lista constituída por um dado valor repetido o número de vezes especificado."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inverter uma cópia da lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "como"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserir em"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "definir"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insere o item no início da lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insere o item numa posição especificada numa lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Insere o item no final da lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Insere o item numa posição aleatória de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Define o primeiro item de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Define o item na posição especificada de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Define o último item de uma lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Define um item aleatório de uma lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascendente"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descendente"; +Blockly.Msg["LISTS_SORT_TITLE"] = "ordenar %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Ordenar uma cópia de uma lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabética, ignorar maiúsculas/minúsculas"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numérica"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabética"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fazer lista a partir de texto"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fazer texto a partir da lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Juntar uma lista de textos num único texto, separado por um delimitador."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividir o texto numa lista de textos, separando-o em cada delimitador."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "com delimitador"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falso"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Retorna verdadeiro ou falso."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "verdadeiro"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "http://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Retorna verdadeiro se ambas as entradas forem iguais entre si."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Retorna verdadeiro se ambas as entradas forem diferentes entre si."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "não %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Retorna verdadeiro se a entrada for falsa. Retorna falso se a entrada for verdadeira."; +Blockly.Msg["LOGIC_NULL"] = "nulo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "http://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Retorna nulo."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "e"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ou"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Retorna verdadeiro se ambas as entradas forem verdadeiras."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Retorna verdadeiro se pelo menos uma das estradas for verdadeira."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "teste"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "http://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "se falso"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "se verdadeiro"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "http://pt.wikipedia.org/wiki/Aritm%C3%A9tica"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Retorna a soma de dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Retorna o quociente da divisão de dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Retorna a diferença de dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Retorna o produto de dois números."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Retorna o primeiro número elevado à potência do segundo número."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 de X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Devolver o arco tangente do ponto (X, Y) em graus entre -180 e 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "http://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "alterar %1 por %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Soma um número à variável \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "http://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "restringe %1 inferior %2 superior %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Restringe um número entre os limites especificados (inclusive)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "é divisível por"; +Blockly.Msg["MATH_IS_EVEN"] = "é par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "é negativo"; +Blockly.Msg["MATH_IS_ODD"] = "é impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "é positivo"; +Blockly.Msg["MATH_IS_PRIME"] = "é primo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifica se um número é par, impar, primo, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso."; +Blockly.Msg["MATH_IS_WHOLE"] = "é inteiro"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "http://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resto da divisão de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Retorna o resto da divisão de dois números."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "http://pt.wikipedia.org/wiki/N%C3%BAmero"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Um número."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "média de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maior de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "menor de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moda de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "item aleatório de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "desvio padrão de uma lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "soma da lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Retorna a média aritmética dos valores números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Retorna o maior número da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Retorna a mediana da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Retorna o menor número da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Retorna a lista de item(ns) mais comum(ns) da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Retorna um elemento aleatório da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Retorna o desvio padrão dos números da lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Retorna a soma de todos os números da lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fração aleatória"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Insere uma fração aleatória entre 0.0 (inclusive) e 1.0 (exclusive)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "inteiro aleatório entre %1 e %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Retorna um número inteiro entre os dois limites especificados, inclusive."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "http://pt.wikipedia.org/wiki/Arredondamento"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arredonda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arredonda para baixo"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "arredonda para cima"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arredonda um número para cima ou para baixo."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "http://pt.wikipedia.org/wiki/Raiz_quadrada"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absoluto"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "raíz quadrada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Retorna o valor absoluto de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Retorna o número e elevado à potência de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Retorna o logarítmo natural de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Retorna o logarítmo em base 10 de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Retorna o oposto de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Retorna 10 elevado à potência de um número."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Retorna a raiz quadrada de um número."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "http://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Retorna o arco cosseno de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Retorna o arco seno de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Retorna o arco tangente de um número."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Retorna o cosseno de um grau (não radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Retorna o seno de um grau (não radiano)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Retorna a tangente de um grau (não radiano)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Criar variável colorida..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Criar variável numérica..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Criar variável de segmentos de texto..."; +Blockly.Msg["NEW_VARIABLE"] = "Criar variável…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nome da nova variável:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tipo da nova variável:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permitir declarações"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "com:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/Sub-rotina"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executa a função \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://pt.wikipedia.org/wiki/Sub-rotina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executa a função \"%1\" e usa o seu retorno."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "com:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Criar \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descreva esta função..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "faz algo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "para"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Cria uma função que não tem retorno."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "retorna"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Cria uma função que possui um valor de retorno."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Aviso: Esta função tem parâmetros duplicados."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Destacar definição da função"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "se o valor é verdadeiro, então retorna um segundo valor."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Aviso: Este bloco só pode ser utilizado dentro da definição de uma função."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nome da entrada:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adicionar uma entrada para a função."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "entradas"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adicionar, remover ou reordenar as entradas para esta função."; +Blockly.Msg["REDO"] = "Refazer"; +Blockly.Msg["REMOVE_COMMENT"] = "Remover Comentário"; +Blockly.Msg["RENAME_VARIABLE"] = "Renomear variável..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Renomear todas as variáveis '%1' para:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "para %1 acrescentar texto %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Acrescentar um pedaço de texto à variável \"%1\"."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "para minúsculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "para Iniciais Maiúsculas"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "para MAIÚSCULAS"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Retorna uma cópia do texto em formato diferente."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obter primeira letra"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obter letra nº a partir do final"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obter letra nº"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obter última letra"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obter letra aleatória"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "no texto %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Retorna a letra na posição especificada."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "contar %1 em %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Conte quantas vezes um certo texto aparece dentro de algum outro texto."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Acrescentar um item ao texto."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "unir"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "até letra nº a partir do final"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "até letra nº"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "até última letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "no texto"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obter subsequência a partir da primeira letra"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obter subsequência de tamanho # a partir do final"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obter subsequência de tamanho #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Retorna a parte especificada do texto."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "primeira ocorrência do texto"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "última ocorrência do texto"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "no texto %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 está vazio"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Retorna verdadeiro se o texto fornecido estiver vazio."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "criar texto com"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Criar um pedaço de texto juntando qualquer número de itens."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "tamanho de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Devolve o número de letras (incluindo espaços) do texto fornecido."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprime %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Imprime o texto, número ou outro valor especificado."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pede ao utilizador um número."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pede ao utilizador um texto."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pede um número com a mensagem"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Pede um texto com a mensagem"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "substituir %1 por %2 em %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Substituir todas as ocorrências de um certo texto dentro de algum outro texto."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inverter %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inverte a ordem dos caracteres no texto."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "http://pt.wikipedia.org/wiki/Cadeia_de_caracteres"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Uma letra, palavra ou linha de texto."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "remover espaços de ambos os lados"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "remover espaços à esquerda de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "remover espaços à direita"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Retorna uma cópia do texto com os espaços removidos de uma ou ambas as extremidades."; +Blockly.Msg["TODAY"] = "Hoje"; +Blockly.Msg["UNDO"] = "Desfazer"; +Blockly.Msg["UNNAMED_KEY"] = "sem nome"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Criar \"definir %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Retorna o valor desta variável."; +Blockly.Msg["VARIABLES_SET"] = "definir %1 para %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Criar \"obter %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Define esta variável para o valor inserido."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Já existe uma variável com o nome de '%1'."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Já existe uma variável chamada '%1' para outra do tipo: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Espaço de trabalho de Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Diz algo..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; +Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; +Blockly.Msg["CALL_TEXT"] = "chamar"; \ No newline at end of file diff --git a/msg/js/ro.js b/msg/js/ro.js index 63dbe5beeaf..2a18b19291a 100644 --- a/msg/js/ro.js +++ b/msg/js/ro.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Adaugă un comentariu"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nu se poate șterge variabila '%1' deoarece face parte din definiția funcției '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Schimbați valoarea:"; -Blockly.Msg["CLEAN_UP"] = "Curăță blocări"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blocurile blocate conțin avertismente."; -Blockly.Msg["COLLAPSE_ALL"] = "Restrange blocurile"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Restrange blocul"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "culoare 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "culoare 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "Raport"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "amestec"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Amestecă două culori cu un raport dat (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ro.wikipedia.org/wiki/Culoare"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Alege o culoare din paleta de culori."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "culoare aleatorie"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Alege o culoare la întâmplare."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "albastru"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "roșu"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colorează cu"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Creează o culoare cu suma specificată de roșu, verde și albastru. Toate valorile trebuie să fie între 0 și 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ieși din buclă"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuă cu următoarea iterație a buclei"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ieși din buclă."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sari peste restul acestei bucle și continuă cu următoarea iterație."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Avertisment: Acest bloc pote fi utilizat numai în interiorul unei bucle."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pentru fiecare element %1 în listă %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pentru fiecare element din listă, setați variabila „%1” ca valoarea elementului, și apoi faceți unele declarații."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "numără cu %1 de la %2 la %3 prin %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Cu variablia \"%1\" ia o valoare din numărul început la numărul final, numara in intervalul specificat, apoi face blocurile specificate."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Adăugați o condiție în blocul if."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Adauga o stare finala, cuprinde toata conditia din blocul if."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc if."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "altfel"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "altfel dacă"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "dacă"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Dacă o valoare este adevărată, atunci fă unele declarații."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Dacă o valoare este adevărat, atunci face primul bloc de declarații. Altfel, face al doilea bloc de declarații."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații. În cazul în care niciuna din valori nu este adevărat, face ultimul bloc de declarații."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fă"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetă de %1 ori"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Face unele afirmații de mai multe ori."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "Repetați până când"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetă în timp ce"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Atâta timp cât o valoare este adevărat, atunci face unele declarații."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Atâta timp cât o valoare este adevărat, atunci face unele declarații."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ștergi toate cele %1 (de) blocuri?"; -Blockly.Msg["DELETE_BLOCK"] = "Șterge Bloc"; -Blockly.Msg["DELETE_VARIABLE"] = "Ștergeți variabila '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Șterge %1 utilizările variabilei '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Ștergeți %1 Blocuri"; -Blockly.Msg["DIALOG_CANCEL"] = "Revocare"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Dezactivați bloc"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Coment duplicat"; -Blockly.Msg["ENABLE_BLOCK"] = "Permite bloc"; -Blockly.Msg["EXPAND_ALL"] = "Extinde blocuri"; -Blockly.Msg["EXPAND_BLOCK"] = "Extinde bloc"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Intrări externe"; -Blockly.Msg["HELP"] = "Ajutor"; -Blockly.Msg["INLINE_INPUTS"] = "Intrări în linie"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "creează listă goală"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returnează o listă, de lungime 0, care nu conține înregistrări de date"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listă"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc de listă."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "creează listă cu"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Adăugați un element la listă."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Creați o listă cu orice număr de elemente."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primul"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# de la sfârșit"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "obține"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obține și elimină"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ultimul"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleator"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "elimină"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnează primul element dintr-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returnează elementul de la poziția specificată dintr-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnează ultimul element într-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returneaza un element aleatoriu într-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Elimină și returnează primul element dintr-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Elimină și returnează elementul de la poziția specificată dintr-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Elimină și returnează ultimul element dintr-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Elimină și returnează un element aleatoriu într-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Elimină primul element într-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Elimină elementul de la poziția specificată dintr-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Elimină ultimul element într-o listă."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Elimină un element aleatoriu într-o listă."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "la # de la sfarsit"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "la #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "la ultima"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obține sub-lista de la primul"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obține sub-lista de la # de la sfârșit"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obține sub-lista de la #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creează o copie a porțiunii specificate dintr-o listă."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 este ultimul element."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 este primul element."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Găsește prima apariție a elementului"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "găsește ultima apariție a elementului"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returnează indexul primei/ultimei apariții a articolului din listă. Returnează %1 dacă elementul nu este găsit."; -Blockly.Msg["LISTS_INLIST"] = "în listă"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 este gol"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnează adevărat dacă lista este goală."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "lungime de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnează lungimea unei liste."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "creaza lista cu %1 elemente repetate de %2 ori"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creează o listă alcătuită dintr-o anumită valoare repetată de numărul specificat de ori."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inversă %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inversați copia unei liste."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ca"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "introduceți la"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "seteaza"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserează elementul la începutul unei liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserează elementul la poziția specificată într-o listă."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Adaugă elementul la sfârșitul unei liste."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserează elementul aleatoriu într-o listă."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Setează primul element într-o listă."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setează elementul de la poziția specificată dintr-o listă."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setează ultimul element într-o listă."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setează un element aleator într-o listă."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "crescător"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descrescător"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sortați %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortați o copie a unei liste."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetic, ignorați cazul"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetic"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "convertește textul în listă"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "convertește lista în text"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Concatenează o listă de texte (alternate cu separatorul) într-un text unic"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Împarte textul într-o listă de texte, despărțite prin fiecare separator"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "cu separatorul"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fals"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnează adevărat sau fals."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "adevărat"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Returnează adevărat dacă ambele intrări sunt egale."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Returnează adevărat dacă prima intrare este mai mare decât a doua intrare."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Returnează adevărat dacă prima intrare este mai mare sau egală cu a doua intrare."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Returnează adevărat dacă prima intrare este mai mică decât a doua intrare."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Returnează adevărat dacă prima intrare este mai mică sau egală cu a doua intrare."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Returnează adevărat daca cele două intrări nu sunt egale."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returnează adevărat dacă intrarea este falsă. Returnează fals dacă intrarea este adevărată."; -Blockly.Msg["LOGIC_NULL"] = "nul"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "returnează nul."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "și"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "sau"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Returnează adevărat daca ambele intrări sunt adevărate."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Returnează adevărat dacă cel puțin una din intrări este adevărată."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "dacă este fals"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "dacă este adevărat"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Verifică condiția din „test”. Dacă condiția este adevărată, returnează valoarea „în cazul în care adevărat”; în caz contrar întoarce valoarea „în cazul în care e fals”."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ro.wikipedia.org/wiki/Aritmetic%C4%83"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnează suma a două numere."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returnează câtul celor două numere."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returnează diferența dintre cele două numere."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returnează produsul celor două numere."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Returneaza numărul rezultat prin ridicarea primului număr la puterea celui de-al doilea."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Întoarceți arctangentul punctului (X, Y) în grade de la -180 la 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "schimbă %1 de %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Adaugă un număr variabilei '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ro.wikipedia.org/wiki/Constant%C4%83_matematic%C4%83"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Întoarcă una din constantele comune: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) sau ∞ (infinitate)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrânge %1 redus %2 ridicat %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrânge un număr să fie între limitele specificate (inclusiv)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "este divizibil cu"; -Blockly.Msg["MATH_IS_EVEN"] = "este par"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "este negativ"; -Blockly.Msg["MATH_IS_ODD"] = "este impar"; -Blockly.Msg["MATH_IS_POSITIVE"] = "este pozitiv"; -Blockly.Msg["MATH_IS_PRIME"] = "este prim"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifică dacă un număr este un par, impar, prim, întreg, pozitiv, negativ, sau dacă este divizibil cu un anumit număr. Returnează true sau false."; -Blockly.Msg["MATH_IS_WHOLE"] = "este întreg"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "restul la %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Întoarce restul din împărțirea celor două numere."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un număr."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media listei"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximul listei"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "media listei"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimul listei"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moduri de listă"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element aleatoriu din lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviația standard a listei"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma listei"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Întoarce media (aritmetică) a valorilor numerice în listă."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Întoarce cel mai mare număr din listă."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Întoarce numărul median în listă."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Returnează cel mai mic număr din listă."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Returnează o listă cu cel(e) mai frecvent(e) element(e) din listă."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returnează un element aleatoriu din listă."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Întoarce deviația standard a listei."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Returnează suma tuturor numerelor din lista."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fracții aleatorii"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Returnează o fracție aleatoare între 0.0 (inclusiv) și 1.0 (exclusiv)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "un număr întreg aleator de la %1 la %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Returnează un număr întreg aleator aflat între cele două limite specificate, inclusiv."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "rotund"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rotunjit"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rotunjește în sus"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rotunjirea unui număr în sus sau în jos."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolută"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "rădăcina pătrată"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returnează valoarea absolută a unui număr."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Returnează e la puterea unui număr."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Întoarce logaritmul natural al unui număr."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returnează logaritmul în baza 10 a unui număr."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returnează negația unui număr."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Returnează 10 la puterea unui număr."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returnează rădăcina pătrată a unui număr."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "arctg"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ro.wikipedia.org/wiki/Funcții_trigonometrice"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tg"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Returnează arccosinusul unui număr."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Returnează arcsinusul unui număr."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Returnează arctangenta unui număr."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Întoarce cosinusul unui grad (nu radianul)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Întoarce cosinusul unui grad (nu radianul)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Întoarce tangenta unui grad (nu radianul)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crează o variabilă culoare"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crează o variabilă număr"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Crează o variabilă string"; -Blockly.Msg["NEW_VARIABLE"] = "Crează variabilă"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Noul nume de variabilă:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tip nou de variabilă"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permite declarațiile"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "cu:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executați funcția '%1 'definită de utilizator."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executați funcția „%1” definită de utilizator și folosiți producția sa."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "cu:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Creați „%1”"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descrieți această funcție ..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fă ceva"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "la"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crează o funcție cu nicio ieșire."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://ro.wikipedia.org/wiki/Subrutină"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returnează"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creează o funcție cu o ieșire."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Atenție: Această funcție are parametri duplicați."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Evidențiază definiția funcției"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Dacă o valoare este adevărată, atunci returnează valoarea a doua."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Avertisment: Acest bloc poate fi utilizat numai în definiția unei funcții."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nume de intrare:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adaugă un parametru de intrare pentru funcție."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "intrări"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adăugă, șterge sau reordonează parametrii de intrare ai acestei funcții."; -Blockly.Msg["REDO"] = "Refă"; -Blockly.Msg["REMOVE_COMMENT"] = "Elimină comentariu"; -Blockly.Msg["RENAME_VARIABLE"] = "Redenumirea variabilei..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Redenumește toate variabilele „%1” în:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "la %1 adăugați text %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Adăugați text la variabila „%1”."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "la litere mici"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "către Titlul de caz"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "la MAJUSCULE"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Întoarce o copie a textului într-un caz diferit."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "obține prima literă"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obține litera # de la sfârșit"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obtine litera #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "obține o literă oarecare"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obtine o litera oarecare"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "în text %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returnează litera la poziția specificată."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "numără %1 in %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Aflați de câte ori apare un text într-un alt text."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Adaugă un element în text."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "alăturați-vă"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Adaugă, elimină sau reordonează secțiuni ca să reconfigureze blocul text."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "la litera # de la sfarsit"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "la litera #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "la ultima literă"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "în text"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obține un subșir de la prima literă"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obține un subșir de la litera # de la sfârșit"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obține subșir de la litera #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returnează o anumită parte din text."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "găsește prima apariție a textului"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "găsește ultima apariție a textului"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "în text %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returnează indicele primei/ultimei apariții din primul text în al doilea text. Returnează %1 dacă textul nu este găsit."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 este gol"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnează adevărat dacă textul furnizat este gol."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crează text cu"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Creați o bucată de text prin unirea oricărui număr de elemente."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "lungime de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returnează numărul de litere (inclusiv spațiile) în textul furnizat."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "imprimare %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Afișează textul specificat, numărul sau altă valoare."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Solicită utilizatorul pentru un număr."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Solicită utilizatorul pentru text."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "solicită pentru număr cu mesaj"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "solicită pentru text cu mesaj"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "înlocuiți %1 cu %2 în %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Înlocuiți toate aparițiile anumitor texte într-un alt text."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inversă %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inversează ordinea caracterelor din text."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "O literă, cuvânt sau linie de text."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "taie spațiile de pe ambele părți ale"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "tăiați spațiile din partea stângă a"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "taie spațiile din partea dreaptă a"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returnează o copie a textului fără spațiile de la unul sau ambele capete."; -Blockly.Msg["TODAY"] = "Astăzi"; -Blockly.Msg["UNDO"] = "Anulează"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crează 'set %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnează valoarea acestei variabile."; -Blockly.Msg["VARIABLES_SET"] = "seteaza %1 la %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crează 'get %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setează această variabilă sa fie egală la intrare."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "O variabilă cu numele '%1' există deja."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "o variabilă numită '%1' există deja pentru alt tip: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Spune ceva..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Adaugă un comentariu"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nu se poate șterge variabila '%1' deoarece face parte din definiția funcției '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Schimbați valoarea:"; +Blockly.Msg["CLEAN_UP"] = "Curăță blocări"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blocurile blocate conțin avertismente."; +Blockly.Msg["COLLAPSE_ALL"] = "Restrange blocurile"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Restrange blocul"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "culoare 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "culoare 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "Raport"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "amestec"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Amestecă două culori cu un raport dat (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ro.wikipedia.org/wiki/Culoare"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Alege o culoare din paleta de culori."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "culoare aleatorie"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Alege o culoare la întâmplare."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "albastru"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "verde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "roșu"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colorează cu"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Creează o culoare cu suma specificată de roșu, verde și albastru. Toate valorile trebuie să fie între 0 și 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ieși din buclă"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continuă cu următoarea iterație a buclei"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ieși din buclă."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sari peste restul acestei bucle și continuă cu următoarea iterație."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Avertisment: Acest bloc pote fi utilizat numai în interiorul unei bucle."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pentru fiecare element %1 în listă %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pentru fiecare element din listă, setați variabila „%1” ca valoarea elementului, și apoi faceți unele declarații."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "numără cu %1 de la %2 la %3 prin %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Cu variablia \"%1\" ia o valoare din numărul început la numărul final, numara in intervalul specificat, apoi face blocurile specificate."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Adăugați o condiție în blocul if."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Adauga o stare finala, cuprinde toata conditia din blocul if."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc if."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "altfel"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "altfel dacă"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "dacă"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Dacă o valoare este adevărată, atunci fă unele declarații."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Dacă o valoare este adevărat, atunci face primul bloc de declarații. Altfel, face al doilea bloc de declarații."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații. În cazul în care niciuna din valori nu este adevărat, face ultimul bloc de declarații."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fă"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repetă de %1 ori"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Face unele afirmații de mai multe ori."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "Repetați până când"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repetă în timp ce"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Atâta timp cât o valoare este adevărat, atunci face unele declarații."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Atâta timp cât o valoare este adevărat, atunci face unele declarații."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ștergi toate cele %1 (de) blocuri?"; +Blockly.Msg["DELETE_BLOCK"] = "Șterge Bloc"; +Blockly.Msg["DELETE_VARIABLE"] = "Ștergeți variabila '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Șterge %1 utilizările variabilei '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Ștergeți %1 Blocuri"; +Blockly.Msg["DIALOG_CANCEL"] = "Revocare"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Dezactivați bloc"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Coment duplicat"; +Blockly.Msg["ENABLE_BLOCK"] = "Permite bloc"; +Blockly.Msg["EXPAND_ALL"] = "Extinde blocuri"; +Blockly.Msg["EXPAND_BLOCK"] = "Extinde bloc"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Intrări externe"; +Blockly.Msg["HELP"] = "Ajutor"; +Blockly.Msg["INLINE_INPUTS"] = "Intrări în linie"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "creează listă goală"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returnează o listă, de lungime 0, care nu conține înregistrări de date"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listă"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc de listă."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "creează listă cu"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Adăugați un element la listă."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Creați o listă cu orice număr de elemente."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primul"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# de la sfârșit"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "obține"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "obține și elimină"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ultimul"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "aleator"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "elimină"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnează primul element dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returnează elementul de la poziția specificată dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnează ultimul element într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returneaza un element aleatoriu într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Elimină și returnează primul element dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Elimină și returnează elementul de la poziția specificată dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Elimină și returnează ultimul element dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Elimină și returnează un element aleatoriu într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Elimină primul element într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Elimină elementul de la poziția specificată dintr-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Elimină ultimul element într-o listă."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Elimină un element aleatoriu într-o listă."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "la # de la sfarsit"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "la #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "la ultima"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "obține sub-lista de la primul"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "obține sub-lista de la # de la sfârșit"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "obține sub-lista de la #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creează o copie a porțiunii specificate dintr-o listă."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 este ultimul element."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 este primul element."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Găsește prima apariție a elementului"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "găsește ultima apariție a elementului"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returnează indexul primei/ultimei apariții a articolului din listă. Returnează %1 dacă elementul nu este găsit."; +Blockly.Msg["LISTS_INLIST"] = "în listă"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 este gol"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnează adevărat dacă lista este goală."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "lungime de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnează lungimea unei liste."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "creaza lista cu %1 elemente repetate de %2 ori"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creează o listă alcătuită dintr-o anumită valoare repetată de numărul specificat de ori."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "inversă %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Inversați copia unei liste."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ca"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "introduceți la"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "seteaza"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserează elementul la începutul unei liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserează elementul la poziția specificată într-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Adaugă elementul la sfârșitul unei liste."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserează elementul aleatoriu într-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Setează primul element într-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Setează elementul de la poziția specificată dintr-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Setează ultimul element într-o listă."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Setează un element aleator într-o listă."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "crescător"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descrescător"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sortați %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortați o copie a unei liste."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetic, ignorați cazul"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetic"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "convertește textul în listă"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "convertește lista în text"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Concatenează o listă de texte (alternate cu separatorul) într-un text unic"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Împarte textul într-o listă de texte, despărțite prin fiecare separator"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "cu separatorul"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "fals"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnează adevărat sau fals."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "adevărat"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Returnează adevărat dacă ambele intrări sunt egale."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Returnează adevărat dacă prima intrare este mai mare decât a doua intrare."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Returnează adevărat dacă prima intrare este mai mare sau egală cu a doua intrare."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Returnează adevărat dacă prima intrare este mai mică decât a doua intrare."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Returnează adevărat dacă prima intrare este mai mică sau egală cu a doua intrare."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Returnează adevărat daca cele două intrări nu sunt egale."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returnează adevărat dacă intrarea este falsă. Returnează fals dacă intrarea este adevărată."; +Blockly.Msg["LOGIC_NULL"] = "nul"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "returnează nul."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "și"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "sau"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Returnează adevărat daca ambele intrări sunt adevărate."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Returnează adevărat dacă cel puțin una din intrări este adevărată."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "dacă este fals"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "dacă este adevărat"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Verifică condiția din „test”. Dacă condiția este adevărată, returnează valoarea „în cazul în care adevărat”; în caz contrar întoarce valoarea „în cazul în care e fals”."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ro.wikipedia.org/wiki/Aritmetic%C4%83"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnează suma a două numere."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returnează câtul celor două numere."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returnează diferența dintre cele două numere."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returnează produsul celor două numere."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Returneaza numărul rezultat prin ridicarea primului număr la puterea celui de-al doilea."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Întoarceți arctangentul punctului (X, Y) în grade de la -180 la 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "schimbă %1 de %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Adaugă un număr variabilei '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ro.wikipedia.org/wiki/Constant%C4%83_matematic%C4%83"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Întoarcă una din constantele comune: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) sau ∞ (infinitate)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrânge %1 redus %2 ridicat %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrânge un număr să fie între limitele specificate (inclusiv)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "este divizibil cu"; +Blockly.Msg["MATH_IS_EVEN"] = "este par"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "este negativ"; +Blockly.Msg["MATH_IS_ODD"] = "este impar"; +Blockly.Msg["MATH_IS_POSITIVE"] = "este pozitiv"; +Blockly.Msg["MATH_IS_PRIME"] = "este prim"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Verifică dacă un număr este un par, impar, prim, întreg, pozitiv, negativ, sau dacă este divizibil cu un anumit număr. Returnează true sau false."; +Blockly.Msg["MATH_IS_WHOLE"] = "este întreg"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "restul la %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Întoarce restul din împărțirea celor două numere."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Un număr."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "media listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maximul listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "media listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimul listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "moduri de listă"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "element aleatoriu din lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviația standard a listei"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma listei"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Întoarce media (aritmetică) a valorilor numerice în listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Întoarce cel mai mare număr din listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Întoarce numărul median în listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Returnează cel mai mic număr din listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Returnează o listă cu cel(e) mai frecvent(e) element(e) din listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returnează un element aleatoriu din listă."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Întoarce deviația standard a listei."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Returnează suma tuturor numerelor din lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fracții aleatorii"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Returnează o fracție aleatoare între 0.0 (inclusiv) și 1.0 (exclusiv)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "un număr întreg aleator de la %1 la %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Returnează un număr întreg aleator aflat între cele două limite specificate, inclusiv."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "rotund"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rotunjit"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rotunjește în sus"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rotunjirea unui număr în sus sau în jos."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolută"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "rădăcina pătrată"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returnează valoarea absolută a unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Returnează e la puterea unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Întoarce logaritmul natural al unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returnează logaritmul în baza 10 a unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returnează negația unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Returnează 10 la puterea unui număr."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returnează rădăcina pătrată a unui număr."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctg"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ro.wikipedia.org/wiki/Funcții_trigonometrice"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tg"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Returnează arccosinusul unui număr."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Returnează arcsinusul unui număr."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Returnează arctangenta unui număr."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Întoarce cosinusul unui grad (nu radianul)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Întoarce cosinusul unui grad (nu radianul)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Întoarce tangenta unui grad (nu radianul)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Crează o variabilă culoare"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Crează o variabilă număr"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Crează o variabilă string"; +Blockly.Msg["NEW_VARIABLE"] = "Crează variabilă"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Noul nume de variabilă:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tip nou de variabilă"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permite declarațiile"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "cu:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Executați funcția '%1 'definită de utilizator."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Executați funcția „%1” definită de utilizator și folosiți producția sa."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "cu:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Creați „%1”"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Descrieți această funcție ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fă ceva"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "la"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Crează o funcție cu nicio ieșire."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://ro.wikipedia.org/wiki/Subrutină"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returnează"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creează o funcție cu o ieșire."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Atenție: Această funcție are parametri duplicați."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Evidențiază definiția funcției"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Dacă o valoare este adevărată, atunci returnează valoarea a doua."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Avertisment: Acest bloc poate fi utilizat numai în definiția unei funcții."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nume de intrare:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Adaugă un parametru de intrare pentru funcție."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "intrări"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Adăugă, șterge sau reordonează parametrii de intrare ai acestei funcții."; +Blockly.Msg["REDO"] = "Refă"; +Blockly.Msg["REMOVE_COMMENT"] = "Elimină comentariu"; +Blockly.Msg["RENAME_VARIABLE"] = "Redenumirea variabilei..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Redenumește toate variabilele „%1” în:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "la %1 adăugați text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Adăugați text la variabila „%1”."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "la litere mici"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "către Titlul de caz"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "la MAJUSCULE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Întoarce o copie a textului într-un caz diferit."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "obține prima literă"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "obține litera # de la sfârșit"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "obtine litera #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "obține o literă oarecare"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "obtine o litera oarecare"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "în text %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returnează litera la poziția specificată."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "numără %1 in %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Aflați de câte ori apare un text într-un alt text."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Adaugă un element în text."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "alăturați-vă"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Adaugă, elimină sau reordonează secțiuni ca să reconfigureze blocul text."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "la litera # de la sfarsit"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "la litera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "la ultima literă"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "în text"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "obține un subșir de la prima literă"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "obține un subșir de la litera # de la sfârșit"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "obține subșir de la litera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returnează o anumită parte din text."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "găsește prima apariție a textului"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "găsește ultima apariție a textului"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "în text %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returnează indicele primei/ultimei apariții din primul text în al doilea text. Returnează %1 dacă textul nu este găsit."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 este gol"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnează adevărat dacă textul furnizat este gol."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "crează text cu"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Creați o bucată de text prin unirea oricărui număr de elemente."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "lungime de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returnează numărul de litere (inclusiv spațiile) în textul furnizat."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "imprimare %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Afișează textul specificat, numărul sau altă valoare."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Solicită utilizatorul pentru un număr."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Solicită utilizatorul pentru text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "solicită pentru număr cu mesaj"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "solicită pentru text cu mesaj"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "înlocuiți %1 cu %2 în %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Înlocuiți toate aparițiile anumitor texte într-un alt text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "inversă %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Inversează ordinea caracterelor din text."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "O literă, cuvânt sau linie de text."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "taie spațiile de pe ambele părți ale"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "tăiați spațiile din partea stângă a"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "taie spațiile din partea dreaptă a"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returnează o copie a textului fără spațiile de la unul sau ambele capete."; +Blockly.Msg["TODAY"] = "Astăzi"; +Blockly.Msg["UNDO"] = "Anulează"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Crează 'set %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnează valoarea acestei variabile."; +Blockly.Msg["VARIABLES_SET"] = "seteaza %1 la %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Crează 'get %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Setează această variabilă sa fie egală la intrare."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "O variabilă cu numele '%1' există deja."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "o variabilă numită '%1' există deja pentru alt tip: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Spune ceva..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ru.js b/msg/js/ru.js index 48f7159961c..bfa00c5c50d 100644 --- a/msg/js/ru.js +++ b/msg/js/ru.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Добавить комментарий"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Невозможно удалить переменную '%1', поскольку она является частью определения функции '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Измените значение:"; -Blockly.Msg["CLEAN_UP"] = "Очистить блоки"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Свёрнутые блоки содержат предупреждения."; -Blockly.Msg["COLLAPSE_ALL"] = "Свернуть блоки"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Свернуть блок"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "цвет 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "цвет 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "доля цвета 1"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "смешать"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Смешивает два цвета в заданном соотношении (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ru.wikipedia.org/wiki/Цвет"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Выберите цвет из палитры."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случайный цвет"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Выбирает цвет случайным образом."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "синего"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "зелёного"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "красного"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "цвет из"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Создаёт цвет с указанной пропорцией красного, зелёного и синего. Все значения должны быть между 0 и 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "выйти из цикла"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "перейти к следующему шагу цикла"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Прерывает этот цикл."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Пропускает остаток цикла и переходит к следующему шагу."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Предупреждение: этот блок может использоваться только внутри цикла."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для каждого элемента %1 в списке %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для каждого элемента в списке, присваивает переменной '%1' значение элемента и выполняет указанные команды."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "цикл по %1 от %2 до %3 с шагом %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Присваивает переменной '%1' значения от начального до конечного с заданным шагом и выполняет указанные команды."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Добавляет условие к блоку \"если\""; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Добавить заключительный подблок для случая, когда все условия ложны."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Добавьте, удалите, переставьте фрагменты для переделки блока \"если\"."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "иначе"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "иначе если"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "если"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Если условие истинно, выполняет команды."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Если условие истинно, выполняет первый блок команд. Иначе выполняется второй блок команд."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Если первое условие истинно, то выполняет первый блок команд. Иначе, если второе условие истинно, выполняет второй блок команд."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Если первое условие истинно, то выполняет первый блок команд. В противном случае, если второе условие истинно, выполняет второй блок команд. Если ни одно из условий не истинно, выполняет последний блок команд."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Цикл_(программирование)"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "выполнить"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "повторить %1 раз"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Выполняет некоторые команды несколько раз."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повторять, пока не"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повторять, пока"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Пока значение ложно, выполняет команды"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Пока значение истинно, выполняет команды."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Удалить все блоки (%1)?"; -Blockly.Msg["DELETE_BLOCK"] = "Удалить блок"; -Blockly.Msg["DELETE_VARIABLE"] = "Удалить переменную '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Удалить %1 использований переменной '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Удалить %1 блоков"; -Blockly.Msg["DIALOG_CANCEL"] = "Отмена"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Отключить блок"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Дублировать"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Дублировать комментарий"; -Blockly.Msg["ENABLE_BLOCK"] = "Включить блок"; -Blockly.Msg["EXPAND_ALL"] = "Развернуть блоки"; -Blockly.Msg["EXPAND_BLOCK"] = "Развернуть блок"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Вставки снаружи"; -Blockly.Msg["HELP"] = "Справка"; -Blockly.Msg["INLINE_INPUTS"] = "Вставки внутри"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "создать пустой список"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Возвращает список длины 0, не содержащий данных"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "список"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Добавьте, удалите, переставьте элементы для переделки блока списка."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "создать список из"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Добавляет элемент к списку."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Создаёт список с любым числом элементов."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "первый"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ с конца"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "взять"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "взять и удалить"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последний"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "произвольный"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "удалить"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Возвращает первый элемент списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Возвращает элемент в указанной позиции списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Возвращает последний элемент списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Возвращает случайный элемент списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Удаляет и возвращает первый элемент списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Удаляет и возвращает элемент в указанной позиции списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Удаляет и возвращает последний элемент списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Удаляет и возвращает случайный элемент списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Удаляет первый элемент списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Удаляет элемент в указанной позиции списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Удаляет последний элемент списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Удаляет случайный элемент списка."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "по № с конца"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "по №"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "по последний"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "взять подсписок с первого"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "взять подсписок с № с конца"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "взять подсписок с №"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Создаёт копию указанной части списка."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - последний элемент."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - первый элемент."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "найти первое вхождение элемента"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "найти последнее вхождение элемента"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Возвращает номер позиции первого/последнего вхождения элемента в списке. Возвращает %1, если элемент не найден."; -Blockly.Msg["LISTS_INLIST"] = "в списке"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 пуст"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Возвращает значение истина, если список пуст."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "длина %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Возвращает длину списка."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "создать список из элемента %1, повторяющегося %2 раз"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Создаёт список, состоящий из заданного числа копий элемента."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "изменить порядок на обратный %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Изменить порядок списка на обратный."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "="; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вставить в"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "присвоить"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Вставляет элемент в начало списка."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Вставляет элемент в указанной позиции списка."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Добавляет элемент в конец списка."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Вставляет элемент в случайное место в списке."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Присваивает значение первому элементу списка."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Присваивает значение элементу в указанной позиции списка."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Присваивает значение последнему элементу списка."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Присваивает значение случайному элементу списка."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "по возрастанию"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "по убыванию"; -Blockly.Msg["LISTS_SORT_TITLE"] = "сортировать %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сортировать копию списка."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "по алфавиту, без учёта регистра"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "числовая"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "по алфавиту"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "сделать список из текста"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "собрать текст из списка"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Соединяет список текстов в один текст с разделителями."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Разбивает текст в список текстов, по разделителям."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "с разделителем"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ложь"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Возвращает значение истина или ложь."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "истина"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ru.wikipedia.org/wiki/Неравенство"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Возвращает положительное значение, если вводы равны."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Возвращает значение истина, если первая вставка больше второй."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Возвращает значение истина, если первая вставка больше или равна второй."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Возвращает положительное значение, если первый ввод меньше второго."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Возвращает значение истина, если первая вставка меньше или равна второй."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Возвращает положительное значение, если вводы не равны."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Возвращает значение истина, если вставка ложна. Возвращает значение ложь, если вставка истинна."; -Blockly.Msg["LOGIC_NULL"] = "ничто"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Возвращает ничто."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Возвращает значение истина, если обе вставки истинны."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Возвращает значение истина, если хотя бы одна из вставок истинна."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "выбрать по"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://ru.wikipedia.org/wiki/Тернарная_условная_операция"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "если ложь"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "если истина"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Проверяет условие выбора. Если условие истинно, возвращает первое значение, в противном случае возвращает второе значение."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ru.wikipedia.org/wiki/Арифметика"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Возвращает сумму двух чисел."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Возвращает частное от деления первого числа на второе."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Возвращает разность двух чисел."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Возвращает произведение двух чисел."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Возвращает первое число, возведённое в степень второго числа."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 от X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Возвращает арктангенс точки (X, Y) в градусах от -180 до 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "увеличить %1 на %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Добавляет число к переменной '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ru.wikipedia.org/wiki/Математическая_константа"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Возвращает одну из распространённых констант: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (бесконечность)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ограничить %1 снизу %2 сверху %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ограничивает число нижней и верхней границами (включительно)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "делится на"; -Blockly.Msg["MATH_IS_EVEN"] = "чётное"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "отрицательное"; -Blockly.Msg["MATH_IS_ODD"] = "нечётное"; -Blockly.Msg["MATH_IS_POSITIVE"] = "положительное"; -Blockly.Msg["MATH_IS_PRIME"] = "простое"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверяет, является ли число чётным, нечётным, простым, целым, положительным, отрицательным или оно кратно определённому числу. Возвращает значение истина или ложь."; -Blockly.Msg["MATH_IS_WHOLE"] = "целое"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ru.wikipedia.org/wiki/Деление_с_остатком"; -Blockly.Msg["MATH_MODULO_TITLE"] = "остаток от %1 : %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Возвращает остаток от деления двух чисел."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ru.wikipedia.org/wiki/Число"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Число."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "среднее арифметическое списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "наибольшее в списке"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медиана списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "наименьшее в списке"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "моды списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случайный элемент списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартное отклонение списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сумма списка"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Возвращает среднее арифметическое списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Возвращает наибольшее число списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Возвращает медиану списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Возвращает наименьшее число списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Возвращает список наиболее часто встречающихся элементов списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Возвращает случайный элемент списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Возвращает стандартное отклонение списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Возвращает сумму всех чисел в списке."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "случайное число от 0 (включительно) до 1"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Возвращает случайное число от 0.0 (включительно) до 1.0."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "случайное целое число от %1 для %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Возвращает случайное число между двумя заданными пределами (включая и их)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ru.wikipedia.org/wiki/Округление"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "округлить"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "округлить к меньшему"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "округлить к большему"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Округляет число до большего или меньшего."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ru.wikipedia.org/wiki/Квадратный_корень"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратный корень"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Возвращает модуль числа"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Возвращает е в указанной степени."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Возвращает натуральный логарифм числа."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Возвращает десятичный логарифм числа."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Возвращает противоположное число."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Возвращает 10 в указанной степени."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Возвращает квадратный корень числа."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ru.wikipedia.org/wiki/Тригонометрические_функции"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Возвращает арккосинус (в градусах)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Возвращает арксинус (в градусах)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Возвращает арктангенс (в градусах)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Возвращает косинус угла в градусах."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Возвращает синус угла в градусах."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Возвращает тангенс угла в градусах."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Создать переменную цвета..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Создать числовую переменную..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Создать строковую переменную..."; -Blockly.Msg["NEW_VARIABLE"] = "Создать переменную…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Имя новой переменной:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Новый тип переменной:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "разрешить операторы"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "с:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Подпрограмма"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Исполняет определённую пользователем процедуру '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Подпрограмма"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Исполняет определённую пользователем процедуру '%1' и возвращает вычисленное значение."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "с:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Создать вызов '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишите эту функцию…"; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "выполнить что-то"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "чтобы"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Создаёт процедуру, не возвращающую значение."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "вернуть"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Создаёт процедуру, возвращающую значение."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Предупреждение: эта функция имеет повторяющиеся параметры."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Выделить определение процедуры"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Если первое значение истинно, возвращает второе значение."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Предупреждение: Этот блок может использоваться только внутри определения функции."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "имя параметра:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Добавить входной параметр в функцию."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "параметры"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Добавить, удалить или изменить порядок входных параметров для этой функции."; -Blockly.Msg["REDO"] = "Повторить"; -Blockly.Msg["REMOVE_COMMENT"] = "Удалить комментарий"; -Blockly.Msg["RENAME_VARIABLE"] = "Переименовать переменную…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Переименовать все переменные '%1' в:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "к %1 добавить текст %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Добавить текст к переменной «%1»."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "в строчные буквы"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "в Заглавные Начальные Буквы"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "в ЗАГЛАВНЫЕ БУКВЫ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Возвращает копию текста с ЗАГЛАВНЫМИ или строчными буквами."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "взять первую букву"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "взять букву № с конца"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "взять букву №"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "взять последнюю букву"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "взять случайную букву"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "в тексте %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Возвращает букву в указанной позиции."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "подсчитать количество %1 в %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Подсчитать, сколько раз отрывок текста появляется в другом тексте."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Добавить элемент к тексту."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "соединить"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Добавьте, удалите, переставьте фрагменты для переделки текстового блока."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "по букву № с конца"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "по букву №"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "по последнюю букву"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "в тексте"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "взять подстроку с первой буквы"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "взять подстроку с буквы № с конца"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "взять подстроку с буквы №"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Возвращает указанную часть текста."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "найти первое вхождение текста"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "найти последнее вхождение текста"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "в тексте %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Возвращает номер позиции первого/последнего вхождения первого текста во втором. Возвращает %1, если текст не найден."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 пуст"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Возвращает значение истина, если предоставленный текст пуст."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "создать текст из"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Создаёт фрагмент текста, объединяя любое число элементов"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "длина %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Возвращает число символов (включая пробелы) в заданном тексте."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "напечатать %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Печатает текст, число или другой объект."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запросить у пользователя число."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запросить у пользователя текст."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запросить число с подсказкой"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запросить текст с подсказкой"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "заменить %1 на %2 в %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Заменить все вхождения некоторого текста другим текстом."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "изменить порядок на обратный %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Меняет порядок символов в тексте на обратный."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ru.wikipedia.org/wiki/Строковый_тип"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Буква, слово или строка текста."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "обрезать пробелы с двух сторон"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "обрезать пробелы слева"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "обрезать пробелы справа"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Возвращает копию текста с пробелами, удалёнными с одного или обоих концов."; -Blockly.Msg["TODAY"] = "Сегодня"; -Blockly.Msg["UNDO"] = "Отменить"; -Blockly.Msg["UNNAMED_KEY"] = "без названия"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Создать блок \"присвоить\" для %1"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Возвращает значение этой переменной."; -Blockly.Msg["VARIABLES_SET"] = "присвоить %1 = %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Создать вставку %1"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Присваивает переменной значение вставки."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Переменная с именем '%1' уже существует."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Название переменной '%1' уже используется другой типа: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Рабочая область Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Напишите здесь что-нибудь..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Добавить комментарий"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Невозможно удалить переменную '%1', поскольку она является частью определения функции '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Измените значение:"; +Blockly.Msg["CLEAN_UP"] = "Очистить блоки"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Свёрнутые блоки содержат предупреждения."; +Blockly.Msg["COLLAPSE_ALL"] = "Свернуть блоки"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Свернуть блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "цвет 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "цвет 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "доля цвета 1"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "смешать"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Смешивает два цвета в заданном соотношении (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://ru.wikipedia.org/wiki/Цвет"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Выберите цвет из палитры."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случайный цвет"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Выбирает цвет случайным образом."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "синего"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелёного"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "красного"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "цвет из"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Создаёт цвет с указанной пропорцией красного, зелёного и синего. Все значения должны быть между 0 и 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "выйти из цикла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "перейти к следующему шагу цикла"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Прерывает этот цикл."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Пропускает остаток цикла и переходит к следующему шагу."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Предупреждение: этот блок может использоваться только внутри цикла."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для каждого элемента %1 в списке %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для каждого элемента в списке, присваивает переменной '%1' значение элемента и выполняет указанные команды."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "цикл по %1 от %2 до %3 с шагом %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Присваивает переменной '%1' значения от начального до конечного с заданным шагом и выполняет указанные команды."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Добавляет условие к блоку \"если\""; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Добавить заключительный подблок для случая, когда все условия ложны."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Добавьте, удалите, переставьте фрагменты для переделки блока \"если\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "иначе"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "иначе если"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "если"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Если условие истинно, выполняет команды."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Если условие истинно, выполняет первый блок команд. Иначе выполняется второй блок команд."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Если первое условие истинно, то выполняет первый блок команд. Иначе, если второе условие истинно, выполняет второй блок команд."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Если первое условие истинно, то выполняет первый блок команд. В противном случае, если второе условие истинно, выполняет второй блок команд. Если ни одно из условий не истинно, выполняет последний блок команд."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Цикл_(программирование)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "выполнить"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "повторить %1 раз"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Выполняет некоторые команды несколько раз."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повторять, пока не"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повторять, пока"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Пока значение ложно, выполняет команды"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Пока значение истинно, выполняет команды."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Удалить все блоки (%1)?"; +Blockly.Msg["DELETE_BLOCK"] = "Удалить блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Удалить переменную '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Удалить %1 использований переменной '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Удалить %1 блоков"; +Blockly.Msg["DIALOG_CANCEL"] = "Отмена"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Отключить блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дублировать"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дублировать комментарий"; +Blockly.Msg["ENABLE_BLOCK"] = "Включить блок"; +Blockly.Msg["EXPAND_ALL"] = "Развернуть блоки"; +Blockly.Msg["EXPAND_BLOCK"] = "Развернуть блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Вставки снаружи"; +Blockly.Msg["HELP"] = "Справка"; +Blockly.Msg["INLINE_INPUTS"] = "Вставки внутри"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "создать пустой список"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Возвращает список длины 0, не содержащий данных"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "список"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Добавьте, удалите, переставьте элементы для переделки блока списка."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "создать список из"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Добавляет элемент к списку."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Создаёт список с любым числом элементов."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "первый"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "№ с конца"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "взять"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "взять и удалить"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последний"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "произвольный"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "удалить"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Возвращает первый элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Возвращает элемент в указанной позиции списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Возвращает последний элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Возвращает случайный элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Удаляет и возвращает первый элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Удаляет и возвращает элемент в указанной позиции списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Удаляет и возвращает последний элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Удаляет и возвращает случайный элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Удаляет первый элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Удаляет элемент в указанной позиции списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Удаляет последний элемент списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Удаляет случайный элемент списка."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "по № с конца"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "по №"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "по последний"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "взять подсписок с первого"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "взять подсписок с № с конца"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "взять подсписок с №"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Создаёт копию указанной части списка."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - последний элемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - первый элемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "найти первое вхождение элемента"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "найти последнее вхождение элемента"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Возвращает номер позиции первого/последнего вхождения элемента в списке. Возвращает %1, если элемент не найден."; +Blockly.Msg["LISTS_INLIST"] = "в списке"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 пуст"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Возвращает значение истина, если список пуст."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "длина %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Возвращает длину списка."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "создать список из элемента %1, повторяющегося %2 раз"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Создаёт список, состоящий из заданного числа копий элемента."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "изменить порядок на обратный %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Изменить порядок списка на обратный."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "="; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вставить в"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "присвоить"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Вставляет элемент в начало списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Вставляет элемент в указанной позиции списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Добавляет элемент в конец списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Вставляет элемент в случайное место в списке."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Присваивает значение первому элементу списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Присваивает значение элементу в указанной позиции списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Присваивает значение последнему элементу списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Присваивает значение случайному элементу списка."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "по возрастанию"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "по убыванию"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сортировать %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сортировать копию списка."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "по алфавиту, без учёта регистра"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "числовая"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "по алфавиту"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "сделать список из текста"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "собрать текст из списка"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Соединяет список текстов в один текст с разделителями."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Разбивает текст в список текстов, по разделителям."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "с разделителем"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ложь"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Возвращает значение истина или ложь."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "истина"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://ru.wikipedia.org/wiki/Неравенство"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Возвращает положительное значение, если вводы равны."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Возвращает значение истина, если первая вставка больше второй."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Возвращает значение истина, если первая вставка больше или равна второй."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Возвращает положительное значение, если первый ввод меньше второго."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Возвращает значение истина, если первая вставка меньше или равна второй."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Возвращает положительное значение, если вводы не равны."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Возвращает значение истина, если вставка ложна. Возвращает значение ложь, если вставка истинна."; +Blockly.Msg["LOGIC_NULL"] = "ничто"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Возвращает ничто."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Возвращает значение истина, если обе вставки истинны."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Возвращает значение истина, если хотя бы одна из вставок истинна."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "выбрать по"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://ru.wikipedia.org/wiki/Тернарная_условная_операция"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "если ложь"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "если истина"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Проверяет условие выбора. Если условие истинно, возвращает первое значение, в противном случае возвращает второе значение."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ru.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Возвращает сумму двух чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Возвращает частное от деления первого числа на второе."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Возвращает разность двух чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Возвращает произведение двух чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Возвращает первое число, возведённое в степень второго числа."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 от X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Возвращает арктангенс точки (X, Y) в градусах от -180 до 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "увеличить %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Добавляет число к переменной '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ru.wikipedia.org/wiki/Математическая_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Возвращает одну из распространённых констант: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (бесконечность)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ограничить %1 снизу %2 сверху %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ограничивает число нижней и верхней границами (включительно)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "делится на"; +Blockly.Msg["MATH_IS_EVEN"] = "чётное"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "отрицательное"; +Blockly.Msg["MATH_IS_ODD"] = "нечётное"; +Blockly.Msg["MATH_IS_POSITIVE"] = "положительное"; +Blockly.Msg["MATH_IS_PRIME"] = "простое"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверяет, является ли число чётным, нечётным, простым, целым, положительным, отрицательным или оно кратно определённому числу. Возвращает значение истина или ложь."; +Blockly.Msg["MATH_IS_WHOLE"] = "целое"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://ru.wikipedia.org/wiki/Деление_с_остатком"; +Blockly.Msg["MATH_MODULO_TITLE"] = "остаток от %1 : %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Возвращает остаток от деления двух чисел."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ru.wikipedia.org/wiki/Число"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Число."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "среднее арифметическое списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "наибольшее в списке"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медиана списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "наименьшее в списке"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "моды списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случайный элемент списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартное отклонение списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сумма списка"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Возвращает среднее арифметическое списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Возвращает наибольшее число списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Возвращает медиану списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Возвращает наименьшее число списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Возвращает список наиболее часто встречающихся элементов списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Возвращает случайный элемент списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Возвращает стандартное отклонение списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Возвращает сумму всех чисел в списке."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "случайное число от 0 (включительно) до 1"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Возвращает случайное число от 0.0 (включительно) до 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "случайное целое число от %1 для %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Возвращает случайное число между двумя заданными пределами (включая и их)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://ru.wikipedia.org/wiki/Округление"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "округлить"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "округлить к меньшему"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "округлить к большему"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Округляет число до большего или меньшего."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ru.wikipedia.org/wiki/Квадратный_корень"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратный корень"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Возвращает модуль числа"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Возвращает е в указанной степени."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Возвращает натуральный логарифм числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Возвращает десятичный логарифм числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Возвращает противоположное число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Возвращает 10 в указанной степени."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Возвращает квадратный корень числа."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ru.wikipedia.org/wiki/Тригонометрические_функции"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Возвращает арккосинус (в градусах)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Возвращает арксинус (в градусах)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Возвращает арктангенс (в градусах)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Возвращает косинус угла в градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Возвращает синус угла в градусах."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Возвращает тангенс угла в градусах."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Создать переменную цвета..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Создать числовую переменную..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Создать строковую переменную..."; +Blockly.Msg["NEW_VARIABLE"] = "Создать переменную…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Имя новой переменной:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Новый тип переменной:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "разрешить операторы"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "с:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Подпрограмма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Исполняет определённую пользователем процедуру '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://ru.wikipedia.org/wiki/Подпрограмма"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Исполняет определённую пользователем процедуру '%1' и возвращает вычисленное значение."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "с:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Создать вызов '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишите эту функцию…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "выполнить что-то"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "чтобы"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Создаёт процедуру, не возвращающую значение."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "вернуть"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Создаёт процедуру, возвращающую значение."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Предупреждение: эта функция имеет повторяющиеся параметры."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Выделить определение процедуры"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Если первое значение истинно, возвращает второе значение."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Предупреждение: Этот блок может использоваться только внутри определения функции."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "имя параметра:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Добавить входной параметр в функцию."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "параметры"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Добавить, удалить или изменить порядок входных параметров для этой функции."; +Blockly.Msg["REDO"] = "Повторить"; +Blockly.Msg["REMOVE_COMMENT"] = "Удалить комментарий"; +Blockly.Msg["RENAME_VARIABLE"] = "Переименовать переменную…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Переименовать все переменные '%1' в:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "к %1 добавить текст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Добавить текст к переменной «%1»."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "в строчные буквы"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "в Заглавные Начальные Буквы"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "в ЗАГЛАВНЫЕ БУКВЫ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Возвращает копию текста с ЗАГЛАВНЫМИ или строчными буквами."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "взять первую букву"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "взять букву № с конца"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "взять букву №"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "взять последнюю букву"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "взять случайную букву"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "в тексте %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Возвращает букву в указанной позиции."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "подсчитать количество %1 в %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Подсчитать, сколько раз отрывок текста появляется в другом тексте."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Добавить элемент к тексту."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "соединить"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Добавьте, удалите, переставьте фрагменты для переделки текстового блока."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "по букву № с конца"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "по букву №"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "по последнюю букву"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "в тексте"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "взять подстроку с первой буквы"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "взять подстроку с буквы № с конца"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "взять подстроку с буквы №"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Возвращает указанную часть текста."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "найти первое вхождение текста"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "найти последнее вхождение текста"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "в тексте %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Возвращает номер позиции первого/последнего вхождения первого текста во втором. Возвращает %1, если текст не найден."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 пуст"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Возвращает значение истина, если предоставленный текст пуст."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "создать текст из"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Создаёт фрагмент текста, объединяя любое число элементов"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "длина %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Возвращает число символов (включая пробелы) в заданном тексте."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "напечатать %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Печатает текст, число или другой объект."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запросить у пользователя число."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запросить у пользователя текст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запросить число с подсказкой"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запросить текст с подсказкой"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "заменить %1 на %2 в %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Заменить все вхождения некоторого текста другим текстом."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "изменить порядок на обратный %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Меняет порядок символов в тексте на обратный."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ru.wikipedia.org/wiki/Строковый_тип"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Буква, слово или строка текста."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "обрезать пробелы с двух сторон"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "обрезать пробелы слева"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "обрезать пробелы справа"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Возвращает копию текста с пробелами, удалёнными с одного или обоих концов."; +Blockly.Msg["TODAY"] = "Сегодня"; +Blockly.Msg["UNDO"] = "Отменить"; +Blockly.Msg["UNNAMED_KEY"] = "без названия"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "элемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Создать блок \"присвоить\" для %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Возвращает значение этой переменной."; +Blockly.Msg["VARIABLES_SET"] = "присвоить %1 = %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Создать вставку %1"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Присваивает переменной значение вставки."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Переменная с именем '%1' уже существует."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Название переменной '%1' уже используется другой типа: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Рабочая область Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Напишите здесь что-нибудь..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sc.js b/msg/js/sc.js index 87d9130fe1c..3d5ee5ef3ac 100644 --- a/msg/js/sc.js +++ b/msg/js/sc.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Agiunghe unu cumentu"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muda valori:"; -Blockly.Msg["CLEAN_UP"] = "Lìmpia is brocus"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Serra e stringi Brocus"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Serra e stringi Brocu"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colori 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colori 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "raportu"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mestura"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Amestura duus coloris cun unu raportu (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Scebera unu colori de sa tauledda."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "Unu colori a brítiu"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Scebera unu colori a brítiu."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "birdi"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "arrùbiu"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colora cun"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Cuncorda unu colori cun su tanti de arrubiu, birdi, e blue. Totu is valoris depint essi intra 0 e 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "sàrtiat a foras de sa lòriga"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "sighit cun su repicu afatànti"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bessit de sa lòriga."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sartiat su chi abarrat de sa loriga, e sighit cun su repicu afatànti."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Amonestu: Custu brocu ddu podis ponni sceti aintru de una lòriga."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "po dònnia item %1 in lista %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Po dònnia item in sa lista, ponit sa variàbili '%1' pari a s'item, e tandu fait pariga de cumandus."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "po %1 de %2 fintzas %3 a passus de %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fait pigai a sa variàbili \"%1\" i valoris de su primu numeru a s'urtimu, a su passu impostau e fait su brocu."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Aciungi una cunditzioni a su brocu si."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Aciungi una urtima cunditzioni piga-totu a su brocu si."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu si."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sinuncas"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sinuncas si"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si su valori est berus, tandu fait pariga de cumandus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si su valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, fai su segundu brocu de is cumandus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si su primu valori est beridadi, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est beridadi, fai su segundu brocu de is cumandus."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si su primu valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est berus, fai su segundu brocu de is cumandus. Si mancu unu valori est berus, tandu fai s'urtimu brocu de is cumandus."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fai"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repiti %1 bortas"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Fait pariga de cumandus prus bortas."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repiti fintzas"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repiti interis"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Interis su valori est frassu, tandu fai pariga de cumandus."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Interis su valori est berus, tandu fai pariga de cumandus."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Scancellu su %1 de is brocus?"; -Blockly.Msg["DELETE_BLOCK"] = "Fùlia Blocu"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Fulia %1 Blocus"; -Blockly.Msg["DIALOG_CANCEL"] = "Annulla"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Disabìlita Blocu"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Dùplica"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Abìlita Blocu"; -Blockly.Msg["EXPAND_ALL"] = "Aberi Brocus"; -Blockly.Msg["EXPAND_BLOCK"] = "Aberi Brocu"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Intradas esternas"; -Blockly.Msg["HELP"] = "Agiudu"; -Blockly.Msg["INLINE_INPUTS"] = "Intradas in lìnia"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "fait una lista buida"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Torrat una lista, de longària 0, chena records de datus."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu lista."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "fait una lista cun"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Acciungi unu item a sa lista."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Fait una lista cun calisiollat numeru de items."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primu"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# de sa fini"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "piga"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "piga e fùlia"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "urtimu"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "a brìtiu (random)"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fùlia"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Torrat su primu elementu de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Torrat s'elementu de su postu inditau de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Torrat s'urtimu elementu de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Torrat un'elementu a brìtiu de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fùliat e torrat su primu elementu de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fùliat e torrat s'elementu de su postu inditau de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fùliat e torrat s'urtimu elementu de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fùliat e torrat un'elementu a brìtiu de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fùliat su primu elementu de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fùliat s'elementu de su postu inditau de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fùliat s'urtimu elementu de una lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fùliat unu elementu a brìtiu de una lista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "a # de sa fini"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fintzas a #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "a s'urtimu"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "bogandi suta-lista de su primu"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "bogandi suta-lista de # de sa fini."; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "bogandi suta-lista de #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Fait una copia de sa parti inditada de sa lista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 est po s'urtimu elementu."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 est po su primu elementu."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "circa prima ocasioni de s'item"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "circa urtima ocasioni de s'item"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Torrat s'indixi de sa primu/urtima ocasioni de s'item in sa lista. Torrat %1 si s'item non s'agatat."; -Blockly.Msg["LISTS_INLIST"] = "in lista"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 est buidu"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Torrat berus si sa lista est buida."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "longària de %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Torrat sa longària de una lista."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "fait una lista cun item %1 repitiu %2 bortas"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Fait una lista cun unu numeru giau repitiu su tanti de is bortas inditadas."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "a"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserta a"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "imposta"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insertat s'elementu a su cumintzu de sa lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insertat s'elementu in su postu inditau in una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Aciungit s'elementu a sa fini de sa lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Aciungit s'elementu a brítiu in sa lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Impostat su primu elementu in una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Impostat s'elementu in su postu inditau de una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Impostat s'urtimu elementu in una lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Impostat unu elementu random in una lista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fai una lista de unu testu"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fai unu testu de una lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Auni una lista de testus in d-unu sceti, ponendi separadoris."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividi su testu in un'elencu de testus, firmendi po dònnia separadori."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "cun separadori"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "frassu"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Torrat berus o frassu."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "berus"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Torrat berus si is inputs funt unu uguali a s'àteru."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Torrat berus si su primu input est prus mannu de s'àteru."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Torrat berus si su primu input est prus mannu o uguali a s'àteru."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Torrat berus si su primu input est prus piticu de s'àteru."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Torrat berus si su primu input est prus piticu o uguali a s'àteru."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Torrat berus si is inputs non funt unu uguali a s'àteru."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Torrat berus si s'input est frassu. Torrat frassu si s'input est berus."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Torrat null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Torrat berus si ambos is inputs funt berus."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Torrat berus si assumancu unu de is inputs est berus."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "cumpròa"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si frassu"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si berus"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "‎Cumproa sa cunditzioni in 'cumproa'. Si sa cunditzioni est berus, torrat su valori 'si berus'; sinuncas torrat su valori 'si frassu'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Torrat sa summa de is duus nùmerus."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Torrat su cuotzienti de is duus nùmerus."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Torrat sa diferèntzia de is duus nùmerus."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Torrat su produtu de is duus nùmerus."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Torrat su primu numeru artziau a sa potenza de su segundu nùmeru."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "muda %1 de %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Aciungi unu numeru a sa variabili '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Torrat una de is costantis comunas: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), o ∞ (infiniu)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "custringi %1 de %2 a %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Custringi unu numeru aintru de is liminaxus giaus (cumprendius)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "fait a ddu dividi po"; -Blockly.Msg["MATH_IS_EVEN"] = "est paris"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "est negativu"; -Blockly.Msg["MATH_IS_ODD"] = "est dísparu"; -Blockly.Msg["MATH_IS_POSITIVE"] = "est positivu"; -Blockly.Msg["MATH_IS_PRIME"] = "est primu"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Cumprova si unu numeru est paris, dìsparis, primu, intreu, positivu, negativu o si fait a ddu dividi po unu numeru giau. Torrat berus o frassu."; -Blockly.Msg["MATH_IS_WHOLE"] = "est intreu"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "arrestu de %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Torrat s'arrestu de sa divisioni de duus numerus."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Unu numeru"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mèdia de sa lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "massimu de sa lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medianu de sa lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimu de sa lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modas de sa lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "unu item a brìtiu de sa lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviadura standard de sa lista"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma sa lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Torrat sa mèdia (aritimètica) de is valoris de sa lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Torrat su numeru prus mannu de sa lista"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Torrat su numeru medianu de sa lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Torrat su numeru prus piticu de sa lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Torrat una lista de is itams prus frecuentis de sa lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Torrat unu item a brìtiu de sa lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Torrat sa deviadura standard de sa lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Torrat sa suma de totu is numerus de sa lista."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "una fratzioni a brìtiu"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Torrat una fratzioni a brìtiu intra 0.0 (cumpresu) e 1.0 (bogau)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "numeru intreu a brítiu de %1 a %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Torrat unu numeru intreu a brìtiu intra duus nùmerus giaus (cumpresus)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arretunda"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arretunda faci a bàsciu."; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Arretunda faci a susu"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arretunda unu numeru faci a susu o faci a bàsciu."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "assolutu"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "arraxina cuadra"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Torrat su valori assolútu de unu numeru."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Torrat (e) a sa potèntzia de unu numeru."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Torrat su logaritmu naturali de unu numeru."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Torrat su logaritmu a basi 10 de unu numeru."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Torrat su valori negau de unu numeru."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Torrat (10) a sa potèntzia de unu numeru."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Torrat s'arraxina cuadra de unu numeru."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Torrat su arccosinu de unu numeru."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Torrat su arcsinu de unu numeru."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Torrat su arctangenti de unu numeru."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Torrat su cosinu de unu gradu (no radianti)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Torrat su sinu de unu gradu (no radianti)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Torrat sa tangenti de unu gradu (no radianti)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Variabili noa..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nòmini de sa variabili noa:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permiti decraratzionis"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Arròllia sa funtzione '%1' cuncordada dae s'impitadore."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Arròllia sa funtzione '%1' cuncordada dae s'impitadore e imprea s'output suu."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "cun"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ingenerau'%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fait calincuna cosa"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "po"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Fait una funtzioni chena output."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "torrat"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Fait una funtzioni cun output."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Amonestu: Custa funtzioni tenit parametrus duplicaus."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Marca sa definitzioni de funtzioni."; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si unu valori est berus, tandu torrat unu segundu valori."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Amonestu: Custu brocu ddu podis ponni sceti aintru de una funtzioni."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nomini input:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Aciungi un input a sa funtzioni."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Aciungi, fùlia, o assenta is inputs a custa funtzioni."; -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Fùlia unu cumentu"; -Blockly.Msg["RENAME_VARIABLE"] = "Muda nòmini a variabili..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "A is variabilis '%1' muda nòmini a:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 acciungi su testu %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Aciungit testu a sa variàbili '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "a minúdu"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "cun Primu lìtera a Mauschínu"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "a mauschínu"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Torrat una copia de su testu inditau mudendi mauschínu/minúdu."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "piga sa prima lìtera"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "piga sa lìtera # de sa fini"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "piga sa lìtera #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "piga s'urtima lìtera"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "piga una lìtera a brìtiu"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Torrat sa lìtera de su postu giau."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Acciungi unu item a su testu."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "auni a pari"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu de testu."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "a sa lìtera # de sa fini"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "a sa lìtera #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "a s'urtima lìtera"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in su testu"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "piga suta-stringa de sa primu lìtera"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "piga suta-stringa de sa lìtera # fintzas a fini"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "piga suta-stringa de sa lìtera #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Torrat su testu inditau."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "circa prima ocasioni de su testu"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "circa urtima ocasioni de su testu"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in su testu %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Torrat s'indixi de sa primu/urtima ocasioni de su primu testu in su segundu testu. Torrat %1 si su testu no ddu agatat."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 est buidu"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Torrat berus si su testu giau est buidu."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "scri testu cun"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Fait unu testu ponendi a pari parigas de items."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "longària de %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Torrat su numeru de lìteras (cun is spàtzius) in su testu giau."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "scri %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Scri su testu, numeru o àteru valori."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pregonta unu nùmeru a s'impitadore."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pregonta testu a s'impitadore."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pregonta po unu numeru"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "pregonta po su testu"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una lìtera, paràula, o linia de testu."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "bogat spàtzius de ambus càbudus de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "bogat spàtzius de su càbudu de manca de"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "bogat spàtzius de su càbudu de dereta de"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Torrat una copia de su testu bogaus is spàtzius de unu o de ambus is càbudus."; -Blockly.Msg["TODAY"] = "Oe"; -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Fait 'imposta %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Torrat su valori de custa variabili."; -Blockly.Msg["VARIABLES_SET"] = "imposta %1 a %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Fait 'piga %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Imposta custa variabili uguali a s'input."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Agiunghe unu cumentu"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Muda valori:"; +Blockly.Msg["CLEAN_UP"] = "Lìmpia is brocus"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Serra e stringi Brocus"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Serra e stringi Brocu"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colori 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colori 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "raportu"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mestura"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Amestura duus coloris cun unu raportu (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Scebera unu colori de sa tauledda."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "Unu colori a brítiu"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Scebera unu colori a brítiu."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "birdi"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "arrùbiu"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colora cun"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Cuncorda unu colori cun su tanti de arrubiu, birdi, e blue. Totu is valoris depint essi intra 0 e 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "sàrtiat a foras de sa lòriga"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "sighit cun su repicu afatànti"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bessit de sa lòriga."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Sartiat su chi abarrat de sa loriga, e sighit cun su repicu afatànti."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Amonestu: Custu brocu ddu podis ponni sceti aintru de una lòriga."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "po dònnia item %1 in lista %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Po dònnia item in sa lista, ponit sa variàbili '%1' pari a s'item, e tandu fait pariga de cumandus."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "po %1 de %2 fintzas %3 a passus de %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Fait pigai a sa variàbili \"%1\" i valoris de su primu numeru a s'urtimu, a su passu impostau e fait su brocu."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Aciungi una cunditzioni a su brocu si."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Aciungi una urtima cunditzioni piga-totu a su brocu si."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu si."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sinuncas"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sinuncas si"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "si"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Si su valori est berus, tandu fait pariga de cumandus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Si su valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, fai su segundu brocu de is cumandus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Si su primu valori est beridadi, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est beridadi, fai su segundu brocu de is cumandus."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Si su primu valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est berus, fai su segundu brocu de is cumandus. Si mancu unu valori est berus, tandu fai s'urtimu brocu de is cumandus."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "fai"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repiti %1 bortas"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Fait pariga de cumandus prus bortas."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repiti fintzas"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repiti interis"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Interis su valori est frassu, tandu fai pariga de cumandus."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Interis su valori est berus, tandu fai pariga de cumandus."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Scancellu su %1 de is brocus?"; +Blockly.Msg["DELETE_BLOCK"] = "Fùlia Blocu"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Fulia %1 Blocus"; +Blockly.Msg["DIALOG_CANCEL"] = "Annulla"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disabìlita Blocu"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dùplica"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Abìlita Blocu"; +Blockly.Msg["EXPAND_ALL"] = "Aberi Brocus"; +Blockly.Msg["EXPAND_BLOCK"] = "Aberi Brocu"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Intradas esternas"; +Blockly.Msg["HELP"] = "Agiudu"; +Blockly.Msg["INLINE_INPUTS"] = "Intradas in lìnia"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "fait una lista buida"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Torrat una lista, de longària 0, chena records de datus."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu lista."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "fait una lista cun"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Acciungi unu item a sa lista."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Fait una lista cun calisiollat numeru de items."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "primu"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# de sa fini"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "piga"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "piga e fùlia"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "urtimu"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "a brìtiu (random)"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "fùlia"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Torrat su primu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Torrat s'elementu de su postu inditau de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Torrat s'urtimu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Torrat un'elementu a brìtiu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fùliat e torrat su primu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fùliat e torrat s'elementu de su postu inditau de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fùliat e torrat s'urtimu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fùliat e torrat un'elementu a brìtiu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fùliat su primu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fùliat s'elementu de su postu inditau de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fùliat s'urtimu elementu de una lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Fùliat unu elementu a brìtiu de una lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "a # de sa fini"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "fintzas a #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "a s'urtimu"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "bogandi suta-lista de su primu"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "bogandi suta-lista de # de sa fini."; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "bogandi suta-lista de #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Fait una copia de sa parti inditada de sa lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 est po s'urtimu elementu."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 est po su primu elementu."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "circa prima ocasioni de s'item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "circa urtima ocasioni de s'item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Torrat s'indixi de sa primu/urtima ocasioni de s'item in sa lista. Torrat %1 si s'item non s'agatat."; +Blockly.Msg["LISTS_INLIST"] = "in lista"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 est buidu"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Torrat berus si sa lista est buida."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "longària de %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Torrat sa longària de una lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "fait una lista cun item %1 repitiu %2 bortas"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Fait una lista cun unu numeru giau repitiu su tanti de is bortas inditadas."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "a"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "inserta a"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "imposta"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Insertat s'elementu a su cumintzu de sa lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Insertat s'elementu in su postu inditau in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Aciungit s'elementu a sa fini de sa lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Aciungit s'elementu a brítiu in sa lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Impostat su primu elementu in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Impostat s'elementu in su postu inditau de una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Impostat s'urtimu elementu in una lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Impostat unu elementu random in una lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "fai una lista de unu testu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "fai unu testu de una lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Auni una lista de testus in d-unu sceti, ponendi separadoris."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dividi su testu in un'elencu de testus, firmendi po dònnia separadori."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "cun separadori"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "frassu"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Torrat berus o frassu."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "berus"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Torrat berus si is inputs funt unu uguali a s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Torrat berus si su primu input est prus mannu de s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Torrat berus si su primu input est prus mannu o uguali a s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Torrat berus si su primu input est prus piticu de s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Torrat berus si su primu input est prus piticu o uguali a s'àteru."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Torrat berus si is inputs non funt unu uguali a s'àteru."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "non %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Torrat berus si s'input est frassu. Torrat frassu si s'input est berus."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Torrat null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Torrat berus si ambos is inputs funt berus."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Torrat berus si assumancu unu de is inputs est berus."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "cumpròa"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "si frassu"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "si berus"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "‎Cumproa sa cunditzioni in 'cumproa'. Si sa cunditzioni est berus, torrat su valori 'si berus'; sinuncas torrat su valori 'si frassu'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Torrat sa summa de is duus nùmerus."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Torrat su cuotzienti de is duus nùmerus."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Torrat sa diferèntzia de is duus nùmerus."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Torrat su produtu de is duus nùmerus."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Torrat su primu numeru artziau a sa potenza de su segundu nùmeru."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "muda %1 de %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Aciungi unu numeru a sa variabili '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Torrat una de is costantis comunas: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), o ∞ (infiniu)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "custringi %1 de %2 a %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Custringi unu numeru aintru de is liminaxus giaus (cumprendius)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "fait a ddu dividi po"; +Blockly.Msg["MATH_IS_EVEN"] = "est paris"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "est negativu"; +Blockly.Msg["MATH_IS_ODD"] = "est dísparu"; +Blockly.Msg["MATH_IS_POSITIVE"] = "est positivu"; +Blockly.Msg["MATH_IS_PRIME"] = "est primu"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Cumprova si unu numeru est paris, dìsparis, primu, intreu, positivu, negativu o si fait a ddu dividi po unu numeru giau. Torrat berus o frassu."; +Blockly.Msg["MATH_IS_WHOLE"] = "est intreu"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "arrestu de %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Torrat s'arrestu de sa divisioni de duus numerus."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Unu numeru"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mèdia de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "massimu de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medianu de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimu de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modas de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "unu item a brìtiu de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "deviadura standard de sa lista"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "suma sa lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Torrat sa mèdia (aritimètica) de is valoris de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Torrat su numeru prus mannu de sa lista"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Torrat su numeru medianu de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Torrat su numeru prus piticu de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Torrat una lista de is itams prus frecuentis de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Torrat unu item a brìtiu de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Torrat sa deviadura standard de sa lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Torrat sa suma de totu is numerus de sa lista."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "una fratzioni a brìtiu"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Torrat una fratzioni a brìtiu intra 0.0 (cumpresu) e 1.0 (bogau)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "numeru intreu a brítiu de %1 a %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Torrat unu numeru intreu a brìtiu intra duus nùmerus giaus (cumpresus)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "arretunda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "arretunda faci a bàsciu."; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Arretunda faci a susu"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Arretunda unu numeru faci a susu o faci a bàsciu."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "assolutu"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "arraxina cuadra"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Torrat su valori assolútu de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Torrat (e) a sa potèntzia de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Torrat su logaritmu naturali de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Torrat su logaritmu a basi 10 de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Torrat su valori negau de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Torrat (10) a sa potèntzia de unu numeru."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Torrat s'arraxina cuadra de unu numeru."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Torrat su arccosinu de unu numeru."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Torrat su arcsinu de unu numeru."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Torrat su arctangenti de unu numeru."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Torrat su cosinu de unu gradu (no radianti)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Torrat su sinu de unu gradu (no radianti)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Torrat sa tangenti de unu gradu (no radianti)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Variabili noa..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nòmini de sa variabili noa:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "permiti decraratzionis"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "con:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Arròllia sa funtzione '%1' cuncordada dae s'impitadore."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Arròllia sa funtzione '%1' cuncordada dae s'impitadore e imprea s'output suu."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "cun"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ingenerau'%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "fait calincuna cosa"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "po"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Fait una funtzioni chena output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "torrat"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Fait una funtzioni cun output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Amonestu: Custa funtzioni tenit parametrus duplicaus."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Marca sa definitzioni de funtzioni."; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Si unu valori est berus, tandu torrat unu segundu valori."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Amonestu: Custu brocu ddu podis ponni sceti aintru de una funtzioni."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "nomini input:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Aciungi un input a sa funtzioni."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Aciungi, fùlia, o assenta is inputs a custa funtzioni."; +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Fùlia unu cumentu"; +Blockly.Msg["RENAME_VARIABLE"] = "Muda nòmini a variabili..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "A is variabilis '%1' muda nòmini a:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "a %1 acciungi su testu %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Aciungit testu a sa variàbili '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "a minúdu"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "cun Primu lìtera a Mauschínu"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "a mauschínu"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Torrat una copia de su testu inditau mudendi mauschínu/minúdu."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "piga sa prima lìtera"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "piga sa lìtera # de sa fini"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "piga sa lìtera #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "piga s'urtima lìtera"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "piga una lìtera a brìtiu"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Torrat sa lìtera de su postu giau."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Acciungi unu item a su testu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "auni a pari"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu de testu."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "a sa lìtera # de sa fini"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "a sa lìtera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "a s'urtima lìtera"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in su testu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "piga suta-stringa de sa primu lìtera"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "piga suta-stringa de sa lìtera # fintzas a fini"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "piga suta-stringa de sa lìtera #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Torrat su testu inditau."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "circa prima ocasioni de su testu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "circa urtima ocasioni de su testu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in su testu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Torrat s'indixi de sa primu/urtima ocasioni de su primu testu in su segundu testu. Torrat %1 si su testu no ddu agatat."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 est buidu"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Torrat berus si su testu giau est buidu."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "scri testu cun"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Fait unu testu ponendi a pari parigas de items."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "longària de %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Torrat su numeru de lìteras (cun is spàtzius) in su testu giau."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "scri %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Scri su testu, numeru o àteru valori."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pregonta unu nùmeru a s'impitadore."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pregonta testu a s'impitadore."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pregonta po unu numeru"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "pregonta po su testu"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Una lìtera, paràula, o linia de testu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "bogat spàtzius de ambus càbudus de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "bogat spàtzius de su càbudu de manca de"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "bogat spàtzius de su càbudu de dereta de"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Torrat una copia de su testu bogaus is spàtzius de unu o de ambus is càbudus."; +Blockly.Msg["TODAY"] = "Oe"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Fait 'imposta %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Torrat su valori de custa variabili."; +Blockly.Msg["VARIABLES_SET"] = "imposta %1 a %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Fait 'piga %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Imposta custa variabili uguali a s'input."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sco.js b/msg/js/sco.js index e240e212895..bc0fdd1dda6 100644 --- a/msg/js/sco.js +++ b/msg/js/sco.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Help"; // untranslated -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Eik aen input tae the function."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Eik, remuiv, or reorder inputs tae this function."; -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Help"; // untranslated +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Eik aen input tae the function."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Eik, remuiv, or reorder inputs tae this function."; +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sd.js b/msg/js/sd.js index bf3bc54192e..9983d0c17f2 100644 --- a/msg/js/sd.js +++ b/msg/js/sd.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "رايو ڏيو"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "قدر بدلايو"; -Blockly.Msg["CLEAN_UP"] = "بلاڪ صاف ڪيو"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "بلاڪَ ڍڪيو"; -Blockly.Msg["COLLAPSE_BLOCK"] = "بلاڪ ڍڪيو"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "تناسب"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "گڏيل"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ڄاڻايل تناسب سان ٻہ رنگ پاڻ ۾ ملايو (0.0-1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "رنگ دٻيءَ مان رنگ چونڊيو."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "بنا ترتيب رنگ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ڪو بہ ‌رنگ چونڊيو."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "نيرو"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "سائو"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ڳاڙهو"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "سان رڱيو"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ڳاڙهي، سائي، ۽ نيري جو مقدار ڄاڻائي گھربل رنگ ٺاهيو. سمورا قدر 0 ۽ 100 جي وچ ۾ هجن."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "چڪر مان ٻاهر نڪرو"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "چڪر جاري رکندي نئين ڦيري پايو"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "نہ تہ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "نہ تہ جي"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "جيڪڏهن"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ڪريو"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "1٪ ڀيرا ورجايو"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ورجايو جيستائين"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ورجايو جڏهن"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "سڀ %1 بلاڪ ڊاھيون؟"; -Blockly.Msg["DELETE_BLOCK"] = "بلاڪ ڊاهيو"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "1٪ بلاڪ ڊاهيو"; -Blockly.Msg["DIALOG_CANCEL"] = "رد"; -Blockly.Msg["DIALOG_OK"] = "ٺيڪ"; -Blockly.Msg["DISABLE_BLOCK"] = "بلاڪ کي غيرفعال بڻايو"; -Blockly.Msg["DUPLICATE_BLOCK"] = "نقل"; -Blockly.Msg["DUPLICATE_COMMENT"] = "نقل رايو"; -Blockly.Msg["ENABLE_BLOCK"] = "بلاڪ کي فعال بڻايو"; -Blockly.Msg["EXPAND_ALL"] = "بلاڪَ نمايو"; -Blockly.Msg["EXPAND_BLOCK"] = "بلاڪ نمايو"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ٻاهريون داخلائون"; -Blockly.Msg["HELP"] = "مدد"; -Blockly.Msg["INLINE_INPUTS"] = "اِنلائين اِن پٽس"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "خالي فهرست تخليق ڪريو"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لسٽ"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "سان فهرست تخليق ڪيو"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "فهرست ۾ ڪا شي شامل ڪريو."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "پهريون"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# آخر کان"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخري"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "بي ترتيب"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "هٽايو"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ڏانهن # آخر کان"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ڏانهن #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "آخري ڏانهن"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "فهرست ۾"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالي آهي"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "جيان"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "تي داخل ڪريو"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "ميڙ"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "اُڀو (اَسينڊنگ)"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "ترتيب ڏيو %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "الف ب وار (الفابيٽڪ)"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ڪُوڙ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "درست يا غير درست وراڻي ٿو."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سچ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "جيڪڏهن ٻئي ان پُٽس برابر آهن تہ درست وراڻيو"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي تہ درست وراڻيو."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي يا ٻئي برابر آهن تہ درست وراڻيو."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي تہ درست وراڻيو"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي يا ٻئي برابر آهن تہ درست وراڻيو"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "جيڪڏهن ٻئي ان پُٽس اڻ برابر آهن تہ درست وراڻيو"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نڪي %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ان پُٽ غير درست آهي تہ درست وراڻيو. ان پُٽ درست آهي تہ غير درست وراڻيو."; -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "۽"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "يا"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "جيڪڏهن ٻئي ان پُٽ درست آهن تہ درست وراڻيو."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "جيڪڏهن ٻنهي ان پُٽس مان ڪو هڪ بہ درست آهي تہ درست وراڻيو."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "پرک (ٽيسٽ)"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "جيڪڏهن ڪوڙو"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "جيڪڏهن سچو"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ٻن انگن جي جوڙ اپت ڏيو."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "ٻنهي انگن جي ونڊ ڏيو."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "ٻنهي انگن جو تفاوت ڏيو."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "ٻنهي انگن جي ضرب اُپت ڏيو."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 کي %2 سان مَٽايو"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/رياضياتي استقلال"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "سان ونڊجندڙ آهي"; -Blockly.Msg["MATH_IS_EVEN"] = "ٻڌي آهي"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "ڪاٽو آهي"; -Blockly.Msg["MATH_IS_ODD"] = "اِڪي آهي"; -Blockly.Msg["MATH_IS_POSITIVE"] = "واڌو آهي"; -Blockly.Msg["MATH_IS_PRIME"] = "مفرد آهي"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "سڄو آهي"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ڪو انگ."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "لسٽ جي سراسري"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "لسٽ جو وڏي ۾ وڏو قدر"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "لسٽ جو مڌيان"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "لسٽ جو ننڍي ۾ ننڍو قدر"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "فهرست جا طريقيڪا (موڊز آف لسٽ)"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "بي ترتيب جذن جي فهرست (رينڊم آئيٽم آف لسٽ)"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "فهرست جو وچور"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "لسٽ ۾ وڏي کان وڏو قدر ڄاڻايو."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "لسٽ جو مڌيان انگ ڄاڻايو."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "لسٽ ۾ ننڍي کان ننڍو قدر ڄاڻايو."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "هيٺ ڦيرايو (رائونڊ ڊائون)"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ويڙهيو (رائونڊ اَپ)"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/ٻيون مول"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ٺپ"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ٻيون مول"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ڪنهن انگ جو قدرتي لاگ ڄاڻايو."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ڪنهن انگ جو 10 بنيادي لاگ ڄاڻايو."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ڪنهن انگ جو ڪاٽو ڄاڻايو."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ڪنهن انگ جو ٻيون مول ڄاڻايو."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/ٽڪنڊور ڪاڄ"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "نئون ڦرڻو..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ڦرڻي جو نئون نالو:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "سان:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "سان:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "تخليق ڪريو '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ڪجھ ڪريو"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ڏانهن"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "واپس ورو"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ان پُٽس"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ٻيهر ڪريو"; -Blockly.Msg["REMOVE_COMMENT"] = "رايو ڊاهيو"; -Blockly.Msg["RENAME_VARIABLE"] = "ڦرڻي کي نئون نالو ڏيو..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ننڍن اکر ڏانهن"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "وڏن اکرن ڏانهن"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "ڳڻيو %1 ۾ %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "شامل ٿيو"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "متن ۾"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "۾ متن %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "سان مواد تخليق ڪيو (ڪريئيٽ ٽيڪسٽ وِد)"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "ڇاپيو %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "ڄاڻايل تحرير، انگ يا ڪو ٻيو قدر ڇاپيو."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "اڄ"; -Blockly.Msg["UNDO"] = "اڻڪريو"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "اسم"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "رايو ڏيو"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "قدر بدلايو"; +Blockly.Msg["CLEAN_UP"] = "بلاڪ صاف ڪيو"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "بلاڪَ ڍڪيو"; +Blockly.Msg["COLLAPSE_BLOCK"] = "بلاڪ ڍڪيو"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "تناسب"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "گڏيل"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ڄاڻايل تناسب سان ٻہ رنگ پاڻ ۾ ملايو (0.0-1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "رنگ دٻيءَ مان رنگ چونڊيو."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "بنا ترتيب رنگ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ڪو بہ ‌رنگ چونڊيو."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "نيرو"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سائو"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ڳاڙهو"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "سان رڱيو"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ڳاڙهي، سائي، ۽ نيري جو مقدار ڄاڻائي گھربل رنگ ٺاهيو. سمورا قدر 0 ۽ 100 جي وچ ۾ هجن."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "چڪر مان ٻاهر نڪرو"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "چڪر جاري رکندي نئين ڦيري پايو"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "نہ تہ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "نہ تہ جي"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "جيڪڏهن"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ڪريو"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "1٪ ڀيرا ورجايو"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ورجايو جيستائين"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ورجايو جڏهن"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "سڀ %1 بلاڪ ڊاھيون؟"; +Blockly.Msg["DELETE_BLOCK"] = "بلاڪ ڊاهيو"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "1٪ بلاڪ ڊاهيو"; +Blockly.Msg["DIALOG_CANCEL"] = "رد"; +Blockly.Msg["DIALOG_OK"] = "ٺيڪ"; +Blockly.Msg["DISABLE_BLOCK"] = "بلاڪ کي غيرفعال بڻايو"; +Blockly.Msg["DUPLICATE_BLOCK"] = "نقل"; +Blockly.Msg["DUPLICATE_COMMENT"] = "نقل رايو"; +Blockly.Msg["ENABLE_BLOCK"] = "بلاڪ کي فعال بڻايو"; +Blockly.Msg["EXPAND_ALL"] = "بلاڪَ نمايو"; +Blockly.Msg["EXPAND_BLOCK"] = "بلاڪ نمايو"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ٻاهريون داخلائون"; +Blockly.Msg["HELP"] = "مدد"; +Blockly.Msg["INLINE_INPUTS"] = "اِنلائين اِن پٽس"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "خالي فهرست تخليق ڪريو"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "لسٽ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "سان فهرست تخليق ڪيو"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "فهرست ۾ ڪا شي شامل ڪريو."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "پهريون"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# آخر کان"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخري"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "بي ترتيب"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "هٽايو"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ڏانهن # آخر کان"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ڏانهن #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "آخري ڏانهن"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "فهرست ۾"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالي آهي"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "جيان"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "تي داخل ڪريو"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ميڙ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "اُڀو (اَسينڊنگ)"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "ترتيب ڏيو %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "الف ب وار (الفابيٽڪ)"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ڪُوڙ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "درست يا غير درست وراڻي ٿو."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سچ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "جيڪڏهن ٻئي ان پُٽس برابر آهن تہ درست وراڻيو"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي تہ درست وراڻيو."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي يا ٻئي برابر آهن تہ درست وراڻيو."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي تہ درست وراڻيو"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي يا ٻئي برابر آهن تہ درست وراڻيو"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "جيڪڏهن ٻئي ان پُٽس اڻ برابر آهن تہ درست وراڻيو"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "نڪي %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ان پُٽ غير درست آهي تہ درست وراڻيو. ان پُٽ درست آهي تہ غير درست وراڻيو."; +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "۽"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "يا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "جيڪڏهن ٻئي ان پُٽ درست آهن تہ درست وراڻيو."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "جيڪڏهن ٻنهي ان پُٽس مان ڪو هڪ بہ درست آهي تہ درست وراڻيو."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "پرک (ٽيسٽ)"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "جيڪڏهن ڪوڙو"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "جيڪڏهن سچو"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ٻن انگن جي جوڙ اپت ڏيو."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "ٻنهي انگن جي ونڊ ڏيو."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "ٻنهي انگن جو تفاوت ڏيو."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "ٻنهي انگن جي ضرب اُپت ڏيو."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 کي %2 سان مَٽايو"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/رياضياتي استقلال"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "سان ونڊجندڙ آهي"; +Blockly.Msg["MATH_IS_EVEN"] = "ٻڌي آهي"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ڪاٽو آهي"; +Blockly.Msg["MATH_IS_ODD"] = "اِڪي آهي"; +Blockly.Msg["MATH_IS_POSITIVE"] = "واڌو آهي"; +Blockly.Msg["MATH_IS_PRIME"] = "مفرد آهي"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "سڄو آهي"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ڪو انگ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "لسٽ جي سراسري"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "لسٽ جو وڏي ۾ وڏو قدر"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "لسٽ جو مڌيان"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "لسٽ جو ننڍي ۾ ننڍو قدر"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "فهرست جا طريقيڪا (موڊز آف لسٽ)"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "بي ترتيب جذن جي فهرست (رينڊم آئيٽم آف لسٽ)"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "فهرست جو وچور"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "لسٽ ۾ وڏي کان وڏو قدر ڄاڻايو."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "لسٽ جو مڌيان انگ ڄاڻايو."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "لسٽ ۾ ننڍي کان ننڍو قدر ڄاڻايو."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "هيٺ ڦيرايو (رائونڊ ڊائون)"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ويڙهيو (رائونڊ اَپ)"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/ٻيون مول"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ٺپ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ٻيون مول"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ڪنهن انگ جو قدرتي لاگ ڄاڻايو."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ڪنهن انگ جو 10 بنيادي لاگ ڄاڻايو."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ڪنهن انگ جو ڪاٽو ڄاڻايو."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ڪنهن انگ جو ٻيون مول ڄاڻايو."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/ٽڪنڊور ڪاڄ"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "نئون ڦرڻو..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ڦرڻي جو نئون نالو:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "سان:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "سان:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "تخليق ڪريو '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ڪجھ ڪريو"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ڏانهن"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "واپس ورو"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ان پُٽس"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ٻيهر ڪريو"; +Blockly.Msg["REMOVE_COMMENT"] = "رايو ڊاهيو"; +Blockly.Msg["RENAME_VARIABLE"] = "ڦرڻي کي نئون نالو ڏيو..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ننڍن اکر ڏانهن"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "وڏن اکرن ڏانهن"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "ڳڻيو %1 ۾ %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "شامل ٿيو"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "متن ۾"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "۾ متن %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "سان مواد تخليق ڪيو (ڪريئيٽ ٽيڪسٽ وِد)"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "ڇاپيو %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "ڄاڻايل تحرير، انگ يا ڪو ٻيو قدر ڇاپيو."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "اڄ"; +Blockly.Msg["UNDO"] = "اڻڪريو"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "اسم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/shn.js b/msg/js/shn.js index e4b2a3e68f0..b4b123aa8ce 100644 --- a/msg/js/shn.js +++ b/msg/js/shn.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "သႂ်ႇၶေႃႈၶႆႈၸႂ်"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "လႅၵ်ႈလၢႆႈၼမ်ႉၵတ်ႉ"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "လွင်ႈႁႄႉတတ်းၸိူဝ်းလႅဝ်"; -Blockly.Msg["COLLAPSE_BLOCK"] = "လွင်ႈႁႄႉတတ်းလႅဝ်"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "သီ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "သီ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "သႅၼ်း"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "လေႃးလႄး"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ဢဝ်သီသွင်ဢၼ်လေႃးၵၼ် ၸွမ်းၼမ် သႅၼ်းဢၼ်ပၼ်ဝႆႉ (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color သီ"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "လိူၵ်ႈသီ တမ်ႈတီႈ ၽႃးလႅတ်ႉ"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "သီလၢမ်းလိမ်း"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "လိူၵ်ႈသီတမ်ႈတီႈလွၵ်းလၢမ်းလိမ်း"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "သွမ်ႇ"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ၶဵဝ်"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "လီင်"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ႁူမ်ႈၵိုၵ်းသီ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ႁဵတ်းတူၺ်း သီဢၼ်ၼိုင်ႈ ၸွမ်းၼင်ႇမၵ်းမၼ်ႈဝႆႉ ၼႂ်းၶႂၢင်ႇ သီလႅင်, ၶဵဝ် လႄႈ သွမ်ႇ။ ၼမ်ႉၼၵ်းသီ တေလႆႈမီးၼႂ်းဝူင်ႈၵၢင် 0 တေႃႇ 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ဢွၵ်ႇတီႈၶွပ်ႇမူၼ်း"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "သိုပ်ႇပၼ်ႇထႅင်ႈ ၶွပ်ႇမူၼ်းတၢင်ႇဢၼ်"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ၵိုတ်းပႅတ်ႈ ၶွပ်ႇမူၼ်း ဢၼ်မီးဝႆႉ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ဝဵၼ်ႉဝႆႉ ၶွပ်ႇမူၼ်း ဢၼ်ၵိုတ်းၸိူဝ်ႈဝႆႉ, သေ သိုပ်ႇထႅင်ႈတၢင်ႇဢၼ်"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ၾၢင်ႉ: ပလွၵ်ႉဢၼ်ၼႆႉ ၵူၺ်းၸႂ်ႉလူၺ်ႈတႃႇ ၶွပ်ႇမူၼ်းၵူၺ်း"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "တႃႇၵူႈဢၼ်ဢၼ် ၼႂ်း %1 သဵၼ်ႈမၢႆ %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "တႄႇဢၢၼ်ႇၵိုၵ်း %1 တေႃႇ %2 တေႃႇ %3 လူၺ်ႈ %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "သင်ဝႃႈ ပလွၵ်ႉၸိုင် သႂ်ႇပၼ်လွင်ႈတၢင်းမၼ်း တမ်ႈ"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "သႂ်ႇၵမ်းလိုၼ်း, သင်ဝႃႈ ပလွၵ်ႉၸိုင် ဢဝ်လွင်ႈတၢင်းမၼ်းတင်းသဵင်ႈ တမ်ႈ"; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "လိူဝ်သေၼၼ်ႉ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "သင်ဝႃႈ လိူဝ်သေၼၼ်ႉ"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "သင်ဝႃႈ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႉၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆသွင်မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ, သင်ဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢႆသွင် မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ) ဢမ်ႇမီးလွင်ႈမၢၼ်ႇမႅၼ်ႈ သင်ၸိုင် ႁဵတ်းပႅတ်ႈပလွၵ်ႉ ၵမ်းလိုမ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။"; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop တႃႇတူင်ႇမူၼ်း"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ႁဵတ်း"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ပၼ်ႇၶိုၼ်း %1 ၵမ်း"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ တင်းၼမ်"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "တိုၵ်ႉလိုမ်ႉထိုင်"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ၶၢဝ်းတိုၵ်ႉလိုမ်ႉ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ဢမ်ႇမၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ် ၵမ်ႈၽွင်ႈ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "မွတ်ႇပလွၵ်ႉ"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "မွတ်ႇလွင်ႈႁႄႉတတ်း %1"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated -Blockly.Msg["DISABLE_BLOCK"] = "ဢိုတ်းၸႂ်ႉ လွင်ႈႁႄႉတတ်း"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ထုတ်ႇ"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "ပိုတ်ႇၸႂ်ႉ လွင်ႈႁႄႉတတ်း"; -Blockly.Msg["EXPAND_ALL"] = "ၶႂၢၵ်ႈၸိူဝ်းႁႄႉတတ်း"; -Blockly.Msg["EXPAND_BLOCK"] = "ၶႂၢၵ်ႈလွင်ႈႁႄႉတတ်း"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ၶိူင်ႈဢၼ်လုၵ်ႉတၢင်းၼွၵ်ႈၶဝ်ႈမႃး"; -Blockly.Msg["HELP"] = "ၸွႆႈထႅမ်"; -Blockly.Msg["INLINE_INPUTS"] = "ၶိူင်ႈဢၼ်ၶဝ်ႈမႃးၸွမ်းလႅင်း"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ဢမ်ႇၼႅၼ်ႈၼႃ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "မၢၼ်ႇမႅၼ်ႈလႄႈသင် ဢမ်ႇၼႅၼ်ႈၼႃလႄႈသင် ႁူၼ်ၶိုၼ်း"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "မၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(ပၢႆးၼပ်ႉ)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် မိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် ဢမ်ႇမိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ဢမ်ႇၸႂ်ႈ %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢမ်ႇၼႅၼ်ႈၼႃၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ။ သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢၼ်ႇမႅၼ်ႈၸိုင် ၶိုၼ်းမူၼ်ႉမႄး ႁႂ်ႈၼႅၼ်ႈၼႃ"; -Blockly.Msg["LOGIC_NULL"] = "ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "လဵဝ်ၶိုၼ်း ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "လႄႈ"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ဢမ်ႇၼၼ်"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင်ဢၼ် မၢၼ်ႇမႅၼ်ႈၸိုင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ၵမ်းလိုၼ်းသုတ်း မၢၼ်ႇမႅၼ်ႈၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ၸၢမ်း"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "သင်ဝႃႈ ဢမ်ႇၼႅၼ်ႈၼႃ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "သင်ဝႃႈ မၢၼ်ႇမႅၼ်ႈ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "ၸၢမ်းၵူတ်ႇတူၺ်း သၢႆငၢႆ။ သင်ဝႃႈ သၢႆငၢႆမၢၼ်ႇမႅၼ်ႈ, လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်မၢၼ်ႇမႅၼ်ႈ'; လိူဝ်ၼၼ်ႉ လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်ဢမ်ႇၼႅၼ်ႈၼႃ'။"; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/ပၢႆးၼပ်ႉ"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "လဵဝ်ၶိုၼ်း တၢင်းၼမ် ၼႂ်းမၢႆၼပ်ႉ သွင်"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "လဵဝ်ၶိုၼ်း ပမႃႇၼ ၼႂ်းမၢႆၼပ်ႉ သွင်"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "လဵဝ်ၶိုၼ်း ဢၼ်ပႅၵ်ႇပိူင်ႈ ၼႂ်းမၢႆၼပ်ႉ သွင်"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "လဵဝ်ၶိုၼ်း ဢၼ်ဢဝ်ဢွၵ်ႇ ၼႂ်းမၢႆၼပ်ႉ သွင်"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "လဵဝ်ၶိုၼ်း တူဝ်ၼပ်ႉမၢႆၼိုင်ႈၼႆႉ ၸွႆႈႁႅင်းပၼ် တူဝ်ၼပ်ႉမၢႆသွင်"; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "ပဵၼ်ၵူပ်ႉ"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "ပဵၼ်ၵိၵ်ႈ"; -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/မၢႆၼပ်ႉ"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "မၢႆၼပ်ႉ ၼိုင်ႈဢၼ်"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root (မၢႆတူပ်ႉမိူၼ်)"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ပၵတိ"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "မၢႆတူပ်ႉမိူၼ်"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ပၵတိ ၼႂ်းမၢႆၼပ်ႉ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "လဵဝ်ၶိုၼ်း e ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "လဵဝ်ၶိုၼ်း လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "လဵဝ်ၶိုၼ်း ပိုၼ်ႉထၢၼ် 10 လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "လဵဝ်ၶိုၼ်း ဢၼ်သၢၼ်ၶတ်း ၼႂ်း မၢႆၼပ်ႉ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "လဵဝ်ၶိုၼ်း 10 ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "လဵဝ်ၶိုၼ်း မၢႆတူပ်ႉမိူၼ် ၼႂ်းမၢႆၼပ်ႉ"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "ၵေႃႇသၢင်ႈ တူဝ်ၼိုင်..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ၸိုဝ်ႈဢၼ်လၢႆႈမႂ်ႇ"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "ထွၼ်ပႅတ်ႈ ၶေႃႈၶႆႈၸႂ်"; -Blockly.Msg["RENAME_VARIABLE"] = "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇ"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇၸိူဝ်းၼၼ်ႉ '%1' ထိုင်"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "မိူဝ်ႈၼႆႉ"; -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ဢၼ်"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "သႂ်ႇၶေႃႈၶႆႈၸႂ်"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "လႅၵ်ႈလၢႆႈၼမ်ႉၵတ်ႉ"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "လွင်ႈႁႄႉတတ်းၸိူဝ်းလႅဝ်"; +Blockly.Msg["COLLAPSE_BLOCK"] = "လွင်ႈႁႄႉတတ်းလႅဝ်"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "သီ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "သီ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "သႅၼ်း"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "လေႃးလႄး"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ဢဝ်သီသွင်ဢၼ်လေႃးၵၼ် ၸွမ်းၼမ် သႅၼ်းဢၼ်ပၼ်ဝႆႉ (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color သီ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "လိူၵ်ႈသီ တမ်ႈတီႈ ၽႃးလႅတ်ႉ"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "သီလၢမ်းလိမ်း"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "လိူၵ်ႈသီတမ်ႈတီႈလွၵ်းလၢမ်းလိမ်း"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "သွမ်ႇ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ၶဵဝ်"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "လီင်"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ႁူမ်ႈၵိုၵ်းသီ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ႁဵတ်းတူၺ်း သီဢၼ်ၼိုင်ႈ ၸွမ်းၼင်ႇမၵ်းမၼ်ႈဝႆႉ ၼႂ်းၶႂၢင်ႇ သီလႅင်, ၶဵဝ် လႄႈ သွမ်ႇ။ ၼမ်ႉၼၵ်းသီ တေလႆႈမီးၼႂ်းဝူင်ႈၵၢင် 0 တေႃႇ 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ဢွၵ်ႇတီႈၶွပ်ႇမူၼ်း"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "သိုပ်ႇပၼ်ႇထႅင်ႈ ၶွပ်ႇမူၼ်းတၢင်ႇဢၼ်"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ၵိုတ်းပႅတ်ႈ ၶွပ်ႇမူၼ်း ဢၼ်မီးဝႆႉ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ဝဵၼ်ႉဝႆႉ ၶွပ်ႇမူၼ်း ဢၼ်ၵိုတ်းၸိူဝ်ႈဝႆႉ, သေ သိုပ်ႇထႅင်ႈတၢင်ႇဢၼ်"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ၾၢင်ႉ: ပလွၵ်ႉဢၼ်ၼႆႉ ၵူၺ်းၸႂ်ႉလူၺ်ႈတႃႇ ၶွပ်ႇမူၼ်းၵူၺ်း"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "တႃႇၵူႈဢၼ်ဢၼ် ၼႂ်း %1 သဵၼ်ႈမၢႆ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "တႄႇဢၢၼ်ႇၵိုၵ်း %1 တေႃႇ %2 တေႃႇ %3 လူၺ်ႈ %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "သင်ဝႃႈ ပလွၵ်ႉၸိုင် သႂ်ႇပၼ်လွင်ႈတၢင်းမၼ်း တမ်ႈ"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "သႂ်ႇၵမ်းလိုၼ်း, သင်ဝႃႈ ပလွၵ်ႉၸိုင် ဢဝ်လွင်ႈတၢင်းမၼ်းတင်းသဵင်ႈ တမ်ႈ"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "လိူဝ်သေၼၼ်ႉ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "သင်ဝႃႈ လိူဝ်သေၼၼ်ႉ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "သင်ဝႃႈ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႉၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆသွင်မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ, သင်ဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢႆသွင် မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ) ဢမ်ႇမီးလွင်ႈမၢၼ်ႇမႅၼ်ႈ သင်ၸိုင် ႁဵတ်းပႅတ်ႈပလွၵ်ႉ ၵမ်းလိုမ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop တႃႇတူင်ႇမူၼ်း"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ႁဵတ်း"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ပၼ်ႇၶိုၼ်း %1 ၵမ်း"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ တင်းၼမ်"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "တိုၵ်ႉလိုမ်ႉထိုင်"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ၶၢဝ်းတိုၵ်ႉလိုမ်ႉ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ဢမ်ႇမၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ် ၵမ်ႈၽွင်ႈ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "မွတ်ႇပလွၵ်ႉ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "မွတ်ႇလွင်ႈႁႄႉတတ်း %1"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ဢိုတ်းၸႂ်ႉ လွင်ႈႁႄႉတတ်း"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ထုတ်ႇ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ပိုတ်ႇၸႂ်ႉ လွင်ႈႁႄႉတတ်း"; +Blockly.Msg["EXPAND_ALL"] = "ၶႂၢၵ်ႈၸိူဝ်းႁႄႉတတ်း"; +Blockly.Msg["EXPAND_BLOCK"] = "ၶႂၢၵ်ႈလွင်ႈႁႄႉတတ်း"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ၶိူင်ႈဢၼ်လုၵ်ႉတၢင်းၼွၵ်ႈၶဝ်ႈမႃး"; +Blockly.Msg["HELP"] = "ၸွႆႈထႅမ်"; +Blockly.Msg["INLINE_INPUTS"] = "ၶိူင်ႈဢၼ်ၶဝ်ႈမႃးၸွမ်းလႅင်း"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ဢမ်ႇၼႅၼ်ႈၼႃ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "မၢၼ်ႇမႅၼ်ႈလႄႈသင် ဢမ်ႇၼႅၼ်ႈၼႃလႄႈသင် ႁူၼ်ၶိုၼ်း"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "မၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(ပၢႆးၼပ်ႉ)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် မိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် ဢမ်ႇမိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ဢမ်ႇၸႂ်ႈ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢမ်ႇၼႅၼ်ႈၼႃၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ။ သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢၼ်ႇမႅၼ်ႈၸိုင် ၶိုၼ်းမူၼ်ႉမႄး ႁႂ်ႈၼႅၼ်ႈၼႃ"; +Blockly.Msg["LOGIC_NULL"] = "ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "လဵဝ်ၶိုၼ်း ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "လႄႈ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ဢမ်ႇၼၼ်"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင်ဢၼ် မၢၼ်ႇမႅၼ်ႈၸိုင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ၵမ်းလိုၼ်းသုတ်း မၢၼ်ႇမႅၼ်ႈၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ၸၢမ်း"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "သင်ဝႃႈ ဢမ်ႇၼႅၼ်ႈၼႃ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "သင်ဝႃႈ မၢၼ်ႇမႅၼ်ႈ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "ၸၢမ်းၵူတ်ႇတူၺ်း သၢႆငၢႆ။ သင်ဝႃႈ သၢႆငၢႆမၢၼ်ႇမႅၼ်ႈ, လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်မၢၼ်ႇမႅၼ်ႈ'; လိူဝ်ၼၼ်ႉ လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်ဢမ်ႇၼႅၼ်ႈၼႃ'။"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/ပၢႆးၼပ်ႉ"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "လဵဝ်ၶိုၼ်း တၢင်းၼမ် ၼႂ်းမၢႆၼပ်ႉ သွင်"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "လဵဝ်ၶိုၼ်း ပမႃႇၼ ၼႂ်းမၢႆၼပ်ႉ သွင်"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "လဵဝ်ၶိုၼ်း ဢၼ်ပႅၵ်ႇပိူင်ႈ ၼႂ်းမၢႆၼပ်ႉ သွင်"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "လဵဝ်ၶိုၼ်း ဢၼ်ဢဝ်ဢွၵ်ႇ ၼႂ်းမၢႆၼပ်ႉ သွင်"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "လဵဝ်ၶိုၼ်း တူဝ်ၼပ်ႉမၢႆၼိုင်ႈၼႆႉ ၸွႆႈႁႅင်းပၼ် တူဝ်ၼပ်ႉမၢႆသွင်"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "ပဵၼ်ၵူပ်ႉ"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "ပဵၼ်ၵိၵ်ႈ"; +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/မၢႆၼပ်ႉ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "မၢႆၼပ်ႉ ၼိုင်ႈဢၼ်"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root (မၢႆတူပ်ႉမိူၼ်)"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ပၵတိ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "မၢႆတူပ်ႉမိူၼ်"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ပၵတိ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "လဵဝ်ၶိုၼ်း e ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "လဵဝ်ၶိုၼ်း လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "လဵဝ်ၶိုၼ်း ပိုၼ်ႉထၢၼ် 10 လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "လဵဝ်ၶိုၼ်း ဢၼ်သၢၼ်ၶတ်း ၼႂ်း မၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "လဵဝ်ၶိုၼ်း 10 ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "လဵဝ်ၶိုၼ်း မၢႆတူပ်ႉမိူၼ် ၼႂ်းမၢႆၼပ်ႉ"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ၵေႃႇသၢင်ႈ တူဝ်ၼိုင်..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ၸိုဝ်ႈဢၼ်လၢႆႈမႂ်ႇ"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "ထွၼ်ပႅတ်ႈ ၶေႃႈၶႆႈၸႂ်"; +Blockly.Msg["RENAME_VARIABLE"] = "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇ"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇၸိူဝ်းၼၼ်ႉ '%1' ထိုင်"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "မိူဝ်ႈၼႆႉ"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ဢၼ်"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/si.js b/msg/js/si.js index 443164597b7..3fa040ac13a 100644 --- a/msg/js/si.js +++ b/msg/js/si.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "නිල්"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "කොළ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "රතු"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "රූපතහඩු %1 මකාදමන්න"; -Blockly.Msg["DIALOG_CANCEL"] = "අවලංගු කරන්න"; -Blockly.Msg["DIALOG_OK"] = "හරි"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "රූපතහඩු විහිදන්න"; -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "උදව්"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "අයිතමය"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "නිල්"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "කොළ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "රතු"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "රූපතහඩු %1 මකාදමන්න"; +Blockly.Msg["DIALOG_CANCEL"] = "අවලංගු කරන්න"; +Blockly.Msg["DIALOG_OK"] = "හරි"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "රූපතහඩු විහිදන්න"; +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "උදව්"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "අයිතමය"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sk.js b/msg/js/sk.js index 235802712d6..0a25c5edb62 100644 --- a/msg/js/sk.js +++ b/msg/js/sk.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Pridať komentár"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nie je možné zmazať premennú „%1“, pretože je súčasťou definície funkcie „%2“"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Zmeniť hodnotu:"; -Blockly.Msg["CLEAN_UP"] = "Narovnať bloky"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Zrútené bloky obsahujú varovanie."; -Blockly.Msg["COLLAPSE_ALL"] = "Zvinúť bloky"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Zvinúť blok"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "farba 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "farba 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "pomer"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "zmiešať"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Zmieša dve farby v danom pomere (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Zvoľte farbu z palety."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "náhodná farba"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zvoliť farbu náhodne."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "modrá"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "zelená"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "červená"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ofarbiť s"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Vytvoriť farbu pomocou zadaného množstva červenej, zelenej a modrej. Množstvo musí byť medzi 0 a 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "opustiť slučku"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "prejdi na nasledujúce opakovanie slučky"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Opustiť túto slučku."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Vynechať zvyšok tejto slučky a pokračovať ďalším opakovaním."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozornenie: Tento blok sa môže používať len v rámci slučky."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pre každý prvok %1 v zozname %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pre každý prvok v zozname priraď jeho hodnotu do premenej '%1' a vykonaj príkazy."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "počítať s %1 od %2 do %3 o %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Nechá premennú '%1' nadobúdať hodnoty od začiatočného čísla po konečné s daným medzikrokom a vykoná zadané bloky."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Pridať podmienku k \"ak\" bloku."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Pridať poslednú záchytnú podmienku k \"ak\" bloku."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Pridať, odstrániť alebo zmeniť poradie oddielov tohto \"ak\" bloku."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "inak"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inak ak"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ak"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ak je hodnota pravda, vykonaj príkazy."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ak je hodnota pravda, vykonaj príkazy v prvom bloku. Inak vykonaj príkazy v druhom bloku."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku. Ak ani jedna hodnota nie je pravda, vykonaj príkazy v poslednom bloku."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "rob"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "opakuj %1 krát"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Opakuj určité príkazy viackrát."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "opakuj kým nebude"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "opakuj kým"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Kým je hodnota nepravdivá, vykonávaj príkazy."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Kým je hodnota pravdivá, vykonávaj príkazy."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Zmazať všetkých %1 dielcov?"; -Blockly.Msg["DELETE_BLOCK"] = "Odstrániť blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Odstrániť premennú '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Odstrániť %1 použití premennej '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Odstrániť %1 blokov"; -Blockly.Msg["DIALOG_CANCEL"] = "Zrušiť"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Vypnúť blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikovať"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicitný komentár"; -Blockly.Msg["ENABLE_BLOCK"] = "Povoliť blok"; -Blockly.Msg["EXPAND_ALL"] = "Rozvinúť bloky"; -Blockly.Msg["EXPAND_BLOCK"] = "Rozvinúť blok"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Vonkajšie vstupy"; -Blockly.Msg["HELP"] = "Pomoc"; -Blockly.Msg["INLINE_INPUTS"] = "Riadkové vstupy"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "prázdny zoznam"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vráti zoznam nulovej dĺžky, ktorý neobsahuje žiadne prvky."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "zoznam"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Pridaj, odstráň alebo zmeň poradie v tomto zoznamovom bloku."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "vytvor zoznam s"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Pridaj prvok do zoznamu."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Vytvor zoznam s ľubovoľným počtom prvkov."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prvý"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od konca"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "zisti"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "zisti a odstráň"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "posledný"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "náhodný"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "odstráň"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vráti počiatočný prvok zoznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vráti prvok na určenej pozícii v zozname."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vráti posledný prvok zoznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vráti náhodný prvok zoznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Odstráni a vráti prvý prvok v zozname."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Odstráni a vráti prvok z určenej pozície v zozname."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Odstráni a vráti posledný prvok v zozname."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Odstráni a vráti náhodný prvok v zozname."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Odstráni prvý prvok v zozname."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Odstráni prvok na určenej pozícii v zozname."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Odstráni posledný prvok v zozname."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Odstráni náhodný prvok v zozname."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "po # od konca"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "po #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "po koniec"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Získať podzoznam od začiatku"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "Získať podzoznam od # od konca"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "získať podzoznam od #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Skopíruje určený úsek zoznamu."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je posledný prvok."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je počiatočný prvok."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "nájdi prvý výskyt prvku"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "nájdi posledný výskyt prvku"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vráti index prvého/posledného výskytu prvku v zozname. Ak sa nič nenašlo, vráti %1."; -Blockly.Msg["LISTS_INLIST"] = "v zozname"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prázdny"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vráti pravda, ak je zoznam prázdny."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "dĺžka %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vráti dĺžku zoznamu"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "vytvor zoznam s prvkom %1 opakovaným %2 krát"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Vytvorí zoznam s niekoľkými rovnakými prvkami s danou hodnotou."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrátiť %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrátiť kópiu zoznamu."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ako"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "vložiť na"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "nastaviť"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Vsunie prvok na začiatok zoznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Vsunie prvok na určenú pozíciu v zozname."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Pripojí prvok na koniec zoznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Vsunie prvok na náhodné miesto v zozname."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Nastaví prvý prvok v zozname."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Nastaví prvok na určenej pozícii v zozname."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Nastaví posledný prvok v zozname."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Nastaví posledný prvok v zozname."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "Vzostupne"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "Zostupne"; -Blockly.Msg["LISTS_SORT_TITLE"] = "zoradiť %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Zoradiť kópiu zoznamu."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecedne, ignorovať veľkosť písmen"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numericky"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abecedne"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "vytvoriť zoznam z textu"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "vytvoriť text zo zoznamu"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Spojiť zoznam textov do jedného textu s oddeľovačmi."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Rozdelenie textu do zoznamu textov, lámanie na oddeľovačoch."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "s oddeľovačom"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "nepravda"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vráť buď hodnotu pravda alebo nepravda."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "pravda"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vráť hodnotu pravda, ak sú vstupy rovnaké."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vráť hodnotu pravda ak prvý vstup je väčší než druhý."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vráť hodnotu pravda ak prvý vstup je väčší alebo rovný druhému."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vráť hodnotu pravda, ak prvý vstup je menší než druhý."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vráť hodnotu pravda ak prvý vstup je menší alebo rovný druhému."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vráť hodnotu pravda, ak vstupy nie sú rovnaké."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nie je %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vráti hodnotu pravda, ak je vstup nepravda. Vráti hodnotu nepravda ak je vstup pravda."; -Blockly.Msg["LOGIC_NULL"] = "nič"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vráti hodnotu nula."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "a"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "alebo"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vráť hodnotu pravda, ak sú vstupy pravdivé."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vráť hodnotu pravda, ak je aspoň jeden vstup pravda."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ak nepravda"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ak pravda"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Skontroluj podmienku testom. Ak je podmienka pravda, vráť hodnotu \"ak pravda\", inak vráť hodnotu \"ak nepravda\"."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vráť súčet dvoch čísel."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vráť podiel dvoch čísel."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vráť rozdiel dvoch čísel."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vráť súčin dvoch čísel."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vráť prvé číslo umocnené druhým."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vráťte arktangent bodu (X, Y) v stupňoch od -180 do 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "zmeniť %1 o %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Pridaj číslo do premennej \"%1\"."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant‎"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vráť jednu zo zvyčajných konštánt: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), alebo ∞ (nekonečno)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "obmedz %1 od %2 do %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Obmedzí číslo do zadaných hraníc (vrátane)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je deliteľné"; -Blockly.Msg["MATH_IS_EVEN"] = "je párne"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "je záporné"; -Blockly.Msg["MATH_IS_ODD"] = "je nepárne"; -Blockly.Msg["MATH_IS_POSITIVE"] = "je kladné"; -Blockly.Msg["MATH_IS_PRIME"] = "je prvočíslo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Skontroluj či je číslo párne, nepárne, celé, kladné, záporné alebo deliteľné určitým číslom. Vráť hodnotu pravda alebo nepravda."; -Blockly.Msg["MATH_IS_WHOLE"] = "je celé číslo"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "zvyšok po delení %1 + %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vráť zvyšok po delení jedného čísla druhým."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Číslo."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "priemer zoznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "najväčšie v zozname"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medián zoznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "najmenšie v zozname"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "najčastejšie v zozname"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "náhodný prvok zoznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "smerodajná odchýlka zoznamu"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "súčet zoznamu"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vráť aritmetický priemer čísel v zozname."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vrátiť najväčšie číslo v zozname."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vráť medián čísel v zozname."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vrátiť najmenšie číslo v zozname."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vrátiť najčastejší prvok v zozname."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vráť náhodne zvolený prvok zoznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vráť smeroddajnú odchýlku zoznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vráť súčet všetkých čísel v zozname."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "náhodné číslo od 0 do 1"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vráť náhodné číslo z intervalu 0.0 (vrátane) až 1.0."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "náhodné celé číslo od %1 do %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vráť náhodné celé číslo z určeného intervalu (vrátane)."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokrúhli"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokrúhli nadol"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokrúhli nahor"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokrúhli číslo nahor alebo nadol."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolútna hodnota"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "druhá odmocnina"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vráť absolútnu hodnotu čísla."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vráť e umocnené číslom."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vráť prirodzený logaritmus čísla."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vráť logaritmus čísla so základom 10."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vráť opačné číslo."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vráť 10 umocnené číslom."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vráť druhú odmocninu čísla."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vráť arkus kosínus čísla."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vráť arkus sínus čísla."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vráť arkus tangens čísla."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vráť kosínus uhla (v stupňoch)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vráť sínus uhla (v stupňoch)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vráť tangens uhla (v stupňoch)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "vytvoriť farbu premennej"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Vytvoriť číselnú premennú..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Vytvoriť reťazovú premennú..."; -Blockly.Msg["NEW_VARIABLE"] = "Vytvoriť premennú..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Názov novej premennej:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "nový typ premennej"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "povoliť príkazy"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://sk.wikipedia.org/wiki/Podprogram"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Spustí používateľom definovanú funkciu '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://sk.wikipedia.org/wiki/Podprogram"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Spustí používateľom definovanú funkciu '%1' a použije jej výstup."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Vytvoriť '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Doplň, čo robí táto funkcia..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "urob niečo"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "na"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Vytvorí funciu bez výstupu."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vrátiť"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Vytvorí funkciu s výstupom."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozornenie: Táto funkcia má duplicitné parametre."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Zvýrazniť definíciu funkcie"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ak je hodnota pravda, tak vráti druhú hodnotu."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Upozornenie: Tento blok môže byť len vo vnútri funkcie."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "názov vstupu:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Pridať vstup do funkcie."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "vstupy"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Pridať, odstrániť alebo zmeniť poradie vstupov tejto funkcie."; -Blockly.Msg["REDO"] = "Znova"; -Blockly.Msg["REMOVE_COMMENT"] = "Odstrániť komentár"; -Blockly.Msg["RENAME_VARIABLE"] = "Premenovať premennú..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Premenovať všetky premenné '%1' na:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "do %1 pridaj text %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Pridaj určitý text do premennej '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na malé písmená"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Veľké Začiatočné Písmená"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na VEĽKÉ PÍSMENÁ"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vráť kópiu textu s inou veľkosťou písmen."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "zisti prvé písmeno"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "zisti # písmeno od konca"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "zisti písmeno #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "zisti posledné písmeno"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "vyber náhodné písmeno"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "v texte %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vráti písmeno na určenej pozícii."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "počet výskytov %1 v %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Počet výskytov textu nachádzajúcom sa v inom texte."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Pridaj prvok do textu."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "spoj"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Pridaj, odstráň alebo zmeň poradie oddielov v tomto textovom bloku."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "po # písmeno od konca"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "po písmeno #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "po koniec"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "v texte"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "vyber podreťazec od začiatku"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "vyber podreťazec od # písmena od konca"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "vyber podreťazec od písmena #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Vráti určenú časť textu."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "nájdi prvý výskyt textu"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "nájdi posledný výskyt textu"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "v texte %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vráti index prvého/posledného výskytu prvého textu v druhom texte. Ak nenájde, vráti %1."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prázdny"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vráti hodnotu pravda, ak zadaný text je prázdny."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "vytvor text z"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Vytvor text spojením určitého počtu prvkov."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "dĺžka %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vráti počet písmen (s medzerami) v zadanom texte."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "píš %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Napíš zadaný text, číslo alebo hodnotu."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Výzva pre používateľa na zadanie čísla."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Výzva pre používateľa na zadanie textu."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "výzva na zadanie čísla so správou"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "výzva za zadanie textu so správou"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zameniť %1 za %2 v reťazci %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zameniť všetky výskyty textu za iný text."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "text odzadu %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Obrátiť poradie písmen v texte."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Písmeno, slovo alebo riadok textu."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "odstráň medzery z oboch strán"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "odstráň medzery z ľavej strany"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "odstráň medzery z pravej strany"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vráť kópiu textu bez medzier na jednom alebo oboch koncoch."; -Blockly.Msg["TODAY"] = "Dnes"; -Blockly.Msg["UNDO"] = "Späť"; -Blockly.Msg["UNNAMED_KEY"] = "nepomenované"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "prvok"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Vytvoriť \"nastaviť %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vráti hodnotu tejto premennej."; -Blockly.Msg["VARIABLES_SET"] = "nastaviť %1 na %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Vytvoriť \"získať %1\""; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Nastaví túto premennú, aby sa rovnala vstupu."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Premenná s názvom %1 už existuje."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Premenná s názvom '%1' už existuje pre inú premennú typu '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Pracovisko Bloskly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Povedz niečo..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Pridať komentár"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nie je možné zmazať premennú „%1“, pretože je súčasťou definície funkcie „%2“"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Zmeniť hodnotu:"; +Blockly.Msg["CLEAN_UP"] = "Narovnať bloky"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Zrútené bloky obsahujú varovanie."; +Blockly.Msg["COLLAPSE_ALL"] = "Zvinúť bloky"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Zvinúť blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "farba 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "farba 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "pomer"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "zmiešať"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Zmieša dve farby v danom pomere (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Zvoľte farbu z palety."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "náhodná farba"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zvoliť farbu náhodne."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "modrá"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelená"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "červená"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ofarbiť s"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Vytvoriť farbu pomocou zadaného množstva červenej, zelenej a modrej. Množstvo musí byť medzi 0 a 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "opustiť slučku"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "prejdi na nasledujúce opakovanie slučky"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Opustiť túto slučku."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Vynechať zvyšok tejto slučky a pokračovať ďalším opakovaním."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozornenie: Tento blok sa môže používať len v rámci slučky."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "pre každý prvok %1 v zozname %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Pre každý prvok v zozname priraď jeho hodnotu do premenej '%1' a vykonaj príkazy."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "počítať s %1 od %2 do %3 o %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Nechá premennú '%1' nadobúdať hodnoty od začiatočného čísla po konečné s daným medzikrokom a vykoná zadané bloky."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Pridať podmienku k \"ak\" bloku."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Pridať poslednú záchytnú podmienku k \"ak\" bloku."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Pridať, odstrániť alebo zmeniť poradie oddielov tohto \"ak\" bloku."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "inak"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inak ak"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ak"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Ak je hodnota pravda, vykonaj príkazy."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Ak je hodnota pravda, vykonaj príkazy v prvom bloku. Inak vykonaj príkazy v druhom bloku."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku. Ak ani jedna hodnota nie je pravda, vykonaj príkazy v poslednom bloku."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "rob"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "opakuj %1 krát"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Opakuj určité príkazy viackrát."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "opakuj kým nebude"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "opakuj kým"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Kým je hodnota nepravdivá, vykonávaj príkazy."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Kým je hodnota pravdivá, vykonávaj príkazy."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Zmazať všetkých %1 dielcov?"; +Blockly.Msg["DELETE_BLOCK"] = "Odstrániť blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Odstrániť premennú '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Odstrániť %1 použití premennej '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Odstrániť %1 blokov"; +Blockly.Msg["DIALOG_CANCEL"] = "Zrušiť"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Vypnúť blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplikovať"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicitný komentár"; +Blockly.Msg["ENABLE_BLOCK"] = "Povoliť blok"; +Blockly.Msg["EXPAND_ALL"] = "Rozvinúť bloky"; +Blockly.Msg["EXPAND_BLOCK"] = "Rozvinúť blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Vonkajšie vstupy"; +Blockly.Msg["HELP"] = "Pomoc"; +Blockly.Msg["INLINE_INPUTS"] = "Riadkové vstupy"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "prázdny zoznam"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vráti zoznam nulovej dĺžky, ktorý neobsahuje žiadne prvky."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "zoznam"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Pridaj, odstráň alebo zmeň poradie v tomto zoznamovom bloku."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "vytvor zoznam s"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Pridaj prvok do zoznamu."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Vytvor zoznam s ľubovoľným počtom prvkov."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prvý"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# od konca"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "zisti"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "zisti a odstráň"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "posledný"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "náhodný"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "odstráň"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vráti počiatočný prvok zoznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vráti prvok na určenej pozícii v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vráti posledný prvok zoznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vráti náhodný prvok zoznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Odstráni a vráti prvý prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Odstráni a vráti prvok z určenej pozície v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Odstráni a vráti posledný prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Odstráni a vráti náhodný prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Odstráni prvý prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Odstráni prvok na určenej pozícii v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Odstráni posledný prvok v zozname."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Odstráni náhodný prvok v zozname."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "po # od konca"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "po #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "po koniec"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "Získať podzoznam od začiatku"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "Získať podzoznam od # od konca"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "získať podzoznam od #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Skopíruje určený úsek zoznamu."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je posledný prvok."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je počiatočný prvok."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "nájdi prvý výskyt prvku"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "nájdi posledný výskyt prvku"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vráti index prvého/posledného výskytu prvku v zozname. Ak sa nič nenašlo, vráti %1."; +Blockly.Msg["LISTS_INLIST"] = "v zozname"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prázdny"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vráti pravda, ak je zoznam prázdny."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dĺžka %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vráti dĺžku zoznamu"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "vytvor zoznam s prvkom %1 opakovaným %2 krát"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Vytvorí zoznam s niekoľkými rovnakými prvkami s danou hodnotou."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrátiť %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrátiť kópiu zoznamu."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ako"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "vložiť na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "nastaviť"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Vsunie prvok na začiatok zoznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Vsunie prvok na určenú pozíciu v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Pripojí prvok na koniec zoznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Vsunie prvok na náhodné miesto v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Nastaví prvý prvok v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Nastaví prvok na určenej pozícii v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Nastaví posledný prvok v zozname."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Nastaví posledný prvok v zozname."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "Vzostupne"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "Zostupne"; +Blockly.Msg["LISTS_SORT_TITLE"] = "zoradiť %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Zoradiť kópiu zoznamu."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecedne, ignorovať veľkosť písmen"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numericky"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abecedne"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "vytvoriť zoznam z textu"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "vytvoriť text zo zoznamu"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Spojiť zoznam textov do jedného textu s oddeľovačmi."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Rozdelenie textu do zoznamu textov, lámanie na oddeľovačoch."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "s oddeľovačom"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "nepravda"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vráť buď hodnotu pravda alebo nepravda."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "pravda"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vráť hodnotu pravda, ak sú vstupy rovnaké."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vráť hodnotu pravda ak prvý vstup je väčší než druhý."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vráť hodnotu pravda ak prvý vstup je väčší alebo rovný druhému."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vráť hodnotu pravda, ak prvý vstup je menší než druhý."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vráť hodnotu pravda ak prvý vstup je menší alebo rovný druhému."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vráť hodnotu pravda, ak vstupy nie sú rovnaké."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nie je %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vráti hodnotu pravda, ak je vstup nepravda. Vráti hodnotu nepravda ak je vstup pravda."; +Blockly.Msg["LOGIC_NULL"] = "nič"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vráti hodnotu nula."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "a"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "alebo"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vráť hodnotu pravda, ak sú vstupy pravdivé."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vráť hodnotu pravda, ak je aspoň jeden vstup pravda."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ak nepravda"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ak pravda"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Skontroluj podmienku testom. Ak je podmienka pravda, vráť hodnotu \"ak pravda\", inak vráť hodnotu \"ak nepravda\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vráť súčet dvoch čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vráť podiel dvoch čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vráť rozdiel dvoch čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vráť súčin dvoch čísel."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vráť prvé číslo umocnené druhým."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vráťte arktangent bodu (X, Y) v stupňoch od -180 do 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "zmeniť %1 o %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Pridaj číslo do premennej \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant‎"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vráť jednu zo zvyčajných konštánt: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), alebo ∞ (nekonečno)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "obmedz %1 od %2 do %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Obmedzí číslo do zadaných hraníc (vrátane)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je deliteľné"; +Blockly.Msg["MATH_IS_EVEN"] = "je párne"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je záporné"; +Blockly.Msg["MATH_IS_ODD"] = "je nepárne"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je kladné"; +Blockly.Msg["MATH_IS_PRIME"] = "je prvočíslo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Skontroluj či je číslo párne, nepárne, celé, kladné, záporné alebo deliteľné určitým číslom. Vráť hodnotu pravda alebo nepravda."; +Blockly.Msg["MATH_IS_WHOLE"] = "je celé číslo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "zvyšok po delení %1 + %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vráť zvyšok po delení jedného čísla druhým."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Číslo."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "priemer zoznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "najväčšie v zozname"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medián zoznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "najmenšie v zozname"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "najčastejšie v zozname"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "náhodný prvok zoznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "smerodajná odchýlka zoznamu"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "súčet zoznamu"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vráť aritmetický priemer čísel v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vrátiť najväčšie číslo v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vráť medián čísel v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vrátiť najmenšie číslo v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vrátiť najčastejší prvok v zozname."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vráť náhodne zvolený prvok zoznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vráť smeroddajnú odchýlku zoznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vráť súčet všetkých čísel v zozname."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "náhodné číslo od 0 do 1"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vráť náhodné číslo z intervalu 0.0 (vrátane) až 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "náhodné celé číslo od %1 do %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vráť náhodné celé číslo z určeného intervalu (vrátane)."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokrúhli"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokrúhli nadol"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokrúhli nahor"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokrúhli číslo nahor alebo nadol."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolútna hodnota"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "druhá odmocnina"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vráť absolútnu hodnotu čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vráť e umocnené číslom."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vráť prirodzený logaritmus čísla."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vráť logaritmus čísla so základom 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vráť opačné číslo."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vráť 10 umocnené číslom."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vráť druhú odmocninu čísla."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vráť arkus kosínus čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vráť arkus sínus čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vráť arkus tangens čísla."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vráť kosínus uhla (v stupňoch)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vráť sínus uhla (v stupňoch)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vráť tangens uhla (v stupňoch)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "vytvoriť farbu premennej"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Vytvoriť číselnú premennú..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Vytvoriť reťazovú premennú..."; +Blockly.Msg["NEW_VARIABLE"] = "Vytvoriť premennú..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Názov novej premennej:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "nový typ premennej"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "povoliť príkazy"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://sk.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Spustí používateľom definovanú funkciu '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://sk.wikipedia.org/wiki/Podprogram"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Spustí používateľom definovanú funkciu '%1' a použije jej výstup."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Vytvoriť '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Doplň, čo robí táto funkcia..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "urob niečo"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "na"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Vytvorí funciu bez výstupu."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vrátiť"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Vytvorí funkciu s výstupom."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozornenie: Táto funkcia má duplicitné parametre."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Zvýrazniť definíciu funkcie"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ak je hodnota pravda, tak vráti druhú hodnotu."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Upozornenie: Tento blok môže byť len vo vnútri funkcie."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "názov vstupu:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Pridať vstup do funkcie."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "vstupy"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Pridať, odstrániť alebo zmeniť poradie vstupov tejto funkcie."; +Blockly.Msg["REDO"] = "Znova"; +Blockly.Msg["REMOVE_COMMENT"] = "Odstrániť komentár"; +Blockly.Msg["RENAME_VARIABLE"] = "Premenovať premennú..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Premenovať všetky premenné '%1' na:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "do %1 pridaj text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Pridaj určitý text do premennej '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "na malé písmená"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "na Veľké Začiatočné Písmená"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "na VEĽKÉ PÍSMENÁ"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vráť kópiu textu s inou veľkosťou písmen."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "zisti prvé písmeno"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "zisti # písmeno od konca"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "zisti písmeno #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "zisti posledné písmeno"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "vyber náhodné písmeno"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "v texte %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vráti písmeno na určenej pozícii."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "počet výskytov %1 v %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Počet výskytov textu nachádzajúcom sa v inom texte."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Pridaj prvok do textu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "spoj"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Pridaj, odstráň alebo zmeň poradie oddielov v tomto textovom bloku."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "po # písmeno od konca"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "po písmeno #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "po koniec"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "v texte"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "vyber podreťazec od začiatku"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "vyber podreťazec od # písmena od konca"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "vyber podreťazec od písmena #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Vráti určenú časť textu."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "nájdi prvý výskyt textu"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "nájdi posledný výskyt textu"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "v texte %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vráti index prvého/posledného výskytu prvého textu v druhom texte. Ak nenájde, vráti %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prázdny"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vráti hodnotu pravda, ak zadaný text je prázdny."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "vytvor text z"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Vytvor text spojením určitého počtu prvkov."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dĺžka %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vráti počet písmen (s medzerami) v zadanom texte."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "píš %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Napíš zadaný text, číslo alebo hodnotu."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Výzva pre používateľa na zadanie čísla."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Výzva pre používateľa na zadanie textu."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "výzva na zadanie čísla so správou"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "výzva za zadanie textu so správou"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zameniť %1 za %2 v reťazci %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zameniť všetky výskyty textu za iný text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "text odzadu %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Obrátiť poradie písmen v texte."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Písmeno, slovo alebo riadok textu."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "odstráň medzery z oboch strán"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "odstráň medzery z ľavej strany"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "odstráň medzery z pravej strany"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vráť kópiu textu bez medzier na jednom alebo oboch koncoch."; +Blockly.Msg["TODAY"] = "Dnes"; +Blockly.Msg["UNDO"] = "Späť"; +Blockly.Msg["UNNAMED_KEY"] = "nepomenované"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "prvok"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Vytvoriť \"nastaviť %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vráti hodnotu tejto premennej."; +Blockly.Msg["VARIABLES_SET"] = "nastaviť %1 na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Vytvoriť \"získať %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Nastaví túto premennú, aby sa rovnala vstupu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Premenná s názvom %1 už existuje."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Premenná s názvom '%1' už existuje pre inú premennú typu '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Pracovisko Bloskly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Povedz niečo..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/skr-arab.js b/msg/js/skr-arab.js index c540449daa9..c10cf23169c 100644 --- a/msg/js/skr-arab.js +++ b/msg/js/skr-arab.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "تبصرہ کرو"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ویلیو تبدیل کرو:"; -Blockly.Msg["CLEAN_UP"] = "بلاک صاف کرو"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "بلاک کٹھے کرو"; -Blockly.Msg["COLLAPSE_BLOCK"] = "بلا ک کٹھے کرو"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "مرکب"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "بنا ترتيب رنگ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "نیلا"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ساوا"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "رتا"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "نال رن٘گ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "گھیرے کنوں ٻاہر نکلݨ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "وکھرا"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ٻیا اگر"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "جے"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "کرو"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تائیں دہرائے"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "بھلا %1 بلاکاں کوں مٹاؤں؟"; -Blockly.Msg["DELETE_BLOCK"] = "بلاک مٹاؤ"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 بلاکاں کوں مٹاؤ"; -Blockly.Msg["DIALOG_CANCEL"] = "منسوخ"; -Blockly.Msg["DIALOG_OK"] = "ٹھیک ہے"; -Blockly.Msg["DISABLE_BLOCK"] = "بلاک ہٹاؤ"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ڈپلیکیٹ"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "بلاک فعال کرو"; -Blockly.Msg["EXPAND_ALL"] = "بلاکوں کوں کھنڈاؤ"; -Blockly.Msg["EXPAND_BLOCK"] = "بلاک کھنڈاؤ"; -Blockly.Msg["EXTERNAL_INPUTS"] = "باہرلے انپٹ"; -Blockly.Msg["HELP"] = "مدد"; -Blockly.Msg["INLINE_INPUTS"] = "ان لائن ان پٹ"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "خالی تندیر بݨاؤ"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "فہرست"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "پہلا"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# چھیکڑ کنوں"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "گھنو"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گھنو تے ہٹاؤ"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "چھیکڑی"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "قُݨے نال"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ہٹاؤ"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "فہرست وچ"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی ہے"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "بطور"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "تے درج کرو"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "سیٹ"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "چڑھدا ہویا"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "لہندا ہویا"; -Blockly.Msg["LISTS_SORT_TITLE"] = "سارٹ کرو%1%2%3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "عددی"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "الف بے دی"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "غلط"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سچ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 کائنی"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "کوئی وی کائنی"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "اتے"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ٹیسٹ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر کوڑ ہے"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر سچ ہے"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "جفت ہے"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی ہے"; -Blockly.Msg["MATH_IS_ODD"] = "طاق ہے"; -Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت ہے"; -Blockly.Msg["MATH_IS_PRIME"] = "مفرد ہے"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "مکمل ہے"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ہک عدد"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "فہرست دی اوسط"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "لسٹ وچوں سب توں ودھ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "لسٹ وچوں سب توں گھٹ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "لسٹ دا مجموعہ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "مربعی جذر"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "متغیر بݨاؤ۔۔۔"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "نواں متغیر ناں:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "نال:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "نال:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "کوں"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "واپس آ ونڄو"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ان پُٹ ناں:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ولدا کرو"; -Blockly.Msg["REMOVE_COMMENT"] = "رائے مٹاؤ"; -Blockly.Msg["RENAME_VARIABLE"] = "متغیر دا ولدا ناں رکھو۔۔۔"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "پہلا حرف گھنو"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# حرف گھنو"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "چھیکڑی حرف گھنو"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "شامل تھیوو"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ٹیکسٹ وچ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی ہے"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 دی لمباݨ"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 چھاپو"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "اڄ"; -Blockly.Msg["UNDO"] = "واپس"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "آئٹم"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' نامی متغیر پہلے موجود ہے۔"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "تبصرہ کرو"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ویلیو تبدیل کرو:"; +Blockly.Msg["CLEAN_UP"] = "بلاک صاف کرو"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "بلاک کٹھے کرو"; +Blockly.Msg["COLLAPSE_BLOCK"] = "بلا ک کٹھے کرو"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نسبت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "مرکب"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "بنا ترتيب رنگ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "نیلا"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ساوا"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "رتا"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "نال رن٘گ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "گھیرے کنوں ٻاہر نکلݨ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "وکھرا"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ٻیا اگر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "جے"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "کرو"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تائیں دہرائے"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "بھلا %1 بلاکاں کوں مٹاؤں؟"; +Blockly.Msg["DELETE_BLOCK"] = "بلاک مٹاؤ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 بلاکاں کوں مٹاؤ"; +Blockly.Msg["DIALOG_CANCEL"] = "منسوخ"; +Blockly.Msg["DIALOG_OK"] = "ٹھیک ہے"; +Blockly.Msg["DISABLE_BLOCK"] = "بلاک ہٹاؤ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ڈپلیکیٹ"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "بلاک فعال کرو"; +Blockly.Msg["EXPAND_ALL"] = "بلاکوں کوں کھنڈاؤ"; +Blockly.Msg["EXPAND_BLOCK"] = "بلاک کھنڈاؤ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "باہرلے انپٹ"; +Blockly.Msg["HELP"] = "مدد"; +Blockly.Msg["INLINE_INPUTS"] = "ان لائن ان پٹ"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "خالی تندیر بݨاؤ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "فہرست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "پہلا"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# چھیکڑ کنوں"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "گھنو"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "گھنو تے ہٹاؤ"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "چھیکڑی"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "قُݨے نال"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ہٹاؤ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "فہرست وچ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 خالی ہے"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "بطور"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "تے درج کرو"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "سیٹ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "چڑھدا ہویا"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "لہندا ہویا"; +Blockly.Msg["LISTS_SORT_TITLE"] = "سارٹ کرو%1%2%3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "عددی"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "الف بے دی"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "غلط"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سچ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 کائنی"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "کوئی وی کائنی"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "اتے"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ٹیسٹ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر کوڑ ہے"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگر سچ ہے"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "جفت ہے"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "منفی ہے"; +Blockly.Msg["MATH_IS_ODD"] = "طاق ہے"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مثبت ہے"; +Blockly.Msg["MATH_IS_PRIME"] = "مفرد ہے"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "مکمل ہے"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ہک عدد"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "فہرست دی اوسط"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "لسٹ وچوں سب توں ودھ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "لسٹ وچوں سب توں گھٹ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "لسٹ دا مجموعہ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مطلق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "مربعی جذر"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "متغیر بݨاؤ۔۔۔"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نواں متغیر ناں:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "نال:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "نال:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "کوں"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "واپس آ ونڄو"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ان پُٹ ناں:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ولدا کرو"; +Blockly.Msg["REMOVE_COMMENT"] = "رائے مٹاؤ"; +Blockly.Msg["RENAME_VARIABLE"] = "متغیر دا ولدا ناں رکھو۔۔۔"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "پہلا حرف گھنو"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# حرف گھنو"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "چھیکڑی حرف گھنو"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "شامل تھیوو"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ٹیکسٹ وچ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 خالی ہے"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 دی لمباݨ"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 چھاپو"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "اڄ"; +Blockly.Msg["UNDO"] = "واپس"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "آئٹم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' نامی متغیر پہلے موجود ہے۔"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sl.js b/msg/js/sl.js index 2116fcbf50e..3ca6ca686b1 100644 --- a/msg/js/sl.js +++ b/msg/js/sl.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ni mogoče izbrisati spremenljivke »%1«, ker je uporabljena v definiciji funkcije »%2«."; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Spremeni vrednost:"; -Blockly.Msg["CLEAN_UP"] = "Ponastavi bloke"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Skrčeni bloki vsebujejo opozorila."; -Blockly.Msg["COLLAPSE_ALL"] = "Skrči bloke"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Skrči blok"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "barva 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "barva 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "razmerje"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "mešanica"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Zmeša dve barvi v določene razmerju (0,0 – 1,0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sl.wikipedia.org/wiki/Barva"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izberite barvo s palete."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "naključna barva"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Izberite naključno barvo."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "modra"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "zelena"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "rdeča"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "določena barva"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ustvari barvo z določeno količino rdeče, zelene in modre. Vse vrednosti morajo biti med 0 in 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "prekini zanko"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nadaljuj z naslednjo ponovitvijo zanke"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Prekine vsebujočo zanko."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči preostanek te zanke in nadaljuje z naslednjo ponovitvijo."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Pozor: Ta blok lahko uporabite znotraj zanke samo enkrat."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za vsak element %1 v seznamu %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za vsak element v seznamu nastavi spremenljivko »%1« na ta element. Pri tem se izvedejo določeni stavki."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; -Blockly.Msg["CONTROLS_FOR_TITLE"] = "štej s/z %1 od %2 do %3 po %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Vrednost spremenljivke »%1« se v določenem koraku spreminja od začetnega do končnega števila. Pri tem se izvedejo določeni bloki."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodajte bloku »če« pogoj."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodajte bloku »če« končni pogoj."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodajte, odstranite ali spremenite vrstni red odsekov za ponovno nastavitev bloka »če«."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sicer"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sicer če"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "če"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Če je vrednost resnična, izvedi določene stavke."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Če je vrednost resnična, izvedi prvo skupino stavkov. Sicer izvedi drugo skupino stavkov."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov. Če ni resnična nobena od vrednosti, izvedi zadnjo skupino stavkov."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://sl.wikipedia.org/wiki/Zanka_for"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izvedi"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1-krat"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Določeni stavki se izvedejo večkrat."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljaj, dokler ni"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljaj, dokler"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Določeni stavki se izvajajo, dokler je vrednost neresnična."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Določeni stavki se izvajajo, dokler je vrednost resnična."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Izbrišem vse bloke (%1)?"; -Blockly.Msg["DELETE_BLOCK"] = "Izbriši blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Izbriši spremenljivko »%1«"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Izbrišem %1 uporab spremenljivke »%2«?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Izbriši bloke (%1)"; -Blockly.Msg["DIALOG_CANCEL"] = "Prekliči"; -Blockly.Msg["DIALOG_OK"] = "V redu"; -Blockly.Msg["DISABLE_BLOCK"] = "Onemogoči blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Podvoji"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Podvoji komentar"; -Blockly.Msg["ENABLE_BLOCK"] = "Omogoči blok"; -Blockly.Msg["EXPAND_ALL"] = "Razširi bloke"; -Blockly.Msg["EXPAND_BLOCK"] = "Razširi blok"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Zunanji vnosi"; -Blockly.Msg["HELP"] = "Pomoč"; -Blockly.Msg["INLINE_INPUTS"] = "Vrstični vnosi"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ustvari prazen seznam"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vrne seznam dolžine 0, ki ne vsebuje nobenih podatkovnih zapisov."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "seznam"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Doda, odstrani ali spremeni vrstni red blokov seznama."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ustvari seznam iz"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Doda element v seznam."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ustvari seznam s poljubnim številom elementov."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prvo mesto"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "mesto št. od konca"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "št."; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "vrni"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "odstrani in vrni"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "zadnje mesto"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "naključno mesto"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "odstrani"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vrne prvi element seznama."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vrne element na določenem mestu v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vrne zadnji element seznama."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vrne naključni element seznama."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Odstrani in vrne prvi element seznama."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Odstrani in vrne element na določenem mestu v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Odstrani in vrne zadnji element seznama."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Odstrani in vrne naključni element seznama."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Odstrani prvi element seznama."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Odstrani element na določenem mestu v seznamu."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Odstrani zadnji element seznama."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Odstrani naključni element seznama."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do mesta št. od konca"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do mesta št."; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do zadnjega mesta"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ustvari podseznam od prvega mesta"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "ustvari podseznam od mesta št. od konca"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "ustvari podseznam od mesta št."; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ustvari kopijo določenega dela seznama."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Zadnji element je št. %1."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Prvi element je št. %1."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "najdi prvo pojavitev elementa"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "najdi zadnjo pojavitev elementa"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vrne mesto (indeks) prve/zadnje pojavitve elementa v seznamu. Če elementa ne najde, vrne %1."; -Blockly.Msg["LISTS_INLIST"] = "v seznamu"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazen"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vrne resnično, če je seznam prazen."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; -Blockly.Msg["LISTS_LENGTH_TITLE"] = "dolžina %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vrne dolžino seznama."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_REPEAT_TITLE"] = "ustvari seznam z elementom %1, ki se ponovi %2-krat"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ustvari seznam iz dane vrednosti z določenim številom ponovitev."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrni %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrne kopijo seznama."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "element"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "vstavi na"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "nastavi na"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Vstavi element na začetek seznama."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Vstavi element na določeno mesto v seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Doda element na konec seznama."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Vstavi element na naključno mesto v seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Nastavi prvi element seznama."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Nastavi element na določenem mestu v seznamu."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Nastavi zadnji element seznama."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Nastavi naključni element seznama."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "naraščajoče"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "padajoče"; -Blockly.Msg["LISTS_SORT_TITLE"] = "uredi %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Uredi kopijo seznama."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecedno, prezri velikost črk"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "številsko"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abecedno"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ustvari seznam iz besedila"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ustvari besedilo iz seznama"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Združi seznam besedil v eno besedilo z ločilom med besedili."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Razdruži besedilo v seznam besedil s prelomom pri vsakem ločilu."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "z ločilom"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "neresnično"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vrne resnično ali neresnično."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "resnično"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vrne resnično, če sta vnosa enaka."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vrne resnično, če je prvi vnos večji od drugega."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vrne resnično, če je prvi vnos večji ali enak drugemu."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vrne resnično, če je prvi vnos manjši od drugega."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vrne resnično, če je prvi vnos manjši ali enak drugemu."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vrne resnično, če vnosa nista enaka."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vrne resnično, če je vnos neresničen. Vrne neresnično, če je vnos resničen."; -Blockly.Msg["LOGIC_NULL"] = "prazno"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vrne prazno."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "in"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; -Blockly.Msg["LOGIC_OPERATION_OR"] = "ali"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vrne resnično, če sta oba vnosa resnična."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vrne resnično, če je vsaj eden od vnosov resničen."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "če neresnično"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "če resnično"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Preveri pogoj v »testu«. Če je pogoj resničen, potem vrne vrednost »če resnično«; sicer vrne vrednost »če neresnično«."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://sl.wikipedia.org/wiki/Aritmetika"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vrne vsoto dveh števil."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vrne količnik dveh števil."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vrne razliko dveh števil."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vrne zmnožek dveh števil."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vrne prvo število na potenco drugega števila."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://sl.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 koordinat X: %1 in Y: %2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vrne arkus tangens točke (X, Y) v stopinjah med −180 in 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Increment_and_decrement_operators"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "spremeni %1 za %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Prišteje število k spremenljivki »%1«."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sl.wikipedia.org/wiki/Matematična_konstanta"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vrne eno izmed pogostih konstant: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707 ...) ali ∞ (neskončno)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "omeji %1 na najmanj %2 in največ %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Omeji število, da bo med določenima (vključenima) mejama."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je deljivo s/z"; -Blockly.Msg["MATH_IS_EVEN"] = "je sodo"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativno"; -Blockly.Msg["MATH_IS_ODD"] = "je liho"; -Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivno"; -Blockly.Msg["MATH_IS_PRIME"] = "je praštevilo"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Preveri, ali je število sodo, liho, praštevilo, celo, pozitivno, negativno ali če je deljivo z določenim številom. Vrne resnično ali neresnično."; -Blockly.Msg["MATH_IS_WHOLE"] = "je celo"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sl.wikipedia.org/wiki/Modulo"; -Blockly.Msg["MATH_MODULO_TITLE"] = "ostanek pri %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vrne ostanek pri deljenju dveh števil."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://sl.wikipedia.org/wiki/%C5%A0tevilo"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Število."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "povprečje seznama"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum seznama"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana seznama"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum seznama"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modus seznama"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "naključni element seznama"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardni odmik seznama"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "vsota seznama"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vrne povprečje (aritmetično sredino) števil v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vrne največje število v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vrne mediano število v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vrne najmanjše število v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vrne seznam najpogostejšega(ih) elementa(-ov) v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vrne naključno število izmed števil v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vrne standardni odmik elementov v seznamu."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vrne vsoto vseh števil v seznamu."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "naključni ulomek"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vrne naključni ulomek med (vključno) 0,0 in 1,0 (izključno)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "naključno število med %1 in %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vrne naključno število med dvema določenima mejama, vključno z mejama."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sl.wikipedia.org/wiki/Zaokro%C5%BEanje"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokroži"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokroži navzdol"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokroži navzgor"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokroži število navzgor ali navzdol."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sl.wikipedia.org/wiki/Kvadratni_koren"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolutno"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni koren"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vrne absolutno vrednost števila."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vrne e na potenco števila."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vrne naravni logaritem števila."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vrne desetiški logaritem števila."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vrne negacijo števila."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vrne 10 na potenco števila."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vrne kvadratni koren števila."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sl.wikipedia.org/wiki/Trigonometrična_funkcija"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vrne arkus kosinus števila."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vrne arkus sinus števila."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vrne arkus tangens števila."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vrne kosinus kota v stopinjah (ne radianih)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vrne sinus kota v stopinjah (ne radianih)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vrne tangens kota v stopinjah (ne radianih)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ustvari spremenljivko barve ..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ustvari spremenljivko števila ..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Ustvari spremenljivko niza ..."; -Blockly.Msg["NEW_VARIABLE"] = "Ustvari spremenljivko ..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove spremenljivke:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Vrsta nove spremenljivke:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "dovoli stavke"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s/z:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://sl.wikipedia.org/wiki/Subrutina"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Izvede uporabniško določeno funkcijo »%1«."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://sl.wikipedia.org/wiki/Subrutina"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Izvede uporabniško funkcijo »%1« in uporabi njen izhod."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s/z:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ustvari »%1«"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opiši funkcijo ..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "nekaj"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "izvedi"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ustvari funkcijo brez izhoda."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vrni"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ustvari funkcijo z izhodom."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Pozor: Ta funkcija ima podvojene parametre."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Označi blok funkcije"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Če je vrednost resnična, vrne drugo vrednost."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Pozor: Ta blok lahko uporabite samo v bloku funkcije."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ime vnosa:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Funkciji doda vnos."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "vnosi"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Doda, odstrani ali spremeni vrstni red vnosov za to funkcijo."; -Blockly.Msg["REDO"] = "Ponovi"; -Blockly.Msg["REMOVE_COMMENT"] = "Odstrani komentar"; -Blockly.Msg["RENAME_VARIABLE"] = "Preimenuj spremenljivko ..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj vse spremenljivke »%1« v:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_APPEND_TITLE"] = "k %1 dodaj besedilo %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Doda besedilo k spremenljivki »%1«."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "v male črke"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "v Velike Začetnice"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "v VELIKE ČRKE"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vrne kopijo besedila v drugi obliki."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "vrni prvo črko"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "vrni črko št. od konca"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "vrni črko št."; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; -Blockly.Msg["TEXT_CHARAT_LAST"] = "vrni zadnjo črko"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "vrni naključno črko"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "v besedilu %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vrne črko na določenem mestu."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "preštej %1 v %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Preštej, kolikokrat se neko besedilo pojavi v drugem besedilu."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Doda element k besedilu."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "združi"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Doda, odstrani ali spremeni vrstni red odsekov za ponovno nastavitev tega bloka besedila."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do črke št. od konca"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do črke št."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do zadnje črke"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "iz besedila"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "vrni podniz od prve črke"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "vrni podniz od črke št. od konca"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "vrni podniz od črke št."; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Vrne določen del besedila."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "najdi prvo pojavitev besedila"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "najdi zadnjo pojavitev besedila"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "v besedilu %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vrne mesto (indeks) prve/zadnje pojavitve drugega besedila v prvem besedilu. Če besedila ne najde, vrne %1."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazno"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vrne resnično, če je določeno besedilo prazno."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ustvari besedilo iz"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ustvari besedilo tako, da združi poljubno število elementov."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; -Blockly.Msg["TEXT_LENGTH_TITLE"] = "dolžina %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vrne število znakov (vključno s presledki) v določenem besedilu."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; -Blockly.Msg["TEXT_PRINT_TITLE"] = "izpiši %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Izpiše določeno besedilo, številko ali drugo vrednost."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Vpraša uporabnika za vnos številke."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Vpraša uporabnika za vnos besedila."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "vprašaj za številko s sporočilom"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "vprašaj za besedilo s sporočilom"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamenjaj %1 z %2 v %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zamenja vse pojavitve besedila v drugem besedilu."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "obrni %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Obrne vrstni red znakov v besedilu."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sl.wikipedia.org/wiki/Niz"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Črka, beseda ali vrstica besedila."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "odstrani presledke z obeh strani"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "odstrani presledke z leve strani"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "odstrani presledke z desne strani"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vrne kopijo besedila z odstranjenimi presledki z ene ali obeh strani."; -Blockly.Msg["TODAY"] = "Danes"; -Blockly.Msg["UNDO"] = "Razveljavi"; -Blockly.Msg["UNNAMED_KEY"] = "nepoimenovano"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ustvari »nastavi %1«"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vrne vrednost spremenljivke."; -Blockly.Msg["VARIABLES_SET"] = "nastavi %1 na %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Ustvari »vrni %1«"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Nastavi, da je vrednost spremenljivke enaka vnosu."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Spremenljivka »%1« že obstaja."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Spremenljivka z imenom »%1« za tip »%2« že obstaja."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklyjev delovni prostor"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Povej nekaj ..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ni mogoče izbrisati spremenljivke »%1«, ker je uporabljena v definiciji funkcije »%2«."; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Spremeni vrednost:"; +Blockly.Msg["CLEAN_UP"] = "Ponastavi bloke"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Skrčeni bloki vsebujejo opozorila."; +Blockly.Msg["COLLAPSE_ALL"] = "Skrči bloke"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Skrči blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "barva 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "barva 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "razmerje"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "mešanica"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Zmeša dve barvi v določene razmerju (0,0 – 1,0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sl.wikipedia.org/wiki/Barva"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izberite barvo s palete."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "naključna barva"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Izberite naključno barvo."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "modra"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelena"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "rdeča"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "določena barva"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ustvari barvo z določeno količino rdeče, zelene in modre. Vse vrednosti morajo biti med 0 in 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "prekini zanko"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nadaljuj z naslednjo ponovitvijo zanke"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Prekine vsebujočo zanko."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči preostanek te zanke in nadaljuje z naslednjo ponovitvijo."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Pozor: Ta blok lahko uporabite znotraj zanke samo enkrat."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za vsak element %1 v seznamu %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za vsak element v seznamu nastavi spremenljivko »%1« na ta element. Pri tem se izvedejo določeni stavki."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "štej s/z %1 od %2 do %3 po %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Vrednost spremenljivke »%1« se v določenem koraku spreminja od začetnega do končnega števila. Pri tem se izvedejo določeni bloki."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodajte bloku »če« pogoj."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodajte bloku »če« končni pogoj."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodajte, odstranite ali spremenite vrstni red odsekov za ponovno nastavitev bloka »če«."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "sicer"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "sicer če"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "če"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Če je vrednost resnična, izvedi določene stavke."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Če je vrednost resnična, izvedi prvo skupino stavkov. Sicer izvedi drugo skupino stavkov."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov. Če ni resnična nobena od vrednosti, izvedi zadnjo skupino stavkov."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://sl.wikipedia.org/wiki/Zanka_for"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izvedi"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1-krat"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Določeni stavki se izvedejo večkrat."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljaj, dokler ni"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljaj, dokler"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Določeni stavki se izvajajo, dokler je vrednost neresnična."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Določeni stavki se izvajajo, dokler je vrednost resnična."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Izbrišem vse bloke (%1)?"; +Blockly.Msg["DELETE_BLOCK"] = "Izbriši blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Izbriši spremenljivko »%1«"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Izbrišem %1 uporab spremenljivke »%2«?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Izbriši bloke (%1)"; +Blockly.Msg["DIALOG_CANCEL"] = "Prekliči"; +Blockly.Msg["DIALOG_OK"] = "V redu"; +Blockly.Msg["DISABLE_BLOCK"] = "Onemogoči blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Podvoji"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Podvoji komentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Omogoči blok"; +Blockly.Msg["EXPAND_ALL"] = "Razširi bloke"; +Blockly.Msg["EXPAND_BLOCK"] = "Razširi blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Zunanji vnosi"; +Blockly.Msg["HELP"] = "Pomoč"; +Blockly.Msg["INLINE_INPUTS"] = "Vrstični vnosi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ustvari prazen seznam"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Vrne seznam dolžine 0, ki ne vsebuje nobenih podatkovnih zapisov."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "seznam"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Doda, odstrani ali spremeni vrstni red blokov seznama."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ustvari seznam iz"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Doda element v seznam."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ustvari seznam s poljubnim številom elementov."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prvo mesto"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "mesto št. od konca"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "št."; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "vrni"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "odstrani in vrni"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "zadnje mesto"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "naključno mesto"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "odstrani"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vrne prvi element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vrne element na določenem mestu v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vrne zadnji element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vrne naključni element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Odstrani in vrne prvi element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Odstrani in vrne element na določenem mestu v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Odstrani in vrne zadnji element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Odstrani in vrne naključni element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Odstrani prvi element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Odstrani element na določenem mestu v seznamu."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Odstrani zadnji element seznama."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Odstrani naključni element seznama."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do mesta št. od konca"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do mesta št."; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do zadnjega mesta"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ustvari podseznam od prvega mesta"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "ustvari podseznam od mesta št. od konca"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "ustvari podseznam od mesta št."; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ustvari kopijo določenega dela seznama."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "Zadnji element je št. %1."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "Prvi element je št. %1."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "najdi prvo pojavitev elementa"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "najdi zadnjo pojavitev elementa"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vrne mesto (indeks) prve/zadnje pojavitve elementa v seznamu. Če elementa ne najde, vrne %1."; +Blockly.Msg["LISTS_INLIST"] = "v seznamu"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazen"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vrne resnično, če je seznam prazen."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dolžina %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vrne dolžino seznama."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ustvari seznam z elementom %1, ki se ponovi %2-krat"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ustvari seznam iz dane vrednosti z določenim številom ponovitev."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrni %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrne kopijo seznama."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "element"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "vstavi na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "nastavi na"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Vstavi element na začetek seznama."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Vstavi element na določeno mesto v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Doda element na konec seznama."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Vstavi element na naključno mesto v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Nastavi prvi element seznama."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Nastavi element na določenem mestu v seznamu."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Nastavi zadnji element seznama."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Nastavi naključni element seznama."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "naraščajoče"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "padajoče"; +Blockly.Msg["LISTS_SORT_TITLE"] = "uredi %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Uredi kopijo seznama."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "abecedno, prezri velikost črk"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "številsko"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "abecedno"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ustvari seznam iz besedila"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ustvari besedilo iz seznama"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Združi seznam besedil v eno besedilo z ločilom med besedili."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Razdruži besedilo v seznam besedil s prelomom pri vsakem ločilu."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "z ločilom"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "neresnično"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vrne resnično ali neresnično."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "resnično"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vrne resnično, če sta vnosa enaka."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vrne resnično, če je prvi vnos večji od drugega."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vrne resnično, če je prvi vnos večji ali enak drugemu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vrne resnično, če je prvi vnos manjši od drugega."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vrne resnično, če je prvi vnos manjši ali enak drugemu."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vrne resnično, če vnosa nista enaka."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ne %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vrne resnično, če je vnos neresničen. Vrne neresnično, če je vnos resničen."; +Blockly.Msg["LOGIC_NULL"] = "prazno"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vrne prazno."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "in"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "ali"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vrne resnično, če sta oba vnosa resnična."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vrne resnično, če je vsaj eden od vnosov resničen."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "če neresnično"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "če resnično"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Preveri pogoj v »testu«. Če je pogoj resničen, potem vrne vrednost »če resnično«; sicer vrne vrednost »če neresnično«."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://sl.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vrne vsoto dveh števil."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vrne količnik dveh števil."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vrne razliko dveh števil."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vrne zmnožek dveh števil."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vrne prvo število na potenco drugega števila."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://sl.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 koordinat X: %1 in Y: %2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Vrne arkus tangens točke (X, Y) v stopinjah med −180 in 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Increment_and_decrement_operators"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "spremeni %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Prišteje število k spremenljivki »%1«."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sl.wikipedia.org/wiki/Matematična_konstanta"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Vrne eno izmed pogostih konstant: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707 ...) ali ∞ (neskončno)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "omeji %1 na najmanj %2 in največ %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Omeji število, da bo med določenima (vključenima) mejama."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je deljivo s/z"; +Blockly.Msg["MATH_IS_EVEN"] = "je sodo"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativno"; +Blockly.Msg["MATH_IS_ODD"] = "je liho"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivno"; +Blockly.Msg["MATH_IS_PRIME"] = "je praštevilo"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Preveri, ali je število sodo, liho, praštevilo, celo, pozitivno, negativno ali če je deljivo z določenim številom. Vrne resnično ali neresnično."; +Blockly.Msg["MATH_IS_WHOLE"] = "je celo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sl.wikipedia.org/wiki/Modulo"; +Blockly.Msg["MATH_MODULO_TITLE"] = "ostanek pri %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vrne ostanek pri deljenju dveh števil."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://sl.wikipedia.org/wiki/%C5%A0tevilo"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Število."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "povprečje seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minimum seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modus seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "naključni element seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardni odmik seznama"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "vsota seznama"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vrne povprečje (aritmetično sredino) števil v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vrne največje število v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vrne mediano število v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vrne najmanjše število v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vrne seznam najpogostejšega(ih) elementa(-ov) v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vrne naključno število izmed števil v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vrne standardni odmik elementov v seznamu."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vrne vsoto vseh števil v seznamu."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "naključni ulomek"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vrne naključni ulomek med (vključno) 0,0 in 1,0 (izključno)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "naključno število med %1 in %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vrne naključno število med dvema določenima mejama, vključno z mejama."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sl.wikipedia.org/wiki/Zaokro%C5%BEanje"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokroži"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokroži navzdol"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokroži navzgor"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokroži število navzgor ali navzdol."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sl.wikipedia.org/wiki/Kvadratni_koren"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolutno"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni koren"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vrne absolutno vrednost števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Vrne e na potenco števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vrne naravni logaritem števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vrne desetiški logaritem števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vrne negacijo števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vrne 10 na potenco števila."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vrne kvadratni koren števila."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sl.wikipedia.org/wiki/Trigonometrična_funkcija"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vrne arkus kosinus števila."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vrne arkus sinus števila."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vrne arkus tangens števila."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vrne kosinus kota v stopinjah (ne radianih)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vrne sinus kota v stopinjah (ne radianih)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vrne tangens kota v stopinjah (ne radianih)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ustvari spremenljivko barve ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ustvari spremenljivko števila ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ustvari spremenljivko niza ..."; +Blockly.Msg["NEW_VARIABLE"] = "Ustvari spremenljivko ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove spremenljivke:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Vrsta nove spremenljivke:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "dovoli stavke"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "s/z:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://sl.wikipedia.org/wiki/Subrutina"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Izvede uporabniško določeno funkcijo »%1«."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://sl.wikipedia.org/wiki/Subrutina"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Izvede uporabniško funkcijo »%1« in uporabi njen izhod."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "s/z:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ustvari »%1«"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opiši funkcijo ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "nekaj"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "izvedi"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ustvari funkcijo brez izhoda."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vrni"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ustvari funkcijo z izhodom."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Pozor: Ta funkcija ima podvojene parametre."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Označi blok funkcije"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Če je vrednost resnična, vrne drugo vrednost."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Pozor: Ta blok lahko uporabite samo v bloku funkcije."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ime vnosa:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Funkciji doda vnos."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "vnosi"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Doda, odstrani ali spremeni vrstni red vnosov za to funkcijo."; +Blockly.Msg["REDO"] = "Ponovi"; +Blockly.Msg["REMOVE_COMMENT"] = "Odstrani komentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Preimenuj spremenljivko ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj vse spremenljivke »%1« v:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_APPEND_TITLE"] = "k %1 dodaj besedilo %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Doda besedilo k spremenljivki »%1«."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "v male črke"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "v Velike Začetnice"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "v VELIKE ČRKE"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vrne kopijo besedila v drugi obliki."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "vrni prvo črko"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "vrni črko št. od konca"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "vrni črko št."; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "vrni zadnjo črko"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "vrni naključno črko"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "v besedilu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vrne črko na določenem mestu."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "preštej %1 v %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Preštej, kolikokrat se neko besedilo pojavi v drugem besedilu."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Doda element k besedilu."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "združi"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Doda, odstrani ali spremeni vrstni red odsekov za ponovno nastavitev tega bloka besedila."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "do črke št. od konca"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "do črke št."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "do zadnje črke"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "iz besedila"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "vrni podniz od prve črke"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "vrni podniz od črke št. od konca"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "vrni podniz od črke št."; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Vrne določen del besedila."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "najdi prvo pojavitev besedila"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "najdi zadnjo pojavitev besedila"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "v besedilu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vrne mesto (indeks) prve/zadnje pojavitve drugega besedila v prvem besedilu. Če besedila ne najde, vrne %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazno"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vrne resnično, če je določeno besedilo prazno."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ustvari besedilo iz"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ustvari besedilo tako, da združi poljubno število elementov."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dolžina %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vrne število znakov (vključno s presledki) v določenem besedilu."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; +Blockly.Msg["TEXT_PRINT_TITLE"] = "izpiši %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Izpiše določeno besedilo, številko ali drugo vrednost."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Vpraša uporabnika za vnos številke."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Vpraša uporabnika za vnos besedila."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "vprašaj za številko s sporočilom"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "vprašaj za besedilo s sporočilom"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamenjaj %1 z %2 v %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zamenja vse pojavitve besedila v drugem besedilu."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "obrni %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Obrne vrstni red znakov v besedilu."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sl.wikipedia.org/wiki/Niz"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Črka, beseda ali vrstica besedila."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "odstrani presledke z obeh strani"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "odstrani presledke z leve strani"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "odstrani presledke z desne strani"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vrne kopijo besedila z odstranjenimi presledki z ene ali obeh strani."; +Blockly.Msg["TODAY"] = "Danes"; +Blockly.Msg["UNDO"] = "Razveljavi"; +Blockly.Msg["UNNAMED_KEY"] = "nepoimenovano"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "element"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ustvari »nastavi %1«"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vrne vrednost spremenljivke."; +Blockly.Msg["VARIABLES_SET"] = "nastavi %1 na %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Ustvari »vrni %1«"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Nastavi, da je vrednost spremenljivke enaka vnosu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Spremenljivka »%1« že obstaja."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Spremenljivka z imenom »%1« za tip »%2« že obstaja."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklyjev delovni prostor"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Povej nekaj ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/smn.js b/msg/js/smn.js index 52508e743c2..66059ca23bb 100644 --- a/msg/js/smn.js +++ b/msg/js/smn.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Lasseet komment"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ij lah máhđulâš sikkođ muttojeijee '%1' tanen ko tot lii uási funktio miäruštâllâm '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Mute áárvu:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ivne 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ivne 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "koskâvuotâ"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "siävuttâs"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Siävvut kyevti ivne koskânis adelum koskâvuođâst (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://smn.wikipedia.org/wiki/Ivne"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Valjii ivne paletist."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "säti-ivne"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Valjii ivne sätioornigist."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "čuovjâd"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ruánáá"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ruopsâd"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ivne, mast lii"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Räähti ivne, mast lii tiätu meeri ruopsâd, ruánáá já čuovjâd. Puoh áárvuh kalgeh leđe 0 já 100 kooskâst."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "mudoi"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mudoi jis"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jis"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "poorgâ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "kiärdut %1 tove"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "kiärdut tassaaš ko"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "kiärdut ton puudâ ko"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Siho muttojeijee '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Sikkop-uv %1 kevttim muttojeijeest '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Jooskâ"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Jyemeehpittá"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Dublikist komment"; -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "Olgoldâs fáluseh"; -Blockly.Msg["HELP"] = "Iše"; -Blockly.Msg["INLINE_INPUTS"] = "Pyevti fálusijd"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listo"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "vuosmuš"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "majemuš"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "sätinálásâš"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "siho"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "listoost"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "epituotâ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tuotâ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ij %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "ij maiden"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "já"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "teikkâ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "testâ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jis epituotâ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jis tuotâ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "mute %1 árvoin %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lasseet áárvu muttojeijen '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "puáhtá jyehiđ lovvoin"; -Blockly.Msg["MATH_IS_EVEN"] = "lii parâlâš"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "lii negatiivlâš"; -Blockly.Msg["MATH_IS_ODD"] = "lii parâttem"; -Blockly.Msg["MATH_IS_POSITIVE"] = "lii positiivlâš"; -Blockly.Msg["MATH_IS_PRIME"] = "lii algâloho"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Täärhist lii-uv nummeer parâlâs, parâttem, algâloho, olesloho, positiivlâš, negatiivlâš, teikkâ jis tom puáhtá jyehiđ nube lovvoin. Maaccât tuotâ teikkâ epituotâ."; -Blockly.Msg["MATH_IS_WHOLE"] = "lii olesloho"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Loho."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "koskâárvu lovoin"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "stuárráámus lovoin"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediaan lovoin"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ucemus lovoin"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summe lovoin"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Maaccât aritmaattisâš koskâáárvu adelum lovoin."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Maaccât stuárráámuu adelum lovoin."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Maaccât adelum lovoi mediaan."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Maaccât ucemuu adelum lovoin."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Maaccât puoh adelum lovoi sume."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "jurbii"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "jurbii vuáluskulij"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "jurbii pajaskulij"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Jorbee lovo pajas- teikkâ vuáluskulij."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "jiešárvu"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "neljihâšruotâs"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Räähti ivnemuttojeijee..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Räähti nummeermuttojeijee..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Räähti merkkâráiđumuttojeijee..."; -Blockly.Msg["NEW_VARIABLE"] = "Räähti muttojeijee..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Uđđâ muttojeijee nommâ:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Uđđâ muttojeijee tijppâ:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "parameettereh:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "parameettereh:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Valdâl taam funktio..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "poorgâ maidnii"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Räähti puáđushánnáá leijee funktio."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "maaccât"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "fáálus nommâ:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "fáluseh"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Räähti uđđâsist"; -Blockly.Msg["REMOVE_COMMENT"] = "Siho komment"; -Blockly.Msg["RENAME_VARIABLE"] = "Noomât uđđâsist muttojeijee..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Noomât uđđâsist puoh '%1' muttojeijee:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "labde"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Onne"; -Blockly.Msg["UNDO"] = "Koomeet"; -Blockly.Msg["UNNAMED_KEY"] = "nomâttem"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "tiŋgâ"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Muttojeijee mon nommâ lii '%1' lii jo lemin."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Muttojeijee, mon nommâ lii '%1', lii jo lemin nube tiijpân: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Eeđâ maidnii..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Lasseet komment"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ij lah máhđulâš sikkođ muttojeijee '%1' tanen ko tot lii uási funktio miäruštâllâm '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Mute áárvu:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ivne 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ivne 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "koskâvuotâ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "siävuttâs"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Siävvut kyevti ivne koskânis adelum koskâvuođâst (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://smn.wikipedia.org/wiki/Ivne"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Valjii ivne paletist."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "säti-ivne"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Valjii ivne sätioornigist."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "čuovjâd"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ruánáá"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ruopsâd"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ivne, mast lii"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Räähti ivne, mast lii tiätu meeri ruopsâd, ruánáá já čuovjâd. Puoh áárvuh kalgeh leđe 0 já 100 kooskâst."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "mudoi"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "mudoi jis"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "jis"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "poorgâ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "kiärdut %1 tove"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "kiärdut tassaaš ko"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "kiärdut ton puudâ ko"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Siho muttojeijee '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Sikkop-uv %1 kevttim muttojeijeest '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Jooskâ"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Jyemeehpittá"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Dublikist komment"; +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "Olgoldâs fáluseh"; +Blockly.Msg["HELP"] = "Iše"; +Blockly.Msg["INLINE_INPUTS"] = "Pyevti fálusijd"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listo"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "vuosmuš"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "majemuš"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "sätinálásâš"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "siho"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "listoost"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "epituotâ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tuotâ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ij %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "ij maiden"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "já"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "teikkâ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "testâ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "jis epituotâ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "jis tuotâ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "mute %1 árvoin %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lasseet áárvu muttojeijen '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "puáhtá jyehiđ lovvoin"; +Blockly.Msg["MATH_IS_EVEN"] = "lii parâlâš"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "lii negatiivlâš"; +Blockly.Msg["MATH_IS_ODD"] = "lii parâttem"; +Blockly.Msg["MATH_IS_POSITIVE"] = "lii positiivlâš"; +Blockly.Msg["MATH_IS_PRIME"] = "lii algâloho"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Täärhist lii-uv nummeer parâlâs, parâttem, algâloho, olesloho, positiivlâš, negatiivlâš, teikkâ jis tom puáhtá jyehiđ nube lovvoin. Maaccât tuotâ teikkâ epituotâ."; +Blockly.Msg["MATH_IS_WHOLE"] = "lii olesloho"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Loho."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "koskâárvu lovoin"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "stuárráámus lovoin"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediaan lovoin"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ucemus lovoin"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summe lovoin"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Maaccât aritmaattisâš koskâáárvu adelum lovoin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Maaccât stuárráámuu adelum lovoin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Maaccât adelum lovoi mediaan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Maaccât ucemuu adelum lovoin."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Maaccât puoh adelum lovoi sume."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "jurbii"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "jurbii vuáluskulij"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "jurbii pajaskulij"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Jorbee lovo pajas- teikkâ vuáluskulij."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "jiešárvu"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "neljihâšruotâs"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Räähti ivnemuttojeijee..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Räähti nummeermuttojeijee..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Räähti merkkâráiđumuttojeijee..."; +Blockly.Msg["NEW_VARIABLE"] = "Räähti muttojeijee..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Uđđâ muttojeijee nommâ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Uđđâ muttojeijee tijppâ:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "parameettereh:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "parameettereh:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Valdâl taam funktio..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "poorgâ maidnii"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Räähti puáđushánnáá leijee funktio."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "maaccât"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "fáálus nommâ:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "fáluseh"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Räähti uđđâsist"; +Blockly.Msg["REMOVE_COMMENT"] = "Siho komment"; +Blockly.Msg["RENAME_VARIABLE"] = "Noomât uđđâsist muttojeijee..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Noomât uđđâsist puoh '%1' muttojeijee:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "labde"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Onne"; +Blockly.Msg["UNDO"] = "Koomeet"; +Blockly.Msg["UNNAMED_KEY"] = "nomâttem"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "tiŋgâ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Muttojeijee mon nommâ lii '%1' lii jo lemin."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Muttojeijee, mon nommâ lii '%1', lii jo lemin nube tiijpân: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Eeđâ maidnii..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sq.js b/msg/js/sq.js index c86e4d6a3ea..2b53c7ca262 100644 --- a/msg/js/sq.js +++ b/msg/js/sq.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Vendos nje Koment"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nuk mund të fshihet variabla '%1' sepse është pjesë e definicionit të funksionit '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ndrysho Vlerat:"; -Blockly.Msg["CLEAN_UP"] = "Pastro blloqet"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blloqet e shembura përmbajnë paralajmërime."; -Blockly.Msg["COLLAPSE_ALL"] = "Mbyll blloqet"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Mbyll bllokun"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Ngjyra 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "Ngjyra 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "Perpjesetim"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "Përzierje"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Perzien dy ngjyra së bashku me një raport të dhënë (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Zgjidh nje ngjyre nga nje game ngjyrash."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ngjyre e rastesishme"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zgjidhni një ngjyrë në mënyrë të rastësishme."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blu"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "jeshile"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "e kuqe"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ngjyre me"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Krijo një ngjyrë me shumën e specifikuar te te kuqes, te gjelbëres, dhe bluse. Te gjitha vlerat duhet te jene mes 0 dhe 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "dil nga nje faze perseritese"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "vazhdo me elementin tjeter te nje faze perseritese"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ndahu nga unaza."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Kapërce pjesën e mbetur të unazës, dhe vazhdo me ripërsëritjen tjetër."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Paralajmërim: Ky bllok mund të përdoret vetëm brenda unazës."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per cdo produkt %1 ne liste %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Per cdo produkt ne nje \"liste\" \"vendos\" ndryshoren '%1' produktit, dhe pastaj bej disa deklarata."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "numero me %1 nga %2 ne %3 me nga %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Bëje identifikuesin \"%1\" që ta ketë vlerat prej numrit të fillimit deri tek numri i fundit, duke numëruar nga intervali i specifikuar, dhe ti bëj blloqet e specifikuara."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"Vendos\" \"kushtein\"tek \"pjesa\" \"if\""; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Shto një përfundues, që i mbërrin të gjitha kushtet në bllokun nëse."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këte bllok nëse."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "përndryshe"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "përndryshe nëse"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "nëse"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Nëse një vlerë është e saktë, atëherë ekzekuto disa fjali."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Nëse një vlerë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, ekzekuto bllokun e dytë të fjalive."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive. Nëse asnjëra nga vlerat nuk është e saktë, ekzekuto bllokun e fundit të fjalive."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "http://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ekzekuto"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "përsërit %1 herë"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Ekzekuto disa fjali disa herë."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "përsërit derisa"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "përsërit përderisa"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Përderisa një vlerë është e pasaktë, atëherë ekzekuto disa fjali."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Përderisa një vlerë është e saktë, atëherë ekzekuto disa fjali."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Fshijë të gjitha %1 të blloqeve?"; -Blockly.Msg["DELETE_BLOCK"] = "Fshij bllokun"; -Blockly.Msg["DELETE_VARIABLE"] = "Fshi variablën '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Fshi përdorimin %1 të variablës '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Fshij %1 blloqe"; -Blockly.Msg["DIALOG_CANCEL"] = "Anulo"; -Blockly.Msg["DIALOG_OK"] = "Në rregull"; -Blockly.Msg["DISABLE_BLOCK"] = "Çaktivizo bllokun"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Kopjo"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Koment Dublikatë"; -Blockly.Msg["ENABLE_BLOCK"] = "Aktivizo bllokun"; -Blockly.Msg["EXPAND_ALL"] = "Zmadho blloqet"; -Blockly.Msg["EXPAND_BLOCK"] = "Zmadho bllokun"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Hyrjet e jashtme"; -Blockly.Msg["HELP"] = "Ndihmë"; -Blockly.Msg["INLINE_INPUTS"] = "Hyrjet e brendshme"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "krijo një listë të zbrazët"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Kthen një listë, te gjatësisë 0, duke mos përmbajtur asnjë regjistrim të të dhënave"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listë"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok të listës."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "krijo listë me"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Shto një send në listë."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Krijo një listë me ndonjë numbër të sendeve."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "i parë"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# nga fundi"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "merr"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "merr dhe fshij"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "i fundit"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "i rastësishëm"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "largo"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Rikthen tek artikulli i par në list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Kthen një send në pozicionin e specifikuar në listë."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Kthen artikullin e fundit në list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Kthen një send të rastësishëm në listë."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fshin dhe kthen sendin e parë në listë."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fshin dhe kthen sendin në pozicionin e specifikuar në listë."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fshin dhe kthen sendin e fundit në listë."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fshin dhe kthen një send të rastësishëm në listë."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fshin sendin e parë në listë."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fshin sendin në pozicionin e specifikuar në listë."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fshin sendin e fundit në listë."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Kthen një send të rastësishëm në listë."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "tek # nga fundi"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "tek #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "tek i fundit"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "merr nën-listën nga i pari"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "merr nën listën nga # nga fundi"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "merr nën-listën nga #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Krijon në kopje të pjesës së specifikuar të listës."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 është sendi i fundit."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 është sendi i parë."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "gjen ndodhjen e parë të sendit"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "gjen ndodhjen e fundit të sendit"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Kthen indeksin e ndodhjes së parë/fudit të sendit në listë. Kthen %1 nëse teksti nuk është gjetur."; -Blockly.Msg["LISTS_INLIST"] = "në listë"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 është e zbraztë"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Kthehet i saktë nëse lista është e zbraztë."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "gjatësia e %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Kthen gjatësinë e listës."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "krijo listën me sendin %1 të përsëritur %2 herë"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Krijon në listë qe përmban vlerën e dhënë të përsëritur aq herë sa numri i specifikuar."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "kthe %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Ndërro renditjen e një kopjeje të listës."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sikurse"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "fut në"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "vendos"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Fut sendin në fillim të listës."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Fut sendin në pozicionin e specifikuar të listës."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Bashkangjit sendin në fund të listës."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Fut sendin rastësisht në listë."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Vendos sendin e parë në listë."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Vendos sendin në pozicionin e specifikuar në listë."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Vendos sendin e fundit në listë."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Vendos një send të rastësishëm në listë."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ngjitje"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "zbritje"; -Blockly.Msg["LISTS_SORT_TITLE"] = "rendit %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Rendit një kopje të listës."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetike, injoro madhësinë e shkronjave"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerike"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetike"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "bëj listë nga teksti"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "bëj tekst nga lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ngjit një listë tekstesh në një, të ndara me ndarës."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Ndaj tekstin në një listë tekstesh, duke ndarë në secilin ndarës."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "me ndarës"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "e pasaktë"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Kthehet ose të saktë ose të pasaktë."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "e saktë"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "http://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ktheje të saktë nëse të dy hyrjet janë të barabarta me njëra-tjetrën."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ktheje të saktë nëse hyrja e parë është më e madhe se hyrja e dytë."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ktheje të saktë nëse hyrja e parë është më e madhe ose e barabartë me hyrjen e dytë."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ktheje të saktë nëse hyrja e parë është më e vogël se hyrja e dytë."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ktheje të saktë nëse hyrja e parë është më e vogël ose e barabartë me hyrjen e dytë."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ktheje të saktë nëse të dy hyrjet nuk janë të barabarta me njëra-tjetrën."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "jo %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Kthehet e saktë nëse hyrja është e pasaktë. Kthehet e pasaktë nëse hyrja është e saktë."; -Blockly.Msg["LOGIC_NULL"] = "pavlerë"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "http://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Kthehet e pavlerë."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "dhe"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ose"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Kthehet të saktë nëse të dy hyrjet janë të sakta."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Kthehet e saktë nëse së paku njëra nga hyrjet është e saktë."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "http://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "nëse e pasaktë"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "nëse e saktë"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontrollo kushtin në 'test'. Nëse kushti është i saktë, kthen vlerën 'nëse e saktë'; përndryshe kthen vlerën 'nëse e pasaktë'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "http://sq.wikipedia.org/wiki/Aritmetika"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Kthen shumën e dy numrave."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Kthen herësin e dy numrave."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Kthen ndryshimin e dy numrave."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Kthen produktin e dy numrave."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Kthen numrin e parë të ngritur në fuqinë e numrit të dytë."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Ktheni arkangjentin e pikës (X, Y) në gradë nga -180 në 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "http://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "ndrysho %1 nga %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Shto një numër në ndryshoren '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "http://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Kthen një nga konstantet e përbashkëta: : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infiniti)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "detyro %1 e ulët %2 e lartë %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Vëni një numër që të jetë në mes të kufive të specifikuara(përfshirëse)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "është i pjestueshme me"; -Blockly.Msg["MATH_IS_EVEN"] = "është çift"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "është negativ"; -Blockly.Msg["MATH_IS_ODD"] = "është tek"; -Blockly.Msg["MATH_IS_POSITIVE"] = "është pozitiv"; -Blockly.Msg["MATH_IS_PRIME"] = "është prim"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollo nëse një numër është çift, tek, prim, i plotë, pozitiv, negativ, ose nëse është i pjestueshëm me një numër të caktuar. Kthehet e saktë ose e pasaktë."; -Blockly.Msg["MATH_IS_WHOLE"] = "është i plotë"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "http://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "mbetësi i %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Kthen mbetësin nga pjestimi i dy numrave."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "http://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Një numër."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mesatarja e listës"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "numri më i madh i listës"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana e listës"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "numri më i ulët i listës"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modat e listës"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "send i rastësishëm i listës"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "devijimi standard i listës"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "mbledhja e listës"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Kthen mesatarën (kuptimi aritmetik) i vlerave numerike të listës."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Kthe numrin më të madh të listës."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Kthe numrin median të listës."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Kthe numrin me të vogël të listës."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Kthe listën e sendit(eve) më të zakonshme të listës."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Kthe një element të rastësishëm nga lista."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Kthe devijimin standard të listës."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Kthe shumën e të gjithë numrave të listës."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "http://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraksioni i rastësishëm"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Kthe fraksionin e rastësishëm në mes të 0.0 (përfshirëse) dhe 1.0 (jopërfshirëse)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "http://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "numër i plotë i rastësishëm nga %1 deri në %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Kthe një numër të plotë të rastësishëm të dy kufijve të specifikuar, të përfshirë."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "http://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "rrumbullakësimi"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rrumbullakësimi i ulët"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rrumbullakësimi i lartë"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rrumbullakësimi i numrit të lartë ose të ulët."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "http://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "rrënja katrore"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Kthen vlerën absolute të një numri."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Kthen e në fuqinë e një numri."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Kthen logaritmën natyrale të një numri."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Kthen 10 logaritmet bazë të një numri."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Kthe negacionin e një numri."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Kthen 10 në fuqinë e një numri."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Kthen rrënjën katrore të një numri."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acosinus"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asinus"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atangjentë"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "http://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Rikthe cos-1 e nje numeri."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Rikthe sin-1 e nje numeri."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Kthe tg-1 e nje numeri."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kthe kosinusin e nje grade (jo ne radiant)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Kthe kosinusin e nje kendi (jo ne radiant)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Kthe tangentin e nje kendi (jo radiant)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Krijo variabël ngjyrë..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Krijo variabël numër"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Krijo variabël varg"; -Blockly.Msg["NEW_VARIABLE"] = "Krijo variabël..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Emri i identifikatorit të ri:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tip i ri i variablës:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "lejo deklaratat"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "me:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Lësho funksionin e definuar nga përdoruesi '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Lëho funksionin e definuar nga përdoruesi '%1' dhe përdor daljen e tij."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "me:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Krijo '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Përshkruaj këtë funksion..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "bëj diqka"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "te"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Krijon një funksion pa dalje."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "rikthe"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Krijon një funksion me një dalje."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Paralajmërim: Ky funksion ka parametra të dyfishuar."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Thekso definicionin e funksionit"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Nëse një vlerë është e saktë, atëherë kthe një vlerë të dytë."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Paralajmërim: Ky bllok mund të përdoret vetëm brenda definicionit të funksionit."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Fut emrin:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Shto një input në këtë funksion."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Informacioni i futur"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Shto, hiq, ose rirendit inputet e këtij funksioni."; -Blockly.Msg["REDO"] = "Ribëj"; -Blockly.Msg["REMOVE_COMMENT"] = "Fshij komentin"; -Blockly.Msg["RENAME_VARIABLE"] = "Ndrysho emrin variables..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Ndrysho emrin e te gjitha '%1' variablave ne :"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "ne %1 shto tekst %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "shto tekst tek varibla '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "me shkronja te vogla shtypi"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Fillimi me shkronje te madhe shtypi"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "me shkronja te medha shtypi"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Kthe nje kopje te tekstit ne nje rast te ndryshem."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "merr shkronjen e pare"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "merr shkronjen # nga fundi"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "merr shkronjen #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "merr shkronjen e fundit"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "merr nje shkronje te rastesishme"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "në tekst %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Kthe nje shkronje nga nje pozicion i caktuar."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "numro %1 në %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Numrin sa herë paraqitet një tekst brenda një teksti tjetër."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Shto nje gje ne tekst"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "bashkangjit"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok teksti."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ne shkronjen # nga fundi"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ne shkronjen #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "tek shkronja e fundit"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ne tekst"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "merr vlerat qe vazhdojne me shkronjen e pare"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "merr nenvargun nga shkronja # nga fundi"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "Merr nenvargun nga shkronja #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Pergjigjet me nje pjese te caktuar teksti."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "gjej rastisjen e pare te tekstit"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "gjej rastisjen e fundit te tekstit"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ne tekst %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Pergjigjet me indeksin e pare/fundit te rastisjes se tekstit te pare ne tekstin e dyte. Pergjigjet me %1 ne qofte se teksti nuk u gjet."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 eshte bosh"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Kthehet e vertete neqoftese teksti i dhene eshte bosh."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "krijo tekst me"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Krijo nje pjese te tekstit duke bashkuar se bashku disa sende"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "gjatesi %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Pergjigjet me nje numer shkronjash (duke perfshire hapesire) ne tekstin e dhene."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "printo %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Printo tekstin e caktuar, numer ose vlere tjeter."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Kerkoji perdoruesit nje numer."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Kerkoji perdoruesit ca tekst."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "kerko nje numer me njoftim"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "kerko tekst me njoftim"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zëvendëso %1 me %2 në %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zëvendëso të gjitha paraqitjet e një teksti brenda një teksti tjetër."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "kthe %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Kthen renditjen e karaktereve në tekst."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "http://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Nje shkronje, fjale, ose rresht teksti."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "prit hapesirat nga te dyja anet"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "prit hapesirat nga ana e majte"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "prit hapesirat nga ana e djathte"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Pergjigju me nje kopje te tekstit me hapesira te fshira nga njera ane ose te dyja anet."; -Blockly.Msg["TODAY"] = "Sot"; -Blockly.Msg["UNDO"] = "Zhbëj"; -Blockly.Msg["UNNAMED_KEY"] = "pa emër"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "send"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Krijo 'vendos %1"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Pergjigjet me nje vlere te kesaj variable."; -Blockly.Msg["VARIABLES_SET"] = "vendos %1 ne %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Krijo 'merr %1"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Vendos kete variable te jete e barabarte me te dhenat ne hyrje."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Një variabël e quajtur '%1' tashmë ekziston."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Një variabël me emrin '%1' veç ekziston për një tip tjetër: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Hapësira e punës e Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Thuaj dicka..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Vendos nje Koment"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Nuk mund të fshihet variabla '%1' sepse është pjesë e definicionit të funksionit '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ndrysho Vlerat:"; +Blockly.Msg["CLEAN_UP"] = "Pastro blloqet"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Blloqet e shembura përmbajnë paralajmërime."; +Blockly.Msg["COLLAPSE_ALL"] = "Mbyll blloqet"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Mbyll bllokun"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "Ngjyra 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "Ngjyra 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "Perpjesetim"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "Përzierje"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Perzien dy ngjyra së bashku me një raport të dhënë (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "http://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Zgjidh nje ngjyre nga nje game ngjyrash."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ngjyre e rastesishme"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Zgjidhni një ngjyrë në mënyrë të rastësishme."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blu"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "jeshile"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "e kuqe"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ngjyre me"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Krijo një ngjyrë me shumën e specifikuar te te kuqes, te gjelbëres, dhe bluse. Te gjitha vlerat duhet te jene mes 0 dhe 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "dil nga nje faze perseritese"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "vazhdo me elementin tjeter te nje faze perseritese"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ndahu nga unaza."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Kapërce pjesën e mbetur të unazës, dhe vazhdo me ripërsëritjen tjetër."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Paralajmërim: Ky bllok mund të përdoret vetëm brenda unazës."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "per cdo produkt %1 ne liste %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Per cdo produkt ne nje \"liste\" \"vendos\" ndryshoren '%1' produktit, dhe pastaj bej disa deklarata."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "numero me %1 nga %2 ne %3 me nga %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Bëje identifikuesin \"%1\" që ta ketë vlerat prej numrit të fillimit deri tek numri i fundit, duke numëruar nga intervali i specifikuar, dhe ti bëj blloqet e specifikuara."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "\"Vendos\" \"kushtein\"tek \"pjesa\" \"if\""; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Shto një përfundues, që i mbërrin të gjitha kushtet në bllokun nëse."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këte bllok nëse."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "përndryshe"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "përndryshe nëse"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "nëse"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Nëse një vlerë është e saktë, atëherë ekzekuto disa fjali."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Nëse një vlerë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, ekzekuto bllokun e dytë të fjalive."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive. Nëse asnjëra nga vlerat nuk është e saktë, ekzekuto bllokun e fundit të fjalive."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "http://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ekzekuto"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "përsërit %1 herë"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Ekzekuto disa fjali disa herë."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "përsërit derisa"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "përsërit përderisa"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Përderisa një vlerë është e pasaktë, atëherë ekzekuto disa fjali."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Përderisa një vlerë është e saktë, atëherë ekzekuto disa fjali."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Fshijë të gjitha %1 të blloqeve?"; +Blockly.Msg["DELETE_BLOCK"] = "Fshij bllokun"; +Blockly.Msg["DELETE_VARIABLE"] = "Fshi variablën '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Fshi përdorimin %1 të variablës '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Fshij %1 blloqe"; +Blockly.Msg["DIALOG_CANCEL"] = "Anulo"; +Blockly.Msg["DIALOG_OK"] = "Në rregull"; +Blockly.Msg["DISABLE_BLOCK"] = "Çaktivizo bllokun"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kopjo"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Koment Dublikatë"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktivizo bllokun"; +Blockly.Msg["EXPAND_ALL"] = "Zmadho blloqet"; +Blockly.Msg["EXPAND_BLOCK"] = "Zmadho bllokun"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Hyrjet e jashtme"; +Blockly.Msg["HELP"] = "Ndihmë"; +Blockly.Msg["INLINE_INPUTS"] = "Hyrjet e brendshme"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "krijo një listë të zbrazët"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Kthen një listë, te gjatësisë 0, duke mos përmbajtur asnjë regjistrim të të dhënave"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "listë"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok të listës."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "krijo listë me"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Shto një send në listë."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Krijo një listë me ndonjë numbër të sendeve."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "i parë"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# nga fundi"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "merr"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "merr dhe fshij"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "i fundit"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "i rastësishëm"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "largo"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Rikthen tek artikulli i par në list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Kthen një send në pozicionin e specifikuar në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Kthen artikullin e fundit në list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Kthen një send të rastësishëm në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Fshin dhe kthen sendin e parë në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Fshin dhe kthen sendin në pozicionin e specifikuar në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Fshin dhe kthen sendin e fundit në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Fshin dhe kthen një send të rastësishëm në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Fshin sendin e parë në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Fshin sendin në pozicionin e specifikuar në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Fshin sendin e fundit në listë."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Kthen një send të rastësishëm në listë."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "tek # nga fundi"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "tek #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "tek i fundit"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "merr nën-listën nga i pari"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "merr nën listën nga # nga fundi"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "merr nën-listën nga #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Krijon në kopje të pjesës së specifikuar të listës."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 është sendi i fundit."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 është sendi i parë."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "gjen ndodhjen e parë të sendit"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "gjen ndodhjen e fundit të sendit"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Kthen indeksin e ndodhjes së parë/fudit të sendit në listë. Kthen %1 nëse teksti nuk është gjetur."; +Blockly.Msg["LISTS_INLIST"] = "në listë"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 është e zbraztë"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Kthehet i saktë nëse lista është e zbraztë."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "gjatësia e %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Kthen gjatësinë e listës."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "krijo listën me sendin %1 të përsëritur %2 herë"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Krijon në listë qe përmban vlerën e dhënë të përsëritur aq herë sa numri i specifikuar."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "kthe %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Ndërro renditjen e një kopjeje të listës."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "sikurse"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "fut në"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "vendos"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Fut sendin në fillim të listës."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Fut sendin në pozicionin e specifikuar të listës."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Bashkangjit sendin në fund të listës."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Fut sendin rastësisht në listë."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Vendos sendin e parë në listë."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Vendos sendin në pozicionin e specifikuar në listë."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Vendos sendin e fundit në listë."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Vendos një send të rastësishëm në listë."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ngjitje"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "zbritje"; +Blockly.Msg["LISTS_SORT_TITLE"] = "rendit %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Rendit një kopje të listës."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetike, injoro madhësinë e shkronjave"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numerike"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetike"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "bëj listë nga teksti"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "bëj tekst nga lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Ngjit një listë tekstesh në një, të ndara me ndarës."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Ndaj tekstin në një listë tekstesh, duke ndarë në secilin ndarës."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "me ndarës"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "e pasaktë"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Kthehet ose të saktë ose të pasaktë."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "e saktë"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "http://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ktheje të saktë nëse të dy hyrjet janë të barabarta me njëra-tjetrën."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ktheje të saktë nëse hyrja e parë është më e madhe se hyrja e dytë."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ktheje të saktë nëse hyrja e parë është më e madhe ose e barabartë me hyrjen e dytë."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ktheje të saktë nëse hyrja e parë është më e vogël se hyrja e dytë."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ktheje të saktë nëse hyrja e parë është më e vogël ose e barabartë me hyrjen e dytë."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ktheje të saktë nëse të dy hyrjet nuk janë të barabarta me njëra-tjetrën."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "jo %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Kthehet e saktë nëse hyrja është e pasaktë. Kthehet e pasaktë nëse hyrja është e saktë."; +Blockly.Msg["LOGIC_NULL"] = "pavlerë"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "http://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Kthehet e pavlerë."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "dhe"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ose"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Kthehet të saktë nëse të dy hyrjet janë të sakta."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Kthehet e saktë nëse së paku njëra nga hyrjet është e saktë."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "http://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "nëse e pasaktë"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "nëse e saktë"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontrollo kushtin në 'test'. Nëse kushti është i saktë, kthen vlerën 'nëse e saktë'; përndryshe kthen vlerën 'nëse e pasaktë'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "http://sq.wikipedia.org/wiki/Aritmetika"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Kthen shumën e dy numrave."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Kthen herësin e dy numrave."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Kthen ndryshimin e dy numrave."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Kthen produktin e dy numrave."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Kthen numrin e parë të ngritur në fuqinë e numrit të dytë."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Ktheni arkangjentin e pikës (X, Y) në gradë nga -180 në 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "http://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "ndrysho %1 nga %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Shto një numër në ndryshoren '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "http://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Kthen një nga konstantet e përbashkëta: : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infiniti)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "detyro %1 e ulët %2 e lartë %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Vëni një numër që të jetë në mes të kufive të specifikuara(përfshirëse)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "është i pjestueshme me"; +Blockly.Msg["MATH_IS_EVEN"] = "është çift"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "është negativ"; +Blockly.Msg["MATH_IS_ODD"] = "është tek"; +Blockly.Msg["MATH_IS_POSITIVE"] = "është pozitiv"; +Blockly.Msg["MATH_IS_PRIME"] = "është prim"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollo nëse një numër është çift, tek, prim, i plotë, pozitiv, negativ, ose nëse është i pjestueshëm me një numër të caktuar. Kthehet e saktë ose e pasaktë."; +Blockly.Msg["MATH_IS_WHOLE"] = "është i plotë"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "http://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "mbetësi i %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Kthen mbetësin nga pjestimi i dy numrave."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "http://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Një numër."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "mesatarja e listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "numri më i madh i listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "mediana e listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "numri më i ulët i listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modat e listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "send i rastësishëm i listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "devijimi standard i listës"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "mbledhja e listës"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Kthen mesatarën (kuptimi aritmetik) i vlerave numerike të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Kthe numrin më të madh të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Kthe numrin median të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Kthe numrin me të vogël të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Kthe listën e sendit(eve) më të zakonshme të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Kthe një element të rastësishëm nga lista."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Kthe devijimin standard të listës."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Kthe shumën e të gjithë numrave të listës."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "http://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "fraksioni i rastësishëm"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Kthe fraksionin e rastësishëm në mes të 0.0 (përfshirëse) dhe 1.0 (jopërfshirëse)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "http://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "numër i plotë i rastësishëm nga %1 deri në %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Kthe një numër të plotë të rastësishëm të dy kufijve të specifikuar, të përfshirë."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "http://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "rrumbullakësimi"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "rrumbullakësimi i ulët"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "rrumbullakësimi i lartë"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Rrumbullakësimi i numrit të lartë ose të ulët."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "http://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "rrënja katrore"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Kthen vlerën absolute të një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Kthen e në fuqinë e një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Kthen logaritmën natyrale të një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Kthen 10 logaritmet bazë të një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Kthe negacionin e një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Kthen 10 në fuqinë e një numri."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Kthen rrënjën katrore të një numri."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acosinus"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asinus"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atangjentë"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "http://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Rikthe cos-1 e nje numeri."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Rikthe sin-1 e nje numeri."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Kthe tg-1 e nje numeri."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Kthe kosinusin e nje grade (jo ne radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Kthe kosinusin e nje kendi (jo ne radiant)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Kthe tangentin e nje kendi (jo radiant)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Krijo variabël ngjyrë..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Krijo variabël numër"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Krijo variabël varg"; +Blockly.Msg["NEW_VARIABLE"] = "Krijo variabël..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Emri i identifikatorit të ri:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Tip i ri i variablës:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "lejo deklaratat"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "me:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Lësho funksionin e definuar nga përdoruesi '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Lëho funksionin e definuar nga përdoruesi '%1' dhe përdor daljen e tij."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "me:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Krijo '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Përshkruaj këtë funksion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "bëj diqka"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "te"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Krijon një funksion pa dalje."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "rikthe"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Krijon një funksion me një dalje."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Paralajmërim: Ky funksion ka parametra të dyfishuar."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Thekso definicionin e funksionit"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Nëse një vlerë është e saktë, atëherë kthe një vlerë të dytë."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Paralajmërim: Ky bllok mund të përdoret vetëm brenda definicionit të funksionit."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "Fut emrin:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Shto një input në këtë funksion."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "Informacioni i futur"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Shto, hiq, ose rirendit inputet e këtij funksioni."; +Blockly.Msg["REDO"] = "Ribëj"; +Blockly.Msg["REMOVE_COMMENT"] = "Fshij komentin"; +Blockly.Msg["RENAME_VARIABLE"] = "Ndrysho emrin variables..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Ndrysho emrin e te gjitha '%1' variablave ne :"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "ne %1 shto tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "shto tekst tek varibla '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "me shkronja te vogla shtypi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Fillimi me shkronje te madhe shtypi"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "me shkronja te medha shtypi"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Kthe nje kopje te tekstit ne nje rast te ndryshem."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "merr shkronjen e pare"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "merr shkronjen # nga fundi"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "merr shkronjen #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "merr shkronjen e fundit"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "merr nje shkronje te rastesishme"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "në tekst %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Kthe nje shkronje nga nje pozicion i caktuar."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "numro %1 në %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Numrin sa herë paraqitet një tekst brenda një teksti tjetër."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Shto nje gje ne tekst"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "bashkangjit"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok teksti."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ne shkronjen # nga fundi"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ne shkronjen #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "tek shkronja e fundit"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ne tekst"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "merr vlerat qe vazhdojne me shkronjen e pare"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "merr nenvargun nga shkronja # nga fundi"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "Merr nenvargun nga shkronja #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Pergjigjet me nje pjese te caktuar teksti."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "gjej rastisjen e pare te tekstit"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "gjej rastisjen e fundit te tekstit"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ne tekst %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Pergjigjet me indeksin e pare/fundit te rastisjes se tekstit te pare ne tekstin e dyte. Pergjigjet me %1 ne qofte se teksti nuk u gjet."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 eshte bosh"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Kthehet e vertete neqoftese teksti i dhene eshte bosh."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "krijo tekst me"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Krijo nje pjese te tekstit duke bashkuar se bashku disa sende"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "gjatesi %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Pergjigjet me nje numer shkronjash (duke perfshire hapesire) ne tekstin e dhene."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "printo %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Printo tekstin e caktuar, numer ose vlere tjeter."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Kerkoji perdoruesit nje numer."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Kerkoji perdoruesit ca tekst."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "kerko nje numer me njoftim"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "kerko tekst me njoftim"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zëvendëso %1 me %2 në %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zëvendëso të gjitha paraqitjet e një teksti brenda një teksti tjetër."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "kthe %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Kthen renditjen e karaktereve në tekst."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "http://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Nje shkronje, fjale, ose rresht teksti."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "prit hapesirat nga te dyja anet"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "prit hapesirat nga ana e majte"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "prit hapesirat nga ana e djathte"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Pergjigju me nje kopje te tekstit me hapesira te fshira nga njera ane ose te dyja anet."; +Blockly.Msg["TODAY"] = "Sot"; +Blockly.Msg["UNDO"] = "Zhbëj"; +Blockly.Msg["UNNAMED_KEY"] = "pa emër"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "send"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Krijo 'vendos %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Pergjigjet me nje vlere te kesaj variable."; +Blockly.Msg["VARIABLES_SET"] = "vendos %1 ne %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Krijo 'merr %1"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Vendos kete variable te jete e barabarte me te dhenat ne hyrje."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Një variabël e quajtur '%1' tashmë ekziston."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Një variabël me emrin '%1' veç ekziston për një tip tjetër: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Hapësira e punës e Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Thuaj dicka..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sr-latn.js b/msg/js/sr-latn.js index b37f0e9a0af..882000564ac 100644 --- a/msg/js/sr-latn.js +++ b/msg/js/sr-latn.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne mogu da obrišem varijablu ’%1’ jer je deo definicije funkcije ’%2’"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Promeni vrednost:"; -Blockly.Msg["CLEAN_UP"] = "Ukloni blokove"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Skupi blokove"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Skupi blok"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "boja 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "boja 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "odnos"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "pomešaj"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Pomešati dve boje zajedno sa datim odnosom (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sr.wikipedia.org/wiki/Boja"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izaberite boju sa palete."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "slučajna boja"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Izaberite boju nasumice."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "plava"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "zelena"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "crvena"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "boja sa"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kreiraj boju sa određenom količinom crvene,zelene, i plave. Sve vrednosti moraju biti između 0 i 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Izađite iz petlje"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nastavi sa sledećom iteracijom petlje"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Napusti sadržaj petlje."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči ostatak ove petlje, i nastavi sa sledećom iteracijom(ponavljanjem)."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozorenje: Ovaj blok može da se upotrebi samo unutar petlje."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za svaku stavku %1 na spisku %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za svaku stavku unutar liste, podesi promenjivu '%1' po stavci, i onda načini neke izjave-naredbe."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "prebroj sa %1 od %2 do %3 od %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Imaj promenjivu \"%1\" uzmi vrednosti od početnog broja do zadnjeg broja, brojeći po određenom intervalu, i izvrši određene blokove."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodajte uslov bloku „ako“."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodaj konačni, catch-all (uhvati sve) uslove if bloka."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodaj, ukloni, ili preuredi delove kako bih rekonfigurisali ovaj if blok."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "inače"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inače-ako"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ako"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ako je vrednost tačna, onda izvrši neke naredbe-izjave."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ako je vrednost tačna, onda izvrši prvi blok naredbi, U suprotnom, izvrši drugi blok naredbi."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi. Ako ni jedna od vrednosti nije tačna, izvrši poslednji blok naredbi."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://sr.wikipedia.org/wiki/For_petlja"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izvrši"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1 puta"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Odraditi neke naredbe nekoliko puta."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljati do"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljati dok"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dok vrednost nije tačna, onda izvršiti neke naredbe."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dok je vrednost tačna, onda izvršite neke naredbe."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Da obrišem svih %1 blokova?"; -Blockly.Msg["DELETE_BLOCK"] = "Obriši blok"; -Blockly.Msg["DELETE_VARIABLE"] = "Obriši promenljivu '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Da obrišem %1 upotreba promenljive '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Obriši %1 blokova"; -Blockly.Msg["DIALOG_CANCEL"] = "Otkaži"; -Blockly.Msg["DIALOG_OK"] = "U redu"; -Blockly.Msg["DISABLE_BLOCK"] = "Onemogući blok"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliraj"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Omogući blok"; -Blockly.Msg["EXPAND_ALL"] = "Proširi blokove"; -Blockly.Msg["EXPAND_BLOCK"] = "Proširi blok"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Spoljni ulazi"; -Blockly.Msg["HELP"] = "Pomoć"; -Blockly.Msg["INLINE_INPUTS"] = "Unutrašnji ulazi"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "napravi prazan spisak"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "vraća listu, dužine 0, ne sadržavajući evidenciju podataka"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "spisak"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Dodajte, izbrišite, ili preuredite delove kako bi se reorganizovali ovaj blok liste."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "napravi spisak sa"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Dodajte stavku na spisak."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Kreiraj listu sa bilo kojim brojem stavki."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prva"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# sa kraja"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "preuzmi"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "preuzmi i ukloni"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "poslednja"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "slučajna"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ukloni"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vraća prvu stavku na spisku."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vraća stavku na određenu poziciju na listi."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vraća poslednju stavku na spisku."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vraća slučajnu stavku sa spiska."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Uklanja i vraća prvu stavku sa spiska."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Uklanja i vraća stavku sa određenog položaja na spisku."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Uklanja i vraća poslednju stavku sa spiska."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Uklanja i vraća slučajnu stavku sa spiska."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Uklanja prvu stavku sa spiska."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Uklanja stavku sa određenog položaja na spisku."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Uklanja poslednju stavku sa spiska."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Uklanja slučajnu stavku sa spiska."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od kraja"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do poslednje"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "preuzmi podspisak od prve"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "preuzmi podspisak iz # sa kraja"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "preuzmi podspisak od #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Pravi kopiju određenog dela liste."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je poslednja stavka."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je prva stavka."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "pronađi prvo pojavljivanje stavke"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "pronađi poslednje pojavljivanje stavke"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vraća broj prvog i/poslednjeg ulaska elementa u listu. Vraća %1 Ako element nije pronađen."; -Blockly.Msg["LISTS_INLIST"] = "na spisku"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazan"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vraća vrednost tačno ako je lista prazna."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "dužina spiska %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vraća dužinu spiska."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "Napraviti listu sa stavkom %1 koja se ponavlja %2 puta"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Pravi listu koja se sastoji od zadane vrednosti koju ponavljamo određeni broj šuta."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrnuto %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrni kopiju spiska."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kao"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ubaci na"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "postavi"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ubacuje stavku na početak spiska."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ubacuje stavku na određeni položaj na spisku."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Dodajte stavku na kraj spiska."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ubacuje stavku na slučajno mesto na spisku."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Postavlja prvu stavku na spisku."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Postavlja stavku na određeni položaj na spisku."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Postavlja poslednju stavku na spisku."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Postavlja slučajnu stavku na spisku."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "rastuće"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "opadajuće"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sortiraj %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortirajte kopiju spiska."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "azbučno, ignoriši mala i velika slova"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "kao brojeve"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "azbučno"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "napravite listu sa teksta"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "da tekst iz liste"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Da se pridruži listu tekstova u jedan tekst, podeljenih za razdvajanje."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Podeliti tekst u listu tekstova, razbijanje na svakom graničnik."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "sa razdvajanje"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "netačno"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vraća ili tačno ili netačno."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tačno"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://sr.wikipedia.org/wiki/Nejednakost"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vraća vrednost „tačno“ ako su oba ulaza jednaka."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vraća vrednost „tačno“ ako je prvi ulaz veći od drugog."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vraća vrednost „tačno“ ako je prvi ulaz veći ili jednak drugom."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vraća vrednost „tačno“ ako je prvi ulaz manji od drugog."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vraća vrednost „tačno“ ako je prvi ulaz manji ili jednak drugom."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vraća vrednost „tačno“ ako su oba ulaza nejednaka."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nije %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vraća vrednost „tačno“ ako je ulaz netačan. Vraća vrednost „netačno“ ako je ulaz tačan."; -Blockly.Msg["LOGIC_NULL"] = "bez vrednosti"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vraća „bez vrednosti“."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ili"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vraća vrednost „tačno“ ako su oba ulaza tačna."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vraća vrednost „tačno“ ako je bar jedan od ulaza tačan."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "proba"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ako je netačno"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ako je tačno"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Proveri uslov u 'test'. Ako je uslov tačan, tada vraća 'if true' vrednost; u drugom slučaju vraća 'if false' vrednost."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vratite zbir dva broja."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vraća količnik dva broja."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vraća razliku dva broja."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vraća proizvod dva broja."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vraća prvi broj stepenovan drugim."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "promeni %1 za %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodajte broj promenljivoj „%1“."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sr.wikipedia.org/wiki/Matematička_konstanta"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "vrati jednu od zajedničkih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ili ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ograniči %1 nisko %2 visoko %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ograničava broj na donje i gornje granice (uključivo)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je deljiv sa"; -Blockly.Msg["MATH_IS_EVEN"] = "je paran"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativan"; -Blockly.Msg["MATH_IS_ODD"] = "je neparan"; -Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivan"; -Blockly.Msg["MATH_IS_PRIME"] = "je prost"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Provjerava da li je broj paran, neparan, prost, cio, pozitivan, negativan, ili da li je deljiv sa određenim brojem. Vraća tačno ili netačno."; -Blockly.Msg["MATH_IS_WHOLE"] = "je ceo"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sr.wikipedia.org/wiki/Kongruencija"; -Blockly.Msg["MATH_MODULO_TITLE"] = "podsetnik od %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vraća podsetnik od deljenja dva broja."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Neki broj."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "prosek spiska"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maks. spiska"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medijana spiska"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min. spiska"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modus spiska"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "slučajna stavka spiska"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardna devijacija spiska"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zbir spiska"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vraća prosek numeričkih vrednosti sa spiska."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vraća najveći broj sa spiska."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vraća medijanu sa spiska."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vraća najmanji broj sa spiska."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vraća najčešće stavke sa spiska."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vraća slučajni element sa spiska."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vraća standardnu devijaciju spiska."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vraća zbir svih brojeva sa spiska."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slučajni razlomak"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vraća slučajni razlomak između 0.0 (uključivo) i 1.0 (isključivo)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "sličajno odabrani cijeli broj od %1 do %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vraća slučajno odabrani celi broj između dve određene granice, uključivo."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sr.wikipedia.org/wiki/Zaokruživanje"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokruži"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokruži naniže"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokruži naviše"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokružite broj na veću ili manju vrednost."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sr.wikipedia.org/wiki/Kvadratni_koren"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "apsolutan"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni koren"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vraća apsolutnu vrednost broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "vratiti e na vlasti broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vraća prirodni logaritam broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vraća logaritam broja sa osnovom 10."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vraća negaciju broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vraća 10-ti stepen broja."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vraća kvadratni koren broja."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "arc cos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "arc sin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "arc tan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sr.wikipedia.org/wiki/Trigonometrijske_funkcije"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vraća arkus kosinus broja."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vraća arkus broja."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vraća arkus tangens broja."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vraća kosinus stepena (ne radijan)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vraća sinus stepena (ne radijan)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vraća tangens stepena (ne radijan)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Napravi promenljivu…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove promenljive:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "dozvoliti izreke"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "sa:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Pokrenite prilagođenu funkciju „%1“."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Pokrenite prilagođenu funkciju „%1“ i koristi njen izlaz."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "sa:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Napravi „%1“"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opisati ovu funkciju..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "uradite nešto"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "da"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Pravi funkciju bez izlaza."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vrati"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Pravi funkciju sa izlazom."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozorenje: Ova funkcija ima duplikate parametara."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Istakni definiciju funkcije"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ukoliko je vrednost tačna, vrati drugu vrednost."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Upozorenje: Ovaj blok se može koristiti jedino u definiciji funkcije."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "naziv ulaza:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Dodajte ulazna funkcija."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ulazi"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Da dodate, uklonite ili pereuporяdočitь ulaza za ovu funkciju."; -Blockly.Msg["REDO"] = "Ponovi"; -Blockly.Msg["REMOVE_COMMENT"] = "Ukloni komentar"; -Blockly.Msg["RENAME_VARIABLE"] = "Preimenuj promenljivu…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj sve „%1“ promenljive u:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "na %1 dodaj tekst %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Dodajte tekst na promenljivu „%1“."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "malim slovima"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "svaka reč velikim slovom"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "velikim slovima"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vraća primerak teksta sa drugačijom veličinom slova."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "preuzmi prvo slovo"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "preuzmi slovo # sa kraja"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "preuzmi slovo #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "preuzmi poslednje slovo"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "preuzmi slučajno slovo"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "u tekstu %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vraća slovo na određeni položaj."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "broj %1 u %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Broji koliko puta se neki tekst pojavljuje unutar nekog drugog teksta."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Dodajte stavku u tekst."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "spajanjem"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Dodaj, ukloni, ili drugačije poredaj odjelke kako bi iznova postavili ovaj tekst blok."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "slovu # sa kraja"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "slovu #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "poslednjem slovu"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "u tekstu"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "preuzmi podnisku iz prvog slova"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "preuzmi podnisku iz slova # sa kraja"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "preuzmi podnisku iz slova #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Vraća određeni deo teksta."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "pronađi prvo pojavljivanje teksta"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "pronađi poslednje pojavljivanje teksta"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "u tekstu %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vraća odnos prvog/zadnjeg pojavljivanja teksta u drugom tekstu. Vrađa %1 ako tekst nije pronađen."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazan"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vraća tačno ako je dostavljeni tekst prazan."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "napiši tekst sa"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Napraviti dio teksta spajajući različite stavke."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "dužina teksta %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vraća broj slova (uključujući razmake) u datom tekstu."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "prikaži %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Prikažite određeni tekst, broj ili drugu vrednost na ekranu."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pitajte korisnika za broj."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pitajte korisnika za unos teksta."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pitaj za broj sa porukom"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "pitaj za tekst sa porukom"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamena %1 sa %2 u %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zamena svih pojava nekog teksta unutar nekog drugog teksta."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "obrnuto %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Obrće redosled karaktera u tekstu."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sr.wikipedia.org/wiki/Niska"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Slovo, reč ili red teksta."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim praznine sa obe strane"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "skratiti prostor sa leve strane"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "skratiti prostor sa desne strane"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vraća kopiju teksta sa uklonjenim prostorom sa jednog od dva kraja."; -Blockly.Msg["TODAY"] = "Danas"; -Blockly.Msg["UNDO"] = "Opozovi"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "stavka"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Napravi „postavi %1“"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vraća vrednost ove promenljive."; -Blockly.Msg["VARIABLES_SET"] = "postavi %1 u %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Napravi „preuzmi %1“"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Postavlja promenljivu tako da bude jednaka ulazu."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Promenljiva pod imenom '%1' već postoji."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Varijabla po imenu '%1' već postoji za drugu varijablu tipa '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dodaj komentar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Ne mogu da obrišem varijablu ’%1’ jer je deo definicije funkcije ’%2’"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Promeni vrednost:"; +Blockly.Msg["CLEAN_UP"] = "Ukloni blokove"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Skupi blokove"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Skupi blok"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "boja 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "boja 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "odnos"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "pomešaj"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Pomešati dve boje zajedno sa datim odnosom (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sr.wikipedia.org/wiki/Boja"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Izaberite boju sa palete."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "slučajna boja"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Izaberite boju nasumice."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "plava"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "zelena"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "crvena"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "boja sa"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kreiraj boju sa određenom količinom crvene,zelene, i plave. Sve vrednosti moraju biti između 0 i 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "Izađite iz petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "nastavi sa sledećom iteracijom petlje"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Napusti sadržaj petlje."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Preskoči ostatak ove petlje, i nastavi sa sledećom iteracijom(ponavljanjem)."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Upozorenje: Ovaj blok može da se upotrebi samo unutar petlje."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "za svaku stavku %1 na spisku %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Za svaku stavku unutar liste, podesi promenjivu '%1' po stavci, i onda načini neke izjave-naredbe."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "prebroj sa %1 od %2 do %3 od %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Imaj promenjivu \"%1\" uzmi vrednosti od početnog broja do zadnjeg broja, brojeći po određenom intervalu, i izvrši određene blokove."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Dodajte uslov bloku „ako“."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Dodaj konačni, catch-all (uhvati sve) uslove if bloka."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Dodaj, ukloni, ili preuredi delove kako bih rekonfigurisali ovaj if blok."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "inače"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "inače-ako"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ako"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ako je vrednost tačna, onda izvrši neke naredbe-izjave."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ako je vrednost tačna, onda izvrši prvi blok naredbi, U suprotnom, izvrši drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi. Ako ni jedna od vrednosti nije tačna, izvrši poslednji blok naredbi."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://sr.wikipedia.org/wiki/For_petlja"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "izvrši"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ponovi %1 puta"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Odraditi neke naredbe nekoliko puta."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ponavljati do"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ponavljati dok"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Dok vrednost nije tačna, onda izvršiti neke naredbe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Dok je vrednost tačna, onda izvršite neke naredbe."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Da obrišem svih %1 blokova?"; +Blockly.Msg["DELETE_BLOCK"] = "Obriši blok"; +Blockly.Msg["DELETE_VARIABLE"] = "Obriši promenljivu '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Da obrišem %1 upotreba promenljive '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Obriši %1 blokova"; +Blockly.Msg["DIALOG_CANCEL"] = "Otkaži"; +Blockly.Msg["DIALOG_OK"] = "U redu"; +Blockly.Msg["DISABLE_BLOCK"] = "Onemogući blok"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Dupliraj"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Omogući blok"; +Blockly.Msg["EXPAND_ALL"] = "Proširi blokove"; +Blockly.Msg["EXPAND_BLOCK"] = "Proširi blok"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Spoljni ulazi"; +Blockly.Msg["HELP"] = "Pomoć"; +Blockly.Msg["INLINE_INPUTS"] = "Unutrašnji ulazi"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "napravi prazan spisak"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "vraća listu, dužine 0, ne sadržavajući evidenciju podataka"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "spisak"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Dodajte, izbrišite, ili preuredite delove kako bi se reorganizovali ovaj blok liste."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "napravi spisak sa"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Dodajte stavku na spisak."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Kreiraj listu sa bilo kojim brojem stavki."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "prva"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# sa kraja"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "preuzmi"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "preuzmi i ukloni"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "poslednja"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "slučajna"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ukloni"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Vraća prvu stavku na spisku."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Vraća stavku na određenu poziciju na listi."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Vraća poslednju stavku na spisku."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Vraća slučajnu stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Uklanja i vraća prvu stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Uklanja i vraća stavku sa određenog položaja na spisku."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Uklanja i vraća poslednju stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Uklanja i vraća slučajnu stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Uklanja prvu stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Uklanja stavku sa određenog položaja na spisku."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Uklanja poslednju stavku sa spiska."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Uklanja slučajnu stavku sa spiska."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "do # od kraja"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "do #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "do poslednje"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "preuzmi podspisak od prve"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "preuzmi podspisak iz # sa kraja"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "preuzmi podspisak od #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Pravi kopiju određenog dela liste."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 je poslednja stavka."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 je prva stavka."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "pronađi prvo pojavljivanje stavke"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "pronađi poslednje pojavljivanje stavke"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Vraća broj prvog i/poslednjeg ulaska elementa u listu. Vraća %1 Ako element nije pronađen."; +Blockly.Msg["LISTS_INLIST"] = "na spisku"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je prazan"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Vraća vrednost tačno ako je lista prazna."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "dužina spiska %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Vraća dužinu spiska."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Napraviti listu sa stavkom %1 koja se ponavlja %2 puta"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Pravi listu koja se sastoji od zadane vrednosti koju ponavljamo određeni broj šuta."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "obrnuto %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Obrni kopiju spiska."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "kao"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ubaci na"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "postavi"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Ubacuje stavku na početak spiska."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Ubacuje stavku na određeni položaj na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Dodajte stavku na kraj spiska."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Ubacuje stavku na slučajno mesto na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Postavlja prvu stavku na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Postavlja stavku na određeni položaj na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Postavlja poslednju stavku na spisku."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Postavlja slučajnu stavku na spisku."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "rastuće"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "opadajuće"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sortiraj %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortirajte kopiju spiska."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "azbučno, ignoriši mala i velika slova"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "kao brojeve"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "azbučno"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "napravite listu sa teksta"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "da tekst iz liste"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Da se pridruži listu tekstova u jedan tekst, podeljenih za razdvajanje."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Podeliti tekst u listu tekstova, razbijanje na svakom graničnik."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "sa razdvajanje"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "netačno"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Vraća ili tačno ili netačno."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tačno"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://sr.wikipedia.org/wiki/Nejednakost"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Vraća vrednost „tačno“ ako su oba ulaza jednaka."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Vraća vrednost „tačno“ ako je prvi ulaz veći od drugog."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Vraća vrednost „tačno“ ako je prvi ulaz veći ili jednak drugom."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Vraća vrednost „tačno“ ako je prvi ulaz manji od drugog."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Vraća vrednost „tačno“ ako je prvi ulaz manji ili jednak drugom."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Vraća vrednost „tačno“ ako su oba ulaza nejednaka."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "nije %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Vraća vrednost „tačno“ ako je ulaz netačan. Vraća vrednost „netačno“ ako je ulaz tačan."; +Blockly.Msg["LOGIC_NULL"] = "bez vrednosti"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Vraća „bez vrednosti“."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "i"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ili"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Vraća vrednost „tačno“ ako su oba ulaza tačna."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Vraća vrednost „tačno“ ako je bar jedan od ulaza tačan."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "proba"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ako je netačno"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ako je tačno"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Proveri uslov u 'test'. Ako je uslov tačan, tada vraća 'if true' vrednost; u drugom slučaju vraća 'if false' vrednost."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Vratite zbir dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Vraća količnik dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Vraća razliku dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Vraća proizvod dva broja."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Vraća prvi broj stepenovan drugim."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "promeni %1 za %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Dodajte broj promenljivoj „%1“."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sr.wikipedia.org/wiki/Matematička_konstanta"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "vrati jednu od zajedničkih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ili ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ograniči %1 nisko %2 visoko %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ograničava broj na donje i gornje granice (uključivo)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je deljiv sa"; +Blockly.Msg["MATH_IS_EVEN"] = "je paran"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je negativan"; +Blockly.Msg["MATH_IS_ODD"] = "je neparan"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je pozitivan"; +Blockly.Msg["MATH_IS_PRIME"] = "je prost"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Provjerava da li je broj paran, neparan, prost, cio, pozitivan, negativan, ili da li je deljiv sa određenim brojem. Vraća tačno ili netačno."; +Blockly.Msg["MATH_IS_WHOLE"] = "je ceo"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sr.wikipedia.org/wiki/Kongruencija"; +Blockly.Msg["MATH_MODULO_TITLE"] = "podsetnik od %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Vraća podsetnik od deljenja dva broja."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Neki broj."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "prosek spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maks. spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medijana spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min. spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modus spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "slučajna stavka spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardna devijacija spiska"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "zbir spiska"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Vraća prosek numeričkih vrednosti sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Vraća najveći broj sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Vraća medijanu sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Vraća najmanji broj sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Vraća najčešće stavke sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Vraća slučajni element sa spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Vraća standardnu devijaciju spiska."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Vraća zbir svih brojeva sa spiska."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slučajni razlomak"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Vraća slučajni razlomak između 0.0 (uključivo) i 1.0 (isključivo)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "sličajno odabrani cijeli broj od %1 do %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Vraća slučajno odabrani celi broj između dve određene granice, uključivo."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sr.wikipedia.org/wiki/Zaokruživanje"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "zaokruži"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "zaokruži naniže"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "zaokruži naviše"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Zaokružite broj na veću ili manju vrednost."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sr.wikipedia.org/wiki/Kvadratni_koren"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "apsolutan"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratni koren"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Vraća apsolutnu vrednost broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "vratiti e na vlasti broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Vraća prirodni logaritam broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Vraća logaritam broja sa osnovom 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Vraća negaciju broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Vraća 10-ti stepen broja."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Vraća kvadratni koren broja."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arc cos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arc sin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arc tan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sr.wikipedia.org/wiki/Trigonometrijske_funkcije"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Vraća arkus kosinus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Vraća arkus broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Vraća arkus tangens broja."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Vraća kosinus stepena (ne radijan)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Vraća sinus stepena (ne radijan)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Vraća tangens stepena (ne radijan)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Napravi promenljivu…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Ime nove promenljive:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "dozvoliti izreke"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "sa:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Pokrenite prilagođenu funkciju „%1“."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Pokrenite prilagođenu funkciju „%1“ i koristi njen izlaz."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "sa:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Napravi „%1“"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Opisati ovu funkciju..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "uradite nešto"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "da"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Pravi funkciju bez izlaza."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "vrati"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Pravi funkciju sa izlazom."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Upozorenje: Ova funkcija ima duplikate parametara."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Istakni definiciju funkcije"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ukoliko je vrednost tačna, vrati drugu vrednost."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Upozorenje: Ovaj blok se može koristiti jedino u definiciji funkcije."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "naziv ulaza:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Dodajte ulazna funkcija."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ulazi"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Da dodate, uklonite ili pereuporяdočitь ulaza za ovu funkciju."; +Blockly.Msg["REDO"] = "Ponovi"; +Blockly.Msg["REMOVE_COMMENT"] = "Ukloni komentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Preimenuj promenljivu…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Preimenuj sve „%1“ promenljive u:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "na %1 dodaj tekst %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Dodajte tekst na promenljivu „%1“."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "malim slovima"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "svaka reč velikim slovom"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "velikim slovima"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Vraća primerak teksta sa drugačijom veličinom slova."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "preuzmi prvo slovo"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "preuzmi slovo # sa kraja"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "preuzmi slovo #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "preuzmi poslednje slovo"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "preuzmi slučajno slovo"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "u tekstu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Vraća slovo na određeni položaj."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "broj %1 u %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Broji koliko puta se neki tekst pojavljuje unutar nekog drugog teksta."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Dodajte stavku u tekst."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "spajanjem"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Dodaj, ukloni, ili drugačije poredaj odjelke kako bi iznova postavili ovaj tekst blok."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "slovu # sa kraja"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "slovu #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "poslednjem slovu"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "u tekstu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "preuzmi podnisku iz prvog slova"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "preuzmi podnisku iz slova # sa kraja"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "preuzmi podnisku iz slova #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Vraća određeni deo teksta."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "pronađi prvo pojavljivanje teksta"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "pronađi poslednje pojavljivanje teksta"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "u tekstu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Vraća odnos prvog/zadnjeg pojavljivanja teksta u drugom tekstu. Vrađa %1 ako tekst nije pronađen."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je prazan"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Vraća tačno ako je dostavljeni tekst prazan."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "napiši tekst sa"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Napraviti dio teksta spajajući različite stavke."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "dužina teksta %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Vraća broj slova (uključujući razmake) u datom tekstu."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "prikaži %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Prikažite određeni tekst, broj ili drugu vrednost na ekranu."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Pitajte korisnika za broj."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Pitajte korisnika za unos teksta."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "pitaj za broj sa porukom"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "pitaj za tekst sa porukom"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "zamena %1 sa %2 u %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Zamena svih pojava nekog teksta unutar nekog drugog teksta."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "obrnuto %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Obrće redosled karaktera u tekstu."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sr.wikipedia.org/wiki/Niska"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Slovo, reč ili red teksta."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim praznine sa obe strane"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "skratiti prostor sa leve strane"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "skratiti prostor sa desne strane"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Vraća kopiju teksta sa uklonjenim prostorom sa jednog od dva kraja."; +Blockly.Msg["TODAY"] = "Danas"; +Blockly.Msg["UNDO"] = "Opozovi"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "stavka"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Napravi „postavi %1“"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Vraća vrednost ove promenljive."; +Blockly.Msg["VARIABLES_SET"] = "postavi %1 u %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Napravi „preuzmi %1“"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Postavlja promenljivu tako da bude jednaka ulazu."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Promenljiva pod imenom '%1' već postoji."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Varijabla po imenu '%1' već postoji za drugu varijablu tipa '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sr.js b/msg/js/sr.js index 679e9d0cab7..940f90eefd3 100644 --- a/msg/js/sr.js +++ b/msg/js/sr.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Додај коментар"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Није могуће избрисати променљиву „%1” јер је део дефиниције функције „%2”"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Промена вредности:"; -Blockly.Msg["CLEAN_UP"] = "Очисти блокове"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Срушени блокови садрже упозорења."; -Blockly.Msg["COLLAPSE_ALL"] = "Скупи блокове"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Скупи блок"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "боја 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "боја 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "однос"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "помешај"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Меша две боје заједно са датим односом (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sr.wikipedia.org/wiki/Боја"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Одаберите боју са палете."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случајна боја"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Одаберите боју насумично."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "плава"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "зелена"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "црвена"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "боја са"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Направите боју са одређеном количином црвене, зелене и плаве. Све вредности морају бити између 0 и 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "изађи из петље"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "настави са следећом итерацијом петље"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Напусти садржај петље."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Прескочи остатак ове петље, и настави са следећом итерацијом(понављанјем)."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Упозорење: Овај блок може да се употреби само унутар петље."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "за сваку ставку %1 на списку %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "За сваку ставку унутар листе, подеси промењиву '%1' по ставци, и онда начини неке изјаве-наредбе."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "преброј са %1 од %2 до %3 од %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Имај промењиву \"%1\" узми вредности од почетног броја до задњег броја, бројећи по одређеном интервалу, и изврши одређене блокове."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Додајте услов блоку „ако“."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Додај коначни, catch-all (ухвати све) услове иф блока."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Додај, уклони, или преуреди делове како бих реконфигурисали овај иф блок."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "иначе"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "иначе-ако"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ако"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ако је вредност тачна, онда изврши неке наредбе-изјаве."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ако је вредност тачна, онда изврши први блок наредби, У супротном, изврши други блок наредби."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби. Ако ни једна од вредности није тачна, изврши последнји блок наредби."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://sr.wikipedia.org/wiki/For_петља"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "изврши"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "понови %1 пута"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Изврши неке наредбе неколико пута."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "понављати до"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "понављати док"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Док је вредност нетачна, извршава неке наредбе."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Док је вредност тачна, извршава неке наредбе."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Избрисати свих %1 блокова?"; -Blockly.Msg["DELETE_BLOCK"] = "Избриши блок"; -Blockly.Msg["DELETE_VARIABLE"] = "Избриши променљиву ’%1’"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Избрисати %1 употребу променљиве „%2”?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Избриши %1 блокова"; -Blockly.Msg["DIALOG_CANCEL"] = "Откажи"; -Blockly.Msg["DIALOG_OK"] = "У реду"; -Blockly.Msg["DISABLE_BLOCK"] = "Онемогући блок"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Дуплирај"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Дуплирај коментар"; -Blockly.Msg["ENABLE_BLOCK"] = "Омогући блок"; -Blockly.Msg["EXPAND_ALL"] = "Прошири блокове"; -Blockly.Msg["EXPAND_BLOCK"] = "Прошири блок"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Спољашњи улази"; -Blockly.Msg["HELP"] = "Помоћ"; -Blockly.Msg["INLINE_INPUTS"] = "Редни улази"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "направи празан списак"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Враћа списак, дужине 0, без података"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "списак"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Додајте, избришите, или преуредите делове како би се реорганизовали овај блок листе."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "направи списак са"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Додајте ставку на списак."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Направите списак са било којим бројем ставки."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "прва"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# са краја"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "преузми"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "преузми и уклони"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последња"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "случајна"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "уклони"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Враћа прву ставку на списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Враћа ставку на одређену позицију на списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Враћа последњу ставку са списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Враћа случајну ставку са списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Уклања и враћа прву ставку са списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Уклања и враћа ставку са одређеног положаја са списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Уклања и враћа последњу ставку са списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Уклања и враћа случајну ставку са списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Уклања прву ставку са списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Уклања ставку са одређеног положаја са списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Уклања последњу ставку са списка."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Уклања случајну ставку са списка."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "до # од краја"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "до #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "до последње"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "преузми подсписак од прве"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "преузми подсписак из # са краја"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "преузми подсписак од #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Прави копију одређеног дела списка."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 је последња ставка."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 је прва ставка."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "пронађи прво појављивање ставке"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "пронађи последње појављивање ставке"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Враћа индекс прве/последње појаве ставке на списку. Враћа %1 ако ставка није пронађена."; -Blockly.Msg["LISTS_INLIST"] = "на списку"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 је празан"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Враћа вредност „тачно” ако је списак празан."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "дужина списка %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Враћа дужину списка."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "Направити списак са ставком %1 која се понавља %2 пута"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Прави листу која се састоји од задане вредности коју понавлјамо одређени број шута."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "обрнуто %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Обрни копију списка."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "као"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "убаци на"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "постави"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Убацује ставку на почетак списка."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Убацује ставку на одређени положај на списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Додајте ставку на крај списка."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Убацује ставку на случајно место на списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Поставља прву ставку на списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Поставља ставку на одређени положај на списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Поставља последњу ставку на списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Поставља случајну ставку на списку."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "растуће"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "опадајуће"; -Blockly.Msg["LISTS_SORT_TITLE"] = "сортирај %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сортирајте копију списка."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "азбучно, игнориши мала и велика слова"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "као бројеве"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "азбучно"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "направите листу са текста"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "направи текст из списка"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Спаја списак текстова у један текст, раздвојених граничником."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Раздваја текст у списак текстова, преламањем на сваком граничнику."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "са граничником"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "нетачно"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Враћа или „тачно“ или „нетачно“."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "тачно"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://sr.wikipedia.org/wiki/Неједнакост"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Враћа вредност „тачно“ ако су оба улаза једнака."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Враћа вредност „тачно“ ако је први унос већи од другог."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Враћа вредност „тачно“ ако је први унос већи или једнак другом."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Враћа вредност „тачно“ ако је први унос мањи од другог."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Враћа вредност „тачно“ ако је први унос мањи или једнак другом."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Враћа вредност „тачно“ ако су оба уноса неједнака."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "није %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Враћа вредност „тачно“ ако је унос нетачан. Враћа вредност „нетачно“ ако је унос тачан."; -Blockly.Msg["LOGIC_NULL"] = "без вредности"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Враћа „без вредности“."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Враћа вредност „тачно“ ако су оба уноса тачна."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Враћа вредност „тачно“ ако је бар један од уноса тачан."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "проба"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ако је нетачно"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ако је тачно"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Проверите услов у „проба”. Ако је услов тачан, тада враћа „ако је тачно” вредност; у другом случају враћа „ако је нетачно” вредност."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://sr.wikipedia.org/wiki/Аритметика"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Враћа збир два броја."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Враћа количник два броја."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Враћа разлику два броја."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Враћа производ два броја."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Враћа први број степенован другим."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "атан2 од X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Врати арктангенту тачке (X, Y) у степенима од -180 до 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "промени %1 за %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Додаје број променљивој „%1”."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sr.wikipedia.org/wiki/Математичка_константа"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Враћа једну од заједничких константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконачно)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ограничи %1 ниско %2 високо %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ограничава број на доње и горње границе (укључиво)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "је дељив са"; -Blockly.Msg["MATH_IS_EVEN"] = "је паран"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "је негативан"; -Blockly.Msg["MATH_IS_ODD"] = "је непаран"; -Blockly.Msg["MATH_IS_POSITIVE"] = "је позитиван"; -Blockly.Msg["MATH_IS_PRIME"] = "је прост"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверава да ли је број паран, непаран, прост, цео, позитиван, негативан, или дељив са одређеним бројем. Враћа „тачно” или „нетачно”."; -Blockly.Msg["MATH_IS_WHOLE"] = "је цео"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sr.wikipedia.org/wiki/Конгруенција"; -Blockly.Msg["MATH_MODULO_TITLE"] = "подсетник од %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Враћа подсетник од дељења два броја."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://sr.wikipedia.org/wiki/Број"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Број."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "просек списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "макс. списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медијана списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "мин. списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "модус списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случајна ставка списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандардна девијација списка"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "збир списка"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Враћа просек (аритметичку средину) бројева са списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Враћа највећи број са списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Враћа медијану са списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Враћа најмањи број са списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Враћа списак најчешћих ставки на списку."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Враћа случајни елемент са списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Враћа стандардну девијацију списка."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Враћа збир свих бројева са списка."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "случајни разломак"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Враћа случајни разломак између 0.0 (укључиво) и 1.0 (искључиво)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "сличајно одабрани цијели број од %1 до %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Враћа случајно одабрани цели број између две одређене границе, уклјучиво."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sr.wikipedia.org/wiki/Заокруживање"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "заокружи"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "заокружи наниже"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "заокружи навише"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Заокружује број на већу или мању вредност."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sr.wikipedia.org/wiki/Квадратни_корен"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "апсолутно"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратни корен"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Враћа апсолутну вредност броја."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Враћа е-број на степен броја."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Враћа природни логаритам броја."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Враћа логаритам броја са основом 10."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Враћа негацију броја."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Враћа 10-ти степен броја."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Враћа квадратни корен броја."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "арц цос"; -Blockly.Msg["MATH_TRIG_ASIN"] = "арц син"; -Blockly.Msg["MATH_TRIG_ATAN"] = "арц тан"; -Blockly.Msg["MATH_TRIG_COS"] = "цос"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sr.wikipedia.org/wiki/Тригонометријске_функције"; -Blockly.Msg["MATH_TRIG_SIN"] = "син"; -Blockly.Msg["MATH_TRIG_TAN"] = "тан"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Враћа аркус косинус броја."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Враћа аркус синус броја."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Враћа аркус тангенс броја."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Враћа косинус степена (не радијан)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Враћа синус степена (не радијан)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Враћа тангенс степена (не радијан)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Направи променљиву боје..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Направи променљиву броја..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Направи променљиву ниске..."; -Blockly.Msg["NEW_VARIABLE"] = "Направи променљиву…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Име нове променљиве:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Нова врста променљиве:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дозволи изјаве"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "са:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://sr.wikipedia.org/wiki/Потпрограм"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Покреће кориснички дефинисану функцију „%1”."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://sr.wikipedia.org/wiki/Потпрограм"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Покреће кориснички дефинисану функцију „%1” и користи њен излаз."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "са:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Направи „%1”"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишите ову функцију…"; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "урадите нешто"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "до"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Прави функцију без излаза."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "врати"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Прави функцију са излазом."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Упозорење: Ова функција има дуплиране параметре."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Истакни дефиницију функције"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ако је прва вредност тачна, враћа другу вредност."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Упозорење: Овај блок се може користити једино унутар дефиниције функције."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "име параметра:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Додајте улазни параметар финкцији."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "улази"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Додајте, уклоните или преуредите уносе за ову функцију."; -Blockly.Msg["REDO"] = "Понови"; -Blockly.Msg["REMOVE_COMMENT"] = "Уклони коментар"; -Blockly.Msg["RENAME_VARIABLE"] = "Преименуј променљиву…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Преименуј све ’%1’ променљиве у:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "на %1 додај текст %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Додаје текст променљивој „%1”."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "малим словима"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "свака реч великим словом"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "великим словима"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Враћа примерак текста са другачијом величином слова."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "преузми прво слово"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "преузми слово # са краја"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "преузми слово #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "преузми последње слово"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "преузми случајно слово"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "у тексту %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Враћа слово на одређени положај."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "број %1 у %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Броји колико пута се неки текст појављује унутар неког другог текста."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Додајте ставку у текст."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "спој"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Додај, уклони, или другачије поредај одјелке како би изнова поставили овај текст блок."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "слову # са краја"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "слову #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "последњем слову"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тексту"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "преузми подниску из првог слова"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "преузми подниску из слова # са краја"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "преузми подниску из слова #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Враћа одређени део текста."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "пронађи прво појављивање текста"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "пронађи последње појављивање текста"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тексту %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Враћа индекс првог/задњег појављивања првог текста у другом тексту. Враћа %1 ако текст није пронађен."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 је празан"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Враћа „тачно” ако је достављени текст празан."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "напиши текст са"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Направити дио текста спајајући различите ставке."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "дужина текста %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Враћа број слова (уклјучујући размаке) у датом тексту."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "прикажи %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Прикажите одређени текст, број или другу вредност на екрану."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Питајте корисника за број."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Питајте корисника за унос текста."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "питај за број са поруком"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "питај за текст са поруком"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замена %1 са %2 у %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замена свих појава неког текста унутар неког другог текста."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "обрнуто %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Обрће редослед карактера у тексту."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sr.wikipedia.org/wiki/Ниска"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Слово, реч или ред текста."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "трим празнине са обе стране"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "скратити простор са леве стране"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "скратити простор са десне стране"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Враћа копију текста са уклонјеним простором са једног од два краја."; -Blockly.Msg["TODAY"] = "Данас"; -Blockly.Msg["UNDO"] = "Опозови"; -Blockly.Msg["UNNAMED_KEY"] = "неименовано"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ставка"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Направи блок за доделу вредности %1"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Враћа вредност ове променљиве."; -Blockly.Msg["VARIABLES_SET"] = "постави %1 у %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Направи блок за преузимање вредности из „%1”"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Поставља променљиву тако да буде једнака улазу."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Променљива под именом ’%1’ већ постоји."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Променљива под именом ’%1’ већ постоји за други тип: ’%2’."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Блоклијев радни простор"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Кажите нешто…"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Додај коментар"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Није могуће избрисати променљиву „%1” јер је део дефиниције функције „%2”"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Промена вредности:"; +Blockly.Msg["CLEAN_UP"] = "Очисти блокове"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Срушени блокови садрже упозорења."; +Blockly.Msg["COLLAPSE_ALL"] = "Скупи блокове"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Скупи блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "боја 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "боја 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "http://meyerweb.com/eric/tools/color-blend/"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "однос"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "помешај"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Меша две боје заједно са датим односом (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sr.wikipedia.org/wiki/Боја"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Одаберите боју са палете."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "случајна боја"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Одаберите боју насумично."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "плава"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелена"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "http://www.december.com/html/spec/colorper.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "црвена"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "боја са"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Направите боју са одређеном количином црвене, зелене и плаве. Све вредности морају бити између 0 и 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "изађи из петље"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "настави са следећом итерацијом петље"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Напусти садржај петље."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Прескочи остатак ове петље, и настави са следећом итерацијом(понављанјем)."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Упозорење: Овај блок може да се употреби само унутар петље."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "за сваку ставку %1 на списку %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "За сваку ставку унутар листе, подеси промењиву '%1' по ставци, и онда начини неке изјаве-наредбе."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "преброј са %1 од %2 до %3 од %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Имај промењиву \"%1\" узми вредности од почетног броја до задњег броја, бројећи по одређеном интервалу, и изврши одређене блокове."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Додајте услов блоку „ако“."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Додај коначни, catch-all (ухвати све) услове иф блока."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Додај, уклони, или преуреди делове како бих реконфигурисали овај иф блок."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "иначе"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "иначе-ако"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ако"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ако је вредност тачна, онда изврши неке наредбе-изјаве."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ако је вредност тачна, онда изврши први блок наредби, У супротном, изврши други блок наредби."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби. Ако ни једна од вредности није тачна, изврши последнји блок наредби."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://sr.wikipedia.org/wiki/For_петља"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "изврши"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "понови %1 пута"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Изврши неке наредбе неколико пута."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "понављати до"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "понављати док"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Док је вредност нетачна, извршава неке наредбе."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Док је вредност тачна, извршава неке наредбе."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Избрисати свих %1 блокова?"; +Blockly.Msg["DELETE_BLOCK"] = "Избриши блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Избриши променљиву ’%1’"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Избрисати %1 употребу променљиве „%2”?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Избриши %1 блокова"; +Blockly.Msg["DIALOG_CANCEL"] = "Откажи"; +Blockly.Msg["DIALOG_OK"] = "У реду"; +Blockly.Msg["DISABLE_BLOCK"] = "Онемогући блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дуплирај"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дуплирај коментар"; +Blockly.Msg["ENABLE_BLOCK"] = "Омогући блок"; +Blockly.Msg["EXPAND_ALL"] = "Прошири блокове"; +Blockly.Msg["EXPAND_BLOCK"] = "Прошири блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Спољашњи улази"; +Blockly.Msg["HELP"] = "Помоћ"; +Blockly.Msg["INLINE_INPUTS"] = "Редни улази"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "направи празан списак"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Враћа списак, дужине 0, без података"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "списак"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Додајте, избришите, или преуредите делове како би се реорганизовали овај блок листе."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "направи списак са"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Додајте ставку на списак."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Направите списак са било којим бројем ставки."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "прва"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# са краја"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "преузми"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "преузми и уклони"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "последња"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "случајна"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "уклони"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Враћа прву ставку на списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Враћа ставку на одређену позицију на списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Враћа последњу ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Враћа случајну ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Уклања и враћа прву ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Уклања и враћа ставку са одређеног положаја са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Уклања и враћа последњу ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Уклања и враћа случајну ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Уклања прву ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Уклања ставку са одређеног положаја са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Уклања последњу ставку са списка."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Уклања случајну ставку са списка."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "до # од краја"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "до #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "до последње"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "преузми подсписак од прве"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "преузми подсписак из # са краја"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "преузми подсписак од #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Прави копију одређеног дела списка."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 је последња ставка."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 је прва ставка."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "пронађи прво појављивање ставке"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "пронађи последње појављивање ставке"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Враћа индекс прве/последње појаве ставке на списку. Враћа %1 ако ставка није пронађена."; +Blockly.Msg["LISTS_INLIST"] = "на списку"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 је празан"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Враћа вредност „тачно” ако је списак празан."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "дужина списка %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Враћа дужину списка."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "Направити списак са ставком %1 која се понавља %2 пута"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Прави листу која се састоји од задане вредности коју понавлјамо одређени број шута."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "обрнуто %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Обрни копију списка."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "као"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "убаци на"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "постави"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Убацује ставку на почетак списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Убацује ставку на одређени положај на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Додајте ставку на крај списка."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Убацује ставку на случајно место на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Поставља прву ставку на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Поставља ставку на одређени положај на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Поставља последњу ставку на списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Поставља случајну ставку на списку."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "растуће"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "опадајуће"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сортирај %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сортирајте копију списка."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "азбучно, игнориши мала и велика слова"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "као бројеве"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "азбучно"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "направите листу са текста"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "направи текст из списка"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Спаја списак текстова у један текст, раздвојених граничником."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Раздваја текст у списак текстова, преламањем на сваком граничнику."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "са граничником"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "нетачно"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Враћа или „тачно“ или „нетачно“."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "тачно"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://sr.wikipedia.org/wiki/Неједнакост"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Враћа вредност „тачно“ ако су оба улаза једнака."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Враћа вредност „тачно“ ако је први унос већи од другог."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Враћа вредност „тачно“ ако је први унос већи или једнак другом."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Враћа вредност „тачно“ ако је први унос мањи од другог."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Враћа вредност „тачно“ ако је први унос мањи или једнак другом."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Враћа вредност „тачно“ ако су оба уноса неједнака."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "није %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Враћа вредност „тачно“ ако је унос нетачан. Враћа вредност „нетачно“ ако је унос тачан."; +Blockly.Msg["LOGIC_NULL"] = "без вредности"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Враћа „без вредности“."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "и"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "или"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Враћа вредност „тачно“ ако су оба уноса тачна."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Враћа вредност „тачно“ ако је бар један од уноса тачан."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "проба"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ако је нетачно"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ако је тачно"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Проверите услов у „проба”. Ако је услов тачан, тада враћа „ако је тачно” вредност; у другом случају враћа „ако је нетачно” вредност."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://sr.wikipedia.org/wiki/Аритметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Враћа збир два броја."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Враћа количник два броја."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Враћа разлику два броја."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Враћа производ два броја."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Враћа први број степенован другим."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "атан2 од X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Врати арктангенту тачке (X, Y) у степенима од -180 до 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "промени %1 за %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Додаје број променљивој „%1”."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sr.wikipedia.org/wiki/Математичка_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Враћа једну од заједничких константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконачно)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "ограничи %1 ниско %2 високо %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ограничава број на доње и горње границе (укључиво)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "је дељив са"; +Blockly.Msg["MATH_IS_EVEN"] = "је паран"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "је негативан"; +Blockly.Msg["MATH_IS_ODD"] = "је непаран"; +Blockly.Msg["MATH_IS_POSITIVE"] = "је позитиван"; +Blockly.Msg["MATH_IS_PRIME"] = "је прост"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Проверава да ли је број паран, непаран, прост, цео, позитиван, негативан, или дељив са одређеним бројем. Враћа „тачно” или „нетачно”."; +Blockly.Msg["MATH_IS_WHOLE"] = "је цео"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sr.wikipedia.org/wiki/Конгруенција"; +Blockly.Msg["MATH_MODULO_TITLE"] = "подсетник од %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Враћа подсетник од дељења два броја."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://sr.wikipedia.org/wiki/Број"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Број."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "просек списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "макс. списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медијана списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "мин. списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "модус списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "случајна ставка списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандардна девијација списка"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "збир списка"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Враћа просек (аритметичку средину) бројева са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Враћа највећи број са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Враћа медијану са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Враћа најмањи број са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Враћа списак најчешћих ставки на списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Враћа случајни елемент са списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Враћа стандардну девијацију списка."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Враћа збир свих бројева са списка."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "случајни разломак"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Враћа случајни разломак између 0.0 (укључиво) и 1.0 (искључиво)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "сличајно одабрани цијели број од %1 до %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Враћа случајно одабрани цели број између две одређене границе, уклјучиво."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sr.wikipedia.org/wiki/Заокруживање"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "заокружи"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "заокружи наниже"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "заокружи навише"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Заокружује број на већу или мању вредност."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sr.wikipedia.org/wiki/Квадратни_корен"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "апсолутно"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратни корен"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Враћа апсолутну вредност броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Враћа е-број на степен броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Враћа природни логаритам броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Враћа логаритам броја са основом 10."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Враћа негацију броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Враћа 10-ти степен броја."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Враћа квадратни корен броја."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "арц цос"; +Blockly.Msg["MATH_TRIG_ASIN"] = "арц син"; +Blockly.Msg["MATH_TRIG_ATAN"] = "арц тан"; +Blockly.Msg["MATH_TRIG_COS"] = "цос"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sr.wikipedia.org/wiki/Тригонометријске_функције"; +Blockly.Msg["MATH_TRIG_SIN"] = "син"; +Blockly.Msg["MATH_TRIG_TAN"] = "тан"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Враћа аркус косинус броја."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Враћа аркус синус броја."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Враћа аркус тангенс броја."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Враћа косинус степена (не радијан)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Враћа синус степена (не радијан)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Враћа тангенс степена (не радијан)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Направи променљиву боје..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Направи променљиву броја..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Направи променљиву ниске..."; +Blockly.Msg["NEW_VARIABLE"] = "Направи променљиву…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Име нове променљиве:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Нова врста променљиве:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дозволи изјаве"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "са:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://sr.wikipedia.org/wiki/Потпрограм"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Покреће кориснички дефинисану функцију „%1”."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://sr.wikipedia.org/wiki/Потпрограм"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Покреће кориснички дефинисану функцију „%1” и користи њен излаз."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "са:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Направи „%1”"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишите ову функцију…"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "урадите нешто"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "до"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Прави функцију без излаза."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "врати"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Прави функцију са излазом."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Упозорење: Ова функција има дуплиране параметре."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Истакни дефиницију функције"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ако је прва вредност тачна, враћа другу вредност."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Упозорење: Овај блок се може користити једино унутар дефиниције функције."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "име параметра:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Додајте улазни параметар финкцији."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "улази"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Додајте, уклоните или преуредите уносе за ову функцију."; +Blockly.Msg["REDO"] = "Понови"; +Blockly.Msg["REMOVE_COMMENT"] = "Уклони коментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Преименуј променљиву…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Преименуј све ’%1’ променљиве у:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "на %1 додај текст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Додаје текст променљивој „%1”."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "малим словима"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "свака реч великим словом"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "великим словима"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Враћа примерак текста са другачијом величином слова."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "преузми прво слово"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "преузми слово # са краја"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "преузми слово #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "преузми последње слово"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "преузми случајно слово"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "у тексту %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Враћа слово на одређени положај."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "број %1 у %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Броји колико пута се неки текст појављује унутар неког другог текста."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Додајте ставку у текст."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "спој"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Додај, уклони, или другачије поредај одјелке како би изнова поставили овај текст блок."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "слову # са краја"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "слову #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "последњем слову"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тексту"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "преузми подниску из првог слова"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "преузми подниску из слова # са краја"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "преузми подниску из слова #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Враћа одређени део текста."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "пронађи прво појављивање текста"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "пронађи последње појављивање текста"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тексту %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Враћа индекс првог/задњег појављивања првог текста у другом тексту. Враћа %1 ако текст није пронађен."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 је празан"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Враћа „тачно” ако је достављени текст празан."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "напиши текст са"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Направити дио текста спајајући различите ставке."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "дужина текста %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Враћа број слова (уклјучујући размаке) у датом тексту."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "прикажи %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Прикажите одређени текст, број или другу вредност на екрану."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Питајте корисника за број."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Питајте корисника за унос текста."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "питај за број са поруком"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "питај за текст са поруком"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замена %1 са %2 у %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замена свих појава неког текста унутар неког другог текста."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "обрнуто %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Обрће редослед карактера у тексту."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sr.wikipedia.org/wiki/Ниска"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Слово, реч или ред текста."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "трим празнине са обе стране"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "скратити простор са леве стране"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "скратити простор са десне стране"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Враћа копију текста са уклонјеним простором са једног од два краја."; +Blockly.Msg["TODAY"] = "Данас"; +Blockly.Msg["UNDO"] = "Опозови"; +Blockly.Msg["UNNAMED_KEY"] = "неименовано"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ставка"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Направи блок за доделу вредности %1"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Враћа вредност ове променљиве."; +Blockly.Msg["VARIABLES_SET"] = "постави %1 у %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Направи блок за преузимање вредности из „%1”"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Поставља променљиву тако да буде једнака улазу."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Променљива под именом ’%1’ већ постоји."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Променљива под именом ’%1’ већ постоји за други тип: ’%2’."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Блоклијев радни простор"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Кажите нешто…"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sv.js b/msg/js/sv.js index 529b49ec37f..0b06c60f215 100644 --- a/msg/js/sv.js +++ b/msg/js/sv.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Lägg till kommentar"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kan inte radera variabeln '%1' eftersom den är en del av definition för funktionen '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ändra värde:"; -Blockly.Msg["CLEAN_UP"] = "Städa upp block"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Hopfällda block innehåller varningar."; -Blockly.Msg["COLLAPSE_ALL"] = "Fäll ihop block"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Fäll ihop block"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "färg 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "färg 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "förhållande"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blanda"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blandar ihop två färger med ett bestämt förhållande (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sv.wikipedia.org/wiki/Färg"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Välj en färg från paletten."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "slumpfärg"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Slumpa fram en färg."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "blå"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "grön"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "röd"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "färg med"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Skapa en färg med det angivna mängden röd, grön och blå. Alla värden måste vara mellan 0 och 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "bryt ut ur loop"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fortsätta med nästa upprepning av loop"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bryt ut ur den innehållande upprepningen."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Hoppa över resten av denna loop och fortsätt med nästa loop."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Varning: Detta block kan endast användas i en loop."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "för varje föremål %1 i listan %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "För varje objekt i en lista, ange variabeln '%1' till objektet, och utför sedan några kommandon."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; -Blockly.Msg["CONTROLS_FOR_TITLE"] = "räkna med %1 från %2 till %3 med %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Låt variabeln \"%1\" anta värden från starttalet till sluttalet, beräknat med det angivna intervallet, och utför de angivna blocken."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Lägg till ett villkor blocket \"om\"."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Lägg till ett sista villkor som täcker alla alternativ som är kvar för \"if\"-blocket."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera blocket \"om\"."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "annars"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "annars om"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "om"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Om ett värde är sant, utför några kommandon."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Om värdet är sant, utför det första kommandoblocket. Utför annars det andra kommandoblocket."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket. Om ingen av värdena är sanna, utför det sista kommandoblocket."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "utför"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "upprepa %1 gånger"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Utför några kommandon flera gånger."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "upprepa tills"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "upprepa så länge"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Medan ett värde är falskt, utför några kommandon."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Medan ett värde är sant, utför några kommandon."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Radera alla %1 block?"; -Blockly.Msg["DELETE_BLOCK"] = "Radera block"; -Blockly.Msg["DELETE_VARIABLE"] = "Radera variabeln \"%1\""; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Radera %1 användningar av variabeln \"%2\"?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Radera %1 block"; -Blockly.Msg["DIALOG_CANCEL"] = "Avbryt"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Inaktivera block"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicera"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicera kommentar"; -Blockly.Msg["ENABLE_BLOCK"] = "Aktivera block"; -Blockly.Msg["EXPAND_ALL"] = "Fäll ut block"; -Blockly.Msg["EXPAND_BLOCK"] = "Fäll ut block"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Externa inmatningar"; -Blockly.Msg["HELP"] = "Hjälp"; -Blockly.Msg["INLINE_INPUTS"] = "Radinmatning"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "skapa tom lista"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ger tillbaka en lista utan någon data, alltså med längden 0"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Lägg till, ta bort eller ändra ordningen på objekten för att göra om det här \"list\"-blocket."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "skapa lista med"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Lägg till ett föremål till listan."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Skapa en lista med valfritt antal föremål."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "första"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# från slutet"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "hämta"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hämta och ta bort"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "sista"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "slumpad"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ta bort"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnerar det första objektet i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ger tillbaka objektet på den efterfrågade positionen i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnerar det sista objektet i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returnerar ett slumpmässigt objekt i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Tar bort och återställer det första objektet i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Tar bort och återställer objektet på den specificerade positionen i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Tar bort och återställer det sista objektet i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Tar bort och återställer ett slumpmässigt objekt i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Tar bort det första objektet i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Tar bort objektet på den specificerade positionen i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Tar bort det sista objektet i en lista."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Tar bort en slumpmässig post i en lista."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "till # från slutet"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "till #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "till sista"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "få underlista från första"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "få underlista från # från slutet"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "få underlista från #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Skapar en kopia av den specificerade delen av en lista."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 är det sista objektet."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 är det första objektet."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "hitta första förekomsten av objektet"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "hitta sista förekomsten av objektet"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Ger tillbaka den första/sista förekomsten av objektet i listan. Returnerar %1 om objektet inte hittas."; -Blockly.Msg["LISTS_INLIST"] = "i listan"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 är tom"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnerar sant om listan är tom."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "längden på %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnerar längden på en lista."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "skapa lista med föremålet %1 upprepat %2 gånger"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Skapar en lista som innehåller ett valt värde upprepat ett bestämt antalet gånger."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "vänd på %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Vänd på en kopia av en lista."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "som"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "Sätt in vid"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "ange"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "sätter in objektet i början av en lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Sätter in objektet vid en specificerad position i en lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Lägg till objektet i slutet av en lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "sätter in objektet på en slumpad position i en lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Anger det första objektet i en lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sätter in objektet vid en specificerad position i en lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Anger det sista elementet i en lista."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sätter in ett slumpat objekt i en lista."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "stigande"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "fallande"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sortera %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortera en kopia av en lista."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetiskt, ignorera skiftläge"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeriskt"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetiskt"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "skapa lista från text"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "skapa text från lista"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Sammanfoga en textlista till en text, som separeras av en avgränsare."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dela upp text till en textlista och bryt vid varje avgränsare."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "med avgränsare"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falskt"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnerar antingen sant eller falskt."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "sant"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://sv.wikipedia.org/wiki/Olikhet"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ger tillbaka sant om båda värdena är lika med varandra."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ger tillbaka sant om det första värdet är större än det andra."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ger tillbaka sant om det första värdet är större än eller lika med det andra."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ger tillbaka sant om det första värdet är mindre än det andra."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ger tillbaka sant om det första värdet är mindre än eller lika med det andra."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ger tillbaka sant om båda värdena inte är lika med varandra."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "inte %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ger tillbaka sant om inmatningen är falsk. Ger tillbaka falskt och inmatningen är sann."; -Blockly.Msg["LOGIC_NULL"] = "null"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://sv.wikipedia.org/wiki/Null"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returnerar null."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "och"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; -Blockly.Msg["LOGIC_OPERATION_OR"] = "eller"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ger tillbaka sant om båda värdena är sanna."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ger tillbaka sant om minst ett av värdena är sant."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "om falskt"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "om sant"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontrollera villkoret i \"test\". Om villkoret är sant, ge tillbaka \"om sant\"-värdet; annars ge tillbaka \"om falskt\"-värdet."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://sv.wikipedia.org/wiki/Aritmetik"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnerar summan av de två talen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returnerar kvoten av de två talen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returnerar differensen mellan de två talen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returnerar produkten av de två talen."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ger tillbaka det första talet upphöjt till det andra talet."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 av X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Returnerar arcustangens av punkt (X, Y) i grader från -180 till 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "ändra %1 med %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lägg till ett tal till variabeln '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sv.wikipedia.org/wiki/Matematisk_konstant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Returnerar en av de vanliga konstanterna: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (oändligt)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begränsa %1 till mellan %2 och %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begränsa ett tal till att mellan de angivna gränsvärden (inkluderande)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "är delbart med"; -Blockly.Msg["MATH_IS_EVEN"] = "är jämnt"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "är negativt"; -Blockly.Msg["MATH_IS_ODD"] = "är ojämnt"; -Blockly.Msg["MATH_IS_POSITIVE"] = "är positivt"; -Blockly.Msg["MATH_IS_PRIME"] = "är ett primtal"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollera om ett tal är jämnt, ojämnt, helt, positivt, negativt eller det är delbart med ett bestämt tal. Returnerar med sant eller falskt."; -Blockly.Msg["MATH_IS_WHOLE"] = "är helt"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sv.wikipedia.org/wiki/Modulär_aritmetik"; -Blockly.Msg["MATH_MODULO_TITLE"] = "resten av %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Returnerar kvoten från divisionen av de två talen."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://sv.wikipedia.org/wiki/Tal"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ett tal."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "medelvärdet av listan"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "högsta talet i listan"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medianen av listan"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minsta talet i listan"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "typvärdet i listan"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "slumpmässigt objekt i listan"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardavvikelsen i listan"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summan av listan"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ger tillbaka medelvärdet (aritmetiskt) av de numeriska värdena i listan."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ger tillbaka det största talet i listan."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Returnerar medianen av talen i listan."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ger tillbaka det minsta talet i listan."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Ger tillbaka en lista med de(t) vanligaste objekte(t/n) i listan."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returnerar ett slumpmässigt element från listan."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ger tillbaka standardavvikelsen i listan."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ger tillbaka summan av alla talen i listan."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://sv.wikipedia.org/wiki/Slumptalsgenerator"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slumpat decimaltal"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Ger tillbaka ett slumpat decimaltal mellan 0.0 (inkluderat) och 1.0 (exkluderat)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://sv.wikipedia.org/wiki/Slumptalsgenerator"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "slumpartat heltal från %1 till %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Ger tillbaka ett slumpat heltal mellan två värden, inkluderande."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sv.wikipedia.org/wiki/Avrundning"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "avrunda"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "avrunda nedåt"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "avrunda uppåt"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Avrunda ett tal uppåt eller nedåt."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sv.wikipedia.org/wiki/Kvadratrot"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratrot"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returnerar absolutvärdet av ett tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ger tillbaka e upphöjt i ett tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Returnera den naturliga logaritmen av ett tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returnerar logaritmen för bas 10 av ett tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returnerar negationen av ett tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Ger tillbaka 10 upphöjt i ett tal."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returnerar kvadratroten av ett tal."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sv.wikipedia.org/wiki/Trigonometrisk_funktion"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ger tillbaka arcus cosinus (arccos) för ett tal."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ger tillbaka arcus sinus (arcsin) för ett tal."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ger tillbaka arcus tangens (arctan) av ett tal."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ger tillbaka cosinus för en grad (inte radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ger tillbaka sinus för en grad (inte radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ger tillbaka tangens för en grad (inte radian)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Skapa färgvariabel..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Skapa siffervariabel..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Skapa strängvariabel..."; -Blockly.Msg["NEW_VARIABLE"] = "Skapa variabel..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nytt variabelnamn:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ny variabeltyp:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "tillåta uttalanden"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "med:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kör den användardefinierade funktionen \"%1\"."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kör den användardefinierade funktionen \"%1\" och använd resultatet av den."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "med:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Skapa '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beskriv denna funktion..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://sv.wikipedia.org/wiki/Funktion_(programmering)"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "göra något"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "för att"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Skapar en funktion utan output."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://sv.wikipedia.org/wiki/Funktion_(programmering)"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returnera"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Skapar en funktion med output."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Varning: Denna funktion har dubbla parametrar."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markera funktionsdefinition"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Om ett värde är sant returneras ett andra värde."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Varning: Detta block får användas endast i en funktionsdefinition."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "inmatningsnamn:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Lägg till en inmatning till funktionen."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inmatningar"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Lägg till, ta bort och ändra ordningen för inmatningar till denna funktion."; -Blockly.Msg["REDO"] = "Gör om"; -Blockly.Msg["REMOVE_COMMENT"] = "Radera kommentar"; -Blockly.Msg["RENAME_VARIABLE"] = "Byt namn på variabel..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Byt namn på alla'%1'-variabler till:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "för att %1 lägga till text %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Lägg till lite text till variabeln '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "till gemener"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "till Versala Initialer"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "till VERSALER"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Returnerar en kopia av texten i ett annat skiftläge."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "hämta första bokstaven"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hämta bokstaven # från slutet"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hämta bokstaven #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "hämta sista bokstaven"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hämta slumpad bokstav"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "i texten %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Ger tillbaka bokstaven på den specificerade positionen."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "räkna %1 i %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Räkna hur många gånger en text förekommer inom en annan text."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Lägg till ett föremål till texten."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sammanfoga"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera detta textblock."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "till bokstav # från slutet"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "till bokstav #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "till sista bokstaven"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "i texten"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "få textdel från första bokstaven"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "få textdel från bokstav # från slutet"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "få textdel från bokstav #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Ger tillbaka en viss del av texten."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "hitta första förekomsten av texten"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "hitta sista förekomsten av texten"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "i texten %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Ger tillbaka indexet för den första/sista förekomsten av första texten i den andra texten. Ger tillbaka %1 om texten inte hittas."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 är tom"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnerar sant om den angivna texten är tom."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "skapa text med"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Skapa en textbit genom att sammanfoga ett valfritt antal föremål."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "längden på %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Ger tillbaka antalet bokstäver (inklusive mellanslag) i den angivna texten."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "skriv %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Skriv den angivna texten, talet eller annat värde."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Fråga användaren efter ett tal."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Fråga användaren efter lite text."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "fråga efter ett tal med meddelande"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "fråga efter text med meddelande"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "ersätt %1 med %2 i %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ersätt alla förekomster av en text inom en annan text."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "vänd på %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Vänder på teckenordningen i texten."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sv.wikipedia.org/wiki/Str%C3%A4ng_%28data%29"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En bokstav, ord eller textrad."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ta bort mellanrum från båda sidorna av"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ta bort mellanrum från vänstra sidan av"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ta bort mellanrum från högra sidan av"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returnerar en kopia av texten med borttagna mellanrum från en eller båda ändar."; -Blockly.Msg["TODAY"] = "Idag"; -Blockly.Msg["UNDO"] = "Ångra"; -Blockly.Msg["UNNAMED_KEY"] = "namnlös"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "föremål"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Skapa \"välj %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnerar värdet av denna variabel."; -Blockly.Msg["VARIABLES_SET"] = "ange %1 till %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Skapa 'hämta %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Gör så att den här variabeln blir lika med inputen."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "En variabel med namnet \"%1\" finns redan."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "En variabel med namnet \"%1\" finns redan för en annan typ: \"%2\"."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklys arbetsyta"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Säg någonting..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Lägg till kommentar"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Kan inte radera variabeln '%1' eftersom den är en del av definition för funktionen '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ändra värde:"; +Blockly.Msg["CLEAN_UP"] = "Städa upp block"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Hopfällda block innehåller varningar."; +Blockly.Msg["COLLAPSE_ALL"] = "Fäll ihop block"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Fäll ihop block"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "färg 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "färg 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "förhållande"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blanda"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blandar ihop två färger med ett bestämt förhållande (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://sv.wikipedia.org/wiki/Färg"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Välj en färg från paletten."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "slumpfärg"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Slumpa fram en färg."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "blå"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "grön"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "röd"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "färg med"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Skapa en färg med det angivna mängden röd, grön och blå. Alla värden måste vara mellan 0 och 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "bryt ut ur loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "fortsätta med nästa upprepning av loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Bryt ut ur den innehållande upprepningen."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Hoppa över resten av denna loop och fortsätt med nästa loop."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Varning: Detta block kan endast användas i en loop."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "för varje föremål %1 i listan %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "För varje objekt i en lista, ange variabeln '%1' till objektet, och utför sedan några kommandon."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; +Blockly.Msg["CONTROLS_FOR_TITLE"] = "räkna med %1 från %2 till %3 med %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Låt variabeln \"%1\" anta värden från starttalet till sluttalet, beräknat med det angivna intervallet, och utför de angivna blocken."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Lägg till ett villkor blocket \"om\"."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Lägg till ett sista villkor som täcker alla alternativ som är kvar för \"if\"-blocket."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera blocket \"om\"."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "annars"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "annars om"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "om"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Om ett värde är sant, utför några kommandon."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Om värdet är sant, utför det första kommandoblocket. Utför annars det andra kommandoblocket."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket. Om ingen av värdena är sanna, utför det sista kommandoblocket."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "utför"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "upprepa %1 gånger"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Utför några kommandon flera gånger."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "upprepa tills"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "upprepa så länge"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Medan ett värde är falskt, utför några kommandon."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Medan ett värde är sant, utför några kommandon."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Radera alla %1 block?"; +Blockly.Msg["DELETE_BLOCK"] = "Radera block"; +Blockly.Msg["DELETE_VARIABLE"] = "Radera variabeln \"%1\""; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Radera %1 användningar av variabeln \"%2\"?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Radera %1 block"; +Blockly.Msg["DIALOG_CANCEL"] = "Avbryt"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Inaktivera block"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicera"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicera kommentar"; +Blockly.Msg["ENABLE_BLOCK"] = "Aktivera block"; +Blockly.Msg["EXPAND_ALL"] = "Fäll ut block"; +Blockly.Msg["EXPAND_BLOCK"] = "Fäll ut block"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Externa inmatningar"; +Blockly.Msg["HELP"] = "Hjälp"; +Blockly.Msg["INLINE_INPUTS"] = "Radinmatning"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "skapa tom lista"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ger tillbaka en lista utan någon data, alltså med längden 0"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "lista"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Lägg till, ta bort eller ändra ordningen på objekten för att göra om det här \"list\"-blocket."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "skapa lista med"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Lägg till ett föremål till listan."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Skapa en lista med valfritt antal föremål."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "första"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# från slutet"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "hämta"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "hämta och ta bort"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "sista"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "slumpad"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ta bort"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returnerar det första objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ger tillbaka objektet på den efterfrågade positionen i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returnerar det sista objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returnerar ett slumpmässigt objekt i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Tar bort och återställer det första objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Tar bort och återställer objektet på den specificerade positionen i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Tar bort och återställer det sista objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Tar bort och återställer ett slumpmässigt objekt i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Tar bort det första objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Tar bort objektet på den specificerade positionen i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Tar bort det sista objektet i en lista."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Tar bort en slumpmässig post i en lista."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "till # från slutet"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "till #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "till sista"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "få underlista från första"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "få underlista från # från slutet"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "få underlista från #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Skapar en kopia av den specificerade delen av en lista."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 är det sista objektet."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 är det första objektet."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "hitta första förekomsten av objektet"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "hitta sista förekomsten av objektet"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Ger tillbaka den första/sista förekomsten av objektet i listan. Returnerar %1 om objektet inte hittas."; +Blockly.Msg["LISTS_INLIST"] = "i listan"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 är tom"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returnerar sant om listan är tom."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "längden på %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returnerar längden på en lista."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "skapa lista med föremålet %1 upprepat %2 gånger"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Skapar en lista som innehåller ett valt värde upprepat ett bestämt antalet gånger."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "vänd på %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Vänd på en kopia av en lista."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "som"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "Sätt in vid"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ange"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "sätter in objektet i början av en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Sätter in objektet vid en specificerad position i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Lägg till objektet i slutet av en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "sätter in objektet på en slumpad position i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Anger det första objektet i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sätter in objektet vid en specificerad position i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Anger det sista elementet i en lista."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sätter in ett slumpat objekt i en lista."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "stigande"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "fallande"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sortera %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sortera en kopia av en lista."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetiskt, ignorera skiftläge"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeriskt"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetiskt"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "skapa lista från text"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "skapa text från lista"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Sammanfoga en textlista till en text, som separeras av en avgränsare."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Dela upp text till en textlista och bryt vid varje avgränsare."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "med avgränsare"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "falskt"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returnerar antingen sant eller falskt."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "sant"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://sv.wikipedia.org/wiki/Olikhet"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Ger tillbaka sant om båda värdena är lika med varandra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Ger tillbaka sant om det första värdet är större än det andra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Ger tillbaka sant om det första värdet är större än eller lika med det andra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Ger tillbaka sant om det första värdet är mindre än det andra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Ger tillbaka sant om det första värdet är mindre än eller lika med det andra."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Ger tillbaka sant om båda värdena inte är lika med varandra."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "inte %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Ger tillbaka sant om inmatningen är falsk. Ger tillbaka falskt och inmatningen är sann."; +Blockly.Msg["LOGIC_NULL"] = "null"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://sv.wikipedia.org/wiki/Null"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returnerar null."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "och"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; +Blockly.Msg["LOGIC_OPERATION_OR"] = "eller"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Ger tillbaka sant om båda värdena är sanna."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Ger tillbaka sant om minst ett av värdena är sant."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "om falskt"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "om sant"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kontrollera villkoret i \"test\". Om villkoret är sant, ge tillbaka \"om sant\"-värdet; annars ge tillbaka \"om falskt\"-värdet."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://sv.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Returnerar summan av de två talen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Returnerar kvoten av de två talen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Returnerar differensen mellan de två talen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Returnerar produkten av de två talen."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Ger tillbaka det första talet upphöjt till det andra talet."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 av X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Returnerar arcustangens av punkt (X, Y) i grader från -180 till 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "ändra %1 med %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Lägg till ett tal till variabeln '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://sv.wikipedia.org/wiki/Matematisk_konstant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Returnerar en av de vanliga konstanterna: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (oändligt)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "begränsa %1 till mellan %2 och %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Begränsa ett tal till att mellan de angivna gränsvärden (inkluderande)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "är delbart med"; +Blockly.Msg["MATH_IS_EVEN"] = "är jämnt"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "är negativt"; +Blockly.Msg["MATH_IS_ODD"] = "är ojämnt"; +Blockly.Msg["MATH_IS_POSITIVE"] = "är positivt"; +Blockly.Msg["MATH_IS_PRIME"] = "är ett primtal"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kontrollera om ett tal är jämnt, ojämnt, helt, positivt, negativt eller det är delbart med ett bestämt tal. Returnerar med sant eller falskt."; +Blockly.Msg["MATH_IS_WHOLE"] = "är helt"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://sv.wikipedia.org/wiki/Modulär_aritmetik"; +Blockly.Msg["MATH_MODULO_TITLE"] = "resten av %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Returnerar kvoten från divisionen av de två talen."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://sv.wikipedia.org/wiki/Tal"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Ett tal."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "medelvärdet av listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "högsta talet i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "medianen av listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "minsta talet i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "typvärdet i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "slumpmässigt objekt i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standardavvikelsen i listan"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "summan av listan"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Ger tillbaka medelvärdet (aritmetiskt) av de numeriska värdena i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Ger tillbaka det största talet i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Returnerar medianen av talen i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Ger tillbaka det minsta talet i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Ger tillbaka en lista med de(t) vanligaste objekte(t/n) i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Returnerar ett slumpmässigt element från listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Ger tillbaka standardavvikelsen i listan."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Ger tillbaka summan av alla talen i listan."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://sv.wikipedia.org/wiki/Slumptalsgenerator"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "slumpat decimaltal"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Ger tillbaka ett slumpat decimaltal mellan 0.0 (inkluderat) och 1.0 (exkluderat)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://sv.wikipedia.org/wiki/Slumptalsgenerator"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "slumpartat heltal från %1 till %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Ger tillbaka ett slumpat heltal mellan två värden, inkluderande."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://sv.wikipedia.org/wiki/Avrundning"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "avrunda"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "avrunda nedåt"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "avrunda uppåt"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Avrunda ett tal uppåt eller nedåt."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://sv.wikipedia.org/wiki/Kvadratrot"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolut"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kvadratrot"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Returnerar absolutvärdet av ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Ger tillbaka e upphöjt i ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Returnera den naturliga logaritmen av ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Returnerar logaritmen för bas 10 av ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Returnerar negationen av ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Ger tillbaka 10 upphöjt i ett tal."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Returnerar kvadratroten av ett tal."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "arccos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "arcsin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "arctan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://sv.wikipedia.org/wiki/Trigonometrisk_funktion"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Ger tillbaka arcus cosinus (arccos) för ett tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Ger tillbaka arcus sinus (arcsin) för ett tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Ger tillbaka arcus tangens (arctan) av ett tal."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Ger tillbaka cosinus för en grad (inte radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Ger tillbaka sinus för en grad (inte radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Ger tillbaka tangens för en grad (inte radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Skapa färgvariabel..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Skapa siffervariabel..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Skapa strängvariabel..."; +Blockly.Msg["NEW_VARIABLE"] = "Skapa variabel..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Nytt variabelnamn:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Ny variabeltyp:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "tillåta uttalanden"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kör den användardefinierade funktionen \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kör den användardefinierade funktionen \"%1\" och använd resultatet av den."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "med:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Skapa '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Beskriv denna funktion..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://sv.wikipedia.org/wiki/Funktion_(programmering)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "göra något"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "för att"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Skapar en funktion utan output."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://sv.wikipedia.org/wiki/Funktion_(programmering)"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "returnera"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Skapar en funktion med output."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Varning: Denna funktion har dubbla parametrar."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Markera funktionsdefinition"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Om ett värde är sant returneras ett andra värde."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Varning: Detta block får användas endast i en funktionsdefinition."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "inmatningsnamn:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Lägg till en inmatning till funktionen."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inmatningar"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Lägg till, ta bort och ändra ordningen för inmatningar till denna funktion."; +Blockly.Msg["REDO"] = "Gör om"; +Blockly.Msg["REMOVE_COMMENT"] = "Radera kommentar"; +Blockly.Msg["RENAME_VARIABLE"] = "Byt namn på variabel..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Byt namn på alla'%1'-variabler till:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "för att %1 lägga till text %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Lägg till lite text till variabeln '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "till gemener"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "till Versala Initialer"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "till VERSALER"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Returnerar en kopia av texten i ett annat skiftläge."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "hämta första bokstaven"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "hämta bokstaven # från slutet"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "hämta bokstaven #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "hämta sista bokstaven"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "hämta slumpad bokstav"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "i texten %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Ger tillbaka bokstaven på den specificerade positionen."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "räkna %1 i %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Räkna hur många gånger en text förekommer inom en annan text."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Lägg till ett föremål till texten."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "sammanfoga"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera detta textblock."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "till bokstav # från slutet"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "till bokstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "till sista bokstaven"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "i texten"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "få textdel från första bokstaven"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "få textdel från bokstav # från slutet"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "få textdel från bokstav #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Ger tillbaka en viss del av texten."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "hitta första förekomsten av texten"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "hitta sista förekomsten av texten"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "i texten %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Ger tillbaka indexet för den första/sista förekomsten av första texten i den andra texten. Ger tillbaka %1 om texten inte hittas."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 är tom"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returnerar sant om den angivna texten är tom."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "skapa text med"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Skapa en textbit genom att sammanfoga ett valfritt antal föremål."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "längden på %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Ger tillbaka antalet bokstäver (inklusive mellanslag) i den angivna texten."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "skriv %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Skriv den angivna texten, talet eller annat värde."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Fråga användaren efter ett tal."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Fråga användaren efter lite text."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "fråga efter ett tal med meddelande"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "fråga efter text med meddelande"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "ersätt %1 med %2 i %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ersätt alla förekomster av en text inom en annan text."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "vänd på %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Vänder på teckenordningen i texten."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://sv.wikipedia.org/wiki/Str%C3%A4ng_%28data%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "En bokstav, ord eller textrad."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ta bort mellanrum från båda sidorna av"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ta bort mellanrum från vänstra sidan av"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ta bort mellanrum från högra sidan av"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Returnerar en kopia av texten med borttagna mellanrum från en eller båda ändar."; +Blockly.Msg["TODAY"] = "Idag"; +Blockly.Msg["UNDO"] = "Ångra"; +Blockly.Msg["UNNAMED_KEY"] = "namnlös"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "föremål"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Skapa \"välj %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returnerar värdet av denna variabel."; +Blockly.Msg["VARIABLES_SET"] = "ange %1 till %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Skapa 'hämta %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Gör så att den här variabeln blir lika med inputen."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "En variabel med namnet \"%1\" finns redan."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "En variabel med namnet \"%1\" finns redan för en annan typ: \"%2\"."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blocklys arbetsyta"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Säg någonting..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/sw.js b/msg/js/sw.js index ac48127683f..617572835c2 100644 --- a/msg/js/sw.js +++ b/msg/js/sw.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "Sawa"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Msaada"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Leo"; -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "Sawa"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Msaada"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Leo"; +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ta.js b/msg/js/ta.js index d7c88e2ac0e..0807c40cc4f 100644 --- a/msg/js/ta.js +++ b/msg/js/ta.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "கருத்தை சேர்"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "மதிப்பை மாற்றவும்:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "உறுப்புகளை மரை"; -Blockly.Msg["COLLAPSE_BLOCK"] = "உறுப்பை மரை"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "நிறம் 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "நிறம் 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "விகிதம்"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "கலப்பு (வண்ணம்)"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "கொடுக்கப்பட்ட விகதத்தில் (0.0 - 1.0) இரு நிறங்களை கலக்குக."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "வண்ண தட்டிலிருந்து ஒரு நிறத்தைத் தேர்ந்தெடுக்கவும்."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "தற்போக்கு நிறம்"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "தற்போக்கில் ஒரு நிறத்தை தேர்ந்தெடுக்கவும்."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "நீலம்"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "பச்சை"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "சிகப்பு"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "நிறத்துடன்"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "குறிப்பிட்ட அளவு சிவப்பு,பச்சை மற்றும் நீலம் சேர்த்து புது நிறம் உருவாக்கு. மதிப்புகள் 0 முதல் 100 வரை மட்டுமே இருக்க வேண்டும்."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "மடக்கு கட்டளையை நிறுத்து."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "மடக்கு கட்டளையின் அடுத்த இயக்கநிலைக்கு செல்"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "மடக்கு கட்டளையின் இயக்கத்தில் இருந்து நிறுத்து."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "மடக்கு கட்டளையின் மீதியை விட்டுவிட்டு அடுத்த இயக்கநிலைக்கு செல்"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "எச்சரிக்கை : மடக்கு கூற்றில் இந்த தொகுதி ஒரு முறை மட்டுமே செயல்படுத்தப் படலாம்."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "உருப்படி ஒவ்வொன்றாக %1 பட்டியலில் உள்ள %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "பட்டியலில் உள்ள உருப்படியில் ஒவ்வொன்றாக, மாறியின் பொருள் '%1' ஆக வைக்க."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "மாறியை வைத்து எண்ண %1 %2 இல் இருந்து %3 வரை %4-இன் படியாக"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "முதல் எண்ணில் இருந்து கடை எண் வரை எடுத்துக்கொள்ள ஒரு மாறியை வைத்துக்கொள், குறித்த இடைவெளியை சேர்த்தவறே தொகுதிகளை செயலாக்கு."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "ஆனால் தொகுப்பிற்கு நிபந்தனை சேர்க்க"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ஆனால் தொகுப்பிற்கு விதிவிலக்கு காப்பை சேர்க்க"; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "கட்டளைகளை தொகுப்பு திருத்துதம் செய்"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "இல்லையெனில்"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "இல்லைஆனால்"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "எனில்"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை இயக்கு."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு. இரண்டும் இல்லை என்றால் கடைசி தொகுப்பு இயக்கு."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "செய்க"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "'%1' முரை திரும்ப செய்"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "கட்டளைகளை பல முரை செய்ய"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "பலமுரை திரும்ப செய் (முடயேனில்)"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "பலமுரை திரும்ப செய் (வரை)"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "மாறி பொய் ஆக உள்ள வரை, கட்டளைகளை இயக்கு"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "அனைத்து %1 நிரல் துண்டுகளையும் அழிக்கவா??"; -Blockly.Msg["DELETE_BLOCK"] = "உறுப்பை நீக்கு"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 உறுப்பை நீக்கு"; -Blockly.Msg["DIALOG_CANCEL"] = "இரத்து செய்"; -Blockly.Msg["DIALOG_OK"] = "சரி"; -Blockly.Msg["DISABLE_BLOCK"] = "உறுப்பை இயங்காது செய்"; -Blockly.Msg["DUPLICATE_BLOCK"] = "மறுநகல்"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "உறுப்பை இயங்குமாரு செய்"; -Blockly.Msg["EXPAND_ALL"] = "உறுப்புகளை காட்டு"; -Blockly.Msg["EXPAND_BLOCK"] = "உறுப்பை காட்டு"; -Blockly.Msg["EXTERNAL_INPUTS"] = "வெளி கருவிகளுடன் உள்ளீடு"; -Blockly.Msg["HELP"] = "உதவி"; -Blockly.Msg["INLINE_INPUTS"] = "சூழமைவில் உள்ளீடு"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "காலி பட்டியல் உருவாக்க"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "காலி பட்டியல் பின்கொடு."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "பட்டியல்"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "கட்டளைகளை தொகுப்பு திருத்துதம் செய்"; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "வைத்து பட்டியல் உருவாக்க"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "பட்டியலில் ஒரு பொருளை சேர்க்க."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "இவ்வளவு உருப்படிகளை கொண்டு வேண்டுமாலும் ஒரு பட்டியலை உருவாக்கு."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "முதல்"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "கடைசியில் இருந்து #"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "எடு"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "பெற்று நீக்குக"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "கடைசி"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ஏதோ ஒன்று"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "நீக்குக"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "பட்டியல் முதல் உருப்படியை பின்கொடு,"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "பட்டியலில் இடத்தில் உருப்படி பின்கொடு."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "பட்டியல் கடைசி உருப்படியை பின்கொடு,"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "பட்டியல் சீரற்ற உருப்படியை பின்கொடு,"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "பட்டியல் முதல் உருப்படியை நீக்கியபின் பின்கொடு,"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கி பின்கொடு."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "பட்டியல் இறுதி உருப்படியை நீக்கியபின் பின்கொடு,"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "பட்டியல் சீரற்ற உருப்படியை நீக்கியபின் பின்கொடு,"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "பட்டியலில் முதல் உருப்படியை நீக்கு"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கு."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "பட்டியலில் கடைசி உருப்படியை நீக்கு"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "பட்டியல் சீரற்ற உருப்படியை நீக்கு,"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "முடிவில் இருந்து # வரை"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# வரை"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "முடிவு வரை"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "# முதலில் இருந்து பகுதி பட்டியலை கொடு"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# கடைசியில் இருந்து பகுதி பட்டியலை கொடு"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "பகுதி பட்டியலை # இடத்தில் இருந்து கொடு"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "குறிப்பட்ட பகுதி பட்டியலின் நகலை கொடு"; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 கடைசி உருப்படி.ி"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 முதல் உருப்படி."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "உரையில் முதல் தோற்ற இடத்தை காட்டு"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "உரையில் கடைசி தோற்ற இடத்தை காட்டு"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "பட்டியலில் மதிப்பின் முதல், கடைசி தோற்ற இடத்தை பின்கொடு. காணாவிட்டால் %1 பின்கொடு."; -Blockly.Msg["LISTS_INLIST"] = "பட்டியலில் உள்ள"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 காலியானது"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "பட்டியல் காலியானது மெய் பின்கொடு,"; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 இன் நீளம்"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "பட்டியல் நீளம் பின்கொடு"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "உருப்படி %1-யை, %2 தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "கொடுக்க பட்ட மதிப்பை, கூறியுள்ள தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "இதுபொல"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "அவ்விடத்தில் நுழை"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "நியமி"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "மதிப்பை பட்டியலின் முதலில் நுழை"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "பட்டியலில் கேட்ட இடத்தில் உருப்படியை நுழை."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "மதிப்பை பட்டியலின் முடிவில் நுழை"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "மதிப்பை பட்டியலின் சீற்ற இடத்தில் நுழை"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "மதிப்பை பட்டியலில் முதல் உருப்படியில் வை"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "பட்டியலில் கேட்ட இடத்தில் உருப்படியை வை."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "மதிப்பை பட்டியலில் கடைசி உருப்படியில் வை"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "மதிப்பை பட்டியலில் சீரற்ற உருப்படியில் வை"; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ஏறுவரிசை"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "இறங்குவரிசை"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "எண்வரிசை"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "அகரவரிசை"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "உரையில் இருந்து பட்டியல் உருவாக்கு"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "பட்டியலில் இருந்து உரை உருவாக்கு"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "வரம்புச் சுட்டியை இடையில் இட்டு, உரைதுண்டுகளை ஒன்று சேர்"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "உரையை வரம்புச் சுட்டி கொண்டு துண்டாக்கு."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "தடை எழுத்து"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "பொய்"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "மெய், அல்லது பொய் பின்கொடு."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "மெய்"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "இரண்டு மாறியும் ஈடானால், மெய் பின்கொடு."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக இருந்தால், மெய் பின்கொடு."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக இருந்தால், மெய் பின்கொடு."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "இரண்டு மாறியும் ஈடாகாவிட்டால், மெய் பின்கொடு."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 இல்லை"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "மெய் ஆனால், பொய் பின்கொடு. பொய் ஆனால், மெய் பின்கொடு."; -Blockly.Msg["LOGIC_NULL"] = "பூஜியம்"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "பூஜியம் பின்கொடு"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "மற்றும்"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "அல்லது"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "இரண்டு மாறியும் மெய் ஆனால், மெய் பின்கொடு."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ஏதேனும் ஒரு மதிப்பு மெய் ஆனால், மெய் பின்கொடு"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "சோதனை"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "பொய்யெனில்"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "மெய்யெனில்"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'test' உள்ள நிபந்தனையை சரிபார்க்கவும், நிபந்தனை மெய்யானால்,'if true'வை பின்கொடுக்கும் இல்லையெனில் 'if false'வை பின்கொடுக்கும்."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4%E0%AE%AE%E0%AF%8D"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "இரு எண்களின் கூட்டை பின்கொடு"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "இரு எண்களின் வகுத்தல் பின்கொடு"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "இரு எண்களின் கழிப்பை பின்கொடு"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "இரு எண்களின் பெருக்கலை பின்கொடு"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "முதல் உள்ளீடு இரண்டாவது எண் அளவான அடுக்கு பெருக்கை கணித்து பின்கொடு."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "மாற்று %1 மூலம் %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "எண்னை '%1' மதிப்பால் கூட்டு,"; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4_%E0%AE%AE%E0%AE%BE%E0%AE%B1%E0%AE%BF%E0%AE%B2%E0%AE%BF"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ஒரு மாறிலியை பின்கொடு π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (முடிவிலி)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 மாறியை %2 மேலும் %3 கீழும் வற்புறுத்து"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "எண் மாறி வீசுகளம் உள்ளடங்கிய வாறு வற்புறுத்து"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ஆல் வகுபடக் கூடியது"; -Blockly.Msg["MATH_IS_EVEN"] = "2-ஆல் பகும்"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "எண் குறைவானதா ?"; -Blockly.Msg["MATH_IS_ODD"] = "2-ஆல் பகாத"; -Blockly.Msg["MATH_IS_POSITIVE"] = "எண் நேர்ம முழுதானதா ?"; -Blockly.Msg["MATH_IS_PRIME"] = "எண் பகாத்தனிதானதா?"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "எண் முழுதானதா?"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2ன் மீதி"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "இரண்டு எண்கள் மூலம் பிரிவில் இருந்து எஞ்சியதை பின்கொடு."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ஒரு எண்."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "பட்டியலின் எண் சராசரி"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "பட்டியலின் மிகுதி"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "பட்டியலின் நடுக்கோடு"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "பட்டியலின் கறைவு"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "பட்டியலின் பொதுவகைகள்"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "பட்டியலின் நியமவிலகல்"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "பட்டியலின் கூட்டு"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "முழு பட்டியலின் எண் சராசரி பின்கொடு"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "பட்டியலின் அதிகமான எண் பின்கொடு"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "பட்டியலின் நடுக்கோடு பின்கொடு"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "பட்டியலின் குறைவான எண் பின்கொடு"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "பட்டியலின் பொதுவகைகள் பின்கொடு"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி பின்கொடு"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "பட்டியலின் நியமவிலகலை பின்கொடு."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "முழு பட்டியலின் எண் சமம் பின்கொடு,"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "சீரற்ற எண் பின்னம்"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "சீரற்ற எண் பின்னம், 0.0 இல் இருந்து 1.0 உட்பட, பின்கொடு."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "வீசுகளம் %1 இல் இருந்து %2 உள்ளடங்கிய வாறு சீரற்ற எண்"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "வீசுகளம் இல் இருந்த (உள்ளடங்கிய) வாறு சீரற்ற எண் பின்கொடு."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "முழுமையாக்கு"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "கீழ்வழி முழுமையாக்கு"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "மேல்வழி முழுமையாக்கு"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "மேல்/கீழ் வழி முழு எண் ஆக மாற்று."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%B5%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%AE%E0%AF%82%E0%AE%B2%E0%AE%AE%E0%AF%8D"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "தனித்த"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "வர்க்கமூலம்"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "ஒரு எண்ணின் தனித்த மதிப்பை பின்கொடு"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "e-இன் எண் அடுக்கு பெருக்கை பின்கொடு."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ஒரு எண்ணின் (இயற்கை) மடக்கை மதிப்பை பின்கொடு."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ஒரு எண்ணின் (10) மடக்கை மதிப்பை பின்கொடு."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ஒரு எண்ணின் எதிர்மறை மதிப்பை பின்கொடு"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10-இன் எண் அடுக்கு பெருக்கை பின்கொடு."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ஒரு எண்ணின் வர்க்கமூலத்தைத் தரும்."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%AE%E0%AF%81%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%8B%E0%AE%A3%E0%AE%B5%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D_%E0%AE%9A%E0%AE%BE%E0%AE%B0%E0%AF%8D%E0%AE%AA%E0%AF%81%E0%AE%95%E0%AE%B3%E0%AF%8D"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "மதிப்பின் நேர்மாறு கோசைன் பின்கொடு"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "மதிப்பின் நேர்மாறு சைன் பின்கொடு"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "மதிப்பின் நேர்மாறு டேஞ்சன்டு பின்கொடு"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "டிகிரீ கோசைன் மதிப்பை பின்கொடு"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "டிகிரீ சைன் மதிப்பை பின்கொடு."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "டிகிரீ டேஞ்சன்டு மதிப்பை பின்கொடு"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "மாறிலியை உருவாக்குக..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "புதிய மாறிலியின் பெயர்:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "புதிய மாறிலியின் பெயர்:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "வாக்குமூலங்களை அனுமதிக்கவும்"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "இத்துடன்"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "பயனரின் '%1' செயற்கூற்றை ஓட்டு."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "பயனரின் '%1' செயற்கூற்றை ஓட்டி வரும் வெளியீட்டை பயன்படுத்து."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "இத்துடன்:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' உருவாக்குக"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "கட்டளைகள் செய்ய (இடம்காட்டி)"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "இந்த மாறியிற்கு"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "வெளியீடு இல்லாத ஒரு செயல்பாடு உருவாக்குகிறது"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "பின்கொடு"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "வெளியீடு உள்ள ஒரு செயல்பாடு உருவாக்குகிறது"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "எச்சரிக்கை: இந்த செயற்கூறில் போலியான அளபுருக்கள் உண்டு."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "நிரல்பாகத்தை விளக்கமாக காட்டு"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "மதிப்பு உண்மையானால், இரண்டாவது மதிப்பை பின்கொடு."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "பெயரை உள்ளிடுக:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "செயல்கூறுக்கு ஒரு உள்ளீட்டை சேர்."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "உள்ளீடுகள்"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "செயல்கூறுகளின் உள்ளீட்டை சேர், நீக்கு, or மீண்டும் வரிசை செய்."; -Blockly.Msg["REDO"] = "மீண்டும் செய்"; -Blockly.Msg["REMOVE_COMMENT"] = "கருத்தை நீக்கு"; -Blockly.Msg["RENAME_VARIABLE"] = "மாறிலியை மறுபெயரிடுக..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "அனைத்து '%1' மாறிலிகளையும் பின்வருமாறு மறுபெயரிடுக:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "இந்த மாறியிற்கு %1 உரை சேர்க்க %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' மாறியில் உரையை சேர்"; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "சின்ன எழுத்துக்கு மாற்று"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "தலைப்பு எழுத்துக்கு மாற்று"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "பொரிய எழுத்துக்கு மாற்று"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "உரை நகல் எடுத்து பொரிய/சின்ன எழுத்து மாற்றி பின்கொடு."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "முதல் எழுத்தைப் பெறுக"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "முடிவில் இருந்து # எழுத்தை எடு"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# எழுத்தை எடு"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "இறுதி எழுத்தைப் பெறுக"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "சமவாய்ப்புள்ள எழுத்தை எடு"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "கூறிய இடத்தில் உள்ள எழுத்தை எடு"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "உருபடியை உரையில் சேர்க்க."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "சேர்க்க"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "தொகுப்பு உரை திருத்துதம் செய்"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "எழுத்து கடைசியில் இருந்து # வரை"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "எழுத்து # வரை"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "கடைசி எழுத்து வரை"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "உரையில்"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "-இல் உட்கணம் முதல் எழுத்திலிருந்து"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "-இல் உட்கணம் கடைசி # எழுத்திலிருந்து"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "-இல் உட்கணம் # எழுத்திலிருந்து"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "உரையின் குறியிடப்பட்ட சரம் பின்கொடு"; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "உரையில் முதல் தோற்ற இடத்தை பின்கொடு"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "உரையில் கடைசி தோற்ற இடத்தை பின்கொடு"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "உரையில் %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "இரண்டாவது உரையில் முதல் உரையின் முதல்/கடை இருக்கை குறிஎண்ணை பின்கொடு."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 காலியானது"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "காலியானது என்றால் மெய் மதிப்பை பின்கொடு"; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "வைத்து உரை உருவாக்க"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "பல பொருட்களை ஒன்றாக சேர்வதன் மூலம் உரை உருவாக்க."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1ன் நீளம்"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "தொடரில் உள்ள எழுத்துக்களின் (இடைவெளிகளையும் சேர்த்து) எண்ணிகையை பின்கொடு."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 அச்சிடுக"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "மதிப்பை அச்சிடு"; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "எண்-உள்ளீடு தூண்டுதலை காட்டு"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "உரை-உள்ளீடு தூண்டுதலை காட்டு"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "உரை கொண்டு எண்-உள்ளீடு தூண்டுதலை காட்டு"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "உரை கொண்டு உரை-உள்ளீடு தூண்டுதலை காட்டு"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%B0%E0%AE%AE%E0%AF%8D_%28%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A9%E0%AE%BF%E0%AE%AF%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D%29"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "எழுத்து, சரம், சொல், அல்லது உரை சொற்தொடர்."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "இரு பக்கத்திலும் இடைவெளி எழுத்து நேர்த்தி செய்."; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "இடது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்."; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "வலது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்."; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "உரை நகல் எடுத்து இடைவெளி எழுத்து நீக்கி பின்கொடு."; -Blockly.Msg["TODAY"] = "இன்று"; -Blockly.Msg["UNDO"] = "மீளமை"; -Blockly.Msg["UNNAMED_KEY"] = "பெயரிடப்படாதது"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "உருப்படி"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 நியமி' உருவாக்கு"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "இந்த மாறி மதிப்பை பின்கொடு"; -Blockly.Msg["VARIABLES_SET"] = "நியமி %1 இந்த மாறியிற்கு %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'எடு %1' உருவாக்கு"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "மாறியின் மதிப்பாய் உள்ளீட்டு மதிப்பை வை."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ஏதாகினும் பகர்க..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "கருத்தை சேர்"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "மதிப்பை மாற்றவும்:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "உறுப்புகளை மரை"; +Blockly.Msg["COLLAPSE_BLOCK"] = "உறுப்பை மரை"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "நிறம் 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "நிறம் 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "விகிதம்"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "கலப்பு (வண்ணம்)"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "கொடுக்கப்பட்ட விகதத்தில் (0.0 - 1.0) இரு நிறங்களை கலக்குக."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "வண்ண தட்டிலிருந்து ஒரு நிறத்தைத் தேர்ந்தெடுக்கவும்."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "தற்போக்கு நிறம்"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "தற்போக்கில் ஒரு நிறத்தை தேர்ந்தெடுக்கவும்."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "நீலம்"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "பச்சை"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "சிகப்பு"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "நிறத்துடன்"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "குறிப்பிட்ட அளவு சிவப்பு,பச்சை மற்றும் நீலம் சேர்த்து புது நிறம் உருவாக்கு. மதிப்புகள் 0 முதல் 100 வரை மட்டுமே இருக்க வேண்டும்."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "மடக்கு கட்டளையை நிறுத்து."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "மடக்கு கட்டளையின் அடுத்த இயக்கநிலைக்கு செல்"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "மடக்கு கட்டளையின் இயக்கத்தில் இருந்து நிறுத்து."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "மடக்கு கட்டளையின் மீதியை விட்டுவிட்டு அடுத்த இயக்கநிலைக்கு செல்"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "எச்சரிக்கை : மடக்கு கூற்றில் இந்த தொகுதி ஒரு முறை மட்டுமே செயல்படுத்தப் படலாம்."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "உருப்படி ஒவ்வொன்றாக %1 பட்டியலில் உள்ள %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "பட்டியலில் உள்ள உருப்படியில் ஒவ்வொன்றாக, மாறியின் பொருள் '%1' ஆக வைக்க."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "மாறியை வைத்து எண்ண %1 %2 இல் இருந்து %3 வரை %4-இன் படியாக"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "முதல் எண்ணில் இருந்து கடை எண் வரை எடுத்துக்கொள்ள ஒரு மாறியை வைத்துக்கொள், குறித்த இடைவெளியை சேர்த்தவறே தொகுதிகளை செயலாக்கு."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "ஆனால் தொகுப்பிற்கு நிபந்தனை சேர்க்க"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ஆனால் தொகுப்பிற்கு விதிவிலக்கு காப்பை சேர்க்க"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "கட்டளைகளை தொகுப்பு திருத்துதம் செய்"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "இல்லையெனில்"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "இல்லைஆனால்"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "எனில்"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை இயக்கு."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு. இரண்டும் இல்லை என்றால் கடைசி தொகுப்பு இயக்கு."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "செய்க"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "'%1' முரை திரும்ப செய்"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "கட்டளைகளை பல முரை செய்ய"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "பலமுரை திரும்ப செய் (முடயேனில்)"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "பலமுரை திரும்ப செய் (வரை)"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "மாறி பொய் ஆக உள்ள வரை, கட்டளைகளை இயக்கு"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "அனைத்து %1 நிரல் துண்டுகளையும் அழிக்கவா??"; +Blockly.Msg["DELETE_BLOCK"] = "உறுப்பை நீக்கு"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 உறுப்பை நீக்கு"; +Blockly.Msg["DIALOG_CANCEL"] = "இரத்து செய்"; +Blockly.Msg["DIALOG_OK"] = "சரி"; +Blockly.Msg["DISABLE_BLOCK"] = "உறுப்பை இயங்காது செய்"; +Blockly.Msg["DUPLICATE_BLOCK"] = "மறுநகல்"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "உறுப்பை இயங்குமாரு செய்"; +Blockly.Msg["EXPAND_ALL"] = "உறுப்புகளை காட்டு"; +Blockly.Msg["EXPAND_BLOCK"] = "உறுப்பை காட்டு"; +Blockly.Msg["EXTERNAL_INPUTS"] = "வெளி கருவிகளுடன் உள்ளீடு"; +Blockly.Msg["HELP"] = "உதவி"; +Blockly.Msg["INLINE_INPUTS"] = "சூழமைவில் உள்ளீடு"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "காலி பட்டியல் உருவாக்க"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "காலி பட்டியல் பின்கொடு."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "பட்டியல்"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "கட்டளைகளை தொகுப்பு திருத்துதம் செய்"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "வைத்து பட்டியல் உருவாக்க"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "பட்டியலில் ஒரு பொருளை சேர்க்க."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "இவ்வளவு உருப்படிகளை கொண்டு வேண்டுமாலும் ஒரு பட்டியலை உருவாக்கு."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "முதல்"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "கடைசியில் இருந்து #"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "எடு"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "பெற்று நீக்குக"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "கடைசி"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ஏதோ ஒன்று"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "நீக்குக"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "பட்டியல் முதல் உருப்படியை பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "பட்டியலில் இடத்தில் உருப்படி பின்கொடு."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "பட்டியல் கடைசி உருப்படியை பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "பட்டியல் சீரற்ற உருப்படியை பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "பட்டியல் முதல் உருப்படியை நீக்கியபின் பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கி பின்கொடு."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "பட்டியல் இறுதி உருப்படியை நீக்கியபின் பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "பட்டியல் சீரற்ற உருப்படியை நீக்கியபின் பின்கொடு,"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "பட்டியலில் முதல் உருப்படியை நீக்கு"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கு."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "பட்டியலில் கடைசி உருப்படியை நீக்கு"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "பட்டியல் சீரற்ற உருப்படியை நீக்கு,"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "முடிவில் இருந்து # வரை"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# வரை"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "முடிவு வரை"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "# முதலில் இருந்து பகுதி பட்டியலை கொடு"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# கடைசியில் இருந்து பகுதி பட்டியலை கொடு"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "பகுதி பட்டியலை # இடத்தில் இருந்து கொடு"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "குறிப்பட்ட பகுதி பட்டியலின் நகலை கொடு"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 கடைசி உருப்படி.ி"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 முதல் உருப்படி."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "உரையில் முதல் தோற்ற இடத்தை காட்டு"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "உரையில் கடைசி தோற்ற இடத்தை காட்டு"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "பட்டியலில் மதிப்பின் முதல், கடைசி தோற்ற இடத்தை பின்கொடு. காணாவிட்டால் %1 பின்கொடு."; +Blockly.Msg["LISTS_INLIST"] = "பட்டியலில் உள்ள"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 காலியானது"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "பட்டியல் காலியானது மெய் பின்கொடு,"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 இன் நீளம்"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "பட்டியல் நீளம் பின்கொடு"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "உருப்படி %1-யை, %2 தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "கொடுக்க பட்ட மதிப்பை, கூறியுள்ள தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "இதுபொல"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "அவ்விடத்தில் நுழை"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "நியமி"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "மதிப்பை பட்டியலின் முதலில் நுழை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "பட்டியலில் கேட்ட இடத்தில் உருப்படியை நுழை."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "மதிப்பை பட்டியலின் முடிவில் நுழை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "மதிப்பை பட்டியலின் சீற்ற இடத்தில் நுழை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "மதிப்பை பட்டியலில் முதல் உருப்படியில் வை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "பட்டியலில் கேட்ட இடத்தில் உருப்படியை வை."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "மதிப்பை பட்டியலில் கடைசி உருப்படியில் வை"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "மதிப்பை பட்டியலில் சீரற்ற உருப்படியில் வை"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ஏறுவரிசை"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "இறங்குவரிசை"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "எண்வரிசை"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "அகரவரிசை"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "உரையில் இருந்து பட்டியல் உருவாக்கு"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "பட்டியலில் இருந்து உரை உருவாக்கு"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "வரம்புச் சுட்டியை இடையில் இட்டு, உரைதுண்டுகளை ஒன்று சேர்"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "உரையை வரம்புச் சுட்டி கொண்டு துண்டாக்கு."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "தடை எழுத்து"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "பொய்"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "மெய், அல்லது பொய் பின்கொடு."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "மெய்"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "இரண்டு மாறியும் ஈடானால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக இருந்தால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக இருந்தால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "இரண்டு மாறியும் ஈடாகாவிட்டால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 இல்லை"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "மெய் ஆனால், பொய் பின்கொடு. பொய் ஆனால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_NULL"] = "பூஜியம்"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "பூஜியம் பின்கொடு"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "மற்றும்"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "அல்லது"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "இரண்டு மாறியும் மெய் ஆனால், மெய் பின்கொடு."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ஏதேனும் ஒரு மதிப்பு மெய் ஆனால், மெய் பின்கொடு"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "சோதனை"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "பொய்யெனில்"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "மெய்யெனில்"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'test' உள்ள நிபந்தனையை சரிபார்க்கவும், நிபந்தனை மெய்யானால்,'if true'வை பின்கொடுக்கும் இல்லையெனில் 'if false'வை பின்கொடுக்கும்."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4%E0%AE%AE%E0%AF%8D"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "இரு எண்களின் கூட்டை பின்கொடு"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "இரு எண்களின் வகுத்தல் பின்கொடு"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "இரு எண்களின் கழிப்பை பின்கொடு"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "இரு எண்களின் பெருக்கலை பின்கொடு"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "முதல் உள்ளீடு இரண்டாவது எண் அளவான அடுக்கு பெருக்கை கணித்து பின்கொடு."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "மாற்று %1 மூலம் %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "எண்னை '%1' மதிப்பால் கூட்டு,"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4_%E0%AE%AE%E0%AE%BE%E0%AE%B1%E0%AE%BF%E0%AE%B2%E0%AE%BF"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ஒரு மாறிலியை பின்கொடு π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (முடிவிலி)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 மாறியை %2 மேலும் %3 கீழும் வற்புறுத்து"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "எண் மாறி வீசுகளம் உள்ளடங்கிய வாறு வற்புறுத்து"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ஆல் வகுபடக் கூடியது"; +Blockly.Msg["MATH_IS_EVEN"] = "2-ஆல் பகும்"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "எண் குறைவானதா ?"; +Blockly.Msg["MATH_IS_ODD"] = "2-ஆல் பகாத"; +Blockly.Msg["MATH_IS_POSITIVE"] = "எண் நேர்ம முழுதானதா ?"; +Blockly.Msg["MATH_IS_PRIME"] = "எண் பகாத்தனிதானதா?"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "எண் முழுதானதா?"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2ன் மீதி"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "இரண்டு எண்கள் மூலம் பிரிவில் இருந்து எஞ்சியதை பின்கொடு."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ஒரு எண்."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "பட்டியலின் எண் சராசரி"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "பட்டியலின் மிகுதி"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "பட்டியலின் நடுக்கோடு"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "பட்டியலின் கறைவு"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "பட்டியலின் பொதுவகைகள்"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "பட்டியலின் நியமவிலகல்"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "பட்டியலின் கூட்டு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "முழு பட்டியலின் எண் சராசரி பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "பட்டியலின் அதிகமான எண் பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "பட்டியலின் நடுக்கோடு பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "பட்டியலின் குறைவான எண் பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "பட்டியலின் பொதுவகைகள் பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி பின்கொடு"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "பட்டியலின் நியமவிலகலை பின்கொடு."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "முழு பட்டியலின் எண் சமம் பின்கொடு,"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "சீரற்ற எண் பின்னம்"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "சீரற்ற எண் பின்னம், 0.0 இல் இருந்து 1.0 உட்பட, பின்கொடு."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "வீசுகளம் %1 இல் இருந்து %2 உள்ளடங்கிய வாறு சீரற்ற எண்"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "வீசுகளம் இல் இருந்த (உள்ளடங்கிய) வாறு சீரற்ற எண் பின்கொடு."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "முழுமையாக்கு"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "கீழ்வழி முழுமையாக்கு"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "மேல்வழி முழுமையாக்கு"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "மேல்/கீழ் வழி முழு எண் ஆக மாற்று."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%B5%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%AE%E0%AF%82%E0%AE%B2%E0%AE%AE%E0%AF%8D"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "தனித்த"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "வர்க்கமூலம்"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "ஒரு எண்ணின் தனித்த மதிப்பை பின்கொடு"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "e-இன் எண் அடுக்கு பெருக்கை பின்கொடு."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ஒரு எண்ணின் (இயற்கை) மடக்கை மதிப்பை பின்கொடு."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ஒரு எண்ணின் (10) மடக்கை மதிப்பை பின்கொடு."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ஒரு எண்ணின் எதிர்மறை மதிப்பை பின்கொடு"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10-இன் எண் அடுக்கு பெருக்கை பின்கொடு."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ஒரு எண்ணின் வர்க்கமூலத்தைத் தரும்."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%AE%E0%AF%81%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%8B%E0%AE%A3%E0%AE%B5%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D_%E0%AE%9A%E0%AE%BE%E0%AE%B0%E0%AF%8D%E0%AE%AA%E0%AF%81%E0%AE%95%E0%AE%B3%E0%AF%8D"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "மதிப்பின் நேர்மாறு கோசைன் பின்கொடு"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "மதிப்பின் நேர்மாறு சைன் பின்கொடு"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "மதிப்பின் நேர்மாறு டேஞ்சன்டு பின்கொடு"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "டிகிரீ கோசைன் மதிப்பை பின்கொடு"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "டிகிரீ சைன் மதிப்பை பின்கொடு."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "டிகிரீ டேஞ்சன்டு மதிப்பை பின்கொடு"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "மாறிலியை உருவாக்குக..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "புதிய மாறிலியின் பெயர்:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "புதிய மாறிலியின் பெயர்:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "வாக்குமூலங்களை அனுமதிக்கவும்"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "இத்துடன்"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "பயனரின் '%1' செயற்கூற்றை ஓட்டு."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "பயனரின் '%1' செயற்கூற்றை ஓட்டி வரும் வெளியீட்டை பயன்படுத்து."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "இத்துடன்:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' உருவாக்குக"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "கட்டளைகள் செய்ய (இடம்காட்டி)"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "இந்த மாறியிற்கு"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "வெளியீடு இல்லாத ஒரு செயல்பாடு உருவாக்குகிறது"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "பின்கொடு"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "வெளியீடு உள்ள ஒரு செயல்பாடு உருவாக்குகிறது"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "எச்சரிக்கை: இந்த செயற்கூறில் போலியான அளபுருக்கள் உண்டு."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "நிரல்பாகத்தை விளக்கமாக காட்டு"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "மதிப்பு உண்மையானால், இரண்டாவது மதிப்பை பின்கொடு."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "பெயரை உள்ளிடுக:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "செயல்கூறுக்கு ஒரு உள்ளீட்டை சேர்."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "உள்ளீடுகள்"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "செயல்கூறுகளின் உள்ளீட்டை சேர், நீக்கு, or மீண்டும் வரிசை செய்."; +Blockly.Msg["REDO"] = "மீண்டும் செய்"; +Blockly.Msg["REMOVE_COMMENT"] = "கருத்தை நீக்கு"; +Blockly.Msg["RENAME_VARIABLE"] = "மாறிலியை மறுபெயரிடுக..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "அனைத்து '%1' மாறிலிகளையும் பின்வருமாறு மறுபெயரிடுக:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "இந்த மாறியிற்கு %1 உரை சேர்க்க %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' மாறியில் உரையை சேர்"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "சின்ன எழுத்துக்கு மாற்று"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "தலைப்பு எழுத்துக்கு மாற்று"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "பொரிய எழுத்துக்கு மாற்று"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "உரை நகல் எடுத்து பொரிய/சின்ன எழுத்து மாற்றி பின்கொடு."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "முதல் எழுத்தைப் பெறுக"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "முடிவில் இருந்து # எழுத்தை எடு"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# எழுத்தை எடு"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "இறுதி எழுத்தைப் பெறுக"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "சமவாய்ப்புள்ள எழுத்தை எடு"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "கூறிய இடத்தில் உள்ள எழுத்தை எடு"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "உருபடியை உரையில் சேர்க்க."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "சேர்க்க"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "தொகுப்பு உரை திருத்துதம் செய்"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "எழுத்து கடைசியில் இருந்து # வரை"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "எழுத்து # வரை"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "கடைசி எழுத்து வரை"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "உரையில்"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "-இல் உட்கணம் முதல் எழுத்திலிருந்து"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "-இல் உட்கணம் கடைசி # எழுத்திலிருந்து"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "-இல் உட்கணம் # எழுத்திலிருந்து"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "உரையின் குறியிடப்பட்ட சரம் பின்கொடு"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "உரையில் முதல் தோற்ற இடத்தை பின்கொடு"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "உரையில் கடைசி தோற்ற இடத்தை பின்கொடு"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "உரையில் %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "இரண்டாவது உரையில் முதல் உரையின் முதல்/கடை இருக்கை குறிஎண்ணை பின்கொடு."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 காலியானது"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "காலியானது என்றால் மெய் மதிப்பை பின்கொடு"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "வைத்து உரை உருவாக்க"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "பல பொருட்களை ஒன்றாக சேர்வதன் மூலம் உரை உருவாக்க."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1ன் நீளம்"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "தொடரில் உள்ள எழுத்துக்களின் (இடைவெளிகளையும் சேர்த்து) எண்ணிகையை பின்கொடு."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 அச்சிடுக"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "மதிப்பை அச்சிடு"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "எண்-உள்ளீடு தூண்டுதலை காட்டு"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "உரை-உள்ளீடு தூண்டுதலை காட்டு"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "உரை கொண்டு எண்-உள்ளீடு தூண்டுதலை காட்டு"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "உரை கொண்டு உரை-உள்ளீடு தூண்டுதலை காட்டு"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%B0%E0%AE%AE%E0%AF%8D_%28%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A9%E0%AE%BF%E0%AE%AF%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D%29"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "எழுத்து, சரம், சொல், அல்லது உரை சொற்தொடர்."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "இரு பக்கத்திலும் இடைவெளி எழுத்து நேர்த்தி செய்."; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "இடது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்."; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "வலது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்."; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "உரை நகல் எடுத்து இடைவெளி எழுத்து நீக்கி பின்கொடு."; +Blockly.Msg["TODAY"] = "இன்று"; +Blockly.Msg["UNDO"] = "மீளமை"; +Blockly.Msg["UNNAMED_KEY"] = "பெயரிடப்படாதது"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "உருப்படி"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'%1 நியமி' உருவாக்கு"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "இந்த மாறி மதிப்பை பின்கொடு"; +Blockly.Msg["VARIABLES_SET"] = "நியமி %1 இந்த மாறியிற்கு %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'எடு %1' உருவாக்கு"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "மாறியின் மதிப்பாய் உள்ளீட்டு மதிப்பை வை."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ஏதாகினும் பகர்க..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/tcy.js b/msg/js/tcy.js index 8f1e5934d17..8bd5c0e4798 100644 --- a/msg/js/tcy.js +++ b/msg/js/tcy.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ಟಿಪ್ಪಣಿ ಸೇರ್ಸಲೆ"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ಮೌಲ್ಯೊನು ಬದಲ್ ಮಲ್ಪು"; -Blockly.Msg["CLEAN_UP"] = "ಬ್ಲಾಕ್‍ಲೆನ್ ಸ್ವೊಚ್ಚೊ ಮಲ್ಪುಲೆ"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಎಲ್ಯ ಮಲ್ಪು"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ಎಲ್ಯೆ ಮಲ್ತ್‌ದ್ ತಡೆಲೆ"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ಬಣ್ಣೊ ೧(ಒಂಜಿ)"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ಬಣ್ಣೊ ೨(ರಡ್ಡ್)"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ಅನುಪಾತೊ"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ಬೆರಕ್ಕೆ ಮಲ್ಪು"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ಕೊರಿನ ಅನುಪಾತೊಡು (0.0- 1.0) ರಡ್ಡ್ ಬಣ್ಣೊಲೆನ್ ಬೆರಕೆ ಮಲ್ಪುಂಡು."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/ಬಣ್ಣೊ"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ಬಣ್ಣೊ ಪಟೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ಒವ್ವೇ ಒಂಜಿ ಬಣ್ಣೊ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "ನೀಲಿ"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ಪಚ್ಚೆ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ಕೆಂಪು"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ಬಣ್ಣೊದ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ತೊಜಪಾಯಿನ ಪ್ರಮಾಣೊದ ಕೆಂಪು, ಪಚ್ಚೆ ಬೊಕ್ಕ ನೀಲಿ ಬಣ್ಣೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಉಂಡು ಮಲ್ಪುಲೆ. ಮಾತಾ ಮೌಲ್ಯೊಲು 0 ಬುಕ್ಕೊ 100 ತ ನಡುಟೆ ಇಪ್ಪೊಡು."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ಲೂಪ್ ಕಡಿಯುನಿ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ಬೊಕ್ಕದ ಲೂಪ್ ಪುನರಾವರ್ತನೆದೊಟ್ಟುಗು ದುಂಬರಿಲೆ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ಇತ್ತಿನ ಲೂಪ್‍ಡ್ದ್ ಪದಿಯಿ ಬಲೆ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ಈ ಲೂಪುನು ಅರ್ದೊಡೆ ಬುಡುದ್ ಬೊಕ್ಕ ನನತ್ತ ಪುನರಾವರ್ತನೆಗ್ ದುಂಬರಿಲೆ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ಎಚ್ಚರೊ: ಈ ತಡೆನ್ ಕಾಲಿ ಒಂಜಿ ಲೂಪುದುಲಯಿ ಮಾತ್ರ ಗಳಸೊಲಿ."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 ಪಟ್ಟಿಡ್ ಪ್ರತಿ ಒಂಜಿ ವಿಸಯ %1 ಗ್"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಪ್ರತಿ ವಿಸಯೊಗು, '%1' ವ್ಯತ್ಯಾಯೊನು ವಿಸಯೊಗು ಜೋಡಾಲೆ, ಬೊಕ್ಕ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪುಲೆ."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "%2 ಡ್ದ್ %3 ಮುಟ %4 ಸರ್ತಿ %1 ದ ಒಟ್ಟುಗು ಗೆನ್ಪು"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ನಿರ್ದಿಸ್ಟೊ ಮದ್ಯಂತರೊದ ಮೂಲಕೊ ದೆತೊಂದು '%1' ವ್ಯತ್ಯಯೊಡ್ ಸುರುತ್ತ ಅಂಕೆಡ್ದ್ ಕಡೆತ್ತ ಅಂಕೆ ಮುಟ್ಟದ ಮೌಲ್ಯೊನು ದೆತ್ತೊನಾವ್ ಬೊಕ್ಕ ನಿಗಂಟ್ ಮಲ್ತಿನ ತಡೆಕ್ಲೆನ್ ಮಲ್ಪು"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಶರ್ತನ್ ಸೇರಾವ್"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಕಡೆತ್ತ ಮಾತೆನ್ಲಾ-ಪತ್ತ್ (catch-all) ಶರ್ತನ್ ಸೇರಾವ್"; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ಸೇರಾವ್, ದೆತ್ತ್‌ ಬುಡು, ಅತ್ತಂಡ ಈ 'ಒಂಜಿ ವೇಲೆ' ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ಅತ್ತಂಡ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ಅತ್ತಂಡ"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ಒಂಜಿ ವೇಲೆ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ಸುರುತ್ತ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ಸುರುತ್ತ ಮೌಲ್ಯೊ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆದ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು. ಒಂಜೇಲೆ ಒವ್ವೇ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತಿಜಿಂಡ, ಪಾತೆರೊಲೆನ ಕಡೆತ್ತ ತಡೆ ಮಲ್ಪು."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ಮಲ್ಪುಲೆ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = " %1 ಸರ್ತಿ ಕೂಡೊರ ಮಲ್ಪು"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಸ್ತ್ ಸರ್ತಿ ಮಲ್ಪು"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ಉಂದು ನಿಜ ಆಪಿಲೆಕೊ ಕುಡೊರ ಮಲ್ಪು:"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ಉಂದು ನಿಜ ಆಂಡ ಕುಡೊರ ಮಲ್ಪು:"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ಮೌಲ್ಯ ತಪ್ಪು ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "ಮಾತ %1 ಬ್ಲಾಕ್‍ಲೆನ್ ದೆತ್ತ್‌ದ್ ಬುಡೊಡೆ?"; -Blockly.Msg["DELETE_BLOCK"] = "ಬ್ಲಾಕ್‍ನ್ ಮಾಜಾವು"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' ವ್ಯತ್ಯಯೊನು ಮಾಜಾಲೆ"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' ವ್ಯತ್ಯಯೊದ %1 ಉಪಯೋಗೊಲೆನ್ ಮಾಜಾವೊಡೆ?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ಬ್ಲಾಕ್‍ಲೆನ್ ಮಾಜಾವು"; -Blockly.Msg["DIALOG_CANCEL"] = "ಉಂತಾಲೆ"; -Blockly.Msg["DIALOG_OK"] = "ಅವು"; -Blockly.Msg["DISABLE_BLOCK"] = "ಬ್ಲಾಕ್‍ನ್ ದೆತ್ತ್‌ಪಾಡ್"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ನಕಲ್"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "ತಡೆನ್ ಸಕ್ರಿಯೊ ಮಲ್ಪು"; -Blockly.Msg["EXPAND_ALL"] = "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಪರಡಾವು"; -Blockly.Msg["EXPAND_BLOCK"] = "ಬ್ಲಾಕ್‍ದ ಮಾಹಿತಿನ್ ಪರಡಾವು"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ಪಿದಯಿದ ಪರಿಪು"; -Blockly.Msg["HELP"] = "ಸಹಾಯೊ"; -Blockly.Msg["INLINE_INPUTS"] = "ಉಳಸಾಲ್‍ದ ಉಳಪರಿಪು"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ಕಾಲಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "ಒಂಜಿ ಪಟ್ಟಿ, ೦ ಉದ್ದೊದ, ಒವ್ವೇ ಮಾಹಿತಿ ದಾಂತಿನ ದಾಖಲೆ ಪಿರಕೊರು."; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ಪಟ್ಟಿ"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "ಈ ಪಟ್ಟಿ ತಡೆನ್ ಕುಡ ಸಂರಚನೆ ಮಲ್ಪೆರೆ ಸೇರಾಲೆ, ದೆತ್ತ್ ಬುಡುಲೆ, ಅತ್ತಂಡ ವಿಬಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ಒಟ್ಟುಗು ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "ಪಟ್ಟಿಗ್ ಒಂಜಿ ವಿಸಯೊನು ಸೇರಾಲೆ."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "ಏತೇ ವಿಸಯೊಲುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ"; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ಸುರುತ"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "ಅಕೇರಿಡ್ದ್ #"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "ದೆತೊನು"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "ದೆತ್ತೊನು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡು"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ಕಡೆತ"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ಒವ್ವಾಂಡಲ"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ದೆಪ್ಪುಲೆ"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ಅಕೇರಿಡ್ದ್ # ಗ್"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# ಗ್"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ಅಕೇರಿಗ್"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ಸುರುಡ್ದು ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "ಅಕೇರಿಡ್ದ್ # ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "ಪಟ್ಯೊದ ನಿರ್ದಿಷ್ಟ ಬಾಗೊದ ಪ್ರತಿನ್ ಉಂಡುಮಲ್ಪುಂಡು."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ಅಕೇರಿತ ವಿಸಯೊ"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ಸುರುತ ವಿಸಯೊ"; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "ವಿಸಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "ವಿಸಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ವಿಸಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರ್ಪುಂಡು. ವಿಸಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರ್ಪುಂಡು."; -Blockly.Msg["LISTS_INLIST"] = "ಪಟ್ಟಿಡ್"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ಕಾಲಿ"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 ಉದ್ದೊ"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "ಪಟ್ಟಿದ ಉದ್ದೊನು ಪಿರಕೊರು."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 ವಿಸಯೊ %2 ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ."; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "ಕೊರಿನ ಮೌಲ್ಯೊ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಕ್ಯೆದಾತ್ ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ಲೆಕ"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ಸೇರಾವ್"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "ಸೆಟ್ ಮಲ್ಪು"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿದ ಸುರುಕ್ಕು ವಿಸಯೊನು ಸೇರಾವುಂಡು."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿದ ಅಕೇರಿಗ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಓಲಾಂಡಲ ವಿಸಯೊನು ಸೇರಾವುಂಡು."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ಏರುನು"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ಜಪ್ಪುನು"; -Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 ಇಂಗಡಿಪು"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "ಒಂಜಿ ಪಟ್ಟಿದ ಒಂಜಿ ಪ್ರತಿನ್ ಇಂಗಡಿಪು"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ಅಕ್ಷರೊ, ನಮೂನೆ (case) ಅಲಕ್ಷ್ಯೊ ಮಲ್ಪುಲೆ"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ಸಂಖ್ಯೆ"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "ಅಕ್ಷರೊ"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ಪಟ್ಯೊಲೆ ಪಟ್ಟಿನ್ ತಯಾರ್ ಮಲ್ಪುಲೆ"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ಪಟ್ಟಿದ ಪಟ್ಯೊನು ತಯಾರ್ ಮಲ್ಪುಲೆ"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಮಿತಿಸೂಚಕೊದ ಮೂಲಕೊ ಬೇತೆ ಮಲ್ತ್‌ದ್ ಒಂಜಿ ಪಟ್ಯೊಗು ಸೇರಾಲೆ."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "ಪಟ್ಯೊಲೆನ್ ಪ್ರತಿ ಮಿತಿಸೂಚಕೊಡು ತುಂಡು ಮಲ್ತ್‌ದ್ ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿಗ್ ಬಾಗೊ ಮಲ್ಪುಲೆ."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ಮಿತಿಸೂಚಕೊದ ಒಟ್ಟುಗು"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ಸುಲ್ಲು"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ಒಂಜೆ ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನ್ ಪಿರಕೊರು"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ಸತ್ಯೊ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಅತ್ತಾಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 ಅತ್ತ್"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ಇನ್‌ಪುಟ್ ಸುಲ್ಲಾದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು. ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ಸುಲ್ಲು'ನ್ ಪಿರಕೊರು."; -Blockly.Msg["LOGIC_NULL"] = "ಸೊನ್ನೆ"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ಸೊನ್ನೆನ್ ಪಿರಕೊರ್ಪುಂಡು"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ಬುಕ್ಕೊ"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ಅತ್ತಂಡ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ರಡ್ಡ್‌ಲಾ ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಇನ್‌ಪುಟ್ ನಿಜ ಆಂಡಲಾ, 'ನಿಜ'ನ್ ಪಿರಕೊರು."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ಪರೀಕ್ಷೆ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'ಪರೀಕ್ಷೆ'ಡ್ ಶರ್ತನ್ ಸರಿತೂಲೆ. ಶರ್ತ ನಿಜವಾದಿತ್ತ್ಂಡ, 'ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು; ಇಜ್ಜಿಂಡ 'ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/ಅಂಕಗಣಿತ"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ರಡ್ಡ್ ಸಂಖ್ಯೆದ ಮೊತ್ತನ್ ಪಿರಕೊರು."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "ಸಂಖ್ಯೆದ ಭಾಗಲಬ್ದೊನು ಪಿರಕೊರು."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "ರಡ್ಡ ಸ್ಂಖ್ಯೆದ ವ್ಯತ್ಯಾಸೊನು ಪಿರಕೊರು."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "ಸಂಖ್ಯೆದ ಗುಣಲಬ್ಧೊನು ಪಿರಕೊರು."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "ಸುರುತ್ತ ಸಂಖ್ಯೆದ ಘಾತೊನು ರಡ್ಡನೆ ಸಂಖ್ಯೆಗ್ ಏರ್ಪಾದ್ ಪಿರಕೊರು."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 ನ್ %2 ಟ್ ಬದಲ್ ಮಲ್ಪು"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "'%1' ವ್ಯತ್ಯಯೊಗು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಸೇರಾವ್"; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/ಗಣಿತ_ನಿರಂತರ"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ಒಂಜಿ ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕೊನು ಪಿರಕೊರು: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%2 ಕಮ್ಮಿ %3 ಜಾಸ್ತಿ %1 ನಿರ್ಬಂಧ ಮಲ್ಪು"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "ನಿಗದಿತ ಮಿತಿತ ನಡುಟು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ನಿರ್ಬಂಧ ಮಲ್ಪು"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ಭಾಗಿಪೊಲಿ"; -Blockly.Msg["MATH_IS_EVEN"] = "ಸಮ ಸಂಖ್ಯೆ"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "ಋಣ ಸಂಖ್ಯೆ"; -Blockly.Msg["MATH_IS_ODD"] = "ಬೆಸ ಸಂಖ್ಯೆ"; -Blockly.Msg["MATH_IS_POSITIVE"] = "ಧನ ಸಂಖ್ಯೆ"; -Blockly.Msg["MATH_IS_PRIME"] = "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆ"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "ಒಂಜಿ ಸಂಖ್ಯೆ ಸಮನಾ, ಬೆಸನಾ, ಅವಿಭಾಜ್ಯನಾ, ಪೂರ್ಣನಾ, ಧನನಾ, ಋಣನಾ, ಅತ್ತಂಡ ಅವೆನ್ ಬೇತೆ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಡ್ದ್ ಭಾಗಿಪೊಲಿಯಾ ಪಂದ್ ಪರೀಕ್ಷೆ ಮಲ್ಪು. ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನು ಪಿರಕೊರ್ಪುಂಡು."; -Blockly.Msg["MATH_IS_WHOLE"] = "ಪೂರ್ಣ ಸಂಖ್ಯೆ"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/ಮೋಡ್ಯುಲೊ_ಒಪರೇಶನ್"; -Blockly.Msg["MATH_MODULO_TITLE"] = " %1 ÷ %2 ತ ಶೇಷ"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "ರಡ್ಡ್ ಸಂಖ್ಯೆಲೆನ್ ಭಾಗ ಮಲ್ತ್‌ದ್ ಶೇಷೊನು ಪಿರಕೊರು."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/ಸಂಖ್ಯೆ"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ಅ ನಂಬ್ರೊ."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ಪಟ್ಟಿದ ಸರಾಸರಿ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ಪಟ್ಟಿಡ್ ಮಲ್ಲವ್"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ಪಟ್ಟಿದ ನಡುತ್ತವ್"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ಪಟ್ಟಿಡ್ ಕಿಞ್ಞವ್"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ಪಟ್ಟಿದ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ಮೌಲ್ಯ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಷಯ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ಪಟ್ಟಿದ ಮೊತ್ತ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಸರಾಸರಿನ್ ಪಿರಕೊರು"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಲ್ಲ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ನಡುತ್ತ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಕಿಞ್ಞ ಸಂಕ್ಯೆನ್ ಪಿರಕೊರು"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ವಿಷಯೊನು ಪಿರಕೊರು"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಂಶೊನು ಪಿರಕೊರು."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನೊನು ಪಿರಕೊರು"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಮೊತ್ತನ್ ಪಿರಕೊರು"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿ"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (ಸೇರ್‌ದ್) ಬೊಕ್ಕ 1.0 (ಸೇರಂದೆ) ನಡುತ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿನ್ ಪಿರಕೊರು."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = " %1 ಡ್ದ್ %2 ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊ"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "ರಡ್ಡ್ ನಿಗದಿತ ಮಿತಿತ ನಡುತ್ತ ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊನು ಪಿರಕೊರು"; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/ಪೂರ್ಣಾಂಕೊ"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ರೌಂಡ್"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ತಿರ್ತ್‌ಗ್ ರೌಂಡ್"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ಮಿತ್ತ್‌ಗ್ ರೌಂಡ್"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಮಿತ್ತ್‌ಗ್ ಅತ್ತಂಡ ತಿರ್ತ್‌ಗ್ ರೌಂಡ್ ಮಲ್ಪು"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ಸಂಪೂರ್ನೊ"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ವರ್ಗಮೂಲೊ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "ಸಂಖ್ಯೆದ ಸರಿಯಾಯಿನ ಮೌಲ್ಯೊನು ಕೊರು"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು 'e'ನ್ ಪಿರಕೊರು."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ಸಂಖ್ಯೆದ ಪ್ರಾಕೃತಿಕ ಲಘುಗಣಕನ್ ಪಿರಕೊರು"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ಸಂಖ್ಯೆದ ದಶಮಾನ ಲಘುಗಣಕನ್ ಪಿರಕೊರು"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ಸಂಖ್ಯೆದ ನಿಷೇಧೊನು ಪಿರಕೊರು"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು ೧೦ನ್ ಪಿರಕೊರು"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ಸಂಖ್ಯೆದ ವರ್ಗಮೂಲೊನು ಪಿರಕೊರು."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/ತ್ರಿಕೋನಮಿತಿದ_ಕಾರ್ಯೊಲು"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌‌ಕೊಸೈನ್ ಪಿರಕೊರು."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಸೈನ್ ಪಿರಕೊರು."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಟ್ಯಾನ್‌ಜ್ಂಟ್ ಪಿರಕೊರು."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "ಒಂಜಿ ಡಿಗ್ರಿದ ಕೊಸೈನ್ (cosine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "ಒಂಜಿ ಡಿಗ್ರಿದ ಸೈನ್ (sine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "ಒಂಜಿ ಡಿಗ್ರಿದ ಟ್ಯಾನ್‌ಜೆಂಟ್ (tangent) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "ವ್ಯತ್ಯಯೊನು ಉಂಡು ಮಲ್ಪುಲೆ"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ಪೊಸ ವ್ಯತ್ಯಯೊದ ಪುದರ್:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ಹೇಳಿಕೆಗ್ ಅವಕಾಸೊ"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ಒಟ್ಟುಗು:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "'%1' ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊನು ನಡಪಾಲೆ."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = " ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊ '%1' ನು ನಡಪಾಲೆ ಬುಕ್ಕೊ ಅಯಿತ ಉತ್ಪಾದನೆನ್ ಗಲಸ್‌ಲೆ."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ಒಟ್ಟುಗು:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = " '%1'ನ್ ಉಂಡುಮಲ್ಪುಲೆ"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "ಈ ಕಾರ್ಯೊನು ಇವರಿಪುಲೆ..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ಎಂಚಿನಾಂಡಲ ಮಲ್ಪುಲೆ"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ಇಂದೆಕ್"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "ಔಟ್‌ಪುಟ್ ದಾಂತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ಪಿರಕೊರು"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "ಔಟ್‌ಪುಟ್ ಇತ್ತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯೊಡು ನಕಲಿ ಮಾನದಂಡೊ ಉಂಡು."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "ದೆರ್ತ್ ತೋಜುನ ಕಾರ್ಯೊದ ವ್ಯಾಕ್ಯಾನೊ"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ಮೌಲ್ಯೊ ಸತ್ಯೊ ಆಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯೊನು ಪಿರಕೊರು."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಒಂಜಿ ಕಾರ್ಯ ವ್ಯಾಕ್ಯಾನೊದುಲಯಿ ಮಾತ್ರ ಈ ತಡೆನ್ ಗಲಸೊಲಿ."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ಉಲಪರಿಪುದ ಪುದರ್:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ಕಾರ್ಯೊಗು ಒಂಜಿ ಉಲಪರಿಪುನು ಸೇರಲೆ."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ಉಲಪರಿಪು"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "ಸೇರಾಲೆ, ದೆತ್ತ್‌ ಬುಡುಲೆ, ಅತ್ತಂಡ ಈ ಕಾರ್ಯೊಗು ಉಲಪರಿಪುಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ."; -Blockly.Msg["REDO"] = "ಕುಡ ಮಲ್ಪು"; -Blockly.Msg["REMOVE_COMMENT"] = "ಟಿಪ್ಪಣಿನ್ ದೆತ್ತ್‌ದ್ ಬುಡ್ಲೆ"; -Blockly.Msg["RENAME_VARIABLE"] = "ವ್ಯತ್ಯಯೊಗು ಕುಡೊರ ಪುದರ್ ದೀಲೆ"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ಮಾತಾ '%1' ವ್ಯತ್ಯಯೊಲೆನ ಪುದರ್‌ನ್ ನೆಕ್ಕ್ ಬದಲ್ ಮಲ್ಪುಲೆ:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "ಇಂದೆಕ್ %1 ಪಟ್ಯೊನು ಸೇರವೆ %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "%1 ವ್ಯತ್ಯಯೊಗು ಕೆಲವು ಪಟ್ಯೊಲೆನ್ ಸೇರಾವ್"; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ಎಲ್ಯ ಅಕ್ಷರೊಗು"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "ತರೆಬರವುದ ಅಕ್ಷರೊಗು"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "ಮಲ್ಲ ಅಕ್ಷರೊಗು"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "ಪಟ್ಯೊದ ಒಂಜಿ ನಕಲ್‍ನ್ ಬೇತೆ ನಮೂನೆಡ್ (case) ಪಿರಕೊರು."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "ಸುರುತ್ತ ಅಕ್ಷರೊನು ದೆತ್ತೊನು"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ನ್ ದೆತ್ತೊನು"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "ಅಕ್ಸರೊ #ನ್ ದೆತ್ತೊನು"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "ಅಕೇರಿದ ಅಕ್ಷರೊನು ದೆತ್ತೊನು"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಕ್ಷರೊನು ದೆತ್ತೊನು"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "%1 %2 ಪದೊಟ್ಟು"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "ಅಕ್ಷರೊನು ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ಪಿರಕೊರ್ಪುಂಡು."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "ಪಟ್ಯೊಗು ಒಂಜಿ ವಿಷಯೊನು ಸೇರಾವ್"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ಸೇರಾವ್"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "ಈ ಪಠ್ಯ ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ, ಸೇರಾವ್, ದೆತ್ತ್ ಬುಡು, ಅತ್ತಂಡ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪು."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಗು"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ಅಕ್ಷರೊ #ಗು"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ಅಕೇರಿದ ಅಕ್ಷರೊಗು"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ಪಟ್ಯೊಡು"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ಸುರುತ್ತ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊ ದೆತ್ತೊನು"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "ಪಟ್ಯೊದ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಬಾಗೊನು ಪಿರಕೊರ್ಪುಂಡು."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ಪಟ್ಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ಪಟ್ಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ಪಟ್ಯೊಡು %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "ರಡ್ಡನೆ ಪಟ್ಯೊಡು ಉಪ್ಪುನ ಸುರುತ ಪಟ್ಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರು. ಪಟ್ಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರು."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ಖಾಲಿ"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "ಕೊರಿನ ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ನೆಡ್ದ್ ಪಟ್ಯೊನು ಉಂಡು ಮಲ್ಪು"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "ಏತಾಂಡಲ ವಿಷಯಲೆನ್ ಒಟ್ಟುಗು ಸೇರಾದ್ ಒಂಜಿ ಪಟ್ಯೊದ ತುಂಡುನು ಉಂಡುಮಲ್ಪು."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 ಉದ್ದೊ"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "ಕೊರಿನ ಪಟ್ಯೊದ ಅಕ್ಷರೊಲೆನ (ಅಂತರೊಲು ಸೇರ್‌ದ್) ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 ಮುದ್ರಣ"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟ ಪಟ್ಯೊ, ಸಂಖ್ಯೆ ಅತ್ತಂಡ ಬೇತೆ ಮೌಲ್ಯೊನು ಮುದ್ರಿಪುಲೆ."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "ಒಂಜಿ ಸಂಖ್ಯೆಗ್ ಸದಸ್ಯೆರೆನ್ ಕೇನ್"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "ಕೆಲವು ಪಟ್ಯೊಗು ಸದಸ್ಯೆರೆನ್ ಕೇನ್."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "ಸಂದೇಶೊದೊಟ್ಟುಗು ಸಂಕ್ಯೆನ್ ಕೇನ್"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ಸಂದೇಶೊದೊಟ್ಟುಗು ಪಟ್ಯೊಗು ಕೇನ್."; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/ಸ್ಟ್ರಿಂಗ್_(ಕಂಪ್ಯೂಟರ್_ಸೈನ್ಸ್)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "ಒಂಜಿ ಅಕ್ಷರೊ, ಪದೊ ಅತ್ತಂಡ ಪಾಟೊದ ಒಂಜಿ ಸಾಲ್"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ರಡ್ಡ್ ಮೆಯಿತ್ತಲ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್."; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ಎಡತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್."; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ಬಲತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್."; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "ಒಂಜಿ ಅತ್ತಂಡ ರಡ್ಡ್ ಕೊಡಿಡ್ದ್ ಅಂತರೊಲೆನ್ (space) ದೆತ್ತ್‌ದ್ ಪಟ್ಯೊದ ಪ್ರತಿನ್ ಪಿರಕೊರು."; -Blockly.Msg["TODAY"] = "ಇನಿ"; -Blockly.Msg["UNDO"] = "ದುಂಬುದಲೆಕೊ"; -Blockly.Msg["UNNAMED_KEY"] = "ಪುದರ್ ಇಜ್ಜಂತಿನವು"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ವಸ್ತು"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'ಸೆಟ್ %1' ಉಂಡುಮಲ್ಪುಲೆ"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "ಈ ವ್ಯತ್ಯಯೊದ ಮೌಲ್ಯೊನು ಪಿರಕೊರು."; -Blockly.Msg["VARIABLES_SET"] = "%1 ನ್ %2 ಕ್ಕ್ ಸೆಟ್ ಮಲ್ಪುಲೆ"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'ದೆತ್ತೊನು %1' ಉಂಡುಮಲ್ಪುಲೆ"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "ಈ ವ್ಯತ್ಯಯೊನು ಇನ್‌ಪುಟ್‌ಗ್ ಸಮ ಆಪಿಲೆಕ ಸೆಟ್ ಮಲ್ಪುಂಡು."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' ಪನ್ಪಿ ಪುದರ್‌ದ ವ್ಯತ್ಯಯೊ ದುಂಬೆ ಅಸ್ತಿತ್ವೊಡು ಉಂಡು."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ದಾದಾಂಡಲ ಪನ್ಲೇ..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ಟಿಪ್ಪಣಿ ಸೇರ್ಸಲೆ"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ಮೌಲ್ಯೊನು ಬದಲ್ ಮಲ್ಪು"; +Blockly.Msg["CLEAN_UP"] = "ಬ್ಲಾಕ್‍ಲೆನ್ ಸ್ವೊಚ್ಚೊ ಮಲ್ಪುಲೆ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಎಲ್ಯ ಮಲ್ಪು"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ಎಲ್ಯೆ ಮಲ್ತ್‌ದ್ ತಡೆಲೆ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ಬಣ್ಣೊ ೧(ಒಂಜಿ)"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ಬಣ್ಣೊ ೨(ರಡ್ಡ್)"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ಅನುಪಾತೊ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ಬೆರಕ್ಕೆ ಮಲ್ಪು"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ಕೊರಿನ ಅನುಪಾತೊಡು (0.0- 1.0) ರಡ್ಡ್ ಬಣ್ಣೊಲೆನ್ ಬೆರಕೆ ಮಲ್ಪುಂಡು."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/ಬಣ್ಣೊ"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "ಬಣ್ಣೊ ಪಟೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ಒವ್ವೇ ಒಂಜಿ ಬಣ್ಣೊ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ನೀಲಿ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ಪಚ್ಚೆ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ಕೆಂಪು"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ಬಣ್ಣೊದ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ತೊಜಪಾಯಿನ ಪ್ರಮಾಣೊದ ಕೆಂಪು, ಪಚ್ಚೆ ಬೊಕ್ಕ ನೀಲಿ ಬಣ್ಣೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಉಂಡು ಮಲ್ಪುಲೆ. ಮಾತಾ ಮೌಲ್ಯೊಲು 0 ಬುಕ್ಕೊ 100 ತ ನಡುಟೆ ಇಪ್ಪೊಡು."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ಲೂಪ್ ಕಡಿಯುನಿ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ಬೊಕ್ಕದ ಲೂಪ್ ಪುನರಾವರ್ತನೆದೊಟ್ಟುಗು ದುಂಬರಿಲೆ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ಇತ್ತಿನ ಲೂಪ್‍ಡ್ದ್ ಪದಿಯಿ ಬಲೆ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ಈ ಲೂಪುನು ಅರ್ದೊಡೆ ಬುಡುದ್ ಬೊಕ್ಕ ನನತ್ತ ಪುನರಾವರ್ತನೆಗ್ ದುಂಬರಿಲೆ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ಎಚ್ಚರೊ: ಈ ತಡೆನ್ ಕಾಲಿ ಒಂಜಿ ಲೂಪುದುಲಯಿ ಮಾತ್ರ ಗಳಸೊಲಿ."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "%2 ಪಟ್ಟಿಡ್ ಪ್ರತಿ ಒಂಜಿ ವಿಸಯ %1 ಗ್"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಪ್ರತಿ ವಿಸಯೊಗು, '%1' ವ್ಯತ್ಯಾಯೊನು ವಿಸಯೊಗು ಜೋಡಾಲೆ, ಬೊಕ್ಕ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪುಲೆ."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%2 ಡ್ದ್ %3 ಮುಟ %4 ಸರ್ತಿ %1 ದ ಒಟ್ಟುಗು ಗೆನ್ಪು"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ನಿರ್ದಿಸ್ಟೊ ಮದ್ಯಂತರೊದ ಮೂಲಕೊ ದೆತೊಂದು '%1' ವ್ಯತ್ಯಯೊಡ್ ಸುರುತ್ತ ಅಂಕೆಡ್ದ್ ಕಡೆತ್ತ ಅಂಕೆ ಮುಟ್ಟದ ಮೌಲ್ಯೊನು ದೆತ್ತೊನಾವ್ ಬೊಕ್ಕ ನಿಗಂಟ್ ಮಲ್ತಿನ ತಡೆಕ್ಲೆನ್ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಶರ್ತನ್ ಸೇರಾವ್"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಕಡೆತ್ತ ಮಾತೆನ್ಲಾ-ಪತ್ತ್ (catch-all) ಶರ್ತನ್ ಸೇರಾವ್"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "ಸೇರಾವ್, ದೆತ್ತ್‌ ಬುಡು, ಅತ್ತಂಡ ಈ 'ಒಂಜಿ ವೇಲೆ' ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ಅತ್ತಂಡ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ಅತ್ತಂಡ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ಒಂಜಿ ವೇಲೆ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ಸುರುತ್ತ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ಸುರುತ್ತ ಮೌಲ್ಯೊ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆದ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು. ಒಂಜೇಲೆ ಒವ್ವೇ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತಿಜಿಂಡ, ಪಾತೆರೊಲೆನ ಕಡೆತ್ತ ತಡೆ ಮಲ್ಪು."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ಮಲ್ಪುಲೆ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = " %1 ಸರ್ತಿ ಕೂಡೊರ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಸ್ತ್ ಸರ್ತಿ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ಉಂದು ನಿಜ ಆಪಿಲೆಕೊ ಕುಡೊರ ಮಲ್ಪು:"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ಉಂದು ನಿಜ ಆಂಡ ಕುಡೊರ ಮಲ್ಪು:"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ಮೌಲ್ಯ ತಪ್ಪು ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ಮಾತ %1 ಬ್ಲಾಕ್‍ಲೆನ್ ದೆತ್ತ್‌ದ್ ಬುಡೊಡೆ?"; +Blockly.Msg["DELETE_BLOCK"] = "ಬ್ಲಾಕ್‍ನ್ ಮಾಜಾವು"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' ವ್ಯತ್ಯಯೊನು ಮಾಜಾಲೆ"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' ವ್ಯತ್ಯಯೊದ %1 ಉಪಯೋಗೊಲೆನ್ ಮಾಜಾವೊಡೆ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ಬ್ಲಾಕ್‍ಲೆನ್ ಮಾಜಾವು"; +Blockly.Msg["DIALOG_CANCEL"] = "ಉಂತಾಲೆ"; +Blockly.Msg["DIALOG_OK"] = "ಅವು"; +Blockly.Msg["DISABLE_BLOCK"] = "ಬ್ಲಾಕ್‍ನ್ ದೆತ್ತ್‌ಪಾಡ್"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ನಕಲ್"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ತಡೆನ್ ಸಕ್ರಿಯೊ ಮಲ್ಪು"; +Blockly.Msg["EXPAND_ALL"] = "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಪರಡಾವು"; +Blockly.Msg["EXPAND_BLOCK"] = "ಬ್ಲಾಕ್‍ದ ಮಾಹಿತಿನ್ ಪರಡಾವು"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ಪಿದಯಿದ ಪರಿಪು"; +Blockly.Msg["HELP"] = "ಸಹಾಯೊ"; +Blockly.Msg["INLINE_INPUTS"] = "ಉಳಸಾಲ್‍ದ ಉಳಪರಿಪು"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "ಕಾಲಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "ಒಂಜಿ ಪಟ್ಟಿ, ೦ ಉದ್ದೊದ, ಒವ್ವೇ ಮಾಹಿತಿ ದಾಂತಿನ ದಾಖಲೆ ಪಿರಕೊರು."; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "ಪಟ್ಟಿ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "ಈ ಪಟ್ಟಿ ತಡೆನ್ ಕುಡ ಸಂರಚನೆ ಮಲ್ಪೆರೆ ಸೇರಾಲೆ, ದೆತ್ತ್ ಬುಡುಲೆ, ಅತ್ತಂಡ ವಿಬಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ಒಟ್ಟುಗು ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "ಪಟ್ಟಿಗ್ ಒಂಜಿ ವಿಸಯೊನು ಸೇರಾಲೆ."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "ಏತೇ ವಿಸಯೊಲುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ಸುರುತ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "ಅಕೇರಿಡ್ದ್ #"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "ದೆತೊನು"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "ದೆತ್ತೊನು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡು"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ಕಡೆತ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ಒವ್ವಾಂಡಲ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ದೆಪ್ಪುಲೆ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ಅಕೇರಿಡ್ದ್ # ಗ್"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# ಗ್"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ಅಕೇರಿಗ್"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ಸುರುಡ್ದು ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "ಅಕೇರಿಡ್ದ್ # ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "ಪಟ್ಯೊದ ನಿರ್ದಿಷ್ಟ ಬಾಗೊದ ಪ್ರತಿನ್ ಉಂಡುಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ಅಕೇರಿತ ವಿಸಯೊ"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ಸುರುತ ವಿಸಯೊ"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "ವಿಸಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "ವಿಸಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ವಿಸಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರ್ಪುಂಡು. ವಿಸಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["LISTS_INLIST"] = "ಪಟ್ಟಿಡ್"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ಕಾಲಿ"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 ಉದ್ದೊ"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "ಪಟ್ಟಿದ ಉದ್ದೊನು ಪಿರಕೊರು."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 ವಿಸಯೊ %2 ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ."; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "ಕೊರಿನ ಮೌಲ್ಯೊ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಕ್ಯೆದಾತ್ ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ಲೆಕ"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "ಸೇರಾವ್"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ಸೆಟ್ ಮಲ್ಪು"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿದ ಸುರುಕ್ಕು ವಿಸಯೊನು ಸೇರಾವುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿದ ಅಕೇರಿಗ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಓಲಾಂಡಲ ವಿಸಯೊನು ಸೇರಾವುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ಏರುನು"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "ಜಪ್ಪುನು"; +Blockly.Msg["LISTS_SORT_TITLE"] = "%1 %2 %3 ಇಂಗಡಿಪು"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "ಒಂಜಿ ಪಟ್ಟಿದ ಒಂಜಿ ಪ್ರತಿನ್ ಇಂಗಡಿಪು"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ಅಕ್ಷರೊ, ನಮೂನೆ (case) ಅಲಕ್ಷ್ಯೊ ಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ಸಂಖ್ಯೆ"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "ಅಕ್ಷರೊ"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ಪಟ್ಯೊಲೆ ಪಟ್ಟಿನ್ ತಯಾರ್ ಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ಪಟ್ಟಿದ ಪಟ್ಯೊನು ತಯಾರ್ ಮಲ್ಪುಲೆ"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಮಿತಿಸೂಚಕೊದ ಮೂಲಕೊ ಬೇತೆ ಮಲ್ತ್‌ದ್ ಒಂಜಿ ಪಟ್ಯೊಗು ಸೇರಾಲೆ."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "ಪಟ್ಯೊಲೆನ್ ಪ್ರತಿ ಮಿತಿಸೂಚಕೊಡು ತುಂಡು ಮಲ್ತ್‌ದ್ ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿಗ್ ಬಾಗೊ ಮಲ್ಪುಲೆ."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ಮಿತಿಸೂಚಕೊದ ಒಟ್ಟುಗು"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ಸುಲ್ಲು"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "ಒಂಜೆ ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ಸತ್ಯೊ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಅತ್ತಾಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 ಅತ್ತ್"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "ಇನ್‌ಪುಟ್ ಸುಲ್ಲಾದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು. ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ಸುಲ್ಲು'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["LOGIC_NULL"] = "ಸೊನ್ನೆ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "ಸೊನ್ನೆನ್ ಪಿರಕೊರ್ಪುಂಡು"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ಬುಕ್ಕೊ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ಅತ್ತಂಡ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "ರಡ್ಡ್‌ಲಾ ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಇನ್‌ಪುಟ್ ನಿಜ ಆಂಡಲಾ, 'ನಿಜ'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ಪರೀಕ್ಷೆ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'ಪರೀಕ್ಷೆ'ಡ್ ಶರ್ತನ್ ಸರಿತೂಲೆ. ಶರ್ತ ನಿಜವಾದಿತ್ತ್ಂಡ, 'ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು; ಇಜ್ಜಿಂಡ 'ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/ಅಂಕಗಣಿತ"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "ರಡ್ಡ್ ಸಂಖ್ಯೆದ ಮೊತ್ತನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "ಸಂಖ್ಯೆದ ಭಾಗಲಬ್ದೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "ರಡ್ಡ ಸ್ಂಖ್ಯೆದ ವ್ಯತ್ಯಾಸೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "ಸಂಖ್ಯೆದ ಗುಣಲಬ್ಧೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "ಸುರುತ್ತ ಸಂಖ್ಯೆದ ಘಾತೊನು ರಡ್ಡನೆ ಸಂಖ್ಯೆಗ್ ಏರ್ಪಾದ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 ನ್ %2 ಟ್ ಬದಲ್ ಮಲ್ಪು"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "'%1' ವ್ಯತ್ಯಯೊಗು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಸೇರಾವ್"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/ಗಣಿತ_ನಿರಂತರ"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "ಒಂಜಿ ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕೊನು ಪಿರಕೊರು: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%2 ಕಮ್ಮಿ %3 ಜಾಸ್ತಿ %1 ನಿರ್ಬಂಧ ಮಲ್ಪು"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "ನಿಗದಿತ ಮಿತಿತ ನಡುಟು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ನಿರ್ಬಂಧ ಮಲ್ಪು"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ಭಾಗಿಪೊಲಿ"; +Blockly.Msg["MATH_IS_EVEN"] = "ಸಮ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "ಋಣ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_ODD"] = "ಬೆಸ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_POSITIVE"] = "ಧನ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_PRIME"] = "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "ಒಂಜಿ ಸಂಖ್ಯೆ ಸಮನಾ, ಬೆಸನಾ, ಅವಿಭಾಜ್ಯನಾ, ಪೂರ್ಣನಾ, ಧನನಾ, ಋಣನಾ, ಅತ್ತಂಡ ಅವೆನ್ ಬೇತೆ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಡ್ದ್ ಭಾಗಿಪೊಲಿಯಾ ಪಂದ್ ಪರೀಕ್ಷೆ ಮಲ್ಪು. ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["MATH_IS_WHOLE"] = "ಪೂರ್ಣ ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/ಮೋಡ್ಯುಲೊ_ಒಪರೇಶನ್"; +Blockly.Msg["MATH_MODULO_TITLE"] = " %1 ÷ %2 ತ ಶೇಷ"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "ರಡ್ಡ್ ಸಂಖ್ಯೆಲೆನ್ ಭಾಗ ಮಲ್ತ್‌ದ್ ಶೇಷೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/ಸಂಖ್ಯೆ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ಅ ನಂಬ್ರೊ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ಪಟ್ಟಿದ ಸರಾಸರಿ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "ಪಟ್ಟಿಡ್ ಮಲ್ಲವ್"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ಪಟ್ಟಿದ ನಡುತ್ತವ್"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "ಪಟ್ಟಿಡ್ ಕಿಞ್ಞವ್"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ಪಟ್ಟಿದ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ಮೌಲ್ಯ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಷಯ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ಪಟ್ಟಿದ ಮೊತ್ತ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಸರಾಸರಿನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಲ್ಲ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ನಡುತ್ತ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಕಿಞ್ಞ ಸಂಕ್ಯೆನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ವಿಷಯೊನು ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಂಶೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನೊನು ಪಿರಕೊರು"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಮೊತ್ತನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (ಸೇರ್‌ದ್) ಬೊಕ್ಕ 1.0 (ಸೇರಂದೆ) ನಡುತ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = " %1 ಡ್ದ್ %2 ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊ"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "ರಡ್ಡ್ ನಿಗದಿತ ಮಿತಿತ ನಡುತ್ತ ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊನು ಪಿರಕೊರು"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/ಪೂರ್ಣಾಂಕೊ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ರೌಂಡ್"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ತಿರ್ತ್‌ಗ್ ರೌಂಡ್"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ಮಿತ್ತ್‌ಗ್ ರೌಂಡ್"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಮಿತ್ತ್‌ಗ್ ಅತ್ತಂಡ ತಿರ್ತ್‌ಗ್ ರೌಂಡ್ ಮಲ್ಪು"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ಸಂಪೂರ್ನೊ"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "ವರ್ಗಮೂಲೊ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "ಸಂಖ್ಯೆದ ಸರಿಯಾಯಿನ ಮೌಲ್ಯೊನು ಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು 'e'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "ಸಂಖ್ಯೆದ ಪ್ರಾಕೃತಿಕ ಲಘುಗಣಕನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "ಸಂಖ್ಯೆದ ದಶಮಾನ ಲಘುಗಣಕನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "ಸಂಖ್ಯೆದ ನಿಷೇಧೊನು ಪಿರಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು ೧೦ನ್ ಪಿರಕೊರು"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "ಸಂಖ್ಯೆದ ವರ್ಗಮೂಲೊನು ಪಿರಕೊರು."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/ತ್ರಿಕೋನಮಿತಿದ_ಕಾರ್ಯೊಲು"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌‌ಕೊಸೈನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಸೈನ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಟ್ಯಾನ್‌ಜ್ಂಟ್ ಪಿರಕೊರು."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "ಒಂಜಿ ಡಿಗ್ರಿದ ಕೊಸೈನ್ (cosine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "ಒಂಜಿ ಡಿಗ್ರಿದ ಸೈನ್ (sine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "ಒಂಜಿ ಡಿಗ್ರಿದ ಟ್ಯಾನ್‌ಜೆಂಟ್ (tangent) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ವ್ಯತ್ಯಯೊನು ಉಂಡು ಮಲ್ಪುಲೆ"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ಪೊಸ ವ್ಯತ್ಯಯೊದ ಪುದರ್:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ಹೇಳಿಕೆಗ್ ಅವಕಾಸೊ"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ಒಟ್ಟುಗು:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "'%1' ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊನು ನಡಪಾಲೆ."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = " ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊ '%1' ನು ನಡಪಾಲೆ ಬುಕ್ಕೊ ಅಯಿತ ಉತ್ಪಾದನೆನ್ ಗಲಸ್‌ಲೆ."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ಒಟ್ಟುಗು:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = " '%1'ನ್ ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "ಈ ಕಾರ್ಯೊನು ಇವರಿಪುಲೆ..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ಎಂಚಿನಾಂಡಲ ಮಲ್ಪುಲೆ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ಇಂದೆಕ್"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "ಔಟ್‌ಪುಟ್ ದಾಂತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "ಪಿರಕೊರು"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "ಔಟ್‌ಪುಟ್ ಇತ್ತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯೊಡು ನಕಲಿ ಮಾನದಂಡೊ ಉಂಡು."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "ದೆರ್ತ್ ತೋಜುನ ಕಾರ್ಯೊದ ವ್ಯಾಕ್ಯಾನೊ"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ಮೌಲ್ಯೊ ಸತ್ಯೊ ಆಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯೊನು ಪಿರಕೊರು."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ಎಚ್ಚರಿಕೆ: ಒಂಜಿ ಕಾರ್ಯ ವ್ಯಾಕ್ಯಾನೊದುಲಯಿ ಮಾತ್ರ ಈ ತಡೆನ್ ಗಲಸೊಲಿ."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ಉಲಪರಿಪುದ ಪುದರ್:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ಕಾರ್ಯೊಗು ಒಂಜಿ ಉಲಪರಿಪುನು ಸೇರಲೆ."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "ಉಲಪರಿಪು"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "ಸೇರಾಲೆ, ದೆತ್ತ್‌ ಬುಡುಲೆ, ಅತ್ತಂಡ ಈ ಕಾರ್ಯೊಗು ಉಲಪರಿಪುಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ."; +Blockly.Msg["REDO"] = "ಕುಡ ಮಲ್ಪು"; +Blockly.Msg["REMOVE_COMMENT"] = "ಟಿಪ್ಪಣಿನ್ ದೆತ್ತ್‌ದ್ ಬುಡ್ಲೆ"; +Blockly.Msg["RENAME_VARIABLE"] = "ವ್ಯತ್ಯಯೊಗು ಕುಡೊರ ಪುದರ್ ದೀಲೆ"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ಮಾತಾ '%1' ವ್ಯತ್ಯಯೊಲೆನ ಪುದರ್‌ನ್ ನೆಕ್ಕ್ ಬದಲ್ ಮಲ್ಪುಲೆ:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "ಇಂದೆಕ್ %1 ಪಟ್ಯೊನು ಸೇರವೆ %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "%1 ವ್ಯತ್ಯಯೊಗು ಕೆಲವು ಪಟ್ಯೊಲೆನ್ ಸೇರಾವ್"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "ಎಲ್ಯ ಅಕ್ಷರೊಗು"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "ತರೆಬರವುದ ಅಕ್ಷರೊಗು"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "ಮಲ್ಲ ಅಕ್ಷರೊಗು"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "ಪಟ್ಯೊದ ಒಂಜಿ ನಕಲ್‍ನ್ ಬೇತೆ ನಮೂನೆಡ್ (case) ಪಿರಕೊರು."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ಸುರುತ್ತ ಅಕ್ಷರೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ನ್ ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "ಅಕ್ಸರೊ #ನ್ ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "ಅಕೇರಿದ ಅಕ್ಷರೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಕ್ಷರೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "%1 %2 ಪದೊಟ್ಟು"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "ಅಕ್ಷರೊನು ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "ಪಟ್ಯೊಗು ಒಂಜಿ ವಿಷಯೊನು ಸೇರಾವ್"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ಸೇರಾವ್"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "ಈ ಪಠ್ಯ ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ, ಸೇರಾವ್, ದೆತ್ತ್ ಬುಡು, ಅತ್ತಂಡ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪು."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಗು"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "ಅಕ್ಷರೊ #ಗು"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ಅಕೇರಿದ ಅಕ್ಷರೊಗು"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ಪಟ್ಯೊಡು"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ಸುರುತ್ತ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊ ದೆತ್ತೊನು"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "ಪಟ್ಯೊದ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಬಾಗೊನು ಪಿರಕೊರ್ಪುಂಡು."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ಪಟ್ಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ಪಟ್ಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ಪಟ್ಯೊಡು %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "ರಡ್ಡನೆ ಪಟ್ಯೊಡು ಉಪ್ಪುನ ಸುರುತ ಪಟ್ಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರು. ಪಟ್ಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರು."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ಖಾಲಿ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "ಕೊರಿನ ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ನೆಡ್ದ್ ಪಟ್ಯೊನು ಉಂಡು ಮಲ್ಪು"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "ಏತಾಂಡಲ ವಿಷಯಲೆನ್ ಒಟ್ಟುಗು ಸೇರಾದ್ ಒಂಜಿ ಪಟ್ಯೊದ ತುಂಡುನು ಉಂಡುಮಲ್ಪು."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 ಉದ್ದೊ"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "ಕೊರಿನ ಪಟ್ಯೊದ ಅಕ್ಷರೊಲೆನ (ಅಂತರೊಲು ಸೇರ್‌ದ್) ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 ಮುದ್ರಣ"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "ನಿರ್ದಿಷ್ಟ ಪಟ್ಯೊ, ಸಂಖ್ಯೆ ಅತ್ತಂಡ ಬೇತೆ ಮೌಲ್ಯೊನು ಮುದ್ರಿಪುಲೆ."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "ಒಂಜಿ ಸಂಖ್ಯೆಗ್ ಸದಸ್ಯೆರೆನ್ ಕೇನ್"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "ಕೆಲವು ಪಟ್ಯೊಗು ಸದಸ್ಯೆರೆನ್ ಕೇನ್."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "ಸಂದೇಶೊದೊಟ್ಟುಗು ಸಂಕ್ಯೆನ್ ಕೇನ್"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ಸಂದೇಶೊದೊಟ್ಟುಗು ಪಟ್ಯೊಗು ಕೇನ್."; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/ಸ್ಟ್ರಿಂಗ್_(ಕಂಪ್ಯೂಟರ್_ಸೈನ್ಸ್)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "ಒಂಜಿ ಅಕ್ಷರೊ, ಪದೊ ಅತ್ತಂಡ ಪಾಟೊದ ಒಂಜಿ ಸಾಲ್"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ರಡ್ಡ್ ಮೆಯಿತ್ತಲ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್."; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ಎಡತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್."; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ಬಲತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್."; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "ಒಂಜಿ ಅತ್ತಂಡ ರಡ್ಡ್ ಕೊಡಿಡ್ದ್ ಅಂತರೊಲೆನ್ (space) ದೆತ್ತ್‌ದ್ ಪಟ್ಯೊದ ಪ್ರತಿನ್ ಪಿರಕೊರು."; +Blockly.Msg["TODAY"] = "ಇನಿ"; +Blockly.Msg["UNDO"] = "ದುಂಬುದಲೆಕೊ"; +Blockly.Msg["UNNAMED_KEY"] = "ಪುದರ್ ಇಜ್ಜಂತಿನವು"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ವಸ್ತು"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'ಸೆಟ್ %1' ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "ಈ ವ್ಯತ್ಯಯೊದ ಮೌಲ್ಯೊನು ಪಿರಕೊರು."; +Blockly.Msg["VARIABLES_SET"] = "%1 ನ್ %2 ಕ್ಕ್ ಸೆಟ್ ಮಲ್ಪುಲೆ"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'ದೆತ್ತೊನು %1' ಉಂಡುಮಲ್ಪುಲೆ"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "ಈ ವ್ಯತ್ಯಯೊನು ಇನ್‌ಪುಟ್‌ಗ್ ಸಮ ಆಪಿಲೆಕ ಸೆಟ್ ಮಲ್ಪುಂಡು."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' ಪನ್ಪಿ ಪುದರ್‌ದ ವ್ಯತ್ಯಯೊ ದುಂಬೆ ಅಸ್ತಿತ್ವೊಡು ಉಂಡು."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "ದಾದಾಂಡಲ ಪನ್ಲೇ..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/te.js b/msg/js/te.js index 5bbc0e01b17..c928dada27c 100644 --- a/msg/js/te.js +++ b/msg/js/te.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "వ్యాఖ్య చేర్చు"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "విలువ మార్చు"; -Blockly.Msg["CLEAN_UP"] = "నిరోదనలను శుభ్రపరుచు"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "నిరోదనలను కూల్చు"; -Blockly.Msg["COLLAPSE_BLOCK"] = "నరోదన కూల్చు"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "రంగు 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "రంగు 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "నిష్పత్తి"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "మిశ్రమం"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "రెండు రంగులను (0.0 - 1.0) నిష్పత్తిలో మిశ్రమించాలి."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://te.wikipedia.org/wiki/రంగు"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "చిత్రకారుడు ఉపయోగించే రంగుల నుండి ఒక దానిని ఎంచుకో."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "యాదృచ్ఛిక రంగు"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "యాదృచ్ఛికంగా ఒక రంగును ఎంచుకో."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "నీలం"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ఆకుపచ్చ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ఎరుపు"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "తో రంగు"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ఎరుపు,పచ్చ మరియు బులుగు రంగులను సమంగా ఉపయోగించి ఒక రంగును సృష్ఠించండి.అన్ని విలువలు 0 నుండి 100 మధ్యలో ఉండాలి."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ఒక అంశం కోసం %1 జాబితా లో %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "దీనితో లెక్కించు %1 నుండి %2 వరకు %3 తో %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "అయితే"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://te.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "చేయు"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 సార్లు మళ్ళీ కొనసాగించు"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "కొన్ని నివేదికలు లేదా ప్రతిపాదనలు అనేక మార్లు చెయ్యండి."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "అంతవరకు మళ్ళీ కొనసాగించండి"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ఒక వె తప్పైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ఒక వెల నిజమైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "మెుత్తం %1నిరోదనలను తొలగించు?"; -Blockly.Msg["DELETE_BLOCK"] = "నిరోదన తొలగించు"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "%1నిరోదనలను తోలగించు"; -Blockly.Msg["DIALOG_CANCEL"] = "రద్దు"; -Blockly.Msg["DIALOG_OK"] = "సరే"; -Blockly.Msg["DISABLE_BLOCK"] = "నిరోదన పని చేయకుండా చేయు"; -Blockly.Msg["DUPLICATE_BLOCK"] = "నకలు"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "నిరోదన ప్రారంబించు"; -Blockly.Msg["EXPAND_ALL"] = "నిరోదనలను విస్తరించు"; -Blockly.Msg["EXPAND_BLOCK"] = "నిరోదన విస్తరించు"; -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "సహాయం"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "జాబితా"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "మొదటి"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "#చివరి నుండి"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "పొందు"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "తెచ్చుకుని, తీసెయ్యి"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "చివరి"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "యాదృచ్చిక"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "తొలగించు"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "చివరి నుండి # వరకు"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# కు"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "తుదకు"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "జాబితాలో"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "గా"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "అసత్యం"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "సత్యం"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 కాదు"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "చెల్లని"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "మరియు"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "లేదా"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "పరీక్షించు"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "అసత్యమైతే"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "సత్యమైతే"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://te.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "రెండు సంఖ్యల మొత్తానికి తిరిగి వెళ్ళండి."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "రెండు సంఖ్యల తేడాకి తిరిగి వెళ్ళండి"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "దీనితో భాగించబడును"; -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "ప్రతికూలంగా ఉంది"; -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "అనుకూలంగా ఉంది"; -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ఒ సంఖ్య."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "జాబితా సగటు"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "జాబితా మొత్తం"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "కొత్త వ్యత్యాసం..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "కొత్త వ్యత్యాసం పేరు:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "తో:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "తో:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ఏదో ఒకటి చేయి"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "కు"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "తిరిగి వెళ్ళు"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "మళ్ళీ చెయ్యి"; -Blockly.Msg["REMOVE_COMMENT"] = "వ్యాఖ్యను తొలగించు"; -Blockly.Msg["RENAME_VARIABLE"] = "పునఃనామకరణ వ్యత్యాసం..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "మొత్తం వ్యత్యాసాలను '%1' దీనికి పునఃనామకరణించు:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "మొదటి వర్ణాన్ని పొందు"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "చివరి వర్ణాన్ని పొందు"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "యాదృశ్చిక వర్ణాన్ని పొందు"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "చేరు"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "% 1 ఖాళీ"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 పొడువు"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "నేడు"; -Blockly.Msg["UNDO"] = "రద్దుచెయ్యి"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "అంశం"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "వ్యాఖ్య చేర్చు"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "విలువ మార్చు"; +Blockly.Msg["CLEAN_UP"] = "నిరోదనలను శుభ్రపరుచు"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "నిరోదనలను కూల్చు"; +Blockly.Msg["COLLAPSE_BLOCK"] = "నరోదన కూల్చు"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "రంగు 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "రంగు 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "నిష్పత్తి"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "మిశ్రమం"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "రెండు రంగులను (0.0 - 1.0) నిష్పత్తిలో మిశ్రమించాలి."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://te.wikipedia.org/wiki/రంగు"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "చిత్రకారుడు ఉపయోగించే రంగుల నుండి ఒక దానిని ఎంచుకో."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "యాదృచ్ఛిక రంగు"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "యాదృచ్ఛికంగా ఒక రంగును ఎంచుకో."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "నీలం"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ఆకుపచ్చ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ఎరుపు"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "తో రంగు"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ఎరుపు,పచ్చ మరియు బులుగు రంగులను సమంగా ఉపయోగించి ఒక రంగును సృష్ఠించండి.అన్ని విలువలు 0 నుండి 100 మధ్యలో ఉండాలి."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ఒక అంశం కోసం %1 జాబితా లో %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "దీనితో లెక్కించు %1 నుండి %2 వరకు %3 తో %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "అయితే"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://te.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "చేయు"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 సార్లు మళ్ళీ కొనసాగించు"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "కొన్ని నివేదికలు లేదా ప్రతిపాదనలు అనేక మార్లు చెయ్యండి."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "అంతవరకు మళ్ళీ కొనసాగించండి"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ఒక వె తప్పైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ఒక వెల నిజమైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "మెుత్తం %1నిరోదనలను తొలగించు?"; +Blockly.Msg["DELETE_BLOCK"] = "నిరోదన తొలగించు"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1నిరోదనలను తోలగించు"; +Blockly.Msg["DIALOG_CANCEL"] = "రద్దు"; +Blockly.Msg["DIALOG_OK"] = "సరే"; +Blockly.Msg["DISABLE_BLOCK"] = "నిరోదన పని చేయకుండా చేయు"; +Blockly.Msg["DUPLICATE_BLOCK"] = "నకలు"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "నిరోదన ప్రారంబించు"; +Blockly.Msg["EXPAND_ALL"] = "నిరోదనలను విస్తరించు"; +Blockly.Msg["EXPAND_BLOCK"] = "నిరోదన విస్తరించు"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "సహాయం"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "జాబితా"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "మొదటి"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "#చివరి నుండి"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "పొందు"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "తెచ్చుకుని, తీసెయ్యి"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "చివరి"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "యాదృచ్చిక"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "తొలగించు"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "చివరి నుండి # వరకు"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "# కు"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "తుదకు"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "జాబితాలో"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "గా"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "అసత్యం"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "సత్యం"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 కాదు"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "చెల్లని"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "మరియు"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "లేదా"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "పరీక్షించు"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "అసత్యమైతే"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "సత్యమైతే"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://te.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "రెండు సంఖ్యల మొత్తానికి తిరిగి వెళ్ళండి."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "రెండు సంఖ్యల తేడాకి తిరిగి వెళ్ళండి"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "దీనితో భాగించబడును"; +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "ప్రతికూలంగా ఉంది"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "అనుకూలంగా ఉంది"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ఒ సంఖ్య."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "జాబితా సగటు"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "జాబితా మొత్తం"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "కొత్త వ్యత్యాసం..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "కొత్త వ్యత్యాసం పేరు:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "తో:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "తో:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ఏదో ఒకటి చేయి"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "కు"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "తిరిగి వెళ్ళు"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "మళ్ళీ చెయ్యి"; +Blockly.Msg["REMOVE_COMMENT"] = "వ్యాఖ్యను తొలగించు"; +Blockly.Msg["RENAME_VARIABLE"] = "పునఃనామకరణ వ్యత్యాసం..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "మొత్తం వ్యత్యాసాలను '%1' దీనికి పునఃనామకరణించు:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "మొదటి వర్ణాన్ని పొందు"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "చివరి వర్ణాన్ని పొందు"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "యాదృశ్చిక వర్ణాన్ని పొందు"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "చేరు"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "% 1 ఖాళీ"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 పొడువు"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "నేడు"; +Blockly.Msg["UNDO"] = "రద్దుచెయ్యి"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "అంశం"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/th.js b/msg/js/th.js index c0f4eafc993..e412babd17b 100644 --- a/msg/js/th.js +++ b/msg/js/th.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ใส่คำอธิบาย"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "ไม่สามารถลบตัวแปร '%1' ได้เนื่องจากเป็นส่วนหนึ่งของนิยามของฟังก์ชัน '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "เปลี่ยนค่า:"; -Blockly.Msg["CLEAN_UP"] = "จัดเรียงบล็อกให้เป็นแถว"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "บล็อกที่ถูกพับมีคำเตือนอยู่ข้างใน."; -Blockly.Msg["COLLAPSE_ALL"] = "ย่อบล็อก"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ย่อบล็อก"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "สีที่ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "สีที่ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "อัตราส่วน"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ผสม"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ผสมสองสีเข้าด้วยกันด้วยอัตราส่วน (0.0 - 1.0)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://th.wikipedia.org/wiki/สี"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "เลือกสีจากจานสี"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "สุ่มสี"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "เลือกสีแบบสุ่ม"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "ค่าสีน้ำเงิน"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ค่าสีเขียว"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ค่าสีแดง"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "สีที่ประกอบด้วย"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "สร้างสีด้วยการกำหนดค่าสีแดง เขียว และน้ำเงิน ค่าทั้งหมดต้องอยู่ระหว่าง 0 ถึง 100"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ออกจากการวนซ้ำ"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "เริ่มการวนซ้ำรอบต่อไป"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ออกจากการวนซ้ำที่อยู่"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ข้ามคำสั่งที่เหลืออยู่ และเริ่มต้นวนซ้ำรอบต่อไป"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "คำเตือน: บล็อกนี้ใช้งานได้ภายในการวนซ้ำเท่านั้น"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "จากทุกรายการ %1 ในรายชื่อ %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "จากทุกรายการในรายชื่อ ตั้งค่าตัวแปร \"%1\" เป็นรายการ และทำตามคำสั่งที่กำหนดไว้"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "นับด้วย %1 จาก %2 จนถึง %3 เปลี่ยนค่าทีละ %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ตัวแปร '%1' จะเริ่มจากจำนวนเริ่มต้น ไปจนถึงจำนวนสุดท้าย ตามระยะที่กำหนด และ ทำบล็อกที่กำหนดไว้"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "กำหนดเงื่อนไขของบล็อก \"ถ้า\""; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "เพิ่มสิ่งสุดท้าย ที่จะตรวจจับความเป็นไปได้ทั้งหมดของบล็อก \"ถ้า\""; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "เพิ่ม ลบ หรือจัดเรียงบล็อก \"ถ้า\" นี้ใหม่"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "นอกเหนือจากนี้"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "นอกเหนือจากนี้ ถ้า"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ถ้า"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด แต่ถ้าเงื่อนไขเป็นเท็จก็จะทำ \"นอกเหนือจากนี้\""; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำตามคำสั่งในบล็อกแรก แต่ถ้าไม่ก็จะไปตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามเงื่อนไขในบล็อกที่สองนี้"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำคำสั่งในบล็อกแรก จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าเงื่อนไขแรกเป็นเท็จ ก็จะทำการตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามคำสั่งในบล็อกที่สอง จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าทั้งเงื่อนไขแรกและเงื่อนไขที่สองเป็นเท็จทั้งหมด ก็จะมาทำบล็อกที่สาม"; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ทำ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ทำซ้ำ %1 ครั้ง"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ทำซ้ำบางคำสั่งหลายครั้ง"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ทำซ้ำจนกระทั่ง"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ทำซ้ำขณะที่"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ขณะที่ค่าเป็นเท็จ ก็จะทำบางคำสั่ง"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ขณะที่ค่าเป็นจริง ก็จะทำบางคำสั่ง"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "ลบ %1 บล็อกทั้งหมด?"; -Blockly.Msg["DELETE_BLOCK"] = "ลบบล็อก"; -Blockly.Msg["DELETE_VARIABLE"] = "ลบตัวแปร '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "ลบการใช้ตัวแปร %2 %1 ครั้งหรือไม่"; -Blockly.Msg["DELETE_X_BLOCKS"] = "ลบ %1 บล็อก"; -Blockly.Msg["DIALOG_CANCEL"] = "ยกเลิก"; -Blockly.Msg["DIALOG_OK"] = "ตกลง"; -Blockly.Msg["DISABLE_BLOCK"] = "ปิดใช้งานบล็อก"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ทำสำเนา"; -Blockly.Msg["DUPLICATE_COMMENT"] = "ทำสำเนาความเห็น"; -Blockly.Msg["ENABLE_BLOCK"] = "เปิดใช้งานบล็อก"; -Blockly.Msg["EXPAND_ALL"] = "ขยายบล็อก"; -Blockly.Msg["EXPAND_BLOCK"] = "ขยายบล็อก"; -Blockly.Msg["EXTERNAL_INPUTS"] = "อินพุตภายนอก"; -Blockly.Msg["HELP"] = "ช่วยเหลือ"; -Blockly.Msg["INLINE_INPUTS"] = "อินพุตในบรรทัด"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "สร้างรายการเปล่า"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "สร้างรายการเปล่า (ความยาวเป็น 0) ยังไม่มีข้อมูลใดๆ อยู่"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "รายการ"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "เพิ่ม ลบ หรือจัดเรียงบล็อกรายการนี้ใหม่"; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "สร้างข้อความด้วย"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "เพิ่มไอเท็มเข้าไปในรายการ"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "สร้างรายการพร้อมด้วยไอเท็ม"; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "แรกสุด"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# จากท้าย"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "เรียกดู"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "เรียกดูและเอาออก"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ท้ายสุด"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "สุ่ม"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "เอาออก"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "คืนค่าไอเท็มอันแรกในรายการ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "คืนค่าไอเท็มอันสุดท้ายในรายการ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "คืนค่าไอเท็มแบบสุ่มจากรายการ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "เอาออก และคืนค่าไอเท็มอันแรกในรายการ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "เอาออก และคืนค่าไอเท็มในตำแหน่งที่ระบุจากรายการ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "เอาออก และคืนค่าไอเท็มอันสุดท้ายในรายการ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "เอาออก และคืนค่าไอเท็มแบบสุ่มจากรายการ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "เอาไอเท็มแรกสุดในรายการออก"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "เอาไอเท็มอันท้ายสุดในรายการออก"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "เอาไอเท็มแบบสุ่มจากรายการออก"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ถึง # จากท้ายสุด"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "จนถึง #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ถึง ท้ายสุด"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ดึงรายการย่อยทั้งแต่แรกสุด"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "ดึงรายการย่อยจาก # จากท้ายสุด"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "ดึงรายการย่อยจาก #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "สร้างสำเนารายการในช่วงที่กำหนด"; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 คือไอเท็มอันท้ายสุด"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 คือไอเท็มอันแรกสุด"; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "หาอันแรกที่พบ"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "หาอันสุดท้ายที่พบ"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "คืนค่าตำแหน่งของไอเท็มอันแรก/สุดท้ายที่พบในรายการ คืนค่า %1 ถ้าหาไม่พบ"; -Blockly.Msg["LISTS_INLIST"] = "ในรายการ"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ว่างเปล่า"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "คืนค่าเป็นจริง ถ้ารายการยังว่างเปล่า"; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "ความยาวของ %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "ส่งคืนค่าความยาวของรายการ"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "สร้างรายการที่มีไอเท็ม %1 จำนวน %2"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "สร้างรายการที่ประกอบด้วยค่าตามที่ระบุในจำนวนตามที่ต้องการ"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "เรียง %1 แบบย้อนกลับ"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "เรียงลำดับสำเนาของรายชื่อแบบย้อนกลับ"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "เป็น"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "แทรกที่"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "กำหนด"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "แทรกไอเท็มเข้าไปเป็นอันแรกสุดของรายการ"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "แทรกไอเท็มเข้าไปในตำแหน่งที่กำหนด"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "เพิ่มไอเท็มเข้าไปท้ายสุดของรายการ"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "เพิ่มไอเท็มเข้าไปในรายการแบบสุ่ม"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "กำหนดไอเท็มอันแรกในรายการ"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "กำหนดไอเท็มในตำแหน่งที่ระบุในรายการ"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "กำหนดไอเท็มอันสุดท้ายในรายการ"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "กำหนดไอเท็มแบบสุ่มในรายการ"; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "น้อยไปหามาก"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "มากไปหาน้อย"; -Blockly.Msg["LISTS_SORT_TITLE"] = "เรียงลำดับ %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "เรียงลำดับสำเนาของรายชื่อ"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ตัวอักษร"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ตัวเลข"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "ตัวอักษร"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "สร้างรายการจากข้อความ"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "สร้างข้อความจากรายการ"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "รวมรายการข้อความเป็นข้อความเดียว แบ่งด้วยตัวคั่น"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "แบ่งข้อความเป็นรายการข้อความ แยกแต่ละรายการด้วยตัวคั่น"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ด้วยตัวคั่น"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "เท็จ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "คืนค่าเป็นจริงหรือเท็จ"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "จริง"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://th.wikipedia.org/wiki/อสมการ"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นเท่ากัน"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าค่าที่สอง"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าหรือเท่ากับค่าที่สอง"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าค่าที่สอง"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าหรือเท่ากับค่าที่สอง"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นไม่เท่ากัน"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ไม่ %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่เป็นเท็จ คืนค่าเป็น \"เท็จ\" ถ้าค่าที่ใส่เป็นจริง"; -Blockly.Msg["LOGIC_NULL"] = "ไม่กำหนด"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "คืนค่า \"ไม่กำหนด\""; -Blockly.Msg["LOGIC_OPERATION_AND"] = "และ"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "หรือ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "คืนค่าเป็น \"จริง\" ถ้าค่าทั้งสองค่าเป็นจริง"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "คืนค่าเป็น \"จริง\" ถ้ามีอย่างน้อยหนึ่งค่าที่เป็นจริง"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ทดสอบ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ถ้า เป็นเท็จ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ถ้า เป็นจริง"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "ตรวจสอบเงื่อนไขใน \"ทดสอบ\" ถ้าเงื่อนไขเป็นจริง จะคืนค่า \"ถ้า เป็นจริง\" ถ้าเงื่อนไขเป็นเท็จ จะคืนค่า \"ถ้า เป็นเท็จ\""; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://th.wikipedia.org/wiki/เลขคณิต"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "คืนค่าผลรวมของตัวเลขทั้งสองจำนวน"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "คืนค่าผลหารของตัวเลขทั้งสองจำนวน"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "คืนค่าผลต่างของตัวเลขทั้งสองจำนวน"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "คืนค่าผลคูณของตัวเลขทั้งสองจำนวน"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "คืนค่าผลการยกกำลัง โดยตัวเลขแรกเป็นฐาน และตัวเลขที่สองเป็นเลขชี้กำลัง"; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ของ X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "เปลี่ยนอาร์กแทนเจนต์ของชุด (X, Y) จากองศา 180 เป็น -180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "เปลี่ยนค่า %1 เป็น %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "เพิ่มค่าของตัวแปร \"%1\""; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://th.wikipedia.org/wiki/ค่าคงตัวทางคณิตศาสตร์"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "คืนค่าคงตัวทางคณิตศาสตร์ที่พบบ่อยๆ เช่น π (3.141…), e (2.718…), φ (1.618…), รากที่สอง (1.414…), รากที่ ½ (0.707…), ∞ (อนันต์)"; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "จำกัดค่า %1 ต่ำสุด %2 สูงสุด %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "จำกัดค่าของตัวเลขให้อยู่ในช่วงที่กำหนด"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "หารลงตัว"; -Blockly.Msg["MATH_IS_EVEN"] = "เป็นจำนวนคู่"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "เป็นเลขติดลบ"; -Blockly.Msg["MATH_IS_ODD"] = "เป็นจำนวนคี่"; -Blockly.Msg["MATH_IS_POSITIVE"] = "เป็นเลขบวก"; -Blockly.Msg["MATH_IS_PRIME"] = "เป็นจำนวนเฉพาะ"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "ตรวจว่าตัวเลขเป็นจำนวนคู่ จำนวนคี่ จำนวนเฉพาะ จำนวนเต็ม เลขบวก เลขติดลบ หรือหารด้วยเลขที่กำหนดลงตัวหรือไม่ คืนค่าเป็นจริงหรือเท็จ"; -Blockly.Msg["MATH_IS_WHOLE"] = "เป็นเลขจำนวนเต็ม"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "เศษของ %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "คืนค่าเศษที่ได้จากการหารของตัวเลขทั้งสองจำนวน"; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://th.wikipedia.org/wiki/จำนวน"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "จำนวน"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ค่าเฉลี่ยของรายการ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "มากที่สุดในรายการ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ค่ามัธยฐานของรายการ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "น้อยที่สุดในรายการ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ฐานนิยมของรายการ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "สุ่มรายการ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ส่วนเบี่ยงเบนมาตรฐานของรายการ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ผลรวมของรายการ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "คืนค่าเฉลี่ยของรายการ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "คืนค่าตัวเลขที่มากที่สุดในรายการ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "คืนค่ามัธยฐานของรายการ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "คืนค่าตัวเลขที่น้อยที่สุดในรายการ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "คืนค่าฐานนิยมของรายการ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "สุ่มคืนค่าสิ่งที่อยู่ในรายการ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "คืนค่าส่วนเบี่ยงเบนมาตรฐานของรายการ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "คืนค่าผลรวมของตัวเลขทั้งหมดในรายการ"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "สุ่มเลขเศษส่วน"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "สุ่มเลขเศษส่วน ตั้งแต่ 0.0 แต่ไม่เกิน 1.0"; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "สุ่มเลขจำนวนเต็มตั้งแต่ %1 จนถึง %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "สุ่มเลขจำนวนเต็มจากช่วงที่กำหนด"; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://th.wikipedia.org/wiki/การปัดเศษ"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ปัดเศษ"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ปัดเศษลง"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ปัดเศษขึ้น"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "ปัดเศษของตัวเลขขึ้นหรือลง"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ค่าสัมบูรณ์"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "รากที่สอง"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "คืนค่าค่าสัมบูรณ์ของตัวเลข"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "คืนค่า e ยกกำลังด้วยตัวเลข"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "คืนค่าลอการิทึมธรรมชาติของตัวเลข"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "คืนค่าลอการิทึมฐานสิบของตัวเลข"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "คืนค่าติดลบของตัวเลข"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "คืนค่า 10 ยกกำลังด้วยตัวเลข"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "คืนค่ารากที่สองของตัวเลข"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://th.wikipedia.org/wiki/ฟังก์ชันตรีโกณมิติ"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "คืนค่า arccosine ของตัวเลข"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "คืนค่า arcsine ของตัวเลข"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "คืนค่า arctangent ของตัวเลข"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "คืนค่า cosine ขององศา (ไม่ใช่เรเดียน)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "คืนค่า sine ขององศา (ไม่ใช่เรเดียน)"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "คืนค่า tangent ขององศา (ไม่ใช่เรเดียน)"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "สร้างตัวแปรสี"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "สร้างตัวแปรจำนวน"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "สร้างตัวแปร string"; -Blockly.Msg["NEW_VARIABLE"] = "สร้างตัวแปร..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ชื่อตัวแปรใหม่:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ชนิดตัวแปรใหม่"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ข้อความที่ใช้ได้"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ด้วย:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://th.wikipedia.org/wiki/ซับรู้ทีน"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\""; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://th.wikipedia.org/wiki/ซับรูทีน"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\" และใช้ผลลัพธ์ของมัน"; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ด้วย:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "สร้าง \"%1\""; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "อธิบายฟังก์ชันนี้"; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ทำอะไรบางอย่าง"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ถึง"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "สร้างฟังก์ชันที่ไม่มีผลลัพธ์"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "คืนค่า"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "สร้างฟังก์ชันที่มีผลลัพธ์"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ระวัง: ฟังก์ชันนี้มีพารามิเตอร์ที่มีชื่อซ้ำกัน"; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "เน้นฟังก์ชันนิยาม"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ถ้ามีค่าเป็นจริง ให้คืนค่าที่สอง"; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ระวัง: บล็อกนี้ใช้เฉพาะในการสร้างฟังก์ชันเท่านั้น"; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ชื่อนำเข้า:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "เพิ่มค่าป้อนเข้าฟังก์ชัน"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "นำเข้า"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "เพิ่ม, ลบ, หรือจัดเรียง ข้อมูลที่ป้อนเข้าฟังก์ชันนี้"; -Blockly.Msg["REDO"] = "ทำซ้ำ"; -Blockly.Msg["REMOVE_COMMENT"] = "เอาคำอธิบายออก"; -Blockly.Msg["RENAME_VARIABLE"] = "เปลี่ยนชื่อตัวแปร..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "เปลี่ยนชื่อตัวแปร '%1' ทั้งหมดเป็น:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "นำเอา %1 ต่อด้วยข้อความ %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "ต่อข้อความให้ตัวแปร \"%1\""; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "เปลี่ยนเป็น ตัวพิมพ์เล็ก"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "เปลี่ยนเป็น ตัวอักษรแรกเป็นตัวพิมพ์ใหญ่"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "เปลี่ยนเป็น ตัวพิมพ์ใหญ่"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "คืนค่าสำเนาของข้อความในกรณีต่างๆ"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "ดึง ตัวอักษรตัวแรก"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ดึง ตัวอักษรตัวที่ # จากท้าย"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "ดึง ตัวอักษรตัวที่"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "ดึง ตัวอักษรตัวสุดท้าย"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ถึงตัวอักษรแบบสุ่ม"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "ในข้อความ %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "คืนค่าตัวอักษรจากตำแหน่งที่ระบุ"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "นับ %1 ภายใน %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "นับจำนวนข้อความแรกที่พบอยู่ในข้อความที่สอง"; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "เพิ่มรายการเข้าไปในข้อความ"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "รวม"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "เพิ่ม ลบ หรือจัดเรียงบล็อกข้อความนี้ใหม่"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "จนถึง ตัวอักษรที่ # จากท้าย"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "จนถึง ตัวอักษรที่"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "จนถึง ตัวอักษรสุดท้าย"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ในข้อความ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "แยกข้อความย่อยตั้งแต่ ตัวอักษรแรก"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่ # จากท้าย"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "คืนค่าบางส่วนของข้อความ"; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "หาข้อความแรกที่พบ"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "หาข้อความสุดท้ายที่พบ"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ในข้อความ %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "คืนค่าตำแหน่งที่พบข้อความแรกอยู่ในข้อความที่สอง คืนค่า %1 ถ้าหาไม่พบ"; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ว่าง"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "คืนค่าจริง ถ้าข้อความยังว่างเปล่า"; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "สร้างข้อความด้วย"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "สร้างข้อความด้วยการรวมจำนวนของรายการเข้าด้วยกัน"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "ความยาวของ %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "คืนค่าความยาวของข้อความ (รวมช่องว่าง)"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "พิมพ์ %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "พิมพ์ข้อความ ตัวเลข หรือค่าอื่นๆ"; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "แสดงหน้าต่างให้ผู้ใช้ใส่ตัวเลข"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "แสดงหน้าต่างให้ผู้ใช้ใส่ข้อความ"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "แสดงหน้าต่างตัวเลข"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "แสดงหน้าต่างข้อความ"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "แทนที่ %1 ด้วย %2 ใน %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "แทนที่ข้อความแรกทั้งหมดที่พบในข้อความที่สอง"; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "เรียง %1 แบบย้อนกลับ"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "เรียงตัวอักษรทั้งหมดของข้อความแบบย้อนกลับ"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://th.wikipedia.org/wiki/สายอักขระ"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "ตัวหนังสือ คำ หรือข้อความ"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ลบช่องว่างทั้งสองข้างของ"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ลบช่องว่างด้านหน้าของ"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ลบช่องว่างข้างท้ายของ"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "คืนค่าสำเนาของข้อความที่ลบเอาช่องว่างหน้าและหลังข้อความออกแล้ว"; -Blockly.Msg["TODAY"] = "วันนี้"; -Blockly.Msg["UNDO"] = "ย้อนกลับ"; -Blockly.Msg["UNNAMED_KEY"] = "ไม่มีชื่อ"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "รายการ"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "สร้าง \"กำหนด %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "คืนค่าของตัวแปรนี้"; -Blockly.Msg["VARIABLES_SET"] = "กำหนด %1 จนถึง %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "สร้าง \"get %1\""; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "กำหนดให้ตัวแปรนี้เท่ากับการป้อนข้อมูล"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "มีตัวแปรชื่อ '%1' อยู่แล้ว"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ตัวแปรชื่อ '%1' มีอยู่แล้วสำหรับตัวแปรอื่นของชนิด: '%2'"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "พื้นที่ทำงาน Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "เขียนอะไรสักอย่าง"; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ใส่คำอธิบาย"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "ไม่สามารถลบตัวแปร '%1' ได้เนื่องจากเป็นส่วนหนึ่งของนิยามของฟังก์ชัน '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "เปลี่ยนค่า:"; +Blockly.Msg["CLEAN_UP"] = "จัดเรียงบล็อกให้เป็นแถว"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "บล็อกที่ถูกพับมีคำเตือนอยู่ข้างใน."; +Blockly.Msg["COLLAPSE_ALL"] = "ย่อบล็อก"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ย่อบล็อก"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "สีที่ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "สีที่ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "อัตราส่วน"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ผสม"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ผสมสองสีเข้าด้วยกันด้วยอัตราส่วน (0.0 - 1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://th.wikipedia.org/wiki/สี"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "เลือกสีจากจานสี"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "สุ่มสี"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "เลือกสีแบบสุ่ม"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ค่าสีน้ำเงิน"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ค่าสีเขียว"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ค่าสีแดง"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "สีที่ประกอบด้วย"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "สร้างสีด้วยการกำหนดค่าสีแดง เขียว และน้ำเงิน ค่าทั้งหมดต้องอยู่ระหว่าง 0 ถึง 100"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ออกจากการวนซ้ำ"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "เริ่มการวนซ้ำรอบต่อไป"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ออกจากการวนซ้ำที่อยู่"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "ข้ามคำสั่งที่เหลืออยู่ และเริ่มต้นวนซ้ำรอบต่อไป"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "คำเตือน: บล็อกนี้ใช้งานได้ภายในการวนซ้ำเท่านั้น"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "จากทุกรายการ %1 ในรายชื่อ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "จากทุกรายการในรายชื่อ ตั้งค่าตัวแปร \"%1\" เป็นรายการ และทำตามคำสั่งที่กำหนดไว้"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "นับด้วย %1 จาก %2 จนถึง %3 เปลี่ยนค่าทีละ %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "ตัวแปร '%1' จะเริ่มจากจำนวนเริ่มต้น ไปจนถึงจำนวนสุดท้าย ตามระยะที่กำหนด และ ทำบล็อกที่กำหนดไว้"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "กำหนดเงื่อนไขของบล็อก \"ถ้า\""; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "เพิ่มสิ่งสุดท้าย ที่จะตรวจจับความเป็นไปได้ทั้งหมดของบล็อก \"ถ้า\""; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "เพิ่ม ลบ หรือจัดเรียงบล็อก \"ถ้า\" นี้ใหม่"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "นอกเหนือจากนี้"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "นอกเหนือจากนี้ ถ้า"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ถ้า"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด แต่ถ้าเงื่อนไขเป็นเท็จก็จะทำ \"นอกเหนือจากนี้\""; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำตามคำสั่งในบล็อกแรก แต่ถ้าไม่ก็จะไปตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามเงื่อนไขในบล็อกที่สองนี้"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำคำสั่งในบล็อกแรก จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าเงื่อนไขแรกเป็นเท็จ ก็จะทำการตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามคำสั่งในบล็อกที่สอง จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าทั้งเงื่อนไขแรกและเงื่อนไขที่สองเป็นเท็จทั้งหมด ก็จะมาทำบล็อกที่สาม"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ทำ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ทำซ้ำ %1 ครั้ง"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "ทำซ้ำบางคำสั่งหลายครั้ง"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ทำซ้ำจนกระทั่ง"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ทำซ้ำขณะที่"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "ขณะที่ค่าเป็นเท็จ ก็จะทำบางคำสั่ง"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ขณะที่ค่าเป็นจริง ก็จะทำบางคำสั่ง"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ลบ %1 บล็อกทั้งหมด?"; +Blockly.Msg["DELETE_BLOCK"] = "ลบบล็อก"; +Blockly.Msg["DELETE_VARIABLE"] = "ลบตัวแปร '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "ลบการใช้ตัวแปร %2 %1 ครั้งหรือไม่"; +Blockly.Msg["DELETE_X_BLOCKS"] = "ลบ %1 บล็อก"; +Blockly.Msg["DIALOG_CANCEL"] = "ยกเลิก"; +Blockly.Msg["DIALOG_OK"] = "ตกลง"; +Blockly.Msg["DISABLE_BLOCK"] = "ปิดใช้งานบล็อก"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ทำสำเนา"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ทำสำเนาความเห็น"; +Blockly.Msg["ENABLE_BLOCK"] = "เปิดใช้งานบล็อก"; +Blockly.Msg["EXPAND_ALL"] = "ขยายบล็อก"; +Blockly.Msg["EXPAND_BLOCK"] = "ขยายบล็อก"; +Blockly.Msg["EXTERNAL_INPUTS"] = "อินพุตภายนอก"; +Blockly.Msg["HELP"] = "ช่วยเหลือ"; +Blockly.Msg["INLINE_INPUTS"] = "อินพุตในบรรทัด"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "สร้างรายการเปล่า"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "สร้างรายการเปล่า (ความยาวเป็น 0) ยังไม่มีข้อมูลใดๆ อยู่"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "รายการ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "เพิ่ม ลบ หรือจัดเรียงบล็อกรายการนี้ใหม่"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "สร้างข้อความด้วย"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "เพิ่มไอเท็มเข้าไปในรายการ"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "สร้างรายการพร้อมด้วยไอเท็ม"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "แรกสุด"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# จากท้าย"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "เรียกดู"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "เรียกดูและเอาออก"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ท้ายสุด"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "สุ่ม"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "เอาออก"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "คืนค่าไอเท็มอันแรกในรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "คืนค่าไอเท็มอันสุดท้ายในรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "คืนค่าไอเท็มแบบสุ่มจากรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "เอาออก และคืนค่าไอเท็มอันแรกในรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "เอาออก และคืนค่าไอเท็มในตำแหน่งที่ระบุจากรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "เอาออก และคืนค่าไอเท็มอันสุดท้ายในรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "เอาออก และคืนค่าไอเท็มแบบสุ่มจากรายการ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "เอาไอเท็มแรกสุดในรายการออก"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "เอาไอเท็มอันท้ายสุดในรายการออก"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "เอาไอเท็มแบบสุ่มจากรายการออก"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "ถึง # จากท้ายสุด"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "จนถึง #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ถึง ท้ายสุด"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ดึงรายการย่อยทั้งแต่แรกสุด"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "ดึงรายการย่อยจาก # จากท้ายสุด"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "ดึงรายการย่อยจาก #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "สร้างสำเนารายการในช่วงที่กำหนด"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 คือไอเท็มอันท้ายสุด"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 คือไอเท็มอันแรกสุด"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "หาอันแรกที่พบ"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "หาอันสุดท้ายที่พบ"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "คืนค่าตำแหน่งของไอเท็มอันแรก/สุดท้ายที่พบในรายการ คืนค่า %1 ถ้าหาไม่พบ"; +Blockly.Msg["LISTS_INLIST"] = "ในรายการ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ว่างเปล่า"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "คืนค่าเป็นจริง ถ้ารายการยังว่างเปล่า"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "ความยาวของ %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "ส่งคืนค่าความยาวของรายการ"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "สร้างรายการที่มีไอเท็ม %1 จำนวน %2"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "สร้างรายการที่ประกอบด้วยค่าตามที่ระบุในจำนวนตามที่ต้องการ"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "เรียง %1 แบบย้อนกลับ"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "เรียงลำดับสำเนาของรายชื่อแบบย้อนกลับ"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "เป็น"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "แทรกที่"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "กำหนด"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "แทรกไอเท็มเข้าไปเป็นอันแรกสุดของรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "แทรกไอเท็มเข้าไปในตำแหน่งที่กำหนด"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "เพิ่มไอเท็มเข้าไปท้ายสุดของรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "เพิ่มไอเท็มเข้าไปในรายการแบบสุ่ม"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "กำหนดไอเท็มอันแรกในรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "กำหนดไอเท็มในตำแหน่งที่ระบุในรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "กำหนดไอเท็มอันสุดท้ายในรายการ"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "กำหนดไอเท็มแบบสุ่มในรายการ"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "น้อยไปหามาก"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "มากไปหาน้อย"; +Blockly.Msg["LISTS_SORT_TITLE"] = "เรียงลำดับ %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "เรียงลำดับสำเนาของรายชื่อ"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ตัวอักษร"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ตัวเลข"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "ตัวอักษร"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "สร้างรายการจากข้อความ"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "สร้างข้อความจากรายการ"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "รวมรายการข้อความเป็นข้อความเดียว แบ่งด้วยตัวคั่น"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "แบ่งข้อความเป็นรายการข้อความ แยกแต่ละรายการด้วยตัวคั่น"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "ด้วยตัวคั่น"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "เท็จ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "คืนค่าเป็นจริงหรือเท็จ"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "จริง"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://th.wikipedia.org/wiki/อสมการ"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นเท่ากัน"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าค่าที่สอง"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าหรือเท่ากับค่าที่สอง"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าค่าที่สอง"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าหรือเท่ากับค่าที่สอง"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นไม่เท่ากัน"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ไม่ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่เป็นเท็จ คืนค่าเป็น \"เท็จ\" ถ้าค่าที่ใส่เป็นจริง"; +Blockly.Msg["LOGIC_NULL"] = "ไม่กำหนด"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "คืนค่า \"ไม่กำหนด\""; +Blockly.Msg["LOGIC_OPERATION_AND"] = "และ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "หรือ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "คืนค่าเป็น \"จริง\" ถ้าค่าทั้งสองค่าเป็นจริง"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "คืนค่าเป็น \"จริง\" ถ้ามีอย่างน้อยหนึ่งค่าที่เป็นจริง"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ทดสอบ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ถ้า เป็นเท็จ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ถ้า เป็นจริง"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "ตรวจสอบเงื่อนไขใน \"ทดสอบ\" ถ้าเงื่อนไขเป็นจริง จะคืนค่า \"ถ้า เป็นจริง\" ถ้าเงื่อนไขเป็นเท็จ จะคืนค่า \"ถ้า เป็นเท็จ\""; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://th.wikipedia.org/wiki/เลขคณิต"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "คืนค่าผลรวมของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "คืนค่าผลหารของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "คืนค่าผลต่างของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "คืนค่าผลคูณของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "คืนค่าผลการยกกำลัง โดยตัวเลขแรกเป็นฐาน และตัวเลขที่สองเป็นเลขชี้กำลัง"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ของ X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "เปลี่ยนอาร์กแทนเจนต์ของชุด (X, Y) จากองศา 180 เป็น -180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "เปลี่ยนค่า %1 เป็น %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "เพิ่มค่าของตัวแปร \"%1\""; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://th.wikipedia.org/wiki/ค่าคงตัวทางคณิตศาสตร์"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "คืนค่าคงตัวทางคณิตศาสตร์ที่พบบ่อยๆ เช่น π (3.141…), e (2.718…), φ (1.618…), รากที่สอง (1.414…), รากที่ ½ (0.707…), ∞ (อนันต์)"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "จำกัดค่า %1 ต่ำสุด %2 สูงสุด %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "จำกัดค่าของตัวเลขให้อยู่ในช่วงที่กำหนด"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "หารลงตัว"; +Blockly.Msg["MATH_IS_EVEN"] = "เป็นจำนวนคู่"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "เป็นเลขติดลบ"; +Blockly.Msg["MATH_IS_ODD"] = "เป็นจำนวนคี่"; +Blockly.Msg["MATH_IS_POSITIVE"] = "เป็นเลขบวก"; +Blockly.Msg["MATH_IS_PRIME"] = "เป็นจำนวนเฉพาะ"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "ตรวจว่าตัวเลขเป็นจำนวนคู่ จำนวนคี่ จำนวนเฉพาะ จำนวนเต็ม เลขบวก เลขติดลบ หรือหารด้วยเลขที่กำหนดลงตัวหรือไม่ คืนค่าเป็นจริงหรือเท็จ"; +Blockly.Msg["MATH_IS_WHOLE"] = "เป็นเลขจำนวนเต็ม"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "เศษของ %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "คืนค่าเศษที่ได้จากการหารของตัวเลขทั้งสองจำนวน"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://th.wikipedia.org/wiki/จำนวน"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "จำนวน"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "ค่าเฉลี่ยของรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "มากที่สุดในรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "ค่ามัธยฐานของรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "น้อยที่สุดในรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "ฐานนิยมของรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "สุ่มรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "ส่วนเบี่ยงเบนมาตรฐานของรายการ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "ผลรวมของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "คืนค่าเฉลี่ยของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "คืนค่าตัวเลขที่มากที่สุดในรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "คืนค่ามัธยฐานของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "คืนค่าตัวเลขที่น้อยที่สุดในรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "คืนค่าฐานนิยมของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "สุ่มคืนค่าสิ่งที่อยู่ในรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "คืนค่าส่วนเบี่ยงเบนมาตรฐานของรายการ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "คืนค่าผลรวมของตัวเลขทั้งหมดในรายการ"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "สุ่มเลขเศษส่วน"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "สุ่มเลขเศษส่วน ตั้งแต่ 0.0 แต่ไม่เกิน 1.0"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "สุ่มเลขจำนวนเต็มตั้งแต่ %1 จนถึง %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "สุ่มเลขจำนวนเต็มจากช่วงที่กำหนด"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://th.wikipedia.org/wiki/การปัดเศษ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ปัดเศษ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "ปัดเศษลง"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "ปัดเศษขึ้น"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "ปัดเศษของตัวเลขขึ้นหรือลง"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "ค่าสัมบูรณ์"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "รากที่สอง"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "คืนค่าค่าสัมบูรณ์ของตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "คืนค่า e ยกกำลังด้วยตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "คืนค่าลอการิทึมธรรมชาติของตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "คืนค่าลอการิทึมฐานสิบของตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "คืนค่าติดลบของตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "คืนค่า 10 ยกกำลังด้วยตัวเลข"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "คืนค่ารากที่สองของตัวเลข"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://th.wikipedia.org/wiki/ฟังก์ชันตรีโกณมิติ"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "คืนค่า arccosine ของตัวเลข"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "คืนค่า arcsine ของตัวเลข"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "คืนค่า arctangent ของตัวเลข"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "คืนค่า cosine ขององศา (ไม่ใช่เรเดียน)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "คืนค่า sine ขององศา (ไม่ใช่เรเดียน)"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "คืนค่า tangent ขององศา (ไม่ใช่เรเดียน)"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "สร้างตัวแปรสี"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "สร้างตัวแปรจำนวน"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "สร้างตัวแปร string"; +Blockly.Msg["NEW_VARIABLE"] = "สร้างตัวแปร..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ชื่อตัวแปรใหม่:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ชนิดตัวแปรใหม่"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ข้อความที่ใช้ได้"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ด้วย:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://th.wikipedia.org/wiki/ซับรู้ทีน"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\""; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://th.wikipedia.org/wiki/ซับรูทีน"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\" และใช้ผลลัพธ์ของมัน"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ด้วย:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "สร้าง \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "อธิบายฟังก์ชันนี้"; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ทำอะไรบางอย่าง"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ถึง"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "สร้างฟังก์ชันที่ไม่มีผลลัพธ์"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "คืนค่า"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "สร้างฟังก์ชันที่มีผลลัพธ์"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ระวัง: ฟังก์ชันนี้มีพารามิเตอร์ที่มีชื่อซ้ำกัน"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "เน้นฟังก์ชันนิยาม"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "ถ้ามีค่าเป็นจริง ให้คืนค่าที่สอง"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ระวัง: บล็อกนี้ใช้เฉพาะในการสร้างฟังก์ชันเท่านั้น"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "ชื่อนำเข้า:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "เพิ่มค่าป้อนเข้าฟังก์ชัน"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "นำเข้า"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "เพิ่ม, ลบ, หรือจัดเรียง ข้อมูลที่ป้อนเข้าฟังก์ชันนี้"; +Blockly.Msg["REDO"] = "ทำซ้ำ"; +Blockly.Msg["REMOVE_COMMENT"] = "เอาคำอธิบายออก"; +Blockly.Msg["RENAME_VARIABLE"] = "เปลี่ยนชื่อตัวแปร..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "เปลี่ยนชื่อตัวแปร '%1' ทั้งหมดเป็น:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "นำเอา %1 ต่อด้วยข้อความ %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "ต่อข้อความให้ตัวแปร \"%1\""; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "เปลี่ยนเป็น ตัวพิมพ์เล็ก"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "เปลี่ยนเป็น ตัวอักษรแรกเป็นตัวพิมพ์ใหญ่"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "เปลี่ยนเป็น ตัวพิมพ์ใหญ่"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "คืนค่าสำเนาของข้อความในกรณีต่างๆ"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ดึง ตัวอักษรตัวแรก"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "ดึง ตัวอักษรตัวที่ # จากท้าย"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "ดึง ตัวอักษรตัวที่"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "ดึง ตัวอักษรตัวสุดท้าย"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "ถึงตัวอักษรแบบสุ่ม"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ในข้อความ %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "คืนค่าตัวอักษรจากตำแหน่งที่ระบุ"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "นับ %1 ภายใน %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "นับจำนวนข้อความแรกที่พบอยู่ในข้อความที่สอง"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "เพิ่มรายการเข้าไปในข้อความ"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "รวม"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "เพิ่ม ลบ หรือจัดเรียงบล็อกข้อความนี้ใหม่"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "จนถึง ตัวอักษรที่ # จากท้าย"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "จนถึง ตัวอักษรที่"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "จนถึง ตัวอักษรสุดท้าย"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ในข้อความ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "แยกข้อความย่อยตั้งแต่ ตัวอักษรแรก"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่ # จากท้าย"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "คืนค่าบางส่วนของข้อความ"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "หาข้อความแรกที่พบ"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "หาข้อความสุดท้ายที่พบ"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ในข้อความ %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "คืนค่าตำแหน่งที่พบข้อความแรกอยู่ในข้อความที่สอง คืนค่า %1 ถ้าหาไม่พบ"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 ว่าง"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "คืนค่าจริง ถ้าข้อความยังว่างเปล่า"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "สร้างข้อความด้วย"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "สร้างข้อความด้วยการรวมจำนวนของรายการเข้าด้วยกัน"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "ความยาวของ %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "คืนค่าความยาวของข้อความ (รวมช่องว่าง)"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "พิมพ์ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "พิมพ์ข้อความ ตัวเลข หรือค่าอื่นๆ"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "แสดงหน้าต่างให้ผู้ใช้ใส่ตัวเลข"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "แสดงหน้าต่างให้ผู้ใช้ใส่ข้อความ"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "แสดงหน้าต่างตัวเลข"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "แสดงหน้าต่างข้อความ"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "แทนที่ %1 ด้วย %2 ใน %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "แทนที่ข้อความแรกทั้งหมดที่พบในข้อความที่สอง"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "เรียง %1 แบบย้อนกลับ"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "เรียงตัวอักษรทั้งหมดของข้อความแบบย้อนกลับ"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://th.wikipedia.org/wiki/สายอักขระ"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "ตัวหนังสือ คำ หรือข้อความ"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ลบช่องว่างทั้งสองข้างของ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ลบช่องว่างด้านหน้าของ"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ลบช่องว่างข้างท้ายของ"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "คืนค่าสำเนาของข้อความที่ลบเอาช่องว่างหน้าและหลังข้อความออกแล้ว"; +Blockly.Msg["TODAY"] = "วันนี้"; +Blockly.Msg["UNDO"] = "ย้อนกลับ"; +Blockly.Msg["UNNAMED_KEY"] = "ไม่มีชื่อ"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "รายการ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "สร้าง \"กำหนด %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "คืนค่าของตัวแปรนี้"; +Blockly.Msg["VARIABLES_SET"] = "กำหนด %1 จนถึง %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "สร้าง \"get %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "กำหนดให้ตัวแปรนี้เท่ากับการป้อนข้อมูล"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "มีตัวแปรชื่อ '%1' อยู่แล้ว"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ตัวแปรชื่อ '%1' มีอยู่แล้วสำหรับตัวแปรอื่นของชนิด: '%2'"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "พื้นที่ทำงาน Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "เขียนอะไรสักอย่าง"; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ti.js b/msg/js/ti.js index 4f4983ff90f..35db7ce2cdd 100644 --- a/msg/js/ti.js +++ b/msg/js/ti.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ርኢቶ ሃብ"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ዋጋ ቀይር"; -Blockly.Msg["CLEAN_UP"] = "ሳንዱቅ ፅረግ"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ሳንዱቃት ኣንእስ"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ሳንዱቅ ኣንእስ"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ሕብሪ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ሕብሪ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "መጠን"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ዕፀፍ"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ግምታዊ ሕብሪ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ብግምት ሕብሪ ምረፅ"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "ሰማያዊ"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ሓምለዋይ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ቀይሕ"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "በዚ ቀልም"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "በቶም ዝተገለፁ መጠናት ቀይሕ፣ ሓምለዋይን ሰማያውን ሕብሪ ፍጠር። ኩሎም ዋጋታት ኣብ መንጎ 0ን 100ን ክኾኑ ኣለዎም።"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ስራሕ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "ሳንዱቅ ኣወግድ"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "ኣትርፍ"; -Blockly.Msg["DIALOG_OK"] = "ሕራይ"; -Blockly.Msg["DISABLE_BLOCK"] = "ሳንዱቅ ኣልምስ"; -Blockly.Msg["DUPLICATE_BLOCK"] = "ደጋግም"; -Blockly.Msg["DUPLICATE_COMMENT"] = "ርኢቶ ድገም"; -Blockly.Msg["ENABLE_BLOCK"] = "ሳንዱቅ ኣክእል"; -Blockly.Msg["EXPAND_ALL"] = "ሳንዱቃት ዘርግሕ"; -Blockly.Msg["EXPAND_BLOCK"] = "ሳንዱቅ ዘርግሕ"; -Blockly.Msg["EXTERNAL_INPUTS"] = "ናይ ደገ እታወታት"; -Blockly.Msg["HELP"] = "ሓገዝ"; -Blockly.Msg["INLINE_INPUTS"] = "መስመራዊ እታወታት"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ሃውራዊ"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ሕብሪ ተተካኢ ፍጠር"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ቁፅሪ ተተካኢ ፍጠር"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "ስትሪንግ ተተካኢ ፍጠር"; -Blockly.Msg["NEW_VARIABLE"] = "ተተካኢ ፍጠር"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ስም ሓዱሽ ተተካኢ"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ሓዱሽ ዓይነት ተተካኢ"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "እንደገና ፈጽም"; -Blockly.Msg["REMOVE_COMMENT"] = "ርኢቶ ኣወግድ"; -Blockly.Msg["RENAME_VARIABLE"] = "ስም ተተካኢ ቀይር"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "ሎሚ"; -Blockly.Msg["UNDO"] = "ምለስ"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ዓይነት"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ርኢቶ ሃብ"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ዋጋ ቀይር"; +Blockly.Msg["CLEAN_UP"] = "ሳንዱቅ ፅረግ"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ሳንዱቃት ኣንእስ"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ሳንዱቅ ኣንእስ"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ሕብሪ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ሕብሪ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "መጠን"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ዕፀፍ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ግምታዊ ሕብሪ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ብግምት ሕብሪ ምረፅ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ሰማያዊ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ሓምለዋይ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ቀይሕ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "በዚ ቀልም"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "በቶም ዝተገለፁ መጠናት ቀይሕ፣ ሓምለዋይን ሰማያውን ሕብሪ ፍጠር። ኩሎም ዋጋታት ኣብ መንጎ 0ን 100ን ክኾኑ ኣለዎም።"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ስራሕ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "ሳንዱቅ ኣወግድ"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "ኣትርፍ"; +Blockly.Msg["DIALOG_OK"] = "ሕራይ"; +Blockly.Msg["DISABLE_BLOCK"] = "ሳንዱቅ ኣልምስ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "ደጋግም"; +Blockly.Msg["DUPLICATE_COMMENT"] = "ርኢቶ ድገም"; +Blockly.Msg["ENABLE_BLOCK"] = "ሳንዱቅ ኣክእል"; +Blockly.Msg["EXPAND_ALL"] = "ሳንዱቃት ዘርግሕ"; +Blockly.Msg["EXPAND_BLOCK"] = "ሳንዱቅ ዘርግሕ"; +Blockly.Msg["EXTERNAL_INPUTS"] = "ናይ ደገ እታወታት"; +Blockly.Msg["HELP"] = "ሓገዝ"; +Blockly.Msg["INLINE_INPUTS"] = "መስመራዊ እታወታት"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "ሃውራዊ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ሕብሪ ተተካኢ ፍጠር"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ቁፅሪ ተተካኢ ፍጠር"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "ስትሪንግ ተተካኢ ፍጠር"; +Blockly.Msg["NEW_VARIABLE"] = "ተተካኢ ፍጠር"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ስም ሓዱሽ ተተካኢ"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ሓዱሽ ዓይነት ተተካኢ"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "እንደገና ፈጽም"; +Blockly.Msg["REMOVE_COMMENT"] = "ርኢቶ ኣወግድ"; +Blockly.Msg["RENAME_VARIABLE"] = "ስም ተተካኢ ቀይር"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ሎሚ"; +Blockly.Msg["UNDO"] = "ምለስ"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ዓይነት"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/tl.js b/msg/js/tl.js index 46d4b7fcdda..36853902cc8 100644 --- a/msg/js/tl.js +++ b/msg/js/tl.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Dagdag komento"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "pagbago ng value:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "bloke"; -Blockly.Msg["COLLAPSE_BLOCK"] = "bloke"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "kulay 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "kulay 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporsyon"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "halo"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Paghalo ng dalawang kulay kasama ng ibinigay na proporsyon (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "pagpili ng kulay sa paleta."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "iba ibang kulay"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "pagpili ng iba't ibang kulay."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "asul"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "berde"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "pula"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "kulayan ng"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "gumawa ng kulay ng may espisipikong dami ng kulay pula, berde, at asul. lahat ng halaga ay dapat sa pagitan ng 0 at 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "putulin ang paulit ulit"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "Magpatuloy sa susunod na pag-ulit ng loop"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Hatiin ang nilalaman ng loop."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Laktawan ang natitirang bahagi ng loop, at magpatuloy sa susunod na pag-ulit."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Babala: Ang block ito ay maaari lamang magamit sa loob ng loop."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "sa bawat bagay %1 sa listahan %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para sa bawat item sa isang list, i-set ang variable ng '%1' sa mga item, at pagkatapos ay gumawa ng ilang mga statements."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "bilangin %1 mula %2 hanggang %3 ng %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Magkaroon ng mga variable na \"%1\" na tanggalin ng mga halaga mula sa simulang numero hanggang sa dulong numero, at bilangin sa pamamagitan ng tinukoy na agwat, at gawin ang mga tinukoy na mga blocks."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Mag dagdag ng condition sa if block."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Mag Add ng final, kunin lahat ng condition sa if block."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Mag Add, remove o kaya mag reorder ng sections para maayos ang if block."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "kung"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "kung ang value ay true, gagawin ang do statements."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Kung ang value ay true, gagawin ang unang block ng do statements. Kung hindi, gagawin ang pangalawang block ng statement."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Kung ang unang value ay true, gagawin ang first block ng statement. Kung hindi, kung ang second value ay true, gagawin ang second block ng statement."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Kung ang first value ay true, gagawin ang first block ng statement. Kung hindi true ang second value, gagawin ang second block ng statement. Kung wala sa mga values ay true, gagawin ang last block ng statements."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "gawin"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulitin %1 beses"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "gumawa ng ilang pangungusap ng ilang ulit."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulitin hanggang"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ulitin habang"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Habang ang value ay false, gagawin ang ibang statements."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Habang ang value ay true, gagawin ang ibang statements."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "burahin ang bloke"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "burahin %1 ng bloke"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated -Blockly.Msg["DISABLE_BLOCK"] = "Ipangwalang bisa ang Block"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Kaparehas"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Bigyan ng bisa ang Block"; -Blockly.Msg["EXPAND_ALL"] = "Palawakin ang Blocks"; -Blockly.Msg["EXPAND_BLOCK"] = "Palawakin ang Block"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Panlabas na Inputs"; -Blockly.Msg["HELP"] = "Tulong"; -Blockly.Msg["INLINE_INPUTS"] = "Inline na Inputs"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Gumawa ng walang laman na list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ibabalik ang list, na may haba na 0, nag lalaman ng walang data records"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Magdagdag, mag tanggal or mag ayos ng sections para muling maayos ang listahan ng block."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "gumawa ng list kasama"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Mag dagdag ng item sa list."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Gumawa ng list na may kahit anong number ng items."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "Una"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# mula katapusan"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "kunin"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "kunin at tanggalin"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "huli"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "nang hindi pinipili"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "tanggalin"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Ibalik ang unang item sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ibalik ang item sa itinakdang posisyon sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Ibalik ang huling item sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Nag babalik ng hindi pinipiling item sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Nag tatanggal at nag babalik ng mga unang item sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Nag tatanggal at nag babalik ng mga items sa tinukoy na posisyon sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Nag tatanggal at nag babalik ng huling item sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Nag tatanggal at nag babalik ng mga hindi pinipiling item sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Nag tatanggal ng unang item sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Nag tatanggal ng item sa tinukoy na posisyon sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Nag tatanggal ng huling item sa list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Nag tatanggal ng item mula sa walang pinipiling list."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "mula # hanggang huli"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "mula #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "hanggang huli"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "pag kuha ng sub-list mula sa una"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "pag kuha ng sub-list mula sa # mula huli"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "pag kuha ng sub-list mula #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Gumagawa ng kopya ng tinukoy na bahagi ng list."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ay ang huling item."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ay ang unang item."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Hanapin ang unang pangyayari ng item"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "hanapin ang huling pangyayari ng item"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Pagbalik ng index ng una/huli pangyayari ng item sa list. Pagbalik ng %1 kung ang item ay hindi makita."; -Blockly.Msg["LISTS_INLIST"] = "sa list"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ay walang laman"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Nagbabalik ng true kung ang list ay walang laman."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "haba ng %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Pag balik ng haba ng list."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "pag gawa ng list kasama ng item %1 inuulit %2 beses"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Pag gawa ng list na binubuo ng binigay na value at inulit na tinuloy na bilang ng beses."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "gaya ng"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "isingit sa"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Nag singit ng item sa simula ng list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Nag singit ng item sa tinukoy na posistion sa list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Idagdag ang item sa huli ng isang list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Isingit ang item ng walang pinipili sa isang list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Pag set ng unang item sa isang list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Pag set ng item sa tinukoy na position sa isang list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Pag set sa huling item sa isang list."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Pag set ng walang pinipiling item sa isang list."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "mali"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Nag babalik ng true or false."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tama"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Nag babalik ng true kung ang pinasok ay parehong magkatumbas."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Nagbabalik ng true kung ang unang pinasok ay mas malaki kaysa pangalawang pinasok."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Nag babalik ng true kung ang unang pinasok ay mas malaki or katumbas ng pangalawang pinasok."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Nag babalik ng true kung ang unang pinasok ay maliit kaysa sa pangalawang pinasok."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Nag babalik ng true kung ang unang pinasok ay maliit sa o katumbas sa pangalawang pinasok."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "blangko"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "at"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "kung mali"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "kung tama"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "baguhin %1 by %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "ay negatibo"; -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "ay positibo"; -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Redo"; // untranslated -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Undo"; // untranslated -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Dagdag komento"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "pagbago ng value:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "bloke"; +Blockly.Msg["COLLAPSE_BLOCK"] = "bloke"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "kulay 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "kulay 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "proporsyon"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "halo"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Paghalo ng dalawang kulay kasama ng ibinigay na proporsyon (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "pagpili ng kulay sa paleta."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "iba ibang kulay"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "pagpili ng iba't ibang kulay."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "asul"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "berde"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "pula"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "kulayan ng"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "gumawa ng kulay ng may espisipikong dami ng kulay pula, berde, at asul. lahat ng halaga ay dapat sa pagitan ng 0 at 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "putulin ang paulit ulit"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "Magpatuloy sa susunod na pag-ulit ng loop"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Hatiin ang nilalaman ng loop."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Laktawan ang natitirang bahagi ng loop, at magpatuloy sa susunod na pag-ulit."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Babala: Ang block ito ay maaari lamang magamit sa loob ng loop."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "sa bawat bagay %1 sa listahan %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Para sa bawat item sa isang list, i-set ang variable ng '%1' sa mga item, at pagkatapos ay gumawa ng ilang mga statements."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "bilangin %1 mula %2 hanggang %3 ng %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Magkaroon ng mga variable na \"%1\" na tanggalin ng mga halaga mula sa simulang numero hanggang sa dulong numero, at bilangin sa pamamagitan ng tinukoy na agwat, at gawin ang mga tinukoy na mga blocks."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Mag dagdag ng condition sa if block."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Mag Add ng final, kunin lahat ng condition sa if block."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Mag Add, remove o kaya mag reorder ng sections para maayos ang if block."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "kung"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "kung ang value ay true, gagawin ang do statements."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Kung ang value ay true, gagawin ang unang block ng do statements. Kung hindi, gagawin ang pangalawang block ng statement."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Kung ang unang value ay true, gagawin ang first block ng statement. Kung hindi, kung ang second value ay true, gagawin ang second block ng statement."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Kung ang first value ay true, gagawin ang first block ng statement. Kung hindi true ang second value, gagawin ang second block ng statement. Kung wala sa mga values ay true, gagawin ang last block ng statements."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "gawin"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ulitin %1 beses"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "gumawa ng ilang pangungusap ng ilang ulit."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ulitin hanggang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ulitin habang"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Habang ang value ay false, gagawin ang ibang statements."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Habang ang value ay true, gagawin ang ibang statements."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "burahin ang bloke"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "burahin %1 ng bloke"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "Ipangwalang bisa ang Block"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Kaparehas"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Bigyan ng bisa ang Block"; +Blockly.Msg["EXPAND_ALL"] = "Palawakin ang Blocks"; +Blockly.Msg["EXPAND_BLOCK"] = "Palawakin ang Block"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Panlabas na Inputs"; +Blockly.Msg["HELP"] = "Tulong"; +Blockly.Msg["INLINE_INPUTS"] = "Inline na Inputs"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Gumawa ng walang laman na list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Ibabalik ang list, na may haba na 0, nag lalaman ng walang data records"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Magdagdag, mag tanggal or mag ayos ng sections para muling maayos ang listahan ng block."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "gumawa ng list kasama"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Mag dagdag ng item sa list."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Gumawa ng list na may kahit anong number ng items."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "Una"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# mula katapusan"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "kunin"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "kunin at tanggalin"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "huli"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "nang hindi pinipili"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "tanggalin"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Ibalik ang unang item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Ibalik ang item sa itinakdang posisyon sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Ibalik ang huling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Nag babalik ng hindi pinipiling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Nag tatanggal at nag babalik ng mga unang item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Nag tatanggal at nag babalik ng mga items sa tinukoy na posisyon sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Nag tatanggal at nag babalik ng huling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Nag tatanggal at nag babalik ng mga hindi pinipiling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Nag tatanggal ng unang item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Nag tatanggal ng item sa tinukoy na posisyon sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Nag tatanggal ng huling item sa list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Nag tatanggal ng item mula sa walang pinipiling list."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "mula # hanggang huli"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "mula #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "hanggang huli"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "pag kuha ng sub-list mula sa una"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "pag kuha ng sub-list mula sa # mula huli"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "pag kuha ng sub-list mula #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Gumagawa ng kopya ng tinukoy na bahagi ng list."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 ay ang huling item."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ay ang unang item."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Hanapin ang unang pangyayari ng item"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "hanapin ang huling pangyayari ng item"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Pagbalik ng index ng una/huli pangyayari ng item sa list. Pagbalik ng %1 kung ang item ay hindi makita."; +Blockly.Msg["LISTS_INLIST"] = "sa list"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ay walang laman"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Nagbabalik ng true kung ang list ay walang laman."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "haba ng %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Pag balik ng haba ng list."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "pag gawa ng list kasama ng item %1 inuulit %2 beses"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Pag gawa ng list na binubuo ng binigay na value at inulit na tinuloy na bilang ng beses."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "gaya ng"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "isingit sa"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Nag singit ng item sa simula ng list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Nag singit ng item sa tinukoy na posistion sa list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Idagdag ang item sa huli ng isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Isingit ang item ng walang pinipili sa isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Pag set ng unang item sa isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Pag set ng item sa tinukoy na position sa isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Pag set sa huling item sa isang list."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Pag set ng walang pinipiling item sa isang list."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "mali"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Nag babalik ng true or false."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "tama"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Nag babalik ng true kung ang pinasok ay parehong magkatumbas."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Nagbabalik ng true kung ang unang pinasok ay mas malaki kaysa pangalawang pinasok."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Nag babalik ng true kung ang unang pinasok ay mas malaki or katumbas ng pangalawang pinasok."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Nag babalik ng true kung ang unang pinasok ay maliit kaysa sa pangalawang pinasok."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Nag babalik ng true kung ang unang pinasok ay maliit sa o katumbas sa pangalawang pinasok."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "blangko"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "at"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "o"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "kung mali"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "kung tama"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "baguhin %1 by %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "ay negatibo"; +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "ay positibo"; +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Redo"; // untranslated +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Undo"; // untranslated +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/tlh.js b/msg/js/tlh.js index 9833239308d..d6dd8123f60 100644 --- a/msg/js/tlh.js +++ b/msg/js/tlh.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "QInHom chel"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "choH:"; -Blockly.Msg["CLEAN_UP"] = "ngoghmeyvaD tlhegh rurmoH"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ngoghmey DejmoH"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ngogh DejmoH"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "rItlh wa'"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "rItlh cha'"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "'ar"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "DuD"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rItlh vISaHbe'"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "chal rItlh"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "tI rItlh"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "'Iw rItlh"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "rItlh wIv"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "gho Haw'"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "gho taHqa'"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "yIqIm! ghoDaq neH ngoghvam lo'laH vay'."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ngIq Doch %1 ngaSbogh tetlh %2 nuDDI'"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "togh %1 mung %2 ghoch %3 Do %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "pagh"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "pagh teHchugh"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "teHchugh"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ruch"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1-logh qaSmoH"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "teHpa' qaSmoH"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "teHtaHvIS qaSmoH"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hoch %1 ngoghmey Qaw'?"; -Blockly.Msg["DELETE_BLOCK"] = "ngogh Qaw'"; -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ngoghmey Qaw'"; -Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated -Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated -Blockly.Msg["DISABLE_BLOCK"] = "ngogh Qotlh"; -Blockly.Msg["DUPLICATE_BLOCK"] = "velqa' chenmoH"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "ngogh QotlhHa'"; -Blockly.Msg["EXPAND_ALL"] = "ngoghmey DejHa'moH"; -Blockly.Msg["EXPAND_BLOCK"] = "ngogh DejHa'moH"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Hur rar"; -Blockly.Msg["HELP"] = "QaH"; -Blockly.Msg["INLINE_INPUTS"] = "qoD rar"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tetlh chIm"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "tetlh"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "tetlh ghom"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "wa'DIch"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# Qav"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "Suq"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "Suq vaj pej"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "Qav"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "Sahbe'"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "pej"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "mojaQ # Qav"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "mojaQ #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "mojaQ Qav"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "tetlhHom moHaq wa'DIch"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "tetlhHom moHaq # Qav"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "tetlhHom moHaq #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "Suq"; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Doch sam wa'DIch"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "Doch sam Qav"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "tetlhDaq"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 chIm'a'"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "chuq %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "tetlh ghom %2 Dochmey %1 pus"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "Dos"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "lIH"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "choH"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "tetlh ghermeH ghItlh wav"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ghItlh chenmoHmeH tetlh gherHa'"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "rarwI'Hom lo'"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "teHbe'"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "teH"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "yoymoH %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "paghna'"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "'ej"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "qoj"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "chov"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "teHbe'chugh"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "teHchugh"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "choH %1 chel %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "jon %1 bIng %2 Dung %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "wav'a'"; -Blockly.Msg["MATH_IS_EVEN"] = "lang'a' mI'"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "bIng pagh"; -Blockly.Msg["MATH_IS_ODD"] = "ror'a' mI'"; -Blockly.Msg["MATH_IS_POSITIVE"] = "Dung pagh"; -Blockly.Msg["MATH_IS_PRIME"] = "potlh'a' mI'"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "ngoHlaHbe''a'"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "ratlwI' SIm %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "beQwI' SIm tetlh"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "tInwI''a' SIm tetlh"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "beQwI'botlh SIm tetlh"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "machwI''a' SIm tetlh"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "beQwI' motlh SIm tetlh"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "SaHbe' SIm tetlh"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "motlhbe'wI' SIm tetlh"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "chelwI' SIm tetlh"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "mI'HomSaHbe'"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ngoH mI'SaHbe' bIng %1 Dung %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ngoH"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "bIng ngoH"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Dung ngoH"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "Dung pagh choH"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "cha'DIch wav"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; -Blockly.Msg["MATH_TRIG_COS"] = "cos"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "lIw chu'..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "lIw chu' pong:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "mu'tlhegh chaw'"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "qel:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "qel:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "chel '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "mIw yIDel..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "mIw"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ruch"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "chegh"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ghuHmoHna': qelwI' cha'logh chen."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "mIwna' wew"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ghoHmoHna': ngoghvam ngaSbe' mIwDaq."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "pong:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "qelwI'mey"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "vangqa'"; -Blockly.Msg["REMOVE_COMMENT"] = "QInHom chelHa'"; -Blockly.Msg["RENAME_VARIABLE"] = "lIw pong choH..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Hoch \"%1\" lIwmey pongmey choH:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "chel %1 ghItlh %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "machchoH"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "DojchoH"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "tInchoH"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "mu'Hom wa'DIch"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "mu'Hom # Qav"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "mu'Hom #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "mu'Hom Qav"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "mu'Hom SaHbe'"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = "Suq"; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ghom"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "mojaq mu'Hom # Qav"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "mojaq mu'Hom #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "mojaq mu'Hom Qav"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ghItlhDaq"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ghItlhHom moHaq mu'Hom wa'DIch"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "ghItlhHom moHaq mu'Hom # Qav"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "ghItlhHom moHaq mu'Hom #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "Suq"; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ghItlh wa'DIch Sam"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ghItlh Qav Sam"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ghItlhDaq %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 chIm'a'"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ghItlh ghom"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "chuq %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "maq %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "mI' tlhob 'ej maq"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ghItln tlhob 'ej maq"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "poSnIHlogh pei"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "poSlogh pei"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "nIHlogh pei"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "DaHjaj"; -Blockly.Msg["UNDO"] = "vangHa'"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Doch"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "chel 'choH %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "choH %1 %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "chel 'Suq %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "QInHom chel"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "choH:"; +Blockly.Msg["CLEAN_UP"] = "ngoghmeyvaD tlhegh rurmoH"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ngoghmey DejmoH"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ngogh DejmoH"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "rItlh wa'"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "rItlh cha'"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "'ar"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "DuD"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; // untranslated +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rItlh vISaHbe'"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "chal rItlh"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "tI rItlh"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "'Iw rItlh"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "rItlh wIv"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "gho Haw'"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "gho taHqa'"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "yIqIm! ghoDaq neH ngoghvam lo'laH vay'."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "ngIq Doch %1 ngaSbogh tetlh %2 nuDDI'"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "togh %1 mung %2 ghoch %3 Do %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "pagh"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "pagh teHchugh"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "teHchugh"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ruch"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1-logh qaSmoH"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "teHpa' qaSmoH"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "teHtaHvIS qaSmoH"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Hoch %1 ngoghmey Qaw'?"; +Blockly.Msg["DELETE_BLOCK"] = "ngogh Qaw'"; +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ngoghmey Qaw'"; +Blockly.Msg["DIALOG_CANCEL"] = "Cancel"; // untranslated +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ngogh Qotlh"; +Blockly.Msg["DUPLICATE_BLOCK"] = "velqa' chenmoH"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "ngogh QotlhHa'"; +Blockly.Msg["EXPAND_ALL"] = "ngoghmey DejHa'moH"; +Blockly.Msg["EXPAND_BLOCK"] = "ngogh DejHa'moH"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Hur rar"; +Blockly.Msg["HELP"] = "QaH"; +Blockly.Msg["INLINE_INPUTS"] = "qoD rar"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tetlh chIm"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "tetlh"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "tetlh ghom"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "wa'DIch"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# Qav"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "Suq"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "Suq vaj pej"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "Qav"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "Sahbe'"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "pej"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "mojaQ # Qav"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "mojaQ #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "mojaQ Qav"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "tetlhHom moHaq wa'DIch"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "tetlhHom moHaq # Qav"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "tetlhHom moHaq #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "Suq"; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "Doch sam wa'DIch"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "Doch sam Qav"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "tetlhDaq"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 chIm'a'"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "chuq %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "tetlh ghom %2 Dochmey %1 pus"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "Dos"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "lIH"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "choH"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "tetlh ghermeH ghItlh wav"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ghItlh chenmoHmeH tetlh gherHa'"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "rarwI'Hom lo'"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "teHbe'"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "teH"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "yoymoH %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "paghna'"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "'ej"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "qoj"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "chov"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "teHbe'chugh"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "teHchugh"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "choH %1 chel %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "jon %1 bIng %2 Dung %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "wav'a'"; +Blockly.Msg["MATH_IS_EVEN"] = "lang'a' mI'"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "bIng pagh"; +Blockly.Msg["MATH_IS_ODD"] = "ror'a' mI'"; +Blockly.Msg["MATH_IS_POSITIVE"] = "Dung pagh"; +Blockly.Msg["MATH_IS_PRIME"] = "potlh'a' mI'"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "ngoHlaHbe''a'"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "ratlwI' SIm %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "beQwI' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "tInwI''a' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "beQwI'botlh SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "machwI''a' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "beQwI' motlh SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "SaHbe' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "motlhbe'wI' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "chelwI' SIm tetlh"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "mI'HomSaHbe'"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "ngoH mI'SaHbe' bIng %1 Dung %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "ngoH"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "bIng ngoH"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "Dung ngoH"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "Dung pagh choH"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "cha'DIch wav"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; +Blockly.Msg["MATH_TRIG_COS"] = "cos"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "lIw chu'..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "lIw chu' pong:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "mu'tlhegh chaw'"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "qel:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "qel:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "chel '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "mIw yIDel..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "mIw"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ruch"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "chegh"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "ghuHmoHna': qelwI' cha'logh chen."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "mIwna' wew"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "ghoHmoHna': ngoghvam ngaSbe' mIwDaq."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "pong:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "qelwI'mey"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "vangqa'"; +Blockly.Msg["REMOVE_COMMENT"] = "QInHom chelHa'"; +Blockly.Msg["RENAME_VARIABLE"] = "lIw pong choH..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Hoch \"%1\" lIwmey pongmey choH:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "chel %1 ghItlh %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "machchoH"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "DojchoH"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "tInchoH"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "mu'Hom wa'DIch"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "mu'Hom # Qav"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "mu'Hom #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "mu'Hom Qav"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "mu'Hom SaHbe'"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "Suq"; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ghom"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "mojaq mu'Hom # Qav"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "mojaq mu'Hom #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "mojaq mu'Hom Qav"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ghItlhDaq"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ghItlhHom moHaq mu'Hom wa'DIch"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "ghItlhHom moHaq mu'Hom # Qav"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "ghItlhHom moHaq mu'Hom #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "Suq"; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "ghItlh wa'DIch Sam"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "ghItlh Qav Sam"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ghItlhDaq %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 chIm'a'"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ghItlh ghom"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "chuq %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "maq %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "mI' tlhob 'ej maq"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "ghItln tlhob 'ej maq"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "poSnIHlogh pei"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "poSlogh pei"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "nIHlogh pei"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "DaHjaj"; +Blockly.Msg["UNDO"] = "vangHa'"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "Doch"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "chel 'choH %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "choH %1 %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "chel 'Suq %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/tr.js b/msg/js/tr.js index a4ac9cb819c..6ac9349a4d0 100644 --- a/msg/js/tr.js +++ b/msg/js/tr.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Yorum Ekle"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' değişkeni, '%2' fonksiyonunun tanımının bir parçası olduğu için silinemez"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Değeri değiştir:"; -Blockly.Msg["CLEAN_UP"] = "Blokları Temizle"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Daraltılmış bloklar uyarı içerir."; -Blockly.Msg["COLLAPSE_ALL"] = "Blokları Daralt"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Bloğu Daralt"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1. renk"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2. renk"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "oran"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "karıştır"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Verilen bir orana (0.0 - 1.0) bağlı olarak iki rengi karıştırır."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://tr.wikipedia.org/wiki/Renk"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Paletten bir renk seç."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rastgele renk"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Rastgele bir renk seç."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "mavi"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "yeşil"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "kırmızı"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "renk değerleri"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kırmızı, yeşil ve mavinin belirli miktarıyla bir renk oluştur. Tüm değerler 0 ile 100 arasında olmalıdır."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "döngüden çık"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "döngünün sonraki adımından devam et"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "İçeren döngüden çık."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Bu döngünün geri kalanını atlayın ve sonraki adım ile devam edin."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Uyarı: Bu blok yalnızca bir döngü içinde kullanılabilir."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "her öğe için %1 listede %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Bir listedeki her öğe için '%1' değişkenini maddeye atayın ve bundan sonra bazı açıklamalar yapın."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "ile sayılır %1 %2 den %3 ye, her adımda %4 değişim"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Başlangıç sayısından bitiş sayısına kadar belirtilen aralık ve belirtilen engeller ile devam eden değerler alan '%1' değişkeni oluştur."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "If bloğuna bir koşul ekleyin."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "If bloğuna kalan durumları \"yakalayan\" bir son ekle."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "If bloğuna ekle, kaldır veya yeniden düzenleme yap."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "değilse"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "değilse eğer"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "eğer"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Eğer değişken true, yani gerçekleşmiş ise ardından gelen işlemi yerine getir."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Eğer değişken true, yani gerçekleşiyor ise ilk bloktaki işlemleri yerine getir. Aksi halde ikinci bloktaki işlemleri yerine getir."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Eğer ilk değişken true, yani koşul gerçekleşmiş ise ilk blok içerisindeki işlemi gerçekleştir. Eğer ikinci değişken true ise, ikinci bloktaki işlemi gerçekleştir."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Eğer ilk değer true, yani olumlu ise, ilk bloktaki işlemi gerçekleştir. İlk değer true değil ama ikinci değer true ise, ikinci bloktaki işlemi gerçekleştir. Eğer değerlerin hiçbiri true değil ise son bloktaki işlemi gerçekleştir."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://tr.wikipedia.org/wiki/For_döngüsü"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "yap"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 kez tekrarla"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Bazı işlemleri birkaç kez yap."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "kadar tekrarla"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "tekrar ederken"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Bir değer yanlış olduğunda bazı beyanlarda bulun."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Bir değer doğru olduğunda bazı beyanlarda bulun."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Tüm %1 blokları silinsin mi?"; -Blockly.Msg["DELETE_BLOCK"] = "Bloğu Sil"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' değişkenini silmek istiyor musunuz?"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' değişkeninin %1 kullanımını silmek istiyor musunuz?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 Bloğunu Sil"; -Blockly.Msg["DIALOG_CANCEL"] = "İptal"; -Blockly.Msg["DIALOG_OK"] = "Tamam"; -Blockly.Msg["DISABLE_BLOCK"] = "Bloğu Devre Dışı Bırak"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Yinelenen"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Yinelenen Yorum"; -Blockly.Msg["ENABLE_BLOCK"] = "Bloğu Etkinleştir"; -Blockly.Msg["EXPAND_ALL"] = "Blokları Genişlet"; -Blockly.Msg["EXPAND_BLOCK"] = "Bloğu Genişlet"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Harici Girişler"; -Blockly.Msg["HELP"] = "Yardım"; -Blockly.Msg["INLINE_INPUTS"] = "Satır içi Girişler"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "boş liste oluştur"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Veri kaydı içermeyen 0 uzunluğunda bir liste döndürür"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Bu liste bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ile liste oluştur"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Listeye bir öğe ekleyin."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "İstediğiniz sayıda öğe içeren bir liste oluşturun."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ilk"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# sonundan"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "# Kare"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "al"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "al ve kaldır"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "son"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "rastgele"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "kaldır"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Listedeki ilk öğeyi döndürür."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Listede belirtilen konumda bulunan öğeyi döndürür."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Listedeki son öğeyi döndürür."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Listedeki rastgele bir öğeyi döndürür."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Listedeki ilk öğeyi kaldırır ve döndürür."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Öğeyi bir listede belirtilen konumda kaldırır ve döndürür."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Listedeki son öğeyi kaldırır ve döndürür."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Listedeki rastgele bir öğeyi kaldırır ve döndürür."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Listedeki ilk öğeyi kaldırır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Listede belirtilen konumda bulunan öğeyi kaldırır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Listedeki son öğeyi kaldırır."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Listedeki rastgele bir öğeyi kaldırır."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "sonuna kadar #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "sona"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ilk önce alt listeyi al"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# listesinden alt listeyi al"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# listesinden alt liste al"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Listenin belirtilen bölümünün bir kopyasını oluşturur."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 son öğedir."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ilk öğedir."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "öğenin ilk oluşumunu bul"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "öğenin son tekrarlamasını bul"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Listedeki öğenin ilk/son oluşumunun dizinini döndürür. Öğe bulunmazsa %1 değerini döndürür."; -Blockly.Msg["LISTS_INLIST"] = "listede"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 boş"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Liste boşsa true değerini döndürür."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 uzunluğu"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Bir listenin uzunluğunu döndürür."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 tekrarlanan %2 öğeyle liste oluştur"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Belirtilen sayıda tekrarlanan belirli bir değerden oluşan bir liste oluşturur."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 ters çevirin"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Listenin bir kopyasını ters çevirin."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "olarak"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "yerleştir"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "ayarla"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Öğeyi listenin başına ekler."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Öğeyi bir listede belirtilen konuma ekler."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Öğeyi listenin sonuna ekleyin."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Öğeyi bir listeye rastgele ekler."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Listedeki ilk öğeyi ayarlar."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Öğeyi bir listede belirtilen konuma ayarlar."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Listedeki son öğeyi ayarlar."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Listede rastgele bir öğe ayarlar."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "artan"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "azalan"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sıra %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Listenin bir kopyasını sıralayın."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetik, görmezden gelin"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "sayısal"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetik"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "metinden liste yap"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "listeden metin yap"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Metin listesini bir sınırlayıcı ile ayrılmış tek bir metinde birleştirin."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Metni, her bir sınırlayıcıyı kırarak bir metin listesine bölün."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "sınırlayıcı ile"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "True veya false değerini döndürür."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://tr.wikipedia.org/wiki/Eşitsizlikler"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Her iki giriş de birbirine eşitse true değerini döndürün."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "İlk giriş ikinci girişten büyükse true değerini döndürün."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "İlk giriş ikinci girişten büyük veya ona eşitse true değerini döndürün."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "İlk giriş ikinci girişten küçükse true değerini döndürün."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "İlk giriş ikinci girişten küçük veya ona eşitse true değerini döndürün."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Her iki giriş de birbirine eşit değilse true değerini döndürün."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 değil"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Giriş yanlışsa true değerini döndürür. Giriş doğruysa false değerini döndürür."; -Blockly.Msg["LOGIC_NULL"] = "boş"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://tr.wikipedia.org/wiki/Sıfırlanabilir_tip"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Boş değerini döndürür."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ve"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "veya"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Her iki giriş de doğruysa true döndür."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Girişlerden en az biri doğru olduğunda true değerini döndürün."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "deneme"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://tr.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'test' durumunu kontrol edin. Koşul true olursa, 'if true' değerini döndürür; aksi takdirde 'if false' değerini döndürür."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://tr.wikipedia.org/wiki/Aritmetik"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "İki sayının toplamını döndürün."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "İki sayının bölümünü döndürün."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "İki sayının farkını döndürün."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "İki sayının çarpımını döndürün."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Yükseltilen ilk sayıyı ikinci sayının gücüne döndürün."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://tr.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2, X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "-180'den 180'e derece cinsinden nokta (X, Y) arktanjantını döndürün."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://tr.wikipedia.org/wiki/Programlama_deyimi"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 %2 göre değiştir"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "'%1' değişkenine bir sayı ekle."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://tr.wikipedia.org/wiki/Matematiksel_sabit"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ortak sabitlerden birini döndür: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (sonsuzluk)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 en düşük %2 en yüksek %3 ile sınırla"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Bir sayıyı belirtilen sınırlar arasında (dahil) ile sınırlandırın."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "bölünebilir"; -Blockly.Msg["MATH_IS_EVEN"] = "çift"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "negatif"; -Blockly.Msg["MATH_IS_ODD"] = "tek"; -Blockly.Msg["MATH_IS_POSITIVE"] = "pozitif"; -Blockly.Msg["MATH_IS_PRIME"] = "asal"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Bir sayının çift, tek, asal, bütün, pozitif, negatif veya belirli bir sayıya bölünebilir olup olmadığını kontrol edin. True veya false değerini döndürür."; -Blockly.Msg["MATH_IS_WHOLE"] = "bütün"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://tr.wikipedia.org/wiki/Modulo_işlemi"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 geri kalan kısım"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Kalanı iki sayıyı bölmekten döndürün."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://tr.wikipedia.org/wiki/Sayı"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Sayı."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "liste ortalaması"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum liste"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "listenin medyanı"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "listenin en küçüğü"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "liste modları"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "listenin rastgele öğesi"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "listenin standart sapması"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "listenin toplamı"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Listedeki sayısal değerlerin ortalamasını (aritmetik ortalama) döndürün."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Listedeki en büyük sayıyı döndürün."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Listeden ortanca numarayı döndürün."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Listedeki en küçük sayıyı döndür."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Listedeki en yaygın öğenin bir listesini döndürür."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Listeden rastgele bir öğe döndürün."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Listenin standart sapmasını döndürün."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Listedeki tüm sayıların toplamını döndürün."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "üst alma"; -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "rastgele kesir"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (dahil) ve 1.0 (hariç) arasında rastgele bir kesir döndürün."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1 ile %2 rastgele tam sayı üretin"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Belirtilen iki sınır arasında rastgele bir tamsayı döndürün."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://tr.wikipedia.org/wiki/Yuvarlatma"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "yuvarla"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "aşağı yuvarla"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "yukarı yuvarla"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Bir sayıyı yukarı veya aşağı yuvarlayın."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://tr.wikipedia.org/wiki/Karekök"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "kesin"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kare kök"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Bir sayının mutlak değerini döndürür."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "E'yi bir sayının gücüne döndür."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Bir sayının doğal logaritmasını döndür."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Bir sayının 10 logaritmasını geri döndür."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Bir sayının reddini döndür."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10'u sayının gücüne döndür."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Bir sayının karekökünü döndürür."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "tire"; -Blockly.Msg["MATH_TRIG_ACOS"] = "akosünüs"; -Blockly.Msg["MATH_TRIG_ASIN"] = "asinüs"; -Blockly.Msg["MATH_TRIG_ATAN"] = "atanjant"; -Blockly.Msg["MATH_TRIG_COS"] = "kosünüs"; -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://tr.wikipedia.org/wiki/Trigonometrik_fonksiyonlar"; -Blockly.Msg["MATH_TRIG_SIN"] = "Sinüs"; -Blockly.Msg["MATH_TRIG_TAN"] = "tanjant"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Bir sayının arkosinini döndürün."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Bir sayının ark sinüsünü döndürün."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Bir sayının arktanjantını döndürün."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Bir derecenin kosinüsünü döndürün (radyan değil)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Sinüsü bir derece döndürün (radyan değil)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Bir derecenin tanjantını döndürün (radyan değil)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Renk değişkeni oluştur..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Sayı değişkeni oluştur..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Dizi değişkeni oluştur..."; -Blockly.Msg["NEW_VARIABLE"] = "Değişken oluştur..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Yeni değişken ismi:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Yeni değişken tipi:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ifadelere izin ver"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ile:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Alt_program"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kullanıcı tanımlı '%1' işlevini çalıştırın."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Alt_program"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kullanıcı tanımlı '%1' işlevini çalıştırın ve çıkışını kullanın."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ile:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' oluştur"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Bu işlevi açıklayın..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Altyordam"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "bir şey yap"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "-"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Çıkışı olmayan bir işlev oluşturur."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Altyordam"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "dönüş"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Çıkışa sahip bir işlev oluşturur."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Uyarı: Bu işlev yinelenen parametrelere sahiptir."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Vurgulama işlevi tanımı"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Bir değer true ise, ikinci bir değer döndürün."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Uyarı: Bu blok yalnızca bir işlev tanımı içinde kullanılabilir."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "giriş adı:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "İşleve bir giriş ekleyin."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "girişler"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bu işleve giriş ekleyin, kaldırın veya yeniden sıralayın."; -Blockly.Msg["REDO"] = "Yinele"; -Blockly.Msg["REMOVE_COMMENT"] = "Yorumu Sil"; -Blockly.Msg["RENAME_VARIABLE"] = "Değişkeni yeniden adlandır..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tüm '%1' değişkenini yeniden adlandır:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 için %2 metnini ekle."; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' değişkenine bir metin ekleyin."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "küçük harfe"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Başlık Vakasına"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "ÜST DURUMA"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Metnin bir kopyasını farklı bir durumda döndürün."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "ilk harfini al"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "# sona harfleri al"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# harfini al"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "son harfi al"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "rastgele harf al"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "%1 içinde %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Belirtilen konumdaki harfi döndürür."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 içinde %2 say."; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Bazı metnin başka bir metnin içinde kaç kez oluştuğunu sayın."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Metne bir öğe ekleyin."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "katıl"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Bu metin bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "en başından # harfi"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# harfe"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "son harfe"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "metinde"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ilk harfinden alt dize al"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "# harfinden alt dize al"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "# harfinden alt dize al"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Metnin belirli bir bölümünü döndürür."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "metnin ilk oluşumunu bul"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "metnin son tekrarlamasını bul"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "%1 metni içinde %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "İkinci metindeki ilk metnin ilk/son oluşumunun dizinini döndürür. Metin bulunmazsa %1 değerini döndürür."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 boş"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Sağlanan metin boşsa true değerini döndürür."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ile metin oluştur"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "İstediğiniz sayıda öğeyi birleştirerek bir metin parçası oluşturun."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 uzunluğu"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Sağlanan metindeki harflerin (boşluklar dahil) sayısını döndürür."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 yaz"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Belirtilen metni, sayıyı veya başka bir değeri yazdırın."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Bir numara için kullanıcı sor."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Bazı metinler için kullanıcı sor."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "mesaj içeren numara istemi"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "mesaj içeren metin istemi"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 yerine %3 içindeki %2 ile değiştir"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Bazı metnin tüm tekrarlarını başka bir metnin içinde değiştirin."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 ters çevirin"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Metindeki karakterlerin sırasını tersine çevirir."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://tr.wikipedia.org/wiki/Dize_(bilgisayar_bilimi)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Bir harf, kelime veya metin satırı."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "her iki tarafından da kırpın"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "sol tarafındaki boşlukları kırpın"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "sağ tarafındaki boşlukları kırp"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Bir veya her iki uçtan boşluklar kaldırılmış olarak metnin bir kopyasını döndürün."; -Blockly.Msg["TODAY"] = "Bugün"; -Blockly.Msg["UNDO"] = "Geri al"; -Blockly.Msg["UNNAMED_KEY"] = "isimsiz"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "öge"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'set %1' oluştur"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Bu değişkenin değerini döndürür."; -Blockly.Msg["VARIABLES_SET"] = "%1 %2 ayarla"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'get %1' oluştur"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Bu değişkeni girişe eşit olacak şekilde ayarlar."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' isimli değişken adı zaten var."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' isimli değişken '%2' tipli başka bir değişkende tanımlı."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Çalışma Alanı"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Bir şeyler söyle..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Yorum Ekle"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "'%1' değişkeni, '%2' fonksiyonunun tanımının bir parçası olduğu için silinemez"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Değeri değiştir:"; +Blockly.Msg["CLEAN_UP"] = "Blokları Temizle"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Daraltılmış bloklar uyarı içerir."; +Blockly.Msg["COLLAPSE_ALL"] = "Blokları Daralt"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bloğu Daralt"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "1. renk"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "2. renk"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "oran"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "karıştır"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Verilen bir orana (0.0 - 1.0) bağlı olarak iki rengi karıştırır."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://tr.wikipedia.org/wiki/Renk"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Paletten bir renk seç."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "rastgele renk"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Rastgele bir renk seç."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "mavi"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "yeşil"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "kırmızı"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "renk değerleri"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Kırmızı, yeşil ve mavinin belirli miktarıyla bir renk oluştur. Tüm değerler 0 ile 100 arasında olmalıdır."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "döngüden çık"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "döngünün sonraki adımından devam et"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "İçeren döngüden çık."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Bu döngünün geri kalanını atlayın ve sonraki adım ile devam edin."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Uyarı: Bu blok yalnızca bir döngü içinde kullanılabilir."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "her öğe için %1 listede %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Bir listedeki her öğe için '%1' değişkenini maddeye atayın ve bundan sonra bazı açıklamalar yapın."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "ile sayılır %1 %2 den %3 ye, her adımda %4 değişim"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Başlangıç sayısından bitiş sayısına kadar belirtilen aralık ve belirtilen engeller ile devam eden değerler alan '%1' değişkeni oluştur."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "If bloğuna bir koşul ekleyin."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "If bloğuna kalan durumları \"yakalayan\" bir son ekle."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "If bloğuna ekle, kaldır veya yeniden düzenleme yap."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "değilse"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "değilse eğer"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "eğer"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Eğer değişken true, yani gerçekleşmiş ise ardından gelen işlemi yerine getir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Eğer değişken true, yani gerçekleşiyor ise ilk bloktaki işlemleri yerine getir. Aksi halde ikinci bloktaki işlemleri yerine getir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Eğer ilk değişken true, yani koşul gerçekleşmiş ise ilk blok içerisindeki işlemi gerçekleştir. Eğer ikinci değişken true ise, ikinci bloktaki işlemi gerçekleştir."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Eğer ilk değer true, yani olumlu ise, ilk bloktaki işlemi gerçekleştir. İlk değer true değil ama ikinci değer true ise, ikinci bloktaki işlemi gerçekleştir. Eğer değerlerin hiçbiri true değil ise son bloktaki işlemi gerçekleştir."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://tr.wikipedia.org/wiki/For_döngüsü"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "yap"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 kez tekrarla"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Bazı işlemleri birkaç kez yap."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "kadar tekrarla"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "tekrar ederken"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Bir değer yanlış olduğunda bazı beyanlarda bulun."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Bir değer doğru olduğunda bazı beyanlarda bulun."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Tüm %1 blokları silinsin mi?"; +Blockly.Msg["DELETE_BLOCK"] = "Bloğu Sil"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' değişkenini silmek istiyor musunuz?"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' değişkeninin %1 kullanımını silmek istiyor musunuz?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 Bloğunu Sil"; +Blockly.Msg["DIALOG_CANCEL"] = "İptal"; +Blockly.Msg["DIALOG_OK"] = "Tamam"; +Blockly.Msg["DISABLE_BLOCK"] = "Bloğu Devre Dışı Bırak"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Yinelenen"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Yinelenen Yorum"; +Blockly.Msg["ENABLE_BLOCK"] = "Bloğu Etkinleştir"; +Blockly.Msg["EXPAND_ALL"] = "Blokları Genişlet"; +Blockly.Msg["EXPAND_BLOCK"] = "Bloğu Genişlet"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Harici Girişler"; +Blockly.Msg["HELP"] = "Yardım"; +Blockly.Msg["INLINE_INPUTS"] = "Satır içi Girişler"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "boş liste oluştur"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Veri kaydı içermeyen 0 uzunluğunda bir liste döndürür"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "liste"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Bu liste bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ile liste oluştur"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Listeye bir öğe ekleyin."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "İstediğiniz sayıda öğe içeren bir liste oluşturun."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ilk"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# sonundan"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "# Kare"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "al"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "al ve kaldır"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "son"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "rastgele"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "kaldır"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Listedeki ilk öğeyi döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Listede belirtilen konumda bulunan öğeyi döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Listedeki son öğeyi döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Listedeki rastgele bir öğeyi döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Listedeki ilk öğeyi kaldırır ve döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Öğeyi bir listede belirtilen konumda kaldırır ve döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Listedeki son öğeyi kaldırır ve döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Listedeki rastgele bir öğeyi kaldırır ve döndürür."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Listedeki ilk öğeyi kaldırır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Listede belirtilen konumda bulunan öğeyi kaldırır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Listedeki son öğeyi kaldırır."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Listedeki rastgele bir öğeyi kaldırır."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "sonuna kadar #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "sona"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "ilk önce alt listeyi al"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "# listesinden alt listeyi al"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "# listesinden alt liste al"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Listenin belirtilen bölümünün bir kopyasını oluşturur."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 son öğedir."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 ilk öğedir."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "öğenin ilk oluşumunu bul"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "öğenin son tekrarlamasını bul"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Listedeki öğenin ilk/son oluşumunun dizinini döndürür. Öğe bulunmazsa %1 değerini döndürür."; +Blockly.Msg["LISTS_INLIST"] = "listede"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 boş"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Liste boşsa true değerini döndürür."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 uzunluğu"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Bir listenin uzunluğunu döndürür."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "%1 tekrarlanan %2 öğeyle liste oluştur"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Belirtilen sayıda tekrarlanan belirli bir değerden oluşan bir liste oluşturur."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "%1 ters çevirin"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Listenin bir kopyasını ters çevirin."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "olarak"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "yerleştir"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ayarla"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Öğeyi listenin başına ekler."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Öğeyi bir listede belirtilen konuma ekler."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Öğeyi listenin sonuna ekleyin."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Öğeyi bir listeye rastgele ekler."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Listedeki ilk öğeyi ayarlar."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Öğeyi bir listede belirtilen konuma ayarlar."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Listedeki son öğeyi ayarlar."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Listede rastgele bir öğe ayarlar."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "artan"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "azalan"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sıra %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Listenin bir kopyasını sıralayın."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alfabetik, görmezden gelin"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "sayısal"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alfabetik"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "metinden liste yap"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "listeden metin yap"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Metin listesini bir sınırlayıcı ile ayrılmış tek bir metinde birleştirin."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Metni, her bir sınırlayıcıyı kırarak bir metin listesine bölün."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "sınırlayıcı ile"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "True veya false değerini döndürür."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://tr.wikipedia.org/wiki/Eşitsizlikler"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Her iki giriş de birbirine eşitse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "İlk giriş ikinci girişten büyükse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "İlk giriş ikinci girişten büyük veya ona eşitse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "İlk giriş ikinci girişten küçükse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "İlk giriş ikinci girişten küçük veya ona eşitse true değerini döndürün."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Her iki giriş de birbirine eşit değilse true değerini döndürün."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 değil"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Giriş yanlışsa true değerini döndürür. Giriş doğruysa false değerini döndürür."; +Blockly.Msg["LOGIC_NULL"] = "boş"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://tr.wikipedia.org/wiki/Sıfırlanabilir_tip"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Boş değerini döndürür."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ve"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "veya"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Her iki giriş de doğruysa true döndür."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Girişlerden en az biri doğru olduğunda true değerini döndürün."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "deneme"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://tr.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "'test' durumunu kontrol edin. Koşul true olursa, 'if true' değerini döndürür; aksi takdirde 'if false' değerini döndürür."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://tr.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "İki sayının toplamını döndürün."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "İki sayının bölümünü döndürün."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "İki sayının farkını döndürün."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "İki sayının çarpımını döndürün."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Yükseltilen ilk sayıyı ikinci sayının gücüne döndürün."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://tr.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2, X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "-180'den 180'e derece cinsinden nokta (X, Y) arktanjantını döndürün."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://tr.wikipedia.org/wiki/Programlama_deyimi"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "%1 %2 göre değiştir"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "'%1' değişkenine bir sayı ekle."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://tr.wikipedia.org/wiki/Matematiksel_sabit"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Ortak sabitlerden birini döndür: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (sonsuzluk)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "%1 en düşük %2 en yüksek %3 ile sınırla"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Bir sayıyı belirtilen sınırlar arasında (dahil) ile sınırlandırın."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "bölünebilir"; +Blockly.Msg["MATH_IS_EVEN"] = "çift"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "negatif"; +Blockly.Msg["MATH_IS_ODD"] = "tek"; +Blockly.Msg["MATH_IS_POSITIVE"] = "pozitif"; +Blockly.Msg["MATH_IS_PRIME"] = "asal"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Bir sayının çift, tek, asal, bütün, pozitif, negatif veya belirli bir sayıya bölünebilir olup olmadığını kontrol edin. True veya false değerini döndürür."; +Blockly.Msg["MATH_IS_WHOLE"] = "bütün"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://tr.wikipedia.org/wiki/Modulo_işlemi"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 ÷ %2 geri kalan kısım"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Kalanı iki sayıyı bölmekten döndürün."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "x"; +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://tr.wikipedia.org/wiki/Sayı"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Sayı."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "liste ortalaması"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "maksimum liste"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "listenin medyanı"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "listenin en küçüğü"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "liste modları"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "listenin rastgele öğesi"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "listenin standart sapması"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "listenin toplamı"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Listedeki sayısal değerlerin ortalamasını (aritmetik ortalama) döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Listedeki en büyük sayıyı döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Listeden ortanca numarayı döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Listedeki en küçük sayıyı döndür."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Listedeki en yaygın öğenin bir listesini döndürür."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Listeden rastgele bir öğe döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Listenin standart sapmasını döndürün."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Listedeki tüm sayıların toplamını döndürün."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "üst alma"; +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "rastgele kesir"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "0.0 (dahil) ve 1.0 (hariç) arasında rastgele bir kesir döndürün."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "%1 ile %2 rastgele tam sayı üretin"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Belirtilen iki sınır arasında rastgele bir tamsayı döndürün."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://tr.wikipedia.org/wiki/Yuvarlatma"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "yuvarla"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "aşağı yuvarla"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "yukarı yuvarla"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Bir sayıyı yukarı veya aşağı yuvarlayın."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://tr.wikipedia.org/wiki/Karekök"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "kesin"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "kare kök"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Bir sayının mutlak değerini döndürür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "E'yi bir sayının gücüne döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Bir sayının doğal logaritmasını döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Bir sayının 10 logaritmasını geri döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Bir sayının reddini döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "10'u sayının gücüne döndür."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Bir sayının karekökünü döndürür."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "tire"; +Blockly.Msg["MATH_TRIG_ACOS"] = "akosünüs"; +Blockly.Msg["MATH_TRIG_ASIN"] = "asinüs"; +Blockly.Msg["MATH_TRIG_ATAN"] = "atanjant"; +Blockly.Msg["MATH_TRIG_COS"] = "kosünüs"; +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://tr.wikipedia.org/wiki/Trigonometrik_fonksiyonlar"; +Blockly.Msg["MATH_TRIG_SIN"] = "Sinüs"; +Blockly.Msg["MATH_TRIG_TAN"] = "tanjant"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Bir sayının arkosinini döndürün."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Bir sayının ark sinüsünü döndürün."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Bir sayının arktanjantını döndürün."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Bir derecenin kosinüsünü döndürün (radyan değil)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Sinüsü bir derece döndürün (radyan değil)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Bir derecenin tanjantını döndürün (radyan değil)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Renk değişkeni oluştur..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Sayı değişkeni oluştur..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Dizi değişkeni oluştur..."; +Blockly.Msg["NEW_VARIABLE"] = "Değişken oluştur..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Yeni değişken ismi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Yeni değişken tipi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "ifadelere izin ver"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ile:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Alt_program"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Kullanıcı tanımlı '%1' işlevini çalıştırın."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Alt_program"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Kullanıcı tanımlı '%1' işlevini çalıştırın ve çıkışını kullanın."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ile:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "'%1' oluştur"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Bu işlevi açıklayın..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Altyordam"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "bir şey yap"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "-"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Çıkışı olmayan bir işlev oluşturur."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://tr.wikipedia.org/wiki/Altyordam"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "dönüş"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Çıkışa sahip bir işlev oluşturur."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Uyarı: Bu işlev yinelenen parametrelere sahiptir."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Vurgulama işlevi tanımı"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Bir değer true ise, ikinci bir değer döndürün."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Uyarı: Bu blok yalnızca bir işlev tanımı içinde kullanılabilir."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "giriş adı:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "İşleve bir giriş ekleyin."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "girişler"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Bu işleve giriş ekleyin, kaldırın veya yeniden sıralayın."; +Blockly.Msg["REDO"] = "Yinele"; +Blockly.Msg["REMOVE_COMMENT"] = "Yorumu Sil"; +Blockly.Msg["RENAME_VARIABLE"] = "Değişkeni yeniden adlandır..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tüm '%1' değişkenini yeniden adlandır:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "%1 için %2 metnini ekle."; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "'%1' değişkenine bir metin ekleyin."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "küçük harfe"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Başlık Vakasına"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "ÜST DURUMA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Metnin bir kopyasını farklı bir durumda döndürün."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "ilk harfini al"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "# sona harfleri al"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# harfini al"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "son harfi al"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "rastgele harf al"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "%1 içinde %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Belirtilen konumdaki harfi döndürür."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "%1 içinde %2 say."; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Bazı metnin başka bir metnin içinde kaç kez oluştuğunu sayın."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Metne bir öğe ekleyin."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "katıl"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Bu metin bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "en başından # harfi"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "# harfe"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "son harfe"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "metinde"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "ilk harfinden alt dize al"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "# harfinden alt dize al"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "# harfinden alt dize al"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Metnin belirli bir bölümünü döndürür."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "metnin ilk oluşumunu bul"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "metnin son tekrarlamasını bul"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "%1 metni içinde %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "İkinci metindeki ilk metnin ilk/son oluşumunun dizinini döndürür. Metin bulunmazsa %1 değerini döndürür."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 boş"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Sağlanan metin boşsa true değerini döndürür."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ile metin oluştur"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "İstediğiniz sayıda öğeyi birleştirerek bir metin parçası oluşturun."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1 uzunluğu"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Sağlanan metindeki harflerin (boşluklar dahil) sayısını döndürür."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "%1 yaz"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Belirtilen metni, sayıyı veya başka bir değeri yazdırın."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Bir numara için kullanıcı sor."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Bazı metinler için kullanıcı sor."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "mesaj içeren numara istemi"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "mesaj içeren metin istemi"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "%1 yerine %3 içindeki %2 ile değiştir"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Bazı metnin tüm tekrarlarını başka bir metnin içinde değiştirin."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "%1 ters çevirin"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Metindeki karakterlerin sırasını tersine çevirir."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://tr.wikipedia.org/wiki/Dize_(bilgisayar_bilimi)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Bir harf, kelime veya metin satırı."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "her iki tarafından da kırpın"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "sol tarafındaki boşlukları kırpın"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "sağ tarafındaki boşlukları kırp"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Bir veya her iki uçtan boşluklar kaldırılmış olarak metnin bir kopyasını döndürün."; +Blockly.Msg["TODAY"] = "Bugün"; +Blockly.Msg["UNDO"] = "Geri al"; +Blockly.Msg["UNNAMED_KEY"] = "isimsiz"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "öge"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "'set %1' oluştur"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Bu değişkenin değerini döndürür."; +Blockly.Msg["VARIABLES_SET"] = "%1 %2 ayarla"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "'get %1' oluştur"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Bu değişkeni girişe eşit olacak şekilde ayarlar."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' isimli değişken adı zaten var."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' isimli değişken '%2' tipli başka bir değişkende tanımlı."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Çalışma Alanı"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Bir şeyler söyle..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ug-arab.js b/msg/js/ug-arab.js index 05f9c7b3ce7..44385b3dc35 100644 --- a/msg/js/ug-arab.js +++ b/msg/js/ug-arab.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ئىزاھات قوشۇش"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "قىممەت ئۆزگەرتىش:"; -Blockly.Msg["CLEAN_UP"] = "بۆلەكنى رەتلەش"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "قاتلىنىش بۆلىكى"; -Blockly.Msg["COLLAPSE_BLOCK"] = "قاتلىنىش بۆلىكى"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رەڭ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رەڭ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "نىسبەت"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ئارىلاش"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/رەڭگى"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = " تاختىدىن رەڭنى تاللاڭ"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "خالىغان رەڭ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ئىختىيارىي بىر رەڭنى تاللاڭ"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "كۆك"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "يېشىل"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "قىزىل"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "رەڭگى"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ئۈزۈلۈپ ئايلىنىش"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = " كىيىنكى قېتىم داۋاملىق ئايلىنىشن"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ئۇنىڭ دەۋرىي ئۈزۈلۈش ئۆز ئىچىگە ئالىدۇ ."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "بۇ ئايلىنىشنىڭ قالغان قىسمى ئاتلاپ ئۆتۈپ كېتىدۇ ، ھەمدە داۋاملىق كېلەر قېتىملىق ئىتېراتسىيە ."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ئاگاھلاندۇرۇش : بۇ پەقەت بىر ئايلىنىش دەۋرى ئىچىدە ئىشلىتىشكە بولىدۇ ."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "بۇ بىلمەيمىز جۈملە بۆلىكى قوشۇلۇپ بىر if شەرتى ."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ئەڭ ئاخىرقى قوشۇش ، ھەممە ئەھۋالنى ئۆز ئىچىگە ئالىدۇ بايرىمىدا بىلمەيمىز ifپارچىلىرى ."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "كۆپۈيۈپ كىتىدۇ، ئۆچۈرۈش ياكى قايتا تىزىلغان بايرام « if ( سۆزىنىڭ پارچە قايتىدىن تەقسىملەش ."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ئۇنداق بولمىسا"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ئۇنداق بولمىسا ئەگەر"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ئەگەر"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ئەگەر قىممىتى ھەقىقەتەن ، بەزى جۈملە ."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ئەگەر قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئىككىنچى جۈملىسى ئىجرا قىلىندى ."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، ئۇنداقتا ئىككىنچى پارچىنىڭ جۈملە ."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، بولسا ئىجرا قىلىش جۈملىسى ئىشككى پارچە . ئەگەر قىممىتى يوق ، ئۇنداقتا ئەڭ ئاخىرقى بىر جۈملىسى ."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/Forئايلىنىش"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ئىجرا"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "تەكرار %1قېتىم"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تەكرارلىقى"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تەكرار بولۇش"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "ھەممىنى ئۆچۈرۈش %1 پارچىمۇ؟"; -Blockly.Msg["DELETE_BLOCK"] = "بۆلەك ئۆچۈرۈش"; -Blockly.Msg["DELETE_VARIABLE"] = "“%1” ئۆزگەرگۈچى مىقدارنى ئۆچۈرۈش"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "ئۆچۈرۈش “%2” ئۆزگەرگۈچى مىقدار%1 ئىشلىتىلىش ئورنى بارمۇ؟"; -Blockly.Msg["DELETE_X_BLOCKS"] = "بۆلەك %1 نى ئۆچۈرۈش"; -Blockly.Msg["DIALOG_CANCEL"] = "ۋاز كەچ"; -Blockly.Msg["DIALOG_OK"] = "ماقۇل"; -Blockly.Msg["DISABLE_BLOCK"] = "چەكلەنگەن بۆلەك"; -Blockly.Msg["DUPLICATE_BLOCK"] = "كۆچۈرۈش"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "قوزغىتىلغان بۆلەك"; -Blockly.Msg["EXPAND_ALL"] = "ئېچىلىش بۆلىكى"; -Blockly.Msg["EXPAND_BLOCK"] = "ئېچىلىش بۆلىكى"; -Blockly.Msg["EXTERNAL_INPUTS"] = "سىرتقى كىرگۈزۈش"; -Blockly.Msg["HELP"] = "ياردەم"; -Blockly.Msg["INLINE_INPUTS"] = "تاق قۇرلۇق كىرگۈزۈش"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "تۇنجى"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "قولغا كەلتۈرۈش"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ئاخىرقى"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "خالىغانچە"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "چىقىرىۋىتىش"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "قىستۇرۇڭ"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "تەڭشەك"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "يۇقىرىغا"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "تۆۋەنگە"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ھەرب بويىچە تىزىل، چوڭ كىچىك يېزىلىش ھېساپ قىلىنمايدۇ"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "سان بويىچە تىزىل"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = " ھەرپ بويىچە تىزىل"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "يالغان"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "راست ياكى يالغان قايتىش"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ھەقىقىي"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/ تەڭ ئەمەس"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولسا ، راستىنلا كەينىگە قايتسا."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىشككىنچى چوڭ بولسا راستىنلا كەينىگە قايتسا ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىككىنچى كىرگۈزۈش نەتىجىسى تىن تۆۋەن ياكى شۇنىڭغا تەڭ بولسا راستىنلا كەينىگە قايتسا ."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولمايدۇ ، بەك كەلدى ."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ئەمەس%1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "قۇرۇق"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = " نۆلگە قايتىش"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ۋە"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ياكى"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "سىناق"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ئەگەر يالغان بولسا"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ئەگەر راست بولسا"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/ئارىفمېتىكىلىق"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiقوشۇش"; -Blockly.Msg["MATH_CHANGE_TITLE"] = " ئۆزگەرتىش %1 دىن %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/ماتېماتىكا تۇراقلىق سانى"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "پۈتۈن بۆلۈنۈش"; -Blockly.Msg["MATH_IS_EVEN"] = "جۈپ سان"; -Blockly.Msg["MATH_IS_NEGATIVE"] = " مەنپى"; -Blockly.Msg["MATH_IS_ODD"] = " تاق سان"; -Blockly.Msg["MATH_IS_POSITIVE"] = "مۇسبەت"; -Blockly.Msg["MATH_IS_PRIME"] = "تۈپ سان"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "پۈتۈن سان"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/مودېل ھېسابى"; -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/سان"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "بىر سان."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "جەدۋەل ئىچىدىكى ئوتتۇرىچە سان"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = " جەدۋەلدىكى ئەڭ چوڭ قىممەت"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "جەدۋەلدىكى ئوتتۇرا سان"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "جەدۋەل ئىچىدىكى ئەڭ كىچىك قىممەت"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = " جەدۋەل ھالىتى"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = " جەدۋەلدىكى ئوتتۇرا سانغا قايتىش"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = " جەدۋەلدىكى ئەڭ كىچىك سانغا قايتىش"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/سانلىق قىممەت تۈزىتىش"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "تۆۋەنگە تارتىڭ"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "تۆۋەنگە تارتىڭ"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = " تۆۋەنگە تارتىڭ"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/كۋادرات يىلتىز"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مۇتلەق"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = " كۋادرات يىلتىز"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/ترىگونومېتىرىيىلىك فۇنكسىيە"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "ئۆزگەرگۈچى مىقدار ... قۇرۇش"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "يېڭى ئۆزگەرگۈچى مىقدار نامى:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "قايتىلاش"; -Blockly.Msg["REMOVE_COMMENT"] = "ئىزاھاتنى ئۆچۈرۈش"; -Blockly.Msg["RENAME_VARIABLE"] = "ئۆزگەرگۈچى مىقدارغا قايتا نام قويۇش"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "بارلىق بۆلەك “%1\" ئۆزگەرگۈچى مىقدار قايتا ناملىنىپ :"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = " قوشۇش"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "بۈگۈن"; -Blockly.Msg["UNDO"] = "يېنىۋال"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "تۈر"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ئىسم مەۋجۇت “%1” ئۆزگەرگۈچى"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ئىسىملىك“%1” ئۆزگەرگۈچى مىقدار مەۋجۇت بولۇپ تۇرىدۇ ، لېكىن يەنە بىر ئۆزگەرگۈچى مىقدار تىپى بولۇش سۈپىتى بىلەن “%2” مەۋجۇت ."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ئىزاھات قوشۇش"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "قىممەت ئۆزگەرتىش:"; +Blockly.Msg["CLEAN_UP"] = "بۆلەكنى رەتلەش"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "قاتلىنىش بۆلىكى"; +Blockly.Msg["COLLAPSE_BLOCK"] = "قاتلىنىش بۆلىكى"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رەڭ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رەڭ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "نىسبەت"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ئارىلاش"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/رەڭگى"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = " تاختىدىن رەڭنى تاللاڭ"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "خالىغان رەڭ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ئىختىيارىي بىر رەڭنى تاللاڭ"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "كۆك"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "يېشىل"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "قىزىل"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "رەڭگى"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ئۈزۈلۈپ ئايلىنىش"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = " كىيىنكى قېتىم داۋاملىق ئايلىنىشن"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "ئۇنىڭ دەۋرىي ئۈزۈلۈش ئۆز ئىچىگە ئالىدۇ ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "بۇ ئايلىنىشنىڭ قالغان قىسمى ئاتلاپ ئۆتۈپ كېتىدۇ ، ھەمدە داۋاملىق كېلەر قېتىملىق ئىتېراتسىيە ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ئاگاھلاندۇرۇش : بۇ پەقەت بىر ئايلىنىش دەۋرى ئىچىدە ئىشلىتىشكە بولىدۇ ."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "بۇ بىلمەيمىز جۈملە بۆلىكى قوشۇلۇپ بىر if شەرتى ."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "ئەڭ ئاخىرقى قوشۇش ، ھەممە ئەھۋالنى ئۆز ئىچىگە ئالىدۇ بايرىمىدا بىلمەيمىز ifپارچىلىرى ."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "كۆپۈيۈپ كىتىدۇ، ئۆچۈرۈش ياكى قايتا تىزىلغان بايرام « if ( سۆزىنىڭ پارچە قايتىدىن تەقسىملەش ."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ئۇنداق بولمىسا"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ئۇنداق بولمىسا ئەگەر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ئەگەر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "ئەگەر قىممىتى ھەقىقەتەن ، بەزى جۈملە ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "ئەگەر قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئىككىنچى جۈملىسى ئىجرا قىلىندى ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، ئۇنداقتا ئىككىنچى پارچىنىڭ جۈملە ."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، بولسا ئىجرا قىلىش جۈملىسى ئىشككى پارچە . ئەگەر قىممىتى يوق ، ئۇنداقتا ئەڭ ئاخىرقى بىر جۈملىسى ."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/Forئايلىنىش"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ئىجرا"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "تەكرار %1قېتىم"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تەكرارلىقى"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "تەكرار بولۇش"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ھەممىنى ئۆچۈرۈش %1 پارچىمۇ؟"; +Blockly.Msg["DELETE_BLOCK"] = "بۆلەك ئۆچۈرۈش"; +Blockly.Msg["DELETE_VARIABLE"] = "“%1” ئۆزگەرگۈچى مىقدارنى ئۆچۈرۈش"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "ئۆچۈرۈش “%2” ئۆزگەرگۈچى مىقدار%1 ئىشلىتىلىش ئورنى بارمۇ؟"; +Blockly.Msg["DELETE_X_BLOCKS"] = "بۆلەك %1 نى ئۆچۈرۈش"; +Blockly.Msg["DIALOG_CANCEL"] = "ۋاز كەچ"; +Blockly.Msg["DIALOG_OK"] = "ماقۇل"; +Blockly.Msg["DISABLE_BLOCK"] = "چەكلەنگەن بۆلەك"; +Blockly.Msg["DUPLICATE_BLOCK"] = "كۆچۈرۈش"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "قوزغىتىلغان بۆلەك"; +Blockly.Msg["EXPAND_ALL"] = "ئېچىلىش بۆلىكى"; +Blockly.Msg["EXPAND_BLOCK"] = "ئېچىلىش بۆلىكى"; +Blockly.Msg["EXTERNAL_INPUTS"] = "سىرتقى كىرگۈزۈش"; +Blockly.Msg["HELP"] = "ياردەم"; +Blockly.Msg["INLINE_INPUTS"] = "تاق قۇرلۇق كىرگۈزۈش"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "تۇنجى"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "قولغا كەلتۈرۈش"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ئاخىرقى"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "خالىغانچە"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "چىقىرىۋىتىش"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "قىستۇرۇڭ"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "تەڭشەك"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "يۇقىرىغا"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "تۆۋەنگە"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "ھەرب بويىچە تىزىل، چوڭ كىچىك يېزىلىش ھېساپ قىلىنمايدۇ"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "سان بويىچە تىزىل"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = " ھەرپ بويىچە تىزىل"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "يالغان"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "راست ياكى يالغان قايتىش"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ھەقىقىي"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/ تەڭ ئەمەس"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولسا ، راستىنلا كەينىگە قايتسا."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىشككىنچى چوڭ بولسا راستىنلا كەينىگە قايتسا ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىككىنچى كىرگۈزۈش نەتىجىسى تىن تۆۋەن ياكى شۇنىڭغا تەڭ بولسا راستىنلا كەينىگە قايتسا ."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولمايدۇ ، بەك كەلدى ."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ئەمەس%1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "قۇرۇق"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = " نۆلگە قايتىش"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ۋە"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ياكى"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "سىناق"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ئەگەر يالغان بولسا"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ئەگەر راست بولسا"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/ئارىفمېتىكىلىق"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiقوشۇش"; +Blockly.Msg["MATH_CHANGE_TITLE"] = " ئۆزگەرتىش %1 دىن %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/ماتېماتىكا تۇراقلىق سانى"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "پۈتۈن بۆلۈنۈش"; +Blockly.Msg["MATH_IS_EVEN"] = "جۈپ سان"; +Blockly.Msg["MATH_IS_NEGATIVE"] = " مەنپى"; +Blockly.Msg["MATH_IS_ODD"] = " تاق سان"; +Blockly.Msg["MATH_IS_POSITIVE"] = "مۇسبەت"; +Blockly.Msg["MATH_IS_PRIME"] = "تۈپ سان"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "پۈتۈن سان"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/مودېل ھېسابى"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/سان"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "بىر سان."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "جەدۋەل ئىچىدىكى ئوتتۇرىچە سان"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = " جەدۋەلدىكى ئەڭ چوڭ قىممەت"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "جەدۋەلدىكى ئوتتۇرا سان"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "جەدۋەل ئىچىدىكى ئەڭ كىچىك قىممەت"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = " جەدۋەل ھالىتى"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = " جەدۋەلدىكى ئوتتۇرا سانغا قايتىش"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = " جەدۋەلدىكى ئەڭ كىچىك سانغا قايتىش"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/سانلىق قىممەت تۈزىتىش"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "تۆۋەنگە تارتىڭ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "تۆۋەنگە تارتىڭ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = " تۆۋەنگە تارتىڭ"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/كۋادرات يىلتىز"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "مۇتلەق"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = " كۋادرات يىلتىز"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/ترىگونومېتىرىيىلىك فۇنكسىيە"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ئۆزگەرگۈچى مىقدار ... قۇرۇش"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "يېڭى ئۆزگەرگۈچى مىقدار نامى:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "قايتىلاش"; +Blockly.Msg["REMOVE_COMMENT"] = "ئىزاھاتنى ئۆچۈرۈش"; +Blockly.Msg["RENAME_VARIABLE"] = "ئۆزگەرگۈچى مىقدارغا قايتا نام قويۇش"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "بارلىق بۆلەك “%1\" ئۆزگەرگۈچى مىقدار قايتا ناملىنىپ :"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = " قوشۇش"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "بۈگۈن"; +Blockly.Msg["UNDO"] = "يېنىۋال"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "تۈر"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ئىسم مەۋجۇت “%1” ئۆزگەرگۈچى"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ئىسىملىك“%1” ئۆزگەرگۈچى مىقدار مەۋجۇت بولۇپ تۇرىدۇ ، لېكىن يەنە بىر ئۆزگەرگۈچى مىقدار تىپى بولۇش سۈپىتى بىلەن “%2” مەۋجۇت ."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/uk.js b/msg/js/uk.js index 74d5bca7e8d..caff510ad20 100644 --- a/msg/js/uk.js +++ b/msg/js/uk.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Додати коментар"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Неможливо видалити змінну '%1', тому що це частина визначення функції '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Змінити значення:"; -Blockly.Msg["CLEAN_UP"] = "Очистити блоки"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Звернуті блоки містять попередження."; -Blockly.Msg["COLLAPSE_ALL"] = "Згорнути блоки"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Згорнути блок"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "колір 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "колір 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; -Blockly.Msg["COLOUR_BLEND_RATIO"] = "співвідношення"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "змішати"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Змішує два кольори разом у вказаному співвідношені (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://uk.wikipedia.org/wiki/Колір"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Вибрати колір з палітри."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "випадковий колір"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Вибрати колір навмання."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "синій"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "зелений"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; -Blockly.Msg["COLOUR_RGB_RED"] = "червоний"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "колір з"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Створити колір зі вказаними рівнями червоного, зеленого та синього. Усі значення мають бути від 0 до 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "перервати цикл"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "продовжити з наступної ітерації циклу"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Перервати виконання циклу."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Пропустити залишок цього циклу і перейти до виконання наступної ітерації."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Попередження: цей блок може бути використаний тільки в межах циклу."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для кожного елемента %1 у списку %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для кожного елемента в списку змінна '%1' отримує значення елемента, а потім виконуються певні дії."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "рахувати з %1 від %2 до %3 через %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Наявна змінна \"%1\" набуває значень від початкового до кінцевого, враховуючи заданий інтервал, і виконуються вказані блоки."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Додайте умову до блока 'якщо'."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Додати остаточну, всеосяжну умову до блоку 'якщо'."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Додайте, вилучіть або змініть порядок секцій, щоб переналаштувати цей блок 'якщо'."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "інакше"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "інакше якщо"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "якщо"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Якщо значення істинне, то виконати певні дії."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Якщо значення істинне, то виконується перший блок операторів. В іншому випадку виконується другий блок операторів."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істина, то виконується другий блок операторів."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істинне, то виконується другий блок операторів. Якщо жодне із значень не є істинним, то виконується останній блок операторів."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://uk.wikipedia.org/wiki/Цикл_(програмування)#.D0.A6.D0.B8.D0.BA.D0.BB_.D0.B7_.D0.BB.D1.96.D1.87.D0.B8.D0.BB.D1.8C.D0.BD.D0.B8.D0.BA.D0.BE.D0.BC"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "виконати"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "повторити %1 разів"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Виконати певні дії декілька разів."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повторювати, доки не"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повторювати поки"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Поки значення хибне, виконувати певні дії."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Поки значення істинне, виконувати певні дії."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Вилучити всі блоки %1?"; -Blockly.Msg["DELETE_BLOCK"] = "Видалити блок"; -Blockly.Msg["DELETE_VARIABLE"] = "Вилучити змінну '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Вилучити %1 використання змінної '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Видалити %1 блоків"; -Blockly.Msg["DIALOG_CANCEL"] = "Скасувати"; -Blockly.Msg["DIALOG_OK"] = "Гаразд"; -Blockly.Msg["DISABLE_BLOCK"] = "Вимкнути блок"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Дублювати"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Дублювати примітку"; -Blockly.Msg["ENABLE_BLOCK"] = "Увімкнути блок"; -Blockly.Msg["EXPAND_ALL"] = "Розгорнути блоки"; -Blockly.Msg["EXPAND_BLOCK"] = "Розгорнути блок"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Зовнішні входи"; -Blockly.Msg["HELP"] = "Довідка"; -Blockly.Msg["INLINE_INPUTS"] = "Вбудовані входи"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "створити порожній список"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Повертає список, довжиною 0, що не містить записів даних"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "список"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Додайте, вилучіть або змініть порядок секцій для переналаштування блока списку."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "створити список з"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Додати елемент до списку."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Створює список з будь-якою кількістю елементів."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "перший"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# з кінця"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "отримати"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "отримати і вилучити"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "останній"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "випадковий"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "вилучити"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "-ий."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Повертає перший елемент списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Повертає елемент у заданій позиції у списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Повертає останній елемент списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Повертає випадковий елемент списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Видаляє і повертає перший елемент списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Видаляє і повертає елемент у заданій позиції у списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Видаляє і повертає останній елемент списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Видаляє і повертає випадковий елемент списоку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Вилучає перший елемент списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Вилучає зі списку елемент у вказаній позиції."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Вилучає останній елемент списку."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Вилучає випадковий елемент списку."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "до # з кінця"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "до #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "до останнього"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "отримати вкладений список з першого"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "отримати вкладений список від # з кінця"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "отримати вкладений список з #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "символу."; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Створює копію вказаної частини списку."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - це останній елемент."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - це перший елемент."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "знайти перше входження елемента"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "знайти останнє входження елемента"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Повертає індекс першого/останнього входження елемента у списку. Повертає %1, якщо елемент не знайдено."; -Blockly.Msg["LISTS_INLIST"] = "у списку"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 є порожнім"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Повертає істину, якщо список порожній."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "довжина %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Повертає довжину списку."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "створити список з елемента %1 повтореного %2 разів"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Створює список, що складається з заданого значення повтореного задану кількість разів."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "розвернути %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Змінити порядок копії списку на зворотний."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "як"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вставити в"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "встановити"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Вставляє елемент на початок списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Вставка елемента у вказану позицію списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Додає елемент у кінці списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Випадковим чином вставляє елемент у список."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Задає перший елемент списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Задає елемент списку у вказаній позиції."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Задає останній елемент списку."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Задає випадковий елемент у списку."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "за зростанням"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "за спаданням"; -Blockly.Msg["LISTS_SORT_TITLE"] = "сортувати %3 %1 %2"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сортувати копію списку."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "за абеткою, ігноруючи регістр"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "як числа"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "за абеткою"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "зробити з тексту список"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "зробити зі списку текст"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Злити список текстів у єдиний текст, відокремивши розділювачами."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Поділити текст на список текстів, розриваючи на кожному розділювачі."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "з розділювачем"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "хибність"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Повертає значення істина або хибність."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "істина"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://uk.wikipedia.org/wiki/Нерівність"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Повертає істину, якщо обидва входи рівні один одному."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Повертає істину, якщо перше вхідне значення більше, ніж друге."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Повертає істину, якщо перше вхідне значення більше або дорівнює другому."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Повертає істину, якщо перше вхідне значення менше, ніж друге."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Повертає істину, якщо перше вхідне значення менше або дорівнює другому."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Повертає істину, якщо обидва входи не дорівнюють один одному."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Повертає істину, якщо вхідне значення хибне. Повертає хибність, якщо вхідне значення істинне."; -Blockly.Msg["LOGIC_NULL"] = "ніщо"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Повертає ніщо."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "та"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "або"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Повертає істину, якщо обидва входи істинні."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Повертає істину, якщо принаймні один з входів істинний."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тест"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "якщо хибність"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "якщо істина"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Перевіряє умову в 'тест'. Якщо умова істинна, то повертає значення 'якщо істина'; в іншому випадку повертає значення 'якщо хибність'."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://uk.wikipedia.org/wiki/Арифметика"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Повертає суму двох чисел."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Повертає частку двох чисел."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Повертає різницю двох чисел."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Повертає добуток двох чисел."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Повертає перше число, піднесене до степеня, вираженого другим числом."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 по X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Повертає арктангенс точки (X, Y) у градусах від -180 до 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "змінити %1 на %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Додати число до змінної '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://uk.wikipedia.org/wiki/Математична_константа"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Повертає одну з поширених констант: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) або ∞ (нескінченність)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "обмежити %1 від %2 до %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Обмежує число вказаними межами (включно)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ділиться на"; -Blockly.Msg["MATH_IS_EVEN"] = "парне"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "від'ємне"; -Blockly.Msg["MATH_IS_ODD"] = "непарне"; -Blockly.Msg["MATH_IS_POSITIVE"] = "додатне"; -Blockly.Msg["MATH_IS_PRIME"] = "просте"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Перевіряє, чи число парне, непарне, просте, ціле, додатне, від'ємне або чи воно ділиться на певне число без остачі. Повертає істину або хибність."; -Blockly.Msg["MATH_IS_WHOLE"] = "ціле"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://uk.wikipedia.org/wiki/Ділення_з_остачею"; -Blockly.Msg["MATH_MODULO_TITLE"] = "остача від %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Повертає остачу від ділення двох чисел."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://uk.wikipedia.org/wiki/Число"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Число."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = "http://www.mapleprimes.com/questions/100441-Applying-Function-To-List-Of-Numbers"; -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "середнє списку"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "максимум списку"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медіана списку"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "мінімум списку"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "моди списку"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "випадковий елемент списку"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартне відхилення списку"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сума списку"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Повертає середнє (арифметичне) числових значень у списку."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Повертає найбільше число у списку."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Повертає медіану списку."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Повертає найменше число у списку."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Повертає перелік найпоширеніших елементів у списку."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Повертає випадковий елемент зі списку."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Повертає стандартне відхилення списку."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Повертає суму всіх чисел у списку."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "випадковий дріб"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Повертає випадковий дріб від 0,0 (включно) та 1.0 (не включно)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "випадкове ціле число від %1 до %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Повертає випадкове ціле число між двома заданими межами включно."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://uk.wikipedia.org/wiki/Округлення"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "округлити"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "округлити до меншого"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "округлити до більшого"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Округлення числа до більшого або до меншого."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://uk.wikipedia.org/wiki/Квадратний_корінь"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратний корінь"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Повертає модуль числа."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Повертає e у степені."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Повертає натуральний логарифм числа."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Повертає десятковий логарифм числа."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Повертає протилежне число."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Повертає 10 у степені."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Повертає квадратний корінь з числа."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://uk.wikipedia.org/wiki/Тригонометричні_функції"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Повертає арккосинус числа."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Повертає арксинус числа."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Повертає арктангенс числа."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Повертає косинус кута в градусах (не в радіанах)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Повертає синус кута в градусах (не в радіанах)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Повертає тангенс кута в градусах (не в радіанах)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Створити колірну змінну..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Створити числову змінну..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Створити рядкову змінну..."; -Blockly.Msg["NEW_VARIABLE"] = "Створити змінну..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Нова назва змінної:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Тип нової змінної:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "-ий."; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дозволити дії"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "з:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Запустити користувацьку функцію \"%1\"."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Запустити користувацьку функцію \"%1\" і використати її вивід."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "з:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Створити \"%1\""; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишіть цю функцію..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "блок тексту"; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "щось зробити"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "до"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Створює функцію без виводу."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "повернути"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Створює функцію з виводом."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Увага: ця функція має дубльовані параметри."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Підсвітити визначення функції"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Якщо значення істинне, то повернути друге значення."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Попередження: цей блок може використовуватися лише в межах визначення функції."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "назва входу:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Додати до функції вхідні параметри."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "входи"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Додайте, вилучіть або змініть порядок вхідних параметрів для цієї функції."; -Blockly.Msg["REDO"] = "Повторити"; -Blockly.Msg["REMOVE_COMMENT"] = "Видалити коментар"; -Blockly.Msg["RENAME_VARIABLE"] = "Перейменувати змінну..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Перейменувати усі змінні \"%1\" до:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "до %1 додати текст %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Додати деякий текст до змінної '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "до нижнього регістру"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Великі Перші Букви"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "до ВЕРХНЬОГО регістру"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "В іншому випадку повертає копію тексту."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "отримати перший символ"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "отримати символ # з кінця"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "отримати символ #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; -Blockly.Msg["TEXT_CHARAT_LAST"] = "отримати останній символ"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "отримати випадковий символ"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = "-ий."; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "з тексту %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Повертає символ у зазначеній позиції."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "кількість %1 в %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Підраховує, скільки разів деякий текст з'являється в іншому тексті."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Додати елемент до тексту."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "приєднати"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Додайте, вилучіть або змініть порядок секцій для переналаштування текстового блоку."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "до символу # з кінця"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "до символу #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "до останнього символу"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тексті"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "отримати підрядок від першого символу"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "отримати підрядок від символу # з кінця"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "отримати підрядок від символу #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "-ого."; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Повертає заданий фрагмент тексту."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "знайти перше входження тексту"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "знайти останнє входження тексту"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тексті %1 %2 %3."; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Повертає індекс першого/останнього входження першого тексту в другий. Повертає %1, якщо текст не знайдено."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 є порожнім"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Повертає істину, якщо вказаний текст порожній."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "створити текст з"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Створити фрагмент тексту шляхом з'єднування будь-якого числа елементів."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "довжина %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Повертає число символів (включно з пропусками) у даному тексті."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "друк %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Надрукувати заданий текст, числа або інші значення."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запитати у користувача число."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запитати у користувача деякий текст."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запит числа з повідомленням"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запит тексту з повідомленням"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замінити %1 на %2 в %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замінює всі входження деякого тексту іншим текстом."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "розвернути %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Змінює на протилежний порядок символів у тексті."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://uk.wikipedia.org/wiki/Рядок_(програмування)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Символ, слово або рядок тексту."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "вилучити крайні пропуски з обох кінців"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "вилучити пропуски з лівого боку"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "вилучити пропуски з правого боку"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Повертає копію тексту з вилученими пропусками з одного або обох кінців."; -Blockly.Msg["TODAY"] = "Сьогодні"; -Blockly.Msg["UNDO"] = "Скасувати"; -Blockly.Msg["UNNAMED_KEY"] = "без назви"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "елемент"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Створити 'встановити %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Повертає значення цієї змінної."; -Blockly.Msg["VARIABLES_SET"] = "встановити %1 до %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Створити 'отримати %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Задає цю змінну рівною входу."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Змінна з назвою '%1' вже існує."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Змінна з назвою '%1' вже існує в іншому типі: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Робоча область Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Скажіть щось..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Додати коментар"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Неможливо видалити змінну '%1', тому що це частина визначення функції '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Змінити значення:"; +Blockly.Msg["CLEAN_UP"] = "Очистити блоки"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Звернуті блоки містять попередження."; +Blockly.Msg["COLLAPSE_ALL"] = "Згорнути блоки"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Згорнути блок"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "колір 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "колір 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; +Blockly.Msg["COLOUR_BLEND_RATIO"] = "співвідношення"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "змішати"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Змішує два кольори разом у вказаному співвідношені (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://uk.wikipedia.org/wiki/Колір"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Вибрати колір з палітри."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "випадковий колір"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Вибрати колір навмання."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "синій"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "зелений"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; +Blockly.Msg["COLOUR_RGB_RED"] = "червоний"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "колір з"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Створити колір зі вказаними рівнями червоного, зеленого та синього. Усі значення мають бути від 0 до 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "перервати цикл"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "продовжити з наступної ітерації циклу"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Перервати виконання циклу."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Пропустити залишок цього циклу і перейти до виконання наступної ітерації."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Попередження: цей блок може бути використаний тільки в межах циклу."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "для кожного елемента %1 у списку %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Для кожного елемента в списку змінна '%1' отримує значення елемента, а потім виконуються певні дії."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "рахувати з %1 від %2 до %3 через %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Наявна змінна \"%1\" набуває значень від початкового до кінцевого, враховуючи заданий інтервал, і виконуються вказані блоки."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Додайте умову до блока 'якщо'."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Додати остаточну, всеосяжну умову до блоку 'якщо'."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Додайте, вилучіть або змініть порядок секцій, щоб переналаштувати цей блок 'якщо'."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "інакше"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "інакше якщо"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "якщо"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Якщо значення істинне, то виконати певні дії."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Якщо значення істинне, то виконується перший блок операторів. В іншому випадку виконується другий блок операторів."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істина, то виконується другий блок операторів."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істинне, то виконується другий блок операторів. Якщо жодне із значень не є істинним, то виконується останній блок операторів."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://uk.wikipedia.org/wiki/Цикл_(програмування)#.D0.A6.D0.B8.D0.BA.D0.BB_.D0.B7_.D0.BB.D1.96.D1.87.D0.B8.D0.BB.D1.8C.D0.BD.D0.B8.D0.BA.D0.BE.D0.BC"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "виконати"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "повторити %1 разів"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Виконати певні дії декілька разів."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "повторювати, доки не"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "повторювати поки"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Поки значення хибне, виконувати певні дії."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Поки значення істинне, виконувати певні дії."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Вилучити всі блоки %1?"; +Blockly.Msg["DELETE_BLOCK"] = "Видалити блок"; +Blockly.Msg["DELETE_VARIABLE"] = "Вилучити змінну '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Вилучити %1 використання змінної '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Видалити %1 блоків"; +Blockly.Msg["DIALOG_CANCEL"] = "Скасувати"; +Blockly.Msg["DIALOG_OK"] = "Гаразд"; +Blockly.Msg["DISABLE_BLOCK"] = "Вимкнути блок"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Дублювати"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Дублювати примітку"; +Blockly.Msg["ENABLE_BLOCK"] = "Увімкнути блок"; +Blockly.Msg["EXPAND_ALL"] = "Розгорнути блоки"; +Blockly.Msg["EXPAND_BLOCK"] = "Розгорнути блок"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Зовнішні входи"; +Blockly.Msg["HELP"] = "Довідка"; +Blockly.Msg["INLINE_INPUTS"] = "Вбудовані входи"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "створити порожній список"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Повертає список, довжиною 0, що не містить записів даних"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "список"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Додайте, вилучіть або змініть порядок секцій для переналаштування блока списку."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "створити список з"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Додати елемент до списку."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Створює список з будь-якою кількістю елементів."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "перший"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# з кінця"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "отримати"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "отримати і вилучити"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "останній"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "випадковий"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "вилучити"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "-ий."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Повертає перший елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Повертає елемент у заданій позиції у списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Повертає останній елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Повертає випадковий елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Видаляє і повертає перший елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Видаляє і повертає елемент у заданій позиції у списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Видаляє і повертає останній елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Видаляє і повертає випадковий елемент списоку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Вилучає перший елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Вилучає зі списку елемент у вказаній позиції."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Вилучає останній елемент списку."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Вилучає випадковий елемент списку."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "до # з кінця"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "до #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "до останнього"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "отримати вкладений список з першого"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "отримати вкладений список від # з кінця"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "отримати вкладений список з #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "символу."; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Створює копію вказаної частини списку."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 - це останній елемент."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 - це перший елемент."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "знайти перше входження елемента"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "знайти останнє входження елемента"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Повертає індекс першого/останнього входження елемента у списку. Повертає %1, якщо елемент не знайдено."; +Blockly.Msg["LISTS_INLIST"] = "у списку"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 є порожнім"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Повертає істину, якщо список порожній."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "довжина %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Повертає довжину списку."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "створити список з елемента %1 повтореного %2 разів"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Створює список, що складається з заданого значення повтореного задану кількість разів."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "розвернути %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Змінити порядок копії списку на зворотний."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "як"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "вставити в"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "встановити"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Вставляє елемент на початок списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Вставка елемента у вказану позицію списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Додає елемент у кінці списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Випадковим чином вставляє елемент у список."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Задає перший елемент списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Задає елемент списку у вказаній позиції."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Задає останній елемент списку."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Задає випадковий елемент у списку."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "за зростанням"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "за спаданням"; +Blockly.Msg["LISTS_SORT_TITLE"] = "сортувати %3 %1 %2"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Сортувати копію списку."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "за абеткою, ігноруючи регістр"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "як числа"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "за абеткою"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "зробити з тексту список"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "зробити зі списку текст"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Злити список текстів у єдиний текст, відокремивши розділювачами."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Поділити текст на список текстів, розриваючи на кожному розділювачі."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "з розділювачем"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "хибність"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Повертає значення істина або хибність."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "істина"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://uk.wikipedia.org/wiki/Нерівність"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Повертає істину, якщо обидва входи рівні один одному."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Повертає істину, якщо перше вхідне значення більше, ніж друге."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Повертає істину, якщо перше вхідне значення більше або дорівнює другому."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Повертає істину, якщо перше вхідне значення менше, ніж друге."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Повертає істину, якщо перше вхідне значення менше або дорівнює другому."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Повертає істину, якщо обидва входи не дорівнюють один одному."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "не %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Повертає істину, якщо вхідне значення хибне. Повертає хибність, якщо вхідне значення істинне."; +Blockly.Msg["LOGIC_NULL"] = "ніщо"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Повертає ніщо."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "та"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "або"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Повертає істину, якщо обидва входи істинні."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Повертає істину, якщо принаймні один з входів істинний."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "тест"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "якщо хибність"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "якщо істина"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Перевіряє умову в 'тест'. Якщо умова істинна, то повертає значення 'якщо істина'; в іншому випадку повертає значення 'якщо хибність'."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://uk.wikipedia.org/wiki/Арифметика"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Повертає суму двох чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Повертає частку двох чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Повертає різницю двох чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Повертає добуток двох чисел."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Повертає перше число, піднесене до степеня, вираженого другим числом."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 по X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Повертає арктангенс точки (X, Y) у градусах від -180 до 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "змінити %1 на %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Додати число до змінної '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://uk.wikipedia.org/wiki/Математична_константа"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Повертає одну з поширених констант: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) або ∞ (нескінченність)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "обмежити %1 від %2 до %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Обмежує число вказаними межами (включно)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "ділиться на"; +Blockly.Msg["MATH_IS_EVEN"] = "парне"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "від'ємне"; +Blockly.Msg["MATH_IS_ODD"] = "непарне"; +Blockly.Msg["MATH_IS_POSITIVE"] = "додатне"; +Blockly.Msg["MATH_IS_PRIME"] = "просте"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Перевіряє, чи число парне, непарне, просте, ціле, додатне, від'ємне або чи воно ділиться на певне число без остачі. Повертає істину або хибність."; +Blockly.Msg["MATH_IS_WHOLE"] = "ціле"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://uk.wikipedia.org/wiki/Ділення_з_остачею"; +Blockly.Msg["MATH_MODULO_TITLE"] = "остача від %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Повертає остачу від ділення двох чисел."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://uk.wikipedia.org/wiki/Число"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Число."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = "http://www.mapleprimes.com/questions/100441-Applying-Function-To-List-Of-Numbers"; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "середнє списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "максимум списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "медіана списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "мінімум списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "моди списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "випадковий елемент списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "стандартне відхилення списку"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "сума списку"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Повертає середнє (арифметичне) числових значень у списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Повертає найбільше число у списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Повертає медіану списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Повертає найменше число у списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Повертає перелік найпоширеніших елементів у списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Повертає випадковий елемент зі списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Повертає стандартне відхилення списку."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Повертає суму всіх чисел у списку."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "випадковий дріб"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Повертає випадковий дріб від 0,0 (включно) та 1.0 (не включно)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "випадкове ціле число від %1 до %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Повертає випадкове ціле число між двома заданими межами включно."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://uk.wikipedia.org/wiki/Округлення"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "округлити"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "округлити до меншого"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "округлити до більшого"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Округлення числа до більшого або до меншого."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://uk.wikipedia.org/wiki/Квадратний_корінь"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "модуль"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "квадратний корінь"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Повертає модуль числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Повертає e у степені."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Повертає натуральний логарифм числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Повертає десятковий логарифм числа."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Повертає протилежне число."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Повертає 10 у степені."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Повертає квадратний корінь з числа."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://uk.wikipedia.org/wiki/Тригонометричні_функції"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Повертає арккосинус числа."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Повертає арксинус числа."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Повертає арктангенс числа."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Повертає косинус кута в градусах (не в радіанах)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Повертає синус кута в градусах (не в радіанах)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Повертає тангенс кута в градусах (не в радіанах)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Створити колірну змінну..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Створити числову змінну..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Створити рядкову змінну..."; +Blockly.Msg["NEW_VARIABLE"] = "Створити змінну..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Нова назва змінної:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Тип нової змінної:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "-ий."; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "дозволити дії"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Запустити користувацьку функцію \"%1\"."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Запустити користувацьку функцію \"%1\" і використати її вивід."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "з:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Створити \"%1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Опишіть цю функцію..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "блок тексту"; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "щось зробити"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "до"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Створює функцію без виводу."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://uk.wikipedia.org/wiki/Підпрограма"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "повернути"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Створює функцію з виводом."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Увага: ця функція має дубльовані параметри."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Підсвітити визначення функції"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Якщо значення істинне, то повернути друге значення."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Попередження: цей блок може використовуватися лише в межах визначення функції."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "назва входу:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Додати до функції вхідні параметри."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "входи"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Додайте, вилучіть або змініть порядок вхідних параметрів для цієї функції."; +Blockly.Msg["REDO"] = "Повторити"; +Blockly.Msg["REMOVE_COMMENT"] = "Видалити коментар"; +Blockly.Msg["RENAME_VARIABLE"] = "Перейменувати змінну..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Перейменувати усі змінні \"%1\" до:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "до %1 додати текст %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Додати деякий текст до змінної '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "до нижнього регістру"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "Великі Перші Букви"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "до ВЕРХНЬОГО регістру"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "В іншому випадку повертає копію тексту."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "отримати перший символ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "отримати символ # з кінця"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "отримати символ #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; +Blockly.Msg["TEXT_CHARAT_LAST"] = "отримати останній символ"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "отримати випадковий символ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "-ий."; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "з тексту %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Повертає символ у зазначеній позиції."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "кількість %1 в %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Підраховує, скільки разів деякий текст з'являється в іншому тексті."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Додати елемент до тексту."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "приєднати"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Додайте, вилучіть або змініть порядок секцій для переналаштування текстового блоку."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "до символу # з кінця"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "до символу #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "до останнього символу"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "у тексті"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "отримати підрядок від першого символу"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "отримати підрядок від символу # з кінця"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "отримати підрядок від символу #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "-ого."; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Повертає заданий фрагмент тексту."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "знайти перше входження тексту"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "знайти останнє входження тексту"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "у тексті %1 %2 %3."; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Повертає індекс першого/останнього входження першого тексту в другий. Повертає %1, якщо текст не знайдено."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 є порожнім"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Повертає істину, якщо вказаний текст порожній."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "створити текст з"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Створити фрагмент тексту шляхом з'єднування будь-якого числа елементів."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "довжина %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Повертає число символів (включно з пропусками) у даному тексті."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "друк %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Надрукувати заданий текст, числа або інші значення."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Запитати у користувача число."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Запитати у користувача деякий текст."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "запит числа з повідомленням"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "запит тексту з повідомленням"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "замінити %1 на %2 в %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Замінює всі входження деякого тексту іншим текстом."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "розвернути %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Змінює на протилежний порядок символів у тексті."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://uk.wikipedia.org/wiki/Рядок_(програмування)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Символ, слово або рядок тексту."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "вилучити крайні пропуски з обох кінців"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "вилучити пропуски з лівого боку"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "вилучити пропуски з правого боку"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Повертає копію тексту з вилученими пропусками з одного або обох кінців."; +Blockly.Msg["TODAY"] = "Сьогодні"; +Blockly.Msg["UNDO"] = "Скасувати"; +Blockly.Msg["UNNAMED_KEY"] = "без назви"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "елемент"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Створити 'встановити %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Повертає значення цієї змінної."; +Blockly.Msg["VARIABLES_SET"] = "встановити %1 до %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Створити 'отримати %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Задає цю змінну рівною входу."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Змінна з назвою '%1' вже існує."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Змінна з назвою '%1' вже існує в іншому типі: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Робоча область Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Скажіть щось..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/ur.js b/msg/js/ur.js index cfe34c7e503..b61350d697b 100644 --- a/msg/js/ur.js +++ b/msg/js/ur.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "کمنٹ کریں"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "متغیر '٪ 1' کو حذف نہیں کر سکتا کیونکہ یہ فنکشن کی تعریف کا حصہ ہے '٪ 2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ویلیو تبدیل کریں:"; -Blockly.Msg["CLEAN_UP"] = "بلاکس صاف کریں"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "بند کرو بلاکس"; -Blockly.Msg["COLLAPSE_BLOCK"] = "بند کرو بلاک"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ریشیو"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "مرکب"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دیئے گئے ریشیو میں دو رنگوں کو مرکب کریں (0.0-1.0)"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "پیلیٹ سے رنگ منتخب کریں"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ناسیدھا رنگ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "کسی بھی رنگ کو منتجب کریں"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "نیلا"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "سبز"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "سرخ"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "کے ساتھ رنگ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "مخصوص، سرخ، سبز اور نیلے رنگ کے ساتھ ایک رنگ بنائیں. تمام اقدار 0 اور 100 کے درمیان ہونا ضروری ہے."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "لوپ سے باہر نکلنا"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "مشتمل لوپ کے باہر توڑ."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "انتباہ: اس بلاک کو صرف لوپ میں استعمال کیا جاسکتا ہے۔"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "प्रत्येक چیز کیلئے %1 فہرست ميں %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "فہرست میں ہر آئٹم کے لئے، '%1' متغیر کو آئٹم پہ لگائے،اور پھر کچھ جملے کہے"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 سے %2 سے %3 تک %4 کے ساتھ گنتی کریں"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "کیا چر '%1' ابتدا عدد سے اختتام عدد تک मानों کو لیتا ہے، निर्दिष्ट अंतराल کے تحت گنتی کرتا ہے، اور निर्दिष्ट रुकावटों کو کرتا ہے۔"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "دوسراں"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "دوسراں اگر"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "کریں"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 مرتبہ دہرائے"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "کچھ جملوں کو کہیں مرتبہ کریں۔"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تک دہرائے"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "کے دوران دہرائے"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "تمام%1 بلاکس کو حذف کریں؟"; -Blockly.Msg["DELETE_BLOCK"] = "حذف بلاک"; -Blockly.Msg["DELETE_VARIABLE"] = "'٪ 1' متغیر کو حذف کریں"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%2 متغیر کے %1 استعمال کو حذف کریں؟"; -Blockly.Msg["DELETE_X_BLOCKS"] = " بلاکوں کو حذف کریں %1"; -Blockly.Msg["DIALOG_CANCEL"] = "منسوخ"; -Blockly.Msg["DIALOG_OK"] = "ٹھیک ہے"; -Blockly.Msg["DISABLE_BLOCK"] = "بلاک کو غیرفعال کریں"; -Blockly.Msg["DUPLICATE_BLOCK"] = "نقل"; -Blockly.Msg["DUPLICATE_COMMENT"] = " نقل تبصرہ"; -Blockly.Msg["ENABLE_BLOCK"] = "بلاک کو فعال کریں"; -Blockly.Msg["EXPAND_ALL"] = "بلاکوں میں توسیع کریں"; -Blockly.Msg["EXPAND_BLOCK"] = "بلاک میں توسیع کریں"; -Blockly.Msg["EXTERNAL_INPUTS"] = "خارجی دخل اندازی"; -Blockly.Msg["HELP"] = "مدد"; -Blockly.Msg["INLINE_INPUTS"] = "بین السطور داخل کریں"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "فہرست"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "کے ساتھ فہرست بنائیں"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "پہلا"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "آخر سے"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "حاصل کریں"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخری"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "غیرمتعین"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حذف کریں"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "پہلے آئٹم کو فہرست میں لوٹائے"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "فہرست میں"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 کی لمبائی"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "بطور"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "میں درج کریں"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "تعین کریں"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "فہرست میں پہلا آئٹم کا تعین کریں"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "غلط"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سچ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 نہیں"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "اور"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ٹیسٹ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر غلط ہے"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگ سچ ہے"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ایک نمبر."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "بالکل"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "اسکویر روٹ"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "رنگ متغیر بنائیں"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "عدد متغیر بناییں"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "متغیر بنائیں String"; -Blockly.Msg["NEW_VARIABLE"] = "متغیر بنائیں"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "نیا ویریابل نام:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = " نئی متغیر قسم"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "سمیت:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "سمیت:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "کچھ کرو"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "کو"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "بغیر آوٹ پٹ کا فنکشن بنائیں"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "واپس آ جائیں"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "بغیر آوٹ پٹ کا فنکشن بنائیں"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "دہرائیں"; -Blockly.Msg["REMOVE_COMMENT"] = "تبصرہ کو ہٹا دیں"; -Blockly.Msg["RENAME_VARIABLE"] = "دوبار نام دیں ویریابل کو..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تمام %1 متغیروں کو دوبارہ نام دے:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# حرف حاصل کریں"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "آج"; -Blockly.Msg["UNDO"] = "کیا ہوا کام کینسل کرے"; -Blockly.Msg["UNNAMED_KEY"] = "نامعلوم"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "آئٹم"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ایک متغیر نام %1 پہلے سے ہی موجود ہے."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ایک متغیر نام %1 کسی دوسرے قسم کے لئے پہلے ہی موجود ہے: %2."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "کمنٹ کریں"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "متغیر '٪ 1' کو حذف نہیں کر سکتا کیونکہ یہ فنکشن کی تعریف کا حصہ ہے '٪ 2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ویلیو تبدیل کریں:"; +Blockly.Msg["CLEAN_UP"] = "بلاکس صاف کریں"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "بند کرو بلاکس"; +Blockly.Msg["COLLAPSE_BLOCK"] = "بند کرو بلاک"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "رنگ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "رنگ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ریشیو"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "مرکب"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "دیئے گئے ریشیو میں دو رنگوں کو مرکب کریں (0.0-1.0)"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "پیلیٹ سے رنگ منتخب کریں"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "ناسیدھا رنگ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "کسی بھی رنگ کو منتجب کریں"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "نیلا"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "سبز"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "سرخ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "کے ساتھ رنگ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "مخصوص، سرخ، سبز اور نیلے رنگ کے ساتھ ایک رنگ بنائیں. تمام اقدار 0 اور 100 کے درمیان ہونا ضروری ہے."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "لوپ سے باہر نکلنا"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "مشتمل لوپ کے باہر توڑ."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "انتباہ: اس بلاک کو صرف لوپ میں استعمال کیا جاسکتا ہے۔"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "प्रत्येक چیز کیلئے %1 فہرست ميں %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "فہرست میں ہر آئٹم کے لئے، '%1' متغیر کو آئٹم پہ لگائے،اور پھر کچھ جملے کہے"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "%1 سے %2 سے %3 تک %4 کے ساتھ گنتی کریں"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "کیا چر '%1' ابتدا عدد سے اختتام عدد تک मानों کو لیتا ہے، निर्दिष्ट अंतराल کے تحت گنتی کرتا ہے، اور निर्दिष्ट रुकावटों کو کرتا ہے۔"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "دوسراں"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "دوسراں اگر"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "اگر"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "کریں"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 مرتبہ دہرائے"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "کچھ جملوں کو کہیں مرتبہ کریں۔"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "تک دہرائے"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "کے دوران دہرائے"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "تمام%1 بلاکس کو حذف کریں؟"; +Blockly.Msg["DELETE_BLOCK"] = "حذف بلاک"; +Blockly.Msg["DELETE_VARIABLE"] = "'٪ 1' متغیر کو حذف کریں"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "%2 متغیر کے %1 استعمال کو حذف کریں؟"; +Blockly.Msg["DELETE_X_BLOCKS"] = " بلاکوں کو حذف کریں %1"; +Blockly.Msg["DIALOG_CANCEL"] = "منسوخ"; +Blockly.Msg["DIALOG_OK"] = "ٹھیک ہے"; +Blockly.Msg["DISABLE_BLOCK"] = "بلاک کو غیرفعال کریں"; +Blockly.Msg["DUPLICATE_BLOCK"] = "نقل"; +Blockly.Msg["DUPLICATE_COMMENT"] = " نقل تبصرہ"; +Blockly.Msg["ENABLE_BLOCK"] = "بلاک کو فعال کریں"; +Blockly.Msg["EXPAND_ALL"] = "بلاکوں میں توسیع کریں"; +Blockly.Msg["EXPAND_BLOCK"] = "بلاک میں توسیع کریں"; +Blockly.Msg["EXTERNAL_INPUTS"] = "خارجی دخل اندازی"; +Blockly.Msg["HELP"] = "مدد"; +Blockly.Msg["INLINE_INPUTS"] = "بین السطور داخل کریں"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "فہرست"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "کے ساتھ فہرست بنائیں"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "پہلا"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "آخر سے"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "حاصل کریں"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "آخری"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "غیرمتعین"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "حذف کریں"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "پہلے آئٹم کو فہرست میں لوٹائے"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "فہرست میں"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1 کی لمبائی"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "بطور"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "میں درج کریں"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "تعین کریں"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "فہرست میں پہلا آئٹم کا تعین کریں"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "غلط"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "سچ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 نہیں"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "اور"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "یا"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ٹیسٹ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "اگر غلط ہے"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "اگ سچ ہے"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ایک نمبر."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "بالکل"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "اسکویر روٹ"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "رنگ متغیر بنائیں"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "عدد متغیر بناییں"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "متغیر بنائیں String"; +Blockly.Msg["NEW_VARIABLE"] = "متغیر بنائیں"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "نیا ویریابل نام:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = " نئی متغیر قسم"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "سمیت:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "سمیت:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "کچھ کرو"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "کو"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "بغیر آوٹ پٹ کا فنکشن بنائیں"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "واپس آ جائیں"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "بغیر آوٹ پٹ کا فنکشن بنائیں"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "دہرائیں"; +Blockly.Msg["REMOVE_COMMENT"] = "تبصرہ کو ہٹا دیں"; +Blockly.Msg["RENAME_VARIABLE"] = "دوبار نام دیں ویریابل کو..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "تمام %1 متغیروں کو دوبارہ نام دے:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "# حرف حاصل کریں"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "آج"; +Blockly.Msg["UNDO"] = "کیا ہوا کام کینسل کرے"; +Blockly.Msg["UNNAMED_KEY"] = "نامعلوم"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "آئٹم"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "ایک متغیر نام %1 پہلے سے ہی موجود ہے."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "ایک متغیر نام %1 کسی دوسرے قسم کے لئے پہلے ہی موجود ہے: %2."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/uz.js b/msg/js/uz.js index 92d4988c97d..0f1f38a803a 100644 --- a/msg/js/uz.js +++ b/msg/js/uz.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Qiymatni o'zgartirish:"; -Blockly.Msg["CLEAN_UP"] = "Bloklarni tozalash"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Bloklarni yopish"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Blokni yopish"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "tasodifiy rang"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tasodifiy rangni tanlang."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "ko'k"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "yashil"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "qizil"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Barcha %1 bloklar o'chirilsinmi?"; -Blockly.Msg["DELETE_BLOCK"] = "Blokni o'chirish"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' o'zgaruvchisini o'chirib tashlang"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 bloklarini o‘chirish"; -Blockly.Msg["DIALOG_CANCEL"] = "Bekor qilish"; -Blockly.Msg["DIALOG_OK"] = "Mayli"; -Blockly.Msg["DISABLE_BLOCK"] = "Bloklashni o‘chirish"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Bloklashni yoqish"; -Blockly.Msg["EXPAND_ALL"] = "Bloklarni kengaytirish"; -Blockly.Msg["EXPAND_BLOCK"] = "Blokni kengaytirish"; -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "Yordam"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Rang o'zgaruvchisini yaratish ..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Raqam o'zgaruvchisini yarating ..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "String o'zgaruvchisini yaratish ..."; -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Yangi o'zgaruvchining nomi:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Yangi o'zgaruvchining turi:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "Qaytarish"; -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "Today"; // untranslated -Blockly.Msg["UNDO"] = "Bekor qilish"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' nomli o'zgaruvchi mavjud."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' nomli o'zgaruvchi boshqa tur uchun allaqachon mavjud: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Qiymatni o'zgartirish:"; +Blockly.Msg["CLEAN_UP"] = "Bloklarni tozalash"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Bloklarni yopish"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Blokni yopish"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "tasodifiy rang"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Tasodifiy rangni tanlang."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ko'k"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "yashil"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "qizil"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Barcha %1 bloklar o'chirilsinmi?"; +Blockly.Msg["DELETE_BLOCK"] = "Blokni o'chirish"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' o'zgaruvchisini o'chirib tashlang"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 bloklarini o‘chirish"; +Blockly.Msg["DIALOG_CANCEL"] = "Bekor qilish"; +Blockly.Msg["DIALOG_OK"] = "Mayli"; +Blockly.Msg["DISABLE_BLOCK"] = "Bloklashni o‘chirish"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Bloklashni yoqish"; +Blockly.Msg["EXPAND_ALL"] = "Bloklarni kengaytirish"; +Blockly.Msg["EXPAND_BLOCK"] = "Blokni kengaytirish"; +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "Yordam"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Rang o'zgaruvchisini yaratish ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Raqam o'zgaruvchisini yarating ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "String o'zgaruvchisini yaratish ..."; +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Yangi o'zgaruvchining nomi:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Yangi o'zgaruvchining turi:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "Qaytarish"; +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "Today"; // untranslated +Blockly.Msg["UNDO"] = "Bekor qilish"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "'%1' nomli o'zgaruvchi mavjud."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "'%1' nomli o'zgaruvchi boshqa tur uchun allaqachon mavjud: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/vi.js b/msg/js/vi.js index 4cd062992a0..ea699d8a289 100644 --- a/msg/js/vi.js +++ b/msg/js/vi.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Thêm Chú Giải"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Không thể xóa giá trị '%1' vì nó được bao gồm trong định nghĩa của chức năng '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Thay giá trị thành:"; -Blockly.Msg["CLEAN_UP"] = "Sắp xếp lại các khối"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Các khối bị sập có chứa cảnh báo."; -Blockly.Msg["COLLAPSE_ALL"] = "Thu Nhỏ Mọi Mảnh"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Thu Nhỏ Mảnh"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "màu 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "màu 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "tỉ lệ"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "pha"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Pha hai màu với nhau theo tỉ lệ (0 - 100)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://vi.wikipedia.org/wiki/M%C3%A0u_s%E1%BA%AFc"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Chọn một màu từ bảng màu."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "màu bất kỳ"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "chọn một màu bất kỳ."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "màu xanh dương"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "màu xanh lá cây"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "màu đỏ"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "tạo màu từ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Tạo màu từ ba màu: đỏ, xanh lá cây, xanh dương với số lượng cụ thể. Mỗi số phải có giá trị từ 0 đến 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "thoát"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "sang lần lặp tiếp theo"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Thoát khỏi vòng lặp hiện tại."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Bỏ qua phần còn lại trong vòng lặp này, và sang lần lặp tiếp theo."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Chú ý: Mảnh này chỉ có thế dùng trong các vòng lặp."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "với mỗi thành phần %1 trong danh sách %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Trong một danh sách, lấy từng thành phần, gán vào biến \"%1\", rồi thực hiện một số lệnh."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "đếm theo %1 từ %2 đến %3 mỗi lần thêm %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Cho biến '%1' lấy các giá trị từ số bắt đầu đến số kết thúc, đếm theo khoảng thời gian đã chỉ định và thực hiện các khối được chỉ định."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Thêm một điều kiện vào mảnh nếu."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Cuối cùng, khi không điều kiện nào đúng."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Thêm, bỏ, hoặc đổi thứ tự các mảnh con để tạo cấu trúc mới cho mảnh nếu."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "nếu không"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "nếu không nếu"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "nếu"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Nếu điều kiện đúng, thực hiện các lệnh."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu sai, thực hiện các lệnh sau."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai. Nếu không điều kiện nào đúng, thực hiện các lệnh cuối cùng."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "thực hiện"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "lặp lại %1 lần"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Thực hiện các lệnh vài lần."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "lặp lại cho đến khi"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "lặp lại trong khi"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Miễn là điều kiện còn sai, thì thực hiện các lệnh. Khi điều kiện đúng thì ngưng."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Miễn là điều kiện còn đúng, thì thực hiện các lệnh."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Xóa hết %1 mảnh?"; -Blockly.Msg["DELETE_BLOCK"] = "Xóa Mảnh Này"; -Blockly.Msg["DELETE_VARIABLE"] = "Xóa giá trị '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Xóa %1 lần dùng của giá trị '%2'?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Xóa %1 Mảnh"; -Blockly.Msg["DIALOG_CANCEL"] = "Hủy"; -Blockly.Msg["DIALOG_OK"] = "OK"; -Blockly.Msg["DISABLE_BLOCK"] = "Ngưng Tác Dụng"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Tạo Bản Sao"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Bình luận trùng"; -Blockly.Msg["ENABLE_BLOCK"] = "Phục Hồi Tác Dụng"; -Blockly.Msg["EXPAND_ALL"] = "Mở Lớn Mọi Mảnh"; -Blockly.Msg["EXPAND_BLOCK"] = "Mở Lớn Mảnh"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Chỗ Gắn Bên Ngoài"; -Blockly.Msg["HELP"] = "Trợ Giúp"; -Blockly.Msg["INLINE_INPUTS"] = "Chỗ Gắn Cùng Dòng"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tạo danh sách trống"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Hoàn trả một danh sách, với độ dài 0, không có thành tố nào cả"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "danh sách"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh danh sách này."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "tạo danh sách gồm"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Thêm vật vào danh sách."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Tạo một danh sách bao gồm nhiều vậts, với một số lượng bất kỳ."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "đầu tiên"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "(đếm từ cuối) thứ"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "thứ"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "lấy thành tố"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "lấy và xóa thành tố"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "cuối cùng"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "bất kỳ"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "xóa thành tố"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Hoàn trả thành tố đầu tiên trong danh sách."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Hoàn trả thành tố trong danh sách ở vị trí ấn định."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Hoàn trả thành tố cuối cùng trong danh sách."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Hoàn trả một thành tố bất kỳ trong danh sách."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Hoàn trả và xóa thành tố đầu tiên trong danh sách."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Hoàn trả và xóa thành tố trong danh sách ở vị trí ấn định."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Hoàn trả và xóa thành tố cuối cùng trong danh sách."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Hoàn trả và xóa mộtthành tố bất kỳ trong danh sách."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Xóa thành tố đầu tiên trong danh sách."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Xóa thành tố trong danh sách ở vị trí ấn định."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Xóa thành tố cuối cùng trong danh sách."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Xóa thành tố bất kỳ trong danh sách."; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "đến (đếm từ cuối) thứ"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "đến thứ"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "đến cuối cùng"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "lấy một danh sách con từ đầu tiên"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "lấy một danh sách con từ (đếm từ cuối) từ vị trí thứ"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "lấy một danh sách con từ vị trí thứ"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Lấy một mảng của danh sách này để tạo danh sách con."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 là thành tố cuối cùng."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 là thành tố đầu tiên."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "tìm sự có mặt đầu tiên của vật"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "tìm sự có mặt cuối cùng của vật"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Hoàn trả vị trí xuất hiện đầu tiên/cuối cùng của vật trong danh sách. Nếu không tìm thấy thì hoàn trả số %1."; -Blockly.Msg["LISTS_INLIST"] = "trong dánh sách"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 trống rỗng"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Hoàn trả “đúng\" nếu danh sách không có thành tử nào."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "độ dài của %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Hoàn trả độ dài của một danh sách."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "tạo danh sách gồm một vật %1 lặp lại %2 lần"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Tạo danh sách gồm một số lượng vật nhất định với mỗi vật đều giống nhau."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "đảo ngược %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Đảo ngược bản sao chép của một danh sách."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "giá trị"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "chèn vào vị trí"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "đặt"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Chèn vật vào đầu danh sách."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Chèn vật vào danh sách theo vị trí ấn định."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Gắn thêm vật vào cuối danh sách."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Gắn chèn vật vào danh sách ở vị trí ngẫu nhiên."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Đặt giá trị của thành tố đầu tiên trong danh sách."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Đặt giá trị của thành tố ở vị trí ấn định trong một danh sách."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Đặt giá trị của thành tố cuối cùng trong danh sách."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Đặt giá trị của thành tố ngẫu nhiên trong danh sách."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "tăng dần"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "giảm dần"; -Blockly.Msg["LISTS_SORT_TITLE"] = "sắp xếp %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sắp xếp một bản sao của một danh sách."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "chữ cái, không phân biệt hoa/thường"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "số"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "chữ cái"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "tạo danh sách từ văn bản"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tạo văn bản từ danh sách"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Liên kết một danh sách các văn bản vào một văn bản, cách nhau bằng dấu phân cách."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tách văn bản thành một danh sách các văn bản nhỏ, ngắt bởi các ký tự phân cách."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "với ký tự phân cách"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "sai"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Hoàn trả \"đúng\" hoặc \"sai\"."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "đúng"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://vi.wikipedia.org/wiki/B%E1%BA%A5t_%C4%91%E1%BA%B3ng_th%E1%BB%A9c"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào bằng nhau."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn đầu vào thứ hai."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn hoặc bằng đầu vào thứ hai."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn đầu vào thứ hai."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn hoặc bằng đầu vào thứ hai."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào không bằng nhau."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "không %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Hoàn trả \"đúng\" (true) nếu đầu vào sai. Hoàn trả \"sai\" (false) nếu đầu vào đúng."; -Blockly.Msg["LOGIC_NULL"] = "trống không"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Hoàn trả trống không."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "và"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "hoặc"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Hoàn trả \"đúng\" (true) nếu cả hai đầu vào đều đúng."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Hoàn trả \"đúng\" (true) nếu ít nhất một trong hai đầu vào đúng."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "kiểm tra"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "nếu sai"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "nếu đúng"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kiểm tra điều kiện. Nếu điều kiện đúng, hoàn trả giá trị từ mệnh đề \"nếu đúng\" nếu không đúng, hoàn trả giá trị từ mệnh đề \"nếu sai\"."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://vi.wikipedia.org/wiki/S%E1%BB%91_h%E1%BB%8Dc"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Hoàn trả tổng của hai con số."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Hoàn trả thương của hai con số."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Hoàn trả hiệu của hai con số."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Hoàn trả tích của hai con số."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Hoàn trả số lũy thừa với số thứ nhất là cơ số và số thứ hai là số mũ."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 của X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Trả về arctangent của điểm (X, Y) trong khoảng từ -180 độ đến 180 độ."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://vi.wikipedia.org/wiki/Ph%C3%A9p_c%E1%BB%99ng"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "cộng vào %1 giá trị %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Cộng số đầu vào vào biến \"%1\"."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Hoàn trả các đẳng số thường gặp: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (vô cực)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "giới hạn %1 không dưới %2 không hơn %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Giới hạn số đầu vào để không dưới số thứ nhất và không hơn số thứ hai."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "chia hết cho"; -Blockly.Msg["MATH_IS_EVEN"] = "là số chẵn"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "là số âm"; -Blockly.Msg["MATH_IS_ODD"] = "là số lẻ"; -Blockly.Msg["MATH_IS_POSITIVE"] = "là số dương"; -Blockly.Msg["MATH_IS_PRIME"] = "là số nguyên tố"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Kiểm tra con số xem nó có phải là số chẵn, lẻ, nguyên tố, nguyên, dương, âm, hay xem nó có chia hết cho số đầu vào hay không. Hoàn trả đúng hay sai."; -Blockly.Msg["MATH_IS_WHOLE"] = "là số nguyên"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "số dư của %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Chia số thứ nhất cho số thứ hai rồi hoàn trả số dư từ."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://vi.wikipedia.org/wiki/S%E1%BB%91"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Một con số."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "giá trị trung bình của một danh sách"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "số lớn nhât của một danh sách"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "số trung vị của một danh sách"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "số nhỏ nhất của một danh sách"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "các mode của một danh sách"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "một số bất kỳ của một danh sách"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "độ lệch chuẩn của một danh sách"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "tổng của một danh sách"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Hoàn trả giá trị trung bình từ của danh sách số."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Hoàn trả số lớn nhất trong tất cả các số trong danh sách."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Hoàn trả số trung vị của danh sách số."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Hoàn trả số nhỏ nhất trong tất cả các số trong danh sách."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Hoàn trả các số có mặt nhiều nhất trong danh sách."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Hoàn trả một số bất kỳ từ các số trong danh sách."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Hoàn trả độ lệch chuẩn của danh sách số."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Hoàn trả tổng số của tất cả các số trong danh sách."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "phân số bất kỳ"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Hoàn trả một phân số bất kỳ không nhỏ hơn 0.0 và không lớn hơn 1.0."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "Một số nguyên bất kỳ từ %1 đến %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Hoàn trả một số nguyên bất kỳ lớn hơn hoặc bằng số đầu và nhỏ hơn hoặc bằng số sau."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "làm tròn"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "làm tròn xuống"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "làm tròn lên"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Làm tròn lên hoặc tròn xuống số đầu vào."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://vi.wikipedia.org/wiki/C%C4%83n_b%E1%BA%ADc_hai"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "giá trị tuyệt đối"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "căn bật hai"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Hoàn trả giá trị tuyệt đối của số đầu vào."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Hoàn trả lũy thừa của số e với số mũ đầu vào."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Hoàn trả lôgarit tự nhiên của số đầu vào."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Hoàn trả lôgarit cơ số 10 của số đầu vào."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Đổi dấu của số đầu vào: âm thành dương và dương thành âm, và hoàn trả số mới."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Hoàn trả lũy thừa của số 10 với số mũ đầu vào."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Hoàn trả căn bật hai của số đầu vào."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://vi.wikipedia.org/wiki/H%C3%A0m_l%C6%B0%E1%BB%A3ng_gi%C3%A1c"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Hoàn trả Arccos của một góc (theo độ)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Hoàn trả Arcsin của một góc (theo độ)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Hoàn trả Arctang của một góc (theo độ)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Hoàn trả Cos của một góc (theo độ)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Hoàn trả Sin của một góc (theo độ)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Hoàn trả Tang của một góc (theo độ)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Tạo một giá trị màu sắc..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Tạo một giá trị số..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Tạo một giá trị dạng chuỗi..."; -Blockly.Msg["NEW_VARIABLE"] = "Tạo biến..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Tên của biến mới:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Kiểu giá trị mới:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "cho phép báo cáo"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "với:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Chạy một thủ tục không có giá trị hoàn trả."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Chạy một thủ tục có giá trị hoàn trả."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "với:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Tạo mảnh \"thực hiện %1\""; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Mô tả hàm này..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "làm gì đó"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "thủ tục để"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Một thủ tục không có giá trị hoàn trả."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "hoàn trả"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Một thủ tục có giá trị hoàn trả."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Chú ý: Thủ tục này có lặp lại tên các tham số."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Làm nổi bật thủ tục"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Khi điều kiện đúng thì hoàn trả một giá trị."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Chú ý: Mảnh này chỉ có thể dùng trong một thủ tục."; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "biến:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Thêm một đầu vào cho hàm."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "các tham số"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Thêm, xóa hoặc sắp xếp lại các đầu vào cho hàm này."; -Blockly.Msg["REDO"] = "Làm lại"; -Blockly.Msg["REMOVE_COMMENT"] = "Xóa Chú Giải"; -Blockly.Msg["RENAME_VARIABLE"] = "Thay tên biến..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Thay tên tất cả các biến \"%1\" thành:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "ở cuối %1 thêm văn bản %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Thêm một mảng văn bản vào biến \"%1\"."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "thành chữ thường"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "thành Chữ In Đầu Mỗi Từ"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "thành CHỮ IN HOA"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Hoàn trả văn bản sau khi chuyển đổi chữ in hoa hay thường."; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "lấy ký tự đầu tiên"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "lấy từ phía cuối, ký tự thứ"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "lấy ký tự thứ"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "lấy ký tự cuối cùng"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "lấy ký tự bất kỳ"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "trong văn bản %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Hoàn trả ký tự ở vị trí đặt ra."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "đến %1 trong %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Đếm số lần một đoạn văn bản xuất hiện trong một đoạn văn bản khác."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "thêm vật mới vào văn bản."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "kết nối"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh văn bản này."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "đến từ phía cuối, ký tự thứ"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "đến ký tự thứ"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "đến ký tự cuối cùng"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "trong văn bản"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "lấy từ ký tự đầu tiên"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "lấy từ phía cuối, ký tự thứ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "lấy từ ký tự thứ"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Hoàn trả một mảng ký tự ấn định từ trong văn bản."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "tìm sự có mặt đầu tiên của"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "tìm sự có mặt cuối cùng của"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "trong văn bản %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Hoàn trả vị trí xuất hiện đầu/cuối của văn bản thứ nhất trong văn bản thứ hai. Nếu không tìm thấy thì hoàn trả số %1."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 trống không"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Hoàn trả “đúng nếu văn bản không có ký tự nào."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = ""; -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "tạo văn bản từ"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tạo một văn bản từ các thành phần."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "độ dài của %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Hoàn trả số lượng ký tự (kể cả khoảng trắng) trong văn bản đầu vào."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "in lên màng hình %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "In ra màng hình một văn bản, con số, hay một giá trị đầu vào khác."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Xin người dùng nhập vào một con số."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Xin người dùng nhập vào một văn bản."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Xin người dùng nhập vào con số với dòng hướng dẫn"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Xin người dùng nhập vào văn bản với dòng hướng dẫn"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "thay thế %1 bằng %2 trong %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Thay thế tất cả các lần xuất hiện của văn bản bằng văn bản khác."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "đảo ngược %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Đảo ngược thứ tự của các chữ cái trong văn bản."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/string_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Một ký tự, một từ, hay một dòng."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "cắt các không gian từ cả hai mặt của"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "cắt các không gian từ bên trái của"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "cắt các không gian từ bên phải của"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Hoàn trả bản sao của văn bản sau khi xóa khoảng trắng từ một hoặc hai bên."; -Blockly.Msg["TODAY"] = "Hôm nay"; -Blockly.Msg["UNDO"] = "Hoàn tác"; -Blockly.Msg["UNNAMED_KEY"] = "không tên"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "vật"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Tạo mảnh \"đặt vào %1\""; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Hoàn trả giá trị của."; -Blockly.Msg["VARIABLES_SET"] = "cho %1 bằng %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Tạo mảnh \"lấy %1\""; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Đặt giá trị của biến này thành..."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Một biến có tên '%1' đã tồn tại."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Giá trị '%1' đã tồn tại dưới dạng: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Không gian làm việc Blockly"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Hãy nói gì đó..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Thêm Chú Giải"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Không thể xóa giá trị '%1' vì nó được bao gồm trong định nghĩa của chức năng '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Thay giá trị thành:"; +Blockly.Msg["CLEAN_UP"] = "Sắp xếp lại các khối"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Các khối bị sập có chứa cảnh báo."; +Blockly.Msg["COLLAPSE_ALL"] = "Thu Nhỏ Mọi Mảnh"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Thu Nhỏ Mảnh"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "màu 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "màu 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "tỉ lệ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "pha"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Pha hai màu với nhau theo tỉ lệ (0 - 100)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://vi.wikipedia.org/wiki/M%C3%A0u_s%E1%BA%AFc"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Chọn một màu từ bảng màu."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "màu bất kỳ"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "chọn một màu bất kỳ."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "màu xanh dương"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "màu xanh lá cây"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "màu đỏ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "tạo màu từ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Tạo màu từ ba màu: đỏ, xanh lá cây, xanh dương với số lượng cụ thể. Mỗi số phải có giá trị từ 0 đến 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "thoát"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "sang lần lặp tiếp theo"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Thoát khỏi vòng lặp hiện tại."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Bỏ qua phần còn lại trong vòng lặp này, và sang lần lặp tiếp theo."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Chú ý: Mảnh này chỉ có thế dùng trong các vòng lặp."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "với mỗi thành phần %1 trong danh sách %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Trong một danh sách, lấy từng thành phần, gán vào biến \"%1\", rồi thực hiện một số lệnh."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "đếm theo %1 từ %2 đến %3 mỗi lần thêm %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Cho biến '%1' lấy các giá trị từ số bắt đầu đến số kết thúc, đếm theo khoảng thời gian đã chỉ định và thực hiện các khối được chỉ định."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Thêm một điều kiện vào mảnh nếu."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Cuối cùng, khi không điều kiện nào đúng."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Thêm, bỏ, hoặc đổi thứ tự các mảnh con để tạo cấu trúc mới cho mảnh nếu."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "nếu không"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "nếu không nếu"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "nếu"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Nếu điều kiện đúng, thực hiện các lệnh."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu sai, thực hiện các lệnh sau."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai. Nếu không điều kiện nào đúng, thực hiện các lệnh cuối cùng."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "thực hiện"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "lặp lại %1 lần"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Thực hiện các lệnh vài lần."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "lặp lại cho đến khi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "lặp lại trong khi"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Miễn là điều kiện còn sai, thì thực hiện các lệnh. Khi điều kiện đúng thì ngưng."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Miễn là điều kiện còn đúng, thì thực hiện các lệnh."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Xóa hết %1 mảnh?"; +Blockly.Msg["DELETE_BLOCK"] = "Xóa Mảnh Này"; +Blockly.Msg["DELETE_VARIABLE"] = "Xóa giá trị '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Xóa %1 lần dùng của giá trị '%2'?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Xóa %1 Mảnh"; +Blockly.Msg["DIALOG_CANCEL"] = "Hủy"; +Blockly.Msg["DIALOG_OK"] = "OK"; +Blockly.Msg["DISABLE_BLOCK"] = "Ngưng Tác Dụng"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Tạo Bản Sao"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Bình luận trùng"; +Blockly.Msg["ENABLE_BLOCK"] = "Phục Hồi Tác Dụng"; +Blockly.Msg["EXPAND_ALL"] = "Mở Lớn Mọi Mảnh"; +Blockly.Msg["EXPAND_BLOCK"] = "Mở Lớn Mảnh"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Chỗ Gắn Bên Ngoài"; +Blockly.Msg["HELP"] = "Trợ Giúp"; +Blockly.Msg["INLINE_INPUTS"] = "Chỗ Gắn Cùng Dòng"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "tạo danh sách trống"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Hoàn trả một danh sách, với độ dài 0, không có thành tố nào cả"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "danh sách"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh danh sách này."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "tạo danh sách gồm"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Thêm vật vào danh sách."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Tạo một danh sách bao gồm nhiều vậts, với một số lượng bất kỳ."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "đầu tiên"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "(đếm từ cuối) thứ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "thứ"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "lấy thành tố"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "lấy và xóa thành tố"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "cuối cùng"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "bất kỳ"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "xóa thành tố"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Hoàn trả thành tố đầu tiên trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Hoàn trả thành tố trong danh sách ở vị trí ấn định."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Hoàn trả thành tố cuối cùng trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Hoàn trả một thành tố bất kỳ trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Hoàn trả và xóa thành tố đầu tiên trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Hoàn trả và xóa thành tố trong danh sách ở vị trí ấn định."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Hoàn trả và xóa thành tố cuối cùng trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Hoàn trả và xóa mộtthành tố bất kỳ trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Xóa thành tố đầu tiên trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Xóa thành tố trong danh sách ở vị trí ấn định."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Xóa thành tố cuối cùng trong danh sách."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Xóa thành tố bất kỳ trong danh sách."; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "đến (đếm từ cuối) thứ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "đến thứ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "đến cuối cùng"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "lấy một danh sách con từ đầu tiên"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "lấy một danh sách con từ (đếm từ cuối) từ vị trí thứ"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "lấy một danh sách con từ vị trí thứ"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Lấy một mảng của danh sách này để tạo danh sách con."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 là thành tố cuối cùng."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 là thành tố đầu tiên."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "tìm sự có mặt đầu tiên của vật"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "tìm sự có mặt cuối cùng của vật"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Hoàn trả vị trí xuất hiện đầu tiên/cuối cùng của vật trong danh sách. Nếu không tìm thấy thì hoàn trả số %1."; +Blockly.Msg["LISTS_INLIST"] = "trong dánh sách"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 trống rỗng"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Hoàn trả “đúng\" nếu danh sách không có thành tử nào."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "độ dài của %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Hoàn trả độ dài của một danh sách."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "tạo danh sách gồm một vật %1 lặp lại %2 lần"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Tạo danh sách gồm một số lượng vật nhất định với mỗi vật đều giống nhau."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "đảo ngược %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Đảo ngược bản sao chép của một danh sách."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "giá trị"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "chèn vào vị trí"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "đặt"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Chèn vật vào đầu danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Chèn vật vào danh sách theo vị trí ấn định."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Gắn thêm vật vào cuối danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Gắn chèn vật vào danh sách ở vị trí ngẫu nhiên."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Đặt giá trị của thành tố đầu tiên trong danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Đặt giá trị của thành tố ở vị trí ấn định trong một danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Đặt giá trị của thành tố cuối cùng trong danh sách."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Đặt giá trị của thành tố ngẫu nhiên trong danh sách."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "tăng dần"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "giảm dần"; +Blockly.Msg["LISTS_SORT_TITLE"] = "sắp xếp %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sắp xếp một bản sao của một danh sách."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "chữ cái, không phân biệt hoa/thường"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "số"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "chữ cái"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "tạo danh sách từ văn bản"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "tạo văn bản từ danh sách"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Liên kết một danh sách các văn bản vào một văn bản, cách nhau bằng dấu phân cách."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Tách văn bản thành một danh sách các văn bản nhỏ, ngắt bởi các ký tự phân cách."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "với ký tự phân cách"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "sai"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Hoàn trả \"đúng\" hoặc \"sai\"."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "đúng"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://vi.wikipedia.org/wiki/B%E1%BA%A5t_%C4%91%E1%BA%B3ng_th%E1%BB%A9c"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào bằng nhau."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn đầu vào thứ hai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn hoặc bằng đầu vào thứ hai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn đầu vào thứ hai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn hoặc bằng đầu vào thứ hai."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào không bằng nhau."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "không %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Hoàn trả \"đúng\" (true) nếu đầu vào sai. Hoàn trả \"sai\" (false) nếu đầu vào đúng."; +Blockly.Msg["LOGIC_NULL"] = "trống không"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Hoàn trả trống không."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "và"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "hoặc"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Hoàn trả \"đúng\" (true) nếu cả hai đầu vào đều đúng."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Hoàn trả \"đúng\" (true) nếu ít nhất một trong hai đầu vào đúng."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "kiểm tra"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "nếu sai"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "nếu đúng"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Kiểm tra điều kiện. Nếu điều kiện đúng, hoàn trả giá trị từ mệnh đề \"nếu đúng\" nếu không đúng, hoàn trả giá trị từ mệnh đề \"nếu sai\"."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://vi.wikipedia.org/wiki/S%E1%BB%91_h%E1%BB%8Dc"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Hoàn trả tổng của hai con số."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Hoàn trả thương của hai con số."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Hoàn trả hiệu của hai con số."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Hoàn trả tích của hai con số."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Hoàn trả số lũy thừa với số thứ nhất là cơ số và số thứ hai là số mũ."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 của X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Trả về arctangent của điểm (X, Y) trong khoảng từ -180 độ đến 180 độ."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://vi.wikipedia.org/wiki/Ph%C3%A9p_c%E1%BB%99ng"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "cộng vào %1 giá trị %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Cộng số đầu vào vào biến \"%1\"."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Hoàn trả các đẳng số thường gặp: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (vô cực)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "giới hạn %1 không dưới %2 không hơn %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Giới hạn số đầu vào để không dưới số thứ nhất và không hơn số thứ hai."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "chia hết cho"; +Blockly.Msg["MATH_IS_EVEN"] = "là số chẵn"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "là số âm"; +Blockly.Msg["MATH_IS_ODD"] = "là số lẻ"; +Blockly.Msg["MATH_IS_POSITIVE"] = "là số dương"; +Blockly.Msg["MATH_IS_PRIME"] = "là số nguyên tố"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Kiểm tra con số xem nó có phải là số chẵn, lẻ, nguyên tố, nguyên, dương, âm, hay xem nó có chia hết cho số đầu vào hay không. Hoàn trả đúng hay sai."; +Blockly.Msg["MATH_IS_WHOLE"] = "là số nguyên"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "số dư của %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Chia số thứ nhất cho số thứ hai rồi hoàn trả số dư từ."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://vi.wikipedia.org/wiki/S%E1%BB%91"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Một con số."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "giá trị trung bình của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "số lớn nhât của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "số trung vị của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "số nhỏ nhất của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "các mode của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "một số bất kỳ của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "độ lệch chuẩn của một danh sách"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "tổng của một danh sách"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Hoàn trả giá trị trung bình từ của danh sách số."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Hoàn trả số lớn nhất trong tất cả các số trong danh sách."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Hoàn trả số trung vị của danh sách số."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Hoàn trả số nhỏ nhất trong tất cả các số trong danh sách."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Hoàn trả các số có mặt nhiều nhất trong danh sách."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Hoàn trả một số bất kỳ từ các số trong danh sách."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Hoàn trả độ lệch chuẩn của danh sách số."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Hoàn trả tổng số của tất cả các số trong danh sách."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "phân số bất kỳ"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Hoàn trả một phân số bất kỳ không nhỏ hơn 0.0 và không lớn hơn 1.0."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "Một số nguyên bất kỳ từ %1 đến %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Hoàn trả một số nguyên bất kỳ lớn hơn hoặc bằng số đầu và nhỏ hơn hoặc bằng số sau."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "làm tròn"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "làm tròn xuống"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "làm tròn lên"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Làm tròn lên hoặc tròn xuống số đầu vào."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://vi.wikipedia.org/wiki/C%C4%83n_b%E1%BA%ADc_hai"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "giá trị tuyệt đối"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "căn bật hai"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Hoàn trả giá trị tuyệt đối của số đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Hoàn trả lũy thừa của số e với số mũ đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Hoàn trả lôgarit tự nhiên của số đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Hoàn trả lôgarit cơ số 10 của số đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Đổi dấu của số đầu vào: âm thành dương và dương thành âm, và hoàn trả số mới."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Hoàn trả lũy thừa của số 10 với số mũ đầu vào."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Hoàn trả căn bật hai của số đầu vào."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://vi.wikipedia.org/wiki/H%C3%A0m_l%C6%B0%E1%BB%A3ng_gi%C3%A1c"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Hoàn trả Arccos của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Hoàn trả Arcsin của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Hoàn trả Arctang của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Hoàn trả Cos của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Hoàn trả Sin của một góc (theo độ)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Hoàn trả Tang của một góc (theo độ)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Tạo một giá trị màu sắc..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Tạo một giá trị số..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Tạo một giá trị dạng chuỗi..."; +Blockly.Msg["NEW_VARIABLE"] = "Tạo biến..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Tên của biến mới:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Kiểu giá trị mới:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "cho phép báo cáo"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "với:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Chạy một thủ tục không có giá trị hoàn trả."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Chạy một thủ tục có giá trị hoàn trả."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "với:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Tạo mảnh \"thực hiện %1\""; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Mô tả hàm này..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "làm gì đó"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "thủ tục để"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Một thủ tục không có giá trị hoàn trả."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "hoàn trả"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Một thủ tục có giá trị hoàn trả."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Chú ý: Thủ tục này có lặp lại tên các tham số."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Làm nổi bật thủ tục"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Khi điều kiện đúng thì hoàn trả một giá trị."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Chú ý: Mảnh này chỉ có thể dùng trong một thủ tục."; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "biến:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Thêm một đầu vào cho hàm."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "các tham số"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Thêm, xóa hoặc sắp xếp lại các đầu vào cho hàm này."; +Blockly.Msg["REDO"] = "Làm lại"; +Blockly.Msg["REMOVE_COMMENT"] = "Xóa Chú Giải"; +Blockly.Msg["RENAME_VARIABLE"] = "Thay tên biến..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Thay tên tất cả các biến \"%1\" thành:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "ở cuối %1 thêm văn bản %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Thêm một mảng văn bản vào biến \"%1\"."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "thành chữ thường"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "thành Chữ In Đầu Mỗi Từ"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "thành CHỮ IN HOA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Hoàn trả văn bản sau khi chuyển đổi chữ in hoa hay thường."; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "lấy ký tự đầu tiên"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "lấy từ phía cuối, ký tự thứ"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "lấy ký tự thứ"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "lấy ký tự cuối cùng"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "lấy ký tự bất kỳ"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "trong văn bản %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Hoàn trả ký tự ở vị trí đặt ra."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "đến %1 trong %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Đếm số lần một đoạn văn bản xuất hiện trong một đoạn văn bản khác."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "thêm vật mới vào văn bản."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "kết nối"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh văn bản này."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "đến từ phía cuối, ký tự thứ"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "đến ký tự thứ"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "đến ký tự cuối cùng"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "trong văn bản"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "lấy từ ký tự đầu tiên"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "lấy từ phía cuối, ký tự thứ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "lấy từ ký tự thứ"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Hoàn trả một mảng ký tự ấn định từ trong văn bản."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "tìm sự có mặt đầu tiên của"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "tìm sự có mặt cuối cùng của"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "trong văn bản %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Hoàn trả vị trí xuất hiện đầu/cuối của văn bản thứ nhất trong văn bản thứ hai. Nếu không tìm thấy thì hoàn trả số %1."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 trống không"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Hoàn trả “đúng nếu văn bản không có ký tự nào."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = ""; +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "tạo văn bản từ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Tạo một văn bản từ các thành phần."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "độ dài của %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Hoàn trả số lượng ký tự (kể cả khoảng trắng) trong văn bản đầu vào."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "in lên màng hình %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "In ra màng hình một văn bản, con số, hay một giá trị đầu vào khác."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Xin người dùng nhập vào một con số."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Xin người dùng nhập vào một văn bản."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "Xin người dùng nhập vào con số với dòng hướng dẫn"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "Xin người dùng nhập vào văn bản với dòng hướng dẫn"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "thay thế %1 bằng %2 trong %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Thay thế tất cả các lần xuất hiện của văn bản bằng văn bản khác."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "đảo ngược %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Đảo ngược thứ tự của các chữ cái trong văn bản."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/string_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Một ký tự, một từ, hay một dòng."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "cắt các không gian từ cả hai mặt của"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "cắt các không gian từ bên trái của"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "cắt các không gian từ bên phải của"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Hoàn trả bản sao của văn bản sau khi xóa khoảng trắng từ một hoặc hai bên."; +Blockly.Msg["TODAY"] = "Hôm nay"; +Blockly.Msg["UNDO"] = "Hoàn tác"; +Blockly.Msg["UNNAMED_KEY"] = "không tên"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "vật"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Tạo mảnh \"đặt vào %1\""; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Hoàn trả giá trị của."; +Blockly.Msg["VARIABLES_SET"] = "cho %1 bằng %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Tạo mảnh \"lấy %1\""; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Đặt giá trị của biến này thành..."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Một biến có tên '%1' đã tồn tại."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Giá trị '%1' đã tồn tại dưới dạng: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Không gian làm việc Blockly"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Hãy nói gì đó..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/xmf.js b/msg/js/xmf.js index d4095c9b402..eab927ead55 100644 --- a/msg/js/xmf.js +++ b/msg/js/xmf.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "კომენტარიშ გეძინა"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "შანულობაშ თირუა:"; -Blockly.Msg["CLEAN_UP"] = "ბლოკეფიშ გოუქვაფა"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "ბლოკეფიშ ინოკიჩუა"; -Blockly.Msg["COLLAPSE_BLOCK"] = "ბლოკიშ ტყობინაფა"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ფერი 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ფერი 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ფერი 1-შ წილი"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ესვარუა"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ჟირ ფერს ართიანს უწყორუანს მოჩამილი ზჷმათ (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://xmf.wikipedia.org/wiki/ფერი"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "გეგშაგორით ფერი პალიტრაშე."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "შემთხვევითი ფერი"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ფერიშ შემთხვევითო გიშაგორუა."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "ლენი"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "წვანე"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ჭითა"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ფერიː"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "აკოქიმინით ფერი მოჩამილი ჭითა, წვანე დო ლენი ფერეფიშ პროპორციეფით. არძა შანულობა 0 დო 100 შქას ოკო რდას."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ციკლშე გიშულა"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ციკლიშ გეჸვენჯი ბიჯგშა გინულა"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "თე ციკლიშ მეჭყორიდუა."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ხვილაფა: თე ბლოკიშ გჷმორინაფა ხვალე ციკლიშ დინოხოლე შილებე."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "მათირეფონი '%1'-ის მითმურჩქინანს შანულობას მოჩამილი ბიჯგეფით დუდშე ბოლოშა დო მეწურაფილ ზოჯუეფს არსულენს."; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "შხვანერო"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "შხვანერო თუ"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "თუ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "პიჯალეფი ნანდული ქორე-და, ზოჯუეფს არსულენს."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/ციკლი_(პროგრამირაფა)"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "რსულება"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 შა გომაჟირაფა"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "მუსხირენ ზოჯუაშ მუსხირენშა რსულება."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "გომაჟირაფა, სოიშახ ვა"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "გომაჟირაფა, სოიშახ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "სოიშახ შანულობა ტყურა რე, ზოჯუეფიშ რსულება"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "სოიშახ შანულობა ნანდული რე, ზოჯუეფიშ რსულება."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "არძა (%1) ბლოკი ბლასათო?"; -Blockly.Msg["DELETE_BLOCK"] = "ბლოკიშ ლასუა"; -Blockly.Msg["DELETE_VARIABLE"] = "'%1' მათირეფონიშ ლასუა"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' მათირეფონიშ გჷმორინაფა %1 ბლასათო?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ბლოკიშ ლასუა"; -Blockly.Msg["DIALOG_CANCEL"] = "გოუქვაფა"; -Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated -Blockly.Msg["DISABLE_BLOCK"] = "ბლოკიშ თიშუა"; -Blockly.Msg["DUPLICATE_BLOCK"] = "კოპირაფა"; -Blockly.Msg["DUPLICATE_COMMENT"] = "კომენტარიშ დუბლირაფა"; -Blockly.Msg["ENABLE_BLOCK"] = "ბლოკიშ ჩართება"; -Blockly.Msg["EXPAND_ALL"] = "ბლოკეფიშ გჷმოფაჩუა"; -Blockly.Msg["EXPAND_BLOCK"] = "ბლოკიშ გჷმოფაჩუა"; -Blockly.Msg["EXTERNAL_INPUTS"] = "გალეშე დინოხუნაფა"; -Blockly.Msg["HELP"] = "მოხვარა"; -Blockly.Msg["INLINE_INPUTS"] = "დინოხოლე დინოხუნაფა"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ცარიელი რე"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ტყურა"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ნანდული"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "მუთუნ ვარი"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "დჷთმართინუანს მუთუნ ვარს."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "დო"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ვარდა"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://xmf.wikipedia.org/wiki/არითმეტიკა"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "ჭკობა რე"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "უარყოფითი რე"; -Blockly.Msg["MATH_IS_ODD"] = "ცანდი რე"; -Blockly.Msg["MATH_IS_POSITIVE"] = "დადებითი რე"; -Blockly.Msg["MATH_IS_PRIME"] = "უკაჭული რე"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "ნთელი რე"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://xmf.wikipedia.org/wiki/რიცხუ"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "რიცხუ."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "მოდული"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "კვადრატული ჯინჯი"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "აკოქიმინი მათირეფონი..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ახალი მათირეფონიშ ჯოხო:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ოშხონაფა"; -Blockly.Msg["REMOVE_COMMENT"] = "კომენტარიშ გოუქვაფა"; -Blockly.Msg["RENAME_VARIABLE"] = "ჯოხოშ თირუა მათირეფონი…"; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "არძა მათირეფონი '%1' ჯოხოშ თირუა -შა:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "ამდღა"; -Blockly.Msg["UNDO"] = "გოუქვაფა"; -Blockly.Msg["UNNAMED_KEY"] = "ჯოხოშ უმუშო"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ელემენტი"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "მათირეფონი ჯოხოთი '%1' უკვე არსენებს."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "კომენტარიშ გეძინა"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "შანულობაშ თირუა:"; +Blockly.Msg["CLEAN_UP"] = "ბლოკეფიშ გოუქვაფა"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "ბლოკეფიშ ინოკიჩუა"; +Blockly.Msg["COLLAPSE_BLOCK"] = "ბლოკიშ ტყობინაფა"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ფერი 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ფერი 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ფერი 1-შ წილი"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ესვარუა"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "ჟირ ფერს ართიანს უწყორუანს მოჩამილი ზჷმათ (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://xmf.wikipedia.org/wiki/ფერი"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "გეგშაგორით ფერი პალიტრაშე."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "შემთხვევითი ფერი"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "ფერიშ შემთხვევითო გიშაგორუა."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "ლენი"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "წვანე"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ჭითა"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ფერიː"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "აკოქიმინით ფერი მოჩამილი ჭითა, წვანე დო ლენი ფერეფიშ პროპორციეფით. არძა შანულობა 0 დო 100 შქას ოკო რდას."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ციკლშე გიშულა"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "ციკლიშ გეჸვენჯი ბიჯგშა გინულა"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "თე ციკლიშ მეჭყორიდუა."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "ხვილაფა: თე ბლოკიშ გჷმორინაფა ხვალე ციკლიშ დინოხოლე შილებე."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "მათირეფონი '%1'-ის მითმურჩქინანს შანულობას მოჩამილი ბიჯგეფით დუდშე ბოლოშა დო მეწურაფილ ზოჯუეფს არსულენს."; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "შხვანერო"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "შხვანერო თუ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "თუ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "პიჯალეფი ნანდული ქორე-და, ზოჯუეფს არსულენს."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://ru.wikipedia.org/wiki/ციკლი_(პროგრამირაფა)"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "რსულება"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "%1 შა გომაჟირაფა"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "მუსხირენ ზოჯუაშ მუსხირენშა რსულება."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "გომაჟირაფა, სოიშახ ვა"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "გომაჟირაფა, სოიშახ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "სოიშახ შანულობა ტყურა რე, ზოჯუეფიშ რსულება"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "სოიშახ შანულობა ნანდული რე, ზოჯუეფიშ რსულება."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "არძა (%1) ბლოკი ბლასათო?"; +Blockly.Msg["DELETE_BLOCK"] = "ბლოკიშ ლასუა"; +Blockly.Msg["DELETE_VARIABLE"] = "'%1' მათირეფონიშ ლასუა"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "'%2' მათირეფონიშ გჷმორინაფა %1 ბლასათო?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "%1 ბლოკიშ ლასუა"; +Blockly.Msg["DIALOG_CANCEL"] = "გოუქვაფა"; +Blockly.Msg["DIALOG_OK"] = "OK"; // untranslated +Blockly.Msg["DISABLE_BLOCK"] = "ბლოკიშ თიშუა"; +Blockly.Msg["DUPLICATE_BLOCK"] = "კოპირაფა"; +Blockly.Msg["DUPLICATE_COMMENT"] = "კომენტარიშ დუბლირაფა"; +Blockly.Msg["ENABLE_BLOCK"] = "ბლოკიშ ჩართება"; +Blockly.Msg["EXPAND_ALL"] = "ბლოკეფიშ გჷმოფაჩუა"; +Blockly.Msg["EXPAND_BLOCK"] = "ბლოკიშ გჷმოფაჩუა"; +Blockly.Msg["EXTERNAL_INPUTS"] = "გალეშე დინოხუნაფა"; +Blockly.Msg["HELP"] = "მოხვარა"; +Blockly.Msg["INLINE_INPUTS"] = "დინოხოლე დინოხუნაფა"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 ცარიელი რე"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ტყურა"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ნანდული"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "მუთუნ ვარი"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "დჷთმართინუანს მუთუნ ვარს."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "დო"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ვარდა"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://xmf.wikipedia.org/wiki/არითმეტიკა"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "ჭკობა რე"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "უარყოფითი რე"; +Blockly.Msg["MATH_IS_ODD"] = "ცანდი რე"; +Blockly.Msg["MATH_IS_POSITIVE"] = "დადებითი რე"; +Blockly.Msg["MATH_IS_PRIME"] = "უკაჭული რე"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "ნთელი რე"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://xmf.wikipedia.org/wiki/რიცხუ"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "რიცხუ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "მოდული"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "კვადრატული ჯინჯი"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "აკოქიმინი მათირეფონი..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ახალი მათირეფონიშ ჯოხო:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ოშხონაფა"; +Blockly.Msg["REMOVE_COMMENT"] = "კომენტარიშ გოუქვაფა"; +Blockly.Msg["RENAME_VARIABLE"] = "ჯოხოშ თირუა მათირეფონი…"; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "არძა მათირეფონი '%1' ჯოხოშ თირუა -შა:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ამდღა"; +Blockly.Msg["UNDO"] = "გოუქვაფა"; +Blockly.Msg["UNNAMED_KEY"] = "ჯოხოშ უმუშო"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ელემენტი"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "მათირეფონი ჯოხოთი '%1' უკვე არსენებს."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/yo.js b/msg/js/yo.js index 7feb5fe4f69..4a1a6ecb74b 100644 --- a/msg/js/yo.js +++ b/msg/js/yo.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Ṣe afikun ọrọ iwoye"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "E ko lee paa Oniruuru rẹ ' %1' nitori wipe o je ara itumọ isise eto yi '%2'"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ṣe ayipada iye:"; -Blockly.Msg["CLEAN_UP"] = "Nu Bulọọku kuro"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Bi awọn Bulọọku ṣubu"; -Blockly.Msg["COLLAPSE_BLOCK"] = "Bi Bulọọku ṣubu"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "awọ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "awọ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ipin"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "apapọ"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Da awo meji papo pelu ipin (0.0 - 1.0)."; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Yan awọ kan lati inu patako awọ."; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "awọ àrìnàkò"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Yan awọ kan ni ọna àrìnàkò."; -Blockly.Msg["COLOUR_RGB_BLUE"] = "alawọ omi aro"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "alawọ ewe"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "awọ pupu"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "awọ pelu:"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ṣe idasile awọ kan pelu iye awọ pupu, alawọ ewe, ati alawọ omi aro. Gbogbo iye re gbọdọ je laarin 0 and 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ya kuro ninu lupu"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "beere pelu aṣiṣe lupu"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ya kuro ninu akojọ lupu."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ṣe afoda awon lupu to ku yii, kii o si tesiwaju pelu awon aṣiṣe lupu."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Ikilo: Bulọọku yii se lo ninu aṣiṣe lupu yii nikan."; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "fun nigba kọọkan %1 ni akojọ %2"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Fun nkan kọọkan ninu akojọ kan, ṣe eto oriṢiriṢi '%1' si nkan naa, ki o si tun koodu naa ṣe."; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "iyipada %1 lati %2 si %3 fifi kun %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ni awon oriṣiriṣi '%1' ṣe imulo lori iye kọọkan lati ori nọmba tio beere titi de eyin to pari nọmba, kaa ni pase aarin kan pato. Tun koodu yi se nigba kọọkan:"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ṣe afikun si ipo yii bi bulọọku."; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ṣe afikun ipari, mu-gbogbo ipo si bulọọku."; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ṣe afikun, se ayọkuro, tabi se a tun beere abala yii lati se a tun gbejade bulọọku yii."; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "bibẹẹkọ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "bibẹẹkọ bi"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "bi"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Bi iye yii ba je otito, lẹyinna ṣe awọn alaye."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Bi iye yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, ṣe alaye akọkọ bulọọku keji."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji."; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji. Bi eyikeyi iye naa ko ba je otito, ṣe alaye akọkọ bulọọku ti o gbeyin."; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ṣe"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Iye igba %1 ti tun ṣe"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Ṣe awon alaye ni igba pupo."; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "tun ṣe titi ti"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "tun ṣe nigbati"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Nigbati awon iye kan ba iro, tun awon koodu kan ṣe."; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Nigbati iye kan ba je otito, tun awon koodu kan ṣe."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Paa gbogbo %1 bulọọku rẹ?"; -Blockly.Msg["DELETE_BLOCK"] = "Paa Bulọọku rẹ"; -Blockly.Msg["DELETE_VARIABLE"] = "Paa awon '%1' Oniruuru rẹ"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Paa %1 lilo '%2' oniruuru rẹ?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "Paa %1 awọn Bulọọku rẹ"; -Blockly.Msg["DIALOG_CANCEL"] = "Fagilé"; -Blockly.Msg["DIALOG_OK"] = "O DARA"; -Blockly.Msg["DISABLE_BLOCK"] = "Sọ Bulọọku di alaiṣiṣẹ"; -Blockly.Msg["DUPLICATE_BLOCK"] = "Ṣe ẹẹda"; -Blockly.Msg["DUPLICATE_COMMENT"] = "Ṣe ẹẹda afikun ọrọ iwoye"; -Blockly.Msg["ENABLE_BLOCK"] = "Muu Bulọọku ṣiṣẹ"; -Blockly.Msg["EXPAND_ALL"] = "Fẹ awọn Bulọọku"; -Blockly.Msg["EXPAND_BLOCK"] = "Fẹ Bulọọku"; -Blockly.Msg["EXTERNAL_INPUTS"] = "Awon afikun okeere"; -Blockly.Msg["HELP"] = "Iranwọ"; -Blockly.Msg["INLINE_INPUTS"] = "Afiku tẹle n tẹle"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Ṣẹda akojọ aṣayan tio ṣofo"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Da akojọ pada, ti gigun 0, ko ni awon akosile alaye"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "akojọ"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Fikun, yọ, tabi yọ, tunṣe awọn apakan lati akojọ bulooku yii."; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ṣẹda akojọ"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Fi nkan kun akojọ."; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ṣẹda akojọ pẹlu nọmba eyikeyi ti awọn akojo."; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "àkọ́kọ́"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# lati opin"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "gba"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "gba ati yọ"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "tógbẹ̀yìn"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "àrìnàkò"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "yọ"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Da akojọ akọkọ pada."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Da akojọ ti o kẹhin pada."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Da ohun àrìnàkò kan pada ninu akojọ"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Yọ ki o si da akojọ kuro ni akọkọ pada."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Yọ ki o si da akojọ ti o kẹhin pada"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Yọ ki o si da akojọ ti o kẹhin àrìnàkò pada"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Da akojọ akọkọ pada."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Da akojọ ti o kẹhin pada."; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Da ohun àrìnàkò kan pada ninu akojọ"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "sii # lati opin"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "sii #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "sii opin"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "gba ipin -akojọ lati akọkọ"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "gba ipin -akojọ lati # lati opin"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "gba ipin -akojọ lati #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ṣẹda ẹda ti apa kan ti o wa ninu akojọ."; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 jẹ ohun ti o kẹhin."; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 jẹ ohun akọkọ."; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "wa awon nkan akọkọ ti o sele"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "wa iṣẹlẹ ti o kẹhin ti akojọ"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri."; -Blockly.Msg["LISTS_INLIST"] = "ni akojọ"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je ofo"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Da otitọ pada nigbati akojọ ba ṣofo."; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "gigun ti %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Da gigun ti akojo pada."; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "ṣẹda akojọ pẹlu nkan %1 tun ṣe %2 igba"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ṣẹda akojọ kan ti o wa fun iye tun nọmba kan pato ti akoko ti a ti yan."; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "Ṣe iyipada %1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Ṣe iyipada ẹda ti akojọ kan."; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "bii"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "fi sii ni"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "ṣeto"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Fi ohun kan sii ni ibẹrẹ akojọ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Fi ohun kan sii ipo kan pato ti a ti yan ni akojọ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Fi ohun kan kun si opin akojọ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Fi ohun kan kun si àrìnàkò akojọ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Fi ohun kan sii ni ibẹrẹ akojọ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ṣeto ohun akọkọ sii ipo kan pato ti a ti yan ni akojọ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Fi ohun kan kun si opin akojọ."; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Fi ohun kan kun si àrìnàkò akojọ."; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "si oke"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "si isalẹ"; -Blockly.Msg["LISTS_SORT_TITLE"] = "to %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "To ẹda akojọ lẹsẹẹsẹ."; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "awon alfabeti, fojufo irufe"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "awọn nọmba"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "awon alfabeti"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ṣe akojọ lati inu ọrọ"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ṣe ọrọ lati akojọ"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Darapọ mọ akojọ awọn ọrọ sinu ọrọ kan, ti a pin nipase delimita."; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Pin ọrọ sinu akojọ awọn ọrọ kan, fọ ni dẹlimita kọọkan."; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "pẹlu dẹlimita"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "irọ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Da pada bi o je otito tabi iro."; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "otitọ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Da otito pada b iafikun mejeji ba dogba bakanna."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Da otito pada bi afikun akooko ba tobi ju afiku keji lo."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Da otito pada bi afikun akooko ba tobi ju tabi dogba pelu afiku keji lo."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Da otito pada bi afikun akooko ba kere ju afiku keji lo."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Da otito pada bi afikun akooko ba kere ju tabi dogba pelu afiku keji lo."; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Da otito pada bi afikun mejeji ko ba dogba bakanna."; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "kii ṣe %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Da otitọ pada bi afikun ba je irọ. Da iro pada bi afikun ba je otito."; -Blockly.Msg["LOGIC_NULL"] = "ofo"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Da ofo pada."; -Blockly.Msg["LOGIC_OPERATION_AND"] = "ati"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "tabi"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Da otito pada bi afikun mejeji ba je otito."; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Da otitọ pada bi o kere ju afikun kan ba je otito."; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "idanwo"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "bi irọ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "bi otitọ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Ṣe ayewo ipo naa ni 'idanwo'. Bi ipo nab a je otito, Da pada 'bi otito' iye; bibẹẹkọ da pada 'bi iro' iye."; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://yo.wikipedia.org/wiki/Ìṣírò"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Da apapo awọn nọmba meji pada."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Da adarọ iye ti awọn nọmba meji pada."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Da iyatọ awọn nọmba meji naa pada."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Da abajade awọn nọmba meji naa pada."; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Da nọmba akọkọ ti a gbe si agbara ti nọmba keji pada."; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Da ojuami arctangent pada (X, Y) ni awon digiri lati -180 si 180."; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "iyipada %1 nipasẹ %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Se afiku si nọmba orisirisi '%1'."; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Da ọkan ninu awọn aiyipada ti o wọpọ pada: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (ailopin)."; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "atokọ %1 kukuru %2 giga %3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ṣe atokọ nọmba laarin awọn nọmba kukuru ati giga. (ini afikun)."; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je sisee pin pẹlu"; -Blockly.Msg["MATH_IS_EVEN"] = "je se e pin"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "je ai dara"; -Blockly.Msg["MATH_IS_ODD"] = "je ai se e pin"; -Blockly.Msg["MATH_IS_POSITIVE"] = "je di dara"; -Blockly.Msg["MATH_IS_PRIME"] = "je nọ́mbà àkọ́kọ́"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "Ṣe ayẹwo boya nọmba jẹ eyi to se pin, ai se pin, akori, odidi, ti o dara, ti ko dara, tabi ti o ba se e pin pelu nọmba kan. Pada otitọ tabi irọ."; -Blockly.Msg["MATH_IS_WHOLE"] = "je odidi"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "iyokù %1 ÷ %2"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Da iyokù lati pinpin awọn nọmba meji pada."; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://yo.wikipedia.org/wiki/Nọ́mbà"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Nọ́mbà kan."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "idameji akojọ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "akojọ ti o pọ ju"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "agbedemeji akojọ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "akojọ ti o kere ju"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "awọn ipo ti akojọ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "àrìnàkò nkan ti akojọ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "iṣiro deede ti akojọ"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "apao akojọ"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Da idameji pada (ipin isiro) ti awọn nọmba iye inu akojọ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Da nọmba ti o tobi julọ ninu akojọ pada."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Da agbedemeji nọmba inu akojọ pada."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Da nọmba ti o kere julọ ninu akojọ pada."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Da akojọ ti eyi ti o wọpọ julọ ninu akojọ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Da àrìnàkò ida ipilẹ nkan lati inu akojọ."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Da iṣiro deede ti akojọ pada."; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Da apapo gbogbo awọn nọmba inu akojọ pada."; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "oniruru ipin"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Da àrìnàkò ida pada laarin 0.0 (ini afikun) ati 1.0 (iyasọtọ)."; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "oniruru abala lati %1 si %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Da àrìnàkò abala laarin awon opin pato meji pada, ini afikun."; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "pa ju de"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "pa ju de si isalẹ"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "pa ju de soke"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Pa oju nọmba de soke tabi si isalẹ."; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://yo.wikipedia.org/wiki/Gb%C3%B2ngb%C3%B2_al%C3%A1gb%C3%A1ram%C3%A9j%C3%AC"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "patapata"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Ipilẹ onihamẹrin"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Da iye patapata ti nọmba kan pada."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Da e pada si agbara ti nọmba kan."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Da lọgaridimu adayeba ti nọmba kan pada."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Da ipilẹ 10 lọgaridimu nọmba kan pada."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Da ilodisi ti nọmba kan pada"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Da 10 pada si agbara nọmba kan."; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Da Ipilẹ onihamẹrin nọmba kan pada."; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Da arccosine ti digiri pada."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Da arcsine ti digiri pada."; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Da arctangent ti digiri pada."; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Da cosine ti digiri pada (kii ṣe Radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Da sine ti digiri pada (kii ṣe Radian)."; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Da tangent ti digiri pada (kii ṣe Radian)."; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ṣe idasile awọ oniruuru..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ṣe idasile nọ́mbà oniruru..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Ṣe idasile asopọ oniruru..."; -Blockly.Msg["NEW_VARIABLE"] = "Ṣe idasile oniruuru..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "Orukọ oniruuru tuntun:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Iru oniruuru tuntun:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "gba alaye laaye"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "pẹlu:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ṣe ṣalaye-iṣẹ ti olumulo '%1'."; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ṣe ṣalaye-iṣẹ ti olumulo '%1' kii o sii lo iṣagbejade rẹ."; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "pẹlu:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ṣe idasile '%1'"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Ṣe apejuwe iṣẹ yii..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Ṣe awon alaye ni igba pupo."; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "sii"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ṣẹda iṣẹ kan lai si iṣagbejade."; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "tun tẹ"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ṣẹda iṣẹ pẹlu iṣagbejade kan."; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ikilo: Isẹ yii ni awọn ẹda odiwọn."; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Ṣafihan iṣẹ isọtunmọ"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ti iye ba jẹ otitọ, lẹhinna da iye keji pada."; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Ikilo: Bulọọki yii le ṣee lo nikan laarin itumọ iṣẹ kan"; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "igbewọle orukọ:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ṣe afikun kan sii igbewọle si iṣẹ yii."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "igbewọle"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Fikun, yọ kuro, tabi tun beere awọn igbewọle si iṣẹ yii."; -Blockly.Msg["REDO"] = "Tun ṣe"; -Blockly.Msg["REMOVE_COMMENT"] = "Yọ afikun ọrọ iwoye"; -Blockly.Msg["RENAME_VARIABLE"] = "Tun orukọ oniruuru kọ..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tun orukọ gbogbo '%1' v oniruru kọ si:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "si %1 fikun ọrọ %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Ṣe afikun awon ọrọ oniruru '%1'."; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "si alfabeti kekere"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "si Alfabeti Aarin"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "si ALFABETI NLA"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "aa <-> AA"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "gba lẹta akọkọ"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "gba lẹta # lati opin"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "gba lẹta #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "gba lẹta ti o kẹhin"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "gba lẹta àrìnàkò"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "ninu %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Da lẹta naa pada si ipo ti a ti sọ tẹlẹ."; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "ka %1 ni %2"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Ka iye igba diẹ ninu awọn ọrọ kan waye laarin awọn ọrọ miiran."; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ṣe afikun nkan si ọrọ naa."; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "darapọ"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Fikun, yọ kuro, tabi ṣe atunṣe awọn apakan lati se atunkọ ọrọ bulooku yii."; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "si lẹta # lati opin"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "si lẹta #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "si lẹta kẹhin"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ninu"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "gba substring lati lẹta akọkọ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "gba substring lati lẹta # lati opin"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "gba substring lati lẹta #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Da ipin kan pato ti ọrọ naa pada."; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "wa isele akọkọ ti o wa ninu ọrọ"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "wa isele igbeyin ti o wa ninu ọrọ"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ninu %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri."; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je isofo"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Da otitọ pada ti ọrọ ti a pese ba ṣofo."; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ṣẹ ẹda ọrọ pẹlu"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ṣẹda ọrọ kan nipa ṣiṣepọ gbogbo awọn ohun kan."; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "Gigun ti %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Da nọmba awọn lẹta pada (pẹlu awọn alafo) ninu ọrọ ti a pese."; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "tẹ ọrọ %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Tẹ ọrọ kan pato, nọmba tabi iye awon miiran."; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Kiakia fun olumulo fun nọmba."; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Kiakia fun olumulo fun awon ifiranṣẹ."; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "kiakia fun nọmba pẹlu ifiranṣẹ"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "kiakia fun ọrọ pẹlu ifiranṣẹ"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "Ṣe iropọ %1 pelu %2 in %3"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ṣe iropo gbogbo awọn iṣẹlẹ ti o sele ninu awọn ọrọ laarin awọn ọrọ miiran."; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "Ṣe iyipada %1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Ṣe iyipada aṣẹ awọn ohun kikọ inu ọrọ naa."; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Lẹta, ọrọ, tabi ila ọrọ."; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ge awọn alafo lati awọn igun mejeji ti"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ge awọn alafo lati apa osi ti"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ge awọn alafo lati apa otun ti"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Da ẹda ti ọrọ naa pada pẹlu awọn alafo miiran ti o kuro lati ọkan tabi awọn opin mejeeji."; -Blockly.Msg["TODAY"] = "Loni"; -Blockly.Msg["UNDO"] = "Maa ṣe"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "nkan"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ṣe idasile 'ṣeto %1'"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Da iye orisirisi yii pada."; -Blockly.Msg["VARIABLES_SET"] = "ṣeto %1 sii %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Ṣe idasile 'gba %1'"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ṣeto oniruru yii lati je bakanna sii igbasilẹ."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ."; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ fun iru miran: '%2'."; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sọ nkankan..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Ṣe afikun ọrọ iwoye"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "E ko lee paa Oniruuru rẹ ' %1' nitori wipe o je ara itumọ isise eto yi '%2'"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ṣe ayipada iye:"; +Blockly.Msg["CLEAN_UP"] = "Nu Bulọọku kuro"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Bi awọn Bulọọku ṣubu"; +Blockly.Msg["COLLAPSE_BLOCK"] = "Bi Bulọọku ṣubu"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "awọ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "awọ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ipin"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "apapọ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Da awo meji papo pelu ipin (0.0 - 1.0)."; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Yan awọ kan lati inu patako awọ."; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "awọ àrìnàkò"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Yan awọ kan ni ọna àrìnàkò."; +Blockly.Msg["COLOUR_RGB_BLUE"] = "alawọ omi aro"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "alawọ ewe"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "awọ pupu"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "awọ pelu:"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Ṣe idasile awọ kan pelu iye awọ pupu, alawọ ewe, ati alawọ omi aro. Gbogbo iye re gbọdọ je laarin 0 and 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "ya kuro ninu lupu"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "beere pelu aṣiṣe lupu"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Ya kuro ninu akojọ lupu."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Ṣe afoda awon lupu to ku yii, kii o si tesiwaju pelu awon aṣiṣe lupu."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Ikilo: Bulọọku yii se lo ninu aṣiṣe lupu yii nikan."; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "fun nigba kọọkan %1 ni akojọ %2"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "Fun nkan kọọkan ninu akojọ kan, ṣe eto oriṢiriṢi '%1' si nkan naa, ki o si tun koodu naa ṣe."; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "iyipada %1 lati %2 si %3 fifi kun %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Ni awon oriṣiriṣi '%1' ṣe imulo lori iye kọọkan lati ori nọmba tio beere titi de eyin to pari nọmba, kaa ni pase aarin kan pato. Tun koodu yi se nigba kọọkan:"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Ṣe afikun si ipo yii bi bulọọku."; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Ṣe afikun ipari, mu-gbogbo ipo si bulọọku."; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Ṣe afikun, se ayọkuro, tabi se a tun beere abala yii lati se a tun gbejade bulọọku yii."; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "bibẹẹkọ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "bibẹẹkọ bi"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "bi"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "Bi iye yii ba je otito, lẹyinna ṣe awọn alaye."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "Bi iye yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, ṣe alaye akọkọ bulọọku keji."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji."; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji. Bi eyikeyi iye naa ko ba je otito, ṣe alaye akọkọ bulọọku ti o gbeyin."; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ṣe"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "Iye igba %1 ti tun ṣe"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Ṣe awon alaye ni igba pupo."; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "tun ṣe titi ti"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "tun ṣe nigbati"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Nigbati awon iye kan ba iro, tun awon koodu kan ṣe."; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Nigbati iye kan ba je otito, tun awon koodu kan ṣe."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Paa gbogbo %1 bulọọku rẹ?"; +Blockly.Msg["DELETE_BLOCK"] = "Paa Bulọọku rẹ"; +Blockly.Msg["DELETE_VARIABLE"] = "Paa awon '%1' Oniruuru rẹ"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Paa %1 lilo '%2' oniruuru rẹ?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "Paa %1 awọn Bulọọku rẹ"; +Blockly.Msg["DIALOG_CANCEL"] = "Fagilé"; +Blockly.Msg["DIALOG_OK"] = "O DARA"; +Blockly.Msg["DISABLE_BLOCK"] = "Sọ Bulọọku di alaiṣiṣẹ"; +Blockly.Msg["DUPLICATE_BLOCK"] = "Ṣe ẹẹda"; +Blockly.Msg["DUPLICATE_COMMENT"] = "Ṣe ẹẹda afikun ọrọ iwoye"; +Blockly.Msg["ENABLE_BLOCK"] = "Muu Bulọọku ṣiṣẹ"; +Blockly.Msg["EXPAND_ALL"] = "Fẹ awọn Bulọọku"; +Blockly.Msg["EXPAND_BLOCK"] = "Fẹ Bulọọku"; +Blockly.Msg["EXTERNAL_INPUTS"] = "Awon afikun okeere"; +Blockly.Msg["HELP"] = "Iranwọ"; +Blockly.Msg["INLINE_INPUTS"] = "Afiku tẹle n tẹle"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "Ṣẹda akojọ aṣayan tio ṣofo"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Da akojọ pada, ti gigun 0, ko ni awon akosile alaye"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "akojọ"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Fikun, yọ, tabi yọ, tunṣe awọn apakan lati akojọ bulooku yii."; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "ṣẹda akojọ"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Fi nkan kun akojọ."; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Ṣẹda akojọ pẹlu nọmba eyikeyi ti awọn akojo."; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "àkọ́kọ́"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# lati opin"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "gba"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "gba ati yọ"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "tógbẹ̀yìn"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "àrìnàkò"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "yọ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Da akojọ akọkọ pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Da akojọ ti o kẹhin pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Da ohun àrìnàkò kan pada ninu akojọ"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Yọ ki o si da akojọ kuro ni akọkọ pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Yọ ki o si da akojọ ti o kẹhin pada"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Yọ ki o si da akojọ ti o kẹhin àrìnàkò pada"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Da akojọ akọkọ pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Da akojọ ti o kẹhin pada."; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Da ohun àrìnàkò kan pada ninu akojọ"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "sii # lati opin"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "sii #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "sii opin"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "gba ipin -akojọ lati akọkọ"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "gba ipin -akojọ lati # lati opin"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "gba ipin -akojọ lati #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Ṣẹda ẹda ti apa kan ti o wa ninu akojọ."; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 jẹ ohun ti o kẹhin."; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 jẹ ohun akọkọ."; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "wa awon nkan akọkọ ti o sele"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "wa iṣẹlẹ ti o kẹhin ti akojọ"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri."; +Blockly.Msg["LISTS_INLIST"] = "ni akojọ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 je ofo"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Da otitọ pada nigbati akojọ ba ṣofo."; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "gigun ti %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Da gigun ti akojo pada."; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "ṣẹda akojọ pẹlu nkan %1 tun ṣe %2 igba"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Ṣẹda akojọ kan ti o wa fun iye tun nọmba kan pato ti akoko ti a ti yan."; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "Ṣe iyipada %1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Ṣe iyipada ẹda ti akojọ kan."; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "bii"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "fi sii ni"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "ṣeto"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Fi ohun kan sii ni ibẹrẹ akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Fi ohun kan sii ipo kan pato ti a ti yan ni akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Fi ohun kan kun si opin akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Fi ohun kan kun si àrìnàkò akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Fi ohun kan sii ni ibẹrẹ akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Ṣeto ohun akọkọ sii ipo kan pato ti a ti yan ni akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Fi ohun kan kun si opin akojọ."; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Fi ohun kan kun si àrìnàkò akojọ."; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "si oke"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "si isalẹ"; +Blockly.Msg["LISTS_SORT_TITLE"] = "to %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "To ẹda akojọ lẹsẹẹsẹ."; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "awon alfabeti, fojufo irufe"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "awọn nọmba"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "awon alfabeti"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "ṣe akojọ lati inu ọrọ"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "ṣe ọrọ lati akojọ"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Darapọ mọ akojọ awọn ọrọ sinu ọrọ kan, ti a pin nipase delimita."; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Pin ọrọ sinu akojọ awọn ọrọ kan, fọ ni dẹlimita kọọkan."; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "pẹlu dẹlimita"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "irọ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Da pada bi o je otito tabi iro."; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "otitọ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Da otito pada b iafikun mejeji ba dogba bakanna."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Da otito pada bi afikun akooko ba tobi ju afiku keji lo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Da otito pada bi afikun akooko ba tobi ju tabi dogba pelu afiku keji lo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Da otito pada bi afikun akooko ba kere ju afiku keji lo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Da otito pada bi afikun akooko ba kere ju tabi dogba pelu afiku keji lo."; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Da otito pada bi afikun mejeji ko ba dogba bakanna."; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "kii ṣe %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Da otitọ pada bi afikun ba je irọ. Da iro pada bi afikun ba je otito."; +Blockly.Msg["LOGIC_NULL"] = "ofo"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Da ofo pada."; +Blockly.Msg["LOGIC_OPERATION_AND"] = "ati"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "tabi"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Da otito pada bi afikun mejeji ba je otito."; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Da otitọ pada bi o kere ju afikun kan ba je otito."; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "idanwo"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "bi irọ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "bi otitọ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Ṣe ayewo ipo naa ni 'idanwo'. Bi ipo nab a je otito, Da pada 'bi otito' iye; bibẹẹkọ da pada 'bi iro' iye."; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://yo.wikipedia.org/wiki/Ìṣírò"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Da apapo awọn nọmba meji pada."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Da adarọ iye ti awọn nọmba meji pada."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Da iyatọ awọn nọmba meji naa pada."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Da abajade awọn nọmba meji naa pada."; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Da nọmba akọkọ ti a gbe si agbara ti nọmba keji pada."; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Da ojuami arctangent pada (X, Y) ni awon digiri lati -180 si 180."; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "iyipada %1 nipasẹ %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Se afiku si nọmba orisirisi '%1'."; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Da ọkan ninu awọn aiyipada ti o wọpọ pada: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (ailopin)."; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "atokọ %1 kukuru %2 giga %3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Ṣe atokọ nọmba laarin awọn nọmba kukuru ati giga. (ini afikun)."; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "je sisee pin pẹlu"; +Blockly.Msg["MATH_IS_EVEN"] = "je se e pin"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "je ai dara"; +Blockly.Msg["MATH_IS_ODD"] = "je ai se e pin"; +Blockly.Msg["MATH_IS_POSITIVE"] = "je di dara"; +Blockly.Msg["MATH_IS_PRIME"] = "je nọ́mbà àkọ́kọ́"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "Ṣe ayẹwo boya nọmba jẹ eyi to se pin, ai se pin, akori, odidi, ti o dara, ti ko dara, tabi ti o ba se e pin pelu nọmba kan. Pada otitọ tabi irọ."; +Blockly.Msg["MATH_IS_WHOLE"] = "je odidi"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "iyokù %1 ÷ %2"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Da iyokù lati pinpin awọn nọmba meji pada."; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://yo.wikipedia.org/wiki/Nọ́mbà"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "Nọ́mbà kan."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "idameji akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "akojọ ti o pọ ju"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "agbedemeji akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "akojọ ti o kere ju"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "awọn ipo ti akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "àrìnàkò nkan ti akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "iṣiro deede ti akojọ"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "apao akojọ"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Da idameji pada (ipin isiro) ti awọn nọmba iye inu akojọ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Da nọmba ti o tobi julọ ninu akojọ pada."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Da agbedemeji nọmba inu akojọ pada."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Da nọmba ti o kere julọ ninu akojọ pada."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Da akojọ ti eyi ti o wọpọ julọ ninu akojọ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Da àrìnàkò ida ipilẹ nkan lati inu akojọ."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Da iṣiro deede ti akojọ pada."; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Da apapo gbogbo awọn nọmba inu akojọ pada."; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "oniruru ipin"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Da àrìnàkò ida pada laarin 0.0 (ini afikun) ati 1.0 (iyasọtọ)."; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "oniruru abala lati %1 si %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Da àrìnàkò abala laarin awon opin pato meji pada, ini afikun."; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "pa ju de"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "pa ju de si isalẹ"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "pa ju de soke"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Pa oju nọmba de soke tabi si isalẹ."; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://yo.wikipedia.org/wiki/Gb%C3%B2ngb%C3%B2_al%C3%A1gb%C3%A1ram%C3%A9j%C3%AC"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "patapata"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "Ipilẹ onihamẹrin"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Da iye patapata ti nọmba kan pada."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Da e pada si agbara ti nọmba kan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Da lọgaridimu adayeba ti nọmba kan pada."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Da ipilẹ 10 lọgaridimu nọmba kan pada."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Da ilodisi ti nọmba kan pada"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Da 10 pada si agbara nọmba kan."; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Da Ipilẹ onihamẹrin nọmba kan pada."; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Da arccosine ti digiri pada."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Da arcsine ti digiri pada."; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Da arctangent ti digiri pada."; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Da cosine ti digiri pada (kii ṣe Radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Da sine ti digiri pada (kii ṣe Radian)."; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Da tangent ti digiri pada (kii ṣe Radian)."; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Ṣe idasile awọ oniruuru..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Ṣe idasile nọ́mbà oniruru..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Ṣe idasile asopọ oniruru..."; +Blockly.Msg["NEW_VARIABLE"] = "Ṣe idasile oniruuru..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "Orukọ oniruuru tuntun:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "Iru oniruuru tuntun:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "gba alaye laaye"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "pẹlu:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Ṣe ṣalaye-iṣẹ ti olumulo '%1'."; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Ṣe ṣalaye-iṣẹ ti olumulo '%1' kii o sii lo iṣagbejade rẹ."; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "pẹlu:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Ṣe idasile '%1'"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Ṣe apejuwe iṣẹ yii..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "Ṣe awon alaye ni igba pupo."; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "sii"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Ṣẹda iṣẹ kan lai si iṣagbejade."; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "tun tẹ"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Ṣẹda iṣẹ pẹlu iṣagbejade kan."; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Ikilo: Isẹ yii ni awọn ẹda odiwọn."; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Ṣafihan iṣẹ isọtunmọ"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "Ti iye ba jẹ otitọ, lẹhinna da iye keji pada."; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Ikilo: Bulọọki yii le ṣee lo nikan laarin itumọ iṣẹ kan"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "igbewọle orukọ:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Ṣe afikun kan sii igbewọle si iṣẹ yii."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "igbewọle"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Fikun, yọ kuro, tabi tun beere awọn igbewọle si iṣẹ yii."; +Blockly.Msg["REDO"] = "Tun ṣe"; +Blockly.Msg["REMOVE_COMMENT"] = "Yọ afikun ọrọ iwoye"; +Blockly.Msg["RENAME_VARIABLE"] = "Tun orukọ oniruuru kọ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Tun orukọ gbogbo '%1' v oniruru kọ si:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "si %1 fikun ọrọ %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Ṣe afikun awon ọrọ oniruru '%1'."; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "si alfabeti kekere"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "si Alfabeti Aarin"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "si ALFABETI NLA"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "aa <-> AA"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "gba lẹta akọkọ"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "gba lẹta # lati opin"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "gba lẹta #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "gba lẹta ti o kẹhin"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "gba lẹta àrìnàkò"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "ninu %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Da lẹta naa pada si ipo ti a ti sọ tẹlẹ."; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "ka %1 ni %2"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Ka iye igba diẹ ninu awọn ọrọ kan waye laarin awọn ọrọ miiran."; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Ṣe afikun nkan si ọrọ naa."; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "darapọ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Fikun, yọ kuro, tabi ṣe atunṣe awọn apakan lati se atunkọ ọrọ bulooku yii."; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "si lẹta # lati opin"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "si lẹta #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "si lẹta kẹhin"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ninu"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "gba substring lati lẹta akọkọ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "gba substring lati lẹta # lati opin"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "gba substring lati lẹta #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Da ipin kan pato ti ọrọ naa pada."; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "wa isele akọkọ ti o wa ninu ọrọ"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "wa isele igbeyin ti o wa ninu ọrọ"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ninu %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri."; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 je isofo"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Da otitọ pada ti ọrọ ti a pese ba ṣofo."; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ṣẹ ẹda ọrọ pẹlu"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Ṣẹda ọrọ kan nipa ṣiṣepọ gbogbo awọn ohun kan."; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "Gigun ti %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Da nọmba awọn lẹta pada (pẹlu awọn alafo) ninu ọrọ ti a pese."; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "tẹ ọrọ %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Tẹ ọrọ kan pato, nọmba tabi iye awon miiran."; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Kiakia fun olumulo fun nọmba."; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Kiakia fun olumulo fun awon ifiranṣẹ."; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "kiakia fun nọmba pẹlu ifiranṣẹ"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "kiakia fun ọrọ pẹlu ifiranṣẹ"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "Ṣe iropọ %1 pelu %2 in %3"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Ṣe iropo gbogbo awọn iṣẹlẹ ti o sele ninu awọn ọrọ laarin awọn ọrọ miiran."; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "Ṣe iyipada %1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Ṣe iyipada aṣẹ awọn ohun kikọ inu ọrọ naa."; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "Lẹta, ọrọ, tabi ila ọrọ."; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "ge awọn alafo lati awọn igun mejeji ti"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "ge awọn alafo lati apa osi ti"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "ge awọn alafo lati apa otun ti"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Da ẹda ti ọrọ naa pada pẹlu awọn alafo miiran ti o kuro lati ọkan tabi awọn opin mejeeji."; +Blockly.Msg["TODAY"] = "Loni"; +Blockly.Msg["UNDO"] = "Maa ṣe"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "nkan"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Ṣe idasile 'ṣeto %1'"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Da iye orisirisi yii pada."; +Blockly.Msg["VARIABLES_SET"] = "ṣeto %1 sii %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Ṣe idasile 'gba %1'"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Ṣeto oniruru yii lati je bakanna sii igbasilẹ."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ."; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ fun iru miran: '%2'."; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Sọ nkankan..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/yue.js b/msg/js/yue.js index ba3bfda4134..c51f5012fa6 100644 --- a/msg/js/yue.js +++ b/msg/js/yue.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated -Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh-yue.wikipedia.org/wiki/色"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated -Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated -Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh-yue.wikipedia.org/wiki/For_迴圈"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated -Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated -Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated -Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated -Blockly.Msg["DIALOG_CANCEL"] = "取消"; -Blockly.Msg["DIALOG_OK"] = "仲可以"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "幫手"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "是但"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "復原"; -Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated -Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "今日"; -Blockly.Msg["UNDO"] = "還原"; -Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2"; // untranslated +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio"; // untranslated +Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend"; // untranslated +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh-yue.wikipedia.org/wiki/色"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "blue"; // untranslated +Blockly.Msg["COLOUR_RGB_GREEN"] = "green"; // untranslated +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "red"; // untranslated +Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with"; // untranslated +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if"; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if"; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh-yue.wikipedia.org/wiki/For_迴圈"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times"; // untranslated +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated +Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated +Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated +Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable"; // untranslated +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks"; // untranslated +Blockly.Msg["DIALOG_CANCEL"] = "取消"; +Blockly.Msg["DIALOG_OK"] = "仲可以"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "幫手"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "first"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# from end"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "last"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "是但"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "to #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "to last"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "in list"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "as"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "numeric"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true"; // untranslated +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "null"; // untranslated +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "and"; // untranslated +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "or"; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test"; // untranslated +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true"; // untranslated +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; // untranslated +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2"; // untranslated +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2"; // untranslated +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'."; // untranslated +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; // untranslated +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number."; // untranslated +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable..."; // untranslated +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable..."; // untranslated +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "with:"; // untranslated +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "do something"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "to"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "Add an input to the function."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "復原"; +Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated +Blockly.Msg["RENAME_VARIABLE"] = "Rename variable..."; // untranslated +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join"; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with"; // untranslated +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1"; // untranslated +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "今日"; +Blockly.Msg["UNDO"] = "還原"; +Blockly.Msg["UNNAMED_KEY"] = "unnamed"; // untranslated +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item"; // untranslated +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/zgh.js b/msg/js/zgh.js index cb9db9fa8d5..5dd01e7e3d4 100644 --- a/msg/js/zgh.js +++ b/msg/js/zgh.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "ⵔⵏⵓ ⴰⵅⴼⴰⵡⴰⵍ"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated -Blockly.Msg["CHANGE_VALUE_TITLE"] = "ⵙⵏⴼⵍ ⴰⵣⴰⵍ:"; -Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated -Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated -Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ⴰⴽⵍⵓ 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ⴰⴽⵍⵓ 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "ⴰⵙⵙⴰⵖ"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "ⵙⵎⵔⴽⵙ"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated -Blockly.Msg["COLOUR_RGB_BLUE"] = "ⴰⵏⵉⵍⵉ"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "ⴰⵣⴳⵣⴰ"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "ⴰⵣⴳⴳⵯⴰⵖ"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "ⴽⵍⵓ ⵙ"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ⴰⵣⴰⵍⵏ ⵉⴼⵓⴽⴽ ⴰⴷ ⵉⵍⵉⵏ ⴳⵔ 0 ⴷ 100."; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ⵎⴽ ⴷ ⵓⵀⵓ"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ⵉⵙ"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ⵎⴽ"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ⴳ"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ⴰⵍⵙ %1 ⵜⵉⴽⴽⴰⵍ"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ⴰⵍⵙ ⴰⵔⴷ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ⴰⵍⵙ ⴰⴷⴷⴰⴳ"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ⴽⵓⴷ ⵉⴷⵜⵜⴰ ⵡⴰⵣⴰⵍ, ⵙⵙⵍⴽⵎ ⴽⵔⴰ ⵏ ⵡⴰⵏⴰⴹⵏ."; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ ⵎⴰⵕⵕⴰ?"; -Blockly.Msg["DELETE_BLOCK"] = "ⴽⴽⵙ ⴰⴱⵍⵓⴽ"; -Blockly.Msg["DELETE_VARIABLE"] = "ⴽⴽⵙ ⴰⵎⵙⴽⵉⵍ '%1'"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated -Blockly.Msg["DELETE_X_BLOCKS"] = "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ"; -Blockly.Msg["DIALOG_CANCEL"] = "ⵙⵔ"; -Blockly.Msg["DIALOG_OK"] = "ⵡⴰⵅⵅⴰ"; -Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated -Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated -Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated -Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated -Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated -Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated -Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated -Blockly.Msg["HELP"] = "ⵜⵉⵡⵉⵙⵉ"; -Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ⴰⵎⵣⵡⴰⵔⵓ"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# ⵙⴳ ⵜⵉⴳⵉⵔⴰ"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ⴰⵎⴳⴳⴰⵔⵓ"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ⵙⵉⵜⵜⵢ"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ⴰⵔ #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ⴰⵔ ⵜⴳⵉⵔⴰ"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated -Blockly.Msg["LISTS_INLIST"] = "ⴳ ⵜⵍⴳⴰⵎⵜ"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "ⵜⵉⵖⵣⵉ ⵏ %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ⴰⵎ"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated -Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ⴰⵎⵓⵟⵟⵓⵏ"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ⴰⵔⵎⵉⴷⵉ"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ⴰⵎⵉⴷⵉ"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ⵓⵔ ⴷ %1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated -Blockly.Msg["LOGIC_NULL"] = "ⵢⵓⵔⴰ"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated -Blockly.Msg["LOGIC_OPERATION_AND"] = "ⴷ"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "ⵏⵖ"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ⴰⵔⵎ"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ⵎⴽ ⵓⵔ ⵉⴷⵜⵜⵉ"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ⵎⴽ ⵉⴷⵜⵜⴰ"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ⵙⴳ X:%1 Y:%2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated -Blockly.Msg["MATH_CHANGE_TITLE"] = "ⵙⵏⴼⵍ %1 ⵙ %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "ⵔⵏⵓ ⵢⴰⵏ ⵓⵎⴹⴰⵏ ⵖⵔ ⵓⵎⵙⴽⵉⵍ '%1'"; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated -Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated -Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated -Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated -Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated -Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated -Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated -Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; -Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ⴽⵔⴰ ⵏ ⵓⵎⴹⴰⵏ."; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ⵙⴽⵔ ⴰⴽⵍⵓ ⴰⵎⵙⴽⵉⵍ..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ⵙⴽⵔ ⴰⵎⴹⴰⵏ ⴰⵎⵙⴽⵉⵍ..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated -Blockly.Msg["NEW_VARIABLE"] = "ⵙⴽⵔ ⴰⵎⵙⴽⵉⵍ..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ ⴰⵎⴰⵢⵏⵓ:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ⴰⵏⴰⵡ ⴰⵎⴰⵢⵏⵓ ⵏ ⵓⵎⵙⴽⵉⵍ:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ⵙ:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ⵙ:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ⴳ ⴽⵔⴰ"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ⵉ"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ⵔⵏⵓ ⴰⵏⴽⵛⴰⵎ ⵖⵔ ⵜⵙⵖⵏⵜ."; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated -Blockly.Msg["REDO"] = "ⴰⵍⵙ"; -Blockly.Msg["REMOVE_COMMENT"] = "ⴽⴽⵙ ⴰⵅⴼⴰⵡⴰⵍ"; -Blockly.Msg["RENAME_VARIABLE"] = "ⵙⵏⴼⵍ ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ⵙⵏⴼⵍ ⵉⵎⵙⴽⵉⵍⵏ ⴰⴽⴽ '%1' ⵖⵔ:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated -Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ⵍⴽⵎ"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ⴰⵔ ⴰⵙⴽⴽⵉⵍ ⴰⵏⴳⴳⴰⵔⵓ"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ⴳ ⵓⴹⵕⵉⵚ"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ⴳ ⵓⴹⵕⵉⵚ %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ⵙⵏⴼⵍⵓⵍ ⴰⴹⵕⵉⵚ ⵙ"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "ⵜⵉⵖⵣⵉ ⵏ %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated -Blockly.Msg["TODAY"] = "ⴰⵙⵙⴰ"; -Blockly.Msg["UNDO"] = "ⵙⵔ"; -Blockly.Msg["UNNAMED_KEY"] = "ⴰⵔⵉⵙⵎ"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ⴰⴼⵔⴷⵉⵙ"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated -Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "ⵔⵏⵓ ⴰⵅⴼⴰⵡⴰⵍ"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated +Blockly.Msg["CHANGE_VALUE_TITLE"] = "ⵙⵏⴼⵍ ⴰⵣⴰⵍ:"; +Blockly.Msg["CLEAN_UP"] = "Clean up Blocks"; // untranslated +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings."; // untranslated +Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks"; // untranslated +Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block"; // untranslated +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "ⴰⴽⵍⵓ 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "ⴰⴽⵍⵓ 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "ⴰⵙⵙⴰⵖ"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "ⵙⵎⵔⴽⵙ"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette."; // untranslated +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random."; // untranslated +Blockly.Msg["COLOUR_RGB_BLUE"] = "ⴰⵏⵉⵍⵉ"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "ⴰⵣⴳⵣⴰ"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "ⴰⵣⴳⴳⵯⴰⵖ"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "ⴽⵍⵓ ⵙ"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "ⴰⵣⴰⵍⵏ ⵉⴼⵓⴽⴽ ⴰⴷ ⵉⵍⵉⵏ ⴳⵔ 0 ⴷ 100."; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "ⵎⴽ ⴷ ⵓⵀⵓ"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "ⵉⵙ"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "ⵎⴽ"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "ⴳ"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "ⴰⵍⵙ %1 ⵜⵉⴽⴽⴰⵍ"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "ⴰⵍⵙ ⴰⵔⴷ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "ⴰⵍⵙ ⴰⴷⴷⴰⴳ"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements."; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "ⴽⵓⴷ ⵉⴷⵜⵜⴰ ⵡⴰⵣⴰⵍ, ⵙⵙⵍⴽⵎ ⴽⵔⴰ ⵏ ⵡⴰⵏⴰⴹⵏ."; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ ⵎⴰⵕⵕⴰ?"; +Blockly.Msg["DELETE_BLOCK"] = "ⴽⴽⵙ ⴰⴱⵍⵓⴽ"; +Blockly.Msg["DELETE_VARIABLE"] = "ⴽⴽⵙ ⴰⵎⵙⴽⵉⵍ '%1'"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?"; // untranslated +Blockly.Msg["DELETE_X_BLOCKS"] = "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ"; +Blockly.Msg["DIALOG_CANCEL"] = "ⵙⵔ"; +Blockly.Msg["DIALOG_OK"] = "ⵡⴰⵅⵅⴰ"; +Blockly.Msg["DISABLE_BLOCK"] = "Disable Block"; // untranslated +Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate"; // untranslated +Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment"; // untranslated +Blockly.Msg["ENABLE_BLOCK"] = "Enable Block"; // untranslated +Blockly.Msg["EXPAND_ALL"] = "Expand Blocks"; // untranslated +Blockly.Msg["EXPAND_BLOCK"] = "Expand Block"; // untranslated +Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs"; // untranslated +Blockly.Msg["HELP"] = "ⵜⵉⵡⵉⵙⵉ"; +Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "list"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "create list with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "Add an item to the list."; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "Create a list with any number of items."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "ⴰⵎⵣⵡⴰⵔⵓ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "# ⵙⴳ ⵜⵉⴳⵉⵔⴰ"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "get"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "get and remove"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "ⴰⵎⴳⴳⴰⵔⵓ"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "random"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "ⵙⵉⵜⵜⵢ"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "Returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "Returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "Returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "Removes the first item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "Removes the last item in a list."; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "Removes a random item in a list."; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "to # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "ⴰⵔ #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "ⴰⵔ ⵜⴳⵉⵔⴰ"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "get sub-list from first"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "get sub-list from # from end"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "get sub-list from #"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 is the last item."; // untranslated +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 is the first item."; // untranslated +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "find first occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "find last occurrence of item"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg["LISTS_INLIST"] = "ⴳ ⵜⵍⴳⴰⵎⵜ"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "Returns true if the list is empty."; // untranslated +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "ⵜⵉⵖⵣⵉ ⵏ %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "Returns the length of a list."; // untranslated +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; // untranslated +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "Reverse a copy of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "ⴰⵎ"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "insert at"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_SET"] = "set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "Append the item to the end of a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "Sets the first item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "Sets the last item in a list."; // untranslated +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "Sets a random item in a list."; // untranslated +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "ascending"; // untranslated +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "descending"; // untranslated +Blockly.Msg["LISTS_SORT_TITLE"] = "sort %1 %2 %3"; // untranslated +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "Sort a copy of a list."; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "alphabetic, ignore case"; // untranslated +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "ⴰⵎⵓⵟⵟⵓⵏ"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "alphabetic"; // untranslated +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "make list from text"; // untranslated +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "make text from list"; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "with delimiter"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "ⴰⵔⵎⵉⴷⵉ"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false."; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "ⴰⵎⵉⴷⵉ"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "ⵓⵔ ⴷ %1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg["LOGIC_NULL"] = "ⵢⵓⵔⴰ"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null."; // untranslated +Blockly.Msg["LOGIC_OPERATION_AND"] = "ⴷ"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "ⵏⵖ"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true."; // untranslated +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "ⴰⵔⵎ"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "ⵎⴽ ⵓⵔ ⵉⴷⵜⵜⵉ"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "ⵎⴽ ⵉⴷⵜⵜⴰ"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers."; // untranslated +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number."; // untranslated +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 ⵙⴳ X:%1 Y:%2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180."; // untranslated +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg["MATH_CHANGE_TITLE"] = "ⵙⵏⴼⵍ %1 ⵙ %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "ⵔⵏⵓ ⵢⴰⵏ ⵓⵎⴹⴰⵏ ⵖⵔ ⵓⵎⵙⴽⵉⵍ '%1'"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by"; // untranslated +Blockly.Msg["MATH_IS_EVEN"] = "is even"; // untranslated +Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative"; // untranslated +Blockly.Msg["MATH_IS_ODD"] = "is odd"; // untranslated +Blockly.Msg["MATH_IS_POSITIVE"] = "is positive"; // untranslated +Blockly.Msg["MATH_IS_PRIME"] = "is prime"; // untranslated +Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg["MATH_IS_WHOLE"] = "is whole"; // untranslated +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation"; +Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "ⴽⵔⴰ ⵏ ⵓⵎⴹⴰⵏ."; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list"; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list"; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list."; // untranslated +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2"; // untranslated +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive."; // untranslated +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down"; // untranslated +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up"; // untranslated +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down."; // untranslated +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute"; // untranslated +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root"; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number."; // untranslated +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number."; // untranslated +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "ⵙⴽⵔ ⴰⴽⵍⵓ ⴰⵎⵙⴽⵉⵍ..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "ⵙⴽⵔ ⴰⵎⴹⴰⵏ ⴰⵎⵙⴽⵉⵍ..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslated +Blockly.Msg["NEW_VARIABLE"] = "ⵙⴽⵔ ⴰⵎⵙⴽⵉⵍ..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ ⴰⵎⴰⵢⵏⵓ:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "ⴰⵏⴰⵡ ⴰⵎⴰⵢⵏⵓ ⵏ ⵓⵎⵙⴽⵉⵍ:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "ⵙ:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "ⵙ:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "Create '%1'"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "Describe this function..."; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "ⴳ ⴽⵔⴰ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "ⵉ"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "Creates a function with no output."; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://en.wikipedia.org/wiki/Subroutine"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return"; // untranslated +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output."; // untranslated +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value."; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "ⵔⵏⵓ ⴰⵏⴽⵛⴰⵎ ⵖⵔ ⵜⵙⵖⵏⵜ."; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "inputs"; // untranslated +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg["REDO"] = "ⴰⵍⵙ"; +Blockly.Msg["REMOVE_COMMENT"] = "ⴽⴽⵙ ⴰⵅⴼⴰⵡⴰⵍ"; +Blockly.Msg["RENAME_VARIABLE"] = "ⵙⵏⴼⵍ ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "ⵙⵏⴼⵍ ⵉⵎⵙⴽⵉⵍⵏ ⴰⴽⴽ '%1' ⵖⵔ:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2"; // untranslated +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'."; // untranslated +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end"; // untranslated +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #"; // untranslated +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter"; // untranslated +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2"; // untranslated +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position."; // untranslated +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; // untranslated +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2"; // untranslated +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text."; // untranslated +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "ⵍⴽⵎ"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "ⴰⵔ ⴰⵙⴽⴽⵉⵍ ⴰⵏⴳⴳⴰⵔⵓ"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "ⴳ ⵓⴹⵕⵉⵚ"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text."; // untranslated +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "ⴳ ⵓⴹⵕⵉⵚ %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty."; // untranslated +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "ⵙⵏⴼⵍⵓⵍ ⴰⴹⵕⵉⵚ ⵙ"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items."; // untranslated +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "ⵜⵉⵖⵣⵉ ⵏ %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1"; // untranslated +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value."; // untranslated +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number."; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text."; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message"; // untranslated +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message"; // untranslated +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; // untranslated +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3"; // untranslated +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text."; // untranslated +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; // untranslated +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1"; // untranslated +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text."; // untranslated +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text."; // untranslated +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of"; // untranslated +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg["TODAY"] = "ⴰⵙⵙⴰ"; +Blockly.Msg["UNDO"] = "ⵙⵔ"; +Blockly.Msg["UNNAMED_KEY"] = "ⴰⵔⵉⵙⵎ"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "ⴰⴼⵔⴷⵉⵙ"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'"; // untranslated +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable."; // untranslated +Blockly.Msg["VARIABLES_SET"] = "set %1 to %2"; // untranslated +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'"; // untranslated +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists."; // untranslated +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'."; // untranslated +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace"; // untranslated +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something..."; // untranslated +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/zh-hans.js b/msg/js/zh-hans.js index 3e3ae23410c..0e31ad8f9be 100644 --- a/msg/js/zh-hans.js +++ b/msg/js/zh-hans.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "添加注释"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "不能删除变量“%1”,因为它是函数“%2”定义的一部分"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "更改值:"; -Blockly.Msg["CLEAN_UP"] = "整理块"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "已收起的信息块内包含警告。"; -Blockly.Msg["COLLAPSE_ALL"] = "折叠块"; -Blockly.Msg["COLLAPSE_BLOCK"] = "折叠块"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "颜色1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "颜色2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "把两种颜色以一个给定的比例(0.0-1.0)进行混合。"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/颜色"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "从调色板中选择一种颜色。"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "随机颜色"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "随机选择一种颜色。"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "蓝色"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "绿色"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "红色"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "颜色"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "跳出循环"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "继续下一轮循环"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "跳出包含它的循环。"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳过本轮循环的剩余部分,并继进行续下一轮循环。"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:这个块只能在循环内使用。"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "遍历列表 %2 里的每一项 %1"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍历列表中的每一项,将变量“%1”设为所选项,并执行一些语句。"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "变量 %1 从 %2 数到 %3 每次增加 %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "用变量%1记录从开始数值到终止数值之间的数值,数值按指定间隔增加,并执行指定的块。"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "在这个if语句块中增加一个条件。"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "在这个if语句块中添加一个最终的,包括所有其余情况的条件。"; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "增加、删除或重新排列各节来重新配置这个if语句块。"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否则"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否则如果"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "如果值为真,执行一些语句。"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "如果值为真,则执行第一块语句。否则,则执行第二块语句。"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。"; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For循环"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "执行"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重复 %1 次"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "多次执行一些语句。"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重复直到条件满足"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "当条件满足时重复"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "只要值为假,就一直循环执行一些语句。"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "只要值为真,就一直循环执行一些语句。"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "删除所有 %1 个块吗?"; -Blockly.Msg["DELETE_BLOCK"] = "删除块"; -Blockly.Msg["DELETE_VARIABLE"] = "删除变量“%1”"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "要删除对变量“%2”的%1个引用吗?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "删除 %1 个块"; -Blockly.Msg["DIALOG_CANCEL"] = "取消"; -Blockly.Msg["DIALOG_OK"] = "确认"; -Blockly.Msg["DISABLE_BLOCK"] = "禁用块"; -Blockly.Msg["DUPLICATE_BLOCK"] = "复制"; -Blockly.Msg["DUPLICATE_COMMENT"] = "复制注释"; -Blockly.Msg["ENABLE_BLOCK"] = "启用块"; -Blockly.Msg["EXPAND_ALL"] = "展开块"; -Blockly.Msg["EXPAND_BLOCK"] = "展开块"; -Blockly.Msg["EXTERNAL_INPUTS"] = "外部输入"; -Blockly.Msg["HELP"] = "帮助"; -Blockly.Msg["INLINE_INPUTS"] = "单行输入"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "创建空列表"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一个列表,长度为 0,不包含任何数据记录"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "列表"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "增加、删除或重新排列各部分以此重新配置这个列表块。"; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "创建列表,内容:"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "将一个项添加到列表中。"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一个具有任意数量项目的列表。"; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一项"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒数第#项"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; -Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得并移除"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最后一项"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "随机的一项"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "-"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回列表中的第一项。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在列表中的指定位置的项。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回列表中的最后一项。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回列表中的随机一项。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除并返回列表中的第一项。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除并返回列表中的指定位置的项。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除并返回列表中的最后一项。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除并返回列表中的随机一项。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除列表中的第一项"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在列表中的指定位置的项。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除列表中的最后一项"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "删除列表中的随机一项。"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到倒数第#项"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到第#项"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到最后一项"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "获取子列表,从第一项"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "获取子列表,从倒数第#项"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "获取子列表,从第#项"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "-"; -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "复制列表中指定的部分。"; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1是最后一项。"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1是第一项。"; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "寻找第一次出现的项"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "寻找最后一次出现的项"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。"; -Blockly.Msg["LISTS_INLIST"] = "在列表中"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1是空的"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果改列表为空,则返回真。"; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1的长度"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回列表的长度。"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立列表使用项 %1 重复 %2 次"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立包含指定重复次数的值的列表。"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "倒转%1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "倒转一个列表,返回副本。"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "值为"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "插入在"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "设置"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "在列表的起始处添加该项。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "在列表中指定位置插入项。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "在列表的末尾处添加该项。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "在列表的随机位置插入该项。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "设置列表中的第一项。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "设置在列表中指定位置的项。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "设置列表中的最后一项。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "设置列表中的随机一项。"; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序"; -Blockly.Msg["LISTS_SORT_TITLE"] = "排序%1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序一个列表,返回副本。"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "按字母(忽略大小写)"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "按数字"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "按字母"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "从文本制作列表"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "将列表合并为文本"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "加入文本列表至一个文本,由分隔符分隔。"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "将文本按指定的分隔符拆分为文本组成的列表。"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "分隔符:"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果两个输入结果相等,则返回真。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一个输入结果比第二个大,则返回真。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一个输入结果大于或等于第二个输入结果,则返回真。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一个输入结果比第二个小,则返回真。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一个输入结果小于或等于第二个输入结果,则返回真。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果两个输入结果不相等,则返回真。"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "非%1"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果输入结果为假,则返回真;如果输入结果为真,则返回假。"; -Blockly.Msg["LOGIC_NULL"] = "空"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "并且"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "或"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果两个输入结果都为真,则返回真。"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少有一个输入结果为真,则返回真。"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "断言"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/条件运算符"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果为假"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果为真"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "检查“断言”里的条件语句。如果条件为真,则返回“如果为真”的值,否则,则返回“如果为假”的值。"; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算术"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回两个数值的和。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回两个数值的商。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回两个数值的差。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回两个数值的乘积。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回以第一个数值为底数,以第二个数值为幂的结果。"; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/反正切2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "点(x:%1,y:%2)的方位角"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "返回点(X,Y)的反正切值,范围为-180到180度。"; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "将 %1 增加 %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "为变量“%1”增加一个数值。"; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/数学常数"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一个常见常量:π (3.141…)、e (2.718…)、φ (1.618…)、根号2 (1.414…)、根号二分之一 (0.707…)或∞ (无穷大)。"; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "将 %1 限制在 最低 %2 到最高 %3 之间"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "将一个数值限制在两个指定的数值范围(含边界)之间。"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除"; -Blockly.Msg["MATH_IS_EVEN"] = "是偶数"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "是负数"; -Blockly.Msg["MATH_IS_ODD"] = "是奇数"; -Blockly.Msg["MATH_IS_POSITIVE"] = "是正数"; -Blockly.Msg["MATH_IS_PRIME"] = "是质数"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "检查一个数值是否是偶数、奇数、质数、自然数、正数、负数或者是否能被某数整除。返回真或假。"; -Blockly.Msg["MATH_IS_WHOLE"] = "是整数"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除"; -Blockly.Msg["MATH_MODULO_TITLE"] = "取 %1 ÷ %2 的余数"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "返回这两个数字相除后的余数。"; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/数"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一个数值。"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "列表平均值"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "列表最大值"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "列表中位数"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "列表最小值"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "列表中的众数"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "列表中的随机一项"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "列表的标准差"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "列表中数值的和"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回列表中的数值的平均值。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回列表中最大值。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回列表中数值的中位数。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回列表中最小值。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回列表中的出现次数最多的项的列表。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "从列表中返回一个随机的元素。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回列表的标准差。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回列表中的所有数值的和。"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "随机小数"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "返回一个从0.0(含)到1.0(不含)之间的随机数。"; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "从 %1 到 %2 范围内的随机整数"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "返回一个限制在两个指定数值的范围(含边界)之间的随机整数。"; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/数值修约"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四舍五入"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "向下舍入"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "向上舍入"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "数字向上或向下舍入。"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "绝对值"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "平方根"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回一个数值的绝对值。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回e的n次幂。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回一个数值的自然对数。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回一个数值的以10为底的对数。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回一个数值的相反数。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回10的n次幂。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回一个数的平方根。"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函数"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回一个数值的反余弦值。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回一个数值的反正弦值。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回一个数值的反正切值。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的余弦值(非弧度)。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "创建颜色变量..."; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "创建数字变量..."; -Blockly.Msg["NEW_STRING_VARIABLE"] = "创建字符串变量..."; -Blockly.Msg["NEW_VARIABLE"] = "创建变量..."; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "新变量的名称:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新变量的类型:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "-"; -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允许声明"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "与:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "运行用户定义的函数“%1”。"; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "运行用户定义的函数“%1”,并使用它的输出值。"; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "与:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "创建“%1”"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述该功能..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "-"; -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做点什么"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "至"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "创建一个不带输出值的函数。"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "创建一个有输出值的函数。"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告:此函数具有重复参数。"; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "突出显示函数定义"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值为真,则返回第二个值。"; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:这个块只能在函数内部使用。"; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "输入名称:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加函数输入。"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "输入"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、移除或重新排此函数的输入。"; -Blockly.Msg["REDO"] = "重做"; -Blockly.Msg["REMOVE_COMMENT"] = "删除注释"; -Blockly.Msg["RENAME_VARIABLE"] = "重命名变量..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "将所有“%1”变量重命名为:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "在%1之后加上文本%2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "将一些文本追加到变量“%1”里。"; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "转为小写"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "转为首字母大写"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "转为大写"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "用不同的大小写模式复制并返回这段文字。"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "获取第一个字符"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "获取倒数第#个字符"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "获取第#个字符"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "获取最后一个字符"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "获取随机一个字符"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = "-"; -Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文本%1 里 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位于指定位置的字符。"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "计算%1在%2里出现的次数"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "计算在一段文本中,某个部分文本重复出现了多少次。"; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "将一个项添加到文本中。"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "拼接"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、移除或重新排列各节来重新配置这个文本块。"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到倒数第#个字符"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到第#个字符"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最后一个字符"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "从文本"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "获取子串,从第一个字符"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "获取子串,从倒数第#个字符"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "获取子串,从第#个字符"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "-"; -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回文本中指定的一部分。"; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "寻找第一次出现的文本"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "寻找最后一次出现的文本"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文本 %1 里 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "返回第一个文本段在第二个文本段中的第一/最后一个匹配项的起始位置。如果未找到,则返回%1。"; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1是空的"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果给定的文本为空,则返回真。"; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "创建文本,内容:"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通过串起任意数量的项以建立一段文本。"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1的长度"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回给定文本的字母数(包括空格)。"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "输出%1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "输出指定的文字、数字或其他值。"; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "要求用户输入数字。"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "要求用户输入一些文本。"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "要求输入数字,并显示提示消息"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "要求输入文本,并显示提示消息"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "把%3中的%1替换为%2"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "在一段文本中,将出现过的某部分文本都替换掉。"; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "倒转文本%1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "将文本中各个字符的顺序倒转。"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字符串"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一个字、词语或一行文本。"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除其两侧的空白"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除其左侧的空白"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除其右侧的空白"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "从某一端或同时从两端删除多余的空白,并返回这段文字的一个副本。"; -Blockly.Msg["TODAY"] = "今天"; -Blockly.Msg["UNDO"] = "撤销"; -Blockly.Msg["UNNAMED_KEY"] = "未命名"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "项目"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "创建“设定%1”"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此变量的值。"; -Blockly.Msg["VARIABLES_SET"] = "赋值 %1 为 %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "创建“获得%1”"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "设置此变量,以使它和输入值相等。"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "名字叫“%1”的变量已经存在了。"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "名字叫“%1”的变量已经有了另一个类型:“%2”。"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作区"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "说点什么..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "添加注释"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "不能删除变量“%1”,因为它是函数“%2”定义的一部分"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "更改值:"; +Blockly.Msg["CLEAN_UP"] = "整理块"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "已收起的信息块内包含警告。"; +Blockly.Msg["COLLAPSE_ALL"] = "折叠块"; +Blockly.Msg["COLLAPSE_BLOCK"] = "折叠块"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "颜色1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "颜色2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "把两种颜色以一个给定的比例(0.0-1.0)进行混合。"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/颜色"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "从调色板中选择一种颜色。"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "随机颜色"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "随机选择一种颜色。"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "蓝色"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "绿色"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "红色"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "颜色"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "跳出循环"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "继续下一轮循环"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "跳出包含它的循环。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳过本轮循环的剩余部分,并继进行续下一轮循环。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:这个块只能在循环内使用。"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "遍历列表 %2 里的每一项 %1"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍历列表中的每一项,将变量“%1”设为所选项,并执行一些语句。"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "变量 %1 从 %2 数到 %3 每次增加 %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "用变量%1记录从开始数值到终止数值之间的数值,数值按指定间隔增加,并执行指定的块。"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "在这个if语句块中增加一个条件。"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "在这个if语句块中添加一个最终的,包括所有其余情况的条件。"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "增加、删除或重新排列各节来重新配置这个if语句块。"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否则"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否则如果"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "如果值为真,执行一些语句。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "如果值为真,则执行第一块语句。否则,则执行第二块语句。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For循环"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "执行"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重复 %1 次"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "多次执行一些语句。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重复直到条件满足"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "当条件满足时重复"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "只要值为假,就一直循环执行一些语句。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "只要值为真,就一直循环执行一些语句。"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "删除所有 %1 个块吗?"; +Blockly.Msg["DELETE_BLOCK"] = "删除块"; +Blockly.Msg["DELETE_VARIABLE"] = "删除变量“%1”"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "要删除对变量“%2”的%1个引用吗?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "删除 %1 个块"; +Blockly.Msg["DIALOG_CANCEL"] = "取消"; +Blockly.Msg["DIALOG_OK"] = "确认"; +Blockly.Msg["DISABLE_BLOCK"] = "禁用块"; +Blockly.Msg["DUPLICATE_BLOCK"] = "复制"; +Blockly.Msg["DUPLICATE_COMMENT"] = "复制注释"; +Blockly.Msg["ENABLE_BLOCK"] = "启用块"; +Blockly.Msg["EXPAND_ALL"] = "展开块"; +Blockly.Msg["EXPAND_BLOCK"] = "展开块"; +Blockly.Msg["EXTERNAL_INPUTS"] = "外部输入"; +Blockly.Msg["HELP"] = "帮助"; +Blockly.Msg["INLINE_INPUTS"] = "单行输入"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "创建空列表"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一个列表,长度为 0,不包含任何数据记录"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "列表"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "增加、删除或重新排列各部分以此重新配置这个列表块。"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "创建列表,内容:"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "将一个项添加到列表中。"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一个具有任意数量项目的列表。"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一项"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒数第#项"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; +Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得并移除"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最后一项"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "随机的一项"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = "-"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回列表中的第一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在列表中的指定位置的项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回列表中的最后一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回列表中的随机一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除并返回列表中的第一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除并返回列表中的指定位置的项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除并返回列表中的最后一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除并返回列表中的随机一项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除列表中的第一项"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在列表中的指定位置的项。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除列表中的最后一项"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "删除列表中的随机一项。"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到倒数第#项"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到第#项"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到最后一项"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "获取子列表,从第一项"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "获取子列表,从倒数第#项"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "获取子列表,从第#项"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = "-"; +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "复制列表中指定的部分。"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1是最后一项。"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1是第一项。"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "寻找第一次出现的项"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "寻找最后一次出现的项"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。"; +Blockly.Msg["LISTS_INLIST"] = "在列表中"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1是空的"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果改列表为空,则返回真。"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "%1的长度"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回列表的长度。"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立列表使用项 %1 重复 %2 次"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立包含指定重复次数的值的列表。"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "倒转%1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "倒转一个列表,返回副本。"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "值为"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "插入在"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "设置"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "在列表的起始处添加该项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "在列表中指定位置插入项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "在列表的末尾处添加该项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "在列表的随机位置插入该项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "设置列表中的第一项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "设置在列表中指定位置的项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "设置列表中的最后一项。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "设置列表中的随机一项。"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序"; +Blockly.Msg["LISTS_SORT_TITLE"] = "排序%1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序一个列表,返回副本。"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "按字母(忽略大小写)"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "按数字"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "按字母"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "从文本制作列表"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "将列表合并为文本"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "加入文本列表至一个文本,由分隔符分隔。"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "将文本按指定的分隔符拆分为文本组成的列表。"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "分隔符:"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果两个输入结果相等,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一个输入结果比第二个大,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一个输入结果大于或等于第二个输入结果,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一个输入结果比第二个小,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一个输入结果小于或等于第二个输入结果,则返回真。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果两个输入结果不相等,则返回真。"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "非%1"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果输入结果为假,则返回真;如果输入结果为真,则返回假。"; +Blockly.Msg["LOGIC_NULL"] = "空"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "并且"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "或"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果两个输入结果都为真,则返回真。"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少有一个输入结果为真,则返回真。"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "断言"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/条件运算符"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果为假"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果为真"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "检查“断言”里的条件语句。如果条件为真,则返回“如果为真”的值,否则,则返回“如果为假”的值。"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算术"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回两个数值的和。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回两个数值的商。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回两个数值的差。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回两个数值的乘积。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回以第一个数值为底数,以第二个数值为幂的结果。"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/反正切2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "点(x:%1,y:%2)的方位角"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "返回点(X,Y)的反正切值,范围为-180到180度。"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "将 %1 增加 %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "为变量“%1”增加一个数值。"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/数学常数"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一个常见常量:π (3.141…)、e (2.718…)、φ (1.618…)、根号2 (1.414…)、根号二分之一 (0.707…)或∞ (无穷大)。"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "将 %1 限制在 最低 %2 到最高 %3 之间"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "将一个数值限制在两个指定的数值范围(含边界)之间。"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除"; +Blockly.Msg["MATH_IS_EVEN"] = "是偶数"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "是负数"; +Blockly.Msg["MATH_IS_ODD"] = "是奇数"; +Blockly.Msg["MATH_IS_POSITIVE"] = "是正数"; +Blockly.Msg["MATH_IS_PRIME"] = "是质数"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "检查一个数值是否是偶数、奇数、质数、自然数、正数、负数或者是否能被某数整除。返回真或假。"; +Blockly.Msg["MATH_IS_WHOLE"] = "是整数"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除"; +Blockly.Msg["MATH_MODULO_TITLE"] = "取 %1 ÷ %2 的余数"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "返回这两个数字相除后的余数。"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/数"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一个数值。"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "列表平均值"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "列表最大值"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "列表中位数"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "列表最小值"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "列表中的众数"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "列表中的随机一项"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "列表的标准差"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "列表中数值的和"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回列表中的数值的平均值。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回列表中最大值。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回列表中数值的中位数。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回列表中最小值。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回列表中的出现次数最多的项的列表。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "从列表中返回一个随机的元素。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回列表的标准差。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回列表中的所有数值的和。"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "随机小数"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "返回一个从0.0(含)到1.0(不含)之间的随机数。"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "从 %1 到 %2 范围内的随机整数"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "返回一个限制在两个指定数值的范围(含边界)之间的随机整数。"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/数值修约"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四舍五入"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "向下舍入"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "向上舍入"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "数字向上或向下舍入。"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "绝对值"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "平方根"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回一个数值的绝对值。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回e的n次幂。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回一个数值的自然对数。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回一个数值的以10为底的对数。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回一个数值的相反数。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回10的n次幂。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回一个数的平方根。"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函数"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回一个数值的反余弦值。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回一个数值的反正弦值。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回一个数值的反正切值。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的余弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "创建颜色变量..."; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "创建数字变量..."; +Blockly.Msg["NEW_STRING_VARIABLE"] = "创建字符串变量..."; +Blockly.Msg["NEW_VARIABLE"] = "创建变量..."; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "新变量的名称:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新变量的类型:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "-"; +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允许声明"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "与:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "运行用户定义的函数“%1”。"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "运行用户定义的函数“%1”,并使用它的输出值。"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "与:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "创建“%1”"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述该功能..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = "-"; +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做点什么"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "至"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "创建一个不带输出值的函数。"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "创建一个有输出值的函数。"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告:此函数具有重复参数。"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "突出显示函数定义"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值为真,则返回第二个值。"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:这个块只能在函数内部使用。"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "输入名称:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加函数输入。"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "输入"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、移除或重新排此函数的输入。"; +Blockly.Msg["REDO"] = "重做"; +Blockly.Msg["REMOVE_COMMENT"] = "删除注释"; +Blockly.Msg["RENAME_VARIABLE"] = "重命名变量..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "将所有“%1”变量重命名为:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "在%1之后加上文本%2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "将一些文本追加到变量“%1”里。"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "转为小写"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "转为首字母大写"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "转为大写"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "用不同的大小写模式复制并返回这段文字。"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "获取第一个字符"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "获取倒数第#个字符"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "获取第#个字符"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "获取最后一个字符"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "获取随机一个字符"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = "-"; +Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文本%1 里 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位于指定位置的字符。"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "计算%1在%2里出现的次数"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "计算在一段文本中,某个部分文本重复出现了多少次。"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "将一个项添加到文本中。"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "拼接"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、移除或重新排列各节来重新配置这个文本块。"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到倒数第#个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到第#个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最后一个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "从文本"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "获取子串,从第一个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "获取子串,从倒数第#个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "获取子串,从第#个字符"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "-"; +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回文本中指定的一部分。"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "寻找第一次出现的文本"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "寻找最后一次出现的文本"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文本 %1 里 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "返回第一个文本段在第二个文本段中的第一/最后一个匹配项的起始位置。如果未找到,则返回%1。"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1是空的"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果给定的文本为空,则返回真。"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "创建文本,内容:"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通过串起任意数量的项以建立一段文本。"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "%1的长度"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回给定文本的字母数(包括空格)。"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "输出%1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "输出指定的文字、数字或其他值。"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "要求用户输入数字。"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "要求用户输入一些文本。"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "要求输入数字,并显示提示消息"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "要求输入文本,并显示提示消息"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "把%3中的%1替换为%2"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "在一段文本中,将出现过的某部分文本都替换掉。"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "倒转文本%1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "将文本中各个字符的顺序倒转。"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字符串"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一个字、词语或一行文本。"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除其两侧的空白"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除其左侧的空白"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除其右侧的空白"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "从某一端或同时从两端删除多余的空白,并返回这段文字的一个副本。"; +Blockly.Msg["TODAY"] = "今天"; +Blockly.Msg["UNDO"] = "撤销"; +Blockly.Msg["UNNAMED_KEY"] = "未命名"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "项目"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "创建“设定%1”"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此变量的值。"; +Blockly.Msg["VARIABLES_SET"] = "赋值 %1 为 %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "创建“获得%1”"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "设置此变量,以使它和输入值相等。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "名字叫“%1”的变量已经存在了。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "名字叫“%1”的变量已经有了另一个类型:“%2”。"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作区"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "说点什么..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/js/zh-hant.js b/msg/js/zh-hant.js index 0ab34e8671a..0c4cf77b82b 100644 --- a/msg/js/zh-hant.js +++ b/msg/js/zh-hant.js @@ -1,425 +1,425 @@ -// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || { Msg: Object.create(null) }; - -Blockly.Msg["ADD_COMMENT"] = "加入註解"; -Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "無法刪除變數「%1」,因為這是功能「%2」定義的一部份內容"; -Blockly.Msg["CHANGE_VALUE_TITLE"] = "修改值:"; -Blockly.Msg["CLEAN_UP"] = "整理區塊"; -Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "收合含有警告的區塊。"; -Blockly.Msg["COLLAPSE_ALL"] = "收合區塊"; -Blockly.Msg["COLLAPSE_BLOCK"] = "收合區塊"; -Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "顏色 1"; -Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "顏色 2"; -Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated -Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例"; -Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合"; -Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "用一個給定的比率(0.0-1.0)混合兩種顏色。"; -Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/顏色"; -Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "從調色板中選擇一種顏色。"; -Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated -Blockly.Msg["COLOUR_RANDOM_TITLE"] = "隨機顏色"; -Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "隨機選擇一種顏色。"; -Blockly.Msg["COLOUR_RGB_BLUE"] = "藍"; -Blockly.Msg["COLOUR_RGB_GREEN"] = "綠"; -Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated -Blockly.Msg["COLOUR_RGB_RED"] = "紅"; -Blockly.Msg["COLOUR_RGB_TITLE"] = "顏色"; -Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "中斷循環"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "繼續下一個循環"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "中斷當前的循環。"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳過這個循環的其餘步驟,並繼續下一次的循環。"; -Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:此區塊僅可用於循環內。"; -Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated -Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "為列表 %2 裡的每一項 %1"; -Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍歷每個清單中的項目,將變數「%1」設定到該項目中,然後執行某些陳述式。"; -Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated -Blockly.Msg["CONTROLS_FOR_TITLE"] = "循環計數 %1 從 %2 到 %3 每次增加 %4"; -Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "從起始數到結尾數中取出變數「%1」的值,按指定的時間間隔,執行指定的區塊。"; -Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "添加條件到「如果」積木。"; -Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "加入一個最終、所有條件都執行的部份到「如果」區塊中。"; -Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated -Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。"; -Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否則"; -Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否則,如果"; -Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "當值為 true 時,執行一些陳述式。"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "當值為 true 時,執行第一個陳述式。否則,執行第二個陳述式。"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一個值為 true,則執行第一個陳述式。否則,當第二個值為 true 時,則執行第二個陳述式。"; -Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一個值為 true,則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。如果前幾個敘述都不為 ture,則執行最後一個陳述式。"; -Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For迴圈"; -Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "執行"; -Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重複%1次"; -Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "重複執行指定的陳述式多次。"; -Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重複直到"; -Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "重複,當"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "當值為 false 時,執行一些陳述式。"; -Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "當值為 true 時,執行一些陳述式。"; -Blockly.Msg["DELETE_ALL_BLOCKS"] = "刪除全部 %1 個區塊?"; -Blockly.Msg["DELETE_BLOCK"] = "刪除區塊"; -Blockly.Msg["DELETE_VARIABLE"] = "刪除變數「%1」"; -Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "刪除使用%1次的「%2」變數?"; -Blockly.Msg["DELETE_X_BLOCKS"] = "刪除%1個積木"; -Blockly.Msg["DIALOG_CANCEL"] = "取消"; -Blockly.Msg["DIALOG_OK"] = "確定"; -Blockly.Msg["DISABLE_BLOCK"] = "停用區塊"; -Blockly.Msg["DUPLICATE_BLOCK"] = "重複"; -Blockly.Msg["DUPLICATE_COMMENT"] = "複製註解"; -Blockly.Msg["ENABLE_BLOCK"] = "啟用積木"; -Blockly.Msg["EXPAND_ALL"] = "展開積木"; -Blockly.Msg["EXPAND_BLOCK"] = "展開區塊"; -Blockly.Msg["EXTERNAL_INPUTS"] = "外部輸入"; -Blockly.Msg["HELP"] = "說明"; -Blockly.Msg["INLINE_INPUTS"] = "單行輸入"; -Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated -Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "建立空的清單"; -Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "清單"; -Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個清單區塊。"; -Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "使用這些值建立清單"; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "添加一個項目到清單裡。"; -Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一個具備任意數量項目的清單。"; -Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一筆"; -Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒數第 # 筆"; -Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated -Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得"; -Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得並移除"; -Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最後一筆"; -Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "隨機"; -Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除"; -Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回清單中的第一個項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在清單中指定位置的項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回清單中的最後一個項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回清單中隨機一個項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除並返回清單中的第一個項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除並返回清單中的指定位置的項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除並返回清單中的最後一個項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除並返回清單中的隨機項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除清單中的第一個項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在清單中指定位置的項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除清單中的最後一個項目。"; -Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "移除清單中隨機一個項目。"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到 # 倒數"; -Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到 #"; -Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到 最後面"; -Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "取得子清單 從 最前面"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "取得子清單 從 # 倒數"; -Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "取得子清單 從 #"; -Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated -Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "複製清單中指定的部分。"; -Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 是最後一個項目。"; -Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 是第一個項目。"; -Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "從 最前面 索引項目"; -Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated -Blockly.Msg["LISTS_INDEX_OF_LAST"] = "從 最後面 索引項目"; -Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。"; -Blockly.Msg["LISTS_INLIST"] = "自清單"; -Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated -Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 值為空"; -Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果該清單為空,則返回 true。"; -Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated -Blockly.Msg["LISTS_LENGTH_TITLE"] = "長度 %1"; -Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回清單的長度(項目數)。"; -Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated -Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立清單使用項目 %1 重複 %2 次"; -Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立一個清單,項目中包含指定重複次數的值。"; -Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; -Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "反轉%1"; -Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "反轉清單的複製內容。"; -Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated -Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "為"; -Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "添加"; -Blockly.Msg["LISTS_SET_INDEX_SET"] = "設定"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "添加一個項目到清單中的第一個位置。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "添加一個項目到清單中的指定位置。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "添加一個項目到清單中的最後一個位置。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "添加一個項目到清單中的隨機位置。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "設定清單中的第一個項目。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "設定清單中指定位置的項目。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "設定清單中的最後一個項目。"; -Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "設定清單中隨機一個項目。"; -Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; -Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序"; -Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序"; -Blockly.Msg["LISTS_SORT_TITLE"] = "排列 %1 %2 %3"; -Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序清單的複製內容。"; -Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "依字母排序,忽略大小寫"; -Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "依數字"; -Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "依字母"; -Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated -Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "從文本製作清單"; -Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "從清單拆出文本"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "串起清單項目成一個文本,並用分隔符號分開。"; -Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "將文本變成清單項目,按分隔符號拆分。"; -Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "用分隔符"; -Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假"; -Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated -Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。"; -Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真"; -Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果這兩個輸入區塊的結果相等,返回 true。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一個輸入結果大於第二個,返回 true。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一個輸入結果大於或等於第二個,返回 true。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一個輸入結果比第二個小,返回 true。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一個輸入結果小於或等於第二個,返回 true。"; -Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果這兩個輸入區塊的結果不相等,返回 true。"; -Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated -Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 不成立"; -Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果輸入結果是 false,則返回 true。如果輸入結果是 true,則返回 false。"; -Blockly.Msg["LOGIC_NULL"] = "空"; -Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated -Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。"; -Blockly.Msg["LOGIC_OPERATION_AND"] = "和"; -Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated -Blockly.Msg["LOGIC_OPERATION_OR"] = "或"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果兩個輸入結果都為 true,則返回 true。"; -Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少一個輸入結果為 true,返回 true。"; -Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "測試"; -Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/條件運算符"; -Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果為假"; -Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果為真"; -Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。"; -Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated -Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算術"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回兩個數字的總和。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回兩個數字的商。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回兩個數字的差。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回兩個數字的乘積。"; -Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回第二個數字的指數的第一個數字。"; -Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/Atan2"; -Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 的 Atan2"; -Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "回傳點(X,Y)從 -180 至 180 度的反正切值。"; -Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法"; -Blockly.Msg["MATH_CHANGE_TITLE"] = "修改 %1 自 %2"; -Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "將數字加到變數「%1」。"; -Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/數學常數"; -Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。"; -Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated -Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "限制數字 %1 介於(低)%2 到(高)%3"; -Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "限制數字介於兩個指定的數字之間(包含)。"; -Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated -Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除"; -Blockly.Msg["MATH_IS_EVEN"] = "是偶數"; -Blockly.Msg["MATH_IS_NEGATIVE"] = "是負數"; -Blockly.Msg["MATH_IS_ODD"] = "是奇數"; -Blockly.Msg["MATH_IS_POSITIVE"] = "是正值"; -Blockly.Msg["MATH_IS_PRIME"] = "是質數"; -Blockly.Msg["MATH_IS_TOOLTIP"] = "如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。"; -Blockly.Msg["MATH_IS_WHOLE"] = "是整數"; -Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除"; -Blockly.Msg["MATH_MODULO_TITLE"] = "%1 除以 %2 的餘數"; -Blockly.Msg["MATH_MODULO_TOOLTIP"] = "回傳兩個數字相除的餘數。"; -Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated -Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/數"; -Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一個數字。"; -Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated -Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "平均數 自清單"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "最大值 自清單"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "中位數 自清單"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "最小值 自清單"; -Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "比較眾數 自清單"; -Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "隨機抽取 自清單"; -Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "標準差 自清單"; -Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "數字總和 自清單"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回清單中數值的平均值(算術平均值)。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回清單項目中最大的數字。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回清單中數值的中位數。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回清單項目中最小的數字。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回一個清單中的最常見的項目。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "從清單中返回一個隨機的項目。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回清單中數字的標準差。"; -Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回清單中的所有數字的總和。"; -Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated -Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器"; -Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "隨機取分數"; -Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "在 0.0(包含)和 1.0(不包含)之間隨機取一個數。"; -Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器"; -Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "隨機取數 %1 到 %2"; -Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "在指定二個數之間隨機取一個數(包含)。"; -Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/數值簡化"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四捨五入"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "無條件捨去"; -Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "無條件進位"; -Blockly.Msg["MATH_ROUND_TOOLTIP"] = "將數字無條件進位或無條件捨去。"; -Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根"; -Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "絕對值"; -Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "開根號"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回指定數字的絕對值。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回指定數字指數的e的冪次。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回指定數字的自然對數。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回指定數字的對數。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回指定數字的相反數。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回指定數字指數的10的冪次。"; -Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回指定數字的平方根。"; -Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated -Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated -Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated -Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated -Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated -Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函數"; -Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated -Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated -Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回指定角度的反餘弦值(非弧度)。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回指定角度的反正弦值(非弧度)。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回指定角度的反正切值。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的餘弦值(非弧度)。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。"; -Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。"; -Blockly.Msg["NEW_COLOUR_VARIABLE"] = "建立顏色變數…"; -Blockly.Msg["NEW_NUMBER_VARIABLE"] = "建立數值變數……"; -Blockly.Msg["NEW_STRING_VARIABLE"] = "建立字串變數……"; -Blockly.Msg["NEW_VARIABLE"] = "建立變數…"; -Blockly.Msg["NEW_VARIABLE_TITLE"] = "新變數名稱:"; -Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新變數類型:"; -Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated -Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允許陳述式"; -Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "與:"; -Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式"; -Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "執行使用者定義的函式「%1」。"; -Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F"; -Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "執行使用者定義的函式「%1」,並使用它的回傳值。"; -Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "與:"; -Blockly.Msg["PROCEDURES_CREATE_DO"] = "建立「%1」"; -Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述此函式..."; -Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated -Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式"; -Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做些什麼"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "到"; -Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "創建一個無回傳值的函式。"; -Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式"; -Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回"; -Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "創建一個有回傳值的的函式。"; -Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告: 此函式中有重複的參數。"; -Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "反白顯示函式定義"; -Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated -Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值為 true,則返回第二個值。"; -Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:這個區塊只可以在定義函式時使用。"; -Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "輸入名稱:"; -Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加一個輸入區塊到函式。"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "輸入"; -Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、刪除或重新排列此函式的輸入。"; -Blockly.Msg["REDO"] = "重做"; -Blockly.Msg["REMOVE_COMMENT"] = "移除註解"; -Blockly.Msg["RENAME_VARIABLE"] = "重新命名變數..."; -Blockly.Msg["RENAME_VARIABLE_TITLE"] = "將所有「%1」變數重新命名為:"; -Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_APPEND_TITLE"] = "至 %1 套用文字 %2"; -Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "添加一些文字到變數「%1」之後。"; -Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "轉成英文小寫"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "轉成英文首字大寫"; -Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "轉成英文大寫"; -Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "使用不同的大小寫複製這段文字。"; -Blockly.Msg["TEXT_CHARAT_FIRST"] = "取得 第一個字元"; -Blockly.Msg["TEXT_CHARAT_FROM_END"] = "取得 倒數第 # 個字元"; -Blockly.Msg["TEXT_CHARAT_FROM_START"] = "取得 字元 #"; -Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated -Blockly.Msg["TEXT_CHARAT_LAST"] = "取得 最後一個字元"; -Blockly.Msg["TEXT_CHARAT_RANDOM"] = "取得 任意字元"; -Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文字 %1 %2"; -Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位於指定位置的字元。"; -Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; -Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "在%2計算%1"; -Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "計算某些文字在內容裡的出現次數。"; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "添加一個項目到字串中。"; -Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "加入"; -Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個文字區塊。"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到 倒數第 # 個字元"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到 字元 #"; -Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最後一個字元"; -Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "在字串"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "取得 第一個字元"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "取得 倒數第 # 個字元"; -Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "取得 字元 #"; -Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated -Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回指定的部分文字。"; -Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated -Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "從 最前面 索引字串"; -Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "從 最後面 索引字串"; -Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文字 %1 %2 %3"; -Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "在字串1中檢索是否有包含字串2,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。"; -Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated -Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 為空"; -Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果提供的字串為空,則返回 true。"; -Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated -Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "字串組合"; -Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通過連接任意數量的項目來建立一串文字。"; -Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated -Blockly.Msg["TEXT_LENGTH_TITLE"] = "長度 %1"; -Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回這串文字的字元數(包含空格)。"; -Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated -Blockly.Msg["TEXT_PRINT_TITLE"] = "輸出 %1"; -Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "輸出指定的文字、 數字或其他值。"; -Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated -Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "輸入數字"; -Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "輸入文字"; -Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "輸入 數字 並顯示提示訊息"; -Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "輸入 文字 並顯示提示訊息"; -Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; -Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "在%3以%2取代%1"; -Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "取代在內容裡的全部某些文字。"; -Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; -Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "反轉%1"; -Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "反轉排序在文字裡的字元。"; -Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字串"; -Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一個字元、一個單詞,或一串文字。"; -Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated -Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除兩側空格"; -Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除左側空格"; -Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除右側空格"; -Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "複製這段文字,同時刪除兩端多餘的空格。"; -Blockly.Msg["TODAY"] = "今天"; -Blockly.Msg["UNDO"] = "還原"; -Blockly.Msg["UNNAMED_KEY"] = "未命名"; -Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "項目"; -Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "建立「賦值 %1」"; -Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated -Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此變數的值。"; -Blockly.Msg["VARIABLES_SET"] = "賦值 %1 成 %2"; -Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "建立「取得 %1」"; -Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated -Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "設定此變數,好和輸入結果相等。"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "已存在變數「%1」。"; -Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "已存在名為「%1」,且用於其它類型「%2」的變數。"; -Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作區"; -Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "來說些事情..."; -Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; -Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; -Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; -Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; -Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; -Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; -Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; -Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; -Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; -Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; -Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; -Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; - -Blockly.Msg["MATH_HUE"] = "230"; -Blockly.Msg["LOOPS_HUE"] = "120"; -Blockly.Msg["LISTS_HUE"] = "260"; -Blockly.Msg["LOGIC_HUE"] = "210"; -Blockly.Msg["VARIABLES_HUE"] = "330"; -Blockly.Msg["TEXTS_HUE"] = "160"; -Blockly.Msg["PROCEDURES_HUE"] = "290"; -Blockly.Msg["COLOUR_HUE"] = "20"; +// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || { Msg: Object.create(null) }; + +Blockly.Msg["ADD_COMMENT"] = "加入註解"; +Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "無法刪除變數「%1」,因為這是功能「%2」定義的一部份內容"; +Blockly.Msg["CHANGE_VALUE_TITLE"] = "修改值:"; +Blockly.Msg["CLEAN_UP"] = "整理區塊"; +Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "收合含有警告的區塊。"; +Blockly.Msg["COLLAPSE_ALL"] = "收合區塊"; +Blockly.Msg["COLLAPSE_BLOCK"] = "收合區塊"; +Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "顏色 1"; +Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "顏色 2"; +Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated +Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例"; +Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合"; +Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "用一個給定的比率(0.0-1.0)混合兩種顏色。"; +Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/顏色"; +Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "從調色板中選擇一種顏色。"; +Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated +Blockly.Msg["COLOUR_RANDOM_TITLE"] = "隨機顏色"; +Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "隨機選擇一種顏色。"; +Blockly.Msg["COLOUR_RGB_BLUE"] = "藍"; +Blockly.Msg["COLOUR_RGB_GREEN"] = "綠"; +Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated +Blockly.Msg["COLOUR_RGB_RED"] = "紅"; +Blockly.Msg["COLOUR_RGB_TITLE"] = "顏色"; +Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "中斷循環"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "繼續下一個循環"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "中斷當前的循環。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳過這個循環的其餘步驟,並繼續下一次的循環。"; +Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:此區塊僅可用於循環內。"; +Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "為列表 %2 裡的每一項 %1"; +Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍歷每個清單中的項目,將變數「%1」設定到該項目中,然後執行某些陳述式。"; +Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg["CONTROLS_FOR_TITLE"] = "循環計數 %1 從 %2 到 %3 每次增加 %4"; +Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "從起始數到結尾數中取出變數「%1」的值,按指定的時間間隔,執行指定的區塊。"; +Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "添加條件到「如果」積木。"; +Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "加入一個最終、所有條件都執行的部份到「如果」區塊中。"; +Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。"; +Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否則"; +Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否則,如果"; +Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "當值為 true 時,執行一些陳述式。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "當值為 true 時,執行第一個陳述式。否則,執行第二個陳述式。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一個值為 true,則執行第一個陳述式。否則,當第二個值為 true 時,則執行第二個陳述式。"; +Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一個值為 true,則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。如果前幾個敘述都不為 ture,則執行最後一個陳述式。"; +Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For迴圈"; +Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "執行"; +Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重複%1次"; +Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "重複執行指定的陳述式多次。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重複直到"; +Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "重複,當"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "當值為 false 時,執行一些陳述式。"; +Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "當值為 true 時,執行一些陳述式。"; +Blockly.Msg["DELETE_ALL_BLOCKS"] = "刪除全部 %1 個區塊?"; +Blockly.Msg["DELETE_BLOCK"] = "刪除區塊"; +Blockly.Msg["DELETE_VARIABLE"] = "刪除變數「%1」"; +Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "刪除使用%1次的「%2」變數?"; +Blockly.Msg["DELETE_X_BLOCKS"] = "刪除%1個積木"; +Blockly.Msg["DIALOG_CANCEL"] = "取消"; +Blockly.Msg["DIALOG_OK"] = "確定"; +Blockly.Msg["DISABLE_BLOCK"] = "停用區塊"; +Blockly.Msg["DUPLICATE_BLOCK"] = "重複"; +Blockly.Msg["DUPLICATE_COMMENT"] = "複製註解"; +Blockly.Msg["ENABLE_BLOCK"] = "啟用積木"; +Blockly.Msg["EXPAND_ALL"] = "展開積木"; +Blockly.Msg["EXPAND_BLOCK"] = "展開區塊"; +Blockly.Msg["EXTERNAL_INPUTS"] = "外部輸入"; +Blockly.Msg["HELP"] = "說明"; +Blockly.Msg["INLINE_INPUTS"] = "單行輸入"; +Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "建立空的清單"; +Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "清單"; +Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個清單區塊。"; +Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "使用這些值建立清單"; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "添加一個項目到清單裡。"; +Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一個具備任意數量項目的清單。"; +Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一筆"; +Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒數第 # 筆"; +Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated +Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得"; +Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得並移除"; +Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最後一筆"; +Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "隨機"; +Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除"; +Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回清單中的第一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在清單中指定位置的項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回清單中的最後一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回清單中隨機一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除並返回清單中的第一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除並返回清單中的指定位置的項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除並返回清單中的最後一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除並返回清單中的隨機項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除清單中的第一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在清單中指定位置的項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除清單中的最後一個項目。"; +Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "移除清單中隨機一個項目。"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到 # 倒數"; +Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到 #"; +Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到 最後面"; +Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "取得子清單 從 最前面"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "取得子清單 從 # 倒數"; +Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "取得子清單 從 #"; +Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated +Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "複製清單中指定的部分。"; +Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 是最後一個項目。"; +Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 是第一個項目。"; +Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "從 最前面 索引項目"; +Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg["LISTS_INDEX_OF_LAST"] = "從 最後面 索引項目"; +Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。"; +Blockly.Msg["LISTS_INLIST"] = "自清單"; +Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 值為空"; +Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果該清單為空,則返回 true。"; +Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg["LISTS_LENGTH_TITLE"] = "長度 %1"; +Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回清單的長度(項目數)。"; +Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立清單使用項目 %1 重複 %2 次"; +Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立一個清單,項目中包含指定重複次數的值。"; +Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list"; +Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "反轉%1"; +Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "反轉清單的複製內容。"; +Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "為"; +Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "添加"; +Blockly.Msg["LISTS_SET_INDEX_SET"] = "設定"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "添加一個項目到清單中的第一個位置。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "添加一個項目到清單中的指定位置。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "添加一個項目到清單中的最後一個位置。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "添加一個項目到清單中的隨機位置。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "設定清單中的第一個項目。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "設定清單中指定位置的項目。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "設定清單中的最後一個項目。"; +Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "設定清單中隨機一個項目。"; +Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序"; +Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序"; +Blockly.Msg["LISTS_SORT_TITLE"] = "排列 %1 %2 %3"; +Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序清單的複製內容。"; +Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "依字母排序,忽略大小寫"; +Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "依數字"; +Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "依字母"; +Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "從文本製作清單"; +Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "從清單拆出文本"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "串起清單項目成一個文本,並用分隔符號分開。"; +Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "將文本變成清單項目,按分隔符號拆分。"; +Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "用分隔符"; +Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假"; +Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。"; +Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真"; +Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果這兩個輸入區塊的結果相等,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一個輸入結果大於第二個,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一個輸入結果大於或等於第二個,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一個輸入結果比第二個小,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一個輸入結果小於或等於第二個,返回 true。"; +Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果這兩個輸入區塊的結果不相等,返回 true。"; +Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 不成立"; +Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果輸入結果是 false,則返回 true。如果輸入結果是 true,則返回 false。"; +Blockly.Msg["LOGIC_NULL"] = "空"; +Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。"; +Blockly.Msg["LOGIC_OPERATION_AND"] = "和"; +Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg["LOGIC_OPERATION_OR"] = "或"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果兩個輸入結果都為 true,則返回 true。"; +Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少一個輸入結果為 true,返回 true。"; +Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "測試"; +Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/條件運算符"; +Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果為假"; +Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果為真"; +Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。"; +Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated +Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算術"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回兩個數字的總和。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回兩個數字的商。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回兩個數字的差。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回兩個數字的乘積。"; +Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回第二個數字的指數的第一個數字。"; +Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/Atan2"; +Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 的 Atan2"; +Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "回傳點(X,Y)從 -180 至 180 度的反正切值。"; +Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法"; +Blockly.Msg["MATH_CHANGE_TITLE"] = "修改 %1 自 %2"; +Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "將數字加到變數「%1」。"; +Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/數學常數"; +Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。"; +Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated +Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "限制數字 %1 介於(低)%2 到(高)%3"; +Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "限制數字介於兩個指定的數字之間(包含)。"; +Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated +Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除"; +Blockly.Msg["MATH_IS_EVEN"] = "是偶數"; +Blockly.Msg["MATH_IS_NEGATIVE"] = "是負數"; +Blockly.Msg["MATH_IS_ODD"] = "是奇數"; +Blockly.Msg["MATH_IS_POSITIVE"] = "是正值"; +Blockly.Msg["MATH_IS_PRIME"] = "是質數"; +Blockly.Msg["MATH_IS_TOOLTIP"] = "如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。"; +Blockly.Msg["MATH_IS_WHOLE"] = "是整數"; +Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除"; +Blockly.Msg["MATH_MODULO_TITLE"] = "%1 除以 %2 的餘數"; +Blockly.Msg["MATH_MODULO_TOOLTIP"] = "回傳兩個數字相除的餘數。"; +Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated +Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/數"; +Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一個數字。"; +Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated +Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "平均數 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "最大值 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "中位數 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "最小值 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "比較眾數 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "隨機抽取 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "標準差 自清單"; +Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "數字總和 自清單"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回清單中數值的平均值(算術平均值)。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回清單項目中最大的數字。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回清單中數值的中位數。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回清單項目中最小的數字。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回一個清單中的最常見的項目。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "從清單中返回一個隨機的項目。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回清單中數字的標準差。"; +Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回清單中的所有數字的總和。"; +Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated +Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器"; +Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "隨機取分數"; +Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "在 0.0(包含)和 1.0(不包含)之間隨機取一個數。"; +Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器"; +Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "隨機取數 %1 到 %2"; +Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "在指定二個數之間隨機取一個數(包含)。"; +Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/數值簡化"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四捨五入"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "無條件捨去"; +Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "無條件進位"; +Blockly.Msg["MATH_ROUND_TOOLTIP"] = "將數字無條件進位或無條件捨去。"; +Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根"; +Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "絕對值"; +Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "開根號"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回指定數字的絕對值。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回指定數字指數的e的冪次。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回指定數字的自然對數。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回指定數字的對數。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回指定數字的相反數。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回指定數字指數的10的冪次。"; +Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回指定數字的平方根。"; +Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated +Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated +Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated +Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated +Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated +Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函數"; +Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated +Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated +Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回指定角度的反餘弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回指定角度的反正弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回指定角度的反正切值。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的餘弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。"; +Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。"; +Blockly.Msg["NEW_COLOUR_VARIABLE"] = "建立顏色變數…"; +Blockly.Msg["NEW_NUMBER_VARIABLE"] = "建立數值變數……"; +Blockly.Msg["NEW_STRING_VARIABLE"] = "建立字串變數……"; +Blockly.Msg["NEW_VARIABLE"] = "建立變數…"; +Blockly.Msg["NEW_VARIABLE_TITLE"] = "新變數名稱:"; +Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新變數類型:"; +Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated +Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允許陳述式"; +Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "與:"; +Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式"; +Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "執行使用者定義的函式「%1」。"; +Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F"; +Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "執行使用者定義的函式「%1」,並使用它的回傳值。"; +Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "與:"; +Blockly.Msg["PROCEDURES_CREATE_DO"] = "建立「%1」"; +Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述此函式..."; +Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated +Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式"; +Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做些什麼"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "到"; +Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "創建一個無回傳值的函式。"; +Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式"; +Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回"; +Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "創建一個有回傳值的的函式。"; +Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告: 此函式中有重複的參數。"; +Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "反白顯示函式定義"; +Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值為 true,則返回第二個值。"; +Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:這個區塊只可以在定義函式時使用。"; +Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "輸入名稱:"; +Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加一個輸入區塊到函式。"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "輸入"; +Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、刪除或重新排列此函式的輸入。"; +Blockly.Msg["REDO"] = "重做"; +Blockly.Msg["REMOVE_COMMENT"] = "移除註解"; +Blockly.Msg["RENAME_VARIABLE"] = "重新命名變數..."; +Blockly.Msg["RENAME_VARIABLE_TITLE"] = "將所有「%1」變數重新命名為:"; +Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_APPEND_TITLE"] = "至 %1 套用文字 %2"; +Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "添加一些文字到變數「%1」之後。"; +Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "轉成英文小寫"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "轉成英文首字大寫"; +Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "轉成英文大寫"; +Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "使用不同的大小寫複製這段文字。"; +Blockly.Msg["TEXT_CHARAT_FIRST"] = "取得 第一個字元"; +Blockly.Msg["TEXT_CHARAT_FROM_END"] = "取得 倒數第 # 個字元"; +Blockly.Msg["TEXT_CHARAT_FROM_START"] = "取得 字元 #"; +Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg["TEXT_CHARAT_LAST"] = "取得 最後一個字元"; +Blockly.Msg["TEXT_CHARAT_RANDOM"] = "取得 任意字元"; +Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文字 %1 %2"; +Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位於指定位置的字元。"; +Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings"; +Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "在%2計算%1"; +Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "計算某些文字在內容裡的出現次數。"; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "添加一個項目到字串中。"; +Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "加入"; +Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個文字區塊。"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到 倒數第 # 個字元"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到 字元 #"; +Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最後一個字元"; +Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "在字串"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "取得 第一個字元"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "取得 倒數第 # 個字元"; +Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "取得 字元 #"; +Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated +Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回指定的部分文字。"; +Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "從 最前面 索引字串"; +Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "從 最後面 索引字串"; +Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文字 %1 %2 %3"; +Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "在字串1中檢索是否有包含字串2,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。"; +Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 為空"; +Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果提供的字串為空,則返回 true。"; +Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated +Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "字串組合"; +Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通過連接任意數量的項目來建立一串文字。"; +Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg["TEXT_LENGTH_TITLE"] = "長度 %1"; +Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回這串文字的字元數(包含空格)。"; +Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg["TEXT_PRINT_TITLE"] = "輸出 %1"; +Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "輸出指定的文字、 數字或其他值。"; +Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "輸入數字"; +Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "輸入文字"; +Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "輸入 數字 並顯示提示訊息"; +Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "輸入 文字 並顯示提示訊息"; +Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings"; +Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "在%3以%2取代%1"; +Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "取代在內容裡的全部某些文字。"; +Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text"; +Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "反轉%1"; +Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "反轉排序在文字裡的字元。"; +Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字串"; +Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一個字元、一個單詞,或一串文字。"; +Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除兩側空格"; +Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除左側空格"; +Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除右側空格"; +Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "複製這段文字,同時刪除兩端多餘的空格。"; +Blockly.Msg["TODAY"] = "今天"; +Blockly.Msg["UNDO"] = "還原"; +Blockly.Msg["UNNAMED_KEY"] = "未命名"; +Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "項目"; +Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "建立「賦值 %1」"; +Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此變數的值。"; +Blockly.Msg["VARIABLES_SET"] = "賦值 %1 成 %2"; +Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "建立「取得 %1」"; +Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "設定此變數,好和輸入結果相等。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "已存在變數「%1」。"; +Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "已存在名為「%1」,且用於其它類型「%2」的變數。"; +Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作區"; +Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "來說些事情..."; +Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"]; +Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"]; +Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"]; +Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"]; +Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"]; +Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"]; +Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"]; +Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"]; +Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"]; +Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"]; +Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; +Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"]; + +Blockly.Msg["MATH_HUE"] = "230"; +Blockly.Msg["LOOPS_HUE"] = "120"; +Blockly.Msg["LISTS_HUE"] = "260"; +Blockly.Msg["LOGIC_HUE"] = "210"; +Blockly.Msg["VARIABLES_HUE"] = "330"; +Blockly.Msg["TEXTS_HUE"] = "160"; +Blockly.Msg["PROCEDURES_HUE"] = "290"; +Blockly.Msg["COLOUR_HUE"] = "20"; Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310"; \ No newline at end of file diff --git a/msg/json/ab.json b/msg/json/ab.json index afc2f0017a9..4ae31a043ac 100644 --- a/msg/json/ab.json +++ b/msg/json/ab.json @@ -1,222 +1,222 @@ -{ - "@metadata": { - "authors": [ - "Pupsik-ipa", - "Абухба Андрей", - "Андрей" - ] - }, - "VARIABLES_DEFAULT_NAME": "аелемент", - "TODAY": "Иахьа", - "DUPLICATE_BLOCK": "Акопиа ахыхтәуп", - "ADD_COMMENT": "Иацҵатәуп ахцәажәара", - "REMOVE_COMMENT": "Ианыхтәуп ахцәажәара", - "DELETE_BLOCK": "Ианыхтәуп аблок", - "DELETE_X_BLOCKS": "Ианыхтәуп %1 блокк", - "DELETE_ALL_BLOCKS": "Ианыхтәуп аблокқәа (%1) зегьы?", - "CLEAN_UP": "Иқәгатәуп аблокқәа", - "COLLAPSE_BLOCK": "Иеикәрҳәтәуп Аблокқәа", - "COLLAPSE_ALL": "Иеикәрҳәтәуп Аблокқәа", - "EXPAND_BLOCK": "Иаарԥштәуп Аблокқәа", - "EXPAND_ALL": "Иаарԥштәуп Аблокқәа", - "DISABLE_BLOCK": "Иаҿыхтәуп Аблок", - "ENABLE_BLOCK": "Иаҿыхтәуп Аблокқәа", - "HELP": "Ацхыраара", - "UNDO": "Иаҟәыхтәуп", - "REDO": "Аиҭаҟаҵара", - "CHANGE_VALUE_TITLE": "Ишәыԥсах аҵакы", - "RENAME_VARIABLE": "Аҽеиҭак ахьӡ ԥсахтәуп", - "RENAME_VARIABLE_TITLE": "Аҽеиҭакқәа'%1' зегь рыхьӡ ԥсахтәуп аҟны:", - "NEW_VARIABLE": "Иаԥҵатәуп аҽеиҭак", - "NEW_VARIABLE_TITLE": "Аҽеиҭак ахьӡ ҿыц:", - "VARIABLE_ALREADY_EXISTS": "Аҽеиҭак ахьӡ '%1' змоу ыҟоуп.", - "DELETE_VARIABLE": "Ианыхтәуп аҽеиҭак '%1'", - "COLOUR_PICKER_HELPURL": "https://ab.wikipedia.org/wiki/Аԥштәы", - "COLOUR_PICKER_TOOLTIP": "Иалышәх аԥштәы", - "COLOUR_RANDOM_TITLE": "иарбанзаалакь аԥштәы", - "COLOUR_RANDOM_TOOLTIP": "Иалнахуеит аԥштәы машәыршақә", - "COLOUR_RGB_TITLE": "аԥштәы аҟынтәи", - "COLOUR_RGB_RED": "аҟаԥшь", - "COLOUR_RGB_GREEN": "аиаҵәа", - "COLOUR_RGB_BLUE": "жәҩангәԥштәы", - "COLOUR_BLEND_TITLE": "еилаҵатәуп", - "COLOUR_BLEND_COLOUR1": "аԥштәы 1", - "COLOUR_BLEND_COLOUR2": "аԥштәы 2", - "COLOUR_BLEND_RATIO": "аԥштәы 1 ахәҭа", - "CONTROLS_REPEAT_HELPURL": "https://ab.wikipedia.org/wiki/Ацикл", - "CONTROLS_REPEAT_TITLE": "инагӡалатәуп %1 - нтә", - "CONTROLS_REPEAT_INPUT_DO": "инагӡатәуп", - "CONTROLS_REPEAT_TOOLTIP": "Инанагӡоит акомандақәа кырынтә", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "инагӡалатәуп акәзар", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "инагӡалатәуп акәымзар", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Аҭагылазаашьа иашанаҵ, инанагӡалоит акомандақәа.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Аҭагылазаашьа мцнаҵы, инанагӡалоит акомандақәа.", - "CONTROLS_FOR_TITLE": "ацикл %1 ала %2 инаркны %3 рҟынӡа ашьаҿа %4", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ацикл иҭыҵтәуп", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ииастәуп ацикл анаҩстәи ашьаҿахьы", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Иааннакылоит абри ацикл.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Агәҽанҵара:Ари аблок ахархәара амоуп ацикл аҩныҵҟа мацара.", - "CONTROLS_IF_TOOLTIP_1": "Аҭагылазаашьа иашазар, инанагӡоит акомандақәа.", - "CONTROLS_IF_TOOLTIP_2": "Аҭагылазаашьа иашазар, инанагӡоит актәи аблок акомандақәа. Акәымзар инанагӡоит аҩбатәи аблок акомандақәа.", - "CONTROLS_IF_MSG_IF": "акәзар", - "CONTROLS_IF_MSG_ELSEIF": "акәымзар", - "CONTROLS_IF_MSG_ELSE": "акәымзар", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Иацнаҵоит аҭагыазаашьа аблок \"акәзар\" ахь", - "LOGIC_COMPARE_HELPURL": "https://ru.wikipedia.org/wiki/Аиҟарамра", - "LOGIC_COMPARE_TOOLTIP_EQ": "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟаразар.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟарамзар.", - "LOGIC_COMPARE_TOOLTIP_LT": "Иҳанаҭоит иҵоуроу аҵакы, актәи иҭагалоу аҩбатәи аасҭа еиҵазар.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҵазар ма иаҟаразар.", - "LOGIC_COMPARE_TOOLTIP_GT": "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар ма иаҟаразар.", - "LOGIC_OPERATION_TOOLTIP_AND": "Иҳанаҭоит аҵакы аиаша, иҭагалоу аҩбагьы иашазар.", - "LOGIC_OPERATION_AND": "и", - "LOGIC_OPERATION_TOOLTIP_OR": "Иҳанаҭоит аҵакы аиаша, иҭагалоу руак иашазар.", - "LOGIC_OPERATION_OR": "ма", - "LOGIC_NEGATE_TITLE": "%1 акәӡам", - "LOGIC_NEGATE_TOOLTIP": "Иҳанаҭоит аҵакы аиаша, иҭагалоу мцызар. Иҳанаҭоит аҵакы амц, иҭагалоу иашазар.", - "LOGIC_BOOLEAN_TRUE": "аиаша", - "LOGIC_BOOLEAN_FALSE": "амц", - "LOGIC_BOOLEAN_TOOLTIP": "Иҳанаҭоит аҵакы аиаша ма амц", - "LOGIC_NULL": "акагьы", - "LOGIC_NULL_TOOLTIP": "Иҳанаҭоит акагьы", - "LOGIC_TERNARY_CONDITION": "иалхтәуп ала", - "LOGIC_TERNARY_IF_TRUE": "аиаша акәзар", - "LOGIC_TERNARY_IF_FALSE": "амц акәзар", - "MATH_NUMBER_HELPURL": "https://ab.wikipedia.org/wiki/Ахыԥхьаӡара", - "MATH_NUMBER_TOOLTIP": "Ахыԥхьаӡара.", - "MATH_ARITHMETIC_HELPURL": "https://ab.wikipedia.org/wiki/Арифметика", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Иҳанаҭоит ҩ-хыԥхьаӡарак реицҵалыҵ.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Иҳанаҭоит ҩ-хыԥхьаӡарак реигырхалыҵ.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Иҳанаҭоит ҩ-хыԥхьаӡарак рышьҭыхлыҵ.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Иҳанаҭоит ҩ-хыԥхьаӡарак ршалыҵ.", - "MATH_SINGLE_OP_ABSOLUTE": "амодуль", - "MATH_SINGLE_TOOLTIP_ABS": "Иҳанаҭоит ахыԥхьаӡара амодуль.", - "MATH_SINGLE_TOOLTIP_NEG": "Иҳанаҭоит иаҿагыло ахыԥхьаӡара.", - "MATH_SINGLE_TOOLTIP_LN": "Иҳанаҭоит ахыԥхьаӡара иԥсабаратәу алогарифм.", - "MATH_SINGLE_TOOLTIP_LOG10": "Иҳанаҭоит ахыԥхьаӡара ажәабатә логарифм.", - "MATH_TRIG_HELPURL": "https://ab.wikipedia.org/wiki/Атригонометриатә_функциа", - "MATH_TRIG_TOOLTIP_SIN": "Иҳанаҭоит асинус градусла.", - "MATH_TRIG_TOOLTIP_COS": "Иҳанаҭоит акосинус градусла.", - "MATH_TRIG_TOOLTIP_TAN": "Иҳанаҭоит атангенс градусла.", - "MATH_TRIG_TOOLTIP_ASIN": "Иҳанаҭоит арксинус градусла.", - "MATH_TRIG_TOOLTIP_ACOS": "Иҳанаҭоит арккосинус градусла.", - "MATH_TRIG_TOOLTIP_ATAN": "Иҳанаҭоит арктангенс градусла.", - "MATH_CONSTANT_HELPURL": "https://ab.wikipedia.org/wiki/Аматематикатә_константа", - "MATH_CONSTANT_TOOLTIP": "Иҳанаҭооит аконстантақәа руак: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) ма ∞ (аҵыхәаԥҵәарадара).", - "MATH_IS_EVEN": "еиҩшо", - "MATH_IS_ODD": "еиҩымшо", - "MATH_IS_PRIME": "имариоу", - "MATH_IS_WHOLE": "аибга", - "MATH_IS_POSITIVE": "иҵоуроу", - "MATH_IS_NEGATIVE": "иҵоурам", - "MATH_IS_DIVISIBLE_BY": "ишоит ала", - "MATH_CHANGE_TITLE": "иеизырҳатәуп %1 %2 рыла", - "MATH_CHANGE_TOOLTIP": "Иацнаҵоит ахыԥхьаӡара аҽеиҭак '%1' ахь.", - "MATH_ROUND_HELPURL": "https://ab.wikipedia.org/wiki/Ахыркәшара", - "MATH_ROUND_OPERATOR_ROUND": "ихыркәшатәуп", - "MATH_ROUND_OPERATOR_ROUNDUP": "ихыркәшатәуп еиҳау ахь", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "ихыркәшатәуп еиҵоу ахь", - "MATH_ONLIST_OPERATOR_SUM": "ахьӡынҵа аицҵалыҵ", - "MATH_ONLIST_TOOLTIP_SUM": "Иҳанаҭоит ахьӡынҵа иаҵанакуа ахыԥхьаӡарақәа зегьы реицҵалыҵ.", - "MATH_ONLIST_OPERATOR_MIN": "ахьӡынҵа аҟны иреиҵо", - "MATH_ONLIST_TOOLTIP_MIN": "Иҳанаҭоит ахьӡынҵа аҟны иреицо ахыԥхьаӡара.", - "MATH_ONLIST_OPERATOR_MAX": "ахьӡынҵа аҟны иреиҳау", - "MATH_ONLIST_TOOLTIP_MAX": "Иҳанаҭоит ахьӡынҵа аҟны иреиҳау ахыԥхьаӡара.", - "MATH_ONLIST_OPERATOR_AVERAGE": "ахьӡынҵа арифметикатә бжьара", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рарифметикатә бжьара.", - "MATH_ONLIST_OPERATOR_MEDIAN": "ахьӡынҵа амедиана", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рмедиана.", - "MATH_ONLIST_OPERATOR_MODE": "ахьӡынҵа амода", - "MATH_ONLIST_OPERATOR_RANDOM": "ахьӡынҵа иарбанзаалакь аелемент", - "MATH_ONLIST_TOOLTIP_RANDOM": "Иҳанаҭоит ахьӡынҵа аҟны иарбанзаалакь елементк.", - "MATH_MODULO_HELPURL": "https://ru.wikipedia.org/wiki/Ашара_цәынхала", - "MATH_MODULO_TITLE": "ацәынха %1 : %2", - "MATH_MODULO_TOOLTIP": "Иҳанаҭоит ацәынха ҩ-хыԥхьаӡарак ршараан.", - "MATH_RANDOM_INT_TITLE": "иарбанзаалакь еибгоу ахыԥхьаӡара %1 инаркны %2 нӡа", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "иарбанзаалакь ахыԥхьашара 0 инаркны (иалаҵаны) 1 аҟынӡа", - "MATH_RANDOM_FLOAT_TOOLTIP": "Иҳанаҭоит иарбанзаалакь ахыԥхьаӡара 0.0 инаркны (иалаҵаны) 1.0 аҟынӡа.", - "TEXT_TEXT_HELPURL": "https://ab.wikipedia.org/wiki/Ацәаҳәатә_хкы", - "TEXT_TEXT_TOOLTIP": "Анбан, ажәа ма ацәаҳәа атеқст аҟны.", - "TEXT_JOIN_TITLE_CREATEWITH": "иаԥҵатәуп атеқст аҟынтәи", - "TEXT_CREATE_JOIN_TITLE_JOIN": "иеиԥшьтәуп", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Иацҵатәуп аелемент атеқст ахь.", - "TEXT_APPEND_TITLE": "%1 ахьы иацҵатәуп атеқст %2", - "TEXT_APPEND_TOOLTIP": "Иацҵатәуп атеқст аҽеиҭак «%1» ахь.", - "TEXT_LENGTH_TITLE": "аура %1", - "TEXT_LENGTH_TOOLTIP": "Иҳанаҭоит асимволқәа рхыԥхьаӡара (абжьажьқәа алаҵаны) иҟоу атеқст аҟны.", - "TEXT_ISEMPTY_TITLE": "%1 ҭацәуп", - "TEXT_ISEMPTY_TOOLTIP": "Иҳанаҭоит аҵакы аиаша, иҟоу атеқст ҭацәызар.", - "TEXT_INDEXOF_TITLE": "атеқст %1 %2 %3 аҟны", - "TEXT_CHARAT_TITLE": "атеқст %1 %2 аҟны", - "TEXT_CHARAT_FROM_START": "игатәуп анбан №", - "TEXT_CHARAT_FROM_END": "игатәуп анбан № анҵәамҭа аҟынтәи", - "TEXT_CHARAT_FIRST": "игатәуп актәи анбан", - "TEXT_CHARAT_LAST": "игатәуп аҵыхәтәантәи анбан", - "TEXT_CHARAT_RANDOM": "игатәуп иарбанзаалакь нбанк", - "TEXT_CHARAT_TOOLTIP": "Иҳанаҭоит анбан иарбоу апозициа аҟны", - "TEXT_GET_SUBSTRING_TOOLTIP": "Иҳанаҭоит атеқст аҟны иарбоу ахәҭа.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "атеқст аҟны", - "TEXT_GET_SUBSTRING_END_FROM_START": "анбан № ала", - "TEXT_GET_SUBSTRING_END_LAST": "аҵыхәтәантәи анбан ала", - "TEXT_PRINT_TITLE": "икьыԥхьтәуп %1", - "TEXT_PRINT_TOOLTIP": "Иакьыԥхьуеит атеқст, ахыԥхьаӡара ма даҽа обиеқтк.", - "TEXT_REPLACE_MESSAGE0": "иԥсахтәуп %1 %2 ала %3 аҟны", - "LISTS_CREATE_EMPTY_TITLE": "иаԥцатәуп иҭацәу ахьӡынҵа", - "LISTS_CREATE_WITH_INPUT_WITH": "иаԥҵатәуп ахьӡынҵа аҟынтәи", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ахьӡынҵа", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Иацнаҵоит аелемент ахьӡынҵахьы", - "LISTS_LENGTH_TITLE": "аура %1", - "LISTS_LENGTH_TOOLTIP": "Иҳанаҭоит ахьӡынҵа аура.", - "LISTS_ISEMPTY_TITLE": "%1 ҭацәуп", - "LISTS_ISEMPTY_TOOLTIP": "Иҳанаҭоит аиаша, ахьӡынҵа ҭацәызар.", - "LISTS_INLIST": "ахьӡынҵа аҟны", - "LISTS_GET_INDEX_GET": "игатәуп", - "LISTS_GET_INDEX_GET_REMOVE": "иалхны ианыхтәуп", - "LISTS_GET_INDEX_REMOVE": "ианыхтәуп", - "LISTS_GET_INDEX_FROM_END": "№ анҵәамнҭа аҟынтәи", - "LISTS_GET_INDEX_FIRST": "актәи", - "LISTS_GET_INDEX_LAST": "аҵыхәтәантәи", - "LISTS_GET_INDEX_RANDOM": "иарбанзаалакь", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 - актәи аелемент.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 - аҵыхәтәантәи аелемент.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Иҳанаҭоит ахьӡынҵа актәи аелемент.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Иҳанаҭоит ахьӡынҵа аҵыхәтәантәи аелемент.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Иҳанаҭоит ахьӡынҵа иарбанзаалакь елементк.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Ианнахәуеит ахьӡынҵа актәи аелемент.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Ианнахәуеит ахьӡынҵа аҵыхәтәантәи аелемент.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Ианнахәуеит ахьӡынҵа иарбанзаалакь елементк.", - "LISTS_SET_INDEX_SET": "иаҭатәуп", - "LISTS_SET_INDEX_INSERT": "ибжьаргылатәуп", - "LISTS_SET_INDEX_INPUT_TO": "=", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Иацнаҵоит аелемент ахьӡынҵа анҵәамҭахь.", - "LISTS_GET_SUBLIST_END_FROM_START": "№ ала", - "LISTS_SORT_TITLE": "еилыԥшаатәуп %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Еилыԥшаатәуп ахьӡынҵа акопиа.", - "LISTS_SORT_ORDER_ASCENDING": "еиҵоу-еиҳауала", - "LISTS_SORT_ORDER_DESCENDING": "еиҳау-еиҵоуала", - "LISTS_SORT_TYPE_NUMERIC": "ахыԥхьаӡаратәи", - "LISTS_SORT_TYPE_TEXT": "алфавитла", - "LISTS_SPLIT_TEXT_FROM_LIST": "еизгатәуп атеқст ахьӡынҵа аҟынтәи", - "VARIABLES_GET_TOOLTIP": "Иҳанаҭоит аҽеиҭак аҵакы.", - "VARIABLES_GET_CREATE_SET": "Иаԥҵатәуп аблок \"иаҭатәуп %1\" азы", - "VARIABLES_SET": "иаҭатәуп %1 = %2", - "PROCEDURES_DEFNORETURN_TITLE": "азы", - "PROCEDURES_DEFNORETURN_PROCEDURE": "иҟаҵатәуп џьара акы", - "PROCEDURES_BEFORE_PARAMS": "аҟынтәи:", - "PROCEDURES_CALL_BEFORE_PARAMS": "аҟынтәи:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Иаԥнаҵоит апроцедура, аҵакы ҳазымҭо.", - "PROCEDURES_DEFNORETURN_COMMENT": "Абри афункциа ахҳәа азыҟашәҵа...", - "PROCEDURES_DEFRETURN_RETURN": "ирхынҳәтәуп", - "PROCEDURES_DEFRETURN_TOOLTIP": "Иаԥнаҵоит апроцедура, аҵакы ҳазҭо.", - "PROCEDURES_ALLOW_STATEMENTS": "аоператорқәа азин рыҭара", - "PROCEDURES_CALLNORETURN_HELPURL": "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа", - "PROCEDURES_CALLRETURN_HELPURL": "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа", - "PROCEDURES_MUTATORCONTAINER_TITLE": "апараметрқәа", - "PROCEDURES_MUTATORARG_TITLE": "апараметр ахьӡ:", - "PROCEDURES_CREATE_DO": "Иаԥҵатәуп ааԥхьара '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Актәи аҵакы иашазар, иҳанаҭоит аҩбатәи аҵакы.", - "PROCEDURES_IFRETURN_WARNING": "Агәаҽанҵара: Ари аблок ахархәара ауеит афункциа аԥҵара аҟны.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Аҟәыхра" -} +{ + "@metadata": { + "authors": [ + "Pupsik-ipa", + "Абухба Андрей", + "Андрей" + ] + }, + "VARIABLES_DEFAULT_NAME": "аелемент", + "TODAY": "Иахьа", + "DUPLICATE_BLOCK": "Акопиа ахыхтәуп", + "ADD_COMMENT": "Иацҵатәуп ахцәажәара", + "REMOVE_COMMENT": "Ианыхтәуп ахцәажәара", + "DELETE_BLOCK": "Ианыхтәуп аблок", + "DELETE_X_BLOCKS": "Ианыхтәуп %1 блокк", + "DELETE_ALL_BLOCKS": "Ианыхтәуп аблокқәа (%1) зегьы?", + "CLEAN_UP": "Иқәгатәуп аблокқәа", + "COLLAPSE_BLOCK": "Иеикәрҳәтәуп Аблокқәа", + "COLLAPSE_ALL": "Иеикәрҳәтәуп Аблокқәа", + "EXPAND_BLOCK": "Иаарԥштәуп Аблокқәа", + "EXPAND_ALL": "Иаарԥштәуп Аблокқәа", + "DISABLE_BLOCK": "Иаҿыхтәуп Аблок", + "ENABLE_BLOCK": "Иаҿыхтәуп Аблокқәа", + "HELP": "Ацхыраара", + "UNDO": "Иаҟәыхтәуп", + "REDO": "Аиҭаҟаҵара", + "CHANGE_VALUE_TITLE": "Ишәыԥсах аҵакы", + "RENAME_VARIABLE": "Аҽеиҭак ахьӡ ԥсахтәуп", + "RENAME_VARIABLE_TITLE": "Аҽеиҭакқәа'%1' зегь рыхьӡ ԥсахтәуп аҟны:", + "NEW_VARIABLE": "Иаԥҵатәуп аҽеиҭак", + "NEW_VARIABLE_TITLE": "Аҽеиҭак ахьӡ ҿыц:", + "VARIABLE_ALREADY_EXISTS": "Аҽеиҭак ахьӡ '%1' змоу ыҟоуп.", + "DELETE_VARIABLE": "Ианыхтәуп аҽеиҭак '%1'", + "COLOUR_PICKER_HELPURL": "https://ab.wikipedia.org/wiki/Аԥштәы", + "COLOUR_PICKER_TOOLTIP": "Иалышәх аԥштәы", + "COLOUR_RANDOM_TITLE": "иарбанзаалакь аԥштәы", + "COLOUR_RANDOM_TOOLTIP": "Иалнахуеит аԥштәы машәыршақә", + "COLOUR_RGB_TITLE": "аԥштәы аҟынтәи", + "COLOUR_RGB_RED": "аҟаԥшь", + "COLOUR_RGB_GREEN": "аиаҵәа", + "COLOUR_RGB_BLUE": "жәҩангәԥштәы", + "COLOUR_BLEND_TITLE": "еилаҵатәуп", + "COLOUR_BLEND_COLOUR1": "аԥштәы 1", + "COLOUR_BLEND_COLOUR2": "аԥштәы 2", + "COLOUR_BLEND_RATIO": "аԥштәы 1 ахәҭа", + "CONTROLS_REPEAT_HELPURL": "https://ab.wikipedia.org/wiki/Ацикл", + "CONTROLS_REPEAT_TITLE": "инагӡалатәуп %1 - нтә", + "CONTROLS_REPEAT_INPUT_DO": "инагӡатәуп", + "CONTROLS_REPEAT_TOOLTIP": "Инанагӡоит акомандақәа кырынтә", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "инагӡалатәуп акәзар", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "инагӡалатәуп акәымзар", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Аҭагылазаашьа иашанаҵ, инанагӡалоит акомандақәа.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Аҭагылазаашьа мцнаҵы, инанагӡалоит акомандақәа.", + "CONTROLS_FOR_TITLE": "ацикл %1 ала %2 инаркны %3 рҟынӡа ашьаҿа %4", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ацикл иҭыҵтәуп", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ииастәуп ацикл анаҩстәи ашьаҿахьы", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Иааннакылоит абри ацикл.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Агәҽанҵара:Ари аблок ахархәара амоуп ацикл аҩныҵҟа мацара.", + "CONTROLS_IF_TOOLTIP_1": "Аҭагылазаашьа иашазар, инанагӡоит акомандақәа.", + "CONTROLS_IF_TOOLTIP_2": "Аҭагылазаашьа иашазар, инанагӡоит актәи аблок акомандақәа. Акәымзар инанагӡоит аҩбатәи аблок акомандақәа.", + "CONTROLS_IF_MSG_IF": "акәзар", + "CONTROLS_IF_MSG_ELSEIF": "акәымзар", + "CONTROLS_IF_MSG_ELSE": "акәымзар", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Иацнаҵоит аҭагыазаашьа аблок \"акәзар\" ахь", + "LOGIC_COMPARE_HELPURL": "https://ru.wikipedia.org/wiki/Аиҟарамра", + "LOGIC_COMPARE_TOOLTIP_EQ": "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟаразар.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Иҳанаҭоит иҵоуроу аҵакы, иҭагалақәоу еиҟарамзар.", + "LOGIC_COMPARE_TOOLTIP_LT": "Иҳанаҭоит иҵоуроу аҵакы, актәи иҭагалоу аҩбатәи аасҭа еиҵазар.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҵазар ма иаҟаразар.", + "LOGIC_COMPARE_TOOLTIP_GT": "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Иҳанаҭоит аҵакы аиаша, актәи иҭагалоу аҩбатәи аасҭа еиҳазар ма иаҟаразар.", + "LOGIC_OPERATION_TOOLTIP_AND": "Иҳанаҭоит аҵакы аиаша, иҭагалоу аҩбагьы иашазар.", + "LOGIC_OPERATION_AND": "и", + "LOGIC_OPERATION_TOOLTIP_OR": "Иҳанаҭоит аҵакы аиаша, иҭагалоу руак иашазар.", + "LOGIC_OPERATION_OR": "ма", + "LOGIC_NEGATE_TITLE": "%1 акәӡам", + "LOGIC_NEGATE_TOOLTIP": "Иҳанаҭоит аҵакы аиаша, иҭагалоу мцызар. Иҳанаҭоит аҵакы амц, иҭагалоу иашазар.", + "LOGIC_BOOLEAN_TRUE": "аиаша", + "LOGIC_BOOLEAN_FALSE": "амц", + "LOGIC_BOOLEAN_TOOLTIP": "Иҳанаҭоит аҵакы аиаша ма амц", + "LOGIC_NULL": "акагьы", + "LOGIC_NULL_TOOLTIP": "Иҳанаҭоит акагьы", + "LOGIC_TERNARY_CONDITION": "иалхтәуп ала", + "LOGIC_TERNARY_IF_TRUE": "аиаша акәзар", + "LOGIC_TERNARY_IF_FALSE": "амц акәзар", + "MATH_NUMBER_HELPURL": "https://ab.wikipedia.org/wiki/Ахыԥхьаӡара", + "MATH_NUMBER_TOOLTIP": "Ахыԥхьаӡара.", + "MATH_ARITHMETIC_HELPURL": "https://ab.wikipedia.org/wiki/Арифметика", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Иҳанаҭоит ҩ-хыԥхьаӡарак реицҵалыҵ.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Иҳанаҭоит ҩ-хыԥхьаӡарак реигырхалыҵ.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Иҳанаҭоит ҩ-хыԥхьаӡарак рышьҭыхлыҵ.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Иҳанаҭоит ҩ-хыԥхьаӡарак ршалыҵ.", + "MATH_SINGLE_OP_ABSOLUTE": "амодуль", + "MATH_SINGLE_TOOLTIP_ABS": "Иҳанаҭоит ахыԥхьаӡара амодуль.", + "MATH_SINGLE_TOOLTIP_NEG": "Иҳанаҭоит иаҿагыло ахыԥхьаӡара.", + "MATH_SINGLE_TOOLTIP_LN": "Иҳанаҭоит ахыԥхьаӡара иԥсабаратәу алогарифм.", + "MATH_SINGLE_TOOLTIP_LOG10": "Иҳанаҭоит ахыԥхьаӡара ажәабатә логарифм.", + "MATH_TRIG_HELPURL": "https://ab.wikipedia.org/wiki/Атригонометриатә_функциа", + "MATH_TRIG_TOOLTIP_SIN": "Иҳанаҭоит асинус градусла.", + "MATH_TRIG_TOOLTIP_COS": "Иҳанаҭоит акосинус градусла.", + "MATH_TRIG_TOOLTIP_TAN": "Иҳанаҭоит атангенс градусла.", + "MATH_TRIG_TOOLTIP_ASIN": "Иҳанаҭоит арксинус градусла.", + "MATH_TRIG_TOOLTIP_ACOS": "Иҳанаҭоит арккосинус градусла.", + "MATH_TRIG_TOOLTIP_ATAN": "Иҳанаҭоит арктангенс градусла.", + "MATH_CONSTANT_HELPURL": "https://ab.wikipedia.org/wiki/Аматематикатә_константа", + "MATH_CONSTANT_TOOLTIP": "Иҳанаҭооит аконстантақәа руак: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) ма ∞ (аҵыхәаԥҵәарадара).", + "MATH_IS_EVEN": "еиҩшо", + "MATH_IS_ODD": "еиҩымшо", + "MATH_IS_PRIME": "имариоу", + "MATH_IS_WHOLE": "аибга", + "MATH_IS_POSITIVE": "иҵоуроу", + "MATH_IS_NEGATIVE": "иҵоурам", + "MATH_IS_DIVISIBLE_BY": "ишоит ала", + "MATH_CHANGE_TITLE": "иеизырҳатәуп %1 %2 рыла", + "MATH_CHANGE_TOOLTIP": "Иацнаҵоит ахыԥхьаӡара аҽеиҭак '%1' ахь.", + "MATH_ROUND_HELPURL": "https://ab.wikipedia.org/wiki/Ахыркәшара", + "MATH_ROUND_OPERATOR_ROUND": "ихыркәшатәуп", + "MATH_ROUND_OPERATOR_ROUNDUP": "ихыркәшатәуп еиҳау ахь", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "ихыркәшатәуп еиҵоу ахь", + "MATH_ONLIST_OPERATOR_SUM": "ахьӡынҵа аицҵалыҵ", + "MATH_ONLIST_TOOLTIP_SUM": "Иҳанаҭоит ахьӡынҵа иаҵанакуа ахыԥхьаӡарақәа зегьы реицҵалыҵ.", + "MATH_ONLIST_OPERATOR_MIN": "ахьӡынҵа аҟны иреиҵо", + "MATH_ONLIST_TOOLTIP_MIN": "Иҳанаҭоит ахьӡынҵа аҟны иреицо ахыԥхьаӡара.", + "MATH_ONLIST_OPERATOR_MAX": "ахьӡынҵа аҟны иреиҳау", + "MATH_ONLIST_TOOLTIP_MAX": "Иҳанаҭоит ахьӡынҵа аҟны иреиҳау ахыԥхьаӡара.", + "MATH_ONLIST_OPERATOR_AVERAGE": "ахьӡынҵа арифметикатә бжьара", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рарифметикатә бжьара.", + "MATH_ONLIST_OPERATOR_MEDIAN": "ахьӡынҵа амедиана", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Иҳанаҭоит ахьӡынҵа аҟны ахыԥхьаӡарақәа зегьы рмедиана.", + "MATH_ONLIST_OPERATOR_MODE": "ахьӡынҵа амода", + "MATH_ONLIST_OPERATOR_RANDOM": "ахьӡынҵа иарбанзаалакь аелемент", + "MATH_ONLIST_TOOLTIP_RANDOM": "Иҳанаҭоит ахьӡынҵа аҟны иарбанзаалакь елементк.", + "MATH_MODULO_HELPURL": "https://ru.wikipedia.org/wiki/Ашара_цәынхала", + "MATH_MODULO_TITLE": "ацәынха %1 : %2", + "MATH_MODULO_TOOLTIP": "Иҳанаҭоит ацәынха ҩ-хыԥхьаӡарак ршараан.", + "MATH_RANDOM_INT_TITLE": "иарбанзаалакь еибгоу ахыԥхьаӡара %1 инаркны %2 нӡа", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "иарбанзаалакь ахыԥхьашара 0 инаркны (иалаҵаны) 1 аҟынӡа", + "MATH_RANDOM_FLOAT_TOOLTIP": "Иҳанаҭоит иарбанзаалакь ахыԥхьаӡара 0.0 инаркны (иалаҵаны) 1.0 аҟынӡа.", + "TEXT_TEXT_HELPURL": "https://ab.wikipedia.org/wiki/Ацәаҳәатә_хкы", + "TEXT_TEXT_TOOLTIP": "Анбан, ажәа ма ацәаҳәа атеқст аҟны.", + "TEXT_JOIN_TITLE_CREATEWITH": "иаԥҵатәуп атеқст аҟынтәи", + "TEXT_CREATE_JOIN_TITLE_JOIN": "иеиԥшьтәуп", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Иацҵатәуп аелемент атеқст ахь.", + "TEXT_APPEND_TITLE": "%1 ахьы иацҵатәуп атеқст %2", + "TEXT_APPEND_TOOLTIP": "Иацҵатәуп атеқст аҽеиҭак «%1» ахь.", + "TEXT_LENGTH_TITLE": "аура %1", + "TEXT_LENGTH_TOOLTIP": "Иҳанаҭоит асимволқәа рхыԥхьаӡара (абжьажьқәа алаҵаны) иҟоу атеқст аҟны.", + "TEXT_ISEMPTY_TITLE": "%1 ҭацәуп", + "TEXT_ISEMPTY_TOOLTIP": "Иҳанаҭоит аҵакы аиаша, иҟоу атеқст ҭацәызар.", + "TEXT_INDEXOF_TITLE": "атеқст %1 %2 %3 аҟны", + "TEXT_CHARAT_TITLE": "атеқст %1 %2 аҟны", + "TEXT_CHARAT_FROM_START": "игатәуп анбан №", + "TEXT_CHARAT_FROM_END": "игатәуп анбан № анҵәамҭа аҟынтәи", + "TEXT_CHARAT_FIRST": "игатәуп актәи анбан", + "TEXT_CHARAT_LAST": "игатәуп аҵыхәтәантәи анбан", + "TEXT_CHARAT_RANDOM": "игатәуп иарбанзаалакь нбанк", + "TEXT_CHARAT_TOOLTIP": "Иҳанаҭоит анбан иарбоу апозициа аҟны", + "TEXT_GET_SUBSTRING_TOOLTIP": "Иҳанаҭоит атеқст аҟны иарбоу ахәҭа.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "атеқст аҟны", + "TEXT_GET_SUBSTRING_END_FROM_START": "анбан № ала", + "TEXT_GET_SUBSTRING_END_LAST": "аҵыхәтәантәи анбан ала", + "TEXT_PRINT_TITLE": "икьыԥхьтәуп %1", + "TEXT_PRINT_TOOLTIP": "Иакьыԥхьуеит атеқст, ахыԥхьаӡара ма даҽа обиеқтк.", + "TEXT_REPLACE_MESSAGE0": "иԥсахтәуп %1 %2 ала %3 аҟны", + "LISTS_CREATE_EMPTY_TITLE": "иаԥцатәуп иҭацәу ахьӡынҵа", + "LISTS_CREATE_WITH_INPUT_WITH": "иаԥҵатәуп ахьӡынҵа аҟынтәи", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ахьӡынҵа", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Иацнаҵоит аелемент ахьӡынҵахьы", + "LISTS_LENGTH_TITLE": "аура %1", + "LISTS_LENGTH_TOOLTIP": "Иҳанаҭоит ахьӡынҵа аура.", + "LISTS_ISEMPTY_TITLE": "%1 ҭацәуп", + "LISTS_ISEMPTY_TOOLTIP": "Иҳанаҭоит аиаша, ахьӡынҵа ҭацәызар.", + "LISTS_INLIST": "ахьӡынҵа аҟны", + "LISTS_GET_INDEX_GET": "игатәуп", + "LISTS_GET_INDEX_GET_REMOVE": "иалхны ианыхтәуп", + "LISTS_GET_INDEX_REMOVE": "ианыхтәуп", + "LISTS_GET_INDEX_FROM_END": "№ анҵәамнҭа аҟынтәи", + "LISTS_GET_INDEX_FIRST": "актәи", + "LISTS_GET_INDEX_LAST": "аҵыхәтәантәи", + "LISTS_GET_INDEX_RANDOM": "иарбанзаалакь", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 - актәи аелемент.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 - аҵыхәтәантәи аелемент.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Иҳанаҭоит ахьӡынҵа актәи аелемент.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Иҳанаҭоит ахьӡынҵа аҵыхәтәантәи аелемент.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Иҳанаҭоит ахьӡынҵа иарбанзаалакь елементк.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Ианнахәуеит ахьӡынҵа актәи аелемент.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Ианнахәуеит ахьӡынҵа аҵыхәтәантәи аелемент.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Ианнахәуеит ахьӡынҵа иарбанзаалакь елементк.", + "LISTS_SET_INDEX_SET": "иаҭатәуп", + "LISTS_SET_INDEX_INSERT": "ибжьаргылатәуп", + "LISTS_SET_INDEX_INPUT_TO": "=", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Иацнаҵоит аелемент ахьӡынҵа анҵәамҭахь.", + "LISTS_GET_SUBLIST_END_FROM_START": "№ ала", + "LISTS_SORT_TITLE": "еилыԥшаатәуп %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Еилыԥшаатәуп ахьӡынҵа акопиа.", + "LISTS_SORT_ORDER_ASCENDING": "еиҵоу-еиҳауала", + "LISTS_SORT_ORDER_DESCENDING": "еиҳау-еиҵоуала", + "LISTS_SORT_TYPE_NUMERIC": "ахыԥхьаӡаратәи", + "LISTS_SORT_TYPE_TEXT": "алфавитла", + "LISTS_SPLIT_TEXT_FROM_LIST": "еизгатәуп атеқст ахьӡынҵа аҟынтәи", + "VARIABLES_GET_TOOLTIP": "Иҳанаҭоит аҽеиҭак аҵакы.", + "VARIABLES_GET_CREATE_SET": "Иаԥҵатәуп аблок \"иаҭатәуп %1\" азы", + "VARIABLES_SET": "иаҭатәуп %1 = %2", + "PROCEDURES_DEFNORETURN_TITLE": "азы", + "PROCEDURES_DEFNORETURN_PROCEDURE": "иҟаҵатәуп џьара акы", + "PROCEDURES_BEFORE_PARAMS": "аҟынтәи:", + "PROCEDURES_CALL_BEFORE_PARAMS": "аҟынтәи:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Иаԥнаҵоит апроцедура, аҵакы ҳазымҭо.", + "PROCEDURES_DEFNORETURN_COMMENT": "Абри афункциа ахҳәа азыҟашәҵа...", + "PROCEDURES_DEFRETURN_RETURN": "ирхынҳәтәуп", + "PROCEDURES_DEFRETURN_TOOLTIP": "Иаԥнаҵоит апроцедура, аҵакы ҳазҭо.", + "PROCEDURES_ALLOW_STATEMENTS": "аоператорқәа азин рыҭара", + "PROCEDURES_CALLNORETURN_HELPURL": "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа", + "PROCEDURES_CALLRETURN_HELPURL": "https://ru.wikipedia.org/wiki/Ацхыраагӡатә программа", + "PROCEDURES_MUTATORCONTAINER_TITLE": "апараметрқәа", + "PROCEDURES_MUTATORARG_TITLE": "апараметр ахьӡ:", + "PROCEDURES_CREATE_DO": "Иаԥҵатәуп ааԥхьара '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Актәи аҵакы иашазар, иҳанаҭоит аҩбатәи аҵакы.", + "PROCEDURES_IFRETURN_WARNING": "Агәаҽанҵара: Ари аблок ахархәара ауеит афункциа аԥҵара аҟны.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Аҟәыхра" +} diff --git a/msg/json/ace.json b/msg/json/ace.json index 327411b1e35..bdcafa97103 100644 --- a/msg/json/ace.json +++ b/msg/json/ace.json @@ -1,7 +1,7 @@ -{ - "@metadata": { - "authors": [] - }, - "DIALOG_OK": "Ka got", - "DIALOG_CANCEL": "Peubateuë" -} +{ + "@metadata": { + "authors": [] + }, + "DIALOG_OK": "Ka got", + "DIALOG_CANCEL": "Peubateuë" +} diff --git a/msg/json/af.json b/msg/json/af.json index b0f0f706b4c..3c2481f4cf1 100644 --- a/msg/json/af.json +++ b/msg/json/af.json @@ -1,34 +1,34 @@ -{ - "@metadata": { - "authors": [ - "Qmeades", - "Winstonza" - ] - }, - "VARIABLES_DEFAULT_NAME": "item", - "UNNAMED_KEY": "onbenoem", - "TODAY": "vandag", - "DUPLICATE_BLOCK": "duplikaat", - "ADD_COMMENT": "Voeg kommentaar by", - "REMOVE_COMMENT": "Verwyder kommentaar", - "DUPLICATE_COMMENT": "Dupliseer kommentaar", - "DELETE_BLOCK": "verwyder blok", - "DELETE_X_BLOCKS": "verwyder %1 blokke", - "DELETE_ALL_BLOCKS": "verwyder al %1 blokke?", - "HELP": "Hulp", - "UNDO": "Ontdaan", - "REDO": "Doen weer", - "CHANGE_VALUE_TITLE": "Wysig waarde:", - "RENAME_VARIABLE": "Hernoem veranderlike...", - "RENAME_VARIABLE_TITLE": "Hernoem al %1 veranderlikes na:", - "NEW_VARIABLE": "Skep veranderlike", - "NEW_STRING_VARIABLE": "Skep teks veranderlike", - "NEW_NUMBER_VARIABLE": "Skep numeriese veranderlike", - "NEW_COLOUR_VARIABLE": "Skep kleur veranderlike", - "NEW_VARIABLE_TYPE_TITLE": "Nuwe veranderlike tipe:", - "NEW_VARIABLE_TITLE": "Nuwe veranderlike naam:", - "VARIABLE_ALREADY_EXISTS": "'n Veranderlike met die naam '%1' bestaan reeds.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'n Veranderlike met die naam '%1' bestaan reeds vir 'n ander tipe veranderlike: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Wissig %1 gebruike van die '%2' veranderlike?", - "DIALOG_OK": "Oukei" -} +{ + "@metadata": { + "authors": [ + "Qmeades", + "Winstonza" + ] + }, + "VARIABLES_DEFAULT_NAME": "item", + "UNNAMED_KEY": "onbenoem", + "TODAY": "vandag", + "DUPLICATE_BLOCK": "duplikaat", + "ADD_COMMENT": "Voeg kommentaar by", + "REMOVE_COMMENT": "Verwyder kommentaar", + "DUPLICATE_COMMENT": "Dupliseer kommentaar", + "DELETE_BLOCK": "verwyder blok", + "DELETE_X_BLOCKS": "verwyder %1 blokke", + "DELETE_ALL_BLOCKS": "verwyder al %1 blokke?", + "HELP": "Hulp", + "UNDO": "Ontdaan", + "REDO": "Doen weer", + "CHANGE_VALUE_TITLE": "Wysig waarde:", + "RENAME_VARIABLE": "Hernoem veranderlike...", + "RENAME_VARIABLE_TITLE": "Hernoem al %1 veranderlikes na:", + "NEW_VARIABLE": "Skep veranderlike", + "NEW_STRING_VARIABLE": "Skep teks veranderlike", + "NEW_NUMBER_VARIABLE": "Skep numeriese veranderlike", + "NEW_COLOUR_VARIABLE": "Skep kleur veranderlike", + "NEW_VARIABLE_TYPE_TITLE": "Nuwe veranderlike tipe:", + "NEW_VARIABLE_TITLE": "Nuwe veranderlike naam:", + "VARIABLE_ALREADY_EXISTS": "'n Veranderlike met die naam '%1' bestaan reeds.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'n Veranderlike met die naam '%1' bestaan reeds vir 'n ander tipe veranderlike: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Wissig %1 gebruike van die '%2' veranderlike?", + "DIALOG_OK": "Oukei" +} diff --git a/msg/json/am.json b/msg/json/am.json index f807ca6f116..204c3ad403a 100644 --- a/msg/json/am.json +++ b/msg/json/am.json @@ -1,30 +1,30 @@ -{ - "@metadata": { - "authors": [ - "Markos" - ] - }, - "UNNAMED_KEY": "ያልተሰየመ", - "TODAY": "ዛሬ", - "DUPLICATE_BLOCK": "ቅጂ", - "ADD_COMMENT": "ማስታወሻ ያክሉ", - "REMOVE_COMMENT": "ማስታወሻ ያጥፉ", - "DUPLICATE_COMMENT": "ማስታወሻውን ይቅዱ", - "EXTERNAL_INPUTS": "የውጪ ግብዓቶች", - "INLINE_INPUTS": "የውስጥ ግብዓቶች", - "DELETE_BLOCK": "ብሎኩን ይሰርዙ", - "DELETE_X_BLOCKS": "%1 ብሎኮች ይሰርዙ", - "DELETE_ALL_BLOCKS": "%1 ያህል ብሎኮች ይሰረዙ?", - "CLEAN_UP": "ብሎኮቹን ይሰድሩ", - "COLLAPSE_BLOCK": "የብሎኩን መረጃ ያሳጥሩ", - "COLLAPSE_ALL": "የብሎኮቹን መረጃዎች ያሳጥሩ", - "EXPAND_BLOCK": "የብሎኩን መረጃ ዳግም ያስረዝሙ", - "EXPAND_ALL": "የብሎኮቹን መረጃዎች ዳግም ያስረዝሙ", - "DISABLE_BLOCK": "ብሎኩን ለጊዜው ያጥፉ", - "ENABLE_BLOCK": "ብሎኩን ደግመው ያስጀምሩ", - "HELP": "እገዛ", - "UNDO": "ይቀልብሱ", - "REDO": "ከእንደገና", - "DIALOG_OK": "እሺ", - "DIALOG_CANCEL": "ይቅር" -} +{ + "@metadata": { + "authors": [ + "Markos" + ] + }, + "UNNAMED_KEY": "ያልተሰየመ", + "TODAY": "ዛሬ", + "DUPLICATE_BLOCK": "ቅጂ", + "ADD_COMMENT": "ማስታወሻ ያክሉ", + "REMOVE_COMMENT": "ማስታወሻ ያጥፉ", + "DUPLICATE_COMMENT": "ማስታወሻውን ይቅዱ", + "EXTERNAL_INPUTS": "የውጪ ግብዓቶች", + "INLINE_INPUTS": "የውስጥ ግብዓቶች", + "DELETE_BLOCK": "ብሎኩን ይሰርዙ", + "DELETE_X_BLOCKS": "%1 ብሎኮች ይሰርዙ", + "DELETE_ALL_BLOCKS": "%1 ያህል ብሎኮች ይሰረዙ?", + "CLEAN_UP": "ብሎኮቹን ይሰድሩ", + "COLLAPSE_BLOCK": "የብሎኩን መረጃ ያሳጥሩ", + "COLLAPSE_ALL": "የብሎኮቹን መረጃዎች ያሳጥሩ", + "EXPAND_BLOCK": "የብሎኩን መረጃ ዳግም ያስረዝሙ", + "EXPAND_ALL": "የብሎኮቹን መረጃዎች ዳግም ያስረዝሙ", + "DISABLE_BLOCK": "ብሎኩን ለጊዜው ያጥፉ", + "ENABLE_BLOCK": "ብሎኩን ደግመው ያስጀምሩ", + "HELP": "እገዛ", + "UNDO": "ይቀልብሱ", + "REDO": "ከእንደገና", + "DIALOG_OK": "እሺ", + "DIALOG_CANCEL": "ይቅር" +} diff --git a/msg/json/ar.json b/msg/json/ar.json index f61769639ef..7ecc3b5c237 100644 --- a/msg/json/ar.json +++ b/msg/json/ar.json @@ -1,363 +1,363 @@ -{ - "@metadata": { - "authors": [ - "Diyariq", - "DonAdnan", - "Meno25", - "Mido", - "Moud hosny", - "MuratTheTurkish", - "Samir", - "Test Create account", - "ديفيد", - "محمد أحمد عبد الفتاح", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "البند", - "UNNAMED_KEY": "غير مسمى", - "TODAY": "اليوم", - "DUPLICATE_BLOCK": "مكرر", - "ADD_COMMENT": "أضف تعليقًا", - "REMOVE_COMMENT": "أزل التعليق", - "DUPLICATE_COMMENT": "تعليق مكرر", - "EXTERNAL_INPUTS": "ادخال خارجي", - "INLINE_INPUTS": "ادخال خطي", - "DELETE_BLOCK": "احذف القطعة", - "DELETE_X_BLOCKS": "احذف %1 قطع", - "DELETE_ALL_BLOCKS": "حذف %1 قطعة؟", - "CLEAN_UP": "ترتيب القطع", - "COLLAPSE_BLOCK": "إخفاء القطعة", - "COLLAPSE_ALL": "إخفاء القطع", - "EXPAND_BLOCK": "وسٌّع القطعة", - "EXPAND_ALL": "وسٌّع القطع", - "DISABLE_BLOCK": "عطّل القطعة", - "ENABLE_BLOCK": "أعد تفعيل القطعة", - "HELP": "مساعدة", - "UNDO": "رجوع", - "REDO": "إعادة", - "CHANGE_VALUE_TITLE": "تغيير قيمة:", - "RENAME_VARIABLE": "إعادة تسمية المتغير...", - "RENAME_VARIABLE_TITLE": "إعادة تسمية كافة المتغيرات '%1' إلى:", - "NEW_VARIABLE": "إنشاء متغير...", - "NEW_STRING_VARIABLE": "انشاء متغير نصي...", - "NEW_NUMBER_VARIABLE": "انشاء متغير رقمي...", - "NEW_COLOUR_VARIABLE": "انشاء متغير لوني...", - "NEW_VARIABLE_TYPE_TITLE": "نوع متغير جديد:", - "NEW_VARIABLE_TITLE": "اسم المتغير الجديد:", - "VARIABLE_ALREADY_EXISTS": "المتغير '%1' موجود بالفعل", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "متغير بأسم '%1' معرف من نوع اخر : '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "حذف%1 1 استخدامات المتغير '%2'؟", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "لايمكن حذف متغير \"%1\" بسبب انه جزء من الدالة \"%2\"", - "DELETE_VARIABLE": "حذف المتغير %1", - "COLOUR_PICKER_HELPURL": "https://ar.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "اختر لون من اللوحة.", - "COLOUR_RANDOM_TITLE": "لون عشوائي", - "COLOUR_RANDOM_TOOLTIP": "اختر لون بشكل عشوائي.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "لون مع", - "COLOUR_RGB_RED": "أحمر", - "COLOUR_RGB_GREEN": "أخضر", - "COLOUR_RGB_BLUE": "أزرق", - "COLOUR_RGB_TOOLTIP": "إنشئ لون بالكمية المحددة من الأحمر, الأخضر والأزرق. بحيث يجب تكون كافة القيم بين 0 و 100.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "دمج", - "COLOUR_BLEND_COLOUR1": "اللون 1", - "COLOUR_BLEND_COLOUR2": "اللون 2", - "COLOUR_BLEND_RATIO": "نسبة", - "COLOUR_BLEND_TOOLTIP": "دمج لونين ببعضهما البعض بنسبة (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://ar.wikipedia.org/wiki/حلقة_تكرار", - "CONTROLS_REPEAT_TITLE": "كرر %1 مرات", - "CONTROLS_REPEAT_INPUT_DO": "نفّذ", - "CONTROLS_REPEAT_TOOLTIP": "نفّذ بعض الأوامر عدة مرات.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "اكرّر طالما", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "اكرّر حتى", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "بما ان القيمة صحيحة, نفّذ بعض الأوامر.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "بما ان القيمة خاطئة, نفّذ بعض الأوامر.", - "CONTROLS_FOR_TOOLTIP": "اجعل المتغير %1 يأخذ القيم من رقم البداية الى رقم النهاية، وقم بالعد داخل المجال المحدد، وطبق أوامر القطع المحددة.", - "CONTROLS_FOR_TITLE": "عد بـ %1 من %2 إلى %3 بمعدل %4", - "CONTROLS_FOREACH_TITLE": "لكل عنصر %1 في قائمة %2", - "CONTROLS_FOREACH_TOOLTIP": "لكل عنصر في قائمة ما، عين المتغير '%1' لهذا الغنصر، ومن ثم نفذ بعض الأوامر.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "اخرج من الحلقة", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "استمر ابتداءا من التكرار التالي من الحلقة", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "اخرج من الحلقة الحالية.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "تخط ما تبقى من هذه الحلقة، واستمر ابتداءا من التكرار التالي.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "تحذير: يمكن استخدام هذه القطعة فقط داخل حلقة.", - "CONTROLS_IF_TOOLTIP_1": "إذا كانت قيمة ما تساوي صحيح, إذن قم بتنفيذ أمر ما.", - "CONTROLS_IF_TOOLTIP_2": "إذا كانت قيمة ما تساوي \"صحيح\"، إذن قم بتنفيذ أول قطعة من الأوامر. والا ،قم بتنفيذ القطعة الثانية من الأوامر.", - "CONTROLS_IF_TOOLTIP_3": "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا, إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر.", - "CONTROLS_IF_TOOLTIP_4": "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا , إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر. إذا لم تكن هناك أي قيمة تساوي صحيح, قم بتنفيذ آخر قطعة من الأوامر.", - "CONTROLS_IF_MSG_IF": "إذا", - "CONTROLS_IF_MSG_ELSEIF": "وإﻻ إذا", - "CONTROLS_IF_MSG_ELSE": "والا", - "CONTROLS_IF_IF_TOOLTIP": "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة الشرطية \"إذا\".", - "CONTROLS_IF_ELSEIF_TOOLTIP": "إضف شرطا إلى القطعة الشرطية \"إذا\".", - "CONTROLS_IF_ELSE_TOOLTIP": "أضف شرط \"نهاية، إجمع\" إلى القطعة الشرطية \"إذا\".", - "LOGIC_COMPARE_HELPURL": "https://ar.wikipedia.org/wiki/متباينة_(جبر)", - "LOGIC_COMPARE_TOOLTIP_EQ": "يرجع صحيح إذا كان كلا المدخلات مساوية بعضها البعض.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "يرجع صحيح إذا كانت كلا المدخلات غير مساوية لبعضها البعض.", - "LOGIC_COMPARE_TOOLTIP_LT": "يرجع صحيح إذا كان الإدخال الأول أصغر من الإدخال الثاني.", - "LOGIC_COMPARE_TOOLTIP_LTE": "يرجع صحيح إذا كان الإدخال الأول أصغر من أو يساوي الإدخال الثاني.", - "LOGIC_COMPARE_TOOLTIP_GT": "يرجع صحيح إذا كان الإدخال الأول أكبر من الإدخال الثاني.", - "LOGIC_COMPARE_TOOLTIP_GTE": "يرجع صحيح إذا كان الإدخال الأول أكبر من أو يساوي الإدخال الثاني.", - "LOGIC_OPERATION_TOOLTIP_AND": "ترجع صحيح إذا كان كلا المٌدخلات صحيح.", - "LOGIC_OPERATION_AND": "و", - "LOGIC_OPERATION_TOOLTIP_OR": "ترجع صحيح إذا كان واحد على الأقل من المدخلات صحيح.", - "LOGIC_OPERATION_OR": "أو", - "LOGIC_NEGATE_TITLE": "ليس %1", - "LOGIC_NEGATE_TOOLTIP": "يرجع صحيح إذا كان الإدخال خاطئ . يرجع خاطئ إذا كان الإدخال صحيح.", - "LOGIC_BOOLEAN_TRUE": "صحيح", - "LOGIC_BOOLEAN_FALSE": "خاطئ", - "LOGIC_BOOLEAN_TOOLTIP": "يرجع صحيح أو خاطئ.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "فارغ", - "LOGIC_NULL_TOOLTIP": "ترجع ملغى.", - "LOGIC_TERNARY_HELPURL": ":https://ar.wikipedia.org/wiki/%3F", - "LOGIC_TERNARY_CONDITION": "اختبار", - "LOGIC_TERNARY_IF_TRUE": "إذا كانت العبارة صحيحة", - "LOGIC_TERNARY_IF_FALSE": "إذا كانت العبارة خاطئة", - "LOGIC_TERNARY_TOOLTIP": "تحقق الشرط في 'الاختبار'. إذا كان الشرط صحيح، يقوم بإرجاع قيمة 'اذا كانت العبارة صحيحة'؛ خلاف ذلك يرجع قيمة 'اذا كانت العبارة خاطئة'.", - "MATH_NUMBER_HELPURL": "https://ar.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF", - "MATH_NUMBER_TOOLTIP": "عدد ما.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "جيب", - "MATH_TRIG_COS": "جيب تمام", - "MATH_TRIG_TAN": "ظل", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://ar.wikipedia.org/wiki/حسابيات", - "MATH_ARITHMETIC_TOOLTIP_ADD": "يرجع مجموع الرقمين.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "يرجع الفرق بين الرقمين.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "يرجع حاصل ضرب الرقمين.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "يرجع حاصل قسمة الرقمين.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "يرجع الرقم الأول مرفوع إلى تربيع الرقم الثاني.", - "MATH_SINGLE_HELPURL": "https://ar.wikipedia.org/wiki/جذر_تربيعي", - "MATH_SINGLE_OP_ROOT": "الجذر التربيعي", - "MATH_SINGLE_TOOLTIP_ROOT": "يرجع الجذر التربيعي للرقم.", - "MATH_SINGLE_OP_ABSOLUTE": "مطلق", - "MATH_SINGLE_TOOLTIP_ABS": "يرجع القيمة المطلقة لرقم.", - "MATH_SINGLE_TOOLTIP_NEG": "يرجع عدد سالب.", - "MATH_SINGLE_TOOLTIP_LN": "يرجع اللوغاريتم الطبيعي لرقم.", - "MATH_SINGLE_TOOLTIP_LOG10": "يرجع لوغاريتم عدد معين للاساس 10.", - "MATH_SINGLE_TOOLTIP_EXP": "يرجع ه‍ (e) مرفوعا لأس بقيمة الرقم المدخل.", - "MATH_SINGLE_TOOLTIP_POW10": "يرجع مضروب الرقم 10 في نفسه .", - "MATH_TRIG_HELPURL": "https://ar.wikipedia.org/wiki/دوال_مثلثية", - "MATH_TRIG_TOOLTIP_SIN": "يرجع جيب التمام لدرجة (لا زواية نصف قطرية).", - "MATH_TRIG_TOOLTIP_COS": "يرجع جيب التمام لدرجة (لا زواية نصف قطرية).", - "MATH_TRIG_TOOLTIP_TAN": "يرجع الظل لدرجة (لا دائرة نصف قطرية).", - "MATH_TRIG_TOOLTIP_ASIN": "يرجع قوس الجيب للرقم.", - "MATH_TRIG_TOOLTIP_ACOS": "يرجع قوس جيب التمام لرقم.", - "MATH_TRIG_TOOLTIP_ATAN": "يرجع قوس الظل للرقم.", - "MATH_CONSTANT_HELPURL": "https://ar.wikipedia.org/wiki/ثابت رياضي", - "MATH_CONSTANT_TOOLTIP": "ير جع واحد من الثوابت الشائعة : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", - "MATH_IS_EVEN": "هو زوجي", - "MATH_IS_ODD": "هو فرذي", - "MATH_IS_PRIME": "هو أولي", - "MATH_IS_WHOLE": "هو صحيح", - "MATH_IS_POSITIVE": "هو موجب", - "MATH_IS_NEGATIVE": "هو سالب", - "MATH_IS_DIVISIBLE_BY": "قابل للقسمة", - "MATH_IS_TOOLTIP": "تحقق إذا كان عدد ما زوجيا، فرذيا, أوليا، صحيحا،موجبا أو سالبا، أو إذا كان قابلا للقسمة على عدد معين. يرجع صحيح أو خاطئ.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "غير %1 بـ %2", - "MATH_CHANGE_TOOLTIP": "إضف رقم إلى متغير '%1'.", - "MATH_ROUND_HELPURL": "https://ar.wikipedia.org/wiki/تقريب_(رياضيات)", - "MATH_ROUND_TOOLTIP": "تقريب الى اكبر عدد صحيح أو الى اصغر عدد صحيح.", - "MATH_ROUND_OPERATOR_ROUND": "تقريب", - "MATH_ROUND_OPERATOR_ROUNDUP": "تقريب الى اكبر عدد صحيح", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "تقريب إلى اصغر عدد صحيح", - "MATH_ONLIST_OPERATOR_SUM": "مجموع القائمة", - "MATH_ONLIST_TOOLTIP_SUM": "يرجع مجموع كافة الأرقام الموجودة في القائمة.", - "MATH_ONLIST_OPERATOR_MIN": "الحد الأدنى من قائمة", - "MATH_ONLIST_TOOLTIP_MIN": "يرجع أصغر رقم في القائمة.", - "MATH_ONLIST_OPERATOR_MAX": "الحد الأقصى لقائمة", - "MATH_ONLIST_TOOLTIP_MAX": "يرجع أكبر عدد في القائمة.", - "MATH_ONLIST_OPERATOR_AVERAGE": "متوسط القائمة", - "MATH_ONLIST_TOOLTIP_AVERAGE": "يرجع المعدل (الوسط الحسابي) للقيم الرقمية في القائمة.", - "MATH_ONLIST_OPERATOR_MEDIAN": "متوسط القائمة", - "MATH_ONLIST_TOOLTIP_MEDIAN": "يرجع وسيط العدد في القائمة.", - "MATH_ONLIST_OPERATOR_MODE": "منوال القائمة", - "MATH_ONLIST_TOOLTIP_MODE": "يرجع قائمة من العنصر أو العناصر الأكثر شيوعاً في القائمة.", - "MATH_ONLIST_OPERATOR_STD_DEV": "الانحراف المعياري للقائمة", - "MATH_ONLIST_TOOLTIP_STD_DEV": "يرجع الانحراف المعياري للقائمة.", - "MATH_ONLIST_OPERATOR_RANDOM": "عنصر عشوائي من القائمة", - "MATH_ONLIST_TOOLTIP_RANDOM": "يرجع عنصر عشوائي من القائمة.", - "MATH_MODULO_HELPURL": "https://tr.wikipedia.org/wiki/عامل_قسمة_مع_باقي", - "MATH_MODULO_TITLE": "باقي %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "يرجع الباقي من قسمة الرقمين.", - "MATH_CONSTRAIN_TITLE": "تقيد %1 منخفض %2 مرتفع %3", - "MATH_CONSTRAIN_TOOLTIP": "تقييد العددليكون بين الحدود المحددة (ضمناً).", - "MATH_RANDOM_INT_HELPURL": "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية", - "MATH_RANDOM_INT_TITLE": " عدد صحيح عشوائي من %1 إلى %2", - "MATH_RANDOM_INT_TOOLTIP": "يرجع عدد صحيح عشوائي بين حدين محددين, ضمنيا.", - "MATH_RANDOM_FLOAT_HELPURL": "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "كسر عشوائي", - "MATH_RANDOM_FLOAT_TOOLTIP": "يرجع جزء عشوائي بين 0.0 (ضمنياً) و 1.0 (خارجيا).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 من X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "عودة قوس ظل النقطة (س، ص) بالدرجات من -180 إلى 180.", - "TEXT_TEXT_HELPURL": "https://ar.wikipedia.org/wiki/سلسلة_(علم_الحاسوب)", - "TEXT_TEXT_TOOLTIP": "حرف أو كلمة أو سطر من النص.", - "TEXT_JOIN_TITLE_CREATEWITH": "انشئ نص مع", - "TEXT_JOIN_TOOLTIP": "أنشئ جزء من النص بالصاق أي عدد من العناصر ببعضها البعض.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "الانضمام إلى", - "TEXT_CREATE_JOIN_TOOLTIP": "أضف, إحذف, أو أعد ترتيب المقاطع لإعادة تكوين النص من القطع التالية.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "إضف عنصر إلى النص.", - "TEXT_APPEND_TITLE": "إلى %1 إلصق نص %2", - "TEXT_APPEND_TOOLTIP": "إلصق جزءا من النص إلى متغير '%1'.", - "TEXT_LENGTH_TITLE": "طول %1", - "TEXT_LENGTH_TOOLTIP": "تقوم بإرجاع عدد الاحرف (بما في ذلك الفراغات) في النص المقدم.", - "TEXT_ISEMPTY_TITLE": "%1 فارغ", - "TEXT_ISEMPTY_TOOLTIP": "يرجع \"صحيح\" إذا كان النص المقدم فارغ.", - "TEXT_INDEXOF_TOOLTIP": "تقوم بإرجاع مؤشر التواجد الأول/الأخير للنص الأول في النص الثاني. تقوم بإرجاع %1 إذا لم يتم العثور على النص.", - "TEXT_INDEXOF_TITLE": "في النص %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "ابحث عن التواجد الأول للنص", - "TEXT_INDEXOF_OPERATOR_LAST": "ابحث عن التواجد الأخير للنص", - "TEXT_CHARAT_TITLE": "في النص %1 %2", - "TEXT_CHARAT_FROM_START": "الحصول على الحرف #", - "TEXT_CHARAT_FROM_END": "الحصول على الحرف # من نهاية", - "TEXT_CHARAT_FIRST": "احصل على الحرف الأول", - "TEXT_CHARAT_LAST": "احصل على آخر حرف", - "TEXT_CHARAT_RANDOM": "الحصول على حرف عشوائي", - "TEXT_CHARAT_TOOLTIP": "يرجع حرف ما في الموضع المحدد.", - "TEXT_GET_SUBSTRING_TOOLTIP": "يرجع جزء معين من النص.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "في النص", - "TEXT_GET_SUBSTRING_START_FROM_START": "الحصول على سلسلة حروف فرعية من الحرف #", - "TEXT_GET_SUBSTRING_START_FROM_END": "الحصول على سلسلة حروف فرعية من الحرف # من نهاية", - "TEXT_GET_SUBSTRING_START_FIRST": "الحصول على سلسلة فرعية من الحرف الأول", - "TEXT_GET_SUBSTRING_END_FROM_START": "إلى حرف #", - "TEXT_GET_SUBSTRING_END_FROM_END": "إلى حرف # من نهاية", - "TEXT_GET_SUBSTRING_END_LAST": "إلى آخر حرف", - "TEXT_CHANGECASE_TOOLTIP": "يرجع نسخة من النص في حالة مختلفة.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "الى حروف كبيرة", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "الى حروف صغيرة", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "الى حروف العنوان", - "TEXT_TRIM_TOOLTIP": "يرجع نسخة من النص مع حذف من أحد أو كلا الفراغات من أطرافه.", - "TEXT_TRIM_OPERATOR_BOTH": "إزالة الفراغات من كلا الجانبين", - "TEXT_TRIM_OPERATOR_LEFT": "إزالة الفراغات من الجانب الأيسر من", - "TEXT_TRIM_OPERATOR_RIGHT": "إزالة الفراغات من الجانب الأيمن من", - "TEXT_PRINT_TITLE": "اطبع %1", - "TEXT_PRINT_TOOLTIP": "اطبع النص المحدد أو العدد أو قيمة أخرى.", - "TEXT_PROMPT_TYPE_TEXT": "انتظر ادخال المستخدم لنص ما مع اظهار رسالة", - "TEXT_PROMPT_TYPE_NUMBER": "انتظر ادخال المستخدم لرقم ما مع اظهار رسالة", - "TEXT_PROMPT_TOOLTIP_NUMBER": "انتظر ادخال المستخذم لرقم ما.", - "TEXT_PROMPT_TOOLTIP_TEXT": "انتظر ادخال المستخدم لنص ما.", - "TEXT_COUNT_MESSAGE0": "العدد %1 في %2", - "TEXT_COUNT_TOOLTIP": "احسب كم عدد بعض النصوص تتكرر ضمن نص اخر.", - "TEXT_REPLACE_MESSAGE0": "بدل %1 ب %2 في %3", - "TEXT_REPLACE_TOOLTIP": "استبدل جميع حالات حدوث بعض النصوص داخل نص آخر.", - "TEXT_REVERSE_MESSAGE0": "عكس %1", - "TEXT_REVERSE_TOOLTIP": "يعكس ترتيب حروف النص", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "إنشئ قائمة فارغة", - "LISTS_CREATE_EMPTY_TOOLTIP": "تقوم بإرجاع قائمة، طولها 0, لا تحتوي على أية سجلات البيانات", - "LISTS_CREATE_WITH_TOOLTIP": "أنشىء قائمة من أي عدد من العناصر.", - "LISTS_CREATE_WITH_INPUT_WITH": "أتشئ قائمة مع", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "قائمة", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة قائمة القطع التالية.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "أضف عنصرا إلى القائمة.", - "LISTS_REPEAT_TOOLTIP": "انشئ قائمة تتألف من القيمة المعطاة متكررة لعدد محدد من المرات.", - "LISTS_REPEAT_TITLE": "إنشئ قائمة مع العنصر %1 %2 مرات", - "LISTS_LENGTH_TITLE": "الطول من %1", - "LISTS_LENGTH_TOOLTIP": "تقوم بإرجاع طول قائمة.", - "LISTS_ISEMPTY_TITLE": "%1 فارغ", - "LISTS_ISEMPTY_TOOLTIP": "يرجع \"صحيح\" إذا كانت القائمة فارغة.", - "LISTS_INLIST": "في قائمة", - "LISTS_INDEX_OF_FIRST": "ابحث على على التواجد الأول للعنصر", - "LISTS_INDEX_OF_LAST": "ابحث على التواجد الأخير للعنصر", - "LISTS_INDEX_OF_TOOLTIP": "تقوم بإرجاع مؤشر التواجد الأول/الأخير في القائمة. تقوم بإرجاع %1 إذا لم يتم العثور على النص.", - "LISTS_GET_INDEX_GET": "احصل على", - "LISTS_GET_INDEX_GET_REMOVE": "احصل على و ازل", - "LISTS_GET_INDEX_REMOVE": "ازل", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# من نهاية", - "LISTS_GET_INDEX_FIRST": "أول", - "LISTS_GET_INDEX_LAST": "أخير", - "LISTS_GET_INDEX_RANDOM": "عشوائي", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 هو العنصر الأول.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 هو العنصر الأخير.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "يقوم بإرجاع العنصر في الموضع المحدد في قائمة ما.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "يرجع العنصر الأول في قائمة ما.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "يرجع العنصر الأخير في قائمة ما.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "يرجع عنصرا عشوائيا في قائمة.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "يزيل ويقوم بإرجاع العنصر في الموضع المحدد في قائمة ما.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "يزيل ويرجع العنصر الأول في قائمة.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "يزيل ويرجع العنصر الأخير في قائمة ما.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "يزيل و يرجع عنصرا عشوائيا في قائمة ما.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "يزيل العنصر الموجود في الموضع المحدد في قائمة ما.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "يزيل العنصر الأول في قائمة ما.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "يزيل العنصر الأخير في قائمة ما.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "يزيل عنصرا عشوائيا في قائمة ما.", - "LISTS_SET_INDEX_SET": "تعيين", - "LISTS_SET_INDEX_INSERT": "أدخل في", - "LISTS_SET_INDEX_INPUT_TO": "مثل", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "يحدد العنصر في الموضع المحدد في قائمة ما.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "يحدد العنصر الأول في قائمة.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "يحدد العنصر الأخير في قائمة.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "يحدد عنصرا عشوائيا في قائمة.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "يقوم بإدخال العنصر في الموضع المحدد في قائمة ما.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "يقوم بإدراج هذا العنصر في بداية قائمة.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "ألصق هذا العنصر بنهاية قائمة.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "ادخل العنصر عشوائياً في القائمة.", - "LISTS_GET_SUBLIST_START_FROM_START": "احصل على قائمة فرعية من #", - "LISTS_GET_SUBLIST_START_FROM_END": "احصل على قائمة فرعية من # من نهاية", - "LISTS_GET_SUBLIST_START_FIRST": "احصل على قائمة فرعية من الأول", - "LISTS_GET_SUBLIST_END_FROM_START": "إلى #", - "LISTS_GET_SUBLIST_END_FROM_END": "إلى # من نهاية", - "LISTS_GET_SUBLIST_END_LAST": "إلى الأخير", - "LISTS_GET_SUBLIST_TOOLTIP": "يقوم بإنشاء نسخة من الجزء المحدد من قائمة ما.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "رتب %1 %2 %3", - "LISTS_SORT_TOOLTIP": "فرز نسخة من القائمة.", - "LISTS_SORT_ORDER_ASCENDING": "تصاعديا", - "LISTS_SORT_ORDER_DESCENDING": "تنازليا", - "LISTS_SORT_TYPE_NUMERIC": "رقمي", - "LISTS_SORT_TYPE_TEXT": "أبجديًا", - "LISTS_SORT_TYPE_IGNORECASE": "أبجديا، وتجاهل الحالة", - "LISTS_SPLIT_LIST_FROM_TEXT": "إعداد قائمة من النصوص", - "LISTS_SPLIT_TEXT_FROM_LIST": "إعداد نص من القائمة", - "LISTS_SPLIT_WITH_DELIMITER": "مع محدد", - "LISTS_SPLIT_TOOLTIP_SPLIT": "تقسيم النص إلى قائمة من النصوص، وكسر في كل محدد", - "LISTS_SPLIT_TOOLTIP_JOIN": "ضم قائمة النصوص في نص واحد، مفصولة بواسطة محدد.", - "LISTS_REVERSE_MESSAGE0": "عكس %1", - "LISTS_REVERSE_TOOLTIP": "عكس نسخة من القائمة.", - "VARIABLES_GET_TOOLTIP": "يرجع قيمة هذا المتغير.", - "VARIABLES_GET_CREATE_SET": "انشئ 'التعيين %1'", - "VARIABLES_SET": "تعيين %1 إلى %2", - "VARIABLES_SET_TOOLTIP": "تعيين هذا المتغير لتكون مساوية للقيمة المدخلة.", - "VARIABLES_SET_CREATE_GET": "انشئ 'احصل على %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://ar.wikipedia.org/wiki/دالة_(برمجة)", - "PROCEDURES_DEFNORETURN_TITLE": "إلى", - "PROCEDURES_DEFNORETURN_PROCEDURE": "القيام بشيء ما", - "PROCEDURES_BEFORE_PARAMS": "مع:", - "PROCEDURES_CALL_BEFORE_PARAMS": "مع:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "انشئ دالة بدون مخرجات .", - "PROCEDURES_DEFNORETURN_COMMENT": "صف هذه الوظيفة...", - "PROCEDURES_DEFRETURN_HELPURL": "https://tr.wikipedia.org/wiki/دالة_(برمجة)", - "PROCEDURES_DEFRETURN_RETURN": "يرجع", - "PROCEDURES_DEFRETURN_TOOLTIP": "انشئ دالة مع المخرجات.", - "PROCEDURES_ALLOW_STATEMENTS": "اسمح بالبيانات", - "PROCEDURES_DEF_DUPLICATE_WARNING": "تحذير: هذه الدالة تحتوي على معلمات مكررة.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://ar.wikipedia.org/wiki/دالة_(برمجة)", - "PROCEDURES_CALLNORETURN_TOOLTIP": "تشغيل الدالة المعرفة من قبل المستخدم '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://ar.wikipedia.org/wiki/دالة_(برمجة)", - "PROCEDURES_CALLRETURN_TOOLTIP": "تشغيل الدالة المعرفة من قبل المستخدم %1 واستخدام مخرجاتها.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "المدخلات", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "إضافة أو إزالة أو إعادة ترتيب المدخلات لهذه المهمة.", - "PROCEDURES_MUTATORARG_TITLE": "اسم الإدخال:", - "PROCEDURES_MUTATORARG_TOOLTIP": "أضف مدخلا إلى الوظيفة.", - "PROCEDURES_HIGHLIGHT_DEF": "تسليط الضوء على تعريف الدالة", - "PROCEDURES_CREATE_DO": "إنشئ '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "إذا كانت القيمة صحيحة ، اذان قم بارجاع القيمة الثانية.", - "PROCEDURES_IFRETURN_WARNING": "تحذير:هذه القطعة تستخدم فقط داخل تعريف دالة.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "قل شيئا...", - "WORKSPACE_ARIA_LABEL": "مساحة عمل بلوكلي", - "COLLAPSED_WARNINGS_WARNING": "الكتل المطوية تحتوي على تحذيرات.", - "DIALOG_OK": "موافق", - "DIALOG_CANCEL": "إلغاء" -} +{ + "@metadata": { + "authors": [ + "Diyariq", + "DonAdnan", + "Meno25", + "Mido", + "Moud hosny", + "MuratTheTurkish", + "Samir", + "Test Create account", + "ديفيد", + "محمد أحمد عبد الفتاح", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "البند", + "UNNAMED_KEY": "غير مسمى", + "TODAY": "اليوم", + "DUPLICATE_BLOCK": "مكرر", + "ADD_COMMENT": "أضف تعليقًا", + "REMOVE_COMMENT": "أزل التعليق", + "DUPLICATE_COMMENT": "تعليق مكرر", + "EXTERNAL_INPUTS": "ادخال خارجي", + "INLINE_INPUTS": "ادخال خطي", + "DELETE_BLOCK": "احذف القطعة", + "DELETE_X_BLOCKS": "احذف %1 قطع", + "DELETE_ALL_BLOCKS": "حذف %1 قطعة؟", + "CLEAN_UP": "ترتيب القطع", + "COLLAPSE_BLOCK": "إخفاء القطعة", + "COLLAPSE_ALL": "إخفاء القطع", + "EXPAND_BLOCK": "وسٌّع القطعة", + "EXPAND_ALL": "وسٌّع القطع", + "DISABLE_BLOCK": "عطّل القطعة", + "ENABLE_BLOCK": "أعد تفعيل القطعة", + "HELP": "مساعدة", + "UNDO": "رجوع", + "REDO": "إعادة", + "CHANGE_VALUE_TITLE": "تغيير قيمة:", + "RENAME_VARIABLE": "إعادة تسمية المتغير...", + "RENAME_VARIABLE_TITLE": "إعادة تسمية كافة المتغيرات '%1' إلى:", + "NEW_VARIABLE": "إنشاء متغير...", + "NEW_STRING_VARIABLE": "انشاء متغير نصي...", + "NEW_NUMBER_VARIABLE": "انشاء متغير رقمي...", + "NEW_COLOUR_VARIABLE": "انشاء متغير لوني...", + "NEW_VARIABLE_TYPE_TITLE": "نوع متغير جديد:", + "NEW_VARIABLE_TITLE": "اسم المتغير الجديد:", + "VARIABLE_ALREADY_EXISTS": "المتغير '%1' موجود بالفعل", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "متغير بأسم '%1' معرف من نوع اخر : '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "حذف%1 1 استخدامات المتغير '%2'؟", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "لايمكن حذف متغير \"%1\" بسبب انه جزء من الدالة \"%2\"", + "DELETE_VARIABLE": "حذف المتغير %1", + "COLOUR_PICKER_HELPURL": "https://ar.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "اختر لون من اللوحة.", + "COLOUR_RANDOM_TITLE": "لون عشوائي", + "COLOUR_RANDOM_TOOLTIP": "اختر لون بشكل عشوائي.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "لون مع", + "COLOUR_RGB_RED": "أحمر", + "COLOUR_RGB_GREEN": "أخضر", + "COLOUR_RGB_BLUE": "أزرق", + "COLOUR_RGB_TOOLTIP": "إنشئ لون بالكمية المحددة من الأحمر, الأخضر والأزرق. بحيث يجب تكون كافة القيم بين 0 و 100.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "دمج", + "COLOUR_BLEND_COLOUR1": "اللون 1", + "COLOUR_BLEND_COLOUR2": "اللون 2", + "COLOUR_BLEND_RATIO": "نسبة", + "COLOUR_BLEND_TOOLTIP": "دمج لونين ببعضهما البعض بنسبة (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://ar.wikipedia.org/wiki/حلقة_تكرار", + "CONTROLS_REPEAT_TITLE": "كرر %1 مرات", + "CONTROLS_REPEAT_INPUT_DO": "نفّذ", + "CONTROLS_REPEAT_TOOLTIP": "نفّذ بعض الأوامر عدة مرات.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "اكرّر طالما", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "اكرّر حتى", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "بما ان القيمة صحيحة, نفّذ بعض الأوامر.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "بما ان القيمة خاطئة, نفّذ بعض الأوامر.", + "CONTROLS_FOR_TOOLTIP": "اجعل المتغير %1 يأخذ القيم من رقم البداية الى رقم النهاية، وقم بالعد داخل المجال المحدد، وطبق أوامر القطع المحددة.", + "CONTROLS_FOR_TITLE": "عد بـ %1 من %2 إلى %3 بمعدل %4", + "CONTROLS_FOREACH_TITLE": "لكل عنصر %1 في قائمة %2", + "CONTROLS_FOREACH_TOOLTIP": "لكل عنصر في قائمة ما، عين المتغير '%1' لهذا الغنصر، ومن ثم نفذ بعض الأوامر.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "اخرج من الحلقة", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "استمر ابتداءا من التكرار التالي من الحلقة", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "اخرج من الحلقة الحالية.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "تخط ما تبقى من هذه الحلقة، واستمر ابتداءا من التكرار التالي.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "تحذير: يمكن استخدام هذه القطعة فقط داخل حلقة.", + "CONTROLS_IF_TOOLTIP_1": "إذا كانت قيمة ما تساوي صحيح, إذن قم بتنفيذ أمر ما.", + "CONTROLS_IF_TOOLTIP_2": "إذا كانت قيمة ما تساوي \"صحيح\"، إذن قم بتنفيذ أول قطعة من الأوامر. والا ،قم بتنفيذ القطعة الثانية من الأوامر.", + "CONTROLS_IF_TOOLTIP_3": "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا, إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر.", + "CONTROLS_IF_TOOLTIP_4": "إذا كانت القيمة الأولى تساوي \"صحيح\", إذن قم بتنفيذ القطعة الأولى من الأوامر. والا , إذا كانت القيمة الثانية تساوي \"صحيح\", قم بتنفيذ القطعة الثانية من الأوامر. إذا لم تكن هناك أي قيمة تساوي صحيح, قم بتنفيذ آخر قطعة من الأوامر.", + "CONTROLS_IF_MSG_IF": "إذا", + "CONTROLS_IF_MSG_ELSEIF": "وإﻻ إذا", + "CONTROLS_IF_MSG_ELSE": "والا", + "CONTROLS_IF_IF_TOOLTIP": "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة الشرطية \"إذا\".", + "CONTROLS_IF_ELSEIF_TOOLTIP": "إضف شرطا إلى القطعة الشرطية \"إذا\".", + "CONTROLS_IF_ELSE_TOOLTIP": "أضف شرط \"نهاية، إجمع\" إلى القطعة الشرطية \"إذا\".", + "LOGIC_COMPARE_HELPURL": "https://ar.wikipedia.org/wiki/متباينة_(جبر)", + "LOGIC_COMPARE_TOOLTIP_EQ": "يرجع صحيح إذا كان كلا المدخلات مساوية بعضها البعض.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "يرجع صحيح إذا كانت كلا المدخلات غير مساوية لبعضها البعض.", + "LOGIC_COMPARE_TOOLTIP_LT": "يرجع صحيح إذا كان الإدخال الأول أصغر من الإدخال الثاني.", + "LOGIC_COMPARE_TOOLTIP_LTE": "يرجع صحيح إذا كان الإدخال الأول أصغر من أو يساوي الإدخال الثاني.", + "LOGIC_COMPARE_TOOLTIP_GT": "يرجع صحيح إذا كان الإدخال الأول أكبر من الإدخال الثاني.", + "LOGIC_COMPARE_TOOLTIP_GTE": "يرجع صحيح إذا كان الإدخال الأول أكبر من أو يساوي الإدخال الثاني.", + "LOGIC_OPERATION_TOOLTIP_AND": "ترجع صحيح إذا كان كلا المٌدخلات صحيح.", + "LOGIC_OPERATION_AND": "و", + "LOGIC_OPERATION_TOOLTIP_OR": "ترجع صحيح إذا كان واحد على الأقل من المدخلات صحيح.", + "LOGIC_OPERATION_OR": "أو", + "LOGIC_NEGATE_TITLE": "ليس %1", + "LOGIC_NEGATE_TOOLTIP": "يرجع صحيح إذا كان الإدخال خاطئ . يرجع خاطئ إذا كان الإدخال صحيح.", + "LOGIC_BOOLEAN_TRUE": "صحيح", + "LOGIC_BOOLEAN_FALSE": "خاطئ", + "LOGIC_BOOLEAN_TOOLTIP": "يرجع صحيح أو خاطئ.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "فارغ", + "LOGIC_NULL_TOOLTIP": "ترجع ملغى.", + "LOGIC_TERNARY_HELPURL": ":https://ar.wikipedia.org/wiki/%3F", + "LOGIC_TERNARY_CONDITION": "اختبار", + "LOGIC_TERNARY_IF_TRUE": "إذا كانت العبارة صحيحة", + "LOGIC_TERNARY_IF_FALSE": "إذا كانت العبارة خاطئة", + "LOGIC_TERNARY_TOOLTIP": "تحقق الشرط في 'الاختبار'. إذا كان الشرط صحيح، يقوم بإرجاع قيمة 'اذا كانت العبارة صحيحة'؛ خلاف ذلك يرجع قيمة 'اذا كانت العبارة خاطئة'.", + "MATH_NUMBER_HELPURL": "https://ar.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF", + "MATH_NUMBER_TOOLTIP": "عدد ما.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "جيب", + "MATH_TRIG_COS": "جيب تمام", + "MATH_TRIG_TAN": "ظل", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://ar.wikipedia.org/wiki/حسابيات", + "MATH_ARITHMETIC_TOOLTIP_ADD": "يرجع مجموع الرقمين.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "يرجع الفرق بين الرقمين.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "يرجع حاصل ضرب الرقمين.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "يرجع حاصل قسمة الرقمين.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "يرجع الرقم الأول مرفوع إلى تربيع الرقم الثاني.", + "MATH_SINGLE_HELPURL": "https://ar.wikipedia.org/wiki/جذر_تربيعي", + "MATH_SINGLE_OP_ROOT": "الجذر التربيعي", + "MATH_SINGLE_TOOLTIP_ROOT": "يرجع الجذر التربيعي للرقم.", + "MATH_SINGLE_OP_ABSOLUTE": "مطلق", + "MATH_SINGLE_TOOLTIP_ABS": "يرجع القيمة المطلقة لرقم.", + "MATH_SINGLE_TOOLTIP_NEG": "يرجع عدد سالب.", + "MATH_SINGLE_TOOLTIP_LN": "يرجع اللوغاريتم الطبيعي لرقم.", + "MATH_SINGLE_TOOLTIP_LOG10": "يرجع لوغاريتم عدد معين للاساس 10.", + "MATH_SINGLE_TOOLTIP_EXP": "يرجع ه‍ (e) مرفوعا لأس بقيمة الرقم المدخل.", + "MATH_SINGLE_TOOLTIP_POW10": "يرجع مضروب الرقم 10 في نفسه .", + "MATH_TRIG_HELPURL": "https://ar.wikipedia.org/wiki/دوال_مثلثية", + "MATH_TRIG_TOOLTIP_SIN": "يرجع جيب التمام لدرجة (لا زواية نصف قطرية).", + "MATH_TRIG_TOOLTIP_COS": "يرجع جيب التمام لدرجة (لا زواية نصف قطرية).", + "MATH_TRIG_TOOLTIP_TAN": "يرجع الظل لدرجة (لا دائرة نصف قطرية).", + "MATH_TRIG_TOOLTIP_ASIN": "يرجع قوس الجيب للرقم.", + "MATH_TRIG_TOOLTIP_ACOS": "يرجع قوس جيب التمام لرقم.", + "MATH_TRIG_TOOLTIP_ATAN": "يرجع قوس الظل للرقم.", + "MATH_CONSTANT_HELPURL": "https://ar.wikipedia.org/wiki/ثابت رياضي", + "MATH_CONSTANT_TOOLTIP": "ير جع واحد من الثوابت الشائعة : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", + "MATH_IS_EVEN": "هو زوجي", + "MATH_IS_ODD": "هو فرذي", + "MATH_IS_PRIME": "هو أولي", + "MATH_IS_WHOLE": "هو صحيح", + "MATH_IS_POSITIVE": "هو موجب", + "MATH_IS_NEGATIVE": "هو سالب", + "MATH_IS_DIVISIBLE_BY": "قابل للقسمة", + "MATH_IS_TOOLTIP": "تحقق إذا كان عدد ما زوجيا، فرذيا, أوليا، صحيحا،موجبا أو سالبا، أو إذا كان قابلا للقسمة على عدد معين. يرجع صحيح أو خاطئ.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "غير %1 بـ %2", + "MATH_CHANGE_TOOLTIP": "إضف رقم إلى متغير '%1'.", + "MATH_ROUND_HELPURL": "https://ar.wikipedia.org/wiki/تقريب_(رياضيات)", + "MATH_ROUND_TOOLTIP": "تقريب الى اكبر عدد صحيح أو الى اصغر عدد صحيح.", + "MATH_ROUND_OPERATOR_ROUND": "تقريب", + "MATH_ROUND_OPERATOR_ROUNDUP": "تقريب الى اكبر عدد صحيح", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "تقريب إلى اصغر عدد صحيح", + "MATH_ONLIST_OPERATOR_SUM": "مجموع القائمة", + "MATH_ONLIST_TOOLTIP_SUM": "يرجع مجموع كافة الأرقام الموجودة في القائمة.", + "MATH_ONLIST_OPERATOR_MIN": "الحد الأدنى من قائمة", + "MATH_ONLIST_TOOLTIP_MIN": "يرجع أصغر رقم في القائمة.", + "MATH_ONLIST_OPERATOR_MAX": "الحد الأقصى لقائمة", + "MATH_ONLIST_TOOLTIP_MAX": "يرجع أكبر عدد في القائمة.", + "MATH_ONLIST_OPERATOR_AVERAGE": "متوسط القائمة", + "MATH_ONLIST_TOOLTIP_AVERAGE": "يرجع المعدل (الوسط الحسابي) للقيم الرقمية في القائمة.", + "MATH_ONLIST_OPERATOR_MEDIAN": "متوسط القائمة", + "MATH_ONLIST_TOOLTIP_MEDIAN": "يرجع وسيط العدد في القائمة.", + "MATH_ONLIST_OPERATOR_MODE": "منوال القائمة", + "MATH_ONLIST_TOOLTIP_MODE": "يرجع قائمة من العنصر أو العناصر الأكثر شيوعاً في القائمة.", + "MATH_ONLIST_OPERATOR_STD_DEV": "الانحراف المعياري للقائمة", + "MATH_ONLIST_TOOLTIP_STD_DEV": "يرجع الانحراف المعياري للقائمة.", + "MATH_ONLIST_OPERATOR_RANDOM": "عنصر عشوائي من القائمة", + "MATH_ONLIST_TOOLTIP_RANDOM": "يرجع عنصر عشوائي من القائمة.", + "MATH_MODULO_HELPURL": "https://tr.wikipedia.org/wiki/عامل_قسمة_مع_باقي", + "MATH_MODULO_TITLE": "باقي %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "يرجع الباقي من قسمة الرقمين.", + "MATH_CONSTRAIN_TITLE": "تقيد %1 منخفض %2 مرتفع %3", + "MATH_CONSTRAIN_TOOLTIP": "تقييد العددليكون بين الحدود المحددة (ضمناً).", + "MATH_RANDOM_INT_HELPURL": "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية", + "MATH_RANDOM_INT_TITLE": " عدد صحيح عشوائي من %1 إلى %2", + "MATH_RANDOM_INT_TOOLTIP": "يرجع عدد صحيح عشوائي بين حدين محددين, ضمنيا.", + "MATH_RANDOM_FLOAT_HELPURL": "https://ar.wikipedia.org/wiki/توليد_الأعداد_العشوائية", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "كسر عشوائي", + "MATH_RANDOM_FLOAT_TOOLTIP": "يرجع جزء عشوائي بين 0.0 (ضمنياً) و 1.0 (خارجيا).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 من X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "عودة قوس ظل النقطة (س، ص) بالدرجات من -180 إلى 180.", + "TEXT_TEXT_HELPURL": "https://ar.wikipedia.org/wiki/سلسلة_(علم_الحاسوب)", + "TEXT_TEXT_TOOLTIP": "حرف أو كلمة أو سطر من النص.", + "TEXT_JOIN_TITLE_CREATEWITH": "انشئ نص مع", + "TEXT_JOIN_TOOLTIP": "أنشئ جزء من النص بالصاق أي عدد من العناصر ببعضها البعض.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "الانضمام إلى", + "TEXT_CREATE_JOIN_TOOLTIP": "أضف, إحذف, أو أعد ترتيب المقاطع لإعادة تكوين النص من القطع التالية.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "إضف عنصر إلى النص.", + "TEXT_APPEND_TITLE": "إلى %1 إلصق نص %2", + "TEXT_APPEND_TOOLTIP": "إلصق جزءا من النص إلى متغير '%1'.", + "TEXT_LENGTH_TITLE": "طول %1", + "TEXT_LENGTH_TOOLTIP": "تقوم بإرجاع عدد الاحرف (بما في ذلك الفراغات) في النص المقدم.", + "TEXT_ISEMPTY_TITLE": "%1 فارغ", + "TEXT_ISEMPTY_TOOLTIP": "يرجع \"صحيح\" إذا كان النص المقدم فارغ.", + "TEXT_INDEXOF_TOOLTIP": "تقوم بإرجاع مؤشر التواجد الأول/الأخير للنص الأول في النص الثاني. تقوم بإرجاع %1 إذا لم يتم العثور على النص.", + "TEXT_INDEXOF_TITLE": "في النص %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "ابحث عن التواجد الأول للنص", + "TEXT_INDEXOF_OPERATOR_LAST": "ابحث عن التواجد الأخير للنص", + "TEXT_CHARAT_TITLE": "في النص %1 %2", + "TEXT_CHARAT_FROM_START": "الحصول على الحرف #", + "TEXT_CHARAT_FROM_END": "الحصول على الحرف # من نهاية", + "TEXT_CHARAT_FIRST": "احصل على الحرف الأول", + "TEXT_CHARAT_LAST": "احصل على آخر حرف", + "TEXT_CHARAT_RANDOM": "الحصول على حرف عشوائي", + "TEXT_CHARAT_TOOLTIP": "يرجع حرف ما في الموضع المحدد.", + "TEXT_GET_SUBSTRING_TOOLTIP": "يرجع جزء معين من النص.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "في النص", + "TEXT_GET_SUBSTRING_START_FROM_START": "الحصول على سلسلة حروف فرعية من الحرف #", + "TEXT_GET_SUBSTRING_START_FROM_END": "الحصول على سلسلة حروف فرعية من الحرف # من نهاية", + "TEXT_GET_SUBSTRING_START_FIRST": "الحصول على سلسلة فرعية من الحرف الأول", + "TEXT_GET_SUBSTRING_END_FROM_START": "إلى حرف #", + "TEXT_GET_SUBSTRING_END_FROM_END": "إلى حرف # من نهاية", + "TEXT_GET_SUBSTRING_END_LAST": "إلى آخر حرف", + "TEXT_CHANGECASE_TOOLTIP": "يرجع نسخة من النص في حالة مختلفة.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "الى حروف كبيرة", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "الى حروف صغيرة", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "الى حروف العنوان", + "TEXT_TRIM_TOOLTIP": "يرجع نسخة من النص مع حذف من أحد أو كلا الفراغات من أطرافه.", + "TEXT_TRIM_OPERATOR_BOTH": "إزالة الفراغات من كلا الجانبين", + "TEXT_TRIM_OPERATOR_LEFT": "إزالة الفراغات من الجانب الأيسر من", + "TEXT_TRIM_OPERATOR_RIGHT": "إزالة الفراغات من الجانب الأيمن من", + "TEXT_PRINT_TITLE": "اطبع %1", + "TEXT_PRINT_TOOLTIP": "اطبع النص المحدد أو العدد أو قيمة أخرى.", + "TEXT_PROMPT_TYPE_TEXT": "انتظر ادخال المستخدم لنص ما مع اظهار رسالة", + "TEXT_PROMPT_TYPE_NUMBER": "انتظر ادخال المستخدم لرقم ما مع اظهار رسالة", + "TEXT_PROMPT_TOOLTIP_NUMBER": "انتظر ادخال المستخذم لرقم ما.", + "TEXT_PROMPT_TOOLTIP_TEXT": "انتظر ادخال المستخدم لنص ما.", + "TEXT_COUNT_MESSAGE0": "العدد %1 في %2", + "TEXT_COUNT_TOOLTIP": "احسب كم عدد بعض النصوص تتكرر ضمن نص اخر.", + "TEXT_REPLACE_MESSAGE0": "بدل %1 ب %2 في %3", + "TEXT_REPLACE_TOOLTIP": "استبدل جميع حالات حدوث بعض النصوص داخل نص آخر.", + "TEXT_REVERSE_MESSAGE0": "عكس %1", + "TEXT_REVERSE_TOOLTIP": "يعكس ترتيب حروف النص", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "إنشئ قائمة فارغة", + "LISTS_CREATE_EMPTY_TOOLTIP": "تقوم بإرجاع قائمة، طولها 0, لا تحتوي على أية سجلات البيانات", + "LISTS_CREATE_WITH_TOOLTIP": "أنشىء قائمة من أي عدد من العناصر.", + "LISTS_CREATE_WITH_INPUT_WITH": "أتشئ قائمة مع", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "قائمة", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "أضف, إزل, أو أعد ترتيب المقاطع لإعادة تكوين القطعة قائمة القطع التالية.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "أضف عنصرا إلى القائمة.", + "LISTS_REPEAT_TOOLTIP": "انشئ قائمة تتألف من القيمة المعطاة متكررة لعدد محدد من المرات.", + "LISTS_REPEAT_TITLE": "إنشئ قائمة مع العنصر %1 %2 مرات", + "LISTS_LENGTH_TITLE": "الطول من %1", + "LISTS_LENGTH_TOOLTIP": "تقوم بإرجاع طول قائمة.", + "LISTS_ISEMPTY_TITLE": "%1 فارغ", + "LISTS_ISEMPTY_TOOLTIP": "يرجع \"صحيح\" إذا كانت القائمة فارغة.", + "LISTS_INLIST": "في قائمة", + "LISTS_INDEX_OF_FIRST": "ابحث على على التواجد الأول للعنصر", + "LISTS_INDEX_OF_LAST": "ابحث على التواجد الأخير للعنصر", + "LISTS_INDEX_OF_TOOLTIP": "تقوم بإرجاع مؤشر التواجد الأول/الأخير في القائمة. تقوم بإرجاع %1 إذا لم يتم العثور على النص.", + "LISTS_GET_INDEX_GET": "احصل على", + "LISTS_GET_INDEX_GET_REMOVE": "احصل على و ازل", + "LISTS_GET_INDEX_REMOVE": "ازل", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# من نهاية", + "LISTS_GET_INDEX_FIRST": "أول", + "LISTS_GET_INDEX_LAST": "أخير", + "LISTS_GET_INDEX_RANDOM": "عشوائي", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 هو العنصر الأول.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 هو العنصر الأخير.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "يقوم بإرجاع العنصر في الموضع المحدد في قائمة ما.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "يرجع العنصر الأول في قائمة ما.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "يرجع العنصر الأخير في قائمة ما.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "يرجع عنصرا عشوائيا في قائمة.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "يزيل ويقوم بإرجاع العنصر في الموضع المحدد في قائمة ما.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "يزيل ويرجع العنصر الأول في قائمة.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "يزيل ويرجع العنصر الأخير في قائمة ما.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "يزيل و يرجع عنصرا عشوائيا في قائمة ما.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "يزيل العنصر الموجود في الموضع المحدد في قائمة ما.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "يزيل العنصر الأول في قائمة ما.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "يزيل العنصر الأخير في قائمة ما.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "يزيل عنصرا عشوائيا في قائمة ما.", + "LISTS_SET_INDEX_SET": "تعيين", + "LISTS_SET_INDEX_INSERT": "أدخل في", + "LISTS_SET_INDEX_INPUT_TO": "مثل", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "يحدد العنصر في الموضع المحدد في قائمة ما.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "يحدد العنصر الأول في قائمة.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "يحدد العنصر الأخير في قائمة.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "يحدد عنصرا عشوائيا في قائمة.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "يقوم بإدخال العنصر في الموضع المحدد في قائمة ما.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "يقوم بإدراج هذا العنصر في بداية قائمة.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "ألصق هذا العنصر بنهاية قائمة.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "ادخل العنصر عشوائياً في القائمة.", + "LISTS_GET_SUBLIST_START_FROM_START": "احصل على قائمة فرعية من #", + "LISTS_GET_SUBLIST_START_FROM_END": "احصل على قائمة فرعية من # من نهاية", + "LISTS_GET_SUBLIST_START_FIRST": "احصل على قائمة فرعية من الأول", + "LISTS_GET_SUBLIST_END_FROM_START": "إلى #", + "LISTS_GET_SUBLIST_END_FROM_END": "إلى # من نهاية", + "LISTS_GET_SUBLIST_END_LAST": "إلى الأخير", + "LISTS_GET_SUBLIST_TOOLTIP": "يقوم بإنشاء نسخة من الجزء المحدد من قائمة ما.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "رتب %1 %2 %3", + "LISTS_SORT_TOOLTIP": "فرز نسخة من القائمة.", + "LISTS_SORT_ORDER_ASCENDING": "تصاعديا", + "LISTS_SORT_ORDER_DESCENDING": "تنازليا", + "LISTS_SORT_TYPE_NUMERIC": "رقمي", + "LISTS_SORT_TYPE_TEXT": "أبجديًا", + "LISTS_SORT_TYPE_IGNORECASE": "أبجديا، وتجاهل الحالة", + "LISTS_SPLIT_LIST_FROM_TEXT": "إعداد قائمة من النصوص", + "LISTS_SPLIT_TEXT_FROM_LIST": "إعداد نص من القائمة", + "LISTS_SPLIT_WITH_DELIMITER": "مع محدد", + "LISTS_SPLIT_TOOLTIP_SPLIT": "تقسيم النص إلى قائمة من النصوص، وكسر في كل محدد", + "LISTS_SPLIT_TOOLTIP_JOIN": "ضم قائمة النصوص في نص واحد، مفصولة بواسطة محدد.", + "LISTS_REVERSE_MESSAGE0": "عكس %1", + "LISTS_REVERSE_TOOLTIP": "عكس نسخة من القائمة.", + "VARIABLES_GET_TOOLTIP": "يرجع قيمة هذا المتغير.", + "VARIABLES_GET_CREATE_SET": "انشئ 'التعيين %1'", + "VARIABLES_SET": "تعيين %1 إلى %2", + "VARIABLES_SET_TOOLTIP": "تعيين هذا المتغير لتكون مساوية للقيمة المدخلة.", + "VARIABLES_SET_CREATE_GET": "انشئ 'احصل على %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://ar.wikipedia.org/wiki/دالة_(برمجة)", + "PROCEDURES_DEFNORETURN_TITLE": "إلى", + "PROCEDURES_DEFNORETURN_PROCEDURE": "القيام بشيء ما", + "PROCEDURES_BEFORE_PARAMS": "مع:", + "PROCEDURES_CALL_BEFORE_PARAMS": "مع:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "انشئ دالة بدون مخرجات .", + "PROCEDURES_DEFNORETURN_COMMENT": "صف هذه الوظيفة...", + "PROCEDURES_DEFRETURN_HELPURL": "https://tr.wikipedia.org/wiki/دالة_(برمجة)", + "PROCEDURES_DEFRETURN_RETURN": "يرجع", + "PROCEDURES_DEFRETURN_TOOLTIP": "انشئ دالة مع المخرجات.", + "PROCEDURES_ALLOW_STATEMENTS": "اسمح بالبيانات", + "PROCEDURES_DEF_DUPLICATE_WARNING": "تحذير: هذه الدالة تحتوي على معلمات مكررة.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://ar.wikipedia.org/wiki/دالة_(برمجة)", + "PROCEDURES_CALLNORETURN_TOOLTIP": "تشغيل الدالة المعرفة من قبل المستخدم '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://ar.wikipedia.org/wiki/دالة_(برمجة)", + "PROCEDURES_CALLRETURN_TOOLTIP": "تشغيل الدالة المعرفة من قبل المستخدم %1 واستخدام مخرجاتها.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "المدخلات", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "إضافة أو إزالة أو إعادة ترتيب المدخلات لهذه المهمة.", + "PROCEDURES_MUTATORARG_TITLE": "اسم الإدخال:", + "PROCEDURES_MUTATORARG_TOOLTIP": "أضف مدخلا إلى الوظيفة.", + "PROCEDURES_HIGHLIGHT_DEF": "تسليط الضوء على تعريف الدالة", + "PROCEDURES_CREATE_DO": "إنشئ '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "إذا كانت القيمة صحيحة ، اذان قم بارجاع القيمة الثانية.", + "PROCEDURES_IFRETURN_WARNING": "تحذير:هذه القطعة تستخدم فقط داخل تعريف دالة.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "قل شيئا...", + "WORKSPACE_ARIA_LABEL": "مساحة عمل بلوكلي", + "COLLAPSED_WARNINGS_WARNING": "الكتل المطوية تحتوي على تحذيرات.", + "DIALOG_OK": "موافق", + "DIALOG_CANCEL": "إلغاء" +} diff --git a/msg/json/ast.json b/msg/json/ast.json index 066274b1211..ca16c495af5 100644 --- a/msg/json/ast.json +++ b/msg/json/ast.json @@ -1,9 +1,9 @@ -{ - "@metadata": { - "authors": [ - "Fitoschido" - ] - }, - "DIALOG_OK": "Aceutar", - "DIALOG_CANCEL": "Encaboxar" -} +{ + "@metadata": { + "authors": [ + "Fitoschido" + ] + }, + "DIALOG_OK": "Aceutar", + "DIALOG_CANCEL": "Encaboxar" +} diff --git a/msg/json/az.json b/msg/json/az.json index 32097cc3b79..91ae3d6e402 100644 --- a/msg/json/az.json +++ b/msg/json/az.json @@ -1,349 +1,349 @@ -{ - "@metadata": { - "authors": [ - "AZISS", - "Adil", - "Cekli829", - "Masalli qasimli", - "Şeyx Şamil" - ] - }, - "VARIABLES_DEFAULT_NAME": "element", - "UNNAMED_KEY": "adsız", - "TODAY": "Bugün", - "DUPLICATE_BLOCK": "Dublikat", - "ADD_COMMENT": "Şərh əlavə et", - "REMOVE_COMMENT": "Şərhi sil", - "DUPLICATE_COMMENT": "Şərhin nüsxəsini yarat", - "EXTERNAL_INPUTS": "Xarici girişlər", - "INLINE_INPUTS": "Sətiriçi girişlər", - "DELETE_BLOCK": "Bloku sil", - "DELETE_X_BLOCKS": "%1 bloku sil", - "DELETE_ALL_BLOCKS": "Bütün %1 blok silinsin?", - "CLEAN_UP": "Blokları təmizlə", - "COLLAPSE_BLOCK": "Bloku yığ", - "COLLAPSE_ALL": "Blokları yığ", - "EXPAND_BLOCK": "Bloku aç", - "EXPAND_ALL": "Blokları aç", - "DISABLE_BLOCK": "Bloku söndür", - "ENABLE_BLOCK": "Bloku aktivləşdir", - "HELP": "Kömək", - "UNDO": "Geri", - "REDO": "İrəli", - "CHANGE_VALUE_TITLE": "Qiyməti dəyiş:", - "RENAME_VARIABLE": "Dəyişənin adını dəyiş...", - "RENAME_VARIABLE_TITLE": "Bütün '%1' dəyişənlərinin adını buna dəyiş:", - "NEW_VARIABLE": "Yeni dəyişən...", - "NEW_STRING_VARIABLE": "Yeni sətir dəyişəni...", - "NEW_NUMBER_VARIABLE": "Yeni rəqəm dəyişəni...", - "NEW_COLOUR_VARIABLE": "Yeni rəng dəyişəni...", - "NEW_VARIABLE_TYPE_TITLE": "Yeni dəyişənin tipi:", - "NEW_VARIABLE_TITLE": "Yeni dəyişənin adı:", - "VARIABLE_ALREADY_EXISTS": "'%1' adlı dəyişən artıq mövcuddur.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' adlı dəyişən artıq '%2': tipində istifadə edilir .", - "DELETE_VARIABLE_CONFIRMATION": "'%2' dəyişəninin %1 istifadəsini silək?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%1' dəyişənini silmək mümkün deyil, çünki o '%2' funksiyasının təyin hissəsidir", - "DELETE_VARIABLE": "'%1' adlı dəyişəni sil", - "COLOUR_PICKER_HELPURL": "https://az.wikipedia.org/wiki/Rəng", - "COLOUR_PICKER_TOOLTIP": "Palitradan bir rəng seçin.", - "COLOUR_RANDOM_TITLE": "təsadüfi rəng", - "COLOUR_RANDOM_TOOLTIP": "Təsadüfi bir rəng seçin.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "rənglə", - "COLOUR_RGB_RED": "qırmızı", - "COLOUR_RGB_GREEN": "yaşıl", - "COLOUR_RGB_BLUE": "mavi", - "COLOUR_RGB_TOOLTIP": "Qırmızı, yaşıl və mavinin göstərilən miqdarı ilə bir rəng düzəlt. Bütün qiymətlər 0 ilə 100 arasında olmalıdır.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "qarışdır", - "COLOUR_BLEND_COLOUR1": "rəng 1", - "COLOUR_BLEND_COLOUR2": "rəng 2", - "COLOUR_BLEND_RATIO": "nisbət", - "COLOUR_BLEND_TOOLTIP": "İki rəngi verilmiş nisbətdə (0,0 - 1,0) qarışdırır.", - "CONTROLS_REPEAT_HELPURL": "https://az.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 dəfə təkrar et", - "CONTROLS_REPEAT_INPUT_DO": "icra et", - "CONTROLS_REPEAT_TOOLTIP": "Bəzi əmrləri bir neçə dəfə yerinə yetir.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "təkrar et, hələ ki", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "təkrar et, ta ki", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Hələ ki, qiymət \"doğru\"dur, bəzi əmrləri yerinə yetir.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Hələ ki, qiymət \"yalan\"dır, bəzi əmrləri yerinə yetir.", - "CONTROLS_FOR_TOOLTIP": "\"%1\" dəyişəni başlanğıc ədəddən son ədədə qədər göstərilən aralıqla qiymətlər aldıqca göstərilən blokları yerinə yetir.", - "CONTROLS_FOR_TITLE": "say: %1 %2 ilə başlayıb, %3 qiymətinə kimi %4 qədər dəyiş", - "CONTROLS_FOREACH_TITLE": "hər element üçün %1 siyahıda %2", - "CONTROLS_FOREACH_TOOLTIP": "Siyahıdakı hər element üçün \"%1\" dəyişənini elementə mənimsət və bundan sonra bəzi əmrləri yerinə yetir.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "dövrdən çıx", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "dövrün növbəti addımından davam et", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Cari dövrdən çıx.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Bu dövrün qalanını ötür və növbəti addımla davam et.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Xəbərdarlıq: Bu blok ancaq dövr daxilində istifadə oluna bilər.", - "CONTROLS_IF_TOOLTIP_1": "Əgər qiymət doğrudursa, onda bəzi əmrləri yerinə yetir.", - "CONTROLS_IF_TOOLTIP_2": "Əgər qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda isə ikinci əmrlər blokunu yerinə yetir.", - "CONTROLS_IF_TOOLTIP_3": "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir.", - "CONTROLS_IF_TOOLTIP_4": "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir. Əgər qiymətlərdən heç biri doğru deyilsə, onda axırıncı əmrlər blokunu yerinə yetir.", - "CONTROLS_IF_MSG_IF": "əgər", - "CONTROLS_IF_MSG_ELSEIF": "əks halda əgər", - "CONTROLS_IF_MSG_ELSE": "əks halda", - "CONTROLS_IF_IF_TOOLTIP": "Bu \"əgər\" blokunu dəyişdirmək üçün bölümlərin yenisini əlavə et, sil və ya yerini dəyiş.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "\"Əgər\" blokuna bir şərt əlavə et.", - "CONTROLS_IF_ELSE_TOOLTIP": "\"Əgər\" blokuna qalan bütün halları əhatə edəb son bir şərt əlavə et.", - "LOGIC_COMPARE_HELPURL": "https://az.wikipedia.org/wiki/bərabərsizlik_(riyazi)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Girişlər bir birinə bərabərdirsə \"doğru\" cavabını qaytarır.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Girişlər bərabər deyillərsə \"doğru\" cavabını qaytarır.", - "LOGIC_COMPARE_TOOLTIP_LT": "Birinci giriş ikincidən kiçikdirsə \"doğru\" cavabını qaytarır.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Birinci giriş ikincidən kiçik və ya bərarbərdirsə \"doğru\" cavabını qaytarır.", - "LOGIC_COMPARE_TOOLTIP_GT": "Birinci giriş ikincidən böyükdürsə \"doğru\" cavabını qaytarır.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Birinci giriş ikincidən böyük və ya bərarbərdirsə \"doğru\" cavabını qaytarır.", - "LOGIC_OPERATION_TOOLTIP_AND": "Hər iki giriş \"doğru\"-dursa \"doğru\" cavabını qaytarır.", - "LOGIC_OPERATION_AND": "və", - "LOGIC_OPERATION_TOOLTIP_OR": "Girişlərdən heç olmasa biri \"doğru\"-dursa \"doğru\" cavabını qaytarır.", - "LOGIC_OPERATION_OR": "və ya", - "LOGIC_NEGATE_TITLE": "%1 deyil", - "LOGIC_NEGATE_TOOLTIP": "Giriş \"yalan\"-dursa \"doğru\" cavabını qaytarır. Giriş \"doğru\"-dursa \"səhf\" cavabını qaytarır.", - "LOGIC_BOOLEAN_TRUE": "doğru", - "LOGIC_BOOLEAN_FALSE": "səhf", - "LOGIC_BOOLEAN_TOOLTIP": "\"doğru\" və ya \"səhf\" cavanını qaytarır.", - "LOGIC_NULL": "boş", - "LOGIC_NULL_TOOLTIP": "Boş cavab qaytarır.", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "əgər doğrudursa", - "LOGIC_TERNARY_IF_FALSE": "əgər səhvdirsə", - "LOGIC_TERNARY_TOOLTIP": "'Yoxla' əmrindəki şərtə nəzər yetirin. Əgər şərt \"doğru\"-dursa \"əgər doğru\", əks halda isə \"əgər yalan\" cavabını qaytarır.", - "MATH_NUMBER_HELPURL": "https://az.wikipedia.org/wiki/Ədəd", - "MATH_NUMBER_TOOLTIP": "Ədəd.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tg", - "MATH_TRIG_ASIN": "arcsin", - "MATH_TRIG_ACOS": "arccos", - "MATH_TRIG_ATAN": "arctan", - "MATH_ARITHMETIC_HELPURL": "https://az.wikipedia.org/wiki/Hesab", - "MATH_ARITHMETIC_TOOLTIP_ADD": "İki ədədin cəmini qaytarır.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "İki ədədin fərqini qaytarır.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "İki ədədin hasilini verir.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "İki ədədin nisbətini qaytarır.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Birinci ədədin ikinci ədəd dərəcəsindən qüvvətini qaytarır.", - "MATH_SINGLE_HELPURL": "https://az.wikipedia.org/wiki/Kvadrat_kökləri", - "MATH_SINGLE_OP_ROOT": "kvadrat kök", - "MATH_SINGLE_TOOLTIP_ROOT": "Ədədin kvadrat kökünü qaytarır.", - "MATH_SINGLE_OP_ABSOLUTE": "modul", - "MATH_SINGLE_TOOLTIP_ABS": "Ədədin modulunu qaytarır.", - "MATH_SINGLE_TOOLTIP_NEG": "Ədədin əksini qaytarır.", - "MATH_SINGLE_TOOLTIP_LN": "Ədədin natural loqarifmini tapır.", - "MATH_SINGLE_TOOLTIP_LOG10": "Ədədin 10-cu dərəcədən loqarifmini tapır.", - "MATH_SINGLE_TOOLTIP_EXP": "e sabitinin verilmiş ədədə qüvvətini qaytarır.", - "MATH_SINGLE_TOOLTIP_POW10": "10-un verilmiş ədədə qüvvətini qaytarır.", - "MATH_TRIG_HELPURL": "https://az.wikipedia.org/wiki/Triqonometrik_funksiyalar", - "MATH_TRIG_TOOLTIP_SIN": "Dərəcənin sinusunu qaytar (radianın yox).", - "MATH_TRIG_TOOLTIP_COS": "Dərəcənin kosinusunu qaytarır (radianın yox).", - "MATH_TRIG_TOOLTIP_TAN": "Dərəcənin tangensini qaytar (radianın yox).", - "MATH_TRIG_TOOLTIP_ASIN": "Ədədin arcsinusunu qaytarır.", - "MATH_TRIG_TOOLTIP_ACOS": "Ədədin arccosinusunu qaytarır.", - "MATH_TRIG_TOOLTIP_ATAN": "Ədədin arctanqensini qaytarır.", - "MATH_CONSTANT_HELPURL": "https://az.wikipedia.org/wiki/Riyazi_sabitlər", - "MATH_CONSTANT_TOOLTIP": "Ümumi sabitlərdən birini qaytarır π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), və ya ∞ (sonsuzluq).", - "MATH_IS_EVEN": "cütdür", - "MATH_IS_ODD": "təkdir", - "MATH_IS_PRIME": "sadədir", - "MATH_IS_WHOLE": "tamdır", - "MATH_IS_POSITIVE": "müsbətdir", - "MATH_IS_NEGATIVE": "mənfidir", - "MATH_IS_DIVISIBLE_BY": "bölünür", - "MATH_IS_TOOLTIP": "Bir ədədin cüt, tək, sadə, tam, müsbət, mənfi olmasını və ya müəyyən bir ədədə bölünməsini yoxlayır. \"Doğru\" və ya \"yalan\" qiymətini qaytarır.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "dəyiş: %1 buna: %2", - "MATH_CHANGE_TOOLTIP": "'%1' dəyişəninin üzərinə bir ədəd artır.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Ədədi aşağı və ya yuxari yuvarlaqşdır.", - "MATH_ROUND_OPERATOR_ROUND": "yuvarlaqlaşdır", - "MATH_ROUND_OPERATOR_ROUNDUP": "yuxarı yuvarlaqlaşdır", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "aşağı yuvarlaqlaşdır", - "MATH_ONLIST_OPERATOR_SUM": "Siyahının cəmi", - "MATH_ONLIST_TOOLTIP_SUM": "Siyahıdakı bütün ədədlərin cəmini qaytarır.", - "MATH_ONLIST_OPERATOR_MIN": "siyahının minimumu", - "MATH_ONLIST_TOOLTIP_MIN": "Siyahıdaki ən kiçik ədədi qaytarır.", - "MATH_ONLIST_OPERATOR_MAX": "siyahının maksimumu", - "MATH_ONLIST_TOOLTIP_MAX": "Siyahıdaki ən böyük elementi qaytarır.", - "MATH_ONLIST_OPERATOR_AVERAGE": "siyahının ədədi ortası", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Siyahıdaki ədədlərin ədədi ortasını qaytarır.", - "MATH_ONLIST_OPERATOR_MEDIAN": "siyahının medianı", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Siyahının median elementini qaytarır.", - "MATH_ONLIST_OPERATOR_MODE": "Siyahı modları( Ən çox rastlaşılan elementləri)", - "MATH_ONLIST_TOOLTIP_MODE": "Siyahıdaki ən çox rastlanan element(lər)dən ibarət siyahı qaytarır.", - "MATH_ONLIST_OPERATOR_STD_DEV": "Siyahının standart deviasiyası", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Siyahının standart deviasiyasını qaytarır.", - "MATH_ONLIST_OPERATOR_RANDOM": "siyahıdan təsadüfi seçilmiş bir element", - "MATH_ONLIST_TOOLTIP_RANDOM": "Siyahıdan təsadüfi bir element qaytarır.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "%1 ÷ %2 bölməsinin qalığı", - "MATH_MODULO_TOOLTIP": "İki ədədin nisbətindən alınan qalığı qaytarır.", - "MATH_CONSTRAIN_TITLE": "%1 üçün ən aşağı %2, ən yuxarı %3 olmağı tələb et", - "MATH_CONSTRAIN_TOOLTIP": "Bir ədədin verilmiş iki ədəd arasında olmasını tələb edir (sərhədlər də daxil olmaqla).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "%1 ilə %2 arasından təsadüfi tam ədəd", - "MATH_RANDOM_INT_TOOLTIP": "Verilmiş iki ədəd arasından (ədədrlər də daxil olmaqla) təsadüfi bir tam ədəd qaytarır.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "təsadüfi kəsr", - "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (daxil olmaqla) və 1.0 (daxil olmamaqla) ədədlərinin arasından təsadüfi bir kəsr ədəd qaytarır.", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TOOLTIP": "(X,Y) nöqtələrinin -180 - 180 dərəcədə arktangensini hesabla.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Mətndəki hərf, söz və ya sətir.", - "TEXT_JOIN_TITLE_CREATEWITH": "Verilmişlərlə mətn yarat", - "TEXT_JOIN_TOOLTIP": "İxtiyari sayda elementlərinin birləşməsi ilə mətn parçası yarat.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "birləşdir", - "TEXT_CREATE_JOIN_TOOLTIP": "Bu mətn blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Mətnə bir element əlavə et.", - "TEXT_APPEND_TITLE": "bu mətnin sonuna: %1 bu mətni əlavə et: %2", - "TEXT_APPEND_TOOLTIP": "'%1' dəyişəninin sonuna nəsə əlavə et.", - "TEXT_LENGTH_TITLE": "%1 - ın uzunluğu", - "TEXT_LENGTH_TOOLTIP": "Verilmiş mətndəki hərflərin(sözlər arası boşluqlar sayılmaqla) sayını qaytarır.", - "TEXT_ISEMPTY_TITLE": "%1 boşdur", - "TEXT_ISEMPTY_TOOLTIP": "Verilmiş mətn boşdursa, doğru qiymətini qaytarır.", - "TEXT_INDEXOF_TOOLTIP": "Birinci mətnin ikinci mətndə ilk/son rastlaşma indeksini qaytarır. Əgər rastlaşma baş verməzsə, %1 qaytarır.", - "TEXT_INDEXOF_TITLE": "mətndə %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "Bu mətn ilə ilk rastlaşmanı tap:", - "TEXT_INDEXOF_OPERATOR_LAST": "Bu mətn ilə son rastlaşmanı tap:", - "TEXT_CHARAT_TITLE": "mətndə %1 %2", - "TEXT_CHARAT_FROM_START": "bu nömrəli hərfi götür", - "TEXT_CHARAT_FROM_END": "axırdan bu nömrəli hərfi götür", - "TEXT_CHARAT_FIRST": "birinci hərfi götür", - "TEXT_CHARAT_LAST": "axırıncı hərfi götür", - "TEXT_CHARAT_RANDOM": "təsadüfi hərf götür", - "TEXT_CHARAT_TOOLTIP": "Göstərilən mövqedəki hərfi qaytarır.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Mətnin təyin olunmuş hissəsini qaytarır.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "mətndə", - "TEXT_GET_SUBSTRING_START_FROM_START": "Mətnin surətini bu nömrəli hərfdən", - "TEXT_GET_SUBSTRING_START_FROM_END": "Mətnin surətini sondan bu nömrəli # hərfdən", - "TEXT_GET_SUBSTRING_START_FIRST": "Mətnin surətini ilk hərfdən", - "TEXT_GET_SUBSTRING_END_FROM_START": "bu nömrəli hərfə qədər", - "TEXT_GET_SUBSTRING_END_FROM_END": "axırdan bu nömrəli hərfə qədər", - "TEXT_GET_SUBSTRING_END_LAST": "son hərfə qədər", - "TEXT_CHANGECASE_TOOLTIP": "Mətndə hərflərin böyük-kiçikliyini dəyiş.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "BÖYÜK HƏRFLƏRLƏ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "kiçik hərflərlə", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Baş Hərflərlə", - "TEXT_TRIM_TOOLTIP": "Mətnin hər iki və ya yalnız bir tərəfdən olan boşluqları pozulmuş surətini qaytarın.", - "TEXT_TRIM_OPERATOR_BOTH": "boşluqları hər iki tərəfdən pozun", - "TEXT_TRIM_OPERATOR_LEFT": "boşluqlari yalnız sol tərəfdən pozun", - "TEXT_TRIM_OPERATOR_RIGHT": "boşluqları yalnız sağ tərəfdən pozun", - "TEXT_PRINT_TITLE": "%1 - i çap elə", - "TEXT_PRINT_TOOLTIP": "Təyin olunmuş mətn, ədəd və ya hər hansı bir başqa elementi çap elə.", - "TEXT_PROMPT_TYPE_TEXT": "İstifadəçiyə mətn daxil etməsi üçün sorğunu/tələbi ismarıc ilə göndərin", - "TEXT_PROMPT_TYPE_NUMBER": "İstifadəçiyə ədəd daxil etməsi üçün sorğunu/tələbi ismarıc kimi göndərin", - "TEXT_PROMPT_TOOLTIP_NUMBER": "İstifadəçiyə ədəd daxil etməsi üçün sorğu/tələb göndərin.", - "TEXT_PROMPT_TOOLTIP_TEXT": "İstifadəçiyə mətn daxil etməsi üçün sorğu/tələb göndərin.", - "TEXT_COUNT_MESSAGE0": "%2 içindən %1 sayını hesabla", - "TEXT_COUNT_TOOLTIP": "Hesablayaq, mətnin bu hissəsi başqa mətndə neçə dəfə rast gəlinir.", - "TEXT_REPLACE_MESSAGE0": "%3 -də %1 əvəz et %2", - "TEXT_REPLACE_TOOLTIP": "Bütün uyğunluqlu bəzi mətnlərin digər bəzi mətnlərə dəyişdirilməsi.", - "TEXT_REVERSE_MESSAGE0": "əksinə dəyiş %1", - "TEXT_REVERSE_TOOLTIP": "Mətndəki simvolların ardıcıllığını əksinə dəyiş.", - "LISTS_CREATE_EMPTY_TITLE": "boş siyahı düzəlt", - "LISTS_CREATE_EMPTY_TOOLTIP": "Heç bir verilən qeyd olunmamış, uzunluğu 0 olan bir siyahı verir", - "LISTS_CREATE_WITH_TOOLTIP": "İstənilən ölçülü siyahı yaradın.", - "LISTS_CREATE_WITH_INPUT_WITH": "bunlardan siyahı düzəlt", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "siyahı", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Bu siyahı blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Siyahıya element əlavə edin.", - "LISTS_REPEAT_TOOLTIP": "Təyin olunmuş elementin/qiymətin təyin olunmuş sayda təkrarlandığı siyahını yaradır.", - "LISTS_REPEAT_TITLE": "%1 elementinin %2 dəfə təkrarlandığı siyahı düzəlt", - "LISTS_LENGTH_TITLE": "%1 siyahısının uzunluğu", - "LISTS_LENGTH_TOOLTIP": "Siyahının uzunluğunu verir.", - "LISTS_ISEMPTY_TITLE": "%1 boşdur", - "LISTS_ISEMPTY_TOOLTIP": "Siyahı boşdursa \"doğru\" cavabını qaytarır.", - "LISTS_INLIST": "siyahıda", - "LISTS_INDEX_OF_FIRST": "Element ilə ilk rastlaşma indeksini müəyyən edin", - "LISTS_INDEX_OF_LAST": "Element ilə son rastlaşma indeksini müəyyən edin", - "LISTS_INDEX_OF_TOOLTIP": "Elementin siyahıda ilk/son rastlaşma indeksini qaytarır. Əgər siyahıda mətn tapılmadısa, %1 qaytarılır.", - "LISTS_GET_INDEX_GET": "götür", - "LISTS_GET_INDEX_GET_REMOVE": "götür və sil", - "LISTS_GET_INDEX_REMOVE": "yığışdır", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "axırdan # nömrəli", - "LISTS_GET_INDEX_FIRST": "birinci", - "LISTS_GET_INDEX_LAST": "axırıncı", - "LISTS_GET_INDEX_RANDOM": "təsadüfi", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ilk elementdir.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 son elementdir.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Siyahıdan təyin olunmuş indeksli elementi qaytarır.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Siyahının ilk elementini qaytarır.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Siyahının son elementini qaytarır.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Siyahıdan hər hansı təsadüfi elementi qaytarır.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Siyahıdan təyin olunmuş indeksli elementi silir və qaytarır.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Siyahıdan ilk elementi silir və qaytarır.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Siyahıdan son elementi silir və qaytarır.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Siyahıdan təsadufi elementi silir və qaytarır.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Siyahıdan təyin olunmuş indeksli elementi silir.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Siyahıdan ilk elementi silir.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Siyahıdan son elementi silir.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Siyahıdan təsadüfi bir elementi silir.", - "LISTS_SET_INDEX_SET": "təyin et", - "LISTS_SET_INDEX_INSERT": "daxil et", - "LISTS_SET_INDEX_INPUT_TO": "Kimi", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Siyahının göstərilən yerdəki elementini təyin edir.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Siyahıda birinci elementi təyin edir.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Siyahının sonuncu elementini təyin edir.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Siyahının təsadüfi seçilmiş bir elementini təyin edir.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Elementi siyahıda göstərilən yerə daxil edir.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Elementi siyahının əvvəlinə daxil edir.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Elementi siyahının sonuna artırır.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Elementi siyahıda təsadüfi seçilmiş bir yerə atır.", - "LISTS_GET_SUBLIST_START_FROM_START": "# - dən alt-siyahını alın", - "LISTS_GET_SUBLIST_START_FROM_END": "# sonuncudan alt-siyahını alın", - "LISTS_GET_SUBLIST_START_FIRST": "Birincidən alt-siyahını alın", - "LISTS_GET_SUBLIST_END_FROM_START": "# nömrəliyə", - "LISTS_GET_SUBLIST_END_FROM_END": "sondan # nömrəliyə", - "LISTS_GET_SUBLIST_END_LAST": "Sonuncuya", - "LISTS_GET_SUBLIST_TOOLTIP": "Siyahının təyin olunmuş hissəsinin surətini yaradın.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "%1 %2 %3 sortlaşdır", - "LISTS_SORT_TOOLTIP": "Siyahının nüsxəsini sortlaşdır.", - "LISTS_SORT_ORDER_ASCENDING": "artan üzrə", - "LISTS_SORT_ORDER_DESCENDING": "azalan üzrə", - "LISTS_SORT_TYPE_NUMERIC": "say üzrə", - "LISTS_SORT_TYPE_TEXT": "əlifba üzrə", - "LISTS_SORT_TYPE_IGNORECASE": "əlifba üzrə, registrı nəzərə almadan", - "LISTS_SPLIT_LIST_FROM_TEXT": "mətndən siyahı düzəlt", - "LISTS_SPLIT_TEXT_FROM_LIST": "siyahıdan mətn düzəlt", - "LISTS_SPLIT_WITH_DELIMITER": "ayırıcıyla", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Mətni ayırıcılara görə bölərək mətnlər siyahısı yaradır.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Mətnlər siyahısından ayırıcılarla birgə bir mətn yaradır.", - "LISTS_REVERSE_MESSAGE0": "əksinə dəyiş %1", - "LISTS_REVERSE_TOOLTIP": "Siyahının nüsxəsini əksinə dəyiş.", - "VARIABLES_GET_TOOLTIP": "Bu dəyişənin qiymətini qaytarır.", - "VARIABLES_GET_CREATE_SET": "'%1 - i təyin et' - i yarat", - "VARIABLES_SET": "%1 - i bu qiymət ilə təyin et: %2", - "VARIABLES_SET_TOOLTIP": "Bu dəyişəni daxil edilmiş qiymətə bərabər edir.", - "VARIABLES_SET_CREATE_GET": "'%1 - i götür' - ü yarat", - "PROCEDURES_DEFNORETURN_TITLE": "icra et:", - "PROCEDURES_DEFNORETURN_PROCEDURE": "hansısa əməliyyat", - "PROCEDURES_BEFORE_PARAMS": "ilə:", - "PROCEDURES_CALL_BEFORE_PARAMS": "ilə:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Nəticəsi olmayan funksiya yaradır.", - "PROCEDURES_DEFNORETURN_COMMENT": "Bu funksiyanı təsvir et", - "PROCEDURES_DEFRETURN_RETURN": "qaytar", - "PROCEDURES_DEFRETURN_TOOLTIP": "Nəticəsi olan funksiya yaradır.", - "PROCEDURES_ALLOW_STATEMENTS": "operatorlara icazə", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Xəbərdarlıq: Bu funksiyanın təkrar olunmuş parametrləri var.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Yaradılmış '%1' funksiyasını çalışdır.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Yaradılmış '%1' funksiyasını çalışdır və nəticəni istifadə et.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "girişlər", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Bu funksiyanın giriş parametrləri üçün əlavə et, sil, və ya yenilə.", - "PROCEDURES_MUTATORARG_TITLE": "Giriş adı:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Funksiyaya giriş parametrləri əlavə et.", - "PROCEDURES_HIGHLIGHT_DEF": "Funksiyanın təyinatını vurğula", - "PROCEDURES_CREATE_DO": "'%1' yarat", - "PROCEDURES_IFRETURN_TOOLTIP": "Əgər bir dəyər \"doğru\"-dursa onda ikinci dəyəri qaytar.", - "PROCEDURES_IFRETURN_WARNING": "Xəbərdarlıq: Bu blok ancaq bir funksiyanın təyinatı daxilində işlədilə bilər.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Buraya nə isə yaz...", - "DIALOG_OK": "TAMAM", - "DIALOG_CANCEL": "Ləğv et" -} +{ + "@metadata": { + "authors": [ + "AZISS", + "Adil", + "Cekli829", + "Masalli qasimli", + "Şeyx Şamil" + ] + }, + "VARIABLES_DEFAULT_NAME": "element", + "UNNAMED_KEY": "adsız", + "TODAY": "Bugün", + "DUPLICATE_BLOCK": "Dublikat", + "ADD_COMMENT": "Şərh əlavə et", + "REMOVE_COMMENT": "Şərhi sil", + "DUPLICATE_COMMENT": "Şərhin nüsxəsini yarat", + "EXTERNAL_INPUTS": "Xarici girişlər", + "INLINE_INPUTS": "Sətiriçi girişlər", + "DELETE_BLOCK": "Bloku sil", + "DELETE_X_BLOCKS": "%1 bloku sil", + "DELETE_ALL_BLOCKS": "Bütün %1 blok silinsin?", + "CLEAN_UP": "Blokları təmizlə", + "COLLAPSE_BLOCK": "Bloku yığ", + "COLLAPSE_ALL": "Blokları yığ", + "EXPAND_BLOCK": "Bloku aç", + "EXPAND_ALL": "Blokları aç", + "DISABLE_BLOCK": "Bloku söndür", + "ENABLE_BLOCK": "Bloku aktivləşdir", + "HELP": "Kömək", + "UNDO": "Geri", + "REDO": "İrəli", + "CHANGE_VALUE_TITLE": "Qiyməti dəyiş:", + "RENAME_VARIABLE": "Dəyişənin adını dəyiş...", + "RENAME_VARIABLE_TITLE": "Bütün '%1' dəyişənlərinin adını buna dəyiş:", + "NEW_VARIABLE": "Yeni dəyişən...", + "NEW_STRING_VARIABLE": "Yeni sətir dəyişəni...", + "NEW_NUMBER_VARIABLE": "Yeni rəqəm dəyişəni...", + "NEW_COLOUR_VARIABLE": "Yeni rəng dəyişəni...", + "NEW_VARIABLE_TYPE_TITLE": "Yeni dəyişənin tipi:", + "NEW_VARIABLE_TITLE": "Yeni dəyişənin adı:", + "VARIABLE_ALREADY_EXISTS": "'%1' adlı dəyişən artıq mövcuddur.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' adlı dəyişən artıq '%2': tipində istifadə edilir .", + "DELETE_VARIABLE_CONFIRMATION": "'%2' dəyişəninin %1 istifadəsini silək?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%1' dəyişənini silmək mümkün deyil, çünki o '%2' funksiyasının təyin hissəsidir", + "DELETE_VARIABLE": "'%1' adlı dəyişəni sil", + "COLOUR_PICKER_HELPURL": "https://az.wikipedia.org/wiki/Rəng", + "COLOUR_PICKER_TOOLTIP": "Palitradan bir rəng seçin.", + "COLOUR_RANDOM_TITLE": "təsadüfi rəng", + "COLOUR_RANDOM_TOOLTIP": "Təsadüfi bir rəng seçin.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "rənglə", + "COLOUR_RGB_RED": "qırmızı", + "COLOUR_RGB_GREEN": "yaşıl", + "COLOUR_RGB_BLUE": "mavi", + "COLOUR_RGB_TOOLTIP": "Qırmızı, yaşıl və mavinin göstərilən miqdarı ilə bir rəng düzəlt. Bütün qiymətlər 0 ilə 100 arasında olmalıdır.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "qarışdır", + "COLOUR_BLEND_COLOUR1": "rəng 1", + "COLOUR_BLEND_COLOUR2": "rəng 2", + "COLOUR_BLEND_RATIO": "nisbət", + "COLOUR_BLEND_TOOLTIP": "İki rəngi verilmiş nisbətdə (0,0 - 1,0) qarışdırır.", + "CONTROLS_REPEAT_HELPURL": "https://az.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 dəfə təkrar et", + "CONTROLS_REPEAT_INPUT_DO": "icra et", + "CONTROLS_REPEAT_TOOLTIP": "Bəzi əmrləri bir neçə dəfə yerinə yetir.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "təkrar et, hələ ki", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "təkrar et, ta ki", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Hələ ki, qiymət \"doğru\"dur, bəzi əmrləri yerinə yetir.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Hələ ki, qiymət \"yalan\"dır, bəzi əmrləri yerinə yetir.", + "CONTROLS_FOR_TOOLTIP": "\"%1\" dəyişəni başlanğıc ədəddən son ədədə qədər göstərilən aralıqla qiymətlər aldıqca göstərilən blokları yerinə yetir.", + "CONTROLS_FOR_TITLE": "say: %1 %2 ilə başlayıb, %3 qiymətinə kimi %4 qədər dəyiş", + "CONTROLS_FOREACH_TITLE": "hər element üçün %1 siyahıda %2", + "CONTROLS_FOREACH_TOOLTIP": "Siyahıdakı hər element üçün \"%1\" dəyişənini elementə mənimsət və bundan sonra bəzi əmrləri yerinə yetir.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "dövrdən çıx", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "dövrün növbəti addımından davam et", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Cari dövrdən çıx.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Bu dövrün qalanını ötür və növbəti addımla davam et.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Xəbərdarlıq: Bu blok ancaq dövr daxilində istifadə oluna bilər.", + "CONTROLS_IF_TOOLTIP_1": "Əgər qiymət doğrudursa, onda bəzi əmrləri yerinə yetir.", + "CONTROLS_IF_TOOLTIP_2": "Əgər qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda isə ikinci əmrlər blokunu yerinə yetir.", + "CONTROLS_IF_TOOLTIP_3": "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir.", + "CONTROLS_IF_TOOLTIP_4": "Əgər birinci qiymət doğrudursa, onda birinci əmrlər blokunu yerinə yetir. Əks halda əgər ikinci qiymət doğrudursa, onda ikinci əmrlər blokunu yerinə yetir. Əgər qiymətlərdən heç biri doğru deyilsə, onda axırıncı əmrlər blokunu yerinə yetir.", + "CONTROLS_IF_MSG_IF": "əgər", + "CONTROLS_IF_MSG_ELSEIF": "əks halda əgər", + "CONTROLS_IF_MSG_ELSE": "əks halda", + "CONTROLS_IF_IF_TOOLTIP": "Bu \"əgər\" blokunu dəyişdirmək üçün bölümlərin yenisini əlavə et, sil və ya yerini dəyiş.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "\"Əgər\" blokuna bir şərt əlavə et.", + "CONTROLS_IF_ELSE_TOOLTIP": "\"Əgər\" blokuna qalan bütün halları əhatə edəb son bir şərt əlavə et.", + "LOGIC_COMPARE_HELPURL": "https://az.wikipedia.org/wiki/bərabərsizlik_(riyazi)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Girişlər bir birinə bərabərdirsə \"doğru\" cavabını qaytarır.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Girişlər bərabər deyillərsə \"doğru\" cavabını qaytarır.", + "LOGIC_COMPARE_TOOLTIP_LT": "Birinci giriş ikincidən kiçikdirsə \"doğru\" cavabını qaytarır.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Birinci giriş ikincidən kiçik və ya bərarbərdirsə \"doğru\" cavabını qaytarır.", + "LOGIC_COMPARE_TOOLTIP_GT": "Birinci giriş ikincidən böyükdürsə \"doğru\" cavabını qaytarır.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Birinci giriş ikincidən böyük və ya bərarbərdirsə \"doğru\" cavabını qaytarır.", + "LOGIC_OPERATION_TOOLTIP_AND": "Hər iki giriş \"doğru\"-dursa \"doğru\" cavabını qaytarır.", + "LOGIC_OPERATION_AND": "və", + "LOGIC_OPERATION_TOOLTIP_OR": "Girişlərdən heç olmasa biri \"doğru\"-dursa \"doğru\" cavabını qaytarır.", + "LOGIC_OPERATION_OR": "və ya", + "LOGIC_NEGATE_TITLE": "%1 deyil", + "LOGIC_NEGATE_TOOLTIP": "Giriş \"yalan\"-dursa \"doğru\" cavabını qaytarır. Giriş \"doğru\"-dursa \"səhf\" cavabını qaytarır.", + "LOGIC_BOOLEAN_TRUE": "doğru", + "LOGIC_BOOLEAN_FALSE": "səhf", + "LOGIC_BOOLEAN_TOOLTIP": "\"doğru\" və ya \"səhf\" cavanını qaytarır.", + "LOGIC_NULL": "boş", + "LOGIC_NULL_TOOLTIP": "Boş cavab qaytarır.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "əgər doğrudursa", + "LOGIC_TERNARY_IF_FALSE": "əgər səhvdirsə", + "LOGIC_TERNARY_TOOLTIP": "'Yoxla' əmrindəki şərtə nəzər yetirin. Əgər şərt \"doğru\"-dursa \"əgər doğru\", əks halda isə \"əgər yalan\" cavabını qaytarır.", + "MATH_NUMBER_HELPURL": "https://az.wikipedia.org/wiki/Ədəd", + "MATH_NUMBER_TOOLTIP": "Ədəd.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tg", + "MATH_TRIG_ASIN": "arcsin", + "MATH_TRIG_ACOS": "arccos", + "MATH_TRIG_ATAN": "arctan", + "MATH_ARITHMETIC_HELPURL": "https://az.wikipedia.org/wiki/Hesab", + "MATH_ARITHMETIC_TOOLTIP_ADD": "İki ədədin cəmini qaytarır.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "İki ədədin fərqini qaytarır.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "İki ədədin hasilini verir.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "İki ədədin nisbətini qaytarır.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Birinci ədədin ikinci ədəd dərəcəsindən qüvvətini qaytarır.", + "MATH_SINGLE_HELPURL": "https://az.wikipedia.org/wiki/Kvadrat_kökləri", + "MATH_SINGLE_OP_ROOT": "kvadrat kök", + "MATH_SINGLE_TOOLTIP_ROOT": "Ədədin kvadrat kökünü qaytarır.", + "MATH_SINGLE_OP_ABSOLUTE": "modul", + "MATH_SINGLE_TOOLTIP_ABS": "Ədədin modulunu qaytarır.", + "MATH_SINGLE_TOOLTIP_NEG": "Ədədin əksini qaytarır.", + "MATH_SINGLE_TOOLTIP_LN": "Ədədin natural loqarifmini tapır.", + "MATH_SINGLE_TOOLTIP_LOG10": "Ədədin 10-cu dərəcədən loqarifmini tapır.", + "MATH_SINGLE_TOOLTIP_EXP": "e sabitinin verilmiş ədədə qüvvətini qaytarır.", + "MATH_SINGLE_TOOLTIP_POW10": "10-un verilmiş ədədə qüvvətini qaytarır.", + "MATH_TRIG_HELPURL": "https://az.wikipedia.org/wiki/Triqonometrik_funksiyalar", + "MATH_TRIG_TOOLTIP_SIN": "Dərəcənin sinusunu qaytar (radianın yox).", + "MATH_TRIG_TOOLTIP_COS": "Dərəcənin kosinusunu qaytarır (radianın yox).", + "MATH_TRIG_TOOLTIP_TAN": "Dərəcənin tangensini qaytar (radianın yox).", + "MATH_TRIG_TOOLTIP_ASIN": "Ədədin arcsinusunu qaytarır.", + "MATH_TRIG_TOOLTIP_ACOS": "Ədədin arccosinusunu qaytarır.", + "MATH_TRIG_TOOLTIP_ATAN": "Ədədin arctanqensini qaytarır.", + "MATH_CONSTANT_HELPURL": "https://az.wikipedia.org/wiki/Riyazi_sabitlər", + "MATH_CONSTANT_TOOLTIP": "Ümumi sabitlərdən birini qaytarır π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), və ya ∞ (sonsuzluq).", + "MATH_IS_EVEN": "cütdür", + "MATH_IS_ODD": "təkdir", + "MATH_IS_PRIME": "sadədir", + "MATH_IS_WHOLE": "tamdır", + "MATH_IS_POSITIVE": "müsbətdir", + "MATH_IS_NEGATIVE": "mənfidir", + "MATH_IS_DIVISIBLE_BY": "bölünür", + "MATH_IS_TOOLTIP": "Bir ədədin cüt, tək, sadə, tam, müsbət, mənfi olmasını və ya müəyyən bir ədədə bölünməsini yoxlayır. \"Doğru\" və ya \"yalan\" qiymətini qaytarır.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "dəyiş: %1 buna: %2", + "MATH_CHANGE_TOOLTIP": "'%1' dəyişəninin üzərinə bir ədəd artır.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Ədədi aşağı və ya yuxari yuvarlaqşdır.", + "MATH_ROUND_OPERATOR_ROUND": "yuvarlaqlaşdır", + "MATH_ROUND_OPERATOR_ROUNDUP": "yuxarı yuvarlaqlaşdır", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "aşağı yuvarlaqlaşdır", + "MATH_ONLIST_OPERATOR_SUM": "Siyahının cəmi", + "MATH_ONLIST_TOOLTIP_SUM": "Siyahıdakı bütün ədədlərin cəmini qaytarır.", + "MATH_ONLIST_OPERATOR_MIN": "siyahının minimumu", + "MATH_ONLIST_TOOLTIP_MIN": "Siyahıdaki ən kiçik ədədi qaytarır.", + "MATH_ONLIST_OPERATOR_MAX": "siyahının maksimumu", + "MATH_ONLIST_TOOLTIP_MAX": "Siyahıdaki ən böyük elementi qaytarır.", + "MATH_ONLIST_OPERATOR_AVERAGE": "siyahının ədədi ortası", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Siyahıdaki ədədlərin ədədi ortasını qaytarır.", + "MATH_ONLIST_OPERATOR_MEDIAN": "siyahının medianı", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Siyahının median elementini qaytarır.", + "MATH_ONLIST_OPERATOR_MODE": "Siyahı modları( Ən çox rastlaşılan elementləri)", + "MATH_ONLIST_TOOLTIP_MODE": "Siyahıdaki ən çox rastlanan element(lər)dən ibarət siyahı qaytarır.", + "MATH_ONLIST_OPERATOR_STD_DEV": "Siyahının standart deviasiyası", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Siyahının standart deviasiyasını qaytarır.", + "MATH_ONLIST_OPERATOR_RANDOM": "siyahıdan təsadüfi seçilmiş bir element", + "MATH_ONLIST_TOOLTIP_RANDOM": "Siyahıdan təsadüfi bir element qaytarır.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "%1 ÷ %2 bölməsinin qalığı", + "MATH_MODULO_TOOLTIP": "İki ədədin nisbətindən alınan qalığı qaytarır.", + "MATH_CONSTRAIN_TITLE": "%1 üçün ən aşağı %2, ən yuxarı %3 olmağı tələb et", + "MATH_CONSTRAIN_TOOLTIP": "Bir ədədin verilmiş iki ədəd arasında olmasını tələb edir (sərhədlər də daxil olmaqla).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "%1 ilə %2 arasından təsadüfi tam ədəd", + "MATH_RANDOM_INT_TOOLTIP": "Verilmiş iki ədəd arasından (ədədrlər də daxil olmaqla) təsadüfi bir tam ədəd qaytarır.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "təsadüfi kəsr", + "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (daxil olmaqla) və 1.0 (daxil olmamaqla) ədədlərinin arasından təsadüfi bir kəsr ədəd qaytarır.", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TOOLTIP": "(X,Y) nöqtələrinin -180 - 180 dərəcədə arktangensini hesabla.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Mətndəki hərf, söz və ya sətir.", + "TEXT_JOIN_TITLE_CREATEWITH": "Verilmişlərlə mətn yarat", + "TEXT_JOIN_TOOLTIP": "İxtiyari sayda elementlərinin birləşməsi ilə mətn parçası yarat.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "birləşdir", + "TEXT_CREATE_JOIN_TOOLTIP": "Bu mətn blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Mətnə bir element əlavə et.", + "TEXT_APPEND_TITLE": "bu mətnin sonuna: %1 bu mətni əlavə et: %2", + "TEXT_APPEND_TOOLTIP": "'%1' dəyişəninin sonuna nəsə əlavə et.", + "TEXT_LENGTH_TITLE": "%1 - ın uzunluğu", + "TEXT_LENGTH_TOOLTIP": "Verilmiş mətndəki hərflərin(sözlər arası boşluqlar sayılmaqla) sayını qaytarır.", + "TEXT_ISEMPTY_TITLE": "%1 boşdur", + "TEXT_ISEMPTY_TOOLTIP": "Verilmiş mətn boşdursa, doğru qiymətini qaytarır.", + "TEXT_INDEXOF_TOOLTIP": "Birinci mətnin ikinci mətndə ilk/son rastlaşma indeksini qaytarır. Əgər rastlaşma baş verməzsə, %1 qaytarır.", + "TEXT_INDEXOF_TITLE": "mətndə %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "Bu mətn ilə ilk rastlaşmanı tap:", + "TEXT_INDEXOF_OPERATOR_LAST": "Bu mətn ilə son rastlaşmanı tap:", + "TEXT_CHARAT_TITLE": "mətndə %1 %2", + "TEXT_CHARAT_FROM_START": "bu nömrəli hərfi götür", + "TEXT_CHARAT_FROM_END": "axırdan bu nömrəli hərfi götür", + "TEXT_CHARAT_FIRST": "birinci hərfi götür", + "TEXT_CHARAT_LAST": "axırıncı hərfi götür", + "TEXT_CHARAT_RANDOM": "təsadüfi hərf götür", + "TEXT_CHARAT_TOOLTIP": "Göstərilən mövqedəki hərfi qaytarır.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Mətnin təyin olunmuş hissəsini qaytarır.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "mətndə", + "TEXT_GET_SUBSTRING_START_FROM_START": "Mətnin surətini bu nömrəli hərfdən", + "TEXT_GET_SUBSTRING_START_FROM_END": "Mətnin surətini sondan bu nömrəli # hərfdən", + "TEXT_GET_SUBSTRING_START_FIRST": "Mətnin surətini ilk hərfdən", + "TEXT_GET_SUBSTRING_END_FROM_START": "bu nömrəli hərfə qədər", + "TEXT_GET_SUBSTRING_END_FROM_END": "axırdan bu nömrəli hərfə qədər", + "TEXT_GET_SUBSTRING_END_LAST": "son hərfə qədər", + "TEXT_CHANGECASE_TOOLTIP": "Mətndə hərflərin böyük-kiçikliyini dəyiş.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "BÖYÜK HƏRFLƏRLƏ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "kiçik hərflərlə", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Baş Hərflərlə", + "TEXT_TRIM_TOOLTIP": "Mətnin hər iki və ya yalnız bir tərəfdən olan boşluqları pozulmuş surətini qaytarın.", + "TEXT_TRIM_OPERATOR_BOTH": "boşluqları hər iki tərəfdən pozun", + "TEXT_TRIM_OPERATOR_LEFT": "boşluqlari yalnız sol tərəfdən pozun", + "TEXT_TRIM_OPERATOR_RIGHT": "boşluqları yalnız sağ tərəfdən pozun", + "TEXT_PRINT_TITLE": "%1 - i çap elə", + "TEXT_PRINT_TOOLTIP": "Təyin olunmuş mətn, ədəd və ya hər hansı bir başqa elementi çap elə.", + "TEXT_PROMPT_TYPE_TEXT": "İstifadəçiyə mətn daxil etməsi üçün sorğunu/tələbi ismarıc ilə göndərin", + "TEXT_PROMPT_TYPE_NUMBER": "İstifadəçiyə ədəd daxil etməsi üçün sorğunu/tələbi ismarıc kimi göndərin", + "TEXT_PROMPT_TOOLTIP_NUMBER": "İstifadəçiyə ədəd daxil etməsi üçün sorğu/tələb göndərin.", + "TEXT_PROMPT_TOOLTIP_TEXT": "İstifadəçiyə mətn daxil etməsi üçün sorğu/tələb göndərin.", + "TEXT_COUNT_MESSAGE0": "%2 içindən %1 sayını hesabla", + "TEXT_COUNT_TOOLTIP": "Hesablayaq, mətnin bu hissəsi başqa mətndə neçə dəfə rast gəlinir.", + "TEXT_REPLACE_MESSAGE0": "%3 -də %1 əvəz et %2", + "TEXT_REPLACE_TOOLTIP": "Bütün uyğunluqlu bəzi mətnlərin digər bəzi mətnlərə dəyişdirilməsi.", + "TEXT_REVERSE_MESSAGE0": "əksinə dəyiş %1", + "TEXT_REVERSE_TOOLTIP": "Mətndəki simvolların ardıcıllığını əksinə dəyiş.", + "LISTS_CREATE_EMPTY_TITLE": "boş siyahı düzəlt", + "LISTS_CREATE_EMPTY_TOOLTIP": "Heç bir verilən qeyd olunmamış, uzunluğu 0 olan bir siyahı verir", + "LISTS_CREATE_WITH_TOOLTIP": "İstənilən ölçülü siyahı yaradın.", + "LISTS_CREATE_WITH_INPUT_WITH": "bunlardan siyahı düzəlt", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "siyahı", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Bu siyahı blokunu yenidən konfigurasiya etmək üçün bölmələri əlavə edin, silin və ya yerlərini dəyişin.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Siyahıya element əlavə edin.", + "LISTS_REPEAT_TOOLTIP": "Təyin olunmuş elementin/qiymətin təyin olunmuş sayda təkrarlandığı siyahını yaradır.", + "LISTS_REPEAT_TITLE": "%1 elementinin %2 dəfə təkrarlandığı siyahı düzəlt", + "LISTS_LENGTH_TITLE": "%1 siyahısının uzunluğu", + "LISTS_LENGTH_TOOLTIP": "Siyahının uzunluğunu verir.", + "LISTS_ISEMPTY_TITLE": "%1 boşdur", + "LISTS_ISEMPTY_TOOLTIP": "Siyahı boşdursa \"doğru\" cavabını qaytarır.", + "LISTS_INLIST": "siyahıda", + "LISTS_INDEX_OF_FIRST": "Element ilə ilk rastlaşma indeksini müəyyən edin", + "LISTS_INDEX_OF_LAST": "Element ilə son rastlaşma indeksini müəyyən edin", + "LISTS_INDEX_OF_TOOLTIP": "Elementin siyahıda ilk/son rastlaşma indeksini qaytarır. Əgər siyahıda mətn tapılmadısa, %1 qaytarılır.", + "LISTS_GET_INDEX_GET": "götür", + "LISTS_GET_INDEX_GET_REMOVE": "götür və sil", + "LISTS_GET_INDEX_REMOVE": "yığışdır", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "axırdan # nömrəli", + "LISTS_GET_INDEX_FIRST": "birinci", + "LISTS_GET_INDEX_LAST": "axırıncı", + "LISTS_GET_INDEX_RANDOM": "təsadüfi", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ilk elementdir.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 son elementdir.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Siyahıdan təyin olunmuş indeksli elementi qaytarır.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Siyahının ilk elementini qaytarır.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Siyahının son elementini qaytarır.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Siyahıdan hər hansı təsadüfi elementi qaytarır.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Siyahıdan təyin olunmuş indeksli elementi silir və qaytarır.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Siyahıdan ilk elementi silir və qaytarır.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Siyahıdan son elementi silir və qaytarır.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Siyahıdan təsadufi elementi silir və qaytarır.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Siyahıdan təyin olunmuş indeksli elementi silir.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Siyahıdan ilk elementi silir.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Siyahıdan son elementi silir.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Siyahıdan təsadüfi bir elementi silir.", + "LISTS_SET_INDEX_SET": "təyin et", + "LISTS_SET_INDEX_INSERT": "daxil et", + "LISTS_SET_INDEX_INPUT_TO": "Kimi", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Siyahının göstərilən yerdəki elementini təyin edir.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Siyahıda birinci elementi təyin edir.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Siyahının sonuncu elementini təyin edir.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Siyahının təsadüfi seçilmiş bir elementini təyin edir.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Elementi siyahıda göstərilən yerə daxil edir.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Elementi siyahının əvvəlinə daxil edir.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Elementi siyahının sonuna artırır.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Elementi siyahıda təsadüfi seçilmiş bir yerə atır.", + "LISTS_GET_SUBLIST_START_FROM_START": "# - dən alt-siyahını alın", + "LISTS_GET_SUBLIST_START_FROM_END": "# sonuncudan alt-siyahını alın", + "LISTS_GET_SUBLIST_START_FIRST": "Birincidən alt-siyahını alın", + "LISTS_GET_SUBLIST_END_FROM_START": "# nömrəliyə", + "LISTS_GET_SUBLIST_END_FROM_END": "sondan # nömrəliyə", + "LISTS_GET_SUBLIST_END_LAST": "Sonuncuya", + "LISTS_GET_SUBLIST_TOOLTIP": "Siyahının təyin olunmuş hissəsinin surətini yaradın.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "%1 %2 %3 sortlaşdır", + "LISTS_SORT_TOOLTIP": "Siyahının nüsxəsini sortlaşdır.", + "LISTS_SORT_ORDER_ASCENDING": "artan üzrə", + "LISTS_SORT_ORDER_DESCENDING": "azalan üzrə", + "LISTS_SORT_TYPE_NUMERIC": "say üzrə", + "LISTS_SORT_TYPE_TEXT": "əlifba üzrə", + "LISTS_SORT_TYPE_IGNORECASE": "əlifba üzrə, registrı nəzərə almadan", + "LISTS_SPLIT_LIST_FROM_TEXT": "mətndən siyahı düzəlt", + "LISTS_SPLIT_TEXT_FROM_LIST": "siyahıdan mətn düzəlt", + "LISTS_SPLIT_WITH_DELIMITER": "ayırıcıyla", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Mətni ayırıcılara görə bölərək mətnlər siyahısı yaradır.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Mətnlər siyahısından ayırıcılarla birgə bir mətn yaradır.", + "LISTS_REVERSE_MESSAGE0": "əksinə dəyiş %1", + "LISTS_REVERSE_TOOLTIP": "Siyahının nüsxəsini əksinə dəyiş.", + "VARIABLES_GET_TOOLTIP": "Bu dəyişənin qiymətini qaytarır.", + "VARIABLES_GET_CREATE_SET": "'%1 - i təyin et' - i yarat", + "VARIABLES_SET": "%1 - i bu qiymət ilə təyin et: %2", + "VARIABLES_SET_TOOLTIP": "Bu dəyişəni daxil edilmiş qiymətə bərabər edir.", + "VARIABLES_SET_CREATE_GET": "'%1 - i götür' - ü yarat", + "PROCEDURES_DEFNORETURN_TITLE": "icra et:", + "PROCEDURES_DEFNORETURN_PROCEDURE": "hansısa əməliyyat", + "PROCEDURES_BEFORE_PARAMS": "ilə:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ilə:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Nəticəsi olmayan funksiya yaradır.", + "PROCEDURES_DEFNORETURN_COMMENT": "Bu funksiyanı təsvir et", + "PROCEDURES_DEFRETURN_RETURN": "qaytar", + "PROCEDURES_DEFRETURN_TOOLTIP": "Nəticəsi olan funksiya yaradır.", + "PROCEDURES_ALLOW_STATEMENTS": "operatorlara icazə", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Xəbərdarlıq: Bu funksiyanın təkrar olunmuş parametrləri var.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Yaradılmış '%1' funksiyasını çalışdır.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Yaradılmış '%1' funksiyasını çalışdır və nəticəni istifadə et.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "girişlər", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Bu funksiyanın giriş parametrləri üçün əlavə et, sil, və ya yenilə.", + "PROCEDURES_MUTATORARG_TITLE": "Giriş adı:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Funksiyaya giriş parametrləri əlavə et.", + "PROCEDURES_HIGHLIGHT_DEF": "Funksiyanın təyinatını vurğula", + "PROCEDURES_CREATE_DO": "'%1' yarat", + "PROCEDURES_IFRETURN_TOOLTIP": "Əgər bir dəyər \"doğru\"-dursa onda ikinci dəyəri qaytar.", + "PROCEDURES_IFRETURN_WARNING": "Xəbərdarlıq: Bu blok ancaq bir funksiyanın təyinatı daxilində işlədilə bilər.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Buraya nə isə yaz...", + "DIALOG_OK": "TAMAM", + "DIALOG_CANCEL": "Ləğv et" +} diff --git a/msg/json/ba.json b/msg/json/ba.json index 604cd3ea75b..070f4673082 100644 --- a/msg/json/ba.json +++ b/msg/json/ba.json @@ -1,210 +1,210 @@ -{ - "@metadata": { - "authors": [ - "Alfiya55", - "Азат Хәлилов", - "Айсар", - "Кутлубаева Кунсулу Закиевна", - "Ләйсән", - "Танзиля Кутлугильдина" - ] - }, - "VARIABLES_DEFAULT_NAME": "элемент", - "TODAY": "Бөгөн", - "DUPLICATE_BLOCK": "Күсереп алырға", - "ADD_COMMENT": "Фекер өҫтәргә", - "REMOVE_COMMENT": "Аңлатмаларҙы юйырға", - "EXTERNAL_INPUTS": "Тышҡы өҫтәлмә", - "INLINE_INPUTS": "Эске өҫтәлмә", - "DELETE_BLOCK": "Блокты юйҙырырға", - "DELETE_X_BLOCKS": " %1 блокты юйҙырырға", - "DELETE_ALL_BLOCKS": "Бөтә %1 блоктарҙы юйырғамы?", - "CLEAN_UP": "Блоктарҙы таҙартырға", - "COLLAPSE_BLOCK": "Блокты төрөргә", - "COLLAPSE_ALL": "Блоктарҙы төрөргә", - "EXPAND_BLOCK": "Блокты йәйергә", - "EXPAND_ALL": "Блоктарҙы йәйергә", - "DISABLE_BLOCK": "Блокты һүндерергә", - "ENABLE_BLOCK": "Блокты тоҡандырырға", - "HELP": "Ярҙам", - "UNDO": "Кире алырға", - "REDO": "документтарҙы үҙгәртергә", - "CHANGE_VALUE_TITLE": "Мәғәнәне үҙгәртегеҙ:", - "RENAME_VARIABLE": "Үҙгәреүсәндең исемен алмаштырырға...", - "RENAME_VARIABLE_TITLE": "Бөтә '%1' үҙгәреүсәндәрҙең исемен ошолай алмаштырырға:", - "NEW_VARIABLE": "Яңы үҙгәреүсән...", - "NEW_VARIABLE_TITLE": "Яңы үҙгәреүсәндең исеме:", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Төҫ", - "COLOUR_PICKER_TOOLTIP": "Палитранан төҫ һайлағыҙ.", - "COLOUR_RANDOM_TITLE": "осраҡлы төҫ", - "COLOUR_RANDOM_TOOLTIP": "Төҫтө осраҡлылыҡ буйынса һайлай.", - "COLOUR_RGB_TITLE": "ошонан төҫ", - "COLOUR_RGB_RED": "ҡыҙылдан", - "COLOUR_RGB_GREEN": "йәшелдән", - "COLOUR_RGB_BLUE": "зәңгәр", - "COLOUR_RGB_TOOLTIP": "Бирелгән нисбәттәрҙә ҡыҙылдан, йәшелдән һәм зәңгәрҙән төҫ барлыҡҡа килә. Бөтә мәғәнәләр 0 менән 100 араһында булырға тейеш.", - "COLOUR_BLEND_TITLE": "ҡатнаштырырға", - "COLOUR_BLEND_COLOUR1": "1-се төҫ", - "COLOUR_BLEND_COLOUR2": "2-се төҫ", - "COLOUR_BLEND_RATIO": "1-се төҫтөң өлөшө", - "COLOUR_BLEND_TOOLTIP": "Ике төҫтө бирелгән нисбәттә болғата (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/Цикл_(программалау)", - "CONTROLS_REPEAT_TITLE": " %1 тапҡыр ҡабатларға", - "CONTROLS_REPEAT_INPUT_DO": "үтәргә", - "CONTROLS_REPEAT_TOOLTIP": "Командаларҙы бер нисә тапҡыр үтәй.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ҡабатларға, әлегә", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ҡабатларға, әлегә юҡ", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Мәғәнә дөрөҫ булғанда, командаларҙы ҡабатлай.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Мәғәнә ялған булғанда, командаларҙы ҡабатлай.", - "CONTROLS_FOR_TOOLTIP": "Үҙгәреүсәнгә башынан аҙағына тиклем тәғәйен аҙым менән %1 мәғәнәне бирә һәм күрһәтелгән командаларҙы үтәй.", - "CONTROLS_FOREACH_TITLE": "һәр элемент өсөн %1 исемлектә %2", - "CONTROLS_FOREACH_TOOLTIP": "Исемлектәге һәр элемент өсөн үҙгәреүсәнгә элементтың '%1' мәғәнәһен бирә һәм күрһәтелгән командаларҙы үтәй.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "циклдан сығырға", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "циклдың киләһе аҙымына күсергә", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Был циклды өҙә.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Циклдың ҡалдығын төшөрөп ҡалдыра һәм киләһе аҙымға күсә.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Иҫкәртеү: был блок цикл эсендә генә ҡулланыла ала.", - "CONTROLS_IF_TOOLTIP_1": "Мәғәнә дөрөҫ булғанда, командаларҙы үтәй.", - "CONTROLS_IF_TOOLTIP_2": "Шарт дөрөҫ булғанда, командаларҙың беренсе блогын үтәй. Улай булмаһа, командаларҙың икенсе блогы үтәлә.", - "CONTROLS_IF_TOOLTIP_3": "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй.", - "CONTROLS_IF_TOOLTIP_4": "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Әгәр икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй. Бер шарт та дөрөҫ булмаһа, команда блоктарының һуңғыһын үтәй.", - "CONTROLS_IF_MSG_IF": "әгәр", - "CONTROLS_IF_MSG_ELSEIF": "юғиһә, әгәр", - "CONTROLS_IF_MSG_ELSE": "юғиһә", - "CONTROLS_IF_IF_TOOLTIP": "\"Әгәр\" блогын ҡабаттан төҙөү өсөн киҫәктәрҙе өҫтәгеҙ, юйҙырығыҙ, урындарын алмаштырығыҙ.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "\"Әгәр\" блогына шарт өҫтәй", - "CONTROLS_IF_ELSE_TOOLTIP": "Бер шарт та дөрөҫ булмаған осраҡҡа йомғаҡлау ярҙамсы блогын өҫтәргә.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(математика)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Өҫтәмәләр тигеҙ булһа, дөрөҫ мәғәнәһен кире ҡайтара.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Өҫтәмәләр тигеҙ булмаһа, дөрөҫ мәғәнәһен кире ҡайтара.", - "LOGIC_COMPARE_TOOLTIP_LT": "Беренсе өҫтәмә икенсеһенән бәләкәйерәк булһа, дөрөҫ мәғәнәһен кире ҡайтара.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара.", - "LOGIC_COMPARE_TOOLTIP_GT": "Беренсе өҫтәмә икенсеһенән ҙурыраҡ булһа, дөрөҫ мәғәнәһен кире ҡайтара.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара.", - "LOGIC_OPERATION_TOOLTIP_AND": "Әгәр ҙә ике өҫтәлмә лә тап килһә, дөрөҫ аңлатманы кире ҡайтара.", - "LOGIC_OPERATION_AND": "һәм", - "LOGIC_OPERATION_TOOLTIP_OR": "Өҫтәлмәләрҙең береһе генә дөрөҫ булһа, дөрөҫ аңлатманы ҡайтара.", - "LOGIC_OPERATION_OR": "йәки", - "LOGIC_NEGATE_TITLE": "%1 түгел", - "LOGIC_NEGATE_TOOLTIP": "Өҫтәлмә ялған булһа, дөрөҫ аңлатманы ҡайтара. Өҫтәлмә дөрөҫ булһа, ялған аңлатманы ҡайтара.", - "LOGIC_BOOLEAN_TRUE": "дөрөҫ", - "LOGIC_BOOLEAN_FALSE": "ялған", - "LOGIC_BOOLEAN_TOOLTIP": "Дөрөҫ йәки ялғанды ҡайтара.", - "LOGIC_NULL": "нуль", - "LOGIC_NULL_TOOLTIP": "Нулде ҡайтара.", - "LOGIC_TERNARY_CONDITION": "тест", - "LOGIC_TERNARY_IF_TRUE": "әгәр дөрөҫ булһа", - "LOGIC_TERNARY_IF_FALSE": "әгәр ялған булһа", - "LOGIC_TERNARY_TOOLTIP": "Һайлау шартын тикшерә. Әгәр ул дөрөҫ булһа, беренсе мәғәнәне, хата булһа, икенсе мәғәнәне ҡайтара.", - "MATH_NUMBER_HELPURL": "https://ba.wikipedia.org/wiki/Һан", - "MATH_NUMBER_TOOLTIP": "Рәт.", - "MATH_ARITHMETIC_HELPURL": "https://ba.wikipedia.org/wiki/Арифметика", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Ике һандың суммаһын ҡайтара.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ике һандың айырмаһын ҡайтара.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Ике һандың ҡабатландығын ҡайтара.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Ике һандың бүлендеген ҡайтара.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Дәрәжәгә күтәрелгән икенсе һандан тәүгеһенә ҡайтара.", - "MATH_SINGLE_HELPURL": "https://ba.wikipedia.org/wiki/Квадрат_тамыр", - "MATH_SINGLE_OP_ROOT": "квадрат тамыр", - "MATH_SINGLE_TOOLTIP_ROOT": "Һандың квадрат тамырын ҡайтара.", - "MATH_SINGLE_OP_ABSOLUTE": "абсолют", - "MATH_SINGLE_TOOLTIP_ABS": "Һандың модулен ҡайтара.", - "MATH_SINGLE_TOOLTIP_NEG": "Кире һанды ҡайтара.", - "MATH_SINGLE_TOOLTIP_LN": "Һандың натураль логаритмын ҡайтара.", - "MATH_SINGLE_TOOLTIP_LOG10": "Һандың унынсы логаритмын ҡайтара.", - "MATH_SINGLE_TOOLTIP_EXP": "Күрһәтелгән дәрәжәлә ҡайтара.", - "MATH_SINGLE_TOOLTIP_POW10": "Күрһәтелгән 10-сы дәрәжәлә ҡайтара.", - "MATH_TRIG_HELPURL": "https://ba..wikipedia.org/wiki/Тригонометрик_функциялар", - "MATH_TRIG_TOOLTIP_SIN": "Мөйөштөң синусын градустарҙа ҡайтара.", - "MATH_TRIG_TOOLTIP_COS": "Мөйөштөң косинусын градустарҙа ҡайтара.", - "MATH_TRIG_TOOLTIP_TAN": "Мөйөштөң тангенсын градустарҙа күрһәтә.", - "MATH_TRIG_TOOLTIP_ASIN": "Арксинусты градустарҙа күрһәтә.", - "MATH_TRIG_TOOLTIP_ACOS": "Арккосинусты градустарҙа күрһәтә.", - "MATH_TRIG_TOOLTIP_ATAN": "Арктангенсты градустарҙа күрһәтә.", - "MATH_CONSTANT_HELPURL": "https://ba.wikipedia.org/wiki/Математик_константа", - "MATH_CONSTANT_TOOLTIP": "Таралған константаның береһен күрһәтә: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) йәки ∞ (сикһеҙлек).", - "MATH_IS_EVEN": "тағы", - "MATH_IS_ODD": "сәйер", - "MATH_IS_PRIME": "ябай", - "MATH_IS_WHOLE": "бөтөн", - "MATH_IS_POSITIVE": "ыңғай", - "MATH_IS_NEGATIVE": "тиҫкәре", - "MATH_IS_DIVISIBLE_BY": "бүленә", - "MATH_IS_TOOLTIP": "Һандың йоп, таҡ, ябай, бөтөн, ыңғай, кире йәки билдәле һанға ҡарата ниндәй булыуын тикшерә. Дөрөҫ йә ялған мәғәнәһен күрһәтә.", - "MATH_CHANGE_HELPURL": "https://ba.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "%1 тан %2 ҡа арттырырға", - "MATH_CHANGE_TOOLTIP": "Үҙгәреүсән һанға өҫтәй '%1'.", - "MATH_ROUND_HELPURL": "https://ba.wikipedia.org/wiki/Т=Түңәрәкләү", - "MATH_ROUND_TOOLTIP": "Һанды ҙурына йә бәләкәйенә тиклем түңәрәкләргә.", - "MATH_ROUND_OPERATOR_ROUND": "түңәрәк", - "MATH_ROUND_OPERATOR_ROUNDUP": "ҙурына тиклем түңәрәкләргә", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "бәләкәйгә тиклем түңәрәкләргә", - "MATH_ONLIST_OPERATOR_SUM": "исемлек суммаһы", - "MATH_ONLIST_TOOLTIP_SUM": "Исемлектәрҙәге һандар суммаһын күрһәтә.", - "MATH_ONLIST_OPERATOR_MIN": "Исемлектәге иң бәләкәйе", - "MATH_ONLIST_TOOLTIP_MIN": "Исемлектәге иң бәләкәй һанды күрһәтә.", - "MATH_ONLIST_OPERATOR_MAX": "исемлектәге иң ҙуры", - "MATH_ONLIST_TOOLTIP_MAX": "Исемлектең иң ҙур һанын күрһәтә.", - "MATH_ONLIST_OPERATOR_AVERAGE": "исемлектең уртаса арифметик дәүмәле", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Исемлектең уртаса арифметик дәүмәле күрһәтә.", - "MATH_ONLIST_OPERATOR_MEDIAN": "исемлек медианаһы", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Исемлек медианаһын күрһәтә.", - "MATH_ONLIST_OPERATOR_MODE": "исемлек модалары", - "MATH_ONLIST_TOOLTIP_MODE": "Исемлектең иң күп осраған элементтарын күрһәтә.", - "MATH_ONLIST_OPERATOR_STD_DEV": "исемлекте стандарт кире ҡағыу", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Исемлекте стандарт кире ҡағыуҙы күрһәтә.", - "MATH_ONLIST_OPERATOR_RANDOM": "исемлектең осраҡлы элементы", - "MATH_ONLIST_TOOLTIP_RANDOM": "Исемлектең осраҡлы элементын күрһәтә.", - "MATH_MODULO_HELPURL": "https://ba.wikipedia.org/wiki/Ҡалдыҡ_менән_бүлеү", - "MATH_MODULO_TITLE": "ҡалдыҡ %1 : %2 араһында", - "MATH_MODULO_TOOLTIP": "Ике һанды бүлеү ҡалдығын күрһәтә.", - "MATH_CONSTRAIN_TITLE": "сикләргә %1 аҫтан %2 өҫтән %3", - "MATH_CONSTRAIN_TOOLTIP": "Һанды аҫтан һәм өҫтән сикләй (сиктәгеләрен индереп).", - "MATH_RANDOM_INT_HELPURL": "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы", - "MATH_RANDOM_INT_TITLE": "%1-ҙән %2-гә тиклем осраҡлы бөтөн һан", - "MATH_RANDOM_INT_TOOLTIP": "Ике бирелгән һан араһындағы (үҙҙәрен дә индереп) осраҡлы һанды күрһәтә.", - "MATH_RANDOM_FLOAT_HELPURL": "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "0 (үҙен дә индереп) һәм 1 араһындағы осраҡлы һан", - "TEXT_TEXT_TOOLTIP": "Текстың хәрефе, һүҙе йәки юлы.", - "TEXT_JOIN_TITLE_CREATEWITH": "текст төҙөргә", - "TEXT_JOIN_TOOLTIP": "Элементтарҙың теләһә күпме һанын берләштереп текст фрагментын булдыра.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "ҡушылығыҙ", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Текстҡа элемент өҫтәү.", - "TEXT_APPEND_TOOLTIP": "Үҙгәреүсән «%1»-гә текст өҫтәргә.", - "TEXT_LENGTH_TITLE": "оҙонлоғо %1", - "TEXT_LENGTH_TOOLTIP": "Бирелгән текстағы символдар һанын (буш урындар менән бергә) кире ҡайтара.", - "TEXT_ISEMPTY_TITLE": "%1 буш", - "TEXT_INDEXOF_TITLE": "текстҡа %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "текстың тәүге инеүен табырға", - "TEXT_INDEXOF_OPERATOR_LAST": "Текстың һуңғы инеүен табырға", - "TEXT_CHARAT_FROM_START": "хат алырға #", - "TEXT_CHARAT_FROM_END": "№ хәрефен аҙаҡтан алырға", - "TEXT_CHARAT_FIRST": "тәүге хәрефте алырға", - "TEXT_CHARAT_LAST": "һуңғы хәрефте алырға", - "TEXT_CHARAT_RANDOM": "осраҡлы хәрефте алырға", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "текста", - "TEXT_GET_SUBSTRING_END_FROM_START": "# хатҡа", - "TEXT_GET_SUBSTRING_END_LAST": "һуңғы хәрефкә тиклем", - "TEXT_PRINT_TITLE": "%1 баҫтырырға", - "LISTS_CREATE_WITH_INPUT_WITH": "менән исемлек төҙөргә", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "исемлек", - "LISTS_LENGTH_TITLE": "оҙонлоғо %1", - "LISTS_ISEMPTY_TITLE": "%1 буш", - "LISTS_INLIST": "исемлеккә", - "LISTS_GET_INDEX_GET": "алырға", - "LISTS_GET_INDEX_GET_REMOVE": "алырға һәм юйырға", - "LISTS_GET_INDEX_REMOVE": "юйырға", - "LISTS_GET_INDEX_FROM_END": "# аҙағынан", - "LISTS_GET_INDEX_FIRST": "беренсе", - "LISTS_GET_INDEX_LAST": "аҙаҡҡы", - "LISTS_GET_INDEX_RANDOM": "осраҡлы", - "LISTS_SET_INDEX_SET": "йыйылма", - "LISTS_SET_INDEX_INSERT": "өҫтәп ҡуйырға", - "LISTS_SET_INDEX_INPUT_TO": "кеүек", - "PROCEDURES_DEFRETURN_RETURN": "кире ҡайтарыу", - "PROCEDURES_MUTATORCONTAINER_TITLE": "инеү", - "PROCEDURES_MUTATORARG_TITLE": "инеү исеме:", - "PROCEDURES_CREATE_DO": "'%1' төҙөргә", - "DIALOG_OK": "Яҡшы", - "DIALOG_CANCEL": " Баш тартыу" -} +{ + "@metadata": { + "authors": [ + "Alfiya55", + "Азат Хәлилов", + "Айсар", + "Кутлубаева Кунсулу Закиевна", + "Ләйсән", + "Танзиля Кутлугильдина" + ] + }, + "VARIABLES_DEFAULT_NAME": "элемент", + "TODAY": "Бөгөн", + "DUPLICATE_BLOCK": "Күсереп алырға", + "ADD_COMMENT": "Фекер өҫтәргә", + "REMOVE_COMMENT": "Аңлатмаларҙы юйырға", + "EXTERNAL_INPUTS": "Тышҡы өҫтәлмә", + "INLINE_INPUTS": "Эске өҫтәлмә", + "DELETE_BLOCK": "Блокты юйҙырырға", + "DELETE_X_BLOCKS": " %1 блокты юйҙырырға", + "DELETE_ALL_BLOCKS": "Бөтә %1 блоктарҙы юйырғамы?", + "CLEAN_UP": "Блоктарҙы таҙартырға", + "COLLAPSE_BLOCK": "Блокты төрөргә", + "COLLAPSE_ALL": "Блоктарҙы төрөргә", + "EXPAND_BLOCK": "Блокты йәйергә", + "EXPAND_ALL": "Блоктарҙы йәйергә", + "DISABLE_BLOCK": "Блокты һүндерергә", + "ENABLE_BLOCK": "Блокты тоҡандырырға", + "HELP": "Ярҙам", + "UNDO": "Кире алырға", + "REDO": "документтарҙы үҙгәртергә", + "CHANGE_VALUE_TITLE": "Мәғәнәне үҙгәртегеҙ:", + "RENAME_VARIABLE": "Үҙгәреүсәндең исемен алмаштырырға...", + "RENAME_VARIABLE_TITLE": "Бөтә '%1' үҙгәреүсәндәрҙең исемен ошолай алмаштырырға:", + "NEW_VARIABLE": "Яңы үҙгәреүсән...", + "NEW_VARIABLE_TITLE": "Яңы үҙгәреүсәндең исеме:", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Төҫ", + "COLOUR_PICKER_TOOLTIP": "Палитранан төҫ һайлағыҙ.", + "COLOUR_RANDOM_TITLE": "осраҡлы төҫ", + "COLOUR_RANDOM_TOOLTIP": "Төҫтө осраҡлылыҡ буйынса һайлай.", + "COLOUR_RGB_TITLE": "ошонан төҫ", + "COLOUR_RGB_RED": "ҡыҙылдан", + "COLOUR_RGB_GREEN": "йәшелдән", + "COLOUR_RGB_BLUE": "зәңгәр", + "COLOUR_RGB_TOOLTIP": "Бирелгән нисбәттәрҙә ҡыҙылдан, йәшелдән һәм зәңгәрҙән төҫ барлыҡҡа килә. Бөтә мәғәнәләр 0 менән 100 араһында булырға тейеш.", + "COLOUR_BLEND_TITLE": "ҡатнаштырырға", + "COLOUR_BLEND_COLOUR1": "1-се төҫ", + "COLOUR_BLEND_COLOUR2": "2-се төҫ", + "COLOUR_BLEND_RATIO": "1-се төҫтөң өлөшө", + "COLOUR_BLEND_TOOLTIP": "Ике төҫтө бирелгән нисбәттә болғата (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/Цикл_(программалау)", + "CONTROLS_REPEAT_TITLE": " %1 тапҡыр ҡабатларға", + "CONTROLS_REPEAT_INPUT_DO": "үтәргә", + "CONTROLS_REPEAT_TOOLTIP": "Командаларҙы бер нисә тапҡыр үтәй.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ҡабатларға, әлегә", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ҡабатларға, әлегә юҡ", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Мәғәнә дөрөҫ булғанда, командаларҙы ҡабатлай.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Мәғәнә ялған булғанда, командаларҙы ҡабатлай.", + "CONTROLS_FOR_TOOLTIP": "Үҙгәреүсәнгә башынан аҙағына тиклем тәғәйен аҙым менән %1 мәғәнәне бирә һәм күрһәтелгән командаларҙы үтәй.", + "CONTROLS_FOREACH_TITLE": "һәр элемент өсөн %1 исемлектә %2", + "CONTROLS_FOREACH_TOOLTIP": "Исемлектәге һәр элемент өсөн үҙгәреүсәнгә элементтың '%1' мәғәнәһен бирә һәм күрһәтелгән командаларҙы үтәй.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "циклдан сығырға", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "циклдың киләһе аҙымына күсергә", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Был циклды өҙә.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Циклдың ҡалдығын төшөрөп ҡалдыра һәм киләһе аҙымға күсә.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Иҫкәртеү: был блок цикл эсендә генә ҡулланыла ала.", + "CONTROLS_IF_TOOLTIP_1": "Мәғәнә дөрөҫ булғанда, командаларҙы үтәй.", + "CONTROLS_IF_TOOLTIP_2": "Шарт дөрөҫ булғанда, командаларҙың беренсе блогын үтәй. Улай булмаһа, командаларҙың икенсе блогы үтәлә.", + "CONTROLS_IF_TOOLTIP_3": "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй.", + "CONTROLS_IF_TOOLTIP_4": "Беренсе шарт дөрөҫ булһа, командаларҙың беренсе блогын үтәй. Әгәр икенсе шарт дөрөҫ булһа, командаларҙың икенсе блогын үтәй. Бер шарт та дөрөҫ булмаһа, команда блоктарының һуңғыһын үтәй.", + "CONTROLS_IF_MSG_IF": "әгәр", + "CONTROLS_IF_MSG_ELSEIF": "юғиһә, әгәр", + "CONTROLS_IF_MSG_ELSE": "юғиһә", + "CONTROLS_IF_IF_TOOLTIP": "\"Әгәр\" блогын ҡабаттан төҙөү өсөн киҫәктәрҙе өҫтәгеҙ, юйҙырығыҙ, урындарын алмаштырығыҙ.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "\"Әгәр\" блогына шарт өҫтәй", + "CONTROLS_IF_ELSE_TOOLTIP": "Бер шарт та дөрөҫ булмаған осраҡҡа йомғаҡлау ярҙамсы блогын өҫтәргә.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(математика)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Өҫтәмәләр тигеҙ булһа, дөрөҫ мәғәнәһен кире ҡайтара.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Өҫтәмәләр тигеҙ булмаһа, дөрөҫ мәғәнәһен кире ҡайтара.", + "LOGIC_COMPARE_TOOLTIP_LT": "Беренсе өҫтәмә икенсеһенән бәләкәйерәк булһа, дөрөҫ мәғәнәһен кире ҡайтара.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара.", + "LOGIC_COMPARE_TOOLTIP_GT": "Беренсе өҫтәмә икенсеһенән ҙурыраҡ булһа, дөрөҫ мәғәнәһен кире ҡайтара.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Беренсе өҫтәмә икенсеһенән бәләкәйерәк йә уға тиң булһа, дөрөҫ мәғәнәһен кире ҡайтара.", + "LOGIC_OPERATION_TOOLTIP_AND": "Әгәр ҙә ике өҫтәлмә лә тап килһә, дөрөҫ аңлатманы кире ҡайтара.", + "LOGIC_OPERATION_AND": "һәм", + "LOGIC_OPERATION_TOOLTIP_OR": "Өҫтәлмәләрҙең береһе генә дөрөҫ булһа, дөрөҫ аңлатманы ҡайтара.", + "LOGIC_OPERATION_OR": "йәки", + "LOGIC_NEGATE_TITLE": "%1 түгел", + "LOGIC_NEGATE_TOOLTIP": "Өҫтәлмә ялған булһа, дөрөҫ аңлатманы ҡайтара. Өҫтәлмә дөрөҫ булһа, ялған аңлатманы ҡайтара.", + "LOGIC_BOOLEAN_TRUE": "дөрөҫ", + "LOGIC_BOOLEAN_FALSE": "ялған", + "LOGIC_BOOLEAN_TOOLTIP": "Дөрөҫ йәки ялғанды ҡайтара.", + "LOGIC_NULL": "нуль", + "LOGIC_NULL_TOOLTIP": "Нулде ҡайтара.", + "LOGIC_TERNARY_CONDITION": "тест", + "LOGIC_TERNARY_IF_TRUE": "әгәр дөрөҫ булһа", + "LOGIC_TERNARY_IF_FALSE": "әгәр ялған булһа", + "LOGIC_TERNARY_TOOLTIP": "Һайлау шартын тикшерә. Әгәр ул дөрөҫ булһа, беренсе мәғәнәне, хата булһа, икенсе мәғәнәне ҡайтара.", + "MATH_NUMBER_HELPURL": "https://ba.wikipedia.org/wiki/Һан", + "MATH_NUMBER_TOOLTIP": "Рәт.", + "MATH_ARITHMETIC_HELPURL": "https://ba.wikipedia.org/wiki/Арифметика", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Ике һандың суммаһын ҡайтара.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ике һандың айырмаһын ҡайтара.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Ике һандың ҡабатландығын ҡайтара.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Ике һандың бүлендеген ҡайтара.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Дәрәжәгә күтәрелгән икенсе һандан тәүгеһенә ҡайтара.", + "MATH_SINGLE_HELPURL": "https://ba.wikipedia.org/wiki/Квадрат_тамыр", + "MATH_SINGLE_OP_ROOT": "квадрат тамыр", + "MATH_SINGLE_TOOLTIP_ROOT": "Һандың квадрат тамырын ҡайтара.", + "MATH_SINGLE_OP_ABSOLUTE": "абсолют", + "MATH_SINGLE_TOOLTIP_ABS": "Һандың модулен ҡайтара.", + "MATH_SINGLE_TOOLTIP_NEG": "Кире һанды ҡайтара.", + "MATH_SINGLE_TOOLTIP_LN": "Һандың натураль логаритмын ҡайтара.", + "MATH_SINGLE_TOOLTIP_LOG10": "Һандың унынсы логаритмын ҡайтара.", + "MATH_SINGLE_TOOLTIP_EXP": "Күрһәтелгән дәрәжәлә ҡайтара.", + "MATH_SINGLE_TOOLTIP_POW10": "Күрһәтелгән 10-сы дәрәжәлә ҡайтара.", + "MATH_TRIG_HELPURL": "https://ba..wikipedia.org/wiki/Тригонометрик_функциялар", + "MATH_TRIG_TOOLTIP_SIN": "Мөйөштөң синусын градустарҙа ҡайтара.", + "MATH_TRIG_TOOLTIP_COS": "Мөйөштөң косинусын градустарҙа ҡайтара.", + "MATH_TRIG_TOOLTIP_TAN": "Мөйөштөң тангенсын градустарҙа күрһәтә.", + "MATH_TRIG_TOOLTIP_ASIN": "Арксинусты градустарҙа күрһәтә.", + "MATH_TRIG_TOOLTIP_ACOS": "Арккосинусты градустарҙа күрһәтә.", + "MATH_TRIG_TOOLTIP_ATAN": "Арктангенсты градустарҙа күрһәтә.", + "MATH_CONSTANT_HELPURL": "https://ba.wikipedia.org/wiki/Математик_константа", + "MATH_CONSTANT_TOOLTIP": "Таралған константаның береһен күрһәтә: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) йәки ∞ (сикһеҙлек).", + "MATH_IS_EVEN": "тағы", + "MATH_IS_ODD": "сәйер", + "MATH_IS_PRIME": "ябай", + "MATH_IS_WHOLE": "бөтөн", + "MATH_IS_POSITIVE": "ыңғай", + "MATH_IS_NEGATIVE": "тиҫкәре", + "MATH_IS_DIVISIBLE_BY": "бүленә", + "MATH_IS_TOOLTIP": "Һандың йоп, таҡ, ябай, бөтөн, ыңғай, кире йәки билдәле һанға ҡарата ниндәй булыуын тикшерә. Дөрөҫ йә ялған мәғәнәһен күрһәтә.", + "MATH_CHANGE_HELPURL": "https://ba.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "%1 тан %2 ҡа арттырырға", + "MATH_CHANGE_TOOLTIP": "Үҙгәреүсән һанға өҫтәй '%1'.", + "MATH_ROUND_HELPURL": "https://ba.wikipedia.org/wiki/Т=Түңәрәкләү", + "MATH_ROUND_TOOLTIP": "Һанды ҙурына йә бәләкәйенә тиклем түңәрәкләргә.", + "MATH_ROUND_OPERATOR_ROUND": "түңәрәк", + "MATH_ROUND_OPERATOR_ROUNDUP": "ҙурына тиклем түңәрәкләргә", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "бәләкәйгә тиклем түңәрәкләргә", + "MATH_ONLIST_OPERATOR_SUM": "исемлек суммаһы", + "MATH_ONLIST_TOOLTIP_SUM": "Исемлектәрҙәге һандар суммаһын күрһәтә.", + "MATH_ONLIST_OPERATOR_MIN": "Исемлектәге иң бәләкәйе", + "MATH_ONLIST_TOOLTIP_MIN": "Исемлектәге иң бәләкәй һанды күрһәтә.", + "MATH_ONLIST_OPERATOR_MAX": "исемлектәге иң ҙуры", + "MATH_ONLIST_TOOLTIP_MAX": "Исемлектең иң ҙур һанын күрһәтә.", + "MATH_ONLIST_OPERATOR_AVERAGE": "исемлектең уртаса арифметик дәүмәле", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Исемлектең уртаса арифметик дәүмәле күрһәтә.", + "MATH_ONLIST_OPERATOR_MEDIAN": "исемлек медианаһы", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Исемлек медианаһын күрһәтә.", + "MATH_ONLIST_OPERATOR_MODE": "исемлек модалары", + "MATH_ONLIST_TOOLTIP_MODE": "Исемлектең иң күп осраған элементтарын күрһәтә.", + "MATH_ONLIST_OPERATOR_STD_DEV": "исемлекте стандарт кире ҡағыу", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Исемлекте стандарт кире ҡағыуҙы күрһәтә.", + "MATH_ONLIST_OPERATOR_RANDOM": "исемлектең осраҡлы элементы", + "MATH_ONLIST_TOOLTIP_RANDOM": "Исемлектең осраҡлы элементын күрһәтә.", + "MATH_MODULO_HELPURL": "https://ba.wikipedia.org/wiki/Ҡалдыҡ_менән_бүлеү", + "MATH_MODULO_TITLE": "ҡалдыҡ %1 : %2 араһында", + "MATH_MODULO_TOOLTIP": "Ике һанды бүлеү ҡалдығын күрһәтә.", + "MATH_CONSTRAIN_TITLE": "сикләргә %1 аҫтан %2 өҫтән %3", + "MATH_CONSTRAIN_TOOLTIP": "Һанды аҫтан һәм өҫтән сикләй (сиктәгеләрен индереп).", + "MATH_RANDOM_INT_HELPURL": "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы", + "MATH_RANDOM_INT_TITLE": "%1-ҙән %2-гә тиклем осраҡлы бөтөн һан", + "MATH_RANDOM_INT_TOOLTIP": "Ике бирелгән һан араһындағы (үҙҙәрен дә индереп) осраҡлы һанды күрһәтә.", + "MATH_RANDOM_FLOAT_HELPURL": "https://ba.wikipedia.org/wiki/Ялған осраҡлы_һандар_генераторы", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "0 (үҙен дә индереп) һәм 1 араһындағы осраҡлы һан", + "TEXT_TEXT_TOOLTIP": "Текстың хәрефе, һүҙе йәки юлы.", + "TEXT_JOIN_TITLE_CREATEWITH": "текст төҙөргә", + "TEXT_JOIN_TOOLTIP": "Элементтарҙың теләһә күпме һанын берләштереп текст фрагментын булдыра.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "ҡушылығыҙ", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Текстҡа элемент өҫтәү.", + "TEXT_APPEND_TOOLTIP": "Үҙгәреүсән «%1»-гә текст өҫтәргә.", + "TEXT_LENGTH_TITLE": "оҙонлоғо %1", + "TEXT_LENGTH_TOOLTIP": "Бирелгән текстағы символдар һанын (буш урындар менән бергә) кире ҡайтара.", + "TEXT_ISEMPTY_TITLE": "%1 буш", + "TEXT_INDEXOF_TITLE": "текстҡа %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "текстың тәүге инеүен табырға", + "TEXT_INDEXOF_OPERATOR_LAST": "Текстың һуңғы инеүен табырға", + "TEXT_CHARAT_FROM_START": "хат алырға #", + "TEXT_CHARAT_FROM_END": "№ хәрефен аҙаҡтан алырға", + "TEXT_CHARAT_FIRST": "тәүге хәрефте алырға", + "TEXT_CHARAT_LAST": "һуңғы хәрефте алырға", + "TEXT_CHARAT_RANDOM": "осраҡлы хәрефте алырға", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "текста", + "TEXT_GET_SUBSTRING_END_FROM_START": "# хатҡа", + "TEXT_GET_SUBSTRING_END_LAST": "һуңғы хәрефкә тиклем", + "TEXT_PRINT_TITLE": "%1 баҫтырырға", + "LISTS_CREATE_WITH_INPUT_WITH": "менән исемлек төҙөргә", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "исемлек", + "LISTS_LENGTH_TITLE": "оҙонлоғо %1", + "LISTS_ISEMPTY_TITLE": "%1 буш", + "LISTS_INLIST": "исемлеккә", + "LISTS_GET_INDEX_GET": "алырға", + "LISTS_GET_INDEX_GET_REMOVE": "алырға һәм юйырға", + "LISTS_GET_INDEX_REMOVE": "юйырға", + "LISTS_GET_INDEX_FROM_END": "# аҙағынан", + "LISTS_GET_INDEX_FIRST": "беренсе", + "LISTS_GET_INDEX_LAST": "аҙаҡҡы", + "LISTS_GET_INDEX_RANDOM": "осраҡлы", + "LISTS_SET_INDEX_SET": "йыйылма", + "LISTS_SET_INDEX_INSERT": "өҫтәп ҡуйырға", + "LISTS_SET_INDEX_INPUT_TO": "кеүек", + "PROCEDURES_DEFRETURN_RETURN": "кире ҡайтарыу", + "PROCEDURES_MUTATORCONTAINER_TITLE": "инеү", + "PROCEDURES_MUTATORARG_TITLE": "инеү исеме:", + "PROCEDURES_CREATE_DO": "'%1' төҙөргә", + "DIALOG_OK": "Яҡшы", + "DIALOG_CANCEL": " Баш тартыу" +} diff --git a/msg/json/bcc.json b/msg/json/bcc.json index c8794faba77..5b82385b6fa 100644 --- a/msg/json/bcc.json +++ b/msg/json/bcc.json @@ -1,288 +1,288 @@ -{ - "@metadata": { - "authors": [ - "Baloch Afghanistan", - "Sultanselim baloch" - ] - }, - "VARIABLES_DEFAULT_NAME": "مورد", - "DUPLICATE_BLOCK": "تکراری", - "ADD_COMMENT": "افزودن نظر", - "REMOVE_COMMENT": "حذف نظر", - "EXTERNAL_INPUTS": "ورودی‌های خارجی", - "INLINE_INPUTS": "ورودی‌های درون خطی", - "DELETE_BLOCK": "حذف بلوک", - "DELETE_X_BLOCKS": "حذف بلوک‌های %1", - "COLLAPSE_BLOCK": "فروپاشی بلوک", - "COLLAPSE_ALL": "فروپاشی بلوک‌ها", - "EXPAND_BLOCK": "گسترش بلوک", - "EXPAND_ALL": "گسترش بلوک‌ها", - "DISABLE_BLOCK": "غیرفعال‌سازی بلوک", - "ENABLE_BLOCK": "فعال‌سازی بلوک", - "HELP": "کومک", - "CHANGE_VALUE_TITLE": "تغییر مقدار:", - "RENAME_VARIABLE": "تغییر نام متغیر...", - "RENAME_VARIABLE_TITLE": "تغییر نام همهٔ متغیرهای «%1» به:", - "NEW_VARIABLE": "متغیر تازه...", - "NEW_VARIABLE_TITLE": "نام متغیر تازه:", - "COLOUR_PICKER_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF", - "COLOUR_PICKER_TOOLTIP": "انتخاب یک رنگ از تخته‌رنگ.", - "COLOUR_RANDOM_TITLE": "رنگ تصادفی", - "COLOUR_RANDOM_TOOLTIP": "انتخاب یک رنگ به شکل تصادفی.", - "COLOUR_RGB_TITLE": "رنگ با", - "COLOUR_RGB_RED": "قرمز", - "COLOUR_RGB_GREEN": "سبز", - "COLOUR_RGB_BLUE": "آبی", - "COLOUR_RGB_TOOLTIP": "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند.", - "COLOUR_BLEND_TITLE": "مخلوط", - "COLOUR_BLEND_COLOUR1": "رنگ ۱", - "COLOUR_BLEND_COLOUR2": "رنگ ۲", - "COLOUR_BLEND_RATIO": "نسبت", - "COLOUR_BLEND_TOOLTIP": "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)", - "CONTROLS_REPEAT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AD%D9%84%D9%82%D9%87_%D9%81%D9%88%D8%B1", - "CONTROLS_REPEAT_TITLE": "%1 بار تکرار", - "CONTROLS_REPEAT_INPUT_DO": "انجام", - "CONTROLS_REPEAT_TOOLTIP": "انجام چند عبارت چندین بار.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تکرار در حالی که", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تکرار تا", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده.", - "CONTROLS_FOR_TOOLTIP": "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد.", - "CONTROLS_FOR_TITLE": "با تعداد %1 از %2 به %3 با گام‌های %4", - "CONTROLS_FOREACH_TITLE": "برای هر مورد %1 در فهرست %2", - "CONTROLS_FOREACH_TOOLTIP": "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "شکستن حلقه", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ادامه با تکرار بعدی حلقه", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "شکستن حلقهٔ شامل.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود.", - "CONTROLS_IF_TOOLTIP_1": "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده.", - "CONTROLS_IF_TOOLTIP_2": "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده.", - "CONTROLS_IF_TOOLTIP_3": "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده.", - "CONTROLS_IF_TOOLTIP_4": "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده.", - "CONTROLS_IF_MSG_IF": "اگر", - "CONTROLS_IF_MSG_ELSEIF": "اگر آنگاه", - "CONTROLS_IF_MSG_ELSE": "آنگاه", - "CONTROLS_IF_IF_TOOLTIP": "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "افزودن یک شرط به بلوک اگر.", - "CONTROLS_IF_ELSE_TOOLTIP": "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر.", - "LOGIC_COMPARE_HELPURL": "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C", - "LOGIC_COMPARE_TOOLTIP_EQ": "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند.", - "LOGIC_COMPARE_TOOLTIP_LT": "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد.", - "LOGIC_COMPARE_TOOLTIP_LTE": "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد.", - "LOGIC_COMPARE_TOOLTIP_GT": "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد.", - "LOGIC_COMPARE_TOOLTIP_GTE": "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد.", - "LOGIC_OPERATION_TOOLTIP_AND": "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد.", - "LOGIC_OPERATION_AND": "و", - "LOGIC_OPERATION_TOOLTIP_OR": "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد.", - "LOGIC_OPERATION_OR": "یا", - "LOGIC_NEGATE_TITLE": "نه %1", - "LOGIC_NEGATE_TOOLTIP": "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد.", - "LOGIC_BOOLEAN_TRUE": "صحیح", - "LOGIC_BOOLEAN_FALSE": "ناصحیح", - "LOGIC_BOOLEAN_TOOLTIP": "بازگرداندن یکی از صحیح یا ناصحیح.", - "LOGIC_NULL": "تهی", - "LOGIC_NULL_TOOLTIP": "تهی بازمی‌گرداند.", - "LOGIC_TERNARY_CONDITION": "آزمایش", - "LOGIC_TERNARY_IF_TRUE": "اگر صحیح", - "LOGIC_TERNARY_IF_FALSE": "اگر ناصحیح", - "LOGIC_TERNARY_TOOLTIP": "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را.", - "MATH_NUMBER_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF", - "MATH_NUMBER_TOOLTIP": "یک عدد.", - "MATH_ARITHMETIC_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8", - "MATH_ARITHMETIC_TOOLTIP_ADD": "بازگرداندن مقدار جمع دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "بازگرداندن تفاوت دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "بازگرداندن حاصلضرب دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "بازگرداندن باقی‌ماندهٔ دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد.", - "MATH_SINGLE_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85", - "MATH_SINGLE_OP_ROOT": "ریشهٔ دوم", - "MATH_SINGLE_TOOLTIP_ROOT": "ریشهٔ دوم یک عدد را باز می‌گرداند.", - "MATH_SINGLE_OP_ABSOLUTE": "مطلق", - "MATH_SINGLE_TOOLTIP_ABS": "قدر مطلق یک عدد را بازمی‌گرداند.", - "MATH_SINGLE_TOOLTIP_NEG": "منفی‌شدهٔ یک عدد را باز می‌گرداند.", - "MATH_SINGLE_TOOLTIP_LN": "لوگاریتم طبیعی یک عدد را باز می‌گرداند.", - "MATH_SINGLE_TOOLTIP_LOG10": "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد.", - "MATH_SINGLE_TOOLTIP_EXP": "بازگرداندن توان e یک عدد.", - "MATH_SINGLE_TOOLTIP_POW10": "بازگرداندن توان ۱۰ یک عدد.", - "MATH_TRIG_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C", - "MATH_TRIG_TOOLTIP_SIN": "بازگرداندن سینوس درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_COS": "بازگرداندن کسینوس درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_TAN": "بازگرداندن تانژانت یک درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_ASIN": "بازگرداندن آرک‌سینوس درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_ACOS": "بازگرداندن آرک‌کسینوس درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_ATAN": "بازگرداندن آرک‌تانژانت درجه (نه رادیان).", - "MATH_CONSTANT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C", - "MATH_CONSTANT_TOOLTIP": "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت).", - "MATH_IS_EVEN": "زوج است", - "MATH_IS_ODD": "فرد است", - "MATH_IS_PRIME": "عدد اول است", - "MATH_IS_WHOLE": "کامل است", - "MATH_IS_POSITIVE": "مثبت است", - "MATH_IS_NEGATIVE": "منفی است", - "MATH_IS_DIVISIBLE_BY": "تقسیم شده بر", - "MATH_IS_TOOLTIP": "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند.", - "MATH_CHANGE_HELPURL": "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87", - "MATH_CHANGE_TITLE": "تغییر %1 با %2", - "MATH_CHANGE_TOOLTIP": "افزودن یک عدد به متغیر '%1'.", - "MATH_ROUND_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", - "MATH_ROUND_TOOLTIP": "گردکردن یک عدد به بالا یا پایین.", - "MATH_ROUND_OPERATOR_ROUND": "گردکردن", - "MATH_ROUND_OPERATOR_ROUNDUP": "گرد به بالا", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "گرد به پایین", - "MATH_ONLIST_OPERATOR_SUM": "جمع فهرست", - "MATH_ONLIST_TOOLTIP_SUM": "جمع همهٔ عددهای فهرست را باز می‌گرداند.", - "MATH_ONLIST_OPERATOR_MIN": "کوچکترین فهرست", - "MATH_ONLIST_TOOLTIP_MIN": "کوچک‌ترین عدد در فهرست را باز می‌گرداند.", - "MATH_ONLIST_OPERATOR_MAX": "بزرگ‌ترین فهرست", - "MATH_ONLIST_TOOLTIP_MAX": "بزرگ‌ترین عدد در فهرست را باز می‌گرداند.", - "MATH_ONLIST_OPERATOR_AVERAGE": "میانگین فهرست", - "MATH_ONLIST_TOOLTIP_AVERAGE": "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_MEDIAN": "میانهٔ فهرست", - "MATH_ONLIST_TOOLTIP_MEDIAN": "میانهٔ عدد در فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_MODE": "مد فهرست", - "MATH_ONLIST_TOOLTIP_MODE": "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_STD_DEV": "انحراف معیار فهرست", - "MATH_ONLIST_TOOLTIP_STD_DEV": "انحراف معیار فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_RANDOM": "مورد تصادفی از فهرست", - "MATH_ONLIST_TOOLTIP_RANDOM": "موردی تصادفی از فهرست را بر می‌گرداند.", - "MATH_MODULO_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87", - "MATH_MODULO_TITLE": "باقی‌ماندهٔ %1 + %2", - "MATH_MODULO_TOOLTIP": "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند.", - "MATH_CONSTRAIN_TITLE": "محدودکردن %1 پایین %2 بالا %3", - "MATH_CONSTRAIN_TOOLTIP": "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته).", - "MATH_RANDOM_INT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C", - "MATH_RANDOM_INT_TITLE": "عدد صحیح تصادفی بین %1 تا %2", - "MATH_RANDOM_INT_TOOLTIP": "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند.", - "MATH_RANDOM_FLOAT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "کسر تصادفی", - "MATH_RANDOM_FLOAT_TOOLTIP": "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز).", - "TEXT_TEXT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", - "TEXT_TEXT_TOOLTIP": "یک حرف، کلمه یا خطی از متن.", - "TEXT_JOIN_TITLE_CREATEWITH": "ایجاد متن با", - "TEXT_JOIN_TOOLTIP": "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "عضویت", - "TEXT_CREATE_JOIN_TOOLTIP": "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "افزودن یک مورد به متن.", - "TEXT_APPEND_TITLE": "به %1 الحاق متن %2", - "TEXT_APPEND_TOOLTIP": "الحاق متنی به متغیر «%1».", - "TEXT_LENGTH_TITLE": "طول %1", - "TEXT_LENGTH_TOOLTIP": "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده.", - "TEXT_ISEMPTY_TITLE": "%1 خالی است", - "TEXT_ISEMPTY_TOOLTIP": "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است.", - "TEXT_INDEXOF_TOOLTIP": "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند.", - "TEXT_INDEXOF_TITLE": "در متن %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "اولی نبشتانکء بیتگݔنا درگݔج", - "TEXT_INDEXOF_OPERATOR_LAST": "آھری نبشتانکء بیتگݔنا درگݔج", - "TEXT_CHARAT_FROM_START": "گرفتن حرف #", - "TEXT_CHARAT_FROM_END": "گرفتن حرف # از آخر", - "TEXT_CHARAT_FIRST": "گرفتن اولین حرف", - "TEXT_CHARAT_LAST": "گرفتن آخرین حرف", - "TEXT_CHARAT_RANDOM": "گرفتن حرف تصادفی", - "TEXT_CHARAT_TOOLTIP": "حرفی در موقعیت مشخص‌شده بر می‌گرداند.", - "TEXT_GET_SUBSTRING_TOOLTIP": "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "مہ نبشتہ‌ئا", - "TEXT_GET_SUBSTRING_START_FROM_START": "گرفتن زیرمتن از حرف #", - "TEXT_GET_SUBSTRING_START_FROM_END": "گرفتن زیرمتن از حرف # به انتها", - "TEXT_GET_SUBSTRING_START_FIRST": "گرفتن زیرمتن از اولین حرف", - "TEXT_GET_SUBSTRING_END_FROM_START": "به حرف #", - "TEXT_GET_SUBSTRING_END_FROM_END": "به حرف # از انتها", - "TEXT_GET_SUBSTRING_END_LAST": "گرفتن آخرین حرف", - "TEXT_CHANGECASE_TOOLTIP": "بازگرداندن کپی متن در حالتی متفاوت.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "به حروف بزرگ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "به حروف کوچک", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "به حروف بزرگ عنوان", - "TEXT_TRIM_TOOLTIP": "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند.", - "TEXT_TRIM_OPERATOR_BOTH": "تراشیدن فاصله‌ها از هر دو طرف", - "TEXT_TRIM_OPERATOR_LEFT": "تراشیدن فاصله‌ها از طرف چپ", - "TEXT_TRIM_OPERATOR_RIGHT": "تراشیدن فاصله‌ها از طرف چپ", - "TEXT_PRINT_TITLE": "چاپ %1", - "TEXT_PRINT_TOOLTIP": "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده.", - "TEXT_PROMPT_TYPE_TEXT": "اعلان برای متن با پیام", - "TEXT_PROMPT_TYPE_NUMBER": "اعلان برای عدد با پیام", - "TEXT_PROMPT_TOOLTIP_NUMBER": "اعلان برای کاربر با یک عدد.", - "TEXT_PROMPT_TOOLTIP_TEXT": "اعلان برای کاربر برای یک متن.", - "LISTS_CREATE_EMPTY_TITLE": "ایجاد فهرست خالی", - "LISTS_CREATE_EMPTY_TOOLTIP": "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند.", - "LISTS_CREATE_WITH_TOOLTIP": "فهرستی از هر عددی از موارد می‌سازد.", - "LISTS_CREATE_WITH_INPUT_WITH": "ایجاد فهرست با", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "لیست", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "اضافه‌کردن یک مورد به فهرست.", - "LISTS_REPEAT_TOOLTIP": "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد.", - "LISTS_REPEAT_TITLE": "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد", - "LISTS_LENGTH_TITLE": "طول %1", - "LISTS_LENGTH_TOOLTIP": "طول یک فهرست را برمی‌گرداند.", - "LISTS_ISEMPTY_TITLE": "%1 خالی است", - "LISTS_ISEMPTY_TOOLTIP": "اگر فهرست خالی است مقدار صجیج بر می‌گرداند.", - "LISTS_INLIST": "مہ لیست‌ئا", - "LISTS_INDEX_OF_FIRST": "آھری نبشتانکء بیتگݔنا درگݔج", - "LISTS_INDEX_OF_LAST": "یافتن آخرین رخ‌داد مورد", - "LISTS_INDEX_OF_TOOLTIP": "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر متن موجود نبود.", - "LISTS_GET_INDEX_GET": "گرفتن", - "LISTS_GET_INDEX_GET_REMOVE": "گرفتن و حذف‌کردن", - "LISTS_GET_INDEX_REMOVE": "حذف‌کردن", - "LISTS_GET_INDEX_FROM_END": "# از انتها", - "LISTS_GET_INDEX_FIRST": "اولین", - "LISTS_GET_INDEX_LAST": "اهرین", - "LISTS_GET_INDEX_RANDOM": "یکپارگی", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 اولین مورد است.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 آخرین مورد است.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "موردی در محل مشخص‌شده بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "اولین مورد یک فهرست را بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "آخرین مورد در یک فهرست را بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "یک مورد تصادفی در یک فهرست بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "اولین مورد را در یک فهرست حذف می‌کند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "آخرین مورد را در یک فهرست حذف می‌کند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "یک مورد تصادفی را یک فهرست حذف می‌کند.", - "LISTS_SET_INDEX_SET": "مجموعه", - "LISTS_SET_INDEX_INSERT": "جاہ دیگ مہ", - "LISTS_SET_INDEX_INPUT_TO": "به‌عنوان", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "مورد مشخص‌شده در یک فهرست را قرار می‌دهد.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "اولین مورد در یک فهرست را تعیین می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "آخرین مورد در یک فهرست را تعیین می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "یک مورد تصادفی در یک فهرست را تعیین می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "موردی به ته فهرست اضافه می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "موردی به ته فهرست الحاق می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "مورد را به صورت تصادفی در یک فهرست می‌افزاید.", - "LISTS_GET_SUBLIST_START_FROM_START": "گرفتن زیرمجموعه‌ای از #", - "LISTS_GET_SUBLIST_START_FROM_END": "چݔر چیزے گِرَگ چہ # ءِ آھرا", - "LISTS_GET_SUBLIST_START_FIRST": "گرفتن زیرمجموعه‌ای از ابتدا", - "LISTS_GET_SUBLIST_END_FROM_START": "به #", - "LISTS_GET_SUBLIST_END_FROM_END": "به # از انتها", - "LISTS_GET_SUBLIST_END_LAST": "به آخرین", - "LISTS_GET_SUBLIST_TOOLTIP": "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند.", - "VARIABLES_GET_TOOLTIP": "مقدار این متغیر را بر می‌گرداند.", - "VARIABLES_GET_CREATE_SET": "درست‌کردن «تنظیم %1»", - "VARIABLES_SET": "مجموعه %1 به %2", - "VARIABLES_SET_TOOLTIP": "متغیر برابر با خروجی را مشخص می‌کند.", - "VARIABLES_SET_CREATE_GET": "درست‌کردن «تنظیم %1»", - "PROCEDURES_DEFNORETURN_TITLE": "به", - "PROCEDURES_DEFNORETURN_PROCEDURE": "انجام چیزی", - "PROCEDURES_BEFORE_PARAMS": "با:", - "PROCEDURES_CALL_BEFORE_PARAMS": "با:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "تابعی می‌سازد بدون هیچ خروجی.", - "PROCEDURES_DEFRETURN_RETURN": "بازگشت", - "PROCEDURES_DEFRETURN_TOOLTIP": "تابعی با یک خروجی می‌سازد.", - "PROCEDURES_ALLOW_STATEMENTS": "اجازه اظهارات", - "PROCEDURES_DEF_DUPLICATE_WARNING": "اخطار: این تابعی پارامتر تکراری دارد.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", - "PROCEDURES_CALLNORETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1».", - "PROCEDURES_CALLRETURN_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", - "PROCEDURES_CALLRETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "ورودی‌ها", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع.", - "PROCEDURES_MUTATORARG_TITLE": "نام ورودی:", - "PROCEDURES_MUTATORARG_TOOLTIP": "اضافه کردن ورودی به تابع.", - "PROCEDURES_HIGHLIGHT_DEF": "برجسته‌سازی تعریف تابع", - "PROCEDURES_CREATE_DO": "ساختن «%1»", - "PROCEDURES_IFRETURN_TOOLTIP": "اگر یک مقدار صحیح است، مقدار دوم را برگردان.", - "PROCEDURES_IFRETURN_WARNING": "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود." -} +{ + "@metadata": { + "authors": [ + "Baloch Afghanistan", + "Sultanselim baloch" + ] + }, + "VARIABLES_DEFAULT_NAME": "مورد", + "DUPLICATE_BLOCK": "تکراری", + "ADD_COMMENT": "افزودن نظر", + "REMOVE_COMMENT": "حذف نظر", + "EXTERNAL_INPUTS": "ورودی‌های خارجی", + "INLINE_INPUTS": "ورودی‌های درون خطی", + "DELETE_BLOCK": "حذف بلوک", + "DELETE_X_BLOCKS": "حذف بلوک‌های %1", + "COLLAPSE_BLOCK": "فروپاشی بلوک", + "COLLAPSE_ALL": "فروپاشی بلوک‌ها", + "EXPAND_BLOCK": "گسترش بلوک", + "EXPAND_ALL": "گسترش بلوک‌ها", + "DISABLE_BLOCK": "غیرفعال‌سازی بلوک", + "ENABLE_BLOCK": "فعال‌سازی بلوک", + "HELP": "کومک", + "CHANGE_VALUE_TITLE": "تغییر مقدار:", + "RENAME_VARIABLE": "تغییر نام متغیر...", + "RENAME_VARIABLE_TITLE": "تغییر نام همهٔ متغیرهای «%1» به:", + "NEW_VARIABLE": "متغیر تازه...", + "NEW_VARIABLE_TITLE": "نام متغیر تازه:", + "COLOUR_PICKER_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF", + "COLOUR_PICKER_TOOLTIP": "انتخاب یک رنگ از تخته‌رنگ.", + "COLOUR_RANDOM_TITLE": "رنگ تصادفی", + "COLOUR_RANDOM_TOOLTIP": "انتخاب یک رنگ به شکل تصادفی.", + "COLOUR_RGB_TITLE": "رنگ با", + "COLOUR_RGB_RED": "قرمز", + "COLOUR_RGB_GREEN": "سبز", + "COLOUR_RGB_BLUE": "آبی", + "COLOUR_RGB_TOOLTIP": "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند.", + "COLOUR_BLEND_TITLE": "مخلوط", + "COLOUR_BLEND_COLOUR1": "رنگ ۱", + "COLOUR_BLEND_COLOUR2": "رنگ ۲", + "COLOUR_BLEND_RATIO": "نسبت", + "COLOUR_BLEND_TOOLTIP": "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)", + "CONTROLS_REPEAT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AD%D9%84%D9%82%D9%87_%D9%81%D9%88%D8%B1", + "CONTROLS_REPEAT_TITLE": "%1 بار تکرار", + "CONTROLS_REPEAT_INPUT_DO": "انجام", + "CONTROLS_REPEAT_TOOLTIP": "انجام چند عبارت چندین بار.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تکرار در حالی که", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تکرار تا", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده.", + "CONTROLS_FOR_TOOLTIP": "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد.", + "CONTROLS_FOR_TITLE": "با تعداد %1 از %2 به %3 با گام‌های %4", + "CONTROLS_FOREACH_TITLE": "برای هر مورد %1 در فهرست %2", + "CONTROLS_FOREACH_TOOLTIP": "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "شکستن حلقه", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ادامه با تکرار بعدی حلقه", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "شکستن حلقهٔ شامل.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود.", + "CONTROLS_IF_TOOLTIP_1": "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده.", + "CONTROLS_IF_TOOLTIP_2": "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده.", + "CONTROLS_IF_TOOLTIP_3": "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده.", + "CONTROLS_IF_TOOLTIP_4": "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده.", + "CONTROLS_IF_MSG_IF": "اگر", + "CONTROLS_IF_MSG_ELSEIF": "اگر آنگاه", + "CONTROLS_IF_MSG_ELSE": "آنگاه", + "CONTROLS_IF_IF_TOOLTIP": "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "افزودن یک شرط به بلوک اگر.", + "CONTROLS_IF_ELSE_TOOLTIP": "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر.", + "LOGIC_COMPARE_HELPURL": "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C", + "LOGIC_COMPARE_TOOLTIP_EQ": "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند.", + "LOGIC_COMPARE_TOOLTIP_LT": "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد.", + "LOGIC_COMPARE_TOOLTIP_LTE": "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد.", + "LOGIC_COMPARE_TOOLTIP_GT": "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد.", + "LOGIC_COMPARE_TOOLTIP_GTE": "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد.", + "LOGIC_OPERATION_TOOLTIP_AND": "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد.", + "LOGIC_OPERATION_AND": "و", + "LOGIC_OPERATION_TOOLTIP_OR": "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد.", + "LOGIC_OPERATION_OR": "یا", + "LOGIC_NEGATE_TITLE": "نه %1", + "LOGIC_NEGATE_TOOLTIP": "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد.", + "LOGIC_BOOLEAN_TRUE": "صحیح", + "LOGIC_BOOLEAN_FALSE": "ناصحیح", + "LOGIC_BOOLEAN_TOOLTIP": "بازگرداندن یکی از صحیح یا ناصحیح.", + "LOGIC_NULL": "تهی", + "LOGIC_NULL_TOOLTIP": "تهی بازمی‌گرداند.", + "LOGIC_TERNARY_CONDITION": "آزمایش", + "LOGIC_TERNARY_IF_TRUE": "اگر صحیح", + "LOGIC_TERNARY_IF_FALSE": "اگر ناصحیح", + "LOGIC_TERNARY_TOOLTIP": "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را.", + "MATH_NUMBER_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF", + "MATH_NUMBER_TOOLTIP": "یک عدد.", + "MATH_ARITHMETIC_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8", + "MATH_ARITHMETIC_TOOLTIP_ADD": "بازگرداندن مقدار جمع دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "بازگرداندن تفاوت دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "بازگرداندن حاصلضرب دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "بازگرداندن باقی‌ماندهٔ دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد.", + "MATH_SINGLE_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85", + "MATH_SINGLE_OP_ROOT": "ریشهٔ دوم", + "MATH_SINGLE_TOOLTIP_ROOT": "ریشهٔ دوم یک عدد را باز می‌گرداند.", + "MATH_SINGLE_OP_ABSOLUTE": "مطلق", + "MATH_SINGLE_TOOLTIP_ABS": "قدر مطلق یک عدد را بازمی‌گرداند.", + "MATH_SINGLE_TOOLTIP_NEG": "منفی‌شدهٔ یک عدد را باز می‌گرداند.", + "MATH_SINGLE_TOOLTIP_LN": "لوگاریتم طبیعی یک عدد را باز می‌گرداند.", + "MATH_SINGLE_TOOLTIP_LOG10": "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد.", + "MATH_SINGLE_TOOLTIP_EXP": "بازگرداندن توان e یک عدد.", + "MATH_SINGLE_TOOLTIP_POW10": "بازگرداندن توان ۱۰ یک عدد.", + "MATH_TRIG_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C", + "MATH_TRIG_TOOLTIP_SIN": "بازگرداندن سینوس درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_COS": "بازگرداندن کسینوس درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_TAN": "بازگرداندن تانژانت یک درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_ASIN": "بازگرداندن آرک‌سینوس درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_ACOS": "بازگرداندن آرک‌کسینوس درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_ATAN": "بازگرداندن آرک‌تانژانت درجه (نه رادیان).", + "MATH_CONSTANT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C", + "MATH_CONSTANT_TOOLTIP": "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت).", + "MATH_IS_EVEN": "زوج است", + "MATH_IS_ODD": "فرد است", + "MATH_IS_PRIME": "عدد اول است", + "MATH_IS_WHOLE": "کامل است", + "MATH_IS_POSITIVE": "مثبت است", + "MATH_IS_NEGATIVE": "منفی است", + "MATH_IS_DIVISIBLE_BY": "تقسیم شده بر", + "MATH_IS_TOOLTIP": "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند.", + "MATH_CHANGE_HELPURL": "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87", + "MATH_CHANGE_TITLE": "تغییر %1 با %2", + "MATH_CHANGE_TOOLTIP": "افزودن یک عدد به متغیر '%1'.", + "MATH_ROUND_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", + "MATH_ROUND_TOOLTIP": "گردکردن یک عدد به بالا یا پایین.", + "MATH_ROUND_OPERATOR_ROUND": "گردکردن", + "MATH_ROUND_OPERATOR_ROUNDUP": "گرد به بالا", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "گرد به پایین", + "MATH_ONLIST_OPERATOR_SUM": "جمع فهرست", + "MATH_ONLIST_TOOLTIP_SUM": "جمع همهٔ عددهای فهرست را باز می‌گرداند.", + "MATH_ONLIST_OPERATOR_MIN": "کوچکترین فهرست", + "MATH_ONLIST_TOOLTIP_MIN": "کوچک‌ترین عدد در فهرست را باز می‌گرداند.", + "MATH_ONLIST_OPERATOR_MAX": "بزرگ‌ترین فهرست", + "MATH_ONLIST_TOOLTIP_MAX": "بزرگ‌ترین عدد در فهرست را باز می‌گرداند.", + "MATH_ONLIST_OPERATOR_AVERAGE": "میانگین فهرست", + "MATH_ONLIST_TOOLTIP_AVERAGE": "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_MEDIAN": "میانهٔ فهرست", + "MATH_ONLIST_TOOLTIP_MEDIAN": "میانهٔ عدد در فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_MODE": "مد فهرست", + "MATH_ONLIST_TOOLTIP_MODE": "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_STD_DEV": "انحراف معیار فهرست", + "MATH_ONLIST_TOOLTIP_STD_DEV": "انحراف معیار فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_RANDOM": "مورد تصادفی از فهرست", + "MATH_ONLIST_TOOLTIP_RANDOM": "موردی تصادفی از فهرست را بر می‌گرداند.", + "MATH_MODULO_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87", + "MATH_MODULO_TITLE": "باقی‌ماندهٔ %1 + %2", + "MATH_MODULO_TOOLTIP": "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند.", + "MATH_CONSTRAIN_TITLE": "محدودکردن %1 پایین %2 بالا %3", + "MATH_CONSTRAIN_TOOLTIP": "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته).", + "MATH_RANDOM_INT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C", + "MATH_RANDOM_INT_TITLE": "عدد صحیح تصادفی بین %1 تا %2", + "MATH_RANDOM_INT_TOOLTIP": "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند.", + "MATH_RANDOM_FLOAT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "کسر تصادفی", + "MATH_RANDOM_FLOAT_TOOLTIP": "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز).", + "TEXT_TEXT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", + "TEXT_TEXT_TOOLTIP": "یک حرف، کلمه یا خطی از متن.", + "TEXT_JOIN_TITLE_CREATEWITH": "ایجاد متن با", + "TEXT_JOIN_TOOLTIP": "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "عضویت", + "TEXT_CREATE_JOIN_TOOLTIP": "اضافه، حذف یا ترتیب‌سازی قسمت‌ها برای تنظیم مجدد این بلوک اگر مسدود است.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "افزودن یک مورد به متن.", + "TEXT_APPEND_TITLE": "به %1 الحاق متن %2", + "TEXT_APPEND_TOOLTIP": "الحاق متنی به متغیر «%1».", + "TEXT_LENGTH_TITLE": "طول %1", + "TEXT_LENGTH_TOOLTIP": "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده.", + "TEXT_ISEMPTY_TITLE": "%1 خالی است", + "TEXT_ISEMPTY_TOOLTIP": "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است.", + "TEXT_INDEXOF_TOOLTIP": "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند.", + "TEXT_INDEXOF_TITLE": "در متن %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "اولی نبشتانکء بیتگݔنا درگݔج", + "TEXT_INDEXOF_OPERATOR_LAST": "آھری نبشتانکء بیتگݔنا درگݔج", + "TEXT_CHARAT_FROM_START": "گرفتن حرف #", + "TEXT_CHARAT_FROM_END": "گرفتن حرف # از آخر", + "TEXT_CHARAT_FIRST": "گرفتن اولین حرف", + "TEXT_CHARAT_LAST": "گرفتن آخرین حرف", + "TEXT_CHARAT_RANDOM": "گرفتن حرف تصادفی", + "TEXT_CHARAT_TOOLTIP": "حرفی در موقعیت مشخص‌شده بر می‌گرداند.", + "TEXT_GET_SUBSTRING_TOOLTIP": "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "مہ نبشتہ‌ئا", + "TEXT_GET_SUBSTRING_START_FROM_START": "گرفتن زیرمتن از حرف #", + "TEXT_GET_SUBSTRING_START_FROM_END": "گرفتن زیرمتن از حرف # به انتها", + "TEXT_GET_SUBSTRING_START_FIRST": "گرفتن زیرمتن از اولین حرف", + "TEXT_GET_SUBSTRING_END_FROM_START": "به حرف #", + "TEXT_GET_SUBSTRING_END_FROM_END": "به حرف # از انتها", + "TEXT_GET_SUBSTRING_END_LAST": "گرفتن آخرین حرف", + "TEXT_CHANGECASE_TOOLTIP": "بازگرداندن کپی متن در حالتی متفاوت.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "به حروف بزرگ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "به حروف کوچک", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "به حروف بزرگ عنوان", + "TEXT_TRIM_TOOLTIP": "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند.", + "TEXT_TRIM_OPERATOR_BOTH": "تراشیدن فاصله‌ها از هر دو طرف", + "TEXT_TRIM_OPERATOR_LEFT": "تراشیدن فاصله‌ها از طرف چپ", + "TEXT_TRIM_OPERATOR_RIGHT": "تراشیدن فاصله‌ها از طرف چپ", + "TEXT_PRINT_TITLE": "چاپ %1", + "TEXT_PRINT_TOOLTIP": "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده.", + "TEXT_PROMPT_TYPE_TEXT": "اعلان برای متن با پیام", + "TEXT_PROMPT_TYPE_NUMBER": "اعلان برای عدد با پیام", + "TEXT_PROMPT_TOOLTIP_NUMBER": "اعلان برای کاربر با یک عدد.", + "TEXT_PROMPT_TOOLTIP_TEXT": "اعلان برای کاربر برای یک متن.", + "LISTS_CREATE_EMPTY_TITLE": "ایجاد فهرست خالی", + "LISTS_CREATE_EMPTY_TOOLTIP": "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند.", + "LISTS_CREATE_WITH_TOOLTIP": "فهرستی از هر عددی از موارد می‌سازد.", + "LISTS_CREATE_WITH_INPUT_WITH": "ایجاد فهرست با", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "لیست", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "اضافه‌کردن یک مورد به فهرست.", + "LISTS_REPEAT_TOOLTIP": "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد.", + "LISTS_REPEAT_TITLE": "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد", + "LISTS_LENGTH_TITLE": "طول %1", + "LISTS_LENGTH_TOOLTIP": "طول یک فهرست را برمی‌گرداند.", + "LISTS_ISEMPTY_TITLE": "%1 خالی است", + "LISTS_ISEMPTY_TOOLTIP": "اگر فهرست خالی است مقدار صجیج بر می‌گرداند.", + "LISTS_INLIST": "مہ لیست‌ئا", + "LISTS_INDEX_OF_FIRST": "آھری نبشتانکء بیتگݔنا درگݔج", + "LISTS_INDEX_OF_LAST": "یافتن آخرین رخ‌داد مورد", + "LISTS_INDEX_OF_TOOLTIP": "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر متن موجود نبود.", + "LISTS_GET_INDEX_GET": "گرفتن", + "LISTS_GET_INDEX_GET_REMOVE": "گرفتن و حذف‌کردن", + "LISTS_GET_INDEX_REMOVE": "حذف‌کردن", + "LISTS_GET_INDEX_FROM_END": "# از انتها", + "LISTS_GET_INDEX_FIRST": "اولین", + "LISTS_GET_INDEX_LAST": "اهرین", + "LISTS_GET_INDEX_RANDOM": "یکپارگی", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 اولین مورد است.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 آخرین مورد است.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "موردی در محل مشخص‌شده بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "اولین مورد یک فهرست را بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "آخرین مورد در یک فهرست را بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "یک مورد تصادفی در یک فهرست بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "اولین مورد را در یک فهرست حذف می‌کند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "آخرین مورد را در یک فهرست حذف می‌کند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "یک مورد تصادفی را یک فهرست حذف می‌کند.", + "LISTS_SET_INDEX_SET": "مجموعه", + "LISTS_SET_INDEX_INSERT": "جاہ دیگ مہ", + "LISTS_SET_INDEX_INPUT_TO": "به‌عنوان", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "مورد مشخص‌شده در یک فهرست را قرار می‌دهد.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "اولین مورد در یک فهرست را تعیین می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "آخرین مورد در یک فهرست را تعیین می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "یک مورد تصادفی در یک فهرست را تعیین می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "موردی به ته فهرست اضافه می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "موردی به ته فهرست الحاق می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "مورد را به صورت تصادفی در یک فهرست می‌افزاید.", + "LISTS_GET_SUBLIST_START_FROM_START": "گرفتن زیرمجموعه‌ای از #", + "LISTS_GET_SUBLIST_START_FROM_END": "چݔر چیزے گِرَگ چہ # ءِ آھرا", + "LISTS_GET_SUBLIST_START_FIRST": "گرفتن زیرمجموعه‌ای از ابتدا", + "LISTS_GET_SUBLIST_END_FROM_START": "به #", + "LISTS_GET_SUBLIST_END_FROM_END": "به # از انتها", + "LISTS_GET_SUBLIST_END_LAST": "به آخرین", + "LISTS_GET_SUBLIST_TOOLTIP": "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند.", + "VARIABLES_GET_TOOLTIP": "مقدار این متغیر را بر می‌گرداند.", + "VARIABLES_GET_CREATE_SET": "درست‌کردن «تنظیم %1»", + "VARIABLES_SET": "مجموعه %1 به %2", + "VARIABLES_SET_TOOLTIP": "متغیر برابر با خروجی را مشخص می‌کند.", + "VARIABLES_SET_CREATE_GET": "درست‌کردن «تنظیم %1»", + "PROCEDURES_DEFNORETURN_TITLE": "به", + "PROCEDURES_DEFNORETURN_PROCEDURE": "انجام چیزی", + "PROCEDURES_BEFORE_PARAMS": "با:", + "PROCEDURES_CALL_BEFORE_PARAMS": "با:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "تابعی می‌سازد بدون هیچ خروجی.", + "PROCEDURES_DEFRETURN_RETURN": "بازگشت", + "PROCEDURES_DEFRETURN_TOOLTIP": "تابعی با یک خروجی می‌سازد.", + "PROCEDURES_ALLOW_STATEMENTS": "اجازه اظهارات", + "PROCEDURES_DEF_DUPLICATE_WARNING": "اخطار: این تابعی پارامتر تکراری دارد.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", + "PROCEDURES_CALLNORETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1».", + "PROCEDURES_CALLRETURN_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", + "PROCEDURES_CALLRETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "ورودی‌ها", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع.", + "PROCEDURES_MUTATORARG_TITLE": "نام ورودی:", + "PROCEDURES_MUTATORARG_TOOLTIP": "اضافه کردن ورودی به تابع.", + "PROCEDURES_HIGHLIGHT_DEF": "برجسته‌سازی تعریف تابع", + "PROCEDURES_CREATE_DO": "ساختن «%1»", + "PROCEDURES_IFRETURN_TOOLTIP": "اگر یک مقدار صحیح است، مقدار دوم را برگردان.", + "PROCEDURES_IFRETURN_WARNING": "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود." +} diff --git a/msg/json/be-tarask.json b/msg/json/be-tarask.json index f11f5917cad..289b246eaa0 100644 --- a/msg/json/be-tarask.json +++ b/msg/json/be-tarask.json @@ -1,342 +1,342 @@ -{ - "@metadata": { - "authors": [ - "Jim-by", - "Nerogaf", - "Red Winged Duck", - "Renessaince" - ] - }, - "VARIABLES_DEFAULT_NAME": "аб’ект", - "UNNAMED_KEY": "безназоўны", - "TODAY": "Сёньня", - "DUPLICATE_BLOCK": "Капіяваць", - "ADD_COMMENT": "Дадаць камэнтар", - "REMOVE_COMMENT": "Выдаліць камэнтар", - "DUPLICATE_COMMENT": "Прадубляваць камэнтар", - "EXTERNAL_INPUTS": "Зьнешнія ўваходы", - "INLINE_INPUTS": "Унутраныя ўваходы", - "DELETE_BLOCK": "Выдаліць блёк", - "DELETE_X_BLOCKS": "Выдаліць %1 блёкі", - "DELETE_ALL_BLOCKS": "Выдаліць усе блёкі %1?", - "CLEAN_UP": "Ачысьціць блёкі", - "COLLAPSE_BLOCK": "Згарнуць блёк", - "COLLAPSE_ALL": "Згарнуць блёкі", - "EXPAND_BLOCK": "Разгарнуць блёк", - "EXPAND_ALL": "Разгарнуць блёкі", - "DISABLE_BLOCK": "Адключыць блёк", - "ENABLE_BLOCK": "Уключыць блёк", - "HELP": "Дапамога", - "UNDO": "Скасаваць", - "REDO": "Паўтарыць", - "CHANGE_VALUE_TITLE": "Зьмяніць значэньне:", - "RENAME_VARIABLE": "Перайменаваць зьменную…", - "RENAME_VARIABLE_TITLE": "Перайменаваць усе назвы зьменных '%1' на:", - "NEW_VARIABLE": "Стварыць зьменную…", - "NEW_STRING_VARIABLE": "Стварыць радковую зьменную…", - "NEW_NUMBER_VARIABLE": "Стварыць лікавую зьменную…", - "NEW_COLOUR_VARIABLE": "Стварыць зьменную колеру…", - "NEW_VARIABLE_TYPE_TITLE": "Новы тып зьменнай:", - "NEW_VARIABLE_TITLE": "Імя новай зьменнай:", - "VARIABLE_ALREADY_EXISTS": "Зьменная з назвай «%1» ужо існуе.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Зьменная з назвай «%1» ужо існуе зь іншым тыпам: «%2».", - "DELETE_VARIABLE_CONFIRMATION": "Выдаліць %1 выкарыстаньняў зьменнай «%2»?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Немагчыма выдаліць зьменную «%1», таму што яна зьяўляецца часткай вызначэньня функцыі «%2»", - "DELETE_VARIABLE": "Выдаліць зьменную «%1»", - "COLOUR_PICKER_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%B5%D1%80", - "COLOUR_PICKER_TOOLTIP": "Абярыце колер з палітры.", - "COLOUR_RANDOM_TITLE": "выпадковы колер", - "COLOUR_RANDOM_TOOLTIP": "Абраць выпадковы колер.", - "COLOUR_RGB_TITLE": "колер з", - "COLOUR_RGB_RED": "чырвонага", - "COLOUR_RGB_GREEN": "зялёнага", - "COLOUR_RGB_BLUE": "сіняга", - "COLOUR_RGB_TOOLTIP": "Стварыць колер з абранымі прапорцыямі чырвонага, зялёнага і сіняга. Усе значэньні павінны быць ад 0 да 100.", - "COLOUR_BLEND_TITLE": "зьмяшаць", - "COLOUR_BLEND_COLOUR1": "колер 1", - "COLOUR_BLEND_COLOUR2": "колер 2", - "COLOUR_BLEND_RATIO": "дзеля", - "COLOUR_BLEND_TOOLTIP": "Зьмешвае два колеры ў дадзенай прапорцыі (0.0 — 1.0)", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "паўтарыць %1 раз(ы)", - "CONTROLS_REPEAT_INPUT_DO": "выканаць", - "CONTROLS_REPEAT_TOOLTIP": "Выконвае апэрацыі некалькі разоў.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "паўтараць, пакуль", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "паўтараць, пакуль не", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Пакуль значэньне ісьціна, выконваць пэўныя апэрацыі.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Пакуль значэньне хлусьня, выконваць пэўныя апэрацыі.", - "CONTROLS_FOR_TOOLTIP": "Прысвойвае зьменнай \"%1\" значэньні ад пачатковага да канчатковага значэньня, улічваючы зададзены крок, і выконвае абраныя блёкі.", - "CONTROLS_FOR_TITLE": "лічыць з %1 ад %2 да %3 па %4", - "CONTROLS_FOREACH_TITLE": "для кожнага элемэнта %1 у сьпісе %2", - "CONTROLS_FOREACH_TOOLTIP": "Для кожнага элемэнту сьпісу прысвойвае зьменнай '%1' ягонае значэньне і выконвае пэўныя апэрацыі.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "перарваць цыкль", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "працягнуць з наступнага кроку цыклю", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Спыніць гэты цыкль.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Прапусьціць рэшту цыклю і перайсьці да наступнага кроку.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Увага: гэты блёк можа быць выкарыстаны толькі ў цыклі.", - "CONTROLS_IF_TOOLTIP_1": "Калі значэньне ісьціна, выканаць пэўныя апэрацыі.", - "CONTROLS_IF_TOOLTIP_2": "Калі значэньне ісьціна, выканаць першы блёк апэрацыяў, інакш выканаць другі блёк.", - "CONTROLS_IF_TOOLTIP_3": "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў.", - "CONTROLS_IF_TOOLTIP_4": "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў. Калі ніводнае з значэньняў не сапраўднае, выканаць апошні блёк апэрацыяў.", - "CONTROLS_IF_MSG_IF": "калі", - "CONTROLS_IF_MSG_ELSEIF": "інакш, калі", - "CONTROLS_IF_MSG_ELSE": "інакш", - "CONTROLS_IF_IF_TOOLTIP": "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку «калі».", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Дадаць умову да блёку «калі».", - "CONTROLS_IF_ELSE_TOOLTIP": "Дадаць заключную ўмову для ўсіх астатніх варыянтаў блёку «калі».", - "LOGIC_COMPARE_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9D%D1%8F%D1%80%D0%BE%D1%9E%D0%BD%D0%B0%D1%81%D1%8C%D1%86%D1%8C", - "LOGIC_COMPARE_TOOLTIP_EQ": "Вяртае «ісьціна», калі абодва ўводы роўныя.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Вяртае «ісьціна», калі абодва ўводы ня роўныя.", - "LOGIC_COMPARE_TOOLTIP_LT": "Вяртае «ісьціна», калі першы ўвод меншы за другі.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Вяртае «ісьціна», калі першы ўвод меншы ці роўны другому.", - "LOGIC_COMPARE_TOOLTIP_GT": "Вяртае «ісьціна», калі першы ўвод большы за другі.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Вяртае «ісьціна», калі першы ўвод большы ці роўны другому.", - "LOGIC_OPERATION_TOOLTIP_AND": "Вяртае «ісьціна», калі абодва ўводы праўдзівыя.", - "LOGIC_OPERATION_AND": "і", - "LOGIC_OPERATION_TOOLTIP_OR": "Вяртае «ісьціна», калі прынамсі адзін з уводаў праўдзівы.", - "LOGIC_OPERATION_OR": "ці", - "LOGIC_NEGATE_TITLE": "не %1", - "LOGIC_NEGATE_TOOLTIP": "Вяртае «ісьціна», калі ўвод непраўдзівы. Вяртае «хлусьня», калі ўвод праўдзівы.", - "LOGIC_BOOLEAN_TRUE": "ісьціна", - "LOGIC_BOOLEAN_FALSE": "хлусьня", - "LOGIC_BOOLEAN_TOOLTIP": "Вяртае «ісьціна» ці «хлусьня».", - "LOGIC_NULL": "нічога", - "LOGIC_NULL_TOOLTIP": "Вяртае нічога.", - "LOGIC_TERNARY_CONDITION": "тэст", - "LOGIC_TERNARY_IF_TRUE": "калі ісьціна", - "LOGIC_TERNARY_IF_FALSE": "калі хлусьня", - "LOGIC_TERNARY_TOOLTIP": "Праверыць умову ў 'тэст'. Калі ўмова праўдзівая, будзе вернутае значэньне «калі ісьціна»; інакш будзе вернутае «калі хлусьня».", - "MATH_NUMBER_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9B%D1%96%D0%BA", - "MATH_NUMBER_TOOLTIP": "Лік.", - "MATH_ARITHMETIC_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%82%D0%BC%D1%8D%D1%82%D1%8B%D0%BA%D0%B0", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Вяртае суму двух лікаў.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Вяртае рознасьць двух лікаў.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Вяртае здабытак двух лікаў.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Вяртае дзель двух лікаў.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Вяртае першы лік у ступені другога ліку.", - "MATH_SINGLE_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D1%8B_%D0%BA%D0%BE%D1%80%D0%B0%D0%BD%D1%8C", - "MATH_SINGLE_OP_ROOT": "квадратны корань", - "MATH_SINGLE_TOOLTIP_ROOT": "Вяртае квадратны корань ліку.", - "MATH_SINGLE_OP_ABSOLUTE": "модуль", - "MATH_SINGLE_TOOLTIP_ABS": "Вяртае модуль ліку.", - "MATH_SINGLE_TOOLTIP_NEG": "Вяртае супрацьлеглы лік.", - "MATH_SINGLE_TOOLTIP_LN": "Вяртае натуральны лягарытм ліку.", - "MATH_SINGLE_TOOLTIP_LOG10": "Вяртае дзесятковы лягарытм ліку.", - "MATH_SINGLE_TOOLTIP_EXP": "Вяртае e ў ступені ліку.", - "MATH_SINGLE_TOOLTIP_POW10": "Вяртае 10 у ступені ліку.", - "MATH_TRIG_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%A2%D1%80%D1%8B%D0%B3%D0%B0%D0%BD%D0%B0%D0%BC%D1%8D%D1%82%D1%80%D1%8B%D1%8F#.D0.A2.D1.80.D1.8B.D0.B3.D0.B0.D0.BD.D0.B0.D0.BC.D1.8D.D1.82.D1.80.D1.8B.D1.87.D0.BD.D1.8B.D1.8F_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.8B.D1.96", - "MATH_TRIG_TOOLTIP_SIN": "Вяртае сынус кута ў градусах.", - "MATH_TRIG_TOOLTIP_COS": "Вяртае косынус кута ў градусах.", - "MATH_TRIG_TOOLTIP_TAN": "Вяртае тангэнс кута ў градусах.", - "MATH_TRIG_TOOLTIP_ASIN": "Вяртае арксынус ліку.", - "MATH_TRIG_TOOLTIP_ACOS": "Вяртае арккосынус ліку.", - "MATH_TRIG_TOOLTIP_ATAN": "Вяртае арктангэнс ліку.", - "MATH_CONSTANT_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%8D%D0%BC%D0%B0%D1%82%D1%8B%D1%87%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B0", - "MATH_CONSTANT_TOOLTIP": "Вяртае адну з агульных канстантаў: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0,707...) або ∞ (бясконцасьць).", - "MATH_IS_EVEN": "парная", - "MATH_IS_ODD": "няпарная", - "MATH_IS_PRIME": "простая", - "MATH_IS_WHOLE": "цэлая", - "MATH_IS_POSITIVE": "дадатная", - "MATH_IS_NEGATIVE": "адмоўная", - "MATH_IS_DIVISIBLE_BY": "дзеліцца на", - "MATH_IS_TOOLTIP": "Правярае, ці зьяўляецца лік парным, няпарным, простым, станоўчым, адмоўным, ці ён дзеліцца на пэўны лік без астатку. Вяртае значэньне ісьціна або няпраўда.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "зьмяніць %1 на %2", - "MATH_CHANGE_TOOLTIP": "Дадае лічбу да зьменнай '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Акругленьне ліку да большага ці меншага.", - "MATH_ROUND_OPERATOR_ROUND": "акругліць", - "MATH_ROUND_OPERATOR_ROUNDUP": "акругліць да большага", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "акругліць да меншага", - "MATH_ONLIST_OPERATOR_SUM": "Сума сьпісу", - "MATH_ONLIST_TOOLTIP_SUM": "Вяртае суму ўсіх лікаў у сьпісе.", - "MATH_ONLIST_OPERATOR_MIN": "мінімальная ў сьпісе", - "MATH_ONLIST_TOOLTIP_MIN": "Вяртае найменшы лік у сьпісе.", - "MATH_ONLIST_OPERATOR_MAX": "мінімальная ў сьпісе", - "MATH_ONLIST_TOOLTIP_MAX": "Вяртае найменшы лік у сьпісе.", - "MATH_ONLIST_OPERATOR_AVERAGE": "сярэдняя ў сьпісе", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Вяртае сярэднеарытмэтычнае значэньне лікавых значэньняў у сьпісе.", - "MATH_ONLIST_OPERATOR_MEDIAN": "мэдыяна сьпісу", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Вяртае мэдыяну сьпісу.", - "MATH_ONLIST_OPERATOR_MODE": "рэжымы сьпісу", - "MATH_ONLIST_TOOLTIP_MODE": "Вяртае сьпіс самых распаўсюджаных элемэнтаў у сьпісе.", - "MATH_ONLIST_OPERATOR_STD_DEV": "стандартнае адхіленьне сьпісу", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Вяртае стандартнае адхіленьне сьпісу.", - "MATH_ONLIST_OPERATOR_RANDOM": "выпадковы элемэнт сьпісу", - "MATH_ONLIST_TOOLTIP_RANDOM": "Вяртае выпадковы элемэнт сьпісу.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "рэшта дзяленьня %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Вяртае рэшту дзяленьня двух лікаў.", - "MATH_CONSTRAIN_TITLE": "абмежаваць %1 зьнізу %2 зьверху %3", - "MATH_CONSTRAIN_TOOLTIP": "Абмяжоўвае колькасьць ніжняй і верхняй межамі (уключна).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "выпадковая цэлая з %1 для %2", - "MATH_RANDOM_INT_TOOLTIP": "Вяртае выпадковы цэлы лік паміж двума зададзенымі абмежаваньнямі ўключна.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "выпадковая дроб", - "MATH_RANDOM_FLOAT_TOOLTIP": "Вяртае выпадковую дроб у дыяпазоне ад 0,0 (уключна) да 1,0.", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 ад X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Вяртае арктангенс пункту (X, Y) у градусах ад -180 да 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Літара, слова ці радок тэксту.", - "TEXT_JOIN_TITLE_CREATEWITH": "стварыць тэкст з", - "TEXT_JOIN_TOOLTIP": "Стварае фрагмэнт тэксту аб’яднаньнем любой колькасьці элемэнтаў.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "далучыць", - "TEXT_CREATE_JOIN_TOOLTIP": "Дадайце, выдаліце ці зьмяніце парадак разьдзелаў для перадачы тэкставага блёку.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Дадаць элемэнт да тэксту.", - "TEXT_APPEND_TITLE": "да %1 дадаць тэкст %2", - "TEXT_APPEND_TOOLTIP": "Дадаць які-небудзь тэкст да зьменнай '%1'.", - "TEXT_LENGTH_TITLE": "даўжыня %1", - "TEXT_LENGTH_TOOLTIP": "Вяртае колькасьць літараў (у тым ліку прабелы) у пададзеным тэксьце.", - "TEXT_ISEMPTY_TITLE": "%1 пусты", - "TEXT_ISEMPTY_TOOLTIP": "Вяртае значэньне ісьціна, калі тэкст пусты.", - "TEXT_INDEXOF_TOOLTIP": "Вяртае індэкс першага/апошняга ўваходжаньня першага тэксту ў другі тэкст. Вяртае %1, калі тэкст ня знойдзены.", - "TEXT_INDEXOF_TITLE": "у тэксьце %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "знайсьці першае ўваходжаньне тэксту", - "TEXT_INDEXOF_OPERATOR_LAST": "знайсьці апошняе ўваходжаньне тэксту", - "TEXT_CHARAT_TITLE": "у тэксьце %1 %2", - "TEXT_CHARAT_FROM_START": "узяць літару №", - "TEXT_CHARAT_FROM_END": "узяць літару № з канца", - "TEXT_CHARAT_FIRST": "узяць першую літару", - "TEXT_CHARAT_LAST": "узяць апошнюю літару", - "TEXT_CHARAT_RANDOM": "узяць выпадковую літару", - "TEXT_CHARAT_TOOLTIP": "Вяртае літару ў пазначанай пазыцыі.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Вяртае пазначаную частку тэксту.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "у тэксьце", - "TEXT_GET_SUBSTRING_START_FROM_START": "узяць падрадок зь літары №", - "TEXT_GET_SUBSTRING_START_FROM_END": "узяць падрадок зь літары № з канца", - "TEXT_GET_SUBSTRING_START_FIRST": "атрымаць падрадок зь першай літары", - "TEXT_GET_SUBSTRING_END_FROM_START": "да літары №", - "TEXT_GET_SUBSTRING_END_FROM_END": "да літары № з канца", - "TEXT_GET_SUBSTRING_END_LAST": "да апошняй літары", - "TEXT_CHANGECASE_TOOLTIP": "Вярнуць копію тэксту зь іншай велічынёй літар.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "да ВЕРХНЯГА РЭГІСТРУ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "да ніжняга рэгістру", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Вялікія Першыя Літары", - "TEXT_TRIM_TOOLTIP": "Вяртае копію тэксту з прабеламі, выдаленымі ад аднаго ці абодвух бакоў.", - "TEXT_TRIM_OPERATOR_BOTH": "абрэзаць прабелы з абодвух бакоў", - "TEXT_TRIM_OPERATOR_LEFT": "абрэзаць прабелы зь левага боку", - "TEXT_TRIM_OPERATOR_RIGHT": "абрэзаць прабелы з правага боку", - "TEXT_PRINT_TITLE": "друкаваць %1", - "TEXT_PRINT_TOOLTIP": "Надрукаваць пазначаны тэкст, лічбу ці іншыя сымбалі.", - "TEXT_PROMPT_TYPE_TEXT": "запытаць тэкст з падказкай", - "TEXT_PROMPT_TYPE_NUMBER": "запытаць лічбу з падказкай", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Запытаць у карыстальніка лічбу.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Запытаць у карыстальніка тэкст.", - "TEXT_COUNT_MESSAGE0": "падлічыць %1 сярод %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Падлічвае колькі разоў нейкі тэкст сустракаецца ўнутры нейкага іншага тэксту.", - "TEXT_REPLACE_MESSAGE0": "замяніць %1 на %2 у %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Замяняе ўсе выпадкі нейкага тэксту на іншы тэкст.", - "TEXT_REVERSE_MESSAGE0": "адваротна %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Мяняе парадак сымбаляў у тэксьце на адваротны.", - "LISTS_CREATE_EMPTY_TITLE": "стварыць пусты сьпіс", - "LISTS_CREATE_EMPTY_TOOLTIP": "Вяртае сьпіс даўжынёй 0, які ня ўтрымлівае запісаў зьвестак", - "LISTS_CREATE_WITH_TOOLTIP": "Ставарае сьпіс зь любой колькасьцю элемэнтаў.", - "LISTS_CREATE_WITH_INPUT_WITH": "стварыць сьпіс з", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "сьпіс", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Дадаць элемэнт да сьпісу.", - "LISTS_REPEAT_TOOLTIP": "Стварае сьпіс, які ўтрымлівае пададзеную колькасьць копіяў элемэнту.", - "LISTS_REPEAT_TITLE": "стварыць сьпіс з элемэнту %1, які паўтараецца %2 разоў", - "LISTS_LENGTH_TITLE": "даўжыня %1", - "LISTS_LENGTH_TOOLTIP": "Вяртае даўжыню сьпісу.", - "LISTS_ISEMPTY_TITLE": "%1 пусты", - "LISTS_ISEMPTY_TOOLTIP": "Вяртае значэньне ісьціна, калі сьпіс пусты.", - "LISTS_INLIST": "у сьпісе", - "LISTS_INDEX_OF_FIRST": "знайсьці першае ўваходжаньне элемэнту", - "LISTS_INDEX_OF_LAST": "знайсьці апошняе ўваходжаньне элемэнту", - "LISTS_INDEX_OF_TOOLTIP": "Вяртае індэкс першага/апошняга ўваходжаньня элемэнту ў сьпіс. Вяртае %1, калі элемэнт ня знойдзены.", - "LISTS_GET_INDEX_GET": "атрымаць", - "LISTS_GET_INDEX_GET_REMOVE": "атрымаць і выдаліць", - "LISTS_GET_INDEX_REMOVE": "выдаліць", - "LISTS_GET_INDEX_FROM_END": "№ з канца", - "LISTS_GET_INDEX_FIRST": "першы", - "LISTS_GET_INDEX_LAST": "апошні", - "LISTS_GET_INDEX_RANDOM": "выпадковы", - "LISTS_INDEX_FROM_START_TOOLTIP": "№%1 — першы элемэнт.", - "LISTS_INDEX_FROM_END_TOOLTIP": "№%1 — апошні элемэнт.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Вяртае элемэнт у пазначанай пазыцыі ў сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Вяртае першы элемэнт у сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Вяртае апошні элемэнт у сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Вяртае выпадковы элемэнт у сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Выдаляе і вяртае элемэнт у пазначанай пазыцыі ў сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Выдаляе і вяртае першы элемэнт у сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Выдаляе і вяртае апошні элемэнт у сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Выдаляе і вяртае выпадковы элемэнт у сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Выдаляе элемэнт у пазначанай пазыцыі ў сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Выдаляе першы элемэнт у сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Выдаляе апошні элемэнт у сьпісе.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Выдаляе выпадковы элемэнт у сьпісе.", - "LISTS_SET_INDEX_SET": "усталяваць", - "LISTS_SET_INDEX_INSERT": "уставіць у", - "LISTS_SET_INDEX_INPUT_TO": "як", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Задае элемэнт у пазначанай пазыцыі ў сьпісе.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Задае першы элемэнт у сьпісе.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Задае апошні элемэнт у сьпісе.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Задае выпадковы элемэнт у сьпісе.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Устаўляе элемэнт у пазначанай пазыцыі ў сьпісе.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Устаўляе элемэнт у пачатак сьпісу.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Дадае элемэнт у канец сьпісу.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Выпадковым чынам устаўляе элемэнт у сьпіс.", - "LISTS_GET_SUBLIST_START_FROM_START": "атрымаць падсьпіс з №", - "LISTS_GET_SUBLIST_START_FROM_END": "атрымаць падсьпіс з № з канца", - "LISTS_GET_SUBLIST_START_FIRST": "атрымаць падсьпіс зь першага", - "LISTS_GET_SUBLIST_END_FROM_START": "да #", - "LISTS_GET_SUBLIST_END_FROM_END": "па № з канца", - "LISTS_GET_SUBLIST_END_LAST": "да апошняга", - "LISTS_GET_SUBLIST_TOOLTIP": "Стварае копію пазначанай часткі сьпісу.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "сартаваць %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Сартаваць копію сьпісу.", - "LISTS_SORT_ORDER_ASCENDING": "па павелічэньні", - "LISTS_SORT_ORDER_DESCENDING": "па зьмяншэньні", - "LISTS_SORT_TYPE_NUMERIC": "як лікі", - "LISTS_SORT_TYPE_TEXT": "паводле альфабэту", - "LISTS_SORT_TYPE_IGNORECASE": "паводле альфабэту, ігнараваць рэгістар", - "LISTS_SPLIT_LIST_FROM_TEXT": "стварыць сьпіс з тэксту", - "LISTS_SPLIT_TEXT_FROM_LIST": "стварыць тэкст са сьпісу", - "LISTS_SPLIT_WITH_DELIMITER": "з падзяляльнікам", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Падзяліць тэкст у сьпіс тэкстаў, па падзяляльніках.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Аб’ядноўвае сьпіс тэкстаў у адзін тэкст па падзяляльніках.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "адваротна %1", - "LISTS_REVERSE_TOOLTIP": "Зьмяняе парадак копіі сьпісу на адваротны.", - "VARIABLES_GET_TOOLTIP": "Вяртае значэньне гэтай зьменнай.", - "VARIABLES_GET_CREATE_SET": "Стварыць блёк «усталяваць %1»", - "VARIABLES_SET": "усталяваць %1 да %2", - "VARIABLES_SET_TOOLTIP": "Надаць гэтай зьменнай значэньне ўстаўкі.", - "VARIABLES_SET_CREATE_GET": "Стварыць блёк «атрымаць %1»", - "PROCEDURES_DEFNORETURN_TITLE": "да", - "PROCEDURES_DEFNORETURN_PROCEDURE": "зрабіць што-небудзь", - "PROCEDURES_BEFORE_PARAMS": "з:", - "PROCEDURES_CALL_BEFORE_PARAMS": "з:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Стварае функцыю бяз выніку.", - "PROCEDURES_DEFNORETURN_COMMENT": "Апішыце гэтую функцыю…", - "PROCEDURES_DEFRETURN_RETURN": "вярнуць", - "PROCEDURES_DEFRETURN_TOOLTIP": "Стварае функцыю з вынікам.", - "PROCEDURES_ALLOW_STATEMENTS": "дазволіць зацьвярджэньне", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Увага: гэтая функцыя мае парамэтры-дублікаты.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Запусьціць функцыю вызначаную карыстальнікам '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Запусьціць функцыю вызначаную карыстальнікам '%1' і выкарыстаць яе вынік.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "парамэтры", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Дадаць, выдаліць ці запісаць чаргу ўваходных парамэтраў для гэтай функцыі.", - "PROCEDURES_MUTATORARG_TITLE": "назва парамэтру:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Дадаць уваходныя парамэтры ў функцыю.", - "PROCEDURES_HIGHLIGHT_DEF": "Падсьвяціць вызначэньне функцыі", - "PROCEDURES_CREATE_DO": "Стварыць '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Калі значэньне ісьціна, вярнуць другое значэньне.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Папярэджаньне: гэты блёк можа выкарыстоўвацца толькі ў вызначанай функцыі.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Напішыце што-небудзь…", - "WORKSPACE_ARIA_LABEL": "Працоўная прастора Blockly", - "COLLAPSED_WARNINGS_WARNING": "Згорнутыя блёкі ўтрымліваюць папярэджаньні.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Скасаваць" -} +{ + "@metadata": { + "authors": [ + "Jim-by", + "Nerogaf", + "Red Winged Duck", + "Renessaince" + ] + }, + "VARIABLES_DEFAULT_NAME": "аб’ект", + "UNNAMED_KEY": "безназоўны", + "TODAY": "Сёньня", + "DUPLICATE_BLOCK": "Капіяваць", + "ADD_COMMENT": "Дадаць камэнтар", + "REMOVE_COMMENT": "Выдаліць камэнтар", + "DUPLICATE_COMMENT": "Прадубляваць камэнтар", + "EXTERNAL_INPUTS": "Зьнешнія ўваходы", + "INLINE_INPUTS": "Унутраныя ўваходы", + "DELETE_BLOCK": "Выдаліць блёк", + "DELETE_X_BLOCKS": "Выдаліць %1 блёкі", + "DELETE_ALL_BLOCKS": "Выдаліць усе блёкі %1?", + "CLEAN_UP": "Ачысьціць блёкі", + "COLLAPSE_BLOCK": "Згарнуць блёк", + "COLLAPSE_ALL": "Згарнуць блёкі", + "EXPAND_BLOCK": "Разгарнуць блёк", + "EXPAND_ALL": "Разгарнуць блёкі", + "DISABLE_BLOCK": "Адключыць блёк", + "ENABLE_BLOCK": "Уключыць блёк", + "HELP": "Дапамога", + "UNDO": "Скасаваць", + "REDO": "Паўтарыць", + "CHANGE_VALUE_TITLE": "Зьмяніць значэньне:", + "RENAME_VARIABLE": "Перайменаваць зьменную…", + "RENAME_VARIABLE_TITLE": "Перайменаваць усе назвы зьменных '%1' на:", + "NEW_VARIABLE": "Стварыць зьменную…", + "NEW_STRING_VARIABLE": "Стварыць радковую зьменную…", + "NEW_NUMBER_VARIABLE": "Стварыць лікавую зьменную…", + "NEW_COLOUR_VARIABLE": "Стварыць зьменную колеру…", + "NEW_VARIABLE_TYPE_TITLE": "Новы тып зьменнай:", + "NEW_VARIABLE_TITLE": "Імя новай зьменнай:", + "VARIABLE_ALREADY_EXISTS": "Зьменная з назвай «%1» ужо існуе.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Зьменная з назвай «%1» ужо існуе зь іншым тыпам: «%2».", + "DELETE_VARIABLE_CONFIRMATION": "Выдаліць %1 выкарыстаньняў зьменнай «%2»?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Немагчыма выдаліць зьменную «%1», таму што яна зьяўляецца часткай вызначэньня функцыі «%2»", + "DELETE_VARIABLE": "Выдаліць зьменную «%1»", + "COLOUR_PICKER_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%B5%D1%80", + "COLOUR_PICKER_TOOLTIP": "Абярыце колер з палітры.", + "COLOUR_RANDOM_TITLE": "выпадковы колер", + "COLOUR_RANDOM_TOOLTIP": "Абраць выпадковы колер.", + "COLOUR_RGB_TITLE": "колер з", + "COLOUR_RGB_RED": "чырвонага", + "COLOUR_RGB_GREEN": "зялёнага", + "COLOUR_RGB_BLUE": "сіняга", + "COLOUR_RGB_TOOLTIP": "Стварыць колер з абранымі прапорцыямі чырвонага, зялёнага і сіняга. Усе значэньні павінны быць ад 0 да 100.", + "COLOUR_BLEND_TITLE": "зьмяшаць", + "COLOUR_BLEND_COLOUR1": "колер 1", + "COLOUR_BLEND_COLOUR2": "колер 2", + "COLOUR_BLEND_RATIO": "дзеля", + "COLOUR_BLEND_TOOLTIP": "Зьмешвае два колеры ў дадзенай прапорцыі (0.0 — 1.0)", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "паўтарыць %1 раз(ы)", + "CONTROLS_REPEAT_INPUT_DO": "выканаць", + "CONTROLS_REPEAT_TOOLTIP": "Выконвае апэрацыі некалькі разоў.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "паўтараць, пакуль", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "паўтараць, пакуль не", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Пакуль значэньне ісьціна, выконваць пэўныя апэрацыі.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Пакуль значэньне хлусьня, выконваць пэўныя апэрацыі.", + "CONTROLS_FOR_TOOLTIP": "Прысвойвае зьменнай \"%1\" значэньні ад пачатковага да канчатковага значэньня, улічваючы зададзены крок, і выконвае абраныя блёкі.", + "CONTROLS_FOR_TITLE": "лічыць з %1 ад %2 да %3 па %4", + "CONTROLS_FOREACH_TITLE": "для кожнага элемэнта %1 у сьпісе %2", + "CONTROLS_FOREACH_TOOLTIP": "Для кожнага элемэнту сьпісу прысвойвае зьменнай '%1' ягонае значэньне і выконвае пэўныя апэрацыі.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "перарваць цыкль", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "працягнуць з наступнага кроку цыклю", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Спыніць гэты цыкль.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Прапусьціць рэшту цыклю і перайсьці да наступнага кроку.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Увага: гэты блёк можа быць выкарыстаны толькі ў цыклі.", + "CONTROLS_IF_TOOLTIP_1": "Калі значэньне ісьціна, выканаць пэўныя апэрацыі.", + "CONTROLS_IF_TOOLTIP_2": "Калі значэньне ісьціна, выканаць першы блёк апэрацыяў, інакш выканаць другі блёк.", + "CONTROLS_IF_TOOLTIP_3": "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў.", + "CONTROLS_IF_TOOLTIP_4": "Калі першае значэньне ісьціна, выканаць першы блёк апэрацыяў. Інакш, калі другое значэньне ісьціна, выканаць другі блёк апэрацыяў. Калі ніводнае з значэньняў не сапраўднае, выканаць апошні блёк апэрацыяў.", + "CONTROLS_IF_MSG_IF": "калі", + "CONTROLS_IF_MSG_ELSEIF": "інакш, калі", + "CONTROLS_IF_MSG_ELSE": "інакш", + "CONTROLS_IF_IF_TOOLTIP": "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку «калі».", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Дадаць умову да блёку «калі».", + "CONTROLS_IF_ELSE_TOOLTIP": "Дадаць заключную ўмову для ўсіх астатніх варыянтаў блёку «калі».", + "LOGIC_COMPARE_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9D%D1%8F%D1%80%D0%BE%D1%9E%D0%BD%D0%B0%D1%81%D1%8C%D1%86%D1%8C", + "LOGIC_COMPARE_TOOLTIP_EQ": "Вяртае «ісьціна», калі абодва ўводы роўныя.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Вяртае «ісьціна», калі абодва ўводы ня роўныя.", + "LOGIC_COMPARE_TOOLTIP_LT": "Вяртае «ісьціна», калі першы ўвод меншы за другі.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Вяртае «ісьціна», калі першы ўвод меншы ці роўны другому.", + "LOGIC_COMPARE_TOOLTIP_GT": "Вяртае «ісьціна», калі першы ўвод большы за другі.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Вяртае «ісьціна», калі першы ўвод большы ці роўны другому.", + "LOGIC_OPERATION_TOOLTIP_AND": "Вяртае «ісьціна», калі абодва ўводы праўдзівыя.", + "LOGIC_OPERATION_AND": "і", + "LOGIC_OPERATION_TOOLTIP_OR": "Вяртае «ісьціна», калі прынамсі адзін з уводаў праўдзівы.", + "LOGIC_OPERATION_OR": "ці", + "LOGIC_NEGATE_TITLE": "не %1", + "LOGIC_NEGATE_TOOLTIP": "Вяртае «ісьціна», калі ўвод непраўдзівы. Вяртае «хлусьня», калі ўвод праўдзівы.", + "LOGIC_BOOLEAN_TRUE": "ісьціна", + "LOGIC_BOOLEAN_FALSE": "хлусьня", + "LOGIC_BOOLEAN_TOOLTIP": "Вяртае «ісьціна» ці «хлусьня».", + "LOGIC_NULL": "нічога", + "LOGIC_NULL_TOOLTIP": "Вяртае нічога.", + "LOGIC_TERNARY_CONDITION": "тэст", + "LOGIC_TERNARY_IF_TRUE": "калі ісьціна", + "LOGIC_TERNARY_IF_FALSE": "калі хлусьня", + "LOGIC_TERNARY_TOOLTIP": "Праверыць умову ў 'тэст'. Калі ўмова праўдзівая, будзе вернутае значэньне «калі ісьціна»; інакш будзе вернутае «калі хлусьня».", + "MATH_NUMBER_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9B%D1%96%D0%BA", + "MATH_NUMBER_TOOLTIP": "Лік.", + "MATH_ARITHMETIC_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%90%D1%80%D1%8B%D1%82%D0%BC%D1%8D%D1%82%D1%8B%D0%BA%D0%B0", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Вяртае суму двух лікаў.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Вяртае рознасьць двух лікаў.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Вяртае здабытак двух лікаў.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Вяртае дзель двух лікаў.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Вяртае першы лік у ступені другога ліку.", + "MATH_SINGLE_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D1%8B_%D0%BA%D0%BE%D1%80%D0%B0%D0%BD%D1%8C", + "MATH_SINGLE_OP_ROOT": "квадратны корань", + "MATH_SINGLE_TOOLTIP_ROOT": "Вяртае квадратны корань ліку.", + "MATH_SINGLE_OP_ABSOLUTE": "модуль", + "MATH_SINGLE_TOOLTIP_ABS": "Вяртае модуль ліку.", + "MATH_SINGLE_TOOLTIP_NEG": "Вяртае супрацьлеглы лік.", + "MATH_SINGLE_TOOLTIP_LN": "Вяртае натуральны лягарытм ліку.", + "MATH_SINGLE_TOOLTIP_LOG10": "Вяртае дзесятковы лягарытм ліку.", + "MATH_SINGLE_TOOLTIP_EXP": "Вяртае e ў ступені ліку.", + "MATH_SINGLE_TOOLTIP_POW10": "Вяртае 10 у ступені ліку.", + "MATH_TRIG_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%A2%D1%80%D1%8B%D0%B3%D0%B0%D0%BD%D0%B0%D0%BC%D1%8D%D1%82%D1%80%D1%8B%D1%8F#.D0.A2.D1.80.D1.8B.D0.B3.D0.B0.D0.BD.D0.B0.D0.BC.D1.8D.D1.82.D1.80.D1.8B.D1.87.D0.BD.D1.8B.D1.8F_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.8B.D1.96", + "MATH_TRIG_TOOLTIP_SIN": "Вяртае сынус кута ў градусах.", + "MATH_TRIG_TOOLTIP_COS": "Вяртае косынус кута ў градусах.", + "MATH_TRIG_TOOLTIP_TAN": "Вяртае тангэнс кута ў градусах.", + "MATH_TRIG_TOOLTIP_ASIN": "Вяртае арксынус ліку.", + "MATH_TRIG_TOOLTIP_ACOS": "Вяртае арккосынус ліку.", + "MATH_TRIG_TOOLTIP_ATAN": "Вяртае арктангэнс ліку.", + "MATH_CONSTANT_HELPURL": "https://be-x-old.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D1%8D%D0%BC%D0%B0%D1%82%D1%8B%D1%87%D0%BD%D0%B0%D1%8F_%D0%BA%D0%B0%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B0", + "MATH_CONSTANT_TOOLTIP": "Вяртае адну з агульных канстантаў: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0,707...) або ∞ (бясконцасьць).", + "MATH_IS_EVEN": "парная", + "MATH_IS_ODD": "няпарная", + "MATH_IS_PRIME": "простая", + "MATH_IS_WHOLE": "цэлая", + "MATH_IS_POSITIVE": "дадатная", + "MATH_IS_NEGATIVE": "адмоўная", + "MATH_IS_DIVISIBLE_BY": "дзеліцца на", + "MATH_IS_TOOLTIP": "Правярае, ці зьяўляецца лік парным, няпарным, простым, станоўчым, адмоўным, ці ён дзеліцца на пэўны лік без астатку. Вяртае значэньне ісьціна або няпраўда.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "зьмяніць %1 на %2", + "MATH_CHANGE_TOOLTIP": "Дадае лічбу да зьменнай '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Акругленьне ліку да большага ці меншага.", + "MATH_ROUND_OPERATOR_ROUND": "акругліць", + "MATH_ROUND_OPERATOR_ROUNDUP": "акругліць да большага", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "акругліць да меншага", + "MATH_ONLIST_OPERATOR_SUM": "Сума сьпісу", + "MATH_ONLIST_TOOLTIP_SUM": "Вяртае суму ўсіх лікаў у сьпісе.", + "MATH_ONLIST_OPERATOR_MIN": "мінімальная ў сьпісе", + "MATH_ONLIST_TOOLTIP_MIN": "Вяртае найменшы лік у сьпісе.", + "MATH_ONLIST_OPERATOR_MAX": "мінімальная ў сьпісе", + "MATH_ONLIST_TOOLTIP_MAX": "Вяртае найменшы лік у сьпісе.", + "MATH_ONLIST_OPERATOR_AVERAGE": "сярэдняя ў сьпісе", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Вяртае сярэднеарытмэтычнае значэньне лікавых значэньняў у сьпісе.", + "MATH_ONLIST_OPERATOR_MEDIAN": "мэдыяна сьпісу", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Вяртае мэдыяну сьпісу.", + "MATH_ONLIST_OPERATOR_MODE": "рэжымы сьпісу", + "MATH_ONLIST_TOOLTIP_MODE": "Вяртае сьпіс самых распаўсюджаных элемэнтаў у сьпісе.", + "MATH_ONLIST_OPERATOR_STD_DEV": "стандартнае адхіленьне сьпісу", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Вяртае стандартнае адхіленьне сьпісу.", + "MATH_ONLIST_OPERATOR_RANDOM": "выпадковы элемэнт сьпісу", + "MATH_ONLIST_TOOLTIP_RANDOM": "Вяртае выпадковы элемэнт сьпісу.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "рэшта дзяленьня %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Вяртае рэшту дзяленьня двух лікаў.", + "MATH_CONSTRAIN_TITLE": "абмежаваць %1 зьнізу %2 зьверху %3", + "MATH_CONSTRAIN_TOOLTIP": "Абмяжоўвае колькасьць ніжняй і верхняй межамі (уключна).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "выпадковая цэлая з %1 для %2", + "MATH_RANDOM_INT_TOOLTIP": "Вяртае выпадковы цэлы лік паміж двума зададзенымі абмежаваньнямі ўключна.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "выпадковая дроб", + "MATH_RANDOM_FLOAT_TOOLTIP": "Вяртае выпадковую дроб у дыяпазоне ад 0,0 (уключна) да 1,0.", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 ад X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Вяртае арктангенс пункту (X, Y) у градусах ад -180 да 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Літара, слова ці радок тэксту.", + "TEXT_JOIN_TITLE_CREATEWITH": "стварыць тэкст з", + "TEXT_JOIN_TOOLTIP": "Стварае фрагмэнт тэксту аб’яднаньнем любой колькасьці элемэнтаў.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "далучыць", + "TEXT_CREATE_JOIN_TOOLTIP": "Дадайце, выдаліце ці зьмяніце парадак разьдзелаў для перадачы тэкставага блёку.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Дадаць элемэнт да тэксту.", + "TEXT_APPEND_TITLE": "да %1 дадаць тэкст %2", + "TEXT_APPEND_TOOLTIP": "Дадаць які-небудзь тэкст да зьменнай '%1'.", + "TEXT_LENGTH_TITLE": "даўжыня %1", + "TEXT_LENGTH_TOOLTIP": "Вяртае колькасьць літараў (у тым ліку прабелы) у пададзеным тэксьце.", + "TEXT_ISEMPTY_TITLE": "%1 пусты", + "TEXT_ISEMPTY_TOOLTIP": "Вяртае значэньне ісьціна, калі тэкст пусты.", + "TEXT_INDEXOF_TOOLTIP": "Вяртае індэкс першага/апошняга ўваходжаньня першага тэксту ў другі тэкст. Вяртае %1, калі тэкст ня знойдзены.", + "TEXT_INDEXOF_TITLE": "у тэксьце %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "знайсьці першае ўваходжаньне тэксту", + "TEXT_INDEXOF_OPERATOR_LAST": "знайсьці апошняе ўваходжаньне тэксту", + "TEXT_CHARAT_TITLE": "у тэксьце %1 %2", + "TEXT_CHARAT_FROM_START": "узяць літару №", + "TEXT_CHARAT_FROM_END": "узяць літару № з канца", + "TEXT_CHARAT_FIRST": "узяць першую літару", + "TEXT_CHARAT_LAST": "узяць апошнюю літару", + "TEXT_CHARAT_RANDOM": "узяць выпадковую літару", + "TEXT_CHARAT_TOOLTIP": "Вяртае літару ў пазначанай пазыцыі.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Вяртае пазначаную частку тэксту.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "у тэксьце", + "TEXT_GET_SUBSTRING_START_FROM_START": "узяць падрадок зь літары №", + "TEXT_GET_SUBSTRING_START_FROM_END": "узяць падрадок зь літары № з канца", + "TEXT_GET_SUBSTRING_START_FIRST": "атрымаць падрадок зь першай літары", + "TEXT_GET_SUBSTRING_END_FROM_START": "да літары №", + "TEXT_GET_SUBSTRING_END_FROM_END": "да літары № з канца", + "TEXT_GET_SUBSTRING_END_LAST": "да апошняй літары", + "TEXT_CHANGECASE_TOOLTIP": "Вярнуць копію тэксту зь іншай велічынёй літар.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "да ВЕРХНЯГА РЭГІСТРУ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "да ніжняга рэгістру", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Вялікія Першыя Літары", + "TEXT_TRIM_TOOLTIP": "Вяртае копію тэксту з прабеламі, выдаленымі ад аднаго ці абодвух бакоў.", + "TEXT_TRIM_OPERATOR_BOTH": "абрэзаць прабелы з абодвух бакоў", + "TEXT_TRIM_OPERATOR_LEFT": "абрэзаць прабелы зь левага боку", + "TEXT_TRIM_OPERATOR_RIGHT": "абрэзаць прабелы з правага боку", + "TEXT_PRINT_TITLE": "друкаваць %1", + "TEXT_PRINT_TOOLTIP": "Надрукаваць пазначаны тэкст, лічбу ці іншыя сымбалі.", + "TEXT_PROMPT_TYPE_TEXT": "запытаць тэкст з падказкай", + "TEXT_PROMPT_TYPE_NUMBER": "запытаць лічбу з падказкай", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Запытаць у карыстальніка лічбу.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Запытаць у карыстальніка тэкст.", + "TEXT_COUNT_MESSAGE0": "падлічыць %1 сярод %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Падлічвае колькі разоў нейкі тэкст сустракаецца ўнутры нейкага іншага тэксту.", + "TEXT_REPLACE_MESSAGE0": "замяніць %1 на %2 у %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Замяняе ўсе выпадкі нейкага тэксту на іншы тэкст.", + "TEXT_REVERSE_MESSAGE0": "адваротна %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Мяняе парадак сымбаляў у тэксьце на адваротны.", + "LISTS_CREATE_EMPTY_TITLE": "стварыць пусты сьпіс", + "LISTS_CREATE_EMPTY_TOOLTIP": "Вяртае сьпіс даўжынёй 0, які ня ўтрымлівае запісаў зьвестак", + "LISTS_CREATE_WITH_TOOLTIP": "Ставарае сьпіс зь любой колькасьцю элемэнтаў.", + "LISTS_CREATE_WITH_INPUT_WITH": "стварыць сьпіс з", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "сьпіс", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Дадаць, выдаліць ці пераставіць сэкцыі для пераканфігураваньня гэтага блёку.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Дадаць элемэнт да сьпісу.", + "LISTS_REPEAT_TOOLTIP": "Стварае сьпіс, які ўтрымлівае пададзеную колькасьць копіяў элемэнту.", + "LISTS_REPEAT_TITLE": "стварыць сьпіс з элемэнту %1, які паўтараецца %2 разоў", + "LISTS_LENGTH_TITLE": "даўжыня %1", + "LISTS_LENGTH_TOOLTIP": "Вяртае даўжыню сьпісу.", + "LISTS_ISEMPTY_TITLE": "%1 пусты", + "LISTS_ISEMPTY_TOOLTIP": "Вяртае значэньне ісьціна, калі сьпіс пусты.", + "LISTS_INLIST": "у сьпісе", + "LISTS_INDEX_OF_FIRST": "знайсьці першае ўваходжаньне элемэнту", + "LISTS_INDEX_OF_LAST": "знайсьці апошняе ўваходжаньне элемэнту", + "LISTS_INDEX_OF_TOOLTIP": "Вяртае індэкс першага/апошняга ўваходжаньня элемэнту ў сьпіс. Вяртае %1, калі элемэнт ня знойдзены.", + "LISTS_GET_INDEX_GET": "атрымаць", + "LISTS_GET_INDEX_GET_REMOVE": "атрымаць і выдаліць", + "LISTS_GET_INDEX_REMOVE": "выдаліць", + "LISTS_GET_INDEX_FROM_END": "№ з канца", + "LISTS_GET_INDEX_FIRST": "першы", + "LISTS_GET_INDEX_LAST": "апошні", + "LISTS_GET_INDEX_RANDOM": "выпадковы", + "LISTS_INDEX_FROM_START_TOOLTIP": "№%1 — першы элемэнт.", + "LISTS_INDEX_FROM_END_TOOLTIP": "№%1 — апошні элемэнт.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Вяртае элемэнт у пазначанай пазыцыі ў сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Вяртае першы элемэнт у сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Вяртае апошні элемэнт у сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Вяртае выпадковы элемэнт у сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Выдаляе і вяртае элемэнт у пазначанай пазыцыі ў сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Выдаляе і вяртае першы элемэнт у сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Выдаляе і вяртае апошні элемэнт у сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Выдаляе і вяртае выпадковы элемэнт у сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Выдаляе элемэнт у пазначанай пазыцыі ў сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Выдаляе першы элемэнт у сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Выдаляе апошні элемэнт у сьпісе.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Выдаляе выпадковы элемэнт у сьпісе.", + "LISTS_SET_INDEX_SET": "усталяваць", + "LISTS_SET_INDEX_INSERT": "уставіць у", + "LISTS_SET_INDEX_INPUT_TO": "як", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Задае элемэнт у пазначанай пазыцыі ў сьпісе.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Задае першы элемэнт у сьпісе.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Задае апошні элемэнт у сьпісе.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Задае выпадковы элемэнт у сьпісе.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Устаўляе элемэнт у пазначанай пазыцыі ў сьпісе.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Устаўляе элемэнт у пачатак сьпісу.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Дадае элемэнт у канец сьпісу.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Выпадковым чынам устаўляе элемэнт у сьпіс.", + "LISTS_GET_SUBLIST_START_FROM_START": "атрымаць падсьпіс з №", + "LISTS_GET_SUBLIST_START_FROM_END": "атрымаць падсьпіс з № з канца", + "LISTS_GET_SUBLIST_START_FIRST": "атрымаць падсьпіс зь першага", + "LISTS_GET_SUBLIST_END_FROM_START": "да #", + "LISTS_GET_SUBLIST_END_FROM_END": "па № з канца", + "LISTS_GET_SUBLIST_END_LAST": "да апошняга", + "LISTS_GET_SUBLIST_TOOLTIP": "Стварае копію пазначанай часткі сьпісу.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "сартаваць %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Сартаваць копію сьпісу.", + "LISTS_SORT_ORDER_ASCENDING": "па павелічэньні", + "LISTS_SORT_ORDER_DESCENDING": "па зьмяншэньні", + "LISTS_SORT_TYPE_NUMERIC": "як лікі", + "LISTS_SORT_TYPE_TEXT": "паводле альфабэту", + "LISTS_SORT_TYPE_IGNORECASE": "паводле альфабэту, ігнараваць рэгістар", + "LISTS_SPLIT_LIST_FROM_TEXT": "стварыць сьпіс з тэксту", + "LISTS_SPLIT_TEXT_FROM_LIST": "стварыць тэкст са сьпісу", + "LISTS_SPLIT_WITH_DELIMITER": "з падзяляльнікам", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Падзяліць тэкст у сьпіс тэкстаў, па падзяляльніках.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Аб’ядноўвае сьпіс тэкстаў у адзін тэкст па падзяляльніках.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "адваротна %1", + "LISTS_REVERSE_TOOLTIP": "Зьмяняе парадак копіі сьпісу на адваротны.", + "VARIABLES_GET_TOOLTIP": "Вяртае значэньне гэтай зьменнай.", + "VARIABLES_GET_CREATE_SET": "Стварыць блёк «усталяваць %1»", + "VARIABLES_SET": "усталяваць %1 да %2", + "VARIABLES_SET_TOOLTIP": "Надаць гэтай зьменнай значэньне ўстаўкі.", + "VARIABLES_SET_CREATE_GET": "Стварыць блёк «атрымаць %1»", + "PROCEDURES_DEFNORETURN_TITLE": "да", + "PROCEDURES_DEFNORETURN_PROCEDURE": "зрабіць што-небудзь", + "PROCEDURES_BEFORE_PARAMS": "з:", + "PROCEDURES_CALL_BEFORE_PARAMS": "з:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Стварае функцыю бяз выніку.", + "PROCEDURES_DEFNORETURN_COMMENT": "Апішыце гэтую функцыю…", + "PROCEDURES_DEFRETURN_RETURN": "вярнуць", + "PROCEDURES_DEFRETURN_TOOLTIP": "Стварае функцыю з вынікам.", + "PROCEDURES_ALLOW_STATEMENTS": "дазволіць зацьвярджэньне", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Увага: гэтая функцыя мае парамэтры-дублікаты.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Запусьціць функцыю вызначаную карыстальнікам '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Запусьціць функцыю вызначаную карыстальнікам '%1' і выкарыстаць яе вынік.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "парамэтры", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Дадаць, выдаліць ці запісаць чаргу ўваходных парамэтраў для гэтай функцыі.", + "PROCEDURES_MUTATORARG_TITLE": "назва парамэтру:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Дадаць уваходныя парамэтры ў функцыю.", + "PROCEDURES_HIGHLIGHT_DEF": "Падсьвяціць вызначэньне функцыі", + "PROCEDURES_CREATE_DO": "Стварыць '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Калі значэньне ісьціна, вярнуць другое значэньне.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Папярэджаньне: гэты блёк можа выкарыстоўвацца толькі ў вызначанай функцыі.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Напішыце што-небудзь…", + "WORKSPACE_ARIA_LABEL": "Працоўная прастора Blockly", + "COLLAPSED_WARNINGS_WARNING": "Згорнутыя блёкі ўтрымліваюць папярэджаньні.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Скасаваць" +} diff --git a/msg/json/be.json b/msg/json/be.json index a4d197de24d..86cdae60d48 100644 --- a/msg/json/be.json +++ b/msg/json/be.json @@ -1,323 +1,323 @@ -{ - "@metadata": { - "authors": [ - "SimondR", - "ZlyiLev" - ] - }, - "VARIABLES_DEFAULT_NAME": "элемент", - "TODAY": "Сёння", - "DUPLICATE_BLOCK": "Дубляваць", - "ADD_COMMENT": "Дадаць каментарый", - "REMOVE_COMMENT": "Выдаліць каментар", - "EXTERNAL_INPUTS": "Знешнія ўваходы", - "INLINE_INPUTS": "Убудаваныя ўваходы", - "DELETE_BLOCK": "Выдаліць блок", - "DELETE_X_BLOCKS": "Выдаліць %1 блокаў", - "DELETE_ALL_BLOCKS": "Выдаліць усе блокі %1?", - "CLEAN_UP": "Выраўнаваць блокі", - "COLLAPSE_BLOCK": "Згарнуць блок", - "COLLAPSE_ALL": "Згарнуць блокі", - "EXPAND_BLOCK": "Разгарнуць блок", - "EXPAND_ALL": "Разгарнуць блокі", - "DISABLE_BLOCK": "Адключыць блок", - "ENABLE_BLOCK": "Уключыць блок", - "HELP": "Даведка", - "UNDO": "Адкаціць", - "REDO": "Паўтарыць", - "CHANGE_VALUE_TITLE": "Змяніць значэння:", - "RENAME_VARIABLE": "Перайменаваць пераменную...", - "RENAME_VARIABLE_TITLE": "Перайменаваць усе пераменныя '%1' да:", - "NEW_VARIABLE": "Стварыць пераменную...", - "NEW_VARIABLE_TITLE": "Новая назва пераменнай:", - "VARIABLE_ALREADY_EXISTS": "Пераменная з назвай '%1' ужо існуе.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Назва пераменнай '%1' ужо выкарыстоўваецца іншай пераменнай тыпу '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Выдаліць %1 выкарыстання пераменнай '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Немагчыма выдаліць пераменную '%1', паколькі яна з’яўляецца часткай вызначэння функцыі '%2'", - "DELETE_VARIABLE": "Выдаліць пераменную '%1'", - "COLOUR_PICKER_HELPURL": "https://be.wikipedia.org/wiki/Колер", - "COLOUR_PICKER_TOOLTIP": "Выбраць колер з палітры.", - "COLOUR_RANDOM_TITLE": "выпадковы колер", - "COLOUR_RANDOM_TOOLTIP": "Выбраць колер наўздагад.", - "COLOUR_RGB_TITLE": "колер з", - "COLOUR_RGB_RED": "чырвоны", - "COLOUR_RGB_GREEN": "зялёны", - "COLOUR_RGB_BLUE": "сіні", - "COLOUR_RGB_TOOLTIP": "Стварыць колер з названымі ўзроўнямі чырвонага, зялёнага і сіняга. Усе значэння павінны быць ад 0 да 100.", - "COLOUR_BLEND_TITLE": "змяшаць", - "COLOUR_BLEND_COLOUR1": "колер 1", - "COLOUR_BLEND_COLOUR2": "колер 2", - "COLOUR_BLEND_RATIO": "суадносіны", - "COLOUR_BLEND_TOOLTIP": "Змешвае два колеры разам у паказаных суадносінах (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://be.wikipedia.org/wiki/Цыкл_(праграмаванне)", - "CONTROLS_REPEAT_TITLE": "паўтарыць %1 разоў", - "CONTROLS_REPEAT_INPUT_DO": "выканаць", - "CONTROLS_REPEAT_TOOLTIP": "Выканаць пэўныя дзеянні некалькі разоў.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "паўтараць, пакуль", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "паўтараць, пакуль не", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Пакуль значэнне ісцінае, выконваць пэўныя дзеянні.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Пакуль значэнне ілжывае, выконваць пэўныя дзеянні.", - "CONTROLS_FOR_TOOLTIP": "Наяўная пераменная '%1' прымае значэнні ад пачатковага да канчатковага, улічваючы зададзены інтэрвал, і выконваюцца названыя блокі.", - "CONTROLS_FOR_TITLE": "лічыць з %1 ад %2 да %3 праз %4", - "CONTROLS_FOREACH_TITLE": "для кожнага элемента %1 у спісе %2", - "CONTROLS_FOREACH_TOOLTIP": "Для кожнага элемента ў спісе пераменная '%1' атрымлівае значэнне элемента, а затым выконваюцца пэўныя дзеянні.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "перарваць цыкл", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "прадоўжыць з наступнай ітэрацыі цыклу", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Перарваць выкананне цыкла.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Прапусціць рэшту гэтага цыкла і перайсці да выканання наступнай ітэрацыі.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Папярэджанне: гэты блок можа быць выкарыстаны толькі ў межах цыклу.", - "CONTROLS_IF_TOOLTIP_1": "Калі значэнне ісцінае, то выканаць пэўныя дзеянні.", - "CONTROLS_IF_TOOLTIP_2": "Калі значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку выконваецца другі блок аператараў.", - "CONTROLS_IF_TOOLTIP_3": "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў.", - "CONTROLS_IF_TOOLTIP_4": "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў. Калі ні адно з значэнняў не з’яўляецца ісціным, то выконваецца апошні блок аператараў.", - "CONTROLS_IF_MSG_IF": "калі", - "CONTROLS_IF_MSG_ELSEIF": "інакш калі", - "CONTROLS_IF_MSG_ELSE": "інакш", - "CONTROLS_IF_IF_TOOLTIP": "Дадайце, выдаліце або змяніце парадак секцыяў, каб пераналадзіць гэты блок 'калі'.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Дадайце ўмову да блоку 'калі'", - "CONTROLS_IF_ELSE_TOOLTIP": "Дадаць канчатковую, ўсёабдымную ўмову ў блок 'калі'.", - "LOGIC_COMPARE_HELPURL": "https://be.wikipedia.org/wiki/Няроўнасць", - "LOGIC_COMPARE_TOOLTIP_EQ": "Вяртае станоўчае значэнне, калі абодва ўводы роўныя адзін аднаму.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Вяртае станоўчае значэнне, калі ўводы не роўныя.", - "LOGIC_COMPARE_TOOLTIP_LT": "Вяртае станоўчае значэнне, калі першы ўвод менш другога.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Вяртае значэнне ісціна, калі першая ўстаўка менш або роўная другі.", - "LOGIC_COMPARE_TOOLTIP_GT": "Вяртае значэнне ісціна, калі першая ўстаўка больш другой.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Вяртае значэнне ісціна, калі першая ўстаўка больш або роўная другой.", - "LOGIC_OPERATION_TOOLTIP_AND": "Вяртае значэнне ісціна, калі абедзве ўстаўкі ісцінныя.", - "LOGIC_OPERATION_AND": "і", - "LOGIC_OPERATION_TOOLTIP_OR": "Вяртае значэнне ісціна, калі хаця б адна з уставак ісцінная.", - "LOGIC_OPERATION_OR": "ці", - "LOGIC_NEGATE_TITLE": "не %1", - "LOGIC_NEGATE_TOOLTIP": "Вяртае значэнне ісціна, калі устаўка ілжывая. Вяртае значэнне хлусня, калі устаўка ісцінная.", - "LOGIC_BOOLEAN_TRUE": "ісціна", - "LOGIC_BOOLEAN_FALSE": "хлусня", - "LOGIC_BOOLEAN_TOOLTIP": "Вяртае значэнне ісціна або хлусня.", - "LOGIC_NULL": "нішто", - "LOGIC_NULL_TOOLTIP": "Вяртае нішто.", - "LOGIC_TERNARY_CONDITION": "абраць па", - "LOGIC_TERNARY_IF_TRUE": "калі ісціна", - "LOGIC_TERNARY_IF_FALSE": "калі хлусня", - "LOGIC_TERNARY_TOOLTIP": "Правярае ўмову выбару. Калі ўмова ісцінная, вяртае першае значэнне, у адваротным выпадку вяртае другое значэнне.", - "MATH_NUMBER_HELPURL": "https://be.wikipedia.org/wiki/Лік", - "MATH_NUMBER_TOOLTIP": "Лік.", - "MATH_ARITHMETIC_HELPURL": "https://be.wikipedia.org/wiki/Арыфметыка", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Вяртае суму двух лікаў.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Вяртае рознасць двух лікаў.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Вяртае твор двух лікаў.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Вяртае дзель ад дзялення першага ліку на другое.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Вяртае першы лік, узведзены ў ступень другога ліку.", - "MATH_SINGLE_HELPURL": "https://be.wikipedia.org/wiki/Квадратны_корань", - "MATH_SINGLE_OP_ROOT": "квадратны корань", - "MATH_SINGLE_TOOLTIP_ROOT": "Вяртае квадратны корань ліку.", - "MATH_SINGLE_OP_ABSOLUTE": "модуль", - "MATH_SINGLE_TOOLTIP_ABS": "Вяртае модуль ліку.", - "MATH_SINGLE_TOOLTIP_NEG": "Вяртае супрацьлеглы лік.", - "MATH_SINGLE_TOOLTIP_LN": "Вяртае натуральны лагарыфм ліку.", - "MATH_SINGLE_TOOLTIP_LOG10": "Вяртае дзесятковы лагарыфм ліку.", - "MATH_SINGLE_TOOLTIP_EXP": "Вяртае е ва ўказанай ступені.", - "MATH_SINGLE_TOOLTIP_POW10": "Вяртае 10 ва ўказанай ступені.", - "MATH_TRIG_HELPURL": "https://be.wikipedia.org/wiki/Трыганаметрычныя_функцыі", - "MATH_TRIG_TOOLTIP_SIN": "Вяртае сінус рага ў градусах.", - "MATH_TRIG_TOOLTIP_COS": "Вяртае косінус рага ў градусах.", - "MATH_TRIG_TOOLTIP_TAN": "Вяртае тангенс рага ў градусах.", - "MATH_TRIG_TOOLTIP_ASIN": "Вяртае арксінус у градусах.", - "MATH_TRIG_TOOLTIP_ACOS": "Вяртае арккосінус у градусах.", - "MATH_TRIG_TOOLTIP_ATAN": "Вяртае арктангенс у градусах.", - "MATH_CONSTANT_HELPURL": "https://be.wikipedia.org/wiki/Матэматычная_канстанта", - "MATH_CONSTANT_TOOLTIP": "Вяртае адну з распаўсюджаных канстант: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), або ∞ (бясконцасць).", - "MATH_IS_EVEN": "цотнае", - "MATH_IS_ODD": "няцотнае", - "MATH_IS_PRIME": "простае", - "MATH_IS_WHOLE": "цэлае", - "MATH_IS_POSITIVE": "станоўчае", - "MATH_IS_NEGATIVE": "адмоўнае", - "MATH_IS_DIVISIBLE_BY": "дзеліцца на", - "MATH_IS_TOOLTIP": "Правярае, ці з’яўляецца лік цотным, няцотным, простым, цэлым, станоўчым, адмоўным ці яно кратнае пэўнаму ліку. Вяртае значэнне ісціна або хлусня.", - "MATH_CHANGE_HELPURL": "https://be.wikipedia.org/wiki/Ідыёма (праграмаванне)", - "MATH_CHANGE_TITLE": "павялічыць %1 на %2", - "MATH_CHANGE_TOOLTIP": "Дадае лік да пераменнай '%1'.", - "MATH_ROUND_HELPURL": "https://be.wikipedia.org/wiki/Акругленне", - "MATH_ROUND_TOOLTIP": "Акругляе лік да большага ці меншага.", - "MATH_ROUND_OPERATOR_ROUND": "акругліць", - "MATH_ROUND_OPERATOR_ROUNDUP": "акругліць да большага", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "акругліць да меншага", - "MATH_ONLIST_OPERATOR_SUM": "сума спіса", - "MATH_ONLIST_TOOLTIP_SUM": "Вяртае суму ўсіх лікаў у спісе.", - "MATH_ONLIST_OPERATOR_MIN": "найменшы ў спісе", - "MATH_ONLIST_TOOLTIP_MIN": "Вяртае найменшы лік спісу.", - "MATH_ONLIST_OPERATOR_MAX": "найбольшы ў спісе", - "MATH_ONLIST_TOOLTIP_MAX": "Вяртае найбольшы лік спісу.", - "MATH_ONLIST_OPERATOR_AVERAGE": "сярэдняе арыфметычнае спісу", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Вяртае сярэдняе арыфметычнае спісу.", - "MATH_ONLIST_OPERATOR_MEDIAN": "медыяна спіса", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Вяртае медыяну спісуа.", - "MATH_ONLIST_OPERATOR_MODE": "моды спіса", - "MATH_ONLIST_TOOLTIP_MODE": "Вяртае спіс найбольш часта сустракаемых элементаў спісу.", - "MATH_ONLIST_OPERATOR_STD_DEV": "стандартнае адхіленне спіса", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Вяртае стандартнае адхіленне спісу.", - "MATH_ONLIST_OPERATOR_RANDOM": "выпадковы элемент спіса", - "MATH_ONLIST_TOOLTIP_RANDOM": "Вяртае выпадковы элемент спіса.", - "MATH_MODULO_HELPURL": "https://be.wikipedia.org/wiki/Дзяленне_з_астаткам", - "MATH_MODULO_TITLE": "астатак ад %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Вяртае астатак ад дзялення двух лікаў.", - "MATH_CONSTRAIN_TITLE": "абмежаваць %1 знізу %2 зверху %3", - "MATH_CONSTRAIN_TOOLTIP": "Абмяжоўвае лік ніжняй і верхняй межамі (уключна).", - "MATH_RANDOM_INT_HELPURL": "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў", - "MATH_RANDOM_INT_TITLE": "выпадковы цэлы лік ад %1 для %2", - "MATH_RANDOM_INT_TOOLTIP": "Вяртае выпадковы лік паміж двума зададзенымі межамі (уключаючы і іх).", - "MATH_RANDOM_FLOAT_HELPURL": "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "выпадковы лік ад 0 (уключна) да 1", - "MATH_RANDOM_FLOAT_TOOLTIP": "Вяртае выпадковы лік ад 0.0 (уключна) да 1.0.", - "TEXT_TEXT_HELPURL": "https://be.wikipedia.org/wiki/Радковы_тып", - "TEXT_TEXT_TOOLTIP": "Літара, слова або радок тэксту.", - "TEXT_JOIN_TITLE_CREATEWITH": "стварыць тэкст з", - "TEXT_JOIN_TOOLTIP": "Стварае фрагмент тэксту, аб'ядноўваючы любы лік элементаў.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "спалучыць", - "TEXT_CREATE_JOIN_TOOLTIP": "Дадайце, выдаліце, перастаўце фрагменты для пераробкі тэкставага блока.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Дадаць элемент да тэксту.", - "TEXT_APPEND_TITLE": "да %1 дадаць тэкст %2", - "TEXT_APPEND_TOOLTIP": "Дадаць тэкст да пераменнай '%1'.", - "TEXT_LENGTH_TITLE": "даўжыня %1", - "TEXT_LENGTH_TOOLTIP": "Вяртае колькасць сімвалаў (уключаючы прабелы) у зададзеным тэксце.", - "TEXT_ISEMPTY_TITLE": "%1 пусты", - "TEXT_ISEMPTY_TOOLTIP": "Вяртае значэнне ісціна, калі пададзены тэкст пусты.", - "TEXT_INDEXOF_TOOLTIP": "Вяртае нумар пазіцыі першага/апошняга ўваходжання першага тэксту ў другім. Вяртае %1, калі тэкст не знойдзены.", - "TEXT_INDEXOF_TITLE": "у тэксце %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "знайсці першае ўваходжанне тэксту", - "TEXT_INDEXOF_OPERATOR_LAST": "знайсці апошняе ўваходжанне тэксту", - "TEXT_CHARAT_TITLE": "у тэксце %1 %2", - "TEXT_CHARAT_FROM_START": "узяць літару #", - "TEXT_CHARAT_FROM_END": "узяць літару # з канца", - "TEXT_CHARAT_FIRST": "узяць першую літару", - "TEXT_CHARAT_LAST": "узяць апошнюю літару", - "TEXT_CHARAT_RANDOM": "узяць выпадковую літару", - "TEXT_CHARAT_TOOLTIP": "Вяртае літару ў названай пазіцыі.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Вяртае указаную частку тэксту.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "у тэксце", - "TEXT_GET_SUBSTRING_START_FROM_START": "узяць падрадок з літары #", - "TEXT_GET_SUBSTRING_START_FROM_END": "узяць падрадок з літары # з канца", - "TEXT_GET_SUBSTRING_START_FIRST": "узяць падрадок з першай літары", - "TEXT_GET_SUBSTRING_END_FROM_START": "па літару #", - "TEXT_GET_SUBSTRING_END_FROM_END": "па літару # з канца", - "TEXT_GET_SUBSTRING_END_LAST": "па апошнюю літару", - "TEXT_CHANGECASE_TOOLTIP": "Вяртае копію тэксту з ВЯЛІКІМІ або малымі літарамі.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "у ВЯЛІКІХ ЛІТАРАЎ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "у малыя літары", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "у Загалоўныя Пачатковыя Літары", - "TEXT_TRIM_TOOLTIP": "Вяртае копію тэксту з прагаламі, выдаленымі з аднаго або абодвух канцоў.", - "TEXT_TRIM_OPERATOR_BOTH": "абрэзаць прагалы з двух бакоў", - "TEXT_TRIM_OPERATOR_LEFT": "абрэзаць прагалы злева", - "TEXT_TRIM_OPERATOR_RIGHT": "абрэзаць прагалы справа", - "TEXT_PRINT_TITLE": "надрукаваць %1", - "TEXT_PRINT_TOOLTIP": "Друкуе тэкст, лік або іншы аб'ект.", - "TEXT_PROMPT_TYPE_TEXT": "запытаць тэкст з падказкай", - "TEXT_PROMPT_TYPE_NUMBER": "запытаць лік з падказкай", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Запытаць у карыстальніка лік.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Запытаць у карыстальніка тэкст.", - "TEXT_COUNT_MESSAGE0": "падлічыць колькасць %1 у %2", - "TEXT_COUNT_TOOLTIP": "Падлічыць, колькі разоў урывак тэксту з’яўляецца ў іншым тэксце.", - "TEXT_REPLACE_MESSAGE0": "замяніць %1 на %2 у %3", - "TEXT_REPLACE_TOOLTIP": "Замяніць усе ўваходжанні некаторага тэксту іншым тэкстам.", - "TEXT_REVERSE_MESSAGE0": "змяніць парадак на зваротны %1", - "TEXT_REVERSE_TOOLTIP": "Мяняе парадак знакаў у тэксце на адваротны.", - "LISTS_CREATE_EMPTY_TITLE": "стварыць пусты спіс", - "LISTS_CREATE_EMPTY_TOOLTIP": "Вяртае спіс даўжыні 0, які не ўтрымлівае дадзеных", - "LISTS_CREATE_WITH_TOOLTIP": "Стварае спіс з любым лікам элементаў.", - "LISTS_CREATE_WITH_INPUT_WITH": "стварыць спіс з", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "спіс", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Дадайце, выдаліце, перастаўце элементы для пераробкі блока спісу.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Дадае элемент да спісу.", - "LISTS_REPEAT_TOOLTIP": "Стварае спіс, які складаецца з зададзенага ліку копій элемента.", - "LISTS_REPEAT_TITLE": "стварыць спіс з элемента %1, паўтаральнага %2 разоў", - "LISTS_LENGTH_TITLE": "даўжыня %1", - "LISTS_LENGTH_TOOLTIP": "Вяртае даўжыню спісу.", - "LISTS_ISEMPTY_TITLE": "%1 пусты", - "LISTS_ISEMPTY_TOOLTIP": "Вяртае значэнне ісціна, калі спіс пусты.", - "LISTS_INLIST": "у спісе", - "LISTS_INDEX_OF_FIRST": "знайсці першае ўваходжанне элемента", - "LISTS_INDEX_OF_LAST": "знайсці апошняе ўваходжанне элемента", - "LISTS_INDEX_OF_TOOLTIP": "Вяртае нумар пазіцыі першага/апошняга ўваходжання элемента ў спісе. Вяртае %1, калі элемент не знойдзены.", - "LISTS_GET_INDEX_GET": "узяць", - "LISTS_GET_INDEX_GET_REMOVE": "узяць і выдаліць", - "LISTS_GET_INDEX_REMOVE": "выдаліць", - "LISTS_GET_INDEX_FROM_END": "# з канца", - "LISTS_GET_INDEX_FIRST": "першы", - "LISTS_GET_INDEX_LAST": "апошні", - "LISTS_GET_INDEX_RANDOM": "адвольны", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 - першы элемент.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 - апошні элемент.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Вяртае элемент ва ўказанай пазіцыі спіса.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Вяртае першы элемент спіса.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Вяртае апошні элемент спіса.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Вяртае выпадковы элемент спіса.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Выдаляе і вяртае элемент ва ўказанай пазіцыі спіса.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Видаляє і повертає перший елемент списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Видаляє і повертає апошні элемент спіса.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Видаляє і повертає выпадковы элемент спіса.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Видаляє элемент ва ўказанай пазіцыі спіса.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Видаляє першы элемент спіса.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Видаляє апошні элемент спіса.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Видаляє выпадковы элемент спіса.", - "LISTS_SET_INDEX_SET": "прысабечыць", - "LISTS_SET_INDEX_INSERT": "уставіць у", - "LISTS_SET_INDEX_INPUT_TO": "=", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Прысабечвае значэнне элемента ва ўказанай пазіцыі спіса.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Прысабечвае значэнне элемента спісу.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Прысабечвае значэнне элемента спісу.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Прысабечвае значэнне элемента спісу.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Устаўляе элемент ва ўказанай пазіцыі спіса.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Устаўляе элемент у пачатак спіса.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Дадае элемент у канец спісу.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Устаўляе элемент у выпадковае месца ў спісе.", - "LISTS_GET_SUBLIST_START_FROM_START": "узяць падспіс з #", - "LISTS_GET_SUBLIST_START_FROM_END": "узяць падспіс з # з канца", - "LISTS_GET_SUBLIST_START_FIRST": "узяць падспіс з першага", - "LISTS_GET_SUBLIST_END_FROM_START": "па #", - "LISTS_GET_SUBLIST_END_FROM_END": "па # з канца", - "LISTS_GET_SUBLIST_END_LAST": "па апошні", - "LISTS_GET_SUBLIST_TOOLTIP": "Стварае копію ўказанай частцы спісу.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "сартаваць %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Сартаваць копію спісу.", - "LISTS_SORT_ORDER_ASCENDING": "па ўзрастанню", - "LISTS_SORT_ORDER_DESCENDING": "па спаданню", - "LISTS_SORT_TYPE_NUMERIC": "лікавая", - "LISTS_SORT_TYPE_TEXT": "па алфавіце", - "LISTS_SORT_TYPE_IGNORECASE": "па алфавіце, без уліку рэгістра", - "LISTS_SPLIT_LIST_FROM_TEXT": "зрабіць спіс з тэксту", - "LISTS_SPLIT_TEXT_FROM_LIST": "сабраць тэкст са спісу", - "LISTS_SPLIT_WITH_DELIMITER": "з падзельнікам", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Разбівае тэкст у спіс тэкстаў па падзельнікам.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Злучае спіс тэкстаў у адзін тэкст з падзельнікамі.", - "LISTS_REVERSE_MESSAGE0": "змяніць парадак на зваротны %1", - "LISTS_REVERSE_TOOLTIP": "Змяніць парадак спісу на адваротны.", - "VARIABLES_GET_TOOLTIP": "Вяртае значэнне гэтай пераменнай.", - "VARIABLES_GET_CREATE_SET": "Стварыць блок \"прысабечыць\" для %1", - "VARIABLES_SET": "прысабечыць %1 = %2", - "VARIABLES_SET_TOOLTIP": "Прысабечвае пераменнай значэнне ўстаўкі.", - "VARIABLES_SET_CREATE_GET": "Стварыць устаўку %1", - "PROCEDURES_DEFNORETURN_TITLE": "каб", - "PROCEDURES_DEFNORETURN_PROCEDURE": "выканаць нешта", - "PROCEDURES_BEFORE_PARAMS": "з:", - "PROCEDURES_CALL_BEFORE_PARAMS": "з:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Стварыць працэдуру, якая ня вяртае значэнне.", - "PROCEDURES_DEFNORETURN_COMMENT": "Апішыце гэтую функцыю...", - "PROCEDURES_DEFRETURN_RETURN": "вярнуць", - "PROCEDURES_DEFRETURN_TOOLTIP": "Стварыць працэдуру, якая вяртае значэнне.", - "PROCEDURES_ALLOW_STATEMENTS": "дазволіць аператары", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Папярэджанне: гэтая функцыя мае паўтаральныя параметры.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://be.wikipedia.org/wiki/Падпраграма", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Выконвае вызначаную карыстальнікам працэдуру '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://be.wikipedia.org/wiki/Падпраграма", - "PROCEDURES_CALLRETURN_TOOLTIP": "Выконвае вызначаную карыстальнікам працэдуру '%1' і вяртае вылічанае значэнне.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "параметры", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Дадаць, выдаліць або змяніць парадак уваходных параметраў для гэтай функцыі.", - "PROCEDURES_MUTATORARG_TITLE": "імя параметра:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Дадаць уваходны параметр ў функцыю.", - "PROCEDURES_HIGHLIGHT_DEF": "Вылучыць вызначэнне працэдуры", - "PROCEDURES_CREATE_DO": "Стварыць выклік '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Калі першае значэнне ісцінае, вяртае другое значэнне.", - "PROCEDURES_IFRETURN_WARNING": "Папярэджанне: гэты блок можа выкарыстоўвацца толькі ўнутры вызначэння функцыі.", - "DIALOG_OK": "Добра", - "DIALOG_CANCEL": "Адмяніць" -} +{ + "@metadata": { + "authors": [ + "SimondR", + "ZlyiLev" + ] + }, + "VARIABLES_DEFAULT_NAME": "элемент", + "TODAY": "Сёння", + "DUPLICATE_BLOCK": "Дубляваць", + "ADD_COMMENT": "Дадаць каментарый", + "REMOVE_COMMENT": "Выдаліць каментар", + "EXTERNAL_INPUTS": "Знешнія ўваходы", + "INLINE_INPUTS": "Убудаваныя ўваходы", + "DELETE_BLOCK": "Выдаліць блок", + "DELETE_X_BLOCKS": "Выдаліць %1 блокаў", + "DELETE_ALL_BLOCKS": "Выдаліць усе блокі %1?", + "CLEAN_UP": "Выраўнаваць блокі", + "COLLAPSE_BLOCK": "Згарнуць блок", + "COLLAPSE_ALL": "Згарнуць блокі", + "EXPAND_BLOCK": "Разгарнуць блок", + "EXPAND_ALL": "Разгарнуць блокі", + "DISABLE_BLOCK": "Адключыць блок", + "ENABLE_BLOCK": "Уключыць блок", + "HELP": "Даведка", + "UNDO": "Адкаціць", + "REDO": "Паўтарыць", + "CHANGE_VALUE_TITLE": "Змяніць значэння:", + "RENAME_VARIABLE": "Перайменаваць пераменную...", + "RENAME_VARIABLE_TITLE": "Перайменаваць усе пераменныя '%1' да:", + "NEW_VARIABLE": "Стварыць пераменную...", + "NEW_VARIABLE_TITLE": "Новая назва пераменнай:", + "VARIABLE_ALREADY_EXISTS": "Пераменная з назвай '%1' ужо існуе.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Назва пераменнай '%1' ужо выкарыстоўваецца іншай пераменнай тыпу '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Выдаліць %1 выкарыстання пераменнай '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Немагчыма выдаліць пераменную '%1', паколькі яна з’яўляецца часткай вызначэння функцыі '%2'", + "DELETE_VARIABLE": "Выдаліць пераменную '%1'", + "COLOUR_PICKER_HELPURL": "https://be.wikipedia.org/wiki/Колер", + "COLOUR_PICKER_TOOLTIP": "Выбраць колер з палітры.", + "COLOUR_RANDOM_TITLE": "выпадковы колер", + "COLOUR_RANDOM_TOOLTIP": "Выбраць колер наўздагад.", + "COLOUR_RGB_TITLE": "колер з", + "COLOUR_RGB_RED": "чырвоны", + "COLOUR_RGB_GREEN": "зялёны", + "COLOUR_RGB_BLUE": "сіні", + "COLOUR_RGB_TOOLTIP": "Стварыць колер з названымі ўзроўнямі чырвонага, зялёнага і сіняга. Усе значэння павінны быць ад 0 да 100.", + "COLOUR_BLEND_TITLE": "змяшаць", + "COLOUR_BLEND_COLOUR1": "колер 1", + "COLOUR_BLEND_COLOUR2": "колер 2", + "COLOUR_BLEND_RATIO": "суадносіны", + "COLOUR_BLEND_TOOLTIP": "Змешвае два колеры разам у паказаных суадносінах (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://be.wikipedia.org/wiki/Цыкл_(праграмаванне)", + "CONTROLS_REPEAT_TITLE": "паўтарыць %1 разоў", + "CONTROLS_REPEAT_INPUT_DO": "выканаць", + "CONTROLS_REPEAT_TOOLTIP": "Выканаць пэўныя дзеянні некалькі разоў.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "паўтараць, пакуль", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "паўтараць, пакуль не", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Пакуль значэнне ісцінае, выконваць пэўныя дзеянні.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Пакуль значэнне ілжывае, выконваць пэўныя дзеянні.", + "CONTROLS_FOR_TOOLTIP": "Наяўная пераменная '%1' прымае значэнні ад пачатковага да канчатковага, улічваючы зададзены інтэрвал, і выконваюцца названыя блокі.", + "CONTROLS_FOR_TITLE": "лічыць з %1 ад %2 да %3 праз %4", + "CONTROLS_FOREACH_TITLE": "для кожнага элемента %1 у спісе %2", + "CONTROLS_FOREACH_TOOLTIP": "Для кожнага элемента ў спісе пераменная '%1' атрымлівае значэнне элемента, а затым выконваюцца пэўныя дзеянні.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "перарваць цыкл", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "прадоўжыць з наступнай ітэрацыі цыклу", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Перарваць выкананне цыкла.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Прапусціць рэшту гэтага цыкла і перайсці да выканання наступнай ітэрацыі.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Папярэджанне: гэты блок можа быць выкарыстаны толькі ў межах цыклу.", + "CONTROLS_IF_TOOLTIP_1": "Калі значэнне ісцінае, то выканаць пэўныя дзеянні.", + "CONTROLS_IF_TOOLTIP_2": "Калі значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку выконваецца другі блок аператараў.", + "CONTROLS_IF_TOOLTIP_3": "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў.", + "CONTROLS_IF_TOOLTIP_4": "Калі першае значэнне ісцінае, то выконваецца першы блок аператараў. У адваротным выпадку, калі другое значэнне ісцінае, то выконваецца другі блок аператараў. Калі ні адно з значэнняў не з’яўляецца ісціным, то выконваецца апошні блок аператараў.", + "CONTROLS_IF_MSG_IF": "калі", + "CONTROLS_IF_MSG_ELSEIF": "інакш калі", + "CONTROLS_IF_MSG_ELSE": "інакш", + "CONTROLS_IF_IF_TOOLTIP": "Дадайце, выдаліце або змяніце парадак секцыяў, каб пераналадзіць гэты блок 'калі'.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Дадайце ўмову да блоку 'калі'", + "CONTROLS_IF_ELSE_TOOLTIP": "Дадаць канчатковую, ўсёабдымную ўмову ў блок 'калі'.", + "LOGIC_COMPARE_HELPURL": "https://be.wikipedia.org/wiki/Няроўнасць", + "LOGIC_COMPARE_TOOLTIP_EQ": "Вяртае станоўчае значэнне, калі абодва ўводы роўныя адзін аднаму.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Вяртае станоўчае значэнне, калі ўводы не роўныя.", + "LOGIC_COMPARE_TOOLTIP_LT": "Вяртае станоўчае значэнне, калі першы ўвод менш другога.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Вяртае значэнне ісціна, калі першая ўстаўка менш або роўная другі.", + "LOGIC_COMPARE_TOOLTIP_GT": "Вяртае значэнне ісціна, калі першая ўстаўка больш другой.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Вяртае значэнне ісціна, калі першая ўстаўка больш або роўная другой.", + "LOGIC_OPERATION_TOOLTIP_AND": "Вяртае значэнне ісціна, калі абедзве ўстаўкі ісцінныя.", + "LOGIC_OPERATION_AND": "і", + "LOGIC_OPERATION_TOOLTIP_OR": "Вяртае значэнне ісціна, калі хаця б адна з уставак ісцінная.", + "LOGIC_OPERATION_OR": "ці", + "LOGIC_NEGATE_TITLE": "не %1", + "LOGIC_NEGATE_TOOLTIP": "Вяртае значэнне ісціна, калі устаўка ілжывая. Вяртае значэнне хлусня, калі устаўка ісцінная.", + "LOGIC_BOOLEAN_TRUE": "ісціна", + "LOGIC_BOOLEAN_FALSE": "хлусня", + "LOGIC_BOOLEAN_TOOLTIP": "Вяртае значэнне ісціна або хлусня.", + "LOGIC_NULL": "нішто", + "LOGIC_NULL_TOOLTIP": "Вяртае нішто.", + "LOGIC_TERNARY_CONDITION": "абраць па", + "LOGIC_TERNARY_IF_TRUE": "калі ісціна", + "LOGIC_TERNARY_IF_FALSE": "калі хлусня", + "LOGIC_TERNARY_TOOLTIP": "Правярае ўмову выбару. Калі ўмова ісцінная, вяртае першае значэнне, у адваротным выпадку вяртае другое значэнне.", + "MATH_NUMBER_HELPURL": "https://be.wikipedia.org/wiki/Лік", + "MATH_NUMBER_TOOLTIP": "Лік.", + "MATH_ARITHMETIC_HELPURL": "https://be.wikipedia.org/wiki/Арыфметыка", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Вяртае суму двух лікаў.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Вяртае рознасць двух лікаў.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Вяртае твор двух лікаў.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Вяртае дзель ад дзялення першага ліку на другое.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Вяртае першы лік, узведзены ў ступень другога ліку.", + "MATH_SINGLE_HELPURL": "https://be.wikipedia.org/wiki/Квадратны_корань", + "MATH_SINGLE_OP_ROOT": "квадратны корань", + "MATH_SINGLE_TOOLTIP_ROOT": "Вяртае квадратны корань ліку.", + "MATH_SINGLE_OP_ABSOLUTE": "модуль", + "MATH_SINGLE_TOOLTIP_ABS": "Вяртае модуль ліку.", + "MATH_SINGLE_TOOLTIP_NEG": "Вяртае супрацьлеглы лік.", + "MATH_SINGLE_TOOLTIP_LN": "Вяртае натуральны лагарыфм ліку.", + "MATH_SINGLE_TOOLTIP_LOG10": "Вяртае дзесятковы лагарыфм ліку.", + "MATH_SINGLE_TOOLTIP_EXP": "Вяртае е ва ўказанай ступені.", + "MATH_SINGLE_TOOLTIP_POW10": "Вяртае 10 ва ўказанай ступені.", + "MATH_TRIG_HELPURL": "https://be.wikipedia.org/wiki/Трыганаметрычныя_функцыі", + "MATH_TRIG_TOOLTIP_SIN": "Вяртае сінус рага ў градусах.", + "MATH_TRIG_TOOLTIP_COS": "Вяртае косінус рага ў градусах.", + "MATH_TRIG_TOOLTIP_TAN": "Вяртае тангенс рага ў градусах.", + "MATH_TRIG_TOOLTIP_ASIN": "Вяртае арксінус у градусах.", + "MATH_TRIG_TOOLTIP_ACOS": "Вяртае арккосінус у градусах.", + "MATH_TRIG_TOOLTIP_ATAN": "Вяртае арктангенс у градусах.", + "MATH_CONSTANT_HELPURL": "https://be.wikipedia.org/wiki/Матэматычная_канстанта", + "MATH_CONSTANT_TOOLTIP": "Вяртае адну з распаўсюджаных канстант: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), або ∞ (бясконцасць).", + "MATH_IS_EVEN": "цотнае", + "MATH_IS_ODD": "няцотнае", + "MATH_IS_PRIME": "простае", + "MATH_IS_WHOLE": "цэлае", + "MATH_IS_POSITIVE": "станоўчае", + "MATH_IS_NEGATIVE": "адмоўнае", + "MATH_IS_DIVISIBLE_BY": "дзеліцца на", + "MATH_IS_TOOLTIP": "Правярае, ці з’яўляецца лік цотным, няцотным, простым, цэлым, станоўчым, адмоўным ці яно кратнае пэўнаму ліку. Вяртае значэнне ісціна або хлусня.", + "MATH_CHANGE_HELPURL": "https://be.wikipedia.org/wiki/Ідыёма (праграмаванне)", + "MATH_CHANGE_TITLE": "павялічыць %1 на %2", + "MATH_CHANGE_TOOLTIP": "Дадае лік да пераменнай '%1'.", + "MATH_ROUND_HELPURL": "https://be.wikipedia.org/wiki/Акругленне", + "MATH_ROUND_TOOLTIP": "Акругляе лік да большага ці меншага.", + "MATH_ROUND_OPERATOR_ROUND": "акругліць", + "MATH_ROUND_OPERATOR_ROUNDUP": "акругліць да большага", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "акругліць да меншага", + "MATH_ONLIST_OPERATOR_SUM": "сума спіса", + "MATH_ONLIST_TOOLTIP_SUM": "Вяртае суму ўсіх лікаў у спісе.", + "MATH_ONLIST_OPERATOR_MIN": "найменшы ў спісе", + "MATH_ONLIST_TOOLTIP_MIN": "Вяртае найменшы лік спісу.", + "MATH_ONLIST_OPERATOR_MAX": "найбольшы ў спісе", + "MATH_ONLIST_TOOLTIP_MAX": "Вяртае найбольшы лік спісу.", + "MATH_ONLIST_OPERATOR_AVERAGE": "сярэдняе арыфметычнае спісу", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Вяртае сярэдняе арыфметычнае спісу.", + "MATH_ONLIST_OPERATOR_MEDIAN": "медыяна спіса", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Вяртае медыяну спісуа.", + "MATH_ONLIST_OPERATOR_MODE": "моды спіса", + "MATH_ONLIST_TOOLTIP_MODE": "Вяртае спіс найбольш часта сустракаемых элементаў спісу.", + "MATH_ONLIST_OPERATOR_STD_DEV": "стандартнае адхіленне спіса", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Вяртае стандартнае адхіленне спісу.", + "MATH_ONLIST_OPERATOR_RANDOM": "выпадковы элемент спіса", + "MATH_ONLIST_TOOLTIP_RANDOM": "Вяртае выпадковы элемент спіса.", + "MATH_MODULO_HELPURL": "https://be.wikipedia.org/wiki/Дзяленне_з_астаткам", + "MATH_MODULO_TITLE": "астатак ад %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Вяртае астатак ад дзялення двух лікаў.", + "MATH_CONSTRAIN_TITLE": "абмежаваць %1 знізу %2 зверху %3", + "MATH_CONSTRAIN_TOOLTIP": "Абмяжоўвае лік ніжняй і верхняй межамі (уключна).", + "MATH_RANDOM_INT_HELPURL": "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў", + "MATH_RANDOM_INT_TITLE": "выпадковы цэлы лік ад %1 для %2", + "MATH_RANDOM_INT_TOOLTIP": "Вяртае выпадковы лік паміж двума зададзенымі межамі (уключаючы і іх).", + "MATH_RANDOM_FLOAT_HELPURL": "https://be.wikipedia.org/wiki/Генератар_псевдослучайных_лікаў", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "выпадковы лік ад 0 (уключна) да 1", + "MATH_RANDOM_FLOAT_TOOLTIP": "Вяртае выпадковы лік ад 0.0 (уключна) да 1.0.", + "TEXT_TEXT_HELPURL": "https://be.wikipedia.org/wiki/Радковы_тып", + "TEXT_TEXT_TOOLTIP": "Літара, слова або радок тэксту.", + "TEXT_JOIN_TITLE_CREATEWITH": "стварыць тэкст з", + "TEXT_JOIN_TOOLTIP": "Стварае фрагмент тэксту, аб'ядноўваючы любы лік элементаў.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "спалучыць", + "TEXT_CREATE_JOIN_TOOLTIP": "Дадайце, выдаліце, перастаўце фрагменты для пераробкі тэкставага блока.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Дадаць элемент да тэксту.", + "TEXT_APPEND_TITLE": "да %1 дадаць тэкст %2", + "TEXT_APPEND_TOOLTIP": "Дадаць тэкст да пераменнай '%1'.", + "TEXT_LENGTH_TITLE": "даўжыня %1", + "TEXT_LENGTH_TOOLTIP": "Вяртае колькасць сімвалаў (уключаючы прабелы) у зададзеным тэксце.", + "TEXT_ISEMPTY_TITLE": "%1 пусты", + "TEXT_ISEMPTY_TOOLTIP": "Вяртае значэнне ісціна, калі пададзены тэкст пусты.", + "TEXT_INDEXOF_TOOLTIP": "Вяртае нумар пазіцыі першага/апошняга ўваходжання першага тэксту ў другім. Вяртае %1, калі тэкст не знойдзены.", + "TEXT_INDEXOF_TITLE": "у тэксце %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "знайсці першае ўваходжанне тэксту", + "TEXT_INDEXOF_OPERATOR_LAST": "знайсці апошняе ўваходжанне тэксту", + "TEXT_CHARAT_TITLE": "у тэксце %1 %2", + "TEXT_CHARAT_FROM_START": "узяць літару #", + "TEXT_CHARAT_FROM_END": "узяць літару # з канца", + "TEXT_CHARAT_FIRST": "узяць першую літару", + "TEXT_CHARAT_LAST": "узяць апошнюю літару", + "TEXT_CHARAT_RANDOM": "узяць выпадковую літару", + "TEXT_CHARAT_TOOLTIP": "Вяртае літару ў названай пазіцыі.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Вяртае указаную частку тэксту.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "у тэксце", + "TEXT_GET_SUBSTRING_START_FROM_START": "узяць падрадок з літары #", + "TEXT_GET_SUBSTRING_START_FROM_END": "узяць падрадок з літары # з канца", + "TEXT_GET_SUBSTRING_START_FIRST": "узяць падрадок з першай літары", + "TEXT_GET_SUBSTRING_END_FROM_START": "па літару #", + "TEXT_GET_SUBSTRING_END_FROM_END": "па літару # з канца", + "TEXT_GET_SUBSTRING_END_LAST": "па апошнюю літару", + "TEXT_CHANGECASE_TOOLTIP": "Вяртае копію тэксту з ВЯЛІКІМІ або малымі літарамі.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "у ВЯЛІКІХ ЛІТАРАЎ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "у малыя літары", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "у Загалоўныя Пачатковыя Літары", + "TEXT_TRIM_TOOLTIP": "Вяртае копію тэксту з прагаламі, выдаленымі з аднаго або абодвух канцоў.", + "TEXT_TRIM_OPERATOR_BOTH": "абрэзаць прагалы з двух бакоў", + "TEXT_TRIM_OPERATOR_LEFT": "абрэзаць прагалы злева", + "TEXT_TRIM_OPERATOR_RIGHT": "абрэзаць прагалы справа", + "TEXT_PRINT_TITLE": "надрукаваць %1", + "TEXT_PRINT_TOOLTIP": "Друкуе тэкст, лік або іншы аб'ект.", + "TEXT_PROMPT_TYPE_TEXT": "запытаць тэкст з падказкай", + "TEXT_PROMPT_TYPE_NUMBER": "запытаць лік з падказкай", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Запытаць у карыстальніка лік.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Запытаць у карыстальніка тэкст.", + "TEXT_COUNT_MESSAGE0": "падлічыць колькасць %1 у %2", + "TEXT_COUNT_TOOLTIP": "Падлічыць, колькі разоў урывак тэксту з’яўляецца ў іншым тэксце.", + "TEXT_REPLACE_MESSAGE0": "замяніць %1 на %2 у %3", + "TEXT_REPLACE_TOOLTIP": "Замяніць усе ўваходжанні некаторага тэксту іншым тэкстам.", + "TEXT_REVERSE_MESSAGE0": "змяніць парадак на зваротны %1", + "TEXT_REVERSE_TOOLTIP": "Мяняе парадак знакаў у тэксце на адваротны.", + "LISTS_CREATE_EMPTY_TITLE": "стварыць пусты спіс", + "LISTS_CREATE_EMPTY_TOOLTIP": "Вяртае спіс даўжыні 0, які не ўтрымлівае дадзеных", + "LISTS_CREATE_WITH_TOOLTIP": "Стварае спіс з любым лікам элементаў.", + "LISTS_CREATE_WITH_INPUT_WITH": "стварыць спіс з", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "спіс", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Дадайце, выдаліце, перастаўце элементы для пераробкі блока спісу.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Дадае элемент да спісу.", + "LISTS_REPEAT_TOOLTIP": "Стварае спіс, які складаецца з зададзенага ліку копій элемента.", + "LISTS_REPEAT_TITLE": "стварыць спіс з элемента %1, паўтаральнага %2 разоў", + "LISTS_LENGTH_TITLE": "даўжыня %1", + "LISTS_LENGTH_TOOLTIP": "Вяртае даўжыню спісу.", + "LISTS_ISEMPTY_TITLE": "%1 пусты", + "LISTS_ISEMPTY_TOOLTIP": "Вяртае значэнне ісціна, калі спіс пусты.", + "LISTS_INLIST": "у спісе", + "LISTS_INDEX_OF_FIRST": "знайсці першае ўваходжанне элемента", + "LISTS_INDEX_OF_LAST": "знайсці апошняе ўваходжанне элемента", + "LISTS_INDEX_OF_TOOLTIP": "Вяртае нумар пазіцыі першага/апошняга ўваходжання элемента ў спісе. Вяртае %1, калі элемент не знойдзены.", + "LISTS_GET_INDEX_GET": "узяць", + "LISTS_GET_INDEX_GET_REMOVE": "узяць і выдаліць", + "LISTS_GET_INDEX_REMOVE": "выдаліць", + "LISTS_GET_INDEX_FROM_END": "# з канца", + "LISTS_GET_INDEX_FIRST": "першы", + "LISTS_GET_INDEX_LAST": "апошні", + "LISTS_GET_INDEX_RANDOM": "адвольны", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 - першы элемент.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 - апошні элемент.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Вяртае элемент ва ўказанай пазіцыі спіса.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Вяртае першы элемент спіса.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Вяртае апошні элемент спіса.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Вяртае выпадковы элемент спіса.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Выдаляе і вяртае элемент ва ўказанай пазіцыі спіса.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Видаляє і повертає перший елемент списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Видаляє і повертає апошні элемент спіса.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Видаляє і повертає выпадковы элемент спіса.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Видаляє элемент ва ўказанай пазіцыі спіса.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Видаляє першы элемент спіса.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Видаляє апошні элемент спіса.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Видаляє выпадковы элемент спіса.", + "LISTS_SET_INDEX_SET": "прысабечыць", + "LISTS_SET_INDEX_INSERT": "уставіць у", + "LISTS_SET_INDEX_INPUT_TO": "=", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Прысабечвае значэнне элемента ва ўказанай пазіцыі спіса.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Прысабечвае значэнне элемента спісу.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Прысабечвае значэнне элемента спісу.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Прысабечвае значэнне элемента спісу.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Устаўляе элемент ва ўказанай пазіцыі спіса.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Устаўляе элемент у пачатак спіса.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Дадае элемент у канец спісу.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Устаўляе элемент у выпадковае месца ў спісе.", + "LISTS_GET_SUBLIST_START_FROM_START": "узяць падспіс з #", + "LISTS_GET_SUBLIST_START_FROM_END": "узяць падспіс з # з канца", + "LISTS_GET_SUBLIST_START_FIRST": "узяць падспіс з першага", + "LISTS_GET_SUBLIST_END_FROM_START": "па #", + "LISTS_GET_SUBLIST_END_FROM_END": "па # з канца", + "LISTS_GET_SUBLIST_END_LAST": "па апошні", + "LISTS_GET_SUBLIST_TOOLTIP": "Стварае копію ўказанай частцы спісу.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "сартаваць %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Сартаваць копію спісу.", + "LISTS_SORT_ORDER_ASCENDING": "па ўзрастанню", + "LISTS_SORT_ORDER_DESCENDING": "па спаданню", + "LISTS_SORT_TYPE_NUMERIC": "лікавая", + "LISTS_SORT_TYPE_TEXT": "па алфавіце", + "LISTS_SORT_TYPE_IGNORECASE": "па алфавіце, без уліку рэгістра", + "LISTS_SPLIT_LIST_FROM_TEXT": "зрабіць спіс з тэксту", + "LISTS_SPLIT_TEXT_FROM_LIST": "сабраць тэкст са спісу", + "LISTS_SPLIT_WITH_DELIMITER": "з падзельнікам", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Разбівае тэкст у спіс тэкстаў па падзельнікам.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Злучае спіс тэкстаў у адзін тэкст з падзельнікамі.", + "LISTS_REVERSE_MESSAGE0": "змяніць парадак на зваротны %1", + "LISTS_REVERSE_TOOLTIP": "Змяніць парадак спісу на адваротны.", + "VARIABLES_GET_TOOLTIP": "Вяртае значэнне гэтай пераменнай.", + "VARIABLES_GET_CREATE_SET": "Стварыць блок \"прысабечыць\" для %1", + "VARIABLES_SET": "прысабечыць %1 = %2", + "VARIABLES_SET_TOOLTIP": "Прысабечвае пераменнай значэнне ўстаўкі.", + "VARIABLES_SET_CREATE_GET": "Стварыць устаўку %1", + "PROCEDURES_DEFNORETURN_TITLE": "каб", + "PROCEDURES_DEFNORETURN_PROCEDURE": "выканаць нешта", + "PROCEDURES_BEFORE_PARAMS": "з:", + "PROCEDURES_CALL_BEFORE_PARAMS": "з:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Стварыць працэдуру, якая ня вяртае значэнне.", + "PROCEDURES_DEFNORETURN_COMMENT": "Апішыце гэтую функцыю...", + "PROCEDURES_DEFRETURN_RETURN": "вярнуць", + "PROCEDURES_DEFRETURN_TOOLTIP": "Стварыць працэдуру, якая вяртае значэнне.", + "PROCEDURES_ALLOW_STATEMENTS": "дазволіць аператары", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Папярэджанне: гэтая функцыя мае паўтаральныя параметры.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://be.wikipedia.org/wiki/Падпраграма", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Выконвае вызначаную карыстальнікам працэдуру '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://be.wikipedia.org/wiki/Падпраграма", + "PROCEDURES_CALLRETURN_TOOLTIP": "Выконвае вызначаную карыстальнікам працэдуру '%1' і вяртае вылічанае значэнне.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "параметры", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Дадаць, выдаліць або змяніць парадак уваходных параметраў для гэтай функцыі.", + "PROCEDURES_MUTATORARG_TITLE": "імя параметра:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Дадаць уваходны параметр ў функцыю.", + "PROCEDURES_HIGHLIGHT_DEF": "Вылучыць вызначэнне працэдуры", + "PROCEDURES_CREATE_DO": "Стварыць выклік '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Калі першае значэнне ісцінае, вяртае другое значэнне.", + "PROCEDURES_IFRETURN_WARNING": "Папярэджанне: гэты блок можа выкарыстоўвацца толькі ўнутры вызначэння функцыі.", + "DIALOG_OK": "Добра", + "DIALOG_CANCEL": "Адмяніць" +} diff --git a/msg/json/bg.json b/msg/json/bg.json index eade47e5ff3..509f406d3dd 100644 --- a/msg/json/bg.json +++ b/msg/json/bg.json @@ -1,346 +1,346 @@ -{ - "@metadata": { - "authors": [ - "Alpinistbg", - "Gkostov", - "InsomniHat", - "Miroslav35232", - "ShockD", - "StanProg", - "Vlad5250", - "Vodnokon4e" - ] - }, - "VARIABLES_DEFAULT_NAME": "елемент", - "UNNAMED_KEY": "без име", - "TODAY": "Днес", - "DUPLICATE_BLOCK": "Копирай", - "ADD_COMMENT": "Добави коментар", - "REMOVE_COMMENT": "Премахни коментар", - "DUPLICATE_COMMENT": "Дублиране на коментара", - "EXTERNAL_INPUTS": "Външни входове", - "INLINE_INPUTS": "Вътрешни входове", - "DELETE_BLOCK": "Изтрий блок", - "DELETE_X_BLOCKS": "Изтрий %1 блока", - "DELETE_ALL_BLOCKS": "Изтриване на всички 1% блокове?", - "CLEAN_UP": "Премахни блокове", - "COLLAPSE_BLOCK": "Скрий блок", - "COLLAPSE_ALL": "Скрий блокове", - "EXPAND_BLOCK": "Покажи блок", - "EXPAND_ALL": "Покажи блокове", - "DISABLE_BLOCK": "Деактивирай блок", - "ENABLE_BLOCK": "Активирай блок", - "HELP": "Помощ", - "UNDO": "Отмяна", - "REDO": "Повторение", - "CHANGE_VALUE_TITLE": "Промени стойността:", - "RENAME_VARIABLE": "Преименувай променливата...", - "RENAME_VARIABLE_TITLE": "Преименувай всички '%1' променливи на:", - "NEW_VARIABLE": "Създаване на променлива...", - "NEW_STRING_VARIABLE": "Създаване на низова променлива...", - "NEW_NUMBER_VARIABLE": "Създаване на числова променлива...", - "NEW_COLOUR_VARIABLE": "Създаване на цветова променлива...", - "NEW_VARIABLE_TYPE_TITLE": "Тип на новата променлива:", - "NEW_VARIABLE_TITLE": "Ново име на променливата:", - "VARIABLE_ALREADY_EXISTS": "Променлива с име '%1' вече съществува.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Променлива с име '%1' вече съществува за друг тип: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Изтриване на %1 използване на променлива '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Променливата '%1' не може да бъде изтрита, защото е част от определението на функцията '%2'", - "DELETE_VARIABLE": "Изтриване на променливата \"%1\"", - "COLOUR_PICKER_HELPURL": "https://bg.wikipedia.org/wiki/Цвят_(оптика)", - "COLOUR_PICKER_TOOLTIP": "Избери цвят от палитрата.", - "COLOUR_RANDOM_TITLE": "случаен цвят", - "COLOUR_RANDOM_TOOLTIP": "Избери цвят на случаен принцип.", - "COLOUR_RGB_TITLE": "оцвети с", - "COLOUR_RGB_RED": "червен", - "COLOUR_RGB_GREEN": "зелен", - "COLOUR_RGB_BLUE": "син", - "COLOUR_RGB_TOOLTIP": "Създай цвят с избраните пропорции, червено, зелено и синьо. Всички стойности трябва да бъдат от 0 до 100.", - "COLOUR_BLEND_TITLE": "смеси", - "COLOUR_BLEND_COLOUR1": "цвят 1", - "COLOUR_BLEND_COLOUR2": "цвят 2", - "COLOUR_BLEND_RATIO": "съотношение", - "COLOUR_BLEND_TOOLTIP": "Смесва два цвят в дадено съотношение (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://bg.wikipedia.org/wiki/Цикъл_(програмиране)#For_.D1.86.D0.B8.D0.BA.D1.8A.D0.BB.D1.8A.D1.82", - "CONTROLS_REPEAT_TITLE": "Повтори %1 пъти", - "CONTROLS_REPEAT_INPUT_DO": "изпълни", - "CONTROLS_REPEAT_TOOLTIP": "Изпълнява команди няколко пъти.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "повтаряй докато е вярно, че", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "повтаряй докато", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Изпълни командите, ако стойността е вярна.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Изпълни командите, ако стойността не е вярна.", - "CONTROLS_FOR_TOOLTIP": "Нека променлива '%1' премине през стойностите от началното до крайното число през зададената стъпка и изпълни избраните блокове.", - "CONTROLS_FOR_TITLE": "преброй чрез %1 от %2 до %3 през %4", - "CONTROLS_FOREACH_TITLE": "за всеки елемент %1 в списъка %2", - "CONTROLS_FOREACH_TOOLTIP": "За всеки елемент в даден списък, присвои елемента на променливата „%1“ и след това изпълни командите.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "прекъсни цикъла", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "премини към следващата стъпка от цикъла", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Прекъсни цикъла, в който се съдържа тази команда.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Премини към следващата стъпка от цикъла", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Предупреждение: Този блок може да се използва само в цикъл.", - "CONTROLS_IF_TOOLTIP_1": "Ако стойността е вярна, изпълни операциите.", - "CONTROLS_IF_TOOLTIP_2": "Ако стойността е вярна, изпълни първият блок. Иначе, изпълни вторият блок.", - "CONTROLS_IF_TOOLTIP_3": "Ако първата стойност е вярна, изпълни първия блок. Иначе, ако втората стойност е вярна, изпълни втория блок.", - "CONTROLS_IF_TOOLTIP_4": "Ако първата стойност е вярна, изпълни първия блок. В противен случай, ако втората стойност е вярна, изпълни втория блок. Ако нито една от стойностите не е вярна, изпълни последния блок.", - "CONTROLS_IF_MSG_IF": "ако", - "CONTROLS_IF_MSG_ELSEIF": "иначе ако", - "CONTROLS_IF_MSG_ELSE": "иначе", - "CONTROLS_IF_IF_TOOLTIP": "Добави, премахни или пренареди частите, за да промениш този „ако“ блок.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Добави условие към „ако“ блока.", - "CONTROLS_IF_ELSE_TOOLTIP": "Добави окончателно, прихващащо всички останали случаи условие към блок „ако“.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Върни вярно, ако двата параметъра са еднакви.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Върни вярно, ако двата параметъра са различни.", - "LOGIC_COMPARE_TOOLTIP_LT": "Върни вярно, ако първият параметър е по-малък от втория.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Върни истина, ако първия параметър е по-малък или равен на втория.", - "LOGIC_COMPARE_TOOLTIP_GT": "Върни истина, ако първия параметър е по-голям от втория.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Върни истина, ако първия параметър е по-голям или равен на втория.", - "LOGIC_OPERATION_TOOLTIP_AND": "Върни вярно, ако и двата параметъра са верни.", - "LOGIC_OPERATION_AND": "и", - "LOGIC_OPERATION_TOOLTIP_OR": "Върни „вярно“, ако поне един от входовете е верен.", - "LOGIC_OPERATION_OR": "или", - "LOGIC_NEGATE_TITLE": "не %1", - "LOGIC_NEGATE_TOOLTIP": "Върни вярно, ако параметърът е неверен. Върни невярно, ако параметърът е верен.", - "LOGIC_BOOLEAN_TRUE": "вярно", - "LOGIC_BOOLEAN_FALSE": "невярно", - "LOGIC_BOOLEAN_TOOLTIP": "Връща вярно или невярно.", - "LOGIC_NULL": "нула", - "LOGIC_NULL_TOOLTIP": "Връща нула.", - "LOGIC_TERNARY_CONDITION": "тест", - "LOGIC_TERNARY_IF_TRUE": "Ако е вярно", - "LOGIC_TERNARY_IF_FALSE": "Ако е невярно", - "LOGIC_TERNARY_TOOLTIP": "Провери условието в „тест“. Ако условието е истина, върни стойността „ако е вярно“, иначе върни стойността „ако е невярно“.", - "MATH_NUMBER_HELPURL": "https://bg.wikipedia.org/wiki/Число", - "MATH_NUMBER_TOOLTIP": "Число.", - "MATH_ARITHMETIC_HELPURL": "https://bg.wikipedia.org/wiki/Аритметика", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Върни сумата на двете числа.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Върни разликата на двете числа.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Върни произведението на двете числа.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Върни частното на двете числа.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Върни първото число, повдигнато на степен на второто число.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "корен квадратен", - "MATH_SINGLE_TOOLTIP_ROOT": "Връща корен квадратен от число.", - "MATH_SINGLE_OP_ABSOLUTE": "абсолютна", - "MATH_SINGLE_TOOLTIP_ABS": "Връща абсолютната стойност на число.", - "MATH_SINGLE_TOOLTIP_NEG": "Върни числото с обърнат знак.", - "MATH_SINGLE_TOOLTIP_LN": "Върни натуралния логаритъм от число.", - "MATH_SINGLE_TOOLTIP_LOG10": "Върни десетичния логаритъм на число.", - "MATH_SINGLE_TOOLTIP_EXP": "Върни е (неперовото число) на степен зададеното число.", - "MATH_SINGLE_TOOLTIP_POW10": "Върни 10 на степен зададеното число.", - "MATH_TRIG_HELPURL": "https://bg.wikipedia.org/wiki/Тригонометрична_функция", - "MATH_TRIG_TOOLTIP_SIN": "Върни синус от ъгъл в градуси (не в радиани)", - "MATH_TRIG_TOOLTIP_COS": "Върни косинус от ъгъл в градуси (не в радиани)", - "MATH_TRIG_TOOLTIP_TAN": "Върни тангенс от ъгъл в градуси (не в радиани)", - "MATH_TRIG_TOOLTIP_ASIN": "Върни аркуссинус от число.", - "MATH_TRIG_TOOLTIP_ACOS": "Върни аркускосинус от число.", - "MATH_TRIG_TOOLTIP_ATAN": "Върни аркустангенс от число.", - "MATH_CONSTANT_HELPURL": "http://bg.wikipedia.org/wiki/Константа", - "MATH_CONSTANT_TOOLTIP": "Връща една от често срещаните константи: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (безкрайност).", - "MATH_IS_EVEN": "е четно", - "MATH_IS_ODD": "е нечетно", - "MATH_IS_PRIME": "е просто", - "MATH_IS_WHOLE": "е цяло", - "MATH_IS_POSITIVE": "е положително", - "MATH_IS_NEGATIVE": "е отрицателно", - "MATH_IS_DIVISIBLE_BY": "се дели на", - "MATH_IS_TOOLTIP": "Проверете дали дадено число е четно, нечетно, просто, цяло, положително, отрицателно или дали се дели на друго число. Връща вярно или невярно.", - "MATH_CHANGE_HELPURL": "https://bg.wikipedia.org/wiki/Събиране", - "MATH_CHANGE_TITLE": "промени %1 на %2", - "MATH_CHANGE_TOOLTIP": "Добави число към променлива „%1“.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Закръгли число нагоре или надолу.", - "MATH_ROUND_OPERATOR_ROUND": "закръгли", - "MATH_ROUND_OPERATOR_ROUNDUP": "закръгли нагоре", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "закръгли надолу", - "MATH_ONLIST_OPERATOR_SUM": "сума на списъка", - "MATH_ONLIST_TOOLTIP_SUM": "Върни сумата на всички числа в списъка.", - "MATH_ONLIST_OPERATOR_MIN": "най-малката стойност в списъка", - "MATH_ONLIST_TOOLTIP_MIN": "Върни най-малкото число в списъка.", - "MATH_ONLIST_OPERATOR_MAX": "най-голямата стойност в списъка", - "MATH_ONLIST_TOOLTIP_MAX": "Върни най-голямото число в списъка.", - "MATH_ONLIST_OPERATOR_AVERAGE": "средната стойност на числата в списъка", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Върни средната стойност (аритметичното средно) на числата в списъка.", - "MATH_ONLIST_OPERATOR_MEDIAN": "медианата на списък", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Върни медианата в списъка.", - "MATH_ONLIST_OPERATOR_MODE": "режими на списъка", - "MATH_ONLIST_TOOLTIP_MODE": "Върни списък на най-често срещаните елементи в списъка.", - "MATH_ONLIST_OPERATOR_STD_DEV": "стандартно отклонение на списък", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Връща стандартното отклонение на списъка.", - "MATH_ONLIST_OPERATOR_RANDOM": "случаен елемент от списъка", - "MATH_ONLIST_TOOLTIP_RANDOM": "Върни случаен елемент от списъка.", - "MATH_MODULO_HELPURL": "http://bg.wikipedia.org/wiki/Остатък", - "MATH_MODULO_TITLE": "остатъка от делението на %1 на %2", - "MATH_MODULO_TOOLTIP": "Върни остатъка от деление на две числа.", - "MATH_CONSTRAIN_TITLE": "ограничи %1 между %2 и %3", - "MATH_CONSTRAIN_TOOLTIP": "Ограничи число да бъде в определените граници (включително).", - "MATH_RANDOM_INT_HELPURL": "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа", - "MATH_RANDOM_INT_TITLE": "случайно цяло число между %1 и %2", - "MATH_RANDOM_INT_TOOLTIP": "Върни случайно число в определените граници (включително).", - "MATH_RANDOM_FLOAT_HELPURL": "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "случайно дробно число", - "MATH_RANDOM_FLOAT_TOOLTIP": "Върни случайно дробно число между 0.0 (включително) и 1.0 (без да го включва)", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 от X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Връща аркустангенс на точка (X, Y) в градуси от -180 до 180.", - "TEXT_TEXT_HELPURL": "https://bg.wikipedia.org/wiki/Низ", - "TEXT_TEXT_TOOLTIP": "Буква, дума или ред", - "TEXT_JOIN_TITLE_CREATEWITH": "създай текст с", - "TEXT_JOIN_TOOLTIP": "Създай текст като съчетаеш няколко елемента.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "свържи", - "TEXT_CREATE_JOIN_TOOLTIP": "Добави, премахни или пренареди частите, за да промениш този текстов блок.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Добави елемент към текста.", - "TEXT_APPEND_TITLE": "добавете текст %2 към %1", - "TEXT_APPEND_TOOLTIP": "Добави текст към променливата „%1“.", - "TEXT_LENGTH_TITLE": "дължината на %1", - "TEXT_LENGTH_TOOLTIP": "Връща броя на символите (включително и интервалите) в текста.", - "TEXT_ISEMPTY_TITLE": "%1 е празен", - "TEXT_ISEMPTY_TOOLTIP": "Връща вярно, ако текста е празен.", - "TEXT_INDEXOF_TOOLTIP": "Връща индекса на първото/последното срещане на първия текст във втория текст. Връща %1, ако текстът не е намерен.", - "TEXT_INDEXOF_TITLE": "в текст %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "намери първата поява на текста", - "TEXT_INDEXOF_OPERATOR_LAST": "намери последната поява на текста", - "TEXT_CHARAT_TITLE": "в текст %1 %2", - "TEXT_CHARAT_FROM_START": "вземи буква №", - "TEXT_CHARAT_FROM_END": "вземи буква № от края", - "TEXT_CHARAT_FIRST": "вземи първата буква", - "TEXT_CHARAT_LAST": "вземи последната буква", - "TEXT_CHARAT_RANDOM": "вземи произволна буква", - "TEXT_CHARAT_TOOLTIP": "Връща буквата в определена позиция.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Връща определена част от текста.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "в текста", - "TEXT_GET_SUBSTRING_START_FROM_START": "вземи текста от буква №", - "TEXT_GET_SUBSTRING_START_FROM_END": "вземи текста от буква № (броено отзад-напред)", - "TEXT_GET_SUBSTRING_START_FIRST": "вземи текста от първата буква", - "TEXT_GET_SUBSTRING_END_FROM_START": "до буква №", - "TEXT_GET_SUBSTRING_END_FROM_END": "до буква № от края", - "TEXT_GET_SUBSTRING_END_LAST": "до последната буква.", - "TEXT_CHANGECASE_TOOLTIP": "Връща копие на текста със сменени малки и главни букви.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "с ГЛАВНИ БУКВИ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "с малки букви", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "с Главна Буква На Всяка Дума", - "TEXT_TRIM_TOOLTIP": "Връща копие на текста с премахнати интервали от единия или двата края.", - "TEXT_TRIM_OPERATOR_BOTH": "премахни интервалите от двете страни", - "TEXT_TRIM_OPERATOR_LEFT": "премахни интервалите отляво", - "TEXT_TRIM_OPERATOR_RIGHT": "премахни интервалите отдясно", - "TEXT_PRINT_TITLE": "отпечатай %1", - "TEXT_PRINT_TOOLTIP": "Отпечатай текста, числото или друга стойност.", - "TEXT_PROMPT_TYPE_TEXT": "питай за текст със съобщение", - "TEXT_PROMPT_TYPE_NUMBER": "питай за число със съобщение", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Питай потребителя за число.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Питай потребителя за текст.", - "TEXT_COUNT_MESSAGE0": "пресмята броя на %1 в %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Преброй колко пъти даден текст се среща в друг текст.", - "TEXT_REPLACE_MESSAGE0": "замяна на %1 с %2 в %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Замени всички появи на даден текст в друг текст.", - "TEXT_REVERSE_MESSAGE0": "промени реда на обратно %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Промени реда на знаците в текста на обратно.", - "LISTS_CREATE_EMPTY_TITLE": "създай празен списък", - "LISTS_CREATE_EMPTY_TOOLTIP": "Връща списък с дължина 0, не съдържащ данни", - "LISTS_CREATE_WITH_TOOLTIP": "Създай списък с произволен брой елементи.", - "LISTS_CREATE_WITH_INPUT_WITH": "създай списък с", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "списък", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Добави, премахни или пренареди частите, за да промениш този списъчен блок.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Добави елемент към текста.", - "LISTS_REPEAT_TOOLTIP": "Създава списък, състоящ се от определен брой копия на елемента.", - "LISTS_REPEAT_TITLE": "създай списък от %1 повторен %2 пъти", - "LISTS_LENGTH_TITLE": "дължината на %1", - "LISTS_LENGTH_TOOLTIP": "Връща дължината на списък.", - "LISTS_ISEMPTY_TITLE": "%1 е празен", - "LISTS_ISEMPTY_TOOLTIP": "Връща стойност вярно, ако списъкът е празен.", - "LISTS_INLIST": "в списъка", - "LISTS_INDEX_OF_FIRST": "намери първата поява на елемента", - "LISTS_INDEX_OF_LAST": "намери последната поява на елемента", - "LISTS_INDEX_OF_TOOLTIP": "Връща индекса на първото/последното появяване на елемента в списъка. Връща %1, ако елементът не е намерен.", - "LISTS_GET_INDEX_GET": "вземи", - "LISTS_GET_INDEX_GET_REMOVE": "вземи и премахни", - "LISTS_GET_INDEX_REMOVE": "премахни", - "LISTS_GET_INDEX_FROM_END": "№ от края", - "LISTS_GET_INDEX_FIRST": "първия", - "LISTS_GET_INDEX_LAST": "последния", - "LISTS_GET_INDEX_RANDOM": "произволен", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 е първият елемент.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 е последният елемент.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Връща елемента на определената позиция в списък.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Връща първия елемент в списък.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Връща последния елемент в списък.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Връща случаен елемент от списъка.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Премахва и връща елемента на определена позиция в списък.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Премахва и връща първия елемент в списък.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Премахва и връща последния елемент в списък.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Премахва и връща случаен елемент от списък.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Премахва елемент на определена позиция от списък.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Премахва първия елемент от списък.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Премахва последния елемент от списък.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Премахва случаен елемент от списък.", - "LISTS_SET_INDEX_SET": "промени", - "LISTS_SET_INDEX_INSERT": "вмъкни на позиция", - "LISTS_SET_INDEX_INPUT_TO": "следното", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Променя елемента на определена позиция в списък.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Променя първия елемент в списък.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Променя последния елемент в списък.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Променя случаен елемент от списък.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Вмъква елемент на определена позиция в списък.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Вмъква елемент в началото на списъка.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Добави елемент в края на списък.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Вмъква елемент на произволно място в списък.", - "LISTS_GET_SUBLIST_START_FROM_START": "вземи подсписък от №", - "LISTS_GET_SUBLIST_START_FROM_END": "вземи подсписък от № от края", - "LISTS_GET_SUBLIST_START_FIRST": "вземи подсписък от първия", - "LISTS_GET_SUBLIST_END_FROM_START": "до №", - "LISTS_GET_SUBLIST_END_FROM_END": "до № открая", - "LISTS_GET_SUBLIST_END_LAST": "до края", - "LISTS_GET_SUBLIST_TOOLTIP": "Копира част от списък.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "сортиране по %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Подреди копие на списъка.", - "LISTS_SORT_ORDER_ASCENDING": "възходящо", - "LISTS_SORT_ORDER_DESCENDING": "низходящо", - "LISTS_SORT_TYPE_NUMERIC": "в числов ред", - "LISTS_SORT_TYPE_TEXT": "по азбучен ред", - "LISTS_SORT_TYPE_IGNORECASE": "по азбучен ред, без отчитане на малки и главни букви", - "LISTS_SPLIT_LIST_FROM_TEXT": "Направи списък от текст", - "LISTS_SPLIT_TEXT_FROM_LIST": "направи текст от списък", - "LISTS_SPLIT_WITH_DELIMITER": "с разделител", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Разделя текст в списък на текстове, по всеки разделител.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Събира списък от текстове в един текст, раделени с разделител.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "промени реда на обратно %1", - "LISTS_REVERSE_TOOLTIP": "Промени реда на списъка на обратно.", - "VARIABLES_GET_TOOLTIP": "Връща стойността на тази променлива.", - "VARIABLES_GET_CREATE_SET": "Създай „промени стойността на %1“", - "VARIABLES_SET": "нека %1 бъде %2", - "VARIABLES_SET_TOOLTIP": "Установява променливата със стойността на входа.", - "VARIABLES_SET_CREATE_GET": "Създай „вземи стойността на %1“", - "PROCEDURES_DEFNORETURN_TITLE": "за да", - "PROCEDURES_DEFNORETURN_PROCEDURE": "направиш", - "PROCEDURES_BEFORE_PARAMS": "с:", - "PROCEDURES_CALL_BEFORE_PARAMS": "с:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Създава функция, която не връща резултат.", - "PROCEDURES_DEFNORETURN_COMMENT": "Опишете тази функция...", - "PROCEDURES_DEFRETURN_RETURN": "върни", - "PROCEDURES_DEFRETURN_TOOLTIP": "Създава функция, която връща резултат.", - "PROCEDURES_ALLOW_STATEMENTS": "позволи операциите", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Предупреждение: Тази функция има дублиращи се параметри.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://bg.wikipedia.org/wiki/Подпрограма", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Изпълни дефинирана от потребителя функция „%1“.", - "PROCEDURES_CALLRETURN_HELPURL": "https://bg.wikipedia.org/wiki/Подпрограма", - "PROCEDURES_CALLRETURN_TOOLTIP": "Изпълни дефинирана от потребителя функция „%1“ и използвай резултата.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "вход", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Добави, премахни или пренареди входните параметри за тази функция.", - "PROCEDURES_MUTATORARG_TITLE": "име на параметър:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Добавяне на параметър към функцията.", - "PROCEDURES_HIGHLIGHT_DEF": "Покажи дефиницията на функцията", - "PROCEDURES_CREATE_DO": "Създай '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Ако стойността е вярна, върни втората стойност.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Предупреждение: Този блок може да се използва само във функция.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Коментирайте нещо...", - "WORKSPACE_ARIA_LABEL": "Работна област на Blockly", - "COLLAPSED_WARNINGS_WARNING": "Свитите блокове съдържат предупреждения.", - "DIALOG_OK": "ОК", - "DIALOG_CANCEL": "Отказ" -} +{ + "@metadata": { + "authors": [ + "Alpinistbg", + "Gkostov", + "InsomniHat", + "Miroslav35232", + "ShockD", + "StanProg", + "Vlad5250", + "Vodnokon4e" + ] + }, + "VARIABLES_DEFAULT_NAME": "елемент", + "UNNAMED_KEY": "без име", + "TODAY": "Днес", + "DUPLICATE_BLOCK": "Копирай", + "ADD_COMMENT": "Добави коментар", + "REMOVE_COMMENT": "Премахни коментар", + "DUPLICATE_COMMENT": "Дублиране на коментара", + "EXTERNAL_INPUTS": "Външни входове", + "INLINE_INPUTS": "Вътрешни входове", + "DELETE_BLOCK": "Изтрий блок", + "DELETE_X_BLOCKS": "Изтрий %1 блока", + "DELETE_ALL_BLOCKS": "Изтриване на всички 1% блокове?", + "CLEAN_UP": "Премахни блокове", + "COLLAPSE_BLOCK": "Скрий блок", + "COLLAPSE_ALL": "Скрий блокове", + "EXPAND_BLOCK": "Покажи блок", + "EXPAND_ALL": "Покажи блокове", + "DISABLE_BLOCK": "Деактивирай блок", + "ENABLE_BLOCK": "Активирай блок", + "HELP": "Помощ", + "UNDO": "Отмяна", + "REDO": "Повторение", + "CHANGE_VALUE_TITLE": "Промени стойността:", + "RENAME_VARIABLE": "Преименувай променливата...", + "RENAME_VARIABLE_TITLE": "Преименувай всички '%1' променливи на:", + "NEW_VARIABLE": "Създаване на променлива...", + "NEW_STRING_VARIABLE": "Създаване на низова променлива...", + "NEW_NUMBER_VARIABLE": "Създаване на числова променлива...", + "NEW_COLOUR_VARIABLE": "Създаване на цветова променлива...", + "NEW_VARIABLE_TYPE_TITLE": "Тип на новата променлива:", + "NEW_VARIABLE_TITLE": "Ново име на променливата:", + "VARIABLE_ALREADY_EXISTS": "Променлива с име '%1' вече съществува.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Променлива с име '%1' вече съществува за друг тип: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Изтриване на %1 използване на променлива '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Променливата '%1' не може да бъде изтрита, защото е част от определението на функцията '%2'", + "DELETE_VARIABLE": "Изтриване на променливата \"%1\"", + "COLOUR_PICKER_HELPURL": "https://bg.wikipedia.org/wiki/Цвят_(оптика)", + "COLOUR_PICKER_TOOLTIP": "Избери цвят от палитрата.", + "COLOUR_RANDOM_TITLE": "случаен цвят", + "COLOUR_RANDOM_TOOLTIP": "Избери цвят на случаен принцип.", + "COLOUR_RGB_TITLE": "оцвети с", + "COLOUR_RGB_RED": "червен", + "COLOUR_RGB_GREEN": "зелен", + "COLOUR_RGB_BLUE": "син", + "COLOUR_RGB_TOOLTIP": "Създай цвят с избраните пропорции, червено, зелено и синьо. Всички стойности трябва да бъдат от 0 до 100.", + "COLOUR_BLEND_TITLE": "смеси", + "COLOUR_BLEND_COLOUR1": "цвят 1", + "COLOUR_BLEND_COLOUR2": "цвят 2", + "COLOUR_BLEND_RATIO": "съотношение", + "COLOUR_BLEND_TOOLTIP": "Смесва два цвят в дадено съотношение (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://bg.wikipedia.org/wiki/Цикъл_(програмиране)#For_.D1.86.D0.B8.D0.BA.D1.8A.D0.BB.D1.8A.D1.82", + "CONTROLS_REPEAT_TITLE": "Повтори %1 пъти", + "CONTROLS_REPEAT_INPUT_DO": "изпълни", + "CONTROLS_REPEAT_TOOLTIP": "Изпълнява команди няколко пъти.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "повтаряй докато е вярно, че", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "повтаряй докато", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Изпълни командите, ако стойността е вярна.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Изпълни командите, ако стойността не е вярна.", + "CONTROLS_FOR_TOOLTIP": "Нека променлива '%1' премине през стойностите от началното до крайното число през зададената стъпка и изпълни избраните блокове.", + "CONTROLS_FOR_TITLE": "преброй чрез %1 от %2 до %3 през %4", + "CONTROLS_FOREACH_TITLE": "за всеки елемент %1 в списъка %2", + "CONTROLS_FOREACH_TOOLTIP": "За всеки елемент в даден списък, присвои елемента на променливата „%1“ и след това изпълни командите.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "прекъсни цикъла", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "премини към следващата стъпка от цикъла", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Прекъсни цикъла, в който се съдържа тази команда.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Премини към следващата стъпка от цикъла", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Предупреждение: Този блок може да се използва само в цикъл.", + "CONTROLS_IF_TOOLTIP_1": "Ако стойността е вярна, изпълни операциите.", + "CONTROLS_IF_TOOLTIP_2": "Ако стойността е вярна, изпълни първият блок. Иначе, изпълни вторият блок.", + "CONTROLS_IF_TOOLTIP_3": "Ако първата стойност е вярна, изпълни първия блок. Иначе, ако втората стойност е вярна, изпълни втория блок.", + "CONTROLS_IF_TOOLTIP_4": "Ако първата стойност е вярна, изпълни първия блок. В противен случай, ако втората стойност е вярна, изпълни втория блок. Ако нито една от стойностите не е вярна, изпълни последния блок.", + "CONTROLS_IF_MSG_IF": "ако", + "CONTROLS_IF_MSG_ELSEIF": "иначе ако", + "CONTROLS_IF_MSG_ELSE": "иначе", + "CONTROLS_IF_IF_TOOLTIP": "Добави, премахни или пренареди частите, за да промениш този „ако“ блок.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Добави условие към „ако“ блока.", + "CONTROLS_IF_ELSE_TOOLTIP": "Добави окончателно, прихващащо всички останали случаи условие към блок „ако“.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Върни вярно, ако двата параметъра са еднакви.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Върни вярно, ако двата параметъра са различни.", + "LOGIC_COMPARE_TOOLTIP_LT": "Върни вярно, ако първият параметър е по-малък от втория.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Върни истина, ако първия параметър е по-малък или равен на втория.", + "LOGIC_COMPARE_TOOLTIP_GT": "Върни истина, ако първия параметър е по-голям от втория.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Върни истина, ако първия параметър е по-голям или равен на втория.", + "LOGIC_OPERATION_TOOLTIP_AND": "Върни вярно, ако и двата параметъра са верни.", + "LOGIC_OPERATION_AND": "и", + "LOGIC_OPERATION_TOOLTIP_OR": "Върни „вярно“, ако поне един от входовете е верен.", + "LOGIC_OPERATION_OR": "или", + "LOGIC_NEGATE_TITLE": "не %1", + "LOGIC_NEGATE_TOOLTIP": "Върни вярно, ако параметърът е неверен. Върни невярно, ако параметърът е верен.", + "LOGIC_BOOLEAN_TRUE": "вярно", + "LOGIC_BOOLEAN_FALSE": "невярно", + "LOGIC_BOOLEAN_TOOLTIP": "Връща вярно или невярно.", + "LOGIC_NULL": "нула", + "LOGIC_NULL_TOOLTIP": "Връща нула.", + "LOGIC_TERNARY_CONDITION": "тест", + "LOGIC_TERNARY_IF_TRUE": "Ако е вярно", + "LOGIC_TERNARY_IF_FALSE": "Ако е невярно", + "LOGIC_TERNARY_TOOLTIP": "Провери условието в „тест“. Ако условието е истина, върни стойността „ако е вярно“, иначе върни стойността „ако е невярно“.", + "MATH_NUMBER_HELPURL": "https://bg.wikipedia.org/wiki/Число", + "MATH_NUMBER_TOOLTIP": "Число.", + "MATH_ARITHMETIC_HELPURL": "https://bg.wikipedia.org/wiki/Аритметика", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Върни сумата на двете числа.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Върни разликата на двете числа.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Върни произведението на двете числа.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Върни частното на двете числа.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Върни първото число, повдигнато на степен на второто число.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "корен квадратен", + "MATH_SINGLE_TOOLTIP_ROOT": "Връща корен квадратен от число.", + "MATH_SINGLE_OP_ABSOLUTE": "абсолютна", + "MATH_SINGLE_TOOLTIP_ABS": "Връща абсолютната стойност на число.", + "MATH_SINGLE_TOOLTIP_NEG": "Върни числото с обърнат знак.", + "MATH_SINGLE_TOOLTIP_LN": "Върни натуралния логаритъм от число.", + "MATH_SINGLE_TOOLTIP_LOG10": "Върни десетичния логаритъм на число.", + "MATH_SINGLE_TOOLTIP_EXP": "Върни е (неперовото число) на степен зададеното число.", + "MATH_SINGLE_TOOLTIP_POW10": "Върни 10 на степен зададеното число.", + "MATH_TRIG_HELPURL": "https://bg.wikipedia.org/wiki/Тригонометрична_функция", + "MATH_TRIG_TOOLTIP_SIN": "Върни синус от ъгъл в градуси (не в радиани)", + "MATH_TRIG_TOOLTIP_COS": "Върни косинус от ъгъл в градуси (не в радиани)", + "MATH_TRIG_TOOLTIP_TAN": "Върни тангенс от ъгъл в градуси (не в радиани)", + "MATH_TRIG_TOOLTIP_ASIN": "Върни аркуссинус от число.", + "MATH_TRIG_TOOLTIP_ACOS": "Върни аркускосинус от число.", + "MATH_TRIG_TOOLTIP_ATAN": "Върни аркустангенс от число.", + "MATH_CONSTANT_HELPURL": "http://bg.wikipedia.org/wiki/Константа", + "MATH_CONSTANT_TOOLTIP": "Връща една от често срещаните константи: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (безкрайност).", + "MATH_IS_EVEN": "е четно", + "MATH_IS_ODD": "е нечетно", + "MATH_IS_PRIME": "е просто", + "MATH_IS_WHOLE": "е цяло", + "MATH_IS_POSITIVE": "е положително", + "MATH_IS_NEGATIVE": "е отрицателно", + "MATH_IS_DIVISIBLE_BY": "се дели на", + "MATH_IS_TOOLTIP": "Проверете дали дадено число е четно, нечетно, просто, цяло, положително, отрицателно или дали се дели на друго число. Връща вярно или невярно.", + "MATH_CHANGE_HELPURL": "https://bg.wikipedia.org/wiki/Събиране", + "MATH_CHANGE_TITLE": "промени %1 на %2", + "MATH_CHANGE_TOOLTIP": "Добави число към променлива „%1“.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Закръгли число нагоре или надолу.", + "MATH_ROUND_OPERATOR_ROUND": "закръгли", + "MATH_ROUND_OPERATOR_ROUNDUP": "закръгли нагоре", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "закръгли надолу", + "MATH_ONLIST_OPERATOR_SUM": "сума на списъка", + "MATH_ONLIST_TOOLTIP_SUM": "Върни сумата на всички числа в списъка.", + "MATH_ONLIST_OPERATOR_MIN": "най-малката стойност в списъка", + "MATH_ONLIST_TOOLTIP_MIN": "Върни най-малкото число в списъка.", + "MATH_ONLIST_OPERATOR_MAX": "най-голямата стойност в списъка", + "MATH_ONLIST_TOOLTIP_MAX": "Върни най-голямото число в списъка.", + "MATH_ONLIST_OPERATOR_AVERAGE": "средната стойност на числата в списъка", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Върни средната стойност (аритметичното средно) на числата в списъка.", + "MATH_ONLIST_OPERATOR_MEDIAN": "медианата на списък", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Върни медианата в списъка.", + "MATH_ONLIST_OPERATOR_MODE": "режими на списъка", + "MATH_ONLIST_TOOLTIP_MODE": "Върни списък на най-често срещаните елементи в списъка.", + "MATH_ONLIST_OPERATOR_STD_DEV": "стандартно отклонение на списък", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Връща стандартното отклонение на списъка.", + "MATH_ONLIST_OPERATOR_RANDOM": "случаен елемент от списъка", + "MATH_ONLIST_TOOLTIP_RANDOM": "Върни случаен елемент от списъка.", + "MATH_MODULO_HELPURL": "http://bg.wikipedia.org/wiki/Остатък", + "MATH_MODULO_TITLE": "остатъка от делението на %1 на %2", + "MATH_MODULO_TOOLTIP": "Върни остатъка от деление на две числа.", + "MATH_CONSTRAIN_TITLE": "ограничи %1 между %2 и %3", + "MATH_CONSTRAIN_TOOLTIP": "Ограничи число да бъде в определените граници (включително).", + "MATH_RANDOM_INT_HELPURL": "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа", + "MATH_RANDOM_INT_TITLE": "случайно цяло число между %1 и %2", + "MATH_RANDOM_INT_TOOLTIP": "Върни случайно число в определените граници (включително).", + "MATH_RANDOM_FLOAT_HELPURL": "https://bg.wikipedia.org/wiki/Генератор_на_случайни_числа", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "случайно дробно число", + "MATH_RANDOM_FLOAT_TOOLTIP": "Върни случайно дробно число между 0.0 (включително) и 1.0 (без да го включва)", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 от X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Връща аркустангенс на точка (X, Y) в градуси от -180 до 180.", + "TEXT_TEXT_HELPURL": "https://bg.wikipedia.org/wiki/Низ", + "TEXT_TEXT_TOOLTIP": "Буква, дума или ред", + "TEXT_JOIN_TITLE_CREATEWITH": "създай текст с", + "TEXT_JOIN_TOOLTIP": "Създай текст като съчетаеш няколко елемента.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "свържи", + "TEXT_CREATE_JOIN_TOOLTIP": "Добави, премахни или пренареди частите, за да промениш този текстов блок.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Добави елемент към текста.", + "TEXT_APPEND_TITLE": "добавете текст %2 към %1", + "TEXT_APPEND_TOOLTIP": "Добави текст към променливата „%1“.", + "TEXT_LENGTH_TITLE": "дължината на %1", + "TEXT_LENGTH_TOOLTIP": "Връща броя на символите (включително и интервалите) в текста.", + "TEXT_ISEMPTY_TITLE": "%1 е празен", + "TEXT_ISEMPTY_TOOLTIP": "Връща вярно, ако текста е празен.", + "TEXT_INDEXOF_TOOLTIP": "Връща индекса на първото/последното срещане на първия текст във втория текст. Връща %1, ако текстът не е намерен.", + "TEXT_INDEXOF_TITLE": "в текст %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "намери първата поява на текста", + "TEXT_INDEXOF_OPERATOR_LAST": "намери последната поява на текста", + "TEXT_CHARAT_TITLE": "в текст %1 %2", + "TEXT_CHARAT_FROM_START": "вземи буква №", + "TEXT_CHARAT_FROM_END": "вземи буква № от края", + "TEXT_CHARAT_FIRST": "вземи първата буква", + "TEXT_CHARAT_LAST": "вземи последната буква", + "TEXT_CHARAT_RANDOM": "вземи произволна буква", + "TEXT_CHARAT_TOOLTIP": "Връща буквата в определена позиция.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Връща определена част от текста.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "в текста", + "TEXT_GET_SUBSTRING_START_FROM_START": "вземи текста от буква №", + "TEXT_GET_SUBSTRING_START_FROM_END": "вземи текста от буква № (броено отзад-напред)", + "TEXT_GET_SUBSTRING_START_FIRST": "вземи текста от първата буква", + "TEXT_GET_SUBSTRING_END_FROM_START": "до буква №", + "TEXT_GET_SUBSTRING_END_FROM_END": "до буква № от края", + "TEXT_GET_SUBSTRING_END_LAST": "до последната буква.", + "TEXT_CHANGECASE_TOOLTIP": "Връща копие на текста със сменени малки и главни букви.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "с ГЛАВНИ БУКВИ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "с малки букви", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "с Главна Буква На Всяка Дума", + "TEXT_TRIM_TOOLTIP": "Връща копие на текста с премахнати интервали от единия или двата края.", + "TEXT_TRIM_OPERATOR_BOTH": "премахни интервалите от двете страни", + "TEXT_TRIM_OPERATOR_LEFT": "премахни интервалите отляво", + "TEXT_TRIM_OPERATOR_RIGHT": "премахни интервалите отдясно", + "TEXT_PRINT_TITLE": "отпечатай %1", + "TEXT_PRINT_TOOLTIP": "Отпечатай текста, числото или друга стойност.", + "TEXT_PROMPT_TYPE_TEXT": "питай за текст със съобщение", + "TEXT_PROMPT_TYPE_NUMBER": "питай за число със съобщение", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Питай потребителя за число.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Питай потребителя за текст.", + "TEXT_COUNT_MESSAGE0": "пресмята броя на %1 в %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Преброй колко пъти даден текст се среща в друг текст.", + "TEXT_REPLACE_MESSAGE0": "замяна на %1 с %2 в %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Замени всички появи на даден текст в друг текст.", + "TEXT_REVERSE_MESSAGE0": "промени реда на обратно %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Промени реда на знаците в текста на обратно.", + "LISTS_CREATE_EMPTY_TITLE": "създай празен списък", + "LISTS_CREATE_EMPTY_TOOLTIP": "Връща списък с дължина 0, не съдържащ данни", + "LISTS_CREATE_WITH_TOOLTIP": "Създай списък с произволен брой елементи.", + "LISTS_CREATE_WITH_INPUT_WITH": "създай списък с", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "списък", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Добави, премахни или пренареди частите, за да промениш този списъчен блок.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Добави елемент към текста.", + "LISTS_REPEAT_TOOLTIP": "Създава списък, състоящ се от определен брой копия на елемента.", + "LISTS_REPEAT_TITLE": "създай списък от %1 повторен %2 пъти", + "LISTS_LENGTH_TITLE": "дължината на %1", + "LISTS_LENGTH_TOOLTIP": "Връща дължината на списък.", + "LISTS_ISEMPTY_TITLE": "%1 е празен", + "LISTS_ISEMPTY_TOOLTIP": "Връща стойност вярно, ако списъкът е празен.", + "LISTS_INLIST": "в списъка", + "LISTS_INDEX_OF_FIRST": "намери първата поява на елемента", + "LISTS_INDEX_OF_LAST": "намери последната поява на елемента", + "LISTS_INDEX_OF_TOOLTIP": "Връща индекса на първото/последното появяване на елемента в списъка. Връща %1, ако елементът не е намерен.", + "LISTS_GET_INDEX_GET": "вземи", + "LISTS_GET_INDEX_GET_REMOVE": "вземи и премахни", + "LISTS_GET_INDEX_REMOVE": "премахни", + "LISTS_GET_INDEX_FROM_END": "№ от края", + "LISTS_GET_INDEX_FIRST": "първия", + "LISTS_GET_INDEX_LAST": "последния", + "LISTS_GET_INDEX_RANDOM": "произволен", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 е първият елемент.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 е последният елемент.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Връща елемента на определената позиция в списък.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Връща първия елемент в списък.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Връща последния елемент в списък.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Връща случаен елемент от списъка.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Премахва и връща елемента на определена позиция в списък.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Премахва и връща първия елемент в списък.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Премахва и връща последния елемент в списък.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Премахва и връща случаен елемент от списък.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Премахва елемент на определена позиция от списък.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Премахва първия елемент от списък.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Премахва последния елемент от списък.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Премахва случаен елемент от списък.", + "LISTS_SET_INDEX_SET": "промени", + "LISTS_SET_INDEX_INSERT": "вмъкни на позиция", + "LISTS_SET_INDEX_INPUT_TO": "следното", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Променя елемента на определена позиция в списък.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Променя първия елемент в списък.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Променя последния елемент в списък.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Променя случаен елемент от списък.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Вмъква елемент на определена позиция в списък.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Вмъква елемент в началото на списъка.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Добави елемент в края на списък.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Вмъква елемент на произволно място в списък.", + "LISTS_GET_SUBLIST_START_FROM_START": "вземи подсписък от №", + "LISTS_GET_SUBLIST_START_FROM_END": "вземи подсписък от № от края", + "LISTS_GET_SUBLIST_START_FIRST": "вземи подсписък от първия", + "LISTS_GET_SUBLIST_END_FROM_START": "до №", + "LISTS_GET_SUBLIST_END_FROM_END": "до № открая", + "LISTS_GET_SUBLIST_END_LAST": "до края", + "LISTS_GET_SUBLIST_TOOLTIP": "Копира част от списък.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "сортиране по %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Подреди копие на списъка.", + "LISTS_SORT_ORDER_ASCENDING": "възходящо", + "LISTS_SORT_ORDER_DESCENDING": "низходящо", + "LISTS_SORT_TYPE_NUMERIC": "в числов ред", + "LISTS_SORT_TYPE_TEXT": "по азбучен ред", + "LISTS_SORT_TYPE_IGNORECASE": "по азбучен ред, без отчитане на малки и главни букви", + "LISTS_SPLIT_LIST_FROM_TEXT": "Направи списък от текст", + "LISTS_SPLIT_TEXT_FROM_LIST": "направи текст от списък", + "LISTS_SPLIT_WITH_DELIMITER": "с разделител", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Разделя текст в списък на текстове, по всеки разделител.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Събира списък от текстове в един текст, раделени с разделител.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "промени реда на обратно %1", + "LISTS_REVERSE_TOOLTIP": "Промени реда на списъка на обратно.", + "VARIABLES_GET_TOOLTIP": "Връща стойността на тази променлива.", + "VARIABLES_GET_CREATE_SET": "Създай „промени стойността на %1“", + "VARIABLES_SET": "нека %1 бъде %2", + "VARIABLES_SET_TOOLTIP": "Установява променливата със стойността на входа.", + "VARIABLES_SET_CREATE_GET": "Създай „вземи стойността на %1“", + "PROCEDURES_DEFNORETURN_TITLE": "за да", + "PROCEDURES_DEFNORETURN_PROCEDURE": "направиш", + "PROCEDURES_BEFORE_PARAMS": "с:", + "PROCEDURES_CALL_BEFORE_PARAMS": "с:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Създава функция, която не връща резултат.", + "PROCEDURES_DEFNORETURN_COMMENT": "Опишете тази функция...", + "PROCEDURES_DEFRETURN_RETURN": "върни", + "PROCEDURES_DEFRETURN_TOOLTIP": "Създава функция, която връща резултат.", + "PROCEDURES_ALLOW_STATEMENTS": "позволи операциите", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Предупреждение: Тази функция има дублиращи се параметри.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://bg.wikipedia.org/wiki/Подпрограма", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Изпълни дефинирана от потребителя функция „%1“.", + "PROCEDURES_CALLRETURN_HELPURL": "https://bg.wikipedia.org/wiki/Подпрограма", + "PROCEDURES_CALLRETURN_TOOLTIP": "Изпълни дефинирана от потребителя функция „%1“ и използвай резултата.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "вход", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Добави, премахни или пренареди входните параметри за тази функция.", + "PROCEDURES_MUTATORARG_TITLE": "име на параметър:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Добавяне на параметър към функцията.", + "PROCEDURES_HIGHLIGHT_DEF": "Покажи дефиницията на функцията", + "PROCEDURES_CREATE_DO": "Създай '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Ако стойността е вярна, върни втората стойност.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Предупреждение: Този блок може да се използва само във функция.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Коментирайте нещо...", + "WORKSPACE_ARIA_LABEL": "Работна област на Blockly", + "COLLAPSED_WARNINGS_WARNING": "Свитите блокове съдържат предупреждения.", + "DIALOG_OK": "ОК", + "DIALOG_CANCEL": "Отказ" +} diff --git a/msg/json/bn.json b/msg/json/bn.json index 722f2092d51..76584733372 100644 --- a/msg/json/bn.json +++ b/msg/json/bn.json @@ -1,189 +1,189 @@ -{ - "@metadata": { - "authors": [ - "Aftabuzzaman", - "MasterMinhaz", - "Rakibul", - "Rasal Lia", - "Tauhid16", - "আফতাবুজ্জামান", - "এম আবু সাঈদ" - ] - }, - "VARIABLES_DEFAULT_NAME": "পদ", - "UNNAMED_KEY": "নামহীন", - "TODAY": "আজ", - "DUPLICATE_BLOCK": "প্রতিলিপি", - "ADD_COMMENT": "মন্তব্য যোগ করুন", - "REMOVE_COMMENT": "মন্তব্য সরাও", - "EXTERNAL_INPUTS": "বহি:স্থ ইনপুট", - "INLINE_INPUTS": "সারি ইনপুট", - "DELETE_BLOCK": "ব্লকটি মুছে ফেল", - "DELETE_X_BLOCKS": "%1 ব্লক অপসারণ কর", - "DELETE_ALL_BLOCKS": "সব %1টি ব্লক অপসারণ করবেন?", - "CLEAN_UP": "ব্লকসমূহ পরিস্কার করুন", - "COLLAPSE_BLOCK": "ব্লক সঙ্কুচিত করুন", - "COLLAPSE_ALL": "ব্লকসমূহ সঙ্কুচিত করুন", - "EXPAND_BLOCK": "ব্লকটি সম্প্রসারিত কর", - "EXPAND_ALL": "ব্লকগুলো সম্প্রসারিত কর", - "DISABLE_BLOCK": "ব্লকটি বিকল কর", - "ENABLE_BLOCK": "ব্লকটি সচল কর", - "HELP": "সাহায্য", - "UNDO": "পূর্বাবস্থা", - "REDO": "পুনরায় করুন", - "CHANGE_VALUE_TITLE": "মান পরিবর্তন করুন:", - "RENAME_VARIABLE": "চলকের নাম পরিবর্তন...", - "RENAME_VARIABLE_TITLE": "'%1' চলকগুলোর নতুন নাম দিন:", - "NEW_VARIABLE": "চলক তৈরি করুন...", - "NEW_VARIABLE_TITLE": "নতুন চলকের নাম:", - "VARIABLE_ALREADY_EXISTS": "'%1' নামের চলক পূর্ব থেকে অাছে।", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' নামের চলক '%2' ধরনের চলকের জন্য পূর্ব থেকেই অাছে।", - "DELETE_VARIABLE_CONFIRMATION": "'%2' চলকের '%1'টি ব্যবহার অপসারণ করবেন?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%1' চলক অপসারণ করা যাবে না কারণ এটি '%2' কার্যপ্রণালীর সংজ্ঞার অংশ", - "DELETE_VARIABLE": "'%1' চলকটি অপসারণ করুন", - "COLOUR_PICKER_HELPURL": "https://bn.wikipedia.org/wiki/রং", - "COLOUR_PICKER_TOOLTIP": "প্যালেট থেকে একটি রং পছন্দ করুন", - "COLOUR_RANDOM_TITLE": "এলোমেলো রং", - "COLOUR_RANDOM_TOOLTIP": "এলোমেলোভাবে একটি রং পছন্দ করুন।", - "COLOUR_RGB_TITLE": "রং সহ", - "COLOUR_RGB_RED": "লাল", - "COLOUR_RGB_GREEN": "সবুজ", - "COLOUR_RGB_BLUE": "নীল", - "COLOUR_RGB_TOOLTIP": "একটি রং তৈরি করুন নির্দিষ্ট পরিমাণে লাল, সবুজ এবং নীল রং মিশ্রিত করে। প্রত্যেকটির মান অবশ্যই ০ থেকে ১০০ এর মধ্যে হতে হবে।", - "COLOUR_BLEND_TITLE": "মিশ্রণ", - "COLOUR_BLEND_COLOUR1": "রং ১", - "COLOUR_BLEND_COLOUR2": "রং ২", - "COLOUR_BLEND_RATIO": "অনুপাত", - "COLOUR_BLEND_TOOLTIP": "প্রদত্ত অনুপাত(০.০ - ১.০) অনুসারে দুটি রং একসাথে মিশ্রিত করুন।", - "CONTROLS_REPEAT_HELPURL": "https://bn.wikipedia.org/wiki/প্রবেশ_পথ", - "CONTROLS_REPEAT_TITLE": "%1 বার পুনরাবৃত্তি করো", - "CONTROLS_REPEAT_INPUT_DO": "করুন", - "CONTROLS_REPEAT_TOOLTIP": "কিছু বিবরণ বারবার দিন।", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "অাবার করুন যখন", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "অাবার করুন যতক্ষণ না", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "যখন একটি মূল্যমান সঠিক, তখন কিছু বিবরণ দিন।", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "যখন একটি মূল্যমান মিথ্যা, তখন কিছু বিবৃতি দিন।", - "CONTROLS_FOR_TOOLTIP": "চলক %1 প্রস্তুত করুন, শুরু থেকে শেষ পর্যন্ত সংখ্যা গ্রহন করতে যা নির্দেশিত বিরতি গণনা করছে এবং নির্দেশিত ব্লক সমূহ সম্পন্ন করতে।", - "CONTROLS_FOR_TITLE": "গণনা কর %1 %4 দিয়ে %2 থেকে %3", - "CONTROLS_FOREACH_TITLE": "প্রত্যেকটি পদের জন্য %1 তালিকার মধ্যে %2", - "CONTROLS_FOREACH_TOOLTIP": "কোন তালিকায় প্রতিবারের জন্য, আইটেমের সাথে চলক '%1' বসান এবং কিছু বিবরণ দিন।", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "প্রবেশপথ থেকে চলে অাসুন", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "পুনরাবৃত্তি চালিয়ে যান পরবর্তী প্রবেশপথে", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "সংশ্লিষ্ট প্রবেশপথ থেকে চলে অাসুন", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "এই প্রবেশপথের অবশিষ্ট অংশ বাদ দিন এবং পরবর্তী প্রচেষ্টা চালিয়ে যান।", - "CONTROLS_FLOW_STATEMENTS_WARNING": "সর্তকীবার্তা: এই ব্লকটি শুধুমাত্র লুপের মধ্যে ব্যবহার করা যাবে।", - "CONTROLS_IF_TOOLTIP_1": "যদি একটি মূল্যমাস সত্য হয়, তবে কিছু বিবরণ দিন", - "CONTROLS_IF_TOOLTIP_2": "যদি একটি মূল্যমান সত্য হয়, তবে বিবৃতিসমূহের প্রথম ব্লকটা অন্যথায় বিবৃতির দ্বিতীয় ব্লক।", - "CONTROLS_IF_TOOLTIP_3": "যদি প্রথম মূল্যমান সঠিক হয়, তবে বর্ণিত প্রথম ব্লকটি সম্পন্ন করুন। অন্যথায়, দ্বিতীয় মূল্যমান সঠিক হয়, দ্বিতীয় ব্লক সম্পন্ন করুন।", - "CONTROLS_IF_MSG_IF": "যদি", - "CONTROLS_IF_MSG_ELSEIF": "নতুবা যদি", - "CONTROLS_IF_MSG_ELSE": "নতুবা", - "CONTROLS_IF_ELSEIF_TOOLTIP": "যদি নামক ব্লক এ একটি শর্ত যোগ করুন।", - "LOGIC_COMPARE_TOOLTIP_EQ": "পাঠাবে সত্য যদি উভয় ইনপুটই সমান হয়।", - "LOGIC_COMPARE_TOOLTIP_NEQ": "পাঠাবে সত্য যদি উভয় ইনপুটই সমান না হয়।", - "LOGIC_COMPARE_TOOLTIP_LT": "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট হয়।", - "LOGIC_COMPARE_TOOLTIP_LTE": "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট অথবা সমান হয়।", - "LOGIC_COMPARE_TOOLTIP_GT": "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় হয়।", - "LOGIC_COMPARE_TOOLTIP_GTE": "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় অথবা সমান হয়।", - "LOGIC_OPERATION_TOOLTIP_AND": "পাঠাবে সত্য যদি উভয় ইনপুটই সত্য হয়।", - "LOGIC_OPERATION_AND": "এবং", - "LOGIC_OPERATION_TOOLTIP_OR": "পাঠাবে সত্য যদি অন্ততপক্ষে যেকোন একটি ইনপুট সত্য হয়।", - "LOGIC_OPERATION_OR": "অথবা", - "LOGIC_NEGATE_TITLE": "%1 নয়", - "LOGIC_NEGATE_TOOLTIP": "পাঠাবে সত্য যদি ইনপুট মিথ্যা হয়। পাঠাবে মিথ্যা যদি ইনপুট সত্য হয়।", - "LOGIC_BOOLEAN_TRUE": "সত্য", - "LOGIC_BOOLEAN_FALSE": "মিথ্যা", - "LOGIC_BOOLEAN_TOOLTIP": "পাঠাবে হয় সত্য অথবা মিথ্যা।", - "LOGIC_NULL": "কিছু না", - "LOGIC_NULL_TOOLTIP": "কিছু ফেরত দিবে না।", - "LOGIC_TERNARY_CONDITION": "পরীক্ষা", - "LOGIC_TERNARY_IF_TRUE": "যদি সত্য হয়", - "LOGIC_TERNARY_IF_FALSE": "যদি মিথ্যা হয়", - "MATH_NUMBER_HELPURL": "https://bn.wikipedia.org/wiki/সংখ্যা", - "MATH_NUMBER_TOOLTIP": "একটি সংখ্যা।", - "MATH_ARITHMETIC_TOOLTIP_ADD": "পাঠাবে দুটি সংখ্যার যোগফল।", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "পাঠাবে দুটি সংখ্যার বিয়োগফল।", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "পাঠাবে দুটি সংখ্যার গুণফল।", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "পাঠাবে দুটি সংখ্যার ভাগফল।", - "MATH_SINGLE_OP_ROOT": "বর্গমূল", - "MATH_SINGLE_TOOLTIP_ROOT": "পাঠাবে একটি সংখ্যার বর্গমূল।", - "MATH_SINGLE_OP_ABSOLUTE": "পরম", - "MATH_SINGLE_TOOLTIP_ABS": "পাঠাবে সংখ্যার পরমমান।", - "MATH_IS_EVEN": "জোড় সংখ্যা", - "MATH_IS_ODD": "বিজোড় সংখ্যা", - "MATH_IS_PRIME": "মৌলিক সংখ্যা", - "MATH_IS_POSITIVE": "ইতিবাচক", - "MATH_IS_NEGATIVE": "নেতিবাচক", - "MATH_IS_DIVISIBLE_BY": "দ্বারা বিভাজ্য", - "MATH_CHANGE_TITLE": "%2 দ্বারা %1 পরিবর্তন", - "MATH_ONLIST_OPERATOR_SUM": "তালিকার যোগফল", - "MATH_ONLIST_TOOLTIP_SUM": "পাঠাবে তালিকার সব সংখ্যার যোগফল।", - "MATH_ONLIST_OPERATOR_MIN": "তালিকার মধ্যে সর্বনিম্ন", - "MATH_ONLIST_TOOLTIP_MIN": "তালিকার মধ্যে সর্বনিম্ন সংখ্যাটি পাঠাও", - "MATH_ONLIST_OPERATOR_MAX": "তালিকার মধ্যে সর্বোচ্চ", - "MATH_ONLIST_TOOLTIP_MAX": "তালিকার মধ্যে সর্বোচ্চ সংখ্যাটি পাঠাও", - "MATH_ONLIST_OPERATOR_AVERAGE": "তালিকার গড়", - "MATH_ONLIST_TOOLTIP_AVERAGE": "পাঠাবে তালিকার সব সংখ্যার গড়।", - "MATH_ONLIST_OPERATOR_MEDIAN": "তালিকার মধ্যমা", - "MATH_ONLIST_TOOLTIP_MEDIAN": "তালিকার মধ্যমা সংখ্যাটি পাঠাবে।", - "MATH_ONLIST_OPERATOR_RANDOM": "তালিকার এলোমেলো পদ", - "MATH_ONLIST_TOOLTIP_RANDOM": "তালিকা থেকে এলোমেলোভাবে একটি পদ পাঠাবে।", - "MATH_MODULO_TITLE": "%1 ÷ %2 এর ভাগশেষ", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "এলোমেলো ভগ্নাংশ", - "TEXT_TEXT_TOOLTIP": "একটি অক্ষর, শব্দ অথবা বাক্য।", - "TEXT_CREATE_JOIN_TITLE_JOIN": "যোগ", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "লেখাটিতে একটি পদ যোগ করুন।", - "TEXT_LENGTH_TITLE": "%1-এর দৈর্ঘ্য", - "TEXT_ISEMPTY_TITLE": "%1 খালি", - "TEXT_ISEMPTY_TOOLTIP": "পাঠাবে সত্য যদি সরবরাহকৃত লেখাটি খালি হয়।", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "বড়হাতের অক্ষরে", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "ছোটহাতের অক্ষরে", - "TEXT_TRIM_OPERATOR_BOTH": "উভয় পাশ থেকে খালি অংশ ছাটাই", - "TEXT_TRIM_OPERATOR_LEFT": "বামপাশ থেকে খালি অংশ ছাটাই", - "TEXT_TRIM_OPERATOR_RIGHT": "ডানপাশ থেকে খালি অংশ ছাটাই", - "TEXT_PRINT_TITLE": "%1 মুদ্রণ করুন", - "TEXT_REVERSE_MESSAGE0": "%1 উল্টান", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "LISTS_CREATE_EMPTY_TITLE": "খালি তালিকা তৈরি করুন", - "LISTS_CREATE_EMPTY_TOOLTIP": "পাঠাবে একটি তালিকা, দের্ঘ্য হবে ০, কোন উপাত্ত থাকবে না", - "LISTS_CREATE_WITH_TOOLTIP": "যেকোন সংখ্যক পদ নিয়ে একটি তালিকা তৈরি করুন।", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "তালিকা", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "তালিকায় একটি পদ যোগ করুন।", - "LISTS_LENGTH_TITLE": "%1-এর দৈর্ঘ্য", - "LISTS_LENGTH_TOOLTIP": "একটি তালিকার দৈর্ঘ্য পাঠাবে।", - "LISTS_ISEMPTY_TITLE": "%1 খালি", - "LISTS_ISEMPTY_TOOLTIP": "পাঠাবে সত্য যদি তালিকাটি খালি হয়।", - "LISTS_INLIST": "তালিকার মধ্যে", - "LISTS_INDEX_OF_FIRST": "আইটেমের প্রথম সংঘটন খুঁজুন", - "LISTS_INDEX_OF_LAST": "আইটেমের শেষ সংঘটন খুঁজুন", - "LISTS_GET_INDEX_GET": "নিন", - "LISTS_GET_INDEX_GET_REMOVE": "নিন ও সরান", - "LISTS_GET_INDEX_REMOVE": "অপসারণ", - "LISTS_GET_INDEX_FROM_END": "# শেষ থেকে", - "LISTS_GET_INDEX_FIRST": "প্রথম", - "LISTS_GET_INDEX_LAST": "শেষ", - "LISTS_GET_INDEX_RANDOM": "এলোমেলো", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "তালিকার প্রথম পদটি পাঠাবে।", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "তালিকার শেষ পদটি পাঠাবে।", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "এলোমেলোভাবে তালিকার যেকোন একটি পদ পাঠাবে।", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "অপসারণ করুন এবং তালিকার প্রথম পদটি পাঠান।", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "অপসারণ করুন এবং তালিকার শেষ পদটি পাঠান।", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "অপসারণ করুন এবং তালিকার এলোমেলো একটি পদ পাঠান।", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "তালিকার প্রথম পদটি অপসারণ করা হয়েছে।", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "তালিকার শেষ পদটি অপসারণ করা হয়েছে।", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "তালিকা থেকে এলোমেলো একটি পদ অপসারণ করা হয়েছে।", - "LISTS_SPLIT_LIST_FROM_TEXT": "লিখা থেকে তালিকা তৈরি করুন", - "LISTS_SPLIT_TEXT_FROM_LIST": "তালিকা থেকে লিখা তৈরি করুন", - "LISTS_REVERSE_TOOLTIP": "একটি তালিকার একটি অনুলিপি উল্টান", - "VARIABLES_SET_CREATE_GET": "'%1 নিন' তৈরি করুন", - "PROCEDURES_DEFNORETURN_TITLE": "এতে", - "PROCEDURES_DEFNORETURN_TOOLTIP": "আউটপুট ছাড়া একটি ক্রিয়া তৈরি করুন।", - "PROCEDURES_DEFRETURN_RETURN": "পাঠাবে", - "PROCEDURES_DEFRETURN_TOOLTIP": "আউটপুট সহ একটি ক্রিয়া তৈরি করুন।", - "PROCEDURES_MUTATORARG_TITLE": "ইনপুটের নাম:", - "PROCEDURES_MUTATORARG_TOOLTIP": "ক্রিয়াতে একটি ইনপুট যোগ করুন।", - "PROCEDURES_HIGHLIGHT_DEF": "ক্রিয়ার সংজ্ঞা উজ্জল করুন", - "PROCEDURES_IFRETURN_TOOLTIP": "যদি মান সত্য হয় তাহলে দ্বিতীয় মান পাঠাবে।", - "DIALOG_OK": "ঠিক আছে", - "DIALOG_CANCEL": "বাতিল" -} +{ + "@metadata": { + "authors": [ + "Aftabuzzaman", + "MasterMinhaz", + "Rakibul", + "Rasal Lia", + "Tauhid16", + "আফতাবুজ্জামান", + "এম আবু সাঈদ" + ] + }, + "VARIABLES_DEFAULT_NAME": "পদ", + "UNNAMED_KEY": "নামহীন", + "TODAY": "আজ", + "DUPLICATE_BLOCK": "প্রতিলিপি", + "ADD_COMMENT": "মন্তব্য যোগ করুন", + "REMOVE_COMMENT": "মন্তব্য সরাও", + "EXTERNAL_INPUTS": "বহি:স্থ ইনপুট", + "INLINE_INPUTS": "সারি ইনপুট", + "DELETE_BLOCK": "ব্লকটি মুছে ফেল", + "DELETE_X_BLOCKS": "%1 ব্লক অপসারণ কর", + "DELETE_ALL_BLOCKS": "সব %1টি ব্লক অপসারণ করবেন?", + "CLEAN_UP": "ব্লকসমূহ পরিস্কার করুন", + "COLLAPSE_BLOCK": "ব্লক সঙ্কুচিত করুন", + "COLLAPSE_ALL": "ব্লকসমূহ সঙ্কুচিত করুন", + "EXPAND_BLOCK": "ব্লকটি সম্প্রসারিত কর", + "EXPAND_ALL": "ব্লকগুলো সম্প্রসারিত কর", + "DISABLE_BLOCK": "ব্লকটি বিকল কর", + "ENABLE_BLOCK": "ব্লকটি সচল কর", + "HELP": "সাহায্য", + "UNDO": "পূর্বাবস্থা", + "REDO": "পুনরায় করুন", + "CHANGE_VALUE_TITLE": "মান পরিবর্তন করুন:", + "RENAME_VARIABLE": "চলকের নাম পরিবর্তন...", + "RENAME_VARIABLE_TITLE": "'%1' চলকগুলোর নতুন নাম দিন:", + "NEW_VARIABLE": "চলক তৈরি করুন...", + "NEW_VARIABLE_TITLE": "নতুন চলকের নাম:", + "VARIABLE_ALREADY_EXISTS": "'%1' নামের চলক পূর্ব থেকে অাছে।", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' নামের চলক '%2' ধরনের চলকের জন্য পূর্ব থেকেই অাছে।", + "DELETE_VARIABLE_CONFIRMATION": "'%2' চলকের '%1'টি ব্যবহার অপসারণ করবেন?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%1' চলক অপসারণ করা যাবে না কারণ এটি '%2' কার্যপ্রণালীর সংজ্ঞার অংশ", + "DELETE_VARIABLE": "'%1' চলকটি অপসারণ করুন", + "COLOUR_PICKER_HELPURL": "https://bn.wikipedia.org/wiki/রং", + "COLOUR_PICKER_TOOLTIP": "প্যালেট থেকে একটি রং পছন্দ করুন", + "COLOUR_RANDOM_TITLE": "এলোমেলো রং", + "COLOUR_RANDOM_TOOLTIP": "এলোমেলোভাবে একটি রং পছন্দ করুন।", + "COLOUR_RGB_TITLE": "রং সহ", + "COLOUR_RGB_RED": "লাল", + "COLOUR_RGB_GREEN": "সবুজ", + "COLOUR_RGB_BLUE": "নীল", + "COLOUR_RGB_TOOLTIP": "একটি রং তৈরি করুন নির্দিষ্ট পরিমাণে লাল, সবুজ এবং নীল রং মিশ্রিত করে। প্রত্যেকটির মান অবশ্যই ০ থেকে ১০০ এর মধ্যে হতে হবে।", + "COLOUR_BLEND_TITLE": "মিশ্রণ", + "COLOUR_BLEND_COLOUR1": "রং ১", + "COLOUR_BLEND_COLOUR2": "রং ২", + "COLOUR_BLEND_RATIO": "অনুপাত", + "COLOUR_BLEND_TOOLTIP": "প্রদত্ত অনুপাত(০.০ - ১.০) অনুসারে দুটি রং একসাথে মিশ্রিত করুন।", + "CONTROLS_REPEAT_HELPURL": "https://bn.wikipedia.org/wiki/প্রবেশ_পথ", + "CONTROLS_REPEAT_TITLE": "%1 বার পুনরাবৃত্তি করো", + "CONTROLS_REPEAT_INPUT_DO": "করুন", + "CONTROLS_REPEAT_TOOLTIP": "কিছু বিবরণ বারবার দিন।", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "অাবার করুন যখন", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "অাবার করুন যতক্ষণ না", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "যখন একটি মূল্যমান সঠিক, তখন কিছু বিবরণ দিন।", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "যখন একটি মূল্যমান মিথ্যা, তখন কিছু বিবৃতি দিন।", + "CONTROLS_FOR_TOOLTIP": "চলক %1 প্রস্তুত করুন, শুরু থেকে শেষ পর্যন্ত সংখ্যা গ্রহন করতে যা নির্দেশিত বিরতি গণনা করছে এবং নির্দেশিত ব্লক সমূহ সম্পন্ন করতে।", + "CONTROLS_FOR_TITLE": "গণনা কর %1 %4 দিয়ে %2 থেকে %3", + "CONTROLS_FOREACH_TITLE": "প্রত্যেকটি পদের জন্য %1 তালিকার মধ্যে %2", + "CONTROLS_FOREACH_TOOLTIP": "কোন তালিকায় প্রতিবারের জন্য, আইটেমের সাথে চলক '%1' বসান এবং কিছু বিবরণ দিন।", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "প্রবেশপথ থেকে চলে অাসুন", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "পুনরাবৃত্তি চালিয়ে যান পরবর্তী প্রবেশপথে", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "সংশ্লিষ্ট প্রবেশপথ থেকে চলে অাসুন", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "এই প্রবেশপথের অবশিষ্ট অংশ বাদ দিন এবং পরবর্তী প্রচেষ্টা চালিয়ে যান।", + "CONTROLS_FLOW_STATEMENTS_WARNING": "সর্তকীবার্তা: এই ব্লকটি শুধুমাত্র লুপের মধ্যে ব্যবহার করা যাবে।", + "CONTROLS_IF_TOOLTIP_1": "যদি একটি মূল্যমাস সত্য হয়, তবে কিছু বিবরণ দিন", + "CONTROLS_IF_TOOLTIP_2": "যদি একটি মূল্যমান সত্য হয়, তবে বিবৃতিসমূহের প্রথম ব্লকটা অন্যথায় বিবৃতির দ্বিতীয় ব্লক।", + "CONTROLS_IF_TOOLTIP_3": "যদি প্রথম মূল্যমান সঠিক হয়, তবে বর্ণিত প্রথম ব্লকটি সম্পন্ন করুন। অন্যথায়, দ্বিতীয় মূল্যমান সঠিক হয়, দ্বিতীয় ব্লক সম্পন্ন করুন।", + "CONTROLS_IF_MSG_IF": "যদি", + "CONTROLS_IF_MSG_ELSEIF": "নতুবা যদি", + "CONTROLS_IF_MSG_ELSE": "নতুবা", + "CONTROLS_IF_ELSEIF_TOOLTIP": "যদি নামক ব্লক এ একটি শর্ত যোগ করুন।", + "LOGIC_COMPARE_TOOLTIP_EQ": "পাঠাবে সত্য যদি উভয় ইনপুটই সমান হয়।", + "LOGIC_COMPARE_TOOLTIP_NEQ": "পাঠাবে সত্য যদি উভয় ইনপুটই সমান না হয়।", + "LOGIC_COMPARE_TOOLTIP_LT": "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট হয়।", + "LOGIC_COMPARE_TOOLTIP_LTE": "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে ছোট অথবা সমান হয়।", + "LOGIC_COMPARE_TOOLTIP_GT": "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় হয়।", + "LOGIC_COMPARE_TOOLTIP_GTE": "পাঠাবে সত্য যদি প্রথম ইনপুট দ্বিতীয় ইনপুট থেকে বড় অথবা সমান হয়।", + "LOGIC_OPERATION_TOOLTIP_AND": "পাঠাবে সত্য যদি উভয় ইনপুটই সত্য হয়।", + "LOGIC_OPERATION_AND": "এবং", + "LOGIC_OPERATION_TOOLTIP_OR": "পাঠাবে সত্য যদি অন্ততপক্ষে যেকোন একটি ইনপুট সত্য হয়।", + "LOGIC_OPERATION_OR": "অথবা", + "LOGIC_NEGATE_TITLE": "%1 নয়", + "LOGIC_NEGATE_TOOLTIP": "পাঠাবে সত্য যদি ইনপুট মিথ্যা হয়। পাঠাবে মিথ্যা যদি ইনপুট সত্য হয়।", + "LOGIC_BOOLEAN_TRUE": "সত্য", + "LOGIC_BOOLEAN_FALSE": "মিথ্যা", + "LOGIC_BOOLEAN_TOOLTIP": "পাঠাবে হয় সত্য অথবা মিথ্যা।", + "LOGIC_NULL": "কিছু না", + "LOGIC_NULL_TOOLTIP": "কিছু ফেরত দিবে না।", + "LOGIC_TERNARY_CONDITION": "পরীক্ষা", + "LOGIC_TERNARY_IF_TRUE": "যদি সত্য হয়", + "LOGIC_TERNARY_IF_FALSE": "যদি মিথ্যা হয়", + "MATH_NUMBER_HELPURL": "https://bn.wikipedia.org/wiki/সংখ্যা", + "MATH_NUMBER_TOOLTIP": "একটি সংখ্যা।", + "MATH_ARITHMETIC_TOOLTIP_ADD": "পাঠাবে দুটি সংখ্যার যোগফল।", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "পাঠাবে দুটি সংখ্যার বিয়োগফল।", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "পাঠাবে দুটি সংখ্যার গুণফল।", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "পাঠাবে দুটি সংখ্যার ভাগফল।", + "MATH_SINGLE_OP_ROOT": "বর্গমূল", + "MATH_SINGLE_TOOLTIP_ROOT": "পাঠাবে একটি সংখ্যার বর্গমূল।", + "MATH_SINGLE_OP_ABSOLUTE": "পরম", + "MATH_SINGLE_TOOLTIP_ABS": "পাঠাবে সংখ্যার পরমমান।", + "MATH_IS_EVEN": "জোড় সংখ্যা", + "MATH_IS_ODD": "বিজোড় সংখ্যা", + "MATH_IS_PRIME": "মৌলিক সংখ্যা", + "MATH_IS_POSITIVE": "ইতিবাচক", + "MATH_IS_NEGATIVE": "নেতিবাচক", + "MATH_IS_DIVISIBLE_BY": "দ্বারা বিভাজ্য", + "MATH_CHANGE_TITLE": "%2 দ্বারা %1 পরিবর্তন", + "MATH_ONLIST_OPERATOR_SUM": "তালিকার যোগফল", + "MATH_ONLIST_TOOLTIP_SUM": "পাঠাবে তালিকার সব সংখ্যার যোগফল।", + "MATH_ONLIST_OPERATOR_MIN": "তালিকার মধ্যে সর্বনিম্ন", + "MATH_ONLIST_TOOLTIP_MIN": "তালিকার মধ্যে সর্বনিম্ন সংখ্যাটি পাঠাও", + "MATH_ONLIST_OPERATOR_MAX": "তালিকার মধ্যে সর্বোচ্চ", + "MATH_ONLIST_TOOLTIP_MAX": "তালিকার মধ্যে সর্বোচ্চ সংখ্যাটি পাঠাও", + "MATH_ONLIST_OPERATOR_AVERAGE": "তালিকার গড়", + "MATH_ONLIST_TOOLTIP_AVERAGE": "পাঠাবে তালিকার সব সংখ্যার গড়।", + "MATH_ONLIST_OPERATOR_MEDIAN": "তালিকার মধ্যমা", + "MATH_ONLIST_TOOLTIP_MEDIAN": "তালিকার মধ্যমা সংখ্যাটি পাঠাবে।", + "MATH_ONLIST_OPERATOR_RANDOM": "তালিকার এলোমেলো পদ", + "MATH_ONLIST_TOOLTIP_RANDOM": "তালিকা থেকে এলোমেলোভাবে একটি পদ পাঠাবে।", + "MATH_MODULO_TITLE": "%1 ÷ %2 এর ভাগশেষ", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "এলোমেলো ভগ্নাংশ", + "TEXT_TEXT_TOOLTIP": "একটি অক্ষর, শব্দ অথবা বাক্য।", + "TEXT_CREATE_JOIN_TITLE_JOIN": "যোগ", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "লেখাটিতে একটি পদ যোগ করুন।", + "TEXT_LENGTH_TITLE": "%1-এর দৈর্ঘ্য", + "TEXT_ISEMPTY_TITLE": "%1 খালি", + "TEXT_ISEMPTY_TOOLTIP": "পাঠাবে সত্য যদি সরবরাহকৃত লেখাটি খালি হয়।", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "বড়হাতের অক্ষরে", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "ছোটহাতের অক্ষরে", + "TEXT_TRIM_OPERATOR_BOTH": "উভয় পাশ থেকে খালি অংশ ছাটাই", + "TEXT_TRIM_OPERATOR_LEFT": "বামপাশ থেকে খালি অংশ ছাটাই", + "TEXT_TRIM_OPERATOR_RIGHT": "ডানপাশ থেকে খালি অংশ ছাটাই", + "TEXT_PRINT_TITLE": "%1 মুদ্রণ করুন", + "TEXT_REVERSE_MESSAGE0": "%1 উল্টান", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "LISTS_CREATE_EMPTY_TITLE": "খালি তালিকা তৈরি করুন", + "LISTS_CREATE_EMPTY_TOOLTIP": "পাঠাবে একটি তালিকা, দের্ঘ্য হবে ০, কোন উপাত্ত থাকবে না", + "LISTS_CREATE_WITH_TOOLTIP": "যেকোন সংখ্যক পদ নিয়ে একটি তালিকা তৈরি করুন।", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "তালিকা", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "তালিকায় একটি পদ যোগ করুন।", + "LISTS_LENGTH_TITLE": "%1-এর দৈর্ঘ্য", + "LISTS_LENGTH_TOOLTIP": "একটি তালিকার দৈর্ঘ্য পাঠাবে।", + "LISTS_ISEMPTY_TITLE": "%1 খালি", + "LISTS_ISEMPTY_TOOLTIP": "পাঠাবে সত্য যদি তালিকাটি খালি হয়।", + "LISTS_INLIST": "তালিকার মধ্যে", + "LISTS_INDEX_OF_FIRST": "আইটেমের প্রথম সংঘটন খুঁজুন", + "LISTS_INDEX_OF_LAST": "আইটেমের শেষ সংঘটন খুঁজুন", + "LISTS_GET_INDEX_GET": "নিন", + "LISTS_GET_INDEX_GET_REMOVE": "নিন ও সরান", + "LISTS_GET_INDEX_REMOVE": "অপসারণ", + "LISTS_GET_INDEX_FROM_END": "# শেষ থেকে", + "LISTS_GET_INDEX_FIRST": "প্রথম", + "LISTS_GET_INDEX_LAST": "শেষ", + "LISTS_GET_INDEX_RANDOM": "এলোমেলো", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "তালিকার প্রথম পদটি পাঠাবে।", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "তালিকার শেষ পদটি পাঠাবে।", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "এলোমেলোভাবে তালিকার যেকোন একটি পদ পাঠাবে।", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "অপসারণ করুন এবং তালিকার প্রথম পদটি পাঠান।", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "অপসারণ করুন এবং তালিকার শেষ পদটি পাঠান।", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "অপসারণ করুন এবং তালিকার এলোমেলো একটি পদ পাঠান।", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "তালিকার প্রথম পদটি অপসারণ করা হয়েছে।", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "তালিকার শেষ পদটি অপসারণ করা হয়েছে।", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "তালিকা থেকে এলোমেলো একটি পদ অপসারণ করা হয়েছে।", + "LISTS_SPLIT_LIST_FROM_TEXT": "লিখা থেকে তালিকা তৈরি করুন", + "LISTS_SPLIT_TEXT_FROM_LIST": "তালিকা থেকে লিখা তৈরি করুন", + "LISTS_REVERSE_TOOLTIP": "একটি তালিকার একটি অনুলিপি উল্টান", + "VARIABLES_SET_CREATE_GET": "'%1 নিন' তৈরি করুন", + "PROCEDURES_DEFNORETURN_TITLE": "এতে", + "PROCEDURES_DEFNORETURN_TOOLTIP": "আউটপুট ছাড়া একটি ক্রিয়া তৈরি করুন।", + "PROCEDURES_DEFRETURN_RETURN": "পাঠাবে", + "PROCEDURES_DEFRETURN_TOOLTIP": "আউটপুট সহ একটি ক্রিয়া তৈরি করুন।", + "PROCEDURES_MUTATORARG_TITLE": "ইনপুটের নাম:", + "PROCEDURES_MUTATORARG_TOOLTIP": "ক্রিয়াতে একটি ইনপুট যোগ করুন।", + "PROCEDURES_HIGHLIGHT_DEF": "ক্রিয়ার সংজ্ঞা উজ্জল করুন", + "PROCEDURES_IFRETURN_TOOLTIP": "যদি মান সত্য হয় তাহলে দ্বিতীয় মান পাঠাবে।", + "DIALOG_OK": "ঠিক আছে", + "DIALOG_CANCEL": "বাতিল" +} diff --git a/msg/json/br.json b/msg/json/br.json index 886c149fc00..f59048b90ec 100644 --- a/msg/json/br.json +++ b/msg/json/br.json @@ -1,344 +1,344 @@ -{ - "@metadata": { - "authors": [ - "Fohanno", - "Fulup", - "Gwenn-Ael", - "Vicng", - "Y-M D" - ] - }, - "VARIABLES_DEFAULT_NAME": "elfenn", - "UNNAMED_KEY": "dizanv", - "TODAY": "Hiziv", - "DUPLICATE_BLOCK": "Eiladuriñ", - "ADD_COMMENT": "Ouzhpennañ un evezhiadenn", - "REMOVE_COMMENT": "Lemel an evezhiadenn kuit", - "DUPLICATE_COMMENT": "Eiladiñ an eilenn", - "EXTERNAL_INPUTS": "Monedoù diavaez", - "INLINE_INPUTS": "Monedoù enlinenn", - "DELETE_BLOCK": "Dilemel ar bloc'h", - "DELETE_X_BLOCKS": "Dilemel %1 bloc'h", - "DELETE_ALL_BLOCKS": "Diverkañ an holl vloc'hoù %1 ?", - "CLEAN_UP": "Naetaat ar bloc'hoù", - "COLLAPSE_BLOCK": "Bihanaat ar bloc'h", - "COLLAPSE_ALL": "Bihanaat ar bloc'hoù", - "EXPAND_BLOCK": "Astenn ar bloc'h", - "EXPAND_ALL": "Astenn ar bloc'hoù", - "DISABLE_BLOCK": "Diweredekaat ar bloc'h", - "ENABLE_BLOCK": "Gweredekaat ar bloc'h", - "HELP": "Skoazell", - "UNDO": "Dizober", - "REDO": "Adober", - "CHANGE_VALUE_TITLE": "Kemmañ an dalvoudenn :", - "RENAME_VARIABLE": "Adenvel an argemmenn...", - "RENAME_VARIABLE_TITLE": "Adenvel an holl argemmennoù '%1' e :", - "NEW_VARIABLE": "Krouiñ un argemmenn nevez...", - "NEW_STRING_VARIABLE": "Krouiñ un argemmenn chadenn...", - "NEW_NUMBER_VARIABLE": "Krouiñ un argemm niver...", - "NEW_COLOUR_VARIABLE": "Krouiñ un argemmenn liv...", - "NEW_VARIABLE_TYPE_TITLE": "Doare nevez a argemm:", - "NEW_VARIABLE_TITLE": "Anv an argemmenn nevez :", - "VARIABLE_ALREADY_EXISTS": "Un argemmenn anvet '%1' zo anezhi dija.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Un argemenn anvet '%1' zo c'hoazh evit un argemenn all eus ar seurt : '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Lemel %1 implij eus an argemm '%2' ?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne ch'aller ket dilemel an argemmenn \"%1\" dre m'eo lod eus dielfennadur an arc'hwel \"%2\"", - "DELETE_VARIABLE": "Lemel an argemm '%1'", - "COLOUR_PICKER_HELPURL": "http://br.wikipedia.org/wiki/Liv", - "COLOUR_PICKER_TOOLTIP": "Dibab ul liv diwar al livaoueg.", - "COLOUR_RANDOM_TITLE": "liv dargouezhek", - "COLOUR_RANDOM_TOOLTIP": "Tennañ ul liv d'ar sord", - "COLOUR_RGB_TITLE": "liv gant", - "COLOUR_RGB_RED": "ruz", - "COLOUR_RGB_GREEN": "gwer", - "COLOUR_RGB_BLUE": "glas", - "COLOUR_RGB_TOOLTIP": "Krouiñ ul liv gant ar c'hementad spisaet a ruz, a wer hag a c'hlas. Etre 0 ha 100 e tle bezañ an holl dalvoudoù.", - "COLOUR_BLEND_TITLE": "meskañ", - "COLOUR_BLEND_COLOUR1": "liv 1", - "COLOUR_BLEND_COLOUR2": "liv 2", - "COLOUR_BLEND_RATIO": "feur", - "COLOUR_BLEND_TOOLTIP": "a gemmesk daou liv gant ur feur roet(0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "adober %1 gwech", - "CONTROLS_REPEAT_INPUT_DO": "ober", - "CONTROLS_REPEAT_TOOLTIP": "Seveniñ urzhioù zo meur a wech", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "adober keit ha ma", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "adober betek", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Keit ha ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Keit ha ma vez faos un dalvoudenn, seveniñ urzhioù zo neuze.", - "CONTROLS_FOR_TOOLTIP": "Ober e doare ma kemero an argemmenn \"%1\" an talvoudennoù adalek niverenn an deroù betek niverenn an dibenn, en ur inkremantiñ an esaouenn, ha seveniñ an urzhioù spisaet.", - "CONTROLS_FOR_TITLE": "kontañ gant %1 eus %2 da %3 dre %4", - "CONTROLS_FOREACH_TITLE": "evit pep elfenn %1 er roll %2", - "CONTROLS_FOREACH_TOOLTIP": "Evit pep elfenn en ur roll, reiñ talvoud an elfenn d'an argemmenn '%1', ha seveniñ urzhioù zo da c'houde.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Mont e-maez an adlañsañ", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "Kenderc'hel gant iteradur nevez ar rodell", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Mont e-maez ar boukl engronnus.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Lammat ar rest eus ar rodell, ha kenderc'hel gant an iteradur war-lerc'h.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Diwallit : ne c'hall ar bloc'h-mañ bezañ implijet nemet e-barzh ur boukl.", - "CONTROLS_IF_TOOLTIP_1": "Ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze.", - "CONTROLS_IF_TOOLTIP_2": "Ma vez gwir un dalvoudenn, seveniñ ar c'henañ bloc'had urzhioù neuze. Anez seveniñ an eil bloc'had urzhioù.", - "CONTROLS_IF_TOOLTIP_3": "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had urzhioù neuze. Anez ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù.", - "CONTROLS_IF_TOOLTIP_4": "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had. Anez, ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù. Ma ne vez gwir talvoudenn ebet, seveniñ ar bloc'had diwezhañ a urzhioù.", - "CONTROLS_IF_MSG_IF": "ma", - "CONTROLS_IF_MSG_ELSEIF": "mod all ma", - "CONTROLS_IF_MSG_ELSE": "a-hend-all", - "CONTROLS_IF_IF_TOOLTIP": "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h ma.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Ouzhpennañ un amplegad d'ar bloc'h ma.", - "CONTROLS_IF_ELSE_TOOLTIP": "Ouzhpennañ un amplegad dibenn lak-pep-tra d'ar bloc'h ma.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Distreiñ gwir m'eo par an daou voned.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Distreiñ gwir ma n'eo ket par an daou voned.", - "LOGIC_COMPARE_TOOLTIP_LT": "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil pe m'eo par dezhañ.", - "LOGIC_COMPARE_TOOLTIP_GT": "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil pe par dezhañ.", - "LOGIC_OPERATION_TOOLTIP_AND": "Distreiñ gwir m'eo gwir an da daou voned.", - "LOGIC_OPERATION_AND": "ha(g)", - "LOGIC_OPERATION_TOOLTIP_OR": "Distreiñ gwir m'eo gwir unan eus an daou voned da nebeutañ.", - "LOGIC_OPERATION_OR": "pe", - "LOGIC_NEGATE_TITLE": "nann %1", - "LOGIC_NEGATE_TOOLTIP": "Distreiñ gwir m'eo faos ar moned. Distreiñ faos m'eo gwir ar moned.", - "LOGIC_BOOLEAN_TRUE": "gwir", - "LOGIC_BOOLEAN_FALSE": "gaou", - "LOGIC_BOOLEAN_TOOLTIP": "Distreiñ pe gwir pe faos", - "LOGIC_NULL": "Null", - "LOGIC_NULL_TOOLTIP": "Distreiñ null.", - "LOGIC_TERNARY_CONDITION": "amprouad", - "LOGIC_TERNARY_IF_TRUE": "m'eo gwir", - "LOGIC_TERNARY_IF_FALSE": "m'eo gaou", - "LOGIC_TERNARY_TOOLTIP": "Gwiriañ an amplegad e 'prouad'. M'eo gwir an amplegad, distreiñ an dalvoudenn 'm'eo gwir'; anez distreiñ ar moned 'm'eo faos'.", - "MATH_NUMBER_HELPURL": "https://br.wikipedia.org/wiki/Niver", - "MATH_NUMBER_TOOLTIP": "Un niver.", - "MATH_ARITHMETIC_HELPURL": "https://br.wikipedia.org/wiki/Aritmetik", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Distreiñ sammad daou niver.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Distreiñ diforc'h daou niver", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Distreiñ liesad daou niver.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Distreiñ rannad daou niver.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Distreiñ an niver kentañ lakaet dindan gallouter an eil niver.", - "MATH_SINGLE_HELPURL": "https://br.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "gwrizienn garrez", - "MATH_SINGLE_TOOLTIP_ROOT": "Distreiñ gwrizienn garrez un niver", - "MATH_SINGLE_OP_ABSOLUTE": "dizave", - "MATH_SINGLE_TOOLTIP_ABS": "Distreiñ talvoud dizave un niver.", - "MATH_SINGLE_TOOLTIP_NEG": "Distreiñ enebad un niver", - "MATH_SINGLE_TOOLTIP_LN": "Distreiñ logaritm naturel un niver", - "MATH_SINGLE_TOOLTIP_LOG10": "Distreiñ logaritm diazez 10 un niver", - "MATH_SINGLE_TOOLTIP_EXP": "Distreiñ galloudad un niver.", - "MATH_SINGLE_TOOLTIP_POW10": "Distreiñ 10 da c'halloudad un niver.", - "MATH_TRIG_HELPURL": "https://br.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Distreiñ sinuz ur c'horn (ket e radianoù)", - "MATH_TRIG_TOOLTIP_COS": "Distreiñ kosinuz ur c'horn (ket e radianoù)", - "MATH_TRIG_TOOLTIP_TAN": "Distreiñ tangent ur c'horn (ket e radianoù).", - "MATH_TRIG_TOOLTIP_ASIN": "Distreiñ ark sinuz un niver", - "MATH_TRIG_TOOLTIP_ACOS": "Distreiñ ark kosinuz un niver", - "MATH_TRIG_TOOLTIP_ATAN": "Distreiñ ark tangent un niver", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Distreiñ unan eus digemmennoù red : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (anvevenn).", - "MATH_IS_EVEN": "zo par", - "MATH_IS_ODD": "zo ampar", - "MATH_IS_PRIME": "zo kentañ", - "MATH_IS_WHOLE": "zo anterin", - "MATH_IS_POSITIVE": "a zo pozitivel", - "MATH_IS_NEGATIVE": "a zo negativel", - "MATH_IS_DIVISIBLE_BY": "a zo rannadus dre", - "MATH_IS_TOOLTIP": "Gwiriañ m'eo par, anpar, kentañ, muiel, leiel un niverenn pe ma c'haller rannañ anezhi dre un niver roet zo. Distreiñ gwir pe faos.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "kemmañ %1 gant %2", - "MATH_CHANGE_TOOLTIP": "Ouzhpennañ un niver d'an argemmenn '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Rontaat un niver dindan pe a-us", - "MATH_ROUND_OPERATOR_ROUND": "Rontaat", - "MATH_ROUND_OPERATOR_ROUNDUP": "Rontaat a-us", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "Rontaat dindan", - "MATH_ONLIST_OPERATOR_SUM": "Sammad al listenn", - "MATH_ONLIST_TOOLTIP_SUM": "Distreiñ sammad an holl niveroù zo el listenn.", - "MATH_ONLIST_OPERATOR_MIN": "Izegenn al listenn", - "MATH_ONLIST_TOOLTIP_MIN": "Distreiñ an niver bihanañ el listenn", - "MATH_ONLIST_OPERATOR_MAX": "Uc'hegenn al listenn", - "MATH_ONLIST_TOOLTIP_MAX": "Distreiñ an niver brasañ el listenn.", - "MATH_ONLIST_OPERATOR_AVERAGE": "Keitat al listenn", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Distreiñ keitad (niveroniel) an talvoudennoù niverel el listenn.", - "MATH_ONLIST_OPERATOR_MEDIAN": "Kreizad al listenn", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Distreiñ an niver kreiz el listenn", - "MATH_ONLIST_OPERATOR_MODE": "modoù stankañ el listenn", - "MATH_ONLIST_TOOLTIP_MODE": "Distreiñ ul listennad elfennoù stankoc'h el listenn.", - "MATH_ONLIST_OPERATOR_STD_DEV": "forc'had standart eus al listenn", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Distreiñ forc'had standart al listenn.", - "MATH_ONLIST_OPERATOR_RANDOM": "Elfennn eus al listenn tennet d'ar sord", - "MATH_ONLIST_TOOLTIP_RANDOM": "Distreiñ un elfenn zargouezhek el listenn", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "rest eus %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Distreiñ dilerc'h rannadur an div niver", - "MATH_CONSTRAIN_TITLE": "destrizhañ %1 etre %2 ha %3", - "MATH_CONSTRAIN_TOOLTIP": "Destrizhañ un niver da vezañ etre ar bevennoù spisaet (enlakaet)", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "anterin dargouezhek etre %1 ha %2", - "MATH_RANDOM_INT_TOOLTIP": "Distreiñ un anterin dargouezhek etre an div vevenn spisaet, endalc'het.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "Rann dargouezhek", - "MATH_RANDOM_FLOAT_TOOLTIP": "Distreiñ ur rann dargouezhek etre 0.0 (enkaelat) hag 1.0 (ezkaelat).", - "MATH_ATAN2_HELPURL": "https://fr.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 eus X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Adkas a ra ark tangent ar poent (X, Y) e derezioù etre -180 ha 180", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Ul lizherenn, ur ger pe ul linennad testenn.", - "TEXT_JOIN_TITLE_CREATEWITH": "krouiñ un destenn gant", - "TEXT_JOIN_TOOLTIP": "Krouit un tamm testenn en ur gevelstrollañ un niver bennak a elfennoù", - "TEXT_CREATE_JOIN_TITLE_JOIN": "stagañ", - "TEXT_CREATE_JOIN_TOOLTIP": "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h testenn-mañ.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ouzhpennañ un elfenn d'an destenn.", - "TEXT_APPEND_TITLE": "Ouzhpennañ an destenn %2 da %1", - "TEXT_APPEND_TOOLTIP": "Ouzhpennañ testenn d'an argemmenn'%1'.", - "TEXT_LENGTH_TITLE": "hirder %1", - "TEXT_LENGTH_TOOLTIP": "Distreiñ an niver a lizherennoù(en ur gontañ an esaouennoù e-barzh) en destenn roet.", - "TEXT_ISEMPTY_TITLE": "%1 zo goullo", - "TEXT_ISEMPTY_TOOLTIP": "Adkas gwir m'eo goullo an destenn roet.", - "TEXT_INDEXOF_TOOLTIP": "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus ar chadenn gentañ en eil chadenn. Distreiñ %1 ma n'eo ket kavet ar chadenn.", - "TEXT_INDEXOF_TITLE": "en destenn %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "kavout reveziadenn gentañ an destenn", - "TEXT_INDEXOF_OPERATOR_LAST": "kavout reveziadenn diwezhañ an destenn", - "TEXT_CHARAT_TITLE": "en destenn %1 %2", - "TEXT_CHARAT_FROM_START": "Kaout al lizherenn #", - "TEXT_CHARAT_FROM_END": "Kaout al lizherenn # adalek an dibenn.", - "TEXT_CHARAT_FIRST": "tapout al lizherenn gentañ", - "TEXT_CHARAT_LAST": "tapout al lizherenn ziwezhañ", - "TEXT_CHARAT_RANDOM": "Kaout ul lizherenn dre zegouezh", - "TEXT_CHARAT_TOOLTIP": "Distreiñ al lizherenn d'al lec'h spisaet.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Distreiñ un tamm spisaet eus an destenn.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "en destenn", - "TEXT_GET_SUBSTRING_START_FROM_START": "Kaout an ischadenn adalek al lizherenn #", - "TEXT_GET_SUBSTRING_START_FROM_END": "Kaout an ischadenn adalek al lizherenn # betek an dibenn", - "TEXT_GET_SUBSTRING_START_FIRST": "Kaout an ischadenn adalek al lizherenn gentañ", - "TEXT_GET_SUBSTRING_END_FROM_START": "betek al lizherenn #", - "TEXT_GET_SUBSTRING_END_FROM_END": "Betek al lizherenn # adalek an dibenn.", - "TEXT_GET_SUBSTRING_END_LAST": "d'al lizherenn diwezhañ", - "TEXT_CHANGECASE_TOOLTIP": "Distreiñ un eilenn eus an eilenn en un direnneg all", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "e PENNLIZHERENNOÙ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "e lizherennoù bihan", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Gant Ur Bennlizherenn E Deroù Pep Ger", - "TEXT_TRIM_TOOLTIP": "Distreiñ un eilenn eus an destenn gant an esaouennoù lamet eus un tu pe eus an daou du", - "TEXT_TRIM_OPERATOR_BOTH": "Lemel an esaouennoù en daou du", - "TEXT_TRIM_OPERATOR_LEFT": "Lemel an esaouennoù eus an tu kleiz", - "TEXT_TRIM_OPERATOR_RIGHT": "Lemel an esaouennoù eus an tu dehou", - "TEXT_PRINT_TITLE": "moullañ %1", - "TEXT_PRINT_TOOLTIP": "Moullañ an destenn, an niverenn pe un dalvoudenn spisaet all", - "TEXT_PROMPT_TYPE_TEXT": "goulenn un destenn gant ur gemennadenn", - "TEXT_PROMPT_TYPE_NUMBER": "pedadenn evit un niver gant ur c'hemennad", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Goulenn un niver gant an implijer.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Goulenn un destenn gant an implijer.", - "TEXT_COUNT_MESSAGE0": "niver %1 war %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Kontañ pet gwech e c'hoarvez un destenn bennak en un destenn bennak all.", - "TEXT_REPLACE_MESSAGE0": "erlec'hiañ %1 gant %2 e %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Erlec'hiañ holl reveziadennoù un destenn bennak gant un destenn all.", - "TEXT_REVERSE_MESSAGE0": "eilpennañ %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Eilpennañ urzh an arouezennoù en destenn.", - "LISTS_CREATE_EMPTY_TITLE": "krouiñ ur roll goullo", - "LISTS_CREATE_EMPTY_TOOLTIP": "Distreiñ ul listenn, 0 a hirder, n'eus enrolladenn ebet enni", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Krouiñ ur roll gant un niver bennak a elfennoù.", - "LISTS_CREATE_WITH_INPUT_WITH": "krouiñ ur roll gant", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "roll", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h listenn-mañ.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ouzhpennañ un elfenn d'ar roll", - "LISTS_REPEAT_TOOLTIP": "Krouiñ ul listenn a c'hoarvez eus an dalvoudenn roet arreet an niver a wech meneget", - "LISTS_REPEAT_TITLE": "Krouiñ ul listenn gant an elfenn %1 arreet %2 div wech", - "LISTS_LENGTH_TITLE": "hirder %1", - "LISTS_LENGTH_TOOLTIP": "Distreiñ hirder ul listenn.", - "LISTS_ISEMPTY_TITLE": "%1 zo goullo", - "LISTS_ISEMPTY_TOOLTIP": "Distreiñ gwir m'eo goullo al listenn.", - "LISTS_INLIST": "el listenn", - "LISTS_INDEX_OF_FIRST": "kavout reveziadenn gentañ un elfenn", - "LISTS_INDEX_OF_LAST": "kavout reveziadenn diwezhañ un elfenn", - "LISTS_INDEX_OF_TOOLTIP": "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus an elfenn en ul listenn. Distreiñ %1 ma n'eo ket kavet an destenn.", - "LISTS_GET_INDEX_GET": "tapout", - "LISTS_GET_INDEX_GET_REMOVE": "tapout ha lemel", - "LISTS_GET_INDEX_REMOVE": "lemel", - "LISTS_GET_INDEX_FROM_END": "# adalek ar fin", - "LISTS_GET_INDEX_FIRST": "kentañ", - "LISTS_GET_INDEX_LAST": "diwezhañ", - "LISTS_GET_INDEX_RANDOM": "dre zegouezh", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 eo an elfenn gentañ.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 eo an elfenn gentañ.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Distreiñ an elfenn el lec'h meneget en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Distreiñ an elfenn gentañ en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Distreiñ un elfenn diwezhañ en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Distreiñ un elfenn dre zegouezh en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Lemel ha distreiñ a ra an elfenn el lec'h meneget en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Lemel ha distreiñ a ra an elfenn gentañ en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Lemel ha distreiñ a ra an elfenn diwezhañ en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Lemel ha distreiñ a ra an elfenn dre zegouezh en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Lemel a ra an elfenn el lec'h meneget en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Lemel a ra an elfenn gentañ en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Lemel a ra an elfenn diwezhañ en ul listenn.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Lemel a ra un elfenn dre zegouezh en ul listenn.", - "LISTS_SET_INDEX_SET": "termenañ", - "LISTS_SET_INDEX_INSERT": "ensoc'hañ evel", - "LISTS_SET_INDEX_INPUT_TO": "evel", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Termenañ a ra an elfenn el lec'h meneget en ul listenn.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Termenañ a ra an elfenn gentañ en ul listenn.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Termenañ a ra an elfenn diwezhañ en ul listenn.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Termenañ a ra un elfenn dre zegouezh en ul listenn.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ensoc'hañ a ra an elfenn el lec'h meneget en ul listenn.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ensoc'hañ a ra an elfenn e deroù ul listenn.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ouzhpennañ a ra an elfenn e fin al listenn.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ensoc'hañ a ra an elfenn dre zegouezh en ul listenn.", - "LISTS_GET_SUBLIST_START_FROM_START": "Kaout an islistenn adalek #", - "LISTS_GET_SUBLIST_START_FROM_END": "Kaout an islistenn adalek # adalek an dibenn", - "LISTS_GET_SUBLIST_START_FIRST": "Kaout an islistenn adalek an deroù", - "LISTS_GET_SUBLIST_END_FROM_START": "da #", - "LISTS_GET_SUBLIST_END_FROM_END": "betek # adalek an dibenn", - "LISTS_GET_SUBLIST_END_LAST": "betek ar fin", - "LISTS_GET_SUBLIST_TOOLTIP": "Krouiñ un eilad eus lodenn spisaet ul listenn.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_SORT_TITLE": "Rummañ%1,%2,%3", - "LISTS_SORT_TOOLTIP": "Rummañ un eilenn eus ar roll", - "LISTS_SORT_ORDER_ASCENDING": "war gresk", - "LISTS_SORT_ORDER_DESCENDING": "war zigresk", - "LISTS_SORT_TYPE_NUMERIC": "niverel", - "LISTS_SORT_TYPE_TEXT": "Dre urzh al lizherenneg", - "LISTS_SORT_TYPE_IGNORECASE": "Dre urzh al lizherenneg, hep derc'hel kont eus an direnneg", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "Krouiñ ul listenn diwar an destenn", - "LISTS_SPLIT_TEXT_FROM_LIST": "Krouiñ un destenn diwar al listenn", - "LISTS_SPLIT_WITH_DELIMITER": "gant an dispartier", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Troc'hañ un destenn en ul listennad testennoù, o troc'hañ e pep dispartier.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Bodañ ul listennad testennoù en ul listenn hepken, o tispartiañ anezho gant un dispartier.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "eilpennañ %1", - "LISTS_REVERSE_TOOLTIP": "Eilpennañ un eilskrid eus ur roll.", - "VARIABLES_GET_TOOLTIP": "Distreiñ talvoud an argemm-mañ.", - "VARIABLES_GET_CREATE_SET": "Krouiñ 'termenañ %1'", - "VARIABLES_SET": "termenañ %1 da %2", - "VARIABLES_SET_TOOLTIP": "Termenañ a ra argemm-mañ evit ma vo par da dalvoudenn ar moned.", - "VARIABLES_SET_CREATE_GET": "Krouiñ 'kaout %1'", - "PROCEDURES_DEFNORETURN_TITLE": "da", - "PROCEDURES_DEFNORETURN_PROCEDURE": "ober un dra bennak", - "PROCEDURES_BEFORE_PARAMS": "gant :", - "PROCEDURES_CALL_BEFORE_PARAMS": "gant :", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Krouiñ un arc'hwel hep mont er-maez.", - "PROCEDURES_DEFNORETURN_COMMENT": "Deskrivañ an arc'hwel-mañ...", - "PROCEDURES_DEFRETURN_RETURN": "distreiñ", - "PROCEDURES_DEFRETURN_TOOLTIP": "Kouiñ un arc'hwel gant ur mont er-maez", - "PROCEDURES_ALLOW_STATEMENTS": "aotren an disklêriadurioù", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Diwallit : an arc'hwel-mañ en deus arventennoù eiladet.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Seveniñ an arc'hwel '%1' termenet gant an implijer.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Seveniñ an arc'hwel '%1' termenet gant an implijer hag implijout e zisoc'h.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "Monedoù", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Ouzhpennañ, lemel, pe adkempenn monedoù an arc'hwel-mañ.", - "PROCEDURES_MUTATORARG_TITLE": "Anv ar moned", - "PROCEDURES_MUTATORARG_TOOLTIP": "Ouzhpennañ ur moned d'an arc'hwel.", - "PROCEDURES_HIGHLIGHT_DEF": "Dreislinennañ termenadur an arc'hwel", - "PROCEDURES_CREATE_DO": "Krouiñ '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Ma'z eo gwir un dalvoudenn, distreiñ un eil talvoudenn neuze.", - "PROCEDURES_IFRETURN_WARNING": "Diwallit : Gallout a rafe ar bloc'h bezañ implijet e termenadur un arc'hwel hepken.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Lavaret un dra bennak...", - "WORKSPACE_ARIA_LABEL": "Takad labour Blockly", - "COLLAPSED_WARNINGS_WARNING": "Kemennoù-diwall zo er bloc'hadoù pleget.", - "DIALOG_OK": "Mat eo", - "DIALOG_CANCEL": "Nullañ" -} +{ + "@metadata": { + "authors": [ + "Fohanno", + "Fulup", + "Gwenn-Ael", + "Vicng", + "Y-M D" + ] + }, + "VARIABLES_DEFAULT_NAME": "elfenn", + "UNNAMED_KEY": "dizanv", + "TODAY": "Hiziv", + "DUPLICATE_BLOCK": "Eiladuriñ", + "ADD_COMMENT": "Ouzhpennañ un evezhiadenn", + "REMOVE_COMMENT": "Lemel an evezhiadenn kuit", + "DUPLICATE_COMMENT": "Eiladiñ an eilenn", + "EXTERNAL_INPUTS": "Monedoù diavaez", + "INLINE_INPUTS": "Monedoù enlinenn", + "DELETE_BLOCK": "Dilemel ar bloc'h", + "DELETE_X_BLOCKS": "Dilemel %1 bloc'h", + "DELETE_ALL_BLOCKS": "Diverkañ an holl vloc'hoù %1 ?", + "CLEAN_UP": "Naetaat ar bloc'hoù", + "COLLAPSE_BLOCK": "Bihanaat ar bloc'h", + "COLLAPSE_ALL": "Bihanaat ar bloc'hoù", + "EXPAND_BLOCK": "Astenn ar bloc'h", + "EXPAND_ALL": "Astenn ar bloc'hoù", + "DISABLE_BLOCK": "Diweredekaat ar bloc'h", + "ENABLE_BLOCK": "Gweredekaat ar bloc'h", + "HELP": "Skoazell", + "UNDO": "Dizober", + "REDO": "Adober", + "CHANGE_VALUE_TITLE": "Kemmañ an dalvoudenn :", + "RENAME_VARIABLE": "Adenvel an argemmenn...", + "RENAME_VARIABLE_TITLE": "Adenvel an holl argemmennoù '%1' e :", + "NEW_VARIABLE": "Krouiñ un argemmenn nevez...", + "NEW_STRING_VARIABLE": "Krouiñ un argemmenn chadenn...", + "NEW_NUMBER_VARIABLE": "Krouiñ un argemm niver...", + "NEW_COLOUR_VARIABLE": "Krouiñ un argemmenn liv...", + "NEW_VARIABLE_TYPE_TITLE": "Doare nevez a argemm:", + "NEW_VARIABLE_TITLE": "Anv an argemmenn nevez :", + "VARIABLE_ALREADY_EXISTS": "Un argemmenn anvet '%1' zo anezhi dija.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Un argemenn anvet '%1' zo c'hoazh evit un argemenn all eus ar seurt : '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Lemel %1 implij eus an argemm '%2' ?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne ch'aller ket dilemel an argemmenn \"%1\" dre m'eo lod eus dielfennadur an arc'hwel \"%2\"", + "DELETE_VARIABLE": "Lemel an argemm '%1'", + "COLOUR_PICKER_HELPURL": "http://br.wikipedia.org/wiki/Liv", + "COLOUR_PICKER_TOOLTIP": "Dibab ul liv diwar al livaoueg.", + "COLOUR_RANDOM_TITLE": "liv dargouezhek", + "COLOUR_RANDOM_TOOLTIP": "Tennañ ul liv d'ar sord", + "COLOUR_RGB_TITLE": "liv gant", + "COLOUR_RGB_RED": "ruz", + "COLOUR_RGB_GREEN": "gwer", + "COLOUR_RGB_BLUE": "glas", + "COLOUR_RGB_TOOLTIP": "Krouiñ ul liv gant ar c'hementad spisaet a ruz, a wer hag a c'hlas. Etre 0 ha 100 e tle bezañ an holl dalvoudoù.", + "COLOUR_BLEND_TITLE": "meskañ", + "COLOUR_BLEND_COLOUR1": "liv 1", + "COLOUR_BLEND_COLOUR2": "liv 2", + "COLOUR_BLEND_RATIO": "feur", + "COLOUR_BLEND_TOOLTIP": "a gemmesk daou liv gant ur feur roet(0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "adober %1 gwech", + "CONTROLS_REPEAT_INPUT_DO": "ober", + "CONTROLS_REPEAT_TOOLTIP": "Seveniñ urzhioù zo meur a wech", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "adober keit ha ma", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "adober betek", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Keit ha ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Keit ha ma vez faos un dalvoudenn, seveniñ urzhioù zo neuze.", + "CONTROLS_FOR_TOOLTIP": "Ober e doare ma kemero an argemmenn \"%1\" an talvoudennoù adalek niverenn an deroù betek niverenn an dibenn, en ur inkremantiñ an esaouenn, ha seveniñ an urzhioù spisaet.", + "CONTROLS_FOR_TITLE": "kontañ gant %1 eus %2 da %3 dre %4", + "CONTROLS_FOREACH_TITLE": "evit pep elfenn %1 er roll %2", + "CONTROLS_FOREACH_TOOLTIP": "Evit pep elfenn en ur roll, reiñ talvoud an elfenn d'an argemmenn '%1', ha seveniñ urzhioù zo da c'houde.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Mont e-maez an adlañsañ", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "Kenderc'hel gant iteradur nevez ar rodell", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Mont e-maez ar boukl engronnus.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Lammat ar rest eus ar rodell, ha kenderc'hel gant an iteradur war-lerc'h.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Diwallit : ne c'hall ar bloc'h-mañ bezañ implijet nemet e-barzh ur boukl.", + "CONTROLS_IF_TOOLTIP_1": "Ma vez gwir un dalvoudenn, seveniñ urzhioù zo neuze.", + "CONTROLS_IF_TOOLTIP_2": "Ma vez gwir un dalvoudenn, seveniñ ar c'henañ bloc'had urzhioù neuze. Anez seveniñ an eil bloc'had urzhioù.", + "CONTROLS_IF_TOOLTIP_3": "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had urzhioù neuze. Anez ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù.", + "CONTROLS_IF_TOOLTIP_4": "Ma vez gwir an dalvoudenn gentañ, seveniñ ar c'hentañ bloc'had. Anez, ma vez gwir an eil talvoudenn, seveniñ an eil bloc'had urzhioù. Ma ne vez gwir talvoudenn ebet, seveniñ ar bloc'had diwezhañ a urzhioù.", + "CONTROLS_IF_MSG_IF": "ma", + "CONTROLS_IF_MSG_ELSEIF": "mod all ma", + "CONTROLS_IF_MSG_ELSE": "a-hend-all", + "CONTROLS_IF_IF_TOOLTIP": "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h ma.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Ouzhpennañ un amplegad d'ar bloc'h ma.", + "CONTROLS_IF_ELSE_TOOLTIP": "Ouzhpennañ un amplegad dibenn lak-pep-tra d'ar bloc'h ma.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Distreiñ gwir m'eo par an daou voned.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Distreiñ gwir ma n'eo ket par an daou voned.", + "LOGIC_COMPARE_TOOLTIP_LT": "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Distreiñ gwir m'eo bihanoc'h ar moned kentañ eget an eil pe m'eo par dezhañ.", + "LOGIC_COMPARE_TOOLTIP_GT": "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Distreiñ gwir m'eo brasoc'h ar moned kentañ eget an eil pe par dezhañ.", + "LOGIC_OPERATION_TOOLTIP_AND": "Distreiñ gwir m'eo gwir an da daou voned.", + "LOGIC_OPERATION_AND": "ha(g)", + "LOGIC_OPERATION_TOOLTIP_OR": "Distreiñ gwir m'eo gwir unan eus an daou voned da nebeutañ.", + "LOGIC_OPERATION_OR": "pe", + "LOGIC_NEGATE_TITLE": "nann %1", + "LOGIC_NEGATE_TOOLTIP": "Distreiñ gwir m'eo faos ar moned. Distreiñ faos m'eo gwir ar moned.", + "LOGIC_BOOLEAN_TRUE": "gwir", + "LOGIC_BOOLEAN_FALSE": "gaou", + "LOGIC_BOOLEAN_TOOLTIP": "Distreiñ pe gwir pe faos", + "LOGIC_NULL": "Null", + "LOGIC_NULL_TOOLTIP": "Distreiñ null.", + "LOGIC_TERNARY_CONDITION": "amprouad", + "LOGIC_TERNARY_IF_TRUE": "m'eo gwir", + "LOGIC_TERNARY_IF_FALSE": "m'eo gaou", + "LOGIC_TERNARY_TOOLTIP": "Gwiriañ an amplegad e 'prouad'. M'eo gwir an amplegad, distreiñ an dalvoudenn 'm'eo gwir'; anez distreiñ ar moned 'm'eo faos'.", + "MATH_NUMBER_HELPURL": "https://br.wikipedia.org/wiki/Niver", + "MATH_NUMBER_TOOLTIP": "Un niver.", + "MATH_ARITHMETIC_HELPURL": "https://br.wikipedia.org/wiki/Aritmetik", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Distreiñ sammad daou niver.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Distreiñ diforc'h daou niver", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Distreiñ liesad daou niver.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Distreiñ rannad daou niver.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Distreiñ an niver kentañ lakaet dindan gallouter an eil niver.", + "MATH_SINGLE_HELPURL": "https://br.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "gwrizienn garrez", + "MATH_SINGLE_TOOLTIP_ROOT": "Distreiñ gwrizienn garrez un niver", + "MATH_SINGLE_OP_ABSOLUTE": "dizave", + "MATH_SINGLE_TOOLTIP_ABS": "Distreiñ talvoud dizave un niver.", + "MATH_SINGLE_TOOLTIP_NEG": "Distreiñ enebad un niver", + "MATH_SINGLE_TOOLTIP_LN": "Distreiñ logaritm naturel un niver", + "MATH_SINGLE_TOOLTIP_LOG10": "Distreiñ logaritm diazez 10 un niver", + "MATH_SINGLE_TOOLTIP_EXP": "Distreiñ galloudad un niver.", + "MATH_SINGLE_TOOLTIP_POW10": "Distreiñ 10 da c'halloudad un niver.", + "MATH_TRIG_HELPURL": "https://br.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Distreiñ sinuz ur c'horn (ket e radianoù)", + "MATH_TRIG_TOOLTIP_COS": "Distreiñ kosinuz ur c'horn (ket e radianoù)", + "MATH_TRIG_TOOLTIP_TAN": "Distreiñ tangent ur c'horn (ket e radianoù).", + "MATH_TRIG_TOOLTIP_ASIN": "Distreiñ ark sinuz un niver", + "MATH_TRIG_TOOLTIP_ACOS": "Distreiñ ark kosinuz un niver", + "MATH_TRIG_TOOLTIP_ATAN": "Distreiñ ark tangent un niver", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Distreiñ unan eus digemmennoù red : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (anvevenn).", + "MATH_IS_EVEN": "zo par", + "MATH_IS_ODD": "zo ampar", + "MATH_IS_PRIME": "zo kentañ", + "MATH_IS_WHOLE": "zo anterin", + "MATH_IS_POSITIVE": "a zo pozitivel", + "MATH_IS_NEGATIVE": "a zo negativel", + "MATH_IS_DIVISIBLE_BY": "a zo rannadus dre", + "MATH_IS_TOOLTIP": "Gwiriañ m'eo par, anpar, kentañ, muiel, leiel un niverenn pe ma c'haller rannañ anezhi dre un niver roet zo. Distreiñ gwir pe faos.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "kemmañ %1 gant %2", + "MATH_CHANGE_TOOLTIP": "Ouzhpennañ un niver d'an argemmenn '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Rontaat un niver dindan pe a-us", + "MATH_ROUND_OPERATOR_ROUND": "Rontaat", + "MATH_ROUND_OPERATOR_ROUNDUP": "Rontaat a-us", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "Rontaat dindan", + "MATH_ONLIST_OPERATOR_SUM": "Sammad al listenn", + "MATH_ONLIST_TOOLTIP_SUM": "Distreiñ sammad an holl niveroù zo el listenn.", + "MATH_ONLIST_OPERATOR_MIN": "Izegenn al listenn", + "MATH_ONLIST_TOOLTIP_MIN": "Distreiñ an niver bihanañ el listenn", + "MATH_ONLIST_OPERATOR_MAX": "Uc'hegenn al listenn", + "MATH_ONLIST_TOOLTIP_MAX": "Distreiñ an niver brasañ el listenn.", + "MATH_ONLIST_OPERATOR_AVERAGE": "Keitat al listenn", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Distreiñ keitad (niveroniel) an talvoudennoù niverel el listenn.", + "MATH_ONLIST_OPERATOR_MEDIAN": "Kreizad al listenn", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Distreiñ an niver kreiz el listenn", + "MATH_ONLIST_OPERATOR_MODE": "modoù stankañ el listenn", + "MATH_ONLIST_TOOLTIP_MODE": "Distreiñ ul listennad elfennoù stankoc'h el listenn.", + "MATH_ONLIST_OPERATOR_STD_DEV": "forc'had standart eus al listenn", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Distreiñ forc'had standart al listenn.", + "MATH_ONLIST_OPERATOR_RANDOM": "Elfennn eus al listenn tennet d'ar sord", + "MATH_ONLIST_TOOLTIP_RANDOM": "Distreiñ un elfenn zargouezhek el listenn", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "rest eus %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Distreiñ dilerc'h rannadur an div niver", + "MATH_CONSTRAIN_TITLE": "destrizhañ %1 etre %2 ha %3", + "MATH_CONSTRAIN_TOOLTIP": "Destrizhañ un niver da vezañ etre ar bevennoù spisaet (enlakaet)", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "anterin dargouezhek etre %1 ha %2", + "MATH_RANDOM_INT_TOOLTIP": "Distreiñ un anterin dargouezhek etre an div vevenn spisaet, endalc'het.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "Rann dargouezhek", + "MATH_RANDOM_FLOAT_TOOLTIP": "Distreiñ ur rann dargouezhek etre 0.0 (enkaelat) hag 1.0 (ezkaelat).", + "MATH_ATAN2_HELPURL": "https://fr.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 eus X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Adkas a ra ark tangent ar poent (X, Y) e derezioù etre -180 ha 180", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Ul lizherenn, ur ger pe ul linennad testenn.", + "TEXT_JOIN_TITLE_CREATEWITH": "krouiñ un destenn gant", + "TEXT_JOIN_TOOLTIP": "Krouit un tamm testenn en ur gevelstrollañ un niver bennak a elfennoù", + "TEXT_CREATE_JOIN_TITLE_JOIN": "stagañ", + "TEXT_CREATE_JOIN_TOOLTIP": "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h testenn-mañ.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ouzhpennañ un elfenn d'an destenn.", + "TEXT_APPEND_TITLE": "Ouzhpennañ an destenn %2 da %1", + "TEXT_APPEND_TOOLTIP": "Ouzhpennañ testenn d'an argemmenn'%1'.", + "TEXT_LENGTH_TITLE": "hirder %1", + "TEXT_LENGTH_TOOLTIP": "Distreiñ an niver a lizherennoù(en ur gontañ an esaouennoù e-barzh) en destenn roet.", + "TEXT_ISEMPTY_TITLE": "%1 zo goullo", + "TEXT_ISEMPTY_TOOLTIP": "Adkas gwir m'eo goullo an destenn roet.", + "TEXT_INDEXOF_TOOLTIP": "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus ar chadenn gentañ en eil chadenn. Distreiñ %1 ma n'eo ket kavet ar chadenn.", + "TEXT_INDEXOF_TITLE": "en destenn %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "kavout reveziadenn gentañ an destenn", + "TEXT_INDEXOF_OPERATOR_LAST": "kavout reveziadenn diwezhañ an destenn", + "TEXT_CHARAT_TITLE": "en destenn %1 %2", + "TEXT_CHARAT_FROM_START": "Kaout al lizherenn #", + "TEXT_CHARAT_FROM_END": "Kaout al lizherenn # adalek an dibenn.", + "TEXT_CHARAT_FIRST": "tapout al lizherenn gentañ", + "TEXT_CHARAT_LAST": "tapout al lizherenn ziwezhañ", + "TEXT_CHARAT_RANDOM": "Kaout ul lizherenn dre zegouezh", + "TEXT_CHARAT_TOOLTIP": "Distreiñ al lizherenn d'al lec'h spisaet.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Distreiñ un tamm spisaet eus an destenn.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "en destenn", + "TEXT_GET_SUBSTRING_START_FROM_START": "Kaout an ischadenn adalek al lizherenn #", + "TEXT_GET_SUBSTRING_START_FROM_END": "Kaout an ischadenn adalek al lizherenn # betek an dibenn", + "TEXT_GET_SUBSTRING_START_FIRST": "Kaout an ischadenn adalek al lizherenn gentañ", + "TEXT_GET_SUBSTRING_END_FROM_START": "betek al lizherenn #", + "TEXT_GET_SUBSTRING_END_FROM_END": "Betek al lizherenn # adalek an dibenn.", + "TEXT_GET_SUBSTRING_END_LAST": "d'al lizherenn diwezhañ", + "TEXT_CHANGECASE_TOOLTIP": "Distreiñ un eilenn eus an eilenn en un direnneg all", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "e PENNLIZHERENNOÙ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "e lizherennoù bihan", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Gant Ur Bennlizherenn E Deroù Pep Ger", + "TEXT_TRIM_TOOLTIP": "Distreiñ un eilenn eus an destenn gant an esaouennoù lamet eus un tu pe eus an daou du", + "TEXT_TRIM_OPERATOR_BOTH": "Lemel an esaouennoù en daou du", + "TEXT_TRIM_OPERATOR_LEFT": "Lemel an esaouennoù eus an tu kleiz", + "TEXT_TRIM_OPERATOR_RIGHT": "Lemel an esaouennoù eus an tu dehou", + "TEXT_PRINT_TITLE": "moullañ %1", + "TEXT_PRINT_TOOLTIP": "Moullañ an destenn, an niverenn pe un dalvoudenn spisaet all", + "TEXT_PROMPT_TYPE_TEXT": "goulenn un destenn gant ur gemennadenn", + "TEXT_PROMPT_TYPE_NUMBER": "pedadenn evit un niver gant ur c'hemennad", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Goulenn un niver gant an implijer.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Goulenn un destenn gant an implijer.", + "TEXT_COUNT_MESSAGE0": "niver %1 war %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Kontañ pet gwech e c'hoarvez un destenn bennak en un destenn bennak all.", + "TEXT_REPLACE_MESSAGE0": "erlec'hiañ %1 gant %2 e %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Erlec'hiañ holl reveziadennoù un destenn bennak gant un destenn all.", + "TEXT_REVERSE_MESSAGE0": "eilpennañ %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Eilpennañ urzh an arouezennoù en destenn.", + "LISTS_CREATE_EMPTY_TITLE": "krouiñ ur roll goullo", + "LISTS_CREATE_EMPTY_TOOLTIP": "Distreiñ ul listenn, 0 a hirder, n'eus enrolladenn ebet enni", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Krouiñ ur roll gant un niver bennak a elfennoù.", + "LISTS_CREATE_WITH_INPUT_WITH": "krouiñ ur roll gant", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "roll", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Ouzhpennañ, lemel pe adurzhiañ ar rannoù evit kefluniañ ar bloc'h listenn-mañ.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ouzhpennañ un elfenn d'ar roll", + "LISTS_REPEAT_TOOLTIP": "Krouiñ ul listenn a c'hoarvez eus an dalvoudenn roet arreet an niver a wech meneget", + "LISTS_REPEAT_TITLE": "Krouiñ ul listenn gant an elfenn %1 arreet %2 div wech", + "LISTS_LENGTH_TITLE": "hirder %1", + "LISTS_LENGTH_TOOLTIP": "Distreiñ hirder ul listenn.", + "LISTS_ISEMPTY_TITLE": "%1 zo goullo", + "LISTS_ISEMPTY_TOOLTIP": "Distreiñ gwir m'eo goullo al listenn.", + "LISTS_INLIST": "el listenn", + "LISTS_INDEX_OF_FIRST": "kavout reveziadenn gentañ un elfenn", + "LISTS_INDEX_OF_LAST": "kavout reveziadenn diwezhañ un elfenn", + "LISTS_INDEX_OF_TOOLTIP": "Distreiñ meneger ar c'hentañ/an eil reveziadenn eus an elfenn en ul listenn. Distreiñ %1 ma n'eo ket kavet an destenn.", + "LISTS_GET_INDEX_GET": "tapout", + "LISTS_GET_INDEX_GET_REMOVE": "tapout ha lemel", + "LISTS_GET_INDEX_REMOVE": "lemel", + "LISTS_GET_INDEX_FROM_END": "# adalek ar fin", + "LISTS_GET_INDEX_FIRST": "kentañ", + "LISTS_GET_INDEX_LAST": "diwezhañ", + "LISTS_GET_INDEX_RANDOM": "dre zegouezh", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 eo an elfenn gentañ.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 eo an elfenn gentañ.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Distreiñ an elfenn el lec'h meneget en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Distreiñ an elfenn gentañ en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Distreiñ un elfenn diwezhañ en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Distreiñ un elfenn dre zegouezh en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Lemel ha distreiñ a ra an elfenn el lec'h meneget en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Lemel ha distreiñ a ra an elfenn gentañ en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Lemel ha distreiñ a ra an elfenn diwezhañ en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Lemel ha distreiñ a ra an elfenn dre zegouezh en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Lemel a ra an elfenn el lec'h meneget en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Lemel a ra an elfenn gentañ en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Lemel a ra an elfenn diwezhañ en ul listenn.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Lemel a ra un elfenn dre zegouezh en ul listenn.", + "LISTS_SET_INDEX_SET": "termenañ", + "LISTS_SET_INDEX_INSERT": "ensoc'hañ evel", + "LISTS_SET_INDEX_INPUT_TO": "evel", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Termenañ a ra an elfenn el lec'h meneget en ul listenn.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Termenañ a ra an elfenn gentañ en ul listenn.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Termenañ a ra an elfenn diwezhañ en ul listenn.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Termenañ a ra un elfenn dre zegouezh en ul listenn.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ensoc'hañ a ra an elfenn el lec'h meneget en ul listenn.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ensoc'hañ a ra an elfenn e deroù ul listenn.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ouzhpennañ a ra an elfenn e fin al listenn.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ensoc'hañ a ra an elfenn dre zegouezh en ul listenn.", + "LISTS_GET_SUBLIST_START_FROM_START": "Kaout an islistenn adalek #", + "LISTS_GET_SUBLIST_START_FROM_END": "Kaout an islistenn adalek # adalek an dibenn", + "LISTS_GET_SUBLIST_START_FIRST": "Kaout an islistenn adalek an deroù", + "LISTS_GET_SUBLIST_END_FROM_START": "da #", + "LISTS_GET_SUBLIST_END_FROM_END": "betek # adalek an dibenn", + "LISTS_GET_SUBLIST_END_LAST": "betek ar fin", + "LISTS_GET_SUBLIST_TOOLTIP": "Krouiñ un eilad eus lodenn spisaet ul listenn.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_SORT_TITLE": "Rummañ%1,%2,%3", + "LISTS_SORT_TOOLTIP": "Rummañ un eilenn eus ar roll", + "LISTS_SORT_ORDER_ASCENDING": "war gresk", + "LISTS_SORT_ORDER_DESCENDING": "war zigresk", + "LISTS_SORT_TYPE_NUMERIC": "niverel", + "LISTS_SORT_TYPE_TEXT": "Dre urzh al lizherenneg", + "LISTS_SORT_TYPE_IGNORECASE": "Dre urzh al lizherenneg, hep derc'hel kont eus an direnneg", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "Krouiñ ul listenn diwar an destenn", + "LISTS_SPLIT_TEXT_FROM_LIST": "Krouiñ un destenn diwar al listenn", + "LISTS_SPLIT_WITH_DELIMITER": "gant an dispartier", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Troc'hañ un destenn en ul listennad testennoù, o troc'hañ e pep dispartier.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Bodañ ul listennad testennoù en ul listenn hepken, o tispartiañ anezho gant un dispartier.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "eilpennañ %1", + "LISTS_REVERSE_TOOLTIP": "Eilpennañ un eilskrid eus ur roll.", + "VARIABLES_GET_TOOLTIP": "Distreiñ talvoud an argemm-mañ.", + "VARIABLES_GET_CREATE_SET": "Krouiñ 'termenañ %1'", + "VARIABLES_SET": "termenañ %1 da %2", + "VARIABLES_SET_TOOLTIP": "Termenañ a ra argemm-mañ evit ma vo par da dalvoudenn ar moned.", + "VARIABLES_SET_CREATE_GET": "Krouiñ 'kaout %1'", + "PROCEDURES_DEFNORETURN_TITLE": "da", + "PROCEDURES_DEFNORETURN_PROCEDURE": "ober un dra bennak", + "PROCEDURES_BEFORE_PARAMS": "gant :", + "PROCEDURES_CALL_BEFORE_PARAMS": "gant :", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Krouiñ un arc'hwel hep mont er-maez.", + "PROCEDURES_DEFNORETURN_COMMENT": "Deskrivañ an arc'hwel-mañ...", + "PROCEDURES_DEFRETURN_RETURN": "distreiñ", + "PROCEDURES_DEFRETURN_TOOLTIP": "Kouiñ un arc'hwel gant ur mont er-maez", + "PROCEDURES_ALLOW_STATEMENTS": "aotren an disklêriadurioù", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Diwallit : an arc'hwel-mañ en deus arventennoù eiladet.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Seveniñ an arc'hwel '%1' termenet gant an implijer.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Seveniñ an arc'hwel '%1' termenet gant an implijer hag implijout e zisoc'h.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "Monedoù", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Ouzhpennañ, lemel, pe adkempenn monedoù an arc'hwel-mañ.", + "PROCEDURES_MUTATORARG_TITLE": "Anv ar moned", + "PROCEDURES_MUTATORARG_TOOLTIP": "Ouzhpennañ ur moned d'an arc'hwel.", + "PROCEDURES_HIGHLIGHT_DEF": "Dreislinennañ termenadur an arc'hwel", + "PROCEDURES_CREATE_DO": "Krouiñ '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Ma'z eo gwir un dalvoudenn, distreiñ un eil talvoudenn neuze.", + "PROCEDURES_IFRETURN_WARNING": "Diwallit : Gallout a rafe ar bloc'h bezañ implijet e termenadur un arc'hwel hepken.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Lavaret un dra bennak...", + "WORKSPACE_ARIA_LABEL": "Takad labour Blockly", + "COLLAPSED_WARNINGS_WARNING": "Kemennoù-diwall zo er bloc'hadoù pleget.", + "DIALOG_OK": "Mat eo", + "DIALOG_CANCEL": "Nullañ" +} diff --git a/msg/json/bs.json b/msg/json/bs.json index 3f97c4ce36a..8d047ca6c22 100644 --- a/msg/json/bs.json +++ b/msg/json/bs.json @@ -1,147 +1,147 @@ -{ - "@metadata": { - "authors": [ - "Palapa", - "Semso98" - ] - }, - "VARIABLES_DEFAULT_NAME": "stavka", - "UNNAMED_KEY": "neimenovano", - "TODAY": "Danas", - "DUPLICATE_BLOCK": "Dupliciraj", - "ADD_COMMENT": "Dodaj komentar", - "REMOVE_COMMENT": "Ukloni komentare", - "DUPLICATE_COMMENT": "Kopiraj komentar", - "EXTERNAL_INPUTS": "Vanjski ulazi", - "INLINE_INPUTS": "Redni ulazi", - "DELETE_BLOCK": "Obriši blok", - "DELETE_X_BLOCKS": "Obriši %1 blokova", - "DELETE_ALL_BLOCKS": "Izbrisati svih %1 blokova?", - "CLEAN_UP": "Očisti blokove", - "COLLAPSE_BLOCK": "Skupi blok", - "COLLAPSE_ALL": "Skupi blokove", - "EXPAND_BLOCK": "Proširi blok", - "EXPAND_ALL": "Proširi blokove", - "DISABLE_BLOCK": "Onemogući blok", - "ENABLE_BLOCK": "Omogući blok", - "HELP": "Pomoć", - "UNDO": "Poništi", - "REDO": "Ponovi", - "CHANGE_VALUE_TITLE": "Promijeni vrijednost:", - "RENAME_VARIABLE": "Preimenuj varijablu...", - "RENAME_VARIABLE_TITLE": "Preimenuj sve \"%1\" varijable u:", - "NEW_VARIABLE": "Napravi varijablu...", - "NEW_STRING_VARIABLE": "Napravi varijablu niza...", - "NEW_NUMBER_VARIABLE": "Napravi varijablu broja...", - "NEW_COLOUR_VARIABLE": "Napravi varijablu boje...", - "NEW_VARIABLE_TYPE_TITLE": "Vrsta nove varijable:", - "NEW_VARIABLE_TITLE": "Ime nove varijable:", - "VARIABLE_ALREADY_EXISTS": "Varijabla s imenom \"%1\" već postoji.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Varijabla s imenom \"%1\" već postoji za drugu vrstu: \"%2\".", - "DELETE_VARIABLE_CONFIRMATION": "Izbrisati %1 upotrebu varijable \"%2\"?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne mogu izbrisati varijablu \"%1\" jer je dio definicije funckije \"%2\"", - "DELETE_VARIABLE": "Izbriši varijablu \"%1\"", - "COLOUR_PICKER_HELPURL": "https://bs.wikipedia.org/wiki/Boja", - "COLOUR_PICKER_TOOLTIP": "Izaberi boju sa palete.", - "COLOUR_RANDOM_TITLE": "nasumična boja", - "COLOUR_RANDOM_TOOLTIP": "Odaberi boju nasumično.", - "COLOUR_RGB_TITLE": "boja sa", - "COLOUR_RGB_RED": "crvenom", - "COLOUR_RGB_GREEN": "zelenom", - "COLOUR_RGB_BLUE": "plavom", - "COLOUR_RGB_TOOLTIP": "Napravi boju s određenom količinom crvene, zelene i plave boje. Sve vrijednosti moraju biti između 0 i 100.", - "COLOUR_BLEND_TITLE": "pomiješaj", - "COLOUR_BLEND_COLOUR1": "boju 1", - "COLOUR_BLEND_COLOUR2": "boju 2", - "COLOUR_BLEND_RATIO": "odnos", - "COLOUR_BLEND_TOOLTIP": "Pomiješaj dvije boje zajedno sa zadanim odnosom (0.0 - 1.0).", - "CONTROLS_REPEAT_TITLE": "ponovi %1 puta", - "CONTROLS_REPEAT_INPUT_DO": "izvrši", - "CONTROLS_REPEAT_TOOLTIP": "Izvrši neku naredbu nekoliko puta.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ponavljati dok", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ponavljati do", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dok je vrijednost tačna, izvršava neke naredbe.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dok je vrijednost netačna, izvršava neke naredbe.", - "CONTROLS_FOR_TOOLTIP": "Neka varijabla \"%1\" uzima vrijednosti od početnog do krajnjeg broja, brojeći po određenom intervalu i neka izvršava određene blokove.", - "CONTROLS_FOR_TITLE": "broji sa %1 od %2 do %3 po %4", - "CONTROLS_FOREACH_TITLE": "za svaku stavku %1 na spisku %2", - "CONTROLS_FOREACH_TOOLTIP": "Za svaku stavku na spisku, dodjeljuje vrijednost stavke varijabli \"%1\", a zatim izvršava neke naredbe.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "izađi iz petlje", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "nastavi sa sljedećom iteracijom petlje", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Napusti petlju koja sadrži ovaj blok.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Preskoči ostatak ove petlje i nastavi sa sljedećom iteracijom.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozorenje: Ovaj blok se može koristiti samo unutar petlje.", - "CONTROLS_IF_TOOLTIP_1": "Ako je vrijednost tačna, izvršava neke naredbe.", - "CONTROLS_IF_TOOLTIP_2": "Ako je vrijednost tačna, izvršava neke naredbe. U suprotnom, izvršava drugi blok naredbi.", - "CONTROLS_IF_MSG_IF": "ako", - "CONTROLS_IF_MSG_ELSEIF": "inače ako", - "CONTROLS_IF_MSG_ELSE": "inače", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodajte uslov bloku \"ako\".", - "LOGIC_COMPARE_HELPURL": "https://bs.wikipedia.org/wiki/Nejednakost", - "LOGIC_OPERATION_AND": "i", - "LOGIC_OPERATION_OR": "ili", - "LOGIC_NEGATE_TITLE": "nije %1", - "LOGIC_BOOLEAN_TRUE": "tačno", - "LOGIC_BOOLEAN_FALSE": "netačno", - "LOGIC_BOOLEAN_TOOLTIP": "Vraća ili tačno ili netačno.", - "LOGIC_NULL": "bez vrijednosti", - "LOGIC_NULL_TOOLTIP": "Vraća \"bez vrijednosti\".", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "ako je tačno", - "LOGIC_TERNARY_IF_FALSE": "ako je netačno", - "MATH_NUMBER_HELPURL": "https://bs.wikipedia.org/wiki/Broj", - "MATH_NUMBER_TOOLTIP": "Broj.", - "MATH_ARITHMETIC_HELPURL": "https://bs.wikipedia.org/wiki/Aritmetika", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Vraća zbir dva broja.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vraća razliku dva broja.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vraća proizvod dva broja.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vraća količnik dva broja.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Vraća prvi broj na eksponent drugog broja.", - "MATH_SINGLE_HELPURL": "https://bs.wikipedia.org/wiki/Kvadratni_korijen", - "MATH_SINGLE_OP_ROOT": "kvadratni korijen", - "MATH_SINGLE_TOOLTIP_ROOT": "Vraća kvadratni korijen broja", - "MATH_SINGLE_OP_ABSOLUTE": "apsolutno", - "MATH_SINGLE_TOOLTIP_ABS": "Vraća absolutnu vrijednost broja.", - "MATH_SINGLE_TOOLTIP_NEG": "Vraća negaciju broja.", - "MATH_SINGLE_TOOLTIP_LN": "Vraća prirodni logoritam broja.", - "MATH_SINGLE_TOOLTIP_LOG10": "Vraća logoritam broja za bazu 10.", - "MATH_SINGLE_TOOLTIP_EXP": "Vraća e na eksponent broja.", - "MATH_SINGLE_TOOLTIP_POW10": "Vraća 10 na eksponent broja.", - "MATH_TRIG_HELPURL": "https://bs.wikipedia.org/wiki/Trigonometrijska_funkcija", - "MATH_TRIG_TOOLTIP_SIN": "Vraća sinus stepena (ne radijana).", - "MATH_TRIG_TOOLTIP_COS": "Vraća kosinus stepena (ne radijana).", - "MATH_TRIG_TOOLTIP_TAN": "Vraća tangens stepena (ne radijana).", - "MATH_TRIG_TOOLTIP_ASIN": "Vraća arkussinus broja.", - "MATH_TRIG_TOOLTIP_ACOS": "Vraća arkuskosinus broja.", - "MATH_TRIG_TOOLTIP_ATAN": "Vraća arkustangens broja.", - "MATH_CONSTANT_HELPURL": "https://bs.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta", - "MATH_CONSTANT_TOOLTIP": "Vraća jednu od uobičajenih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) ili ∞ (beskonačnost).", - "MATH_IS_EVEN": "je paran", - "MATH_IS_ODD": "je neparan", - "MATH_IS_PRIME": "je prost", - "MATH_IS_WHOLE": "je cijeli", - "MATH_IS_POSITIVE": "je pozitivan", - "MATH_IS_NEGATIVE": "je negativan", - "MATH_IS_DIVISIBLE_BY": "je djeljiv sa", - "MATH_IS_TOOLTIP": "Provjerava da li je broj paran, neparan, prost, cijeli, pozitivan, negativan ili je djeljiv s određenim brojem. Vraća tačno ili netačno.", - "MATH_CHANGE_TITLE": "promijeni %1 za %2", - "MATH_CHANGE_TOOLTIP": "Dodaj broj varijabli \"%1\".", - "MATH_ROUND_TOOLTIP": "Zaokružuje broj na veću ili manju vrijednost.", - "MATH_ROUND_OPERATOR_ROUND": "zaokruži", - "MATH_ROUND_OPERATOR_ROUNDUP": "zaokruži naviše", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokruži naniže", - "MATH_ONLIST_OPERATOR_SUM": "zbir spiska", - "MATH_ONLIST_TOOLTIP_SUM": "Vraća zbir svih brojeva sa spiska.", - "TEXT_LENGTH_TITLE": "dužina teksta %1", - "TEXT_ISEMPTY_TITLE": "%1 je prazan", - "LISTS_LENGTH_TITLE": "dužina spiska %1", - "LISTS_LENGTH_TOOLTIP": "Vraća dužinu spiska.", - "LISTS_ISEMPTY_TITLE": "%1 je prazan", - "LISTS_ISEMPTY_TOOLTIP": "Vraća \"tačno\" ako je spisak prazan.", - "LISTS_INLIST": "na spisku", - "LISTS_INDEX_OF_FIRST": "pronađi prvo pojavljivanje stavke", - "LISTS_INDEX_OF_LAST": "pronađi posljednje pojavljivanje stavke", - "PROCEDURES_MUTATORARG_TITLE": "ime ulaza:", - "DIALOG_OK": "U redu", - "DIALOG_CANCEL": "Otkaži" -} +{ + "@metadata": { + "authors": [ + "Palapa", + "Semso98" + ] + }, + "VARIABLES_DEFAULT_NAME": "stavka", + "UNNAMED_KEY": "neimenovano", + "TODAY": "Danas", + "DUPLICATE_BLOCK": "Dupliciraj", + "ADD_COMMENT": "Dodaj komentar", + "REMOVE_COMMENT": "Ukloni komentare", + "DUPLICATE_COMMENT": "Kopiraj komentar", + "EXTERNAL_INPUTS": "Vanjski ulazi", + "INLINE_INPUTS": "Redni ulazi", + "DELETE_BLOCK": "Obriši blok", + "DELETE_X_BLOCKS": "Obriši %1 blokova", + "DELETE_ALL_BLOCKS": "Izbrisati svih %1 blokova?", + "CLEAN_UP": "Očisti blokove", + "COLLAPSE_BLOCK": "Skupi blok", + "COLLAPSE_ALL": "Skupi blokove", + "EXPAND_BLOCK": "Proširi blok", + "EXPAND_ALL": "Proširi blokove", + "DISABLE_BLOCK": "Onemogući blok", + "ENABLE_BLOCK": "Omogući blok", + "HELP": "Pomoć", + "UNDO": "Poništi", + "REDO": "Ponovi", + "CHANGE_VALUE_TITLE": "Promijeni vrijednost:", + "RENAME_VARIABLE": "Preimenuj varijablu...", + "RENAME_VARIABLE_TITLE": "Preimenuj sve \"%1\" varijable u:", + "NEW_VARIABLE": "Napravi varijablu...", + "NEW_STRING_VARIABLE": "Napravi varijablu niza...", + "NEW_NUMBER_VARIABLE": "Napravi varijablu broja...", + "NEW_COLOUR_VARIABLE": "Napravi varijablu boje...", + "NEW_VARIABLE_TYPE_TITLE": "Vrsta nove varijable:", + "NEW_VARIABLE_TITLE": "Ime nove varijable:", + "VARIABLE_ALREADY_EXISTS": "Varijabla s imenom \"%1\" već postoji.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Varijabla s imenom \"%1\" već postoji za drugu vrstu: \"%2\".", + "DELETE_VARIABLE_CONFIRMATION": "Izbrisati %1 upotrebu varijable \"%2\"?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne mogu izbrisati varijablu \"%1\" jer je dio definicije funckije \"%2\"", + "DELETE_VARIABLE": "Izbriši varijablu \"%1\"", + "COLOUR_PICKER_HELPURL": "https://bs.wikipedia.org/wiki/Boja", + "COLOUR_PICKER_TOOLTIP": "Izaberi boju sa palete.", + "COLOUR_RANDOM_TITLE": "nasumična boja", + "COLOUR_RANDOM_TOOLTIP": "Odaberi boju nasumično.", + "COLOUR_RGB_TITLE": "boja sa", + "COLOUR_RGB_RED": "crvenom", + "COLOUR_RGB_GREEN": "zelenom", + "COLOUR_RGB_BLUE": "plavom", + "COLOUR_RGB_TOOLTIP": "Napravi boju s određenom količinom crvene, zelene i plave boje. Sve vrijednosti moraju biti između 0 i 100.", + "COLOUR_BLEND_TITLE": "pomiješaj", + "COLOUR_BLEND_COLOUR1": "boju 1", + "COLOUR_BLEND_COLOUR2": "boju 2", + "COLOUR_BLEND_RATIO": "odnos", + "COLOUR_BLEND_TOOLTIP": "Pomiješaj dvije boje zajedno sa zadanim odnosom (0.0 - 1.0).", + "CONTROLS_REPEAT_TITLE": "ponovi %1 puta", + "CONTROLS_REPEAT_INPUT_DO": "izvrši", + "CONTROLS_REPEAT_TOOLTIP": "Izvrši neku naredbu nekoliko puta.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ponavljati dok", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ponavljati do", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dok je vrijednost tačna, izvršava neke naredbe.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dok je vrijednost netačna, izvršava neke naredbe.", + "CONTROLS_FOR_TOOLTIP": "Neka varijabla \"%1\" uzima vrijednosti od početnog do krajnjeg broja, brojeći po određenom intervalu i neka izvršava određene blokove.", + "CONTROLS_FOR_TITLE": "broji sa %1 od %2 do %3 po %4", + "CONTROLS_FOREACH_TITLE": "za svaku stavku %1 na spisku %2", + "CONTROLS_FOREACH_TOOLTIP": "Za svaku stavku na spisku, dodjeljuje vrijednost stavke varijabli \"%1\", a zatim izvršava neke naredbe.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "izađi iz petlje", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "nastavi sa sljedećom iteracijom petlje", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Napusti petlju koja sadrži ovaj blok.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Preskoči ostatak ove petlje i nastavi sa sljedećom iteracijom.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozorenje: Ovaj blok se može koristiti samo unutar petlje.", + "CONTROLS_IF_TOOLTIP_1": "Ako je vrijednost tačna, izvršava neke naredbe.", + "CONTROLS_IF_TOOLTIP_2": "Ako je vrijednost tačna, izvršava neke naredbe. U suprotnom, izvršava drugi blok naredbi.", + "CONTROLS_IF_MSG_IF": "ako", + "CONTROLS_IF_MSG_ELSEIF": "inače ako", + "CONTROLS_IF_MSG_ELSE": "inače", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodajte uslov bloku \"ako\".", + "LOGIC_COMPARE_HELPURL": "https://bs.wikipedia.org/wiki/Nejednakost", + "LOGIC_OPERATION_AND": "i", + "LOGIC_OPERATION_OR": "ili", + "LOGIC_NEGATE_TITLE": "nije %1", + "LOGIC_BOOLEAN_TRUE": "tačno", + "LOGIC_BOOLEAN_FALSE": "netačno", + "LOGIC_BOOLEAN_TOOLTIP": "Vraća ili tačno ili netačno.", + "LOGIC_NULL": "bez vrijednosti", + "LOGIC_NULL_TOOLTIP": "Vraća \"bez vrijednosti\".", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "ako je tačno", + "LOGIC_TERNARY_IF_FALSE": "ako je netačno", + "MATH_NUMBER_HELPURL": "https://bs.wikipedia.org/wiki/Broj", + "MATH_NUMBER_TOOLTIP": "Broj.", + "MATH_ARITHMETIC_HELPURL": "https://bs.wikipedia.org/wiki/Aritmetika", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Vraća zbir dva broja.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vraća razliku dva broja.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vraća proizvod dva broja.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vraća količnik dva broja.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Vraća prvi broj na eksponent drugog broja.", + "MATH_SINGLE_HELPURL": "https://bs.wikipedia.org/wiki/Kvadratni_korijen", + "MATH_SINGLE_OP_ROOT": "kvadratni korijen", + "MATH_SINGLE_TOOLTIP_ROOT": "Vraća kvadratni korijen broja", + "MATH_SINGLE_OP_ABSOLUTE": "apsolutno", + "MATH_SINGLE_TOOLTIP_ABS": "Vraća absolutnu vrijednost broja.", + "MATH_SINGLE_TOOLTIP_NEG": "Vraća negaciju broja.", + "MATH_SINGLE_TOOLTIP_LN": "Vraća prirodni logoritam broja.", + "MATH_SINGLE_TOOLTIP_LOG10": "Vraća logoritam broja za bazu 10.", + "MATH_SINGLE_TOOLTIP_EXP": "Vraća e na eksponent broja.", + "MATH_SINGLE_TOOLTIP_POW10": "Vraća 10 na eksponent broja.", + "MATH_TRIG_HELPURL": "https://bs.wikipedia.org/wiki/Trigonometrijska_funkcija", + "MATH_TRIG_TOOLTIP_SIN": "Vraća sinus stepena (ne radijana).", + "MATH_TRIG_TOOLTIP_COS": "Vraća kosinus stepena (ne radijana).", + "MATH_TRIG_TOOLTIP_TAN": "Vraća tangens stepena (ne radijana).", + "MATH_TRIG_TOOLTIP_ASIN": "Vraća arkussinus broja.", + "MATH_TRIG_TOOLTIP_ACOS": "Vraća arkuskosinus broja.", + "MATH_TRIG_TOOLTIP_ATAN": "Vraća arkustangens broja.", + "MATH_CONSTANT_HELPURL": "https://bs.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta", + "MATH_CONSTANT_TOOLTIP": "Vraća jednu od uobičajenih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) ili ∞ (beskonačnost).", + "MATH_IS_EVEN": "je paran", + "MATH_IS_ODD": "je neparan", + "MATH_IS_PRIME": "je prost", + "MATH_IS_WHOLE": "je cijeli", + "MATH_IS_POSITIVE": "je pozitivan", + "MATH_IS_NEGATIVE": "je negativan", + "MATH_IS_DIVISIBLE_BY": "je djeljiv sa", + "MATH_IS_TOOLTIP": "Provjerava da li je broj paran, neparan, prost, cijeli, pozitivan, negativan ili je djeljiv s određenim brojem. Vraća tačno ili netačno.", + "MATH_CHANGE_TITLE": "promijeni %1 za %2", + "MATH_CHANGE_TOOLTIP": "Dodaj broj varijabli \"%1\".", + "MATH_ROUND_TOOLTIP": "Zaokružuje broj na veću ili manju vrijednost.", + "MATH_ROUND_OPERATOR_ROUND": "zaokruži", + "MATH_ROUND_OPERATOR_ROUNDUP": "zaokruži naviše", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokruži naniže", + "MATH_ONLIST_OPERATOR_SUM": "zbir spiska", + "MATH_ONLIST_TOOLTIP_SUM": "Vraća zbir svih brojeva sa spiska.", + "TEXT_LENGTH_TITLE": "dužina teksta %1", + "TEXT_ISEMPTY_TITLE": "%1 je prazan", + "LISTS_LENGTH_TITLE": "dužina spiska %1", + "LISTS_LENGTH_TOOLTIP": "Vraća dužinu spiska.", + "LISTS_ISEMPTY_TITLE": "%1 je prazan", + "LISTS_ISEMPTY_TOOLTIP": "Vraća \"tačno\" ako je spisak prazan.", + "LISTS_INLIST": "na spisku", + "LISTS_INDEX_OF_FIRST": "pronađi prvo pojavljivanje stavke", + "LISTS_INDEX_OF_LAST": "pronađi posljednje pojavljivanje stavke", + "PROCEDURES_MUTATORARG_TITLE": "ime ulaza:", + "DIALOG_OK": "U redu", + "DIALOG_CANCEL": "Otkaži" +} diff --git a/msg/json/ca.json b/msg/json/ca.json index 132abc57791..9153a931cb5 100644 --- a/msg/json/ca.json +++ b/msg/json/ca.json @@ -1,342 +1,342 @@ -{ - "@metadata": { - "authors": [ - "Alvaro Vidal-Abarca", - "Espertus", - "Fitoschido", - "Hiperpobla", - "Jaumeortola", - "Lluís Batlle", - "Mguix", - "Micobu", - "Quel.soler" - ] - }, - "VARIABLES_DEFAULT_NAME": "element", - "UNNAMED_KEY": "sense nom", - "TODAY": "Avui", - "DUPLICATE_BLOCK": "Duplica", - "ADD_COMMENT": "Afegeix un comentari", - "REMOVE_COMMENT": "Elimina el comentari", - "DUPLICATE_COMMENT": "Comentari duplicat", - "EXTERNAL_INPUTS": "Entrades externes", - "INLINE_INPUTS": "Entrades en línia", - "DELETE_BLOCK": "Esborra bloc", - "DELETE_X_BLOCKS": "Esborra %1 blocs", - "DELETE_ALL_BLOCKS": "Esborrar els %1 blocs?", - "CLEAN_UP": "Netejar blocs", - "COLLAPSE_BLOCK": "Contraure bloc", - "COLLAPSE_ALL": "Contraure blocs", - "EXPAND_BLOCK": "Expandir bloc", - "EXPAND_ALL": "Expandir blocs", - "DISABLE_BLOCK": "Desactiva bloc", - "ENABLE_BLOCK": "Activa bloc", - "HELP": "Ajuda", - "UNDO": "Desfer", - "REDO": "Refer", - "CHANGE_VALUE_TITLE": "Canvia valor:", - "RENAME_VARIABLE": "Reanomena variable...", - "RENAME_VARIABLE_TITLE": "Reanomena totes les variables '%1' a:", - "NEW_VARIABLE": "Crea una variable…", - "NEW_STRING_VARIABLE": "Crear variable de cadena…", - "NEW_NUMBER_VARIABLE": "Crea variable numèrica...", - "NEW_COLOUR_VARIABLE": "Crear variable de color...", - "NEW_VARIABLE_TYPE_TITLE": "Nou tipus de variable:", - "NEW_VARIABLE_TITLE": "Nou nom de variable:", - "VARIABLE_ALREADY_EXISTS": "Ja existeix una variable anomenada '%1'.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Una variable anomenada '%1' ja existeix per al tipus '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Esborrar '%1' crides de la variable '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "No podem esborrar la variable '%1' perquè forma part de la definició de la funció '%2'", - "DELETE_VARIABLE": "Esborrar la variable '%1'", - "COLOUR_PICKER_HELPURL": "https://ca.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Escolliu un color de la paleta.", - "COLOUR_RANDOM_TITLE": "color aleatori", - "COLOUR_RANDOM_TOOLTIP": "Escolliu un color a l'atzar.", - "COLOUR_RGB_TITLE": "color amb", - "COLOUR_RGB_RED": "vermell", - "COLOUR_RGB_GREEN": "verd", - "COLOUR_RGB_BLUE": "blau", - "COLOUR_RGB_TOOLTIP": "Crear un color amb les quantitats especificades de vermell, verd i blau. Tots els valors han de ser entre 0 i 100.", - "COLOUR_BLEND_TITLE": "barreja", - "COLOUR_BLEND_COLOUR1": "color 1", - "COLOUR_BLEND_COLOUR2": "color 2", - "COLOUR_BLEND_RATIO": "proporció", - "COLOUR_BLEND_TOOLTIP": "Barreja dos colors amb una proporció donada (0,0 - 1,0).", - "CONTROLS_REPEAT_HELPURL": "https://ca.wikipedia.org/wiki/Bucle_For", - "CONTROLS_REPEAT_TITLE": "repetir %1 vegades", - "CONTROLS_REPEAT_INPUT_DO": "fer", - "CONTROLS_REPEAT_TOOLTIP": "Executar unes sentències diverses vegades.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir mentre", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir fins que", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Mentre un valor sigui cert, llavors executar unes sentències.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Mentre un valor sigui fals, llavors executar unes sentències.", - "CONTROLS_FOR_TOOLTIP": "Fer que la variable \"%1\" prengui els valors des del nombre inicial fins al nombre final, incrementant a cada pas l'intèrval indicat, i executar els blocs especificats.", - "CONTROLS_FOR_TITLE": "comptar amb %1 des de %2 fins a %3 en increments de %4", - "CONTROLS_FOREACH_TITLE": "per a cada element %1 en la llista %2", - "CONTROLS_FOREACH_TOOLTIP": "Per a cada element en la llista, desar l'element dins la variable '%1', i llavors executar unes sentències.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "sortir del bucle", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuar amb la següent iteració del bucle", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Sortir del bucle interior.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ometre la resta d'aquest bucle, i continuar amb la següent iteració.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Advertència: Aquest bloc només es pot utilitzar dins d'un bucle.", - "CONTROLS_IF_TOOLTIP_1": "Si un valor és cert, llavors executar unes sentències.", - "CONTROLS_IF_TOOLTIP_2": "Si un valor és cert, llavors executar el primer bloc de sentències. En cas contrari, executar el segon bloc de sentències.", - "CONTROLS_IF_TOOLTIP_3": "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències.", - "CONTROLS_IF_TOOLTIP_4": "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències. Si cap dels valors és cert, executar l'últim bloc de sentències.", - "CONTROLS_IF_MSG_IF": "si", - "CONTROLS_IF_MSG_ELSEIF": "si no, si", - "CONTROLS_IF_MSG_ELSE": "si no", - "CONTROLS_IF_IF_TOOLTIP": "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc 'si'.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Afegeix una condició al bloc 'si'.", - "CONTROLS_IF_ELSE_TOOLTIP": "Afegeix una condició final, que recull qualsevol altra possibilitat, al bloc 'si'.", - "LOGIC_COMPARE_HELPURL": "https://ca.wikipedia.org/wiki/Inequaci%C3%B3", - "LOGIC_COMPARE_TOOLTIP_EQ": "Retorna cert si totes dues entrades són iguals.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Retorna cert si totes dues entrades són diferents.", - "LOGIC_COMPARE_TOOLTIP_LT": "Retorna cert si la primera entrada és més petita que la segona entrada.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Retorna cert si la primera entra és més petita o igual a la segona entrada.", - "LOGIC_COMPARE_TOOLTIP_GT": "Retorna cert si la primera entrada és més gran que la segona entrada.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Retorna cert si la primera entrada és més gran o igual a la segona entrada.", - "LOGIC_OPERATION_TOOLTIP_AND": "Retorna cer si totes dues entrades són certes.", - "LOGIC_OPERATION_AND": "i", - "LOGIC_OPERATION_TOOLTIP_OR": "Retorna cert si almenys una de les entrades és certa.", - "LOGIC_OPERATION_OR": "o", - "LOGIC_NEGATE_TITLE": "no %1", - "LOGIC_NEGATE_TOOLTIP": "Retorna cert si l'entrada és falsa. Retorna fals si l'entrada és certa.", - "LOGIC_BOOLEAN_TRUE": "cert", - "LOGIC_BOOLEAN_FALSE": "fals", - "LOGIC_BOOLEAN_TOOLTIP": "Retorna o bé cert o bé fals.", - "LOGIC_NULL": "nul", - "LOGIC_NULL_TOOLTIP": "Retorna nul.", - "LOGIC_TERNARY_CONDITION": "condició", - "LOGIC_TERNARY_IF_TRUE": "si és cert", - "LOGIC_TERNARY_IF_FALSE": "si és fals", - "LOGIC_TERNARY_TOOLTIP": "Comprova la condició de 'condició'. Si la condició és certa, retorna el valor 'si és cert'; en cas contrari, retorna el valor 'si és fals'.", - "MATH_NUMBER_HELPURL": "https://ca.wikipedia.org/wiki/Nombre", - "MATH_NUMBER_TOOLTIP": "Un nombre.", - "MATH_ARITHMETIC_HELPURL": "https://ca.wikipedia.org/wiki/Aritm%C3%A8tica", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Retorna la suma dels dos nombres.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retorna la diferència entre els dos nombres.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retorna el producte del dos nombres.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retorna el quocient dels dos nombres.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Retorna el primer nombre elevat a la potència indicada pel segon nombre.", - "MATH_SINGLE_HELPURL": "https://ca.wikipedia.org/wiki/Arrel_quadrada", - "MATH_SINGLE_OP_ROOT": "arrel quadrada", - "MATH_SINGLE_TOOLTIP_ROOT": "Retorna l'arrel quadrada d'un nombre.", - "MATH_SINGLE_OP_ABSOLUTE": "absolut", - "MATH_SINGLE_TOOLTIP_ABS": "Retorna el valor absolut d'un nombre.", - "MATH_SINGLE_TOOLTIP_NEG": "Retorna l'oposat d'un nombre.", - "MATH_SINGLE_TOOLTIP_LN": "Retorna el logaritme natural d'un nombre.", - "MATH_SINGLE_TOOLTIP_LOG10": "Retorna el logaritme en base 10 d'un nombre.", - "MATH_SINGLE_TOOLTIP_EXP": "Retorna ''e'' elevat a la potència del nombre indicat.", - "MATH_SINGLE_TOOLTIP_POW10": "Retorna 10 elevat a la potència del nombre indicat.", - "MATH_TRIG_HELPURL": "https://ca.wikipedia.org/wiki/Funci%C3%B3_trigonom%C3%A8trica", - "MATH_TRIG_TOOLTIP_SIN": "Retorna el sinus d'un grau (no radiant).", - "MATH_TRIG_TOOLTIP_COS": "Retorna el cosinus d'un grau (no radiant).", - "MATH_TRIG_TOOLTIP_TAN": "Retorna la tangent d'un grau (no radiant).", - "MATH_TRIG_TOOLTIP_ASIN": "Retorna l'arcsinus d'un nombre.", - "MATH_TRIG_TOOLTIP_ACOS": "Retorna l'arccosinus d'un nombre.", - "MATH_TRIG_TOOLTIP_ATAN": "Retorna l'arctangent d'un nombre.", - "MATH_CONSTANT_HELPURL": "https://ca.wikipedia.org/wiki/Constant_matem%C3%A0tica", - "MATH_CONSTANT_TOOLTIP": "Retorna una de les constants més habituals: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…), o ∞ (infinit).", - "MATH_IS_EVEN": "és parell", - "MATH_IS_ODD": "és senar", - "MATH_IS_PRIME": "és primer", - "MATH_IS_WHOLE": "és enter", - "MATH_IS_POSITIVE": "és positiu", - "MATH_IS_NEGATIVE": "és negatiu", - "MATH_IS_DIVISIBLE_BY": "és divisible per", - "MATH_IS_TOOLTIP": "Comprova si un nombre és parell, senar, enter, positium negatiu, o si és divisible per un cert nombre. Retorna cert o fals.", - "MATH_CHANGE_HELPURL": "https://ca.wikipedia.org/wiki/Suma", - "MATH_CHANGE_TITLE": "canvia %1 per %2", - "MATH_CHANGE_TOOLTIP": "Afegeix un nombre a la variable '%1'.", - "MATH_ROUND_HELPURL": "https://ca.wikipedia.org/wiki/Arrodoniment", - "MATH_ROUND_TOOLTIP": "Arrodonir un nombre cap amunt o cap avall.", - "MATH_ROUND_OPERATOR_ROUND": "arrodonir", - "MATH_ROUND_OPERATOR_ROUNDUP": "arrodonir cap amunt", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "arrodonir cap avall", - "MATH_ONLIST_OPERATOR_SUM": "suma de llista", - "MATH_ONLIST_TOOLTIP_SUM": "Retorna la suma de tots els nombres de la llista.", - "MATH_ONLIST_OPERATOR_MIN": "mínim de llista", - "MATH_ONLIST_TOOLTIP_MIN": "Retorna el nombre més petit de la llista.", - "MATH_ONLIST_OPERATOR_MAX": "màxim de llista", - "MATH_ONLIST_TOOLTIP_MAX": "Retorna el nombre més gran de la llista.", - "MATH_ONLIST_OPERATOR_AVERAGE": "mitjana de llista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Retorna la mitjana (mitjana aritmètica) dels valors numèrics de la llista.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana de llista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Retorna la mediana de la llista.", - "MATH_ONLIST_OPERATOR_MODE": "moda de llista", - "MATH_ONLIST_TOOLTIP_MODE": "Retorna una llista dels elements que apareixen més vegades a la llista.", - "MATH_ONLIST_OPERATOR_STD_DEV": "desviació estàndard de llista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Retorna la desviació estàndard de la llista.", - "MATH_ONLIST_OPERATOR_RANDOM": "element aleatori de llista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Retorna un element aleatori de la lllista.", - "MATH_MODULO_HELPURL": "https://ca.wikipedia.org/wiki/Residu_%28aritm%C3%A8tica%29", - "MATH_MODULO_TITLE": "residu de %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Retorna el residu de dividir els dos nombres.", - "MATH_CONSTRAIN_TITLE": "limitar %1 entre %2 i %3", - "MATH_CONSTRAIN_TOOLTIP": "Limita un nombre perquè estigui entre els límits especificats (inclosos).", - "MATH_RANDOM_INT_HELPURL": "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris", - "MATH_RANDOM_INT_TITLE": "nombre aleatori entre %1 i %2", - "MATH_RANDOM_INT_TOOLTIP": "Retorna un nombre aleatori entre els dos límits especificats, inclosos.", - "MATH_RANDOM_FLOAT_HELPURL": "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fracció aleatòria", - "MATH_RANDOM_FLOAT_TOOLTIP": "Retorna una fracció aleatòria entre 0,0 (inclòs) i 1,0 (exclòs).", - "MATH_ATAN2_HELPURL": "https://ca.wikipedia.org/wiki/Inverses_de_les_funcions_trigonom%C3%A8triques#L'arctangent_amb_dos_arguments", - "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Torna l'arctangent del punt (X,Y) en graus de -180 a 180.", - "TEXT_TEXT_HELPURL": "https://ca.wikipedia.org/wiki/Cadena_%28inform%C3%A0tica%29", - "TEXT_TEXT_TOOLTIP": "Una lletra, paraula o línia de text.", - "TEXT_JOIN_TITLE_CREATEWITH": "crear text amb", - "TEXT_JOIN_TOOLTIP": "Crea un tros de text per unió de qualsevol nombre d'elements.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", - "TEXT_CREATE_JOIN_TOOLTIP": "Afegeix, esborrar o reordenar seccions per reconfigurar aquest bloc de text.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Afegeix un element al text.", - "TEXT_APPEND_TITLE": "a %1 afegir text %2", - "TEXT_APPEND_TOOLTIP": "Afegir un text a la variable '%1'.", - "TEXT_LENGTH_TITLE": "llargària de %1", - "TEXT_LENGTH_TOOLTIP": "Retorna el nombre de lletres (espais inclosos) en el text proporcionat.", - "TEXT_ISEMPTY_TITLE": "%1 està buit", - "TEXT_ISEMPTY_TOOLTIP": "Retorna cert si el text proporcionat està buit.", - "TEXT_INDEXOF_TOOLTIP": "Retorna l'índex de la primera/última aparició del primer text dins el segon. Retorna %1 si no es troba el text.", - "TEXT_INDEXOF_TITLE": "en el text %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "trobar la primera aparició del text", - "TEXT_INDEXOF_OPERATOR_LAST": "trobar l'última aparició del text", - "TEXT_CHARAT_TITLE": "en el text %1 %2", - "TEXT_CHARAT_FROM_START": "recupera la lletra núm.#", - "TEXT_CHARAT_FROM_END": "recupera la lletra núm.# des del final", - "TEXT_CHARAT_FIRST": "recupera la primera lletra", - "TEXT_CHARAT_LAST": "recupera l'última lletra", - "TEXT_CHARAT_RANDOM": "recupera una lletra a l'atzar", - "TEXT_CHARAT_TOOLTIP": "Recupera la lletra de la posició especificada.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Recupera una part especificada del text.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "en el text", - "TEXT_GET_SUBSTRING_START_FROM_START": "recupera subcadena des de la lletra núm.#", - "TEXT_GET_SUBSTRING_START_FROM_END": "recupera subcadena des de la lletra núm.# des del final", - "TEXT_GET_SUBSTRING_START_FIRST": "recupera subcadena des de la primera lletra", - "TEXT_GET_SUBSTRING_END_FROM_START": "fins a la lletra núm.#", - "TEXT_GET_SUBSTRING_END_FROM_END": "fins a la lletra núm.# des del final", - "TEXT_GET_SUBSTRING_END_LAST": "fins a l'última lletra", - "TEXT_CHANGECASE_TOOLTIP": "Retorna una còpia del text amb diferents majúscules/minúscules.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "a MAJÚSCULES", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "a minúscules", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "a Text De Títol", - "TEXT_TRIM_TOOLTIP": "Retorna una còpia del text on s'han esborrat els espais d'un o dels dos extrems.", - "TEXT_TRIM_OPERATOR_BOTH": "retalla espais de tots dos extrems de", - "TEXT_TRIM_OPERATOR_LEFT": "retalla espais de l'esquerra de", - "TEXT_TRIM_OPERATOR_RIGHT": "retalla espais de la dreta de", - "TEXT_PRINT_TITLE": "imprimir %1", - "TEXT_PRINT_TOOLTIP": "Imprimir el text, el nombre o altre valor especificat.", - "TEXT_PROMPT_TYPE_TEXT": "demanar text amb el missatge", - "TEXT_PROMPT_TYPE_NUMBER": "demanar un nombre amb el missatge", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Demana que l'usuari introdueixi un nombre.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Demana que l'usuari introdueixi un text.", - "TEXT_COUNT_MESSAGE0": "comptar %1 en %2", - "TEXT_COUNT_TOOLTIP": "Compta quantes vegades hi ha un text dins d'un altre text.", - "TEXT_REPLACE_MESSAGE0": "substituir %1 amb %2 en %3", - "TEXT_REPLACE_TOOLTIP": "Substitueix totes les aparicions d'un text dins d'un altre text.", - "TEXT_REVERSE_MESSAGE0": "invertir %1", - "TEXT_REVERSE_TOOLTIP": "Inverteix l'ordre dels caràcters en el text.", - "LISTS_CREATE_EMPTY_TITLE": "crear llista buida", - "LISTS_CREATE_EMPTY_TOOLTIP": "Retorna una llista, de longitud 0, que no conté cap dada.", - "LISTS_CREATE_WITH_TOOLTIP": "Crea una llista amb qualsevol nombre d'elements.", - "LISTS_CREATE_WITH_INPUT_WITH": "crear llista amb", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "llista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc de llista.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Afegeix un element a la llista.", - "LISTS_REPEAT_TOOLTIP": "Crea una llista formada pel valor donat, repetit tantes vegades com s'indiqui.", - "LISTS_REPEAT_TITLE": "crea llista amb element %1 repetit %2 vegades", - "LISTS_LENGTH_TITLE": "longitud de %1", - "LISTS_LENGTH_TOOLTIP": "Retorna la longitud d'una llista.", - "LISTS_ISEMPTY_TITLE": "%1 és buida", - "LISTS_ISEMPTY_TOOLTIP": "Retorna cert si la llista és buida.", - "LISTS_INLIST": "en la llista", - "LISTS_INDEX_OF_FIRST": "buscar primera aparició d'un element", - "LISTS_INDEX_OF_LAST": "buscar última aparició d'un element", - "LISTS_INDEX_OF_TOOLTIP": "Retorna l'índex de la primera/última aparició d'un element a la llista. Retorna %1 si no s'hi troba l'element.", - "LISTS_GET_INDEX_GET": "recupera", - "LISTS_GET_INDEX_GET_REMOVE": "recupera i esborra", - "LISTS_GET_INDEX_REMOVE": "esborra", - "LISTS_GET_INDEX_FROM_END": "núm.# des del final", - "LISTS_GET_INDEX_FIRST": "primer", - "LISTS_GET_INDEX_LAST": "últim", - "LISTS_GET_INDEX_RANDOM": "a l'atzar", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 és el primer element.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 és l'últim element.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Retorna l'element de la posició especificada a la llista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Retorna el primer element d'una llista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Retorna l'últim element d'una llista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Retorna un element a l'atzar d'una llista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Esborra i retorna l'element de la posició especificada de la llista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Esborra i retorna el primer element d'una llista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Esborra i retorna l'últim element d'una llista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Esborra i retorna un element a l'atzar d'una llista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Esborra l'element de la posició especificada de la llista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Esborra el primer element d'una llista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Esborra l'últim element d'una llista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Esborra un element a l'atzar d'una llista.", - "LISTS_SET_INDEX_SET": "modifica", - "LISTS_SET_INDEX_INSERT": "insereix a", - "LISTS_SET_INDEX_INPUT_TO": "com", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Modifica l'element de la posició especificada d'una llista.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Modifica el primer element d'una llista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Modifica l'últim element d'una llista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Modifica un element a l'atzar d'una llista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insereix l'element a la posició especificada d'una llista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insereix l'element al principi d'una llista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Afegeix l'element al final d'una llista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insereix l'element en una posició a l'atzar d'una llista.", - "LISTS_GET_SUBLIST_START_FROM_START": "recupera sub-llista des de #", - "LISTS_GET_SUBLIST_START_FROM_END": "recupera sub-llista des de # des del final", - "LISTS_GET_SUBLIST_START_FIRST": "recupera sub-llista des del principi", - "LISTS_GET_SUBLIST_END_FROM_START": "fins #", - "LISTS_GET_SUBLIST_END_FROM_END": "fins # des del final", - "LISTS_GET_SUBLIST_END_LAST": "fins l'últim", - "LISTS_GET_SUBLIST_TOOLTIP": "Crea una còpia de la part especificada d'una llista.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "ordenar %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Ordena la còpia d'una llista.", - "LISTS_SORT_ORDER_ASCENDING": "ascendent", - "LISTS_SORT_ORDER_DESCENDING": "descendent", - "LISTS_SORT_TYPE_NUMERIC": "numèric", - "LISTS_SORT_TYPE_TEXT": "alfabètic", - "LISTS_SORT_TYPE_IGNORECASE": "alfabètic, ignorant majúscules", - "LISTS_SPLIT_LIST_FROM_TEXT": "fer una llista d'un text", - "LISTS_SPLIT_TEXT_FROM_LIST": "fer un text d'una llista", - "LISTS_SPLIT_WITH_DELIMITER": "amb delimitador", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Parteix el text en una llista de textos, trencant-lo a cada delimitador.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Ajunta una llista de textos en un text, separats per un delimitador.", - "LISTS_REVERSE_MESSAGE0": "invertir %1", - "LISTS_REVERSE_TOOLTIP": "Invertir la còpia d'una llista.", - "VARIABLES_GET_TOOLTIP": "Retorna el valor d'aquesta variable.", - "VARIABLES_GET_CREATE_SET": "Crea 'modifica %1'", - "VARIABLES_SET": "modifica %1 a %2", - "VARIABLES_SET_TOOLTIP": "Modifica aquesta variable al valor introduït.", - "VARIABLES_SET_CREATE_GET": "Crear 'recupera %1'", - "PROCEDURES_DEFNORETURN_TITLE": "a", - "PROCEDURES_DEFNORETURN_PROCEDURE": "fes alguna cosa", - "PROCEDURES_BEFORE_PARAMS": "amb:", - "PROCEDURES_CALL_BEFORE_PARAMS": "amb:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea una funció sense sortida.", - "PROCEDURES_DEFNORETURN_COMMENT": "Descriure aquesta funció...", - "PROCEDURES_DEFRETURN_RETURN": "retorna", - "PROCEDURES_DEFRETURN_TOOLTIP": "Crea una funció amb una sortida.", - "PROCEDURES_ALLOW_STATEMENTS": "permetre declaracions", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Advertència: Aquesta funció té paràmetres duplicats.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Executa la funció definida per usuari '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29", - "PROCEDURES_CALLRETURN_TOOLTIP": "Executa la funció definida per l'usuari '%1' i utilitza la seva sortida.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "entrades", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Afegir, eliminar o canviar l'ordre de les entrades per aquesta funció.", - "PROCEDURES_MUTATORARG_TITLE": "nom d'entrada:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Afegir una entrada per la funció.", - "PROCEDURES_HIGHLIGHT_DEF": "Iluminar la definició de la funció", - "PROCEDURES_CREATE_DO": "Crear '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Si el valor és cert, llavors retorna un segon valor.", - "PROCEDURES_IFRETURN_WARNING": "Advertència: Aquest bloc només es pot utilitzar dins de la definició d'una funció.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Digues alguna cosa...", - "WORKSPACE_ARIA_LABEL": "Espai de treball Blockly", - "COLLAPSED_WARNINGS_WARNING": "Els blocs plegats contenen avisos.", - "DIALOG_OK": "D'acord", - "DIALOG_CANCEL": "Cancel·la" -} +{ + "@metadata": { + "authors": [ + "Alvaro Vidal-Abarca", + "Espertus", + "Fitoschido", + "Hiperpobla", + "Jaumeortola", + "Lluís Batlle", + "Mguix", + "Micobu", + "Quel.soler" + ] + }, + "VARIABLES_DEFAULT_NAME": "element", + "UNNAMED_KEY": "sense nom", + "TODAY": "Avui", + "DUPLICATE_BLOCK": "Duplica", + "ADD_COMMENT": "Afegeix un comentari", + "REMOVE_COMMENT": "Elimina el comentari", + "DUPLICATE_COMMENT": "Comentari duplicat", + "EXTERNAL_INPUTS": "Entrades externes", + "INLINE_INPUTS": "Entrades en línia", + "DELETE_BLOCK": "Esborra bloc", + "DELETE_X_BLOCKS": "Esborra %1 blocs", + "DELETE_ALL_BLOCKS": "Esborrar els %1 blocs?", + "CLEAN_UP": "Netejar blocs", + "COLLAPSE_BLOCK": "Contraure bloc", + "COLLAPSE_ALL": "Contraure blocs", + "EXPAND_BLOCK": "Expandir bloc", + "EXPAND_ALL": "Expandir blocs", + "DISABLE_BLOCK": "Desactiva bloc", + "ENABLE_BLOCK": "Activa bloc", + "HELP": "Ajuda", + "UNDO": "Desfer", + "REDO": "Refer", + "CHANGE_VALUE_TITLE": "Canvia valor:", + "RENAME_VARIABLE": "Reanomena variable...", + "RENAME_VARIABLE_TITLE": "Reanomena totes les variables '%1' a:", + "NEW_VARIABLE": "Crea una variable…", + "NEW_STRING_VARIABLE": "Crear variable de cadena…", + "NEW_NUMBER_VARIABLE": "Crea variable numèrica...", + "NEW_COLOUR_VARIABLE": "Crear variable de color...", + "NEW_VARIABLE_TYPE_TITLE": "Nou tipus de variable:", + "NEW_VARIABLE_TITLE": "Nou nom de variable:", + "VARIABLE_ALREADY_EXISTS": "Ja existeix una variable anomenada '%1'.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Una variable anomenada '%1' ja existeix per al tipus '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Esborrar '%1' crides de la variable '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "No podem esborrar la variable '%1' perquè forma part de la definició de la funció '%2'", + "DELETE_VARIABLE": "Esborrar la variable '%1'", + "COLOUR_PICKER_HELPURL": "https://ca.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Escolliu un color de la paleta.", + "COLOUR_RANDOM_TITLE": "color aleatori", + "COLOUR_RANDOM_TOOLTIP": "Escolliu un color a l'atzar.", + "COLOUR_RGB_TITLE": "color amb", + "COLOUR_RGB_RED": "vermell", + "COLOUR_RGB_GREEN": "verd", + "COLOUR_RGB_BLUE": "blau", + "COLOUR_RGB_TOOLTIP": "Crear un color amb les quantitats especificades de vermell, verd i blau. Tots els valors han de ser entre 0 i 100.", + "COLOUR_BLEND_TITLE": "barreja", + "COLOUR_BLEND_COLOUR1": "color 1", + "COLOUR_BLEND_COLOUR2": "color 2", + "COLOUR_BLEND_RATIO": "proporció", + "COLOUR_BLEND_TOOLTIP": "Barreja dos colors amb una proporció donada (0,0 - 1,0).", + "CONTROLS_REPEAT_HELPURL": "https://ca.wikipedia.org/wiki/Bucle_For", + "CONTROLS_REPEAT_TITLE": "repetir %1 vegades", + "CONTROLS_REPEAT_INPUT_DO": "fer", + "CONTROLS_REPEAT_TOOLTIP": "Executar unes sentències diverses vegades.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir mentre", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir fins que", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Mentre un valor sigui cert, llavors executar unes sentències.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Mentre un valor sigui fals, llavors executar unes sentències.", + "CONTROLS_FOR_TOOLTIP": "Fer que la variable \"%1\" prengui els valors des del nombre inicial fins al nombre final, incrementant a cada pas l'intèrval indicat, i executar els blocs especificats.", + "CONTROLS_FOR_TITLE": "comptar amb %1 des de %2 fins a %3 en increments de %4", + "CONTROLS_FOREACH_TITLE": "per a cada element %1 en la llista %2", + "CONTROLS_FOREACH_TOOLTIP": "Per a cada element en la llista, desar l'element dins la variable '%1', i llavors executar unes sentències.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "sortir del bucle", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuar amb la següent iteració del bucle", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Sortir del bucle interior.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ometre la resta d'aquest bucle, i continuar amb la següent iteració.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Advertència: Aquest bloc només es pot utilitzar dins d'un bucle.", + "CONTROLS_IF_TOOLTIP_1": "Si un valor és cert, llavors executar unes sentències.", + "CONTROLS_IF_TOOLTIP_2": "Si un valor és cert, llavors executar el primer bloc de sentències. En cas contrari, executar el segon bloc de sentències.", + "CONTROLS_IF_TOOLTIP_3": "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències.", + "CONTROLS_IF_TOOLTIP_4": "Si el primer valor és cert, llavors executar el primer bloc de sentències. En cas contrari, si el segon valor és cert, executar el segon bloc de sentències. Si cap dels valors és cert, executar l'últim bloc de sentències.", + "CONTROLS_IF_MSG_IF": "si", + "CONTROLS_IF_MSG_ELSEIF": "si no, si", + "CONTROLS_IF_MSG_ELSE": "si no", + "CONTROLS_IF_IF_TOOLTIP": "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc 'si'.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Afegeix una condició al bloc 'si'.", + "CONTROLS_IF_ELSE_TOOLTIP": "Afegeix una condició final, que recull qualsevol altra possibilitat, al bloc 'si'.", + "LOGIC_COMPARE_HELPURL": "https://ca.wikipedia.org/wiki/Inequaci%C3%B3", + "LOGIC_COMPARE_TOOLTIP_EQ": "Retorna cert si totes dues entrades són iguals.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Retorna cert si totes dues entrades són diferents.", + "LOGIC_COMPARE_TOOLTIP_LT": "Retorna cert si la primera entrada és més petita que la segona entrada.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Retorna cert si la primera entra és més petita o igual a la segona entrada.", + "LOGIC_COMPARE_TOOLTIP_GT": "Retorna cert si la primera entrada és més gran que la segona entrada.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Retorna cert si la primera entrada és més gran o igual a la segona entrada.", + "LOGIC_OPERATION_TOOLTIP_AND": "Retorna cer si totes dues entrades són certes.", + "LOGIC_OPERATION_AND": "i", + "LOGIC_OPERATION_TOOLTIP_OR": "Retorna cert si almenys una de les entrades és certa.", + "LOGIC_OPERATION_OR": "o", + "LOGIC_NEGATE_TITLE": "no %1", + "LOGIC_NEGATE_TOOLTIP": "Retorna cert si l'entrada és falsa. Retorna fals si l'entrada és certa.", + "LOGIC_BOOLEAN_TRUE": "cert", + "LOGIC_BOOLEAN_FALSE": "fals", + "LOGIC_BOOLEAN_TOOLTIP": "Retorna o bé cert o bé fals.", + "LOGIC_NULL": "nul", + "LOGIC_NULL_TOOLTIP": "Retorna nul.", + "LOGIC_TERNARY_CONDITION": "condició", + "LOGIC_TERNARY_IF_TRUE": "si és cert", + "LOGIC_TERNARY_IF_FALSE": "si és fals", + "LOGIC_TERNARY_TOOLTIP": "Comprova la condició de 'condició'. Si la condició és certa, retorna el valor 'si és cert'; en cas contrari, retorna el valor 'si és fals'.", + "MATH_NUMBER_HELPURL": "https://ca.wikipedia.org/wiki/Nombre", + "MATH_NUMBER_TOOLTIP": "Un nombre.", + "MATH_ARITHMETIC_HELPURL": "https://ca.wikipedia.org/wiki/Aritm%C3%A8tica", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Retorna la suma dels dos nombres.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retorna la diferència entre els dos nombres.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retorna el producte del dos nombres.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retorna el quocient dels dos nombres.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Retorna el primer nombre elevat a la potència indicada pel segon nombre.", + "MATH_SINGLE_HELPURL": "https://ca.wikipedia.org/wiki/Arrel_quadrada", + "MATH_SINGLE_OP_ROOT": "arrel quadrada", + "MATH_SINGLE_TOOLTIP_ROOT": "Retorna l'arrel quadrada d'un nombre.", + "MATH_SINGLE_OP_ABSOLUTE": "absolut", + "MATH_SINGLE_TOOLTIP_ABS": "Retorna el valor absolut d'un nombre.", + "MATH_SINGLE_TOOLTIP_NEG": "Retorna l'oposat d'un nombre.", + "MATH_SINGLE_TOOLTIP_LN": "Retorna el logaritme natural d'un nombre.", + "MATH_SINGLE_TOOLTIP_LOG10": "Retorna el logaritme en base 10 d'un nombre.", + "MATH_SINGLE_TOOLTIP_EXP": "Retorna ''e'' elevat a la potència del nombre indicat.", + "MATH_SINGLE_TOOLTIP_POW10": "Retorna 10 elevat a la potència del nombre indicat.", + "MATH_TRIG_HELPURL": "https://ca.wikipedia.org/wiki/Funci%C3%B3_trigonom%C3%A8trica", + "MATH_TRIG_TOOLTIP_SIN": "Retorna el sinus d'un grau (no radiant).", + "MATH_TRIG_TOOLTIP_COS": "Retorna el cosinus d'un grau (no radiant).", + "MATH_TRIG_TOOLTIP_TAN": "Retorna la tangent d'un grau (no radiant).", + "MATH_TRIG_TOOLTIP_ASIN": "Retorna l'arcsinus d'un nombre.", + "MATH_TRIG_TOOLTIP_ACOS": "Retorna l'arccosinus d'un nombre.", + "MATH_TRIG_TOOLTIP_ATAN": "Retorna l'arctangent d'un nombre.", + "MATH_CONSTANT_HELPURL": "https://ca.wikipedia.org/wiki/Constant_matem%C3%A0tica", + "MATH_CONSTANT_TOOLTIP": "Retorna una de les constants més habituals: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…), o ∞ (infinit).", + "MATH_IS_EVEN": "és parell", + "MATH_IS_ODD": "és senar", + "MATH_IS_PRIME": "és primer", + "MATH_IS_WHOLE": "és enter", + "MATH_IS_POSITIVE": "és positiu", + "MATH_IS_NEGATIVE": "és negatiu", + "MATH_IS_DIVISIBLE_BY": "és divisible per", + "MATH_IS_TOOLTIP": "Comprova si un nombre és parell, senar, enter, positium negatiu, o si és divisible per un cert nombre. Retorna cert o fals.", + "MATH_CHANGE_HELPURL": "https://ca.wikipedia.org/wiki/Suma", + "MATH_CHANGE_TITLE": "canvia %1 per %2", + "MATH_CHANGE_TOOLTIP": "Afegeix un nombre a la variable '%1'.", + "MATH_ROUND_HELPURL": "https://ca.wikipedia.org/wiki/Arrodoniment", + "MATH_ROUND_TOOLTIP": "Arrodonir un nombre cap amunt o cap avall.", + "MATH_ROUND_OPERATOR_ROUND": "arrodonir", + "MATH_ROUND_OPERATOR_ROUNDUP": "arrodonir cap amunt", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "arrodonir cap avall", + "MATH_ONLIST_OPERATOR_SUM": "suma de llista", + "MATH_ONLIST_TOOLTIP_SUM": "Retorna la suma de tots els nombres de la llista.", + "MATH_ONLIST_OPERATOR_MIN": "mínim de llista", + "MATH_ONLIST_TOOLTIP_MIN": "Retorna el nombre més petit de la llista.", + "MATH_ONLIST_OPERATOR_MAX": "màxim de llista", + "MATH_ONLIST_TOOLTIP_MAX": "Retorna el nombre més gran de la llista.", + "MATH_ONLIST_OPERATOR_AVERAGE": "mitjana de llista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Retorna la mitjana (mitjana aritmètica) dels valors numèrics de la llista.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana de llista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Retorna la mediana de la llista.", + "MATH_ONLIST_OPERATOR_MODE": "moda de llista", + "MATH_ONLIST_TOOLTIP_MODE": "Retorna una llista dels elements que apareixen més vegades a la llista.", + "MATH_ONLIST_OPERATOR_STD_DEV": "desviació estàndard de llista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Retorna la desviació estàndard de la llista.", + "MATH_ONLIST_OPERATOR_RANDOM": "element aleatori de llista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Retorna un element aleatori de la lllista.", + "MATH_MODULO_HELPURL": "https://ca.wikipedia.org/wiki/Residu_%28aritm%C3%A8tica%29", + "MATH_MODULO_TITLE": "residu de %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Retorna el residu de dividir els dos nombres.", + "MATH_CONSTRAIN_TITLE": "limitar %1 entre %2 i %3", + "MATH_CONSTRAIN_TOOLTIP": "Limita un nombre perquè estigui entre els límits especificats (inclosos).", + "MATH_RANDOM_INT_HELPURL": "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris", + "MATH_RANDOM_INT_TITLE": "nombre aleatori entre %1 i %2", + "MATH_RANDOM_INT_TOOLTIP": "Retorna un nombre aleatori entre els dos límits especificats, inclosos.", + "MATH_RANDOM_FLOAT_HELPURL": "https://ca.wikipedia.org/wiki/Generaci%C3%B3_de_nombres_aleatoris", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fracció aleatòria", + "MATH_RANDOM_FLOAT_TOOLTIP": "Retorna una fracció aleatòria entre 0,0 (inclòs) i 1,0 (exclòs).", + "MATH_ATAN2_HELPURL": "https://ca.wikipedia.org/wiki/Inverses_de_les_funcions_trigonom%C3%A8triques#L'arctangent_amb_dos_arguments", + "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Torna l'arctangent del punt (X,Y) en graus de -180 a 180.", + "TEXT_TEXT_HELPURL": "https://ca.wikipedia.org/wiki/Cadena_%28inform%C3%A0tica%29", + "TEXT_TEXT_TOOLTIP": "Una lletra, paraula o línia de text.", + "TEXT_JOIN_TITLE_CREATEWITH": "crear text amb", + "TEXT_JOIN_TOOLTIP": "Crea un tros de text per unió de qualsevol nombre d'elements.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", + "TEXT_CREATE_JOIN_TOOLTIP": "Afegeix, esborrar o reordenar seccions per reconfigurar aquest bloc de text.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Afegeix un element al text.", + "TEXT_APPEND_TITLE": "a %1 afegir text %2", + "TEXT_APPEND_TOOLTIP": "Afegir un text a la variable '%1'.", + "TEXT_LENGTH_TITLE": "llargària de %1", + "TEXT_LENGTH_TOOLTIP": "Retorna el nombre de lletres (espais inclosos) en el text proporcionat.", + "TEXT_ISEMPTY_TITLE": "%1 està buit", + "TEXT_ISEMPTY_TOOLTIP": "Retorna cert si el text proporcionat està buit.", + "TEXT_INDEXOF_TOOLTIP": "Retorna l'índex de la primera/última aparició del primer text dins el segon. Retorna %1 si no es troba el text.", + "TEXT_INDEXOF_TITLE": "en el text %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "trobar la primera aparició del text", + "TEXT_INDEXOF_OPERATOR_LAST": "trobar l'última aparició del text", + "TEXT_CHARAT_TITLE": "en el text %1 %2", + "TEXT_CHARAT_FROM_START": "recupera la lletra núm.#", + "TEXT_CHARAT_FROM_END": "recupera la lletra núm.# des del final", + "TEXT_CHARAT_FIRST": "recupera la primera lletra", + "TEXT_CHARAT_LAST": "recupera l'última lletra", + "TEXT_CHARAT_RANDOM": "recupera una lletra a l'atzar", + "TEXT_CHARAT_TOOLTIP": "Recupera la lletra de la posició especificada.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Recupera una part especificada del text.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "en el text", + "TEXT_GET_SUBSTRING_START_FROM_START": "recupera subcadena des de la lletra núm.#", + "TEXT_GET_SUBSTRING_START_FROM_END": "recupera subcadena des de la lletra núm.# des del final", + "TEXT_GET_SUBSTRING_START_FIRST": "recupera subcadena des de la primera lletra", + "TEXT_GET_SUBSTRING_END_FROM_START": "fins a la lletra núm.#", + "TEXT_GET_SUBSTRING_END_FROM_END": "fins a la lletra núm.# des del final", + "TEXT_GET_SUBSTRING_END_LAST": "fins a l'última lletra", + "TEXT_CHANGECASE_TOOLTIP": "Retorna una còpia del text amb diferents majúscules/minúscules.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "a MAJÚSCULES", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "a minúscules", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "a Text De Títol", + "TEXT_TRIM_TOOLTIP": "Retorna una còpia del text on s'han esborrat els espais d'un o dels dos extrems.", + "TEXT_TRIM_OPERATOR_BOTH": "retalla espais de tots dos extrems de", + "TEXT_TRIM_OPERATOR_LEFT": "retalla espais de l'esquerra de", + "TEXT_TRIM_OPERATOR_RIGHT": "retalla espais de la dreta de", + "TEXT_PRINT_TITLE": "imprimir %1", + "TEXT_PRINT_TOOLTIP": "Imprimir el text, el nombre o altre valor especificat.", + "TEXT_PROMPT_TYPE_TEXT": "demanar text amb el missatge", + "TEXT_PROMPT_TYPE_NUMBER": "demanar un nombre amb el missatge", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Demana que l'usuari introdueixi un nombre.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Demana que l'usuari introdueixi un text.", + "TEXT_COUNT_MESSAGE0": "comptar %1 en %2", + "TEXT_COUNT_TOOLTIP": "Compta quantes vegades hi ha un text dins d'un altre text.", + "TEXT_REPLACE_MESSAGE0": "substituir %1 amb %2 en %3", + "TEXT_REPLACE_TOOLTIP": "Substitueix totes les aparicions d'un text dins d'un altre text.", + "TEXT_REVERSE_MESSAGE0": "invertir %1", + "TEXT_REVERSE_TOOLTIP": "Inverteix l'ordre dels caràcters en el text.", + "LISTS_CREATE_EMPTY_TITLE": "crear llista buida", + "LISTS_CREATE_EMPTY_TOOLTIP": "Retorna una llista, de longitud 0, que no conté cap dada.", + "LISTS_CREATE_WITH_TOOLTIP": "Crea una llista amb qualsevol nombre d'elements.", + "LISTS_CREATE_WITH_INPUT_WITH": "crear llista amb", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "llista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Afegeix, esborra o reordena seccions per reconfigurar aquest bloc de llista.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Afegeix un element a la llista.", + "LISTS_REPEAT_TOOLTIP": "Crea una llista formada pel valor donat, repetit tantes vegades com s'indiqui.", + "LISTS_REPEAT_TITLE": "crea llista amb element %1 repetit %2 vegades", + "LISTS_LENGTH_TITLE": "longitud de %1", + "LISTS_LENGTH_TOOLTIP": "Retorna la longitud d'una llista.", + "LISTS_ISEMPTY_TITLE": "%1 és buida", + "LISTS_ISEMPTY_TOOLTIP": "Retorna cert si la llista és buida.", + "LISTS_INLIST": "en la llista", + "LISTS_INDEX_OF_FIRST": "buscar primera aparició d'un element", + "LISTS_INDEX_OF_LAST": "buscar última aparició d'un element", + "LISTS_INDEX_OF_TOOLTIP": "Retorna l'índex de la primera/última aparició d'un element a la llista. Retorna %1 si no s'hi troba l'element.", + "LISTS_GET_INDEX_GET": "recupera", + "LISTS_GET_INDEX_GET_REMOVE": "recupera i esborra", + "LISTS_GET_INDEX_REMOVE": "esborra", + "LISTS_GET_INDEX_FROM_END": "núm.# des del final", + "LISTS_GET_INDEX_FIRST": "primer", + "LISTS_GET_INDEX_LAST": "últim", + "LISTS_GET_INDEX_RANDOM": "a l'atzar", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 és el primer element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 és l'últim element.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Retorna l'element de la posició especificada a la llista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Retorna el primer element d'una llista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Retorna l'últim element d'una llista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Retorna un element a l'atzar d'una llista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Esborra i retorna l'element de la posició especificada de la llista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Esborra i retorna el primer element d'una llista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Esborra i retorna l'últim element d'una llista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Esborra i retorna un element a l'atzar d'una llista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Esborra l'element de la posició especificada de la llista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Esborra el primer element d'una llista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Esborra l'últim element d'una llista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Esborra un element a l'atzar d'una llista.", + "LISTS_SET_INDEX_SET": "modifica", + "LISTS_SET_INDEX_INSERT": "insereix a", + "LISTS_SET_INDEX_INPUT_TO": "com", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Modifica l'element de la posició especificada d'una llista.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Modifica el primer element d'una llista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Modifica l'últim element d'una llista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Modifica un element a l'atzar d'una llista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insereix l'element a la posició especificada d'una llista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insereix l'element al principi d'una llista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Afegeix l'element al final d'una llista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insereix l'element en una posició a l'atzar d'una llista.", + "LISTS_GET_SUBLIST_START_FROM_START": "recupera sub-llista des de #", + "LISTS_GET_SUBLIST_START_FROM_END": "recupera sub-llista des de # des del final", + "LISTS_GET_SUBLIST_START_FIRST": "recupera sub-llista des del principi", + "LISTS_GET_SUBLIST_END_FROM_START": "fins #", + "LISTS_GET_SUBLIST_END_FROM_END": "fins # des del final", + "LISTS_GET_SUBLIST_END_LAST": "fins l'últim", + "LISTS_GET_SUBLIST_TOOLTIP": "Crea una còpia de la part especificada d'una llista.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "ordenar %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ordena la còpia d'una llista.", + "LISTS_SORT_ORDER_ASCENDING": "ascendent", + "LISTS_SORT_ORDER_DESCENDING": "descendent", + "LISTS_SORT_TYPE_NUMERIC": "numèric", + "LISTS_SORT_TYPE_TEXT": "alfabètic", + "LISTS_SORT_TYPE_IGNORECASE": "alfabètic, ignorant majúscules", + "LISTS_SPLIT_LIST_FROM_TEXT": "fer una llista d'un text", + "LISTS_SPLIT_TEXT_FROM_LIST": "fer un text d'una llista", + "LISTS_SPLIT_WITH_DELIMITER": "amb delimitador", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Parteix el text en una llista de textos, trencant-lo a cada delimitador.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Ajunta una llista de textos en un text, separats per un delimitador.", + "LISTS_REVERSE_MESSAGE0": "invertir %1", + "LISTS_REVERSE_TOOLTIP": "Invertir la còpia d'una llista.", + "VARIABLES_GET_TOOLTIP": "Retorna el valor d'aquesta variable.", + "VARIABLES_GET_CREATE_SET": "Crea 'modifica %1'", + "VARIABLES_SET": "modifica %1 a %2", + "VARIABLES_SET_TOOLTIP": "Modifica aquesta variable al valor introduït.", + "VARIABLES_SET_CREATE_GET": "Crear 'recupera %1'", + "PROCEDURES_DEFNORETURN_TITLE": "a", + "PROCEDURES_DEFNORETURN_PROCEDURE": "fes alguna cosa", + "PROCEDURES_BEFORE_PARAMS": "amb:", + "PROCEDURES_CALL_BEFORE_PARAMS": "amb:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea una funció sense sortida.", + "PROCEDURES_DEFNORETURN_COMMENT": "Descriure aquesta funció...", + "PROCEDURES_DEFRETURN_RETURN": "retorna", + "PROCEDURES_DEFRETURN_TOOLTIP": "Crea una funció amb una sortida.", + "PROCEDURES_ALLOW_STATEMENTS": "permetre declaracions", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Advertència: Aquesta funció té paràmetres duplicats.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Executa la funció definida per usuari '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://ca.wikipedia.org/wiki/Procediment_%28Programació%29", + "PROCEDURES_CALLRETURN_TOOLTIP": "Executa la funció definida per l'usuari '%1' i utilitza la seva sortida.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "entrades", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Afegir, eliminar o canviar l'ordre de les entrades per aquesta funció.", + "PROCEDURES_MUTATORARG_TITLE": "nom d'entrada:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Afegir una entrada per la funció.", + "PROCEDURES_HIGHLIGHT_DEF": "Iluminar la definició de la funció", + "PROCEDURES_CREATE_DO": "Crear '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Si el valor és cert, llavors retorna un segon valor.", + "PROCEDURES_IFRETURN_WARNING": "Advertència: Aquest bloc només es pot utilitzar dins de la definició d'una funció.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Digues alguna cosa...", + "WORKSPACE_ARIA_LABEL": "Espai de treball Blockly", + "COLLAPSED_WARNINGS_WARNING": "Els blocs plegats contenen avisos.", + "DIALOG_OK": "D'acord", + "DIALOG_CANCEL": "Cancel·la" +} diff --git a/msg/json/cdo.json b/msg/json/cdo.json index cec92b8ba67..4c30013f976 100644 --- a/msg/json/cdo.json +++ b/msg/json/cdo.json @@ -1,6 +1,6 @@ -{ - "@metadata": { - "authors": [] - }, - "DIALOG_OK": "確定" -} +{ + "@metadata": { + "authors": [] + }, + "DIALOG_OK": "確定" +} diff --git a/msg/json/cs.json b/msg/json/cs.json index 6cc5825c864..4ecc020a8f4 100644 --- a/msg/json/cs.json +++ b/msg/json/cs.json @@ -1,353 +1,353 @@ -{ - "@metadata": { - "authors": [ - "Chmee2", - "Clon", - "Dita", - "Dvorapa", - "Emis-cz", - "Espertus", - "Georg101", - "Ilimanaq29", - "Koo6", - "Matěj Grabovský", - "Patriccck", - "Patrik L.", - "Robins7", - "Rosnicka.kacka", - "Utar", - "Vtmarvin" - ] - }, - "VARIABLES_DEFAULT_NAME": "položka", - "UNNAMED_KEY": "nepojmenovaný", - "TODAY": "Dnes", - "DUPLICATE_BLOCK": "Duplikovat", - "ADD_COMMENT": "Přidat komentář", - "REMOVE_COMMENT": "Odstranit komentář", - "DUPLICATE_COMMENT": "Duplikovat komentář", - "EXTERNAL_INPUTS": "vnější vstupy", - "INLINE_INPUTS": "Vložené vstupy", - "DELETE_BLOCK": "Smazat blok", - "DELETE_X_BLOCKS": "Smazat %1 bloků", - "DELETE_ALL_BLOCKS": "Smazat všech %1 bloků?", - "CLEAN_UP": "Uspořádat bloky", - "COLLAPSE_BLOCK": "Sbalit blok", - "COLLAPSE_ALL": "Sbalit bloky", - "EXPAND_BLOCK": "Rozbalit blok", - "EXPAND_ALL": "Rozbalit bloky", - "DISABLE_BLOCK": "Deaktivovat blok", - "ENABLE_BLOCK": "Povolit blok", - "HELP": "Nápověda", - "UNDO": "Zpět", - "REDO": "Znovu", - "CHANGE_VALUE_TITLE": "Změnit hodnotu:", - "RENAME_VARIABLE": "Přejmenovat proměnnou...", - "RENAME_VARIABLE_TITLE": "Přejmenuj všech '%1' proměnných na:", - "NEW_VARIABLE": "Vytvořit proměnnou...", - "NEW_STRING_VARIABLE": "Vytvořit textovou proměnnou...", - "NEW_NUMBER_VARIABLE": "Vytvořit číselnou proměnnou...", - "NEW_COLOUR_VARIABLE": "Vytvořit proměnnou pro barvu...", - "NEW_VARIABLE_TYPE_TITLE": "Nový typ proměnné:", - "NEW_VARIABLE_TITLE": "Nový název proměnné:", - "VARIABLE_ALREADY_EXISTS": "Proměnná jménem '%1' již existuje", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Proměnná pojmenovaná jako '%1' již existuje pro jiný typ: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Odstranit %1 použití proměnné '%2'", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Proměnnou '%1' není možné odstranit, protože je součástí definice funkce '%2'", - "DELETE_VARIABLE": "Odstranit proměnnou '%1'", - "COLOUR_PICKER_HELPURL": "https://cs.wikipedia.org/wiki/Barva", - "COLOUR_PICKER_TOOLTIP": "Vyberte barvu z palety.", - "COLOUR_RANDOM_TITLE": "náhodná barva", - "COLOUR_RANDOM_TOOLTIP": "Zvolte barvu náhodně.", - "COLOUR_RGB_TITLE": "obarvěte barvou", - "COLOUR_RGB_RED": "červená", - "COLOUR_RGB_GREEN": "zelená", - "COLOUR_RGB_BLUE": "modrá", - "COLOUR_RGB_TOOLTIP": "Vytvoř barvu se zadaným množstvím červené, zelené a modré. Všechny hodnoty musí být mezi 0 a 100.", - "COLOUR_BLEND_TITLE": "smíchat", - "COLOUR_BLEND_COLOUR1": "barva 1", - "COLOUR_BLEND_COLOUR2": "barva 2", - "COLOUR_BLEND_RATIO": "poměr", - "COLOUR_BLEND_TOOLTIP": "Smíchá dvě barvy v daném poměru (0.0–1.0).", - "CONTROLS_REPEAT_HELPURL": "https://cs.wikipedia.org/wiki/Cyklus_for", - "CONTROLS_REPEAT_TITLE": "opakuj %1 krát", - "CONTROLS_REPEAT_INPUT_DO": "dělej", - "CONTROLS_REPEAT_TOOLTIP": "Proveď určité příkazy několikrát.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "opakovat když", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "opakovat dokud", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dokud je hodnota pravdivá, prováděj určité příkazy.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dokud je hodnota nepravdivá, prováděj určité příkazy.", - "CONTROLS_FOR_TOOLTIP": "Nechá proměnnou '%1' nabývat hodnot od počátečního do koncového čísla po daném přírůstku a provádí příslušné bloky.", - "CONTROLS_FOR_TITLE": "počítat s %1 od %2 do %3 po %4", - "CONTROLS_FOREACH_TITLE": "pro každou položku %1 v seznamu %2", - "CONTROLS_FOREACH_TOOLTIP": "Pro každou položku v seznamu nastavte do proměnné '%1' danou položku a proveďte nějaké operace.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "vyskočit ze smyčky", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "pokračuj dalším opakováním smyčky", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Vyskoč z vnitřní smyčky.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Přeskoč zbytek této smyčky a pokračuj dalším opakováním.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozornění: Tento blok může být použit pouze uvnitř smyčky.", - "CONTROLS_IF_TOOLTIP_1": "Je-li hodnota pravda, proveď určité příkazy.", - "CONTROLS_IF_TOOLTIP_2": "Je-li hodnota pravda, proveď první blok příkazů. V opačném případě proveď druhý blok příkazů.", - "CONTROLS_IF_TOOLTIP_3": "Je-li první hodnota pravdivá, proveď první blok příkazů. V opačném případě, je-li pravdivá druhá hodnota, proveď druhý blok příkazů.", - "CONTROLS_IF_TOOLTIP_4": "Je-li první hodnota pravda, proveď první blok příkazů. Je-li druhá hodnota pravda, proveď druhý blok příkazů. Pokud žádná hodnota není pravda, proveď poslední blok příkazů.", - "CONTROLS_IF_MSG_IF": "pokud", - "CONTROLS_IF_MSG_ELSEIF": "nebo pokud", - "CONTROLS_IF_MSG_ELSE": "jinak", - "CONTROLS_IF_IF_TOOLTIP": "Přidej, odstraň či uspořádej sekce k přenastavení tohoto bloku \"pokud\".", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Přidat podmínku do \"pokud\" bloku.", - "CONTROLS_IF_ELSE_TOOLTIP": "Přidej konečnou podmínku zahrnující ostatní případy do bloku \"pokud\".", - "LOGIC_COMPARE_HELPURL": "https://cs.wikipedia.org/wiki/Nerovnost_(matematika)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Vrátí hodnotu pravda, pokud se oba vstupy rovnají jeden druhému.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Vrátí hodnotu pravda, pokud se oba vstupy nerovnají sobě navzájem.", - "LOGIC_COMPARE_TOOLTIP_LT": "Navrátí hodnotu pravda, pokud je první vstup menší než druhý vstup.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Navrátí hodnotu pravda, pokud je první vstup menší a nebo rovný druhému vstupu.", - "LOGIC_COMPARE_TOOLTIP_GT": "Navrátí hodnotu pravda, pokud první vstup je větší než druhý vstup.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Navrátí hodnotu pravda, pokud je první vstup větší a nebo rovný druhému vstupu.", - "LOGIC_OPERATION_TOOLTIP_AND": "Vrátí hodnotu pravda, pokud oba dva vstupy jsou pravdivé.", - "LOGIC_OPERATION_AND": "a", - "LOGIC_OPERATION_TOOLTIP_OR": "Vrátí hodnotu pravda, pokud alespoň jeden ze vstupů má hodnotu pravda.", - "LOGIC_OPERATION_OR": "nebo", - "LOGIC_NEGATE_TITLE": "ne %1", - "LOGIC_NEGATE_TOOLTIP": "Navrátí hodnotu pravda, pokud je vstup nepravda. Navrátí hodnotu nepravda, pokud je vstup pravda.", - "LOGIC_BOOLEAN_TRUE": "pravda", - "LOGIC_BOOLEAN_FALSE": "nepravda", - "LOGIC_BOOLEAN_TOOLTIP": "Vrací pravda nebo nepravda.", - "LOGIC_NULL": "prázdný", - "LOGIC_NULL_TOOLTIP": "Vrátí prázdnou hodnotu", - "LOGIC_TERNARY_HELPURL": "https://cs.wikipedia.org/wiki/Ternární operátor (programování)", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "pokud pravda", - "LOGIC_TERNARY_IF_FALSE": "pokud nepravda", - "LOGIC_TERNARY_TOOLTIP": "Zkontroluje podmínku v \"testu\". Když je podmínka pravda, vrátí hodnotu \"pokud pravda\"; v opačném případě vrátí hodnotu \"pokud nepravda\".", - "MATH_NUMBER_HELPURL": "https://cs.wikipedia.org/wiki/Číslo", - "MATH_NUMBER_TOOLTIP": "Číslo.", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "arcsin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "arctan", - "MATH_ARITHMETIC_HELPURL": "https://cs.wikipedia.org/wiki/Aritmetika", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Vrátí součet dvou čísel.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vrátí rozdíl dvou čísel.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vrátí součin dvou čísel.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vrátí podíl dvou čísel.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Vrátí první číslo umocněné na druhé číslo.", - "MATH_SINGLE_HELPURL": "https://cs.wikipedia.org/wiki/Druhá_odmocnina", - "MATH_SINGLE_OP_ROOT": "druhá odmocnina", - "MATH_SINGLE_TOOLTIP_ROOT": "Vrátí druhou odmocninu čísla.", - "MATH_SINGLE_OP_ABSOLUTE": "absolutní hodnota", - "MATH_SINGLE_TOOLTIP_ABS": "Vrátí absolutní hodnotu čísla.", - "MATH_SINGLE_TOOLTIP_NEG": "Vrátí zápornou hodnotu čísla.", - "MATH_SINGLE_TOOLTIP_LN": "Vrátí přirozený logaritmus čísla.", - "MATH_SINGLE_TOOLTIP_LOG10": "Vrátí desítkový logaritmus čísla.", - "MATH_SINGLE_TOOLTIP_EXP": "Vrátí mocninu čísla e.", - "MATH_SINGLE_TOOLTIP_POW10": "Vrátí mocninu čísla 10.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Vrátí sinus úhlu ve stupních.", - "MATH_TRIG_TOOLTIP_COS": "Vrátí kosinus úhlu ve stupních.", - "MATH_TRIG_TOOLTIP_TAN": "Vrátí tangens úhlu ve stupních.", - "MATH_TRIG_TOOLTIP_ASIN": "Vrátí arkus sinus čísla.", - "MATH_TRIG_TOOLTIP_ACOS": "Vrátí arkus kosinus čísla.", - "MATH_TRIG_TOOLTIP_ATAN": "Vrátí arkus tangens čísla.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Vraťte jednu z následujících konstant: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (nekonečno).", - "MATH_IS_EVEN": "je sudé", - "MATH_IS_ODD": "je liché", - "MATH_IS_PRIME": "je prvočíslo", - "MATH_IS_WHOLE": "je celé", - "MATH_IS_POSITIVE": "je kladné", - "MATH_IS_NEGATIVE": "je záporné", - "MATH_IS_DIVISIBLE_BY": "je dělitelné číslem", - "MATH_IS_TOOLTIP": "Kontrola, zda je číslo sudé, liché, prvočíslo, celé, kladné, záporné nebo zda je dělitelné daným číslem. Vrací pravdu nebo nepravdu.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "zaměň %1 za %2", - "MATH_CHANGE_TOOLTIP": "Přičti číslo k proměnné '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Zaokrouhlit číslo nahoru nebo dolů.", - "MATH_ROUND_OPERATOR_ROUND": "zaokrouhlit", - "MATH_ROUND_OPERATOR_ROUNDUP": "zaokrouhlit nahoru", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokrouhlit dolů", - "MATH_ONLIST_OPERATOR_SUM": "suma seznamu", - "MATH_ONLIST_TOOLTIP_SUM": "Vrátí součet všech čísel v seznamu.", - "MATH_ONLIST_OPERATOR_MIN": "nejmenší v seznamu", - "MATH_ONLIST_TOOLTIP_MIN": "Vrátí nejmenší číslo v seznamu.", - "MATH_ONLIST_OPERATOR_MAX": "největší v seznamu", - "MATH_ONLIST_TOOLTIP_MAX": "Vrátí největší číslo v seznamu.", - "MATH_ONLIST_OPERATOR_AVERAGE": "průměr v seznamu", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Vrátí průměr (aritmetický průměr) číselných hodnot v seznamu.", - "MATH_ONLIST_OPERATOR_MEDIAN": "medián v seznamu", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Vrátí medián seznamu.", - "MATH_ONLIST_OPERATOR_MODE": "nejčastější ze seznamu", - "MATH_ONLIST_TOOLTIP_MODE": "Vrátí seznam nejčastějších položek seznamu.", - "MATH_ONLIST_OPERATOR_STD_DEV": "směrodatná odchylka ze seznamu", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Vrátí směrodatnou odchylku seznamu.", - "MATH_ONLIST_OPERATOR_RANDOM": "náhodná položka seznamu", - "MATH_ONLIST_TOOLTIP_RANDOM": "Vrátí náhodnou položku ze seznamu.", - "MATH_MODULO_HELPURL": "https://cs.wikipedia.org/wiki/Modul%C3%A1rn%C3%AD_aritmetika", - "MATH_MODULO_TITLE": "zbytek po dělení %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Vrátí zbytek po dělení dvou čísel.", - "MATH_CONSTRAIN_TITLE": "omez %1 na rozmezí od %2 do %3", - "MATH_CONSTRAIN_TOOLTIP": "Omezí číslo tak, aby bylo ve stanovených mezích (včetně).", - "MATH_RANDOM_INT_HELPURL": "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel", - "MATH_RANDOM_INT_TITLE": "náhodné celé číslo od %1 do %2", - "MATH_RANDOM_INT_TOOLTIP": "Vrací náhodné celé číslo mezi dvěma určenými mezemi, včetně mezních hodnot.", - "MATH_RANDOM_FLOAT_HELPURL": "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "náhodné číslo mezi 0 (včetně) do 1", - "MATH_RANDOM_FLOAT_TOOLTIP": "Vrátí náhodné číslo mezi 0,0 (včetně) až 1,0", - "MATH_ATAN2_HELPURL": "https://cs.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 z X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Vrací arkustangens bodu (X, Y) ve stupních od -180 do 180.", - "TEXT_TEXT_HELPURL": "https://cs.wikipedia.org/wiki/Textov%C3%BD_%C5%99et%C4%9Bzec", - "TEXT_TEXT_TOOLTIP": "Písmeno, slovo nebo řádek textu.", - "TEXT_JOIN_TITLE_CREATEWITH": "vytvořit text s", - "TEXT_JOIN_TOOLTIP": "Vytvoří kousek textu spojením libovolného počtu položek.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "spojit", - "TEXT_CREATE_JOIN_TOOLTIP": "Přidat, odebrat nebo změnit pořadí oddílů tohoto textového bloku.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Přidat položku do textu.", - "TEXT_APPEND_TITLE": "do %1 přidat text %2", - "TEXT_APPEND_TOOLTIP": "Přidá určitý text k proměnné '%1'.", - "TEXT_LENGTH_TITLE": "délka %1", - "TEXT_LENGTH_TOOLTIP": "Vrátí počet písmen (včetně mezer) v zadaném textu.", - "TEXT_ISEMPTY_TITLE": "%1 je prázdný", - "TEXT_ISEMPTY_TOOLTIP": "Vrátí pravda pokud je zadaný text prázdný.", - "TEXT_INDEXOF_TOOLTIP": "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vypíše %1.", - "TEXT_INDEXOF_TITLE": "v textu %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "najít první výskyt textu", - "TEXT_INDEXOF_OPERATOR_LAST": "najít poslední výskyt textu", - "TEXT_CHARAT_TITLE": "v textu %1 %2", - "TEXT_CHARAT_FROM_START": "získat písmeno #", - "TEXT_CHARAT_FROM_END": "získat # písmeno od konce", - "TEXT_CHARAT_FIRST": "získat první písmeno", - "TEXT_CHARAT_LAST": "získat poslední písmeno", - "TEXT_CHARAT_RANDOM": "získat náhodné písmeno", - "TEXT_CHARAT_TOOLTIP": "Získat písmeno na konkrétní pozici.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Získat zadanou část textu.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "v textu", - "TEXT_GET_SUBSTRING_START_FROM_START": "získat podřetězec od písmene #", - "TEXT_GET_SUBSTRING_START_FROM_END": "získat podřetězec od písmene # od konce", - "TEXT_GET_SUBSTRING_START_FIRST": "získat podřetězec od prvního písmene", - "TEXT_GET_SUBSTRING_END_FROM_START": "do písmene #", - "TEXT_GET_SUBSTRING_END_FROM_END": "do # písmene od konce", - "TEXT_GET_SUBSTRING_END_LAST": "do posledního písmene", - "TEXT_CHANGECASE_TOOLTIP": "Vrátí kopii textu s jinou velikostí písmen.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "na VELKÁ PÍSMENA", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "na malá písmena", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "na Počáteční Velká Písmena", - "TEXT_TRIM_TOOLTIP": "Vrátí kopii textu s odstraněnými mezerami z jednoho nebo obou konců.", - "TEXT_TRIM_OPERATOR_BOTH": "odstranit mezery z obou stran", - "TEXT_TRIM_OPERATOR_LEFT": "odstranit mezery z levé strany", - "TEXT_TRIM_OPERATOR_RIGHT": "odstranit mezery z pravé strany", - "TEXT_PRINT_TITLE": "tisk %1", - "TEXT_PRINT_TOOLTIP": "Tisk zadaného textu, čísla nebo jiné hodnoty.", - "TEXT_PROMPT_TYPE_TEXT": "výzva k zadání textu se zprávou", - "TEXT_PROMPT_TYPE_NUMBER": "výzva k zadání čísla se zprávou", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Výzva pro uživatele k zadání čísla.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Výzva pro uživatele k zadání nějakého textu.", - "LISTS_CREATE_EMPTY_TITLE": "vytvořit prázdný seznam", - "LISTS_CREATE_EMPTY_TOOLTIP": "Vrátí seznam nulové délky, který neobsahuje žádné datové záznamy", - "LISTS_CREATE_WITH_TOOLTIP": "Vytvoř seznam s libovolným počtem položek.", - "LISTS_CREATE_WITH_INPUT_WITH": "vytvořit seznam s", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "seznam", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Přidat, odebrat nebo změnit pořadí oddílů tohoto seznamu bloku.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Přidat položku do seznamu.", - "LISTS_REPEAT_TOOLTIP": "Vytváří seznam obsahující danou hodnotu n-krát.", - "LISTS_REPEAT_TITLE": "vytvoř seznam s položkou %1 opakovanou %2 krát", - "LISTS_LENGTH_TITLE": "délka %1", - "LISTS_LENGTH_TOOLTIP": "Vrací počet položek v seznamu.", - "LISTS_ISEMPTY_TITLE": "%1 je prázdné", - "LISTS_ISEMPTY_TOOLTIP": "Vrátí hodnotu pravda, pokud je seznam prázdný.", - "LISTS_INLIST": "v seznamu", - "LISTS_INDEX_OF_FIRST": "najít první výskyt položky", - "LISTS_INDEX_OF_LAST": "najít poslední výskyt položky", - "LISTS_INDEX_OF_TOOLTIP": "Vrací index prvního/posledního výskytu položky v seznamu. Vrací %1, pokud položka nebyla nalezena.", - "LISTS_GET_INDEX_GET": "získat", - "LISTS_GET_INDEX_GET_REMOVE": "získat a odstranit", - "LISTS_GET_INDEX_REMOVE": "odstranit", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# od konce", - "LISTS_GET_INDEX_FIRST": "první", - "LISTS_GET_INDEX_LAST": "poslední", - "LISTS_GET_INDEX_RANDOM": "náhodné", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 je první položka.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 je poslední položka.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Získá položku z určené pozice v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vrátí první položku v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vrátí poslední položku v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vrátí náhodnou položku ze seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Odstraní a získá položku z určené pozice v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Odstraní a vrátí první položku v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Odstraní a vrátí poslední položku v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Odstraní a vrátí náhodnou položku v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Odebere položku na konkrétním místě v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Odstraní první položku v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Odstraní poslední položku v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Odstraní náhodou položku v seznamu.", - "LISTS_SET_INDEX_SET": "nastavit", - "LISTS_SET_INDEX_INSERT": "vložit na", - "LISTS_SET_INDEX_INPUT_TO": "jako", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Nastaví položku na konkrétní místo v seznamu.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Nastaví první položku v seznamu.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Nastaví poslední položku v seznamu.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Nastaví náhodnou položku v seznamu.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Vloží položku na určenou pozici v seznamu.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Vložit položku na začátek seznamu.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Připojí položku na konec seznamu.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Připojí položku náhodně do seznamu.", - "LISTS_GET_SUBLIST_START_FROM_START": "získat podseznam od #", - "LISTS_GET_SUBLIST_START_FROM_END": "získat podseznam od # od konce", - "LISTS_GET_SUBLIST_START_FIRST": "získat podseznam od první položky", - "LISTS_GET_SUBLIST_END_FROM_START": "do #", - "LISTS_GET_SUBLIST_END_FROM_END": "do # od konce", - "LISTS_GET_SUBLIST_END_LAST": "jako poslední", - "LISTS_GET_SUBLIST_TOOLTIP": "Vytvoří kopii určené části seznamu.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "seřadit %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Seřadit kopii seznamu.", - "LISTS_SORT_ORDER_ASCENDING": "vzestupně", - "LISTS_SORT_ORDER_DESCENDING": "sestupně", - "LISTS_SORT_TYPE_NUMERIC": "číselné", - "LISTS_SORT_TYPE_TEXT": "abecedně", - "LISTS_SORT_TYPE_IGNORECASE": "abecedně, na velikosti písmen nezáleží", - "LISTS_SPLIT_LIST_FROM_TEXT": "udělat z textu seznam", - "LISTS_SPLIT_TEXT_FROM_LIST": "udělat ze seznamu text", - "LISTS_SPLIT_WITH_DELIMITER": "s oddělovačem", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Rozdělit text do seznamu textů, lámání na oddělovačích.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Spojit seznam textů do jednoho textu, rozdělaného oddělovači.", - "VARIABLES_GET_TOOLTIP": "Vrátí hodnotu této proměnné.", - "VARIABLES_GET_CREATE_SET": "Vytvořit \"nastavit %1\"", - "VARIABLES_SET": "nastavit %1 na %2", - "VARIABLES_SET_TOOLTIP": "Nastaví tuto proměnnou, aby se rovnala vstupu.", - "VARIABLES_SET_CREATE_GET": "Vytvořit \"získat %1\"", - "PROCEDURES_DEFNORETURN_HELPURL": "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)", - "PROCEDURES_DEFNORETURN_TITLE": "k provedení", - "PROCEDURES_DEFNORETURN_PROCEDURE": "proveď něco", - "PROCEDURES_BEFORE_PARAMS": "s:", - "PROCEDURES_CALL_BEFORE_PARAMS": "s:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Vytvořit funkci bez výstupu.", - "PROCEDURES_DEFNORETURN_COMMENT": "Popište tuto funkci...", - "PROCEDURES_DEFRETURN_HELPURL": "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)", - "PROCEDURES_DEFRETURN_RETURN": "navrátit", - "PROCEDURES_DEFRETURN_TOOLTIP": "Vytvořit funkci s výstupem.", - "PROCEDURES_ALLOW_STATEMENTS": "povolit příkazy", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Upozornění: Tato funkce má duplicitní parametry.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://cs.wikipedia.org/wiki/Podprogram", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Spustí uživatelem definovanou funkci '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://cs.wikipedia.org/wiki/Podprogram", - "PROCEDURES_CALLRETURN_TOOLTIP": "Spustí uživatelem definovanou funkci '%1' a použije její výstup.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "vstupy", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Přidat, odebrat nebo změnit pořadí vstupů této funkce.", - "PROCEDURES_MUTATORARG_TITLE": "vstupní jméno:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Přidat vstupy do funkce.", - "PROCEDURES_HIGHLIGHT_DEF": "Zvýraznit definici funkce", - "PROCEDURES_CREATE_DO": "Vytvořit '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Je-li hodnota pravda, pak vrátí druhou hodnotu.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Varování: Tento blok může být použit pouze uvnitř definici funkce.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Zrušit" -} +{ + "@metadata": { + "authors": [ + "Chmee2", + "Clon", + "Dita", + "Dvorapa", + "Emis-cz", + "Espertus", + "Georg101", + "Ilimanaq29", + "Koo6", + "Matěj Grabovský", + "Patriccck", + "Patrik L.", + "Robins7", + "Rosnicka.kacka", + "Utar", + "Vtmarvin" + ] + }, + "VARIABLES_DEFAULT_NAME": "položka", + "UNNAMED_KEY": "nepojmenovaný", + "TODAY": "Dnes", + "DUPLICATE_BLOCK": "Duplikovat", + "ADD_COMMENT": "Přidat komentář", + "REMOVE_COMMENT": "Odstranit komentář", + "DUPLICATE_COMMENT": "Duplikovat komentář", + "EXTERNAL_INPUTS": "vnější vstupy", + "INLINE_INPUTS": "Vložené vstupy", + "DELETE_BLOCK": "Smazat blok", + "DELETE_X_BLOCKS": "Smazat %1 bloků", + "DELETE_ALL_BLOCKS": "Smazat všech %1 bloků?", + "CLEAN_UP": "Uspořádat bloky", + "COLLAPSE_BLOCK": "Sbalit blok", + "COLLAPSE_ALL": "Sbalit bloky", + "EXPAND_BLOCK": "Rozbalit blok", + "EXPAND_ALL": "Rozbalit bloky", + "DISABLE_BLOCK": "Deaktivovat blok", + "ENABLE_BLOCK": "Povolit blok", + "HELP": "Nápověda", + "UNDO": "Zpět", + "REDO": "Znovu", + "CHANGE_VALUE_TITLE": "Změnit hodnotu:", + "RENAME_VARIABLE": "Přejmenovat proměnnou...", + "RENAME_VARIABLE_TITLE": "Přejmenuj všech '%1' proměnných na:", + "NEW_VARIABLE": "Vytvořit proměnnou...", + "NEW_STRING_VARIABLE": "Vytvořit textovou proměnnou...", + "NEW_NUMBER_VARIABLE": "Vytvořit číselnou proměnnou...", + "NEW_COLOUR_VARIABLE": "Vytvořit proměnnou pro barvu...", + "NEW_VARIABLE_TYPE_TITLE": "Nový typ proměnné:", + "NEW_VARIABLE_TITLE": "Nový název proměnné:", + "VARIABLE_ALREADY_EXISTS": "Proměnná jménem '%1' již existuje", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Proměnná pojmenovaná jako '%1' již existuje pro jiný typ: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Odstranit %1 použití proměnné '%2'", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Proměnnou '%1' není možné odstranit, protože je součástí definice funkce '%2'", + "DELETE_VARIABLE": "Odstranit proměnnou '%1'", + "COLOUR_PICKER_HELPURL": "https://cs.wikipedia.org/wiki/Barva", + "COLOUR_PICKER_TOOLTIP": "Vyberte barvu z palety.", + "COLOUR_RANDOM_TITLE": "náhodná barva", + "COLOUR_RANDOM_TOOLTIP": "Zvolte barvu náhodně.", + "COLOUR_RGB_TITLE": "obarvěte barvou", + "COLOUR_RGB_RED": "červená", + "COLOUR_RGB_GREEN": "zelená", + "COLOUR_RGB_BLUE": "modrá", + "COLOUR_RGB_TOOLTIP": "Vytvoř barvu se zadaným množstvím červené, zelené a modré. Všechny hodnoty musí být mezi 0 a 100.", + "COLOUR_BLEND_TITLE": "smíchat", + "COLOUR_BLEND_COLOUR1": "barva 1", + "COLOUR_BLEND_COLOUR2": "barva 2", + "COLOUR_BLEND_RATIO": "poměr", + "COLOUR_BLEND_TOOLTIP": "Smíchá dvě barvy v daném poměru (0.0–1.0).", + "CONTROLS_REPEAT_HELPURL": "https://cs.wikipedia.org/wiki/Cyklus_for", + "CONTROLS_REPEAT_TITLE": "opakuj %1 krát", + "CONTROLS_REPEAT_INPUT_DO": "dělej", + "CONTROLS_REPEAT_TOOLTIP": "Proveď určité příkazy několikrát.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "opakovat když", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "opakovat dokud", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dokud je hodnota pravdivá, prováděj určité příkazy.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dokud je hodnota nepravdivá, prováděj určité příkazy.", + "CONTROLS_FOR_TOOLTIP": "Nechá proměnnou '%1' nabývat hodnot od počátečního do koncového čísla po daném přírůstku a provádí příslušné bloky.", + "CONTROLS_FOR_TITLE": "počítat s %1 od %2 do %3 po %4", + "CONTROLS_FOREACH_TITLE": "pro každou položku %1 v seznamu %2", + "CONTROLS_FOREACH_TOOLTIP": "Pro každou položku v seznamu nastavte do proměnné '%1' danou položku a proveďte nějaké operace.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "vyskočit ze smyčky", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "pokračuj dalším opakováním smyčky", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Vyskoč z vnitřní smyčky.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Přeskoč zbytek této smyčky a pokračuj dalším opakováním.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozornění: Tento blok může být použit pouze uvnitř smyčky.", + "CONTROLS_IF_TOOLTIP_1": "Je-li hodnota pravda, proveď určité příkazy.", + "CONTROLS_IF_TOOLTIP_2": "Je-li hodnota pravda, proveď první blok příkazů. V opačném případě proveď druhý blok příkazů.", + "CONTROLS_IF_TOOLTIP_3": "Je-li první hodnota pravdivá, proveď první blok příkazů. V opačném případě, je-li pravdivá druhá hodnota, proveď druhý blok příkazů.", + "CONTROLS_IF_TOOLTIP_4": "Je-li první hodnota pravda, proveď první blok příkazů. Je-li druhá hodnota pravda, proveď druhý blok příkazů. Pokud žádná hodnota není pravda, proveď poslední blok příkazů.", + "CONTROLS_IF_MSG_IF": "pokud", + "CONTROLS_IF_MSG_ELSEIF": "nebo pokud", + "CONTROLS_IF_MSG_ELSE": "jinak", + "CONTROLS_IF_IF_TOOLTIP": "Přidej, odstraň či uspořádej sekce k přenastavení tohoto bloku \"pokud\".", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Přidat podmínku do \"pokud\" bloku.", + "CONTROLS_IF_ELSE_TOOLTIP": "Přidej konečnou podmínku zahrnující ostatní případy do bloku \"pokud\".", + "LOGIC_COMPARE_HELPURL": "https://cs.wikipedia.org/wiki/Nerovnost_(matematika)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Vrátí hodnotu pravda, pokud se oba vstupy rovnají jeden druhému.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Vrátí hodnotu pravda, pokud se oba vstupy nerovnají sobě navzájem.", + "LOGIC_COMPARE_TOOLTIP_LT": "Navrátí hodnotu pravda, pokud je první vstup menší než druhý vstup.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Navrátí hodnotu pravda, pokud je první vstup menší a nebo rovný druhému vstupu.", + "LOGIC_COMPARE_TOOLTIP_GT": "Navrátí hodnotu pravda, pokud první vstup je větší než druhý vstup.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Navrátí hodnotu pravda, pokud je první vstup větší a nebo rovný druhému vstupu.", + "LOGIC_OPERATION_TOOLTIP_AND": "Vrátí hodnotu pravda, pokud oba dva vstupy jsou pravdivé.", + "LOGIC_OPERATION_AND": "a", + "LOGIC_OPERATION_TOOLTIP_OR": "Vrátí hodnotu pravda, pokud alespoň jeden ze vstupů má hodnotu pravda.", + "LOGIC_OPERATION_OR": "nebo", + "LOGIC_NEGATE_TITLE": "ne %1", + "LOGIC_NEGATE_TOOLTIP": "Navrátí hodnotu pravda, pokud je vstup nepravda. Navrátí hodnotu nepravda, pokud je vstup pravda.", + "LOGIC_BOOLEAN_TRUE": "pravda", + "LOGIC_BOOLEAN_FALSE": "nepravda", + "LOGIC_BOOLEAN_TOOLTIP": "Vrací pravda nebo nepravda.", + "LOGIC_NULL": "prázdný", + "LOGIC_NULL_TOOLTIP": "Vrátí prázdnou hodnotu", + "LOGIC_TERNARY_HELPURL": "https://cs.wikipedia.org/wiki/Ternární operátor (programování)", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "pokud pravda", + "LOGIC_TERNARY_IF_FALSE": "pokud nepravda", + "LOGIC_TERNARY_TOOLTIP": "Zkontroluje podmínku v \"testu\". Když je podmínka pravda, vrátí hodnotu \"pokud pravda\"; v opačném případě vrátí hodnotu \"pokud nepravda\".", + "MATH_NUMBER_HELPURL": "https://cs.wikipedia.org/wiki/Číslo", + "MATH_NUMBER_TOOLTIP": "Číslo.", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "arcsin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "arctan", + "MATH_ARITHMETIC_HELPURL": "https://cs.wikipedia.org/wiki/Aritmetika", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Vrátí součet dvou čísel.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vrátí rozdíl dvou čísel.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vrátí součin dvou čísel.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vrátí podíl dvou čísel.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Vrátí první číslo umocněné na druhé číslo.", + "MATH_SINGLE_HELPURL": "https://cs.wikipedia.org/wiki/Druhá_odmocnina", + "MATH_SINGLE_OP_ROOT": "druhá odmocnina", + "MATH_SINGLE_TOOLTIP_ROOT": "Vrátí druhou odmocninu čísla.", + "MATH_SINGLE_OP_ABSOLUTE": "absolutní hodnota", + "MATH_SINGLE_TOOLTIP_ABS": "Vrátí absolutní hodnotu čísla.", + "MATH_SINGLE_TOOLTIP_NEG": "Vrátí zápornou hodnotu čísla.", + "MATH_SINGLE_TOOLTIP_LN": "Vrátí přirozený logaritmus čísla.", + "MATH_SINGLE_TOOLTIP_LOG10": "Vrátí desítkový logaritmus čísla.", + "MATH_SINGLE_TOOLTIP_EXP": "Vrátí mocninu čísla e.", + "MATH_SINGLE_TOOLTIP_POW10": "Vrátí mocninu čísla 10.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Vrátí sinus úhlu ve stupních.", + "MATH_TRIG_TOOLTIP_COS": "Vrátí kosinus úhlu ve stupních.", + "MATH_TRIG_TOOLTIP_TAN": "Vrátí tangens úhlu ve stupních.", + "MATH_TRIG_TOOLTIP_ASIN": "Vrátí arkus sinus čísla.", + "MATH_TRIG_TOOLTIP_ACOS": "Vrátí arkus kosinus čísla.", + "MATH_TRIG_TOOLTIP_ATAN": "Vrátí arkus tangens čísla.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Vraťte jednu z následujících konstant: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (nekonečno).", + "MATH_IS_EVEN": "je sudé", + "MATH_IS_ODD": "je liché", + "MATH_IS_PRIME": "je prvočíslo", + "MATH_IS_WHOLE": "je celé", + "MATH_IS_POSITIVE": "je kladné", + "MATH_IS_NEGATIVE": "je záporné", + "MATH_IS_DIVISIBLE_BY": "je dělitelné číslem", + "MATH_IS_TOOLTIP": "Kontrola, zda je číslo sudé, liché, prvočíslo, celé, kladné, záporné nebo zda je dělitelné daným číslem. Vrací pravdu nebo nepravdu.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "zaměň %1 za %2", + "MATH_CHANGE_TOOLTIP": "Přičti číslo k proměnné '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Zaokrouhlit číslo nahoru nebo dolů.", + "MATH_ROUND_OPERATOR_ROUND": "zaokrouhlit", + "MATH_ROUND_OPERATOR_ROUNDUP": "zaokrouhlit nahoru", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokrouhlit dolů", + "MATH_ONLIST_OPERATOR_SUM": "suma seznamu", + "MATH_ONLIST_TOOLTIP_SUM": "Vrátí součet všech čísel v seznamu.", + "MATH_ONLIST_OPERATOR_MIN": "nejmenší v seznamu", + "MATH_ONLIST_TOOLTIP_MIN": "Vrátí nejmenší číslo v seznamu.", + "MATH_ONLIST_OPERATOR_MAX": "největší v seznamu", + "MATH_ONLIST_TOOLTIP_MAX": "Vrátí největší číslo v seznamu.", + "MATH_ONLIST_OPERATOR_AVERAGE": "průměr v seznamu", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Vrátí průměr (aritmetický průměr) číselných hodnot v seznamu.", + "MATH_ONLIST_OPERATOR_MEDIAN": "medián v seznamu", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Vrátí medián seznamu.", + "MATH_ONLIST_OPERATOR_MODE": "nejčastější ze seznamu", + "MATH_ONLIST_TOOLTIP_MODE": "Vrátí seznam nejčastějších položek seznamu.", + "MATH_ONLIST_OPERATOR_STD_DEV": "směrodatná odchylka ze seznamu", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Vrátí směrodatnou odchylku seznamu.", + "MATH_ONLIST_OPERATOR_RANDOM": "náhodná položka seznamu", + "MATH_ONLIST_TOOLTIP_RANDOM": "Vrátí náhodnou položku ze seznamu.", + "MATH_MODULO_HELPURL": "https://cs.wikipedia.org/wiki/Modul%C3%A1rn%C3%AD_aritmetika", + "MATH_MODULO_TITLE": "zbytek po dělení %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Vrátí zbytek po dělení dvou čísel.", + "MATH_CONSTRAIN_TITLE": "omez %1 na rozmezí od %2 do %3", + "MATH_CONSTRAIN_TOOLTIP": "Omezí číslo tak, aby bylo ve stanovených mezích (včetně).", + "MATH_RANDOM_INT_HELPURL": "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel", + "MATH_RANDOM_INT_TITLE": "náhodné celé číslo od %1 do %2", + "MATH_RANDOM_INT_TOOLTIP": "Vrací náhodné celé číslo mezi dvěma určenými mezemi, včetně mezních hodnot.", + "MATH_RANDOM_FLOAT_HELPURL": "https://cs.wikipedia.org/wiki/Gener%C3%A1tor_n%C3%A1hodn%C3%BDch_%C4%8D%C3%ADsel", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "náhodné číslo mezi 0 (včetně) do 1", + "MATH_RANDOM_FLOAT_TOOLTIP": "Vrátí náhodné číslo mezi 0,0 (včetně) až 1,0", + "MATH_ATAN2_HELPURL": "https://cs.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 z X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Vrací arkustangens bodu (X, Y) ve stupních od -180 do 180.", + "TEXT_TEXT_HELPURL": "https://cs.wikipedia.org/wiki/Textov%C3%BD_%C5%99et%C4%9Bzec", + "TEXT_TEXT_TOOLTIP": "Písmeno, slovo nebo řádek textu.", + "TEXT_JOIN_TITLE_CREATEWITH": "vytvořit text s", + "TEXT_JOIN_TOOLTIP": "Vytvoří kousek textu spojením libovolného počtu položek.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "spojit", + "TEXT_CREATE_JOIN_TOOLTIP": "Přidat, odebrat nebo změnit pořadí oddílů tohoto textového bloku.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Přidat položku do textu.", + "TEXT_APPEND_TITLE": "do %1 přidat text %2", + "TEXT_APPEND_TOOLTIP": "Přidá určitý text k proměnné '%1'.", + "TEXT_LENGTH_TITLE": "délka %1", + "TEXT_LENGTH_TOOLTIP": "Vrátí počet písmen (včetně mezer) v zadaném textu.", + "TEXT_ISEMPTY_TITLE": "%1 je prázdný", + "TEXT_ISEMPTY_TOOLTIP": "Vrátí pravda pokud je zadaný text prázdný.", + "TEXT_INDEXOF_TOOLTIP": "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vypíše %1.", + "TEXT_INDEXOF_TITLE": "v textu %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "najít první výskyt textu", + "TEXT_INDEXOF_OPERATOR_LAST": "najít poslední výskyt textu", + "TEXT_CHARAT_TITLE": "v textu %1 %2", + "TEXT_CHARAT_FROM_START": "získat písmeno #", + "TEXT_CHARAT_FROM_END": "získat # písmeno od konce", + "TEXT_CHARAT_FIRST": "získat první písmeno", + "TEXT_CHARAT_LAST": "získat poslední písmeno", + "TEXT_CHARAT_RANDOM": "získat náhodné písmeno", + "TEXT_CHARAT_TOOLTIP": "Získat písmeno na konkrétní pozici.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Získat zadanou část textu.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "v textu", + "TEXT_GET_SUBSTRING_START_FROM_START": "získat podřetězec od písmene #", + "TEXT_GET_SUBSTRING_START_FROM_END": "získat podřetězec od písmene # od konce", + "TEXT_GET_SUBSTRING_START_FIRST": "získat podřetězec od prvního písmene", + "TEXT_GET_SUBSTRING_END_FROM_START": "do písmene #", + "TEXT_GET_SUBSTRING_END_FROM_END": "do # písmene od konce", + "TEXT_GET_SUBSTRING_END_LAST": "do posledního písmene", + "TEXT_CHANGECASE_TOOLTIP": "Vrátí kopii textu s jinou velikostí písmen.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "na VELKÁ PÍSMENA", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "na malá písmena", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "na Počáteční Velká Písmena", + "TEXT_TRIM_TOOLTIP": "Vrátí kopii textu s odstraněnými mezerami z jednoho nebo obou konců.", + "TEXT_TRIM_OPERATOR_BOTH": "odstranit mezery z obou stran", + "TEXT_TRIM_OPERATOR_LEFT": "odstranit mezery z levé strany", + "TEXT_TRIM_OPERATOR_RIGHT": "odstranit mezery z pravé strany", + "TEXT_PRINT_TITLE": "tisk %1", + "TEXT_PRINT_TOOLTIP": "Tisk zadaného textu, čísla nebo jiné hodnoty.", + "TEXT_PROMPT_TYPE_TEXT": "výzva k zadání textu se zprávou", + "TEXT_PROMPT_TYPE_NUMBER": "výzva k zadání čísla se zprávou", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Výzva pro uživatele k zadání čísla.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Výzva pro uživatele k zadání nějakého textu.", + "LISTS_CREATE_EMPTY_TITLE": "vytvořit prázdný seznam", + "LISTS_CREATE_EMPTY_TOOLTIP": "Vrátí seznam nulové délky, který neobsahuje žádné datové záznamy", + "LISTS_CREATE_WITH_TOOLTIP": "Vytvoř seznam s libovolným počtem položek.", + "LISTS_CREATE_WITH_INPUT_WITH": "vytvořit seznam s", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "seznam", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Přidat, odebrat nebo změnit pořadí oddílů tohoto seznamu bloku.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Přidat položku do seznamu.", + "LISTS_REPEAT_TOOLTIP": "Vytváří seznam obsahující danou hodnotu n-krát.", + "LISTS_REPEAT_TITLE": "vytvoř seznam s položkou %1 opakovanou %2 krát", + "LISTS_LENGTH_TITLE": "délka %1", + "LISTS_LENGTH_TOOLTIP": "Vrací počet položek v seznamu.", + "LISTS_ISEMPTY_TITLE": "%1 je prázdné", + "LISTS_ISEMPTY_TOOLTIP": "Vrátí hodnotu pravda, pokud je seznam prázdný.", + "LISTS_INLIST": "v seznamu", + "LISTS_INDEX_OF_FIRST": "najít první výskyt položky", + "LISTS_INDEX_OF_LAST": "najít poslední výskyt položky", + "LISTS_INDEX_OF_TOOLTIP": "Vrací index prvního/posledního výskytu položky v seznamu. Vrací %1, pokud položka nebyla nalezena.", + "LISTS_GET_INDEX_GET": "získat", + "LISTS_GET_INDEX_GET_REMOVE": "získat a odstranit", + "LISTS_GET_INDEX_REMOVE": "odstranit", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# od konce", + "LISTS_GET_INDEX_FIRST": "první", + "LISTS_GET_INDEX_LAST": "poslední", + "LISTS_GET_INDEX_RANDOM": "náhodné", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 je první položka.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 je poslední položka.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Získá položku z určené pozice v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vrátí první položku v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vrátí poslední položku v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vrátí náhodnou položku ze seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Odstraní a získá položku z určené pozice v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Odstraní a vrátí první položku v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Odstraní a vrátí poslední položku v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Odstraní a vrátí náhodnou položku v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Odebere položku na konkrétním místě v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Odstraní první položku v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Odstraní poslední položku v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Odstraní náhodou položku v seznamu.", + "LISTS_SET_INDEX_SET": "nastavit", + "LISTS_SET_INDEX_INSERT": "vložit na", + "LISTS_SET_INDEX_INPUT_TO": "jako", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Nastaví položku na konkrétní místo v seznamu.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Nastaví první položku v seznamu.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Nastaví poslední položku v seznamu.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Nastaví náhodnou položku v seznamu.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Vloží položku na určenou pozici v seznamu.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Vložit položku na začátek seznamu.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Připojí položku na konec seznamu.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Připojí položku náhodně do seznamu.", + "LISTS_GET_SUBLIST_START_FROM_START": "získat podseznam od #", + "LISTS_GET_SUBLIST_START_FROM_END": "získat podseznam od # od konce", + "LISTS_GET_SUBLIST_START_FIRST": "získat podseznam od první položky", + "LISTS_GET_SUBLIST_END_FROM_START": "do #", + "LISTS_GET_SUBLIST_END_FROM_END": "do # od konce", + "LISTS_GET_SUBLIST_END_LAST": "jako poslední", + "LISTS_GET_SUBLIST_TOOLTIP": "Vytvoří kopii určené části seznamu.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "seřadit %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Seřadit kopii seznamu.", + "LISTS_SORT_ORDER_ASCENDING": "vzestupně", + "LISTS_SORT_ORDER_DESCENDING": "sestupně", + "LISTS_SORT_TYPE_NUMERIC": "číselné", + "LISTS_SORT_TYPE_TEXT": "abecedně", + "LISTS_SORT_TYPE_IGNORECASE": "abecedně, na velikosti písmen nezáleží", + "LISTS_SPLIT_LIST_FROM_TEXT": "udělat z textu seznam", + "LISTS_SPLIT_TEXT_FROM_LIST": "udělat ze seznamu text", + "LISTS_SPLIT_WITH_DELIMITER": "s oddělovačem", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Rozdělit text do seznamu textů, lámání na oddělovačích.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Spojit seznam textů do jednoho textu, rozdělaného oddělovači.", + "VARIABLES_GET_TOOLTIP": "Vrátí hodnotu této proměnné.", + "VARIABLES_GET_CREATE_SET": "Vytvořit \"nastavit %1\"", + "VARIABLES_SET": "nastavit %1 na %2", + "VARIABLES_SET_TOOLTIP": "Nastaví tuto proměnnou, aby se rovnala vstupu.", + "VARIABLES_SET_CREATE_GET": "Vytvořit \"získat %1\"", + "PROCEDURES_DEFNORETURN_HELPURL": "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)", + "PROCEDURES_DEFNORETURN_TITLE": "k provedení", + "PROCEDURES_DEFNORETURN_PROCEDURE": "proveď něco", + "PROCEDURES_BEFORE_PARAMS": "s:", + "PROCEDURES_CALL_BEFORE_PARAMS": "s:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Vytvořit funkci bez výstupu.", + "PROCEDURES_DEFNORETURN_COMMENT": "Popište tuto funkci...", + "PROCEDURES_DEFRETURN_HELPURL": "https://cs.wikipedia.org/w/index.php?title=Funkce_(programování)", + "PROCEDURES_DEFRETURN_RETURN": "navrátit", + "PROCEDURES_DEFRETURN_TOOLTIP": "Vytvořit funkci s výstupem.", + "PROCEDURES_ALLOW_STATEMENTS": "povolit příkazy", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Upozornění: Tato funkce má duplicitní parametry.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://cs.wikipedia.org/wiki/Podprogram", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Spustí uživatelem definovanou funkci '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://cs.wikipedia.org/wiki/Podprogram", + "PROCEDURES_CALLRETURN_TOOLTIP": "Spustí uživatelem definovanou funkci '%1' a použije její výstup.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "vstupy", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Přidat, odebrat nebo změnit pořadí vstupů této funkce.", + "PROCEDURES_MUTATORARG_TITLE": "vstupní jméno:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Přidat vstupy do funkce.", + "PROCEDURES_HIGHLIGHT_DEF": "Zvýraznit definici funkce", + "PROCEDURES_CREATE_DO": "Vytvořit '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Je-li hodnota pravda, pak vrátí druhou hodnotu.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Varování: Tento blok může být použit pouze uvnitř definici funkce.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Zrušit" +} diff --git a/msg/json/da.json b/msg/json/da.json index fa4198c233e..5f3759c8340 100644 --- a/msg/json/da.json +++ b/msg/json/da.json @@ -1,340 +1,340 @@ -{ - "@metadata": { - "authors": [ - "Christian List", - "Joedalton", - "JonNPoulsen", - "MGA73", - "Mads Haupt", - "RickiRunge", - "Saederup92", - "Tjernobyl" - ] - }, - "VARIABLES_DEFAULT_NAME": "element", - "UNNAMED_KEY": "unavngivet", - "TODAY": "I dag", - "DUPLICATE_BLOCK": "Duplikér", - "ADD_COMMENT": "Tilføj Kommentar", - "REMOVE_COMMENT": "Fjern Kommentar", - "DUPLICATE_COMMENT": "Duplikér Kommentar", - "EXTERNAL_INPUTS": "Udvendige inputs", - "INLINE_INPUTS": "Indlejrede inputs", - "DELETE_BLOCK": "Slet blok", - "DELETE_X_BLOCKS": "Slet %1 blokke", - "DELETE_ALL_BLOCKS": "Slet alle %1 blokke?", - "CLEAN_UP": "Ryd op i blokke", - "COLLAPSE_BLOCK": "Fold blokken sammen", - "COLLAPSE_ALL": "Fold blokkene sammen", - "EXPAND_BLOCK": "Fold blokken ud", - "EXPAND_ALL": "Fold blokkene ud", - "DISABLE_BLOCK": "Deaktivér blok", - "ENABLE_BLOCK": "Aktivér blok", - "HELP": "Hjælp", - "UNDO": "Fortryd", - "REDO": "Omgør", - "CHANGE_VALUE_TITLE": "Skift værdi:", - "RENAME_VARIABLE": "Omdøb variabel...", - "RENAME_VARIABLE_TITLE": "Omdøb alle '%1' variabler til:", - "NEW_VARIABLE": "Opret variabel ...", - "NEW_STRING_VARIABLE": "Opret strengvariabel ...", - "NEW_NUMBER_VARIABLE": "Opret nummervariabel ...", - "NEW_COLOUR_VARIABLE": "Opret farvevariabel ...", - "NEW_VARIABLE_TYPE_TITLE": "Ny variabeltype:", - "NEW_VARIABLE_TITLE": "Navn til den nye variabel:", - "VARIABLE_ALREADY_EXISTS": "En variabel med navnet »%1« findes allerede.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "En variabel med navnet »%1« findes allerede for en anden type: »%2«.", - "DELETE_VARIABLE_CONFIRMATION": "Slet %1's brug af variablen »%2«?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Kan ikke slette variablen »%1« da den er en del af definitionen af funktionen »%2«", - "DELETE_VARIABLE": "Slet variablen »%1«", - "COLOUR_PICKER_HELPURL": "https://da.wikipedia.org/wiki/Farve", - "COLOUR_PICKER_TOOLTIP": "Vælg en farve fra paletten.", - "COLOUR_RANDOM_TITLE": "tilfældig farve", - "COLOUR_RANDOM_TOOLTIP": "Vælg en tilfældig farve.", - "COLOUR_RGB_TITLE": "farve med", - "COLOUR_RGB_RED": "rød", - "COLOUR_RGB_GREEN": "grøn", - "COLOUR_RGB_BLUE": "blå", - "COLOUR_RGB_TOOLTIP": "Lav en farve med den angivne mængde af rød, grøn og blå. Alle værdier skal være mellem 0 og 100.", - "COLOUR_BLEND_TITLE": "bland", - "COLOUR_BLEND_COLOUR1": "farve 1", - "COLOUR_BLEND_COLOUR2": "farve 2", - "COLOUR_BLEND_RATIO": "i forholdet", - "COLOUR_BLEND_TOOLTIP": "Blander to farver sammen i et bestemt forhold (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://da.wikipedia.org/wiki/For-l%C3%B8kke", - "CONTROLS_REPEAT_TITLE": "gentag %1 gange", - "CONTROLS_REPEAT_INPUT_DO": "udfør", - "CONTROLS_REPEAT_TOOLTIP": "Udfør nogle kommandoer flere gange.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "gentag sålænge", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "gentag indtil", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Udfør nogle kommandoer, sålænge en værdi er sand.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Udfør nogle kommandoer, sålænge en værdi er falsk.", - "CONTROLS_FOR_TOOLTIP": "Få variablen \"%1\" til at have værdierne fra startværdien til slutværdien, mens der tælles med det angivne interval, og udfør de angivne blokke.", - "CONTROLS_FOR_TITLE": "tæl med %1 fra %2 til %3 med %4", - "CONTROLS_FOREACH_TITLE": "for hvert element %1 i listen %2", - "CONTROLS_FOREACH_TOOLTIP": "For hvert element i en liste, sæt variablen '%1' til elementet, og udfør derefter nogle kommandoer.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "bryd ud af løkken", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fortsæt med den næste gentagelse i løkken", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Bryd ud af den omgivende løkke.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Spring resten af denne løkke over, og fortsæt med den næste gentagelse.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Advarsel: Denne blok kan kun bruges i en løkke.", - "CONTROLS_IF_TOOLTIP_1": "Hvis en værdi er sand, så udfør nogle kommandoer.", - "CONTROLS_IF_TOOLTIP_2": "Hvis en værdi er sand, så udfør den første blok af kommandoer. Ellers udfør den anden blok af kommandoer.", - "CONTROLS_IF_TOOLTIP_3": "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer.", - "CONTROLS_IF_TOOLTIP_4": "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer. Hvis ingen af værdierne er sande, så udfør den sidste blok af kommandoer.", - "CONTROLS_IF_MSG_IF": "hvis", - "CONTROLS_IF_MSG_ELSEIF": "ellers hvis", - "CONTROLS_IF_MSG_ELSE": "ellers", - "CONTROLS_IF_IF_TOOLTIP": "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne \"hvis\" blok.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Tilføj en betingelse til denne \"hvis\" blok.", - "CONTROLS_IF_ELSE_TOOLTIP": "Tilføj en sidste fang-alt betingelse, til denne \"hvis\" blok.", - "LOGIC_COMPARE_HELPURL": "https://da.wikipedia.org/wiki/Ulighed_(matematik)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Returnere sand, hvis begge inputs er lig med hinanden.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Returnere sand, hvis begge inputs ikke er lig med hinanden.", - "LOGIC_COMPARE_TOOLTIP_LT": "Returnere sand, hvis det første input er mindre end det andet input.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Returnere sand, hvis det første input er mindre end eller lig med det andet input.", - "LOGIC_COMPARE_TOOLTIP_GT": "Returnere sand, hvis det første input er større end det andet input.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Returnere sand, hvis det første input er større end eller lig med det andet input.", - "LOGIC_OPERATION_TOOLTIP_AND": "Returnere sand, hvis begge inputs er sande.", - "LOGIC_OPERATION_AND": "og", - "LOGIC_OPERATION_TOOLTIP_OR": "Returnere sand, hvis mindst et af inputtene er sande.", - "LOGIC_OPERATION_OR": "eller", - "LOGIC_NEGATE_TITLE": "ikke %1", - "LOGIC_NEGATE_TOOLTIP": "Returnerer sand, hvis input er falsk. Returnerer falsk, hvis input er sandt.", - "LOGIC_BOOLEAN_TRUE": "sand", - "LOGIC_BOOLEAN_FALSE": "falsk", - "LOGIC_BOOLEAN_TOOLTIP": "Returnerer enten sand eller falsk.", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Returnerer null.", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "hvis sand", - "LOGIC_TERNARY_IF_FALSE": "hvis falsk", - "LOGIC_TERNARY_TOOLTIP": "Kontrollér betingelsen i 'test'. Hvis betingelsen er sand, returnér \"hvis sand\" værdien; ellers returnér \"hvis falsk\" værdien.", - "MATH_NUMBER_HELPURL": "https://da.wikipedia.org/wiki/Tal", - "MATH_NUMBER_TOOLTIP": "Et tal.", - "MATH_DIVISION_SYMBOL": ":", - "MATH_ARITHMETIC_HELPURL": "https://da.wikipedia.org/wiki/Aritmetik", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Returnere summen af de to tal.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Returnere forskellen mellem de to tal.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Returnere produktet af de to tal.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Returnere kvotienten af de to tal.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Returnere det første tal opløftet til potensen af det andet tal.", - "MATH_SINGLE_HELPURL": "https://da.wikipedia.org/wiki/Kvadratrod", - "MATH_SINGLE_OP_ROOT": "kvadratrod", - "MATH_SINGLE_TOOLTIP_ROOT": "Returnere kvadratroden af et tal.", - "MATH_SINGLE_OP_ABSOLUTE": "absolut", - "MATH_SINGLE_TOOLTIP_ABS": "Returnere den absolutte værdi af et tal.", - "MATH_SINGLE_TOOLTIP_NEG": "Returnere negationen af et tal.", - "MATH_SINGLE_TOOLTIP_LN": "Returnere den naturlige logaritme af et tal.", - "MATH_SINGLE_TOOLTIP_LOG10": "Returnere 10-talslogaritmen af et tal.", - "MATH_SINGLE_TOOLTIP_EXP": "Returnere e til potensen af et tal.", - "MATH_SINGLE_TOOLTIP_POW10": "Returnere 10 til potensen af et tal.", - "MATH_TRIG_HELPURL": "https://da.wikipedia.org/wiki/Trigonometrisk_funktion", - "MATH_TRIG_TOOLTIP_SIN": "Returnere sinus af en vinkel (i grader).", - "MATH_TRIG_TOOLTIP_COS": "Returnere cosinus af en vinkel (i grader).", - "MATH_TRIG_TOOLTIP_TAN": "Returnere tangens af en vinkel (i grader).", - "MATH_TRIG_TOOLTIP_ASIN": "Returnere arcus sinus af et tal.", - "MATH_TRIG_TOOLTIP_ACOS": "Returnere arcus cosinus af et tal.", - "MATH_TRIG_TOOLTIP_ATAN": "Returnere arcus tangens af et tal.", - "MATH_CONSTANT_HELPURL": "https://da.wikipedia.org/wiki/Matematisk_konstant", - "MATH_CONSTANT_TOOLTIP": "Returnere en af de ofte brugte konstanter: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (uendeligt).", - "MATH_IS_EVEN": "er lige", - "MATH_IS_ODD": "er ulige", - "MATH_IS_PRIME": "er et primtal", - "MATH_IS_WHOLE": "er helt", - "MATH_IS_POSITIVE": "er positivt", - "MATH_IS_NEGATIVE": "er negativt", - "MATH_IS_DIVISIBLE_BY": "er deleligt med", - "MATH_IS_TOOLTIP": "Kontrollere, om et tal er lige, ulige, primtal, helt, positivt, negativt, eller om det er deleligt med bestemt tal. Returnere sandt eller falskt.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "skift %1 med %2", - "MATH_CHANGE_TOOLTIP": "Læg et tal til variablen '%1'.", - "MATH_ROUND_HELPURL": "https://da.wikipedia.org/wiki/Afrunding", - "MATH_ROUND_TOOLTIP": "Runde et tal op eller ned.", - "MATH_ROUND_OPERATOR_ROUND": "afrund", - "MATH_ROUND_OPERATOR_ROUNDUP": "rund op", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "rund ned", - "MATH_ONLIST_OPERATOR_SUM": "summen af listen", - "MATH_ONLIST_TOOLTIP_SUM": "Returner summen af alle tal i listen.", - "MATH_ONLIST_OPERATOR_MIN": "mindste tal i listen", - "MATH_ONLIST_TOOLTIP_MIN": "Returner det mindste tal i listen.", - "MATH_ONLIST_OPERATOR_MAX": "største tal i listen", - "MATH_ONLIST_TOOLTIP_MAX": "Returner det største tal i listen.", - "MATH_ONLIST_OPERATOR_AVERAGE": "gennemsnit af listen", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Returner gennemsnittet (middelværdien) af de numeriske værdier i listen.", - "MATH_ONLIST_OPERATOR_MEDIAN": "listens median", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Returner listens median.", - "MATH_ONLIST_OPERATOR_MODE": "listens typetal", - "MATH_ONLIST_TOOLTIP_MODE": "Returner en liste over de mest almindelige elementer på listen.", - "MATH_ONLIST_OPERATOR_STD_DEV": "standardafvigelsen for listen", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Returner standardafvigelsen for listen.", - "MATH_ONLIST_OPERATOR_RANDOM": "tilfældigt element fra listen", - "MATH_ONLIST_TOOLTIP_RANDOM": "Returner et tilfældigt element fra listen.", - "MATH_MODULO_HELPURL": "https://da.wikipedia.org/wiki/Modulo", - "MATH_MODULO_TITLE": "resten af %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Returner resten fra at dividere de to tal.", - "MATH_CONSTRAIN_TITLE": "begræns %1 til mellem %2 og %3", - "MATH_CONSTRAIN_TOOLTIP": "Begræns et tal til at være mellem de angivne grænser (inklusiv).", - "MATH_RANDOM_INT_HELPURL": "https://da.wikipedia.org/wiki/Tilfældighedsgenerator", - "MATH_RANDOM_INT_TITLE": "tilfældigt heltal mellem %1 og %2", - "MATH_RANDOM_INT_TOOLTIP": "Returner et tilfældigt heltal mellem de to angivne grænser (inklusiv).", - "MATH_RANDOM_FLOAT_HELPURL": "https://da.wikipedia.org/wiki/Tilfældighedsgenerator", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "tilfældigt decimaltal (mellem 0 og 1)", - "MATH_RANDOM_FLOAT_TOOLTIP": "Returner et tilfældigt decimaltal mellem 0,0 (inklusiv) og 1,0 (eksklusiv).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 af X:%1 Y:%2", - "TEXT_TEXT_HELPURL": "https://da.wikipedia.org/wiki/Tekststreng", - "TEXT_TEXT_TOOLTIP": "En bogstav, et ord eller en linje med tekst.", - "TEXT_JOIN_TITLE_CREATEWITH": "lav en tekst med", - "TEXT_JOIN_TOOLTIP": "Lav et stykke tekst ved at sætte et antal elementer sammen.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "sammenføj", - "TEXT_CREATE_JOIN_TOOLTIP": "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne tekstblok.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Føj et element til teksten.", - "TEXT_APPEND_TITLE": "til %1 tilføj tekst %2", - "TEXT_APPEND_TOOLTIP": "Tilføj noget tekst til variablen '%1'.", - "TEXT_LENGTH_TITLE": "længden af %1", - "TEXT_LENGTH_TOOLTIP": "Returnerer antallet af bogstaver (herunder mellemrum) i den angivne tekst.", - "TEXT_ISEMPTY_TITLE": "%1 er tom", - "TEXT_ISEMPTY_TOOLTIP": "Returnerer sand, hvis den angivne tekst er tom.", - "TEXT_INDEXOF_TOOLTIP": "Returnerer indeks for første/sidste forekomst af første tekst i den anden tekst. Returnerer %1, hvis teksten ikke kan findes.", - "TEXT_INDEXOF_TITLE": "i tekst %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "find første forekomst af teksten", - "TEXT_INDEXOF_OPERATOR_LAST": "find sidste forekomst af teksten", - "TEXT_CHARAT_TITLE": "i tekst %1 %2", - "TEXT_CHARAT_FROM_START": "hent bogstav #", - "TEXT_CHARAT_FROM_END": "hent bogstav # fra slutningen", - "TEXT_CHARAT_FIRST": "hent første bogstav", - "TEXT_CHARAT_LAST": "hent sidste bogstav", - "TEXT_CHARAT_RANDOM": "hent tilfældigt bogstav", - "TEXT_CHARAT_TOOLTIP": "Returnerer bogstavet på den angivne placering.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Returnerer den angivne del af teksten.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "i teksten", - "TEXT_GET_SUBSTRING_START_FROM_START": "hent delstreng fra bogstav #", - "TEXT_GET_SUBSTRING_START_FROM_END": "hent delstreng fra bogstav # fra slutningen", - "TEXT_GET_SUBSTRING_START_FIRST": "hent delstreng fra første bogstav", - "TEXT_GET_SUBSTRING_END_FROM_START": "til bogstav #", - "TEXT_GET_SUBSTRING_END_FROM_END": "til bogstav # fra slutningen", - "TEXT_GET_SUBSTRING_END_LAST": "til sidste bogstav", - "TEXT_CHANGECASE_TOOLTIP": "Returner en kopi af teksten hvor bogstaverne enten er udelukkende store eller små, eller hvor første bogstav i hvert ord er stort.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "til STORE BOGSTAVER", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "til små bogstaver", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "til Stort Begyndelsesbogstav", - "TEXT_TRIM_TOOLTIP": "Returner en kopi af teksten med mellemrum fjernet fra den ene eller begge sider.", - "TEXT_TRIM_OPERATOR_BOTH": "fjern mellemrum fra begge sider af", - "TEXT_TRIM_OPERATOR_LEFT": "fjern mellemrum fra venstre side af", - "TEXT_TRIM_OPERATOR_RIGHT": "fjern mellemrum fra højre side af", - "TEXT_PRINT_TITLE": "skriv %1", - "TEXT_PRINT_TOOLTIP": "Skriv den angivne tekst, tal eller anden værdi.", - "TEXT_PROMPT_TYPE_TEXT": "spørg efter tekst med meddelelsen", - "TEXT_PROMPT_TYPE_NUMBER": "spørg efter et tal med meddelelsen", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Spørg brugeren efter et tal", - "TEXT_PROMPT_TOOLTIP_TEXT": "Spørg brugeren efter en tekst", - "TEXT_COUNT_MESSAGE0": "tæl %1 i %2", - "TEXT_COUNT_TOOLTIP": "Tæl hvor mange gange noget tekst fremgår i en anden tekst.", - "TEXT_REPLACE_MESSAGE0": "erstat %1 med %2 i %3", - "TEXT_REPLACE_TOOLTIP": "Erstat alle forekomster af noget tekst i en anden tekst.", - "TEXT_REVERSE_MESSAGE0": "vend %1 om", - "TEXT_REVERSE_TOOLTIP": "Vender rækkefølgen om for tegnene i teksten.", - "LISTS_CREATE_EMPTY_TITLE": "opret en tom liste", - "LISTS_CREATE_EMPTY_TOOLTIP": "Returnerer en liste af længde 0, som ikke indeholder nogen data", - "LISTS_CREATE_WITH_TOOLTIP": "Opret en liste med et vilkårligt antal elementer.", - "LISTS_CREATE_WITH_INPUT_WITH": "opret liste med", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne blok.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Føj et element til listen.", - "LISTS_REPEAT_TOOLTIP": "Opretter en liste bestående af den givne værdi gentaget et bestemt antal gange.", - "LISTS_REPEAT_TITLE": "opret liste med elementet %1 gentaget %2 gange", - "LISTS_LENGTH_TITLE": "længden af %1", - "LISTS_LENGTH_TOOLTIP": "Returnerer længden af en liste.", - "LISTS_ISEMPTY_TITLE": "%1 er tom", - "LISTS_ISEMPTY_TOOLTIP": "Returnerer sand, hvis listen er tom.", - "LISTS_INLIST": "i listen", - "LISTS_INDEX_OF_FIRST": "find første forekomst af elementet", - "LISTS_INDEX_OF_LAST": "find sidste forekomst af elementet", - "LISTS_INDEX_OF_TOOLTIP": "Returnerer indeks for første/sidste forekomst af elementet i listen. Returnerer %1, hvis elementet ikke kan findes.", - "LISTS_GET_INDEX_GET": "hent", - "LISTS_GET_INDEX_GET_REMOVE": "hent og fjern", - "LISTS_GET_INDEX_REMOVE": "fjern", - "LISTS_GET_INDEX_FROM_END": "# fra slutningen", - "LISTS_GET_INDEX_FIRST": "første", - "LISTS_GET_INDEX_LAST": "sidste", - "LISTS_GET_INDEX_RANDOM": "tilfældig", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 er det første element.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 er det sidste element.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returnerer elementet på den angivne position på en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returnerer det første element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returnerer den sidste element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returnerer et tilfældigt element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fjerner og returnerer elementet på den angivne position på en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fjerner og returnerer det første element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fjerner og returnerer det sidste element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fjerner og returnerer et tilfældigt element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fjerner elementet på den angivne position på en liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fjerner det første element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fjerner sidste element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Fjerner et tilfældigt element i en liste.", - "LISTS_SET_INDEX_SET": "sæt", - "LISTS_SET_INDEX_INSERT": "indsæt ved", - "LISTS_SET_INDEX_INPUT_TO": "som", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Sætter elementet på den angivne position i en liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Sætter det første element i en liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Sætter det sidste element i en liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Sætter et tilfældigt element i en liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Indsætter elementet på den angivne position i en liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Indsætter elementet i starten af en liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Føj elementet til slutningen af en liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Indsætter elementet tilfældigt i en liste.", - "LISTS_GET_SUBLIST_START_FROM_START": "hent underliste fra #", - "LISTS_GET_SUBLIST_START_FROM_END": "hent underliste fra # fra slutningen", - "LISTS_GET_SUBLIST_START_FIRST": "hent underliste fra første", - "LISTS_GET_SUBLIST_END_FROM_START": "til #", - "LISTS_GET_SUBLIST_END_FROM_END": "til # fra slutningen", - "LISTS_GET_SUBLIST_END_LAST": "til sidste", - "LISTS_GET_SUBLIST_TOOLTIP": "Opretter en kopi af den angivne del af en liste.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sorter %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sorter en kopi af en liste.", - "LISTS_SORT_ORDER_ASCENDING": "stigende", - "LISTS_SORT_ORDER_DESCENDING": "faldende", - "LISTS_SORT_TYPE_NUMERIC": "nummerorden", - "LISTS_SORT_TYPE_TEXT": "alfabetisk", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetisk, ignorer store/små bogstaver", - "LISTS_SPLIT_LIST_FROM_TEXT": "lav tekst til liste", - "LISTS_SPLIT_TEXT_FROM_LIST": "lav liste til tekst", - "LISTS_SPLIT_WITH_DELIMITER": "med skilletegn", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Bryd tekst op i en liste af tekster med brud ved hvert skilletegn.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Saml en liste af tekster til én tekst, der er adskilt af et skilletegn.", - "LISTS_REVERSE_MESSAGE0": "vend %1 om", - "LISTS_REVERSE_TOOLTIP": "Vend en kopi af en liste om.", - "VARIABLES_GET_TOOLTIP": "Returnerer værdien af denne variabel.", - "VARIABLES_GET_CREATE_SET": "Opret 'sæt %1'", - "VARIABLES_SET": "sæt %1 til %2", - "VARIABLES_SET_TOOLTIP": "Sætter denne variabel til at være lig med input.", - "VARIABLES_SET_CREATE_GET": "Opret 'hent %1'", - "PROCEDURES_DEFNORETURN_TITLE": "for at", - "PROCEDURES_DEFNORETURN_PROCEDURE": "gøre noget", - "PROCEDURES_BEFORE_PARAMS": "med:", - "PROCEDURES_CALL_BEFORE_PARAMS": "med:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Opretter en funktion der ikke har nogen returværdi.", - "PROCEDURES_DEFNORETURN_COMMENT": "Beskriv denne funktion...", - "PROCEDURES_DEFRETURN_RETURN": "returnér", - "PROCEDURES_DEFRETURN_TOOLTIP": "Opretter en funktion der har en returværdi.", - "PROCEDURES_ALLOW_STATEMENTS": "tillad erklæringer", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Advarsel: Denne funktion har dublerede parametre.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Kør den brugerdefinerede funktion '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Kør den brugerdefinerede funktion '%1' og brug dens returværdi.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "parametre", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Tilføje, fjerne eller ændre rækkefølgen af parametre til denne funktion.", - "PROCEDURES_MUTATORARG_TITLE": "parameternavn:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Tilføj en parameter til funktionen.", - "PROCEDURES_HIGHLIGHT_DEF": "Markér funktionsdefinitionen", - "PROCEDURES_CREATE_DO": "Opret '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Hvis en værdi er sand, så returnér en anden værdi.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Advarsel: Denne blok kan kun anvendes inden for en funktionsdefinition.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Sig noget ...", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Afbryd" -} +{ + "@metadata": { + "authors": [ + "Christian List", + "Joedalton", + "JonNPoulsen", + "MGA73", + "Mads Haupt", + "RickiRunge", + "Saederup92", + "Tjernobyl" + ] + }, + "VARIABLES_DEFAULT_NAME": "element", + "UNNAMED_KEY": "unavngivet", + "TODAY": "I dag", + "DUPLICATE_BLOCK": "Duplikér", + "ADD_COMMENT": "Tilføj Kommentar", + "REMOVE_COMMENT": "Fjern Kommentar", + "DUPLICATE_COMMENT": "Duplikér Kommentar", + "EXTERNAL_INPUTS": "Udvendige inputs", + "INLINE_INPUTS": "Indlejrede inputs", + "DELETE_BLOCK": "Slet blok", + "DELETE_X_BLOCKS": "Slet %1 blokke", + "DELETE_ALL_BLOCKS": "Slet alle %1 blokke?", + "CLEAN_UP": "Ryd op i blokke", + "COLLAPSE_BLOCK": "Fold blokken sammen", + "COLLAPSE_ALL": "Fold blokkene sammen", + "EXPAND_BLOCK": "Fold blokken ud", + "EXPAND_ALL": "Fold blokkene ud", + "DISABLE_BLOCK": "Deaktivér blok", + "ENABLE_BLOCK": "Aktivér blok", + "HELP": "Hjælp", + "UNDO": "Fortryd", + "REDO": "Omgør", + "CHANGE_VALUE_TITLE": "Skift værdi:", + "RENAME_VARIABLE": "Omdøb variabel...", + "RENAME_VARIABLE_TITLE": "Omdøb alle '%1' variabler til:", + "NEW_VARIABLE": "Opret variabel ...", + "NEW_STRING_VARIABLE": "Opret strengvariabel ...", + "NEW_NUMBER_VARIABLE": "Opret nummervariabel ...", + "NEW_COLOUR_VARIABLE": "Opret farvevariabel ...", + "NEW_VARIABLE_TYPE_TITLE": "Ny variabeltype:", + "NEW_VARIABLE_TITLE": "Navn til den nye variabel:", + "VARIABLE_ALREADY_EXISTS": "En variabel med navnet »%1« findes allerede.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "En variabel med navnet »%1« findes allerede for en anden type: »%2«.", + "DELETE_VARIABLE_CONFIRMATION": "Slet %1's brug af variablen »%2«?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Kan ikke slette variablen »%1« da den er en del af definitionen af funktionen »%2«", + "DELETE_VARIABLE": "Slet variablen »%1«", + "COLOUR_PICKER_HELPURL": "https://da.wikipedia.org/wiki/Farve", + "COLOUR_PICKER_TOOLTIP": "Vælg en farve fra paletten.", + "COLOUR_RANDOM_TITLE": "tilfældig farve", + "COLOUR_RANDOM_TOOLTIP": "Vælg en tilfældig farve.", + "COLOUR_RGB_TITLE": "farve med", + "COLOUR_RGB_RED": "rød", + "COLOUR_RGB_GREEN": "grøn", + "COLOUR_RGB_BLUE": "blå", + "COLOUR_RGB_TOOLTIP": "Lav en farve med den angivne mængde af rød, grøn og blå. Alle værdier skal være mellem 0 og 100.", + "COLOUR_BLEND_TITLE": "bland", + "COLOUR_BLEND_COLOUR1": "farve 1", + "COLOUR_BLEND_COLOUR2": "farve 2", + "COLOUR_BLEND_RATIO": "i forholdet", + "COLOUR_BLEND_TOOLTIP": "Blander to farver sammen i et bestemt forhold (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://da.wikipedia.org/wiki/For-l%C3%B8kke", + "CONTROLS_REPEAT_TITLE": "gentag %1 gange", + "CONTROLS_REPEAT_INPUT_DO": "udfør", + "CONTROLS_REPEAT_TOOLTIP": "Udfør nogle kommandoer flere gange.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "gentag sålænge", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "gentag indtil", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Udfør nogle kommandoer, sålænge en værdi er sand.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Udfør nogle kommandoer, sålænge en værdi er falsk.", + "CONTROLS_FOR_TOOLTIP": "Få variablen \"%1\" til at have værdierne fra startværdien til slutværdien, mens der tælles med det angivne interval, og udfør de angivne blokke.", + "CONTROLS_FOR_TITLE": "tæl med %1 fra %2 til %3 med %4", + "CONTROLS_FOREACH_TITLE": "for hvert element %1 i listen %2", + "CONTROLS_FOREACH_TOOLTIP": "For hvert element i en liste, sæt variablen '%1' til elementet, og udfør derefter nogle kommandoer.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "bryd ud af løkken", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fortsæt med den næste gentagelse i løkken", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Bryd ud af den omgivende løkke.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Spring resten af denne løkke over, og fortsæt med den næste gentagelse.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Advarsel: Denne blok kan kun bruges i en løkke.", + "CONTROLS_IF_TOOLTIP_1": "Hvis en værdi er sand, så udfør nogle kommandoer.", + "CONTROLS_IF_TOOLTIP_2": "Hvis en værdi er sand, så udfør den første blok af kommandoer. Ellers udfør den anden blok af kommandoer.", + "CONTROLS_IF_TOOLTIP_3": "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer.", + "CONTROLS_IF_TOOLTIP_4": "Hvis den første værdi er sand, så udfør den første blok af kommandoer. Ellers, hvis den anden værdi er sand, så udfør den anden blok af kommandoer. Hvis ingen af værdierne er sande, så udfør den sidste blok af kommandoer.", + "CONTROLS_IF_MSG_IF": "hvis", + "CONTROLS_IF_MSG_ELSEIF": "ellers hvis", + "CONTROLS_IF_MSG_ELSE": "ellers", + "CONTROLS_IF_IF_TOOLTIP": "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne \"hvis\" blok.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Tilføj en betingelse til denne \"hvis\" blok.", + "CONTROLS_IF_ELSE_TOOLTIP": "Tilføj en sidste fang-alt betingelse, til denne \"hvis\" blok.", + "LOGIC_COMPARE_HELPURL": "https://da.wikipedia.org/wiki/Ulighed_(matematik)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Returnere sand, hvis begge inputs er lig med hinanden.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Returnere sand, hvis begge inputs ikke er lig med hinanden.", + "LOGIC_COMPARE_TOOLTIP_LT": "Returnere sand, hvis det første input er mindre end det andet input.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Returnere sand, hvis det første input er mindre end eller lig med det andet input.", + "LOGIC_COMPARE_TOOLTIP_GT": "Returnere sand, hvis det første input er større end det andet input.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Returnere sand, hvis det første input er større end eller lig med det andet input.", + "LOGIC_OPERATION_TOOLTIP_AND": "Returnere sand, hvis begge inputs er sande.", + "LOGIC_OPERATION_AND": "og", + "LOGIC_OPERATION_TOOLTIP_OR": "Returnere sand, hvis mindst et af inputtene er sande.", + "LOGIC_OPERATION_OR": "eller", + "LOGIC_NEGATE_TITLE": "ikke %1", + "LOGIC_NEGATE_TOOLTIP": "Returnerer sand, hvis input er falsk. Returnerer falsk, hvis input er sandt.", + "LOGIC_BOOLEAN_TRUE": "sand", + "LOGIC_BOOLEAN_FALSE": "falsk", + "LOGIC_BOOLEAN_TOOLTIP": "Returnerer enten sand eller falsk.", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Returnerer null.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "hvis sand", + "LOGIC_TERNARY_IF_FALSE": "hvis falsk", + "LOGIC_TERNARY_TOOLTIP": "Kontrollér betingelsen i 'test'. Hvis betingelsen er sand, returnér \"hvis sand\" værdien; ellers returnér \"hvis falsk\" værdien.", + "MATH_NUMBER_HELPURL": "https://da.wikipedia.org/wiki/Tal", + "MATH_NUMBER_TOOLTIP": "Et tal.", + "MATH_DIVISION_SYMBOL": ":", + "MATH_ARITHMETIC_HELPURL": "https://da.wikipedia.org/wiki/Aritmetik", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Returnere summen af de to tal.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Returnere forskellen mellem de to tal.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Returnere produktet af de to tal.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Returnere kvotienten af de to tal.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Returnere det første tal opløftet til potensen af det andet tal.", + "MATH_SINGLE_HELPURL": "https://da.wikipedia.org/wiki/Kvadratrod", + "MATH_SINGLE_OP_ROOT": "kvadratrod", + "MATH_SINGLE_TOOLTIP_ROOT": "Returnere kvadratroden af et tal.", + "MATH_SINGLE_OP_ABSOLUTE": "absolut", + "MATH_SINGLE_TOOLTIP_ABS": "Returnere den absolutte værdi af et tal.", + "MATH_SINGLE_TOOLTIP_NEG": "Returnere negationen af et tal.", + "MATH_SINGLE_TOOLTIP_LN": "Returnere den naturlige logaritme af et tal.", + "MATH_SINGLE_TOOLTIP_LOG10": "Returnere 10-talslogaritmen af et tal.", + "MATH_SINGLE_TOOLTIP_EXP": "Returnere e til potensen af et tal.", + "MATH_SINGLE_TOOLTIP_POW10": "Returnere 10 til potensen af et tal.", + "MATH_TRIG_HELPURL": "https://da.wikipedia.org/wiki/Trigonometrisk_funktion", + "MATH_TRIG_TOOLTIP_SIN": "Returnere sinus af en vinkel (i grader).", + "MATH_TRIG_TOOLTIP_COS": "Returnere cosinus af en vinkel (i grader).", + "MATH_TRIG_TOOLTIP_TAN": "Returnere tangens af en vinkel (i grader).", + "MATH_TRIG_TOOLTIP_ASIN": "Returnere arcus sinus af et tal.", + "MATH_TRIG_TOOLTIP_ACOS": "Returnere arcus cosinus af et tal.", + "MATH_TRIG_TOOLTIP_ATAN": "Returnere arcus tangens af et tal.", + "MATH_CONSTANT_HELPURL": "https://da.wikipedia.org/wiki/Matematisk_konstant", + "MATH_CONSTANT_TOOLTIP": "Returnere en af de ofte brugte konstanter: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (uendeligt).", + "MATH_IS_EVEN": "er lige", + "MATH_IS_ODD": "er ulige", + "MATH_IS_PRIME": "er et primtal", + "MATH_IS_WHOLE": "er helt", + "MATH_IS_POSITIVE": "er positivt", + "MATH_IS_NEGATIVE": "er negativt", + "MATH_IS_DIVISIBLE_BY": "er deleligt med", + "MATH_IS_TOOLTIP": "Kontrollere, om et tal er lige, ulige, primtal, helt, positivt, negativt, eller om det er deleligt med bestemt tal. Returnere sandt eller falskt.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "skift %1 med %2", + "MATH_CHANGE_TOOLTIP": "Læg et tal til variablen '%1'.", + "MATH_ROUND_HELPURL": "https://da.wikipedia.org/wiki/Afrunding", + "MATH_ROUND_TOOLTIP": "Runde et tal op eller ned.", + "MATH_ROUND_OPERATOR_ROUND": "afrund", + "MATH_ROUND_OPERATOR_ROUNDUP": "rund op", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "rund ned", + "MATH_ONLIST_OPERATOR_SUM": "summen af listen", + "MATH_ONLIST_TOOLTIP_SUM": "Returner summen af alle tal i listen.", + "MATH_ONLIST_OPERATOR_MIN": "mindste tal i listen", + "MATH_ONLIST_TOOLTIP_MIN": "Returner det mindste tal i listen.", + "MATH_ONLIST_OPERATOR_MAX": "største tal i listen", + "MATH_ONLIST_TOOLTIP_MAX": "Returner det største tal i listen.", + "MATH_ONLIST_OPERATOR_AVERAGE": "gennemsnit af listen", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Returner gennemsnittet (middelværdien) af de numeriske værdier i listen.", + "MATH_ONLIST_OPERATOR_MEDIAN": "listens median", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Returner listens median.", + "MATH_ONLIST_OPERATOR_MODE": "listens typetal", + "MATH_ONLIST_TOOLTIP_MODE": "Returner en liste over de mest almindelige elementer på listen.", + "MATH_ONLIST_OPERATOR_STD_DEV": "standardafvigelsen for listen", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Returner standardafvigelsen for listen.", + "MATH_ONLIST_OPERATOR_RANDOM": "tilfældigt element fra listen", + "MATH_ONLIST_TOOLTIP_RANDOM": "Returner et tilfældigt element fra listen.", + "MATH_MODULO_HELPURL": "https://da.wikipedia.org/wiki/Modulo", + "MATH_MODULO_TITLE": "resten af %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Returner resten fra at dividere de to tal.", + "MATH_CONSTRAIN_TITLE": "begræns %1 til mellem %2 og %3", + "MATH_CONSTRAIN_TOOLTIP": "Begræns et tal til at være mellem de angivne grænser (inklusiv).", + "MATH_RANDOM_INT_HELPURL": "https://da.wikipedia.org/wiki/Tilfældighedsgenerator", + "MATH_RANDOM_INT_TITLE": "tilfældigt heltal mellem %1 og %2", + "MATH_RANDOM_INT_TOOLTIP": "Returner et tilfældigt heltal mellem de to angivne grænser (inklusiv).", + "MATH_RANDOM_FLOAT_HELPURL": "https://da.wikipedia.org/wiki/Tilfældighedsgenerator", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "tilfældigt decimaltal (mellem 0 og 1)", + "MATH_RANDOM_FLOAT_TOOLTIP": "Returner et tilfældigt decimaltal mellem 0,0 (inklusiv) og 1,0 (eksklusiv).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 af X:%1 Y:%2", + "TEXT_TEXT_HELPURL": "https://da.wikipedia.org/wiki/Tekststreng", + "TEXT_TEXT_TOOLTIP": "En bogstav, et ord eller en linje med tekst.", + "TEXT_JOIN_TITLE_CREATEWITH": "lav en tekst med", + "TEXT_JOIN_TOOLTIP": "Lav et stykke tekst ved at sætte et antal elementer sammen.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "sammenføj", + "TEXT_CREATE_JOIN_TOOLTIP": "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne tekstblok.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Føj et element til teksten.", + "TEXT_APPEND_TITLE": "til %1 tilføj tekst %2", + "TEXT_APPEND_TOOLTIP": "Tilføj noget tekst til variablen '%1'.", + "TEXT_LENGTH_TITLE": "længden af %1", + "TEXT_LENGTH_TOOLTIP": "Returnerer antallet af bogstaver (herunder mellemrum) i den angivne tekst.", + "TEXT_ISEMPTY_TITLE": "%1 er tom", + "TEXT_ISEMPTY_TOOLTIP": "Returnerer sand, hvis den angivne tekst er tom.", + "TEXT_INDEXOF_TOOLTIP": "Returnerer indeks for første/sidste forekomst af første tekst i den anden tekst. Returnerer %1, hvis teksten ikke kan findes.", + "TEXT_INDEXOF_TITLE": "i tekst %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "find første forekomst af teksten", + "TEXT_INDEXOF_OPERATOR_LAST": "find sidste forekomst af teksten", + "TEXT_CHARAT_TITLE": "i tekst %1 %2", + "TEXT_CHARAT_FROM_START": "hent bogstav #", + "TEXT_CHARAT_FROM_END": "hent bogstav # fra slutningen", + "TEXT_CHARAT_FIRST": "hent første bogstav", + "TEXT_CHARAT_LAST": "hent sidste bogstav", + "TEXT_CHARAT_RANDOM": "hent tilfældigt bogstav", + "TEXT_CHARAT_TOOLTIP": "Returnerer bogstavet på den angivne placering.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Returnerer den angivne del af teksten.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "i teksten", + "TEXT_GET_SUBSTRING_START_FROM_START": "hent delstreng fra bogstav #", + "TEXT_GET_SUBSTRING_START_FROM_END": "hent delstreng fra bogstav # fra slutningen", + "TEXT_GET_SUBSTRING_START_FIRST": "hent delstreng fra første bogstav", + "TEXT_GET_SUBSTRING_END_FROM_START": "til bogstav #", + "TEXT_GET_SUBSTRING_END_FROM_END": "til bogstav # fra slutningen", + "TEXT_GET_SUBSTRING_END_LAST": "til sidste bogstav", + "TEXT_CHANGECASE_TOOLTIP": "Returner en kopi af teksten hvor bogstaverne enten er udelukkende store eller små, eller hvor første bogstav i hvert ord er stort.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "til STORE BOGSTAVER", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "til små bogstaver", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "til Stort Begyndelsesbogstav", + "TEXT_TRIM_TOOLTIP": "Returner en kopi af teksten med mellemrum fjernet fra den ene eller begge sider.", + "TEXT_TRIM_OPERATOR_BOTH": "fjern mellemrum fra begge sider af", + "TEXT_TRIM_OPERATOR_LEFT": "fjern mellemrum fra venstre side af", + "TEXT_TRIM_OPERATOR_RIGHT": "fjern mellemrum fra højre side af", + "TEXT_PRINT_TITLE": "skriv %1", + "TEXT_PRINT_TOOLTIP": "Skriv den angivne tekst, tal eller anden værdi.", + "TEXT_PROMPT_TYPE_TEXT": "spørg efter tekst med meddelelsen", + "TEXT_PROMPT_TYPE_NUMBER": "spørg efter et tal med meddelelsen", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Spørg brugeren efter et tal", + "TEXT_PROMPT_TOOLTIP_TEXT": "Spørg brugeren efter en tekst", + "TEXT_COUNT_MESSAGE0": "tæl %1 i %2", + "TEXT_COUNT_TOOLTIP": "Tæl hvor mange gange noget tekst fremgår i en anden tekst.", + "TEXT_REPLACE_MESSAGE0": "erstat %1 med %2 i %3", + "TEXT_REPLACE_TOOLTIP": "Erstat alle forekomster af noget tekst i en anden tekst.", + "TEXT_REVERSE_MESSAGE0": "vend %1 om", + "TEXT_REVERSE_TOOLTIP": "Vender rækkefølgen om for tegnene i teksten.", + "LISTS_CREATE_EMPTY_TITLE": "opret en tom liste", + "LISTS_CREATE_EMPTY_TOOLTIP": "Returnerer en liste af længde 0, som ikke indeholder nogen data", + "LISTS_CREATE_WITH_TOOLTIP": "Opret en liste med et vilkårligt antal elementer.", + "LISTS_CREATE_WITH_INPUT_WITH": "opret liste med", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Tilføj, fjern eller byt om på rækkefølgen af delene for at konfigurere denne blok.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Føj et element til listen.", + "LISTS_REPEAT_TOOLTIP": "Opretter en liste bestående af den givne værdi gentaget et bestemt antal gange.", + "LISTS_REPEAT_TITLE": "opret liste med elementet %1 gentaget %2 gange", + "LISTS_LENGTH_TITLE": "længden af %1", + "LISTS_LENGTH_TOOLTIP": "Returnerer længden af en liste.", + "LISTS_ISEMPTY_TITLE": "%1 er tom", + "LISTS_ISEMPTY_TOOLTIP": "Returnerer sand, hvis listen er tom.", + "LISTS_INLIST": "i listen", + "LISTS_INDEX_OF_FIRST": "find første forekomst af elementet", + "LISTS_INDEX_OF_LAST": "find sidste forekomst af elementet", + "LISTS_INDEX_OF_TOOLTIP": "Returnerer indeks for første/sidste forekomst af elementet i listen. Returnerer %1, hvis elementet ikke kan findes.", + "LISTS_GET_INDEX_GET": "hent", + "LISTS_GET_INDEX_GET_REMOVE": "hent og fjern", + "LISTS_GET_INDEX_REMOVE": "fjern", + "LISTS_GET_INDEX_FROM_END": "# fra slutningen", + "LISTS_GET_INDEX_FIRST": "første", + "LISTS_GET_INDEX_LAST": "sidste", + "LISTS_GET_INDEX_RANDOM": "tilfældig", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 er det første element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 er det sidste element.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returnerer elementet på den angivne position på en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returnerer det første element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returnerer den sidste element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returnerer et tilfældigt element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fjerner og returnerer elementet på den angivne position på en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fjerner og returnerer det første element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fjerner og returnerer det sidste element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fjerner og returnerer et tilfældigt element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fjerner elementet på den angivne position på en liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fjerner det første element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fjerner sidste element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Fjerner et tilfældigt element i en liste.", + "LISTS_SET_INDEX_SET": "sæt", + "LISTS_SET_INDEX_INSERT": "indsæt ved", + "LISTS_SET_INDEX_INPUT_TO": "som", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Sætter elementet på den angivne position i en liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Sætter det første element i en liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Sætter det sidste element i en liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Sætter et tilfældigt element i en liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Indsætter elementet på den angivne position i en liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Indsætter elementet i starten af en liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Føj elementet til slutningen af en liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Indsætter elementet tilfældigt i en liste.", + "LISTS_GET_SUBLIST_START_FROM_START": "hent underliste fra #", + "LISTS_GET_SUBLIST_START_FROM_END": "hent underliste fra # fra slutningen", + "LISTS_GET_SUBLIST_START_FIRST": "hent underliste fra første", + "LISTS_GET_SUBLIST_END_FROM_START": "til #", + "LISTS_GET_SUBLIST_END_FROM_END": "til # fra slutningen", + "LISTS_GET_SUBLIST_END_LAST": "til sidste", + "LISTS_GET_SUBLIST_TOOLTIP": "Opretter en kopi af den angivne del af en liste.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sorter %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sorter en kopi af en liste.", + "LISTS_SORT_ORDER_ASCENDING": "stigende", + "LISTS_SORT_ORDER_DESCENDING": "faldende", + "LISTS_SORT_TYPE_NUMERIC": "nummerorden", + "LISTS_SORT_TYPE_TEXT": "alfabetisk", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetisk, ignorer store/små bogstaver", + "LISTS_SPLIT_LIST_FROM_TEXT": "lav tekst til liste", + "LISTS_SPLIT_TEXT_FROM_LIST": "lav liste til tekst", + "LISTS_SPLIT_WITH_DELIMITER": "med skilletegn", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Bryd tekst op i en liste af tekster med brud ved hvert skilletegn.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Saml en liste af tekster til én tekst, der er adskilt af et skilletegn.", + "LISTS_REVERSE_MESSAGE0": "vend %1 om", + "LISTS_REVERSE_TOOLTIP": "Vend en kopi af en liste om.", + "VARIABLES_GET_TOOLTIP": "Returnerer værdien af denne variabel.", + "VARIABLES_GET_CREATE_SET": "Opret 'sæt %1'", + "VARIABLES_SET": "sæt %1 til %2", + "VARIABLES_SET_TOOLTIP": "Sætter denne variabel til at være lig med input.", + "VARIABLES_SET_CREATE_GET": "Opret 'hent %1'", + "PROCEDURES_DEFNORETURN_TITLE": "for at", + "PROCEDURES_DEFNORETURN_PROCEDURE": "gøre noget", + "PROCEDURES_BEFORE_PARAMS": "med:", + "PROCEDURES_CALL_BEFORE_PARAMS": "med:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Opretter en funktion der ikke har nogen returværdi.", + "PROCEDURES_DEFNORETURN_COMMENT": "Beskriv denne funktion...", + "PROCEDURES_DEFRETURN_RETURN": "returnér", + "PROCEDURES_DEFRETURN_TOOLTIP": "Opretter en funktion der har en returværdi.", + "PROCEDURES_ALLOW_STATEMENTS": "tillad erklæringer", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Advarsel: Denne funktion har dublerede parametre.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Kør den brugerdefinerede funktion '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Kør den brugerdefinerede funktion '%1' og brug dens returværdi.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "parametre", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Tilføje, fjerne eller ændre rækkefølgen af parametre til denne funktion.", + "PROCEDURES_MUTATORARG_TITLE": "parameternavn:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Tilføj en parameter til funktionen.", + "PROCEDURES_HIGHLIGHT_DEF": "Markér funktionsdefinitionen", + "PROCEDURES_CREATE_DO": "Opret '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Hvis en værdi er sand, så returnér en anden værdi.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Advarsel: Denne blok kan kun anvendes inden for en funktionsdefinition.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Sig noget ...", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Afbryd" +} diff --git a/msg/json/de.json b/msg/json/de.json index 73ecf96f305..7a7a8b74d61 100644 --- a/msg/json/de.json +++ b/msg/json/de.json @@ -1,381 +1,381 @@ -{ - "@metadata": { - "authors": [ - "Cvanca", - "Dan-yell", - "M165437", - "Metalhead64", - "MrFraggle", - "Octycs", - "Sillyfreak", - "Sushi", - "THINK", - "Tiin", - "Zgtm", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "Element", - "UNNAMED_KEY": "unbenannt", - "TODAY": "Heute", - "DUPLICATE_BLOCK": "Kopieren", - "ADD_COMMENT": "Kommentar hinzufügen", - "REMOVE_COMMENT": "Kommentar entfernen", - "DUPLICATE_COMMENT": "Kommentar duplizieren", - "EXTERNAL_INPUTS": "externe Eingänge", - "INLINE_INPUTS": "interne Eingänge", - "DELETE_BLOCK": "Baustein löschen", - "DELETE_X_BLOCKS": "%1 Bausteine löschen", - "DELETE_ALL_BLOCKS": "Alle %1 Bausteine löschen?", - "CLEAN_UP": "Bausteine aufräumen", - "COLLAPSE_BLOCK": "Baustein zusammenfalten", - "COLLAPSE_ALL": "Alle Bausteine zusammenfalten", - "EXPAND_BLOCK": "Baustein entfalten", - "EXPAND_ALL": "Alle Bausteine entfalten", - "DISABLE_BLOCK": "Baustein deaktivieren", - "ENABLE_BLOCK": "Baustein aktivieren", - "HELP": "Hilfe", - "UNDO": "Rückgängig", - "REDO": "Wiederholen", - "CHANGE_VALUE_TITLE": "Wert ändern:", - "RENAME_VARIABLE": "Variable umbenennen …", - "RENAME_VARIABLE_TITLE": "Alle \"%1\" Variablen umbenennen in:", - "NEW_VARIABLE": "Variable erstellen …", - "NEW_STRING_VARIABLE": "Zeichenfolgenvariable erstellen …", - "NEW_NUMBER_VARIABLE": "Zahlenvariable erstellen …", - "NEW_COLOUR_VARIABLE": "Farbvariable erstellen …", - "NEW_VARIABLE_TYPE_TITLE": "Neuer Variablentyp:", - "NEW_VARIABLE_TITLE": "Name der neuen Variable:", - "VARIABLE_ALREADY_EXISTS": "Eine Variable namens „%1“ ist bereits vorhanden.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Eine Variable namens „%1“ ist bereits für einen anderen Typ vorhanden: „%2“.", - "DELETE_VARIABLE_CONFIRMATION": "%1 Verwendungen der Variable „%2“ löschen?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Die Variable „%1“ kann nicht gelöscht werden, da sie Teil der Definition der Funktion „%2“ ist.", - "DELETE_VARIABLE": "Die Variable „%1“ löschen", - "COLOUR_PICKER_HELPURL": "https://de.wikipedia.org/wiki/Farbe", - "COLOUR_PICKER_TOOLTIP": "Wählt eine Farbe aus der Palette aus.", - "COLOUR_RANDOM_TITLE": "zufällige Farbe", - "COLOUR_RANDOM_TOOLTIP": "Erzeugt eine Farbe nach dem Zufallsprinzip.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "Farbe aus", - "COLOUR_RGB_RED": "rot", - "COLOUR_RGB_GREEN": "grün", - "COLOUR_RGB_BLUE": "blau", - "COLOUR_RGB_TOOLTIP": "Erzeugt eine Farbe mit selbst definierten Rot-, Grün- und Blauwerten. Alle Werte müssen zwischen 0 und 100 liegen.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "mische", - "COLOUR_BLEND_COLOUR1": "Farbe 1", - "COLOUR_BLEND_COLOUR2": "und Farbe 2", - "COLOUR_BLEND_RATIO": "im Verhältnis", - "COLOUR_BLEND_TOOLTIP": "Vermischt 2 Farben mit konfigurierbarem Farbverhältnis (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://de.wikipedia.org/wiki/For-Schleife", - "CONTROLS_REPEAT_TITLE": "wiederhole %1 mal:", - "CONTROLS_REPEAT_INPUT_DO": "mache", - "CONTROLS_REPEAT_TOOLTIP": "Eine Anweisung mehrfach ausführen.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://de.wikipedia.org/wiki/Schleife_%28Programmierung%29", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "wiederhole solange", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "wiederhole bis", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Führt Anweisungen aus solange die Bedingung wahr ist.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Führt Anweisungen aus solange die Bedingung unwahr ist.", - "CONTROLS_FOR_HELPURL": "https://de.wikipedia.org/wiki/For-Schleife", - "CONTROLS_FOR_TOOLTIP": "Zählt die Variable \"%1\" von einem Startwert bis zu einem Endwert und führt für jeden Wert eine Anweisung aus.", - "CONTROLS_FOR_TITLE": "zähle %1 von %2 bis %3 in Schritten von %4", - "CONTROLS_FOREACH_HELPURL": "https://de.wikipedia.org/wiki/For-Schleife", - "CONTROLS_FOREACH_TITLE": "für jeden Wert %1 aus der Liste %2", - "CONTROLS_FOREACH_TOOLTIP": "Führt eine Anweisung für jeden Wert in der Liste aus und setzt dabei die Variable \"%1\" auf den aktuellen Listenwert.", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://de.wikipedia.org/wiki/Kontrollstruktur", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "die Schleife abbrechen", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "sofort mit nächstem Schleifendurchlauf fortfahren", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Die umgebende Schleife beenden.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Diese Anweisung abbrechen und mit dem nächsten Schleifendurchlauf fortfahren.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Warnung: Dieser Baustein kann nur in einer Schleife verwendet werden.", - "CONTROLS_IF_TOOLTIP_1": "Führt eine Anweisung aus, falls eine Bedingung wahr ist.", - "CONTROLS_IF_TOOLTIP_2": "Führt die erste Anweisung aus, falls eine Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus.", - "CONTROLS_IF_TOOLTIP_3": "Führt die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist.", - "CONTROLS_IF_TOOLTIP_4": "Führe die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist. Führt die dritte Anweisung aus, falls keine der beiden Bedingungen wahr ist", - "CONTROLS_IF_MSG_IF": "falls", - "CONTROLS_IF_MSG_ELSEIF": "sonst falls", - "CONTROLS_IF_MSG_ELSE": "sonst", - "CONTROLS_IF_IF_TOOLTIP": "Hinzufügen, entfernen oder sortieren von Sektionen", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Eine weitere Bedingung hinzufügen.", - "CONTROLS_IF_ELSE_TOOLTIP": "Eine sonst-Bedingung hinzufügen. Führt eine Anweisung aus, falls keine Bedingung zutrifft.", - "LOGIC_COMPARE_HELPURL": "https://de.wikipedia.org/wiki/Vergleich_%28Zahlen%29", - "LOGIC_COMPARE_TOOLTIP_EQ": "Ist wahr, falls beide Werte gleich sind.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Ist wahr, falls beide Werte unterschiedlich sind.", - "LOGIC_COMPARE_TOOLTIP_LT": "Ist wahr, falls der erste Wert kleiner als der zweite Wert ist.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Ist wahr, falls der erste Wert kleiner als oder gleich groß wie der zweite Wert ist.", - "LOGIC_COMPARE_TOOLTIP_GT": "Ist wahr, falls der erste Wert größer als der zweite Wert ist.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Ist wahr, falls der erste Wert größer als oder gleich groß wie der zweite Wert ist.", - "LOGIC_OPERATION_TOOLTIP_AND": "Ist wahr, falls beide Werte wahr sind.", - "LOGIC_OPERATION_AND": "und", - "LOGIC_OPERATION_TOOLTIP_OR": "Ist wahr, falls einer der beiden Werte wahr ist.", - "LOGIC_OPERATION_OR": "oder", - "LOGIC_NEGATE_TITLE": "nicht %1", - "LOGIC_NEGATE_TOOLTIP": "Ist wahr, falls der Eingabewert unwahr ist. Ist unwahr, falls der Eingabewert wahr ist.", - "LOGIC_BOOLEAN_TRUE": "wahr", - "LOGIC_BOOLEAN_FALSE": "falsch", - "LOGIC_BOOLEAN_TOOLTIP": "Ist entweder wahr oder falsch", - "LOGIC_NULL_HELPURL": "https://de.wikipedia.org/wiki/Nullwert", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Ist \"null\".", - "LOGIC_TERNARY_HELPURL": "https://de.wikipedia.org/wiki/%3F:#Auswahloperator", - "LOGIC_TERNARY_CONDITION": "prüfe", - "LOGIC_TERNARY_IF_TRUE": "falls wahr", - "LOGIC_TERNARY_IF_FALSE": "falls falsch", - "LOGIC_TERNARY_TOOLTIP": "Überprüft eine Bedingung \"prüfe\". Falls die Bedingung wahr ist, wird der \"falls wahr\" Wert zurückgegeben, andernfalls der \"falls unwahr\" Wert", - "MATH_NUMBER_HELPURL": "https://de.wikipedia.org/wiki/Zahl", - "MATH_NUMBER_TOOLTIP": "Eine Zahl.", - "MATH_ARITHMETIC_HELPURL": "https://de.wikipedia.org/wiki/Grundrechenart", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Ist die Summe zweier Zahlen.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ist die Differenz zweier Zahlen.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Ist das Produkt zweier Zahlen.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Ist der Quotient zweier Zahlen.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Ist die erste Zahl potenziert mit der zweiten Zahl.", - "MATH_SINGLE_HELPURL": "https://de.wikipedia.org/wiki/Quadratwurzel", - "MATH_SINGLE_OP_ROOT": "Quadratwurzel", - "MATH_SINGLE_TOOLTIP_ROOT": "Ist die Quadratwurzel einer Zahl.", - "MATH_SINGLE_OP_ABSOLUTE": "Betrag", - "MATH_SINGLE_TOOLTIP_ABS": "Ist der Betrag einer Zahl.", - "MATH_SINGLE_TOOLTIP_NEG": "Negiert eine Zahl.", - "MATH_SINGLE_TOOLTIP_LN": "Ist der natürliche Logarithmus einer Zahl.", - "MATH_SINGLE_TOOLTIP_LOG10": "Ist der dekadische Logarithmus einer Zahl.", - "MATH_SINGLE_TOOLTIP_EXP": "Ist Wert der Exponentialfunktion einer Zahl.", - "MATH_SINGLE_TOOLTIP_POW10": "Rechnet 10 hoch eine Zahl.", - "MATH_TRIG_HELPURL": "https://de.wikipedia.org/wiki/Trigonometrie", - "MATH_TRIG_TOOLTIP_SIN": "Ist der Sinus des Winkels (nicht Radiant).", - "MATH_TRIG_TOOLTIP_COS": "Ist der Kosinus des Winkels.", - "MATH_TRIG_TOOLTIP_TAN": "Ist der Tangens des Winkels (nicht Radiant).", - "MATH_TRIG_TOOLTIP_ASIN": "Ist der Arkussinus des Eingabewertes.", - "MATH_TRIG_TOOLTIP_ACOS": "Ist der Arkuskosinus des Eingabewertes.", - "MATH_TRIG_TOOLTIP_ATAN": "Ist der Arkustangens des Eingabewertes.", - "MATH_CONSTANT_HELPURL": "https://de.wikipedia.org/wiki/Mathematische_Konstante", - "MATH_CONSTANT_TOOLTIP": "Mathematische Konstanten wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich).", - "MATH_IS_EVEN": "ist gerade", - "MATH_IS_ODD": "ist ungerade", - "MATH_IS_PRIME": "ist eine Primzahl", - "MATH_IS_WHOLE": "ist eine ganze Zahl", - "MATH_IS_POSITIVE": "ist positiv", - "MATH_IS_NEGATIVE": "ist negativ", - "MATH_IS_DIVISIBLE_BY": "ist teilbar durch", - "MATH_IS_TOOLTIP": "Überprüft ob eine Zahl gerade, ungerade, eine Primzahl, ganzzahlig, positiv, negativ oder durch eine zweite Zahl teilbar ist. Gibt wahr oder falsch zurück.", - "MATH_CHANGE_HELPURL": "https://de.wikipedia.org/wiki/Inkrement_und_Dekrement", - "MATH_CHANGE_TITLE": "erhöhe %1 um %2", - "MATH_CHANGE_TOOLTIP": "Addiert eine Zahl zu \"%1\".", - "MATH_ROUND_HELPURL": "https://de.wikipedia.org/wiki/Runden", - "MATH_ROUND_TOOLTIP": "Eine Zahl auf- oder abrunden.", - "MATH_ROUND_OPERATOR_ROUND": "runde", - "MATH_ROUND_OPERATOR_ROUNDUP": "runde auf", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "runde ab", - "MATH_ONLIST_HELPURL": "http://www.sysplus.ch/einstieg.php?links=menu&seite=4125&grad=Crash&prog=Excel", - "MATH_ONLIST_OPERATOR_SUM": "Summe über die Liste", - "MATH_ONLIST_TOOLTIP_SUM": "Ist die Summe aller Zahlen in einer Liste.", - "MATH_ONLIST_OPERATOR_MIN": "Minimalwert der Liste", - "MATH_ONLIST_TOOLTIP_MIN": "Ist die kleinste Zahl in einer Liste.", - "MATH_ONLIST_OPERATOR_MAX": "Maximalwert der Liste", - "MATH_ONLIST_TOOLTIP_MAX": "Ist die größte Zahl in einer Liste.", - "MATH_ONLIST_OPERATOR_AVERAGE": "Mittelwert der Liste", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Ist der Durchschnittswert aller Zahlen in einer Liste.", - "MATH_ONLIST_OPERATOR_MEDIAN": "Median der Liste", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Ist der Median aller Zahlen in einer Liste.", - "MATH_ONLIST_OPERATOR_MODE": "am häufigsten in der Liste", - "MATH_ONLIST_TOOLTIP_MODE": "Findet die Werte mit dem häufigstem Vorkommen in der Liste.", - "MATH_ONLIST_OPERATOR_STD_DEV": "Standardabweichung der Liste", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Ist die Standardabweichung aller Werte in der Liste.", - "MATH_ONLIST_OPERATOR_RANDOM": "Zufallswert aus der Liste", - "MATH_ONLIST_TOOLTIP_RANDOM": "Gibt einen zufälligen Wert aus der Liste zurück.", - "MATH_MODULO_HELPURL": "https://de.wikipedia.org/wiki/Modulo", - "MATH_MODULO_TITLE": "Rest von %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Der Rest nach einer Division.", - "MATH_CONSTRAIN_TITLE": "begrenze %1 zwischen %2 und %3", - "MATH_CONSTRAIN_TOOLTIP": "Begrenzt eine Zahl auf den Wertebereich zwischen zwei anderen Zahlen (inklusiv).", - "MATH_RANDOM_INT_HELPURL": "https://de.wikipedia.org/wiki/Zufallszahlen", - "MATH_RANDOM_INT_TITLE": "ganzzahlige Zufallszahl zwischen %1 und %2", - "MATH_RANDOM_INT_TOOLTIP": "Erzeugt eine ganzzahlige Zufallszahl zwischen zwei Zahlen (inklusiv).", - "MATH_RANDOM_FLOAT_HELPURL": "https://de.wikipedia.org/wiki/Zufallszahlen", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "Zufallszahl (0.0 - 1.0)", - "MATH_RANDOM_FLOAT_TOOLTIP": "Erzeugt eine Zufallszahl zwischen 0.0 (inklusiv) und 1.0 (exklusiv).", - "MATH_ATAN2_HELPURL": "https://de.wikipedia.org/wiki/Arctan2", - "MATH_ATAN2_TITLE": "atan2 von X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Gibt den Arkustangens des Punktes (X, Y) in Grad von -180 bis 180 zurück.", - "TEXT_TEXT_HELPURL": "https://de.wikipedia.org/wiki/Zeichenkette", - "TEXT_TEXT_TOOLTIP": "Ein Buchstabe, Text oder Satz.", - "TEXT_JOIN_HELPURL": "", - "TEXT_JOIN_TITLE_CREATEWITH": "erstelle Text aus", - "TEXT_JOIN_TOOLTIP": "Erstellt einen Text durch das Verbinden von mehreren Textelementen.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "verbinden", - "TEXT_CREATE_JOIN_TOOLTIP": "Hinzufügen, entfernen und sortieren von Elementen.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ein Element zum Text hinzufügen.", - "TEXT_APPEND_TITLE": "zu %1 Text %2 anhängen", - "TEXT_APPEND_TOOLTIP": "Text an die Variable \"%1\" anhängen.", - "TEXT_LENGTH_TITLE": "Länge von %1", - "TEXT_LENGTH_TOOLTIP": "Die Anzahl von Zeichen in einem Text (inkl. Leerzeichen).", - "TEXT_ISEMPTY_TITLE": "%1 ist leer", - "TEXT_ISEMPTY_TOOLTIP": "Ist wahr, falls der Text keine Zeichen enthält.", - "TEXT_INDEXOF_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", - "TEXT_INDEXOF_TOOLTIP": "Findet das erste / letzte Auftreten eines Suchbegriffs in einem Text. Gibt die Position des Begriffs zurück oder %1 falls der Suchbegriff nicht gefunden wurde.", - "TEXT_INDEXOF_TITLE": "im Text %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "suche erstes Auftreten des Begriffs", - "TEXT_INDEXOF_OPERATOR_LAST": "suche letztes Auftreten des Begriffs", - "TEXT_CHARAT_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", - "TEXT_CHARAT_TITLE": "im Text %1 %2", - "TEXT_CHARAT_FROM_START": "nimm", - "TEXT_CHARAT_FROM_END": "nimm von hinten", - "TEXT_CHARAT_FIRST": "nimm ersten", - "TEXT_CHARAT_LAST": "nimm letzten", - "TEXT_CHARAT_RANDOM": "nimm zufälligen", - "TEXT_CHARAT_TAIL": "Buchstaben", - "TEXT_CHARAT_TOOLTIP": "Extrahiert einen Buchstaben von einer bestimmten Position.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Gibt den angegebenen Textabschnitt zurück.", - "TEXT_GET_SUBSTRING_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "im Text", - "TEXT_GET_SUBSTRING_START_FROM_START": "nimm Teil ab", - "TEXT_GET_SUBSTRING_START_FROM_END": "nimm Teil ab von hinten", - "TEXT_GET_SUBSTRING_START_FIRST": "nimm Teil ab erster", - "TEXT_GET_SUBSTRING_END_FROM_START": "bis", - "TEXT_GET_SUBSTRING_END_FROM_END": "bis von hinten", - "TEXT_GET_SUBSTRING_END_LAST": "bis letzter", - "TEXT_GET_SUBSTRING_TAIL": "Buchstabe", - "TEXT_CHANGECASE_TOOLTIP": "Wandelt Schreibweise von Texten um, in Großbuchstaben, Kleinbuchstaben oder den ersten Buchstaben jedes Wortes groß und die anderen klein.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "wandel um in GROSSBUCHSTABEN", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "wandel um in kleinbuchstaben", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "wandel um in Substantive", - "TEXT_TRIM_TOOLTIP": "Entfernt Leerzeichen vom Anfang und / oder Ende eines Textes.", - "TEXT_TRIM_OPERATOR_BOTH": "entferne Leerzeichen vom Anfang und vom Ende (links und rechts)", - "TEXT_TRIM_OPERATOR_LEFT": "entferne Leerzeichen vom Anfang (links)", - "TEXT_TRIM_OPERATOR_RIGHT": "entferne Leerzeichen vom Ende (rechts)", - "TEXT_PRINT_TITLE": "gib aus %1", - "TEXT_PRINT_TOOLTIP": "Gibt den Text aus.", - "TEXT_PROMPT_TYPE_TEXT": "frage nach Text mit Hinweis", - "TEXT_PROMPT_TYPE_NUMBER": "frage nach Zahl mit Hinweis", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Fragt den Benutzer nach einer Zahl.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Fragt den Benutzer nach einem Text.", - "TEXT_COUNT_MESSAGE0": "zähle %1 in %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Zähle, wie oft ein Text innerhalb eines anderen Textes vorkommt.", - "TEXT_REPLACE_MESSAGE0": "ersetze %1 durch %2 in %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Ersetze alle Vorkommen eines Textes innerhalb eines anderen Textes.", - "TEXT_REVERSE_MESSAGE0": "kehre %1 um", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Kehre die Reihenfolge der Zeichen im Text um.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "erzeuge eine leere Liste", - "LISTS_CREATE_EMPTY_TOOLTIP": "Erzeugt eine leere Liste ohne Inhalt.", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Erzeugt eine Liste aus den angegebenen Elementen.", - "LISTS_CREATE_WITH_INPUT_WITH": "erzeuge Liste mit", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "Liste", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Hinzufügen, entfernen und sortieren von Elementen.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ein Element zur Liste hinzufügen.", - "LISTS_REPEAT_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", - "LISTS_REPEAT_TOOLTIP": "Erzeugt eine Liste mit einer variablen Anzahl von Elementen", - "LISTS_REPEAT_TITLE": "erzeuge Liste mit %2 mal dem Element %1​", - "LISTS_LENGTH_TITLE": "Länge von %1", - "LISTS_LENGTH_TOOLTIP": "Die Anzahl von Elementen in der Liste.", - "LISTS_ISEMPTY_TITLE": "%1 ist leer", - "LISTS_ISEMPTY_TOOLTIP": "Ist wahr, falls die Liste leer ist.", - "LISTS_INLIST": "in der Liste", - "LISTS_INDEX_OF_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", - "LISTS_INDEX_OF_FIRST": "suche erstes Auftreten von", - "LISTS_INDEX_OF_LAST": "suche letztes Auftreten von", - "LISTS_INDEX_OF_TOOLTIP": "Sucht die Position (Index) eines Elementes in der Liste. Gibt %1 zurück, falls kein Element gefunden wurde.", - "LISTS_GET_INDEX_GET": "nimm", - "LISTS_GET_INDEX_GET_REMOVE": "nimm und entferne", - "LISTS_GET_INDEX_REMOVE": "entferne", - "LISTS_GET_INDEX_FROM_START": "das", - "LISTS_GET_INDEX_FROM_END": "von hinten das", - "LISTS_GET_INDEX_FIRST": "Erste", - "LISTS_GET_INDEX_LAST": "Letzte", - "LISTS_GET_INDEX_RANDOM": "Zufällig", - "LISTS_GET_INDEX_TAIL": "Element", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ist das erste Element.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ist das letzte Element.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Extrahiert das Element an der angegebenen Position in der Liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Extrahiert das erste Element aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Extrahiert das letzte Element aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Extrahiert ein zufälliges Element aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Extrahiert und entfernt das Element an der angegebenen Position aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Extrahiert und entfernt das erste Element aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Extrahiert und entfernt das letzte Element aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Extrahiert und entfernt ein zufälliges Element aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Entfernt das Element an der angegebenen Position aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Entfernt das erste Element aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Entfernt das letzte Element aus der Liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Entfernt ein zufälliges Element aus der Liste.", - "LISTS_SET_INDEX_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", - "LISTS_SET_INDEX_SET": "setze für", - "LISTS_SET_INDEX_INSERT": "füge als", - "LISTS_SET_INDEX_INPUT_TO": "ein", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setzt das Element an der angegebenen Position in der Liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Setzt das erste Element in der Liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Setzt das letzte Element in die Liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setzt ein zufälliges Element in der Liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Fügt das Element an der angegebenen Position in die Liste ein.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Fügt das Element an den Anfang der Liste an.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Fügt das Element ans Ende der Liste an.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Fügt das Element zufällig in die Liste ein.", - "LISTS_GET_SUBLIST_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", - "LISTS_GET_SUBLIST_START_FROM_START": "nimm Teilliste ab", - "LISTS_GET_SUBLIST_START_FROM_END": "nimm Teilliste ab von hinten", - "LISTS_GET_SUBLIST_START_FIRST": "nimm Teilliste ab erstes", - "LISTS_GET_SUBLIST_END_FROM_START": "bis", - "LISTS_GET_SUBLIST_END_FROM_END": "bis von hinten", - "LISTS_GET_SUBLIST_END_LAST": "bis letztes", - "LISTS_GET_SUBLIST_TAIL": "Element", - "LISTS_GET_SUBLIST_TOOLTIP": "Erstellt eine Kopie mit dem angegebenen Abschnitt der Liste.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "%1 %2 %3 sortieren", - "LISTS_SORT_TOOLTIP": "Eine Kopie einer Liste sortieren.", - "LISTS_SORT_ORDER_ASCENDING": "aufsteigend", - "LISTS_SORT_ORDER_DESCENDING": "absteigend", - "LISTS_SORT_TYPE_NUMERIC": "numerisch", - "LISTS_SORT_TYPE_TEXT": "alphabetisch", - "LISTS_SORT_TYPE_IGNORECASE": "alphabetisch, Großschreibung ignorieren", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "Liste aus Text erstellen", - "LISTS_SPLIT_TEXT_FROM_LIST": "Text aus Liste erstellen", - "LISTS_SPLIT_WITH_DELIMITER": "mit Trennzeichen", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Text in eine Liste mit Texten aufteilen, unterbrochen bei jedem Trennzeichen.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Liste mit Texten in einen Text vereinen, getrennt durch ein Trennzeichen.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "kehre %1 um", - "LISTS_REVERSE_TOOLTIP": "Kehre eine Kopie einer Liste um.", - "ORDINAL_NUMBER_SUFFIX": ".", - "VARIABLES_GET_HELPURL": "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29", - "VARIABLES_GET_TOOLTIP": "Gibt den Wert der Variable zurück.", - "VARIABLES_GET_CREATE_SET": "Erzeuge \"Schreibe %1\"", - "VARIABLES_SET_HELPURL": "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29", - "VARIABLES_SET": "setze %1 auf %2", - "VARIABLES_SET_TOOLTIP": "Setzt den Wert einer Variable.", - "VARIABLES_SET_CREATE_GET": "Erzeuge \"Lese %1\"", - "PROCEDURES_DEFNORETURN_HELPURL": "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29", - "PROCEDURES_DEFNORETURN_TITLE": "um", - "PROCEDURES_DEFNORETURN_PROCEDURE": "etwas tun", - "PROCEDURES_BEFORE_PARAMS": "mit:", - "PROCEDURES_CALL_BEFORE_PARAMS": "mit:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Ein Funktionsblock ohne Rückgabewert.", - "PROCEDURES_DEFNORETURN_COMMENT": "Beschreibe diese Funktion …", - "PROCEDURES_DEFRETURN_HELPURL": "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29", - "PROCEDURES_DEFRETURN_RETURN": "gib zurück", - "PROCEDURES_DEFRETURN_TOOLTIP": "Ein Funktionsblock mit Rückgabewert.", - "PROCEDURES_ALLOW_STATEMENTS": "Anweisungen erlauben", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Warnung: Dieser Funktionsblock hat zwei gleich benannte Parameter.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://de.wikipedia.org/wiki/Unterprogramm", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Rufe einen Funktionsblock ohne Rückgabewert auf.", - "PROCEDURES_CALLRETURN_HELPURL": "https://de.wikipedia.org/wiki/Unterprogramm", - "PROCEDURES_CALLRETURN_TOOLTIP": "Rufe einen Funktionsblock mit Rückgabewert auf.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "Parameter", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Die Eingaben zu dieser Funktion hinzufügen, entfernen oder neu anordnen.", - "PROCEDURES_MUTATORARG_TITLE": "Variable:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Eine Eingabe zur Funktion hinzufügen.", - "PROCEDURES_HIGHLIGHT_DEF": "Markiere Funktionsblock", - "PROCEDURES_CREATE_DO": "Erzeuge \"Aufruf %1\"", - "PROCEDURES_IFRETURN_TOOLTIP": "Gibt den zweiten Wert zurück und verlässt die Funktion, falls der erste Wert wahr ist.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Warnung: Dieser Block darf nur innerhalb eines Funktionsblocks genutzt werden.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Teile etwas mit…", - "WORKSPACE_ARIA_LABEL": "Blockly Arbeitsbereich", - "COLLAPSED_WARNINGS_WARNING": "Eingeklappte Blöcke enthalten Warnungen.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Abbrechen" -} +{ + "@metadata": { + "authors": [ + "Cvanca", + "Dan-yell", + "M165437", + "Metalhead64", + "MrFraggle", + "Octycs", + "Sillyfreak", + "Sushi", + "THINK", + "Tiin", + "Zgtm", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "Element", + "UNNAMED_KEY": "unbenannt", + "TODAY": "Heute", + "DUPLICATE_BLOCK": "Kopieren", + "ADD_COMMENT": "Kommentar hinzufügen", + "REMOVE_COMMENT": "Kommentar entfernen", + "DUPLICATE_COMMENT": "Kommentar duplizieren", + "EXTERNAL_INPUTS": "externe Eingänge", + "INLINE_INPUTS": "interne Eingänge", + "DELETE_BLOCK": "Baustein löschen", + "DELETE_X_BLOCKS": "%1 Bausteine löschen", + "DELETE_ALL_BLOCKS": "Alle %1 Bausteine löschen?", + "CLEAN_UP": "Bausteine aufräumen", + "COLLAPSE_BLOCK": "Baustein zusammenfalten", + "COLLAPSE_ALL": "Alle Bausteine zusammenfalten", + "EXPAND_BLOCK": "Baustein entfalten", + "EXPAND_ALL": "Alle Bausteine entfalten", + "DISABLE_BLOCK": "Baustein deaktivieren", + "ENABLE_BLOCK": "Baustein aktivieren", + "HELP": "Hilfe", + "UNDO": "Rückgängig", + "REDO": "Wiederholen", + "CHANGE_VALUE_TITLE": "Wert ändern:", + "RENAME_VARIABLE": "Variable umbenennen …", + "RENAME_VARIABLE_TITLE": "Alle \"%1\" Variablen umbenennen in:", + "NEW_VARIABLE": "Variable erstellen …", + "NEW_STRING_VARIABLE": "Zeichenfolgenvariable erstellen …", + "NEW_NUMBER_VARIABLE": "Zahlenvariable erstellen …", + "NEW_COLOUR_VARIABLE": "Farbvariable erstellen …", + "NEW_VARIABLE_TYPE_TITLE": "Neuer Variablentyp:", + "NEW_VARIABLE_TITLE": "Name der neuen Variable:", + "VARIABLE_ALREADY_EXISTS": "Eine Variable namens „%1“ ist bereits vorhanden.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Eine Variable namens „%1“ ist bereits für einen anderen Typ vorhanden: „%2“.", + "DELETE_VARIABLE_CONFIRMATION": "%1 Verwendungen der Variable „%2“ löschen?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Die Variable „%1“ kann nicht gelöscht werden, da sie Teil der Definition der Funktion „%2“ ist.", + "DELETE_VARIABLE": "Die Variable „%1“ löschen", + "COLOUR_PICKER_HELPURL": "https://de.wikipedia.org/wiki/Farbe", + "COLOUR_PICKER_TOOLTIP": "Wählt eine Farbe aus der Palette aus.", + "COLOUR_RANDOM_TITLE": "zufällige Farbe", + "COLOUR_RANDOM_TOOLTIP": "Erzeugt eine Farbe nach dem Zufallsprinzip.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "Farbe aus", + "COLOUR_RGB_RED": "rot", + "COLOUR_RGB_GREEN": "grün", + "COLOUR_RGB_BLUE": "blau", + "COLOUR_RGB_TOOLTIP": "Erzeugt eine Farbe mit selbst definierten Rot-, Grün- und Blauwerten. Alle Werte müssen zwischen 0 und 100 liegen.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "mische", + "COLOUR_BLEND_COLOUR1": "Farbe 1", + "COLOUR_BLEND_COLOUR2": "und Farbe 2", + "COLOUR_BLEND_RATIO": "im Verhältnis", + "COLOUR_BLEND_TOOLTIP": "Vermischt 2 Farben mit konfigurierbarem Farbverhältnis (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://de.wikipedia.org/wiki/For-Schleife", + "CONTROLS_REPEAT_TITLE": "wiederhole %1 mal:", + "CONTROLS_REPEAT_INPUT_DO": "mache", + "CONTROLS_REPEAT_TOOLTIP": "Eine Anweisung mehrfach ausführen.", + "CONTROLS_WHILEUNTIL_HELPURL": "https://de.wikipedia.org/wiki/Schleife_%28Programmierung%29", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "wiederhole solange", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "wiederhole bis", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Führt Anweisungen aus solange die Bedingung wahr ist.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Führt Anweisungen aus solange die Bedingung unwahr ist.", + "CONTROLS_FOR_HELPURL": "https://de.wikipedia.org/wiki/For-Schleife", + "CONTROLS_FOR_TOOLTIP": "Zählt die Variable \"%1\" von einem Startwert bis zu einem Endwert und führt für jeden Wert eine Anweisung aus.", + "CONTROLS_FOR_TITLE": "zähle %1 von %2 bis %3 in Schritten von %4", + "CONTROLS_FOREACH_HELPURL": "https://de.wikipedia.org/wiki/For-Schleife", + "CONTROLS_FOREACH_TITLE": "für jeden Wert %1 aus der Liste %2", + "CONTROLS_FOREACH_TOOLTIP": "Führt eine Anweisung für jeden Wert in der Liste aus und setzt dabei die Variable \"%1\" auf den aktuellen Listenwert.", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://de.wikipedia.org/wiki/Kontrollstruktur", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "die Schleife abbrechen", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "sofort mit nächstem Schleifendurchlauf fortfahren", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Die umgebende Schleife beenden.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Diese Anweisung abbrechen und mit dem nächsten Schleifendurchlauf fortfahren.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Warnung: Dieser Baustein kann nur in einer Schleife verwendet werden.", + "CONTROLS_IF_TOOLTIP_1": "Führt eine Anweisung aus, falls eine Bedingung wahr ist.", + "CONTROLS_IF_TOOLTIP_2": "Führt die erste Anweisung aus, falls eine Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus.", + "CONTROLS_IF_TOOLTIP_3": "Führt die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist.", + "CONTROLS_IF_TOOLTIP_4": "Führe die erste Anweisung aus, falls die erste Bedingung wahr ist. Führt ansonsten die zweite Anweisung aus, falls die zweite Bedingung wahr ist. Führt die dritte Anweisung aus, falls keine der beiden Bedingungen wahr ist", + "CONTROLS_IF_MSG_IF": "falls", + "CONTROLS_IF_MSG_ELSEIF": "sonst falls", + "CONTROLS_IF_MSG_ELSE": "sonst", + "CONTROLS_IF_IF_TOOLTIP": "Hinzufügen, entfernen oder sortieren von Sektionen", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Eine weitere Bedingung hinzufügen.", + "CONTROLS_IF_ELSE_TOOLTIP": "Eine sonst-Bedingung hinzufügen. Führt eine Anweisung aus, falls keine Bedingung zutrifft.", + "LOGIC_COMPARE_HELPURL": "https://de.wikipedia.org/wiki/Vergleich_%28Zahlen%29", + "LOGIC_COMPARE_TOOLTIP_EQ": "Ist wahr, falls beide Werte gleich sind.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Ist wahr, falls beide Werte unterschiedlich sind.", + "LOGIC_COMPARE_TOOLTIP_LT": "Ist wahr, falls der erste Wert kleiner als der zweite Wert ist.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Ist wahr, falls der erste Wert kleiner als oder gleich groß wie der zweite Wert ist.", + "LOGIC_COMPARE_TOOLTIP_GT": "Ist wahr, falls der erste Wert größer als der zweite Wert ist.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Ist wahr, falls der erste Wert größer als oder gleich groß wie der zweite Wert ist.", + "LOGIC_OPERATION_TOOLTIP_AND": "Ist wahr, falls beide Werte wahr sind.", + "LOGIC_OPERATION_AND": "und", + "LOGIC_OPERATION_TOOLTIP_OR": "Ist wahr, falls einer der beiden Werte wahr ist.", + "LOGIC_OPERATION_OR": "oder", + "LOGIC_NEGATE_TITLE": "nicht %1", + "LOGIC_NEGATE_TOOLTIP": "Ist wahr, falls der Eingabewert unwahr ist. Ist unwahr, falls der Eingabewert wahr ist.", + "LOGIC_BOOLEAN_TRUE": "wahr", + "LOGIC_BOOLEAN_FALSE": "falsch", + "LOGIC_BOOLEAN_TOOLTIP": "Ist entweder wahr oder falsch", + "LOGIC_NULL_HELPURL": "https://de.wikipedia.org/wiki/Nullwert", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Ist \"null\".", + "LOGIC_TERNARY_HELPURL": "https://de.wikipedia.org/wiki/%3F:#Auswahloperator", + "LOGIC_TERNARY_CONDITION": "prüfe", + "LOGIC_TERNARY_IF_TRUE": "falls wahr", + "LOGIC_TERNARY_IF_FALSE": "falls falsch", + "LOGIC_TERNARY_TOOLTIP": "Überprüft eine Bedingung \"prüfe\". Falls die Bedingung wahr ist, wird der \"falls wahr\" Wert zurückgegeben, andernfalls der \"falls unwahr\" Wert", + "MATH_NUMBER_HELPURL": "https://de.wikipedia.org/wiki/Zahl", + "MATH_NUMBER_TOOLTIP": "Eine Zahl.", + "MATH_ARITHMETIC_HELPURL": "https://de.wikipedia.org/wiki/Grundrechenart", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Ist die Summe zweier Zahlen.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ist die Differenz zweier Zahlen.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Ist das Produkt zweier Zahlen.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Ist der Quotient zweier Zahlen.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Ist die erste Zahl potenziert mit der zweiten Zahl.", + "MATH_SINGLE_HELPURL": "https://de.wikipedia.org/wiki/Quadratwurzel", + "MATH_SINGLE_OP_ROOT": "Quadratwurzel", + "MATH_SINGLE_TOOLTIP_ROOT": "Ist die Quadratwurzel einer Zahl.", + "MATH_SINGLE_OP_ABSOLUTE": "Betrag", + "MATH_SINGLE_TOOLTIP_ABS": "Ist der Betrag einer Zahl.", + "MATH_SINGLE_TOOLTIP_NEG": "Negiert eine Zahl.", + "MATH_SINGLE_TOOLTIP_LN": "Ist der natürliche Logarithmus einer Zahl.", + "MATH_SINGLE_TOOLTIP_LOG10": "Ist der dekadische Logarithmus einer Zahl.", + "MATH_SINGLE_TOOLTIP_EXP": "Ist Wert der Exponentialfunktion einer Zahl.", + "MATH_SINGLE_TOOLTIP_POW10": "Rechnet 10 hoch eine Zahl.", + "MATH_TRIG_HELPURL": "https://de.wikipedia.org/wiki/Trigonometrie", + "MATH_TRIG_TOOLTIP_SIN": "Ist der Sinus des Winkels (nicht Radiant).", + "MATH_TRIG_TOOLTIP_COS": "Ist der Kosinus des Winkels.", + "MATH_TRIG_TOOLTIP_TAN": "Ist der Tangens des Winkels (nicht Radiant).", + "MATH_TRIG_TOOLTIP_ASIN": "Ist der Arkussinus des Eingabewertes.", + "MATH_TRIG_TOOLTIP_ACOS": "Ist der Arkuskosinus des Eingabewertes.", + "MATH_TRIG_TOOLTIP_ATAN": "Ist der Arkustangens des Eingabewertes.", + "MATH_CONSTANT_HELPURL": "https://de.wikipedia.org/wiki/Mathematische_Konstante", + "MATH_CONSTANT_TOOLTIP": "Mathematische Konstanten wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich).", + "MATH_IS_EVEN": "ist gerade", + "MATH_IS_ODD": "ist ungerade", + "MATH_IS_PRIME": "ist eine Primzahl", + "MATH_IS_WHOLE": "ist eine ganze Zahl", + "MATH_IS_POSITIVE": "ist positiv", + "MATH_IS_NEGATIVE": "ist negativ", + "MATH_IS_DIVISIBLE_BY": "ist teilbar durch", + "MATH_IS_TOOLTIP": "Überprüft ob eine Zahl gerade, ungerade, eine Primzahl, ganzzahlig, positiv, negativ oder durch eine zweite Zahl teilbar ist. Gibt wahr oder falsch zurück.", + "MATH_CHANGE_HELPURL": "https://de.wikipedia.org/wiki/Inkrement_und_Dekrement", + "MATH_CHANGE_TITLE": "erhöhe %1 um %2", + "MATH_CHANGE_TOOLTIP": "Addiert eine Zahl zu \"%1\".", + "MATH_ROUND_HELPURL": "https://de.wikipedia.org/wiki/Runden", + "MATH_ROUND_TOOLTIP": "Eine Zahl auf- oder abrunden.", + "MATH_ROUND_OPERATOR_ROUND": "runde", + "MATH_ROUND_OPERATOR_ROUNDUP": "runde auf", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "runde ab", + "MATH_ONLIST_HELPURL": "http://www.sysplus.ch/einstieg.php?links=menu&seite=4125&grad=Crash&prog=Excel", + "MATH_ONLIST_OPERATOR_SUM": "Summe über die Liste", + "MATH_ONLIST_TOOLTIP_SUM": "Ist die Summe aller Zahlen in einer Liste.", + "MATH_ONLIST_OPERATOR_MIN": "Minimalwert der Liste", + "MATH_ONLIST_TOOLTIP_MIN": "Ist die kleinste Zahl in einer Liste.", + "MATH_ONLIST_OPERATOR_MAX": "Maximalwert der Liste", + "MATH_ONLIST_TOOLTIP_MAX": "Ist die größte Zahl in einer Liste.", + "MATH_ONLIST_OPERATOR_AVERAGE": "Mittelwert der Liste", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Ist der Durchschnittswert aller Zahlen in einer Liste.", + "MATH_ONLIST_OPERATOR_MEDIAN": "Median der Liste", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Ist der Median aller Zahlen in einer Liste.", + "MATH_ONLIST_OPERATOR_MODE": "am häufigsten in der Liste", + "MATH_ONLIST_TOOLTIP_MODE": "Findet die Werte mit dem häufigstem Vorkommen in der Liste.", + "MATH_ONLIST_OPERATOR_STD_DEV": "Standardabweichung der Liste", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Ist die Standardabweichung aller Werte in der Liste.", + "MATH_ONLIST_OPERATOR_RANDOM": "Zufallswert aus der Liste", + "MATH_ONLIST_TOOLTIP_RANDOM": "Gibt einen zufälligen Wert aus der Liste zurück.", + "MATH_MODULO_HELPURL": "https://de.wikipedia.org/wiki/Modulo", + "MATH_MODULO_TITLE": "Rest von %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Der Rest nach einer Division.", + "MATH_CONSTRAIN_TITLE": "begrenze %1 zwischen %2 und %3", + "MATH_CONSTRAIN_TOOLTIP": "Begrenzt eine Zahl auf den Wertebereich zwischen zwei anderen Zahlen (inklusiv).", + "MATH_RANDOM_INT_HELPURL": "https://de.wikipedia.org/wiki/Zufallszahlen", + "MATH_RANDOM_INT_TITLE": "ganzzahlige Zufallszahl zwischen %1 und %2", + "MATH_RANDOM_INT_TOOLTIP": "Erzeugt eine ganzzahlige Zufallszahl zwischen zwei Zahlen (inklusiv).", + "MATH_RANDOM_FLOAT_HELPURL": "https://de.wikipedia.org/wiki/Zufallszahlen", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "Zufallszahl (0.0 - 1.0)", + "MATH_RANDOM_FLOAT_TOOLTIP": "Erzeugt eine Zufallszahl zwischen 0.0 (inklusiv) und 1.0 (exklusiv).", + "MATH_ATAN2_HELPURL": "https://de.wikipedia.org/wiki/Arctan2", + "MATH_ATAN2_TITLE": "atan2 von X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Gibt den Arkustangens des Punktes (X, Y) in Grad von -180 bis 180 zurück.", + "TEXT_TEXT_HELPURL": "https://de.wikipedia.org/wiki/Zeichenkette", + "TEXT_TEXT_TOOLTIP": "Ein Buchstabe, Text oder Satz.", + "TEXT_JOIN_HELPURL": "", + "TEXT_JOIN_TITLE_CREATEWITH": "erstelle Text aus", + "TEXT_JOIN_TOOLTIP": "Erstellt einen Text durch das Verbinden von mehreren Textelementen.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "verbinden", + "TEXT_CREATE_JOIN_TOOLTIP": "Hinzufügen, entfernen und sortieren von Elementen.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ein Element zum Text hinzufügen.", + "TEXT_APPEND_TITLE": "zu %1 Text %2 anhängen", + "TEXT_APPEND_TOOLTIP": "Text an die Variable \"%1\" anhängen.", + "TEXT_LENGTH_TITLE": "Länge von %1", + "TEXT_LENGTH_TOOLTIP": "Die Anzahl von Zeichen in einem Text (inkl. Leerzeichen).", + "TEXT_ISEMPTY_TITLE": "%1 ist leer", + "TEXT_ISEMPTY_TOOLTIP": "Ist wahr, falls der Text keine Zeichen enthält.", + "TEXT_INDEXOF_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", + "TEXT_INDEXOF_TOOLTIP": "Findet das erste / letzte Auftreten eines Suchbegriffs in einem Text. Gibt die Position des Begriffs zurück oder %1 falls der Suchbegriff nicht gefunden wurde.", + "TEXT_INDEXOF_TITLE": "im Text %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "suche erstes Auftreten des Begriffs", + "TEXT_INDEXOF_OPERATOR_LAST": "suche letztes Auftreten des Begriffs", + "TEXT_CHARAT_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", + "TEXT_CHARAT_TITLE": "im Text %1 %2", + "TEXT_CHARAT_FROM_START": "nimm", + "TEXT_CHARAT_FROM_END": "nimm von hinten", + "TEXT_CHARAT_FIRST": "nimm ersten", + "TEXT_CHARAT_LAST": "nimm letzten", + "TEXT_CHARAT_RANDOM": "nimm zufälligen", + "TEXT_CHARAT_TAIL": "Buchstaben", + "TEXT_CHARAT_TOOLTIP": "Extrahiert einen Buchstaben von einer bestimmten Position.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Gibt den angegebenen Textabschnitt zurück.", + "TEXT_GET_SUBSTRING_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "im Text", + "TEXT_GET_SUBSTRING_START_FROM_START": "nimm Teil ab", + "TEXT_GET_SUBSTRING_START_FROM_END": "nimm Teil ab von hinten", + "TEXT_GET_SUBSTRING_START_FIRST": "nimm Teil ab erster", + "TEXT_GET_SUBSTRING_END_FROM_START": "bis", + "TEXT_GET_SUBSTRING_END_FROM_END": "bis von hinten", + "TEXT_GET_SUBSTRING_END_LAST": "bis letzter", + "TEXT_GET_SUBSTRING_TAIL": "Buchstabe", + "TEXT_CHANGECASE_TOOLTIP": "Wandelt Schreibweise von Texten um, in Großbuchstaben, Kleinbuchstaben oder den ersten Buchstaben jedes Wortes groß und die anderen klein.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "wandel um in GROSSBUCHSTABEN", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "wandel um in kleinbuchstaben", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "wandel um in Substantive", + "TEXT_TRIM_TOOLTIP": "Entfernt Leerzeichen vom Anfang und / oder Ende eines Textes.", + "TEXT_TRIM_OPERATOR_BOTH": "entferne Leerzeichen vom Anfang und vom Ende (links und rechts)", + "TEXT_TRIM_OPERATOR_LEFT": "entferne Leerzeichen vom Anfang (links)", + "TEXT_TRIM_OPERATOR_RIGHT": "entferne Leerzeichen vom Ende (rechts)", + "TEXT_PRINT_TITLE": "gib aus %1", + "TEXT_PRINT_TOOLTIP": "Gibt den Text aus.", + "TEXT_PROMPT_TYPE_TEXT": "frage nach Text mit Hinweis", + "TEXT_PROMPT_TYPE_NUMBER": "frage nach Zahl mit Hinweis", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Fragt den Benutzer nach einer Zahl.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Fragt den Benutzer nach einem Text.", + "TEXT_COUNT_MESSAGE0": "zähle %1 in %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Zähle, wie oft ein Text innerhalb eines anderen Textes vorkommt.", + "TEXT_REPLACE_MESSAGE0": "ersetze %1 durch %2 in %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Ersetze alle Vorkommen eines Textes innerhalb eines anderen Textes.", + "TEXT_REVERSE_MESSAGE0": "kehre %1 um", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Kehre die Reihenfolge der Zeichen im Text um.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "erzeuge eine leere Liste", + "LISTS_CREATE_EMPTY_TOOLTIP": "Erzeugt eine leere Liste ohne Inhalt.", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Erzeugt eine Liste aus den angegebenen Elementen.", + "LISTS_CREATE_WITH_INPUT_WITH": "erzeuge Liste mit", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "Liste", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Hinzufügen, entfernen und sortieren von Elementen.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ein Element zur Liste hinzufügen.", + "LISTS_REPEAT_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", + "LISTS_REPEAT_TOOLTIP": "Erzeugt eine Liste mit einer variablen Anzahl von Elementen", + "LISTS_REPEAT_TITLE": "erzeuge Liste mit %2 mal dem Element %1​", + "LISTS_LENGTH_TITLE": "Länge von %1", + "LISTS_LENGTH_TOOLTIP": "Die Anzahl von Elementen in der Liste.", + "LISTS_ISEMPTY_TITLE": "%1 ist leer", + "LISTS_ISEMPTY_TOOLTIP": "Ist wahr, falls die Liste leer ist.", + "LISTS_INLIST": "in der Liste", + "LISTS_INDEX_OF_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", + "LISTS_INDEX_OF_FIRST": "suche erstes Auftreten von", + "LISTS_INDEX_OF_LAST": "suche letztes Auftreten von", + "LISTS_INDEX_OF_TOOLTIP": "Sucht die Position (Index) eines Elementes in der Liste. Gibt %1 zurück, falls kein Element gefunden wurde.", + "LISTS_GET_INDEX_GET": "nimm", + "LISTS_GET_INDEX_GET_REMOVE": "nimm und entferne", + "LISTS_GET_INDEX_REMOVE": "entferne", + "LISTS_GET_INDEX_FROM_START": "das", + "LISTS_GET_INDEX_FROM_END": "von hinten das", + "LISTS_GET_INDEX_FIRST": "Erste", + "LISTS_GET_INDEX_LAST": "Letzte", + "LISTS_GET_INDEX_RANDOM": "Zufällig", + "LISTS_GET_INDEX_TAIL": "Element", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ist das erste Element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ist das letzte Element.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Extrahiert das Element an der angegebenen Position in der Liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Extrahiert das erste Element aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Extrahiert das letzte Element aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Extrahiert ein zufälliges Element aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Extrahiert und entfernt das Element an der angegebenen Position aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Extrahiert und entfernt das erste Element aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Extrahiert und entfernt das letzte Element aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Extrahiert und entfernt ein zufälliges Element aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Entfernt das Element an der angegebenen Position aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Entfernt das erste Element aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Entfernt das letzte Element aus der Liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Entfernt ein zufälliges Element aus der Liste.", + "LISTS_SET_INDEX_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", + "LISTS_SET_INDEX_SET": "setze für", + "LISTS_SET_INDEX_INSERT": "füge als", + "LISTS_SET_INDEX_INPUT_TO": "ein", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setzt das Element an der angegebenen Position in der Liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Setzt das erste Element in der Liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Setzt das letzte Element in die Liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setzt ein zufälliges Element in der Liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Fügt das Element an der angegebenen Position in die Liste ein.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Fügt das Element an den Anfang der Liste an.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Fügt das Element ans Ende der Liste an.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Fügt das Element zufällig in die Liste ein.", + "LISTS_GET_SUBLIST_HELPURL": "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm", + "LISTS_GET_SUBLIST_START_FROM_START": "nimm Teilliste ab", + "LISTS_GET_SUBLIST_START_FROM_END": "nimm Teilliste ab von hinten", + "LISTS_GET_SUBLIST_START_FIRST": "nimm Teilliste ab erstes", + "LISTS_GET_SUBLIST_END_FROM_START": "bis", + "LISTS_GET_SUBLIST_END_FROM_END": "bis von hinten", + "LISTS_GET_SUBLIST_END_LAST": "bis letztes", + "LISTS_GET_SUBLIST_TAIL": "Element", + "LISTS_GET_SUBLIST_TOOLTIP": "Erstellt eine Kopie mit dem angegebenen Abschnitt der Liste.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "%1 %2 %3 sortieren", + "LISTS_SORT_TOOLTIP": "Eine Kopie einer Liste sortieren.", + "LISTS_SORT_ORDER_ASCENDING": "aufsteigend", + "LISTS_SORT_ORDER_DESCENDING": "absteigend", + "LISTS_SORT_TYPE_NUMERIC": "numerisch", + "LISTS_SORT_TYPE_TEXT": "alphabetisch", + "LISTS_SORT_TYPE_IGNORECASE": "alphabetisch, Großschreibung ignorieren", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "Liste aus Text erstellen", + "LISTS_SPLIT_TEXT_FROM_LIST": "Text aus Liste erstellen", + "LISTS_SPLIT_WITH_DELIMITER": "mit Trennzeichen", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Text in eine Liste mit Texten aufteilen, unterbrochen bei jedem Trennzeichen.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Liste mit Texten in einen Text vereinen, getrennt durch ein Trennzeichen.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "kehre %1 um", + "LISTS_REVERSE_TOOLTIP": "Kehre eine Kopie einer Liste um.", + "ORDINAL_NUMBER_SUFFIX": ".", + "VARIABLES_GET_HELPURL": "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29", + "VARIABLES_GET_TOOLTIP": "Gibt den Wert der Variable zurück.", + "VARIABLES_GET_CREATE_SET": "Erzeuge \"Schreibe %1\"", + "VARIABLES_SET_HELPURL": "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29", + "VARIABLES_SET": "setze %1 auf %2", + "VARIABLES_SET_TOOLTIP": "Setzt den Wert einer Variable.", + "VARIABLES_SET_CREATE_GET": "Erzeuge \"Lese %1\"", + "PROCEDURES_DEFNORETURN_HELPURL": "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29", + "PROCEDURES_DEFNORETURN_TITLE": "um", + "PROCEDURES_DEFNORETURN_PROCEDURE": "etwas tun", + "PROCEDURES_BEFORE_PARAMS": "mit:", + "PROCEDURES_CALL_BEFORE_PARAMS": "mit:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Ein Funktionsblock ohne Rückgabewert.", + "PROCEDURES_DEFNORETURN_COMMENT": "Beschreibe diese Funktion …", + "PROCEDURES_DEFRETURN_HELPURL": "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29", + "PROCEDURES_DEFRETURN_RETURN": "gib zurück", + "PROCEDURES_DEFRETURN_TOOLTIP": "Ein Funktionsblock mit Rückgabewert.", + "PROCEDURES_ALLOW_STATEMENTS": "Anweisungen erlauben", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Warnung: Dieser Funktionsblock hat zwei gleich benannte Parameter.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://de.wikipedia.org/wiki/Unterprogramm", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Rufe einen Funktionsblock ohne Rückgabewert auf.", + "PROCEDURES_CALLRETURN_HELPURL": "https://de.wikipedia.org/wiki/Unterprogramm", + "PROCEDURES_CALLRETURN_TOOLTIP": "Rufe einen Funktionsblock mit Rückgabewert auf.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "Parameter", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Die Eingaben zu dieser Funktion hinzufügen, entfernen oder neu anordnen.", + "PROCEDURES_MUTATORARG_TITLE": "Variable:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Eine Eingabe zur Funktion hinzufügen.", + "PROCEDURES_HIGHLIGHT_DEF": "Markiere Funktionsblock", + "PROCEDURES_CREATE_DO": "Erzeuge \"Aufruf %1\"", + "PROCEDURES_IFRETURN_TOOLTIP": "Gibt den zweiten Wert zurück und verlässt die Funktion, falls der erste Wert wahr ist.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Warnung: Dieser Block darf nur innerhalb eines Funktionsblocks genutzt werden.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Teile etwas mit…", + "WORKSPACE_ARIA_LABEL": "Blockly Arbeitsbereich", + "COLLAPSED_WARNINGS_WARNING": "Eingeklappte Blöcke enthalten Warnungen.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Abbrechen" +} diff --git a/msg/json/diq.json b/msg/json/diq.json index f20562ebd7b..729ce3b735b 100644 --- a/msg/json/diq.json +++ b/msg/json/diq.json @@ -1,264 +1,264 @@ -{ - "@metadata": { - "authors": [ - "1917 Ekim Devrimi", - "Gırd", - "Kumkumuk", - "Marmase", - "Mirzali", - "Orbot707" - ] - }, - "VARIABLES_DEFAULT_NAME": "unsur", - "UNNAMED_KEY": "bêname", - "TODAY": "Ewro", - "DUPLICATE_BLOCK": "Zewnc", - "ADD_COMMENT": "Tefsir cı ke", - "REMOVE_COMMENT": "Tefsiri Wedare", - "DUPLICATE_COMMENT": "Mışewreyo zewnc", - "EXTERNAL_INPUTS": "Cıkewtışê xarıciy", - "INLINE_INPUTS": "Cıkerdışê xomiyani", - "DELETE_BLOCK": "Bloki bestere", - "DELETE_X_BLOCKS": "%1 blokan bestere", - "DELETE_ALL_BLOCKS": "Pêro %1 bloki besteriyê?", - "CLEAN_UP": "Blokan pak ke", - "COLLAPSE_BLOCK": "Bloki teng ke", - "COLLAPSE_ALL": "Blokan teng ke", - "EXPAND_BLOCK": "Bloki hera ke", - "EXPAND_ALL": "Blokan hera ke", - "DISABLE_BLOCK": "Çengi devre ra vec", - "ENABLE_BLOCK": "Bloki feal ke", - "HELP": "Peşti", - "UNDO": "Peyser bıgê", - "REDO": "Newe ke", - "CHANGE_VALUE_TITLE": "Erci bıvurne:", - "RENAME_VARIABLE": "Vuriyayey fına name ke...", - "RENAME_VARIABLE_TITLE": "Pêro vırnayışê '%1' reyna name ke:", - "NEW_VARIABLE": "Vuriyayeyo bıvıraz...", - "NEW_STRING_VARIABLE": "Vurriyayoğê rêze vıraze...", - "NEW_NUMBER_VARIABLE": "Vurriyayoğê amari vıraze...", - "NEW_COLOUR_VARIABLE": "Vurriyayoğê rengi vıraze...", - "NEW_VARIABLE_TYPE_TITLE": "Tewrê vurriyayoğê neweyi:", - "NEW_VARIABLE_TITLE": "Tewrê vurriyayoğê neweyi:", - "VARIABLE_ALREADY_EXISTS": "Yew vırnayış be namey '%1' xora est.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Vurnaye be nameyê '%1' ra be babetê bini ra esto: '%2'", - "DELETE_VARIABLE_CONFIRMATION": "%1 ke vırnayışê '%2'i gırweneno, besteriyo?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Vurniyaye '%1' nêşeno besteriyo, çıke parçeyê şınasnayışiyê fonksiyonê '%2'yo", - "DELETE_VARIABLE": "Şıma vırnaoğê '%1'i besterê", - "COLOUR_PICKER_HELPURL": "https://diq.wikipedia.org/wiki/Reng", - "COLOUR_PICKER_TOOLTIP": "Şıma palet ra yew reng weçinê.", - "COLOUR_RANDOM_TITLE": "rengo rastameye", - "COLOUR_RANDOM_TOOLTIP": "Tesadufi yu ren bıweçin", - "COLOUR_RGB_TITLE": "komponentên rengan", - "COLOUR_RGB_RED": "sur", - "COLOUR_RGB_GREEN": "kıho", - "COLOUR_RGB_BLUE": "kewe", - "COLOUR_RGB_TOOLTIP": "Şıma renganê sûr, aşıl u kohoy ra rengê do spesifik vırazê. Gani ê pêro 0 u 100 miyan de bıbê.", - "COLOUR_BLEND_TITLE": "tewde", - "COLOUR_BLEND_COLOUR1": "reng 1", - "COLOUR_BLEND_COLOUR2": "reng 2", - "COLOUR_BLEND_RATIO": "nısbet", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 fıni tekrar ke", - "CONTROLS_REPEAT_INPUT_DO": "bıke", - "CONTROLS_REPEAT_TOOLTIP": "Şıma tayêna reyi akerdışi kerê.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Tekrar kerdış de", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "hend tekrar ke", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Yew erc raşto se yu beyanat bıd.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Yew erc xırabo se tay beyanati bıd", - "CONTROLS_FOR_TITLE": "Pê amarêno %1 %2 ra %3 rê , herg gam de %4 vurnayışi", - "CONTROLS_FOREACH_TITLE": "Lista %2 de her item %1 rê", - "CONTROLS_FOREACH_TOOLTIP": "Yew lista de her item rê, varyansê '%1' itemi rê vırazê, u dıma tayê akerdışi (beyani) bıdê", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Çerxen ra vec", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "Gama bin da çerxeni ra dewam ke", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Öujtewada çerxeni ra bıvıci", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Diqat: No bloke şeno teyna yew çerxiyayış miyan de bıgırweyo.", - "CONTROLS_IF_TOOLTIP_1": "Eger yew vaye raşto, o taw şıma tayê akerdışi kerê.", - "CONTROLS_IF_MSG_IF": "eke", - "CONTROLS_IF_MSG_ELSEIF": "eke nêyo", - "CONTROLS_IF_MSG_ELSE": "eke çıniyo", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Bloq da if'i rê yu şert dekerê de.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Debiyaye dı erci zey pêyêse ercê \"True\" dane.", - "LOGIC_OPERATION_TOOLTIP_AND": "Eger her dı cıkewtışi zi raştê, şıma ageyrê.", - "LOGIC_OPERATION_AND": "û", - "LOGIC_OPERATION_OR": "ya zi", - "LOGIC_NEGATE_TITLE": "%1 niyo", - "LOGIC_BOOLEAN_TRUE": "raşt", - "LOGIC_BOOLEAN_FALSE": "ğelet", - "LOGIC_BOOLEAN_TOOLTIP": "Raşt yana çep erc dano", - "LOGIC_NULL": "veng", - "LOGIC_NULL_TOOLTIP": "Veng çarneno ra.", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "eke raşto", - "LOGIC_TERNARY_IF_FALSE": "eke ğeleto", - "LOGIC_TERNARY_TOOLTIP": "Şerta'test'i test keno. Eger ke şert raşta se erca 'raşt'i çarneno, çepo se erca 'çep' çarneno.", - "MATH_NUMBER_HELPURL": "https://diq.wikipedia.org/wiki/Numre", - "MATH_NUMBER_TOOLTIP": "Yew numre.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Aritmetik", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Arêdayışê dı amara tadê", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ferqê dı amara tadê", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Reyina dı amara tadê", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Letey iya dı amara tadê", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "karekok", - "MATH_SINGLE_TOOLTIP_ROOT": "Karerêçê yew amarer tadê", - "MATH_SINGLE_OP_ABSOLUTE": "mutlaq", - "MATH_SINGLE_TOOLTIP_ABS": "Ercê mutlaqê yew amarer tadê", - "MATH_SINGLE_TOOLTIP_NEG": "Nêrazibiyena yew amari açarne.", - "MATH_SINGLE_TOOLTIP_LN": "Tebi algoritmaya yew amarer tadê", - "MATH_SINGLE_TOOLTIP_LOG10": "Logaritmay 10i yew amari rê peyser tadê", - "MATH_SINGLE_TOOLTIP_EXP": "E quwetê yew amar tadano.", - "MATH_SINGLE_TOOLTIP_POW10": "Quweta yew amariya 10ıne tade.", - "MATH_TRIG_HELPURL": "https://diq.wikipedia.org/wiki/Fonksiyonê_trigonometriye", - "MATH_TRIG_TOOLTIP_SIN": "Sinusi yew derece tadê (radyan niyo)", - "MATH_TRIG_TOOLTIP_COS": "Derecey yew kosinusi tadê (radyan niyo)", - "MATH_TRIG_TOOLTIP_TAN": "Tanjantê yew derecey tadê (radyan niyo)", - "MATH_TRIG_TOOLTIP_ASIN": "Arksinusê yew amari açarne.", - "MATH_TRIG_TOOLTIP_ACOS": "Arkkosinusê yew amari açarne.", - "MATH_TRIG_TOOLTIP_ATAN": "Arktangensê yew amari açarne.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Sabitanê wertağan ra yew açarne: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (bêpeyniye).", - "MATH_IS_EVEN": "zewnco", - "MATH_IS_ODD": "kıto", - "MATH_IS_PRIME": "bıngehên", - "MATH_IS_WHOLE": "tamo", - "MATH_IS_POSITIVE": "pozitifo", - "MATH_IS_NEGATIVE": "negatifo", - "MATH_IS_DIVISIBLE_BY": "Leteyêno", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "%2, keno %1 vurneno", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Yu amorer loğê cêri yana cori ke", - "MATH_ROUND_OPERATOR_ROUND": "gılor ke", - "MATH_ROUND_OPERATOR_ROUNDUP": "Loğê cori ke", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "Loğê cêri ke", - "MATH_ONLIST_OPERATOR_SUM": "koma liste", - "MATH_ONLIST_OPERATOR_MIN": "Tewr qıcê lista", - "MATH_ONLIST_TOOLTIP_MIN": "Lista de tewr qıckek amar tadê", - "MATH_ONLIST_OPERATOR_MAX": "Tewr gırdê lista", - "MATH_ONLIST_TOOLTIP_MAX": "Lista de amara tewr qıckeke tadê", - "MATH_ONLIST_OPERATOR_AVERAGE": "Averacê lista", - "MATH_ONLIST_OPERATOR_MEDIAN": "Wertey lista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Lista ra amara werti tadê", - "MATH_ONLIST_OPERATOR_MODE": "listey modi", - "MATH_ONLIST_OPERATOR_STD_DEV": "Standart ferqıziya lista", - "MATH_ONLIST_OPERATOR_RANDOM": "Raştamaye objeya lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Liste ra yew elemento rastameye açarne.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "%1 ÷ %2 ra menden", - "MATH_MODULO_TOOLTIP": "Mendeyan ra teqsimkerdışê dı amaran açarne.", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "Raştamaye nimande amor", - "MATH_ATAN2_HELPURL": "https://diq.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2, X:%1 Y:%2", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Yu herfa, satır yana çekuya metini", - "TEXT_JOIN_TITLE_CREATEWITH": "ya metin vıraz", - "TEXT_CREATE_JOIN_TITLE_JOIN": "gıre de", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Yew işaret nuşteyi ke.", - "TEXT_APPEND_TITLE": "rê %1 Metin dek %2", - "TEXT_LENGTH_TITLE": "dergiya %1", - "TEXT_ISEMPTY_TITLE": "%1 vengo", - "TEXT_INDEXOF_TITLE": "metın de %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "vıraştışê nuşteyê verêni bıvêne", - "TEXT_INDEXOF_OPERATOR_LAST": "vıraştışê nuşteyê verêni bıvêne", - "TEXT_CHARAT_TITLE": "metın de %1 %2", - "TEXT_CHARAT_FROM_START": "Herfa # bıgi", - "TEXT_CHARAT_FROM_END": "herfa # peyêne ra bıgê", - "TEXT_CHARAT_FIRST": "Herfa sıfti bıgi", - "TEXT_CHARAT_LAST": "herfa peyêne bıgê", - "TEXT_CHARAT_RANDOM": "Raştamaye yu herf bıgi", - "TEXT_CHARAT_TOOLTIP": "Şınasnaye pozisyon de yu herfer çerğ keno", - "TEXT_GET_SUBSTRING_TOOLTIP": "Tay letey metini çerğ keno", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "metın de", - "TEXT_GET_SUBSTRING_START_FROM_START": "rêza bınêne herfa # ra bıgê", - "TEXT_GET_SUBSTRING_START_FROM_END": "rêza bınêne herfa # peyêne ra bıgê", - "TEXT_GET_SUBSTRING_END_FROM_START": "heta herfa #", - "TEXT_GET_SUBSTRING_END_FROM_END": "heta herfa # peyêne", - "TEXT_GET_SUBSTRING_END_LAST": "heta herfa peyêne", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "HERFANÊ GIRDANA", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "Herfanê werdiyana", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Ser herf gırd", - "TEXT_PRINT_TITLE": "%1 çap", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Seba yew numreya karber persiyê", - "TEXT_PROMPT_TOOLTIP_TEXT": "Seba tay metinan karberi persiyê", - "TEXT_COUNT_MESSAGE0": "%1 miyan de %2 bımare", - "TEXT_REPLACE_MESSAGE0": "%1 heruna ra zerrey %3 zerrey %2 ya bıvurne", - "TEXT_REVERSE_MESSAGE0": "karakteranê %1 weçarne", - "LISTS_CREATE_EMPTY_TITLE": "lista venge vıraze", - "LISTS_CREATE_WITH_INPUT_WITH": "Liste ya vıraz", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Yew işaret liste ke.", - "LISTS_LENGTH_TITLE": "dergiya %1", - "LISTS_LENGTH_TOOLTIP": "Derganiya yu lister dano.", - "LISTS_ISEMPTY_TITLE": "%1 vengo", - "LISTS_ISEMPTY_TOOLTIP": "Eger kı lista venga se raşt keno çerğ", - "LISTS_INLIST": "lista de", - "LISTS_INDEX_OF_FIRST": "vıraştışê işaretê verêni bıvêne", - "LISTS_INDEX_OF_LAST": "vıraştışê nuşteyê verêni bıvêne", - "LISTS_GET_INDEX_GET": "bıgê", - "LISTS_GET_INDEX_GET_REMOVE": "Bıgi u wedarne", - "LISTS_GET_INDEX_REMOVE": "wedare", - "LISTS_GET_INDEX_FROM_END": "# peyniye ra", - "LISTS_GET_INDEX_FIRST": "verên", - "LISTS_GET_INDEX_LAST": "peyên", - "LISTS_GET_INDEX_RANDOM": "raştameye", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 objeyo sıfteyên o", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 objeyo peyên o", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Lista de obcey sıfteyıni tadano", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Lista de obcey peyêni tadano", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Lista de obcey raşt ameyayi tadano", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Lista de obcey sıfteyıni wedareno", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Lista de obcey peyêni wedareno", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Lista de obcey raşt ameyayi wedareno", - "LISTS_SET_INDEX_SET": "ca ke", - "LISTS_SET_INDEX_INSERT": "De fi", - "LISTS_SET_INDEX_INPUT_TO": "zey", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Lista de obcey sıfteyıni eyar keno", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Lista de obcey peyêni eyar keno", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Lista de obcey raşt ameyayi eyar keno", - "LISTS_GET_SUBLIST_START_FROM_START": "lista # ra lista bınêne bıgêrê", - "LISTS_GET_SUBLIST_START_FIRST": "verênde lista bınêne bıgêrê", - "LISTS_GET_SUBLIST_END_FROM_START": "#'ya", - "LISTS_GET_SUBLIST_END_FROM_END": "Peyni # ra hetana", - "LISTS_GET_SUBLIST_END_LAST": "Hetana pey", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "%1 %2 %3 weçine", - "LISTS_SORT_TOOLTIP": "Kopyay yew lista rêz kerê", - "LISTS_SORT_ORDER_ASCENDING": "zeydıyen", - "LISTS_SORT_ORDER_DESCENDING": "Kemeyen", - "LISTS_SORT_TYPE_NUMERIC": "Amoriyal", - "LISTS_SORT_TYPE_TEXT": "Alfabetik", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetik, nezeri mekerên", - "LISTS_SPLIT_LIST_FROM_TEXT": "metini ra lista bıkerê", - "LISTS_SPLIT_TEXT_FROM_LIST": "Lista ra metin bıkerê", - "LISTS_SPLIT_WITH_DELIMITER": "Hududoxi ya", - "LISTS_REVERSE_MESSAGE0": "%1 dimlaşt kerê", - "LISTS_REVERSE_TOOLTIP": "Yew kopyaya yew lista dimlaşt kerê.", - "VARIABLES_GET_TOOLTIP": "Ercê nê vurnayoği tadano", - "VARIABLES_GET_CREATE_SET": "'%1 bınuse' vıraze", - "VARIABLES_SET": "%1 ra %2 rê eyar kerê", - "VARIABLES_SET_CREATE_GET": "'%1 bıwane' vıraze", - "PROCEDURES_DEFNORETURN_TITLE": "rê", - "PROCEDURES_DEFNORETURN_PROCEDURE": "Çıyê bık", - "PROCEDURES_BEFORE_PARAMS": "ebe:", - "PROCEDURES_CALL_BEFORE_PARAMS": "ebe:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Yew fonksiyono çap nêdate vırazeno", - "PROCEDURES_DEFNORETURN_COMMENT": "Nê fonksiyoni beyan ke...", - "PROCEDURES_DEFRETURN_RETURN": "peyser biya", - "PROCEDURES_DEFRETURN_TOOLTIP": "Yew fonksiyono çap daye vırazeno", - "PROCEDURES_ALLOW_STATEMENTS": "ifade rê mısade bıde", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Tembe: Nê fonksiyoni de parametreyê dıleti estê.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_MUTATORCONTAINER_TITLE": "cıkewtışi", - "PROCEDURES_MUTATORARG_TITLE": "namey cıkewtışi:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Funksiyoni rê yew cıkewtış ilawe ke.", - "PROCEDURES_CREATE_DO": "'%1' vıraze", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Çiyê vace...", - "WORKSPACE_ARIA_LABEL": "Blockly Caygurenayışi", - "DIALOG_OK": "TEMAM", - "DIALOG_CANCEL": "Bıtexelne" -} +{ + "@metadata": { + "authors": [ + "1917 Ekim Devrimi", + "Gırd", + "Kumkumuk", + "Marmase", + "Mirzali", + "Orbot707" + ] + }, + "VARIABLES_DEFAULT_NAME": "unsur", + "UNNAMED_KEY": "bêname", + "TODAY": "Ewro", + "DUPLICATE_BLOCK": "Zewnc", + "ADD_COMMENT": "Tefsir cı ke", + "REMOVE_COMMENT": "Tefsiri Wedare", + "DUPLICATE_COMMENT": "Mışewreyo zewnc", + "EXTERNAL_INPUTS": "Cıkewtışê xarıciy", + "INLINE_INPUTS": "Cıkerdışê xomiyani", + "DELETE_BLOCK": "Bloki bestere", + "DELETE_X_BLOCKS": "%1 blokan bestere", + "DELETE_ALL_BLOCKS": "Pêro %1 bloki besteriyê?", + "CLEAN_UP": "Blokan pak ke", + "COLLAPSE_BLOCK": "Bloki teng ke", + "COLLAPSE_ALL": "Blokan teng ke", + "EXPAND_BLOCK": "Bloki hera ke", + "EXPAND_ALL": "Blokan hera ke", + "DISABLE_BLOCK": "Çengi devre ra vec", + "ENABLE_BLOCK": "Bloki feal ke", + "HELP": "Peşti", + "UNDO": "Peyser bıgê", + "REDO": "Newe ke", + "CHANGE_VALUE_TITLE": "Erci bıvurne:", + "RENAME_VARIABLE": "Vuriyayey fına name ke...", + "RENAME_VARIABLE_TITLE": "Pêro vırnayışê '%1' reyna name ke:", + "NEW_VARIABLE": "Vuriyayeyo bıvıraz...", + "NEW_STRING_VARIABLE": "Vurriyayoğê rêze vıraze...", + "NEW_NUMBER_VARIABLE": "Vurriyayoğê amari vıraze...", + "NEW_COLOUR_VARIABLE": "Vurriyayoğê rengi vıraze...", + "NEW_VARIABLE_TYPE_TITLE": "Tewrê vurriyayoğê neweyi:", + "NEW_VARIABLE_TITLE": "Tewrê vurriyayoğê neweyi:", + "VARIABLE_ALREADY_EXISTS": "Yew vırnayış be namey '%1' xora est.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Vurnaye be nameyê '%1' ra be babetê bini ra esto: '%2'", + "DELETE_VARIABLE_CONFIRMATION": "%1 ke vırnayışê '%2'i gırweneno, besteriyo?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Vurniyaye '%1' nêşeno besteriyo, çıke parçeyê şınasnayışiyê fonksiyonê '%2'yo", + "DELETE_VARIABLE": "Şıma vırnaoğê '%1'i besterê", + "COLOUR_PICKER_HELPURL": "https://diq.wikipedia.org/wiki/Reng", + "COLOUR_PICKER_TOOLTIP": "Şıma palet ra yew reng weçinê.", + "COLOUR_RANDOM_TITLE": "rengo rastameye", + "COLOUR_RANDOM_TOOLTIP": "Tesadufi yu ren bıweçin", + "COLOUR_RGB_TITLE": "komponentên rengan", + "COLOUR_RGB_RED": "sur", + "COLOUR_RGB_GREEN": "kıho", + "COLOUR_RGB_BLUE": "kewe", + "COLOUR_RGB_TOOLTIP": "Şıma renganê sûr, aşıl u kohoy ra rengê do spesifik vırazê. Gani ê pêro 0 u 100 miyan de bıbê.", + "COLOUR_BLEND_TITLE": "tewde", + "COLOUR_BLEND_COLOUR1": "reng 1", + "COLOUR_BLEND_COLOUR2": "reng 2", + "COLOUR_BLEND_RATIO": "nısbet", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 fıni tekrar ke", + "CONTROLS_REPEAT_INPUT_DO": "bıke", + "CONTROLS_REPEAT_TOOLTIP": "Şıma tayêna reyi akerdışi kerê.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Tekrar kerdış de", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "hend tekrar ke", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Yew erc raşto se yu beyanat bıd.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Yew erc xırabo se tay beyanati bıd", + "CONTROLS_FOR_TITLE": "Pê amarêno %1 %2 ra %3 rê , herg gam de %4 vurnayışi", + "CONTROLS_FOREACH_TITLE": "Lista %2 de her item %1 rê", + "CONTROLS_FOREACH_TOOLTIP": "Yew lista de her item rê, varyansê '%1' itemi rê vırazê, u dıma tayê akerdışi (beyani) bıdê", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Çerxen ra vec", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "Gama bin da çerxeni ra dewam ke", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Öujtewada çerxeni ra bıvıci", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Diqat: No bloke şeno teyna yew çerxiyayış miyan de bıgırweyo.", + "CONTROLS_IF_TOOLTIP_1": "Eger yew vaye raşto, o taw şıma tayê akerdışi kerê.", + "CONTROLS_IF_MSG_IF": "eke", + "CONTROLS_IF_MSG_ELSEIF": "eke nêyo", + "CONTROLS_IF_MSG_ELSE": "eke çıniyo", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Bloq da if'i rê yu şert dekerê de.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Debiyaye dı erci zey pêyêse ercê \"True\" dane.", + "LOGIC_OPERATION_TOOLTIP_AND": "Eger her dı cıkewtışi zi raştê, şıma ageyrê.", + "LOGIC_OPERATION_AND": "û", + "LOGIC_OPERATION_OR": "ya zi", + "LOGIC_NEGATE_TITLE": "%1 niyo", + "LOGIC_BOOLEAN_TRUE": "raşt", + "LOGIC_BOOLEAN_FALSE": "ğelet", + "LOGIC_BOOLEAN_TOOLTIP": "Raşt yana çep erc dano", + "LOGIC_NULL": "veng", + "LOGIC_NULL_TOOLTIP": "Veng çarneno ra.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "eke raşto", + "LOGIC_TERNARY_IF_FALSE": "eke ğeleto", + "LOGIC_TERNARY_TOOLTIP": "Şerta'test'i test keno. Eger ke şert raşta se erca 'raşt'i çarneno, çepo se erca 'çep' çarneno.", + "MATH_NUMBER_HELPURL": "https://diq.wikipedia.org/wiki/Numre", + "MATH_NUMBER_TOOLTIP": "Yew numre.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Aritmetik", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Arêdayışê dı amara tadê", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ferqê dı amara tadê", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Reyina dı amara tadê", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Letey iya dı amara tadê", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "karekok", + "MATH_SINGLE_TOOLTIP_ROOT": "Karerêçê yew amarer tadê", + "MATH_SINGLE_OP_ABSOLUTE": "mutlaq", + "MATH_SINGLE_TOOLTIP_ABS": "Ercê mutlaqê yew amarer tadê", + "MATH_SINGLE_TOOLTIP_NEG": "Nêrazibiyena yew amari açarne.", + "MATH_SINGLE_TOOLTIP_LN": "Tebi algoritmaya yew amarer tadê", + "MATH_SINGLE_TOOLTIP_LOG10": "Logaritmay 10i yew amari rê peyser tadê", + "MATH_SINGLE_TOOLTIP_EXP": "E quwetê yew amar tadano.", + "MATH_SINGLE_TOOLTIP_POW10": "Quweta yew amariya 10ıne tade.", + "MATH_TRIG_HELPURL": "https://diq.wikipedia.org/wiki/Fonksiyonê_trigonometriye", + "MATH_TRIG_TOOLTIP_SIN": "Sinusi yew derece tadê (radyan niyo)", + "MATH_TRIG_TOOLTIP_COS": "Derecey yew kosinusi tadê (radyan niyo)", + "MATH_TRIG_TOOLTIP_TAN": "Tanjantê yew derecey tadê (radyan niyo)", + "MATH_TRIG_TOOLTIP_ASIN": "Arksinusê yew amari açarne.", + "MATH_TRIG_TOOLTIP_ACOS": "Arkkosinusê yew amari açarne.", + "MATH_TRIG_TOOLTIP_ATAN": "Arktangensê yew amari açarne.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Sabitanê wertağan ra yew açarne: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (bêpeyniye).", + "MATH_IS_EVEN": "zewnco", + "MATH_IS_ODD": "kıto", + "MATH_IS_PRIME": "bıngehên", + "MATH_IS_WHOLE": "tamo", + "MATH_IS_POSITIVE": "pozitifo", + "MATH_IS_NEGATIVE": "negatifo", + "MATH_IS_DIVISIBLE_BY": "Leteyêno", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "%2, keno %1 vurneno", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Yu amorer loğê cêri yana cori ke", + "MATH_ROUND_OPERATOR_ROUND": "gılor ke", + "MATH_ROUND_OPERATOR_ROUNDUP": "Loğê cori ke", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "Loğê cêri ke", + "MATH_ONLIST_OPERATOR_SUM": "koma liste", + "MATH_ONLIST_OPERATOR_MIN": "Tewr qıcê lista", + "MATH_ONLIST_TOOLTIP_MIN": "Lista de tewr qıckek amar tadê", + "MATH_ONLIST_OPERATOR_MAX": "Tewr gırdê lista", + "MATH_ONLIST_TOOLTIP_MAX": "Lista de amara tewr qıckeke tadê", + "MATH_ONLIST_OPERATOR_AVERAGE": "Averacê lista", + "MATH_ONLIST_OPERATOR_MEDIAN": "Wertey lista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Lista ra amara werti tadê", + "MATH_ONLIST_OPERATOR_MODE": "listey modi", + "MATH_ONLIST_OPERATOR_STD_DEV": "Standart ferqıziya lista", + "MATH_ONLIST_OPERATOR_RANDOM": "Raştamaye objeya lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Liste ra yew elemento rastameye açarne.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "%1 ÷ %2 ra menden", + "MATH_MODULO_TOOLTIP": "Mendeyan ra teqsimkerdışê dı amaran açarne.", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "Raştamaye nimande amor", + "MATH_ATAN2_HELPURL": "https://diq.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2, X:%1 Y:%2", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Yu herfa, satır yana çekuya metini", + "TEXT_JOIN_TITLE_CREATEWITH": "ya metin vıraz", + "TEXT_CREATE_JOIN_TITLE_JOIN": "gıre de", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Yew işaret nuşteyi ke.", + "TEXT_APPEND_TITLE": "rê %1 Metin dek %2", + "TEXT_LENGTH_TITLE": "dergiya %1", + "TEXT_ISEMPTY_TITLE": "%1 vengo", + "TEXT_INDEXOF_TITLE": "metın de %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "vıraştışê nuşteyê verêni bıvêne", + "TEXT_INDEXOF_OPERATOR_LAST": "vıraştışê nuşteyê verêni bıvêne", + "TEXT_CHARAT_TITLE": "metın de %1 %2", + "TEXT_CHARAT_FROM_START": "Herfa # bıgi", + "TEXT_CHARAT_FROM_END": "herfa # peyêne ra bıgê", + "TEXT_CHARAT_FIRST": "Herfa sıfti bıgi", + "TEXT_CHARAT_LAST": "herfa peyêne bıgê", + "TEXT_CHARAT_RANDOM": "Raştamaye yu herf bıgi", + "TEXT_CHARAT_TOOLTIP": "Şınasnaye pozisyon de yu herfer çerğ keno", + "TEXT_GET_SUBSTRING_TOOLTIP": "Tay letey metini çerğ keno", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "metın de", + "TEXT_GET_SUBSTRING_START_FROM_START": "rêza bınêne herfa # ra bıgê", + "TEXT_GET_SUBSTRING_START_FROM_END": "rêza bınêne herfa # peyêne ra bıgê", + "TEXT_GET_SUBSTRING_END_FROM_START": "heta herfa #", + "TEXT_GET_SUBSTRING_END_FROM_END": "heta herfa # peyêne", + "TEXT_GET_SUBSTRING_END_LAST": "heta herfa peyêne", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "HERFANÊ GIRDANA", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "Herfanê werdiyana", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Ser herf gırd", + "TEXT_PRINT_TITLE": "%1 çap", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Seba yew numreya karber persiyê", + "TEXT_PROMPT_TOOLTIP_TEXT": "Seba tay metinan karberi persiyê", + "TEXT_COUNT_MESSAGE0": "%1 miyan de %2 bımare", + "TEXT_REPLACE_MESSAGE0": "%1 heruna ra zerrey %3 zerrey %2 ya bıvurne", + "TEXT_REVERSE_MESSAGE0": "karakteranê %1 weçarne", + "LISTS_CREATE_EMPTY_TITLE": "lista venge vıraze", + "LISTS_CREATE_WITH_INPUT_WITH": "Liste ya vıraz", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Yew işaret liste ke.", + "LISTS_LENGTH_TITLE": "dergiya %1", + "LISTS_LENGTH_TOOLTIP": "Derganiya yu lister dano.", + "LISTS_ISEMPTY_TITLE": "%1 vengo", + "LISTS_ISEMPTY_TOOLTIP": "Eger kı lista venga se raşt keno çerğ", + "LISTS_INLIST": "lista de", + "LISTS_INDEX_OF_FIRST": "vıraştışê işaretê verêni bıvêne", + "LISTS_INDEX_OF_LAST": "vıraştışê nuşteyê verêni bıvêne", + "LISTS_GET_INDEX_GET": "bıgê", + "LISTS_GET_INDEX_GET_REMOVE": "Bıgi u wedarne", + "LISTS_GET_INDEX_REMOVE": "wedare", + "LISTS_GET_INDEX_FROM_END": "# peyniye ra", + "LISTS_GET_INDEX_FIRST": "verên", + "LISTS_GET_INDEX_LAST": "peyên", + "LISTS_GET_INDEX_RANDOM": "raştameye", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 objeyo sıfteyên o", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 objeyo peyên o", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Lista de obcey sıfteyıni tadano", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Lista de obcey peyêni tadano", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Lista de obcey raşt ameyayi tadano", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Lista de obcey sıfteyıni wedareno", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Lista de obcey peyêni wedareno", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Lista de obcey raşt ameyayi wedareno", + "LISTS_SET_INDEX_SET": "ca ke", + "LISTS_SET_INDEX_INSERT": "De fi", + "LISTS_SET_INDEX_INPUT_TO": "zey", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Lista de obcey sıfteyıni eyar keno", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Lista de obcey peyêni eyar keno", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Lista de obcey raşt ameyayi eyar keno", + "LISTS_GET_SUBLIST_START_FROM_START": "lista # ra lista bınêne bıgêrê", + "LISTS_GET_SUBLIST_START_FIRST": "verênde lista bınêne bıgêrê", + "LISTS_GET_SUBLIST_END_FROM_START": "#'ya", + "LISTS_GET_SUBLIST_END_FROM_END": "Peyni # ra hetana", + "LISTS_GET_SUBLIST_END_LAST": "Hetana pey", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "%1 %2 %3 weçine", + "LISTS_SORT_TOOLTIP": "Kopyay yew lista rêz kerê", + "LISTS_SORT_ORDER_ASCENDING": "zeydıyen", + "LISTS_SORT_ORDER_DESCENDING": "Kemeyen", + "LISTS_SORT_TYPE_NUMERIC": "Amoriyal", + "LISTS_SORT_TYPE_TEXT": "Alfabetik", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetik, nezeri mekerên", + "LISTS_SPLIT_LIST_FROM_TEXT": "metini ra lista bıkerê", + "LISTS_SPLIT_TEXT_FROM_LIST": "Lista ra metin bıkerê", + "LISTS_SPLIT_WITH_DELIMITER": "Hududoxi ya", + "LISTS_REVERSE_MESSAGE0": "%1 dimlaşt kerê", + "LISTS_REVERSE_TOOLTIP": "Yew kopyaya yew lista dimlaşt kerê.", + "VARIABLES_GET_TOOLTIP": "Ercê nê vurnayoği tadano", + "VARIABLES_GET_CREATE_SET": "'%1 bınuse' vıraze", + "VARIABLES_SET": "%1 ra %2 rê eyar kerê", + "VARIABLES_SET_CREATE_GET": "'%1 bıwane' vıraze", + "PROCEDURES_DEFNORETURN_TITLE": "rê", + "PROCEDURES_DEFNORETURN_PROCEDURE": "Çıyê bık", + "PROCEDURES_BEFORE_PARAMS": "ebe:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ebe:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Yew fonksiyono çap nêdate vırazeno", + "PROCEDURES_DEFNORETURN_COMMENT": "Nê fonksiyoni beyan ke...", + "PROCEDURES_DEFRETURN_RETURN": "peyser biya", + "PROCEDURES_DEFRETURN_TOOLTIP": "Yew fonksiyono çap daye vırazeno", + "PROCEDURES_ALLOW_STATEMENTS": "ifade rê mısade bıde", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Tembe: Nê fonksiyoni de parametreyê dıleti estê.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_MUTATORCONTAINER_TITLE": "cıkewtışi", + "PROCEDURES_MUTATORARG_TITLE": "namey cıkewtışi:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Funksiyoni rê yew cıkewtış ilawe ke.", + "PROCEDURES_CREATE_DO": "'%1' vıraze", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Çiyê vace...", + "WORKSPACE_ARIA_LABEL": "Blockly Caygurenayışi", + "DIALOG_OK": "TEMAM", + "DIALOG_CANCEL": "Bıtexelne" +} diff --git a/msg/json/dty.json b/msg/json/dty.json index 92518f6a86b..d7cc1f76331 100644 --- a/msg/json/dty.json +++ b/msg/json/dty.json @@ -1,99 +1,99 @@ -{ - "@metadata": { - "authors": [ - "Nirajan pant", - "जनक राज भट्ट", - "राम प्रसाद जोशी" - ] - }, - "VARIABLES_DEFAULT_NAME": "वस्तु", - "TODAY": "आज", - "DUPLICATE_BLOCK": "कपी गर", - "ADD_COMMENT": "टिप्पणी थप्दे", - "REMOVE_COMMENT": "टिप्पणी हटाउन्या", - "DUPLICATE_COMMENT": "हूबहू टिप्पणी", - "EXTERNAL_INPUTS": "भाइरका इन्पुटहरू", - "INLINE_INPUTS": "इनलाइन इन्पुटहरू", - "DELETE_BLOCK": "ब्लक हटाउन्या", - "DELETE_X_BLOCKS": " %1 ब्लकहरू हटाउन्या", - "DELETE_ALL_BLOCKS": "सबै %1 ब्लकनलाई हटाउन्या ?", - "CLEAN_UP": "ब्लकनलाई हटाओ", - "COLLAPSE_BLOCK": "ब्लक भत्का", - "COLLAPSE_ALL": "ब्लक भत्काओ", - "EXPAND_BLOCK": "ब्लकनलाई फैलाओ", - "EXPAND_ALL": "ब्लकनलाई फैलाओ", - "DISABLE_BLOCK": "ब्लकलाई निश्क्रिय पाड्डे", - "ENABLE_BLOCK": "ब्लकलाई सक्रिय पाड्डे", - "HELP": "सहायता", - "UNDO": "रद्द गर्न्या", - "REDO": "पुन: कायम गद्दे", - "CHANGE_VALUE_TITLE": "मान बदल", - "RENAME_VARIABLE": "भेरिबललाई पुनः नामांकन गर...", - "RENAME_VARIABLE_TITLE": "सबै भेरिबलनका %1 नाम बदल्न्या:", - "NEW_VARIABLE": "भेरिएवल बना:", - "NEW_VARIABLE_TITLE": "नयाँ भेरिबलको नाम:", - "VARIABLE_ALREADY_EXISTS": "'%1' नाउँ अरियाऽ भेरिएबल पैली बठेइ छ।", - "DELETE_VARIABLE_CONFIRMATION": "'%2' भेरिएबला %1 प्रयोग मेट्ट्या?", - "DELETE_VARIABLE": "'%1' भेरिएबल मेट:", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "पैलेट बाट एक रंग चुन ।", - "COLOUR_RANDOM_TITLE": "जुनसुकै रङ्ग", - "COLOUR_RANDOM_TOOLTIP": "रैन्डम्ली एक रंग चयन गर ।", - "COLOUR_RGB_TITLE": "यै रङ्गको", - "COLOUR_RGB_RED": "रातो", - "COLOUR_RGB_GREEN": "हरियो", - "COLOUR_RGB_BLUE": "निलो", - "COLOUR_RGB_TOOLTIP": "रातो, हरियो और नीलोको निर्दिष्ट मात्राकी साथ एक रंग बनाओ । सबै मान ० देखि १०० का बीच हुनु पडन्छ ।", - "COLOUR_BLEND_TITLE": "मिश्रण गर", - "COLOUR_BLEND_COLOUR1": "रंग 1", - "COLOUR_BLEND_COLOUR2": "रंग 2", - "COLOUR_BLEND_RATIO": "अनुपात", - "COLOUR_BLEND_TOOLTIP": "दियाका अनुपात (0.0 - 1.0) का साथ दुई रंगहरूको मिश्रण गरन्छ ।", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/Color", - "CONTROLS_REPEAT_TITLE": "%1 पल्ट दोसराओ", - "CONTROLS_REPEAT_INPUT_DO": "डू", - "CONTROLS_REPEAT_TOOLTIP": "क्यै स्टेट्मन्ट कैयों पल्ट चलाओ ।", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "दोहराओ जब की", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "दोहराओ जब तलक", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "जब तक मान फॉल्स छ, तब तक क्यै स्टेट्मेंट्स चलाओ ।", - "CONTROLS_FOR_TOOLTIP": "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.", - "CONTROLS_FOR_TITLE": "गन्ती गर %1 देखी %2 %3 %4 सम्म", - "CONTROLS_FOREACH_TITLE": "%2 सूचीमी भयाः प्रत्येक आइटम %1 खिलाइ", - "CONTROLS_FOREACH_TOOLTIP": "सूचीको प्रत्येक आइटमको लागी, आइटममी चरको मान '%1' राखौं और पाछा क्यै कथन लेख ।", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "लूप बाट भाइर निकलौं", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "लूपको अर्को आईटरेशन जारी राख", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "भीत्री लूप बाट बाहिर निस्कने", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "बचेका लूपलाई छोड, और अर्को आईटरेशन जारी राख ।", - "CONTROLS_FLOW_STATEMENTS_WARNING": "सावधान: यो ब्लक केवल लूप भित्रमात्र प्रयोग गद्द सकिन्छ ।", - "CONTROLS_IF_TOOLTIP_1": "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।", - "CONTROLS_IF_TOOLTIP_2": "यदि एक मान सत्य छ भण्या कथनहरूको प्रथम खण्ड बणाओ । अन्यथा कथनहरूको अर्को भाग निर्मित गर ।", - "CONTROLS_IF_TOOLTIP_3": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.", - "CONTROLS_IF_TOOLTIP_4": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.", - "CONTROLS_IF_MSG_IF": "इफ", - "CONTROLS_IF_MSG_ELSEIF": "एल्स इफ", - "CONTROLS_IF_MSG_ELSE": "एल्स", - "CONTROLS_IF_IF_TOOLTIP": "Add, remove, or reorder sections to reconfigure this if block.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "यदि ब्लकमा एक शर्त जोडौं ।", - "CONTROLS_IF_ELSE_TOOLTIP": "Add a final, catch-all condition to the if block.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "यदी दुवै इनपुट एक अर्काका बराबर छन् भण्या टु रिटर्न गर ।", - "LOGIC_COMPARE_TOOLTIP_NEQ": "यदी दुवै इनपुट एक अर्काको बराबर नाइथिन् भणया टु रिटर्न गर ।", - "LOGIC_COMPARE_TOOLTIP_LT": "पैल्लो इनपुट दोसरा इनपुट है नानो भया ट्रू फिर्ता अर:।", - "LOGIC_COMPARE_TOOLTIP_LTE": "पैल्लो इनपुट दोसरा इनपुट है नानो या उइ सित बराबर भया ट्रू फिर्ता अर:।", - "LOGIC_COMPARE_TOOLTIP_GT": "पैल्लो इनपुट दोसरा इनपुट है ठुलो भया ट्रू फिर्ता अर:।", - "LOGIC_COMPARE_TOOLTIP_GTE": "पैल्लो इनपुट दोसरा इनपुट है ठुलो या उइ सित बराबर भया ट्रू फिर्ता अर:।", - "LOGIC_OPERATION_TOOLTIP_AND": "दुएइ इनपुट ट्रू भया ट्रू फिर्ता अर:।", - "LOGIC_OPERATION_AND": "रे", - "LOGIC_OPERATION_TOOLTIP_OR": "कम्तीमी लै १ इनपुट सत्य भयाले सत्य फिर्ता अर।", - "LOGIC_OPERATION_OR": "या", - "LOGIC_NEGATE_TOOLTIP": "इनपुट असत्य भयाले सन्य फिर्ता अरन्छ। इनपुट सत्य भयाले असत्य फिर्ता अरन्छ।", - "LOGIC_BOOLEAN_TRUE": "सत्य", - "LOGIC_BOOLEAN_FALSE": "असत्य", - "LOGIC_BOOLEAN_TOOLTIP": "सत्य या असत्य फिर्ता अरन्छ।", - "LOGIC_NULL": "शू्य", - "LOGIC_NULL_TOOLTIP": "शून्य फिर्ता अरन्छ।", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "केयि भँण...", - "DIALOG_OK": "हुन्छ", - "DIALOG_CANCEL": "खारेजी" -} +{ + "@metadata": { + "authors": [ + "Nirajan pant", + "जनक राज भट्ट", + "राम प्रसाद जोशी" + ] + }, + "VARIABLES_DEFAULT_NAME": "वस्तु", + "TODAY": "आज", + "DUPLICATE_BLOCK": "कपी गर", + "ADD_COMMENT": "टिप्पणी थप्दे", + "REMOVE_COMMENT": "टिप्पणी हटाउन्या", + "DUPLICATE_COMMENT": "हूबहू टिप्पणी", + "EXTERNAL_INPUTS": "भाइरका इन्पुटहरू", + "INLINE_INPUTS": "इनलाइन इन्पुटहरू", + "DELETE_BLOCK": "ब्लक हटाउन्या", + "DELETE_X_BLOCKS": " %1 ब्लकहरू हटाउन्या", + "DELETE_ALL_BLOCKS": "सबै %1 ब्लकनलाई हटाउन्या ?", + "CLEAN_UP": "ब्लकनलाई हटाओ", + "COLLAPSE_BLOCK": "ब्लक भत्का", + "COLLAPSE_ALL": "ब्लक भत्काओ", + "EXPAND_BLOCK": "ब्लकनलाई फैलाओ", + "EXPAND_ALL": "ब्लकनलाई फैलाओ", + "DISABLE_BLOCK": "ब्लकलाई निश्क्रिय पाड्डे", + "ENABLE_BLOCK": "ब्लकलाई सक्रिय पाड्डे", + "HELP": "सहायता", + "UNDO": "रद्द गर्न्या", + "REDO": "पुन: कायम गद्दे", + "CHANGE_VALUE_TITLE": "मान बदल", + "RENAME_VARIABLE": "भेरिबललाई पुनः नामांकन गर...", + "RENAME_VARIABLE_TITLE": "सबै भेरिबलनका %1 नाम बदल्न्या:", + "NEW_VARIABLE": "भेरिएवल बना:", + "NEW_VARIABLE_TITLE": "नयाँ भेरिबलको नाम:", + "VARIABLE_ALREADY_EXISTS": "'%1' नाउँ अरियाऽ भेरिएबल पैली बठेइ छ।", + "DELETE_VARIABLE_CONFIRMATION": "'%2' भेरिएबला %1 प्रयोग मेट्ट्या?", + "DELETE_VARIABLE": "'%1' भेरिएबल मेट:", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "पैलेट बाट एक रंग चुन ।", + "COLOUR_RANDOM_TITLE": "जुनसुकै रङ्ग", + "COLOUR_RANDOM_TOOLTIP": "रैन्डम्ली एक रंग चयन गर ।", + "COLOUR_RGB_TITLE": "यै रङ्गको", + "COLOUR_RGB_RED": "रातो", + "COLOUR_RGB_GREEN": "हरियो", + "COLOUR_RGB_BLUE": "निलो", + "COLOUR_RGB_TOOLTIP": "रातो, हरियो और नीलोको निर्दिष्ट मात्राकी साथ एक रंग बनाओ । सबै मान ० देखि १०० का बीच हुनु पडन्छ ।", + "COLOUR_BLEND_TITLE": "मिश्रण गर", + "COLOUR_BLEND_COLOUR1": "रंग 1", + "COLOUR_BLEND_COLOUR2": "रंग 2", + "COLOUR_BLEND_RATIO": "अनुपात", + "COLOUR_BLEND_TOOLTIP": "दियाका अनुपात (0.0 - 1.0) का साथ दुई रंगहरूको मिश्रण गरन्छ ।", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/Color", + "CONTROLS_REPEAT_TITLE": "%1 पल्ट दोसराओ", + "CONTROLS_REPEAT_INPUT_DO": "डू", + "CONTROLS_REPEAT_TOOLTIP": "क्यै स्टेट्मन्ट कैयों पल्ट चलाओ ।", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "दोहराओ जब की", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "दोहराओ जब तलक", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "जब तक मान फॉल्स छ, तब तक क्यै स्टेट्मेंट्स चलाओ ।", + "CONTROLS_FOR_TOOLTIP": "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.", + "CONTROLS_FOR_TITLE": "गन्ती गर %1 देखी %2 %3 %4 सम्म", + "CONTROLS_FOREACH_TITLE": "%2 सूचीमी भयाः प्रत्येक आइटम %1 खिलाइ", + "CONTROLS_FOREACH_TOOLTIP": "सूचीको प्रत्येक आइटमको लागी, आइटममी चरको मान '%1' राखौं और पाछा क्यै कथन लेख ।", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "लूप बाट भाइर निकलौं", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "लूपको अर्को आईटरेशन जारी राख", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "भीत्री लूप बाट बाहिर निस्कने", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "बचेका लूपलाई छोड, और अर्को आईटरेशन जारी राख ।", + "CONTROLS_FLOW_STATEMENTS_WARNING": "सावधान: यो ब्लक केवल लूप भित्रमात्र प्रयोग गद्द सकिन्छ ।", + "CONTROLS_IF_TOOLTIP_1": "जब तलक मान सत्य छ, तब तलक क्यै स्टेट्मेंट चलाओ ।", + "CONTROLS_IF_TOOLTIP_2": "यदि एक मान सत्य छ भण्या कथनहरूको प्रथम खण्ड बणाओ । अन्यथा कथनहरूको अर्को भाग निर्मित गर ।", + "CONTROLS_IF_TOOLTIP_3": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.", + "CONTROLS_IF_TOOLTIP_4": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.", + "CONTROLS_IF_MSG_IF": "इफ", + "CONTROLS_IF_MSG_ELSEIF": "एल्स इफ", + "CONTROLS_IF_MSG_ELSE": "एल्स", + "CONTROLS_IF_IF_TOOLTIP": "Add, remove, or reorder sections to reconfigure this if block.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "यदि ब्लकमा एक शर्त जोडौं ।", + "CONTROLS_IF_ELSE_TOOLTIP": "Add a final, catch-all condition to the if block.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "यदी दुवै इनपुट एक अर्काका बराबर छन् भण्या टु रिटर्न गर ।", + "LOGIC_COMPARE_TOOLTIP_NEQ": "यदी दुवै इनपुट एक अर्काको बराबर नाइथिन् भणया टु रिटर्न गर ।", + "LOGIC_COMPARE_TOOLTIP_LT": "पैल्लो इनपुट दोसरा इनपुट है नानो भया ट्रू फिर्ता अर:।", + "LOGIC_COMPARE_TOOLTIP_LTE": "पैल्लो इनपुट दोसरा इनपुट है नानो या उइ सित बराबर भया ट्रू फिर्ता अर:।", + "LOGIC_COMPARE_TOOLTIP_GT": "पैल्लो इनपुट दोसरा इनपुट है ठुलो भया ट्रू फिर्ता अर:।", + "LOGIC_COMPARE_TOOLTIP_GTE": "पैल्लो इनपुट दोसरा इनपुट है ठुलो या उइ सित बराबर भया ट्रू फिर्ता अर:।", + "LOGIC_OPERATION_TOOLTIP_AND": "दुएइ इनपुट ट्रू भया ट्रू फिर्ता अर:।", + "LOGIC_OPERATION_AND": "रे", + "LOGIC_OPERATION_TOOLTIP_OR": "कम्तीमी लै १ इनपुट सत्य भयाले सत्य फिर्ता अर।", + "LOGIC_OPERATION_OR": "या", + "LOGIC_NEGATE_TOOLTIP": "इनपुट असत्य भयाले सन्य फिर्ता अरन्छ। इनपुट सत्य भयाले असत्य फिर्ता अरन्छ।", + "LOGIC_BOOLEAN_TRUE": "सत्य", + "LOGIC_BOOLEAN_FALSE": "असत्य", + "LOGIC_BOOLEAN_TOOLTIP": "सत्य या असत्य फिर्ता अरन्छ।", + "LOGIC_NULL": "शू्य", + "LOGIC_NULL_TOOLTIP": "शून्य फिर्ता अरन्छ।", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "केयि भँण...", + "DIALOG_OK": "हुन्छ", + "DIALOG_CANCEL": "खारेजी" +} diff --git a/msg/json/ee.json b/msg/json/ee.json index dbe546167c6..255b6a41d3d 100644 --- a/msg/json/ee.json +++ b/msg/json/ee.json @@ -1,161 +1,161 @@ -{ - "@metadata": { - "authors": [ - "Aguve", - "Apequm" - ] - }, - "VARIABLES_DEFAULT_NAME": "nu", - "TODAY": "Egbe", - "DUPLICATE_BLOCK": "Gbugbɔe Wɔ", - "ADD_COMMENT": "Ŋlɔ Numeɖeɖe", - "REMOVE_COMMENT": "Ɖe Numeɖeɖea Ɖa", - "DUPLICATE_COMMENT": "Kɔpi Numeɖeɖea", - "EXTERNAL_INPUTS": "Gotakpeɖeŋunuwo", - "INLINE_INPUTS": "Interdzikpeɖeŋuwo", - "DELETE_BLOCK": "Tutu Hatsotsoa", - "DELETE_X_BLOCKS": "Tutu Hatsotso %1", - "DELETE_ALL_BLOCKS": "Èdi be netutu nu %1 katã?", - "CLEAN_UP": "Tutu Nuawo", - "COLLAPSE_BLOCK": "Hatsotso Me Nuwo Nebu", - "COLLAPSE_ALL": "Hatsotsoawo Me Nuwo Nebu", - "EXPAND_BLOCK": "Hatsotsoa Me Nuwo Nedze", - "EXPAND_ALL": "Hatsotsoawo Me Nuwo Nedze", - "DISABLE_BLOCK": "Tsi Hatsotsoa", - "ENABLE_BLOCK": "Si Hatsotsoa", - "HELP": "Kpekpeɖeŋu", - "UNDO": "Gbugbɔe", - "REDO": "Trɔ Wɔe", - "CHANGE_VALUE_TITLE": "Trɔ nuŋlɔdzesiawo:", - "RENAME_VARIABLE": "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa...", - "RENAME_VARIABLE_TITLE": "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa '%1' yi:", - "NEW_VARIABLE": "Wɔ teaŋutrɔna...", - "NEW_STRING_VARIABLE": "Wɔ nya teaŋutrɔna...", - "NEW_NUMBER_VARIABLE": "Wɔ xexlẽdzesi teaŋutrɔna...", - "NEW_COLOUR_VARIABLE": "Wɔ amadede teaŋutrɔna...", - "NEW_VARIABLE_TYPE_TITLE": "Teaŋutrɔna ƒomevi yeye:", - "NEW_VARIABLE_TITLE": "Nuŋlɔdzesi tɔtrɔa yeye ƒe ŋkɔ:", - "VARIABLE_ALREADY_EXISTS": "Teaŋutrɔna si ŋkɔe nye '%1' li xoxo.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Teaŋutrɔna '%1' li xoxo eye wotsɔ ŋkɔ sia xoxo na bubu si nye: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Netutu %1 ŋkɔ si nètsɔ na teaŋutrɔna '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Mate ŋu atutu teaŋutrɔna '%1' o elabe ewɔ akpa aɖe le teaŋutrɔna '%2' me.", - "DELETE_VARIABLE": "Tutu teaŋutrɔna '%1'", - "COLOUR_PICKER_HELPURL": "https://ee.wikipedia.org/wiki/Amadede", - "COLOUR_PICKER_TOOLTIP": "Tia amadede ɖeka le amadedetiaƒea.", - "COLOUR_RANDOM_TITLE": "amadede aɖe ko", - "COLOUR_RANDOM_TOOLTIP": "Tia amadede aɖe ko.", - "COLOUR_RGB_TITLE": "de amae kple", - "COLOUR_RGB_RED": "dzĩ", - "COLOUR_RGB_GREEN": "gbemumu", - "COLOUR_RGB_BLUE": "blɔ", - "COLOUR_RGB_TOOLTIP": "tsaka", - "COLOUR_BLEND_TITLE": "tsaka", - "COLOUR_BLEND_COLOUR1": "amedede 1", - "COLOUR_BLEND_COLOUR2": "amadede 2", - "COLOUR_BLEND_RATIO": "agbɔsɔsɔ", - "COLOUR_BLEND_TOOLTIP": "Tsaka amadede eve kple agbɔsɔsɔ si nye (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://ee.wikipedia.org/wiki/Na_nogo", - "CONTROLS_REPEAT_TITLE": "Wɔe zi %1", - "CONTROLS_REPEAT_INPUT_DO": "wɔ", - "CONTROLS_REPEAT_TOOLTIP": "Gbugbɔ biabia aɖewo zi geɖe.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "gbugbɔ wɔe ne", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "gbugbɔ wɔe va se ɖe", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Ne nyatakaka dea, ke wɔ biabia aɖewo.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Ne nyatakaka dea, ke wɔ biabia aɖewo.", - "CONTROLS_FOR_TOOLTIP": "Xexlẽdzesi tɔtrɔ '%1' nenye xexlẽdzesi si dze egɔme kple esiwo kplɔe ɖo va se ɖe mamlɛtɔ dzi, nebu dometsotso si wofia kple nyatakaka suetɔ siwo wofia asii.", - "CONTROLS_FOR_TITLE": "Xlẽ %1 tso %2 yi %3 to %4 dzi", - "CONTROLS_FOREACH_TITLE": "nu sia nu natso %2 me ayi %1 me", - "CONTROLS_FOREACH_TOOLTIP": "Tia teaŋutrɔna '%1' na nuawo dometɔ ɖe sia ɖe si li, eye nàŋlɔ gbedeasi aɖe.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Nedo le wɔtiaɖenua me", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "neyi edzi kple wɔtiaɖenua si kplɔe ɖo", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Nedo le wɔtiaɖenua si me wòlea me.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Neto wɔtiaɖenu sia susɔea ta wòayi bubu dzi.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Nuxlɔ̃ame: Wɔtiaɖenu me ko woate ŋu azã ƒuƒoƒo sia le.", - "CONTROLS_IF_TOOLTIP_1": "Ne asime aɖe le eme la, ke taɖodzinya aɖewo neva eme.", - "CONTROLS_IF_TOOLTIP_2": "Ne asime aɖe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ne menye nenem o la, ke taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme.", - "CONTROLS_IF_TOOLTIP_3": "Ne asime gbãtɔe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Gake ne asime eveliae le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia boŋ neva eme.", - "CONTROLS_IF_TOOLTIP_4": "Ne asime gbãtɔ le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ke ne taɖodzinyawo ƒe ƒuƒoƒo evelia boŋue le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme. Ne taɖodzinya aɖeke mele eme o la,taɖodzinyawo ƒe ƒuƒoƒo mamlɛtɔ neva eme.", - "CONTROLS_IF_MSG_IF": "Ne", - "CONTROLS_IF_MSG_ELSEIF": "Ke boŋ ne", - "CONTROLS_IF_MSG_ELSE": "ke boŋ", - "CONTROLS_IF_IF_TOOLTIP": "Tsɔ kpee, ɖee le eme alo gbugbɔ akpawo ɖo nàtsɔ asi le ne ƒe ƒuƒoƒoa ŋu.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Tsɔ biabia aɖe kpe ne ƒuƒoƒo la.", - "CONTROLS_IF_ELSE_TOOLTIP": "Tsɔ lé wo katã ƒe ne ƒe ƒuƒoƒo kpe biabia mamlɛa.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Masɔmasɔ_(akɔntabubu)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo sɔ kple wo nɔewo.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo mesɔ kple wo nɔewo o.", - "LOGIC_COMPARE_TOOLTIP_LT": "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o alo sɔ kplii.", - "LOGIC_COMPARE_TOOLTIP_GT": "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia alo sɔ kplii.", - "LOGIC_OPERATION_TOOLTIP_AND": "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo nye nyateƒe.", - "LOGIC_OPERATION_AND": "eye", - "LOGIC_OPERATION_TOOLTIP_OR": "Ŋuɖoɖoa nenye nyateƒe ne nudeme ɖeka teti nye nyateƒe.", - "LOGIC_OPERATION_OR": "alo", - "LOGIC_NEGATE_TITLE": "menye %1", - "LOGIC_NEGATE_TOOLTIP": "Ŋuɖoɖoa nenye nyateƒe ne nudemea menye nyateƒe o. Ŋuɖoɖoa nenye aʋatso ne nudemea nye nyateƒe.", - "LOGIC_BOOLEAN_TRUE": "dedia", - "LOGIC_BOOLEAN_FALSE": "mademadea", - "LOGIC_BOOLEAN_TOOLTIP": "Nefia dedia alo mademadea.", - "LOGIC_NULL": "ɖeke o", - "LOGIC_NULL_TOOLTIP": "Mekpɔ ɖeke o.", - "LOGIC_TERNARY_CONDITION": "dodokpɔ", - "LOGIC_TERNARY_IF_TRUE": "nenye nyuitɔ", - "LOGIC_TERNARY_IF_FALSE": "nenye dedietɔ", - "LOGIC_TERNARY_TOOLTIP": "Kpɔ nu si dze le \"dodokpɔ\" me. Ne dediae dze la, tia \"ne dedia\"; ke ne manyomanyotɔe la, tia \"ne mademadea.\"", - "MATH_NUMBER_HELPURL": "https://ee.wikipedia.org/wiki/Xexlẽdzesi", - "MATH_NUMBER_TOOLTIP": "Xexlẽdzesi aɖe", - "MATH_ARITHMETIC_HELPURL": "https://ee.wikipedia.org/wiki/Xexlẽdzesibubu", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Bu xexlẽdzesi evea ƒoƒo ƒu ƒe akɔnta.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Bu xexlẽdzesi ɖeka ɖeɖe le evelia me ƒe akɔnta.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Bu xexlẽdzesi gbãtɔ teƒe evelia ƒe akɔnta.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Bu xexlẽdzesi ɖeka mama ɖe xexlẽdzesi evelia me ƒe akɔnta.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Na be xexlẽdzesi gbãtɔ nadzi eɖokui ɖe edzi zigbɔzi xexlẽdzesi evelia.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/dzidziɖedzi_eɖokui zigbɔzi eve", - "MATH_SINGLE_OP_ROOT": "eƒe teƒe eve", - "MATH_SINGLE_TOOLTIP_ROOT": "Xexlẽdzesia nedzi ɖe edzi teƒe eɖokui", - "MATH_SINGLE_OP_ABSOLUTE": "xexlẽ blibo", - "MATH_SINGLE_TOOLTIP_ABS": "Nena xexlẽdzesi aɖe nanye xexlẽ blibo.", - "MATH_SINGLE_TOOLTIP_NEG": "Nena xexlẽdzesi aɖe nanye xexlẽdzesi madenanekeo.", - "MATH_SINGLE_TOOLTIP_LN": "Xexlẽdzesia nedzi ɖe edzi eɖokui zigbzi e.", - "MATH_SINGLE_TOOLTIP_LOG10": "Nebu zigbɔzi neni 10-teƒe-10 awɔ xexlẽdzesia.", - "MATH_SINGLE_TOOLTIP_EXP": "Nebu e-teƒe-e zigbɔzi xexlẽdzesia.", - "MATH_SINGLE_TOOLTIP_POW10": " Nebu ewo-teƒe-ewo zigbɔzi xexlẽdzesia.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Nebu dzogɔe le digri me (menye radiã o).", - "MATH_IS_EVEN": "enye eve ƒomevi", - "MATH_IS_ODD": "enye etɔ̃ ƒomevi", - "MATH_IS_PRIME": " enye xexlẽme blibo", - "MATH_IS_WHOLE": "enye blibo", - "MATH_IS_POSITIVE": "enye xexlẽme ŋgɔgbeyitɔ", - "MATH_IS_NEGATIVE": "enye xexlẽme megbeyitɔ", - "MATH_IS_DIVISIBLE_BY": "woate ŋu amae ɖe", - "MATH_ONLIST_OPERATOR_MIN": "suetɔ le wo dome", - "MATH_ONLIST_TOOLTIP_MIN": "Neʋu suetɔ le nuwo dome.", - "MATH_ONLIST_OPERATOR_MAX": "gãtɔ le nuwo dome", - "MATH_ONLIST_TOOLTIP_MAX": "Neʋu xexlẽdzesi gãtɔ.", - "LISTS_ISEMPTY_TITLE": "%1 le ƒuƒlu", - "LISTS_GET_INDEX_REMOVE": "ɖee ɖa", - "LISTS_GET_INDEX_FROM_END": "# tso nuwuwu", - "LISTS_GET_INDEX_FIRST": "gbãtɔ", - "LISTS_GET_INDEX_LAST": "mamlɛtɔ", - "LISTS_GET_INDEX_RANDOM": "ɖe sia ɖe ko", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 nye nu gbãtɔ.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 nye nu mamlɛtɔ.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Aʋu nua le afi si wòle le nuwo dome.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Aʋu nu gbãtɔ.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Aʋu nu mamlɛtɔ.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Aʋu nu ɖe sia ɖe aɖe ko.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Aɖe nua ɖa eye wòaʋu nua le afi si wòle le nuawo dome.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Eɖea nu gbãtɔ ɖa eye eya kee gaʋua nu gbãtɔ.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Eɖea nu mamlɛtɔ ɖa eye eya kee gaʋua nu mamlɛtɔ.", - "LISTS_GET_SUBLIST_END_FROM_START": "yi #", - "LISTS_GET_SUBLIST_END_FROM_END": "yi # tso nuwuwu", - "LISTS_GET_SUBLIST_END_LAST": "yi mamlɛtɔ", - "LISTS_SORT_ORDER_ASCENDING": "dzi yim", - "LISTS_SORT_ORDER_DESCENDING": "ɖiɖim", - "PROCEDURES_BEFORE_PARAMS": "kple:", - "PROCEDURES_CALL_BEFORE_PARAMS": "kple:", - "DIALOG_OK": "Yoo", - "DIALOG_CANCEL": "Natasii" -} +{ + "@metadata": { + "authors": [ + "Aguve", + "Apequm" + ] + }, + "VARIABLES_DEFAULT_NAME": "nu", + "TODAY": "Egbe", + "DUPLICATE_BLOCK": "Gbugbɔe Wɔ", + "ADD_COMMENT": "Ŋlɔ Numeɖeɖe", + "REMOVE_COMMENT": "Ɖe Numeɖeɖea Ɖa", + "DUPLICATE_COMMENT": "Kɔpi Numeɖeɖea", + "EXTERNAL_INPUTS": "Gotakpeɖeŋunuwo", + "INLINE_INPUTS": "Interdzikpeɖeŋuwo", + "DELETE_BLOCK": "Tutu Hatsotsoa", + "DELETE_X_BLOCKS": "Tutu Hatsotso %1", + "DELETE_ALL_BLOCKS": "Èdi be netutu nu %1 katã?", + "CLEAN_UP": "Tutu Nuawo", + "COLLAPSE_BLOCK": "Hatsotso Me Nuwo Nebu", + "COLLAPSE_ALL": "Hatsotsoawo Me Nuwo Nebu", + "EXPAND_BLOCK": "Hatsotsoa Me Nuwo Nedze", + "EXPAND_ALL": "Hatsotsoawo Me Nuwo Nedze", + "DISABLE_BLOCK": "Tsi Hatsotsoa", + "ENABLE_BLOCK": "Si Hatsotsoa", + "HELP": "Kpekpeɖeŋu", + "UNDO": "Gbugbɔe", + "REDO": "Trɔ Wɔe", + "CHANGE_VALUE_TITLE": "Trɔ nuŋlɔdzesiawo:", + "RENAME_VARIABLE": "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa...", + "RENAME_VARIABLE_TITLE": "Na ŋkɔ bubu nuŋlɔdzesi tɔtrɔa '%1' yi:", + "NEW_VARIABLE": "Wɔ teaŋutrɔna...", + "NEW_STRING_VARIABLE": "Wɔ nya teaŋutrɔna...", + "NEW_NUMBER_VARIABLE": "Wɔ xexlẽdzesi teaŋutrɔna...", + "NEW_COLOUR_VARIABLE": "Wɔ amadede teaŋutrɔna...", + "NEW_VARIABLE_TYPE_TITLE": "Teaŋutrɔna ƒomevi yeye:", + "NEW_VARIABLE_TITLE": "Nuŋlɔdzesi tɔtrɔa yeye ƒe ŋkɔ:", + "VARIABLE_ALREADY_EXISTS": "Teaŋutrɔna si ŋkɔe nye '%1' li xoxo.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Teaŋutrɔna '%1' li xoxo eye wotsɔ ŋkɔ sia xoxo na bubu si nye: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Netutu %1 ŋkɔ si nètsɔ na teaŋutrɔna '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Mate ŋu atutu teaŋutrɔna '%1' o elabe ewɔ akpa aɖe le teaŋutrɔna '%2' me.", + "DELETE_VARIABLE": "Tutu teaŋutrɔna '%1'", + "COLOUR_PICKER_HELPURL": "https://ee.wikipedia.org/wiki/Amadede", + "COLOUR_PICKER_TOOLTIP": "Tia amadede ɖeka le amadedetiaƒea.", + "COLOUR_RANDOM_TITLE": "amadede aɖe ko", + "COLOUR_RANDOM_TOOLTIP": "Tia amadede aɖe ko.", + "COLOUR_RGB_TITLE": "de amae kple", + "COLOUR_RGB_RED": "dzĩ", + "COLOUR_RGB_GREEN": "gbemumu", + "COLOUR_RGB_BLUE": "blɔ", + "COLOUR_RGB_TOOLTIP": "tsaka", + "COLOUR_BLEND_TITLE": "tsaka", + "COLOUR_BLEND_COLOUR1": "amedede 1", + "COLOUR_BLEND_COLOUR2": "amadede 2", + "COLOUR_BLEND_RATIO": "agbɔsɔsɔ", + "COLOUR_BLEND_TOOLTIP": "Tsaka amadede eve kple agbɔsɔsɔ si nye (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://ee.wikipedia.org/wiki/Na_nogo", + "CONTROLS_REPEAT_TITLE": "Wɔe zi %1", + "CONTROLS_REPEAT_INPUT_DO": "wɔ", + "CONTROLS_REPEAT_TOOLTIP": "Gbugbɔ biabia aɖewo zi geɖe.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "gbugbɔ wɔe ne", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "gbugbɔ wɔe va se ɖe", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Ne nyatakaka dea, ke wɔ biabia aɖewo.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Ne nyatakaka dea, ke wɔ biabia aɖewo.", + "CONTROLS_FOR_TOOLTIP": "Xexlẽdzesi tɔtrɔ '%1' nenye xexlẽdzesi si dze egɔme kple esiwo kplɔe ɖo va se ɖe mamlɛtɔ dzi, nebu dometsotso si wofia kple nyatakaka suetɔ siwo wofia asii.", + "CONTROLS_FOR_TITLE": "Xlẽ %1 tso %2 yi %3 to %4 dzi", + "CONTROLS_FOREACH_TITLE": "nu sia nu natso %2 me ayi %1 me", + "CONTROLS_FOREACH_TOOLTIP": "Tia teaŋutrɔna '%1' na nuawo dometɔ ɖe sia ɖe si li, eye nàŋlɔ gbedeasi aɖe.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Nedo le wɔtiaɖenua me", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "neyi edzi kple wɔtiaɖenua si kplɔe ɖo", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Nedo le wɔtiaɖenua si me wòlea me.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Neto wɔtiaɖenu sia susɔea ta wòayi bubu dzi.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Nuxlɔ̃ame: Wɔtiaɖenu me ko woate ŋu azã ƒuƒoƒo sia le.", + "CONTROLS_IF_TOOLTIP_1": "Ne asime aɖe le eme la, ke taɖodzinya aɖewo neva eme.", + "CONTROLS_IF_TOOLTIP_2": "Ne asime aɖe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ne menye nenem o la, ke taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme.", + "CONTROLS_IF_TOOLTIP_3": "Ne asime gbãtɔe le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Gake ne asime eveliae le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia boŋ neva eme.", + "CONTROLS_IF_TOOLTIP_4": "Ne asime gbãtɔ le eme la, ke taɖodzinyawo ƒe ƒuƒoƒo gbãtɔ neva eme. Ke ne taɖodzinyawo ƒe ƒuƒoƒo evelia boŋue le eme la, taɖodzinyawo ƒe ƒuƒoƒo evelia neva eme. Ne taɖodzinya aɖeke mele eme o la,taɖodzinyawo ƒe ƒuƒoƒo mamlɛtɔ neva eme.", + "CONTROLS_IF_MSG_IF": "Ne", + "CONTROLS_IF_MSG_ELSEIF": "Ke boŋ ne", + "CONTROLS_IF_MSG_ELSE": "ke boŋ", + "CONTROLS_IF_IF_TOOLTIP": "Tsɔ kpee, ɖee le eme alo gbugbɔ akpawo ɖo nàtsɔ asi le ne ƒe ƒuƒoƒoa ŋu.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Tsɔ biabia aɖe kpe ne ƒuƒoƒo la.", + "CONTROLS_IF_ELSE_TOOLTIP": "Tsɔ lé wo katã ƒe ne ƒe ƒuƒoƒo kpe biabia mamlɛa.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Masɔmasɔ_(akɔntabubu)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo sɔ kple wo nɔewo.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo mesɔ kple wo nɔewo o.", + "LOGIC_COMPARE_TOOLTIP_LT": "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ mede evelia nu o alo sɔ kplii.", + "LOGIC_COMPARE_TOOLTIP_GT": "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Ŋuɖoɖoa nenye nyateƒe ne nudeme gbãtɔ lolo wu evelia alo sɔ kplii.", + "LOGIC_OPERATION_TOOLTIP_AND": "Ŋuɖoɖoa nenye nyateƒe ne nudeme eveawo nye nyateƒe.", + "LOGIC_OPERATION_AND": "eye", + "LOGIC_OPERATION_TOOLTIP_OR": "Ŋuɖoɖoa nenye nyateƒe ne nudeme ɖeka teti nye nyateƒe.", + "LOGIC_OPERATION_OR": "alo", + "LOGIC_NEGATE_TITLE": "menye %1", + "LOGIC_NEGATE_TOOLTIP": "Ŋuɖoɖoa nenye nyateƒe ne nudemea menye nyateƒe o. Ŋuɖoɖoa nenye aʋatso ne nudemea nye nyateƒe.", + "LOGIC_BOOLEAN_TRUE": "dedia", + "LOGIC_BOOLEAN_FALSE": "mademadea", + "LOGIC_BOOLEAN_TOOLTIP": "Nefia dedia alo mademadea.", + "LOGIC_NULL": "ɖeke o", + "LOGIC_NULL_TOOLTIP": "Mekpɔ ɖeke o.", + "LOGIC_TERNARY_CONDITION": "dodokpɔ", + "LOGIC_TERNARY_IF_TRUE": "nenye nyuitɔ", + "LOGIC_TERNARY_IF_FALSE": "nenye dedietɔ", + "LOGIC_TERNARY_TOOLTIP": "Kpɔ nu si dze le \"dodokpɔ\" me. Ne dediae dze la, tia \"ne dedia\"; ke ne manyomanyotɔe la, tia \"ne mademadea.\"", + "MATH_NUMBER_HELPURL": "https://ee.wikipedia.org/wiki/Xexlẽdzesi", + "MATH_NUMBER_TOOLTIP": "Xexlẽdzesi aɖe", + "MATH_ARITHMETIC_HELPURL": "https://ee.wikipedia.org/wiki/Xexlẽdzesibubu", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Bu xexlẽdzesi evea ƒoƒo ƒu ƒe akɔnta.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Bu xexlẽdzesi ɖeka ɖeɖe le evelia me ƒe akɔnta.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Bu xexlẽdzesi gbãtɔ teƒe evelia ƒe akɔnta.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Bu xexlẽdzesi ɖeka mama ɖe xexlẽdzesi evelia me ƒe akɔnta.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Na be xexlẽdzesi gbãtɔ nadzi eɖokui ɖe edzi zigbɔzi xexlẽdzesi evelia.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/dzidziɖedzi_eɖokui zigbɔzi eve", + "MATH_SINGLE_OP_ROOT": "eƒe teƒe eve", + "MATH_SINGLE_TOOLTIP_ROOT": "Xexlẽdzesia nedzi ɖe edzi teƒe eɖokui", + "MATH_SINGLE_OP_ABSOLUTE": "xexlẽ blibo", + "MATH_SINGLE_TOOLTIP_ABS": "Nena xexlẽdzesi aɖe nanye xexlẽ blibo.", + "MATH_SINGLE_TOOLTIP_NEG": "Nena xexlẽdzesi aɖe nanye xexlẽdzesi madenanekeo.", + "MATH_SINGLE_TOOLTIP_LN": "Xexlẽdzesia nedzi ɖe edzi eɖokui zigbzi e.", + "MATH_SINGLE_TOOLTIP_LOG10": "Nebu zigbɔzi neni 10-teƒe-10 awɔ xexlẽdzesia.", + "MATH_SINGLE_TOOLTIP_EXP": "Nebu e-teƒe-e zigbɔzi xexlẽdzesia.", + "MATH_SINGLE_TOOLTIP_POW10": " Nebu ewo-teƒe-ewo zigbɔzi xexlẽdzesia.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Nebu dzogɔe le digri me (menye radiã o).", + "MATH_IS_EVEN": "enye eve ƒomevi", + "MATH_IS_ODD": "enye etɔ̃ ƒomevi", + "MATH_IS_PRIME": " enye xexlẽme blibo", + "MATH_IS_WHOLE": "enye blibo", + "MATH_IS_POSITIVE": "enye xexlẽme ŋgɔgbeyitɔ", + "MATH_IS_NEGATIVE": "enye xexlẽme megbeyitɔ", + "MATH_IS_DIVISIBLE_BY": "woate ŋu amae ɖe", + "MATH_ONLIST_OPERATOR_MIN": "suetɔ le wo dome", + "MATH_ONLIST_TOOLTIP_MIN": "Neʋu suetɔ le nuwo dome.", + "MATH_ONLIST_OPERATOR_MAX": "gãtɔ le nuwo dome", + "MATH_ONLIST_TOOLTIP_MAX": "Neʋu xexlẽdzesi gãtɔ.", + "LISTS_ISEMPTY_TITLE": "%1 le ƒuƒlu", + "LISTS_GET_INDEX_REMOVE": "ɖee ɖa", + "LISTS_GET_INDEX_FROM_END": "# tso nuwuwu", + "LISTS_GET_INDEX_FIRST": "gbãtɔ", + "LISTS_GET_INDEX_LAST": "mamlɛtɔ", + "LISTS_GET_INDEX_RANDOM": "ɖe sia ɖe ko", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 nye nu gbãtɔ.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 nye nu mamlɛtɔ.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Aʋu nua le afi si wòle le nuwo dome.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Aʋu nu gbãtɔ.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Aʋu nu mamlɛtɔ.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Aʋu nu ɖe sia ɖe aɖe ko.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Aɖe nua ɖa eye wòaʋu nua le afi si wòle le nuawo dome.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Eɖea nu gbãtɔ ɖa eye eya kee gaʋua nu gbãtɔ.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Eɖea nu mamlɛtɔ ɖa eye eya kee gaʋua nu mamlɛtɔ.", + "LISTS_GET_SUBLIST_END_FROM_START": "yi #", + "LISTS_GET_SUBLIST_END_FROM_END": "yi # tso nuwuwu", + "LISTS_GET_SUBLIST_END_LAST": "yi mamlɛtɔ", + "LISTS_SORT_ORDER_ASCENDING": "dzi yim", + "LISTS_SORT_ORDER_DESCENDING": "ɖiɖim", + "PROCEDURES_BEFORE_PARAMS": "kple:", + "PROCEDURES_CALL_BEFORE_PARAMS": "kple:", + "DIALOG_OK": "Yoo", + "DIALOG_CANCEL": "Natasii" +} diff --git a/msg/json/el.json b/msg/json/el.json index dd570537884..ce32321694a 100644 --- a/msg/json/el.json +++ b/msg/json/el.json @@ -1,396 +1,396 @@ -{ - "@metadata": { - "authors": [ - "Azountas", - "Ch.zarafidis", - "Espertus", - "Evropi", - "GR", - "Gchr", - "Geraki", - "Giannaras99", - "Glavkos", - "KATRINE1992", - "Namatreasure", - "NikosLikomitros", - "Nikosgranturismogt", - "Norhorn", - "Sarri.greek", - "Sfyrakis", - "Stam.nikos", - "Themelis", - "Vicng", - "Ανώνυμος Βικιπαιδιστής", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "αντικείμενο", - "UNNAMED_KEY": "χωρίς όνομα", - "TODAY": "Σήμερα", - "DUPLICATE_BLOCK": "Διπλότυπο", - "ADD_COMMENT": "Προσθήκη σχολίου", - "REMOVE_COMMENT": "Αφαίρεση σχολίου", - "DUPLICATE_COMMENT": "Αντιγραφή σχόλιου", - "EXTERNAL_INPUTS": "Εξωτερικές προσθήκες", - "INLINE_INPUTS": "Εσωτερικές προσθήκες", - "DELETE_BLOCK": "Διαγραφή μπλοκ", - "DELETE_X_BLOCKS": "Διαγραφή %1 μπλοκ", - "DELETE_ALL_BLOCKS": "Να διαγραφούν όλα τα %1 μπλοκ;", - "CLEAN_UP": "Ταξινομείστε τα Μπλοκ", - "COLLAPSE_BLOCK": "Σύμπτυξε Το Μπλοκ", - "COLLAPSE_ALL": "Σύμπτυξε Όλα Τα Μπλοκ", - "EXPAND_BLOCK": "Επέκτεινε Το Μπλοκ", - "EXPAND_ALL": "Επέκτεινε Όλα Τα Μπλοκ", - "DISABLE_BLOCK": "Απενεργοποίησε Το Μπλοκ", - "ENABLE_BLOCK": "Ενεργοποίησε Το Μπλοκ", - "HELP": "Βοήθεια", - "UNDO": "Αναίρεση", - "REDO": "Ακύρωση αναίρεσης", - "CHANGE_VALUE_TITLE": "Άλλαξε την τιμή:", - "RENAME_VARIABLE": "Μετονόμασε τη μεταβλητή...", - "RENAME_VARIABLE_TITLE": "Μετονόμασε όλες τις μεταβλητές «%1» σε:", - "NEW_VARIABLE": "Δημιουργήστε μεταβλητή...", - "NEW_STRING_VARIABLE": "Δημιουργία μεταβλητή συμβολοσειράς...", - "NEW_NUMBER_VARIABLE": "Δημιουργία μεταβλητής αριθμού...", - "NEW_COLOUR_VARIABLE": "Δημιουργία μεταβλητής χρώματος...", - "NEW_VARIABLE_TYPE_TITLE": "Νέος τύπος μεταβλητής:", - "NEW_VARIABLE_TITLE": "Νέο όνομα μεταβλητής:", - "VARIABLE_ALREADY_EXISTS": "Η μεταβλητή με το όνομα '%1' υπάρχει ήδη.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Μια μεταβλητή με όνομα '%1' υπάρχει πάντα για έναν άλλο τύπο: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Θέλετε να διαγράψετε το %1 που χρησιμοποιείτε από την μεταβλητή '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Δεν μπορώ να διαγράψω την μεταβλητή '%1' διότι είναι μέρος του ορισμού της λειτουργίας '%2'", - "DELETE_VARIABLE": "Διαγράψτε την μεταβλητή '%1'", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Επιτρέπει επιλογή χρώματος από την παλέτα.", - "COLOUR_RANDOM_TITLE": "τυχαίο χρώμα", - "COLOUR_RANDOM_TOOLTIP": "Επιλέγει χρώμα τυχαία.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "χρώμα με", - "COLOUR_RGB_RED": "κόκκινο", - "COLOUR_RGB_GREEN": "πράσινο", - "COLOUR_RGB_BLUE": "μπλε", - "COLOUR_RGB_TOOLTIP": "Δημιουργήστε ένα χρώμα με την καθορισμένη ποσότητα κόκκινου, πράσινου και μπλε. Όλες οι τιμές πρέπει να είναι μεταξύ 0 και 100.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "μείγμα", - "COLOUR_BLEND_COLOUR1": "χρώμα 1", - "COLOUR_BLEND_COLOUR2": "χρώμα 2", - "COLOUR_BLEND_RATIO": "αναλογία", - "COLOUR_BLEND_TOOLTIP": "Συνδυάζει δύο χρώματα μαζί με μια δεδομένη αναλογία (0.0 - 1,0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "επανάλαβε %1 φορές", - "CONTROLS_REPEAT_INPUT_DO": "κάνε", - "CONTROLS_REPEAT_TOOLTIP": "Εκτελεί κάποιες εντολές αρκετές φορές.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "επανάλαβε ενώ", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "επανάλαβε μέχρι", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Εφόσον μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Εφόσον μια τιμή είναι ψευδής, τότε εκτελεί κάποιες εντολές.", - "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", - "CONTROLS_FOR_TOOLTIP": "Η μεταβλητή «%1» παίρνει τιμές ξεκινώντας από τον αριθμό έναρξης μέχρι τον αριθμό τέλους αυξάνοντας κάθε φορά με το καθορισμένο βήμα και εκτελώντας το καθορισμένο μπλοκ.", - "CONTROLS_FOR_TITLE": "μέτρησε με %1 από το %2 έως το %3 ανά %4", - "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", - "CONTROLS_FOREACH_TITLE": "για κάθε στοιχείο %1 στη λίστα %2", - "CONTROLS_FOREACH_TOOLTIP": "Για κάθε στοιχείο σε μια λίστα, ορίζει τη μεταβλητή «%1» στο στοιχείο και, στη συνέχεια, εκτελεί κάποιες εντολές.", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "φεύγει από το μπλοκ επαναλήψεως", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "συνέχισε με την επόμενη επανάληψη του μπλοκ επαναλήψεως", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ξεφεύγει (βγαίνει έξω) από την επανάληψη.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Παραλείπει το υπόλοιπο τμήμα αυτού του μπλοκ επαναλήψεως, και συνεχίζει με την επόμενη επανάληψη.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο μέσα σε μια επανάληψη.", - "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", - "CONTROLS_IF_TOOLTIP_1": "Αν μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές.", - "CONTROLS_IF_TOOLTIP_2": "Αν μια τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, εκτελεί το δεύτερο τμήμα εντολών.", - "CONTROLS_IF_TOOLTIP_3": "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο μπλοκ εντολών.", - "CONTROLS_IF_TOOLTIP_4": "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο τμήμα εντολών. Αν καμία από τις τιμές δεν είναι αληθής, εκτελεί το τελευταίο τμήμα εντολών.", - "CONTROLS_IF_MSG_IF": "εάν", - "CONTROLS_IF_MSG_ELSEIF": "εναλλακτικά εάν", - "CONTROLS_IF_MSG_ELSE": "αλλιώς", - "CONTROLS_IF_IF_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ «εάν».", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Πρόσθετει μια κατάσταση/συνθήκη στο μπλοκ «εάν».", - "CONTROLS_IF_ELSE_TOOLTIP": "Προσθέτει μια τελική κατάσταση/συνθήκη, που πιάνει όλες τις άλλες περιπτώσεις, στο μπλοκ «εάν».", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι ίσες μεταξύ τους.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Επιστρέφει αληθής αν και οι δύο είσοδοι δεν είναι ίσες μεταξύ τους.", - "LOGIC_COMPARE_TOOLTIP_LT": "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από τη δεύτερη είσοδο.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από ή ίση με τη δεύτερη είσοδο.", - "LOGIC_COMPARE_TOOLTIP_GT": "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μεγαλύτερη από τη δεύτερη είσοδο.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη ή ίση με τη δεύτερη είσοδο.", - "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", - "LOGIC_OPERATION_TOOLTIP_AND": "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι αληθής.", - "LOGIC_OPERATION_AND": "και", - "LOGIC_OPERATION_TOOLTIP_OR": "Επιστρέφει αληθής αν τουλάχιστον μια από τις εισόδους είναι αληθής.", - "LOGIC_OPERATION_OR": "ή", - "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", - "LOGIC_NEGATE_TITLE": "όχι %1", - "LOGIC_NEGATE_TOOLTIP": "Επιστρέφει αληθής αν η είσοδος είναι ψευδής. Επιστρέφει ψευδής αν η είσοδος είναι αληθής.", - "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", - "LOGIC_BOOLEAN_TRUE": "αληθής", - "LOGIC_BOOLEAN_FALSE": "ψευδής", - "LOGIC_BOOLEAN_TOOLTIP": "Επιστρέφει είτε αληθής είτε ψευδής.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "κενό", - "LOGIC_NULL_TOOLTIP": "Επιστρέφει κενό.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "έλεγχος", - "LOGIC_TERNARY_IF_TRUE": "εάν είναι αληθής", - "LOGIC_TERNARY_IF_FALSE": "εάν είναι ψευδής", - "LOGIC_TERNARY_TOOLTIP": "Ελέγχει την κατάσταση/συνθήκη στον «έλεγχο». Αν η κατάσταση/συνθήκη είναι αληθής, επιστρέφει την τιμή «εάν αληθής», διαφορετικά επιστρέφει την τιμή «εάν ψευδής».", - "MATH_NUMBER_HELPURL": "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82", - "MATH_NUMBER_TOOLTIP": "Ένας αριθμός.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^ ύψωση σε δύναμη", - "MATH_TRIG_SIN": "ημ", - "MATH_TRIG_COS": "συν", - "MATH_TRIG_TAN": "εφ", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CE%B7%CF%84%CE%B9%CE%BA%CE%AE", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Επιστρέφει το άθροισμα των δύο αριθμών.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Επιστρέφει τη διαφορά των δύο αριθμών.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Επιστρέφει το γινόμενο των δύο αριθμών.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Επιστρέφει το πηλίκο των δύο αριθμών.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Επιστρέφει τον πρώτο αριθμό υψωμένο στη δύναμη του δεύτερου αριθμού.", - "MATH_SINGLE_HELPURL": "https://el.wikipedia.org/wiki/%CE%A4%CE%B5%CF%84%CF%81%CE%B1%CE%B3%CF%89%CE%BD%CE%B9%CE%BA%CE%AE_%CF%81%CE%AF%CE%B6%CE%B1", - "MATH_SINGLE_OP_ROOT": "τετραγωνική ρίζα", - "MATH_SINGLE_TOOLTIP_ROOT": "Επιστρέφει την τετραγωνική ρίζα ενός αριθμού.", - "MATH_SINGLE_OP_ABSOLUTE": "απόλυτη", - "MATH_SINGLE_TOOLTIP_ABS": "Επιστρέφει την απόλυτη τιμή ενός αριθμού.", - "MATH_SINGLE_TOOLTIP_NEG": "Επιστρέφει την αρνητική ενός αριθμού.", - "MATH_SINGLE_TOOLTIP_LN": "Επιστρέφει τον νεπέρειο λογάριθμο ενός αριθμού.", - "MATH_SINGLE_TOOLTIP_LOG10": "Επιστρέφει τον λογάριθμο με βάση το 10 ενός αριθμού.", - "MATH_SINGLE_TOOLTIP_EXP": "Επιστρέφει το e υψωμένο στη δύναμη ενός αριθμού.", - "MATH_SINGLE_TOOLTIP_POW10": "Επιστρέφει το 10 υψωμένο στη δύναμη ενός αριθμού.", - "MATH_TRIG_HELPURL": "https://el.wikipedia.org/wiki/%CE%A4%CF%81%CE%B9%CE%B3%CF%89%CE%BD%CE%BF%CE%BC%CE%B5%CF%84%CF%81%CE%B9%CE%BA%CE%AE_%CF%83%CF%85%CE%BD%CE%AC%CF%81%CF%84%CE%B7%CF%83%CE%B7", - "MATH_TRIG_TOOLTIP_SIN": "Επιστρέφει το ημίτονο ενός βαθμού (όχι ακτινίου).", - "MATH_TRIG_TOOLTIP_COS": "Επιστρέφει το συνημίτονο ενός βαθμού (όχι ακτινίου).", - "MATH_TRIG_TOOLTIP_TAN": "Επιστρέφει την εφαπτομένη ενός βαθμού (όχι ακτινίου).", - "MATH_TRIG_TOOLTIP_ASIN": "Επιστρέφει το τόξο ημίτονου ενός αριθμού.", - "MATH_TRIG_TOOLTIP_ACOS": "Επιστρέφει το τόξο συνημίτονου ενός αριθμού.", - "MATH_TRIG_TOOLTIP_ATAN": "Επιστρέφει το τόξο εφαπτομένης ενός αριθμού.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Επιστρέφει μία από τις κοινές σταθερές: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...), ή ∞ (άπειρο).", - "MATH_IS_EVEN": "είναι άρτιος", - "MATH_IS_ODD": "είναι περιττός", - "MATH_IS_PRIME": "είναι πρώτος", - "MATH_IS_WHOLE": "είναι ακέραιος", - "MATH_IS_POSITIVE": "είναι θετικός", - "MATH_IS_NEGATIVE": "είναι αρνητικός", - "MATH_IS_DIVISIBLE_BY": "είναι διαιρετός από το", - "MATH_IS_TOOLTIP": "Ελέγχει αν ένας αριθμός είναι άρτιος, περιττός, πρώτος, ακέραιος, θετικός, αρνητικός, ή αν είναι διαιρετός από έναν ορισμένο αριθμό. Επιστρέφει αληθής ή ψευδής.", - "MATH_CHANGE_HELPURL": "https://el.wikipedia.org/wiki/%CE%A0%CF%81%CF%8C%CF%83%CE%B8%CE%B5%CF%83%CE%B7", - "MATH_CHANGE_TITLE": "άλλαξε %1 αυξάνοντας κατά %2", - "MATH_CHANGE_TOOLTIP": "Προσθέτει έναν αριθμό στη μεταβλητή «%1».", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Στρογγυλοποιεί έναν αριθμό προς τα πάνω ή προς τα κάτω.", - "MATH_ROUND_OPERATOR_ROUND": "στρογγυλοποίησε", - "MATH_ROUND_OPERATOR_ROUNDUP": "στρογγυλοποίησε προς τα πάνω", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "στρογγυλοποίησε προς τα κάτω", - "MATH_ONLIST_OPERATOR_SUM": "άθροισμα λίστας", - "MATH_ONLIST_TOOLTIP_SUM": "Επιστρέφει το άθροισμα όλων των αριθμών στη λίστα.", - "MATH_ONLIST_OPERATOR_MIN": "μικρότερος λίστας", - "MATH_ONLIST_TOOLTIP_MIN": "Επιστρέφει τον μικρότερο αριθμό στη λίστα.", - "MATH_ONLIST_OPERATOR_MAX": "μεγαλύτερος λίστας", - "MATH_ONLIST_TOOLTIP_MAX": "Επιστρέφει τον μεγαλύτερο αριθμό στη λίστα.", - "MATH_ONLIST_OPERATOR_AVERAGE": "μέσος όρος λίστας", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Επιστρέφει τον αριθμητικό μέσο όρο από τις αριθμητικές τιμές στη λίστα.", - "MATH_ONLIST_OPERATOR_MEDIAN": "διάμεσος λίστας", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Επιστρέφει τον διάμεσο της λίστας.", - "MATH_ONLIST_OPERATOR_MODE": "μορφές λίστας", - "MATH_ONLIST_TOOLTIP_MODE": "Επιστρέφει μια λίστα με τα πιο κοινά στοιχεία στη λίστα.", - "MATH_ONLIST_OPERATOR_STD_DEV": "τυπική απόκλιση λίστας", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Επιστρέφει την τυπική απόκλιση της λίστας.", - "MATH_ONLIST_OPERATOR_RANDOM": "τυχαίο στοιχείο λίστας", - "MATH_ONLIST_TOOLTIP_RANDOM": "Επιστρέφει ένα τυχαίο στοιχείο από τη λίστα.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "υπόλοιπο της %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Επιστρέφει το υπόλοιπο της διαίρεσης των δύο αριθμών.", - "MATH_CONSTRAIN_HELPURL": "https://en.wikipedia.org/wiki/Clamping_(graphics)", - "MATH_CONSTRAIN_TITLE": "περιόρισε %1 χαμηλή %2 υψηλή %3", - "MATH_CONSTRAIN_TOOLTIP": "Περιορίζει έναν αριθμό μεταξύ των προβλεπόμενων ορίων (χωρίς αποκλεισμούς).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "τυχαίος ακέραιος από το %1 έως το %2", - "MATH_RANDOM_INT_TOOLTIP": "Επιστρέφει έναν τυχαίο ακέραιο αριθμό μεταξύ δύο συγκεκριμένων ορίων (εντός - συμπεριλαμβανομένων και των ακραίων τιμών).", - "MATH_RANDOM_FLOAT_HELPURL": "https://el.wikipedia.org/wiki/%CE%93%CE%B5%CE%BD%CE%BD%CE%AE%CF%84%CF%81%CE%B9%CE%B1_%CE%A4%CF%85%CF%87%CE%B1%CE%AF%CF%89%CE%BD_%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8E%CE%BD", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "τυχαίο κλάσμα", - "MATH_RANDOM_FLOAT_TOOLTIP": "Επιστρέψει ένα τυχαία κλάσμα μεταξύ 0,0 (κλειστό) και 1,0 (ανοικτό).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 από X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Επιστρέφει την διαφορά τόξου των σημείων (X, Y) σε μοίρες από -180 σε 180.", - "TEXT_TEXT_HELPURL": "https://el.wikipedia.org/wiki/%CE%A3%CF%85%CE%BC%CE%B2%CE%BF%CE%BB%CE%BF%CF%83%CE%B5%CE%B9%CF%81%CE%AC", - "TEXT_TEXT_TOOLTIP": "Ένα γράμμα, μια λέξη ή μια γραμμή κειμένου.", - "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", - "TEXT_JOIN_TITLE_CREATEWITH": "δημιούργησε κείμενο με", - "TEXT_JOIN_TOOLTIP": "Δημιουργεί ένα κομμάτι κειμένου ενώνοντας έναν απεριόριστο αριθμό αντικειμένων.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "ένωσε", - "TEXT_CREATE_JOIN_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει τους τομείς για να αναδιαμορφώσει αυτό το μπλοκ κειμένου.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Προσθέτει ένα στοιχείο στο κείμενο.", - "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_APPEND_TITLE": "έως %1 ανάθεσε κείμενο %2", - "TEXT_APPEND_TOOLTIP": "Αναθέτει κείμενο στη μεταβλητή «%1».", - "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_LENGTH_TITLE": "το μήκος του %1", - "TEXT_LENGTH_TOOLTIP": "Επιστρέφει το πλήθος των γραμμάτων (συμπεριλαμβανομένων και των κενών διαστημάτων) στο παρεχόμενο κείμενο.", - "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", - "TEXT_ISEMPTY_TITLE": "το %1 είναι κενό", - "TEXT_ISEMPTY_TOOLTIP": "Επιστρέφει αληθής αν το παρεχόμενο κείμενο είναι κενό.", - "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", - "TEXT_INDEXOF_TOOLTIP": "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του πρώτου κειμένου στο δεύτερο κείμενο. Επιστρέφει τιμή %1, αν δε βρει το κείμενο.", - "TEXT_INDEXOF_TITLE": "στο κείμενο %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "βρες την πρώτη εμφάνιση του κειμένου", - "TEXT_INDEXOF_OPERATOR_LAST": "βρες την τελευταία εμφάνιση του κειμένου", - "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", - "TEXT_CHARAT_TITLE": "στο κείμενο %1 %2", - "TEXT_CHARAT_FROM_START": "πάρε το γράμμα #", - "TEXT_CHARAT_FROM_END": "πάρε το γράμμα # από το τέλος", - "TEXT_CHARAT_FIRST": "πάρε το πρώτο γράμμα", - "TEXT_CHARAT_LAST": "πάρε το τελευταίο γράμμα", - "TEXT_CHARAT_RANDOM": "πάρε τυχαίο γράμμα", - "TEXT_CHARAT_TOOLTIP": "Επιστρέφει το γράμμα στην καθορισμένη θέση.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Επιστρέφει ένα συγκεκριμένο τμήμα του κειμένου.", - "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "στο κείμενο", - "TEXT_GET_SUBSTRING_START_FROM_START": "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα", - "TEXT_GET_SUBSTRING_START_FROM_END": "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα από το τέλος", - "TEXT_GET_SUBSTRING_START_FIRST": "πάρε τη δευτερεύουσα συμβολοσειρά από το πρώτο γράμμα", - "TEXT_GET_SUBSTRING_END_FROM_START": "μέχρι το # γράμμα", - "TEXT_GET_SUBSTRING_END_FROM_END": "μέχρι το # γράμμα από το τέλος", - "TEXT_GET_SUBSTRING_END_LAST": "μέχρι το τελευταίο γράμμα", - "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", - "TEXT_CHANGECASE_TOOLTIP": "Επιστρέφει ένα αντίγραφο του κειμένου σε διαφορετική μορφή γραμμάτων.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "σε ΚΕΦΑΛΑΙΑ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "σε πεζά", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "σε Λέξεις Με Πρώτα Κεφαλαία", - "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", - "TEXT_TRIM_TOOLTIP": "Επιστρέφει ένα αντίγραφο του κειμένου με αφαιρεμένα τα κενά από το ένα ή και τα δύο άκρα.", - "TEXT_TRIM_OPERATOR_BOTH": "περίκοψε τα κενά και από τις δυο πλευρές του", - "TEXT_TRIM_OPERATOR_LEFT": "περίκοψε τα κενά από την αριστερή πλευρά του", - "TEXT_TRIM_OPERATOR_RIGHT": "περίκοψε τα κενά από την δεξιά πλευρά του", - "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", - "TEXT_PRINT_TITLE": "εκτύπωσε %1", - "TEXT_PRINT_TOOLTIP": "Εκτυπώνει το καθορισμένο κείμενο, αριθμό ή άλλη τιμή.", - "TEXT_PROMPT_TYPE_TEXT": "πρότρεψε με μήνυμα για να δοθεί κείμενο", - "TEXT_PROMPT_TYPE_NUMBER": "πρότρεψε με μήνυμα για να δοθεί αριθμός", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Δημιουργεί προτροπή για τον χρήστη για να δώσει ένα αριθμό.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Δημιουργεί προτροπή για το χρήστη για να δώσει κάποιο κείμενο.", - "TEXT_COUNT_MESSAGE0": "αριθμός %1 σε %2", - "TEXT_COUNT_TOOLTIP": "Μετρά πόσες φορές κάποιο κείμενο εμφανίζεται μέσα σε ένα άλλο κείμενο.", - "TEXT_REPLACE_MESSAGE0": "αντικαταστήσετε το %1 με %2 σε %3", - "TEXT_REPLACE_TOOLTIP": "Αντικαταστήστε όλα τα ήδη υπάρχοντα στοιχεία μέρους του κειμένου με κάποιο άλλο κείμενο", - "TEXT_REVERSE_MESSAGE0": "ανάκληση %1", - "TEXT_REVERSE_TOOLTIP": "Αναγραμματισμός των χαρακτήρων του κειμένου", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "δημιούργησε κενή λίστα", - "LISTS_CREATE_EMPTY_TOOLTIP": "Επιστρέφει μια λίστα, με μήκος 0, η οποία δεν περιέχει εγγραφές δεδομένων", - "LISTS_CREATE_WITH_TOOLTIP": "Δημιουργεί λίστα με οποιονδήποτε αριθμό αντικειμένων.", - "LISTS_CREATE_WITH_INPUT_WITH": "δημιούργησε λίστα με", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "λίστα", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ λίστας.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Προσθέτει αντικείμενο στη λίστα.", - "LISTS_REPEAT_HELPURL": "Blockly", - "LISTS_REPEAT_TOOLTIP": "Δημιουργεί μια λίστα που αποτελείται από την δεδομένη τιμή που επαναλαμβάνεται για συγκεκριμένο αριθμό επαναλήψεων.", - "LISTS_REPEAT_TITLE": "δημιούργησε λίστα με το στοιχείο %1 να επαναλαμβάνεται %2 φορές", - "LISTS_LENGTH_HELPURL": "Blockly", - "LISTS_LENGTH_TITLE": "το μήκος του %1", - "LISTS_LENGTH_TOOLTIP": "Επιστρέφει το μήκος μιας λίστας.", - "LISTS_ISEMPTY_TITLE": "το %1 είναι κενό", - "LISTS_ISEMPTY_TOOLTIP": "Επιστρέφει αληθής αν η λίστα είναι κενή.", - "LISTS_INLIST": "στη λίστα", - "LISTS_INDEX_OF_HELPURL": "Blockly", - "LISTS_INDEX_OF_FIRST": "βρες την πρώτη εμφάνιση του στοιχείου", - "LISTS_INDEX_OF_LAST": "βρες την τελευταία εμφάνιση του στοιχείου", - "LISTS_INDEX_OF_TOOLTIP": "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του στοιχείου στη λίστα. Επιστρέφει τιμή %1, αν το στοιχείο δεν βρεθεί.", - "LISTS_GET_INDEX_GET": "πάρε", - "LISTS_GET_INDEX_GET_REMOVE": "πάρε και αφαίρεσε", - "LISTS_GET_INDEX_REMOVE": "αφαίρεσε", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# από το τέλος", - "LISTS_GET_INDEX_FIRST": "πρώτο", - "LISTS_GET_INDEX_LAST": "τελευταίο", - "LISTS_GET_INDEX_RANDOM": "τυχαίο", - "LISTS_INDEX_FROM_START_TOOLTIP": "Το %1 είναι το πρώτο στοιχείο.", - "LISTS_INDEX_FROM_END_TOOLTIP": "Το %1 είναι το τελευταίο στοιχείο.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Επιστρέφει το πρώτο στοιχείο σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Επιστρέφει το τελευταίο στοιχείο σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Καταργεί και επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Καταργεί και επιστρέφει το πρώτο στοιχείο σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Καταργεί και επιστρέφει το τελευταίο στοιχείο σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Καταργεί και επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Καταργεί το στοιχείο στην καθορισμένη θέση σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Καταργεί το πρώτο στοιχείο σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Καταργεί το τελευταίο στοιχείο σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Καταργεί ένα τυχαίο στοιχείο σε μια λίστα.", - "LISTS_SET_INDEX_SET": "όρισε", - "LISTS_SET_INDEX_INSERT": "είσαγε στο", - "LISTS_SET_INDEX_INPUT_TO": "σε", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ορίζει το στοιχείο στην καθορισμένη θέση σε μια λίστα.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Ορίζει το πρώτο στοιχείο σε μια λίστα.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Ορίζει το τελευταίο στοιχείο σε μια λίστα.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Ορίζει ένα τυχαίο στοιχείο σε μια λίστα.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Εισάγει το στοιχείο στην καθορισμένη θέση σε μια λίστα.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Εισάγει το στοιχείο στην αρχή μιας λίστας.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Αναθέτει το στοιχείο στο τέλος μιας λίστας.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Εισάγει το στοιχείο τυχαία σε μια λίστα.", - "LISTS_GET_SUBLIST_HELPURL": "Blockly", - "LISTS_GET_SUBLIST_START_FROM_START": "πάρε υπολίστα από #", - "LISTS_GET_SUBLIST_START_FROM_END": "πάρε υπολίστα από # από το τέλος", - "LISTS_GET_SUBLIST_START_FIRST": "πάρε υπολίστα από την αρχή", - "LISTS_GET_SUBLIST_END_FROM_START": "έως #", - "LISTS_GET_SUBLIST_END_FROM_END": "έως # από το τέλος", - "LISTS_GET_SUBLIST_END_LAST": "έως το τελευταίο", - "LISTS_GET_SUBLIST_TOOLTIP": "Δημιουργεί ένα αντίγραφο του καθορισμένου τμήματος μιας λίστας.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "επιλογή %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Επιλέξετε ένα αντίγραφο της λίστας.", - "LISTS_SORT_ORDER_ASCENDING": "Αύξουσα", - "LISTS_SORT_ORDER_DESCENDING": "Φθίνουσα", - "LISTS_SORT_TYPE_NUMERIC": "αριθμητικό", - "LISTS_SORT_TYPE_TEXT": "Αλφαβητικά", - "LISTS_SORT_TYPE_IGNORECASE": "αλφαβητικά, αγνοήστε το στοιχείο", - "LISTS_SPLIT_LIST_FROM_TEXT": "κάνετε λίστα από το κείμενο", - "LISTS_SPLIT_TEXT_FROM_LIST": "κάνετε κείμενο από τη λίστα", - "LISTS_SPLIT_WITH_DELIMITER": "με διαχωριστικό", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Διαίρεση του κειμένου σε μια λίστα κειμένων, με σπάσιμο σε κάθε διαχωριστικό.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Ενώστε μια λίστα κειμένων σε ένα κείμενο, που χωρίζονται από ένα διαχωριστικό.", - "LISTS_REVERSE_MESSAGE0": "ανάκληση %1", - "LISTS_REVERSE_TOOLTIP": "Α", - "VARIABLES_GET_TOOLTIP": "Επιστρέφει την τιμή αυτής της μεταβλητής.", - "VARIABLES_GET_CREATE_SET": "Δημιούργησε «όρισε %1»", - "VARIABLES_SET": "ανάθεσε στην %1 το %2", - "VARIABLES_SET_TOOLTIP": "Ορίζει αυτή τη μεταβλητή να είναι ίση με την είσοδο.", - "VARIABLES_SET_CREATE_GET": "Δημιούργησε «πάρε %1»", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "στο", - "PROCEDURES_DEFNORETURN_PROCEDURE": "κάνε κάτι", - "PROCEDURES_BEFORE_PARAMS": "με:", - "PROCEDURES_CALL_BEFORE_PARAMS": "με:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Δημιουργεί μια συνάρτηση χωρίς έξοδο.", - "PROCEDURES_DEFNORETURN_COMMENT": "Περιγράψετε αυτήν την ιδιότητα..", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFRETURN_RETURN": "επέστρεψε", - "PROCEDURES_DEFRETURN_TOOLTIP": "Δημιουργεί μια συνάρτηση με μια έξοδο.", - "PROCEDURES_ALLOW_STATEMENTS": "να επιτρέπονται οι δηλώσεις", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Προειδοποίηση: Αυτή η συνάρτηση έχει διπλότυπες παραμέτρους.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1».", - "PROCEDURES_CALLRETURN_HELPURL": "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29", - "PROCEDURES_CALLRETURN_TOOLTIP": "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1» και χρησιμοποίησε την έξοδό της.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "είσοδοι", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει εισόδους σε αυτήν τη λειτουργία", - "PROCEDURES_MUTATORARG_TITLE": "όνομα εισόδου:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Πρόσθεσε μια είσοδος στη συνάρτηση", - "PROCEDURES_HIGHLIGHT_DEF": "Επισημάνετε τον ορισμό συνάρτησης", - "PROCEDURES_CREATE_DO": "Δημιούργησε «%1»", - "PROCEDURES_IFRETURN_TOOLTIP": "Αν μια τιμή είναι αληθής, τότε επιστρέφει τη δεύτερη τιμή.", - "PROCEDURES_IFRETURN_WARNING": "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο στον ορισμό μιας συνάρτησης.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Πείτε κάτι...", - "WORKSPACE_ARIA_LABEL": "Χώρος εργασίας Blockly", - "COLLAPSED_WARNINGS_WARNING": "Υπάρχουν προειδοποιήσεις για συμπτυγμένα μπλοκ.", - "DIALOG_OK": "Εντάξει", - "DIALOG_CANCEL": "Ακύρωση" -} +{ + "@metadata": { + "authors": [ + "Azountas", + "Ch.zarafidis", + "Espertus", + "Evropi", + "GR", + "Gchr", + "Geraki", + "Giannaras99", + "Glavkos", + "KATRINE1992", + "Namatreasure", + "NikosLikomitros", + "Nikosgranturismogt", + "Norhorn", + "Sarri.greek", + "Sfyrakis", + "Stam.nikos", + "Themelis", + "Vicng", + "Ανώνυμος Βικιπαιδιστής", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "αντικείμενο", + "UNNAMED_KEY": "χωρίς όνομα", + "TODAY": "Σήμερα", + "DUPLICATE_BLOCK": "Διπλότυπο", + "ADD_COMMENT": "Προσθήκη σχολίου", + "REMOVE_COMMENT": "Αφαίρεση σχολίου", + "DUPLICATE_COMMENT": "Αντιγραφή σχόλιου", + "EXTERNAL_INPUTS": "Εξωτερικές προσθήκες", + "INLINE_INPUTS": "Εσωτερικές προσθήκες", + "DELETE_BLOCK": "Διαγραφή μπλοκ", + "DELETE_X_BLOCKS": "Διαγραφή %1 μπλοκ", + "DELETE_ALL_BLOCKS": "Να διαγραφούν όλα τα %1 μπλοκ;", + "CLEAN_UP": "Ταξινομείστε τα Μπλοκ", + "COLLAPSE_BLOCK": "Σύμπτυξε Το Μπλοκ", + "COLLAPSE_ALL": "Σύμπτυξε Όλα Τα Μπλοκ", + "EXPAND_BLOCK": "Επέκτεινε Το Μπλοκ", + "EXPAND_ALL": "Επέκτεινε Όλα Τα Μπλοκ", + "DISABLE_BLOCK": "Απενεργοποίησε Το Μπλοκ", + "ENABLE_BLOCK": "Ενεργοποίησε Το Μπλοκ", + "HELP": "Βοήθεια", + "UNDO": "Αναίρεση", + "REDO": "Ακύρωση αναίρεσης", + "CHANGE_VALUE_TITLE": "Άλλαξε την τιμή:", + "RENAME_VARIABLE": "Μετονόμασε τη μεταβλητή...", + "RENAME_VARIABLE_TITLE": "Μετονόμασε όλες τις μεταβλητές «%1» σε:", + "NEW_VARIABLE": "Δημιουργήστε μεταβλητή...", + "NEW_STRING_VARIABLE": "Δημιουργία μεταβλητή συμβολοσειράς...", + "NEW_NUMBER_VARIABLE": "Δημιουργία μεταβλητής αριθμού...", + "NEW_COLOUR_VARIABLE": "Δημιουργία μεταβλητής χρώματος...", + "NEW_VARIABLE_TYPE_TITLE": "Νέος τύπος μεταβλητής:", + "NEW_VARIABLE_TITLE": "Νέο όνομα μεταβλητής:", + "VARIABLE_ALREADY_EXISTS": "Η μεταβλητή με το όνομα '%1' υπάρχει ήδη.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Μια μεταβλητή με όνομα '%1' υπάρχει πάντα για έναν άλλο τύπο: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Θέλετε να διαγράψετε το %1 που χρησιμοποιείτε από την μεταβλητή '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Δεν μπορώ να διαγράψω την μεταβλητή '%1' διότι είναι μέρος του ορισμού της λειτουργίας '%2'", + "DELETE_VARIABLE": "Διαγράψτε την μεταβλητή '%1'", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Επιτρέπει επιλογή χρώματος από την παλέτα.", + "COLOUR_RANDOM_TITLE": "τυχαίο χρώμα", + "COLOUR_RANDOM_TOOLTIP": "Επιλέγει χρώμα τυχαία.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "χρώμα με", + "COLOUR_RGB_RED": "κόκκινο", + "COLOUR_RGB_GREEN": "πράσινο", + "COLOUR_RGB_BLUE": "μπλε", + "COLOUR_RGB_TOOLTIP": "Δημιουργήστε ένα χρώμα με την καθορισμένη ποσότητα κόκκινου, πράσινου και μπλε. Όλες οι τιμές πρέπει να είναι μεταξύ 0 και 100.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "μείγμα", + "COLOUR_BLEND_COLOUR1": "χρώμα 1", + "COLOUR_BLEND_COLOUR2": "χρώμα 2", + "COLOUR_BLEND_RATIO": "αναλογία", + "COLOUR_BLEND_TOOLTIP": "Συνδυάζει δύο χρώματα μαζί με μια δεδομένη αναλογία (0.0 - 1,0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "επανάλαβε %1 φορές", + "CONTROLS_REPEAT_INPUT_DO": "κάνε", + "CONTROLS_REPEAT_TOOLTIP": "Εκτελεί κάποιες εντολές αρκετές φορές.", + "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "επανάλαβε ενώ", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "επανάλαβε μέχρι", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Εφόσον μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Εφόσον μια τιμή είναι ψευδής, τότε εκτελεί κάποιες εντολές.", + "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", + "CONTROLS_FOR_TOOLTIP": "Η μεταβλητή «%1» παίρνει τιμές ξεκινώντας από τον αριθμό έναρξης μέχρι τον αριθμό τέλους αυξάνοντας κάθε φορά με το καθορισμένο βήμα και εκτελώντας το καθορισμένο μπλοκ.", + "CONTROLS_FOR_TITLE": "μέτρησε με %1 από το %2 έως το %3 ανά %4", + "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", + "CONTROLS_FOREACH_TITLE": "για κάθε στοιχείο %1 στη λίστα %2", + "CONTROLS_FOREACH_TOOLTIP": "Για κάθε στοιχείο σε μια λίστα, ορίζει τη μεταβλητή «%1» στο στοιχείο και, στη συνέχεια, εκτελεί κάποιες εντολές.", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "φεύγει από το μπλοκ επαναλήψεως", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "συνέχισε με την επόμενη επανάληψη του μπλοκ επαναλήψεως", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ξεφεύγει (βγαίνει έξω) από την επανάληψη.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Παραλείπει το υπόλοιπο τμήμα αυτού του μπλοκ επαναλήψεως, και συνεχίζει με την επόμενη επανάληψη.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο μέσα σε μια επανάληψη.", + "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", + "CONTROLS_IF_TOOLTIP_1": "Αν μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές.", + "CONTROLS_IF_TOOLTIP_2": "Αν μια τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, εκτελεί το δεύτερο τμήμα εντολών.", + "CONTROLS_IF_TOOLTIP_3": "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο μπλοκ εντολών.", + "CONTROLS_IF_TOOLTIP_4": "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο τμήμα εντολών. Αν καμία από τις τιμές δεν είναι αληθής, εκτελεί το τελευταίο τμήμα εντολών.", + "CONTROLS_IF_MSG_IF": "εάν", + "CONTROLS_IF_MSG_ELSEIF": "εναλλακτικά εάν", + "CONTROLS_IF_MSG_ELSE": "αλλιώς", + "CONTROLS_IF_IF_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ «εάν».", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Πρόσθετει μια κατάσταση/συνθήκη στο μπλοκ «εάν».", + "CONTROLS_IF_ELSE_TOOLTIP": "Προσθέτει μια τελική κατάσταση/συνθήκη, που πιάνει όλες τις άλλες περιπτώσεις, στο μπλοκ «εάν».", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι ίσες μεταξύ τους.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Επιστρέφει αληθής αν και οι δύο είσοδοι δεν είναι ίσες μεταξύ τους.", + "LOGIC_COMPARE_TOOLTIP_LT": "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από τη δεύτερη είσοδο.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από ή ίση με τη δεύτερη είσοδο.", + "LOGIC_COMPARE_TOOLTIP_GT": "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μεγαλύτερη από τη δεύτερη είσοδο.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη ή ίση με τη δεύτερη είσοδο.", + "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", + "LOGIC_OPERATION_TOOLTIP_AND": "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι αληθής.", + "LOGIC_OPERATION_AND": "και", + "LOGIC_OPERATION_TOOLTIP_OR": "Επιστρέφει αληθής αν τουλάχιστον μια από τις εισόδους είναι αληθής.", + "LOGIC_OPERATION_OR": "ή", + "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", + "LOGIC_NEGATE_TITLE": "όχι %1", + "LOGIC_NEGATE_TOOLTIP": "Επιστρέφει αληθής αν η είσοδος είναι ψευδής. Επιστρέφει ψευδής αν η είσοδος είναι αληθής.", + "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", + "LOGIC_BOOLEAN_TRUE": "αληθής", + "LOGIC_BOOLEAN_FALSE": "ψευδής", + "LOGIC_BOOLEAN_TOOLTIP": "Επιστρέφει είτε αληθής είτε ψευδής.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "κενό", + "LOGIC_NULL_TOOLTIP": "Επιστρέφει κενό.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "έλεγχος", + "LOGIC_TERNARY_IF_TRUE": "εάν είναι αληθής", + "LOGIC_TERNARY_IF_FALSE": "εάν είναι ψευδής", + "LOGIC_TERNARY_TOOLTIP": "Ελέγχει την κατάσταση/συνθήκη στον «έλεγχο». Αν η κατάσταση/συνθήκη είναι αληθής, επιστρέφει την τιμή «εάν αληθής», διαφορετικά επιστρέφει την τιμή «εάν ψευδής».", + "MATH_NUMBER_HELPURL": "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82", + "MATH_NUMBER_TOOLTIP": "Ένας αριθμός.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^ ύψωση σε δύναμη", + "MATH_TRIG_SIN": "ημ", + "MATH_TRIG_COS": "συν", + "MATH_TRIG_TAN": "εφ", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CE%B7%CF%84%CE%B9%CE%BA%CE%AE", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Επιστρέφει το άθροισμα των δύο αριθμών.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Επιστρέφει τη διαφορά των δύο αριθμών.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Επιστρέφει το γινόμενο των δύο αριθμών.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Επιστρέφει το πηλίκο των δύο αριθμών.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Επιστρέφει τον πρώτο αριθμό υψωμένο στη δύναμη του δεύτερου αριθμού.", + "MATH_SINGLE_HELPURL": "https://el.wikipedia.org/wiki/%CE%A4%CE%B5%CF%84%CF%81%CE%B1%CE%B3%CF%89%CE%BD%CE%B9%CE%BA%CE%AE_%CF%81%CE%AF%CE%B6%CE%B1", + "MATH_SINGLE_OP_ROOT": "τετραγωνική ρίζα", + "MATH_SINGLE_TOOLTIP_ROOT": "Επιστρέφει την τετραγωνική ρίζα ενός αριθμού.", + "MATH_SINGLE_OP_ABSOLUTE": "απόλυτη", + "MATH_SINGLE_TOOLTIP_ABS": "Επιστρέφει την απόλυτη τιμή ενός αριθμού.", + "MATH_SINGLE_TOOLTIP_NEG": "Επιστρέφει την αρνητική ενός αριθμού.", + "MATH_SINGLE_TOOLTIP_LN": "Επιστρέφει τον νεπέρειο λογάριθμο ενός αριθμού.", + "MATH_SINGLE_TOOLTIP_LOG10": "Επιστρέφει τον λογάριθμο με βάση το 10 ενός αριθμού.", + "MATH_SINGLE_TOOLTIP_EXP": "Επιστρέφει το e υψωμένο στη δύναμη ενός αριθμού.", + "MATH_SINGLE_TOOLTIP_POW10": "Επιστρέφει το 10 υψωμένο στη δύναμη ενός αριθμού.", + "MATH_TRIG_HELPURL": "https://el.wikipedia.org/wiki/%CE%A4%CF%81%CE%B9%CE%B3%CF%89%CE%BD%CE%BF%CE%BC%CE%B5%CF%84%CF%81%CE%B9%CE%BA%CE%AE_%CF%83%CF%85%CE%BD%CE%AC%CF%81%CF%84%CE%B7%CF%83%CE%B7", + "MATH_TRIG_TOOLTIP_SIN": "Επιστρέφει το ημίτονο ενός βαθμού (όχι ακτινίου).", + "MATH_TRIG_TOOLTIP_COS": "Επιστρέφει το συνημίτονο ενός βαθμού (όχι ακτινίου).", + "MATH_TRIG_TOOLTIP_TAN": "Επιστρέφει την εφαπτομένη ενός βαθμού (όχι ακτινίου).", + "MATH_TRIG_TOOLTIP_ASIN": "Επιστρέφει το τόξο ημίτονου ενός αριθμού.", + "MATH_TRIG_TOOLTIP_ACOS": "Επιστρέφει το τόξο συνημίτονου ενός αριθμού.", + "MATH_TRIG_TOOLTIP_ATAN": "Επιστρέφει το τόξο εφαπτομένης ενός αριθμού.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Επιστρέφει μία από τις κοινές σταθερές: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...), ή ∞ (άπειρο).", + "MATH_IS_EVEN": "είναι άρτιος", + "MATH_IS_ODD": "είναι περιττός", + "MATH_IS_PRIME": "είναι πρώτος", + "MATH_IS_WHOLE": "είναι ακέραιος", + "MATH_IS_POSITIVE": "είναι θετικός", + "MATH_IS_NEGATIVE": "είναι αρνητικός", + "MATH_IS_DIVISIBLE_BY": "είναι διαιρετός από το", + "MATH_IS_TOOLTIP": "Ελέγχει αν ένας αριθμός είναι άρτιος, περιττός, πρώτος, ακέραιος, θετικός, αρνητικός, ή αν είναι διαιρετός από έναν ορισμένο αριθμό. Επιστρέφει αληθής ή ψευδής.", + "MATH_CHANGE_HELPURL": "https://el.wikipedia.org/wiki/%CE%A0%CF%81%CF%8C%CF%83%CE%B8%CE%B5%CF%83%CE%B7", + "MATH_CHANGE_TITLE": "άλλαξε %1 αυξάνοντας κατά %2", + "MATH_CHANGE_TOOLTIP": "Προσθέτει έναν αριθμό στη μεταβλητή «%1».", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Στρογγυλοποιεί έναν αριθμό προς τα πάνω ή προς τα κάτω.", + "MATH_ROUND_OPERATOR_ROUND": "στρογγυλοποίησε", + "MATH_ROUND_OPERATOR_ROUNDUP": "στρογγυλοποίησε προς τα πάνω", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "στρογγυλοποίησε προς τα κάτω", + "MATH_ONLIST_OPERATOR_SUM": "άθροισμα λίστας", + "MATH_ONLIST_TOOLTIP_SUM": "Επιστρέφει το άθροισμα όλων των αριθμών στη λίστα.", + "MATH_ONLIST_OPERATOR_MIN": "μικρότερος λίστας", + "MATH_ONLIST_TOOLTIP_MIN": "Επιστρέφει τον μικρότερο αριθμό στη λίστα.", + "MATH_ONLIST_OPERATOR_MAX": "μεγαλύτερος λίστας", + "MATH_ONLIST_TOOLTIP_MAX": "Επιστρέφει τον μεγαλύτερο αριθμό στη λίστα.", + "MATH_ONLIST_OPERATOR_AVERAGE": "μέσος όρος λίστας", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Επιστρέφει τον αριθμητικό μέσο όρο από τις αριθμητικές τιμές στη λίστα.", + "MATH_ONLIST_OPERATOR_MEDIAN": "διάμεσος λίστας", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Επιστρέφει τον διάμεσο της λίστας.", + "MATH_ONLIST_OPERATOR_MODE": "μορφές λίστας", + "MATH_ONLIST_TOOLTIP_MODE": "Επιστρέφει μια λίστα με τα πιο κοινά στοιχεία στη λίστα.", + "MATH_ONLIST_OPERATOR_STD_DEV": "τυπική απόκλιση λίστας", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Επιστρέφει την τυπική απόκλιση της λίστας.", + "MATH_ONLIST_OPERATOR_RANDOM": "τυχαίο στοιχείο λίστας", + "MATH_ONLIST_TOOLTIP_RANDOM": "Επιστρέφει ένα τυχαίο στοιχείο από τη λίστα.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "υπόλοιπο της %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Επιστρέφει το υπόλοιπο της διαίρεσης των δύο αριθμών.", + "MATH_CONSTRAIN_HELPURL": "https://en.wikipedia.org/wiki/Clamping_(graphics)", + "MATH_CONSTRAIN_TITLE": "περιόρισε %1 χαμηλή %2 υψηλή %3", + "MATH_CONSTRAIN_TOOLTIP": "Περιορίζει έναν αριθμό μεταξύ των προβλεπόμενων ορίων (χωρίς αποκλεισμούς).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "τυχαίος ακέραιος από το %1 έως το %2", + "MATH_RANDOM_INT_TOOLTIP": "Επιστρέφει έναν τυχαίο ακέραιο αριθμό μεταξύ δύο συγκεκριμένων ορίων (εντός - συμπεριλαμβανομένων και των ακραίων τιμών).", + "MATH_RANDOM_FLOAT_HELPURL": "https://el.wikipedia.org/wiki/%CE%93%CE%B5%CE%BD%CE%BD%CE%AE%CF%84%CF%81%CE%B9%CE%B1_%CE%A4%CF%85%CF%87%CE%B1%CE%AF%CF%89%CE%BD_%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8E%CE%BD", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "τυχαίο κλάσμα", + "MATH_RANDOM_FLOAT_TOOLTIP": "Επιστρέψει ένα τυχαία κλάσμα μεταξύ 0,0 (κλειστό) και 1,0 (ανοικτό).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 από X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Επιστρέφει την διαφορά τόξου των σημείων (X, Y) σε μοίρες από -180 σε 180.", + "TEXT_TEXT_HELPURL": "https://el.wikipedia.org/wiki/%CE%A3%CF%85%CE%BC%CE%B2%CE%BF%CE%BB%CE%BF%CF%83%CE%B5%CE%B9%CF%81%CE%AC", + "TEXT_TEXT_TOOLTIP": "Ένα γράμμα, μια λέξη ή μια γραμμή κειμένου.", + "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", + "TEXT_JOIN_TITLE_CREATEWITH": "δημιούργησε κείμενο με", + "TEXT_JOIN_TOOLTIP": "Δημιουργεί ένα κομμάτι κειμένου ενώνοντας έναν απεριόριστο αριθμό αντικειμένων.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "ένωσε", + "TEXT_CREATE_JOIN_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει τους τομείς για να αναδιαμορφώσει αυτό το μπλοκ κειμένου.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Προσθέτει ένα στοιχείο στο κείμενο.", + "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_APPEND_TITLE": "έως %1 ανάθεσε κείμενο %2", + "TEXT_APPEND_TOOLTIP": "Αναθέτει κείμενο στη μεταβλητή «%1».", + "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_LENGTH_TITLE": "το μήκος του %1", + "TEXT_LENGTH_TOOLTIP": "Επιστρέφει το πλήθος των γραμμάτων (συμπεριλαμβανομένων και των κενών διαστημάτων) στο παρεχόμενο κείμενο.", + "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", + "TEXT_ISEMPTY_TITLE": "το %1 είναι κενό", + "TEXT_ISEMPTY_TOOLTIP": "Επιστρέφει αληθής αν το παρεχόμενο κείμενο είναι κενό.", + "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", + "TEXT_INDEXOF_TOOLTIP": "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του πρώτου κειμένου στο δεύτερο κείμενο. Επιστρέφει τιμή %1, αν δε βρει το κείμενο.", + "TEXT_INDEXOF_TITLE": "στο κείμενο %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "βρες την πρώτη εμφάνιση του κειμένου", + "TEXT_INDEXOF_OPERATOR_LAST": "βρες την τελευταία εμφάνιση του κειμένου", + "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", + "TEXT_CHARAT_TITLE": "στο κείμενο %1 %2", + "TEXT_CHARAT_FROM_START": "πάρε το γράμμα #", + "TEXT_CHARAT_FROM_END": "πάρε το γράμμα # από το τέλος", + "TEXT_CHARAT_FIRST": "πάρε το πρώτο γράμμα", + "TEXT_CHARAT_LAST": "πάρε το τελευταίο γράμμα", + "TEXT_CHARAT_RANDOM": "πάρε τυχαίο γράμμα", + "TEXT_CHARAT_TOOLTIP": "Επιστρέφει το γράμμα στην καθορισμένη θέση.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Επιστρέφει ένα συγκεκριμένο τμήμα του κειμένου.", + "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "στο κείμενο", + "TEXT_GET_SUBSTRING_START_FROM_START": "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα", + "TEXT_GET_SUBSTRING_START_FROM_END": "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα από το τέλος", + "TEXT_GET_SUBSTRING_START_FIRST": "πάρε τη δευτερεύουσα συμβολοσειρά από το πρώτο γράμμα", + "TEXT_GET_SUBSTRING_END_FROM_START": "μέχρι το # γράμμα", + "TEXT_GET_SUBSTRING_END_FROM_END": "μέχρι το # γράμμα από το τέλος", + "TEXT_GET_SUBSTRING_END_LAST": "μέχρι το τελευταίο γράμμα", + "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", + "TEXT_CHANGECASE_TOOLTIP": "Επιστρέφει ένα αντίγραφο του κειμένου σε διαφορετική μορφή γραμμάτων.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "σε ΚΕΦΑΛΑΙΑ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "σε πεζά", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "σε Λέξεις Με Πρώτα Κεφαλαία", + "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", + "TEXT_TRIM_TOOLTIP": "Επιστρέφει ένα αντίγραφο του κειμένου με αφαιρεμένα τα κενά από το ένα ή και τα δύο άκρα.", + "TEXT_TRIM_OPERATOR_BOTH": "περίκοψε τα κενά και από τις δυο πλευρές του", + "TEXT_TRIM_OPERATOR_LEFT": "περίκοψε τα κενά από την αριστερή πλευρά του", + "TEXT_TRIM_OPERATOR_RIGHT": "περίκοψε τα κενά από την δεξιά πλευρά του", + "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", + "TEXT_PRINT_TITLE": "εκτύπωσε %1", + "TEXT_PRINT_TOOLTIP": "Εκτυπώνει το καθορισμένο κείμενο, αριθμό ή άλλη τιμή.", + "TEXT_PROMPT_TYPE_TEXT": "πρότρεψε με μήνυμα για να δοθεί κείμενο", + "TEXT_PROMPT_TYPE_NUMBER": "πρότρεψε με μήνυμα για να δοθεί αριθμός", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Δημιουργεί προτροπή για τον χρήστη για να δώσει ένα αριθμό.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Δημιουργεί προτροπή για το χρήστη για να δώσει κάποιο κείμενο.", + "TEXT_COUNT_MESSAGE0": "αριθμός %1 σε %2", + "TEXT_COUNT_TOOLTIP": "Μετρά πόσες φορές κάποιο κείμενο εμφανίζεται μέσα σε ένα άλλο κείμενο.", + "TEXT_REPLACE_MESSAGE0": "αντικαταστήσετε το %1 με %2 σε %3", + "TEXT_REPLACE_TOOLTIP": "Αντικαταστήστε όλα τα ήδη υπάρχοντα στοιχεία μέρους του κειμένου με κάποιο άλλο κείμενο", + "TEXT_REVERSE_MESSAGE0": "ανάκληση %1", + "TEXT_REVERSE_TOOLTIP": "Αναγραμματισμός των χαρακτήρων του κειμένου", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "δημιούργησε κενή λίστα", + "LISTS_CREATE_EMPTY_TOOLTIP": "Επιστρέφει μια λίστα, με μήκος 0, η οποία δεν περιέχει εγγραφές δεδομένων", + "LISTS_CREATE_WITH_TOOLTIP": "Δημιουργεί λίστα με οποιονδήποτε αριθμό αντικειμένων.", + "LISTS_CREATE_WITH_INPUT_WITH": "δημιούργησε λίστα με", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "λίστα", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ λίστας.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Προσθέτει αντικείμενο στη λίστα.", + "LISTS_REPEAT_HELPURL": "Blockly", + "LISTS_REPEAT_TOOLTIP": "Δημιουργεί μια λίστα που αποτελείται από την δεδομένη τιμή που επαναλαμβάνεται για συγκεκριμένο αριθμό επαναλήψεων.", + "LISTS_REPEAT_TITLE": "δημιούργησε λίστα με το στοιχείο %1 να επαναλαμβάνεται %2 φορές", + "LISTS_LENGTH_HELPURL": "Blockly", + "LISTS_LENGTH_TITLE": "το μήκος του %1", + "LISTS_LENGTH_TOOLTIP": "Επιστρέφει το μήκος μιας λίστας.", + "LISTS_ISEMPTY_TITLE": "το %1 είναι κενό", + "LISTS_ISEMPTY_TOOLTIP": "Επιστρέφει αληθής αν η λίστα είναι κενή.", + "LISTS_INLIST": "στη λίστα", + "LISTS_INDEX_OF_HELPURL": "Blockly", + "LISTS_INDEX_OF_FIRST": "βρες την πρώτη εμφάνιση του στοιχείου", + "LISTS_INDEX_OF_LAST": "βρες την τελευταία εμφάνιση του στοιχείου", + "LISTS_INDEX_OF_TOOLTIP": "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του στοιχείου στη λίστα. Επιστρέφει τιμή %1, αν το στοιχείο δεν βρεθεί.", + "LISTS_GET_INDEX_GET": "πάρε", + "LISTS_GET_INDEX_GET_REMOVE": "πάρε και αφαίρεσε", + "LISTS_GET_INDEX_REMOVE": "αφαίρεσε", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# από το τέλος", + "LISTS_GET_INDEX_FIRST": "πρώτο", + "LISTS_GET_INDEX_LAST": "τελευταίο", + "LISTS_GET_INDEX_RANDOM": "τυχαίο", + "LISTS_INDEX_FROM_START_TOOLTIP": "Το %1 είναι το πρώτο στοιχείο.", + "LISTS_INDEX_FROM_END_TOOLTIP": "Το %1 είναι το τελευταίο στοιχείο.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Επιστρέφει το πρώτο στοιχείο σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Επιστρέφει το τελευταίο στοιχείο σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Καταργεί και επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Καταργεί και επιστρέφει το πρώτο στοιχείο σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Καταργεί και επιστρέφει το τελευταίο στοιχείο σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Καταργεί και επιστρέφει ένα τυχαίο στοιχείο σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Καταργεί το στοιχείο στην καθορισμένη θέση σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Καταργεί το πρώτο στοιχείο σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Καταργεί το τελευταίο στοιχείο σε μια λίστα.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Καταργεί ένα τυχαίο στοιχείο σε μια λίστα.", + "LISTS_SET_INDEX_SET": "όρισε", + "LISTS_SET_INDEX_INSERT": "είσαγε στο", + "LISTS_SET_INDEX_INPUT_TO": "σε", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ορίζει το στοιχείο στην καθορισμένη θέση σε μια λίστα.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Ορίζει το πρώτο στοιχείο σε μια λίστα.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Ορίζει το τελευταίο στοιχείο σε μια λίστα.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Ορίζει ένα τυχαίο στοιχείο σε μια λίστα.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Εισάγει το στοιχείο στην καθορισμένη θέση σε μια λίστα.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Εισάγει το στοιχείο στην αρχή μιας λίστας.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Αναθέτει το στοιχείο στο τέλος μιας λίστας.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Εισάγει το στοιχείο τυχαία σε μια λίστα.", + "LISTS_GET_SUBLIST_HELPURL": "Blockly", + "LISTS_GET_SUBLIST_START_FROM_START": "πάρε υπολίστα από #", + "LISTS_GET_SUBLIST_START_FROM_END": "πάρε υπολίστα από # από το τέλος", + "LISTS_GET_SUBLIST_START_FIRST": "πάρε υπολίστα από την αρχή", + "LISTS_GET_SUBLIST_END_FROM_START": "έως #", + "LISTS_GET_SUBLIST_END_FROM_END": "έως # από το τέλος", + "LISTS_GET_SUBLIST_END_LAST": "έως το τελευταίο", + "LISTS_GET_SUBLIST_TOOLTIP": "Δημιουργεί ένα αντίγραφο του καθορισμένου τμήματος μιας λίστας.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "επιλογή %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Επιλέξετε ένα αντίγραφο της λίστας.", + "LISTS_SORT_ORDER_ASCENDING": "Αύξουσα", + "LISTS_SORT_ORDER_DESCENDING": "Φθίνουσα", + "LISTS_SORT_TYPE_NUMERIC": "αριθμητικό", + "LISTS_SORT_TYPE_TEXT": "Αλφαβητικά", + "LISTS_SORT_TYPE_IGNORECASE": "αλφαβητικά, αγνοήστε το στοιχείο", + "LISTS_SPLIT_LIST_FROM_TEXT": "κάνετε λίστα από το κείμενο", + "LISTS_SPLIT_TEXT_FROM_LIST": "κάνετε κείμενο από τη λίστα", + "LISTS_SPLIT_WITH_DELIMITER": "με διαχωριστικό", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Διαίρεση του κειμένου σε μια λίστα κειμένων, με σπάσιμο σε κάθε διαχωριστικό.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Ενώστε μια λίστα κειμένων σε ένα κείμενο, που χωρίζονται από ένα διαχωριστικό.", + "LISTS_REVERSE_MESSAGE0": "ανάκληση %1", + "LISTS_REVERSE_TOOLTIP": "Α", + "VARIABLES_GET_TOOLTIP": "Επιστρέφει την τιμή αυτής της μεταβλητής.", + "VARIABLES_GET_CREATE_SET": "Δημιούργησε «όρισε %1»", + "VARIABLES_SET": "ανάθεσε στην %1 το %2", + "VARIABLES_SET_TOOLTIP": "Ορίζει αυτή τη μεταβλητή να είναι ίση με την είσοδο.", + "VARIABLES_SET_CREATE_GET": "Δημιούργησε «πάρε %1»", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "στο", + "PROCEDURES_DEFNORETURN_PROCEDURE": "κάνε κάτι", + "PROCEDURES_BEFORE_PARAMS": "με:", + "PROCEDURES_CALL_BEFORE_PARAMS": "με:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Δημιουργεί μια συνάρτηση χωρίς έξοδο.", + "PROCEDURES_DEFNORETURN_COMMENT": "Περιγράψετε αυτήν την ιδιότητα..", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFRETURN_RETURN": "επέστρεψε", + "PROCEDURES_DEFRETURN_TOOLTIP": "Δημιουργεί μια συνάρτηση με μια έξοδο.", + "PROCEDURES_ALLOW_STATEMENTS": "να επιτρέπονται οι δηλώσεις", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Προειδοποίηση: Αυτή η συνάρτηση έχει διπλότυπες παραμέτρους.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1».", + "PROCEDURES_CALLRETURN_HELPURL": "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29", + "PROCEDURES_CALLRETURN_TOOLTIP": "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1» και χρησιμοποίησε την έξοδό της.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "είσοδοι", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει εισόδους σε αυτήν τη λειτουργία", + "PROCEDURES_MUTATORARG_TITLE": "όνομα εισόδου:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Πρόσθεσε μια είσοδος στη συνάρτηση", + "PROCEDURES_HIGHLIGHT_DEF": "Επισημάνετε τον ορισμό συνάρτησης", + "PROCEDURES_CREATE_DO": "Δημιούργησε «%1»", + "PROCEDURES_IFRETURN_TOOLTIP": "Αν μια τιμή είναι αληθής, τότε επιστρέφει τη δεύτερη τιμή.", + "PROCEDURES_IFRETURN_WARNING": "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο στον ορισμό μιας συνάρτησης.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Πείτε κάτι...", + "WORKSPACE_ARIA_LABEL": "Χώρος εργασίας Blockly", + "COLLAPSED_WARNINGS_WARNING": "Υπάρχουν προειδοποιήσεις για συμπτυγμένα μπλοκ.", + "DIALOG_OK": "Εντάξει", + "DIALOG_CANCEL": "Ακύρωση" +} diff --git a/msg/json/en-gb.json b/msg/json/en-gb.json index ae7d81b1385..d00f09fdbde 100644 --- a/msg/json/en-gb.json +++ b/msg/json/en-gb.json @@ -1,212 +1,212 @@ -{ - "@metadata": { - "authors": [ - "Aefgh39622", - "Andibing", - "Bjh21", - "Codynguyen1116", - "Shirayuki" - ] - }, - "VARIABLES_DEFAULT_NAME": "item", - "TODAY": "Today", - "DUPLICATE_BLOCK": "Duplicate", - "ADD_COMMENT": "Add Comment", - "REMOVE_COMMENT": "Remove Comment", - "EXTERNAL_INPUTS": "External Inputs", - "INLINE_INPUTS": "Inline Inputs", - "DELETE_BLOCK": "Delete Block", - "DELETE_X_BLOCKS": "Delete %1 Blocks", - "DELETE_ALL_BLOCKS": "Delete all %1 blocks?", - "CLEAN_UP": "Clean up Blocks", - "COLLAPSE_BLOCK": "Collapse Block", - "COLLAPSE_ALL": "Collapse Blocks", - "EXPAND_BLOCK": "Expand Block", - "EXPAND_ALL": "Expand Blocks", - "DISABLE_BLOCK": "Disable Block", - "ENABLE_BLOCK": "Enable Block", - "HELP": "Help", - "UNDO": "Undo", - "REDO": "Redo", - "CHANGE_VALUE_TITLE": "Change value:", - "RENAME_VARIABLE": "Rename variable...", - "RENAME_VARIABLE_TITLE": "Rename all '%1' variables to:", - "NEW_VARIABLE": "Create variable...", - "NEW_VARIABLE_TITLE": "New variable name:", - "VARIABLE_ALREADY_EXISTS": "A variable named '%1' already exists.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "A variable named '%1' already exists for another type: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Delete %1 uses of the '%2' variable?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Can't delete the variable '%1' because it's part of the definition of the function '%2'", - "DELETE_VARIABLE": "Delete the '%1' variable", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Colour", - "COLOUR_PICKER_TOOLTIP": "Choose a colour from the palette.", - "COLOUR_RANDOM_TITLE": "random colour", - "COLOUR_RANDOM_TOOLTIP": "Choose a colour at random.", - "COLOUR_RGB_TITLE": "colour with", - "COLOUR_RGB_RED": "red", - "COLOUR_RGB_GREEN": "green", - "COLOUR_RGB_BLUE": "blue", - "COLOUR_RGB_TOOLTIP": "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.", - "COLOUR_BLEND_TITLE": "blend", - "COLOUR_BLEND_COLOUR1": "colour 1", - "COLOUR_BLEND_COLOUR2": "colour 2", - "COLOUR_BLEND_RATIO": "ratio", - "COLOUR_BLEND_TOOLTIP": "Blends two colours together with a given ratio (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "repeat %1 times", - "CONTROLS_REPEAT_INPUT_DO": "do", - "CONTROLS_REPEAT_TOOLTIP": "Do some statements several times.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repeat while", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repeat until", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "While a value is true, then do some statements.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "While a value is false, then do some statements.", - "CONTROLS_FOR_TOOLTIP": "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.", - "CONTROLS_FOR_TITLE": "count with %1 from %2 to %3 by %4", - "CONTROLS_FOREACH_TITLE": "for each item %1 in list %2", - "CONTROLS_FOREACH_TOOLTIP": "For each item in a list, set the variable '%1' to the item, and then do some statements.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "break out of loop", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continue with next iteration of loop", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Break out of the containing loop.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Skip the rest of this loop, and continue with the next iteration.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Warning: This block may only be used within a loop.", - "CONTROLS_IF_TOOLTIP_1": "If a value is true, then do some statements.", - "CONTROLS_IF_TOOLTIP_2": "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.", - "CONTROLS_IF_TOOLTIP_3": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.", - "CONTROLS_IF_TOOLTIP_4": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.", - "CONTROLS_IF_MSG_IF": "if", - "CONTROLS_IF_MSG_ELSEIF": "else if", - "CONTROLS_IF_MSG_ELSE": "else", - "CONTROLS_IF_IF_TOOLTIP": "Add, remove, or reorder sections to reconfigure this if block.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Add a condition to the if block.", - "CONTROLS_IF_ELSE_TOOLTIP": "Add a final, catch-all condition to the if block.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Return true if both inputs equal each other.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Return true if both inputs are not equal to each other.", - "LOGIC_COMPARE_TOOLTIP_LT": "Return true if the first input is smaller than the second input.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Return true if the first input is smaller than or equal to the second input.", - "LOGIC_COMPARE_TOOLTIP_GT": "Return true if the first input is greater than the second input.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Return true if the first input is greater than or equal to the second input.", - "LOGIC_OPERATION_TOOLTIP_AND": "Return true if both inputs are true.", - "LOGIC_OPERATION_AND": "and", - "LOGIC_OPERATION_TOOLTIP_OR": "Return true if at least one of the inputs is true.", - "LOGIC_OPERATION_OR": "or", - "LOGIC_NEGATE_TITLE": "not %1", - "LOGIC_NEGATE_TOOLTIP": "Returns true if the input is false. Returns false if the input is true.", - "LOGIC_BOOLEAN_TRUE": "true", - "LOGIC_BOOLEAN_FALSE": "false", - "LOGIC_BOOLEAN_TOOLTIP": "Returns either true or false.", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Returns null.", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "if true", - "LOGIC_TERNARY_IF_FALSE": "if false", - "LOGIC_TERNARY_TOOLTIP": "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "A number.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Return the sum of the two numbers.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Return the difference of the two numbers.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Return the product of the two numbers.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Return the quotient of the two numbers.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Return the first number raised to the power of the second number.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "square root", - "MATH_SINGLE_TOOLTIP_ROOT": "Return the square root of a number.", - "MATH_SINGLE_OP_ABSOLUTE": "absolute", - "MATH_SINGLE_TOOLTIP_ABS": "Return the absolute value of a number.", - "MATH_SINGLE_TOOLTIP_NEG": "Return the negation of a number.", - "MATH_SINGLE_TOOLTIP_LN": "Return the natural logarithm of a number.", - "MATH_SINGLE_TOOLTIP_LOG10": "Return the base 10 logarithm of a number.", - "MATH_SINGLE_TOOLTIP_EXP": "Return e to the power of a number.", - "MATH_SINGLE_TOOLTIP_POW10": "Return 10 to the power of a number.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Return the sine of a degree (not radian).", - "MATH_TRIG_TOOLTIP_COS": "Return the cosine of a degree (not radian).", - "MATH_TRIG_TOOLTIP_TAN": "Return the tangent of a degree (not radian).", - "MATH_TRIG_TOOLTIP_ASIN": "Return the arcsine of a number.", - "MATH_TRIG_TOOLTIP_ACOS": "Return the arccosine of a number.", - "MATH_TRIG_TOOLTIP_ATAN": "Return the arctangent of a number.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", - "MATH_IS_EVEN": "is even", - "MATH_IS_ODD": "is odd", - "MATH_IS_PRIME": "is prime", - "MATH_IS_WHOLE": "is whole", - "MATH_IS_POSITIVE": "is positive", - "MATH_IS_NEGATIVE": "is negative", - "MATH_IS_DIVISIBLE_BY": "is divisible by", - "MATH_IS_TOOLTIP": "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "change %1 by %2", - "MATH_CHANGE_TOOLTIP": "Add a number to variable '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Round a number up or down.", - "MATH_ROUND_OPERATOR_ROUND": "round", - "MATH_ROUND_OPERATOR_ROUNDUP": "round up", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "round down", - "MATH_ONLIST_OPERATOR_SUM": "sum of list", - "MATH_ONLIST_TOOLTIP_SUM": "Return the sum of all the numbers in the list.", - "MATH_ONLIST_OPERATOR_MIN": "min of list", - "MATH_ONLIST_TOOLTIP_MIN": "Return the smallest number in the list.", - "MATH_ONLIST_OPERATOR_MAX": "max of list", - "MATH_ONLIST_TOOLTIP_MAX": "Return the largest number in the list.", - "MATH_ONLIST_OPERATOR_AVERAGE": "average of list", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Return the average (arithmetic mean) of the numeric values in the list.", - "MATH_ONLIST_OPERATOR_MEDIAN": "median of list", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Return the median number in the list.", - "MATH_ONLIST_OPERATOR_MODE": "modes of list", - "MATH_ONLIST_TOOLTIP_MODE": "Return a list of the most common item(s) in the list.", - "MATH_ONLIST_OPERATOR_STD_DEV": "standard deviation of list", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Return the standard deviation of the list.", - "MATH_ONLIST_OPERATOR_RANDOM": "random item of list", - "MATH_ONLIST_TOOLTIP_RANDOM": "Return a random element from the list.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "remainder of %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Return the remainder from dividing the two numbers.", - "MATH_CONSTRAIN_TITLE": "constrain %1 low %2 high %3", - "MATH_CONSTRAIN_TOOLTIP": "Constrain a number to be between the specified limits (inclusive).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "random integer from %1 to %2", - "MATH_RANDOM_INT_TOOLTIP": "Return a random integer between the two specified limits, inclusive.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "random fraction", - "MATH_RANDOM_FLOAT_TOOLTIP": "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "A letter, word, or line of text.", - "TEXT_JOIN_TITLE_CREATEWITH": "create text with", - "TEXT_JOIN_TOOLTIP": "Create a piece of text by joining together any number of items.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "join", - "TEXT_CREATE_JOIN_TOOLTIP": "Add, remove, or reorder sections to reconfigure this text block.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Add an item to the text.", - "TEXT_APPEND_TITLE": "to %1 append text %2", - "TEXT_APPEND_TOOLTIP": "Append some text to variable '%1'.", - "TEXT_LENGTH_TITLE": "length of %1", - "TEXT_LENGTH_TOOLTIP": "Returns the number of letters (including spaces) in the provided text.", - "TEXT_ISEMPTY_TITLE": "%1 is empty", - "TEXT_ISEMPTY_TOOLTIP": "Returns true if the provided text is empty.", - "TEXT_INDEXOF_TOOLTIP": "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.", - "TEXT_INDEXOF_TITLE": "in text %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "find first occurrence of text", - "TEXT_INDEXOF_OPERATOR_LAST": "find last occurrence of text", - "TEXT_CHARAT_TITLE": "in text %1 %2", - "TEXT_CHARAT_FROM_START": "get letter #", - "TEXT_CHARAT_FROM_END": "get letter # from end", - "TEXT_CHARAT_FIRST": "get first letter", - "TEXT_CHARAT_LAST": "get last letter", - "TEXT_CHARAT_RANDOM": "get random letter", - "TEXT_CHARAT_TOOLTIP": "Returns the letter at the specified position.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Returns a specified portion of the text.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in text", - "TEXT_GET_SUBSTRING_START_FROM_START": "get substring from letter #", - "TEXT_GET_SUBSTRING_START_FROM_END": "get substring from letter # from end", - "TEXT_GET_SUBSTRING_START_FIRST": "get substring from first letter", - "TEXT_GET_SUBSTRING_END_FROM_START": "to letter #", - "TEXT_GET_SUBSTRING_END_FROM_END": "to letter # from end", - "TEXT_GET_SUBSTRING_END_LAST": "to last letter", - "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "to UPPER CASE", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "to lower case", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "to Title Case", - "TEXT_TRIM_TOOLTIP": "Return a copy of the text with spaces removed from one or both ends.", - "LISTS_SORT_ORDER_DESCENDING": "descendente" -} +{ + "@metadata": { + "authors": [ + "Aefgh39622", + "Andibing", + "Bjh21", + "Codynguyen1116", + "Shirayuki" + ] + }, + "VARIABLES_DEFAULT_NAME": "item", + "TODAY": "Today", + "DUPLICATE_BLOCK": "Duplicate", + "ADD_COMMENT": "Add Comment", + "REMOVE_COMMENT": "Remove Comment", + "EXTERNAL_INPUTS": "External Inputs", + "INLINE_INPUTS": "Inline Inputs", + "DELETE_BLOCK": "Delete Block", + "DELETE_X_BLOCKS": "Delete %1 Blocks", + "DELETE_ALL_BLOCKS": "Delete all %1 blocks?", + "CLEAN_UP": "Clean up Blocks", + "COLLAPSE_BLOCK": "Collapse Block", + "COLLAPSE_ALL": "Collapse Blocks", + "EXPAND_BLOCK": "Expand Block", + "EXPAND_ALL": "Expand Blocks", + "DISABLE_BLOCK": "Disable Block", + "ENABLE_BLOCK": "Enable Block", + "HELP": "Help", + "UNDO": "Undo", + "REDO": "Redo", + "CHANGE_VALUE_TITLE": "Change value:", + "RENAME_VARIABLE": "Rename variable...", + "RENAME_VARIABLE_TITLE": "Rename all '%1' variables to:", + "NEW_VARIABLE": "Create variable...", + "NEW_VARIABLE_TITLE": "New variable name:", + "VARIABLE_ALREADY_EXISTS": "A variable named '%1' already exists.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "A variable named '%1' already exists for another type: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Delete %1 uses of the '%2' variable?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Can't delete the variable '%1' because it's part of the definition of the function '%2'", + "DELETE_VARIABLE": "Delete the '%1' variable", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Colour", + "COLOUR_PICKER_TOOLTIP": "Choose a colour from the palette.", + "COLOUR_RANDOM_TITLE": "random colour", + "COLOUR_RANDOM_TOOLTIP": "Choose a colour at random.", + "COLOUR_RGB_TITLE": "colour with", + "COLOUR_RGB_RED": "red", + "COLOUR_RGB_GREEN": "green", + "COLOUR_RGB_BLUE": "blue", + "COLOUR_RGB_TOOLTIP": "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.", + "COLOUR_BLEND_TITLE": "blend", + "COLOUR_BLEND_COLOUR1": "colour 1", + "COLOUR_BLEND_COLOUR2": "colour 2", + "COLOUR_BLEND_RATIO": "ratio", + "COLOUR_BLEND_TOOLTIP": "Blends two colours together with a given ratio (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "repeat %1 times", + "CONTROLS_REPEAT_INPUT_DO": "do", + "CONTROLS_REPEAT_TOOLTIP": "Do some statements several times.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repeat while", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repeat until", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "While a value is true, then do some statements.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "While a value is false, then do some statements.", + "CONTROLS_FOR_TOOLTIP": "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.", + "CONTROLS_FOR_TITLE": "count with %1 from %2 to %3 by %4", + "CONTROLS_FOREACH_TITLE": "for each item %1 in list %2", + "CONTROLS_FOREACH_TOOLTIP": "For each item in a list, set the variable '%1' to the item, and then do some statements.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "break out of loop", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continue with next iteration of loop", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Break out of the containing loop.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Skip the rest of this loop, and continue with the next iteration.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Warning: This block may only be used within a loop.", + "CONTROLS_IF_TOOLTIP_1": "If a value is true, then do some statements.", + "CONTROLS_IF_TOOLTIP_2": "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.", + "CONTROLS_IF_TOOLTIP_3": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.", + "CONTROLS_IF_TOOLTIP_4": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.", + "CONTROLS_IF_MSG_IF": "if", + "CONTROLS_IF_MSG_ELSEIF": "else if", + "CONTROLS_IF_MSG_ELSE": "else", + "CONTROLS_IF_IF_TOOLTIP": "Add, remove, or reorder sections to reconfigure this if block.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Add a condition to the if block.", + "CONTROLS_IF_ELSE_TOOLTIP": "Add a final, catch-all condition to the if block.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Return true if both inputs equal each other.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Return true if both inputs are not equal to each other.", + "LOGIC_COMPARE_TOOLTIP_LT": "Return true if the first input is smaller than the second input.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Return true if the first input is smaller than or equal to the second input.", + "LOGIC_COMPARE_TOOLTIP_GT": "Return true if the first input is greater than the second input.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Return true if the first input is greater than or equal to the second input.", + "LOGIC_OPERATION_TOOLTIP_AND": "Return true if both inputs are true.", + "LOGIC_OPERATION_AND": "and", + "LOGIC_OPERATION_TOOLTIP_OR": "Return true if at least one of the inputs is true.", + "LOGIC_OPERATION_OR": "or", + "LOGIC_NEGATE_TITLE": "not %1", + "LOGIC_NEGATE_TOOLTIP": "Returns true if the input is false. Returns false if the input is true.", + "LOGIC_BOOLEAN_TRUE": "true", + "LOGIC_BOOLEAN_FALSE": "false", + "LOGIC_BOOLEAN_TOOLTIP": "Returns either true or false.", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Returns null.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "if true", + "LOGIC_TERNARY_IF_FALSE": "if false", + "LOGIC_TERNARY_TOOLTIP": "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "A number.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Return the sum of the two numbers.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Return the difference of the two numbers.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Return the product of the two numbers.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Return the quotient of the two numbers.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Return the first number raised to the power of the second number.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "square root", + "MATH_SINGLE_TOOLTIP_ROOT": "Return the square root of a number.", + "MATH_SINGLE_OP_ABSOLUTE": "absolute", + "MATH_SINGLE_TOOLTIP_ABS": "Return the absolute value of a number.", + "MATH_SINGLE_TOOLTIP_NEG": "Return the negation of a number.", + "MATH_SINGLE_TOOLTIP_LN": "Return the natural logarithm of a number.", + "MATH_SINGLE_TOOLTIP_LOG10": "Return the base 10 logarithm of a number.", + "MATH_SINGLE_TOOLTIP_EXP": "Return e to the power of a number.", + "MATH_SINGLE_TOOLTIP_POW10": "Return 10 to the power of a number.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Return the sine of a degree (not radian).", + "MATH_TRIG_TOOLTIP_COS": "Return the cosine of a degree (not radian).", + "MATH_TRIG_TOOLTIP_TAN": "Return the tangent of a degree (not radian).", + "MATH_TRIG_TOOLTIP_ASIN": "Return the arcsine of a number.", + "MATH_TRIG_TOOLTIP_ACOS": "Return the arccosine of a number.", + "MATH_TRIG_TOOLTIP_ATAN": "Return the arctangent of a number.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", + "MATH_IS_EVEN": "is even", + "MATH_IS_ODD": "is odd", + "MATH_IS_PRIME": "is prime", + "MATH_IS_WHOLE": "is whole", + "MATH_IS_POSITIVE": "is positive", + "MATH_IS_NEGATIVE": "is negative", + "MATH_IS_DIVISIBLE_BY": "is divisible by", + "MATH_IS_TOOLTIP": "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "change %1 by %2", + "MATH_CHANGE_TOOLTIP": "Add a number to variable '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Round a number up or down.", + "MATH_ROUND_OPERATOR_ROUND": "round", + "MATH_ROUND_OPERATOR_ROUNDUP": "round up", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "round down", + "MATH_ONLIST_OPERATOR_SUM": "sum of list", + "MATH_ONLIST_TOOLTIP_SUM": "Return the sum of all the numbers in the list.", + "MATH_ONLIST_OPERATOR_MIN": "min of list", + "MATH_ONLIST_TOOLTIP_MIN": "Return the smallest number in the list.", + "MATH_ONLIST_OPERATOR_MAX": "max of list", + "MATH_ONLIST_TOOLTIP_MAX": "Return the largest number in the list.", + "MATH_ONLIST_OPERATOR_AVERAGE": "average of list", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Return the average (arithmetic mean) of the numeric values in the list.", + "MATH_ONLIST_OPERATOR_MEDIAN": "median of list", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Return the median number in the list.", + "MATH_ONLIST_OPERATOR_MODE": "modes of list", + "MATH_ONLIST_TOOLTIP_MODE": "Return a list of the most common item(s) in the list.", + "MATH_ONLIST_OPERATOR_STD_DEV": "standard deviation of list", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Return the standard deviation of the list.", + "MATH_ONLIST_OPERATOR_RANDOM": "random item of list", + "MATH_ONLIST_TOOLTIP_RANDOM": "Return a random element from the list.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "remainder of %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Return the remainder from dividing the two numbers.", + "MATH_CONSTRAIN_TITLE": "constrain %1 low %2 high %3", + "MATH_CONSTRAIN_TOOLTIP": "Constrain a number to be between the specified limits (inclusive).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "random integer from %1 to %2", + "MATH_RANDOM_INT_TOOLTIP": "Return a random integer between the two specified limits, inclusive.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "random fraction", + "MATH_RANDOM_FLOAT_TOOLTIP": "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "A letter, word, or line of text.", + "TEXT_JOIN_TITLE_CREATEWITH": "create text with", + "TEXT_JOIN_TOOLTIP": "Create a piece of text by joining together any number of items.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "join", + "TEXT_CREATE_JOIN_TOOLTIP": "Add, remove, or reorder sections to reconfigure this text block.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Add an item to the text.", + "TEXT_APPEND_TITLE": "to %1 append text %2", + "TEXT_APPEND_TOOLTIP": "Append some text to variable '%1'.", + "TEXT_LENGTH_TITLE": "length of %1", + "TEXT_LENGTH_TOOLTIP": "Returns the number of letters (including spaces) in the provided text.", + "TEXT_ISEMPTY_TITLE": "%1 is empty", + "TEXT_ISEMPTY_TOOLTIP": "Returns true if the provided text is empty.", + "TEXT_INDEXOF_TOOLTIP": "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.", + "TEXT_INDEXOF_TITLE": "in text %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "find first occurrence of text", + "TEXT_INDEXOF_OPERATOR_LAST": "find last occurrence of text", + "TEXT_CHARAT_TITLE": "in text %1 %2", + "TEXT_CHARAT_FROM_START": "get letter #", + "TEXT_CHARAT_FROM_END": "get letter # from end", + "TEXT_CHARAT_FIRST": "get first letter", + "TEXT_CHARAT_LAST": "get last letter", + "TEXT_CHARAT_RANDOM": "get random letter", + "TEXT_CHARAT_TOOLTIP": "Returns the letter at the specified position.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Returns a specified portion of the text.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in text", + "TEXT_GET_SUBSTRING_START_FROM_START": "get substring from letter #", + "TEXT_GET_SUBSTRING_START_FROM_END": "get substring from letter # from end", + "TEXT_GET_SUBSTRING_START_FIRST": "get substring from first letter", + "TEXT_GET_SUBSTRING_END_FROM_START": "to letter #", + "TEXT_GET_SUBSTRING_END_FROM_END": "to letter # from end", + "TEXT_GET_SUBSTRING_END_LAST": "to last letter", + "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "to UPPER CASE", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "to lower case", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "to Title Case", + "TEXT_TRIM_TOOLTIP": "Return a copy of the text with spaces removed from one or both ends.", + "LISTS_SORT_ORDER_DESCENDING": "descendente" +} diff --git a/msg/json/en.json b/msg/json/en.json index 3830c17987f..26b4f44ad80 100644 --- a/msg/json/en.json +++ b/msg/json/en.json @@ -1,397 +1,410 @@ -{ - "@metadata": { - "author": "Ellen Spertus ", - "lastupdated": "2021-07-01 14:44:40.033432", - "locale": "en", - "messagedocumentation" : "qqq" - }, - "VARIABLES_DEFAULT_NAME": "item", - "UNNAMED_KEY": "unnamed", - "TODAY": "Today", - "DUPLICATE_BLOCK": "Duplicate", - "ADD_COMMENT": "Add Comment", - "REMOVE_COMMENT": "Remove Comment", - "DUPLICATE_COMMENT": "Duplicate Comment", - "EXTERNAL_INPUTS": "External Inputs", - "INLINE_INPUTS": "Inline Inputs", - "DELETE_BLOCK": "Delete Block", - "DELETE_X_BLOCKS": "Delete %1 Blocks", - "DELETE_ALL_BLOCKS": "Delete all %1 blocks?", - "CLEAN_UP": "Clean up Blocks", - "COLLAPSE_BLOCK": "Collapse Block", - "COLLAPSE_ALL": "Collapse Blocks", - "EXPAND_BLOCK": "Expand Block", - "EXPAND_ALL": "Expand Blocks", - "DISABLE_BLOCK": "Disable Block", - "ENABLE_BLOCK": "Enable Block", - "HELP": "Help", - "UNDO": "Undo", - "REDO": "Redo", - "CHANGE_VALUE_TITLE": "Change value:", - "RENAME_VARIABLE": "Rename variable...", - "RENAME_VARIABLE_TITLE": "Rename all '%1' variables to:", - "NEW_VARIABLE": "Create variable...", - "NEW_STRING_VARIABLE": "Create string variable...", - "NEW_NUMBER_VARIABLE": "Create number variable...", - "NEW_COLOUR_VARIABLE": "Create colour variable...", - "NEW_VARIABLE_TYPE_TITLE": "New variable type:", - "NEW_VARIABLE_TITLE": "New variable name:", - "VARIABLE_ALREADY_EXISTS": "A variable named '%1' already exists.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "A variable named '%1' already exists for another type: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Delete %1 uses of the '%2' variable?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Can't delete the variable '%1' because it's part of the definition of the function '%2'", - "DELETE_VARIABLE": "Delete the '%1' variable", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Choose a colour from the palette.", - "COLOUR_RANDOM_HELPURL": "http://randomcolour.com", - "COLOUR_RANDOM_TITLE": "random colour", - "COLOUR_RANDOM_TOOLTIP": "Choose a colour at random.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "colour with", - "COLOUR_RGB_RED": "red", - "COLOUR_RGB_GREEN": "green", - "COLOUR_RGB_BLUE": "blue", - "COLOUR_RGB_TOOLTIP": "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "blend", - "COLOUR_BLEND_COLOUR1": "colour 1", - "COLOUR_BLEND_COLOUR2": "colour 2", - "COLOUR_BLEND_RATIO": "ratio", - "COLOUR_BLEND_TOOLTIP": "Blends two colours together with a given ratio (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "repeat %1 times", - "CONTROLS_REPEAT_INPUT_DO": "do", - "CONTROLS_REPEAT_TOOLTIP": "Do some statements several times.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repeat while", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repeat until", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "While a value is true, then do some statements.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "While a value is false, then do some statements.", - "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", - "CONTROLS_FOR_TOOLTIP": "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.", - "CONTROLS_FOR_TITLE": "count with %1 from %2 to %3 by %4", - "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", - "CONTROLS_FOREACH_TITLE": "for each item %1 in list %2", - "CONTROLS_FOREACH_TOOLTIP": "For each item in a list, set the variable '%1' to the item, and then do some statements.", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "break out of loop", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continue with next iteration of loop", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Break out of the containing loop.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Skip the rest of this loop, and continue with the next iteration.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Warning: This block may only be used within a loop.", - "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", - "CONTROLS_IF_TOOLTIP_1": "If a value is true, then do some statements.", - "CONTROLS_IF_TOOLTIP_2": "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.", - "CONTROLS_IF_TOOLTIP_3": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.", - "CONTROLS_IF_TOOLTIP_4": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.", - "CONTROLS_IF_MSG_IF": "if", - "CONTROLS_IF_MSG_ELSEIF": "else if", - "CONTROLS_IF_MSG_ELSE": "else", - "CONTROLS_IF_IF_TOOLTIP": "Add, remove, or reorder sections to reconfigure this if block.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Add a condition to the if block.", - "CONTROLS_IF_ELSE_TOOLTIP": "Add a final, catch-all condition to the if block.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Return true if both inputs equal each other.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Return true if both inputs are not equal to each other.", - "LOGIC_COMPARE_TOOLTIP_LT": "Return true if the first input is smaller than the second input.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Return true if the first input is smaller than or equal to the second input.", - "LOGIC_COMPARE_TOOLTIP_GT": "Return true if the first input is greater than the second input.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Return true if the first input is greater than or equal to the second input.", - "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", - "LOGIC_OPERATION_TOOLTIP_AND": "Return true if both inputs are true.", - "LOGIC_OPERATION_AND": "and", - "LOGIC_OPERATION_TOOLTIP_OR": "Return true if at least one of the inputs is true.", - "LOGIC_OPERATION_OR": "or", - "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", - "LOGIC_NEGATE_TITLE": "not %1", - "LOGIC_NEGATE_TOOLTIP": "Returns true if the input is false. Returns false if the input is true.", - "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", - "LOGIC_BOOLEAN_TRUE": "true", - "LOGIC_BOOLEAN_FALSE": "false", - "LOGIC_BOOLEAN_TOOLTIP": "Returns either true or false.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Returns null.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "if true", - "LOGIC_TERNARY_IF_FALSE": "if false", - "LOGIC_TERNARY_TOOLTIP": "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "A number.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Return the sum of the two numbers.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Return the difference of the two numbers.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Return the product of the two numbers.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Return the quotient of the two numbers.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Return the first number raised to the power of the second number.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "square root", - "MATH_SINGLE_TOOLTIP_ROOT": "Return the square root of a number.", - "MATH_SINGLE_OP_ABSOLUTE": "absolute", - "MATH_SINGLE_TOOLTIP_ABS": "Return the absolute value of a number.", - "MATH_SINGLE_TOOLTIP_NEG": "Return the negation of a number.", - "MATH_SINGLE_TOOLTIP_LN": "Return the natural logarithm of a number.", - "MATH_SINGLE_TOOLTIP_LOG10": "Return the base 10 logarithm of a number.", - "MATH_SINGLE_TOOLTIP_EXP": "Return e to the power of a number.", - "MATH_SINGLE_TOOLTIP_POW10": "Return 10 to the power of a number.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Return the sine of a degree (not radian).", - "MATH_TRIG_TOOLTIP_COS": "Return the cosine of a degree (not radian).", - "MATH_TRIG_TOOLTIP_TAN": "Return the tangent of a degree (not radian).", - "MATH_TRIG_TOOLTIP_ASIN": "Return the arcsine of a number.", - "MATH_TRIG_TOOLTIP_ACOS": "Return the arccosine of a number.", - "MATH_TRIG_TOOLTIP_ATAN": "Return the arctangent of a number.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", - "MATH_IS_EVEN": "is even", - "MATH_IS_ODD": "is odd", - "MATH_IS_PRIME": "is prime", - "MATH_IS_WHOLE": "is whole", - "MATH_IS_POSITIVE": "is positive", - "MATH_IS_NEGATIVE": "is negative", - "MATH_IS_DIVISIBLE_BY": "is divisible by", - "MATH_IS_TOOLTIP": "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "change %1 by %2", - "MATH_CHANGE_TOOLTIP": "Add a number to variable '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Round a number up or down.", - "MATH_ROUND_OPERATOR_ROUND": "round", - "MATH_ROUND_OPERATOR_ROUNDUP": "round up", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "round down", - "MATH_ONLIST_HELPURL": "", - "MATH_ONLIST_OPERATOR_SUM": "sum of list", - "MATH_ONLIST_TOOLTIP_SUM": "Return the sum of all the numbers in the list.", - "MATH_ONLIST_OPERATOR_MIN": "min of list", - "MATH_ONLIST_TOOLTIP_MIN": "Return the smallest number in the list.", - "MATH_ONLIST_OPERATOR_MAX": "max of list", - "MATH_ONLIST_TOOLTIP_MAX": "Return the largest number in the list.", - "MATH_ONLIST_OPERATOR_AVERAGE": "average of list", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Return the average (arithmetic mean) of the numeric values in the list.", - "MATH_ONLIST_OPERATOR_MEDIAN": "median of list", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Return the median number in the list.", - "MATH_ONLIST_OPERATOR_MODE": "modes of list", - "MATH_ONLIST_TOOLTIP_MODE": "Return a list of the most common item(s) in the list.", - "MATH_ONLIST_OPERATOR_STD_DEV": "standard deviation of list", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Return the standard deviation of the list.", - "MATH_ONLIST_OPERATOR_RANDOM": "random item of list", - "MATH_ONLIST_TOOLTIP_RANDOM": "Return a random element from the list.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "remainder of %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Return the remainder from dividing the two numbers.", - "MATH_CONSTRAIN_HELPURL": "https://en.wikipedia.org/wiki/Clamping_(graphics)", - "MATH_CONSTRAIN_TITLE": "constrain %1 low %2 high %3", - "MATH_CONSTRAIN_TOOLTIP": "Constrain a number to be between the specified limits (inclusive).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "random integer from %1 to %2", - "MATH_RANDOM_INT_TOOLTIP": "Return a random integer between the two specified limits, inclusive.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "random fraction", - "MATH_RANDOM_FLOAT_TOOLTIP": "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Return the arctangent of point (X, Y) in degrees from -180 to 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "A letter, word, or line of text.", - "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", - "TEXT_JOIN_TITLE_CREATEWITH": "create text with", - "TEXT_JOIN_TOOLTIP": "Create a piece of text by joining together any number of items.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "join", - "TEXT_CREATE_JOIN_TOOLTIP": "Add, remove, or reorder sections to reconfigure this text block.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Add an item to the text.", - "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_APPEND_TITLE": "to %1 append text %2", - "TEXT_APPEND_TOOLTIP": "Append some text to variable '%1'.", - "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_LENGTH_TITLE": "length of %1", - "TEXT_LENGTH_TOOLTIP": "Returns the number of letters (including spaces) in the provided text.", - "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", - "TEXT_ISEMPTY_TITLE": "%1 is empty", - "TEXT_ISEMPTY_TOOLTIP": "Returns true if the provided text is empty.", - "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", - "TEXT_INDEXOF_TOOLTIP": "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.", - "TEXT_INDEXOF_TITLE": "in text %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "find first occurrence of text", - "TEXT_INDEXOF_OPERATOR_LAST": "find last occurrence of text", - "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", - "TEXT_CHARAT_TITLE": "in text %1 %2", - "TEXT_CHARAT_FROM_START": "get letter #", - "TEXT_CHARAT_FROM_END": "get letter # from end", - "TEXT_CHARAT_FIRST": "get first letter", - "TEXT_CHARAT_LAST": "get last letter", - "TEXT_CHARAT_RANDOM": "get random letter", - "TEXT_CHARAT_TAIL": "", - "TEXT_CHARAT_TOOLTIP": "Returns the letter at the specified position.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Returns a specified portion of the text.", - "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in text", - "TEXT_GET_SUBSTRING_START_FROM_START": "get substring from letter #", - "TEXT_GET_SUBSTRING_START_FROM_END": "get substring from letter # from end", - "TEXT_GET_SUBSTRING_START_FIRST": "get substring from first letter", - "TEXT_GET_SUBSTRING_END_FROM_START": "to letter #", - "TEXT_GET_SUBSTRING_END_FROM_END": "to letter # from end", - "TEXT_GET_SUBSTRING_END_LAST": "to last letter", - "TEXT_GET_SUBSTRING_TAIL": "", - "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", - "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "to UPPER CASE", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "to lower case", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "to Title Case", - "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", - "TEXT_TRIM_TOOLTIP": "Return a copy of the text with spaces removed from one or both ends.", - "TEXT_TRIM_OPERATOR_BOTH": "trim spaces from both sides of", - "TEXT_TRIM_OPERATOR_LEFT": "trim spaces from left side of", - "TEXT_TRIM_OPERATOR_RIGHT": "trim spaces from right side of", - "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", - "TEXT_PRINT_TITLE": "print %1", - "TEXT_PRINT_TOOLTIP": "Print the specified text, number or other value.", - "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", - "TEXT_PROMPT_TYPE_TEXT": "prompt for text with message", - "TEXT_PROMPT_TYPE_NUMBER": "prompt for number with message", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Prompt for user for a number.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Prompt for user for some text.", - "TEXT_COUNT_MESSAGE0": "count %1 in %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Count how many times some text occurs within some other text.", - "TEXT_REPLACE_MESSAGE0": "replace %1 with %2 in %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Replace all occurances of some text within some other text.", - "TEXT_REVERSE_MESSAGE0": "reverse %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Reverses the order of the characters in the text.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "create empty list", - "LISTS_CREATE_EMPTY_TOOLTIP": "Returns a list, of length 0, containing no data records", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Create a list with any number of items.", - "LISTS_CREATE_WITH_INPUT_WITH": "create list with", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "list", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Add, remove, or reorder sections to reconfigure this list block.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Add an item to the list.", - "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_REPEAT_TOOLTIP": "Creates a list consisting of the given value repeated the specified number of times.", - "LISTS_REPEAT_TITLE": "create list with item %1 repeated %2 times", - "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", - "LISTS_LENGTH_TITLE": "length of %1", - "LISTS_LENGTH_TOOLTIP": "Returns the length of a list.", - "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", - "LISTS_ISEMPTY_TITLE": "%1 is empty", - "LISTS_ISEMPTY_TOOLTIP": "Returns true if the list is empty.", - "LISTS_INLIST": "in list", - "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", - "LISTS_INDEX_OF_FIRST": "find first occurrence of item", - "LISTS_INDEX_OF_LAST": "find last occurrence of item", - "LISTS_INDEX_OF_TOOLTIP": "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.", - "LISTS_GET_INDEX_GET": "get", - "LISTS_GET_INDEX_GET_REMOVE": "get and remove", - "LISTS_GET_INDEX_REMOVE": "remove", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# from end", - "LISTS_GET_INDEX_FIRST": "first", - "LISTS_GET_INDEX_LAST": "last", - "LISTS_GET_INDEX_RANDOM": "random", - "LISTS_GET_INDEX_TAIL": "", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 is the first item.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 is the last item.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returns the item at the specified position in a list.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returns the first item in a list.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returns the last item in a list.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returns a random item in a list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Removes and returns the item at the specified position in a list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Removes and returns the first item in a list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Removes and returns the last item in a list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Removes and returns a random item in a list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Removes the item at the specified position in a list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Removes the first item in a list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Removes the last item in a list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Removes a random item in a list.", - "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", - "LISTS_SET_INDEX_SET": "set", - "LISTS_SET_INDEX_INSERT": "insert at", - "LISTS_SET_INDEX_INPUT_TO": "as", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Sets the item at the specified position in a list.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Sets the first item in a list.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Sets the last item in a list.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Sets a random item in a list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserts the item at the specified position in a list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserts the item at the start of a list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Append the item to the end of a list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserts the item randomly in a list.", - "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", - "LISTS_GET_SUBLIST_START_FROM_START": "get sub-list from #", - "LISTS_GET_SUBLIST_START_FROM_END": "get sub-list from # from end", - "LISTS_GET_SUBLIST_START_FIRST": "get sub-list from first", - "LISTS_GET_SUBLIST_END_FROM_START": "to #", - "LISTS_GET_SUBLIST_END_FROM_END": "to # from end", - "LISTS_GET_SUBLIST_END_LAST": "to last", - "LISTS_GET_SUBLIST_TAIL": "", - "LISTS_GET_SUBLIST_TOOLTIP": "Creates a copy of the specified portion of a list.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sort %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sort a copy of a list.", - "LISTS_SORT_ORDER_ASCENDING": "ascending", - "LISTS_SORT_ORDER_DESCENDING": "descending", - "LISTS_SORT_TYPE_NUMERIC": "numeric", - "LISTS_SORT_TYPE_TEXT": "alphabetic", - "LISTS_SORT_TYPE_IGNORECASE": "alphabetic, ignore case", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "make list from text", - "LISTS_SPLIT_TEXT_FROM_LIST": "make text from list", - "LISTS_SPLIT_WITH_DELIMITER": "with delimiter", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Split text into a list of texts, breaking at each delimiter.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Join a list of texts into one text, separated by a delimiter.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "reverse %1", - "LISTS_REVERSE_TOOLTIP": "Reverse a copy of a list.", - "ORDINAL_NUMBER_SUFFIX": "", - "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", - "VARIABLES_GET_TOOLTIP": "Returns the value of this variable.", - "VARIABLES_GET_CREATE_SET": "Create 'set %1'", - "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", - "VARIABLES_SET": "set %1 to %2", - "VARIABLES_SET_TOOLTIP": "Sets this variable to be equal to the input.", - "VARIABLES_SET_CREATE_GET": "Create 'get %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_DEFNORETURN_TITLE": "to", - "PROCEDURES_DEFNORETURN_PROCEDURE": "do something", - "PROCEDURES_BEFORE_PARAMS": "with:", - "PROCEDURES_CALL_BEFORE_PARAMS": "with:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Creates a function with no output.", - "PROCEDURES_DEFNORETURN_COMMENT": "Describe this function...", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_DEFRETURN_RETURN": "return", - "PROCEDURES_DEFRETURN_TOOLTIP": "Creates a function with an output.", - "PROCEDURES_ALLOW_STATEMENTS": "allow statements", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Warning: This function has duplicate parameters.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Run the user-defined function '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Run the user-defined function '%1' and use its output.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "inputs", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Add, remove, or reorder inputs to this function.", - "PROCEDURES_MUTATORARG_TITLE": "input name:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Add an input to the function.", - "PROCEDURES_HIGHLIGHT_DEF": "Highlight function definition", - "PROCEDURES_CREATE_DO": "Create '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "If a value is true, then return a second value.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Warning: This block may be used only within a function definition.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Say something...", - "WORKSPACE_ARIA_LABEL": "Blockly Workspace", - "COLLAPSED_WARNINGS_WARNING": "Collapsed blocks contain warnings.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Cancel" -} +{ + "@metadata": { + "author": "Ellen Spertus ", + "lastupdated": "2021-07-01 14:44:40.033432", + "locale": "en", + "messagedocumentation" : "qqq" + }, + "VARIABLES_DEFAULT_NAME": "item", + "UNNAMED_KEY": "unnamed", + "TODAY": "Today", + "DUPLICATE_BLOCK": "Duplicate", + "ADD_COMMENT": "Add Comment", + "REMOVE_COMMENT": "Remove Comment", + "DUPLICATE_COMMENT": "Duplicate Comment", + "EXTERNAL_INPUTS": "External Inputs", + "INLINE_INPUTS": "Inline Inputs", + "DELETE_BLOCK": "Delete Block", + "DELETE_X_BLOCKS": "Delete %1 Blocks", + "DELETE_ALL_BLOCKS": "Delete all %1 blocks?", + "CLEAN_UP": "Clean up Blocks", + "COLLAPSE_BLOCK": "Collapse Block", + "COLLAPSE_ALL": "Collapse Blocks", + "EXPAND_BLOCK": "Expand Block", + "EXPAND_ALL": "Expand Blocks", + "DISABLE_BLOCK": "Disable Block", + "ENABLE_BLOCK": "Enable Block", + "HELP": "Help", + "UNDO": "Undo", + "REDO": "Redo", + "CHANGE_VALUE_TITLE": "Change value:", + "RENAME_VARIABLE": "Rename variable...", + "RENAME_VARIABLE_TITLE": "Rename all '%1' variables to:", + "NEW_VARIABLE": "Create variable...", + "NEW_STRING_VARIABLE": "Create string variable...", + "NEW_NUMBER_VARIABLE": "Create number variable...", + "NEW_COLOUR_VARIABLE": "Create colour variable...", + "NEW_VARIABLE_TYPE_TITLE": "New variable type:", + "NEW_VARIABLE_TITLE": "New variable name:", + "VARIABLE_ALREADY_EXISTS": "A variable named '%1' already exists.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "A variable named '%1' already exists for another type: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Delete %1 uses of the '%2' variable?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Can't delete the variable '%1' because it's part of the definition of the function '%2'", + "DELETE_VARIABLE": "Delete the '%1' variable", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Choose a colour from the palette.", + "COLOUR_RANDOM_HELPURL": "http://randomcolour.com", + "COLOUR_RANDOM_TITLE": "random colour", + "COLOUR_RANDOM_TOOLTIP": "Choose a colour at random.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "colour with", + "COLOUR_RGB_RED": "red", + "COLOUR_RGB_GREEN": "green", + "COLOUR_RGB_BLUE": "blue", + "COLOUR_RGB_TOOLTIP": "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "blend", + "COLOUR_BLEND_COLOUR1": "colour 1", + "COLOUR_BLEND_COLOUR2": "colour 2", + "COLOUR_BLEND_RATIO": "ratio", + "COLOUR_BLEND_TOOLTIP": "Blends two colours together with a given ratio (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "repeat %1 times", + "CONTROLS_REPEAT_INPUT_DO": "do", + "CONTROLS_REPEAT_TOOLTIP": "Do some statements several times.", + "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repeat while", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repeat until", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "While a value is true, then do some statements.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "While a value is false, then do some statements.", + "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", + "CONTROLS_FOR_TOOLTIP": "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.", + "CONTROLS_FOR_TITLE": "count with %1 from %2 to %3 by %4", + "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", + "CONTROLS_FOREACH_TITLE": "for each item %1 in list %2", + "CONTROLS_FOREACH_TOOLTIP": "For each item in a list, set the variable '%1' to the item, and then do some statements.", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "break out of loop", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continue with next iteration of loop", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Break out of the containing loop.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Skip the rest of this loop, and continue with the next iteration.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Warning: This block may only be used within a loop.", + "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", + "CONTROLS_IF_TOOLTIP_1": "If a value is true, then do some statements.", + "CONTROLS_IF_TOOLTIP_2": "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.", + "CONTROLS_IF_TOOLTIP_3": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.", + "CONTROLS_IF_TOOLTIP_4": "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.", + "CONTROLS_IF_MSG_IF": "if", + "CONTROLS_IF_MSG_ELSEIF": "else if", + "CONTROLS_IF_MSG_ELSE": "else", + "CONTROLS_IF_IF_TOOLTIP": "Add, remove, or reorder sections to reconfigure this if block.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Add a condition to the if block.", + "CONTROLS_IF_ELSE_TOOLTIP": "Add a final, catch-all condition to the if block.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Return true if both inputs equal each other.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Return true if both inputs are not equal to each other.", + "LOGIC_COMPARE_TOOLTIP_LT": "Return true if the first input is smaller than the second input.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Return true if the first input is smaller than or equal to the second input.", + "LOGIC_COMPARE_TOOLTIP_GT": "Return true if the first input is greater than the second input.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Return true if the first input is greater than or equal to the second input.", + "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", + "LOGIC_OPERATION_TOOLTIP_AND": "Return true if both inputs are true.", + "LOGIC_OPERATION_AND": "and", + "LOGIC_OPERATION_TOOLTIP_OR": "Return true if at least one of the inputs is true.", + "LOGIC_OPERATION_OR": "or", + "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", + "LOGIC_NEGATE_TITLE": "not %1", + "LOGIC_NEGATE_TOOLTIP": "Returns true if the input is false. Returns false if the input is true.", + "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", + "LOGIC_BOOLEAN_TRUE": "true", + "LOGIC_BOOLEAN_FALSE": "false", + "LOGIC_BOOLEAN_TOOLTIP": "Returns either true or false.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Returns null.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "if true", + "LOGIC_TERNARY_IF_FALSE": "if false", + "LOGIC_TERNARY_TOOLTIP": "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "A number.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Return the sum of the two numbers.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Return the difference of the two numbers.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Return the product of the two numbers.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Return the quotient of the two numbers.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Return the first number raised to the power of the second number.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "square root", + "MATH_SINGLE_TOOLTIP_ROOT": "Return the square root of a number.", + "MATH_SINGLE_OP_ABSOLUTE": "absolute", + "MATH_SINGLE_TOOLTIP_ABS": "Return the absolute value of a number.", + "MATH_SINGLE_TOOLTIP_NEG": "Return the negation of a number.", + "MATH_SINGLE_TOOLTIP_LN": "Return the natural logarithm of a number.", + "MATH_SINGLE_TOOLTIP_LOG10": "Return the base 10 logarithm of a number.", + "MATH_SINGLE_TOOLTIP_EXP": "Return e to the power of a number.", + "MATH_SINGLE_TOOLTIP_POW10": "Return 10 to the power of a number.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Return the sine of a degree (not radian).", + "MATH_TRIG_TOOLTIP_COS": "Return the cosine of a degree (not radian).", + "MATH_TRIG_TOOLTIP_TAN": "Return the tangent of a degree (not radian).", + "MATH_TRIG_TOOLTIP_ASIN": "Return the arcsine of a number.", + "MATH_TRIG_TOOLTIP_ACOS": "Return the arccosine of a number.", + "MATH_TRIG_TOOLTIP_ATAN": "Return the arctangent of a number.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", + "MATH_IS_EVEN": "is even", + "MATH_IS_ODD": "is odd", + "MATH_IS_PRIME": "is prime", + "MATH_IS_WHOLE": "is whole", + "MATH_IS_POSITIVE": "is positive", + "MATH_IS_NEGATIVE": "is negative", + "MATH_IS_DIVISIBLE_BY": "is divisible by", + "MATH_IS_TOOLTIP": "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "change %1 by %2", + "MATH_CHANGE_TOOLTIP": "Add a number to variable '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Round a number up or down.", + "MATH_ROUND_OPERATOR_ROUND": "round", + "MATH_ROUND_OPERATOR_ROUNDUP": "round up", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "round down", + "MATH_ONLIST_HELPURL": "", + "MATH_ONLIST_OPERATOR_SUM": "sum of list", + "MATH_ONLIST_TOOLTIP_SUM": "Return the sum of all the numbers in the list.", + "MATH_ONLIST_OPERATOR_MIN": "min of list", + "MATH_ONLIST_TOOLTIP_MIN": "Return the smallest number in the list.", + "MATH_ONLIST_OPERATOR_MAX": "max of list", + "MATH_ONLIST_TOOLTIP_MAX": "Return the largest number in the list.", + "MATH_ONLIST_OPERATOR_AVERAGE": "average of list", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Return the average (arithmetic mean) of the numeric values in the list.", + "MATH_ONLIST_OPERATOR_MEDIAN": "median of list", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Return the median number in the list.", + "MATH_ONLIST_OPERATOR_MODE": "modes of list", + "MATH_ONLIST_TOOLTIP_MODE": "Return a list of the most common item(s) in the list.", + "MATH_ONLIST_OPERATOR_STD_DEV": "standard deviation of list", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Return the standard deviation of the list.", + "MATH_ONLIST_OPERATOR_RANDOM": "random item of list", + "MATH_ONLIST_TOOLTIP_RANDOM": "Return a random element from the list.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "remainder of %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Return the remainder from dividing the two numbers.", + "MATH_CONSTRAIN_HELPURL": "https://en.wikipedia.org/wiki/Clamping_(graphics)", + "MATH_CONSTRAIN_TITLE": "constrain %1 low %2 high %3", + "MATH_CONSTRAIN_TOOLTIP": "Constrain a number to be between the specified limits (inclusive).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "random integer from %1 to %2", + "MATH_RANDOM_INT_TOOLTIP": "Return a random integer between the two specified limits, inclusive.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "random fraction", + "MATH_RANDOM_FLOAT_TOOLTIP": "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Return the arctangent of point (X, Y) in degrees from -180 to 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "A letter, word, or line of text.", + "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", + "TEXT_JOIN_TITLE_CREATEWITH": "create text with", + "TEXT_JOIN_TOOLTIP": "Create a piece of text by joining together any number of items.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "join", + "TEXT_CREATE_JOIN_TOOLTIP": "Add, remove, or reorder sections to reconfigure this text block.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Add an item to the text.", + "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_APPEND_TITLE": "to %1 append text %2", + "TEXT_APPEND_TOOLTIP": "Append some text to variable '%1'.", + "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_LENGTH_TITLE": "length of %1", + "TEXT_LENGTH_TOOLTIP": "Returns the number of letters (including spaces) in the provided text.", + "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", + "TEXT_ISEMPTY_TITLE": "%1 is empty", + "TEXT_ISEMPTY_TOOLTIP": "Returns true if the provided text is empty.", + "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", + "TEXT_INDEXOF_TOOLTIP": "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.", + "TEXT_INDEXOF_TITLE": "in text %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "find first occurrence of text", + "TEXT_INDEXOF_OPERATOR_LAST": "find last occurrence of text", + "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", + "TEXT_CHARAT_TITLE": "in text %1 %2", + "TEXT_CHARAT_FROM_START": "get letter #", + "TEXT_CHARAT_FROM_END": "get letter # from end", + "TEXT_CHARAT_FIRST": "get first letter", + "TEXT_CHARAT_LAST": "get last letter", + "TEXT_CHARAT_RANDOM": "get random letter", + "TEXT_CHARAT_TAIL": "", + "TEXT_CHARAT_TOOLTIP": "Returns the letter at the specified position.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Returns a specified portion of the text.", + "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in text", + "TEXT_GET_SUBSTRING_START_FROM_START": "get substring from letter #", + "TEXT_GET_SUBSTRING_START_FROM_END": "get substring from letter # from end", + "TEXT_GET_SUBSTRING_START_FIRST": "get substring from first letter", + "TEXT_GET_SUBSTRING_END_FROM_START": "to letter #", + "TEXT_GET_SUBSTRING_END_FROM_END": "to letter # from end", + "TEXT_GET_SUBSTRING_END_LAST": "to last letter", + "TEXT_GET_SUBSTRING_TAIL": "", + "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", + "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "to UPPER CASE", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "to lower case", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "to Title Case", + "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", + "TEXT_TRIM_TOOLTIP": "Return a copy of the text with spaces removed from one or both ends.", + "TEXT_TRIM_OPERATOR_BOTH": "trim spaces from both sides of", + "TEXT_TRIM_OPERATOR_LEFT": "trim spaces from left side of", + "TEXT_TRIM_OPERATOR_RIGHT": "trim spaces from right side of", + "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", + "TEXT_PRINT_TITLE": "print %1", + "TEXT_PRINT_TOOLTIP": "Print the specified text, number or other value.", + "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", + "TEXT_PROMPT_TYPE_TEXT": "prompt for text with message", + "TEXT_PROMPT_TYPE_NUMBER": "prompt for number with message", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Prompt for user for a number.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Prompt for user for some text.", + "TEXT_COUNT_MESSAGE0": "count %1 in %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Count how many times some text occurs within some other text.", + "TEXT_REPLACE_MESSAGE0": "replace %1 with %2 in %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Replace all occurances of some text within some other text.", + "TEXT_REVERSE_MESSAGE0": "reverse %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Reverses the order of the characters in the text.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "create empty list", + "LISTS_CREATE_EMPTY_TOOLTIP": "Returns a list, of length 0, containing no data records", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Create a list with any number of items.", + "LISTS_CREATE_WITH_INPUT_WITH": "create list with", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "list", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Add, remove, or reorder sections to reconfigure this list block.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Add an item to the list.", + "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_REPEAT_TOOLTIP": "Creates a list consisting of the given value repeated the specified number of times.", + "LISTS_REPEAT_TITLE": "create list with item %1 repeated %2 times", + "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", + "LISTS_LENGTH_TITLE": "length of %1", + "LISTS_LENGTH_TOOLTIP": "Returns the length of a list.", + "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", + "LISTS_ISEMPTY_TITLE": "%1 is empty", + "LISTS_ISEMPTY_TOOLTIP": "Returns true if the list is empty.", + "LISTS_INLIST": "in list", + "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", + "LISTS_INDEX_OF_FIRST": "find first occurrence of item", + "LISTS_INDEX_OF_LAST": "find last occurrence of item", + "LISTS_INDEX_OF_TOOLTIP": "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.", + "LISTS_GET_INDEX_GET": "get", + "LISTS_GET_INDEX_GET_REMOVE": "get and remove", + "LISTS_GET_INDEX_REMOVE": "remove", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# from end", + "LISTS_GET_INDEX_FIRST": "first", + "LISTS_GET_INDEX_LAST": "last", + "LISTS_GET_INDEX_RANDOM": "random", + "LISTS_GET_INDEX_TAIL": "", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 is the first item.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 is the last item.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returns the item at the specified position in a list.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returns the first item in a list.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returns the last item in a list.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returns a random item in a list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Removes and returns the item at the specified position in a list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Removes and returns the first item in a list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Removes and returns the last item in a list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Removes and returns a random item in a list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Removes the item at the specified position in a list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Removes the first item in a list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Removes the last item in a list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Removes a random item in a list.", + "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", + "LISTS_SET_INDEX_SET": "set", + "LISTS_SET_INDEX_INSERT": "insert at", + "LISTS_SET_INDEX_INPUT_TO": "as", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Sets the item at the specified position in a list.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Sets the first item in a list.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Sets the last item in a list.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Sets a random item in a list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserts the item at the specified position in a list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserts the item at the start of a list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Append the item to the end of a list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserts the item randomly in a list.", + "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", + "LISTS_GET_SUBLIST_START_FROM_START": "get sub-list from #", + "LISTS_GET_SUBLIST_START_FROM_END": "get sub-list from # from end", + "LISTS_GET_SUBLIST_START_FIRST": "get sub-list from first", + "LISTS_GET_SUBLIST_END_FROM_START": "to #", + "LISTS_GET_SUBLIST_END_FROM_END": "to # from end", + "LISTS_GET_SUBLIST_END_LAST": "to last", + "LISTS_GET_SUBLIST_TAIL": "", + "LISTS_GET_SUBLIST_TOOLTIP": "Creates a copy of the specified portion of a list.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sort %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sort a copy of a list.", + "LISTS_SORT_ORDER_ASCENDING": "ascending", + "LISTS_SORT_ORDER_DESCENDING": "descending", + "LISTS_SORT_TYPE_NUMERIC": "numeric", + "LISTS_SORT_TYPE_TEXT": "alphabetic", + "LISTS_SORT_TYPE_IGNORECASE": "alphabetic, ignore case", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "make list from text", + "LISTS_SPLIT_TEXT_FROM_LIST": "make text from list", + "LISTS_SPLIT_WITH_DELIMITER": "with delimiter", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Split text into a list of texts, breaking at each delimiter.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Join a list of texts into one text, separated by a delimiter.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "reverse %1", + "LISTS_REVERSE_TOOLTIP": "Reverse a copy of a list.", + "ORDINAL_NUMBER_SUFFIX": "", + "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", + "VARIABLES_GET_TOOLTIP": "Returns the value of this variable.", + "VARIABLES_GET_CREATE_SET": "Create 'set %1'", + "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", + "VARIABLES_SET": "set %1 to %2", + "VARIABLES_SET_TOOLTIP": "Sets this variable to be equal to the input.", + "VARIABLES_SET_CREATE_GET": "Create 'get %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_DEFNORETURN_TITLE": "to", + "PROCEDURES_DEFNORETURN_PROCEDURE": "do something", + "PROCEDURES_BEFORE_PARAMS": "with:", + "PROCEDURES_CALL_BEFORE_PARAMS": "with:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Creates a function with no output.", + "PROCEDURES_DEFNORETURN_COMMENT": "Describe this function...", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_DEFRETURN_RETURN": "return", + "PROCEDURES_DEFRETURN_TOOLTIP": "Creates a function with an output.", + "PROCEDURES_ALLOW_STATEMENTS": "allow statements", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Warning: This function has duplicate parameters.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Run the user-defined function '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Run the user-defined function '%1' and use its output.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "inputs", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Add, remove, or reorder inputs to this function.", + "PROCEDURES_MUTATORARG_TITLE": "input name:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Add an input to the function.", + "PROCEDURES_HIGHLIGHT_DEF": "Highlight function definition", + "PROCEDURES_CREATE_DO": "Create '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "If a value is true, then return a second value.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Warning: This block may be used only within a function definition.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Say something...", + "WORKSPACE_ARIA_LABEL": "Blockly Workspace", + "COLLAPSED_WARNINGS_WARNING": "Collapsed blocks contain warnings.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Cancel", + + "VARIABLES_CALL_TOOLTIP": "Calls a method from current variable.", + "VARIABLES_CALL_OUT_TOOLTIP": "Returns the value of a method from current variable.", + "CALL_TEXT": "call", + "RETURN_TEXT": "return", + "PROCEDURES_SETUP_TOOLTIP": "Block that contains the blocks related to the setup of the program.", + "PROCEDURES_SETUP_SUPERVISOR_TOOLTIP": "Block that contains the blocks related to the setup of the supervisor.", + "PROCEDURES_RUN_TOOLTIP": "Block that contains the blocks related to the execution of the program.", + "PROCEDURES_SETUP_TITLE": "Setup", + "PROCEDURES_SETUP_SUPERVISOR_TITLE": "Supervisor Setup", + "PROCEDURES_RUN_TITLE": "Run", + "VARIABLES_METHODS_CALLS": "Method calls", + "PROCEDURES_MAIN_FUNCS": "Main functions" +} diff --git a/msg/json/eo.json b/msg/json/eo.json index fa03930c56c..9056d1188f8 100644 --- a/msg/json/eo.json +++ b/msg/json/eo.json @@ -1,340 +1,340 @@ -{ - "@metadata": { - "authors": [ - "Cérilew", - "Etrapani", - "Mirin", - "Ochilov", - "Orikrin1998", - "Robin van der Vliet", - "Surfo" - ] - }, - "VARIABLES_DEFAULT_NAME": "elemento", - "UNNAMED_KEY": "nenomita", - "TODAY": "Hodiaŭ", - "DUPLICATE_BLOCK": "Duobligi", - "ADD_COMMENT": "Aldoni komenton", - "REMOVE_COMMENT": "Forigi komenton", - "DUPLICATE_COMMENT": "Duobligi Komenton", - "EXTERNAL_INPUTS": "Eksteraj eniroj", - "INLINE_INPUTS": "Entekstaj eniroj", - "DELETE_BLOCK": "Forigi blokon", - "DELETE_X_BLOCKS": "Forigi %1 blokojn", - "DELETE_ALL_BLOCKS": "Ĉu forigi ĉiujn %1 blokojn?", - "CLEAN_UP": "Purigi blokojn", - "COLLAPSE_BLOCK": "Faldi blokon", - "COLLAPSE_ALL": "Faldi blokojn", - "EXPAND_BLOCK": "Malfaldi blokon", - "EXPAND_ALL": "Malfaldi blokojn", - "DISABLE_BLOCK": "Malŝalti blokon", - "ENABLE_BLOCK": "Ŝalti blokon", - "HELP": "Helpo", - "UNDO": "Malfari", - "REDO": "Refari", - "CHANGE_VALUE_TITLE": "Ŝangi valoron:", - "RENAME_VARIABLE": "Renomi variablon...", - "RENAME_VARIABLE_TITLE": "Renomi ĉiujn '%1' variablojn kiel:", - "NEW_VARIABLE": "Nova variablo...", - "NEW_STRING_VARIABLE": "Krei signoĉenan variablon...", - "NEW_NUMBER_VARIABLE": "Krei nombran variablon...", - "NEW_COLOUR_VARIABLE": "Krei koloran variablon...", - "NEW_VARIABLE_TYPE_TITLE": "Tipo de nova variablo:", - "NEW_VARIABLE_TITLE": "Nova nomo de variablo:", - "VARIABLE_ALREADY_EXISTS": "Jam ekzistas variablo kun la nomo '%1'.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Jam ekzistas variablo kun la nomo '%1' por alia tipo: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Ĉu forigi %1 uzojn de la variablo '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne povas forigi la variablon '%1' ĉar ĝi estas parto de la difino de la funkcio '%2'", - "DELETE_VARIABLE": "Forigi la variablon '%1'", - "COLOUR_PICKER_HELPURL": "https://eo.wikipedia.org/wiki/Koloro", - "COLOUR_PICKER_TOOLTIP": "Elekti koloron el la paletro.", - "COLOUR_RANDOM_TITLE": "hazarda koloro", - "COLOUR_RANDOM_TOOLTIP": "Elekti hazardan koloron.", - "COLOUR_RGB_TITLE": "kolorigi per", - "COLOUR_RGB_RED": "ruĝa", - "COLOUR_RGB_GREEN": "verda", - "COLOUR_RGB_BLUE": "blua", - "COLOUR_RGB_TOOLTIP": "Kreas koloron kun specifita kvanto de ruĝo, verdo, kaj bluo. Ĉiuj valoroj devas esti inter 0 kaj 100.", - "COLOUR_BLEND_TITLE": "miksi", - "COLOUR_BLEND_COLOUR1": "koloro 1", - "COLOUR_BLEND_COLOUR2": "koloro 2", - "COLOUR_BLEND_RATIO": "proporcio", - "COLOUR_BLEND_TOOLTIP": "Kunmiksas du kolorojn laŭ specifita proporcio (0,0 - 1,0).", - "CONTROLS_REPEAT_HELPURL": "https://eo.wikipedia.org/wiki/Iteracio", - "CONTROLS_REPEAT_TITLE": "ripeti %1 fojojn", - "CONTROLS_REPEAT_INPUT_DO": "fari", - "CONTROLS_REPEAT_TOOLTIP": "Plenumas kelkajn ordonojn plurfoje.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ripeti dum", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ripeti ĝis", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Plenumi ordonojn dum la valoro egalas veron.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Plenumi ordonojn dum valoro egalas malvero.", - "CONTROLS_FOR_TOOLTIP": "Varias la variablon '%1', ekde la komenca nombro ĝis la fina nombro, laŭ la specifita diferenco; dume rulas la specifitajn blokojn.", - "CONTROLS_FOR_TITLE": "kalkuli kun variablo %1 ekde %2 ĝis %3 per diferenco %4", - "CONTROLS_FOREACH_TITLE": "por ĉiu elemento %1 en la listo %2", - "CONTROLS_FOREACH_TOOLTIP": "Pri ĉiu elemento en listo, difinas la variablon '%1' al la elemento, kaj faras kelkajn ordonojn.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "eliri el la ciklo", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "daŭrigi je la venonta ripeto de la ciklo", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Eliri el la enhava ciklo.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Pretersalti la ceteron de tiu ĉi ciklo kaj daŭrigi je la venonta ripeto.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Averto: tiu ĉi bloko uzeblas nur ene de ciklo.", - "CONTROLS_IF_TOOLTIP_1": "Plenumi ordonojn se la valoro estas vero.", - "CONTROLS_IF_TOOLTIP_2": "Plenumi la unuan blokon de ordonoj se la valoro estas vero, se ne, la duan.", - "CONTROLS_IF_TOOLTIP_3": "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj.", - "CONTROLS_IF_TOOLTIP_4": "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj. Se neniu el la du valoroj estas vero, do faras la lastan blokon de ordonoj.", - "CONTROLS_IF_MSG_IF": "se", - "CONTROLS_IF_MSG_ELSEIF": "alie se", - "CONTROLS_IF_MSG_ELSE": "alie", - "CONTROLS_IF_IF_TOOLTIP": "Aldoni, forigi aŭ reorganizi partojn por reagordi la 'se'-blokon.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Aldoni kondiĉon al la bloko 'se'", - "CONTROLS_IF_ELSE_TOOLTIP": "Aldoni 'aliokaze' kondiĉon al la 'se' bloko.", - "LOGIC_COMPARE_HELPURL": "https://eo.wikipedia.org/wiki/Neegala%C4%B5o_(pli_granda,_malpli_granda)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Liveri veron, se la du eniroj egalas.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Liveri veron, se la du eniroj ne egalas.", - "LOGIC_COMPARE_TOOLTIP_LT": "Liveri veron, se la unua eniro estas pli malgranda ol la dua.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Vero estos liverita, se la unua eniro estas pli eta aŭ egala al la dua.", - "LOGIC_COMPARE_TOOLTIP_GT": "Liveri veron, se la unua eniro estas pli granda ol la dua.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Vero estos liverita, se la unua eniro estas pli granda aŭ egala al la dua.", - "LOGIC_OPERATION_TOOLTIP_AND": "Liveri veron, se la du eniroj egalas veron.", - "LOGIC_OPERATION_AND": "kaj", - "LOGIC_OPERATION_TOOLTIP_OR": "Liveri veron, se almenaŭ unu el la eniroj egalas veron.", - "LOGIC_OPERATION_OR": "aŭ", - "LOGIC_NEGATE_TITLE": "maligi %1", - "LOGIC_NEGATE_TOOLTIP": "Liveri veron, se la eniro egalas malveron. Liveri malveron, se la eniro egalas veron.", - "LOGIC_BOOLEAN_TRUE": "vera", - "LOGIC_BOOLEAN_FALSE": "falsa", - "LOGIC_BOOLEAN_TOOLTIP": "Liveri ĉu veron ĉu malveron.", - "LOGIC_NULL": "senvalora", - "LOGIC_NULL_TOOLTIP": "Liveras senvaloron.", - "LOGIC_TERNARY_CONDITION": "testi", - "LOGIC_TERNARY_IF_TRUE": "se estas vero", - "LOGIC_TERNARY_IF_FALSE": "se estas malvero", - "LOGIC_TERNARY_TOOLTIP": "Kontroli la kondiĉon en 'testo'. Se la kondiĉo egalas veron, liveri la valoron 'se estas vero', aliokaze liveri la valoron 'se estas malvero'.", - "MATH_NUMBER_HELPURL": "https://eo.wikipedia.org/wiki/Nombro", - "MATH_NUMBER_TOOLTIP": "Nombro.", - "MATH_ARITHMETIC_HELPURL": "https://eo.wikipedia.org/wiki/Aritmetiko", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Liveri la sumon de la du nombroj.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Liveri la diferencon inter la du nombroj.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "La produto de la du numeroj estos liverita.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Liveri la kvocienton de la du nombroj.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Livero la tian potencon de la unua nombro, kia la dua nombro estas", - "MATH_SINGLE_HELPURL": "https://eo.wikipedia.org/wiki/Kvadrata_radiko", - "MATH_SINGLE_OP_ROOT": "kvadrata radiko", - "MATH_SINGLE_TOOLTIP_ROOT": "Liveri la kvadratan radikon de nombro.", - "MATH_SINGLE_OP_ABSOLUTE": "absoluta", - "MATH_SINGLE_TOOLTIP_ABS": "Liveri la absolutan valoron de nombro.", - "MATH_SINGLE_TOOLTIP_NEG": "La negativigo de numero estos liverita.", - "MATH_SINGLE_TOOLTIP_LN": "Liveri la naturan logaritmon de nombro.", - "MATH_SINGLE_TOOLTIP_LOG10": "La dekbaza logaritmo de numero estos liverita.", - "MATH_SINGLE_TOOLTIP_EXP": "Liveri potencon de e.", - "MATH_SINGLE_TOOLTIP_POW10": "Liveri tian potencon de 10, kia la eniro estas.", - "MATH_TRIG_HELPURL": "https://eo.wikipedia.org/wiki/Trigonometria_funkcio", - "MATH_TRIG_TOOLTIP_SIN": "Liveras la sinuson de angulo en gradoj (ne radianoj).", - "MATH_TRIG_TOOLTIP_COS": "Liveras la kosinuson de angulo en gradoj (ne radianoj).", - "MATH_TRIG_TOOLTIP_TAN": "Liveras la tangenton de angulo en gradoj (ne radianoj).", - "MATH_TRIG_TOOLTIP_ASIN": "La sinusarko de nombro estos liverita.", - "MATH_TRIG_TOOLTIP_ACOS": "Liveras la arkokosinuson de nombro.", - "MATH_TRIG_TOOLTIP_ATAN": "La targentarko de nombro estos liverita.", - "MATH_CONSTANT_HELPURL": "https://eo.wikipedia.org/wiki/Matematika_konstanto", - "MATH_CONSTANT_TOOLTIP": "Liveras unu el la ofte uzataj konstantoj: π (3,141…), e (2,718…), φ (1,618…), √2 (1,414…), √½ (0,707…), aŭ ∞ (malfinio).", - "MATH_IS_EVEN": "estas para", - "MATH_IS_ODD": "estas nepara", - "MATH_IS_PRIME": "estas primo", - "MATH_IS_WHOLE": "estas entjero", - "MATH_IS_POSITIVE": "estas pozitiva", - "MATH_IS_NEGATIVE": "estas negativa", - "MATH_IS_DIVISIBLE_BY": "estas dividebla de", - "MATH_IS_TOOLTIP": "Vero aŭ malvero estos liverita, depende de la rezulto de kontrolo, ĉu nombro estas para, nepara, pozitiva, negativa, aŭ dividebla de iu nombro.", - "MATH_CHANGE_HELPURL": "https://eo.wikipedia.org/wiki/Kremento", - "MATH_CHANGE_TITLE": "krementi %1 per %2", - "MATH_CHANGE_TOOLTIP": "Aldoni nombron al variablo '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Rondigi nombroj, supren aŭ malsupren.", - "MATH_ROUND_OPERATOR_ROUND": "rondigi", - "MATH_ROUND_OPERATOR_ROUNDUP": "Rondigi supren", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "rondigi malsupren", - "MATH_ONLIST_OPERATOR_SUM": "sumo de listo", - "MATH_ONLIST_TOOLTIP_SUM": "Liveri la sumon de ĉiuj nombroj en la listo.", - "MATH_ONLIST_OPERATOR_MIN": "listminimumo", - "MATH_ONLIST_TOOLTIP_MIN": "Liveri la plej malgrandan nombron en la listo.", - "MATH_ONLIST_OPERATOR_MAX": "listmaksimumo", - "MATH_ONLIST_TOOLTIP_MAX": "Liveri la plej grandan nombron en la listo.", - "MATH_ONLIST_OPERATOR_AVERAGE": "listmezumo", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Liveri la aritmetikan meznombron de la nombroj en la listo.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediano de listo", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Liveras la medianan nombron en la listo.", - "MATH_ONLIST_OPERATOR_MODE": "modoj de listo", - "MATH_ONLIST_TOOLTIP_MODE": "Liveras liston de la plej ofta(j) elemento(j) en la listo.", - "MATH_ONLIST_OPERATOR_STD_DEV": "Norma devio de la listo", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Liveri la norman devion de la listo.", - "MATH_ONLIST_OPERATOR_RANDOM": "hazarda elemento el la listo", - "MATH_ONLIST_TOOLTIP_RANDOM": "Liveri hazardan elementon el la listo.", - "MATH_MODULO_HELPURL": "https://eo.wikipedia.org/wiki/Resto", - "MATH_MODULO_TITLE": "resto de %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Liveri la reston de la divido de la du nombroj.", - "MATH_CONSTRAIN_TITLE": "limigi %1 inter %2 kaj %3", - "MATH_CONSTRAIN_TOOLTIP": "La nombro estos limigita tiel ke ĝi egalas la limojn aŭ troviĝas inter ili.", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "hazarda entjero inter %1 kaj %2", - "MATH_RANDOM_INT_TOOLTIP": "Nombro estos hazarde liverita, tiel ke ĝi egalas la limojn aŭ troviĝas inter ili.", - "MATH_RANDOM_FLOAT_HELPURL": "https://eo.wikipedia.org/wiki/Hazardo", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "hazarda frakcio", - "MATH_RANDOM_FLOAT_TOOLTIP": "Liveras hazardan frakcion inter 0,0 (inkluzive) kaj 1,0 (ekskluzive).", - "MATH_ATAN2_HELPURL": "https://eo.wikipedia.org/wiki/Inversa_trigonometria_funkcio#Duargumenta_varianto_de_tangentarko", - "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Liveras la arkotangenton de punkto (X, Y) en gradoj inter -180 kaj 180.", - "TEXT_TEXT_HELPURL": "https://eo.wikipedia.org/wiki/Signoĉeno", - "TEXT_TEXT_TOOLTIP": "Litero, vorto, aŭ linio da teksto.", - "TEXT_JOIN_TITLE_CREATEWITH": "krei tekston kun", - "TEXT_JOIN_TOOLTIP": "Krei pecon de teksto per kunigi ajnan nombron de eroj.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "kunigi", - "TEXT_CREATE_JOIN_TOOLTIP": "Aldonu, forigu, aŭ reorganizu partojn por reagordi la tekstan blokon.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Aldoni eron al la teksto.", - "TEXT_APPEND_TITLE": "al %1 postaldoni tekston %2", - "TEXT_APPEND_TOOLTIP": "Postapendi iom da teksto al variablo '%1'.", - "TEXT_LENGTH_TITLE": "longo de %1", - "TEXT_LENGTH_TOOLTIP": "Liveras la nombron de literoj (inkluzive de spacetoj) en la provizita teksto.", - "TEXT_ISEMPTY_TITLE": "%1 malplenas", - "TEXT_ISEMPTY_TOOLTIP": "Liveras veron, se la provizita teksto estas malplena.", - "TEXT_INDEXOF_TOOLTIP": "Liveras indekson de la unua/lasta okazo de la unua teksto en la dua teksto. Liveras %1 se la unua teksto ne okazas en la dua teksto.", - "TEXT_INDEXOF_TITLE": "en la teksto %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "trovi la unuan okazon de teksto", - "TEXT_INDEXOF_OPERATOR_LAST": "trovi la lastan okazon de teksto", - "TEXT_CHARAT_TITLE": "en la teksto %1, %2", - "TEXT_CHARAT_FROM_START": "akiri literon de numero", - "TEXT_CHARAT_FROM_END": "akiri literon de inversa numero", - "TEXT_CHARAT_FIRST": "akiri unuan literon", - "TEXT_CHARAT_LAST": "akiri lastan literon", - "TEXT_CHARAT_RANDOM": "akiri hazardan literon", - "TEXT_CHARAT_TOOLTIP": "Liveras literon ĉe specifita loko.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Liveri specifitan parto de la teksto.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "en la teksto", - "TEXT_GET_SUBSTRING_START_FROM_START": "akiri subsignoĉenon ekde litero de numero", - "TEXT_GET_SUBSTRING_START_FROM_END": "akiri subsignoĉenon ekde litero de inversa numero", - "TEXT_GET_SUBSTRING_START_FIRST": "akiri subsignoĉenon ekde la unua litero", - "TEXT_GET_SUBSTRING_END_FROM_START": "ĝis litero de numero", - "TEXT_GET_SUBSTRING_END_FROM_END": "ĝis litero de inversa numero", - "TEXT_GET_SUBSTRING_END_LAST": "ĝis lasta litero", - "TEXT_CHANGECASE_TOOLTIP": "Liveras kopion de la teksto je alia usklo.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "MAJUSKLIGI", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "minuskligi", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Nomuskligi", - "TEXT_TRIM_TOOLTIP": "Liveras kopion de teksto, de kies fino(j) spacetoj foriĝis.", - "TEXT_TRIM_OPERATOR_BOTH": "forigi spacetojn for de ambaŭ finoj de", - "TEXT_TRIM_OPERATOR_LEFT": "forigi spacetojn for de maldekstra fino de", - "TEXT_TRIM_OPERATOR_RIGHT": "forigi spacetojn for de dekstra fino de", - "TEXT_PRINT_TITLE": "presi %1", - "TEXT_PRINT_TOOLTIP": "Presi la specifitan tekston, nombron aŭ alian valoron.", - "TEXT_PROMPT_TYPE_TEXT": "ricevi tekston per mesaĝo", - "TEXT_PROMPT_TYPE_NUMBER": "ricevi nombron per mesaĝo", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Peti nombron al uzanto.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Peti tekston al uzanto.", - "TEXT_COUNT_MESSAGE0": "kalkuli la okazojn de %1 en %2", - "TEXT_COUNT_TOOLTIP": "Kalkuli kiomfoje iu teksto okazas en iu alia teksto.", - "TEXT_REPLACE_MESSAGE0": "anstataŭigi tekston %1 per %2 en %3", - "TEXT_REPLACE_TOOLTIP": "Anstataŭigi ĉiujn okazojn de iu teksto en alia teksto.", - "TEXT_REVERSE_MESSAGE0": "inversigi tekston %1", - "TEXT_REVERSE_TOOLTIP": "Inversigi la ordon de la skribsignoj en la teksto.", - "LISTS_CREATE_EMPTY_TITLE": "krei malplenan liston", - "LISTS_CREATE_EMPTY_TOOLTIP": "Liveri liston, de longo 0, sen datenaj rikordoj", - "LISTS_CREATE_WITH_TOOLTIP": "Krei liston kun ajna nombro de elementoj.", - "LISTS_CREATE_WITH_INPUT_WITH": "krei liston kun", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listo", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Aldoni, forigi aŭ ordigi partojn por reagordi la listan blokon.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Aldoni elementon al la listo.", - "LISTS_REPEAT_TOOLTIP": "Listo kun la specifita nombro de elementoj, kiuj havos la donitan valoron, estos kreita.", - "LISTS_REPEAT_TITLE": "krei liston kun elemento %1 ripetita %2 fojojn", - "LISTS_LENGTH_TITLE": "longo de %1", - "LISTS_LENGTH_TOOLTIP": "Liveri la longon de listo.", - "LISTS_ISEMPTY_TITLE": "%1 malplenas", - "LISTS_ISEMPTY_TOOLTIP": "Liveri veron, se la listo malplenas.", - "LISTS_INLIST": "en la listo", - "LISTS_INDEX_OF_FIRST": "trovi la unuan aperon de elemento", - "LISTS_INDEX_OF_LAST": "trovi la lastan aperon de elemento", - "LISTS_INDEX_OF_TOOLTIP": "La indekso de la unua/lasta apero de la elemento en la listo estos liverita. %1 estos liverita se la elemento ne estas trovita.", - "LISTS_GET_INDEX_GET": "akiri", - "LISTS_GET_INDEX_GET_REMOVE": "akiri kaj forigi", - "LISTS_GET_INDEX_REMOVE": "forigi", - "LISTS_GET_INDEX_FROM_END": "#el la fino", - "LISTS_GET_INDEX_FIRST": "unuan", - "LISTS_GET_INDEX_LAST": "lastan", - "LISTS_GET_INDEX_RANDOM": "hazardan", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 estas la unua elemento.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 estas la lasta elemento.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Liveri la elementon ĉe la specifita pozicio en listo.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "La unua elemento en la listo esto liverita.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Liveri la lastan elementon en la listo.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Hazarda elemento en la listo estos liverita.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Liveri kaj forigi la elementon en la specifita pozicio de la listo.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "La unua elemento en la listo estos liverita kaj forigita.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Forigi kaj liveri la lastan elementon en listo.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Hazarda elemento en la listo estos liverita kaj forigita.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "La elemento en la specifita pozicio en la listo estos forigita.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "La unua elemento en la listo estos forigita.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "La lasta elemento en la listo estos forigita.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Hazarda elemento en la listo estos forigita.", - "LISTS_SET_INDEX_SET": "difini", - "LISTS_SET_INDEX_INSERT": "enmeti je", - "LISTS_SET_INDEX_INPUT_TO": "kiel", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Difinas la elementon ĉe la specifita pozicio en listo", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Difinas la unua elementon en listo.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Difinas la lastan elementon en listo.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Difinas hazardan elementon en listo.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Enigas la elementon ĉe specifita pozicio en listo.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Antaŭaldonas la elementon ĉe la komenco de listo.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Postaldonas la elementon ĉe la fino de listo.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Enigas la elementon hazarde en listo.", - "LISTS_GET_SUBLIST_START_FROM_START": "akiri subliston ekde elemento de numero", - "LISTS_GET_SUBLIST_START_FROM_END": "akiri subliston ekde elemento de inversa numero", - "LISTS_GET_SUBLIST_START_FIRST": "akiri subliston ekde la unua elemento", - "LISTS_GET_SUBLIST_END_FROM_START": "ĝis elemento de numero", - "LISTS_GET_SUBLIST_END_FROM_END": "ĝis elemento de inversa numero", - "LISTS_GET_SUBLIST_END_LAST": "ĝis la lasta elemento", - "LISTS_GET_SUBLIST_TOOLTIP": "Kreas kopion de la specifita parto de listo.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "ordigi %1 %2 liston %3", - "LISTS_SORT_TOOLTIP": "Ordigas kopion de listo.", - "LISTS_SORT_ORDER_ASCENDING": "kreskante", - "LISTS_SORT_ORDER_DESCENDING": "malkreskante", - "LISTS_SORT_TYPE_NUMERIC": "nombre", - "LISTS_SORT_TYPE_TEXT": "alfabete", - "LISTS_SORT_TYPE_IGNORECASE": "alfabete, ignorante usklon", - "LISTS_SPLIT_LIST_FROM_TEXT": "fari liston el teksto", - "LISTS_SPLIT_TEXT_FROM_LIST": "fari tekston el listo", - "LISTS_SPLIT_WITH_DELIMITER": "kun apartigilo", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Disdividas tekston en liston da tekstoj, laŭ apartigilo.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Kunigas liston de tekstoj en unu tekston, kun apartigilo inter la elementoj.", - "LISTS_REVERSE_MESSAGE0": "inversigi liston %1", - "LISTS_REVERSE_TOOLTIP": "Inversigi kopion de listo.", - "VARIABLES_GET_TOOLTIP": "Liveras la valoron de ĉi tiu variablo.", - "VARIABLES_GET_CREATE_SET": "Krei blokon 'difini variablon %1'", - "VARIABLES_SET": "difini %1 kiel %2", - "VARIABLES_SET_TOOLTIP": "Difinas ĉi tiun variablon kiel la eniron.", - "VARIABLES_SET_CREATE_GET": "Krei blokon 'akiri variablon %1'", - "PROCEDURES_DEFNORETURN_TITLE": "por", - "PROCEDURES_DEFNORETURN_PROCEDURE": "fari ion", - "PROCEDURES_BEFORE_PARAMS": "kun:", - "PROCEDURES_CALL_BEFORE_PARAMS": "kun:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Krei funkcion sen eliro.", - "PROCEDURES_DEFNORETURN_COMMENT": "Priskribi ĉi tiun funkcion...", - "PROCEDURES_DEFRETURN_RETURN": "liveri", - "PROCEDURES_DEFRETURN_TOOLTIP": "Krei funkcion kun unu eliro.", - "PROCEDURES_ALLOW_STATEMENTS": "permesi ordonojn", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Averto: la funkcio havas du parametrojn kun la sama nomo.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://eo.wikipedia.org/wiki/Subprogramo", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Ruli la uzanto-difinitan funkcion '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://eo.wikipedia.org/wiki/Subprogramo", - "PROCEDURES_CALLRETURN_TOOLTIP": "Ruli la uzanto-difinitan funkcion '%1' kaj uzi ĝian eliron.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "eniroj", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Aldoni, forigi, aŭ reorganizi enirojn je ĉi tiu funkcio.", - "PROCEDURES_MUTATORARG_TITLE": "nomo de enigo:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Aldoni eniron al la funkcio.", - "PROCEDURES_HIGHLIGHT_DEF": "Emfazi difinon de funkcio", - "PROCEDURES_CREATE_DO": "Krei '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Se valoro estas vero, do liveras duan valoron.", - "PROCEDURES_IFRETURN_WARNING": "Averto: Ĉi tiu bloko estas uzebla nur en difino de funkcio.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Diru ion…", - "WORKSPACE_ARIA_LABEL": "Laborspaco de Blockly", - "COLLAPSED_WARNINGS_WARNING": "Falditaj blokoj enhavas avertojn.", - "DIALOG_OK": "Bone", - "DIALOG_CANCEL": "Nuligi" -} +{ + "@metadata": { + "authors": [ + "Cérilew", + "Etrapani", + "Mirin", + "Ochilov", + "Orikrin1998", + "Robin van der Vliet", + "Surfo" + ] + }, + "VARIABLES_DEFAULT_NAME": "elemento", + "UNNAMED_KEY": "nenomita", + "TODAY": "Hodiaŭ", + "DUPLICATE_BLOCK": "Duobligi", + "ADD_COMMENT": "Aldoni komenton", + "REMOVE_COMMENT": "Forigi komenton", + "DUPLICATE_COMMENT": "Duobligi Komenton", + "EXTERNAL_INPUTS": "Eksteraj eniroj", + "INLINE_INPUTS": "Entekstaj eniroj", + "DELETE_BLOCK": "Forigi blokon", + "DELETE_X_BLOCKS": "Forigi %1 blokojn", + "DELETE_ALL_BLOCKS": "Ĉu forigi ĉiujn %1 blokojn?", + "CLEAN_UP": "Purigi blokojn", + "COLLAPSE_BLOCK": "Faldi blokon", + "COLLAPSE_ALL": "Faldi blokojn", + "EXPAND_BLOCK": "Malfaldi blokon", + "EXPAND_ALL": "Malfaldi blokojn", + "DISABLE_BLOCK": "Malŝalti blokon", + "ENABLE_BLOCK": "Ŝalti blokon", + "HELP": "Helpo", + "UNDO": "Malfari", + "REDO": "Refari", + "CHANGE_VALUE_TITLE": "Ŝangi valoron:", + "RENAME_VARIABLE": "Renomi variablon...", + "RENAME_VARIABLE_TITLE": "Renomi ĉiujn '%1' variablojn kiel:", + "NEW_VARIABLE": "Nova variablo...", + "NEW_STRING_VARIABLE": "Krei signoĉenan variablon...", + "NEW_NUMBER_VARIABLE": "Krei nombran variablon...", + "NEW_COLOUR_VARIABLE": "Krei koloran variablon...", + "NEW_VARIABLE_TYPE_TITLE": "Tipo de nova variablo:", + "NEW_VARIABLE_TITLE": "Nova nomo de variablo:", + "VARIABLE_ALREADY_EXISTS": "Jam ekzistas variablo kun la nomo '%1'.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Jam ekzistas variablo kun la nomo '%1' por alia tipo: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Ĉu forigi %1 uzojn de la variablo '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne povas forigi la variablon '%1' ĉar ĝi estas parto de la difino de la funkcio '%2'", + "DELETE_VARIABLE": "Forigi la variablon '%1'", + "COLOUR_PICKER_HELPURL": "https://eo.wikipedia.org/wiki/Koloro", + "COLOUR_PICKER_TOOLTIP": "Elekti koloron el la paletro.", + "COLOUR_RANDOM_TITLE": "hazarda koloro", + "COLOUR_RANDOM_TOOLTIP": "Elekti hazardan koloron.", + "COLOUR_RGB_TITLE": "kolorigi per", + "COLOUR_RGB_RED": "ruĝa", + "COLOUR_RGB_GREEN": "verda", + "COLOUR_RGB_BLUE": "blua", + "COLOUR_RGB_TOOLTIP": "Kreas koloron kun specifita kvanto de ruĝo, verdo, kaj bluo. Ĉiuj valoroj devas esti inter 0 kaj 100.", + "COLOUR_BLEND_TITLE": "miksi", + "COLOUR_BLEND_COLOUR1": "koloro 1", + "COLOUR_BLEND_COLOUR2": "koloro 2", + "COLOUR_BLEND_RATIO": "proporcio", + "COLOUR_BLEND_TOOLTIP": "Kunmiksas du kolorojn laŭ specifita proporcio (0,0 - 1,0).", + "CONTROLS_REPEAT_HELPURL": "https://eo.wikipedia.org/wiki/Iteracio", + "CONTROLS_REPEAT_TITLE": "ripeti %1 fojojn", + "CONTROLS_REPEAT_INPUT_DO": "fari", + "CONTROLS_REPEAT_TOOLTIP": "Plenumas kelkajn ordonojn plurfoje.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ripeti dum", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ripeti ĝis", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Plenumi ordonojn dum la valoro egalas veron.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Plenumi ordonojn dum valoro egalas malvero.", + "CONTROLS_FOR_TOOLTIP": "Varias la variablon '%1', ekde la komenca nombro ĝis la fina nombro, laŭ la specifita diferenco; dume rulas la specifitajn blokojn.", + "CONTROLS_FOR_TITLE": "kalkuli kun variablo %1 ekde %2 ĝis %3 per diferenco %4", + "CONTROLS_FOREACH_TITLE": "por ĉiu elemento %1 en la listo %2", + "CONTROLS_FOREACH_TOOLTIP": "Pri ĉiu elemento en listo, difinas la variablon '%1' al la elemento, kaj faras kelkajn ordonojn.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "eliri el la ciklo", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "daŭrigi je la venonta ripeto de la ciklo", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Eliri el la enhava ciklo.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Pretersalti la ceteron de tiu ĉi ciklo kaj daŭrigi je la venonta ripeto.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Averto: tiu ĉi bloko uzeblas nur ene de ciklo.", + "CONTROLS_IF_TOOLTIP_1": "Plenumi ordonojn se la valoro estas vero.", + "CONTROLS_IF_TOOLTIP_2": "Plenumi la unuan blokon de ordonoj se la valoro estas vero, se ne, la duan.", + "CONTROLS_IF_TOOLTIP_3": "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj.", + "CONTROLS_IF_TOOLTIP_4": "Se la unua valoro estas vero, do faras la unuan blokon de ordonoj. Alie, se la dua valoro estas vero, do faras la duan blokon de ordonoj. Se neniu el la du valoroj estas vero, do faras la lastan blokon de ordonoj.", + "CONTROLS_IF_MSG_IF": "se", + "CONTROLS_IF_MSG_ELSEIF": "alie se", + "CONTROLS_IF_MSG_ELSE": "alie", + "CONTROLS_IF_IF_TOOLTIP": "Aldoni, forigi aŭ reorganizi partojn por reagordi la 'se'-blokon.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Aldoni kondiĉon al la bloko 'se'", + "CONTROLS_IF_ELSE_TOOLTIP": "Aldoni 'aliokaze' kondiĉon al la 'se' bloko.", + "LOGIC_COMPARE_HELPURL": "https://eo.wikipedia.org/wiki/Neegala%C4%B5o_(pli_granda,_malpli_granda)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Liveri veron, se la du eniroj egalas.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Liveri veron, se la du eniroj ne egalas.", + "LOGIC_COMPARE_TOOLTIP_LT": "Liveri veron, se la unua eniro estas pli malgranda ol la dua.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Vero estos liverita, se la unua eniro estas pli eta aŭ egala al la dua.", + "LOGIC_COMPARE_TOOLTIP_GT": "Liveri veron, se la unua eniro estas pli granda ol la dua.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Vero estos liverita, se la unua eniro estas pli granda aŭ egala al la dua.", + "LOGIC_OPERATION_TOOLTIP_AND": "Liveri veron, se la du eniroj egalas veron.", + "LOGIC_OPERATION_AND": "kaj", + "LOGIC_OPERATION_TOOLTIP_OR": "Liveri veron, se almenaŭ unu el la eniroj egalas veron.", + "LOGIC_OPERATION_OR": "aŭ", + "LOGIC_NEGATE_TITLE": "maligi %1", + "LOGIC_NEGATE_TOOLTIP": "Liveri veron, se la eniro egalas malveron. Liveri malveron, se la eniro egalas veron.", + "LOGIC_BOOLEAN_TRUE": "vera", + "LOGIC_BOOLEAN_FALSE": "falsa", + "LOGIC_BOOLEAN_TOOLTIP": "Liveri ĉu veron ĉu malveron.", + "LOGIC_NULL": "senvalora", + "LOGIC_NULL_TOOLTIP": "Liveras senvaloron.", + "LOGIC_TERNARY_CONDITION": "testi", + "LOGIC_TERNARY_IF_TRUE": "se estas vero", + "LOGIC_TERNARY_IF_FALSE": "se estas malvero", + "LOGIC_TERNARY_TOOLTIP": "Kontroli la kondiĉon en 'testo'. Se la kondiĉo egalas veron, liveri la valoron 'se estas vero', aliokaze liveri la valoron 'se estas malvero'.", + "MATH_NUMBER_HELPURL": "https://eo.wikipedia.org/wiki/Nombro", + "MATH_NUMBER_TOOLTIP": "Nombro.", + "MATH_ARITHMETIC_HELPURL": "https://eo.wikipedia.org/wiki/Aritmetiko", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Liveri la sumon de la du nombroj.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Liveri la diferencon inter la du nombroj.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "La produto de la du numeroj estos liverita.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Liveri la kvocienton de la du nombroj.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Livero la tian potencon de la unua nombro, kia la dua nombro estas", + "MATH_SINGLE_HELPURL": "https://eo.wikipedia.org/wiki/Kvadrata_radiko", + "MATH_SINGLE_OP_ROOT": "kvadrata radiko", + "MATH_SINGLE_TOOLTIP_ROOT": "Liveri la kvadratan radikon de nombro.", + "MATH_SINGLE_OP_ABSOLUTE": "absoluta", + "MATH_SINGLE_TOOLTIP_ABS": "Liveri la absolutan valoron de nombro.", + "MATH_SINGLE_TOOLTIP_NEG": "La negativigo de numero estos liverita.", + "MATH_SINGLE_TOOLTIP_LN": "Liveri la naturan logaritmon de nombro.", + "MATH_SINGLE_TOOLTIP_LOG10": "La dekbaza logaritmo de numero estos liverita.", + "MATH_SINGLE_TOOLTIP_EXP": "Liveri potencon de e.", + "MATH_SINGLE_TOOLTIP_POW10": "Liveri tian potencon de 10, kia la eniro estas.", + "MATH_TRIG_HELPURL": "https://eo.wikipedia.org/wiki/Trigonometria_funkcio", + "MATH_TRIG_TOOLTIP_SIN": "Liveras la sinuson de angulo en gradoj (ne radianoj).", + "MATH_TRIG_TOOLTIP_COS": "Liveras la kosinuson de angulo en gradoj (ne radianoj).", + "MATH_TRIG_TOOLTIP_TAN": "Liveras la tangenton de angulo en gradoj (ne radianoj).", + "MATH_TRIG_TOOLTIP_ASIN": "La sinusarko de nombro estos liverita.", + "MATH_TRIG_TOOLTIP_ACOS": "Liveras la arkokosinuson de nombro.", + "MATH_TRIG_TOOLTIP_ATAN": "La targentarko de nombro estos liverita.", + "MATH_CONSTANT_HELPURL": "https://eo.wikipedia.org/wiki/Matematika_konstanto", + "MATH_CONSTANT_TOOLTIP": "Liveras unu el la ofte uzataj konstantoj: π (3,141…), e (2,718…), φ (1,618…), √2 (1,414…), √½ (0,707…), aŭ ∞ (malfinio).", + "MATH_IS_EVEN": "estas para", + "MATH_IS_ODD": "estas nepara", + "MATH_IS_PRIME": "estas primo", + "MATH_IS_WHOLE": "estas entjero", + "MATH_IS_POSITIVE": "estas pozitiva", + "MATH_IS_NEGATIVE": "estas negativa", + "MATH_IS_DIVISIBLE_BY": "estas dividebla de", + "MATH_IS_TOOLTIP": "Vero aŭ malvero estos liverita, depende de la rezulto de kontrolo, ĉu nombro estas para, nepara, pozitiva, negativa, aŭ dividebla de iu nombro.", + "MATH_CHANGE_HELPURL": "https://eo.wikipedia.org/wiki/Kremento", + "MATH_CHANGE_TITLE": "krementi %1 per %2", + "MATH_CHANGE_TOOLTIP": "Aldoni nombron al variablo '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Rondigi nombroj, supren aŭ malsupren.", + "MATH_ROUND_OPERATOR_ROUND": "rondigi", + "MATH_ROUND_OPERATOR_ROUNDUP": "Rondigi supren", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "rondigi malsupren", + "MATH_ONLIST_OPERATOR_SUM": "sumo de listo", + "MATH_ONLIST_TOOLTIP_SUM": "Liveri la sumon de ĉiuj nombroj en la listo.", + "MATH_ONLIST_OPERATOR_MIN": "listminimumo", + "MATH_ONLIST_TOOLTIP_MIN": "Liveri la plej malgrandan nombron en la listo.", + "MATH_ONLIST_OPERATOR_MAX": "listmaksimumo", + "MATH_ONLIST_TOOLTIP_MAX": "Liveri la plej grandan nombron en la listo.", + "MATH_ONLIST_OPERATOR_AVERAGE": "listmezumo", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Liveri la aritmetikan meznombron de la nombroj en la listo.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediano de listo", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Liveras la medianan nombron en la listo.", + "MATH_ONLIST_OPERATOR_MODE": "modoj de listo", + "MATH_ONLIST_TOOLTIP_MODE": "Liveras liston de la plej ofta(j) elemento(j) en la listo.", + "MATH_ONLIST_OPERATOR_STD_DEV": "Norma devio de la listo", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Liveri la norman devion de la listo.", + "MATH_ONLIST_OPERATOR_RANDOM": "hazarda elemento el la listo", + "MATH_ONLIST_TOOLTIP_RANDOM": "Liveri hazardan elementon el la listo.", + "MATH_MODULO_HELPURL": "https://eo.wikipedia.org/wiki/Resto", + "MATH_MODULO_TITLE": "resto de %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Liveri la reston de la divido de la du nombroj.", + "MATH_CONSTRAIN_TITLE": "limigi %1 inter %2 kaj %3", + "MATH_CONSTRAIN_TOOLTIP": "La nombro estos limigita tiel ke ĝi egalas la limojn aŭ troviĝas inter ili.", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "hazarda entjero inter %1 kaj %2", + "MATH_RANDOM_INT_TOOLTIP": "Nombro estos hazarde liverita, tiel ke ĝi egalas la limojn aŭ troviĝas inter ili.", + "MATH_RANDOM_FLOAT_HELPURL": "https://eo.wikipedia.org/wiki/Hazardo", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "hazarda frakcio", + "MATH_RANDOM_FLOAT_TOOLTIP": "Liveras hazardan frakcion inter 0,0 (inkluzive) kaj 1,0 (ekskluzive).", + "MATH_ATAN2_HELPURL": "https://eo.wikipedia.org/wiki/Inversa_trigonometria_funkcio#Duargumenta_varianto_de_tangentarko", + "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Liveras la arkotangenton de punkto (X, Y) en gradoj inter -180 kaj 180.", + "TEXT_TEXT_HELPURL": "https://eo.wikipedia.org/wiki/Signoĉeno", + "TEXT_TEXT_TOOLTIP": "Litero, vorto, aŭ linio da teksto.", + "TEXT_JOIN_TITLE_CREATEWITH": "krei tekston kun", + "TEXT_JOIN_TOOLTIP": "Krei pecon de teksto per kunigi ajnan nombron de eroj.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "kunigi", + "TEXT_CREATE_JOIN_TOOLTIP": "Aldonu, forigu, aŭ reorganizu partojn por reagordi la tekstan blokon.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Aldoni eron al la teksto.", + "TEXT_APPEND_TITLE": "al %1 postaldoni tekston %2", + "TEXT_APPEND_TOOLTIP": "Postapendi iom da teksto al variablo '%1'.", + "TEXT_LENGTH_TITLE": "longo de %1", + "TEXT_LENGTH_TOOLTIP": "Liveras la nombron de literoj (inkluzive de spacetoj) en la provizita teksto.", + "TEXT_ISEMPTY_TITLE": "%1 malplenas", + "TEXT_ISEMPTY_TOOLTIP": "Liveras veron, se la provizita teksto estas malplena.", + "TEXT_INDEXOF_TOOLTIP": "Liveras indekson de la unua/lasta okazo de la unua teksto en la dua teksto. Liveras %1 se la unua teksto ne okazas en la dua teksto.", + "TEXT_INDEXOF_TITLE": "en la teksto %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "trovi la unuan okazon de teksto", + "TEXT_INDEXOF_OPERATOR_LAST": "trovi la lastan okazon de teksto", + "TEXT_CHARAT_TITLE": "en la teksto %1, %2", + "TEXT_CHARAT_FROM_START": "akiri literon de numero", + "TEXT_CHARAT_FROM_END": "akiri literon de inversa numero", + "TEXT_CHARAT_FIRST": "akiri unuan literon", + "TEXT_CHARAT_LAST": "akiri lastan literon", + "TEXT_CHARAT_RANDOM": "akiri hazardan literon", + "TEXT_CHARAT_TOOLTIP": "Liveras literon ĉe specifita loko.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Liveri specifitan parto de la teksto.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "en la teksto", + "TEXT_GET_SUBSTRING_START_FROM_START": "akiri subsignoĉenon ekde litero de numero", + "TEXT_GET_SUBSTRING_START_FROM_END": "akiri subsignoĉenon ekde litero de inversa numero", + "TEXT_GET_SUBSTRING_START_FIRST": "akiri subsignoĉenon ekde la unua litero", + "TEXT_GET_SUBSTRING_END_FROM_START": "ĝis litero de numero", + "TEXT_GET_SUBSTRING_END_FROM_END": "ĝis litero de inversa numero", + "TEXT_GET_SUBSTRING_END_LAST": "ĝis lasta litero", + "TEXT_CHANGECASE_TOOLTIP": "Liveras kopion de la teksto je alia usklo.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "MAJUSKLIGI", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "minuskligi", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Nomuskligi", + "TEXT_TRIM_TOOLTIP": "Liveras kopion de teksto, de kies fino(j) spacetoj foriĝis.", + "TEXT_TRIM_OPERATOR_BOTH": "forigi spacetojn for de ambaŭ finoj de", + "TEXT_TRIM_OPERATOR_LEFT": "forigi spacetojn for de maldekstra fino de", + "TEXT_TRIM_OPERATOR_RIGHT": "forigi spacetojn for de dekstra fino de", + "TEXT_PRINT_TITLE": "presi %1", + "TEXT_PRINT_TOOLTIP": "Presi la specifitan tekston, nombron aŭ alian valoron.", + "TEXT_PROMPT_TYPE_TEXT": "ricevi tekston per mesaĝo", + "TEXT_PROMPT_TYPE_NUMBER": "ricevi nombron per mesaĝo", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Peti nombron al uzanto.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Peti tekston al uzanto.", + "TEXT_COUNT_MESSAGE0": "kalkuli la okazojn de %1 en %2", + "TEXT_COUNT_TOOLTIP": "Kalkuli kiomfoje iu teksto okazas en iu alia teksto.", + "TEXT_REPLACE_MESSAGE0": "anstataŭigi tekston %1 per %2 en %3", + "TEXT_REPLACE_TOOLTIP": "Anstataŭigi ĉiujn okazojn de iu teksto en alia teksto.", + "TEXT_REVERSE_MESSAGE0": "inversigi tekston %1", + "TEXT_REVERSE_TOOLTIP": "Inversigi la ordon de la skribsignoj en la teksto.", + "LISTS_CREATE_EMPTY_TITLE": "krei malplenan liston", + "LISTS_CREATE_EMPTY_TOOLTIP": "Liveri liston, de longo 0, sen datenaj rikordoj", + "LISTS_CREATE_WITH_TOOLTIP": "Krei liston kun ajna nombro de elementoj.", + "LISTS_CREATE_WITH_INPUT_WITH": "krei liston kun", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listo", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Aldoni, forigi aŭ ordigi partojn por reagordi la listan blokon.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Aldoni elementon al la listo.", + "LISTS_REPEAT_TOOLTIP": "Listo kun la specifita nombro de elementoj, kiuj havos la donitan valoron, estos kreita.", + "LISTS_REPEAT_TITLE": "krei liston kun elemento %1 ripetita %2 fojojn", + "LISTS_LENGTH_TITLE": "longo de %1", + "LISTS_LENGTH_TOOLTIP": "Liveri la longon de listo.", + "LISTS_ISEMPTY_TITLE": "%1 malplenas", + "LISTS_ISEMPTY_TOOLTIP": "Liveri veron, se la listo malplenas.", + "LISTS_INLIST": "en la listo", + "LISTS_INDEX_OF_FIRST": "trovi la unuan aperon de elemento", + "LISTS_INDEX_OF_LAST": "trovi la lastan aperon de elemento", + "LISTS_INDEX_OF_TOOLTIP": "La indekso de la unua/lasta apero de la elemento en la listo estos liverita. %1 estos liverita se la elemento ne estas trovita.", + "LISTS_GET_INDEX_GET": "akiri", + "LISTS_GET_INDEX_GET_REMOVE": "akiri kaj forigi", + "LISTS_GET_INDEX_REMOVE": "forigi", + "LISTS_GET_INDEX_FROM_END": "#el la fino", + "LISTS_GET_INDEX_FIRST": "unuan", + "LISTS_GET_INDEX_LAST": "lastan", + "LISTS_GET_INDEX_RANDOM": "hazardan", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 estas la unua elemento.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 estas la lasta elemento.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Liveri la elementon ĉe la specifita pozicio en listo.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "La unua elemento en la listo esto liverita.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Liveri la lastan elementon en la listo.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Hazarda elemento en la listo estos liverita.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Liveri kaj forigi la elementon en la specifita pozicio de la listo.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "La unua elemento en la listo estos liverita kaj forigita.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Forigi kaj liveri la lastan elementon en listo.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Hazarda elemento en la listo estos liverita kaj forigita.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "La elemento en la specifita pozicio en la listo estos forigita.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "La unua elemento en la listo estos forigita.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "La lasta elemento en la listo estos forigita.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Hazarda elemento en la listo estos forigita.", + "LISTS_SET_INDEX_SET": "difini", + "LISTS_SET_INDEX_INSERT": "enmeti je", + "LISTS_SET_INDEX_INPUT_TO": "kiel", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Difinas la elementon ĉe la specifita pozicio en listo", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Difinas la unua elementon en listo.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Difinas la lastan elementon en listo.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Difinas hazardan elementon en listo.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Enigas la elementon ĉe specifita pozicio en listo.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Antaŭaldonas la elementon ĉe la komenco de listo.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Postaldonas la elementon ĉe la fino de listo.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Enigas la elementon hazarde en listo.", + "LISTS_GET_SUBLIST_START_FROM_START": "akiri subliston ekde elemento de numero", + "LISTS_GET_SUBLIST_START_FROM_END": "akiri subliston ekde elemento de inversa numero", + "LISTS_GET_SUBLIST_START_FIRST": "akiri subliston ekde la unua elemento", + "LISTS_GET_SUBLIST_END_FROM_START": "ĝis elemento de numero", + "LISTS_GET_SUBLIST_END_FROM_END": "ĝis elemento de inversa numero", + "LISTS_GET_SUBLIST_END_LAST": "ĝis la lasta elemento", + "LISTS_GET_SUBLIST_TOOLTIP": "Kreas kopion de la specifita parto de listo.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "ordigi %1 %2 liston %3", + "LISTS_SORT_TOOLTIP": "Ordigas kopion de listo.", + "LISTS_SORT_ORDER_ASCENDING": "kreskante", + "LISTS_SORT_ORDER_DESCENDING": "malkreskante", + "LISTS_SORT_TYPE_NUMERIC": "nombre", + "LISTS_SORT_TYPE_TEXT": "alfabete", + "LISTS_SORT_TYPE_IGNORECASE": "alfabete, ignorante usklon", + "LISTS_SPLIT_LIST_FROM_TEXT": "fari liston el teksto", + "LISTS_SPLIT_TEXT_FROM_LIST": "fari tekston el listo", + "LISTS_SPLIT_WITH_DELIMITER": "kun apartigilo", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Disdividas tekston en liston da tekstoj, laŭ apartigilo.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Kunigas liston de tekstoj en unu tekston, kun apartigilo inter la elementoj.", + "LISTS_REVERSE_MESSAGE0": "inversigi liston %1", + "LISTS_REVERSE_TOOLTIP": "Inversigi kopion de listo.", + "VARIABLES_GET_TOOLTIP": "Liveras la valoron de ĉi tiu variablo.", + "VARIABLES_GET_CREATE_SET": "Krei blokon 'difini variablon %1'", + "VARIABLES_SET": "difini %1 kiel %2", + "VARIABLES_SET_TOOLTIP": "Difinas ĉi tiun variablon kiel la eniron.", + "VARIABLES_SET_CREATE_GET": "Krei blokon 'akiri variablon %1'", + "PROCEDURES_DEFNORETURN_TITLE": "por", + "PROCEDURES_DEFNORETURN_PROCEDURE": "fari ion", + "PROCEDURES_BEFORE_PARAMS": "kun:", + "PROCEDURES_CALL_BEFORE_PARAMS": "kun:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Krei funkcion sen eliro.", + "PROCEDURES_DEFNORETURN_COMMENT": "Priskribi ĉi tiun funkcion...", + "PROCEDURES_DEFRETURN_RETURN": "liveri", + "PROCEDURES_DEFRETURN_TOOLTIP": "Krei funkcion kun unu eliro.", + "PROCEDURES_ALLOW_STATEMENTS": "permesi ordonojn", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Averto: la funkcio havas du parametrojn kun la sama nomo.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://eo.wikipedia.org/wiki/Subprogramo", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Ruli la uzanto-difinitan funkcion '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://eo.wikipedia.org/wiki/Subprogramo", + "PROCEDURES_CALLRETURN_TOOLTIP": "Ruli la uzanto-difinitan funkcion '%1' kaj uzi ĝian eliron.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "eniroj", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Aldoni, forigi, aŭ reorganizi enirojn je ĉi tiu funkcio.", + "PROCEDURES_MUTATORARG_TITLE": "nomo de enigo:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Aldoni eniron al la funkcio.", + "PROCEDURES_HIGHLIGHT_DEF": "Emfazi difinon de funkcio", + "PROCEDURES_CREATE_DO": "Krei '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Se valoro estas vero, do liveras duan valoron.", + "PROCEDURES_IFRETURN_WARNING": "Averto: Ĉi tiu bloko estas uzebla nur en difino de funkcio.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Diru ion…", + "WORKSPACE_ARIA_LABEL": "Laborspaco de Blockly", + "COLLAPSED_WARNINGS_WARNING": "Falditaj blokoj enhavas avertojn.", + "DIALOG_OK": "Bone", + "DIALOG_CANCEL": "Nuligi" +} diff --git a/msg/json/es.json b/msg/json/es.json index 88c05ef7e3b..35c5e7b9036 100644 --- a/msg/json/es.json +++ b/msg/json/es.json @@ -1,355 +1,368 @@ -{ - "@metadata": { - "authors": [ - "Ajeje Brazorf", - "Codynguyen1116", - "Fitoschido", - "Harvest", - "Indiralena", - "Julián L", - "Ktranz", - "Luisangelrg", - "Macofe", - "MarcoAurelio", - "Martineduardo", - "Rubentl134", - "Ryo567", - "VegaDark", - "WeSiToS" - ] - }, - "VARIABLES_DEFAULT_NAME": "elemento", - "UNNAMED_KEY": "Sin nombre", - "TODAY": "Hoy", - "DUPLICATE_BLOCK": "Duplicar", - "ADD_COMMENT": "Añadir comentario", - "REMOVE_COMMENT": "Eliminar comentario", - "DUPLICATE_COMMENT": "Duplicar comentario", - "EXTERNAL_INPUTS": "Entradas externas", - "INLINE_INPUTS": "Entradas en línea", - "DELETE_BLOCK": "Eliminar bloque", - "DELETE_X_BLOCKS": "Eliminar %1 bloques", - "DELETE_ALL_BLOCKS": "¿Eliminar todos los %1 bloques?", - "CLEAN_UP": "Limpiar los bloques", - "COLLAPSE_BLOCK": "Contraer bloque", - "COLLAPSE_ALL": "Contraer bloques", - "EXPAND_BLOCK": "Expandir bloque", - "EXPAND_ALL": "Expandir bloques", - "DISABLE_BLOCK": "Desactivar bloque", - "ENABLE_BLOCK": "Activar bloque", - "HELP": "Ayuda", - "UNDO": "Deshacer", - "REDO": "Rehacer", - "CHANGE_VALUE_TITLE": "Cambiar el valor:", - "RENAME_VARIABLE": "Cambiar nombre de variable…", - "RENAME_VARIABLE_TITLE": "Renombrar todas las variables «%1» a:", - "NEW_VARIABLE": "Crear variable…", - "NEW_STRING_VARIABLE": "Crear una cadena variable...", - "NEW_NUMBER_VARIABLE": "Crear una variable de número...", - "NEW_COLOUR_VARIABLE": "Crear una variable de color...", - "NEW_VARIABLE_TYPE_TITLE": "Nuevo tipo de variable:", - "NEW_VARIABLE_TITLE": "Nombre de variable nueva:", - "VARIABLE_ALREADY_EXISTS": "Ya existe una variable llamada '%1'.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Ya existe una variable nombrada '%1' para otra variable del tipo: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "¿Borrar %1 usos de la variable '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "No se puede eliminar la variable '%1' porque es parte de la definición de la función '%2'", - "DELETE_VARIABLE": "Borrar la variable \"%1\"", - "COLOUR_PICKER_HELPURL": "https://es.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Elige un color de la paleta.", - "COLOUR_RANDOM_TITLE": "color aleatorio", - "COLOUR_RANDOM_TOOLTIP": "Elige un color al azar.", - "COLOUR_RGB_TITLE": "colorear con", - "COLOUR_RGB_RED": "rojo", - "COLOUR_RGB_GREEN": "verde", - "COLOUR_RGB_BLUE": "azul", - "COLOUR_RGB_TOOLTIP": "Crea un color con cantidades específicas de rojo, verde y azul. Todos los valores deben encontrarse entre 0 y 100.", - "COLOUR_BLEND_TITLE": "combinar", - "COLOUR_BLEND_COLOUR1": "color 1", - "COLOUR_BLEND_COLOUR2": "color 2", - "COLOUR_BLEND_RATIO": "proporción", - "COLOUR_BLEND_TOOLTIP": "Combina dos colores con una proporción determinada (0,0-1,0).", - "CONTROLS_REPEAT_HELPURL": "https://es.wikipedia.org/wiki/Bucle_for", - "CONTROLS_REPEAT_TITLE": "repetir %1 veces", - "CONTROLS_REPEAT_INPUT_DO": "hacer", - "CONTROLS_REPEAT_TOOLTIP": "Hacer algunas declaraciones varias veces.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir mientras", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir hasta", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Mientras un valor sea verdadero, entonces hacer algunas declaraciones.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Mientras un valor sea falso, entonces hacer algunas declaraciones.", - "CONTROLS_FOR_TOOLTIP": "Hacer que la variable \"%1\" tome los valores desde el número de inicio hasta el número final, contando con el intervalo especificado, y hacer los bloques especificados.", - "CONTROLS_FOR_TITLE": "contar con %1 desde %2 hasta %3 de a %4", - "CONTROLS_FOREACH_HELPURL": "https://es.wikipedia.org/wiki/Foreach", - "CONTROLS_FOREACH_TITLE": "para cada elemento %1 en la lista %2", - "CONTROLS_FOREACH_TOOLTIP": "Para cada elemento en una lista, establecer la variable '%1' al elemento y luego hacer algunas declaraciones.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "romper el bucle", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuar con la siguiente iteración del bucle", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Romper el bucle que lo contiene.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Saltar el resto de este bucle, y continuar con la siguiente iteración.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Atención: este bloque puede usarse solamente dentro de un bucle.", - "CONTROLS_IF_TOOLTIP_1": "Si un valor es verdadero, entonces hacer algunas declaraciones.", - "CONTROLS_IF_TOOLTIP_2": "Si un valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, hacer el segundo bloque de declaraciones.", - "CONTROLS_IF_TOOLTIP_3": "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones.", - "CONTROLS_IF_TOOLTIP_4": "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones. Si ninguno de los valores son verdaderos, hacer el último bloque de declaraciones.", - "CONTROLS_IF_MSG_IF": "si", - "CONTROLS_IF_MSG_ELSEIF": "sino si", - "CONTROLS_IF_MSG_ELSE": "sino", - "CONTROLS_IF_IF_TOOLTIP": "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Agregar una condición a este bloque.", - "CONTROLS_IF_ELSE_TOOLTIP": "Agregar una condición general final a este bloque.", - "LOGIC_COMPARE_HELPURL": "https://es.wikipedia.org/wiki/Desigualdad_matemática", - "LOGIC_COMPARE_TOOLTIP_EQ": "Devuelve verdadero si ambas entradas son iguales.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Devuelve verdadero si ambas entradas son distintas.", - "LOGIC_COMPARE_TOOLTIP_LT": "Devuelve verdadero si la primera entrada es menor que la segunda entrada.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Devuelve verdadero si la primera entrada es menor que o igual a la segunda entrada.", - "LOGIC_COMPARE_TOOLTIP_GT": "Devuelve verdadero si la primera entrada es mayor que la segunda entrada.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Devuelve verdadero si la primera entrada es mayor o igual a la segunda entrada.", - "LOGIC_OPERATION_TOOLTIP_AND": "Devuelve verdadero si ambas entradas son verdaderas.", - "LOGIC_OPERATION_AND": "y", - "LOGIC_OPERATION_TOOLTIP_OR": "Devuelve verdadero si al menos una de las entradas es verdadera.", - "LOGIC_OPERATION_OR": "o", - "LOGIC_NEGATE_TITLE": "no %1", - "LOGIC_NEGATE_TOOLTIP": "Devuelve verdadero si la entrada es falsa. Devuelve falso si la entrada es verdadera.", - "LOGIC_BOOLEAN_TRUE": "verdadero", - "LOGIC_BOOLEAN_FALSE": "falso", - "LOGIC_BOOLEAN_TOOLTIP": "Devuelve verdadero o falso.", - "LOGIC_NULL": "nulo", - "LOGIC_NULL_TOOLTIP": "Devuelve nulo.", - "LOGIC_TERNARY_CONDITION": "prueba", - "LOGIC_TERNARY_IF_TRUE": "si es verdadero", - "LOGIC_TERNARY_IF_FALSE": "si es falso", - "LOGIC_TERNARY_TOOLTIP": "Comprueba la condición en \"prueba\". Si la condición es verdadera, devuelve el valor \"si es verdadero\"; de lo contrario, devuelve el valor \"si es falso\".", - "MATH_NUMBER_HELPURL": "https://es.wikipedia.org/wiki/Número", - "MATH_NUMBER_TOOLTIP": "Un número.", - "MATH_ARITHMETIC_HELPURL": "https://es.wikipedia.org/wiki/Aritmética", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Devuelve la suma de ambos números.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Devuelve la diferencia de ambos números.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Devuelve el producto de ambos números.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Devuelve el cociente de ambos números.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Devuelve el primer número elevado a la potencia del segundo.", - "MATH_SINGLE_HELPURL": "https://es.wikipedia.org/wiki/Ra%C3%ADz_cuadrada", - "MATH_SINGLE_OP_ROOT": "raíz cuadrada", - "MATH_SINGLE_TOOLTIP_ROOT": "Devuelve la raíz cuadrada de un número.", - "MATH_SINGLE_OP_ABSOLUTE": "absoluto", - "MATH_SINGLE_TOOLTIP_ABS": "Devuelve el valor absoluto de un número.", - "MATH_SINGLE_TOOLTIP_NEG": "Devuelve la negación de un número.", - "MATH_SINGLE_TOOLTIP_LN": "Devuelve el logaritmo natural de un número.", - "MATH_SINGLE_TOOLTIP_LOG10": "Devuelve el logaritmo base 10 de un número.", - "MATH_SINGLE_TOOLTIP_EXP": "Devuelve e a la potencia de un número.", - "MATH_SINGLE_TOOLTIP_POW10": "Devuelve 10 a la potencia de un número.", - "MATH_TRIG_HELPURL": "https://es.wikipedia.org/wiki/Función_trigonométrica", - "MATH_TRIG_TOOLTIP_SIN": "Devuelve el seno de un grado (no radián).", - "MATH_TRIG_TOOLTIP_COS": "Devuelve el coseno de un grado (no radián).", - "MATH_TRIG_TOOLTIP_TAN": "Devuelve la tangente de un grado (no radián).", - "MATH_TRIG_TOOLTIP_ASIN": "Devuelve el arcoseno de un número.", - "MATH_TRIG_TOOLTIP_ACOS": "Devuelve el arcocoseno de un número.", - "MATH_TRIG_TOOLTIP_ATAN": "Devuelve el arcotangente de un número.", - "MATH_CONSTANT_HELPURL": "https://es.wikipedia.org/wiki/Anexo:Constantes_matemáticas", - "MATH_CONSTANT_TOOLTIP": "Devuelve una de las constantes comunes: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinito).", - "MATH_IS_EVEN": "es par", - "MATH_IS_ODD": "es impar", - "MATH_IS_PRIME": "es primo", - "MATH_IS_WHOLE": "es entero", - "MATH_IS_POSITIVE": "es positivo", - "MATH_IS_NEGATIVE": "es negativo", - "MATH_IS_DIVISIBLE_BY": "es divisible por", - "MATH_IS_TOOLTIP": "Comprueba si un número es par, impar, primo, entero, positivo, negativo, o si es divisible por un número determinado. Devuelve verdadero o falso.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "añadir %2 a %1", - "MATH_CHANGE_TOOLTIP": "Añadir un número a la variable «%1».", - "MATH_ROUND_HELPURL": "https://es.wikipedia.org/wiki/Redondeo", - "MATH_ROUND_TOOLTIP": "Redondear un número al alza o a la baja.", - "MATH_ROUND_OPERATOR_ROUND": "redondear", - "MATH_ROUND_OPERATOR_ROUNDUP": "redondear al alza", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "redondear a la baja", - "MATH_ONLIST_OPERATOR_SUM": "suma de la lista", - "MATH_ONLIST_TOOLTIP_SUM": "Devuelve la suma de todos los números en la lista.", - "MATH_ONLIST_OPERATOR_MIN": "mínimo de la lista", - "MATH_ONLIST_TOOLTIP_MIN": "Devuelve el número más pequeño en la lista.", - "MATH_ONLIST_OPERATOR_MAX": "máximo de la lista", - "MATH_ONLIST_TOOLTIP_MAX": "Devuelve el número más grande en la lista.", - "MATH_ONLIST_OPERATOR_AVERAGE": "promedio de la lista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Devuelve el promedio (media aritmética) de los valores numéricos en la lista.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana de la lista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Devuelve la mediana en la lista.", - "MATH_ONLIST_OPERATOR_MODE": "modas de la lista", - "MATH_ONLIST_TOOLTIP_MODE": "Devuelve una lista de los elementos más comunes en la lista.", - "MATH_ONLIST_OPERATOR_STD_DEV": "desviación estándar de la lista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Devuelve la desviación estándar de la lista.", - "MATH_ONLIST_OPERATOR_RANDOM": "elemento aleatorio de la lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Devuelve un elemento aleatorio de la lista.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "resto de %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Devuelve el resto al dividir los dos números.", - "MATH_CONSTRAIN_TITLE": "limitar %1 entre %2 y %3", - "MATH_CONSTRAIN_TOOLTIP": "Limitar un número entre los límites especificados (inclusive).", - "MATH_RANDOM_INT_HELPURL": "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios", - "MATH_RANDOM_INT_TITLE": "entero aleatorio de %1 a %2", - "MATH_RANDOM_INT_TOOLTIP": "Devuelve un entero aleatorio entre los dos límites especificados, inclusive.", - "MATH_RANDOM_FLOAT_HELPURL": "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fracción aleatoria", - "MATH_RANDOM_FLOAT_TOOLTIP": "Devuelve una fracción aleatoria entre 0,0 (ambos inclusive) y 1.0 (exclusivo).", - "MATH_ATAN2_HELPURL": "https://es.wikipedia.org/wiki/Arcotangente_de_dos_par%C3%A1metros", - "MATH_ATAN2_TITLE": "Arcotangente de X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Regresar el arcotangente del punto (X,Y) en grados de -180 a 180.", - "TEXT_TEXT_HELPURL": "https://es.wikipedia.org/wiki/Cadena_de_caracteres", - "TEXT_TEXT_TOOLTIP": "Una letra, palabra o línea de texto.", - "TEXT_JOIN_TITLE_CREATEWITH": "crear texto con", - "TEXT_JOIN_TOOLTIP": "Crear un fragmento de texto al unir cualquier número de elementos.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", - "TEXT_CREATE_JOIN_TOOLTIP": "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque de texto.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Agregar un elemento al texto.", - "TEXT_APPEND_TITLE": "a %1 añade el texto %2", - "TEXT_APPEND_TOOLTIP": "Añadir texto a la variable '%1'.", - "TEXT_LENGTH_TITLE": "longitud de %1", - "TEXT_LENGTH_TOOLTIP": "Devuelve el número de letras (espacios incluidos) del texto proporcionado.", - "TEXT_ISEMPTY_TITLE": "%1 está vacío", - "TEXT_ISEMPTY_TOOLTIP": "Devuelve verdadero si el texto proporcionado está vacío.", - "TEXT_INDEXOF_TOOLTIP": "Devuelve el índice de la primera/última aparición del primer texto en el segundo texto. Devuelve %1 si el texto no se encuentra.", - "TEXT_INDEXOF_TITLE": "en el texto %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "encontrar la primera aparición del texto", - "TEXT_INDEXOF_OPERATOR_LAST": "encontrar la última aparición del texto", - "TEXT_CHARAT_TITLE": "en el texto %1 %2", - "TEXT_CHARAT_FROM_START": "obtener la letra #", - "TEXT_CHARAT_FROM_END": "obtener la letra # del final", - "TEXT_CHARAT_FIRST": "obtener la primera letra", - "TEXT_CHARAT_LAST": "obtener la última letra", - "TEXT_CHARAT_RANDOM": "obtener letra aleatoria", - "TEXT_CHARAT_TOOLTIP": "Devuelve la letra en la posición especificada.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Devuelve una porción determinada del texto.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "en el texto", - "TEXT_GET_SUBSTRING_START_FROM_START": "obtener subcadena desde la letra #", - "TEXT_GET_SUBSTRING_START_FROM_END": "obtener subcadena desde la letra # del final", - "TEXT_GET_SUBSTRING_START_FIRST": "obtener subcadena desde la primera letra", - "TEXT_GET_SUBSTRING_END_FROM_START": "hasta la letra #", - "TEXT_GET_SUBSTRING_END_FROM_END": "hasta la letra # del final", - "TEXT_GET_SUBSTRING_END_LAST": "hasta la última letra", - "TEXT_CHANGECASE_TOOLTIP": "Devuelve una copia del texto en un tamaño diferente.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "a MAYÚSCULAS", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "a minúsculas", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "a Mayúsculas Cada Palabra", - "TEXT_TRIM_TOOLTIP": "Devuelve una copia del texto sin los espacios de uno o ambos extremos.", - "TEXT_TRIM_OPERATOR_BOTH": "quitar espacios de ambos lados de", - "TEXT_TRIM_OPERATOR_LEFT": "quitar espacios iniciales de", - "TEXT_TRIM_OPERATOR_RIGHT": "quitar espacios finales de", - "TEXT_PRINT_TITLE": "imprimir %1", - "TEXT_PRINT_TOOLTIP": "Imprimir el texto, número u otro valor especificado.", - "TEXT_PROMPT_TYPE_TEXT": "solicitar texto con el mensaje", - "TEXT_PROMPT_TYPE_NUMBER": "solicitar número con el mensaje", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Solicitar al usuario un número.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Solicitar al usuario un texto.", - "TEXT_COUNT_MESSAGE0": "contar %1 en %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Cuantas veces aparece un texto dentro de otro texto.", - "TEXT_REPLACE_MESSAGE0": "reemplazar %1 con %2 en %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Reemplazar todas las veces que un texto dentro de otro texto.", - "TEXT_REVERSE_MESSAGE0": "invertir %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Invierte el orden de los caracteres en el texto.", - "LISTS_CREATE_EMPTY_TITLE": "crear lista vacía", - "LISTS_CREATE_EMPTY_TOOLTIP": "Devuelve una lista, de longitud 0, sin ningún dato", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Crear una lista con cualquier número de elementos.", - "LISTS_CREATE_WITH_INPUT_WITH": "crear lista con", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Agregar, eliminar o reorganizar las secciones para reconfigurar este bloque de lista.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Agregar un elemento a la lista.", - "LISTS_REPEAT_TOOLTIP": "Crea una lista que consta de un valor dado repetido el número de veces especificado.", - "LISTS_REPEAT_TITLE": "crear lista con el elemento %1 repetido %2 veces", - "LISTS_LENGTH_TITLE": "longitud de %1", - "LISTS_LENGTH_TOOLTIP": "Devuelve la longitud de una lista.", - "LISTS_ISEMPTY_TITLE": "%1 está vacía", - "LISTS_ISEMPTY_TOOLTIP": "Devuelve verdadero si la lista está vacía.", - "LISTS_INLIST": "en la lista", - "LISTS_INDEX_OF_FIRST": "encontrar la primera aparición del elemento", - "LISTS_INDEX_OF_LAST": "encontrar la última aparición del elemento", - "LISTS_INDEX_OF_TOOLTIP": "Devuelve el índice de la primera/última aparición del elemento en la lista. Devuelve %1 si el elemento no se encuentra.", - "LISTS_GET_INDEX_GET": "obtener", - "LISTS_GET_INDEX_GET_REMOVE": "obtener y eliminar", - "LISTS_GET_INDEX_REMOVE": "eliminar", - "LISTS_GET_INDEX_FROM_END": "# del final", - "LISTS_GET_INDEX_FIRST": "primero", - "LISTS_GET_INDEX_LAST": "último", - "LISTS_GET_INDEX_RANDOM": "aleatorio", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 es el primer elemento.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 es el último elemento.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Devuelve el elemento en la posición especificada en una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Devuelve el primer elemento de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Devuelve el último elemento de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Devuelve un elemento aleatorio en una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Elimina y devuelve el elemento en la posición especificada en una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Elimina y devuelve el primer elemento de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Elimina y devuelve el último elemento de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Elimina y devuelve un elemento aleatorio en una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Elimina el elemento en la posición especificada en una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Elimina el primer elemento de una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Elimina el último elemento de una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Elimina un elemento aleatorio en una lista.", - "LISTS_SET_INDEX_SET": "establecer", - "LISTS_SET_INDEX_INSERT": "insertar en", - "LISTS_SET_INDEX_INPUT_TO": "como", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Establece el elemento en la posición especificada en una lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Establece el primer elemento de una lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Establece el último elemento de una lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Establece un elemento aleatorio en una lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserta el elemento en la posición especificada en una lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserta el elemento al inicio de una lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Añade el elemento al final de una lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserta el elemento aleatoriamente en una lista.", - "LISTS_GET_SUBLIST_START_FROM_START": "obtener sublista desde #", - "LISTS_GET_SUBLIST_START_FROM_END": "obtener sublista desde # del final", - "LISTS_GET_SUBLIST_START_FIRST": "obtener sublista desde el primero", - "LISTS_GET_SUBLIST_END_FROM_START": "hasta #", - "LISTS_GET_SUBLIST_END_FROM_END": "hasta # del final", - "LISTS_GET_SUBLIST_END_LAST": "hasta el último", - "LISTS_GET_SUBLIST_TOOLTIP": "Crea una copia de la parte especificada de una lista.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "orden %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Ordenar una copia de una lista.", - "LISTS_SORT_ORDER_ASCENDING": "ascendente", - "LISTS_SORT_ORDER_DESCENDING": "descendente", - "LISTS_SORT_TYPE_NUMERIC": "numérico", - "LISTS_SORT_TYPE_TEXT": "alfabético", - "LISTS_SORT_TYPE_IGNORECASE": "alfabético, ignorar mayúscula/minúscula", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "hacer lista a partir de texto", - "LISTS_SPLIT_TEXT_FROM_LIST": "hacer texto a partir de lista", - "LISTS_SPLIT_WITH_DELIMITER": "con delimitador", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividir el texto en una lista de textos, separando en cada delimitador.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Unir una lista de textos en un solo texto, separado por un delimitador.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "invertir %1", - "LISTS_REVERSE_TOOLTIP": "Invertir una copia de una lista.", - "VARIABLES_GET_TOOLTIP": "Devuelve el valor de esta variable.", - "VARIABLES_GET_CREATE_SET": "Crear 'establecer %1'", - "VARIABLES_SET": "establecer %1 a %2", - "VARIABLES_SET_TOOLTIP": "Establece esta variable para que sea igual a la entrada.", - "VARIABLES_SET_CREATE_GET": "Crear 'obtener %1'", - "PROCEDURES_DEFNORETURN_TITLE": "para", - "PROCEDURES_DEFNORETURN_PROCEDURE": "hacer algo", - "PROCEDURES_BEFORE_PARAMS": "con:", - "PROCEDURES_CALL_BEFORE_PARAMS": "con:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea una función sin salida.", - "PROCEDURES_DEFNORETURN_COMMENT": "Describe esta función...", - "PROCEDURES_DEFRETURN_RETURN": "devuelve", - "PROCEDURES_DEFRETURN_TOOLTIP": "Crea una función con una salida.", - "PROCEDURES_ALLOW_STATEMENTS": "permitir declaraciones", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Advertencia: Esta función tiene parámetros duplicados.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://es.wikipedia.org/wiki/Subrutina", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Ejecuta la función definida por el usuario '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://es.wikipedia.org/wiki/Subrutina", - "PROCEDURES_CALLRETURN_TOOLTIP": "Ejecuta la función definida por el usuario '%1' y usa su salida.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Añadir, eliminar o reordenar entradas para esta función.", - "PROCEDURES_MUTATORARG_TITLE": "nombre de entrada:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Añadir una entrada a la función.", - "PROCEDURES_HIGHLIGHT_DEF": "Destacar definición de la función", - "PROCEDURES_CREATE_DO": "Crear '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Si un valor es verdadero, entonces devuelve un segundo valor.", - "PROCEDURES_IFRETURN_WARNING": "Advertencia: Este bloque solo puede ser utilizado dentro de la definición de una función.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Di algo…", - "WORKSPACE_ARIA_LABEL": "Espacio de trabajo de Blockly", - "COLLAPSED_WARNINGS_WARNING": "Bloques colapsados contienen advertencias.", - "DIALOG_OK": "Aceptar", - "DIALOG_CANCEL": "Cancelar" -} +{ + "@metadata": { + "authors": [ + "Ajeje Brazorf", + "Codynguyen1116", + "Fitoschido", + "Harvest", + "Indiralena", + "Julián L", + "Ktranz", + "Luisangelrg", + "Macofe", + "MarcoAurelio", + "Martineduardo", + "Rubentl134", + "Ryo567", + "VegaDark", + "WeSiToS" + ] + }, + "VARIABLES_DEFAULT_NAME": "elemento", + "UNNAMED_KEY": "Sin nombre", + "TODAY": "Hoy", + "DUPLICATE_BLOCK": "Duplicar", + "ADD_COMMENT": "Añadir comentario", + "REMOVE_COMMENT": "Eliminar comentario", + "DUPLICATE_COMMENT": "Duplicar comentario", + "EXTERNAL_INPUTS": "Entradas externas", + "INLINE_INPUTS": "Entradas en línea", + "DELETE_BLOCK": "Eliminar bloque", + "DELETE_X_BLOCKS": "Eliminar %1 bloques", + "DELETE_ALL_BLOCKS": "¿Eliminar todos los %1 bloques?", + "CLEAN_UP": "Limpiar los bloques", + "COLLAPSE_BLOCK": "Contraer bloque", + "COLLAPSE_ALL": "Contraer bloques", + "EXPAND_BLOCK": "Expandir bloque", + "EXPAND_ALL": "Expandir bloques", + "DISABLE_BLOCK": "Desactivar bloque", + "ENABLE_BLOCK": "Activar bloque", + "HELP": "Ayuda", + "UNDO": "Deshacer", + "REDO": "Rehacer", + "CHANGE_VALUE_TITLE": "Cambiar el valor:", + "RENAME_VARIABLE": "Cambiar nombre de variable…", + "RENAME_VARIABLE_TITLE": "Renombrar todas las variables «%1» a:", + "NEW_VARIABLE": "Crear variable…", + "NEW_STRING_VARIABLE": "Crear una cadena variable...", + "NEW_NUMBER_VARIABLE": "Crear una variable de número...", + "NEW_COLOUR_VARIABLE": "Crear una variable de color...", + "NEW_VARIABLE_TYPE_TITLE": "Nuevo tipo de variable:", + "NEW_VARIABLE_TITLE": "Nombre de variable nueva:", + "VARIABLE_ALREADY_EXISTS": "Ya existe una variable llamada '%1'.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Ya existe una variable nombrada '%1' para otra variable del tipo: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "¿Borrar %1 usos de la variable '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "No se puede eliminar la variable '%1' porque es parte de la definición de la función '%2'", + "DELETE_VARIABLE": "Borrar la variable \"%1\"", + "COLOUR_PICKER_HELPURL": "https://es.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Elige un color de la paleta.", + "COLOUR_RANDOM_TITLE": "color aleatorio", + "COLOUR_RANDOM_TOOLTIP": "Elige un color al azar.", + "COLOUR_RGB_TITLE": "colorear con", + "COLOUR_RGB_RED": "rojo", + "COLOUR_RGB_GREEN": "verde", + "COLOUR_RGB_BLUE": "azul", + "COLOUR_RGB_TOOLTIP": "Crea un color con cantidades específicas de rojo, verde y azul. Todos los valores deben encontrarse entre 0 y 100.", + "COLOUR_BLEND_TITLE": "combinar", + "COLOUR_BLEND_COLOUR1": "color 1", + "COLOUR_BLEND_COLOUR2": "color 2", + "COLOUR_BLEND_RATIO": "proporción", + "COLOUR_BLEND_TOOLTIP": "Combina dos colores con una proporción determinada (0,0-1,0).", + "CONTROLS_REPEAT_HELPURL": "https://es.wikipedia.org/wiki/Bucle_for", + "CONTROLS_REPEAT_TITLE": "repetir %1 veces", + "CONTROLS_REPEAT_INPUT_DO": "hacer", + "CONTROLS_REPEAT_TOOLTIP": "Hacer algunas declaraciones varias veces.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir mientras", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir hasta", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Mientras un valor sea verdadero, entonces hacer algunas declaraciones.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Mientras un valor sea falso, entonces hacer algunas declaraciones.", + "CONTROLS_FOR_TOOLTIP": "Hacer que la variable \"%1\" tome los valores desde el número de inicio hasta el número final, contando con el intervalo especificado, y hacer los bloques especificados.", + "CONTROLS_FOR_TITLE": "contar con %1 desde %2 hasta %3 de a %4", + "CONTROLS_FOREACH_HELPURL": "https://es.wikipedia.org/wiki/Foreach", + "CONTROLS_FOREACH_TITLE": "para cada elemento %1 en la lista %2", + "CONTROLS_FOREACH_TOOLTIP": "Para cada elemento en una lista, establecer la variable '%1' al elemento y luego hacer algunas declaraciones.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "romper el bucle", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuar con la siguiente iteración del bucle", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Romper el bucle que lo contiene.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Saltar el resto de este bucle, y continuar con la siguiente iteración.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Atención: este bloque puede usarse solamente dentro de un bucle.", + "CONTROLS_IF_TOOLTIP_1": "Si un valor es verdadero, entonces hacer algunas declaraciones.", + "CONTROLS_IF_TOOLTIP_2": "Si un valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, hacer el segundo bloque de declaraciones.", + "CONTROLS_IF_TOOLTIP_3": "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones.", + "CONTROLS_IF_TOOLTIP_4": "Si el primer valor es verdadero, entonces hacer el primer bloque de declaraciones. De lo contrario, si el segundo valor es verdadero, hacer el segundo bloque de declaraciones. Si ninguno de los valores son verdaderos, hacer el último bloque de declaraciones.", + "CONTROLS_IF_MSG_IF": "si", + "CONTROLS_IF_MSG_ELSEIF": "sino si", + "CONTROLS_IF_MSG_ELSE": "sino", + "CONTROLS_IF_IF_TOOLTIP": "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Agregar una condición a este bloque.", + "CONTROLS_IF_ELSE_TOOLTIP": "Agregar una condición general final a este bloque.", + "LOGIC_COMPARE_HELPURL": "https://es.wikipedia.org/wiki/Desigualdad_matemática", + "LOGIC_COMPARE_TOOLTIP_EQ": "Devuelve verdadero si ambas entradas son iguales.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Devuelve verdadero si ambas entradas son distintas.", + "LOGIC_COMPARE_TOOLTIP_LT": "Devuelve verdadero si la primera entrada es menor que la segunda entrada.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Devuelve verdadero si la primera entrada es menor que o igual a la segunda entrada.", + "LOGIC_COMPARE_TOOLTIP_GT": "Devuelve verdadero si la primera entrada es mayor que la segunda entrada.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Devuelve verdadero si la primera entrada es mayor o igual a la segunda entrada.", + "LOGIC_OPERATION_TOOLTIP_AND": "Devuelve verdadero si ambas entradas son verdaderas.", + "LOGIC_OPERATION_AND": "y", + "LOGIC_OPERATION_TOOLTIP_OR": "Devuelve verdadero si al menos una de las entradas es verdadera.", + "LOGIC_OPERATION_OR": "o", + "LOGIC_NEGATE_TITLE": "no %1", + "LOGIC_NEGATE_TOOLTIP": "Devuelve verdadero si la entrada es falsa. Devuelve falso si la entrada es verdadera.", + "LOGIC_BOOLEAN_TRUE": "verdadero", + "LOGIC_BOOLEAN_FALSE": "falso", + "LOGIC_BOOLEAN_TOOLTIP": "Devuelve verdadero o falso.", + "LOGIC_NULL": "nulo", + "LOGIC_NULL_TOOLTIP": "Devuelve nulo.", + "LOGIC_TERNARY_CONDITION": "prueba", + "LOGIC_TERNARY_IF_TRUE": "si es verdadero", + "LOGIC_TERNARY_IF_FALSE": "si es falso", + "LOGIC_TERNARY_TOOLTIP": "Comprueba la condición en \"prueba\". Si la condición es verdadera, devuelve el valor \"si es verdadero\"; de lo contrario, devuelve el valor \"si es falso\".", + "MATH_NUMBER_HELPURL": "https://es.wikipedia.org/wiki/Número", + "MATH_NUMBER_TOOLTIP": "Un número.", + "MATH_ARITHMETIC_HELPURL": "https://es.wikipedia.org/wiki/Aritmética", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Devuelve la suma de ambos números.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Devuelve la diferencia de ambos números.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Devuelve el producto de ambos números.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Devuelve el cociente de ambos números.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Devuelve el primer número elevado a la potencia del segundo.", + "MATH_SINGLE_HELPURL": "https://es.wikipedia.org/wiki/Ra%C3%ADz_cuadrada", + "MATH_SINGLE_OP_ROOT": "raíz cuadrada", + "MATH_SINGLE_TOOLTIP_ROOT": "Devuelve la raíz cuadrada de un número.", + "MATH_SINGLE_OP_ABSOLUTE": "absoluto", + "MATH_SINGLE_TOOLTIP_ABS": "Devuelve el valor absoluto de un número.", + "MATH_SINGLE_TOOLTIP_NEG": "Devuelve la negación de un número.", + "MATH_SINGLE_TOOLTIP_LN": "Devuelve el logaritmo natural de un número.", + "MATH_SINGLE_TOOLTIP_LOG10": "Devuelve el logaritmo base 10 de un número.", + "MATH_SINGLE_TOOLTIP_EXP": "Devuelve e a la potencia de un número.", + "MATH_SINGLE_TOOLTIP_POW10": "Devuelve 10 a la potencia de un número.", + "MATH_TRIG_HELPURL": "https://es.wikipedia.org/wiki/Función_trigonométrica", + "MATH_TRIG_TOOLTIP_SIN": "Devuelve el seno de un grado (no radián).", + "MATH_TRIG_TOOLTIP_COS": "Devuelve el coseno de un grado (no radián).", + "MATH_TRIG_TOOLTIP_TAN": "Devuelve la tangente de un grado (no radián).", + "MATH_TRIG_TOOLTIP_ASIN": "Devuelve el arcoseno de un número.", + "MATH_TRIG_TOOLTIP_ACOS": "Devuelve el arcocoseno de un número.", + "MATH_TRIG_TOOLTIP_ATAN": "Devuelve el arcotangente de un número.", + "MATH_CONSTANT_HELPURL": "https://es.wikipedia.org/wiki/Anexo:Constantes_matemáticas", + "MATH_CONSTANT_TOOLTIP": "Devuelve una de las constantes comunes: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinito).", + "MATH_IS_EVEN": "es par", + "MATH_IS_ODD": "es impar", + "MATH_IS_PRIME": "es primo", + "MATH_IS_WHOLE": "es entero", + "MATH_IS_POSITIVE": "es positivo", + "MATH_IS_NEGATIVE": "es negativo", + "MATH_IS_DIVISIBLE_BY": "es divisible por", + "MATH_IS_TOOLTIP": "Comprueba si un número es par, impar, primo, entero, positivo, negativo, o si es divisible por un número determinado. Devuelve verdadero o falso.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "añadir %2 a %1", + "MATH_CHANGE_TOOLTIP": "Añadir un número a la variable «%1».", + "MATH_ROUND_HELPURL": "https://es.wikipedia.org/wiki/Redondeo", + "MATH_ROUND_TOOLTIP": "Redondear un número al alza o a la baja.", + "MATH_ROUND_OPERATOR_ROUND": "redondear", + "MATH_ROUND_OPERATOR_ROUNDUP": "redondear al alza", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "redondear a la baja", + "MATH_ONLIST_OPERATOR_SUM": "suma de la lista", + "MATH_ONLIST_TOOLTIP_SUM": "Devuelve la suma de todos los números en la lista.", + "MATH_ONLIST_OPERATOR_MIN": "mínimo de la lista", + "MATH_ONLIST_TOOLTIP_MIN": "Devuelve el número más pequeño en la lista.", + "MATH_ONLIST_OPERATOR_MAX": "máximo de la lista", + "MATH_ONLIST_TOOLTIP_MAX": "Devuelve el número más grande en la lista.", + "MATH_ONLIST_OPERATOR_AVERAGE": "promedio de la lista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Devuelve el promedio (media aritmética) de los valores numéricos en la lista.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana de la lista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Devuelve la mediana en la lista.", + "MATH_ONLIST_OPERATOR_MODE": "modas de la lista", + "MATH_ONLIST_TOOLTIP_MODE": "Devuelve una lista de los elementos más comunes en la lista.", + "MATH_ONLIST_OPERATOR_STD_DEV": "desviación estándar de la lista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Devuelve la desviación estándar de la lista.", + "MATH_ONLIST_OPERATOR_RANDOM": "elemento aleatorio de la lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Devuelve un elemento aleatorio de la lista.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "resto de %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Devuelve el resto al dividir los dos números.", + "MATH_CONSTRAIN_TITLE": "limitar %1 entre %2 y %3", + "MATH_CONSTRAIN_TOOLTIP": "Limitar un número entre los límites especificados (inclusive).", + "MATH_RANDOM_INT_HELPURL": "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios", + "MATH_RANDOM_INT_TITLE": "entero aleatorio de %1 a %2", + "MATH_RANDOM_INT_TOOLTIP": "Devuelve un entero aleatorio entre los dos límites especificados, inclusive.", + "MATH_RANDOM_FLOAT_HELPURL": "https://es.wikipedia.org/wiki/Generador_de_números_aleatorios", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fracción aleatoria", + "MATH_RANDOM_FLOAT_TOOLTIP": "Devuelve una fracción aleatoria entre 0,0 (ambos inclusive) y 1.0 (exclusivo).", + "MATH_ATAN2_HELPURL": "https://es.wikipedia.org/wiki/Arcotangente_de_dos_par%C3%A1metros", + "MATH_ATAN2_TITLE": "Arcotangente de X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Regresar el arcotangente del punto (X,Y) en grados de -180 a 180.", + "TEXT_TEXT_HELPURL": "https://es.wikipedia.org/wiki/Cadena_de_caracteres", + "TEXT_TEXT_TOOLTIP": "Una letra, palabra o línea de texto.", + "TEXT_JOIN_TITLE_CREATEWITH": "crear texto con", + "TEXT_JOIN_TOOLTIP": "Crear un fragmento de texto al unir cualquier número de elementos.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", + "TEXT_CREATE_JOIN_TOOLTIP": "Agregar, eliminar o reordenar las secciones para reconfigurar este bloque de texto.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Agregar un elemento al texto.", + "TEXT_APPEND_TITLE": "a %1 añade el texto %2", + "TEXT_APPEND_TOOLTIP": "Añadir texto a la variable '%1'.", + "TEXT_LENGTH_TITLE": "longitud de %1", + "TEXT_LENGTH_TOOLTIP": "Devuelve el número de letras (espacios incluidos) del texto proporcionado.", + "TEXT_ISEMPTY_TITLE": "%1 está vacío", + "TEXT_ISEMPTY_TOOLTIP": "Devuelve verdadero si el texto proporcionado está vacío.", + "TEXT_INDEXOF_TOOLTIP": "Devuelve el índice de la primera/última aparición del primer texto en el segundo texto. Devuelve %1 si el texto no se encuentra.", + "TEXT_INDEXOF_TITLE": "en el texto %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "encontrar la primera aparición del texto", + "TEXT_INDEXOF_OPERATOR_LAST": "encontrar la última aparición del texto", + "TEXT_CHARAT_TITLE": "en el texto %1 %2", + "TEXT_CHARAT_FROM_START": "obtener la letra #", + "TEXT_CHARAT_FROM_END": "obtener la letra # del final", + "TEXT_CHARAT_FIRST": "obtener la primera letra", + "TEXT_CHARAT_LAST": "obtener la última letra", + "TEXT_CHARAT_RANDOM": "obtener letra aleatoria", + "TEXT_CHARAT_TOOLTIP": "Devuelve la letra en la posición especificada.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Devuelve una porción determinada del texto.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "en el texto", + "TEXT_GET_SUBSTRING_START_FROM_START": "obtener subcadena desde la letra #", + "TEXT_GET_SUBSTRING_START_FROM_END": "obtener subcadena desde la letra # del final", + "TEXT_GET_SUBSTRING_START_FIRST": "obtener subcadena desde la primera letra", + "TEXT_GET_SUBSTRING_END_FROM_START": "hasta la letra #", + "TEXT_GET_SUBSTRING_END_FROM_END": "hasta la letra # del final", + "TEXT_GET_SUBSTRING_END_LAST": "hasta la última letra", + "TEXT_CHANGECASE_TOOLTIP": "Devuelve una copia del texto en un tamaño diferente.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "a MAYÚSCULAS", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "a minúsculas", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "a Mayúsculas Cada Palabra", + "TEXT_TRIM_TOOLTIP": "Devuelve una copia del texto sin los espacios de uno o ambos extremos.", + "TEXT_TRIM_OPERATOR_BOTH": "quitar espacios de ambos lados de", + "TEXT_TRIM_OPERATOR_LEFT": "quitar espacios iniciales de", + "TEXT_TRIM_OPERATOR_RIGHT": "quitar espacios finales de", + "TEXT_PRINT_TITLE": "imprimir %1", + "TEXT_PRINT_TOOLTIP": "Imprimir el texto, número u otro valor especificado.", + "TEXT_PROMPT_TYPE_TEXT": "solicitar texto con el mensaje", + "TEXT_PROMPT_TYPE_NUMBER": "solicitar número con el mensaje", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Solicitar al usuario un número.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Solicitar al usuario un texto.", + "TEXT_COUNT_MESSAGE0": "contar %1 en %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Cuantas veces aparece un texto dentro de otro texto.", + "TEXT_REPLACE_MESSAGE0": "reemplazar %1 con %2 en %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Reemplazar todas las veces que un texto dentro de otro texto.", + "TEXT_REVERSE_MESSAGE0": "invertir %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Invierte el orden de los caracteres en el texto.", + "LISTS_CREATE_EMPTY_TITLE": "crear lista vacía", + "LISTS_CREATE_EMPTY_TOOLTIP": "Devuelve una lista, de longitud 0, sin ningún dato", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Crear una lista con cualquier número de elementos.", + "LISTS_CREATE_WITH_INPUT_WITH": "crear lista con", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Agregar, eliminar o reorganizar las secciones para reconfigurar este bloque de lista.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Agregar un elemento a la lista.", + "LISTS_REPEAT_TOOLTIP": "Crea una lista que consta de un valor dado repetido el número de veces especificado.", + "LISTS_REPEAT_TITLE": "crear lista con el elemento %1 repetido %2 veces", + "LISTS_LENGTH_TITLE": "longitud de %1", + "LISTS_LENGTH_TOOLTIP": "Devuelve la longitud de una lista.", + "LISTS_ISEMPTY_TITLE": "%1 está vacía", + "LISTS_ISEMPTY_TOOLTIP": "Devuelve verdadero si la lista está vacía.", + "LISTS_INLIST": "en la lista", + "LISTS_INDEX_OF_FIRST": "encontrar la primera aparición del elemento", + "LISTS_INDEX_OF_LAST": "encontrar la última aparición del elemento", + "LISTS_INDEX_OF_TOOLTIP": "Devuelve el índice de la primera/última aparición del elemento en la lista. Devuelve %1 si el elemento no se encuentra.", + "LISTS_GET_INDEX_GET": "obtener", + "LISTS_GET_INDEX_GET_REMOVE": "obtener y eliminar", + "LISTS_GET_INDEX_REMOVE": "eliminar", + "LISTS_GET_INDEX_FROM_END": "# del final", + "LISTS_GET_INDEX_FIRST": "primero", + "LISTS_GET_INDEX_LAST": "último", + "LISTS_GET_INDEX_RANDOM": "aleatorio", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 es el primer elemento.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 es el último elemento.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Devuelve el elemento en la posición especificada en una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Devuelve el primer elemento de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Devuelve el último elemento de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Devuelve un elemento aleatorio en una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Elimina y devuelve el elemento en la posición especificada en una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Elimina y devuelve el primer elemento de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Elimina y devuelve el último elemento de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Elimina y devuelve un elemento aleatorio en una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Elimina el elemento en la posición especificada en una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Elimina el primer elemento de una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Elimina el último elemento de una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Elimina un elemento aleatorio en una lista.", + "LISTS_SET_INDEX_SET": "establecer", + "LISTS_SET_INDEX_INSERT": "insertar en", + "LISTS_SET_INDEX_INPUT_TO": "como", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Establece el elemento en la posición especificada en una lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Establece el primer elemento de una lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Establece el último elemento de una lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Establece un elemento aleatorio en una lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserta el elemento en la posición especificada en una lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserta el elemento al inicio de una lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Añade el elemento al final de una lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserta el elemento aleatoriamente en una lista.", + "LISTS_GET_SUBLIST_START_FROM_START": "obtener sublista desde #", + "LISTS_GET_SUBLIST_START_FROM_END": "obtener sublista desde # del final", + "LISTS_GET_SUBLIST_START_FIRST": "obtener sublista desde el primero", + "LISTS_GET_SUBLIST_END_FROM_START": "hasta #", + "LISTS_GET_SUBLIST_END_FROM_END": "hasta # del final", + "LISTS_GET_SUBLIST_END_LAST": "hasta el último", + "LISTS_GET_SUBLIST_TOOLTIP": "Crea una copia de la parte especificada de una lista.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "orden %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ordenar una copia de una lista.", + "LISTS_SORT_ORDER_ASCENDING": "ascendente", + "LISTS_SORT_ORDER_DESCENDING": "descendente", + "LISTS_SORT_TYPE_NUMERIC": "numérico", + "LISTS_SORT_TYPE_TEXT": "alfabético", + "LISTS_SORT_TYPE_IGNORECASE": "alfabético, ignorar mayúscula/minúscula", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "hacer lista a partir de texto", + "LISTS_SPLIT_TEXT_FROM_LIST": "hacer texto a partir de lista", + "LISTS_SPLIT_WITH_DELIMITER": "con delimitador", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividir el texto en una lista de textos, separando en cada delimitador.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Unir una lista de textos en un solo texto, separado por un delimitador.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "invertir %1", + "LISTS_REVERSE_TOOLTIP": "Invertir una copia de una lista.", + "VARIABLES_GET_TOOLTIP": "Devuelve el valor de esta variable.", + "VARIABLES_GET_CREATE_SET": "Crear 'establecer %1'", + "VARIABLES_SET": "establecer %1 a %2", + "VARIABLES_SET_TOOLTIP": "Establece esta variable para que sea igual a la entrada.", + "VARIABLES_SET_CREATE_GET": "Crear 'obtener %1'", + "PROCEDURES_DEFNORETURN_TITLE": "para", + "PROCEDURES_DEFNORETURN_PROCEDURE": "hacer algo", + "PROCEDURES_BEFORE_PARAMS": "con:", + "PROCEDURES_CALL_BEFORE_PARAMS": "con:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea una función sin salida.", + "PROCEDURES_DEFNORETURN_COMMENT": "Describe esta función...", + "PROCEDURES_DEFRETURN_RETURN": "devuelve", + "PROCEDURES_DEFRETURN_TOOLTIP": "Crea una función con una salida.", + "PROCEDURES_ALLOW_STATEMENTS": "permitir declaraciones", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Advertencia: Esta función tiene parámetros duplicados.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://es.wikipedia.org/wiki/Subrutina", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Ejecuta la función definida por el usuario '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://es.wikipedia.org/wiki/Subrutina", + "PROCEDURES_CALLRETURN_TOOLTIP": "Ejecuta la función definida por el usuario '%1' y usa su salida.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Añadir, eliminar o reordenar entradas para esta función.", + "PROCEDURES_MUTATORARG_TITLE": "nombre de entrada:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Añadir una entrada a la función.", + "PROCEDURES_HIGHLIGHT_DEF": "Destacar definición de la función", + "PROCEDURES_CREATE_DO": "Crear '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Si un valor es verdadero, entonces devuelve un segundo valor.", + "PROCEDURES_IFRETURN_WARNING": "Advertencia: Este bloque solo puede ser utilizado dentro de la definición de una función.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Di algo…", + "WORKSPACE_ARIA_LABEL": "Espacio de trabajo de Blockly", + "COLLAPSED_WARNINGS_WARNING": "Bloques colapsados contienen advertencias.", + "DIALOG_OK": "Aceptar", + "DIALOG_CANCEL": "Cancelar", + + "VARIABLES_CALL_TOOLTIP": "Llama un método de la variable actual.", + "VARIABLES_CALL_OUT_TOOLTIP": "Llama un método de la variable actual con retorno.", + "CALL_TEXT": "llamar", + "RETURN_TEXT": "retornar", + "PROCEDURES_SETUP_TOOLTIP": "Bloque que contine los bloques de inicialización del programa.", + "PROCEDURES_SETUP_SUPERVISOR_TOOLTIP": "Bloque que contine los bloques de inicialización del supervisório.", + "PROCEDURES_RUN_TOOLTIP": "Bloque que contine los bloques de ejecución del programa.", + "PROCEDURES_SETUP_TITLE": "Inicialización", + "PROCEDURES_SETUP_SUPERVISOR_TITLE": "Inicialización do Supervisório", + "PROCEDURES_RUN_TITLE": "Ejecución", + "VARIABLES_METHODS_CALLS": "Llamadas de métodos", + "PROCEDURES_MAIN_FUNCS": "Funciones principales" +} diff --git a/msg/json/et.json b/msg/json/et.json index 596928b03e5..9e8e5b6c11f 100644 --- a/msg/json/et.json +++ b/msg/json/et.json @@ -1,338 +1,338 @@ -{ - "@metadata": { - "authors": [ - "Aivarannamaa", - "Hasso", - "Ilmarine", - "Masavi", - "Puik" - ] - }, - "VARIABLES_DEFAULT_NAME": "objekt", - "UNNAMED_KEY": "nimetu", - "TODAY": "Täna", - "DUPLICATE_BLOCK": "Tekita duplikaat", - "ADD_COMMENT": "Lisa kommentaar", - "REMOVE_COMMENT": "Eemalda kommentaar", - "DUPLICATE_COMMENT": "Dubleeri kommentaar", - "EXTERNAL_INPUTS": "Sisendid ploki taga", - "INLINE_INPUTS": "Sisendid ploki sees", - "DELETE_BLOCK": "Kustuta plokk", - "DELETE_X_BLOCKS": "Kustuta %1 plokki", - "DELETE_ALL_BLOCKS": "Kas kustutada kõik %1 plokki?", - "CLEAN_UP": "Korista plokid kokku", - "COLLAPSE_BLOCK": "Tõmba plokk kokku", - "COLLAPSE_ALL": "Tõmba plokid kokku", - "EXPAND_BLOCK": "Laota plokk laiali", - "EXPAND_ALL": "Laota plokid laiali", - "DISABLE_BLOCK": "Keela ploki kasutamine", - "ENABLE_BLOCK": "Luba ploki kasutamine", - "HELP": "Abi", - "UNDO": "Võta tagasi", - "REDO": "Tee uuesti", - "CHANGE_VALUE_TITLE": "Muuda väärtust:", - "RENAME_VARIABLE": "Nimeta muutuja ümber ...", - "RENAME_VARIABLE_TITLE": "Muutuja „%1“ uus nimi:", - "NEW_VARIABLE": "Uus muutuja ...", - "NEW_STRING_VARIABLE": "Loo muutuja sõnena...", - "NEW_NUMBER_VARIABLE": "Loo muutuja arvuna...", - "NEW_COLOUR_VARIABLE": "Loo muutuja värvina...", - "NEW_VARIABLE_TYPE_TITLE": "Uue muutuja tüüp:", - "NEW_VARIABLE_TITLE": "Uue muutuja nimi:", - "VARIABLE_ALREADY_EXISTS": "'%1'-nimeline muutuja on juba olemas.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Muutuja nimega '%1' juba eksisteerib teise tüübina: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Kas kustutada %1 kohas kasutatav muutuja '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Muutujat '%1' ei saa kustutada, sest see on osa funktsiooni '%2' määratlusest", - "DELETE_VARIABLE": "Kustuta muutuja '%1'", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Valitud värv paletist.", - "COLOUR_RANDOM_TITLE": "juhuslik värv", - "COLOUR_RANDOM_TOOLTIP": "Juhuslikult valitud värv.", - "COLOUR_RGB_TITLE": "segu", - "COLOUR_RGB_RED": "punasest", - "COLOUR_RGB_GREEN": "rohelisest", - "COLOUR_RGB_BLUE": "sinisest", - "COLOUR_RGB_TOOLTIP": "Tekitab värvi määratud hulgast punasest, rohelisest ja sinisest. Kõik väärtused peavad olema 0 ja 100 vahel.", - "COLOUR_BLEND_TITLE": "segu", - "COLOUR_BLEND_COLOUR1": "1. värvist", - "COLOUR_BLEND_COLOUR2": "2. värvist", - "COLOUR_BLEND_RATIO": "suhtega", - "COLOUR_BLEND_TOOLTIP": "Segab kaks värvi määratud suhtega (0.0 - 1.0) kokku.", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 korda", - "CONTROLS_REPEAT_INPUT_DO": "käivita", - "CONTROLS_REPEAT_TOOLTIP": "Plokis olevate käskude käivitamine määratud arv kordi.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "seni kuni on", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "seni kuni pole", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Plokis olevaid käske korratakse seni kui avaldis on tõene.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Plokis olevaid käske korratakse seni kui avaldis pole tõene.", - "CONTROLS_FOR_TOOLTIP": "Annab muutujale '%1' väärtused ühest numbrist teiseni, muutes seda intervalli kaupa ja käivitab igal muudatusel ploki sees oleva koodi.", - "CONTROLS_FOR_TITLE": "loendus muutujaga %1 alates %2 kuni %3, %4 kaupa", - "CONTROLS_FOREACH_TITLE": "iga elemendiga %1 loendis %2", - "CONTROLS_FOREACH_TOOLTIP": "Iga elemendiga loendis anna muutujale '%1' elemendi väärtus ja kõivita plokis olevad käsud.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "välju kordusest", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "katkesta see kordus ja liigu järgmisele", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Väljub kordusest ja liigub edasi korduse järel oleva koodi käivitamisele.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Katkestab korduses oleva koodi käivitamise ja käivitab järgmise korduse.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Hoiatus: Seda plokki saab kasutada ainult korduse sees.", - "CONTROLS_IF_TOOLTIP_1": "Kui avaldis on tõene, käivita ploki sees olevad käsud.", - "CONTROLS_IF_TOOLTIP_2": "Kui avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul käivita käsud teisest plokist.", - "CONTROLS_IF_TOOLTIP_3": "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist.", - "CONTROLS_IF_TOOLTIP_4": "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist. Kui ükski avaldistest pole tõene, käivita käsud viimasest plokist.", - "CONTROLS_IF_MSG_IF": "kui", - "CONTROLS_IF_MSG_ELSEIF": "vastasel juhul, kui", - "CONTROLS_IF_MSG_ELSE": "vastasel juhul", - "CONTROLS_IF_IF_TOOLTIP": "Selle „kui“ ploki muutmine sektsioonide lisamise, eemaldamise ja järjestamisega.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Lisab „kui“ plokile tingimuse.", - "CONTROLS_IF_ELSE_TOOLTIP": "Lisab „kui“ plokile lõpliku tingimuseta koodiploki.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Tagastab „tõene“, kui avaldiste väärtused on võrdsed.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Tagastab „tõene“, kui avaldiste väärtused pole võrdsed.", - "LOGIC_COMPARE_TOOLTIP_LT": "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem kui teise väärtus.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem või võrdne teise väärtusega.", - "LOGIC_COMPARE_TOOLTIP_GT": "Tagastab „tõene“, kui esimese avaldise väärtus on suurem kui teise väärtus.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Tagastab „tõene“, kui esimese avaldise väärtus on suurem või võrdne teise väärtusega.", - "LOGIC_OPERATION_TOOLTIP_AND": "Tagastab „tõene“, kui mõlemad avaldised on tõesed.", - "LOGIC_OPERATION_AND": "ja", - "LOGIC_OPERATION_TOOLTIP_OR": "Tagastab „tõene“, kui vähemalt üks avaldistest on tõene.", - "LOGIC_OPERATION_OR": "või", - "LOGIC_NEGATE_TITLE": "pole %1", - "LOGIC_NEGATE_TOOLTIP": "Tagastab „tõene“, kui avaldis on väär. Tagastab „väär“, kui avaldis on tõene.", - "LOGIC_BOOLEAN_TRUE": "tõene", - "LOGIC_BOOLEAN_FALSE": "väär", - "LOGIC_BOOLEAN_TOOLTIP": "Tagastab tõeväärtuse – kas „tõene“ või „väär“.", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Tagastab nulli.", - "LOGIC_TERNARY_CONDITION": "tingimus", - "LOGIC_TERNARY_IF_TRUE": "kui tõene", - "LOGIC_TERNARY_IF_FALSE": "kui väär", - "LOGIC_TERNARY_TOOLTIP": "Kui tingimuse väärtus on tõene, tagastab „kui tõene“ väärtuse, vastasel juhul „kui väär“ väärtuse.", - "MATH_NUMBER_HELPURL": "https://et.wikipedia.org/wiki/Arv", - "MATH_NUMBER_TOOLTIP": "Arv.", - "MATH_ARITHMETIC_HELPURL": "https://et.wikipedia.org/wiki/Aritmeetika", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Tagastab kahe arvu summa.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Tagastab kahe arvu vahe.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Tagastab kahe arvu korrutise.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Tagastab kahe arvu jagatise.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Tagastab esimese arvu teise arvu astmes.", - "MATH_SINGLE_HELPURL": "https://et.wikipedia.org/wiki/Ruutjuur", - "MATH_SINGLE_OP_ROOT": "ruutjuur", - "MATH_SINGLE_TOOLTIP_ROOT": "Tagastab arvu ruutjuure.", - "MATH_SINGLE_OP_ABSOLUTE": "absoluutväärtus", - "MATH_SINGLE_TOOLTIP_ABS": "Tagastab arvu absoluutväärtuse.", - "MATH_SINGLE_TOOLTIP_NEG": "Tagastab arvu vastandväärtuse.", - "MATH_SINGLE_TOOLTIP_LN": "Tagastab arvu naturaallogaritmi.", - "MATH_SINGLE_TOOLTIP_LOG10": "Tagastab arvu kümnendlogaritm.", - "MATH_SINGLE_TOOLTIP_EXP": "Tagasta e arvu astmes.", - "MATH_SINGLE_TOOLTIP_POW10": "Tagastab 10 arvu astmes.", - "MATH_TRIG_HELPURL": "https://et.wikipedia.org/wiki/Trigonomeetrilised_funktsioonid", - "MATH_TRIG_TOOLTIP_SIN": "Tagastab arvu (kraadid) siinuse.", - "MATH_TRIG_TOOLTIP_COS": "Tagastab arvu (kraadid) kosiinuse.", - "MATH_TRIG_TOOLTIP_TAN": "Tagastab arvu (kraadid) tangensi.", - "MATH_TRIG_TOOLTIP_ASIN": "Tagastab arvu arkussiinuse.", - "MATH_TRIG_TOOLTIP_ACOS": "Tagastab arvu arkuskoosiinuse.", - "MATH_TRIG_TOOLTIP_ATAN": "Tagastab arvu arkustangensi.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Tagastab ühe konstantidest: π (3,141…), e (2,718…), φ (1.618…), √2) (1,414…), √½ (0,707…), või ∞ (infinity).", - "MATH_IS_EVEN": "on paarisarv", - "MATH_IS_ODD": "on paaritu arv", - "MATH_IS_PRIME": "on algarv", - "MATH_IS_WHOLE": "on täisarv", - "MATH_IS_POSITIVE": "on positiivne arv", - "MATH_IS_NEGATIVE": "on negatiivne arv", - "MATH_IS_DIVISIBLE_BY": "jagub arvuga", - "MATH_IS_TOOLTIP": "Kontrollib kas arv on paarisarv, paaritu arv, algarv, täisarv, positiivne, negatiivne või jagub kindla arvuga. Tagastab „tõene“ või „väär“.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "muuda %1 %2 võrra", - "MATH_CHANGE_TOOLTIP": "Lisab arvu muutujale '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Ümardab arvu üles või alla.", - "MATH_ROUND_OPERATOR_ROUND": "ümarda", - "MATH_ROUND_OPERATOR_ROUNDUP": "ümarda üles", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "ümarda alla", - "MATH_ONLIST_OPERATOR_SUM": "loendi summa", - "MATH_ONLIST_TOOLTIP_SUM": "Tagastab kõigi loendis olevate arvude summa.", - "MATH_ONLIST_OPERATOR_MIN": "loendi miinimum", - "MATH_ONLIST_TOOLTIP_MIN": "Tagastab väikseima loendis oleva arvu.", - "MATH_ONLIST_OPERATOR_MAX": "loendi maksimum", - "MATH_ONLIST_TOOLTIP_MAX": "Tagastab suurima loendis oleva arvu.", - "MATH_ONLIST_OPERATOR_AVERAGE": "loendi keskmine", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Tagastab loendis olevate arvväärtuste aritmeetilise keskmise.", - "MATH_ONLIST_OPERATOR_MEDIAN": "loendi mediaan", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Return the median number in the list.", - "MATH_ONLIST_OPERATOR_MODE": "loendi moodid", - "MATH_ONLIST_TOOLTIP_MODE": "Tagastab loendi kõige sagedamini esinevate loendi liikmetega.", - "MATH_ONLIST_OPERATOR_STD_DEV": "loendi standardhälve", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Tagastab loendi standardhälbe.", - "MATH_ONLIST_OPERATOR_RANDOM": "juhuslik element loendist", - "MATH_ONLIST_TOOLTIP_RANDOM": "Tagastab juhusliku elemendi loendist.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "%1 ÷ %2 jääk", - "MATH_MODULO_TOOLTIP": "Tagastab esimese numbri teisega jagamisel tekkiva jäägi.", - "MATH_CONSTRAIN_TITLE": "%1 piirang %2 ja %3 vahele", - "MATH_CONSTRAIN_TOOLTIP": "Piirab arvu väärtuse toodud piiridesse (piirarvud kaasa arvatud).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "juhuslik täisarv %1 ja %2 vahel", - "MATH_RANDOM_INT_TOOLTIP": "Tagastab juhusliku täisarvu toodud piiride vahel (piirarvud kaasa arvatud).", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "juhuslik murdosa", - "MATH_RANDOM_FLOAT_TOOLTIP": "Tagastab juhusliku murdosa 0.0 (kaasa arvatud) and 1.0 (välja arvatud) vahel.", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2(X:%1, Y:%2)", - "MATH_ATAN2_TOOLTIP": "Tagastab punkti (X, Y) arkustangentsit kraadides vahemikus -180 kuni 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Täht, sõna või rida teksti.", - "TEXT_JOIN_TITLE_CREATEWITH": "tekita tekst", - "TEXT_JOIN_TOOLTIP": "Tekitab teksti ühendades mistahes arvu elemente.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "ühenda", - "TEXT_CREATE_JOIN_TOOLTIP": "Tekstiploki muutmine sektsioonide lisamise, eemaldamise või järjestuse muutmisega.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Objekti lisamine tekstile.", - "TEXT_APPEND_TITLE": "lisa muutuja %1 lõppu tekst %2", - "TEXT_APPEND_TOOLTIP": "Lisab teksti muutuja „%1“ väärtuse lõppu.", - "TEXT_LENGTH_TITLE": "%1 pikkus", - "TEXT_LENGTH_TOOLTIP": "Tagastab sümbolite aru (ka tühikud) toodud tekstis.", - "TEXT_ISEMPTY_TITLE": "%1 on tühi", - "TEXT_ISEMPTY_TOOLTIP": "Tagastab „tõene“, kui tekstis pole ühtegi sümbolit.", - "TEXT_INDEXOF_TOOLTIP": "Tagastab esimesest tekstist esimese/viimase leitud teise teksti asukoha (indeksi). Kui teksti ei leita, tagastab %1.", - "TEXT_INDEXOF_TITLE": "tekstist %1 %2 %3 asukoht", - "TEXT_INDEXOF_OPERATOR_FIRST": "esimese leitud tekstitüki", - "TEXT_INDEXOF_OPERATOR_LAST": "viimase leitud tekstitüki", - "TEXT_CHARAT_TITLE": "tekstis %1 %2", - "TEXT_CHARAT_FROM_START": "sümbol #", - "TEXT_CHARAT_FROM_END": "lõpust sümbol #", - "TEXT_CHARAT_FIRST": "esimene sümbol", - "TEXT_CHARAT_LAST": "viimane sümbol", - "TEXT_CHARAT_RANDOM": "juhuslik sümbol", - "TEXT_CHARAT_TOOLTIP": "Tagastab tekstis määratud asukohal oleva sümboli.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Tagastab määratud tüki tekstist.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "tekstist", - "TEXT_GET_SUBSTRING_START_FROM_START": "alates sümbolist #", - "TEXT_GET_SUBSTRING_START_FROM_END": "alates (lõpust) sümbolist #", - "TEXT_GET_SUBSTRING_START_FIRST": "alates esimesest sümbolist", - "TEXT_GET_SUBSTRING_END_FROM_START": "kuni sümbolini #", - "TEXT_GET_SUBSTRING_END_FROM_END": "kuni (lõpust) sümbolini #", - "TEXT_GET_SUBSTRING_END_LAST": "kuni viimase sümbolini", - "TEXT_CHANGECASE_TOOLTIP": "Tagastab muudetud tähesuurusega teksti koopia.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "SUURTE TÄHTEDEGA", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "väikeste tähtedega", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Suurte Esitähtedega", - "TEXT_TRIM_TOOLTIP": "Tagastab koopia tekstist, millel on tühikud ühelt või mõlemalt poolt eemaldatud.", - "TEXT_TRIM_OPERATOR_BOTH": "mõlemalt poolt eemaldatud tühikutega", - "TEXT_TRIM_OPERATOR_LEFT": "algusest eemaldatud tühikutega", - "TEXT_TRIM_OPERATOR_RIGHT": "lõpust eemaldatud tühikutega", - "TEXT_PRINT_TITLE": "trüki %1", - "TEXT_PRINT_TOOLTIP": "Trükib määratud teksti, numbri või mõne muu objekti väärtuse.", - "TEXT_PROMPT_TYPE_TEXT": "kasutajalt küsitud tekst teatega", - "TEXT_PROMPT_TYPE_NUMBER": "kasutajalt küsitud arv teatega", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Küsib kasutajalt teadet näidates mingit arvu.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Küsib kasutajalt teadet näidates mingit teksti.", - "TEXT_COUNT_MESSAGE0": "loenda %1 %2-ses", - "TEXT_COUNT_TOOLTIP": "Loenda, mitu korda mingi tekst esineb teise teksti sees.", - "TEXT_REPLACE_MESSAGE0": "asenda %1 %2-ga %3-s", - "TEXT_REPLACE_TOOLTIP": "Asenda mõne teksti esinemine mõnes muus tekstis.", - "TEXT_REVERSE_MESSAGE0": "ümberpöördud %1", - "TEXT_REVERSE_TOOLTIP": "Pöörab tekstis tähemärkide järjestuse ümber.", - "LISTS_CREATE_EMPTY_TITLE": "tühi loend", - "LISTS_CREATE_EMPTY_TOOLTIP": "Tagastab loendi, mille pikkus on 0 ja milles pole ühtegi elementi.", - "LISTS_CREATE_WITH_TOOLTIP": "Tekitab mistahes arvust elementidest loendi.", - "LISTS_CREATE_WITH_INPUT_WITH": "uus loend", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "loend", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Loendiploki elementide lisamine, eemaldamine või järjestuse muutmine.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Elemendi lisamine loendisse.", - "LISTS_REPEAT_TOOLTIP": "Tekitab uue loendi, millesse lisatakse ühte elementi pikkusega määratud arv kordi.", - "LISTS_REPEAT_TITLE": "loend pikkusega %2 elemendist %1", - "LISTS_LENGTH_TITLE": "%1 pikkus", - "LISTS_LENGTH_TOOLTIP": "Tagastab loendi pikkuse.", - "LISTS_ISEMPTY_TITLE": "%1 on tühi", - "LISTS_ISEMPTY_TOOLTIP": "Tagastab „tõene“ kui loend on tühi.", - "LISTS_INLIST": "loendis", - "LISTS_INDEX_OF_FIRST": "esimene leitud", - "LISTS_INDEX_OF_LAST": "viimase leitud", - "LISTS_INDEX_OF_TOOLTIP": "Tagastab esimese/viimase loendist leitud objekti asukoha (objekti järjekorranumbri loendis). Kui objekti ei leita, tagastab %1.", - "LISTS_GET_INDEX_GET": "võetud", - "LISTS_GET_INDEX_GET_REMOVE": "võetud ja eemaldatud", - "LISTS_GET_INDEX_REMOVE": "eemalda", - "LISTS_GET_INDEX_FROM_START": "element #", - "LISTS_GET_INDEX_FROM_END": "element # (lõpust)", - "LISTS_GET_INDEX_FIRST": "esimene element", - "LISTS_GET_INDEX_LAST": "viimane element", - "LISTS_GET_INDEX_RANDOM": "juhuslik element", - "LISTS_INDEX_FROM_START_TOOLTIP": "Esimene element on %1.", - "LISTS_INDEX_FROM_END_TOOLTIP": "Viimane element on %1.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Tagastab loendis määratud asukohal oleva elemendi.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Tagastab loendi esimese elemendi.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Tagastab loendi viimase elemendi.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Tagastab loendi juhusliku elemendi.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Tagastab ja eemaldab loendist määratud asukohal oleva elemendi.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Tagastab ja eemaldab loendist esimese elemendi.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Tagastab ja eemaldab loendist viimase elemendi.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Tagastab ja eemaldab loendist juhusliku elemendi.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Eemaldab loendist määratud asukohal oleva elemendi.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Eemaldab loendist esimese elemendi.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Eemaldab loendist viimase elemendi.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Eemaldab loendist juhusliku elemendi.", - "LISTS_SET_INDEX_SET": "asenda", - "LISTS_SET_INDEX_INSERT": "lisa asukohale", - "LISTS_SET_INDEX_INPUT_TO": ", väärtus", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Asendab loendis määratud kohal oleva elemendi.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Asendab loendis esimese elemendi.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Asendab loendis viimase elemendi.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Asendab loendis juhusliku elemendi.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Lisab määratud asukohale loendis uue elemendi.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Lisab loendi algusesse uue elemendi.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Lisab loendi lõppu uue elemendi.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Lisab juhuslikule kohale loendis uue elemendi.", - "LISTS_GET_SUBLIST_START_FROM_START": "alamloend elemendist #", - "LISTS_GET_SUBLIST_START_FROM_END": "alamloend elemendist # (lõpust)", - "LISTS_GET_SUBLIST_START_FIRST": "alamloend algusest", - "LISTS_GET_SUBLIST_END_FROM_START": "elemendini #", - "LISTS_GET_SUBLIST_END_FROM_END": "elemendini # (lõpust)", - "LISTS_GET_SUBLIST_END_LAST": "lõpuni", - "LISTS_GET_SUBLIST_TOOLTIP": "Tekitab loendi määratud osast koopia.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "%1 %2 sorteeritud %3", - "LISTS_SORT_TOOLTIP": "Loendi koopia sorteerimine.", - "LISTS_SORT_ORDER_ASCENDING": "kasvavalt", - "LISTS_SORT_ORDER_DESCENDING": "kahanevalt", - "LISTS_SORT_TYPE_NUMERIC": "arvväärtuste järgi", - "LISTS_SORT_TYPE_TEXT": "tähestiku järgi", - "LISTS_SORT_TYPE_IGNORECASE": "tähestiku järgi (tähesuurust eirates)", - "LISTS_SPLIT_LIST_FROM_TEXT": "loend, tekitatud tekstist", - "LISTS_SPLIT_TEXT_FROM_LIST": "tekst, tekitatud loendist", - "LISTS_SPLIT_WITH_DELIMITER": "eraldajaga", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Tükeldab teksti eraldajade kohalt ja asetab tükid tekstide loendisse.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Ühendab tekstide loendis olevad tükid üheks tekstiks, asetades tükkide vahele eraldaja.", - "LISTS_REVERSE_TOOLTIP": "Loendi koopia ümberpööramine.", - "VARIABLES_GET_TOOLTIP": "Tagastab selle muutuja väärtuse.", - "VARIABLES_GET_CREATE_SET": "Tekita 'määra „%1“ väärtuseks' plokk", - "VARIABLES_SET": "määra %1 väärtuseks %2", - "VARIABLES_SET_TOOLTIP": "Määrab selle muutuja väärtuse võrdseks sisendi väärtusega.", - "VARIABLES_SET_CREATE_GET": "Tekita '„%1“ väärtus' plokk", - "PROCEDURES_DEFNORETURN_TITLE": "funktsioon", - "PROCEDURES_DEFNORETURN_PROCEDURE": "teeme midagi", - "PROCEDURES_BEFORE_PARAMS": "sisenditega:", - "PROCEDURES_CALL_BEFORE_PARAMS": "sisenditega:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Tekitab funktsiooni, mis ei tagasta midagi.", - "PROCEDURES_DEFNORETURN_COMMENT": "Funktsiooni kirjeldus ...", - "PROCEDURES_DEFRETURN_RETURN": "tagasta", - "PROCEDURES_DEFRETURN_TOOLTIP": "Tekitab funktsiooni, mis tagastab midagi.", - "PROCEDURES_ALLOW_STATEMENTS": "kood plokis", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Hoiatus: Sel funktsioonil on mitu sama nimega sisendit.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://et.wikipedia.org/wiki/Alamprogramm", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Käivitab kasutaja defineeritud funktsiooni '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://et.wikipedia.org/wiki/Alamprogramm", - "PROCEDURES_CALLRETURN_TOOLTIP": "Run the user-defined function '%1' and use its output.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "sisendid", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Funktsiooni sisendite lisamine, eemaldamine või järjestuse muutmine.", - "PROCEDURES_MUTATORARG_TITLE": "sisend nimega:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Lisab funktsioonile sisendi.", - "PROCEDURES_HIGHLIGHT_DEF": "Tõsta funktsiooni definitsioon esile", - "PROCEDURES_CREATE_DO": "Tekita '%1' plokk", - "PROCEDURES_IFRETURN_TOOLTIP": "Kui väärtus on tõene, tagastatakse teine väärtus.", - "PROCEDURES_IFRETURN_WARNING": "Hoiatus: Seda plokki saab kasutada ainult funktsiooni definitsioonis.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Ütle midagi...", - "WORKSPACE_ARIA_LABEL": "Blockly tööruum", - "COLLAPSED_WARNINGS_WARNING": "Kokkuvajunud plokid sisaldavad hoiatusi.", - "DIALOG_OK": "Sobib", - "DIALOG_CANCEL": "Loobu" -} +{ + "@metadata": { + "authors": [ + "Aivarannamaa", + "Hasso", + "Ilmarine", + "Masavi", + "Puik" + ] + }, + "VARIABLES_DEFAULT_NAME": "objekt", + "UNNAMED_KEY": "nimetu", + "TODAY": "Täna", + "DUPLICATE_BLOCK": "Tekita duplikaat", + "ADD_COMMENT": "Lisa kommentaar", + "REMOVE_COMMENT": "Eemalda kommentaar", + "DUPLICATE_COMMENT": "Dubleeri kommentaar", + "EXTERNAL_INPUTS": "Sisendid ploki taga", + "INLINE_INPUTS": "Sisendid ploki sees", + "DELETE_BLOCK": "Kustuta plokk", + "DELETE_X_BLOCKS": "Kustuta %1 plokki", + "DELETE_ALL_BLOCKS": "Kas kustutada kõik %1 plokki?", + "CLEAN_UP": "Korista plokid kokku", + "COLLAPSE_BLOCK": "Tõmba plokk kokku", + "COLLAPSE_ALL": "Tõmba plokid kokku", + "EXPAND_BLOCK": "Laota plokk laiali", + "EXPAND_ALL": "Laota plokid laiali", + "DISABLE_BLOCK": "Keela ploki kasutamine", + "ENABLE_BLOCK": "Luba ploki kasutamine", + "HELP": "Abi", + "UNDO": "Võta tagasi", + "REDO": "Tee uuesti", + "CHANGE_VALUE_TITLE": "Muuda väärtust:", + "RENAME_VARIABLE": "Nimeta muutuja ümber ...", + "RENAME_VARIABLE_TITLE": "Muutuja „%1“ uus nimi:", + "NEW_VARIABLE": "Uus muutuja ...", + "NEW_STRING_VARIABLE": "Loo muutuja sõnena...", + "NEW_NUMBER_VARIABLE": "Loo muutuja arvuna...", + "NEW_COLOUR_VARIABLE": "Loo muutuja värvina...", + "NEW_VARIABLE_TYPE_TITLE": "Uue muutuja tüüp:", + "NEW_VARIABLE_TITLE": "Uue muutuja nimi:", + "VARIABLE_ALREADY_EXISTS": "'%1'-nimeline muutuja on juba olemas.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Muutuja nimega '%1' juba eksisteerib teise tüübina: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Kas kustutada %1 kohas kasutatav muutuja '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Muutujat '%1' ei saa kustutada, sest see on osa funktsiooni '%2' määratlusest", + "DELETE_VARIABLE": "Kustuta muutuja '%1'", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Valitud värv paletist.", + "COLOUR_RANDOM_TITLE": "juhuslik värv", + "COLOUR_RANDOM_TOOLTIP": "Juhuslikult valitud värv.", + "COLOUR_RGB_TITLE": "segu", + "COLOUR_RGB_RED": "punasest", + "COLOUR_RGB_GREEN": "rohelisest", + "COLOUR_RGB_BLUE": "sinisest", + "COLOUR_RGB_TOOLTIP": "Tekitab värvi määratud hulgast punasest, rohelisest ja sinisest. Kõik väärtused peavad olema 0 ja 100 vahel.", + "COLOUR_BLEND_TITLE": "segu", + "COLOUR_BLEND_COLOUR1": "1. värvist", + "COLOUR_BLEND_COLOUR2": "2. värvist", + "COLOUR_BLEND_RATIO": "suhtega", + "COLOUR_BLEND_TOOLTIP": "Segab kaks värvi määratud suhtega (0.0 - 1.0) kokku.", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 korda", + "CONTROLS_REPEAT_INPUT_DO": "käivita", + "CONTROLS_REPEAT_TOOLTIP": "Plokis olevate käskude käivitamine määratud arv kordi.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "seni kuni on", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "seni kuni pole", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Plokis olevaid käske korratakse seni kui avaldis on tõene.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Plokis olevaid käske korratakse seni kui avaldis pole tõene.", + "CONTROLS_FOR_TOOLTIP": "Annab muutujale '%1' väärtused ühest numbrist teiseni, muutes seda intervalli kaupa ja käivitab igal muudatusel ploki sees oleva koodi.", + "CONTROLS_FOR_TITLE": "loendus muutujaga %1 alates %2 kuni %3, %4 kaupa", + "CONTROLS_FOREACH_TITLE": "iga elemendiga %1 loendis %2", + "CONTROLS_FOREACH_TOOLTIP": "Iga elemendiga loendis anna muutujale '%1' elemendi väärtus ja kõivita plokis olevad käsud.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "välju kordusest", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "katkesta see kordus ja liigu järgmisele", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Väljub kordusest ja liigub edasi korduse järel oleva koodi käivitamisele.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Katkestab korduses oleva koodi käivitamise ja käivitab järgmise korduse.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Hoiatus: Seda plokki saab kasutada ainult korduse sees.", + "CONTROLS_IF_TOOLTIP_1": "Kui avaldis on tõene, käivita ploki sees olevad käsud.", + "CONTROLS_IF_TOOLTIP_2": "Kui avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul käivita käsud teisest plokist.", + "CONTROLS_IF_TOOLTIP_3": "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist.", + "CONTROLS_IF_TOOLTIP_4": "Kui esimene avaldis on tõene, käivita käsud esimesest plokist. Vastasel juhul, kui teine avaldis on tõene, käivita käsud teisest plokist. Kui ükski avaldistest pole tõene, käivita käsud viimasest plokist.", + "CONTROLS_IF_MSG_IF": "kui", + "CONTROLS_IF_MSG_ELSEIF": "vastasel juhul, kui", + "CONTROLS_IF_MSG_ELSE": "vastasel juhul", + "CONTROLS_IF_IF_TOOLTIP": "Selle „kui“ ploki muutmine sektsioonide lisamise, eemaldamise ja järjestamisega.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Lisab „kui“ plokile tingimuse.", + "CONTROLS_IF_ELSE_TOOLTIP": "Lisab „kui“ plokile lõpliku tingimuseta koodiploki.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Tagastab „tõene“, kui avaldiste väärtused on võrdsed.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Tagastab „tõene“, kui avaldiste väärtused pole võrdsed.", + "LOGIC_COMPARE_TOOLTIP_LT": "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem kui teise väärtus.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Tagastab „tõene“, kui esimese avaldise väärtus on väiksem või võrdne teise väärtusega.", + "LOGIC_COMPARE_TOOLTIP_GT": "Tagastab „tõene“, kui esimese avaldise väärtus on suurem kui teise väärtus.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Tagastab „tõene“, kui esimese avaldise väärtus on suurem või võrdne teise väärtusega.", + "LOGIC_OPERATION_TOOLTIP_AND": "Tagastab „tõene“, kui mõlemad avaldised on tõesed.", + "LOGIC_OPERATION_AND": "ja", + "LOGIC_OPERATION_TOOLTIP_OR": "Tagastab „tõene“, kui vähemalt üks avaldistest on tõene.", + "LOGIC_OPERATION_OR": "või", + "LOGIC_NEGATE_TITLE": "pole %1", + "LOGIC_NEGATE_TOOLTIP": "Tagastab „tõene“, kui avaldis on väär. Tagastab „väär“, kui avaldis on tõene.", + "LOGIC_BOOLEAN_TRUE": "tõene", + "LOGIC_BOOLEAN_FALSE": "väär", + "LOGIC_BOOLEAN_TOOLTIP": "Tagastab tõeväärtuse – kas „tõene“ või „väär“.", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Tagastab nulli.", + "LOGIC_TERNARY_CONDITION": "tingimus", + "LOGIC_TERNARY_IF_TRUE": "kui tõene", + "LOGIC_TERNARY_IF_FALSE": "kui väär", + "LOGIC_TERNARY_TOOLTIP": "Kui tingimuse väärtus on tõene, tagastab „kui tõene“ väärtuse, vastasel juhul „kui väär“ väärtuse.", + "MATH_NUMBER_HELPURL": "https://et.wikipedia.org/wiki/Arv", + "MATH_NUMBER_TOOLTIP": "Arv.", + "MATH_ARITHMETIC_HELPURL": "https://et.wikipedia.org/wiki/Aritmeetika", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Tagastab kahe arvu summa.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Tagastab kahe arvu vahe.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Tagastab kahe arvu korrutise.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Tagastab kahe arvu jagatise.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Tagastab esimese arvu teise arvu astmes.", + "MATH_SINGLE_HELPURL": "https://et.wikipedia.org/wiki/Ruutjuur", + "MATH_SINGLE_OP_ROOT": "ruutjuur", + "MATH_SINGLE_TOOLTIP_ROOT": "Tagastab arvu ruutjuure.", + "MATH_SINGLE_OP_ABSOLUTE": "absoluutväärtus", + "MATH_SINGLE_TOOLTIP_ABS": "Tagastab arvu absoluutväärtuse.", + "MATH_SINGLE_TOOLTIP_NEG": "Tagastab arvu vastandväärtuse.", + "MATH_SINGLE_TOOLTIP_LN": "Tagastab arvu naturaallogaritmi.", + "MATH_SINGLE_TOOLTIP_LOG10": "Tagastab arvu kümnendlogaritm.", + "MATH_SINGLE_TOOLTIP_EXP": "Tagasta e arvu astmes.", + "MATH_SINGLE_TOOLTIP_POW10": "Tagastab 10 arvu astmes.", + "MATH_TRIG_HELPURL": "https://et.wikipedia.org/wiki/Trigonomeetrilised_funktsioonid", + "MATH_TRIG_TOOLTIP_SIN": "Tagastab arvu (kraadid) siinuse.", + "MATH_TRIG_TOOLTIP_COS": "Tagastab arvu (kraadid) kosiinuse.", + "MATH_TRIG_TOOLTIP_TAN": "Tagastab arvu (kraadid) tangensi.", + "MATH_TRIG_TOOLTIP_ASIN": "Tagastab arvu arkussiinuse.", + "MATH_TRIG_TOOLTIP_ACOS": "Tagastab arvu arkuskoosiinuse.", + "MATH_TRIG_TOOLTIP_ATAN": "Tagastab arvu arkustangensi.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Tagastab ühe konstantidest: π (3,141…), e (2,718…), φ (1.618…), √2) (1,414…), √½ (0,707…), või ∞ (infinity).", + "MATH_IS_EVEN": "on paarisarv", + "MATH_IS_ODD": "on paaritu arv", + "MATH_IS_PRIME": "on algarv", + "MATH_IS_WHOLE": "on täisarv", + "MATH_IS_POSITIVE": "on positiivne arv", + "MATH_IS_NEGATIVE": "on negatiivne arv", + "MATH_IS_DIVISIBLE_BY": "jagub arvuga", + "MATH_IS_TOOLTIP": "Kontrollib kas arv on paarisarv, paaritu arv, algarv, täisarv, positiivne, negatiivne või jagub kindla arvuga. Tagastab „tõene“ või „väär“.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "muuda %1 %2 võrra", + "MATH_CHANGE_TOOLTIP": "Lisab arvu muutujale '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Ümardab arvu üles või alla.", + "MATH_ROUND_OPERATOR_ROUND": "ümarda", + "MATH_ROUND_OPERATOR_ROUNDUP": "ümarda üles", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "ümarda alla", + "MATH_ONLIST_OPERATOR_SUM": "loendi summa", + "MATH_ONLIST_TOOLTIP_SUM": "Tagastab kõigi loendis olevate arvude summa.", + "MATH_ONLIST_OPERATOR_MIN": "loendi miinimum", + "MATH_ONLIST_TOOLTIP_MIN": "Tagastab väikseima loendis oleva arvu.", + "MATH_ONLIST_OPERATOR_MAX": "loendi maksimum", + "MATH_ONLIST_TOOLTIP_MAX": "Tagastab suurima loendis oleva arvu.", + "MATH_ONLIST_OPERATOR_AVERAGE": "loendi keskmine", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Tagastab loendis olevate arvväärtuste aritmeetilise keskmise.", + "MATH_ONLIST_OPERATOR_MEDIAN": "loendi mediaan", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Return the median number in the list.", + "MATH_ONLIST_OPERATOR_MODE": "loendi moodid", + "MATH_ONLIST_TOOLTIP_MODE": "Tagastab loendi kõige sagedamini esinevate loendi liikmetega.", + "MATH_ONLIST_OPERATOR_STD_DEV": "loendi standardhälve", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Tagastab loendi standardhälbe.", + "MATH_ONLIST_OPERATOR_RANDOM": "juhuslik element loendist", + "MATH_ONLIST_TOOLTIP_RANDOM": "Tagastab juhusliku elemendi loendist.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "%1 ÷ %2 jääk", + "MATH_MODULO_TOOLTIP": "Tagastab esimese numbri teisega jagamisel tekkiva jäägi.", + "MATH_CONSTRAIN_TITLE": "%1 piirang %2 ja %3 vahele", + "MATH_CONSTRAIN_TOOLTIP": "Piirab arvu väärtuse toodud piiridesse (piirarvud kaasa arvatud).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "juhuslik täisarv %1 ja %2 vahel", + "MATH_RANDOM_INT_TOOLTIP": "Tagastab juhusliku täisarvu toodud piiride vahel (piirarvud kaasa arvatud).", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "juhuslik murdosa", + "MATH_RANDOM_FLOAT_TOOLTIP": "Tagastab juhusliku murdosa 0.0 (kaasa arvatud) and 1.0 (välja arvatud) vahel.", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2(X:%1, Y:%2)", + "MATH_ATAN2_TOOLTIP": "Tagastab punkti (X, Y) arkustangentsit kraadides vahemikus -180 kuni 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Täht, sõna või rida teksti.", + "TEXT_JOIN_TITLE_CREATEWITH": "tekita tekst", + "TEXT_JOIN_TOOLTIP": "Tekitab teksti ühendades mistahes arvu elemente.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "ühenda", + "TEXT_CREATE_JOIN_TOOLTIP": "Tekstiploki muutmine sektsioonide lisamise, eemaldamise või järjestuse muutmisega.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Objekti lisamine tekstile.", + "TEXT_APPEND_TITLE": "lisa muutuja %1 lõppu tekst %2", + "TEXT_APPEND_TOOLTIP": "Lisab teksti muutuja „%1“ väärtuse lõppu.", + "TEXT_LENGTH_TITLE": "%1 pikkus", + "TEXT_LENGTH_TOOLTIP": "Tagastab sümbolite aru (ka tühikud) toodud tekstis.", + "TEXT_ISEMPTY_TITLE": "%1 on tühi", + "TEXT_ISEMPTY_TOOLTIP": "Tagastab „tõene“, kui tekstis pole ühtegi sümbolit.", + "TEXT_INDEXOF_TOOLTIP": "Tagastab esimesest tekstist esimese/viimase leitud teise teksti asukoha (indeksi). Kui teksti ei leita, tagastab %1.", + "TEXT_INDEXOF_TITLE": "tekstist %1 %2 %3 asukoht", + "TEXT_INDEXOF_OPERATOR_FIRST": "esimese leitud tekstitüki", + "TEXT_INDEXOF_OPERATOR_LAST": "viimase leitud tekstitüki", + "TEXT_CHARAT_TITLE": "tekstis %1 %2", + "TEXT_CHARAT_FROM_START": "sümbol #", + "TEXT_CHARAT_FROM_END": "lõpust sümbol #", + "TEXT_CHARAT_FIRST": "esimene sümbol", + "TEXT_CHARAT_LAST": "viimane sümbol", + "TEXT_CHARAT_RANDOM": "juhuslik sümbol", + "TEXT_CHARAT_TOOLTIP": "Tagastab tekstis määratud asukohal oleva sümboli.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Tagastab määratud tüki tekstist.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "tekstist", + "TEXT_GET_SUBSTRING_START_FROM_START": "alates sümbolist #", + "TEXT_GET_SUBSTRING_START_FROM_END": "alates (lõpust) sümbolist #", + "TEXT_GET_SUBSTRING_START_FIRST": "alates esimesest sümbolist", + "TEXT_GET_SUBSTRING_END_FROM_START": "kuni sümbolini #", + "TEXT_GET_SUBSTRING_END_FROM_END": "kuni (lõpust) sümbolini #", + "TEXT_GET_SUBSTRING_END_LAST": "kuni viimase sümbolini", + "TEXT_CHANGECASE_TOOLTIP": "Tagastab muudetud tähesuurusega teksti koopia.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "SUURTE TÄHTEDEGA", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "väikeste tähtedega", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Suurte Esitähtedega", + "TEXT_TRIM_TOOLTIP": "Tagastab koopia tekstist, millel on tühikud ühelt või mõlemalt poolt eemaldatud.", + "TEXT_TRIM_OPERATOR_BOTH": "mõlemalt poolt eemaldatud tühikutega", + "TEXT_TRIM_OPERATOR_LEFT": "algusest eemaldatud tühikutega", + "TEXT_TRIM_OPERATOR_RIGHT": "lõpust eemaldatud tühikutega", + "TEXT_PRINT_TITLE": "trüki %1", + "TEXT_PRINT_TOOLTIP": "Trükib määratud teksti, numbri või mõne muu objekti väärtuse.", + "TEXT_PROMPT_TYPE_TEXT": "kasutajalt küsitud tekst teatega", + "TEXT_PROMPT_TYPE_NUMBER": "kasutajalt küsitud arv teatega", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Küsib kasutajalt teadet näidates mingit arvu.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Küsib kasutajalt teadet näidates mingit teksti.", + "TEXT_COUNT_MESSAGE0": "loenda %1 %2-ses", + "TEXT_COUNT_TOOLTIP": "Loenda, mitu korda mingi tekst esineb teise teksti sees.", + "TEXT_REPLACE_MESSAGE0": "asenda %1 %2-ga %3-s", + "TEXT_REPLACE_TOOLTIP": "Asenda mõne teksti esinemine mõnes muus tekstis.", + "TEXT_REVERSE_MESSAGE0": "ümberpöördud %1", + "TEXT_REVERSE_TOOLTIP": "Pöörab tekstis tähemärkide järjestuse ümber.", + "LISTS_CREATE_EMPTY_TITLE": "tühi loend", + "LISTS_CREATE_EMPTY_TOOLTIP": "Tagastab loendi, mille pikkus on 0 ja milles pole ühtegi elementi.", + "LISTS_CREATE_WITH_TOOLTIP": "Tekitab mistahes arvust elementidest loendi.", + "LISTS_CREATE_WITH_INPUT_WITH": "uus loend", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "loend", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Loendiploki elementide lisamine, eemaldamine või järjestuse muutmine.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Elemendi lisamine loendisse.", + "LISTS_REPEAT_TOOLTIP": "Tekitab uue loendi, millesse lisatakse ühte elementi pikkusega määratud arv kordi.", + "LISTS_REPEAT_TITLE": "loend pikkusega %2 elemendist %1", + "LISTS_LENGTH_TITLE": "%1 pikkus", + "LISTS_LENGTH_TOOLTIP": "Tagastab loendi pikkuse.", + "LISTS_ISEMPTY_TITLE": "%1 on tühi", + "LISTS_ISEMPTY_TOOLTIP": "Tagastab „tõene“ kui loend on tühi.", + "LISTS_INLIST": "loendis", + "LISTS_INDEX_OF_FIRST": "esimene leitud", + "LISTS_INDEX_OF_LAST": "viimase leitud", + "LISTS_INDEX_OF_TOOLTIP": "Tagastab esimese/viimase loendist leitud objekti asukoha (objekti järjekorranumbri loendis). Kui objekti ei leita, tagastab %1.", + "LISTS_GET_INDEX_GET": "võetud", + "LISTS_GET_INDEX_GET_REMOVE": "võetud ja eemaldatud", + "LISTS_GET_INDEX_REMOVE": "eemalda", + "LISTS_GET_INDEX_FROM_START": "element #", + "LISTS_GET_INDEX_FROM_END": "element # (lõpust)", + "LISTS_GET_INDEX_FIRST": "esimene element", + "LISTS_GET_INDEX_LAST": "viimane element", + "LISTS_GET_INDEX_RANDOM": "juhuslik element", + "LISTS_INDEX_FROM_START_TOOLTIP": "Esimene element on %1.", + "LISTS_INDEX_FROM_END_TOOLTIP": "Viimane element on %1.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Tagastab loendis määratud asukohal oleva elemendi.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Tagastab loendi esimese elemendi.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Tagastab loendi viimase elemendi.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Tagastab loendi juhusliku elemendi.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Tagastab ja eemaldab loendist määratud asukohal oleva elemendi.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Tagastab ja eemaldab loendist esimese elemendi.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Tagastab ja eemaldab loendist viimase elemendi.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Tagastab ja eemaldab loendist juhusliku elemendi.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Eemaldab loendist määratud asukohal oleva elemendi.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Eemaldab loendist esimese elemendi.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Eemaldab loendist viimase elemendi.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Eemaldab loendist juhusliku elemendi.", + "LISTS_SET_INDEX_SET": "asenda", + "LISTS_SET_INDEX_INSERT": "lisa asukohale", + "LISTS_SET_INDEX_INPUT_TO": ", väärtus", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Asendab loendis määratud kohal oleva elemendi.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Asendab loendis esimese elemendi.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Asendab loendis viimase elemendi.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Asendab loendis juhusliku elemendi.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Lisab määratud asukohale loendis uue elemendi.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Lisab loendi algusesse uue elemendi.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Lisab loendi lõppu uue elemendi.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Lisab juhuslikule kohale loendis uue elemendi.", + "LISTS_GET_SUBLIST_START_FROM_START": "alamloend elemendist #", + "LISTS_GET_SUBLIST_START_FROM_END": "alamloend elemendist # (lõpust)", + "LISTS_GET_SUBLIST_START_FIRST": "alamloend algusest", + "LISTS_GET_SUBLIST_END_FROM_START": "elemendini #", + "LISTS_GET_SUBLIST_END_FROM_END": "elemendini # (lõpust)", + "LISTS_GET_SUBLIST_END_LAST": "lõpuni", + "LISTS_GET_SUBLIST_TOOLTIP": "Tekitab loendi määratud osast koopia.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "%1 %2 sorteeritud %3", + "LISTS_SORT_TOOLTIP": "Loendi koopia sorteerimine.", + "LISTS_SORT_ORDER_ASCENDING": "kasvavalt", + "LISTS_SORT_ORDER_DESCENDING": "kahanevalt", + "LISTS_SORT_TYPE_NUMERIC": "arvväärtuste järgi", + "LISTS_SORT_TYPE_TEXT": "tähestiku järgi", + "LISTS_SORT_TYPE_IGNORECASE": "tähestiku järgi (tähesuurust eirates)", + "LISTS_SPLIT_LIST_FROM_TEXT": "loend, tekitatud tekstist", + "LISTS_SPLIT_TEXT_FROM_LIST": "tekst, tekitatud loendist", + "LISTS_SPLIT_WITH_DELIMITER": "eraldajaga", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Tükeldab teksti eraldajade kohalt ja asetab tükid tekstide loendisse.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Ühendab tekstide loendis olevad tükid üheks tekstiks, asetades tükkide vahele eraldaja.", + "LISTS_REVERSE_TOOLTIP": "Loendi koopia ümberpööramine.", + "VARIABLES_GET_TOOLTIP": "Tagastab selle muutuja väärtuse.", + "VARIABLES_GET_CREATE_SET": "Tekita 'määra „%1“ väärtuseks' plokk", + "VARIABLES_SET": "määra %1 väärtuseks %2", + "VARIABLES_SET_TOOLTIP": "Määrab selle muutuja väärtuse võrdseks sisendi väärtusega.", + "VARIABLES_SET_CREATE_GET": "Tekita '„%1“ väärtus' plokk", + "PROCEDURES_DEFNORETURN_TITLE": "funktsioon", + "PROCEDURES_DEFNORETURN_PROCEDURE": "teeme midagi", + "PROCEDURES_BEFORE_PARAMS": "sisenditega:", + "PROCEDURES_CALL_BEFORE_PARAMS": "sisenditega:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Tekitab funktsiooni, mis ei tagasta midagi.", + "PROCEDURES_DEFNORETURN_COMMENT": "Funktsiooni kirjeldus ...", + "PROCEDURES_DEFRETURN_RETURN": "tagasta", + "PROCEDURES_DEFRETURN_TOOLTIP": "Tekitab funktsiooni, mis tagastab midagi.", + "PROCEDURES_ALLOW_STATEMENTS": "kood plokis", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Hoiatus: Sel funktsioonil on mitu sama nimega sisendit.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://et.wikipedia.org/wiki/Alamprogramm", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Käivitab kasutaja defineeritud funktsiooni '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://et.wikipedia.org/wiki/Alamprogramm", + "PROCEDURES_CALLRETURN_TOOLTIP": "Run the user-defined function '%1' and use its output.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "sisendid", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Funktsiooni sisendite lisamine, eemaldamine või järjestuse muutmine.", + "PROCEDURES_MUTATORARG_TITLE": "sisend nimega:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Lisab funktsioonile sisendi.", + "PROCEDURES_HIGHLIGHT_DEF": "Tõsta funktsiooni definitsioon esile", + "PROCEDURES_CREATE_DO": "Tekita '%1' plokk", + "PROCEDURES_IFRETURN_TOOLTIP": "Kui väärtus on tõene, tagastatakse teine väärtus.", + "PROCEDURES_IFRETURN_WARNING": "Hoiatus: Seda plokki saab kasutada ainult funktsiooni definitsioonis.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Ütle midagi...", + "WORKSPACE_ARIA_LABEL": "Blockly tööruum", + "COLLAPSED_WARNINGS_WARNING": "Kokkuvajunud plokid sisaldavad hoiatusi.", + "DIALOG_OK": "Sobib", + "DIALOG_CANCEL": "Loobu" +} diff --git a/msg/json/eu.json b/msg/json/eu.json index 2a4e5b8578f..e0efffd38fc 100644 --- a/msg/json/eu.json +++ b/msg/json/eu.json @@ -1,221 +1,221 @@ -{ - "@metadata": { - "authors": [ - "Abacus", - "Amaia", - "An13sa", - "Asieriko", - "EukeneFL", - "Mikel Ibaiba", - "RFenichel", - "Subi" - ] - }, - "VARIABLES_DEFAULT_NAME": "elementua", - "UNNAMED_KEY": "izenik gabe", - "TODAY": "Gaur", - "DUPLICATE_BLOCK": "Bikoiztu", - "ADD_COMMENT": "Iruzkina gehitu", - "REMOVE_COMMENT": "Iruzkina ezabatu", - "DUPLICATE_COMMENT": "Iruzkina bikoiztu", - "EXTERNAL_INPUTS": "Kanpoko sarrerak", - "INLINE_INPUTS": "Inpuntak Linean", - "DELETE_BLOCK": "Ezabatu blokea", - "DELETE_X_BLOCKS": "Ezabatu %1 bloke", - "DELETE_ALL_BLOCKS": "Ezabatu %1 blokeak?", - "CLEAN_UP": "Blokeak garbitu", - "COLLAPSE_BLOCK": "Blokea kolapsatu", - "COLLAPSE_ALL": "Blokeak kolapsatu", - "EXPAND_BLOCK": "Blokea Hedatu", - "EXPAND_ALL": "Blokeak Hedatu", - "DISABLE_BLOCK": "Ezgaitu blokea", - "ENABLE_BLOCK": "Gaitu blokea", - "HELP": "Laguntza", - "UNDO": "Desegin", - "REDO": "Berregin", - "CHANGE_VALUE_TITLE": "Aldatu balioa:", - "RENAME_VARIABLE": "Aldatu aldagaiaren izena...", - "RENAME_VARIABLE_TITLE": "Aldatu '%1' aldagai guztien izenak eta izen hau eman:", - "NEW_VARIABLE": "Aldagaia sortu...", - "NEW_STRING_VARIABLE": "Kate aldakorra sortu...", - "NEW_NUMBER_VARIABLE": "Zenbaki aldagaia sortu...", - "NEW_COLOUR_VARIABLE": "Kolore aldagaia sortu...", - "NEW_VARIABLE_TYPE_TITLE": "Aldagai mota berria:", - "NEW_VARIABLE_TITLE": "Aldagai berriaren izena:", - "VARIABLE_ALREADY_EXISTS": "%1 izeneko aldagaia dagoeneko existitzen da.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "%1 izeneko aldagaia dagoeneko existitzen da %2 motako beste aldagai batekin.", - "DELETE_VARIABLE_CONFIRMATION": "Ezabatu %2 aldagaiaren %1 erabilerak?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ezin da '%1' aldagaia ezabatu '%2' funtzioaren definizioaren zati delako.", - "DELETE_VARIABLE": "%1 parametro izena ezabatu.", - "COLOUR_PICKER_HELPURL": "https://eu.wikipedia.org/wiki/Kolore", - "COLOUR_PICKER_TOOLTIP": "Hautatu kolore bat paletatik.", - "COLOUR_RANDOM_TITLE": "ausazko kolorea", - "COLOUR_RANDOM_TOOLTIP": "Aukeratu ausaz kolore bat.", - "COLOUR_RGB_TITLE": "colour with", - "COLOUR_RGB_RED": "gorria", - "COLOUR_RGB_GREEN": "berdea", - "COLOUR_RGB_BLUE": "urdina", - "COLOUR_RGB_TOOLTIP": "Sortu kolorea zehaztutako gorriz, berdearekin eta urdinekin. Balio guztiak 0 eta 100 artean egon behar dira.", - "COLOUR_BLEND_TITLE": "Nahastu", - "COLOUR_BLEND_COLOUR1": "1 Kolorea", - "COLOUR_BLEND_COLOUR2": "2 Kolorea", - "COLOUR_BLEND_RATIO": "Ratioa", - "COLOUR_BLEND_TOOLTIP": "Bi koloreko nahasketak erlazio jakin batekin nahasten ditu (0.0-1.0)", - "CONTROLS_REPEAT_HELPURL": "https://eu.wikipedia.org/wiki/For_begizta", - "CONTROLS_REPEAT_TITLE": "errepikatu %1 aldiz", - "CONTROLS_REPEAT_INPUT_DO": "egin", - "CONTROLS_REPEAT_TOOLTIP": "Adierazpen batzuk hainbat aldiz egin.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "bitartean errepikatu", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "arte errepikatu", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Balorea egia den bitartean, egin adierazpen batzuk.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Balorea gezurra den bitartean, egin adierazpen batzuk.", - "CONTROLS_FOR_TOOLTIP": "%1 aldagaiak hasierako zenbakiaren eta amaierako zenbakirako balioak hartzen ditu, zehaztutako tartea zenbatzen du eta zehaztutako blokeak egin.", - "CONTROLS_FOR_TITLE": "%1 zenbatu %2-tik %3-ra %4-ra", - "CONTROLS_FOREACH_TITLE": "%1 elementu bakoitzeko %2 zerrendan", - "CONTROLS_FOREACH_TOOLTIP": "Zerrendako elementu bakoitzarentzat, ezarri %1 aldagaia elementura, eta egin adierazpen batzuk.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "begizta eten", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "jarraitu hurrengo begizta iterazioarekin", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Agertzen den begiztatik ihes egin.", - "CONTROLS_IF_TOOLTIP_1": "Balorea egia den bitartean, egin adierazpen batzuk.", - "CONTROLS_IF_TOOLTIP_2": "Balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, egin ezazu bigarren adierazpen blokea.", - "CONTROLS_IF_TOOLTIP_3": "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea.", - "CONTROLS_IF_TOOLTIP_4": "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea. Baloreetako bat ere ez bada egia, egin ezazu adierazpenen azkeneko blokea.", - "CONTROLS_IF_MSG_IF": "baldin eta", - "CONTROLS_IF_MSG_ELSEIF": "bestela baldin eta", - "CONTROLS_IF_MSG_ELSE": "bestela", - "CONTROLS_IF_IF_TOOLTIP": "Gehitu, ezabatu, ala berrantolatu aukeraketak \"ba\" bloke hau berrezartzeko.", - "LOGIC_COMPARE_HELPURL": "https://eu.wikipedia.org/wiki/Desberdintza", - "LOGIC_OPERATION_AND": "eta", - "LOGIC_OPERATION_OR": "edo", - "LOGIC_NEGATE_TITLE": "ez %1", - "LOGIC_BOOLEAN_TRUE": "egia", - "LOGIC_BOOLEAN_FALSE": "gezurra", - "LOGIC_NULL": "nulu", - "LOGIC_TERNARY_CONDITION": "Froga", - "LOGIC_TERNARY_IF_TRUE": "egia bada", - "LOGIC_TERNARY_IF_FALSE": "gezurra bada", - "MATH_NUMBER_HELPURL": "https://eu.wikipedia.org/wiki/Zenbaki", - "MATH_NUMBER_TOOLTIP": "Zenbaki bat.", - "MATH_ARITHMETIC_HELPURL": "https://eu.wikipedia.org/wiki/Aritmetika", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Bi zenbakien batura ematen du.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Bi zenbakien kendura ematen du.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Bi zenbakien biderkadura ematen du.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Bi zenbakien zatidura ematen du.", - "MATH_SINGLE_HELPURL": "https://eu.wikipedia.org/wiki/Erro_karratu", - "MATH_SINGLE_OP_ROOT": "erro karratua", - "MATH_SINGLE_TOOLTIP_ROOT": "Zenbaki baten erro karratua ematen du.", - "MATH_SINGLE_OP_ABSOLUTE": "absolutua", - "MATH_SINGLE_TOOLTIP_ABS": "Zenbaki baten balio absolutua ematen du.", - "MATH_SINGLE_TOOLTIP_LN": "Zenbaki baten logaritmo naturala ematen du.", - "MATH_TRIG_HELPURL": "https://eu.wikipedia.org/wiki/Funtzio_trigonometriko", - "MATH_TRIG_TOOLTIP_ASIN": "Zenbaki baten arku sinua ematen du.", - "MATH_TRIG_TOOLTIP_ACOS": "Zenbaki baten arku kosinua ematen du.", - "MATH_TRIG_TOOLTIP_ATAN": "Zenbaki baten arku tangentea ematen du.", - "MATH_CONSTANT_TOOLTIP": "Konstante ohikoenetako bat itzultzen du: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), edo ∞ (infinitua).", - "MATH_IS_EVEN": "bikoitia da", - "MATH_IS_ODD": "bakoitia da", - "MATH_IS_PRIME": "zenbaki lehena da", - "MATH_IS_WHOLE": "zenbaki osoa da", - "MATH_IS_POSITIVE": "positiboa da", - "MATH_IS_NEGATIVE": "negatiboa da", - "MATH_IS_DIVISIBLE_BY": "honakoaz zatigarria da", - "MATH_CHANGE_TITLE": "aldatu %1 %2(e)ra", - "MATH_CHANGE_TOOLTIP": "Gehitu zenbakia '%1' aldagaiari.", - "MATH_ROUND_HELPURL": "https://eu.wikipedia.org/wiki/Biribiltze", - "MATH_ROUND_TOOLTIP": "Zenbaki bat gehiagoz edo gutxiagoz biribildu.", - "MATH_ROUND_OPERATOR_ROUND": "biribildu", - "MATH_ROUND_OPERATOR_ROUNDUP": "gehiagoz biribildu", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "gutxiagoz biribildu", - "MATH_ONLIST_OPERATOR_SUM": "zerrendaren batura", - "MATH_ONLIST_TOOLTIP_SUM": "Eman zerrendako zenbaki guztien batura.", - "MATH_ONLIST_OPERATOR_MIN": "zerrendako minimoa", - "MATH_ONLIST_TOOLTIP_MIN": "Eman zerrendako zenbakirik txikiena.", - "MATH_ONLIST_OPERATOR_MAX": "zerrendako maximoa", - "MATH_ONLIST_TOOLTIP_MAX": "Eman zerrendako zenbakirik handiena.", - "MATH_ONLIST_OPERATOR_AVERAGE": "zerrendaren batazbestekoa", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Zerrendako zenbakizko balioen batazbestekoa (aritmetikoa) itzultzen du.", - "MATH_ONLIST_OPERATOR_MEDIAN": "zerrendako mediana", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Eman zerrendako zenbaki media.", - "MATH_ONLIST_OPERATOR_MODE": "zerrendako modak", - "MATH_ONLIST_TOOLTIP_MODE": "Bueltatu artikulurik ohikoenetarikoen zerrenda.", - "MATH_ONLIST_OPERATOR_STD_DEV": "zerrendako deribazio estandarra", - "MATH_ONLIST_OPERATOR_RANDOM": "zerrendako artikulu aleatorioa", - "MATH_ONLIST_TOOLTIP_RANDOM": "Itzuli zerrendako elementu aleatorioa.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "%1 ÷ %2(r)en oroigarria", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "zatiki aleatorioa", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Letra bat, hitza edo testuko lerroa.", - "TEXT_JOIN_TITLE_CREATEWITH": "Testua sortu hurrengoarekin", - "TEXT_CREATE_JOIN_TITLE_JOIN": "elkartu", - "TEXT_CREATE_JOIN_TOOLTIP": "Gehitu, ezabatu, ala berrantolatu aukeraketak testu bloke hau berrezartzeko.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Gehitu artikulu bat testura.", - "TEXT_APPEND_TITLE": "%1tik testu atxikita %2", - "TEXT_LENGTH_TITLE": "%1(r)en luzeera", - "TEXT_ISEMPTY_TITLE": "%1 hutsik dago", - "TEXT_INDEXOF_TITLE": "testuan %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "bilatu testuaren lehenengo agerpena", - "TEXT_INDEXOF_OPERATOR_LAST": "bilatu testuaren azkenengo agerpena", - "TEXT_CHARAT_TITLE": "testuan %1 %2", - "TEXT_CHARAT_FROM_START": "hartu # letra", - "TEXT_CHARAT_FROM_END": "hartu # letra bukaeratik", - "TEXT_CHARAT_FIRST": "hartu lehenengo letra", - "TEXT_CHARAT_LAST": "hartu azkenengo letra", - "TEXT_CHARAT_RANDOM": "letra aleatorioa lortu", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "testuan", - "TEXT_PRINT_TITLE": "inprimatu %1", - "TEXT_PRINT_TOOLTIP": "zehaztutako testua, zenbakia edo bestelako balioa inprimatzen du.", - "TEXT_REVERSE_MESSAGE0": "%1(e)ri buelta eman", - "LISTS_CREATE_EMPTY_TITLE": "sortu zerrenda hutsa", - "LISTS_CREATE_EMPTY_TOOLTIP": "Zerrenda bat itzultzen du, 0 luzera duena, daturik gabekoa", - "LISTS_CREATE_WITH_INPUT_WITH": "Zerrenda sortu hurrengoarekin", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "zerrenda", - "LISTS_LENGTH_TITLE": "zerrendaren luzera", - "LISTS_LENGTH_TOOLTIP": "zerrendaren luzera itzultzen du", - "LISTS_ISEMPTY_TITLE": "%1 hutsik dago", - "LISTS_ISEMPTY_TOOLTIP": "egia itzultzen du zerrenda hutsik badago.", - "LISTS_INLIST": "zerrendan", - "LISTS_GET_INDEX_GET": "lortu", - "LISTS_GET_INDEX_GET_REMOVE": "lortu eta kendu", - "LISTS_GET_INDEX_REMOVE": "kendu", - "LISTS_GET_INDEX_FIRST": "lehena", - "LISTS_GET_INDEX_LAST": "azkena", - "LISTS_GET_INDEX_RANDOM": "ausazkoa", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 lehenengo artikulua da.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 azken artikulua da.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Artikulua zerrendako posizio zehatz batera bueltatzen du.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Lehenengo artikulua zerrendara bueltatzen du.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Azken artikulua zerrendara bueltatzen du.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Artikulu aleatorioa zerrendara bueltatzen du.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Lehenengo artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Zerrendako azken artikulua kentzen eta bueltatzen du.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Artikulu aleatorio bat zerrendatik kentzen eta bueltatzen du.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Artikulua zerrendako posizio zehatz batetik kentzen du.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Lehenengo artikulua zerrendatik kentzen du.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Azken artikulua zerrendatik kentzen du.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Artikulu aleatorioa zerrendatik kentzen du.", - "LISTS_SET_INDEX_SET": "ezarri", - "LISTS_SET_INDEX_INPUT_TO": "honela", - "LISTS_SORT_ORDER_ASCENDING": "goranzkoa", - "LISTS_SORT_ORDER_DESCENDING": "beheranzkoa", - "LISTS_SORT_TYPE_NUMERIC": "Zenbakizkoa", - "LISTS_SORT_TYPE_TEXT": "Alfabetikoki", - "LISTS_SPLIT_LIST_FROM_TEXT": "Testuatik lista sortu", - "LISTS_SPLIT_TEXT_FROM_LIST": "listatik testua sortu", - "PROCEDURES_DEFNORETURN_TITLE": "honi", - "PROCEDURES_DEFNORETURN_PROCEDURE": "egin zerbait", - "PROCEDURES_BEFORE_PARAMS": "honekin", - "PROCEDURES_CALL_BEFORE_PARAMS": "honekin", - "PROCEDURES_DEFRETURN_RETURN": "itzuli", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Abisua: Funtzio honek parametro bikoiztuak dauzka.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Azpierrutina", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Azpierrutina", - "PROCEDURES_MUTATORCONTAINER_TITLE": "sarrerak", - "PROCEDURES_MUTATORARG_TITLE": "sarreraren izena:", - "PROCEDURES_CREATE_DO": "'%1' sortu", - "PROCEDURES_IFRETURN_TOOLTIP": "Balioa egiazkoa bada, orduan itzuli bigarren baliora.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Esan zerbait...", - "DIALOG_OK": "Ados", - "DIALOG_CANCEL": "Utzi" -} +{ + "@metadata": { + "authors": [ + "Abacus", + "Amaia", + "An13sa", + "Asieriko", + "EukeneFL", + "Mikel Ibaiba", + "RFenichel", + "Subi" + ] + }, + "VARIABLES_DEFAULT_NAME": "elementua", + "UNNAMED_KEY": "izenik gabe", + "TODAY": "Gaur", + "DUPLICATE_BLOCK": "Bikoiztu", + "ADD_COMMENT": "Iruzkina gehitu", + "REMOVE_COMMENT": "Iruzkina ezabatu", + "DUPLICATE_COMMENT": "Iruzkina bikoiztu", + "EXTERNAL_INPUTS": "Kanpoko sarrerak", + "INLINE_INPUTS": "Inpuntak Linean", + "DELETE_BLOCK": "Ezabatu blokea", + "DELETE_X_BLOCKS": "Ezabatu %1 bloke", + "DELETE_ALL_BLOCKS": "Ezabatu %1 blokeak?", + "CLEAN_UP": "Blokeak garbitu", + "COLLAPSE_BLOCK": "Blokea kolapsatu", + "COLLAPSE_ALL": "Blokeak kolapsatu", + "EXPAND_BLOCK": "Blokea Hedatu", + "EXPAND_ALL": "Blokeak Hedatu", + "DISABLE_BLOCK": "Ezgaitu blokea", + "ENABLE_BLOCK": "Gaitu blokea", + "HELP": "Laguntza", + "UNDO": "Desegin", + "REDO": "Berregin", + "CHANGE_VALUE_TITLE": "Aldatu balioa:", + "RENAME_VARIABLE": "Aldatu aldagaiaren izena...", + "RENAME_VARIABLE_TITLE": "Aldatu '%1' aldagai guztien izenak eta izen hau eman:", + "NEW_VARIABLE": "Aldagaia sortu...", + "NEW_STRING_VARIABLE": "Kate aldakorra sortu...", + "NEW_NUMBER_VARIABLE": "Zenbaki aldagaia sortu...", + "NEW_COLOUR_VARIABLE": "Kolore aldagaia sortu...", + "NEW_VARIABLE_TYPE_TITLE": "Aldagai mota berria:", + "NEW_VARIABLE_TITLE": "Aldagai berriaren izena:", + "VARIABLE_ALREADY_EXISTS": "%1 izeneko aldagaia dagoeneko existitzen da.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "%1 izeneko aldagaia dagoeneko existitzen da %2 motako beste aldagai batekin.", + "DELETE_VARIABLE_CONFIRMATION": "Ezabatu %2 aldagaiaren %1 erabilerak?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ezin da '%1' aldagaia ezabatu '%2' funtzioaren definizioaren zati delako.", + "DELETE_VARIABLE": "%1 parametro izena ezabatu.", + "COLOUR_PICKER_HELPURL": "https://eu.wikipedia.org/wiki/Kolore", + "COLOUR_PICKER_TOOLTIP": "Hautatu kolore bat paletatik.", + "COLOUR_RANDOM_TITLE": "ausazko kolorea", + "COLOUR_RANDOM_TOOLTIP": "Aukeratu ausaz kolore bat.", + "COLOUR_RGB_TITLE": "colour with", + "COLOUR_RGB_RED": "gorria", + "COLOUR_RGB_GREEN": "berdea", + "COLOUR_RGB_BLUE": "urdina", + "COLOUR_RGB_TOOLTIP": "Sortu kolorea zehaztutako gorriz, berdearekin eta urdinekin. Balio guztiak 0 eta 100 artean egon behar dira.", + "COLOUR_BLEND_TITLE": "Nahastu", + "COLOUR_BLEND_COLOUR1": "1 Kolorea", + "COLOUR_BLEND_COLOUR2": "2 Kolorea", + "COLOUR_BLEND_RATIO": "Ratioa", + "COLOUR_BLEND_TOOLTIP": "Bi koloreko nahasketak erlazio jakin batekin nahasten ditu (0.0-1.0)", + "CONTROLS_REPEAT_HELPURL": "https://eu.wikipedia.org/wiki/For_begizta", + "CONTROLS_REPEAT_TITLE": "errepikatu %1 aldiz", + "CONTROLS_REPEAT_INPUT_DO": "egin", + "CONTROLS_REPEAT_TOOLTIP": "Adierazpen batzuk hainbat aldiz egin.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "bitartean errepikatu", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "arte errepikatu", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Balorea egia den bitartean, egin adierazpen batzuk.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Balorea gezurra den bitartean, egin adierazpen batzuk.", + "CONTROLS_FOR_TOOLTIP": "%1 aldagaiak hasierako zenbakiaren eta amaierako zenbakirako balioak hartzen ditu, zehaztutako tartea zenbatzen du eta zehaztutako blokeak egin.", + "CONTROLS_FOR_TITLE": "%1 zenbatu %2-tik %3-ra %4-ra", + "CONTROLS_FOREACH_TITLE": "%1 elementu bakoitzeko %2 zerrendan", + "CONTROLS_FOREACH_TOOLTIP": "Zerrendako elementu bakoitzarentzat, ezarri %1 aldagaia elementura, eta egin adierazpen batzuk.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "begizta eten", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "jarraitu hurrengo begizta iterazioarekin", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Agertzen den begiztatik ihes egin.", + "CONTROLS_IF_TOOLTIP_1": "Balorea egia den bitartean, egin adierazpen batzuk.", + "CONTROLS_IF_TOOLTIP_2": "Balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, egin ezazu bigarren adierazpen blokea.", + "CONTROLS_IF_TOOLTIP_3": "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea.", + "CONTROLS_IF_TOOLTIP_4": "Lehenengo balorea egia bada, orduan egin ezazu lehenengo adierazpen blokea. Bestela, bigarren balorea egia bada, egin ezazu bigarren adierazpen blokea. Baloreetako bat ere ez bada egia, egin ezazu adierazpenen azkeneko blokea.", + "CONTROLS_IF_MSG_IF": "baldin eta", + "CONTROLS_IF_MSG_ELSEIF": "bestela baldin eta", + "CONTROLS_IF_MSG_ELSE": "bestela", + "CONTROLS_IF_IF_TOOLTIP": "Gehitu, ezabatu, ala berrantolatu aukeraketak \"ba\" bloke hau berrezartzeko.", + "LOGIC_COMPARE_HELPURL": "https://eu.wikipedia.org/wiki/Desberdintza", + "LOGIC_OPERATION_AND": "eta", + "LOGIC_OPERATION_OR": "edo", + "LOGIC_NEGATE_TITLE": "ez %1", + "LOGIC_BOOLEAN_TRUE": "egia", + "LOGIC_BOOLEAN_FALSE": "gezurra", + "LOGIC_NULL": "nulu", + "LOGIC_TERNARY_CONDITION": "Froga", + "LOGIC_TERNARY_IF_TRUE": "egia bada", + "LOGIC_TERNARY_IF_FALSE": "gezurra bada", + "MATH_NUMBER_HELPURL": "https://eu.wikipedia.org/wiki/Zenbaki", + "MATH_NUMBER_TOOLTIP": "Zenbaki bat.", + "MATH_ARITHMETIC_HELPURL": "https://eu.wikipedia.org/wiki/Aritmetika", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Bi zenbakien batura ematen du.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Bi zenbakien kendura ematen du.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Bi zenbakien biderkadura ematen du.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Bi zenbakien zatidura ematen du.", + "MATH_SINGLE_HELPURL": "https://eu.wikipedia.org/wiki/Erro_karratu", + "MATH_SINGLE_OP_ROOT": "erro karratua", + "MATH_SINGLE_TOOLTIP_ROOT": "Zenbaki baten erro karratua ematen du.", + "MATH_SINGLE_OP_ABSOLUTE": "absolutua", + "MATH_SINGLE_TOOLTIP_ABS": "Zenbaki baten balio absolutua ematen du.", + "MATH_SINGLE_TOOLTIP_LN": "Zenbaki baten logaritmo naturala ematen du.", + "MATH_TRIG_HELPURL": "https://eu.wikipedia.org/wiki/Funtzio_trigonometriko", + "MATH_TRIG_TOOLTIP_ASIN": "Zenbaki baten arku sinua ematen du.", + "MATH_TRIG_TOOLTIP_ACOS": "Zenbaki baten arku kosinua ematen du.", + "MATH_TRIG_TOOLTIP_ATAN": "Zenbaki baten arku tangentea ematen du.", + "MATH_CONSTANT_TOOLTIP": "Konstante ohikoenetako bat itzultzen du: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), edo ∞ (infinitua).", + "MATH_IS_EVEN": "bikoitia da", + "MATH_IS_ODD": "bakoitia da", + "MATH_IS_PRIME": "zenbaki lehena da", + "MATH_IS_WHOLE": "zenbaki osoa da", + "MATH_IS_POSITIVE": "positiboa da", + "MATH_IS_NEGATIVE": "negatiboa da", + "MATH_IS_DIVISIBLE_BY": "honakoaz zatigarria da", + "MATH_CHANGE_TITLE": "aldatu %1 %2(e)ra", + "MATH_CHANGE_TOOLTIP": "Gehitu zenbakia '%1' aldagaiari.", + "MATH_ROUND_HELPURL": "https://eu.wikipedia.org/wiki/Biribiltze", + "MATH_ROUND_TOOLTIP": "Zenbaki bat gehiagoz edo gutxiagoz biribildu.", + "MATH_ROUND_OPERATOR_ROUND": "biribildu", + "MATH_ROUND_OPERATOR_ROUNDUP": "gehiagoz biribildu", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "gutxiagoz biribildu", + "MATH_ONLIST_OPERATOR_SUM": "zerrendaren batura", + "MATH_ONLIST_TOOLTIP_SUM": "Eman zerrendako zenbaki guztien batura.", + "MATH_ONLIST_OPERATOR_MIN": "zerrendako minimoa", + "MATH_ONLIST_TOOLTIP_MIN": "Eman zerrendako zenbakirik txikiena.", + "MATH_ONLIST_OPERATOR_MAX": "zerrendako maximoa", + "MATH_ONLIST_TOOLTIP_MAX": "Eman zerrendako zenbakirik handiena.", + "MATH_ONLIST_OPERATOR_AVERAGE": "zerrendaren batazbestekoa", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Zerrendako zenbakizko balioen batazbestekoa (aritmetikoa) itzultzen du.", + "MATH_ONLIST_OPERATOR_MEDIAN": "zerrendako mediana", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Eman zerrendako zenbaki media.", + "MATH_ONLIST_OPERATOR_MODE": "zerrendako modak", + "MATH_ONLIST_TOOLTIP_MODE": "Bueltatu artikulurik ohikoenetarikoen zerrenda.", + "MATH_ONLIST_OPERATOR_STD_DEV": "zerrendako deribazio estandarra", + "MATH_ONLIST_OPERATOR_RANDOM": "zerrendako artikulu aleatorioa", + "MATH_ONLIST_TOOLTIP_RANDOM": "Itzuli zerrendako elementu aleatorioa.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "%1 ÷ %2(r)en oroigarria", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "zatiki aleatorioa", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Letra bat, hitza edo testuko lerroa.", + "TEXT_JOIN_TITLE_CREATEWITH": "Testua sortu hurrengoarekin", + "TEXT_CREATE_JOIN_TITLE_JOIN": "elkartu", + "TEXT_CREATE_JOIN_TOOLTIP": "Gehitu, ezabatu, ala berrantolatu aukeraketak testu bloke hau berrezartzeko.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Gehitu artikulu bat testura.", + "TEXT_APPEND_TITLE": "%1tik testu atxikita %2", + "TEXT_LENGTH_TITLE": "%1(r)en luzeera", + "TEXT_ISEMPTY_TITLE": "%1 hutsik dago", + "TEXT_INDEXOF_TITLE": "testuan %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "bilatu testuaren lehenengo agerpena", + "TEXT_INDEXOF_OPERATOR_LAST": "bilatu testuaren azkenengo agerpena", + "TEXT_CHARAT_TITLE": "testuan %1 %2", + "TEXT_CHARAT_FROM_START": "hartu # letra", + "TEXT_CHARAT_FROM_END": "hartu # letra bukaeratik", + "TEXT_CHARAT_FIRST": "hartu lehenengo letra", + "TEXT_CHARAT_LAST": "hartu azkenengo letra", + "TEXT_CHARAT_RANDOM": "letra aleatorioa lortu", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "testuan", + "TEXT_PRINT_TITLE": "inprimatu %1", + "TEXT_PRINT_TOOLTIP": "zehaztutako testua, zenbakia edo bestelako balioa inprimatzen du.", + "TEXT_REVERSE_MESSAGE0": "%1(e)ri buelta eman", + "LISTS_CREATE_EMPTY_TITLE": "sortu zerrenda hutsa", + "LISTS_CREATE_EMPTY_TOOLTIP": "Zerrenda bat itzultzen du, 0 luzera duena, daturik gabekoa", + "LISTS_CREATE_WITH_INPUT_WITH": "Zerrenda sortu hurrengoarekin", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "zerrenda", + "LISTS_LENGTH_TITLE": "zerrendaren luzera", + "LISTS_LENGTH_TOOLTIP": "zerrendaren luzera itzultzen du", + "LISTS_ISEMPTY_TITLE": "%1 hutsik dago", + "LISTS_ISEMPTY_TOOLTIP": "egia itzultzen du zerrenda hutsik badago.", + "LISTS_INLIST": "zerrendan", + "LISTS_GET_INDEX_GET": "lortu", + "LISTS_GET_INDEX_GET_REMOVE": "lortu eta kendu", + "LISTS_GET_INDEX_REMOVE": "kendu", + "LISTS_GET_INDEX_FIRST": "lehena", + "LISTS_GET_INDEX_LAST": "azkena", + "LISTS_GET_INDEX_RANDOM": "ausazkoa", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 lehenengo artikulua da.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 azken artikulua da.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Artikulua zerrendako posizio zehatz batera bueltatzen du.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Lehenengo artikulua zerrendara bueltatzen du.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Azken artikulua zerrendara bueltatzen du.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Artikulu aleatorioa zerrendara bueltatzen du.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Lehenengo artikulua zerrendako posizio zehatz batera kentzen eta bueltatzen du.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Zerrendako azken artikulua kentzen eta bueltatzen du.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Artikulu aleatorio bat zerrendatik kentzen eta bueltatzen du.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Artikulua zerrendako posizio zehatz batetik kentzen du.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Lehenengo artikulua zerrendatik kentzen du.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Azken artikulua zerrendatik kentzen du.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Artikulu aleatorioa zerrendatik kentzen du.", + "LISTS_SET_INDEX_SET": "ezarri", + "LISTS_SET_INDEX_INPUT_TO": "honela", + "LISTS_SORT_ORDER_ASCENDING": "goranzkoa", + "LISTS_SORT_ORDER_DESCENDING": "beheranzkoa", + "LISTS_SORT_TYPE_NUMERIC": "Zenbakizkoa", + "LISTS_SORT_TYPE_TEXT": "Alfabetikoki", + "LISTS_SPLIT_LIST_FROM_TEXT": "Testuatik lista sortu", + "LISTS_SPLIT_TEXT_FROM_LIST": "listatik testua sortu", + "PROCEDURES_DEFNORETURN_TITLE": "honi", + "PROCEDURES_DEFNORETURN_PROCEDURE": "egin zerbait", + "PROCEDURES_BEFORE_PARAMS": "honekin", + "PROCEDURES_CALL_BEFORE_PARAMS": "honekin", + "PROCEDURES_DEFRETURN_RETURN": "itzuli", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Abisua: Funtzio honek parametro bikoiztuak dauzka.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Azpierrutina", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Azpierrutina", + "PROCEDURES_MUTATORCONTAINER_TITLE": "sarrerak", + "PROCEDURES_MUTATORARG_TITLE": "sarreraren izena:", + "PROCEDURES_CREATE_DO": "'%1' sortu", + "PROCEDURES_IFRETURN_TOOLTIP": "Balioa egiazkoa bada, orduan itzuli bigarren baliora.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Esan zerbait...", + "DIALOG_OK": "Ados", + "DIALOG_CANCEL": "Utzi" +} diff --git a/msg/json/fa.json b/msg/json/fa.json index 75bc968241d..6bed03d3d9c 100644 --- a/msg/json/fa.json +++ b/msg/json/fa.json @@ -1,343 +1,343 @@ -{ - "@metadata": { - "authors": [ - "Ajeje Brazorf", - "Alirezaaa", - "Arash.pt", - "AzorAhai", - "Dalba", - "Darafsh", - "Ebraminio", - "Hamisun", - "Hossein.safavi", - "Mehran", - "MohandesWiki", - "Nhzandi", - "Reza1615", - "Sunfyre" - ] - }, - "VARIABLES_DEFAULT_NAME": "مورد", - "UNNAMED_KEY": "بدون نام", - "TODAY": "امروز", - "DUPLICATE_BLOCK": "تکراری", - "ADD_COMMENT": "افزودن نظر", - "REMOVE_COMMENT": "حذف نظر", - "DUPLICATE_COMMENT": "دیدگاه تکراری", - "EXTERNAL_INPUTS": "ورودی‌های خارجی", - "INLINE_INPUTS": "ورودی‌های درون خطی", - "DELETE_BLOCK": "حذف بلوک", - "DELETE_X_BLOCKS": "حذف بلوک‌های %1", - "DELETE_ALL_BLOCKS": "حذف همهٔ بلاک‌های %1؟", - "CLEAN_UP": "تمیز کردن بلوک‌ها", - "COLLAPSE_BLOCK": "فروپاشی بلوک", - "COLLAPSE_ALL": "فروپاشی بلوک‌ها", - "EXPAND_BLOCK": "گسترش بلوک", - "EXPAND_ALL": "گسترش بلوک‌ها", - "DISABLE_BLOCK": "غیرفعال‌سازی بلوک", - "ENABLE_BLOCK": "فعال‌سازی بلوک", - "HELP": "راهنما", - "UNDO": "واگردانی", - "REDO": "انجام دوباره", - "CHANGE_VALUE_TITLE": "تغییر مقدار:", - "RENAME_VARIABLE": "تغییر نام متغیر...", - "RENAME_VARIABLE_TITLE": "تغییر نام همهٔ متغیرهای «%1» به:", - "NEW_VARIABLE": "ایجاد متغیر...", - "NEW_STRING_VARIABLE": "ساخت متغیر رشته...", - "NEW_NUMBER_VARIABLE": "ساخت متغیر عددی...", - "NEW_COLOUR_VARIABLE": "ساخت متغیر رنگ...", - "NEW_VARIABLE_TYPE_TITLE": "نوع متغیر جدید:", - "NEW_VARIABLE_TITLE": "نام متغیر تازه:", - "VARIABLE_ALREADY_EXISTS": "متغیری با نام '%1' هم اکنون وجود دارد", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "در حال حاضر یک متغیر با نام '%1' برای متغیر دیگری از نوع '%2' وجود دارد.", - "DELETE_VARIABLE_CONFIRMATION": "تعداد %1 استفاده از متغیر '%2' پاک شود؟", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "متغیر '%1' را نمی‌توان پاک کرد، زیرا جزیی از تعریف تابع '%2' می‌باشد", - "DELETE_VARIABLE": "متغیر '%1'را پاک کنید", - "COLOUR_PICKER_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF", - "COLOUR_PICKER_TOOLTIP": "انتخاب یک رنگ از تخته‌رنگ.", - "COLOUR_RANDOM_TITLE": "رنگ تصادفی", - "COLOUR_RANDOM_TOOLTIP": "انتخاب یک رنگ به شکل تصادفی.", - "COLOUR_RGB_TITLE": "رنگ با", - "COLOUR_RGB_RED": "قرمز", - "COLOUR_RGB_GREEN": "سبز", - "COLOUR_RGB_BLUE": "آبی", - "COLOUR_RGB_TOOLTIP": "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند.", - "COLOUR_BLEND_TITLE": "مخلوط", - "COLOUR_BLEND_COLOUR1": "رنگ ۱", - "COLOUR_BLEND_COLOUR2": "رنگ ۲", - "COLOUR_BLEND_RATIO": "نسبت", - "COLOUR_BLEND_TOOLTIP": "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)", - "CONTROLS_REPEAT_HELPURL": "https://fa.wikipedia.org/wiki/حلقه_فور", - "CONTROLS_REPEAT_TITLE": "%1 بار تکرار", - "CONTROLS_REPEAT_INPUT_DO": "انجام", - "CONTROLS_REPEAT_TOOLTIP": "انجام چند عبارت چندین بار.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تکرار در حالی که", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تکرار تا زمانی که", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده.", - "CONTROLS_FOR_TOOLTIP": "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد.", - "CONTROLS_FOR_TITLE": "با تعداد %1 از %2 به %3 با گام‌های %4", - "CONTROLS_FOREACH_TITLE": "برای هر مورد %1 در فهرست %2", - "CONTROLS_FOREACH_TOOLTIP": "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "خروج از حلقه", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ادامه با تکرار بعدی حلقه", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "شکستن حلقهٔ شامل.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود.", - "CONTROLS_IF_TOOLTIP_1": "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده.", - "CONTROLS_IF_TOOLTIP_2": "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده.", - "CONTROLS_IF_TOOLTIP_3": "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده.", - "CONTROLS_IF_TOOLTIP_4": "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده.", - "CONTROLS_IF_MSG_IF": "اگر", - "CONTROLS_IF_MSG_ELSEIF": "درغیر اینصورت اگر", - "CONTROLS_IF_MSG_ELSE": "درغیر اینصورت", - "CONTROLS_IF_IF_TOOLTIP": "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "افزودن یک شرط به بلوک اگر.", - "CONTROLS_IF_ELSE_TOOLTIP": "اضافه کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر.", - "LOGIC_COMPARE_HELPURL": "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C", - "LOGIC_COMPARE_TOOLTIP_EQ": "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند.", - "LOGIC_COMPARE_TOOLTIP_LT": "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد.", - "LOGIC_COMPARE_TOOLTIP_LTE": "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد.", - "LOGIC_COMPARE_TOOLTIP_GT": "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد.", - "LOGIC_COMPARE_TOOLTIP_GTE": "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد.", - "LOGIC_OPERATION_TOOLTIP_AND": "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد.", - "LOGIC_OPERATION_AND": "و", - "LOGIC_OPERATION_TOOLTIP_OR": "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد.", - "LOGIC_OPERATION_OR": "یا", - "LOGIC_NEGATE_TITLE": "نه %1", - "LOGIC_NEGATE_TOOLTIP": "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد.", - "LOGIC_BOOLEAN_TRUE": "صحیح", - "LOGIC_BOOLEAN_FALSE": "ناصحیح", - "LOGIC_BOOLEAN_TOOLTIP": "بازگرداندن یکی از صحیح یا ناصحیح.", - "LOGIC_NULL": "تهی", - "LOGIC_NULL_TOOLTIP": "تهی بازمی‌گرداند.", - "LOGIC_TERNARY_CONDITION": "آزمایش", - "LOGIC_TERNARY_IF_TRUE": "اگر صحیح", - "LOGIC_TERNARY_IF_FALSE": "اگر ناصحیح", - "LOGIC_TERNARY_TOOLTIP": "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را.", - "MATH_NUMBER_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF", - "MATH_NUMBER_TOOLTIP": "یک عدد.", - "MATH_ARITHMETIC_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8", - "MATH_ARITHMETIC_TOOLTIP_ADD": "بازگرداندن مقدار جمع دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "بازگرداندن تفاوت دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "بازگرداندن حاصلضرب دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "بازگرداندن باقی‌ماندهٔ دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد.", - "MATH_SINGLE_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85", - "MATH_SINGLE_OP_ROOT": "ریشهٔ دوم", - "MATH_SINGLE_TOOLTIP_ROOT": "ریشهٔ دوم یک عدد را باز می‌گرداند.", - "MATH_SINGLE_OP_ABSOLUTE": "مطلق", - "MATH_SINGLE_TOOLTIP_ABS": "قدر مطلق یک عدد را بازمی‌گرداند.", - "MATH_SINGLE_TOOLTIP_NEG": "منفی‌شدهٔ یک عدد را باز می‌گرداند.", - "MATH_SINGLE_TOOLTIP_LN": "لوگاریتم طبیعی یک عدد را باز می‌گرداند.", - "MATH_SINGLE_TOOLTIP_LOG10": "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد.", - "MATH_SINGLE_TOOLTIP_EXP": "بازگرداندن توان e یک عدد.", - "MATH_SINGLE_TOOLTIP_POW10": "بازگرداندن توان ۱۰ یک عدد.", - "MATH_TRIG_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C", - "MATH_TRIG_TOOLTIP_SIN": "بازگرداندن سینوس یک زاویه به درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_COS": "بازگرداندن کسینوس یک زاویه درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_TAN": "بازگرداندن تانژانت یک زاویه به درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_ASIN": "بازگرداندن آرک‌سینوس درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_ACOS": "بازگرداندن آرک‌کسینوس درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_ATAN": "بازگرداندن آرک‌تانژانت درجه (نه رادیان).", - "MATH_CONSTANT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C", - "MATH_CONSTANT_TOOLTIP": "یکی از مقادیر ثابت جهانی را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت).", - "MATH_IS_EVEN": "زوج است", - "MATH_IS_ODD": "فرد است", - "MATH_IS_PRIME": "عدد اول است", - "MATH_IS_WHOLE": "کامل است", - "MATH_IS_POSITIVE": "مثبت است", - "MATH_IS_NEGATIVE": "منفی است", - "MATH_IS_DIVISIBLE_BY": "تقسیم شده بر", - "MATH_IS_TOOLTIP": "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند.", - "MATH_CHANGE_HELPURL": "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87", - "MATH_CHANGE_TITLE": "تغییر %1 با %2", - "MATH_CHANGE_TOOLTIP": "افزودن یک عدد به متغیر '%1'.", - "MATH_ROUND_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", - "MATH_ROUND_TOOLTIP": "گردکردن یک عدد به بالا یا پایین.", - "MATH_ROUND_OPERATOR_ROUND": "گردکردن", - "MATH_ROUND_OPERATOR_ROUNDUP": "گرد به بالا", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "گرد به پایین", - "MATH_ONLIST_OPERATOR_SUM": "جمع فهرست", - "MATH_ONLIST_TOOLTIP_SUM": "جمع همهٔ عددهای فهرست را باز می‌گرداند.", - "MATH_ONLIST_OPERATOR_MIN": "کوچک‌ترین عدد در فهرست", - "MATH_ONLIST_TOOLTIP_MIN": "کوچک‌ترین عدد در فهرست را باز می‌گرداند.", - "MATH_ONLIST_OPERATOR_MAX": "بزرگ‌ترین عدد در فهرست", - "MATH_ONLIST_TOOLTIP_MAX": "بزرگ‌ترین عدد در فهرست را باز می‌گرداند.", - "MATH_ONLIST_OPERATOR_AVERAGE": "میانگین فهرست", - "MATH_ONLIST_TOOLTIP_AVERAGE": "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_MEDIAN": "میانهٔ فهرست", - "MATH_ONLIST_TOOLTIP_MEDIAN": "میانهٔ عدد در فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_MODE": "مد فهرست", - "MATH_ONLIST_TOOLTIP_MODE": "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_STD_DEV": "انحراف معیار فهرست", - "MATH_ONLIST_TOOLTIP_STD_DEV": "انحراف معیار فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_RANDOM": "مورد تصادفی از فهرست", - "MATH_ONLIST_TOOLTIP_RANDOM": "موردی تصادفی از فهرست را بر می‌گرداند.", - "MATH_MODULO_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87", - "MATH_MODULO_TITLE": "باقی‌ماندهٔ %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند.", - "MATH_CONSTRAIN_TITLE": "محدودکردن %1 پایین %2 بالا %3", - "MATH_CONSTRAIN_TOOLTIP": "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته).", - "MATH_RANDOM_INT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C", - "MATH_RANDOM_INT_TITLE": "عدد صحیح تصادفی بین %1 تا %2", - "MATH_RANDOM_INT_TOOLTIP": "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند.", - "MATH_RANDOM_FLOAT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "کسر تصادفی", - "MATH_RANDOM_FLOAT_TOOLTIP": "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "TEXT_TEXT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", - "TEXT_TEXT_TOOLTIP": "یک حرف، کلمه یا خطی از متن.", - "TEXT_JOIN_TITLE_CREATEWITH": "ایجاد متن با", - "TEXT_JOIN_TOOLTIP": "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "عضویت", - "TEXT_CREATE_JOIN_TOOLTIP": "اضافه کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "افزودن یک مورد به متن.", - "TEXT_APPEND_TITLE": "به %1 الحاق متن %2", - "TEXT_APPEND_TOOLTIP": "الحاق متنی به متغیر «%1».", - "TEXT_LENGTH_TITLE": "طول %1", - "TEXT_LENGTH_TOOLTIP": "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده.", - "TEXT_ISEMPTY_TITLE": "%1 خالی است", - "TEXT_ISEMPTY_TOOLTIP": "اضافه کردن صحیح اگر متن فراهم‌شده خالی است.", - "TEXT_INDEXOF_TOOLTIP": "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند.", - "TEXT_INDEXOF_TITLE": "در متن %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "اولین رخداد متن را بیاب", - "TEXT_INDEXOF_OPERATOR_LAST": "آخرین رخداد متن را بیاب", - "TEXT_CHARAT_TITLE": "در متن %1 %2", - "TEXT_CHARAT_FROM_START": "گرفتن حرف #", - "TEXT_CHARAT_FROM_END": "گرفتن حرف # از آخر", - "TEXT_CHARAT_FIRST": "گرفتن اولین حرف", - "TEXT_CHARAT_LAST": "گرفتن آخرین حرف", - "TEXT_CHARAT_RANDOM": "گرفتن حرف تصادفی", - "TEXT_CHARAT_TOOLTIP": "حرفی در موقعیت مشخص‌شده بر می‌گرداند.", - "TEXT_GET_SUBSTRING_TOOLTIP": "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "در متن", - "TEXT_GET_SUBSTRING_START_FROM_START": "گرفتن زیرمتن از حرف #", - "TEXT_GET_SUBSTRING_START_FROM_END": "گرفتن زیرمتن از حرف # به انتها", - "TEXT_GET_SUBSTRING_START_FIRST": "گرفتن زیرمتن از اولین حرف", - "TEXT_GET_SUBSTRING_END_FROM_START": "به حرف #", - "TEXT_GET_SUBSTRING_END_FROM_END": "به حرف # از انتها", - "TEXT_GET_SUBSTRING_END_LAST": "به آخرین حرف", - "TEXT_CHANGECASE_TOOLTIP": "بازگرداندن کپی متن در حالتی متفاوت.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "به حروف بزرگ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "به حروف کوچک", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "به حروف بزرگ عنوان", - "TEXT_TRIM_TOOLTIP": "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند.", - "TEXT_TRIM_OPERATOR_BOTH": "تراشیدن فاصله‌ها از هر دو طرف", - "TEXT_TRIM_OPERATOR_LEFT": "تراشیدن فاصله‌ها از طرف چپ", - "TEXT_TRIM_OPERATOR_RIGHT": "تراشیدن فاصله‌ها از طرف چپ", - "TEXT_PRINT_TITLE": "چاپ %1", - "TEXT_PRINT_TOOLTIP": "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده.", - "TEXT_PROMPT_TYPE_TEXT": "اعلان برای متن با پیام", - "TEXT_PROMPT_TYPE_NUMBER": "اعلان برای عدد با پیام", - "TEXT_PROMPT_TOOLTIP_NUMBER": "اعلان برای کاربر با یک عدد.", - "TEXT_PROMPT_TOOLTIP_TEXT": "اعلان برای کاربر برای یک متن.", - "TEXT_COUNT_MESSAGE0": "تعداد %1 را در %2 بشمار", - "TEXT_COUNT_TOOLTIP": "تعداد دفعاتی که یک متن درون یک متن دیگر تکرار شده است را برمی‌گرداند", - "TEXT_REPLACE_MESSAGE0": "درون %3، متن %1 را با %2 جایگزین کن", - "TEXT_REPLACE_TOOLTIP": "جایگزین کردن تمام مواردی که از متنی درون متن دیگر وجود دارد", - "TEXT_REVERSE_MESSAGE0": "معکوس %1", - "TEXT_REVERSE_TOOLTIP": "چینش کاراکترها درون متن را برعکس می‌کند", - "LISTS_CREATE_EMPTY_TITLE": "ایجاد فهرست خالی", - "LISTS_CREATE_EMPTY_TOOLTIP": "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند.", - "LISTS_CREATE_WITH_TOOLTIP": "فهرستی از هر عددی از موارد می‌سازد.", - "LISTS_CREATE_WITH_INPUT_WITH": "ایجاد فهرست با", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "فهرست", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "اضافه کردن، حذف کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "اضافه کردن یک مورد به فهرست.", - "LISTS_REPEAT_TOOLTIP": "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد.", - "LISTS_REPEAT_TITLE": "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد", - "LISTS_LENGTH_TITLE": "طول %1", - "LISTS_LENGTH_TOOLTIP": "طول یک فهرست را برمی‌گرداند.", - "LISTS_ISEMPTY_TITLE": "%1 خالی است", - "LISTS_ISEMPTY_TOOLTIP": "اگر فهرست خالی است مقدار صجیج بر می‌گرداند.", - "LISTS_INLIST": "در فهرست", - "LISTS_INDEX_OF_FIRST": "یافتن اولین رخ‌داد مورد", - "LISTS_INDEX_OF_LAST": "یافتن آخرین رخ‌داد مورد", - "LISTS_INDEX_OF_TOOLTIP": "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود.", - "LISTS_GET_INDEX_GET": "گرفتن", - "LISTS_GET_INDEX_GET_REMOVE": "گرفتن و حذف‌کردن", - "LISTS_GET_INDEX_REMOVE": "حذف‌کردن", - "LISTS_GET_INDEX_FROM_END": "# از انتها", - "LISTS_GET_INDEX_FIRST": "اولین", - "LISTS_GET_INDEX_LAST": "آخرین", - "LISTS_GET_INDEX_RANDOM": "تصادفی", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 اولین مورد است.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 آخرین مورد است.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "موردی در محل مشخص‌شده بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "اولین مورد یک فهرست را بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "آخرین مورد در یک فهرست را بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "یک مورد تصادفی در یک فهرست بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "اولین مورد را در یک فهرست حذف می‌کند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "آخرین مورد را در یک فهرست حذف می‌کند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "یک مورد تصادفی را یک فهرست حذف می‌کند.", - "LISTS_SET_INDEX_SET": "اعمال", - "LISTS_SET_INDEX_INSERT": "درج در", - "LISTS_SET_INDEX_INPUT_TO": "به عنوان", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "مورد مشخص‌شده در یک فهرست را قرار می‌دهد.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "اولین مورد در یک فهرست را تعیین می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "آخرین مورد در یک فهرست را تعیین می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "یک مورد تصادفی در یک فهرست را تعیین می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "موردی به ته فهرست اضافه می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "موردی به ته فهرست الحاق می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "مورد را به صورت تصادفی در یک فهرست می‌افزاید.", - "LISTS_GET_SUBLIST_START_FROM_START": "گرفتن زیرمجموعه‌ای از #", - "LISTS_GET_SUBLIST_START_FROM_END": "گرفتن زیرمجموعه‌ای از # از انتها", - "LISTS_GET_SUBLIST_START_FIRST": "گرفتن زیرمجموعه‌ای از ابتدا", - "LISTS_GET_SUBLIST_END_FROM_START": "به #", - "LISTS_GET_SUBLIST_END_FROM_END": "به # از انتها", - "LISTS_GET_SUBLIST_END_LAST": "به آخرین", - "LISTS_GET_SUBLIST_TOOLTIP": "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "مرتب‌سازی%1 %2 %3", - "LISTS_SORT_TOOLTIP": "یک کپی از لیست را مرتب کنید.", - "LISTS_SORT_ORDER_ASCENDING": "صعودی", - "LISTS_SORT_ORDER_DESCENDING": "نزولی", - "LISTS_SORT_TYPE_NUMERIC": "عددی", - "LISTS_SORT_TYPE_TEXT": "حروفی ، الفبایی", - "LISTS_SORT_TYPE_IGNORECASE": "حروفی ، رد کردن مورد", - "LISTS_SPLIT_LIST_FROM_TEXT": "ایجاد فهرست از متن", - "LISTS_SPLIT_TEXT_FROM_LIST": "ایجاد متن از فهرست", - "LISTS_SPLIT_WITH_DELIMITER": "همراه جداساز", - "LISTS_SPLIT_TOOLTIP_SPLIT": "شکستن متن به فهرستی از متن‌ها، شکستن در محل جداکننده", - "LISTS_SPLIT_TOOLTIP_JOIN": "چسباندن یک فهرست از متن‌ها و تشکیل یک متن که با یک جداکننده جدا شده‌اند", - "LISTS_REVERSE_MESSAGE0": "معکوس %1", - "LISTS_REVERSE_TOOLTIP": "یک کپی از لیست را معکوس کنید.", - "VARIABLES_GET_TOOLTIP": "مقدار این متغیر را بر می‌گرداند.", - "VARIABLES_GET_CREATE_SET": "درست‌کردن «تنظیم %1»", - "VARIABLES_SET": "مجموعه %1 به %2", - "VARIABLES_SET_TOOLTIP": "متغیر برابر با خروجی را مشخص می‌کند.", - "VARIABLES_SET_CREATE_GET": "درست‌کردن «گرفتن %1»", - "PROCEDURES_DEFNORETURN_TITLE": "به", - "PROCEDURES_DEFNORETURN_PROCEDURE": "انجام چیزی", - "PROCEDURES_BEFORE_PARAMS": "با:", - "PROCEDURES_CALL_BEFORE_PARAMS": "با:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "تابعی می‌سازد بدون هیچ خروجی.", - "PROCEDURES_DEFNORETURN_COMMENT": "توصیف این عملکرد...", - "PROCEDURES_DEFRETURN_RETURN": "بازگشت", - "PROCEDURES_DEFRETURN_TOOLTIP": "تابعی با یک خروجی می‌سازد.", - "PROCEDURES_ALLOW_STATEMENTS": "اجازه اظهارات", - "PROCEDURES_DEF_DUPLICATE_WARNING": "اخطار: این تابعی پارامتر تکراری دارد.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_(%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87)", - "PROCEDURES_CALLNORETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1».", - "PROCEDURES_CALLRETURN_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", - "PROCEDURES_CALLRETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "ورودی‌ها", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع.", - "PROCEDURES_MUTATORARG_TITLE": "نام ورودی:", - "PROCEDURES_MUTATORARG_TOOLTIP": "اضافه کردن ورودی به تابع.", - "PROCEDURES_HIGHLIGHT_DEF": "برجسته‌سازی تعریف تابع", - "PROCEDURES_CREATE_DO": "ساختن «%1»", - "PROCEDURES_IFRETURN_TOOLTIP": "اگر یک مقدار صحیح است، مقدار دوم را برگردان.", - "PROCEDURES_IFRETURN_WARNING": "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "یک چیزی بگو...", - "DIALOG_OK": "تأیید", - "DIALOG_CANCEL": "لغو" -} +{ + "@metadata": { + "authors": [ + "Ajeje Brazorf", + "Alirezaaa", + "Arash.pt", + "AzorAhai", + "Dalba", + "Darafsh", + "Ebraminio", + "Hamisun", + "Hossein.safavi", + "Mehran", + "MohandesWiki", + "Nhzandi", + "Reza1615", + "Sunfyre" + ] + }, + "VARIABLES_DEFAULT_NAME": "مورد", + "UNNAMED_KEY": "بدون نام", + "TODAY": "امروز", + "DUPLICATE_BLOCK": "تکراری", + "ADD_COMMENT": "افزودن نظر", + "REMOVE_COMMENT": "حذف نظر", + "DUPLICATE_COMMENT": "دیدگاه تکراری", + "EXTERNAL_INPUTS": "ورودی‌های خارجی", + "INLINE_INPUTS": "ورودی‌های درون خطی", + "DELETE_BLOCK": "حذف بلوک", + "DELETE_X_BLOCKS": "حذف بلوک‌های %1", + "DELETE_ALL_BLOCKS": "حذف همهٔ بلاک‌های %1؟", + "CLEAN_UP": "تمیز کردن بلوک‌ها", + "COLLAPSE_BLOCK": "فروپاشی بلوک", + "COLLAPSE_ALL": "فروپاشی بلوک‌ها", + "EXPAND_BLOCK": "گسترش بلوک", + "EXPAND_ALL": "گسترش بلوک‌ها", + "DISABLE_BLOCK": "غیرفعال‌سازی بلوک", + "ENABLE_BLOCK": "فعال‌سازی بلوک", + "HELP": "راهنما", + "UNDO": "واگردانی", + "REDO": "انجام دوباره", + "CHANGE_VALUE_TITLE": "تغییر مقدار:", + "RENAME_VARIABLE": "تغییر نام متغیر...", + "RENAME_VARIABLE_TITLE": "تغییر نام همهٔ متغیرهای «%1» به:", + "NEW_VARIABLE": "ایجاد متغیر...", + "NEW_STRING_VARIABLE": "ساخت متغیر رشته...", + "NEW_NUMBER_VARIABLE": "ساخت متغیر عددی...", + "NEW_COLOUR_VARIABLE": "ساخت متغیر رنگ...", + "NEW_VARIABLE_TYPE_TITLE": "نوع متغیر جدید:", + "NEW_VARIABLE_TITLE": "نام متغیر تازه:", + "VARIABLE_ALREADY_EXISTS": "متغیری با نام '%1' هم اکنون وجود دارد", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "در حال حاضر یک متغیر با نام '%1' برای متغیر دیگری از نوع '%2' وجود دارد.", + "DELETE_VARIABLE_CONFIRMATION": "تعداد %1 استفاده از متغیر '%2' پاک شود؟", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "متغیر '%1' را نمی‌توان پاک کرد، زیرا جزیی از تعریف تابع '%2' می‌باشد", + "DELETE_VARIABLE": "متغیر '%1'را پاک کنید", + "COLOUR_PICKER_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%86%DA%AF", + "COLOUR_PICKER_TOOLTIP": "انتخاب یک رنگ از تخته‌رنگ.", + "COLOUR_RANDOM_TITLE": "رنگ تصادفی", + "COLOUR_RANDOM_TOOLTIP": "انتخاب یک رنگ به شکل تصادفی.", + "COLOUR_RGB_TITLE": "رنگ با", + "COLOUR_RGB_RED": "قرمز", + "COLOUR_RGB_GREEN": "سبز", + "COLOUR_RGB_BLUE": "آبی", + "COLOUR_RGB_TOOLTIP": "ساخت یک رنگ با مقدار مشخص‌شده‌ای از قرمز، سبز و آبی. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند.", + "COLOUR_BLEND_TITLE": "مخلوط", + "COLOUR_BLEND_COLOUR1": "رنگ ۱", + "COLOUR_BLEND_COLOUR2": "رنگ ۲", + "COLOUR_BLEND_RATIO": "نسبت", + "COLOUR_BLEND_TOOLTIP": "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)", + "CONTROLS_REPEAT_HELPURL": "https://fa.wikipedia.org/wiki/حلقه_فور", + "CONTROLS_REPEAT_TITLE": "%1 بار تکرار", + "CONTROLS_REPEAT_INPUT_DO": "انجام", + "CONTROLS_REPEAT_TOOLTIP": "انجام چند عبارت چندین بار.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تکرار در حالی که", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تکرار تا زمانی که", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده.", + "CONTROLS_FOR_TOOLTIP": "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد.", + "CONTROLS_FOR_TITLE": "با تعداد %1 از %2 به %3 با گام‌های %4", + "CONTROLS_FOREACH_TITLE": "برای هر مورد %1 در فهرست %2", + "CONTROLS_FOREACH_TOOLTIP": "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "خروج از حلقه", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ادامه با تکرار بعدی حلقه", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "شکستن حلقهٔ شامل.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود.", + "CONTROLS_IF_TOOLTIP_1": "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده.", + "CONTROLS_IF_TOOLTIP_2": "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده.", + "CONTROLS_IF_TOOLTIP_3": "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده.", + "CONTROLS_IF_TOOLTIP_4": "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده.", + "CONTROLS_IF_MSG_IF": "اگر", + "CONTROLS_IF_MSG_ELSEIF": "درغیر اینصورت اگر", + "CONTROLS_IF_MSG_ELSE": "درغیر اینصورت", + "CONTROLS_IF_IF_TOOLTIP": "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "افزودن یک شرط به بلوک اگر.", + "CONTROLS_IF_ELSE_TOOLTIP": "اضافه کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر.", + "LOGIC_COMPARE_HELPURL": "https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C", + "LOGIC_COMPARE_TOOLTIP_EQ": "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند.", + "LOGIC_COMPARE_TOOLTIP_LT": "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد.", + "LOGIC_COMPARE_TOOLTIP_LTE": "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد.", + "LOGIC_COMPARE_TOOLTIP_GT": "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد.", + "LOGIC_COMPARE_TOOLTIP_GTE": "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد.", + "LOGIC_OPERATION_TOOLTIP_AND": "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد.", + "LOGIC_OPERATION_AND": "و", + "LOGIC_OPERATION_TOOLTIP_OR": "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد.", + "LOGIC_OPERATION_OR": "یا", + "LOGIC_NEGATE_TITLE": "نه %1", + "LOGIC_NEGATE_TOOLTIP": "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد.", + "LOGIC_BOOLEAN_TRUE": "صحیح", + "LOGIC_BOOLEAN_FALSE": "ناصحیح", + "LOGIC_BOOLEAN_TOOLTIP": "بازگرداندن یکی از صحیح یا ناصحیح.", + "LOGIC_NULL": "تهی", + "LOGIC_NULL_TOOLTIP": "تهی بازمی‌گرداند.", + "LOGIC_TERNARY_CONDITION": "آزمایش", + "LOGIC_TERNARY_IF_TRUE": "اگر صحیح", + "LOGIC_TERNARY_IF_FALSE": "اگر ناصحیح", + "LOGIC_TERNARY_TOOLTIP": "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را.", + "MATH_NUMBER_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF", + "MATH_NUMBER_TOOLTIP": "یک عدد.", + "MATH_ARITHMETIC_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%D8%A7%D8%A8", + "MATH_ARITHMETIC_TOOLTIP_ADD": "بازگرداندن مقدار جمع دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "بازگرداندن تفاوت دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "بازگرداندن حاصلضرب دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "بازگرداندن باقی‌ماندهٔ دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد.", + "MATH_SINGLE_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85", + "MATH_SINGLE_OP_ROOT": "ریشهٔ دوم", + "MATH_SINGLE_TOOLTIP_ROOT": "ریشهٔ دوم یک عدد را باز می‌گرداند.", + "MATH_SINGLE_OP_ABSOLUTE": "مطلق", + "MATH_SINGLE_TOOLTIP_ABS": "قدر مطلق یک عدد را بازمی‌گرداند.", + "MATH_SINGLE_TOOLTIP_NEG": "منفی‌شدهٔ یک عدد را باز می‌گرداند.", + "MATH_SINGLE_TOOLTIP_LN": "لوگاریتم طبیعی یک عدد را باز می‌گرداند.", + "MATH_SINGLE_TOOLTIP_LOG10": "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد.", + "MATH_SINGLE_TOOLTIP_EXP": "بازگرداندن توان e یک عدد.", + "MATH_SINGLE_TOOLTIP_POW10": "بازگرداندن توان ۱۰ یک عدد.", + "MATH_TRIG_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D8%A7%D8%A8%D8%B9%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C", + "MATH_TRIG_TOOLTIP_SIN": "بازگرداندن سینوس یک زاویه به درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_COS": "بازگرداندن کسینوس یک زاویه درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_TAN": "بازگرداندن تانژانت یک زاویه به درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_ASIN": "بازگرداندن آرک‌سینوس درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_ACOS": "بازگرداندن آرک‌کسینوس درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_ATAN": "بازگرداندن آرک‌تانژانت درجه (نه رادیان).", + "MATH_CONSTANT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C", + "MATH_CONSTANT_TOOLTIP": "یکی از مقادیر ثابت جهانی را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت).", + "MATH_IS_EVEN": "زوج است", + "MATH_IS_ODD": "فرد است", + "MATH_IS_PRIME": "عدد اول است", + "MATH_IS_WHOLE": "کامل است", + "MATH_IS_POSITIVE": "مثبت است", + "MATH_IS_NEGATIVE": "منفی است", + "MATH_IS_DIVISIBLE_BY": "تقسیم شده بر", + "MATH_IS_TOOLTIP": "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند.", + "MATH_CHANGE_HELPURL": "https://fa.wikipedia.org/wiki/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C#.D8.A7.D9.81.D8.B2.D8.A7.DB.8C.D8.B4_.D8.B4.D9.85.D8.A7.D8.B1.D9.86.D8.AF.D9.87", + "MATH_CHANGE_TITLE": "تغییر %1 با %2", + "MATH_CHANGE_TOOLTIP": "افزودن یک عدد به متغیر '%1'.", + "MATH_ROUND_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", + "MATH_ROUND_TOOLTIP": "گردکردن یک عدد به بالا یا پایین.", + "MATH_ROUND_OPERATOR_ROUND": "گردکردن", + "MATH_ROUND_OPERATOR_ROUNDUP": "گرد به بالا", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "گرد به پایین", + "MATH_ONLIST_OPERATOR_SUM": "جمع فهرست", + "MATH_ONLIST_TOOLTIP_SUM": "جمع همهٔ عددهای فهرست را باز می‌گرداند.", + "MATH_ONLIST_OPERATOR_MIN": "کوچک‌ترین عدد در فهرست", + "MATH_ONLIST_TOOLTIP_MIN": "کوچک‌ترین عدد در فهرست را باز می‌گرداند.", + "MATH_ONLIST_OPERATOR_MAX": "بزرگ‌ترین عدد در فهرست", + "MATH_ONLIST_TOOLTIP_MAX": "بزرگ‌ترین عدد در فهرست را باز می‌گرداند.", + "MATH_ONLIST_OPERATOR_AVERAGE": "میانگین فهرست", + "MATH_ONLIST_TOOLTIP_AVERAGE": "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_MEDIAN": "میانهٔ فهرست", + "MATH_ONLIST_TOOLTIP_MEDIAN": "میانهٔ عدد در فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_MODE": "مد فهرست", + "MATH_ONLIST_TOOLTIP_MODE": "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_STD_DEV": "انحراف معیار فهرست", + "MATH_ONLIST_TOOLTIP_STD_DEV": "انحراف معیار فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_RANDOM": "مورد تصادفی از فهرست", + "MATH_ONLIST_TOOLTIP_RANDOM": "موردی تصادفی از فهرست را بر می‌گرداند.", + "MATH_MODULO_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA_%D9%BE%DB%8C%D9%85%D8%A7%D9%86%D9%87", + "MATH_MODULO_TITLE": "باقی‌ماندهٔ %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند.", + "MATH_CONSTRAIN_TITLE": "محدودکردن %1 پایین %2 بالا %3", + "MATH_CONSTRAIN_TOOLTIP": "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته).", + "MATH_RANDOM_INT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C", + "MATH_RANDOM_INT_TITLE": "عدد صحیح تصادفی بین %1 تا %2", + "MATH_RANDOM_INT_TOOLTIP": "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند.", + "MATH_RANDOM_FLOAT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "کسر تصادفی", + "MATH_RANDOM_FLOAT_TOOLTIP": "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "TEXT_TEXT_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D8%B4%D8%AA%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", + "TEXT_TEXT_TOOLTIP": "یک حرف، کلمه یا خطی از متن.", + "TEXT_JOIN_TITLE_CREATEWITH": "ایجاد متن با", + "TEXT_JOIN_TOOLTIP": "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "عضویت", + "TEXT_CREATE_JOIN_TOOLTIP": "اضافه کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "افزودن یک مورد به متن.", + "TEXT_APPEND_TITLE": "به %1 الحاق متن %2", + "TEXT_APPEND_TOOLTIP": "الحاق متنی به متغیر «%1».", + "TEXT_LENGTH_TITLE": "طول %1", + "TEXT_LENGTH_TOOLTIP": "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده.", + "TEXT_ISEMPTY_TITLE": "%1 خالی است", + "TEXT_ISEMPTY_TOOLTIP": "اضافه کردن صحیح اگر متن فراهم‌شده خالی است.", + "TEXT_INDEXOF_TOOLTIP": "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند.", + "TEXT_INDEXOF_TITLE": "در متن %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "اولین رخداد متن را بیاب", + "TEXT_INDEXOF_OPERATOR_LAST": "آخرین رخداد متن را بیاب", + "TEXT_CHARAT_TITLE": "در متن %1 %2", + "TEXT_CHARAT_FROM_START": "گرفتن حرف #", + "TEXT_CHARAT_FROM_END": "گرفتن حرف # از آخر", + "TEXT_CHARAT_FIRST": "گرفتن اولین حرف", + "TEXT_CHARAT_LAST": "گرفتن آخرین حرف", + "TEXT_CHARAT_RANDOM": "گرفتن حرف تصادفی", + "TEXT_CHARAT_TOOLTIP": "حرفی در موقعیت مشخص‌شده بر می‌گرداند.", + "TEXT_GET_SUBSTRING_TOOLTIP": "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "در متن", + "TEXT_GET_SUBSTRING_START_FROM_START": "گرفتن زیرمتن از حرف #", + "TEXT_GET_SUBSTRING_START_FROM_END": "گرفتن زیرمتن از حرف # به انتها", + "TEXT_GET_SUBSTRING_START_FIRST": "گرفتن زیرمتن از اولین حرف", + "TEXT_GET_SUBSTRING_END_FROM_START": "به حرف #", + "TEXT_GET_SUBSTRING_END_FROM_END": "به حرف # از انتها", + "TEXT_GET_SUBSTRING_END_LAST": "به آخرین حرف", + "TEXT_CHANGECASE_TOOLTIP": "بازگرداندن کپی متن در حالتی متفاوت.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "به حروف بزرگ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "به حروف کوچک", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "به حروف بزرگ عنوان", + "TEXT_TRIM_TOOLTIP": "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند.", + "TEXT_TRIM_OPERATOR_BOTH": "تراشیدن فاصله‌ها از هر دو طرف", + "TEXT_TRIM_OPERATOR_LEFT": "تراشیدن فاصله‌ها از طرف چپ", + "TEXT_TRIM_OPERATOR_RIGHT": "تراشیدن فاصله‌ها از طرف چپ", + "TEXT_PRINT_TITLE": "چاپ %1", + "TEXT_PRINT_TOOLTIP": "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده.", + "TEXT_PROMPT_TYPE_TEXT": "اعلان برای متن با پیام", + "TEXT_PROMPT_TYPE_NUMBER": "اعلان برای عدد با پیام", + "TEXT_PROMPT_TOOLTIP_NUMBER": "اعلان برای کاربر با یک عدد.", + "TEXT_PROMPT_TOOLTIP_TEXT": "اعلان برای کاربر برای یک متن.", + "TEXT_COUNT_MESSAGE0": "تعداد %1 را در %2 بشمار", + "TEXT_COUNT_TOOLTIP": "تعداد دفعاتی که یک متن درون یک متن دیگر تکرار شده است را برمی‌گرداند", + "TEXT_REPLACE_MESSAGE0": "درون %3، متن %1 را با %2 جایگزین کن", + "TEXT_REPLACE_TOOLTIP": "جایگزین کردن تمام مواردی که از متنی درون متن دیگر وجود دارد", + "TEXT_REVERSE_MESSAGE0": "معکوس %1", + "TEXT_REVERSE_TOOLTIP": "چینش کاراکترها درون متن را برعکس می‌کند", + "LISTS_CREATE_EMPTY_TITLE": "ایجاد فهرست خالی", + "LISTS_CREATE_EMPTY_TOOLTIP": "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند.", + "LISTS_CREATE_WITH_TOOLTIP": "فهرستی از هر عددی از موارد می‌سازد.", + "LISTS_CREATE_WITH_INPUT_WITH": "ایجاد فهرست با", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "فهرست", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "اضافه کردن، حذف کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "اضافه کردن یک مورد به فهرست.", + "LISTS_REPEAT_TOOLTIP": "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد.", + "LISTS_REPEAT_TITLE": "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد", + "LISTS_LENGTH_TITLE": "طول %1", + "LISTS_LENGTH_TOOLTIP": "طول یک فهرست را برمی‌گرداند.", + "LISTS_ISEMPTY_TITLE": "%1 خالی است", + "LISTS_ISEMPTY_TOOLTIP": "اگر فهرست خالی است مقدار صجیج بر می‌گرداند.", + "LISTS_INLIST": "در فهرست", + "LISTS_INDEX_OF_FIRST": "یافتن اولین رخ‌داد مورد", + "LISTS_INDEX_OF_LAST": "یافتن آخرین رخ‌داد مورد", + "LISTS_INDEX_OF_TOOLTIP": "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود.", + "LISTS_GET_INDEX_GET": "گرفتن", + "LISTS_GET_INDEX_GET_REMOVE": "گرفتن و حذف‌کردن", + "LISTS_GET_INDEX_REMOVE": "حذف‌کردن", + "LISTS_GET_INDEX_FROM_END": "# از انتها", + "LISTS_GET_INDEX_FIRST": "اولین", + "LISTS_GET_INDEX_LAST": "آخرین", + "LISTS_GET_INDEX_RANDOM": "تصادفی", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 اولین مورد است.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 آخرین مورد است.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "موردی در محل مشخص‌شده بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "اولین مورد یک فهرست را بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "آخرین مورد در یک فهرست را بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "یک مورد تصادفی در یک فهرست بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "اولین مورد را در یک فهرست حذف می‌کند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "آخرین مورد را در یک فهرست حذف می‌کند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "یک مورد تصادفی را یک فهرست حذف می‌کند.", + "LISTS_SET_INDEX_SET": "اعمال", + "LISTS_SET_INDEX_INSERT": "درج در", + "LISTS_SET_INDEX_INPUT_TO": "به عنوان", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "مورد مشخص‌شده در یک فهرست را قرار می‌دهد.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "اولین مورد در یک فهرست را تعیین می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "آخرین مورد در یک فهرست را تعیین می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "یک مورد تصادفی در یک فهرست را تعیین می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "موردی به ته فهرست اضافه می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "موردی به ته فهرست الحاق می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "مورد را به صورت تصادفی در یک فهرست می‌افزاید.", + "LISTS_GET_SUBLIST_START_FROM_START": "گرفتن زیرمجموعه‌ای از #", + "LISTS_GET_SUBLIST_START_FROM_END": "گرفتن زیرمجموعه‌ای از # از انتها", + "LISTS_GET_SUBLIST_START_FIRST": "گرفتن زیرمجموعه‌ای از ابتدا", + "LISTS_GET_SUBLIST_END_FROM_START": "به #", + "LISTS_GET_SUBLIST_END_FROM_END": "به # از انتها", + "LISTS_GET_SUBLIST_END_LAST": "به آخرین", + "LISTS_GET_SUBLIST_TOOLTIP": "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "مرتب‌سازی%1 %2 %3", + "LISTS_SORT_TOOLTIP": "یک کپی از لیست را مرتب کنید.", + "LISTS_SORT_ORDER_ASCENDING": "صعودی", + "LISTS_SORT_ORDER_DESCENDING": "نزولی", + "LISTS_SORT_TYPE_NUMERIC": "عددی", + "LISTS_SORT_TYPE_TEXT": "حروفی ، الفبایی", + "LISTS_SORT_TYPE_IGNORECASE": "حروفی ، رد کردن مورد", + "LISTS_SPLIT_LIST_FROM_TEXT": "ایجاد فهرست از متن", + "LISTS_SPLIT_TEXT_FROM_LIST": "ایجاد متن از فهرست", + "LISTS_SPLIT_WITH_DELIMITER": "همراه جداساز", + "LISTS_SPLIT_TOOLTIP_SPLIT": "شکستن متن به فهرستی از متن‌ها، شکستن در محل جداکننده", + "LISTS_SPLIT_TOOLTIP_JOIN": "چسباندن یک فهرست از متن‌ها و تشکیل یک متن که با یک جداکننده جدا شده‌اند", + "LISTS_REVERSE_MESSAGE0": "معکوس %1", + "LISTS_REVERSE_TOOLTIP": "یک کپی از لیست را معکوس کنید.", + "VARIABLES_GET_TOOLTIP": "مقدار این متغیر را بر می‌گرداند.", + "VARIABLES_GET_CREATE_SET": "درست‌کردن «تنظیم %1»", + "VARIABLES_SET": "مجموعه %1 به %2", + "VARIABLES_SET_TOOLTIP": "متغیر برابر با خروجی را مشخص می‌کند.", + "VARIABLES_SET_CREATE_GET": "درست‌کردن «گرفتن %1»", + "PROCEDURES_DEFNORETURN_TITLE": "به", + "PROCEDURES_DEFNORETURN_PROCEDURE": "انجام چیزی", + "PROCEDURES_BEFORE_PARAMS": "با:", + "PROCEDURES_CALL_BEFORE_PARAMS": "با:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "تابعی می‌سازد بدون هیچ خروجی.", + "PROCEDURES_DEFNORETURN_COMMENT": "توصیف این عملکرد...", + "PROCEDURES_DEFRETURN_RETURN": "بازگشت", + "PROCEDURES_DEFRETURN_TOOLTIP": "تابعی با یک خروجی می‌سازد.", + "PROCEDURES_ALLOW_STATEMENTS": "اجازه اظهارات", + "PROCEDURES_DEF_DUPLICATE_WARNING": "اخطار: این تابعی پارامتر تکراری دارد.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_(%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87)", + "PROCEDURES_CALLNORETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1».", + "PROCEDURES_CALLRETURN_HELPURL": "https://fa.wikipedia.org/wiki/%D8%B1%D9%88%DB%8C%D9%87_%28%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87%29", + "PROCEDURES_CALLRETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "ورودی‌ها", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع.", + "PROCEDURES_MUTATORARG_TITLE": "نام ورودی:", + "PROCEDURES_MUTATORARG_TOOLTIP": "اضافه کردن ورودی به تابع.", + "PROCEDURES_HIGHLIGHT_DEF": "برجسته‌سازی تعریف تابع", + "PROCEDURES_CREATE_DO": "ساختن «%1»", + "PROCEDURES_IFRETURN_TOOLTIP": "اگر یک مقدار صحیح است، مقدار دوم را برگردان.", + "PROCEDURES_IFRETURN_WARNING": "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "یک چیزی بگو...", + "DIALOG_OK": "تأیید", + "DIALOG_CANCEL": "لغو" +} diff --git a/msg/json/fi.json b/msg/json/fi.json index 936c6930d15..1dbffaf2145 100644 --- a/msg/json/fi.json +++ b/msg/json/fi.json @@ -1,361 +1,361 @@ -{ - "@metadata": { - "authors": [ - "Actuallyisjoha", - "Espeox", - "Espertus", - "Hopea", - "KK", - "McSalama", - "Mikahama", - "Nike", - "PStudios", - "Pahkiqaz", - "Pettevi", - "Pyscowicz", - "SNuutti", - "Silvonen" - ] - }, - "VARIABLES_DEFAULT_NAME": "kohde", - "UNNAMED_KEY": "nimetön", - "TODAY": "Tänään", - "DUPLICATE_BLOCK": "Kaksoiskappale", - "ADD_COMMENT": "Lisää kommentti", - "REMOVE_COMMENT": "Poista kommentti", - "DUPLICATE_COMMENT": "Kahdenna kommentti", - "EXTERNAL_INPUTS": "Ulkoiset syötteet", - "INLINE_INPUTS": "Tuo syötteet", - "DELETE_BLOCK": "Poista lohko", - "DELETE_X_BLOCKS": "Poista %1 lohkoa", - "DELETE_ALL_BLOCKS": "Poistetaanko kaikki %1 lohkoa?", - "CLEAN_UP": "Siivoa lohkot", - "COLLAPSE_BLOCK": "Sulje lohko", - "COLLAPSE_ALL": "Sulje lohkot", - "EXPAND_BLOCK": "Laajenna lohko", - "EXPAND_ALL": "Laajenna lohkot", - "DISABLE_BLOCK": "Passivoi lohko", - "ENABLE_BLOCK": "Aktivoi lohko", - "HELP": "Apua", - "UNDO": "Kumoa", - "REDO": "Tee uudelleen", - "CHANGE_VALUE_TITLE": "Muuta arvoa:", - "RENAME_VARIABLE": "Nimeä uudelleen muuttuja...", - "RENAME_VARIABLE_TITLE": "Nimeä uudelleen kaikki '%1' muuttujaa:", - "NEW_VARIABLE": "Luo muuttuja...", - "NEW_STRING_VARIABLE": "Luo merkkijonomuuttuja...", - "NEW_NUMBER_VARIABLE": "Luo numeromuuttuja...", - "NEW_COLOUR_VARIABLE": "Luo värimuuttuja...", - "NEW_VARIABLE_TYPE_TITLE": "Uuden muuttujan tyyppi:", - "NEW_VARIABLE_TITLE": "Uuden muuttujan nimi:", - "VARIABLE_ALREADY_EXISTS": "Muuttuja nimeltään '%1' on jo olemassa.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Muuttuja nimeltä '%1' on jo olemassa toiselle tyypille: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Poistetaanko %1 käyttöä muuttujalta '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ei voida poistaa muuttujaa '%1' koska se on osa funktion määritelmää '%2'", - "DELETE_VARIABLE": "Poista muuttuja '%1'", - "COLOUR_PICKER_HELPURL": "https://fi.wikipedia.org/wiki/V%C3%A4ri", - "COLOUR_PICKER_TOOLTIP": "Valitse väri paletista.", - "COLOUR_RANDOM_TITLE": "satunnainen väri", - "COLOUR_RANDOM_TOOLTIP": "Valitse väri sattumanvaraisesti.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "väri, jossa on", - "COLOUR_RGB_RED": "punainen", - "COLOUR_RGB_GREEN": "vihreä", - "COLOUR_RGB_BLUE": "sininen", - "COLOUR_RGB_TOOLTIP": "Luo väri, jossa on tietty määrä punaista, vihreää ja sinistä. Kaikkien arvojen tulee olla välillä 0 - 100.", - "COLOUR_BLEND_TITLE": "sekoitus", - "COLOUR_BLEND_COLOUR1": "väri 1", - "COLOUR_BLEND_COLOUR2": "väri 2", - "COLOUR_BLEND_RATIO": "suhde", - "COLOUR_BLEND_TOOLTIP": "Sekoittaa kaksi väriä keskenään annetussa suhteessa (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "toista %1 kertaa", - "CONTROLS_REPEAT_INPUT_DO": "tee", - "CONTROLS_REPEAT_TOOLTIP": "Suorita joukko lausekkeita useampi kertaa.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "toista niin kauan kuin", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "toista kunnes", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Niin kauan kuin arvo on tosi, suorita joukko lausekkeita.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Niin kauan kuin arvo on epätosi, suorita joukko lausekkeita.", - "CONTROLS_FOR_TOOLTIP": "Aseta muuttujaan \"%1\" arvot alkuarvosta loppuarvoon annetun askeleen välein ja suorita joka askeleella annettu koodilohko.", - "CONTROLS_FOR_TITLE": "laske %1 Väli %2-%3 %4:n välein", - "CONTROLS_FOREACH_TITLE": "kullekin kohteelle %1 listassa %2", - "CONTROLS_FOREACH_TOOLTIP": "Aseta muuttujan %1 arvoksi kukin listan kohde vuorollaan ja suorita joukko lausekkeita.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "poistu silmukasta", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "jatka silmukan seuraavaan toistoon", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Poistu sisemmästä silmukasta.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ohita loput tästä silmukasta ja siirry seuraavaan toistoon.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Varoitus: Tätä lohkoa voi käyttää vain silmukan sisällä.", - "CONTROLS_IF_TOOLTIP_1": "Jos arvo on tosi, suorita lauseke.", - "CONTROLS_IF_TOOLTIP_2": "Jos arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten suorita toinen lohko lausekkeita.", - "CONTROLS_IF_TOOLTIP_3": "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita.", - "CONTROLS_IF_TOOLTIP_4": "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita. Jos mikään arvoista ei ole tosi, suorita viimeinen lohko lausekkeita.", - "CONTROLS_IF_MSG_IF": "jos", - "CONTROLS_IF_MSG_ELSEIF": "muuten jos", - "CONTROLS_IF_MSG_ELSE": "muuten", - "CONTROLS_IF_IF_TOOLTIP": "Lisää, poista tai järjestele osioita tässä \"jos\" lohkossa.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Lisää ehto \"jos\" lohkoon.", - "CONTROLS_IF_ELSE_TOOLTIP": "Lisää lopullinen \"muuten\" lohko \"jos\" lohkoon.", - "LOGIC_COMPARE_HELPURL": "https://fi.wikipedia.org/wiki/Ep%C3%A4yht%C3%A4l%C3%B6", - "LOGIC_COMPARE_TOOLTIP_EQ": "Palauta tosi, jos syötteet ovat keskenään samat.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Palauttaa tosi, jos syötteet eivät ole keskenään samoja.", - "LOGIC_COMPARE_TOOLTIP_LT": "Palauttaa tosi, jos ensimmäinen syöte on pienempi, kuin toinen.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Palauttaa tosi, jos ensimmäinen syöte on pienempi tai yhtä suuri, kuin toinen.", - "LOGIC_COMPARE_TOOLTIP_GT": "Palauttaa tosi, jos ensimmäinen syöte on suurempi, kuin toinen.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Palauttaa tosi, jos ensimmäinen syöte on suurempi tai yhtä suuri, kuin toinen.", - "LOGIC_OPERATION_TOOLTIP_AND": "Palauttaa tosi, jos kummatkin syötteet ovat tosia.", - "LOGIC_OPERATION_AND": "ja", - "LOGIC_OPERATION_TOOLTIP_OR": "Palauttaa tosi, jos ainakin yksi syötteistä on tosi.", - "LOGIC_OPERATION_OR": "tai", - "LOGIC_NEGATE_TITLE": "ei %1", - "LOGIC_NEGATE_TOOLTIP": "Palauttaa tosi, jos syöte on epätosi. Palauttaa epätosi, jos syöte on tosi.", - "LOGIC_BOOLEAN_TRUE": "tosi", - "LOGIC_BOOLEAN_FALSE": "epätosi", - "LOGIC_BOOLEAN_TOOLTIP": "Palauttaa joko tosi tai epätosi.", - "LOGIC_NULL": "ei mitään", - "LOGIC_NULL_TOOLTIP": "Palauttaa \"ei mitään\"-arvon.", - "LOGIC_TERNARY_CONDITION": "testi", - "LOGIC_TERNARY_IF_TRUE": "jos tosi", - "LOGIC_TERNARY_IF_FALSE": "jos epätosi", - "LOGIC_TERNARY_TOOLTIP": "Tarkistaa testin ehdon. Jos ehto on tosi, palauttaa \"jos tosi\" arvon, muuten palauttaa \"jos epätosi\" arvon.", - "MATH_NUMBER_HELPURL": "https://fi.wikipedia.org/wiki/Luku", - "MATH_NUMBER_TOOLTIP": "Luku.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "⋅", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "http://fi.wikipedia.org/wiki/Aritmetiikka", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Palauttaa kahden luvun summan.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Palauttaa kahden luvun erotuksen.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Palauttaa kertolaskun tulon.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Palauttaa jakolaskun osamäärän.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Palauttaa ensimmäisen luvun korotettuna toisen luvun potenssiin.", - "MATH_SINGLE_HELPURL": "https://fi.wikipedia.org/wiki/Neli%C3%B6juuri", - "MATH_SINGLE_OP_ROOT": "neliöjuuri", - "MATH_SINGLE_TOOLTIP_ROOT": "Palauttaa luvun neliöjuuren.", - "MATH_SINGLE_OP_ABSOLUTE": "itseisarvo", - "MATH_SINGLE_TOOLTIP_ABS": "Palauttaa luvun itseisarvon.", - "MATH_SINGLE_TOOLTIP_NEG": "Palauttaa numeron vastaluvun.", - "MATH_SINGLE_TOOLTIP_LN": "Palauttaa luvun luonnollisen logaritmin.", - "MATH_SINGLE_TOOLTIP_LOG10": "Palauttaa luvun kymmenkantaisen logaritmin.", - "MATH_SINGLE_TOOLTIP_EXP": "Palauttaa e potenssiin luku.", - "MATH_SINGLE_TOOLTIP_POW10": "Palauttaa 10 potenssiin luku.", - "MATH_TRIG_HELPURL": "https://fi.wikipedia.org/wiki/Trigonometrinen_funktio", - "MATH_TRIG_TOOLTIP_SIN": "Palauttaa asteluvun (ei radiaanin) sinin.", - "MATH_TRIG_TOOLTIP_COS": "Palauttaa asteluvun (ei radiaanin) kosinin.", - "MATH_TRIG_TOOLTIP_TAN": "Palauttaa asteluvun (ei radiaanin) tangentin.", - "MATH_TRIG_TOOLTIP_ASIN": "Palauttaa luvun arkussinin.", - "MATH_TRIG_TOOLTIP_ACOS": "Palauttaa luvun arkuskosinin.", - "MATH_TRIG_TOOLTIP_ATAN": "Palauttaa luvun arkustangentin.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Palauttaa jonkin seuraavista vakioista: π (3.141…), e (2.718…), φ (1.618…), neliöjuuri(2) (1.414…), neliöjuuri(½) (0.707…), or ∞ (ääretön).", - "MATH_IS_EVEN": "on parillinen", - "MATH_IS_ODD": "on pariton", - "MATH_IS_PRIME": "on alkuluku", - "MATH_IS_WHOLE": "on kokonaisluku", - "MATH_IS_POSITIVE": "on positiivinen", - "MATH_IS_NEGATIVE": "on negatiivinen", - "MATH_IS_DIVISIBLE_BY": "on jaollinen luvulla", - "MATH_IS_TOOLTIP": "Tarkistaa onko numero parillinen, pariton, alkuluku, kokonaisluku, positiivinen, negatiivinen, tai jos se on jaollinen toisella luvulla. Palauttaa tosi tai epätosi.", - "MATH_CHANGE_HELPURL": "https://fi.wikipedia.org/wiki/Yhteenlasku", - "MATH_CHANGE_TITLE": "muuta %1 arvolla %2", - "MATH_CHANGE_TOOLTIP": "Lisää arvo muuttujaan '%1'.", - "MATH_ROUND_HELPURL": "https://fi.wikipedia.org/wiki/Py%C3%B6rist%C3%A4minen", - "MATH_ROUND_TOOLTIP": "Pyöristää luvun ylös- tai alaspäin.", - "MATH_ROUND_OPERATOR_ROUND": "pyöristä", - "MATH_ROUND_OPERATOR_ROUNDUP": "pyöristä ylöspäin", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "pyöristä alaspäin", - "MATH_ONLIST_OPERATOR_SUM": "summa luvuista", - "MATH_ONLIST_TOOLTIP_SUM": "Palauttaa kaikkien annettujen lukujen summan.", - "MATH_ONLIST_OPERATOR_MIN": "pienin luvuista", - "MATH_ONLIST_TOOLTIP_MIN": "Palauttaa pienimmän annetuista luvuista.", - "MATH_ONLIST_OPERATOR_MAX": "suurin luvuista", - "MATH_ONLIST_TOOLTIP_MAX": "Palauttaa suurimman annetuista luvuista.", - "MATH_ONLIST_OPERATOR_AVERAGE": "keskiarvo luvuista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Palauttaa aritmeettisen keskiarvon annetuista luvuista.", - "MATH_ONLIST_OPERATOR_MEDIAN": "keskiluku luvuista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Palauttaa annettujen lukujen keskiluvun.", - "MATH_ONLIST_OPERATOR_MODE": "tyyppiarvo luvuista", - "MATH_ONLIST_TOOLTIP_MODE": "Palauttaa luettelon yleisimmistä luvuista annetussa listassa.", - "MATH_ONLIST_OPERATOR_STD_DEV": "keskihajonta luvuista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Palauttaa annettujen lukujen keskihajonnan.", - "MATH_ONLIST_OPERATOR_RANDOM": "satunnainen valinta luvuista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Palauttaa satunnaisesti valitun luvun annetuista luvuista.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "%1 ÷ %2 jakojäännös", - "MATH_MODULO_TOOLTIP": "Palauttaa jakolaskun jakojäännöksen.", - "MATH_CONSTRAIN_TITLE": "rajoita %1 vähintään %2 enintään %3", - "MATH_CONSTRAIN_TOOLTIP": "Rajoittaa arvon annetulle suljetulle välille.", - "MATH_RANDOM_INT_HELPURL": "https://fi.wikipedia.org/wiki/Satunnaisluku", - "MATH_RANDOM_INT_TITLE": "Palauttaa satunnaisen kokonaisluvun väliltä %1-%2", - "MATH_RANDOM_INT_TOOLTIP": "Palauttaa satunnaisen kokonaisluvun kahden annetun arvon suljetulta väliltä.", - "MATH_RANDOM_FLOAT_HELPURL": "https://fi.wikipedia.org/wiki/Satunnaisluku", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "satunnainen murtoluku", - "MATH_RANDOM_FLOAT_TOOLTIP": "Palauttaa satunnaisen luvun oikealta puoliavoimesta välistä [0.0, 1.0).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan(X:%1,Y:%2)", - "MATH_ATAN2_TOOLTIP": "Palauta pisteen (X,Y) arkustangentti välillä -180–180.", - "TEXT_TEXT_HELPURL": "https://fi.wikipedia.org/wiki/Merkkijono", - "TEXT_TEXT_TOOLTIP": "Kirjain, sana tai rivi tekstiä.", - "TEXT_JOIN_TITLE_CREATEWITH": "luo teksti", - "TEXT_JOIN_TOOLTIP": "Luo merkkijonon liittämällä yhteen minkä tahansa määrän kohteita.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "liitä", - "TEXT_CREATE_JOIN_TOOLTIP": "Lisää, poista tai uudelleen järjestä osioita tässä lohkossa.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Lisää kohteen tekstiin.", - "TEXT_APPEND_TITLE": "muuttujaan %1 lisää teksti %2", - "TEXT_APPEND_TOOLTIP": "Lisää tekstiä muuttujaan '%1'.", - "TEXT_LENGTH_TITLE": "%1:n pituus", - "TEXT_LENGTH_TOOLTIP": "Palauttaa annetussa tekstissä olevien merkkien määrän (välilyönnit mukaan lukien).", - "TEXT_ISEMPTY_TITLE": "%1 on tyhjä", - "TEXT_ISEMPTY_TOOLTIP": "Palauttaa tosi, jos annettu teksti on tyhjä.", - "TEXT_INDEXOF_TOOLTIP": "Palauttaa ensin annetun tekstin ensimmäisen/viimeisen esiintymän osoitteen toisessa tekstissä. Palauttaa osoitteen %1 jos tekstiä ei löytynyt.", - "TEXT_INDEXOF_TITLE": "tekstissä %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "etsi ensimmäinen esiintymä merkkijonolle", - "TEXT_INDEXOF_OPERATOR_LAST": "etsi viimeinen esiintymä merkkijonolle", - "TEXT_CHARAT_TITLE": "tekstissä %1 %2", - "TEXT_CHARAT_FROM_START": "Hae kirjain nro", - "TEXT_CHARAT_FROM_END": "Hae kirjain nro (lopusta laskien)", - "TEXT_CHARAT_FIRST": "hae ensimmäinen kirjain", - "TEXT_CHARAT_LAST": "hae viimeinen kirjain", - "TEXT_CHARAT_RANDOM": "hae satunnainen kirjain", - "TEXT_CHARAT_TOOLTIP": "Palauttaa annetussa kohdassa olevan kirjaimen.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Palauttaa määrätyn osan tekstistä.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "merkkijonosta", - "TEXT_GET_SUBSTRING_START_FROM_START": "hae osa alkaen kirjaimesta nro", - "TEXT_GET_SUBSTRING_START_FROM_END": "hae osa alkaen kirjaimesta nro (lopusta laskien)", - "TEXT_GET_SUBSTRING_START_FIRST": "hae osa alkaen ensimmäisestä kirjaimesta", - "TEXT_GET_SUBSTRING_END_FROM_START": "kirjaimeen nro", - "TEXT_GET_SUBSTRING_END_FROM_END": "kirjaimeen nro (lopusta laskien)", - "TEXT_GET_SUBSTRING_END_LAST": "viimeiseen kirjaimeen", - "TEXT_CHANGECASE_TOOLTIP": "Palauttaa kopion tekstistä eri kirjainkoossa.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "isot kirjaimet", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "pienet kirjaimet", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "isot alkukirjaimet", - "TEXT_TRIM_TOOLTIP": "Palauttaa kopion tekstistä siten, että välilyönnit on poistettu yhdestä tai molemmista päistä.", - "TEXT_TRIM_OPERATOR_BOTH": "poistaa välilyönnit kummaltakin puolelta", - "TEXT_TRIM_OPERATOR_LEFT": "poistaa välilyönnit vasemmalta puolelta", - "TEXT_TRIM_OPERATOR_RIGHT": "poistaa välilyönnit oikealta puolelta", - "TEXT_PRINT_TITLE": "tulosta %1", - "TEXT_PRINT_TOOLTIP": "Tulostaa annetun tekstin, numeron tai muun arvon.", - "TEXT_PROMPT_TYPE_TEXT": "käyttäen annettua viestiä, kehottaa syöttämään tekstiä", - "TEXT_PROMPT_TYPE_NUMBER": "käyttäen annettua viestiä, kehottaa syöttämään numeron", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Kehottaa käyttäjää syöttämään numeron.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Kehottaa käyttäjää syöttämään tekstiä.", - "TEXT_COUNT_MESSAGE0": "laske määrä '%1' '%2' sisällä", - "TEXT_COUNT_TOOLTIP": "Laske kuinka monta kertaa jokin teksti esiintyy jossakin toisessa tekstissä.", - "TEXT_REPLACE_MESSAGE0": "Korvaa teksti %1 tekstillä %2 tekstissä %3", - "TEXT_REPLACE_TOOLTIP": "Korvaa tietyn tekstin ilmentymät tekstin sisällä.", - "TEXT_REVERSE_MESSAGE0": "%1 takaperin", - "TEXT_REVERSE_TOOLTIP": "Muuttaa tekstin kirjainten järjestyksen toisin päin.", - "LISTS_CREATE_EMPTY_TITLE": "Luo tyhjä lista", - "LISTS_CREATE_EMPTY_TOOLTIP": "Palauta tyhjä lista, pituus 0", - "LISTS_CREATE_WITH_TOOLTIP": "Luo lista, jossa on mikä tahansa määrä kohteita.", - "LISTS_CREATE_WITH_INPUT_WITH": "luo lista", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Listää, poista tai järjestele uudestaan osioita tässä lohkossa.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Lisää kohde listaan.", - "LISTS_REPEAT_TOOLTIP": "Luo listan, jossa annettu arvo toistuu määrätyn monta kertaa.", - "LISTS_REPEAT_TITLE": "luo lista, jossa kohde %1 toistuu %2 kertaa", - "LISTS_LENGTH_TITLE": "%1:n pituus", - "LISTS_LENGTH_TOOLTIP": "Palauttaa listan pituuden.", - "LISTS_ISEMPTY_TITLE": "%1 on tyhjä", - "LISTS_ISEMPTY_TOOLTIP": "Palauttaa tosi, jos lista on tyhjä.", - "LISTS_INLIST": "listassa", - "LISTS_INDEX_OF_FIRST": "etsi ensimmäinen esiintymä kohteelle", - "LISTS_INDEX_OF_LAST": "etsi viimeinen esiintymä kohteelle", - "LISTS_INDEX_OF_TOOLTIP": "Palauttaa kohteen ensimmäisen/viimeisen esiintymän kohdan listassa. Palauttaa %1 jos kohdetta ei löydy.", - "LISTS_GET_INDEX_GET": "hae", - "LISTS_GET_INDEX_GET_REMOVE": "hae ja poista", - "LISTS_GET_INDEX_REMOVE": "poista", - "LISTS_GET_INDEX_FROM_START": "nro", - "LISTS_GET_INDEX_FROM_END": "nro (lopusta laskien)", - "LISTS_GET_INDEX_FIRST": "ensimmäinen", - "LISTS_GET_INDEX_LAST": "viimeinen", - "LISTS_GET_INDEX_RANDOM": "satunnainen", - "LISTS_INDEX_FROM_START_TOOLTIP": "Numero %1 tarkoittaa listan ensimmäistä kohdetta.", - "LISTS_INDEX_FROM_END_TOOLTIP": "Numero %1 tarkoittaa listan viimeistä kohdetta.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Palauta kohde annetusta kohdasta listaa.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Palauta ensimmäinen kohde listalta.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Palauttaa listan viimeisen kohteen.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Palauttaa satunnaisen kohteen listalta.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Poistaa ja palauttaa kohteen listan annetusta kohdasta.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Poistaa ja palauttaa ensimmäisen kohteen listalta.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Poistaa ja palauttaa viimeisen kohteen listalta.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Poistaa ja palauttaa satunnaisen kohteen listalta.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Poistaa kohteen listalta annetusta kohtaa.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Poistaa ensimmäisen kohteen listalta.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Poistaa viimeisen kohteen listalta.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Poistaa satunnaisen kohteen listalta.", - "LISTS_SET_INDEX_SET": "aseta", - "LISTS_SET_INDEX_INSERT": "lisää kohtaan", - "LISTS_SET_INDEX_INPUT_TO": "kohteeksi", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Asettaa kohteen annettuun kohtaan listassa.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Asettaa listan ensimmäisen kohteen.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Asettaa listan viimeisen kohteen.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Asettaa satunnaisen kohteen listassa.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Lisää kohteen annettuun kohtaan listassa.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Lisää kohteen listan kärkeen.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Lisää kohteen listan loppuun.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Lisää kohteen satunnaiseen kohtaan listassa.", - "LISTS_GET_SUBLIST_START_FROM_START": "hae osalista alkaen kohdasta", - "LISTS_GET_SUBLIST_START_FROM_END": "hae osalista alkaen kohdasta (lopusta laskien)", - "LISTS_GET_SUBLIST_START_FIRST": "hae osalista alkaen alusta", - "LISTS_GET_SUBLIST_END_FROM_START": "päättyen kohtaan", - "LISTS_GET_SUBLIST_END_FROM_END": "päättyen kohtaan (lopusta laskien)", - "LISTS_GET_SUBLIST_END_LAST": "viimeinen", - "LISTS_GET_SUBLIST_TOOLTIP": "Luo kopio määrätystä kohden listaa.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "lajittele %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Lajittele kopio luettelosta.", - "LISTS_SORT_ORDER_ASCENDING": "nouseva", - "LISTS_SORT_ORDER_DESCENDING": "laskeva", - "LISTS_SORT_TYPE_NUMERIC": "numeerinen", - "LISTS_SORT_TYPE_TEXT": "aakkosjärjestys", - "LISTS_SORT_TYPE_IGNORECASE": "aakkosjärjestyksessä, välittämättä kirjainkoosta", - "LISTS_SPLIT_LIST_FROM_TEXT": "tee lista tekstistä", - "LISTS_SPLIT_TEXT_FROM_LIST": "tee listasta teksti", - "LISTS_SPLIT_WITH_DELIMITER": "erottimen kanssa", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Jaa teksti osiin erotinmerkin perusteella ja järjestä osat listaksi.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Yhdistä luettelon tekstit yhdeksi tekstiksi, erotettuina välimerkillä.", - "LISTS_REVERSE_MESSAGE0": "%1 takaperin", - "LISTS_REVERSE_TOOLTIP": "Palauta käännetty kopio listasta.", - "VARIABLES_GET_TOOLTIP": "Palauttaa muuttujan arvon.", - "VARIABLES_GET_CREATE_SET": "Luo 'aseta %1'", - "VARIABLES_SET": "aseta %1 arvoksi %2", - "VARIABLES_SET_TOOLTIP": "Asettaa muutujan arvoksi annetun syötteen.", - "VARIABLES_SET_CREATE_GET": "Luo 'hae %1'", - "PROCEDURES_DEFNORETURN_TITLE": "tehdäksesi", - "PROCEDURES_DEFNORETURN_PROCEDURE": "tee jotain", - "PROCEDURES_BEFORE_PARAMS": "parametrit:", - "PROCEDURES_CALL_BEFORE_PARAMS": "parametrit:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Luo funktio, jolla ei ole tuotosta.", - "PROCEDURES_DEFNORETURN_COMMENT": "Kuvaile tämä funktio...", - "PROCEDURES_DEFRETURN_RETURN": "palauta", - "PROCEDURES_DEFRETURN_TOOLTIP": "Luo funktio, jolla ei ole tuotosta.", - "PROCEDURES_ALLOW_STATEMENTS": "salli kommentit", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Varoitus: tällä funktiolla on sama parametri useamman kerran.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://fi.wikipedia.org/wiki/Aliohjelma", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Suorittaa käyttäjän määrittelemä funktio '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://fi.wikipedia.org/wiki/Aliohjelma", - "PROCEDURES_CALLRETURN_TOOLTIP": "Suorittaa käyttäjän määrittelemän funktion '%1' ja käyttää sen tuotosta.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "syötteet", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Lisää, poista tai järjestele uudelleen tämän toiminnon tulot.", - "PROCEDURES_MUTATORARG_TITLE": "syötteen nimi:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Lisää sisääntulon funktioon.", - "PROCEDURES_HIGHLIGHT_DEF": "Korosta funktion määritelmä", - "PROCEDURES_CREATE_DO": "Luo '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Jos arvo on tosi, palauta toinen arvo.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Varoitus: tätä lohkoa voi käyttää vain funktion määrityksessä.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Sano jotakin...", - "WORKSPACE_ARIA_LABEL": "Blocklyn työnäkymä", - "COLLAPSED_WARNINGS_WARNING": "Supistetut lohkot sisältävät varoituksia.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Peru" -} +{ + "@metadata": { + "authors": [ + "Actuallyisjoha", + "Espeox", + "Espertus", + "Hopea", + "KK", + "McSalama", + "Mikahama", + "Nike", + "PStudios", + "Pahkiqaz", + "Pettevi", + "Pyscowicz", + "SNuutti", + "Silvonen" + ] + }, + "VARIABLES_DEFAULT_NAME": "kohde", + "UNNAMED_KEY": "nimetön", + "TODAY": "Tänään", + "DUPLICATE_BLOCK": "Kaksoiskappale", + "ADD_COMMENT": "Lisää kommentti", + "REMOVE_COMMENT": "Poista kommentti", + "DUPLICATE_COMMENT": "Kahdenna kommentti", + "EXTERNAL_INPUTS": "Ulkoiset syötteet", + "INLINE_INPUTS": "Tuo syötteet", + "DELETE_BLOCK": "Poista lohko", + "DELETE_X_BLOCKS": "Poista %1 lohkoa", + "DELETE_ALL_BLOCKS": "Poistetaanko kaikki %1 lohkoa?", + "CLEAN_UP": "Siivoa lohkot", + "COLLAPSE_BLOCK": "Sulje lohko", + "COLLAPSE_ALL": "Sulje lohkot", + "EXPAND_BLOCK": "Laajenna lohko", + "EXPAND_ALL": "Laajenna lohkot", + "DISABLE_BLOCK": "Passivoi lohko", + "ENABLE_BLOCK": "Aktivoi lohko", + "HELP": "Apua", + "UNDO": "Kumoa", + "REDO": "Tee uudelleen", + "CHANGE_VALUE_TITLE": "Muuta arvoa:", + "RENAME_VARIABLE": "Nimeä uudelleen muuttuja...", + "RENAME_VARIABLE_TITLE": "Nimeä uudelleen kaikki '%1' muuttujaa:", + "NEW_VARIABLE": "Luo muuttuja...", + "NEW_STRING_VARIABLE": "Luo merkkijonomuuttuja...", + "NEW_NUMBER_VARIABLE": "Luo numeromuuttuja...", + "NEW_COLOUR_VARIABLE": "Luo värimuuttuja...", + "NEW_VARIABLE_TYPE_TITLE": "Uuden muuttujan tyyppi:", + "NEW_VARIABLE_TITLE": "Uuden muuttujan nimi:", + "VARIABLE_ALREADY_EXISTS": "Muuttuja nimeltään '%1' on jo olemassa.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Muuttuja nimeltä '%1' on jo olemassa toiselle tyypille: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Poistetaanko %1 käyttöä muuttujalta '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ei voida poistaa muuttujaa '%1' koska se on osa funktion määritelmää '%2'", + "DELETE_VARIABLE": "Poista muuttuja '%1'", + "COLOUR_PICKER_HELPURL": "https://fi.wikipedia.org/wiki/V%C3%A4ri", + "COLOUR_PICKER_TOOLTIP": "Valitse väri paletista.", + "COLOUR_RANDOM_TITLE": "satunnainen väri", + "COLOUR_RANDOM_TOOLTIP": "Valitse väri sattumanvaraisesti.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "väri, jossa on", + "COLOUR_RGB_RED": "punainen", + "COLOUR_RGB_GREEN": "vihreä", + "COLOUR_RGB_BLUE": "sininen", + "COLOUR_RGB_TOOLTIP": "Luo väri, jossa on tietty määrä punaista, vihreää ja sinistä. Kaikkien arvojen tulee olla välillä 0 - 100.", + "COLOUR_BLEND_TITLE": "sekoitus", + "COLOUR_BLEND_COLOUR1": "väri 1", + "COLOUR_BLEND_COLOUR2": "väri 2", + "COLOUR_BLEND_RATIO": "suhde", + "COLOUR_BLEND_TOOLTIP": "Sekoittaa kaksi väriä keskenään annetussa suhteessa (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "toista %1 kertaa", + "CONTROLS_REPEAT_INPUT_DO": "tee", + "CONTROLS_REPEAT_TOOLTIP": "Suorita joukko lausekkeita useampi kertaa.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "toista niin kauan kuin", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "toista kunnes", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Niin kauan kuin arvo on tosi, suorita joukko lausekkeita.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Niin kauan kuin arvo on epätosi, suorita joukko lausekkeita.", + "CONTROLS_FOR_TOOLTIP": "Aseta muuttujaan \"%1\" arvot alkuarvosta loppuarvoon annetun askeleen välein ja suorita joka askeleella annettu koodilohko.", + "CONTROLS_FOR_TITLE": "laske %1 Väli %2-%3 %4:n välein", + "CONTROLS_FOREACH_TITLE": "kullekin kohteelle %1 listassa %2", + "CONTROLS_FOREACH_TOOLTIP": "Aseta muuttujan %1 arvoksi kukin listan kohde vuorollaan ja suorita joukko lausekkeita.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "poistu silmukasta", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "jatka silmukan seuraavaan toistoon", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Poistu sisemmästä silmukasta.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ohita loput tästä silmukasta ja siirry seuraavaan toistoon.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Varoitus: Tätä lohkoa voi käyttää vain silmukan sisällä.", + "CONTROLS_IF_TOOLTIP_1": "Jos arvo on tosi, suorita lauseke.", + "CONTROLS_IF_TOOLTIP_2": "Jos arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten suorita toinen lohko lausekkeita.", + "CONTROLS_IF_TOOLTIP_3": "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita.", + "CONTROLS_IF_TOOLTIP_4": "Jos ensimmäinen arvo on tosi, suorita ensimmäinen lohko lausekkeita. Muuten, jos toinen arvo on tosi, suorita toinen lohko lausekkeita. Jos mikään arvoista ei ole tosi, suorita viimeinen lohko lausekkeita.", + "CONTROLS_IF_MSG_IF": "jos", + "CONTROLS_IF_MSG_ELSEIF": "muuten jos", + "CONTROLS_IF_MSG_ELSE": "muuten", + "CONTROLS_IF_IF_TOOLTIP": "Lisää, poista tai järjestele osioita tässä \"jos\" lohkossa.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Lisää ehto \"jos\" lohkoon.", + "CONTROLS_IF_ELSE_TOOLTIP": "Lisää lopullinen \"muuten\" lohko \"jos\" lohkoon.", + "LOGIC_COMPARE_HELPURL": "https://fi.wikipedia.org/wiki/Ep%C3%A4yht%C3%A4l%C3%B6", + "LOGIC_COMPARE_TOOLTIP_EQ": "Palauta tosi, jos syötteet ovat keskenään samat.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Palauttaa tosi, jos syötteet eivät ole keskenään samoja.", + "LOGIC_COMPARE_TOOLTIP_LT": "Palauttaa tosi, jos ensimmäinen syöte on pienempi, kuin toinen.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Palauttaa tosi, jos ensimmäinen syöte on pienempi tai yhtä suuri, kuin toinen.", + "LOGIC_COMPARE_TOOLTIP_GT": "Palauttaa tosi, jos ensimmäinen syöte on suurempi, kuin toinen.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Palauttaa tosi, jos ensimmäinen syöte on suurempi tai yhtä suuri, kuin toinen.", + "LOGIC_OPERATION_TOOLTIP_AND": "Palauttaa tosi, jos kummatkin syötteet ovat tosia.", + "LOGIC_OPERATION_AND": "ja", + "LOGIC_OPERATION_TOOLTIP_OR": "Palauttaa tosi, jos ainakin yksi syötteistä on tosi.", + "LOGIC_OPERATION_OR": "tai", + "LOGIC_NEGATE_TITLE": "ei %1", + "LOGIC_NEGATE_TOOLTIP": "Palauttaa tosi, jos syöte on epätosi. Palauttaa epätosi, jos syöte on tosi.", + "LOGIC_BOOLEAN_TRUE": "tosi", + "LOGIC_BOOLEAN_FALSE": "epätosi", + "LOGIC_BOOLEAN_TOOLTIP": "Palauttaa joko tosi tai epätosi.", + "LOGIC_NULL": "ei mitään", + "LOGIC_NULL_TOOLTIP": "Palauttaa \"ei mitään\"-arvon.", + "LOGIC_TERNARY_CONDITION": "testi", + "LOGIC_TERNARY_IF_TRUE": "jos tosi", + "LOGIC_TERNARY_IF_FALSE": "jos epätosi", + "LOGIC_TERNARY_TOOLTIP": "Tarkistaa testin ehdon. Jos ehto on tosi, palauttaa \"jos tosi\" arvon, muuten palauttaa \"jos epätosi\" arvon.", + "MATH_NUMBER_HELPURL": "https://fi.wikipedia.org/wiki/Luku", + "MATH_NUMBER_TOOLTIP": "Luku.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "⋅", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "http://fi.wikipedia.org/wiki/Aritmetiikka", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Palauttaa kahden luvun summan.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Palauttaa kahden luvun erotuksen.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Palauttaa kertolaskun tulon.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Palauttaa jakolaskun osamäärän.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Palauttaa ensimmäisen luvun korotettuna toisen luvun potenssiin.", + "MATH_SINGLE_HELPURL": "https://fi.wikipedia.org/wiki/Neli%C3%B6juuri", + "MATH_SINGLE_OP_ROOT": "neliöjuuri", + "MATH_SINGLE_TOOLTIP_ROOT": "Palauttaa luvun neliöjuuren.", + "MATH_SINGLE_OP_ABSOLUTE": "itseisarvo", + "MATH_SINGLE_TOOLTIP_ABS": "Palauttaa luvun itseisarvon.", + "MATH_SINGLE_TOOLTIP_NEG": "Palauttaa numeron vastaluvun.", + "MATH_SINGLE_TOOLTIP_LN": "Palauttaa luvun luonnollisen logaritmin.", + "MATH_SINGLE_TOOLTIP_LOG10": "Palauttaa luvun kymmenkantaisen logaritmin.", + "MATH_SINGLE_TOOLTIP_EXP": "Palauttaa e potenssiin luku.", + "MATH_SINGLE_TOOLTIP_POW10": "Palauttaa 10 potenssiin luku.", + "MATH_TRIG_HELPURL": "https://fi.wikipedia.org/wiki/Trigonometrinen_funktio", + "MATH_TRIG_TOOLTIP_SIN": "Palauttaa asteluvun (ei radiaanin) sinin.", + "MATH_TRIG_TOOLTIP_COS": "Palauttaa asteluvun (ei radiaanin) kosinin.", + "MATH_TRIG_TOOLTIP_TAN": "Palauttaa asteluvun (ei radiaanin) tangentin.", + "MATH_TRIG_TOOLTIP_ASIN": "Palauttaa luvun arkussinin.", + "MATH_TRIG_TOOLTIP_ACOS": "Palauttaa luvun arkuskosinin.", + "MATH_TRIG_TOOLTIP_ATAN": "Palauttaa luvun arkustangentin.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Palauttaa jonkin seuraavista vakioista: π (3.141…), e (2.718…), φ (1.618…), neliöjuuri(2) (1.414…), neliöjuuri(½) (0.707…), or ∞ (ääretön).", + "MATH_IS_EVEN": "on parillinen", + "MATH_IS_ODD": "on pariton", + "MATH_IS_PRIME": "on alkuluku", + "MATH_IS_WHOLE": "on kokonaisluku", + "MATH_IS_POSITIVE": "on positiivinen", + "MATH_IS_NEGATIVE": "on negatiivinen", + "MATH_IS_DIVISIBLE_BY": "on jaollinen luvulla", + "MATH_IS_TOOLTIP": "Tarkistaa onko numero parillinen, pariton, alkuluku, kokonaisluku, positiivinen, negatiivinen, tai jos se on jaollinen toisella luvulla. Palauttaa tosi tai epätosi.", + "MATH_CHANGE_HELPURL": "https://fi.wikipedia.org/wiki/Yhteenlasku", + "MATH_CHANGE_TITLE": "muuta %1 arvolla %2", + "MATH_CHANGE_TOOLTIP": "Lisää arvo muuttujaan '%1'.", + "MATH_ROUND_HELPURL": "https://fi.wikipedia.org/wiki/Py%C3%B6rist%C3%A4minen", + "MATH_ROUND_TOOLTIP": "Pyöristää luvun ylös- tai alaspäin.", + "MATH_ROUND_OPERATOR_ROUND": "pyöristä", + "MATH_ROUND_OPERATOR_ROUNDUP": "pyöristä ylöspäin", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "pyöristä alaspäin", + "MATH_ONLIST_OPERATOR_SUM": "summa luvuista", + "MATH_ONLIST_TOOLTIP_SUM": "Palauttaa kaikkien annettujen lukujen summan.", + "MATH_ONLIST_OPERATOR_MIN": "pienin luvuista", + "MATH_ONLIST_TOOLTIP_MIN": "Palauttaa pienimmän annetuista luvuista.", + "MATH_ONLIST_OPERATOR_MAX": "suurin luvuista", + "MATH_ONLIST_TOOLTIP_MAX": "Palauttaa suurimman annetuista luvuista.", + "MATH_ONLIST_OPERATOR_AVERAGE": "keskiarvo luvuista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Palauttaa aritmeettisen keskiarvon annetuista luvuista.", + "MATH_ONLIST_OPERATOR_MEDIAN": "keskiluku luvuista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Palauttaa annettujen lukujen keskiluvun.", + "MATH_ONLIST_OPERATOR_MODE": "tyyppiarvo luvuista", + "MATH_ONLIST_TOOLTIP_MODE": "Palauttaa luettelon yleisimmistä luvuista annetussa listassa.", + "MATH_ONLIST_OPERATOR_STD_DEV": "keskihajonta luvuista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Palauttaa annettujen lukujen keskihajonnan.", + "MATH_ONLIST_OPERATOR_RANDOM": "satunnainen valinta luvuista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Palauttaa satunnaisesti valitun luvun annetuista luvuista.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "%1 ÷ %2 jakojäännös", + "MATH_MODULO_TOOLTIP": "Palauttaa jakolaskun jakojäännöksen.", + "MATH_CONSTRAIN_TITLE": "rajoita %1 vähintään %2 enintään %3", + "MATH_CONSTRAIN_TOOLTIP": "Rajoittaa arvon annetulle suljetulle välille.", + "MATH_RANDOM_INT_HELPURL": "https://fi.wikipedia.org/wiki/Satunnaisluku", + "MATH_RANDOM_INT_TITLE": "Palauttaa satunnaisen kokonaisluvun väliltä %1-%2", + "MATH_RANDOM_INT_TOOLTIP": "Palauttaa satunnaisen kokonaisluvun kahden annetun arvon suljetulta väliltä.", + "MATH_RANDOM_FLOAT_HELPURL": "https://fi.wikipedia.org/wiki/Satunnaisluku", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "satunnainen murtoluku", + "MATH_RANDOM_FLOAT_TOOLTIP": "Palauttaa satunnaisen luvun oikealta puoliavoimesta välistä [0.0, 1.0).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan(X:%1,Y:%2)", + "MATH_ATAN2_TOOLTIP": "Palauta pisteen (X,Y) arkustangentti välillä -180–180.", + "TEXT_TEXT_HELPURL": "https://fi.wikipedia.org/wiki/Merkkijono", + "TEXT_TEXT_TOOLTIP": "Kirjain, sana tai rivi tekstiä.", + "TEXT_JOIN_TITLE_CREATEWITH": "luo teksti", + "TEXT_JOIN_TOOLTIP": "Luo merkkijonon liittämällä yhteen minkä tahansa määrän kohteita.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "liitä", + "TEXT_CREATE_JOIN_TOOLTIP": "Lisää, poista tai uudelleen järjestä osioita tässä lohkossa.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Lisää kohteen tekstiin.", + "TEXT_APPEND_TITLE": "muuttujaan %1 lisää teksti %2", + "TEXT_APPEND_TOOLTIP": "Lisää tekstiä muuttujaan '%1'.", + "TEXT_LENGTH_TITLE": "%1:n pituus", + "TEXT_LENGTH_TOOLTIP": "Palauttaa annetussa tekstissä olevien merkkien määrän (välilyönnit mukaan lukien).", + "TEXT_ISEMPTY_TITLE": "%1 on tyhjä", + "TEXT_ISEMPTY_TOOLTIP": "Palauttaa tosi, jos annettu teksti on tyhjä.", + "TEXT_INDEXOF_TOOLTIP": "Palauttaa ensin annetun tekstin ensimmäisen/viimeisen esiintymän osoitteen toisessa tekstissä. Palauttaa osoitteen %1 jos tekstiä ei löytynyt.", + "TEXT_INDEXOF_TITLE": "tekstissä %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "etsi ensimmäinen esiintymä merkkijonolle", + "TEXT_INDEXOF_OPERATOR_LAST": "etsi viimeinen esiintymä merkkijonolle", + "TEXT_CHARAT_TITLE": "tekstissä %1 %2", + "TEXT_CHARAT_FROM_START": "Hae kirjain nro", + "TEXT_CHARAT_FROM_END": "Hae kirjain nro (lopusta laskien)", + "TEXT_CHARAT_FIRST": "hae ensimmäinen kirjain", + "TEXT_CHARAT_LAST": "hae viimeinen kirjain", + "TEXT_CHARAT_RANDOM": "hae satunnainen kirjain", + "TEXT_CHARAT_TOOLTIP": "Palauttaa annetussa kohdassa olevan kirjaimen.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Palauttaa määrätyn osan tekstistä.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "merkkijonosta", + "TEXT_GET_SUBSTRING_START_FROM_START": "hae osa alkaen kirjaimesta nro", + "TEXT_GET_SUBSTRING_START_FROM_END": "hae osa alkaen kirjaimesta nro (lopusta laskien)", + "TEXT_GET_SUBSTRING_START_FIRST": "hae osa alkaen ensimmäisestä kirjaimesta", + "TEXT_GET_SUBSTRING_END_FROM_START": "kirjaimeen nro", + "TEXT_GET_SUBSTRING_END_FROM_END": "kirjaimeen nro (lopusta laskien)", + "TEXT_GET_SUBSTRING_END_LAST": "viimeiseen kirjaimeen", + "TEXT_CHANGECASE_TOOLTIP": "Palauttaa kopion tekstistä eri kirjainkoossa.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "isot kirjaimet", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "pienet kirjaimet", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "isot alkukirjaimet", + "TEXT_TRIM_TOOLTIP": "Palauttaa kopion tekstistä siten, että välilyönnit on poistettu yhdestä tai molemmista päistä.", + "TEXT_TRIM_OPERATOR_BOTH": "poistaa välilyönnit kummaltakin puolelta", + "TEXT_TRIM_OPERATOR_LEFT": "poistaa välilyönnit vasemmalta puolelta", + "TEXT_TRIM_OPERATOR_RIGHT": "poistaa välilyönnit oikealta puolelta", + "TEXT_PRINT_TITLE": "tulosta %1", + "TEXT_PRINT_TOOLTIP": "Tulostaa annetun tekstin, numeron tai muun arvon.", + "TEXT_PROMPT_TYPE_TEXT": "käyttäen annettua viestiä, kehottaa syöttämään tekstiä", + "TEXT_PROMPT_TYPE_NUMBER": "käyttäen annettua viestiä, kehottaa syöttämään numeron", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Kehottaa käyttäjää syöttämään numeron.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Kehottaa käyttäjää syöttämään tekstiä.", + "TEXT_COUNT_MESSAGE0": "laske määrä '%1' '%2' sisällä", + "TEXT_COUNT_TOOLTIP": "Laske kuinka monta kertaa jokin teksti esiintyy jossakin toisessa tekstissä.", + "TEXT_REPLACE_MESSAGE0": "Korvaa teksti %1 tekstillä %2 tekstissä %3", + "TEXT_REPLACE_TOOLTIP": "Korvaa tietyn tekstin ilmentymät tekstin sisällä.", + "TEXT_REVERSE_MESSAGE0": "%1 takaperin", + "TEXT_REVERSE_TOOLTIP": "Muuttaa tekstin kirjainten järjestyksen toisin päin.", + "LISTS_CREATE_EMPTY_TITLE": "Luo tyhjä lista", + "LISTS_CREATE_EMPTY_TOOLTIP": "Palauta tyhjä lista, pituus 0", + "LISTS_CREATE_WITH_TOOLTIP": "Luo lista, jossa on mikä tahansa määrä kohteita.", + "LISTS_CREATE_WITH_INPUT_WITH": "luo lista", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Listää, poista tai järjestele uudestaan osioita tässä lohkossa.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Lisää kohde listaan.", + "LISTS_REPEAT_TOOLTIP": "Luo listan, jossa annettu arvo toistuu määrätyn monta kertaa.", + "LISTS_REPEAT_TITLE": "luo lista, jossa kohde %1 toistuu %2 kertaa", + "LISTS_LENGTH_TITLE": "%1:n pituus", + "LISTS_LENGTH_TOOLTIP": "Palauttaa listan pituuden.", + "LISTS_ISEMPTY_TITLE": "%1 on tyhjä", + "LISTS_ISEMPTY_TOOLTIP": "Palauttaa tosi, jos lista on tyhjä.", + "LISTS_INLIST": "listassa", + "LISTS_INDEX_OF_FIRST": "etsi ensimmäinen esiintymä kohteelle", + "LISTS_INDEX_OF_LAST": "etsi viimeinen esiintymä kohteelle", + "LISTS_INDEX_OF_TOOLTIP": "Palauttaa kohteen ensimmäisen/viimeisen esiintymän kohdan listassa. Palauttaa %1 jos kohdetta ei löydy.", + "LISTS_GET_INDEX_GET": "hae", + "LISTS_GET_INDEX_GET_REMOVE": "hae ja poista", + "LISTS_GET_INDEX_REMOVE": "poista", + "LISTS_GET_INDEX_FROM_START": "nro", + "LISTS_GET_INDEX_FROM_END": "nro (lopusta laskien)", + "LISTS_GET_INDEX_FIRST": "ensimmäinen", + "LISTS_GET_INDEX_LAST": "viimeinen", + "LISTS_GET_INDEX_RANDOM": "satunnainen", + "LISTS_INDEX_FROM_START_TOOLTIP": "Numero %1 tarkoittaa listan ensimmäistä kohdetta.", + "LISTS_INDEX_FROM_END_TOOLTIP": "Numero %1 tarkoittaa listan viimeistä kohdetta.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Palauta kohde annetusta kohdasta listaa.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Palauta ensimmäinen kohde listalta.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Palauttaa listan viimeisen kohteen.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Palauttaa satunnaisen kohteen listalta.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Poistaa ja palauttaa kohteen listan annetusta kohdasta.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Poistaa ja palauttaa ensimmäisen kohteen listalta.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Poistaa ja palauttaa viimeisen kohteen listalta.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Poistaa ja palauttaa satunnaisen kohteen listalta.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Poistaa kohteen listalta annetusta kohtaa.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Poistaa ensimmäisen kohteen listalta.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Poistaa viimeisen kohteen listalta.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Poistaa satunnaisen kohteen listalta.", + "LISTS_SET_INDEX_SET": "aseta", + "LISTS_SET_INDEX_INSERT": "lisää kohtaan", + "LISTS_SET_INDEX_INPUT_TO": "kohteeksi", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Asettaa kohteen annettuun kohtaan listassa.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Asettaa listan ensimmäisen kohteen.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Asettaa listan viimeisen kohteen.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Asettaa satunnaisen kohteen listassa.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Lisää kohteen annettuun kohtaan listassa.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Lisää kohteen listan kärkeen.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Lisää kohteen listan loppuun.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Lisää kohteen satunnaiseen kohtaan listassa.", + "LISTS_GET_SUBLIST_START_FROM_START": "hae osalista alkaen kohdasta", + "LISTS_GET_SUBLIST_START_FROM_END": "hae osalista alkaen kohdasta (lopusta laskien)", + "LISTS_GET_SUBLIST_START_FIRST": "hae osalista alkaen alusta", + "LISTS_GET_SUBLIST_END_FROM_START": "päättyen kohtaan", + "LISTS_GET_SUBLIST_END_FROM_END": "päättyen kohtaan (lopusta laskien)", + "LISTS_GET_SUBLIST_END_LAST": "viimeinen", + "LISTS_GET_SUBLIST_TOOLTIP": "Luo kopio määrätystä kohden listaa.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "lajittele %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Lajittele kopio luettelosta.", + "LISTS_SORT_ORDER_ASCENDING": "nouseva", + "LISTS_SORT_ORDER_DESCENDING": "laskeva", + "LISTS_SORT_TYPE_NUMERIC": "numeerinen", + "LISTS_SORT_TYPE_TEXT": "aakkosjärjestys", + "LISTS_SORT_TYPE_IGNORECASE": "aakkosjärjestyksessä, välittämättä kirjainkoosta", + "LISTS_SPLIT_LIST_FROM_TEXT": "tee lista tekstistä", + "LISTS_SPLIT_TEXT_FROM_LIST": "tee listasta teksti", + "LISTS_SPLIT_WITH_DELIMITER": "erottimen kanssa", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Jaa teksti osiin erotinmerkin perusteella ja järjestä osat listaksi.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Yhdistä luettelon tekstit yhdeksi tekstiksi, erotettuina välimerkillä.", + "LISTS_REVERSE_MESSAGE0": "%1 takaperin", + "LISTS_REVERSE_TOOLTIP": "Palauta käännetty kopio listasta.", + "VARIABLES_GET_TOOLTIP": "Palauttaa muuttujan arvon.", + "VARIABLES_GET_CREATE_SET": "Luo 'aseta %1'", + "VARIABLES_SET": "aseta %1 arvoksi %2", + "VARIABLES_SET_TOOLTIP": "Asettaa muutujan arvoksi annetun syötteen.", + "VARIABLES_SET_CREATE_GET": "Luo 'hae %1'", + "PROCEDURES_DEFNORETURN_TITLE": "tehdäksesi", + "PROCEDURES_DEFNORETURN_PROCEDURE": "tee jotain", + "PROCEDURES_BEFORE_PARAMS": "parametrit:", + "PROCEDURES_CALL_BEFORE_PARAMS": "parametrit:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Luo funktio, jolla ei ole tuotosta.", + "PROCEDURES_DEFNORETURN_COMMENT": "Kuvaile tämä funktio...", + "PROCEDURES_DEFRETURN_RETURN": "palauta", + "PROCEDURES_DEFRETURN_TOOLTIP": "Luo funktio, jolla ei ole tuotosta.", + "PROCEDURES_ALLOW_STATEMENTS": "salli kommentit", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Varoitus: tällä funktiolla on sama parametri useamman kerran.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://fi.wikipedia.org/wiki/Aliohjelma", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Suorittaa käyttäjän määrittelemä funktio '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://fi.wikipedia.org/wiki/Aliohjelma", + "PROCEDURES_CALLRETURN_TOOLTIP": "Suorittaa käyttäjän määrittelemän funktion '%1' ja käyttää sen tuotosta.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "syötteet", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Lisää, poista tai järjestele uudelleen tämän toiminnon tulot.", + "PROCEDURES_MUTATORARG_TITLE": "syötteen nimi:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Lisää sisääntulon funktioon.", + "PROCEDURES_HIGHLIGHT_DEF": "Korosta funktion määritelmä", + "PROCEDURES_CREATE_DO": "Luo '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Jos arvo on tosi, palauta toinen arvo.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Varoitus: tätä lohkoa voi käyttää vain funktion määrityksessä.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Sano jotakin...", + "WORKSPACE_ARIA_LABEL": "Blocklyn työnäkymä", + "COLLAPSED_WARNINGS_WARNING": "Supistetut lohkot sisältävät varoituksia.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Peru" +} diff --git a/msg/json/fo.json b/msg/json/fo.json index 9484024bdba..be09c92a1b7 100644 --- a/msg/json/fo.json +++ b/msg/json/fo.json @@ -1,46 +1,46 @@ -{ - "@metadata": { - "authors": [ - "Gt", - "Olavur" - ] - }, - "VARIABLES_DEFAULT_NAME": "lutur", - "UNNAMED_KEY": "ónevnt", - "TODAY": "Í dag", - "DUPLICATE_BLOCK": "Tvífalda", - "ADD_COMMENT": "Viðmerk", - "REMOVE_COMMENT": "Strika viðmerking", - "DUPLICATE_COMMENT": "Tvífalda viðmerking", - "EXTERNAL_INPUTS": "Innputt uttanifrá", - "INLINE_INPUTS": "Innlinju innputt", - "DELETE_BLOCK": "Strika blokk", - "DELETE_X_BLOCKS": "Strika %1 blokkar", - "DELETE_ALL_BLOCKS": "Strika allar %1 blokkar?", - "CLEAN_UP": "Rudda blokkar", - "COLLAPSE_BLOCK": "Fell blokk saman", - "COLLAPSE_ALL": "Fell blokkar saman", - "EXPAND_BLOCK": "Víðka blokk", - "EXPAND_ALL": "Víðka blokkar", - "DISABLE_BLOCK": "Ger blokk óvirknan", - "ENABLE_BLOCK": "Ger blokk virknan", - "HELP": "Hjálp", - "UNDO": "Angra", - "REDO": "Ger umaftur", - "CHANGE_VALUE_TITLE": "Broyt virði:", - "RENAME_VARIABLE": "Broyt navn á variabli...", - "RENAME_VARIABLE_TITLE": "Broyt navnið á øllum '%1' variablum til:", - "NEW_VARIABLE": "Ger variabul...", - "NEW_STRING_VARIABLE": "Ger strongvariabul...", - "NEW_NUMBER_VARIABLE": "Ger talvariabul...", - "NEW_COLOUR_VARIABLE": "Ger litvariabul...", - "NEW_VARIABLE_TYPE_TITLE": "Nýtt variabulslag:", - "NEW_VARIABLE_TITLE": "Navn á nýggjum variabli:", - "VARIABLE_ALREADY_EXISTS": "Ein variabul við navninum '%1' finst longu.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Ein variabul við navninum '%1' finst longu fyri eina aðra typu: '%2'", - "DELETE_VARIABLE_CONFIRMATION": "Strika %1 brúk av '%2' variablinum?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Kann ikki strika variabulin '%1', tí hann er partur av allýsingini av funktiónini '%2'", - "DELETE_VARIABLE": "Strika '%1' variabulin", - "DIALOG_OK": "Í lagi", - "DIALOG_CANCEL": "Angra" -} +{ + "@metadata": { + "authors": [ + "Gt", + "Olavur" + ] + }, + "VARIABLES_DEFAULT_NAME": "lutur", + "UNNAMED_KEY": "ónevnt", + "TODAY": "Í dag", + "DUPLICATE_BLOCK": "Tvífalda", + "ADD_COMMENT": "Viðmerk", + "REMOVE_COMMENT": "Strika viðmerking", + "DUPLICATE_COMMENT": "Tvífalda viðmerking", + "EXTERNAL_INPUTS": "Innputt uttanifrá", + "INLINE_INPUTS": "Innlinju innputt", + "DELETE_BLOCK": "Strika blokk", + "DELETE_X_BLOCKS": "Strika %1 blokkar", + "DELETE_ALL_BLOCKS": "Strika allar %1 blokkar?", + "CLEAN_UP": "Rudda blokkar", + "COLLAPSE_BLOCK": "Fell blokk saman", + "COLLAPSE_ALL": "Fell blokkar saman", + "EXPAND_BLOCK": "Víðka blokk", + "EXPAND_ALL": "Víðka blokkar", + "DISABLE_BLOCK": "Ger blokk óvirknan", + "ENABLE_BLOCK": "Ger blokk virknan", + "HELP": "Hjálp", + "UNDO": "Angra", + "REDO": "Ger umaftur", + "CHANGE_VALUE_TITLE": "Broyt virði:", + "RENAME_VARIABLE": "Broyt navn á variabli...", + "RENAME_VARIABLE_TITLE": "Broyt navnið á øllum '%1' variablum til:", + "NEW_VARIABLE": "Ger variabul...", + "NEW_STRING_VARIABLE": "Ger strongvariabul...", + "NEW_NUMBER_VARIABLE": "Ger talvariabul...", + "NEW_COLOUR_VARIABLE": "Ger litvariabul...", + "NEW_VARIABLE_TYPE_TITLE": "Nýtt variabulslag:", + "NEW_VARIABLE_TITLE": "Navn á nýggjum variabli:", + "VARIABLE_ALREADY_EXISTS": "Ein variabul við navninum '%1' finst longu.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Ein variabul við navninum '%1' finst longu fyri eina aðra typu: '%2'", + "DELETE_VARIABLE_CONFIRMATION": "Strika %1 brúk av '%2' variablinum?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Kann ikki strika variabulin '%1', tí hann er partur av allýsingini av funktiónini '%2'", + "DELETE_VARIABLE": "Strika '%1' variabulin", + "DIALOG_OK": "Í lagi", + "DIALOG_CANCEL": "Angra" +} diff --git a/msg/json/fr.json b/msg/json/fr.json index 3b0913f7d60..3f01fae9011 100644 --- a/msg/json/fr.json +++ b/msg/json/fr.json @@ -1,380 +1,380 @@ -{ - "@metadata": { - "authors": [ - "Alacabe", - "Appr", - "Espertus", - "Fredlefred", - "Frigory", - "Gomoko", - "Grimault", - "Pititnatole", - "ProfGra", - "Rixed", - "RoboErikG", - "Scratcheur-2020Send", - "Thibaut120094", - "Urhixidur", - "Verdy p", - "Vexthedorito", - "Wladek92", - "Zarisi" - ] - }, - "VARIABLES_DEFAULT_NAME": "élément", - "UNNAMED_KEY": "non nommé", - "TODAY": "Aujourd'hui", - "DUPLICATE_BLOCK": "Dupliquer", - "ADD_COMMENT": "Ajouter un commentaire", - "REMOVE_COMMENT": "Supprimer un commentaire", - "DUPLICATE_COMMENT": "Dupliquer le commentaire", - "EXTERNAL_INPUTS": "Entrées externes", - "INLINE_INPUTS": "Entrées en ligne", - "DELETE_BLOCK": "Supprimer le bloc", - "DELETE_X_BLOCKS": "Supprimer %1 blocs", - "DELETE_ALL_BLOCKS": "Supprimer ces %1 blocs ?", - "CLEAN_UP": "Nettoyer les blocs", - "COLLAPSE_BLOCK": "Réduire le bloc", - "COLLAPSE_ALL": "Réduire les blocs", - "EXPAND_BLOCK": "Développer le bloc", - "EXPAND_ALL": "Développer les blocs", - "DISABLE_BLOCK": "Désactiver le bloc", - "ENABLE_BLOCK": "Activer le bloc", - "HELP": "Aide", - "UNDO": "Annuler", - "REDO": "Refaire", - "CHANGE_VALUE_TITLE": "Modifier la valeur :", - "RENAME_VARIABLE": "Renommer la variable...", - "RENAME_VARIABLE_TITLE": "Renommer toutes les variables « %1 » en :", - "NEW_VARIABLE": "Créer une variable...", - "NEW_STRING_VARIABLE": "Créer une variable de chaîne...", - "NEW_NUMBER_VARIABLE": "Créer une variable numérique...", - "NEW_COLOUR_VARIABLE": "Créer une variable de couleur...", - "NEW_VARIABLE_TYPE_TITLE": "Nouveau type de variable :", - "NEW_VARIABLE_TITLE": "Nom de la nouvelle variable :", - "VARIABLE_ALREADY_EXISTS": "Une variable nommée « %1 » existe déjà.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Une variable nommée « %1 » existe déjà pour un autre type : « %2 ».", - "DELETE_VARIABLE_CONFIRMATION": "Supprimer %1 utilisations de la variable « %2 » ?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Impossible de supprimer la variable « %1 » parce qu’elle fait partie de la définition de la fonction « %2 »", - "DELETE_VARIABLE": "Supprimer la variable « %1 »", - "COLOUR_PICKER_HELPURL": "https://fr.wikipedia.org/wiki/Couleur", - "COLOUR_PICKER_TOOLTIP": "Choisir une couleur dans la palette.", - "COLOUR_RANDOM_TITLE": "couleur aléatoire", - "COLOUR_RANDOM_TOOLTIP": "Choisir une couleur au hasard.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "colorier en", - "COLOUR_RGB_RED": "rouge", - "COLOUR_RGB_GREEN": "vert", - "COLOUR_RGB_BLUE": "bleu", - "COLOUR_RGB_TOOLTIP": "Créer une couleur avec la quantité spécifiée de rouge, vert et bleu. Les valeurs doivent être comprises entre 0 et 100.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "mélanger", - "COLOUR_BLEND_COLOUR1": "couleur 1", - "COLOUR_BLEND_COLOUR2": "couleur 2", - "COLOUR_BLEND_RATIO": "taux", - "COLOUR_BLEND_TOOLTIP": "Mélange deux couleurs dans une proportion donnée (de 0.0 à 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://fr.wikipedia.org/wiki/Boucle_for", - "CONTROLS_REPEAT_TITLE": "répéter %1 fois", - "CONTROLS_REPEAT_INPUT_DO": "faire", - "CONTROLS_REPEAT_TOOLTIP": "Exécuter des instructions plusieurs fois.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "répéter tant que", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "répéter jusqu’à ce que", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Tant qu’une valeur est vraie, alors exécuter des instructions.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Tant qu’une valeur est fausse, alors exécuter des instructions.", - "CONTROLS_FOR_TOOLTIP": "Faire prendre successivement à la variable « %1 » les valeurs entre deux nombres de début et de fin par incrément du pas spécifié et exécuter les instructions spécifiées.", - "CONTROLS_FOR_TITLE": "compter avec %1 de %2 à %3 par %4", - "CONTROLS_FOREACH_TITLE": "pour chaque élément %1 dans la liste %2", - "CONTROLS_FOREACH_TOOLTIP": "Pour chaque élément d’une liste, assigner la valeur de l’élément à la variable « %1 », puis exécuter des instructions.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "quitter la boucle", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "passer à l’itération de boucle suivante", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Sortir de la boucle englobante.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sauter le reste de cette boucle, et poursuivre avec l’itération suivante.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Attention : ce bloc ne devrait être utilisé que dans une boucle.", - "CONTROLS_IF_TOOLTIP_1": "Si une valeur est vraie, alors exécuter certaines instructions.", - "CONTROLS_IF_TOOLTIP_2": "Si une valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, exécuter le second bloc d’instructions.", - "CONTROLS_IF_TOOLTIP_3": "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instructions.", - "CONTROLS_IF_TOOLTIP_4": "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instruction. Si aucune des valeurs n’est vraie, exécuter le dernier bloc d’instruction.", - "CONTROLS_IF_MSG_IF": "si", - "CONTROLS_IF_MSG_ELSEIF": "sinon si", - "CONTROLS_IF_MSG_ELSE": "sinon", - "CONTROLS_IF_IF_TOOLTIP": "Ajouter, supprimer ou réordonner les sections pour reconfigurer ce bloc conditionnel.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Ajouter une condition au bloc conditionnel.", - "CONTROLS_IF_ELSE_TOOLTIP": "Ajouter une condition finale déclenchée dans tous les autres cas au bloc conditionnel.", - "LOGIC_COMPARE_HELPURL": "https://fr.wikipedia.org/wiki/In%C3%A9galit%C3%A9_(math%C3%A9matiques)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Renvoyer vrai si les deux entrées sont égales.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Renvoyer vrai si les deux entrées sont différentes.", - "LOGIC_COMPARE_TOOLTIP_LT": "Renvoyer vrai si la première entrée est plus petite que la seconde.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Renvoyer vrai si la première entrée est plus petite ou égale à la seconde.", - "LOGIC_COMPARE_TOOLTIP_GT": "Renvoyer vrai si la première entrée est plus grande que la seconde.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Renvoyer true si la première entrée est supérieure ou égale à la seconde.", - "LOGIC_OPERATION_TOOLTIP_AND": "Renvoyer vrai si les deux entrées sont vraies.", - "LOGIC_OPERATION_AND": "et", - "LOGIC_OPERATION_TOOLTIP_OR": "Renvoyer vrai si au moins une des entrées est vraie.", - "LOGIC_OPERATION_OR": "ou", - "LOGIC_NEGATE_TITLE": "non %1", - "LOGIC_NEGATE_TOOLTIP": "Renvoie vrai si l’entrée est fausse. Renvoie faux si l’entrée est vraie.", - "LOGIC_BOOLEAN_TRUE": "vrai", - "LOGIC_BOOLEAN_FALSE": "faux", - "LOGIC_BOOLEAN_TOOLTIP": "Renvoie soit vrai soit faux.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "nul", - "LOGIC_NULL_TOOLTIP": "Renvoie nul.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F%3A", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "si vrai", - "LOGIC_TERNARY_IF_FALSE": "si faux", - "LOGIC_TERNARY_TOOLTIP": "Vérifie la condition indiquée dans « test ». Si elle est vraie, renvoie la valeur « si vrai » ; sinon renvoie la valeur « si faux ».", - "MATH_NUMBER_HELPURL": "https://fr.wikipedia.org/wiki/Nombre", - "MATH_NUMBER_TOOLTIP": "Un nombre.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "−", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://fr.wikipedia.org/wiki/Arithm%C3%A9tique", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Renvoie la somme des deux nombres.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Renvoie la différence des deux nombres.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Renvoie le produit des deux nombres.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Renvoie le quotient des deux nombres.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Renvoie le premier nombre élevé à la puissance du second.", - "MATH_SINGLE_HELPURL": "https://fr.wikipedia.org/wiki/Racine_carr%C3%A9e", - "MATH_SINGLE_OP_ROOT": "racine carrée", - "MATH_SINGLE_TOOLTIP_ROOT": "Renvoie la racine carrée d’un nombre.", - "MATH_SINGLE_OP_ABSOLUTE": "valeur absolue", - "MATH_SINGLE_TOOLTIP_ABS": "Renvoie la valeur absolue d’un nombre.", - "MATH_SINGLE_TOOLTIP_NEG": "Renvoie l’opposé d’un nombre", - "MATH_SINGLE_TOOLTIP_LN": "Renvoie le logarithme naturel d’un nombre.", - "MATH_SINGLE_TOOLTIP_LOG10": "Renvoie le logarithme décimal d’un nombre.", - "MATH_SINGLE_TOOLTIP_EXP": "Renvoie e à la puissance d’un nombre.", - "MATH_SINGLE_TOOLTIP_POW10": "Renvoie 10 à la puissance d’un nombre.", - "MATH_TRIG_HELPURL": "https://fr.wikipedia.org/wiki/Fonction_trigonom%C3%A9trique", - "MATH_TRIG_TOOLTIP_SIN": "Renvoie le sinus d’un angle en degrés (pas en radians).", - "MATH_TRIG_TOOLTIP_COS": "Renvoie le cosinus d’un angle en degrés (pas en radians).", - "MATH_TRIG_TOOLTIP_TAN": "Renvoie la tangente d’un angle en degrés (pas en radians).", - "MATH_TRIG_TOOLTIP_ASIN": "Renvoie l’arcsinus d’un nombre.", - "MATH_TRIG_TOOLTIP_ACOS": "Renvoie l’arccosinus d’un nombre.", - "MATH_TRIG_TOOLTIP_ATAN": "Renvoie l’arctangente d’un nombre.", - "MATH_CONSTANT_HELPURL": "https://fr.wikipedia.org/wiki/Table_de_constantes_math%C3%A9matiques", - "MATH_CONSTANT_TOOLTIP": "Renvoie une des constantes courantes : π (3,141...), e (2,718...), φ (nom d’or : ½(1+√5) = 1,618…), √2 (1,414...), √½ (0,707...), ou ∞ (infini).", - "MATH_IS_EVEN": "est pair", - "MATH_IS_ODD": "est impair", - "MATH_IS_PRIME": "est premier", - "MATH_IS_WHOLE": "est entier", - "MATH_IS_POSITIVE": "est positif", - "MATH_IS_NEGATIVE": "est négatif", - "MATH_IS_DIVISIBLE_BY": "est divisible par", - "MATH_IS_TOOLTIP": "Vérifier si un nombre est pair, impair, premier, entier, positif, négatif ou s’il est divisible par un certain nombre. Renvoie vrai ou faux.", - "MATH_CHANGE_HELPURL": "https://fr.wikipedia.org/wiki/Idiome_de_programmation", - "MATH_CHANGE_TITLE": "incrémenter %1 de %2", - "MATH_CHANGE_TOOLTIP": "Ajouter un nombre à la variable « %1 ».", - "MATH_ROUND_HELPURL": "https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques)", - "MATH_ROUND_TOOLTIP": "Arrondir un nombre au-dessus ou au-dessous.", - "MATH_ROUND_OPERATOR_ROUND": "arrondir", - "MATH_ROUND_OPERATOR_ROUNDUP": "arrondir par excès (à l’entier supérieur le plus proche)", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "arrondir par défaut (à l’entier inférieur le plus proche)", - "MATH_ONLIST_OPERATOR_SUM": "somme de la liste", - "MATH_ONLIST_TOOLTIP_SUM": "Renvoyer la somme de tous les nombres dans la liste.", - "MATH_ONLIST_OPERATOR_MIN": "minimum de la liste", - "MATH_ONLIST_TOOLTIP_MIN": "Renvoyer le plus petit nombre dans la liste.", - "MATH_ONLIST_OPERATOR_MAX": "maximum de la liste", - "MATH_ONLIST_TOOLTIP_MAX": "Renvoyer le plus grand nombre dans la liste.", - "MATH_ONLIST_OPERATOR_AVERAGE": "moyenne de la liste", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Renvoyer la moyenne (arithmétique) des valeurs numériques dans la liste.", - "MATH_ONLIST_OPERATOR_MEDIAN": "médiane de la liste", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Renvoyer le nombre médian de la liste.", - "MATH_ONLIST_OPERATOR_MODE": "majoritaires de la liste", - "MATH_ONLIST_TOOLTIP_MODE": "Renvoyer une liste d’un ou plusieurs éléments les plus fréquents dans la liste.", - "MATH_ONLIST_OPERATOR_STD_DEV": "écart type de la liste", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Renvoyer l’écart type de la liste.", - "MATH_ONLIST_OPERATOR_RANDOM": "élément aléatoire de la liste", - "MATH_ONLIST_TOOLTIP_RANDOM": "Renvoyer un élément au hasard dans la liste.", - "MATH_MODULO_HELPURL": "https://fr.wikipedia.org/wiki/Modulo_(op%C3%A9ration)", - "MATH_MODULO_TITLE": "reste de %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Renvoyer le reste de la division euclidienne des deux nombres.", - "MATH_CONSTRAIN_TITLE": "contraindre %1 entre %2 et %3", - "MATH_CONSTRAIN_TOOLTIP": "Contraindre un nombre à rester entre les limites spécifiées (incluses).", - "MATH_RANDOM_INT_HELPURL": "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires", - "MATH_RANDOM_INT_TITLE": "entier aléatoire entre %1 et %2", - "MATH_RANDOM_INT_TOOLTIP": "Renvoyer un entier aléatoire entre les deux limites spécifiées, incluses.", - "MATH_RANDOM_FLOAT_HELPURL": "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fraction aléatoire", - "MATH_RANDOM_FLOAT_TOOLTIP": "Renvoyer une fraction aléatoire entre 0,0 (inclus) et 1,0 (exclus).", - "MATH_ATAN2_HELPURL": "https://fr.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 de (x : %1 ; y : %2)", - "MATH_ATAN2_TOOLTIP": "Renvoie l’arc-tangente du point (X, Y) en degrés entre -180 et 180.", - "TEXT_TEXT_HELPURL": "https://fr.wikipedia.org/wiki/Cha%C3%AEne_de_caract%C3%A8res", - "TEXT_TEXT_TOOLTIP": "Une lettre, un mot ou une ligne de texte.", - "TEXT_JOIN_TITLE_CREATEWITH": "créer un texte avec", - "TEXT_JOIN_TOOLTIP": "Créer un morceau de texte en joignant bout à bout et successivement un nombre quelconque d’éléments dans le même ordre.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "joindre", - "TEXT_CREATE_JOIN_TOOLTIP": "Ajouter, supprimer, ou réordonner des sections pour reconfigurer ce bloc de texte.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ajouter un élément au texte.", - "TEXT_APPEND_TITLE": "ajouter le texte %2 à %1", - "TEXT_APPEND_TOOLTIP": "Ajouter du texte à la variable « %1 ».", - "TEXT_LENGTH_TITLE": "longueur de %1", - "TEXT_LENGTH_TOOLTIP": "Renvoie le nombre de lettres (chiffres, ponctuations, symboles et espaces compris) dans le texte fourni.", - "TEXT_ISEMPTY_TITLE": "%1 est vide", - "TEXT_ISEMPTY_TOOLTIP": "Renvoie vrai si le texte fourni est vide.", - "TEXT_INDEXOF_TOOLTIP": "Renvoie l’index de la première/dernière occurrence de la première chaîne dans la seconde. Renvoie %1 si la chaîne n’est pas trouvée.", - "TEXT_INDEXOF_TITLE": "%2 %3 dans le texte %1", - "TEXT_INDEXOF_OPERATOR_FIRST": "trouver la première occurrence de la chaîne", - "TEXT_INDEXOF_OPERATOR_LAST": "trouver la dernière occurrence du texte", - "TEXT_CHARAT_TITLE": "%2 dans le texte %1", - "TEXT_CHARAT_FROM_START": "obtenir la lettre nº", - "TEXT_CHARAT_FROM_END": "obtenir la lettre nº (depuis la fin)", - "TEXT_CHARAT_FIRST": "obtenir la première lettre", - "TEXT_CHARAT_LAST": "obtenir la dernière lettre", - "TEXT_CHARAT_RANDOM": "obtenir une lettre au hasard", - "TEXT_CHARAT_TOOLTIP": "Renvoie la lettre à la position indiquée.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Renvoie une partie indiquée du texte.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "dans le texte", - "TEXT_GET_SUBSTRING_START_FROM_START": "obtenir la sous-chaîne depuis la lettre nº", - "TEXT_GET_SUBSTRING_START_FROM_END": "obtenir la sous-chaîne depuis la lettre nº (depuis la fin)", - "TEXT_GET_SUBSTRING_START_FIRST": "obtenir la sous-chaîne depuis la première lettre", - "TEXT_GET_SUBSTRING_END_FROM_START": "jusqu’à la lettre nº", - "TEXT_GET_SUBSTRING_END_FROM_END": "jusqu’à la lettre nº (depuis la fin)", - "TEXT_GET_SUBSTRING_END_LAST": "jusqu’à la dernière lettre", - "TEXT_CHANGECASE_TOOLTIP": "Renvoyer une copie du texte dans une autre casse.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "en MAJUSCULES", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "en minuscules", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "en Capitale Initiale Pour Chaque Mot", - "TEXT_TRIM_TOOLTIP": "Renvoyer une copie du texte avec les espaces supprimés d’un ou des deux bouts.", - "TEXT_TRIM_OPERATOR_BOTH": "supprimer les espaces des deux côtés de", - "TEXT_TRIM_OPERATOR_LEFT": "supprimer les espaces du côté gauche de", - "TEXT_TRIM_OPERATOR_RIGHT": "supprimer les espaces du côté droit de", - "TEXT_PRINT_TITLE": "afficher %1", - "TEXT_PRINT_TOOLTIP": "Afficher le texte, le nombre ou une autre valeur spécifiée.", - "TEXT_PROMPT_TYPE_TEXT": "demander un texte avec un message", - "TEXT_PROMPT_TYPE_NUMBER": "demander un nombre avec un message", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Demander un nombre à l’utilisateur.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Demander un texte à l’utilisateur.", - "TEXT_COUNT_MESSAGE0": "nombre %1 sur %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Compter combien de fois un texte donné apparaît dans un autre.", - "TEXT_REPLACE_MESSAGE0": "remplacer %1 par %2 dans %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Remplacer toutes les occurrences d’un texte par un autre.", - "TEXT_REVERSE_MESSAGE0": "renverser %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Renverse l’ordre des caractères dans le texte.", - "LISTS_CREATE_EMPTY_TITLE": "créer une liste vide", - "LISTS_CREATE_EMPTY_TOOLTIP": "Renvoyer une liste, de longueur 0, ne contenant aucun enregistrement de données", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Créer une liste avec un nombre quelconque d’éléments.", - "LISTS_CREATE_WITH_INPUT_WITH": "créer une liste avec", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Ajouter, supprimer, ou réordonner les sections pour reconfigurer ce bloc de liste.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ajouter un élément à la liste.", - "LISTS_REPEAT_TOOLTIP": "Crée une liste consistant en la valeur fournie répétée le nombre de fois indiqué.", - "LISTS_REPEAT_TITLE": "créer une liste avec l’élément %1 répété %2 fois", - "LISTS_LENGTH_TITLE": "longueur de %1", - "LISTS_LENGTH_TOOLTIP": "Renvoie la longueur d’une liste.", - "LISTS_ISEMPTY_TITLE": "%1 est vide", - "LISTS_ISEMPTY_TOOLTIP": "Renvoie vrai si la liste est vide.", - "LISTS_INLIST": "dans la liste", - "LISTS_INDEX_OF_FIRST": "trouver la première occurrence de l’élément", - "LISTS_INDEX_OF_LAST": "trouver la dernière occurrence de l’élément", - "LISTS_INDEX_OF_TOOLTIP": "Renvoie l’index de la première/dernière occurrence de l’élément dans la liste. Renvoie %1 si l’élément n’est pas trouvé.", - "LISTS_GET_INDEX_GET": "obtenir", - "LISTS_GET_INDEX_GET_REMOVE": "obtenir et supprimer", - "LISTS_GET_INDEX_REMOVE": "supprimer", - "LISTS_GET_INDEX_FROM_START": "nº", - "LISTS_GET_INDEX_FROM_END": "n° depuis la fin", - "LISTS_GET_INDEX_FIRST": "premier", - "LISTS_GET_INDEX_LAST": "dernier", - "LISTS_GET_INDEX_RANDOM": "au hasard", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 est le premier élément.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 est le dernier élément.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Renvoie l’élément à la position indiquée dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Renvoie le premier élément dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Renvoie le dernier élément dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Renvoie un élément au hasard dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Supprime et renvoie l’élément à la position indiquée dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Supprime et renvoie le premier élément dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Supprime et renvoie le dernier élément dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Supprime et renvoie un élément au hasard dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Supprime l’élément à la position indiquée dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Supprime le premier élément dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Supprime le dernier élément dans une liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Supprime un élément au hasard dans une liste.", - "LISTS_SET_INDEX_SET": "mettre", - "LISTS_SET_INDEX_INSERT": "insérer en", - "LISTS_SET_INDEX_INPUT_TO": "comme", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Définit l’élément à la position indiquée dans une liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Définit le premier élément dans une liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Définit le dernier élément dans une liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Définit un élément au hasard dans une liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insère l’élément à la position indiquée dans une liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insère l’élément au début d’une liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ajoute l’élément à la fin d’une liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insère l’élément au hasard dans une liste.", - "LISTS_GET_SUBLIST_START_FROM_START": "obtenir la sous-liste depuis le n°", - "LISTS_GET_SUBLIST_START_FROM_END": "obtenir la sous-liste depuis le n° depuis la fin", - "LISTS_GET_SUBLIST_START_FIRST": "obtenir la sous-liste depuis le début", - "LISTS_GET_SUBLIST_END_FROM_START": "jusqu’au n°", - "LISTS_GET_SUBLIST_END_FROM_END": "jusqu’au n° depuis la fin", - "LISTS_GET_SUBLIST_END_LAST": "jusqu’à la fin", - "LISTS_GET_SUBLIST_TAIL": "", - "LISTS_GET_SUBLIST_TOOLTIP": "Crée une copie de la partie spécifiée d’une liste.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "trier %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Trier une copie d’une liste.", - "LISTS_SORT_ORDER_ASCENDING": "croissant", - "LISTS_SORT_ORDER_DESCENDING": "décroissant", - "LISTS_SORT_TYPE_NUMERIC": "numérique", - "LISTS_SORT_TYPE_TEXT": "alphabétique", - "LISTS_SORT_TYPE_IGNORECASE": "alphabétique, en ignorant la casse", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "créer une liste depuis le texte", - "LISTS_SPLIT_TEXT_FROM_LIST": "créer un texte depuis la liste", - "LISTS_SPLIT_WITH_DELIMITER": "avec séparateur", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Couper un texte en une liste de textes, en coupant à chaque séparateur.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Réunir une liste de textes en un seul, en les joignant par un séparateur.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "inverser %1", - "LISTS_REVERSE_TOOLTIP": "Inverser la copie d’une liste.", - "ORDINAL_NUMBER_SUFFIX": "", - "VARIABLES_GET_TOOLTIP": "Renvoie la valeur de cette variable.", - "VARIABLES_GET_CREATE_SET": "Créer « définir %1 »", - "VARIABLES_SET": "définir %1 à %2", - "VARIABLES_SET_TOOLTIP": "Définit cette variable pour qu’elle soit égale à la valeur de l’entrée.", - "VARIABLES_SET_CREATE_GET": "Créer « obtenir %1 »", - "PROCEDURES_DEFNORETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", - "PROCEDURES_DEFNORETURN_TITLE": "pour", - "PROCEDURES_DEFNORETURN_PROCEDURE": "faire quelque chose", - "PROCEDURES_BEFORE_PARAMS": "avec :", - "PROCEDURES_CALL_BEFORE_PARAMS": "avec :", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Crée une fonction sans sortie.", - "PROCEDURES_DEFNORETURN_COMMENT": "Décrivez cette fonction...", - "PROCEDURES_DEFRETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", - "PROCEDURES_DEFRETURN_RETURN": "retourner", - "PROCEDURES_DEFRETURN_TOOLTIP": "Crée une fonction avec une sortie.", - "PROCEDURES_ALLOW_STATEMENTS": "autoriser les ordres", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Attention : cette fonction a des paramètres en doublon.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Exécuter la fonction « %1 » définie par l’utilisateur.", - "PROCEDURES_CALLRETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", - "PROCEDURES_CALLRETURN_TOOLTIP": "Exécuter la fonction « %1 » définie par l’utilisateur et utiliser son résultat.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "entrées", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Ajouter, supprimer, ou réarranger les entrées de cette fonction.", - "PROCEDURES_MUTATORARG_TITLE": "nom de l’entrée :", - "PROCEDURES_MUTATORARG_TOOLTIP": "Ajouter une entrée à la fonction.", - "PROCEDURES_HIGHLIGHT_DEF": "Surligner la définition de la fonction", - "PROCEDURES_CREATE_DO": "Créer « %1 »", - "PROCEDURES_IFRETURN_TOOLTIP": "Si une valeur est vraie, alors renvoyer une seconde valeur.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Attention : ce bloc ne peut être utilisé que dans une définition de fonction.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Expliquez quelque chose...", - "WORKSPACE_ARIA_LABEL": "Espace de travail de Blocky", - "COLLAPSED_WARNINGS_WARNING": "Les blocs repliés contiennent des avertissements.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Annuler" -} +{ + "@metadata": { + "authors": [ + "Alacabe", + "Appr", + "Espertus", + "Fredlefred", + "Frigory", + "Gomoko", + "Grimault", + "Pititnatole", + "ProfGra", + "Rixed", + "RoboErikG", + "Scratcheur-2020Send", + "Thibaut120094", + "Urhixidur", + "Verdy p", + "Vexthedorito", + "Wladek92", + "Zarisi" + ] + }, + "VARIABLES_DEFAULT_NAME": "élément", + "UNNAMED_KEY": "non nommé", + "TODAY": "Aujourd'hui", + "DUPLICATE_BLOCK": "Dupliquer", + "ADD_COMMENT": "Ajouter un commentaire", + "REMOVE_COMMENT": "Supprimer un commentaire", + "DUPLICATE_COMMENT": "Dupliquer le commentaire", + "EXTERNAL_INPUTS": "Entrées externes", + "INLINE_INPUTS": "Entrées en ligne", + "DELETE_BLOCK": "Supprimer le bloc", + "DELETE_X_BLOCKS": "Supprimer %1 blocs", + "DELETE_ALL_BLOCKS": "Supprimer ces %1 blocs ?", + "CLEAN_UP": "Nettoyer les blocs", + "COLLAPSE_BLOCK": "Réduire le bloc", + "COLLAPSE_ALL": "Réduire les blocs", + "EXPAND_BLOCK": "Développer le bloc", + "EXPAND_ALL": "Développer les blocs", + "DISABLE_BLOCK": "Désactiver le bloc", + "ENABLE_BLOCK": "Activer le bloc", + "HELP": "Aide", + "UNDO": "Annuler", + "REDO": "Refaire", + "CHANGE_VALUE_TITLE": "Modifier la valeur :", + "RENAME_VARIABLE": "Renommer la variable...", + "RENAME_VARIABLE_TITLE": "Renommer toutes les variables « %1 » en :", + "NEW_VARIABLE": "Créer une variable...", + "NEW_STRING_VARIABLE": "Créer une variable de chaîne...", + "NEW_NUMBER_VARIABLE": "Créer une variable numérique...", + "NEW_COLOUR_VARIABLE": "Créer une variable de couleur...", + "NEW_VARIABLE_TYPE_TITLE": "Nouveau type de variable :", + "NEW_VARIABLE_TITLE": "Nom de la nouvelle variable :", + "VARIABLE_ALREADY_EXISTS": "Une variable nommée « %1 » existe déjà.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Une variable nommée « %1 » existe déjà pour un autre type : « %2 ».", + "DELETE_VARIABLE_CONFIRMATION": "Supprimer %1 utilisations de la variable « %2 » ?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Impossible de supprimer la variable « %1 » parce qu’elle fait partie de la définition de la fonction « %2 »", + "DELETE_VARIABLE": "Supprimer la variable « %1 »", + "COLOUR_PICKER_HELPURL": "https://fr.wikipedia.org/wiki/Couleur", + "COLOUR_PICKER_TOOLTIP": "Choisir une couleur dans la palette.", + "COLOUR_RANDOM_TITLE": "couleur aléatoire", + "COLOUR_RANDOM_TOOLTIP": "Choisir une couleur au hasard.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "colorier en", + "COLOUR_RGB_RED": "rouge", + "COLOUR_RGB_GREEN": "vert", + "COLOUR_RGB_BLUE": "bleu", + "COLOUR_RGB_TOOLTIP": "Créer une couleur avec la quantité spécifiée de rouge, vert et bleu. Les valeurs doivent être comprises entre 0 et 100.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "mélanger", + "COLOUR_BLEND_COLOUR1": "couleur 1", + "COLOUR_BLEND_COLOUR2": "couleur 2", + "COLOUR_BLEND_RATIO": "taux", + "COLOUR_BLEND_TOOLTIP": "Mélange deux couleurs dans une proportion donnée (de 0.0 à 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://fr.wikipedia.org/wiki/Boucle_for", + "CONTROLS_REPEAT_TITLE": "répéter %1 fois", + "CONTROLS_REPEAT_INPUT_DO": "faire", + "CONTROLS_REPEAT_TOOLTIP": "Exécuter des instructions plusieurs fois.", + "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "répéter tant que", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "répéter jusqu’à ce que", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Tant qu’une valeur est vraie, alors exécuter des instructions.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Tant qu’une valeur est fausse, alors exécuter des instructions.", + "CONTROLS_FOR_TOOLTIP": "Faire prendre successivement à la variable « %1 » les valeurs entre deux nombres de début et de fin par incrément du pas spécifié et exécuter les instructions spécifiées.", + "CONTROLS_FOR_TITLE": "compter avec %1 de %2 à %3 par %4", + "CONTROLS_FOREACH_TITLE": "pour chaque élément %1 dans la liste %2", + "CONTROLS_FOREACH_TOOLTIP": "Pour chaque élément d’une liste, assigner la valeur de l’élément à la variable « %1 », puis exécuter des instructions.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "quitter la boucle", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "passer à l’itération de boucle suivante", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Sortir de la boucle englobante.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sauter le reste de cette boucle, et poursuivre avec l’itération suivante.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Attention : ce bloc ne devrait être utilisé que dans une boucle.", + "CONTROLS_IF_TOOLTIP_1": "Si une valeur est vraie, alors exécuter certaines instructions.", + "CONTROLS_IF_TOOLTIP_2": "Si une valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, exécuter le second bloc d’instructions.", + "CONTROLS_IF_TOOLTIP_3": "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instructions.", + "CONTROLS_IF_TOOLTIP_4": "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instruction. Si aucune des valeurs n’est vraie, exécuter le dernier bloc d’instruction.", + "CONTROLS_IF_MSG_IF": "si", + "CONTROLS_IF_MSG_ELSEIF": "sinon si", + "CONTROLS_IF_MSG_ELSE": "sinon", + "CONTROLS_IF_IF_TOOLTIP": "Ajouter, supprimer ou réordonner les sections pour reconfigurer ce bloc conditionnel.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Ajouter une condition au bloc conditionnel.", + "CONTROLS_IF_ELSE_TOOLTIP": "Ajouter une condition finale déclenchée dans tous les autres cas au bloc conditionnel.", + "LOGIC_COMPARE_HELPURL": "https://fr.wikipedia.org/wiki/In%C3%A9galit%C3%A9_(math%C3%A9matiques)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Renvoyer vrai si les deux entrées sont égales.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Renvoyer vrai si les deux entrées sont différentes.", + "LOGIC_COMPARE_TOOLTIP_LT": "Renvoyer vrai si la première entrée est plus petite que la seconde.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Renvoyer vrai si la première entrée est plus petite ou égale à la seconde.", + "LOGIC_COMPARE_TOOLTIP_GT": "Renvoyer vrai si la première entrée est plus grande que la seconde.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Renvoyer true si la première entrée est supérieure ou égale à la seconde.", + "LOGIC_OPERATION_TOOLTIP_AND": "Renvoyer vrai si les deux entrées sont vraies.", + "LOGIC_OPERATION_AND": "et", + "LOGIC_OPERATION_TOOLTIP_OR": "Renvoyer vrai si au moins une des entrées est vraie.", + "LOGIC_OPERATION_OR": "ou", + "LOGIC_NEGATE_TITLE": "non %1", + "LOGIC_NEGATE_TOOLTIP": "Renvoie vrai si l’entrée est fausse. Renvoie faux si l’entrée est vraie.", + "LOGIC_BOOLEAN_TRUE": "vrai", + "LOGIC_BOOLEAN_FALSE": "faux", + "LOGIC_BOOLEAN_TOOLTIP": "Renvoie soit vrai soit faux.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "nul", + "LOGIC_NULL_TOOLTIP": "Renvoie nul.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F%3A", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "si vrai", + "LOGIC_TERNARY_IF_FALSE": "si faux", + "LOGIC_TERNARY_TOOLTIP": "Vérifie la condition indiquée dans « test ». Si elle est vraie, renvoie la valeur « si vrai » ; sinon renvoie la valeur « si faux ».", + "MATH_NUMBER_HELPURL": "https://fr.wikipedia.org/wiki/Nombre", + "MATH_NUMBER_TOOLTIP": "Un nombre.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "−", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://fr.wikipedia.org/wiki/Arithm%C3%A9tique", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Renvoie la somme des deux nombres.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Renvoie la différence des deux nombres.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Renvoie le produit des deux nombres.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Renvoie le quotient des deux nombres.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Renvoie le premier nombre élevé à la puissance du second.", + "MATH_SINGLE_HELPURL": "https://fr.wikipedia.org/wiki/Racine_carr%C3%A9e", + "MATH_SINGLE_OP_ROOT": "racine carrée", + "MATH_SINGLE_TOOLTIP_ROOT": "Renvoie la racine carrée d’un nombre.", + "MATH_SINGLE_OP_ABSOLUTE": "valeur absolue", + "MATH_SINGLE_TOOLTIP_ABS": "Renvoie la valeur absolue d’un nombre.", + "MATH_SINGLE_TOOLTIP_NEG": "Renvoie l’opposé d’un nombre", + "MATH_SINGLE_TOOLTIP_LN": "Renvoie le logarithme naturel d’un nombre.", + "MATH_SINGLE_TOOLTIP_LOG10": "Renvoie le logarithme décimal d’un nombre.", + "MATH_SINGLE_TOOLTIP_EXP": "Renvoie e à la puissance d’un nombre.", + "MATH_SINGLE_TOOLTIP_POW10": "Renvoie 10 à la puissance d’un nombre.", + "MATH_TRIG_HELPURL": "https://fr.wikipedia.org/wiki/Fonction_trigonom%C3%A9trique", + "MATH_TRIG_TOOLTIP_SIN": "Renvoie le sinus d’un angle en degrés (pas en radians).", + "MATH_TRIG_TOOLTIP_COS": "Renvoie le cosinus d’un angle en degrés (pas en radians).", + "MATH_TRIG_TOOLTIP_TAN": "Renvoie la tangente d’un angle en degrés (pas en radians).", + "MATH_TRIG_TOOLTIP_ASIN": "Renvoie l’arcsinus d’un nombre.", + "MATH_TRIG_TOOLTIP_ACOS": "Renvoie l’arccosinus d’un nombre.", + "MATH_TRIG_TOOLTIP_ATAN": "Renvoie l’arctangente d’un nombre.", + "MATH_CONSTANT_HELPURL": "https://fr.wikipedia.org/wiki/Table_de_constantes_math%C3%A9matiques", + "MATH_CONSTANT_TOOLTIP": "Renvoie une des constantes courantes : π (3,141...), e (2,718...), φ (nom d’or : ½(1+√5) = 1,618…), √2 (1,414...), √½ (0,707...), ou ∞ (infini).", + "MATH_IS_EVEN": "est pair", + "MATH_IS_ODD": "est impair", + "MATH_IS_PRIME": "est premier", + "MATH_IS_WHOLE": "est entier", + "MATH_IS_POSITIVE": "est positif", + "MATH_IS_NEGATIVE": "est négatif", + "MATH_IS_DIVISIBLE_BY": "est divisible par", + "MATH_IS_TOOLTIP": "Vérifier si un nombre est pair, impair, premier, entier, positif, négatif ou s’il est divisible par un certain nombre. Renvoie vrai ou faux.", + "MATH_CHANGE_HELPURL": "https://fr.wikipedia.org/wiki/Idiome_de_programmation", + "MATH_CHANGE_TITLE": "incrémenter %1 de %2", + "MATH_CHANGE_TOOLTIP": "Ajouter un nombre à la variable « %1 ».", + "MATH_ROUND_HELPURL": "https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques)", + "MATH_ROUND_TOOLTIP": "Arrondir un nombre au-dessus ou au-dessous.", + "MATH_ROUND_OPERATOR_ROUND": "arrondir", + "MATH_ROUND_OPERATOR_ROUNDUP": "arrondir par excès (à l’entier supérieur le plus proche)", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "arrondir par défaut (à l’entier inférieur le plus proche)", + "MATH_ONLIST_OPERATOR_SUM": "somme de la liste", + "MATH_ONLIST_TOOLTIP_SUM": "Renvoyer la somme de tous les nombres dans la liste.", + "MATH_ONLIST_OPERATOR_MIN": "minimum de la liste", + "MATH_ONLIST_TOOLTIP_MIN": "Renvoyer le plus petit nombre dans la liste.", + "MATH_ONLIST_OPERATOR_MAX": "maximum de la liste", + "MATH_ONLIST_TOOLTIP_MAX": "Renvoyer le plus grand nombre dans la liste.", + "MATH_ONLIST_OPERATOR_AVERAGE": "moyenne de la liste", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Renvoyer la moyenne (arithmétique) des valeurs numériques dans la liste.", + "MATH_ONLIST_OPERATOR_MEDIAN": "médiane de la liste", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Renvoyer le nombre médian de la liste.", + "MATH_ONLIST_OPERATOR_MODE": "majoritaires de la liste", + "MATH_ONLIST_TOOLTIP_MODE": "Renvoyer une liste d’un ou plusieurs éléments les plus fréquents dans la liste.", + "MATH_ONLIST_OPERATOR_STD_DEV": "écart type de la liste", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Renvoyer l’écart type de la liste.", + "MATH_ONLIST_OPERATOR_RANDOM": "élément aléatoire de la liste", + "MATH_ONLIST_TOOLTIP_RANDOM": "Renvoyer un élément au hasard dans la liste.", + "MATH_MODULO_HELPURL": "https://fr.wikipedia.org/wiki/Modulo_(op%C3%A9ration)", + "MATH_MODULO_TITLE": "reste de %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Renvoyer le reste de la division euclidienne des deux nombres.", + "MATH_CONSTRAIN_TITLE": "contraindre %1 entre %2 et %3", + "MATH_CONSTRAIN_TOOLTIP": "Contraindre un nombre à rester entre les limites spécifiées (incluses).", + "MATH_RANDOM_INT_HELPURL": "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires", + "MATH_RANDOM_INT_TITLE": "entier aléatoire entre %1 et %2", + "MATH_RANDOM_INT_TOOLTIP": "Renvoyer un entier aléatoire entre les deux limites spécifiées, incluses.", + "MATH_RANDOM_FLOAT_HELPURL": "https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_de_nombres_al%C3%A9atoires", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fraction aléatoire", + "MATH_RANDOM_FLOAT_TOOLTIP": "Renvoyer une fraction aléatoire entre 0,0 (inclus) et 1,0 (exclus).", + "MATH_ATAN2_HELPURL": "https://fr.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 de (x : %1 ; y : %2)", + "MATH_ATAN2_TOOLTIP": "Renvoie l’arc-tangente du point (X, Y) en degrés entre -180 et 180.", + "TEXT_TEXT_HELPURL": "https://fr.wikipedia.org/wiki/Cha%C3%AEne_de_caract%C3%A8res", + "TEXT_TEXT_TOOLTIP": "Une lettre, un mot ou une ligne de texte.", + "TEXT_JOIN_TITLE_CREATEWITH": "créer un texte avec", + "TEXT_JOIN_TOOLTIP": "Créer un morceau de texte en joignant bout à bout et successivement un nombre quelconque d’éléments dans le même ordre.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "joindre", + "TEXT_CREATE_JOIN_TOOLTIP": "Ajouter, supprimer, ou réordonner des sections pour reconfigurer ce bloc de texte.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ajouter un élément au texte.", + "TEXT_APPEND_TITLE": "ajouter le texte %2 à %1", + "TEXT_APPEND_TOOLTIP": "Ajouter du texte à la variable « %1 ».", + "TEXT_LENGTH_TITLE": "longueur de %1", + "TEXT_LENGTH_TOOLTIP": "Renvoie le nombre de lettres (chiffres, ponctuations, symboles et espaces compris) dans le texte fourni.", + "TEXT_ISEMPTY_TITLE": "%1 est vide", + "TEXT_ISEMPTY_TOOLTIP": "Renvoie vrai si le texte fourni est vide.", + "TEXT_INDEXOF_TOOLTIP": "Renvoie l’index de la première/dernière occurrence de la première chaîne dans la seconde. Renvoie %1 si la chaîne n’est pas trouvée.", + "TEXT_INDEXOF_TITLE": "%2 %3 dans le texte %1", + "TEXT_INDEXOF_OPERATOR_FIRST": "trouver la première occurrence de la chaîne", + "TEXT_INDEXOF_OPERATOR_LAST": "trouver la dernière occurrence du texte", + "TEXT_CHARAT_TITLE": "%2 dans le texte %1", + "TEXT_CHARAT_FROM_START": "obtenir la lettre nº", + "TEXT_CHARAT_FROM_END": "obtenir la lettre nº (depuis la fin)", + "TEXT_CHARAT_FIRST": "obtenir la première lettre", + "TEXT_CHARAT_LAST": "obtenir la dernière lettre", + "TEXT_CHARAT_RANDOM": "obtenir une lettre au hasard", + "TEXT_CHARAT_TOOLTIP": "Renvoie la lettre à la position indiquée.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Renvoie une partie indiquée du texte.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "dans le texte", + "TEXT_GET_SUBSTRING_START_FROM_START": "obtenir la sous-chaîne depuis la lettre nº", + "TEXT_GET_SUBSTRING_START_FROM_END": "obtenir la sous-chaîne depuis la lettre nº (depuis la fin)", + "TEXT_GET_SUBSTRING_START_FIRST": "obtenir la sous-chaîne depuis la première lettre", + "TEXT_GET_SUBSTRING_END_FROM_START": "jusqu’à la lettre nº", + "TEXT_GET_SUBSTRING_END_FROM_END": "jusqu’à la lettre nº (depuis la fin)", + "TEXT_GET_SUBSTRING_END_LAST": "jusqu’à la dernière lettre", + "TEXT_CHANGECASE_TOOLTIP": "Renvoyer une copie du texte dans une autre casse.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "en MAJUSCULES", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "en minuscules", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "en Capitale Initiale Pour Chaque Mot", + "TEXT_TRIM_TOOLTIP": "Renvoyer une copie du texte avec les espaces supprimés d’un ou des deux bouts.", + "TEXT_TRIM_OPERATOR_BOTH": "supprimer les espaces des deux côtés de", + "TEXT_TRIM_OPERATOR_LEFT": "supprimer les espaces du côté gauche de", + "TEXT_TRIM_OPERATOR_RIGHT": "supprimer les espaces du côté droit de", + "TEXT_PRINT_TITLE": "afficher %1", + "TEXT_PRINT_TOOLTIP": "Afficher le texte, le nombre ou une autre valeur spécifiée.", + "TEXT_PROMPT_TYPE_TEXT": "demander un texte avec un message", + "TEXT_PROMPT_TYPE_NUMBER": "demander un nombre avec un message", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Demander un nombre à l’utilisateur.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Demander un texte à l’utilisateur.", + "TEXT_COUNT_MESSAGE0": "nombre %1 sur %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Compter combien de fois un texte donné apparaît dans un autre.", + "TEXT_REPLACE_MESSAGE0": "remplacer %1 par %2 dans %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Remplacer toutes les occurrences d’un texte par un autre.", + "TEXT_REVERSE_MESSAGE0": "renverser %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Renverse l’ordre des caractères dans le texte.", + "LISTS_CREATE_EMPTY_TITLE": "créer une liste vide", + "LISTS_CREATE_EMPTY_TOOLTIP": "Renvoyer une liste, de longueur 0, ne contenant aucun enregistrement de données", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Créer une liste avec un nombre quelconque d’éléments.", + "LISTS_CREATE_WITH_INPUT_WITH": "créer une liste avec", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Ajouter, supprimer, ou réordonner les sections pour reconfigurer ce bloc de liste.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ajouter un élément à la liste.", + "LISTS_REPEAT_TOOLTIP": "Crée une liste consistant en la valeur fournie répétée le nombre de fois indiqué.", + "LISTS_REPEAT_TITLE": "créer une liste avec l’élément %1 répété %2 fois", + "LISTS_LENGTH_TITLE": "longueur de %1", + "LISTS_LENGTH_TOOLTIP": "Renvoie la longueur d’une liste.", + "LISTS_ISEMPTY_TITLE": "%1 est vide", + "LISTS_ISEMPTY_TOOLTIP": "Renvoie vrai si la liste est vide.", + "LISTS_INLIST": "dans la liste", + "LISTS_INDEX_OF_FIRST": "trouver la première occurrence de l’élément", + "LISTS_INDEX_OF_LAST": "trouver la dernière occurrence de l’élément", + "LISTS_INDEX_OF_TOOLTIP": "Renvoie l’index de la première/dernière occurrence de l’élément dans la liste. Renvoie %1 si l’élément n’est pas trouvé.", + "LISTS_GET_INDEX_GET": "obtenir", + "LISTS_GET_INDEX_GET_REMOVE": "obtenir et supprimer", + "LISTS_GET_INDEX_REMOVE": "supprimer", + "LISTS_GET_INDEX_FROM_START": "nº", + "LISTS_GET_INDEX_FROM_END": "n° depuis la fin", + "LISTS_GET_INDEX_FIRST": "premier", + "LISTS_GET_INDEX_LAST": "dernier", + "LISTS_GET_INDEX_RANDOM": "au hasard", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 est le premier élément.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 est le dernier élément.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Renvoie l’élément à la position indiquée dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Renvoie le premier élément dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Renvoie le dernier élément dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Renvoie un élément au hasard dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Supprime et renvoie l’élément à la position indiquée dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Supprime et renvoie le premier élément dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Supprime et renvoie le dernier élément dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Supprime et renvoie un élément au hasard dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Supprime l’élément à la position indiquée dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Supprime le premier élément dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Supprime le dernier élément dans une liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Supprime un élément au hasard dans une liste.", + "LISTS_SET_INDEX_SET": "mettre", + "LISTS_SET_INDEX_INSERT": "insérer en", + "LISTS_SET_INDEX_INPUT_TO": "comme", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Définit l’élément à la position indiquée dans une liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Définit le premier élément dans une liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Définit le dernier élément dans une liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Définit un élément au hasard dans une liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insère l’élément à la position indiquée dans une liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insère l’élément au début d’une liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ajoute l’élément à la fin d’une liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insère l’élément au hasard dans une liste.", + "LISTS_GET_SUBLIST_START_FROM_START": "obtenir la sous-liste depuis le n°", + "LISTS_GET_SUBLIST_START_FROM_END": "obtenir la sous-liste depuis le n° depuis la fin", + "LISTS_GET_SUBLIST_START_FIRST": "obtenir la sous-liste depuis le début", + "LISTS_GET_SUBLIST_END_FROM_START": "jusqu’au n°", + "LISTS_GET_SUBLIST_END_FROM_END": "jusqu’au n° depuis la fin", + "LISTS_GET_SUBLIST_END_LAST": "jusqu’à la fin", + "LISTS_GET_SUBLIST_TAIL": "", + "LISTS_GET_SUBLIST_TOOLTIP": "Crée une copie de la partie spécifiée d’une liste.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "trier %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Trier une copie d’une liste.", + "LISTS_SORT_ORDER_ASCENDING": "croissant", + "LISTS_SORT_ORDER_DESCENDING": "décroissant", + "LISTS_SORT_TYPE_NUMERIC": "numérique", + "LISTS_SORT_TYPE_TEXT": "alphabétique", + "LISTS_SORT_TYPE_IGNORECASE": "alphabétique, en ignorant la casse", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "créer une liste depuis le texte", + "LISTS_SPLIT_TEXT_FROM_LIST": "créer un texte depuis la liste", + "LISTS_SPLIT_WITH_DELIMITER": "avec séparateur", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Couper un texte en une liste de textes, en coupant à chaque séparateur.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Réunir une liste de textes en un seul, en les joignant par un séparateur.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "inverser %1", + "LISTS_REVERSE_TOOLTIP": "Inverser la copie d’une liste.", + "ORDINAL_NUMBER_SUFFIX": "", + "VARIABLES_GET_TOOLTIP": "Renvoie la valeur de cette variable.", + "VARIABLES_GET_CREATE_SET": "Créer « définir %1 »", + "VARIABLES_SET": "définir %1 à %2", + "VARIABLES_SET_TOOLTIP": "Définit cette variable pour qu’elle soit égale à la valeur de l’entrée.", + "VARIABLES_SET_CREATE_GET": "Créer « obtenir %1 »", + "PROCEDURES_DEFNORETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", + "PROCEDURES_DEFNORETURN_TITLE": "pour", + "PROCEDURES_DEFNORETURN_PROCEDURE": "faire quelque chose", + "PROCEDURES_BEFORE_PARAMS": "avec :", + "PROCEDURES_CALL_BEFORE_PARAMS": "avec :", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Crée une fonction sans sortie.", + "PROCEDURES_DEFNORETURN_COMMENT": "Décrivez cette fonction...", + "PROCEDURES_DEFRETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", + "PROCEDURES_DEFRETURN_RETURN": "retourner", + "PROCEDURES_DEFRETURN_TOOLTIP": "Crée une fonction avec une sortie.", + "PROCEDURES_ALLOW_STATEMENTS": "autoriser les ordres", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Attention : cette fonction a des paramètres en doublon.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Exécuter la fonction « %1 » définie par l’utilisateur.", + "PROCEDURES_CALLRETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", + "PROCEDURES_CALLRETURN_TOOLTIP": "Exécuter la fonction « %1 » définie par l’utilisateur et utiliser son résultat.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "entrées", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Ajouter, supprimer, ou réarranger les entrées de cette fonction.", + "PROCEDURES_MUTATORARG_TITLE": "nom de l’entrée :", + "PROCEDURES_MUTATORARG_TOOLTIP": "Ajouter une entrée à la fonction.", + "PROCEDURES_HIGHLIGHT_DEF": "Surligner la définition de la fonction", + "PROCEDURES_CREATE_DO": "Créer « %1 »", + "PROCEDURES_IFRETURN_TOOLTIP": "Si une valeur est vraie, alors renvoyer une seconde valeur.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Attention : ce bloc ne peut être utilisé que dans une définition de fonction.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Expliquez quelque chose...", + "WORKSPACE_ARIA_LABEL": "Espace de travail de Blocky", + "COLLAPSED_WARNINGS_WARNING": "Les blocs repliés contiennent des avertissements.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Annuler" +} diff --git a/msg/json/frr.json b/msg/json/frr.json index e3f776f99d7..ff8413860d3 100644 --- a/msg/json/frr.json +++ b/msg/json/frr.json @@ -1,6 +1,6 @@ -{ - "@metadata": { - "authors": [] - }, - "DIALOG_OK": "OK" -} +{ + "@metadata": { + "authors": [] + }, + "DIALOG_OK": "OK" +} diff --git a/msg/json/gl.json b/msg/json/gl.json index 6dde83f17b0..c89ed5f9f64 100644 --- a/msg/json/gl.json +++ b/msg/json/gl.json @@ -1,147 +1,147 @@ -{ - "@metadata": { - "authors": [ - "Antón Méixome", - "Chairego apc", - "Elisardojm", - "Iváns", - "Macofe", - "Toliño" - ] - }, - "VARIABLES_DEFAULT_NAME": "elemento", - "UNNAMED_KEY": "innominada", - "TODAY": "Hoxe", - "DUPLICATE_BLOCK": "Duplicar", - "ADD_COMMENT": "Engadir un comentario", - "REMOVE_COMMENT": "Eliminar o comentario", - "DUPLICATE_COMMENT": "Duplicar o comentario", - "EXTERNAL_INPUTS": "Entradas externas", - "INLINE_INPUTS": "Entradas en liña", - "DELETE_BLOCK": "Borrar o bloque", - "DELETE_X_BLOCKS": "Borrar %1 bloques", - "DELETE_ALL_BLOCKS": "Queres eliminar os %1 bloques?", - "CLEAN_UP": "Limpar os bloques", - "COLLAPSE_BLOCK": "Contraer o bloque", - "COLLAPSE_ALL": "Contraer os bloques", - "EXPAND_BLOCK": "Expandir o bloque", - "EXPAND_ALL": "Expandir os bloques", - "DISABLE_BLOCK": "Desactivar o bloque", - "ENABLE_BLOCK": "Activar o bloque", - "HELP": "Axuda", - "UNDO": "Desfacer", - "REDO": "Refacer", - "CHANGE_VALUE_TITLE": "Cambiar o valor:", - "RENAME_VARIABLE": "Renomear a variable...", - "RENAME_VARIABLE_TITLE": "Renomear todas as variables \"%1\" a:", - "NEW_VARIABLE": "Crear a variable...", - "NEW_STRING_VARIABLE": "Crar unha variábel de cadea...", - "NEW_VARIABLE_TITLE": "Nome da nova variable:", - "COLOUR_PICKER_HELPURL": "https://gl.wikipedia.org/wiki/Cor", - "COLOUR_PICKER_TOOLTIP": "Escolle unha cor da paleta.", - "COLOUR_RANDOM_TITLE": "cor ó chou", - "COLOUR_RANDOM_TOOLTIP": "Escolle unha cor ao chou.", - "COLOUR_RGB_TITLE": "colorar con", - "COLOUR_RGB_RED": "vermello", - "COLOUR_RGB_GREEN": "verde", - "COLOUR_RGB_BLUE": "azul", - "COLOUR_BLEND_TITLE": "mesturar", - "COLOUR_BLEND_COLOUR1": "cor 1", - "COLOUR_BLEND_COLOUR2": "cor 2", - "COLOUR_BLEND_RATIO": "proporción", - "COLOUR_BLEND_TOOLTIP": "Mestura dúas cores ca proporción indicada (0.0 - 1.0).", - "CONTROLS_REPEAT_INPUT_DO": "facer", - "CONTROLS_REPEAT_TOOLTIP": "Faga algunhas instrucións varias veces.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir mentres", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir ata", - "CONTROLS_IF_MSG_IF": "se", - "CONTROLS_IF_MSG_ELSEIF": "mais se", - "CONTROLS_IF_MSG_ELSE": "senón", - "LOGIC_OPERATION_AND": "e", - "LOGIC_OPERATION_OR": "ou", - "LOGIC_NEGATE_TITLE": "non %1", - "LOGIC_BOOLEAN_TRUE": "verdadeiro", - "LOGIC_BOOLEAN_FALSE": "falso", - "LOGIC_NULL": "nulo", - "LOGIC_NULL_TOOLTIP": "Retornar nulo.", - "LOGIC_TERNARY_CONDITION": "proba", - "LOGIC_TERNARY_IF_TRUE": "se verdadeiro", - "LOGIC_TERNARY_IF_FALSE": "se falso", - "MATH_NUMBER_TOOLTIP": "Un número.", - "MATH_ARITHMETIC_HELPURL": "https://gl.wikipedia.org/wiki/Aritmética", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Retorna a suma de dous números.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retorna a diferenza de dous números.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retorna o produto de dous números.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retorna o cociente da división de dous números.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Retorna o primeiro número elevado á potencia do segundo número.", - "MATH_SINGLE_HELPURL": "https://gl.wikipedia.org/wiki/Raíz_cadrada", - "MATH_SINGLE_OP_ROOT": "raíz cadrada", - "MATH_SINGLE_TOOLTIP_ROOT": "Retorna a raíz cadrada dun número.", - "MATH_SINGLE_OP_ABSOLUTE": "absoluto", - "MATH_SINGLE_TOOLTIP_ABS": "Retorna o valor absoluto dun número.", - "MATH_SINGLE_TOOLTIP_NEG": "Retorna o oposto dun número.", - "MATH_SINGLE_TOOLTIP_LN": "Retorna o logarítmo natural dun número.", - "MATH_SINGLE_TOOLTIP_LOG10": "Retorna o logarítmo en base 10 dun número.", - "MATH_SINGLE_TOOLTIP_EXP": "Retorna o número e elevado á potencia dun número.", - "MATH_SINGLE_TOOLTIP_POW10": "Retorna 10 elevado á potencia dun número.", - "MATH_TRIG_HELPURL": "https://gl.m.wikipedia.org/wiki/Función_trigonométrica", - "MATH_TRIG_TOOLTIP_SIN": "Retorna o seno dun grao (non radiano).", - "MATH_TRIG_TOOLTIP_COS": "Retorna o coseno dun grao (non radiano).", - "MATH_TRIG_TOOLTIP_TAN": "Retorna a tanxente dun grao (non radiano).", - "MATH_TRIG_TOOLTIP_ASIN": "Retorna o arco seno dum número.", - "MATH_TRIG_TOOLTIP_ACOS": "Retorna o arco coseno dun número.", - "MATH_TRIG_TOOLTIP_ATAN": "Retorna o arco tanxente dun número.", - "MATH_CONSTANT_HELPURL": "https://gl.wikipedia.org/wiki/Constante_matemática", - "MATH_CONSTANT_TOOLTIP": "Retorna unha das constantes comúns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito).", - "MATH_IS_EVEN": "é par", - "MATH_IS_ODD": "é impar", - "MATH_IS_PRIME": "é primo", - "MATH_IS_WHOLE": "é enteiro", - "MATH_IS_POSITIVE": "é positivo", - "MATH_IS_NEGATIVE": "é negativo", - "MATH_IS_DIVISIBLE_BY": "é divisíbel por", - "MATH_IS_TOOLTIP": "Verifica se un número é par, impar, primo, enteiro, positivo, negativo, ou se é divisíbel por outro número. Retorna verdadeiro ou falso.", - "MATH_CHANGE_TITLE": "mudar %1 por %2", - "MATH_CHANGE_TOOLTIP": "Suma un número á variábel '%1'.", - "MATH_ROUND_HELPURL": "https://gl.wikipedia.org/wiki/Arredondamento", - "MATH_ROUND_TOOLTIP": "Arredonda un número cara enriba ou cara abaixo.", - "MATH_ROUND_OPERATOR_ROUND": "arredonda", - "MATH_ROUND_OPERATOR_ROUNDUP": "arredonda cara arriba", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "arredonda cara abaixo", - "MATH_ONLIST_OPERATOR_SUM": "suma da listaxe", - "MATH_ONLIST_TOOLTIP_SUM": "Retorna a suma de tódolos números da listaxe.", - "MATH_ONLIST_OPERATOR_MIN": "menor dunha listaxe", - "MATH_ONLIST_TOOLTIP_MIN": "Retorna o menor número da listaxe.", - "MATH_ONLIST_OPERATOR_MAX": "maior dunha listaxe", - "MATH_ONLIST_TOOLTIP_MAX": "Retorna o maior número da listaxe", - "MATH_ONLIST_OPERATOR_AVERAGE": "media dunha listaxe", - "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "no texto", - "TEXT_PRINT_TITLE": "imprime %1", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listaxe", - "LISTS_ISEMPTY_TITLE": "%1 atópase baleira", - "LISTS_ISEMPTY_TOOLTIP": "Retona verdadeiro se a listaxe atópase baleira.", - "LISTS_INLIST": "na listaxe", - "LISTS_GET_INDEX_FIRST": "primeiro", - "LISTS_GET_INDEX_LAST": "derradeiro", - "LISTS_GET_INDEX_RANDOM": "ó chou", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 é o primeiro elemento.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 é o derradeiro elemento.", - "LISTS_SET_INDEX_SET": "definir", - "LISTS_SET_INDEX_INSERT": "inserir en", - "LISTS_SET_INDEX_INPUT_TO": "como", - "LISTS_SORT_TOOLTIP": "Ordear unha copia dunha listaxe.", - "LISTS_SORT_ORDER_ASCENDING": "ascendente", - "LISTS_SORT_ORDER_DESCENDING": "descendente", - "LISTS_SORT_TYPE_NUMERIC": "numérica", - "LISTS_SORT_TYPE_TEXT": "alfabética", - "LISTS_SORT_TYPE_IGNORECASE": "alfabética, iñorar maiúsculas/minúsculas", - "PROCEDURES_DEFNORETURN_TITLE": "cara", - "PROCEDURES_DEFNORETURN_PROCEDURE": "facer algo", - "PROCEDURES_BEFORE_PARAMS": "con:", - "PROCEDURES_CALL_BEFORE_PARAMS": "con:", - "PROCEDURES_DEFRETURN_RETURN": "retornar", - "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", - "DIALOG_OK": "Aceptar", - "DIALOG_CANCEL": "Cancelar" -} +{ + "@metadata": { + "authors": [ + "Antón Méixome", + "Chairego apc", + "Elisardojm", + "Iváns", + "Macofe", + "Toliño" + ] + }, + "VARIABLES_DEFAULT_NAME": "elemento", + "UNNAMED_KEY": "innominada", + "TODAY": "Hoxe", + "DUPLICATE_BLOCK": "Duplicar", + "ADD_COMMENT": "Engadir un comentario", + "REMOVE_COMMENT": "Eliminar o comentario", + "DUPLICATE_COMMENT": "Duplicar o comentario", + "EXTERNAL_INPUTS": "Entradas externas", + "INLINE_INPUTS": "Entradas en liña", + "DELETE_BLOCK": "Borrar o bloque", + "DELETE_X_BLOCKS": "Borrar %1 bloques", + "DELETE_ALL_BLOCKS": "Queres eliminar os %1 bloques?", + "CLEAN_UP": "Limpar os bloques", + "COLLAPSE_BLOCK": "Contraer o bloque", + "COLLAPSE_ALL": "Contraer os bloques", + "EXPAND_BLOCK": "Expandir o bloque", + "EXPAND_ALL": "Expandir os bloques", + "DISABLE_BLOCK": "Desactivar o bloque", + "ENABLE_BLOCK": "Activar o bloque", + "HELP": "Axuda", + "UNDO": "Desfacer", + "REDO": "Refacer", + "CHANGE_VALUE_TITLE": "Cambiar o valor:", + "RENAME_VARIABLE": "Renomear a variable...", + "RENAME_VARIABLE_TITLE": "Renomear todas as variables \"%1\" a:", + "NEW_VARIABLE": "Crear a variable...", + "NEW_STRING_VARIABLE": "Crar unha variábel de cadea...", + "NEW_VARIABLE_TITLE": "Nome da nova variable:", + "COLOUR_PICKER_HELPURL": "https://gl.wikipedia.org/wiki/Cor", + "COLOUR_PICKER_TOOLTIP": "Escolle unha cor da paleta.", + "COLOUR_RANDOM_TITLE": "cor ó chou", + "COLOUR_RANDOM_TOOLTIP": "Escolle unha cor ao chou.", + "COLOUR_RGB_TITLE": "colorar con", + "COLOUR_RGB_RED": "vermello", + "COLOUR_RGB_GREEN": "verde", + "COLOUR_RGB_BLUE": "azul", + "COLOUR_BLEND_TITLE": "mesturar", + "COLOUR_BLEND_COLOUR1": "cor 1", + "COLOUR_BLEND_COLOUR2": "cor 2", + "COLOUR_BLEND_RATIO": "proporción", + "COLOUR_BLEND_TOOLTIP": "Mestura dúas cores ca proporción indicada (0.0 - 1.0).", + "CONTROLS_REPEAT_INPUT_DO": "facer", + "CONTROLS_REPEAT_TOOLTIP": "Faga algunhas instrucións varias veces.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir mentres", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir ata", + "CONTROLS_IF_MSG_IF": "se", + "CONTROLS_IF_MSG_ELSEIF": "mais se", + "CONTROLS_IF_MSG_ELSE": "senón", + "LOGIC_OPERATION_AND": "e", + "LOGIC_OPERATION_OR": "ou", + "LOGIC_NEGATE_TITLE": "non %1", + "LOGIC_BOOLEAN_TRUE": "verdadeiro", + "LOGIC_BOOLEAN_FALSE": "falso", + "LOGIC_NULL": "nulo", + "LOGIC_NULL_TOOLTIP": "Retornar nulo.", + "LOGIC_TERNARY_CONDITION": "proba", + "LOGIC_TERNARY_IF_TRUE": "se verdadeiro", + "LOGIC_TERNARY_IF_FALSE": "se falso", + "MATH_NUMBER_TOOLTIP": "Un número.", + "MATH_ARITHMETIC_HELPURL": "https://gl.wikipedia.org/wiki/Aritmética", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Retorna a suma de dous números.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retorna a diferenza de dous números.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retorna o produto de dous números.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retorna o cociente da división de dous números.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Retorna o primeiro número elevado á potencia do segundo número.", + "MATH_SINGLE_HELPURL": "https://gl.wikipedia.org/wiki/Raíz_cadrada", + "MATH_SINGLE_OP_ROOT": "raíz cadrada", + "MATH_SINGLE_TOOLTIP_ROOT": "Retorna a raíz cadrada dun número.", + "MATH_SINGLE_OP_ABSOLUTE": "absoluto", + "MATH_SINGLE_TOOLTIP_ABS": "Retorna o valor absoluto dun número.", + "MATH_SINGLE_TOOLTIP_NEG": "Retorna o oposto dun número.", + "MATH_SINGLE_TOOLTIP_LN": "Retorna o logarítmo natural dun número.", + "MATH_SINGLE_TOOLTIP_LOG10": "Retorna o logarítmo en base 10 dun número.", + "MATH_SINGLE_TOOLTIP_EXP": "Retorna o número e elevado á potencia dun número.", + "MATH_SINGLE_TOOLTIP_POW10": "Retorna 10 elevado á potencia dun número.", + "MATH_TRIG_HELPURL": "https://gl.m.wikipedia.org/wiki/Función_trigonométrica", + "MATH_TRIG_TOOLTIP_SIN": "Retorna o seno dun grao (non radiano).", + "MATH_TRIG_TOOLTIP_COS": "Retorna o coseno dun grao (non radiano).", + "MATH_TRIG_TOOLTIP_TAN": "Retorna a tanxente dun grao (non radiano).", + "MATH_TRIG_TOOLTIP_ASIN": "Retorna o arco seno dum número.", + "MATH_TRIG_TOOLTIP_ACOS": "Retorna o arco coseno dun número.", + "MATH_TRIG_TOOLTIP_ATAN": "Retorna o arco tanxente dun número.", + "MATH_CONSTANT_HELPURL": "https://gl.wikipedia.org/wiki/Constante_matemática", + "MATH_CONSTANT_TOOLTIP": "Retorna unha das constantes comúns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito).", + "MATH_IS_EVEN": "é par", + "MATH_IS_ODD": "é impar", + "MATH_IS_PRIME": "é primo", + "MATH_IS_WHOLE": "é enteiro", + "MATH_IS_POSITIVE": "é positivo", + "MATH_IS_NEGATIVE": "é negativo", + "MATH_IS_DIVISIBLE_BY": "é divisíbel por", + "MATH_IS_TOOLTIP": "Verifica se un número é par, impar, primo, enteiro, positivo, negativo, ou se é divisíbel por outro número. Retorna verdadeiro ou falso.", + "MATH_CHANGE_TITLE": "mudar %1 por %2", + "MATH_CHANGE_TOOLTIP": "Suma un número á variábel '%1'.", + "MATH_ROUND_HELPURL": "https://gl.wikipedia.org/wiki/Arredondamento", + "MATH_ROUND_TOOLTIP": "Arredonda un número cara enriba ou cara abaixo.", + "MATH_ROUND_OPERATOR_ROUND": "arredonda", + "MATH_ROUND_OPERATOR_ROUNDUP": "arredonda cara arriba", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "arredonda cara abaixo", + "MATH_ONLIST_OPERATOR_SUM": "suma da listaxe", + "MATH_ONLIST_TOOLTIP_SUM": "Retorna a suma de tódolos números da listaxe.", + "MATH_ONLIST_OPERATOR_MIN": "menor dunha listaxe", + "MATH_ONLIST_TOOLTIP_MIN": "Retorna o menor número da listaxe.", + "MATH_ONLIST_OPERATOR_MAX": "maior dunha listaxe", + "MATH_ONLIST_TOOLTIP_MAX": "Retorna o maior número da listaxe", + "MATH_ONLIST_OPERATOR_AVERAGE": "media dunha listaxe", + "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "no texto", + "TEXT_PRINT_TITLE": "imprime %1", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listaxe", + "LISTS_ISEMPTY_TITLE": "%1 atópase baleira", + "LISTS_ISEMPTY_TOOLTIP": "Retona verdadeiro se a listaxe atópase baleira.", + "LISTS_INLIST": "na listaxe", + "LISTS_GET_INDEX_FIRST": "primeiro", + "LISTS_GET_INDEX_LAST": "derradeiro", + "LISTS_GET_INDEX_RANDOM": "ó chou", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 é o primeiro elemento.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 é o derradeiro elemento.", + "LISTS_SET_INDEX_SET": "definir", + "LISTS_SET_INDEX_INSERT": "inserir en", + "LISTS_SET_INDEX_INPUT_TO": "como", + "LISTS_SORT_TOOLTIP": "Ordear unha copia dunha listaxe.", + "LISTS_SORT_ORDER_ASCENDING": "ascendente", + "LISTS_SORT_ORDER_DESCENDING": "descendente", + "LISTS_SORT_TYPE_NUMERIC": "numérica", + "LISTS_SORT_TYPE_TEXT": "alfabética", + "LISTS_SORT_TYPE_IGNORECASE": "alfabética, iñorar maiúsculas/minúsculas", + "PROCEDURES_DEFNORETURN_TITLE": "cara", + "PROCEDURES_DEFNORETURN_PROCEDURE": "facer algo", + "PROCEDURES_BEFORE_PARAMS": "con:", + "PROCEDURES_CALL_BEFORE_PARAMS": "con:", + "PROCEDURES_DEFRETURN_RETURN": "retornar", + "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", + "DIALOG_OK": "Aceptar", + "DIALOG_CANCEL": "Cancelar" +} diff --git a/msg/json/gn.json b/msg/json/gn.json index e880a0ca9d7..12def737a4b 100644 --- a/msg/json/gn.json +++ b/msg/json/gn.json @@ -1,53 +1,53 @@ -{ - "@metadata": { - "authors": [ - "P. S. F. Freitas" - ] - }, - "VARIABLES_DEFAULT_NAME": "temimoĩmby", - "TODAY": "Ko ára", - "DUPLICATE_BLOCK": "Momokõi", - "ADD_COMMENT": "Ñeimo'ã", - "REMOVE_COMMENT": "Toipe'a Ñeimo'ã", - "DUPLICATE_COMMENT": "Toñemokõi Ñeimo'ã", - "EXTERNAL_INPUTS": "Jeikeha Okapegua", - "INLINE_INPUTS": "Jeikeha Pypegua", - "DELETE_BLOCK": "Tojeipe'a Atýra", - "DELETE_X_BLOCKS": "Tojeipe'a %1 Atýra", - "DELETE_ALL_BLOCKS": "Reipe'asépa opa %1 atýra?", - "CLEAN_UP": "Toñemopotĩ Atýra kuéra", - "COLLAPSE_BLOCK": "Toñemomichĩ Atýra", - "COLLAPSE_ALL": "Toñemomichĩ Atýra kuéra", - "EXPAND_BLOCK": "Toñembotuicha Atýra", - "EXPAND_ALL": "Toñembotuicha Atýra kuéra", - "DISABLE_BLOCK": "Toñemboiko'ỹ Atýra", - "ENABLE_BLOCK": "Toñemboiko Atýra", - "HELP": "Pytyvõhára", - "UNDO": "Tojehara", - "REDO": "Jey", - "CHANGE_VALUE_TITLE": "Tepy ñemoambueː", - "COLOUR_RGB_RED": "pytã", - "COLOUR_RGB_GREEN": "hovyũ", - "COLOUR_RGB_BLUE": "hovy", - "COLOUR_RGB_TOOLTIP": "Ejapo hag̃ua peteĩ sa'y eñembopara pytã, hovyũ ha hovy. Opa papaha oĩ va'erã 0 ha 100 imbytépe.", - "COLOUR_BLEND_TITLE": "mbopara", - "COLOUR_BLEND_COLOUR1": "sa'y 1", - "COLOUR_BLEND_COLOUR2": "sa'y 2", - "COLOUR_BLEND_RATIO": "jojaha", - "CONTROLS_REPEAT_INPUT_DO": "japo", - "LOGIC_OPERATION_AND": "ha", - "LOGIC_OPERATION_OR": "térã", - "LOGIC_BOOLEAN_TRUE": "añete", - "LOGIC_BOOLEAN_FALSE": "japu", - "LOGIC_NULL": "mba'evegua", - "LOGIC_TERNARY_CONDITION": "ñeha'ã", - "LOGIC_TERNARY_IF_TRUE": "iñañetérõ", - "LOGIC_TERNARY_IF_FALSE": "ijapúrõ", - "MATH_ARITHMETIC_HELPURL": "https://es.wikipedia.org/wiki/Aritmética", - "TEXT_ISEMPTY_TITLE": "%1 inandi", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "tysýi", - "LISTS_SORT_TYPE_NUMERIC": "papaha rupi", - "LISTS_SORT_TYPE_TEXT": "achengety rupi", - "LISTS_SORT_TYPE_IGNORECASE": "achengety rupi, taiguasu ha tai'i jehecha'ỹre", - "DIALOG_OK": "Oĩma" -} +{ + "@metadata": { + "authors": [ + "P. S. F. Freitas" + ] + }, + "VARIABLES_DEFAULT_NAME": "temimoĩmby", + "TODAY": "Ko ára", + "DUPLICATE_BLOCK": "Momokõi", + "ADD_COMMENT": "Ñeimo'ã", + "REMOVE_COMMENT": "Toipe'a Ñeimo'ã", + "DUPLICATE_COMMENT": "Toñemokõi Ñeimo'ã", + "EXTERNAL_INPUTS": "Jeikeha Okapegua", + "INLINE_INPUTS": "Jeikeha Pypegua", + "DELETE_BLOCK": "Tojeipe'a Atýra", + "DELETE_X_BLOCKS": "Tojeipe'a %1 Atýra", + "DELETE_ALL_BLOCKS": "Reipe'asépa opa %1 atýra?", + "CLEAN_UP": "Toñemopotĩ Atýra kuéra", + "COLLAPSE_BLOCK": "Toñemomichĩ Atýra", + "COLLAPSE_ALL": "Toñemomichĩ Atýra kuéra", + "EXPAND_BLOCK": "Toñembotuicha Atýra", + "EXPAND_ALL": "Toñembotuicha Atýra kuéra", + "DISABLE_BLOCK": "Toñemboiko'ỹ Atýra", + "ENABLE_BLOCK": "Toñemboiko Atýra", + "HELP": "Pytyvõhára", + "UNDO": "Tojehara", + "REDO": "Jey", + "CHANGE_VALUE_TITLE": "Tepy ñemoambueː", + "COLOUR_RGB_RED": "pytã", + "COLOUR_RGB_GREEN": "hovyũ", + "COLOUR_RGB_BLUE": "hovy", + "COLOUR_RGB_TOOLTIP": "Ejapo hag̃ua peteĩ sa'y eñembopara pytã, hovyũ ha hovy. Opa papaha oĩ va'erã 0 ha 100 imbytépe.", + "COLOUR_BLEND_TITLE": "mbopara", + "COLOUR_BLEND_COLOUR1": "sa'y 1", + "COLOUR_BLEND_COLOUR2": "sa'y 2", + "COLOUR_BLEND_RATIO": "jojaha", + "CONTROLS_REPEAT_INPUT_DO": "japo", + "LOGIC_OPERATION_AND": "ha", + "LOGIC_OPERATION_OR": "térã", + "LOGIC_BOOLEAN_TRUE": "añete", + "LOGIC_BOOLEAN_FALSE": "japu", + "LOGIC_NULL": "mba'evegua", + "LOGIC_TERNARY_CONDITION": "ñeha'ã", + "LOGIC_TERNARY_IF_TRUE": "iñañetérõ", + "LOGIC_TERNARY_IF_FALSE": "ijapúrõ", + "MATH_ARITHMETIC_HELPURL": "https://es.wikipedia.org/wiki/Aritmética", + "TEXT_ISEMPTY_TITLE": "%1 inandi", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "tysýi", + "LISTS_SORT_TYPE_NUMERIC": "papaha rupi", + "LISTS_SORT_TYPE_TEXT": "achengety rupi", + "LISTS_SORT_TYPE_IGNORECASE": "achengety rupi, taiguasu ha tai'i jehecha'ỹre", + "DIALOG_OK": "Oĩma" +} diff --git a/msg/json/gor.json b/msg/json/gor.json index 2128e88b0cf..16a2fd2da78 100644 --- a/msg/json/gor.json +++ b/msg/json/gor.json @@ -1,94 +1,94 @@ -{ - "@metadata": { - "authors": [ - "Lukman Tomayahu", - "Marwan Mohamad", - "RFenichel", - "Zhoelyakin" - ] - }, - "VARIABLES_DEFAULT_NAME": "item", - "TODAY": "Engontiye", - "DUPLICATE_BLOCK": "Duplikat", - "ADD_COMMENT": "Moduhenga tuladu", - "REMOVE_COMMENT": "Mohinggi tuladu", - "EXTERNAL_INPUTS": "tuwanga lonto eksternal", - "INLINE_INPUTS": "tuwanga lo inline", - "DELETE_BLOCK": "Moluluto Blok", - "DELETE_X_BLOCKS": "Moluluto %1 Blok", - "DELETE_ALL_BLOCKS": "Luluta nga'amila %1 blocks?", - "COLLAPSE_BLOCK": "Mohe'uto Blok", - "COLLAPSE_ALL": "Mohe'uto Blok", - "EXPAND_BLOCK": "Lolade Blok", - "EXPAND_ALL": "Lolade Blok", - "DISABLE_BLOCK": "Moberenti Blok", - "ENABLE_BLOCK": "Momulayi Blok", - "HELP": "Tuulungi", - "CHANGE_VALUE_TITLE": "Ubawa nilai", - "RENAME_VARIABLE": "Tangguli uulangi variabel", - "RENAME_VARIABLE_TITLE": "Tangguli uulangi nga'amila % variabel ode:", - "NEW_VARIABLE": "Variabel bohu...", - "NEW_VARIABLE_TITLE": "Tanggulo Variabel bohu", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Laku", - "COLOUR_PICKER_TOOLTIP": "Piliya laku lonto daputari lo laku", - "COLOUR_RANDOM_TITLE": "Laku acak", - "COLOUR_RANDOM_TOOLTIP": "Piliya laku acak", - "COLOUR_RGB_TITLE": "wolo laku", - "COLOUR_RGB_RED": "meela", - "COLOUR_RGB_GREEN": "moyidu", - "COLOUR_RGB_BLUE": "wahu'ente", - "COLOUR_RGB_TOOLTIP": "Pohutuwa laku wolo jumula u tilantu monto u meela, moyidu wawu wahu'ente. Nga'amila musi o woolota 0 wawu 100", - "COLOUR_BLEND_TITLE": "Ulawuwa", - "COLOUR_BLEND_COLOUR1": "laku 1", - "COLOUR_BLEND_COLOUR2": "laku 2", - "COLOUR_BLEND_RATIO": "rasio", - "COLOUR_BLEND_TOOLTIP": "Mongulawu dulo laku pe'eenta wolo rasio (0.0-1.0)", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "ulangiya %1 kali", - "CONTROLS_REPEAT_INPUT_DO": "pohutuwa", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Ulangiya wonu", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ulangiya sambe", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Wonu nilai banari, pohutuwa po'ongoolo", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Wonu nilai diya banari, pohutuwa parenta", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Mokaluwari lonto u'uulangiya", - "CONTROLS_IF_MSG_IF": "wonu", - "CONTROLS_IF_MSG_ELSEIF": "wonu uweewo", - "CONTROLS_IF_MSG_ELSE": "uweewo", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_OPERATION_AND": "wawu", - "LOGIC_OPERATION_OR": "meyalo", - "LOGIC_NEGATE_TITLE": "diila %1", - "LOGIC_BOOLEAN_TRUE": "banari", - "LOGIC_BOOLEAN_FALSE": "tala", - "LOGIC_NULL": "noolo", - "LOGIC_TERNARY_CONDITION": "yimontalo", - "LOGIC_TERNARY_IF_TRUE": "wonu banari", - "LOGIC_TERNARY_IF_FALSE": "wonu tala", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Noomoro", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "akar pangkat dua", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", - "TEXT_CREATE_JOIN_TITLE_JOIN": "wayito", - "TEXT_CREATE_JOIN_TOOLTIP": "Duhengi, yinggila, meyalo susungiya ulangi tuladu blok.", - "TEXT_LENGTH_TITLE": "haya'o lo %1", - "TEXT_ISEMPTY_TITLE": "%1 koosongi", - "TEXT_ISEMPTY_TOOLTIP": "Pohalinga banari wonu tuladu u sadi-sadia koosongi.", - "TEXT_INDEXOF_OPERATOR_FIRST": "lolohe u yilowali bohuliyo to delomo tuladu", - "TEXT_INDEXOF_OPERATOR_LAST": "lolohe u yilowali pulitiyo to delomo tuladu", - "TEXT_CHARAT_FROM_START": "hama hurupu #", - "TEXT_CHARAT_FROM_END": "hama hurupu # monto wuleya", - "TEXT_CHARAT_FIRST": "hama tulade bungaliyo", - "TEXT_CHARAT_LAST": "hama tulade pulitiyo", - "TEXT_CHARAT_RANDOM": "hama tulade ambulati", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "to delomo tuladu", - "TEXT_GET_SUBSTRING_END_FROM_START": "ode hurupu", - "TEXT_GET_SUBSTRING_END_FROM_END": "ode tuladu # monto wuleya", - "TEXT_GET_SUBSTRING_END_LAST": "to tulade pulitiyo", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "mowali HURUPU DAMANGO", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "mowali hurupu kiki'o", - "PROCEDURES_CREATE_DO": "Pohutu '%1'" -} +{ + "@metadata": { + "authors": [ + "Lukman Tomayahu", + "Marwan Mohamad", + "RFenichel", + "Zhoelyakin" + ] + }, + "VARIABLES_DEFAULT_NAME": "item", + "TODAY": "Engontiye", + "DUPLICATE_BLOCK": "Duplikat", + "ADD_COMMENT": "Moduhenga tuladu", + "REMOVE_COMMENT": "Mohinggi tuladu", + "EXTERNAL_INPUTS": "tuwanga lonto eksternal", + "INLINE_INPUTS": "tuwanga lo inline", + "DELETE_BLOCK": "Moluluto Blok", + "DELETE_X_BLOCKS": "Moluluto %1 Blok", + "DELETE_ALL_BLOCKS": "Luluta nga'amila %1 blocks?", + "COLLAPSE_BLOCK": "Mohe'uto Blok", + "COLLAPSE_ALL": "Mohe'uto Blok", + "EXPAND_BLOCK": "Lolade Blok", + "EXPAND_ALL": "Lolade Blok", + "DISABLE_BLOCK": "Moberenti Blok", + "ENABLE_BLOCK": "Momulayi Blok", + "HELP": "Tuulungi", + "CHANGE_VALUE_TITLE": "Ubawa nilai", + "RENAME_VARIABLE": "Tangguli uulangi variabel", + "RENAME_VARIABLE_TITLE": "Tangguli uulangi nga'amila % variabel ode:", + "NEW_VARIABLE": "Variabel bohu...", + "NEW_VARIABLE_TITLE": "Tanggulo Variabel bohu", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Laku", + "COLOUR_PICKER_TOOLTIP": "Piliya laku lonto daputari lo laku", + "COLOUR_RANDOM_TITLE": "Laku acak", + "COLOUR_RANDOM_TOOLTIP": "Piliya laku acak", + "COLOUR_RGB_TITLE": "wolo laku", + "COLOUR_RGB_RED": "meela", + "COLOUR_RGB_GREEN": "moyidu", + "COLOUR_RGB_BLUE": "wahu'ente", + "COLOUR_RGB_TOOLTIP": "Pohutuwa laku wolo jumula u tilantu monto u meela, moyidu wawu wahu'ente. Nga'amila musi o woolota 0 wawu 100", + "COLOUR_BLEND_TITLE": "Ulawuwa", + "COLOUR_BLEND_COLOUR1": "laku 1", + "COLOUR_BLEND_COLOUR2": "laku 2", + "COLOUR_BLEND_RATIO": "rasio", + "COLOUR_BLEND_TOOLTIP": "Mongulawu dulo laku pe'eenta wolo rasio (0.0-1.0)", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "ulangiya %1 kali", + "CONTROLS_REPEAT_INPUT_DO": "pohutuwa", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Ulangiya wonu", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ulangiya sambe", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Wonu nilai banari, pohutuwa po'ongoolo", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Wonu nilai diya banari, pohutuwa parenta", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Mokaluwari lonto u'uulangiya", + "CONTROLS_IF_MSG_IF": "wonu", + "CONTROLS_IF_MSG_ELSEIF": "wonu uweewo", + "CONTROLS_IF_MSG_ELSE": "uweewo", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_OPERATION_AND": "wawu", + "LOGIC_OPERATION_OR": "meyalo", + "LOGIC_NEGATE_TITLE": "diila %1", + "LOGIC_BOOLEAN_TRUE": "banari", + "LOGIC_BOOLEAN_FALSE": "tala", + "LOGIC_NULL": "noolo", + "LOGIC_TERNARY_CONDITION": "yimontalo", + "LOGIC_TERNARY_IF_TRUE": "wonu banari", + "LOGIC_TERNARY_IF_FALSE": "wonu tala", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Noomoro", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "akar pangkat dua", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", + "TEXT_CREATE_JOIN_TITLE_JOIN": "wayito", + "TEXT_CREATE_JOIN_TOOLTIP": "Duhengi, yinggila, meyalo susungiya ulangi tuladu blok.", + "TEXT_LENGTH_TITLE": "haya'o lo %1", + "TEXT_ISEMPTY_TITLE": "%1 koosongi", + "TEXT_ISEMPTY_TOOLTIP": "Pohalinga banari wonu tuladu u sadi-sadia koosongi.", + "TEXT_INDEXOF_OPERATOR_FIRST": "lolohe u yilowali bohuliyo to delomo tuladu", + "TEXT_INDEXOF_OPERATOR_LAST": "lolohe u yilowali pulitiyo to delomo tuladu", + "TEXT_CHARAT_FROM_START": "hama hurupu #", + "TEXT_CHARAT_FROM_END": "hama hurupu # monto wuleya", + "TEXT_CHARAT_FIRST": "hama tulade bungaliyo", + "TEXT_CHARAT_LAST": "hama tulade pulitiyo", + "TEXT_CHARAT_RANDOM": "hama tulade ambulati", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "to delomo tuladu", + "TEXT_GET_SUBSTRING_END_FROM_START": "ode hurupu", + "TEXT_GET_SUBSTRING_END_FROM_END": "ode tuladu # monto wuleya", + "TEXT_GET_SUBSTRING_END_LAST": "to tulade pulitiyo", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "mowali HURUPU DAMANGO", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "mowali hurupu kiki'o", + "PROCEDURES_CREATE_DO": "Pohutu '%1'" +} diff --git a/msg/json/ha.json b/msg/json/ha.json index 9f11230c773..1d3c2511f88 100644 --- a/msg/json/ha.json +++ b/msg/json/ha.json @@ -1,331 +1,331 @@ -{ - "@metadata": { - "authors": [ - "Mapmeld" - ] - }, - "VARIABLES_DEFAULT_NAME": "waniabu", - "TODAY": "Yau", - "DUPLICATE_BLOCK": "Yi kwafi", - "ADD_COMMENT": "Daɗa Sharhi", - "REMOVE_COMMENT": "Cire Sharhi", - "DUPLICATE_COMMENT": "Kwafi Sharhi", - "EXTERNAL_INPUTS": "Bayanan Waje", - "INLINE_INPUTS": "Bayanai na Cikin layi", - "DELETE_BLOCK": "Goge Bulo", - "DELETE_X_BLOCKS": "Goge Bulo %1", - "DELETE_ALL_BLOCKS": "A goge duk bululluka %1?", - "CLEAN_UP": "A share Bululluka", - "COLLAPSE_BLOCK": "Rusa Bulo", - "COLLAPSE_ALL": "Rusa Bululluka", - "EXPAND_BLOCK": "Faɗaɗa Bulo", - "EXPAND_ALL": "Faɗaɗa Bulullaka", - "DISABLE_BLOCK": "Kashe Bulo", - "ENABLE_BLOCK": "Kunna Bulo", - "HELP": "Taimako", - "UNDO": "Fasa", - "REDO": "Sake", - "CHANGE_VALUE_TITLE": "Canza kima:", - "RENAME_VARIABLE": "Sake sunan siffa...", - "RENAME_VARIABLE_TITLE": "Sake sunnan duk siffofi '%1' zuwa:", - "NEW_VARIABLE": "Ƙirƙiri siffofi...", - "NEW_STRING_VARIABLE": "Ƙiriƙiri kalmar siffa...", - "NEW_NUMBER_VARIABLE": "Ƙirƙiri siffa ta lamba...", - "NEW_COLOUR_VARIABLE": "Ƙirƙiri siffa ta launi...", - "NEW_VARIABLE_TYPE_TITLE": "Irin sabuwar siffa:", - "NEW_VARIABLE_TITLE": "Sunan sabuwar siffa:", - "VARIABLE_ALREADY_EXISTS": "Tuni akwai sunnan siffa da aka kira '%1'.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Tuni akwai sunan siffa da aka kira '%1' domin wata iri ta: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "A goge amfanunnukan %1 na siffar '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "An kasa goge siffa '%1' sabo da tana daga sashi na bayanin aikin '%2'", - "DELETE_VARIABLE": "A goge siffar '%1'", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Zaɓi launi daga faifan launuka.", - "COLOUR_RANDOM_TITLE": "launuka da aka hargitsa", - "COLOUR_RANDOM_TOOLTIP": "Zaɓi launi daga wanɗanda aka hargitsa.", - "COLOUR_RGB_TITLE": "launi tare da", - "COLOUR_RGB_RED": "ja", - "COLOUR_RGB_GREEN": "kore", - "COLOUR_RGB_BLUE": "shuɗi", - "COLOUR_RGB_TOOLTIP": "Ƙirƙiri launi tare da wani yawa da aka fayyace na ja, kore, da shuɗi. Duk kimomin dole su zamo tsakanin 0 da 100.", - "COLOUR_BLEND_TITLE": "gauraya", - "COLOUR_BLEND_COLOUR1": "launi na 1", - "COLOUR_BLEND_COLOUR2": "launi na 2", - "COLOUR_BLEND_RATIO": "lissafi", - "COLOUR_BLEND_TOOLTIP": "Ana gauraya launuka biyu tare da wani lissafi da aka bayar (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "maimaita sau %1", - "CONTROLS_REPEAT_INPUT_DO": "yi", - "CONTROLS_REPEAT_TOOLTIP": "Yi wasu bayanai sau da dama.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "maimaita yayin da", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "maimaita har sai", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Yayin da wata kima ta zama gaskiya, maimaita wasu lambobi.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Yayin da wata kima ta zama ƙarya, maimaita wasu lambobi.", - "CONTROLS_FOR_TOOLTIP": "Sami siffar '%1' ta ɗauki kowa ce kima daga lambar da aka fara da ita zuwa lambar da aka ƙare da ita, ana ƙirgawa daga wata tazara da aka fayyace. Maimaita wannan lamba a kowane lokaci:", - "CONTROLS_FOR_TITLE": "Ƙirga da %1 daga %2 zuwa %3 ƙara %4", - "CONTROLS_FOREACH_TITLE": "ga kowane abu %1 a cikin jeri %2", - "CONTROLS_FOREACH_TOOLTIP": "Ga kowane abu a jeri, saka siffar '%1' zuwa ga abin, sannan a maimaita wasu lambobin.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ɓalle daga cikin kewaye", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fara da maimaitawa ta gaba ta kewaye", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ɓalle daga kewaye wanda ya ƙunsa.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Tsallake sauran wannan kewaye, sannan kuma a ci gaba da maimaitawa ta gaba ta kewaye.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Gargaɗi: Wannan bulon za a iya amfani da shi ne kawai a wajen kewaye.", - "CONTROLS_IF_TOOLTIP_1": "Idan kima gaskiya ce, to a yi wasu maganganu.", - "CONTROLS_IF_TOOLTIP_2": "Idan kimar gaskiya ce, to a yi bulo na farko na maganganu. Idan ba haka ba, yi bulo na biyu na maganganu.", - "CONTROLS_IF_TOOLTIP_3": "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun.", - "CONTROLS_IF_TOOLTIP_4": "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun. Idan babu kimar da take gaskiya, yi bulo na ƙarshe na maganganun.", - "CONTROLS_IF_MSG_IF": "idan", - "CONTROLS_IF_MSG_ELSEIF": "wani idan", - "CONTROLS_IF_MSG_ELSE": "wani", - "CONTROLS_IF_IF_TOOLTIP": "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan idan bulo.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Daɗa sharaɗi zuwa idan bulo.", - "CONTROLS_IF_ELSE_TOOLTIP": "Daɗa na ƙarshe, sharaɗin kama-duk zuwa idan bulo.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Koma gaskiya idan duk bayanan sun yi dai dai da juna.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Koma gaskiya idan duk bayanan ba su yi dai dai da juna ba.", - "LOGIC_COMPARE_TOOLTIP_LT": "Koma gaskiya idan bayanin farko ya fi na biyu ƙanƙanta.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Koma gaskiya idan bayanin farko ya fi ƙanƙanta ko dai dai da bayani na biyu.", - "LOGIC_COMPARE_TOOLTIP_GT": "Koma gaskiya idan bayanin farko ya fi bayani na biyu yawa.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Koma gaskiya idan bayanin farko ya fi ko ya yi dai dai da bayani na biyu.", - "LOGIC_OPERATION_TOOLTIP_AND": "Koma gaskiya idan duk bayanan gaskiya ne.", - "LOGIC_OPERATION_AND": "kuma", - "LOGIC_OPERATION_TOOLTIP_OR": "Koma gaskiya idan a ƙalla ɗayan bayanan gaskiya ne.", - "LOGIC_OPERATION_OR": "ko", - "LOGIC_NEGATE_TITLE": "ba %1", - "LOGIC_NEGATE_TOOLTIP": "Koma gaskiya idan bayanin ƙarya ne. Koma ƙarya idan bayanin gaskiya ne.", - "LOGIC_BOOLEAN_TRUE": "gaskiya", - "LOGIC_BOOLEAN_FALSE": "ƙarya", - "LOGIC_BOOLEAN_TOOLTIP": "Ya koma kodai gaskiya ko ƙarya.", - "LOGIC_NULL": "maras amfani", - "LOGIC_NULL_TOOLTIP": "Ya koma maras amfani.", - "LOGIC_TERNARY_CONDITION": "gwaji", - "LOGIC_TERNARY_IF_TRUE": "idan gaskiya ne", - "LOGIC_TERNARY_IF_FALSE": "idan ƙarya ne", - "LOGIC_TERNARY_TOOLTIP": "Duba sharaɗin a cikin 'gwaji'. Idan sharaɗin gaskiya ne, mayar da kimar 'idan gaskiya ne'; idan ba haka ba mayar da kimar 'idan ƙarya ne'.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Lambda.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Dawo da jumlar lambobin guda biyu.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Dawo da bambancin lambobin guda biyu.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Dawo da ruɓin lambobin guda biyu.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Dawo da sakamakon lambobin guda biyu bayan an raba su da juna.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Dawo da lambar farko wadda aka ɗaga ta zuwa ƙarfin lamba ta biyu.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "lamba da ta ruɓanya kanta", - "MATH_SINGLE_TOOLTIP_ROOT": "Dawo da wata lamba da ta ruɓanya kanta.", - "MATH_SINGLE_OP_ABSOLUTE": "cikakkiya", - "MATH_SINGLE_TOOLTIP_ABS": "Dawo da cikakkiyar kima na wata lamba.", - "MATH_SINGLE_TOOLTIP_NEG": "Dawo da kishiya na wata lamba.", - "MATH_SINGLE_TOOLTIP_LN": "Dawo da jerin lambobi da aka tara ko aka ɗebe.", - "MATH_SINGLE_TOOLTIP_LOG10": "Dawo da tushe 10 na jerin lambobi da aka tara ko aka ɗebe na wata lamba.", - "MATH_SINGLE_TOOLTIP_EXP": "Dawo da e zuwa ƙarfin wata lamba.", - "MATH_SINGLE_TOOLTIP_POW10": "Dawo da 10 zuwa ƙarfin wata lamba.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Dawo da sine na wani gwargwado (banda layin kusurwar waje).", - "MATH_TRIG_TOOLTIP_COS": "Dawo da cosine na wani gwargwado (banda layin kusurwar waje).", - "MATH_TRIG_TOOLTIP_TAN": "Dawo da tangent na wani gwargwado (banda layin kusurwar waje).", - "MATH_TRIG_TOOLTIP_ASIN": "Dawo da arcsine na wata lamba.", - "MATH_TRIG_TOOLTIP_ACOS": "Dawo da arccosine na wata lamba.", - "MATH_TRIG_TOOLTIP_ATAN": "Dawo da arctangent na wata lamba.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Dawo da ɗaya daga cikin sanannen zaunannen lissafi: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ko ∞ (maras iyaka).", - "MATH_IS_EVEN": "lamba da za a iya rabawa da biyu", - "MATH_IS_ODD": "lamba ce da ba za a iya rabawa da biyu ba", - "MATH_IS_PRIME": "lamba ce da kawai za a iya rabawa da kanta", - "MATH_IS_WHOLE": "lamba ce cikakkiya", - "MATH_IS_POSITIVE": "lamba ce da tafi sufuli", - "MATH_IS_NEGATIVE": "lamba ce da bata kai sufuli ba", - "MATH_IS_DIVISIBLE_BY": "lamba ce da za a iya rabawa da", - "MATH_IS_TOOLTIP": "Duba idan lamba ce da za a iya rabawa da biyu, lamba wadda ba za a iya rabawa da biyu ba, lamba ce kawai da za a iya rabawa da kanta, lamba ce cikakkiya,lamba ce da tafi sufuli, lamba ce da bata kai sufuli ba, lamba ce da za a iya rabawa da wata lamba. Ta dawo da gaskiya ko ƙarya.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "canza %1 da %2", - "MATH_CHANGE_TOOLTIP": "Daɗa wata lamba zuwa siffa '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Cika lamba sama ko ƙasa.", - "MATH_ROUND_OPERATOR_ROUND": "cika", - "MATH_ROUND_OPERATOR_ROUNDUP": "cika sama", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "cika ƙasa", - "MATH_ONLIST_OPERATOR_SUM": "jumlar jeri", - "MATH_ONLIST_TOOLTIP_SUM": "Dawo da jumlar duk lambobi na cikin jerin.", - "MATH_ONLIST_OPERATOR_MIN": "Taƙaicewa na jeri", - "MATH_ONLIST_TOOLTIP_MIN": "Dawo da lambobi ƙanana a cikin jerin.", - "MATH_ONLIST_OPERATOR_MAX": "cikakke na jeri", - "MATH_ONLIST_TOOLTIP_MAX": "Dawo da babbar lamba dake cikin jerin.", - "MATH_ONLIST_OPERATOR_AVERAGE": "Tsaka-tsaki na jeri", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Dawo da tsaka-tsaki (matsakaicin lissafi) na kimar lambobi dake cikin jerin.", - "MATH_ONLIST_OPERATOR_MEDIAN": "tsakiyar jeri", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Dawo da lambar tsakiya ta cikin jeri.", - "MATH_ONLIST_OPERATOR_MODE": "mai yawan bayyana na jeri", - "MATH_ONLIST_TOOLTIP_MODE": "Dawo da jeri na abubuwan da suka fi bayyana a cikin jeri.", - "MATH_ONLIST_OPERATOR_STD_DEV": "matakan bambance-bambance na jeri", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Dawo da matakan bambance-bambance na jeri.", - "MATH_ONLIST_OPERATOR_RANDOM": "bazuwar kaya na jeri", - "MATH_ONLIST_TOOLTIP_RANDOM": "Dawo da bazuwar kaya daga jerin.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "saura daga raba %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Dawo da saura daga raba lambobin guda biyu.", - "MATH_CONSTRAIN_TITLE": "ƙarfi %1 ƙasa %2 sama %3", - "MATH_CONSTRAIN_TOOLTIP": "Tsare lamba tsakanin lambobi da aka fayyace masu ƙarama da babbar kima (haɗawa).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "bazuwar cikakkiyar lamba daga %1 zuwa %2", - "MATH_RANDOM_INT_TOOLTIP": "Dawo da bazuwar cikakkiyar lamba tsakanin wani gwargwado da aka fayyace, haɗawa.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "ɓangare mai buzuwa", - "MATH_RANDOM_FLOAT_TOOLTIP": "Dawo da ɓangare mai bazuwa tsakanin 0.0 (haɗawa) da 1.0 (rabewa).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 na X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Dawo da arctangent na tsinin (X, Y) a gwargwado daga -180 zuwa 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Harafi, kalma, ko layi na rubutu.", - "TEXT_JOIN_TITLE_CREATEWITH": "ƙirƙiri rubutu da", - "TEXT_JOIN_TOOLTIP": "Ƙirƙiri guntun rubutu ta haɗa kowace lamba ta kayayyaki.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "haɗa", - "TEXT_CREATE_JOIN_TOOLTIP": "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo na rubutu.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Daɗa wani kaya zuwa ga rubutun.", - "TEXT_APPEND_TITLE": "zuwa %1 daɗa rubutu %2", - "TEXT_APPEND_TOOLTIP": "Daɗa wani rubutu zuwa siffa ta '%1'.", - "TEXT_LENGTH_TITLE": "tsawon %1", - "TEXT_LENGTH_TOOLTIP": "Ya dawo lamba ta haruffa (da ya haɗa da sarari) a cikin rubutun da aka bayar.", - "TEXT_ISEMPTY_TITLE": "%1 babu komai", - "TEXT_ISEMPTY_TOOLTIP": "Ya dawo gaskiya idan rubutun da aka bayar babu komai.", - "TEXT_INDEXOF_TOOLTIP": "nemo a cikin rubutu. Returns %1 if text is not found.", - "TEXT_INDEXOF_TITLE": "ta rubutu %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "nemo afkuwar farko ta rubutu", - "TEXT_INDEXOF_OPERATOR_LAST": "nemo afkuwar ƙarshe ta rubutu", - "TEXT_CHARAT_TITLE": "ta rubutu %1 %2", - "TEXT_CHARAT_FROM_START": "sami harafin #", - "TEXT_CHARAT_FROM_END": "sami harafin # daga ƙarshe", - "TEXT_CHARAT_FIRST": "sami harafin farko", - "TEXT_CHARAT_LAST": "sami harafin ƙarshe", - "TEXT_CHARAT_RANDOM": "sami harafi mai bazuwa", - "TEXT_CHARAT_TOOLTIP": "Ya dawo da harafi a gurbi da aka fayyace.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Ya dawo da ɓangaren rubutu da aka fayyace.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ta rubutu", - "TEXT_GET_SUBSTRING_START_FROM_START": "sami sashin jumla daga harafin #", - "TEXT_GET_SUBSTRING_START_FROM_END": "sami sashin jumla daga harafin # daga ƙarshe", - "TEXT_GET_SUBSTRING_START_FIRST": "sami sashin jumla daga harafin farko", - "TEXT_GET_SUBSTRING_END_FROM_START": "zuwa harafin #", - "TEXT_GET_SUBSTRING_END_FROM_END": "zuwa harafin # daga ƙarshe", - "TEXT_GET_SUBSTRING_END_LAST": "zuwa harafi na ƙarshe", - "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "zuwa MANYAN BAƘAƘE", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "zuwa ƙananan baƙaƙe", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "zuwa Baƙaƙe Dake nuna Suna", - "TEXT_TRIM_TOOLTIP": "Dawo da kwafin rubutu tare da sauran sarari da aka cire daga ƙarshe ɗaya ko biyu.", - "TEXT_TRIM_OPERATOR_BOTH": "datse sarari daga ɓangarori guda biyu na", - "TEXT_TRIM_OPERATOR_LEFT": "datse sarari daga ɓangaren hagu na", - "TEXT_TRIM_OPERATOR_RIGHT": "datse sarari daga ɓangaren dama na", - "TEXT_PRINT_TITLE": "buga %1", - "TEXT_PRINT_TOOLTIP": "Buga rubutun da aka fayyace, lamba ko wata kima.", - "TEXT_PROMPT_TYPE_TEXT": "samo rubutu tare da saƙo", - "TEXT_PROMPT_TYPE_NUMBER": "samo lamba tare da saƙo", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Samo wani mai amfani domin wata lamba.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Samo wani mai amfani domin wani rubutu.", - "TEXT_COUNT_MESSAGE0": "ƙirga %1 a cikin %2", - "TEXT_COUNT_TOOLTIP": "Ƙirga sau nawa wani rubutu ya afku a cikin sauran wasu rubutu.", - "TEXT_REPLACE_MESSAGE0": "maye gurbin %1 da %2 a cikin %3", - "TEXT_REPLACE_TOOLTIP": "Maye gurbin duk afkuwa na wani rubutu a cikin wasu rubutu.", - "TEXT_REVERSE_MESSAGE0": "juya %1", - "TEXT_REVERSE_TOOLTIP": "Ya juya tsari na haruffa a cikin rubutu.", - "LISTS_CREATE_EMPTY_TITLE": "ƙirƙiri jeri wanda babu komai", - "LISTS_CREATE_EMPTY_TOOLTIP": "Ya dawo da jeri, na tsawon 0, wanda bai ƙunshi ajiye bayanai ba", - "LISTS_CREATE_WITH_TOOLTIP": "Ƙiƙiri jeri tare da kowace lamba na kayayyaki.", - "LISTS_CREATE_WITH_INPUT_WITH": "ƙirƙiri jeri", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "jeri", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Daɗa wani kaya zuwa jerin.", - "LISTS_REPEAT_TOOLTIP": "Ya ƙirƙiri jeri da ya ƙunshi wata kima da aka bayar da aka maimaita yawan lambar da aka fayyace.", - "LISTS_REPEAT_TITLE": "ƙirƙiri jeri tare da wani abu %1 da aka maimaita sau %2", - "LISTS_LENGTH_TITLE": "tsawo na %1", - "LISTS_LENGTH_TOOLTIP": "Ya dawo da tsawon wani jeri.", - "LISTS_ISEMPTY_TITLE": "%1 babu komai", - "LISTS_ISEMPTY_TOOLTIP": "Ya dawo gaskiya idan jerin babu komai.", - "LISTS_INLIST": "a jeri", - "LISTS_INDEX_OF_FIRST": "nemo afkuwar farko daga wani abu", - "LISTS_INDEX_OF_LAST": "nemo afkuwar ƙarshe daga wani abu", - "LISTS_INDEX_OF_TOOLTIP": "Ya dawo da jeri na farkon/ƙarshen afkuwa na wani abu a cikin jerin. Ya dawo da %1 idan ba a sami wani abin ba.", - "LISTS_GET_INDEX_GET": "samowa", - "LISTS_GET_INDEX_GET_REMOVE": "samowa da cirewa", - "LISTS_GET_INDEX_REMOVE": "cire", - "LISTS_GET_INDEX_FROM_END": "# daga ƙarshe", - "LISTS_GET_INDEX_FIRST": "farko", - "LISTS_GET_INDEX_LAST": "ƙarshe", - "LISTS_GET_INDEX_RANDOM": "bazuwa", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 shine wani abu na farko.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 shine wani abu na ƙarshe.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Ya dawo da abin a wani gurbi da aka fayyace a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Ya dawo da wani abu na farko a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Ya dawo da wani abu na ƙarshe a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Ya dawo da wani abu a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Ya cire kuma ya dawo da abin a gurbin da aka fayyace a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Ya cire kuma ya dawo da abin farko a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Ya cire kuma ya dawo da abin ƙarshe a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Ya cire kuma ya dawo abu mai bazuwa a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Ya cire wani abin a wani gurbi da aka fayyace a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Ya cire abin farko a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Ya cire abin ƙarshe a cikin jeri.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Ya cire abu mai bazuwa a cikin jeri.", - "LISTS_SET_INDEX_SET": "shirya", - "LISTS_SET_INDEX_INSERT": "cusa a", - "LISTS_SET_INDEX_INPUT_TO": "a matsayin", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ya shirya wani abin a wani gurbi da aka fayyace a cikin jeri.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Ya shirya abin farko a cikin jeri.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Ya shirya abin ƙarshe a cikin jeri.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Ya shirya abu mai bazuwa a cikin jeri.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ya cusa wani abin a wani gurbi da aka fayyace a cikin jeri.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ya cusa wani abin a farko na jeri.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ya maƙala wani abin a ƙarshe na jeri.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Cusa wani abu ta hanyar bazawa a cikin jeri.", - "LISTS_GET_SUBLIST_START_FROM_START": "sami sashin jeri daga #", - "LISTS_GET_SUBLIST_START_FROM_END": "sami sashin jeri daga # daga ƙarshe", - "LISTS_GET_SUBLIST_START_FIRST": "sami sashin jeri daga farko", - "LISTS_GET_SUBLIST_END_FROM_START": "zuwa #", - "LISTS_GET_SUBLIST_END_FROM_END": "zuwa # daga ƙarshe", - "LISTS_GET_SUBLIST_END_LAST": "zuwa ƙarshe", - "LISTS_GET_SUBLIST_TOOLTIP": "Ƙirƙiri kwafi na ɓangaren da aka fayyace daga wani jeri.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "ware %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Ware kwafi na jeri.", - "LISTS_SORT_ORDER_ASCENDING": "hawa", - "LISTS_SORT_ORDER_DESCENDING": "sauka", - "LISTS_SORT_TYPE_NUMERIC": "na lamba", - "LISTS_SORT_TYPE_TEXT": "na haruffa", - "LISTS_SORT_TYPE_IGNORECASE": "na haruffa, a=A", - "LISTS_SPLIT_LIST_FROM_TEXT": "yi jeri daga rubutu", - "LISTS_SPLIT_TEXT_FROM_LIST": "yi rubutu daga jeri", - "LISTS_SPLIT_WITH_DELIMITER": "tare da mai raba kalmomi", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Tsaga rubutu zuwa jerin rubututtuka, a karya a kowane mai raba kalmomi.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Haɗa jerin rubututtuka zuwa rubutu guda ɗaya, a raba tare da mai raba rubutu.", - "LISTS_REVERSE_MESSAGE0": "juya %1", - "LISTS_REVERSE_TOOLTIP": "Sauya tsarin kwafi daga jeri.", - "VARIABLES_GET_TOOLTIP": "Ya dawo da kima na wannan siffa.", - "VARIABLES_GET_CREATE_SET": "Ƙirƙiri 'set %1'", - "VARIABLES_SET": "saita %1 zuwa %2", - "VARIABLES_SET_TOOLTIP": "Ya saita wannan siffa ta zama dai dai da bayanin.", - "VARIABLES_SET_CREATE_GET": "Ƙirƙiri 'get %1'", - "PROCEDURES_DEFNORETURN_TITLE": "da", - "PROCEDURES_DEFNORETURN_PROCEDURE": "yi", - "PROCEDURES_BEFORE_PARAMS": "tare da:", - "PROCEDURES_CALL_BEFORE_PARAMS": "tare da:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Ya ƙirƙiri wani aiki ba tare da sakamako ba.", - "PROCEDURES_DEFNORETURN_COMMENT": "Kwatanta wannan aiki...", - "PROCEDURES_DEFRETURN_RETURN": "mayar", - "PROCEDURES_DEFRETURN_TOOLTIP": "Ya ƙirƙiri wani aiki ba tare da wani sakamako ba.", - "PROCEDURES_ALLOW_STATEMENTS": "ƙyale bayanai", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Gardaɗi: Wannan aikin yana da ruɓi na gazawa.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Gudanar da aiki '%1' wanda mai amfani ya ayyana.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Gudanar da aiki '%1' kuma a yi amfani da sakamakon sa.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "bayani", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Daɗa, cire, ko sake tsarin bayani na wannan aiki.", - "PROCEDURES_MUTATORARG_TITLE": "saka suna:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Daɗa wani bayani ga aikin.", - "PROCEDURES_HIGHLIGHT_DEF": "Bayar da haske na bayanin aiki", - "PROCEDURES_CREATE_DO": "Ƙirƙiri '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Idan wata kima gaskiya ce, to dawo da kima ta biyu.", - "PROCEDURES_IFRETURN_WARNING": "Gargaɗi: Za a iya amfani da wannan bulo ne kawai a cikin bayani na wani aiki.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Faɗi wani abu...", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Cancel" -} +{ + "@metadata": { + "authors": [ + "Mapmeld" + ] + }, + "VARIABLES_DEFAULT_NAME": "waniabu", + "TODAY": "Yau", + "DUPLICATE_BLOCK": "Yi kwafi", + "ADD_COMMENT": "Daɗa Sharhi", + "REMOVE_COMMENT": "Cire Sharhi", + "DUPLICATE_COMMENT": "Kwafi Sharhi", + "EXTERNAL_INPUTS": "Bayanan Waje", + "INLINE_INPUTS": "Bayanai na Cikin layi", + "DELETE_BLOCK": "Goge Bulo", + "DELETE_X_BLOCKS": "Goge Bulo %1", + "DELETE_ALL_BLOCKS": "A goge duk bululluka %1?", + "CLEAN_UP": "A share Bululluka", + "COLLAPSE_BLOCK": "Rusa Bulo", + "COLLAPSE_ALL": "Rusa Bululluka", + "EXPAND_BLOCK": "Faɗaɗa Bulo", + "EXPAND_ALL": "Faɗaɗa Bulullaka", + "DISABLE_BLOCK": "Kashe Bulo", + "ENABLE_BLOCK": "Kunna Bulo", + "HELP": "Taimako", + "UNDO": "Fasa", + "REDO": "Sake", + "CHANGE_VALUE_TITLE": "Canza kima:", + "RENAME_VARIABLE": "Sake sunan siffa...", + "RENAME_VARIABLE_TITLE": "Sake sunnan duk siffofi '%1' zuwa:", + "NEW_VARIABLE": "Ƙirƙiri siffofi...", + "NEW_STRING_VARIABLE": "Ƙiriƙiri kalmar siffa...", + "NEW_NUMBER_VARIABLE": "Ƙirƙiri siffa ta lamba...", + "NEW_COLOUR_VARIABLE": "Ƙirƙiri siffa ta launi...", + "NEW_VARIABLE_TYPE_TITLE": "Irin sabuwar siffa:", + "NEW_VARIABLE_TITLE": "Sunan sabuwar siffa:", + "VARIABLE_ALREADY_EXISTS": "Tuni akwai sunnan siffa da aka kira '%1'.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Tuni akwai sunan siffa da aka kira '%1' domin wata iri ta: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "A goge amfanunnukan %1 na siffar '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "An kasa goge siffa '%1' sabo da tana daga sashi na bayanin aikin '%2'", + "DELETE_VARIABLE": "A goge siffar '%1'", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Zaɓi launi daga faifan launuka.", + "COLOUR_RANDOM_TITLE": "launuka da aka hargitsa", + "COLOUR_RANDOM_TOOLTIP": "Zaɓi launi daga wanɗanda aka hargitsa.", + "COLOUR_RGB_TITLE": "launi tare da", + "COLOUR_RGB_RED": "ja", + "COLOUR_RGB_GREEN": "kore", + "COLOUR_RGB_BLUE": "shuɗi", + "COLOUR_RGB_TOOLTIP": "Ƙirƙiri launi tare da wani yawa da aka fayyace na ja, kore, da shuɗi. Duk kimomin dole su zamo tsakanin 0 da 100.", + "COLOUR_BLEND_TITLE": "gauraya", + "COLOUR_BLEND_COLOUR1": "launi na 1", + "COLOUR_BLEND_COLOUR2": "launi na 2", + "COLOUR_BLEND_RATIO": "lissafi", + "COLOUR_BLEND_TOOLTIP": "Ana gauraya launuka biyu tare da wani lissafi da aka bayar (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "maimaita sau %1", + "CONTROLS_REPEAT_INPUT_DO": "yi", + "CONTROLS_REPEAT_TOOLTIP": "Yi wasu bayanai sau da dama.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "maimaita yayin da", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "maimaita har sai", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Yayin da wata kima ta zama gaskiya, maimaita wasu lambobi.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Yayin da wata kima ta zama ƙarya, maimaita wasu lambobi.", + "CONTROLS_FOR_TOOLTIP": "Sami siffar '%1' ta ɗauki kowa ce kima daga lambar da aka fara da ita zuwa lambar da aka ƙare da ita, ana ƙirgawa daga wata tazara da aka fayyace. Maimaita wannan lamba a kowane lokaci:", + "CONTROLS_FOR_TITLE": "Ƙirga da %1 daga %2 zuwa %3 ƙara %4", + "CONTROLS_FOREACH_TITLE": "ga kowane abu %1 a cikin jeri %2", + "CONTROLS_FOREACH_TOOLTIP": "Ga kowane abu a jeri, saka siffar '%1' zuwa ga abin, sannan a maimaita wasu lambobin.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ɓalle daga cikin kewaye", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fara da maimaitawa ta gaba ta kewaye", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ɓalle daga kewaye wanda ya ƙunsa.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Tsallake sauran wannan kewaye, sannan kuma a ci gaba da maimaitawa ta gaba ta kewaye.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Gargaɗi: Wannan bulon za a iya amfani da shi ne kawai a wajen kewaye.", + "CONTROLS_IF_TOOLTIP_1": "Idan kima gaskiya ce, to a yi wasu maganganu.", + "CONTROLS_IF_TOOLTIP_2": "Idan kimar gaskiya ce, to a yi bulo na farko na maganganu. Idan ba haka ba, yi bulo na biyu na maganganu.", + "CONTROLS_IF_TOOLTIP_3": "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun.", + "CONTROLS_IF_TOOLTIP_4": "Idan kimar farko gaskiya ce, to yi bulon farko na maganganun. In ba haka ba, idan kima ta biyu ce gaskiya, yi bolu na biyu na maganganun. Idan babu kimar da take gaskiya, yi bulo na ƙarshe na maganganun.", + "CONTROLS_IF_MSG_IF": "idan", + "CONTROLS_IF_MSG_ELSEIF": "wani idan", + "CONTROLS_IF_MSG_ELSE": "wani", + "CONTROLS_IF_IF_TOOLTIP": "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan idan bulo.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Daɗa sharaɗi zuwa idan bulo.", + "CONTROLS_IF_ELSE_TOOLTIP": "Daɗa na ƙarshe, sharaɗin kama-duk zuwa idan bulo.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Koma gaskiya idan duk bayanan sun yi dai dai da juna.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Koma gaskiya idan duk bayanan ba su yi dai dai da juna ba.", + "LOGIC_COMPARE_TOOLTIP_LT": "Koma gaskiya idan bayanin farko ya fi na biyu ƙanƙanta.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Koma gaskiya idan bayanin farko ya fi ƙanƙanta ko dai dai da bayani na biyu.", + "LOGIC_COMPARE_TOOLTIP_GT": "Koma gaskiya idan bayanin farko ya fi bayani na biyu yawa.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Koma gaskiya idan bayanin farko ya fi ko ya yi dai dai da bayani na biyu.", + "LOGIC_OPERATION_TOOLTIP_AND": "Koma gaskiya idan duk bayanan gaskiya ne.", + "LOGIC_OPERATION_AND": "kuma", + "LOGIC_OPERATION_TOOLTIP_OR": "Koma gaskiya idan a ƙalla ɗayan bayanan gaskiya ne.", + "LOGIC_OPERATION_OR": "ko", + "LOGIC_NEGATE_TITLE": "ba %1", + "LOGIC_NEGATE_TOOLTIP": "Koma gaskiya idan bayanin ƙarya ne. Koma ƙarya idan bayanin gaskiya ne.", + "LOGIC_BOOLEAN_TRUE": "gaskiya", + "LOGIC_BOOLEAN_FALSE": "ƙarya", + "LOGIC_BOOLEAN_TOOLTIP": "Ya koma kodai gaskiya ko ƙarya.", + "LOGIC_NULL": "maras amfani", + "LOGIC_NULL_TOOLTIP": "Ya koma maras amfani.", + "LOGIC_TERNARY_CONDITION": "gwaji", + "LOGIC_TERNARY_IF_TRUE": "idan gaskiya ne", + "LOGIC_TERNARY_IF_FALSE": "idan ƙarya ne", + "LOGIC_TERNARY_TOOLTIP": "Duba sharaɗin a cikin 'gwaji'. Idan sharaɗin gaskiya ne, mayar da kimar 'idan gaskiya ne'; idan ba haka ba mayar da kimar 'idan ƙarya ne'.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Lambda.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Dawo da jumlar lambobin guda biyu.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Dawo da bambancin lambobin guda biyu.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Dawo da ruɓin lambobin guda biyu.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Dawo da sakamakon lambobin guda biyu bayan an raba su da juna.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Dawo da lambar farko wadda aka ɗaga ta zuwa ƙarfin lamba ta biyu.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "lamba da ta ruɓanya kanta", + "MATH_SINGLE_TOOLTIP_ROOT": "Dawo da wata lamba da ta ruɓanya kanta.", + "MATH_SINGLE_OP_ABSOLUTE": "cikakkiya", + "MATH_SINGLE_TOOLTIP_ABS": "Dawo da cikakkiyar kima na wata lamba.", + "MATH_SINGLE_TOOLTIP_NEG": "Dawo da kishiya na wata lamba.", + "MATH_SINGLE_TOOLTIP_LN": "Dawo da jerin lambobi da aka tara ko aka ɗebe.", + "MATH_SINGLE_TOOLTIP_LOG10": "Dawo da tushe 10 na jerin lambobi da aka tara ko aka ɗebe na wata lamba.", + "MATH_SINGLE_TOOLTIP_EXP": "Dawo da e zuwa ƙarfin wata lamba.", + "MATH_SINGLE_TOOLTIP_POW10": "Dawo da 10 zuwa ƙarfin wata lamba.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Dawo da sine na wani gwargwado (banda layin kusurwar waje).", + "MATH_TRIG_TOOLTIP_COS": "Dawo da cosine na wani gwargwado (banda layin kusurwar waje).", + "MATH_TRIG_TOOLTIP_TAN": "Dawo da tangent na wani gwargwado (banda layin kusurwar waje).", + "MATH_TRIG_TOOLTIP_ASIN": "Dawo da arcsine na wata lamba.", + "MATH_TRIG_TOOLTIP_ACOS": "Dawo da arccosine na wata lamba.", + "MATH_TRIG_TOOLTIP_ATAN": "Dawo da arctangent na wata lamba.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Dawo da ɗaya daga cikin sanannen zaunannen lissafi: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ko ∞ (maras iyaka).", + "MATH_IS_EVEN": "lamba da za a iya rabawa da biyu", + "MATH_IS_ODD": "lamba ce da ba za a iya rabawa da biyu ba", + "MATH_IS_PRIME": "lamba ce da kawai za a iya rabawa da kanta", + "MATH_IS_WHOLE": "lamba ce cikakkiya", + "MATH_IS_POSITIVE": "lamba ce da tafi sufuli", + "MATH_IS_NEGATIVE": "lamba ce da bata kai sufuli ba", + "MATH_IS_DIVISIBLE_BY": "lamba ce da za a iya rabawa da", + "MATH_IS_TOOLTIP": "Duba idan lamba ce da za a iya rabawa da biyu, lamba wadda ba za a iya rabawa da biyu ba, lamba ce kawai da za a iya rabawa da kanta, lamba ce cikakkiya,lamba ce da tafi sufuli, lamba ce da bata kai sufuli ba, lamba ce da za a iya rabawa da wata lamba. Ta dawo da gaskiya ko ƙarya.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "canza %1 da %2", + "MATH_CHANGE_TOOLTIP": "Daɗa wata lamba zuwa siffa '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Cika lamba sama ko ƙasa.", + "MATH_ROUND_OPERATOR_ROUND": "cika", + "MATH_ROUND_OPERATOR_ROUNDUP": "cika sama", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "cika ƙasa", + "MATH_ONLIST_OPERATOR_SUM": "jumlar jeri", + "MATH_ONLIST_TOOLTIP_SUM": "Dawo da jumlar duk lambobi na cikin jerin.", + "MATH_ONLIST_OPERATOR_MIN": "Taƙaicewa na jeri", + "MATH_ONLIST_TOOLTIP_MIN": "Dawo da lambobi ƙanana a cikin jerin.", + "MATH_ONLIST_OPERATOR_MAX": "cikakke na jeri", + "MATH_ONLIST_TOOLTIP_MAX": "Dawo da babbar lamba dake cikin jerin.", + "MATH_ONLIST_OPERATOR_AVERAGE": "Tsaka-tsaki na jeri", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Dawo da tsaka-tsaki (matsakaicin lissafi) na kimar lambobi dake cikin jerin.", + "MATH_ONLIST_OPERATOR_MEDIAN": "tsakiyar jeri", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Dawo da lambar tsakiya ta cikin jeri.", + "MATH_ONLIST_OPERATOR_MODE": "mai yawan bayyana na jeri", + "MATH_ONLIST_TOOLTIP_MODE": "Dawo da jeri na abubuwan da suka fi bayyana a cikin jeri.", + "MATH_ONLIST_OPERATOR_STD_DEV": "matakan bambance-bambance na jeri", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Dawo da matakan bambance-bambance na jeri.", + "MATH_ONLIST_OPERATOR_RANDOM": "bazuwar kaya na jeri", + "MATH_ONLIST_TOOLTIP_RANDOM": "Dawo da bazuwar kaya daga jerin.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "saura daga raba %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Dawo da saura daga raba lambobin guda biyu.", + "MATH_CONSTRAIN_TITLE": "ƙarfi %1 ƙasa %2 sama %3", + "MATH_CONSTRAIN_TOOLTIP": "Tsare lamba tsakanin lambobi da aka fayyace masu ƙarama da babbar kima (haɗawa).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "bazuwar cikakkiyar lamba daga %1 zuwa %2", + "MATH_RANDOM_INT_TOOLTIP": "Dawo da bazuwar cikakkiyar lamba tsakanin wani gwargwado da aka fayyace, haɗawa.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "ɓangare mai buzuwa", + "MATH_RANDOM_FLOAT_TOOLTIP": "Dawo da ɓangare mai bazuwa tsakanin 0.0 (haɗawa) da 1.0 (rabewa).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 na X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Dawo da arctangent na tsinin (X, Y) a gwargwado daga -180 zuwa 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Harafi, kalma, ko layi na rubutu.", + "TEXT_JOIN_TITLE_CREATEWITH": "ƙirƙiri rubutu da", + "TEXT_JOIN_TOOLTIP": "Ƙirƙiri guntun rubutu ta haɗa kowace lamba ta kayayyaki.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "haɗa", + "TEXT_CREATE_JOIN_TOOLTIP": "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo na rubutu.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Daɗa wani kaya zuwa ga rubutun.", + "TEXT_APPEND_TITLE": "zuwa %1 daɗa rubutu %2", + "TEXT_APPEND_TOOLTIP": "Daɗa wani rubutu zuwa siffa ta '%1'.", + "TEXT_LENGTH_TITLE": "tsawon %1", + "TEXT_LENGTH_TOOLTIP": "Ya dawo lamba ta haruffa (da ya haɗa da sarari) a cikin rubutun da aka bayar.", + "TEXT_ISEMPTY_TITLE": "%1 babu komai", + "TEXT_ISEMPTY_TOOLTIP": "Ya dawo gaskiya idan rubutun da aka bayar babu komai.", + "TEXT_INDEXOF_TOOLTIP": "nemo a cikin rubutu. Returns %1 if text is not found.", + "TEXT_INDEXOF_TITLE": "ta rubutu %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "nemo afkuwar farko ta rubutu", + "TEXT_INDEXOF_OPERATOR_LAST": "nemo afkuwar ƙarshe ta rubutu", + "TEXT_CHARAT_TITLE": "ta rubutu %1 %2", + "TEXT_CHARAT_FROM_START": "sami harafin #", + "TEXT_CHARAT_FROM_END": "sami harafin # daga ƙarshe", + "TEXT_CHARAT_FIRST": "sami harafin farko", + "TEXT_CHARAT_LAST": "sami harafin ƙarshe", + "TEXT_CHARAT_RANDOM": "sami harafi mai bazuwa", + "TEXT_CHARAT_TOOLTIP": "Ya dawo da harafi a gurbi da aka fayyace.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Ya dawo da ɓangaren rubutu da aka fayyace.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ta rubutu", + "TEXT_GET_SUBSTRING_START_FROM_START": "sami sashin jumla daga harafin #", + "TEXT_GET_SUBSTRING_START_FROM_END": "sami sashin jumla daga harafin # daga ƙarshe", + "TEXT_GET_SUBSTRING_START_FIRST": "sami sashin jumla daga harafin farko", + "TEXT_GET_SUBSTRING_END_FROM_START": "zuwa harafin #", + "TEXT_GET_SUBSTRING_END_FROM_END": "zuwa harafin # daga ƙarshe", + "TEXT_GET_SUBSTRING_END_LAST": "zuwa harafi na ƙarshe", + "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "zuwa MANYAN BAƘAƘE", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "zuwa ƙananan baƙaƙe", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "zuwa Baƙaƙe Dake nuna Suna", + "TEXT_TRIM_TOOLTIP": "Dawo da kwafin rubutu tare da sauran sarari da aka cire daga ƙarshe ɗaya ko biyu.", + "TEXT_TRIM_OPERATOR_BOTH": "datse sarari daga ɓangarori guda biyu na", + "TEXT_TRIM_OPERATOR_LEFT": "datse sarari daga ɓangaren hagu na", + "TEXT_TRIM_OPERATOR_RIGHT": "datse sarari daga ɓangaren dama na", + "TEXT_PRINT_TITLE": "buga %1", + "TEXT_PRINT_TOOLTIP": "Buga rubutun da aka fayyace, lamba ko wata kima.", + "TEXT_PROMPT_TYPE_TEXT": "samo rubutu tare da saƙo", + "TEXT_PROMPT_TYPE_NUMBER": "samo lamba tare da saƙo", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Samo wani mai amfani domin wata lamba.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Samo wani mai amfani domin wani rubutu.", + "TEXT_COUNT_MESSAGE0": "ƙirga %1 a cikin %2", + "TEXT_COUNT_TOOLTIP": "Ƙirga sau nawa wani rubutu ya afku a cikin sauran wasu rubutu.", + "TEXT_REPLACE_MESSAGE0": "maye gurbin %1 da %2 a cikin %3", + "TEXT_REPLACE_TOOLTIP": "Maye gurbin duk afkuwa na wani rubutu a cikin wasu rubutu.", + "TEXT_REVERSE_MESSAGE0": "juya %1", + "TEXT_REVERSE_TOOLTIP": "Ya juya tsari na haruffa a cikin rubutu.", + "LISTS_CREATE_EMPTY_TITLE": "ƙirƙiri jeri wanda babu komai", + "LISTS_CREATE_EMPTY_TOOLTIP": "Ya dawo da jeri, na tsawon 0, wanda bai ƙunshi ajiye bayanai ba", + "LISTS_CREATE_WITH_TOOLTIP": "Ƙiƙiri jeri tare da kowace lamba na kayayyaki.", + "LISTS_CREATE_WITH_INPUT_WITH": "ƙirƙiri jeri", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "jeri", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Daɗa, cire, ko sake tsarin ɓangarori domin sake fasalin wannan bulo.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Daɗa wani kaya zuwa jerin.", + "LISTS_REPEAT_TOOLTIP": "Ya ƙirƙiri jeri da ya ƙunshi wata kima da aka bayar da aka maimaita yawan lambar da aka fayyace.", + "LISTS_REPEAT_TITLE": "ƙirƙiri jeri tare da wani abu %1 da aka maimaita sau %2", + "LISTS_LENGTH_TITLE": "tsawo na %1", + "LISTS_LENGTH_TOOLTIP": "Ya dawo da tsawon wani jeri.", + "LISTS_ISEMPTY_TITLE": "%1 babu komai", + "LISTS_ISEMPTY_TOOLTIP": "Ya dawo gaskiya idan jerin babu komai.", + "LISTS_INLIST": "a jeri", + "LISTS_INDEX_OF_FIRST": "nemo afkuwar farko daga wani abu", + "LISTS_INDEX_OF_LAST": "nemo afkuwar ƙarshe daga wani abu", + "LISTS_INDEX_OF_TOOLTIP": "Ya dawo da jeri na farkon/ƙarshen afkuwa na wani abu a cikin jerin. Ya dawo da %1 idan ba a sami wani abin ba.", + "LISTS_GET_INDEX_GET": "samowa", + "LISTS_GET_INDEX_GET_REMOVE": "samowa da cirewa", + "LISTS_GET_INDEX_REMOVE": "cire", + "LISTS_GET_INDEX_FROM_END": "# daga ƙarshe", + "LISTS_GET_INDEX_FIRST": "farko", + "LISTS_GET_INDEX_LAST": "ƙarshe", + "LISTS_GET_INDEX_RANDOM": "bazuwa", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 shine wani abu na farko.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 shine wani abu na ƙarshe.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Ya dawo da abin a wani gurbi da aka fayyace a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Ya dawo da wani abu na farko a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Ya dawo da wani abu na ƙarshe a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Ya dawo da wani abu a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Ya cire kuma ya dawo da abin a gurbin da aka fayyace a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Ya cire kuma ya dawo da abin farko a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Ya cire kuma ya dawo da abin ƙarshe a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Ya cire kuma ya dawo abu mai bazuwa a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Ya cire wani abin a wani gurbi da aka fayyace a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Ya cire abin farko a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Ya cire abin ƙarshe a cikin jeri.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Ya cire abu mai bazuwa a cikin jeri.", + "LISTS_SET_INDEX_SET": "shirya", + "LISTS_SET_INDEX_INSERT": "cusa a", + "LISTS_SET_INDEX_INPUT_TO": "a matsayin", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ya shirya wani abin a wani gurbi da aka fayyace a cikin jeri.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Ya shirya abin farko a cikin jeri.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Ya shirya abin ƙarshe a cikin jeri.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Ya shirya abu mai bazuwa a cikin jeri.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ya cusa wani abin a wani gurbi da aka fayyace a cikin jeri.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ya cusa wani abin a farko na jeri.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ya maƙala wani abin a ƙarshe na jeri.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Cusa wani abu ta hanyar bazawa a cikin jeri.", + "LISTS_GET_SUBLIST_START_FROM_START": "sami sashin jeri daga #", + "LISTS_GET_SUBLIST_START_FROM_END": "sami sashin jeri daga # daga ƙarshe", + "LISTS_GET_SUBLIST_START_FIRST": "sami sashin jeri daga farko", + "LISTS_GET_SUBLIST_END_FROM_START": "zuwa #", + "LISTS_GET_SUBLIST_END_FROM_END": "zuwa # daga ƙarshe", + "LISTS_GET_SUBLIST_END_LAST": "zuwa ƙarshe", + "LISTS_GET_SUBLIST_TOOLTIP": "Ƙirƙiri kwafi na ɓangaren da aka fayyace daga wani jeri.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "ware %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ware kwafi na jeri.", + "LISTS_SORT_ORDER_ASCENDING": "hawa", + "LISTS_SORT_ORDER_DESCENDING": "sauka", + "LISTS_SORT_TYPE_NUMERIC": "na lamba", + "LISTS_SORT_TYPE_TEXT": "na haruffa", + "LISTS_SORT_TYPE_IGNORECASE": "na haruffa, a=A", + "LISTS_SPLIT_LIST_FROM_TEXT": "yi jeri daga rubutu", + "LISTS_SPLIT_TEXT_FROM_LIST": "yi rubutu daga jeri", + "LISTS_SPLIT_WITH_DELIMITER": "tare da mai raba kalmomi", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Tsaga rubutu zuwa jerin rubututtuka, a karya a kowane mai raba kalmomi.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Haɗa jerin rubututtuka zuwa rubutu guda ɗaya, a raba tare da mai raba rubutu.", + "LISTS_REVERSE_MESSAGE0": "juya %1", + "LISTS_REVERSE_TOOLTIP": "Sauya tsarin kwafi daga jeri.", + "VARIABLES_GET_TOOLTIP": "Ya dawo da kima na wannan siffa.", + "VARIABLES_GET_CREATE_SET": "Ƙirƙiri 'set %1'", + "VARIABLES_SET": "saita %1 zuwa %2", + "VARIABLES_SET_TOOLTIP": "Ya saita wannan siffa ta zama dai dai da bayanin.", + "VARIABLES_SET_CREATE_GET": "Ƙirƙiri 'get %1'", + "PROCEDURES_DEFNORETURN_TITLE": "da", + "PROCEDURES_DEFNORETURN_PROCEDURE": "yi", + "PROCEDURES_BEFORE_PARAMS": "tare da:", + "PROCEDURES_CALL_BEFORE_PARAMS": "tare da:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Ya ƙirƙiri wani aiki ba tare da sakamako ba.", + "PROCEDURES_DEFNORETURN_COMMENT": "Kwatanta wannan aiki...", + "PROCEDURES_DEFRETURN_RETURN": "mayar", + "PROCEDURES_DEFRETURN_TOOLTIP": "Ya ƙirƙiri wani aiki ba tare da wani sakamako ba.", + "PROCEDURES_ALLOW_STATEMENTS": "ƙyale bayanai", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Gardaɗi: Wannan aikin yana da ruɓi na gazawa.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Gudanar da aiki '%1' wanda mai amfani ya ayyana.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Gudanar da aiki '%1' kuma a yi amfani da sakamakon sa.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "bayani", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Daɗa, cire, ko sake tsarin bayani na wannan aiki.", + "PROCEDURES_MUTATORARG_TITLE": "saka suna:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Daɗa wani bayani ga aikin.", + "PROCEDURES_HIGHLIGHT_DEF": "Bayar da haske na bayanin aiki", + "PROCEDURES_CREATE_DO": "Ƙirƙiri '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Idan wata kima gaskiya ce, to dawo da kima ta biyu.", + "PROCEDURES_IFRETURN_WARNING": "Gargaɗi: Za a iya amfani da wannan bulo ne kawai a cikin bayani na wani aiki.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Faɗi wani abu...", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Cancel" +} diff --git a/msg/json/hak.json b/msg/json/hak.json index 81f170bc004..8e680eae522 100644 --- a/msg/json/hak.json +++ b/msg/json/hak.json @@ -1,17 +1,17 @@ -{ - "@metadata": { - "authors": [ - "EagerLin" - ] - }, - "VARIABLES_DEFAULT_NAME": "變量", - "DUPLICATE_BLOCK": "複製", - "ADD_COMMENT": "加上解釋", - "REMOVE_COMMENT": "移忒解釋", - "EXTERNAL_INPUTS": "多行輸入", - "INLINE_INPUTS": "單行輸入", - "DELETE_BLOCK": "刪忒封鎖", - "DELETE_X_BLOCKS": "刪忒 %1 封鎖", - "DIALOG_OK": "確定", - "DIALOG_CANCEL": "取消" -} +{ + "@metadata": { + "authors": [ + "EagerLin" + ] + }, + "VARIABLES_DEFAULT_NAME": "變量", + "DUPLICATE_BLOCK": "複製", + "ADD_COMMENT": "加上解釋", + "REMOVE_COMMENT": "移忒解釋", + "EXTERNAL_INPUTS": "多行輸入", + "INLINE_INPUTS": "單行輸入", + "DELETE_BLOCK": "刪忒封鎖", + "DELETE_X_BLOCKS": "刪忒 %1 封鎖", + "DIALOG_OK": "確定", + "DIALOG_CANCEL": "取消" +} diff --git a/msg/json/he.json b/msg/json/he.json index 808458e5d94..3f9c06274af 100644 --- a/msg/json/he.json +++ b/msg/json/he.json @@ -1,359 +1,359 @@ -{ - "@metadata": { - "authors": [ - "Amire80", - "Deborahjay", - "Dorongol", - "Dvb", - "Elyashiv", - "Guycn2", - "Inkbug", - "LaG roiL", - "Motife", - "Noamrotem", - "Steeve815", - "YaronSh", - "Yona b", - "דגש חזק", - "נדב ס", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "פריט", - "UNNAMED_KEY": "ללא שם", - "TODAY": "היום", - "DUPLICATE_BLOCK": "שכפל", - "ADD_COMMENT": "הוסף תגובה", - "REMOVE_COMMENT": "הסר תגובה", - "DUPLICATE_COMMENT": "שכפול ההערה", - "EXTERNAL_INPUTS": "קלטים חיצוניים", - "INLINE_INPUTS": "קלטים פנימיים", - "DELETE_BLOCK": "מחיקת קוביה", - "DELETE_X_BLOCKS": "מחק %1 קטעי קוד", - "DELETE_ALL_BLOCKS": "האם למחוק את כל %1 הקוביות?", - "CLEAN_UP": "סידור בלוקים", - "COLLAPSE_BLOCK": "צמצום קוביה", - "COLLAPSE_ALL": "צמצם קטעי קוד", - "EXPAND_BLOCK": "הרחבת קוביה", - "EXPAND_ALL": "הרחב קטעי קוד", - "DISABLE_BLOCK": "השבתת קוביה", - "ENABLE_BLOCK": "הפעל קטע קוד", - "HELP": "עזרה", - "UNDO": "ביטול", - "REDO": "ביצוע חוזר", - "CHANGE_VALUE_TITLE": "שנה ערך:", - "RENAME_VARIABLE": "שנה את שם המשתנה...", - "RENAME_VARIABLE_TITLE": "שנה את שם כל '%1' המשתנים ל:", - "NEW_VARIABLE": "צור משתנה...", - "NEW_STRING_VARIABLE": "צור משתנה מחרוזת", - "NEW_NUMBER_VARIABLE": "צור משתנה מחרוזת", - "NEW_COLOUR_VARIABLE": "יצירת משתנה צבע...", - "NEW_VARIABLE_TYPE_TITLE": "סוג המשתנה החדש:", - "NEW_VARIABLE_TITLE": "שם המשתנה החדש:", - "VARIABLE_ALREADY_EXISTS": "קיים כבר משתנה בשם \"%1\".", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "קיים כבר משתנה בשם \"%1\" מסוג אחר: \"%2\"", - "DELETE_VARIABLE_CONFIRMATION": "למחוק %1 שימושים במשתנה ‚%2’?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "אי אפשר למחוק את המשתנה \"%1\", מכיוון שהגדרת הפונקציה \"%2\" משתמשת בו.", - "DELETE_VARIABLE": "מחק את משתנה ה'%1'", - "COLOUR_PICKER_HELPURL": "http://he.wikipedia.org/wiki/%D7%A6%D7%91%D7%A2", - "COLOUR_PICKER_TOOLTIP": "בחר צבע מן הצבעים.", - "COLOUR_RANDOM_TITLE": "צבע אקראי", - "COLOUR_RANDOM_TOOLTIP": "בחר צבא אקראי.", - "COLOUR_RGB_TITLE": "צבע עם", - "COLOUR_RGB_RED": "אדום", - "COLOUR_RGB_GREEN": "ירוק", - "COLOUR_RGB_BLUE": "כחול", - "COLOUR_RGB_TOOLTIP": "צור צבע עם הסכום המצוין של אדום, ירוק וכחול. כל הערכים חייבים להיות בין 0 ל100.", - "COLOUR_BLEND_TITLE": "ערבב", - "COLOUR_BLEND_COLOUR1": "צבע 1", - "COLOUR_BLEND_COLOUR2": "צבע 2", - "COLOUR_BLEND_RATIO": "יחס", - "COLOUR_BLEND_TOOLTIP": "מערבב שני צבעים יחד עם יחס נתון(0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "http://he.wikipedia.org/wiki/בקרת_זרימה", - "CONTROLS_REPEAT_TITLE": "חזור על הפעולה %1 פעמים", - "CONTROLS_REPEAT_INPUT_DO": "תעשה", - "CONTROLS_REPEAT_TOOLTIP": "לעשות כמה פעולות מספר פעמים.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "חזור כל עוד", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "חזור עד ש...", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "כל עוד הערך הוא אמת, לעשות כמה פעולות.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "בזמן שהערך שווה לשגוי, תעשה מספר חישובים.", - "CONTROLS_FOR_TOOLTIP": "לעשות שהערך ‚%1’ יקבל את הערכים מהמספר ההתחלתי עד המספר הסופי, בהתאם למרווח שהוגדר, ולבצע את הקוביות הנבחרות.", - "CONTROLS_FOR_TITLE": "תספור עם %1 מ־%2 עד %3 בצעדי %4", - "CONTROLS_FOREACH_TITLE": "לכל פריט %1 ברשימה %2", - "CONTROLS_FOREACH_TOOLTIP": "לכל פריט ברשימה, להגדיר את המשתנה '%1' לפריט הזה, ולאחר מכן לעשות כמה פעולות.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "צא מהלולאה", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "המשך עם האיטרציה הבאה של הלולאה", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "צא אל מחוץ ללולאה הכוללת.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "דלג על שאר הלולאה והמשך עם האיטרציה הבאה.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "אזהרה: קוביה זו עשויה לשמש רק בתוך לולאה.", - "CONTROLS_IF_TOOLTIP_1": "אם ערך נכון, לבצע כמה פעולות.", - "CONTROLS_IF_TOOLTIP_2": "אם הערך הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, לבצע את קוביית הפעולות השנייה.", - "CONTROLS_IF_TOOLTIP_3": "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה.", - "CONTROLS_IF_TOOLTIP_4": "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה. אם אף אחד מהם אינו נכון, לבצע את קוביית הפעולות האחרונה.", - "CONTROLS_IF_MSG_IF": "אם", - "CONTROLS_IF_MSG_ELSEIF": "אחרת אם", - "CONTROLS_IF_MSG_ELSE": "אחרת", - "CONTROLS_IF_IF_TOOLTIP": "ניתן להוסיף, למחוק או לסדר מחדש כדי להגדיר מחדש את קוביית ההתניה (If).", - "CONTROLS_IF_ELSEIF_TOOLTIP": "תוסיף תנאי לבלוק If.", - "CONTROLS_IF_ELSE_TOOLTIP": "ניתן להוסיף תנאי סופי שלוכד את כולם לקוביית ההתניה (If).", - "LOGIC_COMPARE_HELPURL": "https://he.wikipedia.org/wiki/אי-שוויון_(מתמטיקה)", - "LOGIC_COMPARE_TOOLTIP_EQ": "תחזיר נכון אם שני הקלטים שווים אחד לשני.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "תחזיר אמת אם שני הקלטים אינם שווים זה לזה.", - "LOGIC_COMPARE_TOOLTIP_LT": "תחזיר אמת (true) אם הקלט הראשון הוא קטן יותר מאשר הקלט השני.", - "LOGIC_COMPARE_TOOLTIP_LTE": "תחזיר אמת אם הקלט הראשון הוא קטן יותר או שווה לקלט השני.", - "LOGIC_COMPARE_TOOLTIP_GT": "תחזיר נכון אם הקלט הראשון גדול יותר מהקלט השני.", - "LOGIC_COMPARE_TOOLTIP_GTE": "תחזיר נכון אם הקלט הראשון גדול יותר או שווה לכניסה השנייה.", - "LOGIC_OPERATION_TOOLTIP_AND": "תחזיר נכון אם שני הקלטים נכונים.", - "LOGIC_OPERATION_AND": "וגם", - "LOGIC_OPERATION_TOOLTIP_OR": "תחזיר נכון אם מתקיים לפחות אחד מהקלטים נכונים.", - "LOGIC_OPERATION_OR": "או", - "LOGIC_NEGATE_TITLE": "לא %1", - "LOGIC_NEGATE_TOOLTIP": "החזר אמת אם הקלט הוא שקר. החזר שקר אם הקלט אמת.", - "LOGIC_BOOLEAN_TRUE": "נכון", - "LOGIC_BOOLEAN_FALSE": "שגוי", - "LOGIC_BOOLEAN_TOOLTIP": "מחזיר או האם נכון או האם שגוי.", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "תחזיר ריק.", - "LOGIC_TERNARY_CONDITION": "בדיקה", - "LOGIC_TERNARY_IF_TRUE": "אם נכון", - "LOGIC_TERNARY_IF_FALSE": "אם שגוי", - "LOGIC_TERNARY_TOOLTIP": "בדוק את התנאי ב'מבחן'. אם התנאי נכון, תחזיר את הערך 'אם נכון'; אחרת תחזיר את הערך 'אם שגוי'.", - "MATH_NUMBER_HELPURL": "https://he.wikipedia.org/wiki/מספר_ממשי", - "MATH_NUMBER_TOOLTIP": "מספר.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://he.wikipedia.org/wiki/ארבע_פעולות_החשבון", - "MATH_ARITHMETIC_TOOLTIP_ADD": "תחזיר את סכום שני המספרים.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "החזרת ההפרש בין שני מספרים.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "החזרת תוצאת הכפל בין שני מספרים.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "החזרת המנה של שני המספרים.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "החזרת המספר הראשון בחזקת המספר השני.", - "MATH_SINGLE_HELPURL": "https://he.wikipedia.org/wiki/שורש_ריבועי", - "MATH_SINGLE_OP_ROOT": "שורש ריבועי", - "MATH_SINGLE_TOOLTIP_ROOT": "החזרת השורש הריבועי של מספר.", - "MATH_SINGLE_OP_ABSOLUTE": "ערך מוחלט", - "MATH_SINGLE_TOOLTIP_ABS": "החזרת הערך המוחלט של מספר.", - "MATH_SINGLE_TOOLTIP_NEG": "החזרת הערך הנגדי של מספר.", - "MATH_SINGLE_TOOLTIP_LN": "החזרת הלוגריתם הטבעי של מספר.", - "MATH_SINGLE_TOOLTIP_LOG10": "החזרת הלוגריתם לפי בסיס עשר של מספר.", - "MATH_SINGLE_TOOLTIP_EXP": "החזרת e בחזקת מספר.", - "MATH_SINGLE_TOOLTIP_POW10": "החזרת 10 בחזקת מספר.", - "MATH_TRIG_HELPURL": "https://he.wikipedia.org/wiki/פונקציות_טריגונומטריות", - "MATH_TRIG_TOOLTIP_SIN": "החזרת הסינוס של מעלה (לא רדיאן).", - "MATH_TRIG_TOOLTIP_COS": "החזרת הקוסינוס של מעלה (לא רדיאן).", - "MATH_TRIG_TOOLTIP_TAN": "החזרת הטנגס של מעלה (לא רדיאן).", - "MATH_TRIG_TOOLTIP_ASIN": "החזרת הארק-סינוס של מספר.", - "MATH_TRIG_TOOLTIP_ACOS": "החזרת הארק-קוסינוס של מספר.", - "MATH_TRIG_TOOLTIP_ATAN": "החזרת הארק-טנגנס של מספר.", - "MATH_CONSTANT_HELPURL": "https://he.wikipedia.org/wiki/קבוע_מתמטי", - "MATH_CONSTANT_TOOLTIP": "החזרת אחד מהקבועים המקובלים: π (3.141…),‏ e (2.718…),‏ φ (1.618…),‏ sqrt(2) (1.414…),‏ sqrt(½) (0.707…)‏ או ∞ (אינסוף).", - "MATH_IS_EVEN": "זוגי", - "MATH_IS_ODD": "אי-זוגי", - "MATH_IS_PRIME": "ראשוני", - "MATH_IS_WHOLE": "שלם", - "MATH_IS_POSITIVE": "חיובי", - "MATH_IS_NEGATIVE": "שלילי", - "MATH_IS_DIVISIBLE_BY": "מתחלק ב", - "MATH_IS_TOOLTIP": "בדיקה האם מספר הוא זוגי, אי־זוגי, ראשוני, שלם, חיובי, שלילי או אם ניתן לחלק אותו במספר כלשהו. מחזירה אמת או שקר.", - "MATH_CHANGE_TITLE": "שינוי %1 על־ידי %2", - "MATH_CHANGE_TOOLTIP": "הוסף מספר למשתנה '%1'.", - "MATH_ROUND_HELPURL": "https://he.wikipedia.org/wiki/עיגול_(אריתמטיקה)", - "MATH_ROUND_TOOLTIP": "עיגול מספר למעלה או למטה.", - "MATH_ROUND_OPERATOR_ROUND": "עיגול", - "MATH_ROUND_OPERATOR_ROUNDUP": "עיגול למעלה", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "עיגול למטה", - "MATH_ONLIST_OPERATOR_SUM": "סכום של רשימה", - "MATH_ONLIST_TOOLTIP_SUM": "החזרת הסכום של המספרים ברשימה.", - "MATH_ONLIST_OPERATOR_MIN": "מינימום של רשימה", - "MATH_ONLIST_TOOLTIP_MIN": "תחזיר את המספר הקטן ביותר ברשימה.", - "MATH_ONLIST_OPERATOR_MAX": "מקסימום של רשימה", - "MATH_ONLIST_TOOLTIP_MAX": "תחזיר את המספר הגדול ביותר ברשימה.", - "MATH_ONLIST_OPERATOR_AVERAGE": "ממוצע של רשימה", - "MATH_ONLIST_TOOLTIP_AVERAGE": "החזרת הממוצע (ממוצע חשבוני) של הערכים המספריים שברשימה.", - "MATH_ONLIST_OPERATOR_MEDIAN": "חציון של רשימה", - "MATH_ONLIST_TOOLTIP_MEDIAN": "תחזיר את המספר החיצוני ביותר ברשימה.", - "MATH_ONLIST_OPERATOR_MODE": "שכיחי הרשימה", - "MATH_ONLIST_TOOLTIP_MODE": "החזרת רשימה של הפריטים הנפוצים ביותר ברשימה", - "MATH_ONLIST_OPERATOR_STD_DEV": "סטיית תקן של רשימה", - "MATH_ONLIST_TOOLTIP_STD_DEV": "מחזיר את סטיית התקן של הרשימה.", - "MATH_ONLIST_OPERATOR_RANDOM": "פריט אקראי מרשימה", - "MATH_ONLIST_TOOLTIP_RANDOM": "תחזיר רכיב אקראי מרשימה.", - "MATH_MODULO_HELPURL": "https://he.wikipedia.org/wiki/חשבון_מודולרי", - "MATH_MODULO_TITLE": "שארית החילוק %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "החזרת השארית מחלוקת שני המספרים.", - "MATH_CONSTRAIN_TITLE": "הגבל %1 בין %2 ל %3", - "MATH_CONSTRAIN_TOOLTIP": "הגבלת מספר כך שיהיה בין המגבלות שמוגדרות (כולל).", - "MATH_RANDOM_INT_HELPURL": "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים", - "MATH_RANDOM_INT_TITLE": "מספר שלם אקראי בין %1 ל-%2 (כולל)", - "MATH_RANDOM_INT_TOOLTIP": "החזרת מספר שלם, חיובי ואקראי בין שני הגבולות שהוגדרו, כולל.", - "MATH_RANDOM_FLOAT_HELPURL": "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "שבר אקראי", - "MATH_RANDOM_FLOAT_TOOLTIP": "מחזיר שבר אקראי בין 0.0 (כולל) עד 1.0 (כולל).", - "MATH_ATAN2_TITLE": "atan2 של X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "מחזיר את הארכטנגנס של נקודה (X, Y) במעלות מ־‎-180 עד 180.", - "TEXT_TEXT_HELPURL": "https://he.wikipedia.org/wiki/מחרוזת_(מדעי_המחשב)", - "TEXT_TEXT_TOOLTIP": "אות, מילה, או שורת טקסט.", - "TEXT_JOIN_TITLE_CREATEWITH": "יצירת טקסט עם", - "TEXT_JOIN_TOOLTIP": "יצירת מקטע טקסט על ידי צירוף של כמות כלשהי של פריטים יחדיו.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "צירוף", - "TEXT_CREATE_JOIN_TOOLTIP": "ניתן להוסיף, להסיר או לסדר מחדש סעיפים כדי להגדיר את קוביית הטקסט הזאת מחדש.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "הוספת פריט לטקסט.", - "TEXT_APPEND_TITLE": "אל %1 הוספת טקסט %2", - "TEXT_APPEND_TOOLTIP": "הוספת טקסט למשתנה ‚%1’.", - "TEXT_LENGTH_TITLE": "אורכו של %1", - "TEXT_LENGTH_TOOLTIP": "מחזיר את מספר התווים (אותיות, רווחים וכו') בטקסט שהוזן.", - "TEXT_ISEMPTY_TITLE": "%1 הוא ריק", - "TEXT_ISEMPTY_TOOLTIP": "מחזירה אמת אם הטקסט שצוין ריק.", - "TEXT_INDEXOF_TOOLTIP": "מחזירה את האינדקס של המופע הראשון/האחרון בטקסט הראשון לתוך הטקסט השני. מחזירה %1 אם הטקסט אינו נמצא.", - "TEXT_INDEXOF_TITLE": "בטקסט %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "איתור המופע הראשון של טקסט", - "TEXT_INDEXOF_OPERATOR_LAST": "איתור המופע האחרון של טקסט", - "TEXT_CHARAT_TITLE": "בטקסט %1 %2", - "TEXT_CHARAT_FROM_START": "קבלת אות מס׳", - "TEXT_CHARAT_FROM_END": "קבלת אות מס׳ מהסוף", - "TEXT_CHARAT_FIRST": "לקבל את האות הראשונה", - "TEXT_CHARAT_LAST": "לקבל את האות האחרונה", - "TEXT_CHARAT_RANDOM": "לקבל אות אקראית", - "TEXT_CHARAT_TOOLTIP": "מחזיר את האות במיקום שהוגדר.", - "TEXT_GET_SUBSTRING_TOOLTIP": "החזרת קטע מסוים מהטקסט.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "בתוך הטקסט", - "TEXT_GET_SUBSTRING_START_FROM_START": "קבלת תת־מחרוזת מאות מס׳", - "TEXT_GET_SUBSTRING_START_FROM_END": "קבלת מחרוזת מאות מס׳ מהסוף", - "TEXT_GET_SUBSTRING_START_FIRST": "קבלת תת־מחרוזת מהאות הראשונה", - "TEXT_GET_SUBSTRING_END_FROM_START": "לאות #", - "TEXT_GET_SUBSTRING_END_FROM_END": "לאות # מהסוף", - "TEXT_GET_SUBSTRING_END_LAST": "עד האות האחרונה", - "TEXT_CHANGECASE_TOOLTIP": "החזרת עותק של הטקסט בשינוי רישיות.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "לאותיות גדולות (עבור טקסט באנגלית)", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "לאותיות קטנות (עבור טקסט באנגלית)", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "לאותיות גדולות בתחילת כל מילה (עבור טקסט באנגלית)", - "TEXT_TRIM_TOOLTIP": "להחזיר עותק של הטקסט לאחר מחיקת רווחים מאחד או משני הקצוות.", - "TEXT_TRIM_OPERATOR_BOTH": "למחוק רווחים משני הקצוות", - "TEXT_TRIM_OPERATOR_LEFT": "למחוק רווחים מימין", - "TEXT_TRIM_OPERATOR_RIGHT": "למחוק רווחים משמאל", - "TEXT_PRINT_TITLE": "הדפס %1", - "TEXT_PRINT_TOOLTIP": "להדפיס טקסט, מספר או ערך אחר שצוין", - "TEXT_PROMPT_TYPE_TEXT": "בקשה להזנת טקסט עם הודעה", - "TEXT_PROMPT_TYPE_NUMBER": "בקשה למספר עם הודעה", - "TEXT_PROMPT_TOOLTIP_NUMBER": "בקש מהמשתמש מספר.", - "TEXT_PROMPT_TOOLTIP_TEXT": "בקשה למשתמש להזין טקסט כלשהו.", - "TEXT_COUNT_MESSAGE0": "לספור %1 ב־%2", - "TEXT_COUNT_TOOLTIP": "סופרת כמה פעמים טקסט מסוים מופיע בתוך טקסט אחר.", - "TEXT_REPLACE_MESSAGE0": "החלפת %1 בביטוי %2 בתוך %3", - "TEXT_REPLACE_TOOLTIP": "מחליפה את כל המופעים של טקסט מסוים בתוך טקסט אחר.", - "TEXT_REVERSE_MESSAGE0": "היפוך %1", - "TEXT_REVERSE_TOOLTIP": "הופכת את הסדר של התווים בטקסט.", - "LISTS_CREATE_EMPTY_TITLE": "צור רשימה ריקה", - "LISTS_CREATE_EMPTY_TOOLTIP": "החזר רשימה,באורך 0, המכילה רשומות נתונים", - "LISTS_CREATE_WITH_TOOLTIP": "צור רשימה עם כל מספר של פריטים.", - "LISTS_CREATE_WITH_INPUT_WITH": "צור רשימה עם", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "רשימה", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "ניתן להוסיף, למחוק או לסדר מחדש סעיפים כדי להגדיר מחדש את קוביית הרשימה הזאת.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "הוסף פריט לרשימה.", - "LISTS_REPEAT_TOOLTIP": "יוצר רשימה המורכבת מהערך נתון חוזר מספר פעמים שצוין.", - "LISTS_REPEAT_TITLE": "ליצור רשימה עם הפריט %1 %2 פעמים", - "LISTS_LENGTH_TITLE": "אורכו של %1", - "LISTS_LENGTH_TOOLTIP": "מחזירה את האורך של רשימה.", - "LISTS_ISEMPTY_TITLE": "%1 הוא ריק", - "LISTS_ISEMPTY_TOOLTIP": "מחזיר אמת אם הרשימה ריקה.", - "LISTS_INLIST": "ברשימה", - "LISTS_INDEX_OF_FIRST": "מחזירה את המיקום הראשון של פריט ברשימה", - "LISTS_INDEX_OF_LAST": "מחזירה את המיקום האחרון של פריט ברשימה", - "LISTS_INDEX_OF_TOOLTIP": "מחזירה את האינדקס של המופע הראשון/האחרון של הפריט ברשימה. מחזירה %1 אם הפריט אינו נמצא.", - "LISTS_GET_INDEX_GET": "לקבל", - "LISTS_GET_INDEX_GET_REMOVE": "קבל ומחק", - "LISTS_GET_INDEX_REMOVE": "הסרה", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# מהסוף", - "LISTS_GET_INDEX_FIRST": "ראשון", - "LISTS_GET_INDEX_LAST": "אחרון", - "LISTS_GET_INDEX_RANDOM": "אקראי", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 הוא הפריט הראשון.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 הוא הפריט האחרון.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "מחזיר פריט במיקום שצוין ברשימה.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "מחזיר את הפריט הראשון ברשימה.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "מחזיר את הפריט האחרון ברשימה.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "מחזיר פריט אקראי מהרשימה.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "מסיר ומחזיר את הפריט במיקום שצוין ברשימה.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "מסיר ומחזיר את הפריט הראשון ברשימה.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "מסיר ומחזיר את הפריט האחרון ברשימה.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "מחק והחזר פריט אקראי מהרשימה.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "מחזיר פריט במיקום שצוין ברשימה.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "הסר את הפריט הראשון ברשימה.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "הסר את הפריט הראשון ברשימה.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "הסר פריט אקראי ברשימה.", - "LISTS_SET_INDEX_SET": "הגדר", - "LISTS_SET_INDEX_INSERT": "הכנס ב", - "LISTS_SET_INDEX_INPUT_TO": "כמו", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "מגדיר את הפריט במיקום שצוין ברשימה.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "מגדיר את הפריט הראשון ברשימה.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "מגדיר את הפריט האחרון ברשימה.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "מגדיר פריט אקראי ברשימה.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "מכניס את הפריט במיקום שצוין ברשימה.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "מכניס את הפריט בתחילת רשימה.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "מוסיף את הפריט בסוף רשימה.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "הוסף פריט באופן אקראי ברשימה.", - "LISTS_GET_SUBLIST_START_FROM_START": "לקבל חלק מהרשימה החל מ-#", - "LISTS_GET_SUBLIST_START_FROM_END": "לקבל חלק מהרשימה החל מ-# עד הסוף", - "LISTS_GET_SUBLIST_START_FIRST": "לקבל חלק מהרשימה החל מהתחלה", - "LISTS_GET_SUBLIST_END_FROM_START": "ל #", - "LISTS_GET_SUBLIST_END_FROM_END": "ל # מהסוף", - "LISTS_GET_SUBLIST_END_LAST": "לאחרון", - "LISTS_GET_SUBLIST_TOOLTIP": "יוצרת עותק של חלק מסוים מהרשימה.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "מיון %1 %2 %3", - "LISTS_SORT_TOOLTIP": "מיון עותק של הרשימה.", - "LISTS_SORT_ORDER_ASCENDING": "סדר עולה", - "LISTS_SORT_ORDER_DESCENDING": "סדר יורד", - "LISTS_SORT_TYPE_NUMERIC": "נומרי", - "LISTS_SORT_TYPE_TEXT": "סדר אלפביתי", - "LISTS_SORT_TYPE_IGNORECASE": "סדר אלפביתי, לא תלוי רישיות", - "LISTS_SPLIT_LIST_FROM_TEXT": "יצירת רשימה מטקסט", - "LISTS_SPLIT_TEXT_FROM_LIST": "יצירת טקסט מרשימה", - "LISTS_SPLIT_WITH_DELIMITER": "עם מפריד", - "LISTS_SPLIT_TOOLTIP_SPLIT": "פיצול טקסט לרשימה של טקסטים, יחתכו לפי תו הפרדה.", - "LISTS_SPLIT_TOOLTIP_JOIN": "צירוף רשימת טקסטים לטקסט אחד, מופרדים בתו הפרדה.", - "LISTS_REVERSE_MESSAGE0": "היפוך %1", - "LISTS_REVERSE_TOOLTIP": "היפוך עותק של רשימה.", - "VARIABLES_GET_TOOLTIP": "להחזיר את הערך של משתנה זה.", - "VARIABLES_GET_CREATE_SET": "ליצור 'הגדר %1'", - "VARIABLES_SET": "הגדר %1 ל- %2", - "VARIABLES_SET_TOOLTIP": "מגדיר משתנה זה להיות שווה לקלט.", - "VARIABLES_SET_CREATE_GET": "ליצור 'קרא %1'", - "PROCEDURES_DEFNORETURN_TITLE": "לביצוע:", - "PROCEDURES_DEFNORETURN_PROCEDURE": "לעשות משהו", - "PROCEDURES_BEFORE_PARAMS": "עם:", - "PROCEDURES_CALL_BEFORE_PARAMS": "עם:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "יצירת פונקציה ללא פלט.", - "PROCEDURES_DEFNORETURN_COMMENT": "תאר את הפונקציה הזאת...", - "PROCEDURES_DEFRETURN_RETURN": "להחזיר", - "PROCEDURES_DEFRETURN_TOOLTIP": "יצירת פונקציה עם פלט.", - "PROCEDURES_ALLOW_STATEMENTS": "לאפשר פעולות", - "PROCEDURES_DEF_DUPLICATE_WARNING": "אזהרה: לפונקציה זו יש פרמטרים כפולים.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://he.wikipedia.org/wiki/שגרה_(תכנות)", - "PROCEDURES_CALLNORETURN_TOOLTIP": "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://he.wikipedia.org/wiki/שגרה_(תכנות)", - "PROCEDURES_CALLRETURN_TOOLTIP": "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1' ולהשתמש הפלט שלה.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "מקורות קלט", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "הוסף, הסר או סדר מחדש קלטים לפונקציה זו", - "PROCEDURES_MUTATORARG_TITLE": "שם הקלט:", - "PROCEDURES_MUTATORARG_TOOLTIP": "הוסף קלט לפונקציה", - "PROCEDURES_HIGHLIGHT_DEF": "הדגש הגדרה של פונקציה", - "PROCEDURES_CREATE_DO": "ליצור '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "אם ערך נכון, אז להחזיר ערך שני.", - "PROCEDURES_IFRETURN_WARNING": "אזהרה: קוביה זו עשויה לשמש רק בתוך הגדרה של פונקציה.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "נא להזין הערה...", - "WORKSPACE_ARIA_LABEL": "סביבת העבודה בלוקלי", - "COLLAPSED_WARNINGS_WARNING": "קוביות מצומצמות מכילות אזהרות.", - "DIALOG_OK": "אישור", - "DIALOG_CANCEL": "ביטול" -} +{ + "@metadata": { + "authors": [ + "Amire80", + "Deborahjay", + "Dorongol", + "Dvb", + "Elyashiv", + "Guycn2", + "Inkbug", + "LaG roiL", + "Motife", + "Noamrotem", + "Steeve815", + "YaronSh", + "Yona b", + "דגש חזק", + "נדב ס", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "פריט", + "UNNAMED_KEY": "ללא שם", + "TODAY": "היום", + "DUPLICATE_BLOCK": "שכפל", + "ADD_COMMENT": "הוסף תגובה", + "REMOVE_COMMENT": "הסר תגובה", + "DUPLICATE_COMMENT": "שכפול ההערה", + "EXTERNAL_INPUTS": "קלטים חיצוניים", + "INLINE_INPUTS": "קלטים פנימיים", + "DELETE_BLOCK": "מחיקת קוביה", + "DELETE_X_BLOCKS": "מחק %1 קטעי קוד", + "DELETE_ALL_BLOCKS": "האם למחוק את כל %1 הקוביות?", + "CLEAN_UP": "סידור בלוקים", + "COLLAPSE_BLOCK": "צמצום קוביה", + "COLLAPSE_ALL": "צמצם קטעי קוד", + "EXPAND_BLOCK": "הרחבת קוביה", + "EXPAND_ALL": "הרחב קטעי קוד", + "DISABLE_BLOCK": "השבתת קוביה", + "ENABLE_BLOCK": "הפעל קטע קוד", + "HELP": "עזרה", + "UNDO": "ביטול", + "REDO": "ביצוע חוזר", + "CHANGE_VALUE_TITLE": "שנה ערך:", + "RENAME_VARIABLE": "שנה את שם המשתנה...", + "RENAME_VARIABLE_TITLE": "שנה את שם כל '%1' המשתנים ל:", + "NEW_VARIABLE": "צור משתנה...", + "NEW_STRING_VARIABLE": "צור משתנה מחרוזת", + "NEW_NUMBER_VARIABLE": "צור משתנה מחרוזת", + "NEW_COLOUR_VARIABLE": "יצירת משתנה צבע...", + "NEW_VARIABLE_TYPE_TITLE": "סוג המשתנה החדש:", + "NEW_VARIABLE_TITLE": "שם המשתנה החדש:", + "VARIABLE_ALREADY_EXISTS": "קיים כבר משתנה בשם \"%1\".", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "קיים כבר משתנה בשם \"%1\" מסוג אחר: \"%2\"", + "DELETE_VARIABLE_CONFIRMATION": "למחוק %1 שימושים במשתנה ‚%2’?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "אי אפשר למחוק את המשתנה \"%1\", מכיוון שהגדרת הפונקציה \"%2\" משתמשת בו.", + "DELETE_VARIABLE": "מחק את משתנה ה'%1'", + "COLOUR_PICKER_HELPURL": "http://he.wikipedia.org/wiki/%D7%A6%D7%91%D7%A2", + "COLOUR_PICKER_TOOLTIP": "בחר צבע מן הצבעים.", + "COLOUR_RANDOM_TITLE": "צבע אקראי", + "COLOUR_RANDOM_TOOLTIP": "בחר צבא אקראי.", + "COLOUR_RGB_TITLE": "צבע עם", + "COLOUR_RGB_RED": "אדום", + "COLOUR_RGB_GREEN": "ירוק", + "COLOUR_RGB_BLUE": "כחול", + "COLOUR_RGB_TOOLTIP": "צור צבע עם הסכום המצוין של אדום, ירוק וכחול. כל הערכים חייבים להיות בין 0 ל100.", + "COLOUR_BLEND_TITLE": "ערבב", + "COLOUR_BLEND_COLOUR1": "צבע 1", + "COLOUR_BLEND_COLOUR2": "צבע 2", + "COLOUR_BLEND_RATIO": "יחס", + "COLOUR_BLEND_TOOLTIP": "מערבב שני צבעים יחד עם יחס נתון(0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "http://he.wikipedia.org/wiki/בקרת_זרימה", + "CONTROLS_REPEAT_TITLE": "חזור על הפעולה %1 פעמים", + "CONTROLS_REPEAT_INPUT_DO": "תעשה", + "CONTROLS_REPEAT_TOOLTIP": "לעשות כמה פעולות מספר פעמים.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "חזור כל עוד", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "חזור עד ש...", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "כל עוד הערך הוא אמת, לעשות כמה פעולות.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "בזמן שהערך שווה לשגוי, תעשה מספר חישובים.", + "CONTROLS_FOR_TOOLTIP": "לעשות שהערך ‚%1’ יקבל את הערכים מהמספר ההתחלתי עד המספר הסופי, בהתאם למרווח שהוגדר, ולבצע את הקוביות הנבחרות.", + "CONTROLS_FOR_TITLE": "תספור עם %1 מ־%2 עד %3 בצעדי %4", + "CONTROLS_FOREACH_TITLE": "לכל פריט %1 ברשימה %2", + "CONTROLS_FOREACH_TOOLTIP": "לכל פריט ברשימה, להגדיר את המשתנה '%1' לפריט הזה, ולאחר מכן לעשות כמה פעולות.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "צא מהלולאה", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "המשך עם האיטרציה הבאה של הלולאה", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "צא אל מחוץ ללולאה הכוללת.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "דלג על שאר הלולאה והמשך עם האיטרציה הבאה.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "אזהרה: קוביה זו עשויה לשמש רק בתוך לולאה.", + "CONTROLS_IF_TOOLTIP_1": "אם ערך נכון, לבצע כמה פעולות.", + "CONTROLS_IF_TOOLTIP_2": "אם הערך הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, לבצע את קוביית הפעולות השנייה.", + "CONTROLS_IF_TOOLTIP_3": "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה.", + "CONTROLS_IF_TOOLTIP_4": "אם הערך הראשון הוא אמת, לבצע את קוביית הפעולות הראשונה. אחרת, אם הערך השני הוא אמת, לבצע את קוביית הפעולות השנייה. אם אף אחד מהם אינו נכון, לבצע את קוביית הפעולות האחרונה.", + "CONTROLS_IF_MSG_IF": "אם", + "CONTROLS_IF_MSG_ELSEIF": "אחרת אם", + "CONTROLS_IF_MSG_ELSE": "אחרת", + "CONTROLS_IF_IF_TOOLTIP": "ניתן להוסיף, למחוק או לסדר מחדש כדי להגדיר מחדש את קוביית ההתניה (If).", + "CONTROLS_IF_ELSEIF_TOOLTIP": "תוסיף תנאי לבלוק If.", + "CONTROLS_IF_ELSE_TOOLTIP": "ניתן להוסיף תנאי סופי שלוכד את כולם לקוביית ההתניה (If).", + "LOGIC_COMPARE_HELPURL": "https://he.wikipedia.org/wiki/אי-שוויון_(מתמטיקה)", + "LOGIC_COMPARE_TOOLTIP_EQ": "תחזיר נכון אם שני הקלטים שווים אחד לשני.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "תחזיר אמת אם שני הקלטים אינם שווים זה לזה.", + "LOGIC_COMPARE_TOOLTIP_LT": "תחזיר אמת (true) אם הקלט הראשון הוא קטן יותר מאשר הקלט השני.", + "LOGIC_COMPARE_TOOLTIP_LTE": "תחזיר אמת אם הקלט הראשון הוא קטן יותר או שווה לקלט השני.", + "LOGIC_COMPARE_TOOLTIP_GT": "תחזיר נכון אם הקלט הראשון גדול יותר מהקלט השני.", + "LOGIC_COMPARE_TOOLTIP_GTE": "תחזיר נכון אם הקלט הראשון גדול יותר או שווה לכניסה השנייה.", + "LOGIC_OPERATION_TOOLTIP_AND": "תחזיר נכון אם שני הקלטים נכונים.", + "LOGIC_OPERATION_AND": "וגם", + "LOGIC_OPERATION_TOOLTIP_OR": "תחזיר נכון אם מתקיים לפחות אחד מהקלטים נכונים.", + "LOGIC_OPERATION_OR": "או", + "LOGIC_NEGATE_TITLE": "לא %1", + "LOGIC_NEGATE_TOOLTIP": "החזר אמת אם הקלט הוא שקר. החזר שקר אם הקלט אמת.", + "LOGIC_BOOLEAN_TRUE": "נכון", + "LOGIC_BOOLEAN_FALSE": "שגוי", + "LOGIC_BOOLEAN_TOOLTIP": "מחזיר או האם נכון או האם שגוי.", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "תחזיר ריק.", + "LOGIC_TERNARY_CONDITION": "בדיקה", + "LOGIC_TERNARY_IF_TRUE": "אם נכון", + "LOGIC_TERNARY_IF_FALSE": "אם שגוי", + "LOGIC_TERNARY_TOOLTIP": "בדוק את התנאי ב'מבחן'. אם התנאי נכון, תחזיר את הערך 'אם נכון'; אחרת תחזיר את הערך 'אם שגוי'.", + "MATH_NUMBER_HELPURL": "https://he.wikipedia.org/wiki/מספר_ממשי", + "MATH_NUMBER_TOOLTIP": "מספר.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://he.wikipedia.org/wiki/ארבע_פעולות_החשבון", + "MATH_ARITHMETIC_TOOLTIP_ADD": "תחזיר את סכום שני המספרים.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "החזרת ההפרש בין שני מספרים.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "החזרת תוצאת הכפל בין שני מספרים.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "החזרת המנה של שני המספרים.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "החזרת המספר הראשון בחזקת המספר השני.", + "MATH_SINGLE_HELPURL": "https://he.wikipedia.org/wiki/שורש_ריבועי", + "MATH_SINGLE_OP_ROOT": "שורש ריבועי", + "MATH_SINGLE_TOOLTIP_ROOT": "החזרת השורש הריבועי של מספר.", + "MATH_SINGLE_OP_ABSOLUTE": "ערך מוחלט", + "MATH_SINGLE_TOOLTIP_ABS": "החזרת הערך המוחלט של מספר.", + "MATH_SINGLE_TOOLTIP_NEG": "החזרת הערך הנגדי של מספר.", + "MATH_SINGLE_TOOLTIP_LN": "החזרת הלוגריתם הטבעי של מספר.", + "MATH_SINGLE_TOOLTIP_LOG10": "החזרת הלוגריתם לפי בסיס עשר של מספר.", + "MATH_SINGLE_TOOLTIP_EXP": "החזרת e בחזקת מספר.", + "MATH_SINGLE_TOOLTIP_POW10": "החזרת 10 בחזקת מספר.", + "MATH_TRIG_HELPURL": "https://he.wikipedia.org/wiki/פונקציות_טריגונומטריות", + "MATH_TRIG_TOOLTIP_SIN": "החזרת הסינוס של מעלה (לא רדיאן).", + "MATH_TRIG_TOOLTIP_COS": "החזרת הקוסינוס של מעלה (לא רדיאן).", + "MATH_TRIG_TOOLTIP_TAN": "החזרת הטנגס של מעלה (לא רדיאן).", + "MATH_TRIG_TOOLTIP_ASIN": "החזרת הארק-סינוס של מספר.", + "MATH_TRIG_TOOLTIP_ACOS": "החזרת הארק-קוסינוס של מספר.", + "MATH_TRIG_TOOLTIP_ATAN": "החזרת הארק-טנגנס של מספר.", + "MATH_CONSTANT_HELPURL": "https://he.wikipedia.org/wiki/קבוע_מתמטי", + "MATH_CONSTANT_TOOLTIP": "החזרת אחד מהקבועים המקובלים: π (3.141…),‏ e (2.718…),‏ φ (1.618…),‏ sqrt(2) (1.414…),‏ sqrt(½) (0.707…)‏ או ∞ (אינסוף).", + "MATH_IS_EVEN": "זוגי", + "MATH_IS_ODD": "אי-זוגי", + "MATH_IS_PRIME": "ראשוני", + "MATH_IS_WHOLE": "שלם", + "MATH_IS_POSITIVE": "חיובי", + "MATH_IS_NEGATIVE": "שלילי", + "MATH_IS_DIVISIBLE_BY": "מתחלק ב", + "MATH_IS_TOOLTIP": "בדיקה האם מספר הוא זוגי, אי־זוגי, ראשוני, שלם, חיובי, שלילי או אם ניתן לחלק אותו במספר כלשהו. מחזירה אמת או שקר.", + "MATH_CHANGE_TITLE": "שינוי %1 על־ידי %2", + "MATH_CHANGE_TOOLTIP": "הוסף מספר למשתנה '%1'.", + "MATH_ROUND_HELPURL": "https://he.wikipedia.org/wiki/עיגול_(אריתמטיקה)", + "MATH_ROUND_TOOLTIP": "עיגול מספר למעלה או למטה.", + "MATH_ROUND_OPERATOR_ROUND": "עיגול", + "MATH_ROUND_OPERATOR_ROUNDUP": "עיגול למעלה", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "עיגול למטה", + "MATH_ONLIST_OPERATOR_SUM": "סכום של רשימה", + "MATH_ONLIST_TOOLTIP_SUM": "החזרת הסכום של המספרים ברשימה.", + "MATH_ONLIST_OPERATOR_MIN": "מינימום של רשימה", + "MATH_ONLIST_TOOLTIP_MIN": "תחזיר את המספר הקטן ביותר ברשימה.", + "MATH_ONLIST_OPERATOR_MAX": "מקסימום של רשימה", + "MATH_ONLIST_TOOLTIP_MAX": "תחזיר את המספר הגדול ביותר ברשימה.", + "MATH_ONLIST_OPERATOR_AVERAGE": "ממוצע של רשימה", + "MATH_ONLIST_TOOLTIP_AVERAGE": "החזרת הממוצע (ממוצע חשבוני) של הערכים המספריים שברשימה.", + "MATH_ONLIST_OPERATOR_MEDIAN": "חציון של רשימה", + "MATH_ONLIST_TOOLTIP_MEDIAN": "תחזיר את המספר החיצוני ביותר ברשימה.", + "MATH_ONLIST_OPERATOR_MODE": "שכיחי הרשימה", + "MATH_ONLIST_TOOLTIP_MODE": "החזרת רשימה של הפריטים הנפוצים ביותר ברשימה", + "MATH_ONLIST_OPERATOR_STD_DEV": "סטיית תקן של רשימה", + "MATH_ONLIST_TOOLTIP_STD_DEV": "מחזיר את סטיית התקן של הרשימה.", + "MATH_ONLIST_OPERATOR_RANDOM": "פריט אקראי מרשימה", + "MATH_ONLIST_TOOLTIP_RANDOM": "תחזיר רכיב אקראי מרשימה.", + "MATH_MODULO_HELPURL": "https://he.wikipedia.org/wiki/חשבון_מודולרי", + "MATH_MODULO_TITLE": "שארית החילוק %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "החזרת השארית מחלוקת שני המספרים.", + "MATH_CONSTRAIN_TITLE": "הגבל %1 בין %2 ל %3", + "MATH_CONSTRAIN_TOOLTIP": "הגבלת מספר כך שיהיה בין המגבלות שמוגדרות (כולל).", + "MATH_RANDOM_INT_HELPURL": "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים", + "MATH_RANDOM_INT_TITLE": "מספר שלם אקראי בין %1 ל-%2 (כולל)", + "MATH_RANDOM_INT_TOOLTIP": "החזרת מספר שלם, חיובי ואקראי בין שני הגבולות שהוגדרו, כולל.", + "MATH_RANDOM_FLOAT_HELPURL": "https://he.wikipedia.org/wiki/מחולל_מספרים_אקראיים", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "שבר אקראי", + "MATH_RANDOM_FLOAT_TOOLTIP": "מחזיר שבר אקראי בין 0.0 (כולל) עד 1.0 (כולל).", + "MATH_ATAN2_TITLE": "atan2 של X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "מחזיר את הארכטנגנס של נקודה (X, Y) במעלות מ־‎-180 עד 180.", + "TEXT_TEXT_HELPURL": "https://he.wikipedia.org/wiki/מחרוזת_(מדעי_המחשב)", + "TEXT_TEXT_TOOLTIP": "אות, מילה, או שורת טקסט.", + "TEXT_JOIN_TITLE_CREATEWITH": "יצירת טקסט עם", + "TEXT_JOIN_TOOLTIP": "יצירת מקטע טקסט על ידי צירוף של כמות כלשהי של פריטים יחדיו.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "צירוף", + "TEXT_CREATE_JOIN_TOOLTIP": "ניתן להוסיף, להסיר או לסדר מחדש סעיפים כדי להגדיר את קוביית הטקסט הזאת מחדש.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "הוספת פריט לטקסט.", + "TEXT_APPEND_TITLE": "אל %1 הוספת טקסט %2", + "TEXT_APPEND_TOOLTIP": "הוספת טקסט למשתנה ‚%1’.", + "TEXT_LENGTH_TITLE": "אורכו של %1", + "TEXT_LENGTH_TOOLTIP": "מחזיר את מספר התווים (אותיות, רווחים וכו') בטקסט שהוזן.", + "TEXT_ISEMPTY_TITLE": "%1 הוא ריק", + "TEXT_ISEMPTY_TOOLTIP": "מחזירה אמת אם הטקסט שצוין ריק.", + "TEXT_INDEXOF_TOOLTIP": "מחזירה את האינדקס של המופע הראשון/האחרון בטקסט הראשון לתוך הטקסט השני. מחזירה %1 אם הטקסט אינו נמצא.", + "TEXT_INDEXOF_TITLE": "בטקסט %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "איתור המופע הראשון של טקסט", + "TEXT_INDEXOF_OPERATOR_LAST": "איתור המופע האחרון של טקסט", + "TEXT_CHARAT_TITLE": "בטקסט %1 %2", + "TEXT_CHARAT_FROM_START": "קבלת אות מס׳", + "TEXT_CHARAT_FROM_END": "קבלת אות מס׳ מהסוף", + "TEXT_CHARAT_FIRST": "לקבל את האות הראשונה", + "TEXT_CHARAT_LAST": "לקבל את האות האחרונה", + "TEXT_CHARAT_RANDOM": "לקבל אות אקראית", + "TEXT_CHARAT_TOOLTIP": "מחזיר את האות במיקום שהוגדר.", + "TEXT_GET_SUBSTRING_TOOLTIP": "החזרת קטע מסוים מהטקסט.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "בתוך הטקסט", + "TEXT_GET_SUBSTRING_START_FROM_START": "קבלת תת־מחרוזת מאות מס׳", + "TEXT_GET_SUBSTRING_START_FROM_END": "קבלת מחרוזת מאות מס׳ מהסוף", + "TEXT_GET_SUBSTRING_START_FIRST": "קבלת תת־מחרוזת מהאות הראשונה", + "TEXT_GET_SUBSTRING_END_FROM_START": "לאות #", + "TEXT_GET_SUBSTRING_END_FROM_END": "לאות # מהסוף", + "TEXT_GET_SUBSTRING_END_LAST": "עד האות האחרונה", + "TEXT_CHANGECASE_TOOLTIP": "החזרת עותק של הטקסט בשינוי רישיות.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "לאותיות גדולות (עבור טקסט באנגלית)", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "לאותיות קטנות (עבור טקסט באנגלית)", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "לאותיות גדולות בתחילת כל מילה (עבור טקסט באנגלית)", + "TEXT_TRIM_TOOLTIP": "להחזיר עותק של הטקסט לאחר מחיקת רווחים מאחד או משני הקצוות.", + "TEXT_TRIM_OPERATOR_BOTH": "למחוק רווחים משני הקצוות", + "TEXT_TRIM_OPERATOR_LEFT": "למחוק רווחים מימין", + "TEXT_TRIM_OPERATOR_RIGHT": "למחוק רווחים משמאל", + "TEXT_PRINT_TITLE": "הדפס %1", + "TEXT_PRINT_TOOLTIP": "להדפיס טקסט, מספר או ערך אחר שצוין", + "TEXT_PROMPT_TYPE_TEXT": "בקשה להזנת טקסט עם הודעה", + "TEXT_PROMPT_TYPE_NUMBER": "בקשה למספר עם הודעה", + "TEXT_PROMPT_TOOLTIP_NUMBER": "בקש מהמשתמש מספר.", + "TEXT_PROMPT_TOOLTIP_TEXT": "בקשה למשתמש להזין טקסט כלשהו.", + "TEXT_COUNT_MESSAGE0": "לספור %1 ב־%2", + "TEXT_COUNT_TOOLTIP": "סופרת כמה פעמים טקסט מסוים מופיע בתוך טקסט אחר.", + "TEXT_REPLACE_MESSAGE0": "החלפת %1 בביטוי %2 בתוך %3", + "TEXT_REPLACE_TOOLTIP": "מחליפה את כל המופעים של טקסט מסוים בתוך טקסט אחר.", + "TEXT_REVERSE_MESSAGE0": "היפוך %1", + "TEXT_REVERSE_TOOLTIP": "הופכת את הסדר של התווים בטקסט.", + "LISTS_CREATE_EMPTY_TITLE": "צור רשימה ריקה", + "LISTS_CREATE_EMPTY_TOOLTIP": "החזר רשימה,באורך 0, המכילה רשומות נתונים", + "LISTS_CREATE_WITH_TOOLTIP": "צור רשימה עם כל מספר של פריטים.", + "LISTS_CREATE_WITH_INPUT_WITH": "צור רשימה עם", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "רשימה", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "ניתן להוסיף, למחוק או לסדר מחדש סעיפים כדי להגדיר מחדש את קוביית הרשימה הזאת.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "הוסף פריט לרשימה.", + "LISTS_REPEAT_TOOLTIP": "יוצר רשימה המורכבת מהערך נתון חוזר מספר פעמים שצוין.", + "LISTS_REPEAT_TITLE": "ליצור רשימה עם הפריט %1 %2 פעמים", + "LISTS_LENGTH_TITLE": "אורכו של %1", + "LISTS_LENGTH_TOOLTIP": "מחזירה את האורך של רשימה.", + "LISTS_ISEMPTY_TITLE": "%1 הוא ריק", + "LISTS_ISEMPTY_TOOLTIP": "מחזיר אמת אם הרשימה ריקה.", + "LISTS_INLIST": "ברשימה", + "LISTS_INDEX_OF_FIRST": "מחזירה את המיקום הראשון של פריט ברשימה", + "LISTS_INDEX_OF_LAST": "מחזירה את המיקום האחרון של פריט ברשימה", + "LISTS_INDEX_OF_TOOLTIP": "מחזירה את האינדקס של המופע הראשון/האחרון של הפריט ברשימה. מחזירה %1 אם הפריט אינו נמצא.", + "LISTS_GET_INDEX_GET": "לקבל", + "LISTS_GET_INDEX_GET_REMOVE": "קבל ומחק", + "LISTS_GET_INDEX_REMOVE": "הסרה", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# מהסוף", + "LISTS_GET_INDEX_FIRST": "ראשון", + "LISTS_GET_INDEX_LAST": "אחרון", + "LISTS_GET_INDEX_RANDOM": "אקראי", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 הוא הפריט הראשון.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 הוא הפריט האחרון.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "מחזיר פריט במיקום שצוין ברשימה.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "מחזיר את הפריט הראשון ברשימה.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "מחזיר את הפריט האחרון ברשימה.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "מחזיר פריט אקראי מהרשימה.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "מסיר ומחזיר את הפריט במיקום שצוין ברשימה.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "מסיר ומחזיר את הפריט הראשון ברשימה.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "מסיר ומחזיר את הפריט האחרון ברשימה.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "מחק והחזר פריט אקראי מהרשימה.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "מחזיר פריט במיקום שצוין ברשימה.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "הסר את הפריט הראשון ברשימה.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "הסר את הפריט הראשון ברשימה.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "הסר פריט אקראי ברשימה.", + "LISTS_SET_INDEX_SET": "הגדר", + "LISTS_SET_INDEX_INSERT": "הכנס ב", + "LISTS_SET_INDEX_INPUT_TO": "כמו", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "מגדיר את הפריט במיקום שצוין ברשימה.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "מגדיר את הפריט הראשון ברשימה.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "מגדיר את הפריט האחרון ברשימה.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "מגדיר פריט אקראי ברשימה.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "מכניס את הפריט במיקום שצוין ברשימה.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "מכניס את הפריט בתחילת רשימה.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "מוסיף את הפריט בסוף רשימה.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "הוסף פריט באופן אקראי ברשימה.", + "LISTS_GET_SUBLIST_START_FROM_START": "לקבל חלק מהרשימה החל מ-#", + "LISTS_GET_SUBLIST_START_FROM_END": "לקבל חלק מהרשימה החל מ-# עד הסוף", + "LISTS_GET_SUBLIST_START_FIRST": "לקבל חלק מהרשימה החל מהתחלה", + "LISTS_GET_SUBLIST_END_FROM_START": "ל #", + "LISTS_GET_SUBLIST_END_FROM_END": "ל # מהסוף", + "LISTS_GET_SUBLIST_END_LAST": "לאחרון", + "LISTS_GET_SUBLIST_TOOLTIP": "יוצרת עותק של חלק מסוים מהרשימה.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "מיון %1 %2 %3", + "LISTS_SORT_TOOLTIP": "מיון עותק של הרשימה.", + "LISTS_SORT_ORDER_ASCENDING": "סדר עולה", + "LISTS_SORT_ORDER_DESCENDING": "סדר יורד", + "LISTS_SORT_TYPE_NUMERIC": "נומרי", + "LISTS_SORT_TYPE_TEXT": "סדר אלפביתי", + "LISTS_SORT_TYPE_IGNORECASE": "סדר אלפביתי, לא תלוי רישיות", + "LISTS_SPLIT_LIST_FROM_TEXT": "יצירת רשימה מטקסט", + "LISTS_SPLIT_TEXT_FROM_LIST": "יצירת טקסט מרשימה", + "LISTS_SPLIT_WITH_DELIMITER": "עם מפריד", + "LISTS_SPLIT_TOOLTIP_SPLIT": "פיצול טקסט לרשימה של טקסטים, יחתכו לפי תו הפרדה.", + "LISTS_SPLIT_TOOLTIP_JOIN": "צירוף רשימת טקסטים לטקסט אחד, מופרדים בתו הפרדה.", + "LISTS_REVERSE_MESSAGE0": "היפוך %1", + "LISTS_REVERSE_TOOLTIP": "היפוך עותק של רשימה.", + "VARIABLES_GET_TOOLTIP": "להחזיר את הערך של משתנה זה.", + "VARIABLES_GET_CREATE_SET": "ליצור 'הגדר %1'", + "VARIABLES_SET": "הגדר %1 ל- %2", + "VARIABLES_SET_TOOLTIP": "מגדיר משתנה זה להיות שווה לקלט.", + "VARIABLES_SET_CREATE_GET": "ליצור 'קרא %1'", + "PROCEDURES_DEFNORETURN_TITLE": "לביצוע:", + "PROCEDURES_DEFNORETURN_PROCEDURE": "לעשות משהו", + "PROCEDURES_BEFORE_PARAMS": "עם:", + "PROCEDURES_CALL_BEFORE_PARAMS": "עם:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "יצירת פונקציה ללא פלט.", + "PROCEDURES_DEFNORETURN_COMMENT": "תאר את הפונקציה הזאת...", + "PROCEDURES_DEFRETURN_RETURN": "להחזיר", + "PROCEDURES_DEFRETURN_TOOLTIP": "יצירת פונקציה עם פלט.", + "PROCEDURES_ALLOW_STATEMENTS": "לאפשר פעולות", + "PROCEDURES_DEF_DUPLICATE_WARNING": "אזהרה: לפונקציה זו יש פרמטרים כפולים.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://he.wikipedia.org/wiki/שגרה_(תכנות)", + "PROCEDURES_CALLNORETURN_TOOLTIP": "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://he.wikipedia.org/wiki/שגרה_(תכנות)", + "PROCEDURES_CALLRETURN_TOOLTIP": "להפעיל את הפונקציה המוגדרת על-ידי המשתמש '%1' ולהשתמש הפלט שלה.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "מקורות קלט", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "הוסף, הסר או סדר מחדש קלטים לפונקציה זו", + "PROCEDURES_MUTATORARG_TITLE": "שם הקלט:", + "PROCEDURES_MUTATORARG_TOOLTIP": "הוסף קלט לפונקציה", + "PROCEDURES_HIGHLIGHT_DEF": "הדגש הגדרה של פונקציה", + "PROCEDURES_CREATE_DO": "ליצור '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "אם ערך נכון, אז להחזיר ערך שני.", + "PROCEDURES_IFRETURN_WARNING": "אזהרה: קוביה זו עשויה לשמש רק בתוך הגדרה של פונקציה.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "נא להזין הערה...", + "WORKSPACE_ARIA_LABEL": "סביבת העבודה בלוקלי", + "COLLAPSED_WARNINGS_WARNING": "קוביות מצומצמות מכילות אזהרות.", + "DIALOG_OK": "אישור", + "DIALOG_CANCEL": "ביטול" +} diff --git a/msg/json/hi.json b/msg/json/hi.json index d8289c53d6a..258daefcd17 100644 --- a/msg/json/hi.json +++ b/msg/json/hi.json @@ -1,335 +1,335 @@ -{ - "@metadata": { - "authors": [ - "Abijeet Patro", - "Bl707", - "Earlyengineers", - "Nilesh shukla", - "Phoenix303", - "Sachinkatiyar", - "Sfic", - "संजीव कुमार" - ] - }, - "VARIABLES_DEFAULT_NAME": "वस्तु", - "UNNAMED_KEY": "अज्ञात", - "TODAY": "आज", - "DUPLICATE_BLOCK": "कॉपी करें", - "ADD_COMMENT": "टिप्पणी छोड़ें", - "REMOVE_COMMENT": "टिप्पणी हटायें", - "EXTERNAL_INPUTS": "बाहरी इनपुट", - "INLINE_INPUTS": "इनलाइन इनपुट", - "DELETE_BLOCK": "ब्लॉक हटाएँ", - "DELETE_X_BLOCKS": "%1 ब्लॉक हटाएँ", - "DELETE_ALL_BLOCKS": "सभी %1 खानों को हटा दें?", - "CLEAN_UP": "खानों को साफ करें", - "COLLAPSE_BLOCK": "ब्लॉक को संक्षिप्त करें", - "COLLAPSE_ALL": "ब्लॉक संक्षिप्त करें", - "EXPAND_BLOCK": "ब्लॉक का विस्तार करें", - "EXPAND_ALL": "ब्लॉक विस्तार करें", - "DISABLE_BLOCK": "ब्लॉक को अक्षम करें", - "ENABLE_BLOCK": "ब्लॉक को सक्षम करें", - "HELP": "सहायता", - "UNDO": "पूर्ववत करें", - "REDO": "फिर से करें", - "CHANGE_VALUE_TITLE": "मान परिवर्तित करें:", - "RENAME_VARIABLE": "चर का नाम बदलें...", - "RENAME_VARIABLE_TITLE": "सभी '%1' चरों के नाम बदलें:", - "NEW_VARIABLE": "चर बनाएँ...", - "NEW_STRING_VARIABLE": "लड़ी चर बनायें...", - "NEW_NUMBER_VARIABLE": "संख्या चर बनायें...", - "NEW_COLOUR_VARIABLE": "रंग चर बनाएँ...", - "NEW_VARIABLE_TYPE_TITLE": "नए चर का नाम:", - "NEW_VARIABLE_TITLE": "नए चर का नाम:", - "VARIABLE_ALREADY_EXISTS": "प्राचल नाम '%1' पहले से मौजूद है।", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' नाम का एक चर पहले से '%2' प्रकार के अन्य चर के लिए मौजूद है।", - "DELETE_VARIABLE_CONFIRMATION": "'%2' चर के %1 उपयोग को हटाएँ?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "चर '%1' को नहीं हटा सकता क्योंकि यह फ़ंक्शन '%2' की परिभाषा का हिस्सा है", - "DELETE_VARIABLE": "'%1' चर को हटाएँ", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "पैलेट से एक रंग चुनें।", - "COLOUR_RANDOM_TITLE": "कोई भी रंग", - "COLOUR_RANDOM_TOOLTIP": "कोई भी एक रंग का चयन करें।", - "COLOUR_RGB_TITLE": "इसके साथ रंग करें", - "COLOUR_RGB_RED": "लाल", - "COLOUR_RGB_GREEN": "हरा", - "COLOUR_RGB_BLUE": "नीला", - "COLOUR_RGB_TOOLTIP": "लाल, हरा और नीले की निर्दिष्ट मात्रा के साथ एक रंग बनायें। सभी मान ० से १०० के बीच होने चाहिए।", - "COLOUR_BLEND_TITLE": "मिश्रण करें", - "COLOUR_BLEND_COLOUR1": "रंग 1", - "COLOUR_BLEND_COLOUR2": "रंग 2", - "COLOUR_BLEND_RATIO": "अनुपात", - "COLOUR_BLEND_TOOLTIP": "दिए गए अनुपात (0.0 - 1.0) के साथ दो रंगों का मिश्रण करता है।", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 बार दोहराएँ", - "CONTROLS_REPEAT_INPUT_DO": "करें", - "CONTROLS_REPEAT_TOOLTIP": "कुछ विवरण कई बार चलाएँ।", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "दोहराएँ जब कि", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "दोहराएँ जब तक", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "जब तक मान सही है, तब तक कुछ विवरण चलाएँ।", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "जब तक मान गलत है, तब तक कुछ विवरण चलाएँ।", - "CONTROLS_FOR_TOOLTIP": "क्या चर '%1' प्रारंभ संख्या से अंत संख्या तक मानों को लेता है, निर्दिष्ट अंतराल के अनुसार गिनती करता है, और निर्दिष्ट रुकावटों को करता है।", - "CONTROLS_FOR_TITLE": "%1 से %2 से %3 तक %4 के साथ गिनती करें", - "CONTROLS_FOREACH_TITLE": "प्रत्येक वस्तु के लिए %1 सूची में %2", - "CONTROLS_FOREACH_TOOLTIP": "सूची के प्रत्येक वस्तु के लिए, वस्तु में चर का मान '%1' रखें और बाद में कुछ कथन लिखें।", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "फंदे से बाहर निकलें", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "फंदे की अगली यात्रा के साथ जारी रखें", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "भीतरी फंदे से बाहर निकलें।", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "बाकी बचे फंदे को छोड़ें, और अगली यात्रा जारी रखें।", - "CONTROLS_FLOW_STATEMENTS_WARNING": "सावधान: ये ब्लॉक केवल लूप के अंदर इस्तेमाल किया जा सकता है।", - "CONTROLS_IF_TOOLTIP_1": "यदी मान सही है, तो कुछ विवरण चलाएँ।", - "CONTROLS_IF_TOOLTIP_2": "यदि एक मान सत्य है तो कथनों का प्रथम खण्ड बनायें। अन्यथा कथनों का दूसरा भाग निर्मित करें।", - "CONTROLS_IF_TOOLTIP_3": "यदि पहले मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें।", - "CONTROLS_IF_TOOLTIP_4": "यदि पहला मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें। यदि कोई भी मान सही नहीं है, तो बयानों का अंतिम खंड करें।", - "CONTROLS_IF_MSG_IF": "यदि", - "CONTROLS_IF_MSG_ELSEIF": "यदि अन्य", - "CONTROLS_IF_MSG_ELSE": "अन्य", - "CONTROLS_IF_IF_TOOLTIP": "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।", - "CONTROLS_IF_ELSEIF_TOOLTIP": "एक शर्त जोड़ें यदि ब्लॉक है।", - "CONTROLS_IF_ELSE_TOOLTIP": "यदि ब्लॉक है तो इसके लिए एक अंतिम, कैच-सभी स्थिति जोड़ें।", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर हों।", - "LOGIC_COMPARE_TOOLTIP_NEQ": "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर नहीं हों।", - "LOGIC_COMPARE_TOOLTIP_LT": "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो।", - "LOGIC_COMPARE_TOOLTIP_LTE": "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो या बराबर हो।", - "LOGIC_COMPARE_TOOLTIP_GT": "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो।", - "LOGIC_COMPARE_TOOLTIP_GTE": "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो या बराबर हो।", - "LOGIC_OPERATION_TOOLTIP_AND": "ट्रू रिटर्न करें यदि दोनो इनपुट ट्रू हों।", - "LOGIC_OPERATION_AND": "AND (तथा)", - "LOGIC_OPERATION_TOOLTIP_OR": "ट्रू रिटर्न करें यदि दोनो मे से इक इनपुट ट्रू हो।", - "LOGIC_OPERATION_OR": "OR (अथवा)", - "LOGIC_NEGATE_TITLE": "NOT (पूरक) %1", - "LOGIC_NEGATE_TOOLTIP": "ट्रू रिटर्न करता है यदि इनपुट फॉल्स है। फॉल्स रिटर्न करता है यदि इनपुट ट्रू है।", - "LOGIC_BOOLEAN_TRUE": "सही", - "LOGIC_BOOLEAN_FALSE": "गलत", - "LOGIC_BOOLEAN_TOOLTIP": "ट्रू या फॉल्स रिटर्न करता है।", - "LOGIC_NULL": "NULL (अमान्य)", - "LOGIC_NULL_TOOLTIP": "null (अमान्य) रिटर्न करता है।", - "LOGIC_TERNARY_CONDITION": "टेस्ट", - "LOGIC_TERNARY_IF_TRUE": "यदि सही है", - "LOGIC_TERNARY_IF_FALSE": "यदि गलत है", - "LOGIC_TERNARY_TOOLTIP": "'परीक्षण' में हालत की जांच करें। यदि स्थिति सही है, तो 'सच' मान लौटाता है; अन्यथा वापस लौटता 'अगर झूठा'मान देता है।", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "एक संख्या।", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "दो संख्याओं का योग रिटर्न करें।", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "दो संख्याओं का अंतर रिटर्न करें।", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "दो संख्याओं का गुणन रिटर्न करें।", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "दो संख्याओं का भागफल रिटर्न करें।", - "MATH_ARITHMETIC_TOOLTIP_POWER": "दूसरे नंबर की शक्ति को उठाए गए पहले नंबर पर लौटें", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "वर्गमूल", - "MATH_SINGLE_TOOLTIP_ROOT": "संख्या का वर्गमूल रिटर्न करें।", - "MATH_SINGLE_OP_ABSOLUTE": "परम", - "MATH_SINGLE_TOOLTIP_ABS": "संख्या का परम मान रिटर्न करें।", - "MATH_SINGLE_TOOLTIP_NEG": "संख्या का निषेध मान रिटर्न करें।", - "MATH_SINGLE_TOOLTIP_LN": "संख्या का प्राकृतिक लघुगणक रिटर्न करें।", - "MATH_SINGLE_TOOLTIP_LOG10": "संख्या का मूल 10 लघुगणक रिटर्न करें।", - "MATH_SINGLE_TOOLTIP_EXP": "किसी संख्या की शक्ति को वापस ई करें।", - "MATH_SINGLE_TOOLTIP_POW10": "किसी संख्या की शक्ति पर 10 लौटें।", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "डिग्री का साइन रिटर्न करें (रेडियन नही)", - "MATH_TRIG_TOOLTIP_COS": "डिग्री का कोसाइन रिटर्न करें (रेडियन नही)", - "MATH_TRIG_TOOLTIP_TAN": "डिग्री का टैन्जन्ट रिटर्न करें (रेडियन नही)", - "MATH_TRIG_TOOLTIP_ASIN": "संख्या का आर्कसाइन रिटर्न करें।", - "MATH_TRIG_TOOLTIP_ACOS": "संख्या का आर्ककोसाइन रिटर्न करें।", - "MATH_TRIG_TOOLTIP_ATAN": "संख्या का आर्कटैन्जन्ट रिटर्न करें।", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "सामान्य स्थिरांक में से एक को वापस लौटें:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)।", - "MATH_IS_EVEN": "सम है", - "MATH_IS_ODD": "विषम है", - "MATH_IS_PRIME": "अभाज्य है", - "MATH_IS_WHOLE": "पूर्णांक है", - "MATH_IS_POSITIVE": "धनात्मक है", - "MATH_IS_NEGATIVE": "ऋणात्मक है", - "MATH_IS_DIVISIBLE_BY": "इसके द्वारा विभाज्य है", - "MATH_IS_TOOLTIP": "जांचें कि क्या कोई संख्या एक सम, विषम, मुख्य, संपूर्ण, सकारात्मक, नकारात्मक है या यदि वह निश्चित संख्या से विभाजित है। वास्तविक या गलत रिटर्न देता है।", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "%1 को %2 से बदलें", - "MATH_CHANGE_TOOLTIP": "संख्या को चर '%1' से जोड़ें।", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "संख्या को बड़ा या घटा के पूर्णांक बनाएँ।", - "MATH_ROUND_OPERATOR_ROUND": "पूर्णांक बनाएँ", - "MATH_ROUND_OPERATOR_ROUNDUP": "बड़ा के पूर्णांक बनाएँ", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "घटा के पूर्णांक बनाएँ", - "MATH_ONLIST_OPERATOR_SUM": "सूची का योग", - "MATH_ONLIST_TOOLTIP_SUM": "सूची की सभी संख्याओं का योग रिटर्न करें।", - "MATH_ONLIST_OPERATOR_MIN": "सूची मे न्यूनतम", - "MATH_ONLIST_TOOLTIP_MIN": "सूची मे सबसे छोटी संख्या रिटर्न करें।", - "MATH_ONLIST_OPERATOR_MAX": "सूची मे अधिकतम", - "MATH_ONLIST_TOOLTIP_MAX": "सूची में सबसे बड़ी संख्या रिटर्न करें।", - "MATH_ONLIST_OPERATOR_AVERAGE": "सूची का औसत मान", - "MATH_ONLIST_TOOLTIP_AVERAGE": "सूची में संख्यात्मक मानों का औसत (अंकगणित माध्य) लौटें।", - "MATH_ONLIST_OPERATOR_MEDIAN": "सूची की माध्यिका", - "MATH_ONLIST_TOOLTIP_MEDIAN": "सूची की माध्यिका संख्या रिटर्न करें।", - "MATH_ONLIST_OPERATOR_MODE": "सूची का मोड", - "MATH_ONLIST_TOOLTIP_MODE": "सूची मे सबसे आम आइटम(s) की सूची रिटर्न करें।", - "MATH_ONLIST_OPERATOR_STD_DEV": "सूची का मानक विचलन", - "MATH_ONLIST_TOOLTIP_STD_DEV": "सूची का मानक विचलन रिटर्न करें।", - "MATH_ONLIST_OPERATOR_RANDOM": "सूची का रैन्डम आइटम", - "MATH_ONLIST_TOOLTIP_RANDOM": "सूची से एक रैन्डम आइटम रिटर्न करें।", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "%1 ÷ %2 का शेषफल", - "MATH_MODULO_TOOLTIP": "दो संख्याओं के भाग का शेषफल रिटर्न करें।", - "MATH_CONSTRAIN_TITLE": "%1 कम %2 उच्च %3 बाधित करें", - "MATH_CONSTRAIN_TOOLTIP": "एक संख्या को निर्दिष्ट सीमा (सम्मिलित) के बीच बाधित करें।", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "%1 से %2 तक रैन्डम पूर्णांक", - "MATH_RANDOM_INT_TOOLTIP": "दो निर्दिष्ट सीमाओं, समावेशी के बीच एक यादृच्छिक पूर्णांक लौटें।", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "रैन्डम अंश", - "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (समावेशी) और 1.0 (विशिष्ट) के बीच एक यादृच्छिक अंश पर लौटें।", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "एक अक्षर, शब्द, या टेक्स्ट की पंक्ति।", - "TEXT_JOIN_TITLE_CREATEWITH": "इसके साथ टेक्स्ट बनाएँ", - "TEXT_JOIN_TOOLTIP": "किसी भी संख्या के मदों को एक साथ जोड़ कर पाठ का एक टुकड़ा बनाएं।", - "TEXT_CREATE_JOIN_TITLE_JOIN": "जोड़", - "TEXT_CREATE_JOIN_TOOLTIP": "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "सूची मे एक आइटम जोड़ें।", - "TEXT_APPEND_TITLE": "%1 में पाठ %2 को जोड़ें", - "TEXT_APPEND_TOOLTIP": "कुछ टेक्स्ट इस चर '%1' से जोड़ें।", - "TEXT_LENGTH_TITLE": "%1 की लंबाई", - "TEXT_LENGTH_TOOLTIP": "दिए गये टेक्स्ट मे अक्षरों की संख्या रिटर्न करता है (खाली स्थान मिला के)।", - "TEXT_ISEMPTY_TITLE": "%1 खाली है", - "TEXT_ISEMPTY_TOOLTIP": "ट्रू रिटर्न करता है यदि दिया गया टेक्स्ट खाली है।", - "TEXT_INDEXOF_TOOLTIP": "दूसरे पाठ में पहले पाठ की पहली/अंतिम घटना का सूचक देता है। यदि पाठ नहीं मिला है तो %1 रिटर्न होता है।", - "TEXT_INDEXOF_TITLE": "पाठ %1 %2 %3 में", - "TEXT_INDEXOF_OPERATOR_FIRST": "टेक्स्ट पहली बार जहाँ आया है उसे ढूढ़े", - "TEXT_INDEXOF_OPERATOR_LAST": "टेक्स्ट आखरी बार जहाँ आया है उसे ढूढ़े", - "TEXT_CHARAT_TITLE": "पाठ %1 %2 में", - "TEXT_CHARAT_FROM_START": "अक्षर # पाएँ", - "TEXT_CHARAT_FROM_END": "आखिर से अक्षर # पाएँ", - "TEXT_CHARAT_FIRST": "पहला अक्षर पाएँ", - "TEXT_CHARAT_LAST": "आखरी अक्षर पाएँ", - "TEXT_CHARAT_RANDOM": "रैन्डम अक्षर पाएँ", - "TEXT_CHARAT_TOOLTIP": "बताई गयी जगह से अक्षर रिटर्न करता है", - "TEXT_GET_SUBSTRING_TOOLTIP": "टेक्स्ट का बताया गया अंश रिटर्न करता है", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "इस टेक्स्ट मे", - "TEXT_GET_SUBSTRING_START_FROM_START": "अक्षर # से सबस्ट्रिंग पाएँ", - "TEXT_GET_SUBSTRING_START_FROM_END": "आखरी अक्षर # से सबस्ट्रिंग पाएँ", - "TEXT_GET_SUBSTRING_START_FIRST": "पहले अक्षर से सबस्ट्रिंग पाएँ", - "TEXT_GET_SUBSTRING_END_FROM_START": "यहाँ तक अक्षर #", - "TEXT_GET_SUBSTRING_END_FROM_END": "आखिर से यहाँ तक अक्षर #", - "TEXT_GET_SUBSTRING_END_LAST": "यहाँ तक आखरी अक्षर", - "TEXT_CHANGECASE_TOOLTIP": "टेक्स्ट की कॉपी भिन्न केस (अक्षर से संबंधित) मे रिटर्न करें।", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "बड़े अक्षर मे", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "छोटे अक्षर मे", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "टाइटल केस मे", - "TEXT_TRIM_TOOLTIP": "एक या दोनों सिरों से हटाए गए रिक्त स्थान के साथ पाठ की एक प्रति लौटाएं।", - "TEXT_TRIM_OPERATOR_BOTH": "रिक्त स्थान को इस टेक्स्ट के दोनों तरफ से निकालें", - "TEXT_TRIM_OPERATOR_LEFT": "रिक्त स्थान को इस टेक्स्ट के बायें तरफ से निकालें", - "TEXT_TRIM_OPERATOR_RIGHT": "रिक्त स्थान को इस टेक्स्ट के दाईं तरफ से निकालें", - "TEXT_PRINT_TITLE": "प्रिंट करें %1", - "TEXT_PRINT_TOOLTIP": "दिया गया टेक्स्ट प्रिंट करें, संख्या या अन्य मान।", - "TEXT_PROMPT_TYPE_TEXT": "सूचना के साथ टेक्स्ट के लिए प्रॉम्प्ट करें", - "TEXT_PROMPT_TYPE_NUMBER": "सूचना के साथ संख्या के लिए प्रॉम्प्ट करें", - "TEXT_PROMPT_TOOLTIP_NUMBER": "यूज़र से संख्या के लिए प्रॉम्प्ट करें।", - "TEXT_PROMPT_TOOLTIP_TEXT": "यूज़र से कुछ टेक्स्ट के लिए प्रॉम्प्ट करें।", - "TEXT_COUNT_MESSAGE0": "%1 को %2 में गिने", - "TEXT_COUNT_TOOLTIP": "गिने, कितनी बार कुछ पाठ कुछ अन्य पाठ के अंदर समाहित होता है।", - "TEXT_REPLACE_MESSAGE0": "%1 को %2 के साथ %3 में बदलें", - "TEXT_REPLACE_TOOLTIP": "कुछ अन्य पाठ के अंदर कुछ पाठ की सभी जगहों को बदलें।", - "TEXT_REVERSE_MESSAGE0": "%1 को बदल दें", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "पाठ में वर्णों के क्रम को उलट देता है।", - "LISTS_CREATE_EMPTY_TITLE": "खाली सूची बनाएँ", - "LISTS_CREATE_EMPTY_TOOLTIP": "0 लंबाई की, कोई भी डेटा ना रखने वाली एक सूची लौटती है", - "LISTS_CREATE_WITH_TOOLTIP": "कितने भी आइटम वाली एक सूची बनाएँ।", - "LISTS_CREATE_WITH_INPUT_WITH": "इसके सूची बनाएँ", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "सूची", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "इस सूची ब्लॉक को पुन: आकार देने के लिए वर्गों को जोड़ें, निकालें, या पुन: क्रमित करें।", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "सूची मे एक आइटम जोड़ें।", - "LISTS_REPEAT_TOOLTIP": "निर्धारित मान की बार-बार दोहराई गई एक सूची बनाता है।", - "LISTS_REPEAT_TITLE": "वस्तु %1 के साथ %2 बार दोहराई गयी सूची बनाएं", - "LISTS_LENGTH_TITLE": "%1 की लंबाई", - "LISTS_LENGTH_TOOLTIP": "सूची की लंबाई रिटर्न करता है।", - "LISTS_ISEMPTY_TITLE": "%1 खाली है", - "LISTS_ISEMPTY_TOOLTIP": "यदि सूची खाली है तो ट्रू रिटर्न करता है।", - "LISTS_INLIST": "सूची में", - "LISTS_INDEX_OF_FIRST": "आइटम पहली बार जहाँ आया है उसे ढूढ़े", - "LISTS_INDEX_OF_LAST": "आइटम आखरी बार जहाँ आया है उसे ढूढ़े", - "LISTS_INDEX_OF_TOOLTIP": "सूची में आइटम की पहली/अंतिम घटना का सूचक देता है। यदि आइटम नहीं मिला है तो %1 रिटर्न होता है।", - "LISTS_GET_INDEX_GET": "प्राप्त", - "LISTS_GET_INDEX_GET_REMOVE": "प्राप्त करे और हटाए", - "LISTS_GET_INDEX_REMOVE": "निकालें", - "LISTS_GET_INDEX_FROM_END": "अंत से #", - "LISTS_GET_INDEX_FIRST": "पहला", - "LISTS_GET_INDEX_LAST": "आखिरी", - "LISTS_GET_INDEX_RANDOM": "रैन्डम", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 पहली वस्तु है।", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 आखिरी वस्तु है।", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "एक सूची में निर्दिष्ट स्थान पर वस्तु को लौटाता है।", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "सूची का पहला आइटम रिटर्न करता है।", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "सूची का आखरी आइटम रिटर्न करता है।", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "सूची से रैन्डम आइटम रिटर्न करता है।", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "एक सूची में निर्दिष्ट स्थिति में आइटम निकालता है और लौटाता है।", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "सूची का पहला आइटम निकालता है और रिटर्न करता है।", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "सूची का आखरी आइटम निकालता है और रिटर्न करता है।", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "सूची से रैन्डम आइटम निकालता है और रिटर्न करता है।", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "एक सूची में निर्दिष्ट स्थान पर आइटम निकाल देता है।", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "सूची का पहला आइटम निकालता है।", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "सूची का आखरी आइटम निकालता है।", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "सूची से रैन्डम आइटम निकालता है।", - "LISTS_SET_INDEX_SET": "सैट करें", - "LISTS_SET_INDEX_INSERT": "पर डालें", - "LISTS_SET_INDEX_INPUT_TO": "बतौर", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "सूची मे बताए गये स्थान में आइटम सैट करता है।", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "सूची में पहला आइटम सैट करता है।", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "सूची में आखरी आइटम सैट करता है।", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "सूची में रैन्डम आइटम सैट करता है।", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "सूची मे बताए गये स्थान में आइटम इनसर्ट करता है।", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "आइटम को सूची के शुरू में इनसर्ट करता है।", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "आइटम को सूची के अंत में जोड़ता है।", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "आइटम को सूची में रैन्डम्ली इनसर्ट करता है।", - "LISTS_GET_SUBLIST_START_FROM_START": "# से उप-सूची प्राप्त करें", - "LISTS_GET_SUBLIST_START_FROM_END": "अंत से # से उप-सूची प्राप्त करें", - "LISTS_GET_SUBLIST_START_FIRST": "प्रथम से उप-सूची प्राप्त करें", - "LISTS_GET_SUBLIST_END_FROM_START": "# को", - "LISTS_GET_SUBLIST_END_FROM_END": "अंतिम से # को", - "LISTS_GET_SUBLIST_END_LAST": "अंत से", - "LISTS_GET_SUBLIST_TOOLTIP": "सूची के बताए गये भाग की कॉपी बनता है।", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "LISTS_SORT_TITLE": "%1 %2 %3 को छांटे", - "LISTS_SORT_TOOLTIP": "एक सूची की एक प्रति को छांटे।", - "LISTS_SORT_ORDER_ASCENDING": "बढ़ते क्रम", - "LISTS_SORT_ORDER_DESCENDING": "बढ़ते क्रम में", - "LISTS_SORT_TYPE_NUMERIC": "अंकीय", - "LISTS_SORT_TYPE_TEXT": "वर्णक्रमानुसार", - "LISTS_SORT_TYPE_IGNORECASE": "वर्णक्रमानुसार, मामले की अनदेखी करें", - "LISTS_SPLIT_LIST_FROM_TEXT": "पाठ से एक सूची बनाएं", - "LISTS_SPLIT_TEXT_FROM_LIST": "सूची से एक पाठ बनाएं", - "LISTS_SPLIT_WITH_DELIMITER": "सीमांकक के साथ", - "LISTS_SPLIT_TOOLTIP_SPLIT": "ग्रंथों की सूची में पाठ को विभाजित करें, प्रत्येक सीमांकक पर तोड़कर।", - "LISTS_SPLIT_TOOLTIP_JOIN": "ग्रंथों की एक सूची में शामिल करें, जो एक सीमांकक से अलग हो।", - "LISTS_REVERSE_MESSAGE0": "%1 को बदल दें", - "LISTS_REVERSE_TOOLTIP": "एक सूची की एक प्रति को छांटे।", - "VARIABLES_GET_TOOLTIP": "इस चर का मान रिटर्न करता है।", - "VARIABLES_GET_CREATE_SET": "सेट '%1' बनाएँ", - "VARIABLES_SET": "सेट करें %1 को %2", - "VARIABLES_SET_TOOLTIP": "इस चर को इनपुट के बराबर सेट करता है।", - "VARIABLES_SET_CREATE_GET": "'प्राप्त करें %1' बनाएं", - "PROCEDURES_DEFNORETURN_TITLE": "को", - "PROCEDURES_DEFNORETURN_PROCEDURE": "कुछ करें", - "PROCEDURES_BEFORE_PARAMS": ": के साथ", - "PROCEDURES_CALL_BEFORE_PARAMS": ": के साथ", - "PROCEDURES_DEFNORETURN_TOOLTIP": "बिना आउटपुट वाला एक फ़ंक्शन बनाता है।", - "PROCEDURES_DEFNORETURN_COMMENT": "इस फंकशन को समझाएँ...", - "PROCEDURES_DEFRETURN_RETURN": "वापस आएं", - "PROCEDURES_DEFRETURN_TOOLTIP": "आउटपुट वाला एक फ़ंक्शन बनाता है।", - "PROCEDURES_ALLOW_STATEMENTS": "बयानों की अनुमति दें", - "PROCEDURES_DEF_DUPLICATE_WARNING": "सावधान: इस फ़ंक्शन मे डुप्लिकेट पैरामीटर हैं।", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ।", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ और उसका आउटपुट इस्तेमाल करें।", - "PROCEDURES_MUTATORCONTAINER_TITLE": "इनपुट", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "इस फ़ंक्शन में इनपुट जोड़ें, निकालें, या पुन: क्रमित करें।", - "PROCEDURES_MUTATORARG_TITLE": "इनपुट का नाम:", - "PROCEDURES_MUTATORARG_TOOLTIP": "फंगक्शन को इनपुट प्रदान करें।", - "PROCEDURES_HIGHLIGHT_DEF": "फ़ंक्शन परिभाषा को हाइलाइट करें", - "PROCEDURES_CREATE_DO": "'%1' बनाएँ", - "PROCEDURES_IFRETURN_TOOLTIP": "यदि एक मान ट्रू है तो, दूसरा मान रिटर्न करें।", - "PROCEDURES_IFRETURN_WARNING": "सावधान: ये ब्लॉक फ़ंक्शन परिभाषा के अंदर ही इस्तेमाल किया जा सकता।", - "DIALOG_OK": "ठीक है", - "DIALOG_CANCEL": "रद्द करें" -} +{ + "@metadata": { + "authors": [ + "Abijeet Patro", + "Bl707", + "Earlyengineers", + "Nilesh shukla", + "Phoenix303", + "Sachinkatiyar", + "Sfic", + "संजीव कुमार" + ] + }, + "VARIABLES_DEFAULT_NAME": "वस्तु", + "UNNAMED_KEY": "अज्ञात", + "TODAY": "आज", + "DUPLICATE_BLOCK": "कॉपी करें", + "ADD_COMMENT": "टिप्पणी छोड़ें", + "REMOVE_COMMENT": "टिप्पणी हटायें", + "EXTERNAL_INPUTS": "बाहरी इनपुट", + "INLINE_INPUTS": "इनलाइन इनपुट", + "DELETE_BLOCK": "ब्लॉक हटाएँ", + "DELETE_X_BLOCKS": "%1 ब्लॉक हटाएँ", + "DELETE_ALL_BLOCKS": "सभी %1 खानों को हटा दें?", + "CLEAN_UP": "खानों को साफ करें", + "COLLAPSE_BLOCK": "ब्लॉक को संक्षिप्त करें", + "COLLAPSE_ALL": "ब्लॉक संक्षिप्त करें", + "EXPAND_BLOCK": "ब्लॉक का विस्तार करें", + "EXPAND_ALL": "ब्लॉक विस्तार करें", + "DISABLE_BLOCK": "ब्लॉक को अक्षम करें", + "ENABLE_BLOCK": "ब्लॉक को सक्षम करें", + "HELP": "सहायता", + "UNDO": "पूर्ववत करें", + "REDO": "फिर से करें", + "CHANGE_VALUE_TITLE": "मान परिवर्तित करें:", + "RENAME_VARIABLE": "चर का नाम बदलें...", + "RENAME_VARIABLE_TITLE": "सभी '%1' चरों के नाम बदलें:", + "NEW_VARIABLE": "चर बनाएँ...", + "NEW_STRING_VARIABLE": "लड़ी चर बनायें...", + "NEW_NUMBER_VARIABLE": "संख्या चर बनायें...", + "NEW_COLOUR_VARIABLE": "रंग चर बनाएँ...", + "NEW_VARIABLE_TYPE_TITLE": "नए चर का नाम:", + "NEW_VARIABLE_TITLE": "नए चर का नाम:", + "VARIABLE_ALREADY_EXISTS": "प्राचल नाम '%1' पहले से मौजूद है।", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' नाम का एक चर पहले से '%2' प्रकार के अन्य चर के लिए मौजूद है।", + "DELETE_VARIABLE_CONFIRMATION": "'%2' चर के %1 उपयोग को हटाएँ?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "चर '%1' को नहीं हटा सकता क्योंकि यह फ़ंक्शन '%2' की परिभाषा का हिस्सा है", + "DELETE_VARIABLE": "'%1' चर को हटाएँ", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "पैलेट से एक रंग चुनें।", + "COLOUR_RANDOM_TITLE": "कोई भी रंग", + "COLOUR_RANDOM_TOOLTIP": "कोई भी एक रंग का चयन करें।", + "COLOUR_RGB_TITLE": "इसके साथ रंग करें", + "COLOUR_RGB_RED": "लाल", + "COLOUR_RGB_GREEN": "हरा", + "COLOUR_RGB_BLUE": "नीला", + "COLOUR_RGB_TOOLTIP": "लाल, हरा और नीले की निर्दिष्ट मात्रा के साथ एक रंग बनायें। सभी मान ० से १०० के बीच होने चाहिए।", + "COLOUR_BLEND_TITLE": "मिश्रण करें", + "COLOUR_BLEND_COLOUR1": "रंग 1", + "COLOUR_BLEND_COLOUR2": "रंग 2", + "COLOUR_BLEND_RATIO": "अनुपात", + "COLOUR_BLEND_TOOLTIP": "दिए गए अनुपात (0.0 - 1.0) के साथ दो रंगों का मिश्रण करता है।", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 बार दोहराएँ", + "CONTROLS_REPEAT_INPUT_DO": "करें", + "CONTROLS_REPEAT_TOOLTIP": "कुछ विवरण कई बार चलाएँ।", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "दोहराएँ जब कि", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "दोहराएँ जब तक", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "जब तक मान सही है, तब तक कुछ विवरण चलाएँ।", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "जब तक मान गलत है, तब तक कुछ विवरण चलाएँ।", + "CONTROLS_FOR_TOOLTIP": "क्या चर '%1' प्रारंभ संख्या से अंत संख्या तक मानों को लेता है, निर्दिष्ट अंतराल के अनुसार गिनती करता है, और निर्दिष्ट रुकावटों को करता है।", + "CONTROLS_FOR_TITLE": "%1 से %2 से %3 तक %4 के साथ गिनती करें", + "CONTROLS_FOREACH_TITLE": "प्रत्येक वस्तु के लिए %1 सूची में %2", + "CONTROLS_FOREACH_TOOLTIP": "सूची के प्रत्येक वस्तु के लिए, वस्तु में चर का मान '%1' रखें और बाद में कुछ कथन लिखें।", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "फंदे से बाहर निकलें", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "फंदे की अगली यात्रा के साथ जारी रखें", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "भीतरी फंदे से बाहर निकलें।", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "बाकी बचे फंदे को छोड़ें, और अगली यात्रा जारी रखें।", + "CONTROLS_FLOW_STATEMENTS_WARNING": "सावधान: ये ब्लॉक केवल लूप के अंदर इस्तेमाल किया जा सकता है।", + "CONTROLS_IF_TOOLTIP_1": "यदी मान सही है, तो कुछ विवरण चलाएँ।", + "CONTROLS_IF_TOOLTIP_2": "यदि एक मान सत्य है तो कथनों का प्रथम खण्ड बनायें। अन्यथा कथनों का दूसरा भाग निर्मित करें।", + "CONTROLS_IF_TOOLTIP_3": "यदि पहले मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें।", + "CONTROLS_IF_TOOLTIP_4": "यदि पहला मान सही है, तो बयानों का पहला खंड करें। अन्यथा, यदि दूसरा मान सत्य है, तो बयानों का दूसरा खंड करें। यदि कोई भी मान सही नहीं है, तो बयानों का अंतिम खंड करें।", + "CONTROLS_IF_MSG_IF": "यदि", + "CONTROLS_IF_MSG_ELSEIF": "यदि अन्य", + "CONTROLS_IF_MSG_ELSE": "अन्य", + "CONTROLS_IF_IF_TOOLTIP": "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।", + "CONTROLS_IF_ELSEIF_TOOLTIP": "एक शर्त जोड़ें यदि ब्लॉक है।", + "CONTROLS_IF_ELSE_TOOLTIP": "यदि ब्लॉक है तो इसके लिए एक अंतिम, कैच-सभी स्थिति जोड़ें।", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर हों।", + "LOGIC_COMPARE_TOOLTIP_NEQ": "ट्रू रिटर्न करें यदि दोनो इनपुट इक दूसरे के बराबर नहीं हों।", + "LOGIC_COMPARE_TOOLTIP_LT": "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो।", + "LOGIC_COMPARE_TOOLTIP_LTE": "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से छोटा हो या बराबर हो।", + "LOGIC_COMPARE_TOOLTIP_GT": "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो।", + "LOGIC_COMPARE_TOOLTIP_GTE": "ट्रू रिटर्न करें यदि पहला इनपुट दूसरे इनपुट से बड़ा हो या बराबर हो।", + "LOGIC_OPERATION_TOOLTIP_AND": "ट्रू रिटर्न करें यदि दोनो इनपुट ट्रू हों।", + "LOGIC_OPERATION_AND": "AND (तथा)", + "LOGIC_OPERATION_TOOLTIP_OR": "ट्रू रिटर्न करें यदि दोनो मे से इक इनपुट ट्रू हो।", + "LOGIC_OPERATION_OR": "OR (अथवा)", + "LOGIC_NEGATE_TITLE": "NOT (पूरक) %1", + "LOGIC_NEGATE_TOOLTIP": "ट्रू रिटर्न करता है यदि इनपुट फॉल्स है। फॉल्स रिटर्न करता है यदि इनपुट ट्रू है।", + "LOGIC_BOOLEAN_TRUE": "सही", + "LOGIC_BOOLEAN_FALSE": "गलत", + "LOGIC_BOOLEAN_TOOLTIP": "ट्रू या फॉल्स रिटर्न करता है।", + "LOGIC_NULL": "NULL (अमान्य)", + "LOGIC_NULL_TOOLTIP": "null (अमान्य) रिटर्न करता है।", + "LOGIC_TERNARY_CONDITION": "टेस्ट", + "LOGIC_TERNARY_IF_TRUE": "यदि सही है", + "LOGIC_TERNARY_IF_FALSE": "यदि गलत है", + "LOGIC_TERNARY_TOOLTIP": "'परीक्षण' में हालत की जांच करें। यदि स्थिति सही है, तो 'सच' मान लौटाता है; अन्यथा वापस लौटता 'अगर झूठा'मान देता है।", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "एक संख्या।", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "दो संख्याओं का योग रिटर्न करें।", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "दो संख्याओं का अंतर रिटर्न करें।", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "दो संख्याओं का गुणन रिटर्न करें।", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "दो संख्याओं का भागफल रिटर्न करें।", + "MATH_ARITHMETIC_TOOLTIP_POWER": "दूसरे नंबर की शक्ति को उठाए गए पहले नंबर पर लौटें", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "वर्गमूल", + "MATH_SINGLE_TOOLTIP_ROOT": "संख्या का वर्गमूल रिटर्न करें।", + "MATH_SINGLE_OP_ABSOLUTE": "परम", + "MATH_SINGLE_TOOLTIP_ABS": "संख्या का परम मान रिटर्न करें।", + "MATH_SINGLE_TOOLTIP_NEG": "संख्या का निषेध मान रिटर्न करें।", + "MATH_SINGLE_TOOLTIP_LN": "संख्या का प्राकृतिक लघुगणक रिटर्न करें।", + "MATH_SINGLE_TOOLTIP_LOG10": "संख्या का मूल 10 लघुगणक रिटर्न करें।", + "MATH_SINGLE_TOOLTIP_EXP": "किसी संख्या की शक्ति को वापस ई करें।", + "MATH_SINGLE_TOOLTIP_POW10": "किसी संख्या की शक्ति पर 10 लौटें।", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "डिग्री का साइन रिटर्न करें (रेडियन नही)", + "MATH_TRIG_TOOLTIP_COS": "डिग्री का कोसाइन रिटर्न करें (रेडियन नही)", + "MATH_TRIG_TOOLTIP_TAN": "डिग्री का टैन्जन्ट रिटर्न करें (रेडियन नही)", + "MATH_TRIG_TOOLTIP_ASIN": "संख्या का आर्कसाइन रिटर्न करें।", + "MATH_TRIG_TOOLTIP_ACOS": "संख्या का आर्ककोसाइन रिटर्न करें।", + "MATH_TRIG_TOOLTIP_ATAN": "संख्या का आर्कटैन्जन्ट रिटर्न करें।", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "सामान्य स्थिरांक में से एक को वापस लौटें:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)।", + "MATH_IS_EVEN": "सम है", + "MATH_IS_ODD": "विषम है", + "MATH_IS_PRIME": "अभाज्य है", + "MATH_IS_WHOLE": "पूर्णांक है", + "MATH_IS_POSITIVE": "धनात्मक है", + "MATH_IS_NEGATIVE": "ऋणात्मक है", + "MATH_IS_DIVISIBLE_BY": "इसके द्वारा विभाज्य है", + "MATH_IS_TOOLTIP": "जांचें कि क्या कोई संख्या एक सम, विषम, मुख्य, संपूर्ण, सकारात्मक, नकारात्मक है या यदि वह निश्चित संख्या से विभाजित है। वास्तविक या गलत रिटर्न देता है।", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "%1 को %2 से बदलें", + "MATH_CHANGE_TOOLTIP": "संख्या को चर '%1' से जोड़ें।", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "संख्या को बड़ा या घटा के पूर्णांक बनाएँ।", + "MATH_ROUND_OPERATOR_ROUND": "पूर्णांक बनाएँ", + "MATH_ROUND_OPERATOR_ROUNDUP": "बड़ा के पूर्णांक बनाएँ", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "घटा के पूर्णांक बनाएँ", + "MATH_ONLIST_OPERATOR_SUM": "सूची का योग", + "MATH_ONLIST_TOOLTIP_SUM": "सूची की सभी संख्याओं का योग रिटर्न करें।", + "MATH_ONLIST_OPERATOR_MIN": "सूची मे न्यूनतम", + "MATH_ONLIST_TOOLTIP_MIN": "सूची मे सबसे छोटी संख्या रिटर्न करें।", + "MATH_ONLIST_OPERATOR_MAX": "सूची मे अधिकतम", + "MATH_ONLIST_TOOLTIP_MAX": "सूची में सबसे बड़ी संख्या रिटर्न करें।", + "MATH_ONLIST_OPERATOR_AVERAGE": "सूची का औसत मान", + "MATH_ONLIST_TOOLTIP_AVERAGE": "सूची में संख्यात्मक मानों का औसत (अंकगणित माध्य) लौटें।", + "MATH_ONLIST_OPERATOR_MEDIAN": "सूची की माध्यिका", + "MATH_ONLIST_TOOLTIP_MEDIAN": "सूची की माध्यिका संख्या रिटर्न करें।", + "MATH_ONLIST_OPERATOR_MODE": "सूची का मोड", + "MATH_ONLIST_TOOLTIP_MODE": "सूची मे सबसे आम आइटम(s) की सूची रिटर्न करें।", + "MATH_ONLIST_OPERATOR_STD_DEV": "सूची का मानक विचलन", + "MATH_ONLIST_TOOLTIP_STD_DEV": "सूची का मानक विचलन रिटर्न करें।", + "MATH_ONLIST_OPERATOR_RANDOM": "सूची का रैन्डम आइटम", + "MATH_ONLIST_TOOLTIP_RANDOM": "सूची से एक रैन्डम आइटम रिटर्न करें।", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "%1 ÷ %2 का शेषफल", + "MATH_MODULO_TOOLTIP": "दो संख्याओं के भाग का शेषफल रिटर्न करें।", + "MATH_CONSTRAIN_TITLE": "%1 कम %2 उच्च %3 बाधित करें", + "MATH_CONSTRAIN_TOOLTIP": "एक संख्या को निर्दिष्ट सीमा (सम्मिलित) के बीच बाधित करें।", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "%1 से %2 तक रैन्डम पूर्णांक", + "MATH_RANDOM_INT_TOOLTIP": "दो निर्दिष्ट सीमाओं, समावेशी के बीच एक यादृच्छिक पूर्णांक लौटें।", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "रैन्डम अंश", + "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (समावेशी) और 1.0 (विशिष्ट) के बीच एक यादृच्छिक अंश पर लौटें।", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "एक अक्षर, शब्द, या टेक्स्ट की पंक्ति।", + "TEXT_JOIN_TITLE_CREATEWITH": "इसके साथ टेक्स्ट बनाएँ", + "TEXT_JOIN_TOOLTIP": "किसी भी संख्या के मदों को एक साथ जोड़ कर पाठ का एक टुकड़ा बनाएं।", + "TEXT_CREATE_JOIN_TITLE_JOIN": "जोड़", + "TEXT_CREATE_JOIN_TOOLTIP": "भाग को समनरूप बनाने के लिए जोङें, हटाएं, या पुनः व्यवस्थित करें यदि यह बंद है।", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "सूची मे एक आइटम जोड़ें।", + "TEXT_APPEND_TITLE": "%1 में पाठ %2 को जोड़ें", + "TEXT_APPEND_TOOLTIP": "कुछ टेक्स्ट इस चर '%1' से जोड़ें।", + "TEXT_LENGTH_TITLE": "%1 की लंबाई", + "TEXT_LENGTH_TOOLTIP": "दिए गये टेक्स्ट मे अक्षरों की संख्या रिटर्न करता है (खाली स्थान मिला के)।", + "TEXT_ISEMPTY_TITLE": "%1 खाली है", + "TEXT_ISEMPTY_TOOLTIP": "ट्रू रिटर्न करता है यदि दिया गया टेक्स्ट खाली है।", + "TEXT_INDEXOF_TOOLTIP": "दूसरे पाठ में पहले पाठ की पहली/अंतिम घटना का सूचक देता है। यदि पाठ नहीं मिला है तो %1 रिटर्न होता है।", + "TEXT_INDEXOF_TITLE": "पाठ %1 %2 %3 में", + "TEXT_INDEXOF_OPERATOR_FIRST": "टेक्स्ट पहली बार जहाँ आया है उसे ढूढ़े", + "TEXT_INDEXOF_OPERATOR_LAST": "टेक्स्ट आखरी बार जहाँ आया है उसे ढूढ़े", + "TEXT_CHARAT_TITLE": "पाठ %1 %2 में", + "TEXT_CHARAT_FROM_START": "अक्षर # पाएँ", + "TEXT_CHARAT_FROM_END": "आखिर से अक्षर # पाएँ", + "TEXT_CHARAT_FIRST": "पहला अक्षर पाएँ", + "TEXT_CHARAT_LAST": "आखरी अक्षर पाएँ", + "TEXT_CHARAT_RANDOM": "रैन्डम अक्षर पाएँ", + "TEXT_CHARAT_TOOLTIP": "बताई गयी जगह से अक्षर रिटर्न करता है", + "TEXT_GET_SUBSTRING_TOOLTIP": "टेक्स्ट का बताया गया अंश रिटर्न करता है", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "इस टेक्स्ट मे", + "TEXT_GET_SUBSTRING_START_FROM_START": "अक्षर # से सबस्ट्रिंग पाएँ", + "TEXT_GET_SUBSTRING_START_FROM_END": "आखरी अक्षर # से सबस्ट्रिंग पाएँ", + "TEXT_GET_SUBSTRING_START_FIRST": "पहले अक्षर से सबस्ट्रिंग पाएँ", + "TEXT_GET_SUBSTRING_END_FROM_START": "यहाँ तक अक्षर #", + "TEXT_GET_SUBSTRING_END_FROM_END": "आखिर से यहाँ तक अक्षर #", + "TEXT_GET_SUBSTRING_END_LAST": "यहाँ तक आखरी अक्षर", + "TEXT_CHANGECASE_TOOLTIP": "टेक्स्ट की कॉपी भिन्न केस (अक्षर से संबंधित) मे रिटर्न करें।", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "बड़े अक्षर मे", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "छोटे अक्षर मे", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "टाइटल केस मे", + "TEXT_TRIM_TOOLTIP": "एक या दोनों सिरों से हटाए गए रिक्त स्थान के साथ पाठ की एक प्रति लौटाएं।", + "TEXT_TRIM_OPERATOR_BOTH": "रिक्त स्थान को इस टेक्स्ट के दोनों तरफ से निकालें", + "TEXT_TRIM_OPERATOR_LEFT": "रिक्त स्थान को इस टेक्स्ट के बायें तरफ से निकालें", + "TEXT_TRIM_OPERATOR_RIGHT": "रिक्त स्थान को इस टेक्स्ट के दाईं तरफ से निकालें", + "TEXT_PRINT_TITLE": "प्रिंट करें %1", + "TEXT_PRINT_TOOLTIP": "दिया गया टेक्स्ट प्रिंट करें, संख्या या अन्य मान।", + "TEXT_PROMPT_TYPE_TEXT": "सूचना के साथ टेक्स्ट के लिए प्रॉम्प्ट करें", + "TEXT_PROMPT_TYPE_NUMBER": "सूचना के साथ संख्या के लिए प्रॉम्प्ट करें", + "TEXT_PROMPT_TOOLTIP_NUMBER": "यूज़र से संख्या के लिए प्रॉम्प्ट करें।", + "TEXT_PROMPT_TOOLTIP_TEXT": "यूज़र से कुछ टेक्स्ट के लिए प्रॉम्प्ट करें।", + "TEXT_COUNT_MESSAGE0": "%1 को %2 में गिने", + "TEXT_COUNT_TOOLTIP": "गिने, कितनी बार कुछ पाठ कुछ अन्य पाठ के अंदर समाहित होता है।", + "TEXT_REPLACE_MESSAGE0": "%1 को %2 के साथ %3 में बदलें", + "TEXT_REPLACE_TOOLTIP": "कुछ अन्य पाठ के अंदर कुछ पाठ की सभी जगहों को बदलें।", + "TEXT_REVERSE_MESSAGE0": "%1 को बदल दें", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "पाठ में वर्णों के क्रम को उलट देता है।", + "LISTS_CREATE_EMPTY_TITLE": "खाली सूची बनाएँ", + "LISTS_CREATE_EMPTY_TOOLTIP": "0 लंबाई की, कोई भी डेटा ना रखने वाली एक सूची लौटती है", + "LISTS_CREATE_WITH_TOOLTIP": "कितने भी आइटम वाली एक सूची बनाएँ।", + "LISTS_CREATE_WITH_INPUT_WITH": "इसके सूची बनाएँ", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "सूची", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "इस सूची ब्लॉक को पुन: आकार देने के लिए वर्गों को जोड़ें, निकालें, या पुन: क्रमित करें।", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "सूची मे एक आइटम जोड़ें।", + "LISTS_REPEAT_TOOLTIP": "निर्धारित मान की बार-बार दोहराई गई एक सूची बनाता है।", + "LISTS_REPEAT_TITLE": "वस्तु %1 के साथ %2 बार दोहराई गयी सूची बनाएं", + "LISTS_LENGTH_TITLE": "%1 की लंबाई", + "LISTS_LENGTH_TOOLTIP": "सूची की लंबाई रिटर्न करता है।", + "LISTS_ISEMPTY_TITLE": "%1 खाली है", + "LISTS_ISEMPTY_TOOLTIP": "यदि सूची खाली है तो ट्रू रिटर्न करता है।", + "LISTS_INLIST": "सूची में", + "LISTS_INDEX_OF_FIRST": "आइटम पहली बार जहाँ आया है उसे ढूढ़े", + "LISTS_INDEX_OF_LAST": "आइटम आखरी बार जहाँ आया है उसे ढूढ़े", + "LISTS_INDEX_OF_TOOLTIP": "सूची में आइटम की पहली/अंतिम घटना का सूचक देता है। यदि आइटम नहीं मिला है तो %1 रिटर्न होता है।", + "LISTS_GET_INDEX_GET": "प्राप्त", + "LISTS_GET_INDEX_GET_REMOVE": "प्राप्त करे और हटाए", + "LISTS_GET_INDEX_REMOVE": "निकालें", + "LISTS_GET_INDEX_FROM_END": "अंत से #", + "LISTS_GET_INDEX_FIRST": "पहला", + "LISTS_GET_INDEX_LAST": "आखिरी", + "LISTS_GET_INDEX_RANDOM": "रैन्डम", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 पहली वस्तु है।", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 आखिरी वस्तु है।", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "एक सूची में निर्दिष्ट स्थान पर वस्तु को लौटाता है।", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "सूची का पहला आइटम रिटर्न करता है।", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "सूची का आखरी आइटम रिटर्न करता है।", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "सूची से रैन्डम आइटम रिटर्न करता है।", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "एक सूची में निर्दिष्ट स्थिति में आइटम निकालता है और लौटाता है।", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "सूची का पहला आइटम निकालता है और रिटर्न करता है।", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "सूची का आखरी आइटम निकालता है और रिटर्न करता है।", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "सूची से रैन्डम आइटम निकालता है और रिटर्न करता है।", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "एक सूची में निर्दिष्ट स्थान पर आइटम निकाल देता है।", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "सूची का पहला आइटम निकालता है।", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "सूची का आखरी आइटम निकालता है।", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "सूची से रैन्डम आइटम निकालता है।", + "LISTS_SET_INDEX_SET": "सैट करें", + "LISTS_SET_INDEX_INSERT": "पर डालें", + "LISTS_SET_INDEX_INPUT_TO": "बतौर", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "सूची मे बताए गये स्थान में आइटम सैट करता है।", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "सूची में पहला आइटम सैट करता है।", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "सूची में आखरी आइटम सैट करता है।", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "सूची में रैन्डम आइटम सैट करता है।", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "सूची मे बताए गये स्थान में आइटम इनसर्ट करता है।", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "आइटम को सूची के शुरू में इनसर्ट करता है।", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "आइटम को सूची के अंत में जोड़ता है।", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "आइटम को सूची में रैन्डम्ली इनसर्ट करता है।", + "LISTS_GET_SUBLIST_START_FROM_START": "# से उप-सूची प्राप्त करें", + "LISTS_GET_SUBLIST_START_FROM_END": "अंत से # से उप-सूची प्राप्त करें", + "LISTS_GET_SUBLIST_START_FIRST": "प्रथम से उप-सूची प्राप्त करें", + "LISTS_GET_SUBLIST_END_FROM_START": "# को", + "LISTS_GET_SUBLIST_END_FROM_END": "अंतिम से # को", + "LISTS_GET_SUBLIST_END_LAST": "अंत से", + "LISTS_GET_SUBLIST_TOOLTIP": "सूची के बताए गये भाग की कॉपी बनता है।", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "LISTS_SORT_TITLE": "%1 %2 %3 को छांटे", + "LISTS_SORT_TOOLTIP": "एक सूची की एक प्रति को छांटे।", + "LISTS_SORT_ORDER_ASCENDING": "बढ़ते क्रम", + "LISTS_SORT_ORDER_DESCENDING": "बढ़ते क्रम में", + "LISTS_SORT_TYPE_NUMERIC": "अंकीय", + "LISTS_SORT_TYPE_TEXT": "वर्णक्रमानुसार", + "LISTS_SORT_TYPE_IGNORECASE": "वर्णक्रमानुसार, मामले की अनदेखी करें", + "LISTS_SPLIT_LIST_FROM_TEXT": "पाठ से एक सूची बनाएं", + "LISTS_SPLIT_TEXT_FROM_LIST": "सूची से एक पाठ बनाएं", + "LISTS_SPLIT_WITH_DELIMITER": "सीमांकक के साथ", + "LISTS_SPLIT_TOOLTIP_SPLIT": "ग्रंथों की सूची में पाठ को विभाजित करें, प्रत्येक सीमांकक पर तोड़कर।", + "LISTS_SPLIT_TOOLTIP_JOIN": "ग्रंथों की एक सूची में शामिल करें, जो एक सीमांकक से अलग हो।", + "LISTS_REVERSE_MESSAGE0": "%1 को बदल दें", + "LISTS_REVERSE_TOOLTIP": "एक सूची की एक प्रति को छांटे।", + "VARIABLES_GET_TOOLTIP": "इस चर का मान रिटर्न करता है।", + "VARIABLES_GET_CREATE_SET": "सेट '%1' बनाएँ", + "VARIABLES_SET": "सेट करें %1 को %2", + "VARIABLES_SET_TOOLTIP": "इस चर को इनपुट के बराबर सेट करता है।", + "VARIABLES_SET_CREATE_GET": "'प्राप्त करें %1' बनाएं", + "PROCEDURES_DEFNORETURN_TITLE": "को", + "PROCEDURES_DEFNORETURN_PROCEDURE": "कुछ करें", + "PROCEDURES_BEFORE_PARAMS": ": के साथ", + "PROCEDURES_CALL_BEFORE_PARAMS": ": के साथ", + "PROCEDURES_DEFNORETURN_TOOLTIP": "बिना आउटपुट वाला एक फ़ंक्शन बनाता है।", + "PROCEDURES_DEFNORETURN_COMMENT": "इस फंकशन को समझाएँ...", + "PROCEDURES_DEFRETURN_RETURN": "वापस आएं", + "PROCEDURES_DEFRETURN_TOOLTIP": "आउटपुट वाला एक फ़ंक्शन बनाता है।", + "PROCEDURES_ALLOW_STATEMENTS": "बयानों की अनुमति दें", + "PROCEDURES_DEF_DUPLICATE_WARNING": "सावधान: इस फ़ंक्शन मे डुप्लिकेट पैरामीटर हैं।", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ।", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "यूज़र द्वारा वर्णन किया गया फ़ंक्शन '%1' चलाएँ और उसका आउटपुट इस्तेमाल करें।", + "PROCEDURES_MUTATORCONTAINER_TITLE": "इनपुट", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "इस फ़ंक्शन में इनपुट जोड़ें, निकालें, या पुन: क्रमित करें।", + "PROCEDURES_MUTATORARG_TITLE": "इनपुट का नाम:", + "PROCEDURES_MUTATORARG_TOOLTIP": "फंगक्शन को इनपुट प्रदान करें।", + "PROCEDURES_HIGHLIGHT_DEF": "फ़ंक्शन परिभाषा को हाइलाइट करें", + "PROCEDURES_CREATE_DO": "'%1' बनाएँ", + "PROCEDURES_IFRETURN_TOOLTIP": "यदि एक मान ट्रू है तो, दूसरा मान रिटर्न करें।", + "PROCEDURES_IFRETURN_WARNING": "सावधान: ये ब्लॉक फ़ंक्शन परिभाषा के अंदर ही इस्तेमाल किया जा सकता।", + "DIALOG_OK": "ठीक है", + "DIALOG_CANCEL": "रद्द करें" +} diff --git a/msg/json/hr.json b/msg/json/hr.json index 52e0fa38de2..187f3210708 100644 --- a/msg/json/hr.json +++ b/msg/json/hr.json @@ -1,339 +1,339 @@ -{ - "@metadata": { - "authors": [ - "Bugoslav", - "Gordana Sokol", - "Lkralj15", - "Ninocka", - "Npavcec", - "Tjagust" - ] - }, - "VARIABLES_DEFAULT_NAME": "stavka", - "UNNAMED_KEY": "neimenovano", - "TODAY": "Danas", - "DUPLICATE_BLOCK": "Kloniraj", - "ADD_COMMENT": "Dodaj komentar", - "REMOVE_COMMENT": "Obriši komentar", - "DUPLICATE_COMMENT": "Dupliciraj komentar", - "EXTERNAL_INPUTS": "Vanjski Ulazi", - "INLINE_INPUTS": "Poravnati Ulazi", - "DELETE_BLOCK": "Obriši blok", - "DELETE_X_BLOCKS": "Obriši %1 blokova", - "DELETE_ALL_BLOCKS": "Obrisati svih %1 blokova?", - "CLEAN_UP": "Uredi blokove", - "COLLAPSE_BLOCK": "Sažmi blok", - "COLLAPSE_ALL": "Skupi blokove", - "EXPAND_BLOCK": "Proširi blok", - "EXPAND_ALL": "Proširi blokove", - "DISABLE_BLOCK": "Onemogući blok", - "ENABLE_BLOCK": "Omogući blok", - "HELP": "Pomoć", - "UNDO": "Poništi", - "REDO": "Ponovi", - "CHANGE_VALUE_TITLE": "Promijeni vrijednost:", - "RENAME_VARIABLE": "Preimenovanje varijable...", - "RENAME_VARIABLE_TITLE": "Preimenuj svih %1 varijabli u:", - "NEW_VARIABLE": "Kreiraj varijablu...", - "NEW_STRING_VARIABLE": "Kreiraj varijablu s nizom slova", - "NEW_NUMBER_VARIABLE": "Kreiraj varijablu s brojkama", - "NEW_COLOUR_VARIABLE": "Kreiraj varijablu s bojama", - "NEW_VARIABLE_TYPE_TITLE": "Novi tip varijable:", - "NEW_VARIABLE_TITLE": "Ime nove varijable:", - "VARIABLE_ALREADY_EXISTS": "Varijabla s nazivom '%1' već postoji.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Varijabla pod nazivom '%1' već postoji za drugi tip: '%2'", - "DELETE_VARIABLE_CONFIRMATION": "Obriši %1 korištenja varijable '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne mogu obrisati varijablu '%1' zato što je dio definicije funkcije '%2'", - "DELETE_VARIABLE": "Obriši varijablu '%1'", - "COLOUR_PICKER_HELPURL": "https://hr.wikipedia.org/wiki/Boja", - "COLOUR_PICKER_TOOLTIP": "Odaberi boju iz palete.", - "COLOUR_RANDOM_TITLE": "slučajna boja", - "COLOUR_RANDOM_TOOLTIP": "Odaberi boju nasumično.", - "COLOUR_RGB_TITLE": "boja sa", - "COLOUR_RGB_RED": "crveno", - "COLOUR_RGB_GREEN": "zeleno", - "COLOUR_RGB_BLUE": "plavo", - "COLOUR_RGB_TOOLTIP": "Stvori boju sa zadanom količinom crvene, zelene i plave. Sve vrijednosti moraju biti između 0 i 100.", - "COLOUR_BLEND_TITLE": "pomiješaj", - "COLOUR_BLEND_COLOUR1": "boja 1", - "COLOUR_BLEND_COLOUR2": "boja 2", - "COLOUR_BLEND_RATIO": "omjer", - "COLOUR_BLEND_TOOLTIP": "Miješa dvije boje u zadanom omjeru (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://hr.wikipedia.org/wiki/For_petlja", - "CONTROLS_REPEAT_TITLE": "ponovi %1 puta", - "CONTROLS_REPEAT_INPUT_DO": "radi", - "CONTROLS_REPEAT_TOOLTIP": "Ponovi zadane naredbe više puta.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ponavljaj dok", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ponavljaj do", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dok je vrijednost istinita, izvrši izjave.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dok je vrijednost lažna, izvrši izjave.", - "CONTROLS_FOR_TOOLTIP": "Varijabla '%1' poprima vrijednosti od početnog broja do završnog broja, brojeći u zadanim intervalima i izvršavajući odabrane blokove.", - "CONTROLS_FOR_TITLE": "broji s %1 od %2 do %3 za %4", - "CONTROLS_FOREACH_TITLE": "za svaki član %1 u listi %2", - "CONTROLS_FOREACH_TOOLTIP": "Za svaki član u listi daje varijabli '%1' vrijednost člana i zatim izvrši neke naredbe", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "izađi iz petlje", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "nastavi sa sljedećim ponavljanjem u petlji", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Prekinite postojeću petlju", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Preskoči ostatak petlje i nastavi sa sljedećim ponavljanjem", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozorenje: Ovaj blok se može koristiti samo u petlji.", - "CONTROLS_IF_TOOLTIP_1": "ako je vrijednost istinita izvrši neke naredbe", - "CONTROLS_IF_TOOLTIP_2": "Ako je vrijednost istina, tada izvrši prvi blok naredbi. Inače izvrši drugi blok naredbi.", - "CONTROLS_IF_TOOLTIP_3": "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi.", - "CONTROLS_IF_TOOLTIP_4": "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi. Ako niti jedna vrijednost nije istina, izvrši zadnji blok naredbi.", - "CONTROLS_IF_MSG_IF": "ako", - "CONTROLS_IF_MSG_ELSEIF": "inače ako", - "CONTROLS_IF_MSG_ELSE": "onda", - "CONTROLS_IF_IF_TOOLTIP": "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj blok.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodaj uvjet bloku.", - "CONTROLS_IF_ELSE_TOOLTIP": "Dodaj završni, \"vrijedi za sve\" uvjet bloku.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Vraća istina ako su obje ulazne vrijednosti jednake jedna drugoj.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Vraća istina ako obje ulazne vrijednosti nisu jednake jedna drugoj.", - "LOGIC_COMPARE_TOOLTIP_LT": "Vraća istina ako je prva ulazna vrijednost manja od druge.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Vraća istina ako je prva ulazna vrijednost manja ili jednaka od druge.", - "LOGIC_COMPARE_TOOLTIP_GT": "Vraća istina ako je prva ulazna vrijednost veća od druge.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Vraća istina ako je prva ulazna vrijednost veća ili jednaka od druge.", - "LOGIC_OPERATION_TOOLTIP_AND": "Vraća istina ako su obje ulazne vrijednosti istinite.", - "LOGIC_OPERATION_AND": "i", - "LOGIC_OPERATION_TOOLTIP_OR": "Vraća istina ako je barem jedna od ulaznih vrijednosti istinita.", - "LOGIC_OPERATION_OR": "ili", - "LOGIC_NEGATE_TITLE": "ne %1", - "LOGIC_NEGATE_TOOLTIP": "Vraća istina ako je ulazna vrijednost lažna. Vraća laž ako je ulazna vrijednost istinita.", - "LOGIC_BOOLEAN_TRUE": "istina", - "LOGIC_BOOLEAN_FALSE": "laž", - "LOGIC_BOOLEAN_TOOLTIP": "Vraća ili istina ili laž.", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Vraća null.", - "LOGIC_TERNARY_CONDITION": "izraz", - "LOGIC_TERNARY_IF_TRUE": "ako je istina", - "LOGIC_TERNARY_IF_FALSE": "ako je laž", - "LOGIC_TERNARY_TOOLTIP": "Provjerite uvjet u \"izrazu\". Ako je uvjet istinit, vraća vrijednost \"ako je istinito\"; inače vraća vrijednost \"ako je lažno\".", - "MATH_NUMBER_HELPURL": "https://hr.wikipedia.org/wiki/Broj", - "MATH_NUMBER_TOOLTIP": "broj", - "MATH_ARITHMETIC_HELPURL": "https://hr.wikipedia.org/wiki/Aritmetika", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Vraća zbroj dvaju brojeva.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vraća razliku dvaju brojeva.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vraća umnožak dvaju brojeva.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vraća kvocijent dvaju brojeva.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Vraća prvi broj podignut na potenciju drugog broja.", - "MATH_SINGLE_HELPURL": "https://hr.wikipedia.org/wiki/Kvadratni_korijen", - "MATH_SINGLE_OP_ROOT": "kvadratni korijen", - "MATH_SINGLE_TOOLTIP_ROOT": "Vraća drugi korijen broja.", - "MATH_SINGLE_OP_ABSOLUTE": "apsolutna vrijednost", - "MATH_SINGLE_TOOLTIP_ABS": "Vraća apsolutnu vrijednost broja.", - "MATH_SINGLE_TOOLTIP_NEG": "Vraća negaciju broja.", - "MATH_SINGLE_TOOLTIP_LN": "Vraća prirodni logaritam broja.", - "MATH_SINGLE_TOOLTIP_LOG10": "Vraća logaritam po bazi 10 zadanog broja.", - "MATH_SINGLE_TOOLTIP_EXP": "Vraća e na potenciju broja.", - "MATH_SINGLE_TOOLTIP_POW10": "Vraća 10 na potenciju broja.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Vraća sinus stupnjeva (ne radijana).", - "MATH_TRIG_TOOLTIP_COS": "Vraća kosinus stupnjeva (ne radijana).", - "MATH_TRIG_TOOLTIP_TAN": "Vraća tangens stupnjeva (ne radijana).", - "MATH_TRIG_TOOLTIP_ASIN": "Vraća arkus sinus broja.", - "MATH_TRIG_TOOLTIP_ACOS": "Vraća arkus kosinus broja.", - "MATH_TRIG_TOOLTIP_ATAN": "Vraća arkus tangens broja.", - "MATH_CONSTANT_HELPURL": "https://hr.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta", - "MATH_CONSTANT_TOOLTIP": "Vraća jednu od uobičajenih konstanti: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(1/2) (0.707...) ili ∞ (beskonačnost).", - "MATH_IS_EVEN": "je paran", - "MATH_IS_ODD": "je neparan", - "MATH_IS_PRIME": "je prost broj", - "MATH_IS_WHOLE": "je cijeli broj", - "MATH_IS_POSITIVE": "je pozitivan", - "MATH_IS_NEGATIVE": "je negativan", - "MATH_IS_DIVISIBLE_BY": "je djeljiv s", - "MATH_IS_TOOLTIP": "Provjerava je li broj paran, neparan, prim, cijeli, pozitivan, negativan ili je djeljiv određenim brojem. Vraća istina ili laž.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "promijeni %1 za %2", - "MATH_CHANGE_TOOLTIP": "Dodaj broj varijabli '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Zaokružuje broj na više ili manje", - "MATH_ROUND_OPERATOR_ROUND": "zaokružiti", - "MATH_ROUND_OPERATOR_ROUNDUP": "zaokružiti na više", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokružiti na manje", - "MATH_ONLIST_OPERATOR_SUM": "zbroj liste", - "MATH_ONLIST_TOOLTIP_SUM": "Vraća zbroj svih brojeva u listi.", - "MATH_ONLIST_OPERATOR_MIN": "najmanja vrijednost u listi", - "MATH_ONLIST_TOOLTIP_MIN": "Vraća najmanji broj u listi.", - "MATH_ONLIST_OPERATOR_MAX": "najveća vrijednost u listi", - "MATH_ONLIST_TOOLTIP_MAX": "Vraća najveći broj u listi.", - "MATH_ONLIST_OPERATOR_AVERAGE": "prosječna vrijednost liste", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Vraća prosjek (aritmetičku sredinu) numeričkih vrijednosti liste.", - "MATH_ONLIST_OPERATOR_MEDIAN": "medijan liste", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Vraća srednji broj u listi.", - "MATH_ONLIST_OPERATOR_MODE": "mod liste", - "MATH_ONLIST_TOOLTIP_MODE": "Vraća listu najčešćih vrijednosti (mod) u listi", - "MATH_ONLIST_OPERATOR_STD_DEV": "standardna devijacija liste", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Vraća standardnu devijaciju liste.", - "MATH_ONLIST_OPERATOR_RANDOM": "slučajno odabran član liste", - "MATH_ONLIST_TOOLTIP_RANDOM": "Vraća slučajan član liste.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "ostatak pri dijeljenju %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Vraća ostatak pri dijeljenju dvaju brojeva.", - "MATH_CONSTRAIN_TITLE": "ograniči %1 od %2 do %3", - "MATH_CONSTRAIN_TOOLTIP": "Ograničava broj da bude unutar zadanih granica (uključivši rubne vrijednosti)", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "slučajan cijeli broj između %1 i %2", - "MATH_RANDOM_INT_TOOLTIP": "Vraća slučajan cijeli broj između dviju zadanih vrijednosti, uključivši i rubne vrijednosti.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "slučajan razlomak", - "MATH_RANDOM_FLOAT_TOOLTIP": "Vraća slučajan razlomak vrijednosti između 0.0 (uključivo) i 1.0 (isključivo)", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 od X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Vraća vrijednost arkus tangensa točke (X, Y) u stupnjevima od -180 do 180", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Slovo, riječ ili linija teksta", - "TEXT_JOIN_TITLE_CREATEWITH": "stvori tekst od", - "TEXT_JOIN_TOOLTIP": "Stvara tekst povezivanjem bilo kojeg broja dijelova", - "TEXT_CREATE_JOIN_TITLE_JOIN": "poveži", - "TEXT_CREATE_JOIN_TOOLTIP": "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj tekstualni blok", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Dodajte stavku u tekst", - "TEXT_APPEND_TITLE": "varijabli %1 dodajte tekst %2", - "TEXT_APPEND_TOOLTIP": "Dodajte neki tekst varijabli '%1'.", - "TEXT_LENGTH_TITLE": "duljina %1", - "TEXT_LENGTH_TOOLTIP": "Vraća broj slova (uključivši razmake) teksta", - "TEXT_ISEMPTY_TITLE": "%1 je prazno", - "TEXT_ISEMPTY_TOOLTIP": "Vraća vrijednost istina ako je dani tekst prazan", - "TEXT_INDEXOF_TOOLTIP": "Vraća indeks prvog/zadnjeg pojavljivanja prvog teksta u drugom tekstu. Vraća vrijednost %1 ako tekst nije pronađen.", - "TEXT_INDEXOF_TITLE": "u tekstu %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "nađi prvo pojavljivanje teksta", - "TEXT_INDEXOF_OPERATOR_LAST": "nađi zadnje pojavljivanje teksta", - "TEXT_CHARAT_TITLE": "u tekstu %1 %2", - "TEXT_CHARAT_FROM_START": "dohvati slovo #", - "TEXT_CHARAT_FROM_END": "dohvati slovo # od kraja", - "TEXT_CHARAT_FIRST": "dohvati prvo slovo", - "TEXT_CHARAT_LAST": "dohvati zadnje slovo", - "TEXT_CHARAT_RANDOM": "dohvati slučajno slovo", - "TEXT_CHARAT_TOOLTIP": "Vraća slovo koje je na zadanom mjestu", - "TEXT_GET_SUBSTRING_TOOLTIP": "Daje traženi dio teksta", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "u tekstu", - "TEXT_GET_SUBSTRING_START_FROM_START": "dohvati podtekst od slova #", - "TEXT_GET_SUBSTRING_START_FROM_END": "dohvati podtekst od slova # od kraja", - "TEXT_GET_SUBSTRING_START_FIRST": "dohvati podtekst od prvog slova", - "TEXT_GET_SUBSTRING_END_FROM_START": "do slova #", - "TEXT_GET_SUBSTRING_END_FROM_END": "do slova # od kraja", - "TEXT_GET_SUBSTRING_END_LAST": "do zadnjeg slova", - "TEXT_CHANGECASE_TOOLTIP": "Vraća kopiju teksta s malim ili velikim slovima", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "u VELIKA SLOVA", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "u mala slova", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "u Prvo Veliko Slovo", - "TEXT_TRIM_TOOLTIP": "Vraća kopiju teksta s uklonjenim razmakom s početka ili kraja", - "TEXT_TRIM_OPERATOR_BOTH": "ukloni razmake s obje strane od", - "TEXT_TRIM_OPERATOR_LEFT": "ukloni razmake s lijeve strane od", - "TEXT_TRIM_OPERATOR_RIGHT": "ukloni razmake s desne strane od", - "TEXT_PRINT_TITLE": "ispiši %1", - "TEXT_PRINT_TOOLTIP": "Ispisuje određeni tekst, broj ili drugu vrijednost.", - "TEXT_PROMPT_TYPE_TEXT": "Zatraži tekst porukom", - "TEXT_PROMPT_TYPE_NUMBER": "Zatraži broj porukom", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Zatraži broj od korisnika.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Zatraži tekst od korisnika", - "TEXT_COUNT_MESSAGE0": "prebroji %1 u %2", - "TEXT_COUNT_TOOLTIP": "Prebrojava koliko puta se neki tekst pojavljuje u drugom tekstu", - "TEXT_REPLACE_MESSAGE0": "zamijeni %1 s %2 u %3", - "TEXT_REPLACE_TOOLTIP": "Zamijeni sva pojavljivanja nekog teksta u drugom tekstu.", - "TEXT_REVERSE_MESSAGE0": "obrnuto %1", - "TEXT_REVERSE_TOOLTIP": "Okreće redoslijed znakova u tekstu", - "LISTS_CREATE_EMPTY_TITLE": "stvori praznu listu", - "LISTS_CREATE_EMPTY_TOOLTIP": "Vraća listu, duljine 0, koja ne sadrži podatke", - "LISTS_CREATE_WITH_TOOLTIP": "Stvara listu s bilo kojim brojem članova", - "LISTS_CREATE_WITH_INPUT_WITH": "stvori listu s", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Dodaj, ukloni ili promijeni redoslijed kako biste presložili blok liste", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Dodaj član u listu", - "LISTS_REPEAT_TOOLTIP": "Stvara listu ponavljanjem dane vrijednosti zadani broj puta.", - "LISTS_REPEAT_TITLE": "stvori listu s članom %1 ponovljenim %2 puta", - "LISTS_LENGTH_TITLE": "duljina %1", - "LISTS_LENGTH_TOOLTIP": "Vraća duljinu liste.", - "LISTS_ISEMPTY_TITLE": "%1 je prazno", - "LISTS_ISEMPTY_TOOLTIP": "Vraća istinu ako je lista prazna.", - "LISTS_INLIST": "u listi", - "LISTS_INDEX_OF_FIRST": "nađi prvo pojavljivanje člana", - "LISTS_INDEX_OF_LAST": "nađi zadnje pojavljivanje člana", - "LISTS_INDEX_OF_TOOLTIP": "Vraća indeks prvog/zadnjeg pojavljivanja člana u listi. Vraća %1 ako član nije pronađen.", - "LISTS_GET_INDEX_GET": "dohvati", - "LISTS_GET_INDEX_GET_REMOVE": "uzmi i ukloni", - "LISTS_GET_INDEX_REMOVE": "ukloni", - "LISTS_GET_INDEX_FROM_END": "# od kraja", - "LISTS_GET_INDEX_FIRST": "prvi", - "LISTS_GET_INDEX_LAST": "posljednji", - "LISTS_GET_INDEX_RANDOM": "slučajno", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 je prvi član.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 je zadnji član.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Vraća član sa zadanog mjesta u listi.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vraća prvi član liste", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vraća zadnji član liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vraća slučajno odabrani član u listi.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Uklanja i vraća član na zadanom mjestu u listi.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Uklanja i vraća prvi član u listi.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Uklanja i vraća zadnji član u listi.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Uklanja i vraća slučajno odabrani član u listi.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Uklanja član na odabranom mjestu u listi.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Uklanja prvi član u listi.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Uklanja zadnji član u listi.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Uklanja slučajno odabrani član u listi.", - "LISTS_SET_INDEX_SET": "postavi", - "LISTS_SET_INDEX_INSERT": "umetni na", - "LISTS_SET_INDEX_INPUT_TO": "kao", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Postavlja član na odabrano mjesto u listi.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Postavlja prvi član u listi.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Postavlja zadnji član u listi.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Postavlja slučajno odabrani član u listi.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Umeće član na odabrano mjesto u listi.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Umeće član na početak liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Dodaje član na kraj liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Umeće član na slučajno odabrano mjesto u listi.", - "LISTS_GET_SUBLIST_START_FROM_START": "dohvati podlistu od #", - "LISTS_GET_SUBLIST_START_FROM_END": "uzmi podlistu od # od kraja", - "LISTS_GET_SUBLIST_START_FIRST": "dohvati podlistu od prvog", - "LISTS_GET_SUBLIST_END_FROM_START": "do #", - "LISTS_GET_SUBLIST_END_FROM_END": "do # od kraja", - "LISTS_GET_SUBLIST_END_LAST": "do zadnjeg", - "LISTS_GET_SUBLIST_TOOLTIP": "Stvara kopiju odabranog dijela liste", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "Sortiraj %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sortiraj kopiju liste", - "LISTS_SORT_ORDER_ASCENDING": "uzlazno", - "LISTS_SORT_ORDER_DESCENDING": "silazno", - "LISTS_SORT_TYPE_NUMERIC": "kao brojeve", - "LISTS_SORT_TYPE_TEXT": "po abecedi", - "LISTS_SORT_TYPE_IGNORECASE": "po abecedi, zanemari mala/velika slova", - "LISTS_SPLIT_LIST_FROM_TEXT": "napravi listu od teksta", - "LISTS_SPLIT_TEXT_FROM_LIST": "napravi tekst od liste", - "LISTS_SPLIT_WITH_DELIMITER": "S razdjelnikom", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Podijeli tekst u niz tekstova prema razdjelniku", - "LISTS_SPLIT_TOOLTIP_JOIN": "Poveži niz tekstova u jedan tekst podijeljen razdjelnikom", - "LISTS_REVERSE_MESSAGE0": "obrnuto %1", - "LISTS_REVERSE_TOOLTIP": "Obrnuta kopija liste", - "VARIABLES_GET_TOOLTIP": "Vraća vrijednost varijable", - "VARIABLES_GET_CREATE_SET": "Stvori 'set %1'", - "VARIABLES_SET": "Postavi %1 na %2", - "VARIABLES_SET_TOOLTIP": "Postavi vrijednost varijable jednaku izlaznoj vrijednosti", - "VARIABLES_SET_CREATE_GET": "Stvori 'get %1'", - "PROCEDURES_DEFNORETURN_TITLE": "za", - "PROCEDURES_DEFNORETURN_PROCEDURE": "napravi nešto", - "PROCEDURES_BEFORE_PARAMS": "s:", - "PROCEDURES_CALL_BEFORE_PARAMS": "s:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Stvaranje funkcije bez izlazne vrijednosti", - "PROCEDURES_DEFNORETURN_COMMENT": "Opis funkcije", - "PROCEDURES_DEFRETURN_RETURN": "Vrati", - "PROCEDURES_DEFRETURN_TOOLTIP": "Stvara funkciju s izlaznom vrijednošću", - "PROCEDURES_ALLOW_STATEMENTS": "Dopustite izjave", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Upozorenje: Ova funkcija ima varijable istog imena", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Pokrenite korisnički definiranu funkciju '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Pokrenite korisnički definiranu funkciju '%1' i upotrijebite njenu izlaznu vrijednost", - "PROCEDURES_MUTATORCONTAINER_TITLE": "Ulazne varijable", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Dodajte, uklonite ili promijenite redoslijed ulaznih varijabli funkcije", - "PROCEDURES_MUTATORARG_TITLE": "Naziv ulazne varijable", - "PROCEDURES_MUTATORARG_TOOLTIP": "Dodajte ulaznu varijablu funkcije", - "PROCEDURES_HIGHLIGHT_DEF": "Označavanje definicije funkcije", - "PROCEDURES_CREATE_DO": "Stvori '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Iako je vrijednost istina, tada vrati drugu vrijednost", - "PROCEDURES_IFRETURN_WARNING": "Upozorenje: Ovaj blok se može koristiti samo u definiciji funkcije", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Recite nešto", - "WORKSPACE_ARIA_LABEL": "Radni prostor Blocklyja", - "COLLAPSED_WARNINGS_WARNING": "Sažeti blokovi sadrže upozorenje", - "DIALOG_OK": "U redu", - "DIALOG_CANCEL": "Odustani" -} +{ + "@metadata": { + "authors": [ + "Bugoslav", + "Gordana Sokol", + "Lkralj15", + "Ninocka", + "Npavcec", + "Tjagust" + ] + }, + "VARIABLES_DEFAULT_NAME": "stavka", + "UNNAMED_KEY": "neimenovano", + "TODAY": "Danas", + "DUPLICATE_BLOCK": "Kloniraj", + "ADD_COMMENT": "Dodaj komentar", + "REMOVE_COMMENT": "Obriši komentar", + "DUPLICATE_COMMENT": "Dupliciraj komentar", + "EXTERNAL_INPUTS": "Vanjski Ulazi", + "INLINE_INPUTS": "Poravnati Ulazi", + "DELETE_BLOCK": "Obriši blok", + "DELETE_X_BLOCKS": "Obriši %1 blokova", + "DELETE_ALL_BLOCKS": "Obrisati svih %1 blokova?", + "CLEAN_UP": "Uredi blokove", + "COLLAPSE_BLOCK": "Sažmi blok", + "COLLAPSE_ALL": "Skupi blokove", + "EXPAND_BLOCK": "Proširi blok", + "EXPAND_ALL": "Proširi blokove", + "DISABLE_BLOCK": "Onemogući blok", + "ENABLE_BLOCK": "Omogući blok", + "HELP": "Pomoć", + "UNDO": "Poništi", + "REDO": "Ponovi", + "CHANGE_VALUE_TITLE": "Promijeni vrijednost:", + "RENAME_VARIABLE": "Preimenovanje varijable...", + "RENAME_VARIABLE_TITLE": "Preimenuj svih %1 varijabli u:", + "NEW_VARIABLE": "Kreiraj varijablu...", + "NEW_STRING_VARIABLE": "Kreiraj varijablu s nizom slova", + "NEW_NUMBER_VARIABLE": "Kreiraj varijablu s brojkama", + "NEW_COLOUR_VARIABLE": "Kreiraj varijablu s bojama", + "NEW_VARIABLE_TYPE_TITLE": "Novi tip varijable:", + "NEW_VARIABLE_TITLE": "Ime nove varijable:", + "VARIABLE_ALREADY_EXISTS": "Varijabla s nazivom '%1' već postoji.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Varijabla pod nazivom '%1' već postoji za drugi tip: '%2'", + "DELETE_VARIABLE_CONFIRMATION": "Obriši %1 korištenja varijable '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne mogu obrisati varijablu '%1' zato što je dio definicije funkcije '%2'", + "DELETE_VARIABLE": "Obriši varijablu '%1'", + "COLOUR_PICKER_HELPURL": "https://hr.wikipedia.org/wiki/Boja", + "COLOUR_PICKER_TOOLTIP": "Odaberi boju iz palete.", + "COLOUR_RANDOM_TITLE": "slučajna boja", + "COLOUR_RANDOM_TOOLTIP": "Odaberi boju nasumično.", + "COLOUR_RGB_TITLE": "boja sa", + "COLOUR_RGB_RED": "crveno", + "COLOUR_RGB_GREEN": "zeleno", + "COLOUR_RGB_BLUE": "plavo", + "COLOUR_RGB_TOOLTIP": "Stvori boju sa zadanom količinom crvene, zelene i plave. Sve vrijednosti moraju biti između 0 i 100.", + "COLOUR_BLEND_TITLE": "pomiješaj", + "COLOUR_BLEND_COLOUR1": "boja 1", + "COLOUR_BLEND_COLOUR2": "boja 2", + "COLOUR_BLEND_RATIO": "omjer", + "COLOUR_BLEND_TOOLTIP": "Miješa dvije boje u zadanom omjeru (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://hr.wikipedia.org/wiki/For_petlja", + "CONTROLS_REPEAT_TITLE": "ponovi %1 puta", + "CONTROLS_REPEAT_INPUT_DO": "radi", + "CONTROLS_REPEAT_TOOLTIP": "Ponovi zadane naredbe više puta.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ponavljaj dok", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ponavljaj do", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dok je vrijednost istinita, izvrši izjave.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dok je vrijednost lažna, izvrši izjave.", + "CONTROLS_FOR_TOOLTIP": "Varijabla '%1' poprima vrijednosti od početnog broja do završnog broja, brojeći u zadanim intervalima i izvršavajući odabrane blokove.", + "CONTROLS_FOR_TITLE": "broji s %1 od %2 do %3 za %4", + "CONTROLS_FOREACH_TITLE": "za svaki član %1 u listi %2", + "CONTROLS_FOREACH_TOOLTIP": "Za svaki član u listi daje varijabli '%1' vrijednost člana i zatim izvrši neke naredbe", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "izađi iz petlje", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "nastavi sa sljedećim ponavljanjem u petlji", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Prekinite postojeću petlju", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Preskoči ostatak petlje i nastavi sa sljedećim ponavljanjem", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozorenje: Ovaj blok se može koristiti samo u petlji.", + "CONTROLS_IF_TOOLTIP_1": "ako je vrijednost istinita izvrši neke naredbe", + "CONTROLS_IF_TOOLTIP_2": "Ako je vrijednost istina, tada izvrši prvi blok naredbi. Inače izvrši drugi blok naredbi.", + "CONTROLS_IF_TOOLTIP_3": "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi.", + "CONTROLS_IF_TOOLTIP_4": "Ako je prva vrijednost istina, tada izvrši prvi blok naredbi. Inače, ako je druga vrijednost istina izvrši drugi blok naredbi. Ako niti jedna vrijednost nije istina, izvrši zadnji blok naredbi.", + "CONTROLS_IF_MSG_IF": "ako", + "CONTROLS_IF_MSG_ELSEIF": "inače ako", + "CONTROLS_IF_MSG_ELSE": "onda", + "CONTROLS_IF_IF_TOOLTIP": "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj blok.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodaj uvjet bloku.", + "CONTROLS_IF_ELSE_TOOLTIP": "Dodaj završni, \"vrijedi za sve\" uvjet bloku.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Vraća istina ako su obje ulazne vrijednosti jednake jedna drugoj.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Vraća istina ako obje ulazne vrijednosti nisu jednake jedna drugoj.", + "LOGIC_COMPARE_TOOLTIP_LT": "Vraća istina ako je prva ulazna vrijednost manja od druge.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Vraća istina ako je prva ulazna vrijednost manja ili jednaka od druge.", + "LOGIC_COMPARE_TOOLTIP_GT": "Vraća istina ako je prva ulazna vrijednost veća od druge.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Vraća istina ako je prva ulazna vrijednost veća ili jednaka od druge.", + "LOGIC_OPERATION_TOOLTIP_AND": "Vraća istina ako su obje ulazne vrijednosti istinite.", + "LOGIC_OPERATION_AND": "i", + "LOGIC_OPERATION_TOOLTIP_OR": "Vraća istina ako je barem jedna od ulaznih vrijednosti istinita.", + "LOGIC_OPERATION_OR": "ili", + "LOGIC_NEGATE_TITLE": "ne %1", + "LOGIC_NEGATE_TOOLTIP": "Vraća istina ako je ulazna vrijednost lažna. Vraća laž ako je ulazna vrijednost istinita.", + "LOGIC_BOOLEAN_TRUE": "istina", + "LOGIC_BOOLEAN_FALSE": "laž", + "LOGIC_BOOLEAN_TOOLTIP": "Vraća ili istina ili laž.", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Vraća null.", + "LOGIC_TERNARY_CONDITION": "izraz", + "LOGIC_TERNARY_IF_TRUE": "ako je istina", + "LOGIC_TERNARY_IF_FALSE": "ako je laž", + "LOGIC_TERNARY_TOOLTIP": "Provjerite uvjet u \"izrazu\". Ako je uvjet istinit, vraća vrijednost \"ako je istinito\"; inače vraća vrijednost \"ako je lažno\".", + "MATH_NUMBER_HELPURL": "https://hr.wikipedia.org/wiki/Broj", + "MATH_NUMBER_TOOLTIP": "broj", + "MATH_ARITHMETIC_HELPURL": "https://hr.wikipedia.org/wiki/Aritmetika", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Vraća zbroj dvaju brojeva.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vraća razliku dvaju brojeva.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vraća umnožak dvaju brojeva.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vraća kvocijent dvaju brojeva.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Vraća prvi broj podignut na potenciju drugog broja.", + "MATH_SINGLE_HELPURL": "https://hr.wikipedia.org/wiki/Kvadratni_korijen", + "MATH_SINGLE_OP_ROOT": "kvadratni korijen", + "MATH_SINGLE_TOOLTIP_ROOT": "Vraća drugi korijen broja.", + "MATH_SINGLE_OP_ABSOLUTE": "apsolutna vrijednost", + "MATH_SINGLE_TOOLTIP_ABS": "Vraća apsolutnu vrijednost broja.", + "MATH_SINGLE_TOOLTIP_NEG": "Vraća negaciju broja.", + "MATH_SINGLE_TOOLTIP_LN": "Vraća prirodni logaritam broja.", + "MATH_SINGLE_TOOLTIP_LOG10": "Vraća logaritam po bazi 10 zadanog broja.", + "MATH_SINGLE_TOOLTIP_EXP": "Vraća e na potenciju broja.", + "MATH_SINGLE_TOOLTIP_POW10": "Vraća 10 na potenciju broja.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Vraća sinus stupnjeva (ne radijana).", + "MATH_TRIG_TOOLTIP_COS": "Vraća kosinus stupnjeva (ne radijana).", + "MATH_TRIG_TOOLTIP_TAN": "Vraća tangens stupnjeva (ne radijana).", + "MATH_TRIG_TOOLTIP_ASIN": "Vraća arkus sinus broja.", + "MATH_TRIG_TOOLTIP_ACOS": "Vraća arkus kosinus broja.", + "MATH_TRIG_TOOLTIP_ATAN": "Vraća arkus tangens broja.", + "MATH_CONSTANT_HELPURL": "https://hr.wikipedia.org/wiki/Matemati%C4%8Dka_konstanta", + "MATH_CONSTANT_TOOLTIP": "Vraća jednu od uobičajenih konstanti: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(1/2) (0.707...) ili ∞ (beskonačnost).", + "MATH_IS_EVEN": "je paran", + "MATH_IS_ODD": "je neparan", + "MATH_IS_PRIME": "je prost broj", + "MATH_IS_WHOLE": "je cijeli broj", + "MATH_IS_POSITIVE": "je pozitivan", + "MATH_IS_NEGATIVE": "je negativan", + "MATH_IS_DIVISIBLE_BY": "je djeljiv s", + "MATH_IS_TOOLTIP": "Provjerava je li broj paran, neparan, prim, cijeli, pozitivan, negativan ili je djeljiv određenim brojem. Vraća istina ili laž.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "promijeni %1 za %2", + "MATH_CHANGE_TOOLTIP": "Dodaj broj varijabli '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Zaokružuje broj na više ili manje", + "MATH_ROUND_OPERATOR_ROUND": "zaokružiti", + "MATH_ROUND_OPERATOR_ROUNDUP": "zaokružiti na više", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokružiti na manje", + "MATH_ONLIST_OPERATOR_SUM": "zbroj liste", + "MATH_ONLIST_TOOLTIP_SUM": "Vraća zbroj svih brojeva u listi.", + "MATH_ONLIST_OPERATOR_MIN": "najmanja vrijednost u listi", + "MATH_ONLIST_TOOLTIP_MIN": "Vraća najmanji broj u listi.", + "MATH_ONLIST_OPERATOR_MAX": "najveća vrijednost u listi", + "MATH_ONLIST_TOOLTIP_MAX": "Vraća najveći broj u listi.", + "MATH_ONLIST_OPERATOR_AVERAGE": "prosječna vrijednost liste", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Vraća prosjek (aritmetičku sredinu) numeričkih vrijednosti liste.", + "MATH_ONLIST_OPERATOR_MEDIAN": "medijan liste", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Vraća srednji broj u listi.", + "MATH_ONLIST_OPERATOR_MODE": "mod liste", + "MATH_ONLIST_TOOLTIP_MODE": "Vraća listu najčešćih vrijednosti (mod) u listi", + "MATH_ONLIST_OPERATOR_STD_DEV": "standardna devijacija liste", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Vraća standardnu devijaciju liste.", + "MATH_ONLIST_OPERATOR_RANDOM": "slučajno odabran član liste", + "MATH_ONLIST_TOOLTIP_RANDOM": "Vraća slučajan član liste.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "ostatak pri dijeljenju %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Vraća ostatak pri dijeljenju dvaju brojeva.", + "MATH_CONSTRAIN_TITLE": "ograniči %1 od %2 do %3", + "MATH_CONSTRAIN_TOOLTIP": "Ograničava broj da bude unutar zadanih granica (uključivši rubne vrijednosti)", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "slučajan cijeli broj između %1 i %2", + "MATH_RANDOM_INT_TOOLTIP": "Vraća slučajan cijeli broj između dviju zadanih vrijednosti, uključivši i rubne vrijednosti.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "slučajan razlomak", + "MATH_RANDOM_FLOAT_TOOLTIP": "Vraća slučajan razlomak vrijednosti između 0.0 (uključivo) i 1.0 (isključivo)", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 od X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Vraća vrijednost arkus tangensa točke (X, Y) u stupnjevima od -180 do 180", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Slovo, riječ ili linija teksta", + "TEXT_JOIN_TITLE_CREATEWITH": "stvori tekst od", + "TEXT_JOIN_TOOLTIP": "Stvara tekst povezivanjem bilo kojeg broja dijelova", + "TEXT_CREATE_JOIN_TITLE_JOIN": "poveži", + "TEXT_CREATE_JOIN_TOOLTIP": "Dodaj, ukloni ili promijeni redoslijed kako biste presložili ovaj tekstualni blok", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Dodajte stavku u tekst", + "TEXT_APPEND_TITLE": "varijabli %1 dodajte tekst %2", + "TEXT_APPEND_TOOLTIP": "Dodajte neki tekst varijabli '%1'.", + "TEXT_LENGTH_TITLE": "duljina %1", + "TEXT_LENGTH_TOOLTIP": "Vraća broj slova (uključivši razmake) teksta", + "TEXT_ISEMPTY_TITLE": "%1 je prazno", + "TEXT_ISEMPTY_TOOLTIP": "Vraća vrijednost istina ako je dani tekst prazan", + "TEXT_INDEXOF_TOOLTIP": "Vraća indeks prvog/zadnjeg pojavljivanja prvog teksta u drugom tekstu. Vraća vrijednost %1 ako tekst nije pronađen.", + "TEXT_INDEXOF_TITLE": "u tekstu %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "nađi prvo pojavljivanje teksta", + "TEXT_INDEXOF_OPERATOR_LAST": "nađi zadnje pojavljivanje teksta", + "TEXT_CHARAT_TITLE": "u tekstu %1 %2", + "TEXT_CHARAT_FROM_START": "dohvati slovo #", + "TEXT_CHARAT_FROM_END": "dohvati slovo # od kraja", + "TEXT_CHARAT_FIRST": "dohvati prvo slovo", + "TEXT_CHARAT_LAST": "dohvati zadnje slovo", + "TEXT_CHARAT_RANDOM": "dohvati slučajno slovo", + "TEXT_CHARAT_TOOLTIP": "Vraća slovo koje je na zadanom mjestu", + "TEXT_GET_SUBSTRING_TOOLTIP": "Daje traženi dio teksta", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "u tekstu", + "TEXT_GET_SUBSTRING_START_FROM_START": "dohvati podtekst od slova #", + "TEXT_GET_SUBSTRING_START_FROM_END": "dohvati podtekst od slova # od kraja", + "TEXT_GET_SUBSTRING_START_FIRST": "dohvati podtekst od prvog slova", + "TEXT_GET_SUBSTRING_END_FROM_START": "do slova #", + "TEXT_GET_SUBSTRING_END_FROM_END": "do slova # od kraja", + "TEXT_GET_SUBSTRING_END_LAST": "do zadnjeg slova", + "TEXT_CHANGECASE_TOOLTIP": "Vraća kopiju teksta s malim ili velikim slovima", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "u VELIKA SLOVA", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "u mala slova", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "u Prvo Veliko Slovo", + "TEXT_TRIM_TOOLTIP": "Vraća kopiju teksta s uklonjenim razmakom s početka ili kraja", + "TEXT_TRIM_OPERATOR_BOTH": "ukloni razmake s obje strane od", + "TEXT_TRIM_OPERATOR_LEFT": "ukloni razmake s lijeve strane od", + "TEXT_TRIM_OPERATOR_RIGHT": "ukloni razmake s desne strane od", + "TEXT_PRINT_TITLE": "ispiši %1", + "TEXT_PRINT_TOOLTIP": "Ispisuje određeni tekst, broj ili drugu vrijednost.", + "TEXT_PROMPT_TYPE_TEXT": "Zatraži tekst porukom", + "TEXT_PROMPT_TYPE_NUMBER": "Zatraži broj porukom", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Zatraži broj od korisnika.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Zatraži tekst od korisnika", + "TEXT_COUNT_MESSAGE0": "prebroji %1 u %2", + "TEXT_COUNT_TOOLTIP": "Prebrojava koliko puta se neki tekst pojavljuje u drugom tekstu", + "TEXT_REPLACE_MESSAGE0": "zamijeni %1 s %2 u %3", + "TEXT_REPLACE_TOOLTIP": "Zamijeni sva pojavljivanja nekog teksta u drugom tekstu.", + "TEXT_REVERSE_MESSAGE0": "obrnuto %1", + "TEXT_REVERSE_TOOLTIP": "Okreće redoslijed znakova u tekstu", + "LISTS_CREATE_EMPTY_TITLE": "stvori praznu listu", + "LISTS_CREATE_EMPTY_TOOLTIP": "Vraća listu, duljine 0, koja ne sadrži podatke", + "LISTS_CREATE_WITH_TOOLTIP": "Stvara listu s bilo kojim brojem članova", + "LISTS_CREATE_WITH_INPUT_WITH": "stvori listu s", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Dodaj, ukloni ili promijeni redoslijed kako biste presložili blok liste", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Dodaj član u listu", + "LISTS_REPEAT_TOOLTIP": "Stvara listu ponavljanjem dane vrijednosti zadani broj puta.", + "LISTS_REPEAT_TITLE": "stvori listu s članom %1 ponovljenim %2 puta", + "LISTS_LENGTH_TITLE": "duljina %1", + "LISTS_LENGTH_TOOLTIP": "Vraća duljinu liste.", + "LISTS_ISEMPTY_TITLE": "%1 je prazno", + "LISTS_ISEMPTY_TOOLTIP": "Vraća istinu ako je lista prazna.", + "LISTS_INLIST": "u listi", + "LISTS_INDEX_OF_FIRST": "nađi prvo pojavljivanje člana", + "LISTS_INDEX_OF_LAST": "nađi zadnje pojavljivanje člana", + "LISTS_INDEX_OF_TOOLTIP": "Vraća indeks prvog/zadnjeg pojavljivanja člana u listi. Vraća %1 ako član nije pronađen.", + "LISTS_GET_INDEX_GET": "dohvati", + "LISTS_GET_INDEX_GET_REMOVE": "uzmi i ukloni", + "LISTS_GET_INDEX_REMOVE": "ukloni", + "LISTS_GET_INDEX_FROM_END": "# od kraja", + "LISTS_GET_INDEX_FIRST": "prvi", + "LISTS_GET_INDEX_LAST": "posljednji", + "LISTS_GET_INDEX_RANDOM": "slučajno", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 je prvi član.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 je zadnji član.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Vraća član sa zadanog mjesta u listi.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vraća prvi član liste", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vraća zadnji član liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vraća slučajno odabrani član u listi.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Uklanja i vraća član na zadanom mjestu u listi.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Uklanja i vraća prvi član u listi.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Uklanja i vraća zadnji član u listi.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Uklanja i vraća slučajno odabrani član u listi.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Uklanja član na odabranom mjestu u listi.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Uklanja prvi član u listi.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Uklanja zadnji član u listi.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Uklanja slučajno odabrani član u listi.", + "LISTS_SET_INDEX_SET": "postavi", + "LISTS_SET_INDEX_INSERT": "umetni na", + "LISTS_SET_INDEX_INPUT_TO": "kao", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Postavlja član na odabrano mjesto u listi.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Postavlja prvi član u listi.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Postavlja zadnji član u listi.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Postavlja slučajno odabrani član u listi.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Umeće član na odabrano mjesto u listi.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Umeće član na početak liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Dodaje član na kraj liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Umeće član na slučajno odabrano mjesto u listi.", + "LISTS_GET_SUBLIST_START_FROM_START": "dohvati podlistu od #", + "LISTS_GET_SUBLIST_START_FROM_END": "uzmi podlistu od # od kraja", + "LISTS_GET_SUBLIST_START_FIRST": "dohvati podlistu od prvog", + "LISTS_GET_SUBLIST_END_FROM_START": "do #", + "LISTS_GET_SUBLIST_END_FROM_END": "do # od kraja", + "LISTS_GET_SUBLIST_END_LAST": "do zadnjeg", + "LISTS_GET_SUBLIST_TOOLTIP": "Stvara kopiju odabranog dijela liste", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "Sortiraj %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sortiraj kopiju liste", + "LISTS_SORT_ORDER_ASCENDING": "uzlazno", + "LISTS_SORT_ORDER_DESCENDING": "silazno", + "LISTS_SORT_TYPE_NUMERIC": "kao brojeve", + "LISTS_SORT_TYPE_TEXT": "po abecedi", + "LISTS_SORT_TYPE_IGNORECASE": "po abecedi, zanemari mala/velika slova", + "LISTS_SPLIT_LIST_FROM_TEXT": "napravi listu od teksta", + "LISTS_SPLIT_TEXT_FROM_LIST": "napravi tekst od liste", + "LISTS_SPLIT_WITH_DELIMITER": "S razdjelnikom", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Podijeli tekst u niz tekstova prema razdjelniku", + "LISTS_SPLIT_TOOLTIP_JOIN": "Poveži niz tekstova u jedan tekst podijeljen razdjelnikom", + "LISTS_REVERSE_MESSAGE0": "obrnuto %1", + "LISTS_REVERSE_TOOLTIP": "Obrnuta kopija liste", + "VARIABLES_GET_TOOLTIP": "Vraća vrijednost varijable", + "VARIABLES_GET_CREATE_SET": "Stvori 'set %1'", + "VARIABLES_SET": "Postavi %1 na %2", + "VARIABLES_SET_TOOLTIP": "Postavi vrijednost varijable jednaku izlaznoj vrijednosti", + "VARIABLES_SET_CREATE_GET": "Stvori 'get %1'", + "PROCEDURES_DEFNORETURN_TITLE": "za", + "PROCEDURES_DEFNORETURN_PROCEDURE": "napravi nešto", + "PROCEDURES_BEFORE_PARAMS": "s:", + "PROCEDURES_CALL_BEFORE_PARAMS": "s:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Stvaranje funkcije bez izlazne vrijednosti", + "PROCEDURES_DEFNORETURN_COMMENT": "Opis funkcije", + "PROCEDURES_DEFRETURN_RETURN": "Vrati", + "PROCEDURES_DEFRETURN_TOOLTIP": "Stvara funkciju s izlaznom vrijednošću", + "PROCEDURES_ALLOW_STATEMENTS": "Dopustite izjave", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Upozorenje: Ova funkcija ima varijable istog imena", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Pokrenite korisnički definiranu funkciju '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Pokrenite korisnički definiranu funkciju '%1' i upotrijebite njenu izlaznu vrijednost", + "PROCEDURES_MUTATORCONTAINER_TITLE": "Ulazne varijable", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Dodajte, uklonite ili promijenite redoslijed ulaznih varijabli funkcije", + "PROCEDURES_MUTATORARG_TITLE": "Naziv ulazne varijable", + "PROCEDURES_MUTATORARG_TOOLTIP": "Dodajte ulaznu varijablu funkcije", + "PROCEDURES_HIGHLIGHT_DEF": "Označavanje definicije funkcije", + "PROCEDURES_CREATE_DO": "Stvori '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Iako je vrijednost istina, tada vrati drugu vrijednost", + "PROCEDURES_IFRETURN_WARNING": "Upozorenje: Ovaj blok se može koristiti samo u definiciji funkcije", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Recite nešto", + "WORKSPACE_ARIA_LABEL": "Radni prostor Blocklyja", + "COLLAPSED_WARNINGS_WARNING": "Sažeti blokovi sadrže upozorenje", + "DIALOG_OK": "U redu", + "DIALOG_CANCEL": "Odustani" +} diff --git a/msg/json/hrx.json b/msg/json/hrx.json index ef3e93e7904..8ca9d2d4148 100644 --- a/msg/json/hrx.json +++ b/msg/json/hrx.json @@ -1,289 +1,289 @@ -{ - "@metadata": { - "authors": [ - "Paul Beppler" - ] - }, - "VARIABLES_DEFAULT_NAME": "Element", - "DUPLICATE_BLOCK": "Kopieren", - "ADD_COMMENT": "Kommentar hinzufüche", - "REMOVE_COMMENT": "Kommentar entferne", - "EXTERNAL_INPUTS": "External Inputsexterne Ingänge", - "INLINE_INPUTS": "interne Ingänge", - "DELETE_BLOCK": "Block lösche", - "DELETE_X_BLOCKS": "Block %1 lösche", - "DELETE_ALL_BLOCKS": "All %1 Bausten lösche?", - "COLLAPSE_BLOCK": "Block zusammerfalte", - "COLLAPSE_ALL": "Blocke zusammerfalte", - "EXPAND_BLOCK": "Block entfalte", - "EXPAND_ALL": "Blocke expandiere", - "DISABLE_BLOCK": "Block deaktivieren", - "ENABLE_BLOCK": "Block aktivieren", - "HELP": "Hellef", - "CHANGE_VALUE_TITLE": "Neie Variable...", - "RENAME_VARIABLE": "Die neie Variable sei Noome:", - "RENAME_VARIABLE_TITLE": "All \"%1\" Variable umbenenne in:", - "NEW_VARIABLE": "Neie Variable...", - "NEW_VARIABLE_TITLE": "Die neie Variable sei Noome:", - "COLOUR_PICKER_HELPURL": "https://hrx.wikipedia.org/wiki/Farreb", - "COLOUR_PICKER_TOOLTIP": "Wähl en Farreb von der Palett.", - "COLOUR_RANDOM_TITLE": "zufälliche Farwe", - "COLOUR_RANDOM_TOOLTIP": "Wähl en Farreb noh dem Zufallsprinzip.", - "COLOUR_RGB_TITLE": "Färreb mit", - "COLOUR_RGB_RED": "rot", - "COLOUR_RGB_GREEN": "grün", - "COLOUR_RGB_BLUE": "blau", - "COLOUR_RGB_TOOLTIP": "Kreiere ene Farreb mit sellrbst definierte rot, grün und blau Wearte. All Wearte müsse zwischich 0 und 100 liehe.", - "COLOUR_BLEND_TITLE": "misch", - "COLOUR_BLEND_COLOUR1": "Farreb 1", - "COLOUR_BLEND_COLOUR2": "mit Farreb 2", - "COLOUR_BLEND_RATIO": "im Verhältniss", - "COLOUR_BLEND_TOOLTIP": "Vermischt 2 Farwe mit konfigurierbare Farrebverhältniss (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://hrx.wikipedia.org/wiki/For-Schleif", - "CONTROLS_REPEAT_TITLE": "wiederhol %1 mol", - "CONTROLS_REPEAT_INPUT_DO": "mach", - "CONTROLS_REPEAT_TOOLTIP": "En Oonweisung meahrfach ausführe.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Repetier solang", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "Repetiere bis", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Füahr die Oonweisung solang aus wie die Bedingung woahr (true) ist.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Füahr die Oonweisung solang aus wie die Bedingung falsch (false) ist.", - "CONTROLS_FOR_TOOLTIP": "Zähl die Variable \"%1\" von enem Startweart bis zu enem Zielweart und füahrefür jede Weart en Oonweisung aus.", - "CONTROLS_FOR_TITLE": "Zähl %1 von %2 bis %3 mit %4", - "CONTROLS_FOREACH_TITLE": "Für Weart %1 aus der List %2", - "CONTROLS_FOREACH_TOOLTIP": "Füahr en Oonweisung für jede Weart in der List aus und setzt dabei die Variable \"%1\" uff den aktuelle List Weart.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ausbreche aus der Schleif", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "mit der nächste Iteration fortfoohre aus der Schleifa", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Die umgebne Schleif beenne.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Die Oonweisung abbreche und mit der nächste Schleifiteration fortfoohre.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Warnung: Die block sollt nuar in en Schleif verwennet sin.", - "CONTROLS_IF_TOOLTIP_1": "Wenn en Bedingung woahr (true) ist, dann füahr en Oonweisung aus.", - "CONTROLS_IF_TOOLTIP_2": "Wenn en Bedingung woahr (true) ist, dann füahr die earscht Oonweisung aus. Ansonscht füahr die zwooite Oonweisung aus.", - "CONTROLS_IF_TOOLTIP_3": "Wenn der erschte Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus.", - "CONTROLS_IF_TOOLTIP_4": "Wenn der erscht Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus. Falls ken der beide Bedingungen woahr (true) ist, dann füahr die dritte Oonweisung aus.", - "CONTROLS_IF_MSG_IF": "wenn", - "CONTROLS_IF_MSG_ELSEIF": "orrer wenn", - "CONTROLS_IF_MSG_ELSE": "orrer", - "CONTROLS_IF_IF_TOOLTIP": "Hinzufüche, entferne orrer sortiere von Sektione", - "CONTROLS_IF_ELSEIF_TOOLTIP": "En weitre Bedingung hinzufüche.", - "CONTROLS_IF_ELSE_TOOLTIP": "En orrer Bedingung hinzufüche, füahrt en Oonweisung aus falls ken Bedingung zutrifft.", - "LOGIC_COMPARE_HELPURL": "https://hrx.wikipedia.org/wiki/Vergleich_%28Zahlen%29", - "LOGIC_COMPARE_TOOLTIP_EQ": "Ist woahr (true) wenn beide Wearte identisch sind.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Ist woahr (true) wenn beide Wearte unnerschiedlich sind.", - "LOGIC_COMPARE_TOOLTIP_LT": "Ist woahr (true) wenn der earschte Weart klener als der zwooite Weart ist.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Ist woahr (true) wenn der earscht Weart klener als orrer gleich gross wie zwooite Weart ist.", - "LOGIC_COMPARE_TOOLTIP_GT": "Ist woahr (true) wenn der erschte Weart grösser als der zwooite Weart ist.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Ist woahr (true) wenn der erschte Weart grösser als orrer gleich gross wie zwooite Weart ist.", - "LOGIC_OPERATION_TOOLTIP_AND": "Ist woahr (true) wenn beide Wearte woahr (true) sind.", - "LOGIC_OPERATION_AND": "und", - "LOGIC_OPERATION_TOOLTIP_OR": "Ist woahr (true) wenn en von der beide Wearte woahr (true) ist.", - "LOGIC_OPERATION_OR": "orrer", - "LOGIC_NEGATE_TITLE": "net %1", - "LOGIC_NEGATE_TOOLTIP": "Ist woahr (true) wenn der Ingäweweart falsch (false) ist. Ist falsch (false) wenn der Ingäweweart woahr (true) ist.", - "LOGIC_BOOLEAN_TRUE": "woahr", - "LOGIC_BOOLEAN_FALSE": "falsch", - "LOGIC_BOOLEAN_TOOLTIP": "Ist entweder woahr (true) orrer falsch (false)", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Is NULL.", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "wenn woahr", - "LOGIC_TERNARY_IF_FALSE": "wenn falsch", - "LOGIC_TERNARY_TOOLTIP": "Üwerprüft en Bedingung \"test\". Wenn die Bedingung woahr ist weerd der \"wenn woahr\" Weart zurückgeb, annerfalls der \"wenn falsch\" Weart", - "MATH_NUMBER_HELPURL": "https://hrx.wikipedia.org/wiki/Zoohl", - "MATH_NUMBER_TOOLTIP": "En Zoohl.", - "MATH_ARITHMETIC_HELPURL": "https://hrx.wikipedia.org/wiki/Grundrechenoort", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Ist die Summe zwooier Wearte.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ist die Differenz zwooier Wearte.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Ist das Produkt zwooier Wearte.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Ist der Quotient zwooier Wearte.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Ist der earschte Weart potenziert mit dem zoiten Weart.", - "MATH_SINGLE_HELPURL": "https://hrx.wikipedia.org/wiki/Quadratwoorzel", - "MATH_SINGLE_OP_ROOT": "Quadratwoorzel", - "MATH_SINGLE_TOOLTIP_ROOT": "Ist die Qudratwoorzel von en Weart.", - "MATH_SINGLE_OP_ABSOLUTE": "Absolutweart", - "MATH_SINGLE_TOOLTIP_ABS": "Ist der Absolutweart von en Weart.", - "MATH_SINGLE_TOOLTIP_NEG": "Negiert en Weart.", - "MATH_SINGLE_TOOLTIP_LN": "Ist der natüarliche Logarithmus von en Weart.", - "MATH_SINGLE_TOOLTIP_LOG10": "Ist der dekoodische Logarithmus von en Weart.", - "MATH_SINGLE_TOOLTIP_EXP": "Ist Weart von der Exponentialfunktion von en Weart.", - "MATH_SINGLE_TOOLTIP_POW10": "Rechnet 10 hoch Ingäbweart.", - "MATH_TRIG_HELPURL": "https://hrx.wikipedia.org/wiki/Trigonometrie", - "MATH_TRIG_TOOLTIP_SIN": "Ist der Sinus von en Winkel.", - "MATH_TRIG_TOOLTIP_COS": "Ist der Cosinus von en Winkel.", - "MATH_TRIG_TOOLTIP_TAN": "Ist der Tangens von en Winkel.", - "MATH_TRIG_TOOLTIP_ASIN": "Ist der Arcussinus von en Ingäbweart.", - "MATH_TRIG_TOOLTIP_ACOS": "Ist der Arcuscosinus von en Ingabweart.", - "MATH_TRIG_TOOLTIP_ATAN": "Ist der Arcustangens von en Ingäbweart.", - "MATH_CONSTANT_HELPURL": "https://hrx.wikipedia.org/wiki/Mathematische_Konstante", - "MATH_CONSTANT_TOOLTIP": "Mathematische Konstante wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich).", - "MATH_IS_EVEN": "ist grood", - "MATH_IS_ODD": "ist ungrood", - "MATH_IS_PRIME": "ist en Primenzoohl", - "MATH_IS_WHOLE": "ganze Zoohl", - "MATH_IS_POSITIVE": "ist positiv", - "MATH_IS_NEGATIVE": "ist negativ", - "MATH_IS_DIVISIBLE_BY": "ist telbar/kann getelt sin doorrich", - "MATH_IS_TOOLTIP": "Üwerprüft ob en Zoohl grood, ungrood, en Primenzoohl, ganzzoohlich, positiv, negativ orrer doorrich en zwooite Zoohl telbar ist. Gebt woahr (true) orrer falsch (false) zurück.", - "MATH_CHANGE_HELPURL": "https://hrx.wikipedia.org/wiki/Inkrement_und_Dekrement", - "MATH_CHANGE_TITLE": "mach höcher / erhöhe %1 um %2", - "MATH_CHANGE_TOOLTIP": "Addiert en Weart zur Variable \"%1\" hinzu.", - "MATH_ROUND_HELPURL": "https://hrx.wikipedia.org/wiki/Runden", - "MATH_ROUND_TOOLTIP": "En Zoohl uff orrer ab runde.", - "MATH_ROUND_OPERATOR_ROUND": "runde", - "MATH_ROUND_OPERATOR_ROUNDUP": "uff runde", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "ab runde", - "MATH_ONLIST_OPERATOR_SUM": "Summe von en List", - "MATH_ONLIST_TOOLTIP_SUM": "Ist die Summ aller Wearte in en List.", - "MATH_ONLIST_OPERATOR_MIN": "Minimalweart von en List", - "MATH_ONLIST_TOOLTIP_MIN": "Ist der klenste Weart in en List.", - "MATH_ONLIST_OPERATOR_MAX": "Maximalweart en List", - "MATH_ONLIST_TOOLTIP_MAX": "Ist der grösste Weart in en List.", - "MATH_ONLIST_OPERATOR_AVERAGE": "Mittelweart en List", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Ist der Doorrichschnittsweart von aller Wearte in en List.", - "MATH_ONLIST_OPERATOR_MEDIAN": "Median von en List", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Ist der Zentralweart von aller Wearte in en List.", - "MATH_ONLIST_OPERATOR_MODE": "Restweart von en List", - "MATH_ONLIST_TOOLTIP_MODE": "Findt den am häifichste voarkommend Weart in en List. Falls ken Weart öftersch voarkomme als all annre, weard die originale List zurückgeche", - "MATH_ONLIST_OPERATOR_STD_DEV": "Standart/Padrong Abweichung von en List", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Ist die standartiesierte/padronisierte Standartabweichung/Padrongabweichung von aller Wearte in der List", - "MATH_ONLIST_OPERATOR_RANDOM": "Zufallsweart von en List", - "MATH_ONLIST_TOOLTIP_RANDOM": "Geb en Zufallsweart aus der List zurück.", - "MATH_MODULO_HELPURL": "https://hrx.wikipedia.org/wiki/Modulo", - "MATH_MODULO_TITLE": "Rest von %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Der Rest noh en Division.", - "MATH_CONSTRAIN_TITLE": "begrenze %1 von %2 bis %3", - "MATH_CONSTRAIN_TOOLTIP": "Begrenzt den Weartebereich mittels von / bis Wearte. (inklusiv)", - "MATH_RANDOM_INT_HELPURL": "https://hrx.wikipedia.org/wiki/Zufallszahlen", - "MATH_RANDOM_INT_TITLE": "ganzoohlicher Zufallswearte zwischich %1 bis %2", - "MATH_RANDOM_INT_TOOLTIP": "Generier/erzeich en ganzähliche Zufallsweart zwischich zwooi Wearte (inklusiv).", - "MATH_RANDOM_FLOAT_HELPURL": "https://hex.wikipedia.org/wiki/Zufallszoohle", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "Zufallszoohl (0.0 -1.0)", - "MATH_RANDOM_FLOAT_TOOLTIP": "Generier/erzeich en Zufallszoohl zwischich 0.0 (inklusiv) und 1.0 (exklusiv).", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)https://hrx.wikipedia.org/wiki/Zeichenkette", - "TEXT_TEXT_TOOLTIP": "En Buchstoob, Text orrer Satz.", - "TEXT_JOIN_TITLE_CREATEWITH": "Erstell Text aus", - "TEXT_JOIN_TOOLTIP": "Erstellt en Text doorrich das verbinne von mehre Textelemente.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "verbinne", - "TEXT_CREATE_JOIN_TOOLTIP": "Hinzufüche, entfernne und sortiere von Elemente.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "En Element zum Text hinzufüche.", - "TEXT_APPEND_TITLE": "An %1 Text oonhänge %2", - "TEXT_APPEND_TOOLTIP": "Text an die Variable \"%1\" oonhänge.", - "TEXT_LENGTH_TITLE": "läng %1", - "TEXT_LENGTH_TOOLTIP": "Die Oonzoohl von Zeiche in enem Text. (inkl. Leerzeiche)", - "TEXT_ISEMPTY_TITLE": "%1 ist leer?", - "TEXT_ISEMPTY_TOOLTIP": "Ist woahr (true), wenn der Text leer ist.", - "TEXT_INDEXOF_TOOLTIP": "Findt das earste / letzte Voarkommniss von en Suchbegriffes in enem Text. Gebt die Position von dem Begriff orrer %1 zurück.", - "TEXT_INDEXOF_TITLE": "im Text %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "Such der Begriff sein earstes Voarkommniss", - "TEXT_INDEXOF_OPERATOR_LAST": "Suche der Begriff sein letztes Vorkommniss.", - "TEXT_CHARAT_FROM_START": "hol Buchstoob #", - "TEXT_CHARAT_FROM_END": "hol Buchstoob # von End", - "TEXT_CHARAT_FIRST": "hol earschte Buchstoob", - "TEXT_CHARAT_LAST": "hol letztes Wort", - "TEXT_CHARAT_RANDOM": "hol zufälliches Buchstoob", - "TEXT_CHARAT_TOOLTIP": "Extrahiear en Buchstoob von en spezifizierte Position.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Schickt en bestimmstes Tel von dem Text retuar.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in Text", - "TEXT_GET_SUBSTRING_START_FROM_START": "hol substring Buchstoob #te", - "TEXT_GET_SUBSTRING_START_FROM_END": "hol #te Buchstoob von hinne", - "TEXT_GET_SUBSTRING_START_FIRST": "earschte Buchstoob", - "TEXT_GET_SUBSTRING_END_FROM_START": "bis Buchstoob #te", - "TEXT_GET_SUBSTRING_END_FROM_END": "bis #te Buchstoob von hinne", - "TEXT_GET_SUBSTRING_END_LAST": "bis letzte Buchstoob", - "TEXT_CHANGECASE_TOOLTIP": "Wandelt Schreibweise von Texte um, in Grossbuchstoobe, Klenbuchstoobe orrer den earste Buchstoob von jedes Wort gross und die annre klen.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "umwandle in GROSSBUCHSTOOBE", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "umwandle in klenbuchstoobe", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "umwandle in Wörter", - "TEXT_TRIM_TOOLTIP": "Entfernt Leerzeiche vom Oonfang und / orrer End von en Text.", - "TEXT_TRIM_OPERATOR_BOTH": "entfern Leerzeiche von Oonfang und End Seite", - "TEXT_TRIM_OPERATOR_LEFT": "entferne Leerzeiche von Oonfang Seite", - "TEXT_TRIM_OPERATOR_RIGHT": "entferne Leerzeiche von End Seite von", - "TEXT_PRINT_TITLE": "Ausgäb %1", - "TEXT_PRINT_TOOLTIP": "Geb den Inhalt von en Variable aus.", - "TEXT_PROMPT_TYPE_TEXT": "Frocht noh Text mit Hinweis", - "TEXT_PROMPT_TYPE_NUMBER": "Frächt noh Zoohl mit Hinweis", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Frocht den Benutzer noh en Zoohl.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Frocht den Benutzer noh enem Text.", - "LISTS_CREATE_EMPTY_TITLE": "Generier/erzeich en leear List", - "LISTS_CREATE_EMPTY_TOOLTIP": "Generier/erzeich en leear List ohne Inhalt.", - "LISTS_CREATE_WITH_TOOLTIP": "Generier/erzeich en List mit konfigurierte Elemente.", - "LISTS_CREATE_WITH_INPUT_WITH": "Erzeich List mit", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "List", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Hinzufüche, entferne und sortiere von Elemente.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "En Element zur List hinzufüche.", - "LISTS_REPEAT_TOOLTIP": "Erzeicht en List mit en variable Oonzoohl von Elemente", - "LISTS_REPEAT_TITLE": "Erzich List mit Element %1 wiederhol das %2 mol", - "LISTS_LENGTH_TITLE": "länge %1", - "LISTS_LENGTH_TOOLTIP": "Die Oonzoohl von Elemente in der List.", - "LISTS_ISEMPTY_TITLE": "%1 ist leear?", - "LISTS_ISEMPTY_TOOLTIP": "Ist woahr (true), wenn die List leear ist.", - "LISTS_INLIST": "in der List", - "LISTS_INDEX_OF_FIRST": "Such earstes Voarkommniss", - "LISTS_INDEX_OF_LAST": "Such letztes Voarkommniss", - "LISTS_INDEX_OF_TOOLTIP": "Sucht die Position (index) von en Element in der List Gebt %1 zurück wenn nixs gefunn woard.", - "LISTS_GET_INDEX_GET": "Nehm", - "LISTS_GET_INDEX_GET_REMOVE": "Nehm und entfern", - "LISTS_GET_INDEX_REMOVE": "Entfern", - "LISTS_GET_INDEX_FROM_END": "#te von hinne", - "LISTS_GET_INDEX_FIRST": "earste", - "LISTS_GET_INDEX_LAST": "letzte", - "LISTS_GET_INDEX_RANDOM": "zufälliches", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ist das earschte Element.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ist das letzte Element.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Extrahiert das Element zu en definierte Stell von der List.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Extrahiert das earste Element von der List.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Extrahiert das letzte Element von der List.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Extrahiert en zufälliches Element von der List.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Extrahiert und entfernt das Element zu en definierte Stell von der List.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Extrahiert und entfernt das earste Element von der List.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Extrahiert und entfernt das letzte Element von der List.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Extrahiert und entfernt en zufälliches Element von der List.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Entfernt das Element zu en definierte Stell von der List.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Entfernt das earste Element von der List.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Entfernt das letzte Element von der List.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Entfernt en zufälliches Element von der List.", - "LISTS_SET_INDEX_SET": "setz", - "LISTS_SET_INDEX_INSERT": "tue ren setz an", - "LISTS_SET_INDEX_INPUT_TO": "uff", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setzt das Element zu en definierte Stell in en List.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Sets the first item in a list.Setzt das earschte Element an en list.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Setzt das letzte Element an en List.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setzt en zufälliches Element an en List.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Tut das Element ren setze an en definierte Stell an en List.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Tut das Element an en Oonfang von en List ren setze.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Oonhängt das Element zu en List sei End.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Tut das Element zufällich an en List ren setze.", - "LISTS_GET_SUBLIST_START_FROM_START": "hol Unnerlist von #", - "LISTS_GET_SUBLIST_START_FROM_END": "hol Unnerliste von # vom End", - "LISTS_GET_SUBLIST_START_FIRST": "hol Unnerliste vom Earste", - "LISTS_GET_SUBLIST_END_FROM_START": "zu #", - "LISTS_GET_SUBLIST_END_FROM_END": "zu # vom End", - "LISTS_GET_SUBLIST_END_LAST": "zum Letzte", - "LISTS_GET_SUBLIST_TOOLTIP": "Generiert en Kopie von en definierte Tel von en List.", - "VARIABLES_GET_TOOLTIP": "Gebt der Variable sein Weart zurück.", - "VARIABLES_GET_CREATE_SET": "Generier/erzeiche \"Schreibe %1\"", - "VARIABLES_SET": "Schreib %1 zu %2", - "VARIABLES_SET_TOOLTIP": "Setzt en Variable sei Weart.", - "VARIABLES_SET_CREATE_GET": "Generier/erzeich \"Lese %1\"", - "PROCEDURES_DEFNORETURN_TITLE": "zu", - "PROCEDURES_DEFNORETURN_PROCEDURE": "Funktionsblock", - "PROCEDURES_BEFORE_PARAMS": "mit:", - "PROCEDURES_CALL_BEFORE_PARAMS": "mit:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "En Funktionsblock ohne Rückgäbweart.", - "PROCEDURES_DEFRETURN_RETURN": "geb zurück", - "PROCEDURES_DEFRETURN_TOOLTIP": "En Funktionsblock mit Rückgäbweart.", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Warnung: die Funktionsblock hot doppelt Parameter.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Ruf en Funktionsblock ohne Rückgäweart uff.", - "PROCEDURES_CALLRETURN_HELPURL": "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29", - "PROCEDURES_CALLRETURN_TOOLTIP": "Ruf en Funktionsblock mit Rückgäbweart uff.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "Parameter", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Variable:", - "PROCEDURES_MUTATORARG_TITLE": "Markiear Funktionsblock", - "PROCEDURES_MUTATORARG_TOOLTIP": "Generier/erzeich \"Uffruf %1\"", - "PROCEDURES_HIGHLIGHT_DEF": "Markiear Funktionsblock", - "PROCEDURES_CREATE_DO": "Generier/erzeich \"Uffruf %1\"", - "PROCEDURES_IFRETURN_TOOLTIP": "Wenn der earste Weart woahr (true) ist, Geb den zwooite Weart zurück.", - "PROCEDURES_IFRETURN_WARNING": "Warnung: Der Block därref nuar innich en Funktionsblock genutzt sin.", - "DIALOG_OK": "Okay", - "DIALOG_CANCEL": "Abbreche" -} +{ + "@metadata": { + "authors": [ + "Paul Beppler" + ] + }, + "VARIABLES_DEFAULT_NAME": "Element", + "DUPLICATE_BLOCK": "Kopieren", + "ADD_COMMENT": "Kommentar hinzufüche", + "REMOVE_COMMENT": "Kommentar entferne", + "EXTERNAL_INPUTS": "External Inputsexterne Ingänge", + "INLINE_INPUTS": "interne Ingänge", + "DELETE_BLOCK": "Block lösche", + "DELETE_X_BLOCKS": "Block %1 lösche", + "DELETE_ALL_BLOCKS": "All %1 Bausten lösche?", + "COLLAPSE_BLOCK": "Block zusammerfalte", + "COLLAPSE_ALL": "Blocke zusammerfalte", + "EXPAND_BLOCK": "Block entfalte", + "EXPAND_ALL": "Blocke expandiere", + "DISABLE_BLOCK": "Block deaktivieren", + "ENABLE_BLOCK": "Block aktivieren", + "HELP": "Hellef", + "CHANGE_VALUE_TITLE": "Neie Variable...", + "RENAME_VARIABLE": "Die neie Variable sei Noome:", + "RENAME_VARIABLE_TITLE": "All \"%1\" Variable umbenenne in:", + "NEW_VARIABLE": "Neie Variable...", + "NEW_VARIABLE_TITLE": "Die neie Variable sei Noome:", + "COLOUR_PICKER_HELPURL": "https://hrx.wikipedia.org/wiki/Farreb", + "COLOUR_PICKER_TOOLTIP": "Wähl en Farreb von der Palett.", + "COLOUR_RANDOM_TITLE": "zufälliche Farwe", + "COLOUR_RANDOM_TOOLTIP": "Wähl en Farreb noh dem Zufallsprinzip.", + "COLOUR_RGB_TITLE": "Färreb mit", + "COLOUR_RGB_RED": "rot", + "COLOUR_RGB_GREEN": "grün", + "COLOUR_RGB_BLUE": "blau", + "COLOUR_RGB_TOOLTIP": "Kreiere ene Farreb mit sellrbst definierte rot, grün und blau Wearte. All Wearte müsse zwischich 0 und 100 liehe.", + "COLOUR_BLEND_TITLE": "misch", + "COLOUR_BLEND_COLOUR1": "Farreb 1", + "COLOUR_BLEND_COLOUR2": "mit Farreb 2", + "COLOUR_BLEND_RATIO": "im Verhältniss", + "COLOUR_BLEND_TOOLTIP": "Vermischt 2 Farwe mit konfigurierbare Farrebverhältniss (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://hrx.wikipedia.org/wiki/For-Schleif", + "CONTROLS_REPEAT_TITLE": "wiederhol %1 mol", + "CONTROLS_REPEAT_INPUT_DO": "mach", + "CONTROLS_REPEAT_TOOLTIP": "En Oonweisung meahrfach ausführe.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Repetier solang", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "Repetiere bis", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Füahr die Oonweisung solang aus wie die Bedingung woahr (true) ist.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Füahr die Oonweisung solang aus wie die Bedingung falsch (false) ist.", + "CONTROLS_FOR_TOOLTIP": "Zähl die Variable \"%1\" von enem Startweart bis zu enem Zielweart und füahrefür jede Weart en Oonweisung aus.", + "CONTROLS_FOR_TITLE": "Zähl %1 von %2 bis %3 mit %4", + "CONTROLS_FOREACH_TITLE": "Für Weart %1 aus der List %2", + "CONTROLS_FOREACH_TOOLTIP": "Füahr en Oonweisung für jede Weart in der List aus und setzt dabei die Variable \"%1\" uff den aktuelle List Weart.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ausbreche aus der Schleif", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "mit der nächste Iteration fortfoohre aus der Schleifa", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Die umgebne Schleif beenne.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Die Oonweisung abbreche und mit der nächste Schleifiteration fortfoohre.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Warnung: Die block sollt nuar in en Schleif verwennet sin.", + "CONTROLS_IF_TOOLTIP_1": "Wenn en Bedingung woahr (true) ist, dann füahr en Oonweisung aus.", + "CONTROLS_IF_TOOLTIP_2": "Wenn en Bedingung woahr (true) ist, dann füahr die earscht Oonweisung aus. Ansonscht füahr die zwooite Oonweisung aus.", + "CONTROLS_IF_TOOLTIP_3": "Wenn der erschte Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus.", + "CONTROLS_IF_TOOLTIP_4": "Wenn der erscht Bedingung woahr (true) ist, dann füahr die erschte Oonweisung aus. Orrer wenn die zwooite Bedingung woahr (true) ist, dann füahr die zwooite Oonweisung aus. Falls ken der beide Bedingungen woahr (true) ist, dann füahr die dritte Oonweisung aus.", + "CONTROLS_IF_MSG_IF": "wenn", + "CONTROLS_IF_MSG_ELSEIF": "orrer wenn", + "CONTROLS_IF_MSG_ELSE": "orrer", + "CONTROLS_IF_IF_TOOLTIP": "Hinzufüche, entferne orrer sortiere von Sektione", + "CONTROLS_IF_ELSEIF_TOOLTIP": "En weitre Bedingung hinzufüche.", + "CONTROLS_IF_ELSE_TOOLTIP": "En orrer Bedingung hinzufüche, füahrt en Oonweisung aus falls ken Bedingung zutrifft.", + "LOGIC_COMPARE_HELPURL": "https://hrx.wikipedia.org/wiki/Vergleich_%28Zahlen%29", + "LOGIC_COMPARE_TOOLTIP_EQ": "Ist woahr (true) wenn beide Wearte identisch sind.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Ist woahr (true) wenn beide Wearte unnerschiedlich sind.", + "LOGIC_COMPARE_TOOLTIP_LT": "Ist woahr (true) wenn der earschte Weart klener als der zwooite Weart ist.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Ist woahr (true) wenn der earscht Weart klener als orrer gleich gross wie zwooite Weart ist.", + "LOGIC_COMPARE_TOOLTIP_GT": "Ist woahr (true) wenn der erschte Weart grösser als der zwooite Weart ist.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Ist woahr (true) wenn der erschte Weart grösser als orrer gleich gross wie zwooite Weart ist.", + "LOGIC_OPERATION_TOOLTIP_AND": "Ist woahr (true) wenn beide Wearte woahr (true) sind.", + "LOGIC_OPERATION_AND": "und", + "LOGIC_OPERATION_TOOLTIP_OR": "Ist woahr (true) wenn en von der beide Wearte woahr (true) ist.", + "LOGIC_OPERATION_OR": "orrer", + "LOGIC_NEGATE_TITLE": "net %1", + "LOGIC_NEGATE_TOOLTIP": "Ist woahr (true) wenn der Ingäweweart falsch (false) ist. Ist falsch (false) wenn der Ingäweweart woahr (true) ist.", + "LOGIC_BOOLEAN_TRUE": "woahr", + "LOGIC_BOOLEAN_FALSE": "falsch", + "LOGIC_BOOLEAN_TOOLTIP": "Ist entweder woahr (true) orrer falsch (false)", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Is NULL.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "wenn woahr", + "LOGIC_TERNARY_IF_FALSE": "wenn falsch", + "LOGIC_TERNARY_TOOLTIP": "Üwerprüft en Bedingung \"test\". Wenn die Bedingung woahr ist weerd der \"wenn woahr\" Weart zurückgeb, annerfalls der \"wenn falsch\" Weart", + "MATH_NUMBER_HELPURL": "https://hrx.wikipedia.org/wiki/Zoohl", + "MATH_NUMBER_TOOLTIP": "En Zoohl.", + "MATH_ARITHMETIC_HELPURL": "https://hrx.wikipedia.org/wiki/Grundrechenoort", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Ist die Summe zwooier Wearte.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ist die Differenz zwooier Wearte.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Ist das Produkt zwooier Wearte.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Ist der Quotient zwooier Wearte.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Ist der earschte Weart potenziert mit dem zoiten Weart.", + "MATH_SINGLE_HELPURL": "https://hrx.wikipedia.org/wiki/Quadratwoorzel", + "MATH_SINGLE_OP_ROOT": "Quadratwoorzel", + "MATH_SINGLE_TOOLTIP_ROOT": "Ist die Qudratwoorzel von en Weart.", + "MATH_SINGLE_OP_ABSOLUTE": "Absolutweart", + "MATH_SINGLE_TOOLTIP_ABS": "Ist der Absolutweart von en Weart.", + "MATH_SINGLE_TOOLTIP_NEG": "Negiert en Weart.", + "MATH_SINGLE_TOOLTIP_LN": "Ist der natüarliche Logarithmus von en Weart.", + "MATH_SINGLE_TOOLTIP_LOG10": "Ist der dekoodische Logarithmus von en Weart.", + "MATH_SINGLE_TOOLTIP_EXP": "Ist Weart von der Exponentialfunktion von en Weart.", + "MATH_SINGLE_TOOLTIP_POW10": "Rechnet 10 hoch Ingäbweart.", + "MATH_TRIG_HELPURL": "https://hrx.wikipedia.org/wiki/Trigonometrie", + "MATH_TRIG_TOOLTIP_SIN": "Ist der Sinus von en Winkel.", + "MATH_TRIG_TOOLTIP_COS": "Ist der Cosinus von en Winkel.", + "MATH_TRIG_TOOLTIP_TAN": "Ist der Tangens von en Winkel.", + "MATH_TRIG_TOOLTIP_ASIN": "Ist der Arcussinus von en Ingäbweart.", + "MATH_TRIG_TOOLTIP_ACOS": "Ist der Arcuscosinus von en Ingabweart.", + "MATH_TRIG_TOOLTIP_ATAN": "Ist der Arcustangens von en Ingäbweart.", + "MATH_CONSTANT_HELPURL": "https://hrx.wikipedia.org/wiki/Mathematische_Konstante", + "MATH_CONSTANT_TOOLTIP": "Mathematische Konstante wie: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) oder ∞ (unendlich).", + "MATH_IS_EVEN": "ist grood", + "MATH_IS_ODD": "ist ungrood", + "MATH_IS_PRIME": "ist en Primenzoohl", + "MATH_IS_WHOLE": "ganze Zoohl", + "MATH_IS_POSITIVE": "ist positiv", + "MATH_IS_NEGATIVE": "ist negativ", + "MATH_IS_DIVISIBLE_BY": "ist telbar/kann getelt sin doorrich", + "MATH_IS_TOOLTIP": "Üwerprüft ob en Zoohl grood, ungrood, en Primenzoohl, ganzzoohlich, positiv, negativ orrer doorrich en zwooite Zoohl telbar ist. Gebt woahr (true) orrer falsch (false) zurück.", + "MATH_CHANGE_HELPURL": "https://hrx.wikipedia.org/wiki/Inkrement_und_Dekrement", + "MATH_CHANGE_TITLE": "mach höcher / erhöhe %1 um %2", + "MATH_CHANGE_TOOLTIP": "Addiert en Weart zur Variable \"%1\" hinzu.", + "MATH_ROUND_HELPURL": "https://hrx.wikipedia.org/wiki/Runden", + "MATH_ROUND_TOOLTIP": "En Zoohl uff orrer ab runde.", + "MATH_ROUND_OPERATOR_ROUND": "runde", + "MATH_ROUND_OPERATOR_ROUNDUP": "uff runde", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "ab runde", + "MATH_ONLIST_OPERATOR_SUM": "Summe von en List", + "MATH_ONLIST_TOOLTIP_SUM": "Ist die Summ aller Wearte in en List.", + "MATH_ONLIST_OPERATOR_MIN": "Minimalweart von en List", + "MATH_ONLIST_TOOLTIP_MIN": "Ist der klenste Weart in en List.", + "MATH_ONLIST_OPERATOR_MAX": "Maximalweart en List", + "MATH_ONLIST_TOOLTIP_MAX": "Ist der grösste Weart in en List.", + "MATH_ONLIST_OPERATOR_AVERAGE": "Mittelweart en List", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Ist der Doorrichschnittsweart von aller Wearte in en List.", + "MATH_ONLIST_OPERATOR_MEDIAN": "Median von en List", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Ist der Zentralweart von aller Wearte in en List.", + "MATH_ONLIST_OPERATOR_MODE": "Restweart von en List", + "MATH_ONLIST_TOOLTIP_MODE": "Findt den am häifichste voarkommend Weart in en List. Falls ken Weart öftersch voarkomme als all annre, weard die originale List zurückgeche", + "MATH_ONLIST_OPERATOR_STD_DEV": "Standart/Padrong Abweichung von en List", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Ist die standartiesierte/padronisierte Standartabweichung/Padrongabweichung von aller Wearte in der List", + "MATH_ONLIST_OPERATOR_RANDOM": "Zufallsweart von en List", + "MATH_ONLIST_TOOLTIP_RANDOM": "Geb en Zufallsweart aus der List zurück.", + "MATH_MODULO_HELPURL": "https://hrx.wikipedia.org/wiki/Modulo", + "MATH_MODULO_TITLE": "Rest von %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Der Rest noh en Division.", + "MATH_CONSTRAIN_TITLE": "begrenze %1 von %2 bis %3", + "MATH_CONSTRAIN_TOOLTIP": "Begrenzt den Weartebereich mittels von / bis Wearte. (inklusiv)", + "MATH_RANDOM_INT_HELPURL": "https://hrx.wikipedia.org/wiki/Zufallszahlen", + "MATH_RANDOM_INT_TITLE": "ganzoohlicher Zufallswearte zwischich %1 bis %2", + "MATH_RANDOM_INT_TOOLTIP": "Generier/erzeich en ganzähliche Zufallsweart zwischich zwooi Wearte (inklusiv).", + "MATH_RANDOM_FLOAT_HELPURL": "https://hex.wikipedia.org/wiki/Zufallszoohle", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "Zufallszoohl (0.0 -1.0)", + "MATH_RANDOM_FLOAT_TOOLTIP": "Generier/erzeich en Zufallszoohl zwischich 0.0 (inklusiv) und 1.0 (exklusiv).", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)https://hrx.wikipedia.org/wiki/Zeichenkette", + "TEXT_TEXT_TOOLTIP": "En Buchstoob, Text orrer Satz.", + "TEXT_JOIN_TITLE_CREATEWITH": "Erstell Text aus", + "TEXT_JOIN_TOOLTIP": "Erstellt en Text doorrich das verbinne von mehre Textelemente.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "verbinne", + "TEXT_CREATE_JOIN_TOOLTIP": "Hinzufüche, entfernne und sortiere von Elemente.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "En Element zum Text hinzufüche.", + "TEXT_APPEND_TITLE": "An %1 Text oonhänge %2", + "TEXT_APPEND_TOOLTIP": "Text an die Variable \"%1\" oonhänge.", + "TEXT_LENGTH_TITLE": "läng %1", + "TEXT_LENGTH_TOOLTIP": "Die Oonzoohl von Zeiche in enem Text. (inkl. Leerzeiche)", + "TEXT_ISEMPTY_TITLE": "%1 ist leer?", + "TEXT_ISEMPTY_TOOLTIP": "Ist woahr (true), wenn der Text leer ist.", + "TEXT_INDEXOF_TOOLTIP": "Findt das earste / letzte Voarkommniss von en Suchbegriffes in enem Text. Gebt die Position von dem Begriff orrer %1 zurück.", + "TEXT_INDEXOF_TITLE": "im Text %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "Such der Begriff sein earstes Voarkommniss", + "TEXT_INDEXOF_OPERATOR_LAST": "Suche der Begriff sein letztes Vorkommniss.", + "TEXT_CHARAT_FROM_START": "hol Buchstoob #", + "TEXT_CHARAT_FROM_END": "hol Buchstoob # von End", + "TEXT_CHARAT_FIRST": "hol earschte Buchstoob", + "TEXT_CHARAT_LAST": "hol letztes Wort", + "TEXT_CHARAT_RANDOM": "hol zufälliches Buchstoob", + "TEXT_CHARAT_TOOLTIP": "Extrahiear en Buchstoob von en spezifizierte Position.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Schickt en bestimmstes Tel von dem Text retuar.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in Text", + "TEXT_GET_SUBSTRING_START_FROM_START": "hol substring Buchstoob #te", + "TEXT_GET_SUBSTRING_START_FROM_END": "hol #te Buchstoob von hinne", + "TEXT_GET_SUBSTRING_START_FIRST": "earschte Buchstoob", + "TEXT_GET_SUBSTRING_END_FROM_START": "bis Buchstoob #te", + "TEXT_GET_SUBSTRING_END_FROM_END": "bis #te Buchstoob von hinne", + "TEXT_GET_SUBSTRING_END_LAST": "bis letzte Buchstoob", + "TEXT_CHANGECASE_TOOLTIP": "Wandelt Schreibweise von Texte um, in Grossbuchstoobe, Klenbuchstoobe orrer den earste Buchstoob von jedes Wort gross und die annre klen.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "umwandle in GROSSBUCHSTOOBE", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "umwandle in klenbuchstoobe", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "umwandle in Wörter", + "TEXT_TRIM_TOOLTIP": "Entfernt Leerzeiche vom Oonfang und / orrer End von en Text.", + "TEXT_TRIM_OPERATOR_BOTH": "entfern Leerzeiche von Oonfang und End Seite", + "TEXT_TRIM_OPERATOR_LEFT": "entferne Leerzeiche von Oonfang Seite", + "TEXT_TRIM_OPERATOR_RIGHT": "entferne Leerzeiche von End Seite von", + "TEXT_PRINT_TITLE": "Ausgäb %1", + "TEXT_PRINT_TOOLTIP": "Geb den Inhalt von en Variable aus.", + "TEXT_PROMPT_TYPE_TEXT": "Frocht noh Text mit Hinweis", + "TEXT_PROMPT_TYPE_NUMBER": "Frächt noh Zoohl mit Hinweis", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Frocht den Benutzer noh en Zoohl.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Frocht den Benutzer noh enem Text.", + "LISTS_CREATE_EMPTY_TITLE": "Generier/erzeich en leear List", + "LISTS_CREATE_EMPTY_TOOLTIP": "Generier/erzeich en leear List ohne Inhalt.", + "LISTS_CREATE_WITH_TOOLTIP": "Generier/erzeich en List mit konfigurierte Elemente.", + "LISTS_CREATE_WITH_INPUT_WITH": "Erzeich List mit", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "List", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Hinzufüche, entferne und sortiere von Elemente.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "En Element zur List hinzufüche.", + "LISTS_REPEAT_TOOLTIP": "Erzeicht en List mit en variable Oonzoohl von Elemente", + "LISTS_REPEAT_TITLE": "Erzich List mit Element %1 wiederhol das %2 mol", + "LISTS_LENGTH_TITLE": "länge %1", + "LISTS_LENGTH_TOOLTIP": "Die Oonzoohl von Elemente in der List.", + "LISTS_ISEMPTY_TITLE": "%1 ist leear?", + "LISTS_ISEMPTY_TOOLTIP": "Ist woahr (true), wenn die List leear ist.", + "LISTS_INLIST": "in der List", + "LISTS_INDEX_OF_FIRST": "Such earstes Voarkommniss", + "LISTS_INDEX_OF_LAST": "Such letztes Voarkommniss", + "LISTS_INDEX_OF_TOOLTIP": "Sucht die Position (index) von en Element in der List Gebt %1 zurück wenn nixs gefunn woard.", + "LISTS_GET_INDEX_GET": "Nehm", + "LISTS_GET_INDEX_GET_REMOVE": "Nehm und entfern", + "LISTS_GET_INDEX_REMOVE": "Entfern", + "LISTS_GET_INDEX_FROM_END": "#te von hinne", + "LISTS_GET_INDEX_FIRST": "earste", + "LISTS_GET_INDEX_LAST": "letzte", + "LISTS_GET_INDEX_RANDOM": "zufälliches", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ist das earschte Element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ist das letzte Element.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Extrahiert das Element zu en definierte Stell von der List.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Extrahiert das earste Element von der List.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Extrahiert das letzte Element von der List.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Extrahiert en zufälliches Element von der List.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Extrahiert und entfernt das Element zu en definierte Stell von der List.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Extrahiert und entfernt das earste Element von der List.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Extrahiert und entfernt das letzte Element von der List.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Extrahiert und entfernt en zufälliches Element von der List.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Entfernt das Element zu en definierte Stell von der List.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Entfernt das earste Element von der List.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Entfernt das letzte Element von der List.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Entfernt en zufälliches Element von der List.", + "LISTS_SET_INDEX_SET": "setz", + "LISTS_SET_INDEX_INSERT": "tue ren setz an", + "LISTS_SET_INDEX_INPUT_TO": "uff", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setzt das Element zu en definierte Stell in en List.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Sets the first item in a list.Setzt das earschte Element an en list.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Setzt das letzte Element an en List.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setzt en zufälliches Element an en List.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Tut das Element ren setze an en definierte Stell an en List.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Tut das Element an en Oonfang von en List ren setze.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Oonhängt das Element zu en List sei End.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Tut das Element zufällich an en List ren setze.", + "LISTS_GET_SUBLIST_START_FROM_START": "hol Unnerlist von #", + "LISTS_GET_SUBLIST_START_FROM_END": "hol Unnerliste von # vom End", + "LISTS_GET_SUBLIST_START_FIRST": "hol Unnerliste vom Earste", + "LISTS_GET_SUBLIST_END_FROM_START": "zu #", + "LISTS_GET_SUBLIST_END_FROM_END": "zu # vom End", + "LISTS_GET_SUBLIST_END_LAST": "zum Letzte", + "LISTS_GET_SUBLIST_TOOLTIP": "Generiert en Kopie von en definierte Tel von en List.", + "VARIABLES_GET_TOOLTIP": "Gebt der Variable sein Weart zurück.", + "VARIABLES_GET_CREATE_SET": "Generier/erzeiche \"Schreibe %1\"", + "VARIABLES_SET": "Schreib %1 zu %2", + "VARIABLES_SET_TOOLTIP": "Setzt en Variable sei Weart.", + "VARIABLES_SET_CREATE_GET": "Generier/erzeich \"Lese %1\"", + "PROCEDURES_DEFNORETURN_TITLE": "zu", + "PROCEDURES_DEFNORETURN_PROCEDURE": "Funktionsblock", + "PROCEDURES_BEFORE_PARAMS": "mit:", + "PROCEDURES_CALL_BEFORE_PARAMS": "mit:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "En Funktionsblock ohne Rückgäbweart.", + "PROCEDURES_DEFRETURN_RETURN": "geb zurück", + "PROCEDURES_DEFRETURN_TOOLTIP": "En Funktionsblock mit Rückgäbweart.", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Warnung: die Funktionsblock hot doppelt Parameter.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Ruf en Funktionsblock ohne Rückgäweart uff.", + "PROCEDURES_CALLRETURN_HELPURL": "https://hrx.wikipedia.org/wiki/Prozedur_%28Programmierung%29", + "PROCEDURES_CALLRETURN_TOOLTIP": "Ruf en Funktionsblock mit Rückgäbweart uff.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "Parameter", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Variable:", + "PROCEDURES_MUTATORARG_TITLE": "Markiear Funktionsblock", + "PROCEDURES_MUTATORARG_TOOLTIP": "Generier/erzeich \"Uffruf %1\"", + "PROCEDURES_HIGHLIGHT_DEF": "Markiear Funktionsblock", + "PROCEDURES_CREATE_DO": "Generier/erzeich \"Uffruf %1\"", + "PROCEDURES_IFRETURN_TOOLTIP": "Wenn der earste Weart woahr (true) ist, Geb den zwooite Weart zurück.", + "PROCEDURES_IFRETURN_WARNING": "Warnung: Der Block därref nuar innich en Funktionsblock genutzt sin.", + "DIALOG_OK": "Okay", + "DIALOG_CANCEL": "Abbreche" +} diff --git a/msg/json/hu.json b/msg/json/hu.json index c85fee543ff..dc0842854c1 100644 --- a/msg/json/hu.json +++ b/msg/json/hu.json @@ -1,352 +1,352 @@ -{ - "@metadata": { - "authors": [ - "BanKris", - "Csega", - "Dj", - "Espertus", - "Fitoschido", - "Grin", - "Lajthabalazs", - "MeskoBalazs", - "Máté", - "Notramo", - "Rodrigo", - "Tacsipacsi", - "Takács Viktor László", - "Urbalazs", - "ViDam" - ] - }, - "VARIABLES_DEFAULT_NAME": "változó", - "UNNAMED_KEY": "névtelen", - "TODAY": "Ma", - "DUPLICATE_BLOCK": "Másolat", - "ADD_COMMENT": "Megjegyzés hozzáadása", - "REMOVE_COMMENT": "Megjegyzés eltávolítása", - "EXTERNAL_INPUTS": "Külső kapcsolatok", - "INLINE_INPUTS": "Belső kapcsolatok", - "DELETE_BLOCK": "Blokk törlése", - "DELETE_X_BLOCKS": "%1 blokk törlése", - "DELETE_ALL_BLOCKS": "Az összes %1 blokk törlése?", - "CLEAN_UP": "Blokkok kiürítése", - "COLLAPSE_BLOCK": "Blokk összecsukása", - "COLLAPSE_ALL": "Blokkok összecsukása", - "EXPAND_BLOCK": "Blokk kinyitása", - "EXPAND_ALL": "Blokkok kinyitása", - "DISABLE_BLOCK": "Blokk letiltása", - "ENABLE_BLOCK": "Blokk engedélyezése", - "HELP": "Súgó", - "UNDO": "Visszavonás", - "REDO": "Újra", - "CHANGE_VALUE_TITLE": "Érték módosítása:", - "RENAME_VARIABLE": "Változó átnevezése…", - "RENAME_VARIABLE_TITLE": "Minden „%1” változó átnevezése erre:", - "NEW_VARIABLE": "Változó létrehozása…", - "NEW_VARIABLE_TYPE_TITLE": "Az új változó típusa:", - "NEW_VARIABLE_TITLE": "Az új változó neve:", - "VARIABLE_ALREADY_EXISTS": "A(z) „%1” nevű változó már létezik.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Egy „%1” nevű változó már létezik egy másik típussal: „%2”.", - "DELETE_VARIABLE_CONFIRMATION": "A(z) „%2” változó %1 használatának törlése?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "A(z) „%1” változó nem törölhető, mert része a(z) „%2” függvény definíciójának.", - "DELETE_VARIABLE": "A(z) „%1” változó törlése", - "COLOUR_PICKER_HELPURL": "https://hu.wikipedia.org/wiki/Szín", - "COLOUR_PICKER_TOOLTIP": "Válassz színt a palettáról.", - "COLOUR_RANDOM_TITLE": "véletlen szín", - "COLOUR_RANDOM_TOOLTIP": "Véletlenszerűen kiválasztott szín.", - "COLOUR_RGB_TITLE": "Szín", - "COLOUR_RGB_RED": "vörös", - "COLOUR_RGB_GREEN": "zöld", - "COLOUR_RGB_BLUE": "kék", - "COLOUR_RGB_TOOLTIP": "Szín előállítása a megadott vörös, zöld, és kék értékekkel. Minden értéknek 0 és 100 közé kell esnie.", - "COLOUR_BLEND_TITLE": "színkeverés", - "COLOUR_BLEND_COLOUR1": "szín 1", - "COLOUR_BLEND_COLOUR2": "szín 2", - "COLOUR_BLEND_RATIO": "arány", - "COLOUR_BLEND_TOOLTIP": "Két színt kever össze a megadott arányban (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://hu.wikipedia.org/wiki/Ciklus_(programoz%C3%A1s)#Sz.C3.A1ml.C3.A1l.C3.B3s_.28FOR.29_ciklus", - "CONTROLS_REPEAT_TITLE": "ismételd %1 alkalommal", - "CONTROLS_REPEAT_INPUT_DO": "", - "CONTROLS_REPEAT_TOOLTIP": "Megadott kódrészlet ismételt végrehajtása.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ismételd amíg", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ismételd amíg", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Amíg a feltétel igaz, végrehajtja az utasításokat.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Amíg a feltétel hamis, végrehajtja az utasításokat.", - "CONTROLS_FOR_TOOLTIP": "A(z) '%1' változó felveszi a kezdőérték és a végérték közötti értékeket a meghatározott lépésközzel. Eközben a meghatározott blokkokat hajtja végre.", - "CONTROLS_FOR_TITLE": "számolj %1 értékével %2 és %3 között %4 lépésközzel", - "CONTROLS_FOREACH_TITLE": "minden %1 elemre a %2 listában", - "CONTROLS_FOREACH_TOOLTIP": "A '%1' változó minden lépésben megkapja a lista adott elemének értékét, és végrehajt vele néhány utasítást.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "befejezi az ismétlést", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "folytatja a következővel", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Megszakítja az utasítást tartalmazó ciklust.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Kihagyja a ciklus további részét, és elölről kezdi a következő elemmel.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Figyelem: Ez a blokk csak cikluson belül használható.", - "CONTROLS_IF_TOOLTIP_1": "Ha a kifejezés igaz, akkor végrehajtja az utasításokat.", - "CONTROLS_IF_TOOLTIP_2": "Ha a kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben a második utasításblokk kerül végrehajtásra.", - "CONTROLS_IF_TOOLTIP_3": "Ha az első kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben, ha a második kifejezés igaz, akkor végrehajtja a második utasítás blokkot.", - "CONTROLS_IF_TOOLTIP_4": "Ha az első kifejezés igaz, akkor végrehajtjuk az első utasítás blokkot. Ha a második kifejezés igaz, akkor végrehajtjuk a második utasítás blokkot. Amennyiben egyik kifejezés sem igaz, akkor az utolsó utasítás blokk kerül végrehajtásra.", - "CONTROLS_IF_MSG_IF": "ha", - "CONTROLS_IF_MSG_ELSEIF": "különben ha", - "CONTROLS_IF_MSG_ELSE": "különben", - "CONTROLS_IF_IF_TOOLTIP": "A ha blokk testreszabásához bővítsd, töröld vagy rendezd át a részeit.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Feltétel hozzáadása a ha blokkhoz.", - "CONTROLS_IF_ELSE_TOOLTIP": "Végső feltétel hozzáadása a ha blokkhoz.", - "LOGIC_COMPARE_HELPURL": "https://hu.wikipedia.org/wiki/Egyenl%C5%91tlens%C3%A9g", - "LOGIC_COMPARE_TOOLTIP_EQ": "Igaz, ha a kifejezés két oldala egyenlő.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Igaz, ha a kifejezés két oldala nem egyenlő..", - "LOGIC_COMPARE_TOOLTIP_LT": "Igaz, ha a bal oldali kifejezés kisebb, mint a jobb oldali.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Igaz, ha a bal oldali kifejezés kisebb vagy egyenlő, mint a jobb oldali.", - "LOGIC_COMPARE_TOOLTIP_GT": "Igaz, ha a bal oldali kifejezés nagyobb, mint a jobb oldali.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Igaz, ha a bal oldali kifejezés nagyobb vagy egyenlő, mint a jobb oldali.", - "LOGIC_OPERATION_TOOLTIP_AND": "Igaz, ha mindkét kifejezés igaz.", - "LOGIC_OPERATION_AND": "és", - "LOGIC_OPERATION_TOOLTIP_OR": "Igaz, ha legalább az egyik kifejezés igaz.", - "LOGIC_OPERATION_OR": "vagy", - "LOGIC_NEGATE_TITLE": "nem %1", - "LOGIC_NEGATE_TOOLTIP": "Igaz, ha a kifejezés hamis. Hamis, ha a kifejezés igaz.", - "LOGIC_BOOLEAN_TRUE": "igaz", - "LOGIC_BOOLEAN_FALSE": "hamis", - "LOGIC_BOOLEAN_TOOLTIP": "Igaz, vagy hamis érték", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "null érték.", - "LOGIC_TERNARY_CONDITION": "vizsgáld meg:", - "LOGIC_TERNARY_IF_TRUE": "érték, ha igaz:", - "LOGIC_TERNARY_IF_FALSE": "érték, ha hamis:", - "LOGIC_TERNARY_TOOLTIP": "Kiértékeli a megvizsgálandó kifejezést. Ha a kifejezés igaz, visszatér az \"érték, ha igaz\" értékkel, különben az \"érték, ha hamis\" értékkel.", - "MATH_NUMBER_HELPURL": "https://hu.wikipedia.org/wiki/Sz%C3%A1m", - "MATH_NUMBER_TOOLTIP": "Egy szám.", - "MATH_ARITHMETIC_HELPURL": "https://hu.wikipedia.org/wiki/Matematikai_m%C5%B1velet", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Két szám összege.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Két szám különbsége.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Két szám szorzata.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Két szám hányadosa.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Az első számnak a második számmal megegyező hatványa.", - "MATH_SINGLE_HELPURL": "https://hu.wikipedia.org/wiki/Gy%C3%B6kvon%C3%A1s", - "MATH_SINGLE_OP_ROOT": "négyzetgyök", - "MATH_SINGLE_TOOLTIP_ROOT": "A szám négyzetgyöke.", - "MATH_SINGLE_OP_ABSOLUTE": "abszolútérték", - "MATH_SINGLE_TOOLTIP_ABS": "A szám abszolútértéke.", - "MATH_SINGLE_TOOLTIP_NEG": "A szám -1 szerese.", - "MATH_SINGLE_TOOLTIP_LN": "A szám természetes alapú logaritmusa.", - "MATH_SINGLE_TOOLTIP_LOG10": "A szám 10-es alapú logaritmusa.", - "MATH_SINGLE_TOOLTIP_EXP": "Az e megadott számú hatványa.", - "MATH_SINGLE_TOOLTIP_POW10": "A 10 megadott számú hatványa.", - "MATH_TRIG_HELPURL": "https://hu.wikipedia.org/wiki/Sz%C3%B6gf%C3%BCggv%C3%A9nyek", - "MATH_TRIG_TOOLTIP_SIN": "A fokban megadott szög szinusz értéke.", - "MATH_TRIG_TOOLTIP_COS": "A fokban megadott szög koszinusz értéke.", - "MATH_TRIG_TOOLTIP_TAN": "A fokban megadott szög tangens értéke.", - "MATH_TRIG_TOOLTIP_ASIN": "A fokban megadott szög arkusz szinusz értéke.", - "MATH_TRIG_TOOLTIP_ACOS": "A fokban megadott szög arkusz koszinusz értéke.", - "MATH_TRIG_TOOLTIP_ATAN": "A fokban megadott szög arkusz tangens értéke.", - "MATH_CONSTANT_HELPURL": "https://hu.wikipedia.org/wiki/Matematikai_konstans", - "MATH_CONSTANT_TOOLTIP": "Ismert matematikai konstans: π (3.141…), e (2.718…), φ (1.618…), gyök(2) (1.414…), gyök(½) (0.707…), vagy ∞ (végtelen).", - "MATH_IS_EVEN": "páros", - "MATH_IS_ODD": "páratlan", - "MATH_IS_PRIME": "prím", - "MATH_IS_WHOLE": "egész", - "MATH_IS_POSITIVE": "pozitív", - "MATH_IS_NEGATIVE": "negatív", - "MATH_IS_DIVISIBLE_BY": "-nek osztója", - "MATH_IS_TOOLTIP": "Ellenőrzi, hogy a szám páros, páratlan, prím, egész, pozitív vagy negatív-e, illetve osztható-e a másodikkal. Igaz, vagy hamis értéket ad eredményül.", - "MATH_CHANGE_HELPURL": "https://hu.wikipedia.org/wiki/JavaScript#Aritmetikai_oper.C3.A1torok", - "MATH_CHANGE_TITLE": "növeld %1 értékét %2 -vel", - "MATH_CHANGE_TOOLTIP": "A \"%1\" változó értékének növelése egy számmal.", - "MATH_ROUND_HELPURL": "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Kerek.C3.ADt.C3.A9s", - "MATH_ROUND_TOOLTIP": "Egy szám kerekítése felfelé vagy lefelé.", - "MATH_ROUND_OPERATOR_ROUND": "kerekítsd", - "MATH_ROUND_OPERATOR_ROUNDUP": "kerekítsd felfelé", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "kerekítsd lefelé", - "MATH_ONLIST_OPERATOR_SUM": "lista elemeinek összege", - "MATH_ONLIST_TOOLTIP_SUM": "A lista elemeinek összegét adja eredményül.", - "MATH_ONLIST_OPERATOR_MIN": "lista legkisebb eleme", - "MATH_ONLIST_TOOLTIP_MIN": "A lista legkisebb elemét adja vissza.", - "MATH_ONLIST_OPERATOR_MAX": "lista legnagyobb eleme", - "MATH_ONLIST_TOOLTIP_MAX": "A lista legnagyobb elemét adja vissza.", - "MATH_ONLIST_OPERATOR_AVERAGE": "lista elemeinek átlaga", - "MATH_ONLIST_TOOLTIP_AVERAGE": "A lista elemeinek átlagát adja eredményül.", - "MATH_ONLIST_OPERATOR_MEDIAN": "lista mediánja", - "MATH_ONLIST_TOOLTIP_MEDIAN": "A lista elemeinek mediánját adja eredményül.", - "MATH_ONLIST_OPERATOR_MODE": "lista módusza", - "MATH_ONLIST_TOOLTIP_MODE": "A lista elemeinek móduszát adja eredményül.", - "MATH_ONLIST_OPERATOR_STD_DEV": "lista elemeinek szórása", - "MATH_ONLIST_TOOLTIP_STD_DEV": "A lista elemeinek szórását adja eredményül.", - "MATH_ONLIST_OPERATOR_RANDOM": "lista véletlen eleme", - "MATH_ONLIST_TOOLTIP_RANDOM": "A lista egy véletlen elemét adja eredményül.", - "MATH_MODULO_HELPURL": "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Als.C3.B3_eg.C3.A9szr.C3.A9sz", - "MATH_MODULO_TITLE": "%1 ÷ %2 maradéka", - "MATH_MODULO_TOOLTIP": "Az egész osztás maradékát adja eredméynül.", - "MATH_CONSTRAIN_TITLE": "korlátozd %1-t %2 és %3 közé", - "MATH_CONSTRAIN_TOOLTIP": "Egy változó értékének korlátozása a megadott zárt intervallumra.", - "MATH_RANDOM_INT_HELPURL": "https://hu.wikipedia.org/wiki/V%C3%A9letlen", - "MATH_RANDOM_INT_TITLE": "véletlen egész szám %1 között %2", - "MATH_RANDOM_INT_TOOLTIP": "Véletlen egész szám a megadott zárt intervallumon belül.", - "MATH_RANDOM_FLOAT_HELPURL": "https://hu.wikipedia.org/wiki/V%C3%A9letlen", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "véletlen tört", - "MATH_RANDOM_FLOAT_TOOLTIP": "Véletlen tört érték 0.0 és 1.0 között.", - "MATH_ATAN2_HELPURL": "https://hu.wikipedia.org/wiki/Arctg2", - "MATH_ATAN2_TITLE": "Arctg2 X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Az (X,Y) pont arkusz tangens értéke fokban -180 és 180 között.", - "TEXT_TEXT_HELPURL": "https://hu.wikipedia.org/wiki/String", - "TEXT_TEXT_TOOLTIP": "Egy betű, szó vagy szöveg egy sora.", - "TEXT_JOIN_TITLE_CREATEWITH": "fűzd össze", - "TEXT_JOIN_TOOLTIP": "Tetszőleges számú szövegrészletet fűz össze egybefüggő szöveggé.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "fűzd össze", - "TEXT_CREATE_JOIN_TOOLTIP": "Összefűzéssel, törléssel vagy rendezéssel kapcsolato sblokkok szöveg szerkesztéséhez.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Elem hozzáfűzése a szöveghez.", - "TEXT_APPEND_TITLE": "A %1 szövegéhez fűzd hozzá %2", - "TEXT_APPEND_TOOLTIP": "Szöveget fűz a \"%1\" változó értékéhez.", - "TEXT_LENGTH_TITLE": "%1 hossza", - "TEXT_LENGTH_TOOLTIP": "A megadott szöveg karaktereinek számát adja eredményül (beleértve a szóközöket).", - "TEXT_ISEMPTY_TITLE": "%1 üres", - "TEXT_ISEMPTY_TOOLTIP": "Igaz, ha a vizsgált szöveg hossza 0.", - "TEXT_INDEXOF_TOOLTIP": "A keresett szöveg első vagy utolsó előfordulásával tér vissza. %1 esetén a szövegrészlet nem található.", - "TEXT_INDEXOF_TITLE": "A(z) %1 %2 %3 szövegnek", - "TEXT_INDEXOF_OPERATOR_FIRST": "szövegben az első előfordulásának helye", - "TEXT_INDEXOF_OPERATOR_LAST": "szövegben az utolsó előfordulásának helye", - "TEXT_CHARAT_TITLE": "a szövegben: %1 %2", - "TEXT_CHARAT_FROM_START": "elölről", - "TEXT_CHARAT_FROM_END": "hátulról", - "TEXT_CHARAT_FIRST": "első", - "TEXT_CHARAT_LAST": "utolsó", - "TEXT_CHARAT_RANDOM": "véletlen", - "TEXT_CHARAT_TAIL": "karaktere", - "TEXT_CHARAT_TOOLTIP": "A szöveg egy megadott karakterét adja eredményül.", - "TEXT_GET_SUBSTRING_TOOLTIP": "A megadott szövegrészletet adja eredményül.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "a", - "TEXT_GET_SUBSTRING_START_FROM_START": "szövegben válaszd ki a(z)", - "TEXT_GET_SUBSTRING_START_FROM_END": "szövegben válaszd ki a hátulról a(z)", - "TEXT_GET_SUBSTRING_START_FIRST": "szövegben válaszd ki az első", - "TEXT_GET_SUBSTRING_END_FROM_START": "betűtől a(z)", - "TEXT_GET_SUBSTRING_END_FROM_END": "betűtől a hátulról számított", - "TEXT_GET_SUBSTRING_END_LAST": "betűtől az utolsó", - "TEXT_GET_SUBSTRING_TAIL": "betűig tartó betűsort", - "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "NAGYBETŰS", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "kisbetűs", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Címként Formázott", - "TEXT_TRIM_TOOLTIP": "Levágja a megadott szöveg végeiről a szóközöket.", - "TEXT_TRIM_OPERATOR_BOTH": "szóközök levágása mindkét végéről", - "TEXT_TRIM_OPERATOR_LEFT": "szóközök levágása az elejéről", - "TEXT_TRIM_OPERATOR_RIGHT": "szóközök levágása a végéről", - "TEXT_PRINT_TITLE": "Üzenet %1", - "TEXT_PRINT_TOOLTIP": "Megejelníti a megadott kaakterláncot üzenetként a képernyőn.", - "TEXT_PROMPT_TYPE_TEXT": "Kérj be szöveget", - "TEXT_PROMPT_TYPE_NUMBER": "Kérj be számot", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Számot kér be a felhasználótól.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Szöveget kér be a felhasználótól.", - "TEXT_COUNT_MESSAGE0": "%1 száma ebben: %2", - "TEXT_COUNT_TOOLTIP": "A szöveg előfordulásainak megszámolása egy másik szövegben.", - "TEXT_REPLACE_MESSAGE0": "%1 cseréje %2-vel %3-ban", - "TEXT_REPLACE_TOOLTIP": "A szöveg összes előfordulásának cseréje egy másik szöveggel.", - "TEXT_REVERSE_MESSAGE0": "%1 megfordítása", - "TEXT_REVERSE_TOOLTIP": "Megfordítja a karakterek sorrendjét a szövegben.", - "LISTS_CREATE_EMPTY_TITLE": "üres lista", - "LISTS_CREATE_EMPTY_TOOLTIP": "Elemeket nem tartalmazó üres listát ad eredményül", - "LISTS_CREATE_WITH_TOOLTIP": "Listát készít a megadott elemekből.", - "LISTS_CREATE_WITH_INPUT_WITH": "Lista készítés, elemek:", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Add, remove, or reorder sections to reconfigure this list block.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Elem hozzáadása listához.", - "LISTS_REPEAT_TOOLTIP": "A megadtott elem felhasználásával n elemű listát készít", - "LISTS_REPEAT_TITLE": "Lista készítése %1 elemet %2 alkalommal hozzáadva", - "LISTS_LENGTH_TITLE": "%1 lista hossza", - "LISTS_LENGTH_TOOLTIP": "A lista elemszámát adja eredményül.", - "LISTS_ISEMPTY_TITLE": "%1 üres lista?", - "LISTS_ISEMPTY_TOOLTIP": "Az eredmény igaz, ha a lista nem tartalmaz elemeket.", - "LISTS_INLIST": "A(z)", - "LISTS_INDEX_OF_FIRST": "listában első előfordulásaː", - "LISTS_INDEX_OF_LAST": "listában utolsó előfordulásaː", - "LISTS_INDEX_OF_TOOLTIP": "A megadott elem első vagy utolsó előfordulásával tér vissza. Ha nem talál ilyen elemet, akkor %1 a visszatérési érték.", - "LISTS_GET_INDEX_GET": "listából értéke", - "LISTS_GET_INDEX_GET_REMOVE": "listából kivétele", - "LISTS_GET_INDEX_REMOVE": "listából törlése", - "LISTS_GET_INDEX_FROM_START": "az elejétől számított", - "LISTS_GET_INDEX_FROM_END": "a végétől számított", - "LISTS_GET_INDEX_FIRST": "az első", - "LISTS_GET_INDEX_LAST": "az utolsó", - "LISTS_GET_INDEX_RANDOM": "bármely", - "LISTS_GET_INDEX_TAIL": "elemnek", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 az első elemet jelenti.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 az utolsó elemet jelenti.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "A lista megadott sorszámú elemét adja eredményül.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "A lista első elemét adja eredményül.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "A lista utolsó elemét adja eredményül.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "A lista véletlenszerűen választott elemét adja eredményül.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "A megadott sorszámú elem kivétele a listából.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Az első elem kivétele a listából.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Az utolsó elem kivétele a listából.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Véletlenszerűen választott elem kivétele a listából.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "A megadott sorszámú elem törlése a listából.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Az első elem törlése a listából.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Az utolsó elem törlése a listából.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Véletlenszerűen választott elem törlése a listából.", - "LISTS_SET_INDEX_SET": "listába állítsd be", - "LISTS_SET_INDEX_INSERT": "listába szúrd be", - "LISTS_SET_INDEX_INPUT_TO": "elemkéntː", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "A megadott sorszámú elem cseréje a listában.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Az első elem cseréje a listában.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Az utolsó elem cseréje a listában.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Véletlenszerűen választott elem cseréje a listában.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Beszúrás a megadott sorszámú elem elé a listában.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Beszúrás a lista elejére.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Beszúrás a lista végére.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Beszúrás véletlenszerűen választott elem elé a listában.", - "LISTS_GET_SUBLIST_START_FROM_START": "részlistája az elejétől számított", - "LISTS_GET_SUBLIST_START_FROM_END": "részlistája a végétől számított", - "LISTS_GET_SUBLIST_START_FIRST": "részlistája az első", - "LISTS_GET_SUBLIST_END_FROM_START": "és az elejétől számított", - "LISTS_GET_SUBLIST_END_FROM_END": "és a végétől számított", - "LISTS_GET_SUBLIST_END_LAST": "és az utolsó", - "LISTS_GET_SUBLIST_TAIL": "elem között", - "LISTS_GET_SUBLIST_TOOLTIP": "A lista adott részéről másolat.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "%1 %2 %3 rendezés", - "LISTS_SORT_TOOLTIP": "Egy lista egy másolatának rendezése.", - "LISTS_SORT_ORDER_ASCENDING": "növekvő", - "LISTS_SORT_ORDER_DESCENDING": "csökkenő", - "LISTS_SORT_TYPE_NUMERIC": "numerikus", - "LISTS_SORT_TYPE_TEXT": "betűrendben", - "LISTS_SORT_TYPE_IGNORECASE": "betűrendben nagybetű figyelmen kívül hagyásával", - "LISTS_SPLIT_LIST_FROM_TEXT": "lista készítése szövegből", - "LISTS_SPLIT_TEXT_FROM_LIST": "sztring készítése listából", - "LISTS_SPLIT_WITH_DELIMITER": "határoló karakter", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Listát készít a határoló karaktereknél törve a szöveget.", - "LISTS_SPLIT_TOOLTIP_JOIN": "A lista elemeit összefűzi szöveggé a határoló karaktereket is felhasználva.", - "LISTS_REVERSE_MESSAGE0": "%1 megfordítása", - "LISTS_REVERSE_TOOLTIP": "Megfordítja a lista másolatát.", - "ORDINAL_NUMBER_SUFFIX": ".", - "VARIABLES_GET_TOOLTIP": "A változó értékét adja eredményül.", - "VARIABLES_GET_CREATE_SET": "Készíts \"%1=\"", - "VARIABLES_SET": "%1 %2", - "VARIABLES_SET_TOOLTIP": "A változónak adhatunk értéket.", - "VARIABLES_SET_CREATE_GET": "Készíts \"%1\"", - "PROCEDURES_DEFNORETURN_TITLE": "Eljárás", - "PROCEDURES_DEFNORETURN_PROCEDURE": "név", - "PROCEDURES_BEFORE_PARAMS": "paraméterlistaː", - "PROCEDURES_CALL_BEFORE_PARAMS": "paraméterlistaː", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Eljárás (nem ad vissza eredményt).", - "PROCEDURES_DEFNORETURN_COMMENT": "Írj erről a funkcióról...", - "PROCEDURES_DEFRETURN_RETURN": "eredménye", - "PROCEDURES_DEFRETURN_TOOLTIP": "Függvény eredménnyel.", - "PROCEDURES_ALLOW_STATEMENTS": "utasítások engedélyezése", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Figyelem: Az eljárásban azonos elnevezésű paramétert adtál meg.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Végrehajtja az eljárást.", - "PROCEDURES_CALLRETURN_HELPURL": "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)", - "PROCEDURES_CALLRETURN_TOOLTIP": "Meghívja a függvényt.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "paraméterek", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Bemenetek hozzáadása, eltávolítása vagy átrendezése ehhez a függvényhez.", - "PROCEDURES_MUTATORARG_TITLE": "változó:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Bemenet hozzáadása a függvényhez.", - "PROCEDURES_HIGHLIGHT_DEF": "Függvénydefiníció kiemelése", - "PROCEDURES_CREATE_DO": "„%1” létrehozása", - "PROCEDURES_IFRETURN_TOOLTIP": "Ha az érték igaz, akkor visszatér a függvény értékével.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Figyelem: Ez a blokk csak függvénydefiníción belül használható.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Mondj valamit...", - "WORKSPACE_ARIA_LABEL": "Blockly munkaterület", - "COLLAPSED_WARNINGS_WARNING": "Az összecsukott blokk figyelmeztetéseket tartalmaz.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Mégse" -} +{ + "@metadata": { + "authors": [ + "BanKris", + "Csega", + "Dj", + "Espertus", + "Fitoschido", + "Grin", + "Lajthabalazs", + "MeskoBalazs", + "Máté", + "Notramo", + "Rodrigo", + "Tacsipacsi", + "Takács Viktor László", + "Urbalazs", + "ViDam" + ] + }, + "VARIABLES_DEFAULT_NAME": "változó", + "UNNAMED_KEY": "névtelen", + "TODAY": "Ma", + "DUPLICATE_BLOCK": "Másolat", + "ADD_COMMENT": "Megjegyzés hozzáadása", + "REMOVE_COMMENT": "Megjegyzés eltávolítása", + "EXTERNAL_INPUTS": "Külső kapcsolatok", + "INLINE_INPUTS": "Belső kapcsolatok", + "DELETE_BLOCK": "Blokk törlése", + "DELETE_X_BLOCKS": "%1 blokk törlése", + "DELETE_ALL_BLOCKS": "Az összes %1 blokk törlése?", + "CLEAN_UP": "Blokkok kiürítése", + "COLLAPSE_BLOCK": "Blokk összecsukása", + "COLLAPSE_ALL": "Blokkok összecsukása", + "EXPAND_BLOCK": "Blokk kinyitása", + "EXPAND_ALL": "Blokkok kinyitása", + "DISABLE_BLOCK": "Blokk letiltása", + "ENABLE_BLOCK": "Blokk engedélyezése", + "HELP": "Súgó", + "UNDO": "Visszavonás", + "REDO": "Újra", + "CHANGE_VALUE_TITLE": "Érték módosítása:", + "RENAME_VARIABLE": "Változó átnevezése…", + "RENAME_VARIABLE_TITLE": "Minden „%1” változó átnevezése erre:", + "NEW_VARIABLE": "Változó létrehozása…", + "NEW_VARIABLE_TYPE_TITLE": "Az új változó típusa:", + "NEW_VARIABLE_TITLE": "Az új változó neve:", + "VARIABLE_ALREADY_EXISTS": "A(z) „%1” nevű változó már létezik.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Egy „%1” nevű változó már létezik egy másik típussal: „%2”.", + "DELETE_VARIABLE_CONFIRMATION": "A(z) „%2” változó %1 használatának törlése?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "A(z) „%1” változó nem törölhető, mert része a(z) „%2” függvény definíciójának.", + "DELETE_VARIABLE": "A(z) „%1” változó törlése", + "COLOUR_PICKER_HELPURL": "https://hu.wikipedia.org/wiki/Szín", + "COLOUR_PICKER_TOOLTIP": "Válassz színt a palettáról.", + "COLOUR_RANDOM_TITLE": "véletlen szín", + "COLOUR_RANDOM_TOOLTIP": "Véletlenszerűen kiválasztott szín.", + "COLOUR_RGB_TITLE": "Szín", + "COLOUR_RGB_RED": "vörös", + "COLOUR_RGB_GREEN": "zöld", + "COLOUR_RGB_BLUE": "kék", + "COLOUR_RGB_TOOLTIP": "Szín előállítása a megadott vörös, zöld, és kék értékekkel. Minden értéknek 0 és 100 közé kell esnie.", + "COLOUR_BLEND_TITLE": "színkeverés", + "COLOUR_BLEND_COLOUR1": "szín 1", + "COLOUR_BLEND_COLOUR2": "szín 2", + "COLOUR_BLEND_RATIO": "arány", + "COLOUR_BLEND_TOOLTIP": "Két színt kever össze a megadott arányban (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://hu.wikipedia.org/wiki/Ciklus_(programoz%C3%A1s)#Sz.C3.A1ml.C3.A1l.C3.B3s_.28FOR.29_ciklus", + "CONTROLS_REPEAT_TITLE": "ismételd %1 alkalommal", + "CONTROLS_REPEAT_INPUT_DO": "", + "CONTROLS_REPEAT_TOOLTIP": "Megadott kódrészlet ismételt végrehajtása.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ismételd amíg", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ismételd amíg", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Amíg a feltétel igaz, végrehajtja az utasításokat.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Amíg a feltétel hamis, végrehajtja az utasításokat.", + "CONTROLS_FOR_TOOLTIP": "A(z) '%1' változó felveszi a kezdőérték és a végérték közötti értékeket a meghatározott lépésközzel. Eközben a meghatározott blokkokat hajtja végre.", + "CONTROLS_FOR_TITLE": "számolj %1 értékével %2 és %3 között %4 lépésközzel", + "CONTROLS_FOREACH_TITLE": "minden %1 elemre a %2 listában", + "CONTROLS_FOREACH_TOOLTIP": "A '%1' változó minden lépésben megkapja a lista adott elemének értékét, és végrehajt vele néhány utasítást.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "befejezi az ismétlést", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "folytatja a következővel", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Megszakítja az utasítást tartalmazó ciklust.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Kihagyja a ciklus további részét, és elölről kezdi a következő elemmel.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Figyelem: Ez a blokk csak cikluson belül használható.", + "CONTROLS_IF_TOOLTIP_1": "Ha a kifejezés igaz, akkor végrehajtja az utasításokat.", + "CONTROLS_IF_TOOLTIP_2": "Ha a kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben a második utasításblokk kerül végrehajtásra.", + "CONTROLS_IF_TOOLTIP_3": "Ha az első kifejezés igaz, akkor végrehajtja az első utasításblokkot. Különben, ha a második kifejezés igaz, akkor végrehajtja a második utasítás blokkot.", + "CONTROLS_IF_TOOLTIP_4": "Ha az első kifejezés igaz, akkor végrehajtjuk az első utasítás blokkot. Ha a második kifejezés igaz, akkor végrehajtjuk a második utasítás blokkot. Amennyiben egyik kifejezés sem igaz, akkor az utolsó utasítás blokk kerül végrehajtásra.", + "CONTROLS_IF_MSG_IF": "ha", + "CONTROLS_IF_MSG_ELSEIF": "különben ha", + "CONTROLS_IF_MSG_ELSE": "különben", + "CONTROLS_IF_IF_TOOLTIP": "A ha blokk testreszabásához bővítsd, töröld vagy rendezd át a részeit.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Feltétel hozzáadása a ha blokkhoz.", + "CONTROLS_IF_ELSE_TOOLTIP": "Végső feltétel hozzáadása a ha blokkhoz.", + "LOGIC_COMPARE_HELPURL": "https://hu.wikipedia.org/wiki/Egyenl%C5%91tlens%C3%A9g", + "LOGIC_COMPARE_TOOLTIP_EQ": "Igaz, ha a kifejezés két oldala egyenlő.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Igaz, ha a kifejezés két oldala nem egyenlő..", + "LOGIC_COMPARE_TOOLTIP_LT": "Igaz, ha a bal oldali kifejezés kisebb, mint a jobb oldali.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Igaz, ha a bal oldali kifejezés kisebb vagy egyenlő, mint a jobb oldali.", + "LOGIC_COMPARE_TOOLTIP_GT": "Igaz, ha a bal oldali kifejezés nagyobb, mint a jobb oldali.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Igaz, ha a bal oldali kifejezés nagyobb vagy egyenlő, mint a jobb oldali.", + "LOGIC_OPERATION_TOOLTIP_AND": "Igaz, ha mindkét kifejezés igaz.", + "LOGIC_OPERATION_AND": "és", + "LOGIC_OPERATION_TOOLTIP_OR": "Igaz, ha legalább az egyik kifejezés igaz.", + "LOGIC_OPERATION_OR": "vagy", + "LOGIC_NEGATE_TITLE": "nem %1", + "LOGIC_NEGATE_TOOLTIP": "Igaz, ha a kifejezés hamis. Hamis, ha a kifejezés igaz.", + "LOGIC_BOOLEAN_TRUE": "igaz", + "LOGIC_BOOLEAN_FALSE": "hamis", + "LOGIC_BOOLEAN_TOOLTIP": "Igaz, vagy hamis érték", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "null érték.", + "LOGIC_TERNARY_CONDITION": "vizsgáld meg:", + "LOGIC_TERNARY_IF_TRUE": "érték, ha igaz:", + "LOGIC_TERNARY_IF_FALSE": "érték, ha hamis:", + "LOGIC_TERNARY_TOOLTIP": "Kiértékeli a megvizsgálandó kifejezést. Ha a kifejezés igaz, visszatér az \"érték, ha igaz\" értékkel, különben az \"érték, ha hamis\" értékkel.", + "MATH_NUMBER_HELPURL": "https://hu.wikipedia.org/wiki/Sz%C3%A1m", + "MATH_NUMBER_TOOLTIP": "Egy szám.", + "MATH_ARITHMETIC_HELPURL": "https://hu.wikipedia.org/wiki/Matematikai_m%C5%B1velet", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Két szám összege.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Két szám különbsége.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Két szám szorzata.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Két szám hányadosa.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Az első számnak a második számmal megegyező hatványa.", + "MATH_SINGLE_HELPURL": "https://hu.wikipedia.org/wiki/Gy%C3%B6kvon%C3%A1s", + "MATH_SINGLE_OP_ROOT": "négyzetgyök", + "MATH_SINGLE_TOOLTIP_ROOT": "A szám négyzetgyöke.", + "MATH_SINGLE_OP_ABSOLUTE": "abszolútérték", + "MATH_SINGLE_TOOLTIP_ABS": "A szám abszolútértéke.", + "MATH_SINGLE_TOOLTIP_NEG": "A szám -1 szerese.", + "MATH_SINGLE_TOOLTIP_LN": "A szám természetes alapú logaritmusa.", + "MATH_SINGLE_TOOLTIP_LOG10": "A szám 10-es alapú logaritmusa.", + "MATH_SINGLE_TOOLTIP_EXP": "Az e megadott számú hatványa.", + "MATH_SINGLE_TOOLTIP_POW10": "A 10 megadott számú hatványa.", + "MATH_TRIG_HELPURL": "https://hu.wikipedia.org/wiki/Sz%C3%B6gf%C3%BCggv%C3%A9nyek", + "MATH_TRIG_TOOLTIP_SIN": "A fokban megadott szög szinusz értéke.", + "MATH_TRIG_TOOLTIP_COS": "A fokban megadott szög koszinusz értéke.", + "MATH_TRIG_TOOLTIP_TAN": "A fokban megadott szög tangens értéke.", + "MATH_TRIG_TOOLTIP_ASIN": "A fokban megadott szög arkusz szinusz értéke.", + "MATH_TRIG_TOOLTIP_ACOS": "A fokban megadott szög arkusz koszinusz értéke.", + "MATH_TRIG_TOOLTIP_ATAN": "A fokban megadott szög arkusz tangens értéke.", + "MATH_CONSTANT_HELPURL": "https://hu.wikipedia.org/wiki/Matematikai_konstans", + "MATH_CONSTANT_TOOLTIP": "Ismert matematikai konstans: π (3.141…), e (2.718…), φ (1.618…), gyök(2) (1.414…), gyök(½) (0.707…), vagy ∞ (végtelen).", + "MATH_IS_EVEN": "páros", + "MATH_IS_ODD": "páratlan", + "MATH_IS_PRIME": "prím", + "MATH_IS_WHOLE": "egész", + "MATH_IS_POSITIVE": "pozitív", + "MATH_IS_NEGATIVE": "negatív", + "MATH_IS_DIVISIBLE_BY": "-nek osztója", + "MATH_IS_TOOLTIP": "Ellenőrzi, hogy a szám páros, páratlan, prím, egész, pozitív vagy negatív-e, illetve osztható-e a másodikkal. Igaz, vagy hamis értéket ad eredményül.", + "MATH_CHANGE_HELPURL": "https://hu.wikipedia.org/wiki/JavaScript#Aritmetikai_oper.C3.A1torok", + "MATH_CHANGE_TITLE": "növeld %1 értékét %2 -vel", + "MATH_CHANGE_TOOLTIP": "A \"%1\" változó értékének növelése egy számmal.", + "MATH_ROUND_HELPURL": "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Kerek.C3.ADt.C3.A9s", + "MATH_ROUND_TOOLTIP": "Egy szám kerekítése felfelé vagy lefelé.", + "MATH_ROUND_OPERATOR_ROUND": "kerekítsd", + "MATH_ROUND_OPERATOR_ROUNDUP": "kerekítsd felfelé", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "kerekítsd lefelé", + "MATH_ONLIST_OPERATOR_SUM": "lista elemeinek összege", + "MATH_ONLIST_TOOLTIP_SUM": "A lista elemeinek összegét adja eredményül.", + "MATH_ONLIST_OPERATOR_MIN": "lista legkisebb eleme", + "MATH_ONLIST_TOOLTIP_MIN": "A lista legkisebb elemét adja vissza.", + "MATH_ONLIST_OPERATOR_MAX": "lista legnagyobb eleme", + "MATH_ONLIST_TOOLTIP_MAX": "A lista legnagyobb elemét adja vissza.", + "MATH_ONLIST_OPERATOR_AVERAGE": "lista elemeinek átlaga", + "MATH_ONLIST_TOOLTIP_AVERAGE": "A lista elemeinek átlagát adja eredményül.", + "MATH_ONLIST_OPERATOR_MEDIAN": "lista mediánja", + "MATH_ONLIST_TOOLTIP_MEDIAN": "A lista elemeinek mediánját adja eredményül.", + "MATH_ONLIST_OPERATOR_MODE": "lista módusza", + "MATH_ONLIST_TOOLTIP_MODE": "A lista elemeinek móduszát adja eredményül.", + "MATH_ONLIST_OPERATOR_STD_DEV": "lista elemeinek szórása", + "MATH_ONLIST_TOOLTIP_STD_DEV": "A lista elemeinek szórását adja eredményül.", + "MATH_ONLIST_OPERATOR_RANDOM": "lista véletlen eleme", + "MATH_ONLIST_TOOLTIP_RANDOM": "A lista egy véletlen elemét adja eredményül.", + "MATH_MODULO_HELPURL": "https://hu.wikipedia.org/wiki/Eg%C3%A9szr%C3%A9sz#Als.C3.B3_eg.C3.A9szr.C3.A9sz", + "MATH_MODULO_TITLE": "%1 ÷ %2 maradéka", + "MATH_MODULO_TOOLTIP": "Az egész osztás maradékát adja eredméynül.", + "MATH_CONSTRAIN_TITLE": "korlátozd %1-t %2 és %3 közé", + "MATH_CONSTRAIN_TOOLTIP": "Egy változó értékének korlátozása a megadott zárt intervallumra.", + "MATH_RANDOM_INT_HELPURL": "https://hu.wikipedia.org/wiki/V%C3%A9letlen", + "MATH_RANDOM_INT_TITLE": "véletlen egész szám %1 között %2", + "MATH_RANDOM_INT_TOOLTIP": "Véletlen egész szám a megadott zárt intervallumon belül.", + "MATH_RANDOM_FLOAT_HELPURL": "https://hu.wikipedia.org/wiki/V%C3%A9letlen", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "véletlen tört", + "MATH_RANDOM_FLOAT_TOOLTIP": "Véletlen tört érték 0.0 és 1.0 között.", + "MATH_ATAN2_HELPURL": "https://hu.wikipedia.org/wiki/Arctg2", + "MATH_ATAN2_TITLE": "Arctg2 X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Az (X,Y) pont arkusz tangens értéke fokban -180 és 180 között.", + "TEXT_TEXT_HELPURL": "https://hu.wikipedia.org/wiki/String", + "TEXT_TEXT_TOOLTIP": "Egy betű, szó vagy szöveg egy sora.", + "TEXT_JOIN_TITLE_CREATEWITH": "fűzd össze", + "TEXT_JOIN_TOOLTIP": "Tetszőleges számú szövegrészletet fűz össze egybefüggő szöveggé.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "fűzd össze", + "TEXT_CREATE_JOIN_TOOLTIP": "Összefűzéssel, törléssel vagy rendezéssel kapcsolato sblokkok szöveg szerkesztéséhez.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Elem hozzáfűzése a szöveghez.", + "TEXT_APPEND_TITLE": "A %1 szövegéhez fűzd hozzá %2", + "TEXT_APPEND_TOOLTIP": "Szöveget fűz a \"%1\" változó értékéhez.", + "TEXT_LENGTH_TITLE": "%1 hossza", + "TEXT_LENGTH_TOOLTIP": "A megadott szöveg karaktereinek számát adja eredményül (beleértve a szóközöket).", + "TEXT_ISEMPTY_TITLE": "%1 üres", + "TEXT_ISEMPTY_TOOLTIP": "Igaz, ha a vizsgált szöveg hossza 0.", + "TEXT_INDEXOF_TOOLTIP": "A keresett szöveg első vagy utolsó előfordulásával tér vissza. %1 esetén a szövegrészlet nem található.", + "TEXT_INDEXOF_TITLE": "A(z) %1 %2 %3 szövegnek", + "TEXT_INDEXOF_OPERATOR_FIRST": "szövegben az első előfordulásának helye", + "TEXT_INDEXOF_OPERATOR_LAST": "szövegben az utolsó előfordulásának helye", + "TEXT_CHARAT_TITLE": "a szövegben: %1 %2", + "TEXT_CHARAT_FROM_START": "elölről", + "TEXT_CHARAT_FROM_END": "hátulról", + "TEXT_CHARAT_FIRST": "első", + "TEXT_CHARAT_LAST": "utolsó", + "TEXT_CHARAT_RANDOM": "véletlen", + "TEXT_CHARAT_TAIL": "karaktere", + "TEXT_CHARAT_TOOLTIP": "A szöveg egy megadott karakterét adja eredményül.", + "TEXT_GET_SUBSTRING_TOOLTIP": "A megadott szövegrészletet adja eredményül.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "a", + "TEXT_GET_SUBSTRING_START_FROM_START": "szövegben válaszd ki a(z)", + "TEXT_GET_SUBSTRING_START_FROM_END": "szövegben válaszd ki a hátulról a(z)", + "TEXT_GET_SUBSTRING_START_FIRST": "szövegben válaszd ki az első", + "TEXT_GET_SUBSTRING_END_FROM_START": "betűtől a(z)", + "TEXT_GET_SUBSTRING_END_FROM_END": "betűtől a hátulról számított", + "TEXT_GET_SUBSTRING_END_LAST": "betűtől az utolsó", + "TEXT_GET_SUBSTRING_TAIL": "betűig tartó betűsort", + "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "NAGYBETŰS", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "kisbetűs", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Címként Formázott", + "TEXT_TRIM_TOOLTIP": "Levágja a megadott szöveg végeiről a szóközöket.", + "TEXT_TRIM_OPERATOR_BOTH": "szóközök levágása mindkét végéről", + "TEXT_TRIM_OPERATOR_LEFT": "szóközök levágása az elejéről", + "TEXT_TRIM_OPERATOR_RIGHT": "szóközök levágása a végéről", + "TEXT_PRINT_TITLE": "Üzenet %1", + "TEXT_PRINT_TOOLTIP": "Megejelníti a megadott kaakterláncot üzenetként a képernyőn.", + "TEXT_PROMPT_TYPE_TEXT": "Kérj be szöveget", + "TEXT_PROMPT_TYPE_NUMBER": "Kérj be számot", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Számot kér be a felhasználótól.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Szöveget kér be a felhasználótól.", + "TEXT_COUNT_MESSAGE0": "%1 száma ebben: %2", + "TEXT_COUNT_TOOLTIP": "A szöveg előfordulásainak megszámolása egy másik szövegben.", + "TEXT_REPLACE_MESSAGE0": "%1 cseréje %2-vel %3-ban", + "TEXT_REPLACE_TOOLTIP": "A szöveg összes előfordulásának cseréje egy másik szöveggel.", + "TEXT_REVERSE_MESSAGE0": "%1 megfordítása", + "TEXT_REVERSE_TOOLTIP": "Megfordítja a karakterek sorrendjét a szövegben.", + "LISTS_CREATE_EMPTY_TITLE": "üres lista", + "LISTS_CREATE_EMPTY_TOOLTIP": "Elemeket nem tartalmazó üres listát ad eredményül", + "LISTS_CREATE_WITH_TOOLTIP": "Listát készít a megadott elemekből.", + "LISTS_CREATE_WITH_INPUT_WITH": "Lista készítés, elemek:", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Add, remove, or reorder sections to reconfigure this list block.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Elem hozzáadása listához.", + "LISTS_REPEAT_TOOLTIP": "A megadtott elem felhasználásával n elemű listát készít", + "LISTS_REPEAT_TITLE": "Lista készítése %1 elemet %2 alkalommal hozzáadva", + "LISTS_LENGTH_TITLE": "%1 lista hossza", + "LISTS_LENGTH_TOOLTIP": "A lista elemszámát adja eredményül.", + "LISTS_ISEMPTY_TITLE": "%1 üres lista?", + "LISTS_ISEMPTY_TOOLTIP": "Az eredmény igaz, ha a lista nem tartalmaz elemeket.", + "LISTS_INLIST": "A(z)", + "LISTS_INDEX_OF_FIRST": "listában első előfordulásaː", + "LISTS_INDEX_OF_LAST": "listában utolsó előfordulásaː", + "LISTS_INDEX_OF_TOOLTIP": "A megadott elem első vagy utolsó előfordulásával tér vissza. Ha nem talál ilyen elemet, akkor %1 a visszatérési érték.", + "LISTS_GET_INDEX_GET": "listából értéke", + "LISTS_GET_INDEX_GET_REMOVE": "listából kivétele", + "LISTS_GET_INDEX_REMOVE": "listából törlése", + "LISTS_GET_INDEX_FROM_START": "az elejétől számított", + "LISTS_GET_INDEX_FROM_END": "a végétől számított", + "LISTS_GET_INDEX_FIRST": "az első", + "LISTS_GET_INDEX_LAST": "az utolsó", + "LISTS_GET_INDEX_RANDOM": "bármely", + "LISTS_GET_INDEX_TAIL": "elemnek", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 az első elemet jelenti.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 az utolsó elemet jelenti.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "A lista megadott sorszámú elemét adja eredményül.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "A lista első elemét adja eredményül.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "A lista utolsó elemét adja eredményül.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "A lista véletlenszerűen választott elemét adja eredményül.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "A megadott sorszámú elem kivétele a listából.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Az első elem kivétele a listából.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Az utolsó elem kivétele a listából.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Véletlenszerűen választott elem kivétele a listából.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "A megadott sorszámú elem törlése a listából.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Az első elem törlése a listából.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Az utolsó elem törlése a listából.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Véletlenszerűen választott elem törlése a listából.", + "LISTS_SET_INDEX_SET": "listába állítsd be", + "LISTS_SET_INDEX_INSERT": "listába szúrd be", + "LISTS_SET_INDEX_INPUT_TO": "elemkéntː", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "A megadott sorszámú elem cseréje a listában.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Az első elem cseréje a listában.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Az utolsó elem cseréje a listában.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Véletlenszerűen választott elem cseréje a listában.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Beszúrás a megadott sorszámú elem elé a listában.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Beszúrás a lista elejére.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Beszúrás a lista végére.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Beszúrás véletlenszerűen választott elem elé a listában.", + "LISTS_GET_SUBLIST_START_FROM_START": "részlistája az elejétől számított", + "LISTS_GET_SUBLIST_START_FROM_END": "részlistája a végétől számított", + "LISTS_GET_SUBLIST_START_FIRST": "részlistája az első", + "LISTS_GET_SUBLIST_END_FROM_START": "és az elejétől számított", + "LISTS_GET_SUBLIST_END_FROM_END": "és a végétől számított", + "LISTS_GET_SUBLIST_END_LAST": "és az utolsó", + "LISTS_GET_SUBLIST_TAIL": "elem között", + "LISTS_GET_SUBLIST_TOOLTIP": "A lista adott részéről másolat.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "%1 %2 %3 rendezés", + "LISTS_SORT_TOOLTIP": "Egy lista egy másolatának rendezése.", + "LISTS_SORT_ORDER_ASCENDING": "növekvő", + "LISTS_SORT_ORDER_DESCENDING": "csökkenő", + "LISTS_SORT_TYPE_NUMERIC": "numerikus", + "LISTS_SORT_TYPE_TEXT": "betűrendben", + "LISTS_SORT_TYPE_IGNORECASE": "betűrendben nagybetű figyelmen kívül hagyásával", + "LISTS_SPLIT_LIST_FROM_TEXT": "lista készítése szövegből", + "LISTS_SPLIT_TEXT_FROM_LIST": "sztring készítése listából", + "LISTS_SPLIT_WITH_DELIMITER": "határoló karakter", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Listát készít a határoló karaktereknél törve a szöveget.", + "LISTS_SPLIT_TOOLTIP_JOIN": "A lista elemeit összefűzi szöveggé a határoló karaktereket is felhasználva.", + "LISTS_REVERSE_MESSAGE0": "%1 megfordítása", + "LISTS_REVERSE_TOOLTIP": "Megfordítja a lista másolatát.", + "ORDINAL_NUMBER_SUFFIX": ".", + "VARIABLES_GET_TOOLTIP": "A változó értékét adja eredményül.", + "VARIABLES_GET_CREATE_SET": "Készíts \"%1=\"", + "VARIABLES_SET": "%1 %2", + "VARIABLES_SET_TOOLTIP": "A változónak adhatunk értéket.", + "VARIABLES_SET_CREATE_GET": "Készíts \"%1\"", + "PROCEDURES_DEFNORETURN_TITLE": "Eljárás", + "PROCEDURES_DEFNORETURN_PROCEDURE": "név", + "PROCEDURES_BEFORE_PARAMS": "paraméterlistaː", + "PROCEDURES_CALL_BEFORE_PARAMS": "paraméterlistaː", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Eljárás (nem ad vissza eredményt).", + "PROCEDURES_DEFNORETURN_COMMENT": "Írj erről a funkcióról...", + "PROCEDURES_DEFRETURN_RETURN": "eredménye", + "PROCEDURES_DEFRETURN_TOOLTIP": "Függvény eredménnyel.", + "PROCEDURES_ALLOW_STATEMENTS": "utasítások engedélyezése", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Figyelem: Az eljárásban azonos elnevezésű paramétert adtál meg.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Végrehajtja az eljárást.", + "PROCEDURES_CALLRETURN_HELPURL": "https://hu.wikipedia.org/wiki/F%C3%BCggv%C3%A9ny_(programoz%C3%A1s)", + "PROCEDURES_CALLRETURN_TOOLTIP": "Meghívja a függvényt.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "paraméterek", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Bemenetek hozzáadása, eltávolítása vagy átrendezése ehhez a függvényhez.", + "PROCEDURES_MUTATORARG_TITLE": "változó:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Bemenet hozzáadása a függvényhez.", + "PROCEDURES_HIGHLIGHT_DEF": "Függvénydefiníció kiemelése", + "PROCEDURES_CREATE_DO": "„%1” létrehozása", + "PROCEDURES_IFRETURN_TOOLTIP": "Ha az érték igaz, akkor visszatér a függvény értékével.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Figyelem: Ez a blokk csak függvénydefiníción belül használható.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Mondj valamit...", + "WORKSPACE_ARIA_LABEL": "Blockly munkaterület", + "COLLAPSED_WARNINGS_WARNING": "Az összecsukott blokk figyelmeztetéseket tartalmaz.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Mégse" +} diff --git a/msg/json/hy.json b/msg/json/hy.json index e71fd0b6fed..6bb5d778169 100644 --- a/msg/json/hy.json +++ b/msg/json/hy.json @@ -1,327 +1,327 @@ -{ - "@metadata": { - "authors": [ - "23artashes", - "A.kolyan", - "Armenoid", - "Kareyac", - "Nona", - "Xelgen" - ] - }, - "VARIABLES_DEFAULT_NAME": "տարր", - "UNNAMED_KEY": "անանուն", - "TODAY": "Այսօր", - "DUPLICATE_BLOCK": "Պատճենել", - "ADD_COMMENT": "Ավելացնել մեկնաբանություն", - "REMOVE_COMMENT": "Հեռացնել մեկնաբանությունը", - "DUPLICATE_COMMENT": "Կրկնօրինակել մեկնաբանությունը", - "EXTERNAL_INPUTS": "Արտաքին մուտքեր", - "INLINE_INPUTS": "Գծային մուտք", - "DELETE_BLOCK": "Ջնջել բլոկը", - "DELETE_X_BLOCKS": "Ջնջել %1 բլոկ", - "DELETE_ALL_BLOCKS": "Ջնջե՞լ բոլոր %1 բլոկները:", - "CLEAN_UP": "Մաքրել բլոկները", - "COLLAPSE_BLOCK": "Կրճատել բլոկը", - "COLLAPSE_ALL": "Քանդել բլոկները", - "EXPAND_BLOCK": "Բացել բլոկը", - "EXPAND_ALL": "Բացել բլոկները", - "DISABLE_BLOCK": "Անջատել բլոկը", - "ENABLE_BLOCK": "Միացնել բլոկը", - "HELP": "Օգնություն", - "UNDO": "Հետ շրջել", - "REDO": "Կրկին անել", - "CHANGE_VALUE_TITLE": "Փոխել նշանակություն:", - "RENAME_VARIABLE": "Վերանվանել փոփոխականը...", - "NEW_VARIABLE": "Ստեղծել փոփոխական...", - "NEW_STRING_VARIABLE": "Ստեղծել տեքստային փոփոխական", - "NEW_NUMBER_VARIABLE": "Ստեղծել թվային փոփոխական", - "NEW_COLOUR_VARIABLE": "Ստեղծել գույնի փոփոխական", - "NEW_VARIABLE_TYPE_TITLE": "Փոփոխականի նոր տիպ", - "NEW_VARIABLE_TITLE": "Նոր փոփոխականի անունը՝", - "VARIABLE_ALREADY_EXISTS": "'%1' անունով փոփոխական արդեն գոյություն ունի", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' անունով փոփոխական արդեն գոյություն ունի այլ տիպի համար: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Ջնջե՞լ '%2' փոփոխականի %1 կիրառությունները", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Հնարավոր չի ջնջել %1 փոփոխականը, որովհետև այն '%2' ֆունկցիայի հայտարարման մասն է", - "DELETE_VARIABLE": "Հեռացնել '%1' փոփոխականը", - "COLOUR_PICKER_HELPURL": "https://hy.wikipedia.org/wiki/Գույն", - "COLOUR_PICKER_TOOLTIP": "Ընտրիր գույն ներկապնակից:", - "COLOUR_RANDOM_TITLE": "պատահական գույն", - "COLOUR_RANDOM_TOOLTIP": "Ընտրում է գույն պատահականության սկզբունքով:", - "COLOUR_RGB_TITLE": "գույնը", - "COLOUR_RGB_RED": "կարմիր", - "COLOUR_RGB_GREEN": "կանաչ", - "COLOUR_RGB_BLUE": "կապույտ", - "COLOUR_RGB_TOOLTIP": "Ստեղծում է գույն կարմիրի, կանաչի և կապույտի նշված քանակություններով: Բոլոր արժեքները պետք է լինեն 0-ի և 100-ի միջև:", - "COLOUR_BLEND_TITLE": "խառնել", - "COLOUR_BLEND_COLOUR1": "գույն 1", - "COLOUR_BLEND_COLOUR2": "գույն 2", - "COLOUR_BLEND_RATIO": "հարաբերակցություն", - "COLOUR_BLEND_TOOLTIP": "Խառնում է երկու գույները միմյանց հետ տրված հարաբերակցությամբ (0.0 - 1.0):", - "CONTROLS_REPEAT_TITLE": "կրկնել %1 անգամ", - "CONTROLS_REPEAT_INPUT_DO": "կատարել", - "CONTROLS_REPEAT_TOOLTIP": "Կատարում է որոշ հրահանգներ մի քանի անգամ:", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "կրկնել, քանի դեռ", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "կրկնել, քանի դեռ չի", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Քանի դեռ արժեքը ճշմարիտ է, կատարում է հրահանգները:", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Քանի դեռ արժեքը կեղծ է, կատարում է որոշակի հրահանգներ:", - "CONTROLS_FOR_TOOLTIP": "'%1' փոփոխականին վերագրում է արժեքներ, սկսելով նախնական արժեքից, տրված քայլով և կատարում է նշված հրամանները", - "CONTROLS_FOR_TITLE": "հաշվել %1-ը, %2֊ից մինչև %3, քայլը %4", - "CONTROLS_FOREACH_TITLE": "յուրաքանչյուր %1 էլեմենտի համար %2 ցանկից", - "CONTROLS_FOREACH_TOOLTIP": "Ցանկի յուրաքանչյուր անդամի արժեքը վերագրում է '%1' փոփոխականին և կատարում նշված հրամանները։", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "դուրս գալ ցիկլից", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "անցնել կրկնության հաջորդ կատարմանը", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Դադարեցնում է տվյալ կրկնությունը", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Դադարեցնում կրկնության մնացած մասը և անցնում է հաջորդ քայլին։", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ցիկլի ներսում:", - "CONTROLS_IF_TOOLTIP_1": "Եթե պայմանը ճշմարիտ է, կատարում է որոշ հրահանգներ:", - "CONTROLS_IF_TOOLTIP_2": "Եթե պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում կատարում է հրահանգների երկրորդ բլոկը:", - "CONTROLS_IF_TOOLTIP_3": "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը:", - "CONTROLS_IF_TOOLTIP_4": "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը: Եթե պայմաններից ոչ մեկը ճշմարիտ չեն, ապա կատարում է հրահանգների վերջին բլոկը:", - "CONTROLS_IF_MSG_IF": "եթե", - "CONTROLS_IF_MSG_ELSEIF": "հակառակ դեպքում, եթե", - "CONTROLS_IF_MSG_ELSE": "հակառակ դեպքում", - "CONTROLS_IF_IF_TOOLTIP": "Ավելացնել, հեռացնել կամ փոխել հերթականությունը այս \"եթե\" բլոկը վերակարգավորելու համար։", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Ավելացնում է պայման «եթե» բլոկին:", - "CONTROLS_IF_ELSE_TOOLTIP": "Ավելացնել վերջնական ենթաբլոկ (այն կաշխատի, եթե բոլոր պայմանները կեղծ են)", - "LOGIC_COMPARE_HELPURL": "https://hy.wikipedia.org/wiki/Անհավասարություն", - "LOGIC_COMPARE_TOOLTIP_EQ": "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար են միմյանց:", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար չեն միմյանց:", - "LOGIC_COMPARE_TOOLTIP_LT": "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից առաջինը փոքր է երկրորդից:", - "LOGIC_COMPARE_TOOLTIP_LTE": "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը փոքր կամ հավասար է երկրորդին:", - "LOGIC_COMPARE_TOOLTIP_GT": "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ է երկրորդից:", - "LOGIC_COMPARE_TOOLTIP_GTE": "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ կամ հավասար է երկրորդին:", - "LOGIC_OPERATION_TOOLTIP_AND": "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ ճշմարիտ են:", - "LOGIC_OPERATION_AND": "և", - "LOGIC_OPERATION_TOOLTIP_OR": "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից գոնե մեկը ճշմարիտ է:", - "LOGIC_OPERATION_OR": "կամ", - "LOGIC_NEGATE_TITLE": "ոչ %1", - "LOGIC_NEGATE_TOOLTIP": "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքը կեղծ է: Վերադարձնում է կեղծ արժեք, եթե մուտքը ճշմարիտ է:", - "LOGIC_BOOLEAN_TRUE": "ճշմարիտ", - "LOGIC_BOOLEAN_FALSE": "կեղծ", - "LOGIC_BOOLEAN_TOOLTIP": "Վերադարձնում է ճշմարիտ կամ կեղծ արժեք:", - "LOGIC_NULL": "ոչինչ", - "LOGIC_NULL_TOOLTIP": "Վերադարձնում է null (ոչինչ)", - "LOGIC_TERNARY_CONDITION": "ստուգում", - "LOGIC_TERNARY_IF_TRUE": "եթե ճշմարիտ է", - "LOGIC_TERNARY_IF_FALSE": "եթե կեղծ է", - "LOGIC_TERNARY_TOOLTIP": "Ստուգում է ընտրության պայմանը։ Եթե այն ճշմարիտ է, վերադարձնում է առաջին արժեքը, հակառակ դեպքում ՝ երկրորդը։", - "MATH_NUMBER_HELPURL": "https://hy.wikipedia.org/wiki/Թիվ", - "MATH_NUMBER_TOOLTIP": "Թիվ", - "MATH_ARITHMETIC_HELPURL": "https://hy.wikipedia.org/wiki/Թվաբանություն", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Վերադարձնում է երկու թվերի գումարը:", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Վերադարձնում է երկու թվերի տարբերությունը:", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Վերադարձնում է երկու թվերի արտադրյալը", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Վերադարձնում է քանորդը", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Վերադարձնում է առաջին թիվի աստիճանը", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "Քառակուսի արմատ", - "MATH_SINGLE_TOOLTIP_ROOT": "Վերադարձնում է թվի քառակուսի աստիճանը", - "MATH_SINGLE_OP_ABSOLUTE": "բացարձակ", - "MATH_SINGLE_TOOLTIP_ABS": "Վերադարձնում է թվի բացարձակ արժեքը:", - "MATH_SINGLE_TOOLTIP_NEG": "Վերադարձնում է ժխտված թիվը:", - "MATH_SINGLE_TOOLTIP_LN": "Վերադարձնում է թվի բնական լոգարիթմը:", - "MATH_SINGLE_TOOLTIP_LOG10": "Վերադարձնում է թվի 10 հիմքով լոգարիթմը:", - "MATH_SINGLE_TOOLTIP_EXP": "Վերադարձնում է թվի աստիճանը։", - "MATH_SINGLE_TOOLTIP_POW10": "Վերադարձնում է 10֊ի նշված աստիճանը։", - "MATH_TRIG_HELPURL": "https://hy.wikipedia.org/wiki/Եռանկյունաչափական_ֆունկցիաներ", - "MATH_TRIG_TOOLTIP_SIN": "Վերադարձնում է անկյան սինուսը աստիճաններով(ոչ ռադիաններով):", - "MATH_TRIG_TOOLTIP_COS": "Վերադարձնում է անկյան կոսինուսը աստիճաններով (ոչ ռադիաններով):", - "MATH_TRIG_TOOLTIP_TAN": "Վերադարձնում է անկյան տանգենսը աստիճաններով (ոչ ռադիաններով):", - "MATH_TRIG_TOOLTIP_ASIN": "Վերադարձնում է թվի արկսինուսը(աստիճաններով):", - "MATH_TRIG_TOOLTIP_ACOS": "Վերադարձնում է թվի արկկոսինուսը:", - "MATH_TRIG_TOOLTIP_ATAN": "Վերադարձնում է թվի արկտանգենսը:", - "MATH_CONSTANT_HELPURL": "https://hy.wikipedia.org/wiki/Մաթեմատիկական_հաստատուն", - "MATH_CONSTANT_TOOLTIP": "Վերադարձնում է տարածված հաստատուններից մեկը՝ π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), կամ ∞ (անվերջություն):", - "MATH_IS_EVEN": "զույգ է", - "MATH_IS_ODD": "կենտ է", - "MATH_IS_PRIME": "պարզ է", - "MATH_IS_WHOLE": "ամբողջ է", - "MATH_IS_POSITIVE": "դրական է", - "MATH_IS_NEGATIVE": "բացասական է", - "MATH_IS_DIVISIBLE_BY": "բաժանվում է", - "MATH_IS_TOOLTIP": "Ստուգում է, թե թիվը զույգ է, կենտ է, պարզ է, ամբողջ է, դրական է, բացասական է կամ թե այն բաժանվում է որոշակի թվի վրա: Վերադարձնում է ճշմարիտ կամ կեղծ:", - "MATH_CHANGE_TITLE": "փոխել %1-ի արժեքը %2֊ով", - "MATH_CHANGE_TOOLTIP": "Ավելացնում է թիվ %1 փոփոխականին:", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Կլորացում", - "MATH_ROUND_TOOLTIP": "Կլորացնում է թիվը վերև կամ ներքև:", - "MATH_ROUND_OPERATOR_ROUND": "կլորացնել", - "MATH_ROUND_OPERATOR_ROUNDUP": "կլորացնել վեր", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "կլորացնել ցած", - "MATH_ONLIST_OPERATOR_SUM": "ցանկի գումարը", - "MATH_ONLIST_TOOLTIP_SUM": "Վերադարձնում է ցանկի բոլոր թվերի գումարը:", - "MATH_ONLIST_OPERATOR_MIN": "ցանկի նվազագույնը", - "MATH_ONLIST_TOOLTIP_MIN": "Վերադարձնում է ցանկի արժեքներից նվազագույնը", - "MATH_ONLIST_OPERATOR_MAX": "ցանկի առավելագույնը", - "MATH_ONLIST_TOOLTIP_MAX": "Վերադարձնում է ցանկի արժեքներից առավելագույնը", - "MATH_ONLIST_OPERATOR_AVERAGE": "ցանկի միջինը", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Վերադարձնում է ցանկում գտնվող արժեքների թվաբանական միջինը", - "MATH_ONLIST_OPERATOR_MEDIAN": "ցանկի միջնարժեք", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Վերադարձնում է ցանկի միջնարժեք:", - "MATH_ONLIST_OPERATOR_MODE": "ցանկի մոդան", - "MATH_ONLIST_TOOLTIP_MODE": "Վերադարձնում է ցանկի առավել հաճախ հանդիպող անդամների ցանկը։", - "MATH_ONLIST_OPERATOR_STD_DEV": "ցանկի ստանդարտ շեղում", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Վերադարձնում է ցանկի ստանդարտ շեղումը:", - "MATH_ONLIST_OPERATOR_RANDOM": "ցանկի պատահական տարր", - "MATH_ONLIST_TOOLTIP_RANDOM": "Վերադարձնում է պատահական տարր ցանկից:", - "MATH_MODULO_TITLE": "%1֊ի և %2֊ի բաժանման մնացորդը", - "MATH_MODULO_TOOLTIP": "Վերադարձնում է երկու թվերի բաժանման մնացորդը:", - "MATH_CONSTRAIN_TITLE": "սահմանափակել %1֊ը %2֊ի և %3֊ի միջև", - "MATH_CONSTRAIN_TOOLTIP": "Սահմանափակել թիվը երկու արժեքներով (ներառյալ)", - "MATH_RANDOM_INT_TITLE": "պատահական ամբողջ թիվ %1 -ից %2 -ը", - "MATH_RANDOM_INT_TOOLTIP": "Վերադարձնում է պատահական ամբողջ թիվ տրված երկու թվերի միջև (ներառյալ):", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Պատահական_թվերի_գեներատոր", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "պատահական կոտորակ", - "MATH_RANDOM_FLOAT_TOOLTIP": "Վերադարձնում է պատահական թիվ 0.0-ից (ներառյալ) 1.0 միջակայքից:", - "MATH_ATAN2_TITLE": "X:%1 Y:%2 ֊ի atan2֊ը", - "MATH_ATAN2_TOOLTIP": "Վերադարձնում է (X, Y) կետի արկտանգենսը աստիճաններով -180-ից մինչև 180:", - "TEXT_TEXT_TOOLTIP": "Տառ, բառ կամ տեքստի տող:", - "TEXT_JOIN_TITLE_CREATEWITH": "ստեղծել տեքստ", - "TEXT_JOIN_TOOLTIP": "Ստեղծում է տեքստի մաս՝ միմյանց կցելով ցանկացած քանակությամբ տարրեր:", - "TEXT_CREATE_JOIN_TITLE_JOIN": "կցել", - "TEXT_CREATE_JOIN_TOOLTIP": "Այս տեքստային բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հերթականությունը", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ավելացնել էլեմենտ տեքստին:", - "TEXT_APPEND_TITLE": "%1֊ին կցել %2 տեքստը", - "TEXT_APPEND_TOOLTIP": "Կցել տեքստ '%1' փոփոխականին", - "TEXT_LENGTH_TITLE": "%1 -ի երկարությունը", - "TEXT_LENGTH_TOOLTIP": "Վերադարձնում է տրված տեքստի տառերի քանակը (ներառյալ բացատները)", - "TEXT_ISEMPTY_TITLE": "%1 -ը դատարկ է", - "TEXT_ISEMPTY_TOOLTIP": "Վերադարձնում է ճշմարիտ արժեք, եթե տրամադրված տեքստը դատարկ է:", - "TEXT_INDEXOF_TOOLTIP": "Վերադարձնում է առաջին տեքստի հանդիպման առաջին (կամ վերջին) դիրքը երկրորդ տեքստում։ Վերադարձնում է %1, եթե տեքստը չի գտնվել։", - "TEXT_INDEXOF_TITLE": "Տեքստում %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "գտնել տեքստի առաջին հանդիպումը", - "TEXT_INDEXOF_OPERATOR_LAST": "գտնել տեքստի վերջին հանդիպումը", - "TEXT_CHARAT_TITLE": "տեքստում %1 %2", - "TEXT_CHARAT_FROM_START": "վերցնել տառ №", - "TEXT_CHARAT_FROM_END": "վերցնել տառ № վերջից", - "TEXT_CHARAT_FIRST": "վերցնել առաջին տառը", - "TEXT_CHARAT_LAST": "վերցնել վերջին տառը", - "TEXT_CHARAT_RANDOM": "վերցնել պատահական տառ", - "TEXT_CHARAT_TOOLTIP": "Վերադարձնում է նշված դիրքի տառը", - "TEXT_GET_SUBSTRING_TOOLTIP": "Վերադարձնում է տեքստի նշված մասը։", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "տեքստում", - "TEXT_GET_SUBSTRING_START_FROM_START": "տալիս է ենթատող սկսելով # տառից", - "TEXT_GET_SUBSTRING_START_FROM_END": "տալիս է ենթատող # տառից սկսած, վերջից", - "TEXT_GET_SUBSTRING_START_FIRST": "տալիս է ենթատող առաջին տառից", - "TEXT_GET_SUBSTRING_END_FROM_START": "մինչև # տառը", - "TEXT_GET_SUBSTRING_END_FROM_END": "մինչև # տառը, վերջից", - "TEXT_GET_SUBSTRING_END_LAST": "մինչև վերջին տառը", - "TEXT_CHANGECASE_TOOLTIP": "Վերադարձնում է տեքստի կրկնօրինակը, ՄԵԾԱՏԱՌԵՐՈՎ կամ փոքրատառերով", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "բերել ՄԵԾԱՏԱՌԵՐԻ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "բերել փոքրատառերի", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "բերել Սկզբնա Մեծատառերի", - "TEXT_TRIM_TOOLTIP": "Վերադարձնում է տեքստի կրկնօրինակը, առանց սկզբի կամ/և վերջի բացատների։", - "TEXT_TRIM_OPERATOR_BOTH": "կտրում է բացատները երկու կողմերից", - "TEXT_TRIM_OPERATOR_LEFT": "կտրում է բացատները ձախ կողմից", - "TEXT_TRIM_OPERATOR_RIGHT": "կտրում է բացատները աջ կողմից", - "TEXT_PRINT_TITLE": "տպել %1", - "TEXT_PRINT_TOOLTIP": "Տպում է նշված տեքստը, թիվը կամ այլ արժեք․", - "TEXT_PROMPT_TYPE_TEXT": "հարցնել տեքստ, հուշումով", - "TEXT_PROMPT_TYPE_NUMBER": "հացնել թիվ, հուշումով", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Հարցնել թիվ օգտատիրոջից։", - "TEXT_PROMPT_TOOLTIP_TEXT": "Հարցնել տեքստ օգտատիրոջից։", - "TEXT_COUNT_MESSAGE0": "հաշվել %1 %2֊ում", - "TEXT_COUNT_TOOLTIP": "Հաշվել, թե քանի անգամ է տեքստը հանդիպում մեկ այլ տեքստի մեջ։", - "TEXT_REPLACE_MESSAGE0": "փոխարինել %1֊ը %2֊ով %3֊ում", - "TEXT_REPLACE_TOOLTIP": "Փոխարինել տեքստի բոլոր գտնված տարբերակները մեկ այլ տեսքով։", - "TEXT_REVERSE_MESSAGE0": "շրջել %1", - "TEXT_REVERSE_TOOLTIP": "Փոխում է տեքստում տառերի հաջորդականությունը։", - "LISTS_CREATE_EMPTY_TITLE": "ստեղծել դատարկ ցանկ", - "LISTS_CREATE_EMPTY_TOOLTIP": "Վերադարձնում է 0 երկարությամբ ցանկ, որը տվյալներ չի պարունակում:", - "LISTS_CREATE_WITH_TOOLTIP": "Ստեղծում է ցանկ ցանկացած քանակությամբ տվյալներով:", - "LISTS_CREATE_WITH_INPUT_WITH": "ստեղծել ցանկ", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ցանկ", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Այս ցանկ բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հաջորդականությունը։", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ավելացնել տարր ցանկին:", - "LISTS_REPEAT_TOOLTIP": "Տրված արժեքը նշված քանակով կրկնելու միջոցով, ստեղծում է ցանկ։", - "LISTS_REPEAT_TITLE": "ստեղծել ցանկ, %1 արժեքը կրկնելով %2 անգամ", - "LISTS_LENGTH_TITLE": "%1֊ի երկարությունը", - "LISTS_LENGTH_TOOLTIP": "Վերադարձնում է ցանկի երկարությունը:", - "LISTS_ISEMPTY_TITLE": "%1 դատարկ է", - "LISTS_ISEMPTY_TOOLTIP": "Վերադարձնում է \"ճշմարիտ\" եթե ցանկը դատարկ է։", - "LISTS_INLIST": "ցանկում", - "LISTS_INDEX_OF_FIRST": "գտնել անդամի առաջին հանդիպման դիրքը", - "LISTS_INDEX_OF_LAST": "գտնել անդամի վերջին հանդիպման դիրքը", - "LISTS_INDEX_OF_TOOLTIP": "Վերադարձնում է ցանկում անդամի առաջին/վերջին հանդիպման դիրքը։ Վերադարձնում է %1, եթե անդամը չի գտնվել։", - "LISTS_GET_INDEX_GET": "վերցնել", - "LISTS_GET_INDEX_GET_REMOVE": "վերցնել և հեռացնել", - "LISTS_GET_INDEX_REMOVE": "հեռացնել", - "LISTS_GET_INDEX_FROM_END": "№ վերջից", - "LISTS_GET_INDEX_FIRST": "առաջինը", - "LISTS_GET_INDEX_LAST": "վերջինը", - "LISTS_GET_INDEX_RANDOM": "պատահական", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 առաջին տարրն է:", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 վերջին տարրն է:", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Վերադարձնում է ցանկի առաջին տարրը:", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Վերադարձնում է ցանկի վերջին տարրը:", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Վերադարձնում է ցանկի պատահական տարր:", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Հեռացնում և վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Հեռացնում և վերադարձնում է ցանկի առաջին տարրը:", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Հեռացնում և վերադարձնում է ցանկի վերջին տարրը:", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Հեռացնում և վերադարձնում է ցանկի պատահական տարր:", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Ցանկից հեռացնում է նշված դիրքում գտնվող անդամը։", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Հեռացնում է ցանկի առաջին տարրը:", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Հեռացնում է ցանկի վերջին տարրը:", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Հեռացնում է ցանկից պատահական տարր:", - "LISTS_SET_INDEX_SET": "դնել", - "LISTS_SET_INDEX_INSERT": "ներմուծել", - "LISTS_SET_INDEX_INPUT_TO": "որպես", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Տեղադրում է անդամը ցանկի նշված դիրքում։", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Սահմանում է ցանկի առաջին տարրը:", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Սահմանում է ցանկի վերջին տարրը:", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Սահմանում է ցանկից պատահական տարր:", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ներմուծում է անդամը ցանկի նշված դիրքում։", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ներմուծում է անդամը ցանկի սկզբում։", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ավելացնում է անդամ ցանկի վերջում։", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ներմուծում է անդամը ցանկի պատահական դիրքում։", - "LISTS_GET_SUBLIST_START_FROM_START": "վերցնել ենթացանկ, սկսած #", - "LISTS_GET_SUBLIST_START_FROM_END": "վերցնել ենթացանկ, սկսած # վերջից", - "LISTS_GET_SUBLIST_START_FIRST": "վերցնել ենթա֊ցանկ սկզբից", - "LISTS_GET_SUBLIST_END_FROM_START": "մինչև #", - "LISTS_GET_SUBLIST_END_FROM_END": "մինչև # վերջից", - "LISTS_GET_SUBLIST_END_LAST": "մինչև վերջ", - "LISTS_GET_SUBLIST_TOOLTIP": "Ստեղծում է ցանկի նշված մասի պատճենը։", - "LISTS_SORT_TITLE": "դասավորել %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Դասավորում է ցանկի պատճենը", - "LISTS_SORT_ORDER_ASCENDING": "աճման կարգ", - "LISTS_SORT_ORDER_DESCENDING": "նվազման կարգ", - "LISTS_SORT_TYPE_NUMERIC": "թվային կարգ", - "LISTS_SORT_TYPE_TEXT": "այբբենական կարգ", - "LISTS_SORT_TYPE_IGNORECASE": "այբենական, անտեսել ռեգիստրը", - "LISTS_SPLIT_LIST_FROM_TEXT": "ստեղծել ցանկ տեքստից", - "LISTS_SPLIT_TEXT_FROM_LIST": "ստեղծել տեքստ ցանկից", - "LISTS_SPLIT_WITH_DELIMITER": "բաժանարարով", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Տեքստը վեր է ածվում ցանկի, նշված բաժանարարով։", - "LISTS_SPLIT_TOOLTIP_JOIN": "Ցանկից ստեղծվում է միացյալ տեքստ, ցանկի անդամները միացվում են բաժանարարներով։", - "LISTS_REVERSE_MESSAGE0": "շրջել %1", - "LISTS_REVERSE_TOOLTIP": "Շրջում է ցանկի պատճենը։", - "VARIABLES_GET_TOOLTIP": "Վերադարձնում է այս փոփոխականի արժեքը:", - "VARIABLES_GET_CREATE_SET": "Ստեղծել 'վերագրել %1'", - "VARIABLES_SET": "վերագրել %1֊ին %2 արժեքը", - "VARIABLES_SET_TOOLTIP": "Փոփոխականին վերագրում է ներմուծված արժեքը։", - "VARIABLES_SET_CREATE_GET": "ստեղծել 'ստանալ %1'", - "PROCEDURES_DEFNORETURN_TITLE": "ֆունկցիա", - "PROCEDURES_DEFNORETURN_PROCEDURE": "կատարել որևէ բան", - "PROCEDURES_BEFORE_PARAMS": "պարամետրերի ցանկ՝", - "PROCEDURES_CALL_BEFORE_PARAMS": "պարամետրերի ցանկ՝", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Ստեղծում է ֆունկցիա, որը արժեք չի վերադարձնում:", - "PROCEDURES_DEFNORETURN_COMMENT": "Նկարագրիր այս ֆունկցիան...", - "PROCEDURES_DEFRETURN_RETURN": "վերադարձնել", - "PROCEDURES_DEFRETURN_TOOLTIP": "Ստեղծում է ֆունկցիա, որը վերադարձնում է արժեք:", - "PROCEDURES_ALLOW_STATEMENTS": "թույլատրել արտահայտությունները", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Զգուշացում։ Այս ֆունկցիան ունի կրկնվող պարամտերեր։", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Կատարում է %1 ֆունկցիան", - "PROCEDURES_CALLRETURN_TOOLTIP": "Կատարում է '%1' ֆունկցիան և օգտագործում դրա արդյունքը։", - "PROCEDURES_MUTATORCONTAINER_TITLE": "մուտքեր", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Ավելացնել, հեռացնել կամ վերադասավորել է այս ֆունկցիայի մուտքերը (պարամետրերը)։", - "PROCEDURES_MUTATORARG_TITLE": "մուտքի անուն՝", - "PROCEDURES_MUTATORARG_TOOLTIP": "Ֆունկցիային ավելալցնել մուտք (պարամետր)։", - "PROCEDURES_HIGHLIGHT_DEF": "Ընդգծել ֆունկցիայի հայտարարումը", - "PROCEDURES_CREATE_DO": "Ստեղծել '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Եթե արժեքը ճշմարիտ է, վերադարձնում է երկորդ արժեքը:", - "PROCEDURES_IFRETURN_WARNING": "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ֆունկցիայի սահմանման ներսում:", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Մի բան ասա ․․․", - "DIALOG_OK": "Լավ", - "DIALOG_CANCEL": "Չեղարկել" -} +{ + "@metadata": { + "authors": [ + "23artashes", + "A.kolyan", + "Armenoid", + "Kareyac", + "Nona", + "Xelgen" + ] + }, + "VARIABLES_DEFAULT_NAME": "տարր", + "UNNAMED_KEY": "անանուն", + "TODAY": "Այսօր", + "DUPLICATE_BLOCK": "Պատճենել", + "ADD_COMMENT": "Ավելացնել մեկնաբանություն", + "REMOVE_COMMENT": "Հեռացնել մեկնաբանությունը", + "DUPLICATE_COMMENT": "Կրկնօրինակել մեկնաբանությունը", + "EXTERNAL_INPUTS": "Արտաքին մուտքեր", + "INLINE_INPUTS": "Գծային մուտք", + "DELETE_BLOCK": "Ջնջել բլոկը", + "DELETE_X_BLOCKS": "Ջնջել %1 բլոկ", + "DELETE_ALL_BLOCKS": "Ջնջե՞լ բոլոր %1 բլոկները:", + "CLEAN_UP": "Մաքրել բլոկները", + "COLLAPSE_BLOCK": "Կրճատել բլոկը", + "COLLAPSE_ALL": "Քանդել բլոկները", + "EXPAND_BLOCK": "Բացել բլոկը", + "EXPAND_ALL": "Բացել բլոկները", + "DISABLE_BLOCK": "Անջատել բլոկը", + "ENABLE_BLOCK": "Միացնել բլոկը", + "HELP": "Օգնություն", + "UNDO": "Հետ շրջել", + "REDO": "Կրկին անել", + "CHANGE_VALUE_TITLE": "Փոխել նշանակություն:", + "RENAME_VARIABLE": "Վերանվանել փոփոխականը...", + "NEW_VARIABLE": "Ստեղծել փոփոխական...", + "NEW_STRING_VARIABLE": "Ստեղծել տեքստային փոփոխական", + "NEW_NUMBER_VARIABLE": "Ստեղծել թվային փոփոխական", + "NEW_COLOUR_VARIABLE": "Ստեղծել գույնի փոփոխական", + "NEW_VARIABLE_TYPE_TITLE": "Փոփոխականի նոր տիպ", + "NEW_VARIABLE_TITLE": "Նոր փոփոխականի անունը՝", + "VARIABLE_ALREADY_EXISTS": "'%1' անունով փոփոխական արդեն գոյություն ունի", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' անունով փոփոխական արդեն գոյություն ունի այլ տիպի համար: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Ջնջե՞լ '%2' փոփոխականի %1 կիրառությունները", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Հնարավոր չի ջնջել %1 փոփոխականը, որովհետև այն '%2' ֆունկցիայի հայտարարման մասն է", + "DELETE_VARIABLE": "Հեռացնել '%1' փոփոխականը", + "COLOUR_PICKER_HELPURL": "https://hy.wikipedia.org/wiki/Գույն", + "COLOUR_PICKER_TOOLTIP": "Ընտրիր գույն ներկապնակից:", + "COLOUR_RANDOM_TITLE": "պատահական գույն", + "COLOUR_RANDOM_TOOLTIP": "Ընտրում է գույն պատահականության սկզբունքով:", + "COLOUR_RGB_TITLE": "գույնը", + "COLOUR_RGB_RED": "կարմիր", + "COLOUR_RGB_GREEN": "կանաչ", + "COLOUR_RGB_BLUE": "կապույտ", + "COLOUR_RGB_TOOLTIP": "Ստեղծում է գույն կարմիրի, կանաչի և կապույտի նշված քանակություններով: Բոլոր արժեքները պետք է լինեն 0-ի և 100-ի միջև:", + "COLOUR_BLEND_TITLE": "խառնել", + "COLOUR_BLEND_COLOUR1": "գույն 1", + "COLOUR_BLEND_COLOUR2": "գույն 2", + "COLOUR_BLEND_RATIO": "հարաբերակցություն", + "COLOUR_BLEND_TOOLTIP": "Խառնում է երկու գույները միմյանց հետ տրված հարաբերակցությամբ (0.0 - 1.0):", + "CONTROLS_REPEAT_TITLE": "կրկնել %1 անգամ", + "CONTROLS_REPEAT_INPUT_DO": "կատարել", + "CONTROLS_REPEAT_TOOLTIP": "Կատարում է որոշ հրահանգներ մի քանի անգամ:", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "կրկնել, քանի դեռ", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "կրկնել, քանի դեռ չի", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Քանի դեռ արժեքը ճշմարիտ է, կատարում է հրահանգները:", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Քանի դեռ արժեքը կեղծ է, կատարում է որոշակի հրահանգներ:", + "CONTROLS_FOR_TOOLTIP": "'%1' փոփոխականին վերագրում է արժեքներ, սկսելով նախնական արժեքից, տրված քայլով և կատարում է նշված հրամանները", + "CONTROLS_FOR_TITLE": "հաշվել %1-ը, %2֊ից մինչև %3, քայլը %4", + "CONTROLS_FOREACH_TITLE": "յուրաքանչյուր %1 էլեմենտի համար %2 ցանկից", + "CONTROLS_FOREACH_TOOLTIP": "Ցանկի յուրաքանչյուր անդամի արժեքը վերագրում է '%1' փոփոխականին և կատարում նշված հրամանները։", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "դուրս գալ ցիկլից", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "անցնել կրկնության հաջորդ կատարմանը", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Դադարեցնում է տվյալ կրկնությունը", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Դադարեցնում կրկնության մնացած մասը և անցնում է հաջորդ քայլին։", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ցիկլի ներսում:", + "CONTROLS_IF_TOOLTIP_1": "Եթե պայմանը ճշմարիտ է, կատարում է որոշ հրահանգներ:", + "CONTROLS_IF_TOOLTIP_2": "Եթե պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում կատարում է հրահանգների երկրորդ բլոկը:", + "CONTROLS_IF_TOOLTIP_3": "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը:", + "CONTROLS_IF_TOOLTIP_4": "Եթե առաջին պայմանը ճշմարիտ է, ապա կատարում է հրահանգների առաջին բլոկը: Հակառակ դեպքում, եթե երկրորդ պայմանն է ճշմարիտ, կատարում է հրահանգների երկրորդ բլոկը: Եթե պայմաններից ոչ մեկը ճշմարիտ չեն, ապա կատարում է հրահանգների վերջին բլոկը:", + "CONTROLS_IF_MSG_IF": "եթե", + "CONTROLS_IF_MSG_ELSEIF": "հակառակ դեպքում, եթե", + "CONTROLS_IF_MSG_ELSE": "հակառակ դեպքում", + "CONTROLS_IF_IF_TOOLTIP": "Ավելացնել, հեռացնել կամ փոխել հերթականությունը այս \"եթե\" բլոկը վերակարգավորելու համար։", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Ավելացնում է պայման «եթե» բլոկին:", + "CONTROLS_IF_ELSE_TOOLTIP": "Ավելացնել վերջնական ենթաբլոկ (այն կաշխատի, եթե բոլոր պայմանները կեղծ են)", + "LOGIC_COMPARE_HELPURL": "https://hy.wikipedia.org/wiki/Անհավասարություն", + "LOGIC_COMPARE_TOOLTIP_EQ": "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար են միմյանց:", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ հավասար չեն միմյանց:", + "LOGIC_COMPARE_TOOLTIP_LT": "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից առաջինը փոքր է երկրորդից:", + "LOGIC_COMPARE_TOOLTIP_LTE": "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը փոքր կամ հավասար է երկրորդին:", + "LOGIC_COMPARE_TOOLTIP_GT": "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ է երկրորդից:", + "LOGIC_COMPARE_TOOLTIP_GTE": "Վերադարձնում է ճշմարիտ արժեք, եթե առաջին մուտքը մեծ կամ հավասար է երկրորդին:", + "LOGIC_OPERATION_TOOLTIP_AND": "Վերադարձնում է ճշմարիտ արժեք, եթե երկու մուտքերն էլ ճշմարիտ են:", + "LOGIC_OPERATION_AND": "և", + "LOGIC_OPERATION_TOOLTIP_OR": "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքերից գոնե մեկը ճշմարիտ է:", + "LOGIC_OPERATION_OR": "կամ", + "LOGIC_NEGATE_TITLE": "ոչ %1", + "LOGIC_NEGATE_TOOLTIP": "Վերադարձնում է ճշմարիտ արժեք, եթե մուտքը կեղծ է: Վերադարձնում է կեղծ արժեք, եթե մուտքը ճշմարիտ է:", + "LOGIC_BOOLEAN_TRUE": "ճշմարիտ", + "LOGIC_BOOLEAN_FALSE": "կեղծ", + "LOGIC_BOOLEAN_TOOLTIP": "Վերադարձնում է ճշմարիտ կամ կեղծ արժեք:", + "LOGIC_NULL": "ոչինչ", + "LOGIC_NULL_TOOLTIP": "Վերադարձնում է null (ոչինչ)", + "LOGIC_TERNARY_CONDITION": "ստուգում", + "LOGIC_TERNARY_IF_TRUE": "եթե ճշմարիտ է", + "LOGIC_TERNARY_IF_FALSE": "եթե կեղծ է", + "LOGIC_TERNARY_TOOLTIP": "Ստուգում է ընտրության պայմանը։ Եթե այն ճշմարիտ է, վերադարձնում է առաջին արժեքը, հակառակ դեպքում ՝ երկրորդը։", + "MATH_NUMBER_HELPURL": "https://hy.wikipedia.org/wiki/Թիվ", + "MATH_NUMBER_TOOLTIP": "Թիվ", + "MATH_ARITHMETIC_HELPURL": "https://hy.wikipedia.org/wiki/Թվաբանություն", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Վերադարձնում է երկու թվերի գումարը:", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Վերադարձնում է երկու թվերի տարբերությունը:", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Վերադարձնում է երկու թվերի արտադրյալը", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Վերադարձնում է քանորդը", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Վերադարձնում է առաջին թիվի աստիճանը", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "Քառակուսի արմատ", + "MATH_SINGLE_TOOLTIP_ROOT": "Վերադարձնում է թվի քառակուսի աստիճանը", + "MATH_SINGLE_OP_ABSOLUTE": "բացարձակ", + "MATH_SINGLE_TOOLTIP_ABS": "Վերադարձնում է թվի բացարձակ արժեքը:", + "MATH_SINGLE_TOOLTIP_NEG": "Վերադարձնում է ժխտված թիվը:", + "MATH_SINGLE_TOOLTIP_LN": "Վերադարձնում է թվի բնական լոգարիթմը:", + "MATH_SINGLE_TOOLTIP_LOG10": "Վերադարձնում է թվի 10 հիմքով լոգարիթմը:", + "MATH_SINGLE_TOOLTIP_EXP": "Վերադարձնում է թվի աստիճանը։", + "MATH_SINGLE_TOOLTIP_POW10": "Վերադարձնում է 10֊ի նշված աստիճանը։", + "MATH_TRIG_HELPURL": "https://hy.wikipedia.org/wiki/Եռանկյունաչափական_ֆունկցիաներ", + "MATH_TRIG_TOOLTIP_SIN": "Վերադարձնում է անկյան սինուսը աստիճաններով(ոչ ռադիաններով):", + "MATH_TRIG_TOOLTIP_COS": "Վերադարձնում է անկյան կոսինուսը աստիճաններով (ոչ ռադիաններով):", + "MATH_TRIG_TOOLTIP_TAN": "Վերադարձնում է անկյան տանգենսը աստիճաններով (ոչ ռադիաններով):", + "MATH_TRIG_TOOLTIP_ASIN": "Վերադարձնում է թվի արկսինուսը(աստիճաններով):", + "MATH_TRIG_TOOLTIP_ACOS": "Վերադարձնում է թվի արկկոսինուսը:", + "MATH_TRIG_TOOLTIP_ATAN": "Վերադարձնում է թվի արկտանգենսը:", + "MATH_CONSTANT_HELPURL": "https://hy.wikipedia.org/wiki/Մաթեմատիկական_հաստատուն", + "MATH_CONSTANT_TOOLTIP": "Վերադարձնում է տարածված հաստատուններից մեկը՝ π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), կամ ∞ (անվերջություն):", + "MATH_IS_EVEN": "զույգ է", + "MATH_IS_ODD": "կենտ է", + "MATH_IS_PRIME": "պարզ է", + "MATH_IS_WHOLE": "ամբողջ է", + "MATH_IS_POSITIVE": "դրական է", + "MATH_IS_NEGATIVE": "բացասական է", + "MATH_IS_DIVISIBLE_BY": "բաժանվում է", + "MATH_IS_TOOLTIP": "Ստուգում է, թե թիվը զույգ է, կենտ է, պարզ է, ամբողջ է, դրական է, բացասական է կամ թե այն բաժանվում է որոշակի թվի վրա: Վերադարձնում է ճշմարիտ կամ կեղծ:", + "MATH_CHANGE_TITLE": "փոխել %1-ի արժեքը %2֊ով", + "MATH_CHANGE_TOOLTIP": "Ավելացնում է թիվ %1 փոփոխականին:", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Կլորացում", + "MATH_ROUND_TOOLTIP": "Կլորացնում է թիվը վերև կամ ներքև:", + "MATH_ROUND_OPERATOR_ROUND": "կլորացնել", + "MATH_ROUND_OPERATOR_ROUNDUP": "կլորացնել վեր", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "կլորացնել ցած", + "MATH_ONLIST_OPERATOR_SUM": "ցանկի գումարը", + "MATH_ONLIST_TOOLTIP_SUM": "Վերադարձնում է ցանկի բոլոր թվերի գումարը:", + "MATH_ONLIST_OPERATOR_MIN": "ցանկի նվազագույնը", + "MATH_ONLIST_TOOLTIP_MIN": "Վերադարձնում է ցանկի արժեքներից նվազագույնը", + "MATH_ONLIST_OPERATOR_MAX": "ցանկի առավելագույնը", + "MATH_ONLIST_TOOLTIP_MAX": "Վերադարձնում է ցանկի արժեքներից առավելագույնը", + "MATH_ONLIST_OPERATOR_AVERAGE": "ցանկի միջինը", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Վերադարձնում է ցանկում գտնվող արժեքների թվաբանական միջինը", + "MATH_ONLIST_OPERATOR_MEDIAN": "ցանկի միջնարժեք", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Վերադարձնում է ցանկի միջնարժեք:", + "MATH_ONLIST_OPERATOR_MODE": "ցանկի մոդան", + "MATH_ONLIST_TOOLTIP_MODE": "Վերադարձնում է ցանկի առավել հաճախ հանդիպող անդամների ցանկը։", + "MATH_ONLIST_OPERATOR_STD_DEV": "ցանկի ստանդարտ շեղում", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Վերադարձնում է ցանկի ստանդարտ շեղումը:", + "MATH_ONLIST_OPERATOR_RANDOM": "ցանկի պատահական տարր", + "MATH_ONLIST_TOOLTIP_RANDOM": "Վերադարձնում է պատահական տարր ցանկից:", + "MATH_MODULO_TITLE": "%1֊ի և %2֊ի բաժանման մնացորդը", + "MATH_MODULO_TOOLTIP": "Վերադարձնում է երկու թվերի բաժանման մնացորդը:", + "MATH_CONSTRAIN_TITLE": "սահմանափակել %1֊ը %2֊ի և %3֊ի միջև", + "MATH_CONSTRAIN_TOOLTIP": "Սահմանափակել թիվը երկու արժեքներով (ներառյալ)", + "MATH_RANDOM_INT_TITLE": "պատահական ամբողջ թիվ %1 -ից %2 -ը", + "MATH_RANDOM_INT_TOOLTIP": "Վերադարձնում է պատահական ամբողջ թիվ տրված երկու թվերի միջև (ներառյալ):", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Պատահական_թվերի_գեներատոր", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "պատահական կոտորակ", + "MATH_RANDOM_FLOAT_TOOLTIP": "Վերադարձնում է պատահական թիվ 0.0-ից (ներառյալ) 1.0 միջակայքից:", + "MATH_ATAN2_TITLE": "X:%1 Y:%2 ֊ի atan2֊ը", + "MATH_ATAN2_TOOLTIP": "Վերադարձնում է (X, Y) կետի արկտանգենսը աստիճաններով -180-ից մինչև 180:", + "TEXT_TEXT_TOOLTIP": "Տառ, բառ կամ տեքստի տող:", + "TEXT_JOIN_TITLE_CREATEWITH": "ստեղծել տեքստ", + "TEXT_JOIN_TOOLTIP": "Ստեղծում է տեքստի մաս՝ միմյանց կցելով ցանկացած քանակությամբ տարրեր:", + "TEXT_CREATE_JOIN_TITLE_JOIN": "կցել", + "TEXT_CREATE_JOIN_TOOLTIP": "Այս տեքստային բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հերթականությունը", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ավելացնել էլեմենտ տեքստին:", + "TEXT_APPEND_TITLE": "%1֊ին կցել %2 տեքստը", + "TEXT_APPEND_TOOLTIP": "Կցել տեքստ '%1' փոփոխականին", + "TEXT_LENGTH_TITLE": "%1 -ի երկարությունը", + "TEXT_LENGTH_TOOLTIP": "Վերադարձնում է տրված տեքստի տառերի քանակը (ներառյալ բացատները)", + "TEXT_ISEMPTY_TITLE": "%1 -ը դատարկ է", + "TEXT_ISEMPTY_TOOLTIP": "Վերադարձնում է ճշմարիտ արժեք, եթե տրամադրված տեքստը դատարկ է:", + "TEXT_INDEXOF_TOOLTIP": "Վերադարձնում է առաջին տեքստի հանդիպման առաջին (կամ վերջին) դիրքը երկրորդ տեքստում։ Վերադարձնում է %1, եթե տեքստը չի գտնվել։", + "TEXT_INDEXOF_TITLE": "Տեքստում %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "գտնել տեքստի առաջին հանդիպումը", + "TEXT_INDEXOF_OPERATOR_LAST": "գտնել տեքստի վերջին հանդիպումը", + "TEXT_CHARAT_TITLE": "տեքստում %1 %2", + "TEXT_CHARAT_FROM_START": "վերցնել տառ №", + "TEXT_CHARAT_FROM_END": "վերցնել տառ № վերջից", + "TEXT_CHARAT_FIRST": "վերցնել առաջին տառը", + "TEXT_CHARAT_LAST": "վերցնել վերջին տառը", + "TEXT_CHARAT_RANDOM": "վերցնել պատահական տառ", + "TEXT_CHARAT_TOOLTIP": "Վերադարձնում է նշված դիրքի տառը", + "TEXT_GET_SUBSTRING_TOOLTIP": "Վերադարձնում է տեքստի նշված մասը։", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "տեքստում", + "TEXT_GET_SUBSTRING_START_FROM_START": "տալիս է ենթատող սկսելով # տառից", + "TEXT_GET_SUBSTRING_START_FROM_END": "տալիս է ենթատող # տառից սկսած, վերջից", + "TEXT_GET_SUBSTRING_START_FIRST": "տալիս է ենթատող առաջին տառից", + "TEXT_GET_SUBSTRING_END_FROM_START": "մինչև # տառը", + "TEXT_GET_SUBSTRING_END_FROM_END": "մինչև # տառը, վերջից", + "TEXT_GET_SUBSTRING_END_LAST": "մինչև վերջին տառը", + "TEXT_CHANGECASE_TOOLTIP": "Վերադարձնում է տեքստի կրկնօրինակը, ՄԵԾԱՏԱՌԵՐՈՎ կամ փոքրատառերով", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "բերել ՄԵԾԱՏԱՌԵՐԻ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "բերել փոքրատառերի", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "բերել Սկզբնա Մեծատառերի", + "TEXT_TRIM_TOOLTIP": "Վերադարձնում է տեքստի կրկնօրինակը, առանց սկզբի կամ/և վերջի բացատների։", + "TEXT_TRIM_OPERATOR_BOTH": "կտրում է բացատները երկու կողմերից", + "TEXT_TRIM_OPERATOR_LEFT": "կտրում է բացատները ձախ կողմից", + "TEXT_TRIM_OPERATOR_RIGHT": "կտրում է բացատները աջ կողմից", + "TEXT_PRINT_TITLE": "տպել %1", + "TEXT_PRINT_TOOLTIP": "Տպում է նշված տեքստը, թիվը կամ այլ արժեք․", + "TEXT_PROMPT_TYPE_TEXT": "հարցնել տեքստ, հուշումով", + "TEXT_PROMPT_TYPE_NUMBER": "հացնել թիվ, հուշումով", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Հարցնել թիվ օգտատիրոջից։", + "TEXT_PROMPT_TOOLTIP_TEXT": "Հարցնել տեքստ օգտատիրոջից։", + "TEXT_COUNT_MESSAGE0": "հաշվել %1 %2֊ում", + "TEXT_COUNT_TOOLTIP": "Հաշվել, թե քանի անգամ է տեքստը հանդիպում մեկ այլ տեքստի մեջ։", + "TEXT_REPLACE_MESSAGE0": "փոխարինել %1֊ը %2֊ով %3֊ում", + "TEXT_REPLACE_TOOLTIP": "Փոխարինել տեքստի բոլոր գտնված տարբերակները մեկ այլ տեսքով։", + "TEXT_REVERSE_MESSAGE0": "շրջել %1", + "TEXT_REVERSE_TOOLTIP": "Փոխում է տեքստում տառերի հաջորդականությունը։", + "LISTS_CREATE_EMPTY_TITLE": "ստեղծել դատարկ ցանկ", + "LISTS_CREATE_EMPTY_TOOLTIP": "Վերադարձնում է 0 երկարությամբ ցանկ, որը տվյալներ չի պարունակում:", + "LISTS_CREATE_WITH_TOOLTIP": "Ստեղծում է ցանկ ցանկացած քանակությամբ տվյալներով:", + "LISTS_CREATE_WITH_INPUT_WITH": "ստեղծել ցանկ", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ցանկ", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Այս ցանկ բլոկը վերակառուցելու համար ավելացրու, հեռացրու կամ փոխիր բաժինների հաջորդականությունը։", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ավելացնել տարր ցանկին:", + "LISTS_REPEAT_TOOLTIP": "Տրված արժեքը նշված քանակով կրկնելու միջոցով, ստեղծում է ցանկ։", + "LISTS_REPEAT_TITLE": "ստեղծել ցանկ, %1 արժեքը կրկնելով %2 անգամ", + "LISTS_LENGTH_TITLE": "%1֊ի երկարությունը", + "LISTS_LENGTH_TOOLTIP": "Վերադարձնում է ցանկի երկարությունը:", + "LISTS_ISEMPTY_TITLE": "%1 դատարկ է", + "LISTS_ISEMPTY_TOOLTIP": "Վերադարձնում է \"ճշմարիտ\" եթե ցանկը դատարկ է։", + "LISTS_INLIST": "ցանկում", + "LISTS_INDEX_OF_FIRST": "գտնել անդամի առաջին հանդիպման դիրքը", + "LISTS_INDEX_OF_LAST": "գտնել անդամի վերջին հանդիպման դիրքը", + "LISTS_INDEX_OF_TOOLTIP": "Վերադարձնում է ցանկում անդամի առաջին/վերջին հանդիպման դիրքը։ Վերադարձնում է %1, եթե անդամը չի գտնվել։", + "LISTS_GET_INDEX_GET": "վերցնել", + "LISTS_GET_INDEX_GET_REMOVE": "վերցնել և հեռացնել", + "LISTS_GET_INDEX_REMOVE": "հեռացնել", + "LISTS_GET_INDEX_FROM_END": "№ վերջից", + "LISTS_GET_INDEX_FIRST": "առաջինը", + "LISTS_GET_INDEX_LAST": "վերջինը", + "LISTS_GET_INDEX_RANDOM": "պատահական", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 առաջին տարրն է:", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 վերջին տարրն է:", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Վերադարձնում է ցանկի առաջին տարրը:", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Վերադարձնում է ցանկի վերջին տարրը:", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Վերադարձնում է ցանկի պատահական տարր:", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Հեռացնում և վերադարձնում է նշված դիրքում գտնվող անդամը ցանկից։", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Հեռացնում և վերադարձնում է ցանկի առաջին տարրը:", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Հեռացնում և վերադարձնում է ցանկի վերջին տարրը:", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Հեռացնում և վերադարձնում է ցանկի պատահական տարր:", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Ցանկից հեռացնում է նշված դիրքում գտնվող անդամը։", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Հեռացնում է ցանկի առաջին տարրը:", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Հեռացնում է ցանկի վերջին տարրը:", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Հեռացնում է ցանկից պատահական տարր:", + "LISTS_SET_INDEX_SET": "դնել", + "LISTS_SET_INDEX_INSERT": "ներմուծել", + "LISTS_SET_INDEX_INPUT_TO": "որպես", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Տեղադրում է անդամը ցանկի նշված դիրքում։", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Սահմանում է ցանկի առաջին տարրը:", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Սահմանում է ցանկի վերջին տարրը:", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Սահմանում է ցանկից պատահական տարր:", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ներմուծում է անդամը ցանկի նշված դիրքում։", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ներմուծում է անդամը ցանկի սկզբում։", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ավելացնում է անդամ ցանկի վերջում։", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ներմուծում է անդամը ցանկի պատահական դիրքում։", + "LISTS_GET_SUBLIST_START_FROM_START": "վերցնել ենթացանկ, սկսած #", + "LISTS_GET_SUBLIST_START_FROM_END": "վերցնել ենթացանկ, սկսած # վերջից", + "LISTS_GET_SUBLIST_START_FIRST": "վերցնել ենթա֊ցանկ սկզբից", + "LISTS_GET_SUBLIST_END_FROM_START": "մինչև #", + "LISTS_GET_SUBLIST_END_FROM_END": "մինչև # վերջից", + "LISTS_GET_SUBLIST_END_LAST": "մինչև վերջ", + "LISTS_GET_SUBLIST_TOOLTIP": "Ստեղծում է ցանկի նշված մասի պատճենը։", + "LISTS_SORT_TITLE": "դասավորել %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Դասավորում է ցանկի պատճենը", + "LISTS_SORT_ORDER_ASCENDING": "աճման կարգ", + "LISTS_SORT_ORDER_DESCENDING": "նվազման կարգ", + "LISTS_SORT_TYPE_NUMERIC": "թվային կարգ", + "LISTS_SORT_TYPE_TEXT": "այբբենական կարգ", + "LISTS_SORT_TYPE_IGNORECASE": "այբենական, անտեսել ռեգիստրը", + "LISTS_SPLIT_LIST_FROM_TEXT": "ստեղծել ցանկ տեքստից", + "LISTS_SPLIT_TEXT_FROM_LIST": "ստեղծել տեքստ ցանկից", + "LISTS_SPLIT_WITH_DELIMITER": "բաժանարարով", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Տեքստը վեր է ածվում ցանկի, նշված բաժանարարով։", + "LISTS_SPLIT_TOOLTIP_JOIN": "Ցանկից ստեղծվում է միացյալ տեքստ, ցանկի անդամները միացվում են բաժանարարներով։", + "LISTS_REVERSE_MESSAGE0": "շրջել %1", + "LISTS_REVERSE_TOOLTIP": "Շրջում է ցանկի պատճենը։", + "VARIABLES_GET_TOOLTIP": "Վերադարձնում է այս փոփոխականի արժեքը:", + "VARIABLES_GET_CREATE_SET": "Ստեղծել 'վերագրել %1'", + "VARIABLES_SET": "վերագրել %1֊ին %2 արժեքը", + "VARIABLES_SET_TOOLTIP": "Փոփոխականին վերագրում է ներմուծված արժեքը։", + "VARIABLES_SET_CREATE_GET": "ստեղծել 'ստանալ %1'", + "PROCEDURES_DEFNORETURN_TITLE": "ֆունկցիա", + "PROCEDURES_DEFNORETURN_PROCEDURE": "կատարել որևէ բան", + "PROCEDURES_BEFORE_PARAMS": "պարամետրերի ցանկ՝", + "PROCEDURES_CALL_BEFORE_PARAMS": "պարամետրերի ցանկ՝", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Ստեղծում է ֆունկցիա, որը արժեք չի վերադարձնում:", + "PROCEDURES_DEFNORETURN_COMMENT": "Նկարագրիր այս ֆունկցիան...", + "PROCEDURES_DEFRETURN_RETURN": "վերադարձնել", + "PROCEDURES_DEFRETURN_TOOLTIP": "Ստեղծում է ֆունկցիա, որը վերադարձնում է արժեք:", + "PROCEDURES_ALLOW_STATEMENTS": "թույլատրել արտահայտությունները", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Զգուշացում։ Այս ֆունկցիան ունի կրկնվող պարամտերեր։", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Կատարում է %1 ֆունկցիան", + "PROCEDURES_CALLRETURN_TOOLTIP": "Կատարում է '%1' ֆունկցիան և օգտագործում դրա արդյունքը։", + "PROCEDURES_MUTATORCONTAINER_TITLE": "մուտքեր", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Ավելացնել, հեռացնել կամ վերադասավորել է այս ֆունկցիայի մուտքերը (պարամետրերը)։", + "PROCEDURES_MUTATORARG_TITLE": "մուտքի անուն՝", + "PROCEDURES_MUTATORARG_TOOLTIP": "Ֆունկցիային ավելալցնել մուտք (պարամետր)։", + "PROCEDURES_HIGHLIGHT_DEF": "Ընդգծել ֆունկցիայի հայտարարումը", + "PROCEDURES_CREATE_DO": "Ստեղծել '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Եթե արժեքը ճշմարիտ է, վերադարձնում է երկորդ արժեքը:", + "PROCEDURES_IFRETURN_WARNING": "Զգուշացում. Այս բլոկը կարող է օգտագործվել միայն ֆունկցիայի սահմանման ներսում:", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Մի բան ասա ․․․", + "DIALOG_OK": "Լավ", + "DIALOG_CANCEL": "Չեղարկել" +} diff --git a/msg/json/ia.json b/msg/json/ia.json index 98ddab6124d..7116e7034b5 100644 --- a/msg/json/ia.json +++ b/msg/json/ia.json @@ -1,326 +1,326 @@ -{ - "@metadata": { - "authors": [ - "Fanjiayi", - "Karmwiki", - "McDutchie" - ] - }, - "VARIABLES_DEFAULT_NAME": "cosa", - "UNNAMED_KEY": "sin nomine", - "TODAY": "Hodie", - "DUPLICATE_BLOCK": "Duplicar", - "ADD_COMMENT": "Adder commento", - "REMOVE_COMMENT": "Remover commento", - "DUPLICATE_COMMENT": "Duplicar commento", - "EXTERNAL_INPUTS": "Entrata externe", - "INLINE_INPUTS": "Entrata interne", - "DELETE_BLOCK": "Deler bloco", - "DELETE_X_BLOCKS": "Deler %1 blocos", - "DELETE_ALL_BLOCKS": "Deler tote le %1 blocos?", - "CLEAN_UP": "Rangiar le blocos", - "COLLAPSE_BLOCK": "Plicar bloco", - "COLLAPSE_ALL": "Plicar blocos", - "EXPAND_BLOCK": "Displicar bloco", - "EXPAND_ALL": "Displicar blocos", - "DISABLE_BLOCK": "Disactivar bloco", - "ENABLE_BLOCK": "Activar bloco", - "HELP": "Adjuta", - "UNDO": "Disfacer", - "REDO": "Refacer", - "CHANGE_VALUE_TITLE": "Cambiar valor:", - "RENAME_VARIABLE": "Renominar variabile...", - "RENAME_VARIABLE_TITLE": "Renominar tote le variabiles '%1' a:", - "NEW_VARIABLE": "Crear variabile...", - "NEW_STRING_VARIABLE": "Crear variabile textual...", - "NEW_NUMBER_VARIABLE": "Crear variabile numeric...", - "NEW_COLOUR_VARIABLE": "Crear variabile de color...", - "NEW_VARIABLE_TYPE_TITLE": "Nove typo de variabile:", - "NEW_VARIABLE_TITLE": "Nomine del nove variabile:", - "VARIABLE_ALREADY_EXISTS": "Un variabile con le nomine '%1' jam existe.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Un variabile con le nomine '%1' jam existe pro un altere typo: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Deler %1 usos del variabile '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Impossibile deler le variabile '%1' perque illo face parte del definition del function '%2'", - "DELETE_VARIABLE": "Deler le variabile '%1'", - "COLOUR_PICKER_HELPURL": "https://ia.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Elige un color del paletta.", - "COLOUR_RANDOM_TITLE": "color aleatori", - "COLOUR_RANDOM_TOOLTIP": "Eliger un color al hasardo.", - "COLOUR_RGB_TITLE": "colorar con", - "COLOUR_RGB_RED": "rubie", - "COLOUR_RGB_GREEN": "verde", - "COLOUR_RGB_BLUE": "blau", - "COLOUR_RGB_TOOLTIP": "Crear un color con le quantitate specificate de rubie, verde e blau. Tote le valores debe esser inter 0 e 100.", - "COLOUR_BLEND_TITLE": "miscer", - "COLOUR_BLEND_COLOUR1": "color 1", - "COLOUR_BLEND_COLOUR2": "color 2", - "COLOUR_BLEND_RATIO": "ration", - "COLOUR_BLEND_TOOLTIP": "Misce duo colores con un ration specificate (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://ia.wikipedia.org/wiki/Bucla_for", - "CONTROLS_REPEAT_TITLE": "repeter %1 vices", - "CONTROLS_REPEAT_INPUT_DO": "face", - "CONTROLS_REPEAT_TOOLTIP": "Exequer certe instructiones plure vices.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repeter durante que", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repeter usque a", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Durante que un valor es ver, exequer certe instructiones.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Durante que un valor es false, exequer certe instructiones.", - "CONTROLS_FOR_TOOLTIP": "Mitter in le variabile '%1' le valores ab le numero initial usque al numero final, con passos secundo le intervallo specificate, e exequer le blocos specificate.", - "CONTROLS_FOR_TITLE": "contar con %1 de %2 a %3 per %4", - "CONTROLS_FOREACH_TITLE": "pro cata elemento %1 in lista %2", - "CONTROLS_FOREACH_TOOLTIP": "Pro cata elemento in un lista, mitter lo in le variabile '%1' e exequer certe instructiones.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "escappar del bucla", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuar con le proxime iteration del bucla", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Escappar del bucla continente.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Saltar le resto de iste bucla e continuar con le proxime iteration.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Attention: Iste bloco pote solmente esser usate in un bucla.", - "CONTROLS_IF_TOOLTIP_1": "Si un valor es ver, exequer certe instructiones.", - "CONTROLS_IF_TOOLTIP_2": "Si un valor es ver, exequer le prime bloco de instructiones. Si non, exequer le secunde bloco de instructiones.", - "CONTROLS_IF_TOOLTIP_3": "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones.", - "CONTROLS_IF_TOOLTIP_4": "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones. Si necun del valores es ver, exequer le ultime bloco de instructiones.", - "CONTROLS_IF_MSG_IF": "si", - "CONTROLS_IF_MSG_ELSEIF": "si non si", - "CONTROLS_IF_MSG_ELSE": "si non", - "CONTROLS_IF_IF_TOOLTIP": "Adde, remove o reordina sectiones pro reconfigurar iste bloco \"si\".", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Adder un condition al bloco \"si\".", - "CONTROLS_IF_ELSE_TOOLTIP": "Adder un condition final de reserva al bloco \"si\".", - "LOGIC_COMPARE_HELPURL": "https://ia.wikipedia.org/wiki/Inequalitate_(mathematica)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Retornar ver si le duo entratas es equal.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Retornar ver si le duo entratas non es equal.", - "LOGIC_COMPARE_TOOLTIP_LT": "Retornar ver si le prime entrata es minor que le secunde.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Retornar ver si le prime entrata es minor que o equal al secunde.", - "LOGIC_COMPARE_TOOLTIP_GT": "Retornar ver si le prime entrata es major que le secunde.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Retornar ver si le prime entrata es major que o equal al secunde.", - "LOGIC_OPERATION_TOOLTIP_AND": "Retornar ver si ambe entratas es ver.", - "LOGIC_OPERATION_AND": "e", - "LOGIC_OPERATION_TOOLTIP_OR": "Retornar ver si al minus un del entratas es ver.", - "LOGIC_OPERATION_OR": "o", - "LOGIC_NEGATE_TITLE": "non %1", - "LOGIC_NEGATE_TOOLTIP": "Retornar ver si le entrata es false. Retornar false si le entrata es ver.", - "LOGIC_BOOLEAN_TRUE": "ver", - "LOGIC_BOOLEAN_FALSE": "false", - "LOGIC_BOOLEAN_TOOLTIP": "Retorna o ver o false.", - "LOGIC_NULL": "nulle", - "LOGIC_NULL_TOOLTIP": "Retorna nulle.", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "si ver", - "LOGIC_TERNARY_IF_FALSE": "si false", - "LOGIC_TERNARY_TOOLTIP": "Verificar le condition in 'test'. Si le condition es ver, retorna le valor de 'si ver'; si non, retorna le valor de 'si false'.", - "MATH_NUMBER_HELPURL": "https://ia.wikipedia.org/wiki/Numero", - "MATH_NUMBER_TOOLTIP": "Un numero.", - "MATH_ARITHMETIC_HELPURL": "https://ia.wikipedia.org/wiki/Arithmetica", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Retornar le summa del duo numeros.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retornar le differentia del duo numeros.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retornar le producto del duo numeros.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retornar le quotiente del duo numeros.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Retornar le prime numero elevate al potentia del secunde numero.", - "MATH_SINGLE_HELPURL": "https://ia.wikipedia.org/wiki/Radice_quadrate", - "MATH_SINGLE_OP_ROOT": "radice quadrate", - "MATH_SINGLE_TOOLTIP_ROOT": "Retornar le radice quadrate de un numero.", - "MATH_SINGLE_OP_ABSOLUTE": "absolute", - "MATH_SINGLE_TOOLTIP_ABS": "Retornar le valor absolute de un numero.", - "MATH_SINGLE_TOOLTIP_NEG": "Retornar le negation de un numero.", - "MATH_SINGLE_TOOLTIP_LN": "Retornar le logarithmo natural de un numero.", - "MATH_SINGLE_TOOLTIP_LOG10": "Retornar le logarithmo in base 10 de un numero.", - "MATH_SINGLE_TOOLTIP_EXP": "Retornar e elevate al potentia de un numero.", - "MATH_SINGLE_TOOLTIP_POW10": "Retornar 10 elevate al potentia de un numero.", - "MATH_TRIG_TOOLTIP_SIN": "Retornar le sino de un grado (non radiano).", - "MATH_TRIG_TOOLTIP_COS": "Retornar le cosino de un grado (non radiano).", - "MATH_TRIG_TOOLTIP_TAN": "Retornar le tangente de un grado (non radiano).", - "MATH_TRIG_TOOLTIP_ASIN": "Retornar le arcosino de un numero.", - "MATH_TRIG_TOOLTIP_ACOS": "Retornar le arcocosino de un numero.", - "MATH_TRIG_TOOLTIP_ATAN": "Retornar le arcotangente de un numero.", - "MATH_CONSTANT_HELPURL": "https://ia.wikipedia.org/wiki/Constante_mathematic", - "MATH_CONSTANT_TOOLTIP": "Retornar un del constantes commun: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…) o ∞ (infinite).", - "MATH_IS_EVEN": "es par", - "MATH_IS_ODD": "es impare", - "MATH_IS_PRIME": "es prime", - "MATH_IS_WHOLE": "es integre", - "MATH_IS_POSITIVE": "es positive", - "MATH_IS_NEGATIVE": "es negative", - "MATH_IS_DIVISIBLE_BY": "es divisibile per", - "MATH_IS_TOOLTIP": "Verificar si un numero es par, impare, prime, integre, positive, negative, o divisibile per un certe numero. Retorna ver o false.", - "MATH_CHANGE_TITLE": "cambiar %1 per %2", - "MATH_CHANGE_TOOLTIP": "Adder un numero al variabile '%1'.", - "MATH_ROUND_HELPURL": "https://ia.wikipedia.org/wiki/Rotundamento", - "MATH_ROUND_TOOLTIP": "Arrotundar un numero a supra o a infra.", - "MATH_ROUND_OPERATOR_ROUND": "arrotundar", - "MATH_ROUND_OPERATOR_ROUNDUP": "arrotundar a supra", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "arrotundar a infra", - "MATH_ONLIST_OPERATOR_SUM": "summa del lista", - "MATH_ONLIST_TOOLTIP_SUM": "Retornar le summa de tote le numeros in le lista.", - "MATH_ONLIST_OPERATOR_MIN": "minimo del lista", - "MATH_ONLIST_TOOLTIP_MIN": "Retornar le numero le plus parve in le lista.", - "MATH_ONLIST_OPERATOR_MAX": "maximo del lista", - "MATH_ONLIST_TOOLTIP_MAX": "Retornar le numero le plus grande in le lista.", - "MATH_ONLIST_OPERATOR_AVERAGE": "media del lista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Retornar le media arithmetic del valores numeric in le lista.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana del lista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Retornar le numero median del lista.", - "MATH_ONLIST_OPERATOR_MODE": "modas del lista", - "MATH_ONLIST_TOOLTIP_MODE": "Retornar un lista del elemento(s) le plus commun in le lista.", - "MATH_ONLIST_OPERATOR_STD_DEV": "deviation standard del lista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Retornar le deviation standard del lista.", - "MATH_ONLIST_OPERATOR_RANDOM": "elemento aleatori del lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Retornar un elemento aleatori del lista.", - "MATH_MODULO_TITLE": "resto de %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Retornar le resto del division del duo numeros.", - "MATH_CONSTRAIN_TITLE": "limitar %1 inter %2 e %3", - "MATH_CONSTRAIN_TOOLTIP": "Limitar un numero a esser inter le limites specificate (incluse).", - "MATH_RANDOM_INT_TITLE": "numero integre aleatori inter %1 e %2", - "MATH_RANDOM_INT_TOOLTIP": "Retornar un numero integre aleatori inter le duo limites specificate, incluse.", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fraction aleatori", - "MATH_RANDOM_FLOAT_TOOLTIP": "Retornar un fraction aleatori inter 0.0 (incluse) e 1.0 (excluse).", - "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Retornar le arco tangente del puncto (X, Y) in grados de -180 a 180.", - "TEXT_TEXT_TOOLTIP": "Un littera, parola o linea de texto.", - "TEXT_JOIN_TITLE_CREATEWITH": "crear texto con", - "TEXT_JOIN_TOOLTIP": "Crear un pecia de texto uniente un certe numero de elementos.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", - "TEXT_CREATE_JOIN_TOOLTIP": "Adde, remove o reordina sectiones pro reconfigurar iste bloco de texto.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Adder un elemento al texto.", - "TEXT_APPEND_TITLE": "a %1 adjunger texto %2", - "TEXT_APPEND_TOOLTIP": "Adjunger un texto al variabile '%1'.", - "TEXT_LENGTH_TITLE": "longitude de %1", - "TEXT_LENGTH_TOOLTIP": "Retorna le numero de litteras (incluse spatios) in le texto fornite.", - "TEXT_ISEMPTY_TITLE": "%1 es vacue", - "TEXT_ISEMPTY_TOOLTIP": "Retorna ver si le texto fornite es vacue.", - "TEXT_INDEXOF_TOOLTIP": "Retorna le indice del prime/ultime occurrentia del prime texto in le secunde texto. Retorna %1 si le texto non es trovate.", - "TEXT_INDEXOF_TITLE": "in le texto %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "cercar le prime occurrentia del texto", - "TEXT_INDEXOF_OPERATOR_LAST": "cercar le ultime occurrentia del texto", - "TEXT_CHARAT_TITLE": "in le texto %1 %2", - "TEXT_CHARAT_FROM_START": "prender le littera №", - "TEXT_CHARAT_FROM_END": "prender ab le fin le littera №", - "TEXT_CHARAT_FIRST": "prender le prime littera", - "TEXT_CHARAT_LAST": "prender le ultime littera", - "TEXT_CHARAT_RANDOM": "prender un littera aleatori", - "TEXT_CHARAT_TOOLTIP": "Retorna le littera presente al position specificate.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Retorna le parte specificate del texto.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in le texto", - "TEXT_GET_SUBSTRING_START_FROM_START": "prender subcatena ab le littera №", - "TEXT_GET_SUBSTRING_START_FROM_END": "prender subcatena ab le fin ab le littera №", - "TEXT_GET_SUBSTRING_START_FIRST": "prender subcatena ab le prime littera", - "TEXT_GET_SUBSTRING_END_FROM_START": "usque al littera №", - "TEXT_GET_SUBSTRING_END_FROM_END": "ab le fin usque al littera №", - "TEXT_GET_SUBSTRING_END_LAST": "usque al ultime littera", - "TEXT_CHANGECASE_TOOLTIP": "Retornar un copia del texto con differente majusculas/minusculas.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "in MAJUSCULAS", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "in minusculas", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "con Initiales Majuscule", - "TEXT_TRIM_TOOLTIP": "Retornar un copia del texto con spatios eliminate de un extremitate o ambes.", - "TEXT_TRIM_OPERATOR_BOTH": "remover spatios de ambe lateres de", - "TEXT_TRIM_OPERATOR_LEFT": "remover spatios del sinistre latere de", - "TEXT_TRIM_OPERATOR_RIGHT": "remover spatios del dextre latere de", - "TEXT_PRINT_TITLE": "scriber %1", - "TEXT_PRINT_TOOLTIP": "Scriber le texto, numero o altere valor specificate.", - "TEXT_PROMPT_TYPE_TEXT": "peter un texto con le message", - "TEXT_PROMPT_TYPE_NUMBER": "peter un numero con le message", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Peter un numero al usator.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Peter un texto al usator.", - "TEXT_COUNT_MESSAGE0": "contar %1 in %2", - "TEXT_COUNT_TOOLTIP": "Contar quante vices un texto occurre intra un altere texto.", - "TEXT_REPLACE_MESSAGE0": "reimplaciar %1 per %2 in %3", - "TEXT_REPLACE_TOOLTIP": "Reimplaciar tote le occurrentias de un texto intra un altere texto.", - "TEXT_REVERSE_MESSAGE0": "inverter %1", - "TEXT_REVERSE_TOOLTIP": "Inverte le ordine del characteres in le texto.", - "LISTS_CREATE_EMPTY_TITLE": "crear un lista vacue", - "LISTS_CREATE_EMPTY_TOOLTIP": "Retorna un lista, de longitude 0, sin datos.", - "LISTS_CREATE_WITH_TOOLTIP": "Crear un lista con un numero qualcunque de elementos.", - "LISTS_CREATE_WITH_INPUT_WITH": "crear lista con", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Adde, remove o reordina sectiones pro reconfigurar iste bloco de listas.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Adder un elemento al lista.", - "LISTS_REPEAT_TOOLTIP": "Crea un lista que contine le valor fornite, repetite le numero specificate de vices.", - "LISTS_REPEAT_TITLE": "crear lista con elemento %1 repetite %2 vices", - "LISTS_LENGTH_TITLE": "longitude de %1", - "LISTS_LENGTH_TOOLTIP": "Retorna le longitude de un lista.", - "LISTS_ISEMPTY_TITLE": "%1 es vacue", - "LISTS_ISEMPTY_TOOLTIP": "Retorna ver si le lista es vacue.", - "LISTS_INLIST": "in lista", - "LISTS_INDEX_OF_FIRST": "cercar le prime occurrentia del elemento", - "LISTS_INDEX_OF_LAST": "cercar le ultime occurrentia del elemento", - "LISTS_INDEX_OF_TOOLTIP": "Retorna le indice del prime/ultime occurrentia del elemento in le lista. Retorna %1 si le elemento non es trovate.", - "LISTS_GET_INDEX_GET": "prender", - "LISTS_GET_INDEX_GET_REMOVE": "prender e remover", - "LISTS_GET_INDEX_REMOVE": "remover", - "LISTS_GET_INDEX_FROM_END": "№ ab fin", - "LISTS_GET_INDEX_FIRST": "prime", - "LISTS_GET_INDEX_LAST": "ultime", - "LISTS_GET_INDEX_RANDOM": "aleatori", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 es le prime elemento.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 es le ultime elemento.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Retorna le elemento presente al position specificate in un lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Retorna le prime elemento in un lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Retorna le ultime elemento in un lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Retorna un elemento aleatori in un lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Remove e retorna le elemento presente al position specificate in un lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Remove e retorna le prime elemento in un lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Remove e retorna le ultime elemento in un lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Remove e retorna un elemento aleatori in un lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Remove le elemento presente al position specificate in un lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Remove le prime elemento in un lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Remove le ultime elemento in un lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Remove un elemento aleatori in un lista.", - "LISTS_SET_INDEX_SET": "mitter", - "LISTS_SET_INDEX_INSERT": "inserer in", - "LISTS_SET_INDEX_INPUT_TO": "a", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Defini le valor del elemento al position specificate in un lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Defini le valor del prime elemento in un lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Defini le valor del ultime elemento in un lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Defini le valor de un elemento aleatori in un lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insere le elemento al position specificate in un lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insere le elemento al initio de un lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Adjunge le elemento al fin de un lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insere le elemento a un position aleatori in un lista.", - "LISTS_GET_SUBLIST_START_FROM_START": "prender sublista ab №", - "LISTS_GET_SUBLIST_START_FROM_END": "prender sublista ab № a partir del fin", - "LISTS_GET_SUBLIST_START_FIRST": "prender sublista ab initio", - "LISTS_GET_SUBLIST_END_FROM_START": "usque al №", - "LISTS_GET_SUBLIST_END_FROM_END": "usque al № ab fin", - "LISTS_GET_SUBLIST_END_LAST": "usque al ultime", - "LISTS_GET_SUBLIST_TOOLTIP": "Crea un copia del parte specificate de un lista.", - "LISTS_SORT_TITLE": "ordinamento %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Ordinar un copia de un lista.", - "LISTS_SORT_ORDER_ASCENDING": "ascendente", - "LISTS_SORT_ORDER_DESCENDING": "descendente", - "LISTS_SORT_TYPE_NUMERIC": "numeric", - "LISTS_SORT_TYPE_TEXT": "alphabetic", - "LISTS_SORT_TYPE_IGNORECASE": "alphabetic, ignorar majuscula/minuscula", - "LISTS_SPLIT_LIST_FROM_TEXT": "crear lista ab texto", - "LISTS_SPLIT_TEXT_FROM_LIST": "crear texto ab lista", - "LISTS_SPLIT_WITH_DELIMITER": "con delimitator", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Divider texto in un lista de textos, separante lo a cata delimitator.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Unir un lista de textos, separate per un delimitator, in un sol texto.", - "LISTS_REVERSE_MESSAGE0": "inverter %1", - "LISTS_REVERSE_TOOLTIP": "Inverter un copia de un lista.", - "VARIABLES_GET_TOOLTIP": "Retorna le valor de iste variabile.", - "VARIABLES_GET_CREATE_SET": "Crea 'mitter %1'", - "VARIABLES_SET": "mitter %1 a %2", - "VARIABLES_SET_TOOLTIP": "Mitte iste variabile al valor del entrata.", - "VARIABLES_SET_CREATE_GET": "Crear 'prender %1'", - "PROCEDURES_DEFNORETURN_TITLE": "pro", - "PROCEDURES_DEFNORETURN_PROCEDURE": "facer qualcosa", - "PROCEDURES_BEFORE_PARAMS": "con:", - "PROCEDURES_CALL_BEFORE_PARAMS": "con:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea un function que non retorna un valor.", - "PROCEDURES_DEFNORETURN_COMMENT": "Describe iste function...", - "PROCEDURES_DEFRETURN_RETURN": "retornar", - "PROCEDURES_DEFRETURN_TOOLTIP": "Crea un function que retorna un valor.", - "PROCEDURES_ALLOW_STATEMENTS": "permitter declarationes", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Attention: Iste function ha parametros duplicate.", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Executar le function '%1' definite per le usator.", - "PROCEDURES_CALLRETURN_TOOLTIP": "Executar le function '%1' definite per le usator e usar su resultato.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "entratas", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Adder, remover o reordinar le entratas pro iste function.", - "PROCEDURES_MUTATORARG_TITLE": "nomine del entrata:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Adder un entrata al function.", - "PROCEDURES_HIGHLIGHT_DEF": "Accentuar le definition del function", - "PROCEDURES_CREATE_DO": "Crear '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Si un valor es ver, alora retornar un secunde valor.", - "PROCEDURES_IFRETURN_WARNING": "Attention: Iste bloco pote solmente esser usate in le definition de un function.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Dice qualcosa...", - "WORKSPACE_ARIA_LABEL": "Spatio de travalio de Blockly", - "COLLAPSED_WARNINGS_WARNING": "Blocos plicate contine advertimentos.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Cancellar" -} +{ + "@metadata": { + "authors": [ + "Fanjiayi", + "Karmwiki", + "McDutchie" + ] + }, + "VARIABLES_DEFAULT_NAME": "cosa", + "UNNAMED_KEY": "sin nomine", + "TODAY": "Hodie", + "DUPLICATE_BLOCK": "Duplicar", + "ADD_COMMENT": "Adder commento", + "REMOVE_COMMENT": "Remover commento", + "DUPLICATE_COMMENT": "Duplicar commento", + "EXTERNAL_INPUTS": "Entrata externe", + "INLINE_INPUTS": "Entrata interne", + "DELETE_BLOCK": "Deler bloco", + "DELETE_X_BLOCKS": "Deler %1 blocos", + "DELETE_ALL_BLOCKS": "Deler tote le %1 blocos?", + "CLEAN_UP": "Rangiar le blocos", + "COLLAPSE_BLOCK": "Plicar bloco", + "COLLAPSE_ALL": "Plicar blocos", + "EXPAND_BLOCK": "Displicar bloco", + "EXPAND_ALL": "Displicar blocos", + "DISABLE_BLOCK": "Disactivar bloco", + "ENABLE_BLOCK": "Activar bloco", + "HELP": "Adjuta", + "UNDO": "Disfacer", + "REDO": "Refacer", + "CHANGE_VALUE_TITLE": "Cambiar valor:", + "RENAME_VARIABLE": "Renominar variabile...", + "RENAME_VARIABLE_TITLE": "Renominar tote le variabiles '%1' a:", + "NEW_VARIABLE": "Crear variabile...", + "NEW_STRING_VARIABLE": "Crear variabile textual...", + "NEW_NUMBER_VARIABLE": "Crear variabile numeric...", + "NEW_COLOUR_VARIABLE": "Crear variabile de color...", + "NEW_VARIABLE_TYPE_TITLE": "Nove typo de variabile:", + "NEW_VARIABLE_TITLE": "Nomine del nove variabile:", + "VARIABLE_ALREADY_EXISTS": "Un variabile con le nomine '%1' jam existe.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Un variabile con le nomine '%1' jam existe pro un altere typo: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Deler %1 usos del variabile '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Impossibile deler le variabile '%1' perque illo face parte del definition del function '%2'", + "DELETE_VARIABLE": "Deler le variabile '%1'", + "COLOUR_PICKER_HELPURL": "https://ia.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Elige un color del paletta.", + "COLOUR_RANDOM_TITLE": "color aleatori", + "COLOUR_RANDOM_TOOLTIP": "Eliger un color al hasardo.", + "COLOUR_RGB_TITLE": "colorar con", + "COLOUR_RGB_RED": "rubie", + "COLOUR_RGB_GREEN": "verde", + "COLOUR_RGB_BLUE": "blau", + "COLOUR_RGB_TOOLTIP": "Crear un color con le quantitate specificate de rubie, verde e blau. Tote le valores debe esser inter 0 e 100.", + "COLOUR_BLEND_TITLE": "miscer", + "COLOUR_BLEND_COLOUR1": "color 1", + "COLOUR_BLEND_COLOUR2": "color 2", + "COLOUR_BLEND_RATIO": "ration", + "COLOUR_BLEND_TOOLTIP": "Misce duo colores con un ration specificate (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://ia.wikipedia.org/wiki/Bucla_for", + "CONTROLS_REPEAT_TITLE": "repeter %1 vices", + "CONTROLS_REPEAT_INPUT_DO": "face", + "CONTROLS_REPEAT_TOOLTIP": "Exequer certe instructiones plure vices.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repeter durante que", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repeter usque a", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Durante que un valor es ver, exequer certe instructiones.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Durante que un valor es false, exequer certe instructiones.", + "CONTROLS_FOR_TOOLTIP": "Mitter in le variabile '%1' le valores ab le numero initial usque al numero final, con passos secundo le intervallo specificate, e exequer le blocos specificate.", + "CONTROLS_FOR_TITLE": "contar con %1 de %2 a %3 per %4", + "CONTROLS_FOREACH_TITLE": "pro cata elemento %1 in lista %2", + "CONTROLS_FOREACH_TOOLTIP": "Pro cata elemento in un lista, mitter lo in le variabile '%1' e exequer certe instructiones.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "escappar del bucla", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuar con le proxime iteration del bucla", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Escappar del bucla continente.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Saltar le resto de iste bucla e continuar con le proxime iteration.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Attention: Iste bloco pote solmente esser usate in un bucla.", + "CONTROLS_IF_TOOLTIP_1": "Si un valor es ver, exequer certe instructiones.", + "CONTROLS_IF_TOOLTIP_2": "Si un valor es ver, exequer le prime bloco de instructiones. Si non, exequer le secunde bloco de instructiones.", + "CONTROLS_IF_TOOLTIP_3": "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones.", + "CONTROLS_IF_TOOLTIP_4": "Si le prime valor es ver, exequer le prime bloco de instructiones. Si non, si le secunde valor es ver, exequer le secunde bloco de instructiones. Si necun del valores es ver, exequer le ultime bloco de instructiones.", + "CONTROLS_IF_MSG_IF": "si", + "CONTROLS_IF_MSG_ELSEIF": "si non si", + "CONTROLS_IF_MSG_ELSE": "si non", + "CONTROLS_IF_IF_TOOLTIP": "Adde, remove o reordina sectiones pro reconfigurar iste bloco \"si\".", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Adder un condition al bloco \"si\".", + "CONTROLS_IF_ELSE_TOOLTIP": "Adder un condition final de reserva al bloco \"si\".", + "LOGIC_COMPARE_HELPURL": "https://ia.wikipedia.org/wiki/Inequalitate_(mathematica)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Retornar ver si le duo entratas es equal.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Retornar ver si le duo entratas non es equal.", + "LOGIC_COMPARE_TOOLTIP_LT": "Retornar ver si le prime entrata es minor que le secunde.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Retornar ver si le prime entrata es minor que o equal al secunde.", + "LOGIC_COMPARE_TOOLTIP_GT": "Retornar ver si le prime entrata es major que le secunde.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Retornar ver si le prime entrata es major que o equal al secunde.", + "LOGIC_OPERATION_TOOLTIP_AND": "Retornar ver si ambe entratas es ver.", + "LOGIC_OPERATION_AND": "e", + "LOGIC_OPERATION_TOOLTIP_OR": "Retornar ver si al minus un del entratas es ver.", + "LOGIC_OPERATION_OR": "o", + "LOGIC_NEGATE_TITLE": "non %1", + "LOGIC_NEGATE_TOOLTIP": "Retornar ver si le entrata es false. Retornar false si le entrata es ver.", + "LOGIC_BOOLEAN_TRUE": "ver", + "LOGIC_BOOLEAN_FALSE": "false", + "LOGIC_BOOLEAN_TOOLTIP": "Retorna o ver o false.", + "LOGIC_NULL": "nulle", + "LOGIC_NULL_TOOLTIP": "Retorna nulle.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "si ver", + "LOGIC_TERNARY_IF_FALSE": "si false", + "LOGIC_TERNARY_TOOLTIP": "Verificar le condition in 'test'. Si le condition es ver, retorna le valor de 'si ver'; si non, retorna le valor de 'si false'.", + "MATH_NUMBER_HELPURL": "https://ia.wikipedia.org/wiki/Numero", + "MATH_NUMBER_TOOLTIP": "Un numero.", + "MATH_ARITHMETIC_HELPURL": "https://ia.wikipedia.org/wiki/Arithmetica", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Retornar le summa del duo numeros.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retornar le differentia del duo numeros.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retornar le producto del duo numeros.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retornar le quotiente del duo numeros.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Retornar le prime numero elevate al potentia del secunde numero.", + "MATH_SINGLE_HELPURL": "https://ia.wikipedia.org/wiki/Radice_quadrate", + "MATH_SINGLE_OP_ROOT": "radice quadrate", + "MATH_SINGLE_TOOLTIP_ROOT": "Retornar le radice quadrate de un numero.", + "MATH_SINGLE_OP_ABSOLUTE": "absolute", + "MATH_SINGLE_TOOLTIP_ABS": "Retornar le valor absolute de un numero.", + "MATH_SINGLE_TOOLTIP_NEG": "Retornar le negation de un numero.", + "MATH_SINGLE_TOOLTIP_LN": "Retornar le logarithmo natural de un numero.", + "MATH_SINGLE_TOOLTIP_LOG10": "Retornar le logarithmo in base 10 de un numero.", + "MATH_SINGLE_TOOLTIP_EXP": "Retornar e elevate al potentia de un numero.", + "MATH_SINGLE_TOOLTIP_POW10": "Retornar 10 elevate al potentia de un numero.", + "MATH_TRIG_TOOLTIP_SIN": "Retornar le sino de un grado (non radiano).", + "MATH_TRIG_TOOLTIP_COS": "Retornar le cosino de un grado (non radiano).", + "MATH_TRIG_TOOLTIP_TAN": "Retornar le tangente de un grado (non radiano).", + "MATH_TRIG_TOOLTIP_ASIN": "Retornar le arcosino de un numero.", + "MATH_TRIG_TOOLTIP_ACOS": "Retornar le arcocosino de un numero.", + "MATH_TRIG_TOOLTIP_ATAN": "Retornar le arcotangente de un numero.", + "MATH_CONSTANT_HELPURL": "https://ia.wikipedia.org/wiki/Constante_mathematic", + "MATH_CONSTANT_TOOLTIP": "Retornar un del constantes commun: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707…) o ∞ (infinite).", + "MATH_IS_EVEN": "es par", + "MATH_IS_ODD": "es impare", + "MATH_IS_PRIME": "es prime", + "MATH_IS_WHOLE": "es integre", + "MATH_IS_POSITIVE": "es positive", + "MATH_IS_NEGATIVE": "es negative", + "MATH_IS_DIVISIBLE_BY": "es divisibile per", + "MATH_IS_TOOLTIP": "Verificar si un numero es par, impare, prime, integre, positive, negative, o divisibile per un certe numero. Retorna ver o false.", + "MATH_CHANGE_TITLE": "cambiar %1 per %2", + "MATH_CHANGE_TOOLTIP": "Adder un numero al variabile '%1'.", + "MATH_ROUND_HELPURL": "https://ia.wikipedia.org/wiki/Rotundamento", + "MATH_ROUND_TOOLTIP": "Arrotundar un numero a supra o a infra.", + "MATH_ROUND_OPERATOR_ROUND": "arrotundar", + "MATH_ROUND_OPERATOR_ROUNDUP": "arrotundar a supra", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "arrotundar a infra", + "MATH_ONLIST_OPERATOR_SUM": "summa del lista", + "MATH_ONLIST_TOOLTIP_SUM": "Retornar le summa de tote le numeros in le lista.", + "MATH_ONLIST_OPERATOR_MIN": "minimo del lista", + "MATH_ONLIST_TOOLTIP_MIN": "Retornar le numero le plus parve in le lista.", + "MATH_ONLIST_OPERATOR_MAX": "maximo del lista", + "MATH_ONLIST_TOOLTIP_MAX": "Retornar le numero le plus grande in le lista.", + "MATH_ONLIST_OPERATOR_AVERAGE": "media del lista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Retornar le media arithmetic del valores numeric in le lista.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana del lista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Retornar le numero median del lista.", + "MATH_ONLIST_OPERATOR_MODE": "modas del lista", + "MATH_ONLIST_TOOLTIP_MODE": "Retornar un lista del elemento(s) le plus commun in le lista.", + "MATH_ONLIST_OPERATOR_STD_DEV": "deviation standard del lista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Retornar le deviation standard del lista.", + "MATH_ONLIST_OPERATOR_RANDOM": "elemento aleatori del lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Retornar un elemento aleatori del lista.", + "MATH_MODULO_TITLE": "resto de %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Retornar le resto del division del duo numeros.", + "MATH_CONSTRAIN_TITLE": "limitar %1 inter %2 e %3", + "MATH_CONSTRAIN_TOOLTIP": "Limitar un numero a esser inter le limites specificate (incluse).", + "MATH_RANDOM_INT_TITLE": "numero integre aleatori inter %1 e %2", + "MATH_RANDOM_INT_TOOLTIP": "Retornar un numero integre aleatori inter le duo limites specificate, incluse.", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fraction aleatori", + "MATH_RANDOM_FLOAT_TOOLTIP": "Retornar un fraction aleatori inter 0.0 (incluse) e 1.0 (excluse).", + "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Retornar le arco tangente del puncto (X, Y) in grados de -180 a 180.", + "TEXT_TEXT_TOOLTIP": "Un littera, parola o linea de texto.", + "TEXT_JOIN_TITLE_CREATEWITH": "crear texto con", + "TEXT_JOIN_TOOLTIP": "Crear un pecia de texto uniente un certe numero de elementos.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", + "TEXT_CREATE_JOIN_TOOLTIP": "Adde, remove o reordina sectiones pro reconfigurar iste bloco de texto.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Adder un elemento al texto.", + "TEXT_APPEND_TITLE": "a %1 adjunger texto %2", + "TEXT_APPEND_TOOLTIP": "Adjunger un texto al variabile '%1'.", + "TEXT_LENGTH_TITLE": "longitude de %1", + "TEXT_LENGTH_TOOLTIP": "Retorna le numero de litteras (incluse spatios) in le texto fornite.", + "TEXT_ISEMPTY_TITLE": "%1 es vacue", + "TEXT_ISEMPTY_TOOLTIP": "Retorna ver si le texto fornite es vacue.", + "TEXT_INDEXOF_TOOLTIP": "Retorna le indice del prime/ultime occurrentia del prime texto in le secunde texto. Retorna %1 si le texto non es trovate.", + "TEXT_INDEXOF_TITLE": "in le texto %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "cercar le prime occurrentia del texto", + "TEXT_INDEXOF_OPERATOR_LAST": "cercar le ultime occurrentia del texto", + "TEXT_CHARAT_TITLE": "in le texto %1 %2", + "TEXT_CHARAT_FROM_START": "prender le littera №", + "TEXT_CHARAT_FROM_END": "prender ab le fin le littera №", + "TEXT_CHARAT_FIRST": "prender le prime littera", + "TEXT_CHARAT_LAST": "prender le ultime littera", + "TEXT_CHARAT_RANDOM": "prender un littera aleatori", + "TEXT_CHARAT_TOOLTIP": "Retorna le littera presente al position specificate.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Retorna le parte specificate del texto.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in le texto", + "TEXT_GET_SUBSTRING_START_FROM_START": "prender subcatena ab le littera №", + "TEXT_GET_SUBSTRING_START_FROM_END": "prender subcatena ab le fin ab le littera №", + "TEXT_GET_SUBSTRING_START_FIRST": "prender subcatena ab le prime littera", + "TEXT_GET_SUBSTRING_END_FROM_START": "usque al littera №", + "TEXT_GET_SUBSTRING_END_FROM_END": "ab le fin usque al littera №", + "TEXT_GET_SUBSTRING_END_LAST": "usque al ultime littera", + "TEXT_CHANGECASE_TOOLTIP": "Retornar un copia del texto con differente majusculas/minusculas.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "in MAJUSCULAS", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "in minusculas", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "con Initiales Majuscule", + "TEXT_TRIM_TOOLTIP": "Retornar un copia del texto con spatios eliminate de un extremitate o ambes.", + "TEXT_TRIM_OPERATOR_BOTH": "remover spatios de ambe lateres de", + "TEXT_TRIM_OPERATOR_LEFT": "remover spatios del sinistre latere de", + "TEXT_TRIM_OPERATOR_RIGHT": "remover spatios del dextre latere de", + "TEXT_PRINT_TITLE": "scriber %1", + "TEXT_PRINT_TOOLTIP": "Scriber le texto, numero o altere valor specificate.", + "TEXT_PROMPT_TYPE_TEXT": "peter un texto con le message", + "TEXT_PROMPT_TYPE_NUMBER": "peter un numero con le message", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Peter un numero al usator.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Peter un texto al usator.", + "TEXT_COUNT_MESSAGE0": "contar %1 in %2", + "TEXT_COUNT_TOOLTIP": "Contar quante vices un texto occurre intra un altere texto.", + "TEXT_REPLACE_MESSAGE0": "reimplaciar %1 per %2 in %3", + "TEXT_REPLACE_TOOLTIP": "Reimplaciar tote le occurrentias de un texto intra un altere texto.", + "TEXT_REVERSE_MESSAGE0": "inverter %1", + "TEXT_REVERSE_TOOLTIP": "Inverte le ordine del characteres in le texto.", + "LISTS_CREATE_EMPTY_TITLE": "crear un lista vacue", + "LISTS_CREATE_EMPTY_TOOLTIP": "Retorna un lista, de longitude 0, sin datos.", + "LISTS_CREATE_WITH_TOOLTIP": "Crear un lista con un numero qualcunque de elementos.", + "LISTS_CREATE_WITH_INPUT_WITH": "crear lista con", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Adde, remove o reordina sectiones pro reconfigurar iste bloco de listas.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Adder un elemento al lista.", + "LISTS_REPEAT_TOOLTIP": "Crea un lista que contine le valor fornite, repetite le numero specificate de vices.", + "LISTS_REPEAT_TITLE": "crear lista con elemento %1 repetite %2 vices", + "LISTS_LENGTH_TITLE": "longitude de %1", + "LISTS_LENGTH_TOOLTIP": "Retorna le longitude de un lista.", + "LISTS_ISEMPTY_TITLE": "%1 es vacue", + "LISTS_ISEMPTY_TOOLTIP": "Retorna ver si le lista es vacue.", + "LISTS_INLIST": "in lista", + "LISTS_INDEX_OF_FIRST": "cercar le prime occurrentia del elemento", + "LISTS_INDEX_OF_LAST": "cercar le ultime occurrentia del elemento", + "LISTS_INDEX_OF_TOOLTIP": "Retorna le indice del prime/ultime occurrentia del elemento in le lista. Retorna %1 si le elemento non es trovate.", + "LISTS_GET_INDEX_GET": "prender", + "LISTS_GET_INDEX_GET_REMOVE": "prender e remover", + "LISTS_GET_INDEX_REMOVE": "remover", + "LISTS_GET_INDEX_FROM_END": "№ ab fin", + "LISTS_GET_INDEX_FIRST": "prime", + "LISTS_GET_INDEX_LAST": "ultime", + "LISTS_GET_INDEX_RANDOM": "aleatori", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 es le prime elemento.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 es le ultime elemento.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Retorna le elemento presente al position specificate in un lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Retorna le prime elemento in un lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Retorna le ultime elemento in un lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Retorna un elemento aleatori in un lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Remove e retorna le elemento presente al position specificate in un lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Remove e retorna le prime elemento in un lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Remove e retorna le ultime elemento in un lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Remove e retorna un elemento aleatori in un lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Remove le elemento presente al position specificate in un lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Remove le prime elemento in un lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Remove le ultime elemento in un lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Remove un elemento aleatori in un lista.", + "LISTS_SET_INDEX_SET": "mitter", + "LISTS_SET_INDEX_INSERT": "inserer in", + "LISTS_SET_INDEX_INPUT_TO": "a", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Defini le valor del elemento al position specificate in un lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Defini le valor del prime elemento in un lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Defini le valor del ultime elemento in un lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Defini le valor de un elemento aleatori in un lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insere le elemento al position specificate in un lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insere le elemento al initio de un lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Adjunge le elemento al fin de un lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insere le elemento a un position aleatori in un lista.", + "LISTS_GET_SUBLIST_START_FROM_START": "prender sublista ab №", + "LISTS_GET_SUBLIST_START_FROM_END": "prender sublista ab № a partir del fin", + "LISTS_GET_SUBLIST_START_FIRST": "prender sublista ab initio", + "LISTS_GET_SUBLIST_END_FROM_START": "usque al №", + "LISTS_GET_SUBLIST_END_FROM_END": "usque al № ab fin", + "LISTS_GET_SUBLIST_END_LAST": "usque al ultime", + "LISTS_GET_SUBLIST_TOOLTIP": "Crea un copia del parte specificate de un lista.", + "LISTS_SORT_TITLE": "ordinamento %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ordinar un copia de un lista.", + "LISTS_SORT_ORDER_ASCENDING": "ascendente", + "LISTS_SORT_ORDER_DESCENDING": "descendente", + "LISTS_SORT_TYPE_NUMERIC": "numeric", + "LISTS_SORT_TYPE_TEXT": "alphabetic", + "LISTS_SORT_TYPE_IGNORECASE": "alphabetic, ignorar majuscula/minuscula", + "LISTS_SPLIT_LIST_FROM_TEXT": "crear lista ab texto", + "LISTS_SPLIT_TEXT_FROM_LIST": "crear texto ab lista", + "LISTS_SPLIT_WITH_DELIMITER": "con delimitator", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Divider texto in un lista de textos, separante lo a cata delimitator.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Unir un lista de textos, separate per un delimitator, in un sol texto.", + "LISTS_REVERSE_MESSAGE0": "inverter %1", + "LISTS_REVERSE_TOOLTIP": "Inverter un copia de un lista.", + "VARIABLES_GET_TOOLTIP": "Retorna le valor de iste variabile.", + "VARIABLES_GET_CREATE_SET": "Crea 'mitter %1'", + "VARIABLES_SET": "mitter %1 a %2", + "VARIABLES_SET_TOOLTIP": "Mitte iste variabile al valor del entrata.", + "VARIABLES_SET_CREATE_GET": "Crear 'prender %1'", + "PROCEDURES_DEFNORETURN_TITLE": "pro", + "PROCEDURES_DEFNORETURN_PROCEDURE": "facer qualcosa", + "PROCEDURES_BEFORE_PARAMS": "con:", + "PROCEDURES_CALL_BEFORE_PARAMS": "con:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea un function que non retorna un valor.", + "PROCEDURES_DEFNORETURN_COMMENT": "Describe iste function...", + "PROCEDURES_DEFRETURN_RETURN": "retornar", + "PROCEDURES_DEFRETURN_TOOLTIP": "Crea un function que retorna un valor.", + "PROCEDURES_ALLOW_STATEMENTS": "permitter declarationes", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Attention: Iste function ha parametros duplicate.", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Executar le function '%1' definite per le usator.", + "PROCEDURES_CALLRETURN_TOOLTIP": "Executar le function '%1' definite per le usator e usar su resultato.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "entratas", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Adder, remover o reordinar le entratas pro iste function.", + "PROCEDURES_MUTATORARG_TITLE": "nomine del entrata:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Adder un entrata al function.", + "PROCEDURES_HIGHLIGHT_DEF": "Accentuar le definition del function", + "PROCEDURES_CREATE_DO": "Crear '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Si un valor es ver, alora retornar un secunde valor.", + "PROCEDURES_IFRETURN_WARNING": "Attention: Iste bloco pote solmente esser usate in le definition de un function.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Dice qualcosa...", + "WORKSPACE_ARIA_LABEL": "Spatio de travalio de Blockly", + "COLLAPSED_WARNINGS_WARNING": "Blocos plicate contine advertimentos.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Cancellar" +} diff --git a/msg/json/id.json b/msg/json/id.json index 60cbc362609..9d84980b9c3 100644 --- a/msg/json/id.json +++ b/msg/json/id.json @@ -1,361 +1,361 @@ -{ - "@metadata": { - "authors": [ - "Adisetiawan", - "Akmaie Ajam", - "Arifin.wijaya", - "Kasimtan", - "Kenrick95", - "Marwan Mohamad", - "Mirws", - "PutriAmalia1991", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "item", - "UNNAMED_KEY": "tanpa nama", - "TODAY": "Hari ini", - "DUPLICATE_BLOCK": "Duplikat", - "ADD_COMMENT": "Tambahkan Komentar", - "REMOVE_COMMENT": "Hapus Komentar", - "DUPLICATE_COMMENT": "Duplikat Komentar", - "EXTERNAL_INPUTS": "Input Eksternal", - "INLINE_INPUTS": "Input Inline", - "DELETE_BLOCK": "Hapus Blok", - "DELETE_X_BLOCKS": "Hapus %1 Blok", - "DELETE_ALL_BLOCKS": "Hapus semua %1 blok?", - "CLEAN_UP": "Bersihkan Blok", - "COLLAPSE_BLOCK": "Ciutkan Blok", - "COLLAPSE_ALL": "Ciutkan Blok", - "EXPAND_BLOCK": "Kembangkan Blok", - "EXPAND_ALL": "Kembangkan Blok", - "DISABLE_BLOCK": "Nonaktifkan Blok", - "ENABLE_BLOCK": "Aktifkan Blok", - "HELP": "Bantuan", - "UNDO": "Urungkan", - "REDO": "Lakukan ulang", - "CHANGE_VALUE_TITLE": "Ubah nilai:", - "RENAME_VARIABLE": "Ubah nama variabel...", - "RENAME_VARIABLE_TITLE": "Ubah nama semua variabel '%1' menjadi:", - "NEW_VARIABLE": "Buat variabel...", - "NEW_STRING_VARIABLE": "Buat variabel string...", - "NEW_NUMBER_VARIABLE": "Buat variabel number...", - "NEW_COLOUR_VARIABLE": "Buat variabel warna...", - "NEW_VARIABLE_TYPE_TITLE": "Tipe variabel baru:", - "NEW_VARIABLE_TITLE": "Nama variabel baru:", - "VARIABLE_ALREADY_EXISTS": "Sebuah variabel dengan nama '%1' sudah ada.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Variabel yg bernama '%1' sudah ada untuk tipe lain: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Hapus %1 yang digunakan pada variabel '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Tidak bisa menghapus variabel '%1' karena variabel ini bagian dari sebuah definisi dari fungsi '%2'", - "DELETE_VARIABLE": "Hapus variabel '%1'", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Pilih warna dari daftar warna.", - "COLOUR_RANDOM_TITLE": "Warna acak", - "COLOUR_RANDOM_TOOLTIP": "Pilih warna secara acak.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "Dengan warna", - "COLOUR_RGB_RED": "merah", - "COLOUR_RGB_GREEN": "hijau", - "COLOUR_RGB_BLUE": "biru", - "COLOUR_RGB_TOOLTIP": "Buatlah warna dengan jumlah yang ditentukan dari merah, hijau dan biru. Semua nilai harus antarai 0 sampai 100.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "campur", - "COLOUR_BLEND_COLOUR1": "warna 1", - "COLOUR_BLEND_COLOUR2": "warna 2", - "COLOUR_BLEND_RATIO": "rasio", - "COLOUR_BLEND_TOOLTIP": "Campur dua warna secara bersamaan dengan perbandingan (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "ulangi %1 kali", - "CONTROLS_REPEAT_INPUT_DO": "kerjakan", - "CONTROLS_REPEAT_TOOLTIP": "Lakukan beberapa perintah beberapa kali.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ulangi jika", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ulangi sampai", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Selagi nilainya benar, maka lakukan beberapa perintah.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Selagi nilainya salah, maka lakukan beberapa perintah.", - "CONTROLS_FOR_TOOLTIP": "Menggunakan variabel \"%1\" dengan mengambil nilai dari batas awal hingga ke batas akhir, dengan interval tertentu, dan mengerjakan block tertentu.", - "CONTROLS_FOR_TITLE": "Cacah dengan %1 dari %2 ke %3 dengan step / penambahan %4", - "CONTROLS_FOREACH_TITLE": "untuk setiap item %1 di dalam list %2", - "CONTROLS_FOREACH_TOOLTIP": "Untuk tiap-tiap item di dalam list, tetapkan variabel '%1' ke dalam item, selanjutnya kerjakan beberapa statement.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "keluar dari perulangan", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "lanjutkan dengan langkah perulangan berikutnya", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Keluar dari perulangan.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Abaikan sisa dari perulangan ini, dan lanjutkan dengan langkah berikutnya.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Peringatan: Blok ini hanya dapat digunakan dalam perulangan.", - "CONTROLS_IF_TOOLTIP_1": "Jika nilainya benar, maka lakukan beberapa perintah.", - "CONTROLS_IF_TOOLTIP_2": "Jika nilainya benar, maka kerjakan perintah blok pertama. Jika tidak, kerjakan perintah blok kedua.", - "CONTROLS_IF_TOOLTIP_3": "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua.", - "CONTROLS_IF_TOOLTIP_4": "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua. Jika dua-duanya tidak benar, kerjakan perintah blok terakhir.", - "CONTROLS_IF_MSG_IF": "jika", - "CONTROLS_IF_MSG_ELSEIF": "atau jika", - "CONTROLS_IF_MSG_ELSE": "lainnya", - "CONTROLS_IF_IF_TOOLTIP": "Tambahkan, hapus, atau susun kembali bagian untuk mengkonfigurasi blok IF ini.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Tambahkan prasyarat ke dalam blok IF.", - "CONTROLS_IF_ELSE_TOOLTIP": "Terakhir, tambahkan kondisi tangkap-semua kedalam blok IF.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Kembalikan benar jika kedua input sama satu dengan lainnya.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Kembalikan benar jika kedua input tidak sama satu dengan lainnya.", - "LOGIC_COMPARE_TOOLTIP_LT": "Kembalikan benar jika input pertama lebih kecil dari input kedua.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Kembalikan benar jika input pertama lebih kecil atau sama dengan input kedua .", - "LOGIC_COMPARE_TOOLTIP_GT": "Kembalikan benar jika input pertama lebih besar dari input kedua.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Kembalikan benar jika input pertama lebih besar dari atau sama dengan input kedua.", - "LOGIC_OPERATION_TOOLTIP_AND": "Kembalikan benar jika kedua input adalah benar.", - "LOGIC_OPERATION_AND": "dan", - "LOGIC_OPERATION_TOOLTIP_OR": "Kembalikan benar jika minimal satu input nilainya benar.", - "LOGIC_OPERATION_OR": "atau", - "LOGIC_NEGATE_TITLE": "bukan (not) %1", - "LOGIC_NEGATE_TOOLTIP": "Kembalikan benar jika input salah. Kembalikan salah jika input benar.", - "LOGIC_BOOLEAN_TRUE": "benar", - "LOGIC_BOOLEAN_FALSE": "salah", - "LOGIC_BOOLEAN_TOOLTIP": "Kembalikan benar atau salah.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Kembalikan null.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "jika benar", - "LOGIC_TERNARY_IF_FALSE": "jika salah", - "LOGIC_TERNARY_TOOLTIP": "Periksa kondisi di 'test'. Jika kondisi benar, kembalikan nilai 'if true'; jika sebaliknya kembalikan nilai 'if false'.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Suatu angka.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://id.wikipedia.org/wiki/Aritmetika", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Kembalikan jumlah dari kedua angka.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Kembalikan selisih dari kedua angka.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Kembalikan perkalian dari kedua angka.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Kembalikan hasil bagi dari kedua angka.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Kembalikan angka pertama pangkat angka kedua.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "akar", - "MATH_SINGLE_TOOLTIP_ROOT": "Kembalikan akar dari angka.", - "MATH_SINGLE_OP_ABSOLUTE": "mutlak", - "MATH_SINGLE_TOOLTIP_ABS": "Kembalikan nilai absolut angka.", - "MATH_SINGLE_TOOLTIP_NEG": "Kembalikan penyangkalan terhadap angka.", - "MATH_SINGLE_TOOLTIP_LN": "Kembalikan logaritma natural dari angka.", - "MATH_SINGLE_TOOLTIP_LOG10": "Kembalikan dasar logaritma 10 dari angka.", - "MATH_SINGLE_TOOLTIP_EXP": "Kembalikan 10 pangkat angka.", - "MATH_SINGLE_TOOLTIP_POW10": "Kembalikan 10 pangkat angka.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Kembalikan sinus dari derajat (bukan radian).", - "MATH_TRIG_TOOLTIP_COS": "Kembalikan cosinus dari derajat (bukan radian).", - "MATH_TRIG_TOOLTIP_TAN": "Kembalikan tangen dari derajat (bukan radian).", - "MATH_TRIG_TOOLTIP_ASIN": "Kembalikan asin dari angka.", - "MATH_TRIG_TOOLTIP_ACOS": "Kembalikan acosine dari angka.", - "MATH_TRIG_TOOLTIP_ATAN": "Kembalikan atan dari angka.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Kembalikan salah satu konstanta: π (3,141…), e (2,718…), φ (1,618…), akar(2) (1,414…), akar(½) (0.707…), atau ∞ (tak terhingga).", - "MATH_IS_EVEN": "adalah bilangan genap", - "MATH_IS_ODD": "adalah bilangan ganjil", - "MATH_IS_PRIME": "adalah bilangan pokok", - "MATH_IS_WHOLE": "adalah bilangan bulat", - "MATH_IS_POSITIVE": "adalah bilangan positif", - "MATH_IS_NEGATIVE": "adalah bilangan negatif", - "MATH_IS_DIVISIBLE_BY": "dapat dibagi oleh", - "MATH_IS_TOOLTIP": "Periksa apakah angka adalah bilangan genap, bilangan ganjil, bilangan pokok, bilangan bulat, bilangan positif, bilangan negatif, atau apakan bisa dibagi oleh angka tertentu. Kembalikan benar atau salah.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "ubah %1 oleh %2", - "MATH_CHANGE_TOOLTIP": "Tambahkan angka kedalam variabel '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Bulatkan suatu bilangan naik atau turun.", - "MATH_ROUND_OPERATOR_ROUND": "membulatkan", - "MATH_ROUND_OPERATOR_ROUNDUP": "membulatkan keatas", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "membulatkan kebawah", - "MATH_ONLIST_OPERATOR_SUM": "jumlah dari list", - "MATH_ONLIST_TOOLTIP_SUM": "Kembalikan jumlah dari seluruh bilangan dari list.", - "MATH_ONLIST_OPERATOR_MIN": "minimum dari list", - "MATH_ONLIST_TOOLTIP_MIN": "Kembalikan angka terkecil dari list.", - "MATH_ONLIST_OPERATOR_MAX": "maksimum dari list", - "MATH_ONLIST_TOOLTIP_MAX": "Kembalikan angka terbesar dari list.", - "MATH_ONLIST_OPERATOR_AVERAGE": "rata-rata dari list", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Kembalikan rata-rata (mean aritmetik) dari nilai numerik dari list.", - "MATH_ONLIST_OPERATOR_MEDIAN": "median dari list", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Kembalikan median dari list.", - "MATH_ONLIST_OPERATOR_MODE": "mode-mode dari list", - "MATH_ONLIST_TOOLTIP_MODE": "Kembalikan list berisi item yang paling umum dari dalam list.", - "MATH_ONLIST_OPERATOR_STD_DEV": "deviasi standar dari list", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Kembalikan standard deviasi dari list.", - "MATH_ONLIST_OPERATOR_RANDOM": "item acak dari list", - "MATH_ONLIST_TOOLTIP_RANDOM": "Kembalikan elemen acak dari list.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "sisa dari %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Kembalikan sisa dari pembagian ke dua angka.", - "MATH_CONSTRAIN_TITLE": "Batasi %1 rendah %2 tinggi %3", - "MATH_CONSTRAIN_TOOLTIP": "Batasi angka antara batas yang ditentukan (inklusif).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "acak bulat dari %1 sampai %2", - "MATH_RANDOM_INT_TOOLTIP": "Kembalikan bilangan acak antara dua batas yang ditentukan, inklusif.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "nilai pecahan acak", - "MATH_RANDOM_FLOAT_TOOLTIP": "Kembalikan nilai pecahan acak antara 0.0 (inklusif) dan 1.0 (eksklusif).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Kembalikan arctangen titik (X, Y) dalam derajat dari -180 hingga 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Huruf, kata atau baris teks.", - "TEXT_JOIN_TITLE_CREATEWITH": "buat teks dengan", - "TEXT_JOIN_TOOLTIP": "Buat teks dengan cara gabungkan sejumlah item.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "join", - "TEXT_CREATE_JOIN_TOOLTIP": "Tambah, ambil, atau susun ulang teks blok.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Tambahkan suatu item ke dalam teks.", - "TEXT_APPEND_TITLE": "untuk %1 tambahkan teks %2", - "TEXT_APPEND_TOOLTIP": "Tambahkan beberapa teks ke variabel '%1'.", - "TEXT_LENGTH_TITLE": "panjang dari %1", - "TEXT_LENGTH_TOOLTIP": "Kembalikan sejumlah huruf (termasuk spasi) dari teks yang disediakan.", - "TEXT_ISEMPTY_TITLE": "%1 kosong", - "TEXT_ISEMPTY_TOOLTIP": "Kembalikan benar jika teks yang disediakan kosong.", - "TEXT_INDEXOF_TOOLTIP": "Kembalikan indeks pertama dan terakhir dari kejadian pertama/terakhir dari teks pertama dalam teks kedua. Kembalikan %1 jika teks tidak ditemukan.", - "TEXT_INDEXOF_TITLE": "dalam teks %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "temukan kejadian pertama dalam teks", - "TEXT_INDEXOF_OPERATOR_LAST": "temukan kejadian terakhir dalam teks", - "TEXT_CHARAT_TITLE": "dalam teks %1 %2", - "TEXT_CHARAT_FROM_START": "ambil huruf ke #", - "TEXT_CHARAT_FROM_END": "ambil huruf nomor # dari belakang", - "TEXT_CHARAT_FIRST": "ambil huruf pertama", - "TEXT_CHARAT_LAST": "ambil huruf terakhir", - "TEXT_CHARAT_RANDOM": "ambil huruf secara acak", - "TEXT_CHARAT_TOOLTIP": "Kembalikan karakter dari posisi tertentu.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Kembalikan spesifik bagian dari teks.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in teks", - "TEXT_GET_SUBSTRING_START_FROM_START": "ambil bagian teks (substring) dari huruf no #", - "TEXT_GET_SUBSTRING_START_FROM_END": "ambil bagian teks (substring) dari huruf ke # dari terakhir", - "TEXT_GET_SUBSTRING_START_FIRST": "ambil bagian teks (substring) dari huruf pertama", - "TEXT_GET_SUBSTRING_END_FROM_START": "pada huruf #", - "TEXT_GET_SUBSTRING_END_FROM_END": "pada huruf nomer # dari terakhir", - "TEXT_GET_SUBSTRING_END_LAST": "pada huruf terakhir", - "TEXT_CHANGECASE_TOOLTIP": "Kembalikan kopi dari text dengan kapitalisasi yang berbeda.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "menjadi huruf kapital", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "menjadi huruf kecil", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "menjadi huruf pertama kapital", - "TEXT_TRIM_TOOLTIP": "Kembali salinan teks dengan spasi dihapus dari satu atau kedua ujungnya.", - "TEXT_TRIM_OPERATOR_BOTH": "pangkas ruang dari kedua belah sisi", - "TEXT_TRIM_OPERATOR_LEFT": "pangkas ruang dari sisi kiri", - "TEXT_TRIM_OPERATOR_RIGHT": "pangkas ruang dari sisi kanan", - "TEXT_PRINT_TITLE": "cetak %1", - "TEXT_PRINT_TOOLTIP": "Cetak teks yant ditentukan, angka atau ninlai lainnya.", - "TEXT_PROMPT_TYPE_TEXT": "meminta teks dengan pesan", - "TEXT_PROMPT_TYPE_NUMBER": "Meminta angka dengan pesan", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Meminta pengguna untuk memberi sebuah angka.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Meminta pengguna untuk memberi beberapa teks.", - "TEXT_COUNT_MESSAGE0": "hitung %1 dalam %2", - "TEXT_COUNT_TOOLTIP": "Hitung berapa banyak teks muncul dalam teks lain.", - "TEXT_REPLACE_MESSAGE0": "ganti %1 dengan %2 dalam %3", - "TEXT_REPLACE_TOOLTIP": "Ganti semua kemunculan teks dalam teks lain.", - "TEXT_REVERSE_MESSAGE0": "balikkan %1", - "TEXT_REVERSE_TOOLTIP": "Balikkan urutan huruf dalam teks.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "buat list kosong", - "LISTS_CREATE_EMPTY_TOOLTIP": "Kembalikan list, dengan panjang 0, tidak berisi data", - "LISTS_CREATE_WITH_TOOLTIP": "Buat sebuah list dengan sejumlah item.", - "LISTS_CREATE_WITH_INPUT_WITH": "buat list dengan", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "list", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Tambahkan, hapus, atau susun ulang bagian untuk mengkonfigurasi blok list ini.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Tambahkan sebuah item ke list.", - "LISTS_REPEAT_TOOLTIP": "Buat sebuah list yang terdiri dari nilai yang diberikan diulang sebanyak jumlah yang ditentukan.", - "LISTS_REPEAT_TITLE": "buat list dengan item %1 diulang %2 kali", - "LISTS_LENGTH_TITLE": "panjang dari %1", - "LISTS_LENGTH_TOOLTIP": "Kembalikan panjang list.", - "LISTS_ISEMPTY_TITLE": "%1 kosong", - "LISTS_ISEMPTY_TOOLTIP": "Kembalikan benar jika list kosong.", - "LISTS_INLIST": "dalam list", - "LISTS_INDEX_OF_FIRST": "cari kejadian pertama item", - "LISTS_INDEX_OF_LAST": "cari kejadian terakhir item", - "LISTS_INDEX_OF_TOOLTIP": "Kembalikan indeks dari item pertama/terakhir kali muncul dalam list. Kembalikan %1 jika item tidak ditemukan.", - "LISTS_GET_INDEX_GET": "dapatkan", - "LISTS_GET_INDEX_GET_REMOVE": "dapatkan dan hapus", - "LISTS_GET_INDEX_REMOVE": "Hapus", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# dari akhir", - "LISTS_GET_INDEX_FIRST": "pertama", - "LISTS_GET_INDEX_LAST": "terakhir", - "LISTS_GET_INDEX_RANDOM": "acak", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 adalah item pertama.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 adalah item terakhir.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Kembalikan item di posisi tertentu dalam list.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Kembalikan item pertama dalam list.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Kembalikan item terakhir dalam list.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Kembalikan item acak dalam list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Hapus dan kembalikan item di posisi tertentu dalam list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Hapus dan kembalikan item pertama dalam list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Hapus dan kembalikan item terakhir dalam list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Hapus dan kembalikan item acak dalam list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Hapus item di posisi tertentu dalam list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Hapus item pertama dalam list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Hapus item terakhir dalam list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Hapus sebuah item acak dalam list.", - "LISTS_SET_INDEX_SET": "tetapkan", - "LISTS_SET_INDEX_INSERT": "sisipkan di", - "LISTS_SET_INDEX_INPUT_TO": "sebagai", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Tetapkan item ke dalam posisi yang telah ditentukan di dalam list.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Tetapkan item pertama di dalam list.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Menetapkan item terakhir dalam list.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Tetapkan secara acak sebuah item dalam list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Sisipkan item ke dalam posisi yang telah ditentukan di dalam list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Sisipkan item di bagian awal dari list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Tambahkan item ke bagian akhir list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Sisipkan item secara acak ke dalam list.", - "LISTS_GET_SUBLIST_START_FROM_START": "dapatkan sub-list dari #", - "LISTS_GET_SUBLIST_START_FROM_END": "dapatkan sub-list dari nomor # dari akhir", - "LISTS_GET_SUBLIST_START_FIRST": "dapatkan sub-list dari pertama", - "LISTS_GET_SUBLIST_END_FROM_START": "ke #", - "LISTS_GET_SUBLIST_END_FROM_END": "ke # dari akhir", - "LISTS_GET_SUBLIST_END_LAST": "ke yang paling akhir", - "LISTS_GET_SUBLIST_TOOLTIP": "Buat salinan bagian tertentu dari list.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "urutkan %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Urutkan salinan dari daftar", - "LISTS_SORT_ORDER_ASCENDING": "menaik", - "LISTS_SORT_ORDER_DESCENDING": "menurun", - "LISTS_SORT_TYPE_NUMERIC": "sesuai nomor", - "LISTS_SORT_TYPE_TEXT": "sesuai abjad", - "LISTS_SORT_TYPE_IGNORECASE": "sesuai abjad, abaikan kasus", - "LISTS_SPLIT_LIST_FROM_TEXT": "buat list dari teks", - "LISTS_SPLIT_TEXT_FROM_LIST": "buat teks dari list", - "LISTS_SPLIT_WITH_DELIMITER": "dengan pembatas", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Membagi teks ke dalam daftar teks, pisahkan pada setiap pembatas.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Gabung daftar teks menjadi satu teks, yang dipisahkan oleh pembatas.", - "LISTS_REVERSE_MESSAGE0": "balikkan %1", - "LISTS_REVERSE_TOOLTIP": "Balikkan salinan dari daftar.", - "VARIABLES_GET_TOOLTIP": "Kembalikan nilai variabel ini.", - "VARIABLES_GET_CREATE_SET": "Buat 'set %1'", - "VARIABLES_SET": "tetapkan %1 untuk %2", - "VARIABLES_SET_TOOLTIP": "tetapkan variabel ini dengan input yang sama.", - "VARIABLES_SET_CREATE_GET": "Buat 'get %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "untuk", - "PROCEDURES_DEFNORETURN_PROCEDURE": "buat sesuatu", - "PROCEDURES_BEFORE_PARAMS": "dengan:", - "PROCEDURES_CALL_BEFORE_PARAMS": "dengan:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Buat sebuah fungsi tanpa output.", - "PROCEDURES_DEFNORETURN_COMMENT": "Jelaskan fungsi ini...", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFRETURN_RETURN": "kembali", - "PROCEDURES_DEFRETURN_TOOLTIP": "Buat sebuah fungsi dengan satu output.", - "PROCEDURES_ALLOW_STATEMENTS": "memungkinkan pernyataan", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Peringatan: Fungsi ini memiliki parameter duplikat.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Menjalankan fungsi '%1' yang ditetapkan pengguna.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Menjalankan fungsi '%1' yang ditetapkan pengguna dan menggunakan outputnya.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "input", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Menambah, menghapus, atau menyusun ulang masukan untuk fungsi ini.", - "PROCEDURES_MUTATORARG_TITLE": "masukan Nama:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Tambahkan masukan ke fungsi.", - "PROCEDURES_HIGHLIGHT_DEF": "Sorot definisi fungsi", - "PROCEDURES_CREATE_DO": "Buat '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Jika nilai yang benar, kemudian kembalikan nilai kedua.", - "PROCEDURES_IFRETURN_WARNING": "Peringatan: Blok ini dapat digunakan hanya dalam definisi fungsi.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Ucapkan sesuatu...", - "WORKSPACE_ARIA_LABEL": "Ruang Kerja Blockly", - "COLLAPSED_WARNINGS_WARNING": "Blok yang diciutkan memiliki peringatan.", - "DIALOG_OK": "Oke", - "DIALOG_CANCEL": "Batal" -} +{ + "@metadata": { + "authors": [ + "Adisetiawan", + "Akmaie Ajam", + "Arifin.wijaya", + "Kasimtan", + "Kenrick95", + "Marwan Mohamad", + "Mirws", + "PutriAmalia1991", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "item", + "UNNAMED_KEY": "tanpa nama", + "TODAY": "Hari ini", + "DUPLICATE_BLOCK": "Duplikat", + "ADD_COMMENT": "Tambahkan Komentar", + "REMOVE_COMMENT": "Hapus Komentar", + "DUPLICATE_COMMENT": "Duplikat Komentar", + "EXTERNAL_INPUTS": "Input Eksternal", + "INLINE_INPUTS": "Input Inline", + "DELETE_BLOCK": "Hapus Blok", + "DELETE_X_BLOCKS": "Hapus %1 Blok", + "DELETE_ALL_BLOCKS": "Hapus semua %1 blok?", + "CLEAN_UP": "Bersihkan Blok", + "COLLAPSE_BLOCK": "Ciutkan Blok", + "COLLAPSE_ALL": "Ciutkan Blok", + "EXPAND_BLOCK": "Kembangkan Blok", + "EXPAND_ALL": "Kembangkan Blok", + "DISABLE_BLOCK": "Nonaktifkan Blok", + "ENABLE_BLOCK": "Aktifkan Blok", + "HELP": "Bantuan", + "UNDO": "Urungkan", + "REDO": "Lakukan ulang", + "CHANGE_VALUE_TITLE": "Ubah nilai:", + "RENAME_VARIABLE": "Ubah nama variabel...", + "RENAME_VARIABLE_TITLE": "Ubah nama semua variabel '%1' menjadi:", + "NEW_VARIABLE": "Buat variabel...", + "NEW_STRING_VARIABLE": "Buat variabel string...", + "NEW_NUMBER_VARIABLE": "Buat variabel number...", + "NEW_COLOUR_VARIABLE": "Buat variabel warna...", + "NEW_VARIABLE_TYPE_TITLE": "Tipe variabel baru:", + "NEW_VARIABLE_TITLE": "Nama variabel baru:", + "VARIABLE_ALREADY_EXISTS": "Sebuah variabel dengan nama '%1' sudah ada.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Variabel yg bernama '%1' sudah ada untuk tipe lain: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Hapus %1 yang digunakan pada variabel '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Tidak bisa menghapus variabel '%1' karena variabel ini bagian dari sebuah definisi dari fungsi '%2'", + "DELETE_VARIABLE": "Hapus variabel '%1'", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Pilih warna dari daftar warna.", + "COLOUR_RANDOM_TITLE": "Warna acak", + "COLOUR_RANDOM_TOOLTIP": "Pilih warna secara acak.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "Dengan warna", + "COLOUR_RGB_RED": "merah", + "COLOUR_RGB_GREEN": "hijau", + "COLOUR_RGB_BLUE": "biru", + "COLOUR_RGB_TOOLTIP": "Buatlah warna dengan jumlah yang ditentukan dari merah, hijau dan biru. Semua nilai harus antarai 0 sampai 100.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "campur", + "COLOUR_BLEND_COLOUR1": "warna 1", + "COLOUR_BLEND_COLOUR2": "warna 2", + "COLOUR_BLEND_RATIO": "rasio", + "COLOUR_BLEND_TOOLTIP": "Campur dua warna secara bersamaan dengan perbandingan (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "ulangi %1 kali", + "CONTROLS_REPEAT_INPUT_DO": "kerjakan", + "CONTROLS_REPEAT_TOOLTIP": "Lakukan beberapa perintah beberapa kali.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ulangi jika", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ulangi sampai", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Selagi nilainya benar, maka lakukan beberapa perintah.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Selagi nilainya salah, maka lakukan beberapa perintah.", + "CONTROLS_FOR_TOOLTIP": "Menggunakan variabel \"%1\" dengan mengambil nilai dari batas awal hingga ke batas akhir, dengan interval tertentu, dan mengerjakan block tertentu.", + "CONTROLS_FOR_TITLE": "Cacah dengan %1 dari %2 ke %3 dengan step / penambahan %4", + "CONTROLS_FOREACH_TITLE": "untuk setiap item %1 di dalam list %2", + "CONTROLS_FOREACH_TOOLTIP": "Untuk tiap-tiap item di dalam list, tetapkan variabel '%1' ke dalam item, selanjutnya kerjakan beberapa statement.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "keluar dari perulangan", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "lanjutkan dengan langkah perulangan berikutnya", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Keluar dari perulangan.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Abaikan sisa dari perulangan ini, dan lanjutkan dengan langkah berikutnya.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Peringatan: Blok ini hanya dapat digunakan dalam perulangan.", + "CONTROLS_IF_TOOLTIP_1": "Jika nilainya benar, maka lakukan beberapa perintah.", + "CONTROLS_IF_TOOLTIP_2": "Jika nilainya benar, maka kerjakan perintah blok pertama. Jika tidak, kerjakan perintah blok kedua.", + "CONTROLS_IF_TOOLTIP_3": "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua.", + "CONTROLS_IF_TOOLTIP_4": "Jika nilai pertama benar, maka kerjakan perintah blok pertama. Sebaliknya, jika nilai kedua benar, kerjakan perintah blok kedua. Jika dua-duanya tidak benar, kerjakan perintah blok terakhir.", + "CONTROLS_IF_MSG_IF": "jika", + "CONTROLS_IF_MSG_ELSEIF": "atau jika", + "CONTROLS_IF_MSG_ELSE": "lainnya", + "CONTROLS_IF_IF_TOOLTIP": "Tambahkan, hapus, atau susun kembali bagian untuk mengkonfigurasi blok IF ini.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Tambahkan prasyarat ke dalam blok IF.", + "CONTROLS_IF_ELSE_TOOLTIP": "Terakhir, tambahkan kondisi tangkap-semua kedalam blok IF.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Kembalikan benar jika kedua input sama satu dengan lainnya.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Kembalikan benar jika kedua input tidak sama satu dengan lainnya.", + "LOGIC_COMPARE_TOOLTIP_LT": "Kembalikan benar jika input pertama lebih kecil dari input kedua.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Kembalikan benar jika input pertama lebih kecil atau sama dengan input kedua .", + "LOGIC_COMPARE_TOOLTIP_GT": "Kembalikan benar jika input pertama lebih besar dari input kedua.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Kembalikan benar jika input pertama lebih besar dari atau sama dengan input kedua.", + "LOGIC_OPERATION_TOOLTIP_AND": "Kembalikan benar jika kedua input adalah benar.", + "LOGIC_OPERATION_AND": "dan", + "LOGIC_OPERATION_TOOLTIP_OR": "Kembalikan benar jika minimal satu input nilainya benar.", + "LOGIC_OPERATION_OR": "atau", + "LOGIC_NEGATE_TITLE": "bukan (not) %1", + "LOGIC_NEGATE_TOOLTIP": "Kembalikan benar jika input salah. Kembalikan salah jika input benar.", + "LOGIC_BOOLEAN_TRUE": "benar", + "LOGIC_BOOLEAN_FALSE": "salah", + "LOGIC_BOOLEAN_TOOLTIP": "Kembalikan benar atau salah.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Kembalikan null.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "jika benar", + "LOGIC_TERNARY_IF_FALSE": "jika salah", + "LOGIC_TERNARY_TOOLTIP": "Periksa kondisi di 'test'. Jika kondisi benar, kembalikan nilai 'if true'; jika sebaliknya kembalikan nilai 'if false'.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Suatu angka.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://id.wikipedia.org/wiki/Aritmetika", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Kembalikan jumlah dari kedua angka.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Kembalikan selisih dari kedua angka.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Kembalikan perkalian dari kedua angka.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Kembalikan hasil bagi dari kedua angka.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Kembalikan angka pertama pangkat angka kedua.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "akar", + "MATH_SINGLE_TOOLTIP_ROOT": "Kembalikan akar dari angka.", + "MATH_SINGLE_OP_ABSOLUTE": "mutlak", + "MATH_SINGLE_TOOLTIP_ABS": "Kembalikan nilai absolut angka.", + "MATH_SINGLE_TOOLTIP_NEG": "Kembalikan penyangkalan terhadap angka.", + "MATH_SINGLE_TOOLTIP_LN": "Kembalikan logaritma natural dari angka.", + "MATH_SINGLE_TOOLTIP_LOG10": "Kembalikan dasar logaritma 10 dari angka.", + "MATH_SINGLE_TOOLTIP_EXP": "Kembalikan 10 pangkat angka.", + "MATH_SINGLE_TOOLTIP_POW10": "Kembalikan 10 pangkat angka.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Kembalikan sinus dari derajat (bukan radian).", + "MATH_TRIG_TOOLTIP_COS": "Kembalikan cosinus dari derajat (bukan radian).", + "MATH_TRIG_TOOLTIP_TAN": "Kembalikan tangen dari derajat (bukan radian).", + "MATH_TRIG_TOOLTIP_ASIN": "Kembalikan asin dari angka.", + "MATH_TRIG_TOOLTIP_ACOS": "Kembalikan acosine dari angka.", + "MATH_TRIG_TOOLTIP_ATAN": "Kembalikan atan dari angka.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Kembalikan salah satu konstanta: π (3,141…), e (2,718…), φ (1,618…), akar(2) (1,414…), akar(½) (0.707…), atau ∞ (tak terhingga).", + "MATH_IS_EVEN": "adalah bilangan genap", + "MATH_IS_ODD": "adalah bilangan ganjil", + "MATH_IS_PRIME": "adalah bilangan pokok", + "MATH_IS_WHOLE": "adalah bilangan bulat", + "MATH_IS_POSITIVE": "adalah bilangan positif", + "MATH_IS_NEGATIVE": "adalah bilangan negatif", + "MATH_IS_DIVISIBLE_BY": "dapat dibagi oleh", + "MATH_IS_TOOLTIP": "Periksa apakah angka adalah bilangan genap, bilangan ganjil, bilangan pokok, bilangan bulat, bilangan positif, bilangan negatif, atau apakan bisa dibagi oleh angka tertentu. Kembalikan benar atau salah.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "ubah %1 oleh %2", + "MATH_CHANGE_TOOLTIP": "Tambahkan angka kedalam variabel '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Bulatkan suatu bilangan naik atau turun.", + "MATH_ROUND_OPERATOR_ROUND": "membulatkan", + "MATH_ROUND_OPERATOR_ROUNDUP": "membulatkan keatas", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "membulatkan kebawah", + "MATH_ONLIST_OPERATOR_SUM": "jumlah dari list", + "MATH_ONLIST_TOOLTIP_SUM": "Kembalikan jumlah dari seluruh bilangan dari list.", + "MATH_ONLIST_OPERATOR_MIN": "minimum dari list", + "MATH_ONLIST_TOOLTIP_MIN": "Kembalikan angka terkecil dari list.", + "MATH_ONLIST_OPERATOR_MAX": "maksimum dari list", + "MATH_ONLIST_TOOLTIP_MAX": "Kembalikan angka terbesar dari list.", + "MATH_ONLIST_OPERATOR_AVERAGE": "rata-rata dari list", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Kembalikan rata-rata (mean aritmetik) dari nilai numerik dari list.", + "MATH_ONLIST_OPERATOR_MEDIAN": "median dari list", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Kembalikan median dari list.", + "MATH_ONLIST_OPERATOR_MODE": "mode-mode dari list", + "MATH_ONLIST_TOOLTIP_MODE": "Kembalikan list berisi item yang paling umum dari dalam list.", + "MATH_ONLIST_OPERATOR_STD_DEV": "deviasi standar dari list", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Kembalikan standard deviasi dari list.", + "MATH_ONLIST_OPERATOR_RANDOM": "item acak dari list", + "MATH_ONLIST_TOOLTIP_RANDOM": "Kembalikan elemen acak dari list.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "sisa dari %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Kembalikan sisa dari pembagian ke dua angka.", + "MATH_CONSTRAIN_TITLE": "Batasi %1 rendah %2 tinggi %3", + "MATH_CONSTRAIN_TOOLTIP": "Batasi angka antara batas yang ditentukan (inklusif).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "acak bulat dari %1 sampai %2", + "MATH_RANDOM_INT_TOOLTIP": "Kembalikan bilangan acak antara dua batas yang ditentukan, inklusif.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "nilai pecahan acak", + "MATH_RANDOM_FLOAT_TOOLTIP": "Kembalikan nilai pecahan acak antara 0.0 (inklusif) dan 1.0 (eksklusif).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Kembalikan arctangen titik (X, Y) dalam derajat dari -180 hingga 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Huruf, kata atau baris teks.", + "TEXT_JOIN_TITLE_CREATEWITH": "buat teks dengan", + "TEXT_JOIN_TOOLTIP": "Buat teks dengan cara gabungkan sejumlah item.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "join", + "TEXT_CREATE_JOIN_TOOLTIP": "Tambah, ambil, atau susun ulang teks blok.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Tambahkan suatu item ke dalam teks.", + "TEXT_APPEND_TITLE": "untuk %1 tambahkan teks %2", + "TEXT_APPEND_TOOLTIP": "Tambahkan beberapa teks ke variabel '%1'.", + "TEXT_LENGTH_TITLE": "panjang dari %1", + "TEXT_LENGTH_TOOLTIP": "Kembalikan sejumlah huruf (termasuk spasi) dari teks yang disediakan.", + "TEXT_ISEMPTY_TITLE": "%1 kosong", + "TEXT_ISEMPTY_TOOLTIP": "Kembalikan benar jika teks yang disediakan kosong.", + "TEXT_INDEXOF_TOOLTIP": "Kembalikan indeks pertama dan terakhir dari kejadian pertama/terakhir dari teks pertama dalam teks kedua. Kembalikan %1 jika teks tidak ditemukan.", + "TEXT_INDEXOF_TITLE": "dalam teks %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "temukan kejadian pertama dalam teks", + "TEXT_INDEXOF_OPERATOR_LAST": "temukan kejadian terakhir dalam teks", + "TEXT_CHARAT_TITLE": "dalam teks %1 %2", + "TEXT_CHARAT_FROM_START": "ambil huruf ke #", + "TEXT_CHARAT_FROM_END": "ambil huruf nomor # dari belakang", + "TEXT_CHARAT_FIRST": "ambil huruf pertama", + "TEXT_CHARAT_LAST": "ambil huruf terakhir", + "TEXT_CHARAT_RANDOM": "ambil huruf secara acak", + "TEXT_CHARAT_TOOLTIP": "Kembalikan karakter dari posisi tertentu.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Kembalikan spesifik bagian dari teks.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in teks", + "TEXT_GET_SUBSTRING_START_FROM_START": "ambil bagian teks (substring) dari huruf no #", + "TEXT_GET_SUBSTRING_START_FROM_END": "ambil bagian teks (substring) dari huruf ke # dari terakhir", + "TEXT_GET_SUBSTRING_START_FIRST": "ambil bagian teks (substring) dari huruf pertama", + "TEXT_GET_SUBSTRING_END_FROM_START": "pada huruf #", + "TEXT_GET_SUBSTRING_END_FROM_END": "pada huruf nomer # dari terakhir", + "TEXT_GET_SUBSTRING_END_LAST": "pada huruf terakhir", + "TEXT_CHANGECASE_TOOLTIP": "Kembalikan kopi dari text dengan kapitalisasi yang berbeda.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "menjadi huruf kapital", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "menjadi huruf kecil", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "menjadi huruf pertama kapital", + "TEXT_TRIM_TOOLTIP": "Kembali salinan teks dengan spasi dihapus dari satu atau kedua ujungnya.", + "TEXT_TRIM_OPERATOR_BOTH": "pangkas ruang dari kedua belah sisi", + "TEXT_TRIM_OPERATOR_LEFT": "pangkas ruang dari sisi kiri", + "TEXT_TRIM_OPERATOR_RIGHT": "pangkas ruang dari sisi kanan", + "TEXT_PRINT_TITLE": "cetak %1", + "TEXT_PRINT_TOOLTIP": "Cetak teks yant ditentukan, angka atau ninlai lainnya.", + "TEXT_PROMPT_TYPE_TEXT": "meminta teks dengan pesan", + "TEXT_PROMPT_TYPE_NUMBER": "Meminta angka dengan pesan", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Meminta pengguna untuk memberi sebuah angka.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Meminta pengguna untuk memberi beberapa teks.", + "TEXT_COUNT_MESSAGE0": "hitung %1 dalam %2", + "TEXT_COUNT_TOOLTIP": "Hitung berapa banyak teks muncul dalam teks lain.", + "TEXT_REPLACE_MESSAGE0": "ganti %1 dengan %2 dalam %3", + "TEXT_REPLACE_TOOLTIP": "Ganti semua kemunculan teks dalam teks lain.", + "TEXT_REVERSE_MESSAGE0": "balikkan %1", + "TEXT_REVERSE_TOOLTIP": "Balikkan urutan huruf dalam teks.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "buat list kosong", + "LISTS_CREATE_EMPTY_TOOLTIP": "Kembalikan list, dengan panjang 0, tidak berisi data", + "LISTS_CREATE_WITH_TOOLTIP": "Buat sebuah list dengan sejumlah item.", + "LISTS_CREATE_WITH_INPUT_WITH": "buat list dengan", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "list", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Tambahkan, hapus, atau susun ulang bagian untuk mengkonfigurasi blok list ini.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Tambahkan sebuah item ke list.", + "LISTS_REPEAT_TOOLTIP": "Buat sebuah list yang terdiri dari nilai yang diberikan diulang sebanyak jumlah yang ditentukan.", + "LISTS_REPEAT_TITLE": "buat list dengan item %1 diulang %2 kali", + "LISTS_LENGTH_TITLE": "panjang dari %1", + "LISTS_LENGTH_TOOLTIP": "Kembalikan panjang list.", + "LISTS_ISEMPTY_TITLE": "%1 kosong", + "LISTS_ISEMPTY_TOOLTIP": "Kembalikan benar jika list kosong.", + "LISTS_INLIST": "dalam list", + "LISTS_INDEX_OF_FIRST": "cari kejadian pertama item", + "LISTS_INDEX_OF_LAST": "cari kejadian terakhir item", + "LISTS_INDEX_OF_TOOLTIP": "Kembalikan indeks dari item pertama/terakhir kali muncul dalam list. Kembalikan %1 jika item tidak ditemukan.", + "LISTS_GET_INDEX_GET": "dapatkan", + "LISTS_GET_INDEX_GET_REMOVE": "dapatkan dan hapus", + "LISTS_GET_INDEX_REMOVE": "Hapus", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# dari akhir", + "LISTS_GET_INDEX_FIRST": "pertama", + "LISTS_GET_INDEX_LAST": "terakhir", + "LISTS_GET_INDEX_RANDOM": "acak", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 adalah item pertama.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 adalah item terakhir.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Kembalikan item di posisi tertentu dalam list.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Kembalikan item pertama dalam list.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Kembalikan item terakhir dalam list.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Kembalikan item acak dalam list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Hapus dan kembalikan item di posisi tertentu dalam list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Hapus dan kembalikan item pertama dalam list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Hapus dan kembalikan item terakhir dalam list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Hapus dan kembalikan item acak dalam list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Hapus item di posisi tertentu dalam list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Hapus item pertama dalam list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Hapus item terakhir dalam list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Hapus sebuah item acak dalam list.", + "LISTS_SET_INDEX_SET": "tetapkan", + "LISTS_SET_INDEX_INSERT": "sisipkan di", + "LISTS_SET_INDEX_INPUT_TO": "sebagai", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Tetapkan item ke dalam posisi yang telah ditentukan di dalam list.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Tetapkan item pertama di dalam list.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Menetapkan item terakhir dalam list.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Tetapkan secara acak sebuah item dalam list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Sisipkan item ke dalam posisi yang telah ditentukan di dalam list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Sisipkan item di bagian awal dari list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Tambahkan item ke bagian akhir list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Sisipkan item secara acak ke dalam list.", + "LISTS_GET_SUBLIST_START_FROM_START": "dapatkan sub-list dari #", + "LISTS_GET_SUBLIST_START_FROM_END": "dapatkan sub-list dari nomor # dari akhir", + "LISTS_GET_SUBLIST_START_FIRST": "dapatkan sub-list dari pertama", + "LISTS_GET_SUBLIST_END_FROM_START": "ke #", + "LISTS_GET_SUBLIST_END_FROM_END": "ke # dari akhir", + "LISTS_GET_SUBLIST_END_LAST": "ke yang paling akhir", + "LISTS_GET_SUBLIST_TOOLTIP": "Buat salinan bagian tertentu dari list.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "urutkan %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Urutkan salinan dari daftar", + "LISTS_SORT_ORDER_ASCENDING": "menaik", + "LISTS_SORT_ORDER_DESCENDING": "menurun", + "LISTS_SORT_TYPE_NUMERIC": "sesuai nomor", + "LISTS_SORT_TYPE_TEXT": "sesuai abjad", + "LISTS_SORT_TYPE_IGNORECASE": "sesuai abjad, abaikan kasus", + "LISTS_SPLIT_LIST_FROM_TEXT": "buat list dari teks", + "LISTS_SPLIT_TEXT_FROM_LIST": "buat teks dari list", + "LISTS_SPLIT_WITH_DELIMITER": "dengan pembatas", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Membagi teks ke dalam daftar teks, pisahkan pada setiap pembatas.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Gabung daftar teks menjadi satu teks, yang dipisahkan oleh pembatas.", + "LISTS_REVERSE_MESSAGE0": "balikkan %1", + "LISTS_REVERSE_TOOLTIP": "Balikkan salinan dari daftar.", + "VARIABLES_GET_TOOLTIP": "Kembalikan nilai variabel ini.", + "VARIABLES_GET_CREATE_SET": "Buat 'set %1'", + "VARIABLES_SET": "tetapkan %1 untuk %2", + "VARIABLES_SET_TOOLTIP": "tetapkan variabel ini dengan input yang sama.", + "VARIABLES_SET_CREATE_GET": "Buat 'get %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "untuk", + "PROCEDURES_DEFNORETURN_PROCEDURE": "buat sesuatu", + "PROCEDURES_BEFORE_PARAMS": "dengan:", + "PROCEDURES_CALL_BEFORE_PARAMS": "dengan:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Buat sebuah fungsi tanpa output.", + "PROCEDURES_DEFNORETURN_COMMENT": "Jelaskan fungsi ini...", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFRETURN_RETURN": "kembali", + "PROCEDURES_DEFRETURN_TOOLTIP": "Buat sebuah fungsi dengan satu output.", + "PROCEDURES_ALLOW_STATEMENTS": "memungkinkan pernyataan", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Peringatan: Fungsi ini memiliki parameter duplikat.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Menjalankan fungsi '%1' yang ditetapkan pengguna.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Menjalankan fungsi '%1' yang ditetapkan pengguna dan menggunakan outputnya.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "input", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Menambah, menghapus, atau menyusun ulang masukan untuk fungsi ini.", + "PROCEDURES_MUTATORARG_TITLE": "masukan Nama:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Tambahkan masukan ke fungsi.", + "PROCEDURES_HIGHLIGHT_DEF": "Sorot definisi fungsi", + "PROCEDURES_CREATE_DO": "Buat '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Jika nilai yang benar, kemudian kembalikan nilai kedua.", + "PROCEDURES_IFRETURN_WARNING": "Peringatan: Blok ini dapat digunakan hanya dalam definisi fungsi.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Ucapkan sesuatu...", + "WORKSPACE_ARIA_LABEL": "Ruang Kerja Blockly", + "COLLAPSED_WARNINGS_WARNING": "Blok yang diciutkan memiliki peringatan.", + "DIALOG_OK": "Oke", + "DIALOG_CANCEL": "Batal" +} diff --git a/msg/json/ig.json b/msg/json/ig.json index 93865baec45..2e539b3bd54 100644 --- a/msg/json/ig.json +++ b/msg/json/ig.json @@ -1,332 +1,332 @@ -{ - "@metadata": { - "authors": [ - "Mapmeld", - "Ukabia" - ] - }, - "VARIABLES_DEFAULT_NAME": "ihe", - "TODAY": "Taa", - "DUPLICATE_BLOCK": "Ntụgharị", - "ADD_COMMENT": "Tịnye okwu", - "REMOVE_COMMENT": "Wepu okwu", - "DUPLICATE_COMMENT": "Tụgharịa okwu", - "EXTERNAL_INPUTS": "Ntinye Mpụta", - "INLINE_INPUTS": "Ntinye N'ahịrị", - "DELETE_BLOCK": "Kpochapụ Ngọngọ", - "DELETE_X_BLOCKS": "Kpochapụ %1 Ngọngọ", - "DELETE_ALL_BLOCKS": "Mkpọchi %1 ngọngọ niile?", - "CLEAN_UP": "Hichapụ ngọngọ", - "COLLAPSE_BLOCK": "Kwada Ngọngọ", - "COLLAPSE_ALL": "Kwada Ngọngọ", - "EXPAND_BLOCK": "Gbasaa Ngọngọ", - "EXPAND_ALL": "Gbasaa Ngọngọ", - "DISABLE_BLOCK": "Gbanyụọ Ngọngọ", - "ENABLE_BLOCK": "Gbanye Ngọngọ", - "HELP": "Enyemaka", - "UNDO": "Me la àzụ", - "REDO": "Megharịa", - "CHANGE_VALUE_TITLE": "Gbanwee akara:", - "RENAME_VARIABLE": "Nyegharịa agbanwe aha...", - "RENAME_VARIABLE_TITLE": "Nyegharịa agbanwe '%1' nille ga:", - "NEW_VARIABLE": "Mepụta agbanwe...", - "NEW_STRING_VARIABLE": "Mepụta njikọ agbanwe...", - "NEW_NUMBER_VARIABLE": "Mepụta nọmba agbanwe...", - "NEW_COLOUR_VARIABLE": "Mepụta agba agbanwe...", - "NEW_VARIABLE_TYPE_TITLE": "Ụdị agbanwe ọhụụ:", - "NEW_VARIABLE_TITLE": "Aha agbanwe ọhụụ:", - "VARIABLE_ALREADY_EXISTS": "Agbanwe akpọrọ '%1' dị adị.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Agbanwe akpọrọ '%1' dị adị na ụdị ozo: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Kpochapụ %1 ojịjị nke agbanwe '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Agaghị ekpochapụlị agbanwe '%1' maka nsonye ya na nkọwa nke ọrụ ahụ '%2'", - "DELETE_VARIABLE": "Kpochapụ agbanwe ‘%1' ahu", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Họrọ agba site na palette.", - "COLOUR_RANDOM_TITLE": "agba ọbụla", - "COLOUR_RANDOM_TOOLTIP": "Họrọ agba na-nke ọbụla.", - "COLOUR_RGB_TITLE": "agba ya na", - "COLOUR_RGB_RED": "uhie", - "COLOUR_RGB_GREEN": "akwụkwọ ndụ", - "COLOUR_RGB_BLUE": "bluu", - "COLOUR_RGB_TOOLTIP": "Mepụta agba nwere ọnụ ọgụgụ kpọmkwem nke agba uhie, akwụkwọ ndụ, na akara niile ga-adịrịrị n'etiti 0 rụọ 100.", - "COLOUR_BLEND_TITLE": "ngwakọta", - "COLOUR_BLEND_COLOUR1": "agba 1", - "COLOUR_BLEND_COLOUR2": "agba 2", - "COLOUR_BLEND_RATIO": "oke", - "COLOUR_BLEND_TOOLTIP": "Na ngwakọta agba abụọ ọnụ na na oke enyere (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "meghachi ụgbọ %1", - "CONTROLS_REPEAT_INPUT_DO": "mee", - "CONTROLS_REPEAT_TOOLTIP": "Mee ụfọdụ okwu ọtụtụ ugboro.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "megharịa mgbe", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "megharịa tụpụ", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Ọ bụ ebe akara bụ ezịọkwụ, megharịa ụfọdụ koodu.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Ọ bụ ebe akara bụ ụgha, megharịa ụfọdụ koodu.", - "CONTROLS_FOR_TOOLTIP": "Nwere ngwakọta '%1' na akara ọbụla sịte na mbịdo ọnụọgụgụ rụọ na ngwụcha ọnụọgụgụ, na-ngụta sịtere na nkeji oge kpọmkwem. megharịa koodu oge ọbụla:", - "CONTROLS_FOR_TITLE": "gụọ na %1 site na %2 rụọ %3 tupu %4", - "CONTROLS_FOREACH_TITLE": "maka ihe ọ bụla %1 n'ime ndepụta %2", - "CONTROLS_FOREACH_TOOLTIP": "Maka ihe ọ bụla n'ime ndepụta, debe agbanwe '%1' na ihe ahụ, wee degharịa ụfọdụ koodu.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "gbapuo na meghachi a", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "malite na nsoghari nke meghachi ozo", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Gba puo na gburugburu nke ọdị n’ime ya.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Wụọ mkpụchị meghachi ndị a fọdụrụ, ma gaa n'ihu na nsoghari nke aka.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Ịdọ aka ná ntị: Enwere ike iji ngọngọ a naanị n'ime meghachi.", - "CONTROLS_IF_TOOLTIP_1": "Ọ bụrụ na akara bụ ezịọkwụ, mezie ụfọdụ okwu.", - "CONTROLS_IF_TOOLTIP_2": "Ọ bụrụ na akara bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, mezie ngọngọ nke abụọ nke okwu.", - "CONTROLS_IF_TOOLTIP_3": "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu.", - "CONTROLS_IF_TOOLTIP_4": "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu. Ọ bụrụ na onweghị akara bụ ezịọkwụ, mee ngọngọ okwu ikpeazụ.", - "CONTROLS_IF_MSG_IF": "ọ bụrụ", - "CONTROLS_IF_MSG_ELSEIF": "ọzọ ma ọ bụrụ", - "CONTROLS_IF_MSG_ELSE": "ọzọ", - "CONTROLS_IF_IF_TOOLTIP": "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearịa nke a ma ọ bụrụ na ngọngọ.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Tinye ọnọdụ na ngọngọ ma ọ bụrụ.", - "CONTROLS_IF_ELSE_TOOLTIP": "Tinye ngwucha, ọnọdụ jide-niile na ngọngọ ma ọ bụrụ.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye hatara onwe ha.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye aghataghị onwe ha.", - "LOGIC_COMPARE_TOOLTIP_LT": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ntinye nke abụọ.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ma ọ bụ hatara ntinye nke abụọ.", - "LOGIC_COMPARE_TOOLTIP_GT": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ntinye nke abụọ.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ma ọ bụ hatara ntinye nke abụọ.", - "LOGIC_OPERATION_TOOLTIP_AND": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye abụọ a bụ ezịọkwụ.", - "LOGIC_OPERATION_AND": "ma", - "LOGIC_OPERATION_TOOLTIP_OR": "Weghachi ezịọkwụ ma ọ bụrụ na ọdịkarịa ala otu n’ime ntinye a bụ ezịọkwụ.", - "LOGIC_OPERATION_OR": "ma ọ bụrụ", - "LOGIC_NEGATE_TITLE": "ma ọ bụghị %1", - "LOGIC_NEGATE_TOOLTIP": "Weghachitere ezịọkwụ ma ọ bụrụ na ntinye bụ ụgha. Weghachitere ụgha ma ọ bụrụ na ntinye bụ ezịọkwụ.", - "LOGIC_BOOLEAN_TRUE": "ezịọkwụ", - "LOGIC_BOOLEAN_FALSE": "ụgha", - "LOGIC_BOOLEAN_TOOLTIP": "Weghachitere ezịọkwụ ma ọ bụ ụgha.", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Weghachitere nkịtị.", - "LOGIC_TERNARY_CONDITION": "ule", - "LOGIC_TERNARY_IF_TRUE": "ọ bụrụ na eziokwu", - "LOGIC_TERNARY_IF_FALSE": "ọ bụrụ ụgha", - "LOGIC_TERNARY_TOOLTIP": "Lelee ọnọdụ na 'ule'. Ọ bụrụ na ọnọdụ ahụ bụ eziokwu, weghachitere akara 'ọ bụrụ na eziokwu’; ma ọ bụghị ya weghachitere akara 'ọ bụrụ ụgha'.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Ọnụọgụgụ.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Weghachite ngụkọ ọnụ ọgụgụ abụọ ahụ.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Weghachite nwepụ ọnụ ọgụgụ abụọ ahụ.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Weghachite mụbaa ọnụ ọgụgụ abụọ ahụ.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Weghachite kwenye ọnụ ọgụgụ abụọ ahụ.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Weghachite nọmba mbu nke emeturu ike nke nọmba nke abụọ.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "Isi ngụkọ", - "MATH_SINGLE_TOOLTIP_ROOT": "Weghachite Isi ngụkọ nke nọmba.", - "MATH_SINGLE_OP_ABSOLUTE": "ozụzụ", - "MATH_SINGLE_TOOLTIP_ABS": "Weghachite akara ozụzụ nke nọmba.", - "MATH_SINGLE_TOOLTIP_NEG": "Weghachite njụ nke nọmba.", - "MATH_SINGLE_TOOLTIP_LN": "Weghachite lọgarịdịm nke di na nọmba.", - "MATH_SINGLE_TOOLTIP_LOG10": "Weghachite isi lọgarịdịm 10 nke nọmba.", - "MATH_SINGLE_TOOLTIP_EXP": "Weghachite na ike nke nọmba.", - "MATH_SINGLE_TOOLTIP_POW10": "Weghachite 10 na ike nke nọmba.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Weghachite saịn nke ogo (ọ bụghị redian).", - "MATH_TRIG_TOOLTIP_COS": "Weghachite kosaịn nke ogo (ọ bụghị redian).", - "MATH_TRIG_TOOLTIP_TAN": "Weghachite tanjentị nke ogo (ọ bụghị redian).", - "MATH_TRIG_TOOLTIP_ASIN": "Weghachite aksaịn nke nọmba.", - "MATH_TRIG_TOOLTIP_ACOS": "Weghachite akosaịn nke nọmba.", - "MATH_TRIG_TOOLTIP_ATAN": "Weghachite aktanjentị nke nọmba.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Weghachite otu n'ime kọnstant ndị nkịtị: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", - "MATH_IS_EVEN": "bụ ịvụn", - "MATH_IS_ODD": "bụ ọd", - "MATH_IS_PRIME": "bụ praim", - "MATH_IS_WHOLE": "zuru ezu", - "MATH_IS_POSITIVE": "bu posịtịf", - "MATH_IS_NEGATIVE": "bụ negetịf", - "MATH_IS_DIVISIBLE_BY": "ga ekenwụ", - "MATH_IS_TOOLTIP": "Tụlee ma nọmba ọ bụ ịvụn, ọd, praim, zuru ezu, posịtịf, negetịf, ma e nwere nọmba ga ekenwu ya. Weghachitere eziokwu ma ọ bụ ụgha.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "gbanwee %1 site na %2", - "MATH_CHANGE_TOOLTIP": "Tinye nọmba na agbanwe '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Gbaago nọmba n'elu ma ọ bụ ala.", - "MATH_ROUND_OPERATOR_ROUND": "gbaarịa", - "MATH_ROUND_OPERATOR_ROUNDUP": "gbaago elu", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "gbatụọ ala", - "MATH_ONLIST_OPERATOR_SUM": "nchịkọta nke ndepụta", - "MATH_ONLIST_TOOLTIP_SUM": "Weghachite nchịkọta nke nọmba niile na ndepụta.", - "MATH_ONLIST_OPERATOR_MIN": "opekempe nke ndepụta", - "MATH_ONLIST_TOOLTIP_MIN": "Weghachite nọmba kacha obere na ndepụta.", - "MATH_ONLIST_OPERATOR_MAX": "ọkacha ukwuu nke ndepụta", - "MATH_ONLIST_TOOLTIP_MAX": "Weghachite nọmba kacha ukwuu na ndepụta.", - "MATH_ONLIST_OPERATOR_AVERAGE": "agbaetiti nke ndepụta", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Weghachite agbaetiti (nchịkọta mpụta) nke akara ọnụọgụ na ndepụta.", - "MATH_ONLIST_OPERATOR_MEDIAN": "etiti nke ndepụta", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Weghachite nọmba agbaetiti na ndepụta.", - "MATH_ONLIST_OPERATOR_MODE": "ụdị ndepụta", - "MATH_ONLIST_TOOLTIP_MODE": "Weghachite ndepụta nke nke ihe kachasị mkpa na ndepụta.", - "MATH_ONLIST_OPERATOR_STD_DEV": "ntughari usoro nke ndepụta", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Weghachite ntughari usoro nke ndepụta.", - "MATH_ONLIST_OPERATOR_RANDOM": "Ihe ọbụla nke ndepụta", - "MATH_ONLIST_TOOLTIP_RANDOM": "Weghachite Ihe ọbụla site na ndepụta.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "ihe fọdụrụ nke %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Weghachite ihe fọdụrụ site na nkewa nọmba abụọ.", - "MATH_CONSTRAIN_TITLE": "gbochịe %1 ala %2 elu %3", - "MATH_CONSTRAIN_TOOLTIP": "Gbochịe ọnụọgụgụ dị n'etiti nọmba dị oke ala na nọmba dị oke elu (gụnyere).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "ọnụọgụgụ ọbụla site na %1 rụọ %2", - "MATH_RANDOM_INT_TOOLTIP": "Weghachite ọnụọgụgụ ọbụla dị n'etiti ihe abụọ a kapịrị ọnụ, agụnyere.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "nkewa ọbụla", - "MATH_RANDOM_FLOAT_TOOLTIP": "Weghachite ọnụọgụgụ ọbụla dị n'etiti 0.0 (gụnyere) na 1.0 (agụnyeghị).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 nke X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Weghachite aktanjentị nke isi (X, Y) na ogo site na -180 rụọ 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Akwụkwọ ozi, okwu, ma ọ bụ akara ederede.", - "TEXT_JOIN_TITLE_CREATEWITH": "mepụta ederede na", - "TEXT_JOIN_TOOLTIP": "Mepụta otu ederede site na ijikọta ọnụ ọgụgụ ihe ọ bụla.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "jikọta", - "TEXT_CREATE_JOIN_TOOLTIP": "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Tinye ihe na ederede.", - "TEXT_APPEND_TITLE": "iji %1 tinye ederede %2", - "TEXT_APPEND_TOOLTIP": "Tinye ederede na mgbanwee '%1'.", - "TEXT_LENGTH_TITLE": "ogologo nke %1", - "TEXT_LENGTH_TOOLTIP": "Weghachitere nọmba nke akwụkwọ ozi (gụnyere oghere) na ederede enyere.", - "TEXT_ISEMPTY_TITLE": "%1 di n’efu", - "TEXT_ISEMPTY_TOOLTIP": "Weghachitere ezịọkwụ ma ọ bụrụ na ederede enyere di n’efu.", - "TEXT_INDEXOF_TOOLTIP": "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe.", - "TEXT_INDEXOF_TITLE": "chọta na ederede %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "chọta ihe omume mbu nke ederede", - "TEXT_INDEXOF_OPERATOR_LAST": "chọta ihe omume ikpeazụ nke ederede", - "TEXT_CHARAT_TITLE": "chọta na ederede %1 %2", - "TEXT_CHARAT_FROM_START": "nweta akwụkwọ ozi #", - "TEXT_CHARAT_FROM_END": "nweta akwụkwọ ozi # site na njedebe", - "TEXT_CHARAT_FIRST": "nweta akwụkwọ ozi mbu", - "TEXT_CHARAT_LAST": "nweta akwụkwọ ozi ikpeazụ", - "TEXT_CHARAT_RANDOM": "nweta akwụkwọ ozi ọbụla", - "TEXT_CHARAT_TOOLTIP": "Weghachite akwụkwọ ozi ahụ na ọnọdụ a kapịrị ọnụ.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Weghachite akụkụ nke akọwapụtara ederede.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "chọta na ederede", - "TEXT_GET_SUBSTRING_START_FROM_START": "nweta njịkọ-ala na akwụkwọ ozi #", - "TEXT_GET_SUBSTRING_START_FROM_END": "nweta njịkọ-ala na akwụkwọ ozi # site na njedebe", - "TEXT_GET_SUBSTRING_START_FIRST": "nweta njịkọ-ala na akwụkwọ ozi mbu", - "TEXT_GET_SUBSTRING_END_FROM_START": "na akwụkwọ ozi #", - "TEXT_GET_SUBSTRING_END_FROM_END": "na akwụkwọ ozi # site na njedebe", - "TEXT_GET_SUBSTRING_END_LAST": "na leta ikpeazụ", - "TEXT_CHANGECASE_TOOLTIP": "AA <-> aa", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "na AHỊRỊ ELU", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "na ahịrị elu", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "na Aha Ahịrị", - "TEXT_TRIM_TOOLTIP": "Weghachite otu ederede ya na oghere ọzọ wepụrụ site n'otu ma ọ bụ akụkụ mechị abụọ.", - "TEXT_TRIM_OPERATOR_BOTH": "belata oghere dị mkpụmkpụ si n'akụkụ abụọ nke", - "TEXT_TRIM_OPERATOR_LEFT": "belata oghere dị mkpụmkpụ si n'akụkụ aka ịkpa nke", - "TEXT_TRIM_OPERATOR_RIGHT": "belata oghere dị mkpụmkpụ si n'akụkụ aka nrị nke", - "TEXT_PRINT_TITLE": "bipụta %1", - "TEXT_PRINT_TOOLTIP": "Bipụta ederede a kapịrị ọnụ, nọmba ma ọ bụ akara ọzọ.", - "TEXT_PROMPT_TYPE_TEXT": "Mepụta ngwa maka iji ederede na ozi", - "TEXT_PROMPT_TYPE_NUMBER": "Mepụta ngwa maka maka nọmba na ozi", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Mepụta ngwa onye ọrụ maka nọmba.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Mepụta ngwa onye ọrụ maka ederede.", - "TEXT_COUNT_MESSAGE0": "gụọ %1 n’ime %2", - "TEXT_COUNT_TOOLTIP": "Gụọ ugboro ole ụfọdụ ederede na’apụta n’ụfọdụ ederede ọzọ.", - "TEXT_REPLACE_MESSAGE0": "dochie %1 na %2 n’ime %3", - "TEXT_REPLACE_TOOLTIP": "Dochie ihe omuma nke ederede ufodu n'ime ufodu ederede ozo.", - "TEXT_REVERSE_MESSAGE0": "gbanwe %1", - "TEXT_REVERSE_TOOLTIP": "Na-agbanwe iwu nke ndị odide na ederede.", - "LISTS_CREATE_EMPTY_TITLE": "mepụta ndepụta efu", - "LISTS_CREATE_EMPTY_TOOLTIP": "Weghachite ndepụta, nke ogologo 0, nke enweghị ndekọ data", - "LISTS_CREATE_WITH_TOOLTIP": "Mepụta ndepụta na nọmba ọ bụla.", - "LISTS_CREATE_WITH_INPUT_WITH": "mepụta ndepụta", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ndepụta", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Tinye ihe na ndepụta.", - "LISTS_REPEAT_TOOLTIP": "Na-emepụta listi ndepụta gụnyere akara a nyere ya ugboro ugboro.", - "LISTS_REPEAT_TITLE": "mepụta ndepụta na ihe %1 emegharịrị ugboro %2", - "LISTS_LENGTH_TITLE": "ogo nke %1", - "LISTS_LENGTH_TOOLTIP": "Weghachite ogo nke ndepụta.", - "LISTS_ISEMPTY_TITLE": "%1 ghe oghe", - "LISTS_ISEMPTY_TOOLTIP": "Weghachite eziokwu ma ọ bụrụ na ndepụta ahụ dị n’efu.", - "LISTS_INLIST": "n’ime ndepụta", - "LISTS_INDEX_OF_FIRST": "chọta ihe mbu nke ihe", - "LISTS_INDEX_OF_LAST": "chọta ihe ikpeazụ nke ihe", - "LISTS_INDEX_OF_TOOLTIP": "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe.", - "LISTS_GET_INDEX_GET": "nweta", - "LISTS_GET_INDEX_GET_REMOVE": "nweta ma wepu", - "LISTS_GET_INDEX_REMOVE": "wepu", - "LISTS_GET_INDEX_FROM_END": "# site na njedebe", - "LISTS_GET_INDEX_FIRST": "mbu", - "LISTS_GET_INDEX_LAST": "ikpeazụ", - "LISTS_GET_INDEX_RANDOM": "nke ọ bụla", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 bụ ihe mbụ.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 bụ ihe ikpeazụ.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Weghachitere ihe na ọnọdụ a kapịrị ọnụ na ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Weghachitere ihe mbụ n'ime ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Weghachitere ihe ikpeazụ n'ime ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Weghachitere ihe ọbụla n'ime ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Wepu ma weghachite ihe na ọnọdụ a kapịrị ọnụ na ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Wepu ma weghachite ihe mbu na ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Wepu ma weghachite ihe ikpeazụ n'ime ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Wepu ma weghachite ihe ọbụla n'ime ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Wepu ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Wepu ihe mbụ n'ime ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Wepu ihe ikpeazụ n'ime ndepụta.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Wepu ihe ọbụla n'ime ndepụta.", - "LISTS_SET_INDEX_SET": "set", - "LISTS_SET_INDEX_INSERT": "tinye na", - "LISTS_SET_INDEX_INPUT_TO": "dị ka", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Debe ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Debe ihe mbụ n'ime ndepụta.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Debe ihe ikpeazụ n'ime ndepụta.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Debe ihe ọbụla n'ime ndepụta.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Na-etinye ihe na ọnọdụ a kapịrị ọnụ na ndepụta.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Na-etinye ihe ahụ na mmalite nke ndepụta.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Na-etinye ihe ahụ na ngwụcha nke ndepụta.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Na-etinye ihe ahụ na ebe ọbụla nke ndepụta.", - "LISTS_GET_SUBLIST_START_FROM_START": "nweta akụkụ ndepụta site na #", - "LISTS_GET_SUBLIST_START_FROM_END": "nweta akụkụ ndepụta site na # site na njedebe", - "LISTS_GET_SUBLIST_START_FIRST": "nweta akụkụ ndepụta site na mbịdo", - "LISTS_GET_SUBLIST_END_FROM_START": "rụọ #", - "LISTS_GET_SUBLIST_END_FROM_END": "rụọ # site na njedebe", - "LISTS_GET_SUBLIST_END_LAST": "rụọ na ngwụcha", - "LISTS_GET_SUBLIST_TOOLTIP": "Na-emepụta otu akụkụ a kapịrị ọnụ nke ndepụta.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "hazie %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Tọọ otu akụkụ ndepụta ahụ.", - "LISTS_SORT_ORDER_ASCENDING": "arịgo", - "LISTS_SORT_ORDER_DESCENDING": "agbada", - "LISTS_SORT_TYPE_NUMERIC": "nọmba", - "LISTS_SORT_TYPE_TEXT": "mkpụrụ edemede", - "LISTS_SORT_TYPE_IGNORECASE": "mkpụrụ edemede, leghara ọnọdụ anya", - "LISTS_SPLIT_LIST_FROM_TEXT": "mee ndepụta site na ederede", - "LISTS_SPLIT_TEXT_FROM_LIST": "mee ederede site na ndepụta", - "LISTS_SPLIT_WITH_DELIMITER": "na ihe nkewa", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Kewaa ederede n'ime ndepụta nke ederede, na-agbasa na ihe nkwea ọ bụla.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Jikọọ ndepụta nke ederede gaa na otu ederede, nke oihe nkewa kewara.", - "LISTS_REVERSE_MESSAGE0": "gbanwe %1", - "LISTS_REVERSE_TOOLTIP": "Tụgharịa otu akụkụ ndepụta.", - "VARIABLES_GET_TOOLTIP": "Weghachite akara nke agbanwe a.", - "VARIABLES_GET_CREATE_SET": "Mepụta 'dozie %1'", - "VARIABLES_SET": "dozie %1 ga na %2", - "VARIABLES_SET_TOOLTIP": "Debe mgbanwe a ka ọ ghata ihe ntinye.", - "VARIABLES_SET_CREATE_GET": "Mepụta 'nweta uru %1'", - "PROCEDURES_DEFNORETURN_TITLE": "ga na", - "PROCEDURES_DEFNORETURN_PROCEDURE": "megharịa", - "PROCEDURES_BEFORE_PARAMS": "na:", - "PROCEDURES_CALL_BEFORE_PARAMS": "na:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Na emepụta ọrụ na-enweghị mmepụta.", - "PROCEDURES_DEFNORETURN_COMMENT": "Kọwaa ọrụ a...", - "PROCEDURES_DEFRETURN_RETURN": "weghachite", - "PROCEDURES_DEFRETURN_TOOLTIP": "Na emepụta ọrụ nwere mmepụta.", - "PROCEDURES_ALLOW_STATEMENTS": "kwe ka okwu", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Gbaa ọrụ a kọwaa onye-ọrụ '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Gbaa ọrụ a kọwaa onye-ọrụ '%1' ma jiri mmepụta ya.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "ntinye", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Tinye, wepu, ma ọ bụ tugharịa ntinye na ọrụ a.", - "PROCEDURES_MUTATORARG_TITLE": "tinye aha:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Tinye ntinye aka na ọrụ ahụ.", - "PROCEDURES_HIGHLIGHT_DEF": "Nkọwapụta njirimara ọrụ", - "PROCEDURES_CREATE_DO": "Mepụta '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Weghachite akara nke agbanwe a.", - "PROCEDURES_IFRETURN_WARNING": "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Kwuo ihe ọ bụla...", - "DIALOG_OK": "Ọ DỊ MMA", - "DIALOG_CANCEL": "Hapụ̀" -} +{ + "@metadata": { + "authors": [ + "Mapmeld", + "Ukabia" + ] + }, + "VARIABLES_DEFAULT_NAME": "ihe", + "TODAY": "Taa", + "DUPLICATE_BLOCK": "Ntụgharị", + "ADD_COMMENT": "Tịnye okwu", + "REMOVE_COMMENT": "Wepu okwu", + "DUPLICATE_COMMENT": "Tụgharịa okwu", + "EXTERNAL_INPUTS": "Ntinye Mpụta", + "INLINE_INPUTS": "Ntinye N'ahịrị", + "DELETE_BLOCK": "Kpochapụ Ngọngọ", + "DELETE_X_BLOCKS": "Kpochapụ %1 Ngọngọ", + "DELETE_ALL_BLOCKS": "Mkpọchi %1 ngọngọ niile?", + "CLEAN_UP": "Hichapụ ngọngọ", + "COLLAPSE_BLOCK": "Kwada Ngọngọ", + "COLLAPSE_ALL": "Kwada Ngọngọ", + "EXPAND_BLOCK": "Gbasaa Ngọngọ", + "EXPAND_ALL": "Gbasaa Ngọngọ", + "DISABLE_BLOCK": "Gbanyụọ Ngọngọ", + "ENABLE_BLOCK": "Gbanye Ngọngọ", + "HELP": "Enyemaka", + "UNDO": "Me la àzụ", + "REDO": "Megharịa", + "CHANGE_VALUE_TITLE": "Gbanwee akara:", + "RENAME_VARIABLE": "Nyegharịa agbanwe aha...", + "RENAME_VARIABLE_TITLE": "Nyegharịa agbanwe '%1' nille ga:", + "NEW_VARIABLE": "Mepụta agbanwe...", + "NEW_STRING_VARIABLE": "Mepụta njikọ agbanwe...", + "NEW_NUMBER_VARIABLE": "Mepụta nọmba agbanwe...", + "NEW_COLOUR_VARIABLE": "Mepụta agba agbanwe...", + "NEW_VARIABLE_TYPE_TITLE": "Ụdị agbanwe ọhụụ:", + "NEW_VARIABLE_TITLE": "Aha agbanwe ọhụụ:", + "VARIABLE_ALREADY_EXISTS": "Agbanwe akpọrọ '%1' dị adị.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Agbanwe akpọrọ '%1' dị adị na ụdị ozo: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Kpochapụ %1 ojịjị nke agbanwe '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Agaghị ekpochapụlị agbanwe '%1' maka nsonye ya na nkọwa nke ọrụ ahụ '%2'", + "DELETE_VARIABLE": "Kpochapụ agbanwe ‘%1' ahu", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Họrọ agba site na palette.", + "COLOUR_RANDOM_TITLE": "agba ọbụla", + "COLOUR_RANDOM_TOOLTIP": "Họrọ agba na-nke ọbụla.", + "COLOUR_RGB_TITLE": "agba ya na", + "COLOUR_RGB_RED": "uhie", + "COLOUR_RGB_GREEN": "akwụkwọ ndụ", + "COLOUR_RGB_BLUE": "bluu", + "COLOUR_RGB_TOOLTIP": "Mepụta agba nwere ọnụ ọgụgụ kpọmkwem nke agba uhie, akwụkwọ ndụ, na akara niile ga-adịrịrị n'etiti 0 rụọ 100.", + "COLOUR_BLEND_TITLE": "ngwakọta", + "COLOUR_BLEND_COLOUR1": "agba 1", + "COLOUR_BLEND_COLOUR2": "agba 2", + "COLOUR_BLEND_RATIO": "oke", + "COLOUR_BLEND_TOOLTIP": "Na ngwakọta agba abụọ ọnụ na na oke enyere (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "meghachi ụgbọ %1", + "CONTROLS_REPEAT_INPUT_DO": "mee", + "CONTROLS_REPEAT_TOOLTIP": "Mee ụfọdụ okwu ọtụtụ ugboro.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "megharịa mgbe", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "megharịa tụpụ", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Ọ bụ ebe akara bụ ezịọkwụ, megharịa ụfọdụ koodu.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Ọ bụ ebe akara bụ ụgha, megharịa ụfọdụ koodu.", + "CONTROLS_FOR_TOOLTIP": "Nwere ngwakọta '%1' na akara ọbụla sịte na mbịdo ọnụọgụgụ rụọ na ngwụcha ọnụọgụgụ, na-ngụta sịtere na nkeji oge kpọmkwem. megharịa koodu oge ọbụla:", + "CONTROLS_FOR_TITLE": "gụọ na %1 site na %2 rụọ %3 tupu %4", + "CONTROLS_FOREACH_TITLE": "maka ihe ọ bụla %1 n'ime ndepụta %2", + "CONTROLS_FOREACH_TOOLTIP": "Maka ihe ọ bụla n'ime ndepụta, debe agbanwe '%1' na ihe ahụ, wee degharịa ụfọdụ koodu.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "gbapuo na meghachi a", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "malite na nsoghari nke meghachi ozo", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Gba puo na gburugburu nke ọdị n’ime ya.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Wụọ mkpụchị meghachi ndị a fọdụrụ, ma gaa n'ihu na nsoghari nke aka.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Ịdọ aka ná ntị: Enwere ike iji ngọngọ a naanị n'ime meghachi.", + "CONTROLS_IF_TOOLTIP_1": "Ọ bụrụ na akara bụ ezịọkwụ, mezie ụfọdụ okwu.", + "CONTROLS_IF_TOOLTIP_2": "Ọ bụrụ na akara bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, mezie ngọngọ nke abụọ nke okwu.", + "CONTROLS_IF_TOOLTIP_3": "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu.", + "CONTROLS_IF_TOOLTIP_4": "Ọ bụrụ na akara mbụ bụ ezịọkwụ, mezie ngọngọ mbụ nke okwu. Ma ọ bụghị ya, ọ bụrụ na akara nke abụọ bụ ezịọkwụ, mee ngọngọ nke abụọ nke okwu. Ọ bụrụ na onweghị akara bụ ezịọkwụ, mee ngọngọ okwu ikpeazụ.", + "CONTROLS_IF_MSG_IF": "ọ bụrụ", + "CONTROLS_IF_MSG_ELSEIF": "ọzọ ma ọ bụrụ", + "CONTROLS_IF_MSG_ELSE": "ọzọ", + "CONTROLS_IF_IF_TOOLTIP": "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearịa nke a ma ọ bụrụ na ngọngọ.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Tinye ọnọdụ na ngọngọ ma ọ bụrụ.", + "CONTROLS_IF_ELSE_TOOLTIP": "Tinye ngwucha, ọnọdụ jide-niile na ngọngọ ma ọ bụrụ.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye hatara onwe ha.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye aghataghị onwe ha.", + "LOGIC_COMPARE_TOOLTIP_LT": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ntinye nke abụọ.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị obere karia ma ọ bụ hatara ntinye nke abụọ.", + "LOGIC_COMPARE_TOOLTIP_GT": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ntinye nke abụọ.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye mbu dị ụkwụụ karia ma ọ bụ hatara ntinye nke abụọ.", + "LOGIC_OPERATION_TOOLTIP_AND": "Weghachi ezịọkwụ ma ọ bụrụ na ntinye abụọ a bụ ezịọkwụ.", + "LOGIC_OPERATION_AND": "ma", + "LOGIC_OPERATION_TOOLTIP_OR": "Weghachi ezịọkwụ ma ọ bụrụ na ọdịkarịa ala otu n’ime ntinye a bụ ezịọkwụ.", + "LOGIC_OPERATION_OR": "ma ọ bụrụ", + "LOGIC_NEGATE_TITLE": "ma ọ bụghị %1", + "LOGIC_NEGATE_TOOLTIP": "Weghachitere ezịọkwụ ma ọ bụrụ na ntinye bụ ụgha. Weghachitere ụgha ma ọ bụrụ na ntinye bụ ezịọkwụ.", + "LOGIC_BOOLEAN_TRUE": "ezịọkwụ", + "LOGIC_BOOLEAN_FALSE": "ụgha", + "LOGIC_BOOLEAN_TOOLTIP": "Weghachitere ezịọkwụ ma ọ bụ ụgha.", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Weghachitere nkịtị.", + "LOGIC_TERNARY_CONDITION": "ule", + "LOGIC_TERNARY_IF_TRUE": "ọ bụrụ na eziokwu", + "LOGIC_TERNARY_IF_FALSE": "ọ bụrụ ụgha", + "LOGIC_TERNARY_TOOLTIP": "Lelee ọnọdụ na 'ule'. Ọ bụrụ na ọnọdụ ahụ bụ eziokwu, weghachitere akara 'ọ bụrụ na eziokwu’; ma ọ bụghị ya weghachitere akara 'ọ bụrụ ụgha'.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Ọnụọgụgụ.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Weghachite ngụkọ ọnụ ọgụgụ abụọ ahụ.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Weghachite nwepụ ọnụ ọgụgụ abụọ ahụ.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Weghachite mụbaa ọnụ ọgụgụ abụọ ahụ.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Weghachite kwenye ọnụ ọgụgụ abụọ ahụ.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Weghachite nọmba mbu nke emeturu ike nke nọmba nke abụọ.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "Isi ngụkọ", + "MATH_SINGLE_TOOLTIP_ROOT": "Weghachite Isi ngụkọ nke nọmba.", + "MATH_SINGLE_OP_ABSOLUTE": "ozụzụ", + "MATH_SINGLE_TOOLTIP_ABS": "Weghachite akara ozụzụ nke nọmba.", + "MATH_SINGLE_TOOLTIP_NEG": "Weghachite njụ nke nọmba.", + "MATH_SINGLE_TOOLTIP_LN": "Weghachite lọgarịdịm nke di na nọmba.", + "MATH_SINGLE_TOOLTIP_LOG10": "Weghachite isi lọgarịdịm 10 nke nọmba.", + "MATH_SINGLE_TOOLTIP_EXP": "Weghachite na ike nke nọmba.", + "MATH_SINGLE_TOOLTIP_POW10": "Weghachite 10 na ike nke nọmba.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Weghachite saịn nke ogo (ọ bụghị redian).", + "MATH_TRIG_TOOLTIP_COS": "Weghachite kosaịn nke ogo (ọ bụghị redian).", + "MATH_TRIG_TOOLTIP_TAN": "Weghachite tanjentị nke ogo (ọ bụghị redian).", + "MATH_TRIG_TOOLTIP_ASIN": "Weghachite aksaịn nke nọmba.", + "MATH_TRIG_TOOLTIP_ACOS": "Weghachite akosaịn nke nọmba.", + "MATH_TRIG_TOOLTIP_ATAN": "Weghachite aktanjentị nke nọmba.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Weghachite otu n'ime kọnstant ndị nkịtị: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", + "MATH_IS_EVEN": "bụ ịvụn", + "MATH_IS_ODD": "bụ ọd", + "MATH_IS_PRIME": "bụ praim", + "MATH_IS_WHOLE": "zuru ezu", + "MATH_IS_POSITIVE": "bu posịtịf", + "MATH_IS_NEGATIVE": "bụ negetịf", + "MATH_IS_DIVISIBLE_BY": "ga ekenwụ", + "MATH_IS_TOOLTIP": "Tụlee ma nọmba ọ bụ ịvụn, ọd, praim, zuru ezu, posịtịf, negetịf, ma e nwere nọmba ga ekenwu ya. Weghachitere eziokwu ma ọ bụ ụgha.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "gbanwee %1 site na %2", + "MATH_CHANGE_TOOLTIP": "Tinye nọmba na agbanwe '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Gbaago nọmba n'elu ma ọ bụ ala.", + "MATH_ROUND_OPERATOR_ROUND": "gbaarịa", + "MATH_ROUND_OPERATOR_ROUNDUP": "gbaago elu", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "gbatụọ ala", + "MATH_ONLIST_OPERATOR_SUM": "nchịkọta nke ndepụta", + "MATH_ONLIST_TOOLTIP_SUM": "Weghachite nchịkọta nke nọmba niile na ndepụta.", + "MATH_ONLIST_OPERATOR_MIN": "opekempe nke ndepụta", + "MATH_ONLIST_TOOLTIP_MIN": "Weghachite nọmba kacha obere na ndepụta.", + "MATH_ONLIST_OPERATOR_MAX": "ọkacha ukwuu nke ndepụta", + "MATH_ONLIST_TOOLTIP_MAX": "Weghachite nọmba kacha ukwuu na ndepụta.", + "MATH_ONLIST_OPERATOR_AVERAGE": "agbaetiti nke ndepụta", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Weghachite agbaetiti (nchịkọta mpụta) nke akara ọnụọgụ na ndepụta.", + "MATH_ONLIST_OPERATOR_MEDIAN": "etiti nke ndepụta", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Weghachite nọmba agbaetiti na ndepụta.", + "MATH_ONLIST_OPERATOR_MODE": "ụdị ndepụta", + "MATH_ONLIST_TOOLTIP_MODE": "Weghachite ndepụta nke nke ihe kachasị mkpa na ndepụta.", + "MATH_ONLIST_OPERATOR_STD_DEV": "ntughari usoro nke ndepụta", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Weghachite ntughari usoro nke ndepụta.", + "MATH_ONLIST_OPERATOR_RANDOM": "Ihe ọbụla nke ndepụta", + "MATH_ONLIST_TOOLTIP_RANDOM": "Weghachite Ihe ọbụla site na ndepụta.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "ihe fọdụrụ nke %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Weghachite ihe fọdụrụ site na nkewa nọmba abụọ.", + "MATH_CONSTRAIN_TITLE": "gbochịe %1 ala %2 elu %3", + "MATH_CONSTRAIN_TOOLTIP": "Gbochịe ọnụọgụgụ dị n'etiti nọmba dị oke ala na nọmba dị oke elu (gụnyere).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "ọnụọgụgụ ọbụla site na %1 rụọ %2", + "MATH_RANDOM_INT_TOOLTIP": "Weghachite ọnụọgụgụ ọbụla dị n'etiti ihe abụọ a kapịrị ọnụ, agụnyere.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "nkewa ọbụla", + "MATH_RANDOM_FLOAT_TOOLTIP": "Weghachite ọnụọgụgụ ọbụla dị n'etiti 0.0 (gụnyere) na 1.0 (agụnyeghị).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 nke X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Weghachite aktanjentị nke isi (X, Y) na ogo site na -180 rụọ 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Akwụkwọ ozi, okwu, ma ọ bụ akara ederede.", + "TEXT_JOIN_TITLE_CREATEWITH": "mepụta ederede na", + "TEXT_JOIN_TOOLTIP": "Mepụta otu ederede site na ijikọta ọnụ ọgụgụ ihe ọ bụla.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "jikọta", + "TEXT_CREATE_JOIN_TOOLTIP": "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Tinye ihe na ederede.", + "TEXT_APPEND_TITLE": "iji %1 tinye ederede %2", + "TEXT_APPEND_TOOLTIP": "Tinye ederede na mgbanwee '%1'.", + "TEXT_LENGTH_TITLE": "ogologo nke %1", + "TEXT_LENGTH_TOOLTIP": "Weghachitere nọmba nke akwụkwọ ozi (gụnyere oghere) na ederede enyere.", + "TEXT_ISEMPTY_TITLE": "%1 di n’efu", + "TEXT_ISEMPTY_TOOLTIP": "Weghachitere ezịọkwụ ma ọ bụrụ na ederede enyere di n’efu.", + "TEXT_INDEXOF_TOOLTIP": "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe.", + "TEXT_INDEXOF_TITLE": "chọta na ederede %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "chọta ihe omume mbu nke ederede", + "TEXT_INDEXOF_OPERATOR_LAST": "chọta ihe omume ikpeazụ nke ederede", + "TEXT_CHARAT_TITLE": "chọta na ederede %1 %2", + "TEXT_CHARAT_FROM_START": "nweta akwụkwọ ozi #", + "TEXT_CHARAT_FROM_END": "nweta akwụkwọ ozi # site na njedebe", + "TEXT_CHARAT_FIRST": "nweta akwụkwọ ozi mbu", + "TEXT_CHARAT_LAST": "nweta akwụkwọ ozi ikpeazụ", + "TEXT_CHARAT_RANDOM": "nweta akwụkwọ ozi ọbụla", + "TEXT_CHARAT_TOOLTIP": "Weghachite akwụkwọ ozi ahụ na ọnọdụ a kapịrị ọnụ.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Weghachite akụkụ nke akọwapụtara ederede.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "chọta na ederede", + "TEXT_GET_SUBSTRING_START_FROM_START": "nweta njịkọ-ala na akwụkwọ ozi #", + "TEXT_GET_SUBSTRING_START_FROM_END": "nweta njịkọ-ala na akwụkwọ ozi # site na njedebe", + "TEXT_GET_SUBSTRING_START_FIRST": "nweta njịkọ-ala na akwụkwọ ozi mbu", + "TEXT_GET_SUBSTRING_END_FROM_START": "na akwụkwọ ozi #", + "TEXT_GET_SUBSTRING_END_FROM_END": "na akwụkwọ ozi # site na njedebe", + "TEXT_GET_SUBSTRING_END_LAST": "na leta ikpeazụ", + "TEXT_CHANGECASE_TOOLTIP": "AA <-> aa", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "na AHỊRỊ ELU", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "na ahịrị elu", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "na Aha Ahịrị", + "TEXT_TRIM_TOOLTIP": "Weghachite otu ederede ya na oghere ọzọ wepụrụ site n'otu ma ọ bụ akụkụ mechị abụọ.", + "TEXT_TRIM_OPERATOR_BOTH": "belata oghere dị mkpụmkpụ si n'akụkụ abụọ nke", + "TEXT_TRIM_OPERATOR_LEFT": "belata oghere dị mkpụmkpụ si n'akụkụ aka ịkpa nke", + "TEXT_TRIM_OPERATOR_RIGHT": "belata oghere dị mkpụmkpụ si n'akụkụ aka nrị nke", + "TEXT_PRINT_TITLE": "bipụta %1", + "TEXT_PRINT_TOOLTIP": "Bipụta ederede a kapịrị ọnụ, nọmba ma ọ bụ akara ọzọ.", + "TEXT_PROMPT_TYPE_TEXT": "Mepụta ngwa maka iji ederede na ozi", + "TEXT_PROMPT_TYPE_NUMBER": "Mepụta ngwa maka maka nọmba na ozi", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Mepụta ngwa onye ọrụ maka nọmba.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Mepụta ngwa onye ọrụ maka ederede.", + "TEXT_COUNT_MESSAGE0": "gụọ %1 n’ime %2", + "TEXT_COUNT_TOOLTIP": "Gụọ ugboro ole ụfọdụ ederede na’apụta n’ụfọdụ ederede ọzọ.", + "TEXT_REPLACE_MESSAGE0": "dochie %1 na %2 n’ime %3", + "TEXT_REPLACE_TOOLTIP": "Dochie ihe omuma nke ederede ufodu n'ime ufodu ederede ozo.", + "TEXT_REVERSE_MESSAGE0": "gbanwe %1", + "TEXT_REVERSE_TOOLTIP": "Na-agbanwe iwu nke ndị odide na ederede.", + "LISTS_CREATE_EMPTY_TITLE": "mepụta ndepụta efu", + "LISTS_CREATE_EMPTY_TOOLTIP": "Weghachite ndepụta, nke ogologo 0, nke enweghị ndekọ data", + "LISTS_CREATE_WITH_TOOLTIP": "Mepụta ndepụta na nọmba ọ bụla.", + "LISTS_CREATE_WITH_INPUT_WITH": "mepụta ndepụta", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ndepụta", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Tinye, wepu, ma ọ bụ megharia ngalaba iji haziearia ngọngọ ederede a.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Tinye ihe na ndepụta.", + "LISTS_REPEAT_TOOLTIP": "Na-emepụta listi ndepụta gụnyere akara a nyere ya ugboro ugboro.", + "LISTS_REPEAT_TITLE": "mepụta ndepụta na ihe %1 emegharịrị ugboro %2", + "LISTS_LENGTH_TITLE": "ogo nke %1", + "LISTS_LENGTH_TOOLTIP": "Weghachite ogo nke ndepụta.", + "LISTS_ISEMPTY_TITLE": "%1 ghe oghe", + "LISTS_ISEMPTY_TOOLTIP": "Weghachite eziokwu ma ọ bụrụ na ndepụta ahụ dị n’efu.", + "LISTS_INLIST": "n’ime ndepụta", + "LISTS_INDEX_OF_FIRST": "chọta ihe mbu nke ihe", + "LISTS_INDEX_OF_LAST": "chọta ihe ikpeazụ nke ihe", + "LISTS_INDEX_OF_TOOLTIP": "Weghachitere ntughari nke mbụ / nke ikpeazụ nke ihe dị na ndepụta. Weghachitere %1 ma ọ bụrụ na achọtaghị ihe.", + "LISTS_GET_INDEX_GET": "nweta", + "LISTS_GET_INDEX_GET_REMOVE": "nweta ma wepu", + "LISTS_GET_INDEX_REMOVE": "wepu", + "LISTS_GET_INDEX_FROM_END": "# site na njedebe", + "LISTS_GET_INDEX_FIRST": "mbu", + "LISTS_GET_INDEX_LAST": "ikpeazụ", + "LISTS_GET_INDEX_RANDOM": "nke ọ bụla", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 bụ ihe mbụ.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 bụ ihe ikpeazụ.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Weghachitere ihe na ọnọdụ a kapịrị ọnụ na ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Weghachitere ihe mbụ n'ime ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Weghachitere ihe ikpeazụ n'ime ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Weghachitere ihe ọbụla n'ime ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Wepu ma weghachite ihe na ọnọdụ a kapịrị ọnụ na ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Wepu ma weghachite ihe mbu na ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Wepu ma weghachite ihe ikpeazụ n'ime ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Wepu ma weghachite ihe ọbụla n'ime ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Wepu ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Wepu ihe mbụ n'ime ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Wepu ihe ikpeazụ n'ime ndepụta.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Wepu ihe ọbụla n'ime ndepụta.", + "LISTS_SET_INDEX_SET": "set", + "LISTS_SET_INDEX_INSERT": "tinye na", + "LISTS_SET_INDEX_INPUT_TO": "dị ka", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Debe ihe ahụ na ọnọdụ a kapịrị ọnụ na ndepụta.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Debe ihe mbụ n'ime ndepụta.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Debe ihe ikpeazụ n'ime ndepụta.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Debe ihe ọbụla n'ime ndepụta.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Na-etinye ihe na ọnọdụ a kapịrị ọnụ na ndepụta.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Na-etinye ihe ahụ na mmalite nke ndepụta.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Na-etinye ihe ahụ na ngwụcha nke ndepụta.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Na-etinye ihe ahụ na ebe ọbụla nke ndepụta.", + "LISTS_GET_SUBLIST_START_FROM_START": "nweta akụkụ ndepụta site na #", + "LISTS_GET_SUBLIST_START_FROM_END": "nweta akụkụ ndepụta site na # site na njedebe", + "LISTS_GET_SUBLIST_START_FIRST": "nweta akụkụ ndepụta site na mbịdo", + "LISTS_GET_SUBLIST_END_FROM_START": "rụọ #", + "LISTS_GET_SUBLIST_END_FROM_END": "rụọ # site na njedebe", + "LISTS_GET_SUBLIST_END_LAST": "rụọ na ngwụcha", + "LISTS_GET_SUBLIST_TOOLTIP": "Na-emepụta otu akụkụ a kapịrị ọnụ nke ndepụta.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "hazie %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Tọọ otu akụkụ ndepụta ahụ.", + "LISTS_SORT_ORDER_ASCENDING": "arịgo", + "LISTS_SORT_ORDER_DESCENDING": "agbada", + "LISTS_SORT_TYPE_NUMERIC": "nọmba", + "LISTS_SORT_TYPE_TEXT": "mkpụrụ edemede", + "LISTS_SORT_TYPE_IGNORECASE": "mkpụrụ edemede, leghara ọnọdụ anya", + "LISTS_SPLIT_LIST_FROM_TEXT": "mee ndepụta site na ederede", + "LISTS_SPLIT_TEXT_FROM_LIST": "mee ederede site na ndepụta", + "LISTS_SPLIT_WITH_DELIMITER": "na ihe nkewa", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Kewaa ederede n'ime ndepụta nke ederede, na-agbasa na ihe nkwea ọ bụla.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Jikọọ ndepụta nke ederede gaa na otu ederede, nke oihe nkewa kewara.", + "LISTS_REVERSE_MESSAGE0": "gbanwe %1", + "LISTS_REVERSE_TOOLTIP": "Tụgharịa otu akụkụ ndepụta.", + "VARIABLES_GET_TOOLTIP": "Weghachite akara nke agbanwe a.", + "VARIABLES_GET_CREATE_SET": "Mepụta 'dozie %1'", + "VARIABLES_SET": "dozie %1 ga na %2", + "VARIABLES_SET_TOOLTIP": "Debe mgbanwe a ka ọ ghata ihe ntinye.", + "VARIABLES_SET_CREATE_GET": "Mepụta 'nweta uru %1'", + "PROCEDURES_DEFNORETURN_TITLE": "ga na", + "PROCEDURES_DEFNORETURN_PROCEDURE": "megharịa", + "PROCEDURES_BEFORE_PARAMS": "na:", + "PROCEDURES_CALL_BEFORE_PARAMS": "na:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Na emepụta ọrụ na-enweghị mmepụta.", + "PROCEDURES_DEFNORETURN_COMMENT": "Kọwaa ọrụ a...", + "PROCEDURES_DEFRETURN_RETURN": "weghachite", + "PROCEDURES_DEFRETURN_TOOLTIP": "Na emepụta ọrụ nwere mmepụta.", + "PROCEDURES_ALLOW_STATEMENTS": "kwe ka okwu", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Gbaa ọrụ a kọwaa onye-ọrụ '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Gbaa ọrụ a kọwaa onye-ọrụ '%1' ma jiri mmepụta ya.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "ntinye", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Tinye, wepu, ma ọ bụ tugharịa ntinye na ọrụ a.", + "PROCEDURES_MUTATORARG_TITLE": "tinye aha:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Tinye ntinye aka na ọrụ ahụ.", + "PROCEDURES_HIGHLIGHT_DEF": "Nkọwapụta njirimara ọrụ", + "PROCEDURES_CREATE_DO": "Mepụta '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Weghachite akara nke agbanwe a.", + "PROCEDURES_IFRETURN_WARNING": "Ịdọ aka ná ntị: Ọrụ a nwere ọnụọgụ abụọ.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Kwuo ihe ọ bụla...", + "DIALOG_OK": "Ọ DỊ MMA", + "DIALOG_CANCEL": "Hapụ̀" +} diff --git a/msg/json/inh.json b/msg/json/inh.json index 274b5e658a0..206e347dadd 100644 --- a/msg/json/inh.json +++ b/msg/json/inh.json @@ -1,80 +1,80 @@ -{ - "@metadata": { - "authors": [ - "Adam-Yourist", - "ElizaMag", - "Sapral Mikail", - "Ӏабдуррашид" - ] - }, - "VARIABLES_DEFAULT_NAME": "элемент", - "UNNAMED_KEY": "цӀи яц", - "TODAY": "Тахан", - "DUPLICATE_BLOCK": "Кеп яккха", - "ADD_COMMENT": "ТӀатоха алар (комментари)", - "REMOVE_COMMENT": "ДӀадаккха алар (комментари)", - "DUPLICATE_COMMENT": "Комментарий шолхаяккха", - "EXTERNAL_INPUTS": "Арахьара юкъеоттадаьраш", - "INLINE_INPUTS": "Чухьнахьара юкъеоттадаьраш", - "DELETE_BLOCK": "ДӀаяккха блок", - "DELETE_X_BLOCKS": "ДӀаяккха %1 блокаш", - "DELETE_ALL_BLOCKS": "ДӀаяккха еррига блокаш (%1)?", - "CLEAN_UP": "ДӀаяха блокаш", - "COLLAPSE_BLOCK": "ДIахьулъе блок", - "COLLAPSE_ALL": "ДIахьулъе блокаш", - "EXPAND_BLOCK": "Хьайоаржае блок", - "EXPAND_ALL": "Хьайоаржае блокаш", - "DISABLE_BLOCK": "ДIайоае блок", - "ENABLE_BLOCK": "Хьалотае блок", - "HELP": "Новкъoстал", - "UNDO": "Юхадаккха", - "REDO": "Юхадоаладе", - "CHANGE_VALUE_TITLE": "МаIан хувца:", - "RENAME_VARIABLE": "Хувцалушъяра цIи хувца...", - "RENAME_VARIABLE_TITLE": "Хувца ерригача хувцалушъяраша цIераш укх цIерах '%1':", - "NEW_VARIABLE": "Хьакхолла керда хувцалушъяр...", - "NEW_STRING_VARIABLE": "Хьакхолла мугӀара хувцалушъяр...", - "NEW_NUMBER_VARIABLE": "Хьакхолла таьрахьа хувцалушъяр...", - "NEW_COLOUR_VARIABLE": "Хьакхолла беса хувцалушъяр", - "NEW_VARIABLE_TYPE_TITLE": "Хувцалушъяра керда тайпа:", - "NEW_VARIABLE_TITLE": "Керда хувцалушъяра цIи:", - "VARIABLE_ALREADY_EXISTS": "'%1' яхаш йола хувцалушъяр йолаш я.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' яхаш йола хувцалушъяр кхыча тайпан йолаш я: '%2'", - "DELETE_VARIABLE_CONFIRMATION": "'%2' хувцалушъяр %1 лелаяр дӀаяккха езий?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Хувцалушъяр %1 дӀайоаккхалац, хӀана аьлча %2 функце къоастаяра дакъа да из.", - "DELETE_VARIABLE": "%1 хувцалушър дӀаяккха", - "COLOUR_PICKER_HELPURL": "https://inh.wikipedia.org/wiki/Бос", - "COLOUR_PICKER_TOOLTIP": "Харжа палитра чура бос.", - "COLOUR_RANDOM_TITLE": "ца ховш нийсбенна бос", - "COLOUR_RANDOM_TOOLTIP": "Укхо бос хьахоржа дагадоацача тайпара", - "COLOUR_RGB_TITLE": "бесах", - "COLOUR_RGB_RED": "цIеча", - "COLOUR_RGB_GREEN": "баьццарара", - "COLOUR_RGB_BLUE": "сийнача", - "COLOUR_RGB_TOOLTIP": "Ӏооттабаьчча боарамах цӀеи, баьццареи, сийнеи бесаш тохаш бос хьакхолла. Деррига боарамаш 0-и 100-ненни юкъе хила деза.", - "COLOUR_BLEND_TITLE": "кегаде", - "COLOUR_BLEND_COLOUR1": "бос 1", - "COLOUR_BLEND_COLOUR2": "бос 2", - "COLOUR_BLEND_RATIO": "беса дáкъа 1", - "COLOUR_BLEND_TOOLTIP": "Ши бос беззача боарамах вӀашагӀтох (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://ru.wikipedia.org/wiki/Цикл_(программирование)", - "CONTROLS_REPEAT_TITLE": "юхаде %1-зза", - "CONTROLS_REPEAT_INPUT_DO": "кхоачашде", - "CONTROLS_IF_MSG_IF": "нагахьа санна", - "CONTROLS_IF_MSG_ELSEIF": "вешта нагахьа", - "CONTROLS_IF_MSG_ELSE": "вешта", - "LOGIC_OPERATION_AND": "иштта", - "LOGIC_OPERATION_OR": "e", - "LOGIC_BOOLEAN_TRUE": "бакъдар", - "LOGIC_BOOLEAN_FALSE": "харцдар", - "LOGIC_NULL": "цхьаккха", - "LOGIC_NULL_TOOLTIP": "Цхьаккха доаца хIама юхадерзаду.", - "LOGIC_TERNARY_IF_TRUE": "нагахьа бакъа дале", - "LOGIC_TERNARY_IF_FALSE": "нагахьа харца дале", - "MATH_NUMBER_HELPURL": "https://inh.wikipedia.org/wiki/Таьрахь", - "MATH_NUMBER_TOOLTIP": "Таьрахь.", - "MATH_ARITHMETIC_HELPURL": "https://inh.wikipedia.org/wiki/Арифметика", - "PROCEDURES_CREATE_DO": "Хьакхолла дIакхайкар '%1'", - "DIALOG_OK": "Мег", - "DIALOG_CANCEL": "Эшац" -} +{ + "@metadata": { + "authors": [ + "Adam-Yourist", + "ElizaMag", + "Sapral Mikail", + "Ӏабдуррашид" + ] + }, + "VARIABLES_DEFAULT_NAME": "элемент", + "UNNAMED_KEY": "цӀи яц", + "TODAY": "Тахан", + "DUPLICATE_BLOCK": "Кеп яккха", + "ADD_COMMENT": "ТӀатоха алар (комментари)", + "REMOVE_COMMENT": "ДӀадаккха алар (комментари)", + "DUPLICATE_COMMENT": "Комментарий шолхаяккха", + "EXTERNAL_INPUTS": "Арахьара юкъеоттадаьраш", + "INLINE_INPUTS": "Чухьнахьара юкъеоттадаьраш", + "DELETE_BLOCK": "ДӀаяккха блок", + "DELETE_X_BLOCKS": "ДӀаяккха %1 блокаш", + "DELETE_ALL_BLOCKS": "ДӀаяккха еррига блокаш (%1)?", + "CLEAN_UP": "ДӀаяха блокаш", + "COLLAPSE_BLOCK": "ДIахьулъе блок", + "COLLAPSE_ALL": "ДIахьулъе блокаш", + "EXPAND_BLOCK": "Хьайоаржае блок", + "EXPAND_ALL": "Хьайоаржае блокаш", + "DISABLE_BLOCK": "ДIайоае блок", + "ENABLE_BLOCK": "Хьалотае блок", + "HELP": "Новкъoстал", + "UNDO": "Юхадаккха", + "REDO": "Юхадоаладе", + "CHANGE_VALUE_TITLE": "МаIан хувца:", + "RENAME_VARIABLE": "Хувцалушъяра цIи хувца...", + "RENAME_VARIABLE_TITLE": "Хувца ерригача хувцалушъяраша цIераш укх цIерах '%1':", + "NEW_VARIABLE": "Хьакхолла керда хувцалушъяр...", + "NEW_STRING_VARIABLE": "Хьакхолла мугӀара хувцалушъяр...", + "NEW_NUMBER_VARIABLE": "Хьакхолла таьрахьа хувцалушъяр...", + "NEW_COLOUR_VARIABLE": "Хьакхолла беса хувцалушъяр", + "NEW_VARIABLE_TYPE_TITLE": "Хувцалушъяра керда тайпа:", + "NEW_VARIABLE_TITLE": "Керда хувцалушъяра цIи:", + "VARIABLE_ALREADY_EXISTS": "'%1' яхаш йола хувцалушъяр йолаш я.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' яхаш йола хувцалушъяр кхыча тайпан йолаш я: '%2'", + "DELETE_VARIABLE_CONFIRMATION": "'%2' хувцалушъяр %1 лелаяр дӀаяккха езий?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Хувцалушъяр %1 дӀайоаккхалац, хӀана аьлча %2 функце къоастаяра дакъа да из.", + "DELETE_VARIABLE": "%1 хувцалушър дӀаяккха", + "COLOUR_PICKER_HELPURL": "https://inh.wikipedia.org/wiki/Бос", + "COLOUR_PICKER_TOOLTIP": "Харжа палитра чура бос.", + "COLOUR_RANDOM_TITLE": "ца ховш нийсбенна бос", + "COLOUR_RANDOM_TOOLTIP": "Укхо бос хьахоржа дагадоацача тайпара", + "COLOUR_RGB_TITLE": "бесах", + "COLOUR_RGB_RED": "цIеча", + "COLOUR_RGB_GREEN": "баьццарара", + "COLOUR_RGB_BLUE": "сийнача", + "COLOUR_RGB_TOOLTIP": "Ӏооттабаьчча боарамах цӀеи, баьццареи, сийнеи бесаш тохаш бос хьакхолла. Деррига боарамаш 0-и 100-ненни юкъе хила деза.", + "COLOUR_BLEND_TITLE": "кегаде", + "COLOUR_BLEND_COLOUR1": "бос 1", + "COLOUR_BLEND_COLOUR2": "бос 2", + "COLOUR_BLEND_RATIO": "беса дáкъа 1", + "COLOUR_BLEND_TOOLTIP": "Ши бос беззача боарамах вӀашагӀтох (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://ru.wikipedia.org/wiki/Цикл_(программирование)", + "CONTROLS_REPEAT_TITLE": "юхаде %1-зза", + "CONTROLS_REPEAT_INPUT_DO": "кхоачашде", + "CONTROLS_IF_MSG_IF": "нагахьа санна", + "CONTROLS_IF_MSG_ELSEIF": "вешта нагахьа", + "CONTROLS_IF_MSG_ELSE": "вешта", + "LOGIC_OPERATION_AND": "иштта", + "LOGIC_OPERATION_OR": "e", + "LOGIC_BOOLEAN_TRUE": "бакъдар", + "LOGIC_BOOLEAN_FALSE": "харцдар", + "LOGIC_NULL": "цхьаккха", + "LOGIC_NULL_TOOLTIP": "Цхьаккха доаца хIама юхадерзаду.", + "LOGIC_TERNARY_IF_TRUE": "нагахьа бакъа дале", + "LOGIC_TERNARY_IF_FALSE": "нагахьа харца дале", + "MATH_NUMBER_HELPURL": "https://inh.wikipedia.org/wiki/Таьрахь", + "MATH_NUMBER_TOOLTIP": "Таьрахь.", + "MATH_ARITHMETIC_HELPURL": "https://inh.wikipedia.org/wiki/Арифметика", + "PROCEDURES_CREATE_DO": "Хьакхолла дIакхайкар '%1'", + "DIALOG_OK": "Мег", + "DIALOG_CANCEL": "Эшац" +} diff --git a/msg/json/is.json b/msg/json/is.json index 2e420a69a5d..e0f0954ebcf 100644 --- a/msg/json/is.json +++ b/msg/json/is.json @@ -1,368 +1,368 @@ -{ - "@metadata": { - "authors": [ - "Gaddi00", - "Jonbg", - "Sveinki", - "Sveinn í Felli", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "atriði", - "TODAY": "Í dag", - "DUPLICATE_BLOCK": "Afrita", - "ADD_COMMENT": "Skrifa skýringu", - "REMOVE_COMMENT": "Fjarlægja skýringu", - "DUPLICATE_COMMENT": "Tvítaka athugasemd", - "EXTERNAL_INPUTS": "Ytri inntök", - "INLINE_INPUTS": "Innri inntök", - "DELETE_BLOCK": "Eyða kubbi", - "DELETE_X_BLOCKS": "Eyða %1 kubbum", - "DELETE_ALL_BLOCKS": "Eyða öllum %1 kubbunum?", - "CLEAN_UP": "Hreinsa kubba", - "COLLAPSE_BLOCK": "Loka kubbi", - "COLLAPSE_ALL": "Loka kubbum", - "EXPAND_BLOCK": "Opna kubb", - "EXPAND_ALL": "Opna kubba", - "DISABLE_BLOCK": "Óvirkja kubb", - "ENABLE_BLOCK": "Virkja kubb", - "HELP": "Hjálp", - "UNDO": "Afturkalla", - "REDO": "Endurtaka", - "CHANGE_VALUE_TITLE": "Breyta gildi:", - "RENAME_VARIABLE": "Endurnefna breytu...", - "RENAME_VARIABLE_TITLE": "Endurnefna allar '%1' breyturnar:", - "NEW_VARIABLE": "Búa til breytu...", - "NEW_VARIABLE_TITLE": "Heiti nýrrar breytu:", - "VARIABLE_ALREADY_EXISTS": "Breyta með heitinu '%1' er þegar til staðar.", - "DELETE_VARIABLE": "Eyða '%1' breytunni", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Velja lit úr litakorti.", - "COLOUR_RANDOM_TITLE": "einhver litur", - "COLOUR_RANDOM_TOOLTIP": "Velja einhvern lit af handahófi.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "litur", - "COLOUR_RGB_RED": "rauður", - "COLOUR_RGB_GREEN": "grænt", - "COLOUR_RGB_BLUE": "blátt", - "COLOUR_RGB_TOOLTIP": "Búa til lit úr tilteknu magni af rauðu, grænu og bláu. Allar tölurnar verða að vera á bilinu 0 til 100.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "blöndun", - "COLOUR_BLEND_COLOUR1": "litur 1", - "COLOUR_BLEND_COLOUR2": "litur 2", - "COLOUR_BLEND_RATIO": "hlutfall", - "COLOUR_BLEND_TOOLTIP": "Blandar tveimur litum í gefnu hlutfalli (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "endurtaka %1 sinnum", - "CONTROLS_REPEAT_INPUT_DO": "gera", - "CONTROLS_REPEAT_TOOLTIP": "Gera eitthvað aftur og aftur.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "endurtaka á meðan", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "endurtaka þar til", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Endurtaka eitthvað á meðan gildi er satt.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Endurtaka eitthvað á meðan gildi er ósatt.", - "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", - "CONTROLS_FOR_TOOLTIP": "Láta breytuna '%1' taka inn gildi frá fyrstu tölu til síðustu tölu, hlaupandi á tiltekna bilinu og gera tilteknu kubbana.", - "CONTROLS_FOR_TITLE": "telja með %1 frá %2 til %3 um %4", - "CONTROLS_FOREACH_TITLE": "fyrir hvert %1 í lista %2", - "CONTROLS_FOREACH_TOOLTIP": "Fyrir hvert atriði í lista er breyta '%1' stillt á atriðið og skipanir gerðar.", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "fara út úr lykkju", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fara beint í næstu umferð lykkjunnar", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Fara út úr umlykjandi lykkju.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sleppa afganginum af lykkjunni og fara beint í næstu umferð hennar.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Aðvörun: Þennan kubb má aðeins nota innan lykkju.", - "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", - "CONTROLS_IF_TOOLTIP_1": "Ef gildi er satt skal gera einhverjar skipanir.", - "CONTROLS_IF_TOOLTIP_2": "Ef gildi er satt skal gera skipanir í fyrri kubbnum. Annars skal gera skipanir í seinni kubbnum.", - "CONTROLS_IF_TOOLTIP_3": "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, þá skal gera skipanir í seinni kubbnum.", - "CONTROLS_IF_TOOLTIP_4": "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, skal gera skipanir í seinni kubbnum. Ef hvorugt gildið er satt, skal gera skipanir í síðasta kubbnum.", - "CONTROLS_IF_MSG_IF": "ef", - "CONTROLS_IF_MSG_ELSEIF": "annars ef", - "CONTROLS_IF_MSG_ELSE": "annars", - "CONTROLS_IF_IF_TOOLTIP": "Bæta við, fjarlægja eða umraða til að breyta skipan þessa EF kubbs.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Bæta skilyrði við EF kubbinn.", - "CONTROLS_IF_ELSE_TOOLTIP": "Bæta við hluta EF kubbs sem grípur öll tilfelli sem uppfylla ekki hin skilyrðin.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Skila sönnu ef inntökin eru jöfn.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Skila sönnu ef inntökin eru ekki jöfn.", - "LOGIC_COMPARE_TOOLTIP_LT": "Skila sönnu ef fyrra inntakið er minna en seinna inntakið.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Skila sönnu ef fyrra inntakið er minna en eða jafnt og seinna inntakið.", - "LOGIC_COMPARE_TOOLTIP_GT": "Skila sönnu ef fyrra inntakið er stærra en seinna inntakið.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Skila sönnu ef fyrra inntakið er stærra en eða jafnt og seinna inntakið.", - "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", - "LOGIC_OPERATION_TOOLTIP_AND": "Skila sönnu ef bæði inntökin eru sönn.", - "LOGIC_OPERATION_AND": "og", - "LOGIC_OPERATION_TOOLTIP_OR": "Skila sönnu ef að minnsta kosti eitt inntak er satt.", - "LOGIC_OPERATION_OR": "eða", - "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", - "LOGIC_NEGATE_TITLE": "ekki %1", - "LOGIC_NEGATE_TOOLTIP": "Skilar sönnu ef inntakið er ósatt. Skilar ósönnu ef inntakið er satt.", - "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", - "LOGIC_BOOLEAN_TRUE": "satt", - "LOGIC_BOOLEAN_FALSE": "ósatt", - "LOGIC_BOOLEAN_TOOLTIP": "Skilar annað hvort sönnu eða ósönnu.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "tómagildi", - "LOGIC_NULL_TOOLTIP": "Skilar tómagildi.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "prófun", - "LOGIC_TERNARY_IF_TRUE": "ef satt", - "LOGIC_TERNARY_IF_FALSE": "ef ósatt", - "LOGIC_TERNARY_TOOLTIP": "Kanna skilyrðið í 'prófun'. Skilar 'ef satt' gildinu ef skilyrðið er satt, en skilar annars 'ef ósatt' gildinu.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Tala.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Skila summu talnanna tveggja.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Skila mismun talnanna.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Skila margfeldi talnanna.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Skila deilingu talnanna.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Skila fyrri tölunni í veldinu seinni talan.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "kvaðratrót", - "MATH_SINGLE_TOOLTIP_ROOT": "Skila kvaðratrót tölu.", - "MATH_SINGLE_OP_ABSOLUTE": "algildi", - "MATH_SINGLE_TOOLTIP_ABS": "Skila algildi tölu.", - "MATH_SINGLE_TOOLTIP_NEG": "Skila neitun tölu (tölunni með öfugu formerki).", - "MATH_SINGLE_TOOLTIP_LN": "Skila náttúrlegum lógaritma tölu.", - "MATH_SINGLE_TOOLTIP_LOG10": "Skila tugalógaritma tölu.", - "MATH_SINGLE_TOOLTIP_EXP": "Skila e í veldi tölu.", - "MATH_SINGLE_TOOLTIP_POW10": "Skila 10 í veldi tölu.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Skila sínusi horns gefnu í gráðum.", - "MATH_TRIG_TOOLTIP_COS": "Skila kósínusi horns gefnu í gráðum.", - "MATH_TRIG_TOOLTIP_TAN": "Skila tangensi horns gefnu í gráðum.", - "MATH_TRIG_TOOLTIP_ASIN": "Skila arkarsínusi tölu.", - "MATH_TRIG_TOOLTIP_ACOS": "Skila arkarkósínusi tölu.", - "MATH_TRIG_TOOLTIP_ATAN": "Skila arkartangensi tölu.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Skila algengum fasta: π (3.141…), e (2.718…), φ (1.618…), kvrót(2) (1.414…), kvrót(½) (0.707…) eða ∞ (óendanleika).", - "MATH_IS_EVEN": "er\\u00A0jöfn tala", - "MATH_IS_ODD": "er oddatala", - "MATH_IS_PRIME": "er prímtala", - "MATH_IS_WHOLE": "er heiltala", - "MATH_IS_POSITIVE": "er jákvæð", - "MATH_IS_NEGATIVE": "er neikvæð", - "MATH_IS_DIVISIBLE_BY": "er\\u00A0deilanleg með", - "MATH_IS_TOOLTIP": "Kanna hvort tala sé jöfn tala, oddatala, jákvæð, neikvæð eða deilanleg með tiltekinni tölu. Skilar sönnu eða ósönnu.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "breyta %1 um %2", - "MATH_CHANGE_TOOLTIP": "Bæta tölu við breytu '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Námunda tölu upp eða niður.", - "MATH_ROUND_OPERATOR_ROUND": "námunda", - "MATH_ROUND_OPERATOR_ROUNDUP": "námunda upp", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "námunda niður", - "MATH_ONLIST_OPERATOR_SUM": "summa lista", - "MATH_ONLIST_TOOLTIP_SUM": "Skila summu allra talna í listanum.", - "MATH_ONLIST_OPERATOR_MIN": "minnst í lista", - "MATH_ONLIST_TOOLTIP_MIN": "Skila minnstu tölu í listanum.", - "MATH_ONLIST_OPERATOR_MAX": "stærst í lista", - "MATH_ONLIST_TOOLTIP_MAX": "Skila stærstu tölu í listanum.", - "MATH_ONLIST_OPERATOR_AVERAGE": "meðaltal lista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Skila meðaltali talna í listanum.", - "MATH_ONLIST_OPERATOR_MEDIAN": "miðgildi lista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Skila miðgildi listans.", - "MATH_ONLIST_OPERATOR_MODE": "tíðast í lista", - "MATH_ONLIST_TOOLTIP_MODE": "Skila lista yfir tíðustu gildin í listanum.", - "MATH_ONLIST_OPERATOR_STD_DEV": "staðalfrávik lista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Skila staðalfráviki lista.", - "MATH_ONLIST_OPERATOR_RANDOM": "eitthvað úr lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Skila einhverju atriði úr listanum.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "afgangur af %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Skila afgangi deilingar með tölunum.", - "MATH_CONSTRAIN_TITLE": "þröngva %1 lægst %2 hæst %3", - "MATH_CONSTRAIN_TOOLTIP": "Þröngva tölu til að vera innan hinna tilgreindu marka (að báðum meðtöldum).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "slembitala frá %1 til %2", - "MATH_RANDOM_INT_TOOLTIP": "Skila heiltölu sem valin er af handahófi og er innan tilgreindra marka, að báðum meðtöldum.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "slembibrot", - "MATH_RANDOM_FLOAT_TOOLTIP": "Skila broti sem er valið af handahófi úr tölum á bilinu frá og með 0.0 til (en ekki með) 1.0.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Stafur, orð eða textalína.", - "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", - "TEXT_JOIN_TITLE_CREATEWITH": "búa til texta með", - "TEXT_JOIN_TOOLTIP": "Búa til texta með því að tengja saman einhvern fjölda atriða.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "tengja", - "TEXT_CREATE_JOIN_TOOLTIP": "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa textakubbs.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Bæta atriði við textann.", - "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_APPEND_TITLE": "við %1 bæta texta %2", - "TEXT_APPEND_TOOLTIP": "Bæta texta við breytuna '%1'.", - "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_LENGTH_TITLE": "lengd %1", - "TEXT_LENGTH_TOOLTIP": "Skilar fjölda stafa (með bilum) í gefna textanum.", - "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", - "TEXT_ISEMPTY_TITLE": "%1 er tómur", - "TEXT_ISEMPTY_TOOLTIP": "Skilar sönnu ef gefni textinn er tómur.", - "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", - "TEXT_INDEXOF_TOOLTIP": "Finnur fyrsta/síðasta tilfelli fyrri textans í seinni textanum og skilar sæti hans. Skilar %1 ef textinn finnst ekki.", - "TEXT_INDEXOF_TITLE": "í texta %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "finna fyrsta tilfelli texta", - "TEXT_INDEXOF_OPERATOR_LAST": "finna síðasta tilfelli texta", - "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", - "TEXT_CHARAT_TITLE": "í texta %1 %2", - "TEXT_CHARAT_FROM_START": "sækja staf #", - "TEXT_CHARAT_FROM_END": "sækja staf # frá enda", - "TEXT_CHARAT_FIRST": "sækja fyrsta staf", - "TEXT_CHARAT_LAST": "sækja síðasta staf", - "TEXT_CHARAT_RANDOM": "sækja einhvern staf", - "TEXT_CHARAT_TOOLTIP": "Skila staf á tilteknum stað.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Skilar tilteknum hluta textans.", - "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "í texta", - "TEXT_GET_SUBSTRING_START_FROM_START": "sækja textabút frá staf #", - "TEXT_GET_SUBSTRING_START_FROM_END": "sækja textabút frá staf # frá enda", - "TEXT_GET_SUBSTRING_START_FIRST": "sækja textabút frá fyrsta staf", - "TEXT_GET_SUBSTRING_END_FROM_START": "að staf #", - "TEXT_GET_SUBSTRING_END_FROM_END": "að staf # frá enda", - "TEXT_GET_SUBSTRING_END_LAST": "að síðasta staf", - "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", - "TEXT_CHANGECASE_TOOLTIP": "Skila afriti af textanum með annarri stafastöðu.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "í HÁSTAFI", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "í lágstafi", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "í Upphafstafi", - "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", - "TEXT_TRIM_TOOLTIP": "Skila afriti af textanum þar sem möguleg bil við báða enda hafa verið fjarlægð.", - "TEXT_TRIM_OPERATOR_BOTH": "eyða bilum báðum megin við", - "TEXT_TRIM_OPERATOR_LEFT": "eyða bilum vinstra megin við", - "TEXT_TRIM_OPERATOR_RIGHT": "eyða bilum hægra megin við", - "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", - "TEXT_PRINT_TITLE": "prenta %1", - "TEXT_PRINT_TOOLTIP": "Prenta tiltekinn texta, tölu eða annað gildi.", - "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", - "TEXT_PROMPT_TYPE_TEXT": "biðja um texta með skilaboðum", - "TEXT_PROMPT_TYPE_NUMBER": "biðja um tölu með skilaboðum", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Biðja notandann um tölu.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Biðja notandann um texta.", - "TEXT_COUNT_MESSAGE0": "fjöldi %1 í %2", - "TEXT_REPLACE_MESSAGE0": "skipta %1 út með %2 í %3", - "TEXT_REVERSE_MESSAGE0": "snúa við %1", - "TEXT_REVERSE_TOOLTIP": "Snýr við röð stafanna í textanum.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "búa til tóman lista", - "LISTS_CREATE_EMPTY_TOOLTIP": "Skilar lista með lengdina 0 án gagna", - "LISTS_CREATE_WITH_TOOLTIP": "Búa til lista með einhverjum fjölda atriða.", - "LISTS_CREATE_WITH_INPUT_WITH": "búa til lista með", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listi", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa listakubbs.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Bæta atriði við listann.", - "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_REPEAT_TOOLTIP": "Býr til lista sem inniheldur tiltekna gildið endurtekið tiltekið oft.", - "LISTS_REPEAT_TITLE": "búa til lista með atriði %1 endurtekið %2 sinnum", - "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", - "LISTS_LENGTH_TITLE": "lengd %1", - "LISTS_LENGTH_TOOLTIP": "Skilar lengd lista.", - "LISTS_ISEMPTY_TITLE": "%1 er tómur", - "LISTS_ISEMPTY_TOOLTIP": "Skilar sönnu ef listinn er tómur.", - "LISTS_INLIST": "í lista", - "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", - "LISTS_INDEX_OF_FIRST": "finna fyrsta tilfelli atriðis", - "LISTS_INDEX_OF_LAST": "finna síðasta tilfelli atriðis", - "LISTS_INDEX_OF_TOOLTIP": "Finnur hvar atriðið kemur fyrir fyrst/síðast í listanum og skilar sæti þess. Skilar %1 ef atriðið finnst ekki.", - "LISTS_GET_INDEX_GET": "sækja", - "LISTS_GET_INDEX_GET_REMOVE": "sækja og fjarlægja", - "LISTS_GET_INDEX_REMOVE": "fjarlægja", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# frá enda", - "LISTS_GET_INDEX_FIRST": "fyrsta", - "LISTS_GET_INDEX_LAST": "síðasta", - "LISTS_GET_INDEX_RANDOM": "eitthvert", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 er fyrsta atriðið.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 er síðasta atriðið.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Skilar atriðinu í hinum tiltekna stað í lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Skilar fyrsta atriði í lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Skilar síðasta atriði í lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Skilar einhverju atriði úr lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fjarlægir og skilar atriðinu á hinum tiltekna stað í lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fjarlægir og skilar fyrsta atriðinu í lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fjarlægir og skilar síðasta atriðinu í lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fjarlægir og skilar einhverju atriði úr lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fjarlægir atriðið á hinum tiltekna stað í lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fjarlægir fyrsta atriðið í lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fjarlægir síðasta atriðið í lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Fjarlægir eitthvert atriði úr lista.", - "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", - "LISTS_SET_INDEX_SET": "setja í", - "LISTS_SET_INDEX_INSERT": "bæta við", - "LISTS_SET_INDEX_INPUT_TO": "sem", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setur atriðið í tiltekna sætið í listanum.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Setur atriðið í fyrsta sæti lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Setur atriðið í síðasta sæti lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setur atriðið í eitthvert sæti lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Bætir atriðinu í listann á tilteknum stað.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Bætir atriðinu fremst í listann.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Bætir atriðinu aftan við listann.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Bætir atriðinu einhversstaðar við listann.", - "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", - "LISTS_GET_SUBLIST_START_FROM_START": "sækja undirlista frá #", - "LISTS_GET_SUBLIST_START_FROM_END": "sækja undirlista frá # frá enda", - "LISTS_GET_SUBLIST_START_FIRST": "sækja undirlista frá fyrsta", - "LISTS_GET_SUBLIST_END_FROM_START": "til #", - "LISTS_GET_SUBLIST_END_FROM_END": "til # frá enda", - "LISTS_GET_SUBLIST_END_LAST": "til síðasta", - "LISTS_GET_SUBLIST_TOOLTIP": "Býr til afrit af tilteknum hluta lista.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "raða %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Raða afriti lista.", - "LISTS_SORT_ORDER_ASCENDING": "hækkandi", - "LISTS_SORT_ORDER_DESCENDING": "lækkandi", - "LISTS_SORT_TYPE_NUMERIC": "í númeraröð", - "LISTS_SORT_TYPE_TEXT": "í stafrófsröð", - "LISTS_SORT_TYPE_IGNORECASE": "í stafrófsröð án tillits til stafstöðu", - "LISTS_SPLIT_LIST_FROM_TEXT": "gera lista úr texta", - "LISTS_SPLIT_TEXT_FROM_LIST": "gera texta úr lista", - "LISTS_SPLIT_WITH_DELIMITER": "með skiltákni", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Skiptir texta í lista af textum, með skil við hvert skiltákn.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Sameinar lista af textum í einn texta, með skiltákn á milli.", - "LISTS_REVERSE_MESSAGE0": "snúa við %1", - "LISTS_REVERSE_TOOLTIP": "Snúa við afriti lista.", - "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", - "VARIABLES_GET_TOOLTIP": "Skilar gildi þessarar breytu.", - "VARIABLES_GET_CREATE_SET": "Búa til 'stilla %1'", - "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", - "VARIABLES_SET": "stilla %1 á %2", - "VARIABLES_SET_TOOLTIP": "Stillir þessa breytu á innihald inntaksins.", - "VARIABLES_SET_CREATE_GET": "Búa til 'sækja %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "til að", - "PROCEDURES_DEFNORETURN_PROCEDURE": "gera eitthvað", - "PROCEDURES_BEFORE_PARAMS": "með:", - "PROCEDURES_CALL_BEFORE_PARAMS": "með:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Býr til fall sem skilar engu.", - "PROCEDURES_DEFNORETURN_COMMENT": "Lýstu þessari aðgerð/falli...", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFRETURN_RETURN": "skila", - "PROCEDURES_DEFRETURN_TOOLTIP": "Býr til fall sem skilar úttaki.", - "PROCEDURES_ALLOW_STATEMENTS": "leyfa setningar", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Aðvörun: Þetta fall er með tvítekna stika.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Keyra heimatilbúna fallið '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Keyra heimatilbúna fallið '%1' og nota úttak þess.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "inntök", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Bæta við, fjarlægja eða umraða inntökum fyrir þetta fall.", - "PROCEDURES_MUTATORARG_TITLE": "heiti inntaks:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Bæta inntaki við fallið.", - "PROCEDURES_HIGHLIGHT_DEF": "Sýna skilgreiningu falls", - "PROCEDURES_CREATE_DO": "Búa til '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Ef gildi er satt, skal skila öðru gildi.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Aðvörun: Þennan kubb má aðeins nota í skilgreiningu falls.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Segðu eitthvað...", - "DIALOG_OK": "Í lagi", - "DIALOG_CANCEL": "Hætta við" -} +{ + "@metadata": { + "authors": [ + "Gaddi00", + "Jonbg", + "Sveinki", + "Sveinn í Felli", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "atriði", + "TODAY": "Í dag", + "DUPLICATE_BLOCK": "Afrita", + "ADD_COMMENT": "Skrifa skýringu", + "REMOVE_COMMENT": "Fjarlægja skýringu", + "DUPLICATE_COMMENT": "Tvítaka athugasemd", + "EXTERNAL_INPUTS": "Ytri inntök", + "INLINE_INPUTS": "Innri inntök", + "DELETE_BLOCK": "Eyða kubbi", + "DELETE_X_BLOCKS": "Eyða %1 kubbum", + "DELETE_ALL_BLOCKS": "Eyða öllum %1 kubbunum?", + "CLEAN_UP": "Hreinsa kubba", + "COLLAPSE_BLOCK": "Loka kubbi", + "COLLAPSE_ALL": "Loka kubbum", + "EXPAND_BLOCK": "Opna kubb", + "EXPAND_ALL": "Opna kubba", + "DISABLE_BLOCK": "Óvirkja kubb", + "ENABLE_BLOCK": "Virkja kubb", + "HELP": "Hjálp", + "UNDO": "Afturkalla", + "REDO": "Endurtaka", + "CHANGE_VALUE_TITLE": "Breyta gildi:", + "RENAME_VARIABLE": "Endurnefna breytu...", + "RENAME_VARIABLE_TITLE": "Endurnefna allar '%1' breyturnar:", + "NEW_VARIABLE": "Búa til breytu...", + "NEW_VARIABLE_TITLE": "Heiti nýrrar breytu:", + "VARIABLE_ALREADY_EXISTS": "Breyta með heitinu '%1' er þegar til staðar.", + "DELETE_VARIABLE": "Eyða '%1' breytunni", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Velja lit úr litakorti.", + "COLOUR_RANDOM_TITLE": "einhver litur", + "COLOUR_RANDOM_TOOLTIP": "Velja einhvern lit af handahófi.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "litur", + "COLOUR_RGB_RED": "rauður", + "COLOUR_RGB_GREEN": "grænt", + "COLOUR_RGB_BLUE": "blátt", + "COLOUR_RGB_TOOLTIP": "Búa til lit úr tilteknu magni af rauðu, grænu og bláu. Allar tölurnar verða að vera á bilinu 0 til 100.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "blöndun", + "COLOUR_BLEND_COLOUR1": "litur 1", + "COLOUR_BLEND_COLOUR2": "litur 2", + "COLOUR_BLEND_RATIO": "hlutfall", + "COLOUR_BLEND_TOOLTIP": "Blandar tveimur litum í gefnu hlutfalli (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "endurtaka %1 sinnum", + "CONTROLS_REPEAT_INPUT_DO": "gera", + "CONTROLS_REPEAT_TOOLTIP": "Gera eitthvað aftur og aftur.", + "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "endurtaka á meðan", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "endurtaka þar til", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Endurtaka eitthvað á meðan gildi er satt.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Endurtaka eitthvað á meðan gildi er ósatt.", + "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", + "CONTROLS_FOR_TOOLTIP": "Láta breytuna '%1' taka inn gildi frá fyrstu tölu til síðustu tölu, hlaupandi á tiltekna bilinu og gera tilteknu kubbana.", + "CONTROLS_FOR_TITLE": "telja með %1 frá %2 til %3 um %4", + "CONTROLS_FOREACH_TITLE": "fyrir hvert %1 í lista %2", + "CONTROLS_FOREACH_TOOLTIP": "Fyrir hvert atriði í lista er breyta '%1' stillt á atriðið og skipanir gerðar.", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "fara út úr lykkju", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fara beint í næstu umferð lykkjunnar", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Fara út úr umlykjandi lykkju.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sleppa afganginum af lykkjunni og fara beint í næstu umferð hennar.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Aðvörun: Þennan kubb má aðeins nota innan lykkju.", + "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", + "CONTROLS_IF_TOOLTIP_1": "Ef gildi er satt skal gera einhverjar skipanir.", + "CONTROLS_IF_TOOLTIP_2": "Ef gildi er satt skal gera skipanir í fyrri kubbnum. Annars skal gera skipanir í seinni kubbnum.", + "CONTROLS_IF_TOOLTIP_3": "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, þá skal gera skipanir í seinni kubbnum.", + "CONTROLS_IF_TOOLTIP_4": "Ef fyrra gildið er satt skal gera skipanir í fyrri kubbnum. Annars, ef seinna gildið er satt, skal gera skipanir í seinni kubbnum. Ef hvorugt gildið er satt, skal gera skipanir í síðasta kubbnum.", + "CONTROLS_IF_MSG_IF": "ef", + "CONTROLS_IF_MSG_ELSEIF": "annars ef", + "CONTROLS_IF_MSG_ELSE": "annars", + "CONTROLS_IF_IF_TOOLTIP": "Bæta við, fjarlægja eða umraða til að breyta skipan þessa EF kubbs.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Bæta skilyrði við EF kubbinn.", + "CONTROLS_IF_ELSE_TOOLTIP": "Bæta við hluta EF kubbs sem grípur öll tilfelli sem uppfylla ekki hin skilyrðin.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Skila sönnu ef inntökin eru jöfn.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Skila sönnu ef inntökin eru ekki jöfn.", + "LOGIC_COMPARE_TOOLTIP_LT": "Skila sönnu ef fyrra inntakið er minna en seinna inntakið.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Skila sönnu ef fyrra inntakið er minna en eða jafnt og seinna inntakið.", + "LOGIC_COMPARE_TOOLTIP_GT": "Skila sönnu ef fyrra inntakið er stærra en seinna inntakið.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Skila sönnu ef fyrra inntakið er stærra en eða jafnt og seinna inntakið.", + "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", + "LOGIC_OPERATION_TOOLTIP_AND": "Skila sönnu ef bæði inntökin eru sönn.", + "LOGIC_OPERATION_AND": "og", + "LOGIC_OPERATION_TOOLTIP_OR": "Skila sönnu ef að minnsta kosti eitt inntak er satt.", + "LOGIC_OPERATION_OR": "eða", + "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", + "LOGIC_NEGATE_TITLE": "ekki %1", + "LOGIC_NEGATE_TOOLTIP": "Skilar sönnu ef inntakið er ósatt. Skilar ósönnu ef inntakið er satt.", + "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", + "LOGIC_BOOLEAN_TRUE": "satt", + "LOGIC_BOOLEAN_FALSE": "ósatt", + "LOGIC_BOOLEAN_TOOLTIP": "Skilar annað hvort sönnu eða ósönnu.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "tómagildi", + "LOGIC_NULL_TOOLTIP": "Skilar tómagildi.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "prófun", + "LOGIC_TERNARY_IF_TRUE": "ef satt", + "LOGIC_TERNARY_IF_FALSE": "ef ósatt", + "LOGIC_TERNARY_TOOLTIP": "Kanna skilyrðið í 'prófun'. Skilar 'ef satt' gildinu ef skilyrðið er satt, en skilar annars 'ef ósatt' gildinu.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Tala.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Skila summu talnanna tveggja.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Skila mismun talnanna.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Skila margfeldi talnanna.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Skila deilingu talnanna.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Skila fyrri tölunni í veldinu seinni talan.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "kvaðratrót", + "MATH_SINGLE_TOOLTIP_ROOT": "Skila kvaðratrót tölu.", + "MATH_SINGLE_OP_ABSOLUTE": "algildi", + "MATH_SINGLE_TOOLTIP_ABS": "Skila algildi tölu.", + "MATH_SINGLE_TOOLTIP_NEG": "Skila neitun tölu (tölunni með öfugu formerki).", + "MATH_SINGLE_TOOLTIP_LN": "Skila náttúrlegum lógaritma tölu.", + "MATH_SINGLE_TOOLTIP_LOG10": "Skila tugalógaritma tölu.", + "MATH_SINGLE_TOOLTIP_EXP": "Skila e í veldi tölu.", + "MATH_SINGLE_TOOLTIP_POW10": "Skila 10 í veldi tölu.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Skila sínusi horns gefnu í gráðum.", + "MATH_TRIG_TOOLTIP_COS": "Skila kósínusi horns gefnu í gráðum.", + "MATH_TRIG_TOOLTIP_TAN": "Skila tangensi horns gefnu í gráðum.", + "MATH_TRIG_TOOLTIP_ASIN": "Skila arkarsínusi tölu.", + "MATH_TRIG_TOOLTIP_ACOS": "Skila arkarkósínusi tölu.", + "MATH_TRIG_TOOLTIP_ATAN": "Skila arkartangensi tölu.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Skila algengum fasta: π (3.141…), e (2.718…), φ (1.618…), kvrót(2) (1.414…), kvrót(½) (0.707…) eða ∞ (óendanleika).", + "MATH_IS_EVEN": "er\\u00A0jöfn tala", + "MATH_IS_ODD": "er oddatala", + "MATH_IS_PRIME": "er prímtala", + "MATH_IS_WHOLE": "er heiltala", + "MATH_IS_POSITIVE": "er jákvæð", + "MATH_IS_NEGATIVE": "er neikvæð", + "MATH_IS_DIVISIBLE_BY": "er\\u00A0deilanleg með", + "MATH_IS_TOOLTIP": "Kanna hvort tala sé jöfn tala, oddatala, jákvæð, neikvæð eða deilanleg með tiltekinni tölu. Skilar sönnu eða ósönnu.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "breyta %1 um %2", + "MATH_CHANGE_TOOLTIP": "Bæta tölu við breytu '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Námunda tölu upp eða niður.", + "MATH_ROUND_OPERATOR_ROUND": "námunda", + "MATH_ROUND_OPERATOR_ROUNDUP": "námunda upp", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "námunda niður", + "MATH_ONLIST_OPERATOR_SUM": "summa lista", + "MATH_ONLIST_TOOLTIP_SUM": "Skila summu allra talna í listanum.", + "MATH_ONLIST_OPERATOR_MIN": "minnst í lista", + "MATH_ONLIST_TOOLTIP_MIN": "Skila minnstu tölu í listanum.", + "MATH_ONLIST_OPERATOR_MAX": "stærst í lista", + "MATH_ONLIST_TOOLTIP_MAX": "Skila stærstu tölu í listanum.", + "MATH_ONLIST_OPERATOR_AVERAGE": "meðaltal lista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Skila meðaltali talna í listanum.", + "MATH_ONLIST_OPERATOR_MEDIAN": "miðgildi lista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Skila miðgildi listans.", + "MATH_ONLIST_OPERATOR_MODE": "tíðast í lista", + "MATH_ONLIST_TOOLTIP_MODE": "Skila lista yfir tíðustu gildin í listanum.", + "MATH_ONLIST_OPERATOR_STD_DEV": "staðalfrávik lista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Skila staðalfráviki lista.", + "MATH_ONLIST_OPERATOR_RANDOM": "eitthvað úr lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Skila einhverju atriði úr listanum.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "afgangur af %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Skila afgangi deilingar með tölunum.", + "MATH_CONSTRAIN_TITLE": "þröngva %1 lægst %2 hæst %3", + "MATH_CONSTRAIN_TOOLTIP": "Þröngva tölu til að vera innan hinna tilgreindu marka (að báðum meðtöldum).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "slembitala frá %1 til %2", + "MATH_RANDOM_INT_TOOLTIP": "Skila heiltölu sem valin er af handahófi og er innan tilgreindra marka, að báðum meðtöldum.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "slembibrot", + "MATH_RANDOM_FLOAT_TOOLTIP": "Skila broti sem er valið af handahófi úr tölum á bilinu frá og með 0.0 til (en ekki með) 1.0.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Stafur, orð eða textalína.", + "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", + "TEXT_JOIN_TITLE_CREATEWITH": "búa til texta með", + "TEXT_JOIN_TOOLTIP": "Búa til texta með því að tengja saman einhvern fjölda atriða.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "tengja", + "TEXT_CREATE_JOIN_TOOLTIP": "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa textakubbs.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Bæta atriði við textann.", + "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_APPEND_TITLE": "við %1 bæta texta %2", + "TEXT_APPEND_TOOLTIP": "Bæta texta við breytuna '%1'.", + "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_LENGTH_TITLE": "lengd %1", + "TEXT_LENGTH_TOOLTIP": "Skilar fjölda stafa (með bilum) í gefna textanum.", + "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", + "TEXT_ISEMPTY_TITLE": "%1 er tómur", + "TEXT_ISEMPTY_TOOLTIP": "Skilar sönnu ef gefni textinn er tómur.", + "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", + "TEXT_INDEXOF_TOOLTIP": "Finnur fyrsta/síðasta tilfelli fyrri textans í seinni textanum og skilar sæti hans. Skilar %1 ef textinn finnst ekki.", + "TEXT_INDEXOF_TITLE": "í texta %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "finna fyrsta tilfelli texta", + "TEXT_INDEXOF_OPERATOR_LAST": "finna síðasta tilfelli texta", + "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", + "TEXT_CHARAT_TITLE": "í texta %1 %2", + "TEXT_CHARAT_FROM_START": "sækja staf #", + "TEXT_CHARAT_FROM_END": "sækja staf # frá enda", + "TEXT_CHARAT_FIRST": "sækja fyrsta staf", + "TEXT_CHARAT_LAST": "sækja síðasta staf", + "TEXT_CHARAT_RANDOM": "sækja einhvern staf", + "TEXT_CHARAT_TOOLTIP": "Skila staf á tilteknum stað.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Skilar tilteknum hluta textans.", + "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "í texta", + "TEXT_GET_SUBSTRING_START_FROM_START": "sækja textabút frá staf #", + "TEXT_GET_SUBSTRING_START_FROM_END": "sækja textabút frá staf # frá enda", + "TEXT_GET_SUBSTRING_START_FIRST": "sækja textabút frá fyrsta staf", + "TEXT_GET_SUBSTRING_END_FROM_START": "að staf #", + "TEXT_GET_SUBSTRING_END_FROM_END": "að staf # frá enda", + "TEXT_GET_SUBSTRING_END_LAST": "að síðasta staf", + "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", + "TEXT_CHANGECASE_TOOLTIP": "Skila afriti af textanum með annarri stafastöðu.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "í HÁSTAFI", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "í lágstafi", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "í Upphafstafi", + "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", + "TEXT_TRIM_TOOLTIP": "Skila afriti af textanum þar sem möguleg bil við báða enda hafa verið fjarlægð.", + "TEXT_TRIM_OPERATOR_BOTH": "eyða bilum báðum megin við", + "TEXT_TRIM_OPERATOR_LEFT": "eyða bilum vinstra megin við", + "TEXT_TRIM_OPERATOR_RIGHT": "eyða bilum hægra megin við", + "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", + "TEXT_PRINT_TITLE": "prenta %1", + "TEXT_PRINT_TOOLTIP": "Prenta tiltekinn texta, tölu eða annað gildi.", + "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", + "TEXT_PROMPT_TYPE_TEXT": "biðja um texta með skilaboðum", + "TEXT_PROMPT_TYPE_NUMBER": "biðja um tölu með skilaboðum", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Biðja notandann um tölu.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Biðja notandann um texta.", + "TEXT_COUNT_MESSAGE0": "fjöldi %1 í %2", + "TEXT_REPLACE_MESSAGE0": "skipta %1 út með %2 í %3", + "TEXT_REVERSE_MESSAGE0": "snúa við %1", + "TEXT_REVERSE_TOOLTIP": "Snýr við röð stafanna í textanum.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "búa til tóman lista", + "LISTS_CREATE_EMPTY_TOOLTIP": "Skilar lista með lengdina 0 án gagna", + "LISTS_CREATE_WITH_TOOLTIP": "Búa til lista með einhverjum fjölda atriða.", + "LISTS_CREATE_WITH_INPUT_WITH": "búa til lista með", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listi", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Bæta við, fjarlægja eða umraða hlutum til að breyta skipan þessa listakubbs.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Bæta atriði við listann.", + "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_REPEAT_TOOLTIP": "Býr til lista sem inniheldur tiltekna gildið endurtekið tiltekið oft.", + "LISTS_REPEAT_TITLE": "búa til lista með atriði %1 endurtekið %2 sinnum", + "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", + "LISTS_LENGTH_TITLE": "lengd %1", + "LISTS_LENGTH_TOOLTIP": "Skilar lengd lista.", + "LISTS_ISEMPTY_TITLE": "%1 er tómur", + "LISTS_ISEMPTY_TOOLTIP": "Skilar sönnu ef listinn er tómur.", + "LISTS_INLIST": "í lista", + "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", + "LISTS_INDEX_OF_FIRST": "finna fyrsta tilfelli atriðis", + "LISTS_INDEX_OF_LAST": "finna síðasta tilfelli atriðis", + "LISTS_INDEX_OF_TOOLTIP": "Finnur hvar atriðið kemur fyrir fyrst/síðast í listanum og skilar sæti þess. Skilar %1 ef atriðið finnst ekki.", + "LISTS_GET_INDEX_GET": "sækja", + "LISTS_GET_INDEX_GET_REMOVE": "sækja og fjarlægja", + "LISTS_GET_INDEX_REMOVE": "fjarlægja", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# frá enda", + "LISTS_GET_INDEX_FIRST": "fyrsta", + "LISTS_GET_INDEX_LAST": "síðasta", + "LISTS_GET_INDEX_RANDOM": "eitthvert", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 er fyrsta atriðið.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 er síðasta atriðið.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Skilar atriðinu í hinum tiltekna stað í lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Skilar fyrsta atriði í lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Skilar síðasta atriði í lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Skilar einhverju atriði úr lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fjarlægir og skilar atriðinu á hinum tiltekna stað í lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fjarlægir og skilar fyrsta atriðinu í lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fjarlægir og skilar síðasta atriðinu í lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fjarlægir og skilar einhverju atriði úr lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fjarlægir atriðið á hinum tiltekna stað í lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fjarlægir fyrsta atriðið í lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fjarlægir síðasta atriðið í lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Fjarlægir eitthvert atriði úr lista.", + "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", + "LISTS_SET_INDEX_SET": "setja í", + "LISTS_SET_INDEX_INSERT": "bæta við", + "LISTS_SET_INDEX_INPUT_TO": "sem", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setur atriðið í tiltekna sætið í listanum.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Setur atriðið í fyrsta sæti lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Setur atriðið í síðasta sæti lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setur atriðið í eitthvert sæti lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Bætir atriðinu í listann á tilteknum stað.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Bætir atriðinu fremst í listann.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Bætir atriðinu aftan við listann.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Bætir atriðinu einhversstaðar við listann.", + "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", + "LISTS_GET_SUBLIST_START_FROM_START": "sækja undirlista frá #", + "LISTS_GET_SUBLIST_START_FROM_END": "sækja undirlista frá # frá enda", + "LISTS_GET_SUBLIST_START_FIRST": "sækja undirlista frá fyrsta", + "LISTS_GET_SUBLIST_END_FROM_START": "til #", + "LISTS_GET_SUBLIST_END_FROM_END": "til # frá enda", + "LISTS_GET_SUBLIST_END_LAST": "til síðasta", + "LISTS_GET_SUBLIST_TOOLTIP": "Býr til afrit af tilteknum hluta lista.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "raða %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Raða afriti lista.", + "LISTS_SORT_ORDER_ASCENDING": "hækkandi", + "LISTS_SORT_ORDER_DESCENDING": "lækkandi", + "LISTS_SORT_TYPE_NUMERIC": "í númeraröð", + "LISTS_SORT_TYPE_TEXT": "í stafrófsröð", + "LISTS_SORT_TYPE_IGNORECASE": "í stafrófsröð án tillits til stafstöðu", + "LISTS_SPLIT_LIST_FROM_TEXT": "gera lista úr texta", + "LISTS_SPLIT_TEXT_FROM_LIST": "gera texta úr lista", + "LISTS_SPLIT_WITH_DELIMITER": "með skiltákni", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Skiptir texta í lista af textum, með skil við hvert skiltákn.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Sameinar lista af textum í einn texta, með skiltákn á milli.", + "LISTS_REVERSE_MESSAGE0": "snúa við %1", + "LISTS_REVERSE_TOOLTIP": "Snúa við afriti lista.", + "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", + "VARIABLES_GET_TOOLTIP": "Skilar gildi þessarar breytu.", + "VARIABLES_GET_CREATE_SET": "Búa til 'stilla %1'", + "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", + "VARIABLES_SET": "stilla %1 á %2", + "VARIABLES_SET_TOOLTIP": "Stillir þessa breytu á innihald inntaksins.", + "VARIABLES_SET_CREATE_GET": "Búa til 'sækja %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "til að", + "PROCEDURES_DEFNORETURN_PROCEDURE": "gera eitthvað", + "PROCEDURES_BEFORE_PARAMS": "með:", + "PROCEDURES_CALL_BEFORE_PARAMS": "með:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Býr til fall sem skilar engu.", + "PROCEDURES_DEFNORETURN_COMMENT": "Lýstu þessari aðgerð/falli...", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFRETURN_RETURN": "skila", + "PROCEDURES_DEFRETURN_TOOLTIP": "Býr til fall sem skilar úttaki.", + "PROCEDURES_ALLOW_STATEMENTS": "leyfa setningar", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Aðvörun: Þetta fall er með tvítekna stika.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Keyra heimatilbúna fallið '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Keyra heimatilbúna fallið '%1' og nota úttak þess.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "inntök", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Bæta við, fjarlægja eða umraða inntökum fyrir þetta fall.", + "PROCEDURES_MUTATORARG_TITLE": "heiti inntaks:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Bæta inntaki við fallið.", + "PROCEDURES_HIGHLIGHT_DEF": "Sýna skilgreiningu falls", + "PROCEDURES_CREATE_DO": "Búa til '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Ef gildi er satt, skal skila öðru gildi.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Aðvörun: Þennan kubb má aðeins nota í skilgreiningu falls.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Segðu eitthvað...", + "DIALOG_OK": "Í lagi", + "DIALOG_CANCEL": "Hætta við" +} diff --git a/msg/json/it.json b/msg/json/it.json index 1347a45be83..439970952b7 100644 --- a/msg/json/it.json +++ b/msg/json/it.json @@ -1,350 +1,350 @@ -{ - "@metadata": { - "authors": [ - "Ajeje Brazorf", - "Albe Albe 460", - "Albe Albe460", - "Beta16", - "Espertus", - "Federico Mugnaini", - "Gbonanome", - "Gianfranco", - "Greis", - "JackLantern", - "Nerimic", - "Samuele2002", - "Sarah Bernabei", - "Selven" - ] - }, - "VARIABLES_DEFAULT_NAME": "elemento", - "UNNAMED_KEY": "senza nome", - "TODAY": "Oggi", - "DUPLICATE_BLOCK": "Duplica", - "ADD_COMMENT": "Aggiungi commento", - "REMOVE_COMMENT": "Rimuovi commento", - "DUPLICATE_COMMENT": "Duplica commento", - "EXTERNAL_INPUTS": "Ingressi esterni", - "INLINE_INPUTS": "Ingressi in linea", - "DELETE_BLOCK": "Cancella blocco", - "DELETE_X_BLOCKS": "Cancella %1 blocchi", - "DELETE_ALL_BLOCKS": "Cancellare tutti i %1 blocchi?", - "CLEAN_UP": "Pulisci i blocchi", - "COLLAPSE_BLOCK": "Comprimi blocco", - "COLLAPSE_ALL": "Comprimi blocchi", - "EXPAND_BLOCK": "Espandi blocco", - "EXPAND_ALL": "Espandi blocchi", - "DISABLE_BLOCK": "Disattiva blocco", - "ENABLE_BLOCK": "Attiva blocco", - "HELP": "Aiuto", - "UNDO": "Annulla", - "REDO": "Ripeti", - "CHANGE_VALUE_TITLE": "Modifica valore:", - "RENAME_VARIABLE": "Rinomina variabile...", - "RENAME_VARIABLE_TITLE": "Rinomina tutte le variabili '%1' in:", - "NEW_VARIABLE": "Crea variabile...", - "NEW_STRING_VARIABLE": "Crea variabile stringa...", - "NEW_NUMBER_VARIABLE": "Crea variabile numero...", - "NEW_COLOUR_VARIABLE": "Crea variabile colore...", - "NEW_VARIABLE_TYPE_TITLE": "Tipo della nuova variabile:", - "NEW_VARIABLE_TITLE": "Nome della nuova variabile:", - "VARIABLE_ALREADY_EXISTS": "Una variabile denominata '%1' esiste già.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Una variabile nominata '%1' esiste già per un altro tipo: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Cancella %1 usi della variabile '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Non si può cancellare la variabile '%1' perché è parte della definizione della funzione '%2'", - "DELETE_VARIABLE": "Cancella la variabile '%1'", - "COLOUR_PICKER_HELPURL": "https://it.wikipedia.org/wiki/Colore", - "COLOUR_PICKER_TOOLTIP": "Scegli un colore dalla tavolozza.", - "COLOUR_RANDOM_TITLE": "colore casuale", - "COLOUR_RANDOM_TOOLTIP": "Scegli un colore a caso.", - "COLOUR_RGB_TITLE": "colora con", - "COLOUR_RGB_RED": "rosso", - "COLOUR_RGB_GREEN": "verde", - "COLOUR_RGB_BLUE": "blu", - "COLOUR_RGB_TOOLTIP": "Crea un colore con la quantità specificata di rosso, verde e blu. Tutti i valori devono essere compresi tra 0 e 100.", - "COLOUR_BLEND_TITLE": "miscela", - "COLOUR_BLEND_COLOUR1": "colore 1", - "COLOUR_BLEND_COLOUR2": "colore 2", - "COLOUR_BLEND_RATIO": "rapporto", - "COLOUR_BLEND_TOOLTIP": "Mescola due colori insieme con un determinato rapporto (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://it.wikipedia.org/wiki/Ciclo_for", - "CONTROLS_REPEAT_TITLE": "ripeti %1 volte", - "CONTROLS_REPEAT_INPUT_DO": "fai", - "CONTROLS_REPEAT_TOOLTIP": "Esegue alcune istruzione diverse volte.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ripeti mentre", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ripeti fino a che", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Finché un valore è vero, esegue alcune istruzioni.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Finché un valore è falso, esegue alcune istruzioni.", - "CONTROLS_FOR_TOOLTIP": "Fa sì che la variabile '%1' prenda tutti i valori a partire dal numero di partenza fino a quello di arrivo, con passo pari all'intervallo specificato, ed esegue il blocco indicato.", - "CONTROLS_FOR_TITLE": "conta con %1 da %2 a %3 per %4", - "CONTROLS_FOREACH_TITLE": "per ogni elemento %1 nella lista %2", - "CONTROLS_FOREACH_TOOLTIP": "Per ogni elemento in una lista, imposta la variabile '%1' pari all'elemento e quindi esegue alcune istruzioni.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "esce dal ciclo", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "prosegui con la successiva iterazione del ciclo", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Esce dal ciclo.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Salta il resto di questo ciclo e prosegue con la successiva iterazione.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Attenzioneː Questo blocco può essere usato solo in un ciclo.", - "CONTROLS_IF_TOOLTIP_1": "Se un valore è vero allora esegue alcune istruzioni.", - "CONTROLS_IF_TOOLTIP_2": "Se un valore è vero allora esegue il primo blocco di istruzioni. Altrimenti esegue il secondo blocco di istruzioni.", - "CONTROLS_IF_TOOLTIP_3": "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni.", - "CONTROLS_IF_TOOLTIP_4": "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni. Se nessuno dei valori è vero esegue l'ultimo blocco di istruzioni.", - "CONTROLS_IF_MSG_IF": "se", - "CONTROLS_IF_MSG_ELSEIF": "altrimenti se", - "CONTROLS_IF_MSG_ELSE": "altrimenti", - "CONTROLS_IF_IF_TOOLTIP": "Aggiungi, elimina o riordina le sezioni per riconfigurare questo blocco se.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Aggiungi una condizione al blocco se.", - "CONTROLS_IF_ELSE_TOOLTIP": "Aggiungi una condizione finale pigliatutto al blocco se.", - "LOGIC_COMPARE_HELPURL": "https://it.wikipedia.org/wiki/Disuguaglianza", - "LOGIC_COMPARE_TOOLTIP_EQ": "Restituisce vero se gli input sono uno uguale all'altro.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Restituisce vero se gli input non sono uno uguale all'altro.", - "LOGIC_COMPARE_TOOLTIP_LT": "Restituisce vero se il primo input è minore del secondo.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Restituisce vero se il primo input è minore o uguale al secondo.", - "LOGIC_COMPARE_TOOLTIP_GT": "Restituisce vero se il primo input è maggiore o uguale al secondo.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Restituisce uguale se il primo input è maggiore o uguale al secondo input.", - "LOGIC_OPERATION_TOOLTIP_AND": "Restituisce vero se entrambi gli input sono veri.", - "LOGIC_OPERATION_AND": "e", - "LOGIC_OPERATION_TOOLTIP_OR": "Restituisce vero se almeno uno degli input è vero.", - "LOGIC_OPERATION_OR": "o", - "LOGIC_NEGATE_TITLE": "non %1", - "LOGIC_NEGATE_TOOLTIP": "Restituisce vero se l'input è falso. Restituisce falso se l'input è vero.", - "LOGIC_BOOLEAN_TRUE": "vero", - "LOGIC_BOOLEAN_FALSE": "falso", - "LOGIC_BOOLEAN_TOOLTIP": "Restituisce vero o falso.", - "LOGIC_NULL": "nullo", - "LOGIC_NULL_TOOLTIP": "Restituisce valore nullo.", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "se vero", - "LOGIC_TERNARY_IF_FALSE": "se falso", - "LOGIC_TERNARY_TOOLTIP": "Verifica la condizione in 'test'. Se questa è vera restituisce il valore 'se vero' altrimenti restituisce il valore 'se falso'.", - "MATH_NUMBER_HELPURL": "https://it.wikipedia.org/wiki/Numero", - "MATH_NUMBER_TOOLTIP": "Un numero.", - "MATH_ARITHMETIC_HELPURL": "https://it.wikipedia.org/wiki/Aritmetica", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Restituisce la somma dei due numeri.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Restituisce la differenza dei due numeri.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Restituisce il prodotto dei due numeri.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Restituisce il quoziente dei due numeri.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Restituisce il primo numero elevato alla potenza del secondo numero.", - "MATH_SINGLE_HELPURL": "https://it.wikipedia.org/wiki/Radice_quadrata", - "MATH_SINGLE_OP_ROOT": "radice quadrata", - "MATH_SINGLE_TOOLTIP_ROOT": "Restituisce la radice quadrata del numero.", - "MATH_SINGLE_OP_ABSOLUTE": "assoluto", - "MATH_SINGLE_TOOLTIP_ABS": "Restituisce il valore assoluto del numero.", - "MATH_SINGLE_TOOLTIP_NEG": "Restituisce l'opposto del numero.", - "MATH_SINGLE_TOOLTIP_LN": "Restituisce il logaritmo naturale del numero.", - "MATH_SINGLE_TOOLTIP_LOG10": "Restituisce il logaritmo in base 10 del numero.", - "MATH_SINGLE_TOOLTIP_EXP": "Restituisce e elevato alla potenza del numero.", - "MATH_SINGLE_TOOLTIP_POW10": "Restituisce 10 elevato alla potenza del numero.", - "MATH_TRIG_HELPURL": "https://it.wikipedia.org/wiki/Funzione_trigonometrica", - "MATH_TRIG_TOOLTIP_SIN": "Restituisce il seno di un angolo espresso in gradi (non radianti).", - "MATH_TRIG_TOOLTIP_COS": "Restituisce il coseno di un angolo espresso in gradi (non radianti).", - "MATH_TRIG_TOOLTIP_TAN": "Restituisce la tangente di un angolo espresso in gradi (non radianti).", - "MATH_TRIG_TOOLTIP_ASIN": "Restituisce l'arco-seno di un numero.", - "MATH_TRIG_TOOLTIP_ACOS": "Restituisce l'arco-coseno di un numero.", - "MATH_TRIG_TOOLTIP_ATAN": "Restituisce l'arco-tangente di un numero.", - "MATH_CONSTANT_HELPURL": "https://it.wikipedia.org/wiki/Costante_matematica", - "MATH_CONSTANT_TOOLTIP": "Restituisce una delle costanti comuniː π (3.141…), e (2.718…), φ (1.618…), radq(2) (1.414…), radq(½) (0.707…) o ∞ (infinito).", - "MATH_IS_EVEN": "è pari", - "MATH_IS_ODD": "è dispari", - "MATH_IS_PRIME": "è primo", - "MATH_IS_WHOLE": "è intero", - "MATH_IS_POSITIVE": "è positivo", - "MATH_IS_NEGATIVE": "è negativo", - "MATH_IS_DIVISIBLE_BY": "è divisibile per", - "MATH_IS_TOOLTIP": "Verifica se un numero è pari, dispari, primo, intero, positivo, negativo o se è divisibile per un certo numero. Restituisce vero o falso.", - "MATH_CHANGE_HELPURL": "https://it.wikipedia.org/wiki/Addizione", - "MATH_CHANGE_TITLE": "cambia %1 di %2", - "MATH_CHANGE_TOOLTIP": "Aggiunge un numero alla variabile '%1'.", - "MATH_ROUND_HELPURL": "https://it.wikipedia.org/wiki/Arrotondamento", - "MATH_ROUND_TOOLTIP": "Arrotonda un numero verso l'alto o verso il basso.", - "MATH_ROUND_OPERATOR_ROUND": "arrotonda", - "MATH_ROUND_OPERATOR_ROUNDUP": "arrotonda verso l'alto", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "arrotonda verso il basso", - "MATH_ONLIST_OPERATOR_SUM": "somma la lista", - "MATH_ONLIST_TOOLTIP_SUM": "Restituisce la somma si tutti i numeri nella lista.", - "MATH_ONLIST_OPERATOR_MIN": "minimo della lista", - "MATH_ONLIST_TOOLTIP_MIN": "Restituisce il più piccolo numero della lista.", - "MATH_ONLIST_OPERATOR_MAX": "massimo della lista", - "MATH_ONLIST_TOOLTIP_MAX": "Restituisce il più grande numero della lista.", - "MATH_ONLIST_OPERATOR_AVERAGE": "media della lista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Restituisce la media (media aritmetica) dei valori numerici nella lista.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana della lista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Restituisce il valore mediano della lista.", - "MATH_ONLIST_OPERATOR_MODE": "mode della lista", - "MATH_ONLIST_TOOLTIP_MODE": "Restituisce una lista degli elementi più frequenti nella lista.", - "MATH_ONLIST_OPERATOR_STD_DEV": "deviazione standard della lista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Restituisce la deviazione standard della lista.", - "MATH_ONLIST_OPERATOR_RANDOM": "elemento casuale della lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Restituisce un elemento casuale della lista.", - "MATH_MODULO_HELPURL": "https://it.wikipedia.org/wiki/Resto", - "MATH_MODULO_TITLE": "resto di %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Restituisce il resto della divisione di due numeri.", - "MATH_CONSTRAIN_TITLE": "costringi %1 da %2 a %3", - "MATH_CONSTRAIN_TOOLTIP": "Costringe un numero all'interno dei limiti indicati (compresi).", - "MATH_RANDOM_INT_HELPURL": "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali", - "MATH_RANDOM_INT_TITLE": "intero casuale da %1 a %2", - "MATH_RANDOM_INT_TOOLTIP": "Restituisce un numero intero casuale compreso tra i due limiti indicati (inclusi).", - "MATH_RANDOM_FLOAT_HELPURL": "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "frazione casuale", - "MATH_RANDOM_FLOAT_TOOLTIP": "Restituisce una frazione compresa fra 0.0 (incluso) e 1.0 (escluso).", - "MATH_ATAN2_HELPURL": "https://it.wikipedia.org/wiki/Arcotangente2", - "MATH_ATAN2_TITLE": "atan2 di X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Restituisce l'arcotangente del punto (X, Y) in gradi da -180 a 180.", - "TEXT_TEXT_HELPURL": "https://it.wikipedia.org/wiki/Stringa_(informatica)", - "TEXT_TEXT_TOOLTIP": "Una lettera, una parola o una linea di testo.", - "TEXT_JOIN_TITLE_CREATEWITH": "crea testo con", - "TEXT_JOIN_TOOLTIP": "Crea un blocco di testo unendo un certo numero di elementi.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "unisci", - "TEXT_CREATE_JOIN_TOOLTIP": "Aggiungi, rimuovi o riordina le sezioni per riconfigurare questo blocco testo.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Aggiungi un elemento al testo.", - "TEXT_APPEND_TITLE": "a %1 aggiungi il testo %2", - "TEXT_APPEND_TOOLTIP": "Aggiunge del testo alla variabile '%1'.", - "TEXT_LENGTH_TITLE": "lunghezza di %1", - "TEXT_LENGTH_TOOLTIP": "Restituisce il numero di lettere (inclusi gli spazi) nel testo fornito.", - "TEXT_ISEMPTY_TITLE": "%1 è vuoto", - "TEXT_ISEMPTY_TOOLTIP": "Restituisce vero se il testo fornito è vuoto.", - "TEXT_INDEXOF_TOOLTIP": "Restituisce l'indice della prima occorrenza del primo testo all'interno del secondo testo. Restituisce %1 se il testo non viene trovato.", - "TEXT_INDEXOF_TITLE": "nel testo %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "trova la prima occorrenza del testo", - "TEXT_INDEXOF_OPERATOR_LAST": "trova l'ultima occorrenza del testo", - "TEXT_CHARAT_TITLE": "nel testo %1 %2", - "TEXT_CHARAT_FROM_START": "prendi la lettera #", - "TEXT_CHARAT_FROM_END": "prendi la lettera # dalla fine", - "TEXT_CHARAT_FIRST": "prendi la prima lettera", - "TEXT_CHARAT_LAST": "prendi l'ultima lettera", - "TEXT_CHARAT_RANDOM": "prendi lettera casuale", - "TEXT_CHARAT_TOOLTIP": "Restituisce la lettera nella posizione indicata.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Restituisce la porzione di testo indicata.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "nel testo", - "TEXT_GET_SUBSTRING_START_FROM_START": "prendi sotto-stringa dalla lettera #", - "TEXT_GET_SUBSTRING_START_FROM_END": "prendi sotto-stringa dalla lettera # dalla fine", - "TEXT_GET_SUBSTRING_START_FIRST": "prendi sotto-stringa dalla prima lettera", - "TEXT_GET_SUBSTRING_END_FROM_START": "alla lettera #", - "TEXT_GET_SUBSTRING_END_FROM_END": "alla lettera # dalla fine", - "TEXT_GET_SUBSTRING_END_LAST": "all'ultima lettera", - "TEXT_CHANGECASE_TOOLTIP": "Restituisce una copia del testo in un diverso formato maiuscole/minuscole.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "in MAIUSCOLO", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "in minuscolo", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "con Iniziali Maiuscole", - "TEXT_TRIM_TOOLTIP": "Restituisce una copia del testo con gli spazi rimossi ad uno o entrambe le estremità.", - "TEXT_TRIM_OPERATOR_BOTH": "rimuovi spazi da entrambi gli estremi", - "TEXT_TRIM_OPERATOR_LEFT": "rimuovi spazi a sinistra", - "TEXT_TRIM_OPERATOR_RIGHT": "rimuovi spazi a destra", - "TEXT_PRINT_TITLE": "scrivi %1", - "TEXT_PRINT_TOOLTIP": "Scrive il testo, numero o altro valore indicato.", - "TEXT_PROMPT_TYPE_TEXT": "richiedi testo con messaggio", - "TEXT_PROMPT_TYPE_NUMBER": "richiedi numero con messaggio", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Richiedi un numero all'utente.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Richiede del testo da parte dell'utente.", - "TEXT_COUNT_MESSAGE0": "conta %1 in %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Contare quante volte una parte di testo si ripete all'interno di qualche altro testo.", - "TEXT_REPLACE_MESSAGE0": "sostituisci %1 con %2 in %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "sostituisci tutte le occorrenze di un certo testo con qualche altro testo.", - "TEXT_REVERSE_MESSAGE0": "inverti %1", - "TEXT_REVERSE_TOOLTIP": "Inverte l'ordine dei caratteri nel testo.", - "LISTS_CREATE_EMPTY_TITLE": "crea lista vuota", - "LISTS_CREATE_EMPTY_TOOLTIP": "Restituisce una lista, di lunghezza 0, contenente nessun record di dati", - "LISTS_CREATE_WITH_TOOLTIP": "Crea una lista con un certo numero di elementi.", - "LISTS_CREATE_WITH_INPUT_WITH": "crea lista con", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Aggiungi, rimuovi o riordina le sezioni per riconfigurare il blocco lista.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Aggiunge un elemento alla lista.", - "LISTS_REPEAT_TOOLTIP": "Crea una lista costituita dal valore indicato ripetuto per il numero di volte specificato.", - "LISTS_REPEAT_TITLE": "crea una lista con l'elemento %1 ripetuto %2 volte", - "LISTS_LENGTH_TITLE": "lunghezza di %1", - "LISTS_LENGTH_TOOLTIP": "Restituisce la lunghezza della lista", - "LISTS_ISEMPTY_TITLE": "%1 è vuota", - "LISTS_ISEMPTY_TOOLTIP": "Restituisce vero se la lista è vuota.", - "LISTS_INLIST": "nella lista", - "LISTS_INDEX_OF_FIRST": "trova la prima occorrenza dell'elemento", - "LISTS_INDEX_OF_LAST": "trova l'ultima occorrenza dell'elemento", - "LISTS_INDEX_OF_TOOLTIP": "Restituisce l'indice della prima/ultima occorrenza dell'elemento nella lista. Restituisce %1 se l'elemento non viene trovato.", - "LISTS_GET_INDEX_GET": "prendi", - "LISTS_GET_INDEX_GET_REMOVE": "prendi e rimuovi", - "LISTS_GET_INDEX_REMOVE": "rimuovi", - "LISTS_GET_INDEX_FROM_END": "# dalla fine", - "LISTS_GET_INDEX_FIRST": "primo", - "LISTS_GET_INDEX_LAST": "ultimo", - "LISTS_GET_INDEX_RANDOM": "casuale", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 corrisponde al primo elemento.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 corrisponde all'ultimo elemento.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Restituisce l'elemento nella posizione indicata della lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Restituisce il primo elemento in una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Restituisce l'ultimo elemento in una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Restituisce un elemento casuale in una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Rimuove e restituisce l'elemento nella posizione indicata in una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Rimuove e restituisce il primo elemento in una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Restituisce e rimuove l'ultimo elemento in una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Restituisce e rimuove un elemento casuale in una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Rimuove l'elemento nella posizione indicata in una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Rimuove il primo elemento in una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Rimuove l'ultimo elemento in una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Rimuove un elemento casuale in una lista.", - "LISTS_SET_INDEX_SET": "imposta", - "LISTS_SET_INDEX_INSERT": "inserisci in", - "LISTS_SET_INDEX_INPUT_TO": "come", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Imposta l'elemento nella posizione indicata di una lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Imposta il primo elemento in una lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Imposta l'ultimo elemento in una lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Imposta un elemento casuale in una lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserisci un elemento nella posizione indicata in una lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserisci l'elemento all'inizio della lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Aggiungi un elemento alla fine di una lista", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserisce l'elemento casualmente in una lista.", - "LISTS_GET_SUBLIST_START_FROM_START": "prendi sotto-lista da #", - "LISTS_GET_SUBLIST_START_FROM_END": "prendi sotto-lista da # dalla fine", - "LISTS_GET_SUBLIST_START_FIRST": "prendi sotto-lista dall'inizio", - "LISTS_GET_SUBLIST_END_FROM_START": "fino a #", - "LISTS_GET_SUBLIST_END_FROM_END": "da # dalla fine", - "LISTS_GET_SUBLIST_END_LAST": "dagli ultimi", - "LISTS_GET_SUBLIST_TOOLTIP": "Crea una copia della porzione specificata di una lista.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "ordinamento %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Ordina una copia di un elenco.", - "LISTS_SORT_ORDER_ASCENDING": "crescente", - "LISTS_SORT_ORDER_DESCENDING": "decrescente", - "LISTS_SORT_TYPE_NUMERIC": "numerico", - "LISTS_SORT_TYPE_TEXT": "alfabetico", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetico, ignorare differenze maiuscole e minuscole", - "LISTS_SPLIT_LIST_FROM_TEXT": "crea lista da testo", - "LISTS_SPLIT_TEXT_FROM_LIST": "crea testo da lista", - "LISTS_SPLIT_WITH_DELIMITER": "con delimitatore", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividi il testo in un elenco di testi, interrompendo ad ogni delimitatore.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Unisci una lista di testi in un unico testo, separato da un delimitatore.", - "LISTS_REVERSE_MESSAGE0": "inverti %1", - "LISTS_REVERSE_TOOLTIP": "Inverti una copia di un elenco.", - "VARIABLES_GET_TOOLTIP": "Restituisce il valore di una variabile.", - "VARIABLES_GET_CREATE_SET": "Crea 'imposta %1'", - "VARIABLES_SET": "imposta %1 a %2", - "VARIABLES_SET_TOOLTIP": "Imposta questa variabile ad essere pari all'input.", - "VARIABLES_SET_CREATE_GET": "Crea 'prendi %1'", - "PROCEDURES_DEFNORETURN_TITLE": "per", - "PROCEDURES_DEFNORETURN_PROCEDURE": "fai qualcosa", - "PROCEDURES_BEFORE_PARAMS": "conː", - "PROCEDURES_CALL_BEFORE_PARAMS": "conː", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea una funzione senza output.", - "PROCEDURES_DEFNORETURN_COMMENT": "Descrivi questa funzione...", - "PROCEDURES_DEFRETURN_RETURN": "ritorna", - "PROCEDURES_DEFRETURN_TOOLTIP": "Crea una funzione con un output.", - "PROCEDURES_ALLOW_STATEMENTS": "consenti dichiarazioni", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Attenzioneː Questa funzione ha parametri duplicati.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://it.wikipedia.org/wiki/Funzione (informatica)", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Esegue la funzione definita dall'utente '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://it.wikipedia.org/wiki/Funzione (informatica)", - "PROCEDURES_CALLRETURN_TOOLTIP": "Esegue la funzione definita dall'utente '%1' ed usa il suo output.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "input", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Aggiungi, rimuovi o riordina input alla funzione.", - "PROCEDURES_MUTATORARG_TITLE": "nome inputː", - "PROCEDURES_MUTATORARG_TOOLTIP": "Aggiungi un input alla funzione.", - "PROCEDURES_HIGHLIGHT_DEF": "Evidenzia definizione di funzione", - "PROCEDURES_CREATE_DO": "Crea '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Se un valore è vero allora restituisce un secondo valore.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Attenzioneː Questo blocco può essere usato solo all'interno di una definizione di funzione.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Scrivi qualcosa...", - "WORKSPACE_ARIA_LABEL": "Area di lavoro di Blockly", - "COLLAPSED_WARNINGS_WARNING": "I blocchi compressi contengono avvertimenti.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Annulla" -} +{ + "@metadata": { + "authors": [ + "Ajeje Brazorf", + "Albe Albe 460", + "Albe Albe460", + "Beta16", + "Espertus", + "Federico Mugnaini", + "Gbonanome", + "Gianfranco", + "Greis", + "JackLantern", + "Nerimic", + "Samuele2002", + "Sarah Bernabei", + "Selven" + ] + }, + "VARIABLES_DEFAULT_NAME": "elemento", + "UNNAMED_KEY": "senza nome", + "TODAY": "Oggi", + "DUPLICATE_BLOCK": "Duplica", + "ADD_COMMENT": "Aggiungi commento", + "REMOVE_COMMENT": "Rimuovi commento", + "DUPLICATE_COMMENT": "Duplica commento", + "EXTERNAL_INPUTS": "Ingressi esterni", + "INLINE_INPUTS": "Ingressi in linea", + "DELETE_BLOCK": "Cancella blocco", + "DELETE_X_BLOCKS": "Cancella %1 blocchi", + "DELETE_ALL_BLOCKS": "Cancellare tutti i %1 blocchi?", + "CLEAN_UP": "Pulisci i blocchi", + "COLLAPSE_BLOCK": "Comprimi blocco", + "COLLAPSE_ALL": "Comprimi blocchi", + "EXPAND_BLOCK": "Espandi blocco", + "EXPAND_ALL": "Espandi blocchi", + "DISABLE_BLOCK": "Disattiva blocco", + "ENABLE_BLOCK": "Attiva blocco", + "HELP": "Aiuto", + "UNDO": "Annulla", + "REDO": "Ripeti", + "CHANGE_VALUE_TITLE": "Modifica valore:", + "RENAME_VARIABLE": "Rinomina variabile...", + "RENAME_VARIABLE_TITLE": "Rinomina tutte le variabili '%1' in:", + "NEW_VARIABLE": "Crea variabile...", + "NEW_STRING_VARIABLE": "Crea variabile stringa...", + "NEW_NUMBER_VARIABLE": "Crea variabile numero...", + "NEW_COLOUR_VARIABLE": "Crea variabile colore...", + "NEW_VARIABLE_TYPE_TITLE": "Tipo della nuova variabile:", + "NEW_VARIABLE_TITLE": "Nome della nuova variabile:", + "VARIABLE_ALREADY_EXISTS": "Una variabile denominata '%1' esiste già.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Una variabile nominata '%1' esiste già per un altro tipo: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Cancella %1 usi della variabile '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Non si può cancellare la variabile '%1' perché è parte della definizione della funzione '%2'", + "DELETE_VARIABLE": "Cancella la variabile '%1'", + "COLOUR_PICKER_HELPURL": "https://it.wikipedia.org/wiki/Colore", + "COLOUR_PICKER_TOOLTIP": "Scegli un colore dalla tavolozza.", + "COLOUR_RANDOM_TITLE": "colore casuale", + "COLOUR_RANDOM_TOOLTIP": "Scegli un colore a caso.", + "COLOUR_RGB_TITLE": "colora con", + "COLOUR_RGB_RED": "rosso", + "COLOUR_RGB_GREEN": "verde", + "COLOUR_RGB_BLUE": "blu", + "COLOUR_RGB_TOOLTIP": "Crea un colore con la quantità specificata di rosso, verde e blu. Tutti i valori devono essere compresi tra 0 e 100.", + "COLOUR_BLEND_TITLE": "miscela", + "COLOUR_BLEND_COLOUR1": "colore 1", + "COLOUR_BLEND_COLOUR2": "colore 2", + "COLOUR_BLEND_RATIO": "rapporto", + "COLOUR_BLEND_TOOLTIP": "Mescola due colori insieme con un determinato rapporto (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://it.wikipedia.org/wiki/Ciclo_for", + "CONTROLS_REPEAT_TITLE": "ripeti %1 volte", + "CONTROLS_REPEAT_INPUT_DO": "fai", + "CONTROLS_REPEAT_TOOLTIP": "Esegue alcune istruzione diverse volte.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ripeti mentre", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ripeti fino a che", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Finché un valore è vero, esegue alcune istruzioni.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Finché un valore è falso, esegue alcune istruzioni.", + "CONTROLS_FOR_TOOLTIP": "Fa sì che la variabile '%1' prenda tutti i valori a partire dal numero di partenza fino a quello di arrivo, con passo pari all'intervallo specificato, ed esegue il blocco indicato.", + "CONTROLS_FOR_TITLE": "conta con %1 da %2 a %3 per %4", + "CONTROLS_FOREACH_TITLE": "per ogni elemento %1 nella lista %2", + "CONTROLS_FOREACH_TOOLTIP": "Per ogni elemento in una lista, imposta la variabile '%1' pari all'elemento e quindi esegue alcune istruzioni.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "esce dal ciclo", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "prosegui con la successiva iterazione del ciclo", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Esce dal ciclo.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Salta il resto di questo ciclo e prosegue con la successiva iterazione.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Attenzioneː Questo blocco può essere usato solo in un ciclo.", + "CONTROLS_IF_TOOLTIP_1": "Se un valore è vero allora esegue alcune istruzioni.", + "CONTROLS_IF_TOOLTIP_2": "Se un valore è vero allora esegue il primo blocco di istruzioni. Altrimenti esegue il secondo blocco di istruzioni.", + "CONTROLS_IF_TOOLTIP_3": "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni.", + "CONTROLS_IF_TOOLTIP_4": "Se il primo valore è vero allora esegue un primo blocco di istruzioni. Altrimenti, se il secondo valore è vero, esegue un secondo blocco di istruzioni. Se nessuno dei valori è vero esegue l'ultimo blocco di istruzioni.", + "CONTROLS_IF_MSG_IF": "se", + "CONTROLS_IF_MSG_ELSEIF": "altrimenti se", + "CONTROLS_IF_MSG_ELSE": "altrimenti", + "CONTROLS_IF_IF_TOOLTIP": "Aggiungi, elimina o riordina le sezioni per riconfigurare questo blocco se.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Aggiungi una condizione al blocco se.", + "CONTROLS_IF_ELSE_TOOLTIP": "Aggiungi una condizione finale pigliatutto al blocco se.", + "LOGIC_COMPARE_HELPURL": "https://it.wikipedia.org/wiki/Disuguaglianza", + "LOGIC_COMPARE_TOOLTIP_EQ": "Restituisce vero se gli input sono uno uguale all'altro.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Restituisce vero se gli input non sono uno uguale all'altro.", + "LOGIC_COMPARE_TOOLTIP_LT": "Restituisce vero se il primo input è minore del secondo.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Restituisce vero se il primo input è minore o uguale al secondo.", + "LOGIC_COMPARE_TOOLTIP_GT": "Restituisce vero se il primo input è maggiore o uguale al secondo.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Restituisce uguale se il primo input è maggiore o uguale al secondo input.", + "LOGIC_OPERATION_TOOLTIP_AND": "Restituisce vero se entrambi gli input sono veri.", + "LOGIC_OPERATION_AND": "e", + "LOGIC_OPERATION_TOOLTIP_OR": "Restituisce vero se almeno uno degli input è vero.", + "LOGIC_OPERATION_OR": "o", + "LOGIC_NEGATE_TITLE": "non %1", + "LOGIC_NEGATE_TOOLTIP": "Restituisce vero se l'input è falso. Restituisce falso se l'input è vero.", + "LOGIC_BOOLEAN_TRUE": "vero", + "LOGIC_BOOLEAN_FALSE": "falso", + "LOGIC_BOOLEAN_TOOLTIP": "Restituisce vero o falso.", + "LOGIC_NULL": "nullo", + "LOGIC_NULL_TOOLTIP": "Restituisce valore nullo.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "se vero", + "LOGIC_TERNARY_IF_FALSE": "se falso", + "LOGIC_TERNARY_TOOLTIP": "Verifica la condizione in 'test'. Se questa è vera restituisce il valore 'se vero' altrimenti restituisce il valore 'se falso'.", + "MATH_NUMBER_HELPURL": "https://it.wikipedia.org/wiki/Numero", + "MATH_NUMBER_TOOLTIP": "Un numero.", + "MATH_ARITHMETIC_HELPURL": "https://it.wikipedia.org/wiki/Aritmetica", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Restituisce la somma dei due numeri.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Restituisce la differenza dei due numeri.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Restituisce il prodotto dei due numeri.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Restituisce il quoziente dei due numeri.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Restituisce il primo numero elevato alla potenza del secondo numero.", + "MATH_SINGLE_HELPURL": "https://it.wikipedia.org/wiki/Radice_quadrata", + "MATH_SINGLE_OP_ROOT": "radice quadrata", + "MATH_SINGLE_TOOLTIP_ROOT": "Restituisce la radice quadrata del numero.", + "MATH_SINGLE_OP_ABSOLUTE": "assoluto", + "MATH_SINGLE_TOOLTIP_ABS": "Restituisce il valore assoluto del numero.", + "MATH_SINGLE_TOOLTIP_NEG": "Restituisce l'opposto del numero.", + "MATH_SINGLE_TOOLTIP_LN": "Restituisce il logaritmo naturale del numero.", + "MATH_SINGLE_TOOLTIP_LOG10": "Restituisce il logaritmo in base 10 del numero.", + "MATH_SINGLE_TOOLTIP_EXP": "Restituisce e elevato alla potenza del numero.", + "MATH_SINGLE_TOOLTIP_POW10": "Restituisce 10 elevato alla potenza del numero.", + "MATH_TRIG_HELPURL": "https://it.wikipedia.org/wiki/Funzione_trigonometrica", + "MATH_TRIG_TOOLTIP_SIN": "Restituisce il seno di un angolo espresso in gradi (non radianti).", + "MATH_TRIG_TOOLTIP_COS": "Restituisce il coseno di un angolo espresso in gradi (non radianti).", + "MATH_TRIG_TOOLTIP_TAN": "Restituisce la tangente di un angolo espresso in gradi (non radianti).", + "MATH_TRIG_TOOLTIP_ASIN": "Restituisce l'arco-seno di un numero.", + "MATH_TRIG_TOOLTIP_ACOS": "Restituisce l'arco-coseno di un numero.", + "MATH_TRIG_TOOLTIP_ATAN": "Restituisce l'arco-tangente di un numero.", + "MATH_CONSTANT_HELPURL": "https://it.wikipedia.org/wiki/Costante_matematica", + "MATH_CONSTANT_TOOLTIP": "Restituisce una delle costanti comuniː π (3.141…), e (2.718…), φ (1.618…), radq(2) (1.414…), radq(½) (0.707…) o ∞ (infinito).", + "MATH_IS_EVEN": "è pari", + "MATH_IS_ODD": "è dispari", + "MATH_IS_PRIME": "è primo", + "MATH_IS_WHOLE": "è intero", + "MATH_IS_POSITIVE": "è positivo", + "MATH_IS_NEGATIVE": "è negativo", + "MATH_IS_DIVISIBLE_BY": "è divisibile per", + "MATH_IS_TOOLTIP": "Verifica se un numero è pari, dispari, primo, intero, positivo, negativo o se è divisibile per un certo numero. Restituisce vero o falso.", + "MATH_CHANGE_HELPURL": "https://it.wikipedia.org/wiki/Addizione", + "MATH_CHANGE_TITLE": "cambia %1 di %2", + "MATH_CHANGE_TOOLTIP": "Aggiunge un numero alla variabile '%1'.", + "MATH_ROUND_HELPURL": "https://it.wikipedia.org/wiki/Arrotondamento", + "MATH_ROUND_TOOLTIP": "Arrotonda un numero verso l'alto o verso il basso.", + "MATH_ROUND_OPERATOR_ROUND": "arrotonda", + "MATH_ROUND_OPERATOR_ROUNDUP": "arrotonda verso l'alto", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "arrotonda verso il basso", + "MATH_ONLIST_OPERATOR_SUM": "somma la lista", + "MATH_ONLIST_TOOLTIP_SUM": "Restituisce la somma si tutti i numeri nella lista.", + "MATH_ONLIST_OPERATOR_MIN": "minimo della lista", + "MATH_ONLIST_TOOLTIP_MIN": "Restituisce il più piccolo numero della lista.", + "MATH_ONLIST_OPERATOR_MAX": "massimo della lista", + "MATH_ONLIST_TOOLTIP_MAX": "Restituisce il più grande numero della lista.", + "MATH_ONLIST_OPERATOR_AVERAGE": "media della lista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Restituisce la media (media aritmetica) dei valori numerici nella lista.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana della lista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Restituisce il valore mediano della lista.", + "MATH_ONLIST_OPERATOR_MODE": "mode della lista", + "MATH_ONLIST_TOOLTIP_MODE": "Restituisce una lista degli elementi più frequenti nella lista.", + "MATH_ONLIST_OPERATOR_STD_DEV": "deviazione standard della lista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Restituisce la deviazione standard della lista.", + "MATH_ONLIST_OPERATOR_RANDOM": "elemento casuale della lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Restituisce un elemento casuale della lista.", + "MATH_MODULO_HELPURL": "https://it.wikipedia.org/wiki/Resto", + "MATH_MODULO_TITLE": "resto di %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Restituisce il resto della divisione di due numeri.", + "MATH_CONSTRAIN_TITLE": "costringi %1 da %2 a %3", + "MATH_CONSTRAIN_TOOLTIP": "Costringe un numero all'interno dei limiti indicati (compresi).", + "MATH_RANDOM_INT_HELPURL": "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali", + "MATH_RANDOM_INT_TITLE": "intero casuale da %1 a %2", + "MATH_RANDOM_INT_TOOLTIP": "Restituisce un numero intero casuale compreso tra i due limiti indicati (inclusi).", + "MATH_RANDOM_FLOAT_HELPURL": "https://it.wikipedia.org/wiki/Numeri_pseudo-casuali", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "frazione casuale", + "MATH_RANDOM_FLOAT_TOOLTIP": "Restituisce una frazione compresa fra 0.0 (incluso) e 1.0 (escluso).", + "MATH_ATAN2_HELPURL": "https://it.wikipedia.org/wiki/Arcotangente2", + "MATH_ATAN2_TITLE": "atan2 di X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Restituisce l'arcotangente del punto (X, Y) in gradi da -180 a 180.", + "TEXT_TEXT_HELPURL": "https://it.wikipedia.org/wiki/Stringa_(informatica)", + "TEXT_TEXT_TOOLTIP": "Una lettera, una parola o una linea di testo.", + "TEXT_JOIN_TITLE_CREATEWITH": "crea testo con", + "TEXT_JOIN_TOOLTIP": "Crea un blocco di testo unendo un certo numero di elementi.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "unisci", + "TEXT_CREATE_JOIN_TOOLTIP": "Aggiungi, rimuovi o riordina le sezioni per riconfigurare questo blocco testo.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Aggiungi un elemento al testo.", + "TEXT_APPEND_TITLE": "a %1 aggiungi il testo %2", + "TEXT_APPEND_TOOLTIP": "Aggiunge del testo alla variabile '%1'.", + "TEXT_LENGTH_TITLE": "lunghezza di %1", + "TEXT_LENGTH_TOOLTIP": "Restituisce il numero di lettere (inclusi gli spazi) nel testo fornito.", + "TEXT_ISEMPTY_TITLE": "%1 è vuoto", + "TEXT_ISEMPTY_TOOLTIP": "Restituisce vero se il testo fornito è vuoto.", + "TEXT_INDEXOF_TOOLTIP": "Restituisce l'indice della prima occorrenza del primo testo all'interno del secondo testo. Restituisce %1 se il testo non viene trovato.", + "TEXT_INDEXOF_TITLE": "nel testo %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "trova la prima occorrenza del testo", + "TEXT_INDEXOF_OPERATOR_LAST": "trova l'ultima occorrenza del testo", + "TEXT_CHARAT_TITLE": "nel testo %1 %2", + "TEXT_CHARAT_FROM_START": "prendi la lettera #", + "TEXT_CHARAT_FROM_END": "prendi la lettera # dalla fine", + "TEXT_CHARAT_FIRST": "prendi la prima lettera", + "TEXT_CHARAT_LAST": "prendi l'ultima lettera", + "TEXT_CHARAT_RANDOM": "prendi lettera casuale", + "TEXT_CHARAT_TOOLTIP": "Restituisce la lettera nella posizione indicata.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Restituisce la porzione di testo indicata.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "nel testo", + "TEXT_GET_SUBSTRING_START_FROM_START": "prendi sotto-stringa dalla lettera #", + "TEXT_GET_SUBSTRING_START_FROM_END": "prendi sotto-stringa dalla lettera # dalla fine", + "TEXT_GET_SUBSTRING_START_FIRST": "prendi sotto-stringa dalla prima lettera", + "TEXT_GET_SUBSTRING_END_FROM_START": "alla lettera #", + "TEXT_GET_SUBSTRING_END_FROM_END": "alla lettera # dalla fine", + "TEXT_GET_SUBSTRING_END_LAST": "all'ultima lettera", + "TEXT_CHANGECASE_TOOLTIP": "Restituisce una copia del testo in un diverso formato maiuscole/minuscole.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "in MAIUSCOLO", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "in minuscolo", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "con Iniziali Maiuscole", + "TEXT_TRIM_TOOLTIP": "Restituisce una copia del testo con gli spazi rimossi ad uno o entrambe le estremità.", + "TEXT_TRIM_OPERATOR_BOTH": "rimuovi spazi da entrambi gli estremi", + "TEXT_TRIM_OPERATOR_LEFT": "rimuovi spazi a sinistra", + "TEXT_TRIM_OPERATOR_RIGHT": "rimuovi spazi a destra", + "TEXT_PRINT_TITLE": "scrivi %1", + "TEXT_PRINT_TOOLTIP": "Scrive il testo, numero o altro valore indicato.", + "TEXT_PROMPT_TYPE_TEXT": "richiedi testo con messaggio", + "TEXT_PROMPT_TYPE_NUMBER": "richiedi numero con messaggio", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Richiedi un numero all'utente.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Richiede del testo da parte dell'utente.", + "TEXT_COUNT_MESSAGE0": "conta %1 in %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Contare quante volte una parte di testo si ripete all'interno di qualche altro testo.", + "TEXT_REPLACE_MESSAGE0": "sostituisci %1 con %2 in %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "sostituisci tutte le occorrenze di un certo testo con qualche altro testo.", + "TEXT_REVERSE_MESSAGE0": "inverti %1", + "TEXT_REVERSE_TOOLTIP": "Inverte l'ordine dei caratteri nel testo.", + "LISTS_CREATE_EMPTY_TITLE": "crea lista vuota", + "LISTS_CREATE_EMPTY_TOOLTIP": "Restituisce una lista, di lunghezza 0, contenente nessun record di dati", + "LISTS_CREATE_WITH_TOOLTIP": "Crea una lista con un certo numero di elementi.", + "LISTS_CREATE_WITH_INPUT_WITH": "crea lista con", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Aggiungi, rimuovi o riordina le sezioni per riconfigurare il blocco lista.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Aggiunge un elemento alla lista.", + "LISTS_REPEAT_TOOLTIP": "Crea una lista costituita dal valore indicato ripetuto per il numero di volte specificato.", + "LISTS_REPEAT_TITLE": "crea una lista con l'elemento %1 ripetuto %2 volte", + "LISTS_LENGTH_TITLE": "lunghezza di %1", + "LISTS_LENGTH_TOOLTIP": "Restituisce la lunghezza della lista", + "LISTS_ISEMPTY_TITLE": "%1 è vuota", + "LISTS_ISEMPTY_TOOLTIP": "Restituisce vero se la lista è vuota.", + "LISTS_INLIST": "nella lista", + "LISTS_INDEX_OF_FIRST": "trova la prima occorrenza dell'elemento", + "LISTS_INDEX_OF_LAST": "trova l'ultima occorrenza dell'elemento", + "LISTS_INDEX_OF_TOOLTIP": "Restituisce l'indice della prima/ultima occorrenza dell'elemento nella lista. Restituisce %1 se l'elemento non viene trovato.", + "LISTS_GET_INDEX_GET": "prendi", + "LISTS_GET_INDEX_GET_REMOVE": "prendi e rimuovi", + "LISTS_GET_INDEX_REMOVE": "rimuovi", + "LISTS_GET_INDEX_FROM_END": "# dalla fine", + "LISTS_GET_INDEX_FIRST": "primo", + "LISTS_GET_INDEX_LAST": "ultimo", + "LISTS_GET_INDEX_RANDOM": "casuale", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 corrisponde al primo elemento.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 corrisponde all'ultimo elemento.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Restituisce l'elemento nella posizione indicata della lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Restituisce il primo elemento in una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Restituisce l'ultimo elemento in una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Restituisce un elemento casuale in una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Rimuove e restituisce l'elemento nella posizione indicata in una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Rimuove e restituisce il primo elemento in una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Restituisce e rimuove l'ultimo elemento in una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Restituisce e rimuove un elemento casuale in una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Rimuove l'elemento nella posizione indicata in una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Rimuove il primo elemento in una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Rimuove l'ultimo elemento in una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Rimuove un elemento casuale in una lista.", + "LISTS_SET_INDEX_SET": "imposta", + "LISTS_SET_INDEX_INSERT": "inserisci in", + "LISTS_SET_INDEX_INPUT_TO": "come", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Imposta l'elemento nella posizione indicata di una lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Imposta il primo elemento in una lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Imposta l'ultimo elemento in una lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Imposta un elemento casuale in una lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserisci un elemento nella posizione indicata in una lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserisci l'elemento all'inizio della lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Aggiungi un elemento alla fine di una lista", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserisce l'elemento casualmente in una lista.", + "LISTS_GET_SUBLIST_START_FROM_START": "prendi sotto-lista da #", + "LISTS_GET_SUBLIST_START_FROM_END": "prendi sotto-lista da # dalla fine", + "LISTS_GET_SUBLIST_START_FIRST": "prendi sotto-lista dall'inizio", + "LISTS_GET_SUBLIST_END_FROM_START": "fino a #", + "LISTS_GET_SUBLIST_END_FROM_END": "da # dalla fine", + "LISTS_GET_SUBLIST_END_LAST": "dagli ultimi", + "LISTS_GET_SUBLIST_TOOLTIP": "Crea una copia della porzione specificata di una lista.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "ordinamento %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ordina una copia di un elenco.", + "LISTS_SORT_ORDER_ASCENDING": "crescente", + "LISTS_SORT_ORDER_DESCENDING": "decrescente", + "LISTS_SORT_TYPE_NUMERIC": "numerico", + "LISTS_SORT_TYPE_TEXT": "alfabetico", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetico, ignorare differenze maiuscole e minuscole", + "LISTS_SPLIT_LIST_FROM_TEXT": "crea lista da testo", + "LISTS_SPLIT_TEXT_FROM_LIST": "crea testo da lista", + "LISTS_SPLIT_WITH_DELIMITER": "con delimitatore", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividi il testo in un elenco di testi, interrompendo ad ogni delimitatore.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Unisci una lista di testi in un unico testo, separato da un delimitatore.", + "LISTS_REVERSE_MESSAGE0": "inverti %1", + "LISTS_REVERSE_TOOLTIP": "Inverti una copia di un elenco.", + "VARIABLES_GET_TOOLTIP": "Restituisce il valore di una variabile.", + "VARIABLES_GET_CREATE_SET": "Crea 'imposta %1'", + "VARIABLES_SET": "imposta %1 a %2", + "VARIABLES_SET_TOOLTIP": "Imposta questa variabile ad essere pari all'input.", + "VARIABLES_SET_CREATE_GET": "Crea 'prendi %1'", + "PROCEDURES_DEFNORETURN_TITLE": "per", + "PROCEDURES_DEFNORETURN_PROCEDURE": "fai qualcosa", + "PROCEDURES_BEFORE_PARAMS": "conː", + "PROCEDURES_CALL_BEFORE_PARAMS": "conː", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea una funzione senza output.", + "PROCEDURES_DEFNORETURN_COMMENT": "Descrivi questa funzione...", + "PROCEDURES_DEFRETURN_RETURN": "ritorna", + "PROCEDURES_DEFRETURN_TOOLTIP": "Crea una funzione con un output.", + "PROCEDURES_ALLOW_STATEMENTS": "consenti dichiarazioni", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Attenzioneː Questa funzione ha parametri duplicati.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://it.wikipedia.org/wiki/Funzione (informatica)", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Esegue la funzione definita dall'utente '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://it.wikipedia.org/wiki/Funzione (informatica)", + "PROCEDURES_CALLRETURN_TOOLTIP": "Esegue la funzione definita dall'utente '%1' ed usa il suo output.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "input", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Aggiungi, rimuovi o riordina input alla funzione.", + "PROCEDURES_MUTATORARG_TITLE": "nome inputː", + "PROCEDURES_MUTATORARG_TOOLTIP": "Aggiungi un input alla funzione.", + "PROCEDURES_HIGHLIGHT_DEF": "Evidenzia definizione di funzione", + "PROCEDURES_CREATE_DO": "Crea '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Se un valore è vero allora restituisce un secondo valore.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Attenzioneː Questo blocco può essere usato solo all'interno di una definizione di funzione.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Scrivi qualcosa...", + "WORKSPACE_ARIA_LABEL": "Area di lavoro di Blockly", + "COLLAPSED_WARNINGS_WARNING": "I blocchi compressi contengono avvertimenti.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Annulla" +} diff --git a/msg/json/ja.json b/msg/json/ja.json index eb5737d6021..012aedd389c 100644 --- a/msg/json/ja.json +++ b/msg/json/ja.json @@ -1,410 +1,410 @@ -{ - "@metadata": { - "authors": [ - "Aefgh39622", - "Gimite", - "Gulpin", - "Kebhr", - "Kkairri", - "Oda", - "Omotecho", - "Otokoume", - "RYU N", - "Sgk", - "Shirayuki", - "Suiato", - "Sujiniku", - "TAKAHASHI Shuuji", - "Tokoroten", - "しぃ", - "ネイ", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "項目", - "UNNAMED_KEY": "名前なし", - "TODAY": "今日", - "DUPLICATE_BLOCK": "複製", - "ADD_COMMENT": "コメントを追加", - "REMOVE_COMMENT": "コメントを削除", - "DUPLICATE_COMMENT": "コメントを複製", - "EXTERNAL_INPUTS": "外部入力", - "INLINE_INPUTS": "インライン入力", - "DELETE_BLOCK": "ブロックを削除", - "DELETE_X_BLOCKS": "%1個のブロックを削除", - "DELETE_ALL_BLOCKS": "%1個あるすべてのブロックを削除しますか?", - "CLEAN_UP": "ブロックを整理する", - "COLLAPSE_BLOCK": "ブロックを折りたたむ", - "COLLAPSE_ALL": "ブロックを折りたたむ", - "EXPAND_BLOCK": "ブロックを展開する", - "EXPAND_ALL": "ブロックを展開する", - "DISABLE_BLOCK": "ブロックを無効にする", - "ENABLE_BLOCK": "ブロックを有効にする", - "HELP": "ヘルプ", - "UNDO": "取り消す", - "REDO": "やり直す", - "CHANGE_VALUE_TITLE": "値を変える:", - "RENAME_VARIABLE": "変数の名前を変える…", - "RENAME_VARIABLE_TITLE": "選択した%1個すべての変数の名前を変える:", - "NEW_VARIABLE": "変数の作成…", - "NEW_STRING_VARIABLE": "文字列の変数を作る...", - "NEW_NUMBER_VARIABLE": "数の変数を作る...", - "NEW_COLOUR_VARIABLE": "色の変数を作る...", - "NEW_VARIABLE_TYPE_TITLE": "新しい変数の型:", - "NEW_VARIABLE_TITLE": "新しい変数の名前:", - "VARIABLE_ALREADY_EXISTS": "変数名 '%1' は既に存在しています。", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%2' 型の '%1' という名前の変数が既に存在します。", - "DELETE_VARIABLE_CONFIRMATION": "%1か所で使われている変数 '%2' を削除しますか?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "変数 '%1' は関数 '%2' の定義の一部であるため、削除できません", - "DELETE_VARIABLE": "変数 '%1' を削除", - "COLOUR_PICKER_HELPURL": "https://ja.wikipedia.org/wiki/色", - "COLOUR_PICKER_TOOLTIP": "パレットから色を選んでください。", - "COLOUR_RANDOM_TITLE": "ランダムな色", - "COLOUR_RANDOM_TOOLTIP": "ランダムに色を選ぶ。", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "色:", - "COLOUR_RGB_RED": "赤", - "COLOUR_RGB_GREEN": "緑", - "COLOUR_RGB_BLUE": "青", - "COLOUR_RGB_TOOLTIP": "赤、緑、および青の指定された量で色を作成します。すべての値は 0 ~ 100 の間でなければなりません。", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "ブレンド", - "COLOUR_BLEND_COLOUR1": "色 1", - "COLOUR_BLEND_COLOUR2": "色 2", - "COLOUR_BLEND_RATIO": "比率", - "COLOUR_BLEND_TOOLTIP": "2色を与えられた比率(0.0~1.0)で混ぜます。", - "CONTROLS_REPEAT_HELPURL": "https://ja.wikipedia.org/wiki/for文", - "CONTROLS_REPEAT_TITLE": "%1 回繰り返す", - "CONTROLS_REPEAT_INPUT_DO": "実行", - "CONTROLS_REPEAT_TOOLTIP": "いくつかのステートメントを数回実行します。", - "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "繰り返す:続ける条件", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "繰り返す:終わる条件", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "値がtrueの間、いくつかのステートメントを実行する。", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "値がfalseの間、いくつかのステートメントを実行する。", - "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", - "CONTROLS_FOR_TOOLTIP": "変数 '%1' が開始番号から終了番号まで指定した間隔での値をとって、指定したブロックを実行する。", - "CONTROLS_FOR_TITLE": "%1 を %2 から %3 まで %4 ずつカウントする", - "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", - "CONTROLS_FOREACH_TITLE": "リスト%2の各項目%1について", - "CONTROLS_FOREACH_TOOLTIP": "リストの各項目について、その項目を変数'%1'として、いくつかのステートメントを実行します。", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ループから抜け出す", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ループの次の反復処理を続行します", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "入っているループから抜け出します。", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "このループの残りの部分をスキップして、ループの繰り返しを続けます。", - "CONTROLS_FLOW_STATEMENTS_WARNING": "注意: このブロックは、ループ内でのみ使用できます。", - "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", - "CONTROLS_IF_TOOLTIP_1": "値が true の場合、ステートメントを実行します。", - "CONTROLS_IF_TOOLTIP_2": "値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合は、2番目のステートメントのブロックを実行します。", - "CONTROLS_IF_TOOLTIP_3": "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。", - "CONTROLS_IF_TOOLTIP_4": "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。すべての値が true でない場合は、最後のステートメントのブロックを実行します。", - "CONTROLS_IF_MSG_IF": "もし", - "CONTROLS_IF_MSG_ELSEIF": "そうでなくもし", - "CONTROLS_IF_MSG_ELSE": "そうでなければ", - "CONTROLS_IF_IF_TOOLTIP": "追加、削除、またはセクションを順序変更して、ブロックをこれを再構成します。", - "CONTROLS_IF_ELSEIF_TOOLTIP": "「もしも」のブロックに条件を追加します。", - "CONTROLS_IF_ELSE_TOOLTIP": "Ifブロックに、すべてをキャッチする条件を追加。", - "LOGIC_COMPARE_HELPURL": "https://ja.wikipedia.org/wiki/不等式", - "LOGIC_COMPARE_TOOLTIP_EQ": "両方の入力が互いに等しい場合に true を返します。", - "LOGIC_COMPARE_TOOLTIP_NEQ": "両方の入力が互いに等しくない場合に true を返します。", - "LOGIC_COMPARE_TOOLTIP_LT": "最初の入力が 2 番目の入力よりも小さい場合は true を返します。", - "LOGIC_COMPARE_TOOLTIP_LTE": "最初の入力が 2 番目の入力以下の場合に true を返します。", - "LOGIC_COMPARE_TOOLTIP_GT": "最初の入力が 2 番目の入力よりも大きい場合は true を返します。", - "LOGIC_COMPARE_TOOLTIP_GTE": "最初の入力が 2 番目の入力以上の場合に true を返します。", - "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", - "LOGIC_OPERATION_TOOLTIP_AND": "両方の入力が true のときに true を返します。", - "LOGIC_OPERATION_AND": "かつ", - "LOGIC_OPERATION_TOOLTIP_OR": "少なくとも 1 つの入力が true のときに true を返します。", - "LOGIC_OPERATION_OR": "または", - "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", - "LOGIC_NEGATE_TITLE": "%1ではない", - "LOGIC_NEGATE_TOOLTIP": "入力が false の場合は、true を返します。入力が true の場合は false を返します。", - "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", - "LOGIC_BOOLEAN_TRUE": "true", - "LOGIC_BOOLEAN_FALSE": "false", - "LOGIC_BOOLEAN_TOOLTIP": "true または false を返します。", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "null を返します。", - "LOGIC_TERNARY_HELPURL": "https://ja.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "テスト", - "LOGIC_TERNARY_IF_TRUE": "true の場合", - "LOGIC_TERNARY_IF_FALSE": "false の場合", - "LOGIC_TERNARY_TOOLTIP": "'テスト' の条件をチェックします。条件が true の場合、'true' の値を返します。それ以外の場合 'false' のを返します。", - "MATH_NUMBER_HELPURL": "https://ja.wikipedia.org/wiki/数", - "MATH_NUMBER_TOOLTIP": "数です。", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://ja.wikipedia.org/wiki/算術", - "MATH_ARITHMETIC_TOOLTIP_ADD": "2 つの数の合計を返します。", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "2 つの数の差を返します。", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "2 つの数の積を返します。", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "2 つの数の商を返します。", - "MATH_ARITHMETIC_TOOLTIP_POWER": "最初の数を2 番目の値で累乗した結果を返します。", - "MATH_SINGLE_HELPURL": "https://ja.wikipedia.org/wiki/平方根", - "MATH_SINGLE_OP_ROOT": "平方根", - "MATH_SINGLE_TOOLTIP_ROOT": "平方根を返す。", - "MATH_SINGLE_OP_ABSOLUTE": "絶対値", - "MATH_SINGLE_TOOLTIP_ABS": "絶対値を返す。", - "MATH_SINGLE_TOOLTIP_NEG": "負の数を返す。", - "MATH_SINGLE_TOOLTIP_LN": "数値の自然対数を返す。", - "MATH_SINGLE_TOOLTIP_LOG10": "底が10の対数を返す。", - "MATH_SINGLE_TOOLTIP_EXP": "ネイピア数eの数値乗を返す。", - "MATH_SINGLE_TOOLTIP_POW10": "10の数値乗を返す。", - "MATH_TRIG_HELPURL": "https://ja.wikipedia.org/wiki/三角関数", - "MATH_TRIG_TOOLTIP_SIN": "(ラジアンではなく)度数の正弦(sin)を返す。", - "MATH_TRIG_TOOLTIP_COS": "(ラジアンではなく)度数の余弦(cosin)を返す。", - "MATH_TRIG_TOOLTIP_TAN": "(ラジアンではなく)度数の正接(tan)を返す。", - "MATH_TRIG_TOOLTIP_ASIN": "アークサイン(arcsin)を返す。", - "MATH_TRIG_TOOLTIP_ACOS": "アークコサイン(arccosin)を返す。", - "MATH_TRIG_TOOLTIP_ATAN": "アークタンジェント(arctan)を返す。", - "MATH_CONSTANT_HELPURL": "https://ja.wikipedia.org/wiki/数学定数", - "MATH_CONSTANT_TOOLTIP": "いずれかの共通の定数のを返す: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (無限).", - "MATH_IS_EVEN": "は偶数", - "MATH_IS_ODD": "は奇数", - "MATH_IS_PRIME": "は素数", - "MATH_IS_WHOLE": "は整数", - "MATH_IS_POSITIVE": "は正", - "MATH_IS_NEGATIVE": "は負", - "MATH_IS_DIVISIBLE_BY": "は以下で割りきれる:", - "MATH_IS_TOOLTIP": "数字が、偶数、奇数、素数、整数、正数、負数、または特定の数で割り切れるかどうかを判定し、true か false を返します。", - "MATH_CHANGE_HELPURL": "https://ja.wikipedia.org/wiki/加法", - "MATH_CHANGE_TITLE": "%1 を %2 増やす", - "MATH_CHANGE_TOOLTIP": "変数'%1'に数をたす。", - "MATH_ROUND_HELPURL": "https://ja.wikipedia.org/wiki/端数処理", - "MATH_ROUND_TOOLTIP": "数値を切り上げるか切り捨てる", - "MATH_ROUND_OPERATOR_ROUND": "四捨五入", - "MATH_ROUND_OPERATOR_ROUNDUP": "切り上げ", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "切り捨て", - "MATH_ONLIST_OPERATOR_SUM": "リストの合計", - "MATH_ONLIST_TOOLTIP_SUM": "リストの数値を足して返す。", - "MATH_ONLIST_OPERATOR_MIN": "リストの最小値", - "MATH_ONLIST_TOOLTIP_MIN": "リストの最小値を返す。", - "MATH_ONLIST_OPERATOR_MAX": "リストの最大値", - "MATH_ONLIST_TOOLTIP_MAX": "リストの最大値を返す。", - "MATH_ONLIST_OPERATOR_AVERAGE": "リストの平均", - "MATH_ONLIST_TOOLTIP_AVERAGE": "リストの数値の平均 (算術平均) を返す。", - "MATH_ONLIST_OPERATOR_MEDIAN": "リストの中央値", - "MATH_ONLIST_TOOLTIP_MEDIAN": "リストの中央値を返す。", - "MATH_ONLIST_OPERATOR_MODE": "リストの最頻値", - "MATH_ONLIST_TOOLTIP_MODE": "リスト中の最頻項目のリストを返す。", - "MATH_ONLIST_OPERATOR_STD_DEV": "リストの標準偏差", - "MATH_ONLIST_TOOLTIP_STD_DEV": "リストの標準偏差を返す。", - "MATH_ONLIST_OPERATOR_RANDOM": "リストからランダムに選ばれた項目", - "MATH_ONLIST_TOOLTIP_RANDOM": "リストからランダムに選ばれた要素を返す。", - "MATH_MODULO_HELPURL": "https://ja.wikipedia.org/wiki/剰余演算", - "MATH_MODULO_TITLE": "%1÷%2の余り", - "MATH_MODULO_TOOLTIP": "2つの数値の割り算の余りを返す。", - "MATH_CONSTRAIN_HELPURL": "https://en.wikipedia.org/wiki/Clamping_(graphics)", - "MATH_CONSTRAIN_TITLE": "%1 を %2 以上 %3 以下の範囲に制限", - "MATH_CONSTRAIN_TOOLTIP": "指定した上限と下限の間に値を制限する(上限と下限の値を含む)。", - "MATH_RANDOM_INT_HELPURL": "https://ja.wikipedia.org/wiki/疑似乱数", - "MATH_RANDOM_INT_TITLE": "%1から%2までのランダムな整数", - "MATH_RANDOM_INT_TOOLTIP": "指定された(上下限を含む)範囲のランダムな整数を返します。", - "MATH_RANDOM_FLOAT_HELPURL": "https://ja.wikipedia.org/wiki/疑似乱数", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "1未満の正の乱数", - "MATH_RANDOM_FLOAT_TOOLTIP": "0.0以上で1.0未満の範囲の乱数を返します。", - "MATH_ATAN2_HELPURL": "https://ja.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "X:%1 Y:%2のatan2", - "MATH_ATAN2_TOOLTIP": "アークタンジェントを用いて、点 (X, Y) の角度を -180度から 180度で返します。", - "TEXT_TEXT_HELPURL": "https://ja.wikipedia.org/wiki/文字列", - "TEXT_TEXT_TOOLTIP": "文字、単語、または行のテキスト。", - "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", - "TEXT_JOIN_TITLE_CREATEWITH": "テキストの作成:", - "TEXT_JOIN_TOOLTIP": "任意の数の項目一部を一緒に接合してテキストを作成。", - "TEXT_CREATE_JOIN_TITLE_JOIN": "結合", - "TEXT_CREATE_JOIN_TOOLTIP": "セクションを追加、削除、または順序変更して、ブロックを再構成。", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "テキストへ項目を追加。", - "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_APPEND_TITLE": "項目 %1 へテキストを追加 %2", - "TEXT_APPEND_TOOLTIP": "変数 '%1' にテキストを追加。", - "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_LENGTH_TITLE": "%1の長さ", - "TEXT_LENGTH_TOOLTIP": "与えられたテキストの(スペースを含む)文字数を返す。", - "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", - "TEXT_ISEMPTY_TITLE": "%1が空", - "TEXT_ISEMPTY_TOOLTIP": "与えられたテキストが空の場合は true を返す。", - "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", - "TEXT_INDEXOF_TOOLTIP": "二番目のテキストの中で一番目のテキストが最初/最後に出現したインデックスを返す。テキストが見つからない場合は%1を返す。", - "TEXT_INDEXOF_TITLE": "テキスト %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "で以下のテキストの最初の出現箇所を検索:", - "TEXT_INDEXOF_OPERATOR_LAST": "で以下のテキストの最後の出現箇所を検索:", - "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", - "TEXT_CHARAT_TITLE": "テキスト %1 %2", - "TEXT_CHARAT_FROM_START": "の、以下の数字番目の文字:", - "TEXT_CHARAT_FROM_END": "の、後ろから以下の数字番目の文字:", - "TEXT_CHARAT_FIRST": "最初の文字を得る", - "TEXT_CHARAT_LAST": "最後の文字を得る", - "TEXT_CHARAT_RANDOM": "ランダムな文字を得る", - "TEXT_CHARAT_TAIL": "", - "TEXT_CHARAT_TOOLTIP": "指定された位置に文字を返します。", - "TEXT_GET_SUBSTRING_TOOLTIP": "テキストの指定部分を返します。", - "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "テキスト", - "TEXT_GET_SUBSTRING_START_FROM_START": "の部分文字列を取得;開始位置:", - "TEXT_GET_SUBSTRING_START_FROM_END": "の部分文字列を取得;開始位置:後ろから", - "TEXT_GET_SUBSTRING_START_FIRST": "の部分文字列を取得;最初から", - "TEXT_GET_SUBSTRING_END_FROM_START": "終了位置:", - "TEXT_GET_SUBSTRING_END_FROM_END": "終了位置:後ろから", - "TEXT_GET_SUBSTRING_END_LAST": "最後の文字", - "TEXT_GET_SUBSTRING_TAIL": "", - "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", - "TEXT_CHANGECASE_TOOLTIP": "別のケースに、テキストのコピーを返します。", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "大文字に", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "小文字に", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "タイトル ケースに", - "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", - "TEXT_TRIM_TOOLTIP": "スペースを 1 つまたは両方の端から削除したのち、テキストのコピーを返します。", - "TEXT_TRIM_OPERATOR_BOTH": "両端のスペースを取り除く", - "TEXT_TRIM_OPERATOR_LEFT": "左端のスペースを取り除く", - "TEXT_TRIM_OPERATOR_RIGHT": "右端のスペースを取り除く", - "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", - "TEXT_PRINT_TITLE": "%1 を表示", - "TEXT_PRINT_TOOLTIP": "指定したテキスト、番号または他の値を印刷します。", - "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", - "TEXT_PROMPT_TYPE_TEXT": "メッセージでテキスト入力を求める", - "TEXT_PROMPT_TYPE_NUMBER": "メッセージで番号の入力を求める", - "TEXT_PROMPT_TOOLTIP_NUMBER": "ユーザーに数値のインプットを求める。", - "TEXT_PROMPT_TOOLTIP_TEXT": "ユーザーにテキスト入力を求める。", - "TEXT_COUNT_MESSAGE0": "%2に含まれる%1の数を数える", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "とある文が別の文のなかに使われた回数を数える。", - "TEXT_REPLACE_MESSAGE0": "%3に含まれる%1を%2に置換", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "文に含まれるキーワードを置換する。", - "TEXT_REVERSE_MESSAGE0": "%1を逆順に", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "文の文字を逆順にする。", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "空のリストを作成", - "LISTS_CREATE_EMPTY_TOOLTIP": "長さ0でデータ・レコードを含まない空のリストを返す", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "項目数が不定のリストを作成。", - "LISTS_CREATE_WITH_INPUT_WITH": "以下を使ってリストを作成:", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "リスト", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "追加、削除、またはセクションの順序変更をして、このリスト・ブロックを再構成する。", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "リストに項目を追加。", - "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_REPEAT_TOOLTIP": "与えられた値を指定された回数繰り返してリストを作成。", - "LISTS_REPEAT_TITLE": "項目%1を%2回繰り返したリストを作成", - "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", - "LISTS_LENGTH_TITLE": "%1の長さ", - "LISTS_LENGTH_TOOLTIP": "リストの長さを返します。", - "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", - "LISTS_ISEMPTY_TITLE": "%1が空", - "LISTS_ISEMPTY_TOOLTIP": "リストが空の場合は、true を返します。", - "LISTS_INLIST": "リスト", - "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", - "LISTS_INDEX_OF_FIRST": "で以下のアイテムの最初の出現箇所を検索:", - "LISTS_INDEX_OF_LAST": "で以下のテキストの最後の出現箇所を検索:", - "LISTS_INDEX_OF_TOOLTIP": "リスト項目の最初/最後に出現するインデックス位置を返します。項目が見つからない場合は %1 を返します。", - "LISTS_GET_INDEX_GET": "取得", - "LISTS_GET_INDEX_GET_REMOVE": "取得して削除", - "LISTS_GET_INDEX_REMOVE": "削除", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "位置:後ろから", - "LISTS_GET_INDEX_FIRST": "最初", - "LISTS_GET_INDEX_LAST": "最後", - "LISTS_GET_INDEX_RANDOM": "ランダム", - "LISTS_GET_INDEX_TAIL": "", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 は、最初の項目です。", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 は、最後の項目です。", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "リスト内の指定位置にある項目を返します。", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "リストの最初の項目を返します。", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "リストの最後の項目を返します。", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "ランダム アイテム リストを返します。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "リスト内の指定位置にある項目を削除し、返します。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "リスト内の最初の項目を削除し返します。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "リスト内の最後の項目を削除したあと返します。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "リストのランダムなアイテムを削除し返します。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "リスト内の指定された項目を削除します。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "リスト内の最初の項目を削除します。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "リスト内の最後の項目を削除します。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "リスト内にあるアイテムをランダムに削除します。", - "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", - "LISTS_SET_INDEX_SET": "セット", - "LISTS_SET_INDEX_INSERT": "挿入位置:", - "LISTS_SET_INDEX_INPUT_TO": "値:", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "リスト内の指定された位置に項目を設定します。", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "リスト内に最初の項目を設定します。", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "リスト内の最後の項目を設定します。", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "リスト内にランダムなアイテムを設定します。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "リスト内の指定位置に項目を挿入します。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "リストの先頭に項目を挿入します。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "リストの末尾に項目を追加します。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "リストに項目をランダムに挿入します。", - "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", - "LISTS_GET_SUBLIST_START_FROM_START": "# からサブディレクトリのリストを取得します。", - "LISTS_GET_SUBLIST_START_FROM_END": "端から #のサブリストを取得します。", - "LISTS_GET_SUBLIST_START_FIRST": "最初からサブリストを取得する。", - "LISTS_GET_SUBLIST_END_FROM_START": "終了位置:", - "LISTS_GET_SUBLIST_END_FROM_END": "終了位置:後ろから", - "LISTS_GET_SUBLIST_END_LAST": "最後まで", - "LISTS_GET_SUBLIST_TAIL": "", - "LISTS_GET_SUBLIST_TOOLTIP": "リストの指定された部分のコピーを作成します。", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "%1 ( %2 ) に %3 を並び替える", - "LISTS_SORT_TOOLTIP": "リストのコピーを並べ替え", - "LISTS_SORT_ORDER_ASCENDING": "昇順", - "LISTS_SORT_ORDER_DESCENDING": "降順", - "LISTS_SORT_TYPE_NUMERIC": "数値順", - "LISTS_SORT_TYPE_TEXT": "アルファベット順", - "LISTS_SORT_TYPE_IGNORECASE": "アルファベット順(大文字・小文字の区別無し)", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "テキストからリストを作る", - "LISTS_SPLIT_TEXT_FROM_LIST": "リストからテキストを作る", - "LISTS_SPLIT_WITH_DELIMITER": "区切り記号", - "LISTS_SPLIT_TOOLTIP_SPLIT": "テキストを区切り記号で分割したリストにする", - "LISTS_SPLIT_TOOLTIP_JOIN": "テキストのリストを区切り記号で区切られた一つのテキストにする", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "%1を逆順に", - "LISTS_REVERSE_TOOLTIP": "リストのコピーを逆順にする。", - "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", - "VARIABLES_GET_TOOLTIP": "この変数の値を返します。", - "VARIABLES_GET_CREATE_SET": "'セット%1を作成します。", - "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", - "VARIABLES_SET": "%1 に %2 をセット", - "VARIABLES_SET_TOOLTIP": "この入力を変数と等しくなるように設定します。", - "VARIABLES_SET_CREATE_GET": "'%1 を取得' を作成します。", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_DEFNORETURN_TITLE": "関数", - "PROCEDURES_DEFNORETURN_PROCEDURE": "何かする", - "PROCEDURES_BEFORE_PARAMS": "引数:", - "PROCEDURES_CALL_BEFORE_PARAMS": "引数:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "出力なしの関数を作成します。", - "PROCEDURES_DEFNORETURN_COMMENT": "この関数の説明…", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_DEFRETURN_RETURN": "返す", - "PROCEDURES_DEFRETURN_TOOLTIP": "一つの出力を持つ関数を作成します。", - "PROCEDURES_ALLOW_STATEMENTS": "ステートメントを許可", - "PROCEDURES_DEF_DUPLICATE_WARNING": "警告: この関数には重複するパラメーターがあります。", - "PROCEDURES_CALLNORETURN_HELPURL": "https://ja.wikipedia.org/wiki/サブルーチン", - "PROCEDURES_CALLNORETURN_TOOLTIP": "ユーザー定義関数 '%1' を実行します。", - "PROCEDURES_CALLRETURN_HELPURL": "https://ja.wikipedia.org/wiki/サブルーチン", - "PROCEDURES_CALLRETURN_TOOLTIP": "ユーザー定義関数 '%1' を実行し、その出力を使用します。", - "PROCEDURES_MUTATORCONTAINER_TITLE": "入力", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "この関数への入力の追加、削除、順番変更。", - "PROCEDURES_MUTATORARG_TITLE": "入力名:", - "PROCEDURES_MUTATORARG_TOOLTIP": "関数への入力の追加。", - "PROCEDURES_HIGHLIGHT_DEF": "関数の内容を強調表示します。", - "PROCEDURES_CREATE_DO": "'%1' を作成", - "PROCEDURES_IFRETURN_TOOLTIP": "1番目の値が true の場合、2番目の値を返します。", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "警告: このブロックは、関数定義内でのみ使用できます。", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "ここへ入力", - "WORKSPACE_ARIA_LABEL": "Blocklyワークスペース", - "COLLAPSED_WARNINGS_WARNING": "つぶしたブロックには警告が入っています。", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "キャンセル" -} +{ + "@metadata": { + "authors": [ + "Aefgh39622", + "Gimite", + "Gulpin", + "Kebhr", + "Kkairri", + "Oda", + "Omotecho", + "Otokoume", + "RYU N", + "Sgk", + "Shirayuki", + "Suiato", + "Sujiniku", + "TAKAHASHI Shuuji", + "Tokoroten", + "しぃ", + "ネイ", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "項目", + "UNNAMED_KEY": "名前なし", + "TODAY": "今日", + "DUPLICATE_BLOCK": "複製", + "ADD_COMMENT": "コメントを追加", + "REMOVE_COMMENT": "コメントを削除", + "DUPLICATE_COMMENT": "コメントを複製", + "EXTERNAL_INPUTS": "外部入力", + "INLINE_INPUTS": "インライン入力", + "DELETE_BLOCK": "ブロックを削除", + "DELETE_X_BLOCKS": "%1個のブロックを削除", + "DELETE_ALL_BLOCKS": "%1個あるすべてのブロックを削除しますか?", + "CLEAN_UP": "ブロックを整理する", + "COLLAPSE_BLOCK": "ブロックを折りたたむ", + "COLLAPSE_ALL": "ブロックを折りたたむ", + "EXPAND_BLOCK": "ブロックを展開する", + "EXPAND_ALL": "ブロックを展開する", + "DISABLE_BLOCK": "ブロックを無効にする", + "ENABLE_BLOCK": "ブロックを有効にする", + "HELP": "ヘルプ", + "UNDO": "取り消す", + "REDO": "やり直す", + "CHANGE_VALUE_TITLE": "値を変える:", + "RENAME_VARIABLE": "変数の名前を変える…", + "RENAME_VARIABLE_TITLE": "選択した%1個すべての変数の名前を変える:", + "NEW_VARIABLE": "変数の作成…", + "NEW_STRING_VARIABLE": "文字列の変数を作る...", + "NEW_NUMBER_VARIABLE": "数の変数を作る...", + "NEW_COLOUR_VARIABLE": "色の変数を作る...", + "NEW_VARIABLE_TYPE_TITLE": "新しい変数の型:", + "NEW_VARIABLE_TITLE": "新しい変数の名前:", + "VARIABLE_ALREADY_EXISTS": "変数名 '%1' は既に存在しています。", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%2' 型の '%1' という名前の変数が既に存在します。", + "DELETE_VARIABLE_CONFIRMATION": "%1か所で使われている変数 '%2' を削除しますか?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "変数 '%1' は関数 '%2' の定義の一部であるため、削除できません", + "DELETE_VARIABLE": "変数 '%1' を削除", + "COLOUR_PICKER_HELPURL": "https://ja.wikipedia.org/wiki/色", + "COLOUR_PICKER_TOOLTIP": "パレットから色を選んでください。", + "COLOUR_RANDOM_TITLE": "ランダムな色", + "COLOUR_RANDOM_TOOLTIP": "ランダムに色を選ぶ。", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "色:", + "COLOUR_RGB_RED": "赤", + "COLOUR_RGB_GREEN": "緑", + "COLOUR_RGB_BLUE": "青", + "COLOUR_RGB_TOOLTIP": "赤、緑、および青の指定された量で色を作成します。すべての値は 0 ~ 100 の間でなければなりません。", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "ブレンド", + "COLOUR_BLEND_COLOUR1": "色 1", + "COLOUR_BLEND_COLOUR2": "色 2", + "COLOUR_BLEND_RATIO": "比率", + "COLOUR_BLEND_TOOLTIP": "2色を与えられた比率(0.0~1.0)で混ぜます。", + "CONTROLS_REPEAT_HELPURL": "https://ja.wikipedia.org/wiki/for文", + "CONTROLS_REPEAT_TITLE": "%1 回繰り返す", + "CONTROLS_REPEAT_INPUT_DO": "実行", + "CONTROLS_REPEAT_TOOLTIP": "いくつかのステートメントを数回実行します。", + "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "繰り返す:続ける条件", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "繰り返す:終わる条件", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "値がtrueの間、いくつかのステートメントを実行する。", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "値がfalseの間、いくつかのステートメントを実行する。", + "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", + "CONTROLS_FOR_TOOLTIP": "変数 '%1' が開始番号から終了番号まで指定した間隔での値をとって、指定したブロックを実行する。", + "CONTROLS_FOR_TITLE": "%1 を %2 から %3 まで %4 ずつカウントする", + "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", + "CONTROLS_FOREACH_TITLE": "リスト%2の各項目%1について", + "CONTROLS_FOREACH_TOOLTIP": "リストの各項目について、その項目を変数'%1'として、いくつかのステートメントを実行します。", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ループから抜け出す", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ループの次の反復処理を続行します", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "入っているループから抜け出します。", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "このループの残りの部分をスキップして、ループの繰り返しを続けます。", + "CONTROLS_FLOW_STATEMENTS_WARNING": "注意: このブロックは、ループ内でのみ使用できます。", + "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", + "CONTROLS_IF_TOOLTIP_1": "値が true の場合、ステートメントを実行します。", + "CONTROLS_IF_TOOLTIP_2": "値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合は、2番目のステートメントのブロックを実行します。", + "CONTROLS_IF_TOOLTIP_3": "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。", + "CONTROLS_IF_TOOLTIP_4": "最初の値が true の場合は、最初のステートメントのブロックを実行します。それ以外の場合で、2番目の値が true の場合は、2番目のステートメントのブロックを実行します。すべての値が true でない場合は、最後のステートメントのブロックを実行します。", + "CONTROLS_IF_MSG_IF": "もし", + "CONTROLS_IF_MSG_ELSEIF": "そうでなくもし", + "CONTROLS_IF_MSG_ELSE": "そうでなければ", + "CONTROLS_IF_IF_TOOLTIP": "追加、削除、またはセクションを順序変更して、ブロックをこれを再構成します。", + "CONTROLS_IF_ELSEIF_TOOLTIP": "「もしも」のブロックに条件を追加します。", + "CONTROLS_IF_ELSE_TOOLTIP": "Ifブロックに、すべてをキャッチする条件を追加。", + "LOGIC_COMPARE_HELPURL": "https://ja.wikipedia.org/wiki/不等式", + "LOGIC_COMPARE_TOOLTIP_EQ": "両方の入力が互いに等しい場合に true を返します。", + "LOGIC_COMPARE_TOOLTIP_NEQ": "両方の入力が互いに等しくない場合に true を返します。", + "LOGIC_COMPARE_TOOLTIP_LT": "最初の入力が 2 番目の入力よりも小さい場合は true を返します。", + "LOGIC_COMPARE_TOOLTIP_LTE": "最初の入力が 2 番目の入力以下の場合に true を返します。", + "LOGIC_COMPARE_TOOLTIP_GT": "最初の入力が 2 番目の入力よりも大きい場合は true を返します。", + "LOGIC_COMPARE_TOOLTIP_GTE": "最初の入力が 2 番目の入力以上の場合に true を返します。", + "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", + "LOGIC_OPERATION_TOOLTIP_AND": "両方の入力が true のときに true を返します。", + "LOGIC_OPERATION_AND": "かつ", + "LOGIC_OPERATION_TOOLTIP_OR": "少なくとも 1 つの入力が true のときに true を返します。", + "LOGIC_OPERATION_OR": "または", + "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", + "LOGIC_NEGATE_TITLE": "%1ではない", + "LOGIC_NEGATE_TOOLTIP": "入力が false の場合は、true を返します。入力が true の場合は false を返します。", + "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", + "LOGIC_BOOLEAN_TRUE": "true", + "LOGIC_BOOLEAN_FALSE": "false", + "LOGIC_BOOLEAN_TOOLTIP": "true または false を返します。", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "null を返します。", + "LOGIC_TERNARY_HELPURL": "https://ja.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "テスト", + "LOGIC_TERNARY_IF_TRUE": "true の場合", + "LOGIC_TERNARY_IF_FALSE": "false の場合", + "LOGIC_TERNARY_TOOLTIP": "'テスト' の条件をチェックします。条件が true の場合、'true' の値を返します。それ以外の場合 'false' のを返します。", + "MATH_NUMBER_HELPURL": "https://ja.wikipedia.org/wiki/数", + "MATH_NUMBER_TOOLTIP": "数です。", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://ja.wikipedia.org/wiki/算術", + "MATH_ARITHMETIC_TOOLTIP_ADD": "2 つの数の合計を返します。", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "2 つの数の差を返します。", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "2 つの数の積を返します。", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "2 つの数の商を返します。", + "MATH_ARITHMETIC_TOOLTIP_POWER": "最初の数を2 番目の値で累乗した結果を返します。", + "MATH_SINGLE_HELPURL": "https://ja.wikipedia.org/wiki/平方根", + "MATH_SINGLE_OP_ROOT": "平方根", + "MATH_SINGLE_TOOLTIP_ROOT": "平方根を返す。", + "MATH_SINGLE_OP_ABSOLUTE": "絶対値", + "MATH_SINGLE_TOOLTIP_ABS": "絶対値を返す。", + "MATH_SINGLE_TOOLTIP_NEG": "負の数を返す。", + "MATH_SINGLE_TOOLTIP_LN": "数値の自然対数を返す。", + "MATH_SINGLE_TOOLTIP_LOG10": "底が10の対数を返す。", + "MATH_SINGLE_TOOLTIP_EXP": "ネイピア数eの数値乗を返す。", + "MATH_SINGLE_TOOLTIP_POW10": "10の数値乗を返す。", + "MATH_TRIG_HELPURL": "https://ja.wikipedia.org/wiki/三角関数", + "MATH_TRIG_TOOLTIP_SIN": "(ラジアンではなく)度数の正弦(sin)を返す。", + "MATH_TRIG_TOOLTIP_COS": "(ラジアンではなく)度数の余弦(cosin)を返す。", + "MATH_TRIG_TOOLTIP_TAN": "(ラジアンではなく)度数の正接(tan)を返す。", + "MATH_TRIG_TOOLTIP_ASIN": "アークサイン(arcsin)を返す。", + "MATH_TRIG_TOOLTIP_ACOS": "アークコサイン(arccosin)を返す。", + "MATH_TRIG_TOOLTIP_ATAN": "アークタンジェント(arctan)を返す。", + "MATH_CONSTANT_HELPURL": "https://ja.wikipedia.org/wiki/数学定数", + "MATH_CONSTANT_TOOLTIP": "いずれかの共通の定数のを返す: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (無限).", + "MATH_IS_EVEN": "は偶数", + "MATH_IS_ODD": "は奇数", + "MATH_IS_PRIME": "は素数", + "MATH_IS_WHOLE": "は整数", + "MATH_IS_POSITIVE": "は正", + "MATH_IS_NEGATIVE": "は負", + "MATH_IS_DIVISIBLE_BY": "は以下で割りきれる:", + "MATH_IS_TOOLTIP": "数字が、偶数、奇数、素数、整数、正数、負数、または特定の数で割り切れるかどうかを判定し、true か false を返します。", + "MATH_CHANGE_HELPURL": "https://ja.wikipedia.org/wiki/加法", + "MATH_CHANGE_TITLE": "%1 を %2 増やす", + "MATH_CHANGE_TOOLTIP": "変数'%1'に数をたす。", + "MATH_ROUND_HELPURL": "https://ja.wikipedia.org/wiki/端数処理", + "MATH_ROUND_TOOLTIP": "数値を切り上げるか切り捨てる", + "MATH_ROUND_OPERATOR_ROUND": "四捨五入", + "MATH_ROUND_OPERATOR_ROUNDUP": "切り上げ", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "切り捨て", + "MATH_ONLIST_OPERATOR_SUM": "リストの合計", + "MATH_ONLIST_TOOLTIP_SUM": "リストの数値を足して返す。", + "MATH_ONLIST_OPERATOR_MIN": "リストの最小値", + "MATH_ONLIST_TOOLTIP_MIN": "リストの最小値を返す。", + "MATH_ONLIST_OPERATOR_MAX": "リストの最大値", + "MATH_ONLIST_TOOLTIP_MAX": "リストの最大値を返す。", + "MATH_ONLIST_OPERATOR_AVERAGE": "リストの平均", + "MATH_ONLIST_TOOLTIP_AVERAGE": "リストの数値の平均 (算術平均) を返す。", + "MATH_ONLIST_OPERATOR_MEDIAN": "リストの中央値", + "MATH_ONLIST_TOOLTIP_MEDIAN": "リストの中央値を返す。", + "MATH_ONLIST_OPERATOR_MODE": "リストの最頻値", + "MATH_ONLIST_TOOLTIP_MODE": "リスト中の最頻項目のリストを返す。", + "MATH_ONLIST_OPERATOR_STD_DEV": "リストの標準偏差", + "MATH_ONLIST_TOOLTIP_STD_DEV": "リストの標準偏差を返す。", + "MATH_ONLIST_OPERATOR_RANDOM": "リストからランダムに選ばれた項目", + "MATH_ONLIST_TOOLTIP_RANDOM": "リストからランダムに選ばれた要素を返す。", + "MATH_MODULO_HELPURL": "https://ja.wikipedia.org/wiki/剰余演算", + "MATH_MODULO_TITLE": "%1÷%2の余り", + "MATH_MODULO_TOOLTIP": "2つの数値の割り算の余りを返す。", + "MATH_CONSTRAIN_HELPURL": "https://en.wikipedia.org/wiki/Clamping_(graphics)", + "MATH_CONSTRAIN_TITLE": "%1 を %2 以上 %3 以下の範囲に制限", + "MATH_CONSTRAIN_TOOLTIP": "指定した上限と下限の間に値を制限する(上限と下限の値を含む)。", + "MATH_RANDOM_INT_HELPURL": "https://ja.wikipedia.org/wiki/疑似乱数", + "MATH_RANDOM_INT_TITLE": "%1から%2までのランダムな整数", + "MATH_RANDOM_INT_TOOLTIP": "指定された(上下限を含む)範囲のランダムな整数を返します。", + "MATH_RANDOM_FLOAT_HELPURL": "https://ja.wikipedia.org/wiki/疑似乱数", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "1未満の正の乱数", + "MATH_RANDOM_FLOAT_TOOLTIP": "0.0以上で1.0未満の範囲の乱数を返します。", + "MATH_ATAN2_HELPURL": "https://ja.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "X:%1 Y:%2のatan2", + "MATH_ATAN2_TOOLTIP": "アークタンジェントを用いて、点 (X, Y) の角度を -180度から 180度で返します。", + "TEXT_TEXT_HELPURL": "https://ja.wikipedia.org/wiki/文字列", + "TEXT_TEXT_TOOLTIP": "文字、単語、または行のテキスト。", + "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", + "TEXT_JOIN_TITLE_CREATEWITH": "テキストの作成:", + "TEXT_JOIN_TOOLTIP": "任意の数の項目一部を一緒に接合してテキストを作成。", + "TEXT_CREATE_JOIN_TITLE_JOIN": "結合", + "TEXT_CREATE_JOIN_TOOLTIP": "セクションを追加、削除、または順序変更して、ブロックを再構成。", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "テキストへ項目を追加。", + "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_APPEND_TITLE": "項目 %1 へテキストを追加 %2", + "TEXT_APPEND_TOOLTIP": "変数 '%1' にテキストを追加。", + "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_LENGTH_TITLE": "%1の長さ", + "TEXT_LENGTH_TOOLTIP": "与えられたテキストの(スペースを含む)文字数を返す。", + "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", + "TEXT_ISEMPTY_TITLE": "%1が空", + "TEXT_ISEMPTY_TOOLTIP": "与えられたテキストが空の場合は true を返す。", + "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", + "TEXT_INDEXOF_TOOLTIP": "二番目のテキストの中で一番目のテキストが最初/最後に出現したインデックスを返す。テキストが見つからない場合は%1を返す。", + "TEXT_INDEXOF_TITLE": "テキスト %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "で以下のテキストの最初の出現箇所を検索:", + "TEXT_INDEXOF_OPERATOR_LAST": "で以下のテキストの最後の出現箇所を検索:", + "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", + "TEXT_CHARAT_TITLE": "テキスト %1 %2", + "TEXT_CHARAT_FROM_START": "の、以下の数字番目の文字:", + "TEXT_CHARAT_FROM_END": "の、後ろから以下の数字番目の文字:", + "TEXT_CHARAT_FIRST": "最初の文字を得る", + "TEXT_CHARAT_LAST": "最後の文字を得る", + "TEXT_CHARAT_RANDOM": "ランダムな文字を得る", + "TEXT_CHARAT_TAIL": "", + "TEXT_CHARAT_TOOLTIP": "指定された位置に文字を返します。", + "TEXT_GET_SUBSTRING_TOOLTIP": "テキストの指定部分を返します。", + "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "テキスト", + "TEXT_GET_SUBSTRING_START_FROM_START": "の部分文字列を取得;開始位置:", + "TEXT_GET_SUBSTRING_START_FROM_END": "の部分文字列を取得;開始位置:後ろから", + "TEXT_GET_SUBSTRING_START_FIRST": "の部分文字列を取得;最初から", + "TEXT_GET_SUBSTRING_END_FROM_START": "終了位置:", + "TEXT_GET_SUBSTRING_END_FROM_END": "終了位置:後ろから", + "TEXT_GET_SUBSTRING_END_LAST": "最後の文字", + "TEXT_GET_SUBSTRING_TAIL": "", + "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", + "TEXT_CHANGECASE_TOOLTIP": "別のケースに、テキストのコピーを返します。", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "大文字に", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "小文字に", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "タイトル ケースに", + "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", + "TEXT_TRIM_TOOLTIP": "スペースを 1 つまたは両方の端から削除したのち、テキストのコピーを返します。", + "TEXT_TRIM_OPERATOR_BOTH": "両端のスペースを取り除く", + "TEXT_TRIM_OPERATOR_LEFT": "左端のスペースを取り除く", + "TEXT_TRIM_OPERATOR_RIGHT": "右端のスペースを取り除く", + "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", + "TEXT_PRINT_TITLE": "%1 を表示", + "TEXT_PRINT_TOOLTIP": "指定したテキスト、番号または他の値を印刷します。", + "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", + "TEXT_PROMPT_TYPE_TEXT": "メッセージでテキスト入力を求める", + "TEXT_PROMPT_TYPE_NUMBER": "メッセージで番号の入力を求める", + "TEXT_PROMPT_TOOLTIP_NUMBER": "ユーザーに数値のインプットを求める。", + "TEXT_PROMPT_TOOLTIP_TEXT": "ユーザーにテキスト入力を求める。", + "TEXT_COUNT_MESSAGE0": "%2に含まれる%1の数を数える", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "とある文が別の文のなかに使われた回数を数える。", + "TEXT_REPLACE_MESSAGE0": "%3に含まれる%1を%2に置換", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "文に含まれるキーワードを置換する。", + "TEXT_REVERSE_MESSAGE0": "%1を逆順に", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "文の文字を逆順にする。", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "空のリストを作成", + "LISTS_CREATE_EMPTY_TOOLTIP": "長さ0でデータ・レコードを含まない空のリストを返す", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "項目数が不定のリストを作成。", + "LISTS_CREATE_WITH_INPUT_WITH": "以下を使ってリストを作成:", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "リスト", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "追加、削除、またはセクションの順序変更をして、このリスト・ブロックを再構成する。", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "リストに項目を追加。", + "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_REPEAT_TOOLTIP": "与えられた値を指定された回数繰り返してリストを作成。", + "LISTS_REPEAT_TITLE": "項目%1を%2回繰り返したリストを作成", + "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", + "LISTS_LENGTH_TITLE": "%1の長さ", + "LISTS_LENGTH_TOOLTIP": "リストの長さを返します。", + "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", + "LISTS_ISEMPTY_TITLE": "%1が空", + "LISTS_ISEMPTY_TOOLTIP": "リストが空の場合は、true を返します。", + "LISTS_INLIST": "リスト", + "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", + "LISTS_INDEX_OF_FIRST": "で以下のアイテムの最初の出現箇所を検索:", + "LISTS_INDEX_OF_LAST": "で以下のテキストの最後の出現箇所を検索:", + "LISTS_INDEX_OF_TOOLTIP": "リスト項目の最初/最後に出現するインデックス位置を返します。項目が見つからない場合は %1 を返します。", + "LISTS_GET_INDEX_GET": "取得", + "LISTS_GET_INDEX_GET_REMOVE": "取得して削除", + "LISTS_GET_INDEX_REMOVE": "削除", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "位置:後ろから", + "LISTS_GET_INDEX_FIRST": "最初", + "LISTS_GET_INDEX_LAST": "最後", + "LISTS_GET_INDEX_RANDOM": "ランダム", + "LISTS_GET_INDEX_TAIL": "", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 は、最初の項目です。", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 は、最後の項目です。", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "リスト内の指定位置にある項目を返します。", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "リストの最初の項目を返します。", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "リストの最後の項目を返します。", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "ランダム アイテム リストを返します。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "リスト内の指定位置にある項目を削除し、返します。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "リスト内の最初の項目を削除し返します。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "リスト内の最後の項目を削除したあと返します。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "リストのランダムなアイテムを削除し返します。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "リスト内の指定された項目を削除します。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "リスト内の最初の項目を削除します。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "リスト内の最後の項目を削除します。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "リスト内にあるアイテムをランダムに削除します。", + "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", + "LISTS_SET_INDEX_SET": "セット", + "LISTS_SET_INDEX_INSERT": "挿入位置:", + "LISTS_SET_INDEX_INPUT_TO": "値:", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "リスト内の指定された位置に項目を設定します。", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "リスト内に最初の項目を設定します。", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "リスト内の最後の項目を設定します。", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "リスト内にランダムなアイテムを設定します。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "リスト内の指定位置に項目を挿入します。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "リストの先頭に項目を挿入します。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "リストの末尾に項目を追加します。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "リストに項目をランダムに挿入します。", + "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", + "LISTS_GET_SUBLIST_START_FROM_START": "# からサブディレクトリのリストを取得します。", + "LISTS_GET_SUBLIST_START_FROM_END": "端から #のサブリストを取得します。", + "LISTS_GET_SUBLIST_START_FIRST": "最初からサブリストを取得する。", + "LISTS_GET_SUBLIST_END_FROM_START": "終了位置:", + "LISTS_GET_SUBLIST_END_FROM_END": "終了位置:後ろから", + "LISTS_GET_SUBLIST_END_LAST": "最後まで", + "LISTS_GET_SUBLIST_TAIL": "", + "LISTS_GET_SUBLIST_TOOLTIP": "リストの指定された部分のコピーを作成します。", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "%1 ( %2 ) に %3 を並び替える", + "LISTS_SORT_TOOLTIP": "リストのコピーを並べ替え", + "LISTS_SORT_ORDER_ASCENDING": "昇順", + "LISTS_SORT_ORDER_DESCENDING": "降順", + "LISTS_SORT_TYPE_NUMERIC": "数値順", + "LISTS_SORT_TYPE_TEXT": "アルファベット順", + "LISTS_SORT_TYPE_IGNORECASE": "アルファベット順(大文字・小文字の区別無し)", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "テキストからリストを作る", + "LISTS_SPLIT_TEXT_FROM_LIST": "リストからテキストを作る", + "LISTS_SPLIT_WITH_DELIMITER": "区切り記号", + "LISTS_SPLIT_TOOLTIP_SPLIT": "テキストを区切り記号で分割したリストにする", + "LISTS_SPLIT_TOOLTIP_JOIN": "テキストのリストを区切り記号で区切られた一つのテキストにする", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "%1を逆順に", + "LISTS_REVERSE_TOOLTIP": "リストのコピーを逆順にする。", + "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", + "VARIABLES_GET_TOOLTIP": "この変数の値を返します。", + "VARIABLES_GET_CREATE_SET": "'セット%1を作成します。", + "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", + "VARIABLES_SET": "%1 に %2 をセット", + "VARIABLES_SET_TOOLTIP": "この入力を変数と等しくなるように設定します。", + "VARIABLES_SET_CREATE_GET": "'%1 を取得' を作成します。", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_DEFNORETURN_TITLE": "関数", + "PROCEDURES_DEFNORETURN_PROCEDURE": "何かする", + "PROCEDURES_BEFORE_PARAMS": "引数:", + "PROCEDURES_CALL_BEFORE_PARAMS": "引数:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "出力なしの関数を作成します。", + "PROCEDURES_DEFNORETURN_COMMENT": "この関数の説明…", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_DEFRETURN_RETURN": "返す", + "PROCEDURES_DEFRETURN_TOOLTIP": "一つの出力を持つ関数を作成します。", + "PROCEDURES_ALLOW_STATEMENTS": "ステートメントを許可", + "PROCEDURES_DEF_DUPLICATE_WARNING": "警告: この関数には重複するパラメーターがあります。", + "PROCEDURES_CALLNORETURN_HELPURL": "https://ja.wikipedia.org/wiki/サブルーチン", + "PROCEDURES_CALLNORETURN_TOOLTIP": "ユーザー定義関数 '%1' を実行します。", + "PROCEDURES_CALLRETURN_HELPURL": "https://ja.wikipedia.org/wiki/サブルーチン", + "PROCEDURES_CALLRETURN_TOOLTIP": "ユーザー定義関数 '%1' を実行し、その出力を使用します。", + "PROCEDURES_MUTATORCONTAINER_TITLE": "入力", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "この関数への入力の追加、削除、順番変更。", + "PROCEDURES_MUTATORARG_TITLE": "入力名:", + "PROCEDURES_MUTATORARG_TOOLTIP": "関数への入力の追加。", + "PROCEDURES_HIGHLIGHT_DEF": "関数の内容を強調表示します。", + "PROCEDURES_CREATE_DO": "'%1' を作成", + "PROCEDURES_IFRETURN_TOOLTIP": "1番目の値が true の場合、2番目の値を返します。", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "警告: このブロックは、関数定義内でのみ使用できます。", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "ここへ入力", + "WORKSPACE_ARIA_LABEL": "Blocklyワークスペース", + "COLLAPSED_WARNINGS_WARNING": "つぶしたブロックには警告が入っています。", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "キャンセル" +} diff --git a/msg/json/ka.json b/msg/json/ka.json index 66847e0b218..03ba0312595 100644 --- a/msg/json/ka.json +++ b/msg/json/ka.json @@ -1,11 +1,11 @@ -{ - "@metadata": { - "authors": [ - "Otogi", - "Გიო ოქრო" - ] - }, - "ENABLE_BLOCK": "ბლოკის ჩართვა", - "MATH_ONLIST_OPERATOR_SUM": "სიის ჯამი", - "DIALOG_OK": "კარგი" -} +{ + "@metadata": { + "authors": [ + "Otogi", + "Გიო ოქრო" + ] + }, + "ENABLE_BLOCK": "ბლოკის ჩართვა", + "MATH_ONLIST_OPERATOR_SUM": "სიის ჯამი", + "DIALOG_OK": "კარგი" +} diff --git a/msg/json/kab.json b/msg/json/kab.json index 1f9485f58b5..caa1bc5f584 100644 --- a/msg/json/kab.json +++ b/msg/json/kab.json @@ -1,339 +1,339 @@ -{ - "@metadata": { - "authors": [ - "Alem", - "Amaziɣ maziɣ", - "Belkacem77", - "K Messaoudi", - "SlimaneAmiri", - "YubaWissin" - ] - }, - "VARIABLES_DEFAULT_NAME": "aferdis", - "UNNAMED_KEY": "war isem", - "TODAY": "Ass-a", - "DUPLICATE_BLOCK": "Sleg", - "ADD_COMMENT": "Rnu awennit", - "REMOVE_COMMENT": "Kkes awennit", - "DUPLICATE_COMMENT": "Sleg awennit", - "EXTERNAL_INPUTS": "Inekcam izɣarayen", - "INLINE_INPUTS": "Inekcam srid", - "DELETE_BLOCK": "Kkes iḥder", - "DELETE_X_BLOCKS": "Kkes %1 n yiḥedran", - "DELETE_ALL_BLOCKS": "Kkes akk %1 n yiḥedran?", - "CLEAN_UP": "Sfeḍ iḥedran", - "COLLAPSE_BLOCK": "Fneẓ iḥder", - "COLLAPSE_ALL": "Fneẓ iḥedran", - "EXPAND_BLOCK": "Snefli iḥder", - "EXPAND_ALL": "Snefli iḥedran", - "DISABLE_BLOCK": "Sens iḥder", - "ENABLE_BLOCK": "Sens iḥedran", - "HELP": "Tallelt", - "UNDO": "Err-d", - "REDO": "Uɣal", - "CHANGE_VALUE_TITLE": "Beddel azal:", - "RENAME_VARIABLE": "Beddel isem n umutti...", - "RENAME_VARIABLE_TITLE": "Beddel akk isem n yimuttiyen '%1' ar:", - "NEW_VARIABLE": "Rnu amutti...", - "NEW_STRING_VARIABLE": "Rnu amutti azrir n yisekkilen...", - "NEW_NUMBER_VARIABLE": "Rnu amutti amḍan...", - "NEW_COLOUR_VARIABLE": "Rnu amutti ini...", - "NEW_VARIABLE_TYPE_TITLE": "Anaw amaynut n umutti:", - "NEW_VARIABLE_TITLE": "Isem amaynut n wazal:", - "VARIABLE_ALREADY_EXISTS": "Amutti s yisem '%1' yella yakan.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Amutti s yisem '%1' yella yakan i wanaw-nniḍen: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Kkes %1 n useqdec n umutti '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ur izmir ara ad yekkes amutti '%1' acku yedda di tbadut n twuri '%2'", - "DELETE_VARIABLE": "Kkes amutti '%1'", - "COLOUR_PICKER_HELPURL": "https://kab.wikipedia.org/wiki/Ini", - "COLOUR_PICKER_TOOLTIP": "Fren ini seg ugalis.", - "COLOUR_RANDOM_TITLE": "ini agacuran", - "COLOUR_RANDOM_TOOLTIP": "Fren ini s wudem agacuran.", - "COLOUR_RGB_TITLE": "ini s", - "COLOUR_RGB_RED": "azeggaɣ", - "COLOUR_RGB_GREEN": "azegzaw", - "COLOUR_RGB_BLUE": "anili", - "COLOUR_RGB_TOOLTIP": "Rnu ini s tnecta yettunefk s tesmekta n uzeggaɣ, azegzaw, akked unili. Yessefk akk azalen ad ilin gar 0 akked 100.", - "COLOUR_BLEND_TITLE": "rkec", - "COLOUR_BLEND_COLOUR1": "ini 1", - "COLOUR_BLEND_COLOUR2": "ini 2", - "COLOUR_BLEND_RATIO": "afmiḍi", - "COLOUR_BLEND_TOOLTIP": "Sexleḍ sin n yiniten d tesmekta (gar 0.0 ar 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "Ales %1 n tikkal", - "CONTROLS_REPEAT_INPUT_DO": "eg", - "CONTROLS_REPEAT_TOOLTIP": "Selkem ddeqs n tinaḍin ddeqs n tikal.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ales skud", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ales armi", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Skud azal d idetti, selkem ihi tinadin.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Skud azal d ucciḍ, selkem ihi tinadin.", - "CONTROLS_FOR_TOOLTIP": "Mudd i umutti '%1' azalen seg umḍan n tazwara armi d amḍan n taggara, s tmerna n usurif yettunefken, sakin selkem tinaḍin yettunefken.", - "CONTROLS_FOR_TITLE": "siḍen akked %1 seg %2 ar %3 s %4", - "CONTROLS_FOREACH_TITLE": "i yal aferdis %1 di tebdart %2", - "CONTROLS_FOREACH_TOOLTIP": "I yal aferdis n tebdart, mudd azal n uferdis i umutti '%1', sakin selkem tinaḍin.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ffeɣ seg tneddict", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "kemmel s wallus d tneddict d-iteddun", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ffeɣ si tneddict tamagbart.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Zgel ayen i d-yeqqimen di tneddict-a, sakin kemmel allus d-itteddun.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Ɣur-k: Iḥder-a yessefk ad yettwaseqdec di tneddict.", - "CONTROLS_IF_TOOLTIP_1": "mayella azal d idetti, ihi selkem kra n tinaḍin.", - "CONTROLS_IF_TOOLTIP_2": "Mayella azal d idetti, selkem iḥder amezwaru. Neɣ ma ulac, selkem iḥder wis sin.", - "CONTROLS_IF_TOOLTIP_3": "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ ma azal wis sin d ucciḍ, selkem iḥder wis sin.", - "CONTROLS_IF_TOOLTIP_4": "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ, mayella azal wis sin d idetti, selkem iḥder wis sin. Mayella ula d yiwen seg-sen ur yelli d idetti, selkem iḥder aneggaru.", - "CONTROLS_IF_MSG_IF": "ma", - "CONTROLS_IF_MSG_ELSEIF": "neɣ ma", - "CONTROLS_IF_MSG_ELSE": "neɣ", - "CONTROLS_IF_IF_TOOLTIP": "Rnu, kkes, neq ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a ma.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Rnu tawtilt i yiḥder ma.", - "CONTROLS_IF_ELSE_TOOLTIP": "Rnu tawtilt taneggarut i yiḥder ma igebren akk tinaḍin.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Ad yerr idetti ma yella i sin n yinekcam d imegduya.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Ad d-yerr idetti mayella i sin n yinekcam mačči d imegduya.", - "LOGIC_COMPARE_TOOLTIP_LT": "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy ɣef wis sin.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy neɣ yegda wis sin.", - "LOGIC_COMPARE_TOOLTIP_GT": "Ad d-yerr idetti ma anekcam amezwaru meqqer ɣef wis sin.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Ad d-yerr idetti ma anekcam amezwaru meqqer neɣ yegda wis sin.", - "LOGIC_OPERATION_TOOLTIP_AND": "Ad d-yerr idetti ma inekcam d idettiyen.", - "LOGIC_OPERATION_AND": "akked", - "LOGIC_OPERATION_TOOLTIP_OR": "Ad d-yerr idetti ma ɣarsum yiwen seg yinekcam d idetti.", - "LOGIC_OPERATION_OR": "neɣ", - "LOGIC_NEGATE_TITLE": "mačči %1", - "LOGIC_NEGATE_TOOLTIP": "Ad d-yerr idetti ma anekcam d ucciḍ. Ad d-yerr ucciḍ ma yella anekcam d idetti.", - "LOGIC_BOOLEAN_TRUE": "idetti", - "LOGIC_BOOLEAN_FALSE": "ucciḍ", - "LOGIC_BOOLEAN_TOOLTIP": "Ad d-yerr idetti neɣ ucciḍ", - "LOGIC_NULL": "Ilem", - "LOGIC_NULL_TOOLTIP": "Ad d-yerr ilem", - "LOGIC_TERNARY_CONDITION": "sekyed", - "LOGIC_TERNARY_IF_TRUE": "ma d idetti", - "LOGIC_TERNARY_IF_FALSE": "ma d ucciḍ", - "LOGIC_TERNARY_TOOLTIP": "Senqed tawtilt deg 'sekyed'. Ma d idetti, ad d-yerr azal 'ma idetti', ma ulac ad d-yerr azam 'ma ucciḍ'.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Amḍan.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Ad d-yerr tmerni n sin n yimiḍanen.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ad d-yerr tmernit n sin n yimiḍanen.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Ad d-yerr tukksa gar sin n yimiḍanen.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Ad d-yerr aful n sin n yimḍanen.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Ad d-yerr amḍan amezwaru uzmir wis sin.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "aẓar uzmir 2", - "MATH_SINGLE_TOOLTIP_ROOT": "Ad d-yerr aẓar uzmir sin n umḍan.", - "MATH_SINGLE_OP_ABSOLUTE": "azal amagdez", - "MATH_SINGLE_TOOLTIP_ABS": "Ad d-yerr azal amagdez n umiḍan.", - "MATH_SINGLE_TOOLTIP_NEG": "Ad d-yerr ugmiḍ n umḍan.", - "MATH_SINGLE_TOOLTIP_LN": "Ad d-yerr alugaritm agamawan n umiḍan.", - "MATH_SINGLE_TOOLTIP_LOG10": "Ad d-yerr alugaritm 10 n umiḍan.", - "MATH_SINGLE_TOOLTIP_EXP": "Ad d-yerr e uzmir amiḍan.", - "MATH_SINGLE_TOOLTIP_POW10": "Ad d-yerr 10 uzmir amiḍan.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Ad d-yerr asinus n teɣmert s tfesna (mačči aṛadyan).", - "MATH_TRIG_TOOLTIP_COS": "Ad d-yerr akusinus n teɣmert s tfesna (mačči aṛadyan).", - "MATH_TRIG_TOOLTIP_TAN": "Ad d-yerr taslayt n teɣmert s tfesna (mačči aṛadyan).", - "MATH_TRIG_TOOLTIP_ASIN": "Ad d-yerr taganzi n usinus n umḍan.", - "MATH_TRIG_TOOLTIP_ACOS": "Ad d-yerr taganzi n ukusinus n umḍan.", - "MATH_TRIG_TOOLTIP_ATAN": "Ad d-yerr taganzi n teslayt n umiḍan.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Ad d-yerr yiwet seg tmezgiyin yettwasnen : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), neɣ ∞ (ifeḍ).", - "MATH_IS_EVEN": "d ayugan", - "MATH_IS_ODD": "d aryugan", - "MATH_IS_PRIME": "d amenzu", - "MATH_IS_WHOLE": "d ummid", - "MATH_IS_POSITIVE": "d ufrar", - "MATH_IS_NEGATIVE": "d uzdir", - "MATH_IS_DIVISIBLE_BY": "d ubṭay ɣef", - "MATH_IS_TOOLTIP": "Senqed ma amḍan d ayugan, d aryugan, d amenzu, d ummid, d ufrar, d uzdir, neɣ d ubṭay ɣef kra n umḍan. Ad d-yerr idetti neɣ ucciḍ.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "snifel %1 s %2", - "MATH_CHANGE_TOOLTIP": "Rnu amḍan i umutti '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Saẓ amiḍan d asawen neɣ d akesser.", - "MATH_ROUND_OPERATOR_ROUND": "Saẓ", - "MATH_ROUND_OPERATOR_ROUNDUP": "Saẓ d asawen", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "Saẓ d akesser", - "MATH_ONLIST_OPERATOR_SUM": "Timernit n tebdart", - "MATH_ONLIST_TOOLTIP_SUM": "Ad d-yerr timernit n yimḍanen meṛṛa deg tebdart.", - "MATH_ONLIST_OPERATOR_MIN": "adday n tebdart", - "MATH_ONLIST_TOOLTIP_MIN": "Ad d-yerr amḍan ameẓẓyan di tebdart.", - "MATH_ONLIST_OPERATOR_MAX": "afellay n tebdart", - "MATH_ONLIST_TOOLTIP_MAX": "Ad d-yerr amḍan ameqqran di tebdart.", - "MATH_ONLIST_OPERATOR_AVERAGE": "talemmast n tebdart", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Ad d-yerr talemmas( tasnamḍant) n wazalen umḍinen di tebdart.", - "MATH_ONLIST_OPERATOR_MEDIAN": "tanammast n tebdart", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Ad d-yerr amḍan n unammas n tebdart.", - "MATH_ONLIST_OPERATOR_MODE": "Tiggtiwin n tebdart", - "MATH_ONLIST_TOOLTIP_MODE": "Ad d-yerr tabdart n yiferdisen i d-yettuɣalen s waṭas di tebdart.", - "MATH_ONLIST_OPERATOR_STD_DEV": "azza n tebdart", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Ad d-yerr azza n tebdart.", - "MATH_ONLIST_OPERATOR_RANDOM": "aferdis agacuran n tebdart", - "MATH_ONLIST_TOOLTIP_RANDOM": "Ad d-yerr aferdis seg tebdart s wudem agacuran.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "tasagert n %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Ad d-yerr tasagert n beṭṭu n sin n yimḍanen.", - "MATH_CONSTRAIN_TITLE": "Err tamara i %1 gar %2 akked %3", - "MATH_CONSTRAIN_TOOLTIP": "Err tamara n umḍan akken ad yili gar snat n tlisa (ddant).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "ummid agacuran gar %1 akked %2", - "MATH_RANDOM_INT_TOOLTIP": "Ad d-yerr ummid agacuran gar snat n tlisa, ddant.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "tirẓi tagacurant", - "MATH_RANDOM_FLOAT_TOOLTIP": "Ad d-yerr tirẓi tagacurant gar 0.0 (yedda) akked 1.0 (ur yeddi ara).", - "MATH_ATAN2_HELPURL": "https://kab.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 seg X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Ad d-yerr arctangent n waggaz (X, Y) s tfesniwin deg -180 ɣer 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Asekkil, awal neɣ izirig n uḍris.", - "TEXT_JOIN_TITLE_CREATEWITH": "rnu aḍris s", - "TEXT_JOIN_TOOLTIP": "Ad yernu taceqquft n uḍris s usdukel gar yal amḍan n yiferdisen.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "sdukkel", - "TEXT_CREATE_JOIN_TOOLTIP": "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Rnu aferdis ɣer uḍris.", - "TEXT_APPEND_TITLE": "Rnu aḍris %2 ɣer %1", - "TEXT_APPEND_TOOLTIP": "Rnu aḍris ɣer umutti '%1'.", - "TEXT_LENGTH_TITLE": "teɣzi n %1", - "TEXT_LENGTH_TOOLTIP": "Ad d-yerr amḍan n yisekkilen (ddan ula d imellalen) deg uḍris d-ittunefken.", - "TEXT_ISEMPTY_TITLE": "%1 d ilem", - "TEXT_ISEMPTY_TOOLTIP": "Add d-yerr idetti ma yella aḍris d ilem.", - "TEXT_INDEXOF_TOOLTIP": "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uḍris amezwaru deg uḍris wis sin. Ad d-yerr %1 ma yella ulac aḍris.", - "TEXT_INDEXOF_TITLE": "deg uḍris %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "af-d timeḍriwt tamezwarut n uḍris", - "TEXT_INDEXOF_OPERATOR_LAST": "af-d timeḍriwt taneggarut deg uḍris", - "TEXT_CHARAT_TITLE": "deg uḍris %1 %2", - "TEXT_CHARAT_FROM_START": "awi asekkel #", - "TEXT_CHARAT_FROM_END": "awi-d asekkil # si taggara", - "TEXT_CHARAT_FIRST": "awi-d asekkil amezwaru", - "TEXT_CHARAT_LAST": "awi-d asekkil aneggaru", - "TEXT_CHARAT_RANDOM": "awi-d asekkil s wudem agacuran", - "TEXT_CHARAT_TOOLTIP": "Ad d-yerr asekkil deg wuṭṭun yettwamlen.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Ad d-yerr aḥric yettwamlen deg uḍris.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "deg uḍris", - "TEXT_GET_SUBSTRING_START_FROM_START": "awi-d azrir asnawan seg usekkil #", - "TEXT_GET_SUBSTRING_START_FROM_END": "awi-d azrir asnawan seg usekkil # si taggara", - "TEXT_GET_SUBSTRING_START_FIRST": "awi-d azrir asnawan seg usekkil amezwaru", - "TEXT_GET_SUBSTRING_END_FROM_START": "armi d asekkil #", - "TEXT_GET_SUBSTRING_END_FROM_END": "armi d asekkil # si taggara", - "TEXT_GET_SUBSTRING_END_LAST": "armi d asekkil aneggaru", - "TEXT_CHANGECASE_TOOLTIP": "Ad d-yerr anɣel n uḍris s truẓi-nniḍen.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "s USEKKIL AMEQQRAN", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "s usekkil ameẓẓyan", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "s Umeqqran Di Tazwara n Yal Awal.", - "TEXT_TRIM_TOOLTIP": "Ad d-yerr anɣel n uḍris s yisekkilen ilmawen yettwakksen seg yixf neɣ i sin.", - "TEXT_TRIM_OPERATOR_BOTH": "Tukksa n yisekkilen imellalen seg sin n yidisan", - "TEXT_TRIM_OPERATOR_LEFT": "tukksa n yisekkilen seg uzelmaḍ", - "TEXT_TRIM_OPERATOR_RIGHT": "tukksa n yisekkilen seg uyeffus", - "TEXT_PRINT_TITLE": "ad d-yesken %1", - "TEXT_PRINT_TOOLTIP": "Sken aḍris, amḍan neɣ azal-nniḍen d-ittunefken.", - "TEXT_PROMPT_TYPE_TEXT": "aneftaɣ i uḍris s yizen", - "TEXT_PROMPT_TYPE_NUMBER": "aneftaɣ i umḍan s yizen", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Suter amḍan i useqdac.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Suter aḍris i useqdac.", - "TEXT_COUNT_MESSAGE0": "amḍan %1 ɣef %2", - "TEXT_COUNT_TOOLTIP": "Ad isiḍen amḍan n tmeḍriwt n uḍris deg wayeḍ.", - "TEXT_REPLACE_MESSAGE0": "semselsi %1 s %2 di %3", - "TEXT_REPLACE_TOOLTIP": "Ad isemselsi akk timeḍriwin n uḍris s wayeḍ.", - "TEXT_REVERSE_MESSAGE0": "tti %1", - "TEXT_REVERSE_TOOLTIP": "Ad yetti asmizzwer n yisekkilen deg uḍris.", - "LISTS_CREATE_EMPTY_TITLE": "rnu tabdart tilemt", - "LISTS_CREATE_EMPTY_TOOLTIP": "Ad d-yerr tabdart n teɣzi 0 ur yegbiren ara ikalasen", - "LISTS_CREATE_WITH_TOOLTIP": "Ad yernu tabdart s umḍan n yiferdisen.", - "LISTS_CREATE_WITH_INPUT_WITH": "rnu tabdart s", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "tabdart", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a n tebdart.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ad yernu aferdis ɣer tebdart.", - "LISTS_REPEAT_TOOLTIP": "Ad yernu tabdart inetmen n wazal yettunefken ddeqs n tikal s umḍan yettwammlen.", - "LISTS_REPEAT_TITLE": "ad yernu tabdart s uferdis %1 s tmeḍriwt %2", - "LISTS_LENGTH_TITLE": "teɣzi n %1", - "LISTS_LENGTH_TOOLTIP": "Ad d-yerr teɣzi n tebdart.", - "LISTS_ISEMPTY_TITLE": "%1 d ilem", - "LISTS_ISEMPTY_TOOLTIP": "Ad d-yerr idetti mayella tabdart d tilemt.", - "LISTS_INLIST": "di tebdart", - "LISTS_INDEX_OF_FIRST": "af-d timeḍriwt tamezwarut n uferdis", - "LISTS_INDEX_OF_LAST": "af-d timeḍriwt taneggarut n uferdis", - "LISTS_INDEX_OF_TOOLTIP": "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uferdis amezwaru deg tebdart. Ad d-yerr %1 ma yella ulac aferdis.", - "LISTS_GET_INDEX_GET": "awi", - "LISTS_GET_INDEX_GET_REMOVE": "awi rnu kkes", - "LISTS_GET_INDEX_REMOVE": "kkes", - "LISTS_GET_INDEX_FROM_END": "# si taggara", - "LISTS_GET_INDEX_FIRST": "amezwaru", - "LISTS_GET_INDEX_LAST": "aneggaru", - "LISTS_GET_INDEX_RANDOM": "agacuran", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 d aferdis amezwaru.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 d aferdis aneggaru.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Ad d-yerr aferdis n wadig yettwamlen deg tabdart.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Ad d-yerr aferdis amezwaru n tebdart.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Ad d-yerr aferdis aneggaru di tebdart.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Ad yerr aferdis agacuran di tebdart.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Ad yekkes syin ad d-yerr aferdis n wadig yettwamlen deg tabdart.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Ad yekkes sakin ad -yerr aferdis amezwaru di tebdart.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Ad yekkes sakin ad yerr aferdis aneggaru di tebdart.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Ad yekkes sakin ad d-yerr aferdis agacuran di tebdart.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Ad yekkes aferdis n wadig yettwamlen deg tabdart.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Ad yekkes aferdis amezwaru n tebdart.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Ad yekkes aferdis aneggaru di tebdart.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Ad yekkes aferdis agacuran di tebdart.", - "LISTS_SET_INDEX_SET": "sbadu", - "LISTS_SET_INDEX_INSERT": "ger s", - "LISTS_SET_INDEX_INPUT_TO": "am", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ad yesbadu aferdis n wadig yettwamlen deg tabdart.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Ad d-yerr aferdis amezwaru di tebdart.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Ad d-yerr aferdis aneggaru di tebdart.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Ad yesbadu aferdis agacuran di tebdart.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ad iger aferdis n wadig yettwamlen deg tabdart.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ad iger aferdis di tazwara n tebdart.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ad yernu aferdis ar taggara n tebdart.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ad iger aferdis s wudem agacuran deg tebdart.", - "LISTS_GET_SUBLIST_START_FROM_START": "awi-d tabdart tasnawant seg #", - "LISTS_GET_SUBLIST_START_FROM_END": "awi-d tabdart tasnawant seg # si taggara", - "LISTS_GET_SUBLIST_START_FIRST": "awi-d tabdart tasnawant si tazwara", - "LISTS_GET_SUBLIST_END_FROM_START": "ar #", - "LISTS_GET_SUBLIST_END_FROM_END": "ar # si tagara", - "LISTS_GET_SUBLIST_END_LAST": "ar taggara", - "LISTS_GET_SUBLIST_TOOLTIP": "Ad yernu anɣel n uḥric yettwamlen n tebdart.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "smizzwer %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Smizzwer anɣel n tebdart.", - "LISTS_SORT_ORDER_ASCENDING": "igemmen", - "LISTS_SORT_ORDER_DESCENDING": "amnusruy", - "LISTS_SORT_TYPE_NUMERIC": "umḍin", - "LISTS_SORT_TYPE_TEXT": "agemmayan", - "LISTS_SORT_TYPE_IGNORECASE": "agemmayan, anef i truẓi n usekkil", - "LISTS_SPLIT_LIST_FROM_TEXT": "rnu tabdart seg uḍris", - "LISTS_SPLIT_TEXT_FROM_LIST": "rnu aḍris si tebdart", - "LISTS_SPLIT_WITH_DELIMITER": "s unabraz", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Ad yegzem aḍris ɣef ddeqs n tebdarin n yiḍrisen, s unegzum yal anabraz.", - "LISTS_SPLIT_TOOLTIP_JOIN": "ad yesdukel tabdart n yiḍrisen deg yiwen s usnabraz.", - "LISTS_REVERSE_MESSAGE0": "tti %1", - "LISTS_REVERSE_TOOLTIP": "Tti anɣel n tebdart.", - "VARIABLES_GET_TOOLTIP": "Ad d-yerr azal n umutti-a.", - "VARIABLES_GET_CREATE_SET": "Rnu 'sbadu %1'", - "VARIABLES_SET": "sbadu %1 ar %2", - "VARIABLES_SET_TOOLTIP": "Ad yesbadu amutti-a akken ad yegdu azal n unekcam.", - "VARIABLES_SET_CREATE_GET": "Rnu 'awi-d %1'", - "PROCEDURES_DEFNORETURN_TITLE": "i", - "PROCEDURES_DEFNORETURN_PROCEDURE": "eg kra", - "PROCEDURES_BEFORE_PARAMS": "s:", - "PROCEDURES_CALL_BEFORE_PARAMS": "s:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Rnu tawuri s war anekcam.", - "PROCEDURES_DEFNORETURN_COMMENT": "Seglem tawuri-a...", - "PROCEDURES_DEFRETURN_RETURN": "tuɣalin", - "PROCEDURES_DEFRETURN_TOOLTIP": "ad yernu tawuri s tuffɣa.", - "PROCEDURES_ALLOW_STATEMENTS": "Sireg asmizzwer", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Ɣur-k: Tawuri-a ɣur-s iɣewwaṛen usligen.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Selkem tawuri '%1' i yesbadu useqdac.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Selkem tawuri '%1' i yesbadu useqdac sakin seqdec agmuḍ-is.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "inekcam", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Rnu, kkes neɣ ales asmizzwer n yinekcam i twuri-a.", - "PROCEDURES_MUTATORARG_TITLE": "isem n unekcum:", - "PROCEDURES_MUTATORARG_TOOLTIP": "rnu anekcam ɣer twuri-a.", - "PROCEDURES_HIGHLIGHT_DEF": "Sebrureq tabadut n twuri", - "PROCEDURES_CREATE_DO": "Rnu '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "ma yella azal d idetti, ad d-yerr azal-nniḍen wis sin.", - "PROCEDURES_IFRETURN_WARNING": "Ɣur-k: Iḥder-a yezmer ur yettwaseqdac ara anagar deg tebadut n twuri-a.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Ini kra...", - "WORKSPACE_ARIA_LABEL": "Tallunt n umahel Blockly", - "COLLAPSED_WARNINGS_WARNING": "Iḥedran yettin gebren ilɣa.", - "DIALOG_OK": "IH", - "DIALOG_CANCEL": "Sefsex" -} +{ + "@metadata": { + "authors": [ + "Alem", + "Amaziɣ maziɣ", + "Belkacem77", + "K Messaoudi", + "SlimaneAmiri", + "YubaWissin" + ] + }, + "VARIABLES_DEFAULT_NAME": "aferdis", + "UNNAMED_KEY": "war isem", + "TODAY": "Ass-a", + "DUPLICATE_BLOCK": "Sleg", + "ADD_COMMENT": "Rnu awennit", + "REMOVE_COMMENT": "Kkes awennit", + "DUPLICATE_COMMENT": "Sleg awennit", + "EXTERNAL_INPUTS": "Inekcam izɣarayen", + "INLINE_INPUTS": "Inekcam srid", + "DELETE_BLOCK": "Kkes iḥder", + "DELETE_X_BLOCKS": "Kkes %1 n yiḥedran", + "DELETE_ALL_BLOCKS": "Kkes akk %1 n yiḥedran?", + "CLEAN_UP": "Sfeḍ iḥedran", + "COLLAPSE_BLOCK": "Fneẓ iḥder", + "COLLAPSE_ALL": "Fneẓ iḥedran", + "EXPAND_BLOCK": "Snefli iḥder", + "EXPAND_ALL": "Snefli iḥedran", + "DISABLE_BLOCK": "Sens iḥder", + "ENABLE_BLOCK": "Sens iḥedran", + "HELP": "Tallelt", + "UNDO": "Err-d", + "REDO": "Uɣal", + "CHANGE_VALUE_TITLE": "Beddel azal:", + "RENAME_VARIABLE": "Beddel isem n umutti...", + "RENAME_VARIABLE_TITLE": "Beddel akk isem n yimuttiyen '%1' ar:", + "NEW_VARIABLE": "Rnu amutti...", + "NEW_STRING_VARIABLE": "Rnu amutti azrir n yisekkilen...", + "NEW_NUMBER_VARIABLE": "Rnu amutti amḍan...", + "NEW_COLOUR_VARIABLE": "Rnu amutti ini...", + "NEW_VARIABLE_TYPE_TITLE": "Anaw amaynut n umutti:", + "NEW_VARIABLE_TITLE": "Isem amaynut n wazal:", + "VARIABLE_ALREADY_EXISTS": "Amutti s yisem '%1' yella yakan.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Amutti s yisem '%1' yella yakan i wanaw-nniḍen: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Kkes %1 n useqdec n umutti '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ur izmir ara ad yekkes amutti '%1' acku yedda di tbadut n twuri '%2'", + "DELETE_VARIABLE": "Kkes amutti '%1'", + "COLOUR_PICKER_HELPURL": "https://kab.wikipedia.org/wiki/Ini", + "COLOUR_PICKER_TOOLTIP": "Fren ini seg ugalis.", + "COLOUR_RANDOM_TITLE": "ini agacuran", + "COLOUR_RANDOM_TOOLTIP": "Fren ini s wudem agacuran.", + "COLOUR_RGB_TITLE": "ini s", + "COLOUR_RGB_RED": "azeggaɣ", + "COLOUR_RGB_GREEN": "azegzaw", + "COLOUR_RGB_BLUE": "anili", + "COLOUR_RGB_TOOLTIP": "Rnu ini s tnecta yettunefk s tesmekta n uzeggaɣ, azegzaw, akked unili. Yessefk akk azalen ad ilin gar 0 akked 100.", + "COLOUR_BLEND_TITLE": "rkec", + "COLOUR_BLEND_COLOUR1": "ini 1", + "COLOUR_BLEND_COLOUR2": "ini 2", + "COLOUR_BLEND_RATIO": "afmiḍi", + "COLOUR_BLEND_TOOLTIP": "Sexleḍ sin n yiniten d tesmekta (gar 0.0 ar 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "Ales %1 n tikkal", + "CONTROLS_REPEAT_INPUT_DO": "eg", + "CONTROLS_REPEAT_TOOLTIP": "Selkem ddeqs n tinaḍin ddeqs n tikal.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ales skud", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ales armi", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Skud azal d idetti, selkem ihi tinadin.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Skud azal d ucciḍ, selkem ihi tinadin.", + "CONTROLS_FOR_TOOLTIP": "Mudd i umutti '%1' azalen seg umḍan n tazwara armi d amḍan n taggara, s tmerna n usurif yettunefken, sakin selkem tinaḍin yettunefken.", + "CONTROLS_FOR_TITLE": "siḍen akked %1 seg %2 ar %3 s %4", + "CONTROLS_FOREACH_TITLE": "i yal aferdis %1 di tebdart %2", + "CONTROLS_FOREACH_TOOLTIP": "I yal aferdis n tebdart, mudd azal n uferdis i umutti '%1', sakin selkem tinaḍin.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ffeɣ seg tneddict", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "kemmel s wallus d tneddict d-iteddun", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ffeɣ si tneddict tamagbart.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Zgel ayen i d-yeqqimen di tneddict-a, sakin kemmel allus d-itteddun.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Ɣur-k: Iḥder-a yessefk ad yettwaseqdec di tneddict.", + "CONTROLS_IF_TOOLTIP_1": "mayella azal d idetti, ihi selkem kra n tinaḍin.", + "CONTROLS_IF_TOOLTIP_2": "Mayella azal d idetti, selkem iḥder amezwaru. Neɣ ma ulac, selkem iḥder wis sin.", + "CONTROLS_IF_TOOLTIP_3": "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ ma azal wis sin d ucciḍ, selkem iḥder wis sin.", + "CONTROLS_IF_TOOLTIP_4": "Mayella azal amezwaru d idetti, selkem iḥder amezwaru. Neɣ, mayella azal wis sin d idetti, selkem iḥder wis sin. Mayella ula d yiwen seg-sen ur yelli d idetti, selkem iḥder aneggaru.", + "CONTROLS_IF_MSG_IF": "ma", + "CONTROLS_IF_MSG_ELSEIF": "neɣ ma", + "CONTROLS_IF_MSG_ELSE": "neɣ", + "CONTROLS_IF_IF_TOOLTIP": "Rnu, kkes, neq ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a ma.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Rnu tawtilt i yiḥder ma.", + "CONTROLS_IF_ELSE_TOOLTIP": "Rnu tawtilt taneggarut i yiḥder ma igebren akk tinaḍin.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Ad yerr idetti ma yella i sin n yinekcam d imegduya.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Ad d-yerr idetti mayella i sin n yinekcam mačči d imegduya.", + "LOGIC_COMPARE_TOOLTIP_LT": "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy ɣef wis sin.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Ad d-yerr idetti ma anekcam amezwaru meẓẓiy neɣ yegda wis sin.", + "LOGIC_COMPARE_TOOLTIP_GT": "Ad d-yerr idetti ma anekcam amezwaru meqqer ɣef wis sin.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Ad d-yerr idetti ma anekcam amezwaru meqqer neɣ yegda wis sin.", + "LOGIC_OPERATION_TOOLTIP_AND": "Ad d-yerr idetti ma inekcam d idettiyen.", + "LOGIC_OPERATION_AND": "akked", + "LOGIC_OPERATION_TOOLTIP_OR": "Ad d-yerr idetti ma ɣarsum yiwen seg yinekcam d idetti.", + "LOGIC_OPERATION_OR": "neɣ", + "LOGIC_NEGATE_TITLE": "mačči %1", + "LOGIC_NEGATE_TOOLTIP": "Ad d-yerr idetti ma anekcam d ucciḍ. Ad d-yerr ucciḍ ma yella anekcam d idetti.", + "LOGIC_BOOLEAN_TRUE": "idetti", + "LOGIC_BOOLEAN_FALSE": "ucciḍ", + "LOGIC_BOOLEAN_TOOLTIP": "Ad d-yerr idetti neɣ ucciḍ", + "LOGIC_NULL": "Ilem", + "LOGIC_NULL_TOOLTIP": "Ad d-yerr ilem", + "LOGIC_TERNARY_CONDITION": "sekyed", + "LOGIC_TERNARY_IF_TRUE": "ma d idetti", + "LOGIC_TERNARY_IF_FALSE": "ma d ucciḍ", + "LOGIC_TERNARY_TOOLTIP": "Senqed tawtilt deg 'sekyed'. Ma d idetti, ad d-yerr azal 'ma idetti', ma ulac ad d-yerr azam 'ma ucciḍ'.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Amḍan.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Ad d-yerr tmerni n sin n yimiḍanen.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Ad d-yerr tmernit n sin n yimiḍanen.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Ad d-yerr tukksa gar sin n yimiḍanen.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Ad d-yerr aful n sin n yimḍanen.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Ad d-yerr amḍan amezwaru uzmir wis sin.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "aẓar uzmir 2", + "MATH_SINGLE_TOOLTIP_ROOT": "Ad d-yerr aẓar uzmir sin n umḍan.", + "MATH_SINGLE_OP_ABSOLUTE": "azal amagdez", + "MATH_SINGLE_TOOLTIP_ABS": "Ad d-yerr azal amagdez n umiḍan.", + "MATH_SINGLE_TOOLTIP_NEG": "Ad d-yerr ugmiḍ n umḍan.", + "MATH_SINGLE_TOOLTIP_LN": "Ad d-yerr alugaritm agamawan n umiḍan.", + "MATH_SINGLE_TOOLTIP_LOG10": "Ad d-yerr alugaritm 10 n umiḍan.", + "MATH_SINGLE_TOOLTIP_EXP": "Ad d-yerr e uzmir amiḍan.", + "MATH_SINGLE_TOOLTIP_POW10": "Ad d-yerr 10 uzmir amiḍan.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Ad d-yerr asinus n teɣmert s tfesna (mačči aṛadyan).", + "MATH_TRIG_TOOLTIP_COS": "Ad d-yerr akusinus n teɣmert s tfesna (mačči aṛadyan).", + "MATH_TRIG_TOOLTIP_TAN": "Ad d-yerr taslayt n teɣmert s tfesna (mačči aṛadyan).", + "MATH_TRIG_TOOLTIP_ASIN": "Ad d-yerr taganzi n usinus n umḍan.", + "MATH_TRIG_TOOLTIP_ACOS": "Ad d-yerr taganzi n ukusinus n umḍan.", + "MATH_TRIG_TOOLTIP_ATAN": "Ad d-yerr taganzi n teslayt n umiḍan.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Ad d-yerr yiwet seg tmezgiyin yettwasnen : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), neɣ ∞ (ifeḍ).", + "MATH_IS_EVEN": "d ayugan", + "MATH_IS_ODD": "d aryugan", + "MATH_IS_PRIME": "d amenzu", + "MATH_IS_WHOLE": "d ummid", + "MATH_IS_POSITIVE": "d ufrar", + "MATH_IS_NEGATIVE": "d uzdir", + "MATH_IS_DIVISIBLE_BY": "d ubṭay ɣef", + "MATH_IS_TOOLTIP": "Senqed ma amḍan d ayugan, d aryugan, d amenzu, d ummid, d ufrar, d uzdir, neɣ d ubṭay ɣef kra n umḍan. Ad d-yerr idetti neɣ ucciḍ.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "snifel %1 s %2", + "MATH_CHANGE_TOOLTIP": "Rnu amḍan i umutti '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Saẓ amiḍan d asawen neɣ d akesser.", + "MATH_ROUND_OPERATOR_ROUND": "Saẓ", + "MATH_ROUND_OPERATOR_ROUNDUP": "Saẓ d asawen", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "Saẓ d akesser", + "MATH_ONLIST_OPERATOR_SUM": "Timernit n tebdart", + "MATH_ONLIST_TOOLTIP_SUM": "Ad d-yerr timernit n yimḍanen meṛṛa deg tebdart.", + "MATH_ONLIST_OPERATOR_MIN": "adday n tebdart", + "MATH_ONLIST_TOOLTIP_MIN": "Ad d-yerr amḍan ameẓẓyan di tebdart.", + "MATH_ONLIST_OPERATOR_MAX": "afellay n tebdart", + "MATH_ONLIST_TOOLTIP_MAX": "Ad d-yerr amḍan ameqqran di tebdart.", + "MATH_ONLIST_OPERATOR_AVERAGE": "talemmast n tebdart", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Ad d-yerr talemmas( tasnamḍant) n wazalen umḍinen di tebdart.", + "MATH_ONLIST_OPERATOR_MEDIAN": "tanammast n tebdart", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Ad d-yerr amḍan n unammas n tebdart.", + "MATH_ONLIST_OPERATOR_MODE": "Tiggtiwin n tebdart", + "MATH_ONLIST_TOOLTIP_MODE": "Ad d-yerr tabdart n yiferdisen i d-yettuɣalen s waṭas di tebdart.", + "MATH_ONLIST_OPERATOR_STD_DEV": "azza n tebdart", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Ad d-yerr azza n tebdart.", + "MATH_ONLIST_OPERATOR_RANDOM": "aferdis agacuran n tebdart", + "MATH_ONLIST_TOOLTIP_RANDOM": "Ad d-yerr aferdis seg tebdart s wudem agacuran.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "tasagert n %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Ad d-yerr tasagert n beṭṭu n sin n yimḍanen.", + "MATH_CONSTRAIN_TITLE": "Err tamara i %1 gar %2 akked %3", + "MATH_CONSTRAIN_TOOLTIP": "Err tamara n umḍan akken ad yili gar snat n tlisa (ddant).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "ummid agacuran gar %1 akked %2", + "MATH_RANDOM_INT_TOOLTIP": "Ad d-yerr ummid agacuran gar snat n tlisa, ddant.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "tirẓi tagacurant", + "MATH_RANDOM_FLOAT_TOOLTIP": "Ad d-yerr tirẓi tagacurant gar 0.0 (yedda) akked 1.0 (ur yeddi ara).", + "MATH_ATAN2_HELPURL": "https://kab.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 seg X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Ad d-yerr arctangent n waggaz (X, Y) s tfesniwin deg -180 ɣer 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Asekkil, awal neɣ izirig n uḍris.", + "TEXT_JOIN_TITLE_CREATEWITH": "rnu aḍris s", + "TEXT_JOIN_TOOLTIP": "Ad yernu taceqquft n uḍris s usdukel gar yal amḍan n yiferdisen.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "sdukkel", + "TEXT_CREATE_JOIN_TOOLTIP": "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Rnu aferdis ɣer uḍris.", + "TEXT_APPEND_TITLE": "Rnu aḍris %2 ɣer %1", + "TEXT_APPEND_TOOLTIP": "Rnu aḍris ɣer umutti '%1'.", + "TEXT_LENGTH_TITLE": "teɣzi n %1", + "TEXT_LENGTH_TOOLTIP": "Ad d-yerr amḍan n yisekkilen (ddan ula d imellalen) deg uḍris d-ittunefken.", + "TEXT_ISEMPTY_TITLE": "%1 d ilem", + "TEXT_ISEMPTY_TOOLTIP": "Add d-yerr idetti ma yella aḍris d ilem.", + "TEXT_INDEXOF_TOOLTIP": "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uḍris amezwaru deg uḍris wis sin. Ad d-yerr %1 ma yella ulac aḍris.", + "TEXT_INDEXOF_TITLE": "deg uḍris %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "af-d timeḍriwt tamezwarut n uḍris", + "TEXT_INDEXOF_OPERATOR_LAST": "af-d timeḍriwt taneggarut deg uḍris", + "TEXT_CHARAT_TITLE": "deg uḍris %1 %2", + "TEXT_CHARAT_FROM_START": "awi asekkel #", + "TEXT_CHARAT_FROM_END": "awi-d asekkil # si taggara", + "TEXT_CHARAT_FIRST": "awi-d asekkil amezwaru", + "TEXT_CHARAT_LAST": "awi-d asekkil aneggaru", + "TEXT_CHARAT_RANDOM": "awi-d asekkil s wudem agacuran", + "TEXT_CHARAT_TOOLTIP": "Ad d-yerr asekkil deg wuṭṭun yettwamlen.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Ad d-yerr aḥric yettwamlen deg uḍris.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "deg uḍris", + "TEXT_GET_SUBSTRING_START_FROM_START": "awi-d azrir asnawan seg usekkil #", + "TEXT_GET_SUBSTRING_START_FROM_END": "awi-d azrir asnawan seg usekkil # si taggara", + "TEXT_GET_SUBSTRING_START_FIRST": "awi-d azrir asnawan seg usekkil amezwaru", + "TEXT_GET_SUBSTRING_END_FROM_START": "armi d asekkil #", + "TEXT_GET_SUBSTRING_END_FROM_END": "armi d asekkil # si taggara", + "TEXT_GET_SUBSTRING_END_LAST": "armi d asekkil aneggaru", + "TEXT_CHANGECASE_TOOLTIP": "Ad d-yerr anɣel n uḍris s truẓi-nniḍen.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "s USEKKIL AMEQQRAN", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "s usekkil ameẓẓyan", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "s Umeqqran Di Tazwara n Yal Awal.", + "TEXT_TRIM_TOOLTIP": "Ad d-yerr anɣel n uḍris s yisekkilen ilmawen yettwakksen seg yixf neɣ i sin.", + "TEXT_TRIM_OPERATOR_BOTH": "Tukksa n yisekkilen imellalen seg sin n yidisan", + "TEXT_TRIM_OPERATOR_LEFT": "tukksa n yisekkilen seg uzelmaḍ", + "TEXT_TRIM_OPERATOR_RIGHT": "tukksa n yisekkilen seg uyeffus", + "TEXT_PRINT_TITLE": "ad d-yesken %1", + "TEXT_PRINT_TOOLTIP": "Sken aḍris, amḍan neɣ azal-nniḍen d-ittunefken.", + "TEXT_PROMPT_TYPE_TEXT": "aneftaɣ i uḍris s yizen", + "TEXT_PROMPT_TYPE_NUMBER": "aneftaɣ i umḍan s yizen", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Suter amḍan i useqdac.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Suter aḍris i useqdac.", + "TEXT_COUNT_MESSAGE0": "amḍan %1 ɣef %2", + "TEXT_COUNT_TOOLTIP": "Ad isiḍen amḍan n tmeḍriwt n uḍris deg wayeḍ.", + "TEXT_REPLACE_MESSAGE0": "semselsi %1 s %2 di %3", + "TEXT_REPLACE_TOOLTIP": "Ad isemselsi akk timeḍriwin n uḍris s wayeḍ.", + "TEXT_REVERSE_MESSAGE0": "tti %1", + "TEXT_REVERSE_TOOLTIP": "Ad yetti asmizzwer n yisekkilen deg uḍris.", + "LISTS_CREATE_EMPTY_TITLE": "rnu tabdart tilemt", + "LISTS_CREATE_EMPTY_TOOLTIP": "Ad d-yerr tabdart n teɣzi 0 ur yegbiren ara ikalasen", + "LISTS_CREATE_WITH_TOOLTIP": "Ad yernu tabdart s umḍan n yiferdisen.", + "LISTS_CREATE_WITH_INPUT_WITH": "rnu tabdart s", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "tabdart", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Rnu, kkes, neɣ ales asmizzwer n tgezmiyin akken ad talseḍ tawila n yiḥder-a n tebdart.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ad yernu aferdis ɣer tebdart.", + "LISTS_REPEAT_TOOLTIP": "Ad yernu tabdart inetmen n wazal yettunefken ddeqs n tikal s umḍan yettwammlen.", + "LISTS_REPEAT_TITLE": "ad yernu tabdart s uferdis %1 s tmeḍriwt %2", + "LISTS_LENGTH_TITLE": "teɣzi n %1", + "LISTS_LENGTH_TOOLTIP": "Ad d-yerr teɣzi n tebdart.", + "LISTS_ISEMPTY_TITLE": "%1 d ilem", + "LISTS_ISEMPTY_TOOLTIP": "Ad d-yerr idetti mayella tabdart d tilemt.", + "LISTS_INLIST": "di tebdart", + "LISTS_INDEX_OF_FIRST": "af-d timeḍriwt tamezwarut n uferdis", + "LISTS_INDEX_OF_LAST": "af-d timeḍriwt taneggarut n uferdis", + "LISTS_INDEX_OF_TOOLTIP": "Ad d-yerr amatar n tmeḍriwt tamezwarut/taneggarut n uferdis amezwaru deg tebdart. Ad d-yerr %1 ma yella ulac aferdis.", + "LISTS_GET_INDEX_GET": "awi", + "LISTS_GET_INDEX_GET_REMOVE": "awi rnu kkes", + "LISTS_GET_INDEX_REMOVE": "kkes", + "LISTS_GET_INDEX_FROM_END": "# si taggara", + "LISTS_GET_INDEX_FIRST": "amezwaru", + "LISTS_GET_INDEX_LAST": "aneggaru", + "LISTS_GET_INDEX_RANDOM": "agacuran", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 d aferdis amezwaru.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 d aferdis aneggaru.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Ad d-yerr aferdis n wadig yettwamlen deg tabdart.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Ad d-yerr aferdis amezwaru n tebdart.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Ad d-yerr aferdis aneggaru di tebdart.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Ad yerr aferdis agacuran di tebdart.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Ad yekkes syin ad d-yerr aferdis n wadig yettwamlen deg tabdart.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Ad yekkes sakin ad -yerr aferdis amezwaru di tebdart.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Ad yekkes sakin ad yerr aferdis aneggaru di tebdart.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Ad yekkes sakin ad d-yerr aferdis agacuran di tebdart.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Ad yekkes aferdis n wadig yettwamlen deg tabdart.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Ad yekkes aferdis amezwaru n tebdart.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Ad yekkes aferdis aneggaru di tebdart.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Ad yekkes aferdis agacuran di tebdart.", + "LISTS_SET_INDEX_SET": "sbadu", + "LISTS_SET_INDEX_INSERT": "ger s", + "LISTS_SET_INDEX_INPUT_TO": "am", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ad yesbadu aferdis n wadig yettwamlen deg tabdart.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Ad d-yerr aferdis amezwaru di tebdart.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Ad d-yerr aferdis aneggaru di tebdart.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Ad yesbadu aferdis agacuran di tebdart.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ad iger aferdis n wadig yettwamlen deg tabdart.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ad iger aferdis di tazwara n tebdart.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Ad yernu aferdis ar taggara n tebdart.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ad iger aferdis s wudem agacuran deg tebdart.", + "LISTS_GET_SUBLIST_START_FROM_START": "awi-d tabdart tasnawant seg #", + "LISTS_GET_SUBLIST_START_FROM_END": "awi-d tabdart tasnawant seg # si taggara", + "LISTS_GET_SUBLIST_START_FIRST": "awi-d tabdart tasnawant si tazwara", + "LISTS_GET_SUBLIST_END_FROM_START": "ar #", + "LISTS_GET_SUBLIST_END_FROM_END": "ar # si tagara", + "LISTS_GET_SUBLIST_END_LAST": "ar taggara", + "LISTS_GET_SUBLIST_TOOLTIP": "Ad yernu anɣel n uḥric yettwamlen n tebdart.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "smizzwer %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Smizzwer anɣel n tebdart.", + "LISTS_SORT_ORDER_ASCENDING": "igemmen", + "LISTS_SORT_ORDER_DESCENDING": "amnusruy", + "LISTS_SORT_TYPE_NUMERIC": "umḍin", + "LISTS_SORT_TYPE_TEXT": "agemmayan", + "LISTS_SORT_TYPE_IGNORECASE": "agemmayan, anef i truẓi n usekkil", + "LISTS_SPLIT_LIST_FROM_TEXT": "rnu tabdart seg uḍris", + "LISTS_SPLIT_TEXT_FROM_LIST": "rnu aḍris si tebdart", + "LISTS_SPLIT_WITH_DELIMITER": "s unabraz", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Ad yegzem aḍris ɣef ddeqs n tebdarin n yiḍrisen, s unegzum yal anabraz.", + "LISTS_SPLIT_TOOLTIP_JOIN": "ad yesdukel tabdart n yiḍrisen deg yiwen s usnabraz.", + "LISTS_REVERSE_MESSAGE0": "tti %1", + "LISTS_REVERSE_TOOLTIP": "Tti anɣel n tebdart.", + "VARIABLES_GET_TOOLTIP": "Ad d-yerr azal n umutti-a.", + "VARIABLES_GET_CREATE_SET": "Rnu 'sbadu %1'", + "VARIABLES_SET": "sbadu %1 ar %2", + "VARIABLES_SET_TOOLTIP": "Ad yesbadu amutti-a akken ad yegdu azal n unekcam.", + "VARIABLES_SET_CREATE_GET": "Rnu 'awi-d %1'", + "PROCEDURES_DEFNORETURN_TITLE": "i", + "PROCEDURES_DEFNORETURN_PROCEDURE": "eg kra", + "PROCEDURES_BEFORE_PARAMS": "s:", + "PROCEDURES_CALL_BEFORE_PARAMS": "s:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Rnu tawuri s war anekcam.", + "PROCEDURES_DEFNORETURN_COMMENT": "Seglem tawuri-a...", + "PROCEDURES_DEFRETURN_RETURN": "tuɣalin", + "PROCEDURES_DEFRETURN_TOOLTIP": "ad yernu tawuri s tuffɣa.", + "PROCEDURES_ALLOW_STATEMENTS": "Sireg asmizzwer", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Ɣur-k: Tawuri-a ɣur-s iɣewwaṛen usligen.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Selkem tawuri '%1' i yesbadu useqdac.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Selkem tawuri '%1' i yesbadu useqdac sakin seqdec agmuḍ-is.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "inekcam", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Rnu, kkes neɣ ales asmizzwer n yinekcam i twuri-a.", + "PROCEDURES_MUTATORARG_TITLE": "isem n unekcum:", + "PROCEDURES_MUTATORARG_TOOLTIP": "rnu anekcam ɣer twuri-a.", + "PROCEDURES_HIGHLIGHT_DEF": "Sebrureq tabadut n twuri", + "PROCEDURES_CREATE_DO": "Rnu '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "ma yella azal d idetti, ad d-yerr azal-nniḍen wis sin.", + "PROCEDURES_IFRETURN_WARNING": "Ɣur-k: Iḥder-a yezmer ur yettwaseqdac ara anagar deg tebadut n twuri-a.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Ini kra...", + "WORKSPACE_ARIA_LABEL": "Tallunt n umahel Blockly", + "COLLAPSED_WARNINGS_WARNING": "Iḥedran yettin gebren ilɣa.", + "DIALOG_OK": "IH", + "DIALOG_CANCEL": "Sefsex" +} diff --git a/msg/json/kbd-cyrl.json b/msg/json/kbd-cyrl.json index 8c0f5b7024f..bbe73b233c0 100644 --- a/msg/json/kbd-cyrl.json +++ b/msg/json/kbd-cyrl.json @@ -1,87 +1,87 @@ -{ - "@metadata": { - "authors": [ - "Тамэ Балъкъэрхэ" - ] - }, - "VARIABLES_DEFAULT_NAME": "Iыхьэ", - "DUPLICATE_BLOCK": "ЩIэтхыкIын", - "ADD_COMMENT": "КIэщIэтхэн", - "REMOVE_COMMENT": "КIэщIэтхэр тегъэкIыжын", - "DELETE_BLOCK": "Блокыр тегъэкIын", - "DELETE_X_BLOCKS": "Блоку %1 тегъэкIын", - "COLLAPSE_BLOCK": "Блокыр зэкIуэцIылъхьэн", - "COLLAPSE_ALL": "Блокхэр зэкIуэцIылъхьэн", - "EXPAND_BLOCK": "Блокыр зэкIуэц1ыхын", - "EXPAND_ALL": "Блокхэр зэкIуэц1ыхын", - "DISABLE_BLOCK": "Блокыр гъэуфIынкIын", - "ENABLE_BLOCK": "Блокыр щIэгъэнэн", - "HELP": "ДэӀэпыкъуэгъуэ", - "COLOUR_PICKER_HELPURL": "https://ru.wikipedia.org/wiki/Цвет", - "COLOUR_PICKER_TOOLTIP": "Плъыфэхэм узыхуейр къыхэх.", - "COLOUR_RANDOM_TITLE": "сыт хуэдэ плъыфэми", - "COLOUR_RANDOM_TOOLTIP": "Плъыфэр езыр-езыру къыхегъэхын.", - "COLOUR_RGB_TITLE": "плъыфэхэм щыщ", - "COLOUR_RGB_RED": "плъыжьу", - "COLOUR_RGB_GREEN": "удзыфэу", - "COLOUR_RGB_BLUE": "щIыхуу", - "COLOUR_BLEND_TITLE": "зэхэпщэн", - "COLOUR_BLEND_COLOUR1": "1 плъыфэ", - "COLOUR_BLEND_COLOUR2": "2 плъыфэ", - "COLOUR_BLEND_RATIO": "1 плъыфэм щыщу", - "COLOUR_BLEND_TOOLTIP": "ПлъыфитIыр епт зэхущытыкIэмкIэ хэхэпщэн (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://ru.wikipedia.org/wiki/Цикл_(программирование)", - "CONTROLS_REPEAT_TITLE": "%1 къытегъэзэжын", - "CONTROLS_REPEAT_INPUT_DO": "гъэзэщIэн", - "CONTROLS_REPEAT_TOOLTIP": "Унафэр зыбжанэрэ егъэзащIэ.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "къытегъэзэжын, къихьэх", - "CONTROLS_IF_MSG_IF": "щыпкъэу", - "CONTROLS_IF_MSG_ELSEIF": "армырамэ щыпкъэу", - "CONTROLS_IF_MSG_ELSE": "армырамэ", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_OPERATION_AND": "икIи", - "LOGIC_OPERATION_OR": "е", - "LOGIC_BOOLEAN_TRUE": "щыпкъэ", - "LOGIC_BOOLEAN_FALSE": "пцIы", - "LOGIC_BOOLEAN_TOOLTIP": "Е щыпкъэ е пцIы къуетыж.", - "LOGIC_NULL": "зыри", - "LOGIC_NULL_TOOLTIP": "Зыри къуетыж.", - "MATH_NUMBER_HELPURL": "https://ru.wikipedia.org/wiki/Число", - "MATH_NUMBER_TOOLTIP": "Бжыгъэ.", - "MATH_ARITHMETIC_HELPURL": "https://ru.wikipedia.org/wiki/Арифметика", - "MATH_ARITHMETIC_TOOLTIP_ADD": "БжыгъитIыр зэхелъхьэри къыщIэкIар къуетыж.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "БжыгъитIыр зэхехри къыщIэкIар къуетыж.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "БжыгъитIыр зэхуегъэбагъуэри къыщIэкIар къуетыж.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Япэ бжыгъэр етIуанэмкIэ егуэшри къыщIэкIар къуетыж.", - "MATH_SINGLE_HELPURL": "https://ru.wikipedia.org/wiki/Квадратный_корень", - "MATH_TRIG_HELPURL": "https://ru.wikipedia.org/wiki/Тригонометрические_функции", - "MATH_CONSTANT_HELPURL": "https://ru.wikipedia.org/wiki/Математическая_константа", - "MATH_IS_EVEN": "зэпэбж", - "MATH_IS_ODD": "зэпэмыбж", - "MATH_IS_PRIME": "къызэрыгуэкI", - "MATH_IS_WHOLE": "бжыгъэ псо", - "MATH_IS_DIVISIBLE_BY": "мыбыкIэ мэгуэш", - "MATH_CHANGE_HELPURL": "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82", - "MATH_ROUND_HELPURL": "https://ru.wikipedia.org/wiki/Округление", - "MATH_ONLIST_OPERATOR_SUM": "къебжэкIыр зэхэлъхьауэ", - "MATH_ONLIST_OPERATOR_MIN": "къебжэкIым и нэхъ мащIэр", - "MATH_ONLIST_TOOLTIP_MIN": "КъебжэкIым и нэхъ мащIэр къуетыж.", - "MATH_ONLIST_OPERATOR_MAX": "къебжэкIым и нэхъыбэр", - "MATH_ONLIST_TOOLTIP_MAX": "КъебжэкIым и нэхъыбэр къуетыж.", - "MATH_MODULO_HELPURL": "https://ru.wikipedia.org/wiki/Деление_с_остатком", - "MATH_MODULO_TITLE": "%1 ÷ %2 бгуэшмэ къыдэхуэр", - "MATH_MODULO_TOOLTIP": "БжыгъитIыр зэхуэбгуэшмэ къыдэхуэр къуетыж.", - "MATH_RANDOM_INT_HELPURL": "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел", - "MATH_RANDOM_FLOAT_HELPURL": "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел", - "TEXT_TEXT_HELPURL": "https://ru.wikipedia.org/wiki/Строковый_тип", - "TEXT_LENGTH_TITLE": "%1 и кIыхьагъыр", - "TEXT_ISEMPTY_TITLE": "%1 нэщIщ", - "TEXT_INDEXOF_OPERATOR_FIRST": "япэу къыщыхэщыр къэгъуэтын", - "TEXT_INDEXOF_OPERATOR_LAST": "иужьыу къыщыхэщыр къэгъуэтын", - "PROCEDURES_BEFORE_PARAMS": "игъусэр:", - "PROCEDURES_CALL_BEFORE_PARAMS": "игъусэр:", - "PROCEDURES_CALLNORETURN_HELPURL": "https://ru.wikipedia.org/wiki/Функция_%28программирование%29", - "PROCEDURES_CALLRETURN_HELPURL": "https://ru.wikipedia.org/wiki/Функция_%28программирование%29", - "DIALOG_OK": "ХЪУАЩ", - "DIALOG_CANCEL": "ЩӀегъуэжын" -} +{ + "@metadata": { + "authors": [ + "Тамэ Балъкъэрхэ" + ] + }, + "VARIABLES_DEFAULT_NAME": "Iыхьэ", + "DUPLICATE_BLOCK": "ЩIэтхыкIын", + "ADD_COMMENT": "КIэщIэтхэн", + "REMOVE_COMMENT": "КIэщIэтхэр тегъэкIыжын", + "DELETE_BLOCK": "Блокыр тегъэкIын", + "DELETE_X_BLOCKS": "Блоку %1 тегъэкIын", + "COLLAPSE_BLOCK": "Блокыр зэкIуэцIылъхьэн", + "COLLAPSE_ALL": "Блокхэр зэкIуэцIылъхьэн", + "EXPAND_BLOCK": "Блокыр зэкIуэц1ыхын", + "EXPAND_ALL": "Блокхэр зэкIуэц1ыхын", + "DISABLE_BLOCK": "Блокыр гъэуфIынкIын", + "ENABLE_BLOCK": "Блокыр щIэгъэнэн", + "HELP": "ДэӀэпыкъуэгъуэ", + "COLOUR_PICKER_HELPURL": "https://ru.wikipedia.org/wiki/Цвет", + "COLOUR_PICKER_TOOLTIP": "Плъыфэхэм узыхуейр къыхэх.", + "COLOUR_RANDOM_TITLE": "сыт хуэдэ плъыфэми", + "COLOUR_RANDOM_TOOLTIP": "Плъыфэр езыр-езыру къыхегъэхын.", + "COLOUR_RGB_TITLE": "плъыфэхэм щыщ", + "COLOUR_RGB_RED": "плъыжьу", + "COLOUR_RGB_GREEN": "удзыфэу", + "COLOUR_RGB_BLUE": "щIыхуу", + "COLOUR_BLEND_TITLE": "зэхэпщэн", + "COLOUR_BLEND_COLOUR1": "1 плъыфэ", + "COLOUR_BLEND_COLOUR2": "2 плъыфэ", + "COLOUR_BLEND_RATIO": "1 плъыфэм щыщу", + "COLOUR_BLEND_TOOLTIP": "ПлъыфитIыр епт зэхущытыкIэмкIэ хэхэпщэн (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://ru.wikipedia.org/wiki/Цикл_(программирование)", + "CONTROLS_REPEAT_TITLE": "%1 къытегъэзэжын", + "CONTROLS_REPEAT_INPUT_DO": "гъэзэщIэн", + "CONTROLS_REPEAT_TOOLTIP": "Унафэр зыбжанэрэ егъэзащIэ.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "къытегъэзэжын, къихьэх", + "CONTROLS_IF_MSG_IF": "щыпкъэу", + "CONTROLS_IF_MSG_ELSEIF": "армырамэ щыпкъэу", + "CONTROLS_IF_MSG_ELSE": "армырамэ", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_OPERATION_AND": "икIи", + "LOGIC_OPERATION_OR": "е", + "LOGIC_BOOLEAN_TRUE": "щыпкъэ", + "LOGIC_BOOLEAN_FALSE": "пцIы", + "LOGIC_BOOLEAN_TOOLTIP": "Е щыпкъэ е пцIы къуетыж.", + "LOGIC_NULL": "зыри", + "LOGIC_NULL_TOOLTIP": "Зыри къуетыж.", + "MATH_NUMBER_HELPURL": "https://ru.wikipedia.org/wiki/Число", + "MATH_NUMBER_TOOLTIP": "Бжыгъэ.", + "MATH_ARITHMETIC_HELPURL": "https://ru.wikipedia.org/wiki/Арифметика", + "MATH_ARITHMETIC_TOOLTIP_ADD": "БжыгъитIыр зэхелъхьэри къыщIэкIар къуетыж.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "БжыгъитIыр зэхехри къыщIэкIар къуетыж.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "БжыгъитIыр зэхуегъэбагъуэри къыщIэкIар къуетыж.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Япэ бжыгъэр етIуанэмкIэ егуэшри къыщIэкIар къуетыж.", + "MATH_SINGLE_HELPURL": "https://ru.wikipedia.org/wiki/Квадратный_корень", + "MATH_TRIG_HELPURL": "https://ru.wikipedia.org/wiki/Тригонометрические_функции", + "MATH_CONSTANT_HELPURL": "https://ru.wikipedia.org/wiki/Математическая_константа", + "MATH_IS_EVEN": "зэпэбж", + "MATH_IS_ODD": "зэпэмыбж", + "MATH_IS_PRIME": "къызэрыгуэкI", + "MATH_IS_WHOLE": "бжыгъэ псо", + "MATH_IS_DIVISIBLE_BY": "мыбыкIэ мэгуэш", + "MATH_CHANGE_HELPURL": "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82", + "MATH_ROUND_HELPURL": "https://ru.wikipedia.org/wiki/Округление", + "MATH_ONLIST_OPERATOR_SUM": "къебжэкIыр зэхэлъхьауэ", + "MATH_ONLIST_OPERATOR_MIN": "къебжэкIым и нэхъ мащIэр", + "MATH_ONLIST_TOOLTIP_MIN": "КъебжэкIым и нэхъ мащIэр къуетыж.", + "MATH_ONLIST_OPERATOR_MAX": "къебжэкIым и нэхъыбэр", + "MATH_ONLIST_TOOLTIP_MAX": "КъебжэкIым и нэхъыбэр къуетыж.", + "MATH_MODULO_HELPURL": "https://ru.wikipedia.org/wiki/Деление_с_остатком", + "MATH_MODULO_TITLE": "%1 ÷ %2 бгуэшмэ къыдэхуэр", + "MATH_MODULO_TOOLTIP": "БжыгъитIыр зэхуэбгуэшмэ къыдэхуэр къуетыж.", + "MATH_RANDOM_INT_HELPURL": "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел", + "MATH_RANDOM_FLOAT_HELPURL": "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел", + "TEXT_TEXT_HELPURL": "https://ru.wikipedia.org/wiki/Строковый_тип", + "TEXT_LENGTH_TITLE": "%1 и кIыхьагъыр", + "TEXT_ISEMPTY_TITLE": "%1 нэщIщ", + "TEXT_INDEXOF_OPERATOR_FIRST": "япэу къыщыхэщыр къэгъуэтын", + "TEXT_INDEXOF_OPERATOR_LAST": "иужьыу къыщыхэщыр къэгъуэтын", + "PROCEDURES_BEFORE_PARAMS": "игъусэр:", + "PROCEDURES_CALL_BEFORE_PARAMS": "игъусэр:", + "PROCEDURES_CALLNORETURN_HELPURL": "https://ru.wikipedia.org/wiki/Функция_%28программирование%29", + "PROCEDURES_CALLRETURN_HELPURL": "https://ru.wikipedia.org/wiki/Функция_%28программирование%29", + "DIALOG_OK": "ХЪУАЩ", + "DIALOG_CANCEL": "ЩӀегъуэжын" +} diff --git a/msg/json/km.json b/msg/json/km.json index fc2913460aa..0258ee25e23 100644 --- a/msg/json/km.json +++ b/msg/json/km.json @@ -1,30 +1,30 @@ -{ - "@metadata": { - "authors": [ - "Aefgh39622", - "Sovichet" - ] - }, - "VARIABLES_DEFAULT_NAME": "ធាតុ", - "TODAY": "ថ្ងៃនេះ", - "DUPLICATE_BLOCK": "ធ្វើស្ទួន", - "ADD_COMMENT": "បន្ថែម​មតិ", - "REMOVE_COMMENT": "ដក​មតិ​ចេញ", - "EXTERNAL_INPUTS": "ធាតុបញ្ចូលខាងក្រៅ", - "DELETE_BLOCK": "លុបប្លុក", - "DELETE_X_BLOCKS": "លុបប្លុក %1", - "DELETE_ALL_BLOCKS": "លុបប្លុក %1 ទាំងអស់?", - "DISABLE_BLOCK": "បិទប្លុក", - "ENABLE_BLOCK": "បើកប្លុក", - "HELP": "ជំនួយ", - "UNDO": "មិន​ធ្វើ​វិញ", - "REDO": "ធ្វើ​វិញ", - "CHANGE_VALUE_TITLE": "ប្ដូរ​តម្លៃ៖", - "RENAME_VARIABLE": "ដក​អថេរ​ចេញ...", - "RENAME_VARIABLE_TITLE": "ប្ដូរ​ឈ្មោះ​អថេរ​ទាំង '%1' ទៅ​ជា៖", - "NEW_VARIABLE": "បង្កើតអថេរ...", - "NEW_VARIABLE_TITLE": "ឈ្មោះ​អថេរ​ថ្មី៖", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "ជ្រើស​ពណ៌​មួយ​ពី​បន្ទះ​ពណ៌", - "DIALOG_OK": "យល់ព្រម" -} +{ + "@metadata": { + "authors": [ + "Aefgh39622", + "Sovichet" + ] + }, + "VARIABLES_DEFAULT_NAME": "ធាតុ", + "TODAY": "ថ្ងៃនេះ", + "DUPLICATE_BLOCK": "ធ្វើស្ទួន", + "ADD_COMMENT": "បន្ថែម​មតិ", + "REMOVE_COMMENT": "ដក​មតិ​ចេញ", + "EXTERNAL_INPUTS": "ធាតុបញ្ចូលខាងក្រៅ", + "DELETE_BLOCK": "លុបប្លុក", + "DELETE_X_BLOCKS": "លុបប្លុក %1", + "DELETE_ALL_BLOCKS": "លុបប្លុក %1 ទាំងអស់?", + "DISABLE_BLOCK": "បិទប្លុក", + "ENABLE_BLOCK": "បើកប្លុក", + "HELP": "ជំនួយ", + "UNDO": "មិន​ធ្វើ​វិញ", + "REDO": "ធ្វើ​វិញ", + "CHANGE_VALUE_TITLE": "ប្ដូរ​តម្លៃ៖", + "RENAME_VARIABLE": "ដក​អថេរ​ចេញ...", + "RENAME_VARIABLE_TITLE": "ប្ដូរ​ឈ្មោះ​អថេរ​ទាំង '%1' ទៅ​ជា៖", + "NEW_VARIABLE": "បង្កើតអថេរ...", + "NEW_VARIABLE_TITLE": "ឈ្មោះ​អថេរ​ថ្មី៖", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "ជ្រើស​ពណ៌​មួយ​ពី​បន្ទះ​ពណ៌", + "DIALOG_OK": "យល់ព្រម" +} diff --git a/msg/json/kn.json b/msg/json/kn.json index 04fc7635daf..e1803451103 100644 --- a/msg/json/kn.json +++ b/msg/json/kn.json @@ -1,342 +1,342 @@ -{ - "@metadata": { - "authors": [ - "Ananth subray", - "Anoop rao", - "Ksh31", - "Ksramwiki1957", - "Mahadevaiah Siddaiah", - "Nayvik", - "Niekiran", - "VASANTH S.N.", - "~aanzx" - ] - }, - "VARIABLES_DEFAULT_NAME": "ಅಂಶ", - "UNNAMED_KEY": "ಹೆಸರಿಡದ", - "TODAY": "ಇಂದು", - "DUPLICATE_BLOCK": "ಪ್ರತಿ", - "ADD_COMMENT": "ಟಿಪ್ಪಣಿ ಸೇರಿಸು", - "REMOVE_COMMENT": "ಟಿಪ್ಪಣಿ ಅಳಿಸು", - "DUPLICATE_COMMENT": "ಟಿಪ್ಪಣಿಯ ಪ್ರತಿ ಮಾಡು", - "EXTERNAL_INPUTS": "ಬಾಹ್ಯ ಒಳಾಂಶಗಳು", - "INLINE_INPUTS": "ಸಾಲಿನಲ್ಲಿರುವ ಒಳಾoಶಗಳು", - "DELETE_BLOCK": "ಬ್ಲಾಕನ್ನು ಅಳಿಸು", - "DELETE_X_BLOCKS": "%1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸು", - "DELETE_ALL_BLOCKS": "ಎಲ್ಲಾ %1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸುವುದೇ ?", - "CLEAN_UP": "ಬ್ಲಾಕ್‍ಗಳನ್ನೆಲ್ಲಾ ಒಪ್ಪವಾಗಿರಿಸು", - "COLLAPSE_BLOCK": "ಬ್ಲಾಕ್‍ನ್ನು ಮಡಿಸಿಬಿಡು", - "COLLAPSE_ALL": "ಬ್ಲಾಕ್‍ಗಳನ್ನು ಮಡಿಸಿಬಿಡು", - "EXPAND_BLOCK": "ಬ್ಲಾಕನ್ನು ವಿಸ್ತರಿಸು", - "EXPAND_ALL": "ಬ್ಲಾಕ್‍ಗಳನ್ನು ವಿಸ್ತರಿಸು", - "DISABLE_BLOCK": "ಬ್ಲಾಕನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು", - "ENABLE_BLOCK": "ಬ್ಲಾಕನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು", - "HELP": "ಸಹಾಯ", - "UNDO": "ಹಿಂದಿನಂತೆ ಮಾಡು", - "REDO": "ಮತ್ತೆ ಮಾಡು", - "CHANGE_VALUE_TITLE": "ಮೌಲ್ಯ ಬದಲಾಯಿಸು:", - "RENAME_VARIABLE": "ಚರಾಂಶವನ್ನು ಮರುಹೆಸರಿಸು...", - "RENAME_VARIABLE_TITLE": "ಎಲ್ಲ '%1' ಚರಾಂಶಗಳನ್ನು ಮರುಹೆಸರಿಸು:", - "NEW_VARIABLE": "ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ...", - "NEW_STRING_VARIABLE": "ಚಿಹ್ನೆಗಳ ಸರಣಿಯ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು...", - "NEW_NUMBER_VARIABLE": "ಸಂಖ್ಯಾ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ...", - "NEW_COLOUR_VARIABLE": "ಬಣ್ಣದ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ...", - "NEW_VARIABLE_TYPE_TITLE": "ಹೊಸ ಚರಾಂಶದ ಡೇಟಾಪ್ರಕಾರ:", - "NEW_VARIABLE_TITLE": "ಹೊಸ ಚರಾಂಶದ ಹೆಸರು:", - "VARIABLE_ALREADY_EXISTS": "'%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ '%2' ಡೇಟಾ ಪ್ರಕಾರದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.", - "DELETE_VARIABLE_CONFIRMATION": "'%2' ಚರಾಂಶದ '%1' ಉಪಯೋಗಗಳನ್ನು ಅಳಿಸುವುದೇ ?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ. ಏಕೆಂದರೆ ಇದು '%2' ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದ ಭಾಗವಾಗಿದೆ", - "DELETE_VARIABLE": "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸು", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "ವರ್ಣಫಲಕದಿಂದ ಬಣ್ಣವನ್ನು ಆರಿಸು.", - "COLOUR_RANDOM_TITLE": "ಯಾದೃಚ್ಛಿಕ ಬಣ್ಣ", - "COLOUR_RANDOM_TOOLTIP": "ಯಾದೃಚ್ಛಿಕವಾಗಿ ಯಾವುದಾದರೂ ಒಂದು ಬಣ್ಣವನ್ನು ಆರಿಸು.", - "COLOUR_RGB_TITLE": "ಬಣ್ಣದಿಂದ", - "COLOUR_RGB_RED": "ಕೆಂಪು", - "COLOUR_RGB_GREEN": "ಹಸಿರು", - "COLOUR_RGB_BLUE": "ನೀಲಿ", - "COLOUR_RGB_TOOLTIP": "ನಿರ್ದಿಷ್ಟ ಪ್ರಮಾಣದಲ್ಲಿ ಕೆಂಪು, ಹಸಿರು ಮತ್ತು ನೀಲಿಯನ್ನು ಹೊಂದಿದ ಒಂದು ಬಣ್ಣವನ್ನು ರಚಿಸಿ. ಎಲ್ಲಾ ಮೌಲ್ಯಗಳು 0 ಮತ್ತು 100 ರ ನಡುವೆ ಇರಲಿ.", - "COLOUR_BLEND_TITLE": "ಮಿಶ್ರಣಮಾಡು", - "COLOUR_BLEND_COLOUR1": "ಬಣ್ಣ 1", - "COLOUR_BLEND_COLOUR2": "ಬಣ್ಣ 2", - "COLOUR_BLEND_RATIO": "ಅನುಪಾತ", - "COLOUR_BLEND_TOOLTIP": "ಕೊಟ್ಟಿರುವ ಅನುಪಾತದಂತೆ(0.0 - 1.0) ಎರಡು ಬಣ್ಣಗಳನ್ನು ಮಿಶ್ರಣ ಮಾಡುತ್ತದೆ.", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 ಬಾರಿ ಪುನರಾವರ್ತಿಸು", - "CONTROLS_REPEAT_INPUT_DO": "ಮಾಡು", - "CONTROLS_REPEAT_TOOLTIP": "ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಹಲವಾರು ಬಾರಿ ಮಾಡು.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ಷರತ್ತು 'ಸತ್ಯ' ಆಗಿರುವವರೆಗೆ ಪುನರಾವರ್ತಿಸು", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ತನಕ ಪುನರಾವರ್ತಿಸು", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ಮೌಲ್ಯವು ಸುಳ್ಳಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", - "CONTROLS_FOR_TOOLTIP": "ಚರಾಂಶವಾದ %1 ಪ್ರಾರಂಭ ಸಂಖ್ಯೆಯಿಂದ ಅಂತಿಮ ಸಂಖ್ಯೆಯವರೆಗೆ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಿ, ನಿರ್ದಿಷ್ಟ ಮಧ್ಯಂತರದಿಂದ ಎಣಿಸಿ, ಮತ್ತು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಬ್ಲಾಕ್ ಗಳನ್ನು ಮಾಡಲಿ.", - "CONTROLS_FOR_TITLE": "%1 ಜೊತೆ ಎಣಿಸು %2 ಇಂದ %3 ತನಕ %4 ಪ್ರಮಾಣದಲ್ಲಿ", - "CONTROLS_FOREACH_TITLE": "%2 ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿ %1 ಅಂಶಕ್ಕೆ", - "CONTROLS_FOREACH_TOOLTIP": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಅಂಶಕ್ಕೆ, ಚರಾಂಶ '%1'ನ್ನು ಅಂಶಕ್ಕೆ ಜೋಡಿಸಿ, ತದನಂತರ ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ಪುನರಾವರ್ತನೆಯಿಂದ ನಿರ್ಗಮಿಸು", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ಲೂಪ್ ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರೆಯಲಿ", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ಒಳಹೊಕ್ಕಿರುವ ಲೂಪಿನಿಂದ ನಿರ್ಗಮಿಸು.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ಈ ಲೂಪಿನ ಉಳಿದ ಭಾಗವನ್ನು ಬಿಟ್ಟು, ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರಿಸಿ.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕನ್ನು ಲೂಪ್‌ನಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು.", - "CONTROLS_IF_TOOLTIP_1": "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", - "CONTROLS_IF_TOOLTIP_2": "ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು, ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು.", - "CONTROLS_IF_TOOLTIP_3": "ಮೊದಲನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ. ಇಲ್ಲದಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", - "CONTROLS_IF_TOOLTIP_4": "ಮೊದಲನೆಯ ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಒಂದುವೇಳೆ ಯಾವುದೇ ಮೌಲ್ಯವೂ ಸತ್ಯವಾಗಿರದಿದ್ದರೆ, ಕೊನೆಯ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು.", - "CONTROLS_IF_MSG_IF": "ಆಗಿದ್ದರೆ", - "CONTROLS_IF_MSG_ELSEIF": "ಆಗಿರದಿದ್ದರೆ", - "CONTROLS_IF_MSG_ELSE": "ಇಲ್ಲದಿದ್ದರೆ", - "CONTROLS_IF_IF_TOOLTIP": "ಈ 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಒಂದು ಷರತ್ತು ಸೇರಿಸಿ.", - "CONTROLS_IF_ELSE_TOOLTIP": "ಅಂತಿಮವಾದ, ಎಲ್ಲವನ್ನೂ-ಹಿಡಿ ಷರತ್ತನ್ನು 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಸೇರಿಸಿ.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿದ್ದರೆ, ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿರದಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", - "LOGIC_COMPARE_TOOLTIP_LT": "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದ್ದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", - "LOGIC_COMPARE_TOOLTIP_LTE": "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", - "LOGIC_COMPARE_TOOLTIP_GT": "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", - "LOGIC_COMPARE_TOOLTIP_GTE": "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", - "LOGIC_OPERATION_TOOLTIP_AND": "ಒದಗಿಸುವ ಎರಡೂ ಅಂಶಗಳು ಸರಿಯಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", - "LOGIC_OPERATION_AND": "ಮತ್ತು", - "LOGIC_OPERATION_TOOLTIP_OR": "ಯಾವುದಾದರೂ ಒಂದು ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", - "LOGIC_OPERATION_OR": "ಅಥವಾ", - "LOGIC_NEGATE_TITLE": "%1 ಅಲ್ಲ", - "LOGIC_NEGATE_TOOLTIP": "ಒದಗಿಸುವ ಅಂಶ ಸುಳ್ಳಾಗಿದ್ದರೆ ಸರಿಯೆನ್ನಿ. ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ತಪ್ಪೆನ್ನಿ.", - "LOGIC_BOOLEAN_TRUE": "ಸತ್ಯ", - "LOGIC_BOOLEAN_FALSE": "ಸುಳ್ಳು", - "LOGIC_BOOLEAN_TOOLTIP": "ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಎರಡರಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "LOGIC_NULL": "ಶೂನ್ಯ", - "LOGIC_NULL_TOOLTIP": "ಶೂನ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "LOGIC_TERNARY_CONDITION": "ಪರೀಕ್ಷೆ", - "LOGIC_TERNARY_IF_TRUE": "ಸತ್ಯ ಆಗಿದ್ದರೆ", - "LOGIC_TERNARY_IF_FALSE": "ಸುಳ್ಳು ಆಗಿದ್ದರೆ", - "LOGIC_TERNARY_TOOLTIP": "'ಪರೀಕ್ಷೆ'ಯಲ್ಲಿನ ಷರತ್ತನ್ನು ಪರಿಶೀಲಿಸಿ. ಷರತ್ತು ಸರಿಯಾಗಿದ್ದರೆ, 'ಸತ್ಯವಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನು; ಇಲ್ಲದಿದ್ದರೆ 'ಸುಳ್ಳಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನೂ ಹಿಂತಿರುಗಿಸುವುದು.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "ಒಂದು ಸಂಖ್ಯೆ.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "ಎರಡು ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "ಎರಡು ಸಂಖ್ಯೆಗಳ ವ್ಯತ್ಯಾಸವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "ಎರಡು ಸಂಖ್ಯೆಗಳ ಗುಣಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "ಎರಡು ಸಂಖ್ಯೆಗಳ ಭಾಗಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "ಮೊದಲ ಸಂಖ್ಯೆಯ ಘಾತಾಂಶ ಎರಡನೇ ಸಂಖ್ಯೆಯಾದಾಗಿನ ಫಲಿತಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "ವರ್ಗಮೂಲ", - "MATH_SINGLE_TOOLTIP_ROOT": "ಸಂಖ್ಯೆಯ ವರ್ಗಮೂಲವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_SINGLE_OP_ABSOLUTE": "ಪರಿಪೂರ್ಣ", - "MATH_SINGLE_TOOLTIP_ABS": "ಸಂಖ್ಯೆಯೊಂದರ ಪರಿಪೂರ್ಣ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_SINGLE_TOOLTIP_NEG": "ಸಂಖ್ಯೆಯೊಂದರ ನಿರಾಕರಣೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_SINGLE_TOOLTIP_LN": "ಸಂಖ್ಯೆಯ ನೈಸರ್ಗಿಕ ಲಾಗರಿಥಮ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_SINGLE_TOOLTIP_LOG10": "ಒಂದು ಸಂಖ್ಯೆಯ ಆಧಾರ 10 ಲಾಗರಿಥಮನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_SINGLE_TOOLTIP_EXP": "ಒಂದು ಸಂಖ್ಯೆಯ e ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_SINGLE_TOOLTIP_POW10": "ಒಂದು ಸಂಖ್ಯೆಯ 10ರ ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "ಕೋನವೊಂದರ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", - "MATH_TRIG_TOOLTIP_COS": "ಕೋನವೊಂದರ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", - "MATH_TRIG_TOOLTIP_TAN": "ಕೋನವೊಂದರ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", - "MATH_TRIG_TOOLTIP_ASIN": "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_TRIG_TOOLTIP_ACOS": "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", - "MATH_TRIG_TOOLTIP_ATAN": "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕಗಳಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸಿ:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", - "MATH_IS_EVEN": "ಸಮ ಸಂಖ್ಯೆಯೇ?", - "MATH_IS_ODD": "ಬೆಸ ಸಂಖ್ಯೆಯೇ?", - "MATH_IS_PRIME": "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆಯೇ?", - "MATH_IS_WHOLE": "ಪೂರ್ಣಸಂಖ್ಯೆಯೇ?", - "MATH_IS_POSITIVE": "ಧನಾತ್ಮಕವೇ?", - "MATH_IS_NEGATIVE": "ಋಣಾತ್ಮಕವೇ?", - "MATH_IS_DIVISIBLE_BY": "ಇದರಿಂದ ಭಾಗಿಸಬಹುದೇ?", - "MATH_IS_TOOLTIP": "ಒಂದು ಸಂಖ್ಯೆ ಸಮ, ಬೆಸ, ಅವಿಭಾಜ್ಯ, ಪೂರ್ಣ, ಧನಾತ್ಮಕ, ಋಣಾತ್ಮಕವಾಗಿದೆಯೇ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯಿಂದ ಭಾಗಿಸ ಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "%1 ಅನ್ನು %2 ರಿಂದ ಬದಲಾಯಿಸಿ", - "MATH_CHANGE_TOOLTIP": "ಚರಾಂಶ '%1' ಕ್ಕೆ ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಮೇಲಿನ ಅಥವಾ ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ.", - "MATH_ROUND_OPERATOR_ROUND": "ಸುತ್ತು", - "MATH_ROUND_OPERATOR_ROUNDUP": "ಮೇಲಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ.", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ.", - "MATH_ONLIST_OPERATOR_SUM": "ಪಟ್ಟಿಯ ಮೊತ್ತ", - "MATH_ONLIST_TOOLTIP_SUM": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ONLIST_OPERATOR_MIN": "ಪಟ್ಟಿಯ ಕನಿಷ್ಠ", - "MATH_ONLIST_TOOLTIP_MIN": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಕನಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ONLIST_OPERATOR_MAX": "ಪಟ್ಟಿಯ ಗರಿಷ್ಠ", - "MATH_ONLIST_TOOLTIP_MAX": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ONLIST_OPERATOR_AVERAGE": "ಪಟ್ಟಿಯ ಸರಾಸರಿ", - "MATH_ONLIST_TOOLTIP_AVERAGE": "ಪಟ್ಟಿಯಲ್ಲಿನ ಸಂಖ್ಯಾ ಮೌಲ್ಯಗಳ ಸರಾಸರಿ (ಅಂಕಗಣಿತದ ಸರಾಸರಿ) ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ONLIST_OPERATOR_MEDIAN": "ಪಟ್ಟಿಯ ಮಧ್ಯಾಂಕ", - "MATH_ONLIST_TOOLTIP_MEDIAN": "ಪಟ್ಟಿಯಲ್ಲಿನ ಮಧ್ಯಾಂಕ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ONLIST_OPERATOR_MODE": "ಪಟ್ಟಿಯಲ್ಲಿನ ಆಗಾಗ್ಗೆ ಕಾಣಿಸಿಕೊಳ್ಳುವ ಸಂಖ್ಯೆಗಳು", - "MATH_ONLIST_TOOLTIP_MODE": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಸಾಮಾನ್ಯ ಅಂಶಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ONLIST_OPERATOR_STD_DEV": "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನ", - "MATH_ONLIST_TOOLTIP_STD_DEV": "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ONLIST_OPERATOR_RANDOM": "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶ", - "MATH_ONLIST_TOOLTIP_RANDOM": "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "%1 ÷ %2 ರ ಶೇಷ", - "MATH_MODULO_TOOLTIP": "ಎರಡು ಸಂಖ್ಯೆಗಳ ವಿಭಜನೆಯ ಶೇಷವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_CONSTRAIN_TITLE": "%1ಅನ್ನು ಕಡಿಮೆ %2 ಹೆಚ್ಚಿನ %3 ಮೌಲ್ಯಗಳ ನಡುವೆ ನಿರ್ಬಂಧಿಸಿ", - "MATH_CONSTRAIN_TOOLTIP": "ನಿಗದಿತ ಮಿತಿಗಳ ನಡುವೆ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸಿ(ಒಳಗೊ೦ಡ).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕ %1 ರಿಂದ %2 ರವರೆಗೆ", - "MATH_RANDOM_INT_TOOLTIP": "ಎರಡು ನಿರ್ದಿಷ್ಟ ಮಿತಿಗಳ ನಡುವೆ ಇರುವ ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿ", - "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (ಒಳಗೊಂಡ) ಮತ್ತು 1.0 (ವಿಶೇಷ) ನಡುವೆ ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "X:%1 Y:%2 ಬಿಂದುವಿನ ಆರ್ಕ್ ಟ್ಯಾನ್", - "MATH_ATAN2_TOOLTIP": "ಬಿಂದು (X,Y) ನ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ನ್ನು -180 ರಿಂದ 180 ರವರೆಗಿನ ಡಿಗ್ರಿಗಳಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "ಒಂದು ಅಕ್ಷರ, ಪದ ಅಥವಾ ಪಠ್ಯದ ಸಾಲು.", - "TEXT_JOIN_TITLE_CREATEWITH": "ಇದರೊಂದಿಗೆ ಪಠ್ಯವನ್ನು ರಚಿಸಿ", - "TEXT_JOIN_TOOLTIP": "ಹಲವಾರು ಅಂಶಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸುವ ಮೂಲಕ ಪಠ್ಯದ ತುಣುಕನ್ನು ರಚಿಸಿ.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "ಸೇರಿಸು", - "TEXT_CREATE_JOIN_TOOLTIP": "ಈ ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "ಪಠ್ಯಕ್ಕೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ.", - "TEXT_APPEND_TITLE": " %1 ಕ್ಕೆ ಪಠ್ಯ %2 ನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ.", - "TEXT_APPEND_TOOLTIP": "'%1' ಚರಾಂಶಕ್ಕೆ ಕೆಲವು ಪಠ್ಯವನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ.", - "TEXT_LENGTH_TITLE": "%1ರ ಉದ್ದ", - "TEXT_LENGTH_TOOLTIP": "ಒದಗಿಸಿದ ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಸಂಖ್ಯೆಯನ್ನು (ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ) ಹಿಂತಿರುಗಿಸುವುದು.", - "TEXT_ISEMPTY_TITLE": "%1 ಖಾಲಿಯಿದೆ", - "TEXT_ISEMPTY_TOOLTIP": "ಒದಗಿಸಿದ ಪಠ್ಯ ಖಾಲಿಯಾಗಿದ್ದರೆ 'ಸತ್ಯ' ಹಿಂತಿರುಗಿಸುವುದು.", - "TEXT_INDEXOF_TOOLTIP": "ಎರಡನೇ ಪಠ್ಯದಲ್ಲಿ ಮೊದಲ ಪಠ್ಯದ ಸಂಭಾವ್ಯದ, ಮೊದಲ/ಕೊನೆಯ ಸೂಚ್ಯಂಕವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಪಠ್ಯ ಕಂಡುಬಂದಿಲ್ಲದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "TEXT_INDEXOF_TITLE": "ಪಠ್ಯದಲ್ಲಿ %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "ಪಠ್ಯದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ", - "TEXT_INDEXOF_OPERATOR_LAST": "ಪಠ್ಯದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ", - "TEXT_CHARAT_TITLE": "ಪಠ್ಯದಲ್ಲಿ %1 %2", - "TEXT_CHARAT_FROM_START": "# ಅಕ್ಷರ ಪಡೆಯಿರಿ", - "TEXT_CHARAT_FROM_END": "ಕೊನೆಯಿಂದ # ಅಕ್ಷರ ಪಡೆಯಿರಿ", - "TEXT_CHARAT_FIRST": "ಮೊದಲ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ", - "TEXT_CHARAT_LAST": "ಕೊನೆಯ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ", - "TEXT_CHARAT_RANDOM": "ಯಾದೃಚ್ಛಿತ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ", - "TEXT_CHARAT_TOOLTIP": "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಕ್ಷರವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "TEXT_GET_SUBSTRING_TOOLTIP": "ಪಠ್ಯದ ನಿರ್ದಿಷ್ಟ ಭಾಗವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ಪಠ್ಯದಲ್ಲಿ", - "TEXT_GET_SUBSTRING_START_FROM_START": "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ", - "TEXT_GET_SUBSTRING_START_FROM_END": "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ", - "TEXT_GET_SUBSTRING_START_FIRST": "ಮೊದಲ ಅಕ್ಷರದಿಂದ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ", - "TEXT_GET_SUBSTRING_END_FROM_START": "# ಅಕ್ಷರದವರೆಗೆ", - "TEXT_GET_SUBSTRING_END_FROM_END": "ಕೊನೆಯಿಂದ # ಅಕ್ಷರದವರೆಗೆ", - "TEXT_GET_SUBSTRING_END_LAST": "ಕೊನೆಯ ಅಕ್ಷರದವರೆಗೆ", - "TEXT_CHANGECASE_TOOLTIP": "ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಪ್ರಸ್ತುತಕ್ಕೆ ವಿರುದ್ಡವಾದ ದೊಡ್ಡಕ್ಷರ ಅಥವಾ ಸಣ್ಣಕ್ಷರದಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "ದೊಡ್ಡಕ್ಷರಕ್ಕೆ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "ಸಣ್ಣಕ್ಷರಕ್ಕೆ", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "ಶೀರ್ಷಿಕೆಯ ಅಕ್ಷರವಾಗಿ", - "TEXT_TRIM_TOOLTIP": "ಒಂದು ಅಥವಾ ಎರಡೂ ತುದಿಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾದ ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "TEXT_TRIM_OPERATOR_BOTH": "ಎರಡೂ ಕಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ", - "TEXT_TRIM_OPERATOR_LEFT": "ಎಡಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ", - "TEXT_TRIM_OPERATOR_RIGHT": "ಬಲಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ", - "TEXT_PRINT_TITLE": "%1 ಮುದ್ರಿಸಿ", - "TEXT_PRINT_TOOLTIP": "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪಠ್ಯ, ಸಂಖ್ಯೆ ಅಥವಾ ಇತರ ಮೌಲ್ಯವನ್ನು ಮುದ್ರಿಸಿ.", - "TEXT_PROMPT_TYPE_TEXT": "ಸಂದೇಶದೊಂದಿಗೆ ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ", - "TEXT_PROMPT_TYPE_NUMBER": "ಸಂದೇಶದೊಂದಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ", - "TEXT_PROMPT_TOOLTIP_NUMBER": "ಬಳಕೆದಾರರಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ.", - "TEXT_PROMPT_TOOLTIP_TEXT": "ಬಳಕೆದಾರರಿಗೆ ಕೆಲವು ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ.", - "TEXT_COUNT_MESSAGE0": "%2 ರಲ್ಲಿ %1 ಅನ್ನು ಎಣಿಸಿ", - "TEXT_COUNT_TOOLTIP": "ಬೇರೆ ಕೆಲವು ಪಠ್ಯಗಳಲ್ಲಿ ಕೆಲವು ಪಠ್ಯವು ಎಷ್ಟು ಬಾರಿ ಸಂಭವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಎಣಿಸಿ.", - "TEXT_REPLACE_MESSAGE0": "%1 ಅನ್ನು %3 ರಲ್ಲಿ %2 ರೊಂದಿಗೆ ಬದಲಾಯಿಸಿ.", - "TEXT_REPLACE_TOOLTIP": "ಬೇರೆ ಪಠ್ಯದೊಳಗಿನ ಎಲ್ಲಾ ಕೆಲವು ಪಠ್ಯದ ಸಂಭಾವ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಿ.", - "TEXT_REVERSE_MESSAGE0": "%1 ಅನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ.", - "TEXT_REVERSE_TOOLTIP": "ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಕ್ರಮವನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ.", - "LISTS_CREATE_EMPTY_TITLE": "ಖಾಲಿ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ", - "LISTS_CREATE_EMPTY_TOOLTIP": "ಯಾವುದೇ ದತ್ತಾಂಶ ದಾಖಲೆಗಳನ್ನು ಹೊಂದಿರದ, 0 ಉದ್ದದ, ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_CREATE_WITH_TOOLTIP": "ಹಲವು ಅಂಶಗಳೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ.", - "LISTS_CREATE_WITH_INPUT_WITH": "ಇದರೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ.", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ಪಟ್ಟಿ", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "ಈ ಪಟ್ಟಿಯ ಬ್ಲಾಕ್ ಅನ್ನು ಮರುಸಂರಚಿಸಲು ವಿಭಾಗಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "ಪಟ್ಟಿಗೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ.", - "LISTS_REPEAT_TOOLTIP": "ಕೊಟ್ಟಿರುವ ಮೌಲ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟ ಬಾರಿ ಪುನರಾವರ್ತಿಸುವ ಪಟ್ಟಿಯನ್ನು ರಚಿಸುತ್ತದೆ.", - "LISTS_REPEAT_TITLE": "%1 ಅಂಶದೊಂದಿಗೆ %2 ಬಾರಿ ಪುನರಾವರ್ತಿತಗೊಂಡ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ.", - "LISTS_LENGTH_TITLE": "%1 ರ ಉದ್ದ", - "LISTS_LENGTH_TOOLTIP": "ಪಟ್ಟಿಯ ಉದ್ದವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_ISEMPTY_TITLE": "%1 ಖಾಲಿಯಾಗಿದೆ", - "LISTS_ISEMPTY_TOOLTIP": "ಪಟ್ಟಿ ಖಾಲಿಯಾಗಿದ್ದರೆ ಸತ್ಯ ಎಂದು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_INLIST": "ಪಟ್ಟಿಯಲ್ಲಿ", - "LISTS_INDEX_OF_FIRST": "ಅಂಶದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ", - "LISTS_INDEX_OF_LAST": "ಅಂಶದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ", - "LISTS_INDEX_OF_TOOLTIP": "ಪಟ್ಟಿಯಲ್ಲಿನ ಅಂಶದ ಮೊದಲ/ಕೊನೆಯ ಸಂಭಾವ್ಯದ ಸೂಚಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಅಂಶ ಕಂಡುಬರದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_GET_INDEX_GET": "ಪಡೆಯಿರಿ", - "LISTS_GET_INDEX_GET_REMOVE": "ಪಡೆಯಿರಿ ಮತ್ತು ತೆಗೆದುಹಾಕಿ", - "LISTS_GET_INDEX_REMOVE": "ತೆಗೆ", - "LISTS_GET_INDEX_FROM_END": "# ಕೊನೆಯಿಂದ", - "LISTS_GET_INDEX_FIRST": "ಮೊದಲ", - "LISTS_GET_INDEX_LAST": "ಕೊನೆಯ", - "LISTS_GET_INDEX_RANDOM": "ಯಾದೃಚ್ಛಿಕ", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ಮೊದಲ ಅಂಶ ಆಗಿದೆ.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ಕೊನೆಯ ಅಂಶ ಆಗಿದೆ.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಇರುವ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು .", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿರುವ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.", - "LISTS_SET_INDEX_SET": "ಗೊತ್ತುಪಡಿಸಿ", - "LISTS_SET_INDEX_INSERT": "ನಲ್ಲಿ ಸೇರಿಸಿ", - "LISTS_SET_INDEX_INPUT_TO": "ಹಾಗೆ", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "ಪಟ್ಟಿಯಲ್ಲಿನ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "ಪಟ್ಟಿಯಲ್ಲಿ ಮೊದಲ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "ಪಟ್ಟಿಯಲ್ಲಿ ಕೊನೆಯ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "ಪಟ್ಟಿಯ ಪ್ರಾರಂಭದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "ಅಂಶವನ್ನು ಪಟ್ಟಿಯ ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "ಅಂಶವನ್ನು ಪಟ್ಟಿಯಲ್ಲಿ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಒಳಸೇರಿಸುತ್ತದೆ.", - "LISTS_GET_SUBLIST_START_FROM_START": "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ", - "LISTS_GET_SUBLIST_START_FROM_END": "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ", - "LISTS_GET_SUBLIST_START_FIRST": "ಮೊದಲಿನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ", - "LISTS_GET_SUBLIST_END_FROM_START": "# ವರೆಗೆ", - "LISTS_GET_SUBLIST_END_FROM_END": "ಕೊನೆಯಿಂದ # ವರೆಗೆ", - "LISTS_GET_SUBLIST_END_LAST": "ಕೊನೆಯವರೆಗೂ", - "LISTS_GET_SUBLIST_TOOLTIP": "ಪಟ್ಟಿಯ ನಿರ್ದಿಷ್ಟ ಭಾಗದ ಪ್ರತಿಯನ್ನು ರಚಿಸುತ್ತದೆ.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "%1 %2 %3 ವಿಂಗಡಿಸಿ", - "LISTS_SORT_TOOLTIP": "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ವಿಂಗಡಿಸಿ.", - "LISTS_SORT_ORDER_ASCENDING": "ಆರೋಹಣ", - "LISTS_SORT_ORDER_DESCENDING": "ಅವರೋಹಣ", - "LISTS_SORT_TYPE_NUMERIC": "ಸಂಖ್ಯಾತ್ಮಕ", - "LISTS_SORT_TYPE_TEXT": "ವರ್ಣಮಾಲೆಯ", - "LISTS_SORT_TYPE_IGNORECASE": "ವರ್ಣಮಾಲೆಯ, ದೊಡ್ಡಕ್ಷರ/ಸಣ್ಣಕ್ಷರವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ", - "LISTS_SPLIT_LIST_FROM_TEXT": "ಪಠ್ಯದಿಂದ ಪಟ್ಟಿಯನ್ನು ಮಾಡಿ", - "LISTS_SPLIT_TEXT_FROM_LIST": "ಪಟ್ಟಿಯಿಂದ ಪಠ್ಯವನ್ನು ಮಾಡಿ", - "LISTS_SPLIT_WITH_DELIMITER": "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯೊಡನೆ", - "LISTS_SPLIT_TOOLTIP_SPLIT": "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಲ್ಲಿ ಮುರಿದು, ಪಠ್ಯವನ್ನು ವಿಭಜಿಸಿ ಪಠ್ಯಗಳ ಪಟ್ಟಿಮಾಡಿ.", - "LISTS_SPLIT_TOOLTIP_JOIN": "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಿಂದ ಬೇರ್ಪಡಿಸಲಾಗಿರುವ ಪಠ್ಯಗಳ ಪಟ್ಟಿಯನ್ನೆಲ್ಲಾ ಒಂದು ಪಠ್ಯಕ್ಕೆ ಸೇರಿಸಿ.", - "LISTS_REVERSE_MESSAGE0": "%1 ನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ", - "LISTS_REVERSE_TOOLTIP": "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ.", - "VARIABLES_GET_TOOLTIP": "ಈ ಚರಾಂಶದ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.", - "VARIABLES_GET_CREATE_SET": "'%1 ಬದಲಿಸಿ' ರಚಿಸಿ", - "VARIABLES_SET": "%1 ನ್ನು %2 ಕ್ಕೆ ಬದಲಿಸಿ", - "VARIABLES_SET_TOOLTIP": "ಈ ಚರಾಂಶವನ್ನು ಸೇರಿಸುವ ಅಂಶಕ್ಕೆ ಸಮಾನವಾಗಿ ಬದಲಿಸುತ್ತದೆ.", - "VARIABLES_SET_CREATE_GET": "'%1 ಪಡೆಯಿರಿ' ರಚಿಸಿ", - "PROCEDURES_DEFNORETURN_TITLE": "ಗೆ", - "PROCEDURES_DEFNORETURN_PROCEDURE": "ಏನಾದರೂ ಮಾಡಿ", - "PROCEDURES_BEFORE_PARAMS": "ಜೊತೆ:", - "PROCEDURES_CALL_BEFORE_PARAMS": "ಜೊತೆ:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "ಯಾವುದೇ ಹೊರಾಂಶ ಇಲ್ಲದ ಕಾರ್ಯಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ.", - "PROCEDURES_DEFNORETURN_COMMENT": "ಈ ಕಾರ್ಯಘಟಕವನ್ನು ವಿವರಿಸಿ ...", - "PROCEDURES_DEFRETURN_RETURN": "ಹಿಂತಿರುಗಿಸಿ", - "PROCEDURES_DEFRETURN_TOOLTIP": "ಹೊರಾಂಶ ಇರುವ ಕಾರ್ಯ ಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ.", - "PROCEDURES_ALLOW_STATEMENTS": "ಹೇಳಿಕೆಗಳನ್ನು ಅನುಮತಿಸಿ", - "PROCEDURES_DEF_DUPLICATE_WARNING": "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯಘಟಕವು ನಕಲಿ ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿದೆ.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ ಮತ್ತು ಅದರ ಹೊರಾಂಶವನ್ನು ಉಪಯೋಗಿಸಿ", - "PROCEDURES_MUTATORCONTAINER_TITLE": "ಒಳಾoಶಗಳು", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "ಈ ಕಾರ್ಯಕ್ಕೆ ಒಳಾoಶಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ.", - "PROCEDURES_MUTATORARG_TITLE": "ಒಳಾoಶದ ಹೆಸರು:", - "PROCEDURES_MUTATORARG_TOOLTIP": "ಕಾರ್ಯಘಟಕಕ್ಕೆ ಒಳಾoಶವನ್ನು ಸೇರಿಸಿ.", - "PROCEDURES_HIGHLIGHT_DEF": "ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ", - "PROCEDURES_CREATE_DO": "'%1' ರಚಿಸಿ", - "PROCEDURES_IFRETURN_TOOLTIP": "ಒಂದು ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", - "PROCEDURES_IFRETURN_WARNING": "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕ್ ಅನ್ನು ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "ಏನಾದರು ಹೇಳಿ...", - "WORKSPACE_ARIA_LABEL": "ಬ್ಲಾಕ್ಲಿ ಕಾರ್ಯಕ್ಷೇತ್ರ", - "COLLAPSED_WARNINGS_WARNING": "ಸಂಕುಚಿತಗೊಂಡ ಬ್ಲಾಕ್ ಗಳು ಎಚ್ಚರಿಕೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ.", - "DIALOG_OK": "ಸರಿ", - "DIALOG_CANCEL": "ರದ್ದುಮಾಡಿ" -} +{ + "@metadata": { + "authors": [ + "Ananth subray", + "Anoop rao", + "Ksh31", + "Ksramwiki1957", + "Mahadevaiah Siddaiah", + "Nayvik", + "Niekiran", + "VASANTH S.N.", + "~aanzx" + ] + }, + "VARIABLES_DEFAULT_NAME": "ಅಂಶ", + "UNNAMED_KEY": "ಹೆಸರಿಡದ", + "TODAY": "ಇಂದು", + "DUPLICATE_BLOCK": "ಪ್ರತಿ", + "ADD_COMMENT": "ಟಿಪ್ಪಣಿ ಸೇರಿಸು", + "REMOVE_COMMENT": "ಟಿಪ್ಪಣಿ ಅಳಿಸು", + "DUPLICATE_COMMENT": "ಟಿಪ್ಪಣಿಯ ಪ್ರತಿ ಮಾಡು", + "EXTERNAL_INPUTS": "ಬಾಹ್ಯ ಒಳಾಂಶಗಳು", + "INLINE_INPUTS": "ಸಾಲಿನಲ್ಲಿರುವ ಒಳಾoಶಗಳು", + "DELETE_BLOCK": "ಬ್ಲಾಕನ್ನು ಅಳಿಸು", + "DELETE_X_BLOCKS": "%1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸು", + "DELETE_ALL_BLOCKS": "ಎಲ್ಲಾ %1 ಬ್ಲಾಕ್‍ಗಳನ್ನು ಅಳಿಸುವುದೇ ?", + "CLEAN_UP": "ಬ್ಲಾಕ್‍ಗಳನ್ನೆಲ್ಲಾ ಒಪ್ಪವಾಗಿರಿಸು", + "COLLAPSE_BLOCK": "ಬ್ಲಾಕ್‍ನ್ನು ಮಡಿಸಿಬಿಡು", + "COLLAPSE_ALL": "ಬ್ಲಾಕ್‍ಗಳನ್ನು ಮಡಿಸಿಬಿಡು", + "EXPAND_BLOCK": "ಬ್ಲಾಕನ್ನು ವಿಸ್ತರಿಸು", + "EXPAND_ALL": "ಬ್ಲಾಕ್‍ಗಳನ್ನು ವಿಸ್ತರಿಸು", + "DISABLE_BLOCK": "ಬ್ಲಾಕನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು", + "ENABLE_BLOCK": "ಬ್ಲಾಕನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು", + "HELP": "ಸಹಾಯ", + "UNDO": "ಹಿಂದಿನಂತೆ ಮಾಡು", + "REDO": "ಮತ್ತೆ ಮಾಡು", + "CHANGE_VALUE_TITLE": "ಮೌಲ್ಯ ಬದಲಾಯಿಸು:", + "RENAME_VARIABLE": "ಚರಾಂಶವನ್ನು ಮರುಹೆಸರಿಸು...", + "RENAME_VARIABLE_TITLE": "ಎಲ್ಲ '%1' ಚರಾಂಶಗಳನ್ನು ಮರುಹೆಸರಿಸು:", + "NEW_VARIABLE": "ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ...", + "NEW_STRING_VARIABLE": "ಚಿಹ್ನೆಗಳ ಸರಣಿಯ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು...", + "NEW_NUMBER_VARIABLE": "ಸಂಖ್ಯಾ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ...", + "NEW_COLOUR_VARIABLE": "ಬಣ್ಣದ ಚರಾಂಶವನ್ನು ಸೃಷ್ಟಿಸು ...", + "NEW_VARIABLE_TYPE_TITLE": "ಹೊಸ ಚರಾಂಶದ ಡೇಟಾಪ್ರಕಾರ:", + "NEW_VARIABLE_TITLE": "ಹೊಸ ಚರಾಂಶದ ಹೆಸರು:", + "VARIABLE_ALREADY_EXISTS": "'%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "%1' ಹೆಸರಿನ ಚರಾಂಶ ಈಗಾಗಲೇ '%2' ಡೇಟಾ ಪ್ರಕಾರದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.", + "DELETE_VARIABLE_CONFIRMATION": "'%2' ಚರಾಂಶದ '%1' ಉಪಯೋಗಗಳನ್ನು ಅಳಿಸುವುದೇ ?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸಲಾಗುವುದಿಲ್ಲ. ಏಕೆಂದರೆ ಇದು '%2' ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದ ಭಾಗವಾಗಿದೆ", + "DELETE_VARIABLE": "'%1' ಚರಾಂಶವನ್ನು ಅಳಿಸು", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "ವರ್ಣಫಲಕದಿಂದ ಬಣ್ಣವನ್ನು ಆರಿಸು.", + "COLOUR_RANDOM_TITLE": "ಯಾದೃಚ್ಛಿಕ ಬಣ್ಣ", + "COLOUR_RANDOM_TOOLTIP": "ಯಾದೃಚ್ಛಿಕವಾಗಿ ಯಾವುದಾದರೂ ಒಂದು ಬಣ್ಣವನ್ನು ಆರಿಸು.", + "COLOUR_RGB_TITLE": "ಬಣ್ಣದಿಂದ", + "COLOUR_RGB_RED": "ಕೆಂಪು", + "COLOUR_RGB_GREEN": "ಹಸಿರು", + "COLOUR_RGB_BLUE": "ನೀಲಿ", + "COLOUR_RGB_TOOLTIP": "ನಿರ್ದಿಷ್ಟ ಪ್ರಮಾಣದಲ್ಲಿ ಕೆಂಪು, ಹಸಿರು ಮತ್ತು ನೀಲಿಯನ್ನು ಹೊಂದಿದ ಒಂದು ಬಣ್ಣವನ್ನು ರಚಿಸಿ. ಎಲ್ಲಾ ಮೌಲ್ಯಗಳು 0 ಮತ್ತು 100 ರ ನಡುವೆ ಇರಲಿ.", + "COLOUR_BLEND_TITLE": "ಮಿಶ್ರಣಮಾಡು", + "COLOUR_BLEND_COLOUR1": "ಬಣ್ಣ 1", + "COLOUR_BLEND_COLOUR2": "ಬಣ್ಣ 2", + "COLOUR_BLEND_RATIO": "ಅನುಪಾತ", + "COLOUR_BLEND_TOOLTIP": "ಕೊಟ್ಟಿರುವ ಅನುಪಾತದಂತೆ(0.0 - 1.0) ಎರಡು ಬಣ್ಣಗಳನ್ನು ಮಿಶ್ರಣ ಮಾಡುತ್ತದೆ.", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 ಬಾರಿ ಪುನರಾವರ್ತಿಸು", + "CONTROLS_REPEAT_INPUT_DO": "ಮಾಡು", + "CONTROLS_REPEAT_TOOLTIP": "ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಹಲವಾರು ಬಾರಿ ಮಾಡು.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ಷರತ್ತು 'ಸತ್ಯ' ಆಗಿರುವವರೆಗೆ ಪುನರಾವರ್ತಿಸು", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ತನಕ ಪುನರಾವರ್ತಿಸು", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ಮೌಲ್ಯವು ಸುಳ್ಳಾಗಿರುವವರೆಗೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", + "CONTROLS_FOR_TOOLTIP": "ಚರಾಂಶವಾದ %1 ಪ್ರಾರಂಭ ಸಂಖ್ಯೆಯಿಂದ ಅಂತಿಮ ಸಂಖ್ಯೆಯವರೆಗೆ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಿ, ನಿರ್ದಿಷ್ಟ ಮಧ್ಯಂತರದಿಂದ ಎಣಿಸಿ, ಮತ್ತು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಬ್ಲಾಕ್ ಗಳನ್ನು ಮಾಡಲಿ.", + "CONTROLS_FOR_TITLE": "%1 ಜೊತೆ ಎಣಿಸು %2 ಇಂದ %3 ತನಕ %4 ಪ್ರಮಾಣದಲ್ಲಿ", + "CONTROLS_FOREACH_TITLE": "%2 ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿ %1 ಅಂಶಕ್ಕೆ", + "CONTROLS_FOREACH_TOOLTIP": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಅಂಶಕ್ಕೆ, ಚರಾಂಶ '%1'ನ್ನು ಅಂಶಕ್ಕೆ ಜೋಡಿಸಿ, ತದನಂತರ ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ಪುನರಾವರ್ತನೆಯಿಂದ ನಿರ್ಗಮಿಸು", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ಲೂಪ್ ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರೆಯಲಿ", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ಒಳಹೊಕ್ಕಿರುವ ಲೂಪಿನಿಂದ ನಿರ್ಗಮಿಸು.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ಈ ಲೂಪಿನ ಉಳಿದ ಭಾಗವನ್ನು ಬಿಟ್ಟು, ಮುಂದಿನ ಪುನರಾವರ್ತನೆಯೊಂದಿಗೆ ಮುಂದುವರಿಸಿ.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕನ್ನು ಲೂಪ್‌ನಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು.", + "CONTROLS_IF_TOOLTIP_1": "ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಕೆಲವು ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", + "CONTROLS_IF_TOOLTIP_2": "ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು, ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು.", + "CONTROLS_IF_TOOLTIP_3": "ಮೊದಲನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ. ಇಲ್ಲದಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡಿ.", + "CONTROLS_IF_TOOLTIP_4": "ಮೊದಲನೆಯ ಮೌಲ್ಯವು ಸತ್ಯ ಆಗಿದ್ದರೆ, ಮೊದಲ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಇಲ್ಲವಾದರೆ, ಎರಡನೇ ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು. ಒಂದುವೇಳೆ ಯಾವುದೇ ಮೌಲ್ಯವೂ ಸತ್ಯವಾಗಿರದಿದ್ದರೆ, ಕೊನೆಯ ವಿಭಾಗದ ಹೇಳಿಕೆಗಳನ್ನು ಮಾಡು.", + "CONTROLS_IF_MSG_IF": "ಆಗಿದ್ದರೆ", + "CONTROLS_IF_MSG_ELSEIF": "ಆಗಿರದಿದ್ದರೆ", + "CONTROLS_IF_MSG_ELSE": "ಇಲ್ಲದಿದ್ದರೆ", + "CONTROLS_IF_IF_TOOLTIP": "ಈ 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಒಂದು ಷರತ್ತು ಸೇರಿಸಿ.", + "CONTROLS_IF_ELSE_TOOLTIP": "ಅಂತಿಮವಾದ, ಎಲ್ಲವನ್ನೂ-ಹಿಡಿ ಷರತ್ತನ್ನು 'ಆಗಿದ್ದರೆ' ಬ್ಲಾಕ್ ಗೆ ಸೇರಿಸಿ.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿದ್ದರೆ, ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "ಎರಡೂ ಒದಗಿಸುವ ಅಂಶಗಳು ಪರಸ್ಪರ ಸಮನಾಗಿರದಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", + "LOGIC_COMPARE_TOOLTIP_LT": "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದ್ದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", + "LOGIC_COMPARE_TOOLTIP_LTE": "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ಚಿಕ್ಕದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", + "LOGIC_COMPARE_TOOLTIP_GT": "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", + "LOGIC_COMPARE_TOOLTIP_GTE": "ಮೊದಲನೇ ಒದಗಿಸುವ ಅಂಶ ಎರಡನೇ ಒದಗಿಸುವ ಅಂಶಕ್ಕಿಂತ ದೊಡ್ಡದು ಅಥವಾ ಸಮನಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", + "LOGIC_OPERATION_TOOLTIP_AND": "ಒದಗಿಸುವ ಎರಡೂ ಅಂಶಗಳು ಸರಿಯಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", + "LOGIC_OPERATION_AND": "ಮತ್ತು", + "LOGIC_OPERATION_TOOLTIP_OR": "ಯಾವುದಾದರೂ ಒಂದು ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ಸರಿ ಹಿಂತಿರುಗಿಸಿ.", + "LOGIC_OPERATION_OR": "ಅಥವಾ", + "LOGIC_NEGATE_TITLE": "%1 ಅಲ್ಲ", + "LOGIC_NEGATE_TOOLTIP": "ಒದಗಿಸುವ ಅಂಶ ಸುಳ್ಳಾಗಿದ್ದರೆ ಸರಿಯೆನ್ನಿ. ಒದಗಿಸುವ ಅಂಶ ಸತ್ಯವಾಗಿದ್ದರೆ ತಪ್ಪೆನ್ನಿ.", + "LOGIC_BOOLEAN_TRUE": "ಸತ್ಯ", + "LOGIC_BOOLEAN_FALSE": "ಸುಳ್ಳು", + "LOGIC_BOOLEAN_TOOLTIP": "ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಎರಡರಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "LOGIC_NULL": "ಶೂನ್ಯ", + "LOGIC_NULL_TOOLTIP": "ಶೂನ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "LOGIC_TERNARY_CONDITION": "ಪರೀಕ್ಷೆ", + "LOGIC_TERNARY_IF_TRUE": "ಸತ್ಯ ಆಗಿದ್ದರೆ", + "LOGIC_TERNARY_IF_FALSE": "ಸುಳ್ಳು ಆಗಿದ್ದರೆ", + "LOGIC_TERNARY_TOOLTIP": "'ಪರೀಕ್ಷೆ'ಯಲ್ಲಿನ ಷರತ್ತನ್ನು ಪರಿಶೀಲಿಸಿ. ಷರತ್ತು ಸರಿಯಾಗಿದ್ದರೆ, 'ಸತ್ಯವಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನು; ಇಲ್ಲದಿದ್ದರೆ 'ಸುಳ್ಳಾಗಿದ್ದರೆ' ಮೌಲ್ಯವನ್ನೂ ಹಿಂತಿರುಗಿಸುವುದು.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "ಒಂದು ಸಂಖ್ಯೆ.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "ಎರಡು ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "ಎರಡು ಸಂಖ್ಯೆಗಳ ವ್ಯತ್ಯಾಸವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "ಎರಡು ಸಂಖ್ಯೆಗಳ ಗುಣಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "ಎರಡು ಸಂಖ್ಯೆಗಳ ಭಾಗಲಬ್ಧವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "ಮೊದಲ ಸಂಖ್ಯೆಯ ಘಾತಾಂಶ ಎರಡನೇ ಸಂಖ್ಯೆಯಾದಾಗಿನ ಫಲಿತಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "ವರ್ಗಮೂಲ", + "MATH_SINGLE_TOOLTIP_ROOT": "ಸಂಖ್ಯೆಯ ವರ್ಗಮೂಲವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_SINGLE_OP_ABSOLUTE": "ಪರಿಪೂರ್ಣ", + "MATH_SINGLE_TOOLTIP_ABS": "ಸಂಖ್ಯೆಯೊಂದರ ಪರಿಪೂರ್ಣ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_SINGLE_TOOLTIP_NEG": "ಸಂಖ್ಯೆಯೊಂದರ ನಿರಾಕರಣೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_SINGLE_TOOLTIP_LN": "ಸಂಖ್ಯೆಯ ನೈಸರ್ಗಿಕ ಲಾಗರಿಥಮ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_SINGLE_TOOLTIP_LOG10": "ಒಂದು ಸಂಖ್ಯೆಯ ಆಧಾರ 10 ಲಾಗರಿಥಮನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_SINGLE_TOOLTIP_EXP": "ಒಂದು ಸಂಖ್ಯೆಯ e ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_SINGLE_TOOLTIP_POW10": "ಒಂದು ಸಂಖ್ಯೆಯ 10ರ ಘಾತವಾಗಿದ್ದಾಗಿನ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "ಕೋನವೊಂದರ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", + "MATH_TRIG_TOOLTIP_COS": "ಕೋನವೊಂದರ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", + "MATH_TRIG_TOOLTIP_TAN": "ಕೋನವೊಂದರ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", + "MATH_TRIG_TOOLTIP_ASIN": "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_TRIG_TOOLTIP_ACOS": "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಕೊಸೈನ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", + "MATH_TRIG_TOOLTIP_ATAN": "ಸಂಖ್ಯೆಯೊಂದರ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ(ರೇಡಿಯನ್‌ಗಳಲ್ಲ)", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕಗಳಲ್ಲಿ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸಿ:π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", + "MATH_IS_EVEN": "ಸಮ ಸಂಖ್ಯೆಯೇ?", + "MATH_IS_ODD": "ಬೆಸ ಸಂಖ್ಯೆಯೇ?", + "MATH_IS_PRIME": "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆಯೇ?", + "MATH_IS_WHOLE": "ಪೂರ್ಣಸಂಖ್ಯೆಯೇ?", + "MATH_IS_POSITIVE": "ಧನಾತ್ಮಕವೇ?", + "MATH_IS_NEGATIVE": "ಋಣಾತ್ಮಕವೇ?", + "MATH_IS_DIVISIBLE_BY": "ಇದರಿಂದ ಭಾಗಿಸಬಹುದೇ?", + "MATH_IS_TOOLTIP": "ಒಂದು ಸಂಖ್ಯೆ ಸಮ, ಬೆಸ, ಅವಿಭಾಜ್ಯ, ಪೂರ್ಣ, ಧನಾತ್ಮಕ, ಋಣಾತ್ಮಕವಾಗಿದೆಯೇ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯಿಂದ ಭಾಗಿಸ ಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. ಸತ್ಯ ಅಥವಾ ಸುಳ್ಳು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "%1 ಅನ್ನು %2 ರಿಂದ ಬದಲಾಯಿಸಿ", + "MATH_CHANGE_TOOLTIP": "ಚರಾಂಶ '%1' ಕ್ಕೆ ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ಮೇಲಿನ ಅಥವಾ ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ.", + "MATH_ROUND_OPERATOR_ROUND": "ಸುತ್ತು", + "MATH_ROUND_OPERATOR_ROUNDUP": "ಮೇಲಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ.", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "ಕೆಳಗಿನ ಪೂರ್ಣಾಂಕ ಮಾಡಿ.", + "MATH_ONLIST_OPERATOR_SUM": "ಪಟ್ಟಿಯ ಮೊತ್ತ", + "MATH_ONLIST_TOOLTIP_SUM": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ಸಂಖ್ಯೆಗಳ ಮೊತ್ತವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ONLIST_OPERATOR_MIN": "ಪಟ್ಟಿಯ ಕನಿಷ್ಠ", + "MATH_ONLIST_TOOLTIP_MIN": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಕನಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ONLIST_OPERATOR_MAX": "ಪಟ್ಟಿಯ ಗರಿಷ್ಠ", + "MATH_ONLIST_TOOLTIP_MAX": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ONLIST_OPERATOR_AVERAGE": "ಪಟ್ಟಿಯ ಸರಾಸರಿ", + "MATH_ONLIST_TOOLTIP_AVERAGE": "ಪಟ್ಟಿಯಲ್ಲಿನ ಸಂಖ್ಯಾ ಮೌಲ್ಯಗಳ ಸರಾಸರಿ (ಅಂಕಗಣಿತದ ಸರಾಸರಿ) ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ONLIST_OPERATOR_MEDIAN": "ಪಟ್ಟಿಯ ಮಧ್ಯಾಂಕ", + "MATH_ONLIST_TOOLTIP_MEDIAN": "ಪಟ್ಟಿಯಲ್ಲಿನ ಮಧ್ಯಾಂಕ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ONLIST_OPERATOR_MODE": "ಪಟ್ಟಿಯಲ್ಲಿನ ಆಗಾಗ್ಗೆ ಕಾಣಿಸಿಕೊಳ್ಳುವ ಸಂಖ್ಯೆಗಳು", + "MATH_ONLIST_TOOLTIP_MODE": "ಪಟ್ಟಿಯಲ್ಲಿರುವ ಸಾಮಾನ್ಯ ಅಂಶಗಳ ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ONLIST_OPERATOR_STD_DEV": "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನ", + "MATH_ONLIST_TOOLTIP_STD_DEV": "ಪಟ್ಟಿಯ ಪ್ರಮಾಣಿತ ವಿಚಲನವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ONLIST_OPERATOR_RANDOM": "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶ", + "MATH_ONLIST_TOOLTIP_RANDOM": "ಪಟ್ಟಿಯ ಯಾದೃಚ್ಛಿತ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "%1 ÷ %2 ರ ಶೇಷ", + "MATH_MODULO_TOOLTIP": "ಎರಡು ಸಂಖ್ಯೆಗಳ ವಿಭಜನೆಯ ಶೇಷವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_CONSTRAIN_TITLE": "%1ಅನ್ನು ಕಡಿಮೆ %2 ಹೆಚ್ಚಿನ %3 ಮೌಲ್ಯಗಳ ನಡುವೆ ನಿರ್ಬಂಧಿಸಿ", + "MATH_CONSTRAIN_TOOLTIP": "ನಿಗದಿತ ಮಿತಿಗಳ ನಡುವೆ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸಿ(ಒಳಗೊ೦ಡ).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕ %1 ರಿಂದ %2 ರವರೆಗೆ", + "MATH_RANDOM_INT_TOOLTIP": "ಎರಡು ನಿರ್ದಿಷ್ಟ ಮಿತಿಗಳ ನಡುವೆ ಇರುವ ಯಾದೃಚ್ಛಿತ ಪೂರ್ಣಾಂಕವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿ", + "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (ಒಳಗೊಂಡ) ಮತ್ತು 1.0 (ವಿಶೇಷ) ನಡುವೆ ಯಾದೃಚ್ಛಿತ ಭಿನ್ನರಾಶಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "X:%1 Y:%2 ಬಿಂದುವಿನ ಆರ್ಕ್ ಟ್ಯಾನ್", + "MATH_ATAN2_TOOLTIP": "ಬಿಂದು (X,Y) ನ ಆರ್ಕ್ ಟ್ಯಾಂಜೆಂಟ್ ನ್ನು -180 ರಿಂದ 180 ರವರೆಗಿನ ಡಿಗ್ರಿಗಳಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "ಒಂದು ಅಕ್ಷರ, ಪದ ಅಥವಾ ಪಠ್ಯದ ಸಾಲು.", + "TEXT_JOIN_TITLE_CREATEWITH": "ಇದರೊಂದಿಗೆ ಪಠ್ಯವನ್ನು ರಚಿಸಿ", + "TEXT_JOIN_TOOLTIP": "ಹಲವಾರು ಅಂಶಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸುವ ಮೂಲಕ ಪಠ್ಯದ ತುಣುಕನ್ನು ರಚಿಸಿ.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "ಸೇರಿಸು", + "TEXT_CREATE_JOIN_TOOLTIP": "ಈ ಬ್ಲಾಕನ್ನು ಮರು ಸಂರಚಿಸಲು ಅದರ ಭಾಗಗಳನ್ನು ಸೇರಿಸು, ತೆಗೆ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸು.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "ಪಠ್ಯಕ್ಕೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ.", + "TEXT_APPEND_TITLE": " %1 ಕ್ಕೆ ಪಠ್ಯ %2 ನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ.", + "TEXT_APPEND_TOOLTIP": "'%1' ಚರಾಂಶಕ್ಕೆ ಕೆಲವು ಪಠ್ಯವನ್ನು ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ.", + "TEXT_LENGTH_TITLE": "%1ರ ಉದ್ದ", + "TEXT_LENGTH_TOOLTIP": "ಒದಗಿಸಿದ ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಸಂಖ್ಯೆಯನ್ನು (ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ) ಹಿಂತಿರುಗಿಸುವುದು.", + "TEXT_ISEMPTY_TITLE": "%1 ಖಾಲಿಯಿದೆ", + "TEXT_ISEMPTY_TOOLTIP": "ಒದಗಿಸಿದ ಪಠ್ಯ ಖಾಲಿಯಾಗಿದ್ದರೆ 'ಸತ್ಯ' ಹಿಂತಿರುಗಿಸುವುದು.", + "TEXT_INDEXOF_TOOLTIP": "ಎರಡನೇ ಪಠ್ಯದಲ್ಲಿ ಮೊದಲ ಪಠ್ಯದ ಸಂಭಾವ್ಯದ, ಮೊದಲ/ಕೊನೆಯ ಸೂಚ್ಯಂಕವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಪಠ್ಯ ಕಂಡುಬಂದಿಲ್ಲದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "TEXT_INDEXOF_TITLE": "ಪಠ್ಯದಲ್ಲಿ %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "ಪಠ್ಯದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ", + "TEXT_INDEXOF_OPERATOR_LAST": "ಪಠ್ಯದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ", + "TEXT_CHARAT_TITLE": "ಪಠ್ಯದಲ್ಲಿ %1 %2", + "TEXT_CHARAT_FROM_START": "# ಅಕ್ಷರ ಪಡೆಯಿರಿ", + "TEXT_CHARAT_FROM_END": "ಕೊನೆಯಿಂದ # ಅಕ್ಷರ ಪಡೆಯಿರಿ", + "TEXT_CHARAT_FIRST": "ಮೊದಲ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ", + "TEXT_CHARAT_LAST": "ಕೊನೆಯ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ", + "TEXT_CHARAT_RANDOM": "ಯಾದೃಚ್ಛಿತ ಅಕ್ಷರವನ್ನು ಪಡೆಯಿರಿ", + "TEXT_CHARAT_TOOLTIP": "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಕ್ಷರವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "TEXT_GET_SUBSTRING_TOOLTIP": "ಪಠ್ಯದ ನಿರ್ದಿಷ್ಟ ಭಾಗವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ಪಠ್ಯದಲ್ಲಿ", + "TEXT_GET_SUBSTRING_START_FROM_START": "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ", + "TEXT_GET_SUBSTRING_START_FROM_END": "# ಅಕ್ಷರದಿಂದ ಚಿಹ್ನೆಗಳ ಉಪಸರಣಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ", + "TEXT_GET_SUBSTRING_START_FIRST": "ಮೊದಲ ಅಕ್ಷರದಿಂದ ಉಪಸರಣಿಯನ್ನು ಪಡೆಯಿರಿ", + "TEXT_GET_SUBSTRING_END_FROM_START": "# ಅಕ್ಷರದವರೆಗೆ", + "TEXT_GET_SUBSTRING_END_FROM_END": "ಕೊನೆಯಿಂದ # ಅಕ್ಷರದವರೆಗೆ", + "TEXT_GET_SUBSTRING_END_LAST": "ಕೊನೆಯ ಅಕ್ಷರದವರೆಗೆ", + "TEXT_CHANGECASE_TOOLTIP": "ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಪ್ರಸ್ತುತಕ್ಕೆ ವಿರುದ್ಡವಾದ ದೊಡ್ಡಕ್ಷರ ಅಥವಾ ಸಣ್ಣಕ್ಷರದಲ್ಲಿ ಹಿಂತಿರುಗಿಸಿ.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "ದೊಡ್ಡಕ್ಷರಕ್ಕೆ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "ಸಣ್ಣಕ್ಷರಕ್ಕೆ", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "ಶೀರ್ಷಿಕೆಯ ಅಕ್ಷರವಾಗಿ", + "TEXT_TRIM_TOOLTIP": "ಒಂದು ಅಥವಾ ಎರಡೂ ತುದಿಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾದ ಖಾಲಿ ಜಾಗ ಒಳಗೊಂಡಂತೆ ಪಠ್ಯದ ಪ್ರತಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "TEXT_TRIM_OPERATOR_BOTH": "ಎರಡೂ ಕಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ", + "TEXT_TRIM_OPERATOR_LEFT": "ಎಡಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ", + "TEXT_TRIM_OPERATOR_RIGHT": "ಬಲಗಡೆಯಿಂದ ಖಾಲಿ ಜಾಗಗಳನ್ನು ಕತ್ತರಿಸಿ ಹಾಕಿ", + "TEXT_PRINT_TITLE": "%1 ಮುದ್ರಿಸಿ", + "TEXT_PRINT_TOOLTIP": "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪಠ್ಯ, ಸಂಖ್ಯೆ ಅಥವಾ ಇತರ ಮೌಲ್ಯವನ್ನು ಮುದ್ರಿಸಿ.", + "TEXT_PROMPT_TYPE_TEXT": "ಸಂದೇಶದೊಂದಿಗೆ ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ", + "TEXT_PROMPT_TYPE_NUMBER": "ಸಂದೇಶದೊಂದಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ", + "TEXT_PROMPT_TOOLTIP_NUMBER": "ಬಳಕೆದಾರರಿಗೆ ಸಂಖ್ಯೆಗಾಗಿ ಜ್ಞಾಪಿಸಿ.", + "TEXT_PROMPT_TOOLTIP_TEXT": "ಬಳಕೆದಾರರಿಗೆ ಕೆಲವು ಪಠ್ಯಕ್ಕಾಗಿ ಜ್ಞಾಪಿಸಿ.", + "TEXT_COUNT_MESSAGE0": "%2 ರಲ್ಲಿ %1 ಅನ್ನು ಎಣಿಸಿ", + "TEXT_COUNT_TOOLTIP": "ಬೇರೆ ಕೆಲವು ಪಠ್ಯಗಳಲ್ಲಿ ಕೆಲವು ಪಠ್ಯವು ಎಷ್ಟು ಬಾರಿ ಸಂಭವಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಎಣಿಸಿ.", + "TEXT_REPLACE_MESSAGE0": "%1 ಅನ್ನು %3 ರಲ್ಲಿ %2 ರೊಂದಿಗೆ ಬದಲಾಯಿಸಿ.", + "TEXT_REPLACE_TOOLTIP": "ಬೇರೆ ಪಠ್ಯದೊಳಗಿನ ಎಲ್ಲಾ ಕೆಲವು ಪಠ್ಯದ ಸಂಭಾವ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಿ.", + "TEXT_REVERSE_MESSAGE0": "%1 ಅನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ.", + "TEXT_REVERSE_TOOLTIP": "ಪಠ್ಯದಲ್ಲಿನ ಅಕ್ಷರಗಳ ಕ್ರಮವನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ.", + "LISTS_CREATE_EMPTY_TITLE": "ಖಾಲಿ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ", + "LISTS_CREATE_EMPTY_TOOLTIP": "ಯಾವುದೇ ದತ್ತಾಂಶ ದಾಖಲೆಗಳನ್ನು ಹೊಂದಿರದ, 0 ಉದ್ದದ, ಪಟ್ಟಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_CREATE_WITH_TOOLTIP": "ಹಲವು ಅಂಶಗಳೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ.", + "LISTS_CREATE_WITH_INPUT_WITH": "ಇದರೊಂದಿಗೆ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ.", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ಪಟ್ಟಿ", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "ಈ ಪಟ್ಟಿಯ ಬ್ಲಾಕ್ ಅನ್ನು ಮರುಸಂರಚಿಸಲು ವಿಭಾಗಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "ಪಟ್ಟಿಗೆ ಒಂದು ಅಂಶವನ್ನು ಸೇರಿಸಿ.", + "LISTS_REPEAT_TOOLTIP": "ಕೊಟ್ಟಿರುವ ಮೌಲ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟ ಬಾರಿ ಪುನರಾವರ್ತಿಸುವ ಪಟ್ಟಿಯನ್ನು ರಚಿಸುತ್ತದೆ.", + "LISTS_REPEAT_TITLE": "%1 ಅಂಶದೊಂದಿಗೆ %2 ಬಾರಿ ಪುನರಾವರ್ತಿತಗೊಂಡ ಪಟ್ಟಿಯನ್ನು ರಚಿಸಿ.", + "LISTS_LENGTH_TITLE": "%1 ರ ಉದ್ದ", + "LISTS_LENGTH_TOOLTIP": "ಪಟ್ಟಿಯ ಉದ್ದವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_ISEMPTY_TITLE": "%1 ಖಾಲಿಯಾಗಿದೆ", + "LISTS_ISEMPTY_TOOLTIP": "ಪಟ್ಟಿ ಖಾಲಿಯಾಗಿದ್ದರೆ ಸತ್ಯ ಎಂದು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_INLIST": "ಪಟ್ಟಿಯಲ್ಲಿ", + "LISTS_INDEX_OF_FIRST": "ಅಂಶದ ಮೊದಲ ಸಂಭವವನ್ನು ಹುಡುಕಿ", + "LISTS_INDEX_OF_LAST": "ಅಂಶದ ಕೊನೆಯ ಸಂಭವವನ್ನು ಹುಡುಕಿ", + "LISTS_INDEX_OF_TOOLTIP": "ಪಟ್ಟಿಯಲ್ಲಿನ ಅಂಶದ ಮೊದಲ/ಕೊನೆಯ ಸಂಭಾವ್ಯದ ಸೂಚಿಯನ್ನು ಹಿಂತಿರುಗಿಸುವುದು. ಅಂಶ ಕಂಡುಬರದಿದ್ದರೆ %1 ಅನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_GET_INDEX_GET": "ಪಡೆಯಿರಿ", + "LISTS_GET_INDEX_GET_REMOVE": "ಪಡೆಯಿರಿ ಮತ್ತು ತೆಗೆದುಹಾಕಿ", + "LISTS_GET_INDEX_REMOVE": "ತೆಗೆ", + "LISTS_GET_INDEX_FROM_END": "# ಕೊನೆಯಿಂದ", + "LISTS_GET_INDEX_FIRST": "ಮೊದಲ", + "LISTS_GET_INDEX_LAST": "ಕೊನೆಯ", + "LISTS_GET_INDEX_RANDOM": "ಯಾದೃಚ್ಛಿಕ", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ಮೊದಲ ಅಂಶ ಆಗಿದೆ.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ಕೊನೆಯ ಅಂಶ ಆಗಿದೆ.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಇರುವ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು .", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಲ್ಲಿನ ಅಂಶವನ್ನು ತೆಗೆದು ಹಾಕುವುದು ಮತ್ತು ಹಿಂತಿರುಗಿಸುವುದು.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿರುವ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "ಪಟ್ಟಿಯಲ್ಲಿನ ಕೊನೆಯ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.", + "LISTS_SET_INDEX_SET": "ಗೊತ್ತುಪಡಿಸಿ", + "LISTS_SET_INDEX_INSERT": "ನಲ್ಲಿ ಸೇರಿಸಿ", + "LISTS_SET_INDEX_INPUT_TO": "ಹಾಗೆ", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "ಪಟ್ಟಿಯಲ್ಲಿನ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "ಪಟ್ಟಿಯಲ್ಲಿ ಮೊದಲ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "ಪಟ್ಟಿಯಲ್ಲಿ ಕೊನೆಯ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "ಪಟ್ಟಿಯಲ್ಲಿನ ಯಾದೃಚ್ಛಿಕ ಅಂಶವನ್ನು ಗೊತ್ತುಪಡಿಸುತ್ತದೆ.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "ಪಟ್ಟಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಾನದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "ಪಟ್ಟಿಯ ಪ್ರಾರಂಭದಲ್ಲಿ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತದೆ.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "ಅಂಶವನ್ನು ಪಟ್ಟಿಯ ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸಿ.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "ಅಂಶವನ್ನು ಪಟ್ಟಿಯಲ್ಲಿ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಒಳಸೇರಿಸುತ್ತದೆ.", + "LISTS_GET_SUBLIST_START_FROM_START": "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ", + "LISTS_GET_SUBLIST_START_FROM_END": "# ನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಕೊನೆಯಿಂದ ಪಡೆಯಿರಿ", + "LISTS_GET_SUBLIST_START_FIRST": "ಮೊದಲಿನಿಂದ ಉಪ-ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಿರಿ", + "LISTS_GET_SUBLIST_END_FROM_START": "# ವರೆಗೆ", + "LISTS_GET_SUBLIST_END_FROM_END": "ಕೊನೆಯಿಂದ # ವರೆಗೆ", + "LISTS_GET_SUBLIST_END_LAST": "ಕೊನೆಯವರೆಗೂ", + "LISTS_GET_SUBLIST_TOOLTIP": "ಪಟ್ಟಿಯ ನಿರ್ದಿಷ್ಟ ಭಾಗದ ಪ್ರತಿಯನ್ನು ರಚಿಸುತ್ತದೆ.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "%1 %2 %3 ವಿಂಗಡಿಸಿ", + "LISTS_SORT_TOOLTIP": "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ವಿಂಗಡಿಸಿ.", + "LISTS_SORT_ORDER_ASCENDING": "ಆರೋಹಣ", + "LISTS_SORT_ORDER_DESCENDING": "ಅವರೋಹಣ", + "LISTS_SORT_TYPE_NUMERIC": "ಸಂಖ್ಯಾತ್ಮಕ", + "LISTS_SORT_TYPE_TEXT": "ವರ್ಣಮಾಲೆಯ", + "LISTS_SORT_TYPE_IGNORECASE": "ವರ್ಣಮಾಲೆಯ, ದೊಡ್ಡಕ್ಷರ/ಸಣ್ಣಕ್ಷರವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ", + "LISTS_SPLIT_LIST_FROM_TEXT": "ಪಠ್ಯದಿಂದ ಪಟ್ಟಿಯನ್ನು ಮಾಡಿ", + "LISTS_SPLIT_TEXT_FROM_LIST": "ಪಟ್ಟಿಯಿಂದ ಪಠ್ಯವನ್ನು ಮಾಡಿ", + "LISTS_SPLIT_WITH_DELIMITER": "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯೊಡನೆ", + "LISTS_SPLIT_TOOLTIP_SPLIT": "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಲ್ಲಿ ಮುರಿದು, ಪಠ್ಯವನ್ನು ವಿಭಜಿಸಿ ಪಠ್ಯಗಳ ಪಟ್ಟಿಮಾಡಿ.", + "LISTS_SPLIT_TOOLTIP_JOIN": "ಪ್ರಾರಂಭ ಅಥವಾ ಅಂತ್ಯ ಚಿನ್ಹೆಯಿಂದ ಬೇರ್ಪಡಿಸಲಾಗಿರುವ ಪಠ್ಯಗಳ ಪಟ್ಟಿಯನ್ನೆಲ್ಲಾ ಒಂದು ಪಠ್ಯಕ್ಕೆ ಸೇರಿಸಿ.", + "LISTS_REVERSE_MESSAGE0": "%1 ನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ", + "LISTS_REVERSE_TOOLTIP": "ಪಟ್ಟಿಯ ಪ್ರತಿಯನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ.", + "VARIABLES_GET_TOOLTIP": "ಈ ಚರಾಂಶದ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.", + "VARIABLES_GET_CREATE_SET": "'%1 ಬದಲಿಸಿ' ರಚಿಸಿ", + "VARIABLES_SET": "%1 ನ್ನು %2 ಕ್ಕೆ ಬದಲಿಸಿ", + "VARIABLES_SET_TOOLTIP": "ಈ ಚರಾಂಶವನ್ನು ಸೇರಿಸುವ ಅಂಶಕ್ಕೆ ಸಮಾನವಾಗಿ ಬದಲಿಸುತ್ತದೆ.", + "VARIABLES_SET_CREATE_GET": "'%1 ಪಡೆಯಿರಿ' ರಚಿಸಿ", + "PROCEDURES_DEFNORETURN_TITLE": "ಗೆ", + "PROCEDURES_DEFNORETURN_PROCEDURE": "ಏನಾದರೂ ಮಾಡಿ", + "PROCEDURES_BEFORE_PARAMS": "ಜೊತೆ:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ಜೊತೆ:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "ಯಾವುದೇ ಹೊರಾಂಶ ಇಲ್ಲದ ಕಾರ್ಯಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ.", + "PROCEDURES_DEFNORETURN_COMMENT": "ಈ ಕಾರ್ಯಘಟಕವನ್ನು ವಿವರಿಸಿ ...", + "PROCEDURES_DEFRETURN_RETURN": "ಹಿಂತಿರುಗಿಸಿ", + "PROCEDURES_DEFRETURN_TOOLTIP": "ಹೊರಾಂಶ ಇರುವ ಕಾರ್ಯ ಘಟಕವನ್ನು ರಚಿಸುತ್ತದೆ.", + "PROCEDURES_ALLOW_STATEMENTS": "ಹೇಳಿಕೆಗಳನ್ನು ಅನುಮತಿಸಿ", + "PROCEDURES_DEF_DUPLICATE_WARNING": "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯಘಟಕವು ನಕಲಿ ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿದೆ.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಕಾರ್ಯಘಟಕ '%1'ಅನ್ನು ಚಲಾಯಿಸಿ ಮತ್ತು ಅದರ ಹೊರಾಂಶವನ್ನು ಉಪಯೋಗಿಸಿ", + "PROCEDURES_MUTATORCONTAINER_TITLE": "ಒಳಾoಶಗಳು", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "ಈ ಕಾರ್ಯಕ್ಕೆ ಒಳಾoಶಗಳನ್ನು ಸೇರಿಸಿ, ತೆಗೆದುಹಾಕಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಿ.", + "PROCEDURES_MUTATORARG_TITLE": "ಒಳಾoಶದ ಹೆಸರು:", + "PROCEDURES_MUTATORARG_TOOLTIP": "ಕಾರ್ಯಘಟಕಕ್ಕೆ ಒಳಾoಶವನ್ನು ಸೇರಿಸಿ.", + "PROCEDURES_HIGHLIGHT_DEF": "ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ", + "PROCEDURES_CREATE_DO": "'%1' ರಚಿಸಿ", + "PROCEDURES_IFRETURN_TOOLTIP": "ಒಂದು ಮೌಲ್ಯವು ಸತ್ಯವಾಗಿದ್ದರೆ, ಎರಡನೇ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸಿ.", + "PROCEDURES_IFRETURN_WARNING": "ಎಚ್ಚರಿಕೆ: ಈ ಬ್ಲಾಕ್ ಅನ್ನು ಕಾರ್ಯಘಟಕದ ವ್ಯಾಖ್ಯಾನದಲ್ಲಿ ಮಾತ್ರ ಬಳಸಬಹುದು.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "ಏನಾದರು ಹೇಳಿ...", + "WORKSPACE_ARIA_LABEL": "ಬ್ಲಾಕ್ಲಿ ಕಾರ್ಯಕ್ಷೇತ್ರ", + "COLLAPSED_WARNINGS_WARNING": "ಸಂಕುಚಿತಗೊಂಡ ಬ್ಲಾಕ್ ಗಳು ಎಚ್ಚರಿಕೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ.", + "DIALOG_OK": "ಸರಿ", + "DIALOG_CANCEL": "ರದ್ದುಮಾಡಿ" +} diff --git a/msg/json/ko.json b/msg/json/ko.json index b59cbf03f0b..0c7245dbf75 100644 --- a/msg/json/ko.json +++ b/msg/json/ko.json @@ -1,411 +1,411 @@ -{ - "@metadata": { - "authors": [ - "Alex00728", - "Codenstory", - "Gongsoonyee", - "Hym411", - "JeonHK", - "Jerrykim306", - "Kurousagi", - "Lemondoge", - "Liuxinyu970226", - "Nuevo Paso", - "Onebone", - "Peurocs4", - "Priviet", - "Revi", - "SeoJeongHo", - "Ykhwong", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "항목", - "UNNAMED_KEY": "이름이 없는", - "TODAY": "오늘", - "DUPLICATE_BLOCK": "복제", - "ADD_COMMENT": "주석 추가", - "REMOVE_COMMENT": "주석 제거", - "DUPLICATE_COMMENT": "주석 복제하기", - "EXTERNAL_INPUTS": "외부 입력", - "INLINE_INPUTS": "내부 입력", - "DELETE_BLOCK": "블록 삭제", - "DELETE_X_BLOCKS": "블록 %1개 삭제", - "DELETE_ALL_BLOCKS": "모든 블록 %1개를 삭제하겠습니까?", - "CLEAN_UP": "블록 정리", - "COLLAPSE_BLOCK": "블록 축소", - "COLLAPSE_ALL": "블록 축소", - "EXPAND_BLOCK": "블록 확장", - "EXPAND_ALL": "블록 확장", - "DISABLE_BLOCK": "블록 비활성화", - "ENABLE_BLOCK": "블록 활성화", - "HELP": "도움말", - "UNDO": "실행 취소", - "REDO": "다시 실행", - "CHANGE_VALUE_TITLE": "값 바꾸기:", - "RENAME_VARIABLE": "변수 이름 바꾸기:", - "RENAME_VARIABLE_TITLE": "'%1' 변수 이름을 바꾸기:", - "NEW_VARIABLE": "변수 만들기...", - "NEW_STRING_VARIABLE": "문자열 변수 만들기...", - "NEW_NUMBER_VARIABLE": "숫자 변수 만들기....", - "NEW_COLOUR_VARIABLE": "색 변수 만들기...", - "NEW_VARIABLE_TYPE_TITLE": "새 변수 유형:", - "NEW_VARIABLE_TITLE": "새 변수 이름:", - "VARIABLE_ALREADY_EXISTS": "'%1' 변수는 이미 존재합니다.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' 변수는 다른 유형에 대해 이미 존재합니다: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "'%2' 변수에서 %1을(를) 삭제하시겠습니까?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%2' 함수 정의의 일부이기 때문에 '%1' 변수를 삭제할 수 없습니다", - "DELETE_VARIABLE": "'%1' 변수를 삭제합니다", - "COLOUR_PICKER_HELPURL": "https://ko.wikipedia.org/wiki/색", - "COLOUR_PICKER_TOOLTIP": "팔레트에서 색을 고릅니다", - "COLOUR_RANDOM_TITLE": "무작위 색상", - "COLOUR_RANDOM_TOOLTIP": "무작위로 색을 고릅니다.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "색", - "COLOUR_RGB_RED": "빨강", - "COLOUR_RGB_GREEN": "초록", - "COLOUR_RGB_BLUE": "파랑", - "COLOUR_RGB_TOOLTIP": "빨강,파랑,초록의 값을 이용하여 색을 만드십시오. 모든 값은 0과 100 사이에 있어야 합니다.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "혼합", - "COLOUR_BLEND_COLOUR1": "색 1", - "COLOUR_BLEND_COLOUR2": "색 2", - "COLOUR_BLEND_RATIO": "비율", - "COLOUR_BLEND_TOOLTIP": "두 색을 주어진 비율로 혼합 (0.0 - 1.0)", - "CONTROLS_REPEAT_HELPURL": "https://ko.wikipedia.org/wiki/For_루프", - "CONTROLS_REPEAT_TITLE": "%1회 반복", - "CONTROLS_REPEAT_INPUT_DO": "하기", - "CONTROLS_REPEAT_TOOLTIP": "여러 번 반복해 명령들을 실행합니다.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://ko.wikipedia.org/wiki/While_%EB%A3%A8%ED%94%84", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "동안 반복", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "다음까지 반복", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "값이 참일 때, 몇 가지 선언을 합니다.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "값이 거짓일 때, 몇 가지 선언을 합니다.", - "CONTROLS_FOR_HELPURL": "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84", - "CONTROLS_FOR_TOOLTIP": "변수 \"%1\"은 지정된 간격으로 시작 수에서 끝 수까지를 세어 지정된 블록을 수행해야 합니다.", - "CONTROLS_FOR_TITLE": "으로 계산 %1 %2에서 %4을 이용하여 %3로", - "CONTROLS_FOREACH_HELPURL": "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84#.EC.9E.84.EC.9D.98.EC.9D.98_.EC.A7.91.ED.95.A9", - "CONTROLS_FOREACH_TITLE": "각 항목에 대해 %1 목록으로 %2", - "CONTROLS_FOREACH_TOOLTIP": "리스트 안에 들어있는 각 아이템들을, 순서대로 변수 '%1' 에 한 번씩 저장시키고, 그 때 마다 명령을 실행합니다.", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://ko.wikipedia.org/wiki/%EC%A0%9C%EC%96%B4_%ED%9D%90%EB%A6%84", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "반복 중단", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "다음 반복", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "현재 반복 실행 블럭을 빠져나갑니다.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "나머지 반복 부분을 더 이상 실행하지 않고, 다음 반복을 수행합니다.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "경고 : 이 블록은 반복 실행 블럭 안에서만 사용됩니다.", - "CONTROLS_IF_HELPURL": "https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%AC%B8", - "CONTROLS_IF_TOOLTIP_1": "조건식의 계산 결과가 참이면, 명령을 실행합니다.", - "CONTROLS_IF_TOOLTIP_2": "조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 그렇지 않으면 두 번째 블럭의 명령을 실행합니다.", - "CONTROLS_IF_TOOLTIP_3": "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행합니다.", - "CONTROLS_IF_TOOLTIP_4": "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행하고, ... , 어떤 조건식의 계산 결과도 참이 아니면, 마지막 블럭의 명령을 실행합니다.", - "CONTROLS_IF_MSG_IF": "만약", - "CONTROLS_IF_MSG_ELSEIF": "다른 경우", - "CONTROLS_IF_MSG_ELSE": "아니라면", - "CONTROLS_IF_IF_TOOLTIP": "섹션을 추가, 제거하거나 순서를 변경하여 이 if 블럭을 재구성합니다.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "\"만약\" 블럭에 조건 검사를 추가합니다.", - "CONTROLS_IF_ELSE_TOOLTIP": "\"만약\" 블럭의 마지막에, 모든 검사 결과가 거짓인 경우 실행할 부분을 추가합니다.", - "LOGIC_COMPARE_HELPURL": "https://ko.wikipedia.org/wiki/부등식", - "LOGIC_COMPARE_TOOLTIP_EQ": "두 값이 같으면, 참(true) 값을 돌려줍니다.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "두 값이 서로 다르면, 참(true) 값을 돌려줍니다.", - "LOGIC_COMPARE_TOOLTIP_LT": "첫 번째 값이 두 번째 값보다 작으면, 참(true) 값을 돌려줍니다.", - "LOGIC_COMPARE_TOOLTIP_LTE": "첫 번째 값이 두 번째 값보다 작거나 같으면, 참(true) 값을 돌려줍니다.", - "LOGIC_COMPARE_TOOLTIP_GT": "첫 번째 값이 두 번째 값보다 크면, 참(true) 값을 돌려줍니다.", - "LOGIC_COMPARE_TOOLTIP_GTE": "첫 번째 값이 두 번째 값보다 크거나 같으면, 참(true) 값을 돌려줍니다.", - "LOGIC_OPERATION_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B6%88_%EB%85%BC%EB%A6%AC", - "LOGIC_OPERATION_TOOLTIP_AND": "두 값이 모두 참(true) 값이면, 참 값을 돌려줍니다.", - "LOGIC_OPERATION_AND": "그리고", - "LOGIC_OPERATION_TOOLTIP_OR": "적어도 하나의 값이 참일 경우 참을 반환합니다.", - "LOGIC_OPERATION_OR": "또는", - "LOGIC_NEGATE_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B6%80%EC%A0%95", - "LOGIC_NEGATE_TITLE": "%1가 아닙니다", - "LOGIC_NEGATE_TOOLTIP": "입력값이 거짓이라면 참을 반환합니다. 참이라면 거짓을 반환합니다.", - "LOGIC_BOOLEAN_HELPURL": "https://ko.wikipedia.org/wiki/%EC%A7%84%EB%A6%BF%EA%B0%92", - "LOGIC_BOOLEAN_TRUE": "참", - "LOGIC_BOOLEAN_FALSE": "거짓", - "LOGIC_BOOLEAN_TOOLTIP": "참 혹은 거짓 모두 반환합니다.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "빈 값", - "LOGIC_NULL_TOOLTIP": "빈 값을 반환합니다.", - "LOGIC_TERNARY_HELPURL": "https://ko.wikipedia.org/wiki/물음표", - "LOGIC_TERNARY_CONDITION": "테스트", - "LOGIC_TERNARY_IF_TRUE": "만약 참이라면", - "LOGIC_TERNARY_IF_FALSE": "만약 거짓이라면", - "LOGIC_TERNARY_TOOLTIP": "'test'의 조건을 검사합니다. 조건이 참이면 'if true' 값을 반환합니다. 거짓이면 'if false' 값을 반환합니다.", - "MATH_NUMBER_HELPURL": "https://ko.wikipedia.org/wiki/수_(수학)", - "MATH_NUMBER_TOOLTIP": "수", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "x", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://ko.wikipedia.org/wiki/산술", - "MATH_ARITHMETIC_TOOLTIP_ADD": "두 수의 합을 반환합니다.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "두 수간의 차이를 반환합니다.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "두 수의 곱을 반환합니다.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "두 수의 나눈 결과를 반환합니다.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "첫 번째 수를 두 번째 수 만큼, 거듭제곱 한 결과값을 돌려줍니다.", - "MATH_SINGLE_HELPURL": "https://ko.wikipedia.org/wiki/제곱근", - "MATH_SINGLE_OP_ROOT": "제곱근", - "MATH_SINGLE_TOOLTIP_ROOT": "숫자의 제곱근을 반환합니다.", - "MATH_SINGLE_OP_ABSOLUTE": "절대값", - "MATH_SINGLE_TOOLTIP_ABS": "어떤 수의 절대값(absolute)을 계산한 결과를, 정수값으로 돌려줍니다.", - "MATH_SINGLE_TOOLTIP_NEG": "음(-)/양(+), 부호를 반대로 하여 값을 돌려줍니다.", - "MATH_SINGLE_TOOLTIP_LN": "어떤 수의, 자연로그(natural logarithm) 값을 돌려줍니다.(밑 e, 예시 log e x)", - "MATH_SINGLE_TOOLTIP_LOG10": "어떤 수의, 기본로그(logarithm) 값을 돌려줍니다.(밑 10, 예시 log 10 x)", - "MATH_SINGLE_TOOLTIP_EXP": "e의 거듭제곱 값을 반환합니다.", - "MATH_SINGLE_TOOLTIP_POW10": "10의 거듭제곱 값을 반환합니다.", - "MATH_TRIG_HELPURL": "https://ko.wikipedia.org/wiki/삼각함수", - "MATH_TRIG_TOOLTIP_SIN": "각도의 사인을 반환합니다. (라디안 아님)", - "MATH_TRIG_TOOLTIP_COS": "각도의 코사인을 반환합니다. (라디안 아님)", - "MATH_TRIG_TOOLTIP_TAN": "각도의 탄젠트를 반환합니다. (라디안 아님)", - "MATH_TRIG_TOOLTIP_ASIN": "어떤 수에 대한, asin(arcsine) 값을 돌려줍니다.", - "MATH_TRIG_TOOLTIP_ACOS": "어떤 수에 대한, acos(arccosine) 값을 돌려줍니다.", - "MATH_TRIG_TOOLTIP_ATAN": "어떤 수에 대한, atan(arctangent) 값을 돌려줍니다.", - "MATH_CONSTANT_HELPURL": "https://ko.wikipedia.org/wiki/수학_상수", - "MATH_CONSTANT_TOOLTIP": "일반적인 상수 값들 중 하나를 돌려줍니다. : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", - "MATH_IS_EVEN": "가 짝수(even) 이면", - "MATH_IS_ODD": "가 홀수(odd) 이면", - "MATH_IS_PRIME": "가 소수(prime) 이면", - "MATH_IS_WHOLE": "가 정수이면", - "MATH_IS_POSITIVE": "가 양(+)수 이면", - "MATH_IS_NEGATIVE": "가 음(-)수 이면", - "MATH_IS_DIVISIBLE_BY": "가 다음 수로 나누어 떨어지면 :", - "MATH_IS_TOOLTIP": "어떤 수가 짝 수, 홀 수, 소 수, 정 수, 양 수, 음 수, 나누어 떨어지는 수 인지 검사해 결과값을 돌려줍니다. 참(true) 또는 거짓(false) 값을 돌려줌.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "바꾸기 %1 만큼 %2", - "MATH_CHANGE_TOOLTIP": "변수 '%1' 에 저장되어있는 값에, 어떤 수를 더해, 변수에 다시 저장합니다.", - "MATH_ROUND_HELPURL": "https://ko.wikipedia.org/wiki/반올림", - "MATH_ROUND_TOOLTIP": "어떤 수를 반올림/올림/버림한 결과를, 정수값으로 돌려줍니다.", - "MATH_ROUND_OPERATOR_ROUND": "반올림", - "MATH_ROUND_OPERATOR_ROUNDUP": "올림", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "버림", - "MATH_ONLIST_HELPURL": "", - "MATH_ONLIST_OPERATOR_SUM": "합", - "MATH_ONLIST_TOOLTIP_SUM": "리스트에 들어있는 수(값)들을, 모두 합(sum) 한, 총합(sum)을 돌려줍니다.", - "MATH_ONLIST_OPERATOR_MIN": "최소값", - "MATH_ONLIST_TOOLTIP_MIN": "리스트에 들어있는 수(값) 들 중, 가장 작은(min) 수(값)를 돌려줍니다.", - "MATH_ONLIST_OPERATOR_MAX": "최대값", - "MATH_ONLIST_TOOLTIP_MAX": "리스트에 들어있는 수(값) 들 중, 가장 큰(max) 수(값)를 돌려줍니다.", - "MATH_ONLIST_OPERATOR_AVERAGE": "평균값", - "MATH_ONLIST_TOOLTIP_AVERAGE": "리스트에 들어있는 수(값)들에 대해, 산술 평균(arithmetic mean) 한 값을 돌려줍니다.", - "MATH_ONLIST_OPERATOR_MEDIAN": "중간값", - "MATH_ONLIST_TOOLTIP_MEDIAN": "리스트에 들어있는 수(값) 들 중, 중간(median) 수(값)를 돌려줍니다.", - "MATH_ONLIST_OPERATOR_MODE": "가장 여러 개 있는 값", - "MATH_ONLIST_TOOLTIP_MODE": "리스트에 들어있는 아이템들 중에서, 가장 여러 번 들어있는 아이템들을 리스트로 만들어 돌려줍니다. (최빈값, modes)", - "MATH_ONLIST_OPERATOR_STD_DEV": "표준 편차", - "MATH_ONLIST_TOOLTIP_STD_DEV": "이 리스트의 표준 편차를 반환합니다.", - "MATH_ONLIST_OPERATOR_RANDOM": "목록의 임의 항목", - "MATH_ONLIST_TOOLTIP_RANDOM": "목록에서 임의의 아이템을 돌려줍니다.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "%1 ÷ %2의 나머지", - "MATH_MODULO_TOOLTIP": "첫 번째 수를 두 번째 수로 나눈, 나머지 값을 돌려줍니다.", - "MATH_CONSTRAIN_HELPURL": "https://ko.wikipedia.org/wiki/클램핑_(그래픽)", - "MATH_CONSTRAIN_TITLE": "%1의 값을, 최소 %2 최대 %3으로 조정", - "MATH_CONSTRAIN_TOOLTIP": "어떤 수를, 특정 범위의 값이 되도록 강제로 조정합니다.", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "랜덤정수(%1<= n <=%2)", - "MATH_RANDOM_INT_TOOLTIP": "두 주어진 제한된 범위 사이의 임의 정수값을 돌려줍니다.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "임의 분수", - "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (포함)과 1.0 (배타적) 사이의 임의 분수 값을 돌려줍니다.", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "X:%1 Y:%2의 atan2", - "MATH_ATAN2_TOOLTIP": "점 (X, Y)의 아크탄젠트를 -180에서 180까지 도 단위로 반환합니다.", - "TEXT_TEXT_HELPURL": "https://ko.wikipedia.org/wiki/문자열", - "TEXT_TEXT_TOOLTIP": "문자, 단어, 문장.", - "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", - "TEXT_JOIN_TITLE_CREATEWITH": "텍스트 만들기", - "TEXT_JOIN_TOOLTIP": "여러 개의 아이템들을 연결해(묶어), 새로운 문장을 만듭니다.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "가입", - "TEXT_CREATE_JOIN_TOOLTIP": "섹션을 추가, 제거하거나 순서를 변경하여 이 텍스트 블럭을 재구성합니다.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "텍스트에 항목을 추가합니다.", - "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_APPEND_TITLE": "다음 %1 내용 덧붙이기 %2", - "TEXT_APPEND_TOOLTIP": "'%1' 변수의 끝에 일부 텍스트를 덧붙입니다.", - "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_LENGTH_TITLE": "다음 문장의 문자 개수 %1", - "TEXT_LENGTH_TOOLTIP": "입력된 문장의, 문자 개수를 돌려줍니다.(공백문자 포함)", - "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", - "TEXT_ISEMPTY_TITLE": "%1이 비어 있습니다", - "TEXT_ISEMPTY_TOOLTIP": "입력된 문장이, 빈 문장(\"\")이면 참(true) 값을 돌려줍니다.", - "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", - "TEXT_INDEXOF_TOOLTIP": "두 번째 텍스트에서 첫 번째 텍스트가 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 텍스트가 없으면 %1을 반환합니다.", - "TEXT_INDEXOF_TITLE": "문장 %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "에서 다음 문장이 처음으로 나타난 위치 찾기 :", - "TEXT_INDEXOF_OPERATOR_LAST": "에서 다음 문장이 마지막으로 나타난 위치 찾기 :", - "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", - "TEXT_CHARAT_TITLE": "텍스트 %1 %2에서", - "TEXT_CHARAT_FROM_START": "에서, 앞에서부터 # 번째 위치의 문자 얻기", - "TEXT_CHARAT_FROM_END": "에서, 마지막부터 # 번째 위치의 문자 얻기", - "TEXT_CHARAT_FIRST": "에서, 첫 번째 문자 얻기", - "TEXT_CHARAT_LAST": "에서, 마지막 문자 얻기", - "TEXT_CHARAT_RANDOM": "에서, 랜덤하게 한 문자 얻기", - "TEXT_CHARAT_TAIL": "", - "TEXT_CHARAT_TOOLTIP": "특정 번째 위치에서, 문자를 얻어내 돌려줍니다.", - "TEXT_GET_SUBSTRING_TOOLTIP": "문장 중 일부를 얻어내 돌려줍니다.", - "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "문장", - "TEXT_GET_SUBSTRING_START_FROM_START": "에서, 처음부터 # 번째 문자부터 얻어냄", - "TEXT_GET_SUBSTRING_START_FROM_END": "에서, 마지막에서 # 번째부터 얻어냄", - "TEXT_GET_SUBSTRING_START_FIRST": "에서, 처음부터 얻어냄", - "TEXT_GET_SUBSTRING_END_FROM_START": "# 번째 문자까지", - "TEXT_GET_SUBSTRING_END_FROM_END": "끝에서부터 # 번째 문자까지", - "TEXT_GET_SUBSTRING_END_LAST": "마지막 문자까지", - "TEXT_GET_SUBSTRING_TAIL": "", - "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", - "TEXT_CHANGECASE_TOOLTIP": "영문 대소문자 형태를 변경해 돌려줍니다.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "대문자로", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "소문자로", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "첫 문자만 대문자로", - "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", - "TEXT_TRIM_TOOLTIP": "문장의 왼쪽/오른쪽/양쪽에서 스페이스 문자를 제거해 돌려줍니다.", - "TEXT_TRIM_OPERATOR_BOTH": "양쪽의 공백 문자 제거", - "TEXT_TRIM_OPERATOR_LEFT": "왼쪽의 공백 문자 제거", - "TEXT_TRIM_OPERATOR_RIGHT": "오른쪽의 공백 문자 제거", - "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", - "TEXT_PRINT_TITLE": "다음 내용 출력 %1", - "TEXT_PRINT_TOOLTIP": "원하는 문장, 수, 값 등을 출력합니다.", - "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", - "TEXT_PROMPT_TYPE_TEXT": "메시지를 활용해 문장 입력", - "TEXT_PROMPT_TYPE_NUMBER": "메시지를 활용해 수 입력", - "TEXT_PROMPT_TOOLTIP_NUMBER": "수에 대해 사용자의 입력을 받습니다.", - "TEXT_PROMPT_TOOLTIP_TEXT": "문장에 대해 사용자의 입력을 받습니다.", - "TEXT_COUNT_MESSAGE0": "%2에서 %1 숫자 세기", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "다른 어떤 텍스트에서 어떤 텍스트가 나타난 횟수를 셉니다.", - "TEXT_REPLACE_MESSAGE0": "%3에서 %2을(를) %1(으)로 바꾸기", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "다른 텍스트 내에서 일부 텍스트의 모든 발생을 치환합니다.", - "TEXT_REVERSE_MESSAGE0": "%1 뒤집기", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "텍스트 안의 문자의 순서를 반전시킵니다.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "빈 리스트 생성", - "LISTS_CREATE_EMPTY_TOOLTIP": "데이터 레코드가 없는, 길이가 0인 목록을 반환합니다.", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "원하는 수의 항목들로 목록을 생성합니다.", - "LISTS_CREATE_WITH_INPUT_WITH": "리스트 만들기", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "리스트", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "섹션을 추가, 제거하거나 순서를 변경하여 이 리스트 블럭을 재구성합니다.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "아이템을 리스트에 추가합니다.", - "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_REPEAT_TOOLTIP": "지정된 값을, 지정된 개수 만큼 넣어, 목록을 생성합니다.", - "LISTS_REPEAT_TITLE": "%1을 %2번 넣어, 리스트 생성", - "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", - "LISTS_LENGTH_TITLE": "%1의 길이", - "LISTS_LENGTH_TOOLTIP": "목록의 길이를 반환합니다.", - "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", - "LISTS_ISEMPTY_TITLE": "%1이 비어 있습니다", - "LISTS_ISEMPTY_TOOLTIP": "목록이 비었을 때 참을 반환합니다.", - "LISTS_INLIST": "리스트", - "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", - "LISTS_INDEX_OF_FIRST": "처음으로 나타난 위치", - "LISTS_INDEX_OF_LAST": "마지막으로 나타난 위치", - "LISTS_INDEX_OF_TOOLTIP": "목록에서 항목이 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 항목이 없으면 %1을 반환합니다.", - "LISTS_GET_INDEX_GET": "가져오기", - "LISTS_GET_INDEX_GET_REMOVE": "잘라 내기", - "LISTS_GET_INDEX_REMOVE": "삭제", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "마지막 번째 위치부터, # 번째", - "LISTS_GET_INDEX_FIRST": "첫 번째", - "LISTS_GET_INDEX_LAST": "마지막", - "LISTS_GET_INDEX_RANDOM": "임의로", - "LISTS_GET_INDEX_TAIL": "", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1은 첫 번째 항목입니다.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1은(는) 마지막 항목입니다.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "목록에서 특정 위치의 항목을 반환합니다.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "첫 번째 아이템을 찾아 돌려줍니다.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "마지막 아이템을 찾아 돌려줍니다.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "리스트의 아이템들 중, 랜덤으로 선택해 돌려줍니다.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "목록의 특정 위치에 있는 항목을 제거하고 반환합니다.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "첫 번째 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "마지막 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "목록에서 임의 위치의 아이템을 찾아내 삭제하고 돌려줍니다.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "목록에서 특정 위치의 항목을 삭제합니다.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "리스트에서 첫 번째 아이템을 삭제합니다.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "리스트에서 마지막 아이템을 찾아 삭제합니다.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "리스트에서 랜덤하게 아이템을 삭제합니다.", - "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", - "LISTS_SET_INDEX_SET": "에서 설정", - "LISTS_SET_INDEX_INSERT": "에서 원하는 위치에 삽입", - "LISTS_SET_INDEX_INPUT_TO": "에", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "목록의 특정 위치에 있는 항목으로 설정합니다.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "첫 번째 위치의 아이템으로 설정합니다.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "마지막 아이템으로 설정합니다.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "목록에서 임의 위치의 아이템을 설정합니다.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "목록의 특정 위치에 항목을 삽입합니다.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "항목을 목록의 처음 위치에 삽입합니다.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "리스트의 마지막에 아이템을 추가합니다.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "목록에서 임의 위치에 아이템을 삽입합니다.", - "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", - "LISTS_GET_SUBLIST_START_FROM_START": "처음 # 번째 위치부터, 서브 리스트 추출", - "LISTS_GET_SUBLIST_START_FROM_END": "마지막부터 # 번째 위치부터, 서브 리스트 추출", - "LISTS_GET_SUBLIST_START_FIRST": "첫 번째 위치부터, 서브 리스트 추출", - "LISTS_GET_SUBLIST_END_FROM_START": "앞에서부터 # 번째로", - "LISTS_GET_SUBLIST_END_FROM_END": "끝에서부터 # 번째로", - "LISTS_GET_SUBLIST_END_LAST": "마지막으로", - "LISTS_GET_SUBLIST_TAIL": "", - "LISTS_GET_SUBLIST_TOOLTIP": "목록의 특정 부분에 대한 복사본을 만듭니다.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "정렬 %1 %2 %3", - "LISTS_SORT_TOOLTIP": "목록의 사본을 정렬합니다.", - "LISTS_SORT_ORDER_ASCENDING": "오름차순", - "LISTS_SORT_ORDER_DESCENDING": "내림차순", - "LISTS_SORT_TYPE_NUMERIC": "숫자순", - "LISTS_SORT_TYPE_TEXT": "알파벳순", - "LISTS_SORT_TYPE_IGNORECASE": "알파벳순 (대소문자 구분 안 함)", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "텍스트에서 목록 만들기", - "LISTS_SPLIT_TEXT_FROM_LIST": "목록에서 텍스트 만들기", - "LISTS_SPLIT_WITH_DELIMITER": "분리와", - "LISTS_SPLIT_TOOLTIP_SPLIT": "각 속보, 텍스트의 목록들에서 텍스트를 분할합니다.", - "LISTS_SPLIT_TOOLTIP_JOIN": "구분 기호로 구분하여 텍스트 목록을 하나의 텍스트에 병합합니다.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "%1 뒤집기", - "LISTS_REVERSE_TOOLTIP": "리스트의 복사본을 뒤집습니다.", - "ORDINAL_NUMBER_SUFFIX": "", - "VARIABLES_GET_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)", - "VARIABLES_GET_TOOLTIP": "변수에 저장 되어있는 값을 돌려줍니다.", - "VARIABLES_GET_CREATE_SET": "'집합 %1' 생성", - "VARIABLES_SET_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)", - "VARIABLES_SET": "%1를 %2로 설정", - "VARIABLES_SET_TOOLTIP": "변수의 값을 입력한 값으로 변경해 줍니다.", - "VARIABLES_SET_CREATE_GET": "'%1 값 읽기' 블럭 생성", - "PROCEDURES_DEFNORETURN_HELPURL": "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29", - "PROCEDURES_DEFNORETURN_TITLE": "함수", - "PROCEDURES_DEFNORETURN_PROCEDURE": "함수 이름", - "PROCEDURES_BEFORE_PARAMS": "사용:", - "PROCEDURES_CALL_BEFORE_PARAMS": "사용:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "실행 후, 결과 값을 돌려주지 않는 함수를 만듭니다.", - "PROCEDURES_DEFNORETURN_COMMENT": "이 함수를 설명하세요...", - "PROCEDURES_DEFRETURN_HELPURL": "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29", - "PROCEDURES_DEFRETURN_RETURN": "다음을 돌려줌", - "PROCEDURES_DEFRETURN_TOOLTIP": "실행 후, 결과 값을 돌려주는 함수를 만듭니다.", - "PROCEDURES_ALLOW_STATEMENTS": "서술 허가", - "PROCEDURES_DEF_DUPLICATE_WARNING": "경고: 이 함수에는, 같은 이름을 사용하는 매개 변수들이 있습니다.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://ko.wikipedia.org/wiki/함수_(프로그래밍)", - "PROCEDURES_CALLNORETURN_TOOLTIP": "미리 정의해 둔 '%1' 함수를 실행합니다.", - "PROCEDURES_CALLRETURN_HELPURL": "https://ko.wikipedia.org/wiki/함수_(프로그래밍)", - "PROCEDURES_CALLRETURN_TOOLTIP": "미리 정의해 둔 '%1' 함수를 실행하고, 함수를 실행한 결과 값을 돌려줍니다.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "매개 변수들", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "이 함수를 추가, 삭제, 혹은 재정렬합니다.", - "PROCEDURES_MUTATORARG_TITLE": "매개 변수:", - "PROCEDURES_MUTATORARG_TOOLTIP": "함수에 값을 더합니다.", - "PROCEDURES_HIGHLIGHT_DEF": "함수 정의 찾기", - "PROCEDURES_CREATE_DO": "'%1' 생성", - "PROCEDURES_IFRETURN_TOOLTIP": "값이 참이라면, 두 번째 값을 반환합니다.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "경고: 이 블럭은, 함수 정의 블럭 안에서만 사용할 수 있습니다.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "말해 보세요...", - "WORKSPACE_ARIA_LABEL": "Blockly 워크스페이스", - "COLLAPSED_WARNINGS_WARNING": "접힌 블록이 경고를 포함하고 있습니다.", - "DIALOG_OK": "확인", - "DIALOG_CANCEL": "취소" -} +{ + "@metadata": { + "authors": [ + "Alex00728", + "Codenstory", + "Gongsoonyee", + "Hym411", + "JeonHK", + "Jerrykim306", + "Kurousagi", + "Lemondoge", + "Liuxinyu970226", + "Nuevo Paso", + "Onebone", + "Peurocs4", + "Priviet", + "Revi", + "SeoJeongHo", + "Ykhwong", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "항목", + "UNNAMED_KEY": "이름이 없는", + "TODAY": "오늘", + "DUPLICATE_BLOCK": "복제", + "ADD_COMMENT": "주석 추가", + "REMOVE_COMMENT": "주석 제거", + "DUPLICATE_COMMENT": "주석 복제하기", + "EXTERNAL_INPUTS": "외부 입력", + "INLINE_INPUTS": "내부 입력", + "DELETE_BLOCK": "블록 삭제", + "DELETE_X_BLOCKS": "블록 %1개 삭제", + "DELETE_ALL_BLOCKS": "모든 블록 %1개를 삭제하겠습니까?", + "CLEAN_UP": "블록 정리", + "COLLAPSE_BLOCK": "블록 축소", + "COLLAPSE_ALL": "블록 축소", + "EXPAND_BLOCK": "블록 확장", + "EXPAND_ALL": "블록 확장", + "DISABLE_BLOCK": "블록 비활성화", + "ENABLE_BLOCK": "블록 활성화", + "HELP": "도움말", + "UNDO": "실행 취소", + "REDO": "다시 실행", + "CHANGE_VALUE_TITLE": "값 바꾸기:", + "RENAME_VARIABLE": "변수 이름 바꾸기:", + "RENAME_VARIABLE_TITLE": "'%1' 변수 이름을 바꾸기:", + "NEW_VARIABLE": "변수 만들기...", + "NEW_STRING_VARIABLE": "문자열 변수 만들기...", + "NEW_NUMBER_VARIABLE": "숫자 변수 만들기....", + "NEW_COLOUR_VARIABLE": "색 변수 만들기...", + "NEW_VARIABLE_TYPE_TITLE": "새 변수 유형:", + "NEW_VARIABLE_TITLE": "새 변수 이름:", + "VARIABLE_ALREADY_EXISTS": "'%1' 변수는 이미 존재합니다.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' 변수는 다른 유형에 대해 이미 존재합니다: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "'%2' 변수에서 %1을(를) 삭제하시겠습니까?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%2' 함수 정의의 일부이기 때문에 '%1' 변수를 삭제할 수 없습니다", + "DELETE_VARIABLE": "'%1' 변수를 삭제합니다", + "COLOUR_PICKER_HELPURL": "https://ko.wikipedia.org/wiki/색", + "COLOUR_PICKER_TOOLTIP": "팔레트에서 색을 고릅니다", + "COLOUR_RANDOM_TITLE": "무작위 색상", + "COLOUR_RANDOM_TOOLTIP": "무작위로 색을 고릅니다.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "색", + "COLOUR_RGB_RED": "빨강", + "COLOUR_RGB_GREEN": "초록", + "COLOUR_RGB_BLUE": "파랑", + "COLOUR_RGB_TOOLTIP": "빨강,파랑,초록의 값을 이용하여 색을 만드십시오. 모든 값은 0과 100 사이에 있어야 합니다.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "혼합", + "COLOUR_BLEND_COLOUR1": "색 1", + "COLOUR_BLEND_COLOUR2": "색 2", + "COLOUR_BLEND_RATIO": "비율", + "COLOUR_BLEND_TOOLTIP": "두 색을 주어진 비율로 혼합 (0.0 - 1.0)", + "CONTROLS_REPEAT_HELPURL": "https://ko.wikipedia.org/wiki/For_루프", + "CONTROLS_REPEAT_TITLE": "%1회 반복", + "CONTROLS_REPEAT_INPUT_DO": "하기", + "CONTROLS_REPEAT_TOOLTIP": "여러 번 반복해 명령들을 실행합니다.", + "CONTROLS_WHILEUNTIL_HELPURL": "https://ko.wikipedia.org/wiki/While_%EB%A3%A8%ED%94%84", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "동안 반복", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "다음까지 반복", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "값이 참일 때, 몇 가지 선언을 합니다.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "값이 거짓일 때, 몇 가지 선언을 합니다.", + "CONTROLS_FOR_HELPURL": "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84", + "CONTROLS_FOR_TOOLTIP": "변수 \"%1\"은 지정된 간격으로 시작 수에서 끝 수까지를 세어 지정된 블록을 수행해야 합니다.", + "CONTROLS_FOR_TITLE": "으로 계산 %1 %2에서 %4을 이용하여 %3로", + "CONTROLS_FOREACH_HELPURL": "https://ko.wikipedia.org/wiki/For_%EB%A3%A8%ED%94%84#.EC.9E.84.EC.9D.98.EC.9D.98_.EC.A7.91.ED.95.A9", + "CONTROLS_FOREACH_TITLE": "각 항목에 대해 %1 목록으로 %2", + "CONTROLS_FOREACH_TOOLTIP": "리스트 안에 들어있는 각 아이템들을, 순서대로 변수 '%1' 에 한 번씩 저장시키고, 그 때 마다 명령을 실행합니다.", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://ko.wikipedia.org/wiki/%EC%A0%9C%EC%96%B4_%ED%9D%90%EB%A6%84", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "반복 중단", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "다음 반복", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "현재 반복 실행 블럭을 빠져나갑니다.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "나머지 반복 부분을 더 이상 실행하지 않고, 다음 반복을 수행합니다.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "경고 : 이 블록은 반복 실행 블럭 안에서만 사용됩니다.", + "CONTROLS_IF_HELPURL": "https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%AC%B8", + "CONTROLS_IF_TOOLTIP_1": "조건식의 계산 결과가 참이면, 명령을 실행합니다.", + "CONTROLS_IF_TOOLTIP_2": "조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 그렇지 않으면 두 번째 블럭의 명령을 실행합니다.", + "CONTROLS_IF_TOOLTIP_3": "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행합니다.", + "CONTROLS_IF_TOOLTIP_4": "첫 번째 조건식의 계산 결과가 참이면, 첫 번째 블럭의 명령을 실행하고, 두 번째 조건식의 계산 결과가 참이면, 두 번째 블럭의 명령을 실행하고, ... , 어떤 조건식의 계산 결과도 참이 아니면, 마지막 블럭의 명령을 실행합니다.", + "CONTROLS_IF_MSG_IF": "만약", + "CONTROLS_IF_MSG_ELSEIF": "다른 경우", + "CONTROLS_IF_MSG_ELSE": "아니라면", + "CONTROLS_IF_IF_TOOLTIP": "섹션을 추가, 제거하거나 순서를 변경하여 이 if 블럭을 재구성합니다.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "\"만약\" 블럭에 조건 검사를 추가합니다.", + "CONTROLS_IF_ELSE_TOOLTIP": "\"만약\" 블럭의 마지막에, 모든 검사 결과가 거짓인 경우 실행할 부분을 추가합니다.", + "LOGIC_COMPARE_HELPURL": "https://ko.wikipedia.org/wiki/부등식", + "LOGIC_COMPARE_TOOLTIP_EQ": "두 값이 같으면, 참(true) 값을 돌려줍니다.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "두 값이 서로 다르면, 참(true) 값을 돌려줍니다.", + "LOGIC_COMPARE_TOOLTIP_LT": "첫 번째 값이 두 번째 값보다 작으면, 참(true) 값을 돌려줍니다.", + "LOGIC_COMPARE_TOOLTIP_LTE": "첫 번째 값이 두 번째 값보다 작거나 같으면, 참(true) 값을 돌려줍니다.", + "LOGIC_COMPARE_TOOLTIP_GT": "첫 번째 값이 두 번째 값보다 크면, 참(true) 값을 돌려줍니다.", + "LOGIC_COMPARE_TOOLTIP_GTE": "첫 번째 값이 두 번째 값보다 크거나 같으면, 참(true) 값을 돌려줍니다.", + "LOGIC_OPERATION_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B6%88_%EB%85%BC%EB%A6%AC", + "LOGIC_OPERATION_TOOLTIP_AND": "두 값이 모두 참(true) 값이면, 참 값을 돌려줍니다.", + "LOGIC_OPERATION_AND": "그리고", + "LOGIC_OPERATION_TOOLTIP_OR": "적어도 하나의 값이 참일 경우 참을 반환합니다.", + "LOGIC_OPERATION_OR": "또는", + "LOGIC_NEGATE_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B6%80%EC%A0%95", + "LOGIC_NEGATE_TITLE": "%1가 아닙니다", + "LOGIC_NEGATE_TOOLTIP": "입력값이 거짓이라면 참을 반환합니다. 참이라면 거짓을 반환합니다.", + "LOGIC_BOOLEAN_HELPURL": "https://ko.wikipedia.org/wiki/%EC%A7%84%EB%A6%BF%EA%B0%92", + "LOGIC_BOOLEAN_TRUE": "참", + "LOGIC_BOOLEAN_FALSE": "거짓", + "LOGIC_BOOLEAN_TOOLTIP": "참 혹은 거짓 모두 반환합니다.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "빈 값", + "LOGIC_NULL_TOOLTIP": "빈 값을 반환합니다.", + "LOGIC_TERNARY_HELPURL": "https://ko.wikipedia.org/wiki/물음표", + "LOGIC_TERNARY_CONDITION": "테스트", + "LOGIC_TERNARY_IF_TRUE": "만약 참이라면", + "LOGIC_TERNARY_IF_FALSE": "만약 거짓이라면", + "LOGIC_TERNARY_TOOLTIP": "'test'의 조건을 검사합니다. 조건이 참이면 'if true' 값을 반환합니다. 거짓이면 'if false' 값을 반환합니다.", + "MATH_NUMBER_HELPURL": "https://ko.wikipedia.org/wiki/수_(수학)", + "MATH_NUMBER_TOOLTIP": "수", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "x", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://ko.wikipedia.org/wiki/산술", + "MATH_ARITHMETIC_TOOLTIP_ADD": "두 수의 합을 반환합니다.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "두 수간의 차이를 반환합니다.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "두 수의 곱을 반환합니다.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "두 수의 나눈 결과를 반환합니다.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "첫 번째 수를 두 번째 수 만큼, 거듭제곱 한 결과값을 돌려줍니다.", + "MATH_SINGLE_HELPURL": "https://ko.wikipedia.org/wiki/제곱근", + "MATH_SINGLE_OP_ROOT": "제곱근", + "MATH_SINGLE_TOOLTIP_ROOT": "숫자의 제곱근을 반환합니다.", + "MATH_SINGLE_OP_ABSOLUTE": "절대값", + "MATH_SINGLE_TOOLTIP_ABS": "어떤 수의 절대값(absolute)을 계산한 결과를, 정수값으로 돌려줍니다.", + "MATH_SINGLE_TOOLTIP_NEG": "음(-)/양(+), 부호를 반대로 하여 값을 돌려줍니다.", + "MATH_SINGLE_TOOLTIP_LN": "어떤 수의, 자연로그(natural logarithm) 값을 돌려줍니다.(밑 e, 예시 log e x)", + "MATH_SINGLE_TOOLTIP_LOG10": "어떤 수의, 기본로그(logarithm) 값을 돌려줍니다.(밑 10, 예시 log 10 x)", + "MATH_SINGLE_TOOLTIP_EXP": "e의 거듭제곱 값을 반환합니다.", + "MATH_SINGLE_TOOLTIP_POW10": "10의 거듭제곱 값을 반환합니다.", + "MATH_TRIG_HELPURL": "https://ko.wikipedia.org/wiki/삼각함수", + "MATH_TRIG_TOOLTIP_SIN": "각도의 사인을 반환합니다. (라디안 아님)", + "MATH_TRIG_TOOLTIP_COS": "각도의 코사인을 반환합니다. (라디안 아님)", + "MATH_TRIG_TOOLTIP_TAN": "각도의 탄젠트를 반환합니다. (라디안 아님)", + "MATH_TRIG_TOOLTIP_ASIN": "어떤 수에 대한, asin(arcsine) 값을 돌려줍니다.", + "MATH_TRIG_TOOLTIP_ACOS": "어떤 수에 대한, acos(arccosine) 값을 돌려줍니다.", + "MATH_TRIG_TOOLTIP_ATAN": "어떤 수에 대한, atan(arctangent) 값을 돌려줍니다.", + "MATH_CONSTANT_HELPURL": "https://ko.wikipedia.org/wiki/수학_상수", + "MATH_CONSTANT_TOOLTIP": "일반적인 상수 값들 중 하나를 돌려줍니다. : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", + "MATH_IS_EVEN": "가 짝수(even) 이면", + "MATH_IS_ODD": "가 홀수(odd) 이면", + "MATH_IS_PRIME": "가 소수(prime) 이면", + "MATH_IS_WHOLE": "가 정수이면", + "MATH_IS_POSITIVE": "가 양(+)수 이면", + "MATH_IS_NEGATIVE": "가 음(-)수 이면", + "MATH_IS_DIVISIBLE_BY": "가 다음 수로 나누어 떨어지면 :", + "MATH_IS_TOOLTIP": "어떤 수가 짝 수, 홀 수, 소 수, 정 수, 양 수, 음 수, 나누어 떨어지는 수 인지 검사해 결과값을 돌려줍니다. 참(true) 또는 거짓(false) 값을 돌려줌.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "바꾸기 %1 만큼 %2", + "MATH_CHANGE_TOOLTIP": "변수 '%1' 에 저장되어있는 값에, 어떤 수를 더해, 변수에 다시 저장합니다.", + "MATH_ROUND_HELPURL": "https://ko.wikipedia.org/wiki/반올림", + "MATH_ROUND_TOOLTIP": "어떤 수를 반올림/올림/버림한 결과를, 정수값으로 돌려줍니다.", + "MATH_ROUND_OPERATOR_ROUND": "반올림", + "MATH_ROUND_OPERATOR_ROUNDUP": "올림", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "버림", + "MATH_ONLIST_HELPURL": "", + "MATH_ONLIST_OPERATOR_SUM": "합", + "MATH_ONLIST_TOOLTIP_SUM": "리스트에 들어있는 수(값)들을, 모두 합(sum) 한, 총합(sum)을 돌려줍니다.", + "MATH_ONLIST_OPERATOR_MIN": "최소값", + "MATH_ONLIST_TOOLTIP_MIN": "리스트에 들어있는 수(값) 들 중, 가장 작은(min) 수(값)를 돌려줍니다.", + "MATH_ONLIST_OPERATOR_MAX": "최대값", + "MATH_ONLIST_TOOLTIP_MAX": "리스트에 들어있는 수(값) 들 중, 가장 큰(max) 수(값)를 돌려줍니다.", + "MATH_ONLIST_OPERATOR_AVERAGE": "평균값", + "MATH_ONLIST_TOOLTIP_AVERAGE": "리스트에 들어있는 수(값)들에 대해, 산술 평균(arithmetic mean) 한 값을 돌려줍니다.", + "MATH_ONLIST_OPERATOR_MEDIAN": "중간값", + "MATH_ONLIST_TOOLTIP_MEDIAN": "리스트에 들어있는 수(값) 들 중, 중간(median) 수(값)를 돌려줍니다.", + "MATH_ONLIST_OPERATOR_MODE": "가장 여러 개 있는 값", + "MATH_ONLIST_TOOLTIP_MODE": "리스트에 들어있는 아이템들 중에서, 가장 여러 번 들어있는 아이템들을 리스트로 만들어 돌려줍니다. (최빈값, modes)", + "MATH_ONLIST_OPERATOR_STD_DEV": "표준 편차", + "MATH_ONLIST_TOOLTIP_STD_DEV": "이 리스트의 표준 편차를 반환합니다.", + "MATH_ONLIST_OPERATOR_RANDOM": "목록의 임의 항목", + "MATH_ONLIST_TOOLTIP_RANDOM": "목록에서 임의의 아이템을 돌려줍니다.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "%1 ÷ %2의 나머지", + "MATH_MODULO_TOOLTIP": "첫 번째 수를 두 번째 수로 나눈, 나머지 값을 돌려줍니다.", + "MATH_CONSTRAIN_HELPURL": "https://ko.wikipedia.org/wiki/클램핑_(그래픽)", + "MATH_CONSTRAIN_TITLE": "%1의 값을, 최소 %2 최대 %3으로 조정", + "MATH_CONSTRAIN_TOOLTIP": "어떤 수를, 특정 범위의 값이 되도록 강제로 조정합니다.", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "랜덤정수(%1<= n <=%2)", + "MATH_RANDOM_INT_TOOLTIP": "두 주어진 제한된 범위 사이의 임의 정수값을 돌려줍니다.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "임의 분수", + "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (포함)과 1.0 (배타적) 사이의 임의 분수 값을 돌려줍니다.", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "X:%1 Y:%2의 atan2", + "MATH_ATAN2_TOOLTIP": "점 (X, Y)의 아크탄젠트를 -180에서 180까지 도 단위로 반환합니다.", + "TEXT_TEXT_HELPURL": "https://ko.wikipedia.org/wiki/문자열", + "TEXT_TEXT_TOOLTIP": "문자, 단어, 문장.", + "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", + "TEXT_JOIN_TITLE_CREATEWITH": "텍스트 만들기", + "TEXT_JOIN_TOOLTIP": "여러 개의 아이템들을 연결해(묶어), 새로운 문장을 만듭니다.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "가입", + "TEXT_CREATE_JOIN_TOOLTIP": "섹션을 추가, 제거하거나 순서를 변경하여 이 텍스트 블럭을 재구성합니다.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "텍스트에 항목을 추가합니다.", + "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_APPEND_TITLE": "다음 %1 내용 덧붙이기 %2", + "TEXT_APPEND_TOOLTIP": "'%1' 변수의 끝에 일부 텍스트를 덧붙입니다.", + "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_LENGTH_TITLE": "다음 문장의 문자 개수 %1", + "TEXT_LENGTH_TOOLTIP": "입력된 문장의, 문자 개수를 돌려줍니다.(공백문자 포함)", + "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", + "TEXT_ISEMPTY_TITLE": "%1이 비어 있습니다", + "TEXT_ISEMPTY_TOOLTIP": "입력된 문장이, 빈 문장(\"\")이면 참(true) 값을 돌려줍니다.", + "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", + "TEXT_INDEXOF_TOOLTIP": "두 번째 텍스트에서 첫 번째 텍스트가 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 텍스트가 없으면 %1을 반환합니다.", + "TEXT_INDEXOF_TITLE": "문장 %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "에서 다음 문장이 처음으로 나타난 위치 찾기 :", + "TEXT_INDEXOF_OPERATOR_LAST": "에서 다음 문장이 마지막으로 나타난 위치 찾기 :", + "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", + "TEXT_CHARAT_TITLE": "텍스트 %1 %2에서", + "TEXT_CHARAT_FROM_START": "에서, 앞에서부터 # 번째 위치의 문자 얻기", + "TEXT_CHARAT_FROM_END": "에서, 마지막부터 # 번째 위치의 문자 얻기", + "TEXT_CHARAT_FIRST": "에서, 첫 번째 문자 얻기", + "TEXT_CHARAT_LAST": "에서, 마지막 문자 얻기", + "TEXT_CHARAT_RANDOM": "에서, 랜덤하게 한 문자 얻기", + "TEXT_CHARAT_TAIL": "", + "TEXT_CHARAT_TOOLTIP": "특정 번째 위치에서, 문자를 얻어내 돌려줍니다.", + "TEXT_GET_SUBSTRING_TOOLTIP": "문장 중 일부를 얻어내 돌려줍니다.", + "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "문장", + "TEXT_GET_SUBSTRING_START_FROM_START": "에서, 처음부터 # 번째 문자부터 얻어냄", + "TEXT_GET_SUBSTRING_START_FROM_END": "에서, 마지막에서 # 번째부터 얻어냄", + "TEXT_GET_SUBSTRING_START_FIRST": "에서, 처음부터 얻어냄", + "TEXT_GET_SUBSTRING_END_FROM_START": "# 번째 문자까지", + "TEXT_GET_SUBSTRING_END_FROM_END": "끝에서부터 # 번째 문자까지", + "TEXT_GET_SUBSTRING_END_LAST": "마지막 문자까지", + "TEXT_GET_SUBSTRING_TAIL": "", + "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", + "TEXT_CHANGECASE_TOOLTIP": "영문 대소문자 형태를 변경해 돌려줍니다.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "대문자로", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "소문자로", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "첫 문자만 대문자로", + "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", + "TEXT_TRIM_TOOLTIP": "문장의 왼쪽/오른쪽/양쪽에서 스페이스 문자를 제거해 돌려줍니다.", + "TEXT_TRIM_OPERATOR_BOTH": "양쪽의 공백 문자 제거", + "TEXT_TRIM_OPERATOR_LEFT": "왼쪽의 공백 문자 제거", + "TEXT_TRIM_OPERATOR_RIGHT": "오른쪽의 공백 문자 제거", + "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", + "TEXT_PRINT_TITLE": "다음 내용 출력 %1", + "TEXT_PRINT_TOOLTIP": "원하는 문장, 수, 값 등을 출력합니다.", + "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", + "TEXT_PROMPT_TYPE_TEXT": "메시지를 활용해 문장 입력", + "TEXT_PROMPT_TYPE_NUMBER": "메시지를 활용해 수 입력", + "TEXT_PROMPT_TOOLTIP_NUMBER": "수에 대해 사용자의 입력을 받습니다.", + "TEXT_PROMPT_TOOLTIP_TEXT": "문장에 대해 사용자의 입력을 받습니다.", + "TEXT_COUNT_MESSAGE0": "%2에서 %1 숫자 세기", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "다른 어떤 텍스트에서 어떤 텍스트가 나타난 횟수를 셉니다.", + "TEXT_REPLACE_MESSAGE0": "%3에서 %2을(를) %1(으)로 바꾸기", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "다른 텍스트 내에서 일부 텍스트의 모든 발생을 치환합니다.", + "TEXT_REVERSE_MESSAGE0": "%1 뒤집기", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "텍스트 안의 문자의 순서를 반전시킵니다.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "빈 리스트 생성", + "LISTS_CREATE_EMPTY_TOOLTIP": "데이터 레코드가 없는, 길이가 0인 목록을 반환합니다.", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "원하는 수의 항목들로 목록을 생성합니다.", + "LISTS_CREATE_WITH_INPUT_WITH": "리스트 만들기", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "리스트", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "섹션을 추가, 제거하거나 순서를 변경하여 이 리스트 블럭을 재구성합니다.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "아이템을 리스트에 추가합니다.", + "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_REPEAT_TOOLTIP": "지정된 값을, 지정된 개수 만큼 넣어, 목록을 생성합니다.", + "LISTS_REPEAT_TITLE": "%1을 %2번 넣어, 리스트 생성", + "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", + "LISTS_LENGTH_TITLE": "%1의 길이", + "LISTS_LENGTH_TOOLTIP": "목록의 길이를 반환합니다.", + "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", + "LISTS_ISEMPTY_TITLE": "%1이 비어 있습니다", + "LISTS_ISEMPTY_TOOLTIP": "목록이 비었을 때 참을 반환합니다.", + "LISTS_INLIST": "리스트", + "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", + "LISTS_INDEX_OF_FIRST": "처음으로 나타난 위치", + "LISTS_INDEX_OF_LAST": "마지막으로 나타난 위치", + "LISTS_INDEX_OF_TOOLTIP": "목록에서 항목이 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 항목이 없으면 %1을 반환합니다.", + "LISTS_GET_INDEX_GET": "가져오기", + "LISTS_GET_INDEX_GET_REMOVE": "잘라 내기", + "LISTS_GET_INDEX_REMOVE": "삭제", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "마지막 번째 위치부터, # 번째", + "LISTS_GET_INDEX_FIRST": "첫 번째", + "LISTS_GET_INDEX_LAST": "마지막", + "LISTS_GET_INDEX_RANDOM": "임의로", + "LISTS_GET_INDEX_TAIL": "", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1은 첫 번째 항목입니다.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1은(는) 마지막 항목입니다.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "목록에서 특정 위치의 항목을 반환합니다.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "첫 번째 아이템을 찾아 돌려줍니다.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "마지막 아이템을 찾아 돌려줍니다.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "리스트의 아이템들 중, 랜덤으로 선택해 돌려줍니다.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "목록의 특정 위치에 있는 항목을 제거하고 반환합니다.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "첫 번째 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "마지막 아이템을 찾아내 돌려주고, 그 아이템을 리스트에서 삭제합니다.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "목록에서 임의 위치의 아이템을 찾아내 삭제하고 돌려줍니다.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "목록에서 특정 위치의 항목을 삭제합니다.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "리스트에서 첫 번째 아이템을 삭제합니다.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "리스트에서 마지막 아이템을 찾아 삭제합니다.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "리스트에서 랜덤하게 아이템을 삭제합니다.", + "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", + "LISTS_SET_INDEX_SET": "에서 설정", + "LISTS_SET_INDEX_INSERT": "에서 원하는 위치에 삽입", + "LISTS_SET_INDEX_INPUT_TO": "에", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "목록의 특정 위치에 있는 항목으로 설정합니다.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "첫 번째 위치의 아이템으로 설정합니다.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "마지막 아이템으로 설정합니다.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "목록에서 임의 위치의 아이템을 설정합니다.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "목록의 특정 위치에 항목을 삽입합니다.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "항목을 목록의 처음 위치에 삽입합니다.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "리스트의 마지막에 아이템을 추가합니다.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "목록에서 임의 위치에 아이템을 삽입합니다.", + "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", + "LISTS_GET_SUBLIST_START_FROM_START": "처음 # 번째 위치부터, 서브 리스트 추출", + "LISTS_GET_SUBLIST_START_FROM_END": "마지막부터 # 번째 위치부터, 서브 리스트 추출", + "LISTS_GET_SUBLIST_START_FIRST": "첫 번째 위치부터, 서브 리스트 추출", + "LISTS_GET_SUBLIST_END_FROM_START": "앞에서부터 # 번째로", + "LISTS_GET_SUBLIST_END_FROM_END": "끝에서부터 # 번째로", + "LISTS_GET_SUBLIST_END_LAST": "마지막으로", + "LISTS_GET_SUBLIST_TAIL": "", + "LISTS_GET_SUBLIST_TOOLTIP": "목록의 특정 부분에 대한 복사본을 만듭니다.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "정렬 %1 %2 %3", + "LISTS_SORT_TOOLTIP": "목록의 사본을 정렬합니다.", + "LISTS_SORT_ORDER_ASCENDING": "오름차순", + "LISTS_SORT_ORDER_DESCENDING": "내림차순", + "LISTS_SORT_TYPE_NUMERIC": "숫자순", + "LISTS_SORT_TYPE_TEXT": "알파벳순", + "LISTS_SORT_TYPE_IGNORECASE": "알파벳순 (대소문자 구분 안 함)", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "텍스트에서 목록 만들기", + "LISTS_SPLIT_TEXT_FROM_LIST": "목록에서 텍스트 만들기", + "LISTS_SPLIT_WITH_DELIMITER": "분리와", + "LISTS_SPLIT_TOOLTIP_SPLIT": "각 속보, 텍스트의 목록들에서 텍스트를 분할합니다.", + "LISTS_SPLIT_TOOLTIP_JOIN": "구분 기호로 구분하여 텍스트 목록을 하나의 텍스트에 병합합니다.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "%1 뒤집기", + "LISTS_REVERSE_TOOLTIP": "리스트의 복사본을 뒤집습니다.", + "ORDINAL_NUMBER_SUFFIX": "", + "VARIABLES_GET_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)", + "VARIABLES_GET_TOOLTIP": "변수에 저장 되어있는 값을 돌려줍니다.", + "VARIABLES_GET_CREATE_SET": "'집합 %1' 생성", + "VARIABLES_SET_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)", + "VARIABLES_SET": "%1를 %2로 설정", + "VARIABLES_SET_TOOLTIP": "변수의 값을 입력한 값으로 변경해 줍니다.", + "VARIABLES_SET_CREATE_GET": "'%1 값 읽기' 블럭 생성", + "PROCEDURES_DEFNORETURN_HELPURL": "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29", + "PROCEDURES_DEFNORETURN_TITLE": "함수", + "PROCEDURES_DEFNORETURN_PROCEDURE": "함수 이름", + "PROCEDURES_BEFORE_PARAMS": "사용:", + "PROCEDURES_CALL_BEFORE_PARAMS": "사용:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "실행 후, 결과 값을 돌려주지 않는 함수를 만듭니다.", + "PROCEDURES_DEFNORETURN_COMMENT": "이 함수를 설명하세요...", + "PROCEDURES_DEFRETURN_HELPURL": "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29", + "PROCEDURES_DEFRETURN_RETURN": "다음을 돌려줌", + "PROCEDURES_DEFRETURN_TOOLTIP": "실행 후, 결과 값을 돌려주는 함수를 만듭니다.", + "PROCEDURES_ALLOW_STATEMENTS": "서술 허가", + "PROCEDURES_DEF_DUPLICATE_WARNING": "경고: 이 함수에는, 같은 이름을 사용하는 매개 변수들이 있습니다.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://ko.wikipedia.org/wiki/함수_(프로그래밍)", + "PROCEDURES_CALLNORETURN_TOOLTIP": "미리 정의해 둔 '%1' 함수를 실행합니다.", + "PROCEDURES_CALLRETURN_HELPURL": "https://ko.wikipedia.org/wiki/함수_(프로그래밍)", + "PROCEDURES_CALLRETURN_TOOLTIP": "미리 정의해 둔 '%1' 함수를 실행하고, 함수를 실행한 결과 값을 돌려줍니다.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "매개 변수들", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "이 함수를 추가, 삭제, 혹은 재정렬합니다.", + "PROCEDURES_MUTATORARG_TITLE": "매개 변수:", + "PROCEDURES_MUTATORARG_TOOLTIP": "함수에 값을 더합니다.", + "PROCEDURES_HIGHLIGHT_DEF": "함수 정의 찾기", + "PROCEDURES_CREATE_DO": "'%1' 생성", + "PROCEDURES_IFRETURN_TOOLTIP": "값이 참이라면, 두 번째 값을 반환합니다.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "경고: 이 블럭은, 함수 정의 블럭 안에서만 사용할 수 있습니다.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "말해 보세요...", + "WORKSPACE_ARIA_LABEL": "Blockly 워크스페이스", + "COLLAPSED_WARNINGS_WARNING": "접힌 블록이 경고를 포함하고 있습니다.", + "DIALOG_OK": "확인", + "DIALOG_CANCEL": "취소" +} diff --git a/msg/json/ksh.json b/msg/json/ksh.json index 078e004ed87..4b03080b95b 100644 --- a/msg/json/ksh.json +++ b/msg/json/ksh.json @@ -1,44 +1,44 @@ -{ - "@metadata": { - "authors": [ - "Purodha" - ] - }, - "DELETE_BLOCK": "Schmiiß dat Klözje fott", - "DELETE_X_BLOCKS": "Schmiiß %1 Klözjer fott", - "CLEAN_UP": "Klözjer opprühme", - "COLLAPSE_BLOCK": "Donn dat Klözje zesammefallde", - "COLLAPSE_ALL": "Donn di Klözjer zesammefallde", - "EXPAND_BLOCK": "Donn dat Klözje opfallde", - "EXPAND_ALL": "Donn di Klözjer opfallde", - "DISABLE_BLOCK": "Donn dat Klözje ußschallde", - "ENABLE_BLOCK": "Donn dat Klözje enschallde", - "HELP": "Hölp", - "CHANGE_VALUE_TITLE": "Dä Wäät tuusche:", - "COLOUR_RANDOM_TITLE": "en föhfälleje Färv", - "COLOUR_RANDOM_TOOLTIP": "Söhg en Färv pä Zohfall uß.", - "COLOUR_RGB_TITLE": "enfärve met", - "COLOUR_RGB_RED": "ruhd", - "COLOUR_RGB_GREEN": "jröhn", - "COLOUR_RGB_BLUE": "blou", - "COLOUR_BLEND_COLOUR1": "eezte Färv", - "COLOUR_BLEND_COLOUR2": "zwaite Färv", - "COLOUR_BLEND_RATIO": "Verhhälltneß", - "COLOUR_BLEND_TOOLTIP": "Mesch zwai Färve med enem beschtempte Verhältneß (zwesche 0.0 un 1.0)", - "CONTROLS_REPEAT_TITLE": "%1 Mohl widerhole", - "CONTROLS_REPEAT_INPUT_DO": "maach", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "widderholl, esu lang wi", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "widerholl bes", - "CONTROLS_FOR_TITLE": "zäll %1 vun %2 noh %3 en Schredde vun %4", - "CONTROLS_IF_MSG_ELSE": "sönst", - "MATH_CHANGE_TITLE": "donn dä Wääd_en %1 öm %2 ändere", - "LISTS_ISEMPTY_TITLE": "%1 es läddesch", - "LISTS_ISEMPTY_TOOLTIP": "Jitt „Wohr“ us, wann en dä Leß nix dren es.", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 es de Eezde en de Leß.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 es de Läzde en de Leß.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_ORDER_ASCENDING": "opwääts", - "LISTS_SORT_ORDER_DESCENDING": "rökwääts zottehre", - "VARIABLES_SET": "säz der Wäät en %1 op %2", - "DIALOG_OK": "Jebongt!" -} +{ + "@metadata": { + "authors": [ + "Purodha" + ] + }, + "DELETE_BLOCK": "Schmiiß dat Klözje fott", + "DELETE_X_BLOCKS": "Schmiiß %1 Klözjer fott", + "CLEAN_UP": "Klözjer opprühme", + "COLLAPSE_BLOCK": "Donn dat Klözje zesammefallde", + "COLLAPSE_ALL": "Donn di Klözjer zesammefallde", + "EXPAND_BLOCK": "Donn dat Klözje opfallde", + "EXPAND_ALL": "Donn di Klözjer opfallde", + "DISABLE_BLOCK": "Donn dat Klözje ußschallde", + "ENABLE_BLOCK": "Donn dat Klözje enschallde", + "HELP": "Hölp", + "CHANGE_VALUE_TITLE": "Dä Wäät tuusche:", + "COLOUR_RANDOM_TITLE": "en föhfälleje Färv", + "COLOUR_RANDOM_TOOLTIP": "Söhg en Färv pä Zohfall uß.", + "COLOUR_RGB_TITLE": "enfärve met", + "COLOUR_RGB_RED": "ruhd", + "COLOUR_RGB_GREEN": "jröhn", + "COLOUR_RGB_BLUE": "blou", + "COLOUR_BLEND_COLOUR1": "eezte Färv", + "COLOUR_BLEND_COLOUR2": "zwaite Färv", + "COLOUR_BLEND_RATIO": "Verhhälltneß", + "COLOUR_BLEND_TOOLTIP": "Mesch zwai Färve med enem beschtempte Verhältneß (zwesche 0.0 un 1.0)", + "CONTROLS_REPEAT_TITLE": "%1 Mohl widerhole", + "CONTROLS_REPEAT_INPUT_DO": "maach", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "widderholl, esu lang wi", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "widerholl bes", + "CONTROLS_FOR_TITLE": "zäll %1 vun %2 noh %3 en Schredde vun %4", + "CONTROLS_IF_MSG_ELSE": "sönst", + "MATH_CHANGE_TITLE": "donn dä Wääd_en %1 öm %2 ändere", + "LISTS_ISEMPTY_TITLE": "%1 es läddesch", + "LISTS_ISEMPTY_TOOLTIP": "Jitt „Wohr“ us, wann en dä Leß nix dren es.", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 es de Eezde en de Leß.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 es de Läzde en de Leß.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_ORDER_ASCENDING": "opwääts", + "LISTS_SORT_ORDER_DESCENDING": "rökwääts zottehre", + "VARIABLES_SET": "säz der Wäät en %1 op %2", + "DIALOG_OK": "Jebongt!" +} diff --git a/msg/json/ku-latn.json b/msg/json/ku-latn.json index 90ded0f2619..b77f946bf63 100644 --- a/msg/json/ku-latn.json +++ b/msg/json/ku-latn.json @@ -1,41 +1,41 @@ -{ - "@metadata": { - "authors": [ - "Bikarhêner", - "George Animal", - "Ghybu", - "Kur" - ] - }, - "TODAY": "Îro", - "ADD_COMMENT": "Şîroveyekê lê zêde bike", - "HELP": "Alîkarî", - "UNDO": "Betal bike", - "COLOUR_RANDOM_TITLE": "rengeke ketober", - "COLOUR_RGB_RED": "sor", - "COLOUR_RGB_GREEN": "kesk", - "COLOUR_RGB_BLUE": "şîn", - "COLOUR_BLEND_COLOUR1": "reng 1", - "COLOUR_BLEND_COLOUR2": "reng 2", - "CONTROLS_IF_MSG_IF": "heke", - "LOGIC_OPERATION_AND": "û", - "LOGIC_OPERATION_OR": "an", - "LOGIC_BOOLEAN_TRUE": "rast", - "LOGIC_BOOLEAN_FALSE": "nerast", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "heke rast be", - "LOGIC_TERNARY_IF_FALSE": "heke nerast be", - "TEXT_CREATE_JOIN_TITLE_JOIN": "beşdarî", - "TEXT_ISEMPTY_TITLE": "%1 vala ye", - "TEXT_PRINT_TITLE": "çap %1", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lîste", - "LISTS_ISEMPTY_TITLE": "%1 vala ye", - "LISTS_GET_INDEX_FIRST": "ya pêşîn", - "LISTS_GET_INDEX_LAST": "ya paşîn", - "LISTS_GET_INDEX_RANDOM": "ketober", - "PROCEDURES_DEFRETURN_RETURN": "vegere", - "PROCEDURES_CREATE_DO": "Biafirîne '%1'", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Tiştek bibêje...", - "DIALOG_OK": "Baş e", - "DIALOG_CANCEL": "Betal bike" -} +{ + "@metadata": { + "authors": [ + "Bikarhêner", + "George Animal", + "Ghybu", + "Kur" + ] + }, + "TODAY": "Îro", + "ADD_COMMENT": "Şîroveyekê lê zêde bike", + "HELP": "Alîkarî", + "UNDO": "Betal bike", + "COLOUR_RANDOM_TITLE": "rengeke ketober", + "COLOUR_RGB_RED": "sor", + "COLOUR_RGB_GREEN": "kesk", + "COLOUR_RGB_BLUE": "şîn", + "COLOUR_BLEND_COLOUR1": "reng 1", + "COLOUR_BLEND_COLOUR2": "reng 2", + "CONTROLS_IF_MSG_IF": "heke", + "LOGIC_OPERATION_AND": "û", + "LOGIC_OPERATION_OR": "an", + "LOGIC_BOOLEAN_TRUE": "rast", + "LOGIC_BOOLEAN_FALSE": "nerast", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "heke rast be", + "LOGIC_TERNARY_IF_FALSE": "heke nerast be", + "TEXT_CREATE_JOIN_TITLE_JOIN": "beşdarî", + "TEXT_ISEMPTY_TITLE": "%1 vala ye", + "TEXT_PRINT_TITLE": "çap %1", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lîste", + "LISTS_ISEMPTY_TITLE": "%1 vala ye", + "LISTS_GET_INDEX_FIRST": "ya pêşîn", + "LISTS_GET_INDEX_LAST": "ya paşîn", + "LISTS_GET_INDEX_RANDOM": "ketober", + "PROCEDURES_DEFRETURN_RETURN": "vegere", + "PROCEDURES_CREATE_DO": "Biafirîne '%1'", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Tiştek bibêje...", + "DIALOG_OK": "Baş e", + "DIALOG_CANCEL": "Betal bike" +} diff --git a/msg/json/ky.json b/msg/json/ky.json index af1a8661a26..38b85a02720 100644 --- a/msg/json/ky.json +++ b/msg/json/ky.json @@ -1,68 +1,68 @@ -{ - "@metadata": { - "authors": [ - "Bosogo", - "Friendwip.kg", - "Janatkg", - "Jenishbek" - ] - }, - "VARIABLES_DEFAULT_NAME": "элемент", - "TODAY": "Бүгүн", - "DUPLICATE_BLOCK": "Дубликат", - "ADD_COMMENT": "Пикириңизди кошуңуз", - "REMOVE_COMMENT": "Жорумду өчүрүү", - "EXTERNAL_INPUTS": "Тышкы Толуктоолор", - "INLINE_INPUTS": "Ички Толуктоолор", - "DELETE_BLOCK": "Блокту Өчүрүү", - "DELETE_X_BLOCKS": "Блоктун 1%ын Өчүрүү", - "DELETE_ALL_BLOCKS": "1% блоктордун баарын өчүрүү, йа?", - "CLEAN_UP": "Блокторду тазалоо", - "COLLAPSE_BLOCK": "Блокту жашыруу", - "COLLAPSE_ALL": "Блокторду жашыруу", - "EXPAND_BLOCK": "Блокту кеңейтүү", - "EXPAND_ALL": "Блокторду кеңейтүү", - "DISABLE_BLOCK": "Блок жараксыз", - "ENABLE_BLOCK": "Блок жарактуу", - "HELP": "Жардам", - "CHANGE_VALUE_TITLE": "маанисин өзгөрт", - "RENAME_VARIABLE": "Өзгөрмөнүн атын алмаштыруу", - "RENAME_VARIABLE_TITLE": "Баардык '%1' өзгөрмөнүнүн атын алмаштыр", - "NEW_VARIABLE": "жаңы өзгөрмө", - "NEW_VARIABLE_TITLE": "Жаңы өзгөрмөнүн аты", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "палитрадан түс танда", - "COLOUR_RANDOM_TITLE": "тушкелди түс", - "COLOUR_RANDOM_TOOLTIP": "Түстү тушкелди тандоо.", - "COLOUR_RGB_TITLE": "түсү менен", - "COLOUR_RGB_RED": "кызыл", - "COLOUR_RGB_GREEN": "жашыл", - "COLOUR_RGB_BLUE": "көк", - "COLOUR_RGB_TOOLTIP": "Кызыл, жашыл жана көк түстөрдөн жаңы түс жаса. Ар бир түстүн мааниси 0 менен 100 арасында болуусу керек.", - "COLOUR_BLEND_TITLE": "аралаштыруу", - "COLOUR_BLEND_COLOUR1": "1-түс", - "COLOUR_BLEND_COLOUR2": "2-түс", - "COLOUR_BLEND_RATIO": "катышы", - "COLOUR_BLEND_TOOLTIP": "Эки түстү берилген катыш (0.0 - 1.0) менен аралаштыр.", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 жолу кайтала", - "CONTROLS_REPEAT_INPUT_DO": "жаса", - "CONTROLS_REPEAT_TOOLTIP": "Билдирүүнү бир канча жолу кайтала", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Кайтала эгерде", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "Кайтала чейин", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Маани туура болгон учурда билдирүүлөрдү кайтала", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Маани ката болгон учурда билдирүүлөрдү кайтала", - "CONTROLS_FOR_TITLE": "%1 менен %2 ден %3 кө чейин %4 төн эсепте", - "CONTROLS_FOREACH_TITLE": "%2 катарынын ар бир элементи %1 үчүн", - "CONTROLS_IF_MSG_IF": "эгерде", - "CONTROLS_IF_MSG_ELSEIF": "же болбосо", - "CONTROLS_IF_MSG_ELSE": "башка", - "LOGIC_OPERATION_OR": "же", - "LOGIC_NEGATE_TITLE": " %1 эмес", - "LOGIC_TERNARY_CONDITION": "текшерүү", - "LOGIC_TERNARY_IF_TRUE": "туура болсо", - "LOGIC_TERNARY_IF_FALSE": "ката болсо", - "MATH_TRIG_HELPURL": "https://ky.wikipedia.org/wiki/Тригонометриялык_функциялар", - "TEXT_ISEMPTY_TITLE": "%1 бош", - "DIALOG_OK": "OK" -} +{ + "@metadata": { + "authors": [ + "Bosogo", + "Friendwip.kg", + "Janatkg", + "Jenishbek" + ] + }, + "VARIABLES_DEFAULT_NAME": "элемент", + "TODAY": "Бүгүн", + "DUPLICATE_BLOCK": "Дубликат", + "ADD_COMMENT": "Пикириңизди кошуңуз", + "REMOVE_COMMENT": "Жорумду өчүрүү", + "EXTERNAL_INPUTS": "Тышкы Толуктоолор", + "INLINE_INPUTS": "Ички Толуктоолор", + "DELETE_BLOCK": "Блокту Өчүрүү", + "DELETE_X_BLOCKS": "Блоктун 1%ын Өчүрүү", + "DELETE_ALL_BLOCKS": "1% блоктордун баарын өчүрүү, йа?", + "CLEAN_UP": "Блокторду тазалоо", + "COLLAPSE_BLOCK": "Блокту жашыруу", + "COLLAPSE_ALL": "Блокторду жашыруу", + "EXPAND_BLOCK": "Блокту кеңейтүү", + "EXPAND_ALL": "Блокторду кеңейтүү", + "DISABLE_BLOCK": "Блок жараксыз", + "ENABLE_BLOCK": "Блок жарактуу", + "HELP": "Жардам", + "CHANGE_VALUE_TITLE": "маанисин өзгөрт", + "RENAME_VARIABLE": "Өзгөрмөнүн атын алмаштыруу", + "RENAME_VARIABLE_TITLE": "Баардык '%1' өзгөрмөнүнүн атын алмаштыр", + "NEW_VARIABLE": "жаңы өзгөрмө", + "NEW_VARIABLE_TITLE": "Жаңы өзгөрмөнүн аты", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "палитрадан түс танда", + "COLOUR_RANDOM_TITLE": "тушкелди түс", + "COLOUR_RANDOM_TOOLTIP": "Түстү тушкелди тандоо.", + "COLOUR_RGB_TITLE": "түсү менен", + "COLOUR_RGB_RED": "кызыл", + "COLOUR_RGB_GREEN": "жашыл", + "COLOUR_RGB_BLUE": "көк", + "COLOUR_RGB_TOOLTIP": "Кызыл, жашыл жана көк түстөрдөн жаңы түс жаса. Ар бир түстүн мааниси 0 менен 100 арасында болуусу керек.", + "COLOUR_BLEND_TITLE": "аралаштыруу", + "COLOUR_BLEND_COLOUR1": "1-түс", + "COLOUR_BLEND_COLOUR2": "2-түс", + "COLOUR_BLEND_RATIO": "катышы", + "COLOUR_BLEND_TOOLTIP": "Эки түстү берилген катыш (0.0 - 1.0) менен аралаштыр.", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 жолу кайтала", + "CONTROLS_REPEAT_INPUT_DO": "жаса", + "CONTROLS_REPEAT_TOOLTIP": "Билдирүүнү бир канча жолу кайтала", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Кайтала эгерде", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "Кайтала чейин", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Маани туура болгон учурда билдирүүлөрдү кайтала", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Маани ката болгон учурда билдирүүлөрдү кайтала", + "CONTROLS_FOR_TITLE": "%1 менен %2 ден %3 кө чейин %4 төн эсепте", + "CONTROLS_FOREACH_TITLE": "%2 катарынын ар бир элементи %1 үчүн", + "CONTROLS_IF_MSG_IF": "эгерде", + "CONTROLS_IF_MSG_ELSEIF": "же болбосо", + "CONTROLS_IF_MSG_ELSE": "башка", + "LOGIC_OPERATION_OR": "же", + "LOGIC_NEGATE_TITLE": " %1 эмес", + "LOGIC_TERNARY_CONDITION": "текшерүү", + "LOGIC_TERNARY_IF_TRUE": "туура болсо", + "LOGIC_TERNARY_IF_FALSE": "ката болсо", + "MATH_TRIG_HELPURL": "https://ky.wikipedia.org/wiki/Тригонометриялык_функциялар", + "TEXT_ISEMPTY_TITLE": "%1 бош", + "DIALOG_OK": "OK" +} diff --git a/msg/json/la.json b/msg/json/la.json index e56536214c4..4f609663137 100644 --- a/msg/json/la.json +++ b/msg/json/la.json @@ -1,6 +1,6 @@ -{ - "@metadata": { - "authors": [] - }, - "DIALOG_OK": "ASSENTIOR" -} +{ + "@metadata": { + "authors": [] + }, + "DIALOG_OK": "ASSENTIOR" +} diff --git a/msg/json/lb.json b/msg/json/lb.json index 412dd51bcfd..3a1c5cf7873 100644 --- a/msg/json/lb.json +++ b/msg/json/lb.json @@ -1,138 +1,138 @@ -{ - "@metadata": { - "authors": [ - "Les Meloures", - "Robby", - "Soued031" - ] - }, - "VARIABLES_DEFAULT_NAME": "Element", - "UNNAMED_KEY": "ouni Numm", - "TODAY": "Haut", - "DUPLICATE_BLOCK": "Eng Kopie maachen", - "ADD_COMMENT": "Bemierkung derbäisetzen", - "REMOVE_COMMENT": "Bemierkung ewechhuelen", - "DUPLICATE_COMMENT": "Bemierkung kopéieren", - "DELETE_BLOCK": "Block läschen", - "DELETE_X_BLOCKS": "%1 Bléck läschen", - "CLEAN_UP": "Bléck opraumen", - "COLLAPSE_BLOCK": "Block zesummeklappen", - "COLLAPSE_ALL": "Bléck zesummeklappen", - "EXPAND_BLOCK": "Block opklappen", - "EXPAND_ALL": "Bléck opklappen", - "DISABLE_BLOCK": "Block desaktivéieren", - "ENABLE_BLOCK": "Block aktivéieren", - "HELP": "Hëllef", - "UNDO": "Réckgängeg maachen", - "REDO": "Widderhuelen", - "CHANGE_VALUE_TITLE": "Wäert änneren:", - "RENAME_VARIABLE": "Variabel ëmbenennen...", - "RENAME_VARIABLE_TITLE": "All '%1' Variabelen ëmbenennen op:", - "NEW_VARIABLE": "Variabel uleeën...", - "NEW_VARIABLE_TITLE": "Neie variabelen Numm:", - "COLOUR_PICKER_TOOLTIP": "Sicht eng Faarf an der Palette eraus.", - "COLOUR_RANDOM_TITLE": "zoufälleg Faarf", - "COLOUR_RANDOM_TOOLTIP": "Eng zoufälleg Faarf eraussichen.", - "COLOUR_RGB_TITLE": "fierwe mat", - "COLOUR_RGB_RED": "rout", - "COLOUR_RGB_GREEN": "gréng", - "COLOUR_RGB_BLUE": "blo", - "COLOUR_BLEND_TITLE": "mëschen", - "COLOUR_BLEND_COLOUR1": "Faarf 1", - "COLOUR_BLEND_COLOUR2": "Faarf 2", - "COLOUR_BLEND_RATIO": "ratio", - "CONTROLS_REPEAT_TITLE": "%1-mol widderhuelen", - "CONTROLS_REPEAT_INPUT_DO": "maach", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Widderhuel soulaang", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "widderhuele bis", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Féiert d'Uweisungen aus, soulaang wéi de Wäert richteg ass", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Féiert d'Uweisungen aus, soulaang wéi de Wäert falsch ass.", - "CONTROLS_FOR_TITLE": "zielt mat %1 vun %2 bis %3 mat %4", - "CONTROLS_FOREACH_TITLE": "fir all Element %1 an der Lëscht %2", - "CONTROLS_IF_MSG_IF": "wann", - "CONTROLS_IF_MSG_ELSE": "soss", - "LOGIC_OPERATION_AND": "an", - "LOGIC_OPERATION_OR": "oder", - "LOGIC_NEGATE_TITLE": "net %1", - "LOGIC_BOOLEAN_TRUE": "wouer", - "LOGIC_BOOLEAN_FALSE": "falsch", - "LOGIC_BOOLEAN_TOOLTIP": "Schéckt entweder richteg oder falsch zréck.", - "LOGIC_NULL": "null", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "Test", - "LOGIC_TERNARY_IF_TRUE": "wa wouer", - "LOGIC_TERNARY_IF_FALSE": "wa falsch", - "MATH_NUMBER_TOOLTIP": "Eng Zuel.", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Den Total vun den zwou Zuelen zréckginn.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "D'Produkt vun den zwou Zuelen zréckginn.", - "MATH_SINGLE_HELPURL": "https://lb.wikipedia.org/wiki/Racine carrée", - "MATH_SINGLE_OP_ROOT": "Quadratwuerzel", - "MATH_SINGLE_OP_ABSOLUTE": "absolut", - "MATH_IS_EVEN": "ass gerued", - "MATH_IS_ODD": "ass ongerued", - "MATH_IS_PRIME": "ass eng Primzuel", - "MATH_IS_WHOLE": "ass eng ganz Zuel", - "MATH_IS_POSITIVE": "ass positiv", - "MATH_IS_NEGATIVE": "ass negativ", - "MATH_CHANGE_TITLE": "änneren %1 ëm %2", - "MATH_ROUND_TOOLTIP": "Eng Zuel op- oder ofrënnen.", - "MATH_ROUND_OPERATOR_ROUND": "opronnen", - "MATH_ROUND_OPERATOR_ROUNDUP": "oprënnen", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "ofrënnen", - "MATH_ONLIST_OPERATOR_MAX": "Maximum aus der Lëscht", - "MATH_ONLIST_TOOLTIP_MAX": "Schéckt de gréisste Wäert aus enger Lëscht zréck.", - "MATH_ONLIST_OPERATOR_AVERAGE": "Moyenne vun der Lëscht", - "MATH_ONLIST_OPERATOR_RANDOM": "zoufällegt Element vun enger Lëscht", - "MATH_MODULO_TITLE": "Rescht vu(n) %1 ÷ %2", - "MATH_RANDOM_INT_TITLE": "zoufälleg ganz Zuel tëscht %1 a(n) %2", - "TEXT_TEXT_TOOLTIP": "E Buschtaf, e Wuert oder eng Textzeil.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "En Element bei den Text derbäisetzen.", - "TEXT_LENGTH_TITLE": "Längt vu(n) %1", - "TEXT_ISEMPTY_TITLE": "%1 ass eidel", - "TEXT_INDEXOF_TITLE": "am Text %1 %2 %3", - "TEXT_CHARAT_TITLE": "am Text %1 %2", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "am Text", - "TEXT_GET_SUBSTRING_END_FROM_START": "bis bei de Buschtaf #", - "TEXT_GET_SUBSTRING_END_LAST": "bis bei de leschte Buschtaf", - "TEXT_PRINT_TITLE": "%1 drécken", - "TEXT_PROMPT_TOOLTIP_TEXT": "Frot de Benotzer no engem Text.", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_REPLACE_MESSAGE0": "%1 duerch %2 a(n) %3 ersetzen", - "TEXT_REPLACE_TOOLTIP": "All Kéiers wou e bestëmmten Text do ass duerch en aneren Text ersetzen.", - "TEXT_REVERSE_TOOLTIP": "Dréint d'Reiefolleg vun den Zeechen am Text ëm.", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "Lëscht", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "En Element op d'Lëscht derbäisetzen.", - "LISTS_LENGTH_TITLE": "Längt vu(n) %1", - "LISTS_ISEMPTY_TITLE": "%1 ass eidel", - "LISTS_INLIST": "an der Lëscht", - "LISTS_GET_INDEX_REMOVE": "ewechhuelen", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# vun hannen", - "LISTS_GET_INDEX_FIRST": "éischt", - "LISTS_GET_INDEX_LAST": "lescht", - "LISTS_GET_INDEX_RANDOM": "Zoufall", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ass dat éischt Element.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ass dat éischt Element.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Schéckt en zoufällegt Element aus enger Lëscht zréck.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Hëlt dat lescht Element aus enger Lëscht eraus.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Hëlt en zoufällegt Element aus enger Lëscht eraus.", - "LISTS_SET_INDEX_INSERT": "asetzen op", - "LISTS_SET_INDEX_INPUT_TO": "als", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setzt en zoufällegt Element an eng Lëscht.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Setzt d'Element um Enn vun enger Lëscht derbäi.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Setzt d'Element op eng zoufälleg Plaz an d'Lëscht derbäi.", - "LISTS_SORT_TITLE": "%1 %2 %3 zortéieren", - "LISTS_SORT_TYPE_NUMERIC": "numeresch", - "LISTS_SORT_TYPE_TEXT": "alphabetesch", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "%1 ëmdréinen", - "PROCEDURES_DEFNORETURN_PROCEDURE": "eppes maachen", - "PROCEDURES_BEFORE_PARAMS": "mat:", - "PROCEDURES_CALL_BEFORE_PARAMS": "mat:", - "PROCEDURES_DEFNORETURN_COMMENT": "Dës Funktioun beschreiwen...", - "PROCEDURES_DEFRETURN_RETURN": "zréck", - "PROCEDURES_CREATE_DO": "'%1' uleeën", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Sot eppes...", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Ofbriechen" -} +{ + "@metadata": { + "authors": [ + "Les Meloures", + "Robby", + "Soued031" + ] + }, + "VARIABLES_DEFAULT_NAME": "Element", + "UNNAMED_KEY": "ouni Numm", + "TODAY": "Haut", + "DUPLICATE_BLOCK": "Eng Kopie maachen", + "ADD_COMMENT": "Bemierkung derbäisetzen", + "REMOVE_COMMENT": "Bemierkung ewechhuelen", + "DUPLICATE_COMMENT": "Bemierkung kopéieren", + "DELETE_BLOCK": "Block läschen", + "DELETE_X_BLOCKS": "%1 Bléck läschen", + "CLEAN_UP": "Bléck opraumen", + "COLLAPSE_BLOCK": "Block zesummeklappen", + "COLLAPSE_ALL": "Bléck zesummeklappen", + "EXPAND_BLOCK": "Block opklappen", + "EXPAND_ALL": "Bléck opklappen", + "DISABLE_BLOCK": "Block desaktivéieren", + "ENABLE_BLOCK": "Block aktivéieren", + "HELP": "Hëllef", + "UNDO": "Réckgängeg maachen", + "REDO": "Widderhuelen", + "CHANGE_VALUE_TITLE": "Wäert änneren:", + "RENAME_VARIABLE": "Variabel ëmbenennen...", + "RENAME_VARIABLE_TITLE": "All '%1' Variabelen ëmbenennen op:", + "NEW_VARIABLE": "Variabel uleeën...", + "NEW_VARIABLE_TITLE": "Neie variabelen Numm:", + "COLOUR_PICKER_TOOLTIP": "Sicht eng Faarf an der Palette eraus.", + "COLOUR_RANDOM_TITLE": "zoufälleg Faarf", + "COLOUR_RANDOM_TOOLTIP": "Eng zoufälleg Faarf eraussichen.", + "COLOUR_RGB_TITLE": "fierwe mat", + "COLOUR_RGB_RED": "rout", + "COLOUR_RGB_GREEN": "gréng", + "COLOUR_RGB_BLUE": "blo", + "COLOUR_BLEND_TITLE": "mëschen", + "COLOUR_BLEND_COLOUR1": "Faarf 1", + "COLOUR_BLEND_COLOUR2": "Faarf 2", + "COLOUR_BLEND_RATIO": "ratio", + "CONTROLS_REPEAT_TITLE": "%1-mol widderhuelen", + "CONTROLS_REPEAT_INPUT_DO": "maach", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Widderhuel soulaang", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "widderhuele bis", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Féiert d'Uweisungen aus, soulaang wéi de Wäert richteg ass", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Féiert d'Uweisungen aus, soulaang wéi de Wäert falsch ass.", + "CONTROLS_FOR_TITLE": "zielt mat %1 vun %2 bis %3 mat %4", + "CONTROLS_FOREACH_TITLE": "fir all Element %1 an der Lëscht %2", + "CONTROLS_IF_MSG_IF": "wann", + "CONTROLS_IF_MSG_ELSE": "soss", + "LOGIC_OPERATION_AND": "an", + "LOGIC_OPERATION_OR": "oder", + "LOGIC_NEGATE_TITLE": "net %1", + "LOGIC_BOOLEAN_TRUE": "wouer", + "LOGIC_BOOLEAN_FALSE": "falsch", + "LOGIC_BOOLEAN_TOOLTIP": "Schéckt entweder richteg oder falsch zréck.", + "LOGIC_NULL": "null", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "Test", + "LOGIC_TERNARY_IF_TRUE": "wa wouer", + "LOGIC_TERNARY_IF_FALSE": "wa falsch", + "MATH_NUMBER_TOOLTIP": "Eng Zuel.", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Den Total vun den zwou Zuelen zréckginn.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "D'Produkt vun den zwou Zuelen zréckginn.", + "MATH_SINGLE_HELPURL": "https://lb.wikipedia.org/wiki/Racine carrée", + "MATH_SINGLE_OP_ROOT": "Quadratwuerzel", + "MATH_SINGLE_OP_ABSOLUTE": "absolut", + "MATH_IS_EVEN": "ass gerued", + "MATH_IS_ODD": "ass ongerued", + "MATH_IS_PRIME": "ass eng Primzuel", + "MATH_IS_WHOLE": "ass eng ganz Zuel", + "MATH_IS_POSITIVE": "ass positiv", + "MATH_IS_NEGATIVE": "ass negativ", + "MATH_CHANGE_TITLE": "änneren %1 ëm %2", + "MATH_ROUND_TOOLTIP": "Eng Zuel op- oder ofrënnen.", + "MATH_ROUND_OPERATOR_ROUND": "opronnen", + "MATH_ROUND_OPERATOR_ROUNDUP": "oprënnen", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "ofrënnen", + "MATH_ONLIST_OPERATOR_MAX": "Maximum aus der Lëscht", + "MATH_ONLIST_TOOLTIP_MAX": "Schéckt de gréisste Wäert aus enger Lëscht zréck.", + "MATH_ONLIST_OPERATOR_AVERAGE": "Moyenne vun der Lëscht", + "MATH_ONLIST_OPERATOR_RANDOM": "zoufällegt Element vun enger Lëscht", + "MATH_MODULO_TITLE": "Rescht vu(n) %1 ÷ %2", + "MATH_RANDOM_INT_TITLE": "zoufälleg ganz Zuel tëscht %1 a(n) %2", + "TEXT_TEXT_TOOLTIP": "E Buschtaf, e Wuert oder eng Textzeil.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "En Element bei den Text derbäisetzen.", + "TEXT_LENGTH_TITLE": "Längt vu(n) %1", + "TEXT_ISEMPTY_TITLE": "%1 ass eidel", + "TEXT_INDEXOF_TITLE": "am Text %1 %2 %3", + "TEXT_CHARAT_TITLE": "am Text %1 %2", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "am Text", + "TEXT_GET_SUBSTRING_END_FROM_START": "bis bei de Buschtaf #", + "TEXT_GET_SUBSTRING_END_LAST": "bis bei de leschte Buschtaf", + "TEXT_PRINT_TITLE": "%1 drécken", + "TEXT_PROMPT_TOOLTIP_TEXT": "Frot de Benotzer no engem Text.", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_REPLACE_MESSAGE0": "%1 duerch %2 a(n) %3 ersetzen", + "TEXT_REPLACE_TOOLTIP": "All Kéiers wou e bestëmmten Text do ass duerch en aneren Text ersetzen.", + "TEXT_REVERSE_TOOLTIP": "Dréint d'Reiefolleg vun den Zeechen am Text ëm.", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "Lëscht", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "En Element op d'Lëscht derbäisetzen.", + "LISTS_LENGTH_TITLE": "Längt vu(n) %1", + "LISTS_ISEMPTY_TITLE": "%1 ass eidel", + "LISTS_INLIST": "an der Lëscht", + "LISTS_GET_INDEX_REMOVE": "ewechhuelen", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# vun hannen", + "LISTS_GET_INDEX_FIRST": "éischt", + "LISTS_GET_INDEX_LAST": "lescht", + "LISTS_GET_INDEX_RANDOM": "Zoufall", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ass dat éischt Element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ass dat éischt Element.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Schéckt en zoufällegt Element aus enger Lëscht zréck.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Hëlt dat lescht Element aus enger Lëscht eraus.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Hëlt en zoufällegt Element aus enger Lëscht eraus.", + "LISTS_SET_INDEX_INSERT": "asetzen op", + "LISTS_SET_INDEX_INPUT_TO": "als", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setzt en zoufällegt Element an eng Lëscht.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Setzt d'Element um Enn vun enger Lëscht derbäi.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Setzt d'Element op eng zoufälleg Plaz an d'Lëscht derbäi.", + "LISTS_SORT_TITLE": "%1 %2 %3 zortéieren", + "LISTS_SORT_TYPE_NUMERIC": "numeresch", + "LISTS_SORT_TYPE_TEXT": "alphabetesch", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "%1 ëmdréinen", + "PROCEDURES_DEFNORETURN_PROCEDURE": "eppes maachen", + "PROCEDURES_BEFORE_PARAMS": "mat:", + "PROCEDURES_CALL_BEFORE_PARAMS": "mat:", + "PROCEDURES_DEFNORETURN_COMMENT": "Dës Funktioun beschreiwen...", + "PROCEDURES_DEFRETURN_RETURN": "zréck", + "PROCEDURES_CREATE_DO": "'%1' uleeën", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Sot eppes...", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Ofbriechen" +} diff --git a/msg/json/lki.json b/msg/json/lki.json index 023d034b64b..7b3445d36d9 100644 --- a/msg/json/lki.json +++ b/msg/json/lki.json @@ -1,296 +1,296 @@ -{ - "@metadata": { - "authors": [ - "Hosseinblue", - "Lakzon" - ] - }, - "VARIABLES_DEFAULT_NAME": "آیتم", - "TODAY": "ایمڕۆ", - "DUPLICATE_BLOCK": "کؤپی کردن", - "ADD_COMMENT": "گةپ دائن", - "REMOVE_COMMENT": "پاک کردن گةپةل/قِسةل", - "EXTERNAL_INPUTS": "ورودیةل خروجی", - "INLINE_INPUTS": "ورودیةل نوم جا", - "DELETE_BLOCK": "پاک کردن بلاک", - "DELETE_X_BLOCKS": "حةذف %1 بلاکةل", - "DELETE_ALL_BLOCKS": "حةذف کؤل %1 بلاکةل?", - "CLEAN_UP": "تمیزکردن بلاکةل", - "COLLAPSE_BLOCK": "چؤیچانن/پشکانن بلاک", - "COLLAPSE_ALL": "چؤیچانن/پشکانن بلاکةل", - "EXPAND_BLOCK": "کةلنگآ کردِن بلاک", - "EXPAND_ALL": "کةلنگآ کردِن بلاکةل", - "DISABLE_BLOCK": "إ کار کةتن(غیرفعال‌سازی) بلاک", - "ENABLE_BLOCK": "إ کارآشتن(فعال)بلاک", - "HELP": "کؤمةک", - "CHANGE_VALUE_TITLE": "تةغییر مقدار:", - "RENAME_VARIABLE": "تغییر نام متغیر...", - "RENAME_VARIABLE_TITLE": "تغییر نام همهٔ متغیرهای «%1» به:", - "NEW_VARIABLE": "متغیر تازه...", - "NEW_VARIABLE_TITLE": "نام متغیر تازه:", - "COLOUR_PICKER_HELPURL": "https://lki.wikipedia.org/wiki/ڕەنگ", - "COLOUR_PICKER_TOOLTIP": "رةنگێ إژ تةختة رةنگ انتخاب کةن", - "COLOUR_RANDOM_TITLE": "رةنگ بةختةکی", - "COLOUR_RANDOM_TOOLTIP": ".رةنگئ بةختةکی انتخاب کةن", - "COLOUR_RGB_TITLE": "رةنگ وة", - "COLOUR_RGB_RED": "سۆر", - "COLOUR_RGB_GREEN": "سؤز", - "COLOUR_RGB_BLUE": "کاوو", - "COLOUR_RGB_TOOLTIP": "ساخت یک رنگ با مقدار مشخص‌شده‌ای از سۆر، سؤز و کاوو. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند.", - "COLOUR_BLEND_TITLE": "قاتی پاتی", - "COLOUR_BLEND_COLOUR1": "رةنگ 1", - "COLOUR_BLEND_COLOUR2": "رةنگ 2", - "COLOUR_BLEND_RATIO": "نسبت", - "COLOUR_BLEND_TOOLTIP": "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)", - "CONTROLS_REPEAT_HELPURL": "https://lki.wikipedia.org/wiki/حلقه_فور", - "CONTROLS_REPEAT_TITLE": "%بار تکرار 1", - "CONTROLS_REPEAT_INPUT_DO": "انجوم بی", - "CONTROLS_REPEAT_TOOLTIP": "انجام چةن عبارت چندین گِل.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تکرار در حالی که", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تکرار تا وةختێ گإ", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده.", - "CONTROLS_FOR_TOOLTIP": "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد.", - "CONTROLS_FOR_TITLE": "با تعداد %1 از %2 به %3 با گام‌های %4", - "CONTROLS_FOREACH_TITLE": "ئةرا هر مورد %1 وۀ نام لیست%2", - "CONTROLS_FOREACH_TOOLTIP": "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "شکانِن حلقه", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ادامه با تکرار بعدی حلقه", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "شکستن حلقهٔ شامل.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود.", - "CONTROLS_IF_TOOLTIP_1": "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده.", - "CONTROLS_IF_TOOLTIP_2": "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده.", - "CONTROLS_IF_TOOLTIP_3": "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده.", - "CONTROLS_IF_TOOLTIP_4": "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده.", - "CONTROLS_IF_MSG_IF": "اگر", - "CONTROLS_IF_MSG_ELSEIF": "اگر آنگاه", - "CONTROLS_IF_MSG_ELSE": "آنگاه", - "CONTROLS_IF_IF_TOOLTIP": "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "افزودن یک شرط به بلوک اگر.", - "CONTROLS_IF_ELSE_TOOLTIP": "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند.", - "LOGIC_COMPARE_TOOLTIP_LT": "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد.", - "LOGIC_COMPARE_TOOLTIP_LTE": "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد.", - "LOGIC_COMPARE_TOOLTIP_GT": "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد.", - "LOGIC_COMPARE_TOOLTIP_GTE": "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد.", - "LOGIC_OPERATION_TOOLTIP_AND": "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد.", - "LOGIC_OPERATION_AND": "و", - "LOGIC_OPERATION_TOOLTIP_OR": "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد.", - "LOGIC_OPERATION_OR": "یا", - "LOGIC_NEGATE_TITLE": "نه %1", - "LOGIC_NEGATE_TOOLTIP": "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد.", - "LOGIC_BOOLEAN_TRUE": "درست", - "LOGIC_BOOLEAN_FALSE": "نادرست", - "LOGIC_BOOLEAN_TOOLTIP": "بازگرداندن یکی از صحیح یا ناصحیح.", - "LOGIC_NULL": "پةتی/خالی", - "LOGIC_NULL_TOOLTIP": "تهی باز می گرداند", - "LOGIC_TERNARY_CONDITION": "آزمائشت", - "LOGIC_TERNARY_IF_TRUE": "اگر درست", - "LOGIC_TERNARY_IF_FALSE": "اگر نادرست", - "LOGIC_TERNARY_TOOLTIP": "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "شؤمارە یەک", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "بازگرداندن مقدار جمع دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "بازگرداندن تفاوت دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "بازگرداندن حاصلضرب دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "بازگرداندن باقی‌ماندهٔ دو عدد.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "ریشهٔ دوم", - "MATH_SINGLE_TOOLTIP_ROOT": "ریشهٔ دوم یک عدد را باز می‌گرداند.", - "MATH_SINGLE_OP_ABSOLUTE": "مطلق", - "MATH_SINGLE_TOOLTIP_ABS": "قدر مطلق یک عدد را بازمی‌گرداند.", - "MATH_SINGLE_TOOLTIP_NEG": "منفی‌شدهٔ یک عدد را باز می‌گرداند.", - "MATH_SINGLE_TOOLTIP_LN": "لوگاریتم طبیعی یک عدد را باز می‌گرداند.", - "MATH_SINGLE_TOOLTIP_LOG10": "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد.", - "MATH_SINGLE_TOOLTIP_EXP": "بازگرداندن توان e یک عدد.", - "MATH_SINGLE_TOOLTIP_POW10": "بازگرداندن توان ۱۰ یک عدد.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "بازگرداندن سینوس درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_COS": "بازگرداندن کسینوس درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_TAN": "بازگرداندن تانژانت یک درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_ASIN": ".(بازگرداندن آرک‌سینوس درجه (نه رادیان", - "MATH_TRIG_TOOLTIP_ACOS": "بازگرداندن آرک‌کسینوس درجه (نه رادیان).", - "MATH_TRIG_TOOLTIP_ATAN": "بازگرداندن آرک‌تانژانت درجه (نه رادیان).", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت).", - "MATH_IS_EVEN": "زوج است", - "MATH_IS_ODD": "فرد است", - "MATH_IS_PRIME": "عدد اول است", - "MATH_IS_WHOLE": "کامل است", - "MATH_IS_POSITIVE": "مثبت است", - "MATH_IS_NEGATIVE": "منفی است", - "MATH_IS_DIVISIBLE_BY": "تقسیم شده بر", - "MATH_IS_TOOLTIP": "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "تغییر %1 با %2", - "MATH_CHANGE_TOOLTIP": "افزودن یک عدد به متغیر '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "گردکردن یک عدد به بالا یا پایین.", - "MATH_ROUND_OPERATOR_ROUND": "گردکردن", - "MATH_ROUND_OPERATOR_ROUNDUP": "گرد به بالا", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "گرد به پایین", - "MATH_ONLIST_OPERATOR_SUM": "جمع لیست", - "MATH_ONLIST_TOOLTIP_SUM": "جمع همهٔ عددهای فهرست را باز می‌گرداند.", - "MATH_ONLIST_OPERATOR_MIN": "گوجةرتةرین لیست", - "MATH_ONLIST_TOOLTIP_MIN": "کوچک‌ترین عدد در فهرست را باز می‌گرداند.", - "MATH_ONLIST_OPERATOR_MAX": "بزرگ‌ترین فهرست", - "MATH_ONLIST_TOOLTIP_MAX": "بزرگ‌ترین عدد در فهرست را باز می‌گرداند.", - "MATH_ONLIST_OPERATOR_AVERAGE": "میانگین فهرست", - "MATH_ONLIST_TOOLTIP_AVERAGE": "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_MEDIAN": "میانهٔ فهرست", - "MATH_ONLIST_TOOLTIP_MEDIAN": "میانهٔ عدد در فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_MODE": "مد فهرست", - "MATH_ONLIST_TOOLTIP_MODE": "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_STD_DEV": "انحراف معیار فهرست", - "MATH_ONLIST_TOOLTIP_STD_DEV": "انحراف معیار فهرست را بر می‌گرداند.", - "MATH_ONLIST_OPERATOR_RANDOM": "مورد تصادفی از فهرست", - "MATH_ONLIST_TOOLTIP_RANDOM": "موردی تصادفی از فهرست را بر می‌گرداند.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "باقی‌ماندهٔ %1 + %2", - "MATH_MODULO_TOOLTIP": "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند.", - "MATH_CONSTRAIN_TITLE": "محدودکردن %1 پایین %2 بالا %3", - "MATH_CONSTRAIN_TOOLTIP": "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "عدد صحیح تصادفی بین %1 تا %2", - "MATH_RANDOM_INT_TOOLTIP": "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "کسر تصادفی", - "MATH_RANDOM_FLOAT_TOOLTIP": "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز).", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "یک حرف، کلمه یا خطی از متن.", - "TEXT_JOIN_TITLE_CREATEWITH": "ایجاد متن با", - "TEXT_JOIN_TOOLTIP": "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "نام نؤیسی", - "TEXT_CREATE_JOIN_TOOLTIP": "اضافه‌کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "افزودن یک مورد به متن.", - "TEXT_APPEND_TITLE": "به %1 چسباندن متن %2", - "TEXT_APPEND_TOOLTIP": "الحاق متنی به متغیر «%1».", - "TEXT_LENGTH_TITLE": "طول %1", - "TEXT_LENGTH_TOOLTIP": "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده.", - "TEXT_ISEMPTY_TITLE": "%1 خالی است", - "TEXT_ISEMPTY_TOOLTIP": "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است.", - "TEXT_INDEXOF_TOOLTIP": "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند.", - "TEXT_INDEXOF_TITLE": "در متن %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "اولین رخداد متن را بیاب", - "TEXT_INDEXOF_OPERATOR_LAST": "آخرین رخداد متن را بیاب", - "TEXT_CHARAT_FROM_START": "گرفتن حرف #", - "TEXT_CHARAT_FROM_END": "گرفتن حرف # از آخر", - "TEXT_CHARAT_FIRST": "گرفتن اولین حرف", - "TEXT_CHARAT_LAST": "گرفتن آخرین حرف", - "TEXT_CHARAT_RANDOM": "گرفتن حرف تصادفی", - "TEXT_CHARAT_TOOLTIP": "حرفی در موقعیت مشخص‌شده بر می‌گرداند.", - "TEXT_GET_SUBSTRING_TOOLTIP": "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "در متن", - "TEXT_GET_SUBSTRING_START_FROM_START": "گرفتن زیرمتن از حرف #", - "TEXT_GET_SUBSTRING_START_FROM_END": "گرفتن زیرمتن از حرف # به انتها", - "TEXT_GET_SUBSTRING_START_FIRST": "گرفتن زیرمتن از اولین حرف", - "TEXT_GET_SUBSTRING_END_FROM_START": "به حرف #", - "TEXT_GET_SUBSTRING_END_FROM_END": "به حرف # از انتها", - "TEXT_GET_SUBSTRING_END_LAST": "به آخرین حرف", - "TEXT_CHANGECASE_TOOLTIP": "بازگرداندن کپی متن در حالتی متفاوت.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "به حروف بزرگ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "به حروف کوچک", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "به حروف بزرگ عنوان", - "TEXT_TRIM_TOOLTIP": "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند.", - "TEXT_TRIM_OPERATOR_BOTH": "تراشیدن فاصله‌ها از هر دو طرف", - "TEXT_TRIM_OPERATOR_LEFT": "تراشیدن فاصله‌ها از طرف چپ", - "TEXT_TRIM_OPERATOR_RIGHT": "تراشیدن فاصله‌ها از طرف چپ", - "TEXT_PRINT_TITLE": "چاپ %1", - "TEXT_PRINT_TOOLTIP": "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده.", - "TEXT_PROMPT_TYPE_TEXT": "اعلان برای متن با پیام", - "TEXT_PROMPT_TYPE_NUMBER": "اعلان برای عدد با پیام", - "TEXT_PROMPT_TOOLTIP_NUMBER": "اعلان برای کاربر با یک عدد.", - "TEXT_PROMPT_TOOLTIP_TEXT": "اعلان برای کاربر برای یک متن.", - "LISTS_CREATE_EMPTY_TITLE": "ایجاد فهرست خالی", - "LISTS_CREATE_EMPTY_TOOLTIP": "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند.", - "LISTS_CREATE_WITH_TOOLTIP": "فهرستی از هر عددی از موارد می‌سازد.", - "LISTS_CREATE_WITH_INPUT_WITH": "ایجاد فهرست با", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "لیست", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "اضافه‌کردن یک مورد به فهرست.", - "LISTS_REPEAT_TOOLTIP": "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد.", - "LISTS_REPEAT_TITLE": "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد", - "LISTS_LENGTH_TITLE": "طول %1", - "LISTS_LENGTH_TOOLTIP": "طول یک فهرست را برمی‌گرداند.", - "LISTS_ISEMPTY_TITLE": "%1 خالی است", - "LISTS_ISEMPTY_TOOLTIP": "اگر فهرست خالی است مقدار صجیج بر می‌گرداند.", - "LISTS_INLIST": "در فهرست", - "LISTS_INDEX_OF_FIRST": "یافتن اولین رخ‌داد مورد", - "LISTS_INDEX_OF_LAST": "یافتن آخرین رخ‌داد مورد", - "LISTS_INDEX_OF_TOOLTIP": "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود.", - "LISTS_GET_INDEX_GET": "گِرتِن", - "LISTS_GET_INDEX_GET_REMOVE": "گِرتِن و حةذف کردن", - "LISTS_GET_INDEX_REMOVE": "حةذف کردن", - "LISTS_GET_INDEX_FROM_END": "# إژ دؤما آخر", - "LISTS_GET_INDEX_FIRST": "إژ أؤةل", - "LISTS_GET_INDEX_LAST": "دؤمائن/آخرین", - "LISTS_GET_INDEX_RANDOM": "بةختةکی", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 اولین مورد است.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 آخرین مورد است.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "موردی در محل مشخص‌شده بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "اولین مورد یک فهرست را بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "آخرین مورد در یک فهرست را بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "یک مورد تصادفی در یک فهرست بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "اولین مورد را در یک فهرست حذف می‌کند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "آخرین مورد را در یک فهرست حذف می‌کند.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "یک مورد تصادفی را یک فهرست حذف می‌کند.", - "LISTS_SET_INDEX_SET": "مجموعه", - "LISTS_SET_INDEX_INSERT": "درج در", - "LISTS_SET_INDEX_INPUT_TO": "به عنوان", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "مورد مشخص‌شده در یک فهرست را قرار می‌دهد.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "اولین مورد در یک فهرست را تعیین می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "آخرین مورد در یک فهرست را تعیین می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "یک مورد تصادفی در یک فهرست را تعیین می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "موردی به ته فهرست اضافه می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "موردی به ته فهرست الحاق می‌کند.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "مورد را به صورت تصادفی در یک فهرست می‌افزاید.", - "LISTS_GET_SUBLIST_START_FROM_START": "گرفتن زیرمجموعه‌ای از #", - "LISTS_GET_SUBLIST_START_FROM_END": "گرفتن زیرمجموعه‌ای از # از انتها", - "LISTS_GET_SUBLIST_START_FIRST": "گرفتن زیرمجموعه‌ای از ابتدا", - "LISTS_GET_SUBLIST_END_FROM_START": "به #", - "LISTS_GET_SUBLIST_END_FROM_END": "به # از انتها", - "LISTS_GET_SUBLIST_END_LAST": "به آخرین", - "LISTS_GET_SUBLIST_TOOLTIP": "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند.", - "LISTS_SPLIT_LIST_FROM_TEXT": "ساخت لیست إژ متن", - "LISTS_SPLIT_TEXT_FROM_LIST": "ساخت متن إژ لیست", - "LISTS_SPLIT_WITH_DELIMITER": "همراه جداساز", - "VARIABLES_GET_TOOLTIP": "مقدار این متغیر را بر می‌گرداند.", - "VARIABLES_GET_CREATE_SET": "درست‌کردن «تنظیم %1»", - "VARIABLES_SET": "مجموعه %1 به %2", - "VARIABLES_SET_TOOLTIP": "متغیر برابر با خروجی را مشخص می‌کند.", - "VARIABLES_SET_CREATE_GET": "درست‌کردن «گرفتن %1»", - "PROCEDURES_DEFNORETURN_TITLE": "به", - "PROCEDURES_DEFNORETURN_PROCEDURE": "انجام چیزی", - "PROCEDURES_BEFORE_PARAMS": "با:", - "PROCEDURES_CALL_BEFORE_PARAMS": "با:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "تابعی می‌سازد بدون هیچ خروجی.", - "PROCEDURES_DEFRETURN_RETURN": "بازگشت", - "PROCEDURES_DEFRETURN_TOOLTIP": "تابعی با یک خروجی می‌سازد.", - "PROCEDURES_ALLOW_STATEMENTS": "اجازه اظهارات", - "PROCEDURES_DEF_DUPLICATE_WARNING": "اخطار: این تابعی پارامتر تکراری دارد.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_CALLNORETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1».", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_CALLRETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "ورودی‌ها", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع.", - "PROCEDURES_MUTATORARG_TITLE": "نام ورودی:", - "PROCEDURES_MUTATORARG_TOOLTIP": "اضافه کردن ورودی به تابع.", - "PROCEDURES_HIGHLIGHT_DEF": "برجسته‌سازی تعریف تابع", - "PROCEDURES_CREATE_DO": "ساختن «%1»", - "PROCEDURES_IFRETURN_TOOLTIP": "اگر یک مقدار صحیح است، مقدار دوم را برگردان.", - "PROCEDURES_IFRETURN_WARNING": "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود.", - "DIALOG_OK": "تأیید", - "DIALOG_CANCEL": "ئآهووسانن/لغو" -} +{ + "@metadata": { + "authors": [ + "Hosseinblue", + "Lakzon" + ] + }, + "VARIABLES_DEFAULT_NAME": "آیتم", + "TODAY": "ایمڕۆ", + "DUPLICATE_BLOCK": "کؤپی کردن", + "ADD_COMMENT": "گةپ دائن", + "REMOVE_COMMENT": "پاک کردن گةپةل/قِسةل", + "EXTERNAL_INPUTS": "ورودیةل خروجی", + "INLINE_INPUTS": "ورودیةل نوم جا", + "DELETE_BLOCK": "پاک کردن بلاک", + "DELETE_X_BLOCKS": "حةذف %1 بلاکةل", + "DELETE_ALL_BLOCKS": "حةذف کؤل %1 بلاکةل?", + "CLEAN_UP": "تمیزکردن بلاکةل", + "COLLAPSE_BLOCK": "چؤیچانن/پشکانن بلاک", + "COLLAPSE_ALL": "چؤیچانن/پشکانن بلاکةل", + "EXPAND_BLOCK": "کةلنگآ کردِن بلاک", + "EXPAND_ALL": "کةلنگآ کردِن بلاکةل", + "DISABLE_BLOCK": "إ کار کةتن(غیرفعال‌سازی) بلاک", + "ENABLE_BLOCK": "إ کارآشتن(فعال)بلاک", + "HELP": "کؤمةک", + "CHANGE_VALUE_TITLE": "تةغییر مقدار:", + "RENAME_VARIABLE": "تغییر نام متغیر...", + "RENAME_VARIABLE_TITLE": "تغییر نام همهٔ متغیرهای «%1» به:", + "NEW_VARIABLE": "متغیر تازه...", + "NEW_VARIABLE_TITLE": "نام متغیر تازه:", + "COLOUR_PICKER_HELPURL": "https://lki.wikipedia.org/wiki/ڕەنگ", + "COLOUR_PICKER_TOOLTIP": "رةنگێ إژ تةختة رةنگ انتخاب کةن", + "COLOUR_RANDOM_TITLE": "رةنگ بةختةکی", + "COLOUR_RANDOM_TOOLTIP": ".رةنگئ بةختةکی انتخاب کةن", + "COLOUR_RGB_TITLE": "رةنگ وة", + "COLOUR_RGB_RED": "سۆر", + "COLOUR_RGB_GREEN": "سؤز", + "COLOUR_RGB_BLUE": "کاوو", + "COLOUR_RGB_TOOLTIP": "ساخت یک رنگ با مقدار مشخص‌شده‌ای از سۆر، سؤز و کاوو. همهٔ مقادیر باید بین ۰ تا ۱۰۰ باشند.", + "COLOUR_BLEND_TITLE": "قاتی پاتی", + "COLOUR_BLEND_COLOUR1": "رةنگ 1", + "COLOUR_BLEND_COLOUR2": "رةنگ 2", + "COLOUR_BLEND_RATIO": "نسبت", + "COLOUR_BLEND_TOOLTIP": "دو رنگ را با نسبت مشخص‌شده مخلوط می‌کند (۰٫۰ - ۱٫۰)", + "CONTROLS_REPEAT_HELPURL": "https://lki.wikipedia.org/wiki/حلقه_فور", + "CONTROLS_REPEAT_TITLE": "%بار تکرار 1", + "CONTROLS_REPEAT_INPUT_DO": "انجوم بی", + "CONTROLS_REPEAT_TOOLTIP": "انجام چةن عبارت چندین گِل.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تکرار در حالی که", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تکرار تا وةختێ گإ", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "تا زمانی که یک مقدار صحیح است، چند عبارت را انجام بده.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "تا زمانی که یک مقدار ناصحیح است، چند عبارت را انجام بده.", + "CONTROLS_FOR_TOOLTIP": "متغیر %1 را در مقادیر شروع‌شده از عدد انتهای به عدد انتهایی را دارد، با فواصل مشخص‌شده می‌شمارد و این بلوک مشخص‌شده را انجام می‌دهد.", + "CONTROLS_FOR_TITLE": "با تعداد %1 از %2 به %3 با گام‌های %4", + "CONTROLS_FOREACH_TITLE": "ئةرا هر مورد %1 وۀ نام لیست%2", + "CONTROLS_FOREACH_TOOLTIP": "برای هر مورد در این فهرست، تنظیم متغیر «%1» به مورد و انجام تعدادی عبارت.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "شکانِن حلقه", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ادامه با تکرار بعدی حلقه", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "شکستن حلقهٔ شامل.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "پریدن از بقیهٔ حلقه و ادامه با تکرار بعدی.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "اخطار: این بلوک ممکن است فقط داخل یک حلقه استفاده شود.", + "CONTROLS_IF_TOOLTIP_1": "اگر یک مقدار صحیح است، سپس چند عبارت را انجام بده.", + "CONTROLS_IF_TOOLTIP_2": "اگر یک مقدار صحیح است، اول بلوک اول عبارات را انجام بده. در غیر این صورت بلوک دوم عبارات انجام بده.", + "CONTROLS_IF_TOOLTIP_3": "اگر مقدار اول صحیح بود، از آن بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم صحیح است، بلوک دوم عبارات را انجام بده.", + "CONTROLS_IF_TOOLTIP_4": "اگر مقدار اول درست است، بلوک اول عبارات را انجام بده. در غیر این صورت، اگر مقدار دوم درست باشد بلوک دوم عبارات را انجام بده. اگر هیچ از مقادیر درست نبود، آخرین بلوک عبارات را انجام بده.", + "CONTROLS_IF_MSG_IF": "اگر", + "CONTROLS_IF_MSG_ELSEIF": "اگر آنگاه", + "CONTROLS_IF_MSG_ELSE": "آنگاه", + "CONTROLS_IF_IF_TOOLTIP": "افزودن، حذف یا بازمرتب‌سازی قسمت‌ها برای پیکربندی دوبارهٔ این بلوک اگر.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "افزودن یک شرط به بلوک اگر.", + "CONTROLS_IF_ELSE_TOOLTIP": "اضافه‌کردن نهایی، گرفتن همهٔ شرایط به بلوک اگر.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "بازگشت صحیح اگر هر دو ورودی با یکدیگر برابر باشد.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "برگرداندن صحیح اگر هر دو ورودی با یکدیگر برابر نباشند.", + "LOGIC_COMPARE_TOOLTIP_LT": "بازگرداندن صحیح اگر ورودی اول کوچکتر از ورودی دوم باشد.", + "LOGIC_COMPARE_TOOLTIP_LTE": "بازگرداندن صحیح اگر ورودی اول کوچکتر یا مساوی با ورودی دوم باشد.", + "LOGIC_COMPARE_TOOLTIP_GT": "بازگرداندن صحیح اگر ورودی اول بزرگتر از ورودی دوم باشد.", + "LOGIC_COMPARE_TOOLTIP_GTE": "بازگرداندن صحیح اگر ورودی اول بزرگتر یا مساوی یا ورودی دوم باشد.", + "LOGIC_OPERATION_TOOLTIP_AND": "بازگرداندن صحیح اگر هر دو ورودی صحیح باشد.", + "LOGIC_OPERATION_AND": "و", + "LOGIC_OPERATION_TOOLTIP_OR": "بازگرداندن صحیح اگر یکی از دو ورودی صحیح باشد.", + "LOGIC_OPERATION_OR": "یا", + "LOGIC_NEGATE_TITLE": "نه %1", + "LOGIC_NEGATE_TOOLTIP": "صجیج باز می‌گرداند اگر ورودی نا صحیح باشند. ناصحیح بازمی‌گرداند اگر ورودی صحیح باشد.", + "LOGIC_BOOLEAN_TRUE": "درست", + "LOGIC_BOOLEAN_FALSE": "نادرست", + "LOGIC_BOOLEAN_TOOLTIP": "بازگرداندن یکی از صحیح یا ناصحیح.", + "LOGIC_NULL": "پةتی/خالی", + "LOGIC_NULL_TOOLTIP": "تهی باز می گرداند", + "LOGIC_TERNARY_CONDITION": "آزمائشت", + "LOGIC_TERNARY_IF_TRUE": "اگر درست", + "LOGIC_TERNARY_IF_FALSE": "اگر نادرست", + "LOGIC_TERNARY_TOOLTIP": "بررسی وضعیت در «آزمایش». اگر وضعیت صحیح باشد، مقدار «اگر صحیح» را بر می‌گرداند در غیر اینصورت مقدار «اگر ناصحیح» را.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "شؤمارە یەک", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "بازگرداندن مقدار جمع دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "بازگرداندن تفاوت دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "بازگرداندن حاصلضرب دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "بازگرداندن باقی‌ماندهٔ دو عدد.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "بازگرداندن اولین عددی که از توان عدد دوم حاصل شده باشد.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "ریشهٔ دوم", + "MATH_SINGLE_TOOLTIP_ROOT": "ریشهٔ دوم یک عدد را باز می‌گرداند.", + "MATH_SINGLE_OP_ABSOLUTE": "مطلق", + "MATH_SINGLE_TOOLTIP_ABS": "قدر مطلق یک عدد را بازمی‌گرداند.", + "MATH_SINGLE_TOOLTIP_NEG": "منفی‌شدهٔ یک عدد را باز می‌گرداند.", + "MATH_SINGLE_TOOLTIP_LN": "لوگاریتم طبیعی یک عدد را باز می‌گرداند.", + "MATH_SINGLE_TOOLTIP_LOG10": "بازگرداندن لگاریتم بر پایهٔ ۱۰ یک عدد.", + "MATH_SINGLE_TOOLTIP_EXP": "بازگرداندن توان e یک عدد.", + "MATH_SINGLE_TOOLTIP_POW10": "بازگرداندن توان ۱۰ یک عدد.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "بازگرداندن سینوس درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_COS": "بازگرداندن کسینوس درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_TAN": "بازگرداندن تانژانت یک درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_ASIN": ".(بازگرداندن آرک‌سینوس درجه (نه رادیان", + "MATH_TRIG_TOOLTIP_ACOS": "بازگرداندن آرک‌کسینوس درجه (نه رادیان).", + "MATH_TRIG_TOOLTIP_ATAN": "بازگرداندن آرک‌تانژانت درجه (نه رادیان).", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "یکی از مقادیر مشترک را برمی‌گرداند: π (۳٫۱۴۱…)، e (۲٫۷۱۸...)، φ (۱٫۶۱۸)، sqrt(۲) (۱٫۴۱۴)، sqrt(۱/۲) (۰٫۷۰۷...) و یا ∞ (بی‌نهایت).", + "MATH_IS_EVEN": "زوج است", + "MATH_IS_ODD": "فرد است", + "MATH_IS_PRIME": "عدد اول است", + "MATH_IS_WHOLE": "کامل است", + "MATH_IS_POSITIVE": "مثبت است", + "MATH_IS_NEGATIVE": "منفی است", + "MATH_IS_DIVISIBLE_BY": "تقسیم شده بر", + "MATH_IS_TOOLTIP": "بررسی می‌کند که آیا یک عدد زوج، فرد، اول، کامل، مثبت، منفی یا بخش‌پذیر عدد خاصی باشد را بررسی می‌کند. درست یا نادرست باز می‌گرداند.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "تغییر %1 با %2", + "MATH_CHANGE_TOOLTIP": "افزودن یک عدد به متغیر '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "گردکردن یک عدد به بالا یا پایین.", + "MATH_ROUND_OPERATOR_ROUND": "گردکردن", + "MATH_ROUND_OPERATOR_ROUNDUP": "گرد به بالا", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "گرد به پایین", + "MATH_ONLIST_OPERATOR_SUM": "جمع لیست", + "MATH_ONLIST_TOOLTIP_SUM": "جمع همهٔ عددهای فهرست را باز می‌گرداند.", + "MATH_ONLIST_OPERATOR_MIN": "گوجةرتةرین لیست", + "MATH_ONLIST_TOOLTIP_MIN": "کوچک‌ترین عدد در فهرست را باز می‌گرداند.", + "MATH_ONLIST_OPERATOR_MAX": "بزرگ‌ترین فهرست", + "MATH_ONLIST_TOOLTIP_MAX": "بزرگ‌ترین عدد در فهرست را باز می‌گرداند.", + "MATH_ONLIST_OPERATOR_AVERAGE": "میانگین فهرست", + "MATH_ONLIST_TOOLTIP_AVERAGE": "میانگین (میانگین ریاضی) مقادیر عددی فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_MEDIAN": "میانهٔ فهرست", + "MATH_ONLIST_TOOLTIP_MEDIAN": "میانهٔ عدد در فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_MODE": "مد فهرست", + "MATH_ONLIST_TOOLTIP_MODE": "شایع‌ترین قلم(های) در فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_STD_DEV": "انحراف معیار فهرست", + "MATH_ONLIST_TOOLTIP_STD_DEV": "انحراف معیار فهرست را بر می‌گرداند.", + "MATH_ONLIST_OPERATOR_RANDOM": "مورد تصادفی از فهرست", + "MATH_ONLIST_TOOLTIP_RANDOM": "موردی تصادفی از فهرست را بر می‌گرداند.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "باقی‌ماندهٔ %1 + %2", + "MATH_MODULO_TOOLTIP": "باقی‌ماندهٔ تقسیم دو عدد را بر می‌گرداند.", + "MATH_CONSTRAIN_TITLE": "محدودکردن %1 پایین %2 بالا %3", + "MATH_CONSTRAIN_TOOLTIP": "محدودکردن یک عدد بین محدودیت‌های مشخص‌شده (بسته).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "عدد صحیح تصادفی بین %1 تا %2", + "MATH_RANDOM_INT_TOOLTIP": "یک عدد تصادفی بین دو مقدار مشخص‌شده به صورت بسته باز می‌گرداند.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "کسر تصادفی", + "MATH_RANDOM_FLOAT_TOOLTIP": "بازگرداندن کسری تصادفی بین ۰٫۰ (بسته) تا ۱٫۰ (باز).", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "یک حرف، کلمه یا خطی از متن.", + "TEXT_JOIN_TITLE_CREATEWITH": "ایجاد متن با", + "TEXT_JOIN_TOOLTIP": "یک تکه‌ای از متن را با چسپاندن همهٔ تعداد از موارد ایجاد می‌کند.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "نام نؤیسی", + "TEXT_CREATE_JOIN_TOOLTIP": "اضافه‌کردن، حذف یا مرتب‌سازی بحش‌ها برای تنظیم مجدد این بلوک متنی.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "افزودن یک مورد به متن.", + "TEXT_APPEND_TITLE": "به %1 چسباندن متن %2", + "TEXT_APPEND_TOOLTIP": "الحاق متنی به متغیر «%1».", + "TEXT_LENGTH_TITLE": "طول %1", + "TEXT_LENGTH_TOOLTIP": "بازگرداندن عددی از حروف (شامل فاصله‌ها) در متن فراهم‌شده.", + "TEXT_ISEMPTY_TITLE": "%1 خالی است", + "TEXT_ISEMPTY_TOOLTIP": "اضافه‌کردن صحیح اگر متن فراهم‌شده خالی است.", + "TEXT_INDEXOF_TOOLTIP": "شاخصی از اولین آخرین رخ‌داد متن اول در متن دوم بر می‌گرداند. اگر متن یافت نشد %1 باز می‌گرداند.", + "TEXT_INDEXOF_TITLE": "در متن %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "اولین رخداد متن را بیاب", + "TEXT_INDEXOF_OPERATOR_LAST": "آخرین رخداد متن را بیاب", + "TEXT_CHARAT_FROM_START": "گرفتن حرف #", + "TEXT_CHARAT_FROM_END": "گرفتن حرف # از آخر", + "TEXT_CHARAT_FIRST": "گرفتن اولین حرف", + "TEXT_CHARAT_LAST": "گرفتن آخرین حرف", + "TEXT_CHARAT_RANDOM": "گرفتن حرف تصادفی", + "TEXT_CHARAT_TOOLTIP": "حرفی در موقعیت مشخص‌شده بر می‌گرداند.", + "TEXT_GET_SUBSTRING_TOOLTIP": "قسمت مشخصی‌شده‌ای از متن را بر می‌گرداند.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "در متن", + "TEXT_GET_SUBSTRING_START_FROM_START": "گرفتن زیرمتن از حرف #", + "TEXT_GET_SUBSTRING_START_FROM_END": "گرفتن زیرمتن از حرف # به انتها", + "TEXT_GET_SUBSTRING_START_FIRST": "گرفتن زیرمتن از اولین حرف", + "TEXT_GET_SUBSTRING_END_FROM_START": "به حرف #", + "TEXT_GET_SUBSTRING_END_FROM_END": "به حرف # از انتها", + "TEXT_GET_SUBSTRING_END_LAST": "به آخرین حرف", + "TEXT_CHANGECASE_TOOLTIP": "بازگرداندن کپی متن در حالتی متفاوت.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "به حروف بزرگ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "به حروف کوچک", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "به حروف بزرگ عنوان", + "TEXT_TRIM_TOOLTIP": "کپی از متن با فاصله‌های حذف‌شده از یک یا هر دو پایان باز می‌گرداند.", + "TEXT_TRIM_OPERATOR_BOTH": "تراشیدن فاصله‌ها از هر دو طرف", + "TEXT_TRIM_OPERATOR_LEFT": "تراشیدن فاصله‌ها از طرف چپ", + "TEXT_TRIM_OPERATOR_RIGHT": "تراشیدن فاصله‌ها از طرف چپ", + "TEXT_PRINT_TITLE": "چاپ %1", + "TEXT_PRINT_TOOLTIP": "چاپ متن، عدد یا هر مقدار دیگر مشخص‌شده.", + "TEXT_PROMPT_TYPE_TEXT": "اعلان برای متن با پیام", + "TEXT_PROMPT_TYPE_NUMBER": "اعلان برای عدد با پیام", + "TEXT_PROMPT_TOOLTIP_NUMBER": "اعلان برای کاربر با یک عدد.", + "TEXT_PROMPT_TOOLTIP_TEXT": "اعلان برای کاربر برای یک متن.", + "LISTS_CREATE_EMPTY_TITLE": "ایجاد فهرست خالی", + "LISTS_CREATE_EMPTY_TOOLTIP": "فهرستی با طول صفر شامل هیچ رکورد داده‌ای بر می‌گرداند.", + "LISTS_CREATE_WITH_TOOLTIP": "فهرستی از هر عددی از موارد می‌سازد.", + "LISTS_CREATE_WITH_INPUT_WITH": "ایجاد فهرست با", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "لیست", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "اضافه‌کردن، حذف‌کردن یا ترتیب‌سازی مجدد بخش‌ها این بلوک فهرستی.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "اضافه‌کردن یک مورد به فهرست.", + "LISTS_REPEAT_TOOLTIP": "فهرستی شامل مقادیر داده‌شدهٔ تکرار شده عدد مشخص‌شده می‌سازد.", + "LISTS_REPEAT_TITLE": "فهرستی با %1 تکرارشده به اندازهٔ %2 می‌سازد", + "LISTS_LENGTH_TITLE": "طول %1", + "LISTS_LENGTH_TOOLTIP": "طول یک فهرست را برمی‌گرداند.", + "LISTS_ISEMPTY_TITLE": "%1 خالی است", + "LISTS_ISEMPTY_TOOLTIP": "اگر فهرست خالی است مقدار صجیج بر می‌گرداند.", + "LISTS_INLIST": "در فهرست", + "LISTS_INDEX_OF_FIRST": "یافتن اولین رخ‌داد مورد", + "LISTS_INDEX_OF_LAST": "یافتن آخرین رخ‌داد مورد", + "LISTS_INDEX_OF_TOOLTIP": "شاخصی از اولین/آخرین رخ‌داد مورد در فهرست را بر می‌گرداند. %1 بر می‌گرداند اگر آیتم موجود نبود.", + "LISTS_GET_INDEX_GET": "گِرتِن", + "LISTS_GET_INDEX_GET_REMOVE": "گِرتِن و حةذف کردن", + "LISTS_GET_INDEX_REMOVE": "حةذف کردن", + "LISTS_GET_INDEX_FROM_END": "# إژ دؤما آخر", + "LISTS_GET_INDEX_FIRST": "إژ أؤةل", + "LISTS_GET_INDEX_LAST": "دؤمائن/آخرین", + "LISTS_GET_INDEX_RANDOM": "بةختةکی", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 اولین مورد است.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 آخرین مورد است.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "موردی در محل مشخص‌شده بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "اولین مورد یک فهرست را بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "آخرین مورد در یک فهرست را بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "یک مورد تصادفی در یک فهرست بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "مورد در محل مشخص‌شده در فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "اولین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "آخرین مورد مشخص‌شده در فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "مورد تصادفی‌ای را در فهرست حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "مورد مشخص‌شده در موقعیت مشخص در یک فهرست را حذف و بر می‌گرداند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "اولین مورد را در یک فهرست حذف می‌کند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "آخرین مورد را در یک فهرست حذف می‌کند.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "یک مورد تصادفی را یک فهرست حذف می‌کند.", + "LISTS_SET_INDEX_SET": "مجموعه", + "LISTS_SET_INDEX_INSERT": "درج در", + "LISTS_SET_INDEX_INPUT_TO": "به عنوان", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "مورد مشخص‌شده در یک فهرست را قرار می‌دهد.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "اولین مورد در یک فهرست را تعیین می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "آخرین مورد در یک فهرست را تعیین می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "یک مورد تصادفی در یک فهرست را تعیین می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "موردی در موقعیت مشخص‌شده در یک فهرست اضافه می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "موردی به ته فهرست اضافه می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "موردی به ته فهرست الحاق می‌کند.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "مورد را به صورت تصادفی در یک فهرست می‌افزاید.", + "LISTS_GET_SUBLIST_START_FROM_START": "گرفتن زیرمجموعه‌ای از #", + "LISTS_GET_SUBLIST_START_FROM_END": "گرفتن زیرمجموعه‌ای از # از انتها", + "LISTS_GET_SUBLIST_START_FIRST": "گرفتن زیرمجموعه‌ای از ابتدا", + "LISTS_GET_SUBLIST_END_FROM_START": "به #", + "LISTS_GET_SUBLIST_END_FROM_END": "به # از انتها", + "LISTS_GET_SUBLIST_END_LAST": "به آخرین", + "LISTS_GET_SUBLIST_TOOLTIP": "کپی از قسمت مشخص‌شدهٔ لیست درست می‌کند.", + "LISTS_SPLIT_LIST_FROM_TEXT": "ساخت لیست إژ متن", + "LISTS_SPLIT_TEXT_FROM_LIST": "ساخت متن إژ لیست", + "LISTS_SPLIT_WITH_DELIMITER": "همراه جداساز", + "VARIABLES_GET_TOOLTIP": "مقدار این متغیر را بر می‌گرداند.", + "VARIABLES_GET_CREATE_SET": "درست‌کردن «تنظیم %1»", + "VARIABLES_SET": "مجموعه %1 به %2", + "VARIABLES_SET_TOOLTIP": "متغیر برابر با خروجی را مشخص می‌کند.", + "VARIABLES_SET_CREATE_GET": "درست‌کردن «گرفتن %1»", + "PROCEDURES_DEFNORETURN_TITLE": "به", + "PROCEDURES_DEFNORETURN_PROCEDURE": "انجام چیزی", + "PROCEDURES_BEFORE_PARAMS": "با:", + "PROCEDURES_CALL_BEFORE_PARAMS": "با:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "تابعی می‌سازد بدون هیچ خروجی.", + "PROCEDURES_DEFRETURN_RETURN": "بازگشت", + "PROCEDURES_DEFRETURN_TOOLTIP": "تابعی با یک خروجی می‌سازد.", + "PROCEDURES_ALLOW_STATEMENTS": "اجازه اظهارات", + "PROCEDURES_DEF_DUPLICATE_WARNING": "اخطار: این تابعی پارامتر تکراری دارد.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_CALLNORETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1».", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_CALLRETURN_TOOLTIP": "اجرای تابع تعریف‌شده توسط کاربر «%1» و استفاده از خروجی آن.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "ورودی‌ها", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "افزودن، حذف یا دوباره مرتب‌کردن ورودی این تابع.", + "PROCEDURES_MUTATORARG_TITLE": "نام ورودی:", + "PROCEDURES_MUTATORARG_TOOLTIP": "اضافه کردن ورودی به تابع.", + "PROCEDURES_HIGHLIGHT_DEF": "برجسته‌سازی تعریف تابع", + "PROCEDURES_CREATE_DO": "ساختن «%1»", + "PROCEDURES_IFRETURN_TOOLTIP": "اگر یک مقدار صحیح است، مقدار دوم را برگردان.", + "PROCEDURES_IFRETURN_WARNING": "اخطار: این بلوک احتمالاً فقط داخل یک تابع استفاده می‌شود.", + "DIALOG_OK": "تأیید", + "DIALOG_CANCEL": "ئآهووسانن/لغو" +} diff --git a/msg/json/lo.json b/msg/json/lo.json index ec7aabb9f9e..f69ff017f72 100644 --- a/msg/json/lo.json +++ b/msg/json/lo.json @@ -1,93 +1,93 @@ -{ - "@metadata": { - "authors": [ - "Aefgh39622" - ] - }, - "VARIABLES_DEFAULT_NAME": "ລາຍການ", - "TODAY": "ມື້ນີ້", - "DUPLICATE_BLOCK": "ເຮັດສຳເນົາ", - "ADD_COMMENT": "ເພີ່ມຄຳອະທິບາຍ", - "REMOVE_COMMENT": "ເອົາຄຳອະທິບາຍອອກ", - "EXTERNAL_INPUTS": "ອິນພຸດພາຍນອກ", - "INLINE_INPUTS": "ອິນພຸດໃນບັນທັດ", - "DELETE_BLOCK": "ລຶບບລັອກ", - "DELETE_X_BLOCKS": "ລຶບ %1 ບລັອກ", - "DELETE_ALL_BLOCKS": "ລຶບ %1 ບລັອກທັງໝົດຫຼືບໍ່?", - "CLEAN_UP": "ຈັດລຽນບລັອກໃຫ້ເປັນແຖວ", - "COLLAPSE_BLOCK": "ຍຸບບລັອກ", - "COLLAPSE_ALL": "ຍຸບບລັອກ", - "EXPAND_BLOCK": "ຂະຫຍາຍບລັອກ", - "EXPAND_ALL": "ຂະຫຍາຍບລັອກ", - "DISABLE_BLOCK": "ປິດໃຊ້ງານບລັອກ", - "ENABLE_BLOCK": "ເປີດໃຊ້ງານບລັອກ", - "HELP": "ຊ່ວຍເຫຼືອ", - "UNDO": "ກັບຄືນ", - "REDO": "ເຮັດຄືນ", - "CHANGE_VALUE_TITLE": "ປ່ຽນຄ່າ:", - "RENAME_VARIABLE": "ປ່ຽນຊື່ຕົວແປ...", - "RENAME_VARIABLE_TITLE": "ປ່ຽນຊື່ຕົວແປ '%1' ທັງໝົດເປັນ:", - "NEW_VARIABLE_TITLE": "ຊື່ຕົວແປໃໝ່:", - "COLOUR_PICKER_HELPURL": "https://lo.wikipedia.org/wiki/ສີ", - "COLOUR_PICKER_TOOLTIP": "ເລືອກສີຈາກຈານສີ.", - "COLOUR_RANDOM_TITLE": "ສຸ່ມສີ", - "COLOUR_RANDOM_TOOLTIP": "ເລືອກສີແບບສຸ່ມ.", - "COLOUR_RGB_TITLE": "ສີທີ່ປະກອບດ້ວຍ", - "COLOUR_RGB_RED": "ຄ່າສີແດງ", - "COLOUR_RGB_GREEN": "ຄ່າສີຂຽວ", - "COLOUR_RGB_BLUE": "ຄ່າສີນ້ຳເງິນ", - "COLOUR_RGB_TOOLTIP": "ສ້າງສີດ້ວຍການກຳນົດຄ່າສີແດງ, ສີຂຽວ, ແລະສີນ້ຳເງິນ. ຄ່າທັງໝົດຕ້ອງຢູ່ລະຫວ່າງ 0 ເຖິງ 100.", - "COLOUR_BLEND_TITLE": "ປະສົມ", - "COLOUR_BLEND_COLOUR1": "ສີ 1", - "COLOUR_BLEND_COLOUR2": "ສີ 2", - "COLOUR_BLEND_RATIO": "ອັດຕາສ່ວນ", - "COLOUR_BLEND_TOOLTIP": "ປະສົມສອງສີເຂົ້າກັນດ້ວຍອັດຕາສ່ວນ (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "ເຮັດຄືນ %1 ຄັ້ງ", - "CONTROLS_REPEAT_INPUT_DO": "ເຮັດ", - "CONTROLS_REPEAT_TOOLTIP": "ເຮັດຄຳສັ່ງບາງຄຳສັ່ງຄືນຫຼາຍໆຄັ້ງ.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ເຮັດຄືນຂະນະທີ່", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ເຮັດຄືນຈົນກະທັ່ງ", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ຂະນະທີ່ຄ່າເປັນຈິງ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ຂະນະທີ່ຄ່າເປັນເທັດ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ.", - "CONTROLS_FOR_TOOLTIP": "ຕົວແປ '%1' ຈະເລີ່ມຈາກຈຳນວນເລີ່ມຕົ້ນໄປຫາຈຳນວນສຸດທ້າຍ, ນັບຕາມຊ່ວງໄລຍະທີ່ກຳນົດ, ແລະເຮັດຕາມບລັອກທີ່ກຳນົດໄວ້.", - "CONTROLS_FOR_TITLE": "ນັບດ້ວຍ %1 ຈາກ %2 ເຖິງ %3 ປ່ຽນຄ່າທີລະ %4", - "CONTROLS_FOREACH_TITLE": "ຈາກທຸກລາຍການ %1 ໃນລາຍຊື່ %2", - "CONTROLS_FOREACH_TOOLTIP": "ສຳລັບທຸກລາຍການໃນລາຍຊື່, ໃຫ້ຕັ້ງຄ່າຕົວແປ '%1' ເປັນລາຍການ, ແລະເຮັດຕາມຄຳສັ່ງທີ່ກຳນົດໄວ້.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ອອກຈາກການວົນຊ້ຳ", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ອອກຈາກການວົນຊ້ຳທີ່ຢູ່.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ຂ້າມຜ່ານຄຳສັ່ງທີ່ເຫຼືອຢູ່, ແລະເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "ຄຳເຕືອນ: ບລັອກນີ້ໃຊ້ງານໄດ້ພາຍໃນການວົນຊ້ຳເທົ່ານັ້ນ.", - "CONTROLS_IF_TOOLTIP_1": "ຖ້າເງື່ອນໄຂເປັນຈິງ, ກໍຈະເຮັດຕາມທີ່ກຳນົດ.", - "CONTROLS_IF_MSG_IF": "ຖ້າ", - "CONTROLS_IF_MSG_ELSEIF": "ນອກຈາກນີ້ ຖ້າ", - "CONTROLS_IF_MSG_ELSE": "ນອກຈາກນີ້", - "CONTROLS_IF_IF_TOOLTIP": "ເພີ່ມ, ລຶບ, ຫຼື ຈັດລຽງບລັອກ \"ຖ້າ\" ນີ້ໃໝ່.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "ເພີ່ມເງື່ອນໄຂລົງໃນບລັອກ \"ຖ້າ\".", - "CONTROLS_IF_ELSE_TOOLTIP": "ເພີ່ມສິ່ງສຸດທ້າຍ, ກວດຫາຄວາມເປັນໄປໄດ້ທັງໝົດຂອງບລັອກ \"ຖ້າ\".", - "LOGIC_COMPARE_HELPURL": "https://​​lo.wikipedia.org/wiki/ອະສົມຜົນ", - "LOGIC_COMPARE_TOOLTIP_EQ": "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນເທົ່າກັນ.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນບໍ່ເທົ່າກັນ.", - "LOGIC_COMPARE_TOOLTIP_LT": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າຄ່າທີ່ສອງ.", - "LOGIC_COMPARE_TOOLTIP_LTE": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ.", - "LOGIC_COMPARE_TOOLTIP_GT": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າຄ່າທີ່ສອງ.", - "LOGIC_COMPARE_TOOLTIP_GTE": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ.", - "LOGIC_OPERATION_TOOLTIP_AND": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທັງສອງເປັນຈິງ.", - "LOGIC_OPERATION_AND": "ແລະ", - "LOGIC_OPERATION_TOOLTIP_OR": "ຄືນຄ່າເປັນຈິງຖ້າມີຄ່າຢ່າງນ້ອຍໜຶ່ງຄ່າທີ່ເປັນຈິງ.", - "LOGIC_OPERATION_OR": "ຫຼື", - "LOGIC_NEGATE_TITLE": "ບໍ່ %1", - "LOGIC_NEGATE_TOOLTIP": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທີ່ໃສ່ເປັນເທັດ. ຄືນຄ່າເປັນເທັດຖ້າຄ່າທີ່ໃສ່ເປັນຈິງ.", - "LOGIC_BOOLEAN_TRUE": "ຈິງ", - "LOGIC_BOOLEAN_FALSE": "ເທັດ", - "LOGIC_BOOLEAN_TOOLTIP": "ຄືນຄ່າເປັນຈິງ ຫຼື ເທັດ.", - "LOGIC_NULL": "ບໍ່ກຳນົດ", - "LOGIC_NULL_TOOLTIP": "ຄືນຄ່າບໍ່ກຳນົດ.", - "LOGIC_TERNARY_CONDITION": "ທົດສອບ", - "LOGIC_TERNARY_IF_TRUE": "ຖ້າ ເປັນຈິງ", - "LOGIC_TERNARY_IF_FALSE": "ຖ້າ ເປັນເທັດ", - "LOGIC_TERNARY_TOOLTIP": "ກວດສອບເງື່ອນໄຂໃນ 'ທົດສອບ'. ຖ້າເງື່ອນໄຂເປັນຈິງ, ຄືນຄ່າ 'ຖ້າ ເປັນຈິງ'; ຖ້າເງື່ອນໄຂເປັນເທັດ, ໃຫ້ຄືນຄ່າ 'ຖ້າ ເປັນເທັດ'.", - "MATH_NUMBER_HELPURL": "https://lo.wikipedia.org/wiki/ຈຳນວນ", - "MATH_NUMBER_TOOLTIP": "ຈຳນວນໜຶ່ງ." -} +{ + "@metadata": { + "authors": [ + "Aefgh39622" + ] + }, + "VARIABLES_DEFAULT_NAME": "ລາຍການ", + "TODAY": "ມື້ນີ້", + "DUPLICATE_BLOCK": "ເຮັດສຳເນົາ", + "ADD_COMMENT": "ເພີ່ມຄຳອະທິບາຍ", + "REMOVE_COMMENT": "ເອົາຄຳອະທິບາຍອອກ", + "EXTERNAL_INPUTS": "ອິນພຸດພາຍນອກ", + "INLINE_INPUTS": "ອິນພຸດໃນບັນທັດ", + "DELETE_BLOCK": "ລຶບບລັອກ", + "DELETE_X_BLOCKS": "ລຶບ %1 ບລັອກ", + "DELETE_ALL_BLOCKS": "ລຶບ %1 ບລັອກທັງໝົດຫຼືບໍ່?", + "CLEAN_UP": "ຈັດລຽນບລັອກໃຫ້ເປັນແຖວ", + "COLLAPSE_BLOCK": "ຍຸບບລັອກ", + "COLLAPSE_ALL": "ຍຸບບລັອກ", + "EXPAND_BLOCK": "ຂະຫຍາຍບລັອກ", + "EXPAND_ALL": "ຂະຫຍາຍບລັອກ", + "DISABLE_BLOCK": "ປິດໃຊ້ງານບລັອກ", + "ENABLE_BLOCK": "ເປີດໃຊ້ງານບລັອກ", + "HELP": "ຊ່ວຍເຫຼືອ", + "UNDO": "ກັບຄືນ", + "REDO": "ເຮັດຄືນ", + "CHANGE_VALUE_TITLE": "ປ່ຽນຄ່າ:", + "RENAME_VARIABLE": "ປ່ຽນຊື່ຕົວແປ...", + "RENAME_VARIABLE_TITLE": "ປ່ຽນຊື່ຕົວແປ '%1' ທັງໝົດເປັນ:", + "NEW_VARIABLE_TITLE": "ຊື່ຕົວແປໃໝ່:", + "COLOUR_PICKER_HELPURL": "https://lo.wikipedia.org/wiki/ສີ", + "COLOUR_PICKER_TOOLTIP": "ເລືອກສີຈາກຈານສີ.", + "COLOUR_RANDOM_TITLE": "ສຸ່ມສີ", + "COLOUR_RANDOM_TOOLTIP": "ເລືອກສີແບບສຸ່ມ.", + "COLOUR_RGB_TITLE": "ສີທີ່ປະກອບດ້ວຍ", + "COLOUR_RGB_RED": "ຄ່າສີແດງ", + "COLOUR_RGB_GREEN": "ຄ່າສີຂຽວ", + "COLOUR_RGB_BLUE": "ຄ່າສີນ້ຳເງິນ", + "COLOUR_RGB_TOOLTIP": "ສ້າງສີດ້ວຍການກຳນົດຄ່າສີແດງ, ສີຂຽວ, ແລະສີນ້ຳເງິນ. ຄ່າທັງໝົດຕ້ອງຢູ່ລະຫວ່າງ 0 ເຖິງ 100.", + "COLOUR_BLEND_TITLE": "ປະສົມ", + "COLOUR_BLEND_COLOUR1": "ສີ 1", + "COLOUR_BLEND_COLOUR2": "ສີ 2", + "COLOUR_BLEND_RATIO": "ອັດຕາສ່ວນ", + "COLOUR_BLEND_TOOLTIP": "ປະສົມສອງສີເຂົ້າກັນດ້ວຍອັດຕາສ່ວນ (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "ເຮັດຄືນ %1 ຄັ້ງ", + "CONTROLS_REPEAT_INPUT_DO": "ເຮັດ", + "CONTROLS_REPEAT_TOOLTIP": "ເຮັດຄຳສັ່ງບາງຄຳສັ່ງຄືນຫຼາຍໆຄັ້ງ.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ເຮັດຄືນຂະນະທີ່", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ເຮັດຄືນຈົນກະທັ່ງ", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ຂະນະທີ່ຄ່າເປັນຈິງ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ຂະນະທີ່ຄ່າເປັນເທັດ, ກໍຈະເຮັດຄຳສັ່ງບາງຄຳສັ່ງ.", + "CONTROLS_FOR_TOOLTIP": "ຕົວແປ '%1' ຈະເລີ່ມຈາກຈຳນວນເລີ່ມຕົ້ນໄປຫາຈຳນວນສຸດທ້າຍ, ນັບຕາມຊ່ວງໄລຍະທີ່ກຳນົດ, ແລະເຮັດຕາມບລັອກທີ່ກຳນົດໄວ້.", + "CONTROLS_FOR_TITLE": "ນັບດ້ວຍ %1 ຈາກ %2 ເຖິງ %3 ປ່ຽນຄ່າທີລະ %4", + "CONTROLS_FOREACH_TITLE": "ຈາກທຸກລາຍການ %1 ໃນລາຍຊື່ %2", + "CONTROLS_FOREACH_TOOLTIP": "ສຳລັບທຸກລາຍການໃນລາຍຊື່, ໃຫ້ຕັ້ງຄ່າຕົວແປ '%1' ເປັນລາຍການ, ແລະເຮັດຕາມຄຳສັ່ງທີ່ກຳນົດໄວ້.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ອອກຈາກການວົນຊ້ຳ", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ອອກຈາກການວົນຊ້ຳທີ່ຢູ່.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ຂ້າມຜ່ານຄຳສັ່ງທີ່ເຫຼືອຢູ່, ແລະເລີ່ມການວົນຊ້ຳຮອບຕໍ່ໄປ.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "ຄຳເຕືອນ: ບລັອກນີ້ໃຊ້ງານໄດ້ພາຍໃນການວົນຊ້ຳເທົ່ານັ້ນ.", + "CONTROLS_IF_TOOLTIP_1": "ຖ້າເງື່ອນໄຂເປັນຈິງ, ກໍຈະເຮັດຕາມທີ່ກຳນົດ.", + "CONTROLS_IF_MSG_IF": "ຖ້າ", + "CONTROLS_IF_MSG_ELSEIF": "ນອກຈາກນີ້ ຖ້າ", + "CONTROLS_IF_MSG_ELSE": "ນອກຈາກນີ້", + "CONTROLS_IF_IF_TOOLTIP": "ເພີ່ມ, ລຶບ, ຫຼື ຈັດລຽງບລັອກ \"ຖ້າ\" ນີ້ໃໝ່.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "ເພີ່ມເງື່ອນໄຂລົງໃນບລັອກ \"ຖ້າ\".", + "CONTROLS_IF_ELSE_TOOLTIP": "ເພີ່ມສິ່ງສຸດທ້າຍ, ກວດຫາຄວາມເປັນໄປໄດ້ທັງໝົດຂອງບລັອກ \"ຖ້າ\".", + "LOGIC_COMPARE_HELPURL": "https://​​lo.wikipedia.org/wiki/ອະສົມຜົນ", + "LOGIC_COMPARE_TOOLTIP_EQ": "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນເທົ່າກັນ.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "ຄືນຄ່າຈິງຖ້າຄ່າທີ່ີໃສ່ທັງສອງຄ່ານັ້ນບໍ່ເທົ່າກັນ.", + "LOGIC_COMPARE_TOOLTIP_LT": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າຄ່າທີ່ສອງ.", + "LOGIC_COMPARE_TOOLTIP_LTE": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດນ້ອຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ.", + "LOGIC_COMPARE_TOOLTIP_GT": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າຄ່າທີ່ສອງ.", + "LOGIC_COMPARE_TOOLTIP_GTE": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທຳອິດຫຼາຍກວ່າ ຫຼື ເທົ່າກັບຄ່າທີ່ສອງ.", + "LOGIC_OPERATION_TOOLTIP_AND": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທັງສອງເປັນຈິງ.", + "LOGIC_OPERATION_AND": "ແລະ", + "LOGIC_OPERATION_TOOLTIP_OR": "ຄືນຄ່າເປັນຈິງຖ້າມີຄ່າຢ່າງນ້ອຍໜຶ່ງຄ່າທີ່ເປັນຈິງ.", + "LOGIC_OPERATION_OR": "ຫຼື", + "LOGIC_NEGATE_TITLE": "ບໍ່ %1", + "LOGIC_NEGATE_TOOLTIP": "ຄືນຄ່າເປັນຈິງຖ້າຄ່າທີ່ໃສ່ເປັນເທັດ. ຄືນຄ່າເປັນເທັດຖ້າຄ່າທີ່ໃສ່ເປັນຈິງ.", + "LOGIC_BOOLEAN_TRUE": "ຈິງ", + "LOGIC_BOOLEAN_FALSE": "ເທັດ", + "LOGIC_BOOLEAN_TOOLTIP": "ຄືນຄ່າເປັນຈິງ ຫຼື ເທັດ.", + "LOGIC_NULL": "ບໍ່ກຳນົດ", + "LOGIC_NULL_TOOLTIP": "ຄືນຄ່າບໍ່ກຳນົດ.", + "LOGIC_TERNARY_CONDITION": "ທົດສອບ", + "LOGIC_TERNARY_IF_TRUE": "ຖ້າ ເປັນຈິງ", + "LOGIC_TERNARY_IF_FALSE": "ຖ້າ ເປັນເທັດ", + "LOGIC_TERNARY_TOOLTIP": "ກວດສອບເງື່ອນໄຂໃນ 'ທົດສອບ'. ຖ້າເງື່ອນໄຂເປັນຈິງ, ຄືນຄ່າ 'ຖ້າ ເປັນຈິງ'; ຖ້າເງື່ອນໄຂເປັນເທັດ, ໃຫ້ຄືນຄ່າ 'ຖ້າ ເປັນເທັດ'.", + "MATH_NUMBER_HELPURL": "https://lo.wikipedia.org/wiki/ຈຳນວນ", + "MATH_NUMBER_TOOLTIP": "ຈຳນວນໜຶ່ງ." +} diff --git a/msg/json/lrc.json b/msg/json/lrc.json index a7938661986..10bf7808d6c 100644 --- a/msg/json/lrc.json +++ b/msg/json/lrc.json @@ -1,138 +1,138 @@ -{ - "@metadata": { - "authors": [ - "Lorestani", - "Mogoeilor" - ] - }, - "VARIABLES_DEFAULT_NAME": "قلٱم", - "TODAY": "اؽمرۊ", - "DUPLICATE_BLOCK": "کپی کردن", - "ADD_COMMENT": "نٱزٱرتو ناْ اْزاف بٱکؽت", - "REMOVE_COMMENT": "هٱزف نٱزٱر", - "DUPLICATE_COMMENT": "نٱزٱر تکراری", - "EXTERNAL_INPUTS": "دادٱیا ڤ دری", - "INLINE_INPUTS": "دادٱیا مؽنجا", - "DELETE_BLOCK": "پاکسا کردن برشت", - "DELETE_X_BLOCKS": "پاکسا کردن%1 د برشتؽا", - "COLLAPSE_BLOCK": "کوچک کردن برشت", - "COLLAPSE_ALL": "کوچک کردن برشتؽا", - "EXPAND_BLOCK": "گٱپ کردن برشت", - "EXPAND_ALL": "گٱپ کردن برشتؽا", - "DISABLE_BLOCK": "ناکشتگر کردن برشت", - "ENABLE_BLOCK": "کنشتگر کردن برشت", - "HELP": "هومياری", - "UNDO": "ٱنجوم نٱداٛئن", - "REDO": "د نۊ ٱنجوم داٛئن", - "CHANGE_VALUE_TITLE": "ٱرزشت آلشت کو:", - "RENAME_VARIABLE": "د نۊ نوم نؽاین آلشتگر...", - "RENAME_VARIABLE_TITLE": "د نو نوم نؽاین %1 د تموم آلشتگریا د:", - "NEW_VARIABLE": "آلشتگر تازٱ...", - "NEW_VARIABLE_TYPE_TITLE": "نوع آلشتگر تازٱ", - "NEW_VARIABLE_TITLE": "نوم آلشتگر تازٱ:", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "یاٛ رٱنڳ د رٱنڳدو اْنتخاو بٱکؽت", - "COLOUR_RANDOM_TITLE": "رٱنڳ بٱختٱکی", - "COLOUR_RANDOM_TOOLTIP": "یاٛ ٱنڳ بٱختٱکی اْنتخاو بٱکؽت", - "COLOUR_RGB_TITLE": "رٱنڳ ڤا", - "COLOUR_RGB_RED": "سۏز", - "COLOUR_RGB_GREEN": "سۉز", - "COLOUR_RGB_BLUE": "آوئی", - "COLOUR_BLEND_TITLE": "شؽڤسٱ", - "COLOUR_BLEND_COLOUR1": "رٱنڳ 1", - "COLOUR_BLEND_COLOUR2": "رٱنڳ 2", - "COLOUR_BLEND_RATIO": "نسڤٱت", - "COLOUR_BLEND_TOOLTIP": "هٱر کوم د رٱنڳؽا ناْ ڤا نسڤٱت داٛئٱ بٱ بٱشؽڤن(0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 تکرار کو چٱن بار", - "CONTROLS_REPEAT_INPUT_DO": "ٱنجوم باٛ", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تا تکرار کو", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تا تکرار کو", - "CONTROLS_FOR_TITLE": "شماردن وا %1 د %2 سی %3 ڤا %4", - "CONTROLS_FOREACH_TITLE": "سی هٱر قلٱم %1 د نومگٱ %2", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "هٱلقٱ ناْ خراو کو", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "هٱلقٱ شومل بیٱ ناْ خراو کو", - "CONTROLS_IF_MSG_IF": "ٱر", - "CONTROLS_IF_MSG_ELSEIF": "هنی ٱر", - "CONTROLS_IF_MSG_ELSE": "هنی", - "LOGIC_OPERATION_AND": "ۉ", - "LOGIC_OPERATION_OR": "یا", - "LOGIC_NEGATE_TITLE": "نٱ %1", - "LOGIC_BOOLEAN_TRUE": "راس ۉ دۏرس", - "LOGIC_BOOLEAN_FALSE": "غلٱت", - "LOGIC_BOOLEAN_TOOLTIP": "هٱم غلٱت ۉ هٱم دۏرس ڤرگٱردن", - "LOGIC_NULL": "خونسا", - "LOGIC_TERNARY_CONDITION": "آزماشت کردن", - "LOGIC_TERNARY_IF_TRUE": "ٱر دۏرس بی", - "LOGIC_TERNARY_IF_FALSE": "ٱر غلٱت بی", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "یاٛ شمارٱ.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "ڤاْ ٱندازٱ دۏ شمارٱ ڤرگٱردن.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "چارسوک ریشٱ", - "MATH_SINGLE_OP_ABSOLUTE": "تموم ۉ کمال", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_IS_EVEN": "همیشٱ هؽسش", - "MATH_IS_ODD": "تٱنڳؽا ٱ", - "MATH_IS_PRIME": "ڤٱ ٱڤلٱ", - "MATH_IS_WHOLE": "همٱشٱ", - "MATH_IS_POSITIVE": "موسبٱتٱ", - "MATH_IS_NEGATIVE": "مٱنفی ٱ", - "MATH_IS_DIVISIBLE_BY": "یٱ ڤا بٱئر بیٱ", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "آلشت بٱکؽت %1 وا %2", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_OPERATOR_ROUND": "گرد کردن", - "MATH_ROUND_OPERATOR_ROUNDUP": "ڤ رۉ گرد کردن", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "ڤ هار گرد کردن", - "MATH_ONLIST_OPERATOR_SUM": "جٱم کردن نومگٱ", - "MATH_ONLIST_OPERATOR_MIN": "کٱمترونٱ د نومگٱ", - "MATH_ONLIST_OPERATOR_MAX": "بؽشترونٱ د نومگٱ", - "MATH_ONLIST_OPERATOR_AVERAGE": "مؽنجاگٱ نومگٱ", - "MATH_ONLIST_OPERATOR_MEDIAN": "مؽنجا نومگٱ", - "MATH_ONLIST_OPERATOR_MODE": "بؽشری د نومگٱ", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_JOIN_TITLE_CREATEWITH": "دۏرس کردن مٱتن ڤا", - "TEXT_CREATE_JOIN_TITLE_JOIN": "پاٛڤٱسن", - "TEXT_ISEMPTY_TITLE": "%1 هالٛیٱ", - "TEXT_INDEXOF_TITLE": "د مٱتن %1 %2 %3", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "د مٱتن", - "TEXT_GET_SUBSTRING_END_FROM_START": "سی ڤاج#", - "TEXT_GET_SUBSTRING_END_FROM_END": "سی ڤاج# تا آخر", - "TEXT_GET_SUBSTRING_END_LAST": "سی آخری ڤاج", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "سی هٱرف گٱپ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "سی ڤاج کوچک", - "LISTS_CREATE_EMPTY_TITLE": "یاٛ نومگٱ هالٛی دۏرس بٱکؽت", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "نومگٱ", - "LISTS_ISEMPTY_TITLE": "%1 هالٛیٱ", - "LISTS_INLIST": "د نومگٱ", - "LISTS_GET_INDEX_GET": "گرتن", - "LISTS_GET_INDEX_GET_REMOVE": "گرتن ۉ جا ڤ جا بیئن", - "LISTS_GET_INDEX_REMOVE": "ڤرداشتن", - "LISTS_GET_INDEX_FROM_END": "# تا آخر", - "LISTS_GET_INDEX_FIRST": "ٱڤلی", - "LISTS_GET_INDEX_LAST": "آخر", - "LISTS_GET_INDEX_RANDOM": "بٱختٱکی", - "LISTS_SET_INDEX_INSERT": "بٱنؽ د", - "LISTS_SET_INDEX_INPUT_TO": "چی", - "LISTS_GET_SUBLIST_END_FROM_START": "سی#", - "LISTS_GET_SUBLIST_END_LAST": "سی آخر", - "VARIABLES_SET": "میزوکاری %1 سی %2", - "PROCEDURES_DEFNORETURN_TITLE": "سی", - "PROCEDURES_DEFNORETURN_PROCEDURE": "یاٛ کار ٱنجوم باٛئؽت", - "PROCEDURES_BEFORE_PARAMS": "ڤا:", - "PROCEDURES_CALL_BEFORE_PARAMS": "ڤا:", - "PROCEDURES_DEFRETURN_RETURN": "ڤرگٱردنیئن", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_MUTATORCONTAINER_TITLE": "دادٱیا", - "PROCEDURES_MUTATORARG_TITLE": "نوم دادٱ:", - "PROCEDURES_CREATE_DO": "دۏرس کردن%1", - "DIALOG_OK": "خۊئٱ", - "DIALOG_CANCEL": "رٱد كردن" -} +{ + "@metadata": { + "authors": [ + "Lorestani", + "Mogoeilor" + ] + }, + "VARIABLES_DEFAULT_NAME": "قلٱم", + "TODAY": "اؽمرۊ", + "DUPLICATE_BLOCK": "کپی کردن", + "ADD_COMMENT": "نٱزٱرتو ناْ اْزاف بٱکؽت", + "REMOVE_COMMENT": "هٱزف نٱزٱر", + "DUPLICATE_COMMENT": "نٱزٱر تکراری", + "EXTERNAL_INPUTS": "دادٱیا ڤ دری", + "INLINE_INPUTS": "دادٱیا مؽنجا", + "DELETE_BLOCK": "پاکسا کردن برشت", + "DELETE_X_BLOCKS": "پاکسا کردن%1 د برشتؽا", + "COLLAPSE_BLOCK": "کوچک کردن برشت", + "COLLAPSE_ALL": "کوچک کردن برشتؽا", + "EXPAND_BLOCK": "گٱپ کردن برشت", + "EXPAND_ALL": "گٱپ کردن برشتؽا", + "DISABLE_BLOCK": "ناکشتگر کردن برشت", + "ENABLE_BLOCK": "کنشتگر کردن برشت", + "HELP": "هومياری", + "UNDO": "ٱنجوم نٱداٛئن", + "REDO": "د نۊ ٱنجوم داٛئن", + "CHANGE_VALUE_TITLE": "ٱرزشت آلشت کو:", + "RENAME_VARIABLE": "د نۊ نوم نؽاین آلشتگر...", + "RENAME_VARIABLE_TITLE": "د نو نوم نؽاین %1 د تموم آلشتگریا د:", + "NEW_VARIABLE": "آلشتگر تازٱ...", + "NEW_VARIABLE_TYPE_TITLE": "نوع آلشتگر تازٱ", + "NEW_VARIABLE_TITLE": "نوم آلشتگر تازٱ:", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "یاٛ رٱنڳ د رٱنڳدو اْنتخاو بٱکؽت", + "COLOUR_RANDOM_TITLE": "رٱنڳ بٱختٱکی", + "COLOUR_RANDOM_TOOLTIP": "یاٛ ٱنڳ بٱختٱکی اْنتخاو بٱکؽت", + "COLOUR_RGB_TITLE": "رٱنڳ ڤا", + "COLOUR_RGB_RED": "سۏز", + "COLOUR_RGB_GREEN": "سۉز", + "COLOUR_RGB_BLUE": "آوئی", + "COLOUR_BLEND_TITLE": "شؽڤسٱ", + "COLOUR_BLEND_COLOUR1": "رٱنڳ 1", + "COLOUR_BLEND_COLOUR2": "رٱنڳ 2", + "COLOUR_BLEND_RATIO": "نسڤٱت", + "COLOUR_BLEND_TOOLTIP": "هٱر کوم د رٱنڳؽا ناْ ڤا نسڤٱت داٛئٱ بٱ بٱشؽڤن(0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 تکرار کو چٱن بار", + "CONTROLS_REPEAT_INPUT_DO": "ٱنجوم باٛ", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تا تکرار کو", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تا تکرار کو", + "CONTROLS_FOR_TITLE": "شماردن وا %1 د %2 سی %3 ڤا %4", + "CONTROLS_FOREACH_TITLE": "سی هٱر قلٱم %1 د نومگٱ %2", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "هٱلقٱ ناْ خراو کو", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "هٱلقٱ شومل بیٱ ناْ خراو کو", + "CONTROLS_IF_MSG_IF": "ٱر", + "CONTROLS_IF_MSG_ELSEIF": "هنی ٱر", + "CONTROLS_IF_MSG_ELSE": "هنی", + "LOGIC_OPERATION_AND": "ۉ", + "LOGIC_OPERATION_OR": "یا", + "LOGIC_NEGATE_TITLE": "نٱ %1", + "LOGIC_BOOLEAN_TRUE": "راس ۉ دۏرس", + "LOGIC_BOOLEAN_FALSE": "غلٱت", + "LOGIC_BOOLEAN_TOOLTIP": "هٱم غلٱت ۉ هٱم دۏرس ڤرگٱردن", + "LOGIC_NULL": "خونسا", + "LOGIC_TERNARY_CONDITION": "آزماشت کردن", + "LOGIC_TERNARY_IF_TRUE": "ٱر دۏرس بی", + "LOGIC_TERNARY_IF_FALSE": "ٱر غلٱت بی", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "یاٛ شمارٱ.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "ڤاْ ٱندازٱ دۏ شمارٱ ڤرگٱردن.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "چارسوک ریشٱ", + "MATH_SINGLE_OP_ABSOLUTE": "تموم ۉ کمال", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_IS_EVEN": "همیشٱ هؽسش", + "MATH_IS_ODD": "تٱنڳؽا ٱ", + "MATH_IS_PRIME": "ڤٱ ٱڤلٱ", + "MATH_IS_WHOLE": "همٱشٱ", + "MATH_IS_POSITIVE": "موسبٱتٱ", + "MATH_IS_NEGATIVE": "مٱنفی ٱ", + "MATH_IS_DIVISIBLE_BY": "یٱ ڤا بٱئر بیٱ", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "آلشت بٱکؽت %1 وا %2", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_OPERATOR_ROUND": "گرد کردن", + "MATH_ROUND_OPERATOR_ROUNDUP": "ڤ رۉ گرد کردن", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "ڤ هار گرد کردن", + "MATH_ONLIST_OPERATOR_SUM": "جٱم کردن نومگٱ", + "MATH_ONLIST_OPERATOR_MIN": "کٱمترونٱ د نومگٱ", + "MATH_ONLIST_OPERATOR_MAX": "بؽشترونٱ د نومگٱ", + "MATH_ONLIST_OPERATOR_AVERAGE": "مؽنجاگٱ نومگٱ", + "MATH_ONLIST_OPERATOR_MEDIAN": "مؽنجا نومگٱ", + "MATH_ONLIST_OPERATOR_MODE": "بؽشری د نومگٱ", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_JOIN_TITLE_CREATEWITH": "دۏرس کردن مٱتن ڤا", + "TEXT_CREATE_JOIN_TITLE_JOIN": "پاٛڤٱسن", + "TEXT_ISEMPTY_TITLE": "%1 هالٛیٱ", + "TEXT_INDEXOF_TITLE": "د مٱتن %1 %2 %3", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "د مٱتن", + "TEXT_GET_SUBSTRING_END_FROM_START": "سی ڤاج#", + "TEXT_GET_SUBSTRING_END_FROM_END": "سی ڤاج# تا آخر", + "TEXT_GET_SUBSTRING_END_LAST": "سی آخری ڤاج", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "سی هٱرف گٱپ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "سی ڤاج کوچک", + "LISTS_CREATE_EMPTY_TITLE": "یاٛ نومگٱ هالٛی دۏرس بٱکؽت", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "نومگٱ", + "LISTS_ISEMPTY_TITLE": "%1 هالٛیٱ", + "LISTS_INLIST": "د نومگٱ", + "LISTS_GET_INDEX_GET": "گرتن", + "LISTS_GET_INDEX_GET_REMOVE": "گرتن ۉ جا ڤ جا بیئن", + "LISTS_GET_INDEX_REMOVE": "ڤرداشتن", + "LISTS_GET_INDEX_FROM_END": "# تا آخر", + "LISTS_GET_INDEX_FIRST": "ٱڤلی", + "LISTS_GET_INDEX_LAST": "آخر", + "LISTS_GET_INDEX_RANDOM": "بٱختٱکی", + "LISTS_SET_INDEX_INSERT": "بٱنؽ د", + "LISTS_SET_INDEX_INPUT_TO": "چی", + "LISTS_GET_SUBLIST_END_FROM_START": "سی#", + "LISTS_GET_SUBLIST_END_LAST": "سی آخر", + "VARIABLES_SET": "میزوکاری %1 سی %2", + "PROCEDURES_DEFNORETURN_TITLE": "سی", + "PROCEDURES_DEFNORETURN_PROCEDURE": "یاٛ کار ٱنجوم باٛئؽت", + "PROCEDURES_BEFORE_PARAMS": "ڤا:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ڤا:", + "PROCEDURES_DEFRETURN_RETURN": "ڤرگٱردنیئن", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_MUTATORCONTAINER_TITLE": "دادٱیا", + "PROCEDURES_MUTATORARG_TITLE": "نوم دادٱ:", + "PROCEDURES_CREATE_DO": "دۏرس کردن%1", + "DIALOG_OK": "خۊئٱ", + "DIALOG_CANCEL": "رٱد كردن" +} diff --git a/msg/json/lt.json b/msg/json/lt.json index d320c4ec456..01c8fd10869 100644 --- a/msg/json/lt.json +++ b/msg/json/lt.json @@ -1,313 +1,313 @@ -{ - "@metadata": { - "authors": [ - "Eitvys200", - "Jurgis", - "Nuodas", - "Zygimantus" - ] - }, - "VARIABLES_DEFAULT_NAME": "elementas", - "TODAY": "Šiandien", - "DUPLICATE_BLOCK": "Kopijuoti", - "ADD_COMMENT": "Palikti komentarą", - "REMOVE_COMMENT": "Pašalinti komentarą", - "DUPLICATE_COMMENT": "Dubliuoti Komentarą", - "EXTERNAL_INPUTS": "Išdėstyti stulpeliu, kai daug parametrų", - "INLINE_INPUTS": "Išdėstyti vienoje eilutėje", - "DELETE_BLOCK": "Ištrinti bloką", - "DELETE_X_BLOCKS": "Ištrinti %1 blokus", - "DELETE_ALL_BLOCKS": "Ištrinti visus %1 blokus?", - "CLEAN_UP": "Išvalyti blokus", - "COLLAPSE_BLOCK": "Suskleisti bloką", - "COLLAPSE_ALL": "Suskleisti blokus", - "EXPAND_BLOCK": "Išskleisti bloką", - "EXPAND_ALL": "Išskleisti blokus", - "DISABLE_BLOCK": "Išjungti bloką", - "ENABLE_BLOCK": "Įjungti bloką", - "HELP": "Pagalba", - "UNDO": "Anuliuoti", - "REDO": "Atkurti", - "CHANGE_VALUE_TITLE": "Keisti reikšmę:", - "RENAME_VARIABLE": "Pervardyti kintamajį...", - "RENAME_VARIABLE_TITLE": "Pervadinti visus '%1' kintamuosius į:", - "NEW_VARIABLE": "Sukurti kintamąjį", - "NEW_NUMBER_VARIABLE": "Sukurti skaičiaus kintamąjį...", - "NEW_COLOUR_VARIABLE": "Sukurti spalvos kintamąjį...", - "NEW_VARIABLE_TYPE_TITLE": "Naujas kintamojo tipas:", - "NEW_VARIABLE_TITLE": "Naujo kintamojo pavadinimas:", - "VARIABLE_ALREADY_EXISTS": "Kintamasis, pavadinimu '%1', jau egzistuoja.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Kintamasis, pavadinimu '%1', jau egzistuoja kaip kitas tipas: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Ištrinti %1 '%2' panaudojimus?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Negalima ištrinti kintamojo '%1', nes jis yra dalis funkcijos '%2'", - "DELETE_VARIABLE": "Ištrinti „%1“ kintamąjį", - "COLOUR_PICKER_HELPURL": "https://lt.wikipedia.org/wiki/Spalva", - "COLOUR_PICKER_TOOLTIP": "Pasirinkti spalvą iš paletės.", - "COLOUR_RANDOM_TITLE": "atsitiktinė spalva", - "COLOUR_RANDOM_TOOLTIP": "Pasirinkti spalvą atsitiktinai.", - "COLOUR_RGB_TITLE": "spalva su", - "COLOUR_RGB_RED": "raudona", - "COLOUR_RGB_GREEN": "žalia", - "COLOUR_RGB_BLUE": "mėlyna", - "COLOUR_RGB_TOOLTIP": "Spalvą galima sudaryti iš raudonos, žalios ir mėlynos dedamųjų. Kiekvienos intensyvumas nuo 0 iki 100.", - "COLOUR_BLEND_TITLE": "sumaišyk", - "COLOUR_BLEND_COLOUR1": "1 spalva", - "COLOUR_BLEND_COLOUR2": "2 spalva", - "COLOUR_BLEND_RATIO": "santykis", - "COLOUR_BLEND_TOOLTIP": "Sumaišo dvi spalvas su pateiktu santykiu (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "pakartokite %1 kartus", - "CONTROLS_REPEAT_INPUT_DO": "daryti", - "CONTROLS_REPEAT_TOOLTIP": "Leidžia atlikti išvardintus veiksmus kelis kartus.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "kartok kol", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "kartok, kol pasieksi", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Kartoja veiksmus, kol sąlyga tenkinama.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Kartoja veiksmus, kol bus pasiekta nurodyta sąlyga.", - "CONTROLS_FOR_TOOLTIP": "Imama kintamoji '%1' reikšmė nuo pradinio skaičiaus iki pabaigos skaičiaus, skaičiuojant nustatytais intervalais ir atliekant nustatytus blokus.", - "CONTROLS_FOR_TITLE": "kartok, kai %1 kinta nuo %2 iki %3 po %4", - "CONTROLS_FOREACH_TITLE": "kartok su kiekvienu %1 iš sąrašo %2", - "CONTROLS_FOREACH_TOOLTIP": "Kartok veiksmus, kol kintamasis \"%1\" paeiliui gauna kiekvieną sąrašo reikšmę.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "nutraukti kartojimą", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "šį kartą praleisti likusius veiksmus ir tęsti kartojimą", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Nutraukia (artimiausią) vykstantį kartojimą.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Praleidžia žemiau išvardintus kartojimo veiksmus (ir tęsia darbą nuo kartojimo pradinio veiksmo).", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Atsargiai: šis blokas gali būt naudojamas tik kartojimo bloko viduje.", - "CONTROLS_IF_TOOLTIP_1": "Jeigu sąlyga tenkinama, tai atlik veiksmus.", - "CONTROLS_IF_TOOLTIP_2": "Jei sąlyga tenkinama, atlikti jai priklausančius veiksmus, o jei ne -- atlikti kitus nurodytus veiksmus.", - "CONTROLS_IF_TOOLTIP_3": "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus.", - "CONTROLS_IF_TOOLTIP_4": "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus. Kitais atvejais -- atlikti paskutinio bloko veiksmus.", - "CONTROLS_IF_MSG_IF": "jei", - "CONTROLS_IF_MSG_ELSEIF": "arba jei", - "CONTROLS_IF_MSG_ELSE": "kitu atveju", - "CONTROLS_IF_IF_TOOLTIP": "Galite pridėt/pašalinti/pertvarkyti sąlygų \"šakas\".", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Pridėti sąlygą „jei“ blokui.", - "CONTROLS_IF_ELSE_TOOLTIP": "Pridėti veiksmų vykdymo variantą/\"šaką\", kai netenkinama nė viena sąlyga.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Tenkinama, jei abu reiškiniai lygūs.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Grįžti tiesa, jeigu abi įvestys ne lygios tarpusavyje.", - "LOGIC_COMPARE_TOOLTIP_LT": "Grįžti tiesa, jei pirma įvestis mažesnė nei antra įvestis.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Grįžti tiesa, jei pirma įvestis mažesnė arba lygi antrajai įvesčiai.", - "LOGIC_COMPARE_TOOLTIP_GT": "Grįžti tiesa, jei pirmoji įvestis didesnė nei antroji įvestis.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Grįžti tiesa, jei pirma įvestis didesnė arba lygi antrajai įvesčiai.", - "LOGIC_OPERATION_TOOLTIP_AND": "Bus teisinga, kai abi sąlygos bus tenkinamos.", - "LOGIC_OPERATION_AND": "ir", - "LOGIC_OPERATION_TOOLTIP_OR": "Grįžti tiesa, jei bent viena įvestis teisinga.", - "LOGIC_OPERATION_OR": "arba", - "LOGIC_NEGATE_TITLE": "ne %1", - "LOGIC_NEGATE_TOOLTIP": "Grįžti tiesa, jei įvestis klaidinga. Grįžti klaidinga, jei įvestis teisinga.", - "LOGIC_BOOLEAN_TRUE": "tiesa", - "LOGIC_BOOLEAN_FALSE": "klaidinga", - "LOGIC_BOOLEAN_TOOLTIP": "Reikšmė gali būti \"teisinga\"/\"Taip\" arba \"klaidinga\"/\"Ne\".", - "LOGIC_NULL": "nieko", - "LOGIC_NULL_TOOLTIP": "Reikšmė nebuvo nurodyta...", - "LOGIC_TERNARY_CONDITION": "sąlyga", - "LOGIC_TERNARY_IF_TRUE": "jei taip", - "LOGIC_TERNARY_IF_FALSE": "jei ne", - "LOGIC_TERNARY_TOOLTIP": "Jeigu sąlygą tenkinama, grąžina pirmą reikšmę, o jei ne - antrąją.", - "MATH_NUMBER_HELPURL": "https://lt.wikipedia.org/wiki/Skaičius", - "MATH_NUMBER_TOOLTIP": "Skaičius.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Grąžina dviejų skaičių sumą.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Grąžina dviejų skaičių skirtumą.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Grąžina dviejų skaičių sandaugą.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Grąžina dviejų skaičių dalmenį.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Grąžina pirmą skaičių pakeltą laipsniu pagal antrą skaičių.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "kvadratinė šaknis", - "MATH_SINGLE_TOOLTIP_ROOT": "Grįžti kvadratinę šaknį iš skaičiaus.", - "MATH_SINGLE_OP_ABSOLUTE": "modulis", - "MATH_SINGLE_TOOLTIP_ABS": "Skaičiaus modulis - reikšmė be ženklo (panaikina minusą).", - "MATH_SINGLE_TOOLTIP_NEG": "Grąžina skaičiui priešingą skaičių.", - "MATH_SINGLE_TOOLTIP_LN": "Grąžinti skaičiaus natūrinį logaritmą.", - "MATH_SINGLE_TOOLTIP_LOG10": "Grįžti 10 pagrindinių logaritmų iš skaičiaus.", - "MATH_SINGLE_TOOLTIP_EXP": "Grąžinti skaičių laipsniu e.", - "MATH_SINGLE_TOOLTIP_POW10": "Grąžinti skaičių laipsniu 10.", - "MATH_TRIG_HELPURL": "https://lt.wikipedia.org/wiki/Trigonometrinės_funkcijos", - "MATH_TRIG_TOOLTIP_SIN": "Grąžinti laipsnio sinusą (ne radiano).", - "MATH_TRIG_TOOLTIP_COS": "Grąžinti laipsnio kosinusą (ne radiano).", - "MATH_TRIG_TOOLTIP_TAN": "Grąžinti laipsnio tangentą (ne radiano).", - "MATH_TRIG_TOOLTIP_ASIN": "Grąžinti skaičiaus arksinusą.", - "MATH_TRIG_TOOLTIP_ACOS": "Grąžinti skaičiaus arkkosinusą.", - "MATH_TRIG_TOOLTIP_ATAN": "Grąžinti skaičiaus arktangentą.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Grįžti viena iš pagrindinių konstantų: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (begalybė).", - "MATH_IS_EVEN": "yra lyginis", - "MATH_IS_ODD": "yra nelyginis", - "MATH_IS_PRIME": "yra pirminis", - "MATH_IS_WHOLE": "yra sveikasis", - "MATH_IS_POSITIVE": "yra teigiamas", - "MATH_IS_NEGATIVE": "yra neigiamas", - "MATH_IS_DIVISIBLE_BY": "yra dalus iš", - "MATH_IS_TOOLTIP": "Patikrina skaičiaus savybę: (ne)lyginis/pirminis/sveikasis/teigiamas/neigiamas/dalus iš x.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "padidink %1 (emptypage) %2", - "MATH_CHANGE_TOOLTIP": "Prideda skaičių prie kintamojo '%1'. Kai skaičius neigiamas - gaunasi atimtis.", - "MATH_ROUND_HELPURL": "https://lt.wikipedia.org/wiki/Apvalinimas", - "MATH_ROUND_TOOLTIP": "Suapvalinti skaičių į žemesnę ar aukštesnę reikšmę.", - "MATH_ROUND_OPERATOR_ROUND": "apvalink", - "MATH_ROUND_OPERATOR_ROUNDUP": "apvalink aukštyn", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "apvalink žemyn", - "MATH_ONLIST_OPERATOR_SUM": "suma", - "MATH_ONLIST_TOOLTIP_SUM": "didžiausia reikšmė", - "MATH_ONLIST_OPERATOR_MIN": "mažiausia reikšmė sąraše", - "MATH_ONLIST_TOOLTIP_MIN": "Grįžti mažiausiu skaičiumi sąraše.", - "MATH_ONLIST_OPERATOR_MAX": "didžiausia reikšmė sąraše", - "MATH_ONLIST_TOOLTIP_MAX": "Grįžti didžiausiu skaičiumi sąraše.", - "MATH_ONLIST_OPERATOR_AVERAGE": "vidurkis", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Grįžti vidurkiu (aritmetinis vidurkis) iš skaitinių reikšmių sąraše.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana sąrašui", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Grąžinti sąrašo medianą.", - "MATH_ONLIST_OPERATOR_MODE": "statistinė moda sąrašui", - "MATH_ONLIST_TOOLTIP_MODE": "Grąžinti sąrašą dažniausių elementų sąraše.", - "MATH_ONLIST_OPERATOR_STD_DEV": "standartinis nuokrypis sąraše", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Grįžti standartine pakraipa iš sąrašo.", - "MATH_ONLIST_OPERATOR_RANDOM": "atsitiktinis elementas iš sąrašo", - "MATH_ONLIST_TOOLTIP_RANDOM": "Grąžinti atsitiktinį elementą iš sąrašo.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "dalybos liekana %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Grįžti likučiu nuo dviejų skaičių dalybos.", - "MATH_CONSTRAIN_TITLE": "apribok %1 tarp %2 ir %3", - "MATH_CONSTRAIN_TOOLTIP": "Apriboti skaičių, kad būtų tarp nustatytų ribų (imtinai).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "atsitiktinis sveikas sk. nuo %1 iki %2", - "MATH_RANDOM_INT_TOOLTIP": "Grįžti atsitiktinį sveikąjį skaičių tarp dviejų nustatytų ribų, imtinai.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "atsitiktinė trupmena", - "MATH_RANDOM_FLOAT_TOOLTIP": "Atsitiktinė trupmena nuo 0 (imtinai) iki 1 (neimtinai).", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Tekstas (arba žodis, ar raidė)", - "TEXT_JOIN_TITLE_CREATEWITH": "sukurti tekstą su", - "TEXT_JOIN_TOOLTIP": "Sukurti teksto fragmentą sujungiant bet kokį skaičių fragmentų.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "sujunk", - "TEXT_CREATE_JOIN_TOOLTIP": "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Pridėti teksto elementą.", - "TEXT_APPEND_TITLE": "prie %1 pridėk tekstą %2", - "TEXT_APPEND_TOOLTIP": "Pridėti tekstą prie kintamojo '%1'.", - "TEXT_LENGTH_TITLE": "teksto %1 ilgis", - "TEXT_LENGTH_TOOLTIP": "Suranda teksto simbolių kiekį (įskaitant ir tarpus)", - "TEXT_ISEMPTY_TITLE": "%1 yra tuščias", - "TEXT_ISEMPTY_TOOLTIP": "Grįžti tiesa, jei numatytas tekstas tuščias.", - "TEXT_INDEXOF_TOOLTIP": "Grąžina pirmą/paskutinę pirmo teksto reikšmę antrame tekste. Grąžina %1, jei tekstas nerastas.", - "TEXT_INDEXOF_TITLE": "tekste %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "rask,kur pirmą kartą paminėta", - "TEXT_INDEXOF_OPERATOR_LAST": "rask,kur paskutinį kartą paminėta", - "TEXT_CHARAT_FROM_START": "gauti raidę #", - "TEXT_CHARAT_FROM_END": "raidė nuo galo #", - "TEXT_CHARAT_FIRST": "gauti pirmą raidę", - "TEXT_CHARAT_LAST": "gauti paskutinę raidę", - "TEXT_CHARAT_RANDOM": "gauti atsitiktinę raidę", - "TEXT_CHARAT_TOOLTIP": "Grąžina raidę į tam tikrą poziciją.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Grąžina tam tikrą teksto dalį.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "tekste", - "TEXT_GET_SUBSTRING_START_FROM_START": "dalis nuo raidės #", - "TEXT_GET_SUBSTRING_START_FROM_END": "dalis nuo raidės #", - "TEXT_GET_SUBSTRING_START_FIRST": "dalis nuo pradžios", - "TEXT_GET_SUBSTRING_END_FROM_START": "iki raidės #", - "TEXT_GET_SUBSTRING_END_FROM_END": "iki raidės nuo galo #", - "TEXT_GET_SUBSTRING_END_LAST": "iki pabaigos", - "TEXT_CHANGECASE_TOOLTIP": "Kitu atvėju, grąžina teksto kopiją.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": " DIDŽIOSIOM RAIDĖM", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": " mažosiom raidėm", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": " Pavadinimo Raidėmis", - "TEXT_TRIM_TOOLTIP": "Grąžina teksto kopiją, pašalinus tarpus iš vieno ar abiejų kraštų.", - "TEXT_TRIM_OPERATOR_BOTH": "išvalyk tarpus šonuose", - "TEXT_TRIM_OPERATOR_LEFT": "išvalyk tarpus pradžioje", - "TEXT_TRIM_OPERATOR_RIGHT": "išvalyk tarpus pabaigoje", - "TEXT_PRINT_TITLE": "spausdinti %1", - "TEXT_PRINT_TOOLTIP": "Spausdinti nurodytą tekstą, skaičių ar kitą reikšmę.", - "TEXT_PROMPT_TYPE_TEXT": "paprašyk įvesti tekstą :", - "TEXT_PROMPT_TYPE_NUMBER": "paprašyk įvesti skaičių :", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Prašyti vartotoją įvesti skaičių.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Prašyti vartotoją įvesti tekstą.", - "TEXT_COUNT_MESSAGE0": "skaičius %1 iš %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Suskaičiuoti, kiek kartų šis tekstas kartojasi kitame tekste.", - "TEXT_REPLACE_MESSAGE0": "pakeisti %1 į %2 šiame %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Pašalinti visas teksto dalis kitame tekste.", - "TEXT_REVERSE_MESSAGE0": "atbulai %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REVERSE_TOOLTIP": "Apversti teksto simbolių tvarką.", - "LISTS_CREATE_EMPTY_TITLE": "tuščias sąrašas", - "LISTS_CREATE_EMPTY_TOOLTIP": "Grąžina sąrašą, ilgio 0, neturintį duomenų", - "LISTS_CREATE_WITH_TOOLTIP": "Sukurti sąrašą iš bet kokio skaičiaus elementų.", - "LISTS_CREATE_WITH_INPUT_WITH": "sukurti sąrašą su", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "sąrašas", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Pridėti elementą į sąrašą.", - "LISTS_REPEAT_TITLE": "sukurk sąrašą, kuriame %1 bus %2 kartus", - "LISTS_LENGTH_TITLE": "ilgis %1", - "LISTS_LENGTH_TOOLTIP": "Grąžina sąrašo ilgį.", - "LISTS_ISEMPTY_TITLE": "%1 yra tuščias", - "LISTS_ISEMPTY_TOOLTIP": "Grąžina „true“, jeigu sąrašas tuščias.", - "LISTS_INLIST": "sąraše", - "LISTS_INDEX_OF_FIRST": "rask pirmą reikšmę", - "LISTS_INDEX_OF_LAST": "rask paskutinę reikšmę", - "LISTS_INDEX_OF_TOOLTIP": "Grąžina pirmos/paskutinės reikšmės eilės nr. sąraše. Grąžina %1, jei reikšmės neranda.", - "LISTS_GET_INDEX_GET": "paimk", - "LISTS_GET_INDEX_GET_REMOVE": "paimk ir ištrink", - "LISTS_GET_INDEX_REMOVE": "pašalinti", - "LISTS_GET_INDEX_FROM_END": "# nuo galo", - "LISTS_GET_INDEX_FIRST": "pirmas", - "LISTS_GET_INDEX_LAST": "paskutinis", - "LISTS_GET_INDEX_RANDOM": "atsitiktinis", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 yra pirmasis objektas.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 yra paskutinis objektas.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Gražina objektą į nurodyta poziciją sąraše.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Grąžina pirmąjį sąrašo elementą.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Grąžina paskutinį elementą iš sąrašo.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Grąžina atsitiktinį elementą iš sąrašo.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Pašalina objektą iš nurodytos vietos sąraše.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Pašalina pirmą objektą sąraše.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Pašalina paskutinį objektą sąraše.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Pašalina atsitiktinį objektą sąraše.", - "LISTS_SET_INDEX_SET": "priskirk elementui", - "LISTS_SET_INDEX_INSERT": "įterpk į vietą", - "LISTS_SET_INDEX_INPUT_TO": "kaip", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Įterpią objektą į nurodytą poziciją sąraše.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Įterpia objektą į sąrašo pradžią.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Įterpia objektą į atsitiktinę sąrašo vietą.", - "LISTS_GET_SUBLIST_START_FROM_START": "sąrašo dalis nuo #", - "LISTS_GET_SUBLIST_START_FROM_END": "sąrašo dalis nuo # nuo galo", - "LISTS_GET_SUBLIST_START_FIRST": "sąrašo dalis nuo pradžios", - "LISTS_GET_SUBLIST_END_FROM_START": "iki #", - "LISTS_GET_SUBLIST_END_FROM_END": "iki # nuo galo", - "LISTS_GET_SUBLIST_END_LAST": "iki galo", - "LISTS_GET_SUBLIST_TOOLTIP": "Sukuria nurodytos sąrašo dalies kopiją.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "rūšiuoti %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Rūšiuoti sąrašo kopiją.", - "LISTS_SORT_ORDER_ASCENDING": "didėjančia tvarka", - "LISTS_SORT_ORDER_DESCENDING": "mažėjančia tvarka", - "LISTS_SORT_TYPE_NUMERIC": "skaitmeninis", - "LISTS_SORT_TYPE_TEXT": "abėcėlės", - "LISTS_SORT_TYPE_IGNORECASE": "abecėlės, ignoruoti raidžių dydį", - "LISTS_SPLIT_WITH_DELIMITER": "su dalikliu", - "VARIABLES_GET_CREATE_SET": "Sukurk \"priskirk %1\"", - "VARIABLES_SET": "priskirk %1 = %2", - "VARIABLES_SET_CREATE_GET": "Sukurti 'kintamasis %1'", - "PROCEDURES_DEFNORETURN_TITLE": "komanda:", - "PROCEDURES_DEFNORETURN_PROCEDURE": "daryk kažką", - "PROCEDURES_BEFORE_PARAMS": "pagal:", - "PROCEDURES_CALL_BEFORE_PARAMS": "su:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Sukuria procedūrą - komandą, kuri nepateikia jokio rezultato (tik atlieka veiksmus).", - "PROCEDURES_DEFNORETURN_COMMENT": "Apibūdinkite šią funkciją...", - "PROCEDURES_DEFRETURN_RETURN": "duok", - "PROCEDURES_DEFRETURN_TOOLTIP": "Sukuria funkciją - komandą, kuri ne tik atlieka veiksmus bet ir pateikia (grąžina/duoda) rezultatą.", - "PROCEDURES_ALLOW_STATEMENTS": "leisti vidinius veiksmus", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Ši komanda turi du vienodus gaunamų duomenų pavadinimus.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Vykdyti sukurtą komandą \"%1\".", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Įvykdyti komandą \"%1\" ir naudoti jos suskaičiuotą (atiduotą) reikšmę.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "gaunami duomenys (parametrai)", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Tvarkyti komandos gaunamus duomenis (parametrus).", - "PROCEDURES_MUTATORARG_TITLE": "parametro pavadinimas:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Pridėti funkcijos parametrą (gaunamų duomenų pavadinimą).", - "PROCEDURES_CREATE_DO": "Sukurti \"%1\"", - "PROCEDURES_IFRETURN_TOOLTIP": "Jeigu pirma reikšmė yra teisinga (sąlyga tenkinama), grąžina antrą reikšmę.", - "PROCEDURES_IFRETURN_WARNING": "Perspėjimas: šis blokas gali būti naudojamas tik aprašant funkciją.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Kažką pasakykite...", - "DIALOG_OK": "Gerai", - "DIALOG_CANCEL": "Atšaukti" -} +{ + "@metadata": { + "authors": [ + "Eitvys200", + "Jurgis", + "Nuodas", + "Zygimantus" + ] + }, + "VARIABLES_DEFAULT_NAME": "elementas", + "TODAY": "Šiandien", + "DUPLICATE_BLOCK": "Kopijuoti", + "ADD_COMMENT": "Palikti komentarą", + "REMOVE_COMMENT": "Pašalinti komentarą", + "DUPLICATE_COMMENT": "Dubliuoti Komentarą", + "EXTERNAL_INPUTS": "Išdėstyti stulpeliu, kai daug parametrų", + "INLINE_INPUTS": "Išdėstyti vienoje eilutėje", + "DELETE_BLOCK": "Ištrinti bloką", + "DELETE_X_BLOCKS": "Ištrinti %1 blokus", + "DELETE_ALL_BLOCKS": "Ištrinti visus %1 blokus?", + "CLEAN_UP": "Išvalyti blokus", + "COLLAPSE_BLOCK": "Suskleisti bloką", + "COLLAPSE_ALL": "Suskleisti blokus", + "EXPAND_BLOCK": "Išskleisti bloką", + "EXPAND_ALL": "Išskleisti blokus", + "DISABLE_BLOCK": "Išjungti bloką", + "ENABLE_BLOCK": "Įjungti bloką", + "HELP": "Pagalba", + "UNDO": "Anuliuoti", + "REDO": "Atkurti", + "CHANGE_VALUE_TITLE": "Keisti reikšmę:", + "RENAME_VARIABLE": "Pervardyti kintamajį...", + "RENAME_VARIABLE_TITLE": "Pervadinti visus '%1' kintamuosius į:", + "NEW_VARIABLE": "Sukurti kintamąjį", + "NEW_NUMBER_VARIABLE": "Sukurti skaičiaus kintamąjį...", + "NEW_COLOUR_VARIABLE": "Sukurti spalvos kintamąjį...", + "NEW_VARIABLE_TYPE_TITLE": "Naujas kintamojo tipas:", + "NEW_VARIABLE_TITLE": "Naujo kintamojo pavadinimas:", + "VARIABLE_ALREADY_EXISTS": "Kintamasis, pavadinimu '%1', jau egzistuoja.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Kintamasis, pavadinimu '%1', jau egzistuoja kaip kitas tipas: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Ištrinti %1 '%2' panaudojimus?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Negalima ištrinti kintamojo '%1', nes jis yra dalis funkcijos '%2'", + "DELETE_VARIABLE": "Ištrinti „%1“ kintamąjį", + "COLOUR_PICKER_HELPURL": "https://lt.wikipedia.org/wiki/Spalva", + "COLOUR_PICKER_TOOLTIP": "Pasirinkti spalvą iš paletės.", + "COLOUR_RANDOM_TITLE": "atsitiktinė spalva", + "COLOUR_RANDOM_TOOLTIP": "Pasirinkti spalvą atsitiktinai.", + "COLOUR_RGB_TITLE": "spalva su", + "COLOUR_RGB_RED": "raudona", + "COLOUR_RGB_GREEN": "žalia", + "COLOUR_RGB_BLUE": "mėlyna", + "COLOUR_RGB_TOOLTIP": "Spalvą galima sudaryti iš raudonos, žalios ir mėlynos dedamųjų. Kiekvienos intensyvumas nuo 0 iki 100.", + "COLOUR_BLEND_TITLE": "sumaišyk", + "COLOUR_BLEND_COLOUR1": "1 spalva", + "COLOUR_BLEND_COLOUR2": "2 spalva", + "COLOUR_BLEND_RATIO": "santykis", + "COLOUR_BLEND_TOOLTIP": "Sumaišo dvi spalvas su pateiktu santykiu (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "pakartokite %1 kartus", + "CONTROLS_REPEAT_INPUT_DO": "daryti", + "CONTROLS_REPEAT_TOOLTIP": "Leidžia atlikti išvardintus veiksmus kelis kartus.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "kartok kol", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "kartok, kol pasieksi", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Kartoja veiksmus, kol sąlyga tenkinama.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Kartoja veiksmus, kol bus pasiekta nurodyta sąlyga.", + "CONTROLS_FOR_TOOLTIP": "Imama kintamoji '%1' reikšmė nuo pradinio skaičiaus iki pabaigos skaičiaus, skaičiuojant nustatytais intervalais ir atliekant nustatytus blokus.", + "CONTROLS_FOR_TITLE": "kartok, kai %1 kinta nuo %2 iki %3 po %4", + "CONTROLS_FOREACH_TITLE": "kartok su kiekvienu %1 iš sąrašo %2", + "CONTROLS_FOREACH_TOOLTIP": "Kartok veiksmus, kol kintamasis \"%1\" paeiliui gauna kiekvieną sąrašo reikšmę.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "nutraukti kartojimą", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "šį kartą praleisti likusius veiksmus ir tęsti kartojimą", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Nutraukia (artimiausią) vykstantį kartojimą.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Praleidžia žemiau išvardintus kartojimo veiksmus (ir tęsia darbą nuo kartojimo pradinio veiksmo).", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Atsargiai: šis blokas gali būt naudojamas tik kartojimo bloko viduje.", + "CONTROLS_IF_TOOLTIP_1": "Jeigu sąlyga tenkinama, tai atlik veiksmus.", + "CONTROLS_IF_TOOLTIP_2": "Jei sąlyga tenkinama, atlikti jai priklausančius veiksmus, o jei ne -- atlikti kitus nurodytus veiksmus.", + "CONTROLS_IF_TOOLTIP_3": "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus.", + "CONTROLS_IF_TOOLTIP_4": "Jei pirma sąlyga tenkinama, atlikti jai priklausančius veiksmus, O jei ne, tikrinti antrą sąlygą -- ir jei ši tenkinama, atlikti jos veiksmus. Kitais atvejais -- atlikti paskutinio bloko veiksmus.", + "CONTROLS_IF_MSG_IF": "jei", + "CONTROLS_IF_MSG_ELSEIF": "arba jei", + "CONTROLS_IF_MSG_ELSE": "kitu atveju", + "CONTROLS_IF_IF_TOOLTIP": "Galite pridėt/pašalinti/pertvarkyti sąlygų \"šakas\".", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Pridėti sąlygą „jei“ blokui.", + "CONTROLS_IF_ELSE_TOOLTIP": "Pridėti veiksmų vykdymo variantą/\"šaką\", kai netenkinama nė viena sąlyga.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Tenkinama, jei abu reiškiniai lygūs.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Grįžti tiesa, jeigu abi įvestys ne lygios tarpusavyje.", + "LOGIC_COMPARE_TOOLTIP_LT": "Grįžti tiesa, jei pirma įvestis mažesnė nei antra įvestis.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Grįžti tiesa, jei pirma įvestis mažesnė arba lygi antrajai įvesčiai.", + "LOGIC_COMPARE_TOOLTIP_GT": "Grįžti tiesa, jei pirmoji įvestis didesnė nei antroji įvestis.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Grįžti tiesa, jei pirma įvestis didesnė arba lygi antrajai įvesčiai.", + "LOGIC_OPERATION_TOOLTIP_AND": "Bus teisinga, kai abi sąlygos bus tenkinamos.", + "LOGIC_OPERATION_AND": "ir", + "LOGIC_OPERATION_TOOLTIP_OR": "Grįžti tiesa, jei bent viena įvestis teisinga.", + "LOGIC_OPERATION_OR": "arba", + "LOGIC_NEGATE_TITLE": "ne %1", + "LOGIC_NEGATE_TOOLTIP": "Grįžti tiesa, jei įvestis klaidinga. Grįžti klaidinga, jei įvestis teisinga.", + "LOGIC_BOOLEAN_TRUE": "tiesa", + "LOGIC_BOOLEAN_FALSE": "klaidinga", + "LOGIC_BOOLEAN_TOOLTIP": "Reikšmė gali būti \"teisinga\"/\"Taip\" arba \"klaidinga\"/\"Ne\".", + "LOGIC_NULL": "nieko", + "LOGIC_NULL_TOOLTIP": "Reikšmė nebuvo nurodyta...", + "LOGIC_TERNARY_CONDITION": "sąlyga", + "LOGIC_TERNARY_IF_TRUE": "jei taip", + "LOGIC_TERNARY_IF_FALSE": "jei ne", + "LOGIC_TERNARY_TOOLTIP": "Jeigu sąlygą tenkinama, grąžina pirmą reikšmę, o jei ne - antrąją.", + "MATH_NUMBER_HELPURL": "https://lt.wikipedia.org/wiki/Skaičius", + "MATH_NUMBER_TOOLTIP": "Skaičius.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Grąžina dviejų skaičių sumą.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Grąžina dviejų skaičių skirtumą.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Grąžina dviejų skaičių sandaugą.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Grąžina dviejų skaičių dalmenį.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Grąžina pirmą skaičių pakeltą laipsniu pagal antrą skaičių.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "kvadratinė šaknis", + "MATH_SINGLE_TOOLTIP_ROOT": "Grįžti kvadratinę šaknį iš skaičiaus.", + "MATH_SINGLE_OP_ABSOLUTE": "modulis", + "MATH_SINGLE_TOOLTIP_ABS": "Skaičiaus modulis - reikšmė be ženklo (panaikina minusą).", + "MATH_SINGLE_TOOLTIP_NEG": "Grąžina skaičiui priešingą skaičių.", + "MATH_SINGLE_TOOLTIP_LN": "Grąžinti skaičiaus natūrinį logaritmą.", + "MATH_SINGLE_TOOLTIP_LOG10": "Grįžti 10 pagrindinių logaritmų iš skaičiaus.", + "MATH_SINGLE_TOOLTIP_EXP": "Grąžinti skaičių laipsniu e.", + "MATH_SINGLE_TOOLTIP_POW10": "Grąžinti skaičių laipsniu 10.", + "MATH_TRIG_HELPURL": "https://lt.wikipedia.org/wiki/Trigonometrinės_funkcijos", + "MATH_TRIG_TOOLTIP_SIN": "Grąžinti laipsnio sinusą (ne radiano).", + "MATH_TRIG_TOOLTIP_COS": "Grąžinti laipsnio kosinusą (ne radiano).", + "MATH_TRIG_TOOLTIP_TAN": "Grąžinti laipsnio tangentą (ne radiano).", + "MATH_TRIG_TOOLTIP_ASIN": "Grąžinti skaičiaus arksinusą.", + "MATH_TRIG_TOOLTIP_ACOS": "Grąžinti skaičiaus arkkosinusą.", + "MATH_TRIG_TOOLTIP_ATAN": "Grąžinti skaičiaus arktangentą.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Grįžti viena iš pagrindinių konstantų: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (begalybė).", + "MATH_IS_EVEN": "yra lyginis", + "MATH_IS_ODD": "yra nelyginis", + "MATH_IS_PRIME": "yra pirminis", + "MATH_IS_WHOLE": "yra sveikasis", + "MATH_IS_POSITIVE": "yra teigiamas", + "MATH_IS_NEGATIVE": "yra neigiamas", + "MATH_IS_DIVISIBLE_BY": "yra dalus iš", + "MATH_IS_TOOLTIP": "Patikrina skaičiaus savybę: (ne)lyginis/pirminis/sveikasis/teigiamas/neigiamas/dalus iš x.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "padidink %1 (emptypage) %2", + "MATH_CHANGE_TOOLTIP": "Prideda skaičių prie kintamojo '%1'. Kai skaičius neigiamas - gaunasi atimtis.", + "MATH_ROUND_HELPURL": "https://lt.wikipedia.org/wiki/Apvalinimas", + "MATH_ROUND_TOOLTIP": "Suapvalinti skaičių į žemesnę ar aukštesnę reikšmę.", + "MATH_ROUND_OPERATOR_ROUND": "apvalink", + "MATH_ROUND_OPERATOR_ROUNDUP": "apvalink aukštyn", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "apvalink žemyn", + "MATH_ONLIST_OPERATOR_SUM": "suma", + "MATH_ONLIST_TOOLTIP_SUM": "didžiausia reikšmė", + "MATH_ONLIST_OPERATOR_MIN": "mažiausia reikšmė sąraše", + "MATH_ONLIST_TOOLTIP_MIN": "Grįžti mažiausiu skaičiumi sąraše.", + "MATH_ONLIST_OPERATOR_MAX": "didžiausia reikšmė sąraše", + "MATH_ONLIST_TOOLTIP_MAX": "Grįžti didžiausiu skaičiumi sąraše.", + "MATH_ONLIST_OPERATOR_AVERAGE": "vidurkis", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Grįžti vidurkiu (aritmetinis vidurkis) iš skaitinių reikšmių sąraše.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana sąrašui", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Grąžinti sąrašo medianą.", + "MATH_ONLIST_OPERATOR_MODE": "statistinė moda sąrašui", + "MATH_ONLIST_TOOLTIP_MODE": "Grąžinti sąrašą dažniausių elementų sąraše.", + "MATH_ONLIST_OPERATOR_STD_DEV": "standartinis nuokrypis sąraše", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Grįžti standartine pakraipa iš sąrašo.", + "MATH_ONLIST_OPERATOR_RANDOM": "atsitiktinis elementas iš sąrašo", + "MATH_ONLIST_TOOLTIP_RANDOM": "Grąžinti atsitiktinį elementą iš sąrašo.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "dalybos liekana %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Grįžti likučiu nuo dviejų skaičių dalybos.", + "MATH_CONSTRAIN_TITLE": "apribok %1 tarp %2 ir %3", + "MATH_CONSTRAIN_TOOLTIP": "Apriboti skaičių, kad būtų tarp nustatytų ribų (imtinai).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "atsitiktinis sveikas sk. nuo %1 iki %2", + "MATH_RANDOM_INT_TOOLTIP": "Grįžti atsitiktinį sveikąjį skaičių tarp dviejų nustatytų ribų, imtinai.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "atsitiktinė trupmena", + "MATH_RANDOM_FLOAT_TOOLTIP": "Atsitiktinė trupmena nuo 0 (imtinai) iki 1 (neimtinai).", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Tekstas (arba žodis, ar raidė)", + "TEXT_JOIN_TITLE_CREATEWITH": "sukurti tekstą su", + "TEXT_JOIN_TOOLTIP": "Sukurti teksto fragmentą sujungiant bet kokį skaičių fragmentų.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "sujunk", + "TEXT_CREATE_JOIN_TOOLTIP": "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Pridėti teksto elementą.", + "TEXT_APPEND_TITLE": "prie %1 pridėk tekstą %2", + "TEXT_APPEND_TOOLTIP": "Pridėti tekstą prie kintamojo '%1'.", + "TEXT_LENGTH_TITLE": "teksto %1 ilgis", + "TEXT_LENGTH_TOOLTIP": "Suranda teksto simbolių kiekį (įskaitant ir tarpus)", + "TEXT_ISEMPTY_TITLE": "%1 yra tuščias", + "TEXT_ISEMPTY_TOOLTIP": "Grįžti tiesa, jei numatytas tekstas tuščias.", + "TEXT_INDEXOF_TOOLTIP": "Grąžina pirmą/paskutinę pirmo teksto reikšmę antrame tekste. Grąžina %1, jei tekstas nerastas.", + "TEXT_INDEXOF_TITLE": "tekste %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "rask,kur pirmą kartą paminėta", + "TEXT_INDEXOF_OPERATOR_LAST": "rask,kur paskutinį kartą paminėta", + "TEXT_CHARAT_FROM_START": "gauti raidę #", + "TEXT_CHARAT_FROM_END": "raidė nuo galo #", + "TEXT_CHARAT_FIRST": "gauti pirmą raidę", + "TEXT_CHARAT_LAST": "gauti paskutinę raidę", + "TEXT_CHARAT_RANDOM": "gauti atsitiktinę raidę", + "TEXT_CHARAT_TOOLTIP": "Grąžina raidę į tam tikrą poziciją.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Grąžina tam tikrą teksto dalį.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "tekste", + "TEXT_GET_SUBSTRING_START_FROM_START": "dalis nuo raidės #", + "TEXT_GET_SUBSTRING_START_FROM_END": "dalis nuo raidės #", + "TEXT_GET_SUBSTRING_START_FIRST": "dalis nuo pradžios", + "TEXT_GET_SUBSTRING_END_FROM_START": "iki raidės #", + "TEXT_GET_SUBSTRING_END_FROM_END": "iki raidės nuo galo #", + "TEXT_GET_SUBSTRING_END_LAST": "iki pabaigos", + "TEXT_CHANGECASE_TOOLTIP": "Kitu atvėju, grąžina teksto kopiją.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": " DIDŽIOSIOM RAIDĖM", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": " mažosiom raidėm", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": " Pavadinimo Raidėmis", + "TEXT_TRIM_TOOLTIP": "Grąžina teksto kopiją, pašalinus tarpus iš vieno ar abiejų kraštų.", + "TEXT_TRIM_OPERATOR_BOTH": "išvalyk tarpus šonuose", + "TEXT_TRIM_OPERATOR_LEFT": "išvalyk tarpus pradžioje", + "TEXT_TRIM_OPERATOR_RIGHT": "išvalyk tarpus pabaigoje", + "TEXT_PRINT_TITLE": "spausdinti %1", + "TEXT_PRINT_TOOLTIP": "Spausdinti nurodytą tekstą, skaičių ar kitą reikšmę.", + "TEXT_PROMPT_TYPE_TEXT": "paprašyk įvesti tekstą :", + "TEXT_PROMPT_TYPE_NUMBER": "paprašyk įvesti skaičių :", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Prašyti vartotoją įvesti skaičių.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Prašyti vartotoją įvesti tekstą.", + "TEXT_COUNT_MESSAGE0": "skaičius %1 iš %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Suskaičiuoti, kiek kartų šis tekstas kartojasi kitame tekste.", + "TEXT_REPLACE_MESSAGE0": "pakeisti %1 į %2 šiame %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Pašalinti visas teksto dalis kitame tekste.", + "TEXT_REVERSE_MESSAGE0": "atbulai %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REVERSE_TOOLTIP": "Apversti teksto simbolių tvarką.", + "LISTS_CREATE_EMPTY_TITLE": "tuščias sąrašas", + "LISTS_CREATE_EMPTY_TOOLTIP": "Grąžina sąrašą, ilgio 0, neturintį duomenų", + "LISTS_CREATE_WITH_TOOLTIP": "Sukurti sąrašą iš bet kokio skaičiaus elementų.", + "LISTS_CREATE_WITH_INPUT_WITH": "sukurti sąrašą su", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "sąrašas", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Pridėti, pašalinti arba paskirstyti skyrius, kad pertvarkyti šį teksto bloką.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Pridėti elementą į sąrašą.", + "LISTS_REPEAT_TITLE": "sukurk sąrašą, kuriame %1 bus %2 kartus", + "LISTS_LENGTH_TITLE": "ilgis %1", + "LISTS_LENGTH_TOOLTIP": "Grąžina sąrašo ilgį.", + "LISTS_ISEMPTY_TITLE": "%1 yra tuščias", + "LISTS_ISEMPTY_TOOLTIP": "Grąžina „true“, jeigu sąrašas tuščias.", + "LISTS_INLIST": "sąraše", + "LISTS_INDEX_OF_FIRST": "rask pirmą reikšmę", + "LISTS_INDEX_OF_LAST": "rask paskutinę reikšmę", + "LISTS_INDEX_OF_TOOLTIP": "Grąžina pirmos/paskutinės reikšmės eilės nr. sąraše. Grąžina %1, jei reikšmės neranda.", + "LISTS_GET_INDEX_GET": "paimk", + "LISTS_GET_INDEX_GET_REMOVE": "paimk ir ištrink", + "LISTS_GET_INDEX_REMOVE": "pašalinti", + "LISTS_GET_INDEX_FROM_END": "# nuo galo", + "LISTS_GET_INDEX_FIRST": "pirmas", + "LISTS_GET_INDEX_LAST": "paskutinis", + "LISTS_GET_INDEX_RANDOM": "atsitiktinis", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 yra pirmasis objektas.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 yra paskutinis objektas.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Gražina objektą į nurodyta poziciją sąraše.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Grąžina pirmąjį sąrašo elementą.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Grąžina paskutinį elementą iš sąrašo.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Grąžina atsitiktinį elementą iš sąrašo.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Pašalina objektą iš nurodytos vietos sąraše.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Pašalina pirmą objektą sąraše.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Pašalina paskutinį objektą sąraše.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Pašalina atsitiktinį objektą sąraše.", + "LISTS_SET_INDEX_SET": "priskirk elementui", + "LISTS_SET_INDEX_INSERT": "įterpk į vietą", + "LISTS_SET_INDEX_INPUT_TO": "kaip", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Įterpią objektą į nurodytą poziciją sąraše.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Įterpia objektą į sąrašo pradžią.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Įterpia objektą į atsitiktinę sąrašo vietą.", + "LISTS_GET_SUBLIST_START_FROM_START": "sąrašo dalis nuo #", + "LISTS_GET_SUBLIST_START_FROM_END": "sąrašo dalis nuo # nuo galo", + "LISTS_GET_SUBLIST_START_FIRST": "sąrašo dalis nuo pradžios", + "LISTS_GET_SUBLIST_END_FROM_START": "iki #", + "LISTS_GET_SUBLIST_END_FROM_END": "iki # nuo galo", + "LISTS_GET_SUBLIST_END_LAST": "iki galo", + "LISTS_GET_SUBLIST_TOOLTIP": "Sukuria nurodytos sąrašo dalies kopiją.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "rūšiuoti %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Rūšiuoti sąrašo kopiją.", + "LISTS_SORT_ORDER_ASCENDING": "didėjančia tvarka", + "LISTS_SORT_ORDER_DESCENDING": "mažėjančia tvarka", + "LISTS_SORT_TYPE_NUMERIC": "skaitmeninis", + "LISTS_SORT_TYPE_TEXT": "abėcėlės", + "LISTS_SORT_TYPE_IGNORECASE": "abecėlės, ignoruoti raidžių dydį", + "LISTS_SPLIT_WITH_DELIMITER": "su dalikliu", + "VARIABLES_GET_CREATE_SET": "Sukurk \"priskirk %1\"", + "VARIABLES_SET": "priskirk %1 = %2", + "VARIABLES_SET_CREATE_GET": "Sukurti 'kintamasis %1'", + "PROCEDURES_DEFNORETURN_TITLE": "komanda:", + "PROCEDURES_DEFNORETURN_PROCEDURE": "daryk kažką", + "PROCEDURES_BEFORE_PARAMS": "pagal:", + "PROCEDURES_CALL_BEFORE_PARAMS": "su:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Sukuria procedūrą - komandą, kuri nepateikia jokio rezultato (tik atlieka veiksmus).", + "PROCEDURES_DEFNORETURN_COMMENT": "Apibūdinkite šią funkciją...", + "PROCEDURES_DEFRETURN_RETURN": "duok", + "PROCEDURES_DEFRETURN_TOOLTIP": "Sukuria funkciją - komandą, kuri ne tik atlieka veiksmus bet ir pateikia (grąžina/duoda) rezultatą.", + "PROCEDURES_ALLOW_STATEMENTS": "leisti vidinius veiksmus", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Ši komanda turi du vienodus gaunamų duomenų pavadinimus.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Vykdyti sukurtą komandą \"%1\".", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Įvykdyti komandą \"%1\" ir naudoti jos suskaičiuotą (atiduotą) reikšmę.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "gaunami duomenys (parametrai)", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Tvarkyti komandos gaunamus duomenis (parametrus).", + "PROCEDURES_MUTATORARG_TITLE": "parametro pavadinimas:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Pridėti funkcijos parametrą (gaunamų duomenų pavadinimą).", + "PROCEDURES_CREATE_DO": "Sukurti \"%1\"", + "PROCEDURES_IFRETURN_TOOLTIP": "Jeigu pirma reikšmė yra teisinga (sąlyga tenkinama), grąžina antrą reikšmę.", + "PROCEDURES_IFRETURN_WARNING": "Perspėjimas: šis blokas gali būti naudojamas tik aprašant funkciją.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Kažką pasakykite...", + "DIALOG_OK": "Gerai", + "DIALOG_CANCEL": "Atšaukti" +} diff --git a/msg/json/lv.json b/msg/json/lv.json index 04ae055e6b9..4dd686946a0 100644 --- a/msg/json/lv.json +++ b/msg/json/lv.json @@ -1,339 +1,339 @@ -{ - "@metadata": { - "authors": [ - "Elomage", - "Janis", - "Papuass", - "Peridot Nation", - "RFenichel", - "Silraks" - ] - }, - "VARIABLES_DEFAULT_NAME": "vienums", - "UNNAMED_KEY": "nenosaukts", - "TODAY": "Šodiena", - "DUPLICATE_BLOCK": "Dublēt", - "ADD_COMMENT": "Pievienot komentāru", - "REMOVE_COMMENT": "Noņemt komentāru", - "DUPLICATE_COMMENT": "Izveidot komentāra duplikātu", - "EXTERNAL_INPUTS": "Ārējie ievaddati", - "INLINE_INPUTS": "Iekšējie ievaddati", - "DELETE_BLOCK": "Izmest bloku", - "DELETE_X_BLOCKS": "Izmest %1 blokus", - "DELETE_ALL_BLOCKS": "Izdzēst visus %1 blokus?", - "CLEAN_UP": "Sakopt blokus", - "COLLAPSE_BLOCK": "Sakļaut bloku", - "COLLAPSE_ALL": "Sakļaut blokus", - "EXPAND_BLOCK": "Izvērst bloku", - "EXPAND_ALL": "Izvērst blokus", - "DISABLE_BLOCK": "Atspējot bloku", - "ENABLE_BLOCK": "Iespējot bloku", - "HELP": "Palīdzība", - "UNDO": "Atsaukt", - "REDO": "Atcelt atsaukšanu", - "CHANGE_VALUE_TITLE": "Mainīt vērtību:", - "RENAME_VARIABLE": "Pārdēvēt mainīgo...", - "RENAME_VARIABLE_TITLE": "Pārdēvējiet visus '%1' mainīgos:", - "NEW_VARIABLE": "Izveidot mainīgo...", - "NEW_STRING_VARIABLE": "Izveidot virknes mainīgo...", - "NEW_NUMBER_VARIABLE": "Izveidot skaitļa mainīgo...", - "NEW_COLOUR_VARIABLE": "Izveidot krāsas mainīgo...", - "NEW_VARIABLE_TYPE_TITLE": "Jauns mainīgā tips:", - "NEW_VARIABLE_TITLE": "Jaunā mainīgā vārds:", - "VARIABLE_ALREADY_EXISTS": "Mainīgais '%1' jau eksistē.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Mainīgais ar nosaukumu '%1' jau pastāv citam tipam: '%2'", - "DELETE_VARIABLE_CONFIRMATION": "Mainīgais \"%2\" tiek izmantots %1 vietās. Dzēst?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nevar izdzēst mainīgo '%1', jo tā ir daļa no funkcijas '%2' definīcijas.", - "DELETE_VARIABLE": "Izdzēst mainīgo \"%1\"", - "COLOUR_PICKER_HELPURL": "https://lv.wikipedia.org/wiki/Krāsa", - "COLOUR_PICKER_TOOLTIP": "Izvēlēties krāsu no paletes.", - "COLOUR_RANDOM_TITLE": "nejauša krāsa", - "COLOUR_RANDOM_TOOLTIP": "Izvēlēties krāsu pēc nejaušības principa.", - "COLOUR_RGB_TITLE": "veido krāsu no", - "COLOUR_RGB_RED": "sarkana", - "COLOUR_RGB_GREEN": "zaļa", - "COLOUR_RGB_BLUE": "zila", - "COLOUR_RGB_TOOLTIP": "Izveidot krāsu ar norādīto daudzumu sarkanā, zaļā un zilā toņu. Visas vērtības ir starp 0 un 100.", - "COLOUR_BLEND_TITLE": "sajaukt", - "COLOUR_BLEND_COLOUR1": "1. krāsa", - "COLOUR_BLEND_COLOUR2": "2. krāsa", - "COLOUR_BLEND_RATIO": "attiecība", - "COLOUR_BLEND_TOOLTIP": "Sajauc kopā divas krāsas ar doto attiecību (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://lv.wikipedia.org/wiki/Cikls", - "CONTROLS_REPEAT_TITLE": "atkārtot %1 reizes", - "CONTROLS_REPEAT_INPUT_DO": "izpildi", - "CONTROLS_REPEAT_TOOLTIP": "Izpildīt komandas vairākas reizes.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "atkārtot kamēr", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "atkārtot līdz", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Izpildīt komandas, kamēr vērtība ir patiesa.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Izpildīt komandas, kamēr vērtība ir nepatiesa.", - "CONTROLS_FOR_TOOLTIP": "Ļauj mainīgajam '%1' pieņemt vērtības no sākuma līdz beigu vērtībai, un izpildīt iekļautos blokus katrai no šīm pieņemtajām vērtībām.", - "CONTROLS_FOR_TITLE": "skaitīt %1 no %2 līdz %3 ar soli %4", - "CONTROLS_FOREACH_TITLE": "visiem %1 no saraksta %2", - "CONTROLS_FOREACH_TOOLTIP": "Katram objektam no saraksta piešķirt mainīgajam '%1' šo objektu un izpildīt komandas.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "iet ārā no cikla", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "turpināt ar cikla nākamo iterāciju", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Iet ārā no iekļaujošā cikla", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Nepildīt atlikušo cikla daļu bet sākt nākamo iterāciju.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Brīdinājums: šo bloku drīkst izmantot tikai cikla iekšienē.", - "CONTROLS_IF_TOOLTIP_1": "Ja vērtība ir patiesa, tad izpildīt komandas.", - "CONTROLS_IF_TOOLTIP_2": "Ja vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi izpildīt otro bloku ar komandām.", - "CONTROLS_IF_TOOLTIP_3": "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām.", - "CONTROLS_IF_TOOLTIP_4": "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām. Ja neviena no vertībām nav patiesa, tad izpildīt pēdējo bloku ar komandām.", - "CONTROLS_IF_MSG_IF": "ja", - "CONTROLS_IF_MSG_ELSEIF": "citādi, ja", - "CONTROLS_IF_MSG_ELSE": "citādi", - "CONTROLS_IF_IF_TOOLTIP": "Pievienot, noņemt vai mainīt sekciju secību šim \"ja\" blokam.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Pievienot nosacījumu \"ja\" blokam.", - "CONTROLS_IF_ELSE_TOOLTIP": "Pievienot gala nosacījumu \"ja\" blokam.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Patiess, ja abas puses ir vienādas.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Patiess, ja abas puses nav vienādas.", - "LOGIC_COMPARE_TOOLTIP_LT": "Patiess, ja kreisā puse ir mazāka par labo pusi.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Patiess, ja kreisā puse ir mazāka vai vienāda ar labo pusi.", - "LOGIC_COMPARE_TOOLTIP_GT": "Patiess, ja kreisā puse ir lielāka par labo pusi.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Patiess, ja kreisā puse ir lielāka vai vienāda ar labo pusi.", - "LOGIC_OPERATION_TOOLTIP_AND": "Patiess, ja abas puses ir patiesas.", - "LOGIC_OPERATION_AND": "un", - "LOGIC_OPERATION_TOOLTIP_OR": "Patiess, ja vismaz viena puse ir patiesa.", - "LOGIC_OPERATION_OR": "vai", - "LOGIC_NEGATE_TITLE": "ne %1", - "LOGIC_NEGATE_TOOLTIP": "Patiess, ja arguments ir aplams.", - "LOGIC_BOOLEAN_TRUE": "patiess", - "LOGIC_BOOLEAN_FALSE": "aplams", - "LOGIC_BOOLEAN_TOOLTIP": "Atgriež rezultātu \"patiess\" vai \"aplams\".", - "LOGIC_NULL": "nekas", - "LOGIC_NULL_TOOLTIP": "Atgriež neko.", - "LOGIC_TERNARY_CONDITION": "nosacījums", - "LOGIC_TERNARY_IF_TRUE": "ja patiess", - "LOGIC_TERNARY_IF_FALSE": "ja aplams", - "LOGIC_TERNARY_TOOLTIP": "Pārbaudīt nosacījumu. Ja 'nosacījums' ir patiess, atgriež vērtību 'ja patiess', pretējā gadījumā vērtību 'ja aplams'.", - "MATH_NUMBER_HELPURL": "https://lv.wikipedia.org/wiki/Skaitlis", - "MATH_NUMBER_TOOLTIP": "Skaitlis.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Atgriež divu skaitļu summu.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Atgriež divu skaitļu starpību.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Atgriež divu skaitļu reizinājumu.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Atgriež divu skaitļu dalījumu.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Atgriež pirmo skaitli kāpinātu pakāpē otrais skaitlis.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "kvadrātsakne", - "MATH_SINGLE_TOOLTIP_ROOT": "Atgriež skaitļa kvadrātsakni.", - "MATH_SINGLE_OP_ABSOLUTE": "absolūtā vērtība", - "MATH_SINGLE_TOOLTIP_ABS": "Atgriež skaitļa absolūto vērtību.", - "MATH_SINGLE_TOOLTIP_NEG": "Atgriež pretējo skaitli.", - "MATH_SINGLE_TOOLTIP_LN": "Atgriež skaitļa naturālo logaritmu.", - "MATH_SINGLE_TOOLTIP_LOG10": "Atgriež skaitļa logaritmu pie bāzes 10.", - "MATH_SINGLE_TOOLTIP_EXP": "Atgriež e pakāpē dotais skaitlis.", - "MATH_SINGLE_TOOLTIP_POW10": "Atgriež 10 pakāpē dotais skaitlis.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Sinuss no grādiem (nevis radiāniem).", - "MATH_TRIG_TOOLTIP_COS": "Kosinuss no grādiem (nevis radiāniem).", - "MATH_TRIG_TOOLTIP_TAN": "Tangenss no grādiem (nevis radiāniem).", - "MATH_TRIG_TOOLTIP_ASIN": "Arksinuss (grādos).", - "MATH_TRIG_TOOLTIP_ACOS": "Arkkosinuss (grādos).", - "MATH_TRIG_TOOLTIP_ATAN": "Arktangenss (grādos).", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Atgriež kādu no matemātikas konstantēm: π (3.141…), e (2.718…), φ (1.618…), √(2) (1.414…), √(½) (0.707…), ∞ (bezgalība).", - "MATH_IS_EVEN": "ir pāra", - "MATH_IS_ODD": "ir nepāra", - "MATH_IS_PRIME": "ir pirmskaitlis", - "MATH_IS_WHOLE": "ir vesels", - "MATH_IS_POSITIVE": "ir pozitīvs", - "MATH_IS_NEGATIVE": "ir negatīvs", - "MATH_IS_DIVISIBLE_BY": "dalās bez atlikuma ar", - "MATH_IS_TOOLTIP": "Pārbauda, vai skaitlis ir pāra, nepāra, vesels, pozitīvs, negatīvs vai dalās ar noteiktu skaitli. Atgriež \"patiess\" vai \"aplams\".", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "izmainīt %1 par %2", - "MATH_CHANGE_TOOLTIP": "Pieskaitīt doto skaitli mainīgajam '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Noapaļot skaitli uz augšu vai uz leju.", - "MATH_ROUND_OPERATOR_ROUND": "noapaļot", - "MATH_ROUND_OPERATOR_ROUNDUP": "apaļot uz augšu", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "apaļot uz leju", - "MATH_ONLIST_OPERATOR_SUM": "summa", - "MATH_ONLIST_TOOLTIP_SUM": "Saskaitīt visus skaitļus no dotā saraksta.", - "MATH_ONLIST_OPERATOR_MIN": "mazākais", - "MATH_ONLIST_TOOLTIP_MIN": "Atgriež mazāko vērtību no saraksta.", - "MATH_ONLIST_OPERATOR_MAX": "lielākais", - "MATH_ONLIST_TOOLTIP_MAX": "Atgriež lielāko vērtību no saraksta.", - "MATH_ONLIST_OPERATOR_AVERAGE": "vidējais", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Atgriež dotā saraksta vidējo aritmētisko vērtību.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediāna", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Atgriež dotā saraksta mediānas vērtību.", - "MATH_ONLIST_OPERATOR_MODE": "moda", - "MATH_ONLIST_TOOLTIP_MODE": "Atgriež dotā saraksta biežāk sastopamās vērtības (modas).", - "MATH_ONLIST_OPERATOR_STD_DEV": "standartnovirze", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Atgriež dotā saraksta standartnovirzi.", - "MATH_ONLIST_OPERATOR_RANDOM": "nejaušs", - "MATH_ONLIST_TOOLTIP_RANDOM": "Atgriež nejauši izvēlētu vērtību no dotā saraksta.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "atlikums no %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Atlikums no divu skaitļu dalījuma.", - "MATH_CONSTRAIN_TITLE": "ierobežot %1 no %2 līdz %3", - "MATH_CONSTRAIN_TOOLTIP": "Ierobežo skaitli no noteiktajās robežās (ieskaitot galapunktus).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "nejaušs vesels skaitlis no %1 līdz %2", - "MATH_RANDOM_INT_TOOLTIP": "Atgriež nejaušu veselu skaitli dotajās robežās (iekļaujot galapunktus)", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "nejaušs skaitlis [0..1)", - "MATH_RANDOM_FLOAT_TOOLTIP": "Atgriež nejaušu reālo skaitli robežās no 0 (iekļaujot) līdz 1 (neiekļaujot).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "ATAN2 no X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Atgriezt arktangensu punktam (X, Y) grādos no -180 līdz 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Burts, vārds vai jebkāda teksta rinda.", - "TEXT_JOIN_TITLE_CREATEWITH": "veidot tekstu no", - "TEXT_JOIN_TOOLTIP": "Izveidot tekstu savienojot dotos argumentus.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "savienot", - "TEXT_CREATE_JOIN_TOOLTIP": "Pievienot, noņemt vai mainīt sekciju secību šim \"teksta\" blokam.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Pievienot tekstam objektu.", - "TEXT_APPEND_TITLE": "tekstam %1 pievienot tekstu %2", - "TEXT_APPEND_TOOLTIP": "Pievienot tekstu mainīgajam '%1'.", - "TEXT_LENGTH_TITLE": "garums tekstam %1", - "TEXT_LENGTH_TOOLTIP": "Atgriež burtu skaitu (ieskaitot atstarpes) dotajā tekstā.", - "TEXT_ISEMPTY_TITLE": "%1 ir tukšs", - "TEXT_ISEMPTY_TOOLTIP": "Patiess, ja teksts ir tukšs.", - "TEXT_INDEXOF_TOOLTIP": "Meklē pirmā teksta rindu otrajā tekstā. Atgriež pozīciju otrajā tekstā, kurā sākas pirmais teksts. Atgriež %1 ja pirmā teksta rinda nav atrasta.", - "TEXT_INDEXOF_TITLE": "tekstā %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "meklēt pirmo vietu, kur sākas teksts", - "TEXT_INDEXOF_OPERATOR_LAST": "meklēt pēdējo vietu, kur sākas teksts", - "TEXT_CHARAT_TITLE": "tekstā %1 %2", - "TEXT_CHARAT_FROM_START": "paņemt burtu #", - "TEXT_CHARAT_FROM_END": "paņemt no beigām burtu #", - "TEXT_CHARAT_FIRST": "paņemt pirmo burtu", - "TEXT_CHARAT_LAST": "paņemt pēdējo burtu", - "TEXT_CHARAT_RANDOM": "paņemt nejaušu burtu", - "TEXT_CHARAT_TOOLTIP": "Atgriež burtu dotajā pozīcijā.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Atgriež norādīto teksta daļu.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "no teksta", - "TEXT_GET_SUBSTRING_START_FROM_START": "paņemt apakšvirkni sākot no burta nr", - "TEXT_GET_SUBSTRING_START_FROM_END": "paņemt apakšvirkni no beigām sākot ar burta nr", - "TEXT_GET_SUBSTRING_START_FIRST": "paņemt apakšvirkni no sākuma", - "TEXT_GET_SUBSTRING_END_FROM_START": "līdz burtam nr", - "TEXT_GET_SUBSTRING_END_FROM_END": "līdz burtam nr (no beigām)", - "TEXT_GET_SUBSTRING_END_LAST": "līdz pēdējam burtam", - "TEXT_CHANGECASE_TOOLTIP": "Atgriež teksta kopiju ar mainītiem lielajiem/mazajiem burtiem.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "kā LIELIE BURTI", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "kā mazie burti", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "kā Nosaukuma Burti", - "TEXT_TRIM_TOOLTIP": "Atgriež teksta kopiju ar noņemtām atstarpēm vienā vai otrā galā.", - "TEXT_TRIM_OPERATOR_BOTH": "Dzēst atstarpes no abām pusēm", - "TEXT_TRIM_OPERATOR_LEFT": "Dzēst atstarpes no sākuma", - "TEXT_TRIM_OPERATOR_RIGHT": "Dzēst atstarpes no beigām", - "TEXT_PRINT_TITLE": "parādīt %1", - "TEXT_PRINT_TOOLTIP": "Parādīt norādīto tekstu vai skaitli.", - "TEXT_PROMPT_TYPE_TEXT": "palūgt ievadīt tekstu ar ziņu", - "TEXT_PROMPT_TYPE_NUMBER": "palūgt ievadīt skaitli ar ziņu", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Palūgt lietotāju ievadīt skaitli.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Palūgt lietotāju ievadīt tekstu.", - "TEXT_COUNT_MESSAGE0": "skaitīt %1 iekš %2", - "TEXT_COUNT_TOOLTIP": "Saskaitīt, cik reizes kāds teksts atrodas iekš kāda cita teksta.", - "TEXT_REPLACE_MESSAGE0": "apmainīt %1 ar %2 iekš %3", - "TEXT_REPLACE_TOOLTIP": "Apmainīt kāda teksta fragmentus citā tekstā.", - "TEXT_REVERSE_MESSAGE0": "apgriezt otrādi %1", - "TEXT_REVERSE_TOOLTIP": "Apgriež otrādi teksta rakstzīmju kārtu.", - "LISTS_CREATE_EMPTY_TITLE": "izveidot tukšu sarakstu", - "LISTS_CREATE_EMPTY_TOOLTIP": "Izveidot sarakstu bez elementiem tajā.", - "LISTS_CREATE_WITH_TOOLTIP": "Izveidot sarakstu no jebkura skaita vienību.", - "LISTS_CREATE_WITH_INPUT_WITH": "izveidot sarakstu no", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "saraksts", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Pievienot, noņemt vai mainīt sekciju secību šim \"saraksta\" blokam.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Pievienot objektu sarakstam.", - "LISTS_REPEAT_TOOLTIP": "Izveido sarakstu, kas sastāv no dotās vērtības noteiktu reižu skaita.", - "LISTS_REPEAT_TITLE": "saraksts no %1 atkārtots %2 reizes", - "LISTS_LENGTH_TITLE": "%1 garums", - "LISTS_LENGTH_TOOLTIP": "Atgriež elementu skaitu srakstā.", - "LISTS_ISEMPTY_TITLE": "%1 ir tukšs", - "LISTS_ISEMPTY_TOOLTIP": "Patiess, ja saraksts ir tukšs.", - "LISTS_INLIST": "sarakstā", - "LISTS_INDEX_OF_FIRST": "atrast pirmo elementu, kas vienāds ar", - "LISTS_INDEX_OF_LAST": "atrast pēdējo elementu, kas vienāds ar", - "LISTS_INDEX_OF_TOOLTIP": "Atgriež pozīciju sarakstā, kurā atrodas dotais objekts. Atgriež %1 ja objekts neatrodas sarakstā.", - "LISTS_GET_INDEX_GET": "paņemt", - "LISTS_GET_INDEX_GET_REMOVE": "paņemt uz dzēst", - "LISTS_GET_INDEX_REMOVE": "dzēst", - "LISTS_GET_INDEX_FROM_END": "no beigām numur", - "LISTS_GET_INDEX_FIRST": "pirmo", - "LISTS_GET_INDEX_LAST": "pēdējo", - "LISTS_GET_INDEX_RANDOM": "nejauši izvēlētu", - "LISTS_INDEX_FROM_START_TOOLTIP": "Saraksta elementu numerācija sākas no %1", - "LISTS_INDEX_FROM_END_TOOLTIP": "Saraksta elementu numerācija no beigām sākas no %1", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Atgriež norādīto elementu no saraksta.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Atgriež pirmo saraksta elementu.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Atgriež pēdējo saraksta elementu.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Atgriež nejauši izvēlētu saraksta elementu", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Atgriež un izdzēš no saraksta norādīto elementu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Atgriež un izdzēš saraksta pirmo elementu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Atgriež un izdzēš saraksta pēdējo elementu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Atgriež un izdzēš no saraksta nejauši izvēlētu elementu.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Izdēš norādīto elementu no saraksta.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Izdēš pirmo saraksta elementu.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Izdēš pēdējo saraksta elementu.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Izdzēš no saraksta nejauši izvēlētu elementu.", - "LISTS_SET_INDEX_SET": "aizvieto", - "LISTS_SET_INDEX_INSERT": "ievieto", - "LISTS_SET_INDEX_INPUT_TO": "kā", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Aizvieto sarakstā elementu norādītajā pozīcijā.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Aizvieto elementu saraksta sākumā.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Aizvieto elementu saraksta beigās.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Aizvieto sarakstā elementu nejauši izvēlētā pozīcijā.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ievieto sarakstā elementu norādītajā pozīcijā.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ievieto elementu saraksta sākumā.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Pievieno elementu saraksta beigās.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ievieto sarakstā jaunu elementu nejauši izvēlētā pozīcijā.", - "LISTS_GET_SUBLIST_START_FROM_START": "paņemt apakšsarakstu no pozīcijas", - "LISTS_GET_SUBLIST_START_FROM_END": "paņemt apakšsarakstu no beigām no pozīcijas", - "LISTS_GET_SUBLIST_START_FIRST": "paņemt apakšsarakstu no sākuma", - "LISTS_GET_SUBLIST_END_FROM_START": "līdz pozīcijai", - "LISTS_GET_SUBLIST_END_FROM_END": "līdz pozīcijai no beigām", - "LISTS_GET_SUBLIST_END_LAST": "līdz beigām", - "LISTS_GET_SUBLIST_TOOLTIP": "Nokopēt daļu no dotā saraksta.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "Sakārtot sarakstu no %3 elementiem %2 secībā %1", - "LISTS_SORT_TOOLTIP": "Saraksta sakārtota kopija.", - "LISTS_SORT_ORDER_ASCENDING": "augošā", - "LISTS_SORT_ORDER_DESCENDING": "dilstošā", - "LISTS_SORT_TYPE_NUMERIC": "skaitliski", - "LISTS_SORT_TYPE_TEXT": "pēc alfabēta", - "LISTS_SORT_TYPE_IGNORECASE": "pēc alfabēta, ignorēt mazos/lielos burtus", - "LISTS_SPLIT_LIST_FROM_TEXT": "vārdu saraksts no teksta", - "LISTS_SPLIT_TEXT_FROM_LIST": "izveidot tekstu no saraksta", - "LISTS_SPLIT_WITH_DELIMITER": "ar atdalītāju", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Sadalīt tekstu vārdos izmantojot atdalītāju.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Apvienot tekstu izmantojot atdalītāju.", - "LISTS_REVERSE_MESSAGE0": "apgriezt otrādi %1", - "LISTS_REVERSE_TOOLTIP": "Apgriezt otrādi saraksta kopiju", - "VARIABLES_GET_TOOLTIP": "Atgriež mainīgā vērtību.", - "VARIABLES_GET_CREATE_SET": "Izveidot piešķiršanu mainīgajam %1", - "VARIABLES_SET": "piešķirt mainīgajam %1 vērtību %2", - "VARIABLES_SET_TOOLTIP": "Piešķirt mainīgajam vērtību.", - "VARIABLES_SET_CREATE_GET": "Izveidot 'ņem %1'", - "PROCEDURES_DEFNORETURN_TITLE": "funkcija", - "PROCEDURES_DEFNORETURN_PROCEDURE": "darīt kaut ko", - "PROCEDURES_BEFORE_PARAMS": "ar:", - "PROCEDURES_CALL_BEFORE_PARAMS": "ar:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Izveido funkciju, kas neatgriež rezultātu.", - "PROCEDURES_DEFNORETURN_COMMENT": "Funkcijas apraksts...", - "PROCEDURES_DEFRETURN_RETURN": "atgriezt", - "PROCEDURES_DEFRETURN_TOOLTIP": "Izveido funkciju, kas atgriež rezultātu.", - "PROCEDURES_ALLOW_STATEMENTS": "atļaut apakškomandas", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Brīdinājums: funkcijai ir vienādi argumenti.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Izpildīt iepriekš definētu funkcju '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Izpildīt iepriekš definētu funkcju '%1' un izmantot tās rezultātu.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "argumenti", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Pievienot, pārkārtot vai dzēst funkcijas argumentus.", - "PROCEDURES_MUTATORARG_TITLE": "arguments:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Pievienot funkcijai argumentu.", - "PROCEDURES_HIGHLIGHT_DEF": "Izcelt funkcijas definīciju", - "PROCEDURES_CREATE_DO": "Izveidot '%1' izsaukumu", - "PROCEDURES_IFRETURN_TOOLTIP": "Ja pirmā vērtība ir \"patiesa\", tad atgriezt otro vērtību.", - "PROCEDURES_IFRETURN_WARNING": "Brīdinājums: Šo bloku var izmantot tikai funkcijas definīcijā.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Saki kaut ko...", - "WORKSPACE_ARIA_LABEL": "Blockly Darbavieta", - "COLLAPSED_WARNINGS_WARNING": "Sakļautie bloki satur brīdinājumus.", - "DIALOG_OK": "Labi", - "DIALOG_CANCEL": "Atcelt" -} +{ + "@metadata": { + "authors": [ + "Elomage", + "Janis", + "Papuass", + "Peridot Nation", + "RFenichel", + "Silraks" + ] + }, + "VARIABLES_DEFAULT_NAME": "vienums", + "UNNAMED_KEY": "nenosaukts", + "TODAY": "Šodiena", + "DUPLICATE_BLOCK": "Dublēt", + "ADD_COMMENT": "Pievienot komentāru", + "REMOVE_COMMENT": "Noņemt komentāru", + "DUPLICATE_COMMENT": "Izveidot komentāra duplikātu", + "EXTERNAL_INPUTS": "Ārējie ievaddati", + "INLINE_INPUTS": "Iekšējie ievaddati", + "DELETE_BLOCK": "Izmest bloku", + "DELETE_X_BLOCKS": "Izmest %1 blokus", + "DELETE_ALL_BLOCKS": "Izdzēst visus %1 blokus?", + "CLEAN_UP": "Sakopt blokus", + "COLLAPSE_BLOCK": "Sakļaut bloku", + "COLLAPSE_ALL": "Sakļaut blokus", + "EXPAND_BLOCK": "Izvērst bloku", + "EXPAND_ALL": "Izvērst blokus", + "DISABLE_BLOCK": "Atspējot bloku", + "ENABLE_BLOCK": "Iespējot bloku", + "HELP": "Palīdzība", + "UNDO": "Atsaukt", + "REDO": "Atcelt atsaukšanu", + "CHANGE_VALUE_TITLE": "Mainīt vērtību:", + "RENAME_VARIABLE": "Pārdēvēt mainīgo...", + "RENAME_VARIABLE_TITLE": "Pārdēvējiet visus '%1' mainīgos:", + "NEW_VARIABLE": "Izveidot mainīgo...", + "NEW_STRING_VARIABLE": "Izveidot virknes mainīgo...", + "NEW_NUMBER_VARIABLE": "Izveidot skaitļa mainīgo...", + "NEW_COLOUR_VARIABLE": "Izveidot krāsas mainīgo...", + "NEW_VARIABLE_TYPE_TITLE": "Jauns mainīgā tips:", + "NEW_VARIABLE_TITLE": "Jaunā mainīgā vārds:", + "VARIABLE_ALREADY_EXISTS": "Mainīgais '%1' jau eksistē.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Mainīgais ar nosaukumu '%1' jau pastāv citam tipam: '%2'", + "DELETE_VARIABLE_CONFIRMATION": "Mainīgais \"%2\" tiek izmantots %1 vietās. Dzēst?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nevar izdzēst mainīgo '%1', jo tā ir daļa no funkcijas '%2' definīcijas.", + "DELETE_VARIABLE": "Izdzēst mainīgo \"%1\"", + "COLOUR_PICKER_HELPURL": "https://lv.wikipedia.org/wiki/Krāsa", + "COLOUR_PICKER_TOOLTIP": "Izvēlēties krāsu no paletes.", + "COLOUR_RANDOM_TITLE": "nejauša krāsa", + "COLOUR_RANDOM_TOOLTIP": "Izvēlēties krāsu pēc nejaušības principa.", + "COLOUR_RGB_TITLE": "veido krāsu no", + "COLOUR_RGB_RED": "sarkana", + "COLOUR_RGB_GREEN": "zaļa", + "COLOUR_RGB_BLUE": "zila", + "COLOUR_RGB_TOOLTIP": "Izveidot krāsu ar norādīto daudzumu sarkanā, zaļā un zilā toņu. Visas vērtības ir starp 0 un 100.", + "COLOUR_BLEND_TITLE": "sajaukt", + "COLOUR_BLEND_COLOUR1": "1. krāsa", + "COLOUR_BLEND_COLOUR2": "2. krāsa", + "COLOUR_BLEND_RATIO": "attiecība", + "COLOUR_BLEND_TOOLTIP": "Sajauc kopā divas krāsas ar doto attiecību (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://lv.wikipedia.org/wiki/Cikls", + "CONTROLS_REPEAT_TITLE": "atkārtot %1 reizes", + "CONTROLS_REPEAT_INPUT_DO": "izpildi", + "CONTROLS_REPEAT_TOOLTIP": "Izpildīt komandas vairākas reizes.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "atkārtot kamēr", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "atkārtot līdz", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Izpildīt komandas, kamēr vērtība ir patiesa.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Izpildīt komandas, kamēr vērtība ir nepatiesa.", + "CONTROLS_FOR_TOOLTIP": "Ļauj mainīgajam '%1' pieņemt vērtības no sākuma līdz beigu vērtībai, un izpildīt iekļautos blokus katrai no šīm pieņemtajām vērtībām.", + "CONTROLS_FOR_TITLE": "skaitīt %1 no %2 līdz %3 ar soli %4", + "CONTROLS_FOREACH_TITLE": "visiem %1 no saraksta %2", + "CONTROLS_FOREACH_TOOLTIP": "Katram objektam no saraksta piešķirt mainīgajam '%1' šo objektu un izpildīt komandas.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "iet ārā no cikla", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "turpināt ar cikla nākamo iterāciju", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Iet ārā no iekļaujošā cikla", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Nepildīt atlikušo cikla daļu bet sākt nākamo iterāciju.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Brīdinājums: šo bloku drīkst izmantot tikai cikla iekšienē.", + "CONTROLS_IF_TOOLTIP_1": "Ja vērtība ir patiesa, tad izpildīt komandas.", + "CONTROLS_IF_TOOLTIP_2": "Ja vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi izpildīt otro bloku ar komandām.", + "CONTROLS_IF_TOOLTIP_3": "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām.", + "CONTROLS_IF_TOOLTIP_4": "Ja pirmā vērtība ir patiesa, tad izpildīt pirmo bloku ar komandām. Citādi, ja otrā vērtība ir patiesa, izpildīt otro bloku ar komandām. Ja neviena no vertībām nav patiesa, tad izpildīt pēdējo bloku ar komandām.", + "CONTROLS_IF_MSG_IF": "ja", + "CONTROLS_IF_MSG_ELSEIF": "citādi, ja", + "CONTROLS_IF_MSG_ELSE": "citādi", + "CONTROLS_IF_IF_TOOLTIP": "Pievienot, noņemt vai mainīt sekciju secību šim \"ja\" blokam.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Pievienot nosacījumu \"ja\" blokam.", + "CONTROLS_IF_ELSE_TOOLTIP": "Pievienot gala nosacījumu \"ja\" blokam.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Patiess, ja abas puses ir vienādas.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Patiess, ja abas puses nav vienādas.", + "LOGIC_COMPARE_TOOLTIP_LT": "Patiess, ja kreisā puse ir mazāka par labo pusi.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Patiess, ja kreisā puse ir mazāka vai vienāda ar labo pusi.", + "LOGIC_COMPARE_TOOLTIP_GT": "Patiess, ja kreisā puse ir lielāka par labo pusi.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Patiess, ja kreisā puse ir lielāka vai vienāda ar labo pusi.", + "LOGIC_OPERATION_TOOLTIP_AND": "Patiess, ja abas puses ir patiesas.", + "LOGIC_OPERATION_AND": "un", + "LOGIC_OPERATION_TOOLTIP_OR": "Patiess, ja vismaz viena puse ir patiesa.", + "LOGIC_OPERATION_OR": "vai", + "LOGIC_NEGATE_TITLE": "ne %1", + "LOGIC_NEGATE_TOOLTIP": "Patiess, ja arguments ir aplams.", + "LOGIC_BOOLEAN_TRUE": "patiess", + "LOGIC_BOOLEAN_FALSE": "aplams", + "LOGIC_BOOLEAN_TOOLTIP": "Atgriež rezultātu \"patiess\" vai \"aplams\".", + "LOGIC_NULL": "nekas", + "LOGIC_NULL_TOOLTIP": "Atgriež neko.", + "LOGIC_TERNARY_CONDITION": "nosacījums", + "LOGIC_TERNARY_IF_TRUE": "ja patiess", + "LOGIC_TERNARY_IF_FALSE": "ja aplams", + "LOGIC_TERNARY_TOOLTIP": "Pārbaudīt nosacījumu. Ja 'nosacījums' ir patiess, atgriež vērtību 'ja patiess', pretējā gadījumā vērtību 'ja aplams'.", + "MATH_NUMBER_HELPURL": "https://lv.wikipedia.org/wiki/Skaitlis", + "MATH_NUMBER_TOOLTIP": "Skaitlis.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Atgriež divu skaitļu summu.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Atgriež divu skaitļu starpību.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Atgriež divu skaitļu reizinājumu.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Atgriež divu skaitļu dalījumu.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Atgriež pirmo skaitli kāpinātu pakāpē otrais skaitlis.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "kvadrātsakne", + "MATH_SINGLE_TOOLTIP_ROOT": "Atgriež skaitļa kvadrātsakni.", + "MATH_SINGLE_OP_ABSOLUTE": "absolūtā vērtība", + "MATH_SINGLE_TOOLTIP_ABS": "Atgriež skaitļa absolūto vērtību.", + "MATH_SINGLE_TOOLTIP_NEG": "Atgriež pretējo skaitli.", + "MATH_SINGLE_TOOLTIP_LN": "Atgriež skaitļa naturālo logaritmu.", + "MATH_SINGLE_TOOLTIP_LOG10": "Atgriež skaitļa logaritmu pie bāzes 10.", + "MATH_SINGLE_TOOLTIP_EXP": "Atgriež e pakāpē dotais skaitlis.", + "MATH_SINGLE_TOOLTIP_POW10": "Atgriež 10 pakāpē dotais skaitlis.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Sinuss no grādiem (nevis radiāniem).", + "MATH_TRIG_TOOLTIP_COS": "Kosinuss no grādiem (nevis radiāniem).", + "MATH_TRIG_TOOLTIP_TAN": "Tangenss no grādiem (nevis radiāniem).", + "MATH_TRIG_TOOLTIP_ASIN": "Arksinuss (grādos).", + "MATH_TRIG_TOOLTIP_ACOS": "Arkkosinuss (grādos).", + "MATH_TRIG_TOOLTIP_ATAN": "Arktangenss (grādos).", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Atgriež kādu no matemātikas konstantēm: π (3.141…), e (2.718…), φ (1.618…), √(2) (1.414…), √(½) (0.707…), ∞ (bezgalība).", + "MATH_IS_EVEN": "ir pāra", + "MATH_IS_ODD": "ir nepāra", + "MATH_IS_PRIME": "ir pirmskaitlis", + "MATH_IS_WHOLE": "ir vesels", + "MATH_IS_POSITIVE": "ir pozitīvs", + "MATH_IS_NEGATIVE": "ir negatīvs", + "MATH_IS_DIVISIBLE_BY": "dalās bez atlikuma ar", + "MATH_IS_TOOLTIP": "Pārbauda, vai skaitlis ir pāra, nepāra, vesels, pozitīvs, negatīvs vai dalās ar noteiktu skaitli. Atgriež \"patiess\" vai \"aplams\".", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "izmainīt %1 par %2", + "MATH_CHANGE_TOOLTIP": "Pieskaitīt doto skaitli mainīgajam '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Noapaļot skaitli uz augšu vai uz leju.", + "MATH_ROUND_OPERATOR_ROUND": "noapaļot", + "MATH_ROUND_OPERATOR_ROUNDUP": "apaļot uz augšu", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "apaļot uz leju", + "MATH_ONLIST_OPERATOR_SUM": "summa", + "MATH_ONLIST_TOOLTIP_SUM": "Saskaitīt visus skaitļus no dotā saraksta.", + "MATH_ONLIST_OPERATOR_MIN": "mazākais", + "MATH_ONLIST_TOOLTIP_MIN": "Atgriež mazāko vērtību no saraksta.", + "MATH_ONLIST_OPERATOR_MAX": "lielākais", + "MATH_ONLIST_TOOLTIP_MAX": "Atgriež lielāko vērtību no saraksta.", + "MATH_ONLIST_OPERATOR_AVERAGE": "vidējais", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Atgriež dotā saraksta vidējo aritmētisko vērtību.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediāna", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Atgriež dotā saraksta mediānas vērtību.", + "MATH_ONLIST_OPERATOR_MODE": "moda", + "MATH_ONLIST_TOOLTIP_MODE": "Atgriež dotā saraksta biežāk sastopamās vērtības (modas).", + "MATH_ONLIST_OPERATOR_STD_DEV": "standartnovirze", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Atgriež dotā saraksta standartnovirzi.", + "MATH_ONLIST_OPERATOR_RANDOM": "nejaušs", + "MATH_ONLIST_TOOLTIP_RANDOM": "Atgriež nejauši izvēlētu vērtību no dotā saraksta.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "atlikums no %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Atlikums no divu skaitļu dalījuma.", + "MATH_CONSTRAIN_TITLE": "ierobežot %1 no %2 līdz %3", + "MATH_CONSTRAIN_TOOLTIP": "Ierobežo skaitli no noteiktajās robežās (ieskaitot galapunktus).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "nejaušs vesels skaitlis no %1 līdz %2", + "MATH_RANDOM_INT_TOOLTIP": "Atgriež nejaušu veselu skaitli dotajās robežās (iekļaujot galapunktus)", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "nejaušs skaitlis [0..1)", + "MATH_RANDOM_FLOAT_TOOLTIP": "Atgriež nejaušu reālo skaitli robežās no 0 (iekļaujot) līdz 1 (neiekļaujot).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "ATAN2 no X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Atgriezt arktangensu punktam (X, Y) grādos no -180 līdz 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Burts, vārds vai jebkāda teksta rinda.", + "TEXT_JOIN_TITLE_CREATEWITH": "veidot tekstu no", + "TEXT_JOIN_TOOLTIP": "Izveidot tekstu savienojot dotos argumentus.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "savienot", + "TEXT_CREATE_JOIN_TOOLTIP": "Pievienot, noņemt vai mainīt sekciju secību šim \"teksta\" blokam.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Pievienot tekstam objektu.", + "TEXT_APPEND_TITLE": "tekstam %1 pievienot tekstu %2", + "TEXT_APPEND_TOOLTIP": "Pievienot tekstu mainīgajam '%1'.", + "TEXT_LENGTH_TITLE": "garums tekstam %1", + "TEXT_LENGTH_TOOLTIP": "Atgriež burtu skaitu (ieskaitot atstarpes) dotajā tekstā.", + "TEXT_ISEMPTY_TITLE": "%1 ir tukšs", + "TEXT_ISEMPTY_TOOLTIP": "Patiess, ja teksts ir tukšs.", + "TEXT_INDEXOF_TOOLTIP": "Meklē pirmā teksta rindu otrajā tekstā. Atgriež pozīciju otrajā tekstā, kurā sākas pirmais teksts. Atgriež %1 ja pirmā teksta rinda nav atrasta.", + "TEXT_INDEXOF_TITLE": "tekstā %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "meklēt pirmo vietu, kur sākas teksts", + "TEXT_INDEXOF_OPERATOR_LAST": "meklēt pēdējo vietu, kur sākas teksts", + "TEXT_CHARAT_TITLE": "tekstā %1 %2", + "TEXT_CHARAT_FROM_START": "paņemt burtu #", + "TEXT_CHARAT_FROM_END": "paņemt no beigām burtu #", + "TEXT_CHARAT_FIRST": "paņemt pirmo burtu", + "TEXT_CHARAT_LAST": "paņemt pēdējo burtu", + "TEXT_CHARAT_RANDOM": "paņemt nejaušu burtu", + "TEXT_CHARAT_TOOLTIP": "Atgriež burtu dotajā pozīcijā.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Atgriež norādīto teksta daļu.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "no teksta", + "TEXT_GET_SUBSTRING_START_FROM_START": "paņemt apakšvirkni sākot no burta nr", + "TEXT_GET_SUBSTRING_START_FROM_END": "paņemt apakšvirkni no beigām sākot ar burta nr", + "TEXT_GET_SUBSTRING_START_FIRST": "paņemt apakšvirkni no sākuma", + "TEXT_GET_SUBSTRING_END_FROM_START": "līdz burtam nr", + "TEXT_GET_SUBSTRING_END_FROM_END": "līdz burtam nr (no beigām)", + "TEXT_GET_SUBSTRING_END_LAST": "līdz pēdējam burtam", + "TEXT_CHANGECASE_TOOLTIP": "Atgriež teksta kopiju ar mainītiem lielajiem/mazajiem burtiem.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "kā LIELIE BURTI", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "kā mazie burti", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "kā Nosaukuma Burti", + "TEXT_TRIM_TOOLTIP": "Atgriež teksta kopiju ar noņemtām atstarpēm vienā vai otrā galā.", + "TEXT_TRIM_OPERATOR_BOTH": "Dzēst atstarpes no abām pusēm", + "TEXT_TRIM_OPERATOR_LEFT": "Dzēst atstarpes no sākuma", + "TEXT_TRIM_OPERATOR_RIGHT": "Dzēst atstarpes no beigām", + "TEXT_PRINT_TITLE": "parādīt %1", + "TEXT_PRINT_TOOLTIP": "Parādīt norādīto tekstu vai skaitli.", + "TEXT_PROMPT_TYPE_TEXT": "palūgt ievadīt tekstu ar ziņu", + "TEXT_PROMPT_TYPE_NUMBER": "palūgt ievadīt skaitli ar ziņu", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Palūgt lietotāju ievadīt skaitli.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Palūgt lietotāju ievadīt tekstu.", + "TEXT_COUNT_MESSAGE0": "skaitīt %1 iekš %2", + "TEXT_COUNT_TOOLTIP": "Saskaitīt, cik reizes kāds teksts atrodas iekš kāda cita teksta.", + "TEXT_REPLACE_MESSAGE0": "apmainīt %1 ar %2 iekš %3", + "TEXT_REPLACE_TOOLTIP": "Apmainīt kāda teksta fragmentus citā tekstā.", + "TEXT_REVERSE_MESSAGE0": "apgriezt otrādi %1", + "TEXT_REVERSE_TOOLTIP": "Apgriež otrādi teksta rakstzīmju kārtu.", + "LISTS_CREATE_EMPTY_TITLE": "izveidot tukšu sarakstu", + "LISTS_CREATE_EMPTY_TOOLTIP": "Izveidot sarakstu bez elementiem tajā.", + "LISTS_CREATE_WITH_TOOLTIP": "Izveidot sarakstu no jebkura skaita vienību.", + "LISTS_CREATE_WITH_INPUT_WITH": "izveidot sarakstu no", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "saraksts", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Pievienot, noņemt vai mainīt sekciju secību šim \"saraksta\" blokam.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Pievienot objektu sarakstam.", + "LISTS_REPEAT_TOOLTIP": "Izveido sarakstu, kas sastāv no dotās vērtības noteiktu reižu skaita.", + "LISTS_REPEAT_TITLE": "saraksts no %1 atkārtots %2 reizes", + "LISTS_LENGTH_TITLE": "%1 garums", + "LISTS_LENGTH_TOOLTIP": "Atgriež elementu skaitu srakstā.", + "LISTS_ISEMPTY_TITLE": "%1 ir tukšs", + "LISTS_ISEMPTY_TOOLTIP": "Patiess, ja saraksts ir tukšs.", + "LISTS_INLIST": "sarakstā", + "LISTS_INDEX_OF_FIRST": "atrast pirmo elementu, kas vienāds ar", + "LISTS_INDEX_OF_LAST": "atrast pēdējo elementu, kas vienāds ar", + "LISTS_INDEX_OF_TOOLTIP": "Atgriež pozīciju sarakstā, kurā atrodas dotais objekts. Atgriež %1 ja objekts neatrodas sarakstā.", + "LISTS_GET_INDEX_GET": "paņemt", + "LISTS_GET_INDEX_GET_REMOVE": "paņemt uz dzēst", + "LISTS_GET_INDEX_REMOVE": "dzēst", + "LISTS_GET_INDEX_FROM_END": "no beigām numur", + "LISTS_GET_INDEX_FIRST": "pirmo", + "LISTS_GET_INDEX_LAST": "pēdējo", + "LISTS_GET_INDEX_RANDOM": "nejauši izvēlētu", + "LISTS_INDEX_FROM_START_TOOLTIP": "Saraksta elementu numerācija sākas no %1", + "LISTS_INDEX_FROM_END_TOOLTIP": "Saraksta elementu numerācija no beigām sākas no %1", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Atgriež norādīto elementu no saraksta.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Atgriež pirmo saraksta elementu.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Atgriež pēdējo saraksta elementu.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Atgriež nejauši izvēlētu saraksta elementu", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Atgriež un izdzēš no saraksta norādīto elementu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Atgriež un izdzēš saraksta pirmo elementu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Atgriež un izdzēš saraksta pēdējo elementu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Atgriež un izdzēš no saraksta nejauši izvēlētu elementu.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Izdēš norādīto elementu no saraksta.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Izdēš pirmo saraksta elementu.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Izdēš pēdējo saraksta elementu.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Izdzēš no saraksta nejauši izvēlētu elementu.", + "LISTS_SET_INDEX_SET": "aizvieto", + "LISTS_SET_INDEX_INSERT": "ievieto", + "LISTS_SET_INDEX_INPUT_TO": "kā", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Aizvieto sarakstā elementu norādītajā pozīcijā.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Aizvieto elementu saraksta sākumā.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Aizvieto elementu saraksta beigās.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Aizvieto sarakstā elementu nejauši izvēlētā pozīcijā.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ievieto sarakstā elementu norādītajā pozīcijā.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ievieto elementu saraksta sākumā.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Pievieno elementu saraksta beigās.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ievieto sarakstā jaunu elementu nejauši izvēlētā pozīcijā.", + "LISTS_GET_SUBLIST_START_FROM_START": "paņemt apakšsarakstu no pozīcijas", + "LISTS_GET_SUBLIST_START_FROM_END": "paņemt apakšsarakstu no beigām no pozīcijas", + "LISTS_GET_SUBLIST_START_FIRST": "paņemt apakšsarakstu no sākuma", + "LISTS_GET_SUBLIST_END_FROM_START": "līdz pozīcijai", + "LISTS_GET_SUBLIST_END_FROM_END": "līdz pozīcijai no beigām", + "LISTS_GET_SUBLIST_END_LAST": "līdz beigām", + "LISTS_GET_SUBLIST_TOOLTIP": "Nokopēt daļu no dotā saraksta.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "Sakārtot sarakstu no %3 elementiem %2 secībā %1", + "LISTS_SORT_TOOLTIP": "Saraksta sakārtota kopija.", + "LISTS_SORT_ORDER_ASCENDING": "augošā", + "LISTS_SORT_ORDER_DESCENDING": "dilstošā", + "LISTS_SORT_TYPE_NUMERIC": "skaitliski", + "LISTS_SORT_TYPE_TEXT": "pēc alfabēta", + "LISTS_SORT_TYPE_IGNORECASE": "pēc alfabēta, ignorēt mazos/lielos burtus", + "LISTS_SPLIT_LIST_FROM_TEXT": "vārdu saraksts no teksta", + "LISTS_SPLIT_TEXT_FROM_LIST": "izveidot tekstu no saraksta", + "LISTS_SPLIT_WITH_DELIMITER": "ar atdalītāju", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Sadalīt tekstu vārdos izmantojot atdalītāju.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Apvienot tekstu izmantojot atdalītāju.", + "LISTS_REVERSE_MESSAGE0": "apgriezt otrādi %1", + "LISTS_REVERSE_TOOLTIP": "Apgriezt otrādi saraksta kopiju", + "VARIABLES_GET_TOOLTIP": "Atgriež mainīgā vērtību.", + "VARIABLES_GET_CREATE_SET": "Izveidot piešķiršanu mainīgajam %1", + "VARIABLES_SET": "piešķirt mainīgajam %1 vērtību %2", + "VARIABLES_SET_TOOLTIP": "Piešķirt mainīgajam vērtību.", + "VARIABLES_SET_CREATE_GET": "Izveidot 'ņem %1'", + "PROCEDURES_DEFNORETURN_TITLE": "funkcija", + "PROCEDURES_DEFNORETURN_PROCEDURE": "darīt kaut ko", + "PROCEDURES_BEFORE_PARAMS": "ar:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ar:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Izveido funkciju, kas neatgriež rezultātu.", + "PROCEDURES_DEFNORETURN_COMMENT": "Funkcijas apraksts...", + "PROCEDURES_DEFRETURN_RETURN": "atgriezt", + "PROCEDURES_DEFRETURN_TOOLTIP": "Izveido funkciju, kas atgriež rezultātu.", + "PROCEDURES_ALLOW_STATEMENTS": "atļaut apakškomandas", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Brīdinājums: funkcijai ir vienādi argumenti.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Izpildīt iepriekš definētu funkcju '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Izpildīt iepriekš definētu funkcju '%1' un izmantot tās rezultātu.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "argumenti", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Pievienot, pārkārtot vai dzēst funkcijas argumentus.", + "PROCEDURES_MUTATORARG_TITLE": "arguments:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Pievienot funkcijai argumentu.", + "PROCEDURES_HIGHLIGHT_DEF": "Izcelt funkcijas definīciju", + "PROCEDURES_CREATE_DO": "Izveidot '%1' izsaukumu", + "PROCEDURES_IFRETURN_TOOLTIP": "Ja pirmā vērtība ir \"patiesa\", tad atgriezt otro vērtību.", + "PROCEDURES_IFRETURN_WARNING": "Brīdinājums: Šo bloku var izmantot tikai funkcijas definīcijā.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Saki kaut ko...", + "WORKSPACE_ARIA_LABEL": "Blockly Darbavieta", + "COLLAPSED_WARNINGS_WARNING": "Sakļautie bloki satur brīdinājumus.", + "DIALOG_OK": "Labi", + "DIALOG_CANCEL": "Atcelt" +} diff --git a/msg/json/mg.json b/msg/json/mg.json index 4acf5b6f75b..98c2331f50a 100644 --- a/msg/json/mg.json +++ b/msg/json/mg.json @@ -1,58 +1,58 @@ -{ - "@metadata": { - "authors": [ - "Jagwar", - "Kely" - ] - }, - "VARIABLES_DEFAULT_NAME": "Zavatra", - "TODAY": "Androany", - "DUPLICATE_BLOCK": "Tahahana", - "ADD_COMMENT": "Hanampy resaka", - "REMOVE_COMMENT": "Hanala resaka", - "EXTERNAL_INPUTS": "Iditra ivelany", - "INLINE_INPUTS": "Iditra an'andalana", - "DELETE_BLOCK": "Hamafa bilaoky", - "DELETE_X_BLOCKS": "Hamafa bilaoky %1", - "DELETE_ALL_BLOCKS": "Hamafa ny bilaoky %1 rehetra ?", - "CLEAN_UP": "Hanadio bilaoky", - "EXPAND_ALL": "Hanitatra bilaoky", - "DISABLE_BLOCK": "Hanajanona ny bilaoky", - "ENABLE_BLOCK": "Handefa ny bilaoky", - "HELP": "Fanoroana", - "UNDO": "Esorina", - "REDO": "Averina atao", - "CHANGE_VALUE_TITLE": "Hanova sanda:", - "RENAME_VARIABLE": "Hanova anarana ny ova...", - "COLOUR_RANDOM_TITLE": "loko kisendra", - "COLOUR_RGB_RED": "mena", - "COLOUR_RGB_GREEN": "maitso", - "COLOUR_RGB_BLUE": "manga", - "COLOUR_BLEND_TITLE": "afangaro", - "COLOUR_BLEND_COLOUR1": "loko 1", - "COLOUR_BLEND_COLOUR2": "loko 2", - "COLOUR_BLEND_RATIO": "taha", - "CONTROLS_REPEAT_INPUT_DO": "atao", - "CONTROLS_IF_MSG_IF": "raha", - "CONTROLS_IF_MSG_ELSEIF": "raha tsy izany", - "CONTROLS_IF_MSG_ELSE": "raha tsy izany raha", - "LOGIC_OPERATION_AND": "sady", - "LOGIC_OPERATION_OR": "na", - "LOGIC_NEGATE_TITLE": "tsy %1", - "LOGIC_BOOLEAN_TRUE": "marina", - "LOGIC_BOOLEAN_FALSE": "diso", - "LOGIC_NULL": "foana", - "LOGIC_NULL_TOOLTIP": "Mamerina sanda foana", - "LOGIC_TERNARY_CONDITION": "andrana", - "LOGIC_TERNARY_IF_TRUE": "raha marina", - "LOGIC_TERNARY_IF_FALSE": "raha diso", - "MATH_NUMBER_TOOLTIP": "Laharana.", - "MATH_ROUND_OPERATOR_ROUND": "boriboriana", - "MATH_ROUND_OPERATOR_ROUNDUP": "boriboriana amin'ny sanda ambony", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "boriboriana amin'ny sanda ambany", - "MATH_ONLIST_OPERATOR_SUM": "tambatry ny lisitra", - "MATH_ONLIST_OPERATOR_MIN": "kely indrindra amin'ny lisitra", - "MATH_ONLIST_OPERATOR_MAX": "lehibe indrindra amin'ny lisitra", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Aoka ihany" -} +{ + "@metadata": { + "authors": [ + "Jagwar", + "Kely" + ] + }, + "VARIABLES_DEFAULT_NAME": "Zavatra", + "TODAY": "Androany", + "DUPLICATE_BLOCK": "Tahahana", + "ADD_COMMENT": "Hanampy resaka", + "REMOVE_COMMENT": "Hanala resaka", + "EXTERNAL_INPUTS": "Iditra ivelany", + "INLINE_INPUTS": "Iditra an'andalana", + "DELETE_BLOCK": "Hamafa bilaoky", + "DELETE_X_BLOCKS": "Hamafa bilaoky %1", + "DELETE_ALL_BLOCKS": "Hamafa ny bilaoky %1 rehetra ?", + "CLEAN_UP": "Hanadio bilaoky", + "EXPAND_ALL": "Hanitatra bilaoky", + "DISABLE_BLOCK": "Hanajanona ny bilaoky", + "ENABLE_BLOCK": "Handefa ny bilaoky", + "HELP": "Fanoroana", + "UNDO": "Esorina", + "REDO": "Averina atao", + "CHANGE_VALUE_TITLE": "Hanova sanda:", + "RENAME_VARIABLE": "Hanova anarana ny ova...", + "COLOUR_RANDOM_TITLE": "loko kisendra", + "COLOUR_RGB_RED": "mena", + "COLOUR_RGB_GREEN": "maitso", + "COLOUR_RGB_BLUE": "manga", + "COLOUR_BLEND_TITLE": "afangaro", + "COLOUR_BLEND_COLOUR1": "loko 1", + "COLOUR_BLEND_COLOUR2": "loko 2", + "COLOUR_BLEND_RATIO": "taha", + "CONTROLS_REPEAT_INPUT_DO": "atao", + "CONTROLS_IF_MSG_IF": "raha", + "CONTROLS_IF_MSG_ELSEIF": "raha tsy izany", + "CONTROLS_IF_MSG_ELSE": "raha tsy izany raha", + "LOGIC_OPERATION_AND": "sady", + "LOGIC_OPERATION_OR": "na", + "LOGIC_NEGATE_TITLE": "tsy %1", + "LOGIC_BOOLEAN_TRUE": "marina", + "LOGIC_BOOLEAN_FALSE": "diso", + "LOGIC_NULL": "foana", + "LOGIC_NULL_TOOLTIP": "Mamerina sanda foana", + "LOGIC_TERNARY_CONDITION": "andrana", + "LOGIC_TERNARY_IF_TRUE": "raha marina", + "LOGIC_TERNARY_IF_FALSE": "raha diso", + "MATH_NUMBER_TOOLTIP": "Laharana.", + "MATH_ROUND_OPERATOR_ROUND": "boriboriana", + "MATH_ROUND_OPERATOR_ROUNDUP": "boriboriana amin'ny sanda ambony", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "boriboriana amin'ny sanda ambany", + "MATH_ONLIST_OPERATOR_SUM": "tambatry ny lisitra", + "MATH_ONLIST_OPERATOR_MIN": "kely indrindra amin'ny lisitra", + "MATH_ONLIST_OPERATOR_MAX": "lehibe indrindra amin'ny lisitra", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Aoka ihany" +} diff --git a/msg/json/mk.json b/msg/json/mk.json index aa367f52b19..f7a84fddc93 100644 --- a/msg/json/mk.json +++ b/msg/json/mk.json @@ -1,179 +1,179 @@ -{ - "@metadata": { - "authors": [ - "Bjankuloski06", - "Vlad5250" - ] - }, - "VARIABLES_DEFAULT_NAME": "елемент", - "UNNAMED_KEY": "без име", - "TODAY": "Денес", - "DUPLICATE_BLOCK": "Ископирај", - "ADD_COMMENT": "Додај коментар:", - "REMOVE_COMMENT": "Отстрани коментар", - "DUPLICATE_COMMENT": "Дуплирај коментар", - "EXTERNAL_INPUTS": "Надворешен внос", - "INLINE_INPUTS": "Внатрешен внос", - "DELETE_BLOCK": "Избриши блок", - "DELETE_X_BLOCKS": "Избриши %1 блока", - "DELETE_ALL_BLOCKS": "Да ги избришам сите %1 блокчиња?", - "CLEAN_UP": "Исчисти блокови", - "COLLAPSE_BLOCK": "Собери блок", - "COLLAPSE_ALL": "Собери блокови", - "EXPAND_BLOCK": "Рашири го блокови", - "EXPAND_ALL": "Рашири блокови", - "DISABLE_BLOCK": "Исклучи блок", - "ENABLE_BLOCK": "Вклучи блок", - "HELP": "Помош", - "UNDO": "Откажи", - "REDO": "Повтори", - "CHANGE_VALUE_TITLE": "Смена на вредност:", - "RENAME_VARIABLE": "Преименувај променлива...", - "RENAME_VARIABLE_TITLE": "Преименувај ги сите променливи „%1“ во:", - "NEW_VARIABLE": "Создај променлива...", - "NEW_STRING_VARIABLE": "Создај променлива на низа...", - "NEW_VARIABLE_TYPE_TITLE": "Тип на новата променлива:", - "NEW_VARIABLE_TITLE": "Назив на новата променлива:", - "VARIABLE_ALREADY_EXISTS": "Променлива со име '%1' веќе постои.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Променлива со име '%1' веќе постои за друг тип: '%2'.", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Променливата '%1' не може се избрише бидејќи е дел од определението на функцијата '%2'", - "DELETE_VARIABLE": "Избриши ја променливата \"%1\"", - "COLOUR_PICKER_HELPURL": "https://mk.wikipedia.org/wiki/Боја", - "COLOUR_PICKER_TOOLTIP": "Изберете боја од палетата.", - "COLOUR_RANDOM_TITLE": "случајна боја", - "COLOUR_RANDOM_TOOLTIP": "Избери боја на тепка.", - "COLOUR_RGB_TITLE": "боја со", - "COLOUR_RGB_RED": "црвена", - "COLOUR_RGB_GREEN": "зелена", - "COLOUR_RGB_BLUE": "сина", - "COLOUR_RGB_TOOLTIP": "Создајте боја со укажаните износи на црвена, зелена и сина. Сите вредности мора да бидат помеѓу 0 и 100.", - "COLOUR_BLEND_TITLE": "смешај", - "COLOUR_BLEND_COLOUR1": "боја 1", - "COLOUR_BLEND_COLOUR2": "боја 2", - "COLOUR_BLEND_RATIO": "сооднос", - "COLOUR_BLEND_TOOLTIP": "Меша две бои во даден сооднос (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://mk.wikipedia.org/wiki/For-јамка", - "CONTROLS_REPEAT_TITLE": "повтори %1 пати", - "CONTROLS_REPEAT_INPUT_DO": "исполни", - "CONTROLS_REPEAT_TOOLTIP": "Исполнува наредби неколку пати.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "повторувај додека", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "повторувај сè до", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Додека вредноста е вистинита, исполнува наредби.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Додека вредноста е невистинита, исполнува наредби.", - "CONTROLS_FOR_TOOLTIP": "Променливата „%1“ да ги земе вредностите од почетниот до завршниот број, броејќи според укажаниот интервал и ги исполнува укажаните блокови.", - "CONTROLS_FOR_TITLE": "број со %1 од %2 до %3 со %4", - "CONTROLS_FOREACH_TITLE": "за секој елемент %1 на списокот %2", - "CONTROLS_FOREACH_TOOLTIP": "Му ја задава променливата „%1“ на секој елемент на списокот, а потоа исполнува наредби.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "излези од јамката", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "продолжи со следното повторување на јамката", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Излези од содржечката јамка.", - "CONTROLS_IF_TOOLTIP_1": "Ако вредноста е вистинита, исполни некои наредби.", - "CONTROLS_IF_MSG_IF": "ако", - "CONTROLS_IF_MSG_ELSEIF": "инаку ако", - "CONTROLS_IF_MSG_ELSE": "инаку", - "CONTROLS_IF_IF_TOOLTIP": "Додава, отстранува или прередува делови за прераспоредување на овој блок „ако“.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Додај услов кон „ако“ блокот.", - "LOGIC_COMPARE_HELPURL": "https://mk.wikipedia.org/wiki/Неравенство", - "LOGIC_COMPARE_TOOLTIP_EQ": "Дава вистина ако обата вноса се еднакви.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Дава вистина ако обата вноса не се еднакви.", - "LOGIC_COMPARE_TOOLTIP_LT": "Дава вистина ако првиот внос е помал од вториот.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Дава вистина ако првиот внос е помал или еднаков на вториот.", - "LOGIC_COMPARE_TOOLTIP_GT": "Дава вистина ако првиот внос е поголем од вториот.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Дава вистина ако првиот внос е поголем или еднаков на вториот.", - "LOGIC_OPERATION_TOOLTIP_AND": "Дава вистина ако обата вноса се вистинити.", - "LOGIC_OPERATION_AND": "и", - "LOGIC_OPERATION_TOOLTIP_OR": "Дава вистина ако барем еден од вносовите е вистинит.", - "LOGIC_OPERATION_OR": "или", - "LOGIC_NEGATE_TITLE": "не %1", - "LOGIC_NEGATE_TOOLTIP": "Дава вистина ако вносот е невистинит. Дава невистина ако вносот е вистинит.", - "LOGIC_BOOLEAN_TRUE": "вистина", - "LOGIC_BOOLEAN_FALSE": "невистина", - "LOGIC_BOOLEAN_TOOLTIP": "Дава или вистина или невистина.", - "LOGIC_NULL": "ништо", - "LOGIC_NULL_TOOLTIP": "Дава ништо.", - "LOGIC_TERNARY_CONDITION": "испробај", - "LOGIC_TERNARY_IF_TRUE": "ако е вистинито", - "LOGIC_TERNARY_IF_FALSE": "ако е невистинито", - "MATH_NUMBER_HELPURL": "https://mk.wikipedia.org/wiki/Број", - "MATH_NUMBER_TOOLTIP": "Број.", - "MATH_ARITHMETIC_HELPURL": "https://mk.wikipedia.org/wiki/Аритметика", - "MATH_SINGLE_OP_ROOT": "корен квадратен", - "MATH_SINGLE_TOOLTIP_ROOT": "Дава корен квадратен од број.", - "MATH_SINGLE_OP_ABSOLUTE": "апсолутна", - "MATH_SINGLE_TOOLTIP_ABS": "Ја дава апсолутната вредност на број.", - "MATH_TRIG_HELPURL": "https://mk.wikipediа.org/wiki/Тригонометриски_функции", - "MATH_CONSTANT_HELPURL": "https://mk.wikipedia.org/wiki/Математичка_константа", - "MATH_CONSTANT_TOOLTIP": "Дава една од вообичаените константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконечност).", - "MATH_IS_EVEN": "е парен", - "MATH_IS_ODD": "е непарен", - "MATH_IS_PRIME": "е прост", - "MATH_IS_WHOLE": "е цел", - "MATH_IS_POSITIVE": "е позитивен", - "MATH_IS_NEGATIVE": "е негативен", - "MATH_IS_DIVISIBLE_BY": "е делив со", - "MATH_IS_TOOLTIP": "Проверува дали бројот е парен, непарен, прост, цел, позитивен, негативен или делив со некој број. Дава вистина или невистина.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter?uselang=mk", - "MATH_CHANGE_TITLE": "повиши %1 за %2", - "MATH_CHANGE_TOOLTIP": "Ѝ додава број на променливата „%1“.", - "MATH_ROUND_HELPURL": "https://mk.wikipedia.org/wiki/Заокружување", - "MATH_ROUND_TOOLTIP": "Го заокружува бројот на поголем или помал.", - "MATH_ROUND_OPERATOR_ROUND": "заокружи", - "MATH_ROUND_OPERATOR_ROUNDUP": "заокружи на поголемо", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "заокружи на помало", - "MATH_ONLIST_OPERATOR_SUM": "збир од списокот", - "MATH_ONLIST_TOOLTIP_SUM": "Дава збир од сите броеви на списокот.", - "MATH_ONLIST_OPERATOR_MIN": "најмал на списокот", - "MATH_ONLIST_TOOLTIP_MIN": "Го дава најмалиот број на списокот.", - "MATH_ONLIST_OPERATOR_MAX": "најголем на списокот", - "MATH_ONLIST_TOOLTIP_MAX": "Го дава најголемиот број на списокот.", - "MATH_ONLIST_OPERATOR_AVERAGE": "просек на списокот", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Дава просек (аритметичка средина) од броевите на списокот.", - "MATH_ONLIST_OPERATOR_MEDIAN": "медијана на списокот", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Дава медијана од броевите на списокот.", - "MATH_ONLIST_OPERATOR_MODE": "модул на списокот", - "MATH_ONLIST_TOOLTIP_MODE": "Дава список на најзастапен(и) елемент(и) на списокот.", - "MATH_ONLIST_OPERATOR_RANDOM": "случајна ставка од списокот", - "TEXT_JOIN_TITLE_CREATEWITH": "создај текст со", - "TEXT_CREATE_JOIN_TITLE_JOIN": "поврзи", - "TEXT_CREATE_JOIN_TOOLTIP": "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „текст“.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Додај ставка кон текстот.", - "TEXT_LENGTH_TITLE": "должина на %1", - "TEXT_ISEMPTY_TITLE": "%1 е празен", - "TEXT_INDEXOF_TITLE": "во текст %1 %2 %3", - "TEXT_CHARAT_TITLE": "во текст %1 %2", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "во текстот", - "TEXT_COUNT_MESSAGE0": "пресметка на %1 во %2", - "TEXT_REPLACE_MESSAGE0": "замени го %1 со %2 во %3", - "LISTS_CREATE_EMPTY_TITLE": "создај празен список", - "LISTS_CREATE_WITH_INPUT_WITH": "создај список со", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "список", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „список“.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Додај ставка кон списокот.", - "LISTS_LENGTH_TITLE": "должина на %1", - "LISTS_ISEMPTY_TITLE": "%1 е празен", - "LISTS_INLIST": "во списокот", - "LISTS_GET_INDEX_REMOVE": "отстрани", - "LISTS_GET_INDEX_FROM_END": "# од крајот", - "LISTS_GET_INDEX_FIRST": "прв", - "LISTS_GET_INDEX_LAST": "последен", - "LISTS_GET_INDEX_RANDOM": "случаен", - "LISTS_SET_INDEX_SET": "задај", - "LISTS_SET_INDEX_INSERT": "вметни на", - "LISTS_SET_INDEX_INPUT_TO": "како", - "LISTS_SORT_TITLE": "подреди %1 %2 %3", - "VARIABLES_GET_CREATE_SET": "Создај „задавање на %1“", - "VARIABLES_SET": "задај %1 на %2", - "PROCEDURES_DEFNORETURN_TITLE": "за да", - "PROCEDURES_DEFNORETURN_PROCEDURE": "направиш", - "PROCEDURES_BEFORE_PARAMS": "со:", - "PROCEDURES_CALL_BEFORE_PARAMS": "со:", - "PROCEDURES_DEFNORETURN_COMMENT": "Опишете ја оваа функција...", - "PROCEDURES_DEFRETURN_RETURN": "назад", - "PROCEDURES_ALLOW_STATEMENTS": "дозволи тврдења", - "PROCEDURES_CALLNORETURN_HELPURL": "https://mk.wikipedia.org/wiki/Потпрограма", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Додај, отстрани или пренареди ги влезните параметри за оваа функција.", - "PROCEDURES_CREATE_DO": "Создај го '%1'", - "WORKSPACE_ARIA_LABEL": "Работен простор на Blockly", - "DIALOG_OK": "ОК", - "DIALOG_CANCEL": "Откажи" -} +{ + "@metadata": { + "authors": [ + "Bjankuloski06", + "Vlad5250" + ] + }, + "VARIABLES_DEFAULT_NAME": "елемент", + "UNNAMED_KEY": "без име", + "TODAY": "Денес", + "DUPLICATE_BLOCK": "Ископирај", + "ADD_COMMENT": "Додај коментар:", + "REMOVE_COMMENT": "Отстрани коментар", + "DUPLICATE_COMMENT": "Дуплирај коментар", + "EXTERNAL_INPUTS": "Надворешен внос", + "INLINE_INPUTS": "Внатрешен внос", + "DELETE_BLOCK": "Избриши блок", + "DELETE_X_BLOCKS": "Избриши %1 блока", + "DELETE_ALL_BLOCKS": "Да ги избришам сите %1 блокчиња?", + "CLEAN_UP": "Исчисти блокови", + "COLLAPSE_BLOCK": "Собери блок", + "COLLAPSE_ALL": "Собери блокови", + "EXPAND_BLOCK": "Рашири го блокови", + "EXPAND_ALL": "Рашири блокови", + "DISABLE_BLOCK": "Исклучи блок", + "ENABLE_BLOCK": "Вклучи блок", + "HELP": "Помош", + "UNDO": "Откажи", + "REDO": "Повтори", + "CHANGE_VALUE_TITLE": "Смена на вредност:", + "RENAME_VARIABLE": "Преименувај променлива...", + "RENAME_VARIABLE_TITLE": "Преименувај ги сите променливи „%1“ во:", + "NEW_VARIABLE": "Создај променлива...", + "NEW_STRING_VARIABLE": "Создај променлива на низа...", + "NEW_VARIABLE_TYPE_TITLE": "Тип на новата променлива:", + "NEW_VARIABLE_TITLE": "Назив на новата променлива:", + "VARIABLE_ALREADY_EXISTS": "Променлива со име '%1' веќе постои.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Променлива со име '%1' веќе постои за друг тип: '%2'.", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Променливата '%1' не може се избрише бидејќи е дел од определението на функцијата '%2'", + "DELETE_VARIABLE": "Избриши ја променливата \"%1\"", + "COLOUR_PICKER_HELPURL": "https://mk.wikipedia.org/wiki/Боја", + "COLOUR_PICKER_TOOLTIP": "Изберете боја од палетата.", + "COLOUR_RANDOM_TITLE": "случајна боја", + "COLOUR_RANDOM_TOOLTIP": "Избери боја на тепка.", + "COLOUR_RGB_TITLE": "боја со", + "COLOUR_RGB_RED": "црвена", + "COLOUR_RGB_GREEN": "зелена", + "COLOUR_RGB_BLUE": "сина", + "COLOUR_RGB_TOOLTIP": "Создајте боја со укажаните износи на црвена, зелена и сина. Сите вредности мора да бидат помеѓу 0 и 100.", + "COLOUR_BLEND_TITLE": "смешај", + "COLOUR_BLEND_COLOUR1": "боја 1", + "COLOUR_BLEND_COLOUR2": "боја 2", + "COLOUR_BLEND_RATIO": "сооднос", + "COLOUR_BLEND_TOOLTIP": "Меша две бои во даден сооднос (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://mk.wikipedia.org/wiki/For-јамка", + "CONTROLS_REPEAT_TITLE": "повтори %1 пати", + "CONTROLS_REPEAT_INPUT_DO": "исполни", + "CONTROLS_REPEAT_TOOLTIP": "Исполнува наредби неколку пати.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "повторувај додека", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "повторувај сè до", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Додека вредноста е вистинита, исполнува наредби.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Додека вредноста е невистинита, исполнува наредби.", + "CONTROLS_FOR_TOOLTIP": "Променливата „%1“ да ги земе вредностите од почетниот до завршниот број, броејќи според укажаниот интервал и ги исполнува укажаните блокови.", + "CONTROLS_FOR_TITLE": "број со %1 од %2 до %3 со %4", + "CONTROLS_FOREACH_TITLE": "за секој елемент %1 на списокот %2", + "CONTROLS_FOREACH_TOOLTIP": "Му ја задава променливата „%1“ на секој елемент на списокот, а потоа исполнува наредби.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "излези од јамката", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "продолжи со следното повторување на јамката", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Излези од содржечката јамка.", + "CONTROLS_IF_TOOLTIP_1": "Ако вредноста е вистинита, исполни некои наредби.", + "CONTROLS_IF_MSG_IF": "ако", + "CONTROLS_IF_MSG_ELSEIF": "инаку ако", + "CONTROLS_IF_MSG_ELSE": "инаку", + "CONTROLS_IF_IF_TOOLTIP": "Додава, отстранува или прередува делови за прераспоредување на овој блок „ако“.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Додај услов кон „ако“ блокот.", + "LOGIC_COMPARE_HELPURL": "https://mk.wikipedia.org/wiki/Неравенство", + "LOGIC_COMPARE_TOOLTIP_EQ": "Дава вистина ако обата вноса се еднакви.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Дава вистина ако обата вноса не се еднакви.", + "LOGIC_COMPARE_TOOLTIP_LT": "Дава вистина ако првиот внос е помал од вториот.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Дава вистина ако првиот внос е помал или еднаков на вториот.", + "LOGIC_COMPARE_TOOLTIP_GT": "Дава вистина ако првиот внос е поголем од вториот.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Дава вистина ако првиот внос е поголем или еднаков на вториот.", + "LOGIC_OPERATION_TOOLTIP_AND": "Дава вистина ако обата вноса се вистинити.", + "LOGIC_OPERATION_AND": "и", + "LOGIC_OPERATION_TOOLTIP_OR": "Дава вистина ако барем еден од вносовите е вистинит.", + "LOGIC_OPERATION_OR": "или", + "LOGIC_NEGATE_TITLE": "не %1", + "LOGIC_NEGATE_TOOLTIP": "Дава вистина ако вносот е невистинит. Дава невистина ако вносот е вистинит.", + "LOGIC_BOOLEAN_TRUE": "вистина", + "LOGIC_BOOLEAN_FALSE": "невистина", + "LOGIC_BOOLEAN_TOOLTIP": "Дава или вистина или невистина.", + "LOGIC_NULL": "ништо", + "LOGIC_NULL_TOOLTIP": "Дава ништо.", + "LOGIC_TERNARY_CONDITION": "испробај", + "LOGIC_TERNARY_IF_TRUE": "ако е вистинито", + "LOGIC_TERNARY_IF_FALSE": "ако е невистинито", + "MATH_NUMBER_HELPURL": "https://mk.wikipedia.org/wiki/Број", + "MATH_NUMBER_TOOLTIP": "Број.", + "MATH_ARITHMETIC_HELPURL": "https://mk.wikipedia.org/wiki/Аритметика", + "MATH_SINGLE_OP_ROOT": "корен квадратен", + "MATH_SINGLE_TOOLTIP_ROOT": "Дава корен квадратен од број.", + "MATH_SINGLE_OP_ABSOLUTE": "апсолутна", + "MATH_SINGLE_TOOLTIP_ABS": "Ја дава апсолутната вредност на број.", + "MATH_TRIG_HELPURL": "https://mk.wikipediа.org/wiki/Тригонометриски_функции", + "MATH_CONSTANT_HELPURL": "https://mk.wikipedia.org/wiki/Математичка_константа", + "MATH_CONSTANT_TOOLTIP": "Дава една од вообичаените константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконечност).", + "MATH_IS_EVEN": "е парен", + "MATH_IS_ODD": "е непарен", + "MATH_IS_PRIME": "е прост", + "MATH_IS_WHOLE": "е цел", + "MATH_IS_POSITIVE": "е позитивен", + "MATH_IS_NEGATIVE": "е негативен", + "MATH_IS_DIVISIBLE_BY": "е делив со", + "MATH_IS_TOOLTIP": "Проверува дали бројот е парен, непарен, прост, цел, позитивен, негативен или делив со некој број. Дава вистина или невистина.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter?uselang=mk", + "MATH_CHANGE_TITLE": "повиши %1 за %2", + "MATH_CHANGE_TOOLTIP": "Ѝ додава број на променливата „%1“.", + "MATH_ROUND_HELPURL": "https://mk.wikipedia.org/wiki/Заокружување", + "MATH_ROUND_TOOLTIP": "Го заокружува бројот на поголем или помал.", + "MATH_ROUND_OPERATOR_ROUND": "заокружи", + "MATH_ROUND_OPERATOR_ROUNDUP": "заокружи на поголемо", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "заокружи на помало", + "MATH_ONLIST_OPERATOR_SUM": "збир од списокот", + "MATH_ONLIST_TOOLTIP_SUM": "Дава збир од сите броеви на списокот.", + "MATH_ONLIST_OPERATOR_MIN": "најмал на списокот", + "MATH_ONLIST_TOOLTIP_MIN": "Го дава најмалиот број на списокот.", + "MATH_ONLIST_OPERATOR_MAX": "најголем на списокот", + "MATH_ONLIST_TOOLTIP_MAX": "Го дава најголемиот број на списокот.", + "MATH_ONLIST_OPERATOR_AVERAGE": "просек на списокот", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Дава просек (аритметичка средина) од броевите на списокот.", + "MATH_ONLIST_OPERATOR_MEDIAN": "медијана на списокот", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Дава медијана од броевите на списокот.", + "MATH_ONLIST_OPERATOR_MODE": "модул на списокот", + "MATH_ONLIST_TOOLTIP_MODE": "Дава список на најзастапен(и) елемент(и) на списокот.", + "MATH_ONLIST_OPERATOR_RANDOM": "случајна ставка од списокот", + "TEXT_JOIN_TITLE_CREATEWITH": "создај текст со", + "TEXT_CREATE_JOIN_TITLE_JOIN": "поврзи", + "TEXT_CREATE_JOIN_TOOLTIP": "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „текст“.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Додај ставка кон текстот.", + "TEXT_LENGTH_TITLE": "должина на %1", + "TEXT_ISEMPTY_TITLE": "%1 е празен", + "TEXT_INDEXOF_TITLE": "во текст %1 %2 %3", + "TEXT_CHARAT_TITLE": "во текст %1 %2", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "во текстот", + "TEXT_COUNT_MESSAGE0": "пресметка на %1 во %2", + "TEXT_REPLACE_MESSAGE0": "замени го %1 со %2 во %3", + "LISTS_CREATE_EMPTY_TITLE": "создај празен список", + "LISTS_CREATE_WITH_INPUT_WITH": "создај список со", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "список", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Додај, отстрани или пререди ги деловите за прераспоредување на овој блок „список“.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Додај ставка кон списокот.", + "LISTS_LENGTH_TITLE": "должина на %1", + "LISTS_ISEMPTY_TITLE": "%1 е празен", + "LISTS_INLIST": "во списокот", + "LISTS_GET_INDEX_REMOVE": "отстрани", + "LISTS_GET_INDEX_FROM_END": "# од крајот", + "LISTS_GET_INDEX_FIRST": "прв", + "LISTS_GET_INDEX_LAST": "последен", + "LISTS_GET_INDEX_RANDOM": "случаен", + "LISTS_SET_INDEX_SET": "задај", + "LISTS_SET_INDEX_INSERT": "вметни на", + "LISTS_SET_INDEX_INPUT_TO": "како", + "LISTS_SORT_TITLE": "подреди %1 %2 %3", + "VARIABLES_GET_CREATE_SET": "Создај „задавање на %1“", + "VARIABLES_SET": "задај %1 на %2", + "PROCEDURES_DEFNORETURN_TITLE": "за да", + "PROCEDURES_DEFNORETURN_PROCEDURE": "направиш", + "PROCEDURES_BEFORE_PARAMS": "со:", + "PROCEDURES_CALL_BEFORE_PARAMS": "со:", + "PROCEDURES_DEFNORETURN_COMMENT": "Опишете ја оваа функција...", + "PROCEDURES_DEFRETURN_RETURN": "назад", + "PROCEDURES_ALLOW_STATEMENTS": "дозволи тврдења", + "PROCEDURES_CALLNORETURN_HELPURL": "https://mk.wikipedia.org/wiki/Потпрограма", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Додај, отстрани или пренареди ги влезните параметри за оваа функција.", + "PROCEDURES_CREATE_DO": "Создај го '%1'", + "WORKSPACE_ARIA_LABEL": "Работен простор на Blockly", + "DIALOG_OK": "ОК", + "DIALOG_CANCEL": "Откажи" +} diff --git a/msg/json/ml.json b/msg/json/ml.json index 6c93425605f..81860575914 100644 --- a/msg/json/ml.json +++ b/msg/json/ml.json @@ -1,35 +1,35 @@ -{ - "@metadata": { - "authors": [ - "Adithyak1997" - ] - }, - "VARIABLES_DEFAULT_NAME": "ഇനം", - "UNNAMED_KEY": "പേരില്ലാത്തവ", - "TODAY": "ഇന്ന്", - "DUPLICATE_BLOCK": "പകർപ്പ്", - "ADD_COMMENT": "അഭിപ്രായം ചേർക്കുക", - "REMOVE_COMMENT": "അഭിപ്രായം ഒഴിവാക്കുക", - "HELP": "സഹായം", - "UNDO": "തിരസ്കരിക്കുക", - "REDO": "വീണ്ടും ചെയ്യുക", - "RENAME_VARIABLE": "ചരത്തിന്റെ പേര് മാറ്റുക...", - "NEW_VARIABLE": "ചരം സൃഷ്ടിക്കുക...", - "NEW_STRING_VARIABLE": "സ്ട്രിങ് ചരം സൃഷ്ടിക്കുക...", - "NEW_NUMBER_VARIABLE": "ക്രമസംഖ്യ ചരം സൃഷ്ടിക്കുക...", - "NEW_COLOUR_VARIABLE": "നിറം ചരം സൃഷ്ടിക്കുക...", - "NEW_VARIABLE_TITLE": "പുതിയ ചരത്തിന്റെ പേര്:", - "VARIABLE_ALREADY_EXISTS": "\"%1\" എന്ന പേരിലുള്ള ചരം നിലവിലുണ്ട്.", - "COLOUR_RANDOM_TITLE": "ക്രമരഹിത നിറം", - "COLOUR_RANDOM_TOOLTIP": "ക്രമരഹിതമായി ഒരു നിറം തിരഞ്ഞെടുക്കുക.", - "COLOUR_RGB_RED": "ചുവപ്പ്", - "COLOUR_RGB_GREEN": "പച്ച", - "COLOUR_RGB_BLUE": "നീല", - "COLOUR_BLEND_COLOUR1": "ഒന്നാം നിറം", - "COLOUR_BLEND_COLOUR2": "രണ്ടാം നിറം", - "COLOUR_BLEND_RATIO": "അനുപാതം", - "CONTROLS_REPEAT_TITLE": "%1 തവണ ആവർത്തിക്കുക", - "CONTROLS_REPEAT_TOOLTIP": "ചില വരികൾ കൂടുതൽ തവണ ചെയ്യുക.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "കുരുക്കിന് പുറത്തുകടക്കുക", - "DIALOG_OK": "ശരി" -} +{ + "@metadata": { + "authors": [ + "Adithyak1997" + ] + }, + "VARIABLES_DEFAULT_NAME": "ഇനം", + "UNNAMED_KEY": "പേരില്ലാത്തവ", + "TODAY": "ഇന്ന്", + "DUPLICATE_BLOCK": "പകർപ്പ്", + "ADD_COMMENT": "അഭിപ്രായം ചേർക്കുക", + "REMOVE_COMMENT": "അഭിപ്രായം ഒഴിവാക്കുക", + "HELP": "സഹായം", + "UNDO": "തിരസ്കരിക്കുക", + "REDO": "വീണ്ടും ചെയ്യുക", + "RENAME_VARIABLE": "ചരത്തിന്റെ പേര് മാറ്റുക...", + "NEW_VARIABLE": "ചരം സൃഷ്ടിക്കുക...", + "NEW_STRING_VARIABLE": "സ്ട്രിങ് ചരം സൃഷ്ടിക്കുക...", + "NEW_NUMBER_VARIABLE": "ക്രമസംഖ്യ ചരം സൃഷ്ടിക്കുക...", + "NEW_COLOUR_VARIABLE": "നിറം ചരം സൃഷ്ടിക്കുക...", + "NEW_VARIABLE_TITLE": "പുതിയ ചരത്തിന്റെ പേര്:", + "VARIABLE_ALREADY_EXISTS": "\"%1\" എന്ന പേരിലുള്ള ചരം നിലവിലുണ്ട്.", + "COLOUR_RANDOM_TITLE": "ക്രമരഹിത നിറം", + "COLOUR_RANDOM_TOOLTIP": "ക്രമരഹിതമായി ഒരു നിറം തിരഞ്ഞെടുക്കുക.", + "COLOUR_RGB_RED": "ചുവപ്പ്", + "COLOUR_RGB_GREEN": "പച്ച", + "COLOUR_RGB_BLUE": "നീല", + "COLOUR_BLEND_COLOUR1": "ഒന്നാം നിറം", + "COLOUR_BLEND_COLOUR2": "രണ്ടാം നിറം", + "COLOUR_BLEND_RATIO": "അനുപാതം", + "CONTROLS_REPEAT_TITLE": "%1 തവണ ആവർത്തിക്കുക", + "CONTROLS_REPEAT_TOOLTIP": "ചില വരികൾ കൂടുതൽ തവണ ചെയ്യുക.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "കുരുക്കിന് പുറത്തുകടക്കുക", + "DIALOG_OK": "ശരി" +} diff --git a/msg/json/mnw.json b/msg/json/mnw.json index cbb4db5f79b..e3cb40890a1 100644 --- a/msg/json/mnw.json +++ b/msg/json/mnw.json @@ -1,94 +1,94 @@ -{ - "@metadata": { - "authors": [ - "Aue Nai", - "Htawmonzel" - ] - }, - "VARIABLES_DEFAULT_NAME": "ဒကုတ်", - "TODAY": "တ္ၚဲဏအ်", - "DUPLICATE_BLOCK": "ချာဲ", - "ADD_COMMENT": "စုတ် လညာတ်", - "REMOVE_COMMENT": "ပဲါပ္တိတ် လညာတ်", - "DUPLICATE_COMMENT": "ချာဲ လညာတ်", - "EXTERNAL_INPUTS": "မစုတ် ဗွဲမ္ၚး", - "INLINE_INPUTS": "မစုတ် ဗွဲအပ္ဍဲ", - "DELETE_BLOCK": "ဇိုတ်ပလီု ဗလံက်", - "DELETE_X_BLOCKS": "ဇိုတ်ပလီု %1 ဗလံက်ဂမၠိုင်", - "DELETE_ALL_BLOCKS": "ဇိုတ်ပလီု %1 ဗလံက် သီုဖအိုတ်ဟာ?", - "CLEAN_UP": "ဖအး ဗလံက်", - "COLLAPSE_BLOCK": "ဖဍိုန်ဖ္ဍောတ် ဗလံက်", - "COLLAPSE_ALL": "ဖဍိုန်ဖ္ဍောတ် ဗလံက်ဂမၠိုင်", - "EXPAND_BLOCK": "ဗဇာပတိုန် ဗလံက်", - "EXPAND_ALL": "ဗဇာပတိုန် ဗလံက်ဂမၠိုင်", - "DISABLE_BLOCK": "ပဟွံသၟဟ်အစောံ ဗလံက်", - "ENABLE_BLOCK": "ပသၟဟ်အစောံ ဗလံက်", - "HELP": "ရီု", - "UNDO": "ဟွံပ", - "REDO": "ကလေင်ပ", - "CHANGE_VALUE_TITLE": "သၠာဲ ဍာ်ဒကေဝ်", - "RENAME_VARIABLE": "ကလေင်ကဵုယၟု မပြံင်လှာဲ...", - "RENAME_VARIABLE_TITLE": "'%1' သီုဖအိုတ်ဂှ် ကဵုယၟုတၟိ ပြံင်လှာဲထောအ်:", - "NEW_VARIABLE": "အဃောမပြံင်လှာဲဒၟံင်...", - "NEW_STRING_VARIABLE": "အဃောမပြံင်လှာဲကၠောန်ဒၟံင် လၟေင်...", - "NEW_NUMBER_VARIABLE": "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် လၟိဟ်ဂၞန်...", - "NEW_COLOUR_VARIABLE": "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် အသာ်...", - "NEW_VARIABLE_TYPE_TITLE": "ဗီုပြင် မပြံင်လှာဲလဝ် တၟိ -", - "NEW_VARIABLE_TITLE": "ယၟု မပြံင်လှာဲလဝ် တၟိ -", - "VARIABLE_ALREADY_EXISTS": "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ၊၊", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ နကဵုဗီုပြင်တၞဟ် - '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "ဇိုတ်ပလီု %1 တုဲ ရပ်စပ် '%2' နဒဒှ်မပြံင်လှာဲဟာ?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "မပြံင်လှာဲ '%1' ဂှ် ဇိုတ်ပလီု ဟွံဂွံ၊ ဟိုတ်နူ ဍေဟ်ဂှ် ဆက်စပ်ဒၟံင် ကုဝှင်ရှေန် '%2'", - "DELETE_VARIABLE": "ဇိုတ်ပလီု အပြံင်အလှာဲ '%1'", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "ရုဲကေတ် အသာ် မွဲ နူကဵု ဖလာတ်", - "COLOUR_RANDOM_TITLE": "ဇျောမ်ကေတ် အသာ်", - "COLOUR_RANDOM_TOOLTIP": "ရုဲစှ်ကေတ် အသာ် မွဲ ပ္ဍဲ ဇဟောမ်", - "COLOUR_RGB_TITLE": "နကဵု အသာ်", - "COLOUR_RGB_RED": "ဗကေတ်", - "COLOUR_RGB_GREEN": "သာ်ၚေက်", - "COLOUR_RGB_BLUE": "သာ်ဍီု", - "COLOUR_RGB_TOOLTIP": "ခၞံကၠောန်ကေတ် အသာ်တၟေင် အကြာ ဗကေတ်၊ သာ်ၚေက်၊ သာ်ဍီု၊၊ ဍာ်ဒကေဝ် သီုဖအိုတ် သ္ဒးဒှ် အကြာ ၀ ကဵု ၁၀၀၊၊", - "COLOUR_BLEND_TITLE": "ပနှဴ", - "COLOUR_BLEND_COLOUR1": "အသာ် ၁", - "COLOUR_BLEND_COLOUR2": "အသာ် ၂", - "COLOUR_BLEND_RATIO": "ဗၞတ်ဗ္ၜတ်", - "COLOUR_BLEND_TOOLTIP": "ပနှဴ အသာ် ၜါ နကဵု ဗၞတ်ဗ္ၜတ် (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "ထပ်ဂလိုင်ပတိုန် %1 နာဍဳ", - "CONTROLS_REPEAT_INPUT_DO": "ပ", - "CONTROLS_REPEAT_TOOLTIP": "ကၠောန်ပတိတ် လလောင်တြး မဂၠိုင် ကုအလန်၊၊", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ထပ်ဂလိုင်ပတိုန် အခိင်", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ထပ်ဂလိုင်ပတိုန် စဵုကဵု", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ဍာ်ဒကေတ် ဍေဟ် ဒး၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ဍာ်ဒကေဝ် ဍေဟ် ဗၠေတ်၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊", - "CONTROLS_FOR_TOOLTIP": "ကလိဂွံ ပရေင်အပြံင်အလှာဲ '%1'ဏအ် ကေတ် ဍာ်ဒကေဝ် နူကဵု လၟိဟ်ဂၞန်စ စဵုကဵု လၟိဟ်ဂၞန်အိုတ်၊ မရိုဟ်လၟိဟ် နကဵုဗၞတ်ဗ္ၜတ် ဗွဲတၟေင် တုဲ ကၠောန်ပ ဗလံက် ဗွဲတၟေင်၊၊", - "CONTROLS_FOR_TITLE": "ရိုဟ်လၟိဟ် %1 နူ %2 စဵုကဵု %3 နကဵု %4", - "CONTROLS_FOREACH_TITLE": "သွက်ဇၟာပ် ဒကုတ် %1 ပ္ဍဲ စရင် %2", - "CONTROLS_FOREACH_TOOLTIP": "သွက်ဇၟာပ် ဒကုတ် ပ္ဍဲစရင်မွဲ မစုတ်လဝ် ပရေင်ပြံင်လှာဲ %1 သွက် ဒကုတ်၊ တုဲမ္ဂး ကၠောန်ပ တင်ဂရင်ဗ္တီ၊၊", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ကၟာတ်ထောအ် loop", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ဆက်ကၠောန် နကဵု ပရေင်ချဳဒရာင်ဗွဲအပ္ဍဲ loop", - "CONTROLS_IF_MSG_IF": "ယဝ်ရ", - "CONTROLS_IF_MSG_ELSEIF": "ယဝ်နွံမံၚ်ဏီ", - "CONTROLS_IF_MSG_ELSE": "မုနွံ", - "CONTROLS_IF_IF_TOOLTIP": "ထပ်, ပတိတ်, ဟွံသေၚ် ကလေၚ်ဖျေံလၟေၚ် ရုဲစှ် သွက်ဂွံကလေၚ်ထမံက်ဣဏံ ယဝ်ရကၟာတ်မ္ဂး", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/ဟွံညဳသၟဟ်_(သၚ်္ချာဂမၠိုၚ်)", - "LOGIC_OPERATION_AND": "ကေုာံ", - "LOGIC_OPERATION_OR": "ဟွံသေင်မ္ဂး", - "LOGIC_NEGATE_TITLE": "ဟွံသေၚ် %1", - "LOGIC_NEGATE_TOOLTIP": "ကလေၚ်မဍာံတေံ ယဝ်ရတၚ်စုတ်ဏံဗၠေတ်မ္ဂး. ကလေၚ်မဗၠောတ်တေံ ယဝ်ရတၚ်စုတ်ဏံဒးမ္ဂး", - "LOGIC_BOOLEAN_TRUE": "ဍာံ", - "LOGIC_BOOLEAN_FALSE": "ဗၠေတ်", - "LOGIC_BOOLEAN_TOOLTIP": "ကလေၚ် ဍာံလေဝ်ဟွံသေၚ် ဗၠောတ်လေဝ်ဟွံသေၚ်", - "LOGIC_NULL": "ကၠိခန်", - "LOGIC_NULL_TOOLTIP": "ကလေၚ်ဟွံလုပ်အဝေါၚ်", - "LOGIC_TERNARY_CONDITION": "စမ်ၜတ်", - "LOGIC_TERNARY_IF_TRUE": "ယဝ်ဍာံ", - "LOGIC_TERNARY_IF_FALSE": "ယဝ်ဗၠေတ်", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "မဂၞန်မွဲ", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ABSOLUTE": "ဍာံဍာံ", - "DIALOG_CANCEL": "တးပဲါ" -} +{ + "@metadata": { + "authors": [ + "Aue Nai", + "Htawmonzel" + ] + }, + "VARIABLES_DEFAULT_NAME": "ဒကုတ်", + "TODAY": "တ္ၚဲဏအ်", + "DUPLICATE_BLOCK": "ချာဲ", + "ADD_COMMENT": "စုတ် လညာတ်", + "REMOVE_COMMENT": "ပဲါပ္တိတ် လညာတ်", + "DUPLICATE_COMMENT": "ချာဲ လညာတ်", + "EXTERNAL_INPUTS": "မစုတ် ဗွဲမ္ၚး", + "INLINE_INPUTS": "မစုတ် ဗွဲအပ္ဍဲ", + "DELETE_BLOCK": "ဇိုတ်ပလီု ဗလံက်", + "DELETE_X_BLOCKS": "ဇိုတ်ပလီု %1 ဗလံက်ဂမၠိုင်", + "DELETE_ALL_BLOCKS": "ဇိုတ်ပလီု %1 ဗလံက် သီုဖအိုတ်ဟာ?", + "CLEAN_UP": "ဖအး ဗလံက်", + "COLLAPSE_BLOCK": "ဖဍိုန်ဖ္ဍောတ် ဗလံက်", + "COLLAPSE_ALL": "ဖဍိုန်ဖ္ဍောတ် ဗလံက်ဂမၠိုင်", + "EXPAND_BLOCK": "ဗဇာပတိုန် ဗလံက်", + "EXPAND_ALL": "ဗဇာပတိုန် ဗလံက်ဂမၠိုင်", + "DISABLE_BLOCK": "ပဟွံသၟဟ်အစောံ ဗလံက်", + "ENABLE_BLOCK": "ပသၟဟ်အစောံ ဗလံက်", + "HELP": "ရီု", + "UNDO": "ဟွံပ", + "REDO": "ကလေင်ပ", + "CHANGE_VALUE_TITLE": "သၠာဲ ဍာ်ဒကေဝ်", + "RENAME_VARIABLE": "ကလေင်ကဵုယၟု မပြံင်လှာဲ...", + "RENAME_VARIABLE_TITLE": "'%1' သီုဖအိုတ်ဂှ် ကဵုယၟုတၟိ ပြံင်လှာဲထောအ်:", + "NEW_VARIABLE": "အဃောမပြံင်လှာဲဒၟံင်...", + "NEW_STRING_VARIABLE": "အဃောမပြံင်လှာဲကၠောန်ဒၟံင် လၟေင်...", + "NEW_NUMBER_VARIABLE": "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် လၟိဟ်ဂၞန်...", + "NEW_COLOUR_VARIABLE": "အဃောမပြံင်လှာဲ ကၠောန်ဒၟံင် အသာ်...", + "NEW_VARIABLE_TYPE_TITLE": "ဗီုပြင် မပြံင်လှာဲလဝ် တၟိ -", + "NEW_VARIABLE_TITLE": "ယၟု မပြံင်လှာဲလဝ် တၟိ -", + "VARIABLE_ALREADY_EXISTS": "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ၊၊", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ယၟုမပြံင်လှာဲ '%1' ဂှ် နွံဒၟံင်တုဲရ နကဵုဗီုပြင်တၞဟ် - '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "ဇိုတ်ပလီု %1 တုဲ ရပ်စပ် '%2' နဒဒှ်မပြံင်လှာဲဟာ?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "မပြံင်လှာဲ '%1' ဂှ် ဇိုတ်ပလီု ဟွံဂွံ၊ ဟိုတ်နူ ဍေဟ်ဂှ် ဆက်စပ်ဒၟံင် ကုဝှင်ရှေန် '%2'", + "DELETE_VARIABLE": "ဇိုတ်ပလီု အပြံင်အလှာဲ '%1'", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "ရုဲကေတ် အသာ် မွဲ နူကဵု ဖလာတ်", + "COLOUR_RANDOM_TITLE": "ဇျောမ်ကေတ် အသာ်", + "COLOUR_RANDOM_TOOLTIP": "ရုဲစှ်ကေတ် အသာ် မွဲ ပ္ဍဲ ဇဟောမ်", + "COLOUR_RGB_TITLE": "နကဵု အသာ်", + "COLOUR_RGB_RED": "ဗကေတ်", + "COLOUR_RGB_GREEN": "သာ်ၚေက်", + "COLOUR_RGB_BLUE": "သာ်ဍီု", + "COLOUR_RGB_TOOLTIP": "ခၞံကၠောန်ကေတ် အသာ်တၟေင် အကြာ ဗကေတ်၊ သာ်ၚေက်၊ သာ်ဍီု၊၊ ဍာ်ဒကေဝ် သီုဖအိုတ် သ္ဒးဒှ် အကြာ ၀ ကဵု ၁၀၀၊၊", + "COLOUR_BLEND_TITLE": "ပနှဴ", + "COLOUR_BLEND_COLOUR1": "အသာ် ၁", + "COLOUR_BLEND_COLOUR2": "အသာ် ၂", + "COLOUR_BLEND_RATIO": "ဗၞတ်ဗ္ၜတ်", + "COLOUR_BLEND_TOOLTIP": "ပနှဴ အသာ် ၜါ နကဵု ဗၞတ်ဗ္ၜတ် (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "ထပ်ဂလိုင်ပတိုန် %1 နာဍဳ", + "CONTROLS_REPEAT_INPUT_DO": "ပ", + "CONTROLS_REPEAT_TOOLTIP": "ကၠောန်ပတိတ် လလောင်တြး မဂၠိုင် ကုအလန်၊၊", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ထပ်ဂလိုင်ပတိုန် အခိင်", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ထပ်ဂလိုင်ပတိုန် စဵုကဵု", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ဍာ်ဒကေတ် ဍေဟ် ဒး၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ဍာ်ဒကေဝ် ဍေဟ် ဗၠေတ်၊ တုဲ ကၠောန်ပ လိက်ဂရင်ဗတီ၊၊", + "CONTROLS_FOR_TOOLTIP": "ကလိဂွံ ပရေင်အပြံင်အလှာဲ '%1'ဏအ် ကေတ် ဍာ်ဒကေဝ် နူကဵု လၟိဟ်ဂၞန်စ စဵုကဵု လၟိဟ်ဂၞန်အိုတ်၊ မရိုဟ်လၟိဟ် နကဵုဗၞတ်ဗ္ၜတ် ဗွဲတၟေင် တုဲ ကၠောန်ပ ဗလံက် ဗွဲတၟေင်၊၊", + "CONTROLS_FOR_TITLE": "ရိုဟ်လၟိဟ် %1 နူ %2 စဵုကဵု %3 နကဵု %4", + "CONTROLS_FOREACH_TITLE": "သွက်ဇၟာပ် ဒကုတ် %1 ပ္ဍဲ စရင် %2", + "CONTROLS_FOREACH_TOOLTIP": "သွက်ဇၟာပ် ဒကုတ် ပ္ဍဲစရင်မွဲ မစုတ်လဝ် ပရေင်ပြံင်လှာဲ %1 သွက် ဒကုတ်၊ တုဲမ္ဂး ကၠောန်ပ တင်ဂရင်ဗ္တီ၊၊", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ကၟာတ်ထောအ် loop", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ဆက်ကၠောန် နကဵု ပရေင်ချဳဒရာင်ဗွဲအပ္ဍဲ loop", + "CONTROLS_IF_MSG_IF": "ယဝ်ရ", + "CONTROLS_IF_MSG_ELSEIF": "ယဝ်နွံမံၚ်ဏီ", + "CONTROLS_IF_MSG_ELSE": "မုနွံ", + "CONTROLS_IF_IF_TOOLTIP": "ထပ်, ပတိတ်, ဟွံသေၚ် ကလေၚ်ဖျေံလၟေၚ် ရုဲစှ် သွက်ဂွံကလေၚ်ထမံက်ဣဏံ ယဝ်ရကၟာတ်မ္ဂး", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/ဟွံညဳသၟဟ်_(သၚ်္ချာဂမၠိုၚ်)", + "LOGIC_OPERATION_AND": "ကေုာံ", + "LOGIC_OPERATION_OR": "ဟွံသေင်မ္ဂး", + "LOGIC_NEGATE_TITLE": "ဟွံသေၚ် %1", + "LOGIC_NEGATE_TOOLTIP": "ကလေၚ်မဍာံတေံ ယဝ်ရတၚ်စုတ်ဏံဗၠေတ်မ္ဂး. ကလေၚ်မဗၠောတ်တေံ ယဝ်ရတၚ်စုတ်ဏံဒးမ္ဂး", + "LOGIC_BOOLEAN_TRUE": "ဍာံ", + "LOGIC_BOOLEAN_FALSE": "ဗၠေတ်", + "LOGIC_BOOLEAN_TOOLTIP": "ကလေၚ် ဍာံလေဝ်ဟွံသေၚ် ဗၠောတ်လေဝ်ဟွံသေၚ်", + "LOGIC_NULL": "ကၠိခန်", + "LOGIC_NULL_TOOLTIP": "ကလေၚ်ဟွံလုပ်အဝေါၚ်", + "LOGIC_TERNARY_CONDITION": "စမ်ၜတ်", + "LOGIC_TERNARY_IF_TRUE": "ယဝ်ဍာံ", + "LOGIC_TERNARY_IF_FALSE": "ယဝ်ဗၠေတ်", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "မဂၞန်မွဲ", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ABSOLUTE": "ဍာံဍာံ", + "DIALOG_CANCEL": "တးပဲါ" +} diff --git a/msg/json/ms.json b/msg/json/ms.json index 854cbfdf303..c2472fd5e23 100644 --- a/msg/json/ms.json +++ b/msg/json/ms.json @@ -1,313 +1,313 @@ -{ - "@metadata": { - "authors": [ - "Anakmalaysia", - "Espertus" - ] - }, - "VARIABLES_DEFAULT_NAME": "Perkara", - "TODAY": "Hari ini", - "DUPLICATE_BLOCK": "Pendua", - "ADD_COMMENT": "Berikan Komen", - "REMOVE_COMMENT": "Padamkan Komen", - "EXTERNAL_INPUTS": "Input Luaran", - "INLINE_INPUTS": "Input Sebaris", - "DELETE_BLOCK": "Hapuskan Blok", - "DELETE_X_BLOCKS": "Hapuskan %1 Blok", - "DELETE_ALL_BLOCKS": "Hapuskan kesemua %1 blok?", - "CLEAN_UP": "Kemaskan Blok", - "COLLAPSE_BLOCK": "Lipat Blok", - "COLLAPSE_ALL": "Lipat Blok²", - "EXPAND_BLOCK": "Buka Blok", - "EXPAND_ALL": "Buka Blok²", - "DISABLE_BLOCK": "Matikan Blok", - "ENABLE_BLOCK": "Hidupkan Blok", - "HELP": "Bantuan", - "CHANGE_VALUE_TITLE": "Ubah nilai:", - "RENAME_VARIABLE": "Tukar nama pembolehubah...", - "RENAME_VARIABLE_TITLE": "Tukar nama semua pembolehubah '%1' kepada:", - "NEW_VARIABLE": "Pembolehubah baru...", - "NEW_VARIABLE_TITLE": "Nama pembolehubah baru:", - "COLOUR_PICKER_HELPURL": "https://ms.wikipedia.org/wiki/Warna", - "COLOUR_PICKER_TOOLTIP": "Pilih satu warna daripada palet.", - "COLOUR_RANDOM_TITLE": "warna rawak", - "COLOUR_RANDOM_TOOLTIP": "Pilih satu warna secara rawak.", - "COLOUR_RGB_TITLE": "warnakan", - "COLOUR_RGB_RED": "merah", - "COLOUR_RGB_GREEN": "hijau", - "COLOUR_RGB_BLUE": "biru", - "COLOUR_RGB_TOOLTIP": "Peroleh satu warna dengan menentukan amaun campuran merah, hijau dan biru. Kesemua nilai haruslah antara 0 hingga 100.", - "COLOUR_BLEND_TITLE": "adun", - "COLOUR_BLEND_COLOUR1": "warna 1", - "COLOUR_BLEND_COLOUR2": "warna 2", - "COLOUR_BLEND_RATIO": "nisbah", - "COLOUR_BLEND_TOOLTIP": "Campurkan dua warna sekali pada nisbah yang ditentukan (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "ulang %1 kali", - "CONTROLS_REPEAT_INPUT_DO": "lakukan", - "CONTROLS_REPEAT_TOOLTIP": "Lakukan perintah berulang kali.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ulangi apabila", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ulangi sehingga", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Lakukan beberapa perintah apabila nilainya benar (true).", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Lakukan beberapa perintah apabila nilainya palsu (false).", - "CONTROLS_FOR_TOOLTIP": "Gunakan pembolehubah '%1' pada nilai-nilai dari nombor pangkal hingga nombor hujung, mengira mengikut selang yang ditentukan, dan lakukan blok-blok yang tertentu.", - "CONTROLS_FOR_TITLE": "kira dengan %1 dari %2 hingga %3 selang %4", - "CONTROLS_FOREACH_TITLE": "untuk setiap perkara %1 dalam senarai %2", - "CONTROLS_FOREACH_TOOLTIP": "Untuk setiap perkara dalam senarai, tetapkan pembolehubah '%1' pada perkara, kemudian lakukan beberapa perintah.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "hentikan gelung", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "teruskan dengan lelaran gelung seterusnya", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Keluar dari gelung pengandung.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Langkau seluruh gelung yang tinggal dan bersambung dengan lelaran seterusnya.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Amaran: Blok ini hanya boleh digunakan dalam satu gelung.", - "CONTROLS_IF_TOOLTIP_1": "Jika nilai yang benar, lakukan beberapa penyata.", - "CONTROLS_IF_TOOLTIP_2": "Jika suatu nilai benar, lakukan penyata blok pertama. Jika tidak, bina penyata blok kedua.", - "CONTROLS_IF_TOOLTIP_3": "Jika nilai yang pertama adalah benar, lakukan penyata pertama blok. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua.", - "CONTROLS_IF_TOOLTIP_4": "Jika nilai yang pertama adalah benar, lakukan penyata blok pertama. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua. Jika tiada nilai adalah benar, lakukan penyata blok terakhir.", - "CONTROLS_IF_MSG_IF": "jika", - "CONTROLS_IF_MSG_ELSEIF": "lain jika", - "CONTROLS_IF_MSG_ELSE": "lain", - "CONTROLS_IF_IF_TOOLTIP": "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula blok jika.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Tambah satu syarat kepada blok jika.", - "CONTROLS_IF_ELSE_TOOLTIP": "Tambah yang terakhir, alihkan semua keadaan ke blok jika.", - "LOGIC_COMPARE_HELPURL": "https://id.wikipedia.org/wiki/Pertidaksamaan", - "LOGIC_COMPARE_TOOLTIP_EQ": "Kembali benar jika kedua-dua input benar antara satu sama lain.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Taip balik benar jika kedua-dua input tidak sama.", - "LOGIC_COMPARE_TOOLTIP_LT": "Kembali benar jika input pertama adalah lebih kecil daripada input kedua.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Kembali benar jika input pertama adalah lebih kecil daripada atau sama dengan input kedua.", - "LOGIC_COMPARE_TOOLTIP_GT": "Kembali benar jika input pertama adalah lebih besar daripada input kedua.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Kembali benar jika input pertama adalah lebih besar daripada atau sama dengan input kedua.", - "LOGIC_OPERATION_TOOLTIP_AND": "Return true if both inputs are true.", - "LOGIC_OPERATION_AND": "dan", - "LOGIC_OPERATION_TOOLTIP_OR": "Return true if at least one of the inputs is true.", - "LOGIC_OPERATION_OR": "atau", - "LOGIC_NEGATE_TITLE": "bukan %1", - "LOGIC_NEGATE_TOOLTIP": "'Benar' akan dibalas jika inputnya salah. 'Salah' akan dibalas jika inputnya benar.", - "LOGIC_BOOLEAN_TRUE": "benar", - "LOGIC_BOOLEAN_FALSE": "palsu", - "LOGIC_BOOLEAN_TOOLTIP": "Kembalikan samada benar atau palsu.", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Returns null.", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "Jika benar", - "LOGIC_TERNARY_IF_FALSE": "Jika palsu", - "LOGIC_TERNARY_TOOLTIP": "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.", - "MATH_NUMBER_HELPURL": "https://ms.wikipedia.org/wiki/Nombor", - "MATH_NUMBER_TOOLTIP": "Suatu nombor.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://ms.wikipedia.org/wiki/Aritmetik", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Kembalikan jumlah kedua-dua bilangan.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Taip balik hasil tolak dua nombor tersebut.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Taip balik hasil darab dua nombor tersebut.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Taip balik hasil bahagi dua nombor tersebut.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Return the first number raised to the power of the second number.", - "MATH_SINGLE_HELPURL": "https://ms.wikipedia.org/wiki/Punca_kuasa_dua", - "MATH_SINGLE_OP_ROOT": "Punca kuasa dua", - "MATH_SINGLE_TOOLTIP_ROOT": "Kembalikan punca kuasa nombor.", - "MATH_SINGLE_OP_ABSOLUTE": "mutlak", - "MATH_SINGLE_TOOLTIP_ABS": "Kembalikan nilai mutlak suatu nombor.", - "MATH_SINGLE_TOOLTIP_NEG": "Kembalikan nombor yang songsang.", - "MATH_SINGLE_TOOLTIP_LN": "Kembali dalam logaritma nombor asli.", - "MATH_SINGLE_TOOLTIP_LOG10": "Kembali logarithm 10 asas nombor.", - "MATH_SINGLE_TOOLTIP_EXP": "Kembalikan e kepada kuasa nombor.", - "MATH_SINGLE_TOOLTIP_POW10": "Kembalikan 10 kepada kuasa nombor.", - "MATH_TRIG_HELPURL": "https://ms.wikipedia.org/wiki/Fungsi_trigonometri", - "MATH_TRIG_TOOLTIP_SIN": "Kembalikan darjah sine (bukan radian).", - "MATH_TRIG_TOOLTIP_COS": "Kembalikan darjah kosinus (bukan radian).", - "MATH_TRIG_TOOLTIP_TAN": "Kembalikan darjah tangen (bukan radian).", - "MATH_TRIG_TOOLTIP_ASIN": "Kembalikan arcsince beberapa nombor.", - "MATH_TRIG_TOOLTIP_ACOS": "Kembali arccosine beberapa nombor.", - "MATH_TRIG_TOOLTIP_ATAN": "Kembalikan beberapa nombor arctangent.", - "MATH_CONSTANT_HELPURL": "https://ms.wikipedia.org/wiki/Pemalar_matematik", - "MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", - "MATH_IS_EVEN": "Adalah genap", - "MATH_IS_ODD": "aneh", - "MATH_IS_PRIME": "is prime", - "MATH_IS_WHOLE": "is whole", - "MATH_IS_POSITIVE": "adalah positif", - "MATH_IS_NEGATIVE": "negatif", - "MATH_IS_DIVISIBLE_BY": "Boleh dibahagikan dengan", - "MATH_IS_TOOLTIP": "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.", - "MATH_CHANGE_HELPURL": "https://id.wikipedia.org/wiki/Perjumlahan", - "MATH_CHANGE_TITLE": "perubahan %1 oleh %2", - "MATH_CHANGE_TOOLTIP": "Tambah nombor kepada pembolehubah '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Bulat nombor yang naik atau turun.", - "MATH_ROUND_OPERATOR_ROUND": "pusingan", - "MATH_ROUND_OPERATOR_ROUNDUP": "pusingan ke atas", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "Pusingan ke bawah", - "MATH_ONLIST_OPERATOR_SUM": "Jumlah senarai", - "MATH_ONLIST_TOOLTIP_SUM": "Kembalikan jumlah semua nombor dalam senarai.", - "MATH_ONLIST_OPERATOR_MIN": "min dalam senarai", - "MATH_ONLIST_TOOLTIP_MIN": "Kembalikan nombor terkecil dalam senarai.", - "MATH_ONLIST_OPERATOR_MAX": "Max senarai", - "MATH_ONLIST_TOOLTIP_MAX": "Pulangkan jumlah terbesar dalam senarai.", - "MATH_ONLIST_OPERATOR_AVERAGE": "purata daripada senarai", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Kembalikan purata (min aritmetik) nilai-nilai angka di dalam senarai.", - "MATH_ONLIST_OPERATOR_MEDIAN": "Median senarai", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Kembalikan nombor median dalam senarai.", - "MATH_ONLIST_OPERATOR_MODE": "jenis senarai", - "MATH_ONLIST_TOOLTIP_MODE": "Kembali senarai item yang paling biasa dalam senarai.", - "MATH_ONLIST_OPERATOR_STD_DEV": "sisihan piawai bagi senarai", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Kembali dengan sisihan piawai daripada senarai.", - "MATH_ONLIST_OPERATOR_RANDOM": "Item rawak daripada senarai", - "MATH_ONLIST_TOOLTIP_RANDOM": "Kembalikan elemen rawak daripada senarai.", - "MATH_MODULO_HELPURL": "https://id.wikipedia.org/wiki/Operasi_modulus", - "MATH_MODULO_TITLE": "remainder of %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Taip balik baki yang didapat daripada pembahagian dua nombor tersebut.", - "MATH_CONSTRAIN_TITLE": "constrain %1 low %2 high %3", - "MATH_CONSTRAIN_TOOLTIP": "Constrain a number to be between the specified limits (inclusive).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "integer rawak dari %1ke %2", - "MATH_RANDOM_INT_TOOLTIP": "Kembalikan integer rawak diantara dua had yang ditentukan, inklusif.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "pecahan rawak", - "MATH_RANDOM_FLOAT_TOOLTIP": "Kembali sebahagian kecil rawak antara 0.0 (inklusif) dan 1.0 (eksklusif).", - "TEXT_TEXT_HELPURL": "https://ms.wikipedia.org/wiki/Rentetan", - "TEXT_TEXT_TOOLTIP": "Huruf, perkataan, atau baris teks.", - "TEXT_JOIN_TITLE_CREATEWITH": "hasilkan teks dengan", - "TEXT_JOIN_TOOLTIP": "Hasilkan sebahagian teks dengan menghubungkan apa jua nombor item.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "Sertai", - "TEXT_CREATE_JOIN_TOOLTIP": "Add, remove, or reorder sections to reconfigure this text block.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Add an item to the text.", - "TEXT_APPEND_TOOLTIP": "Append some text to variable '%1'.", - "TEXT_LENGTH_TITLE": "panjang %1", - "TEXT_LENGTH_TOOLTIP": "Kembalikan jumlah huruf (termasuk ruang) dalam teks yang disediakan.", - "TEXT_ISEMPTY_TITLE": "%1 adalah kosong", - "TEXT_ISEMPTY_TOOLTIP": "Kembalikan benar jika teks yang disediakan adalah kosong.", - "TEXT_INDEXOF_TOOLTIP": "Kembalikan Indeks kejadian pertama/terakhir dari teks pertama ke dalam teks kedua. Kembalikan %1 Jika teks tidak ditemui.", - "TEXT_INDEXOF_TITLE": "dalam teks %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "mencari kejadian pertama teks", - "TEXT_INDEXOF_OPERATOR_LAST": "mencari kejadian terakhir teks", - "TEXT_CHARAT_FROM_START": "get letter #", - "TEXT_CHARAT_FROM_END": "get letter # from end", - "TEXT_CHARAT_FIRST": "get first letter", - "TEXT_CHARAT_LAST": "Dapatkan abjad terakhir", - "TEXT_CHARAT_RANDOM": "Dapatkan abjad rawak", - "TEXT_CHARAT_TOOLTIP": "Returns the letter at the specified position.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Returns a specified portion of the text.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "dalam teks", - "TEXT_GET_SUBSTRING_START_FROM_START": "get substring from letter #", - "TEXT_GET_SUBSTRING_START_FROM_END": "get substring from letter # from end", - "TEXT_GET_SUBSTRING_START_FIRST": "get substring from first letter", - "TEXT_GET_SUBSTRING_END_FROM_START": "to letter #", - "TEXT_GET_SUBSTRING_END_FROM_END": "to letter # from end", - "TEXT_GET_SUBSTRING_END_LAST": "untuk huruf terakhir", - "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "Kepada HURUF BESAR", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "Kepada huruf kecil", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "to Title Case", - "TEXT_TRIM_TOOLTIP": "Kembali salinan teks dengan ruang yang dikeluarkan daripada satu atau hujung kedua belah.", - "TEXT_TRIM_OPERATOR_BOTH": "mengurangkan kawasan dari kedua-dua belah", - "TEXT_TRIM_OPERATOR_LEFT": "mengurangkan ruang dari sebelah kiri", - "TEXT_TRIM_OPERATOR_RIGHT": "mengurangkan kawasan dari sisi kanan", - "TEXT_PRINT_TITLE": "cetak %1", - "TEXT_PRINT_TOOLTIP": "Cetak teks yang ditentukan, nombor atau nilai lain.", - "TEXT_PROMPT_TYPE_TEXT": "Prom untuk teks dengan mesej", - "TEXT_PROMPT_TYPE_NUMBER": "Prom untuk nombor dengan mesej", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Peringatan kepada pengguna untuk nombor.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Peringatkan pengguna untuk sebahagian teks.", - "LISTS_CREATE_EMPTY_TITLE": "Wujudkan senarai kosong", - "LISTS_CREATE_EMPTY_TOOLTIP": "Kembalikan senarai panjang 0, yang tidak mengandungi rekod data", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Wujudkan senarai dengan apa jua nombor item.", - "LISTS_CREATE_WITH_INPUT_WITH": "wujudkan senarai dengan", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "senarai", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula senarai blok.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Tambah item ke dalam senarai.", - "LISTS_REPEAT_TOOLTIP": "Wujudkan senarai yang terdiri daripada nilai berulang mengikut nombor yang ditentukan.", - "LISTS_REPEAT_TITLE": "wujudkan senarai dengan item %1 diulangi %2 kali", - "LISTS_LENGTH_TITLE": "panjang %1", - "LISTS_LENGTH_TOOLTIP": "Kembalikan panjang senarai", - "LISTS_ISEMPTY_TITLE": "%1 adalah kosong", - "LISTS_ISEMPTY_TOOLTIP": "Kembalikan benar jika senarai kosong.", - "LISTS_INLIST": "dalam senarai", - "LISTS_INDEX_OF_FIRST": "cari pertama item kejadian", - "LISTS_INDEX_OF_LAST": "cari kejadian akhir item", - "LISTS_INDEX_OF_TOOLTIP": "Menyatakan indeks kejadian pertama/terakhir item berkenaan dalam senarai. Menyatakan %1 jika item berkenaan tidak ditemui.", - "LISTS_GET_INDEX_GET": "dapatkan", - "LISTS_GET_INDEX_GET_REMOVE": "dapat dan alihkan", - "LISTS_GET_INDEX_REMOVE": "alihkan", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# dari akhir", - "LISTS_GET_INDEX_FIRST": "pertama", - "LISTS_GET_INDEX_LAST": "terakhir", - "LISTS_GET_INDEX_RANDOM": "rawak", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ialah item pertama.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ialah item terakhir.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Kembalikan item dalam kedudukan yang ditetapkan dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Kembalikan item pertama dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Kembalikan item pertama dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Kembalikan item rawak dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Alihkan dan kembalikan item mengikut spesifikasi posisi dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Alihkan dan kembalikan item pertama dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Alihkan dan kembalikan item terakhir dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Alihkan dan kembalikan item rawak dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Alihkan item pada posisi mengikut spesifikasi dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Alihkan item pertama dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Alihkan item terakhir dalam senarai.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Alihkan item rawak dalam senarai.", - "LISTS_SET_INDEX_SET": "set", - "LISTS_SET_INDEX_INSERT": "masukkan pada", - "LISTS_SET_INDEX_INPUT_TO": "sebagai", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Masukkan item pada posisi yang ditentukan dalam senarai.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Set item pertama dalam senarai.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Set item terakhir dalam senarai.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Set item rawak dalam senarai.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Masukkan item pada posisi yand ditentukan dalam senarai.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Selit item pada permulaan senarai.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Tambahkan item dalam senarai akhir.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Selit item secara rawak di dalam senarai.", - "LISTS_GET_SUBLIST_START_FROM_START": "dapatkan sub-senarai daripada #", - "LISTS_GET_SUBLIST_START_FROM_END": "dapatkan sub-senarai daripada # daripada terakhir", - "LISTS_GET_SUBLIST_START_FIRST": "dapatkan sub-senarai daripada pertama", - "LISTS_GET_SUBLIST_END_FROM_START": "ke #", - "LISTS_GET_SUBLIST_END_FROM_END": "ke # dari akhir", - "LISTS_GET_SUBLIST_END_LAST": "ke akhir", - "LISTS_GET_SUBLIST_TOOLTIP": "Wujudkan salinan bahagian yang ditentukan dari senarai.", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "buat senarai dgn teks", - "LISTS_SPLIT_TEXT_FROM_LIST": "buat teks drpd senarai", - "LISTS_SPLIT_WITH_DELIMITER": "dengan delimiter", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Pecahkan teks kepada senarai teks, berpecah di setiap delimiter.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Cantumkan senarai teks menjadi satu teks, dipecahkan oleh delimiter.", - "VARIABLES_GET_TOOLTIP": "Kembalikan nilai pemboleh ubah ini.", - "VARIABLES_GET_CREATE_SET": "Hasilkan 'set %1'", - "VARIABLES_SET": "set %1 ke %2", - "VARIABLES_SET_TOOLTIP": "Set pembolehubah ini supaya sama dengan input.", - "VARIABLES_SET_CREATE_GET": "Hasilkan 'set %1'", - "PROCEDURES_DEFNORETURN_TITLE": "Untuk", - "PROCEDURES_DEFNORETURN_PROCEDURE": "Buat sesuatu", - "PROCEDURES_BEFORE_PARAMS": "dengan:", - "PROCEDURES_CALL_BEFORE_PARAMS": "dengan:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Menghasilkan suatu fungsi tanpa output.", - "PROCEDURES_DEFNORETURN_COMMENT": "Terangkan fungsi ini...", - "PROCEDURES_DEFRETURN_RETURN": "kembali", - "PROCEDURES_DEFRETURN_TOOLTIP": "Mencipta satu fungsi dengan pengeluaran.", - "PROCEDURES_ALLOW_STATEMENTS": "bolehkan kenyataan", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Amaran: Fungsi ini mempunyai parameter yang berganda.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://ms.wikipedia.org/wiki/Fungsi", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Run the user-defined function '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://ms.wikipedia.org/wiki/Fungsi", - "PROCEDURES_CALLRETURN_TOOLTIP": "Run the user-defined function '%1' and use its output.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "Input-input", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Tambah, alih keluar atau susun semula input pada fungsi ini.", - "PROCEDURES_MUTATORARG_TITLE": "Nama input:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Tambah satu input pada fungsi.", - "PROCEDURES_HIGHLIGHT_DEF": "Serlahkan definisi fungsi", - "PROCEDURES_CREATE_DO": "Hasilkan '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "If a value is true, then return a second value.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Amaran: Blok ini hanya boleh digunakan dalam fungsi definisi.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Batalkan" -} +{ + "@metadata": { + "authors": [ + "Anakmalaysia", + "Espertus" + ] + }, + "VARIABLES_DEFAULT_NAME": "Perkara", + "TODAY": "Hari ini", + "DUPLICATE_BLOCK": "Pendua", + "ADD_COMMENT": "Berikan Komen", + "REMOVE_COMMENT": "Padamkan Komen", + "EXTERNAL_INPUTS": "Input Luaran", + "INLINE_INPUTS": "Input Sebaris", + "DELETE_BLOCK": "Hapuskan Blok", + "DELETE_X_BLOCKS": "Hapuskan %1 Blok", + "DELETE_ALL_BLOCKS": "Hapuskan kesemua %1 blok?", + "CLEAN_UP": "Kemaskan Blok", + "COLLAPSE_BLOCK": "Lipat Blok", + "COLLAPSE_ALL": "Lipat Blok²", + "EXPAND_BLOCK": "Buka Blok", + "EXPAND_ALL": "Buka Blok²", + "DISABLE_BLOCK": "Matikan Blok", + "ENABLE_BLOCK": "Hidupkan Blok", + "HELP": "Bantuan", + "CHANGE_VALUE_TITLE": "Ubah nilai:", + "RENAME_VARIABLE": "Tukar nama pembolehubah...", + "RENAME_VARIABLE_TITLE": "Tukar nama semua pembolehubah '%1' kepada:", + "NEW_VARIABLE": "Pembolehubah baru...", + "NEW_VARIABLE_TITLE": "Nama pembolehubah baru:", + "COLOUR_PICKER_HELPURL": "https://ms.wikipedia.org/wiki/Warna", + "COLOUR_PICKER_TOOLTIP": "Pilih satu warna daripada palet.", + "COLOUR_RANDOM_TITLE": "warna rawak", + "COLOUR_RANDOM_TOOLTIP": "Pilih satu warna secara rawak.", + "COLOUR_RGB_TITLE": "warnakan", + "COLOUR_RGB_RED": "merah", + "COLOUR_RGB_GREEN": "hijau", + "COLOUR_RGB_BLUE": "biru", + "COLOUR_RGB_TOOLTIP": "Peroleh satu warna dengan menentukan amaun campuran merah, hijau dan biru. Kesemua nilai haruslah antara 0 hingga 100.", + "COLOUR_BLEND_TITLE": "adun", + "COLOUR_BLEND_COLOUR1": "warna 1", + "COLOUR_BLEND_COLOUR2": "warna 2", + "COLOUR_BLEND_RATIO": "nisbah", + "COLOUR_BLEND_TOOLTIP": "Campurkan dua warna sekali pada nisbah yang ditentukan (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "ulang %1 kali", + "CONTROLS_REPEAT_INPUT_DO": "lakukan", + "CONTROLS_REPEAT_TOOLTIP": "Lakukan perintah berulang kali.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ulangi apabila", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ulangi sehingga", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Lakukan beberapa perintah apabila nilainya benar (true).", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Lakukan beberapa perintah apabila nilainya palsu (false).", + "CONTROLS_FOR_TOOLTIP": "Gunakan pembolehubah '%1' pada nilai-nilai dari nombor pangkal hingga nombor hujung, mengira mengikut selang yang ditentukan, dan lakukan blok-blok yang tertentu.", + "CONTROLS_FOR_TITLE": "kira dengan %1 dari %2 hingga %3 selang %4", + "CONTROLS_FOREACH_TITLE": "untuk setiap perkara %1 dalam senarai %2", + "CONTROLS_FOREACH_TOOLTIP": "Untuk setiap perkara dalam senarai, tetapkan pembolehubah '%1' pada perkara, kemudian lakukan beberapa perintah.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "hentikan gelung", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "teruskan dengan lelaran gelung seterusnya", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Keluar dari gelung pengandung.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Langkau seluruh gelung yang tinggal dan bersambung dengan lelaran seterusnya.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Amaran: Blok ini hanya boleh digunakan dalam satu gelung.", + "CONTROLS_IF_TOOLTIP_1": "Jika nilai yang benar, lakukan beberapa penyata.", + "CONTROLS_IF_TOOLTIP_2": "Jika suatu nilai benar, lakukan penyata blok pertama. Jika tidak, bina penyata blok kedua.", + "CONTROLS_IF_TOOLTIP_3": "Jika nilai yang pertama adalah benar, lakukan penyata pertama blok. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua.", + "CONTROLS_IF_TOOLTIP_4": "Jika nilai yang pertama adalah benar, lakukan penyata blok pertama. Sebaliknya, jika nilai kedua adalah benar, lakukan penyata blok kedua. Jika tiada nilai adalah benar, lakukan penyata blok terakhir.", + "CONTROLS_IF_MSG_IF": "jika", + "CONTROLS_IF_MSG_ELSEIF": "lain jika", + "CONTROLS_IF_MSG_ELSE": "lain", + "CONTROLS_IF_IF_TOOLTIP": "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula blok jika.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Tambah satu syarat kepada blok jika.", + "CONTROLS_IF_ELSE_TOOLTIP": "Tambah yang terakhir, alihkan semua keadaan ke blok jika.", + "LOGIC_COMPARE_HELPURL": "https://id.wikipedia.org/wiki/Pertidaksamaan", + "LOGIC_COMPARE_TOOLTIP_EQ": "Kembali benar jika kedua-dua input benar antara satu sama lain.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Taip balik benar jika kedua-dua input tidak sama.", + "LOGIC_COMPARE_TOOLTIP_LT": "Kembali benar jika input pertama adalah lebih kecil daripada input kedua.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Kembali benar jika input pertama adalah lebih kecil daripada atau sama dengan input kedua.", + "LOGIC_COMPARE_TOOLTIP_GT": "Kembali benar jika input pertama adalah lebih besar daripada input kedua.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Kembali benar jika input pertama adalah lebih besar daripada atau sama dengan input kedua.", + "LOGIC_OPERATION_TOOLTIP_AND": "Return true if both inputs are true.", + "LOGIC_OPERATION_AND": "dan", + "LOGIC_OPERATION_TOOLTIP_OR": "Return true if at least one of the inputs is true.", + "LOGIC_OPERATION_OR": "atau", + "LOGIC_NEGATE_TITLE": "bukan %1", + "LOGIC_NEGATE_TOOLTIP": "'Benar' akan dibalas jika inputnya salah. 'Salah' akan dibalas jika inputnya benar.", + "LOGIC_BOOLEAN_TRUE": "benar", + "LOGIC_BOOLEAN_FALSE": "palsu", + "LOGIC_BOOLEAN_TOOLTIP": "Kembalikan samada benar atau palsu.", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Returns null.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "Jika benar", + "LOGIC_TERNARY_IF_FALSE": "Jika palsu", + "LOGIC_TERNARY_TOOLTIP": "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.", + "MATH_NUMBER_HELPURL": "https://ms.wikipedia.org/wiki/Nombor", + "MATH_NUMBER_TOOLTIP": "Suatu nombor.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://ms.wikipedia.org/wiki/Aritmetik", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Kembalikan jumlah kedua-dua bilangan.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Taip balik hasil tolak dua nombor tersebut.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Taip balik hasil darab dua nombor tersebut.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Taip balik hasil bahagi dua nombor tersebut.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Return the first number raised to the power of the second number.", + "MATH_SINGLE_HELPURL": "https://ms.wikipedia.org/wiki/Punca_kuasa_dua", + "MATH_SINGLE_OP_ROOT": "Punca kuasa dua", + "MATH_SINGLE_TOOLTIP_ROOT": "Kembalikan punca kuasa nombor.", + "MATH_SINGLE_OP_ABSOLUTE": "mutlak", + "MATH_SINGLE_TOOLTIP_ABS": "Kembalikan nilai mutlak suatu nombor.", + "MATH_SINGLE_TOOLTIP_NEG": "Kembalikan nombor yang songsang.", + "MATH_SINGLE_TOOLTIP_LN": "Kembali dalam logaritma nombor asli.", + "MATH_SINGLE_TOOLTIP_LOG10": "Kembali logarithm 10 asas nombor.", + "MATH_SINGLE_TOOLTIP_EXP": "Kembalikan e kepada kuasa nombor.", + "MATH_SINGLE_TOOLTIP_POW10": "Kembalikan 10 kepada kuasa nombor.", + "MATH_TRIG_HELPURL": "https://ms.wikipedia.org/wiki/Fungsi_trigonometri", + "MATH_TRIG_TOOLTIP_SIN": "Kembalikan darjah sine (bukan radian).", + "MATH_TRIG_TOOLTIP_COS": "Kembalikan darjah kosinus (bukan radian).", + "MATH_TRIG_TOOLTIP_TAN": "Kembalikan darjah tangen (bukan radian).", + "MATH_TRIG_TOOLTIP_ASIN": "Kembalikan arcsince beberapa nombor.", + "MATH_TRIG_TOOLTIP_ACOS": "Kembali arccosine beberapa nombor.", + "MATH_TRIG_TOOLTIP_ATAN": "Kembalikan beberapa nombor arctangent.", + "MATH_CONSTANT_HELPURL": "https://ms.wikipedia.org/wiki/Pemalar_matematik", + "MATH_CONSTANT_TOOLTIP": "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", + "MATH_IS_EVEN": "Adalah genap", + "MATH_IS_ODD": "aneh", + "MATH_IS_PRIME": "is prime", + "MATH_IS_WHOLE": "is whole", + "MATH_IS_POSITIVE": "adalah positif", + "MATH_IS_NEGATIVE": "negatif", + "MATH_IS_DIVISIBLE_BY": "Boleh dibahagikan dengan", + "MATH_IS_TOOLTIP": "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.", + "MATH_CHANGE_HELPURL": "https://id.wikipedia.org/wiki/Perjumlahan", + "MATH_CHANGE_TITLE": "perubahan %1 oleh %2", + "MATH_CHANGE_TOOLTIP": "Tambah nombor kepada pembolehubah '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Bulat nombor yang naik atau turun.", + "MATH_ROUND_OPERATOR_ROUND": "pusingan", + "MATH_ROUND_OPERATOR_ROUNDUP": "pusingan ke atas", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "Pusingan ke bawah", + "MATH_ONLIST_OPERATOR_SUM": "Jumlah senarai", + "MATH_ONLIST_TOOLTIP_SUM": "Kembalikan jumlah semua nombor dalam senarai.", + "MATH_ONLIST_OPERATOR_MIN": "min dalam senarai", + "MATH_ONLIST_TOOLTIP_MIN": "Kembalikan nombor terkecil dalam senarai.", + "MATH_ONLIST_OPERATOR_MAX": "Max senarai", + "MATH_ONLIST_TOOLTIP_MAX": "Pulangkan jumlah terbesar dalam senarai.", + "MATH_ONLIST_OPERATOR_AVERAGE": "purata daripada senarai", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Kembalikan purata (min aritmetik) nilai-nilai angka di dalam senarai.", + "MATH_ONLIST_OPERATOR_MEDIAN": "Median senarai", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Kembalikan nombor median dalam senarai.", + "MATH_ONLIST_OPERATOR_MODE": "jenis senarai", + "MATH_ONLIST_TOOLTIP_MODE": "Kembali senarai item yang paling biasa dalam senarai.", + "MATH_ONLIST_OPERATOR_STD_DEV": "sisihan piawai bagi senarai", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Kembali dengan sisihan piawai daripada senarai.", + "MATH_ONLIST_OPERATOR_RANDOM": "Item rawak daripada senarai", + "MATH_ONLIST_TOOLTIP_RANDOM": "Kembalikan elemen rawak daripada senarai.", + "MATH_MODULO_HELPURL": "https://id.wikipedia.org/wiki/Operasi_modulus", + "MATH_MODULO_TITLE": "remainder of %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Taip balik baki yang didapat daripada pembahagian dua nombor tersebut.", + "MATH_CONSTRAIN_TITLE": "constrain %1 low %2 high %3", + "MATH_CONSTRAIN_TOOLTIP": "Constrain a number to be between the specified limits (inclusive).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "integer rawak dari %1ke %2", + "MATH_RANDOM_INT_TOOLTIP": "Kembalikan integer rawak diantara dua had yang ditentukan, inklusif.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "pecahan rawak", + "MATH_RANDOM_FLOAT_TOOLTIP": "Kembali sebahagian kecil rawak antara 0.0 (inklusif) dan 1.0 (eksklusif).", + "TEXT_TEXT_HELPURL": "https://ms.wikipedia.org/wiki/Rentetan", + "TEXT_TEXT_TOOLTIP": "Huruf, perkataan, atau baris teks.", + "TEXT_JOIN_TITLE_CREATEWITH": "hasilkan teks dengan", + "TEXT_JOIN_TOOLTIP": "Hasilkan sebahagian teks dengan menghubungkan apa jua nombor item.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "Sertai", + "TEXT_CREATE_JOIN_TOOLTIP": "Add, remove, or reorder sections to reconfigure this text block.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Add an item to the text.", + "TEXT_APPEND_TOOLTIP": "Append some text to variable '%1'.", + "TEXT_LENGTH_TITLE": "panjang %1", + "TEXT_LENGTH_TOOLTIP": "Kembalikan jumlah huruf (termasuk ruang) dalam teks yang disediakan.", + "TEXT_ISEMPTY_TITLE": "%1 adalah kosong", + "TEXT_ISEMPTY_TOOLTIP": "Kembalikan benar jika teks yang disediakan adalah kosong.", + "TEXT_INDEXOF_TOOLTIP": "Kembalikan Indeks kejadian pertama/terakhir dari teks pertama ke dalam teks kedua. Kembalikan %1 Jika teks tidak ditemui.", + "TEXT_INDEXOF_TITLE": "dalam teks %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "mencari kejadian pertama teks", + "TEXT_INDEXOF_OPERATOR_LAST": "mencari kejadian terakhir teks", + "TEXT_CHARAT_FROM_START": "get letter #", + "TEXT_CHARAT_FROM_END": "get letter # from end", + "TEXT_CHARAT_FIRST": "get first letter", + "TEXT_CHARAT_LAST": "Dapatkan abjad terakhir", + "TEXT_CHARAT_RANDOM": "Dapatkan abjad rawak", + "TEXT_CHARAT_TOOLTIP": "Returns the letter at the specified position.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Returns a specified portion of the text.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "dalam teks", + "TEXT_GET_SUBSTRING_START_FROM_START": "get substring from letter #", + "TEXT_GET_SUBSTRING_START_FROM_END": "get substring from letter # from end", + "TEXT_GET_SUBSTRING_START_FIRST": "get substring from first letter", + "TEXT_GET_SUBSTRING_END_FROM_START": "to letter #", + "TEXT_GET_SUBSTRING_END_FROM_END": "to letter # from end", + "TEXT_GET_SUBSTRING_END_LAST": "untuk huruf terakhir", + "TEXT_CHANGECASE_TOOLTIP": "Return a copy of the text in a different case.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "Kepada HURUF BESAR", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "Kepada huruf kecil", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "to Title Case", + "TEXT_TRIM_TOOLTIP": "Kembali salinan teks dengan ruang yang dikeluarkan daripada satu atau hujung kedua belah.", + "TEXT_TRIM_OPERATOR_BOTH": "mengurangkan kawasan dari kedua-dua belah", + "TEXT_TRIM_OPERATOR_LEFT": "mengurangkan ruang dari sebelah kiri", + "TEXT_TRIM_OPERATOR_RIGHT": "mengurangkan kawasan dari sisi kanan", + "TEXT_PRINT_TITLE": "cetak %1", + "TEXT_PRINT_TOOLTIP": "Cetak teks yang ditentukan, nombor atau nilai lain.", + "TEXT_PROMPT_TYPE_TEXT": "Prom untuk teks dengan mesej", + "TEXT_PROMPT_TYPE_NUMBER": "Prom untuk nombor dengan mesej", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Peringatan kepada pengguna untuk nombor.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Peringatkan pengguna untuk sebahagian teks.", + "LISTS_CREATE_EMPTY_TITLE": "Wujudkan senarai kosong", + "LISTS_CREATE_EMPTY_TOOLTIP": "Kembalikan senarai panjang 0, yang tidak mengandungi rekod data", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Wujudkan senarai dengan apa jua nombor item.", + "LISTS_CREATE_WITH_INPUT_WITH": "wujudkan senarai dengan", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "senarai", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Tambah, alih keluar, atau susun semula bahagian-bahagian untuk menyusun semula senarai blok.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Tambah item ke dalam senarai.", + "LISTS_REPEAT_TOOLTIP": "Wujudkan senarai yang terdiri daripada nilai berulang mengikut nombor yang ditentukan.", + "LISTS_REPEAT_TITLE": "wujudkan senarai dengan item %1 diulangi %2 kali", + "LISTS_LENGTH_TITLE": "panjang %1", + "LISTS_LENGTH_TOOLTIP": "Kembalikan panjang senarai", + "LISTS_ISEMPTY_TITLE": "%1 adalah kosong", + "LISTS_ISEMPTY_TOOLTIP": "Kembalikan benar jika senarai kosong.", + "LISTS_INLIST": "dalam senarai", + "LISTS_INDEX_OF_FIRST": "cari pertama item kejadian", + "LISTS_INDEX_OF_LAST": "cari kejadian akhir item", + "LISTS_INDEX_OF_TOOLTIP": "Menyatakan indeks kejadian pertama/terakhir item berkenaan dalam senarai. Menyatakan %1 jika item berkenaan tidak ditemui.", + "LISTS_GET_INDEX_GET": "dapatkan", + "LISTS_GET_INDEX_GET_REMOVE": "dapat dan alihkan", + "LISTS_GET_INDEX_REMOVE": "alihkan", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# dari akhir", + "LISTS_GET_INDEX_FIRST": "pertama", + "LISTS_GET_INDEX_LAST": "terakhir", + "LISTS_GET_INDEX_RANDOM": "rawak", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ialah item pertama.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ialah item terakhir.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Kembalikan item dalam kedudukan yang ditetapkan dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Kembalikan item pertama dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Kembalikan item pertama dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Kembalikan item rawak dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Alihkan dan kembalikan item mengikut spesifikasi posisi dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Alihkan dan kembalikan item pertama dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Alihkan dan kembalikan item terakhir dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Alihkan dan kembalikan item rawak dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Alihkan item pada posisi mengikut spesifikasi dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Alihkan item pertama dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Alihkan item terakhir dalam senarai.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Alihkan item rawak dalam senarai.", + "LISTS_SET_INDEX_SET": "set", + "LISTS_SET_INDEX_INSERT": "masukkan pada", + "LISTS_SET_INDEX_INPUT_TO": "sebagai", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Masukkan item pada posisi yang ditentukan dalam senarai.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Set item pertama dalam senarai.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Set item terakhir dalam senarai.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Set item rawak dalam senarai.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Masukkan item pada posisi yand ditentukan dalam senarai.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Selit item pada permulaan senarai.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Tambahkan item dalam senarai akhir.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Selit item secara rawak di dalam senarai.", + "LISTS_GET_SUBLIST_START_FROM_START": "dapatkan sub-senarai daripada #", + "LISTS_GET_SUBLIST_START_FROM_END": "dapatkan sub-senarai daripada # daripada terakhir", + "LISTS_GET_SUBLIST_START_FIRST": "dapatkan sub-senarai daripada pertama", + "LISTS_GET_SUBLIST_END_FROM_START": "ke #", + "LISTS_GET_SUBLIST_END_FROM_END": "ke # dari akhir", + "LISTS_GET_SUBLIST_END_LAST": "ke akhir", + "LISTS_GET_SUBLIST_TOOLTIP": "Wujudkan salinan bahagian yang ditentukan dari senarai.", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "buat senarai dgn teks", + "LISTS_SPLIT_TEXT_FROM_LIST": "buat teks drpd senarai", + "LISTS_SPLIT_WITH_DELIMITER": "dengan delimiter", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Pecahkan teks kepada senarai teks, berpecah di setiap delimiter.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Cantumkan senarai teks menjadi satu teks, dipecahkan oleh delimiter.", + "VARIABLES_GET_TOOLTIP": "Kembalikan nilai pemboleh ubah ini.", + "VARIABLES_GET_CREATE_SET": "Hasilkan 'set %1'", + "VARIABLES_SET": "set %1 ke %2", + "VARIABLES_SET_TOOLTIP": "Set pembolehubah ini supaya sama dengan input.", + "VARIABLES_SET_CREATE_GET": "Hasilkan 'set %1'", + "PROCEDURES_DEFNORETURN_TITLE": "Untuk", + "PROCEDURES_DEFNORETURN_PROCEDURE": "Buat sesuatu", + "PROCEDURES_BEFORE_PARAMS": "dengan:", + "PROCEDURES_CALL_BEFORE_PARAMS": "dengan:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Menghasilkan suatu fungsi tanpa output.", + "PROCEDURES_DEFNORETURN_COMMENT": "Terangkan fungsi ini...", + "PROCEDURES_DEFRETURN_RETURN": "kembali", + "PROCEDURES_DEFRETURN_TOOLTIP": "Mencipta satu fungsi dengan pengeluaran.", + "PROCEDURES_ALLOW_STATEMENTS": "bolehkan kenyataan", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Amaran: Fungsi ini mempunyai parameter yang berganda.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://ms.wikipedia.org/wiki/Fungsi", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Run the user-defined function '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://ms.wikipedia.org/wiki/Fungsi", + "PROCEDURES_CALLRETURN_TOOLTIP": "Run the user-defined function '%1' and use its output.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "Input-input", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Tambah, alih keluar atau susun semula input pada fungsi ini.", + "PROCEDURES_MUTATORARG_TITLE": "Nama input:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Tambah satu input pada fungsi.", + "PROCEDURES_HIGHLIGHT_DEF": "Serlahkan definisi fungsi", + "PROCEDURES_CREATE_DO": "Hasilkan '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "If a value is true, then return a second value.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Amaran: Blok ini hanya boleh digunakan dalam fungsi definisi.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Batalkan" +} diff --git a/msg/json/my.json b/msg/json/my.json index 70d82ec8143..8dd4ccbe4bd 100644 --- a/msg/json/my.json +++ b/msg/json/my.json @@ -1,57 +1,57 @@ -{ - "@metadata": { - "authors": [ - "Dr Lotus Black", - "July Amyutay", - "Phyoekyaw" - ] - }, - "UNNAMED_KEY": "အမည်မဲ့", - "TODAY": "ယနေ့", - "DUPLICATE_BLOCK": "ထပ်ပွား", - "ADD_COMMENT": "မှတ်ချက် ပေါင်းထည့်ရန်", - "REMOVE_COMMENT": "မှတ်ချက် ဖယ်ရှားရန်", - "DUPLICATE_COMMENT": "မှတ်ချက်ပွားရန်", - "HELP": "အ​ကူ​အ​ညီ​", - "UNDO": "နောက်ပြန် ပြန်ပြင်ရန်", - "REDO": "ရှေ့သို့ ပြန်ပြင်ရန်", - "CHANGE_VALUE_TITLE": "တန်ဖိုး ပြောင်းလဲရန်:", - "RENAME_VARIABLE": "ကိန်းရှင် အမည်ပြောင်းရန်", - "RENAME_VARIABLE_TITLE": "ကိန်းရှင် %1 ခုကို အမည်ပြောင်းရန်", - "NEW_VARIABLE": "ကိန်းရှင် ဖန်တီးရန်", - "NEW_NUMBER_VARIABLE": "ဂဏန်းကိန်းရှင် ဖန်တီးရန်", - "NEW_COLOUR_VARIABLE": "အရောင်ကိန်းရှင် ဖန်တီးရန်", - "NEW_VARIABLE_TYPE_TITLE": "ကိန်းရှင်အမျိုးအစားသစ်:", - "NEW_VARIABLE_TITLE": "ကိန်းရှင်အသစ်နာမည်", - "VARIABLE_ALREADY_EXISTS": "ကိန်းရှင်၏အမည် %1 သည် ရှိပြီးသားဖြစ်သည်။", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ကိန်းရှင်အမည် \"%1\" သည် အခြားအမျိုးအစား \"%2%\" အတွက် ရှိပြီးသားဖြစ်သည်။", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "လုပ်ဆောင်ချက် \"%2%\" ၏ သတ်မှတ်ချက်တစ်စိတ်တစ်ပိုင်း ဖြစ်သောကြောင့် ကိန်းရှင် \"%1\" ကို ဖျက်လို့မရပါ။", - "DELETE_VARIABLE": "ကိန်းရှင် \"%1\" ကို ဖျက်ရန်", - "COLOUR_PICKER_HELPURL": "https://my.wikipedia.org/wiki/အရောင်", - "COLOUR_RANDOM_TITLE": "ကျပန်း အရောင်", - "COLOUR_RANDOM_TOOLTIP": "ကျပန်းပုံစံဖြင့် အရောင်ရွေးပါ", - "COLOUR_RGB_RED": "အနီ", - "COLOUR_RGB_GREEN": "အစိမ်း", - "COLOUR_RGB_BLUE": "အပြာရောင်", - "COLOUR_BLEND_COLOUR1": "အရောင် ၁", - "COLOUR_BLEND_COLOUR2": "အရောင် ၂", - "COLOUR_BLEND_RATIO": "အချိုး", - "LOGIC_OPERATION_AND": "နှင့်", - "LOGIC_OPERATION_OR": "သို့မဟုတ်", - "MATH_NUMBER_HELPURL": "https://my.wikipedia.org/wiki/ကိန်း", - "MATH_NUMBER_TOOLTIP": "ကိန်းတစ်ခု။", - "MATH_ARITHMETIC_HELPURL": "https://my.wikipedia.org/wiki/ဂဏန်းသင်္ချာ", - "MATH_SINGLE_HELPURL": "https://my.wikipedia.org/wiki/စတုရန်း", - "LISTS_GET_INDEX_REMOVE": "ဖယ်ရှားရန်", - "LISTS_GET_INDEX_FIRST": "ပထမဆုံး", - "LISTS_GET_INDEX_LAST": "နောက်ဆုံး", - "LISTS_GET_INDEX_RANDOM": "ကျပန်း", - "LISTS_SORT_TITLE": "%1 %2 %3 အဖြစ် စီစဉ်ရန်", - "LISTS_SORT_ORDER_ASCENDING": "ငယ်စဉ်ကြီးလိုက်", - "LISTS_SORT_ORDER_DESCENDING": "ကြီးစဉ်ငယ်လိုက်", - "PROCEDURES_CREATE_DO": "'%1' ကို ဖန်တီးရန်", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "တစ်ခုခု ပြောခဲ့ပါ...", - "WORKSPACE_ARIA_LABEL": "လုပ်ငန်းခွင်ပိတ်ဆို့မှု", - "DIALOG_OK": "အိုကေ", - "DIALOG_CANCEL": "ဖျက်မည်။" -} +{ + "@metadata": { + "authors": [ + "Dr Lotus Black", + "July Amyutay", + "Phyoekyaw" + ] + }, + "UNNAMED_KEY": "အမည်မဲ့", + "TODAY": "ယနေ့", + "DUPLICATE_BLOCK": "ထပ်ပွား", + "ADD_COMMENT": "မှတ်ချက် ပေါင်းထည့်ရန်", + "REMOVE_COMMENT": "မှတ်ချက် ဖယ်ရှားရန်", + "DUPLICATE_COMMENT": "မှတ်ချက်ပွားရန်", + "HELP": "အ​ကူ​အ​ညီ​", + "UNDO": "နောက်ပြန် ပြန်ပြင်ရန်", + "REDO": "ရှေ့သို့ ပြန်ပြင်ရန်", + "CHANGE_VALUE_TITLE": "တန်ဖိုး ပြောင်းလဲရန်:", + "RENAME_VARIABLE": "ကိန်းရှင် အမည်ပြောင်းရန်", + "RENAME_VARIABLE_TITLE": "ကိန်းရှင် %1 ခုကို အမည်ပြောင်းရန်", + "NEW_VARIABLE": "ကိန်းရှင် ဖန်တီးရန်", + "NEW_NUMBER_VARIABLE": "ဂဏန်းကိန်းရှင် ဖန်တီးရန်", + "NEW_COLOUR_VARIABLE": "အရောင်ကိန်းရှင် ဖန်တီးရန်", + "NEW_VARIABLE_TYPE_TITLE": "ကိန်းရှင်အမျိုးအစားသစ်:", + "NEW_VARIABLE_TITLE": "ကိန်းရှင်အသစ်နာမည်", + "VARIABLE_ALREADY_EXISTS": "ကိန်းရှင်၏အမည် %1 သည် ရှိပြီးသားဖြစ်သည်။", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ကိန်းရှင်အမည် \"%1\" သည် အခြားအမျိုးအစား \"%2%\" အတွက် ရှိပြီးသားဖြစ်သည်။", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "လုပ်ဆောင်ချက် \"%2%\" ၏ သတ်မှတ်ချက်တစ်စိတ်တစ်ပိုင်း ဖြစ်သောကြောင့် ကိန်းရှင် \"%1\" ကို ဖျက်လို့မရပါ။", + "DELETE_VARIABLE": "ကိန်းရှင် \"%1\" ကို ဖျက်ရန်", + "COLOUR_PICKER_HELPURL": "https://my.wikipedia.org/wiki/အရောင်", + "COLOUR_RANDOM_TITLE": "ကျပန်း အရောင်", + "COLOUR_RANDOM_TOOLTIP": "ကျပန်းပုံစံဖြင့် အရောင်ရွေးပါ", + "COLOUR_RGB_RED": "အနီ", + "COLOUR_RGB_GREEN": "အစိမ်း", + "COLOUR_RGB_BLUE": "အပြာရောင်", + "COLOUR_BLEND_COLOUR1": "အရောင် ၁", + "COLOUR_BLEND_COLOUR2": "အရောင် ၂", + "COLOUR_BLEND_RATIO": "အချိုး", + "LOGIC_OPERATION_AND": "နှင့်", + "LOGIC_OPERATION_OR": "သို့မဟုတ်", + "MATH_NUMBER_HELPURL": "https://my.wikipedia.org/wiki/ကိန်း", + "MATH_NUMBER_TOOLTIP": "ကိန်းတစ်ခု။", + "MATH_ARITHMETIC_HELPURL": "https://my.wikipedia.org/wiki/ဂဏန်းသင်္ချာ", + "MATH_SINGLE_HELPURL": "https://my.wikipedia.org/wiki/စတုရန်း", + "LISTS_GET_INDEX_REMOVE": "ဖယ်ရှားရန်", + "LISTS_GET_INDEX_FIRST": "ပထမဆုံး", + "LISTS_GET_INDEX_LAST": "နောက်ဆုံး", + "LISTS_GET_INDEX_RANDOM": "ကျပန်း", + "LISTS_SORT_TITLE": "%1 %2 %3 အဖြစ် စီစဉ်ရန်", + "LISTS_SORT_ORDER_ASCENDING": "ငယ်စဉ်ကြီးလိုက်", + "LISTS_SORT_ORDER_DESCENDING": "ကြီးစဉ်ငယ်လိုက်", + "PROCEDURES_CREATE_DO": "'%1' ကို ဖန်တီးရန်", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "တစ်ခုခု ပြောခဲ့ပါ...", + "WORKSPACE_ARIA_LABEL": "လုပ်ငန်းခွင်ပိတ်ဆို့မှု", + "DIALOG_OK": "အိုကေ", + "DIALOG_CANCEL": "ဖျက်မည်။" +} diff --git a/msg/json/mzn.json b/msg/json/mzn.json index c5603d6d8ac..106d322d462 100644 --- a/msg/json/mzn.json +++ b/msg/json/mzn.json @@ -1,6 +1,6 @@ -{ - "@metadata": { - "authors": [] - }, - "DIALOG_OK": "خا" -} +{ + "@metadata": { + "authors": [] + }, + "DIALOG_OK": "خا" +} diff --git a/msg/json/nb.json b/msg/json/nb.json index 394e29701a9..28066849e1c 100644 --- a/msg/json/nb.json +++ b/msg/json/nb.json @@ -1,362 +1,362 @@ -{ - "@metadata": { - "authors": [ - "Cocu", - "Jon Harald Søby", - "Kingu", - "SuperPotato", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "element", - "TODAY": "I dag", - "DUPLICATE_BLOCK": "duplikat", - "ADD_COMMENT": "Legg til kommentar", - "REMOVE_COMMENT": "Fjern kommentar", - "DUPLICATE_COMMENT": "Dupliser kommentar", - "EXTERNAL_INPUTS": "Eksterne kilder", - "INLINE_INPUTS": "Interne kilder", - "DELETE_BLOCK": "Slett blokk", - "DELETE_X_BLOCKS": "Slett %1 blokker", - "DELETE_ALL_BLOCKS": "Slett alle %1 blokker?", - "CLEAN_UP": "Rydd opp Blocks", - "COLLAPSE_BLOCK": "Skjul blokk", - "COLLAPSE_ALL": "Skjul blokker", - "EXPAND_BLOCK": "Utvid blokk", - "EXPAND_ALL": "Utvid blokker", - "DISABLE_BLOCK": "Deaktiver blokk", - "ENABLE_BLOCK": "Aktiver blokk", - "HELP": "Hjelp", - "UNDO": "Angre", - "REDO": "Gjør om", - "CHANGE_VALUE_TITLE": "Bytt verdi:", - "RENAME_VARIABLE": "Gi nytt navn til variabel…", - "RENAME_VARIABLE_TITLE": "Endre navnet til alle '%1' variabler til:", - "NEW_VARIABLE": "Opprett variabel…", - "NEW_STRING_VARIABLE": "Oppretter strengvariabel …", - "NEW_NUMBER_VARIABLE": "Oppretter tallvariabel …", - "NEW_COLOUR_VARIABLE": "Oppretter fargevariabel …", - "NEW_VARIABLE_TYPE_TITLE": "Ny variabeltype:", - "NEW_VARIABLE_TITLE": "Nytt variabelnavn:", - "VARIABLE_ALREADY_EXISTS": "En variabel med navn «%1» finnes allerede.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "En variabel med navn «%1» finnes allerede for en annen type: «%2».", - "DELETE_VARIABLE_CONFIRMATION": "Slett %1 bruk av variabelen «%2»?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Kan ikke slette variabelen «%1» fordi den er del av definisjonen for funksjonen «%2»", - "DELETE_VARIABLE": "Slett variabelen «%1»", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Velg en farge fra paletten.", - "COLOUR_RANDOM_TITLE": "tilfeldig farge", - "COLOUR_RANDOM_TOOLTIP": "Velg en tilfeldig farge.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "farge med", - "COLOUR_RGB_RED": "rød", - "COLOUR_RGB_GREEN": "grønn", - "COLOUR_RGB_BLUE": "blå", - "COLOUR_RGB_TOOLTIP": "Lag en farge med angitt verdi av rød, grønn og blå. Alle verdier må være mellom 0 og 100.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "blande", - "COLOUR_BLEND_COLOUR1": "farge 1", - "COLOUR_BLEND_COLOUR2": "farge 2", - "COLOUR_BLEND_RATIO": "forhold", - "COLOUR_BLEND_TOOLTIP": "Blander to farger sammen med et gitt forhold (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "gjenta %1 ganger", - "CONTROLS_REPEAT_INPUT_DO": "gjør", - "CONTROLS_REPEAT_TOOLTIP": "Gjenta noen instruksjoner flere ganger.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "gjenta mens", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "gjenta til", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Så lenge et utsagn stemmer, utfør noen instruksjoner.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Så lenge et utsagn ikke stemmer, gjør noen instruksjoner.", - "CONTROLS_FOR_TOOLTIP": "Ha variabel \"%1\" ta verdiene fra start nummer til slutt nummer, telle med spesifisert intervall og lag de spesifiserte blokkene.", - "CONTROLS_FOR_TITLE": "tell med %1 fra %2 til %3 med %4", - "CONTROLS_FOREACH_TITLE": "for hvert element %1 i listen %2", - "CONTROLS_FOREACH_TOOLTIP": "For hvert element i en liste, angi variabelen '%1' til elementet, og deretter lag noen setninger.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "bryt ut av løkken", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fortsett med neste gjentakelse av løkken", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Bryt ut av den gjeldende løkken.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Hopp over resten av denne løkken og fortsett med neste gjentakelse.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Advarsel: Denne blokken kan kun brukes innenfor en løkke.", - "CONTROLS_IF_TOOLTIP_1": "Hvis dette er sant, så gjør følgende.", - "CONTROLS_IF_TOOLTIP_2": "Hvis dette er sant, så utfør den første blokken av instruksjoner. Hvis ikke, utfør den andre blokken.", - "CONTROLS_IF_TOOLTIP_3": "Hvis det første stemmer, så utfør den første blokken av instruksjoner. Ellers, hvis det andre stemmer, utfør den andre blokken av instruksjoner.", - "CONTROLS_IF_TOOLTIP_4": "Hvis den første verdien er sann, så utfør den første blokken med setninger. Ellers, hvis den andre verdien er sann, så utfør den andre blokken med setninger. Hvis ingen av verdiene er sanne, så utfør den siste blokken med setninger.", - "CONTROLS_IF_MSG_IF": "hvis", - "CONTROLS_IF_MSG_ELSEIF": "ellers hvis", - "CONTROLS_IF_MSG_ELSE": "ellers", - "CONTROLS_IF_IF_TOOLTIP": "Legg til, fjern eller flytt seksjoner i denne hvis-blokken.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Legg til en betingelse til hvis blokken.", - "CONTROLS_IF_ELSE_TOOLTIP": "Legg til hva som skal skje hvis de andre ikke slår til.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Returnerer sann hvis begge inputene er like hverandre.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Returnerer sant hvis begge argumentene er ulike hverandre.", - "LOGIC_COMPARE_TOOLTIP_LT": "Returnerer sant hvis det første argumentet er mindre enn det andre argumentet.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Returnerer sant hvis det første argumentet er mindre enn eller likt det andre argumentet.", - "LOGIC_COMPARE_TOOLTIP_GT": "Returnerer sant hvis det første argumentet er større enn den andre argumentet.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Returnerer sant hvis det første argumentet er større enn eller likt det andre argumentet.", - "LOGIC_OPERATION_TOOLTIP_AND": "Returnerer sant hvis begge argumentene er sanne.", - "LOGIC_OPERATION_AND": "og", - "LOGIC_OPERATION_TOOLTIP_OR": "Returnerer sant hvis minst ett av argumentene er sant.", - "LOGIC_OPERATION_OR": "eller", - "LOGIC_NEGATE_TITLE": "ikke %1", - "LOGIC_NEGATE_TOOLTIP": "Returnerer sant hvis argumentet er usant. Returnerer usant hvis argumentet er sant.", - "LOGIC_BOOLEAN_TRUE": "sann", - "LOGIC_BOOLEAN_FALSE": "usann", - "LOGIC_BOOLEAN_TOOLTIP": "Returnerer enten sann eller usann.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Returnerer null.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "hvis sant", - "LOGIC_TERNARY_IF_FALSE": "hvis usant", - "LOGIC_TERNARY_TOOLTIP": "Sjekk betingelsen i 'test'. Hvis betingelsen er sann, da returneres 'hvis sant' verdien. Hvis ikke returneres 'hvis usant' verdien.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Et tall.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "x", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://no.wikipedia.org/wiki/Aritmetikk", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Returnerer summen av to tall.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Returner differansen mellom to tall.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Returner produktet av to tall.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Returner kvotienten av to tall.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Returner det første tallet opphøyd i den andre tallet.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "kvadratrot", - "MATH_SINGLE_TOOLTIP_ROOT": "Returner kvadratroten av et tall.", - "MATH_SINGLE_OP_ABSOLUTE": "absoluttverdi", - "MATH_SINGLE_TOOLTIP_ABS": "Returner absoluttverdien av et tall.", - "MATH_SINGLE_TOOLTIP_NEG": "Returner det negative tallet.", - "MATH_SINGLE_TOOLTIP_LN": "Returner den naturlige logaritmen til et tall.", - "MATH_SINGLE_TOOLTIP_LOG10": "Returner base-10 logaritmen til et tall.", - "MATH_SINGLE_TOOLTIP_EXP": "Returner e opphøyd i et tall.", - "MATH_SINGLE_TOOLTIP_POW10": "Returner 10 opphøyd i et tall.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Returner sinus av en vinkel (ikke radian).", - "MATH_TRIG_TOOLTIP_COS": "Returner cosinus av en vinkel (ikke radian).", - "MATH_TRIG_TOOLTIP_TAN": "Returner tangenten av en vinkel (ikke radian).", - "MATH_TRIG_TOOLTIP_ASIN": "Returner arcsinus til et tall.", - "MATH_TRIG_TOOLTIP_ACOS": "Returner arccosinus til et tall.", - "MATH_TRIG_TOOLTIP_ATAN": "Returner arctangens til et tall.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Returner en av felleskonstantene π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), eller ∞ (uendelig).", - "MATH_IS_EVEN": "er et partall", - "MATH_IS_ODD": "er et oddetall", - "MATH_IS_PRIME": "er et primtall", - "MATH_IS_WHOLE": "er et heltall", - "MATH_IS_POSITIVE": "er positivt", - "MATH_IS_NEGATIVE": "er negativer negativt", - "MATH_IS_DIVISIBLE_BY": "er delelig med", - "MATH_IS_TOOLTIP": "Sjekk om et tall er et partall, oddetall, primtall, heltall, positivt, negativt, eller om det er delelig med et annet tall. Returnerer sant eller usant.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "endre %1 ved %2", - "MATH_CHANGE_TOOLTIP": "Addere et tall til variabelen '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Avrund et tall ned eller opp.", - "MATH_ROUND_OPERATOR_ROUND": "avrunding", - "MATH_ROUND_OPERATOR_ROUNDUP": "rund opp", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "rund ned", - "MATH_ONLIST_OPERATOR_SUM": "summen av listen", - "MATH_ONLIST_TOOLTIP_SUM": "Returner summen av alle tallene i listen.", - "MATH_ONLIST_OPERATOR_MIN": "minimum av listen", - "MATH_ONLIST_TOOLTIP_MIN": "Returner det minste tallet i listen.", - "MATH_ONLIST_OPERATOR_MAX": "maksimum av liste", - "MATH_ONLIST_TOOLTIP_MAX": "Returner det største tallet i listen.", - "MATH_ONLIST_OPERATOR_AVERAGE": "gjennomsnittet av listen", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Returner det aritmetiske gjennomsnittet av tallene i listen.", - "MATH_ONLIST_OPERATOR_MEDIAN": "medianen til listen", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Returner listens median.", - "MATH_ONLIST_OPERATOR_MODE": "Listens typetall", - "MATH_ONLIST_TOOLTIP_MODE": "Returner en liste av de vanligste elementene i listen.", - "MATH_ONLIST_OPERATOR_STD_DEV": "standardavviket til listen", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Returner listens standardavvik.", - "MATH_ONLIST_OPERATOR_RANDOM": "tilfeldig element i listen", - "MATH_ONLIST_TOOLTIP_RANDOM": "Returner et tilfeldig element fra listen.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "resten av %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Returner resten fra delingen av to tall.", - "MATH_CONSTRAIN_TITLE": "begrense %1 lav %2 høy %3", - "MATH_CONSTRAIN_TOOLTIP": "Begrens et tall til å være mellom de angitte grenseverdiene (inklusiv).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "Et tilfeldig heltall mellom %1 og %2", - "MATH_RANDOM_INT_TOOLTIP": "Returner et tilfeldig tall mellom de to spesifiserte grensene, inkludert de to.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "tilfeldig flyttall", - "MATH_RANDOM_FLOAT_TOOLTIP": "Returner et tilfeldig flyttall mellom 0.0 (inkludert) og 1.0 (ikke inkludert).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 av X:%1 Y:%2", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "En bokstav, ett ord eller en linje med tekst.", - "TEXT_JOIN_TITLE_CREATEWITH": "lag tekst med", - "TEXT_JOIN_TOOLTIP": "Opprett en tekst ved å sette sammen et antall elementer.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "føy sammen", - "TEXT_CREATE_JOIN_TOOLTIP": "Legg til, fjern eller forandre rekkefølgen for å forandre på denne tekstblokken.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Legg til et element til teksten.", - "TEXT_APPEND_TITLE": "til %1, legg til teksten %2", - "TEXT_APPEND_TOOLTIP": "Tilføy tekst til variabelen '%1'.", - "TEXT_LENGTH_TITLE": "lengden av %1", - "TEXT_LENGTH_TOOLTIP": "Returnerer antall bokstaver (inkludert mellomrom) i den angitte teksten.", - "TEXT_ISEMPTY_TITLE": "%1 er tom", - "TEXT_ISEMPTY_TOOLTIP": "Returnerer sann hvis den angitte teksten er tom.", - "TEXT_INDEXOF_TOOLTIP": "Returnerer posisjonen for første/siste forekomsten av den første tekst i den andre teksten. Returnerer %1 hvis teksten ikke blir funnet.", - "TEXT_INDEXOF_TITLE": "i teksten %1, %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "finn første forekomst av tekst", - "TEXT_INDEXOF_OPERATOR_LAST": "finn siste forekomst av tekst", - "TEXT_CHARAT_TITLE": "i teksten %1, %2", - "TEXT_CHARAT_FROM_START": "hent bokstav #", - "TEXT_CHARAT_FROM_END": "hent bokstav # fra slutten", - "TEXT_CHARAT_FIRST": "hent første bokstav", - "TEXT_CHARAT_LAST": "hent den siste bokstaven", - "TEXT_CHARAT_RANDOM": "hent en tilfeldig bokstav", - "TEXT_CHARAT_TAIL": "", - "TEXT_CHARAT_TOOLTIP": "Returnerer bokstaven på angitt plassering.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Returnerer den angitte delen av teksten.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "i tekst", - "TEXT_GET_SUBSTRING_START_FROM_START": "hent delstreng fra bokstav #", - "TEXT_GET_SUBSTRING_START_FROM_END": "hent delstreng fra bokstav # fra slutten", - "TEXT_GET_SUBSTRING_START_FIRST": "hent delstreng fra første bokstav", - "TEXT_GET_SUBSTRING_END_FROM_START": "til bokstav #", - "TEXT_GET_SUBSTRING_END_FROM_END": "til bokstav # fra slutten", - "TEXT_GET_SUBSTRING_END_LAST": "til siste bokstav", - "TEXT_GET_SUBSTRING_TAIL": "", - "TEXT_CHANGECASE_TOOLTIP": "Returnerer en kopi av teksten der store og små bokstaver er byttet om.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "til STORE BOKSTAVER", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "til små bokstaver", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "til store forbokstaver", - "TEXT_TRIM_TOOLTIP": "Returner en kopi av teksten med mellomrom fjernet fra en eller begge sidene.", - "TEXT_TRIM_OPERATOR_BOTH": "fjern mellomrom fra begge sider av", - "TEXT_TRIM_OPERATOR_LEFT": "fjern mellomrom fra venstre side av", - "TEXT_TRIM_OPERATOR_RIGHT": "fjern mellomrom fra høyre side av", - "TEXT_PRINT_TITLE": "skriv ut %1", - "TEXT_PRINT_TOOLTIP": "Skriv ut angitt tekst, tall eller annet innhold.", - "TEXT_PROMPT_TYPE_TEXT": "spør om tekst med en melding", - "TEXT_PROMPT_TYPE_NUMBER": "spør om et tall med en melding", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Be brukeren om et tall.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Spør brukeren om tekst.", - "TEXT_COUNT_MESSAGE0": "tell %1 i %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Tell hvor mange ganger noe tekst dukker opp i annen tekst.", - "TEXT_REPLACE_MESSAGE0": "erstatt %1 med %2 i %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Erstatter alle forekomster av noe tekst i en annen tekst.", - "TEXT_REVERSE_MESSAGE0": "reverser %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Reverserer rekkefølgen på tegnene i teksten.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "opprett en tom liste", - "LISTS_CREATE_EMPTY_TOOLTIP": "Returnerer en tom liste, altså med lengde 0", - "LISTS_CREATE_WITH_TOOLTIP": "Lag en liste med et vilkårlig antall elementer.", - "LISTS_CREATE_WITH_INPUT_WITH": "lag en liste med", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Legg til, fjern eller endre rekkefølgen for å endre på denne delen av listen.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Tilføy et element til listen.", - "LISTS_REPEAT_TOOLTIP": "Lager en liste hvor den gitte verdien gjentas et antall ganger.", - "LISTS_REPEAT_TITLE": "Lag en liste hvor elementet %1 forekommer %2 ganger", - "LISTS_LENGTH_TITLE": "lengden på %1", - "LISTS_LENGTH_TOOLTIP": "Returnerer lengden til en liste.", - "LISTS_ISEMPTY_TITLE": "%1 er tom", - "LISTS_ISEMPTY_TOOLTIP": "Returnerer sann hvis listen er tom.", - "LISTS_INLIST": "i listen", - "LISTS_INDEX_OF_FIRST": "finn første forekomst av elementet", - "LISTS_INDEX_OF_LAST": "finn siste forekomst av elementet", - "LISTS_INDEX_OF_TOOLTIP": "Returnerer indeksen av den første/siste forekomsten av elementet i lista. Returnerer %1 hvis ikke funnet.", - "LISTS_GET_INDEX_GET": "hent", - "LISTS_GET_INDEX_GET_REMOVE": "hent og fjern", - "LISTS_GET_INDEX_REMOVE": "fjern", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# fra slutten", - "LISTS_GET_INDEX_FIRST": "først", - "LISTS_GET_INDEX_LAST": "siste", - "LISTS_GET_INDEX_RANDOM": "tilfeldig", - "LISTS_GET_INDEX_TAIL": "", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 er det første elementet.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 er det siste elementet.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returner elementet på den angitte posisjonen i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returnerer det første elementet i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returnerer det siste elementet i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returnerer et tilfeldig element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fjerner og returnerer elementet ved en gitt posisjon i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fjerner og returnerer det første elementet i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fjerner og returnerer det siste elementet i en liste.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fjerner og returnerer et tilfeldig element i en liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fjerner et element ved en gitt posisjon i en liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fjerner det første elementet i en liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fjerner det siste elementet i en liste.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Fjerner et tilfeldig element i en liste.", - "LISTS_SET_INDEX_SET": "sett", - "LISTS_SET_INDEX_INSERT": "sett inn ved", - "LISTS_SET_INDEX_INPUT_TO": "som", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setter inn elementet ved den angitte posisjonen i en liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Angir det første elementet i en liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Angir det siste elementet i en liste.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Angir et tilfeldig element i en liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Setter inn elementet ved den angitte posisjonen i en liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Setter inn elementet i starten av en liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Tilføy elementet til slutten av en liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Setter inn elementet ved en tilfeldig posisjon i en liste.", - "LISTS_GET_SUBLIST_START_FROM_START": "Hent del-listen fra #", - "LISTS_GET_SUBLIST_START_FROM_END": "Hent de siste # elementene", - "LISTS_GET_SUBLIST_START_FIRST": "Hent en del av listen", - "LISTS_GET_SUBLIST_END_FROM_START": "til #", - "LISTS_GET_SUBLIST_END_FROM_END": "til # fra slutten", - "LISTS_GET_SUBLIST_END_LAST": "til siste", - "LISTS_GET_SUBLIST_TAIL": "", - "LISTS_GET_SUBLIST_TOOLTIP": "Kopiérer en ønsket del av en liste.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sorter %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sorter en kopi av en liste.", - "LISTS_SORT_ORDER_ASCENDING": "stigende", - "LISTS_SORT_ORDER_DESCENDING": "synkende", - "LISTS_SORT_TYPE_NUMERIC": "numerisk", - "LISTS_SORT_TYPE_TEXT": "alfabetisk", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetisk, ignorert store/små bokstaver", - "LISTS_SPLIT_LIST_FROM_TEXT": "lag liste av tekst", - "LISTS_SPLIT_TEXT_FROM_LIST": "lag tekst av liste", - "LISTS_SPLIT_WITH_DELIMITER": "med avgrenser", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Splitt teksten til en liste med tekster, brutt ved hver avgrenser.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Føy sammen en liste tekster til én tekst, avskilt av en avgrenser.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "reverser %1", - "LISTS_REVERSE_TOOLTIP": "Reverser en kopi av ei liste.", - "VARIABLES_GET_TOOLTIP": "Returnerer verdien av denne variabelen.", - "VARIABLES_GET_CREATE_SET": "Opprett 'sett %1'", - "VARIABLES_SET": "sett %1 til %2", - "VARIABLES_SET_TOOLTIP": "Setter verdien av denne variablen lik parameteren.", - "VARIABLES_SET_CREATE_GET": "Opprett 'hent %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "til", - "PROCEDURES_DEFNORETURN_PROCEDURE": "gjør noe", - "PROCEDURES_BEFORE_PARAMS": "med:", - "PROCEDURES_CALL_BEFORE_PARAMS": "med:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Opprett en funksjon som ikke har noe resultat.", - "PROCEDURES_DEFNORETURN_COMMENT": "Beskriv denne funksjonen…", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFRETURN_RETURN": "returner", - "PROCEDURES_DEFRETURN_TOOLTIP": "Oppretter en funksjon som har et resultat.", - "PROCEDURES_ALLOW_STATEMENTS": "tillat uttalelser", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Advarsel: Denne funksjonen har duplikate parametere.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Kjør den brukerdefinerte funksjonen '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Kjør den brukerdefinerte funksjonen'%1' og bruk resultatet av den.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "parametere", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Legg til, fjern eller endre rekkefølgen på input til denne funksjonen.", - "PROCEDURES_MUTATORARG_TITLE": "Navn på parameter:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Legg til en input til funksjonen.", - "PROCEDURES_HIGHLIGHT_DEF": "Marker funksjonsdefinisjonen", - "PROCEDURES_CREATE_DO": "Opprett '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Hvis en verdi er sann, returner da en annen verdi.", - "PROCEDURES_IFRETURN_WARNING": "Advarsel: Denne blokken kan bare benyttes innenfor en funksjonsdefinisjon.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Si noe …", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Avbryt" -} +{ + "@metadata": { + "authors": [ + "Cocu", + "Jon Harald Søby", + "Kingu", + "SuperPotato", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "element", + "TODAY": "I dag", + "DUPLICATE_BLOCK": "duplikat", + "ADD_COMMENT": "Legg til kommentar", + "REMOVE_COMMENT": "Fjern kommentar", + "DUPLICATE_COMMENT": "Dupliser kommentar", + "EXTERNAL_INPUTS": "Eksterne kilder", + "INLINE_INPUTS": "Interne kilder", + "DELETE_BLOCK": "Slett blokk", + "DELETE_X_BLOCKS": "Slett %1 blokker", + "DELETE_ALL_BLOCKS": "Slett alle %1 blokker?", + "CLEAN_UP": "Rydd opp Blocks", + "COLLAPSE_BLOCK": "Skjul blokk", + "COLLAPSE_ALL": "Skjul blokker", + "EXPAND_BLOCK": "Utvid blokk", + "EXPAND_ALL": "Utvid blokker", + "DISABLE_BLOCK": "Deaktiver blokk", + "ENABLE_BLOCK": "Aktiver blokk", + "HELP": "Hjelp", + "UNDO": "Angre", + "REDO": "Gjør om", + "CHANGE_VALUE_TITLE": "Bytt verdi:", + "RENAME_VARIABLE": "Gi nytt navn til variabel…", + "RENAME_VARIABLE_TITLE": "Endre navnet til alle '%1' variabler til:", + "NEW_VARIABLE": "Opprett variabel…", + "NEW_STRING_VARIABLE": "Oppretter strengvariabel …", + "NEW_NUMBER_VARIABLE": "Oppretter tallvariabel …", + "NEW_COLOUR_VARIABLE": "Oppretter fargevariabel …", + "NEW_VARIABLE_TYPE_TITLE": "Ny variabeltype:", + "NEW_VARIABLE_TITLE": "Nytt variabelnavn:", + "VARIABLE_ALREADY_EXISTS": "En variabel med navn «%1» finnes allerede.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "En variabel med navn «%1» finnes allerede for en annen type: «%2».", + "DELETE_VARIABLE_CONFIRMATION": "Slett %1 bruk av variabelen «%2»?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Kan ikke slette variabelen «%1» fordi den er del av definisjonen for funksjonen «%2»", + "DELETE_VARIABLE": "Slett variabelen «%1»", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Velg en farge fra paletten.", + "COLOUR_RANDOM_TITLE": "tilfeldig farge", + "COLOUR_RANDOM_TOOLTIP": "Velg en tilfeldig farge.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "farge med", + "COLOUR_RGB_RED": "rød", + "COLOUR_RGB_GREEN": "grønn", + "COLOUR_RGB_BLUE": "blå", + "COLOUR_RGB_TOOLTIP": "Lag en farge med angitt verdi av rød, grønn og blå. Alle verdier må være mellom 0 og 100.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "blande", + "COLOUR_BLEND_COLOUR1": "farge 1", + "COLOUR_BLEND_COLOUR2": "farge 2", + "COLOUR_BLEND_RATIO": "forhold", + "COLOUR_BLEND_TOOLTIP": "Blander to farger sammen med et gitt forhold (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "gjenta %1 ganger", + "CONTROLS_REPEAT_INPUT_DO": "gjør", + "CONTROLS_REPEAT_TOOLTIP": "Gjenta noen instruksjoner flere ganger.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "gjenta mens", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "gjenta til", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Så lenge et utsagn stemmer, utfør noen instruksjoner.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Så lenge et utsagn ikke stemmer, gjør noen instruksjoner.", + "CONTROLS_FOR_TOOLTIP": "Ha variabel \"%1\" ta verdiene fra start nummer til slutt nummer, telle med spesifisert intervall og lag de spesifiserte blokkene.", + "CONTROLS_FOR_TITLE": "tell med %1 fra %2 til %3 med %4", + "CONTROLS_FOREACH_TITLE": "for hvert element %1 i listen %2", + "CONTROLS_FOREACH_TOOLTIP": "For hvert element i en liste, angi variabelen '%1' til elementet, og deretter lag noen setninger.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "bryt ut av løkken", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fortsett med neste gjentakelse av løkken", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Bryt ut av den gjeldende løkken.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Hopp over resten av denne løkken og fortsett med neste gjentakelse.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Advarsel: Denne blokken kan kun brukes innenfor en løkke.", + "CONTROLS_IF_TOOLTIP_1": "Hvis dette er sant, så gjør følgende.", + "CONTROLS_IF_TOOLTIP_2": "Hvis dette er sant, så utfør den første blokken av instruksjoner. Hvis ikke, utfør den andre blokken.", + "CONTROLS_IF_TOOLTIP_3": "Hvis det første stemmer, så utfør den første blokken av instruksjoner. Ellers, hvis det andre stemmer, utfør den andre blokken av instruksjoner.", + "CONTROLS_IF_TOOLTIP_4": "Hvis den første verdien er sann, så utfør den første blokken med setninger. Ellers, hvis den andre verdien er sann, så utfør den andre blokken med setninger. Hvis ingen av verdiene er sanne, så utfør den siste blokken med setninger.", + "CONTROLS_IF_MSG_IF": "hvis", + "CONTROLS_IF_MSG_ELSEIF": "ellers hvis", + "CONTROLS_IF_MSG_ELSE": "ellers", + "CONTROLS_IF_IF_TOOLTIP": "Legg til, fjern eller flytt seksjoner i denne hvis-blokken.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Legg til en betingelse til hvis blokken.", + "CONTROLS_IF_ELSE_TOOLTIP": "Legg til hva som skal skje hvis de andre ikke slår til.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Returnerer sann hvis begge inputene er like hverandre.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Returnerer sant hvis begge argumentene er ulike hverandre.", + "LOGIC_COMPARE_TOOLTIP_LT": "Returnerer sant hvis det første argumentet er mindre enn det andre argumentet.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Returnerer sant hvis det første argumentet er mindre enn eller likt det andre argumentet.", + "LOGIC_COMPARE_TOOLTIP_GT": "Returnerer sant hvis det første argumentet er større enn den andre argumentet.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Returnerer sant hvis det første argumentet er større enn eller likt det andre argumentet.", + "LOGIC_OPERATION_TOOLTIP_AND": "Returnerer sant hvis begge argumentene er sanne.", + "LOGIC_OPERATION_AND": "og", + "LOGIC_OPERATION_TOOLTIP_OR": "Returnerer sant hvis minst ett av argumentene er sant.", + "LOGIC_OPERATION_OR": "eller", + "LOGIC_NEGATE_TITLE": "ikke %1", + "LOGIC_NEGATE_TOOLTIP": "Returnerer sant hvis argumentet er usant. Returnerer usant hvis argumentet er sant.", + "LOGIC_BOOLEAN_TRUE": "sann", + "LOGIC_BOOLEAN_FALSE": "usann", + "LOGIC_BOOLEAN_TOOLTIP": "Returnerer enten sann eller usann.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Returnerer null.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "hvis sant", + "LOGIC_TERNARY_IF_FALSE": "hvis usant", + "LOGIC_TERNARY_TOOLTIP": "Sjekk betingelsen i 'test'. Hvis betingelsen er sann, da returneres 'hvis sant' verdien. Hvis ikke returneres 'hvis usant' verdien.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Et tall.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "x", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://no.wikipedia.org/wiki/Aritmetikk", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Returnerer summen av to tall.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Returner differansen mellom to tall.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Returner produktet av to tall.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Returner kvotienten av to tall.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Returner det første tallet opphøyd i den andre tallet.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "kvadratrot", + "MATH_SINGLE_TOOLTIP_ROOT": "Returner kvadratroten av et tall.", + "MATH_SINGLE_OP_ABSOLUTE": "absoluttverdi", + "MATH_SINGLE_TOOLTIP_ABS": "Returner absoluttverdien av et tall.", + "MATH_SINGLE_TOOLTIP_NEG": "Returner det negative tallet.", + "MATH_SINGLE_TOOLTIP_LN": "Returner den naturlige logaritmen til et tall.", + "MATH_SINGLE_TOOLTIP_LOG10": "Returner base-10 logaritmen til et tall.", + "MATH_SINGLE_TOOLTIP_EXP": "Returner e opphøyd i et tall.", + "MATH_SINGLE_TOOLTIP_POW10": "Returner 10 opphøyd i et tall.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Returner sinus av en vinkel (ikke radian).", + "MATH_TRIG_TOOLTIP_COS": "Returner cosinus av en vinkel (ikke radian).", + "MATH_TRIG_TOOLTIP_TAN": "Returner tangenten av en vinkel (ikke radian).", + "MATH_TRIG_TOOLTIP_ASIN": "Returner arcsinus til et tall.", + "MATH_TRIG_TOOLTIP_ACOS": "Returner arccosinus til et tall.", + "MATH_TRIG_TOOLTIP_ATAN": "Returner arctangens til et tall.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Returner en av felleskonstantene π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), eller ∞ (uendelig).", + "MATH_IS_EVEN": "er et partall", + "MATH_IS_ODD": "er et oddetall", + "MATH_IS_PRIME": "er et primtall", + "MATH_IS_WHOLE": "er et heltall", + "MATH_IS_POSITIVE": "er positivt", + "MATH_IS_NEGATIVE": "er negativer negativt", + "MATH_IS_DIVISIBLE_BY": "er delelig med", + "MATH_IS_TOOLTIP": "Sjekk om et tall er et partall, oddetall, primtall, heltall, positivt, negativt, eller om det er delelig med et annet tall. Returnerer sant eller usant.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "endre %1 ved %2", + "MATH_CHANGE_TOOLTIP": "Addere et tall til variabelen '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Avrund et tall ned eller opp.", + "MATH_ROUND_OPERATOR_ROUND": "avrunding", + "MATH_ROUND_OPERATOR_ROUNDUP": "rund opp", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "rund ned", + "MATH_ONLIST_OPERATOR_SUM": "summen av listen", + "MATH_ONLIST_TOOLTIP_SUM": "Returner summen av alle tallene i listen.", + "MATH_ONLIST_OPERATOR_MIN": "minimum av listen", + "MATH_ONLIST_TOOLTIP_MIN": "Returner det minste tallet i listen.", + "MATH_ONLIST_OPERATOR_MAX": "maksimum av liste", + "MATH_ONLIST_TOOLTIP_MAX": "Returner det største tallet i listen.", + "MATH_ONLIST_OPERATOR_AVERAGE": "gjennomsnittet av listen", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Returner det aritmetiske gjennomsnittet av tallene i listen.", + "MATH_ONLIST_OPERATOR_MEDIAN": "medianen til listen", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Returner listens median.", + "MATH_ONLIST_OPERATOR_MODE": "Listens typetall", + "MATH_ONLIST_TOOLTIP_MODE": "Returner en liste av de vanligste elementene i listen.", + "MATH_ONLIST_OPERATOR_STD_DEV": "standardavviket til listen", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Returner listens standardavvik.", + "MATH_ONLIST_OPERATOR_RANDOM": "tilfeldig element i listen", + "MATH_ONLIST_TOOLTIP_RANDOM": "Returner et tilfeldig element fra listen.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "resten av %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Returner resten fra delingen av to tall.", + "MATH_CONSTRAIN_TITLE": "begrense %1 lav %2 høy %3", + "MATH_CONSTRAIN_TOOLTIP": "Begrens et tall til å være mellom de angitte grenseverdiene (inklusiv).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "Et tilfeldig heltall mellom %1 og %2", + "MATH_RANDOM_INT_TOOLTIP": "Returner et tilfeldig tall mellom de to spesifiserte grensene, inkludert de to.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "tilfeldig flyttall", + "MATH_RANDOM_FLOAT_TOOLTIP": "Returner et tilfeldig flyttall mellom 0.0 (inkludert) og 1.0 (ikke inkludert).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 av X:%1 Y:%2", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "En bokstav, ett ord eller en linje med tekst.", + "TEXT_JOIN_TITLE_CREATEWITH": "lag tekst med", + "TEXT_JOIN_TOOLTIP": "Opprett en tekst ved å sette sammen et antall elementer.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "føy sammen", + "TEXT_CREATE_JOIN_TOOLTIP": "Legg til, fjern eller forandre rekkefølgen for å forandre på denne tekstblokken.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Legg til et element til teksten.", + "TEXT_APPEND_TITLE": "til %1, legg til teksten %2", + "TEXT_APPEND_TOOLTIP": "Tilføy tekst til variabelen '%1'.", + "TEXT_LENGTH_TITLE": "lengden av %1", + "TEXT_LENGTH_TOOLTIP": "Returnerer antall bokstaver (inkludert mellomrom) i den angitte teksten.", + "TEXT_ISEMPTY_TITLE": "%1 er tom", + "TEXT_ISEMPTY_TOOLTIP": "Returnerer sann hvis den angitte teksten er tom.", + "TEXT_INDEXOF_TOOLTIP": "Returnerer posisjonen for første/siste forekomsten av den første tekst i den andre teksten. Returnerer %1 hvis teksten ikke blir funnet.", + "TEXT_INDEXOF_TITLE": "i teksten %1, %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "finn første forekomst av tekst", + "TEXT_INDEXOF_OPERATOR_LAST": "finn siste forekomst av tekst", + "TEXT_CHARAT_TITLE": "i teksten %1, %2", + "TEXT_CHARAT_FROM_START": "hent bokstav #", + "TEXT_CHARAT_FROM_END": "hent bokstav # fra slutten", + "TEXT_CHARAT_FIRST": "hent første bokstav", + "TEXT_CHARAT_LAST": "hent den siste bokstaven", + "TEXT_CHARAT_RANDOM": "hent en tilfeldig bokstav", + "TEXT_CHARAT_TAIL": "", + "TEXT_CHARAT_TOOLTIP": "Returnerer bokstaven på angitt plassering.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Returnerer den angitte delen av teksten.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "i tekst", + "TEXT_GET_SUBSTRING_START_FROM_START": "hent delstreng fra bokstav #", + "TEXT_GET_SUBSTRING_START_FROM_END": "hent delstreng fra bokstav # fra slutten", + "TEXT_GET_SUBSTRING_START_FIRST": "hent delstreng fra første bokstav", + "TEXT_GET_SUBSTRING_END_FROM_START": "til bokstav #", + "TEXT_GET_SUBSTRING_END_FROM_END": "til bokstav # fra slutten", + "TEXT_GET_SUBSTRING_END_LAST": "til siste bokstav", + "TEXT_GET_SUBSTRING_TAIL": "", + "TEXT_CHANGECASE_TOOLTIP": "Returnerer en kopi av teksten der store og små bokstaver er byttet om.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "til STORE BOKSTAVER", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "til små bokstaver", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "til store forbokstaver", + "TEXT_TRIM_TOOLTIP": "Returner en kopi av teksten med mellomrom fjernet fra en eller begge sidene.", + "TEXT_TRIM_OPERATOR_BOTH": "fjern mellomrom fra begge sider av", + "TEXT_TRIM_OPERATOR_LEFT": "fjern mellomrom fra venstre side av", + "TEXT_TRIM_OPERATOR_RIGHT": "fjern mellomrom fra høyre side av", + "TEXT_PRINT_TITLE": "skriv ut %1", + "TEXT_PRINT_TOOLTIP": "Skriv ut angitt tekst, tall eller annet innhold.", + "TEXT_PROMPT_TYPE_TEXT": "spør om tekst med en melding", + "TEXT_PROMPT_TYPE_NUMBER": "spør om et tall med en melding", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Be brukeren om et tall.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Spør brukeren om tekst.", + "TEXT_COUNT_MESSAGE0": "tell %1 i %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Tell hvor mange ganger noe tekst dukker opp i annen tekst.", + "TEXT_REPLACE_MESSAGE0": "erstatt %1 med %2 i %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Erstatter alle forekomster av noe tekst i en annen tekst.", + "TEXT_REVERSE_MESSAGE0": "reverser %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Reverserer rekkefølgen på tegnene i teksten.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "opprett en tom liste", + "LISTS_CREATE_EMPTY_TOOLTIP": "Returnerer en tom liste, altså med lengde 0", + "LISTS_CREATE_WITH_TOOLTIP": "Lag en liste med et vilkårlig antall elementer.", + "LISTS_CREATE_WITH_INPUT_WITH": "lag en liste med", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Legg til, fjern eller endre rekkefølgen for å endre på denne delen av listen.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Tilføy et element til listen.", + "LISTS_REPEAT_TOOLTIP": "Lager en liste hvor den gitte verdien gjentas et antall ganger.", + "LISTS_REPEAT_TITLE": "Lag en liste hvor elementet %1 forekommer %2 ganger", + "LISTS_LENGTH_TITLE": "lengden på %1", + "LISTS_LENGTH_TOOLTIP": "Returnerer lengden til en liste.", + "LISTS_ISEMPTY_TITLE": "%1 er tom", + "LISTS_ISEMPTY_TOOLTIP": "Returnerer sann hvis listen er tom.", + "LISTS_INLIST": "i listen", + "LISTS_INDEX_OF_FIRST": "finn første forekomst av elementet", + "LISTS_INDEX_OF_LAST": "finn siste forekomst av elementet", + "LISTS_INDEX_OF_TOOLTIP": "Returnerer indeksen av den første/siste forekomsten av elementet i lista. Returnerer %1 hvis ikke funnet.", + "LISTS_GET_INDEX_GET": "hent", + "LISTS_GET_INDEX_GET_REMOVE": "hent og fjern", + "LISTS_GET_INDEX_REMOVE": "fjern", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# fra slutten", + "LISTS_GET_INDEX_FIRST": "først", + "LISTS_GET_INDEX_LAST": "siste", + "LISTS_GET_INDEX_RANDOM": "tilfeldig", + "LISTS_GET_INDEX_TAIL": "", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 er det første elementet.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 er det siste elementet.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returner elementet på den angitte posisjonen i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returnerer det første elementet i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returnerer det siste elementet i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returnerer et tilfeldig element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fjerner og returnerer elementet ved en gitt posisjon i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fjerner og returnerer det første elementet i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fjerner og returnerer det siste elementet i en liste.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fjerner og returnerer et tilfeldig element i en liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fjerner et element ved en gitt posisjon i en liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fjerner det første elementet i en liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fjerner det siste elementet i en liste.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Fjerner et tilfeldig element i en liste.", + "LISTS_SET_INDEX_SET": "sett", + "LISTS_SET_INDEX_INSERT": "sett inn ved", + "LISTS_SET_INDEX_INPUT_TO": "som", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setter inn elementet ved den angitte posisjonen i en liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Angir det første elementet i en liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Angir det siste elementet i en liste.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Angir et tilfeldig element i en liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Setter inn elementet ved den angitte posisjonen i en liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Setter inn elementet i starten av en liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Tilføy elementet til slutten av en liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Setter inn elementet ved en tilfeldig posisjon i en liste.", + "LISTS_GET_SUBLIST_START_FROM_START": "Hent del-listen fra #", + "LISTS_GET_SUBLIST_START_FROM_END": "Hent de siste # elementene", + "LISTS_GET_SUBLIST_START_FIRST": "Hent en del av listen", + "LISTS_GET_SUBLIST_END_FROM_START": "til #", + "LISTS_GET_SUBLIST_END_FROM_END": "til # fra slutten", + "LISTS_GET_SUBLIST_END_LAST": "til siste", + "LISTS_GET_SUBLIST_TAIL": "", + "LISTS_GET_SUBLIST_TOOLTIP": "Kopiérer en ønsket del av en liste.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sorter %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sorter en kopi av en liste.", + "LISTS_SORT_ORDER_ASCENDING": "stigende", + "LISTS_SORT_ORDER_DESCENDING": "synkende", + "LISTS_SORT_TYPE_NUMERIC": "numerisk", + "LISTS_SORT_TYPE_TEXT": "alfabetisk", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetisk, ignorert store/små bokstaver", + "LISTS_SPLIT_LIST_FROM_TEXT": "lag liste av tekst", + "LISTS_SPLIT_TEXT_FROM_LIST": "lag tekst av liste", + "LISTS_SPLIT_WITH_DELIMITER": "med avgrenser", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Splitt teksten til en liste med tekster, brutt ved hver avgrenser.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Føy sammen en liste tekster til én tekst, avskilt av en avgrenser.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "reverser %1", + "LISTS_REVERSE_TOOLTIP": "Reverser en kopi av ei liste.", + "VARIABLES_GET_TOOLTIP": "Returnerer verdien av denne variabelen.", + "VARIABLES_GET_CREATE_SET": "Opprett 'sett %1'", + "VARIABLES_SET": "sett %1 til %2", + "VARIABLES_SET_TOOLTIP": "Setter verdien av denne variablen lik parameteren.", + "VARIABLES_SET_CREATE_GET": "Opprett 'hent %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "til", + "PROCEDURES_DEFNORETURN_PROCEDURE": "gjør noe", + "PROCEDURES_BEFORE_PARAMS": "med:", + "PROCEDURES_CALL_BEFORE_PARAMS": "med:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Opprett en funksjon som ikke har noe resultat.", + "PROCEDURES_DEFNORETURN_COMMENT": "Beskriv denne funksjonen…", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFRETURN_RETURN": "returner", + "PROCEDURES_DEFRETURN_TOOLTIP": "Oppretter en funksjon som har et resultat.", + "PROCEDURES_ALLOW_STATEMENTS": "tillat uttalelser", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Advarsel: Denne funksjonen har duplikate parametere.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Kjør den brukerdefinerte funksjonen '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Kjør den brukerdefinerte funksjonen'%1' og bruk resultatet av den.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "parametere", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Legg til, fjern eller endre rekkefølgen på input til denne funksjonen.", + "PROCEDURES_MUTATORARG_TITLE": "Navn på parameter:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Legg til en input til funksjonen.", + "PROCEDURES_HIGHLIGHT_DEF": "Marker funksjonsdefinisjonen", + "PROCEDURES_CREATE_DO": "Opprett '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Hvis en verdi er sann, returner da en annen verdi.", + "PROCEDURES_IFRETURN_WARNING": "Advarsel: Denne blokken kan bare benyttes innenfor en funksjonsdefinisjon.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Si noe …", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Avbryt" +} diff --git a/msg/json/ne.json b/msg/json/ne.json index edfab8ce4f9..3372c5189ef 100644 --- a/msg/json/ne.json +++ b/msg/json/ne.json @@ -1,46 +1,46 @@ -{ - "@metadata": { - "authors": [ - "सरोज कुमार ढकाल" - ] - }, - "VARIABLES_DEFAULT_NAME": "वस्तु", - "TODAY": "आज", - "DUPLICATE_BLOCK": "प्रतिलिपी गर्ने", - "ADD_COMMENT": "टिप्पणी थप्ने", - "REMOVE_COMMENT": "टिप्पणी हटाउने", - "EXTERNAL_INPUTS": "बाह्य इन्पुटहरू", - "INLINE_INPUTS": "इनलाइन इन्पुटहरू", - "DELETE_BLOCK": "ब्लक हटाउने", - "DELETE_X_BLOCKS": " %1 ब्लकहरू हटाउने", - "CLEAN_UP": "ब्लकहरू हटाउनुहोस्", - "COLLAPSE_BLOCK": "ब्लक भत्काउनुहोस्", - "COLLAPSE_ALL": "ब्लक भत्काउनुहोस्", - "EXPAND_BLOCK": "ब्लकहरू फिजाउने", - "EXPAND_ALL": "ब्लकहरू फिजाउने", - "DISABLE_BLOCK": "ब्लकलाई सक्रिय पार्ने", - "ENABLE_BLOCK": "ब्लकलाई निश्कृयपार्ने", - "HELP": "सहायता", - "UNDO": "रद्द गर्ने", - "REDO": "पुन: कायम गर्ने", - "CHANGE_VALUE_TITLE": "मान बदल्नुहोस :", - "RENAME_VARIABLE": "भेरिएबल पुन: नामाकरण गर्ने ...", - "NEW_VARIABLE": "नयाँ भेरिएबल ...", - "NEW_VARIABLE_TITLE": "नयाँ भेरिएबल नाम:", - "COLOUR_RANDOM_TITLE": "जुनसुकै रङ्ग", - "COLOUR_RGB_TITLE": "यस रङ्गको", - "COLOUR_RGB_RED": "रातो", - "COLOUR_RGB_GREEN": "हरियो", - "COLOUR_RGB_BLUE": "निलो", - "COLOUR_BLEND_COLOUR1": " रङ्ग १", - "COLOUR_BLEND_COLOUR2": "रङ्ग २", - "COLOUR_BLEND_RATIO": "अनुपात", - "MATH_IS_EVEN": "जोर संख्या हो", - "MATH_IS_ODD": "बिजोर संख्या हो", - "MATH_IS_PRIME": "रुढ संख्या हो", - "MATH_IS_POSITIVE": "धनात्मक संख्या हो", - "MATH_IS_NEGATIVE": "ऋणात्मक संख्या हो", - "PROCEDURES_MUTATORCONTAINER_TITLE": "इन्पुटहरू", - "DIALOG_OK": "हुन्छ", - "DIALOG_CANCEL": "रद्द गर्ने" -} +{ + "@metadata": { + "authors": [ + "सरोज कुमार ढकाल" + ] + }, + "VARIABLES_DEFAULT_NAME": "वस्तु", + "TODAY": "आज", + "DUPLICATE_BLOCK": "प्रतिलिपी गर्ने", + "ADD_COMMENT": "टिप्पणी थप्ने", + "REMOVE_COMMENT": "टिप्पणी हटाउने", + "EXTERNAL_INPUTS": "बाह्य इन्पुटहरू", + "INLINE_INPUTS": "इनलाइन इन्पुटहरू", + "DELETE_BLOCK": "ब्लक हटाउने", + "DELETE_X_BLOCKS": " %1 ब्लकहरू हटाउने", + "CLEAN_UP": "ब्लकहरू हटाउनुहोस्", + "COLLAPSE_BLOCK": "ब्लक भत्काउनुहोस्", + "COLLAPSE_ALL": "ब्लक भत्काउनुहोस्", + "EXPAND_BLOCK": "ब्लकहरू फिजाउने", + "EXPAND_ALL": "ब्लकहरू फिजाउने", + "DISABLE_BLOCK": "ब्लकलाई सक्रिय पार्ने", + "ENABLE_BLOCK": "ब्लकलाई निश्कृयपार्ने", + "HELP": "सहायता", + "UNDO": "रद्द गर्ने", + "REDO": "पुन: कायम गर्ने", + "CHANGE_VALUE_TITLE": "मान बदल्नुहोस :", + "RENAME_VARIABLE": "भेरिएबल पुन: नामाकरण गर्ने ...", + "NEW_VARIABLE": "नयाँ भेरिएबल ...", + "NEW_VARIABLE_TITLE": "नयाँ भेरिएबल नाम:", + "COLOUR_RANDOM_TITLE": "जुनसुकै रङ्ग", + "COLOUR_RGB_TITLE": "यस रङ्गको", + "COLOUR_RGB_RED": "रातो", + "COLOUR_RGB_GREEN": "हरियो", + "COLOUR_RGB_BLUE": "निलो", + "COLOUR_BLEND_COLOUR1": " रङ्ग १", + "COLOUR_BLEND_COLOUR2": "रङ्ग २", + "COLOUR_BLEND_RATIO": "अनुपात", + "MATH_IS_EVEN": "जोर संख्या हो", + "MATH_IS_ODD": "बिजोर संख्या हो", + "MATH_IS_PRIME": "रुढ संख्या हो", + "MATH_IS_POSITIVE": "धनात्मक संख्या हो", + "MATH_IS_NEGATIVE": "ऋणात्मक संख्या हो", + "PROCEDURES_MUTATORCONTAINER_TITLE": "इन्पुटहरू", + "DIALOG_OK": "हुन्छ", + "DIALOG_CANCEL": "रद्द गर्ने" +} diff --git a/msg/json/nl.json b/msg/json/nl.json index c59ed69d86f..80f5f5bc21d 100644 --- a/msg/json/nl.json +++ b/msg/json/nl.json @@ -1,394 +1,394 @@ -{ - "@metadata": { - "authors": [ - "Elroy", - "Festina90", - "JaapDeKleine", - "Jeleniccz", - "Klaas van Buiten", - "KlaasZ4usV", - "Lemondoge", - "Marcelhospers", - "McDutchie", - "MedShot", - "Optilete", - "Patio", - "Ribert", - "Siebrand", - "Sjoerddebruin", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "item", - "UNNAMED_KEY": "zonder naam", - "TODAY": "Vandaag", - "DUPLICATE_BLOCK": "Dupliceren", - "ADD_COMMENT": "Opmerking toevoegen", - "REMOVE_COMMENT": "Opmerking verwijderen", - "DUPLICATE_COMMENT": "Opmerking dupliceren", - "EXTERNAL_INPUTS": "Externe invoer", - "INLINE_INPUTS": "Inline invoer", - "DELETE_BLOCK": "Blok verwijderen", - "DELETE_X_BLOCKS": "%1 blokken verwijderen", - "DELETE_ALL_BLOCKS": "Alle %1 blokken verwijderen?", - "CLEAN_UP": "Blokken opschonen", - "COLLAPSE_BLOCK": "Blok samenvouwen", - "COLLAPSE_ALL": "Blokken samenvouwen", - "EXPAND_BLOCK": "Blok uitvouwen", - "EXPAND_ALL": "Blokken uitvouwen", - "DISABLE_BLOCK": "Blok uitschakelen", - "ENABLE_BLOCK": "Blok inschakelen", - "HELP": "Hulp", - "UNDO": "Ongedaan maken", - "REDO": "Opnieuw", - "CHANGE_VALUE_TITLE": "Waarde wijzigen:", - "RENAME_VARIABLE": "Variabele hernoemen...", - "RENAME_VARIABLE_TITLE": "Alle variabelen \"%1\" hernoemen naar:", - "NEW_VARIABLE": "Variabele maken...", - "NEW_STRING_VARIABLE": "Creëer tekstvariabele", - "NEW_NUMBER_VARIABLE": "Creëer numeriek variabele", - "NEW_COLOUR_VARIABLE": "Creëer kleurvariabele", - "NEW_VARIABLE_TYPE_TITLE": "Nieuw soort variabele", - "NEW_VARIABLE_TITLE": "Nieuwe variabelenaam:", - "VARIABLE_ALREADY_EXISTS": "Er bestaat al een variabele met de naam \"%1\".", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Een variabele met de naam '%1' bestaat al voor een ander soort variabele: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "%1 gebruiken van de variabele \"%2\" verwijderen?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "De variabele \"%1\" kan niet verwijderd worden omdat die onderdeel uitmaakt van de definitie van de functie \"%2\"", - "DELETE_VARIABLE": "Verwijder de variabele \"%1\"", - "COLOUR_PICKER_HELPURL": "https://nl.wikipedia.org/wiki/Kleur", - "COLOUR_PICKER_TOOLTIP": "Kies een kleur in het palet.", - "COLOUR_RANDOM_TITLE": "willekeurige kleur", - "COLOUR_RANDOM_TOOLTIP": "Kies een willekeurige kleur.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "kleuren met", - "COLOUR_RGB_RED": "rood", - "COLOUR_RGB_GREEN": "groen", - "COLOUR_RGB_BLUE": "blauw", - "COLOUR_RGB_TOOLTIP": "Maak een kleur met de opgegeven hoeveelheid rood, groen en blauw. Alle waarden moeten tussen 0 en 100 liggen.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "mengen", - "COLOUR_BLEND_COLOUR1": "kleur 1", - "COLOUR_BLEND_COLOUR2": "kleur 2", - "COLOUR_BLEND_RATIO": "verhouding", - "COLOUR_BLEND_TOOLTIP": "Mengt twee kleuren samen met een bepaalde verhouding (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://nl.wikipedia.org/wiki/Repetitie_(informatica)#For_en_Foreach", - "CONTROLS_REPEAT_TITLE": "%1 keer herhalen", - "CONTROLS_REPEAT_INPUT_DO": "voer uit", - "CONTROLS_REPEAT_TOOLTIP": "Voer een aantal opdrachten meerdere keren uit.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "herhalen zolang", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "herhalen totdat", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Terwijl een waarde waar is de volgende opdrachten uitvoeren.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Terwijl een waarde onwaar is de volgende opdrachten uitvoeren.", - "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", - "CONTROLS_FOR_TOOLTIP": "Laat de variabele \"%1\" de waarden aannemen van het beginnummer tot het laatste nummer, tellende met het opgegeven interval, en met uitvoering van de opgegeven blokken.", - "CONTROLS_FOR_TITLE": "rekenen met %1 van %2 tot %3 in stappen van %4", - "CONTROLS_FOREACH_TITLE": "voor ieder item %1 in lijst %2", - "CONTROLS_FOREACH_TOOLTIP": "Voor ieder item in een lijst, stel de variabele \"%1\" in op het item en voer daarna opdrachten uit.", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "uit lus breken", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "doorgaan met de volgende iteratie van de lus", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Uit de bovenliggende lus breken.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "De rest van deze lus overslaan en doorgaan met de volgende herhaling.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Waarschuwing: dit blok mag alleen gebruikt worden in een lus.", - "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", - "CONTROLS_IF_TOOLTIP_1": "Als een waarde waar is, voer dan opdrachten uit.", - "CONTROLS_IF_TOOLTIP_2": "Als een waarde waar is, voert dan het eerste blok met opdrachten uit. Voer andere het tweede blok met opdrachten uit.", - "CONTROLS_IF_TOOLTIP_3": "Als de eerste waarde waar is, voer dan het eerste blok met opdrachten uit. Voer anders, als de tweede waarde waar is, het tweede blok met opdrachten uit.", - "CONTROLS_IF_TOOLTIP_4": "Als de eerste waarde \"waar\" is, voer dan het eerste blok uit. Voer anders wanneer de tweede waarde \"waar\" is, het tweede blok uit. Als geen van beide waarden waar zijn, voer dan het laatste blok uit.", - "CONTROLS_IF_MSG_IF": "als", - "CONTROLS_IF_MSG_ELSEIF": "anders als", - "CONTROLS_IF_MSG_ELSE": "anders", - "CONTROLS_IF_IF_TOOLTIP": "Voeg stukken toe, verwijder of wijzig de volgorde om dit \"als\"-blok te wijzigen.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Voeg een voorwaarde toe aan het als-blok.", - "CONTROLS_IF_ELSE_TOOLTIP": "Voeg een laatste, vang-alles conditie toe aan het als-statement.", - "LOGIC_COMPARE_HELPURL": "https://nl.wikipedia.org/wiki/Ongelijkheid_(wiskunde)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Geeft \"waar\", als beide waarden gelijk aan elkaar zijn.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Geeft \"waar\" terug als de waarden niet gelijk zijn aan elkaar.", - "LOGIC_COMPARE_TOOLTIP_LT": "Geeft \"waar\" als de eerste invoer kleiner is dan de tweede invoer.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Geeft \"waar\" terug als de eerste invoer kleiner of gelijk is aan de tweede invoer.", - "LOGIC_COMPARE_TOOLTIP_GT": "Geeft \"waar\" terug als de eerste invoer meer is dan de tweede invoer.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Geeft \"waar\" terug als de eerste invoer groter is of gelijk aan de tweede invoer.", - "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", - "LOGIC_OPERATION_TOOLTIP_AND": "Geeft waar als beide waarden waar zijn.", - "LOGIC_OPERATION_AND": "en", - "LOGIC_OPERATION_TOOLTIP_OR": "Geeft \"waar\" terug als in ieder geval één van de waarden waar is.", - "LOGIC_OPERATION_OR": "of", - "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", - "LOGIC_NEGATE_TITLE": "niet %1", - "LOGIC_NEGATE_TOOLTIP": "Geeft \"waar\" terug als de invoer \"onwaar\" is. Geeft \"onwaar\" als de invoer \"waar\" is.", - "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", - "LOGIC_BOOLEAN_TRUE": "waar", - "LOGIC_BOOLEAN_FALSE": "onwaar", - "LOGIC_BOOLEAN_TOOLTIP": "Geeft \"waar\" of \"onwaar\" terug.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "niets", - "LOGIC_NULL_TOOLTIP": "Geeft niets terug.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "als waar", - "LOGIC_TERNARY_IF_FALSE": "als onwaar", - "LOGIC_TERNARY_TOOLTIP": "Test de voorwaarde in \"test\". Als de voorwaarde \"waar\" is, geef de waarde van \"als waar\" terug; geef anders de waarde van \"als onwaar\" terug.", - "MATH_NUMBER_HELPURL": "https://nl.wikipedia.org/wiki/Getal_%28wiskunde%29", - "MATH_NUMBER_TOOLTIP": "Een getal.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "arctan", - "MATH_ARITHMETIC_HELPURL": "https://nl.wikipedia.org/wiki/Rekenen", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Geeft de som van 2 getallen.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Geeft het verschil van de twee getallen.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Geeft het product terug van de twee getallen.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Geeft de gedeelde waarde van twee getallen.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Geeft het eerste getal tot de macht van het tweede getal.", - "MATH_SINGLE_HELPURL": "https://nl.wikipedia.org/wiki/Vierkantswortel", - "MATH_SINGLE_OP_ROOT": "wortel", - "MATH_SINGLE_TOOLTIP_ROOT": "Geeft de wortel van een getal.", - "MATH_SINGLE_OP_ABSOLUTE": "absoluut", - "MATH_SINGLE_TOOLTIP_ABS": "Geeft de absolute waarde van een getal.", - "MATH_SINGLE_TOOLTIP_NEG": "Geeft de negatief van een getal.", - "MATH_SINGLE_TOOLTIP_LN": "Geeft het natuurlijk logaritme van een getal.", - "MATH_SINGLE_TOOLTIP_LOG10": "Geeft het logaritme basis 10 van een getal.", - "MATH_SINGLE_TOOLTIP_EXP": "Geeft e tot de macht van een getal.", - "MATH_SINGLE_TOOLTIP_POW10": "Geeft 10 tot de macht van een getal.", - "MATH_TRIG_HELPURL": "https://nl.wikipedia.org/wiki/Goniometrische_functie", - "MATH_TRIG_TOOLTIP_SIN": "Geeft de sinus van een graad (geen radialen).", - "MATH_TRIG_TOOLTIP_COS": "Geeft de cosinus van een graad (geen radialen).", - "MATH_TRIG_TOOLTIP_TAN": "Geeft de tangens van een graad (geen radialen).", - "MATH_TRIG_TOOLTIP_ASIN": "Geeft de arcsinus van een getal.", - "MATH_TRIG_TOOLTIP_ACOS": "Geeft de arccosinus van een getal.", - "MATH_TRIG_TOOLTIP_ATAN": "Geeft de arctangens van een getal.", - "MATH_CONSTANT_HELPURL": "https://nl.wikipedia.org/wiki/Wiskundige_constante", - "MATH_CONSTANT_TOOLTIP": "Geeft een van de vaak voorkomende constante waardes: π (3.141…), e (2.718…), φ (1.618…), √2 (1.414…), √½ (0.707…), of ∞ (oneindig).", - "MATH_IS_EVEN": "is even", - "MATH_IS_ODD": "is oneven", - "MATH_IS_PRIME": "is priemgetal", - "MATH_IS_WHOLE": "is geheel getal", - "MATH_IS_POSITIVE": "is positief", - "MATH_IS_NEGATIVE": "is negatief", - "MATH_IS_DIVISIBLE_BY": "is deelbaar door", - "MATH_IS_TOOLTIP": "Test of een getal even, oneven, een priemgetal, geheel, positief of negatief is, of deelbaar is door een bepaald getal. Geeft \"waar\" of \"onwaar\".", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "%1 wijzigen met %2", - "MATH_CHANGE_TOOLTIP": "Voegt een getal toe aan variabele \"%1\".", - "MATH_ROUND_HELPURL": "https://nl.wikipedia.org/wiki/Afronden", - "MATH_ROUND_TOOLTIP": "Rondt een getal af omhoog of naar beneden.", - "MATH_ROUND_OPERATOR_ROUND": "afronden", - "MATH_ROUND_OPERATOR_ROUNDUP": "omhoog afronden", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "naar beneden afronden", - "MATH_ONLIST_OPERATOR_SUM": "som van lijst", - "MATH_ONLIST_TOOLTIP_SUM": "Geeft de som van alle getallen in de lijst.", - "MATH_ONLIST_OPERATOR_MIN": "laagste uit lijst", - "MATH_ONLIST_TOOLTIP_MIN": "Geeft het kleinste getal uit een lijst.", - "MATH_ONLIST_OPERATOR_MAX": "hoogste uit lijst", - "MATH_ONLIST_TOOLTIP_MAX": "Geeft het grootste getal in een lijst.", - "MATH_ONLIST_OPERATOR_AVERAGE": "gemiddelde van lijst", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Geeft het gemiddelde terug van de numerieke waardes in een lijst.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediaan van lijst", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Geeft de mediaan in de lijst.", - "MATH_ONLIST_OPERATOR_MODE": "modi van lijst", - "MATH_ONLIST_TOOLTIP_MODE": "Geeft een lijst van de meest voorkomende onderdelen in de lijst.", - "MATH_ONLIST_OPERATOR_STD_DEV": "standaarddeviatie van lijst", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Geeft de standaardafwijking van de lijst.", - "MATH_ONLIST_OPERATOR_RANDOM": "willekeurige item van lijst", - "MATH_ONLIST_TOOLTIP_RANDOM": "Geeft een willekeurig item uit de lijst terug.", - "MATH_MODULO_HELPURL": "https://nl.wikipedia.org/wiki/Modulair_rekenen", - "MATH_MODULO_TITLE": "restgetal van %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Geeft het restgetal van het resultaat van de deling van de twee getallen.", - "MATH_CONSTRAIN_TITLE": "beperk %1 van minimaal %2 tot maximaal %3", - "MATH_CONSTRAIN_TOOLTIP": "Beperk een getal tussen de twee opgegeven limieten (inclusief).", - "MATH_RANDOM_INT_HELPURL": "https://nl.wikipedia.org/wiki/Toevalsgenerator", - "MATH_RANDOM_INT_TITLE": "willekeurig geheel getal van %1 tot %2", - "MATH_RANDOM_INT_TOOLTIP": "Geeft een willekeurig getal tussen de 2 opgegeven limieten in, inclusief.", - "MATH_RANDOM_FLOAT_HELPURL": "https://nl.wikipedia.org/wiki/Toevalsgenerator", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "willekeurige fractie", - "MATH_RANDOM_FLOAT_TOOLTIP": "Geeft een willekeurige fractie tussen 0.0 (inclusief) en 1.0 (exclusief).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 van X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Geef de boogtangens van punt (X, Y) terug in graden tussen -180 naar 180.", - "TEXT_TEXT_HELPURL": "https://nl.wikipedia.org/wiki/String_%28informatica%29", - "TEXT_TEXT_TOOLTIP": "Een letter, woord of een regel tekst.", - "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", - "TEXT_JOIN_TITLE_CREATEWITH": "maak tekst met", - "TEXT_JOIN_TOOLTIP": "Maakt een stuk tekst door één of meer items samen te voegen.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "samenvoegen", - "TEXT_CREATE_JOIN_TOOLTIP": "Toevoegen, verwijderen of volgorde wijzigen van secties om dit tekstblok opnieuw in te stellen.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Voegt een item aan de tekst toe.", - "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_APPEND_TITLE": "voor%1 voeg tekst toe van %2", - "TEXT_APPEND_TOOLTIP": "Voeg tekst toe aan de variabele \"%1\".", - "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_LENGTH_TITLE": "lengte van %1", - "TEXT_LENGTH_TOOLTIP": "Geeft het aantal tekens terug (inclusief spaties) in de opgegeven tekst.", - "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", - "TEXT_ISEMPTY_TITLE": "%1 is leeg", - "TEXT_ISEMPTY_TOOLTIP": "Geeft \"waar\" terug, als de opgegeven tekst leeg is.", - "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", - "TEXT_INDEXOF_TOOLTIP": "Geeft de index terug van het eerste of laatste voorkomen van de eerste tekst in de tweede tekst. Geeft %1 terug als de tekst niet gevonden is.", - "TEXT_INDEXOF_TITLE": "in tekst %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "zoek eerste voorkomen van tekst", - "TEXT_INDEXOF_OPERATOR_LAST": "zoek het laatste voorkomen van tekst", - "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", - "TEXT_CHARAT_TITLE": "in tekst %1 %2", - "TEXT_CHARAT_FROM_START": "haal letter # op", - "TEXT_CHARAT_FROM_END": "haal letter # op vanaf einde", - "TEXT_CHARAT_FIRST": "haal eerste letter op", - "TEXT_CHARAT_LAST": "haal laatste letter op", - "TEXT_CHARAT_RANDOM": "haal willekeurige letter op", - "TEXT_CHARAT_TOOLTIP": "Geeft de letter op de opgegeven positie terug.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Geeft het opgegeven onderdeel van de tekst terug.", - "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in tekst", - "TEXT_GET_SUBSTRING_START_FROM_START": "haal subtekst op vanaf letter #", - "TEXT_GET_SUBSTRING_START_FROM_END": "haal subtekst op vanaf letter # vanaf einde", - "TEXT_GET_SUBSTRING_START_FIRST": "haal subtekst op van eerste letter", - "TEXT_GET_SUBSTRING_END_FROM_START": "naar letter #", - "TEXT_GET_SUBSTRING_END_FROM_END": "van letter # tot einde", - "TEXT_GET_SUBSTRING_END_LAST": "naar laatste letter", - "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", - "TEXT_CHANGECASE_TOOLTIP": "Geef een kopie van de tekst met veranderde hoofdletters terug.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "naar HOOFDLETTERS", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "naar kleine letters", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "naar Hoofdletter Per Woord", - "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", - "TEXT_TRIM_TOOLTIP": "Geeft een kopie van de tekst met verwijderde spaties van één of beide kanten.", - "TEXT_TRIM_OPERATOR_BOTH": "spaties van beide kanten afhalen van", - "TEXT_TRIM_OPERATOR_LEFT": "spaties van de linkerkant verwijderen van", - "TEXT_TRIM_OPERATOR_RIGHT": "spaties van de rechterkant verwijderen van", - "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", - "TEXT_PRINT_TITLE": "tekst weergeven: %1", - "TEXT_PRINT_TOOLTIP": "Drukt de opgegeven tekst, getal of een andere waarde af.", - "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", - "TEXT_PROMPT_TYPE_TEXT": "vraagt om invoer met bericht", - "TEXT_PROMPT_TYPE_NUMBER": "vraagt de gebruiker om een getal met de tekst", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Vraagt de gebruiker om een getal in te voeren.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Vraagt de gebruiker om invoer.", - "TEXT_COUNT_MESSAGE0": "%1 in %2 tellen", - "TEXT_COUNT_TOOLTIP": "Tel hoe vaak bepaalde tekst voorkomt in andere tekst.", - "TEXT_REPLACE_MESSAGE0": "vervang %1 door %2 in %3", - "TEXT_REPLACE_TOOLTIP": "Vervang alle voorkomens van tekst in een andere tekst.", - "TEXT_REVERSE_MESSAGE0": "%1 omkeren", - "TEXT_REVERSE_TOOLTIP": "Keert de volgorde van de tekens in de tekst om.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "maak een lege lijst", - "LISTS_CREATE_EMPTY_TOOLTIP": "Geeft een lijst terug met lengte 0, zonder items", - "LISTS_CREATE_WITH_TOOLTIP": "Maak een lijst met een willekeurig aantal items.", - "LISTS_CREATE_WITH_INPUT_WITH": "maak een lijst met", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lijst", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Voeg stukken toe, verwijder ze of wijzig de volgorde om dit lijstblok aan te passen.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Voeg iets toe aan de lijst.", - "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_REPEAT_TOOLTIP": "Maakt een lijst die bestaat uit de opgegeven waarde, het opgegeven aantal keer herhaald.", - "LISTS_REPEAT_TITLE": "Maak lijst met item %1, %2 keer herhaald", - "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", - "LISTS_LENGTH_TITLE": "lengte van %1", - "LISTS_LENGTH_TOOLTIP": "Geeft de lengte van een lijst terug.", - "LISTS_ISEMPTY_TITLE": "%1 is leeg", - "LISTS_ISEMPTY_TOOLTIP": "Geeft waar terug als de lijst leeg is.", - "LISTS_INLIST": "in lijst", - "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", - "LISTS_INDEX_OF_FIRST": "zoek eerste voorkomen van item", - "LISTS_INDEX_OF_LAST": "zoek laatste voorkomen van item", - "LISTS_INDEX_OF_TOOLTIP": "Geeft de index terug van het eerste of laatste voorkomen van een item in de lijst. Geeft %1 terug als het item niet is gevonden.", - "LISTS_GET_INDEX_GET": "haal op", - "LISTS_GET_INDEX_GET_REMOVE": "haal op en verwijder", - "LISTS_GET_INDEX_REMOVE": "verwijder", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# van einde", - "LISTS_GET_INDEX_FIRST": "eerste", - "LISTS_GET_INDEX_LAST": "laatste", - "LISTS_GET_INDEX_RANDOM": "willekeurig", - "LISTS_INDEX_FROM_START_TOOLTIP": "Item %1 is het eerste item.", - "LISTS_INDEX_FROM_END_TOOLTIP": "Item %1 is het laatste item.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Geeft het item op de opgegeven positie in een lijst.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Geeft het eerste item in een lijst terug.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Geeft het laatste item in een lijst terug.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Geeft een willekeurig item uit een lijst.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Geeft het item op de opgegeven positie in een lijst terug en verwijdert het.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Geeft het laatste item in een lijst terug en verwijdert het.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Geeft het laatste item uit een lijst terug en verwijdert het.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Geeft een willekeurig item in een lijst terug en verwijdert het.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Verwijdert het item op de opgegeven positie in een lijst.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Verwijdert het eerste item in een lijst.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Verwijdert het laatste item uit een lijst.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Verwijdert een willekeurig item uit een lijst.", - "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", - "LISTS_SET_INDEX_SET": "stel in", - "LISTS_SET_INDEX_INSERT": "tussenvoegen op", - "LISTS_SET_INDEX_INPUT_TO": "als", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Zet het item op de opgegeven positie in de lijst.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Stelt het eerste item in een lijst in.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Stelt het laatste item van een lijst in.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Stelt een willekeurig item uit de lijst in.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Voegt het item op een opgegeven positie in een lijst in.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Voegt het item toe aan het begin van de lijst.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Voeg het item aan het einde van een lijst toe.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Voegt het item op een willekeurige positie in de lijst in.", - "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", - "LISTS_GET_SUBLIST_START_FROM_START": "haal sublijst op vanaf positie", - "LISTS_GET_SUBLIST_START_FROM_END": "haal sublijst op van positie vanaf einde", - "LISTS_GET_SUBLIST_START_FIRST": "haal sublijst op vanaf eerste", - "LISTS_GET_SUBLIST_END_FROM_START": "naar item", - "LISTS_GET_SUBLIST_END_FROM_END": "naar # vanaf einde", - "LISTS_GET_SUBLIST_END_LAST": "naar laatste", - "LISTS_GET_SUBLIST_TOOLTIP": "Maakt een kopie van het opgegeven deel van de lijst.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sorteer %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sorteer een kopie van een lijst.", - "LISTS_SORT_ORDER_ASCENDING": "oplopend", - "LISTS_SORT_ORDER_DESCENDING": "aflopend", - "LISTS_SORT_TYPE_NUMERIC": "numeriek", - "LISTS_SORT_TYPE_TEXT": "alfabetisch", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetisch, negeer hoofd-/kleine letters", - "LISTS_SPLIT_LIST_FROM_TEXT": "lijst maken van tekst", - "LISTS_SPLIT_TEXT_FROM_LIST": "tekst maken van lijst", - "LISTS_SPLIT_WITH_DELIMITER": "met scheidingsteken", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Tekst splitsen in een lijst van teksten op basis van een scheidingsteken.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Lijst van tekstdelen samenvoegen in één stuk tekst, waarbij de tekstdelen gescheiden zijn door een scheidingsteken.", - "LISTS_REVERSE_MESSAGE0": "%1 omkeren", - "LISTS_REVERSE_TOOLTIP": "Keert een kopie van een lijst om.", - "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", - "VARIABLES_GET_TOOLTIP": "Geeft de waarde van deze variabele.", - "VARIABLES_GET_CREATE_SET": "Maak \"verander %1\"", - "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", - "VARIABLES_SET": "stel %1 in op %2", - "VARIABLES_SET_TOOLTIP": "Verandert de waarde van de variabele naar de waarde van de invoer.", - "VARIABLES_SET_CREATE_GET": "Maak 'opvragen van %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://nl.wikipedia.org/wiki/Subprogramma", - "PROCEDURES_DEFNORETURN_TITLE": "om", - "PROCEDURES_DEFNORETURN_PROCEDURE": "doe iets", - "PROCEDURES_BEFORE_PARAMS": "met:", - "PROCEDURES_CALL_BEFORE_PARAMS": "met:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Maakt een functie zonder uitvoer.", - "PROCEDURES_DEFNORETURN_COMMENT": "Deze functie beschrijven...", - "PROCEDURES_DEFRETURN_HELPURL": "https://nl.wikipedia.org/wiki/Subprogramma", - "PROCEDURES_DEFRETURN_RETURN": "uitvoeren", - "PROCEDURES_DEFRETURN_TOOLTIP": "Maakt een functie met een uitvoer.", - "PROCEDURES_ALLOW_STATEMENTS": "statements toestaan", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Waarschuwing: deze functie heeft parameters met dezelfde naam.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://nl.wikipedia.org/wiki/Subprogramma", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Voer de door de gebruiker gedefinieerde functie \"%1\" uit.", - "PROCEDURES_CALLRETURN_HELPURL": "https://nl.wikipedia.org/wiki/Subprogramma", - "PROCEDURES_CALLRETURN_TOOLTIP": "Voer de door de gebruiker gedefinieerde functie \"%1\" uit en gebruik de uitvoer.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "ingangen", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Invoer van deze functie toevoegen, verwijderen of herordenen.", - "PROCEDURES_MUTATORARG_TITLE": "invoernaam:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Een invoer aan de functie toevoegen.", - "PROCEDURES_HIGHLIGHT_DEF": "Accentueer functiedefinitie", - "PROCEDURES_CREATE_DO": "Maak \"%1\"", - "PROCEDURES_IFRETURN_TOOLTIP": "Als de eerste waarde \"waar\" is, geef dan de tweede waarde terug.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Waarschuwing: dit blok mag alleen gebruikt worden binnen de definitie van een functie.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Zeg iets...", - "WORKSPACE_ARIA_LABEL": "Blockly werkruimte", - "COLLAPSED_WARNINGS_WARNING": "Samengevouwen blokken bevatten waarschuwingen.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Annuleren" -} +{ + "@metadata": { + "authors": [ + "Elroy", + "Festina90", + "JaapDeKleine", + "Jeleniccz", + "Klaas van Buiten", + "KlaasZ4usV", + "Lemondoge", + "Marcelhospers", + "McDutchie", + "MedShot", + "Optilete", + "Patio", + "Ribert", + "Siebrand", + "Sjoerddebruin", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "item", + "UNNAMED_KEY": "zonder naam", + "TODAY": "Vandaag", + "DUPLICATE_BLOCK": "Dupliceren", + "ADD_COMMENT": "Opmerking toevoegen", + "REMOVE_COMMENT": "Opmerking verwijderen", + "DUPLICATE_COMMENT": "Opmerking dupliceren", + "EXTERNAL_INPUTS": "Externe invoer", + "INLINE_INPUTS": "Inline invoer", + "DELETE_BLOCK": "Blok verwijderen", + "DELETE_X_BLOCKS": "%1 blokken verwijderen", + "DELETE_ALL_BLOCKS": "Alle %1 blokken verwijderen?", + "CLEAN_UP": "Blokken opschonen", + "COLLAPSE_BLOCK": "Blok samenvouwen", + "COLLAPSE_ALL": "Blokken samenvouwen", + "EXPAND_BLOCK": "Blok uitvouwen", + "EXPAND_ALL": "Blokken uitvouwen", + "DISABLE_BLOCK": "Blok uitschakelen", + "ENABLE_BLOCK": "Blok inschakelen", + "HELP": "Hulp", + "UNDO": "Ongedaan maken", + "REDO": "Opnieuw", + "CHANGE_VALUE_TITLE": "Waarde wijzigen:", + "RENAME_VARIABLE": "Variabele hernoemen...", + "RENAME_VARIABLE_TITLE": "Alle variabelen \"%1\" hernoemen naar:", + "NEW_VARIABLE": "Variabele maken...", + "NEW_STRING_VARIABLE": "Creëer tekstvariabele", + "NEW_NUMBER_VARIABLE": "Creëer numeriek variabele", + "NEW_COLOUR_VARIABLE": "Creëer kleurvariabele", + "NEW_VARIABLE_TYPE_TITLE": "Nieuw soort variabele", + "NEW_VARIABLE_TITLE": "Nieuwe variabelenaam:", + "VARIABLE_ALREADY_EXISTS": "Er bestaat al een variabele met de naam \"%1\".", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Een variabele met de naam '%1' bestaat al voor een ander soort variabele: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "%1 gebruiken van de variabele \"%2\" verwijderen?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "De variabele \"%1\" kan niet verwijderd worden omdat die onderdeel uitmaakt van de definitie van de functie \"%2\"", + "DELETE_VARIABLE": "Verwijder de variabele \"%1\"", + "COLOUR_PICKER_HELPURL": "https://nl.wikipedia.org/wiki/Kleur", + "COLOUR_PICKER_TOOLTIP": "Kies een kleur in het palet.", + "COLOUR_RANDOM_TITLE": "willekeurige kleur", + "COLOUR_RANDOM_TOOLTIP": "Kies een willekeurige kleur.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "kleuren met", + "COLOUR_RGB_RED": "rood", + "COLOUR_RGB_GREEN": "groen", + "COLOUR_RGB_BLUE": "blauw", + "COLOUR_RGB_TOOLTIP": "Maak een kleur met de opgegeven hoeveelheid rood, groen en blauw. Alle waarden moeten tussen 0 en 100 liggen.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "mengen", + "COLOUR_BLEND_COLOUR1": "kleur 1", + "COLOUR_BLEND_COLOUR2": "kleur 2", + "COLOUR_BLEND_RATIO": "verhouding", + "COLOUR_BLEND_TOOLTIP": "Mengt twee kleuren samen met een bepaalde verhouding (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://nl.wikipedia.org/wiki/Repetitie_(informatica)#For_en_Foreach", + "CONTROLS_REPEAT_TITLE": "%1 keer herhalen", + "CONTROLS_REPEAT_INPUT_DO": "voer uit", + "CONTROLS_REPEAT_TOOLTIP": "Voer een aantal opdrachten meerdere keren uit.", + "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "herhalen zolang", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "herhalen totdat", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Terwijl een waarde waar is de volgende opdrachten uitvoeren.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Terwijl een waarde onwaar is de volgende opdrachten uitvoeren.", + "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", + "CONTROLS_FOR_TOOLTIP": "Laat de variabele \"%1\" de waarden aannemen van het beginnummer tot het laatste nummer, tellende met het opgegeven interval, en met uitvoering van de opgegeven blokken.", + "CONTROLS_FOR_TITLE": "rekenen met %1 van %2 tot %3 in stappen van %4", + "CONTROLS_FOREACH_TITLE": "voor ieder item %1 in lijst %2", + "CONTROLS_FOREACH_TOOLTIP": "Voor ieder item in een lijst, stel de variabele \"%1\" in op het item en voer daarna opdrachten uit.", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "uit lus breken", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "doorgaan met de volgende iteratie van de lus", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Uit de bovenliggende lus breken.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "De rest van deze lus overslaan en doorgaan met de volgende herhaling.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Waarschuwing: dit blok mag alleen gebruikt worden in een lus.", + "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", + "CONTROLS_IF_TOOLTIP_1": "Als een waarde waar is, voer dan opdrachten uit.", + "CONTROLS_IF_TOOLTIP_2": "Als een waarde waar is, voert dan het eerste blok met opdrachten uit. Voer andere het tweede blok met opdrachten uit.", + "CONTROLS_IF_TOOLTIP_3": "Als de eerste waarde waar is, voer dan het eerste blok met opdrachten uit. Voer anders, als de tweede waarde waar is, het tweede blok met opdrachten uit.", + "CONTROLS_IF_TOOLTIP_4": "Als de eerste waarde \"waar\" is, voer dan het eerste blok uit. Voer anders wanneer de tweede waarde \"waar\" is, het tweede blok uit. Als geen van beide waarden waar zijn, voer dan het laatste blok uit.", + "CONTROLS_IF_MSG_IF": "als", + "CONTROLS_IF_MSG_ELSEIF": "anders als", + "CONTROLS_IF_MSG_ELSE": "anders", + "CONTROLS_IF_IF_TOOLTIP": "Voeg stukken toe, verwijder of wijzig de volgorde om dit \"als\"-blok te wijzigen.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Voeg een voorwaarde toe aan het als-blok.", + "CONTROLS_IF_ELSE_TOOLTIP": "Voeg een laatste, vang-alles conditie toe aan het als-statement.", + "LOGIC_COMPARE_HELPURL": "https://nl.wikipedia.org/wiki/Ongelijkheid_(wiskunde)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Geeft \"waar\", als beide waarden gelijk aan elkaar zijn.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Geeft \"waar\" terug als de waarden niet gelijk zijn aan elkaar.", + "LOGIC_COMPARE_TOOLTIP_LT": "Geeft \"waar\" als de eerste invoer kleiner is dan de tweede invoer.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Geeft \"waar\" terug als de eerste invoer kleiner of gelijk is aan de tweede invoer.", + "LOGIC_COMPARE_TOOLTIP_GT": "Geeft \"waar\" terug als de eerste invoer meer is dan de tweede invoer.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Geeft \"waar\" terug als de eerste invoer groter is of gelijk aan de tweede invoer.", + "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", + "LOGIC_OPERATION_TOOLTIP_AND": "Geeft waar als beide waarden waar zijn.", + "LOGIC_OPERATION_AND": "en", + "LOGIC_OPERATION_TOOLTIP_OR": "Geeft \"waar\" terug als in ieder geval één van de waarden waar is.", + "LOGIC_OPERATION_OR": "of", + "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", + "LOGIC_NEGATE_TITLE": "niet %1", + "LOGIC_NEGATE_TOOLTIP": "Geeft \"waar\" terug als de invoer \"onwaar\" is. Geeft \"onwaar\" als de invoer \"waar\" is.", + "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", + "LOGIC_BOOLEAN_TRUE": "waar", + "LOGIC_BOOLEAN_FALSE": "onwaar", + "LOGIC_BOOLEAN_TOOLTIP": "Geeft \"waar\" of \"onwaar\" terug.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "niets", + "LOGIC_NULL_TOOLTIP": "Geeft niets terug.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "als waar", + "LOGIC_TERNARY_IF_FALSE": "als onwaar", + "LOGIC_TERNARY_TOOLTIP": "Test de voorwaarde in \"test\". Als de voorwaarde \"waar\" is, geef de waarde van \"als waar\" terug; geef anders de waarde van \"als onwaar\" terug.", + "MATH_NUMBER_HELPURL": "https://nl.wikipedia.org/wiki/Getal_%28wiskunde%29", + "MATH_NUMBER_TOOLTIP": "Een getal.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "arctan", + "MATH_ARITHMETIC_HELPURL": "https://nl.wikipedia.org/wiki/Rekenen", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Geeft de som van 2 getallen.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Geeft het verschil van de twee getallen.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Geeft het product terug van de twee getallen.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Geeft de gedeelde waarde van twee getallen.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Geeft het eerste getal tot de macht van het tweede getal.", + "MATH_SINGLE_HELPURL": "https://nl.wikipedia.org/wiki/Vierkantswortel", + "MATH_SINGLE_OP_ROOT": "wortel", + "MATH_SINGLE_TOOLTIP_ROOT": "Geeft de wortel van een getal.", + "MATH_SINGLE_OP_ABSOLUTE": "absoluut", + "MATH_SINGLE_TOOLTIP_ABS": "Geeft de absolute waarde van een getal.", + "MATH_SINGLE_TOOLTIP_NEG": "Geeft de negatief van een getal.", + "MATH_SINGLE_TOOLTIP_LN": "Geeft het natuurlijk logaritme van een getal.", + "MATH_SINGLE_TOOLTIP_LOG10": "Geeft het logaritme basis 10 van een getal.", + "MATH_SINGLE_TOOLTIP_EXP": "Geeft e tot de macht van een getal.", + "MATH_SINGLE_TOOLTIP_POW10": "Geeft 10 tot de macht van een getal.", + "MATH_TRIG_HELPURL": "https://nl.wikipedia.org/wiki/Goniometrische_functie", + "MATH_TRIG_TOOLTIP_SIN": "Geeft de sinus van een graad (geen radialen).", + "MATH_TRIG_TOOLTIP_COS": "Geeft de cosinus van een graad (geen radialen).", + "MATH_TRIG_TOOLTIP_TAN": "Geeft de tangens van een graad (geen radialen).", + "MATH_TRIG_TOOLTIP_ASIN": "Geeft de arcsinus van een getal.", + "MATH_TRIG_TOOLTIP_ACOS": "Geeft de arccosinus van een getal.", + "MATH_TRIG_TOOLTIP_ATAN": "Geeft de arctangens van een getal.", + "MATH_CONSTANT_HELPURL": "https://nl.wikipedia.org/wiki/Wiskundige_constante", + "MATH_CONSTANT_TOOLTIP": "Geeft een van de vaak voorkomende constante waardes: π (3.141…), e (2.718…), φ (1.618…), √2 (1.414…), √½ (0.707…), of ∞ (oneindig).", + "MATH_IS_EVEN": "is even", + "MATH_IS_ODD": "is oneven", + "MATH_IS_PRIME": "is priemgetal", + "MATH_IS_WHOLE": "is geheel getal", + "MATH_IS_POSITIVE": "is positief", + "MATH_IS_NEGATIVE": "is negatief", + "MATH_IS_DIVISIBLE_BY": "is deelbaar door", + "MATH_IS_TOOLTIP": "Test of een getal even, oneven, een priemgetal, geheel, positief of negatief is, of deelbaar is door een bepaald getal. Geeft \"waar\" of \"onwaar\".", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "%1 wijzigen met %2", + "MATH_CHANGE_TOOLTIP": "Voegt een getal toe aan variabele \"%1\".", + "MATH_ROUND_HELPURL": "https://nl.wikipedia.org/wiki/Afronden", + "MATH_ROUND_TOOLTIP": "Rondt een getal af omhoog of naar beneden.", + "MATH_ROUND_OPERATOR_ROUND": "afronden", + "MATH_ROUND_OPERATOR_ROUNDUP": "omhoog afronden", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "naar beneden afronden", + "MATH_ONLIST_OPERATOR_SUM": "som van lijst", + "MATH_ONLIST_TOOLTIP_SUM": "Geeft de som van alle getallen in de lijst.", + "MATH_ONLIST_OPERATOR_MIN": "laagste uit lijst", + "MATH_ONLIST_TOOLTIP_MIN": "Geeft het kleinste getal uit een lijst.", + "MATH_ONLIST_OPERATOR_MAX": "hoogste uit lijst", + "MATH_ONLIST_TOOLTIP_MAX": "Geeft het grootste getal in een lijst.", + "MATH_ONLIST_OPERATOR_AVERAGE": "gemiddelde van lijst", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Geeft het gemiddelde terug van de numerieke waardes in een lijst.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediaan van lijst", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Geeft de mediaan in de lijst.", + "MATH_ONLIST_OPERATOR_MODE": "modi van lijst", + "MATH_ONLIST_TOOLTIP_MODE": "Geeft een lijst van de meest voorkomende onderdelen in de lijst.", + "MATH_ONLIST_OPERATOR_STD_DEV": "standaarddeviatie van lijst", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Geeft de standaardafwijking van de lijst.", + "MATH_ONLIST_OPERATOR_RANDOM": "willekeurige item van lijst", + "MATH_ONLIST_TOOLTIP_RANDOM": "Geeft een willekeurig item uit de lijst terug.", + "MATH_MODULO_HELPURL": "https://nl.wikipedia.org/wiki/Modulair_rekenen", + "MATH_MODULO_TITLE": "restgetal van %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Geeft het restgetal van het resultaat van de deling van de twee getallen.", + "MATH_CONSTRAIN_TITLE": "beperk %1 van minimaal %2 tot maximaal %3", + "MATH_CONSTRAIN_TOOLTIP": "Beperk een getal tussen de twee opgegeven limieten (inclusief).", + "MATH_RANDOM_INT_HELPURL": "https://nl.wikipedia.org/wiki/Toevalsgenerator", + "MATH_RANDOM_INT_TITLE": "willekeurig geheel getal van %1 tot %2", + "MATH_RANDOM_INT_TOOLTIP": "Geeft een willekeurig getal tussen de 2 opgegeven limieten in, inclusief.", + "MATH_RANDOM_FLOAT_HELPURL": "https://nl.wikipedia.org/wiki/Toevalsgenerator", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "willekeurige fractie", + "MATH_RANDOM_FLOAT_TOOLTIP": "Geeft een willekeurige fractie tussen 0.0 (inclusief) en 1.0 (exclusief).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 van X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Geef de boogtangens van punt (X, Y) terug in graden tussen -180 naar 180.", + "TEXT_TEXT_HELPURL": "https://nl.wikipedia.org/wiki/String_%28informatica%29", + "TEXT_TEXT_TOOLTIP": "Een letter, woord of een regel tekst.", + "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", + "TEXT_JOIN_TITLE_CREATEWITH": "maak tekst met", + "TEXT_JOIN_TOOLTIP": "Maakt een stuk tekst door één of meer items samen te voegen.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "samenvoegen", + "TEXT_CREATE_JOIN_TOOLTIP": "Toevoegen, verwijderen of volgorde wijzigen van secties om dit tekstblok opnieuw in te stellen.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Voegt een item aan de tekst toe.", + "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_APPEND_TITLE": "voor%1 voeg tekst toe van %2", + "TEXT_APPEND_TOOLTIP": "Voeg tekst toe aan de variabele \"%1\".", + "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_LENGTH_TITLE": "lengte van %1", + "TEXT_LENGTH_TOOLTIP": "Geeft het aantal tekens terug (inclusief spaties) in de opgegeven tekst.", + "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", + "TEXT_ISEMPTY_TITLE": "%1 is leeg", + "TEXT_ISEMPTY_TOOLTIP": "Geeft \"waar\" terug, als de opgegeven tekst leeg is.", + "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", + "TEXT_INDEXOF_TOOLTIP": "Geeft de index terug van het eerste of laatste voorkomen van de eerste tekst in de tweede tekst. Geeft %1 terug als de tekst niet gevonden is.", + "TEXT_INDEXOF_TITLE": "in tekst %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "zoek eerste voorkomen van tekst", + "TEXT_INDEXOF_OPERATOR_LAST": "zoek het laatste voorkomen van tekst", + "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", + "TEXT_CHARAT_TITLE": "in tekst %1 %2", + "TEXT_CHARAT_FROM_START": "haal letter # op", + "TEXT_CHARAT_FROM_END": "haal letter # op vanaf einde", + "TEXT_CHARAT_FIRST": "haal eerste letter op", + "TEXT_CHARAT_LAST": "haal laatste letter op", + "TEXT_CHARAT_RANDOM": "haal willekeurige letter op", + "TEXT_CHARAT_TOOLTIP": "Geeft de letter op de opgegeven positie terug.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Geeft het opgegeven onderdeel van de tekst terug.", + "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in tekst", + "TEXT_GET_SUBSTRING_START_FROM_START": "haal subtekst op vanaf letter #", + "TEXT_GET_SUBSTRING_START_FROM_END": "haal subtekst op vanaf letter # vanaf einde", + "TEXT_GET_SUBSTRING_START_FIRST": "haal subtekst op van eerste letter", + "TEXT_GET_SUBSTRING_END_FROM_START": "naar letter #", + "TEXT_GET_SUBSTRING_END_FROM_END": "van letter # tot einde", + "TEXT_GET_SUBSTRING_END_LAST": "naar laatste letter", + "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", + "TEXT_CHANGECASE_TOOLTIP": "Geef een kopie van de tekst met veranderde hoofdletters terug.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "naar HOOFDLETTERS", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "naar kleine letters", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "naar Hoofdletter Per Woord", + "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", + "TEXT_TRIM_TOOLTIP": "Geeft een kopie van de tekst met verwijderde spaties van één of beide kanten.", + "TEXT_TRIM_OPERATOR_BOTH": "spaties van beide kanten afhalen van", + "TEXT_TRIM_OPERATOR_LEFT": "spaties van de linkerkant verwijderen van", + "TEXT_TRIM_OPERATOR_RIGHT": "spaties van de rechterkant verwijderen van", + "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", + "TEXT_PRINT_TITLE": "tekst weergeven: %1", + "TEXT_PRINT_TOOLTIP": "Drukt de opgegeven tekst, getal of een andere waarde af.", + "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", + "TEXT_PROMPT_TYPE_TEXT": "vraagt om invoer met bericht", + "TEXT_PROMPT_TYPE_NUMBER": "vraagt de gebruiker om een getal met de tekst", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Vraagt de gebruiker om een getal in te voeren.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Vraagt de gebruiker om invoer.", + "TEXT_COUNT_MESSAGE0": "%1 in %2 tellen", + "TEXT_COUNT_TOOLTIP": "Tel hoe vaak bepaalde tekst voorkomt in andere tekst.", + "TEXT_REPLACE_MESSAGE0": "vervang %1 door %2 in %3", + "TEXT_REPLACE_TOOLTIP": "Vervang alle voorkomens van tekst in een andere tekst.", + "TEXT_REVERSE_MESSAGE0": "%1 omkeren", + "TEXT_REVERSE_TOOLTIP": "Keert de volgorde van de tekens in de tekst om.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "maak een lege lijst", + "LISTS_CREATE_EMPTY_TOOLTIP": "Geeft een lijst terug met lengte 0, zonder items", + "LISTS_CREATE_WITH_TOOLTIP": "Maak een lijst met een willekeurig aantal items.", + "LISTS_CREATE_WITH_INPUT_WITH": "maak een lijst met", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lijst", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Voeg stukken toe, verwijder ze of wijzig de volgorde om dit lijstblok aan te passen.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Voeg iets toe aan de lijst.", + "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_REPEAT_TOOLTIP": "Maakt een lijst die bestaat uit de opgegeven waarde, het opgegeven aantal keer herhaald.", + "LISTS_REPEAT_TITLE": "Maak lijst met item %1, %2 keer herhaald", + "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", + "LISTS_LENGTH_TITLE": "lengte van %1", + "LISTS_LENGTH_TOOLTIP": "Geeft de lengte van een lijst terug.", + "LISTS_ISEMPTY_TITLE": "%1 is leeg", + "LISTS_ISEMPTY_TOOLTIP": "Geeft waar terug als de lijst leeg is.", + "LISTS_INLIST": "in lijst", + "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", + "LISTS_INDEX_OF_FIRST": "zoek eerste voorkomen van item", + "LISTS_INDEX_OF_LAST": "zoek laatste voorkomen van item", + "LISTS_INDEX_OF_TOOLTIP": "Geeft de index terug van het eerste of laatste voorkomen van een item in de lijst. Geeft %1 terug als het item niet is gevonden.", + "LISTS_GET_INDEX_GET": "haal op", + "LISTS_GET_INDEX_GET_REMOVE": "haal op en verwijder", + "LISTS_GET_INDEX_REMOVE": "verwijder", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# van einde", + "LISTS_GET_INDEX_FIRST": "eerste", + "LISTS_GET_INDEX_LAST": "laatste", + "LISTS_GET_INDEX_RANDOM": "willekeurig", + "LISTS_INDEX_FROM_START_TOOLTIP": "Item %1 is het eerste item.", + "LISTS_INDEX_FROM_END_TOOLTIP": "Item %1 is het laatste item.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Geeft het item op de opgegeven positie in een lijst.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Geeft het eerste item in een lijst terug.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Geeft het laatste item in een lijst terug.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Geeft een willekeurig item uit een lijst.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Geeft het item op de opgegeven positie in een lijst terug en verwijdert het.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Geeft het laatste item in een lijst terug en verwijdert het.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Geeft het laatste item uit een lijst terug en verwijdert het.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Geeft een willekeurig item in een lijst terug en verwijdert het.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Verwijdert het item op de opgegeven positie in een lijst.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Verwijdert het eerste item in een lijst.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Verwijdert het laatste item uit een lijst.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Verwijdert een willekeurig item uit een lijst.", + "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", + "LISTS_SET_INDEX_SET": "stel in", + "LISTS_SET_INDEX_INSERT": "tussenvoegen op", + "LISTS_SET_INDEX_INPUT_TO": "als", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Zet het item op de opgegeven positie in de lijst.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Stelt het eerste item in een lijst in.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Stelt het laatste item van een lijst in.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Stelt een willekeurig item uit de lijst in.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Voegt het item op een opgegeven positie in een lijst in.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Voegt het item toe aan het begin van de lijst.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Voeg het item aan het einde van een lijst toe.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Voegt het item op een willekeurige positie in de lijst in.", + "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", + "LISTS_GET_SUBLIST_START_FROM_START": "haal sublijst op vanaf positie", + "LISTS_GET_SUBLIST_START_FROM_END": "haal sublijst op van positie vanaf einde", + "LISTS_GET_SUBLIST_START_FIRST": "haal sublijst op vanaf eerste", + "LISTS_GET_SUBLIST_END_FROM_START": "naar item", + "LISTS_GET_SUBLIST_END_FROM_END": "naar # vanaf einde", + "LISTS_GET_SUBLIST_END_LAST": "naar laatste", + "LISTS_GET_SUBLIST_TOOLTIP": "Maakt een kopie van het opgegeven deel van de lijst.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sorteer %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sorteer een kopie van een lijst.", + "LISTS_SORT_ORDER_ASCENDING": "oplopend", + "LISTS_SORT_ORDER_DESCENDING": "aflopend", + "LISTS_SORT_TYPE_NUMERIC": "numeriek", + "LISTS_SORT_TYPE_TEXT": "alfabetisch", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetisch, negeer hoofd-/kleine letters", + "LISTS_SPLIT_LIST_FROM_TEXT": "lijst maken van tekst", + "LISTS_SPLIT_TEXT_FROM_LIST": "tekst maken van lijst", + "LISTS_SPLIT_WITH_DELIMITER": "met scheidingsteken", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Tekst splitsen in een lijst van teksten op basis van een scheidingsteken.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Lijst van tekstdelen samenvoegen in één stuk tekst, waarbij de tekstdelen gescheiden zijn door een scheidingsteken.", + "LISTS_REVERSE_MESSAGE0": "%1 omkeren", + "LISTS_REVERSE_TOOLTIP": "Keert een kopie van een lijst om.", + "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", + "VARIABLES_GET_TOOLTIP": "Geeft de waarde van deze variabele.", + "VARIABLES_GET_CREATE_SET": "Maak \"verander %1\"", + "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", + "VARIABLES_SET": "stel %1 in op %2", + "VARIABLES_SET_TOOLTIP": "Verandert de waarde van de variabele naar de waarde van de invoer.", + "VARIABLES_SET_CREATE_GET": "Maak 'opvragen van %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://nl.wikipedia.org/wiki/Subprogramma", + "PROCEDURES_DEFNORETURN_TITLE": "om", + "PROCEDURES_DEFNORETURN_PROCEDURE": "doe iets", + "PROCEDURES_BEFORE_PARAMS": "met:", + "PROCEDURES_CALL_BEFORE_PARAMS": "met:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Maakt een functie zonder uitvoer.", + "PROCEDURES_DEFNORETURN_COMMENT": "Deze functie beschrijven...", + "PROCEDURES_DEFRETURN_HELPURL": "https://nl.wikipedia.org/wiki/Subprogramma", + "PROCEDURES_DEFRETURN_RETURN": "uitvoeren", + "PROCEDURES_DEFRETURN_TOOLTIP": "Maakt een functie met een uitvoer.", + "PROCEDURES_ALLOW_STATEMENTS": "statements toestaan", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Waarschuwing: deze functie heeft parameters met dezelfde naam.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://nl.wikipedia.org/wiki/Subprogramma", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Voer de door de gebruiker gedefinieerde functie \"%1\" uit.", + "PROCEDURES_CALLRETURN_HELPURL": "https://nl.wikipedia.org/wiki/Subprogramma", + "PROCEDURES_CALLRETURN_TOOLTIP": "Voer de door de gebruiker gedefinieerde functie \"%1\" uit en gebruik de uitvoer.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "ingangen", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Invoer van deze functie toevoegen, verwijderen of herordenen.", + "PROCEDURES_MUTATORARG_TITLE": "invoernaam:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Een invoer aan de functie toevoegen.", + "PROCEDURES_HIGHLIGHT_DEF": "Accentueer functiedefinitie", + "PROCEDURES_CREATE_DO": "Maak \"%1\"", + "PROCEDURES_IFRETURN_TOOLTIP": "Als de eerste waarde \"waar\" is, geef dan de tweede waarde terug.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Waarschuwing: dit blok mag alleen gebruikt worden binnen de definitie van een functie.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Zeg iets...", + "WORKSPACE_ARIA_LABEL": "Blockly werkruimte", + "COLLAPSED_WARNINGS_WARNING": "Samengevouwen blokken bevatten waarschuwingen.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Annuleren" +} diff --git a/msg/json/oc.json b/msg/json/oc.json index 14b8d9af315..e510295af72 100644 --- a/msg/json/oc.json +++ b/msg/json/oc.json @@ -1,199 +1,199 @@ -{ - "@metadata": { - "authors": [ - "Cedric31" - ] - }, - "VARIABLES_DEFAULT_NAME": "element", - "TODAY": "Uèi", - "DUPLICATE_BLOCK": "Duplicar", - "ADD_COMMENT": "Apondre un comentari", - "REMOVE_COMMENT": "Suprimir un comentari", - "EXTERNAL_INPUTS": "Entradas extèrnas", - "INLINE_INPUTS": "Entradas en linha", - "DELETE_BLOCK": "Suprimir lo blòt", - "DELETE_X_BLOCKS": "Suprimir %1 blòts", - "DELETE_ALL_BLOCKS": "Suprimir totes los %1 blòts ?", - "CLEAN_UP": "Netejar los blòts", - "COLLAPSE_BLOCK": "Redusir lo blòt", - "COLLAPSE_ALL": "Redusir los blòts", - "EXPAND_BLOCK": "Desvolopar lo blòt", - "EXPAND_ALL": "Desvolopar los blòts", - "DISABLE_BLOCK": "Desactivar lo blòt", - "ENABLE_BLOCK": "Activar lo blòt", - "HELP": "Ajuda", - "UNDO": "Anullar", - "REDO": "Refar", - "CHANGE_VALUE_TITLE": "Modificar la valor :", - "RENAME_VARIABLE": "Renomenar la variabla…", - "RENAME_VARIABLE_TITLE": "Renomenar totas las variablas « %1 » a :", - "NEW_VARIABLE": "Crear una variabla...", - "NEW_STRING_VARIABLE": "Crear una variabla cadena…", - "NEW_NUMBER_VARIABLE": "Crear una variabla nombre…", - "NEW_COLOUR_VARIABLE": "Crear una variabla color…", - "NEW_VARIABLE_TYPE_TITLE": "Novèl tipe de variabla :", - "NEW_VARIABLE_TITLE": "Nom de la novèla variabla :", - "VARIABLE_ALREADY_EXISTS": "Existís ja una variabla nomenada \"%1\".", - "DELETE_VARIABLE": "Suprimir la variabla '%1'", - "COLOUR_PICKER_HELPURL": "https://oc.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Causir una color dins la paleta.", - "COLOUR_RANDOM_TITLE": "color aleatòria", - "COLOUR_RANDOM_TOOLTIP": "Causir una color a l'azard.", - "COLOUR_RGB_TITLE": "coloriar amb", - "COLOUR_RGB_RED": "roge", - "COLOUR_RGB_GREEN": "verd", - "COLOUR_RGB_BLUE": "blau", - "COLOUR_BLEND_TITLE": "mesclar", - "COLOUR_BLEND_COLOUR1": "color 1", - "COLOUR_BLEND_COLOUR2": "color 2", - "COLOUR_BLEND_RATIO": "ratio", - "CONTROLS_REPEAT_HELPURL": "https://oc.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "repetir %1 còps", - "CONTROLS_REPEAT_INPUT_DO": "far", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir tant que", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir fins a", - "CONTROLS_FOR_TITLE": "comptar amb %1 de %2 a %3 per %4", - "CONTROLS_FOREACH_TITLE": "per cada element %1 dins la lista %2", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "quitar la bocla", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "passar a l’iteracion de bocla seguenta", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Sortir de la bocla englobanta.", - "CONTROLS_IF_MSG_IF": "se", - "CONTROLS_IF_MSG_ELSEIF": "siquenon se", - "CONTROLS_IF_MSG_ELSE": "siquenon", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Apondre una condicion al blòt 'se'.", - "LOGIC_COMPARE_HELPURL": "https://fr.wikipedia.org/wiki/Inegalite_(mathematiques)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Renviar verai se las doas entradas son egalas.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Renviar verai se las doas entradas son diferentas.", - "LOGIC_OPERATION_TOOLTIP_AND": "Renviar verai se las doas entradas son vertadièras.", - "LOGIC_OPERATION_AND": "e", - "LOGIC_OPERATION_OR": "o", - "LOGIC_NEGATE_TITLE": "pas %1", - "LOGIC_BOOLEAN_TRUE": "verai", - "LOGIC_BOOLEAN_FALSE": "fals", - "LOGIC_BOOLEAN_TOOLTIP": "Renvia siá verai siá fals.", - "LOGIC_NULL": "nul", - "LOGIC_NULL_TOOLTIP": "Renvia nul.", - "LOGIC_TERNARY_CONDITION": "tèst", - "LOGIC_TERNARY_IF_TRUE": "se verai", - "LOGIC_TERNARY_IF_FALSE": "se fals", - "MATH_NUMBER_HELPURL": "https://oc.wikipedia.org/wiki/Nombre", - "MATH_NUMBER_TOOLTIP": "Un nombre.", - "MATH_ARITHMETIC_HELPURL": "https://oc.wikipedia.org/wiki/Aritmetica", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Renvia la soma dels dos nombres.", - "MATH_SINGLE_HELPURL": "https://fr.wikipedia.org/wiki/Racine_carree", - "MATH_SINGLE_OP_ROOT": "raiç carrada", - "MATH_SINGLE_TOOLTIP_ROOT": "Renvia la raiç carrada d’un nombre.", - "MATH_SINGLE_OP_ABSOLUTE": "absolut", - "MATH_SINGLE_TOOLTIP_ABS": "Renvia la valor absoluda d’un nombre.", - "MATH_SINGLE_TOOLTIP_NEG": "Renvia l’opausat d’un nombre", - "MATH_SINGLE_TOOLTIP_LN": "Renvia lo logaritme natural d’un nombre.", - "MATH_SINGLE_TOOLTIP_LOG10": "Renvia lo logaritme decimal d’un nombre.", - "MATH_SINGLE_TOOLTIP_EXP": "Renvia a la poténcia d’un nombre.", - "MATH_SINGLE_TOOLTIP_POW10": "Renvia 10 a la poténcia d’un nombre.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Renvia lo sinus d’un angle en grases (pas en radians).", - "MATH_TRIG_TOOLTIP_COS": "Renvia lo cosinus d’un angle en grases (pas en radians).", - "MATH_TRIG_TOOLTIP_TAN": "Renvia la tangenta d’un angle en grases (pas en radians).", - "MATH_TRIG_TOOLTIP_ASIN": "Renvia l’arcsinus d’un nombre.", - "MATH_TRIG_TOOLTIP_ACOS": "Renvia l’arccosinus d’un nombre.", - "MATH_TRIG_TOOLTIP_ATAN": "Renvia l’arctangenta d’un nombre.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_IS_EVEN": "es par", - "MATH_IS_ODD": "es impar", - "MATH_IS_PRIME": "es primièr", - "MATH_IS_WHOLE": "es entièr", - "MATH_IS_POSITIVE": "es positiu", - "MATH_IS_NEGATIVE": "es negatiu", - "MATH_IS_DIVISIBLE_BY": "es devesible per", - "MATH_CHANGE_TITLE": "incrementar %1 per %2", - "MATH_ROUND_OPERATOR_ROUND": "arredondir", - "MATH_ROUND_OPERATOR_ROUNDUP": "arredondir al superior", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "arredondir a l’inferior", - "MATH_ONLIST_OPERATOR_SUM": "soma de la lista", - "MATH_ONLIST_OPERATOR_MIN": "minimum de la lista", - "MATH_ONLIST_OPERATOR_MAX": "maximum de la lista", - "MATH_ONLIST_OPERATOR_AVERAGE": "mejana de la lista", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana de la lista", - "MATH_ONLIST_OPERATOR_MODE": "majoritaris de la lista", - "MATH_ONLIST_OPERATOR_STD_DEV": "escart-tipe de la lista", - "MATH_ONLIST_OPERATOR_RANDOM": "element aleatòri de lista", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "residú de %1 ÷ %2", - "MATH_CONSTRAIN_TITLE": "constrénher %1 entre %2 e %3", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fraccion aleatòria", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Una letra, un mot o una linha de tèxte.", - "TEXT_JOIN_TITLE_CREATEWITH": "crear un tèxte amb", - "TEXT_CREATE_JOIN_TITLE_JOIN": "jónher", - "TEXT_APPEND_TITLE": "a %1 apondre lo tèxte %2", - "TEXT_LENGTH_TITLE": "longor de %1", - "TEXT_ISEMPTY_TITLE": "%1 es void", - "TEXT_INDEXOF_TITLE": "dins lo tèxte %1 %2 %3", - "TEXT_CHARAT_TITLE": "dins lo tèxte %1 %2", - "TEXT_CHARAT_FROM_START": "obténer la letra #", - "TEXT_CHARAT_FROM_END": "obténer la letra # dempuèi la fin", - "TEXT_CHARAT_FIRST": "obténer la primièra letra", - "TEXT_CHARAT_LAST": "obténer la darrièra letra", - "TEXT_CHARAT_RANDOM": "obténer una letra a l'azard", - "TEXT_CHARAT_TOOLTIP": "Renvia la letra a la posicion indicada.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "dins lo tèxte", - "TEXT_GET_SUBSTRING_END_FROM_START": "fins a la letra #", - "TEXT_GET_SUBSTRING_END_LAST": "fins a la darrièra letra", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "en MAJUSCULAS", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "en minusculas", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "en Majuscula Al Començament De Cada Mot", - "TEXT_TRIM_OPERATOR_BOTH": "suprimir los espacis dels dos costats", - "TEXT_PRINT_TITLE": "afichar %1", - "TEXT_COUNT_MESSAGE0": "nombre %1 sus %2", - "TEXT_REVERSE_MESSAGE0": "inversar %1", - "LISTS_CREATE_EMPTY_TITLE": "crear una lista voida", - "LISTS_CREATE_WITH_INPUT_WITH": "crear una lista amb", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Apondre un element a la lista.", - "LISTS_LENGTH_TITLE": "longitud de %1", - "LISTS_ISEMPTY_TITLE": "%1 es voida", - "LISTS_INLIST": "dins la lista", - "LISTS_GET_INDEX_GET": "obténer", - "LISTS_GET_INDEX_GET_REMOVE": "obténer e suprimir", - "LISTS_GET_INDEX_REMOVE": "suprimit", - "LISTS_GET_INDEX_FROM_END": "# dempuèi la fin", - "LISTS_GET_INDEX_FIRST": "primièr", - "LISTS_GET_INDEX_LAST": "darrièr", - "LISTS_GET_INDEX_RANDOM": "aleatòri", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 es lo primièr element.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 es lo darrièr element.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Renvia l'element de la posicion especificada dins la lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Renvia lo primièr element dins una lista.", - "LISTS_SET_INDEX_SET": "metre", - "LISTS_SET_INDEX_INSERT": "inserir en", - "LISTS_SET_INDEX_INPUT_TO": "coma", - "LISTS_GET_SUBLIST_END_FROM_START": "fins a #", - "LISTS_GET_SUBLIST_END_FROM_END": "fins a # dempuèi la fin", - "LISTS_GET_SUBLIST_END_LAST": "fins a la fin", - "LISTS_SORT_TITLE": "triar %1 %2 %3", - "LISTS_SORT_ORDER_ASCENDING": "creissent", - "LISTS_SORT_ORDER_DESCENDING": "descreissent", - "LISTS_SORT_TYPE_NUMERIC": "numeric", - "LISTS_SORT_TYPE_TEXT": "alfabetic", - "LISTS_SPLIT_WITH_DELIMITER": "amb lo separador", - "LISTS_REVERSE_MESSAGE0": "inversar %1", - "LISTS_REVERSE_TOOLTIP": "Inversar la còpia d’una lista.", - "VARIABLES_GET_CREATE_SET": "Crear 'fixar %1'", - "VARIABLES_SET": "fixar %1 a %2", - "VARIABLES_SET_CREATE_GET": "Crear 'obténer %1'", - "PROCEDURES_DEFNORETURN_TITLE": "a", - "PROCEDURES_DEFNORETURN_PROCEDURE": "far quicòm", - "PROCEDURES_BEFORE_PARAMS": "amb :", - "PROCEDURES_CALL_BEFORE_PARAMS": "amb :", - "PROCEDURES_DEFRETURN_RETURN": "retorn", - "PROCEDURES_ALLOW_STATEMENTS": "autorizar los òrdres", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", - "PROCEDURES_MUTATORARG_TITLE": "nom de l’entrada :", - "PROCEDURES_CREATE_DO": "Crear '%1'", - "DIALOG_OK": "D'acòrdi", - "DIALOG_CANCEL": "Anullar" -} +{ + "@metadata": { + "authors": [ + "Cedric31" + ] + }, + "VARIABLES_DEFAULT_NAME": "element", + "TODAY": "Uèi", + "DUPLICATE_BLOCK": "Duplicar", + "ADD_COMMENT": "Apondre un comentari", + "REMOVE_COMMENT": "Suprimir un comentari", + "EXTERNAL_INPUTS": "Entradas extèrnas", + "INLINE_INPUTS": "Entradas en linha", + "DELETE_BLOCK": "Suprimir lo blòt", + "DELETE_X_BLOCKS": "Suprimir %1 blòts", + "DELETE_ALL_BLOCKS": "Suprimir totes los %1 blòts ?", + "CLEAN_UP": "Netejar los blòts", + "COLLAPSE_BLOCK": "Redusir lo blòt", + "COLLAPSE_ALL": "Redusir los blòts", + "EXPAND_BLOCK": "Desvolopar lo blòt", + "EXPAND_ALL": "Desvolopar los blòts", + "DISABLE_BLOCK": "Desactivar lo blòt", + "ENABLE_BLOCK": "Activar lo blòt", + "HELP": "Ajuda", + "UNDO": "Anullar", + "REDO": "Refar", + "CHANGE_VALUE_TITLE": "Modificar la valor :", + "RENAME_VARIABLE": "Renomenar la variabla…", + "RENAME_VARIABLE_TITLE": "Renomenar totas las variablas « %1 » a :", + "NEW_VARIABLE": "Crear una variabla...", + "NEW_STRING_VARIABLE": "Crear una variabla cadena…", + "NEW_NUMBER_VARIABLE": "Crear una variabla nombre…", + "NEW_COLOUR_VARIABLE": "Crear una variabla color…", + "NEW_VARIABLE_TYPE_TITLE": "Novèl tipe de variabla :", + "NEW_VARIABLE_TITLE": "Nom de la novèla variabla :", + "VARIABLE_ALREADY_EXISTS": "Existís ja una variabla nomenada \"%1\".", + "DELETE_VARIABLE": "Suprimir la variabla '%1'", + "COLOUR_PICKER_HELPURL": "https://oc.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Causir una color dins la paleta.", + "COLOUR_RANDOM_TITLE": "color aleatòria", + "COLOUR_RANDOM_TOOLTIP": "Causir una color a l'azard.", + "COLOUR_RGB_TITLE": "coloriar amb", + "COLOUR_RGB_RED": "roge", + "COLOUR_RGB_GREEN": "verd", + "COLOUR_RGB_BLUE": "blau", + "COLOUR_BLEND_TITLE": "mesclar", + "COLOUR_BLEND_COLOUR1": "color 1", + "COLOUR_BLEND_COLOUR2": "color 2", + "COLOUR_BLEND_RATIO": "ratio", + "CONTROLS_REPEAT_HELPURL": "https://oc.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "repetir %1 còps", + "CONTROLS_REPEAT_INPUT_DO": "far", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir tant que", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir fins a", + "CONTROLS_FOR_TITLE": "comptar amb %1 de %2 a %3 per %4", + "CONTROLS_FOREACH_TITLE": "per cada element %1 dins la lista %2", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "quitar la bocla", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "passar a l’iteracion de bocla seguenta", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Sortir de la bocla englobanta.", + "CONTROLS_IF_MSG_IF": "se", + "CONTROLS_IF_MSG_ELSEIF": "siquenon se", + "CONTROLS_IF_MSG_ELSE": "siquenon", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Apondre una condicion al blòt 'se'.", + "LOGIC_COMPARE_HELPURL": "https://fr.wikipedia.org/wiki/Inegalite_(mathematiques)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Renviar verai se las doas entradas son egalas.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Renviar verai se las doas entradas son diferentas.", + "LOGIC_OPERATION_TOOLTIP_AND": "Renviar verai se las doas entradas son vertadièras.", + "LOGIC_OPERATION_AND": "e", + "LOGIC_OPERATION_OR": "o", + "LOGIC_NEGATE_TITLE": "pas %1", + "LOGIC_BOOLEAN_TRUE": "verai", + "LOGIC_BOOLEAN_FALSE": "fals", + "LOGIC_BOOLEAN_TOOLTIP": "Renvia siá verai siá fals.", + "LOGIC_NULL": "nul", + "LOGIC_NULL_TOOLTIP": "Renvia nul.", + "LOGIC_TERNARY_CONDITION": "tèst", + "LOGIC_TERNARY_IF_TRUE": "se verai", + "LOGIC_TERNARY_IF_FALSE": "se fals", + "MATH_NUMBER_HELPURL": "https://oc.wikipedia.org/wiki/Nombre", + "MATH_NUMBER_TOOLTIP": "Un nombre.", + "MATH_ARITHMETIC_HELPURL": "https://oc.wikipedia.org/wiki/Aritmetica", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Renvia la soma dels dos nombres.", + "MATH_SINGLE_HELPURL": "https://fr.wikipedia.org/wiki/Racine_carree", + "MATH_SINGLE_OP_ROOT": "raiç carrada", + "MATH_SINGLE_TOOLTIP_ROOT": "Renvia la raiç carrada d’un nombre.", + "MATH_SINGLE_OP_ABSOLUTE": "absolut", + "MATH_SINGLE_TOOLTIP_ABS": "Renvia la valor absoluda d’un nombre.", + "MATH_SINGLE_TOOLTIP_NEG": "Renvia l’opausat d’un nombre", + "MATH_SINGLE_TOOLTIP_LN": "Renvia lo logaritme natural d’un nombre.", + "MATH_SINGLE_TOOLTIP_LOG10": "Renvia lo logaritme decimal d’un nombre.", + "MATH_SINGLE_TOOLTIP_EXP": "Renvia a la poténcia d’un nombre.", + "MATH_SINGLE_TOOLTIP_POW10": "Renvia 10 a la poténcia d’un nombre.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Renvia lo sinus d’un angle en grases (pas en radians).", + "MATH_TRIG_TOOLTIP_COS": "Renvia lo cosinus d’un angle en grases (pas en radians).", + "MATH_TRIG_TOOLTIP_TAN": "Renvia la tangenta d’un angle en grases (pas en radians).", + "MATH_TRIG_TOOLTIP_ASIN": "Renvia l’arcsinus d’un nombre.", + "MATH_TRIG_TOOLTIP_ACOS": "Renvia l’arccosinus d’un nombre.", + "MATH_TRIG_TOOLTIP_ATAN": "Renvia l’arctangenta d’un nombre.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_IS_EVEN": "es par", + "MATH_IS_ODD": "es impar", + "MATH_IS_PRIME": "es primièr", + "MATH_IS_WHOLE": "es entièr", + "MATH_IS_POSITIVE": "es positiu", + "MATH_IS_NEGATIVE": "es negatiu", + "MATH_IS_DIVISIBLE_BY": "es devesible per", + "MATH_CHANGE_TITLE": "incrementar %1 per %2", + "MATH_ROUND_OPERATOR_ROUND": "arredondir", + "MATH_ROUND_OPERATOR_ROUNDUP": "arredondir al superior", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "arredondir a l’inferior", + "MATH_ONLIST_OPERATOR_SUM": "soma de la lista", + "MATH_ONLIST_OPERATOR_MIN": "minimum de la lista", + "MATH_ONLIST_OPERATOR_MAX": "maximum de la lista", + "MATH_ONLIST_OPERATOR_AVERAGE": "mejana de la lista", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana de la lista", + "MATH_ONLIST_OPERATOR_MODE": "majoritaris de la lista", + "MATH_ONLIST_OPERATOR_STD_DEV": "escart-tipe de la lista", + "MATH_ONLIST_OPERATOR_RANDOM": "element aleatòri de lista", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "residú de %1 ÷ %2", + "MATH_CONSTRAIN_TITLE": "constrénher %1 entre %2 e %3", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fraccion aleatòria", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Una letra, un mot o una linha de tèxte.", + "TEXT_JOIN_TITLE_CREATEWITH": "crear un tèxte amb", + "TEXT_CREATE_JOIN_TITLE_JOIN": "jónher", + "TEXT_APPEND_TITLE": "a %1 apondre lo tèxte %2", + "TEXT_LENGTH_TITLE": "longor de %1", + "TEXT_ISEMPTY_TITLE": "%1 es void", + "TEXT_INDEXOF_TITLE": "dins lo tèxte %1 %2 %3", + "TEXT_CHARAT_TITLE": "dins lo tèxte %1 %2", + "TEXT_CHARAT_FROM_START": "obténer la letra #", + "TEXT_CHARAT_FROM_END": "obténer la letra # dempuèi la fin", + "TEXT_CHARAT_FIRST": "obténer la primièra letra", + "TEXT_CHARAT_LAST": "obténer la darrièra letra", + "TEXT_CHARAT_RANDOM": "obténer una letra a l'azard", + "TEXT_CHARAT_TOOLTIP": "Renvia la letra a la posicion indicada.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "dins lo tèxte", + "TEXT_GET_SUBSTRING_END_FROM_START": "fins a la letra #", + "TEXT_GET_SUBSTRING_END_LAST": "fins a la darrièra letra", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "en MAJUSCULAS", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "en minusculas", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "en Majuscula Al Començament De Cada Mot", + "TEXT_TRIM_OPERATOR_BOTH": "suprimir los espacis dels dos costats", + "TEXT_PRINT_TITLE": "afichar %1", + "TEXT_COUNT_MESSAGE0": "nombre %1 sus %2", + "TEXT_REVERSE_MESSAGE0": "inversar %1", + "LISTS_CREATE_EMPTY_TITLE": "crear una lista voida", + "LISTS_CREATE_WITH_INPUT_WITH": "crear una lista amb", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Apondre un element a la lista.", + "LISTS_LENGTH_TITLE": "longitud de %1", + "LISTS_ISEMPTY_TITLE": "%1 es voida", + "LISTS_INLIST": "dins la lista", + "LISTS_GET_INDEX_GET": "obténer", + "LISTS_GET_INDEX_GET_REMOVE": "obténer e suprimir", + "LISTS_GET_INDEX_REMOVE": "suprimit", + "LISTS_GET_INDEX_FROM_END": "# dempuèi la fin", + "LISTS_GET_INDEX_FIRST": "primièr", + "LISTS_GET_INDEX_LAST": "darrièr", + "LISTS_GET_INDEX_RANDOM": "aleatòri", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 es lo primièr element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 es lo darrièr element.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Renvia l'element de la posicion especificada dins la lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Renvia lo primièr element dins una lista.", + "LISTS_SET_INDEX_SET": "metre", + "LISTS_SET_INDEX_INSERT": "inserir en", + "LISTS_SET_INDEX_INPUT_TO": "coma", + "LISTS_GET_SUBLIST_END_FROM_START": "fins a #", + "LISTS_GET_SUBLIST_END_FROM_END": "fins a # dempuèi la fin", + "LISTS_GET_SUBLIST_END_LAST": "fins a la fin", + "LISTS_SORT_TITLE": "triar %1 %2 %3", + "LISTS_SORT_ORDER_ASCENDING": "creissent", + "LISTS_SORT_ORDER_DESCENDING": "descreissent", + "LISTS_SORT_TYPE_NUMERIC": "numeric", + "LISTS_SORT_TYPE_TEXT": "alfabetic", + "LISTS_SPLIT_WITH_DELIMITER": "amb lo separador", + "LISTS_REVERSE_MESSAGE0": "inversar %1", + "LISTS_REVERSE_TOOLTIP": "Inversar la còpia d’una lista.", + "VARIABLES_GET_CREATE_SET": "Crear 'fixar %1'", + "VARIABLES_SET": "fixar %1 a %2", + "VARIABLES_SET_CREATE_GET": "Crear 'obténer %1'", + "PROCEDURES_DEFNORETURN_TITLE": "a", + "PROCEDURES_DEFNORETURN_PROCEDURE": "far quicòm", + "PROCEDURES_BEFORE_PARAMS": "amb :", + "PROCEDURES_CALL_BEFORE_PARAMS": "amb :", + "PROCEDURES_DEFRETURN_RETURN": "retorn", + "PROCEDURES_ALLOW_STATEMENTS": "autorizar los òrdres", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", + "PROCEDURES_MUTATORARG_TITLE": "nom de l’entrada :", + "PROCEDURES_CREATE_DO": "Crear '%1'", + "DIALOG_OK": "D'acòrdi", + "DIALOG_CANCEL": "Anullar" +} diff --git a/msg/json/olo.json b/msg/json/olo.json index 6067131cb5c..1ca2d0678b7 100644 --- a/msg/json/olo.json +++ b/msg/json/olo.json @@ -1,37 +1,37 @@ -{ - "@metadata": { - "authors": [ - "Ilja.mos", - "Mashoi7" - ] - }, - "TODAY": "Tänäpäi", - "DUPLICATE_BLOCK": "Kopiiruija", - "ADD_COMMENT": "Ližätä kommentarii", - "REMOVE_COMMENT": "Poistua kommentarii", - "HELP": "Kyzy abuu", - "CHANGE_VALUE_TITLE": "Muuttua merkitys:", - "COLOUR_RGB_TITLE": "Väri", - "COLOUR_RGB_RED": "ruskei", - "COLOUR_RGB_GREEN": "vihandu", - "COLOUR_RGB_BLUE": "sinine", - "COLOUR_BLEND_COLOUR1": "väri 1", - "COLOUR_BLEND_COLOUR2": "väri 2", - "CONTROLS_REPEAT_INPUT_DO": "rua", - "CONTROLS_IF_MSG_IF": "gu", - "CONTROLS_IF_MSG_ELSEIF": "sit gu", - "CONTROLS_IF_MSG_ELSE": "sit", - "LOGIC_OPERATION_AND": "da", - "LOGIC_OPERATION_OR": "libo", - "LOGIC_BOOLEAN_TRUE": "tozi", - "LOGIC_BOOLEAN_FALSE": "valeh", - "LOGIC_TERNARY_IF_TRUE": "ollou tozi", - "LOGIC_TERNARY_IF_FALSE": "ei olle tozi", - "MATH_IS_POSITIVE": "on pozitiivine", - "MATH_IS_NEGATIVE": "on negatiivine", - "TEXT_TEXT_TOOLTIP": "Kirjain, sana libo riädy tekstua.", - "TEXT_JOIN_TITLE_CREATEWITH": "luaji tekstu", - "TEXT_CHARAT_FROM_START": "eči kirjain #", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Hylgiä" -} +{ + "@metadata": { + "authors": [ + "Ilja.mos", + "Mashoi7" + ] + }, + "TODAY": "Tänäpäi", + "DUPLICATE_BLOCK": "Kopiiruija", + "ADD_COMMENT": "Ližätä kommentarii", + "REMOVE_COMMENT": "Poistua kommentarii", + "HELP": "Kyzy abuu", + "CHANGE_VALUE_TITLE": "Muuttua merkitys:", + "COLOUR_RGB_TITLE": "Väri", + "COLOUR_RGB_RED": "ruskei", + "COLOUR_RGB_GREEN": "vihandu", + "COLOUR_RGB_BLUE": "sinine", + "COLOUR_BLEND_COLOUR1": "väri 1", + "COLOUR_BLEND_COLOUR2": "väri 2", + "CONTROLS_REPEAT_INPUT_DO": "rua", + "CONTROLS_IF_MSG_IF": "gu", + "CONTROLS_IF_MSG_ELSEIF": "sit gu", + "CONTROLS_IF_MSG_ELSE": "sit", + "LOGIC_OPERATION_AND": "da", + "LOGIC_OPERATION_OR": "libo", + "LOGIC_BOOLEAN_TRUE": "tozi", + "LOGIC_BOOLEAN_FALSE": "valeh", + "LOGIC_TERNARY_IF_TRUE": "ollou tozi", + "LOGIC_TERNARY_IF_FALSE": "ei olle tozi", + "MATH_IS_POSITIVE": "on pozitiivine", + "MATH_IS_NEGATIVE": "on negatiivine", + "TEXT_TEXT_TOOLTIP": "Kirjain, sana libo riädy tekstua.", + "TEXT_JOIN_TITLE_CREATEWITH": "luaji tekstu", + "TEXT_CHARAT_FROM_START": "eči kirjain #", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Hylgiä" +} diff --git a/msg/json/pa.json b/msg/json/pa.json index 47b9bc8a505..4211503a91d 100644 --- a/msg/json/pa.json +++ b/msg/json/pa.json @@ -1,71 +1,71 @@ -{ - "@metadata": { - "authors": [ - "AnupamM", - "Jimidar", - "Tow", - "ਪ੍ਰਚਾਰਕ" - ] - }, - "VARIABLES_DEFAULT_NAME": "ਸਮੱਗਰੀ", - "UNNAMED_KEY": "ਬੇਨਾਮ", - "TODAY": "ਅੱਜ", - "DUPLICATE_BLOCK": "ਨਕਲ", - "ADD_COMMENT": "ਟਿੱਪਣੀ ਕਰੋ", - "REMOVE_COMMENT": "ਟਿੱਪਣੀ ਹਟਾਉ", - "EXTERNAL_INPUTS": "ਬਾਹਰੀ ਇੱਨਪੁੱਟ", - "DELETE_BLOCK": "ਬਲਾਕ ਮਿਟਾਉ", - "DELETE_X_BLOCKS": "%1 ਬਲਾਕ ਮਿਟਾਉ", - "DELETE_ALL_BLOCKS": "ਕੀ ਸਾਰੇ %1 ਬਲਾਕ ਮਿਟਾਉਣੇ ਹਨ?", - "CLEAN_UP": "ਬਲਾਕ ਸਾਫ਼ ਕਰੋ", - "COLLAPSE_BLOCK": "ਬਲਾਕ ਸਮੇਟੋ", - "COLLAPSE_ALL": "ਬਲਾਕਾਂ ਨੂੰ ਸਮੇਟੋ", - "EXPAND_BLOCK": "ਬਲਾਕ ਫੈਲਾਉ", - "EXPAND_ALL": "ਬਲਾਕਾਂ ਨੂੰ ਫੈਲਾਉ", - "DISABLE_BLOCK": "ਬਲਾਕ ਬੰਦ ਕਰੋ", - "ENABLE_BLOCK": "ਬਲਾਕ ਚਾਲੂ ਕਰੋ", - "HELP": "ਮਦਦ", - "UNDO": "ਅਣਕੀਤਾ ਕਰੋ", - "REDO": "ਮੁੜ ਕਰੋ", - "CHANGE_VALUE_TITLE": "ਮੁੱਲ ਬਦਲੋ:", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "ਰੰਗ-ਫੱਟੀ ਵਿੱਚੋਂ ਰੰਗ ਚੁਣੋ", - "COLOUR_RANDOM_TITLE": "ਰਲ਼ਵਾਂ ਰੰਗ", - "COLOUR_RANDOM_TOOLTIP": "ਰਲ਼ਵਾਂ ਰੰਗ ਚੁਣੋ", - "COLOUR_RGB_RED": "ਲਾਲ", - "COLOUR_RGB_GREEN": "ਹਰਾ", - "COLOUR_RGB_BLUE": "ਨੀਲਾ", - "COLOUR_RGB_TOOLTIP": "ਰੰਗ ਬਣਾਉਣ ਲਈ ਲਾਲ, ਹਰੇ ਅਤੇ ਨੀਲੇ ਨੂੰ ਨਿਰਧਾਰਿਤ ਮਾਤਰਾ ਵਿੱਚ ਮਿਲਾਓ। ਰਲਾਉਣ ਦੀ ਮਾਤਰਾ ਦਾ ਮੁੱਲ 0 ਤੋਂ 100 ਦੇ ਵਿਚਕਾਰ ਹੀ ਰੱਖੋ।", - "COLOUR_BLEND_TITLE": "ਮਿਸ਼ਰਣ ਕਰੋ", - "COLOUR_BLEND_COLOUR1": "ਰੰਗ 1", - "COLOUR_BLEND_COLOUR2": "ਰੰਗ 2", - "COLOUR_BLEND_RATIO": "ਅਨੁਪਾਤ", - "COLOUR_BLEND_TOOLTIP": "ਦਿੱਤੇ ਅਨੁਪਾਤ (0.0 - 1.0) ਅਨੁਸਾਰ ਦੋ ਰੰਗ ਮਿਲਾਓ।", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 ਵਾਰੀ ਦੁਹਰਾਉ", - "CONTROLS_REPEAT_INPUT_DO": "ਕਰੋ", - "CONTROLS_IF_MSG_IF": "ਜੇ", - "CONTROLS_IF_MSG_ELSE": "ਹੋਰ", - "LOGIC_OPERATION_AND": "ਅਤੇ", - "LOGIC_OPERATION_OR": "ਜਾਂ", - "LOGIC_BOOLEAN_TRUE": "ਸੱਚ", - "LOGIC_BOOLEAN_FALSE": "ਝੂਠ", - "LOGIC_NULL": "ਨੱਲ", - "LOGIC_NULL_TOOLTIP": "ਨੱਲ ਮੋੜਦਾ ਹੈ।", - "LOGIC_TERNARY_CONDITION": "ਟੈਸਟ", - "LOGIC_TERNARY_IF_TRUE": "ਜੇ ਸੱਚ", - "LOGIC_TERNARY_IF_FALSE": "ਜੇ ਝੂਠ", - "MATH_NUMBER_TOOLTIP": "ਇੱਕ ਅੰਕ", - "MATH_ARITHMETIC_HELPURL": "https://pa.wikipedia.org/wiki/ਗਿਣਤੀ", - "MATH_ARITHMETIC_TOOLTIP_ADD": "ਦੋ ਅੰਕਾੰ ਦਾ ਜੋੜ ਮੋੜੋ।", - "MATH_SINGLE_HELPURL": "https://pa.wikipedia.org/wiki/ਵਰਗ_ਮੂਲ", - "MATH_SINGLE_OP_ROOT": "ਵਰਗ ਮੂਲ", - "MATH_SINGLE_TOOLTIP_ROOT": "ਇੱਕ ਅੰਕ ਦਾ ਵਰਗ ਮੂਲ ਮੋੜੋ।", - "LISTS_GET_INDEX_FIRST": "ਪਹਿਲਾ", - "LISTS_GET_INDEX_LAST": "ਆਖ਼ਰੀ", - "LISTS_GET_INDEX_RANDOM": "ਰਲ਼ਵਾਂ", - "LISTS_SORT_ORDER_DESCENDING": "ਘਟਦੇ ਕ੍ਰਮ ਵਿੱਚ", - "PROCEDURES_DEFRETURN_RETURN": "ਮੋੜੋ", - "DIALOG_OK": "ਠੀਕ ਹੈ।", - "DIALOG_CANCEL": "ਰੱਦ ਕਰੋ" -} +{ + "@metadata": { + "authors": [ + "AnupamM", + "Jimidar", + "Tow", + "ਪ੍ਰਚਾਰਕ" + ] + }, + "VARIABLES_DEFAULT_NAME": "ਸਮੱਗਰੀ", + "UNNAMED_KEY": "ਬੇਨਾਮ", + "TODAY": "ਅੱਜ", + "DUPLICATE_BLOCK": "ਨਕਲ", + "ADD_COMMENT": "ਟਿੱਪਣੀ ਕਰੋ", + "REMOVE_COMMENT": "ਟਿੱਪਣੀ ਹਟਾਉ", + "EXTERNAL_INPUTS": "ਬਾਹਰੀ ਇੱਨਪੁੱਟ", + "DELETE_BLOCK": "ਬਲਾਕ ਮਿਟਾਉ", + "DELETE_X_BLOCKS": "%1 ਬਲਾਕ ਮਿਟਾਉ", + "DELETE_ALL_BLOCKS": "ਕੀ ਸਾਰੇ %1 ਬਲਾਕ ਮਿਟਾਉਣੇ ਹਨ?", + "CLEAN_UP": "ਬਲਾਕ ਸਾਫ਼ ਕਰੋ", + "COLLAPSE_BLOCK": "ਬਲਾਕ ਸਮੇਟੋ", + "COLLAPSE_ALL": "ਬਲਾਕਾਂ ਨੂੰ ਸਮੇਟੋ", + "EXPAND_BLOCK": "ਬਲਾਕ ਫੈਲਾਉ", + "EXPAND_ALL": "ਬਲਾਕਾਂ ਨੂੰ ਫੈਲਾਉ", + "DISABLE_BLOCK": "ਬਲਾਕ ਬੰਦ ਕਰੋ", + "ENABLE_BLOCK": "ਬਲਾਕ ਚਾਲੂ ਕਰੋ", + "HELP": "ਮਦਦ", + "UNDO": "ਅਣਕੀਤਾ ਕਰੋ", + "REDO": "ਮੁੜ ਕਰੋ", + "CHANGE_VALUE_TITLE": "ਮੁੱਲ ਬਦਲੋ:", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "ਰੰਗ-ਫੱਟੀ ਵਿੱਚੋਂ ਰੰਗ ਚੁਣੋ", + "COLOUR_RANDOM_TITLE": "ਰਲ਼ਵਾਂ ਰੰਗ", + "COLOUR_RANDOM_TOOLTIP": "ਰਲ਼ਵਾਂ ਰੰਗ ਚੁਣੋ", + "COLOUR_RGB_RED": "ਲਾਲ", + "COLOUR_RGB_GREEN": "ਹਰਾ", + "COLOUR_RGB_BLUE": "ਨੀਲਾ", + "COLOUR_RGB_TOOLTIP": "ਰੰਗ ਬਣਾਉਣ ਲਈ ਲਾਲ, ਹਰੇ ਅਤੇ ਨੀਲੇ ਨੂੰ ਨਿਰਧਾਰਿਤ ਮਾਤਰਾ ਵਿੱਚ ਮਿਲਾਓ। ਰਲਾਉਣ ਦੀ ਮਾਤਰਾ ਦਾ ਮੁੱਲ 0 ਤੋਂ 100 ਦੇ ਵਿਚਕਾਰ ਹੀ ਰੱਖੋ।", + "COLOUR_BLEND_TITLE": "ਮਿਸ਼ਰਣ ਕਰੋ", + "COLOUR_BLEND_COLOUR1": "ਰੰਗ 1", + "COLOUR_BLEND_COLOUR2": "ਰੰਗ 2", + "COLOUR_BLEND_RATIO": "ਅਨੁਪਾਤ", + "COLOUR_BLEND_TOOLTIP": "ਦਿੱਤੇ ਅਨੁਪਾਤ (0.0 - 1.0) ਅਨੁਸਾਰ ਦੋ ਰੰਗ ਮਿਲਾਓ।", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 ਵਾਰੀ ਦੁਹਰਾਉ", + "CONTROLS_REPEAT_INPUT_DO": "ਕਰੋ", + "CONTROLS_IF_MSG_IF": "ਜੇ", + "CONTROLS_IF_MSG_ELSE": "ਹੋਰ", + "LOGIC_OPERATION_AND": "ਅਤੇ", + "LOGIC_OPERATION_OR": "ਜਾਂ", + "LOGIC_BOOLEAN_TRUE": "ਸੱਚ", + "LOGIC_BOOLEAN_FALSE": "ਝੂਠ", + "LOGIC_NULL": "ਨੱਲ", + "LOGIC_NULL_TOOLTIP": "ਨੱਲ ਮੋੜਦਾ ਹੈ।", + "LOGIC_TERNARY_CONDITION": "ਟੈਸਟ", + "LOGIC_TERNARY_IF_TRUE": "ਜੇ ਸੱਚ", + "LOGIC_TERNARY_IF_FALSE": "ਜੇ ਝੂਠ", + "MATH_NUMBER_TOOLTIP": "ਇੱਕ ਅੰਕ", + "MATH_ARITHMETIC_HELPURL": "https://pa.wikipedia.org/wiki/ਗਿਣਤੀ", + "MATH_ARITHMETIC_TOOLTIP_ADD": "ਦੋ ਅੰਕਾੰ ਦਾ ਜੋੜ ਮੋੜੋ।", + "MATH_SINGLE_HELPURL": "https://pa.wikipedia.org/wiki/ਵਰਗ_ਮੂਲ", + "MATH_SINGLE_OP_ROOT": "ਵਰਗ ਮੂਲ", + "MATH_SINGLE_TOOLTIP_ROOT": "ਇੱਕ ਅੰਕ ਦਾ ਵਰਗ ਮੂਲ ਮੋੜੋ।", + "LISTS_GET_INDEX_FIRST": "ਪਹਿਲਾ", + "LISTS_GET_INDEX_LAST": "ਆਖ਼ਰੀ", + "LISTS_GET_INDEX_RANDOM": "ਰਲ਼ਵਾਂ", + "LISTS_SORT_ORDER_DESCENDING": "ਘਟਦੇ ਕ੍ਰਮ ਵਿੱਚ", + "PROCEDURES_DEFRETURN_RETURN": "ਮੋੜੋ", + "DIALOG_OK": "ਠੀਕ ਹੈ।", + "DIALOG_CANCEL": "ਰੱਦ ਕਰੋ" +} diff --git a/msg/json/pl.json b/msg/json/pl.json index 3943f451d60..c1ada1fc536 100644 --- a/msg/json/pl.json +++ b/msg/json/pl.json @@ -1,380 +1,380 @@ -{ - "@metadata": { - "authors": [ - "Chrumps", - "Cirasean", - "Cotidianis", - "Expert3222", - "Faren", - "Fringoo", - "InternerowyGołąb", - "Krottyianock", - "Krzyz23", - "Liuxinyu970226", - "Mateon1", - "Mazab IZW", - "Pbz", - "Pio387", - "Rail", - "Stojex", - "Teeed", - "Vengir", - "WaldiSt", - "Wojtas", - "Woytecr", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "element", - "UNNAMED_KEY": "bez nazwy", - "TODAY": "Dzisiaj", - "DUPLICATE_BLOCK": "Powiel", - "ADD_COMMENT": "Dodaj Komentarz", - "REMOVE_COMMENT": "Usuń komentarz", - "DUPLICATE_COMMENT": "Zduplikowany komentarz", - "EXTERNAL_INPUTS": "Zewnętrzne Wejścia", - "INLINE_INPUTS": "Wbudowane Wejścia", - "DELETE_BLOCK": "Usuń Klocek", - "DELETE_X_BLOCKS": "Usuń %1 Bloki(ów)", - "DELETE_ALL_BLOCKS": "Usunąć wszystkie klocki z %1?", - "CLEAN_UP": "Uporządkuj Bloki", - "COLLAPSE_BLOCK": "Zwiń Klocek", - "COLLAPSE_ALL": "Zwiń Bloki", - "EXPAND_BLOCK": "Rozwiń Klocek", - "EXPAND_ALL": "Rozwiń Bloki", - "DISABLE_BLOCK": "Wyłącz Klocek", - "ENABLE_BLOCK": "Włącz Blok", - "HELP": "Pomoc", - "UNDO": "Cofnij", - "REDO": "Ponów", - "CHANGE_VALUE_TITLE": "Zmień wartość:", - "RENAME_VARIABLE": "Zmień nazwę zmiennej...", - "RENAME_VARIABLE_TITLE": "Zmień nazwy wszystkich '%1' zmiennych na:", - "NEW_VARIABLE": "Utwórz zmienną...", - "NEW_STRING_VARIABLE": "Utwórz zmienną typu string", - "NEW_NUMBER_VARIABLE": "Utwórz zmienną typu number", - "NEW_COLOUR_VARIABLE": "Utwórz zmienną colour", - "NEW_VARIABLE_TYPE_TITLE": "Nowy typ zmiennej:", - "NEW_VARIABLE_TITLE": "Nowa nazwa zmiennej:", - "VARIABLE_ALREADY_EXISTS": "Zmienna o nazwie '%1' już istnieje.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Zmienna o nazwie '%1' już istnieje i jest typu '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Usunąć %1 wystąpień zmiennej '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nie można usunąć zmiennej '%1', ponieważ jest częścią definicji funkcji '%2'", - "DELETE_VARIABLE": "Usuń zmienną '%1'", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Wybierz kolor z palety.", - "COLOUR_RANDOM_TITLE": "losowy kolor", - "COLOUR_RANDOM_TOOLTIP": "Wybierz kolor w sposób losowy.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "kolor z", - "COLOUR_RGB_RED": "czerwony", - "COLOUR_RGB_GREEN": "zielony", - "COLOUR_RGB_BLUE": "niebieski", - "COLOUR_RGB_TOOLTIP": "Utwórz kolor składający sie z podanej ilości czerwieni, zieleni i błękitu. Zakres wartości: 0 do 100.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "wymieszaj", - "COLOUR_BLEND_COLOUR1": "kolor 1", - "COLOUR_BLEND_COLOUR2": "kolor 2", - "COLOUR_BLEND_RATIO": "proporcja", - "COLOUR_BLEND_TOOLTIP": "Miesza dwa kolory w danej proporcji (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "powtórz %1 razy", - "CONTROLS_REPEAT_INPUT_DO": "wykonaj", - "CONTROLS_REPEAT_TOOLTIP": "Wykonaj niektóre instrukcje kilka razy.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "powtarzaj dopóki", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "powtarzaj aż do", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dopóki wyrażenie jest prawdziwe, wykonaj zadane czynności.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dopóki wyrażenie jest nieprawdziwe, wykonaj zadane czynności.", - "CONTROLS_FOR_TOOLTIP": "Zmiennej '%1' przypisuje wartości z podanego zakresu z podanym interwałem i wykonuje zadane bloki.", - "CONTROLS_FOR_TITLE": "licz z %1 od %2 do %3 co %4 (wartość kroku)", - "CONTROLS_FOREACH_TITLE": "dla każdego elementu %1 listy %2", - "CONTROLS_FOREACH_TOOLTIP": "Przypisz zmiennej '%1' kolejno wartość każdego elementu listy, a następnie wykonaj kilka instrukcji.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "przerwij pętlę", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "przejdź do kolejnej iteracji pętli", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Przerwij działanie pętli.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Pomiń resztę pętli i kontynuuj w kolejnej iteracji.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Uwaga: Ten klocek może być użyty tylko wewnątrz pętli.", - "CONTROLS_IF_TOOLTIP_1": "Jeśli warunek jest spełniony, wykonaj zadane czynności.", - "CONTROLS_IF_TOOLTIP_2": "Jeśli warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, wykonaj drugi blok instrukcji.", - "CONTROLS_IF_TOOLTIP_3": "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, jeśli drugi warunek jest spełniony, wykonaj drugi blok instrukcji.", - "CONTROLS_IF_TOOLTIP_4": "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok czynności. W przeciwnym razie jeśli drugi warunek jest spełniony, wykonaj drugi blok czynności. Jeżeli żaden z warunków nie zostanie spełniony, wykonaj ostatni blok czynności.", - "CONTROLS_IF_MSG_IF": "jeśli", - "CONTROLS_IF_MSG_ELSEIF": "w przeciwnym razie, jeśli", - "CONTROLS_IF_MSG_ELSE": "w przeciwnym razie", - "CONTROLS_IF_IF_TOOLTIP": "Dodaj, usuń lub zmień kolejność czynności, żeby zmodyfikować ten klocek „jeśli”.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodaj warunek do klocka „jeśli”.", - "CONTROLS_IF_ELSE_TOOLTIP": "Dodaj ostatni zawsze prawdziwy warunek do klocka „jeśli”.", - "LOGIC_COMPARE_HELPURL": "https://pl.wikipedia.org/wiki/Nierówność", - "LOGIC_COMPARE_TOOLTIP_EQ": "Zwraca \"prawda\", jeśli wejścia są identyczne.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Zwraca \"prawda\", jeśli wejścia nie są identyczne.", - "LOGIC_COMPARE_TOOLTIP_LT": "Zwraca \"prawda\" jeśli pierwsze wejście jest mniejsze od drugiego.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Zwraca \"prawda\", jeśli pierwsze wejście jest mniejsze lub równe drugiemu.", - "LOGIC_COMPARE_TOOLTIP_GT": "Zwraca \"prawda\" jeśli pierwsze wejście jest większe od drugiego.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Zwraca \"prawda\", jeśli pierwsze wejście jest większe lub równe drugiemu.", - "LOGIC_OPERATION_TOOLTIP_AND": "Zwraca \"prawda\" jeśli na obydwóch wejściach jest \"prawda\".", - "LOGIC_OPERATION_AND": "i", - "LOGIC_OPERATION_TOOLTIP_OR": "Zwraca \"prawda\" jeśli co najmniej na jednyk wejściu jest \"prawda\".", - "LOGIC_OPERATION_OR": "lub", - "LOGIC_NEGATE_TITLE": "nie %1", - "LOGIC_NEGATE_TOOLTIP": "Zwraca \"prawda\", jeśli wejściu jest \"fałsz\". Zwraca \"fałsz\", jeśli na wejściu jest \"prawda\".", - "LOGIC_BOOLEAN_TRUE": "prawda", - "LOGIC_BOOLEAN_FALSE": "fałsz", - "LOGIC_BOOLEAN_TOOLTIP": "Zwraca 'prawda' lub 'fałsz'.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "nic", - "LOGIC_NULL_TOOLTIP": "Zwraca nic.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "jeśli prawda", - "LOGIC_TERNARY_IF_FALSE": "jeśli fałsz", - "LOGIC_TERNARY_TOOLTIP": "Sprawdź warunek w „test”. Jeśli warunek jest prawdziwy, to zwróci „jeśli prawda”; jeśli nie jest prawdziwy to zwróci „jeśli fałsz”.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Liczba.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "/", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tg", - "MATH_TRIG_ASIN": "arcsin", - "MATH_TRIG_ACOS": "arccos", - "MATH_TRIG_ATAN": "arctg", - "MATH_ARITHMETIC_HELPURL": "https://pl.wikipedia.org/wiki/Arytmetyka", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Zwróć sumę dwóch liczb.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Zwróć różnicę dwóch liczb.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Zwróć iloczyn dwóch liczb.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Zwróć iloraz dwóch liczb.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Zwróć pierwszą liczbę podniesioną do potęgi o wykładniku drugiej liczby.", - "MATH_SINGLE_HELPURL": "https://pl.wikipedia.org/wiki/Pierwiastek_kwadratowy", - "MATH_SINGLE_OP_ROOT": "pierwiastek kwadratowy", - "MATH_SINGLE_TOOLTIP_ROOT": "Zwróć pierwiastek kwadratowy danej liczby.", - "MATH_SINGLE_OP_ABSOLUTE": "wartość bezwzględna", - "MATH_SINGLE_TOOLTIP_ABS": "Zwróć wartość bezwzględną danej liczby.", - "MATH_SINGLE_TOOLTIP_NEG": "Zwróć negację danej liczby.", - "MATH_SINGLE_TOOLTIP_LN": "Zwróć logarytm naturalny danej liczby.", - "MATH_SINGLE_TOOLTIP_LOG10": "Zwraca logarytm dziesiętny danej liczby.", - "MATH_SINGLE_TOOLTIP_EXP": "Zwróć e do potęgi danej liczby.", - "MATH_SINGLE_TOOLTIP_POW10": "Zwróć 10 do potęgi danej liczby.", - "MATH_TRIG_HELPURL": "https://pl.wikipedia.org/wiki/Funkcje_trygonometryczne", - "MATH_TRIG_TOOLTIP_SIN": "Zwróć wartość sinusa o stopniu (nie w radianach).", - "MATH_TRIG_TOOLTIP_COS": "Zwróć wartość cosinusa o stopniu (nie w radianach).", - "MATH_TRIG_TOOLTIP_TAN": "Zwróć tangens o stopniu (nie w radianach).", - "MATH_TRIG_TOOLTIP_ASIN": "Zwróć arcus sinus danej liczby.", - "MATH_TRIG_TOOLTIP_ACOS": "Zwróć arcus cosinus danej liczby.", - "MATH_TRIG_TOOLTIP_ATAN": "Zwróć arcus tangens danej liczby.", - "MATH_CONSTANT_HELPURL": "https://pl.wikipedia.org/wiki/Stała_(matematyka)", - "MATH_CONSTANT_TOOLTIP": "Zwróć jedną wspólną stałą: π (3.141), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) lub ∞ (nieskończoność).", - "MATH_IS_EVEN": "jest parzysta", - "MATH_IS_ODD": "jest nieparzysta", - "MATH_IS_PRIME": "jest liczbą pierwszą", - "MATH_IS_WHOLE": "jest liczbą całkowitą", - "MATH_IS_POSITIVE": "jest dodatnia", - "MATH_IS_NEGATIVE": "jest ujemna", - "MATH_IS_DIVISIBLE_BY": "jest podzielna przez", - "MATH_IS_TOOLTIP": "Sprawdź, czy liczba jest parzysta, nieparzysta, pierwsza, całkowita, dodatnia, ujemna, lub czy jest podzielna przez podaną liczbę. Zwraca wartość \"prawda\" lub \"fałsz\".", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "zmień %1 o %2", - "MATH_CHANGE_TOOLTIP": "Dodaj liczbę do zmiennej '%1'.", - "MATH_ROUND_HELPURL": "https://pl.wikipedia.org/wiki/Zaokrąglanie", - "MATH_ROUND_TOOLTIP": "Zaokrąglij w górę lub w dół.", - "MATH_ROUND_OPERATOR_ROUND": "zaokrąglij", - "MATH_ROUND_OPERATOR_ROUNDUP": "zaokrąglij w górę", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokrąglij w dół", - "MATH_ONLIST_HELPURL": "", - "MATH_ONLIST_OPERATOR_SUM": "suma elementów listy", - "MATH_ONLIST_TOOLTIP_SUM": "Zwróć sumę wszystkich liczb z listy.", - "MATH_ONLIST_OPERATOR_MIN": "minimalna wartość z listy", - "MATH_ONLIST_TOOLTIP_MIN": "Zwróć najmniejszą liczbę w liście.", - "MATH_ONLIST_OPERATOR_MAX": "maksymalna wartość z listy", - "MATH_ONLIST_TOOLTIP_MAX": "Zwróć największą liczbę w liście.", - "MATH_ONLIST_OPERATOR_AVERAGE": "średnia elementów listy", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Zwróć średnią (średnią arytmetyczną) wartości liczbowych z listy.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana listy", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Zwróć medianę listy.", - "MATH_ONLIST_OPERATOR_MODE": "dominanty listy", - "MATH_ONLIST_TOOLTIP_MODE": "Zwróć listę najczęściej występujących elementów w liście.", - "MATH_ONLIST_OPERATOR_STD_DEV": "odchylenie standardowe listy", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Zwróć odchylenie standardowe listy.", - "MATH_ONLIST_OPERATOR_RANDOM": "losowy element z listy", - "MATH_ONLIST_TOOLTIP_RANDOM": "Zwróć losowy element z listy.", - "MATH_MODULO_HELPURL": "https://pl.wikipedia.org/wiki/Modulo", - "MATH_MODULO_TITLE": "reszta z dzielenia %1 przez %2", - "MATH_MODULO_TOOLTIP": "Zwróć resztę z dzielenia dwóch liczb przez siebie.", - "MATH_CONSTRAIN_TITLE": "ogranicz %1 z dołu %2 z góry %3", - "MATH_CONSTRAIN_TOOLTIP": "Ogranicz liczbę, aby była w określonych granicach (włącznie).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "losowa liczba całkowita od %1 do %2", - "MATH_RANDOM_INT_TOOLTIP": "Zwróć losową liczbę całkowitą w ramach dwóch wyznaczonych granic, włącznie.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "losowy ułamek", - "MATH_RANDOM_FLOAT_TOOLTIP": "Zwróć losowy ułamek między 0.0 (włącznie), a 1.0 (wyłącznie).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TOOLTIP": "Zwraca arcus tangens punktu (X, Y) w stopniach od -180 do 180.", - "TEXT_TEXT_HELPURL": "https://pl.wikipedia.org/wiki/Tekstowy_typ_danych", - "TEXT_TEXT_TOOLTIP": "Litera, wyraz lub linia tekstu.", - "TEXT_JOIN_TITLE_CREATEWITH": "utwórz tekst z", - "TEXT_JOIN_TOOLTIP": "Tworzy fragment tekstu, łącząc ze sobą dowolną liczbę tekstów.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "połącz", - "TEXT_CREATE_JOIN_TOOLTIP": "Dodaj, usuń lub zmień kolejność sekcji, aby zmodyfikować klocek tekstowy.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Dodaj element do tekstu.", - "TEXT_APPEND_TITLE": "dodaj tekst %2 do %1", - "TEXT_APPEND_TOOLTIP": "Dołącz tekst do zmiennej '%1'.", - "TEXT_LENGTH_TITLE": "długość %1", - "TEXT_LENGTH_TOOLTIP": "Zwraca liczbę liter (łącznie ze spacjami) w podanym tekście.", - "TEXT_ISEMPTY_TITLE": "%1 jest pusty", - "TEXT_ISEMPTY_TOOLTIP": "Zwraca prawda (true), jeśli podany tekst jest pusty.", - "TEXT_INDEXOF_TOOLTIP": "Zwraca indeks pierwszego/ostatniego wystąpienia pierwszego tekstu w drugim tekście. Zwraca wartość %1, jeśli tekst nie został znaleziony.", - "TEXT_INDEXOF_TITLE": "w tekście %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "znajdź pierwsze wystąpienie tekstu", - "TEXT_INDEXOF_OPERATOR_LAST": "znajdź ostatnie wystąpienie tekstu", - "TEXT_CHARAT_TITLE": "w tekście %1 %2", - "TEXT_CHARAT_FROM_START": "pobierz literę #", - "TEXT_CHARAT_FROM_END": "pobierz literę # od końca", - "TEXT_CHARAT_FIRST": "pobierz pierwszą literę", - "TEXT_CHARAT_LAST": "pobierz ostatnią literę", - "TEXT_CHARAT_RANDOM": "pobierz losową literę", - "TEXT_CHARAT_TAIL": "", - "TEXT_CHARAT_TOOLTIP": "Zwraca literę z określonej pozycji.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Zwraca określoną część tekstu.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "w tekście", - "TEXT_GET_SUBSTRING_START_FROM_START": "pobierz podciąg od # litery", - "TEXT_GET_SUBSTRING_START_FROM_END": "pobierz podciąg od # litery od końca", - "TEXT_GET_SUBSTRING_START_FIRST": "pobierz podciąg od pierwszej litery", - "TEXT_GET_SUBSTRING_END_FROM_START": "do # litery", - "TEXT_GET_SUBSTRING_END_FROM_END": "do # litery od końca", - "TEXT_GET_SUBSTRING_END_LAST": "do ostatniej litery", - "TEXT_GET_SUBSTRING_TAIL": "", - "TEXT_CHANGECASE_TOOLTIP": "Zwraca kopię tekstu z odwruconą wielkością liter.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "na WIELKIE LITERY", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "na małe litery", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "na Pierwsza Duża", - "TEXT_TRIM_TOOLTIP": "Zwraca kopię tekstu z usuniętymi spacjami z jednego lub z obu końców tekstu.", - "TEXT_TRIM_OPERATOR_BOTH": "usuń spacje po obu stronach", - "TEXT_TRIM_OPERATOR_LEFT": "usuń spacje z lewej strony", - "TEXT_TRIM_OPERATOR_RIGHT": "usuń spacje z prawej strony", - "TEXT_PRINT_TITLE": "wydrukuj %1", - "TEXT_PRINT_TOOLTIP": "Wyświetl określony tekst, liczbę lub inną wartość.", - "TEXT_PROMPT_TYPE_TEXT": "poproś o tekst z tą wiadomością", - "TEXT_PROMPT_TYPE_NUMBER": "poproś o liczbę z tą wiadomością", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Zapytaj użytkownika o liczbę.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Zapytaj użytkownika o jakiś tekst.", - "TEXT_COUNT_MESSAGE0": "policz %1 w %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Liczy ile razy dany tekst występuje w innym tekście.", - "TEXT_REPLACE_MESSAGE0": "zamień %1 na %2 w %3", - "TEXT_REPLACE_TOOLTIP": "Zastąp wszystkie wystąpienia danego tekstu innym.", - "TEXT_REVERSE_MESSAGE0": "odwróć %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Odwraca kolejność znaków w tekście.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "utwórz pustą listę", - "LISTS_CREATE_EMPTY_TOOLTIP": "Zwraca listę o długości 0, nie zawierającą danych", - "LISTS_CREATE_WITH_TOOLTIP": "Utwórz listę z dowolną ilością elementów.", - "LISTS_CREATE_WITH_INPUT_WITH": "utwórz listę z", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Dodaj, usuń lub zmień kolejność sekcji aby przekonfigurować blok tej listy.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Dodaj element do listy.", - "LISTS_REPEAT_TOOLTIP": "Tworzy listę zawierającą podaną wartość powtórzoną żądaną ilość razy.", - "LISTS_REPEAT_TITLE": "utwórz listę powtarzając %1 %2 razy.", - "LISTS_LENGTH_TITLE": "długość %1", - "LISTS_LENGTH_TOOLTIP": "Zwraca długość listy.", - "LISTS_ISEMPTY_TITLE": "%1 jest pusta", - "LISTS_ISEMPTY_TOOLTIP": "Zwraca \"prawda\" jeśli lista jest pusta.", - "LISTS_INLIST": "na liście", - "LISTS_INDEX_OF_FIRST": "znajdź pierwsze wystąpienie elementu", - "LISTS_INDEX_OF_LAST": "znajdź ostatanie wystąpienie elementu", - "LISTS_INDEX_OF_TOOLTIP": "Zwraca indeks pierwszego/ostatniego wystąpienia elementu z listy. Zwraca %1, jeśli nie zostanie znaleziony.", - "LISTS_GET_INDEX_GET": "pobierz", - "LISTS_GET_INDEX_GET_REMOVE": "zabierz", - "LISTS_GET_INDEX_REMOVE": "usuń", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# od końca", - "LISTS_GET_INDEX_FIRST": "pierwszy", - "LISTS_GET_INDEX_LAST": "ostatni", - "LISTS_GET_INDEX_RANDOM": "losowy", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 to pierwszy element.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 to ostatni element.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Zwraca element z konkretnej pozycji na liście.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Zwraca pierwszy element z listy.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Zwraca ostatni element z listy.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Zwraca losowy element z listy.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Usuwa i zwraca element z określonej pozycji na liście.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Usuwa i zwraca pierwszy element z listy.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Usuwa i zwraca ostatni element z listy.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Usuwa i zwraca losowy element z listy.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Usuwa element z określonej pozycji na liście.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Usuwa pierwszy element z listy.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Usuwa ostatni element z listy.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Usuwa losowy element z listy.", - "LISTS_SET_INDEX_SET": "ustaw", - "LISTS_SET_INDEX_INSERT": "wstaw w", - "LISTS_SET_INDEX_INPUT_TO": "jako", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ustawia element w określonym miejscu na liście.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Ustawia pierwszy element na liście.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Ustawia ostatni element na liście.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Ustawia losowy element na liście.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Wstawia element na żądanej pozycji listy.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Wstawia element na początku listy.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Dodaj element na koniec listy.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Wstawia element w losowym miejscu na liście.", - "LISTS_GET_SUBLIST_START_FROM_START": "utwórz listę podrzędną z #", - "LISTS_GET_SUBLIST_START_FROM_END": "utwórz listę podrzędną z # od końca", - "LISTS_GET_SUBLIST_START_FIRST": "utwórz listę podrzędną od pierwszego", - "LISTS_GET_SUBLIST_END_FROM_START": "do #", - "LISTS_GET_SUBLIST_END_FROM_END": "do # od końca", - "LISTS_GET_SUBLIST_END_LAST": "do ostatniego", - "LISTS_GET_SUBLIST_TAIL": "", - "LISTS_GET_SUBLIST_TOOLTIP": "Tworzy kopię żądanej części listy.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sortuj %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sortuj kopię listy.", - "LISTS_SORT_ORDER_ASCENDING": "rosnąco", - "LISTS_SORT_ORDER_DESCENDING": "malejąco", - "LISTS_SORT_TYPE_NUMERIC": "numerycznie", - "LISTS_SORT_TYPE_TEXT": "alfabetycznie", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetycznie, ignoruj wielkość liter", - "LISTS_SPLIT_LIST_FROM_TEXT": "utwórz listę z tekstu", - "LISTS_SPLIT_TEXT_FROM_LIST": "utwórz tekst z listy", - "LISTS_SPLIT_WITH_DELIMITER": "z separatorem", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Rozdziela tekst zgodnie z separatorem tworząc listę z powstałych elementów.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Łączy listę tekstów w jeden tekst, rozdzielany separatorem.", - "LISTS_REVERSE_MESSAGE0": "odwróć %1", - "LISTS_REVERSE_TOOLTIP": "Odwraca kolejność danych w kopii listy.", - "ORDINAL_NUMBER_SUFFIX": "", - "VARIABLES_GET_TOOLTIP": "Zwraca wartość tej zmiennej.", - "VARIABLES_GET_CREATE_SET": "Utwórz klocek 'ustaw %1'", - "VARIABLES_SET": "przypisz %1 wartość %2", - "VARIABLES_SET_TOOLTIP": "Wartości zmiennej i wejście będą identyczne.", - "VARIABLES_SET_CREATE_GET": "Utwórz klocek 'pobierz %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "do", - "PROCEDURES_DEFNORETURN_PROCEDURE": "zrób coś", - "PROCEDURES_BEFORE_PARAMS": "z:", - "PROCEDURES_CALL_BEFORE_PARAMS": "z:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Tworzy funkcję nie posiadającą wyjścia.", - "PROCEDURES_DEFNORETURN_COMMENT": "Opisz tę funkcję...", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFRETURN_RETURN": "zwróć", - "PROCEDURES_DEFRETURN_TOOLTIP": "Tworzy funkcję posiadającą wyjście.", - "PROCEDURES_ALLOW_STATEMENTS": "zezwól na czynności", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Uwaga: Ta funkcja ma powtórzone parametry.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://pl.wikipedia.org/wiki/Podprogram", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Uruchom zdefiniowaną przez użytkownika funkcję '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://pl.wikipedia.org/wiki/Podprogram", - "PROCEDURES_CALLRETURN_TOOLTIP": "Uruchom zdefiniowaną przez użytkownika funkcję '%1' i użyj jej wyjścia.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "wejścia", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Dodaj, usuń lub zmień kolejność wejść tej funkcji.", - "PROCEDURES_MUTATORARG_TITLE": "nazwa wejścia:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Dodaj wejście do funkcji.", - "PROCEDURES_HIGHLIGHT_DEF": "Podświetl definicję funkcji", - "PROCEDURES_CREATE_DO": "Utwórz '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Jeśli warunek jest spełniony zwróć drugą wartość.", - "PROCEDURES_IFRETURN_WARNING": "Uwaga: Ten klocek może być używany tylko w definicji funkcji.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Powiedz coś...", - "COLLAPSED_WARNINGS_WARNING": "Zwinięte bloki zawierają ostrzeżenia.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Anuluj" -} +{ + "@metadata": { + "authors": [ + "Chrumps", + "Cirasean", + "Cotidianis", + "Expert3222", + "Faren", + "Fringoo", + "InternerowyGołąb", + "Krottyianock", + "Krzyz23", + "Liuxinyu970226", + "Mateon1", + "Mazab IZW", + "Pbz", + "Pio387", + "Rail", + "Stojex", + "Teeed", + "Vengir", + "WaldiSt", + "Wojtas", + "Woytecr", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "element", + "UNNAMED_KEY": "bez nazwy", + "TODAY": "Dzisiaj", + "DUPLICATE_BLOCK": "Powiel", + "ADD_COMMENT": "Dodaj Komentarz", + "REMOVE_COMMENT": "Usuń komentarz", + "DUPLICATE_COMMENT": "Zduplikowany komentarz", + "EXTERNAL_INPUTS": "Zewnętrzne Wejścia", + "INLINE_INPUTS": "Wbudowane Wejścia", + "DELETE_BLOCK": "Usuń Klocek", + "DELETE_X_BLOCKS": "Usuń %1 Bloki(ów)", + "DELETE_ALL_BLOCKS": "Usunąć wszystkie klocki z %1?", + "CLEAN_UP": "Uporządkuj Bloki", + "COLLAPSE_BLOCK": "Zwiń Klocek", + "COLLAPSE_ALL": "Zwiń Bloki", + "EXPAND_BLOCK": "Rozwiń Klocek", + "EXPAND_ALL": "Rozwiń Bloki", + "DISABLE_BLOCK": "Wyłącz Klocek", + "ENABLE_BLOCK": "Włącz Blok", + "HELP": "Pomoc", + "UNDO": "Cofnij", + "REDO": "Ponów", + "CHANGE_VALUE_TITLE": "Zmień wartość:", + "RENAME_VARIABLE": "Zmień nazwę zmiennej...", + "RENAME_VARIABLE_TITLE": "Zmień nazwy wszystkich '%1' zmiennych na:", + "NEW_VARIABLE": "Utwórz zmienną...", + "NEW_STRING_VARIABLE": "Utwórz zmienną typu string", + "NEW_NUMBER_VARIABLE": "Utwórz zmienną typu number", + "NEW_COLOUR_VARIABLE": "Utwórz zmienną colour", + "NEW_VARIABLE_TYPE_TITLE": "Nowy typ zmiennej:", + "NEW_VARIABLE_TITLE": "Nowa nazwa zmiennej:", + "VARIABLE_ALREADY_EXISTS": "Zmienna o nazwie '%1' już istnieje.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Zmienna o nazwie '%1' już istnieje i jest typu '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Usunąć %1 wystąpień zmiennej '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nie można usunąć zmiennej '%1', ponieważ jest częścią definicji funkcji '%2'", + "DELETE_VARIABLE": "Usuń zmienną '%1'", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Wybierz kolor z palety.", + "COLOUR_RANDOM_TITLE": "losowy kolor", + "COLOUR_RANDOM_TOOLTIP": "Wybierz kolor w sposób losowy.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "kolor z", + "COLOUR_RGB_RED": "czerwony", + "COLOUR_RGB_GREEN": "zielony", + "COLOUR_RGB_BLUE": "niebieski", + "COLOUR_RGB_TOOLTIP": "Utwórz kolor składający sie z podanej ilości czerwieni, zieleni i błękitu. Zakres wartości: 0 do 100.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "wymieszaj", + "COLOUR_BLEND_COLOUR1": "kolor 1", + "COLOUR_BLEND_COLOUR2": "kolor 2", + "COLOUR_BLEND_RATIO": "proporcja", + "COLOUR_BLEND_TOOLTIP": "Miesza dwa kolory w danej proporcji (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "powtórz %1 razy", + "CONTROLS_REPEAT_INPUT_DO": "wykonaj", + "CONTROLS_REPEAT_TOOLTIP": "Wykonaj niektóre instrukcje kilka razy.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "powtarzaj dopóki", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "powtarzaj aż do", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dopóki wyrażenie jest prawdziwe, wykonaj zadane czynności.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dopóki wyrażenie jest nieprawdziwe, wykonaj zadane czynności.", + "CONTROLS_FOR_TOOLTIP": "Zmiennej '%1' przypisuje wartości z podanego zakresu z podanym interwałem i wykonuje zadane bloki.", + "CONTROLS_FOR_TITLE": "licz z %1 od %2 do %3 co %4 (wartość kroku)", + "CONTROLS_FOREACH_TITLE": "dla każdego elementu %1 listy %2", + "CONTROLS_FOREACH_TOOLTIP": "Przypisz zmiennej '%1' kolejno wartość każdego elementu listy, a następnie wykonaj kilka instrukcji.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "przerwij pętlę", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "przejdź do kolejnej iteracji pętli", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Przerwij działanie pętli.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Pomiń resztę pętli i kontynuuj w kolejnej iteracji.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Uwaga: Ten klocek może być użyty tylko wewnątrz pętli.", + "CONTROLS_IF_TOOLTIP_1": "Jeśli warunek jest spełniony, wykonaj zadane czynności.", + "CONTROLS_IF_TOOLTIP_2": "Jeśli warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, wykonaj drugi blok instrukcji.", + "CONTROLS_IF_TOOLTIP_3": "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok instrukcji. W przeciwnym razie, jeśli drugi warunek jest spełniony, wykonaj drugi blok instrukcji.", + "CONTROLS_IF_TOOLTIP_4": "Jeśli pierwszy warunek jest spełniony, wykonaj pierwszy blok czynności. W przeciwnym razie jeśli drugi warunek jest spełniony, wykonaj drugi blok czynności. Jeżeli żaden z warunków nie zostanie spełniony, wykonaj ostatni blok czynności.", + "CONTROLS_IF_MSG_IF": "jeśli", + "CONTROLS_IF_MSG_ELSEIF": "w przeciwnym razie, jeśli", + "CONTROLS_IF_MSG_ELSE": "w przeciwnym razie", + "CONTROLS_IF_IF_TOOLTIP": "Dodaj, usuń lub zmień kolejność czynności, żeby zmodyfikować ten klocek „jeśli”.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodaj warunek do klocka „jeśli”.", + "CONTROLS_IF_ELSE_TOOLTIP": "Dodaj ostatni zawsze prawdziwy warunek do klocka „jeśli”.", + "LOGIC_COMPARE_HELPURL": "https://pl.wikipedia.org/wiki/Nierówność", + "LOGIC_COMPARE_TOOLTIP_EQ": "Zwraca \"prawda\", jeśli wejścia są identyczne.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Zwraca \"prawda\", jeśli wejścia nie są identyczne.", + "LOGIC_COMPARE_TOOLTIP_LT": "Zwraca \"prawda\" jeśli pierwsze wejście jest mniejsze od drugiego.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Zwraca \"prawda\", jeśli pierwsze wejście jest mniejsze lub równe drugiemu.", + "LOGIC_COMPARE_TOOLTIP_GT": "Zwraca \"prawda\" jeśli pierwsze wejście jest większe od drugiego.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Zwraca \"prawda\", jeśli pierwsze wejście jest większe lub równe drugiemu.", + "LOGIC_OPERATION_TOOLTIP_AND": "Zwraca \"prawda\" jeśli na obydwóch wejściach jest \"prawda\".", + "LOGIC_OPERATION_AND": "i", + "LOGIC_OPERATION_TOOLTIP_OR": "Zwraca \"prawda\" jeśli co najmniej na jednyk wejściu jest \"prawda\".", + "LOGIC_OPERATION_OR": "lub", + "LOGIC_NEGATE_TITLE": "nie %1", + "LOGIC_NEGATE_TOOLTIP": "Zwraca \"prawda\", jeśli wejściu jest \"fałsz\". Zwraca \"fałsz\", jeśli na wejściu jest \"prawda\".", + "LOGIC_BOOLEAN_TRUE": "prawda", + "LOGIC_BOOLEAN_FALSE": "fałsz", + "LOGIC_BOOLEAN_TOOLTIP": "Zwraca 'prawda' lub 'fałsz'.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "nic", + "LOGIC_NULL_TOOLTIP": "Zwraca nic.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "jeśli prawda", + "LOGIC_TERNARY_IF_FALSE": "jeśli fałsz", + "LOGIC_TERNARY_TOOLTIP": "Sprawdź warunek w „test”. Jeśli warunek jest prawdziwy, to zwróci „jeśli prawda”; jeśli nie jest prawdziwy to zwróci „jeśli fałsz”.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Liczba.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "/", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tg", + "MATH_TRIG_ASIN": "arcsin", + "MATH_TRIG_ACOS": "arccos", + "MATH_TRIG_ATAN": "arctg", + "MATH_ARITHMETIC_HELPURL": "https://pl.wikipedia.org/wiki/Arytmetyka", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Zwróć sumę dwóch liczb.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Zwróć różnicę dwóch liczb.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Zwróć iloczyn dwóch liczb.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Zwróć iloraz dwóch liczb.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Zwróć pierwszą liczbę podniesioną do potęgi o wykładniku drugiej liczby.", + "MATH_SINGLE_HELPURL": "https://pl.wikipedia.org/wiki/Pierwiastek_kwadratowy", + "MATH_SINGLE_OP_ROOT": "pierwiastek kwadratowy", + "MATH_SINGLE_TOOLTIP_ROOT": "Zwróć pierwiastek kwadratowy danej liczby.", + "MATH_SINGLE_OP_ABSOLUTE": "wartość bezwzględna", + "MATH_SINGLE_TOOLTIP_ABS": "Zwróć wartość bezwzględną danej liczby.", + "MATH_SINGLE_TOOLTIP_NEG": "Zwróć negację danej liczby.", + "MATH_SINGLE_TOOLTIP_LN": "Zwróć logarytm naturalny danej liczby.", + "MATH_SINGLE_TOOLTIP_LOG10": "Zwraca logarytm dziesiętny danej liczby.", + "MATH_SINGLE_TOOLTIP_EXP": "Zwróć e do potęgi danej liczby.", + "MATH_SINGLE_TOOLTIP_POW10": "Zwróć 10 do potęgi danej liczby.", + "MATH_TRIG_HELPURL": "https://pl.wikipedia.org/wiki/Funkcje_trygonometryczne", + "MATH_TRIG_TOOLTIP_SIN": "Zwróć wartość sinusa o stopniu (nie w radianach).", + "MATH_TRIG_TOOLTIP_COS": "Zwróć wartość cosinusa o stopniu (nie w radianach).", + "MATH_TRIG_TOOLTIP_TAN": "Zwróć tangens o stopniu (nie w radianach).", + "MATH_TRIG_TOOLTIP_ASIN": "Zwróć arcus sinus danej liczby.", + "MATH_TRIG_TOOLTIP_ACOS": "Zwróć arcus cosinus danej liczby.", + "MATH_TRIG_TOOLTIP_ATAN": "Zwróć arcus tangens danej liczby.", + "MATH_CONSTANT_HELPURL": "https://pl.wikipedia.org/wiki/Stała_(matematyka)", + "MATH_CONSTANT_TOOLTIP": "Zwróć jedną wspólną stałą: π (3.141), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) lub ∞ (nieskończoność).", + "MATH_IS_EVEN": "jest parzysta", + "MATH_IS_ODD": "jest nieparzysta", + "MATH_IS_PRIME": "jest liczbą pierwszą", + "MATH_IS_WHOLE": "jest liczbą całkowitą", + "MATH_IS_POSITIVE": "jest dodatnia", + "MATH_IS_NEGATIVE": "jest ujemna", + "MATH_IS_DIVISIBLE_BY": "jest podzielna przez", + "MATH_IS_TOOLTIP": "Sprawdź, czy liczba jest parzysta, nieparzysta, pierwsza, całkowita, dodatnia, ujemna, lub czy jest podzielna przez podaną liczbę. Zwraca wartość \"prawda\" lub \"fałsz\".", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "zmień %1 o %2", + "MATH_CHANGE_TOOLTIP": "Dodaj liczbę do zmiennej '%1'.", + "MATH_ROUND_HELPURL": "https://pl.wikipedia.org/wiki/Zaokrąglanie", + "MATH_ROUND_TOOLTIP": "Zaokrąglij w górę lub w dół.", + "MATH_ROUND_OPERATOR_ROUND": "zaokrąglij", + "MATH_ROUND_OPERATOR_ROUNDUP": "zaokrąglij w górę", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokrąglij w dół", + "MATH_ONLIST_HELPURL": "", + "MATH_ONLIST_OPERATOR_SUM": "suma elementów listy", + "MATH_ONLIST_TOOLTIP_SUM": "Zwróć sumę wszystkich liczb z listy.", + "MATH_ONLIST_OPERATOR_MIN": "minimalna wartość z listy", + "MATH_ONLIST_TOOLTIP_MIN": "Zwróć najmniejszą liczbę w liście.", + "MATH_ONLIST_OPERATOR_MAX": "maksymalna wartość z listy", + "MATH_ONLIST_TOOLTIP_MAX": "Zwróć największą liczbę w liście.", + "MATH_ONLIST_OPERATOR_AVERAGE": "średnia elementów listy", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Zwróć średnią (średnią arytmetyczną) wartości liczbowych z listy.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana listy", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Zwróć medianę listy.", + "MATH_ONLIST_OPERATOR_MODE": "dominanty listy", + "MATH_ONLIST_TOOLTIP_MODE": "Zwróć listę najczęściej występujących elementów w liście.", + "MATH_ONLIST_OPERATOR_STD_DEV": "odchylenie standardowe listy", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Zwróć odchylenie standardowe listy.", + "MATH_ONLIST_OPERATOR_RANDOM": "losowy element z listy", + "MATH_ONLIST_TOOLTIP_RANDOM": "Zwróć losowy element z listy.", + "MATH_MODULO_HELPURL": "https://pl.wikipedia.org/wiki/Modulo", + "MATH_MODULO_TITLE": "reszta z dzielenia %1 przez %2", + "MATH_MODULO_TOOLTIP": "Zwróć resztę z dzielenia dwóch liczb przez siebie.", + "MATH_CONSTRAIN_TITLE": "ogranicz %1 z dołu %2 z góry %3", + "MATH_CONSTRAIN_TOOLTIP": "Ogranicz liczbę, aby była w określonych granicach (włącznie).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "losowa liczba całkowita od %1 do %2", + "MATH_RANDOM_INT_TOOLTIP": "Zwróć losową liczbę całkowitą w ramach dwóch wyznaczonych granic, włącznie.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "losowy ułamek", + "MATH_RANDOM_FLOAT_TOOLTIP": "Zwróć losowy ułamek między 0.0 (włącznie), a 1.0 (wyłącznie).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TOOLTIP": "Zwraca arcus tangens punktu (X, Y) w stopniach od -180 do 180.", + "TEXT_TEXT_HELPURL": "https://pl.wikipedia.org/wiki/Tekstowy_typ_danych", + "TEXT_TEXT_TOOLTIP": "Litera, wyraz lub linia tekstu.", + "TEXT_JOIN_TITLE_CREATEWITH": "utwórz tekst z", + "TEXT_JOIN_TOOLTIP": "Tworzy fragment tekstu, łącząc ze sobą dowolną liczbę tekstów.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "połącz", + "TEXT_CREATE_JOIN_TOOLTIP": "Dodaj, usuń lub zmień kolejność sekcji, aby zmodyfikować klocek tekstowy.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Dodaj element do tekstu.", + "TEXT_APPEND_TITLE": "dodaj tekst %2 do %1", + "TEXT_APPEND_TOOLTIP": "Dołącz tekst do zmiennej '%1'.", + "TEXT_LENGTH_TITLE": "długość %1", + "TEXT_LENGTH_TOOLTIP": "Zwraca liczbę liter (łącznie ze spacjami) w podanym tekście.", + "TEXT_ISEMPTY_TITLE": "%1 jest pusty", + "TEXT_ISEMPTY_TOOLTIP": "Zwraca prawda (true), jeśli podany tekst jest pusty.", + "TEXT_INDEXOF_TOOLTIP": "Zwraca indeks pierwszego/ostatniego wystąpienia pierwszego tekstu w drugim tekście. Zwraca wartość %1, jeśli tekst nie został znaleziony.", + "TEXT_INDEXOF_TITLE": "w tekście %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "znajdź pierwsze wystąpienie tekstu", + "TEXT_INDEXOF_OPERATOR_LAST": "znajdź ostatnie wystąpienie tekstu", + "TEXT_CHARAT_TITLE": "w tekście %1 %2", + "TEXT_CHARAT_FROM_START": "pobierz literę #", + "TEXT_CHARAT_FROM_END": "pobierz literę # od końca", + "TEXT_CHARAT_FIRST": "pobierz pierwszą literę", + "TEXT_CHARAT_LAST": "pobierz ostatnią literę", + "TEXT_CHARAT_RANDOM": "pobierz losową literę", + "TEXT_CHARAT_TAIL": "", + "TEXT_CHARAT_TOOLTIP": "Zwraca literę z określonej pozycji.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Zwraca określoną część tekstu.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "w tekście", + "TEXT_GET_SUBSTRING_START_FROM_START": "pobierz podciąg od # litery", + "TEXT_GET_SUBSTRING_START_FROM_END": "pobierz podciąg od # litery od końca", + "TEXT_GET_SUBSTRING_START_FIRST": "pobierz podciąg od pierwszej litery", + "TEXT_GET_SUBSTRING_END_FROM_START": "do # litery", + "TEXT_GET_SUBSTRING_END_FROM_END": "do # litery od końca", + "TEXT_GET_SUBSTRING_END_LAST": "do ostatniej litery", + "TEXT_GET_SUBSTRING_TAIL": "", + "TEXT_CHANGECASE_TOOLTIP": "Zwraca kopię tekstu z odwruconą wielkością liter.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "na WIELKIE LITERY", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "na małe litery", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "na Pierwsza Duża", + "TEXT_TRIM_TOOLTIP": "Zwraca kopię tekstu z usuniętymi spacjami z jednego lub z obu końców tekstu.", + "TEXT_TRIM_OPERATOR_BOTH": "usuń spacje po obu stronach", + "TEXT_TRIM_OPERATOR_LEFT": "usuń spacje z lewej strony", + "TEXT_TRIM_OPERATOR_RIGHT": "usuń spacje z prawej strony", + "TEXT_PRINT_TITLE": "wydrukuj %1", + "TEXT_PRINT_TOOLTIP": "Wyświetl określony tekst, liczbę lub inną wartość.", + "TEXT_PROMPT_TYPE_TEXT": "poproś o tekst z tą wiadomością", + "TEXT_PROMPT_TYPE_NUMBER": "poproś o liczbę z tą wiadomością", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Zapytaj użytkownika o liczbę.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Zapytaj użytkownika o jakiś tekst.", + "TEXT_COUNT_MESSAGE0": "policz %1 w %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Liczy ile razy dany tekst występuje w innym tekście.", + "TEXT_REPLACE_MESSAGE0": "zamień %1 na %2 w %3", + "TEXT_REPLACE_TOOLTIP": "Zastąp wszystkie wystąpienia danego tekstu innym.", + "TEXT_REVERSE_MESSAGE0": "odwróć %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Odwraca kolejność znaków w tekście.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "utwórz pustą listę", + "LISTS_CREATE_EMPTY_TOOLTIP": "Zwraca listę o długości 0, nie zawierającą danych", + "LISTS_CREATE_WITH_TOOLTIP": "Utwórz listę z dowolną ilością elementów.", + "LISTS_CREATE_WITH_INPUT_WITH": "utwórz listę z", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Dodaj, usuń lub zmień kolejność sekcji aby przekonfigurować blok tej listy.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Dodaj element do listy.", + "LISTS_REPEAT_TOOLTIP": "Tworzy listę zawierającą podaną wartość powtórzoną żądaną ilość razy.", + "LISTS_REPEAT_TITLE": "utwórz listę powtarzając %1 %2 razy.", + "LISTS_LENGTH_TITLE": "długość %1", + "LISTS_LENGTH_TOOLTIP": "Zwraca długość listy.", + "LISTS_ISEMPTY_TITLE": "%1 jest pusta", + "LISTS_ISEMPTY_TOOLTIP": "Zwraca \"prawda\" jeśli lista jest pusta.", + "LISTS_INLIST": "na liście", + "LISTS_INDEX_OF_FIRST": "znajdź pierwsze wystąpienie elementu", + "LISTS_INDEX_OF_LAST": "znajdź ostatanie wystąpienie elementu", + "LISTS_INDEX_OF_TOOLTIP": "Zwraca indeks pierwszego/ostatniego wystąpienia elementu z listy. Zwraca %1, jeśli nie zostanie znaleziony.", + "LISTS_GET_INDEX_GET": "pobierz", + "LISTS_GET_INDEX_GET_REMOVE": "zabierz", + "LISTS_GET_INDEX_REMOVE": "usuń", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# od końca", + "LISTS_GET_INDEX_FIRST": "pierwszy", + "LISTS_GET_INDEX_LAST": "ostatni", + "LISTS_GET_INDEX_RANDOM": "losowy", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 to pierwszy element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 to ostatni element.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Zwraca element z konkretnej pozycji na liście.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Zwraca pierwszy element z listy.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Zwraca ostatni element z listy.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Zwraca losowy element z listy.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Usuwa i zwraca element z określonej pozycji na liście.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Usuwa i zwraca pierwszy element z listy.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Usuwa i zwraca ostatni element z listy.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Usuwa i zwraca losowy element z listy.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Usuwa element z określonej pozycji na liście.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Usuwa pierwszy element z listy.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Usuwa ostatni element z listy.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Usuwa losowy element z listy.", + "LISTS_SET_INDEX_SET": "ustaw", + "LISTS_SET_INDEX_INSERT": "wstaw w", + "LISTS_SET_INDEX_INPUT_TO": "jako", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ustawia element w określonym miejscu na liście.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Ustawia pierwszy element na liście.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Ustawia ostatni element na liście.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Ustawia losowy element na liście.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Wstawia element na żądanej pozycji listy.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Wstawia element na początku listy.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Dodaj element na koniec listy.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Wstawia element w losowym miejscu na liście.", + "LISTS_GET_SUBLIST_START_FROM_START": "utwórz listę podrzędną z #", + "LISTS_GET_SUBLIST_START_FROM_END": "utwórz listę podrzędną z # od końca", + "LISTS_GET_SUBLIST_START_FIRST": "utwórz listę podrzędną od pierwszego", + "LISTS_GET_SUBLIST_END_FROM_START": "do #", + "LISTS_GET_SUBLIST_END_FROM_END": "do # od końca", + "LISTS_GET_SUBLIST_END_LAST": "do ostatniego", + "LISTS_GET_SUBLIST_TAIL": "", + "LISTS_GET_SUBLIST_TOOLTIP": "Tworzy kopię żądanej części listy.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sortuj %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sortuj kopię listy.", + "LISTS_SORT_ORDER_ASCENDING": "rosnąco", + "LISTS_SORT_ORDER_DESCENDING": "malejąco", + "LISTS_SORT_TYPE_NUMERIC": "numerycznie", + "LISTS_SORT_TYPE_TEXT": "alfabetycznie", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetycznie, ignoruj wielkość liter", + "LISTS_SPLIT_LIST_FROM_TEXT": "utwórz listę z tekstu", + "LISTS_SPLIT_TEXT_FROM_LIST": "utwórz tekst z listy", + "LISTS_SPLIT_WITH_DELIMITER": "z separatorem", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Rozdziela tekst zgodnie z separatorem tworząc listę z powstałych elementów.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Łączy listę tekstów w jeden tekst, rozdzielany separatorem.", + "LISTS_REVERSE_MESSAGE0": "odwróć %1", + "LISTS_REVERSE_TOOLTIP": "Odwraca kolejność danych w kopii listy.", + "ORDINAL_NUMBER_SUFFIX": "", + "VARIABLES_GET_TOOLTIP": "Zwraca wartość tej zmiennej.", + "VARIABLES_GET_CREATE_SET": "Utwórz klocek 'ustaw %1'", + "VARIABLES_SET": "przypisz %1 wartość %2", + "VARIABLES_SET_TOOLTIP": "Wartości zmiennej i wejście będą identyczne.", + "VARIABLES_SET_CREATE_GET": "Utwórz klocek 'pobierz %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "do", + "PROCEDURES_DEFNORETURN_PROCEDURE": "zrób coś", + "PROCEDURES_BEFORE_PARAMS": "z:", + "PROCEDURES_CALL_BEFORE_PARAMS": "z:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Tworzy funkcję nie posiadającą wyjścia.", + "PROCEDURES_DEFNORETURN_COMMENT": "Opisz tę funkcję...", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFRETURN_RETURN": "zwróć", + "PROCEDURES_DEFRETURN_TOOLTIP": "Tworzy funkcję posiadającą wyjście.", + "PROCEDURES_ALLOW_STATEMENTS": "zezwól na czynności", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Uwaga: Ta funkcja ma powtórzone parametry.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://pl.wikipedia.org/wiki/Podprogram", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Uruchom zdefiniowaną przez użytkownika funkcję '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://pl.wikipedia.org/wiki/Podprogram", + "PROCEDURES_CALLRETURN_TOOLTIP": "Uruchom zdefiniowaną przez użytkownika funkcję '%1' i użyj jej wyjścia.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "wejścia", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Dodaj, usuń lub zmień kolejność wejść tej funkcji.", + "PROCEDURES_MUTATORARG_TITLE": "nazwa wejścia:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Dodaj wejście do funkcji.", + "PROCEDURES_HIGHLIGHT_DEF": "Podświetl definicję funkcji", + "PROCEDURES_CREATE_DO": "Utwórz '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Jeśli warunek jest spełniony zwróć drugą wartość.", + "PROCEDURES_IFRETURN_WARNING": "Uwaga: Ten klocek może być używany tylko w definicji funkcji.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Powiedz coś...", + "COLLAPSED_WARNINGS_WARNING": "Zwinięte bloki zawierają ostrzeżenia.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Anuluj" +} diff --git a/msg/json/pms.json b/msg/json/pms.json index f48080d1709..051b5f549e0 100644 --- a/msg/json/pms.json +++ b/msg/json/pms.json @@ -1,341 +1,341 @@ -{ - "@metadata": { - "authors": [ - "Borichèt" - ] - }, - "VARIABLES_DEFAULT_NAME": "element", - "UNNAMED_KEY": "anònim", - "TODAY": "Ancheuj", - "DUPLICATE_BLOCK": "Dupliché", - "ADD_COMMENT": "Gionté un coment", - "REMOVE_COMMENT": "Scancelé un coment", - "DUPLICATE_COMMENT": "Dupliché ël coment", - "EXTERNAL_INPUTS": "Imission esterne", - "INLINE_INPUTS": "Imission an linia", - "DELETE_BLOCK": "Scancelé ël blòch", - "DELETE_X_BLOCKS": "Scancelé %1 blòch", - "DELETE_ALL_BLOCKS": "Scancelé tuti ij %1 blòch?", - "CLEAN_UP": "Dëscancelé ij blòch", - "COLLAPSE_BLOCK": "Arduve ël blòch", - "COLLAPSE_ALL": "Arduve ij blòch", - "EXPAND_BLOCK": "Dësvlupé ël blòch", - "EXPAND_ALL": "Dësvlupé ij blòch", - "DISABLE_BLOCK": "Disativé ël blòch", - "ENABLE_BLOCK": "Ativé ël blòch", - "HELP": "Agiut", - "UNDO": "Anulé", - "REDO": "Fé torna", - "CHANGE_VALUE_TITLE": "Modifiché ël valor:", - "RENAME_VARIABLE": "Arnomé la variàbil...", - "RENAME_VARIABLE_TITLE": "Arnomé tute le variàbij '%1' 'me:", - "NEW_VARIABLE": "Creé na variàbil...", - "NEW_STRING_VARIABLE": "Creé na variàbil dë stringa...", - "NEW_NUMBER_VARIABLE": "Creé na variàbil numérica...", - "NEW_COLOUR_VARIABLE": "Creé na variàbil ëd color...", - "NEW_VARIABLE_TYPE_TITLE": "Neuva sòrt ëd variàbil:", - "NEW_VARIABLE_TITLE": "Nòm ëd la neuva variàbil:", - "VARIABLE_ALREADY_EXISTS": "Na variàbil con ël nòm '%1' a esist già.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Na variàbil ciamà '%1' a esist già për n'àutra sòrt: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Eliminé %1 utilisassion ëd la variàbil '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "As peul nen eliminesse la variàbil '%1' përchè a l'é part ëd la definission dla fonsion '%2'", - "DELETE_VARIABLE": "Eliminé la variàbil '%1'", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Serne un color ant la taulòssa.", - "COLOUR_RANDOM_TITLE": "color a asar", - "COLOUR_RANDOM_TOOLTIP": "Serne un color a asar.", - "COLOUR_RGB_TITLE": "coloré con", - "COLOUR_RGB_RED": "ross", - "COLOUR_RGB_GREEN": "verd", - "COLOUR_RGB_BLUE": "bleu", - "COLOUR_RGB_TOOLTIP": "Creé un color con la quantità spessificà ëd ross, verd e bleu. Tuti ij valor a devo esse antra 0 e 100.", - "COLOUR_BLEND_TITLE": "mës-cé", - "COLOUR_BLEND_COLOUR1": "color 1", - "COLOUR_BLEND_COLOUR2": "color 2", - "COLOUR_BLEND_RATIO": "rapòrt", - "COLOUR_BLEND_TOOLTIP": "A mës-cia doi color ansema con un rapòrt dàit (0,0 - 1,0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "arpete %1 vire", - "CONTROLS_REPEAT_INPUT_DO": "fé", - "CONTROLS_REPEAT_TOOLTIP": "Eseguì chèiche anstrussion vàire vire.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "arpete antramentre che", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "arpete fin-a a", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Cand un valor a l'é ver, eseguì chèiche anstrussion.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Cand un valor a l'é fàuss, eseguì chèiche anstrussion.", - "CONTROLS_FOR_TOOLTIP": "Fé an manera che la variàbil \"%1\" a pija ij valor dal nùmer inissial fin-a al nùmer final, an contand për l'antërval ëspessificà, e eseguì ij bloch ëspessificà.", - "CONTROLS_FOR_TITLE": "conté con %1 da %2 a %3 për %4", - "CONTROLS_FOREACH_TITLE": "për minca n'element %1 ant la lista %2", - "CONTROLS_FOREACH_TOOLTIP": "Për minca element an na lista, dé ël valor ëd l'element a la variàbil '%1', peui eseguì chèiche anstrussion.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "seurte da la liassa", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continué con l'iterassion sucessiva dla liassa", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Seurte da la liassa anglobanta.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sauté ël rest ëd sa liassa, e continué con l'iterassion apress.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Atension: Ës blòch a peul mach esse dovrà andrinta a na liassa.", - "CONTROLS_IF_TOOLTIP_1": "Si un valor a l'é ver, antlora eseguì chèiche anstrussion.", - "CONTROLS_IF_TOOLTIP_2": "Si un valor a l'é ver, antlora eseguì ël prim blòch d'anstrussion. Dësnò, eseguì ël second blòch d'anstrussion.", - "CONTROLS_IF_TOOLTIP_3": "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòch d'anstrussion.", - "CONTROLS_IF_TOOLTIP_4": "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòcj d'anstrussion. Si gnun dij valor a l'é ver, fé andé l'ùltim blòch d'anstrussion.", - "CONTROLS_IF_MSG_IF": "si", - "CONTROLS_IF_MSG_ELSEIF": "dësnò si", - "CONTROLS_IF_MSG_ELSE": "dësnò", - "CONTROLS_IF_IF_TOOLTIP": "Gionté, gavé o riordiné le session për cinfiguré torna ës blòch si.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Gionté na condission al blòch si.", - "CONTROLS_IF_ELSE_TOOLTIP": "Gionté na condission final ch'a cheuj tut al blòch si.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Rësponde ver si le doe imission a son uguaj.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Rësponde ver si le doe imission a son nen uguaj.", - "LOGIC_COMPARE_TOOLTIP_LT": "Rësponde ver si la prima imission a l'é pi cita dla sconda.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Rësponde ver si la prima imission a l'é pi cita o ugual a la sconda.", - "LOGIC_COMPARE_TOOLTIP_GT": "Rësponde ver si la prima imission a l'é pi granda che la sconda.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Rësponde ver si la prima imission a l'é pi granda o ugual a la sconda.", - "LOGIC_OPERATION_TOOLTIP_AND": "Rësponde ver se tute doe j'imission a son vere.", - "LOGIC_OPERATION_AND": "e", - "LOGIC_OPERATION_TOOLTIP_OR": "Rësponde ver se almanch un-a d'imission a l'é vera.", - "LOGIC_OPERATION_OR": "o", - "LOGIC_NEGATE_TITLE": "nen %1", - "LOGIC_NEGATE_TOOLTIP": "A rëspond ver se l'imission a l'é fàussa. A rëspond fàuss se l'imission a l'é vera.", - "LOGIC_BOOLEAN_TRUE": "ver", - "LOGIC_BOOLEAN_FALSE": "fàuss", - "LOGIC_BOOLEAN_TOOLTIP": "A rëspond ver o fàuss.", - "LOGIC_NULL": "gnente", - "LOGIC_NULL_TOOLTIP": "A rëspond gnente.", - "LOGIC_TERNARY_CONDITION": "preuva", - "LOGIC_TERNARY_IF_TRUE": "se ver", - "LOGIC_TERNARY_IF_FALSE": "se fàuss", - "LOGIC_TERNARY_TOOLTIP": "Controlé la condission an 'preuva'. Se la condission a l'é vera, a rëspond con ël valor 'se ver'; dësnò a rëspond con ël valor 'se fàuss'.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Un nùmer.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "A smon la soma ëd doi nùmer.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "A smon la diferensa dij doi nùmer.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "A smon ël prodot dij doi nùmer.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "A smon ël cossient dij doi nùmer.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "A smon ël prim nùmer alvà a la potensa dël second.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "rèis quadra", - "MATH_SINGLE_TOOLTIP_ROOT": "A smon la rèis quadra d'un nùmer.", - "MATH_SINGLE_OP_ABSOLUTE": "assolù", - "MATH_SINGLE_TOOLTIP_ABS": "A smon ël valor assolù d'un nùmer.", - "MATH_SINGLE_TOOLTIP_NEG": "A smon l'opòst d'un nùmer.", - "MATH_SINGLE_TOOLTIP_LN": "A smon ël logaritm natural d'un nùmer.", - "MATH_SINGLE_TOOLTIP_LOG10": "A smon ël logaritm an base 10 d'un nùmer.", - "MATH_SINGLE_TOOLTIP_EXP": "A smon e a la potensa d'un nùmer.", - "MATH_SINGLE_TOOLTIP_POW10": "A smon 10 a la potensa d'un nùmer.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "A smon ël sen ëd n'àngol an gré (pa an radiant).", - "MATH_TRIG_TOOLTIP_COS": "A smon ël cosen ëd n'àngol an gré (pa an radiant).", - "MATH_TRIG_TOOLTIP_TAN": "A smon la tangenta ëd n'àngol an gré (pa an radiant).", - "MATH_TRIG_TOOLTIP_ASIN": "A smon l'arch-sen d'un nùmer.", - "MATH_TRIG_TOOLTIP_ACOS": "A smon l'arch-cosen d'un nùmer.", - "MATH_TRIG_TOOLTIP_ATAN": "A smon l'arch-tangenta d'un nùmer.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "A smon un-a dle costante comun-e π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinì).", - "MATH_IS_EVEN": "a l'é cobi", - "MATH_IS_ODD": "a l'é dëscobi", - "MATH_IS_PRIME": "a l'é prim", - "MATH_IS_WHOLE": "a l'é antregh", - "MATH_IS_POSITIVE": "a l'é positiv", - "MATH_IS_NEGATIVE": "a l'é negativ", - "MATH_IS_DIVISIBLE_BY": "a l'é divisìbil për", - "MATH_IS_TOOLTIP": "A contròla si un nùmer a l'é cobi, dëscobi, prim, antreghm positiv, negativ, o s'a l'é divisìbil për un nùmer dàit. A rëspond ver o fàuss.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "ancrementé %1 për %2", - "MATH_CHANGE_TOOLTIP": "Gionté un nùmer a la variàbil '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "A arionda un nùmer për difet o ecess.", - "MATH_ROUND_OPERATOR_ROUND": "ariondé", - "MATH_ROUND_OPERATOR_ROUNDUP": "ariondé për ecess", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "ariondé për difet", - "MATH_ONLIST_OPERATOR_SUM": "soma dla lista", - "MATH_ONLIST_TOOLTIP_SUM": "A smon la soma ëd tuti ij nùmer ant la lista.", - "MATH_ONLIST_OPERATOR_MIN": "mìnim ëd la lista", - "MATH_ONLIST_TOOLTIP_MIN": "A smon ël pi cit nùmer ëd la lista.", - "MATH_ONLIST_OPERATOR_MAX": "màssim ëd la lista", - "MATH_ONLIST_TOOLTIP_MAX": "A smon ël pi gròss nùmer ëd la lista.", - "MATH_ONLIST_OPERATOR_AVERAGE": "media dla lista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "A smon la media (aritmética) dij valor numérich ant la lista.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mesan-a dla lista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "A smon ël nùmer mesan ëd la lista.", - "MATH_ONLIST_OPERATOR_MODE": "mòde dla lista", - "MATH_ONLIST_TOOLTIP_MODE": "A smon na lista dj'element pi frequent ëd la lista.", - "MATH_ONLIST_OPERATOR_STD_DEV": "deviassion ëstàndard ëd la lista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "A smon la deviassion ëstàndard ëd la lista.", - "MATH_ONLIST_OPERATOR_RANDOM": "element a l'ancàpit ëd la lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "A smon n'element a l'ancàpit da la lista.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "resta ëd %1:%2", - "MATH_MODULO_TOOLTIP": "A smon la resta ëd la division dij doi nùmer.", - "MATH_CONSTRAIN_TITLE": "limité %1 antra %2 e %3", - "MATH_CONSTRAIN_TOOLTIP": "Limité un nùmer a esse antra le limitassion ëspessificà (comprèise).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "antregh aleatòri antra %1 e %2", - "MATH_RANDOM_INT_TOOLTIP": "A smon n'antregh aleatòri antra ij doi lìmit ëspessificà, comprèis.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "frassion aleatòria", - "MATH_RANDOM_FLOAT_TOOLTIP": "A smon na frassion aleatòria antra 0,0 (comprèis) e 1,0 (esclus).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 ëd X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "A rëspond con l'arch-tangent dël pont (X, Y) an gre da -180 a 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Na litra, na paròla o na linia ëd test.", - "TEXT_JOIN_TITLE_CREATEWITH": "creé ël test con", - "TEXT_JOIN_TOOLTIP": "Creé un tòch ëd test an gionzend un nùmer qualsëssìa d'element.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "gionze", - "TEXT_CREATE_JOIN_TOOLTIP": "Gionté, gavé o riordiné le session për configuré torna ës blòch ëd test.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Gionté n'element al test.", - "TEXT_APPEND_TITLE": "a %1 taché ël test %2", - "TEXT_APPEND_TOOLTIP": "Taché dël test a la variàbil '%1'.", - "TEXT_LENGTH_TITLE": "longheur ëd %1", - "TEXT_LENGTH_TOOLTIP": "A smon ël nùmer ëd litre (spassi comprèis) ant ël test fornì.", - "TEXT_ISEMPTY_TITLE": "%1 a l'é veuid", - "TEXT_ISEMPTY_TOOLTIP": "A smon ver se ël test fornì a l'é veuid.", - "TEXT_INDEXOF_TOOLTIP": "A smon l'ìndes dla prima/ùltima ocorensa dël prim test ant ël second test. A smon %1 se ël test a l'é nen trovà.", - "TEXT_INDEXOF_TITLE": "ant ël test %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "trové la prima ocorensa dël test", - "TEXT_INDEXOF_OPERATOR_LAST": "trové l'ùltima ocorensa dël test", - "TEXT_CHARAT_TITLE": "ant ël test %1 %2", - "TEXT_CHARAT_FROM_START": "oten-e la litra #", - "TEXT_CHARAT_FROM_END": "oten-e la litra # da la fin", - "TEXT_CHARAT_FIRST": "oten-e la prima litra", - "TEXT_CHARAT_LAST": "oten-e l'ùltima litra", - "TEXT_CHARAT_RANDOM": "oten-e na litra a l'ancàpit", - "TEXT_CHARAT_TOOLTIP": "A smon la litra ant la posission ëspessificà.", - "TEXT_GET_SUBSTRING_TOOLTIP": "A smon un tòch ëspessificà dël test.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ant ël test", - "TEXT_GET_SUBSTRING_START_FROM_START": "oten-e la sota-stringa da la litra #", - "TEXT_GET_SUBSTRING_START_FROM_END": "oten-e la sota-stringa da la litra # da la fin", - "TEXT_GET_SUBSTRING_START_FIRST": "oten-e la sota-stringa da la prima litra", - "TEXT_GET_SUBSTRING_END_FROM_START": "fin-a a la litra #", - "TEXT_GET_SUBSTRING_END_FROM_END": "fin-a a la litra # da la fin", - "TEXT_GET_SUBSTRING_END_LAST": "fin-a a l'ùltima litra", - "TEXT_CHANGECASE_TOOLTIP": "A smon na còpia dël test ant un caràter diferent.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "an MAJÙSCOL", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "an minùscul", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "an Majùscol A L'Ancamin Ëd Minca Paròla", - "TEXT_TRIM_TOOLTIP": "A smon na còpia dël test con jë spassi gavà da n'estremità o da tute doe.", - "TEXT_TRIM_OPERATOR_BOTH": "gavé jë spassi da le doe bande ëd", - "TEXT_TRIM_OPERATOR_LEFT": "gavé jë spassi da la banda snistra ëd", - "TEXT_TRIM_OPERATOR_RIGHT": "gavé jë spassi da la banda drita ëd", - "TEXT_PRINT_TITLE": "smon-e %1", - "TEXT_PRINT_TOOLTIP": "Smon-e ël test, ël nùmer o n'àutr valor ëspessificà.", - "TEXT_PROMPT_TYPE_TEXT": "anvit për un test con un mëssagi", - "TEXT_PROMPT_TYPE_NUMBER": "anvit për un nùmer con un mëssagi", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Ciamé un nùmer a l'utent.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Ciamé un test a l'utent.", - "TEXT_COUNT_MESSAGE0": "nùmer %1 su %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Conté vàire vire un test dàit a compariss an n'àutr test.", - "TEXT_REPLACE_MESSAGE0": "rampiassé %1 con %2 an %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Rampiassé tute j'ocorense d'un test con n'àutr.", - "TEXT_REVERSE_MESSAGE0": "Anversé %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Anversé l'òrdin dij caràter ant ël test.", - "LISTS_CREATE_EMPTY_TITLE": "creé na lista veuida", - "LISTS_CREATE_EMPTY_TOOLTIP": "Smon-e na lista, ëd longheur 0, ch'a conten gnun-a argistrassion", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Creé na lista con un nùmer qualsëssìa d'element.", - "LISTS_CREATE_WITH_INPUT_WITH": "creé na lista con", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Gionté, gavé o riordiné le session për configuré torna cost blòch ëd lista.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Gionté n'element a la lista.", - "LISTS_REPEAT_TOOLTIP": "A crea na lista ch'a consist dël valor dàit arpetù ël nùmer ëspessificà ëd vire.", - "LISTS_REPEAT_TITLE": "creé na lista con l'element %1 arpetù %2 vire", - "LISTS_LENGTH_TITLE": "longheur ëd %1", - "LISTS_LENGTH_TOOLTIP": "A smon la longheur ¨d na lista.", - "LISTS_ISEMPTY_TITLE": "%1 a l'é veuid", - "LISTS_ISEMPTY_TOOLTIP": "A smon ver se la lista a l'é veuida.", - "LISTS_INLIST": "ant la lista", - "LISTS_INDEX_OF_FIRST": "trové la prima ocorensa dl'element", - "LISTS_INDEX_OF_LAST": "trové l'ùltima ocorensa dl'element", - "LISTS_INDEX_OF_TOOLTIP": "A smon l'ìndes ëd la prima/ùltima ocorensa dl'element ant la lista. A smon %1 se l'element a l'é nen trovà.", - "LISTS_GET_INDEX_GET": "oten-e", - "LISTS_GET_INDEX_GET_REMOVE": "oten-e e eliminé", - "LISTS_GET_INDEX_REMOVE": "eliminé", - "LISTS_GET_INDEX_FROM_END": "# da la fin", - "LISTS_GET_INDEX_FIRST": "prim", - "LISTS_GET_INDEX_LAST": "ùltim", - "LISTS_GET_INDEX_RANDOM": "a l'ancàpit", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 a l'é ël prim element.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 a l'é l'ùltim element.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "A smon l'element a la posission ëspessificà an na lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "A smon ël prim element an na lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "A smon l'ùltim element an na lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "A smon n'element a l'ancàpit an na lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "A gava e a smon l'element a la posission ëspessificà an na lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "A gava e a smon ël prim element an na lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "A gava e a smon l'ùltim element an na lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "A gava e a smon n'element a l'ancàpit an na lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "A gava l'element a la posission ëspessificà an na lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "A gava ël prim element an na lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "A gava l'ùltim element an na lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "A gava n'element a l'ancàpit da na lista.", - "LISTS_SET_INDEX_SET": "buté", - "LISTS_SET_INDEX_INSERT": "anserì an", - "LISTS_SET_INDEX_INPUT_TO": "tanme", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "A fissa l'element a la posission ëspessificà an na lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "A fissa ël prim element an na lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "A fissa l'ùltim element an na lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "A fissa n'element a l'ancàpit an na lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "A anseriss l'element a la posission ëspessificà an na lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "A anseriss l'element al prinsipi ëd na lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Gionté l'element a la fin ëd na lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "A anseriss l'element a l'ancàpit an na lista.", - "LISTS_GET_SUBLIST_START_FROM_START": "oten-e la sot-lista da #", - "LISTS_GET_SUBLIST_START_FROM_END": "oten-e la sot-lista da # da la fin", - "LISTS_GET_SUBLIST_START_FIRST": "oten-e la sot-lista dal prim", - "LISTS_GET_SUBLIST_END_FROM_START": "fin-a a #", - "LISTS_GET_SUBLIST_END_FROM_END": "fin-a a # da la fin", - "LISTS_GET_SUBLIST_END_LAST": "fin-a a l'ùltim", - "LISTS_GET_SUBLIST_TOOLTIP": "A crea na còpia dël tòch ëspessificà ëd na lista.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "ordiné %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Ordiné na còpia ëd na lista.", - "LISTS_SORT_ORDER_ASCENDING": "chërsent", - "LISTS_SORT_ORDER_DESCENDING": "calant", - "LISTS_SORT_TYPE_NUMERIC": "numérich", - "LISTS_SORT_TYPE_TEXT": "alfabétich", - "LISTS_SORT_TYPE_IGNORECASE": "alfabétich, ignorand ël caràter minùscol o majùscol", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "fé na lista da 'n test", - "LISTS_SPLIT_TEXT_FROM_LIST": "fé 'n test da na lista", - "LISTS_SPLIT_WITH_DELIMITER": "con ël separator", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Divide un test an na lista ëd test, tajand a minca 'n separator.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Gionze na lista ëd test ant un test sol, separandje con un separator.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "anversé %1", - "LISTS_REVERSE_TOOLTIP": "Anversé na còpia ëd na lista", - "VARIABLES_GET_TOOLTIP": "A smon ël valor ëd sa variàbil.", - "VARIABLES_GET_CREATE_SET": "Creé 'fissé %1'", - "VARIABLES_SET": "fissé %1 a %2", - "VARIABLES_SET_TOOLTIP": "Fissé costa variàbil ugual al valor d'imission.", - "VARIABLES_SET_CREATE_GET": "Creé 'oten-e %1'", - "PROCEDURES_DEFNORETURN_TITLE": "a", - "PROCEDURES_DEFNORETURN_PROCEDURE": "fé cheicòs", - "PROCEDURES_BEFORE_PARAMS": "con:", - "PROCEDURES_CALL_BEFORE_PARAMS": "con:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "A crea na fonsion sensa surtìa.", - "PROCEDURES_DEFNORETURN_COMMENT": "Descrive sa fonsion...", - "PROCEDURES_DEFRETURN_RETURN": "artorn", - "PROCEDURES_DEFRETURN_TOOLTIP": "A crea na fonsion con na surtìa.", - "PROCEDURES_ALLOW_STATEMENTS": "përmëtte le diciairassion", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Atension: Costa fonsion a l'ha dij paràmeter duplicà.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Eseguì la fonsion '%1' definìa da l'utent.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Eseguì la fonsion '%1' definìa da l'utent e dovré sò arzultà.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "imission", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Gionté, gavé o riordiné j'imission ëd sa fonsion.", - "PROCEDURES_MUTATORARG_TITLE": "nòm ëd l'imission:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Gionté n'imission a la fonsion.", - "PROCEDURES_HIGHLIGHT_DEF": "Sot-ligné la definission dla fonsion", - "PROCEDURES_CREATE_DO": "Creé '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Se un valor a l'é ver, antlora smon-e un second valor.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Atension: Ës blòch a podria esse dovrà mach an na definission ëd fonsion.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Dì cheicòs...", - "WORKSPACE_ARIA_LABEL": "Spassi ëd travaj ëd Blockly", - "COLLAPSED_WARNINGS_WARNING": "Ij blòch sarà a conten-o dj'avertense.", - "DIALOG_OK": "Va bin", - "DIALOG_CANCEL": "Anulé" -} +{ + "@metadata": { + "authors": [ + "Borichèt" + ] + }, + "VARIABLES_DEFAULT_NAME": "element", + "UNNAMED_KEY": "anònim", + "TODAY": "Ancheuj", + "DUPLICATE_BLOCK": "Dupliché", + "ADD_COMMENT": "Gionté un coment", + "REMOVE_COMMENT": "Scancelé un coment", + "DUPLICATE_COMMENT": "Dupliché ël coment", + "EXTERNAL_INPUTS": "Imission esterne", + "INLINE_INPUTS": "Imission an linia", + "DELETE_BLOCK": "Scancelé ël blòch", + "DELETE_X_BLOCKS": "Scancelé %1 blòch", + "DELETE_ALL_BLOCKS": "Scancelé tuti ij %1 blòch?", + "CLEAN_UP": "Dëscancelé ij blòch", + "COLLAPSE_BLOCK": "Arduve ël blòch", + "COLLAPSE_ALL": "Arduve ij blòch", + "EXPAND_BLOCK": "Dësvlupé ël blòch", + "EXPAND_ALL": "Dësvlupé ij blòch", + "DISABLE_BLOCK": "Disativé ël blòch", + "ENABLE_BLOCK": "Ativé ël blòch", + "HELP": "Agiut", + "UNDO": "Anulé", + "REDO": "Fé torna", + "CHANGE_VALUE_TITLE": "Modifiché ël valor:", + "RENAME_VARIABLE": "Arnomé la variàbil...", + "RENAME_VARIABLE_TITLE": "Arnomé tute le variàbij '%1' 'me:", + "NEW_VARIABLE": "Creé na variàbil...", + "NEW_STRING_VARIABLE": "Creé na variàbil dë stringa...", + "NEW_NUMBER_VARIABLE": "Creé na variàbil numérica...", + "NEW_COLOUR_VARIABLE": "Creé na variàbil ëd color...", + "NEW_VARIABLE_TYPE_TITLE": "Neuva sòrt ëd variàbil:", + "NEW_VARIABLE_TITLE": "Nòm ëd la neuva variàbil:", + "VARIABLE_ALREADY_EXISTS": "Na variàbil con ël nòm '%1' a esist già.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Na variàbil ciamà '%1' a esist già për n'àutra sòrt: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Eliminé %1 utilisassion ëd la variàbil '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "As peul nen eliminesse la variàbil '%1' përchè a l'é part ëd la definission dla fonsion '%2'", + "DELETE_VARIABLE": "Eliminé la variàbil '%1'", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Serne un color ant la taulòssa.", + "COLOUR_RANDOM_TITLE": "color a asar", + "COLOUR_RANDOM_TOOLTIP": "Serne un color a asar.", + "COLOUR_RGB_TITLE": "coloré con", + "COLOUR_RGB_RED": "ross", + "COLOUR_RGB_GREEN": "verd", + "COLOUR_RGB_BLUE": "bleu", + "COLOUR_RGB_TOOLTIP": "Creé un color con la quantità spessificà ëd ross, verd e bleu. Tuti ij valor a devo esse antra 0 e 100.", + "COLOUR_BLEND_TITLE": "mës-cé", + "COLOUR_BLEND_COLOUR1": "color 1", + "COLOUR_BLEND_COLOUR2": "color 2", + "COLOUR_BLEND_RATIO": "rapòrt", + "COLOUR_BLEND_TOOLTIP": "A mës-cia doi color ansema con un rapòrt dàit (0,0 - 1,0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "arpete %1 vire", + "CONTROLS_REPEAT_INPUT_DO": "fé", + "CONTROLS_REPEAT_TOOLTIP": "Eseguì chèiche anstrussion vàire vire.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "arpete antramentre che", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "arpete fin-a a", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Cand un valor a l'é ver, eseguì chèiche anstrussion.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Cand un valor a l'é fàuss, eseguì chèiche anstrussion.", + "CONTROLS_FOR_TOOLTIP": "Fé an manera che la variàbil \"%1\" a pija ij valor dal nùmer inissial fin-a al nùmer final, an contand për l'antërval ëspessificà, e eseguì ij bloch ëspessificà.", + "CONTROLS_FOR_TITLE": "conté con %1 da %2 a %3 për %4", + "CONTROLS_FOREACH_TITLE": "për minca n'element %1 ant la lista %2", + "CONTROLS_FOREACH_TOOLTIP": "Për minca element an na lista, dé ël valor ëd l'element a la variàbil '%1', peui eseguì chèiche anstrussion.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "seurte da la liassa", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continué con l'iterassion sucessiva dla liassa", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Seurte da la liassa anglobanta.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sauté ël rest ëd sa liassa, e continué con l'iterassion apress.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Atension: Ës blòch a peul mach esse dovrà andrinta a na liassa.", + "CONTROLS_IF_TOOLTIP_1": "Si un valor a l'é ver, antlora eseguì chèiche anstrussion.", + "CONTROLS_IF_TOOLTIP_2": "Si un valor a l'é ver, antlora eseguì ël prim blòch d'anstrussion. Dësnò, eseguì ël second blòch d'anstrussion.", + "CONTROLS_IF_TOOLTIP_3": "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòch d'anstrussion.", + "CONTROLS_IF_TOOLTIP_4": "Si ël prim valor a l'é ver, antlora fé andé ël prim blòch d'anstrussion. Dësnò, si ël second valor a l'é ver, fé andé ël second blòcj d'anstrussion. Si gnun dij valor a l'é ver, fé andé l'ùltim blòch d'anstrussion.", + "CONTROLS_IF_MSG_IF": "si", + "CONTROLS_IF_MSG_ELSEIF": "dësnò si", + "CONTROLS_IF_MSG_ELSE": "dësnò", + "CONTROLS_IF_IF_TOOLTIP": "Gionté, gavé o riordiné le session për cinfiguré torna ës blòch si.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Gionté na condission al blòch si.", + "CONTROLS_IF_ELSE_TOOLTIP": "Gionté na condission final ch'a cheuj tut al blòch si.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Rësponde ver si le doe imission a son uguaj.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Rësponde ver si le doe imission a son nen uguaj.", + "LOGIC_COMPARE_TOOLTIP_LT": "Rësponde ver si la prima imission a l'é pi cita dla sconda.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Rësponde ver si la prima imission a l'é pi cita o ugual a la sconda.", + "LOGIC_COMPARE_TOOLTIP_GT": "Rësponde ver si la prima imission a l'é pi granda che la sconda.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Rësponde ver si la prima imission a l'é pi granda o ugual a la sconda.", + "LOGIC_OPERATION_TOOLTIP_AND": "Rësponde ver se tute doe j'imission a son vere.", + "LOGIC_OPERATION_AND": "e", + "LOGIC_OPERATION_TOOLTIP_OR": "Rësponde ver se almanch un-a d'imission a l'é vera.", + "LOGIC_OPERATION_OR": "o", + "LOGIC_NEGATE_TITLE": "nen %1", + "LOGIC_NEGATE_TOOLTIP": "A rëspond ver se l'imission a l'é fàussa. A rëspond fàuss se l'imission a l'é vera.", + "LOGIC_BOOLEAN_TRUE": "ver", + "LOGIC_BOOLEAN_FALSE": "fàuss", + "LOGIC_BOOLEAN_TOOLTIP": "A rëspond ver o fàuss.", + "LOGIC_NULL": "gnente", + "LOGIC_NULL_TOOLTIP": "A rëspond gnente.", + "LOGIC_TERNARY_CONDITION": "preuva", + "LOGIC_TERNARY_IF_TRUE": "se ver", + "LOGIC_TERNARY_IF_FALSE": "se fàuss", + "LOGIC_TERNARY_TOOLTIP": "Controlé la condission an 'preuva'. Se la condission a l'é vera, a rëspond con ël valor 'se ver'; dësnò a rëspond con ël valor 'se fàuss'.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Un nùmer.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "A smon la soma ëd doi nùmer.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "A smon la diferensa dij doi nùmer.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "A smon ël prodot dij doi nùmer.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "A smon ël cossient dij doi nùmer.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "A smon ël prim nùmer alvà a la potensa dël second.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "rèis quadra", + "MATH_SINGLE_TOOLTIP_ROOT": "A smon la rèis quadra d'un nùmer.", + "MATH_SINGLE_OP_ABSOLUTE": "assolù", + "MATH_SINGLE_TOOLTIP_ABS": "A smon ël valor assolù d'un nùmer.", + "MATH_SINGLE_TOOLTIP_NEG": "A smon l'opòst d'un nùmer.", + "MATH_SINGLE_TOOLTIP_LN": "A smon ël logaritm natural d'un nùmer.", + "MATH_SINGLE_TOOLTIP_LOG10": "A smon ël logaritm an base 10 d'un nùmer.", + "MATH_SINGLE_TOOLTIP_EXP": "A smon e a la potensa d'un nùmer.", + "MATH_SINGLE_TOOLTIP_POW10": "A smon 10 a la potensa d'un nùmer.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "A smon ël sen ëd n'àngol an gré (pa an radiant).", + "MATH_TRIG_TOOLTIP_COS": "A smon ël cosen ëd n'àngol an gré (pa an radiant).", + "MATH_TRIG_TOOLTIP_TAN": "A smon la tangenta ëd n'àngol an gré (pa an radiant).", + "MATH_TRIG_TOOLTIP_ASIN": "A smon l'arch-sen d'un nùmer.", + "MATH_TRIG_TOOLTIP_ACOS": "A smon l'arch-cosen d'un nùmer.", + "MATH_TRIG_TOOLTIP_ATAN": "A smon l'arch-tangenta d'un nùmer.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "A smon un-a dle costante comun-e π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) o ∞ (infinì).", + "MATH_IS_EVEN": "a l'é cobi", + "MATH_IS_ODD": "a l'é dëscobi", + "MATH_IS_PRIME": "a l'é prim", + "MATH_IS_WHOLE": "a l'é antregh", + "MATH_IS_POSITIVE": "a l'é positiv", + "MATH_IS_NEGATIVE": "a l'é negativ", + "MATH_IS_DIVISIBLE_BY": "a l'é divisìbil për", + "MATH_IS_TOOLTIP": "A contròla si un nùmer a l'é cobi, dëscobi, prim, antreghm positiv, negativ, o s'a l'é divisìbil për un nùmer dàit. A rëspond ver o fàuss.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "ancrementé %1 për %2", + "MATH_CHANGE_TOOLTIP": "Gionté un nùmer a la variàbil '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "A arionda un nùmer për difet o ecess.", + "MATH_ROUND_OPERATOR_ROUND": "ariondé", + "MATH_ROUND_OPERATOR_ROUNDUP": "ariondé për ecess", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "ariondé për difet", + "MATH_ONLIST_OPERATOR_SUM": "soma dla lista", + "MATH_ONLIST_TOOLTIP_SUM": "A smon la soma ëd tuti ij nùmer ant la lista.", + "MATH_ONLIST_OPERATOR_MIN": "mìnim ëd la lista", + "MATH_ONLIST_TOOLTIP_MIN": "A smon ël pi cit nùmer ëd la lista.", + "MATH_ONLIST_OPERATOR_MAX": "màssim ëd la lista", + "MATH_ONLIST_TOOLTIP_MAX": "A smon ël pi gròss nùmer ëd la lista.", + "MATH_ONLIST_OPERATOR_AVERAGE": "media dla lista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "A smon la media (aritmética) dij valor numérich ant la lista.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mesan-a dla lista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "A smon ël nùmer mesan ëd la lista.", + "MATH_ONLIST_OPERATOR_MODE": "mòde dla lista", + "MATH_ONLIST_TOOLTIP_MODE": "A smon na lista dj'element pi frequent ëd la lista.", + "MATH_ONLIST_OPERATOR_STD_DEV": "deviassion ëstàndard ëd la lista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "A smon la deviassion ëstàndard ëd la lista.", + "MATH_ONLIST_OPERATOR_RANDOM": "element a l'ancàpit ëd la lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "A smon n'element a l'ancàpit da la lista.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "resta ëd %1:%2", + "MATH_MODULO_TOOLTIP": "A smon la resta ëd la division dij doi nùmer.", + "MATH_CONSTRAIN_TITLE": "limité %1 antra %2 e %3", + "MATH_CONSTRAIN_TOOLTIP": "Limité un nùmer a esse antra le limitassion ëspessificà (comprèise).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "antregh aleatòri antra %1 e %2", + "MATH_RANDOM_INT_TOOLTIP": "A smon n'antregh aleatòri antra ij doi lìmit ëspessificà, comprèis.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "frassion aleatòria", + "MATH_RANDOM_FLOAT_TOOLTIP": "A smon na frassion aleatòria antra 0,0 (comprèis) e 1,0 (esclus).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 ëd X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "A rëspond con l'arch-tangent dël pont (X, Y) an gre da -180 a 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Na litra, na paròla o na linia ëd test.", + "TEXT_JOIN_TITLE_CREATEWITH": "creé ël test con", + "TEXT_JOIN_TOOLTIP": "Creé un tòch ëd test an gionzend un nùmer qualsëssìa d'element.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "gionze", + "TEXT_CREATE_JOIN_TOOLTIP": "Gionté, gavé o riordiné le session për configuré torna ës blòch ëd test.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Gionté n'element al test.", + "TEXT_APPEND_TITLE": "a %1 taché ël test %2", + "TEXT_APPEND_TOOLTIP": "Taché dël test a la variàbil '%1'.", + "TEXT_LENGTH_TITLE": "longheur ëd %1", + "TEXT_LENGTH_TOOLTIP": "A smon ël nùmer ëd litre (spassi comprèis) ant ël test fornì.", + "TEXT_ISEMPTY_TITLE": "%1 a l'é veuid", + "TEXT_ISEMPTY_TOOLTIP": "A smon ver se ël test fornì a l'é veuid.", + "TEXT_INDEXOF_TOOLTIP": "A smon l'ìndes dla prima/ùltima ocorensa dël prim test ant ël second test. A smon %1 se ël test a l'é nen trovà.", + "TEXT_INDEXOF_TITLE": "ant ël test %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "trové la prima ocorensa dël test", + "TEXT_INDEXOF_OPERATOR_LAST": "trové l'ùltima ocorensa dël test", + "TEXT_CHARAT_TITLE": "ant ël test %1 %2", + "TEXT_CHARAT_FROM_START": "oten-e la litra #", + "TEXT_CHARAT_FROM_END": "oten-e la litra # da la fin", + "TEXT_CHARAT_FIRST": "oten-e la prima litra", + "TEXT_CHARAT_LAST": "oten-e l'ùltima litra", + "TEXT_CHARAT_RANDOM": "oten-e na litra a l'ancàpit", + "TEXT_CHARAT_TOOLTIP": "A smon la litra ant la posission ëspessificà.", + "TEXT_GET_SUBSTRING_TOOLTIP": "A smon un tòch ëspessificà dël test.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ant ël test", + "TEXT_GET_SUBSTRING_START_FROM_START": "oten-e la sota-stringa da la litra #", + "TEXT_GET_SUBSTRING_START_FROM_END": "oten-e la sota-stringa da la litra # da la fin", + "TEXT_GET_SUBSTRING_START_FIRST": "oten-e la sota-stringa da la prima litra", + "TEXT_GET_SUBSTRING_END_FROM_START": "fin-a a la litra #", + "TEXT_GET_SUBSTRING_END_FROM_END": "fin-a a la litra # da la fin", + "TEXT_GET_SUBSTRING_END_LAST": "fin-a a l'ùltima litra", + "TEXT_CHANGECASE_TOOLTIP": "A smon na còpia dël test ant un caràter diferent.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "an MAJÙSCOL", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "an minùscul", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "an Majùscol A L'Ancamin Ëd Minca Paròla", + "TEXT_TRIM_TOOLTIP": "A smon na còpia dël test con jë spassi gavà da n'estremità o da tute doe.", + "TEXT_TRIM_OPERATOR_BOTH": "gavé jë spassi da le doe bande ëd", + "TEXT_TRIM_OPERATOR_LEFT": "gavé jë spassi da la banda snistra ëd", + "TEXT_TRIM_OPERATOR_RIGHT": "gavé jë spassi da la banda drita ëd", + "TEXT_PRINT_TITLE": "smon-e %1", + "TEXT_PRINT_TOOLTIP": "Smon-e ël test, ël nùmer o n'àutr valor ëspessificà.", + "TEXT_PROMPT_TYPE_TEXT": "anvit për un test con un mëssagi", + "TEXT_PROMPT_TYPE_NUMBER": "anvit për un nùmer con un mëssagi", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Ciamé un nùmer a l'utent.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Ciamé un test a l'utent.", + "TEXT_COUNT_MESSAGE0": "nùmer %1 su %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Conté vàire vire un test dàit a compariss an n'àutr test.", + "TEXT_REPLACE_MESSAGE0": "rampiassé %1 con %2 an %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Rampiassé tute j'ocorense d'un test con n'àutr.", + "TEXT_REVERSE_MESSAGE0": "Anversé %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Anversé l'òrdin dij caràter ant ël test.", + "LISTS_CREATE_EMPTY_TITLE": "creé na lista veuida", + "LISTS_CREATE_EMPTY_TOOLTIP": "Smon-e na lista, ëd longheur 0, ch'a conten gnun-a argistrassion", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Creé na lista con un nùmer qualsëssìa d'element.", + "LISTS_CREATE_WITH_INPUT_WITH": "creé na lista con", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Gionté, gavé o riordiné le session për configuré torna cost blòch ëd lista.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Gionté n'element a la lista.", + "LISTS_REPEAT_TOOLTIP": "A crea na lista ch'a consist dël valor dàit arpetù ël nùmer ëspessificà ëd vire.", + "LISTS_REPEAT_TITLE": "creé na lista con l'element %1 arpetù %2 vire", + "LISTS_LENGTH_TITLE": "longheur ëd %1", + "LISTS_LENGTH_TOOLTIP": "A smon la longheur ¨d na lista.", + "LISTS_ISEMPTY_TITLE": "%1 a l'é veuid", + "LISTS_ISEMPTY_TOOLTIP": "A smon ver se la lista a l'é veuida.", + "LISTS_INLIST": "ant la lista", + "LISTS_INDEX_OF_FIRST": "trové la prima ocorensa dl'element", + "LISTS_INDEX_OF_LAST": "trové l'ùltima ocorensa dl'element", + "LISTS_INDEX_OF_TOOLTIP": "A smon l'ìndes ëd la prima/ùltima ocorensa dl'element ant la lista. A smon %1 se l'element a l'é nen trovà.", + "LISTS_GET_INDEX_GET": "oten-e", + "LISTS_GET_INDEX_GET_REMOVE": "oten-e e eliminé", + "LISTS_GET_INDEX_REMOVE": "eliminé", + "LISTS_GET_INDEX_FROM_END": "# da la fin", + "LISTS_GET_INDEX_FIRST": "prim", + "LISTS_GET_INDEX_LAST": "ùltim", + "LISTS_GET_INDEX_RANDOM": "a l'ancàpit", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 a l'é ël prim element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 a l'é l'ùltim element.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "A smon l'element a la posission ëspessificà an na lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "A smon ël prim element an na lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "A smon l'ùltim element an na lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "A smon n'element a l'ancàpit an na lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "A gava e a smon l'element a la posission ëspessificà an na lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "A gava e a smon ël prim element an na lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "A gava e a smon l'ùltim element an na lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "A gava e a smon n'element a l'ancàpit an na lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "A gava l'element a la posission ëspessificà an na lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "A gava ël prim element an na lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "A gava l'ùltim element an na lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "A gava n'element a l'ancàpit da na lista.", + "LISTS_SET_INDEX_SET": "buté", + "LISTS_SET_INDEX_INSERT": "anserì an", + "LISTS_SET_INDEX_INPUT_TO": "tanme", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "A fissa l'element a la posission ëspessificà an na lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "A fissa ël prim element an na lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "A fissa l'ùltim element an na lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "A fissa n'element a l'ancàpit an na lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "A anseriss l'element a la posission ëspessificà an na lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "A anseriss l'element al prinsipi ëd na lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Gionté l'element a la fin ëd na lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "A anseriss l'element a l'ancàpit an na lista.", + "LISTS_GET_SUBLIST_START_FROM_START": "oten-e la sot-lista da #", + "LISTS_GET_SUBLIST_START_FROM_END": "oten-e la sot-lista da # da la fin", + "LISTS_GET_SUBLIST_START_FIRST": "oten-e la sot-lista dal prim", + "LISTS_GET_SUBLIST_END_FROM_START": "fin-a a #", + "LISTS_GET_SUBLIST_END_FROM_END": "fin-a a # da la fin", + "LISTS_GET_SUBLIST_END_LAST": "fin-a a l'ùltim", + "LISTS_GET_SUBLIST_TOOLTIP": "A crea na còpia dël tòch ëspessificà ëd na lista.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "ordiné %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ordiné na còpia ëd na lista.", + "LISTS_SORT_ORDER_ASCENDING": "chërsent", + "LISTS_SORT_ORDER_DESCENDING": "calant", + "LISTS_SORT_TYPE_NUMERIC": "numérich", + "LISTS_SORT_TYPE_TEXT": "alfabétich", + "LISTS_SORT_TYPE_IGNORECASE": "alfabétich, ignorand ël caràter minùscol o majùscol", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "fé na lista da 'n test", + "LISTS_SPLIT_TEXT_FROM_LIST": "fé 'n test da na lista", + "LISTS_SPLIT_WITH_DELIMITER": "con ël separator", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Divide un test an na lista ëd test, tajand a minca 'n separator.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Gionze na lista ëd test ant un test sol, separandje con un separator.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "anversé %1", + "LISTS_REVERSE_TOOLTIP": "Anversé na còpia ëd na lista", + "VARIABLES_GET_TOOLTIP": "A smon ël valor ëd sa variàbil.", + "VARIABLES_GET_CREATE_SET": "Creé 'fissé %1'", + "VARIABLES_SET": "fissé %1 a %2", + "VARIABLES_SET_TOOLTIP": "Fissé costa variàbil ugual al valor d'imission.", + "VARIABLES_SET_CREATE_GET": "Creé 'oten-e %1'", + "PROCEDURES_DEFNORETURN_TITLE": "a", + "PROCEDURES_DEFNORETURN_PROCEDURE": "fé cheicòs", + "PROCEDURES_BEFORE_PARAMS": "con:", + "PROCEDURES_CALL_BEFORE_PARAMS": "con:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "A crea na fonsion sensa surtìa.", + "PROCEDURES_DEFNORETURN_COMMENT": "Descrive sa fonsion...", + "PROCEDURES_DEFRETURN_RETURN": "artorn", + "PROCEDURES_DEFRETURN_TOOLTIP": "A crea na fonsion con na surtìa.", + "PROCEDURES_ALLOW_STATEMENTS": "përmëtte le diciairassion", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Atension: Costa fonsion a l'ha dij paràmeter duplicà.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Eseguì la fonsion '%1' definìa da l'utent.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Eseguì la fonsion '%1' definìa da l'utent e dovré sò arzultà.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "imission", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Gionté, gavé o riordiné j'imission ëd sa fonsion.", + "PROCEDURES_MUTATORARG_TITLE": "nòm ëd l'imission:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Gionté n'imission a la fonsion.", + "PROCEDURES_HIGHLIGHT_DEF": "Sot-ligné la definission dla fonsion", + "PROCEDURES_CREATE_DO": "Creé '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Se un valor a l'é ver, antlora smon-e un second valor.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Atension: Ës blòch a podria esse dovrà mach an na definission ëd fonsion.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Dì cheicòs...", + "WORKSPACE_ARIA_LABEL": "Spassi ëd travaj ëd Blockly", + "COLLAPSED_WARNINGS_WARNING": "Ij blòch sarà a conten-o dj'avertense.", + "DIALOG_OK": "Va bin", + "DIALOG_CANCEL": "Anulé" +} diff --git a/msg/json/ps.json b/msg/json/ps.json index 0cba6ff8653..1946fad437a 100644 --- a/msg/json/ps.json +++ b/msg/json/ps.json @@ -1,50 +1,50 @@ -{ - "@metadata": { - "authors": [ - "Ahmed-Najib-Biabani-Ibrahimkhel" - ] - }, - "VARIABLES_DEFAULT_NAME": "توکی", - "TODAY": "نن", - "ADD_COMMENT": "تبصره ورگډول", - "REMOVE_COMMENT": "تبصره غورځول", - "EXTERNAL_INPUTS": "باندنۍ ننوېستنې", - "INLINE_INPUTS": "پرکرښه ننوېستنې", - "DELETE_BLOCK": "بلاک ړنگول", - "DELETE_X_BLOCKS": "%1 بلاکونه ړنگول", - "CLEAN_UP": "بلاکونه پاکول", - "COLLAPSE_BLOCK": "بلاک پرځول", - "COLLAPSE_ALL": "بلاکونه پرځول", - "EXPAND_BLOCK": "بلاک غځول", - "EXPAND_ALL": "بلاکونه غځول", - "DISABLE_BLOCK": "بلاک ناچارنول", - "ENABLE_BLOCK": "بلاک چارنول", - "HELP": "لارښود", - "UNDO": "ناکړل", - "REDO": "بياکړل", - "CHANGE_VALUE_TITLE": "ارزښت بدلول:", - "COLOUR_PICKER_HELPURL": "https://ps.wikipedia.org/wiki/رنگ", - "COLOUR_RANDOM_TITLE": "ناټاکلی رنگ", - "COLOUR_RGB_TITLE": "د رنگ سره", - "COLOUR_RGB_RED": "سور", - "COLOUR_RGB_GREEN": "زرغون", - "COLOUR_RGB_BLUE": "شين", - "CONTROLS_IF_MSG_IF": "که", - "LOGIC_OPERATION_AND": "او", - "LOGIC_OPERATION_OR": "يا", - "LOGIC_NEGATE_TITLE": "نه %1", - "LOGIC_BOOLEAN_TRUE": "سم", - "LOGIC_BOOLEAN_FALSE": "ناسم", - "LOGIC_TERNARY_CONDITION": "آزمويل", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "په متن کې", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "لړليک", - "LISTS_ISEMPTY_TITLE": "%1 تش دی", - "LISTS_GET_INDEX_GET": "ترلاسه کول", - "LISTS_GET_INDEX_FIRST": "لومړنی", - "LISTS_GET_INDEX_LAST": "وروستنی", - "LISTS_GET_INDEX_RANDOM": "ناټاکلی", - "LISTS_SET_INDEX_INPUT_TO": "لکه", - "PROCEDURES_CREATE_DO": "'%1' جوړول", - "DIALOG_OK": "ښه", - "DIALOG_CANCEL": "ناگارل" -} +{ + "@metadata": { + "authors": [ + "Ahmed-Najib-Biabani-Ibrahimkhel" + ] + }, + "VARIABLES_DEFAULT_NAME": "توکی", + "TODAY": "نن", + "ADD_COMMENT": "تبصره ورگډول", + "REMOVE_COMMENT": "تبصره غورځول", + "EXTERNAL_INPUTS": "باندنۍ ننوېستنې", + "INLINE_INPUTS": "پرکرښه ننوېستنې", + "DELETE_BLOCK": "بلاک ړنگول", + "DELETE_X_BLOCKS": "%1 بلاکونه ړنگول", + "CLEAN_UP": "بلاکونه پاکول", + "COLLAPSE_BLOCK": "بلاک پرځول", + "COLLAPSE_ALL": "بلاکونه پرځول", + "EXPAND_BLOCK": "بلاک غځول", + "EXPAND_ALL": "بلاکونه غځول", + "DISABLE_BLOCK": "بلاک ناچارنول", + "ENABLE_BLOCK": "بلاک چارنول", + "HELP": "لارښود", + "UNDO": "ناکړل", + "REDO": "بياکړل", + "CHANGE_VALUE_TITLE": "ارزښت بدلول:", + "COLOUR_PICKER_HELPURL": "https://ps.wikipedia.org/wiki/رنگ", + "COLOUR_RANDOM_TITLE": "ناټاکلی رنگ", + "COLOUR_RGB_TITLE": "د رنگ سره", + "COLOUR_RGB_RED": "سور", + "COLOUR_RGB_GREEN": "زرغون", + "COLOUR_RGB_BLUE": "شين", + "CONTROLS_IF_MSG_IF": "که", + "LOGIC_OPERATION_AND": "او", + "LOGIC_OPERATION_OR": "يا", + "LOGIC_NEGATE_TITLE": "نه %1", + "LOGIC_BOOLEAN_TRUE": "سم", + "LOGIC_BOOLEAN_FALSE": "ناسم", + "LOGIC_TERNARY_CONDITION": "آزمويل", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "په متن کې", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "لړليک", + "LISTS_ISEMPTY_TITLE": "%1 تش دی", + "LISTS_GET_INDEX_GET": "ترلاسه کول", + "LISTS_GET_INDEX_FIRST": "لومړنی", + "LISTS_GET_INDEX_LAST": "وروستنی", + "LISTS_GET_INDEX_RANDOM": "ناټاکلی", + "LISTS_SET_INDEX_INPUT_TO": "لکه", + "PROCEDURES_CREATE_DO": "'%1' جوړول", + "DIALOG_OK": "ښه", + "DIALOG_CANCEL": "ناگارل" +} diff --git a/msg/json/pt-br.json b/msg/json/pt-br.json index a12da981376..2984b625206 100644 --- a/msg/json/pt-br.json +++ b/msg/json/pt-br.json @@ -1,380 +1,393 @@ -{ - "@metadata": { - "authors": [ - "Almondega", - "Amgauna", - "BarbaraAckles", - "Cainamarques", - "Caçador de Palavras", - "Cristofer Alves", - "EVinente", - "Eduardo Addad de Oliveira", - "Eduardoaddad", - "Espertus", - "Fasouzafreitas", - "Felipe L. Ewald", - "Lowvy", - "Luk3", - "Mauricio", - "McDutchie", - "Mordecaista", - "Prilopes", - "Rodrigo codignoli", - "Rogerio Melfi", - "TheGabrielZaum", - "Trigonometria87", - "Tuliouel", - "Webysther", - "WikiUser22222" - ] - }, - "VARIABLES_DEFAULT_NAME": "item", - "UNNAMED_KEY": "Sem título", - "TODAY": "Hoje", - "DUPLICATE_BLOCK": "Duplicar", - "ADD_COMMENT": "Adicionar comentário", - "REMOVE_COMMENT": "Remover comentário", - "DUPLICATE_COMMENT": "Duplicar comentário", - "EXTERNAL_INPUTS": "Entradas externas", - "INLINE_INPUTS": "Entradas incorporadas", - "DELETE_BLOCK": "Deletar bloco", - "DELETE_X_BLOCKS": "Deletar %1 blocos", - "DELETE_ALL_BLOCKS": "Deletar todos os blocos %1?", - "CLEAN_UP": "Limpar blocos", - "COLLAPSE_BLOCK": "Colapsar Bloco", - "COLLAPSE_ALL": "Colapsar Blocos", - "EXPAND_BLOCK": "Expandir bloco", - "EXPAND_ALL": "Expandir blocos", - "DISABLE_BLOCK": "Desabilitar bloco", - "ENABLE_BLOCK": "Habilitar bloco", - "HELP": "Ajuda", - "UNDO": "Desfazer", - "REDO": "Refazer", - "CHANGE_VALUE_TITLE": "Mudar valor:", - "RENAME_VARIABLE": "Renomear variável...", - "RENAME_VARIABLE_TITLE": "Renomear todas as variáveis '%1' para:", - "NEW_VARIABLE": "Criar variável...", - "NEW_STRING_VARIABLE": "Criar variável de segmentos de texto...", - "NEW_NUMBER_VARIABLE": "Criar variável numérica...", - "NEW_COLOUR_VARIABLE": "Criar variável colorida...", - "NEW_VARIABLE_TYPE_TITLE": "Tipo da nova variável:", - "NEW_VARIABLE_TITLE": "Nome da nova variável:", - "VARIABLE_ALREADY_EXISTS": "A variável chamada '%1' já existe.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Já existe uma variável chamada '%1' para outra do tipo: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Deletar %1 usos da variável '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Não se pode deletar a variável '%1' porque é parte da definição da função '%2'", - "DELETE_VARIABLE": "Deletar a variável '%1'", - "COLOUR_PICKER_HELPURL": "https://pt.wikipedia.org/wiki/Cor", - "COLOUR_PICKER_TOOLTIP": "Escolher uma cor da palheta de cores.", - "COLOUR_RANDOM_TITLE": "cor aleatória", - "COLOUR_RANDOM_TOOLTIP": "Escolher cor de forma aleatória.", - "COLOUR_RGB_TITLE": "colorir com", - "COLOUR_RGB_RED": "vermelho", - "COLOUR_RGB_GREEN": "verde", - "COLOUR_RGB_BLUE": "azul", - "COLOUR_RGB_TOOLTIP": "Criar uma cor com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100.", - "COLOUR_BLEND_TITLE": "misturar", - "COLOUR_BLEND_COLOUR1": "cor 1", - "COLOUR_BLEND_COLOUR2": "cor 2", - "COLOUR_BLEND_RATIO": "proporção", - "COLOUR_BLEND_TOOLTIP": "Mistura duas cores em uma dada proporção (0,0 - 1,0).", - "CONTROLS_REPEAT_HELPURL": "https://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle", - "CONTROLS_REPEAT_TITLE": "repita %1 vezes", - "CONTROLS_REPEAT_INPUT_DO": "faça", - "CONTROLS_REPEAT_TOOLTIP": "Faça algumas instruções várias vezes.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repita enquanto", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repita até", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Enquanto um valor for verdadeiro, então faça algumas instruções.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Enquanto um valor for falso, então faça algumas instruções.", - "CONTROLS_FOR_TOOLTIP": "Faça com que a variável '%1' assuma os valores do número inicial ao número final, contando de acordo com o intervalo especificado e execute os blocos especificados.", - "CONTROLS_FOR_TITLE": "contar com %1 de %2 até %3 por %4", - "CONTROLS_FOREACH_TITLE": "para cada item %1 na lista %2", - "CONTROLS_FOREACH_TOOLTIP": "Para cada item em uma lista, atribua o item à variável '%1' e então realize algumas instruções.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "encerra o laço", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continua com a próxima iteração do laço", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Encerra o laço.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ignora o resto deste laço, e continua com a próxima iteração.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Atenção: Este bloco só pode ser usado dentro de um laço.", - "CONTROLS_IF_TOOLTIP_1": "Se um valor for verdadeiro, então realize algumas instruções.", - "CONTROLS_IF_TOOLTIP_2": "Se um valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções.", - "CONTROLS_IF_TOOLTIP_3": "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções.", - "CONTROLS_IF_TOOLTIP_4": "Se o primeiro valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções.", - "CONTROLS_IF_MSG_IF": "se", - "CONTROLS_IF_MSG_ELSEIF": "senão se", - "CONTROLS_IF_MSG_ELSE": "senão", - "CONTROLS_IF_IF_TOOLTIP": "Acrescente, remova ou reordene seções para reconfigurar este bloco.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Acrescente uma condição para o bloco se.", - "CONTROLS_IF_ELSE_TOOLTIP": "Acrescente uma condição final para o bloco se.", - "LOGIC_COMPARE_HELPURL": "https://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o", - "LOGIC_COMPARE_TOOLTIP_EQ": "Retorna verdadeiro se ambas as entradas forem iguais.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Retorna verdadeiro se ambas as entradas forem diferentes.", - "LOGIC_COMPARE_TOOLTIP_LT": "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada.", - "LOGIC_COMPARE_TOOLTIP_GT": "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada.", - "LOGIC_OPERATION_TOOLTIP_AND": "Retorna verdadeiro se ambas as entradas forem verdadeiras.", - "LOGIC_OPERATION_AND": "e", - "LOGIC_OPERATION_TOOLTIP_OR": "Retorna verdadeiro se uma das estradas for verdadeira.", - "LOGIC_OPERATION_OR": "ou", - "LOGIC_NEGATE_TITLE": "não %1", - "LOGIC_NEGATE_TOOLTIP": "Retorna verdadeiro se a entrada for falsa. Retorna falsa se a entrada for verdadeira.", - "LOGIC_BOOLEAN_TRUE": "verdadeiro", - "LOGIC_BOOLEAN_FALSE": "falso", - "LOGIC_BOOLEAN_TOOLTIP": "Retorna verdadeiro ou falso.", - "LOGIC_NULL": "nulo", - "LOGIC_NULL_TOOLTIP": "Retorna nulo.", - "LOGIC_TERNARY_CONDITION": "teste", - "LOGIC_TERNARY_IF_TRUE": "se verdadeiro", - "LOGIC_TERNARY_IF_FALSE": "se falso", - "LOGIC_TERNARY_TOOLTIP": "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\".", - "MATH_NUMBER_HELPURL": "https://pt.wikipedia.org/wiki/N%C3%BAmero", - "MATH_NUMBER_TOOLTIP": "Um número.", - "MATH_ARITHMETIC_HELPURL": "https://pt.wikipedia.org/wiki/Aritm%C3%A9tica", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Retorna a soma dos dois números.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retorna a diferença entre os dois números.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retorna o produto dos dois números.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retorna o quociente da divisão dos dois números.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Retorna o primeiro número elevado à potência do segundo número.", - "MATH_SINGLE_HELPURL": "https://pt.wikipedia.org/wiki/Raiz_quadrada", - "MATH_SINGLE_OP_ROOT": "raiz quadrada", - "MATH_SINGLE_TOOLTIP_ROOT": "Retorna a raiz quadrada de um número.", - "MATH_SINGLE_OP_ABSOLUTE": "absoluto", - "MATH_SINGLE_TOOLTIP_ABS": "Retorna o valor absoluto de um número.", - "MATH_SINGLE_TOOLTIP_NEG": "Retorna o oposto de um número.", - "MATH_SINGLE_TOOLTIP_LN": "Retorna o logaritmo natural de um número.", - "MATH_SINGLE_TOOLTIP_LOG10": "Retorna o logaritmo em base 10 de um número.", - "MATH_SINGLE_TOOLTIP_EXP": "Retorna o número e elevado à potência de um número.", - "MATH_SINGLE_TOOLTIP_POW10": "Retorna 10 elevado à potência de um número.", - "MATH_TRIG_HELPURL": "https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica", - "MATH_TRIG_TOOLTIP_SIN": "Retorna o seno de um grau (não radiano).", - "MATH_TRIG_TOOLTIP_COS": "Retorna o cosseno de um grau (não radiano).", - "MATH_TRIG_TOOLTIP_TAN": "Retorna a tangente de um grau (não radiano).", - "MATH_TRIG_TOOLTIP_ASIN": "Retorna o arco seno de um número.", - "MATH_TRIG_TOOLTIP_ACOS": "Retorna o arco cosseno de um número.", - "MATH_TRIG_TOOLTIP_ATAN": "Retorna o arco tangente de um número.", - "MATH_CONSTANT_HELPURL": "https://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas", - "MATH_CONSTANT_TOOLTIP": "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito).", - "MATH_IS_EVEN": "é par", - "MATH_IS_ODD": "é ímpar", - "MATH_IS_PRIME": "é primo", - "MATH_IS_WHOLE": "é inteiro", - "MATH_IS_POSITIVE": "é positivo", - "MATH_IS_NEGATIVE": "é negativo", - "MATH_IS_DIVISIBLE_BY": "é divisível por", - "MATH_IS_TOOLTIP": "Verifica se um número é par, ímpar, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso.", - "MATH_CHANGE_HELPURL": "https://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o", - "MATH_CHANGE_TITLE": "alterar %1 por %2", - "MATH_CHANGE_TOOLTIP": "Soma um número à variável \"%1\".", - "MATH_ROUND_HELPURL": "https://pt.wikipedia.org/wiki/Arredondamento", - "MATH_ROUND_TOOLTIP": "Arredonda um número para cima ou para baixo.", - "MATH_ROUND_OPERATOR_ROUND": "arredonda", - "MATH_ROUND_OPERATOR_ROUNDUP": "arredonda para cima", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "arredonda para baixo", - "MATH_ONLIST_OPERATOR_SUM": "soma de uma lista", - "MATH_ONLIST_TOOLTIP_SUM": "Retorna a soma de todos os números na lista.", - "MATH_ONLIST_OPERATOR_MIN": "menor da lista", - "MATH_ONLIST_TOOLTIP_MIN": "Retorna o menor número da lista.", - "MATH_ONLIST_OPERATOR_MAX": "maior da lista", - "MATH_ONLIST_TOOLTIP_MAX": "Retorna o maior número da lista.", - "MATH_ONLIST_OPERATOR_AVERAGE": "média da lista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Retorna a média aritmética dos números da lista.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana da lista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Retorna a mediana dos números da lista.", - "MATH_ONLIST_OPERATOR_MODE": "moda da lista", - "MATH_ONLIST_TOOLTIP_MODE": "Retorna uma lista do(s) item(ns) mais comum(ns) da lista.", - "MATH_ONLIST_OPERATOR_STD_DEV": "desvio padrão da lista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Retorna o desvio padrão dos números da lista.", - "MATH_ONLIST_OPERATOR_RANDOM": "item aleatório da lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Retorna um elemento aleatório da lista.", - "MATH_MODULO_HELPURL": "https://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo", - "MATH_MODULO_TITLE": "resto da divisão de %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Retorna o resto da divisão de dois números.", - "MATH_CONSTRAIN_TITLE": "restringe %1 inferior %2 superior %3", - "MATH_CONSTRAIN_TOOLTIP": "Restringe um número entre os limites especificados (inclusivo).", - "MATH_RANDOM_INT_HELPURL": "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios", - "MATH_RANDOM_INT_TITLE": "inteiro aleatório entre %1 e %2", - "MATH_RANDOM_INT_TOOLTIP": "Retorna um número inteiro entre os dois limites informados, inclusivo.", - "MATH_RANDOM_FLOAT_HELPURL": "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fração aleatória", - "MATH_RANDOM_FLOAT_TOOLTIP": "Retorna uma fração aleatória entre 0.0 (inclusivo) e 1.0 (exclusivo).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Retorne o arco tangente do ponto (X, Y) em graus de -180 a 180.", - "TEXT_TEXT_HELPURL": "https://pt.wikipedia.org/wiki/Cadeia_de_caracteres", - "TEXT_TEXT_TOOLTIP": "Uma letra, palavra ou linha de texto.", - "TEXT_JOIN_TITLE_CREATEWITH": "criar texto com", - "TEXT_JOIN_TOOLTIP": "Criar um pedaço de texto juntando qualquer número de itens.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", - "TEXT_CREATE_JOIN_TOOLTIP": "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Acrescentar um item ao texto.", - "TEXT_APPEND_TITLE": "para %1 anexar texto %2", - "TEXT_APPEND_TOOLTIP": "Acrescentar um pedaço de texto à variável \"%1\".", - "TEXT_LENGTH_TITLE": "tamanho de %1", - "TEXT_LENGTH_TOOLTIP": "Retorna o número de letras (incluindo espaços) no texto fornecido.", - "TEXT_ISEMPTY_TITLE": "%1 é vazio", - "TEXT_ISEMPTY_TOOLTIP": "Retorna verdadeiro se o texto fornecido for vazio.", - "TEXT_INDEXOF_TOOLTIP": "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado.", - "TEXT_INDEXOF_TITLE": "no texto %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "encontre a primeira ocorrência do item", - "TEXT_INDEXOF_OPERATOR_LAST": "encontre a última ocorrência do texto", - "TEXT_CHARAT_TITLE": "no texto %1 %2", - "TEXT_CHARAT_FROM_START": "obter letra nº", - "TEXT_CHARAT_FROM_END": "obter letra # a partir do final", - "TEXT_CHARAT_FIRST": "obter primeira letra", - "TEXT_CHARAT_LAST": "obter última letra", - "TEXT_CHARAT_RANDOM": "obter letra aleatória", - "TEXT_CHARAT_TOOLTIP": "Retorna a letra na posição especificada.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Retorna o trecho de texto especificado.", - "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "no texto", - "TEXT_GET_SUBSTRING_START_FROM_START": "obter trecho de letra nº", - "TEXT_GET_SUBSTRING_START_FROM_END": "obter trecho de letra nº a partir do final", - "TEXT_GET_SUBSTRING_START_FIRST": "obter trecho de primeira letra", - "TEXT_GET_SUBSTRING_END_FROM_START": "até letra nº", - "TEXT_GET_SUBSTRING_END_FROM_END": "até letra nº a partir do final", - "TEXT_GET_SUBSTRING_END_LAST": "até última letra", - "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", - "TEXT_CHANGECASE_TOOLTIP": "Retorna uma cópia do texto em um formato diferente.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "para MAIÚSCULAS", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "para minúsculas", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "para Nomes Próprios", - "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", - "TEXT_TRIM_TOOLTIP": "Retorna uma cópia do texto com os espaços removidos de uma ou ambas extremidades.", - "TEXT_TRIM_OPERATOR_BOTH": "remover espaços de ambos os lados de", - "TEXT_TRIM_OPERATOR_LEFT": "remover espaços à esquerda de", - "TEXT_TRIM_OPERATOR_RIGHT": "remover espaços à direita de", - "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", - "TEXT_PRINT_TITLE": "imprime %1", - "TEXT_PRINT_TOOLTIP": "Imprime o texto, número ou valor especificado.", - "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", - "TEXT_PROMPT_TYPE_TEXT": "Pede um texto com uma mensagem", - "TEXT_PROMPT_TYPE_NUMBER": "Pede um número com uma mensagem", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Pede ao usuário um número.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Pede ao usuário um texto.", - "TEXT_COUNT_MESSAGE0": "Contar %1 em %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Calcule quantas vezes algum texto aparece centro de algum outro texto.", - "TEXT_REPLACE_MESSAGE0": "substituir %1 por %2 em %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Texto#substituindo-substrings", - "TEXT_REPLACE_TOOLTIP": "Substitua todas as ocorrências de algum texto dentro de algum outro texto.", - "TEXT_REVERSE_MESSAGE0": "inverter %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Texto#invertendo-texto", - "TEXT_REVERSE_TOOLTIP": "Inverter a ordem dos caracteres no texto.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "criar lista vazia", - "LISTS_CREATE_EMPTY_TOOLTIP": "Retorna uma lista, de tamanho 0, contendo nenhum registro", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Cria uma lista com a quantidade de itens informada.", - "LISTS_CREATE_WITH_INPUT_WITH": "criar lista com", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Acrescenta, remove ou reordena seções para reconfigurar este bloco de lista.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Acrescenta um item à lista.", - "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_REPEAT_TOOLTIP": "Cria uma lista consistindo no valor informado repetido o número de vezes especificado.", - "LISTS_REPEAT_TITLE": "criar lista com item %1 repetido %2 vezes", - "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", - "LISTS_LENGTH_TITLE": "tamanho de %1", - "LISTS_LENGTH_TOOLTIP": "Retorna o tamanho de uma lista.", - "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", - "LISTS_ISEMPTY_TITLE": "%1 é vazia", - "LISTS_ISEMPTY_TOOLTIP": "Retorna ao verdadeiro se a lista estiver vazia.", - "LISTS_INLIST": "na lista", - "LISTS_INDEX_OF_FIRST": "encontre a primeira ocorrência do item", - "LISTS_INDEX_OF_LAST": "encontre a última ocorrência do item", - "LISTS_INDEX_OF_TOOLTIP": "Retorna o índice da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado.", - "LISTS_GET_INDEX_GET": "obter", - "LISTS_GET_INDEX_GET_REMOVE": "obter e remover", - "LISTS_GET_INDEX_REMOVE": "remover", - "LISTS_GET_INDEX_FROM_START": "nº", - "LISTS_GET_INDEX_FROM_END": "nº a partir do final", - "LISTS_GET_INDEX_FIRST": "primeiro", - "LISTS_GET_INDEX_LAST": "último", - "LISTS_GET_INDEX_RANDOM": "aleatório", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 é o primeiro item.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 é o último item.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Retorna o item da lista na posição especificada.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Retorna o primeiro item em uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Retorna o último item em uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Retorna um item aleatório de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Remove e retorna o item na posição especificada em uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Remove e retorna o primeiro item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Remove e retorna o último item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Remove e retorna um item aleatório de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Remove o item na posição especificada em uma lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Remove o primeiro item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Remove o último item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Remove um item aleatório de uma lista.", - "LISTS_SET_INDEX_SET": "definir", - "LISTS_SET_INDEX_INSERT": "inserir em", - "LISTS_SET_INDEX_INPUT_TO": "como", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Define o item da posição especificada de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Define o primeiro item de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Define o último item de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Define um item aleatório de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insere o item na posição especificada em uma lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insere o item no início de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Insere o item no final de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insere o item em uma posição qualquer de uma lista.", - "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", - "LISTS_GET_SUBLIST_START_FROM_START": "obtém sublista de nº", - "LISTS_GET_SUBLIST_START_FROM_END": "obtém sublista de nº a partir do final", - "LISTS_GET_SUBLIST_START_FIRST": "obtém sublista a partir do primeiro", - "LISTS_GET_SUBLIST_END_FROM_START": "até nº", - "LISTS_GET_SUBLIST_END_FROM_END": "até nº a partir do final", - "LISTS_GET_SUBLIST_END_LAST": "até último", - "LISTS_GET_SUBLIST_TOOLTIP": "Cria uma cópia da porção especificada de uma lista.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "ordenar %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Ordenar uma cópia de uma lista.", - "LISTS_SORT_ORDER_ASCENDING": "ascendente", - "LISTS_SORT_ORDER_DESCENDING": "descendente", - "LISTS_SORT_TYPE_NUMERIC": "numérico", - "LISTS_SORT_TYPE_TEXT": "alfabético", - "LISTS_SORT_TYPE_IGNORECASE": "alfabético, ignorar maiúscula/minúscula", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "Fazer uma lista a partir do texto", - "LISTS_SPLIT_TEXT_FROM_LIST": "fazer um texto a partir da lista", - "LISTS_SPLIT_WITH_DELIMITER": "com delimitador", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividir o texto em uma lista de textos, separando-o em cada delimitador.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Juntar uma lista de textos em um único texto, separado por um delimitador.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Listas#invertendo-uma-lista", - "LISTS_REVERSE_MESSAGE0": "inverter %1", - "LISTS_REVERSE_TOOLTIP": "Inverter uma cópia da lista.", - "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", - "VARIABLES_GET_TOOLTIP": "Retorna o valor desta variável.", - "VARIABLES_GET_CREATE_SET": "Criar \"definir %1\"", - "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", - "VARIABLES_SET": "definir %1 para %2", - "VARIABLES_SET_TOOLTIP": "Define esta variável para o valor da entrada.", - "VARIABLES_SET_CREATE_GET": "Criar \"obter %1\"", - "PROCEDURES_DEFNORETURN_HELPURL": "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)", - "PROCEDURES_DEFNORETURN_TITLE": "para", - "PROCEDURES_DEFNORETURN_PROCEDURE": "faça algo", - "PROCEDURES_BEFORE_PARAMS": "com:", - "PROCEDURES_CALL_BEFORE_PARAMS": "com:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Cria uma função que não tem retorno.", - "PROCEDURES_DEFNORETURN_COMMENT": "Descreva esta função...", - "PROCEDURES_DEFRETURN_HELPURL": "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)", - "PROCEDURES_DEFRETURN_RETURN": "retorna", - "PROCEDURES_DEFRETURN_TOOLTIP": "Cria uma função que possui um valor de retorno.", - "PROCEDURES_ALLOW_STATEMENTS": "permitir declarações", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Atenção: Esta função tem parâmetros duplicados.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Executa a função definida pelo usuário \"%1\".", - "PROCEDURES_CALLRETURN_HELPURL": "https://pt.wikipedia.org/wiki/Sub-rotina", - "PROCEDURES_CALLRETURN_TOOLTIP": "Executa a função definida pelo usuário \"%1\" e usa seu retorno.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Adiciona, remove, ou reordena as entradas para esta função.", - "PROCEDURES_MUTATORARG_TITLE": "nome da entrada:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Adiciona uma entrada para esta função", - "PROCEDURES_HIGHLIGHT_DEF": "Destacar definição da função", - "PROCEDURES_CREATE_DO": "Criar \"%1\"", - "PROCEDURES_IFRETURN_TOOLTIP": "Se um valor é verdadeiro, então retorna um valor.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Atenção: Este bloco só pode ser utilizado dentro da definição de uma função.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Diz algo...", - "WORKSPACE_ARIA_LABEL": "Espaço de trabalho do Blockly", - "COLLAPSED_WARNINGS_WARNING": "Bloqueios recolhidos contêm avisos.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Cancelar" -} +{ + "@metadata": { + "authors": [ + "Almondega", + "Amgauna", + "BarbaraAckles", + "Cainamarques", + "Caçador de Palavras", + "Cristofer Alves", + "EVinente", + "Eduardo Addad de Oliveira", + "Eduardoaddad", + "Espertus", + "Fasouzafreitas", + "Felipe L. Ewald", + "Lowvy", + "Luk3", + "Mauricio", + "McDutchie", + "Mordecaista", + "Prilopes", + "Rodrigo codignoli", + "Rogerio Melfi", + "TheGabrielZaum", + "Trigonometria87", + "Tuliouel", + "Webysther", + "WikiUser22222" + ] + }, + "VARIABLES_DEFAULT_NAME": "item", + "UNNAMED_KEY": "Sem título", + "TODAY": "Hoje", + "DUPLICATE_BLOCK": "Duplicar", + "ADD_COMMENT": "Adicionar comentário", + "REMOVE_COMMENT": "Remover comentário", + "DUPLICATE_COMMENT": "Duplicar comentário", + "EXTERNAL_INPUTS": "Entradas externas", + "INLINE_INPUTS": "Entradas incorporadas", + "DELETE_BLOCK": "Deletar bloco", + "DELETE_X_BLOCKS": "Deletar %1 blocos", + "DELETE_ALL_BLOCKS": "Deletar todos os blocos %1?", + "CLEAN_UP": "Limpar blocos", + "COLLAPSE_BLOCK": "Colapsar Bloco", + "COLLAPSE_ALL": "Colapsar Blocos", + "EXPAND_BLOCK": "Expandir bloco", + "EXPAND_ALL": "Expandir blocos", + "DISABLE_BLOCK": "Desabilitar bloco", + "ENABLE_BLOCK": "Habilitar bloco", + "HELP": "Ajuda", + "UNDO": "Desfazer", + "REDO": "Refazer", + "CHANGE_VALUE_TITLE": "Mudar valor:", + "RENAME_VARIABLE": "Renomear variável...", + "RENAME_VARIABLE_TITLE": "Renomear todas as variáveis '%1' para:", + "NEW_VARIABLE": "Criar variável...", + "NEW_STRING_VARIABLE": "Criar variável de segmentos de texto...", + "NEW_NUMBER_VARIABLE": "Criar variável numérica...", + "NEW_COLOUR_VARIABLE": "Criar variável colorida...", + "NEW_VARIABLE_TYPE_TITLE": "Tipo da nova variável:", + "NEW_VARIABLE_TITLE": "Nome da nova variável:", + "VARIABLE_ALREADY_EXISTS": "A variável chamada '%1' já existe.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Já existe uma variável chamada '%1' para outra do tipo: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Deletar %1 usos da variável '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Não se pode deletar a variável '%1' porque é parte da definição da função '%2'", + "DELETE_VARIABLE": "Deletar a variável '%1'", + "COLOUR_PICKER_HELPURL": "https://pt.wikipedia.org/wiki/Cor", + "COLOUR_PICKER_TOOLTIP": "Escolher uma cor da palheta de cores.", + "COLOUR_RANDOM_TITLE": "cor aleatória", + "COLOUR_RANDOM_TOOLTIP": "Escolher cor de forma aleatória.", + "COLOUR_RGB_TITLE": "colorir com", + "COLOUR_RGB_RED": "vermelho", + "COLOUR_RGB_GREEN": "verde", + "COLOUR_RGB_BLUE": "azul", + "COLOUR_RGB_TOOLTIP": "Criar uma cor com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100.", + "COLOUR_BLEND_TITLE": "misturar", + "COLOUR_BLEND_COLOUR1": "cor 1", + "COLOUR_BLEND_COLOUR2": "cor 2", + "COLOUR_BLEND_RATIO": "proporção", + "COLOUR_BLEND_TOOLTIP": "Mistura duas cores em uma dada proporção (0,0 - 1,0).", + "CONTROLS_REPEAT_HELPURL": "https://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle", + "CONTROLS_REPEAT_TITLE": "repita %1 vezes", + "CONTROLS_REPEAT_INPUT_DO": "faça", + "CONTROLS_REPEAT_TOOLTIP": "Faça algumas instruções várias vezes.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repita enquanto", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repita até", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Enquanto um valor for verdadeiro, então faça algumas instruções.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Enquanto um valor for falso, então faça algumas instruções.", + "CONTROLS_FOR_TOOLTIP": "Faça com que a variável '%1' assuma os valores do número inicial ao número final, contando de acordo com o intervalo especificado e execute os blocos especificados.", + "CONTROLS_FOR_TITLE": "contar com %1 de %2 até %3 por %4", + "CONTROLS_FOREACH_TITLE": "para cada item %1 na lista %2", + "CONTROLS_FOREACH_TOOLTIP": "Para cada item em uma lista, atribua o item à variável '%1' e então realize algumas instruções.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "encerra o laço", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continua com a próxima iteração do laço", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Encerra o laço.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ignora o resto deste laço, e continua com a próxima iteração.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Atenção: Este bloco só pode ser usado dentro de um laço.", + "CONTROLS_IF_TOOLTIP_1": "Se um valor for verdadeiro, então realize algumas instruções.", + "CONTROLS_IF_TOOLTIP_2": "Se um valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções.", + "CONTROLS_IF_TOOLTIP_3": "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções.", + "CONTROLS_IF_TOOLTIP_4": "Se o primeiro valor for verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções.", + "CONTROLS_IF_MSG_IF": "se", + "CONTROLS_IF_MSG_ELSEIF": "senão se", + "CONTROLS_IF_MSG_ELSE": "senão", + "CONTROLS_IF_IF_TOOLTIP": "Acrescente, remova ou reordene seções para reconfigurar este bloco.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Acrescente uma condição para o bloco se.", + "CONTROLS_IF_ELSE_TOOLTIP": "Acrescente uma condição final para o bloco se.", + "LOGIC_COMPARE_HELPURL": "https://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o", + "LOGIC_COMPARE_TOOLTIP_EQ": "Retorna verdadeiro se ambas as entradas forem iguais.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Retorna verdadeiro se ambas as entradas forem diferentes.", + "LOGIC_COMPARE_TOOLTIP_LT": "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada.", + "LOGIC_COMPARE_TOOLTIP_GT": "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada.", + "LOGIC_OPERATION_TOOLTIP_AND": "Retorna verdadeiro se ambas as entradas forem verdadeiras.", + "LOGIC_OPERATION_AND": "e", + "LOGIC_OPERATION_TOOLTIP_OR": "Retorna verdadeiro se uma das estradas for verdadeira.", + "LOGIC_OPERATION_OR": "ou", + "LOGIC_NEGATE_TITLE": "não %1", + "LOGIC_NEGATE_TOOLTIP": "Retorna verdadeiro se a entrada for falsa. Retorna falsa se a entrada for verdadeira.", + "LOGIC_BOOLEAN_TRUE": "verdadeiro", + "LOGIC_BOOLEAN_FALSE": "falso", + "LOGIC_BOOLEAN_TOOLTIP": "Retorna verdadeiro ou falso.", + "LOGIC_NULL": "nulo", + "LOGIC_NULL_TOOLTIP": "Retorna nulo.", + "LOGIC_TERNARY_CONDITION": "teste", + "LOGIC_TERNARY_IF_TRUE": "se verdadeiro", + "LOGIC_TERNARY_IF_FALSE": "se falso", + "LOGIC_TERNARY_TOOLTIP": "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\".", + "MATH_NUMBER_HELPURL": "https://pt.wikipedia.org/wiki/N%C3%BAmero", + "MATH_NUMBER_TOOLTIP": "Um número.", + "MATH_ARITHMETIC_HELPURL": "https://pt.wikipedia.org/wiki/Aritm%C3%A9tica", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Retorna a soma dos dois números.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retorna a diferença entre os dois números.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retorna o produto dos dois números.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retorna o quociente da divisão dos dois números.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Retorna o primeiro número elevado à potência do segundo número.", + "MATH_SINGLE_HELPURL": "https://pt.wikipedia.org/wiki/Raiz_quadrada", + "MATH_SINGLE_OP_ROOT": "raiz quadrada", + "MATH_SINGLE_TOOLTIP_ROOT": "Retorna a raiz quadrada de um número.", + "MATH_SINGLE_OP_ABSOLUTE": "absoluto", + "MATH_SINGLE_TOOLTIP_ABS": "Retorna o valor absoluto de um número.", + "MATH_SINGLE_TOOLTIP_NEG": "Retorna o oposto de um número.", + "MATH_SINGLE_TOOLTIP_LN": "Retorna o logaritmo natural de um número.", + "MATH_SINGLE_TOOLTIP_LOG10": "Retorna o logaritmo em base 10 de um número.", + "MATH_SINGLE_TOOLTIP_EXP": "Retorna o número e elevado à potência de um número.", + "MATH_SINGLE_TOOLTIP_POW10": "Retorna 10 elevado à potência de um número.", + "MATH_TRIG_HELPURL": "https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica", + "MATH_TRIG_TOOLTIP_SIN": "Retorna o seno de um grau (não radiano).", + "MATH_TRIG_TOOLTIP_COS": "Retorna o cosseno de um grau (não radiano).", + "MATH_TRIG_TOOLTIP_TAN": "Retorna a tangente de um grau (não radiano).", + "MATH_TRIG_TOOLTIP_ASIN": "Retorna o arco seno de um número.", + "MATH_TRIG_TOOLTIP_ACOS": "Retorna o arco cosseno de um número.", + "MATH_TRIG_TOOLTIP_ATAN": "Retorna o arco tangente de um número.", + "MATH_CONSTANT_HELPURL": "https://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas", + "MATH_CONSTANT_TOOLTIP": "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito).", + "MATH_IS_EVEN": "é par", + "MATH_IS_ODD": "é ímpar", + "MATH_IS_PRIME": "é primo", + "MATH_IS_WHOLE": "é inteiro", + "MATH_IS_POSITIVE": "é positivo", + "MATH_IS_NEGATIVE": "é negativo", + "MATH_IS_DIVISIBLE_BY": "é divisível por", + "MATH_IS_TOOLTIP": "Verifica se um número é par, ímpar, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso.", + "MATH_CHANGE_HELPURL": "https://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o", + "MATH_CHANGE_TITLE": "alterar %1 por %2", + "MATH_CHANGE_TOOLTIP": "Soma um número à variável \"%1\".", + "MATH_ROUND_HELPURL": "https://pt.wikipedia.org/wiki/Arredondamento", + "MATH_ROUND_TOOLTIP": "Arredonda um número para cima ou para baixo.", + "MATH_ROUND_OPERATOR_ROUND": "arredonda", + "MATH_ROUND_OPERATOR_ROUNDUP": "arredonda para cima", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "arredonda para baixo", + "MATH_ONLIST_OPERATOR_SUM": "soma de uma lista", + "MATH_ONLIST_TOOLTIP_SUM": "Retorna a soma de todos os números na lista.", + "MATH_ONLIST_OPERATOR_MIN": "menor da lista", + "MATH_ONLIST_TOOLTIP_MIN": "Retorna o menor número da lista.", + "MATH_ONLIST_OPERATOR_MAX": "maior da lista", + "MATH_ONLIST_TOOLTIP_MAX": "Retorna o maior número da lista.", + "MATH_ONLIST_OPERATOR_AVERAGE": "média da lista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Retorna a média aritmética dos números da lista.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana da lista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Retorna a mediana dos números da lista.", + "MATH_ONLIST_OPERATOR_MODE": "moda da lista", + "MATH_ONLIST_TOOLTIP_MODE": "Retorna uma lista do(s) item(ns) mais comum(ns) da lista.", + "MATH_ONLIST_OPERATOR_STD_DEV": "desvio padrão da lista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Retorna o desvio padrão dos números da lista.", + "MATH_ONLIST_OPERATOR_RANDOM": "item aleatório da lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Retorna um elemento aleatório da lista.", + "MATH_MODULO_HELPURL": "https://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo", + "MATH_MODULO_TITLE": "resto da divisão de %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Retorna o resto da divisão de dois números.", + "MATH_CONSTRAIN_TITLE": "restringe %1 inferior %2 superior %3", + "MATH_CONSTRAIN_TOOLTIP": "Restringe um número entre os limites especificados (inclusivo).", + "MATH_RANDOM_INT_HELPURL": "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios", + "MATH_RANDOM_INT_TITLE": "inteiro aleatório entre %1 e %2", + "MATH_RANDOM_INT_TOOLTIP": "Retorna um número inteiro entre os dois limites informados, inclusivo.", + "MATH_RANDOM_FLOAT_HELPURL": "https://pt.wikipedia.org/wiki/Gerador_de_n%C3%BAmeros_pseudoaleat%C3%B3rios", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fração aleatória", + "MATH_RANDOM_FLOAT_TOOLTIP": "Retorna uma fração aleatória entre 0.0 (inclusivo) e 1.0 (exclusivo).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Retorne o arco tangente do ponto (X, Y) em graus de -180 a 180.", + "TEXT_TEXT_HELPURL": "https://pt.wikipedia.org/wiki/Cadeia_de_caracteres", + "TEXT_TEXT_TOOLTIP": "Uma letra, palavra ou linha de texto.", + "TEXT_JOIN_TITLE_CREATEWITH": "criar texto com", + "TEXT_JOIN_TOOLTIP": "Criar um pedaço de texto juntando qualquer número de itens.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", + "TEXT_CREATE_JOIN_TOOLTIP": "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Acrescentar um item ao texto.", + "TEXT_APPEND_TITLE": "para %1 anexar texto %2", + "TEXT_APPEND_TOOLTIP": "Acrescentar um pedaço de texto à variável \"%1\".", + "TEXT_LENGTH_TITLE": "tamanho de %1", + "TEXT_LENGTH_TOOLTIP": "Retorna o número de letras (incluindo espaços) no texto fornecido.", + "TEXT_ISEMPTY_TITLE": "%1 é vazio", + "TEXT_ISEMPTY_TOOLTIP": "Retorna verdadeiro se o texto fornecido for vazio.", + "TEXT_INDEXOF_TOOLTIP": "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado.", + "TEXT_INDEXOF_TITLE": "no texto %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "encontre a primeira ocorrência do item", + "TEXT_INDEXOF_OPERATOR_LAST": "encontre a última ocorrência do texto", + "TEXT_CHARAT_TITLE": "no texto %1 %2", + "TEXT_CHARAT_FROM_START": "obter letra nº", + "TEXT_CHARAT_FROM_END": "obter letra # a partir do final", + "TEXT_CHARAT_FIRST": "obter primeira letra", + "TEXT_CHARAT_LAST": "obter última letra", + "TEXT_CHARAT_RANDOM": "obter letra aleatória", + "TEXT_CHARAT_TOOLTIP": "Retorna a letra na posição especificada.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Retorna o trecho de texto especificado.", + "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "no texto", + "TEXT_GET_SUBSTRING_START_FROM_START": "obter trecho de letra nº", + "TEXT_GET_SUBSTRING_START_FROM_END": "obter trecho de letra nº a partir do final", + "TEXT_GET_SUBSTRING_START_FIRST": "obter trecho de primeira letra", + "TEXT_GET_SUBSTRING_END_FROM_START": "até letra nº", + "TEXT_GET_SUBSTRING_END_FROM_END": "até letra nº a partir do final", + "TEXT_GET_SUBSTRING_END_LAST": "até última letra", + "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", + "TEXT_CHANGECASE_TOOLTIP": "Retorna uma cópia do texto em um formato diferente.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "para MAIÚSCULAS", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "para minúsculas", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "para Nomes Próprios", + "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", + "TEXT_TRIM_TOOLTIP": "Retorna uma cópia do texto com os espaços removidos de uma ou ambas extremidades.", + "TEXT_TRIM_OPERATOR_BOTH": "remover espaços de ambos os lados de", + "TEXT_TRIM_OPERATOR_LEFT": "remover espaços à esquerda de", + "TEXT_TRIM_OPERATOR_RIGHT": "remover espaços à direita de", + "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", + "TEXT_PRINT_TITLE": "imprime %1", + "TEXT_PRINT_TOOLTIP": "Imprime o texto, número ou valor especificado.", + "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", + "TEXT_PROMPT_TYPE_TEXT": "Pede um texto com uma mensagem", + "TEXT_PROMPT_TYPE_NUMBER": "Pede um número com uma mensagem", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Pede ao usuário um número.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Pede ao usuário um texto.", + "TEXT_COUNT_MESSAGE0": "Contar %1 em %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Calcule quantas vezes algum texto aparece centro de algum outro texto.", + "TEXT_REPLACE_MESSAGE0": "substituir %1 por %2 em %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Texto#substituindo-substrings", + "TEXT_REPLACE_TOOLTIP": "Substitua todas as ocorrências de algum texto dentro de algum outro texto.", + "TEXT_REVERSE_MESSAGE0": "inverter %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Texto#invertendo-texto", + "TEXT_REVERSE_TOOLTIP": "Inverter a ordem dos caracteres no texto.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "criar lista vazia", + "LISTS_CREATE_EMPTY_TOOLTIP": "Retorna uma lista, de tamanho 0, contendo nenhum registro", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Cria uma lista com a quantidade de itens informada.", + "LISTS_CREATE_WITH_INPUT_WITH": "criar lista com", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Acrescenta, remove ou reordena seções para reconfigurar este bloco de lista.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Acrescenta um item à lista.", + "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_REPEAT_TOOLTIP": "Cria uma lista consistindo no valor informado repetido o número de vezes especificado.", + "LISTS_REPEAT_TITLE": "criar lista com item %1 repetido %2 vezes", + "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", + "LISTS_LENGTH_TITLE": "tamanho de %1", + "LISTS_LENGTH_TOOLTIP": "Retorna o tamanho de uma lista.", + "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", + "LISTS_ISEMPTY_TITLE": "%1 é vazia", + "LISTS_ISEMPTY_TOOLTIP": "Retorna ao verdadeiro se a lista estiver vazia.", + "LISTS_INLIST": "na lista", + "LISTS_INDEX_OF_FIRST": "encontre a primeira ocorrência do item", + "LISTS_INDEX_OF_LAST": "encontre a última ocorrência do item", + "LISTS_INDEX_OF_TOOLTIP": "Retorna o índice da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado.", + "LISTS_GET_INDEX_GET": "obter", + "LISTS_GET_INDEX_GET_REMOVE": "obter e remover", + "LISTS_GET_INDEX_REMOVE": "remover", + "LISTS_GET_INDEX_FROM_START": "nº", + "LISTS_GET_INDEX_FROM_END": "nº a partir do final", + "LISTS_GET_INDEX_FIRST": "primeiro", + "LISTS_GET_INDEX_LAST": "último", + "LISTS_GET_INDEX_RANDOM": "aleatório", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 é o primeiro item.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 é o último item.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Retorna o item da lista na posição especificada.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Retorna o primeiro item em uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Retorna o último item em uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Retorna um item aleatório de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Remove e retorna o item na posição especificada em uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Remove e retorna o primeiro item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Remove e retorna o último item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Remove e retorna um item aleatório de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Remove o item na posição especificada em uma lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Remove o primeiro item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Remove o último item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Remove um item aleatório de uma lista.", + "LISTS_SET_INDEX_SET": "definir", + "LISTS_SET_INDEX_INSERT": "inserir em", + "LISTS_SET_INDEX_INPUT_TO": "como", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Define o item da posição especificada de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Define o primeiro item de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Define o último item de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Define um item aleatório de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insere o item na posição especificada em uma lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insere o item no início de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Insere o item no final de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insere o item em uma posição qualquer de uma lista.", + "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", + "LISTS_GET_SUBLIST_START_FROM_START": "obtém sublista de nº", + "LISTS_GET_SUBLIST_START_FROM_END": "obtém sublista de nº a partir do final", + "LISTS_GET_SUBLIST_START_FIRST": "obtém sublista a partir do primeiro", + "LISTS_GET_SUBLIST_END_FROM_START": "até nº", + "LISTS_GET_SUBLIST_END_FROM_END": "até nº a partir do final", + "LISTS_GET_SUBLIST_END_LAST": "até último", + "LISTS_GET_SUBLIST_TOOLTIP": "Cria uma cópia da porção especificada de uma lista.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "ordenar %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ordenar uma cópia de uma lista.", + "LISTS_SORT_ORDER_ASCENDING": "ascendente", + "LISTS_SORT_ORDER_DESCENDING": "descendente", + "LISTS_SORT_TYPE_NUMERIC": "numérico", + "LISTS_SORT_TYPE_TEXT": "alfabético", + "LISTS_SORT_TYPE_IGNORECASE": "alfabético, ignorar maiúscula/minúscula", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "Fazer uma lista a partir do texto", + "LISTS_SPLIT_TEXT_FROM_LIST": "fazer um texto a partir da lista", + "LISTS_SPLIT_WITH_DELIMITER": "com delimitador", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividir o texto em uma lista de textos, separando-o em cada delimitador.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Juntar uma lista de textos em um único texto, separado por um delimitador.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Listas#invertendo-uma-lista", + "LISTS_REVERSE_MESSAGE0": "inverter %1", + "LISTS_REVERSE_TOOLTIP": "Inverter uma cópia da lista.", + "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", + "VARIABLES_GET_TOOLTIP": "Retorna o valor desta variável.", + "VARIABLES_GET_CREATE_SET": "Criar \"definir %1\"", + "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", + "VARIABLES_SET": "definir %1 para %2", + "VARIABLES_SET_TOOLTIP": "Define esta variável para o valor da entrada.", + "VARIABLES_SET_CREATE_GET": "Criar \"obter %1\"", + "PROCEDURES_DEFNORETURN_HELPURL": "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)", + "PROCEDURES_DEFNORETURN_TITLE": "para", + "PROCEDURES_DEFNORETURN_PROCEDURE": "faça algo", + "PROCEDURES_BEFORE_PARAMS": "com:", + "PROCEDURES_CALL_BEFORE_PARAMS": "com:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Cria uma função que não tem retorno.", + "PROCEDURES_DEFNORETURN_COMMENT": "Descreva esta função...", + "PROCEDURES_DEFRETURN_HELPURL": "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)", + "PROCEDURES_DEFRETURN_RETURN": "retorna", + "PROCEDURES_DEFRETURN_TOOLTIP": "Cria uma função que possui um valor de retorno.", + "PROCEDURES_ALLOW_STATEMENTS": "permitir declarações", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Atenção: Esta função tem parâmetros duplicados.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://pt.wikipedia.org/wiki/M%C3%A9todo_(programa%C3%A7%C3%A3o)", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Executa a função definida pelo usuário \"%1\".", + "PROCEDURES_CALLRETURN_HELPURL": "https://pt.wikipedia.org/wiki/Sub-rotina", + "PROCEDURES_CALLRETURN_TOOLTIP": "Executa a função definida pelo usuário \"%1\" e usa seu retorno.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Adiciona, remove, ou reordena as entradas para esta função.", + "PROCEDURES_MUTATORARG_TITLE": "nome da entrada:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Adiciona uma entrada para esta função", + "PROCEDURES_HIGHLIGHT_DEF": "Destacar definição da função", + "PROCEDURES_CREATE_DO": "Criar \"%1\"", + "PROCEDURES_IFRETURN_TOOLTIP": "Se um valor é verdadeiro, então retorna um valor.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Atenção: Este bloco só pode ser utilizado dentro da definição de uma função.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Diz algo...", + "WORKSPACE_ARIA_LABEL": "Espaço de trabalho do Blockly", + "COLLAPSED_WARNINGS_WARNING": "Bloqueios recolhidos contêm avisos.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Cancelar", + + "VARIABLES_CALL_TOOLTIP": "Chama um método da variável atual", + "VARIABLES_CALL_OUT_TOOLTIP": "Chama um método da variável atual com retorno.", + "CALL_TEXT": "chamar", + "RETURN_TEXT": "retornar", + "PROCEDURES_SETUP_SUPERVISOR_TOOLTIP": "Bloco que contem os blocos de inicialização do supervisório.", + "PROCEDURES_SETUP_TOOLTIP": "Bloco que contem os blocos de inicialização do programa.", + "PROCEDURES_RUN_TOOLTIP": "Bloco que contem os blocos de execução do programa.", + "PROCEDURES_SETUP_TITLE": "Inicialização", + "PROCEDURES_SETUP_SUPERVISOR_TITLE": "Inicialização do Supervisório", + "PROCEDURES_RUN_TITLE": "Execução", + "VARIABLES_METHODS_CALLS": "Chamadas de métodos", + "PROCEDURES_MAIN_FUNCS": "Funções principais" +} diff --git a/msg/json/pt.json b/msg/json/pt.json index 85b6a445fd9..82f9e245de6 100644 --- a/msg/json/pt.json +++ b/msg/json/pt.json @@ -1,373 +1,373 @@ -{ - "@metadata": { - "authors": [ - "Athena in Wonderland", - "Diniscoelho", - "Fúlvio", - "Hamilton Abreu", - "Imperadeiro98", - "Mansil", - "Mansil alfalb", - "Mauricio", - "McDutchie", - "MokaAkashiyaPT", - "Nicola Nascimento", - "Vicng", - "Vitorvicentevalente", - "Waldir", - "Waldyrious", - "Önni", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "item", - "UNNAMED_KEY": "sem nome", - "TODAY": "Hoje", - "DUPLICATE_BLOCK": "Duplicar", - "ADD_COMMENT": "Adicionar Comentário", - "REMOVE_COMMENT": "Remover Comentário", - "DUPLICATE_COMMENT": "Duplicar comentário", - "EXTERNAL_INPUTS": "Entradas Externas", - "INLINE_INPUTS": "Entradas Em Linhas", - "DELETE_BLOCK": "Eliminar Bloco", - "DELETE_X_BLOCKS": "Eliminar %1 Blocos", - "DELETE_ALL_BLOCKS": "Eliminar todos os %1 blocos?", - "CLEAN_UP": "Limpar Blocos", - "COLLAPSE_BLOCK": "Ocultar Bloco", - "COLLAPSE_ALL": "Ocultar Blocos", - "EXPAND_BLOCK": "Expandir Bloco", - "EXPAND_ALL": "Expandir Blocos", - "DISABLE_BLOCK": "Desativar Bloco", - "ENABLE_BLOCK": "Ativar Bloco", - "HELP": "Ajuda", - "UNDO": "Desfazer", - "REDO": "Refazer", - "CHANGE_VALUE_TITLE": "Alterar valor:", - "RENAME_VARIABLE": "Renomear variável...", - "RENAME_VARIABLE_TITLE": "Renomear todas as variáveis '%1' para:", - "NEW_VARIABLE": "Criar variável…", - "NEW_STRING_VARIABLE": "Criar variável de segmentos de texto...", - "NEW_NUMBER_VARIABLE": "Criar variável numérica...", - "NEW_COLOUR_VARIABLE": "Criar variável colorida...", - "NEW_VARIABLE_TYPE_TITLE": "Tipo da nova variável:", - "NEW_VARIABLE_TITLE": "Nome da nova variável:", - "VARIABLE_ALREADY_EXISTS": "Já existe uma variável com o nome de '%1'.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Já existe uma variável chamada '%1' para outra do tipo: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Eliminar %1 utilizações da variável '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Não se pode eliminar a variável '%1' porque faz parte da definição da função '%2'", - "DELETE_VARIABLE": "Eliminar a variável '%1'", - "COLOUR_PICKER_HELPURL": "http://pt.wikipedia.org/wiki/Cor", - "COLOUR_PICKER_TOOLTIP": "Escolha uma cor da paleta de cores.", - "COLOUR_RANDOM_TITLE": "cor aleatória", - "COLOUR_RANDOM_TOOLTIP": "Escolha uma cor aleatoriamente.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "pinte com", - "COLOUR_RGB_RED": "vermelho", - "COLOUR_RGB_GREEN": "verde", - "COLOUR_RGB_BLUE": "azul", - "COLOUR_RGB_TOOLTIP": "Cria uma cor de acordo com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "misturar", - "COLOUR_BLEND_COLOUR1": "cor 1", - "COLOUR_BLEND_COLOUR2": "cor 2", - "COLOUR_BLEND_RATIO": "proporção", - "COLOUR_BLEND_TOOLTIP": "Mistura duas cores com a proporção indicada (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "http://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle", - "CONTROLS_REPEAT_TITLE": "repetir %1 vez", - "CONTROLS_REPEAT_INPUT_DO": "faça", - "CONTROLS_REPEAT_TOOLTIP": "Faça algumas instruções várias vezes.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir enquanto", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir até", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Enquanto um valor for verdadeiro, então faça algumas instruções.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Enquanto um valor for falso, então faça algumas instruções.", - "CONTROLS_FOR_TOOLTIP": "Faz com que a variável \"%1\" assuma os valores desde o número inicial até ao número final, contando de acordo com o intervalo especificado e executa os blocos especificados.", - "CONTROLS_FOR_TITLE": "contar com %1 de %2 até %3 por %4", - "CONTROLS_FOREACH_TITLE": "para cada item %1 na lista %2", - "CONTROLS_FOREACH_TOOLTIP": "Para cada item numa lista, define a variável \"%1\" para o item e então faz algumas instruções.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "sair do ciclo", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuar com a próxima iteração do ciclo", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Sair do ciclo que está contido.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ignorar o resto deste ciclo, e continuar com a próxima iteração.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Aviso: Este bloco só pode ser usado dentro de um ciclo.", - "CONTROLS_IF_TOOLTIP_1": "Se um valor é verdadeiro, então realize alguns passos.", - "CONTROLS_IF_TOOLTIP_2": "Se um valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções", - "CONTROLS_IF_TOOLTIP_3": "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções.", - "CONTROLS_IF_TOOLTIP_4": "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções.", - "CONTROLS_IF_MSG_IF": "se", - "CONTROLS_IF_MSG_ELSEIF": "senão se", - "CONTROLS_IF_MSG_ELSE": "senão", - "CONTROLS_IF_IF_TOOLTIP": "Acrescente, remova ou reordene secções para reconfigurar este bloco se.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Acrescente uma condição ao bloco se.", - "CONTROLS_IF_ELSE_TOOLTIP": "Acrescente uma condição de excepação final para o bloco se.", - "LOGIC_COMPARE_HELPURL": "http://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o", - "LOGIC_COMPARE_TOOLTIP_EQ": "Retorna verdadeiro se ambas as entradas forem iguais entre si.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Retorna verdadeiro se ambas as entradas forem diferentes entre si.", - "LOGIC_COMPARE_TOOLTIP_LT": "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada.", - "LOGIC_COMPARE_TOOLTIP_GT": "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada.", - "LOGIC_OPERATION_TOOLTIP_AND": "Retorna verdadeiro se ambas as entradas forem verdadeiras.", - "LOGIC_OPERATION_AND": "e", - "LOGIC_OPERATION_TOOLTIP_OR": "Retorna verdadeiro se pelo menos uma das estradas for verdadeira.", - "LOGIC_OPERATION_OR": "ou", - "LOGIC_NEGATE_TITLE": "não %1", - "LOGIC_NEGATE_TOOLTIP": "Retorna verdadeiro se a entrada for falsa. Retorna falso se a entrada for verdadeira.", - "LOGIC_BOOLEAN_TRUE": "verdadeiro", - "LOGIC_BOOLEAN_FALSE": "falso", - "LOGIC_BOOLEAN_TOOLTIP": "Retorna verdadeiro ou falso.", - "LOGIC_NULL_HELPURL": "http://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "nulo", - "LOGIC_NULL_TOOLTIP": "Retorna nulo.", - "LOGIC_TERNARY_HELPURL": "http://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "teste", - "LOGIC_TERNARY_IF_TRUE": "se verdadeiro", - "LOGIC_TERNARY_IF_FALSE": "se falso", - "LOGIC_TERNARY_TOOLTIP": "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\".", - "MATH_NUMBER_HELPURL": "http://pt.wikipedia.org/wiki/N%C3%BAmero", - "MATH_NUMBER_TOOLTIP": "Um número.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "http://pt.wikipedia.org/wiki/Aritm%C3%A9tica", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Retorna a soma de dois números.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retorna a diferença de dois números.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retorna o produto de dois números.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retorna o quociente da divisão de dois números.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Retorna o primeiro número elevado à potência do segundo número.", - "MATH_SINGLE_HELPURL": "http://pt.wikipedia.org/wiki/Raiz_quadrada", - "MATH_SINGLE_OP_ROOT": "raíz quadrada", - "MATH_SINGLE_TOOLTIP_ROOT": "Retorna a raiz quadrada de um número.", - "MATH_SINGLE_OP_ABSOLUTE": "absoluto", - "MATH_SINGLE_TOOLTIP_ABS": "Retorna o valor absoluto de um número.", - "MATH_SINGLE_TOOLTIP_NEG": "Retorna o oposto de um número.", - "MATH_SINGLE_TOOLTIP_LN": "Retorna o logarítmo natural de um número.", - "MATH_SINGLE_TOOLTIP_LOG10": "Retorna o logarítmo em base 10 de um número.", - "MATH_SINGLE_TOOLTIP_EXP": "Retorna o número e elevado à potência de um número.", - "MATH_SINGLE_TOOLTIP_POW10": "Retorna 10 elevado à potência de um número.", - "MATH_TRIG_HELPURL": "http://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica", - "MATH_TRIG_TOOLTIP_SIN": "Retorna o seno de um grau (não radiano).", - "MATH_TRIG_TOOLTIP_COS": "Retorna o cosseno de um grau (não radiano).", - "MATH_TRIG_TOOLTIP_TAN": "Retorna a tangente de um grau (não radiano).", - "MATH_TRIG_TOOLTIP_ASIN": "Retorna o arco seno de um número.", - "MATH_TRIG_TOOLTIP_ACOS": "Retorna o arco cosseno de um número.", - "MATH_TRIG_TOOLTIP_ATAN": "Retorna o arco tangente de um número.", - "MATH_CONSTANT_HELPURL": "http://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas", - "MATH_CONSTANT_TOOLTIP": "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito).", - "MATH_IS_EVEN": "é par", - "MATH_IS_ODD": "é impar", - "MATH_IS_PRIME": "é primo", - "MATH_IS_WHOLE": "é inteiro", - "MATH_IS_POSITIVE": "é positivo", - "MATH_IS_NEGATIVE": "é negativo", - "MATH_IS_DIVISIBLE_BY": "é divisível por", - "MATH_IS_TOOLTIP": "Verifica se um número é par, impar, primo, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso.", - "MATH_CHANGE_HELPURL": "http://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o", - "MATH_CHANGE_TITLE": "alterar %1 por %2", - "MATH_CHANGE_TOOLTIP": "Soma um número à variável \"%1\".", - "MATH_ROUND_HELPURL": "http://pt.wikipedia.org/wiki/Arredondamento", - "MATH_ROUND_TOOLTIP": "Arredonda um número para cima ou para baixo.", - "MATH_ROUND_OPERATOR_ROUND": "arredonda", - "MATH_ROUND_OPERATOR_ROUNDUP": "arredonda para cima", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "arredonda para baixo", - "MATH_ONLIST_OPERATOR_SUM": "soma da lista", - "MATH_ONLIST_TOOLTIP_SUM": "Retorna a soma de todos os números da lista.", - "MATH_ONLIST_OPERATOR_MIN": "menor de uma lista", - "MATH_ONLIST_TOOLTIP_MIN": "Retorna o menor número da lista.", - "MATH_ONLIST_OPERATOR_MAX": "maior de uma lista", - "MATH_ONLIST_TOOLTIP_MAX": "Retorna o maior número da lista.", - "MATH_ONLIST_OPERATOR_AVERAGE": "média de uma lista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Retorna a média aritmética dos valores números da lista.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana de uma lista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Retorna a mediana da lista.", - "MATH_ONLIST_OPERATOR_MODE": "moda de uma lista", - "MATH_ONLIST_TOOLTIP_MODE": "Retorna a lista de item(ns) mais comum(ns) da lista.", - "MATH_ONLIST_OPERATOR_STD_DEV": "desvio padrão de uma lista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Retorna o desvio padrão dos números da lista.", - "MATH_ONLIST_OPERATOR_RANDOM": "item aleatório de uma lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Retorna um elemento aleatório da lista.", - "MATH_MODULO_HELPURL": "http://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo", - "MATH_MODULO_TITLE": "resto da divisão de %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Retorna o resto da divisão de dois números.", - "MATH_CONSTRAIN_TITLE": "restringe %1 inferior %2 superior %3", - "MATH_CONSTRAIN_TOOLTIP": "Restringe um número entre os limites especificados (inclusive).", - "MATH_RANDOM_INT_HELPURL": "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio", - "MATH_RANDOM_INT_TITLE": "inteiro aleatório entre %1 e %2", - "MATH_RANDOM_INT_TOOLTIP": "Retorna um número inteiro entre os dois limites especificados, inclusive.", - "MATH_RANDOM_FLOAT_HELPURL": "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fração aleatória", - "MATH_RANDOM_FLOAT_TOOLTIP": "Insere uma fração aleatória entre 0.0 (inclusive) e 1.0 (exclusive).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Devolver o arco tangente do ponto (X, Y) em graus entre -180 e 180.", - "TEXT_TEXT_HELPURL": "http://pt.wikipedia.org/wiki/Cadeia_de_caracteres", - "TEXT_TEXT_TOOLTIP": "Uma letra, palavra ou linha de texto.", - "TEXT_JOIN_TITLE_CREATEWITH": "criar texto com", - "TEXT_JOIN_TOOLTIP": "Criar um pedaço de texto juntando qualquer número de itens.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", - "TEXT_CREATE_JOIN_TOOLTIP": "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Acrescentar um item ao texto.", - "TEXT_APPEND_TITLE": "para %1 acrescentar texto %2", - "TEXT_APPEND_TOOLTIP": "Acrescentar um pedaço de texto à variável \"%1\".", - "TEXT_LENGTH_TITLE": "tamanho de %1", - "TEXT_LENGTH_TOOLTIP": "Devolve o número de letras (incluindo espaços) do texto fornecido.", - "TEXT_ISEMPTY_TITLE": "%1 está vazio", - "TEXT_ISEMPTY_TOOLTIP": "Retorna verdadeiro se o texto fornecido estiver vazio.", - "TEXT_INDEXOF_TOOLTIP": "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado.", - "TEXT_INDEXOF_TITLE": "no texto %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "primeira ocorrência do texto", - "TEXT_INDEXOF_OPERATOR_LAST": "última ocorrência do texto", - "TEXT_CHARAT_TITLE": "no texto %1 %2", - "TEXT_CHARAT_FROM_START": "obter letra nº", - "TEXT_CHARAT_FROM_END": "obter letra nº a partir do final", - "TEXT_CHARAT_FIRST": "obter primeira letra", - "TEXT_CHARAT_LAST": "obter última letra", - "TEXT_CHARAT_RANDOM": "obter letra aleatória", - "TEXT_CHARAT_TOOLTIP": "Retorna a letra na posição especificada.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Retorna a parte especificada do texto.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "no texto", - "TEXT_GET_SUBSTRING_START_FROM_START": "obter subsequência de tamanho #", - "TEXT_GET_SUBSTRING_START_FROM_END": "obter subsequência de tamanho # a partir do final", - "TEXT_GET_SUBSTRING_START_FIRST": "obter subsequência a partir da primeira letra", - "TEXT_GET_SUBSTRING_END_FROM_START": "até letra nº", - "TEXT_GET_SUBSTRING_END_FROM_END": "até letra nº a partir do final", - "TEXT_GET_SUBSTRING_END_LAST": "até última letra", - "TEXT_CHANGECASE_TOOLTIP": "Retorna uma cópia do texto em formato diferente.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "para MAIÚSCULAS", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "para minúsculas", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "para Iniciais Maiúsculas", - "TEXT_TRIM_TOOLTIP": "Retorna uma cópia do texto com os espaços removidos de uma ou ambas as extremidades.", - "TEXT_TRIM_OPERATOR_BOTH": "remover espaços de ambos os lados", - "TEXT_TRIM_OPERATOR_LEFT": "remover espaços à esquerda de", - "TEXT_TRIM_OPERATOR_RIGHT": "remover espaços à direita", - "TEXT_PRINT_TITLE": "imprime %1", - "TEXT_PRINT_TOOLTIP": "Imprime o texto, número ou outro valor especificado.", - "TEXT_PROMPT_TYPE_TEXT": "Pede um texto com a mensagem", - "TEXT_PROMPT_TYPE_NUMBER": "pede um número com a mensagem", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Pede ao utilizador um número.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Pede ao utilizador um texto.", - "TEXT_COUNT_MESSAGE0": "contar %1 em %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Conte quantas vezes um certo texto aparece dentro de algum outro texto.", - "TEXT_REPLACE_MESSAGE0": "substituir %1 por %2 em %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Substituir todas as ocorrências de um certo texto dentro de algum outro texto.", - "TEXT_REVERSE_MESSAGE0": "inverter %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Inverte a ordem dos caracteres no texto.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "criar lista vazia", - "LISTS_CREATE_EMPTY_TOOLTIP": "Retorna uma lista, de tamanho 0, contendo nenhum registo", - "LISTS_CREATE_WITH_TOOLTIP": "Cria uma lista com qualquer número de itens.", - "LISTS_CREATE_WITH_INPUT_WITH": "criar lista com", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Acrescente, remova ou reordene as seções para reconfigurar este bloco lista.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Acrescenta um item à lista.", - "LISTS_REPEAT_TOOLTIP": "Cria uma lista constituída por um dado valor repetido o número de vezes especificado.", - "LISTS_REPEAT_TITLE": "criar lista com o item %1 repetido %2 vezes", - "LISTS_LENGTH_TITLE": "tamanho de %1", - "LISTS_LENGTH_TOOLTIP": "Retorna o tamanho de uma lista.", - "LISTS_ISEMPTY_TITLE": "%1 está vazia", - "LISTS_ISEMPTY_TOOLTIP": "Retona verdadeiro se a lista estiver vazia.", - "LISTS_INLIST": "na lista", - "LISTS_INDEX_OF_FIRST": "encontre a primeira ocorrência do item", - "LISTS_INDEX_OF_LAST": "encontre a última ocorrência do item", - "LISTS_INDEX_OF_TOOLTIP": "Retorna a posição da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado.", - "LISTS_GET_INDEX_GET": "obter", - "LISTS_GET_INDEX_GET_REMOVE": "obter e remover", - "LISTS_GET_INDEX_REMOVE": "remover", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# a partir do final", - "LISTS_GET_INDEX_FIRST": "primeiro", - "LISTS_GET_INDEX_LAST": "último", - "LISTS_GET_INDEX_RANDOM": "aleatório", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 é o primeiro item.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 é o último item.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Retorna o item na posição especificada da lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Retorna o primeiro item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Retorna o último item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Retorna um item aleatório de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Remove e retorna o item na posição especificada de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Remove e retorna o primeiro item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Remove e retorna o último item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Remove e retorna um item aleatório de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Remove o item de uma posição especifica da lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Remove o primeiro item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Remove o último item de uma lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Remove um item aleatório de uma lista.", - "LISTS_SET_INDEX_SET": "definir", - "LISTS_SET_INDEX_INSERT": "inserir em", - "LISTS_SET_INDEX_INPUT_TO": "como", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Define o item na posição especificada de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Define o primeiro item de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Define o último item de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Define um item aleatório de uma lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insere o item numa posição especificada numa lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insere o item no início da lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Insere o item no final da lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insere o item numa posição aleatória de uma lista.", - "LISTS_GET_SUBLIST_START_FROM_START": "obtem sublista de #", - "LISTS_GET_SUBLIST_START_FROM_END": "obtem sublista de # a partir do final", - "LISTS_GET_SUBLIST_START_FIRST": "obtem sublista da primeira lista", - "LISTS_GET_SUBLIST_END_FROM_START": "até #", - "LISTS_GET_SUBLIST_END_FROM_END": "até #, a partir do final", - "LISTS_GET_SUBLIST_END_LAST": "para o último", - "LISTS_GET_SUBLIST_TOOLTIP": "Cria uma cópia da porção especificada de uma lista.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "ordenar %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Ordenar uma cópia de uma lista.", - "LISTS_SORT_ORDER_ASCENDING": "ascendente", - "LISTS_SORT_ORDER_DESCENDING": "descendente", - "LISTS_SORT_TYPE_NUMERIC": "numérica", - "LISTS_SORT_TYPE_TEXT": "alfabética", - "LISTS_SORT_TYPE_IGNORECASE": "alfabética, ignorar maiúsculas/minúsculas", - "LISTS_SPLIT_LIST_FROM_TEXT": "fazer lista a partir de texto", - "LISTS_SPLIT_TEXT_FROM_LIST": "fazer texto a partir da lista", - "LISTS_SPLIT_WITH_DELIMITER": "com delimitador", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividir o texto numa lista de textos, separando-o em cada delimitador.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Juntar uma lista de textos num único texto, separado por um delimitador.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "inverter %1", - "LISTS_REVERSE_TOOLTIP": "Inverter uma cópia da lista.", - "VARIABLES_GET_TOOLTIP": "Retorna o valor desta variável.", - "VARIABLES_GET_CREATE_SET": "Criar \"definir %1\"", - "VARIABLES_SET": "definir %1 para %2", - "VARIABLES_SET_TOOLTIP": "Define esta variável para o valor inserido.", - "VARIABLES_SET_CREATE_GET": "Criar \"obter %1\"", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_DEFNORETURN_TITLE": "para", - "PROCEDURES_DEFNORETURN_PROCEDURE": "faz algo", - "PROCEDURES_BEFORE_PARAMS": "com:", - "PROCEDURES_CALL_BEFORE_PARAMS": "com:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Cria uma função que não tem retorno.", - "PROCEDURES_DEFNORETURN_COMMENT": "Descreva esta função...", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_DEFRETURN_RETURN": "retorna", - "PROCEDURES_DEFRETURN_TOOLTIP": "Cria uma função que possui um valor de retorno.", - "PROCEDURES_ALLOW_STATEMENTS": "permitir declarações", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Aviso: Esta função tem parâmetros duplicados.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://pt.wikipedia.org/wiki/Sub-rotina", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Executa a função \"%1\".", - "PROCEDURES_CALLRETURN_HELPURL": "https://pt.wikipedia.org/wiki/Sub-rotina", - "PROCEDURES_CALLRETURN_TOOLTIP": "Executa a função \"%1\" e usa o seu retorno.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Adicionar, remover ou reordenar as entradas para esta função.", - "PROCEDURES_MUTATORARG_TITLE": "nome da entrada:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Adicionar uma entrada para a função.", - "PROCEDURES_HIGHLIGHT_DEF": "Destacar definição da função", - "PROCEDURES_CREATE_DO": "Criar \"%1\"", - "PROCEDURES_IFRETURN_TOOLTIP": "se o valor é verdadeiro, então retorna um segundo valor.", - "PROCEDURES_IFRETURN_WARNING": "Aviso: Este bloco só pode ser utilizado dentro da definição de uma função.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Diz algo...", - "WORKSPACE_ARIA_LABEL": "Espaço de trabalho de Blockly", - "COLLAPSED_WARNINGS_WARNING": "Os blocos ocultados contêm avisos.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Cancelar" -} +{ + "@metadata": { + "authors": [ + "Athena in Wonderland", + "Diniscoelho", + "Fúlvio", + "Hamilton Abreu", + "Imperadeiro98", + "Mansil", + "Mansil alfalb", + "Mauricio", + "McDutchie", + "MokaAkashiyaPT", + "Nicola Nascimento", + "Vicng", + "Vitorvicentevalente", + "Waldir", + "Waldyrious", + "Önni", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "item", + "UNNAMED_KEY": "sem nome", + "TODAY": "Hoje", + "DUPLICATE_BLOCK": "Duplicar", + "ADD_COMMENT": "Adicionar Comentário", + "REMOVE_COMMENT": "Remover Comentário", + "DUPLICATE_COMMENT": "Duplicar comentário", + "EXTERNAL_INPUTS": "Entradas Externas", + "INLINE_INPUTS": "Entradas Em Linhas", + "DELETE_BLOCK": "Eliminar Bloco", + "DELETE_X_BLOCKS": "Eliminar %1 Blocos", + "DELETE_ALL_BLOCKS": "Eliminar todos os %1 blocos?", + "CLEAN_UP": "Limpar Blocos", + "COLLAPSE_BLOCK": "Ocultar Bloco", + "COLLAPSE_ALL": "Ocultar Blocos", + "EXPAND_BLOCK": "Expandir Bloco", + "EXPAND_ALL": "Expandir Blocos", + "DISABLE_BLOCK": "Desativar Bloco", + "ENABLE_BLOCK": "Ativar Bloco", + "HELP": "Ajuda", + "UNDO": "Desfazer", + "REDO": "Refazer", + "CHANGE_VALUE_TITLE": "Alterar valor:", + "RENAME_VARIABLE": "Renomear variável...", + "RENAME_VARIABLE_TITLE": "Renomear todas as variáveis '%1' para:", + "NEW_VARIABLE": "Criar variável…", + "NEW_STRING_VARIABLE": "Criar variável de segmentos de texto...", + "NEW_NUMBER_VARIABLE": "Criar variável numérica...", + "NEW_COLOUR_VARIABLE": "Criar variável colorida...", + "NEW_VARIABLE_TYPE_TITLE": "Tipo da nova variável:", + "NEW_VARIABLE_TITLE": "Nome da nova variável:", + "VARIABLE_ALREADY_EXISTS": "Já existe uma variável com o nome de '%1'.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Já existe uma variável chamada '%1' para outra do tipo: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Eliminar %1 utilizações da variável '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Não se pode eliminar a variável '%1' porque faz parte da definição da função '%2'", + "DELETE_VARIABLE": "Eliminar a variável '%1'", + "COLOUR_PICKER_HELPURL": "http://pt.wikipedia.org/wiki/Cor", + "COLOUR_PICKER_TOOLTIP": "Escolha uma cor da paleta de cores.", + "COLOUR_RANDOM_TITLE": "cor aleatória", + "COLOUR_RANDOM_TOOLTIP": "Escolha uma cor aleatoriamente.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "pinte com", + "COLOUR_RGB_RED": "vermelho", + "COLOUR_RGB_GREEN": "verde", + "COLOUR_RGB_BLUE": "azul", + "COLOUR_RGB_TOOLTIP": "Cria uma cor de acordo com a quantidade especificada de vermelho, verde e azul. Todos os valores devem estar entre 0 e 100.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "misturar", + "COLOUR_BLEND_COLOUR1": "cor 1", + "COLOUR_BLEND_COLOUR2": "cor 2", + "COLOUR_BLEND_RATIO": "proporção", + "COLOUR_BLEND_TOOLTIP": "Mistura duas cores com a proporção indicada (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "http://pt.wikipedia.org/wiki/Estrutura_de_repeti%C3%A7%C3%A3o#Repeti.C3.A7.C3.A3o_com_vari.C3.A1vel_de_controle", + "CONTROLS_REPEAT_TITLE": "repetir %1 vez", + "CONTROLS_REPEAT_INPUT_DO": "faça", + "CONTROLS_REPEAT_TOOLTIP": "Faça algumas instruções várias vezes.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetir enquanto", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repetir até", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Enquanto um valor for verdadeiro, então faça algumas instruções.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Enquanto um valor for falso, então faça algumas instruções.", + "CONTROLS_FOR_TOOLTIP": "Faz com que a variável \"%1\" assuma os valores desde o número inicial até ao número final, contando de acordo com o intervalo especificado e executa os blocos especificados.", + "CONTROLS_FOR_TITLE": "contar com %1 de %2 até %3 por %4", + "CONTROLS_FOREACH_TITLE": "para cada item %1 na lista %2", + "CONTROLS_FOREACH_TOOLTIP": "Para cada item numa lista, define a variável \"%1\" para o item e então faz algumas instruções.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "sair do ciclo", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuar com a próxima iteração do ciclo", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Sair do ciclo que está contido.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ignorar o resto deste ciclo, e continuar com a próxima iteração.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Aviso: Este bloco só pode ser usado dentro de um ciclo.", + "CONTROLS_IF_TOOLTIP_1": "Se um valor é verdadeiro, então realize alguns passos.", + "CONTROLS_IF_TOOLTIP_2": "Se um valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, realize o segundo bloco de instruções", + "CONTROLS_IF_TOOLTIP_3": "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções.", + "CONTROLS_IF_TOOLTIP_4": "Se o primeiro valor é verdadeiro, então realize o primeiro bloco de instruções. Senão, se o segundo valor é verdadeiro, realize o segundo bloco de instruções. Se nenhum dos blocos for verdadeiro, realize o último bloco de instruções.", + "CONTROLS_IF_MSG_IF": "se", + "CONTROLS_IF_MSG_ELSEIF": "senão se", + "CONTROLS_IF_MSG_ELSE": "senão", + "CONTROLS_IF_IF_TOOLTIP": "Acrescente, remova ou reordene secções para reconfigurar este bloco se.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Acrescente uma condição ao bloco se.", + "CONTROLS_IF_ELSE_TOOLTIP": "Acrescente uma condição de excepação final para o bloco se.", + "LOGIC_COMPARE_HELPURL": "http://pt.wikipedia.org/wiki/Inequa%C3%A7%C3%A3o", + "LOGIC_COMPARE_TOOLTIP_EQ": "Retorna verdadeiro se ambas as entradas forem iguais entre si.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Retorna verdadeiro se ambas as entradas forem diferentes entre si.", + "LOGIC_COMPARE_TOOLTIP_LT": "Retorna verdadeiro se a primeira entrada for menor que a segunda entrada.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Retorna verdadeiro se a primeira entrada for menor ou igual à segunda entrada.", + "LOGIC_COMPARE_TOOLTIP_GT": "Retorna verdadeiro se a primeira entrada for maior que a segunda entrada.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Retorna verdadeiro se a primeira entrada for maior ou igual à segunda entrada.", + "LOGIC_OPERATION_TOOLTIP_AND": "Retorna verdadeiro se ambas as entradas forem verdadeiras.", + "LOGIC_OPERATION_AND": "e", + "LOGIC_OPERATION_TOOLTIP_OR": "Retorna verdadeiro se pelo menos uma das estradas for verdadeira.", + "LOGIC_OPERATION_OR": "ou", + "LOGIC_NEGATE_TITLE": "não %1", + "LOGIC_NEGATE_TOOLTIP": "Retorna verdadeiro se a entrada for falsa. Retorna falso se a entrada for verdadeira.", + "LOGIC_BOOLEAN_TRUE": "verdadeiro", + "LOGIC_BOOLEAN_FALSE": "falso", + "LOGIC_BOOLEAN_TOOLTIP": "Retorna verdadeiro ou falso.", + "LOGIC_NULL_HELPURL": "http://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "nulo", + "LOGIC_NULL_TOOLTIP": "Retorna nulo.", + "LOGIC_TERNARY_HELPURL": "http://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "teste", + "LOGIC_TERNARY_IF_TRUE": "se verdadeiro", + "LOGIC_TERNARY_IF_FALSE": "se falso", + "LOGIC_TERNARY_TOOLTIP": "Avalia a condição em \"teste\". Se a condição for verdadeira retorna o valor \"se verdadeiro\", senão retorna o valor \"se falso\".", + "MATH_NUMBER_HELPURL": "http://pt.wikipedia.org/wiki/N%C3%BAmero", + "MATH_NUMBER_TOOLTIP": "Um número.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "http://pt.wikipedia.org/wiki/Aritm%C3%A9tica", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Retorna a soma de dois números.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Retorna a diferença de dois números.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Retorna o produto de dois números.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Retorna o quociente da divisão de dois números.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Retorna o primeiro número elevado à potência do segundo número.", + "MATH_SINGLE_HELPURL": "http://pt.wikipedia.org/wiki/Raiz_quadrada", + "MATH_SINGLE_OP_ROOT": "raíz quadrada", + "MATH_SINGLE_TOOLTIP_ROOT": "Retorna a raiz quadrada de um número.", + "MATH_SINGLE_OP_ABSOLUTE": "absoluto", + "MATH_SINGLE_TOOLTIP_ABS": "Retorna o valor absoluto de um número.", + "MATH_SINGLE_TOOLTIP_NEG": "Retorna o oposto de um número.", + "MATH_SINGLE_TOOLTIP_LN": "Retorna o logarítmo natural de um número.", + "MATH_SINGLE_TOOLTIP_LOG10": "Retorna o logarítmo em base 10 de um número.", + "MATH_SINGLE_TOOLTIP_EXP": "Retorna o número e elevado à potência de um número.", + "MATH_SINGLE_TOOLTIP_POW10": "Retorna 10 elevado à potência de um número.", + "MATH_TRIG_HELPURL": "http://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_trigonom%C3%A9trica", + "MATH_TRIG_TOOLTIP_SIN": "Retorna o seno de um grau (não radiano).", + "MATH_TRIG_TOOLTIP_COS": "Retorna o cosseno de um grau (não radiano).", + "MATH_TRIG_TOOLTIP_TAN": "Retorna a tangente de um grau (não radiano).", + "MATH_TRIG_TOOLTIP_ASIN": "Retorna o arco seno de um número.", + "MATH_TRIG_TOOLTIP_ACOS": "Retorna o arco cosseno de um número.", + "MATH_TRIG_TOOLTIP_ATAN": "Retorna o arco tangente de um número.", + "MATH_CONSTANT_HELPURL": "http://pt.wikipedia.org/wiki/Anexo:Lista_de_constantes_matem%C3%A1ticas", + "MATH_CONSTANT_TOOLTIP": "Retorna uma das constantes comuns: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ou ∞ (infinito).", + "MATH_IS_EVEN": "é par", + "MATH_IS_ODD": "é impar", + "MATH_IS_PRIME": "é primo", + "MATH_IS_WHOLE": "é inteiro", + "MATH_IS_POSITIVE": "é positivo", + "MATH_IS_NEGATIVE": "é negativo", + "MATH_IS_DIVISIBLE_BY": "é divisível por", + "MATH_IS_TOOLTIP": "Verifica se um número é par, impar, primo, inteiro, positivo, negativo, ou se é divisível por outro número. Retorna verdadeiro ou falso.", + "MATH_CHANGE_HELPURL": "http://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o", + "MATH_CHANGE_TITLE": "alterar %1 por %2", + "MATH_CHANGE_TOOLTIP": "Soma um número à variável \"%1\".", + "MATH_ROUND_HELPURL": "http://pt.wikipedia.org/wiki/Arredondamento", + "MATH_ROUND_TOOLTIP": "Arredonda um número para cima ou para baixo.", + "MATH_ROUND_OPERATOR_ROUND": "arredonda", + "MATH_ROUND_OPERATOR_ROUNDUP": "arredonda para cima", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "arredonda para baixo", + "MATH_ONLIST_OPERATOR_SUM": "soma da lista", + "MATH_ONLIST_TOOLTIP_SUM": "Retorna a soma de todos os números da lista.", + "MATH_ONLIST_OPERATOR_MIN": "menor de uma lista", + "MATH_ONLIST_TOOLTIP_MIN": "Retorna o menor número da lista.", + "MATH_ONLIST_OPERATOR_MAX": "maior de uma lista", + "MATH_ONLIST_TOOLTIP_MAX": "Retorna o maior número da lista.", + "MATH_ONLIST_OPERATOR_AVERAGE": "média de uma lista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Retorna a média aritmética dos valores números da lista.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana de uma lista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Retorna a mediana da lista.", + "MATH_ONLIST_OPERATOR_MODE": "moda de uma lista", + "MATH_ONLIST_TOOLTIP_MODE": "Retorna a lista de item(ns) mais comum(ns) da lista.", + "MATH_ONLIST_OPERATOR_STD_DEV": "desvio padrão de uma lista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Retorna o desvio padrão dos números da lista.", + "MATH_ONLIST_OPERATOR_RANDOM": "item aleatório de uma lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Retorna um elemento aleatório da lista.", + "MATH_MODULO_HELPURL": "http://pt.wikipedia.org/wiki/Opera%C3%A7%C3%A3o_m%C3%B3dulo", + "MATH_MODULO_TITLE": "resto da divisão de %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Retorna o resto da divisão de dois números.", + "MATH_CONSTRAIN_TITLE": "restringe %1 inferior %2 superior %3", + "MATH_CONSTRAIN_TOOLTIP": "Restringe um número entre os limites especificados (inclusive).", + "MATH_RANDOM_INT_HELPURL": "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio", + "MATH_RANDOM_INT_TITLE": "inteiro aleatório entre %1 e %2", + "MATH_RANDOM_INT_TOOLTIP": "Retorna um número inteiro entre os dois limites especificados, inclusive.", + "MATH_RANDOM_FLOAT_HELPURL": "http://pt.wikipedia.org/wiki/N%C3%BAmero_aleat%C3%B3rio", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fração aleatória", + "MATH_RANDOM_FLOAT_TOOLTIP": "Insere uma fração aleatória entre 0.0 (inclusive) e 1.0 (exclusive).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 de X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Devolver o arco tangente do ponto (X, Y) em graus entre -180 e 180.", + "TEXT_TEXT_HELPURL": "http://pt.wikipedia.org/wiki/Cadeia_de_caracteres", + "TEXT_TEXT_TOOLTIP": "Uma letra, palavra ou linha de texto.", + "TEXT_JOIN_TITLE_CREATEWITH": "criar texto com", + "TEXT_JOIN_TOOLTIP": "Criar um pedaço de texto juntando qualquer número de itens.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "unir", + "TEXT_CREATE_JOIN_TOOLTIP": "Acrescenta, remove ou reordena seções para reconfigurar este bloco de texto.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Acrescentar um item ao texto.", + "TEXT_APPEND_TITLE": "para %1 acrescentar texto %2", + "TEXT_APPEND_TOOLTIP": "Acrescentar um pedaço de texto à variável \"%1\".", + "TEXT_LENGTH_TITLE": "tamanho de %1", + "TEXT_LENGTH_TOOLTIP": "Devolve o número de letras (incluindo espaços) do texto fornecido.", + "TEXT_ISEMPTY_TITLE": "%1 está vazio", + "TEXT_ISEMPTY_TOOLTIP": "Retorna verdadeiro se o texto fornecido estiver vazio.", + "TEXT_INDEXOF_TOOLTIP": "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado.", + "TEXT_INDEXOF_TITLE": "no texto %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "primeira ocorrência do texto", + "TEXT_INDEXOF_OPERATOR_LAST": "última ocorrência do texto", + "TEXT_CHARAT_TITLE": "no texto %1 %2", + "TEXT_CHARAT_FROM_START": "obter letra nº", + "TEXT_CHARAT_FROM_END": "obter letra nº a partir do final", + "TEXT_CHARAT_FIRST": "obter primeira letra", + "TEXT_CHARAT_LAST": "obter última letra", + "TEXT_CHARAT_RANDOM": "obter letra aleatória", + "TEXT_CHARAT_TOOLTIP": "Retorna a letra na posição especificada.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Retorna a parte especificada do texto.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "no texto", + "TEXT_GET_SUBSTRING_START_FROM_START": "obter subsequência de tamanho #", + "TEXT_GET_SUBSTRING_START_FROM_END": "obter subsequência de tamanho # a partir do final", + "TEXT_GET_SUBSTRING_START_FIRST": "obter subsequência a partir da primeira letra", + "TEXT_GET_SUBSTRING_END_FROM_START": "até letra nº", + "TEXT_GET_SUBSTRING_END_FROM_END": "até letra nº a partir do final", + "TEXT_GET_SUBSTRING_END_LAST": "até última letra", + "TEXT_CHANGECASE_TOOLTIP": "Retorna uma cópia do texto em formato diferente.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "para MAIÚSCULAS", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "para minúsculas", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "para Iniciais Maiúsculas", + "TEXT_TRIM_TOOLTIP": "Retorna uma cópia do texto com os espaços removidos de uma ou ambas as extremidades.", + "TEXT_TRIM_OPERATOR_BOTH": "remover espaços de ambos os lados", + "TEXT_TRIM_OPERATOR_LEFT": "remover espaços à esquerda de", + "TEXT_TRIM_OPERATOR_RIGHT": "remover espaços à direita", + "TEXT_PRINT_TITLE": "imprime %1", + "TEXT_PRINT_TOOLTIP": "Imprime o texto, número ou outro valor especificado.", + "TEXT_PROMPT_TYPE_TEXT": "Pede um texto com a mensagem", + "TEXT_PROMPT_TYPE_NUMBER": "pede um número com a mensagem", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Pede ao utilizador um número.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Pede ao utilizador um texto.", + "TEXT_COUNT_MESSAGE0": "contar %1 em %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Conte quantas vezes um certo texto aparece dentro de algum outro texto.", + "TEXT_REPLACE_MESSAGE0": "substituir %1 por %2 em %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Substituir todas as ocorrências de um certo texto dentro de algum outro texto.", + "TEXT_REVERSE_MESSAGE0": "inverter %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Inverte a ordem dos caracteres no texto.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "criar lista vazia", + "LISTS_CREATE_EMPTY_TOOLTIP": "Retorna uma lista, de tamanho 0, contendo nenhum registo", + "LISTS_CREATE_WITH_TOOLTIP": "Cria uma lista com qualquer número de itens.", + "LISTS_CREATE_WITH_INPUT_WITH": "criar lista com", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Acrescente, remova ou reordene as seções para reconfigurar este bloco lista.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Acrescenta um item à lista.", + "LISTS_REPEAT_TOOLTIP": "Cria uma lista constituída por um dado valor repetido o número de vezes especificado.", + "LISTS_REPEAT_TITLE": "criar lista com o item %1 repetido %2 vezes", + "LISTS_LENGTH_TITLE": "tamanho de %1", + "LISTS_LENGTH_TOOLTIP": "Retorna o tamanho de uma lista.", + "LISTS_ISEMPTY_TITLE": "%1 está vazia", + "LISTS_ISEMPTY_TOOLTIP": "Retona verdadeiro se a lista estiver vazia.", + "LISTS_INLIST": "na lista", + "LISTS_INDEX_OF_FIRST": "encontre a primeira ocorrência do item", + "LISTS_INDEX_OF_LAST": "encontre a última ocorrência do item", + "LISTS_INDEX_OF_TOOLTIP": "Retorna a posição da primeira/última ocorrência do item na lista. Retorna %1 se o item não for encontrado.", + "LISTS_GET_INDEX_GET": "obter", + "LISTS_GET_INDEX_GET_REMOVE": "obter e remover", + "LISTS_GET_INDEX_REMOVE": "remover", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# a partir do final", + "LISTS_GET_INDEX_FIRST": "primeiro", + "LISTS_GET_INDEX_LAST": "último", + "LISTS_GET_INDEX_RANDOM": "aleatório", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 é o primeiro item.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 é o último item.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Retorna o item na posição especificada da lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Retorna o primeiro item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Retorna o último item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Retorna um item aleatório de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Remove e retorna o item na posição especificada de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Remove e retorna o primeiro item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Remove e retorna o último item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Remove e retorna um item aleatório de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Remove o item de uma posição especifica da lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Remove o primeiro item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Remove o último item de uma lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Remove um item aleatório de uma lista.", + "LISTS_SET_INDEX_SET": "definir", + "LISTS_SET_INDEX_INSERT": "inserir em", + "LISTS_SET_INDEX_INPUT_TO": "como", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Define o item na posição especificada de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Define o primeiro item de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Define o último item de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Define um item aleatório de uma lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insere o item numa posição especificada numa lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insere o item no início da lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Insere o item no final da lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Insere o item numa posição aleatória de uma lista.", + "LISTS_GET_SUBLIST_START_FROM_START": "obtem sublista de #", + "LISTS_GET_SUBLIST_START_FROM_END": "obtem sublista de # a partir do final", + "LISTS_GET_SUBLIST_START_FIRST": "obtem sublista da primeira lista", + "LISTS_GET_SUBLIST_END_FROM_START": "até #", + "LISTS_GET_SUBLIST_END_FROM_END": "até #, a partir do final", + "LISTS_GET_SUBLIST_END_LAST": "para o último", + "LISTS_GET_SUBLIST_TOOLTIP": "Cria uma cópia da porção especificada de uma lista.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "ordenar %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ordenar uma cópia de uma lista.", + "LISTS_SORT_ORDER_ASCENDING": "ascendente", + "LISTS_SORT_ORDER_DESCENDING": "descendente", + "LISTS_SORT_TYPE_NUMERIC": "numérica", + "LISTS_SORT_TYPE_TEXT": "alfabética", + "LISTS_SORT_TYPE_IGNORECASE": "alfabética, ignorar maiúsculas/minúsculas", + "LISTS_SPLIT_LIST_FROM_TEXT": "fazer lista a partir de texto", + "LISTS_SPLIT_TEXT_FROM_LIST": "fazer texto a partir da lista", + "LISTS_SPLIT_WITH_DELIMITER": "com delimitador", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividir o texto numa lista de textos, separando-o em cada delimitador.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Juntar uma lista de textos num único texto, separado por um delimitador.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "inverter %1", + "LISTS_REVERSE_TOOLTIP": "Inverter uma cópia da lista.", + "VARIABLES_GET_TOOLTIP": "Retorna o valor desta variável.", + "VARIABLES_GET_CREATE_SET": "Criar \"definir %1\"", + "VARIABLES_SET": "definir %1 para %2", + "VARIABLES_SET_TOOLTIP": "Define esta variável para o valor inserido.", + "VARIABLES_SET_CREATE_GET": "Criar \"obter %1\"", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_DEFNORETURN_TITLE": "para", + "PROCEDURES_DEFNORETURN_PROCEDURE": "faz algo", + "PROCEDURES_BEFORE_PARAMS": "com:", + "PROCEDURES_CALL_BEFORE_PARAMS": "com:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Cria uma função que não tem retorno.", + "PROCEDURES_DEFNORETURN_COMMENT": "Descreva esta função...", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_DEFRETURN_RETURN": "retorna", + "PROCEDURES_DEFRETURN_TOOLTIP": "Cria uma função que possui um valor de retorno.", + "PROCEDURES_ALLOW_STATEMENTS": "permitir declarações", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Aviso: Esta função tem parâmetros duplicados.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://pt.wikipedia.org/wiki/Sub-rotina", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Executa a função \"%1\".", + "PROCEDURES_CALLRETURN_HELPURL": "https://pt.wikipedia.org/wiki/Sub-rotina", + "PROCEDURES_CALLRETURN_TOOLTIP": "Executa a função \"%1\" e usa o seu retorno.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "entradas", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Adicionar, remover ou reordenar as entradas para esta função.", + "PROCEDURES_MUTATORARG_TITLE": "nome da entrada:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Adicionar uma entrada para a função.", + "PROCEDURES_HIGHLIGHT_DEF": "Destacar definição da função", + "PROCEDURES_CREATE_DO": "Criar \"%1\"", + "PROCEDURES_IFRETURN_TOOLTIP": "se o valor é verdadeiro, então retorna um segundo valor.", + "PROCEDURES_IFRETURN_WARNING": "Aviso: Este bloco só pode ser utilizado dentro da definição de uma função.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Diz algo...", + "WORKSPACE_ARIA_LABEL": "Espaço de trabalho de Blockly", + "COLLAPSED_WARNINGS_WARNING": "Os blocos ocultados contêm avisos.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Cancelar" +} diff --git a/msg/json/qqq.json b/msg/json/qqq.json index 17154d64c66..582e11a8933 100644 --- a/msg/json/qqq.json +++ b/msg/json/qqq.json @@ -1,401 +1,401 @@ -{ - "@metadata": { - "authors": [ - "Ajeje Brazorf", - "Espertus", - "Liuxinyu970226", - "Metalhead64", - "Robby", - "Shirayuki" - ] - }, - "VARIABLES_DEFAULT_NAME": "default name - A simple, general default name for a variable, preferably short. For more context, see [[Translating:Blockly#infrequent_message_types]].\n{{Identical|Item}}", - "UNNAMED_KEY": "default name - A simple, default name for an unnamed function or variable. Preferably indicates that the item is unnamed.", - "TODAY": "button text - Button that sets a calendar to today's date.\n{{Identical|Today}}", - "DUPLICATE_BLOCK": "context menu - Make a copy of the selected block (and any blocks it contains).\n{{Identical|Duplicate}}", - "ADD_COMMENT": "context menu - Add a descriptive comment to the selected block.", - "REMOVE_COMMENT": "context menu - Remove the descriptive comment from the selected block.", - "DUPLICATE_COMMENT": "context menu - Make a copy of the selected workspace comment.\n{{Identical|Duplicate}}", - "EXTERNAL_INPUTS": "context menu - Change from 'external' to 'inline' mode for displaying blocks used as inputs to the selected block. See [[Translating:Blockly#context_menus]].", - "INLINE_INPUTS": "context menu - Change from 'internal' to 'external' mode for displaying blocks used as inputs to the selected block. See [[Translating:Blockly#context_menus]].", - "DELETE_BLOCK": "context menu - Permanently delete the selected block.", - "DELETE_X_BLOCKS": "context menu - Permanently delete the %1 selected blocks.\n\nParameters:\n* %1 - an integer greater than 1.", - "DELETE_ALL_BLOCKS": "confirmation prompt - Question the user if they really wanted to permanently delete all %1 blocks.\n\nParameters:\n* %1 - an integer greater than 1.", - "CLEAN_UP": "context menu - Reposition all the blocks so that they form a neat line.", - "COLLAPSE_BLOCK": "context menu - Make the appearance of the selected block smaller by hiding some information about it.", - "COLLAPSE_ALL": "context menu - Make the appearance of all blocks smaller by hiding some information about it. Use the same terminology as in the previous message.", - "EXPAND_BLOCK": "context menu - Restore the appearance of the selected block by showing information about it that was hidden (collapsed) earlier.", - "EXPAND_ALL": "context menu - Restore the appearance of all blocks by showing information about it that was hidden (collapsed) earlier. Use the same terminology as in the previous message.", - "DISABLE_BLOCK": "context menu - Make the selected block have no effect (unless reenabled).", - "ENABLE_BLOCK": "context menu - Make the selected block have effect (after having been disabled earlier).", - "HELP": "context menu - Provide helpful information about the selected block.\n{{Identical|Help}}", - "UNDO": "context menu - Undo the previous action.\n{{Identical|Undo}}", - "REDO": "context menu - Undo the previous undo action.\n{{Identical|Redo}}", - "CHANGE_VALUE_TITLE": "prompt - This message is only seen in the Opera browser. With most browsers, users can edit numeric values in blocks by just clicking and typing. Opera does not allows this, so we have to open a new window and prompt users with this message to chanage a value.", - "RENAME_VARIABLE": "dropdown choice - When the user clicks on a variable block, this is one of the dropdown menu choices. It is used to rename the current variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].", - "RENAME_VARIABLE_TITLE": "prompt - Prompts the user to enter the new name for the selected variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].\n\nParameters:\n* %1 - the name of the variable to be renamed.", - "NEW_VARIABLE": "button text - Text on the button used to launch the variable creation dialogue.", - "NEW_STRING_VARIABLE": "button text - Text on the button used to launch the variable creation dialogue.", - "NEW_NUMBER_VARIABLE": "button text - Text on the button used to launch the variable creation dialogue.", - "NEW_COLOUR_VARIABLE": "button text - Text on the button used to launch the variable creation dialogue.", - "NEW_VARIABLE_TYPE_TITLE": "prompt - Prompts the user to enter the type for a variable.", - "NEW_VARIABLE_TITLE": "prompt - Prompts the user to enter the name for a new variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].", - "VARIABLE_ALREADY_EXISTS": "alert - Tells the user that the name they entered is already in use.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "alert - Tells the user that the name they entered is already in use for another type.", - "DELETE_VARIABLE_CONFIRMATION": "confirm - Ask the user to confirm their deletion of multiple uses of a variable.", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "alert - Tell the user that they can't delete a variable because it's part of the definition of a function.", - "DELETE_VARIABLE": "dropdown choice - Delete the currently selected variable.", - "COLOUR_PICKER_HELPURL": "{{Optional}} url - Information about colour.", - "COLOUR_PICKER_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette].", - "COLOUR_RANDOM_HELPURL": "{{Optional}} url - A link that displays a random colour each time you visit it.", - "COLOUR_RANDOM_TITLE": "block text - Title of block that generates a colour at random.", - "COLOUR_RANDOM_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Colour#generating-a-random-colour https://github.com/google/blockly/wiki/Colour#generating-a-random-colour].", - "COLOUR_RGB_HELPURL": "{{Optional}} url - A link for colour codes with percentages (0-100%) for each component, instead of the more common 0-255, which may be more difficult for beginners.", - "COLOUR_RGB_TITLE": "block text - Title of block for [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].", - "COLOUR_RGB_RED": "block input text - The amount of red (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Red}}", - "COLOUR_RGB_GREEN": "block input text - The amount of green (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].", - "COLOUR_RGB_BLUE": "block input text - The amount of blue (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Blue}}", - "COLOUR_RGB_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].", - "COLOUR_BLEND_HELPURL": "{{Optional}} url - A useful link that displays blending of two colours.", - "COLOUR_BLEND_TITLE": "block text - A verb for blending two shades of paint.", - "COLOUR_BLEND_COLOUR1": "block input text - The first of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend].", - "COLOUR_BLEND_COLOUR2": "block input text - The second of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend].", - "COLOUR_BLEND_RATIO": "block input text - The proportion of the [https://github.com/google/blockly/wiki/Colour#blending-colours blend] containing the first colour; the remaining proportion is of the second colour. For example, if the first colour is red and the second colour blue, a ratio of 1 would yield pure red, a ratio of .5 would yield purple (equal amounts of red and blue), and a ratio of 0 would yield pure blue.\n{{Identical|Ratio}}", - "COLOUR_BLEND_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Colour#blending-colours https://github.com/google/blockly/wiki/Colour#blending-colours].", - "CONTROLS_REPEAT_HELPURL": "{{Optional}} url - Describes 'repeat loops' in computer programs; consider using the translation of the page [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow].", - "CONTROLS_REPEAT_TITLE": "block input text - Title of [https://github.com/google/blockly/wiki/Loops#repeat repeat block].\n\nParameters:\n* %1 - the number of times the body of the loop should be repeated.", - "CONTROLS_REPEAT_INPUT_DO": "block text - Preceding the blocks in the body of the loop. See [https://github.com/google/blockly/wiki/Loops https://github.com/google/blockly/wiki/Loops].\n{{Identical|Do}}", - "CONTROLS_REPEAT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat https://github.com/google/blockly/wiki/Loops#repeat].", - "CONTROLS_WHILEUNTIL_HELPURL": "{{Optional}} url - Describes 'while loops' in computer programs; consider using the translation of [https://en.wikipedia.org/wiki/While_loop https://en.wikipedia.org/wiki/While_loop], if present, or [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow].", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-while repeat while] the following condition is true.", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-until repeat until] the following condition becomes true.", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while].", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-until https://github.com/google/blockly/wiki/Loops#repeat-until].", - "CONTROLS_FOR_HELPURL": "{{Optional}} url - Describes 'for loops' in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/For_loop https://en.wikipedia.org/wiki/For_loop], if present.", - "CONTROLS_FOR_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Loops#count-with https://github.com/google/blockly/wiki/Loops#count-with].\n\nParameters:\n* %1 - the name of the loop variable.", - "CONTROLS_FOR_TITLE": "block text - Repeatedly counts a variable (%1) starting with a (usually lower) number in a range (%2), ending with a (usually higher) number in a range (%3), and counting the iterations by a number of steps (%4). As in [https://github.com/google/blockly/wiki/Loops#count-with https://github.com/google/blockly/wiki/Loops#count-with]. [[File:Blockly-count-with.png]]", - "CONTROLS_FOREACH_HELPURL": "{{Optional}} url - Describes 'for-each loops' in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/Foreach https://en.wikipedia.org/wiki/Foreach] if present.", - "CONTROLS_FOREACH_TITLE": "block text - Title of [https://github.com/google/blockly/wiki/Loops#for-each for each block]. Sequentially assigns every item in array %2 to the valiable %1.", - "CONTROLS_FOREACH_TOOLTIP": "block text - Description of [https://github.com/google/blockly/wiki/Loops#for-each for each blocks].\n\nParameters:\n* %1 - the name of the loop variable.", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "{{Optional}} url - Describes control flow in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow], if it exists.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "dropdown - The current loop should be exited. See [https://github.com/google/blockly/wiki/Loops#break https://github.com/google/blockly/wiki/Loops#break].", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "dropdown - The current iteration of the loop should be ended and the next should begin. See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration].", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "tooltip - See [https://github.com/google/blockly/wiki/Loops#break-out-of-loop https://github.com/google/blockly/wiki/Loops#break-out-of-loop].", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "tooltip - See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration].", - "CONTROLS_FLOW_STATEMENTS_WARNING": "warning - The user has tried placing a block outside of a loop (for each, while, repeat, etc.), but this type of block may only be used within a loop. See [https://github.com/google/blockly/wiki/Loops#loop-termination-blocks https://github.com/google/blockly/wiki/Loops#loop-termination-blocks].", - "CONTROLS_IF_HELPURL": "{{Optional}} url - Describes conditional statements (if-then-else) in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_else https://en.wikipedia.org/wiki/If_else], if present.", - "CONTROLS_IF_TOOLTIP_1": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-blocks 'if' blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.", - "CONTROLS_IF_TOOLTIP_2": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-blocks if-else blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.", - "CONTROLS_IF_TOOLTIP_3": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-blocks if-else-if blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.", - "CONTROLS_IF_TOOLTIP_4": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-else-blocks if-else-if-else blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.", - "CONTROLS_IF_MSG_IF": "block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. It is recommended, but not essential, that this have text in common with the translation of 'else if'\n{{Identical|If}}", - "CONTROLS_IF_MSG_ELSEIF": "block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. The English words 'otherwise if' would probably be clearer than 'else if', but the latter is used because it is traditional and shorter.", - "CONTROLS_IF_MSG_ELSE": "block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. The English word 'otherwise' would probably be superior to 'else', but the latter is used because it is traditional and shorter.", - "CONTROLS_IF_IF_TOOLTIP": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification].", - "CONTROLS_IF_ELSEIF_TOOLTIP": "tooltip - Describes the 'else if' subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification].", - "CONTROLS_IF_ELSE_TOOLTIP": "tooltip - Describes the 'else' subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification].", - "LOGIC_COMPARE_HELPURL": "{{Optional}} url - Information about comparisons.", - "LOGIC_COMPARE_TOOLTIP_EQ": "tooltip - Describes the equals (=) block.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "tooltip - Describes the not equals (≠) block.", - "LOGIC_COMPARE_TOOLTIP_LT": "tooltip - Describes the less than (<) block.", - "LOGIC_COMPARE_TOOLTIP_LTE": "tooltip - Describes the less than or equals (≤) block.", - "LOGIC_COMPARE_TOOLTIP_GT": "tooltip - Describes the greater than (>) block.", - "LOGIC_COMPARE_TOOLTIP_GTE": "tooltip - Describes the greater than or equals (≥) block.", - "LOGIC_OPERATION_HELPURL": "{{Optional}} url - Information about the Boolean conjunction ('and') and disjunction ('or') operators. Consider using the translation of [https://en.wikipedia.org/wiki/Boolean_logic https://en.wikipedia.org/wiki/Boolean_logic], if it exists in your language.", - "LOGIC_OPERATION_TOOLTIP_AND": "tooltip - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction].", - "LOGIC_OPERATION_AND": "block text - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction].\n{{Identical|And}}", - "LOGIC_OPERATION_TOOLTIP_OR": "block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction].", - "LOGIC_OPERATION_OR": "block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction].\n{{Identical|Or}}", - "LOGIC_NEGATE_HELPURL": "{{Optional}} url - Information about logical negation. The translation of [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation] is recommended if it exists in the target language.", - "LOGIC_NEGATE_TITLE": "block text - This is a unary operator that returns ''false'' when the input is ''true'', and ''true'' when the input is ''false''. \n\nParameters:\n* %1 - the input (which should be either the value 'true' or 'false')", - "LOGIC_NEGATE_TOOLTIP": "tooltip - See [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation].", - "LOGIC_BOOLEAN_HELPURL": "{{Optional}} url - Information about the logic values ''true'' and ''false''. Consider using the translation of [https://en.wikipedia.org/wiki/Truth_value https://en.wikipedia.org/wiki/Truth_value] if it exists in your language.", - "LOGIC_BOOLEAN_TRUE": "block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] ''true''.\n{{Identical|True}}", - "LOGIC_BOOLEAN_FALSE": "block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] ''false''.\n{{Identical|False}}", - "LOGIC_BOOLEAN_TOOLTIP": "tooltip - Indicates that the block returns either of the two possible [https://en.wikipedia.org/wiki/Truth_value logical values].", - "LOGIC_NULL_HELPURL": "{{Optional}} url - Provide a link to the translation of [https://en.wikipedia.org/wiki/Nullable_type https://en.wikipedia.org/wiki/Nullable_type], if it exists in your language; otherwise, do not worry about translating this advanced concept.", - "LOGIC_NULL": "block text - In computer languages, ''null'' is a special value that indicates that no value has been set. You may use your language's word for 'nothing' or 'invalid'.\n{{Identical|Null}}", - "LOGIC_NULL_TOOLTIP": "tooltip - This should use the word from the previous message.", - "LOGIC_TERNARY_HELPURL": "{{Optional}} url - Describes the programming language operator known as the ''ternary'' or ''conditional'' operator. It is recommended that you use the translation of [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:] if it exists.", - "LOGIC_TERNARY_CONDITION": "block input text - Label for the input whose value determines which of the other two inputs is returned. In some programming languages, this is called a ''''predicate''''.", - "LOGIC_TERNARY_IF_TRUE": "block input text - Indicates that the following input should be returned (used as output) if the test input is true. Remember to try to keep block text terse (short).", - "LOGIC_TERNARY_IF_FALSE": "block input text - Indicates that the following input should be returned (used as output) if the test input is false.", - "LOGIC_TERNARY_TOOLTIP": "tooltip - See [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:].", - "MATH_NUMBER_HELPURL": "{{Optional}} url - Information about (real) numbers.", - "MATH_NUMBER_TOOLTIP": "tooltip - Any positive or negative number, not necessarily an integer.", - "MATH_ADDITION_SYMBOL": "{{Optional}} math - The symbol for the binary operation addition.", - "MATH_SUBTRACTION_SYMBOL": "{{Optional}} math - The symbol for the binary operation indicating that the right operand should be subtracted from the left operand.", - "MATH_DIVISION_SYMBOL": "{{Optional}} math - The binary operation indicating that the left operand should be divided by the right operand.", - "MATH_MULTIPLICATION_SYMBOL": "{{Optional}} math - The symbol for the binary operation multiplication.", - "MATH_POWER_SYMBOL": "{{Optional}} math - The symbol for the binary operation exponentiation. Specifically, if the value of the left operand is L and the value of the right operand (the exponent) is R, multiply L by itself R times. (Fractional and negative exponents are also legal.)", - "MATH_TRIG_SIN": "math - The short name of the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine].", - "MATH_TRIG_COS": "math - The short name of the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine].", - "MATH_TRIG_TAN": "math - The short name of the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent].", - "MATH_TRIG_ASIN": "math - The short name of the ''inverse of'' the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine].", - "MATH_TRIG_ACOS": "math - The short name of the ''inverse of'' the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine].", - "MATH_TRIG_ATAN": "math - The short name of the ''inverse of'' the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent].", - "MATH_ARITHMETIC_HELPURL": "{{Optional}} url - Information about addition, subtraction, multiplication, division, and exponentiation.", - "MATH_ARITHMETIC_TOOLTIP_ADD": "tooltip - See [https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition].", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "tooltip - See [https://en.wikipedia.org/wiki/Subtraction https://en.wikipedia.org/wiki/Subtraction].", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "tooltip - See [https://en.wikipedia.org/wiki/Multiplication https://en.wikipedia.org/wiki/Multiplication].", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "tooltip - See [https://en.wikipedia.org/wiki/Division_(mathematics) https://en.wikipedia.org/wiki/Division_(mathematics)].", - "MATH_ARITHMETIC_TOOLTIP_POWER": "tooltip - See [https://en.wikipedia.org/wiki/Exponentiation https://en.wikipedia.org/wiki/Exponentiation].", - "MATH_SINGLE_HELPURL": "{{Optional}} url - Information about the square root operation.", - "MATH_SINGLE_OP_ROOT": "dropdown - This computes the positive [https://en.wikipedia.org/wiki/Square_root square root] of its input. For example, the square root of 16 is 4.", - "MATH_SINGLE_TOOLTIP_ROOT": "tooltip - Please use the same term as in the previous message.", - "MATH_SINGLE_OP_ABSOLUTE": "dropdown - This leaves positive numeric inputs changed and inverts negative inputs. For example, the absolute value of 5 is 5; the absolute value of -5 is also 5. For more information, see [https://en.wikipedia.org/wiki/Absolute_value https://en.wikipedia.org/wiki/Absolute_value].", - "MATH_SINGLE_TOOLTIP_ABS": "tooltip - Please use the same term as in the previous message.", - "MATH_SINGLE_TOOLTIP_NEG": "tooltip - Calculates '''0-n''', where '''n''' is the single numeric input.", - "MATH_SINGLE_TOOLTIP_LN": "tooltip - Calculates the [https://en.wikipedia.org/wiki/Natural_logarithm|natural logarithm] of its single numeric input.", - "MATH_SINGLE_TOOLTIP_LOG10": "tooltip - Calculates the [https://en.wikipedia.org/wiki/Common_logarithm common logarithm] of its single numeric input.", - "MATH_SINGLE_TOOLTIP_EXP": "tooltip - Multiplies [https://en.wikipedia.org/wiki/E_(mathematical_constant) e] by itself n times, where n is the single numeric input.", - "MATH_SINGLE_TOOLTIP_POW10": "tooltip - Multiplies 10 by itself n times, where n is the single numeric input.", - "MATH_TRIG_HELPURL": "{{Optional}} url - Information about the trigonometric functions sine, cosine, tangent, and their inverses (ideally using degrees, not radians).", - "MATH_TRIG_TOOLTIP_SIN": "tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians.", - "MATH_TRIG_TOOLTIP_COS": "tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians.", - "MATH_TRIG_TOOLTIP_TAN": "tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians.", - "MATH_TRIG_TOOLTIP_ASIN": "tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent sine function], using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians.", - "MATH_TRIG_TOOLTIP_ACOS": "tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent cosine] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians.", - "MATH_TRIG_TOOLTIP_ATAN": "tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent tangent] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians.", - "MATH_CONSTANT_HELPURL": "{{Optional}} url - Information about the mathematical constants Pi (π), e, the golden ratio (φ), √ 2, √ 1/2, and infinity (∞).", - "MATH_CONSTANT_TOOLTIP": "tooltip - Provides the specified [https://en.wikipedia.org/wiki/Mathematical_constant mathematical constant].", - "MATH_IS_EVEN": "dropdown - A number is '''even''' if it is a multiple of 2. For example, 4 is even (yielding true), but 3 is not (false).", - "MATH_IS_ODD": "dropdown - A number is '''odd''' if it is not a multiple of 2. For example, 3 is odd (yielding true), but 4 is not (false). The opposite of 'odd' is 'even'.", - "MATH_IS_PRIME": "dropdown - A number is [https://en.wikipedia.org/wiki/Prime_number prime] if it cannot be evenly divided by any positive integers except for 1 and itself. For example, 5 is prime, but 6 is not because 2 × 3 = 6.", - "MATH_IS_WHOLE": "dropdown - A number is '''whole''' if it is an [https://en.wikipedia.org/wiki/Integer integer]. For example, 5 is whole, but 5.1 is not.", - "MATH_IS_POSITIVE": "dropdown - A number is '''positive''' if it is greater than 0. (0 is neither negative nor positive.)", - "MATH_IS_NEGATIVE": "dropdown - A number is '''negative''' if it is less than 0. (0 is neither negative nor positive.)", - "MATH_IS_DIVISIBLE_BY": "dropdown - A number x is divisible by y if y goes into x evenly. For example, 10 is divisible by 5, but 10 is not divisible by 3.", - "MATH_IS_TOOLTIP": "tooltip - This block lets the user specify via a dropdown menu whether to check if the numeric input is even, odd, prime, whole, positive, negative, or divisible by a given value.", - "MATH_CHANGE_HELPURL": "{{Optional}} url - Information about incrementing (increasing the value of) a variable. For other languages, just use the translation of the Wikipedia page about addition ([https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition]).", - "MATH_CHANGE_TITLE": "- As in: ''change'' [the value of variable] ''item'' ''by'' 1 (e.g., if the variable named 'item' had the value 5, change it to 6). %1 is a variable name. %2 is the amount of change.", - "MATH_CHANGE_TOOLTIP": "tooltip - This updates the value of the variable by adding to it the following numeric input.\n\nParameters:\n* %1 - the name of the variable whose value should be increased.", - "MATH_ROUND_HELPURL": "{{Optional}} url - Information about how numbers are rounded to the nearest integer", - "MATH_ROUND_TOOLTIP": "tooltip - See [https://en.wikipedia.org/wiki/Rounding https://en.wikipedia.org/wiki/Rounding].", - "MATH_ROUND_OPERATOR_ROUND": "dropdown - This rounds its input to the nearest whole number. For example, 3.4 is rounded to 3.", - "MATH_ROUND_OPERATOR_ROUNDUP": "dropdown - This rounds its input up to the nearest whole number. For example, if the input was 2.2, the result would be 3.", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "dropdown - This rounds its input down to the nearest whole number. For example, if the input was 3.8, the result would be 3.", - "MATH_ONLIST_HELPURL": "{{Optional}} url - Information about applying a function to a list of numbers. (We were unable to find such information in English. Feel free to skip this and any other URLs that are difficult.)", - "MATH_ONLIST_OPERATOR_SUM": "dropdown - This computes the sum of the numeric elements in the list. For example, the sum of the list {1, 4} is 5.", - "MATH_ONLIST_TOOLTIP_SUM": "tooltip - Please use the same term for 'sum' as in the previous message.", - "MATH_ONLIST_OPERATOR_MIN": "dropdown - This finds the smallest (minimum) number in a list. For example, the smallest number in the list [-5, 0, 3] is -5.", - "MATH_ONLIST_TOOLTIP_MIN": "tooltip - Please use the same term for 'min' or 'minimum' as in the previous message.", - "MATH_ONLIST_OPERATOR_MAX": "dropdown - This finds the largest (maximum) number in a list. For example, the largest number in the list [-5, 0, 3] is 3.", - "MATH_ONLIST_TOOLTIP_MAX": "tooltip", - "MATH_ONLIST_OPERATOR_AVERAGE": "dropdown - This adds up all of the numbers in a list and divides the sum by the number of elements in the list. For example, the [https://en.wikipedia.org/wiki/Arithmetic_mean average] of the list [1, 2, 3, 4] is 2.5 (10/4).", - "MATH_ONLIST_TOOLTIP_AVERAGE": "tooltip - See [https://en.wikipedia.org/wiki/Arithmetic_mean https://en.wikipedia.org/wiki/Arithmetic_mean] for more informatin.", - "MATH_ONLIST_OPERATOR_MEDIAN": "dropdown - This finds the [https://en.wikipedia.org/wiki/Median median] of the numeric values in a list. For example, the median of the list {1, 2, 7, 12, 13} is 7.", - "MATH_ONLIST_TOOLTIP_MEDIAN": "tooltip - See [https://en.wikipedia.org/wiki/Median median https://en.wikipedia.org/wiki/Median median] for more information.", - "MATH_ONLIST_OPERATOR_MODE": "dropdown - This finds the most common numbers ([https://en.wikipedia.org/wiki/Mode_(statistics) modes]) in a list. For example, the modes of the list {1, 3, 9, 3, 9} are {3, 9}.", - "MATH_ONLIST_TOOLTIP_MODE": "tooltip - See [https://en.wikipedia.org/wiki/Mode_(statistics) https://en.wikipedia.org/wiki/Mode_(statistics)] for more information.", - "MATH_ONLIST_OPERATOR_STD_DEV": "dropdown - This finds the [https://en.wikipedia.org/wiki/Standard_deviation standard deviation] of the numeric values in a list.", - "MATH_ONLIST_TOOLTIP_STD_DEV": "tooltip - See [https://en.wikipedia.org/wiki/Standard_deviation https://en.wikipedia.org/wiki/Standard_deviation] for more information.", - "MATH_ONLIST_OPERATOR_RANDOM": "dropdown - This choose an element at random from a list. Each element is chosen with equal probability.", - "MATH_ONLIST_TOOLTIP_RANDOM": "tooltip - Please use same term for 'random' as in previous entry.", - "MATH_MODULO_HELPURL": "{{Optional}} url - information about the modulo (remainder) operation.", - "MATH_MODULO_TITLE": "block text - Title of block providing the remainder when dividing the first numerical input by the second. For example, the remainder of 10 divided by 3 is 1.\n\nParameters:\n* %1 - the dividend (10, in our example)\n* %2 - the divisor (3 in our example).", - "MATH_MODULO_TOOLTIP": "tooltip - For example, the remainder of 10 divided by 3 is 1.", - "MATH_CONSTRAIN_HELPURL": "{{Optional}} url - Information about constraining a numeric value to be in a specific range. (The English URL is not ideal. Recall that translating URLs is the lowest priority.)", - "MATH_CONSTRAIN_TITLE": "block text - The title of the block that '''constrain'''s (forces) a number to be in a given range. For example, if the number 150 is constrained to be between 5 and 100, the result will be 100. \n\nParameters:\n* %1 - the value to constrain (e.g., 150)\n* %2 - the minimum value (e.g., 5)\n* %3 - the maximum value (e.g., 100).", - "MATH_CONSTRAIN_TOOLTIP": "tooltip - This compares a number ''x'' to a low value ''L'' and a high value ''H''. If ''x'' is less then ''L'', the result is ''L''. If ''x'' is greater than ''H'', the result is ''H''. Otherwise, the result is ''x''.", - "MATH_RANDOM_INT_HELPURL": "{{Optional}} url - Information about how computers generate random numbers.", - "MATH_RANDOM_INT_TITLE": "block text - The title of the block that generates a random integer (whole number) in the specified range. For example, if the range is from 5 to 7, this returns 5, 6, or 7 with equal likelihood. %1 is a placeholder for the lower number, %2 is the placeholder for the larger number.", - "MATH_RANDOM_INT_TOOLTIP": "tooltip - Return a random integer between two values specified as inputs. For example, if one input was 7 and another 9, any of the numbers 7, 8, or 9 could be produced.", - "MATH_RANDOM_FLOAT_HELPURL": "{{Optional}} url - Information about how computers generate random numbers (specifically, numbers in the range from 0 to just below 1).", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "block text - The title of the block that generates a random number greater than or equal to 0 and less than 1.", - "MATH_RANDOM_FLOAT_TOOLTIP": "tooltip - Return a random fraction between 0 and 1. The value may be equal to 0 but must be less than 1.", - "MATH_ATAN2_HELPURL": "{{Optional}} url - Information about how to calculate atan2.", - "MATH_ATAN2_TITLE": "block text - The title of the block that calculates atan2 of point (X, Y). For example, if the point is (-1, -1), this returns -135. %1 is a placeholder for the X coordinate, %2 is the placeholder for the Y coordinate.", - "MATH_ATAN2_TOOLTIP": "tooltip - Return the arctangent of point (X, Y) in degrees from -180 to 180. For example, if the point is (-1, -1) this returns -135.", - "TEXT_TEXT_HELPURL": "{{Optional}} url - Information about how computers represent text (sometimes referred to as ''string''s).", - "TEXT_TEXT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text https://github.com/google/blockly/wiki/Text].", - "TEXT_JOIN_HELPURL": "{{Optional}} url - Information on concatenating/appending pieces of text.", - "TEXT_JOIN_TITLE_CREATEWITH": "block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation].", - "TEXT_JOIN_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation create text with] for more information.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "block text - This is shown when the programmer wants to change the number of pieces of text being joined together. See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section.\n{{Identical|Join}}", - "TEXT_CREATE_JOIN_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section.", - "TEXT_APPEND_HELPURL": "{{Optional}} url - This and the other text-related URLs are going to be hard to translate. As always, it is okay to leave untranslated or paste in the English-language URL. For these URLs, you might also consider a general URL about how computers represent text (such as the translation of [https://en.wikipedia.org/wiki/String_(computer_science) this Wikipedia page]).", - "TEXT_APPEND_TITLE": "block input text - Message that the variable name at %1 will have the item at %2 appended to it. [[File:blockly-append-text.png]]", - "TEXT_APPEND_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#text-modification https://github.com/google/blockly/wiki/Text#text-modification] for more information.\n\nParameters:\n* %1 - the name of the variable to which text should be appended", - "TEXT_LENGTH_HELPURL": "{{Optional}} url - Information about text on computers (usually referred to as 'strings').", - "TEXT_LENGTH_TITLE": "block text - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length]. \n\nParameters:\n* %1 - the piece of text to take the length of", - "TEXT_LENGTH_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length].", - "TEXT_ISEMPTY_HELPURL": "{{Optional}} url - Information about empty pieces of text on computers (usually referred to as 'empty strings').", - "TEXT_ISEMPTY_TITLE": "block text - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text]. \n\nParameters:\n* %1 - the piece of text to test for emptiness", - "TEXT_ISEMPTY_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text].", - "TEXT_INDEXOF_HELPURL": "{{Optional}} url - Information about finding a character in a piece of text.", - "TEXT_INDEXOF_TOOLTIP": "tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode. See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text].", - "TEXT_INDEXOF_TITLE": "block text - Title of blocks allowing users to find text. See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text]. [[File:Blockly-find-text.png]]. In English the expanded message is 'in text %1 find (first|last) occurance of text %3' where %1 and %3 are added by the user. See TEXT_INDEXOF_OPERATOR_FIRST and TEXT_INDEXOF_OPERATOR_LAST for the dropdown text that replaces %2.", - "TEXT_INDEXOF_OPERATOR_FIRST": "dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text]. [[File:Blockly-find-text.png]].", - "TEXT_INDEXOF_OPERATOR_LAST": "dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text]. This would replace 'find first occurrence of text' below. (For more information on how common text is factored out of dropdown menus, see [https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus)].) [[File:Blockly-find-text.png]].", - "TEXT_CHARAT_HELPURL": "{{Optional}} url - Information about extracting characters (letters, number, symbols, etc.) from text.", - "TEXT_CHARAT_TITLE": "block text - Text for a block to extract a letter (or number, punctuation character, etc.) from a string, as shown below. %1 is added by the user and %2 is replaced by a dropdown of options, possibly followed by another user supplied string. TEXT_CHARAT_TAIL is then added to the end. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", - "TEXT_CHARAT_FROM_START": "dropdown - Indicates that the letter (or number, punctuation character, etc.) with the specified index should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", - "TEXT_CHARAT_FROM_END": "block text - Indicates that the letter (or number, punctuation character, etc.) with the specified index from the end of a given piece of text should be obtained. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", - "TEXT_CHARAT_FIRST": "block text - Indicates that the first letter of the following piece of text should be retrieved. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", - "TEXT_CHARAT_LAST": "block text - Indicates that the last letter (or number, punctuation mark, etc.) of the following piece of text should be retrieved. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", - "TEXT_CHARAT_RANDOM": "block text - Indicates that any letter (or number, punctuation mark, etc.) in the following piece of text should be randomly selected. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", - "TEXT_CHARAT_TAIL": "block text - Text that goes after the rightmost block/dropdown when getting a single letter from a piece of text, as in [https://blockly-demo.appspot.com/static/apps/code/index.html#3m23km these blocks] or shown below. For most languages, this will be blank. [[File:Blockly-text-get.png]]", - "TEXT_CHARAT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", - "TEXT_GET_SUBSTRING_TOOLTIP": "See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text].", - "TEXT_GET_SUBSTRING_HELPURL": "{{Optional}} url - Information about extracting characters from text. Reminder: urls are the lowest priority translations. Feel free to skip.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "block text - Precedes a piece of text from which a portion should be extracted. [[File:Blockly-get-substring.png]]", - "TEXT_GET_SUBSTRING_START_FROM_START": "dropdown - Indicates that the following number specifies the position (relative to the start position) of the beginning of the region of text that should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", - "TEXT_GET_SUBSTRING_START_FROM_END": "dropdown - Indicates that the following number specifies the position (relative to the end position) of the beginning of the region of text that should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will automatically appear ''after'' this and any other [https://translatewiki.net/wiki/Translating:Blockly#Ordinal_numbers ordinal numbers] on this block. [[File:Blockly-get-substring.png]]", - "TEXT_GET_SUBSTRING_START_FIRST": "block text - Indicates that a region starting with the first letter of the preceding piece of text should be extracted. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", - "TEXT_GET_SUBSTRING_END_FROM_START": "dropdown - Indicates that the following number specifies the position (relative to the start position) of the end of the region of text that should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", - "TEXT_GET_SUBSTRING_END_FROM_END": "dropdown - Indicates that the following number specifies the position (relative to the end position) of the end of the region of text that should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", - "TEXT_GET_SUBSTRING_END_LAST": "block text - Indicates that a region ending with the last letter of the preceding piece of text should be extracted. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", - "TEXT_GET_SUBSTRING_TAIL": "block text - Text that should go after the rightmost block/dropdown when [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text extracting a region of text]. In most languages, this will be the empty string. [[File:Blockly-get-substring.png]]", - "TEXT_CHANGECASE_HELPURL": "{{Optional}} url - Information about the case of letters (upper-case and lower-case).", - "TEXT_CHANGECASE_TOOLTIP": "tooltip - Describes a block to adjust the case of letters. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "block text - Indicates that all of the letters in the following piece of text should be capitalized. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "block text - Indicates that all of the letters in the following piece of text should be converted to lower-case. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "block text - Indicates that the first letter of each of the following words should be capitalized and the rest converted to lower-case. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].", - "TEXT_TRIM_HELPURL": "{{Optional}} url - Information about trimming (removing) text off the beginning and ends of pieces of text.", - "TEXT_TRIM_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces https://github.com/google/blockly/wiki/Text#trimming-removing-spaces].", - "TEXT_TRIM_OPERATOR_BOTH": "dropdown - Removes spaces from the beginning and end of a piece of text. See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. Note that neither this nor the other options modify the original piece of text (that follows); the block just returns a version of the text without the specified spaces.", - "TEXT_TRIM_OPERATOR_LEFT": "dropdown - Removes spaces from the beginning of a piece of text. See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. Note that in right-to-left scripts, this will remove spaces from the right side.", - "TEXT_TRIM_OPERATOR_RIGHT": "dropdown - Removes spaces from the end of a piece of text. See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. Note that in right-to-left scripts, this will remove spaces from the left side.", - "TEXT_PRINT_HELPURL": "{{Optional}} url - Information about displaying text on computers.", - "TEXT_PRINT_TITLE": "block text - Display the input on the screen. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text]. \n\nParameters:\n* %1 - the value to print", - "TEXT_PRINT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", - "TEXT_PROMPT_HELPURL": "{{Optional}} url - Information about getting text from users.", - "TEXT_PROMPT_TYPE_TEXT": "dropdown - Specifies that a piece of text should be requested from the user with the following message. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", - "TEXT_PROMPT_TYPE_NUMBER": "dropdown - Specifies that a number should be requested from the user with the following message. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", - "TEXT_PROMPT_TOOLTIP_NUMBER": "dropdown - Precedes the message with which the user should be prompted for a number. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", - "TEXT_PROMPT_TOOLTIP_TEXT": "dropdown - Precedes the message with which the user should be prompted for some text. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", - "TEXT_COUNT_MESSAGE0": "block text - Title of a block that counts the number of instances of a smaller pattern (%1) inside a longer string (%2).", - "TEXT_COUNT_HELPURL": "{{Optional}} url - Information about counting how many times a string appears in another string.", - "TEXT_COUNT_TOOLTIP": "tooltip - Short description of a block that counts how many times some text occurs within some other text.", - "TEXT_REPLACE_MESSAGE0": "block text - Title of a block that returns a copy of text (%3) with all instances of some smaller text (%1) replaced with other text (%2).", - "TEXT_REPLACE_HELPURL": "{{Optional}} url - Information about replacing each copy text (or string, in computer lingo) with other text.", - "TEXT_REPLACE_TOOLTIP": "tooltip - Short description of a block that replaces copies of text in a large text with other text.", - "TEXT_REVERSE_MESSAGE0": "block text - Title of block that returns a copy of text (%1) with the order of letters and characters reversed.", - "TEXT_REVERSE_HELPURL": "{{Optional}} url - Information about reversing a letters/characters in text.", - "TEXT_REVERSE_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text].", - "LISTS_CREATE_EMPTY_HELPURL": "{{Optional}} url - Information on empty lists.", - "LISTS_CREATE_EMPTY_TITLE": "block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list].", - "LISTS_CREATE_EMPTY_TOOLTIP": "block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list].", - "LISTS_CREATE_WITH_HELPURL": "{{Optional}} url - Information on building lists.", - "LISTS_CREATE_WITH_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with].", - "LISTS_CREATE_WITH_INPUT_WITH": "block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with].", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "block text - This appears in a sub-block when [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs changing the number of inputs in a ''''create list with'''' block].\n{{Identical|List}}", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs].", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs].", - "LISTS_REPEAT_HELPURL": "{{Optional}} url - Information about [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item].", - "LISTS_REPEAT_TOOLTIP": "{{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item].", - "LISTS_REPEAT_TITLE": "block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with]. \n\nParameters:\n* %1 - the item (text) to be repeated\n* %2 - the number of times to repeat it", - "LISTS_LENGTH_HELPURL": "{{Optional}} url - Information about how the length of a list is computed (i.e., by the total number of elements, not the number of different elements).", - "LISTS_LENGTH_TITLE": "block text - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of]. \n\nParameters:\n* %1 - the list whose length is desired", - "LISTS_LENGTH_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of Blockly:Lists:length of].", - "LISTS_ISEMPTY_HELPURL": "{{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#is-empty https://github.com/google/blockly/wiki/Lists#is-empty].", - "LISTS_ISEMPTY_TITLE": "block text - See [https://github.com/google/blockly/wiki/Lists#is-empty https://github.com/google/blockly/wiki/Lists#is-empty]. \n\nParameters:\n* %1 - the list to test", - "LISTS_ISEMPTY_TOOLTIP": "block tooltip - See [https://github.com/google/blockly/wiki/Lists#is-empty https://github.com/google/blockly/wiki/Lists#is-empty].", - "LISTS_INLIST": "block text - Title of blocks operating on [https://github.com/google/blockly/wiki/Lists lists].", - "LISTS_INDEX_OF_HELPURL": "{{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list].", - "LISTS_INDEX_OF_FIRST": "dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list Lists#finding-items-in-a-list]. [[File:Blockly-list-find.png]]", - "LISTS_INDEX_OF_LAST": "dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list]. [[File:Blockly-list-find.png]]", - "LISTS_INDEX_OF_TOOLTIP": "tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode. See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list]. [[File:Blockly-list-find.png]]", - "LISTS_GET_INDEX_GET": "dropdown - Indicates that the user wishes to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item get an item from a list] without removing it from the list.", - "LISTS_GET_INDEX_GET_REMOVE": "dropdown - Indicates that the user wishes to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item get and remove an item from a list], as opposed to merely getting it without modifying the list.", - "LISTS_GET_INDEX_REMOVE": "dropdown - Indicates that the user wishes to [https://github.com/google/blockly/wiki/Lists#removing-an-item remove an item from a list].\n{{Identical|Remove}}", - "LISTS_GET_INDEX_FROM_START": "dropdown - Indicates that an index relative to the front of the list should be used to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item get and/or remove an item from a list]. Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will automatically appear ''after'' this number (and any other ordinal numbers on this block). See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly. [[File:Blockly-list-get-item.png]]", - "LISTS_GET_INDEX_FROM_END": "dropdown - Indicates that an index relative to the end of the list should be used to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item access an item in a list]. [[File:Blockly-list-get-item.png]]", - "LISTS_GET_INDEX_FIRST": "dropdown - Indicates that the '''first''' item should be [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. [[File:Blockly-list-get-item.png]]", - "LISTS_GET_INDEX_LAST": "dropdown - Indicates that the '''last''' item should be [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. [[File:Blockly-list-get-item.png]]", - "LISTS_GET_INDEX_RANDOM": "dropdown - Indicates that a '''random''' item should be [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. [[File:Blockly-list-get-item.png]]", - "LISTS_GET_INDEX_TAIL": "block text - Text that should go after the rightmost block/dropdown when [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessing an item from a list]. In most languages, this will be the empty string. [[File:Blockly-list-get-item.png]]", - "LISTS_INDEX_FROM_START_TOOLTIP": "tooltip - Indicates the ordinal number that the first item in a list is referenced by. %1 will be replaced by either '#0' or '#1' depending on the indexing mode.", - "LISTS_INDEX_FROM_END_TOOLTIP": "tooltip - Indicates the ordinal number that the last item in a list is referenced by. %1 will be replaced by either '#0' or '#1' depending on the indexing mode.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for '#' or '# from end'.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'first'.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'last'.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'random'.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for '#' or '# from end'.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'first'.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'last'.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'random'.", - "LISTS_SET_INDEX_HELPURL": "{{Optional}} url - Information about putting items in lists.", - "LISTS_SET_INDEX_SET": "block text - [https://github.com/google/blockly/wiki/Lists#in-list--set Replaces an item in a list]. [[File:Blockly-in-list-set-insert.png]]", - "LISTS_SET_INDEX_INSERT": "block text - [https://github.com/google/blockly/wiki/Lists#in-list--insert-at Inserts an item into a list]. [[File:Blockly-in-list-set-insert.png]]", - "LISTS_SET_INDEX_INPUT_TO": "block text - The word(s) after the position in the list and before the item to be set/inserted. [[File:Blockly-in-list-set-insert.png]]", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'set' block).", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'set' block).", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'set' block).", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'set' block).", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'insert' block).", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'insert' block).", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'insert' block).", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'insert' block).", - "LISTS_GET_SUBLIST_HELPURL": "{{Optional}} url - Information describing extracting a sublist from an existing list.", - "LISTS_GET_SUBLIST_START_FROM_START": "dropdown - Indicates that an index relative to the front of the list should be used to specify the beginning of the range from which to [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. [[File:Blockly-get-sublist.png]] Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will automatically appear ''after'' this number (and any other ordinal numbers on this block). See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly.", - "LISTS_GET_SUBLIST_START_FROM_END": "dropdown - Indicates that an index relative to the end of the list should be used to specify the beginning of the range from which to [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist].", - "LISTS_GET_SUBLIST_START_FIRST": "dropdown - Indicates that the [https://github.com/google/blockly/wiki/Lists#getting-a-sublist sublist to extract] should begin with the list's first item.", - "LISTS_GET_SUBLIST_END_FROM_START": "dropdown - Indicates that an index relative to the front of the list should be used to specify the end of the range from which to [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. [[File:Blockly-get-sublist.png]]", - "LISTS_GET_SUBLIST_END_FROM_END": "dropdown - Indicates that an index relative to the end of the list should be used to specify the end of the range from which to [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. [[File:Blockly-get-sublist.png]]", - "LISTS_GET_SUBLIST_END_LAST": "dropdown - Indicates that the '''last''' item in the given list should be [https://github.com/google/blockly/wiki/Lists#getting-a-sublist the end of the selected sublist]. [[File:Blockly-get-sublist.png]]", - "LISTS_GET_SUBLIST_TAIL": "block text - This appears in the rightmost position ('tail') of the sublist block, as described at [https://github.com/google/blockly/wiki/Lists#getting-a-sublist https://github.com/google/blockly/wiki/Lists#getting-a-sublist]. In English and most other languages, this is the empty string. [[File:Blockly-get-sublist.png]]", - "LISTS_GET_SUBLIST_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-sublist https://github.com/google/blockly/wiki/Lists#getting-a-sublist] for more information. [[File:Blockly-get-sublist.png]]", - "LISTS_SORT_HELPURL": "{{Optional}} url - Information describing sorting a list.", - "LISTS_SORT_TITLE": "Sort as type %1 (numeric or alphabetic) in order %2 (ascending or descending) a list of items %3.\n{{Identical|Sort}}", - "LISTS_SORT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#sorting-a-list].", - "LISTS_SORT_ORDER_ASCENDING": "sorting order or direction from low to high value for numeric, or A-Z for alphabetic.\n{{Identical|Ascending}}", - "LISTS_SORT_ORDER_DESCENDING": "sorting order or direction from high to low value for numeric, or Z-A for alphabetic.\n{{Identical|Descending}}", - "LISTS_SORT_TYPE_NUMERIC": "sort by treating each item as a number.", - "LISTS_SORT_TYPE_TEXT": "sort by treating each item alphabetically, case-sensitive.", - "LISTS_SORT_TYPE_IGNORECASE": "sort by treating each item alphabetically, ignoring differences in case.", - "LISTS_SPLIT_HELPURL": "{{Optional}} url - Information describing splitting text into a list, or joining a list into text.", - "LISTS_SPLIT_LIST_FROM_TEXT": "dropdown - Indicates that text will be split up into a list (e.g. 'a-b-c' -> ['a', 'b', 'c']).", - "LISTS_SPLIT_TEXT_FROM_LIST": "dropdown - Indicates that a list will be joined together to form text (e.g. ['a', 'b', 'c'] -> 'a-b-c').", - "LISTS_SPLIT_WITH_DELIMITER": "block text - Prompts for a letter to be used as a separator when splitting or joining text.", - "LISTS_SPLIT_TOOLTIP_SPLIT": "tooltip - See [https://github.com/google/blockly/wiki/Lists#make-list-from-text https://github.com/google/blockly/wiki/Lists#make-list-from-text] for more information.", - "LISTS_SPLIT_TOOLTIP_JOIN": "tooltip - See [https://github.com/google/blockly/wiki/Lists#make-text-from-list https://github.com/google/blockly/wiki/Lists#make-text-from-list] for more information.", - "LISTS_REVERSE_HELPURL": "{{Optional}} url - Information describing reversing a list.", - "LISTS_REVERSE_MESSAGE0": "block text - Title of block that returns a copy of a list (%1) with the order of items reversed.", - "LISTS_REVERSE_TOOLTIP": "tooltip - Short description for a block that reverses a copy of a list.", - "ORDINAL_NUMBER_SUFFIX": "grammar - Text that follows an ordinal number (a number that indicates position relative to other numbers). In most languages, such text appears before the number, so this should be blank. An exception is Hungarian. See [[Translating:Blockly#Ordinal_numbers]] for more information.", - "VARIABLES_GET_HELPURL": "{{Optional}} url - Information about ''variables'' in computer programming. Consider using your language's translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists.", - "VARIABLES_GET_TOOLTIP": "tooltip - This gets the value of the named variable without modifying it.", - "VARIABLES_GET_CREATE_SET": "context menu - Selecting this creates a block to set (change) the value of this variable. \n\nParameters:\n* %1 - the name of the variable.", - "VARIABLES_SET_HELPURL": "{{Optional}} url - Information about ''variables'' in computer programming. Consider using your language's translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists.", - "VARIABLES_SET": "block text - Change the value of a mathematical variable: '''set [the value of] x to 7'''.\n\nParameters:\n* %1 - the name of the variable.\n* %2 - the value to be assigned.", - "VARIABLES_SET_TOOLTIP": "tooltip - This initializes or changes the value of the named variable.", - "VARIABLES_SET_CREATE_GET": "context menu - Selecting this creates a block to get (change) the value of this variable.\n\nParameters:\n* %1 - the name of the variable.", - "PROCEDURES_DEFNORETURN_HELPURL": "{{Optional}} url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that do not have return values.", - "PROCEDURES_DEFNORETURN_TITLE": "block text - This precedes the name of the function when defining it. See [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#c84aoc this sample function definition].", - "PROCEDURES_DEFNORETURN_PROCEDURE": "default name - This acts as a placeholder for the name of a function on a function definition block, as shown on [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#w7cfju this block]. The user will replace it with the function's name.", - "PROCEDURES_BEFORE_PARAMS": "block text - This precedes the list of parameters on a function's definition block. See [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample function with parameters].", - "PROCEDURES_CALL_BEFORE_PARAMS": "block text - This precedes the list of parameters on a function's caller block. See [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample function with parameters].", - "PROCEDURES_DEFNORETURN_DO": "block text - This appears next to the function's 'body', the blocks that should be run when the function is called, as shown in [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample function definition].", - "PROCEDURES_DEFNORETURN_TOOLTIP": "tooltip", - "PROCEDURES_DEFNORETURN_COMMENT": "Placeholder text that the user is encouraged to replace with a description of what their function does.", - "PROCEDURES_DEFRETURN_HELPURL": "{{Optional}} url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that have return values.", - "PROCEDURES_DEFRETURN_RETURN": "block text - This imperative or infinite verb precedes the value that is used as the return value (output) of this function. See [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#6ot5y5 this sample function that returns a value].", - "PROCEDURES_DEFRETURN_TOOLTIP": "tooltip", - "PROCEDURES_ALLOW_STATEMENTS": "Label for a checkbox that controls if statements are allowed in a function.", - "PROCEDURES_DEF_DUPLICATE_WARNING": "alert - The user has created a function with two parameters that have the same name. Every parameter must have a different name.", - "PROCEDURES_CALLNORETURN_HELPURL": "{{Optional}} url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that do not return values.", - "PROCEDURES_CALLNORETURN_TOOLTIP": "tooltip - This block causes the body (blocks inside) of the named function definition to be run.", - "PROCEDURES_CALLRETURN_HELPURL": "{{Optional}} url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that return values.", - "PROCEDURES_CALLRETURN_TOOLTIP": "tooltip - This block causes the body (blocks inside) of the named function definition to be run.\n\nParameters:\n* %1 - the name of the function.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "block text - This text appears on a block in a window that appears when the user clicks on the plus sign or star on a function definition block. It refers to the set of parameters (referred to by the simpler term 'inputs') to the function. See [[Translating:Blockly#function_definitions]].\n{{Identical|Input}}", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "tooltip", - "PROCEDURES_MUTATORARG_TITLE": "block text - This text appears on a block in a window that appears when the user clicks on the plus sign or star on a function definition block]. It appears on the block for adding an individual parameter (referred to by the simpler term 'inputs') to the function. See [[Translating:Blockly#function_definitions]].", - "PROCEDURES_MUTATORARG_TOOLTIP": "tooltip", - "PROCEDURES_HIGHLIGHT_DEF": "context menu - This appears on the context menu for function calls. Selecting it causes the corresponding function definition to be highlighted (as shown at [[Translating:Blockly#context_menus]].", - "PROCEDURES_CREATE_DO": "context menu - This appears on the context menu for function definitions. Selecting it creates a block to call the function.\n\nParameters:\n* %1 - the name of the function.\n{{Identical|Create}}", - "PROCEDURES_IFRETURN_TOOLTIP": "tooltip - If the first value is true, this causes the second value to be returned immediately from the enclosing function.", - "PROCEDURES_IFRETURN_HELPURL": "{{Optional}} url - Information about guard clauses.", - "PROCEDURES_IFRETURN_WARNING": "warning - This appears if the user tries to use this block outside of a function definition.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "comment text - This text appears in a new workspace comment, to hint that the user can type here.", - "WORKSPACE_ARIA_LABEL": "workspace - This text is read out when a user navigates to the workspace while using a screen reader.", - "COLLAPSED_WARNINGS_WARNING": "warning - This appears if the user collapses a block, and blocks inside that block have warnings attached to them. It should inform the user that the block they collapsed contains blocks that have warnings.", - "DIALOG_OK": "button label - Pressing this button closes help information.\n{{Identical|OK}}", - "DIALOG_CANCEL": "button label - Pressing this button cancels a proposed action.\n{{Identical|Cancel}}" -} +{ + "@metadata": { + "authors": [ + "Ajeje Brazorf", + "Espertus", + "Liuxinyu970226", + "Metalhead64", + "Robby", + "Shirayuki" + ] + }, + "VARIABLES_DEFAULT_NAME": "default name - A simple, general default name for a variable, preferably short. For more context, see [[Translating:Blockly#infrequent_message_types]].\n{{Identical|Item}}", + "UNNAMED_KEY": "default name - A simple, default name for an unnamed function or variable. Preferably indicates that the item is unnamed.", + "TODAY": "button text - Button that sets a calendar to today's date.\n{{Identical|Today}}", + "DUPLICATE_BLOCK": "context menu - Make a copy of the selected block (and any blocks it contains).\n{{Identical|Duplicate}}", + "ADD_COMMENT": "context menu - Add a descriptive comment to the selected block.", + "REMOVE_COMMENT": "context menu - Remove the descriptive comment from the selected block.", + "DUPLICATE_COMMENT": "context menu - Make a copy of the selected workspace comment.\n{{Identical|Duplicate}}", + "EXTERNAL_INPUTS": "context menu - Change from 'external' to 'inline' mode for displaying blocks used as inputs to the selected block. See [[Translating:Blockly#context_menus]].", + "INLINE_INPUTS": "context menu - Change from 'internal' to 'external' mode for displaying blocks used as inputs to the selected block. See [[Translating:Blockly#context_menus]].", + "DELETE_BLOCK": "context menu - Permanently delete the selected block.", + "DELETE_X_BLOCKS": "context menu - Permanently delete the %1 selected blocks.\n\nParameters:\n* %1 - an integer greater than 1.", + "DELETE_ALL_BLOCKS": "confirmation prompt - Question the user if they really wanted to permanently delete all %1 blocks.\n\nParameters:\n* %1 - an integer greater than 1.", + "CLEAN_UP": "context menu - Reposition all the blocks so that they form a neat line.", + "COLLAPSE_BLOCK": "context menu - Make the appearance of the selected block smaller by hiding some information about it.", + "COLLAPSE_ALL": "context menu - Make the appearance of all blocks smaller by hiding some information about it. Use the same terminology as in the previous message.", + "EXPAND_BLOCK": "context menu - Restore the appearance of the selected block by showing information about it that was hidden (collapsed) earlier.", + "EXPAND_ALL": "context menu - Restore the appearance of all blocks by showing information about it that was hidden (collapsed) earlier. Use the same terminology as in the previous message.", + "DISABLE_BLOCK": "context menu - Make the selected block have no effect (unless reenabled).", + "ENABLE_BLOCK": "context menu - Make the selected block have effect (after having been disabled earlier).", + "HELP": "context menu - Provide helpful information about the selected block.\n{{Identical|Help}}", + "UNDO": "context menu - Undo the previous action.\n{{Identical|Undo}}", + "REDO": "context menu - Undo the previous undo action.\n{{Identical|Redo}}", + "CHANGE_VALUE_TITLE": "prompt - This message is only seen in the Opera browser. With most browsers, users can edit numeric values in blocks by just clicking and typing. Opera does not allows this, so we have to open a new window and prompt users with this message to chanage a value.", + "RENAME_VARIABLE": "dropdown choice - When the user clicks on a variable block, this is one of the dropdown menu choices. It is used to rename the current variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].", + "RENAME_VARIABLE_TITLE": "prompt - Prompts the user to enter the new name for the selected variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].\n\nParameters:\n* %1 - the name of the variable to be renamed.", + "NEW_VARIABLE": "button text - Text on the button used to launch the variable creation dialogue.", + "NEW_STRING_VARIABLE": "button text - Text on the button used to launch the variable creation dialogue.", + "NEW_NUMBER_VARIABLE": "button text - Text on the button used to launch the variable creation dialogue.", + "NEW_COLOUR_VARIABLE": "button text - Text on the button used to launch the variable creation dialogue.", + "NEW_VARIABLE_TYPE_TITLE": "prompt - Prompts the user to enter the type for a variable.", + "NEW_VARIABLE_TITLE": "prompt - Prompts the user to enter the name for a new variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].", + "VARIABLE_ALREADY_EXISTS": "alert - Tells the user that the name they entered is already in use.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "alert - Tells the user that the name they entered is already in use for another type.", + "DELETE_VARIABLE_CONFIRMATION": "confirm - Ask the user to confirm their deletion of multiple uses of a variable.", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "alert - Tell the user that they can't delete a variable because it's part of the definition of a function.", + "DELETE_VARIABLE": "dropdown choice - Delete the currently selected variable.", + "COLOUR_PICKER_HELPURL": "{{Optional}} url - Information about colour.", + "COLOUR_PICKER_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette].", + "COLOUR_RANDOM_HELPURL": "{{Optional}} url - A link that displays a random colour each time you visit it.", + "COLOUR_RANDOM_TITLE": "block text - Title of block that generates a colour at random.", + "COLOUR_RANDOM_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Colour#generating-a-random-colour https://github.com/google/blockly/wiki/Colour#generating-a-random-colour].", + "COLOUR_RGB_HELPURL": "{{Optional}} url - A link for colour codes with percentages (0-100%) for each component, instead of the more common 0-255, which may be more difficult for beginners.", + "COLOUR_RGB_TITLE": "block text - Title of block for [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].", + "COLOUR_RGB_RED": "block input text - The amount of red (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Red}}", + "COLOUR_RGB_GREEN": "block input text - The amount of green (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].", + "COLOUR_RGB_BLUE": "block input text - The amount of blue (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Blue}}", + "COLOUR_RGB_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].", + "COLOUR_BLEND_HELPURL": "{{Optional}} url - A useful link that displays blending of two colours.", + "COLOUR_BLEND_TITLE": "block text - A verb for blending two shades of paint.", + "COLOUR_BLEND_COLOUR1": "block input text - The first of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend].", + "COLOUR_BLEND_COLOUR2": "block input text - The second of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend].", + "COLOUR_BLEND_RATIO": "block input text - The proportion of the [https://github.com/google/blockly/wiki/Colour#blending-colours blend] containing the first colour; the remaining proportion is of the second colour. For example, if the first colour is red and the second colour blue, a ratio of 1 would yield pure red, a ratio of .5 would yield purple (equal amounts of red and blue), and a ratio of 0 would yield pure blue.\n{{Identical|Ratio}}", + "COLOUR_BLEND_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Colour#blending-colours https://github.com/google/blockly/wiki/Colour#blending-colours].", + "CONTROLS_REPEAT_HELPURL": "{{Optional}} url - Describes 'repeat loops' in computer programs; consider using the translation of the page [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow].", + "CONTROLS_REPEAT_TITLE": "block input text - Title of [https://github.com/google/blockly/wiki/Loops#repeat repeat block].\n\nParameters:\n* %1 - the number of times the body of the loop should be repeated.", + "CONTROLS_REPEAT_INPUT_DO": "block text - Preceding the blocks in the body of the loop. See [https://github.com/google/blockly/wiki/Loops https://github.com/google/blockly/wiki/Loops].\n{{Identical|Do}}", + "CONTROLS_REPEAT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat https://github.com/google/blockly/wiki/Loops#repeat].", + "CONTROLS_WHILEUNTIL_HELPURL": "{{Optional}} url - Describes 'while loops' in computer programs; consider using the translation of [https://en.wikipedia.org/wiki/While_loop https://en.wikipedia.org/wiki/While_loop], if present, or [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow].", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-while repeat while] the following condition is true.", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-until repeat until] the following condition becomes true.", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while].", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-until https://github.com/google/blockly/wiki/Loops#repeat-until].", + "CONTROLS_FOR_HELPURL": "{{Optional}} url - Describes 'for loops' in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/For_loop https://en.wikipedia.org/wiki/For_loop], if present.", + "CONTROLS_FOR_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Loops#count-with https://github.com/google/blockly/wiki/Loops#count-with].\n\nParameters:\n* %1 - the name of the loop variable.", + "CONTROLS_FOR_TITLE": "block text - Repeatedly counts a variable (%1) starting with a (usually lower) number in a range (%2), ending with a (usually higher) number in a range (%3), and counting the iterations by a number of steps (%4). As in [https://github.com/google/blockly/wiki/Loops#count-with https://github.com/google/blockly/wiki/Loops#count-with]. [[File:Blockly-count-with.png]]", + "CONTROLS_FOREACH_HELPURL": "{{Optional}} url - Describes 'for-each loops' in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/Foreach https://en.wikipedia.org/wiki/Foreach] if present.", + "CONTROLS_FOREACH_TITLE": "block text - Title of [https://github.com/google/blockly/wiki/Loops#for-each for each block]. Sequentially assigns every item in array %2 to the valiable %1.", + "CONTROLS_FOREACH_TOOLTIP": "block text - Description of [https://github.com/google/blockly/wiki/Loops#for-each for each blocks].\n\nParameters:\n* %1 - the name of the loop variable.", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "{{Optional}} url - Describes control flow in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow], if it exists.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "dropdown - The current loop should be exited. See [https://github.com/google/blockly/wiki/Loops#break https://github.com/google/blockly/wiki/Loops#break].", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "dropdown - The current iteration of the loop should be ended and the next should begin. See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration].", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "tooltip - See [https://github.com/google/blockly/wiki/Loops#break-out-of-loop https://github.com/google/blockly/wiki/Loops#break-out-of-loop].", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "tooltip - See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration].", + "CONTROLS_FLOW_STATEMENTS_WARNING": "warning - The user has tried placing a block outside of a loop (for each, while, repeat, etc.), but this type of block may only be used within a loop. See [https://github.com/google/blockly/wiki/Loops#loop-termination-blocks https://github.com/google/blockly/wiki/Loops#loop-termination-blocks].", + "CONTROLS_IF_HELPURL": "{{Optional}} url - Describes conditional statements (if-then-else) in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_else https://en.wikipedia.org/wiki/If_else], if present.", + "CONTROLS_IF_TOOLTIP_1": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-blocks 'if' blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.", + "CONTROLS_IF_TOOLTIP_2": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-blocks if-else blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.", + "CONTROLS_IF_TOOLTIP_3": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-blocks if-else-if blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.", + "CONTROLS_IF_TOOLTIP_4": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-else-blocks if-else-if-else blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.", + "CONTROLS_IF_MSG_IF": "block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. It is recommended, but not essential, that this have text in common with the translation of 'else if'\n{{Identical|If}}", + "CONTROLS_IF_MSG_ELSEIF": "block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. The English words 'otherwise if' would probably be clearer than 'else if', but the latter is used because it is traditional and shorter.", + "CONTROLS_IF_MSG_ELSE": "block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. The English word 'otherwise' would probably be superior to 'else', but the latter is used because it is traditional and shorter.", + "CONTROLS_IF_IF_TOOLTIP": "tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification].", + "CONTROLS_IF_ELSEIF_TOOLTIP": "tooltip - Describes the 'else if' subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification].", + "CONTROLS_IF_ELSE_TOOLTIP": "tooltip - Describes the 'else' subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification].", + "LOGIC_COMPARE_HELPURL": "{{Optional}} url - Information about comparisons.", + "LOGIC_COMPARE_TOOLTIP_EQ": "tooltip - Describes the equals (=) block.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "tooltip - Describes the not equals (≠) block.", + "LOGIC_COMPARE_TOOLTIP_LT": "tooltip - Describes the less than (<) block.", + "LOGIC_COMPARE_TOOLTIP_LTE": "tooltip - Describes the less than or equals (≤) block.", + "LOGIC_COMPARE_TOOLTIP_GT": "tooltip - Describes the greater than (>) block.", + "LOGIC_COMPARE_TOOLTIP_GTE": "tooltip - Describes the greater than or equals (≥) block.", + "LOGIC_OPERATION_HELPURL": "{{Optional}} url - Information about the Boolean conjunction ('and') and disjunction ('or') operators. Consider using the translation of [https://en.wikipedia.org/wiki/Boolean_logic https://en.wikipedia.org/wiki/Boolean_logic], if it exists in your language.", + "LOGIC_OPERATION_TOOLTIP_AND": "tooltip - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction].", + "LOGIC_OPERATION_AND": "block text - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction].\n{{Identical|And}}", + "LOGIC_OPERATION_TOOLTIP_OR": "block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction].", + "LOGIC_OPERATION_OR": "block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction].\n{{Identical|Or}}", + "LOGIC_NEGATE_HELPURL": "{{Optional}} url - Information about logical negation. The translation of [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation] is recommended if it exists in the target language.", + "LOGIC_NEGATE_TITLE": "block text - This is a unary operator that returns ''false'' when the input is ''true'', and ''true'' when the input is ''false''. \n\nParameters:\n* %1 - the input (which should be either the value 'true' or 'false')", + "LOGIC_NEGATE_TOOLTIP": "tooltip - See [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation].", + "LOGIC_BOOLEAN_HELPURL": "{{Optional}} url - Information about the logic values ''true'' and ''false''. Consider using the translation of [https://en.wikipedia.org/wiki/Truth_value https://en.wikipedia.org/wiki/Truth_value] if it exists in your language.", + "LOGIC_BOOLEAN_TRUE": "block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] ''true''.\n{{Identical|True}}", + "LOGIC_BOOLEAN_FALSE": "block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] ''false''.\n{{Identical|False}}", + "LOGIC_BOOLEAN_TOOLTIP": "tooltip - Indicates that the block returns either of the two possible [https://en.wikipedia.org/wiki/Truth_value logical values].", + "LOGIC_NULL_HELPURL": "{{Optional}} url - Provide a link to the translation of [https://en.wikipedia.org/wiki/Nullable_type https://en.wikipedia.org/wiki/Nullable_type], if it exists in your language; otherwise, do not worry about translating this advanced concept.", + "LOGIC_NULL": "block text - In computer languages, ''null'' is a special value that indicates that no value has been set. You may use your language's word for 'nothing' or 'invalid'.\n{{Identical|Null}}", + "LOGIC_NULL_TOOLTIP": "tooltip - This should use the word from the previous message.", + "LOGIC_TERNARY_HELPURL": "{{Optional}} url - Describes the programming language operator known as the ''ternary'' or ''conditional'' operator. It is recommended that you use the translation of [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:] if it exists.", + "LOGIC_TERNARY_CONDITION": "block input text - Label for the input whose value determines which of the other two inputs is returned. In some programming languages, this is called a ''''predicate''''.", + "LOGIC_TERNARY_IF_TRUE": "block input text - Indicates that the following input should be returned (used as output) if the test input is true. Remember to try to keep block text terse (short).", + "LOGIC_TERNARY_IF_FALSE": "block input text - Indicates that the following input should be returned (used as output) if the test input is false.", + "LOGIC_TERNARY_TOOLTIP": "tooltip - See [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:].", + "MATH_NUMBER_HELPURL": "{{Optional}} url - Information about (real) numbers.", + "MATH_NUMBER_TOOLTIP": "tooltip - Any positive or negative number, not necessarily an integer.", + "MATH_ADDITION_SYMBOL": "{{Optional}} math - The symbol for the binary operation addition.", + "MATH_SUBTRACTION_SYMBOL": "{{Optional}} math - The symbol for the binary operation indicating that the right operand should be subtracted from the left operand.", + "MATH_DIVISION_SYMBOL": "{{Optional}} math - The binary operation indicating that the left operand should be divided by the right operand.", + "MATH_MULTIPLICATION_SYMBOL": "{{Optional}} math - The symbol for the binary operation multiplication.", + "MATH_POWER_SYMBOL": "{{Optional}} math - The symbol for the binary operation exponentiation. Specifically, if the value of the left operand is L and the value of the right operand (the exponent) is R, multiply L by itself R times. (Fractional and negative exponents are also legal.)", + "MATH_TRIG_SIN": "math - The short name of the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine].", + "MATH_TRIG_COS": "math - The short name of the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine].", + "MATH_TRIG_TAN": "math - The short name of the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent].", + "MATH_TRIG_ASIN": "math - The short name of the ''inverse of'' the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine].", + "MATH_TRIG_ACOS": "math - The short name of the ''inverse of'' the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine].", + "MATH_TRIG_ATAN": "math - The short name of the ''inverse of'' the trigonometric function [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent].", + "MATH_ARITHMETIC_HELPURL": "{{Optional}} url - Information about addition, subtraction, multiplication, division, and exponentiation.", + "MATH_ARITHMETIC_TOOLTIP_ADD": "tooltip - See [https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition].", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "tooltip - See [https://en.wikipedia.org/wiki/Subtraction https://en.wikipedia.org/wiki/Subtraction].", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "tooltip - See [https://en.wikipedia.org/wiki/Multiplication https://en.wikipedia.org/wiki/Multiplication].", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "tooltip - See [https://en.wikipedia.org/wiki/Division_(mathematics) https://en.wikipedia.org/wiki/Division_(mathematics)].", + "MATH_ARITHMETIC_TOOLTIP_POWER": "tooltip - See [https://en.wikipedia.org/wiki/Exponentiation https://en.wikipedia.org/wiki/Exponentiation].", + "MATH_SINGLE_HELPURL": "{{Optional}} url - Information about the square root operation.", + "MATH_SINGLE_OP_ROOT": "dropdown - This computes the positive [https://en.wikipedia.org/wiki/Square_root square root] of its input. For example, the square root of 16 is 4.", + "MATH_SINGLE_TOOLTIP_ROOT": "tooltip - Please use the same term as in the previous message.", + "MATH_SINGLE_OP_ABSOLUTE": "dropdown - This leaves positive numeric inputs changed and inverts negative inputs. For example, the absolute value of 5 is 5; the absolute value of -5 is also 5. For more information, see [https://en.wikipedia.org/wiki/Absolute_value https://en.wikipedia.org/wiki/Absolute_value].", + "MATH_SINGLE_TOOLTIP_ABS": "tooltip - Please use the same term as in the previous message.", + "MATH_SINGLE_TOOLTIP_NEG": "tooltip - Calculates '''0-n''', where '''n''' is the single numeric input.", + "MATH_SINGLE_TOOLTIP_LN": "tooltip - Calculates the [https://en.wikipedia.org/wiki/Natural_logarithm|natural logarithm] of its single numeric input.", + "MATH_SINGLE_TOOLTIP_LOG10": "tooltip - Calculates the [https://en.wikipedia.org/wiki/Common_logarithm common logarithm] of its single numeric input.", + "MATH_SINGLE_TOOLTIP_EXP": "tooltip - Multiplies [https://en.wikipedia.org/wiki/E_(mathematical_constant) e] by itself n times, where n is the single numeric input.", + "MATH_SINGLE_TOOLTIP_POW10": "tooltip - Multiplies 10 by itself n times, where n is the single numeric input.", + "MATH_TRIG_HELPURL": "{{Optional}} url - Information about the trigonometric functions sine, cosine, tangent, and their inverses (ideally using degrees, not radians).", + "MATH_TRIG_TOOLTIP_SIN": "tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians.", + "MATH_TRIG_TOOLTIP_COS": "tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians.", + "MATH_TRIG_TOOLTIP_TAN": "tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians.", + "MATH_TRIG_TOOLTIP_ASIN": "tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent sine function], using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians.", + "MATH_TRIG_TOOLTIP_ACOS": "tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent cosine] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians.", + "MATH_TRIG_TOOLTIP_ATAN": "tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent tangent] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians.", + "MATH_CONSTANT_HELPURL": "{{Optional}} url - Information about the mathematical constants Pi (π), e, the golden ratio (φ), √ 2, √ 1/2, and infinity (∞).", + "MATH_CONSTANT_TOOLTIP": "tooltip - Provides the specified [https://en.wikipedia.org/wiki/Mathematical_constant mathematical constant].", + "MATH_IS_EVEN": "dropdown - A number is '''even''' if it is a multiple of 2. For example, 4 is even (yielding true), but 3 is not (false).", + "MATH_IS_ODD": "dropdown - A number is '''odd''' if it is not a multiple of 2. For example, 3 is odd (yielding true), but 4 is not (false). The opposite of 'odd' is 'even'.", + "MATH_IS_PRIME": "dropdown - A number is [https://en.wikipedia.org/wiki/Prime_number prime] if it cannot be evenly divided by any positive integers except for 1 and itself. For example, 5 is prime, but 6 is not because 2 × 3 = 6.", + "MATH_IS_WHOLE": "dropdown - A number is '''whole''' if it is an [https://en.wikipedia.org/wiki/Integer integer]. For example, 5 is whole, but 5.1 is not.", + "MATH_IS_POSITIVE": "dropdown - A number is '''positive''' if it is greater than 0. (0 is neither negative nor positive.)", + "MATH_IS_NEGATIVE": "dropdown - A number is '''negative''' if it is less than 0. (0 is neither negative nor positive.)", + "MATH_IS_DIVISIBLE_BY": "dropdown - A number x is divisible by y if y goes into x evenly. For example, 10 is divisible by 5, but 10 is not divisible by 3.", + "MATH_IS_TOOLTIP": "tooltip - This block lets the user specify via a dropdown menu whether to check if the numeric input is even, odd, prime, whole, positive, negative, or divisible by a given value.", + "MATH_CHANGE_HELPURL": "{{Optional}} url - Information about incrementing (increasing the value of) a variable. For other languages, just use the translation of the Wikipedia page about addition ([https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition]).", + "MATH_CHANGE_TITLE": "- As in: ''change'' [the value of variable] ''item'' ''by'' 1 (e.g., if the variable named 'item' had the value 5, change it to 6). %1 is a variable name. %2 is the amount of change.", + "MATH_CHANGE_TOOLTIP": "tooltip - This updates the value of the variable by adding to it the following numeric input.\n\nParameters:\n* %1 - the name of the variable whose value should be increased.", + "MATH_ROUND_HELPURL": "{{Optional}} url - Information about how numbers are rounded to the nearest integer", + "MATH_ROUND_TOOLTIP": "tooltip - See [https://en.wikipedia.org/wiki/Rounding https://en.wikipedia.org/wiki/Rounding].", + "MATH_ROUND_OPERATOR_ROUND": "dropdown - This rounds its input to the nearest whole number. For example, 3.4 is rounded to 3.", + "MATH_ROUND_OPERATOR_ROUNDUP": "dropdown - This rounds its input up to the nearest whole number. For example, if the input was 2.2, the result would be 3.", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "dropdown - This rounds its input down to the nearest whole number. For example, if the input was 3.8, the result would be 3.", + "MATH_ONLIST_HELPURL": "{{Optional}} url - Information about applying a function to a list of numbers. (We were unable to find such information in English. Feel free to skip this and any other URLs that are difficult.)", + "MATH_ONLIST_OPERATOR_SUM": "dropdown - This computes the sum of the numeric elements in the list. For example, the sum of the list {1, 4} is 5.", + "MATH_ONLIST_TOOLTIP_SUM": "tooltip - Please use the same term for 'sum' as in the previous message.", + "MATH_ONLIST_OPERATOR_MIN": "dropdown - This finds the smallest (minimum) number in a list. For example, the smallest number in the list [-5, 0, 3] is -5.", + "MATH_ONLIST_TOOLTIP_MIN": "tooltip - Please use the same term for 'min' or 'minimum' as in the previous message.", + "MATH_ONLIST_OPERATOR_MAX": "dropdown - This finds the largest (maximum) number in a list. For example, the largest number in the list [-5, 0, 3] is 3.", + "MATH_ONLIST_TOOLTIP_MAX": "tooltip", + "MATH_ONLIST_OPERATOR_AVERAGE": "dropdown - This adds up all of the numbers in a list and divides the sum by the number of elements in the list. For example, the [https://en.wikipedia.org/wiki/Arithmetic_mean average] of the list [1, 2, 3, 4] is 2.5 (10/4).", + "MATH_ONLIST_TOOLTIP_AVERAGE": "tooltip - See [https://en.wikipedia.org/wiki/Arithmetic_mean https://en.wikipedia.org/wiki/Arithmetic_mean] for more informatin.", + "MATH_ONLIST_OPERATOR_MEDIAN": "dropdown - This finds the [https://en.wikipedia.org/wiki/Median median] of the numeric values in a list. For example, the median of the list {1, 2, 7, 12, 13} is 7.", + "MATH_ONLIST_TOOLTIP_MEDIAN": "tooltip - See [https://en.wikipedia.org/wiki/Median median https://en.wikipedia.org/wiki/Median median] for more information.", + "MATH_ONLIST_OPERATOR_MODE": "dropdown - This finds the most common numbers ([https://en.wikipedia.org/wiki/Mode_(statistics) modes]) in a list. For example, the modes of the list {1, 3, 9, 3, 9} are {3, 9}.", + "MATH_ONLIST_TOOLTIP_MODE": "tooltip - See [https://en.wikipedia.org/wiki/Mode_(statistics) https://en.wikipedia.org/wiki/Mode_(statistics)] for more information.", + "MATH_ONLIST_OPERATOR_STD_DEV": "dropdown - This finds the [https://en.wikipedia.org/wiki/Standard_deviation standard deviation] of the numeric values in a list.", + "MATH_ONLIST_TOOLTIP_STD_DEV": "tooltip - See [https://en.wikipedia.org/wiki/Standard_deviation https://en.wikipedia.org/wiki/Standard_deviation] for more information.", + "MATH_ONLIST_OPERATOR_RANDOM": "dropdown - This choose an element at random from a list. Each element is chosen with equal probability.", + "MATH_ONLIST_TOOLTIP_RANDOM": "tooltip - Please use same term for 'random' as in previous entry.", + "MATH_MODULO_HELPURL": "{{Optional}} url - information about the modulo (remainder) operation.", + "MATH_MODULO_TITLE": "block text - Title of block providing the remainder when dividing the first numerical input by the second. For example, the remainder of 10 divided by 3 is 1.\n\nParameters:\n* %1 - the dividend (10, in our example)\n* %2 - the divisor (3 in our example).", + "MATH_MODULO_TOOLTIP": "tooltip - For example, the remainder of 10 divided by 3 is 1.", + "MATH_CONSTRAIN_HELPURL": "{{Optional}} url - Information about constraining a numeric value to be in a specific range. (The English URL is not ideal. Recall that translating URLs is the lowest priority.)", + "MATH_CONSTRAIN_TITLE": "block text - The title of the block that '''constrain'''s (forces) a number to be in a given range. For example, if the number 150 is constrained to be between 5 and 100, the result will be 100. \n\nParameters:\n* %1 - the value to constrain (e.g., 150)\n* %2 - the minimum value (e.g., 5)\n* %3 - the maximum value (e.g., 100).", + "MATH_CONSTRAIN_TOOLTIP": "tooltip - This compares a number ''x'' to a low value ''L'' and a high value ''H''. If ''x'' is less then ''L'', the result is ''L''. If ''x'' is greater than ''H'', the result is ''H''. Otherwise, the result is ''x''.", + "MATH_RANDOM_INT_HELPURL": "{{Optional}} url - Information about how computers generate random numbers.", + "MATH_RANDOM_INT_TITLE": "block text - The title of the block that generates a random integer (whole number) in the specified range. For example, if the range is from 5 to 7, this returns 5, 6, or 7 with equal likelihood. %1 is a placeholder for the lower number, %2 is the placeholder for the larger number.", + "MATH_RANDOM_INT_TOOLTIP": "tooltip - Return a random integer between two values specified as inputs. For example, if one input was 7 and another 9, any of the numbers 7, 8, or 9 could be produced.", + "MATH_RANDOM_FLOAT_HELPURL": "{{Optional}} url - Information about how computers generate random numbers (specifically, numbers in the range from 0 to just below 1).", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "block text - The title of the block that generates a random number greater than or equal to 0 and less than 1.", + "MATH_RANDOM_FLOAT_TOOLTIP": "tooltip - Return a random fraction between 0 and 1. The value may be equal to 0 but must be less than 1.", + "MATH_ATAN2_HELPURL": "{{Optional}} url - Information about how to calculate atan2.", + "MATH_ATAN2_TITLE": "block text - The title of the block that calculates atan2 of point (X, Y). For example, if the point is (-1, -1), this returns -135. %1 is a placeholder for the X coordinate, %2 is the placeholder for the Y coordinate.", + "MATH_ATAN2_TOOLTIP": "tooltip - Return the arctangent of point (X, Y) in degrees from -180 to 180. For example, if the point is (-1, -1) this returns -135.", + "TEXT_TEXT_HELPURL": "{{Optional}} url - Information about how computers represent text (sometimes referred to as ''string''s).", + "TEXT_TEXT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text https://github.com/google/blockly/wiki/Text].", + "TEXT_JOIN_HELPURL": "{{Optional}} url - Information on concatenating/appending pieces of text.", + "TEXT_JOIN_TITLE_CREATEWITH": "block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation].", + "TEXT_JOIN_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation create text with] for more information.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "block text - This is shown when the programmer wants to change the number of pieces of text being joined together. See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section.\n{{Identical|Join}}", + "TEXT_CREATE_JOIN_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section.", + "TEXT_APPEND_HELPURL": "{{Optional}} url - This and the other text-related URLs are going to be hard to translate. As always, it is okay to leave untranslated or paste in the English-language URL. For these URLs, you might also consider a general URL about how computers represent text (such as the translation of [https://en.wikipedia.org/wiki/String_(computer_science) this Wikipedia page]).", + "TEXT_APPEND_TITLE": "block input text - Message that the variable name at %1 will have the item at %2 appended to it. [[File:blockly-append-text.png]]", + "TEXT_APPEND_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#text-modification https://github.com/google/blockly/wiki/Text#text-modification] for more information.\n\nParameters:\n* %1 - the name of the variable to which text should be appended", + "TEXT_LENGTH_HELPURL": "{{Optional}} url - Information about text on computers (usually referred to as 'strings').", + "TEXT_LENGTH_TITLE": "block text - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length]. \n\nParameters:\n* %1 - the piece of text to take the length of", + "TEXT_LENGTH_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length].", + "TEXT_ISEMPTY_HELPURL": "{{Optional}} url - Information about empty pieces of text on computers (usually referred to as 'empty strings').", + "TEXT_ISEMPTY_TITLE": "block text - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text]. \n\nParameters:\n* %1 - the piece of text to test for emptiness", + "TEXT_ISEMPTY_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text].", + "TEXT_INDEXOF_HELPURL": "{{Optional}} url - Information about finding a character in a piece of text.", + "TEXT_INDEXOF_TOOLTIP": "tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode. See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text].", + "TEXT_INDEXOF_TITLE": "block text - Title of blocks allowing users to find text. See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text]. [[File:Blockly-find-text.png]]. In English the expanded message is 'in text %1 find (first|last) occurance of text %3' where %1 and %3 are added by the user. See TEXT_INDEXOF_OPERATOR_FIRST and TEXT_INDEXOF_OPERATOR_LAST for the dropdown text that replaces %2.", + "TEXT_INDEXOF_OPERATOR_FIRST": "dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text]. [[File:Blockly-find-text.png]].", + "TEXT_INDEXOF_OPERATOR_LAST": "dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text]. This would replace 'find first occurrence of text' below. (For more information on how common text is factored out of dropdown menus, see [https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus)].) [[File:Blockly-find-text.png]].", + "TEXT_CHARAT_HELPURL": "{{Optional}} url - Information about extracting characters (letters, number, symbols, etc.) from text.", + "TEXT_CHARAT_TITLE": "block text - Text for a block to extract a letter (or number, punctuation character, etc.) from a string, as shown below. %1 is added by the user and %2 is replaced by a dropdown of options, possibly followed by another user supplied string. TEXT_CHARAT_TAIL is then added to the end. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", + "TEXT_CHARAT_FROM_START": "dropdown - Indicates that the letter (or number, punctuation character, etc.) with the specified index should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", + "TEXT_CHARAT_FROM_END": "block text - Indicates that the letter (or number, punctuation character, etc.) with the specified index from the end of a given piece of text should be obtained. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", + "TEXT_CHARAT_FIRST": "block text - Indicates that the first letter of the following piece of text should be retrieved. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", + "TEXT_CHARAT_LAST": "block text - Indicates that the last letter (or number, punctuation mark, etc.) of the following piece of text should be retrieved. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", + "TEXT_CHARAT_RANDOM": "block text - Indicates that any letter (or number, punctuation mark, etc.) in the following piece of text should be randomly selected. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", + "TEXT_CHARAT_TAIL": "block text - Text that goes after the rightmost block/dropdown when getting a single letter from a piece of text, as in [https://blockly-demo.appspot.com/static/apps/code/index.html#3m23km these blocks] or shown below. For most languages, this will be blank. [[File:Blockly-text-get.png]]", + "TEXT_CHARAT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. [[File:Blockly-text-get.png]]", + "TEXT_GET_SUBSTRING_TOOLTIP": "See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text].", + "TEXT_GET_SUBSTRING_HELPURL": "{{Optional}} url - Information about extracting characters from text. Reminder: urls are the lowest priority translations. Feel free to skip.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "block text - Precedes a piece of text from which a portion should be extracted. [[File:Blockly-get-substring.png]]", + "TEXT_GET_SUBSTRING_START_FROM_START": "dropdown - Indicates that the following number specifies the position (relative to the start position) of the beginning of the region of text that should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", + "TEXT_GET_SUBSTRING_START_FROM_END": "dropdown - Indicates that the following number specifies the position (relative to the end position) of the beginning of the region of text that should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will automatically appear ''after'' this and any other [https://translatewiki.net/wiki/Translating:Blockly#Ordinal_numbers ordinal numbers] on this block. [[File:Blockly-get-substring.png]]", + "TEXT_GET_SUBSTRING_START_FIRST": "block text - Indicates that a region starting with the first letter of the preceding piece of text should be extracted. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", + "TEXT_GET_SUBSTRING_END_FROM_START": "dropdown - Indicates that the following number specifies the position (relative to the start position) of the end of the region of text that should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", + "TEXT_GET_SUBSTRING_END_FROM_END": "dropdown - Indicates that the following number specifies the position (relative to the end position) of the end of the region of text that should be obtained from the preceding piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", + "TEXT_GET_SUBSTRING_END_LAST": "block text - Indicates that a region ending with the last letter of the preceding piece of text should be extracted. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. [[File:Blockly-get-substring.png]]", + "TEXT_GET_SUBSTRING_TAIL": "block text - Text that should go after the rightmost block/dropdown when [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text extracting a region of text]. In most languages, this will be the empty string. [[File:Blockly-get-substring.png]]", + "TEXT_CHANGECASE_HELPURL": "{{Optional}} url - Information about the case of letters (upper-case and lower-case).", + "TEXT_CHANGECASE_TOOLTIP": "tooltip - Describes a block to adjust the case of letters. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "block text - Indicates that all of the letters in the following piece of text should be capitalized. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "block text - Indicates that all of the letters in the following piece of text should be converted to lower-case. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "block text - Indicates that the first letter of each of the following words should be capitalized and the rest converted to lower-case. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].", + "TEXT_TRIM_HELPURL": "{{Optional}} url - Information about trimming (removing) text off the beginning and ends of pieces of text.", + "TEXT_TRIM_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces https://github.com/google/blockly/wiki/Text#trimming-removing-spaces].", + "TEXT_TRIM_OPERATOR_BOTH": "dropdown - Removes spaces from the beginning and end of a piece of text. See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. Note that neither this nor the other options modify the original piece of text (that follows); the block just returns a version of the text without the specified spaces.", + "TEXT_TRIM_OPERATOR_LEFT": "dropdown - Removes spaces from the beginning of a piece of text. See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. Note that in right-to-left scripts, this will remove spaces from the right side.", + "TEXT_TRIM_OPERATOR_RIGHT": "dropdown - Removes spaces from the end of a piece of text. See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. Note that in right-to-left scripts, this will remove spaces from the left side.", + "TEXT_PRINT_HELPURL": "{{Optional}} url - Information about displaying text on computers.", + "TEXT_PRINT_TITLE": "block text - Display the input on the screen. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text]. \n\nParameters:\n* %1 - the value to print", + "TEXT_PRINT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", + "TEXT_PROMPT_HELPURL": "{{Optional}} url - Information about getting text from users.", + "TEXT_PROMPT_TYPE_TEXT": "dropdown - Specifies that a piece of text should be requested from the user with the following message. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", + "TEXT_PROMPT_TYPE_NUMBER": "dropdown - Specifies that a number should be requested from the user with the following message. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", + "TEXT_PROMPT_TOOLTIP_NUMBER": "dropdown - Precedes the message with which the user should be prompted for a number. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", + "TEXT_PROMPT_TOOLTIP_TEXT": "dropdown - Precedes the message with which the user should be prompted for some text. See [https://github.com/google/blockly/wiki/Text#printing-text https://github.com/google/blockly/wiki/Text#printing-text].", + "TEXT_COUNT_MESSAGE0": "block text - Title of a block that counts the number of instances of a smaller pattern (%1) inside a longer string (%2).", + "TEXT_COUNT_HELPURL": "{{Optional}} url - Information about counting how many times a string appears in another string.", + "TEXT_COUNT_TOOLTIP": "tooltip - Short description of a block that counts how many times some text occurs within some other text.", + "TEXT_REPLACE_MESSAGE0": "block text - Title of a block that returns a copy of text (%3) with all instances of some smaller text (%1) replaced with other text (%2).", + "TEXT_REPLACE_HELPURL": "{{Optional}} url - Information about replacing each copy text (or string, in computer lingo) with other text.", + "TEXT_REPLACE_TOOLTIP": "tooltip - Short description of a block that replaces copies of text in a large text with other text.", + "TEXT_REVERSE_MESSAGE0": "block text - Title of block that returns a copy of text (%1) with the order of letters and characters reversed.", + "TEXT_REVERSE_HELPURL": "{{Optional}} url - Information about reversing a letters/characters in text.", + "TEXT_REVERSE_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Text].", + "LISTS_CREATE_EMPTY_HELPURL": "{{Optional}} url - Information on empty lists.", + "LISTS_CREATE_EMPTY_TITLE": "block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list].", + "LISTS_CREATE_EMPTY_TOOLTIP": "block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list].", + "LISTS_CREATE_WITH_HELPURL": "{{Optional}} url - Information on building lists.", + "LISTS_CREATE_WITH_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with].", + "LISTS_CREATE_WITH_INPUT_WITH": "block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with].", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "block text - This appears in a sub-block when [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs changing the number of inputs in a ''''create list with'''' block].\n{{Identical|List}}", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs].", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs].", + "LISTS_REPEAT_HELPURL": "{{Optional}} url - Information about [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item].", + "LISTS_REPEAT_TOOLTIP": "{{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item].", + "LISTS_REPEAT_TITLE": "block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with]. \n\nParameters:\n* %1 - the item (text) to be repeated\n* %2 - the number of times to repeat it", + "LISTS_LENGTH_HELPURL": "{{Optional}} url - Information about how the length of a list is computed (i.e., by the total number of elements, not the number of different elements).", + "LISTS_LENGTH_TITLE": "block text - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of]. \n\nParameters:\n* %1 - the list whose length is desired", + "LISTS_LENGTH_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of Blockly:Lists:length of].", + "LISTS_ISEMPTY_HELPURL": "{{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#is-empty https://github.com/google/blockly/wiki/Lists#is-empty].", + "LISTS_ISEMPTY_TITLE": "block text - See [https://github.com/google/blockly/wiki/Lists#is-empty https://github.com/google/blockly/wiki/Lists#is-empty]. \n\nParameters:\n* %1 - the list to test", + "LISTS_ISEMPTY_TOOLTIP": "block tooltip - See [https://github.com/google/blockly/wiki/Lists#is-empty https://github.com/google/blockly/wiki/Lists#is-empty].", + "LISTS_INLIST": "block text - Title of blocks operating on [https://github.com/google/blockly/wiki/Lists lists].", + "LISTS_INDEX_OF_HELPURL": "{{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list].", + "LISTS_INDEX_OF_FIRST": "dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list Lists#finding-items-in-a-list]. [[File:Blockly-list-find.png]]", + "LISTS_INDEX_OF_LAST": "dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list]. [[File:Blockly-list-find.png]]", + "LISTS_INDEX_OF_TOOLTIP": "tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode. See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list]. [[File:Blockly-list-find.png]]", + "LISTS_GET_INDEX_GET": "dropdown - Indicates that the user wishes to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item get an item from a list] without removing it from the list.", + "LISTS_GET_INDEX_GET_REMOVE": "dropdown - Indicates that the user wishes to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item get and remove an item from a list], as opposed to merely getting it without modifying the list.", + "LISTS_GET_INDEX_REMOVE": "dropdown - Indicates that the user wishes to [https://github.com/google/blockly/wiki/Lists#removing-an-item remove an item from a list].\n{{Identical|Remove}}", + "LISTS_GET_INDEX_FROM_START": "dropdown - Indicates that an index relative to the front of the list should be used to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item get and/or remove an item from a list]. Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will automatically appear ''after'' this number (and any other ordinal numbers on this block). See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly. [[File:Blockly-list-get-item.png]]", + "LISTS_GET_INDEX_FROM_END": "dropdown - Indicates that an index relative to the end of the list should be used to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item access an item in a list]. [[File:Blockly-list-get-item.png]]", + "LISTS_GET_INDEX_FIRST": "dropdown - Indicates that the '''first''' item should be [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. [[File:Blockly-list-get-item.png]]", + "LISTS_GET_INDEX_LAST": "dropdown - Indicates that the '''last''' item should be [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. [[File:Blockly-list-get-item.png]]", + "LISTS_GET_INDEX_RANDOM": "dropdown - Indicates that a '''random''' item should be [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. [[File:Blockly-list-get-item.png]]", + "LISTS_GET_INDEX_TAIL": "block text - Text that should go after the rightmost block/dropdown when [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessing an item from a list]. In most languages, this will be the empty string. [[File:Blockly-list-get-item.png]]", + "LISTS_INDEX_FROM_START_TOOLTIP": "tooltip - Indicates the ordinal number that the first item in a list is referenced by. %1 will be replaced by either '#0' or '#1' depending on the indexing mode.", + "LISTS_INDEX_FROM_END_TOOLTIP": "tooltip - Indicates the ordinal number that the last item in a list is referenced by. %1 will be replaced by either '#0' or '#1' depending on the indexing mode.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for '#' or '# from end'.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'first'.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'last'.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'random'.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for '#' or '# from end'.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'first'.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'last'.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'random'.", + "LISTS_SET_INDEX_HELPURL": "{{Optional}} url - Information about putting items in lists.", + "LISTS_SET_INDEX_SET": "block text - [https://github.com/google/blockly/wiki/Lists#in-list--set Replaces an item in a list]. [[File:Blockly-in-list-set-insert.png]]", + "LISTS_SET_INDEX_INSERT": "block text - [https://github.com/google/blockly/wiki/Lists#in-list--insert-at Inserts an item into a list]. [[File:Blockly-in-list-set-insert.png]]", + "LISTS_SET_INDEX_INPUT_TO": "block text - The word(s) after the position in the list and before the item to be set/inserted. [[File:Blockly-in-list-set-insert.png]]", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'set' block).", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'set' block).", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'set' block).", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'set' block).", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'insert' block).", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'insert' block).", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'insert' block).", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the 'get' block, the idea is the same for the 'insert' block).", + "LISTS_GET_SUBLIST_HELPURL": "{{Optional}} url - Information describing extracting a sublist from an existing list.", + "LISTS_GET_SUBLIST_START_FROM_START": "dropdown - Indicates that an index relative to the front of the list should be used to specify the beginning of the range from which to [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. [[File:Blockly-get-sublist.png]] Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will automatically appear ''after'' this number (and any other ordinal numbers on this block). See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly.", + "LISTS_GET_SUBLIST_START_FROM_END": "dropdown - Indicates that an index relative to the end of the list should be used to specify the beginning of the range from which to [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist].", + "LISTS_GET_SUBLIST_START_FIRST": "dropdown - Indicates that the [https://github.com/google/blockly/wiki/Lists#getting-a-sublist sublist to extract] should begin with the list's first item.", + "LISTS_GET_SUBLIST_END_FROM_START": "dropdown - Indicates that an index relative to the front of the list should be used to specify the end of the range from which to [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. [[File:Blockly-get-sublist.png]]", + "LISTS_GET_SUBLIST_END_FROM_END": "dropdown - Indicates that an index relative to the end of the list should be used to specify the end of the range from which to [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. [[File:Blockly-get-sublist.png]]", + "LISTS_GET_SUBLIST_END_LAST": "dropdown - Indicates that the '''last''' item in the given list should be [https://github.com/google/blockly/wiki/Lists#getting-a-sublist the end of the selected sublist]. [[File:Blockly-get-sublist.png]]", + "LISTS_GET_SUBLIST_TAIL": "block text - This appears in the rightmost position ('tail') of the sublist block, as described at [https://github.com/google/blockly/wiki/Lists#getting-a-sublist https://github.com/google/blockly/wiki/Lists#getting-a-sublist]. In English and most other languages, this is the empty string. [[File:Blockly-get-sublist.png]]", + "LISTS_GET_SUBLIST_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-sublist https://github.com/google/blockly/wiki/Lists#getting-a-sublist] for more information. [[File:Blockly-get-sublist.png]]", + "LISTS_SORT_HELPURL": "{{Optional}} url - Information describing sorting a list.", + "LISTS_SORT_TITLE": "Sort as type %1 (numeric or alphabetic) in order %2 (ascending or descending) a list of items %3.\n{{Identical|Sort}}", + "LISTS_SORT_TOOLTIP": "tooltip - See [https://github.com/google/blockly/wiki/Lists#sorting-a-list].", + "LISTS_SORT_ORDER_ASCENDING": "sorting order or direction from low to high value for numeric, or A-Z for alphabetic.\n{{Identical|Ascending}}", + "LISTS_SORT_ORDER_DESCENDING": "sorting order or direction from high to low value for numeric, or Z-A for alphabetic.\n{{Identical|Descending}}", + "LISTS_SORT_TYPE_NUMERIC": "sort by treating each item as a number.", + "LISTS_SORT_TYPE_TEXT": "sort by treating each item alphabetically, case-sensitive.", + "LISTS_SORT_TYPE_IGNORECASE": "sort by treating each item alphabetically, ignoring differences in case.", + "LISTS_SPLIT_HELPURL": "{{Optional}} url - Information describing splitting text into a list, or joining a list into text.", + "LISTS_SPLIT_LIST_FROM_TEXT": "dropdown - Indicates that text will be split up into a list (e.g. 'a-b-c' -> ['a', 'b', 'c']).", + "LISTS_SPLIT_TEXT_FROM_LIST": "dropdown - Indicates that a list will be joined together to form text (e.g. ['a', 'b', 'c'] -> 'a-b-c').", + "LISTS_SPLIT_WITH_DELIMITER": "block text - Prompts for a letter to be used as a separator when splitting or joining text.", + "LISTS_SPLIT_TOOLTIP_SPLIT": "tooltip - See [https://github.com/google/blockly/wiki/Lists#make-list-from-text https://github.com/google/blockly/wiki/Lists#make-list-from-text] for more information.", + "LISTS_SPLIT_TOOLTIP_JOIN": "tooltip - See [https://github.com/google/blockly/wiki/Lists#make-text-from-list https://github.com/google/blockly/wiki/Lists#make-text-from-list] for more information.", + "LISTS_REVERSE_HELPURL": "{{Optional}} url - Information describing reversing a list.", + "LISTS_REVERSE_MESSAGE0": "block text - Title of block that returns a copy of a list (%1) with the order of items reversed.", + "LISTS_REVERSE_TOOLTIP": "tooltip - Short description for a block that reverses a copy of a list.", + "ORDINAL_NUMBER_SUFFIX": "grammar - Text that follows an ordinal number (a number that indicates position relative to other numbers). In most languages, such text appears before the number, so this should be blank. An exception is Hungarian. See [[Translating:Blockly#Ordinal_numbers]] for more information.", + "VARIABLES_GET_HELPURL": "{{Optional}} url - Information about ''variables'' in computer programming. Consider using your language's translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists.", + "VARIABLES_GET_TOOLTIP": "tooltip - This gets the value of the named variable without modifying it.", + "VARIABLES_GET_CREATE_SET": "context menu - Selecting this creates a block to set (change) the value of this variable. \n\nParameters:\n* %1 - the name of the variable.", + "VARIABLES_SET_HELPURL": "{{Optional}} url - Information about ''variables'' in computer programming. Consider using your language's translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists.", + "VARIABLES_SET": "block text - Change the value of a mathematical variable: '''set [the value of] x to 7'''.\n\nParameters:\n* %1 - the name of the variable.\n* %2 - the value to be assigned.", + "VARIABLES_SET_TOOLTIP": "tooltip - This initializes or changes the value of the named variable.", + "VARIABLES_SET_CREATE_GET": "context menu - Selecting this creates a block to get (change) the value of this variable.\n\nParameters:\n* %1 - the name of the variable.", + "PROCEDURES_DEFNORETURN_HELPURL": "{{Optional}} url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that do not have return values.", + "PROCEDURES_DEFNORETURN_TITLE": "block text - This precedes the name of the function when defining it. See [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#c84aoc this sample function definition].", + "PROCEDURES_DEFNORETURN_PROCEDURE": "default name - This acts as a placeholder for the name of a function on a function definition block, as shown on [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#w7cfju this block]. The user will replace it with the function's name.", + "PROCEDURES_BEFORE_PARAMS": "block text - This precedes the list of parameters on a function's definition block. See [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample function with parameters].", + "PROCEDURES_CALL_BEFORE_PARAMS": "block text - This precedes the list of parameters on a function's caller block. See [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample function with parameters].", + "PROCEDURES_DEFNORETURN_DO": "block text - This appears next to the function's 'body', the blocks that should be run when the function is called, as shown in [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample function definition].", + "PROCEDURES_DEFNORETURN_TOOLTIP": "tooltip", + "PROCEDURES_DEFNORETURN_COMMENT": "Placeholder text that the user is encouraged to replace with a description of what their function does.", + "PROCEDURES_DEFRETURN_HELPURL": "{{Optional}} url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that have return values.", + "PROCEDURES_DEFRETURN_RETURN": "block text - This imperative or infinite verb precedes the value that is used as the return value (output) of this function. See [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#6ot5y5 this sample function that returns a value].", + "PROCEDURES_DEFRETURN_TOOLTIP": "tooltip", + "PROCEDURES_ALLOW_STATEMENTS": "Label for a checkbox that controls if statements are allowed in a function.", + "PROCEDURES_DEF_DUPLICATE_WARNING": "alert - The user has created a function with two parameters that have the same name. Every parameter must have a different name.", + "PROCEDURES_CALLNORETURN_HELPURL": "{{Optional}} url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that do not return values.", + "PROCEDURES_CALLNORETURN_TOOLTIP": "tooltip - This block causes the body (blocks inside) of the named function definition to be run.", + "PROCEDURES_CALLRETURN_HELPURL": "{{Optional}} url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that return values.", + "PROCEDURES_CALLRETURN_TOOLTIP": "tooltip - This block causes the body (blocks inside) of the named function definition to be run.\n\nParameters:\n* %1 - the name of the function.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "block text - This text appears on a block in a window that appears when the user clicks on the plus sign or star on a function definition block. It refers to the set of parameters (referred to by the simpler term 'inputs') to the function. See [[Translating:Blockly#function_definitions]].\n{{Identical|Input}}", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "tooltip", + "PROCEDURES_MUTATORARG_TITLE": "block text - This text appears on a block in a window that appears when the user clicks on the plus sign or star on a function definition block]. It appears on the block for adding an individual parameter (referred to by the simpler term 'inputs') to the function. See [[Translating:Blockly#function_definitions]].", + "PROCEDURES_MUTATORARG_TOOLTIP": "tooltip", + "PROCEDURES_HIGHLIGHT_DEF": "context menu - This appears on the context menu for function calls. Selecting it causes the corresponding function definition to be highlighted (as shown at [[Translating:Blockly#context_menus]].", + "PROCEDURES_CREATE_DO": "context menu - This appears on the context menu for function definitions. Selecting it creates a block to call the function.\n\nParameters:\n* %1 - the name of the function.\n{{Identical|Create}}", + "PROCEDURES_IFRETURN_TOOLTIP": "tooltip - If the first value is true, this causes the second value to be returned immediately from the enclosing function.", + "PROCEDURES_IFRETURN_HELPURL": "{{Optional}} url - Information about guard clauses.", + "PROCEDURES_IFRETURN_WARNING": "warning - This appears if the user tries to use this block outside of a function definition.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "comment text - This text appears in a new workspace comment, to hint that the user can type here.", + "WORKSPACE_ARIA_LABEL": "workspace - This text is read out when a user navigates to the workspace while using a screen reader.", + "COLLAPSED_WARNINGS_WARNING": "warning - This appears if the user collapses a block, and blocks inside that block have warnings attached to them. It should inform the user that the block they collapsed contains blocks that have warnings.", + "DIALOG_OK": "button label - Pressing this button closes help information.\n{{Identical|OK}}", + "DIALOG_CANCEL": "button label - Pressing this button cancels a proposed action.\n{{Identical|Cancel}}" +} diff --git a/msg/json/ro.json b/msg/json/ro.json index 51c9d612d83..fa7a58fe59d 100644 --- a/msg/json/ro.json +++ b/msg/json/ro.json @@ -1,358 +1,358 @@ -{ - "@metadata": { - "authors": [ - "Andreyyshore", - "Ely en", - "Hugbear", - "MSClaudiu", - "Minisarm", - "Wintereu", - "Ykhwong", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "element", - "TODAY": "Astăzi", - "DUPLICATE_BLOCK": "Duplicate", - "ADD_COMMENT": "Adaugă un comentariu", - "REMOVE_COMMENT": "Elimină comentariu", - "DUPLICATE_COMMENT": "Coment duplicat", - "EXTERNAL_INPUTS": "Intrări externe", - "INLINE_INPUTS": "Intrări în linie", - "DELETE_BLOCK": "Șterge Bloc", - "DELETE_X_BLOCKS": "Ștergeți %1 Blocuri", - "DELETE_ALL_BLOCKS": "Ștergi toate cele %1 (de) blocuri?", - "CLEAN_UP": "Curăță blocări", - "COLLAPSE_BLOCK": "Restrange blocul", - "COLLAPSE_ALL": "Restrange blocurile", - "EXPAND_BLOCK": "Extinde bloc", - "EXPAND_ALL": "Extinde blocuri", - "DISABLE_BLOCK": "Dezactivați bloc", - "ENABLE_BLOCK": "Permite bloc", - "HELP": "Ajutor", - "UNDO": "Anulează", - "REDO": "Refă", - "CHANGE_VALUE_TITLE": "Schimbați valoarea:", - "RENAME_VARIABLE": "Redenumirea variabilei...", - "RENAME_VARIABLE_TITLE": "Redenumește toate variabilele „%1” în:", - "NEW_VARIABLE": "Crează variabilă", - "NEW_STRING_VARIABLE": "Crează o variabilă string", - "NEW_NUMBER_VARIABLE": "Crează o variabilă număr", - "NEW_COLOUR_VARIABLE": "Crează o variabilă culoare", - "NEW_VARIABLE_TYPE_TITLE": "Tip nou de variabilă", - "NEW_VARIABLE_TITLE": "Noul nume de variabilă:", - "VARIABLE_ALREADY_EXISTS": "O variabilă cu numele '%1' există deja.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "o variabilă numită '%1' există deja pentru alt tip: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Șterge %1 utilizările variabilei '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nu se poate șterge variabila '%1' deoarece face parte din definiția funcției '%2'", - "DELETE_VARIABLE": "Ștergeți variabila '%1'", - "COLOUR_PICKER_HELPURL": "https://ro.wikipedia.org/wiki/Culoare", - "COLOUR_PICKER_TOOLTIP": "Alege o culoare din paleta de culori.", - "COLOUR_RANDOM_TITLE": "culoare aleatorie", - "COLOUR_RANDOM_TOOLTIP": "Alege o culoare la întâmplare.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "colorează cu", - "COLOUR_RGB_RED": "roșu", - "COLOUR_RGB_GREEN": "verde", - "COLOUR_RGB_BLUE": "albastru", - "COLOUR_RGB_TOOLTIP": "Creează o culoare cu suma specificată de roșu, verde și albastru. Toate valorile trebuie să fie între 0 și 100.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "amestec", - "COLOUR_BLEND_COLOUR1": "culoare 1", - "COLOUR_BLEND_COLOUR2": "culoare 2", - "COLOUR_BLEND_RATIO": "Raport", - "COLOUR_BLEND_TOOLTIP": "Amestecă două culori cu un raport dat (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "repetă de %1 ori", - "CONTROLS_REPEAT_INPUT_DO": "fă", - "CONTROLS_REPEAT_TOOLTIP": "Face unele afirmații de mai multe ori.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetă în timp ce", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "Repetați până când", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Atâta timp cât o valoare este adevărat, atunci face unele declarații.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Atâta timp cât o valoare este adevărat, atunci face unele declarații.", - "CONTROLS_FOR_TOOLTIP": "Cu variablia \"%1\" ia o valoare din numărul început la numărul final, numara in intervalul specificat, apoi face blocurile specificate.", - "CONTROLS_FOR_TITLE": "numără cu %1 de la %2 la %3 prin %4", - "CONTROLS_FOREACH_TITLE": "pentru fiecare element %1 în listă %2", - "CONTROLS_FOREACH_TOOLTIP": "Pentru fiecare element din listă, setați variabila „%1” ca valoarea elementului, și apoi faceți unele declarații.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ieși din buclă", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuă cu următoarea iterație a buclei", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ieși din buclă.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sari peste restul acestei bucle și continuă cu următoarea iterație.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Avertisment: Acest bloc pote fi utilizat numai în interiorul unei bucle.", - "CONTROLS_IF_TOOLTIP_1": "Dacă o valoare este adevărată, atunci fă unele declarații.", - "CONTROLS_IF_TOOLTIP_2": "Dacă o valoare este adevărat, atunci face primul bloc de declarații. Altfel, face al doilea bloc de declarații.", - "CONTROLS_IF_TOOLTIP_3": "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații.", - "CONTROLS_IF_TOOLTIP_4": "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații. În cazul în care niciuna din valori nu este adevărat, face ultimul bloc de declarații.", - "CONTROLS_IF_MSG_IF": "dacă", - "CONTROLS_IF_MSG_ELSEIF": "altfel dacă", - "CONTROLS_IF_MSG_ELSE": "altfel", - "CONTROLS_IF_IF_TOOLTIP": "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc if.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Adăugați o condiție în blocul if.", - "CONTROLS_IF_ELSE_TOOLTIP": "Adauga o stare finala, cuprinde toata conditia din blocul if.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Returnează adevărat dacă ambele intrări sunt egale.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Returnează adevărat daca cele două intrări nu sunt egale.", - "LOGIC_COMPARE_TOOLTIP_LT": "Returnează adevărat dacă prima intrare este mai mică decât a doua intrare.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Returnează adevărat dacă prima intrare este mai mică sau egală cu a doua intrare.", - "LOGIC_COMPARE_TOOLTIP_GT": "Returnează adevărat dacă prima intrare este mai mare decât a doua intrare.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Returnează adevărat dacă prima intrare este mai mare sau egală cu a doua intrare.", - "LOGIC_OPERATION_TOOLTIP_AND": "Returnează adevărat daca ambele intrări sunt adevărate.", - "LOGIC_OPERATION_AND": "și", - "LOGIC_OPERATION_TOOLTIP_OR": "Returnează adevărat dacă cel puțin una din intrări este adevărată.", - "LOGIC_OPERATION_OR": "sau", - "LOGIC_NEGATE_TITLE": "non %1", - "LOGIC_NEGATE_TOOLTIP": "Returnează adevărat dacă intrarea este falsă. Returnează fals dacă intrarea este adevărată.", - "LOGIC_BOOLEAN_TRUE": "adevărat", - "LOGIC_BOOLEAN_FALSE": "fals", - "LOGIC_BOOLEAN_TOOLTIP": "Returnează adevărat sau fals.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "nul", - "LOGIC_NULL_TOOLTIP": "returnează nul.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "dacă este adevărat", - "LOGIC_TERNARY_IF_FALSE": "dacă este fals", - "LOGIC_TERNARY_TOOLTIP": "Verifică condiția din „test”. Dacă condiția este adevărată, returnează valoarea „în cazul în care adevărat”; în caz contrar întoarce valoarea „în cazul în care e fals”.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Un număr.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tg", - "MATH_TRIG_ASIN": "arcsin", - "MATH_TRIG_ACOS": "arccos", - "MATH_TRIG_ATAN": "arctg", - "MATH_ARITHMETIC_HELPURL": "https://ro.wikipedia.org/wiki/Aritmetic%C4%83", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Returnează suma a două numere.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Returnează diferența dintre cele două numere.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Returnează produsul celor două numere.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Returnează câtul celor două numere.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Returneaza numărul rezultat prin ridicarea primului număr la puterea celui de-al doilea.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "rădăcina pătrată", - "MATH_SINGLE_TOOLTIP_ROOT": "Returnează rădăcina pătrată a unui număr.", - "MATH_SINGLE_OP_ABSOLUTE": "absolută", - "MATH_SINGLE_TOOLTIP_ABS": "Returnează valoarea absolută a unui număr.", - "MATH_SINGLE_TOOLTIP_NEG": "Returnează negația unui număr.", - "MATH_SINGLE_TOOLTIP_LN": "Întoarce logaritmul natural al unui număr.", - "MATH_SINGLE_TOOLTIP_LOG10": "Returnează logaritmul în baza 10 a unui număr.", - "MATH_SINGLE_TOOLTIP_EXP": "Returnează e la puterea unui număr.", - "MATH_SINGLE_TOOLTIP_POW10": "Returnează 10 la puterea unui număr.", - "MATH_TRIG_HELPURL": "https://ro.wikipedia.org/wiki/Funcții_trigonometrice", - "MATH_TRIG_TOOLTIP_SIN": "Întoarce cosinusul unui grad (nu radianul).", - "MATH_TRIG_TOOLTIP_COS": "Întoarce cosinusul unui grad (nu radianul).", - "MATH_TRIG_TOOLTIP_TAN": "Întoarce tangenta unui grad (nu radianul).", - "MATH_TRIG_TOOLTIP_ASIN": "Returnează arcsinusul unui număr.", - "MATH_TRIG_TOOLTIP_ACOS": "Returnează arccosinusul unui număr.", - "MATH_TRIG_TOOLTIP_ATAN": "Returnează arctangenta unui număr.", - "MATH_CONSTANT_HELPURL": "https://ro.wikipedia.org/wiki/Constant%C4%83_matematic%C4%83", - "MATH_CONSTANT_TOOLTIP": "Întoarcă una din constantele comune: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) sau ∞ (infinitate).", - "MATH_IS_EVEN": "este par", - "MATH_IS_ODD": "este impar", - "MATH_IS_PRIME": "este prim", - "MATH_IS_WHOLE": "este întreg", - "MATH_IS_POSITIVE": "este pozitiv", - "MATH_IS_NEGATIVE": "este negativ", - "MATH_IS_DIVISIBLE_BY": "este divizibil cu", - "MATH_IS_TOOLTIP": "Verifică dacă un număr este un par, impar, prim, întreg, pozitiv, negativ, sau dacă este divizibil cu un anumit număr. Returnează true sau false.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "schimbă %1 de %2", - "MATH_CHANGE_TOOLTIP": "Adaugă un număr variabilei '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Rotunjirea unui număr în sus sau în jos.", - "MATH_ROUND_OPERATOR_ROUND": "rotund", - "MATH_ROUND_OPERATOR_ROUNDUP": "rotunjește în sus", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "rotunjit", - "MATH_ONLIST_OPERATOR_SUM": "suma listei", - "MATH_ONLIST_TOOLTIP_SUM": "Returnează suma tuturor numerelor din lista.", - "MATH_ONLIST_OPERATOR_MIN": "minimul listei", - "MATH_ONLIST_TOOLTIP_MIN": "Returnează cel mai mic număr din listă.", - "MATH_ONLIST_OPERATOR_MAX": "maximul listei", - "MATH_ONLIST_TOOLTIP_MAX": "Întoarce cel mai mare număr din listă.", - "MATH_ONLIST_OPERATOR_AVERAGE": "media listei", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Întoarce media (aritmetică) a valorilor numerice în listă.", - "MATH_ONLIST_OPERATOR_MEDIAN": "media listei", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Întoarce numărul median în listă.", - "MATH_ONLIST_OPERATOR_MODE": "moduri de listă", - "MATH_ONLIST_TOOLTIP_MODE": "Returnează o listă cu cel(e) mai frecvent(e) element(e) din listă.", - "MATH_ONLIST_OPERATOR_STD_DEV": "deviația standard a listei", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Întoarce deviația standard a listei.", - "MATH_ONLIST_OPERATOR_RANDOM": "element aleatoriu din lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Returnează un element aleatoriu din listă.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "restul la %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Întoarce restul din împărțirea celor două numere.", - "MATH_CONSTRAIN_TITLE": "constrânge %1 redus %2 ridicat %3", - "MATH_CONSTRAIN_TOOLTIP": "Constrânge un număr să fie între limitele specificate (inclusiv).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "un număr întreg aleator de la %1 la %2", - "MATH_RANDOM_INT_TOOLTIP": "Returnează un număr întreg aleator aflat între cele două limite specificate, inclusiv.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fracții aleatorii", - "MATH_RANDOM_FLOAT_TOOLTIP": "Returnează o fracție aleatoare între 0.0 (inclusiv) și 1.0 (exclusiv).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Întoarceți arctangentul punctului (X, Y) în grade de la -180 la 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "O literă, cuvânt sau linie de text.", - "TEXT_JOIN_TITLE_CREATEWITH": "crează text cu", - "TEXT_JOIN_TOOLTIP": "Creați o bucată de text prin unirea oricărui număr de elemente.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "alăturați-vă", - "TEXT_CREATE_JOIN_TOOLTIP": "Adaugă, elimină sau reordonează secțiuni ca să reconfigureze blocul text.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Adaugă un element în text.", - "TEXT_APPEND_TITLE": "la %1 adăugați text %2", - "TEXT_APPEND_TOOLTIP": "Adăugați text la variabila „%1”.", - "TEXT_LENGTH_TITLE": "lungime de %1", - "TEXT_LENGTH_TOOLTIP": "Returnează numărul de litere (inclusiv spațiile) în textul furnizat.", - "TEXT_ISEMPTY_TITLE": "%1 este gol", - "TEXT_ISEMPTY_TOOLTIP": "Returnează adevărat dacă textul furnizat este gol.", - "TEXT_INDEXOF_TOOLTIP": "Returnează indicele primei/ultimei apariții din primul text în al doilea text. Returnează %1 dacă textul nu este găsit.", - "TEXT_INDEXOF_TITLE": "în text %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "găsește prima apariție a textului", - "TEXT_INDEXOF_OPERATOR_LAST": "găsește ultima apariție a textului", - "TEXT_CHARAT_TITLE": "în text %1 %2", - "TEXT_CHARAT_FROM_START": "obtine litera #", - "TEXT_CHARAT_FROM_END": "obține litera # de la sfârșit", - "TEXT_CHARAT_FIRST": "obține prima literă", - "TEXT_CHARAT_LAST": "obține o literă oarecare", - "TEXT_CHARAT_RANDOM": "obtine o litera oarecare", - "TEXT_CHARAT_TOOLTIP": "Returnează litera la poziția specificată.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Returnează o anumită parte din text.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "în text", - "TEXT_GET_SUBSTRING_START_FROM_START": "obține subșir de la litera #", - "TEXT_GET_SUBSTRING_START_FROM_END": "obține un subșir de la litera # de la sfârșit", - "TEXT_GET_SUBSTRING_START_FIRST": "obține un subșir de la prima literă", - "TEXT_GET_SUBSTRING_END_FROM_START": "la litera #", - "TEXT_GET_SUBSTRING_END_FROM_END": "la litera # de la sfarsit", - "TEXT_GET_SUBSTRING_END_LAST": "la ultima literă", - "TEXT_CHANGECASE_TOOLTIP": "Întoarce o copie a textului într-un caz diferit.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "la MAJUSCULE", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "la litere mici", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "către Titlul de caz", - "TEXT_TRIM_TOOLTIP": "Returnează o copie a textului fără spațiile de la unul sau ambele capete.", - "TEXT_TRIM_OPERATOR_BOTH": "taie spațiile de pe ambele părți ale", - "TEXT_TRIM_OPERATOR_LEFT": "tăiați spațiile din partea stângă a", - "TEXT_TRIM_OPERATOR_RIGHT": "taie spațiile din partea dreaptă a", - "TEXT_PRINT_TITLE": "imprimare %1", - "TEXT_PRINT_TOOLTIP": "Afișează textul specificat, numărul sau altă valoare.", - "TEXT_PROMPT_TYPE_TEXT": "solicită pentru text cu mesaj", - "TEXT_PROMPT_TYPE_NUMBER": "solicită pentru număr cu mesaj", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Solicită utilizatorul pentru un număr.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Solicită utilizatorul pentru text.", - "TEXT_COUNT_MESSAGE0": "numără %1 in %2", - "TEXT_COUNT_TOOLTIP": "Aflați de câte ori apare un text într-un alt text.", - "TEXT_REPLACE_MESSAGE0": "înlocuiți %1 cu %2 în %3", - "TEXT_REPLACE_TOOLTIP": "Înlocuiți toate aparițiile anumitor texte într-un alt text.", - "TEXT_REVERSE_MESSAGE0": "inversă %1", - "TEXT_REVERSE_TOOLTIP": "Inversează ordinea caracterelor din text.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "creează listă goală", - "LISTS_CREATE_EMPTY_TOOLTIP": "Returnează o listă, de lungime 0, care nu conține înregistrări de date", - "LISTS_CREATE_WITH_TOOLTIP": "Creați o listă cu orice număr de elemente.", - "LISTS_CREATE_WITH_INPUT_WITH": "creează listă cu", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listă", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc de listă.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Adăugați un element la listă.", - "LISTS_REPEAT_TOOLTIP": "Creează o listă alcătuită dintr-o anumită valoare repetată de numărul specificat de ori.", - "LISTS_REPEAT_TITLE": "creaza lista cu %1 elemente repetate de %2 ori", - "LISTS_LENGTH_TITLE": "lungime de %1", - "LISTS_LENGTH_TOOLTIP": "Returnează lungimea unei liste.", - "LISTS_ISEMPTY_TITLE": "%1 este gol", - "LISTS_ISEMPTY_TOOLTIP": "Returnează adevărat dacă lista este goală.", - "LISTS_INLIST": "în listă", - "LISTS_INDEX_OF_FIRST": "Găsește prima apariție a elementului", - "LISTS_INDEX_OF_LAST": "găsește ultima apariție a elementului", - "LISTS_INDEX_OF_TOOLTIP": "Returnează indexul primei/ultimei apariții a articolului din listă. Returnează %1 dacă elementul nu este găsit.", - "LISTS_GET_INDEX_GET": "obține", - "LISTS_GET_INDEX_GET_REMOVE": "obține și elimină", - "LISTS_GET_INDEX_REMOVE": "elimină", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# de la sfârșit", - "LISTS_GET_INDEX_FIRST": "primul", - "LISTS_GET_INDEX_LAST": "ultimul", - "LISTS_GET_INDEX_RANDOM": "aleator", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 este primul element.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 este ultimul element.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returnează elementul de la poziția specificată dintr-o listă.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returnează primul element dintr-o listă.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returnează ultimul element într-o listă.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returneaza un element aleatoriu într-o listă.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Elimină și returnează elementul de la poziția specificată dintr-o listă.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Elimină și returnează primul element dintr-o listă.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Elimină și returnează ultimul element dintr-o listă.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Elimină și returnează un element aleatoriu într-o listă.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Elimină elementul de la poziția specificată dintr-o listă.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Elimină primul element într-o listă.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Elimină ultimul element într-o listă.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Elimină un element aleatoriu într-o listă.", - "LISTS_SET_INDEX_SET": "seteaza", - "LISTS_SET_INDEX_INSERT": "introduceți la", - "LISTS_SET_INDEX_INPUT_TO": "ca", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setează elementul de la poziția specificată dintr-o listă.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Setează primul element într-o listă.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Setează ultimul element într-o listă.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setează un element aleator într-o listă.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserează elementul la poziția specificată într-o listă.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserează elementul la începutul unei liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Adaugă elementul la sfârșitul unei liste.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserează elementul aleatoriu într-o listă.", - "LISTS_GET_SUBLIST_START_FROM_START": "obține sub-lista de la #", - "LISTS_GET_SUBLIST_START_FROM_END": "obține sub-lista de la # de la sfârșit", - "LISTS_GET_SUBLIST_START_FIRST": "obține sub-lista de la primul", - "LISTS_GET_SUBLIST_END_FROM_START": "la #", - "LISTS_GET_SUBLIST_END_FROM_END": "la # de la sfarsit", - "LISTS_GET_SUBLIST_END_LAST": "la ultima", - "LISTS_GET_SUBLIST_TOOLTIP": "Creează o copie a porțiunii specificate dintr-o listă.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sortați %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sortați o copie a unei liste.", - "LISTS_SORT_ORDER_ASCENDING": "crescător", - "LISTS_SORT_ORDER_DESCENDING": "descrescător", - "LISTS_SORT_TYPE_NUMERIC": "numeric", - "LISTS_SORT_TYPE_TEXT": "alfabetic", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetic, ignorați cazul", - "LISTS_SPLIT_LIST_FROM_TEXT": "convertește textul în listă", - "LISTS_SPLIT_TEXT_FROM_LIST": "convertește lista în text", - "LISTS_SPLIT_WITH_DELIMITER": "cu separatorul", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Împarte textul într-o listă de texte, despărțite prin fiecare separator", - "LISTS_SPLIT_TOOLTIP_JOIN": "Concatenează o listă de texte (alternate cu separatorul) într-un text unic", - "LISTS_REVERSE_MESSAGE0": "inversă %1", - "LISTS_REVERSE_TOOLTIP": "Inversați copia unei liste.", - "VARIABLES_GET_TOOLTIP": "Returnează valoarea acestei variabile.", - "VARIABLES_GET_CREATE_SET": "Crează 'set %1'", - "VARIABLES_SET": "seteaza %1 la %2", - "VARIABLES_SET_TOOLTIP": "Setează această variabilă sa fie egală la intrare.", - "VARIABLES_SET_CREATE_GET": "Crează 'get %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "la", - "PROCEDURES_DEFNORETURN_PROCEDURE": "fă ceva", - "PROCEDURES_BEFORE_PARAMS": "cu:", - "PROCEDURES_CALL_BEFORE_PARAMS": "cu:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Crează o funcție cu nicio ieșire.", - "PROCEDURES_DEFNORETURN_COMMENT": "Descrieți această funcție ...", - "PROCEDURES_DEFRETURN_HELPURL": "https://ro.wikipedia.org/wiki/Subrutină", - "PROCEDURES_DEFRETURN_RETURN": "returnează", - "PROCEDURES_DEFRETURN_TOOLTIP": "Creează o funcție cu o ieșire.", - "PROCEDURES_ALLOW_STATEMENTS": "permite declarațiile", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Atenție: Această funcție are parametri duplicați.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Executați funcția '%1 'definită de utilizator.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Executați funcția „%1” definită de utilizator și folosiți producția sa.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "intrări", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Adăugă, șterge sau reordonează parametrii de intrare ai acestei funcții.", - "PROCEDURES_MUTATORARG_TITLE": "nume de intrare:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Adaugă un parametru de intrare pentru funcție.", - "PROCEDURES_HIGHLIGHT_DEF": "Evidențiază definiția funcției", - "PROCEDURES_CREATE_DO": "Creați „%1”", - "PROCEDURES_IFRETURN_TOOLTIP": "Dacă o valoare este adevărată, atunci returnează valoarea a doua.", - "PROCEDURES_IFRETURN_WARNING": "Avertisment: Acest bloc poate fi utilizat numai în definiția unei funcții.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Spune ceva...", - "COLLAPSED_WARNINGS_WARNING": "Blocurile blocate conțin avertismente.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Revocare" -} +{ + "@metadata": { + "authors": [ + "Andreyyshore", + "Ely en", + "Hugbear", + "MSClaudiu", + "Minisarm", + "Wintereu", + "Ykhwong", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "element", + "TODAY": "Astăzi", + "DUPLICATE_BLOCK": "Duplicate", + "ADD_COMMENT": "Adaugă un comentariu", + "REMOVE_COMMENT": "Elimină comentariu", + "DUPLICATE_COMMENT": "Coment duplicat", + "EXTERNAL_INPUTS": "Intrări externe", + "INLINE_INPUTS": "Intrări în linie", + "DELETE_BLOCK": "Șterge Bloc", + "DELETE_X_BLOCKS": "Ștergeți %1 Blocuri", + "DELETE_ALL_BLOCKS": "Ștergi toate cele %1 (de) blocuri?", + "CLEAN_UP": "Curăță blocări", + "COLLAPSE_BLOCK": "Restrange blocul", + "COLLAPSE_ALL": "Restrange blocurile", + "EXPAND_BLOCK": "Extinde bloc", + "EXPAND_ALL": "Extinde blocuri", + "DISABLE_BLOCK": "Dezactivați bloc", + "ENABLE_BLOCK": "Permite bloc", + "HELP": "Ajutor", + "UNDO": "Anulează", + "REDO": "Refă", + "CHANGE_VALUE_TITLE": "Schimbați valoarea:", + "RENAME_VARIABLE": "Redenumirea variabilei...", + "RENAME_VARIABLE_TITLE": "Redenumește toate variabilele „%1” în:", + "NEW_VARIABLE": "Crează variabilă", + "NEW_STRING_VARIABLE": "Crează o variabilă string", + "NEW_NUMBER_VARIABLE": "Crează o variabilă număr", + "NEW_COLOUR_VARIABLE": "Crează o variabilă culoare", + "NEW_VARIABLE_TYPE_TITLE": "Tip nou de variabilă", + "NEW_VARIABLE_TITLE": "Noul nume de variabilă:", + "VARIABLE_ALREADY_EXISTS": "O variabilă cu numele '%1' există deja.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "o variabilă numită '%1' există deja pentru alt tip: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Șterge %1 utilizările variabilei '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nu se poate șterge variabila '%1' deoarece face parte din definiția funcției '%2'", + "DELETE_VARIABLE": "Ștergeți variabila '%1'", + "COLOUR_PICKER_HELPURL": "https://ro.wikipedia.org/wiki/Culoare", + "COLOUR_PICKER_TOOLTIP": "Alege o culoare din paleta de culori.", + "COLOUR_RANDOM_TITLE": "culoare aleatorie", + "COLOUR_RANDOM_TOOLTIP": "Alege o culoare la întâmplare.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "colorează cu", + "COLOUR_RGB_RED": "roșu", + "COLOUR_RGB_GREEN": "verde", + "COLOUR_RGB_BLUE": "albastru", + "COLOUR_RGB_TOOLTIP": "Creează o culoare cu suma specificată de roșu, verde și albastru. Toate valorile trebuie să fie între 0 și 100.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "amestec", + "COLOUR_BLEND_COLOUR1": "culoare 1", + "COLOUR_BLEND_COLOUR2": "culoare 2", + "COLOUR_BLEND_RATIO": "Raport", + "COLOUR_BLEND_TOOLTIP": "Amestecă două culori cu un raport dat (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "repetă de %1 ori", + "CONTROLS_REPEAT_INPUT_DO": "fă", + "CONTROLS_REPEAT_TOOLTIP": "Face unele afirmații de mai multe ori.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repetă în timp ce", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "Repetați până când", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Atâta timp cât o valoare este adevărat, atunci face unele declarații.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Atâta timp cât o valoare este adevărat, atunci face unele declarații.", + "CONTROLS_FOR_TOOLTIP": "Cu variablia \"%1\" ia o valoare din numărul început la numărul final, numara in intervalul specificat, apoi face blocurile specificate.", + "CONTROLS_FOR_TITLE": "numără cu %1 de la %2 la %3 prin %4", + "CONTROLS_FOREACH_TITLE": "pentru fiecare element %1 în listă %2", + "CONTROLS_FOREACH_TOOLTIP": "Pentru fiecare element din listă, setați variabila „%1” ca valoarea elementului, și apoi faceți unele declarații.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ieși din buclă", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "continuă cu următoarea iterație a buclei", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ieși din buclă.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sari peste restul acestei bucle și continuă cu următoarea iterație.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Avertisment: Acest bloc pote fi utilizat numai în interiorul unei bucle.", + "CONTROLS_IF_TOOLTIP_1": "Dacă o valoare este adevărată, atunci fă unele declarații.", + "CONTROLS_IF_TOOLTIP_2": "Dacă o valoare este adevărat, atunci face primul bloc de declarații. Altfel, face al doilea bloc de declarații.", + "CONTROLS_IF_TOOLTIP_3": "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații.", + "CONTROLS_IF_TOOLTIP_4": "Dacă prima valoare este adevărat, atunci face primul bloc de declarații. Altfel, dacă a doua valoare este adevărat, face al doilea bloc de declarații. În cazul în care niciuna din valori nu este adevărat, face ultimul bloc de declarații.", + "CONTROLS_IF_MSG_IF": "dacă", + "CONTROLS_IF_MSG_ELSEIF": "altfel dacă", + "CONTROLS_IF_MSG_ELSE": "altfel", + "CONTROLS_IF_IF_TOOLTIP": "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc if.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Adăugați o condiție în blocul if.", + "CONTROLS_IF_ELSE_TOOLTIP": "Adauga o stare finala, cuprinde toata conditia din blocul if.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Returnează adevărat dacă ambele intrări sunt egale.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Returnează adevărat daca cele două intrări nu sunt egale.", + "LOGIC_COMPARE_TOOLTIP_LT": "Returnează adevărat dacă prima intrare este mai mică decât a doua intrare.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Returnează adevărat dacă prima intrare este mai mică sau egală cu a doua intrare.", + "LOGIC_COMPARE_TOOLTIP_GT": "Returnează adevărat dacă prima intrare este mai mare decât a doua intrare.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Returnează adevărat dacă prima intrare este mai mare sau egală cu a doua intrare.", + "LOGIC_OPERATION_TOOLTIP_AND": "Returnează adevărat daca ambele intrări sunt adevărate.", + "LOGIC_OPERATION_AND": "și", + "LOGIC_OPERATION_TOOLTIP_OR": "Returnează adevărat dacă cel puțin una din intrări este adevărată.", + "LOGIC_OPERATION_OR": "sau", + "LOGIC_NEGATE_TITLE": "non %1", + "LOGIC_NEGATE_TOOLTIP": "Returnează adevărat dacă intrarea este falsă. Returnează fals dacă intrarea este adevărată.", + "LOGIC_BOOLEAN_TRUE": "adevărat", + "LOGIC_BOOLEAN_FALSE": "fals", + "LOGIC_BOOLEAN_TOOLTIP": "Returnează adevărat sau fals.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "nul", + "LOGIC_NULL_TOOLTIP": "returnează nul.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "dacă este adevărat", + "LOGIC_TERNARY_IF_FALSE": "dacă este fals", + "LOGIC_TERNARY_TOOLTIP": "Verifică condiția din „test”. Dacă condiția este adevărată, returnează valoarea „în cazul în care adevărat”; în caz contrar întoarce valoarea „în cazul în care e fals”.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Un număr.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tg", + "MATH_TRIG_ASIN": "arcsin", + "MATH_TRIG_ACOS": "arccos", + "MATH_TRIG_ATAN": "arctg", + "MATH_ARITHMETIC_HELPURL": "https://ro.wikipedia.org/wiki/Aritmetic%C4%83", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Returnează suma a două numere.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Returnează diferența dintre cele două numere.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Returnează produsul celor două numere.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Returnează câtul celor două numere.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Returneaza numărul rezultat prin ridicarea primului număr la puterea celui de-al doilea.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "rădăcina pătrată", + "MATH_SINGLE_TOOLTIP_ROOT": "Returnează rădăcina pătrată a unui număr.", + "MATH_SINGLE_OP_ABSOLUTE": "absolută", + "MATH_SINGLE_TOOLTIP_ABS": "Returnează valoarea absolută a unui număr.", + "MATH_SINGLE_TOOLTIP_NEG": "Returnează negația unui număr.", + "MATH_SINGLE_TOOLTIP_LN": "Întoarce logaritmul natural al unui număr.", + "MATH_SINGLE_TOOLTIP_LOG10": "Returnează logaritmul în baza 10 a unui număr.", + "MATH_SINGLE_TOOLTIP_EXP": "Returnează e la puterea unui număr.", + "MATH_SINGLE_TOOLTIP_POW10": "Returnează 10 la puterea unui număr.", + "MATH_TRIG_HELPURL": "https://ro.wikipedia.org/wiki/Funcții_trigonometrice", + "MATH_TRIG_TOOLTIP_SIN": "Întoarce cosinusul unui grad (nu radianul).", + "MATH_TRIG_TOOLTIP_COS": "Întoarce cosinusul unui grad (nu radianul).", + "MATH_TRIG_TOOLTIP_TAN": "Întoarce tangenta unui grad (nu radianul).", + "MATH_TRIG_TOOLTIP_ASIN": "Returnează arcsinusul unui număr.", + "MATH_TRIG_TOOLTIP_ACOS": "Returnează arccosinusul unui număr.", + "MATH_TRIG_TOOLTIP_ATAN": "Returnează arctangenta unui număr.", + "MATH_CONSTANT_HELPURL": "https://ro.wikipedia.org/wiki/Constant%C4%83_matematic%C4%83", + "MATH_CONSTANT_TOOLTIP": "Întoarcă una din constantele comune: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) sau ∞ (infinitate).", + "MATH_IS_EVEN": "este par", + "MATH_IS_ODD": "este impar", + "MATH_IS_PRIME": "este prim", + "MATH_IS_WHOLE": "este întreg", + "MATH_IS_POSITIVE": "este pozitiv", + "MATH_IS_NEGATIVE": "este negativ", + "MATH_IS_DIVISIBLE_BY": "este divizibil cu", + "MATH_IS_TOOLTIP": "Verifică dacă un număr este un par, impar, prim, întreg, pozitiv, negativ, sau dacă este divizibil cu un anumit număr. Returnează true sau false.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "schimbă %1 de %2", + "MATH_CHANGE_TOOLTIP": "Adaugă un număr variabilei '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Rotunjirea unui număr în sus sau în jos.", + "MATH_ROUND_OPERATOR_ROUND": "rotund", + "MATH_ROUND_OPERATOR_ROUNDUP": "rotunjește în sus", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "rotunjit", + "MATH_ONLIST_OPERATOR_SUM": "suma listei", + "MATH_ONLIST_TOOLTIP_SUM": "Returnează suma tuturor numerelor din lista.", + "MATH_ONLIST_OPERATOR_MIN": "minimul listei", + "MATH_ONLIST_TOOLTIP_MIN": "Returnează cel mai mic număr din listă.", + "MATH_ONLIST_OPERATOR_MAX": "maximul listei", + "MATH_ONLIST_TOOLTIP_MAX": "Întoarce cel mai mare număr din listă.", + "MATH_ONLIST_OPERATOR_AVERAGE": "media listei", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Întoarce media (aritmetică) a valorilor numerice în listă.", + "MATH_ONLIST_OPERATOR_MEDIAN": "media listei", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Întoarce numărul median în listă.", + "MATH_ONLIST_OPERATOR_MODE": "moduri de listă", + "MATH_ONLIST_TOOLTIP_MODE": "Returnează o listă cu cel(e) mai frecvent(e) element(e) din listă.", + "MATH_ONLIST_OPERATOR_STD_DEV": "deviația standard a listei", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Întoarce deviația standard a listei.", + "MATH_ONLIST_OPERATOR_RANDOM": "element aleatoriu din lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Returnează un element aleatoriu din listă.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "restul la %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Întoarce restul din împărțirea celor două numere.", + "MATH_CONSTRAIN_TITLE": "constrânge %1 redus %2 ridicat %3", + "MATH_CONSTRAIN_TOOLTIP": "Constrânge un număr să fie între limitele specificate (inclusiv).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "un număr întreg aleator de la %1 la %2", + "MATH_RANDOM_INT_TOOLTIP": "Returnează un număr întreg aleator aflat între cele două limite specificate, inclusiv.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fracții aleatorii", + "MATH_RANDOM_FLOAT_TOOLTIP": "Returnează o fracție aleatoare între 0.0 (inclusiv) și 1.0 (exclusiv).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Întoarceți arctangentul punctului (X, Y) în grade de la -180 la 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "O literă, cuvânt sau linie de text.", + "TEXT_JOIN_TITLE_CREATEWITH": "crează text cu", + "TEXT_JOIN_TOOLTIP": "Creați o bucată de text prin unirea oricărui număr de elemente.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "alăturați-vă", + "TEXT_CREATE_JOIN_TOOLTIP": "Adaugă, elimină sau reordonează secțiuni ca să reconfigureze blocul text.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Adaugă un element în text.", + "TEXT_APPEND_TITLE": "la %1 adăugați text %2", + "TEXT_APPEND_TOOLTIP": "Adăugați text la variabila „%1”.", + "TEXT_LENGTH_TITLE": "lungime de %1", + "TEXT_LENGTH_TOOLTIP": "Returnează numărul de litere (inclusiv spațiile) în textul furnizat.", + "TEXT_ISEMPTY_TITLE": "%1 este gol", + "TEXT_ISEMPTY_TOOLTIP": "Returnează adevărat dacă textul furnizat este gol.", + "TEXT_INDEXOF_TOOLTIP": "Returnează indicele primei/ultimei apariții din primul text în al doilea text. Returnează %1 dacă textul nu este găsit.", + "TEXT_INDEXOF_TITLE": "în text %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "găsește prima apariție a textului", + "TEXT_INDEXOF_OPERATOR_LAST": "găsește ultima apariție a textului", + "TEXT_CHARAT_TITLE": "în text %1 %2", + "TEXT_CHARAT_FROM_START": "obtine litera #", + "TEXT_CHARAT_FROM_END": "obține litera # de la sfârșit", + "TEXT_CHARAT_FIRST": "obține prima literă", + "TEXT_CHARAT_LAST": "obține o literă oarecare", + "TEXT_CHARAT_RANDOM": "obtine o litera oarecare", + "TEXT_CHARAT_TOOLTIP": "Returnează litera la poziția specificată.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Returnează o anumită parte din text.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "în text", + "TEXT_GET_SUBSTRING_START_FROM_START": "obține subșir de la litera #", + "TEXT_GET_SUBSTRING_START_FROM_END": "obține un subșir de la litera # de la sfârșit", + "TEXT_GET_SUBSTRING_START_FIRST": "obține un subșir de la prima literă", + "TEXT_GET_SUBSTRING_END_FROM_START": "la litera #", + "TEXT_GET_SUBSTRING_END_FROM_END": "la litera # de la sfarsit", + "TEXT_GET_SUBSTRING_END_LAST": "la ultima literă", + "TEXT_CHANGECASE_TOOLTIP": "Întoarce o copie a textului într-un caz diferit.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "la MAJUSCULE", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "la litere mici", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "către Titlul de caz", + "TEXT_TRIM_TOOLTIP": "Returnează o copie a textului fără spațiile de la unul sau ambele capete.", + "TEXT_TRIM_OPERATOR_BOTH": "taie spațiile de pe ambele părți ale", + "TEXT_TRIM_OPERATOR_LEFT": "tăiați spațiile din partea stângă a", + "TEXT_TRIM_OPERATOR_RIGHT": "taie spațiile din partea dreaptă a", + "TEXT_PRINT_TITLE": "imprimare %1", + "TEXT_PRINT_TOOLTIP": "Afișează textul specificat, numărul sau altă valoare.", + "TEXT_PROMPT_TYPE_TEXT": "solicită pentru text cu mesaj", + "TEXT_PROMPT_TYPE_NUMBER": "solicită pentru număr cu mesaj", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Solicită utilizatorul pentru un număr.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Solicită utilizatorul pentru text.", + "TEXT_COUNT_MESSAGE0": "numără %1 in %2", + "TEXT_COUNT_TOOLTIP": "Aflați de câte ori apare un text într-un alt text.", + "TEXT_REPLACE_MESSAGE0": "înlocuiți %1 cu %2 în %3", + "TEXT_REPLACE_TOOLTIP": "Înlocuiți toate aparițiile anumitor texte într-un alt text.", + "TEXT_REVERSE_MESSAGE0": "inversă %1", + "TEXT_REVERSE_TOOLTIP": "Inversează ordinea caracterelor din text.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "creează listă goală", + "LISTS_CREATE_EMPTY_TOOLTIP": "Returnează o listă, de lungime 0, care nu conține înregistrări de date", + "LISTS_CREATE_WITH_TOOLTIP": "Creați o listă cu orice număr de elemente.", + "LISTS_CREATE_WITH_INPUT_WITH": "creează listă cu", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listă", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Adaugă, elimină sau reordonează secțiuni pentru a reconfigura acest bloc de listă.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Adăugați un element la listă.", + "LISTS_REPEAT_TOOLTIP": "Creează o listă alcătuită dintr-o anumită valoare repetată de numărul specificat de ori.", + "LISTS_REPEAT_TITLE": "creaza lista cu %1 elemente repetate de %2 ori", + "LISTS_LENGTH_TITLE": "lungime de %1", + "LISTS_LENGTH_TOOLTIP": "Returnează lungimea unei liste.", + "LISTS_ISEMPTY_TITLE": "%1 este gol", + "LISTS_ISEMPTY_TOOLTIP": "Returnează adevărat dacă lista este goală.", + "LISTS_INLIST": "în listă", + "LISTS_INDEX_OF_FIRST": "Găsește prima apariție a elementului", + "LISTS_INDEX_OF_LAST": "găsește ultima apariție a elementului", + "LISTS_INDEX_OF_TOOLTIP": "Returnează indexul primei/ultimei apariții a articolului din listă. Returnează %1 dacă elementul nu este găsit.", + "LISTS_GET_INDEX_GET": "obține", + "LISTS_GET_INDEX_GET_REMOVE": "obține și elimină", + "LISTS_GET_INDEX_REMOVE": "elimină", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# de la sfârșit", + "LISTS_GET_INDEX_FIRST": "primul", + "LISTS_GET_INDEX_LAST": "ultimul", + "LISTS_GET_INDEX_RANDOM": "aleator", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 este primul element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 este ultimul element.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returnează elementul de la poziția specificată dintr-o listă.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returnează primul element dintr-o listă.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returnează ultimul element într-o listă.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returneaza un element aleatoriu într-o listă.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Elimină și returnează elementul de la poziția specificată dintr-o listă.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Elimină și returnează primul element dintr-o listă.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Elimină și returnează ultimul element dintr-o listă.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Elimină și returnează un element aleatoriu într-o listă.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Elimină elementul de la poziția specificată dintr-o listă.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Elimină primul element într-o listă.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Elimină ultimul element într-o listă.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Elimină un element aleatoriu într-o listă.", + "LISTS_SET_INDEX_SET": "seteaza", + "LISTS_SET_INDEX_INSERT": "introduceți la", + "LISTS_SET_INDEX_INPUT_TO": "ca", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Setează elementul de la poziția specificată dintr-o listă.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Setează primul element într-o listă.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Setează ultimul element într-o listă.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setează un element aleator într-o listă.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserează elementul la poziția specificată într-o listă.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserează elementul la începutul unei liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Adaugă elementul la sfârșitul unei liste.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserează elementul aleatoriu într-o listă.", + "LISTS_GET_SUBLIST_START_FROM_START": "obține sub-lista de la #", + "LISTS_GET_SUBLIST_START_FROM_END": "obține sub-lista de la # de la sfârșit", + "LISTS_GET_SUBLIST_START_FIRST": "obține sub-lista de la primul", + "LISTS_GET_SUBLIST_END_FROM_START": "la #", + "LISTS_GET_SUBLIST_END_FROM_END": "la # de la sfarsit", + "LISTS_GET_SUBLIST_END_LAST": "la ultima", + "LISTS_GET_SUBLIST_TOOLTIP": "Creează o copie a porțiunii specificate dintr-o listă.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sortați %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sortați o copie a unei liste.", + "LISTS_SORT_ORDER_ASCENDING": "crescător", + "LISTS_SORT_ORDER_DESCENDING": "descrescător", + "LISTS_SORT_TYPE_NUMERIC": "numeric", + "LISTS_SORT_TYPE_TEXT": "alfabetic", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetic, ignorați cazul", + "LISTS_SPLIT_LIST_FROM_TEXT": "convertește textul în listă", + "LISTS_SPLIT_TEXT_FROM_LIST": "convertește lista în text", + "LISTS_SPLIT_WITH_DELIMITER": "cu separatorul", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Împarte textul într-o listă de texte, despărțite prin fiecare separator", + "LISTS_SPLIT_TOOLTIP_JOIN": "Concatenează o listă de texte (alternate cu separatorul) într-un text unic", + "LISTS_REVERSE_MESSAGE0": "inversă %1", + "LISTS_REVERSE_TOOLTIP": "Inversați copia unei liste.", + "VARIABLES_GET_TOOLTIP": "Returnează valoarea acestei variabile.", + "VARIABLES_GET_CREATE_SET": "Crează 'set %1'", + "VARIABLES_SET": "seteaza %1 la %2", + "VARIABLES_SET_TOOLTIP": "Setează această variabilă sa fie egală la intrare.", + "VARIABLES_SET_CREATE_GET": "Crează 'get %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "la", + "PROCEDURES_DEFNORETURN_PROCEDURE": "fă ceva", + "PROCEDURES_BEFORE_PARAMS": "cu:", + "PROCEDURES_CALL_BEFORE_PARAMS": "cu:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Crează o funcție cu nicio ieșire.", + "PROCEDURES_DEFNORETURN_COMMENT": "Descrieți această funcție ...", + "PROCEDURES_DEFRETURN_HELPURL": "https://ro.wikipedia.org/wiki/Subrutină", + "PROCEDURES_DEFRETURN_RETURN": "returnează", + "PROCEDURES_DEFRETURN_TOOLTIP": "Creează o funcție cu o ieșire.", + "PROCEDURES_ALLOW_STATEMENTS": "permite declarațiile", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Atenție: Această funcție are parametri duplicați.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Executați funcția '%1 'definită de utilizator.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Executați funcția „%1” definită de utilizator și folosiți producția sa.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "intrări", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Adăugă, șterge sau reordonează parametrii de intrare ai acestei funcții.", + "PROCEDURES_MUTATORARG_TITLE": "nume de intrare:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Adaugă un parametru de intrare pentru funcție.", + "PROCEDURES_HIGHLIGHT_DEF": "Evidențiază definiția funcției", + "PROCEDURES_CREATE_DO": "Creați „%1”", + "PROCEDURES_IFRETURN_TOOLTIP": "Dacă o valoare este adevărată, atunci returnează valoarea a doua.", + "PROCEDURES_IFRETURN_WARNING": "Avertisment: Acest bloc poate fi utilizat numai în definiția unei funcții.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Spune ceva...", + "COLLAPSED_WARNINGS_WARNING": "Blocurile blocate conțin avertismente.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Revocare" +} diff --git a/msg/json/ru.json b/msg/json/ru.json index 42a117e903b..22b7ca975ca 100644 --- a/msg/json/ru.json +++ b/msg/json/ru.json @@ -1,358 +1,358 @@ -{ - "@metadata": { - "authors": [ - "Espertus", - "Facenapalm", - "Helpau", - "MS", - "Mailman", - "Mouse21", - "Movses", - "Okras", - "Phil Rigovanov", - "RedFox", - "Redredsonia", - "Silovan", - "SimondR", - "Teretalexev", - "Thothsum", - "Vlad5250" - ] - }, - "VARIABLES_DEFAULT_NAME": "элемент", - "UNNAMED_KEY": "без названия", - "TODAY": "Сегодня", - "DUPLICATE_BLOCK": "Дублировать", - "ADD_COMMENT": "Добавить комментарий", - "REMOVE_COMMENT": "Удалить комментарий", - "DUPLICATE_COMMENT": "Дублировать комментарий", - "EXTERNAL_INPUTS": "Вставки снаружи", - "INLINE_INPUTS": "Вставки внутри", - "DELETE_BLOCK": "Удалить блок", - "DELETE_X_BLOCKS": "Удалить %1 блоков", - "DELETE_ALL_BLOCKS": "Удалить все блоки (%1)?", - "CLEAN_UP": "Очистить блоки", - "COLLAPSE_BLOCK": "Свернуть блок", - "COLLAPSE_ALL": "Свернуть блоки", - "EXPAND_BLOCK": "Развернуть блок", - "EXPAND_ALL": "Развернуть блоки", - "DISABLE_BLOCK": "Отключить блок", - "ENABLE_BLOCK": "Включить блок", - "HELP": "Справка", - "UNDO": "Отменить", - "REDO": "Повторить", - "CHANGE_VALUE_TITLE": "Измените значение:", - "RENAME_VARIABLE": "Переименовать переменную…", - "RENAME_VARIABLE_TITLE": "Переименовать все переменные '%1' в:", - "NEW_VARIABLE": "Создать переменную…", - "NEW_STRING_VARIABLE": "Создать строковую переменную...", - "NEW_NUMBER_VARIABLE": "Создать числовую переменную...", - "NEW_COLOUR_VARIABLE": "Создать переменную цвета...", - "NEW_VARIABLE_TYPE_TITLE": "Новый тип переменной:", - "NEW_VARIABLE_TITLE": "Имя новой переменной:", - "VARIABLE_ALREADY_EXISTS": "Переменная с именем '%1' уже существует.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Название переменной '%1' уже используется другой типа: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Удалить %1 использований переменной '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Невозможно удалить переменную '%1', поскольку она является частью определения функции '%2'", - "DELETE_VARIABLE": "Удалить переменную '%1'", - "COLOUR_PICKER_HELPURL": "https://ru.wikipedia.org/wiki/Цвет", - "COLOUR_PICKER_TOOLTIP": "Выберите цвет из палитры.", - "COLOUR_RANDOM_TITLE": "случайный цвет", - "COLOUR_RANDOM_TOOLTIP": "Выбирает цвет случайным образом.", - "COLOUR_RGB_TITLE": "цвет из", - "COLOUR_RGB_RED": "красного", - "COLOUR_RGB_GREEN": "зелёного", - "COLOUR_RGB_BLUE": "синего", - "COLOUR_RGB_TOOLTIP": "Создаёт цвет с указанной пропорцией красного, зелёного и синего. Все значения должны быть между 0 и 100.", - "COLOUR_BLEND_TITLE": "смешать", - "COLOUR_BLEND_COLOUR1": "цвет 1", - "COLOUR_BLEND_COLOUR2": "цвет 2", - "COLOUR_BLEND_RATIO": "доля цвета 1", - "COLOUR_BLEND_TOOLTIP": "Смешивает два цвета в заданном соотношении (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://ru.wikipedia.org/wiki/Цикл_(программирование)", - "CONTROLS_REPEAT_TITLE": "повторить %1 раз", - "CONTROLS_REPEAT_INPUT_DO": "выполнить", - "CONTROLS_REPEAT_TOOLTIP": "Выполняет некоторые команды несколько раз.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "повторять, пока", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "повторять, пока не", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Пока значение истинно, выполняет команды.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Пока значение ложно, выполняет команды", - "CONTROLS_FOR_TOOLTIP": "Присваивает переменной '%1' значения от начального до конечного с заданным шагом и выполняет указанные команды.", - "CONTROLS_FOR_TITLE": "цикл по %1 от %2 до %3 с шагом %4", - "CONTROLS_FOREACH_TITLE": "для каждого элемента %1 в списке %2", - "CONTROLS_FOREACH_TOOLTIP": "Для каждого элемента в списке, присваивает переменной '%1' значение элемента и выполняет указанные команды.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "выйти из цикла", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "перейти к следующему шагу цикла", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Прерывает этот цикл.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Пропускает остаток цикла и переходит к следующему шагу.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Предупреждение: этот блок может использоваться только внутри цикла.", - "CONTROLS_IF_TOOLTIP_1": "Если условие истинно, выполняет команды.", - "CONTROLS_IF_TOOLTIP_2": "Если условие истинно, выполняет первый блок команд. Иначе выполняется второй блок команд.", - "CONTROLS_IF_TOOLTIP_3": "Если первое условие истинно, то выполняет первый блок команд. Иначе, если второе условие истинно, выполняет второй блок команд.", - "CONTROLS_IF_TOOLTIP_4": "Если первое условие истинно, то выполняет первый блок команд. В противном случае, если второе условие истинно, выполняет второй блок команд. Если ни одно из условий не истинно, выполняет последний блок команд.", - "CONTROLS_IF_MSG_IF": "если", - "CONTROLS_IF_MSG_ELSEIF": "иначе если", - "CONTROLS_IF_MSG_ELSE": "иначе", - "CONTROLS_IF_IF_TOOLTIP": "Добавьте, удалите, переставьте фрагменты для переделки блока \"если\".", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Добавляет условие к блоку \"если\"", - "CONTROLS_IF_ELSE_TOOLTIP": "Добавить заключительный подблок для случая, когда все условия ложны.", - "LOGIC_COMPARE_HELPURL": "https://ru.wikipedia.org/wiki/Неравенство", - "LOGIC_COMPARE_TOOLTIP_EQ": "Возвращает положительное значение, если вводы равны.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Возвращает положительное значение, если вводы не равны.", - "LOGIC_COMPARE_TOOLTIP_LT": "Возвращает положительное значение, если первый ввод меньше второго.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Возвращает значение истина, если первая вставка меньше или равна второй.", - "LOGIC_COMPARE_TOOLTIP_GT": "Возвращает значение истина, если первая вставка больше второй.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Возвращает значение истина, если первая вставка больше или равна второй.", - "LOGIC_OPERATION_TOOLTIP_AND": "Возвращает значение истина, если обе вставки истинны.", - "LOGIC_OPERATION_AND": "и", - "LOGIC_OPERATION_TOOLTIP_OR": "Возвращает значение истина, если хотя бы одна из вставок истинна.", - "LOGIC_OPERATION_OR": "или", - "LOGIC_NEGATE_TITLE": "не %1", - "LOGIC_NEGATE_TOOLTIP": "Возвращает значение истина, если вставка ложна. Возвращает значение ложь, если вставка истинна.", - "LOGIC_BOOLEAN_TRUE": "истина", - "LOGIC_BOOLEAN_FALSE": "ложь", - "LOGIC_BOOLEAN_TOOLTIP": "Возвращает значение истина или ложь.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "ничто", - "LOGIC_NULL_TOOLTIP": "Возвращает ничто.", - "LOGIC_TERNARY_HELPURL": "https://ru.wikipedia.org/wiki/Тернарная_условная_операция", - "LOGIC_TERNARY_CONDITION": "выбрать по", - "LOGIC_TERNARY_IF_TRUE": "если истина", - "LOGIC_TERNARY_IF_FALSE": "если ложь", - "LOGIC_TERNARY_TOOLTIP": "Проверяет условие выбора. Если условие истинно, возвращает первое значение, в противном случае возвращает второе значение.", - "MATH_NUMBER_HELPURL": "https://ru.wikipedia.org/wiki/Число", - "MATH_NUMBER_TOOLTIP": "Число.", - "MATH_ARITHMETIC_HELPURL": "https://ru.wikipedia.org/wiki/Арифметика", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Возвращает сумму двух чисел.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Возвращает разность двух чисел.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Возвращает произведение двух чисел.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Возвращает частное от деления первого числа на второе.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Возвращает первое число, возведённое в степень второго числа.", - "MATH_SINGLE_HELPURL": "https://ru.wikipedia.org/wiki/Квадратный_корень", - "MATH_SINGLE_OP_ROOT": "квадратный корень", - "MATH_SINGLE_TOOLTIP_ROOT": "Возвращает квадратный корень числа.", - "MATH_SINGLE_OP_ABSOLUTE": "модуль", - "MATH_SINGLE_TOOLTIP_ABS": "Возвращает модуль числа", - "MATH_SINGLE_TOOLTIP_NEG": "Возвращает противоположное число.", - "MATH_SINGLE_TOOLTIP_LN": "Возвращает натуральный логарифм числа.", - "MATH_SINGLE_TOOLTIP_LOG10": "Возвращает десятичный логарифм числа.", - "MATH_SINGLE_TOOLTIP_EXP": "Возвращает е в указанной степени.", - "MATH_SINGLE_TOOLTIP_POW10": "Возвращает 10 в указанной степени.", - "MATH_TRIG_HELPURL": "https://ru.wikipedia.org/wiki/Тригонометрические_функции", - "MATH_TRIG_TOOLTIP_SIN": "Возвращает синус угла в градусах.", - "MATH_TRIG_TOOLTIP_COS": "Возвращает косинус угла в градусах.", - "MATH_TRIG_TOOLTIP_TAN": "Возвращает тангенс угла в градусах.", - "MATH_TRIG_TOOLTIP_ASIN": "Возвращает арксинус (в градусах).", - "MATH_TRIG_TOOLTIP_ACOS": "Возвращает арккосинус (в градусах).", - "MATH_TRIG_TOOLTIP_ATAN": "Возвращает арктангенс (в градусах)", - "MATH_CONSTANT_HELPURL": "https://ru.wikipedia.org/wiki/Математическая_константа", - "MATH_CONSTANT_TOOLTIP": "Возвращает одну из распространённых констант: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (бесконечность).", - "MATH_IS_EVEN": "чётное", - "MATH_IS_ODD": "нечётное", - "MATH_IS_PRIME": "простое", - "MATH_IS_WHOLE": "целое", - "MATH_IS_POSITIVE": "положительное", - "MATH_IS_NEGATIVE": "отрицательное", - "MATH_IS_DIVISIBLE_BY": "делится на", - "MATH_IS_TOOLTIP": "Проверяет, является ли число чётным, нечётным, простым, целым, положительным, отрицательным или оно кратно определённому числу. Возвращает значение истина или ложь.", - "MATH_CHANGE_HELPURL": "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82", - "MATH_CHANGE_TITLE": "увеличить %1 на %2", - "MATH_CHANGE_TOOLTIP": "Добавляет число к переменной '%1'.", - "MATH_ROUND_HELPURL": "https://ru.wikipedia.org/wiki/Округление", - "MATH_ROUND_TOOLTIP": "Округляет число до большего или меньшего.", - "MATH_ROUND_OPERATOR_ROUND": "округлить", - "MATH_ROUND_OPERATOR_ROUNDUP": "округлить к большему", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "округлить к меньшему", - "MATH_ONLIST_OPERATOR_SUM": "сумма списка", - "MATH_ONLIST_TOOLTIP_SUM": "Возвращает сумму всех чисел в списке.", - "MATH_ONLIST_OPERATOR_MIN": "наименьшее в списке", - "MATH_ONLIST_TOOLTIP_MIN": "Возвращает наименьшее число списка.", - "MATH_ONLIST_OPERATOR_MAX": "наибольшее в списке", - "MATH_ONLIST_TOOLTIP_MAX": "Возвращает наибольшее число списка.", - "MATH_ONLIST_OPERATOR_AVERAGE": "среднее арифметическое списка", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Возвращает среднее арифметическое списка.", - "MATH_ONLIST_OPERATOR_MEDIAN": "медиана списка", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Возвращает медиану списка.", - "MATH_ONLIST_OPERATOR_MODE": "моды списка", - "MATH_ONLIST_TOOLTIP_MODE": "Возвращает список наиболее часто встречающихся элементов списка.", - "MATH_ONLIST_OPERATOR_STD_DEV": "стандартное отклонение списка", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Возвращает стандартное отклонение списка.", - "MATH_ONLIST_OPERATOR_RANDOM": "случайный элемент списка", - "MATH_ONLIST_TOOLTIP_RANDOM": "Возвращает случайный элемент списка.", - "MATH_MODULO_HELPURL": "https://ru.wikipedia.org/wiki/Деление_с_остатком", - "MATH_MODULO_TITLE": "остаток от %1 : %2", - "MATH_MODULO_TOOLTIP": "Возвращает остаток от деления двух чисел.", - "MATH_CONSTRAIN_TITLE": "ограничить %1 снизу %2 сверху %3", - "MATH_CONSTRAIN_TOOLTIP": "Ограничивает число нижней и верхней границами (включительно).", - "MATH_RANDOM_INT_HELPURL": "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел", - "MATH_RANDOM_INT_TITLE": "случайное целое число от %1 для %2", - "MATH_RANDOM_INT_TOOLTIP": "Возвращает случайное число между двумя заданными пределами (включая и их).", - "MATH_RANDOM_FLOAT_HELPURL": "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "случайное число от 0 (включительно) до 1", - "MATH_RANDOM_FLOAT_TOOLTIP": "Возвращает случайное число от 0.0 (включительно) до 1.0.", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 от X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Возвращает арктангенс точки (X, Y) в градусах от -180 до 180.", - "TEXT_TEXT_HELPURL": "https://ru.wikipedia.org/wiki/Строковый_тип", - "TEXT_TEXT_TOOLTIP": "Буква, слово или строка текста.", - "TEXT_JOIN_TITLE_CREATEWITH": "создать текст из", - "TEXT_JOIN_TOOLTIP": "Создаёт фрагмент текста, объединяя любое число элементов", - "TEXT_CREATE_JOIN_TITLE_JOIN": "соединить", - "TEXT_CREATE_JOIN_TOOLTIP": "Добавьте, удалите, переставьте фрагменты для переделки текстового блока.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Добавить элемент к тексту.", - "TEXT_APPEND_TITLE": "к %1 добавить текст %2", - "TEXT_APPEND_TOOLTIP": "Добавить текст к переменной «%1».", - "TEXT_LENGTH_TITLE": "длина %1", - "TEXT_LENGTH_TOOLTIP": "Возвращает число символов (включая пробелы) в заданном тексте.", - "TEXT_ISEMPTY_TITLE": "%1 пуст", - "TEXT_ISEMPTY_TOOLTIP": "Возвращает значение истина, если предоставленный текст пуст.", - "TEXT_INDEXOF_TOOLTIP": "Возвращает номер позиции первого/последнего вхождения первого текста во втором. Возвращает %1, если текст не найден.", - "TEXT_INDEXOF_TITLE": "в тексте %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "найти первое вхождение текста", - "TEXT_INDEXOF_OPERATOR_LAST": "найти последнее вхождение текста", - "TEXT_CHARAT_TITLE": "в тексте %1 %2", - "TEXT_CHARAT_FROM_START": "взять букву №", - "TEXT_CHARAT_FROM_END": "взять букву № с конца", - "TEXT_CHARAT_FIRST": "взять первую букву", - "TEXT_CHARAT_LAST": "взять последнюю букву", - "TEXT_CHARAT_RANDOM": "взять случайную букву", - "TEXT_CHARAT_TOOLTIP": "Возвращает букву в указанной позиции.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Возвращает указанную часть текста.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "в тексте", - "TEXT_GET_SUBSTRING_START_FROM_START": "взять подстроку с буквы №", - "TEXT_GET_SUBSTRING_START_FROM_END": "взять подстроку с буквы № с конца", - "TEXT_GET_SUBSTRING_START_FIRST": "взять подстроку с первой буквы", - "TEXT_GET_SUBSTRING_END_FROM_START": "по букву №", - "TEXT_GET_SUBSTRING_END_FROM_END": "по букву № с конца", - "TEXT_GET_SUBSTRING_END_LAST": "по последнюю букву", - "TEXT_CHANGECASE_TOOLTIP": "Возвращает копию текста с ЗАГЛАВНЫМИ или строчными буквами.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "в ЗАГЛАВНЫЕ БУКВЫ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "в строчные буквы", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "в Заглавные Начальные Буквы", - "TEXT_TRIM_TOOLTIP": "Возвращает копию текста с пробелами, удалёнными с одного или обоих концов.", - "TEXT_TRIM_OPERATOR_BOTH": "обрезать пробелы с двух сторон", - "TEXT_TRIM_OPERATOR_LEFT": "обрезать пробелы слева", - "TEXT_TRIM_OPERATOR_RIGHT": "обрезать пробелы справа", - "TEXT_PRINT_TITLE": "напечатать %1", - "TEXT_PRINT_TOOLTIP": "Печатает текст, число или другой объект.", - "TEXT_PROMPT_TYPE_TEXT": "запросить текст с подсказкой", - "TEXT_PROMPT_TYPE_NUMBER": "запросить число с подсказкой", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Запросить у пользователя число.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Запросить у пользователя текст.", - "TEXT_COUNT_MESSAGE0": "подсчитать количество %1 в %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Подсчитать, сколько раз отрывок текста появляется в другом тексте.", - "TEXT_REPLACE_MESSAGE0": "заменить %1 на %2 в %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Заменить все вхождения некоторого текста другим текстом.", - "TEXT_REVERSE_MESSAGE0": "изменить порядок на обратный %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Меняет порядок символов в тексте на обратный.", - "LISTS_CREATE_EMPTY_TITLE": "создать пустой список", - "LISTS_CREATE_EMPTY_TOOLTIP": "Возвращает список длины 0, не содержащий данных", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Создаёт список с любым числом элементов.", - "LISTS_CREATE_WITH_INPUT_WITH": "создать список из", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "список", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Добавьте, удалите, переставьте элементы для переделки блока списка.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Добавляет элемент к списку.", - "LISTS_REPEAT_TOOLTIP": "Создаёт список, состоящий из заданного числа копий элемента.", - "LISTS_REPEAT_TITLE": "создать список из элемента %1, повторяющегося %2 раз", - "LISTS_LENGTH_TITLE": "длина %1", - "LISTS_LENGTH_TOOLTIP": "Возвращает длину списка.", - "LISTS_ISEMPTY_TITLE": "%1 пуст", - "LISTS_ISEMPTY_TOOLTIP": "Возвращает значение истина, если список пуст.", - "LISTS_INLIST": "в списке", - "LISTS_INDEX_OF_FIRST": "найти первое вхождение элемента", - "LISTS_INDEX_OF_LAST": "найти последнее вхождение элемента", - "LISTS_INDEX_OF_TOOLTIP": "Возвращает номер позиции первого/последнего вхождения элемента в списке. Возвращает %1, если элемент не найден.", - "LISTS_GET_INDEX_GET": "взять", - "LISTS_GET_INDEX_GET_REMOVE": "взять и удалить", - "LISTS_GET_INDEX_REMOVE": "удалить", - "LISTS_GET_INDEX_FROM_END": "№ с конца", - "LISTS_GET_INDEX_FIRST": "первый", - "LISTS_GET_INDEX_LAST": "последний", - "LISTS_GET_INDEX_RANDOM": "произвольный", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 - первый элемент.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 - последний элемент.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Возвращает элемент в указанной позиции списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Возвращает первый элемент списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Возвращает последний элемент списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Возвращает случайный элемент списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Удаляет и возвращает элемент в указанной позиции списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Удаляет и возвращает первый элемент списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Удаляет и возвращает последний элемент списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Удаляет и возвращает случайный элемент списка.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Удаляет элемент в указанной позиции списка.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Удаляет первый элемент списка.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Удаляет последний элемент списка.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Удаляет случайный элемент списка.", - "LISTS_SET_INDEX_SET": "присвоить", - "LISTS_SET_INDEX_INSERT": "вставить в", - "LISTS_SET_INDEX_INPUT_TO": "=", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Присваивает значение элементу в указанной позиции списка.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Присваивает значение первому элементу списка.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Присваивает значение последнему элементу списка.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Присваивает значение случайному элементу списка.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Вставляет элемент в указанной позиции списка.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Вставляет элемент в начало списка.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Добавляет элемент в конец списка.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Вставляет элемент в случайное место в списке.", - "LISTS_GET_SUBLIST_START_FROM_START": "взять подсписок с №", - "LISTS_GET_SUBLIST_START_FROM_END": "взять подсписок с № с конца", - "LISTS_GET_SUBLIST_START_FIRST": "взять подсписок с первого", - "LISTS_GET_SUBLIST_END_FROM_START": "по №", - "LISTS_GET_SUBLIST_END_FROM_END": "по № с конца", - "LISTS_GET_SUBLIST_END_LAST": "по последний", - "LISTS_GET_SUBLIST_TOOLTIP": "Создаёт копию указанной части списка.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "сортировать %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Сортировать копию списка.", - "LISTS_SORT_ORDER_ASCENDING": "по возрастанию", - "LISTS_SORT_ORDER_DESCENDING": "по убыванию", - "LISTS_SORT_TYPE_NUMERIC": "числовая", - "LISTS_SORT_TYPE_TEXT": "по алфавиту", - "LISTS_SORT_TYPE_IGNORECASE": "по алфавиту, без учёта регистра", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "сделать список из текста", - "LISTS_SPLIT_TEXT_FROM_LIST": "собрать текст из списка", - "LISTS_SPLIT_WITH_DELIMITER": "с разделителем", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Разбивает текст в список текстов, по разделителям.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Соединяет список текстов в один текст с разделителями.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "изменить порядок на обратный %1", - "LISTS_REVERSE_TOOLTIP": "Изменить порядок списка на обратный.", - "VARIABLES_GET_TOOLTIP": "Возвращает значение этой переменной.", - "VARIABLES_GET_CREATE_SET": "Создать блок \"присвоить\" для %1", - "VARIABLES_SET": "присвоить %1 = %2", - "VARIABLES_SET_TOOLTIP": "Присваивает переменной значение вставки.", - "VARIABLES_SET_CREATE_GET": "Создать вставку %1", - "PROCEDURES_DEFNORETURN_TITLE": "чтобы", - "PROCEDURES_DEFNORETURN_PROCEDURE": "выполнить что-то", - "PROCEDURES_BEFORE_PARAMS": "с:", - "PROCEDURES_CALL_BEFORE_PARAMS": "с:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Создаёт процедуру, не возвращающую значение.", - "PROCEDURES_DEFNORETURN_COMMENT": "Опишите эту функцию…", - "PROCEDURES_DEFRETURN_RETURN": "вернуть", - "PROCEDURES_DEFRETURN_TOOLTIP": "Создаёт процедуру, возвращающую значение.", - "PROCEDURES_ALLOW_STATEMENTS": "разрешить операторы", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Предупреждение: эта функция имеет повторяющиеся параметры.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://ru.wikipedia.org/wiki/Подпрограмма", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Исполняет определённую пользователем процедуру '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://ru.wikipedia.org/wiki/Подпрограмма", - "PROCEDURES_CALLRETURN_TOOLTIP": "Исполняет определённую пользователем процедуру '%1' и возвращает вычисленное значение.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "параметры", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Добавить, удалить или изменить порядок входных параметров для этой функции.", - "PROCEDURES_MUTATORARG_TITLE": "имя параметра:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Добавить входной параметр в функцию.", - "PROCEDURES_HIGHLIGHT_DEF": "Выделить определение процедуры", - "PROCEDURES_CREATE_DO": "Создать вызов '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Если первое значение истинно, возвращает второе значение.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Предупреждение: Этот блок может использоваться только внутри определения функции.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Напишите здесь что-нибудь...", - "WORKSPACE_ARIA_LABEL": "Рабочая область Blockly", - "COLLAPSED_WARNINGS_WARNING": "Свёрнутые блоки содержат предупреждения.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Отмена" -} +{ + "@metadata": { + "authors": [ + "Espertus", + "Facenapalm", + "Helpau", + "MS", + "Mailman", + "Mouse21", + "Movses", + "Okras", + "Phil Rigovanov", + "RedFox", + "Redredsonia", + "Silovan", + "SimondR", + "Teretalexev", + "Thothsum", + "Vlad5250" + ] + }, + "VARIABLES_DEFAULT_NAME": "элемент", + "UNNAMED_KEY": "без названия", + "TODAY": "Сегодня", + "DUPLICATE_BLOCK": "Дублировать", + "ADD_COMMENT": "Добавить комментарий", + "REMOVE_COMMENT": "Удалить комментарий", + "DUPLICATE_COMMENT": "Дублировать комментарий", + "EXTERNAL_INPUTS": "Вставки снаружи", + "INLINE_INPUTS": "Вставки внутри", + "DELETE_BLOCK": "Удалить блок", + "DELETE_X_BLOCKS": "Удалить %1 блоков", + "DELETE_ALL_BLOCKS": "Удалить все блоки (%1)?", + "CLEAN_UP": "Очистить блоки", + "COLLAPSE_BLOCK": "Свернуть блок", + "COLLAPSE_ALL": "Свернуть блоки", + "EXPAND_BLOCK": "Развернуть блок", + "EXPAND_ALL": "Развернуть блоки", + "DISABLE_BLOCK": "Отключить блок", + "ENABLE_BLOCK": "Включить блок", + "HELP": "Справка", + "UNDO": "Отменить", + "REDO": "Повторить", + "CHANGE_VALUE_TITLE": "Измените значение:", + "RENAME_VARIABLE": "Переименовать переменную…", + "RENAME_VARIABLE_TITLE": "Переименовать все переменные '%1' в:", + "NEW_VARIABLE": "Создать переменную…", + "NEW_STRING_VARIABLE": "Создать строковую переменную...", + "NEW_NUMBER_VARIABLE": "Создать числовую переменную...", + "NEW_COLOUR_VARIABLE": "Создать переменную цвета...", + "NEW_VARIABLE_TYPE_TITLE": "Новый тип переменной:", + "NEW_VARIABLE_TITLE": "Имя новой переменной:", + "VARIABLE_ALREADY_EXISTS": "Переменная с именем '%1' уже существует.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Название переменной '%1' уже используется другой типа: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Удалить %1 использований переменной '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Невозможно удалить переменную '%1', поскольку она является частью определения функции '%2'", + "DELETE_VARIABLE": "Удалить переменную '%1'", + "COLOUR_PICKER_HELPURL": "https://ru.wikipedia.org/wiki/Цвет", + "COLOUR_PICKER_TOOLTIP": "Выберите цвет из палитры.", + "COLOUR_RANDOM_TITLE": "случайный цвет", + "COLOUR_RANDOM_TOOLTIP": "Выбирает цвет случайным образом.", + "COLOUR_RGB_TITLE": "цвет из", + "COLOUR_RGB_RED": "красного", + "COLOUR_RGB_GREEN": "зелёного", + "COLOUR_RGB_BLUE": "синего", + "COLOUR_RGB_TOOLTIP": "Создаёт цвет с указанной пропорцией красного, зелёного и синего. Все значения должны быть между 0 и 100.", + "COLOUR_BLEND_TITLE": "смешать", + "COLOUR_BLEND_COLOUR1": "цвет 1", + "COLOUR_BLEND_COLOUR2": "цвет 2", + "COLOUR_BLEND_RATIO": "доля цвета 1", + "COLOUR_BLEND_TOOLTIP": "Смешивает два цвета в заданном соотношении (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://ru.wikipedia.org/wiki/Цикл_(программирование)", + "CONTROLS_REPEAT_TITLE": "повторить %1 раз", + "CONTROLS_REPEAT_INPUT_DO": "выполнить", + "CONTROLS_REPEAT_TOOLTIP": "Выполняет некоторые команды несколько раз.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "повторять, пока", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "повторять, пока не", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Пока значение истинно, выполняет команды.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Пока значение ложно, выполняет команды", + "CONTROLS_FOR_TOOLTIP": "Присваивает переменной '%1' значения от начального до конечного с заданным шагом и выполняет указанные команды.", + "CONTROLS_FOR_TITLE": "цикл по %1 от %2 до %3 с шагом %4", + "CONTROLS_FOREACH_TITLE": "для каждого элемента %1 в списке %2", + "CONTROLS_FOREACH_TOOLTIP": "Для каждого элемента в списке, присваивает переменной '%1' значение элемента и выполняет указанные команды.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "выйти из цикла", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "перейти к следующему шагу цикла", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Прерывает этот цикл.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Пропускает остаток цикла и переходит к следующему шагу.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Предупреждение: этот блок может использоваться только внутри цикла.", + "CONTROLS_IF_TOOLTIP_1": "Если условие истинно, выполняет команды.", + "CONTROLS_IF_TOOLTIP_2": "Если условие истинно, выполняет первый блок команд. Иначе выполняется второй блок команд.", + "CONTROLS_IF_TOOLTIP_3": "Если первое условие истинно, то выполняет первый блок команд. Иначе, если второе условие истинно, выполняет второй блок команд.", + "CONTROLS_IF_TOOLTIP_4": "Если первое условие истинно, то выполняет первый блок команд. В противном случае, если второе условие истинно, выполняет второй блок команд. Если ни одно из условий не истинно, выполняет последний блок команд.", + "CONTROLS_IF_MSG_IF": "если", + "CONTROLS_IF_MSG_ELSEIF": "иначе если", + "CONTROLS_IF_MSG_ELSE": "иначе", + "CONTROLS_IF_IF_TOOLTIP": "Добавьте, удалите, переставьте фрагменты для переделки блока \"если\".", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Добавляет условие к блоку \"если\"", + "CONTROLS_IF_ELSE_TOOLTIP": "Добавить заключительный подблок для случая, когда все условия ложны.", + "LOGIC_COMPARE_HELPURL": "https://ru.wikipedia.org/wiki/Неравенство", + "LOGIC_COMPARE_TOOLTIP_EQ": "Возвращает положительное значение, если вводы равны.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Возвращает положительное значение, если вводы не равны.", + "LOGIC_COMPARE_TOOLTIP_LT": "Возвращает положительное значение, если первый ввод меньше второго.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Возвращает значение истина, если первая вставка меньше или равна второй.", + "LOGIC_COMPARE_TOOLTIP_GT": "Возвращает значение истина, если первая вставка больше второй.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Возвращает значение истина, если первая вставка больше или равна второй.", + "LOGIC_OPERATION_TOOLTIP_AND": "Возвращает значение истина, если обе вставки истинны.", + "LOGIC_OPERATION_AND": "и", + "LOGIC_OPERATION_TOOLTIP_OR": "Возвращает значение истина, если хотя бы одна из вставок истинна.", + "LOGIC_OPERATION_OR": "или", + "LOGIC_NEGATE_TITLE": "не %1", + "LOGIC_NEGATE_TOOLTIP": "Возвращает значение истина, если вставка ложна. Возвращает значение ложь, если вставка истинна.", + "LOGIC_BOOLEAN_TRUE": "истина", + "LOGIC_BOOLEAN_FALSE": "ложь", + "LOGIC_BOOLEAN_TOOLTIP": "Возвращает значение истина или ложь.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "ничто", + "LOGIC_NULL_TOOLTIP": "Возвращает ничто.", + "LOGIC_TERNARY_HELPURL": "https://ru.wikipedia.org/wiki/Тернарная_условная_операция", + "LOGIC_TERNARY_CONDITION": "выбрать по", + "LOGIC_TERNARY_IF_TRUE": "если истина", + "LOGIC_TERNARY_IF_FALSE": "если ложь", + "LOGIC_TERNARY_TOOLTIP": "Проверяет условие выбора. Если условие истинно, возвращает первое значение, в противном случае возвращает второе значение.", + "MATH_NUMBER_HELPURL": "https://ru.wikipedia.org/wiki/Число", + "MATH_NUMBER_TOOLTIP": "Число.", + "MATH_ARITHMETIC_HELPURL": "https://ru.wikipedia.org/wiki/Арифметика", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Возвращает сумму двух чисел.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Возвращает разность двух чисел.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Возвращает произведение двух чисел.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Возвращает частное от деления первого числа на второе.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Возвращает первое число, возведённое в степень второго числа.", + "MATH_SINGLE_HELPURL": "https://ru.wikipedia.org/wiki/Квадратный_корень", + "MATH_SINGLE_OP_ROOT": "квадратный корень", + "MATH_SINGLE_TOOLTIP_ROOT": "Возвращает квадратный корень числа.", + "MATH_SINGLE_OP_ABSOLUTE": "модуль", + "MATH_SINGLE_TOOLTIP_ABS": "Возвращает модуль числа", + "MATH_SINGLE_TOOLTIP_NEG": "Возвращает противоположное число.", + "MATH_SINGLE_TOOLTIP_LN": "Возвращает натуральный логарифм числа.", + "MATH_SINGLE_TOOLTIP_LOG10": "Возвращает десятичный логарифм числа.", + "MATH_SINGLE_TOOLTIP_EXP": "Возвращает е в указанной степени.", + "MATH_SINGLE_TOOLTIP_POW10": "Возвращает 10 в указанной степени.", + "MATH_TRIG_HELPURL": "https://ru.wikipedia.org/wiki/Тригонометрические_функции", + "MATH_TRIG_TOOLTIP_SIN": "Возвращает синус угла в градусах.", + "MATH_TRIG_TOOLTIP_COS": "Возвращает косинус угла в градусах.", + "MATH_TRIG_TOOLTIP_TAN": "Возвращает тангенс угла в градусах.", + "MATH_TRIG_TOOLTIP_ASIN": "Возвращает арксинус (в градусах).", + "MATH_TRIG_TOOLTIP_ACOS": "Возвращает арккосинус (в градусах).", + "MATH_TRIG_TOOLTIP_ATAN": "Возвращает арктангенс (в градусах)", + "MATH_CONSTANT_HELPURL": "https://ru.wikipedia.org/wiki/Математическая_константа", + "MATH_CONSTANT_TOOLTIP": "Возвращает одну из распространённых констант: π (3.141...), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) или ∞ (бесконечность).", + "MATH_IS_EVEN": "чётное", + "MATH_IS_ODD": "нечётное", + "MATH_IS_PRIME": "простое", + "MATH_IS_WHOLE": "целое", + "MATH_IS_POSITIVE": "положительное", + "MATH_IS_NEGATIVE": "отрицательное", + "MATH_IS_DIVISIBLE_BY": "делится на", + "MATH_IS_TOOLTIP": "Проверяет, является ли число чётным, нечётным, простым, целым, положительным, отрицательным или оно кратно определённому числу. Возвращает значение истина или ложь.", + "MATH_CHANGE_HELPURL": "https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B8%D0%BE%D0%BC%D0%B0_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29#.D0.98.D0.BD.D0.BA.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D1.82", + "MATH_CHANGE_TITLE": "увеличить %1 на %2", + "MATH_CHANGE_TOOLTIP": "Добавляет число к переменной '%1'.", + "MATH_ROUND_HELPURL": "https://ru.wikipedia.org/wiki/Округление", + "MATH_ROUND_TOOLTIP": "Округляет число до большего или меньшего.", + "MATH_ROUND_OPERATOR_ROUND": "округлить", + "MATH_ROUND_OPERATOR_ROUNDUP": "округлить к большему", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "округлить к меньшему", + "MATH_ONLIST_OPERATOR_SUM": "сумма списка", + "MATH_ONLIST_TOOLTIP_SUM": "Возвращает сумму всех чисел в списке.", + "MATH_ONLIST_OPERATOR_MIN": "наименьшее в списке", + "MATH_ONLIST_TOOLTIP_MIN": "Возвращает наименьшее число списка.", + "MATH_ONLIST_OPERATOR_MAX": "наибольшее в списке", + "MATH_ONLIST_TOOLTIP_MAX": "Возвращает наибольшее число списка.", + "MATH_ONLIST_OPERATOR_AVERAGE": "среднее арифметическое списка", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Возвращает среднее арифметическое списка.", + "MATH_ONLIST_OPERATOR_MEDIAN": "медиана списка", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Возвращает медиану списка.", + "MATH_ONLIST_OPERATOR_MODE": "моды списка", + "MATH_ONLIST_TOOLTIP_MODE": "Возвращает список наиболее часто встречающихся элементов списка.", + "MATH_ONLIST_OPERATOR_STD_DEV": "стандартное отклонение списка", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Возвращает стандартное отклонение списка.", + "MATH_ONLIST_OPERATOR_RANDOM": "случайный элемент списка", + "MATH_ONLIST_TOOLTIP_RANDOM": "Возвращает случайный элемент списка.", + "MATH_MODULO_HELPURL": "https://ru.wikipedia.org/wiki/Деление_с_остатком", + "MATH_MODULO_TITLE": "остаток от %1 : %2", + "MATH_MODULO_TOOLTIP": "Возвращает остаток от деления двух чисел.", + "MATH_CONSTRAIN_TITLE": "ограничить %1 снизу %2 сверху %3", + "MATH_CONSTRAIN_TOOLTIP": "Ограничивает число нижней и верхней границами (включительно).", + "MATH_RANDOM_INT_HELPURL": "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел", + "MATH_RANDOM_INT_TITLE": "случайное целое число от %1 для %2", + "MATH_RANDOM_INT_TOOLTIP": "Возвращает случайное число между двумя заданными пределами (включая и их).", + "MATH_RANDOM_FLOAT_HELPURL": "https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "случайное число от 0 (включительно) до 1", + "MATH_RANDOM_FLOAT_TOOLTIP": "Возвращает случайное число от 0.0 (включительно) до 1.0.", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 от X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Возвращает арктангенс точки (X, Y) в градусах от -180 до 180.", + "TEXT_TEXT_HELPURL": "https://ru.wikipedia.org/wiki/Строковый_тип", + "TEXT_TEXT_TOOLTIP": "Буква, слово или строка текста.", + "TEXT_JOIN_TITLE_CREATEWITH": "создать текст из", + "TEXT_JOIN_TOOLTIP": "Создаёт фрагмент текста, объединяя любое число элементов", + "TEXT_CREATE_JOIN_TITLE_JOIN": "соединить", + "TEXT_CREATE_JOIN_TOOLTIP": "Добавьте, удалите, переставьте фрагменты для переделки текстового блока.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Добавить элемент к тексту.", + "TEXT_APPEND_TITLE": "к %1 добавить текст %2", + "TEXT_APPEND_TOOLTIP": "Добавить текст к переменной «%1».", + "TEXT_LENGTH_TITLE": "длина %1", + "TEXT_LENGTH_TOOLTIP": "Возвращает число символов (включая пробелы) в заданном тексте.", + "TEXT_ISEMPTY_TITLE": "%1 пуст", + "TEXT_ISEMPTY_TOOLTIP": "Возвращает значение истина, если предоставленный текст пуст.", + "TEXT_INDEXOF_TOOLTIP": "Возвращает номер позиции первого/последнего вхождения первого текста во втором. Возвращает %1, если текст не найден.", + "TEXT_INDEXOF_TITLE": "в тексте %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "найти первое вхождение текста", + "TEXT_INDEXOF_OPERATOR_LAST": "найти последнее вхождение текста", + "TEXT_CHARAT_TITLE": "в тексте %1 %2", + "TEXT_CHARAT_FROM_START": "взять букву №", + "TEXT_CHARAT_FROM_END": "взять букву № с конца", + "TEXT_CHARAT_FIRST": "взять первую букву", + "TEXT_CHARAT_LAST": "взять последнюю букву", + "TEXT_CHARAT_RANDOM": "взять случайную букву", + "TEXT_CHARAT_TOOLTIP": "Возвращает букву в указанной позиции.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Возвращает указанную часть текста.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "в тексте", + "TEXT_GET_SUBSTRING_START_FROM_START": "взять подстроку с буквы №", + "TEXT_GET_SUBSTRING_START_FROM_END": "взять подстроку с буквы № с конца", + "TEXT_GET_SUBSTRING_START_FIRST": "взять подстроку с первой буквы", + "TEXT_GET_SUBSTRING_END_FROM_START": "по букву №", + "TEXT_GET_SUBSTRING_END_FROM_END": "по букву № с конца", + "TEXT_GET_SUBSTRING_END_LAST": "по последнюю букву", + "TEXT_CHANGECASE_TOOLTIP": "Возвращает копию текста с ЗАГЛАВНЫМИ или строчными буквами.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "в ЗАГЛАВНЫЕ БУКВЫ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "в строчные буквы", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "в Заглавные Начальные Буквы", + "TEXT_TRIM_TOOLTIP": "Возвращает копию текста с пробелами, удалёнными с одного или обоих концов.", + "TEXT_TRIM_OPERATOR_BOTH": "обрезать пробелы с двух сторон", + "TEXT_TRIM_OPERATOR_LEFT": "обрезать пробелы слева", + "TEXT_TRIM_OPERATOR_RIGHT": "обрезать пробелы справа", + "TEXT_PRINT_TITLE": "напечатать %1", + "TEXT_PRINT_TOOLTIP": "Печатает текст, число или другой объект.", + "TEXT_PROMPT_TYPE_TEXT": "запросить текст с подсказкой", + "TEXT_PROMPT_TYPE_NUMBER": "запросить число с подсказкой", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Запросить у пользователя число.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Запросить у пользователя текст.", + "TEXT_COUNT_MESSAGE0": "подсчитать количество %1 в %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Подсчитать, сколько раз отрывок текста появляется в другом тексте.", + "TEXT_REPLACE_MESSAGE0": "заменить %1 на %2 в %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Заменить все вхождения некоторого текста другим текстом.", + "TEXT_REVERSE_MESSAGE0": "изменить порядок на обратный %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Меняет порядок символов в тексте на обратный.", + "LISTS_CREATE_EMPTY_TITLE": "создать пустой список", + "LISTS_CREATE_EMPTY_TOOLTIP": "Возвращает список длины 0, не содержащий данных", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Создаёт список с любым числом элементов.", + "LISTS_CREATE_WITH_INPUT_WITH": "создать список из", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "список", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Добавьте, удалите, переставьте элементы для переделки блока списка.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Добавляет элемент к списку.", + "LISTS_REPEAT_TOOLTIP": "Создаёт список, состоящий из заданного числа копий элемента.", + "LISTS_REPEAT_TITLE": "создать список из элемента %1, повторяющегося %2 раз", + "LISTS_LENGTH_TITLE": "длина %1", + "LISTS_LENGTH_TOOLTIP": "Возвращает длину списка.", + "LISTS_ISEMPTY_TITLE": "%1 пуст", + "LISTS_ISEMPTY_TOOLTIP": "Возвращает значение истина, если список пуст.", + "LISTS_INLIST": "в списке", + "LISTS_INDEX_OF_FIRST": "найти первое вхождение элемента", + "LISTS_INDEX_OF_LAST": "найти последнее вхождение элемента", + "LISTS_INDEX_OF_TOOLTIP": "Возвращает номер позиции первого/последнего вхождения элемента в списке. Возвращает %1, если элемент не найден.", + "LISTS_GET_INDEX_GET": "взять", + "LISTS_GET_INDEX_GET_REMOVE": "взять и удалить", + "LISTS_GET_INDEX_REMOVE": "удалить", + "LISTS_GET_INDEX_FROM_END": "№ с конца", + "LISTS_GET_INDEX_FIRST": "первый", + "LISTS_GET_INDEX_LAST": "последний", + "LISTS_GET_INDEX_RANDOM": "произвольный", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 - первый элемент.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 - последний элемент.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Возвращает элемент в указанной позиции списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Возвращает первый элемент списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Возвращает последний элемент списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Возвращает случайный элемент списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Удаляет и возвращает элемент в указанной позиции списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Удаляет и возвращает первый элемент списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Удаляет и возвращает последний элемент списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Удаляет и возвращает случайный элемент списка.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Удаляет элемент в указанной позиции списка.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Удаляет первый элемент списка.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Удаляет последний элемент списка.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Удаляет случайный элемент списка.", + "LISTS_SET_INDEX_SET": "присвоить", + "LISTS_SET_INDEX_INSERT": "вставить в", + "LISTS_SET_INDEX_INPUT_TO": "=", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Присваивает значение элементу в указанной позиции списка.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Присваивает значение первому элементу списка.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Присваивает значение последнему элементу списка.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Присваивает значение случайному элементу списка.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Вставляет элемент в указанной позиции списка.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Вставляет элемент в начало списка.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Добавляет элемент в конец списка.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Вставляет элемент в случайное место в списке.", + "LISTS_GET_SUBLIST_START_FROM_START": "взять подсписок с №", + "LISTS_GET_SUBLIST_START_FROM_END": "взять подсписок с № с конца", + "LISTS_GET_SUBLIST_START_FIRST": "взять подсписок с первого", + "LISTS_GET_SUBLIST_END_FROM_START": "по №", + "LISTS_GET_SUBLIST_END_FROM_END": "по № с конца", + "LISTS_GET_SUBLIST_END_LAST": "по последний", + "LISTS_GET_SUBLIST_TOOLTIP": "Создаёт копию указанной части списка.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "сортировать %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Сортировать копию списка.", + "LISTS_SORT_ORDER_ASCENDING": "по возрастанию", + "LISTS_SORT_ORDER_DESCENDING": "по убыванию", + "LISTS_SORT_TYPE_NUMERIC": "числовая", + "LISTS_SORT_TYPE_TEXT": "по алфавиту", + "LISTS_SORT_TYPE_IGNORECASE": "по алфавиту, без учёта регистра", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "сделать список из текста", + "LISTS_SPLIT_TEXT_FROM_LIST": "собрать текст из списка", + "LISTS_SPLIT_WITH_DELIMITER": "с разделителем", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Разбивает текст в список текстов, по разделителям.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Соединяет список текстов в один текст с разделителями.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "изменить порядок на обратный %1", + "LISTS_REVERSE_TOOLTIP": "Изменить порядок списка на обратный.", + "VARIABLES_GET_TOOLTIP": "Возвращает значение этой переменной.", + "VARIABLES_GET_CREATE_SET": "Создать блок \"присвоить\" для %1", + "VARIABLES_SET": "присвоить %1 = %2", + "VARIABLES_SET_TOOLTIP": "Присваивает переменной значение вставки.", + "VARIABLES_SET_CREATE_GET": "Создать вставку %1", + "PROCEDURES_DEFNORETURN_TITLE": "чтобы", + "PROCEDURES_DEFNORETURN_PROCEDURE": "выполнить что-то", + "PROCEDURES_BEFORE_PARAMS": "с:", + "PROCEDURES_CALL_BEFORE_PARAMS": "с:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Создаёт процедуру, не возвращающую значение.", + "PROCEDURES_DEFNORETURN_COMMENT": "Опишите эту функцию…", + "PROCEDURES_DEFRETURN_RETURN": "вернуть", + "PROCEDURES_DEFRETURN_TOOLTIP": "Создаёт процедуру, возвращающую значение.", + "PROCEDURES_ALLOW_STATEMENTS": "разрешить операторы", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Предупреждение: эта функция имеет повторяющиеся параметры.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://ru.wikipedia.org/wiki/Подпрограмма", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Исполняет определённую пользователем процедуру '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://ru.wikipedia.org/wiki/Подпрограмма", + "PROCEDURES_CALLRETURN_TOOLTIP": "Исполняет определённую пользователем процедуру '%1' и возвращает вычисленное значение.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "параметры", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Добавить, удалить или изменить порядок входных параметров для этой функции.", + "PROCEDURES_MUTATORARG_TITLE": "имя параметра:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Добавить входной параметр в функцию.", + "PROCEDURES_HIGHLIGHT_DEF": "Выделить определение процедуры", + "PROCEDURES_CREATE_DO": "Создать вызов '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Если первое значение истинно, возвращает второе значение.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Предупреждение: Этот блок может использоваться только внутри определения функции.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Напишите здесь что-нибудь...", + "WORKSPACE_ARIA_LABEL": "Рабочая область Blockly", + "COLLAPSED_WARNINGS_WARNING": "Свёрнутые блоки содержат предупреждения.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Отмена" +} diff --git a/msg/json/sc.json b/msg/json/sc.json index 5a9c241aee3..7c3a65421d5 100644 --- a/msg/json/sc.json +++ b/msg/json/sc.json @@ -1,299 +1,299 @@ -{ - "@metadata": { - "authors": [ - "Taxandru", - "Uharteko", - "Via maxima" - ] - }, - "VARIABLES_DEFAULT_NAME": "item", - "TODAY": "Oe", - "DUPLICATE_BLOCK": "Dùplica", - "ADD_COMMENT": "Agiunghe unu cumentu", - "REMOVE_COMMENT": "Fùlia unu cumentu", - "EXTERNAL_INPUTS": "Intradas esternas", - "INLINE_INPUTS": "Intradas in lìnia", - "DELETE_BLOCK": "Fùlia Blocu", - "DELETE_X_BLOCKS": "Fulia %1 Blocus", - "DELETE_ALL_BLOCKS": "Scancellu su %1 de is brocus?", - "CLEAN_UP": "Lìmpia is brocus", - "COLLAPSE_BLOCK": "Serra e stringi Brocu", - "COLLAPSE_ALL": "Serra e stringi Brocus", - "EXPAND_BLOCK": "Aberi Brocu", - "EXPAND_ALL": "Aberi Brocus", - "DISABLE_BLOCK": "Disabìlita Blocu", - "ENABLE_BLOCK": "Abìlita Blocu", - "HELP": "Agiudu", - "CHANGE_VALUE_TITLE": "Muda valori:", - "RENAME_VARIABLE": "Muda nòmini a variabili...", - "RENAME_VARIABLE_TITLE": "A is variabilis '%1' muda nòmini a:", - "NEW_VARIABLE": "Variabili noa...", - "NEW_VARIABLE_TITLE": "Nòmini de sa variabili noa:", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Scebera unu colori de sa tauledda.", - "COLOUR_RANDOM_TITLE": "Unu colori a brítiu", - "COLOUR_RANDOM_TOOLTIP": "Scebera unu colori a brítiu.", - "COLOUR_RGB_TITLE": "colora cun", - "COLOUR_RGB_RED": "arrùbiu", - "COLOUR_RGB_GREEN": "birdi", - "COLOUR_RGB_BLUE": "blue", - "COLOUR_RGB_TOOLTIP": "Cuncorda unu colori cun su tanti de arrubiu, birdi, e blue. Totu is valoris depint essi intra 0 e 100.", - "COLOUR_BLEND_TITLE": "mestura", - "COLOUR_BLEND_COLOUR1": "colori 1", - "COLOUR_BLEND_COLOUR2": "colori 2", - "COLOUR_BLEND_RATIO": "raportu", - "COLOUR_BLEND_TOOLTIP": "Amestura duus coloris cun unu raportu (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "repiti %1 bortas", - "CONTROLS_REPEAT_INPUT_DO": "fai", - "CONTROLS_REPEAT_TOOLTIP": "Fait pariga de cumandus prus bortas.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repiti interis", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repiti fintzas", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Interis su valori est berus, tandu fai pariga de cumandus.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Interis su valori est frassu, tandu fai pariga de cumandus.", - "CONTROLS_FOR_TOOLTIP": "Fait pigai a sa variàbili \"%1\" i valoris de su primu numeru a s'urtimu, a su passu impostau e fait su brocu.", - "CONTROLS_FOR_TITLE": "po %1 de %2 fintzas %3 a passus de %4", - "CONTROLS_FOREACH_TITLE": "po dònnia item %1 in lista %2", - "CONTROLS_FOREACH_TOOLTIP": "Po dònnia item in sa lista, ponit sa variàbili '%1' pari a s'item, e tandu fait pariga de cumandus.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "sàrtiat a foras de sa lòriga", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "sighit cun su repicu afatànti", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Bessit de sa lòriga.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sartiat su chi abarrat de sa loriga, e sighit cun su repicu afatànti.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Amonestu: Custu brocu ddu podis ponni sceti aintru de una lòriga.", - "CONTROLS_IF_TOOLTIP_1": "Si su valori est berus, tandu fait pariga de cumandus.", - "CONTROLS_IF_TOOLTIP_2": "Si su valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, fai su segundu brocu de is cumandus.", - "CONTROLS_IF_TOOLTIP_3": "Si su primu valori est beridadi, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est beridadi, fai su segundu brocu de is cumandus.", - "CONTROLS_IF_TOOLTIP_4": "Si su primu valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est berus, fai su segundu brocu de is cumandus. Si mancu unu valori est berus, tandu fai s'urtimu brocu de is cumandus.", - "CONTROLS_IF_MSG_IF": "si", - "CONTROLS_IF_MSG_ELSEIF": "sinuncas si", - "CONTROLS_IF_MSG_ELSE": "sinuncas", - "CONTROLS_IF_IF_TOOLTIP": "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu si.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Aciungi una cunditzioni a su brocu si.", - "CONTROLS_IF_ELSE_TOOLTIP": "Aciungi una urtima cunditzioni piga-totu a su brocu si.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Torrat berus si is inputs funt unu uguali a s'àteru.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Torrat berus si is inputs non funt unu uguali a s'àteru.", - "LOGIC_COMPARE_TOOLTIP_LT": "Torrat berus si su primu input est prus piticu de s'àteru.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Torrat berus si su primu input est prus piticu o uguali a s'àteru.", - "LOGIC_COMPARE_TOOLTIP_GT": "Torrat berus si su primu input est prus mannu de s'àteru.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Torrat berus si su primu input est prus mannu o uguali a s'àteru.", - "LOGIC_OPERATION_TOOLTIP_AND": "Torrat berus si ambos is inputs funt berus.", - "LOGIC_OPERATION_AND": "and", - "LOGIC_OPERATION_TOOLTIP_OR": "Torrat berus si assumancu unu de is inputs est berus.", - "LOGIC_OPERATION_OR": "or", - "LOGIC_NEGATE_TITLE": "non %1", - "LOGIC_NEGATE_TOOLTIP": "Torrat berus si s'input est frassu. Torrat frassu si s'input est berus.", - "LOGIC_BOOLEAN_TRUE": "berus", - "LOGIC_BOOLEAN_FALSE": "frassu", - "LOGIC_BOOLEAN_TOOLTIP": "Torrat berus o frassu.", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Torrat null.", - "LOGIC_TERNARY_CONDITION": "cumpròa", - "LOGIC_TERNARY_IF_TRUE": "si berus", - "LOGIC_TERNARY_IF_FALSE": "si frassu", - "LOGIC_TERNARY_TOOLTIP": "‎Cumproa sa cunditzioni in 'cumproa'. Si sa cunditzioni est berus, torrat su valori 'si berus'; sinuncas torrat su valori 'si frassu'.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Unu numeru", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Torrat sa summa de is duus nùmerus.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Torrat sa diferèntzia de is duus nùmerus.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Torrat su produtu de is duus nùmerus.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Torrat su cuotzienti de is duus nùmerus.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Torrat su primu numeru artziau a sa potenza de su segundu nùmeru.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "arraxina cuadra", - "MATH_SINGLE_TOOLTIP_ROOT": "Torrat s'arraxina cuadra de unu numeru.", - "MATH_SINGLE_OP_ABSOLUTE": "assolutu", - "MATH_SINGLE_TOOLTIP_ABS": "Torrat su valori assolútu de unu numeru.", - "MATH_SINGLE_TOOLTIP_NEG": "Torrat su valori negau de unu numeru.", - "MATH_SINGLE_TOOLTIP_LN": "Torrat su logaritmu naturali de unu numeru.", - "MATH_SINGLE_TOOLTIP_LOG10": "Torrat su logaritmu a basi 10 de unu numeru.", - "MATH_SINGLE_TOOLTIP_EXP": "Torrat (e) a sa potèntzia de unu numeru.", - "MATH_SINGLE_TOOLTIP_POW10": "Torrat (10) a sa potèntzia de unu numeru.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Torrat su sinu de unu gradu (no radianti).", - "MATH_TRIG_TOOLTIP_COS": "Torrat su cosinu de unu gradu (no radianti).", - "MATH_TRIG_TOOLTIP_TAN": "Torrat sa tangenti de unu gradu (no radianti).", - "MATH_TRIG_TOOLTIP_ASIN": "Torrat su arcsinu de unu numeru.", - "MATH_TRIG_TOOLTIP_ACOS": "Torrat su arccosinu de unu numeru.", - "MATH_TRIG_TOOLTIP_ATAN": "Torrat su arctangenti de unu numeru.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Torrat una de is costantis comunas: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), o ∞ (infiniu).", - "MATH_IS_EVEN": "est paris", - "MATH_IS_ODD": "est dísparu", - "MATH_IS_PRIME": "est primu", - "MATH_IS_WHOLE": "est intreu", - "MATH_IS_POSITIVE": "est positivu", - "MATH_IS_NEGATIVE": "est negativu", - "MATH_IS_DIVISIBLE_BY": "fait a ddu dividi po", - "MATH_IS_TOOLTIP": "Cumprova si unu numeru est paris, dìsparis, primu, intreu, positivu, negativu o si fait a ddu dividi po unu numeru giau. Torrat berus o frassu.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "muda %1 de %2", - "MATH_CHANGE_TOOLTIP": "Aciungi unu numeru a sa variabili '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Arretunda unu numeru faci a susu o faci a bàsciu.", - "MATH_ROUND_OPERATOR_ROUND": "arretunda", - "MATH_ROUND_OPERATOR_ROUNDUP": "Arretunda faci a susu", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "arretunda faci a bàsciu.", - "MATH_ONLIST_OPERATOR_SUM": "suma sa lista", - "MATH_ONLIST_TOOLTIP_SUM": "Torrat sa suma de totu is numerus de sa lista.", - "MATH_ONLIST_OPERATOR_MIN": "minimu de sa lista", - "MATH_ONLIST_TOOLTIP_MIN": "Torrat su numeru prus piticu de sa lista.", - "MATH_ONLIST_OPERATOR_MAX": "massimu de sa lista", - "MATH_ONLIST_TOOLTIP_MAX": "Torrat su numeru prus mannu de sa lista", - "MATH_ONLIST_OPERATOR_AVERAGE": "mèdia de sa lista", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Torrat sa mèdia (aritimètica) de is valoris de sa lista.", - "MATH_ONLIST_OPERATOR_MEDIAN": "medianu de sa lista", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Torrat su numeru medianu de sa lista.", - "MATH_ONLIST_OPERATOR_MODE": "modas de sa lista", - "MATH_ONLIST_TOOLTIP_MODE": "Torrat una lista de is itams prus frecuentis de sa lista.", - "MATH_ONLIST_OPERATOR_STD_DEV": "deviadura standard de sa lista", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Torrat sa deviadura standard de sa lista.", - "MATH_ONLIST_OPERATOR_RANDOM": "unu item a brìtiu de sa lista", - "MATH_ONLIST_TOOLTIP_RANDOM": "Torrat unu item a brìtiu de sa lista.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "arrestu de %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Torrat s'arrestu de sa divisioni de duus numerus.", - "MATH_CONSTRAIN_TITLE": "custringi %1 de %2 a %3", - "MATH_CONSTRAIN_TOOLTIP": "Custringi unu numeru aintru de is liminaxus giaus (cumprendius).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "numeru intreu a brítiu de %1 a %2", - "MATH_RANDOM_INT_TOOLTIP": "Torrat unu numeru intreu a brìtiu intra duus nùmerus giaus (cumpresus).", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "una fratzioni a brìtiu", - "MATH_RANDOM_FLOAT_TOOLTIP": "Torrat una fratzioni a brìtiu intra 0.0 (cumpresu) e 1.0 (bogau).", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Una lìtera, paràula, o linia de testu.", - "TEXT_JOIN_TITLE_CREATEWITH": "scri testu cun", - "TEXT_JOIN_TOOLTIP": "Fait unu testu ponendi a pari parigas de items.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "auni a pari", - "TEXT_CREATE_JOIN_TOOLTIP": "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu de testu.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Acciungi unu item a su testu.", - "TEXT_APPEND_TITLE": "a %1 acciungi su testu %2", - "TEXT_APPEND_TOOLTIP": "Aciungit testu a sa variàbili '%1'.", - "TEXT_LENGTH_TITLE": "longària de %1", - "TEXT_LENGTH_TOOLTIP": "Torrat su numeru de lìteras (cun is spàtzius) in su testu giau.", - "TEXT_ISEMPTY_TITLE": "%1 est buidu", - "TEXT_ISEMPTY_TOOLTIP": "Torrat berus si su testu giau est buidu.", - "TEXT_INDEXOF_TOOLTIP": "Torrat s'indixi de sa primu/urtima ocasioni de su primu testu in su segundu testu. Torrat %1 si su testu no ddu agatat.", - "TEXT_INDEXOF_TITLE": "in su testu %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "circa prima ocasioni de su testu", - "TEXT_INDEXOF_OPERATOR_LAST": "circa urtima ocasioni de su testu", - "TEXT_CHARAT_FROM_START": "piga sa lìtera #", - "TEXT_CHARAT_FROM_END": "piga sa lìtera # de sa fini", - "TEXT_CHARAT_FIRST": "piga sa prima lìtera", - "TEXT_CHARAT_LAST": "piga s'urtima lìtera", - "TEXT_CHARAT_RANDOM": "piga una lìtera a brìtiu", - "TEXT_CHARAT_TOOLTIP": "Torrat sa lìtera de su postu giau.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Torrat su testu inditau.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in su testu", - "TEXT_GET_SUBSTRING_START_FROM_START": "piga suta-stringa de sa lìtera #", - "TEXT_GET_SUBSTRING_START_FROM_END": "piga suta-stringa de sa lìtera # fintzas a fini", - "TEXT_GET_SUBSTRING_START_FIRST": "piga suta-stringa de sa primu lìtera", - "TEXT_GET_SUBSTRING_END_FROM_START": "a sa lìtera #", - "TEXT_GET_SUBSTRING_END_FROM_END": "a sa lìtera # de sa fini", - "TEXT_GET_SUBSTRING_END_LAST": "a s'urtima lìtera", - "TEXT_CHANGECASE_TOOLTIP": "Torrat una copia de su testu inditau mudendi mauschínu/minúdu.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "a mauschínu", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "a minúdu", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "cun Primu lìtera a Mauschínu", - "TEXT_TRIM_TOOLTIP": "Torrat una copia de su testu bogaus is spàtzius de unu o de ambus is càbudus.", - "TEXT_TRIM_OPERATOR_BOTH": "bogat spàtzius de ambus càbudus de", - "TEXT_TRIM_OPERATOR_LEFT": "bogat spàtzius de su càbudu de manca de", - "TEXT_TRIM_OPERATOR_RIGHT": "bogat spàtzius de su càbudu de dereta de", - "TEXT_PRINT_TITLE": "scri %1", - "TEXT_PRINT_TOOLTIP": "Scri su testu, numeru o àteru valori.", - "TEXT_PROMPT_TYPE_TEXT": "pregonta po su testu", - "TEXT_PROMPT_TYPE_NUMBER": "pregonta po unu numeru", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Pregonta unu nùmeru a s'impitadore.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Pregonta testu a s'impitadore.", - "LISTS_CREATE_EMPTY_TITLE": "fait una lista buida", - "LISTS_CREATE_EMPTY_TOOLTIP": "Torrat una lista, de longària 0, chena records de datus.", - "LISTS_CREATE_WITH_TOOLTIP": "Fait una lista cun calisiollat numeru de items.", - "LISTS_CREATE_WITH_INPUT_WITH": "fait una lista cun", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu lista.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Acciungi unu item a sa lista.", - "LISTS_REPEAT_TOOLTIP": "Fait una lista cun unu numeru giau repitiu su tanti de is bortas inditadas.", - "LISTS_REPEAT_TITLE": "fait una lista cun item %1 repitiu %2 bortas", - "LISTS_LENGTH_TITLE": "longària de %1", - "LISTS_LENGTH_TOOLTIP": "Torrat sa longària de una lista.", - "LISTS_ISEMPTY_TITLE": "%1 est buidu", - "LISTS_ISEMPTY_TOOLTIP": "Torrat berus si sa lista est buida.", - "LISTS_INLIST": "in lista", - "LISTS_INDEX_OF_FIRST": "circa prima ocasioni de s'item", - "LISTS_INDEX_OF_LAST": "circa urtima ocasioni de s'item", - "LISTS_INDEX_OF_TOOLTIP": "Torrat s'indixi de sa primu/urtima ocasioni de s'item in sa lista. Torrat %1 si s'item non s'agatat.", - "LISTS_GET_INDEX_GET": "piga", - "LISTS_GET_INDEX_GET_REMOVE": "piga e fùlia", - "LISTS_GET_INDEX_REMOVE": "fùlia", - "LISTS_GET_INDEX_FROM_END": "# de sa fini", - "LISTS_GET_INDEX_FIRST": "primu", - "LISTS_GET_INDEX_LAST": "urtimu", - "LISTS_GET_INDEX_RANDOM": "a brìtiu (random)", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 est po su primu elementu.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 est po s'urtimu elementu.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Torrat s'elementu de su postu inditau de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Torrat su primu elementu de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Torrat s'urtimu elementu de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Torrat un'elementu a brìtiu de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fùliat e torrat s'elementu de su postu inditau de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fùliat e torrat su primu elementu de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fùliat e torrat s'urtimu elementu de una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fùliat e torrat un'elementu a brìtiu de una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fùliat s'elementu de su postu inditau de una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fùliat su primu elementu de una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fùliat s'urtimu elementu de una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Fùliat unu elementu a brìtiu de una lista.", - "LISTS_SET_INDEX_SET": "imposta", - "LISTS_SET_INDEX_INSERT": "inserta a", - "LISTS_SET_INDEX_INPUT_TO": "a", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Impostat s'elementu in su postu inditau de una lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Impostat su primu elementu in una lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Impostat s'urtimu elementu in una lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Impostat unu elementu random in una lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insertat s'elementu in su postu inditau in una lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insertat s'elementu a su cumintzu de sa lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Aciungit s'elementu a sa fini de sa lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Aciungit s'elementu a brítiu in sa lista.", - "LISTS_GET_SUBLIST_START_FROM_START": "bogandi suta-lista de #", - "LISTS_GET_SUBLIST_START_FROM_END": "bogandi suta-lista de # de sa fini.", - "LISTS_GET_SUBLIST_START_FIRST": "bogandi suta-lista de su primu", - "LISTS_GET_SUBLIST_END_FROM_START": "fintzas a #", - "LISTS_GET_SUBLIST_END_FROM_END": "a # de sa fini", - "LISTS_GET_SUBLIST_END_LAST": "a s'urtimu", - "LISTS_GET_SUBLIST_TOOLTIP": "Fait una copia de sa parti inditada de sa lista.", - "LISTS_SPLIT_LIST_FROM_TEXT": "fai una lista de unu testu", - "LISTS_SPLIT_TEXT_FROM_LIST": "fai unu testu de una lista", - "LISTS_SPLIT_WITH_DELIMITER": "cun separadori", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividi su testu in un'elencu de testus, firmendi po dònnia separadori.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Auni una lista de testus in d-unu sceti, ponendi separadoris.", - "VARIABLES_GET_TOOLTIP": "Torrat su valori de custa variabili.", - "VARIABLES_GET_CREATE_SET": "Fait 'imposta %1'", - "VARIABLES_SET": "imposta %1 a %2", - "VARIABLES_SET_TOOLTIP": "Imposta custa variabili uguali a s'input.", - "VARIABLES_SET_CREATE_GET": "Fait 'piga %1'", - "PROCEDURES_DEFNORETURN_TITLE": "po", - "PROCEDURES_DEFNORETURN_PROCEDURE": "fait calincuna cosa", - "PROCEDURES_BEFORE_PARAMS": "con:", - "PROCEDURES_CALL_BEFORE_PARAMS": "cun", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Fait una funtzioni chena output.", - "PROCEDURES_DEFRETURN_RETURN": "torrat", - "PROCEDURES_DEFRETURN_TOOLTIP": "Fait una funtzioni cun output.", - "PROCEDURES_ALLOW_STATEMENTS": "permiti decraratzionis", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Amonestu: Custa funtzioni tenit parametrus duplicaus.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Arròllia sa funtzione '%1' cuncordada dae s'impitadore.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_CALLRETURN_TOOLTIP": "Arròllia sa funtzione '%1' cuncordada dae s'impitadore e imprea s'output suu.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "inputs", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Aciungi, fùlia, o assenta is inputs a custa funtzioni.", - "PROCEDURES_MUTATORARG_TITLE": "nomini input:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Aciungi un input a sa funtzioni.", - "PROCEDURES_HIGHLIGHT_DEF": "Marca sa definitzioni de funtzioni.", - "PROCEDURES_CREATE_DO": "Ingenerau'%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Si unu valori est berus, tandu torrat unu segundu valori.", - "PROCEDURES_IFRETURN_WARNING": "Amonestu: Custu brocu ddu podis ponni sceti aintru de una funtzioni.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Annulla" -} +{ + "@metadata": { + "authors": [ + "Taxandru", + "Uharteko", + "Via maxima" + ] + }, + "VARIABLES_DEFAULT_NAME": "item", + "TODAY": "Oe", + "DUPLICATE_BLOCK": "Dùplica", + "ADD_COMMENT": "Agiunghe unu cumentu", + "REMOVE_COMMENT": "Fùlia unu cumentu", + "EXTERNAL_INPUTS": "Intradas esternas", + "INLINE_INPUTS": "Intradas in lìnia", + "DELETE_BLOCK": "Fùlia Blocu", + "DELETE_X_BLOCKS": "Fulia %1 Blocus", + "DELETE_ALL_BLOCKS": "Scancellu su %1 de is brocus?", + "CLEAN_UP": "Lìmpia is brocus", + "COLLAPSE_BLOCK": "Serra e stringi Brocu", + "COLLAPSE_ALL": "Serra e stringi Brocus", + "EXPAND_BLOCK": "Aberi Brocu", + "EXPAND_ALL": "Aberi Brocus", + "DISABLE_BLOCK": "Disabìlita Blocu", + "ENABLE_BLOCK": "Abìlita Blocu", + "HELP": "Agiudu", + "CHANGE_VALUE_TITLE": "Muda valori:", + "RENAME_VARIABLE": "Muda nòmini a variabili...", + "RENAME_VARIABLE_TITLE": "A is variabilis '%1' muda nòmini a:", + "NEW_VARIABLE": "Variabili noa...", + "NEW_VARIABLE_TITLE": "Nòmini de sa variabili noa:", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Scebera unu colori de sa tauledda.", + "COLOUR_RANDOM_TITLE": "Unu colori a brítiu", + "COLOUR_RANDOM_TOOLTIP": "Scebera unu colori a brítiu.", + "COLOUR_RGB_TITLE": "colora cun", + "COLOUR_RGB_RED": "arrùbiu", + "COLOUR_RGB_GREEN": "birdi", + "COLOUR_RGB_BLUE": "blue", + "COLOUR_RGB_TOOLTIP": "Cuncorda unu colori cun su tanti de arrubiu, birdi, e blue. Totu is valoris depint essi intra 0 e 100.", + "COLOUR_BLEND_TITLE": "mestura", + "COLOUR_BLEND_COLOUR1": "colori 1", + "COLOUR_BLEND_COLOUR2": "colori 2", + "COLOUR_BLEND_RATIO": "raportu", + "COLOUR_BLEND_TOOLTIP": "Amestura duus coloris cun unu raportu (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "repiti %1 bortas", + "CONTROLS_REPEAT_INPUT_DO": "fai", + "CONTROLS_REPEAT_TOOLTIP": "Fait pariga de cumandus prus bortas.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "repiti interis", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repiti fintzas", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Interis su valori est berus, tandu fai pariga de cumandus.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Interis su valori est frassu, tandu fai pariga de cumandus.", + "CONTROLS_FOR_TOOLTIP": "Fait pigai a sa variàbili \"%1\" i valoris de su primu numeru a s'urtimu, a su passu impostau e fait su brocu.", + "CONTROLS_FOR_TITLE": "po %1 de %2 fintzas %3 a passus de %4", + "CONTROLS_FOREACH_TITLE": "po dònnia item %1 in lista %2", + "CONTROLS_FOREACH_TOOLTIP": "Po dònnia item in sa lista, ponit sa variàbili '%1' pari a s'item, e tandu fait pariga de cumandus.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "sàrtiat a foras de sa lòriga", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "sighit cun su repicu afatànti", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Bessit de sa lòriga.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sartiat su chi abarrat de sa loriga, e sighit cun su repicu afatànti.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Amonestu: Custu brocu ddu podis ponni sceti aintru de una lòriga.", + "CONTROLS_IF_TOOLTIP_1": "Si su valori est berus, tandu fait pariga de cumandus.", + "CONTROLS_IF_TOOLTIP_2": "Si su valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, fai su segundu brocu de is cumandus.", + "CONTROLS_IF_TOOLTIP_3": "Si su primu valori est beridadi, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est beridadi, fai su segundu brocu de is cumandus.", + "CONTROLS_IF_TOOLTIP_4": "Si su primu valori est berus, tandu fai su primu brocu de is cumandus. Sinuncas, si su segundu valori est berus, fai su segundu brocu de is cumandus. Si mancu unu valori est berus, tandu fai s'urtimu brocu de is cumandus.", + "CONTROLS_IF_MSG_IF": "si", + "CONTROLS_IF_MSG_ELSEIF": "sinuncas si", + "CONTROLS_IF_MSG_ELSE": "sinuncas", + "CONTROLS_IF_IF_TOOLTIP": "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu si.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Aciungi una cunditzioni a su brocu si.", + "CONTROLS_IF_ELSE_TOOLTIP": "Aciungi una urtima cunditzioni piga-totu a su brocu si.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Torrat berus si is inputs funt unu uguali a s'àteru.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Torrat berus si is inputs non funt unu uguali a s'àteru.", + "LOGIC_COMPARE_TOOLTIP_LT": "Torrat berus si su primu input est prus piticu de s'àteru.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Torrat berus si su primu input est prus piticu o uguali a s'àteru.", + "LOGIC_COMPARE_TOOLTIP_GT": "Torrat berus si su primu input est prus mannu de s'àteru.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Torrat berus si su primu input est prus mannu o uguali a s'àteru.", + "LOGIC_OPERATION_TOOLTIP_AND": "Torrat berus si ambos is inputs funt berus.", + "LOGIC_OPERATION_AND": "and", + "LOGIC_OPERATION_TOOLTIP_OR": "Torrat berus si assumancu unu de is inputs est berus.", + "LOGIC_OPERATION_OR": "or", + "LOGIC_NEGATE_TITLE": "non %1", + "LOGIC_NEGATE_TOOLTIP": "Torrat berus si s'input est frassu. Torrat frassu si s'input est berus.", + "LOGIC_BOOLEAN_TRUE": "berus", + "LOGIC_BOOLEAN_FALSE": "frassu", + "LOGIC_BOOLEAN_TOOLTIP": "Torrat berus o frassu.", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Torrat null.", + "LOGIC_TERNARY_CONDITION": "cumpròa", + "LOGIC_TERNARY_IF_TRUE": "si berus", + "LOGIC_TERNARY_IF_FALSE": "si frassu", + "LOGIC_TERNARY_TOOLTIP": "‎Cumproa sa cunditzioni in 'cumproa'. Si sa cunditzioni est berus, torrat su valori 'si berus'; sinuncas torrat su valori 'si frassu'.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Unu numeru", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Torrat sa summa de is duus nùmerus.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Torrat sa diferèntzia de is duus nùmerus.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Torrat su produtu de is duus nùmerus.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Torrat su cuotzienti de is duus nùmerus.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Torrat su primu numeru artziau a sa potenza de su segundu nùmeru.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "arraxina cuadra", + "MATH_SINGLE_TOOLTIP_ROOT": "Torrat s'arraxina cuadra de unu numeru.", + "MATH_SINGLE_OP_ABSOLUTE": "assolutu", + "MATH_SINGLE_TOOLTIP_ABS": "Torrat su valori assolútu de unu numeru.", + "MATH_SINGLE_TOOLTIP_NEG": "Torrat su valori negau de unu numeru.", + "MATH_SINGLE_TOOLTIP_LN": "Torrat su logaritmu naturali de unu numeru.", + "MATH_SINGLE_TOOLTIP_LOG10": "Torrat su logaritmu a basi 10 de unu numeru.", + "MATH_SINGLE_TOOLTIP_EXP": "Torrat (e) a sa potèntzia de unu numeru.", + "MATH_SINGLE_TOOLTIP_POW10": "Torrat (10) a sa potèntzia de unu numeru.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Torrat su sinu de unu gradu (no radianti).", + "MATH_TRIG_TOOLTIP_COS": "Torrat su cosinu de unu gradu (no radianti).", + "MATH_TRIG_TOOLTIP_TAN": "Torrat sa tangenti de unu gradu (no radianti).", + "MATH_TRIG_TOOLTIP_ASIN": "Torrat su arcsinu de unu numeru.", + "MATH_TRIG_TOOLTIP_ACOS": "Torrat su arccosinu de unu numeru.", + "MATH_TRIG_TOOLTIP_ATAN": "Torrat su arctangenti de unu numeru.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Torrat una de is costantis comunas: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), o ∞ (infiniu).", + "MATH_IS_EVEN": "est paris", + "MATH_IS_ODD": "est dísparu", + "MATH_IS_PRIME": "est primu", + "MATH_IS_WHOLE": "est intreu", + "MATH_IS_POSITIVE": "est positivu", + "MATH_IS_NEGATIVE": "est negativu", + "MATH_IS_DIVISIBLE_BY": "fait a ddu dividi po", + "MATH_IS_TOOLTIP": "Cumprova si unu numeru est paris, dìsparis, primu, intreu, positivu, negativu o si fait a ddu dividi po unu numeru giau. Torrat berus o frassu.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "muda %1 de %2", + "MATH_CHANGE_TOOLTIP": "Aciungi unu numeru a sa variabili '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Arretunda unu numeru faci a susu o faci a bàsciu.", + "MATH_ROUND_OPERATOR_ROUND": "arretunda", + "MATH_ROUND_OPERATOR_ROUNDUP": "Arretunda faci a susu", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "arretunda faci a bàsciu.", + "MATH_ONLIST_OPERATOR_SUM": "suma sa lista", + "MATH_ONLIST_TOOLTIP_SUM": "Torrat sa suma de totu is numerus de sa lista.", + "MATH_ONLIST_OPERATOR_MIN": "minimu de sa lista", + "MATH_ONLIST_TOOLTIP_MIN": "Torrat su numeru prus piticu de sa lista.", + "MATH_ONLIST_OPERATOR_MAX": "massimu de sa lista", + "MATH_ONLIST_TOOLTIP_MAX": "Torrat su numeru prus mannu de sa lista", + "MATH_ONLIST_OPERATOR_AVERAGE": "mèdia de sa lista", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Torrat sa mèdia (aritimètica) de is valoris de sa lista.", + "MATH_ONLIST_OPERATOR_MEDIAN": "medianu de sa lista", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Torrat su numeru medianu de sa lista.", + "MATH_ONLIST_OPERATOR_MODE": "modas de sa lista", + "MATH_ONLIST_TOOLTIP_MODE": "Torrat una lista de is itams prus frecuentis de sa lista.", + "MATH_ONLIST_OPERATOR_STD_DEV": "deviadura standard de sa lista", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Torrat sa deviadura standard de sa lista.", + "MATH_ONLIST_OPERATOR_RANDOM": "unu item a brìtiu de sa lista", + "MATH_ONLIST_TOOLTIP_RANDOM": "Torrat unu item a brìtiu de sa lista.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "arrestu de %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Torrat s'arrestu de sa divisioni de duus numerus.", + "MATH_CONSTRAIN_TITLE": "custringi %1 de %2 a %3", + "MATH_CONSTRAIN_TOOLTIP": "Custringi unu numeru aintru de is liminaxus giaus (cumprendius).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "numeru intreu a brítiu de %1 a %2", + "MATH_RANDOM_INT_TOOLTIP": "Torrat unu numeru intreu a brìtiu intra duus nùmerus giaus (cumpresus).", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "una fratzioni a brìtiu", + "MATH_RANDOM_FLOAT_TOOLTIP": "Torrat una fratzioni a brìtiu intra 0.0 (cumpresu) e 1.0 (bogau).", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Una lìtera, paràula, o linia de testu.", + "TEXT_JOIN_TITLE_CREATEWITH": "scri testu cun", + "TEXT_JOIN_TOOLTIP": "Fait unu testu ponendi a pari parigas de items.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "auni a pari", + "TEXT_CREATE_JOIN_TOOLTIP": "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu de testu.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Acciungi unu item a su testu.", + "TEXT_APPEND_TITLE": "a %1 acciungi su testu %2", + "TEXT_APPEND_TOOLTIP": "Aciungit testu a sa variàbili '%1'.", + "TEXT_LENGTH_TITLE": "longària de %1", + "TEXT_LENGTH_TOOLTIP": "Torrat su numeru de lìteras (cun is spàtzius) in su testu giau.", + "TEXT_ISEMPTY_TITLE": "%1 est buidu", + "TEXT_ISEMPTY_TOOLTIP": "Torrat berus si su testu giau est buidu.", + "TEXT_INDEXOF_TOOLTIP": "Torrat s'indixi de sa primu/urtima ocasioni de su primu testu in su segundu testu. Torrat %1 si su testu no ddu agatat.", + "TEXT_INDEXOF_TITLE": "in su testu %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "circa prima ocasioni de su testu", + "TEXT_INDEXOF_OPERATOR_LAST": "circa urtima ocasioni de su testu", + "TEXT_CHARAT_FROM_START": "piga sa lìtera #", + "TEXT_CHARAT_FROM_END": "piga sa lìtera # de sa fini", + "TEXT_CHARAT_FIRST": "piga sa prima lìtera", + "TEXT_CHARAT_LAST": "piga s'urtima lìtera", + "TEXT_CHARAT_RANDOM": "piga una lìtera a brìtiu", + "TEXT_CHARAT_TOOLTIP": "Torrat sa lìtera de su postu giau.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Torrat su testu inditau.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "in su testu", + "TEXT_GET_SUBSTRING_START_FROM_START": "piga suta-stringa de sa lìtera #", + "TEXT_GET_SUBSTRING_START_FROM_END": "piga suta-stringa de sa lìtera # fintzas a fini", + "TEXT_GET_SUBSTRING_START_FIRST": "piga suta-stringa de sa primu lìtera", + "TEXT_GET_SUBSTRING_END_FROM_START": "a sa lìtera #", + "TEXT_GET_SUBSTRING_END_FROM_END": "a sa lìtera # de sa fini", + "TEXT_GET_SUBSTRING_END_LAST": "a s'urtima lìtera", + "TEXT_CHANGECASE_TOOLTIP": "Torrat una copia de su testu inditau mudendi mauschínu/minúdu.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "a mauschínu", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "a minúdu", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "cun Primu lìtera a Mauschínu", + "TEXT_TRIM_TOOLTIP": "Torrat una copia de su testu bogaus is spàtzius de unu o de ambus is càbudus.", + "TEXT_TRIM_OPERATOR_BOTH": "bogat spàtzius de ambus càbudus de", + "TEXT_TRIM_OPERATOR_LEFT": "bogat spàtzius de su càbudu de manca de", + "TEXT_TRIM_OPERATOR_RIGHT": "bogat spàtzius de su càbudu de dereta de", + "TEXT_PRINT_TITLE": "scri %1", + "TEXT_PRINT_TOOLTIP": "Scri su testu, numeru o àteru valori.", + "TEXT_PROMPT_TYPE_TEXT": "pregonta po su testu", + "TEXT_PROMPT_TYPE_NUMBER": "pregonta po unu numeru", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Pregonta unu nùmeru a s'impitadore.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Pregonta testu a s'impitadore.", + "LISTS_CREATE_EMPTY_TITLE": "fait una lista buida", + "LISTS_CREATE_EMPTY_TOOLTIP": "Torrat una lista, de longària 0, chena records de datus.", + "LISTS_CREATE_WITH_TOOLTIP": "Fait una lista cun calisiollat numeru de items.", + "LISTS_CREATE_WITH_INPUT_WITH": "fait una lista cun", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Aciungi, fùlia, o assenta is partis po torrai a sètiu custu brocu lista.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Acciungi unu item a sa lista.", + "LISTS_REPEAT_TOOLTIP": "Fait una lista cun unu numeru giau repitiu su tanti de is bortas inditadas.", + "LISTS_REPEAT_TITLE": "fait una lista cun item %1 repitiu %2 bortas", + "LISTS_LENGTH_TITLE": "longària de %1", + "LISTS_LENGTH_TOOLTIP": "Torrat sa longària de una lista.", + "LISTS_ISEMPTY_TITLE": "%1 est buidu", + "LISTS_ISEMPTY_TOOLTIP": "Torrat berus si sa lista est buida.", + "LISTS_INLIST": "in lista", + "LISTS_INDEX_OF_FIRST": "circa prima ocasioni de s'item", + "LISTS_INDEX_OF_LAST": "circa urtima ocasioni de s'item", + "LISTS_INDEX_OF_TOOLTIP": "Torrat s'indixi de sa primu/urtima ocasioni de s'item in sa lista. Torrat %1 si s'item non s'agatat.", + "LISTS_GET_INDEX_GET": "piga", + "LISTS_GET_INDEX_GET_REMOVE": "piga e fùlia", + "LISTS_GET_INDEX_REMOVE": "fùlia", + "LISTS_GET_INDEX_FROM_END": "# de sa fini", + "LISTS_GET_INDEX_FIRST": "primu", + "LISTS_GET_INDEX_LAST": "urtimu", + "LISTS_GET_INDEX_RANDOM": "a brìtiu (random)", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 est po su primu elementu.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 est po s'urtimu elementu.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Torrat s'elementu de su postu inditau de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Torrat su primu elementu de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Torrat s'urtimu elementu de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Torrat un'elementu a brìtiu de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fùliat e torrat s'elementu de su postu inditau de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fùliat e torrat su primu elementu de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fùliat e torrat s'urtimu elementu de una lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fùliat e torrat un'elementu a brìtiu de una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fùliat s'elementu de su postu inditau de una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fùliat su primu elementu de una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fùliat s'urtimu elementu de una lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Fùliat unu elementu a brìtiu de una lista.", + "LISTS_SET_INDEX_SET": "imposta", + "LISTS_SET_INDEX_INSERT": "inserta a", + "LISTS_SET_INDEX_INPUT_TO": "a", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Impostat s'elementu in su postu inditau de una lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Impostat su primu elementu in una lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Impostat s'urtimu elementu in una lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Impostat unu elementu random in una lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Insertat s'elementu in su postu inditau in una lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Insertat s'elementu a su cumintzu de sa lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Aciungit s'elementu a sa fini de sa lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Aciungit s'elementu a brítiu in sa lista.", + "LISTS_GET_SUBLIST_START_FROM_START": "bogandi suta-lista de #", + "LISTS_GET_SUBLIST_START_FROM_END": "bogandi suta-lista de # de sa fini.", + "LISTS_GET_SUBLIST_START_FIRST": "bogandi suta-lista de su primu", + "LISTS_GET_SUBLIST_END_FROM_START": "fintzas a #", + "LISTS_GET_SUBLIST_END_FROM_END": "a # de sa fini", + "LISTS_GET_SUBLIST_END_LAST": "a s'urtimu", + "LISTS_GET_SUBLIST_TOOLTIP": "Fait una copia de sa parti inditada de sa lista.", + "LISTS_SPLIT_LIST_FROM_TEXT": "fai una lista de unu testu", + "LISTS_SPLIT_TEXT_FROM_LIST": "fai unu testu de una lista", + "LISTS_SPLIT_WITH_DELIMITER": "cun separadori", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Dividi su testu in un'elencu de testus, firmendi po dònnia separadori.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Auni una lista de testus in d-unu sceti, ponendi separadoris.", + "VARIABLES_GET_TOOLTIP": "Torrat su valori de custa variabili.", + "VARIABLES_GET_CREATE_SET": "Fait 'imposta %1'", + "VARIABLES_SET": "imposta %1 a %2", + "VARIABLES_SET_TOOLTIP": "Imposta custa variabili uguali a s'input.", + "VARIABLES_SET_CREATE_GET": "Fait 'piga %1'", + "PROCEDURES_DEFNORETURN_TITLE": "po", + "PROCEDURES_DEFNORETURN_PROCEDURE": "fait calincuna cosa", + "PROCEDURES_BEFORE_PARAMS": "con:", + "PROCEDURES_CALL_BEFORE_PARAMS": "cun", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Fait una funtzioni chena output.", + "PROCEDURES_DEFRETURN_RETURN": "torrat", + "PROCEDURES_DEFRETURN_TOOLTIP": "Fait una funtzioni cun output.", + "PROCEDURES_ALLOW_STATEMENTS": "permiti decraratzionis", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Amonestu: Custa funtzioni tenit parametrus duplicaus.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Arròllia sa funtzione '%1' cuncordada dae s'impitadore.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_CALLRETURN_TOOLTIP": "Arròllia sa funtzione '%1' cuncordada dae s'impitadore e imprea s'output suu.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "inputs", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Aciungi, fùlia, o assenta is inputs a custa funtzioni.", + "PROCEDURES_MUTATORARG_TITLE": "nomini input:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Aciungi un input a sa funtzioni.", + "PROCEDURES_HIGHLIGHT_DEF": "Marca sa definitzioni de funtzioni.", + "PROCEDURES_CREATE_DO": "Ingenerau'%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Si unu valori est berus, tandu torrat unu segundu valori.", + "PROCEDURES_IFRETURN_WARNING": "Amonestu: Custu brocu ddu podis ponni sceti aintru de una funtzioni.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Annulla" +} diff --git a/msg/json/sco.json b/msg/json/sco.json index 8fea70d3d79..a4b4bae67b8 100644 --- a/msg/json/sco.json +++ b/msg/json/sco.json @@ -1,11 +1,11 @@ -{ - "@metadata": { - "authors": [ - "John Reid" - ] - }, - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Eik, remuiv, or reorder inputs tae this function.", - "PROCEDURES_MUTATORARG_TOOLTIP": "Eik aen input tae the function.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Cancel" -} +{ + "@metadata": { + "authors": [ + "John Reid" + ] + }, + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Eik, remuiv, or reorder inputs tae this function.", + "PROCEDURES_MUTATORARG_TOOLTIP": "Eik aen input tae the function.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Cancel" +} diff --git a/msg/json/sd.json b/msg/json/sd.json index c4e18afc59b..e8e68140505 100644 --- a/msg/json/sd.json +++ b/msg/json/sd.json @@ -1,152 +1,152 @@ -{ - "@metadata": { - "authors": [ - "Aursani", - "Charan", - "Indus Asia", - "Mehtab ahmed", - "Tweety" - ] - }, - "VARIABLES_DEFAULT_NAME": "اسم", - "TODAY": "اڄ", - "DUPLICATE_BLOCK": "نقل", - "ADD_COMMENT": "رايو ڏيو", - "REMOVE_COMMENT": "رايو ڊاهيو", - "DUPLICATE_COMMENT": "نقل رايو", - "EXTERNAL_INPUTS": "ٻاهريون داخلائون", - "INLINE_INPUTS": "اِنلائين اِن پٽس", - "DELETE_BLOCK": "بلاڪ ڊاهيو", - "DELETE_X_BLOCKS": "1٪ بلاڪ ڊاهيو", - "DELETE_ALL_BLOCKS": "سڀ %1 بلاڪ ڊاھيون؟", - "CLEAN_UP": "بلاڪ صاف ڪيو", - "COLLAPSE_BLOCK": "بلاڪ ڍڪيو", - "COLLAPSE_ALL": "بلاڪَ ڍڪيو", - "EXPAND_BLOCK": "بلاڪ نمايو", - "EXPAND_ALL": "بلاڪَ نمايو", - "DISABLE_BLOCK": "بلاڪ کي غيرفعال بڻايو", - "ENABLE_BLOCK": "بلاڪ کي فعال بڻايو", - "HELP": "مدد", - "UNDO": "اڻڪريو", - "REDO": "ٻيهر ڪريو", - "CHANGE_VALUE_TITLE": "قدر بدلايو", - "RENAME_VARIABLE": "ڦرڻي کي نئون نالو ڏيو...", - "NEW_VARIABLE": "نئون ڦرڻو...", - "NEW_VARIABLE_TITLE": "ڦرڻي جو نئون نالو:", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "رنگ دٻيءَ مان رنگ چونڊيو.", - "COLOUR_RANDOM_TITLE": "بنا ترتيب رنگ", - "COLOUR_RANDOM_TOOLTIP": "ڪو بہ ‌رنگ چونڊيو.", - "COLOUR_RGB_TITLE": "سان رڱيو", - "COLOUR_RGB_RED": "ڳاڙهو", - "COLOUR_RGB_GREEN": "سائو", - "COLOUR_RGB_BLUE": "نيرو", - "COLOUR_RGB_TOOLTIP": "ڳاڙهي، سائي، ۽ نيري جو مقدار ڄاڻائي گھربل رنگ ٺاهيو. سمورا قدر 0 ۽ 100 جي وچ ۾ هجن.", - "COLOUR_BLEND_TITLE": "گڏيل", - "COLOUR_BLEND_COLOUR1": "رنگ 1", - "COLOUR_BLEND_COLOUR2": "رنگ 2", - "COLOUR_BLEND_RATIO": "تناسب", - "COLOUR_BLEND_TOOLTIP": "ڄاڻايل تناسب سان ٻہ رنگ پاڻ ۾ ملايو (0.0-1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "1٪ ڀيرا ورجايو", - "CONTROLS_REPEAT_INPUT_DO": "ڪريو", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ورجايو جڏهن", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ورجايو جيستائين", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "چڪر مان ٻاهر نڪرو", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "چڪر جاري رکندي نئين ڦيري پايو", - "CONTROLS_IF_MSG_IF": "جيڪڏهن", - "CONTROLS_IF_MSG_ELSEIF": "نہ تہ جي", - "CONTROLS_IF_MSG_ELSE": "نہ تہ", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "جيڪڏهن ٻئي ان پُٽس برابر آهن تہ درست وراڻيو", - "LOGIC_COMPARE_TOOLTIP_NEQ": "جيڪڏهن ٻئي ان پُٽس اڻ برابر آهن تہ درست وراڻيو", - "LOGIC_COMPARE_TOOLTIP_LT": "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي تہ درست وراڻيو", - "LOGIC_COMPARE_TOOLTIP_LTE": "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي يا ٻئي برابر آهن تہ درست وراڻيو", - "LOGIC_COMPARE_TOOLTIP_GT": "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي تہ درست وراڻيو.", - "LOGIC_COMPARE_TOOLTIP_GTE": "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي يا ٻئي برابر آهن تہ درست وراڻيو.", - "LOGIC_OPERATION_TOOLTIP_AND": "جيڪڏهن ٻئي ان پُٽ درست آهن تہ درست وراڻيو.", - "LOGIC_OPERATION_AND": "۽", - "LOGIC_OPERATION_TOOLTIP_OR": "جيڪڏهن ٻنهي ان پُٽس مان ڪو هڪ بہ درست آهي تہ درست وراڻيو.", - "LOGIC_OPERATION_OR": "يا", - "LOGIC_NEGATE_TITLE": "نڪي %1", - "LOGIC_NEGATE_TOOLTIP": "ان پُٽ غير درست آهي تہ درست وراڻيو. ان پُٽ درست آهي تہ غير درست وراڻيو.", - "LOGIC_BOOLEAN_TRUE": "سچ", - "LOGIC_BOOLEAN_FALSE": "ڪُوڙ", - "LOGIC_BOOLEAN_TOOLTIP": "درست يا غير درست وراڻي ٿو.", - "LOGIC_TERNARY_CONDITION": "پرک (ٽيسٽ)", - "LOGIC_TERNARY_IF_TRUE": "جيڪڏهن سچو", - "LOGIC_TERNARY_IF_FALSE": "جيڪڏهن ڪوڙو", - "MATH_NUMBER_TOOLTIP": "ڪو انگ.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "ٻن انگن جي جوڙ اپت ڏيو.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "ٻنهي انگن جو تفاوت ڏيو.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "ٻنهي انگن جي ضرب اُپت ڏيو.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "ٻنهي انگن جي ونڊ ڏيو.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/ٻيون مول", - "MATH_SINGLE_OP_ROOT": "ٻيون مول", - "MATH_SINGLE_TOOLTIP_ROOT": "ڪنهن انگ جو ٻيون مول ڄاڻايو.", - "MATH_SINGLE_OP_ABSOLUTE": "ٺپ", - "MATH_SINGLE_TOOLTIP_NEG": "ڪنهن انگ جو ڪاٽو ڄاڻايو.", - "MATH_SINGLE_TOOLTIP_LN": "ڪنهن انگ جو قدرتي لاگ ڄاڻايو.", - "MATH_SINGLE_TOOLTIP_LOG10": "ڪنهن انگ جو 10 بنيادي لاگ ڄاڻايو.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/ٽڪنڊور ڪاڄ", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/رياضياتي استقلال", - "MATH_IS_EVEN": "ٻڌي آهي", - "MATH_IS_ODD": "اِڪي آهي", - "MATH_IS_PRIME": "مفرد آهي", - "MATH_IS_WHOLE": "سڄو آهي", - "MATH_IS_POSITIVE": "واڌو آهي", - "MATH_IS_NEGATIVE": "ڪاٽو آهي", - "MATH_IS_DIVISIBLE_BY": "سان ونڊجندڙ آهي", - "MATH_CHANGE_TITLE": "%1 کي %2 سان مَٽايو", - "MATH_ROUND_OPERATOR_ROUNDUP": "ويڙهيو (رائونڊ اَپ)", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "هيٺ ڦيرايو (رائونڊ ڊائون)", - "MATH_ONLIST_OPERATOR_SUM": "فهرست جو وچور", - "MATH_ONLIST_OPERATOR_MIN": "لسٽ جو ننڍي ۾ ننڍو قدر", - "MATH_ONLIST_TOOLTIP_MIN": "لسٽ ۾ ننڍي کان ننڍو قدر ڄاڻايو.", - "MATH_ONLIST_OPERATOR_MAX": "لسٽ جو وڏي ۾ وڏو قدر", - "MATH_ONLIST_TOOLTIP_MAX": "لسٽ ۾ وڏي کان وڏو قدر ڄاڻايو.", - "MATH_ONLIST_OPERATOR_AVERAGE": "لسٽ جي سراسري", - "MATH_ONLIST_OPERATOR_MEDIAN": "لسٽ جو مڌيان", - "MATH_ONLIST_TOOLTIP_MEDIAN": "لسٽ جو مڌيان انگ ڄاڻايو.", - "MATH_ONLIST_OPERATOR_MODE": "فهرست جا طريقيڪا (موڊز آف لسٽ)", - "MATH_ONLIST_OPERATOR_RANDOM": "بي ترتيب جذن جي فهرست (رينڊم آئيٽم آف لسٽ)", - "TEXT_JOIN_TITLE_CREATEWITH": "سان مواد تخليق ڪيو (ڪريئيٽ ٽيڪسٽ وِد)", - "TEXT_CREATE_JOIN_TITLE_JOIN": "شامل ٿيو", - "TEXT_INDEXOF_TITLE": "۾ متن %1 %2 %3", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "متن ۾", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "وڏن اکرن ڏانهن", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "ننڍن اکر ڏانهن", - "TEXT_PRINT_TITLE": "ڇاپيو %1", - "TEXT_PRINT_TOOLTIP": "ڄاڻايل تحرير، انگ يا ڪو ٻيو قدر ڇاپيو.", - "TEXT_COUNT_MESSAGE0": "ڳڻيو %1 ۾ %2", - "LISTS_CREATE_EMPTY_TITLE": "خالي فهرست تخليق ڪريو", - "LISTS_CREATE_WITH_INPUT_WITH": "سان فهرست تخليق ڪيو", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "لسٽ", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "فهرست ۾ ڪا شي شامل ڪريو.", - "LISTS_ISEMPTY_TITLE": "%1 خالي آهي", - "LISTS_INLIST": "فهرست ۾", - "LISTS_GET_INDEX_REMOVE": "هٽايو", - "LISTS_GET_INDEX_FROM_END": "# آخر کان", - "LISTS_GET_INDEX_FIRST": "پهريون", - "LISTS_GET_INDEX_LAST": "آخري", - "LISTS_GET_INDEX_RANDOM": "بي ترتيب", - "LISTS_SET_INDEX_SET": "ميڙ", - "LISTS_SET_INDEX_INSERT": "تي داخل ڪريو", - "LISTS_SET_INDEX_INPUT_TO": "جيان", - "LISTS_GET_SUBLIST_END_FROM_START": "ڏانهن #", - "LISTS_GET_SUBLIST_END_FROM_END": "ڏانهن # آخر کان", - "LISTS_GET_SUBLIST_END_LAST": "آخري ڏانهن", - "LISTS_SORT_TITLE": "ترتيب ڏيو %1 %2 %3", - "LISTS_SORT_ORDER_ASCENDING": "اُڀو (اَسينڊنگ)", - "LISTS_SORT_TYPE_TEXT": "الف ب وار (الفابيٽڪ)", - "PROCEDURES_DEFNORETURN_TITLE": "ڏانهن", - "PROCEDURES_DEFNORETURN_PROCEDURE": "ڪجھ ڪريو", - "PROCEDURES_BEFORE_PARAMS": "سان:", - "PROCEDURES_CALL_BEFORE_PARAMS": "سان:", - "PROCEDURES_DEFRETURN_RETURN": "واپس ورو", - "PROCEDURES_MUTATORCONTAINER_TITLE": "ان پُٽس", - "PROCEDURES_CREATE_DO": "تخليق ڪريو '%1'", - "DIALOG_OK": "ٺيڪ", - "DIALOG_CANCEL": "رد" -} +{ + "@metadata": { + "authors": [ + "Aursani", + "Charan", + "Indus Asia", + "Mehtab ahmed", + "Tweety" + ] + }, + "VARIABLES_DEFAULT_NAME": "اسم", + "TODAY": "اڄ", + "DUPLICATE_BLOCK": "نقل", + "ADD_COMMENT": "رايو ڏيو", + "REMOVE_COMMENT": "رايو ڊاهيو", + "DUPLICATE_COMMENT": "نقل رايو", + "EXTERNAL_INPUTS": "ٻاهريون داخلائون", + "INLINE_INPUTS": "اِنلائين اِن پٽس", + "DELETE_BLOCK": "بلاڪ ڊاهيو", + "DELETE_X_BLOCKS": "1٪ بلاڪ ڊاهيو", + "DELETE_ALL_BLOCKS": "سڀ %1 بلاڪ ڊاھيون؟", + "CLEAN_UP": "بلاڪ صاف ڪيو", + "COLLAPSE_BLOCK": "بلاڪ ڍڪيو", + "COLLAPSE_ALL": "بلاڪَ ڍڪيو", + "EXPAND_BLOCK": "بلاڪ نمايو", + "EXPAND_ALL": "بلاڪَ نمايو", + "DISABLE_BLOCK": "بلاڪ کي غيرفعال بڻايو", + "ENABLE_BLOCK": "بلاڪ کي فعال بڻايو", + "HELP": "مدد", + "UNDO": "اڻڪريو", + "REDO": "ٻيهر ڪريو", + "CHANGE_VALUE_TITLE": "قدر بدلايو", + "RENAME_VARIABLE": "ڦرڻي کي نئون نالو ڏيو...", + "NEW_VARIABLE": "نئون ڦرڻو...", + "NEW_VARIABLE_TITLE": "ڦرڻي جو نئون نالو:", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "رنگ دٻيءَ مان رنگ چونڊيو.", + "COLOUR_RANDOM_TITLE": "بنا ترتيب رنگ", + "COLOUR_RANDOM_TOOLTIP": "ڪو بہ ‌رنگ چونڊيو.", + "COLOUR_RGB_TITLE": "سان رڱيو", + "COLOUR_RGB_RED": "ڳاڙهو", + "COLOUR_RGB_GREEN": "سائو", + "COLOUR_RGB_BLUE": "نيرو", + "COLOUR_RGB_TOOLTIP": "ڳاڙهي، سائي، ۽ نيري جو مقدار ڄاڻائي گھربل رنگ ٺاهيو. سمورا قدر 0 ۽ 100 جي وچ ۾ هجن.", + "COLOUR_BLEND_TITLE": "گڏيل", + "COLOUR_BLEND_COLOUR1": "رنگ 1", + "COLOUR_BLEND_COLOUR2": "رنگ 2", + "COLOUR_BLEND_RATIO": "تناسب", + "COLOUR_BLEND_TOOLTIP": "ڄاڻايل تناسب سان ٻہ رنگ پاڻ ۾ ملايو (0.0-1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "1٪ ڀيرا ورجايو", + "CONTROLS_REPEAT_INPUT_DO": "ڪريو", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ورجايو جڏهن", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ورجايو جيستائين", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "چڪر مان ٻاهر نڪرو", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "چڪر جاري رکندي نئين ڦيري پايو", + "CONTROLS_IF_MSG_IF": "جيڪڏهن", + "CONTROLS_IF_MSG_ELSEIF": "نہ تہ جي", + "CONTROLS_IF_MSG_ELSE": "نہ تہ", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "جيڪڏهن ٻئي ان پُٽس برابر آهن تہ درست وراڻيو", + "LOGIC_COMPARE_TOOLTIP_NEQ": "جيڪڏهن ٻئي ان پُٽس اڻ برابر آهن تہ درست وراڻيو", + "LOGIC_COMPARE_TOOLTIP_LT": "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي تہ درست وراڻيو", + "LOGIC_COMPARE_TOOLTIP_LTE": "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان ننڍو آهي يا ٻئي برابر آهن تہ درست وراڻيو", + "LOGIC_COMPARE_TOOLTIP_GT": "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي تہ درست وراڻيو.", + "LOGIC_COMPARE_TOOLTIP_GTE": "جيڪڏهن پهريون ان پُٽ ٻين ان پُٽ کان وڏو آهي يا ٻئي برابر آهن تہ درست وراڻيو.", + "LOGIC_OPERATION_TOOLTIP_AND": "جيڪڏهن ٻئي ان پُٽ درست آهن تہ درست وراڻيو.", + "LOGIC_OPERATION_AND": "۽", + "LOGIC_OPERATION_TOOLTIP_OR": "جيڪڏهن ٻنهي ان پُٽس مان ڪو هڪ بہ درست آهي تہ درست وراڻيو.", + "LOGIC_OPERATION_OR": "يا", + "LOGIC_NEGATE_TITLE": "نڪي %1", + "LOGIC_NEGATE_TOOLTIP": "ان پُٽ غير درست آهي تہ درست وراڻيو. ان پُٽ درست آهي تہ غير درست وراڻيو.", + "LOGIC_BOOLEAN_TRUE": "سچ", + "LOGIC_BOOLEAN_FALSE": "ڪُوڙ", + "LOGIC_BOOLEAN_TOOLTIP": "درست يا غير درست وراڻي ٿو.", + "LOGIC_TERNARY_CONDITION": "پرک (ٽيسٽ)", + "LOGIC_TERNARY_IF_TRUE": "جيڪڏهن سچو", + "LOGIC_TERNARY_IF_FALSE": "جيڪڏهن ڪوڙو", + "MATH_NUMBER_TOOLTIP": "ڪو انگ.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "ٻن انگن جي جوڙ اپت ڏيو.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "ٻنهي انگن جو تفاوت ڏيو.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "ٻنهي انگن جي ضرب اُپت ڏيو.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "ٻنهي انگن جي ونڊ ڏيو.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/ٻيون مول", + "MATH_SINGLE_OP_ROOT": "ٻيون مول", + "MATH_SINGLE_TOOLTIP_ROOT": "ڪنهن انگ جو ٻيون مول ڄاڻايو.", + "MATH_SINGLE_OP_ABSOLUTE": "ٺپ", + "MATH_SINGLE_TOOLTIP_NEG": "ڪنهن انگ جو ڪاٽو ڄاڻايو.", + "MATH_SINGLE_TOOLTIP_LN": "ڪنهن انگ جو قدرتي لاگ ڄاڻايو.", + "MATH_SINGLE_TOOLTIP_LOG10": "ڪنهن انگ جو 10 بنيادي لاگ ڄاڻايو.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/ٽڪنڊور ڪاڄ", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/رياضياتي استقلال", + "MATH_IS_EVEN": "ٻڌي آهي", + "MATH_IS_ODD": "اِڪي آهي", + "MATH_IS_PRIME": "مفرد آهي", + "MATH_IS_WHOLE": "سڄو آهي", + "MATH_IS_POSITIVE": "واڌو آهي", + "MATH_IS_NEGATIVE": "ڪاٽو آهي", + "MATH_IS_DIVISIBLE_BY": "سان ونڊجندڙ آهي", + "MATH_CHANGE_TITLE": "%1 کي %2 سان مَٽايو", + "MATH_ROUND_OPERATOR_ROUNDUP": "ويڙهيو (رائونڊ اَپ)", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "هيٺ ڦيرايو (رائونڊ ڊائون)", + "MATH_ONLIST_OPERATOR_SUM": "فهرست جو وچور", + "MATH_ONLIST_OPERATOR_MIN": "لسٽ جو ننڍي ۾ ننڍو قدر", + "MATH_ONLIST_TOOLTIP_MIN": "لسٽ ۾ ننڍي کان ننڍو قدر ڄاڻايو.", + "MATH_ONLIST_OPERATOR_MAX": "لسٽ جو وڏي ۾ وڏو قدر", + "MATH_ONLIST_TOOLTIP_MAX": "لسٽ ۾ وڏي کان وڏو قدر ڄاڻايو.", + "MATH_ONLIST_OPERATOR_AVERAGE": "لسٽ جي سراسري", + "MATH_ONLIST_OPERATOR_MEDIAN": "لسٽ جو مڌيان", + "MATH_ONLIST_TOOLTIP_MEDIAN": "لسٽ جو مڌيان انگ ڄاڻايو.", + "MATH_ONLIST_OPERATOR_MODE": "فهرست جا طريقيڪا (موڊز آف لسٽ)", + "MATH_ONLIST_OPERATOR_RANDOM": "بي ترتيب جذن جي فهرست (رينڊم آئيٽم آف لسٽ)", + "TEXT_JOIN_TITLE_CREATEWITH": "سان مواد تخليق ڪيو (ڪريئيٽ ٽيڪسٽ وِد)", + "TEXT_CREATE_JOIN_TITLE_JOIN": "شامل ٿيو", + "TEXT_INDEXOF_TITLE": "۾ متن %1 %2 %3", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "متن ۾", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "وڏن اکرن ڏانهن", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "ننڍن اکر ڏانهن", + "TEXT_PRINT_TITLE": "ڇاپيو %1", + "TEXT_PRINT_TOOLTIP": "ڄاڻايل تحرير، انگ يا ڪو ٻيو قدر ڇاپيو.", + "TEXT_COUNT_MESSAGE0": "ڳڻيو %1 ۾ %2", + "LISTS_CREATE_EMPTY_TITLE": "خالي فهرست تخليق ڪريو", + "LISTS_CREATE_WITH_INPUT_WITH": "سان فهرست تخليق ڪيو", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "لسٽ", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "فهرست ۾ ڪا شي شامل ڪريو.", + "LISTS_ISEMPTY_TITLE": "%1 خالي آهي", + "LISTS_INLIST": "فهرست ۾", + "LISTS_GET_INDEX_REMOVE": "هٽايو", + "LISTS_GET_INDEX_FROM_END": "# آخر کان", + "LISTS_GET_INDEX_FIRST": "پهريون", + "LISTS_GET_INDEX_LAST": "آخري", + "LISTS_GET_INDEX_RANDOM": "بي ترتيب", + "LISTS_SET_INDEX_SET": "ميڙ", + "LISTS_SET_INDEX_INSERT": "تي داخل ڪريو", + "LISTS_SET_INDEX_INPUT_TO": "جيان", + "LISTS_GET_SUBLIST_END_FROM_START": "ڏانهن #", + "LISTS_GET_SUBLIST_END_FROM_END": "ڏانهن # آخر کان", + "LISTS_GET_SUBLIST_END_LAST": "آخري ڏانهن", + "LISTS_SORT_TITLE": "ترتيب ڏيو %1 %2 %3", + "LISTS_SORT_ORDER_ASCENDING": "اُڀو (اَسينڊنگ)", + "LISTS_SORT_TYPE_TEXT": "الف ب وار (الفابيٽڪ)", + "PROCEDURES_DEFNORETURN_TITLE": "ڏانهن", + "PROCEDURES_DEFNORETURN_PROCEDURE": "ڪجھ ڪريو", + "PROCEDURES_BEFORE_PARAMS": "سان:", + "PROCEDURES_CALL_BEFORE_PARAMS": "سان:", + "PROCEDURES_DEFRETURN_RETURN": "واپس ورو", + "PROCEDURES_MUTATORCONTAINER_TITLE": "ان پُٽس", + "PROCEDURES_CREATE_DO": "تخليق ڪريو '%1'", + "DIALOG_OK": "ٺيڪ", + "DIALOG_CANCEL": "رد" +} diff --git a/msg/json/shn.json b/msg/json/shn.json index fcea65b8839..89a0e023236 100644 --- a/msg/json/shn.json +++ b/msg/json/shn.json @@ -1,109 +1,109 @@ -{ - "@metadata": { - "authors": [ - "Saimawnkham", - "Saosukham" - ] - }, - "VARIABLES_DEFAULT_NAME": "ဢၼ်", - "TODAY": "မိူဝ်ႈၼႆႉ", - "DUPLICATE_BLOCK": "ထုတ်ႇ", - "ADD_COMMENT": "သႂ်ႇၶေႃႈၶႆႈၸႂ်", - "REMOVE_COMMENT": "ထွၼ်ပႅတ်ႈ ၶေႃႈၶႆႈၸႂ်", - "EXTERNAL_INPUTS": "ၶိူင်ႈဢၼ်လုၵ်ႉတၢင်းၼွၵ်ႈၶဝ်ႈမႃး", - "INLINE_INPUTS": "ၶိူင်ႈဢၼ်ၶဝ်ႈမႃးၸွမ်းလႅင်း", - "DELETE_BLOCK": "မွတ်ႇပလွၵ်ႉ", - "DELETE_X_BLOCKS": "မွတ်ႇလွင်ႈႁႄႉတတ်း %1", - "COLLAPSE_BLOCK": "လွင်ႈႁႄႉတတ်းလႅဝ်", - "COLLAPSE_ALL": "လွင်ႈႁႄႉတတ်းၸိူဝ်းလႅဝ်", - "EXPAND_BLOCK": "ၶႂၢၵ်ႈလွင်ႈႁႄႉတတ်း", - "EXPAND_ALL": "ၶႂၢၵ်ႈၸိူဝ်းႁႄႉတတ်း", - "DISABLE_BLOCK": "ဢိုတ်းၸႂ်ႉ လွင်ႈႁႄႉတတ်း", - "ENABLE_BLOCK": "ပိုတ်ႇၸႂ်ႉ လွင်ႈႁႄႉတတ်း", - "HELP": "ၸွႆႈထႅမ်", - "CHANGE_VALUE_TITLE": "လႅၵ်ႈလၢႆႈၼမ်ႉၵတ်ႉ", - "RENAME_VARIABLE": "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇ", - "RENAME_VARIABLE_TITLE": "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇၸိူဝ်းၼၼ်ႉ '%1' ထိုင်", - "NEW_VARIABLE": "ၵေႃႇသၢင်ႈ တူဝ်ၼိုင်...", - "NEW_VARIABLE_TITLE": "ၸိုဝ်ႈဢၼ်လၢႆႈမႂ်ႇ", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color သီ", - "COLOUR_PICKER_TOOLTIP": "လိူၵ်ႈသီ တမ်ႈတီႈ ၽႃးလႅတ်ႉ", - "COLOUR_RANDOM_TITLE": "သီလၢမ်းလိမ်း", - "COLOUR_RANDOM_TOOLTIP": "လိူၵ်ႈသီတမ်ႈတီႈလွၵ်းလၢမ်းလိမ်း", - "COLOUR_RGB_TITLE": "ႁူမ်ႈၵိုၵ်းသီ", - "COLOUR_RGB_RED": "လီင်", - "COLOUR_RGB_GREEN": "ၶဵဝ်", - "COLOUR_RGB_BLUE": "သွမ်ႇ", - "COLOUR_RGB_TOOLTIP": "ႁဵတ်းတူၺ်း သီဢၼ်ၼိုင်ႈ ၸွမ်းၼင်ႇမၵ်းမၼ်ႈဝႆႉ ၼႂ်းၶႂၢင်ႇ သီလႅင်, ၶဵဝ် လႄႈ သွမ်ႇ။ ၼမ်ႉၼၵ်းသီ တေလႆႈမီးၼႂ်းဝူင်ႈၵၢင် 0 တေႃႇ 100.", - "COLOUR_BLEND_TITLE": "လေႃးလႄး", - "COLOUR_BLEND_COLOUR1": "သီ 1", - "COLOUR_BLEND_COLOUR2": "သီ 2", - "COLOUR_BLEND_RATIO": "သႅၼ်း", - "COLOUR_BLEND_TOOLTIP": "ဢဝ်သီသွင်ဢၼ်လေႃးၵၼ် ၸွမ်းၼမ် သႅၼ်းဢၼ်ပၼ်ဝႆႉ (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop တႃႇတူင်ႇမူၼ်း", - "CONTROLS_REPEAT_TITLE": "ပၼ်ႇၶိုၼ်း %1 ၵမ်း", - "CONTROLS_REPEAT_INPUT_DO": "ႁဵတ်း", - "CONTROLS_REPEAT_TOOLTIP": "ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ တင်းၼမ်", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ၶၢဝ်းတိုၵ်ႉလိုမ်ႉ", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "တိုၵ်ႉလိုမ်ႉထိုင်", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ဢမ်ႇမၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ် ၵမ်ႈၽွင်ႈ", - "CONTROLS_FOR_TITLE": "တႄႇဢၢၼ်ႇၵိုၵ်း %1 တေႃႇ %2 တေႃႇ %3 လူၺ်ႈ %4", - "CONTROLS_FOREACH_TITLE": "တႃႇၵူႈဢၼ်ဢၼ် ၼႂ်း %1 သဵၼ်ႈမၢႆ %2", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ဢွၵ်ႇတီႈၶွပ်ႇမူၼ်း", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "သိုပ်ႇပၼ်ႇထႅင်ႈ ၶွပ်ႇမူၼ်းတၢင်ႇဢၼ်", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ၵိုတ်းပႅတ်ႈ ၶွပ်ႇမူၼ်း ဢၼ်မီးဝႆႉ", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ဝဵၼ်ႉဝႆႉ ၶွပ်ႇမူၼ်း ဢၼ်ၵိုတ်းၸိူဝ်ႈဝႆႉ, သေ သိုပ်ႇထႅင်ႈတၢင်ႇဢၼ်", - "CONTROLS_FLOW_STATEMENTS_WARNING": "ၾၢင်ႉ: ပလွၵ်ႉဢၼ်ၼႆႉ ၵူၺ်းၸႂ်ႉလူၺ်ႈတႃႇ ၶွပ်ႇမူၼ်းၵူၺ်း", - "CONTROLS_IF_TOOLTIP_1": "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ", - "CONTROLS_IF_TOOLTIP_2": "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်", - "CONTROLS_IF_TOOLTIP_3": "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႉၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆသွင်မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်", - "CONTROLS_IF_TOOLTIP_4": "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ, သင်ဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢႆသွင် မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ) ဢမ်ႇမီးလွင်ႈမၢၼ်ႇမႅၼ်ႈ သင်ၸိုင် ႁဵတ်းပႅတ်ႈပလွၵ်ႉ ၵမ်းလိုမ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။", - "CONTROLS_IF_MSG_IF": "သင်ဝႃႈ", - "CONTROLS_IF_MSG_ELSEIF": "သင်ဝႃႈ လိူဝ်သေၼၼ်ႉ", - "CONTROLS_IF_MSG_ELSE": "လိူဝ်သေၼၼ်ႉ", - "CONTROLS_IF_ELSEIF_TOOLTIP": "သင်ဝႃႈ ပလွၵ်ႉၸိုင် သႂ်ႇပၼ်လွင်ႈတၢင်းမၼ်း တမ်ႈ", - "CONTROLS_IF_ELSE_TOOLTIP": "သႂ်ႇၵမ်းလိုၼ်း, သင်ဝႃႈ ပလွၵ်ႉၸိုင် ဢဝ်လွင်ႈတၢင်းမၼ်းတင်းသဵင်ႈ တမ်ႈ", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(ပၢႆးၼပ်ႉ)", - "LOGIC_COMPARE_TOOLTIP_EQ": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် မိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", - "LOGIC_COMPARE_TOOLTIP_NEQ": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် ဢမ်ႇမိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", - "LOGIC_COMPARE_TOOLTIP_LT": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", - "LOGIC_COMPARE_TOOLTIP_LTE": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", - "LOGIC_COMPARE_TOOLTIP_GT": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", - "LOGIC_COMPARE_TOOLTIP_GTE": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", - "LOGIC_OPERATION_TOOLTIP_AND": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင်ဢၼ် မၢၼ်ႇမႅၼ်ႈၸိုင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", - "LOGIC_OPERATION_AND": "လႄႈ", - "LOGIC_OPERATION_TOOLTIP_OR": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ၵမ်းလိုၼ်းသုတ်း မၢၼ်ႇမႅၼ်ႈၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", - "LOGIC_OPERATION_OR": "ဢမ်ႇၼၼ်", - "LOGIC_NEGATE_TITLE": "ဢမ်ႇၸႂ်ႈ %1", - "LOGIC_NEGATE_TOOLTIP": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢမ်ႇၼႅၼ်ႈၼႃၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ။ သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢၼ်ႇမႅၼ်ႈၸိုင် ၶိုၼ်းမူၼ်ႉမႄး ႁႂ်ႈၼႅၼ်ႈၼႃ", - "LOGIC_BOOLEAN_TRUE": "မၢၼ်ႇမႅၼ်ႈ", - "LOGIC_BOOLEAN_FALSE": "ဢမ်ႇၼႅၼ်ႈၼႃ", - "LOGIC_BOOLEAN_TOOLTIP": "မၢၼ်ႇမႅၼ်ႈလႄႈသင် ဢမ်ႇၼႅၼ်ႈၼႃလႄႈသင် ႁူၼ်ၶိုၼ်း", - "LOGIC_NULL": "ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ", - "LOGIC_NULL_TOOLTIP": "လဵဝ်ၶိုၼ်း ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ", - "LOGIC_TERNARY_CONDITION": "ၸၢမ်း", - "LOGIC_TERNARY_IF_TRUE": "သင်ဝႃႈ မၢၼ်ႇမႅၼ်ႈ", - "LOGIC_TERNARY_IF_FALSE": "သင်ဝႃႈ ဢမ်ႇၼႅၼ်ႈၼႃ", - "LOGIC_TERNARY_TOOLTIP": "ၸၢမ်းၵူတ်ႇတူၺ်း သၢႆငၢႆ။ သင်ဝႃႈ သၢႆငၢႆမၢၼ်ႇမႅၼ်ႈ, လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်မၢၼ်ႇမႅၼ်ႈ'; လိူဝ်ၼၼ်ႉ လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်ဢမ်ႇၼႅၼ်ႈၼႃ'။", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/မၢႆၼပ်ႉ", - "MATH_NUMBER_TOOLTIP": "မၢႆၼပ်ႉ ၼိုင်ႈဢၼ်", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/ပၢႆးၼပ်ႉ", - "MATH_ARITHMETIC_TOOLTIP_ADD": "လဵဝ်ၶိုၼ်း တၢင်းၼမ် ၼႂ်းမၢႆၼပ်ႉ သွင်", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "လဵဝ်ၶိုၼ်း ဢၼ်ပႅၵ်ႇပိူင်ႈ ၼႂ်းမၢႆၼပ်ႉ သွင်", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "လဵဝ်ၶိုၼ်း ဢၼ်ဢဝ်ဢွၵ်ႇ ၼႂ်းမၢႆၼပ်ႉ သွင်", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "လဵဝ်ၶိုၼ်း ပမႃႇၼ ၼႂ်းမၢႆၼပ်ႉ သွင်", - "MATH_ARITHMETIC_TOOLTIP_POWER": "လဵဝ်ၶိုၼ်း တူဝ်ၼပ်ႉမၢႆၼိုင်ႈၼႆႉ ၸွႆႈႁႅင်းပၼ် တူဝ်ၼပ်ႉမၢႆသွင်", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root (မၢႆတူပ်ႉမိူၼ်)", - "MATH_SINGLE_OP_ROOT": "မၢႆတူပ်ႉမိူၼ်", - "MATH_SINGLE_TOOLTIP_ROOT": "လဵဝ်ၶိုၼ်း မၢႆတူပ်ႉမိူၼ် ၼႂ်းမၢႆၼပ်ႉ", - "MATH_SINGLE_OP_ABSOLUTE": "ပၵတိ", - "MATH_SINGLE_TOOLTIP_ABS": "လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ပၵတိ ၼႂ်းမၢႆၼပ်ႉ", - "MATH_SINGLE_TOOLTIP_NEG": "လဵဝ်ၶိုၼ်း ဢၼ်သၢၼ်ၶတ်း ၼႂ်း မၢႆၼပ်ႉ", - "MATH_SINGLE_TOOLTIP_LN": "လဵဝ်ၶိုၼ်း လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ", - "MATH_SINGLE_TOOLTIP_LOG10": "လဵဝ်ၶိုၼ်း ပိုၼ်ႉထၢၼ် 10 လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ", - "MATH_SINGLE_TOOLTIP_EXP": "လဵဝ်ၶိုၼ်း e ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ", - "MATH_SINGLE_TOOLTIP_POW10": "လဵဝ်ၶိုၼ်း 10 ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ", - "MATH_IS_EVEN": "ပဵၼ်ၵူပ်ႉ", - "MATH_IS_ODD": "ပဵၼ်ၵိၵ်ႈ" -} +{ + "@metadata": { + "authors": [ + "Saimawnkham", + "Saosukham" + ] + }, + "VARIABLES_DEFAULT_NAME": "ဢၼ်", + "TODAY": "မိူဝ်ႈၼႆႉ", + "DUPLICATE_BLOCK": "ထုတ်ႇ", + "ADD_COMMENT": "သႂ်ႇၶေႃႈၶႆႈၸႂ်", + "REMOVE_COMMENT": "ထွၼ်ပႅတ်ႈ ၶေႃႈၶႆႈၸႂ်", + "EXTERNAL_INPUTS": "ၶိူင်ႈဢၼ်လုၵ်ႉတၢင်းၼွၵ်ႈၶဝ်ႈမႃး", + "INLINE_INPUTS": "ၶိူင်ႈဢၼ်ၶဝ်ႈမႃးၸွမ်းလႅင်း", + "DELETE_BLOCK": "မွတ်ႇပလွၵ်ႉ", + "DELETE_X_BLOCKS": "မွတ်ႇလွင်ႈႁႄႉတတ်း %1", + "COLLAPSE_BLOCK": "လွင်ႈႁႄႉတတ်းလႅဝ်", + "COLLAPSE_ALL": "လွင်ႈႁႄႉတတ်းၸိူဝ်းလႅဝ်", + "EXPAND_BLOCK": "ၶႂၢၵ်ႈလွင်ႈႁႄႉတတ်း", + "EXPAND_ALL": "ၶႂၢၵ်ႈၸိူဝ်းႁႄႉတတ်း", + "DISABLE_BLOCK": "ဢိုတ်းၸႂ်ႉ လွင်ႈႁႄႉတတ်း", + "ENABLE_BLOCK": "ပိုတ်ႇၸႂ်ႉ လွင်ႈႁႄႉတတ်း", + "HELP": "ၸွႆႈထႅမ်", + "CHANGE_VALUE_TITLE": "လႅၵ်ႈလၢႆႈၼမ်ႉၵတ်ႉ", + "RENAME_VARIABLE": "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇ", + "RENAME_VARIABLE_TITLE": "လိုမ်ႉၶိုၼ်း ဢၼ်လၢႆႈမႂ်ႇၸိူဝ်းၼၼ်ႉ '%1' ထိုင်", + "NEW_VARIABLE": "ၵေႃႇသၢင်ႈ တူဝ်ၼိုင်...", + "NEW_VARIABLE_TITLE": "ၸိုဝ်ႈဢၼ်လၢႆႈမႂ်ႇ", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color သီ", + "COLOUR_PICKER_TOOLTIP": "လိူၵ်ႈသီ တမ်ႈတီႈ ၽႃးလႅတ်ႉ", + "COLOUR_RANDOM_TITLE": "သီလၢမ်းလိမ်း", + "COLOUR_RANDOM_TOOLTIP": "လိူၵ်ႈသီတမ်ႈတီႈလွၵ်းလၢမ်းလိမ်း", + "COLOUR_RGB_TITLE": "ႁူမ်ႈၵိုၵ်းသီ", + "COLOUR_RGB_RED": "လီင်", + "COLOUR_RGB_GREEN": "ၶဵဝ်", + "COLOUR_RGB_BLUE": "သွမ်ႇ", + "COLOUR_RGB_TOOLTIP": "ႁဵတ်းတူၺ်း သီဢၼ်ၼိုင်ႈ ၸွမ်းၼင်ႇမၵ်းမၼ်ႈဝႆႉ ၼႂ်းၶႂၢင်ႇ သီလႅင်, ၶဵဝ် လႄႈ သွမ်ႇ။ ၼမ်ႉၼၵ်းသီ တေလႆႈမီးၼႂ်းဝူင်ႈၵၢင် 0 တေႃႇ 100.", + "COLOUR_BLEND_TITLE": "လေႃးလႄး", + "COLOUR_BLEND_COLOUR1": "သီ 1", + "COLOUR_BLEND_COLOUR2": "သီ 2", + "COLOUR_BLEND_RATIO": "သႅၼ်း", + "COLOUR_BLEND_TOOLTIP": "ဢဝ်သီသွင်ဢၼ်လေႃးၵၼ် ၸွမ်းၼမ် သႅၼ်းဢၼ်ပၼ်ဝႆႉ (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop တႃႇတူင်ႇမူၼ်း", + "CONTROLS_REPEAT_TITLE": "ပၼ်ႇၶိုၼ်း %1 ၵမ်း", + "CONTROLS_REPEAT_INPUT_DO": "ႁဵတ်း", + "CONTROLS_REPEAT_TOOLTIP": "ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ တင်းၼမ်", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ၶၢဝ်းတိုၵ်ႉလိုမ်ႉ", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "တိုၵ်ႉလိုမ်ႉထိုင်", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ဢမ်ႇမၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ် ၵမ်ႈၽွင်ႈ", + "CONTROLS_FOR_TITLE": "တႄႇဢၢၼ်ႇၵိုၵ်း %1 တေႃႇ %2 တေႃႇ %3 လူၺ်ႈ %4", + "CONTROLS_FOREACH_TITLE": "တႃႇၵူႈဢၼ်ဢၼ် ၼႂ်း %1 သဵၼ်ႈမၢႆ %2", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ဢွၵ်ႇတီႈၶွပ်ႇမူၼ်း", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "သိုပ်ႇပၼ်ႇထႅင်ႈ ၶွပ်ႇမူၼ်းတၢင်ႇဢၼ်", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ၵိုတ်းပႅတ်ႈ ၶွပ်ႇမူၼ်း ဢၼ်မီးဝႆႉ", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ဝဵၼ်ႉဝႆႉ ၶွပ်ႇမူၼ်း ဢၼ်ၵိုတ်းၸိူဝ်ႈဝႆႉ, သေ သိုပ်ႇထႅင်ႈတၢင်ႇဢၼ်", + "CONTROLS_FLOW_STATEMENTS_WARNING": "ၾၢင်ႉ: ပလွၵ်ႉဢၼ်ၼႆႉ ၵူၺ်းၸႂ်ႉလူၺ်ႈတႃႇ ၶွပ်ႇမူၼ်းၵူၺ်း", + "CONTROLS_IF_TOOLTIP_1": "ပေႃးဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢၼ်ႇမႅၼ်ႈယဝ်ႉၸိုင် ႁဵတ်းၶေႃႈၵဵပ်းထွၼ်ၵမ်ႈၽွင်ႈ", + "CONTROLS_IF_TOOLTIP_2": "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်", + "CONTROLS_IF_TOOLTIP_3": "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႉၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆသွင်မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်", + "CONTROLS_IF_TOOLTIP_4": "သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ)မၢႆၼိုင်ႈ မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပလွၵ်ႉဢွၼ်တၢင်းသုတ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ လိူဝ်သေၼၼ်ႉ, သင်ဝႃႈ ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) မၢႆသွင် မၢၼ်ႇမႅၼ်ႈၸိုင် ႁဵတ်းပႅတ်ႈ ပလွၵ်ႉသွင် တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။ သင်ဝႃႈ ၵႃႈၶၼ်(ၼမ်ႉၵတ်ႉ) ဢမ်ႇမီးလွင်ႈမၢၼ်ႇမႅၼ်ႈ သင်ၸိုင် ႁဵတ်းပႅတ်ႈပလွၵ်ႉ ၵမ်းလိုမ်း တီႈၼႂ်းၶေႃႈၵဵပ်းထွၼ်တ။", + "CONTROLS_IF_MSG_IF": "သင်ဝႃႈ", + "CONTROLS_IF_MSG_ELSEIF": "သင်ဝႃႈ လိူဝ်သေၼၼ်ႉ", + "CONTROLS_IF_MSG_ELSE": "လိူဝ်သေၼၼ်ႉ", + "CONTROLS_IF_ELSEIF_TOOLTIP": "သင်ဝႃႈ ပလွၵ်ႉၸိုင် သႂ်ႇပၼ်လွင်ႈတၢင်းမၼ်း တမ်ႈ", + "CONTROLS_IF_ELSE_TOOLTIP": "သႂ်ႇၵမ်းလိုၼ်း, သင်ဝႃႈ ပလွၵ်ႉၸိုင် ဢဝ်လွင်ႈတၢင်းမၼ်းတင်းသဵင်ႈ တမ်ႈ", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(ပၢႆးၼပ်ႉ)", + "LOGIC_COMPARE_TOOLTIP_EQ": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် မိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", + "LOGIC_COMPARE_TOOLTIP_NEQ": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင် ဢမ်ႇမိူၼ်တၢင်ႇဢၼ်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", + "LOGIC_COMPARE_TOOLTIP_LT": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", + "LOGIC_COMPARE_TOOLTIP_LTE": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း မိူၼ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", + "LOGIC_COMPARE_TOOLTIP_GT": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", + "LOGIC_COMPARE_TOOLTIP_GTE": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢွၼ်တၢင်း ယႂ်ႇလိူဝ် ဢမ်ႇၼၼ် ၽဵင်ႇပဵင်း ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢႆသွင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", + "LOGIC_OPERATION_TOOLTIP_AND": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ တင်းသွင်ဢၼ် မၢၼ်ႇမႅၼ်ႈၸိုင်ၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", + "LOGIC_OPERATION_AND": "လႄႈ", + "LOGIC_OPERATION_TOOLTIP_OR": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ၵမ်းလိုၼ်းသုတ်း မၢၼ်ႇမႅၼ်ႈၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ", + "LOGIC_OPERATION_OR": "ဢမ်ႇၼၼ်", + "LOGIC_NEGATE_TITLE": "ဢမ်ႇၸႂ်ႈ %1", + "LOGIC_NEGATE_TOOLTIP": "သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ ဢမ်ႇၼႅၼ်ႈၼႃၸိုင် မႄးၶိုၼ်း ႁႂ်ႈမၢၼ်ႇမႅၼ်ႈ။ သင်ဝႃႈ ဢၼ်ၽိူမ်ႉသႂ်ႇ မၢၼ်ႇမႅၼ်ႈၸိုင် ၶိုၼ်းမူၼ်ႉမႄး ႁႂ်ႈၼႅၼ်ႈၼႃ", + "LOGIC_BOOLEAN_TRUE": "မၢၼ်ႇမႅၼ်ႈ", + "LOGIC_BOOLEAN_FALSE": "ဢမ်ႇၼႅၼ်ႈၼႃ", + "LOGIC_BOOLEAN_TOOLTIP": "မၢၼ်ႇမႅၼ်ႈလႄႈသင် ဢမ်ႇၼႅၼ်ႈၼႃလႄႈသင် ႁူၼ်ၶိုၼ်း", + "LOGIC_NULL": "ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ", + "LOGIC_NULL_TOOLTIP": "လဵဝ်ၶိုၼ်း ဢမ်ႇၶဝ်ႈၶႂၢင်ႇ", + "LOGIC_TERNARY_CONDITION": "ၸၢမ်း", + "LOGIC_TERNARY_IF_TRUE": "သင်ဝႃႈ မၢၼ်ႇမႅၼ်ႈ", + "LOGIC_TERNARY_IF_FALSE": "သင်ဝႃႈ ဢမ်ႇၼႅၼ်ႈၼႃ", + "LOGIC_TERNARY_TOOLTIP": "ၸၢမ်းၵူတ်ႇတူၺ်း သၢႆငၢႆ။ သင်ဝႃႈ သၢႆငၢႆမၢၼ်ႇမႅၼ်ႈ, လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်မၢၼ်ႇမႅၼ်ႈ'; လိူဝ်ၼၼ်ႉ လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) 'သင်ဢမ်ႇၼႅၼ်ႈၼႃ'။", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/မၢႆၼပ်ႉ", + "MATH_NUMBER_TOOLTIP": "မၢႆၼပ်ႉ ၼိုင်ႈဢၼ်", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/ပၢႆးၼပ်ႉ", + "MATH_ARITHMETIC_TOOLTIP_ADD": "လဵဝ်ၶိုၼ်း တၢင်းၼမ် ၼႂ်းမၢႆၼပ်ႉ သွင်", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "လဵဝ်ၶိုၼ်း ဢၼ်ပႅၵ်ႇပိူင်ႈ ၼႂ်းမၢႆၼပ်ႉ သွင်", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "လဵဝ်ၶိုၼ်း ဢၼ်ဢဝ်ဢွၵ်ႇ ၼႂ်းမၢႆၼပ်ႉ သွင်", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "လဵဝ်ၶိုၼ်း ပမႃႇၼ ၼႂ်းမၢႆၼပ်ႉ သွင်", + "MATH_ARITHMETIC_TOOLTIP_POWER": "လဵဝ်ၶိုၼ်း တူဝ်ၼပ်ႉမၢႆၼိုင်ႈၼႆႉ ၸွႆႈႁႅင်းပၼ် တူဝ်ၼပ်ႉမၢႆသွင်", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root (မၢႆတူပ်ႉမိူၼ်)", + "MATH_SINGLE_OP_ROOT": "မၢႆတူပ်ႉမိူၼ်", + "MATH_SINGLE_TOOLTIP_ROOT": "လဵဝ်ၶိုၼ်း မၢႆတူပ်ႉမိူၼ် ၼႂ်းမၢႆၼပ်ႉ", + "MATH_SINGLE_OP_ABSOLUTE": "ပၵတိ", + "MATH_SINGLE_TOOLTIP_ABS": "လဵဝ်ၶိုၼ်း ၵႃႈၶၼ် (ၼမ်ႉၵတ်ႉ) ပၵတိ ၼႂ်းမၢႆၼပ်ႉ", + "MATH_SINGLE_TOOLTIP_NEG": "လဵဝ်ၶိုၼ်း ဢၼ်သၢၼ်ၶတ်း ၼႂ်း မၢႆၼပ်ႉ", + "MATH_SINGLE_TOOLTIP_LN": "လဵဝ်ၶိုၼ်း လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ", + "MATH_SINGLE_TOOLTIP_LOG10": "လဵဝ်ၶိုၼ်း ပိုၼ်ႉထၢၼ် 10 လွၵ်းလၢႆးၼပ်ႉ ၼႂ်းမၢႆၼပ်ႉ", + "MATH_SINGLE_TOOLTIP_EXP": "လဵဝ်ၶိုၼ်း e ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ", + "MATH_SINGLE_TOOLTIP_POW10": "လဵဝ်ၶိုၼ်း 10 ၵႂႃႇတီႈ ပႃႇဝႃႇ ၼႂ်းမၢႆၼပ်ႉ", + "MATH_IS_EVEN": "ပဵၼ်ၵူပ်ႉ", + "MATH_IS_ODD": "ပဵၼ်ၵိၵ်ႈ" +} diff --git a/msg/json/si.json b/msg/json/si.json index cf141f8f721..cb79a9984e1 100644 --- a/msg/json/si.json +++ b/msg/json/si.json @@ -1,16 +1,16 @@ -{ - "@metadata": { - "authors": [ - "හරිත" - ] - }, - "VARIABLES_DEFAULT_NAME": "අයිතමය", - "DELETE_X_BLOCKS": "රූපතහඩු %1 මකාදමන්න", - "EXPAND_ALL": "රූපතහඩු විහිදන්න", - "HELP": "උදව්", - "COLOUR_RGB_RED": "රතු", - "COLOUR_RGB_GREEN": "කොළ", - "COLOUR_RGB_BLUE": "නිල්", - "DIALOG_OK": "හරි", - "DIALOG_CANCEL": "අවලංගු කරන්න" -} +{ + "@metadata": { + "authors": [ + "හරිත" + ] + }, + "VARIABLES_DEFAULT_NAME": "අයිතමය", + "DELETE_X_BLOCKS": "රූපතහඩු %1 මකාදමන්න", + "EXPAND_ALL": "රූපතහඩු විහිදන්න", + "HELP": "උදව්", + "COLOUR_RGB_RED": "රතු", + "COLOUR_RGB_GREEN": "කොළ", + "COLOUR_RGB_BLUE": "නිල්", + "DIALOG_OK": "හරි", + "DIALOG_CANCEL": "අවලංගු කරන්න" +} diff --git a/msg/json/sk.json b/msg/json/sk.json index 26a89d16f3f..a907827ab81 100644 --- a/msg/json/sk.json +++ b/msg/json/sk.json @@ -1,348 +1,348 @@ -{ - "@metadata": { - "authors": [ - "Adams", - "Genhis", - "Jaroslav.micek", - "Kusavica", - "Lexected", - "Marian.stano", - "Mark", - "Nykta 1917", - "Pmikolas44", - "TomášPolonec", - "Yardom78" - ] - }, - "VARIABLES_DEFAULT_NAME": "prvok", - "UNNAMED_KEY": "nepomenované", - "TODAY": "Dnes", - "DUPLICATE_BLOCK": "Duplikovať", - "ADD_COMMENT": "Pridať komentár", - "REMOVE_COMMENT": "Odstrániť komentár", - "DUPLICATE_COMMENT": "Duplicitný komentár", - "EXTERNAL_INPUTS": "Vonkajšie vstupy", - "INLINE_INPUTS": "Riadkové vstupy", - "DELETE_BLOCK": "Odstrániť blok", - "DELETE_X_BLOCKS": "Odstrániť %1 blokov", - "DELETE_ALL_BLOCKS": "Zmazať všetkých %1 dielcov?", - "CLEAN_UP": "Narovnať bloky", - "COLLAPSE_BLOCK": "Zvinúť blok", - "COLLAPSE_ALL": "Zvinúť bloky", - "EXPAND_BLOCK": "Rozvinúť blok", - "EXPAND_ALL": "Rozvinúť bloky", - "DISABLE_BLOCK": "Vypnúť blok", - "ENABLE_BLOCK": "Povoliť blok", - "HELP": "Pomoc", - "UNDO": "Späť", - "REDO": "Znova", - "CHANGE_VALUE_TITLE": "Zmeniť hodnotu:", - "RENAME_VARIABLE": "Premenovať premennú...", - "RENAME_VARIABLE_TITLE": "Premenovať všetky premenné '%1' na:", - "NEW_VARIABLE": "Vytvoriť premennú...", - "NEW_STRING_VARIABLE": "Vytvoriť reťazovú premennú...", - "NEW_NUMBER_VARIABLE": "Vytvoriť číselnú premennú...", - "NEW_COLOUR_VARIABLE": "vytvoriť farbu premennej", - "NEW_VARIABLE_TYPE_TITLE": "nový typ premennej", - "NEW_VARIABLE_TITLE": "Názov novej premennej:", - "VARIABLE_ALREADY_EXISTS": "Premenná s názvom %1 už existuje.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Premenná s názvom '%1' už existuje pre inú premennú typu '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Odstrániť %1 použití premennej '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nie je možné zmazať premennú „%1“, pretože je súčasťou definície funkcie „%2“", - "DELETE_VARIABLE": "Odstrániť premennú '%1'", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Zvoľte farbu z palety.", - "COLOUR_RANDOM_TITLE": "náhodná farba", - "COLOUR_RANDOM_TOOLTIP": "Zvoliť farbu náhodne.", - "COLOUR_RGB_TITLE": "ofarbiť s", - "COLOUR_RGB_RED": "červená", - "COLOUR_RGB_GREEN": "zelená", - "COLOUR_RGB_BLUE": "modrá", - "COLOUR_RGB_TOOLTIP": "Vytvoriť farbu pomocou zadaného množstva červenej, zelenej a modrej. Množstvo musí byť medzi 0 a 100.", - "COLOUR_BLEND_TITLE": "zmiešať", - "COLOUR_BLEND_COLOUR1": "farba 1", - "COLOUR_BLEND_COLOUR2": "farba 2", - "COLOUR_BLEND_RATIO": "pomer", - "COLOUR_BLEND_TOOLTIP": "Zmieša dve farby v danom pomere (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "opakuj %1 krát", - "CONTROLS_REPEAT_INPUT_DO": "rob", - "CONTROLS_REPEAT_TOOLTIP": "Opakuj určité príkazy viackrát.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "opakuj kým", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "opakuj kým nebude", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Kým je hodnota pravdivá, vykonávaj príkazy.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Kým je hodnota nepravdivá, vykonávaj príkazy.", - "CONTROLS_FOR_TOOLTIP": "Nechá premennú '%1' nadobúdať hodnoty od začiatočného čísla po konečné s daným medzikrokom a vykoná zadané bloky.", - "CONTROLS_FOR_TITLE": "počítať s %1 od %2 do %3 o %4", - "CONTROLS_FOREACH_TITLE": "pre každý prvok %1 v zozname %2", - "CONTROLS_FOREACH_TOOLTIP": "Pre každý prvok v zozname priraď jeho hodnotu do premenej '%1' a vykonaj príkazy.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "opustiť slučku", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "prejdi na nasledujúce opakovanie slučky", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Opustiť túto slučku.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Vynechať zvyšok tejto slučky a pokračovať ďalším opakovaním.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozornenie: Tento blok sa môže používať len v rámci slučky.", - "CONTROLS_IF_TOOLTIP_1": "Ak je hodnota pravda, vykonaj príkazy.", - "CONTROLS_IF_TOOLTIP_2": "Ak je hodnota pravda, vykonaj príkazy v prvom bloku. Inak vykonaj príkazy v druhom bloku.", - "CONTROLS_IF_TOOLTIP_3": "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku.", - "CONTROLS_IF_TOOLTIP_4": "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku. Ak ani jedna hodnota nie je pravda, vykonaj príkazy v poslednom bloku.", - "CONTROLS_IF_MSG_IF": "ak", - "CONTROLS_IF_MSG_ELSEIF": "inak ak", - "CONTROLS_IF_MSG_ELSE": "inak", - "CONTROLS_IF_IF_TOOLTIP": "Pridať, odstrániť alebo zmeniť poradie oddielov tohto \"ak\" bloku.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Pridať podmienku k \"ak\" bloku.", - "CONTROLS_IF_ELSE_TOOLTIP": "Pridať poslednú záchytnú podmienku k \"ak\" bloku.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Vráť hodnotu pravda, ak sú vstupy rovnaké.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Vráť hodnotu pravda, ak vstupy nie sú rovnaké.", - "LOGIC_COMPARE_TOOLTIP_LT": "Vráť hodnotu pravda, ak prvý vstup je menší než druhý.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Vráť hodnotu pravda ak prvý vstup je menší alebo rovný druhému.", - "LOGIC_COMPARE_TOOLTIP_GT": "Vráť hodnotu pravda ak prvý vstup je väčší než druhý.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Vráť hodnotu pravda ak prvý vstup je väčší alebo rovný druhému.", - "LOGIC_OPERATION_TOOLTIP_AND": "Vráť hodnotu pravda, ak sú vstupy pravdivé.", - "LOGIC_OPERATION_AND": "a", - "LOGIC_OPERATION_TOOLTIP_OR": "Vráť hodnotu pravda, ak je aspoň jeden vstup pravda.", - "LOGIC_OPERATION_OR": "alebo", - "LOGIC_NEGATE_TITLE": "nie je %1", - "LOGIC_NEGATE_TOOLTIP": "Vráti hodnotu pravda, ak je vstup nepravda. Vráti hodnotu nepravda ak je vstup pravda.", - "LOGIC_BOOLEAN_TRUE": "pravda", - "LOGIC_BOOLEAN_FALSE": "nepravda", - "LOGIC_BOOLEAN_TOOLTIP": "Vráť buď hodnotu pravda alebo nepravda.", - "LOGIC_NULL": "nič", - "LOGIC_NULL_TOOLTIP": "Vráti hodnotu nula.", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "ak pravda", - "LOGIC_TERNARY_IF_FALSE": "ak nepravda", - "LOGIC_TERNARY_TOOLTIP": "Skontroluj podmienku testom. Ak je podmienka pravda, vráť hodnotu \"ak pravda\", inak vráť hodnotu \"ak nepravda\".", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Číslo.", - "MATH_TRIG_ASIN": "arcsin", - "MATH_TRIG_ACOS": "arccos", - "MATH_TRIG_ATAN": "arctan", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Vráť súčet dvoch čísel.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vráť rozdiel dvoch čísel.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vráť súčin dvoch čísel.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vráť podiel dvoch čísel.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Vráť prvé číslo umocnené druhým.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "druhá odmocnina", - "MATH_SINGLE_TOOLTIP_ROOT": "Vráť druhú odmocninu čísla.", - "MATH_SINGLE_OP_ABSOLUTE": "absolútna hodnota", - "MATH_SINGLE_TOOLTIP_ABS": "Vráť absolútnu hodnotu čísla.", - "MATH_SINGLE_TOOLTIP_NEG": "Vráť opačné číslo.", - "MATH_SINGLE_TOOLTIP_LN": "Vráť prirodzený logaritmus čísla.", - "MATH_SINGLE_TOOLTIP_LOG10": "Vráť logaritmus čísla so základom 10.", - "MATH_SINGLE_TOOLTIP_EXP": "Vráť e umocnené číslom.", - "MATH_SINGLE_TOOLTIP_POW10": "Vráť 10 umocnené číslom.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Vráť sínus uhla (v stupňoch).", - "MATH_TRIG_TOOLTIP_COS": "Vráť kosínus uhla (v stupňoch).", - "MATH_TRIG_TOOLTIP_TAN": "Vráť tangens uhla (v stupňoch).", - "MATH_TRIG_TOOLTIP_ASIN": "Vráť arkus sínus čísla.", - "MATH_TRIG_TOOLTIP_ACOS": "Vráť arkus kosínus čísla.", - "MATH_TRIG_TOOLTIP_ATAN": "Vráť arkus tangens čísla.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant‎", - "MATH_CONSTANT_TOOLTIP": "Vráť jednu zo zvyčajných konštánt: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), alebo ∞ (nekonečno).", - "MATH_IS_EVEN": "je párne", - "MATH_IS_ODD": "je nepárne", - "MATH_IS_PRIME": "je prvočíslo", - "MATH_IS_WHOLE": "je celé číslo", - "MATH_IS_POSITIVE": "je kladné", - "MATH_IS_NEGATIVE": "je záporné", - "MATH_IS_DIVISIBLE_BY": "je deliteľné", - "MATH_IS_TOOLTIP": "Skontroluj či je číslo párne, nepárne, celé, kladné, záporné alebo deliteľné určitým číslom. Vráť hodnotu pravda alebo nepravda.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "zmeniť %1 o %2", - "MATH_CHANGE_TOOLTIP": "Pridaj číslo do premennej \"%1\".", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Zaokrúhli číslo nahor alebo nadol.", - "MATH_ROUND_OPERATOR_ROUND": "zaokrúhli", - "MATH_ROUND_OPERATOR_ROUNDUP": "zaokrúhli nahor", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokrúhli nadol", - "MATH_ONLIST_OPERATOR_SUM": "súčet zoznamu", - "MATH_ONLIST_TOOLTIP_SUM": "Vráť súčet všetkých čísel v zozname.", - "MATH_ONLIST_OPERATOR_MIN": "najmenšie v zozname", - "MATH_ONLIST_TOOLTIP_MIN": "Vrátiť najmenšie číslo v zozname.", - "MATH_ONLIST_OPERATOR_MAX": "najväčšie v zozname", - "MATH_ONLIST_TOOLTIP_MAX": "Vrátiť najväčšie číslo v zozname.", - "MATH_ONLIST_OPERATOR_AVERAGE": "priemer zoznamu", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Vráť aritmetický priemer čísel v zozname.", - "MATH_ONLIST_OPERATOR_MEDIAN": "medián zoznamu", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Vráť medián čísel v zozname.", - "MATH_ONLIST_OPERATOR_MODE": "najčastejšie v zozname", - "MATH_ONLIST_TOOLTIP_MODE": "Vrátiť najčastejší prvok v zozname.", - "MATH_ONLIST_OPERATOR_STD_DEV": "smerodajná odchýlka zoznamu", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Vráť smeroddajnú odchýlku zoznamu.", - "MATH_ONLIST_OPERATOR_RANDOM": "náhodný prvok zoznamu", - "MATH_ONLIST_TOOLTIP_RANDOM": "Vráť náhodne zvolený prvok zoznamu.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "zvyšok po delení %1 + %2", - "MATH_MODULO_TOOLTIP": "Vráť zvyšok po delení jedného čísla druhým.", - "MATH_CONSTRAIN_TITLE": "obmedz %1 od %2 do %3", - "MATH_CONSTRAIN_TOOLTIP": "Obmedzí číslo do zadaných hraníc (vrátane).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "náhodné celé číslo od %1 do %2", - "MATH_RANDOM_INT_TOOLTIP": "Vráť náhodné celé číslo z určeného intervalu (vrátane).", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "náhodné číslo od 0 do 1", - "MATH_RANDOM_FLOAT_TOOLTIP": "Vráť náhodné číslo z intervalu 0.0 (vrátane) až 1.0.", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Vráťte arktangent bodu (X, Y) v stupňoch od -180 do 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Písmeno, slovo alebo riadok textu.", - "TEXT_JOIN_TITLE_CREATEWITH": "vytvor text z", - "TEXT_JOIN_TOOLTIP": "Vytvor text spojením určitého počtu prvkov.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "spoj", - "TEXT_CREATE_JOIN_TOOLTIP": "Pridaj, odstráň alebo zmeň poradie oddielov v tomto textovom bloku.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Pridaj prvok do textu.", - "TEXT_APPEND_TITLE": "do %1 pridaj text %2", - "TEXT_APPEND_TOOLTIP": "Pridaj určitý text do premennej '%1'.", - "TEXT_LENGTH_TITLE": "dĺžka %1", - "TEXT_LENGTH_TOOLTIP": "Vráti počet písmen (s medzerami) v zadanom texte.", - "TEXT_ISEMPTY_TITLE": "%1 je prázdny", - "TEXT_ISEMPTY_TOOLTIP": "Vráti hodnotu pravda, ak zadaný text je prázdny.", - "TEXT_INDEXOF_TOOLTIP": "Vráti index prvého/posledného výskytu prvého textu v druhom texte. Ak nenájde, vráti %1.", - "TEXT_INDEXOF_TITLE": "v texte %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "nájdi prvý výskyt textu", - "TEXT_INDEXOF_OPERATOR_LAST": "nájdi posledný výskyt textu", - "TEXT_CHARAT_TITLE": "v texte %1 %2", - "TEXT_CHARAT_FROM_START": "zisti písmeno #", - "TEXT_CHARAT_FROM_END": "zisti # písmeno od konca", - "TEXT_CHARAT_FIRST": "zisti prvé písmeno", - "TEXT_CHARAT_LAST": "zisti posledné písmeno", - "TEXT_CHARAT_RANDOM": "vyber náhodné písmeno", - "TEXT_CHARAT_TOOLTIP": "Vráti písmeno na určenej pozícii.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Vráti určenú časť textu.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "v texte", - "TEXT_GET_SUBSTRING_START_FROM_START": "vyber podreťazec od písmena #", - "TEXT_GET_SUBSTRING_START_FROM_END": "vyber podreťazec od # písmena od konca", - "TEXT_GET_SUBSTRING_START_FIRST": "vyber podreťazec od začiatku", - "TEXT_GET_SUBSTRING_END_FROM_START": "po písmeno #", - "TEXT_GET_SUBSTRING_END_FROM_END": "po # písmeno od konca", - "TEXT_GET_SUBSTRING_END_LAST": "po koniec", - "TEXT_CHANGECASE_TOOLTIP": "Vráť kópiu textu s inou veľkosťou písmen.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "na VEĽKÉ PÍSMENÁ", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "na malé písmená", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "na Veľké Začiatočné Písmená", - "TEXT_TRIM_TOOLTIP": "Vráť kópiu textu bez medzier na jednom alebo oboch koncoch.", - "TEXT_TRIM_OPERATOR_BOTH": "odstráň medzery z oboch strán", - "TEXT_TRIM_OPERATOR_LEFT": "odstráň medzery z ľavej strany", - "TEXT_TRIM_OPERATOR_RIGHT": "odstráň medzery z pravej strany", - "TEXT_PRINT_TITLE": "píš %1", - "TEXT_PRINT_TOOLTIP": "Napíš zadaný text, číslo alebo hodnotu.", - "TEXT_PROMPT_TYPE_TEXT": "výzva za zadanie textu so správou", - "TEXT_PROMPT_TYPE_NUMBER": "výzva na zadanie čísla so správou", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Výzva pre používateľa na zadanie čísla.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Výzva pre používateľa na zadanie textu.", - "TEXT_COUNT_MESSAGE0": "počet výskytov %1 v %2", - "TEXT_COUNT_TOOLTIP": "Počet výskytov textu nachádzajúcom sa v inom texte.", - "TEXT_REPLACE_MESSAGE0": "zameniť %1 za %2 v reťazci %3", - "TEXT_REPLACE_TOOLTIP": "Zameniť všetky výskyty textu za iný text.", - "TEXT_REVERSE_MESSAGE0": "text odzadu %1", - "TEXT_REVERSE_TOOLTIP": "Obrátiť poradie písmen v texte.", - "LISTS_CREATE_EMPTY_TITLE": "prázdny zoznam", - "LISTS_CREATE_EMPTY_TOOLTIP": "Vráti zoznam nulovej dĺžky, ktorý neobsahuje žiadne prvky.", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Vytvor zoznam s ľubovoľným počtom prvkov.", - "LISTS_CREATE_WITH_INPUT_WITH": "vytvor zoznam s", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "zoznam", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Pridaj, odstráň alebo zmeň poradie v tomto zoznamovom bloku.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Pridaj prvok do zoznamu.", - "LISTS_REPEAT_TOOLTIP": "Vytvorí zoznam s niekoľkými rovnakými prvkami s danou hodnotou.", - "LISTS_REPEAT_TITLE": "vytvor zoznam s prvkom %1 opakovaným %2 krát", - "LISTS_LENGTH_TITLE": "dĺžka %1", - "LISTS_LENGTH_TOOLTIP": "Vráti dĺžku zoznamu", - "LISTS_ISEMPTY_TITLE": "%1 je prázdny", - "LISTS_ISEMPTY_TOOLTIP": "Vráti pravda, ak je zoznam prázdny.", - "LISTS_INLIST": "v zozname", - "LISTS_INDEX_OF_FIRST": "nájdi prvý výskyt prvku", - "LISTS_INDEX_OF_LAST": "nájdi posledný výskyt prvku", - "LISTS_INDEX_OF_TOOLTIP": "Vráti index prvého/posledného výskytu prvku v zozname. Ak sa nič nenašlo, vráti %1.", - "LISTS_GET_INDEX_GET": "zisti", - "LISTS_GET_INDEX_GET_REMOVE": "zisti a odstráň", - "LISTS_GET_INDEX_REMOVE": "odstráň", - "LISTS_GET_INDEX_FROM_END": "# od konca", - "LISTS_GET_INDEX_FIRST": "prvý", - "LISTS_GET_INDEX_LAST": "posledný", - "LISTS_GET_INDEX_RANDOM": "náhodný", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 je počiatočný prvok.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 je posledný prvok.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Vráti prvok na určenej pozícii v zozname.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vráti počiatočný prvok zoznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vráti posledný prvok zoznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vráti náhodný prvok zoznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Odstráni a vráti prvok z určenej pozície v zozname.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Odstráni a vráti prvý prvok v zozname.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Odstráni a vráti posledný prvok v zozname.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Odstráni a vráti náhodný prvok v zozname.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Odstráni prvok na určenej pozícii v zozname.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Odstráni prvý prvok v zozname.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Odstráni posledný prvok v zozname.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Odstráni náhodný prvok v zozname.", - "LISTS_SET_INDEX_SET": "nastaviť", - "LISTS_SET_INDEX_INSERT": "vložiť na", - "LISTS_SET_INDEX_INPUT_TO": "ako", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Nastaví prvok na určenej pozícii v zozname.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Nastaví prvý prvok v zozname.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Nastaví posledný prvok v zozname.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Nastaví posledný prvok v zozname.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Vsunie prvok na určenú pozíciu v zozname.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Vsunie prvok na začiatok zoznamu.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Pripojí prvok na koniec zoznamu.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Vsunie prvok na náhodné miesto v zozname.", - "LISTS_GET_SUBLIST_START_FROM_START": "získať podzoznam od #", - "LISTS_GET_SUBLIST_START_FROM_END": "Získať podzoznam od # od konca", - "LISTS_GET_SUBLIST_START_FIRST": "Získať podzoznam od začiatku", - "LISTS_GET_SUBLIST_END_FROM_START": "po #", - "LISTS_GET_SUBLIST_END_FROM_END": "po # od konca", - "LISTS_GET_SUBLIST_END_LAST": "po koniec", - "LISTS_GET_SUBLIST_TOOLTIP": "Skopíruje určený úsek zoznamu.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "zoradiť %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Zoradiť kópiu zoznamu.", - "LISTS_SORT_ORDER_ASCENDING": "Vzostupne", - "LISTS_SORT_ORDER_DESCENDING": "Zostupne", - "LISTS_SORT_TYPE_NUMERIC": "numericky", - "LISTS_SORT_TYPE_TEXT": "abecedne", - "LISTS_SORT_TYPE_IGNORECASE": "abecedne, ignorovať veľkosť písmen", - "LISTS_SPLIT_LIST_FROM_TEXT": "vytvoriť zoznam z textu", - "LISTS_SPLIT_TEXT_FROM_LIST": "vytvoriť text zo zoznamu", - "LISTS_SPLIT_WITH_DELIMITER": "s oddeľovačom", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Rozdelenie textu do zoznamu textov, lámanie na oddeľovačoch.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Spojiť zoznam textov do jedného textu s oddeľovačmi.", - "LISTS_REVERSE_MESSAGE0": "obrátiť %1", - "LISTS_REVERSE_TOOLTIP": "Obrátiť kópiu zoznamu.", - "VARIABLES_GET_TOOLTIP": "Vráti hodnotu tejto premennej.", - "VARIABLES_GET_CREATE_SET": "Vytvoriť \"nastaviť %1\"", - "VARIABLES_SET": "nastaviť %1 na %2", - "VARIABLES_SET_TOOLTIP": "Nastaví túto premennú, aby sa rovnala vstupu.", - "VARIABLES_SET_CREATE_GET": "Vytvoriť \"získať %1\"", - "PROCEDURES_DEFNORETURN_TITLE": "na", - "PROCEDURES_DEFNORETURN_PROCEDURE": "urob niečo", - "PROCEDURES_BEFORE_PARAMS": "s:", - "PROCEDURES_CALL_BEFORE_PARAMS": "s:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Vytvorí funciu bez výstupu.", - "PROCEDURES_DEFNORETURN_COMMENT": "Doplň, čo robí táto funkcia...", - "PROCEDURES_DEFRETURN_RETURN": "vrátiť", - "PROCEDURES_DEFRETURN_TOOLTIP": "Vytvorí funkciu s výstupom.", - "PROCEDURES_ALLOW_STATEMENTS": "povoliť príkazy", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Upozornenie: Táto funkcia má duplicitné parametre.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://sk.wikipedia.org/wiki/Podprogram", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Spustí používateľom definovanú funkciu '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://sk.wikipedia.org/wiki/Podprogram", - "PROCEDURES_CALLRETURN_TOOLTIP": "Spustí používateľom definovanú funkciu '%1' a použije jej výstup.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "vstupy", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Pridať, odstrániť alebo zmeniť poradie vstupov tejto funkcie.", - "PROCEDURES_MUTATORARG_TITLE": "názov vstupu:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Pridať vstup do funkcie.", - "PROCEDURES_HIGHLIGHT_DEF": "Zvýrazniť definíciu funkcie", - "PROCEDURES_CREATE_DO": "Vytvoriť '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Ak je hodnota pravda, tak vráti druhú hodnotu.", - "PROCEDURES_IFRETURN_WARNING": "Upozornenie: Tento blok môže byť len vo vnútri funkcie.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Povedz niečo...", - "WORKSPACE_ARIA_LABEL": "Pracovisko Bloskly", - "COLLAPSED_WARNINGS_WARNING": "Zrútené bloky obsahujú varovanie.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Zrušiť" -} +{ + "@metadata": { + "authors": [ + "Adams", + "Genhis", + "Jaroslav.micek", + "Kusavica", + "Lexected", + "Marian.stano", + "Mark", + "Nykta 1917", + "Pmikolas44", + "TomášPolonec", + "Yardom78" + ] + }, + "VARIABLES_DEFAULT_NAME": "prvok", + "UNNAMED_KEY": "nepomenované", + "TODAY": "Dnes", + "DUPLICATE_BLOCK": "Duplikovať", + "ADD_COMMENT": "Pridať komentár", + "REMOVE_COMMENT": "Odstrániť komentár", + "DUPLICATE_COMMENT": "Duplicitný komentár", + "EXTERNAL_INPUTS": "Vonkajšie vstupy", + "INLINE_INPUTS": "Riadkové vstupy", + "DELETE_BLOCK": "Odstrániť blok", + "DELETE_X_BLOCKS": "Odstrániť %1 blokov", + "DELETE_ALL_BLOCKS": "Zmazať všetkých %1 dielcov?", + "CLEAN_UP": "Narovnať bloky", + "COLLAPSE_BLOCK": "Zvinúť blok", + "COLLAPSE_ALL": "Zvinúť bloky", + "EXPAND_BLOCK": "Rozvinúť blok", + "EXPAND_ALL": "Rozvinúť bloky", + "DISABLE_BLOCK": "Vypnúť blok", + "ENABLE_BLOCK": "Povoliť blok", + "HELP": "Pomoc", + "UNDO": "Späť", + "REDO": "Znova", + "CHANGE_VALUE_TITLE": "Zmeniť hodnotu:", + "RENAME_VARIABLE": "Premenovať premennú...", + "RENAME_VARIABLE_TITLE": "Premenovať všetky premenné '%1' na:", + "NEW_VARIABLE": "Vytvoriť premennú...", + "NEW_STRING_VARIABLE": "Vytvoriť reťazovú premennú...", + "NEW_NUMBER_VARIABLE": "Vytvoriť číselnú premennú...", + "NEW_COLOUR_VARIABLE": "vytvoriť farbu premennej", + "NEW_VARIABLE_TYPE_TITLE": "nový typ premennej", + "NEW_VARIABLE_TITLE": "Názov novej premennej:", + "VARIABLE_ALREADY_EXISTS": "Premenná s názvom %1 už existuje.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Premenná s názvom '%1' už existuje pre inú premennú typu '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Odstrániť %1 použití premennej '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nie je možné zmazať premennú „%1“, pretože je súčasťou definície funkcie „%2“", + "DELETE_VARIABLE": "Odstrániť premennú '%1'", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Zvoľte farbu z palety.", + "COLOUR_RANDOM_TITLE": "náhodná farba", + "COLOUR_RANDOM_TOOLTIP": "Zvoliť farbu náhodne.", + "COLOUR_RGB_TITLE": "ofarbiť s", + "COLOUR_RGB_RED": "červená", + "COLOUR_RGB_GREEN": "zelená", + "COLOUR_RGB_BLUE": "modrá", + "COLOUR_RGB_TOOLTIP": "Vytvoriť farbu pomocou zadaného množstva červenej, zelenej a modrej. Množstvo musí byť medzi 0 a 100.", + "COLOUR_BLEND_TITLE": "zmiešať", + "COLOUR_BLEND_COLOUR1": "farba 1", + "COLOUR_BLEND_COLOUR2": "farba 2", + "COLOUR_BLEND_RATIO": "pomer", + "COLOUR_BLEND_TOOLTIP": "Zmieša dve farby v danom pomere (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "opakuj %1 krát", + "CONTROLS_REPEAT_INPUT_DO": "rob", + "CONTROLS_REPEAT_TOOLTIP": "Opakuj určité príkazy viackrát.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "opakuj kým", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "opakuj kým nebude", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Kým je hodnota pravdivá, vykonávaj príkazy.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Kým je hodnota nepravdivá, vykonávaj príkazy.", + "CONTROLS_FOR_TOOLTIP": "Nechá premennú '%1' nadobúdať hodnoty od začiatočného čísla po konečné s daným medzikrokom a vykoná zadané bloky.", + "CONTROLS_FOR_TITLE": "počítať s %1 od %2 do %3 o %4", + "CONTROLS_FOREACH_TITLE": "pre každý prvok %1 v zozname %2", + "CONTROLS_FOREACH_TOOLTIP": "Pre každý prvok v zozname priraď jeho hodnotu do premenej '%1' a vykonaj príkazy.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "opustiť slučku", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "prejdi na nasledujúce opakovanie slučky", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Opustiť túto slučku.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Vynechať zvyšok tejto slučky a pokračovať ďalším opakovaním.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozornenie: Tento blok sa môže používať len v rámci slučky.", + "CONTROLS_IF_TOOLTIP_1": "Ak je hodnota pravda, vykonaj príkazy.", + "CONTROLS_IF_TOOLTIP_2": "Ak je hodnota pravda, vykonaj príkazy v prvom bloku. Inak vykonaj príkazy v druhom bloku.", + "CONTROLS_IF_TOOLTIP_3": "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku.", + "CONTROLS_IF_TOOLTIP_4": "Ak je prvá hodnota pravda, vykonaj príkazy v prvom bloku. Inak, ak je druhá hodnota pravda, vykonaj príkazy v druhom bloku. Ak ani jedna hodnota nie je pravda, vykonaj príkazy v poslednom bloku.", + "CONTROLS_IF_MSG_IF": "ak", + "CONTROLS_IF_MSG_ELSEIF": "inak ak", + "CONTROLS_IF_MSG_ELSE": "inak", + "CONTROLS_IF_IF_TOOLTIP": "Pridať, odstrániť alebo zmeniť poradie oddielov tohto \"ak\" bloku.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Pridať podmienku k \"ak\" bloku.", + "CONTROLS_IF_ELSE_TOOLTIP": "Pridať poslednú záchytnú podmienku k \"ak\" bloku.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Vráť hodnotu pravda, ak sú vstupy rovnaké.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Vráť hodnotu pravda, ak vstupy nie sú rovnaké.", + "LOGIC_COMPARE_TOOLTIP_LT": "Vráť hodnotu pravda, ak prvý vstup je menší než druhý.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Vráť hodnotu pravda ak prvý vstup je menší alebo rovný druhému.", + "LOGIC_COMPARE_TOOLTIP_GT": "Vráť hodnotu pravda ak prvý vstup je väčší než druhý.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Vráť hodnotu pravda ak prvý vstup je väčší alebo rovný druhému.", + "LOGIC_OPERATION_TOOLTIP_AND": "Vráť hodnotu pravda, ak sú vstupy pravdivé.", + "LOGIC_OPERATION_AND": "a", + "LOGIC_OPERATION_TOOLTIP_OR": "Vráť hodnotu pravda, ak je aspoň jeden vstup pravda.", + "LOGIC_OPERATION_OR": "alebo", + "LOGIC_NEGATE_TITLE": "nie je %1", + "LOGIC_NEGATE_TOOLTIP": "Vráti hodnotu pravda, ak je vstup nepravda. Vráti hodnotu nepravda ak je vstup pravda.", + "LOGIC_BOOLEAN_TRUE": "pravda", + "LOGIC_BOOLEAN_FALSE": "nepravda", + "LOGIC_BOOLEAN_TOOLTIP": "Vráť buď hodnotu pravda alebo nepravda.", + "LOGIC_NULL": "nič", + "LOGIC_NULL_TOOLTIP": "Vráti hodnotu nula.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "ak pravda", + "LOGIC_TERNARY_IF_FALSE": "ak nepravda", + "LOGIC_TERNARY_TOOLTIP": "Skontroluj podmienku testom. Ak je podmienka pravda, vráť hodnotu \"ak pravda\", inak vráť hodnotu \"ak nepravda\".", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Číslo.", + "MATH_TRIG_ASIN": "arcsin", + "MATH_TRIG_ACOS": "arccos", + "MATH_TRIG_ATAN": "arctan", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Vráť súčet dvoch čísel.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vráť rozdiel dvoch čísel.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vráť súčin dvoch čísel.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vráť podiel dvoch čísel.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Vráť prvé číslo umocnené druhým.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "druhá odmocnina", + "MATH_SINGLE_TOOLTIP_ROOT": "Vráť druhú odmocninu čísla.", + "MATH_SINGLE_OP_ABSOLUTE": "absolútna hodnota", + "MATH_SINGLE_TOOLTIP_ABS": "Vráť absolútnu hodnotu čísla.", + "MATH_SINGLE_TOOLTIP_NEG": "Vráť opačné číslo.", + "MATH_SINGLE_TOOLTIP_LN": "Vráť prirodzený logaritmus čísla.", + "MATH_SINGLE_TOOLTIP_LOG10": "Vráť logaritmus čísla so základom 10.", + "MATH_SINGLE_TOOLTIP_EXP": "Vráť e umocnené číslom.", + "MATH_SINGLE_TOOLTIP_POW10": "Vráť 10 umocnené číslom.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Vráť sínus uhla (v stupňoch).", + "MATH_TRIG_TOOLTIP_COS": "Vráť kosínus uhla (v stupňoch).", + "MATH_TRIG_TOOLTIP_TAN": "Vráť tangens uhla (v stupňoch).", + "MATH_TRIG_TOOLTIP_ASIN": "Vráť arkus sínus čísla.", + "MATH_TRIG_TOOLTIP_ACOS": "Vráť arkus kosínus čísla.", + "MATH_TRIG_TOOLTIP_ATAN": "Vráť arkus tangens čísla.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant‎", + "MATH_CONSTANT_TOOLTIP": "Vráť jednu zo zvyčajných konštánt: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), alebo ∞ (nekonečno).", + "MATH_IS_EVEN": "je párne", + "MATH_IS_ODD": "je nepárne", + "MATH_IS_PRIME": "je prvočíslo", + "MATH_IS_WHOLE": "je celé číslo", + "MATH_IS_POSITIVE": "je kladné", + "MATH_IS_NEGATIVE": "je záporné", + "MATH_IS_DIVISIBLE_BY": "je deliteľné", + "MATH_IS_TOOLTIP": "Skontroluj či je číslo párne, nepárne, celé, kladné, záporné alebo deliteľné určitým číslom. Vráť hodnotu pravda alebo nepravda.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "zmeniť %1 o %2", + "MATH_CHANGE_TOOLTIP": "Pridaj číslo do premennej \"%1\".", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Zaokrúhli číslo nahor alebo nadol.", + "MATH_ROUND_OPERATOR_ROUND": "zaokrúhli", + "MATH_ROUND_OPERATOR_ROUNDUP": "zaokrúhli nahor", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokrúhli nadol", + "MATH_ONLIST_OPERATOR_SUM": "súčet zoznamu", + "MATH_ONLIST_TOOLTIP_SUM": "Vráť súčet všetkých čísel v zozname.", + "MATH_ONLIST_OPERATOR_MIN": "najmenšie v zozname", + "MATH_ONLIST_TOOLTIP_MIN": "Vrátiť najmenšie číslo v zozname.", + "MATH_ONLIST_OPERATOR_MAX": "najväčšie v zozname", + "MATH_ONLIST_TOOLTIP_MAX": "Vrátiť najväčšie číslo v zozname.", + "MATH_ONLIST_OPERATOR_AVERAGE": "priemer zoznamu", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Vráť aritmetický priemer čísel v zozname.", + "MATH_ONLIST_OPERATOR_MEDIAN": "medián zoznamu", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Vráť medián čísel v zozname.", + "MATH_ONLIST_OPERATOR_MODE": "najčastejšie v zozname", + "MATH_ONLIST_TOOLTIP_MODE": "Vrátiť najčastejší prvok v zozname.", + "MATH_ONLIST_OPERATOR_STD_DEV": "smerodajná odchýlka zoznamu", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Vráť smeroddajnú odchýlku zoznamu.", + "MATH_ONLIST_OPERATOR_RANDOM": "náhodný prvok zoznamu", + "MATH_ONLIST_TOOLTIP_RANDOM": "Vráť náhodne zvolený prvok zoznamu.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "zvyšok po delení %1 + %2", + "MATH_MODULO_TOOLTIP": "Vráť zvyšok po delení jedného čísla druhým.", + "MATH_CONSTRAIN_TITLE": "obmedz %1 od %2 do %3", + "MATH_CONSTRAIN_TOOLTIP": "Obmedzí číslo do zadaných hraníc (vrátane).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "náhodné celé číslo od %1 do %2", + "MATH_RANDOM_INT_TOOLTIP": "Vráť náhodné celé číslo z určeného intervalu (vrátane).", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "náhodné číslo od 0 do 1", + "MATH_RANDOM_FLOAT_TOOLTIP": "Vráť náhodné číslo z intervalu 0.0 (vrátane) až 1.0.", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Vráťte arktangent bodu (X, Y) v stupňoch od -180 do 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Písmeno, slovo alebo riadok textu.", + "TEXT_JOIN_TITLE_CREATEWITH": "vytvor text z", + "TEXT_JOIN_TOOLTIP": "Vytvor text spojením určitého počtu prvkov.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "spoj", + "TEXT_CREATE_JOIN_TOOLTIP": "Pridaj, odstráň alebo zmeň poradie oddielov v tomto textovom bloku.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Pridaj prvok do textu.", + "TEXT_APPEND_TITLE": "do %1 pridaj text %2", + "TEXT_APPEND_TOOLTIP": "Pridaj určitý text do premennej '%1'.", + "TEXT_LENGTH_TITLE": "dĺžka %1", + "TEXT_LENGTH_TOOLTIP": "Vráti počet písmen (s medzerami) v zadanom texte.", + "TEXT_ISEMPTY_TITLE": "%1 je prázdny", + "TEXT_ISEMPTY_TOOLTIP": "Vráti hodnotu pravda, ak zadaný text je prázdny.", + "TEXT_INDEXOF_TOOLTIP": "Vráti index prvého/posledného výskytu prvého textu v druhom texte. Ak nenájde, vráti %1.", + "TEXT_INDEXOF_TITLE": "v texte %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "nájdi prvý výskyt textu", + "TEXT_INDEXOF_OPERATOR_LAST": "nájdi posledný výskyt textu", + "TEXT_CHARAT_TITLE": "v texte %1 %2", + "TEXT_CHARAT_FROM_START": "zisti písmeno #", + "TEXT_CHARAT_FROM_END": "zisti # písmeno od konca", + "TEXT_CHARAT_FIRST": "zisti prvé písmeno", + "TEXT_CHARAT_LAST": "zisti posledné písmeno", + "TEXT_CHARAT_RANDOM": "vyber náhodné písmeno", + "TEXT_CHARAT_TOOLTIP": "Vráti písmeno na určenej pozícii.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Vráti určenú časť textu.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "v texte", + "TEXT_GET_SUBSTRING_START_FROM_START": "vyber podreťazec od písmena #", + "TEXT_GET_SUBSTRING_START_FROM_END": "vyber podreťazec od # písmena od konca", + "TEXT_GET_SUBSTRING_START_FIRST": "vyber podreťazec od začiatku", + "TEXT_GET_SUBSTRING_END_FROM_START": "po písmeno #", + "TEXT_GET_SUBSTRING_END_FROM_END": "po # písmeno od konca", + "TEXT_GET_SUBSTRING_END_LAST": "po koniec", + "TEXT_CHANGECASE_TOOLTIP": "Vráť kópiu textu s inou veľkosťou písmen.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "na VEĽKÉ PÍSMENÁ", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "na malé písmená", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "na Veľké Začiatočné Písmená", + "TEXT_TRIM_TOOLTIP": "Vráť kópiu textu bez medzier na jednom alebo oboch koncoch.", + "TEXT_TRIM_OPERATOR_BOTH": "odstráň medzery z oboch strán", + "TEXT_TRIM_OPERATOR_LEFT": "odstráň medzery z ľavej strany", + "TEXT_TRIM_OPERATOR_RIGHT": "odstráň medzery z pravej strany", + "TEXT_PRINT_TITLE": "píš %1", + "TEXT_PRINT_TOOLTIP": "Napíš zadaný text, číslo alebo hodnotu.", + "TEXT_PROMPT_TYPE_TEXT": "výzva za zadanie textu so správou", + "TEXT_PROMPT_TYPE_NUMBER": "výzva na zadanie čísla so správou", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Výzva pre používateľa na zadanie čísla.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Výzva pre používateľa na zadanie textu.", + "TEXT_COUNT_MESSAGE0": "počet výskytov %1 v %2", + "TEXT_COUNT_TOOLTIP": "Počet výskytov textu nachádzajúcom sa v inom texte.", + "TEXT_REPLACE_MESSAGE0": "zameniť %1 za %2 v reťazci %3", + "TEXT_REPLACE_TOOLTIP": "Zameniť všetky výskyty textu za iný text.", + "TEXT_REVERSE_MESSAGE0": "text odzadu %1", + "TEXT_REVERSE_TOOLTIP": "Obrátiť poradie písmen v texte.", + "LISTS_CREATE_EMPTY_TITLE": "prázdny zoznam", + "LISTS_CREATE_EMPTY_TOOLTIP": "Vráti zoznam nulovej dĺžky, ktorý neobsahuje žiadne prvky.", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Vytvor zoznam s ľubovoľným počtom prvkov.", + "LISTS_CREATE_WITH_INPUT_WITH": "vytvor zoznam s", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "zoznam", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Pridaj, odstráň alebo zmeň poradie v tomto zoznamovom bloku.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Pridaj prvok do zoznamu.", + "LISTS_REPEAT_TOOLTIP": "Vytvorí zoznam s niekoľkými rovnakými prvkami s danou hodnotou.", + "LISTS_REPEAT_TITLE": "vytvor zoznam s prvkom %1 opakovaným %2 krát", + "LISTS_LENGTH_TITLE": "dĺžka %1", + "LISTS_LENGTH_TOOLTIP": "Vráti dĺžku zoznamu", + "LISTS_ISEMPTY_TITLE": "%1 je prázdny", + "LISTS_ISEMPTY_TOOLTIP": "Vráti pravda, ak je zoznam prázdny.", + "LISTS_INLIST": "v zozname", + "LISTS_INDEX_OF_FIRST": "nájdi prvý výskyt prvku", + "LISTS_INDEX_OF_LAST": "nájdi posledný výskyt prvku", + "LISTS_INDEX_OF_TOOLTIP": "Vráti index prvého/posledného výskytu prvku v zozname. Ak sa nič nenašlo, vráti %1.", + "LISTS_GET_INDEX_GET": "zisti", + "LISTS_GET_INDEX_GET_REMOVE": "zisti a odstráň", + "LISTS_GET_INDEX_REMOVE": "odstráň", + "LISTS_GET_INDEX_FROM_END": "# od konca", + "LISTS_GET_INDEX_FIRST": "prvý", + "LISTS_GET_INDEX_LAST": "posledný", + "LISTS_GET_INDEX_RANDOM": "náhodný", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 je počiatočný prvok.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 je posledný prvok.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Vráti prvok na určenej pozícii v zozname.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vráti počiatočný prvok zoznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vráti posledný prvok zoznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vráti náhodný prvok zoznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Odstráni a vráti prvok z určenej pozície v zozname.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Odstráni a vráti prvý prvok v zozname.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Odstráni a vráti posledný prvok v zozname.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Odstráni a vráti náhodný prvok v zozname.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Odstráni prvok na určenej pozícii v zozname.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Odstráni prvý prvok v zozname.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Odstráni posledný prvok v zozname.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Odstráni náhodný prvok v zozname.", + "LISTS_SET_INDEX_SET": "nastaviť", + "LISTS_SET_INDEX_INSERT": "vložiť na", + "LISTS_SET_INDEX_INPUT_TO": "ako", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Nastaví prvok na určenej pozícii v zozname.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Nastaví prvý prvok v zozname.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Nastaví posledný prvok v zozname.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Nastaví posledný prvok v zozname.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Vsunie prvok na určenú pozíciu v zozname.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Vsunie prvok na začiatok zoznamu.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Pripojí prvok na koniec zoznamu.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Vsunie prvok na náhodné miesto v zozname.", + "LISTS_GET_SUBLIST_START_FROM_START": "získať podzoznam od #", + "LISTS_GET_SUBLIST_START_FROM_END": "Získať podzoznam od # od konca", + "LISTS_GET_SUBLIST_START_FIRST": "Získať podzoznam od začiatku", + "LISTS_GET_SUBLIST_END_FROM_START": "po #", + "LISTS_GET_SUBLIST_END_FROM_END": "po # od konca", + "LISTS_GET_SUBLIST_END_LAST": "po koniec", + "LISTS_GET_SUBLIST_TOOLTIP": "Skopíruje určený úsek zoznamu.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "zoradiť %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Zoradiť kópiu zoznamu.", + "LISTS_SORT_ORDER_ASCENDING": "Vzostupne", + "LISTS_SORT_ORDER_DESCENDING": "Zostupne", + "LISTS_SORT_TYPE_NUMERIC": "numericky", + "LISTS_SORT_TYPE_TEXT": "abecedne", + "LISTS_SORT_TYPE_IGNORECASE": "abecedne, ignorovať veľkosť písmen", + "LISTS_SPLIT_LIST_FROM_TEXT": "vytvoriť zoznam z textu", + "LISTS_SPLIT_TEXT_FROM_LIST": "vytvoriť text zo zoznamu", + "LISTS_SPLIT_WITH_DELIMITER": "s oddeľovačom", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Rozdelenie textu do zoznamu textov, lámanie na oddeľovačoch.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Spojiť zoznam textov do jedného textu s oddeľovačmi.", + "LISTS_REVERSE_MESSAGE0": "obrátiť %1", + "LISTS_REVERSE_TOOLTIP": "Obrátiť kópiu zoznamu.", + "VARIABLES_GET_TOOLTIP": "Vráti hodnotu tejto premennej.", + "VARIABLES_GET_CREATE_SET": "Vytvoriť \"nastaviť %1\"", + "VARIABLES_SET": "nastaviť %1 na %2", + "VARIABLES_SET_TOOLTIP": "Nastaví túto premennú, aby sa rovnala vstupu.", + "VARIABLES_SET_CREATE_GET": "Vytvoriť \"získať %1\"", + "PROCEDURES_DEFNORETURN_TITLE": "na", + "PROCEDURES_DEFNORETURN_PROCEDURE": "urob niečo", + "PROCEDURES_BEFORE_PARAMS": "s:", + "PROCEDURES_CALL_BEFORE_PARAMS": "s:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Vytvorí funciu bez výstupu.", + "PROCEDURES_DEFNORETURN_COMMENT": "Doplň, čo robí táto funkcia...", + "PROCEDURES_DEFRETURN_RETURN": "vrátiť", + "PROCEDURES_DEFRETURN_TOOLTIP": "Vytvorí funkciu s výstupom.", + "PROCEDURES_ALLOW_STATEMENTS": "povoliť príkazy", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Upozornenie: Táto funkcia má duplicitné parametre.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://sk.wikipedia.org/wiki/Podprogram", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Spustí používateľom definovanú funkciu '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://sk.wikipedia.org/wiki/Podprogram", + "PROCEDURES_CALLRETURN_TOOLTIP": "Spustí používateľom definovanú funkciu '%1' a použije jej výstup.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "vstupy", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Pridať, odstrániť alebo zmeniť poradie vstupov tejto funkcie.", + "PROCEDURES_MUTATORARG_TITLE": "názov vstupu:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Pridať vstup do funkcie.", + "PROCEDURES_HIGHLIGHT_DEF": "Zvýrazniť definíciu funkcie", + "PROCEDURES_CREATE_DO": "Vytvoriť '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Ak je hodnota pravda, tak vráti druhú hodnotu.", + "PROCEDURES_IFRETURN_WARNING": "Upozornenie: Tento blok môže byť len vo vnútri funkcie.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Povedz niečo...", + "WORKSPACE_ARIA_LABEL": "Pracovisko Bloskly", + "COLLAPSED_WARNINGS_WARNING": "Zrútené bloky obsahujú varovanie.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Zrušiť" +} diff --git a/msg/json/skr-arab.json b/msg/json/skr-arab.json index dc342da18cc..551b9ba8bb0 100644 --- a/msg/json/skr-arab.json +++ b/msg/json/skr-arab.json @@ -1,105 +1,105 @@ -{ - "@metadata": { - "authors": [ - "Saraiki" - ] - }, - "VARIABLES_DEFAULT_NAME": "آئٹم", - "TODAY": "اڄ", - "DUPLICATE_BLOCK": "ڈپلیکیٹ", - "ADD_COMMENT": "تبصرہ کرو", - "REMOVE_COMMENT": "رائے مٹاؤ", - "EXTERNAL_INPUTS": "باہرلے انپٹ", - "INLINE_INPUTS": "ان لائن ان پٹ", - "DELETE_BLOCK": "بلاک مٹاؤ", - "DELETE_X_BLOCKS": "%1 بلاکاں کوں مٹاؤ", - "DELETE_ALL_BLOCKS": "بھلا %1 بلاکاں کوں مٹاؤں؟", - "CLEAN_UP": "بلاک صاف کرو", - "COLLAPSE_BLOCK": "بلا ک کٹھے کرو", - "COLLAPSE_ALL": "بلاک کٹھے کرو", - "EXPAND_BLOCK": "بلاک کھنڈاؤ", - "EXPAND_ALL": "بلاکوں کوں کھنڈاؤ", - "DISABLE_BLOCK": "بلاک ہٹاؤ", - "ENABLE_BLOCK": "بلاک فعال کرو", - "HELP": "مدد", - "UNDO": "واپس", - "REDO": "ولدا کرو", - "CHANGE_VALUE_TITLE": "ویلیو تبدیل کرو:", - "RENAME_VARIABLE": "متغیر دا ولدا ناں رکھو۔۔۔", - "NEW_VARIABLE": "متغیر بݨاؤ۔۔۔", - "NEW_VARIABLE_TITLE": "نواں متغیر ناں:", - "VARIABLE_ALREADY_EXISTS": "'%1' نامی متغیر پہلے موجود ہے۔", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_RANDOM_TITLE": "بنا ترتيب رنگ", - "COLOUR_RGB_TITLE": "نال رن٘گ", - "COLOUR_RGB_RED": "رتا", - "COLOUR_RGB_GREEN": "ساوا", - "COLOUR_RGB_BLUE": "نیلا", - "COLOUR_BLEND_TITLE": "مرکب", - "COLOUR_BLEND_COLOUR1": "رنگ 1", - "COLOUR_BLEND_COLOUR2": "رنگ 2", - "COLOUR_BLEND_RATIO": "نسبت", - "CONTROLS_REPEAT_INPUT_DO": "کرو", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تائیں دہرائے", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "گھیرے کنوں ٻاہر نکلݨ", - "CONTROLS_IF_MSG_IF": "جے", - "CONTROLS_IF_MSG_ELSEIF": "ٻیا اگر", - "CONTROLS_IF_MSG_ELSE": "وکھرا", - "LOGIC_OPERATION_AND": "اتے", - "LOGIC_OPERATION_OR": "یا", - "LOGIC_NEGATE_TITLE": "%1 کائنی", - "LOGIC_BOOLEAN_TRUE": "سچ", - "LOGIC_BOOLEAN_FALSE": "غلط", - "LOGIC_NULL": "کوئی وی کائنی", - "LOGIC_TERNARY_CONDITION": "ٹیسٹ", - "LOGIC_TERNARY_IF_TRUE": "اگر سچ ہے", - "LOGIC_TERNARY_IF_FALSE": "اگر کوڑ ہے", - "MATH_NUMBER_TOOLTIP": "ہک عدد", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_SINGLE_OP_ROOT": "مربعی جذر", - "MATH_SINGLE_OP_ABSOLUTE": "مطلق", - "MATH_IS_EVEN": "جفت ہے", - "MATH_IS_ODD": "طاق ہے", - "MATH_IS_PRIME": "مفرد ہے", - "MATH_IS_WHOLE": "مکمل ہے", - "MATH_IS_POSITIVE": "مثبت ہے", - "MATH_IS_NEGATIVE": "منفی ہے", - "MATH_ONLIST_OPERATOR_SUM": "لسٹ دا مجموعہ", - "MATH_ONLIST_OPERATOR_MIN": "لسٹ وچوں سب توں گھٹ", - "MATH_ONLIST_OPERATOR_MAX": "لسٹ وچوں سب توں ودھ", - "MATH_ONLIST_OPERATOR_AVERAGE": "فہرست دی اوسط", - "TEXT_CREATE_JOIN_TITLE_JOIN": "شامل تھیوو", - "TEXT_LENGTH_TITLE": "%1 دی لمباݨ", - "TEXT_ISEMPTY_TITLE": "%1 خالی ہے", - "TEXT_CHARAT_FROM_START": "# حرف گھنو", - "TEXT_CHARAT_FIRST": "پہلا حرف گھنو", - "TEXT_CHARAT_LAST": "چھیکڑی حرف گھنو", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ٹیکسٹ وچ", - "TEXT_PRINT_TITLE": "%1 چھاپو", - "LISTS_CREATE_EMPTY_TITLE": "خالی تندیر بݨاؤ", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "فہرست", - "LISTS_ISEMPTY_TITLE": "%1 خالی ہے", - "LISTS_INLIST": "فہرست وچ", - "LISTS_GET_INDEX_GET": "گھنو", - "LISTS_GET_INDEX_GET_REMOVE": "گھنو تے ہٹاؤ", - "LISTS_GET_INDEX_REMOVE": "ہٹاؤ", - "LISTS_GET_INDEX_FROM_END": "# چھیکڑ کنوں", - "LISTS_GET_INDEX_FIRST": "پہلا", - "LISTS_GET_INDEX_LAST": "چھیکڑی", - "LISTS_GET_INDEX_RANDOM": "قُݨے نال", - "LISTS_SET_INDEX_SET": "سیٹ", - "LISTS_SET_INDEX_INSERT": "تے درج کرو", - "LISTS_SET_INDEX_INPUT_TO": "بطور", - "LISTS_SORT_TITLE": "سارٹ کرو%1%2%3", - "LISTS_SORT_ORDER_ASCENDING": "چڑھدا ہویا", - "LISTS_SORT_ORDER_DESCENDING": "لہندا ہویا", - "LISTS_SORT_TYPE_NUMERIC": "عددی", - "LISTS_SORT_TYPE_TEXT": "الف بے دی", - "PROCEDURES_DEFNORETURN_TITLE": "کوں", - "PROCEDURES_BEFORE_PARAMS": "نال:", - "PROCEDURES_CALL_BEFORE_PARAMS": "نال:", - "PROCEDURES_DEFRETURN_RETURN": "واپس آ ونڄو", - "PROCEDURES_MUTATORARG_TITLE": "ان پُٹ ناں:", - "DIALOG_OK": "ٹھیک ہے", - "DIALOG_CANCEL": "منسوخ" -} +{ + "@metadata": { + "authors": [ + "Saraiki" + ] + }, + "VARIABLES_DEFAULT_NAME": "آئٹم", + "TODAY": "اڄ", + "DUPLICATE_BLOCK": "ڈپلیکیٹ", + "ADD_COMMENT": "تبصرہ کرو", + "REMOVE_COMMENT": "رائے مٹاؤ", + "EXTERNAL_INPUTS": "باہرلے انپٹ", + "INLINE_INPUTS": "ان لائن ان پٹ", + "DELETE_BLOCK": "بلاک مٹاؤ", + "DELETE_X_BLOCKS": "%1 بلاکاں کوں مٹاؤ", + "DELETE_ALL_BLOCKS": "بھلا %1 بلاکاں کوں مٹاؤں؟", + "CLEAN_UP": "بلاک صاف کرو", + "COLLAPSE_BLOCK": "بلا ک کٹھے کرو", + "COLLAPSE_ALL": "بلاک کٹھے کرو", + "EXPAND_BLOCK": "بلاک کھنڈاؤ", + "EXPAND_ALL": "بلاکوں کوں کھنڈاؤ", + "DISABLE_BLOCK": "بلاک ہٹاؤ", + "ENABLE_BLOCK": "بلاک فعال کرو", + "HELP": "مدد", + "UNDO": "واپس", + "REDO": "ولدا کرو", + "CHANGE_VALUE_TITLE": "ویلیو تبدیل کرو:", + "RENAME_VARIABLE": "متغیر دا ولدا ناں رکھو۔۔۔", + "NEW_VARIABLE": "متغیر بݨاؤ۔۔۔", + "NEW_VARIABLE_TITLE": "نواں متغیر ناں:", + "VARIABLE_ALREADY_EXISTS": "'%1' نامی متغیر پہلے موجود ہے۔", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_RANDOM_TITLE": "بنا ترتيب رنگ", + "COLOUR_RGB_TITLE": "نال رن٘گ", + "COLOUR_RGB_RED": "رتا", + "COLOUR_RGB_GREEN": "ساوا", + "COLOUR_RGB_BLUE": "نیلا", + "COLOUR_BLEND_TITLE": "مرکب", + "COLOUR_BLEND_COLOUR1": "رنگ 1", + "COLOUR_BLEND_COLOUR2": "رنگ 2", + "COLOUR_BLEND_RATIO": "نسبت", + "CONTROLS_REPEAT_INPUT_DO": "کرو", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تائیں دہرائے", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "گھیرے کنوں ٻاہر نکلݨ", + "CONTROLS_IF_MSG_IF": "جے", + "CONTROLS_IF_MSG_ELSEIF": "ٻیا اگر", + "CONTROLS_IF_MSG_ELSE": "وکھرا", + "LOGIC_OPERATION_AND": "اتے", + "LOGIC_OPERATION_OR": "یا", + "LOGIC_NEGATE_TITLE": "%1 کائنی", + "LOGIC_BOOLEAN_TRUE": "سچ", + "LOGIC_BOOLEAN_FALSE": "غلط", + "LOGIC_NULL": "کوئی وی کائنی", + "LOGIC_TERNARY_CONDITION": "ٹیسٹ", + "LOGIC_TERNARY_IF_TRUE": "اگر سچ ہے", + "LOGIC_TERNARY_IF_FALSE": "اگر کوڑ ہے", + "MATH_NUMBER_TOOLTIP": "ہک عدد", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_SINGLE_OP_ROOT": "مربعی جذر", + "MATH_SINGLE_OP_ABSOLUTE": "مطلق", + "MATH_IS_EVEN": "جفت ہے", + "MATH_IS_ODD": "طاق ہے", + "MATH_IS_PRIME": "مفرد ہے", + "MATH_IS_WHOLE": "مکمل ہے", + "MATH_IS_POSITIVE": "مثبت ہے", + "MATH_IS_NEGATIVE": "منفی ہے", + "MATH_ONLIST_OPERATOR_SUM": "لسٹ دا مجموعہ", + "MATH_ONLIST_OPERATOR_MIN": "لسٹ وچوں سب توں گھٹ", + "MATH_ONLIST_OPERATOR_MAX": "لسٹ وچوں سب توں ودھ", + "MATH_ONLIST_OPERATOR_AVERAGE": "فہرست دی اوسط", + "TEXT_CREATE_JOIN_TITLE_JOIN": "شامل تھیوو", + "TEXT_LENGTH_TITLE": "%1 دی لمباݨ", + "TEXT_ISEMPTY_TITLE": "%1 خالی ہے", + "TEXT_CHARAT_FROM_START": "# حرف گھنو", + "TEXT_CHARAT_FIRST": "پہلا حرف گھنو", + "TEXT_CHARAT_LAST": "چھیکڑی حرف گھنو", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ٹیکسٹ وچ", + "TEXT_PRINT_TITLE": "%1 چھاپو", + "LISTS_CREATE_EMPTY_TITLE": "خالی تندیر بݨاؤ", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "فہرست", + "LISTS_ISEMPTY_TITLE": "%1 خالی ہے", + "LISTS_INLIST": "فہرست وچ", + "LISTS_GET_INDEX_GET": "گھنو", + "LISTS_GET_INDEX_GET_REMOVE": "گھنو تے ہٹاؤ", + "LISTS_GET_INDEX_REMOVE": "ہٹاؤ", + "LISTS_GET_INDEX_FROM_END": "# چھیکڑ کنوں", + "LISTS_GET_INDEX_FIRST": "پہلا", + "LISTS_GET_INDEX_LAST": "چھیکڑی", + "LISTS_GET_INDEX_RANDOM": "قُݨے نال", + "LISTS_SET_INDEX_SET": "سیٹ", + "LISTS_SET_INDEX_INSERT": "تے درج کرو", + "LISTS_SET_INDEX_INPUT_TO": "بطور", + "LISTS_SORT_TITLE": "سارٹ کرو%1%2%3", + "LISTS_SORT_ORDER_ASCENDING": "چڑھدا ہویا", + "LISTS_SORT_ORDER_DESCENDING": "لہندا ہویا", + "LISTS_SORT_TYPE_NUMERIC": "عددی", + "LISTS_SORT_TYPE_TEXT": "الف بے دی", + "PROCEDURES_DEFNORETURN_TITLE": "کوں", + "PROCEDURES_BEFORE_PARAMS": "نال:", + "PROCEDURES_CALL_BEFORE_PARAMS": "نال:", + "PROCEDURES_DEFRETURN_RETURN": "واپس آ ونڄو", + "PROCEDURES_MUTATORARG_TITLE": "ان پُٹ ناں:", + "DIALOG_OK": "ٹھیک ہے", + "DIALOG_CANCEL": "منسوخ" +} diff --git a/msg/json/sl.json b/msg/json/sl.json index 09a48be4d5e..1ebfb8e2b12 100644 --- a/msg/json/sl.json +++ b/msg/json/sl.json @@ -1,391 +1,391 @@ -{ - "@metadata": { - "authors": [ - "Anzeljg", - "Dbc334", - "Eleassar", - "HairyFotr", - "Igor.pesek", - "LoveMortuus", - "MaxiMouse", - "Miloš Košir" - ] - }, - "VARIABLES_DEFAULT_NAME": "element", - "UNNAMED_KEY": "nepoimenovano", - "TODAY": "Danes", - "DUPLICATE_BLOCK": "Podvoji", - "ADD_COMMENT": "Dodaj komentar", - "REMOVE_COMMENT": "Odstrani komentar", - "DUPLICATE_COMMENT": "Podvoji komentar", - "EXTERNAL_INPUTS": "Zunanji vnosi", - "INLINE_INPUTS": "Vrstični vnosi", - "DELETE_BLOCK": "Izbriši blok", - "DELETE_X_BLOCKS": "Izbriši bloke (%1)", - "DELETE_ALL_BLOCKS": "Izbrišem vse bloke (%1)?", - "CLEAN_UP": "Ponastavi bloke", - "COLLAPSE_BLOCK": "Skrči blok", - "COLLAPSE_ALL": "Skrči bloke", - "EXPAND_BLOCK": "Razširi blok", - "EXPAND_ALL": "Razširi bloke", - "DISABLE_BLOCK": "Onemogoči blok", - "ENABLE_BLOCK": "Omogoči blok", - "HELP": "Pomoč", - "UNDO": "Razveljavi", - "REDO": "Ponovi", - "CHANGE_VALUE_TITLE": "Spremeni vrednost:", - "RENAME_VARIABLE": "Preimenuj spremenljivko ...", - "RENAME_VARIABLE_TITLE": "Preimenuj vse spremenljivke »%1« v:", - "NEW_VARIABLE": "Ustvari spremenljivko ...", - "NEW_STRING_VARIABLE": "Ustvari spremenljivko niza ...", - "NEW_NUMBER_VARIABLE": "Ustvari spremenljivko števila ...", - "NEW_COLOUR_VARIABLE": "Ustvari spremenljivko barve ...", - "NEW_VARIABLE_TYPE_TITLE": "Vrsta nove spremenljivke:", - "NEW_VARIABLE_TITLE": "Ime nove spremenljivke:", - "VARIABLE_ALREADY_EXISTS": "Spremenljivka »%1« že obstaja.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Spremenljivka z imenom »%1« za tip »%2« že obstaja.", - "DELETE_VARIABLE_CONFIRMATION": "Izbrišem %1 uporab spremenljivke »%2«?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ni mogoče izbrisati spremenljivke »%1«, ker je uporabljena v definiciji funkcije »%2«.", - "DELETE_VARIABLE": "Izbriši spremenljivko »%1«", - "COLOUR_PICKER_HELPURL": "https://sl.wikipedia.org/wiki/Barva", - "COLOUR_PICKER_TOOLTIP": "Izberite barvo s palete.", - "COLOUR_RANDOM_TITLE": "naključna barva", - "COLOUR_RANDOM_TOOLTIP": "Izberite naključno barvo.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "določena barva", - "COLOUR_RGB_RED": "rdeča", - "COLOUR_RGB_GREEN": "zelena", - "COLOUR_RGB_BLUE": "modra", - "COLOUR_RGB_TOOLTIP": "Ustvari barvo z določeno količino rdeče, zelene in modre. Vse vrednosti morajo biti med 0 in 100.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "mešanica", - "COLOUR_BLEND_COLOUR1": "barva 1", - "COLOUR_BLEND_COLOUR2": "barva 2", - "COLOUR_BLEND_RATIO": "razmerje", - "COLOUR_BLEND_TOOLTIP": "Zmeša dve barvi v določene razmerju (0,0 – 1,0).", - "CONTROLS_REPEAT_HELPURL": "https://sl.wikipedia.org/wiki/Zanka_for", - "CONTROLS_REPEAT_TITLE": "ponovi %1-krat", - "CONTROLS_REPEAT_INPUT_DO": "izvedi", - "CONTROLS_REPEAT_TOOLTIP": "Določeni stavki se izvedejo večkrat.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ponavljaj, dokler", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ponavljaj, dokler ni", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Določeni stavki se izvajajo, dokler je vrednost resnična.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Določeni stavki se izvajajo, dokler je vrednost neresnična.", - "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", - "CONTROLS_FOR_TOOLTIP": "Vrednost spremenljivke »%1« se v določenem koraku spreminja od začetnega do končnega števila. Pri tem se izvedejo določeni bloki.", - "CONTROLS_FOR_TITLE": "štej s/z %1 od %2 do %3 po %4", - "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", - "CONTROLS_FOREACH_TITLE": "za vsak element %1 v seznamu %2", - "CONTROLS_FOREACH_TOOLTIP": "Za vsak element v seznamu nastavi spremenljivko »%1« na ta element. Pri tem se izvedejo določeni stavki.", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "prekini zanko", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "nadaljuj z naslednjo ponovitvijo zanke", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Prekine vsebujočo zanko.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Preskoči preostanek te zanke in nadaljuje z naslednjo ponovitvijo.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Pozor: Ta blok lahko uporabite znotraj zanke samo enkrat.", - "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", - "CONTROLS_IF_TOOLTIP_1": "Če je vrednost resnična, izvedi določene stavke.", - "CONTROLS_IF_TOOLTIP_2": "Če je vrednost resnična, izvedi prvo skupino stavkov. Sicer izvedi drugo skupino stavkov.", - "CONTROLS_IF_TOOLTIP_3": "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov.", - "CONTROLS_IF_TOOLTIP_4": "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov. Če ni resnična nobena od vrednosti, izvedi zadnjo skupino stavkov.", - "CONTROLS_IF_MSG_IF": "če", - "CONTROLS_IF_MSG_ELSEIF": "sicer če", - "CONTROLS_IF_MSG_ELSE": "sicer", - "CONTROLS_IF_IF_TOOLTIP": "Dodajte, odstranite ali spremenite vrstni red odsekov za ponovno nastavitev bloka »če«.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodajte bloku »če« pogoj.", - "CONTROLS_IF_ELSE_TOOLTIP": "Dodajte bloku »če« končni pogoj.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Vrne resnično, če sta vnosa enaka.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Vrne resnično, če vnosa nista enaka.", - "LOGIC_COMPARE_TOOLTIP_LT": "Vrne resnično, če je prvi vnos manjši od drugega.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Vrne resnično, če je prvi vnos manjši ali enak drugemu.", - "LOGIC_COMPARE_TOOLTIP_GT": "Vrne resnično, če je prvi vnos večji od drugega.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Vrne resnično, če je prvi vnos večji ali enak drugemu.", - "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", - "LOGIC_OPERATION_TOOLTIP_AND": "Vrne resnično, če sta oba vnosa resnična.", - "LOGIC_OPERATION_AND": "in", - "LOGIC_OPERATION_TOOLTIP_OR": "Vrne resnično, če je vsaj eden od vnosov resničen.", - "LOGIC_OPERATION_OR": "ali", - "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", - "LOGIC_NEGATE_TITLE": "ne %1", - "LOGIC_NEGATE_TOOLTIP": "Vrne resnično, če je vnos neresničen. Vrne neresnično, če je vnos resničen.", - "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", - "LOGIC_BOOLEAN_TRUE": "resnično", - "LOGIC_BOOLEAN_FALSE": "neresnično", - "LOGIC_BOOLEAN_TOOLTIP": "Vrne resnično ali neresnično.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "prazno", - "LOGIC_NULL_TOOLTIP": "Vrne prazno.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "če resnično", - "LOGIC_TERNARY_IF_FALSE": "če neresnično", - "LOGIC_TERNARY_TOOLTIP": "Preveri pogoj v »testu«. Če je pogoj resničen, potem vrne vrednost »če resnično«; sicer vrne vrednost »če neresnično«.", - "MATH_NUMBER_HELPURL": "https://sl.wikipedia.org/wiki/%C5%A0tevilo", - "MATH_NUMBER_TOOLTIP": "Število.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_ARITHMETIC_HELPURL": "https://sl.wikipedia.org/wiki/Aritmetika", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Vrne vsoto dveh števil.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vrne razliko dveh števil.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vrne zmnožek dveh števil.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vrne količnik dveh števil.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Vrne prvo število na potenco drugega števila.", - "MATH_SINGLE_HELPURL": "https://sl.wikipedia.org/wiki/Kvadratni_koren", - "MATH_SINGLE_OP_ROOT": "kvadratni koren", - "MATH_SINGLE_TOOLTIP_ROOT": "Vrne kvadratni koren števila.", - "MATH_SINGLE_OP_ABSOLUTE": "absolutno", - "MATH_SINGLE_TOOLTIP_ABS": "Vrne absolutno vrednost števila.", - "MATH_SINGLE_TOOLTIP_NEG": "Vrne negacijo števila.", - "MATH_SINGLE_TOOLTIP_LN": "Vrne naravni logaritem števila.", - "MATH_SINGLE_TOOLTIP_LOG10": "Vrne desetiški logaritem števila.", - "MATH_SINGLE_TOOLTIP_EXP": "Vrne e na potenco števila.", - "MATH_SINGLE_TOOLTIP_POW10": "Vrne 10 na potenco števila.", - "MATH_TRIG_HELPURL": "https://sl.wikipedia.org/wiki/Trigonometrična_funkcija", - "MATH_TRIG_TOOLTIP_SIN": "Vrne sinus kota v stopinjah (ne radianih).", - "MATH_TRIG_TOOLTIP_COS": "Vrne kosinus kota v stopinjah (ne radianih).", - "MATH_TRIG_TOOLTIP_TAN": "Vrne tangens kota v stopinjah (ne radianih).", - "MATH_TRIG_TOOLTIP_ASIN": "Vrne arkus sinus števila.", - "MATH_TRIG_TOOLTIP_ACOS": "Vrne arkus kosinus števila.", - "MATH_TRIG_TOOLTIP_ATAN": "Vrne arkus tangens števila.", - "MATH_CONSTANT_HELPURL": "https://sl.wikipedia.org/wiki/Matematična_konstanta", - "MATH_CONSTANT_TOOLTIP": "Vrne eno izmed pogostih konstant: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707 ...) ali ∞ (neskončno).", - "MATH_IS_EVEN": "je sodo", - "MATH_IS_ODD": "je liho", - "MATH_IS_PRIME": "je praštevilo", - "MATH_IS_WHOLE": "je celo", - "MATH_IS_POSITIVE": "je pozitivno", - "MATH_IS_NEGATIVE": "je negativno", - "MATH_IS_DIVISIBLE_BY": "je deljivo s/z", - "MATH_IS_TOOLTIP": "Preveri, ali je število sodo, liho, praštevilo, celo, pozitivno, negativno ali če je deljivo z določenim številom. Vrne resnično ali neresnično.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Increment_and_decrement_operators", - "MATH_CHANGE_TITLE": "spremeni %1 za %2", - "MATH_CHANGE_TOOLTIP": "Prišteje število k spremenljivki »%1«.", - "MATH_ROUND_HELPURL": "https://sl.wikipedia.org/wiki/Zaokro%C5%BEanje", - "MATH_ROUND_TOOLTIP": "Zaokroži število navzgor ali navzdol.", - "MATH_ROUND_OPERATOR_ROUND": "zaokroži", - "MATH_ROUND_OPERATOR_ROUNDUP": "zaokroži navzgor", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokroži navzdol", - "MATH_ONLIST_OPERATOR_SUM": "vsota seznama", - "MATH_ONLIST_TOOLTIP_SUM": "Vrne vsoto vseh števil v seznamu.", - "MATH_ONLIST_OPERATOR_MIN": "minimum seznama", - "MATH_ONLIST_TOOLTIP_MIN": "Vrne najmanjše število v seznamu.", - "MATH_ONLIST_OPERATOR_MAX": "maksimum seznama", - "MATH_ONLIST_TOOLTIP_MAX": "Vrne največje število v seznamu.", - "MATH_ONLIST_OPERATOR_AVERAGE": "povprečje seznama", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Vrne povprečje (aritmetično sredino) števil v seznamu.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana seznama", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Vrne mediano število v seznamu.", - "MATH_ONLIST_OPERATOR_MODE": "modus seznama", - "MATH_ONLIST_TOOLTIP_MODE": "Vrne seznam najpogostejšega(ih) elementa(-ov) v seznamu.", - "MATH_ONLIST_OPERATOR_STD_DEV": "standardni odmik seznama", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Vrne standardni odmik elementov v seznamu.", - "MATH_ONLIST_OPERATOR_RANDOM": "naključni element seznama", - "MATH_ONLIST_TOOLTIP_RANDOM": "Vrne naključno število izmed števil v seznamu.", - "MATH_MODULO_HELPURL": "https://sl.wikipedia.org/wiki/Modulo", - "MATH_MODULO_TITLE": "ostanek pri %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Vrne ostanek pri deljenju dveh števil.", - "MATH_CONSTRAIN_HELPURL": "https://en.wikipedia.org/wiki/Clamping_%28graphics%29", - "MATH_CONSTRAIN_TITLE": "omeji %1 na najmanj %2 in največ %3", - "MATH_CONSTRAIN_TOOLTIP": "Omeji število, da bo med določenima (vključenima) mejama.", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "naključno število med %1 in %2", - "MATH_RANDOM_INT_TOOLTIP": "Vrne naključno število med dvema določenima mejama, vključno z mejama.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "naključni ulomek", - "MATH_RANDOM_FLOAT_TOOLTIP": "Vrne naključni ulomek med (vključno) 0,0 in 1,0 (izključno).", - "MATH_ATAN2_HELPURL": "https://sl.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 koordinat X: %1 in Y: %2", - "MATH_ATAN2_TOOLTIP": "Vrne arkus tangens točke (X, Y) v stopinjah med −180 in 180.", - "TEXT_TEXT_HELPURL": "https://sl.wikipedia.org/wiki/Niz", - "TEXT_TEXT_TOOLTIP": "Črka, beseda ali vrstica besedila.", - "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", - "TEXT_JOIN_TITLE_CREATEWITH": "ustvari besedilo iz", - "TEXT_JOIN_TOOLTIP": "Ustvari besedilo tako, da združi poljubno število elementov.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "združi", - "TEXT_CREATE_JOIN_TOOLTIP": "Doda, odstrani ali spremeni vrstni red odsekov za ponovno nastavitev tega bloka besedila.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Doda element k besedilu.", - "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_APPEND_TITLE": "k %1 dodaj besedilo %2", - "TEXT_APPEND_TOOLTIP": "Doda besedilo k spremenljivki »%1«.", - "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", - "TEXT_LENGTH_TITLE": "dolžina %1", - "TEXT_LENGTH_TOOLTIP": "Vrne število znakov (vključno s presledki) v določenem besedilu.", - "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", - "TEXT_ISEMPTY_TITLE": "%1 je prazno", - "TEXT_ISEMPTY_TOOLTIP": "Vrne resnično, če je določeno besedilo prazno.", - "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", - "TEXT_INDEXOF_TOOLTIP": "Vrne mesto (indeks) prve/zadnje pojavitve drugega besedila v prvem besedilu. Če besedila ne najde, vrne %1.", - "TEXT_INDEXOF_TITLE": "v besedilu %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "najdi prvo pojavitev besedila", - "TEXT_INDEXOF_OPERATOR_LAST": "najdi zadnjo pojavitev besedila", - "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", - "TEXT_CHARAT_TITLE": "v besedilu %1 %2", - "TEXT_CHARAT_FROM_START": "vrni črko št.", - "TEXT_CHARAT_FROM_END": "vrni črko št. od konca", - "TEXT_CHARAT_FIRST": "vrni prvo črko", - "TEXT_CHARAT_LAST": "vrni zadnjo črko", - "TEXT_CHARAT_RANDOM": "vrni naključno črko", - "TEXT_CHARAT_TOOLTIP": "Vrne črko na določenem mestu.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Vrne določen del besedila.", - "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "iz besedila", - "TEXT_GET_SUBSTRING_START_FROM_START": "vrni podniz od črke št.", - "TEXT_GET_SUBSTRING_START_FROM_END": "vrni podniz od črke št. od konca", - "TEXT_GET_SUBSTRING_START_FIRST": "vrni podniz od prve črke", - "TEXT_GET_SUBSTRING_END_FROM_START": "do črke št.", - "TEXT_GET_SUBSTRING_END_FROM_END": "do črke št. od konca", - "TEXT_GET_SUBSTRING_END_LAST": "do zadnje črke", - "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", - "TEXT_CHANGECASE_TOOLTIP": "Vrne kopijo besedila v drugi obliki.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "v VELIKE ČRKE", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "v male črke", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "v Velike Začetnice", - "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", - "TEXT_TRIM_TOOLTIP": "Vrne kopijo besedila z odstranjenimi presledki z ene ali obeh strani.", - "TEXT_TRIM_OPERATOR_BOTH": "odstrani presledke z obeh strani", - "TEXT_TRIM_OPERATOR_LEFT": "odstrani presledke z leve strani", - "TEXT_TRIM_OPERATOR_RIGHT": "odstrani presledke z desne strani", - "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", - "TEXT_PRINT_TITLE": "izpiši %1", - "TEXT_PRINT_TOOLTIP": "Izpiše določeno besedilo, številko ali drugo vrednost.", - "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", - "TEXT_PROMPT_TYPE_TEXT": "vprašaj za besedilo s sporočilom", - "TEXT_PROMPT_TYPE_NUMBER": "vprašaj za številko s sporočilom", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Vpraša uporabnika za vnos številke.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Vpraša uporabnika za vnos besedila.", - "TEXT_COUNT_MESSAGE0": "preštej %1 v %2", - "TEXT_COUNT_TOOLTIP": "Preštej, kolikokrat se neko besedilo pojavi v drugem besedilu.", - "TEXT_REPLACE_MESSAGE0": "zamenjaj %1 z %2 v %3", - "TEXT_REPLACE_TOOLTIP": "Zamenja vse pojavitve besedila v drugem besedilu.", - "TEXT_REVERSE_MESSAGE0": "obrni %1", - "TEXT_REVERSE_TOOLTIP": "Obrne vrstni red znakov v besedilu.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "ustvari prazen seznam", - "LISTS_CREATE_EMPTY_TOOLTIP": "Vrne seznam dolžine 0, ki ne vsebuje nobenih podatkovnih zapisov.", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Ustvari seznam s poljubnim številom elementov.", - "LISTS_CREATE_WITH_INPUT_WITH": "ustvari seznam iz", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "seznam", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Doda, odstrani ali spremeni vrstni red blokov seznama.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Doda element v seznam.", - "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_REPEAT_TOOLTIP": "Ustvari seznam iz dane vrednosti z določenim številom ponovitev.", - "LISTS_REPEAT_TITLE": "ustvari seznam z elementom %1, ki se ponovi %2-krat", - "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", - "LISTS_LENGTH_TITLE": "dolžina %1", - "LISTS_LENGTH_TOOLTIP": "Vrne dolžino seznama.", - "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", - "LISTS_ISEMPTY_TITLE": "%1 je prazen", - "LISTS_ISEMPTY_TOOLTIP": "Vrne resnično, če je seznam prazen.", - "LISTS_INLIST": "v seznamu", - "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", - "LISTS_INDEX_OF_FIRST": "najdi prvo pojavitev elementa", - "LISTS_INDEX_OF_LAST": "najdi zadnjo pojavitev elementa", - "LISTS_INDEX_OF_TOOLTIP": "Vrne mesto (indeks) prve/zadnje pojavitve elementa v seznamu. Če elementa ne najde, vrne %1.", - "LISTS_GET_INDEX_GET": "vrni", - "LISTS_GET_INDEX_GET_REMOVE": "odstrani in vrni", - "LISTS_GET_INDEX_REMOVE": "odstrani", - "LISTS_GET_INDEX_FROM_START": "št.", - "LISTS_GET_INDEX_FROM_END": "mesto št. od konca", - "LISTS_GET_INDEX_FIRST": "prvo mesto", - "LISTS_GET_INDEX_LAST": "zadnje mesto", - "LISTS_GET_INDEX_RANDOM": "naključno mesto", - "LISTS_INDEX_FROM_START_TOOLTIP": "Prvi element je št. %1.", - "LISTS_INDEX_FROM_END_TOOLTIP": "Zadnji element je št. %1.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Vrne element na določenem mestu v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vrne prvi element seznama.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vrne zadnji element seznama.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vrne naključni element seznama.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Odstrani in vrne element na določenem mestu v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Odstrani in vrne prvi element seznama.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Odstrani in vrne zadnji element seznama.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Odstrani in vrne naključni element seznama.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Odstrani element na določenem mestu v seznamu.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Odstrani prvi element seznama.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Odstrani zadnji element seznama.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Odstrani naključni element seznama.", - "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", - "LISTS_SET_INDEX_SET": "nastavi na", - "LISTS_SET_INDEX_INSERT": "vstavi na", - "LISTS_SET_INDEX_INPUT_TO": "element", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Nastavi element na določenem mestu v seznamu.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Nastavi prvi element seznama.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Nastavi zadnji element seznama.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Nastavi naključni element seznama.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Vstavi element na določeno mesto v seznamu.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Vstavi element na začetek seznama.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Doda element na konec seznama.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Vstavi element na naključno mesto v seznamu.", - "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", - "LISTS_GET_SUBLIST_START_FROM_START": "ustvari podseznam od mesta št.", - "LISTS_GET_SUBLIST_START_FROM_END": "ustvari podseznam od mesta št. od konca", - "LISTS_GET_SUBLIST_START_FIRST": "ustvari podseznam od prvega mesta", - "LISTS_GET_SUBLIST_END_FROM_START": "do mesta št.", - "LISTS_GET_SUBLIST_END_FROM_END": "do mesta št. od konca", - "LISTS_GET_SUBLIST_END_LAST": "do zadnjega mesta", - "LISTS_GET_SUBLIST_TOOLTIP": "Ustvari kopijo določenega dela seznama.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "uredi %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Uredi kopijo seznama.", - "LISTS_SORT_ORDER_ASCENDING": "naraščajoče", - "LISTS_SORT_ORDER_DESCENDING": "padajoče", - "LISTS_SORT_TYPE_NUMERIC": "številsko", - "LISTS_SORT_TYPE_TEXT": "abecedno", - "LISTS_SORT_TYPE_IGNORECASE": "abecedno, prezri velikost črk", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "ustvari seznam iz besedila", - "LISTS_SPLIT_TEXT_FROM_LIST": "ustvari besedilo iz seznama", - "LISTS_SPLIT_WITH_DELIMITER": "z ločilom", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Razdruži besedilo v seznam besedil s prelomom pri vsakem ločilu.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Združi seznam besedil v eno besedilo z ločilom med besedili.", - "LISTS_REVERSE_MESSAGE0": "obrni %1", - "LISTS_REVERSE_TOOLTIP": "Obrne kopijo seznama.", - "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", - "VARIABLES_GET_TOOLTIP": "Vrne vrednost spremenljivke.", - "VARIABLES_GET_CREATE_SET": "Ustvari »nastavi %1«", - "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", - "VARIABLES_SET": "nastavi %1 na %2", - "VARIABLES_SET_TOOLTIP": "Nastavi, da je vrednost spremenljivke enaka vnosu.", - "VARIABLES_SET_CREATE_GET": "Ustvari »vrni %1«", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "izvedi", - "PROCEDURES_DEFNORETURN_PROCEDURE": "nekaj", - "PROCEDURES_BEFORE_PARAMS": "s/z:", - "PROCEDURES_CALL_BEFORE_PARAMS": "s/z:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Ustvari funkcijo brez izhoda.", - "PROCEDURES_DEFNORETURN_COMMENT": "Opiši funkcijo ...", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFRETURN_RETURN": "vrni", - "PROCEDURES_DEFRETURN_TOOLTIP": "Ustvari funkcijo z izhodom.", - "PROCEDURES_ALLOW_STATEMENTS": "dovoli stavke", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Pozor: Ta funkcija ima podvojene parametre.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://sl.wikipedia.org/wiki/Subrutina", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Izvede uporabniško določeno funkcijo »%1«.", - "PROCEDURES_CALLRETURN_HELPURL": "https://sl.wikipedia.org/wiki/Subrutina", - "PROCEDURES_CALLRETURN_TOOLTIP": "Izvede uporabniško funkcijo »%1« in uporabi njen izhod.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "vnosi", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Doda, odstrani ali spremeni vrstni red vnosov za to funkcijo.", - "PROCEDURES_MUTATORARG_TITLE": "ime vnosa:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Funkciji doda vnos.", - "PROCEDURES_HIGHLIGHT_DEF": "Označi blok funkcije", - "PROCEDURES_CREATE_DO": "Ustvari »%1«", - "PROCEDURES_IFRETURN_TOOLTIP": "Če je vrednost resnična, vrne drugo vrednost.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Pozor: Ta blok lahko uporabite samo v bloku funkcije.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Povej nekaj ...", - "WORKSPACE_ARIA_LABEL": "Blocklyjev delovni prostor", - "COLLAPSED_WARNINGS_WARNING": "Skrčeni bloki vsebujejo opozorila.", - "DIALOG_OK": "V redu", - "DIALOG_CANCEL": "Prekliči" -} +{ + "@metadata": { + "authors": [ + "Anzeljg", + "Dbc334", + "Eleassar", + "HairyFotr", + "Igor.pesek", + "LoveMortuus", + "MaxiMouse", + "Miloš Košir" + ] + }, + "VARIABLES_DEFAULT_NAME": "element", + "UNNAMED_KEY": "nepoimenovano", + "TODAY": "Danes", + "DUPLICATE_BLOCK": "Podvoji", + "ADD_COMMENT": "Dodaj komentar", + "REMOVE_COMMENT": "Odstrani komentar", + "DUPLICATE_COMMENT": "Podvoji komentar", + "EXTERNAL_INPUTS": "Zunanji vnosi", + "INLINE_INPUTS": "Vrstični vnosi", + "DELETE_BLOCK": "Izbriši blok", + "DELETE_X_BLOCKS": "Izbriši bloke (%1)", + "DELETE_ALL_BLOCKS": "Izbrišem vse bloke (%1)?", + "CLEAN_UP": "Ponastavi bloke", + "COLLAPSE_BLOCK": "Skrči blok", + "COLLAPSE_ALL": "Skrči bloke", + "EXPAND_BLOCK": "Razširi blok", + "EXPAND_ALL": "Razširi bloke", + "DISABLE_BLOCK": "Onemogoči blok", + "ENABLE_BLOCK": "Omogoči blok", + "HELP": "Pomoč", + "UNDO": "Razveljavi", + "REDO": "Ponovi", + "CHANGE_VALUE_TITLE": "Spremeni vrednost:", + "RENAME_VARIABLE": "Preimenuj spremenljivko ...", + "RENAME_VARIABLE_TITLE": "Preimenuj vse spremenljivke »%1« v:", + "NEW_VARIABLE": "Ustvari spremenljivko ...", + "NEW_STRING_VARIABLE": "Ustvari spremenljivko niza ...", + "NEW_NUMBER_VARIABLE": "Ustvari spremenljivko števila ...", + "NEW_COLOUR_VARIABLE": "Ustvari spremenljivko barve ...", + "NEW_VARIABLE_TYPE_TITLE": "Vrsta nove spremenljivke:", + "NEW_VARIABLE_TITLE": "Ime nove spremenljivke:", + "VARIABLE_ALREADY_EXISTS": "Spremenljivka »%1« že obstaja.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Spremenljivka z imenom »%1« za tip »%2« že obstaja.", + "DELETE_VARIABLE_CONFIRMATION": "Izbrišem %1 uporab spremenljivke »%2«?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ni mogoče izbrisati spremenljivke »%1«, ker je uporabljena v definiciji funkcije »%2«.", + "DELETE_VARIABLE": "Izbriši spremenljivko »%1«", + "COLOUR_PICKER_HELPURL": "https://sl.wikipedia.org/wiki/Barva", + "COLOUR_PICKER_TOOLTIP": "Izberite barvo s palete.", + "COLOUR_RANDOM_TITLE": "naključna barva", + "COLOUR_RANDOM_TOOLTIP": "Izberite naključno barvo.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "določena barva", + "COLOUR_RGB_RED": "rdeča", + "COLOUR_RGB_GREEN": "zelena", + "COLOUR_RGB_BLUE": "modra", + "COLOUR_RGB_TOOLTIP": "Ustvari barvo z določeno količino rdeče, zelene in modre. Vse vrednosti morajo biti med 0 in 100.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "mešanica", + "COLOUR_BLEND_COLOUR1": "barva 1", + "COLOUR_BLEND_COLOUR2": "barva 2", + "COLOUR_BLEND_RATIO": "razmerje", + "COLOUR_BLEND_TOOLTIP": "Zmeša dve barvi v določene razmerju (0,0 – 1,0).", + "CONTROLS_REPEAT_HELPURL": "https://sl.wikipedia.org/wiki/Zanka_for", + "CONTROLS_REPEAT_TITLE": "ponovi %1-krat", + "CONTROLS_REPEAT_INPUT_DO": "izvedi", + "CONTROLS_REPEAT_TOOLTIP": "Določeni stavki se izvedejo večkrat.", + "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ponavljaj, dokler", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ponavljaj, dokler ni", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Določeni stavki se izvajajo, dokler je vrednost resnična.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Določeni stavki se izvajajo, dokler je vrednost neresnična.", + "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", + "CONTROLS_FOR_TOOLTIP": "Vrednost spremenljivke »%1« se v določenem koraku spreminja od začetnega do končnega števila. Pri tem se izvedejo določeni bloki.", + "CONTROLS_FOR_TITLE": "štej s/z %1 od %2 do %3 po %4", + "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", + "CONTROLS_FOREACH_TITLE": "za vsak element %1 v seznamu %2", + "CONTROLS_FOREACH_TOOLTIP": "Za vsak element v seznamu nastavi spremenljivko »%1« na ta element. Pri tem se izvedejo določeni stavki.", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "prekini zanko", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "nadaljuj z naslednjo ponovitvijo zanke", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Prekine vsebujočo zanko.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Preskoči preostanek te zanke in nadaljuje z naslednjo ponovitvijo.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Pozor: Ta blok lahko uporabite znotraj zanke samo enkrat.", + "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", + "CONTROLS_IF_TOOLTIP_1": "Če je vrednost resnična, izvedi določene stavke.", + "CONTROLS_IF_TOOLTIP_2": "Če je vrednost resnična, izvedi prvo skupino stavkov. Sicer izvedi drugo skupino stavkov.", + "CONTROLS_IF_TOOLTIP_3": "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov.", + "CONTROLS_IF_TOOLTIP_4": "Če je prva vrednost resnična, izvedi prvo skupino stavkov. Sicer, če je resnična druga vrednost, izvedi drugo skupino stavkov. Če ni resnična nobena od vrednosti, izvedi zadnjo skupino stavkov.", + "CONTROLS_IF_MSG_IF": "če", + "CONTROLS_IF_MSG_ELSEIF": "sicer če", + "CONTROLS_IF_MSG_ELSE": "sicer", + "CONTROLS_IF_IF_TOOLTIP": "Dodajte, odstranite ali spremenite vrstni red odsekov za ponovno nastavitev bloka »če«.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodajte bloku »če« pogoj.", + "CONTROLS_IF_ELSE_TOOLTIP": "Dodajte bloku »če« končni pogoj.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Vrne resnično, če sta vnosa enaka.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Vrne resnično, če vnosa nista enaka.", + "LOGIC_COMPARE_TOOLTIP_LT": "Vrne resnično, če je prvi vnos manjši od drugega.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Vrne resnično, če je prvi vnos manjši ali enak drugemu.", + "LOGIC_COMPARE_TOOLTIP_GT": "Vrne resnično, če je prvi vnos večji od drugega.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Vrne resnično, če je prvi vnos večji ali enak drugemu.", + "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", + "LOGIC_OPERATION_TOOLTIP_AND": "Vrne resnično, če sta oba vnosa resnična.", + "LOGIC_OPERATION_AND": "in", + "LOGIC_OPERATION_TOOLTIP_OR": "Vrne resnično, če je vsaj eden od vnosov resničen.", + "LOGIC_OPERATION_OR": "ali", + "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", + "LOGIC_NEGATE_TITLE": "ne %1", + "LOGIC_NEGATE_TOOLTIP": "Vrne resnično, če je vnos neresničen. Vrne neresnično, če je vnos resničen.", + "LOGIC_BOOLEAN_HELPURL": "https://github.com/google/blockly/wiki/Logic#values", + "LOGIC_BOOLEAN_TRUE": "resnično", + "LOGIC_BOOLEAN_FALSE": "neresnično", + "LOGIC_BOOLEAN_TOOLTIP": "Vrne resnično ali neresnično.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "prazno", + "LOGIC_NULL_TOOLTIP": "Vrne prazno.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "če resnično", + "LOGIC_TERNARY_IF_FALSE": "če neresnično", + "LOGIC_TERNARY_TOOLTIP": "Preveri pogoj v »testu«. Če je pogoj resničen, potem vrne vrednost »če resnično«; sicer vrne vrednost »če neresnično«.", + "MATH_NUMBER_HELPURL": "https://sl.wikipedia.org/wiki/%C5%A0tevilo", + "MATH_NUMBER_TOOLTIP": "Število.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_HELPURL": "https://sl.wikipedia.org/wiki/Aritmetika", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Vrne vsoto dveh števil.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vrne razliko dveh števil.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vrne zmnožek dveh števil.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vrne količnik dveh števil.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Vrne prvo število na potenco drugega števila.", + "MATH_SINGLE_HELPURL": "https://sl.wikipedia.org/wiki/Kvadratni_koren", + "MATH_SINGLE_OP_ROOT": "kvadratni koren", + "MATH_SINGLE_TOOLTIP_ROOT": "Vrne kvadratni koren števila.", + "MATH_SINGLE_OP_ABSOLUTE": "absolutno", + "MATH_SINGLE_TOOLTIP_ABS": "Vrne absolutno vrednost števila.", + "MATH_SINGLE_TOOLTIP_NEG": "Vrne negacijo števila.", + "MATH_SINGLE_TOOLTIP_LN": "Vrne naravni logaritem števila.", + "MATH_SINGLE_TOOLTIP_LOG10": "Vrne desetiški logaritem števila.", + "MATH_SINGLE_TOOLTIP_EXP": "Vrne e na potenco števila.", + "MATH_SINGLE_TOOLTIP_POW10": "Vrne 10 na potenco števila.", + "MATH_TRIG_HELPURL": "https://sl.wikipedia.org/wiki/Trigonometrična_funkcija", + "MATH_TRIG_TOOLTIP_SIN": "Vrne sinus kota v stopinjah (ne radianih).", + "MATH_TRIG_TOOLTIP_COS": "Vrne kosinus kota v stopinjah (ne radianih).", + "MATH_TRIG_TOOLTIP_TAN": "Vrne tangens kota v stopinjah (ne radianih).", + "MATH_TRIG_TOOLTIP_ASIN": "Vrne arkus sinus števila.", + "MATH_TRIG_TOOLTIP_ACOS": "Vrne arkus kosinus števila.", + "MATH_TRIG_TOOLTIP_ATAN": "Vrne arkus tangens števila.", + "MATH_CONSTANT_HELPURL": "https://sl.wikipedia.org/wiki/Matematična_konstanta", + "MATH_CONSTANT_TOOLTIP": "Vrne eno izmed pogostih konstant: π (3,141…), e (2,718…), φ (1,618…), sqrt(2) (1,414…), sqrt(½) (0,707 ...) ali ∞ (neskončno).", + "MATH_IS_EVEN": "je sodo", + "MATH_IS_ODD": "je liho", + "MATH_IS_PRIME": "je praštevilo", + "MATH_IS_WHOLE": "je celo", + "MATH_IS_POSITIVE": "je pozitivno", + "MATH_IS_NEGATIVE": "je negativno", + "MATH_IS_DIVISIBLE_BY": "je deljivo s/z", + "MATH_IS_TOOLTIP": "Preveri, ali je število sodo, liho, praštevilo, celo, pozitivno, negativno ali če je deljivo z določenim številom. Vrne resnično ali neresnično.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Increment_and_decrement_operators", + "MATH_CHANGE_TITLE": "spremeni %1 za %2", + "MATH_CHANGE_TOOLTIP": "Prišteje število k spremenljivki »%1«.", + "MATH_ROUND_HELPURL": "https://sl.wikipedia.org/wiki/Zaokro%C5%BEanje", + "MATH_ROUND_TOOLTIP": "Zaokroži število navzgor ali navzdol.", + "MATH_ROUND_OPERATOR_ROUND": "zaokroži", + "MATH_ROUND_OPERATOR_ROUNDUP": "zaokroži navzgor", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokroži navzdol", + "MATH_ONLIST_OPERATOR_SUM": "vsota seznama", + "MATH_ONLIST_TOOLTIP_SUM": "Vrne vsoto vseh števil v seznamu.", + "MATH_ONLIST_OPERATOR_MIN": "minimum seznama", + "MATH_ONLIST_TOOLTIP_MIN": "Vrne najmanjše število v seznamu.", + "MATH_ONLIST_OPERATOR_MAX": "maksimum seznama", + "MATH_ONLIST_TOOLTIP_MAX": "Vrne največje število v seznamu.", + "MATH_ONLIST_OPERATOR_AVERAGE": "povprečje seznama", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Vrne povprečje (aritmetično sredino) števil v seznamu.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana seznama", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Vrne mediano število v seznamu.", + "MATH_ONLIST_OPERATOR_MODE": "modus seznama", + "MATH_ONLIST_TOOLTIP_MODE": "Vrne seznam najpogostejšega(ih) elementa(-ov) v seznamu.", + "MATH_ONLIST_OPERATOR_STD_DEV": "standardni odmik seznama", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Vrne standardni odmik elementov v seznamu.", + "MATH_ONLIST_OPERATOR_RANDOM": "naključni element seznama", + "MATH_ONLIST_TOOLTIP_RANDOM": "Vrne naključno število izmed števil v seznamu.", + "MATH_MODULO_HELPURL": "https://sl.wikipedia.org/wiki/Modulo", + "MATH_MODULO_TITLE": "ostanek pri %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Vrne ostanek pri deljenju dveh števil.", + "MATH_CONSTRAIN_HELPURL": "https://en.wikipedia.org/wiki/Clamping_%28graphics%29", + "MATH_CONSTRAIN_TITLE": "omeji %1 na najmanj %2 in največ %3", + "MATH_CONSTRAIN_TOOLTIP": "Omeji število, da bo med določenima (vključenima) mejama.", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "naključno število med %1 in %2", + "MATH_RANDOM_INT_TOOLTIP": "Vrne naključno število med dvema določenima mejama, vključno z mejama.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "naključni ulomek", + "MATH_RANDOM_FLOAT_TOOLTIP": "Vrne naključni ulomek med (vključno) 0,0 in 1,0 (izključno).", + "MATH_ATAN2_HELPURL": "https://sl.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 koordinat X: %1 in Y: %2", + "MATH_ATAN2_TOOLTIP": "Vrne arkus tangens točke (X, Y) v stopinjah med −180 in 180.", + "TEXT_TEXT_HELPURL": "https://sl.wikipedia.org/wiki/Niz", + "TEXT_TEXT_TOOLTIP": "Črka, beseda ali vrstica besedila.", + "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", + "TEXT_JOIN_TITLE_CREATEWITH": "ustvari besedilo iz", + "TEXT_JOIN_TOOLTIP": "Ustvari besedilo tako, da združi poljubno število elementov.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "združi", + "TEXT_CREATE_JOIN_TOOLTIP": "Doda, odstrani ali spremeni vrstni red odsekov za ponovno nastavitev tega bloka besedila.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Doda element k besedilu.", + "TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_APPEND_TITLE": "k %1 dodaj besedilo %2", + "TEXT_APPEND_TOOLTIP": "Doda besedilo k spremenljivki »%1«.", + "TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification", + "TEXT_LENGTH_TITLE": "dolžina %1", + "TEXT_LENGTH_TOOLTIP": "Vrne število znakov (vključno s presledki) v določenem besedilu.", + "TEXT_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Text#checking-for-empty-text", + "TEXT_ISEMPTY_TITLE": "%1 je prazno", + "TEXT_ISEMPTY_TOOLTIP": "Vrne resnično, če je določeno besedilo prazno.", + "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", + "TEXT_INDEXOF_TOOLTIP": "Vrne mesto (indeks) prve/zadnje pojavitve drugega besedila v prvem besedilu. Če besedila ne najde, vrne %1.", + "TEXT_INDEXOF_TITLE": "v besedilu %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "najdi prvo pojavitev besedila", + "TEXT_INDEXOF_OPERATOR_LAST": "najdi zadnjo pojavitev besedila", + "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", + "TEXT_CHARAT_TITLE": "v besedilu %1 %2", + "TEXT_CHARAT_FROM_START": "vrni črko št.", + "TEXT_CHARAT_FROM_END": "vrni črko št. od konca", + "TEXT_CHARAT_FIRST": "vrni prvo črko", + "TEXT_CHARAT_LAST": "vrni zadnjo črko", + "TEXT_CHARAT_RANDOM": "vrni naključno črko", + "TEXT_CHARAT_TOOLTIP": "Vrne črko na določenem mestu.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Vrne določen del besedila.", + "TEXT_GET_SUBSTRING_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "iz besedila", + "TEXT_GET_SUBSTRING_START_FROM_START": "vrni podniz od črke št.", + "TEXT_GET_SUBSTRING_START_FROM_END": "vrni podniz od črke št. od konca", + "TEXT_GET_SUBSTRING_START_FIRST": "vrni podniz od prve črke", + "TEXT_GET_SUBSTRING_END_FROM_START": "do črke št.", + "TEXT_GET_SUBSTRING_END_FROM_END": "do črke št. od konca", + "TEXT_GET_SUBSTRING_END_LAST": "do zadnje črke", + "TEXT_CHANGECASE_HELPURL": "https://github.com/google/blockly/wiki/Text#adjusting-text-case", + "TEXT_CHANGECASE_TOOLTIP": "Vrne kopijo besedila v drugi obliki.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "v VELIKE ČRKE", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "v male črke", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "v Velike Začetnice", + "TEXT_TRIM_HELPURL": "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces", + "TEXT_TRIM_TOOLTIP": "Vrne kopijo besedila z odstranjenimi presledki z ene ali obeh strani.", + "TEXT_TRIM_OPERATOR_BOTH": "odstrani presledke z obeh strani", + "TEXT_TRIM_OPERATOR_LEFT": "odstrani presledke z leve strani", + "TEXT_TRIM_OPERATOR_RIGHT": "odstrani presledke z desne strani", + "TEXT_PRINT_HELPURL": "https://github.com/google/blockly/wiki/Text#printing-text", + "TEXT_PRINT_TITLE": "izpiši %1", + "TEXT_PRINT_TOOLTIP": "Izpiše določeno besedilo, številko ali drugo vrednost.", + "TEXT_PROMPT_HELPURL": "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user", + "TEXT_PROMPT_TYPE_TEXT": "vprašaj za besedilo s sporočilom", + "TEXT_PROMPT_TYPE_NUMBER": "vprašaj za številko s sporočilom", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Vpraša uporabnika za vnos številke.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Vpraša uporabnika za vnos besedila.", + "TEXT_COUNT_MESSAGE0": "preštej %1 v %2", + "TEXT_COUNT_TOOLTIP": "Preštej, kolikokrat se neko besedilo pojavi v drugem besedilu.", + "TEXT_REPLACE_MESSAGE0": "zamenjaj %1 z %2 v %3", + "TEXT_REPLACE_TOOLTIP": "Zamenja vse pojavitve besedila v drugem besedilu.", + "TEXT_REVERSE_MESSAGE0": "obrni %1", + "TEXT_REVERSE_TOOLTIP": "Obrne vrstni red znakov v besedilu.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "ustvari prazen seznam", + "LISTS_CREATE_EMPTY_TOOLTIP": "Vrne seznam dolžine 0, ki ne vsebuje nobenih podatkovnih zapisov.", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Ustvari seznam s poljubnim številom elementov.", + "LISTS_CREATE_WITH_INPUT_WITH": "ustvari seznam iz", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "seznam", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Doda, odstrani ali spremeni vrstni red blokov seznama.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Doda element v seznam.", + "LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_REPEAT_TOOLTIP": "Ustvari seznam iz dane vrednosti z določenim številom ponovitev.", + "LISTS_REPEAT_TITLE": "ustvari seznam z elementom %1, ki se ponovi %2-krat", + "LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of", + "LISTS_LENGTH_TITLE": "dolžina %1", + "LISTS_LENGTH_TOOLTIP": "Vrne dolžino seznama.", + "LISTS_ISEMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#is-empty", + "LISTS_ISEMPTY_TITLE": "%1 je prazen", + "LISTS_ISEMPTY_TOOLTIP": "Vrne resnično, če je seznam prazen.", + "LISTS_INLIST": "v seznamu", + "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", + "LISTS_INDEX_OF_FIRST": "najdi prvo pojavitev elementa", + "LISTS_INDEX_OF_LAST": "najdi zadnjo pojavitev elementa", + "LISTS_INDEX_OF_TOOLTIP": "Vrne mesto (indeks) prve/zadnje pojavitve elementa v seznamu. Če elementa ne najde, vrne %1.", + "LISTS_GET_INDEX_GET": "vrni", + "LISTS_GET_INDEX_GET_REMOVE": "odstrani in vrni", + "LISTS_GET_INDEX_REMOVE": "odstrani", + "LISTS_GET_INDEX_FROM_START": "št.", + "LISTS_GET_INDEX_FROM_END": "mesto št. od konca", + "LISTS_GET_INDEX_FIRST": "prvo mesto", + "LISTS_GET_INDEX_LAST": "zadnje mesto", + "LISTS_GET_INDEX_RANDOM": "naključno mesto", + "LISTS_INDEX_FROM_START_TOOLTIP": "Prvi element je št. %1.", + "LISTS_INDEX_FROM_END_TOOLTIP": "Zadnji element je št. %1.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Vrne element na določenem mestu v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vrne prvi element seznama.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vrne zadnji element seznama.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vrne naključni element seznama.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Odstrani in vrne element na določenem mestu v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Odstrani in vrne prvi element seznama.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Odstrani in vrne zadnji element seznama.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Odstrani in vrne naključni element seznama.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Odstrani element na določenem mestu v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Odstrani prvi element seznama.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Odstrani zadnji element seznama.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Odstrani naključni element seznama.", + "LISTS_SET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#in-list--set", + "LISTS_SET_INDEX_SET": "nastavi na", + "LISTS_SET_INDEX_INSERT": "vstavi na", + "LISTS_SET_INDEX_INPUT_TO": "element", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Nastavi element na določenem mestu v seznamu.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Nastavi prvi element seznama.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Nastavi zadnji element seznama.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Nastavi naključni element seznama.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Vstavi element na določeno mesto v seznamu.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Vstavi element na začetek seznama.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Doda element na konec seznama.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Vstavi element na naključno mesto v seznamu.", + "LISTS_GET_SUBLIST_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-a-sublist", + "LISTS_GET_SUBLIST_START_FROM_START": "ustvari podseznam od mesta št.", + "LISTS_GET_SUBLIST_START_FROM_END": "ustvari podseznam od mesta št. od konca", + "LISTS_GET_SUBLIST_START_FIRST": "ustvari podseznam od prvega mesta", + "LISTS_GET_SUBLIST_END_FROM_START": "do mesta št.", + "LISTS_GET_SUBLIST_END_FROM_END": "do mesta št. od konca", + "LISTS_GET_SUBLIST_END_LAST": "do zadnjega mesta", + "LISTS_GET_SUBLIST_TOOLTIP": "Ustvari kopijo določenega dela seznama.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "uredi %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Uredi kopijo seznama.", + "LISTS_SORT_ORDER_ASCENDING": "naraščajoče", + "LISTS_SORT_ORDER_DESCENDING": "padajoče", + "LISTS_SORT_TYPE_NUMERIC": "številsko", + "LISTS_SORT_TYPE_TEXT": "abecedno", + "LISTS_SORT_TYPE_IGNORECASE": "abecedno, prezri velikost črk", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "ustvari seznam iz besedila", + "LISTS_SPLIT_TEXT_FROM_LIST": "ustvari besedilo iz seznama", + "LISTS_SPLIT_WITH_DELIMITER": "z ločilom", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Razdruži besedilo v seznam besedil s prelomom pri vsakem ločilu.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Združi seznam besedil v eno besedilo z ločilom med besedili.", + "LISTS_REVERSE_MESSAGE0": "obrni %1", + "LISTS_REVERSE_TOOLTIP": "Obrne kopijo seznama.", + "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", + "VARIABLES_GET_TOOLTIP": "Vrne vrednost spremenljivke.", + "VARIABLES_GET_CREATE_SET": "Ustvari »nastavi %1«", + "VARIABLES_SET_HELPURL": "https://github.com/google/blockly/wiki/Variables#set", + "VARIABLES_SET": "nastavi %1 na %2", + "VARIABLES_SET_TOOLTIP": "Nastavi, da je vrednost spremenljivke enaka vnosu.", + "VARIABLES_SET_CREATE_GET": "Ustvari »vrni %1«", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "izvedi", + "PROCEDURES_DEFNORETURN_PROCEDURE": "nekaj", + "PROCEDURES_BEFORE_PARAMS": "s/z:", + "PROCEDURES_CALL_BEFORE_PARAMS": "s/z:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Ustvari funkcijo brez izhoda.", + "PROCEDURES_DEFNORETURN_COMMENT": "Opiši funkcijo ...", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFRETURN_RETURN": "vrni", + "PROCEDURES_DEFRETURN_TOOLTIP": "Ustvari funkcijo z izhodom.", + "PROCEDURES_ALLOW_STATEMENTS": "dovoli stavke", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Pozor: Ta funkcija ima podvojene parametre.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://sl.wikipedia.org/wiki/Subrutina", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Izvede uporabniško določeno funkcijo »%1«.", + "PROCEDURES_CALLRETURN_HELPURL": "https://sl.wikipedia.org/wiki/Subrutina", + "PROCEDURES_CALLRETURN_TOOLTIP": "Izvede uporabniško funkcijo »%1« in uporabi njen izhod.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "vnosi", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Doda, odstrani ali spremeni vrstni red vnosov za to funkcijo.", + "PROCEDURES_MUTATORARG_TITLE": "ime vnosa:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Funkciji doda vnos.", + "PROCEDURES_HIGHLIGHT_DEF": "Označi blok funkcije", + "PROCEDURES_CREATE_DO": "Ustvari »%1«", + "PROCEDURES_IFRETURN_TOOLTIP": "Če je vrednost resnična, vrne drugo vrednost.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Pozor: Ta blok lahko uporabite samo v bloku funkcije.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Povej nekaj ...", + "WORKSPACE_ARIA_LABEL": "Blocklyjev delovni prostor", + "COLLAPSED_WARNINGS_WARNING": "Skrčeni bloki vsebujejo opozorila.", + "DIALOG_OK": "V redu", + "DIALOG_CANCEL": "Prekliči" +} diff --git a/msg/json/smn.json b/msg/json/smn.json index ec88e16caa8..0f08e9035fb 100644 --- a/msg/json/smn.json +++ b/msg/json/smn.json @@ -1,108 +1,108 @@ -{ - "@metadata": { - "authors": [ - "Seipinne" - ] - }, - "VARIABLES_DEFAULT_NAME": "tiŋgâ", - "UNNAMED_KEY": "nomâttem", - "TODAY": "Onne", - "DUPLICATE_BLOCK": "Jyemeehpittá", - "ADD_COMMENT": "Lasseet komment", - "REMOVE_COMMENT": "Siho komment", - "DUPLICATE_COMMENT": "Dublikist komment", - "EXTERNAL_INPUTS": "Olgoldâs fáluseh", - "INLINE_INPUTS": "Pyevti fálusijd", - "HELP": "Iše", - "UNDO": "Koomeet", - "REDO": "Räähti uđđâsist", - "CHANGE_VALUE_TITLE": "Mute áárvu:", - "RENAME_VARIABLE": "Noomât uđđâsist muttojeijee...", - "RENAME_VARIABLE_TITLE": "Noomât uđđâsist puoh '%1' muttojeijee:", - "NEW_VARIABLE": "Räähti muttojeijee...", - "NEW_STRING_VARIABLE": "Räähti merkkâráiđumuttojeijee...", - "NEW_NUMBER_VARIABLE": "Räähti nummeermuttojeijee...", - "NEW_COLOUR_VARIABLE": "Räähti ivnemuttojeijee...", - "NEW_VARIABLE_TYPE_TITLE": "Uđđâ muttojeijee tijppâ:", - "NEW_VARIABLE_TITLE": "Uđđâ muttojeijee nommâ:", - "VARIABLE_ALREADY_EXISTS": "Muttojeijee mon nommâ lii '%1' lii jo lemin.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Muttojeijee, mon nommâ lii '%1', lii jo lemin nube tiijpân: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Sikkop-uv %1 kevttim muttojeijeest '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ij lah máhđulâš sikkođ muttojeijee '%1' tanen ko tot lii uási funktio miäruštâllâm '%2'", - "DELETE_VARIABLE": "Siho muttojeijee '%1'", - "COLOUR_PICKER_HELPURL": "https://smn.wikipedia.org/wiki/Ivne", - "COLOUR_PICKER_TOOLTIP": "Valjii ivne paletist.", - "COLOUR_RANDOM_TITLE": "säti-ivne", - "COLOUR_RANDOM_TOOLTIP": "Valjii ivne sätioornigist.", - "COLOUR_RGB_TITLE": "ivne, mast lii", - "COLOUR_RGB_RED": "ruopsâd", - "COLOUR_RGB_GREEN": "ruánáá", - "COLOUR_RGB_BLUE": "čuovjâd", - "COLOUR_RGB_TOOLTIP": "Räähti ivne, mast lii tiätu meeri ruopsâd, ruánáá já čuovjâd. Puoh áárvuh kalgeh leđe 0 já 100 kooskâst.", - "COLOUR_BLEND_TITLE": "siävuttâs", - "COLOUR_BLEND_COLOUR1": "ivne 1", - "COLOUR_BLEND_COLOUR2": "ivne 2", - "COLOUR_BLEND_RATIO": "koskâvuotâ", - "COLOUR_BLEND_TOOLTIP": "Siävvut kyevti ivne koskânis adelum koskâvuođâst (0.0 - 1.0).", - "CONTROLS_REPEAT_TITLE": "kiärdut %1 tove", - "CONTROLS_REPEAT_INPUT_DO": "poorgâ", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "kiärdut ton puudâ ko", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "kiärdut tassaaš ko", - "CONTROLS_IF_MSG_IF": "jis", - "CONTROLS_IF_MSG_ELSEIF": "mudoi jis", - "CONTROLS_IF_MSG_ELSE": "mudoi", - "LOGIC_OPERATION_AND": "já", - "LOGIC_OPERATION_OR": "teikkâ", - "LOGIC_NEGATE_TITLE": "ij %1", - "LOGIC_BOOLEAN_TRUE": "tuotâ", - "LOGIC_BOOLEAN_FALSE": "epituotâ", - "LOGIC_NULL": "ij maiden", - "LOGIC_TERNARY_CONDITION": "testâ", - "LOGIC_TERNARY_IF_TRUE": "jis tuotâ", - "LOGIC_TERNARY_IF_FALSE": "jis epituotâ", - "MATH_NUMBER_TOOLTIP": "Loho.", - "MATH_SINGLE_OP_ROOT": "neljihâšruotâs", - "MATH_SINGLE_OP_ABSOLUTE": "jiešárvu", - "MATH_IS_EVEN": "lii parâlâš", - "MATH_IS_ODD": "lii parâttem", - "MATH_IS_PRIME": "lii algâloho", - "MATH_IS_WHOLE": "lii olesloho", - "MATH_IS_POSITIVE": "lii positiivlâš", - "MATH_IS_NEGATIVE": "lii negatiivlâš", - "MATH_IS_DIVISIBLE_BY": "puáhtá jyehiđ lovvoin", - "MATH_IS_TOOLTIP": "Täärhist lii-uv nummeer parâlâs, parâttem, algâloho, olesloho, positiivlâš, negatiivlâš, teikkâ jis tom puáhtá jyehiđ nube lovvoin. Maaccât tuotâ teikkâ epituotâ.", - "MATH_CHANGE_TITLE": "mute %1 árvoin %2", - "MATH_CHANGE_TOOLTIP": "Lasseet áárvu muttojeijen '%1'.", - "MATH_ROUND_TOOLTIP": "Jorbee lovo pajas- teikkâ vuáluskulij.", - "MATH_ROUND_OPERATOR_ROUND": "jurbii", - "MATH_ROUND_OPERATOR_ROUNDUP": "jurbii pajaskulij", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "jurbii vuáluskulij", - "MATH_ONLIST_OPERATOR_SUM": "summe lovoin", - "MATH_ONLIST_TOOLTIP_SUM": "Maaccât puoh adelum lovoi sume.", - "MATH_ONLIST_OPERATOR_MIN": "ucemus lovoin", - "MATH_ONLIST_TOOLTIP_MIN": "Maaccât ucemuu adelum lovoin.", - "MATH_ONLIST_OPERATOR_MAX": "stuárráámus lovoin", - "MATH_ONLIST_TOOLTIP_MAX": "Maaccât stuárráámuu adelum lovoin.", - "MATH_ONLIST_OPERATOR_AVERAGE": "koskâárvu lovoin", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Maaccât aritmaattisâš koskâáárvu adelum lovoin.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediaan lovoin", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Maaccât adelum lovoi mediaan.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "labde", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listo", - "LISTS_INLIST": "listoost", - "LISTS_GET_INDEX_REMOVE": "siho", - "LISTS_GET_INDEX_FIRST": "vuosmuš", - "LISTS_GET_INDEX_LAST": "majemuš", - "LISTS_GET_INDEX_RANDOM": "sätinálásâš", - "PROCEDURES_DEFNORETURN_PROCEDURE": "poorgâ maidnii", - "PROCEDURES_BEFORE_PARAMS": "parameettereh:", - "PROCEDURES_CALL_BEFORE_PARAMS": "parameettereh:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Räähti puáđushánnáá leijee funktio.", - "PROCEDURES_DEFNORETURN_COMMENT": "Valdâl taam funktio...", - "PROCEDURES_DEFRETURN_RETURN": "maaccât", - "PROCEDURES_MUTATORCONTAINER_TITLE": "fáluseh", - "PROCEDURES_MUTATORARG_TITLE": "fáálus nommâ:", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Eeđâ maidnii...", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Jooskâ" -} +{ + "@metadata": { + "authors": [ + "Seipinne" + ] + }, + "VARIABLES_DEFAULT_NAME": "tiŋgâ", + "UNNAMED_KEY": "nomâttem", + "TODAY": "Onne", + "DUPLICATE_BLOCK": "Jyemeehpittá", + "ADD_COMMENT": "Lasseet komment", + "REMOVE_COMMENT": "Siho komment", + "DUPLICATE_COMMENT": "Dublikist komment", + "EXTERNAL_INPUTS": "Olgoldâs fáluseh", + "INLINE_INPUTS": "Pyevti fálusijd", + "HELP": "Iše", + "UNDO": "Koomeet", + "REDO": "Räähti uđđâsist", + "CHANGE_VALUE_TITLE": "Mute áárvu:", + "RENAME_VARIABLE": "Noomât uđđâsist muttojeijee...", + "RENAME_VARIABLE_TITLE": "Noomât uđđâsist puoh '%1' muttojeijee:", + "NEW_VARIABLE": "Räähti muttojeijee...", + "NEW_STRING_VARIABLE": "Räähti merkkâráiđumuttojeijee...", + "NEW_NUMBER_VARIABLE": "Räähti nummeermuttojeijee...", + "NEW_COLOUR_VARIABLE": "Räähti ivnemuttojeijee...", + "NEW_VARIABLE_TYPE_TITLE": "Uđđâ muttojeijee tijppâ:", + "NEW_VARIABLE_TITLE": "Uđđâ muttojeijee nommâ:", + "VARIABLE_ALREADY_EXISTS": "Muttojeijee mon nommâ lii '%1' lii jo lemin.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Muttojeijee, mon nommâ lii '%1', lii jo lemin nube tiijpân: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Sikkop-uv %1 kevttim muttojeijeest '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ij lah máhđulâš sikkođ muttojeijee '%1' tanen ko tot lii uási funktio miäruštâllâm '%2'", + "DELETE_VARIABLE": "Siho muttojeijee '%1'", + "COLOUR_PICKER_HELPURL": "https://smn.wikipedia.org/wiki/Ivne", + "COLOUR_PICKER_TOOLTIP": "Valjii ivne paletist.", + "COLOUR_RANDOM_TITLE": "säti-ivne", + "COLOUR_RANDOM_TOOLTIP": "Valjii ivne sätioornigist.", + "COLOUR_RGB_TITLE": "ivne, mast lii", + "COLOUR_RGB_RED": "ruopsâd", + "COLOUR_RGB_GREEN": "ruánáá", + "COLOUR_RGB_BLUE": "čuovjâd", + "COLOUR_RGB_TOOLTIP": "Räähti ivne, mast lii tiätu meeri ruopsâd, ruánáá já čuovjâd. Puoh áárvuh kalgeh leđe 0 já 100 kooskâst.", + "COLOUR_BLEND_TITLE": "siävuttâs", + "COLOUR_BLEND_COLOUR1": "ivne 1", + "COLOUR_BLEND_COLOUR2": "ivne 2", + "COLOUR_BLEND_RATIO": "koskâvuotâ", + "COLOUR_BLEND_TOOLTIP": "Siävvut kyevti ivne koskânis adelum koskâvuođâst (0.0 - 1.0).", + "CONTROLS_REPEAT_TITLE": "kiärdut %1 tove", + "CONTROLS_REPEAT_INPUT_DO": "poorgâ", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "kiärdut ton puudâ ko", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "kiärdut tassaaš ko", + "CONTROLS_IF_MSG_IF": "jis", + "CONTROLS_IF_MSG_ELSEIF": "mudoi jis", + "CONTROLS_IF_MSG_ELSE": "mudoi", + "LOGIC_OPERATION_AND": "já", + "LOGIC_OPERATION_OR": "teikkâ", + "LOGIC_NEGATE_TITLE": "ij %1", + "LOGIC_BOOLEAN_TRUE": "tuotâ", + "LOGIC_BOOLEAN_FALSE": "epituotâ", + "LOGIC_NULL": "ij maiden", + "LOGIC_TERNARY_CONDITION": "testâ", + "LOGIC_TERNARY_IF_TRUE": "jis tuotâ", + "LOGIC_TERNARY_IF_FALSE": "jis epituotâ", + "MATH_NUMBER_TOOLTIP": "Loho.", + "MATH_SINGLE_OP_ROOT": "neljihâšruotâs", + "MATH_SINGLE_OP_ABSOLUTE": "jiešárvu", + "MATH_IS_EVEN": "lii parâlâš", + "MATH_IS_ODD": "lii parâttem", + "MATH_IS_PRIME": "lii algâloho", + "MATH_IS_WHOLE": "lii olesloho", + "MATH_IS_POSITIVE": "lii positiivlâš", + "MATH_IS_NEGATIVE": "lii negatiivlâš", + "MATH_IS_DIVISIBLE_BY": "puáhtá jyehiđ lovvoin", + "MATH_IS_TOOLTIP": "Täärhist lii-uv nummeer parâlâs, parâttem, algâloho, olesloho, positiivlâš, negatiivlâš, teikkâ jis tom puáhtá jyehiđ nube lovvoin. Maaccât tuotâ teikkâ epituotâ.", + "MATH_CHANGE_TITLE": "mute %1 árvoin %2", + "MATH_CHANGE_TOOLTIP": "Lasseet áárvu muttojeijen '%1'.", + "MATH_ROUND_TOOLTIP": "Jorbee lovo pajas- teikkâ vuáluskulij.", + "MATH_ROUND_OPERATOR_ROUND": "jurbii", + "MATH_ROUND_OPERATOR_ROUNDUP": "jurbii pajaskulij", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "jurbii vuáluskulij", + "MATH_ONLIST_OPERATOR_SUM": "summe lovoin", + "MATH_ONLIST_TOOLTIP_SUM": "Maaccât puoh adelum lovoi sume.", + "MATH_ONLIST_OPERATOR_MIN": "ucemus lovoin", + "MATH_ONLIST_TOOLTIP_MIN": "Maaccât ucemuu adelum lovoin.", + "MATH_ONLIST_OPERATOR_MAX": "stuárráámus lovoin", + "MATH_ONLIST_TOOLTIP_MAX": "Maaccât stuárráámuu adelum lovoin.", + "MATH_ONLIST_OPERATOR_AVERAGE": "koskâárvu lovoin", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Maaccât aritmaattisâš koskâáárvu adelum lovoin.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediaan lovoin", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Maaccât adelum lovoi mediaan.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "labde", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listo", + "LISTS_INLIST": "listoost", + "LISTS_GET_INDEX_REMOVE": "siho", + "LISTS_GET_INDEX_FIRST": "vuosmuš", + "LISTS_GET_INDEX_LAST": "majemuš", + "LISTS_GET_INDEX_RANDOM": "sätinálásâš", + "PROCEDURES_DEFNORETURN_PROCEDURE": "poorgâ maidnii", + "PROCEDURES_BEFORE_PARAMS": "parameettereh:", + "PROCEDURES_CALL_BEFORE_PARAMS": "parameettereh:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Räähti puáđushánnáá leijee funktio.", + "PROCEDURES_DEFNORETURN_COMMENT": "Valdâl taam funktio...", + "PROCEDURES_DEFRETURN_RETURN": "maaccât", + "PROCEDURES_MUTATORCONTAINER_TITLE": "fáluseh", + "PROCEDURES_MUTATORARG_TITLE": "fáálus nommâ:", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Eeđâ maidnii...", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Jooskâ" +} diff --git a/msg/json/sq.json b/msg/json/sq.json index eae51aeb730..14101be0d8e 100644 --- a/msg/json/sq.json +++ b/msg/json/sq.json @@ -1,357 +1,357 @@ -{ - "@metadata": { - "authors": [ - "Arianit", - "Eraldkerciku", - "Liridon", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "send", - "UNNAMED_KEY": "pa emër", - "TODAY": "Sot", - "DUPLICATE_BLOCK": "Kopjo", - "ADD_COMMENT": "Vendos nje Koment", - "REMOVE_COMMENT": "Fshij komentin", - "DUPLICATE_COMMENT": "Koment Dublikatë", - "EXTERNAL_INPUTS": "Hyrjet e jashtme", - "INLINE_INPUTS": "Hyrjet e brendshme", - "DELETE_BLOCK": "Fshij bllokun", - "DELETE_X_BLOCKS": "Fshij %1 blloqe", - "DELETE_ALL_BLOCKS": "Fshijë të gjitha %1 të blloqeve?", - "CLEAN_UP": "Pastro blloqet", - "COLLAPSE_BLOCK": "Mbyll bllokun", - "COLLAPSE_ALL": "Mbyll blloqet", - "EXPAND_BLOCK": "Zmadho bllokun", - "EXPAND_ALL": "Zmadho blloqet", - "DISABLE_BLOCK": "Çaktivizo bllokun", - "ENABLE_BLOCK": "Aktivizo bllokun", - "HELP": "Ndihmë", - "UNDO": "Zhbëj", - "REDO": "Ribëj", - "CHANGE_VALUE_TITLE": "Ndrysho Vlerat:", - "RENAME_VARIABLE": "Ndrysho emrin variables...", - "RENAME_VARIABLE_TITLE": "Ndrysho emrin e te gjitha '%1' variablave ne :", - "NEW_VARIABLE": "Krijo variabël...", - "NEW_STRING_VARIABLE": "Krijo variabël varg", - "NEW_NUMBER_VARIABLE": "Krijo variabël numër", - "NEW_COLOUR_VARIABLE": "Krijo variabël ngjyrë...", - "NEW_VARIABLE_TYPE_TITLE": "Tip i ri i variablës:", - "NEW_VARIABLE_TITLE": "Emri i identifikatorit të ri:", - "VARIABLE_ALREADY_EXISTS": "Një variabël e quajtur '%1' tashmë ekziston.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Një variabël me emrin '%1' veç ekziston për një tip tjetër: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Fshi përdorimin %1 të variablës '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nuk mund të fshihet variabla '%1' sepse është pjesë e definicionit të funksionit '%2'", - "DELETE_VARIABLE": "Fshi variablën '%1'", - "COLOUR_PICKER_HELPURL": "http://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Zgjidh nje ngjyre nga nje game ngjyrash.", - "COLOUR_RANDOM_TITLE": "ngjyre e rastesishme", - "COLOUR_RANDOM_TOOLTIP": "Zgjidhni një ngjyrë në mënyrë të rastësishme.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "ngjyre me", - "COLOUR_RGB_RED": "e kuqe", - "COLOUR_RGB_GREEN": "jeshile", - "COLOUR_RGB_BLUE": "blu", - "COLOUR_RGB_TOOLTIP": "Krijo një ngjyrë me shumën e specifikuar te te kuqes, te gjelbëres, dhe bluse. Te gjitha vlerat duhet te jene mes 0 dhe 100.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "Përzierje", - "COLOUR_BLEND_COLOUR1": "Ngjyra 1", - "COLOUR_BLEND_COLOUR2": "Ngjyra 2", - "COLOUR_BLEND_RATIO": "Perpjesetim", - "COLOUR_BLEND_TOOLTIP": "Perzien dy ngjyra së bashku me një raport të dhënë (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "http://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "përsërit %1 herë", - "CONTROLS_REPEAT_INPUT_DO": "ekzekuto", - "CONTROLS_REPEAT_TOOLTIP": "Ekzekuto disa fjali disa herë.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "përsërit përderisa", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "përsërit derisa", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Përderisa një vlerë është e saktë, atëherë ekzekuto disa fjali.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Përderisa një vlerë është e pasaktë, atëherë ekzekuto disa fjali.", - "CONTROLS_FOR_TOOLTIP": "Bëje identifikuesin \"%1\" që ta ketë vlerat prej numrit të fillimit deri tek numri i fundit, duke numëruar nga intervali i specifikuar, dhe ti bëj blloqet e specifikuara.", - "CONTROLS_FOR_TITLE": "numero me %1 nga %2 ne %3 me nga %4", - "CONTROLS_FOREACH_TITLE": "per cdo produkt %1 ne liste %2", - "CONTROLS_FOREACH_TOOLTIP": "Per cdo produkt ne nje \"liste\" \"vendos\" ndryshoren '%1' produktit, dhe pastaj bej disa deklarata.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "dil nga nje faze perseritese", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "vazhdo me elementin tjeter te nje faze perseritese", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ndahu nga unaza.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Kapërce pjesën e mbetur të unazës, dhe vazhdo me ripërsëritjen tjetër.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Paralajmërim: Ky bllok mund të përdoret vetëm brenda unazës.", - "CONTROLS_IF_TOOLTIP_1": "Nëse një vlerë është e saktë, atëherë ekzekuto disa fjali.", - "CONTROLS_IF_TOOLTIP_2": "Nëse një vlerë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, ekzekuto bllokun e dytë të fjalive.", - "CONTROLS_IF_TOOLTIP_3": "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive.", - "CONTROLS_IF_TOOLTIP_4": "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive. Nëse asnjëra nga vlerat nuk është e saktë, ekzekuto bllokun e fundit të fjalive.", - "CONTROLS_IF_MSG_IF": "nëse", - "CONTROLS_IF_MSG_ELSEIF": "përndryshe nëse", - "CONTROLS_IF_MSG_ELSE": "përndryshe", - "CONTROLS_IF_IF_TOOLTIP": "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këte bllok nëse.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "\"Vendos\" \"kushtein\"tek \"pjesa\" \"if\"", - "CONTROLS_IF_ELSE_TOOLTIP": "Shto një përfundues, që i mbërrin të gjitha kushtet në bllokun nëse.", - "LOGIC_COMPARE_HELPURL": "http://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Ktheje të saktë nëse të dy hyrjet janë të barabarta me njëra-tjetrën.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Ktheje të saktë nëse të dy hyrjet nuk janë të barabarta me njëra-tjetrën.", - "LOGIC_COMPARE_TOOLTIP_LT": "Ktheje të saktë nëse hyrja e parë është më e vogël se hyrja e dytë.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Ktheje të saktë nëse hyrja e parë është më e vogël ose e barabartë me hyrjen e dytë.", - "LOGIC_COMPARE_TOOLTIP_GT": "Ktheje të saktë nëse hyrja e parë është më e madhe se hyrja e dytë.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Ktheje të saktë nëse hyrja e parë është më e madhe ose e barabartë me hyrjen e dytë.", - "LOGIC_OPERATION_TOOLTIP_AND": "Kthehet të saktë nëse të dy hyrjet janë të sakta.", - "LOGIC_OPERATION_AND": "dhe", - "LOGIC_OPERATION_TOOLTIP_OR": "Kthehet e saktë nëse së paku njëra nga hyrjet është e saktë.", - "LOGIC_OPERATION_OR": "ose", - "LOGIC_NEGATE_TITLE": "jo %1", - "LOGIC_NEGATE_TOOLTIP": "Kthehet e saktë nëse hyrja është e pasaktë. Kthehet e pasaktë nëse hyrja është e saktë.", - "LOGIC_BOOLEAN_TRUE": "e saktë", - "LOGIC_BOOLEAN_FALSE": "e pasaktë", - "LOGIC_BOOLEAN_TOOLTIP": "Kthehet ose të saktë ose të pasaktë.", - "LOGIC_NULL_HELPURL": "http://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "pavlerë", - "LOGIC_NULL_TOOLTIP": "Kthehet e pavlerë.", - "LOGIC_TERNARY_HELPURL": "http://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "nëse e saktë", - "LOGIC_TERNARY_IF_FALSE": "nëse e pasaktë", - "LOGIC_TERNARY_TOOLTIP": "Kontrollo kushtin në 'test'. Nëse kushti është i saktë, kthen vlerën 'nëse e saktë'; përndryshe kthen vlerën 'nëse e pasaktë'.", - "MATH_NUMBER_HELPURL": "http://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Një numër.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "x", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asinus", - "MATH_TRIG_ACOS": "acosinus", - "MATH_TRIG_ATAN": "atangjentë", - "MATH_ARITHMETIC_HELPURL": "http://sq.wikipedia.org/wiki/Aritmetika", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Kthen shumën e dy numrave.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Kthen ndryshimin e dy numrave.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Kthen produktin e dy numrave.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Kthen herësin e dy numrave.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Kthen numrin e parë të ngritur në fuqinë e numrit të dytë.", - "MATH_SINGLE_HELPURL": "http://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "rrënja katrore", - "MATH_SINGLE_TOOLTIP_ROOT": "Kthen rrënjën katrore të një numri.", - "MATH_SINGLE_OP_ABSOLUTE": "absolut", - "MATH_SINGLE_TOOLTIP_ABS": "Kthen vlerën absolute të një numri.", - "MATH_SINGLE_TOOLTIP_NEG": "Kthe negacionin e një numri.", - "MATH_SINGLE_TOOLTIP_LN": "Kthen logaritmën natyrale të një numri.", - "MATH_SINGLE_TOOLTIP_LOG10": "Kthen 10 logaritmet bazë të një numri.", - "MATH_SINGLE_TOOLTIP_EXP": "Kthen e në fuqinë e një numri.", - "MATH_SINGLE_TOOLTIP_POW10": "Kthen 10 në fuqinë e një numri.", - "MATH_TRIG_HELPURL": "http://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Kthe kosinusin e nje kendi (jo ne radiant).", - "MATH_TRIG_TOOLTIP_COS": "Kthe kosinusin e nje grade (jo ne radiant).", - "MATH_TRIG_TOOLTIP_TAN": "Kthe tangentin e nje kendi (jo radiant).", - "MATH_TRIG_TOOLTIP_ASIN": "Rikthe sin-1 e nje numeri.", - "MATH_TRIG_TOOLTIP_ACOS": "Rikthe cos-1 e nje numeri.", - "MATH_TRIG_TOOLTIP_ATAN": "Kthe tg-1 e nje numeri.", - "MATH_CONSTANT_HELPURL": "http://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Kthen një nga konstantet e përbashkëta: : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infiniti).", - "MATH_IS_EVEN": "është çift", - "MATH_IS_ODD": "është tek", - "MATH_IS_PRIME": "është prim", - "MATH_IS_WHOLE": "është i plotë", - "MATH_IS_POSITIVE": "është pozitiv", - "MATH_IS_NEGATIVE": "është negativ", - "MATH_IS_DIVISIBLE_BY": "është i pjestueshme me", - "MATH_IS_TOOLTIP": "Kontrollo nëse një numër është çift, tek, prim, i plotë, pozitiv, negativ, ose nëse është i pjestueshëm me një numër të caktuar. Kthehet e saktë ose e pasaktë.", - "MATH_CHANGE_HELPURL": "http://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "ndrysho %1 nga %2", - "MATH_CHANGE_TOOLTIP": "Shto një numër në ndryshoren '%1'.", - "MATH_ROUND_HELPURL": "http://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Rrumbullakësimi i numrit të lartë ose të ulët.", - "MATH_ROUND_OPERATOR_ROUND": "rrumbullakësimi", - "MATH_ROUND_OPERATOR_ROUNDUP": "rrumbullakësimi i lartë", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "rrumbullakësimi i ulët", - "MATH_ONLIST_OPERATOR_SUM": "mbledhja e listës", - "MATH_ONLIST_TOOLTIP_SUM": "Kthe shumën e të gjithë numrave të listës.", - "MATH_ONLIST_OPERATOR_MIN": "numri më i ulët i listës", - "MATH_ONLIST_TOOLTIP_MIN": "Kthe numrin me të vogël të listës.", - "MATH_ONLIST_OPERATOR_MAX": "numri më i madh i listës", - "MATH_ONLIST_TOOLTIP_MAX": "Kthe numrin më të madh të listës.", - "MATH_ONLIST_OPERATOR_AVERAGE": "mesatarja e listës", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Kthen mesatarën (kuptimi aritmetik) i vlerave numerike të listës.", - "MATH_ONLIST_OPERATOR_MEDIAN": "mediana e listës", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Kthe numrin median të listës.", - "MATH_ONLIST_OPERATOR_MODE": "modat e listës", - "MATH_ONLIST_TOOLTIP_MODE": "Kthe listën e sendit(eve) më të zakonshme të listës.", - "MATH_ONLIST_OPERATOR_STD_DEV": "devijimi standard i listës", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Kthe devijimin standard të listës.", - "MATH_ONLIST_OPERATOR_RANDOM": "send i rastësishëm i listës", - "MATH_ONLIST_TOOLTIP_RANDOM": "Kthe një element të rastësishëm nga lista.", - "MATH_MODULO_HELPURL": "http://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "mbetësi i %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Kthen mbetësin nga pjestimi i dy numrave.", - "MATH_CONSTRAIN_TITLE": "detyro %1 e ulët %2 e lartë %3", - "MATH_CONSTRAIN_TOOLTIP": "Vëni një numër që të jetë në mes të kufive të specifikuara(përfshirëse).", - "MATH_RANDOM_INT_HELPURL": "http://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "numër i plotë i rastësishëm nga %1 deri në %2", - "MATH_RANDOM_INT_TOOLTIP": "Kthe një numër të plotë të rastësishëm të dy kufijve të specifikuar, të përfshirë.", - "MATH_RANDOM_FLOAT_HELPURL": "http://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fraksioni i rastësishëm", - "MATH_RANDOM_FLOAT_TOOLTIP": "Kthe fraksionin e rastësishëm në mes të 0.0 (përfshirëse) dhe 1.0 (jopërfshirëse).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Ktheni arkangjentin e pikës (X, Y) në gradë nga -180 në 180.", - "TEXT_TEXT_HELPURL": "http://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Nje shkronje, fjale, ose rresht teksti.", - "TEXT_JOIN_TITLE_CREATEWITH": "krijo tekst me", - "TEXT_JOIN_TOOLTIP": "Krijo nje pjese te tekstit duke bashkuar se bashku disa sende", - "TEXT_CREATE_JOIN_TITLE_JOIN": "bashkangjit", - "TEXT_CREATE_JOIN_TOOLTIP": "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok teksti.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Shto nje gje ne tekst", - "TEXT_APPEND_TITLE": "ne %1 shto tekst %2", - "TEXT_APPEND_TOOLTIP": "shto tekst tek varibla '%1'.", - "TEXT_LENGTH_TITLE": "gjatesi %1", - "TEXT_LENGTH_TOOLTIP": "Pergjigjet me nje numer shkronjash (duke perfshire hapesire) ne tekstin e dhene.", - "TEXT_ISEMPTY_TITLE": "%1 eshte bosh", - "TEXT_ISEMPTY_TOOLTIP": "Kthehet e vertete neqoftese teksti i dhene eshte bosh.", - "TEXT_INDEXOF_TOOLTIP": "Pergjigjet me indeksin e pare/fundit te rastisjes se tekstit te pare ne tekstin e dyte. Pergjigjet me %1 ne qofte se teksti nuk u gjet.", - "TEXT_INDEXOF_TITLE": "ne tekst %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "gjej rastisjen e pare te tekstit", - "TEXT_INDEXOF_OPERATOR_LAST": "gjej rastisjen e fundit te tekstit", - "TEXT_CHARAT_TITLE": "në tekst %1 %2", - "TEXT_CHARAT_FROM_START": "merr shkronjen #", - "TEXT_CHARAT_FROM_END": "merr shkronjen # nga fundi", - "TEXT_CHARAT_FIRST": "merr shkronjen e pare", - "TEXT_CHARAT_LAST": "merr shkronjen e fundit", - "TEXT_CHARAT_RANDOM": "merr nje shkronje te rastesishme", - "TEXT_CHARAT_TOOLTIP": "Kthe nje shkronje nga nje pozicion i caktuar.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Pergjigjet me nje pjese te caktuar teksti.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ne tekst", - "TEXT_GET_SUBSTRING_START_FROM_START": "Merr nenvargun nga shkronja #", - "TEXT_GET_SUBSTRING_START_FROM_END": "merr nenvargun nga shkronja # nga fundi", - "TEXT_GET_SUBSTRING_START_FIRST": "merr vlerat qe vazhdojne me shkronjen e pare", - "TEXT_GET_SUBSTRING_END_FROM_START": "ne shkronjen #", - "TEXT_GET_SUBSTRING_END_FROM_END": "ne shkronjen # nga fundi", - "TEXT_GET_SUBSTRING_END_LAST": "tek shkronja e fundit", - "TEXT_CHANGECASE_TOOLTIP": "Kthe nje kopje te tekstit ne nje rast te ndryshem.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "me shkronja te medha shtypi", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "me shkronja te vogla shtypi", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Fillimi me shkronje te madhe shtypi", - "TEXT_TRIM_TOOLTIP": "Pergjigju me nje kopje te tekstit me hapesira te fshira nga njera ane ose te dyja anet.", - "TEXT_TRIM_OPERATOR_BOTH": "prit hapesirat nga te dyja anet", - "TEXT_TRIM_OPERATOR_LEFT": "prit hapesirat nga ana e majte", - "TEXT_TRIM_OPERATOR_RIGHT": "prit hapesirat nga ana e djathte", - "TEXT_PRINT_TITLE": "printo %1", - "TEXT_PRINT_TOOLTIP": "Printo tekstin e caktuar, numer ose vlere tjeter.", - "TEXT_PROMPT_TYPE_TEXT": "kerko tekst me njoftim", - "TEXT_PROMPT_TYPE_NUMBER": "kerko nje numer me njoftim", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Kerkoji perdoruesit nje numer.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Kerkoji perdoruesit ca tekst.", - "TEXT_COUNT_MESSAGE0": "numro %1 në %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Numrin sa herë paraqitet një tekst brenda një teksti tjetër.", - "TEXT_REPLACE_MESSAGE0": "zëvendëso %1 me %2 në %3", - "TEXT_REPLACE_TOOLTIP": "Zëvendëso të gjitha paraqitjet e një teksti brenda një teksti tjetër.", - "TEXT_REVERSE_MESSAGE0": "kthe %1", - "TEXT_REVERSE_TOOLTIP": "Kthen renditjen e karaktereve në tekst.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "krijo një listë të zbrazët", - "LISTS_CREATE_EMPTY_TOOLTIP": "Kthen një listë, te gjatësisë 0, duke mos përmbajtur asnjë regjistrim të të dhënave", - "LISTS_CREATE_WITH_TOOLTIP": "Krijo një listë me ndonjë numbër të sendeve.", - "LISTS_CREATE_WITH_INPUT_WITH": "krijo listë me", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listë", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok të listës.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Shto një send në listë.", - "LISTS_REPEAT_TOOLTIP": "Krijon në listë qe përmban vlerën e dhënë të përsëritur aq herë sa numri i specifikuar.", - "LISTS_REPEAT_TITLE": "krijo listën me sendin %1 të përsëritur %2 herë", - "LISTS_LENGTH_TITLE": "gjatësia e %1", - "LISTS_LENGTH_TOOLTIP": "Kthen gjatësinë e listës.", - "LISTS_ISEMPTY_TITLE": "%1 është e zbraztë", - "LISTS_ISEMPTY_TOOLTIP": "Kthehet i saktë nëse lista është e zbraztë.", - "LISTS_INLIST": "në listë", - "LISTS_INDEX_OF_FIRST": "gjen ndodhjen e parë të sendit", - "LISTS_INDEX_OF_LAST": "gjen ndodhjen e fundit të sendit", - "LISTS_INDEX_OF_TOOLTIP": "Kthen indeksin e ndodhjes së parë/fudit të sendit në listë. Kthen %1 nëse teksti nuk është gjetur.", - "LISTS_GET_INDEX_GET": "merr", - "LISTS_GET_INDEX_GET_REMOVE": "merr dhe fshij", - "LISTS_GET_INDEX_REMOVE": "largo", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# nga fundi", - "LISTS_GET_INDEX_FIRST": "i parë", - "LISTS_GET_INDEX_LAST": "i fundit", - "LISTS_GET_INDEX_RANDOM": "i rastësishëm", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 është sendi i parë.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 është sendi i fundit.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Kthen një send në pozicionin e specifikuar në listë.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Rikthen tek artikulli i par në list.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Kthen artikullin e fundit në list.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Kthen një send të rastësishëm në listë.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fshin dhe kthen sendin në pozicionin e specifikuar në listë.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fshin dhe kthen sendin e parë në listë.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fshin dhe kthen sendin e fundit në listë.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fshin dhe kthen një send të rastësishëm në listë.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fshin sendin në pozicionin e specifikuar në listë.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fshin sendin e parë në listë.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fshin sendin e fundit në listë.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Kthen një send të rastësishëm në listë.", - "LISTS_SET_INDEX_SET": "vendos", - "LISTS_SET_INDEX_INSERT": "fut në", - "LISTS_SET_INDEX_INPUT_TO": "sikurse", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Vendos sendin në pozicionin e specifikuar në listë.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Vendos sendin e parë në listë.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Vendos sendin e fundit në listë.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Vendos një send të rastësishëm në listë.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Fut sendin në pozicionin e specifikuar të listës.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Fut sendin në fillim të listës.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Bashkangjit sendin në fund të listës.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Fut sendin rastësisht në listë.", - "LISTS_GET_SUBLIST_START_FROM_START": "merr nën-listën nga #", - "LISTS_GET_SUBLIST_START_FROM_END": "merr nën listën nga # nga fundi", - "LISTS_GET_SUBLIST_START_FIRST": "merr nën-listën nga i pari", - "LISTS_GET_SUBLIST_END_FROM_START": "tek #", - "LISTS_GET_SUBLIST_END_FROM_END": "tek # nga fundi", - "LISTS_GET_SUBLIST_END_LAST": "tek i fundit", - "LISTS_GET_SUBLIST_TOOLTIP": "Krijon në kopje të pjesës së specifikuar të listës.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "rendit %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Rendit një kopje të listës.", - "LISTS_SORT_ORDER_ASCENDING": "ngjitje", - "LISTS_SORT_ORDER_DESCENDING": "zbritje", - "LISTS_SORT_TYPE_NUMERIC": "numerike", - "LISTS_SORT_TYPE_TEXT": "alfabetike", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetike, injoro madhësinë e shkronjave", - "LISTS_SPLIT_LIST_FROM_TEXT": "bëj listë nga teksti", - "LISTS_SPLIT_TEXT_FROM_LIST": "bëj tekst nga lista", - "LISTS_SPLIT_WITH_DELIMITER": "me ndarës", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Ndaj tekstin në një listë tekstesh, duke ndarë në secilin ndarës.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Ngjit një listë tekstesh në një, të ndara me ndarës.", - "LISTS_REVERSE_MESSAGE0": "kthe %1", - "LISTS_REVERSE_TOOLTIP": "Ndërro renditjen e një kopjeje të listës.", - "VARIABLES_GET_TOOLTIP": "Pergjigjet me nje vlere te kesaj variable.", - "VARIABLES_GET_CREATE_SET": "Krijo 'vendos %1", - "VARIABLES_SET": "vendos %1 ne %2", - "VARIABLES_SET_TOOLTIP": "Vendos kete variable te jete e barabarte me te dhenat ne hyrje.", - "VARIABLES_SET_CREATE_GET": "Krijo 'merr %1", - "PROCEDURES_DEFNORETURN_HELPURL": "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "te", - "PROCEDURES_DEFNORETURN_PROCEDURE": "bëj diqka", - "PROCEDURES_BEFORE_PARAMS": "me:", - "PROCEDURES_CALL_BEFORE_PARAMS": "me:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Krijon një funksion pa dalje.", - "PROCEDURES_DEFNORETURN_COMMENT": "Përshkruaj këtë funksion...", - "PROCEDURES_DEFRETURN_HELPURL": "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFRETURN_RETURN": "rikthe", - "PROCEDURES_DEFRETURN_TOOLTIP": "Krijon një funksion me një dalje.", - "PROCEDURES_ALLOW_STATEMENTS": "lejo deklaratat", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Paralajmërim: Ky funksion ka parametra të dyfishuar.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Lësho funksionin e definuar nga përdoruesi '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Lëho funksionin e definuar nga përdoruesi '%1' dhe përdor daljen e tij.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "Informacioni i futur", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Shto, hiq, ose rirendit inputet e këtij funksioni.", - "PROCEDURES_MUTATORARG_TITLE": "Fut emrin:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Shto një input në këtë funksion.", - "PROCEDURES_HIGHLIGHT_DEF": "Thekso definicionin e funksionit", - "PROCEDURES_CREATE_DO": "Krijo '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Nëse një vlerë është e saktë, atëherë kthe një vlerë të dytë.", - "PROCEDURES_IFRETURN_WARNING": "Paralajmërim: Ky bllok mund të përdoret vetëm brenda definicionit të funksionit.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Thuaj dicka...", - "WORKSPACE_ARIA_LABEL": "Hapësira e punës e Blockly", - "COLLAPSED_WARNINGS_WARNING": "Blloqet e shembura përmbajnë paralajmërime.", - "DIALOG_OK": "Në rregull", - "DIALOG_CANCEL": "Anulo" -} +{ + "@metadata": { + "authors": [ + "Arianit", + "Eraldkerciku", + "Liridon", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "send", + "UNNAMED_KEY": "pa emër", + "TODAY": "Sot", + "DUPLICATE_BLOCK": "Kopjo", + "ADD_COMMENT": "Vendos nje Koment", + "REMOVE_COMMENT": "Fshij komentin", + "DUPLICATE_COMMENT": "Koment Dublikatë", + "EXTERNAL_INPUTS": "Hyrjet e jashtme", + "INLINE_INPUTS": "Hyrjet e brendshme", + "DELETE_BLOCK": "Fshij bllokun", + "DELETE_X_BLOCKS": "Fshij %1 blloqe", + "DELETE_ALL_BLOCKS": "Fshijë të gjitha %1 të blloqeve?", + "CLEAN_UP": "Pastro blloqet", + "COLLAPSE_BLOCK": "Mbyll bllokun", + "COLLAPSE_ALL": "Mbyll blloqet", + "EXPAND_BLOCK": "Zmadho bllokun", + "EXPAND_ALL": "Zmadho blloqet", + "DISABLE_BLOCK": "Çaktivizo bllokun", + "ENABLE_BLOCK": "Aktivizo bllokun", + "HELP": "Ndihmë", + "UNDO": "Zhbëj", + "REDO": "Ribëj", + "CHANGE_VALUE_TITLE": "Ndrysho Vlerat:", + "RENAME_VARIABLE": "Ndrysho emrin variables...", + "RENAME_VARIABLE_TITLE": "Ndrysho emrin e te gjitha '%1' variablave ne :", + "NEW_VARIABLE": "Krijo variabël...", + "NEW_STRING_VARIABLE": "Krijo variabël varg", + "NEW_NUMBER_VARIABLE": "Krijo variabël numër", + "NEW_COLOUR_VARIABLE": "Krijo variabël ngjyrë...", + "NEW_VARIABLE_TYPE_TITLE": "Tip i ri i variablës:", + "NEW_VARIABLE_TITLE": "Emri i identifikatorit të ri:", + "VARIABLE_ALREADY_EXISTS": "Një variabël e quajtur '%1' tashmë ekziston.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Një variabël me emrin '%1' veç ekziston për një tip tjetër: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Fshi përdorimin %1 të variablës '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Nuk mund të fshihet variabla '%1' sepse është pjesë e definicionit të funksionit '%2'", + "DELETE_VARIABLE": "Fshi variablën '%1'", + "COLOUR_PICKER_HELPURL": "http://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Zgjidh nje ngjyre nga nje game ngjyrash.", + "COLOUR_RANDOM_TITLE": "ngjyre e rastesishme", + "COLOUR_RANDOM_TOOLTIP": "Zgjidhni një ngjyrë në mënyrë të rastësishme.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "ngjyre me", + "COLOUR_RGB_RED": "e kuqe", + "COLOUR_RGB_GREEN": "jeshile", + "COLOUR_RGB_BLUE": "blu", + "COLOUR_RGB_TOOLTIP": "Krijo një ngjyrë me shumën e specifikuar te te kuqes, te gjelbëres, dhe bluse. Te gjitha vlerat duhet te jene mes 0 dhe 100.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "Përzierje", + "COLOUR_BLEND_COLOUR1": "Ngjyra 1", + "COLOUR_BLEND_COLOUR2": "Ngjyra 2", + "COLOUR_BLEND_RATIO": "Perpjesetim", + "COLOUR_BLEND_TOOLTIP": "Perzien dy ngjyra së bashku me një raport të dhënë (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "http://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "përsërit %1 herë", + "CONTROLS_REPEAT_INPUT_DO": "ekzekuto", + "CONTROLS_REPEAT_TOOLTIP": "Ekzekuto disa fjali disa herë.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "përsërit përderisa", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "përsërit derisa", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Përderisa një vlerë është e saktë, atëherë ekzekuto disa fjali.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Përderisa një vlerë është e pasaktë, atëherë ekzekuto disa fjali.", + "CONTROLS_FOR_TOOLTIP": "Bëje identifikuesin \"%1\" që ta ketë vlerat prej numrit të fillimit deri tek numri i fundit, duke numëruar nga intervali i specifikuar, dhe ti bëj blloqet e specifikuara.", + "CONTROLS_FOR_TITLE": "numero me %1 nga %2 ne %3 me nga %4", + "CONTROLS_FOREACH_TITLE": "per cdo produkt %1 ne liste %2", + "CONTROLS_FOREACH_TOOLTIP": "Per cdo produkt ne nje \"liste\" \"vendos\" ndryshoren '%1' produktit, dhe pastaj bej disa deklarata.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "dil nga nje faze perseritese", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "vazhdo me elementin tjeter te nje faze perseritese", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ndahu nga unaza.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Kapërce pjesën e mbetur të unazës, dhe vazhdo me ripërsëritjen tjetër.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Paralajmërim: Ky bllok mund të përdoret vetëm brenda unazës.", + "CONTROLS_IF_TOOLTIP_1": "Nëse një vlerë është e saktë, atëherë ekzekuto disa fjali.", + "CONTROLS_IF_TOOLTIP_2": "Nëse një vlerë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, ekzekuto bllokun e dytë të fjalive.", + "CONTROLS_IF_TOOLTIP_3": "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive.", + "CONTROLS_IF_TOOLTIP_4": "Nëse vlera e parë është e saktë, atëherë ekzekuto bllokun e parë të fjalive. Përndryshe, nëse vlera e dytë është e saktë, ekzekuto bllokun e dytë të fjalive. Nëse asnjëra nga vlerat nuk është e saktë, ekzekuto bllokun e fundit të fjalive.", + "CONTROLS_IF_MSG_IF": "nëse", + "CONTROLS_IF_MSG_ELSEIF": "përndryshe nëse", + "CONTROLS_IF_MSG_ELSE": "përndryshe", + "CONTROLS_IF_IF_TOOLTIP": "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këte bllok nëse.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "\"Vendos\" \"kushtein\"tek \"pjesa\" \"if\"", + "CONTROLS_IF_ELSE_TOOLTIP": "Shto një përfundues, që i mbërrin të gjitha kushtet në bllokun nëse.", + "LOGIC_COMPARE_HELPURL": "http://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Ktheje të saktë nëse të dy hyrjet janë të barabarta me njëra-tjetrën.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Ktheje të saktë nëse të dy hyrjet nuk janë të barabarta me njëra-tjetrën.", + "LOGIC_COMPARE_TOOLTIP_LT": "Ktheje të saktë nëse hyrja e parë është më e vogël se hyrja e dytë.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Ktheje të saktë nëse hyrja e parë është më e vogël ose e barabartë me hyrjen e dytë.", + "LOGIC_COMPARE_TOOLTIP_GT": "Ktheje të saktë nëse hyrja e parë është më e madhe se hyrja e dytë.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Ktheje të saktë nëse hyrja e parë është më e madhe ose e barabartë me hyrjen e dytë.", + "LOGIC_OPERATION_TOOLTIP_AND": "Kthehet të saktë nëse të dy hyrjet janë të sakta.", + "LOGIC_OPERATION_AND": "dhe", + "LOGIC_OPERATION_TOOLTIP_OR": "Kthehet e saktë nëse së paku njëra nga hyrjet është e saktë.", + "LOGIC_OPERATION_OR": "ose", + "LOGIC_NEGATE_TITLE": "jo %1", + "LOGIC_NEGATE_TOOLTIP": "Kthehet e saktë nëse hyrja është e pasaktë. Kthehet e pasaktë nëse hyrja është e saktë.", + "LOGIC_BOOLEAN_TRUE": "e saktë", + "LOGIC_BOOLEAN_FALSE": "e pasaktë", + "LOGIC_BOOLEAN_TOOLTIP": "Kthehet ose të saktë ose të pasaktë.", + "LOGIC_NULL_HELPURL": "http://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "pavlerë", + "LOGIC_NULL_TOOLTIP": "Kthehet e pavlerë.", + "LOGIC_TERNARY_HELPURL": "http://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "nëse e saktë", + "LOGIC_TERNARY_IF_FALSE": "nëse e pasaktë", + "LOGIC_TERNARY_TOOLTIP": "Kontrollo kushtin në 'test'. Nëse kushti është i saktë, kthen vlerën 'nëse e saktë'; përndryshe kthen vlerën 'nëse e pasaktë'.", + "MATH_NUMBER_HELPURL": "http://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Një numër.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "x", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asinus", + "MATH_TRIG_ACOS": "acosinus", + "MATH_TRIG_ATAN": "atangjentë", + "MATH_ARITHMETIC_HELPURL": "http://sq.wikipedia.org/wiki/Aritmetika", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Kthen shumën e dy numrave.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Kthen ndryshimin e dy numrave.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Kthen produktin e dy numrave.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Kthen herësin e dy numrave.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Kthen numrin e parë të ngritur në fuqinë e numrit të dytë.", + "MATH_SINGLE_HELPURL": "http://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "rrënja katrore", + "MATH_SINGLE_TOOLTIP_ROOT": "Kthen rrënjën katrore të një numri.", + "MATH_SINGLE_OP_ABSOLUTE": "absolut", + "MATH_SINGLE_TOOLTIP_ABS": "Kthen vlerën absolute të një numri.", + "MATH_SINGLE_TOOLTIP_NEG": "Kthe negacionin e një numri.", + "MATH_SINGLE_TOOLTIP_LN": "Kthen logaritmën natyrale të një numri.", + "MATH_SINGLE_TOOLTIP_LOG10": "Kthen 10 logaritmet bazë të një numri.", + "MATH_SINGLE_TOOLTIP_EXP": "Kthen e në fuqinë e një numri.", + "MATH_SINGLE_TOOLTIP_POW10": "Kthen 10 në fuqinë e një numri.", + "MATH_TRIG_HELPURL": "http://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Kthe kosinusin e nje kendi (jo ne radiant).", + "MATH_TRIG_TOOLTIP_COS": "Kthe kosinusin e nje grade (jo ne radiant).", + "MATH_TRIG_TOOLTIP_TAN": "Kthe tangentin e nje kendi (jo radiant).", + "MATH_TRIG_TOOLTIP_ASIN": "Rikthe sin-1 e nje numeri.", + "MATH_TRIG_TOOLTIP_ACOS": "Rikthe cos-1 e nje numeri.", + "MATH_TRIG_TOOLTIP_ATAN": "Kthe tg-1 e nje numeri.", + "MATH_CONSTANT_HELPURL": "http://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Kthen një nga konstantet e përbashkëta: : π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infiniti).", + "MATH_IS_EVEN": "është çift", + "MATH_IS_ODD": "është tek", + "MATH_IS_PRIME": "është prim", + "MATH_IS_WHOLE": "është i plotë", + "MATH_IS_POSITIVE": "është pozitiv", + "MATH_IS_NEGATIVE": "është negativ", + "MATH_IS_DIVISIBLE_BY": "është i pjestueshme me", + "MATH_IS_TOOLTIP": "Kontrollo nëse një numër është çift, tek, prim, i plotë, pozitiv, negativ, ose nëse është i pjestueshëm me një numër të caktuar. Kthehet e saktë ose e pasaktë.", + "MATH_CHANGE_HELPURL": "http://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "ndrysho %1 nga %2", + "MATH_CHANGE_TOOLTIP": "Shto një numër në ndryshoren '%1'.", + "MATH_ROUND_HELPURL": "http://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Rrumbullakësimi i numrit të lartë ose të ulët.", + "MATH_ROUND_OPERATOR_ROUND": "rrumbullakësimi", + "MATH_ROUND_OPERATOR_ROUNDUP": "rrumbullakësimi i lartë", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "rrumbullakësimi i ulët", + "MATH_ONLIST_OPERATOR_SUM": "mbledhja e listës", + "MATH_ONLIST_TOOLTIP_SUM": "Kthe shumën e të gjithë numrave të listës.", + "MATH_ONLIST_OPERATOR_MIN": "numri më i ulët i listës", + "MATH_ONLIST_TOOLTIP_MIN": "Kthe numrin me të vogël të listës.", + "MATH_ONLIST_OPERATOR_MAX": "numri më i madh i listës", + "MATH_ONLIST_TOOLTIP_MAX": "Kthe numrin më të madh të listës.", + "MATH_ONLIST_OPERATOR_AVERAGE": "mesatarja e listës", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Kthen mesatarën (kuptimi aritmetik) i vlerave numerike të listës.", + "MATH_ONLIST_OPERATOR_MEDIAN": "mediana e listës", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Kthe numrin median të listës.", + "MATH_ONLIST_OPERATOR_MODE": "modat e listës", + "MATH_ONLIST_TOOLTIP_MODE": "Kthe listën e sendit(eve) më të zakonshme të listës.", + "MATH_ONLIST_OPERATOR_STD_DEV": "devijimi standard i listës", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Kthe devijimin standard të listës.", + "MATH_ONLIST_OPERATOR_RANDOM": "send i rastësishëm i listës", + "MATH_ONLIST_TOOLTIP_RANDOM": "Kthe një element të rastësishëm nga lista.", + "MATH_MODULO_HELPURL": "http://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "mbetësi i %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Kthen mbetësin nga pjestimi i dy numrave.", + "MATH_CONSTRAIN_TITLE": "detyro %1 e ulët %2 e lartë %3", + "MATH_CONSTRAIN_TOOLTIP": "Vëni një numër që të jetë në mes të kufive të specifikuara(përfshirëse).", + "MATH_RANDOM_INT_HELPURL": "http://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "numër i plotë i rastësishëm nga %1 deri në %2", + "MATH_RANDOM_INT_TOOLTIP": "Kthe një numër të plotë të rastësishëm të dy kufijve të specifikuar, të përfshirë.", + "MATH_RANDOM_FLOAT_HELPURL": "http://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fraksioni i rastësishëm", + "MATH_RANDOM_FLOAT_TOOLTIP": "Kthe fraksionin e rastësishëm në mes të 0.0 (përfshirëse) dhe 1.0 (jopërfshirëse).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 of X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Ktheni arkangjentin e pikës (X, Y) në gradë nga -180 në 180.", + "TEXT_TEXT_HELPURL": "http://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Nje shkronje, fjale, ose rresht teksti.", + "TEXT_JOIN_TITLE_CREATEWITH": "krijo tekst me", + "TEXT_JOIN_TOOLTIP": "Krijo nje pjese te tekstit duke bashkuar se bashku disa sende", + "TEXT_CREATE_JOIN_TITLE_JOIN": "bashkangjit", + "TEXT_CREATE_JOIN_TOOLTIP": "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok teksti.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Shto nje gje ne tekst", + "TEXT_APPEND_TITLE": "ne %1 shto tekst %2", + "TEXT_APPEND_TOOLTIP": "shto tekst tek varibla '%1'.", + "TEXT_LENGTH_TITLE": "gjatesi %1", + "TEXT_LENGTH_TOOLTIP": "Pergjigjet me nje numer shkronjash (duke perfshire hapesire) ne tekstin e dhene.", + "TEXT_ISEMPTY_TITLE": "%1 eshte bosh", + "TEXT_ISEMPTY_TOOLTIP": "Kthehet e vertete neqoftese teksti i dhene eshte bosh.", + "TEXT_INDEXOF_TOOLTIP": "Pergjigjet me indeksin e pare/fundit te rastisjes se tekstit te pare ne tekstin e dyte. Pergjigjet me %1 ne qofte se teksti nuk u gjet.", + "TEXT_INDEXOF_TITLE": "ne tekst %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "gjej rastisjen e pare te tekstit", + "TEXT_INDEXOF_OPERATOR_LAST": "gjej rastisjen e fundit te tekstit", + "TEXT_CHARAT_TITLE": "në tekst %1 %2", + "TEXT_CHARAT_FROM_START": "merr shkronjen #", + "TEXT_CHARAT_FROM_END": "merr shkronjen # nga fundi", + "TEXT_CHARAT_FIRST": "merr shkronjen e pare", + "TEXT_CHARAT_LAST": "merr shkronjen e fundit", + "TEXT_CHARAT_RANDOM": "merr nje shkronje te rastesishme", + "TEXT_CHARAT_TOOLTIP": "Kthe nje shkronje nga nje pozicion i caktuar.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Pergjigjet me nje pjese te caktuar teksti.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ne tekst", + "TEXT_GET_SUBSTRING_START_FROM_START": "Merr nenvargun nga shkronja #", + "TEXT_GET_SUBSTRING_START_FROM_END": "merr nenvargun nga shkronja # nga fundi", + "TEXT_GET_SUBSTRING_START_FIRST": "merr vlerat qe vazhdojne me shkronjen e pare", + "TEXT_GET_SUBSTRING_END_FROM_START": "ne shkronjen #", + "TEXT_GET_SUBSTRING_END_FROM_END": "ne shkronjen # nga fundi", + "TEXT_GET_SUBSTRING_END_LAST": "tek shkronja e fundit", + "TEXT_CHANGECASE_TOOLTIP": "Kthe nje kopje te tekstit ne nje rast te ndryshem.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "me shkronja te medha shtypi", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "me shkronja te vogla shtypi", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Fillimi me shkronje te madhe shtypi", + "TEXT_TRIM_TOOLTIP": "Pergjigju me nje kopje te tekstit me hapesira te fshira nga njera ane ose te dyja anet.", + "TEXT_TRIM_OPERATOR_BOTH": "prit hapesirat nga te dyja anet", + "TEXT_TRIM_OPERATOR_LEFT": "prit hapesirat nga ana e majte", + "TEXT_TRIM_OPERATOR_RIGHT": "prit hapesirat nga ana e djathte", + "TEXT_PRINT_TITLE": "printo %1", + "TEXT_PRINT_TOOLTIP": "Printo tekstin e caktuar, numer ose vlere tjeter.", + "TEXT_PROMPT_TYPE_TEXT": "kerko tekst me njoftim", + "TEXT_PROMPT_TYPE_NUMBER": "kerko nje numer me njoftim", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Kerkoji perdoruesit nje numer.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Kerkoji perdoruesit ca tekst.", + "TEXT_COUNT_MESSAGE0": "numro %1 në %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Numrin sa herë paraqitet një tekst brenda një teksti tjetër.", + "TEXT_REPLACE_MESSAGE0": "zëvendëso %1 me %2 në %3", + "TEXT_REPLACE_TOOLTIP": "Zëvendëso të gjitha paraqitjet e një teksti brenda një teksti tjetër.", + "TEXT_REVERSE_MESSAGE0": "kthe %1", + "TEXT_REVERSE_TOOLTIP": "Kthen renditjen e karaktereve në tekst.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "krijo një listë të zbrazët", + "LISTS_CREATE_EMPTY_TOOLTIP": "Kthen një listë, te gjatësisë 0, duke mos përmbajtur asnjë regjistrim të të dhënave", + "LISTS_CREATE_WITH_TOOLTIP": "Krijo një listë me ndonjë numbër të sendeve.", + "LISTS_CREATE_WITH_INPUT_WITH": "krijo listë me", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "listë", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Shto, fshij, ose rirregullo sektoret për ta rikonfiguruar këtë bllok të listës.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Shto një send në listë.", + "LISTS_REPEAT_TOOLTIP": "Krijon në listë qe përmban vlerën e dhënë të përsëritur aq herë sa numri i specifikuar.", + "LISTS_REPEAT_TITLE": "krijo listën me sendin %1 të përsëritur %2 herë", + "LISTS_LENGTH_TITLE": "gjatësia e %1", + "LISTS_LENGTH_TOOLTIP": "Kthen gjatësinë e listës.", + "LISTS_ISEMPTY_TITLE": "%1 është e zbraztë", + "LISTS_ISEMPTY_TOOLTIP": "Kthehet i saktë nëse lista është e zbraztë.", + "LISTS_INLIST": "në listë", + "LISTS_INDEX_OF_FIRST": "gjen ndodhjen e parë të sendit", + "LISTS_INDEX_OF_LAST": "gjen ndodhjen e fundit të sendit", + "LISTS_INDEX_OF_TOOLTIP": "Kthen indeksin e ndodhjes së parë/fudit të sendit në listë. Kthen %1 nëse teksti nuk është gjetur.", + "LISTS_GET_INDEX_GET": "merr", + "LISTS_GET_INDEX_GET_REMOVE": "merr dhe fshij", + "LISTS_GET_INDEX_REMOVE": "largo", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# nga fundi", + "LISTS_GET_INDEX_FIRST": "i parë", + "LISTS_GET_INDEX_LAST": "i fundit", + "LISTS_GET_INDEX_RANDOM": "i rastësishëm", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 është sendi i parë.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 është sendi i fundit.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Kthen një send në pozicionin e specifikuar në listë.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Rikthen tek artikulli i par në list.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Kthen artikullin e fundit në list.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Kthen një send të rastësishëm në listë.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Fshin dhe kthen sendin në pozicionin e specifikuar në listë.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Fshin dhe kthen sendin e parë në listë.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Fshin dhe kthen sendin e fundit në listë.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Fshin dhe kthen një send të rastësishëm në listë.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Fshin sendin në pozicionin e specifikuar në listë.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Fshin sendin e parë në listë.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Fshin sendin e fundit në listë.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Kthen një send të rastësishëm në listë.", + "LISTS_SET_INDEX_SET": "vendos", + "LISTS_SET_INDEX_INSERT": "fut në", + "LISTS_SET_INDEX_INPUT_TO": "sikurse", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Vendos sendin në pozicionin e specifikuar në listë.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Vendos sendin e parë në listë.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Vendos sendin e fundit në listë.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Vendos një send të rastësishëm në listë.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Fut sendin në pozicionin e specifikuar të listës.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Fut sendin në fillim të listës.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Bashkangjit sendin në fund të listës.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Fut sendin rastësisht në listë.", + "LISTS_GET_SUBLIST_START_FROM_START": "merr nën-listën nga #", + "LISTS_GET_SUBLIST_START_FROM_END": "merr nën listën nga # nga fundi", + "LISTS_GET_SUBLIST_START_FIRST": "merr nën-listën nga i pari", + "LISTS_GET_SUBLIST_END_FROM_START": "tek #", + "LISTS_GET_SUBLIST_END_FROM_END": "tek # nga fundi", + "LISTS_GET_SUBLIST_END_LAST": "tek i fundit", + "LISTS_GET_SUBLIST_TOOLTIP": "Krijon në kopje të pjesës së specifikuar të listës.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "rendit %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Rendit një kopje të listës.", + "LISTS_SORT_ORDER_ASCENDING": "ngjitje", + "LISTS_SORT_ORDER_DESCENDING": "zbritje", + "LISTS_SORT_TYPE_NUMERIC": "numerike", + "LISTS_SORT_TYPE_TEXT": "alfabetike", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetike, injoro madhësinë e shkronjave", + "LISTS_SPLIT_LIST_FROM_TEXT": "bëj listë nga teksti", + "LISTS_SPLIT_TEXT_FROM_LIST": "bëj tekst nga lista", + "LISTS_SPLIT_WITH_DELIMITER": "me ndarës", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Ndaj tekstin në një listë tekstesh, duke ndarë në secilin ndarës.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Ngjit një listë tekstesh në një, të ndara me ndarës.", + "LISTS_REVERSE_MESSAGE0": "kthe %1", + "LISTS_REVERSE_TOOLTIP": "Ndërro renditjen e një kopjeje të listës.", + "VARIABLES_GET_TOOLTIP": "Pergjigjet me nje vlere te kesaj variable.", + "VARIABLES_GET_CREATE_SET": "Krijo 'vendos %1", + "VARIABLES_SET": "vendos %1 ne %2", + "VARIABLES_SET_TOOLTIP": "Vendos kete variable te jete e barabarte me te dhenat ne hyrje.", + "VARIABLES_SET_CREATE_GET": "Krijo 'merr %1", + "PROCEDURES_DEFNORETURN_HELPURL": "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "te", + "PROCEDURES_DEFNORETURN_PROCEDURE": "bëj diqka", + "PROCEDURES_BEFORE_PARAMS": "me:", + "PROCEDURES_CALL_BEFORE_PARAMS": "me:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Krijon një funksion pa dalje.", + "PROCEDURES_DEFNORETURN_COMMENT": "Përshkruaj këtë funksion...", + "PROCEDURES_DEFRETURN_HELPURL": "http://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFRETURN_RETURN": "rikthe", + "PROCEDURES_DEFRETURN_TOOLTIP": "Krijon një funksion me një dalje.", + "PROCEDURES_ALLOW_STATEMENTS": "lejo deklaratat", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Paralajmërim: Ky funksion ka parametra të dyfishuar.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Lësho funksionin e definuar nga përdoruesi '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Lëho funksionin e definuar nga përdoruesi '%1' dhe përdor daljen e tij.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "Informacioni i futur", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Shto, hiq, ose rirendit inputet e këtij funksioni.", + "PROCEDURES_MUTATORARG_TITLE": "Fut emrin:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Shto një input në këtë funksion.", + "PROCEDURES_HIGHLIGHT_DEF": "Thekso definicionin e funksionit", + "PROCEDURES_CREATE_DO": "Krijo '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Nëse një vlerë është e saktë, atëherë kthe një vlerë të dytë.", + "PROCEDURES_IFRETURN_WARNING": "Paralajmërim: Ky bllok mund të përdoret vetëm brenda definicionit të funksionit.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Thuaj dicka...", + "WORKSPACE_ARIA_LABEL": "Hapësira e punës e Blockly", + "COLLAPSED_WARNINGS_WARNING": "Blloqet e shembura përmbajnë paralajmërime.", + "DIALOG_OK": "Në rregull", + "DIALOG_CANCEL": "Anulo" +} diff --git a/msg/json/sr-latn.json b/msg/json/sr-latn.json index 4dbffcc8de0..40cf1d351cf 100644 --- a/msg/json/sr-latn.json +++ b/msg/json/sr-latn.json @@ -1,346 +1,346 @@ -{ - "@metadata": { - "authors": [ - "Kizule", - "Zoranzoki21" - ] - }, - "VARIABLES_DEFAULT_NAME": "stavka", - "TODAY": "Danas", - "DUPLICATE_BLOCK": "Dupliraj", - "ADD_COMMENT": "Dodaj komentar", - "REMOVE_COMMENT": "Ukloni komentar", - "EXTERNAL_INPUTS": "Spoljni ulazi", - "INLINE_INPUTS": "Unutrašnji ulazi", - "DELETE_BLOCK": "Obriši blok", - "DELETE_X_BLOCKS": "Obriši %1 blokova", - "DELETE_ALL_BLOCKS": "Da obrišem svih %1 blokova?", - "CLEAN_UP": "Ukloni blokove", - "COLLAPSE_BLOCK": "Skupi blok", - "COLLAPSE_ALL": "Skupi blokove", - "EXPAND_BLOCK": "Proširi blok", - "EXPAND_ALL": "Proširi blokove", - "DISABLE_BLOCK": "Onemogući blok", - "ENABLE_BLOCK": "Omogući blok", - "HELP": "Pomoć", - "UNDO": "Opozovi", - "REDO": "Ponovi", - "CHANGE_VALUE_TITLE": "Promeni vrednost:", - "RENAME_VARIABLE": "Preimenuj promenljivu…", - "RENAME_VARIABLE_TITLE": "Preimenuj sve „%1“ promenljive u:", - "NEW_VARIABLE": "Napravi promenljivu…", - "NEW_VARIABLE_TITLE": "Ime nove promenljive:", - "VARIABLE_ALREADY_EXISTS": "Promenljiva pod imenom '%1' već postoji.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Varijabla po imenu '%1' već postoji za drugu varijablu tipa '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Da obrišem %1 upotreba promenljive '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne mogu da obrišem varijablu ’%1’ jer je deo definicije funkcije ’%2’", - "DELETE_VARIABLE": "Obriši promenljivu '%1'", - "COLOUR_PICKER_HELPURL": "https://sr.wikipedia.org/wiki/Boja", - "COLOUR_PICKER_TOOLTIP": "Izaberite boju sa palete.", - "COLOUR_RANDOM_TITLE": "slučajna boja", - "COLOUR_RANDOM_TOOLTIP": "Izaberite boju nasumice.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "boja sa", - "COLOUR_RGB_RED": "crvena", - "COLOUR_RGB_GREEN": "zelena", - "COLOUR_RGB_BLUE": "plava", - "COLOUR_RGB_TOOLTIP": "Kreiraj boju sa određenom količinom crvene,zelene, i plave. Sve vrednosti moraju biti između 0 i 100.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "pomešaj", - "COLOUR_BLEND_COLOUR1": "boja 1", - "COLOUR_BLEND_COLOUR2": "boja 2", - "COLOUR_BLEND_RATIO": "odnos", - "COLOUR_BLEND_TOOLTIP": "Pomešati dve boje zajedno sa datim odnosom (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://sr.wikipedia.org/wiki/For_petlja", - "CONTROLS_REPEAT_TITLE": "ponovi %1 puta", - "CONTROLS_REPEAT_INPUT_DO": "izvrši", - "CONTROLS_REPEAT_TOOLTIP": "Odraditi neke naredbe nekoliko puta.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ponavljati dok", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ponavljati do", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dok je vrednost tačna, onda izvršite neke naredbe.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dok vrednost nije tačna, onda izvršiti neke naredbe.", - "CONTROLS_FOR_TOOLTIP": "Imaj promenjivu \"%1\" uzmi vrednosti od početnog broja do zadnjeg broja, brojeći po određenom intervalu, i izvrši određene blokove.", - "CONTROLS_FOR_TITLE": "prebroj sa %1 od %2 do %3 od %4", - "CONTROLS_FOREACH_TITLE": "za svaku stavku %1 na spisku %2", - "CONTROLS_FOREACH_TOOLTIP": "Za svaku stavku unutar liste, podesi promenjivu '%1' po stavci, i onda načini neke izjave-naredbe.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Izađite iz petlje", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "nastavi sa sledećom iteracijom petlje", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Napusti sadržaj petlje.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Preskoči ostatak ove petlje, i nastavi sa sledećom iteracijom(ponavljanjem).", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozorenje: Ovaj blok može da se upotrebi samo unutar petlje.", - "CONTROLS_IF_TOOLTIP_1": "ako je vrednost tačna, onda izvrši neke naredbe-izjave.", - "CONTROLS_IF_TOOLTIP_2": "ako je vrednost tačna, onda izvrši prvi blok naredbi, U suprotnom, izvrši drugi blok naredbi.", - "CONTROLS_IF_TOOLTIP_3": "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi.", - "CONTROLS_IF_TOOLTIP_4": "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi. Ako ni jedna od vrednosti nije tačna, izvrši poslednji blok naredbi.", - "CONTROLS_IF_MSG_IF": "ako", - "CONTROLS_IF_MSG_ELSEIF": "inače-ako", - "CONTROLS_IF_MSG_ELSE": "inače", - "CONTROLS_IF_IF_TOOLTIP": "Dodaj, ukloni, ili preuredi delove kako bih rekonfigurisali ovaj if blok.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodajte uslov bloku „ako“.", - "CONTROLS_IF_ELSE_TOOLTIP": "Dodaj konačni, catch-all (uhvati sve) uslove if bloka.", - "LOGIC_COMPARE_HELPURL": "https://sr.wikipedia.org/wiki/Nejednakost", - "LOGIC_COMPARE_TOOLTIP_EQ": "Vraća vrednost „tačno“ ako su oba ulaza jednaka.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Vraća vrednost „tačno“ ako su oba ulaza nejednaka.", - "LOGIC_COMPARE_TOOLTIP_LT": "Vraća vrednost „tačno“ ako je prvi ulaz manji od drugog.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Vraća vrednost „tačno“ ako je prvi ulaz manji ili jednak drugom.", - "LOGIC_COMPARE_TOOLTIP_GT": "Vraća vrednost „tačno“ ako je prvi ulaz veći od drugog.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Vraća vrednost „tačno“ ako je prvi ulaz veći ili jednak drugom.", - "LOGIC_OPERATION_TOOLTIP_AND": "Vraća vrednost „tačno“ ako su oba ulaza tačna.", - "LOGIC_OPERATION_AND": "i", - "LOGIC_OPERATION_TOOLTIP_OR": "Vraća vrednost „tačno“ ako je bar jedan od ulaza tačan.", - "LOGIC_OPERATION_OR": "ili", - "LOGIC_NEGATE_TITLE": "nije %1", - "LOGIC_NEGATE_TOOLTIP": "Vraća vrednost „tačno“ ako je ulaz netačan. Vraća vrednost „netačno“ ako je ulaz tačan.", - "LOGIC_BOOLEAN_TRUE": "tačno", - "LOGIC_BOOLEAN_FALSE": "netačno", - "LOGIC_BOOLEAN_TOOLTIP": "Vraća ili tačno ili netačno.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "bez vrednosti", - "LOGIC_NULL_TOOLTIP": "Vraća „bez vrednosti“.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "proba", - "LOGIC_TERNARY_IF_TRUE": "ako je tačno", - "LOGIC_TERNARY_IF_FALSE": "ako je netačno", - "LOGIC_TERNARY_TOOLTIP": "Proveri uslov u 'test'. Ako je uslov tačan, tada vraća 'if true' vrednost; u drugom slučaju vraća 'if false' vrednost.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "Neki broj.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "arc sin", - "MATH_TRIG_ACOS": "arc cos", - "MATH_TRIG_ATAN": "arc tan", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Vratite zbir dva broja.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vraća razliku dva broja.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vraća proizvod dva broja.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vraća količnik dva broja.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Vraća prvi broj stepenovan drugim.", - "MATH_SINGLE_HELPURL": "https://sr.wikipedia.org/wiki/Kvadratni_koren", - "MATH_SINGLE_OP_ROOT": "kvadratni koren", - "MATH_SINGLE_TOOLTIP_ROOT": "Vraća kvadratni koren broja.", - "MATH_SINGLE_OP_ABSOLUTE": "apsolutan", - "MATH_SINGLE_TOOLTIP_ABS": "Vraća apsolutnu vrednost broja.", - "MATH_SINGLE_TOOLTIP_NEG": "Vraća negaciju broja.", - "MATH_SINGLE_TOOLTIP_LN": "Vraća prirodni logaritam broja.", - "MATH_SINGLE_TOOLTIP_LOG10": "Vraća logaritam broja sa osnovom 10.", - "MATH_SINGLE_TOOLTIP_EXP": "vratiti e na vlasti broja.", - "MATH_SINGLE_TOOLTIP_POW10": "Vraća 10-ti stepen broja.", - "MATH_TRIG_HELPURL": "https://sr.wikipedia.org/wiki/Trigonometrijske_funkcije", - "MATH_TRIG_TOOLTIP_SIN": "Vraća sinus stepena (ne radijan).", - "MATH_TRIG_TOOLTIP_COS": "Vraća kosinus stepena (ne radijan).", - "MATH_TRIG_TOOLTIP_TAN": "Vraća tangens stepena (ne radijan).", - "MATH_TRIG_TOOLTIP_ASIN": "Vraća arkus broja.", - "MATH_TRIG_TOOLTIP_ACOS": "Vraća arkus kosinus broja.", - "MATH_TRIG_TOOLTIP_ATAN": "Vraća arkus tangens broja.", - "MATH_CONSTANT_HELPURL": "https://sr.wikipedia.org/wiki/Matematička_konstanta", - "MATH_CONSTANT_TOOLTIP": "vrati jednu od zajedničkih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ili ∞ (infinity).", - "MATH_IS_EVEN": "je paran", - "MATH_IS_ODD": "je neparan", - "MATH_IS_PRIME": "je prost", - "MATH_IS_WHOLE": "je ceo", - "MATH_IS_POSITIVE": "je pozitivan", - "MATH_IS_NEGATIVE": "je negativan", - "MATH_IS_DIVISIBLE_BY": "je deljiv sa", - "MATH_IS_TOOLTIP": "Provjerava da li je broj paran, neparan, prost, cio, pozitivan, negativan, ili da li je deljiv sa određenim brojem. Vraća tačno ili netačno.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "promeni %1 za %2", - "MATH_CHANGE_TOOLTIP": "Dodajte broj promenljivoj „%1“.", - "MATH_ROUND_HELPURL": "https://sr.wikipedia.org/wiki/Zaokruživanje", - "MATH_ROUND_TOOLTIP": "Zaokružite broj na veću ili manju vrednost.", - "MATH_ROUND_OPERATOR_ROUND": "zaokruži", - "MATH_ROUND_OPERATOR_ROUNDUP": "zaokruži naviše", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokruži naniže", - "MATH_ONLIST_OPERATOR_SUM": "zbir spiska", - "MATH_ONLIST_TOOLTIP_SUM": "Vraća zbir svih brojeva sa spiska.", - "MATH_ONLIST_OPERATOR_MIN": "min. spiska", - "MATH_ONLIST_TOOLTIP_MIN": "Vraća najmanji broj sa spiska.", - "MATH_ONLIST_OPERATOR_MAX": "maks. spiska", - "MATH_ONLIST_TOOLTIP_MAX": "Vraća najveći broj sa spiska.", - "MATH_ONLIST_OPERATOR_AVERAGE": "prosek spiska", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Vraća prosek numeričkih vrednosti sa spiska.", - "MATH_ONLIST_OPERATOR_MEDIAN": "medijana spiska", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Vraća medijanu sa spiska.", - "MATH_ONLIST_OPERATOR_MODE": "modus spiska", - "MATH_ONLIST_TOOLTIP_MODE": "Vraća najčešće stavke sa spiska.", - "MATH_ONLIST_OPERATOR_STD_DEV": "standardna devijacija spiska", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Vraća standardnu devijaciju spiska.", - "MATH_ONLIST_OPERATOR_RANDOM": "slučajna stavka spiska", - "MATH_ONLIST_TOOLTIP_RANDOM": "Vraća slučajni element sa spiska.", - "MATH_MODULO_HELPURL": "https://sr.wikipedia.org/wiki/Kongruencija", - "MATH_MODULO_TITLE": "podsetnik od %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Vraća podsetnik od deljenja dva broja.", - "MATH_CONSTRAIN_TITLE": "ograniči %1 nisko %2 visoko %3", - "MATH_CONSTRAIN_TOOLTIP": "Ograničava broj na donje i gornje granice (uključivo).", - "MATH_RANDOM_INT_HELPURL": "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva", - "MATH_RANDOM_INT_TITLE": "sličajno odabrani cijeli broj od %1 do %2", - "MATH_RANDOM_INT_TOOLTIP": "Vraća slučajno odabrani celi broj između dve određene granice, uključivo.", - "MATH_RANDOM_FLOAT_HELPURL": "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "slučajni razlomak", - "MATH_RANDOM_FLOAT_TOOLTIP": "Vraća slučajni razlomak između 0.0 (uključivo) i 1.0 (isključivo).", - "TEXT_TEXT_HELPURL": "https://sr.wikipedia.org/wiki/Niska", - "TEXT_TEXT_TOOLTIP": "Slovo, reč ili red teksta.", - "TEXT_JOIN_TITLE_CREATEWITH": "napiši tekst sa", - "TEXT_JOIN_TOOLTIP": "Napraviti dio teksta spajajući različite stavke.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "spajanjem", - "TEXT_CREATE_JOIN_TOOLTIP": "Dodaj, ukloni, ili drugačije poredaj odjelke kako bi iznova postavili ovaj tekst blok.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Dodajte stavku u tekst.", - "TEXT_APPEND_TITLE": "na %1 dodaj tekst %2", - "TEXT_APPEND_TOOLTIP": "Dodajte tekst na promenljivu „%1“.", - "TEXT_LENGTH_TITLE": "dužina teksta %1", - "TEXT_LENGTH_TOOLTIP": "Vraća broj slova (uključujući razmake) u datom tekstu.", - "TEXT_ISEMPTY_TITLE": "%1 je prazan", - "TEXT_ISEMPTY_TOOLTIP": "Vraća tačno ako je dostavljeni tekst prazan.", - "TEXT_INDEXOF_TOOLTIP": "Vraća odnos prvog/zadnjeg pojavljivanja teksta u drugom tekstu. Vrađa %1 ako tekst nije pronađen.", - "TEXT_INDEXOF_TITLE": "u tekstu %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "pronađi prvo pojavljivanje teksta", - "TEXT_INDEXOF_OPERATOR_LAST": "pronađi poslednje pojavljivanje teksta", - "TEXT_CHARAT_TITLE": "u tekstu %1 %2", - "TEXT_CHARAT_FROM_START": "preuzmi slovo #", - "TEXT_CHARAT_FROM_END": "preuzmi slovo # sa kraja", - "TEXT_CHARAT_FIRST": "preuzmi prvo slovo", - "TEXT_CHARAT_LAST": "preuzmi poslednje slovo", - "TEXT_CHARAT_RANDOM": "preuzmi slučajno slovo", - "TEXT_CHARAT_TOOLTIP": "Vraća slovo na određeni položaj.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Vraća određeni deo teksta.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "u tekstu", - "TEXT_GET_SUBSTRING_START_FROM_START": "preuzmi podnisku iz slova #", - "TEXT_GET_SUBSTRING_START_FROM_END": "preuzmi podnisku iz slova # sa kraja", - "TEXT_GET_SUBSTRING_START_FIRST": "preuzmi podnisku iz prvog slova", - "TEXT_GET_SUBSTRING_END_FROM_START": "slovu #", - "TEXT_GET_SUBSTRING_END_FROM_END": "slovu # sa kraja", - "TEXT_GET_SUBSTRING_END_LAST": "poslednjem slovu", - "TEXT_CHANGECASE_TOOLTIP": "Vraća primerak teksta sa drugačijom veličinom slova.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "velikim slovima", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "malim slovima", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "svaka reč velikim slovom", - "TEXT_TRIM_TOOLTIP": "Vraća kopiju teksta sa uklonjenim prostorom sa jednog od dva kraja.", - "TEXT_TRIM_OPERATOR_BOTH": "trim praznine sa obe strane", - "TEXT_TRIM_OPERATOR_LEFT": "skratiti prostor sa leve strane", - "TEXT_TRIM_OPERATOR_RIGHT": "skratiti prostor sa desne strane", - "TEXT_PRINT_TITLE": "prikaži %1", - "TEXT_PRINT_TOOLTIP": "Prikažite određeni tekst, broj ili drugu vrednost na ekranu.", - "TEXT_PROMPT_TYPE_TEXT": "pitaj za tekst sa porukom", - "TEXT_PROMPT_TYPE_NUMBER": "pitaj za broj sa porukom", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Pitajte korisnika za broj.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Pitajte korisnika za unos teksta.", - "TEXT_COUNT_MESSAGE0": "broj %1 u %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Broji koliko puta se neki tekst pojavljuje unutar nekog drugog teksta.", - "TEXT_REPLACE_MESSAGE0": "zamena %1 sa %2 u %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Zamena svih pojava nekog teksta unutar nekog drugog teksta.", - "TEXT_REVERSE_MESSAGE0": "obrnuto %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Obrće redosled karaktera u tekstu.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "napravi prazan spisak", - "LISTS_CREATE_EMPTY_TOOLTIP": "vraća listu, dužine 0, ne sadržavajući evidenciju podataka", - "LISTS_CREATE_WITH_TOOLTIP": "Kreiraj listu sa bilo kojim brojem stavki.", - "LISTS_CREATE_WITH_INPUT_WITH": "napravi spisak sa", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "spisak", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Dodajte, izbrišite, ili preuredite delove kako bi se reorganizovali ovaj blok liste.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Dodajte stavku na spisak.", - "LISTS_REPEAT_TOOLTIP": "Pravi listu koja se sastoji od zadane vrednosti koju ponavljamo određeni broj šuta.", - "LISTS_REPEAT_TITLE": "Napraviti listu sa stavkom %1 koja se ponavlja %2 puta", - "LISTS_LENGTH_TITLE": "dužina spiska %1", - "LISTS_LENGTH_TOOLTIP": "Vraća dužinu spiska.", - "LISTS_ISEMPTY_TITLE": "%1 je prazan", - "LISTS_ISEMPTY_TOOLTIP": "Vraća vrednost tačno ako je lista prazna.", - "LISTS_INLIST": "na spisku", - "LISTS_INDEX_OF_FIRST": "pronađi prvo pojavljivanje stavke", - "LISTS_INDEX_OF_LAST": "pronađi poslednje pojavljivanje stavke", - "LISTS_INDEX_OF_TOOLTIP": "Vraća broj prvog i/poslednjeg ulaska elementa u listu. Vraća %1 Ako element nije pronađen.", - "LISTS_GET_INDEX_GET": "preuzmi", - "LISTS_GET_INDEX_GET_REMOVE": "preuzmi i ukloni", - "LISTS_GET_INDEX_REMOVE": "ukloni", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# sa kraja", - "LISTS_GET_INDEX_FIRST": "prva", - "LISTS_GET_INDEX_LAST": "poslednja", - "LISTS_GET_INDEX_RANDOM": "slučajna", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 je prva stavka.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 je poslednja stavka.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Vraća stavku na određenu poziciju na listi.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vraća prvu stavku na spisku.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vraća poslednju stavku na spisku.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vraća slučajnu stavku sa spiska.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Uklanja i vraća stavku sa određenog položaja na spisku.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Uklanja i vraća prvu stavku sa spiska.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Uklanja i vraća poslednju stavku sa spiska.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Uklanja i vraća slučajnu stavku sa spiska.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Uklanja stavku sa određenog položaja na spisku.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Uklanja prvu stavku sa spiska.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Uklanja poslednju stavku sa spiska.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Uklanja slučajnu stavku sa spiska.", - "LISTS_SET_INDEX_SET": "postavi", - "LISTS_SET_INDEX_INSERT": "ubaci na", - "LISTS_SET_INDEX_INPUT_TO": "kao", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Postavlja stavku na određeni položaj na spisku.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Postavlja prvu stavku na spisku.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Postavlja poslednju stavku na spisku.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Postavlja slučajnu stavku na spisku.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ubacuje stavku na određeni položaj na spisku.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ubacuje stavku na početak spiska.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Dodajte stavku na kraj spiska.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ubacuje stavku na slučajno mesto na spisku.", - "LISTS_GET_SUBLIST_START_FROM_START": "preuzmi podspisak od #", - "LISTS_GET_SUBLIST_START_FROM_END": "preuzmi podspisak iz # sa kraja", - "LISTS_GET_SUBLIST_START_FIRST": "preuzmi podspisak od prve", - "LISTS_GET_SUBLIST_END_FROM_START": "do #", - "LISTS_GET_SUBLIST_END_FROM_END": "do # od kraja", - "LISTS_GET_SUBLIST_END_LAST": "do poslednje", - "LISTS_GET_SUBLIST_TOOLTIP": "Pravi kopiju određenog dela liste.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sortiraj %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sortirajte kopiju spiska.", - "LISTS_SORT_ORDER_ASCENDING": "rastuće", - "LISTS_SORT_ORDER_DESCENDING": "opadajuće", - "LISTS_SORT_TYPE_NUMERIC": "kao brojeve", - "LISTS_SORT_TYPE_TEXT": "azbučno", - "LISTS_SORT_TYPE_IGNORECASE": "azbučno, ignoriši mala i velika slova", - "LISTS_SPLIT_LIST_FROM_TEXT": "napravite listu sa teksta", - "LISTS_SPLIT_TEXT_FROM_LIST": "da tekst iz liste", - "LISTS_SPLIT_WITH_DELIMITER": "sa razdvajanje", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Podeliti tekst u listu tekstova, razbijanje na svakom graničnik.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Da se pridruži listu tekstova u jedan tekst, podeljenih za razdvajanje.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "obrnuto %1", - "LISTS_REVERSE_TOOLTIP": "Obrni kopiju spiska.", - "VARIABLES_GET_TOOLTIP": "Vraća vrednost ove promenljive.", - "VARIABLES_GET_CREATE_SET": "Napravi „postavi %1“", - "VARIABLES_SET": "postavi %1 u %2", - "VARIABLES_SET_TOOLTIP": "Postavlja promenljivu tako da bude jednaka ulazu.", - "VARIABLES_SET_CREATE_GET": "Napravi „preuzmi %1“", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "da", - "PROCEDURES_DEFNORETURN_PROCEDURE": "uradite nešto", - "PROCEDURES_BEFORE_PARAMS": "sa:", - "PROCEDURES_CALL_BEFORE_PARAMS": "sa:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Pravi funkciju bez izlaza.", - "PROCEDURES_DEFNORETURN_COMMENT": "Opisati ovu funkciju...", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFRETURN_RETURN": "vrati", - "PROCEDURES_DEFRETURN_TOOLTIP": "Pravi funkciju sa izlazom.", - "PROCEDURES_ALLOW_STATEMENTS": "dozvoliti izreke", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Upozorenje: Ova funkcija ima duplikate parametara.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Pokrenite prilagođenu funkciju „%1“.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Pokrenite prilagođenu funkciju „%1“ i koristi njen izlaz.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "ulazi", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Da dodate, uklonite ili pereuporяdočitь ulaza za ovu funkciju.", - "PROCEDURES_MUTATORARG_TITLE": "naziv ulaza:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Dodajte ulazna funkcija.", - "PROCEDURES_HIGHLIGHT_DEF": "Istakni definiciju funkcije", - "PROCEDURES_CREATE_DO": "Napravi „%1“", - "PROCEDURES_IFRETURN_TOOLTIP": "Ukoliko je vrednost tačna, vrati drugu vrednost.", - "PROCEDURES_IFRETURN_WARNING": "Upozorenje: Ovaj blok se može koristiti jedino u definiciji funkcije.", - "DIALOG_OK": "U redu", - "DIALOG_CANCEL": "Otkaži" -} +{ + "@metadata": { + "authors": [ + "Kizule", + "Zoranzoki21" + ] + }, + "VARIABLES_DEFAULT_NAME": "stavka", + "TODAY": "Danas", + "DUPLICATE_BLOCK": "Dupliraj", + "ADD_COMMENT": "Dodaj komentar", + "REMOVE_COMMENT": "Ukloni komentar", + "EXTERNAL_INPUTS": "Spoljni ulazi", + "INLINE_INPUTS": "Unutrašnji ulazi", + "DELETE_BLOCK": "Obriši blok", + "DELETE_X_BLOCKS": "Obriši %1 blokova", + "DELETE_ALL_BLOCKS": "Da obrišem svih %1 blokova?", + "CLEAN_UP": "Ukloni blokove", + "COLLAPSE_BLOCK": "Skupi blok", + "COLLAPSE_ALL": "Skupi blokove", + "EXPAND_BLOCK": "Proširi blok", + "EXPAND_ALL": "Proširi blokove", + "DISABLE_BLOCK": "Onemogući blok", + "ENABLE_BLOCK": "Omogući blok", + "HELP": "Pomoć", + "UNDO": "Opozovi", + "REDO": "Ponovi", + "CHANGE_VALUE_TITLE": "Promeni vrednost:", + "RENAME_VARIABLE": "Preimenuj promenljivu…", + "RENAME_VARIABLE_TITLE": "Preimenuj sve „%1“ promenljive u:", + "NEW_VARIABLE": "Napravi promenljivu…", + "NEW_VARIABLE_TITLE": "Ime nove promenljive:", + "VARIABLE_ALREADY_EXISTS": "Promenljiva pod imenom '%1' već postoji.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Varijabla po imenu '%1' već postoji za drugu varijablu tipa '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Da obrišem %1 upotreba promenljive '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Ne mogu da obrišem varijablu ’%1’ jer je deo definicije funkcije ’%2’", + "DELETE_VARIABLE": "Obriši promenljivu '%1'", + "COLOUR_PICKER_HELPURL": "https://sr.wikipedia.org/wiki/Boja", + "COLOUR_PICKER_TOOLTIP": "Izaberite boju sa palete.", + "COLOUR_RANDOM_TITLE": "slučajna boja", + "COLOUR_RANDOM_TOOLTIP": "Izaberite boju nasumice.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "boja sa", + "COLOUR_RGB_RED": "crvena", + "COLOUR_RGB_GREEN": "zelena", + "COLOUR_RGB_BLUE": "plava", + "COLOUR_RGB_TOOLTIP": "Kreiraj boju sa određenom količinom crvene,zelene, i plave. Sve vrednosti moraju biti između 0 i 100.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "pomešaj", + "COLOUR_BLEND_COLOUR1": "boja 1", + "COLOUR_BLEND_COLOUR2": "boja 2", + "COLOUR_BLEND_RATIO": "odnos", + "COLOUR_BLEND_TOOLTIP": "Pomešati dve boje zajedno sa datim odnosom (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://sr.wikipedia.org/wiki/For_petlja", + "CONTROLS_REPEAT_TITLE": "ponovi %1 puta", + "CONTROLS_REPEAT_INPUT_DO": "izvrši", + "CONTROLS_REPEAT_TOOLTIP": "Odraditi neke naredbe nekoliko puta.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ponavljati dok", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ponavljati do", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Dok je vrednost tačna, onda izvršite neke naredbe.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Dok vrednost nije tačna, onda izvršiti neke naredbe.", + "CONTROLS_FOR_TOOLTIP": "Imaj promenjivu \"%1\" uzmi vrednosti od početnog broja do zadnjeg broja, brojeći po određenom intervalu, i izvrši određene blokove.", + "CONTROLS_FOR_TITLE": "prebroj sa %1 od %2 do %3 od %4", + "CONTROLS_FOREACH_TITLE": "za svaku stavku %1 na spisku %2", + "CONTROLS_FOREACH_TOOLTIP": "Za svaku stavku unutar liste, podesi promenjivu '%1' po stavci, i onda načini neke izjave-naredbe.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "Izađite iz petlje", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "nastavi sa sledećom iteracijom petlje", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Napusti sadržaj petlje.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Preskoči ostatak ove petlje, i nastavi sa sledećom iteracijom(ponavljanjem).", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Upozorenje: Ovaj blok može da se upotrebi samo unutar petlje.", + "CONTROLS_IF_TOOLTIP_1": "ako je vrednost tačna, onda izvrši neke naredbe-izjave.", + "CONTROLS_IF_TOOLTIP_2": "ako je vrednost tačna, onda izvrši prvi blok naredbi, U suprotnom, izvrši drugi blok naredbi.", + "CONTROLS_IF_TOOLTIP_3": "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi.", + "CONTROLS_IF_TOOLTIP_4": "Ako je prva vrednost tačna, onda izvrši prvi blok naredbi, u suprotnom, ako je druga vrednost tačna , izvrši drugi blok naredbi. Ako ni jedna od vrednosti nije tačna, izvrši poslednji blok naredbi.", + "CONTROLS_IF_MSG_IF": "ako", + "CONTROLS_IF_MSG_ELSEIF": "inače-ako", + "CONTROLS_IF_MSG_ELSE": "inače", + "CONTROLS_IF_IF_TOOLTIP": "Dodaj, ukloni, ili preuredi delove kako bih rekonfigurisali ovaj if blok.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Dodajte uslov bloku „ako“.", + "CONTROLS_IF_ELSE_TOOLTIP": "Dodaj konačni, catch-all (uhvati sve) uslove if bloka.", + "LOGIC_COMPARE_HELPURL": "https://sr.wikipedia.org/wiki/Nejednakost", + "LOGIC_COMPARE_TOOLTIP_EQ": "Vraća vrednost „tačno“ ako su oba ulaza jednaka.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Vraća vrednost „tačno“ ako su oba ulaza nejednaka.", + "LOGIC_COMPARE_TOOLTIP_LT": "Vraća vrednost „tačno“ ako je prvi ulaz manji od drugog.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Vraća vrednost „tačno“ ako je prvi ulaz manji ili jednak drugom.", + "LOGIC_COMPARE_TOOLTIP_GT": "Vraća vrednost „tačno“ ako je prvi ulaz veći od drugog.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Vraća vrednost „tačno“ ako je prvi ulaz veći ili jednak drugom.", + "LOGIC_OPERATION_TOOLTIP_AND": "Vraća vrednost „tačno“ ako su oba ulaza tačna.", + "LOGIC_OPERATION_AND": "i", + "LOGIC_OPERATION_TOOLTIP_OR": "Vraća vrednost „tačno“ ako je bar jedan od ulaza tačan.", + "LOGIC_OPERATION_OR": "ili", + "LOGIC_NEGATE_TITLE": "nije %1", + "LOGIC_NEGATE_TOOLTIP": "Vraća vrednost „tačno“ ako je ulaz netačan. Vraća vrednost „netačno“ ako je ulaz tačan.", + "LOGIC_BOOLEAN_TRUE": "tačno", + "LOGIC_BOOLEAN_FALSE": "netačno", + "LOGIC_BOOLEAN_TOOLTIP": "Vraća ili tačno ili netačno.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "bez vrednosti", + "LOGIC_NULL_TOOLTIP": "Vraća „bez vrednosti“.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "proba", + "LOGIC_TERNARY_IF_TRUE": "ako je tačno", + "LOGIC_TERNARY_IF_FALSE": "ako je netačno", + "LOGIC_TERNARY_TOOLTIP": "Proveri uslov u 'test'. Ako je uslov tačan, tada vraća 'if true' vrednost; u drugom slučaju vraća 'if false' vrednost.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "Neki broj.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "arc sin", + "MATH_TRIG_ACOS": "arc cos", + "MATH_TRIG_ATAN": "arc tan", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Vratite zbir dva broja.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Vraća razliku dva broja.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Vraća proizvod dva broja.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Vraća količnik dva broja.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Vraća prvi broj stepenovan drugim.", + "MATH_SINGLE_HELPURL": "https://sr.wikipedia.org/wiki/Kvadratni_koren", + "MATH_SINGLE_OP_ROOT": "kvadratni koren", + "MATH_SINGLE_TOOLTIP_ROOT": "Vraća kvadratni koren broja.", + "MATH_SINGLE_OP_ABSOLUTE": "apsolutan", + "MATH_SINGLE_TOOLTIP_ABS": "Vraća apsolutnu vrednost broja.", + "MATH_SINGLE_TOOLTIP_NEG": "Vraća negaciju broja.", + "MATH_SINGLE_TOOLTIP_LN": "Vraća prirodni logaritam broja.", + "MATH_SINGLE_TOOLTIP_LOG10": "Vraća logaritam broja sa osnovom 10.", + "MATH_SINGLE_TOOLTIP_EXP": "vratiti e na vlasti broja.", + "MATH_SINGLE_TOOLTIP_POW10": "Vraća 10-ti stepen broja.", + "MATH_TRIG_HELPURL": "https://sr.wikipedia.org/wiki/Trigonometrijske_funkcije", + "MATH_TRIG_TOOLTIP_SIN": "Vraća sinus stepena (ne radijan).", + "MATH_TRIG_TOOLTIP_COS": "Vraća kosinus stepena (ne radijan).", + "MATH_TRIG_TOOLTIP_TAN": "Vraća tangens stepena (ne radijan).", + "MATH_TRIG_TOOLTIP_ASIN": "Vraća arkus broja.", + "MATH_TRIG_TOOLTIP_ACOS": "Vraća arkus kosinus broja.", + "MATH_TRIG_TOOLTIP_ATAN": "Vraća arkus tangens broja.", + "MATH_CONSTANT_HELPURL": "https://sr.wikipedia.org/wiki/Matematička_konstanta", + "MATH_CONSTANT_TOOLTIP": "vrati jednu od zajedničkih konstanti: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), ili ∞ (infinity).", + "MATH_IS_EVEN": "je paran", + "MATH_IS_ODD": "je neparan", + "MATH_IS_PRIME": "je prost", + "MATH_IS_WHOLE": "je ceo", + "MATH_IS_POSITIVE": "je pozitivan", + "MATH_IS_NEGATIVE": "je negativan", + "MATH_IS_DIVISIBLE_BY": "je deljiv sa", + "MATH_IS_TOOLTIP": "Provjerava da li je broj paran, neparan, prost, cio, pozitivan, negativan, ili da li je deljiv sa određenim brojem. Vraća tačno ili netačno.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "promeni %1 za %2", + "MATH_CHANGE_TOOLTIP": "Dodajte broj promenljivoj „%1“.", + "MATH_ROUND_HELPURL": "https://sr.wikipedia.org/wiki/Zaokruživanje", + "MATH_ROUND_TOOLTIP": "Zaokružite broj na veću ili manju vrednost.", + "MATH_ROUND_OPERATOR_ROUND": "zaokruži", + "MATH_ROUND_OPERATOR_ROUNDUP": "zaokruži naviše", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "zaokruži naniže", + "MATH_ONLIST_OPERATOR_SUM": "zbir spiska", + "MATH_ONLIST_TOOLTIP_SUM": "Vraća zbir svih brojeva sa spiska.", + "MATH_ONLIST_OPERATOR_MIN": "min. spiska", + "MATH_ONLIST_TOOLTIP_MIN": "Vraća najmanji broj sa spiska.", + "MATH_ONLIST_OPERATOR_MAX": "maks. spiska", + "MATH_ONLIST_TOOLTIP_MAX": "Vraća najveći broj sa spiska.", + "MATH_ONLIST_OPERATOR_AVERAGE": "prosek spiska", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Vraća prosek numeričkih vrednosti sa spiska.", + "MATH_ONLIST_OPERATOR_MEDIAN": "medijana spiska", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Vraća medijanu sa spiska.", + "MATH_ONLIST_OPERATOR_MODE": "modus spiska", + "MATH_ONLIST_TOOLTIP_MODE": "Vraća najčešće stavke sa spiska.", + "MATH_ONLIST_OPERATOR_STD_DEV": "standardna devijacija spiska", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Vraća standardnu devijaciju spiska.", + "MATH_ONLIST_OPERATOR_RANDOM": "slučajna stavka spiska", + "MATH_ONLIST_TOOLTIP_RANDOM": "Vraća slučajni element sa spiska.", + "MATH_MODULO_HELPURL": "https://sr.wikipedia.org/wiki/Kongruencija", + "MATH_MODULO_TITLE": "podsetnik od %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Vraća podsetnik od deljenja dva broja.", + "MATH_CONSTRAIN_TITLE": "ograniči %1 nisko %2 visoko %3", + "MATH_CONSTRAIN_TOOLTIP": "Ograničava broj na donje i gornje granice (uključivo).", + "MATH_RANDOM_INT_HELPURL": "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva", + "MATH_RANDOM_INT_TITLE": "sličajno odabrani cijeli broj od %1 do %2", + "MATH_RANDOM_INT_TOOLTIP": "Vraća slučajno odabrani celi broj između dve određene granice, uključivo.", + "MATH_RANDOM_FLOAT_HELPURL": "https://sr.wikipedia.org/wiki/Generator_slučajnih_brojeva", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "slučajni razlomak", + "MATH_RANDOM_FLOAT_TOOLTIP": "Vraća slučajni razlomak između 0.0 (uključivo) i 1.0 (isključivo).", + "TEXT_TEXT_HELPURL": "https://sr.wikipedia.org/wiki/Niska", + "TEXT_TEXT_TOOLTIP": "Slovo, reč ili red teksta.", + "TEXT_JOIN_TITLE_CREATEWITH": "napiši tekst sa", + "TEXT_JOIN_TOOLTIP": "Napraviti dio teksta spajajući različite stavke.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "spajanjem", + "TEXT_CREATE_JOIN_TOOLTIP": "Dodaj, ukloni, ili drugačije poredaj odjelke kako bi iznova postavili ovaj tekst blok.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Dodajte stavku u tekst.", + "TEXT_APPEND_TITLE": "na %1 dodaj tekst %2", + "TEXT_APPEND_TOOLTIP": "Dodajte tekst na promenljivu „%1“.", + "TEXT_LENGTH_TITLE": "dužina teksta %1", + "TEXT_LENGTH_TOOLTIP": "Vraća broj slova (uključujući razmake) u datom tekstu.", + "TEXT_ISEMPTY_TITLE": "%1 je prazan", + "TEXT_ISEMPTY_TOOLTIP": "Vraća tačno ako je dostavljeni tekst prazan.", + "TEXT_INDEXOF_TOOLTIP": "Vraća odnos prvog/zadnjeg pojavljivanja teksta u drugom tekstu. Vrađa %1 ako tekst nije pronađen.", + "TEXT_INDEXOF_TITLE": "u tekstu %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "pronađi prvo pojavljivanje teksta", + "TEXT_INDEXOF_OPERATOR_LAST": "pronađi poslednje pojavljivanje teksta", + "TEXT_CHARAT_TITLE": "u tekstu %1 %2", + "TEXT_CHARAT_FROM_START": "preuzmi slovo #", + "TEXT_CHARAT_FROM_END": "preuzmi slovo # sa kraja", + "TEXT_CHARAT_FIRST": "preuzmi prvo slovo", + "TEXT_CHARAT_LAST": "preuzmi poslednje slovo", + "TEXT_CHARAT_RANDOM": "preuzmi slučajno slovo", + "TEXT_CHARAT_TOOLTIP": "Vraća slovo na određeni položaj.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Vraća određeni deo teksta.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "u tekstu", + "TEXT_GET_SUBSTRING_START_FROM_START": "preuzmi podnisku iz slova #", + "TEXT_GET_SUBSTRING_START_FROM_END": "preuzmi podnisku iz slova # sa kraja", + "TEXT_GET_SUBSTRING_START_FIRST": "preuzmi podnisku iz prvog slova", + "TEXT_GET_SUBSTRING_END_FROM_START": "slovu #", + "TEXT_GET_SUBSTRING_END_FROM_END": "slovu # sa kraja", + "TEXT_GET_SUBSTRING_END_LAST": "poslednjem slovu", + "TEXT_CHANGECASE_TOOLTIP": "Vraća primerak teksta sa drugačijom veličinom slova.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "velikim slovima", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "malim slovima", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "svaka reč velikim slovom", + "TEXT_TRIM_TOOLTIP": "Vraća kopiju teksta sa uklonjenim prostorom sa jednog od dva kraja.", + "TEXT_TRIM_OPERATOR_BOTH": "trim praznine sa obe strane", + "TEXT_TRIM_OPERATOR_LEFT": "skratiti prostor sa leve strane", + "TEXT_TRIM_OPERATOR_RIGHT": "skratiti prostor sa desne strane", + "TEXT_PRINT_TITLE": "prikaži %1", + "TEXT_PRINT_TOOLTIP": "Prikažite određeni tekst, broj ili drugu vrednost na ekranu.", + "TEXT_PROMPT_TYPE_TEXT": "pitaj za tekst sa porukom", + "TEXT_PROMPT_TYPE_NUMBER": "pitaj za broj sa porukom", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Pitajte korisnika za broj.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Pitajte korisnika za unos teksta.", + "TEXT_COUNT_MESSAGE0": "broj %1 u %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Broji koliko puta se neki tekst pojavljuje unutar nekog drugog teksta.", + "TEXT_REPLACE_MESSAGE0": "zamena %1 sa %2 u %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Zamena svih pojava nekog teksta unutar nekog drugog teksta.", + "TEXT_REVERSE_MESSAGE0": "obrnuto %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Obrće redosled karaktera u tekstu.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "napravi prazan spisak", + "LISTS_CREATE_EMPTY_TOOLTIP": "vraća listu, dužine 0, ne sadržavajući evidenciju podataka", + "LISTS_CREATE_WITH_TOOLTIP": "Kreiraj listu sa bilo kojim brojem stavki.", + "LISTS_CREATE_WITH_INPUT_WITH": "napravi spisak sa", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "spisak", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Dodajte, izbrišite, ili preuredite delove kako bi se reorganizovali ovaj blok liste.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Dodajte stavku na spisak.", + "LISTS_REPEAT_TOOLTIP": "Pravi listu koja se sastoji od zadane vrednosti koju ponavljamo određeni broj šuta.", + "LISTS_REPEAT_TITLE": "Napraviti listu sa stavkom %1 koja se ponavlja %2 puta", + "LISTS_LENGTH_TITLE": "dužina spiska %1", + "LISTS_LENGTH_TOOLTIP": "Vraća dužinu spiska.", + "LISTS_ISEMPTY_TITLE": "%1 je prazan", + "LISTS_ISEMPTY_TOOLTIP": "Vraća vrednost tačno ako je lista prazna.", + "LISTS_INLIST": "na spisku", + "LISTS_INDEX_OF_FIRST": "pronađi prvo pojavljivanje stavke", + "LISTS_INDEX_OF_LAST": "pronađi poslednje pojavljivanje stavke", + "LISTS_INDEX_OF_TOOLTIP": "Vraća broj prvog i/poslednjeg ulaska elementa u listu. Vraća %1 Ako element nije pronađen.", + "LISTS_GET_INDEX_GET": "preuzmi", + "LISTS_GET_INDEX_GET_REMOVE": "preuzmi i ukloni", + "LISTS_GET_INDEX_REMOVE": "ukloni", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# sa kraja", + "LISTS_GET_INDEX_FIRST": "prva", + "LISTS_GET_INDEX_LAST": "poslednja", + "LISTS_GET_INDEX_RANDOM": "slučajna", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 je prva stavka.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 je poslednja stavka.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Vraća stavku na određenu poziciju na listi.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vraća prvu stavku na spisku.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vraća poslednju stavku na spisku.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vraća slučajnu stavku sa spiska.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Uklanja i vraća stavku sa određenog položaja na spisku.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Uklanja i vraća prvu stavku sa spiska.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Uklanja i vraća poslednju stavku sa spiska.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Uklanja i vraća slučajnu stavku sa spiska.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Uklanja stavku sa određenog položaja na spisku.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Uklanja prvu stavku sa spiska.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Uklanja poslednju stavku sa spiska.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Uklanja slučajnu stavku sa spiska.", + "LISTS_SET_INDEX_SET": "postavi", + "LISTS_SET_INDEX_INSERT": "ubaci na", + "LISTS_SET_INDEX_INPUT_TO": "kao", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Postavlja stavku na određeni položaj na spisku.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Postavlja prvu stavku na spisku.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Postavlja poslednju stavku na spisku.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Postavlja slučajnu stavku na spisku.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Ubacuje stavku na određeni položaj na spisku.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Ubacuje stavku na početak spiska.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Dodajte stavku na kraj spiska.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Ubacuje stavku na slučajno mesto na spisku.", + "LISTS_GET_SUBLIST_START_FROM_START": "preuzmi podspisak od #", + "LISTS_GET_SUBLIST_START_FROM_END": "preuzmi podspisak iz # sa kraja", + "LISTS_GET_SUBLIST_START_FIRST": "preuzmi podspisak od prve", + "LISTS_GET_SUBLIST_END_FROM_START": "do #", + "LISTS_GET_SUBLIST_END_FROM_END": "do # od kraja", + "LISTS_GET_SUBLIST_END_LAST": "do poslednje", + "LISTS_GET_SUBLIST_TOOLTIP": "Pravi kopiju određenog dela liste.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sortiraj %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sortirajte kopiju spiska.", + "LISTS_SORT_ORDER_ASCENDING": "rastuće", + "LISTS_SORT_ORDER_DESCENDING": "opadajuće", + "LISTS_SORT_TYPE_NUMERIC": "kao brojeve", + "LISTS_SORT_TYPE_TEXT": "azbučno", + "LISTS_SORT_TYPE_IGNORECASE": "azbučno, ignoriši mala i velika slova", + "LISTS_SPLIT_LIST_FROM_TEXT": "napravite listu sa teksta", + "LISTS_SPLIT_TEXT_FROM_LIST": "da tekst iz liste", + "LISTS_SPLIT_WITH_DELIMITER": "sa razdvajanje", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Podeliti tekst u listu tekstova, razbijanje na svakom graničnik.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Da se pridruži listu tekstova u jedan tekst, podeljenih za razdvajanje.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "obrnuto %1", + "LISTS_REVERSE_TOOLTIP": "Obrni kopiju spiska.", + "VARIABLES_GET_TOOLTIP": "Vraća vrednost ove promenljive.", + "VARIABLES_GET_CREATE_SET": "Napravi „postavi %1“", + "VARIABLES_SET": "postavi %1 u %2", + "VARIABLES_SET_TOOLTIP": "Postavlja promenljivu tako da bude jednaka ulazu.", + "VARIABLES_SET_CREATE_GET": "Napravi „preuzmi %1“", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "da", + "PROCEDURES_DEFNORETURN_PROCEDURE": "uradite nešto", + "PROCEDURES_BEFORE_PARAMS": "sa:", + "PROCEDURES_CALL_BEFORE_PARAMS": "sa:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Pravi funkciju bez izlaza.", + "PROCEDURES_DEFNORETURN_COMMENT": "Opisati ovu funkciju...", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFRETURN_RETURN": "vrati", + "PROCEDURES_DEFRETURN_TOOLTIP": "Pravi funkciju sa izlazom.", + "PROCEDURES_ALLOW_STATEMENTS": "dozvoliti izreke", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Upozorenje: Ova funkcija ima duplikate parametara.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Pokrenite prilagođenu funkciju „%1“.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Pokrenite prilagođenu funkciju „%1“ i koristi njen izlaz.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "ulazi", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Da dodate, uklonite ili pereuporяdočitь ulaza za ovu funkciju.", + "PROCEDURES_MUTATORARG_TITLE": "naziv ulaza:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Dodajte ulazna funkcija.", + "PROCEDURES_HIGHLIGHT_DEF": "Istakni definiciju funkcije", + "PROCEDURES_CREATE_DO": "Napravi „%1“", + "PROCEDURES_IFRETURN_TOOLTIP": "Ukoliko je vrednost tačna, vrati drugu vrednost.", + "PROCEDURES_IFRETURN_WARNING": "Upozorenje: Ovaj blok se može koristiti jedino u definiciji funkcije.", + "DIALOG_OK": "U redu", + "DIALOG_CANCEL": "Otkaži" +} diff --git a/msg/json/sr.json b/msg/json/sr.json index bf3c42a06a1..c15a00a2a84 100644 --- a/msg/json/sr.json +++ b/msg/json/sr.json @@ -1,373 +1,373 @@ -{ - "@metadata": { - "authors": [ - "Acamicamacaraca", - "BadDog", - "Kizule", - "Nikola Smolenski", - "Obsuser", - "Perevod16", - "Rancher", - "Zoranzoki21", - "Милан Јелисавчић", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "ставка", - "UNNAMED_KEY": "неименовано", - "TODAY": "Данас", - "DUPLICATE_BLOCK": "Дуплирај", - "ADD_COMMENT": "Додај коментар", - "REMOVE_COMMENT": "Уклони коментар", - "DUPLICATE_COMMENT": "Дуплирај коментар", - "EXTERNAL_INPUTS": "Спољашњи улази", - "INLINE_INPUTS": "Редни улази", - "DELETE_BLOCK": "Избриши блок", - "DELETE_X_BLOCKS": "Избриши %1 блокова", - "DELETE_ALL_BLOCKS": "Избрисати свих %1 блокова?", - "CLEAN_UP": "Очисти блокове", - "COLLAPSE_BLOCK": "Скупи блок", - "COLLAPSE_ALL": "Скупи блокове", - "EXPAND_BLOCK": "Прошири блок", - "EXPAND_ALL": "Прошири блокове", - "DISABLE_BLOCK": "Онемогући блок", - "ENABLE_BLOCK": "Омогући блок", - "HELP": "Помоћ", - "UNDO": "Опозови", - "REDO": "Понови", - "CHANGE_VALUE_TITLE": "Промена вредности:", - "RENAME_VARIABLE": "Преименуј променљиву…", - "RENAME_VARIABLE_TITLE": "Преименуј све ’%1’ променљиве у:", - "NEW_VARIABLE": "Направи променљиву…", - "NEW_STRING_VARIABLE": "Направи променљиву ниске...", - "NEW_NUMBER_VARIABLE": "Направи променљиву броја...", - "NEW_COLOUR_VARIABLE": "Направи променљиву боје...", - "NEW_VARIABLE_TYPE_TITLE": "Нова врста променљиве:", - "NEW_VARIABLE_TITLE": "Име нове променљиве:", - "VARIABLE_ALREADY_EXISTS": "Променљива под именом ’%1’ већ постоји.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Променљива под именом ’%1’ већ постоји за други тип: ’%2’.", - "DELETE_VARIABLE_CONFIRMATION": "Избрисати %1 употребу променљиве „%2”?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Није могуће избрисати променљиву „%1” јер је део дефиниције функције „%2”", - "DELETE_VARIABLE": "Избриши променљиву ’%1’", - "COLOUR_PICKER_HELPURL": "https://sr.wikipedia.org/wiki/Боја", - "COLOUR_PICKER_TOOLTIP": "Одаберите боју са палете.", - "COLOUR_RANDOM_TITLE": "случајна боја", - "COLOUR_RANDOM_TOOLTIP": "Одаберите боју насумично.", - "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", - "COLOUR_RGB_TITLE": "боја са", - "COLOUR_RGB_RED": "црвена", - "COLOUR_RGB_GREEN": "зелена", - "COLOUR_RGB_BLUE": "плава", - "COLOUR_RGB_TOOLTIP": "Направите боју са одређеном количином црвене, зелене и плаве. Све вредности морају бити између 0 и 100.", - "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", - "COLOUR_BLEND_TITLE": "помешај", - "COLOUR_BLEND_COLOUR1": "боја 1", - "COLOUR_BLEND_COLOUR2": "боја 2", - "COLOUR_BLEND_RATIO": "однос", - "COLOUR_BLEND_TOOLTIP": "Меша две боје заједно са датим односом (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://sr.wikipedia.org/wiki/For_петља", - "CONTROLS_REPEAT_TITLE": "понови %1 пута", - "CONTROLS_REPEAT_INPUT_DO": "изврши", - "CONTROLS_REPEAT_TOOLTIP": "Изврши неке наредбе неколико пута.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "понављати док", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "понављати до", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Док је вредност тачна, извршава неке наредбе.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Док је вредност нетачна, извршава неке наредбе.", - "CONTROLS_FOR_TOOLTIP": "Имај промењиву \"%1\" узми вредности од почетног броја до задњег броја, бројећи по одређеном интервалу, и изврши одређене блокове.", - "CONTROLS_FOR_TITLE": "преброј са %1 од %2 до %3 од %4", - "CONTROLS_FOREACH_TITLE": "за сваку ставку %1 на списку %2", - "CONTROLS_FOREACH_TOOLTIP": "За сваку ставку унутар листе, подеси промењиву '%1' по ставци, и онда начини неке изјаве-наредбе.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "изађи из петље", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "настави са следећом итерацијом петље", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Напусти садржај петље.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Прескочи остатак ове петље, и настави са следећом итерацијом(понављанјем).", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Упозорење: Овај блок може да се употреби само унутар петље.", - "CONTROLS_IF_TOOLTIP_1": "ако је вредност тачна, онда изврши неке наредбе-изјаве.", - "CONTROLS_IF_TOOLTIP_2": "ако је вредност тачна, онда изврши први блок наредби, У супротном, изврши други блок наредби.", - "CONTROLS_IF_TOOLTIP_3": "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби.", - "CONTROLS_IF_TOOLTIP_4": "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби. Ако ни једна од вредности није тачна, изврши последнји блок наредби.", - "CONTROLS_IF_MSG_IF": "ако", - "CONTROLS_IF_MSG_ELSEIF": "иначе-ако", - "CONTROLS_IF_MSG_ELSE": "иначе", - "CONTROLS_IF_IF_TOOLTIP": "Додај, уклони, или преуреди делове како бих реконфигурисали овај иф блок.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Додајте услов блоку „ако“.", - "CONTROLS_IF_ELSE_TOOLTIP": "Додај коначни, catch-all (ухвати све) услове иф блока.", - "LOGIC_COMPARE_HELPURL": "https://sr.wikipedia.org/wiki/Неједнакост", - "LOGIC_COMPARE_TOOLTIP_EQ": "Враћа вредност „тачно“ ако су оба улаза једнака.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Враћа вредност „тачно“ ако су оба уноса неједнака.", - "LOGIC_COMPARE_TOOLTIP_LT": "Враћа вредност „тачно“ ако је први унос мањи од другог.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Враћа вредност „тачно“ ако је први унос мањи или једнак другом.", - "LOGIC_COMPARE_TOOLTIP_GT": "Враћа вредност „тачно“ ако је први унос већи од другог.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Враћа вредност „тачно“ ако је први унос већи или једнак другом.", - "LOGIC_OPERATION_TOOLTIP_AND": "Враћа вредност „тачно“ ако су оба уноса тачна.", - "LOGIC_OPERATION_AND": "и", - "LOGIC_OPERATION_TOOLTIP_OR": "Враћа вредност „тачно“ ако је бар један од уноса тачан.", - "LOGIC_OPERATION_OR": "или", - "LOGIC_NEGATE_TITLE": "није %1", - "LOGIC_NEGATE_TOOLTIP": "Враћа вредност „тачно“ ако је унос нетачан. Враћа вредност „нетачно“ ако је унос тачан.", - "LOGIC_BOOLEAN_TRUE": "тачно", - "LOGIC_BOOLEAN_FALSE": "нетачно", - "LOGIC_BOOLEAN_TOOLTIP": "Враћа или „тачно“ или „нетачно“.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "без вредности", - "LOGIC_NULL_TOOLTIP": "Враћа „без вредности“.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "проба", - "LOGIC_TERNARY_IF_TRUE": "ако је тачно", - "LOGIC_TERNARY_IF_FALSE": "ако је нетачно", - "LOGIC_TERNARY_TOOLTIP": "Проверите услов у „проба”. Ако је услов тачан, тада враћа „ако је тачно” вредност; у другом случају враћа „ако је нетачно” вредност.", - "MATH_NUMBER_HELPURL": "https://sr.wikipedia.org/wiki/Број", - "MATH_NUMBER_TOOLTIP": "Број.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "син", - "MATH_TRIG_COS": "цос", - "MATH_TRIG_TAN": "тан", - "MATH_TRIG_ASIN": "арц син", - "MATH_TRIG_ACOS": "арц цос", - "MATH_TRIG_ATAN": "арц тан", - "MATH_ARITHMETIC_HELPURL": "https://sr.wikipedia.org/wiki/Аритметика", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Враћа збир два броја.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Враћа разлику два броја.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Враћа производ два броја.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Враћа количник два броја.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Враћа први број степенован другим.", - "MATH_SINGLE_HELPURL": "https://sr.wikipedia.org/wiki/Квадратни_корен", - "MATH_SINGLE_OP_ROOT": "квадратни корен", - "MATH_SINGLE_TOOLTIP_ROOT": "Враћа квадратни корен броја.", - "MATH_SINGLE_OP_ABSOLUTE": "апсолутно", - "MATH_SINGLE_TOOLTIP_ABS": "Враћа апсолутну вредност броја.", - "MATH_SINGLE_TOOLTIP_NEG": "Враћа негацију броја.", - "MATH_SINGLE_TOOLTIP_LN": "Враћа природни логаритам броја.", - "MATH_SINGLE_TOOLTIP_LOG10": "Враћа логаритам броја са основом 10.", - "MATH_SINGLE_TOOLTIP_EXP": "Враћа е-број на степен броја.", - "MATH_SINGLE_TOOLTIP_POW10": "Враћа 10-ти степен броја.", - "MATH_TRIG_HELPURL": "https://sr.wikipedia.org/wiki/Тригонометријске_функције", - "MATH_TRIG_TOOLTIP_SIN": "Враћа синус степена (не радијан).", - "MATH_TRIG_TOOLTIP_COS": "Враћа косинус степена (не радијан).", - "MATH_TRIG_TOOLTIP_TAN": "Враћа тангенс степена (не радијан).", - "MATH_TRIG_TOOLTIP_ASIN": "Враћа аркус синус броја.", - "MATH_TRIG_TOOLTIP_ACOS": "Враћа аркус косинус броја.", - "MATH_TRIG_TOOLTIP_ATAN": "Враћа аркус тангенс броја.", - "MATH_CONSTANT_HELPURL": "https://sr.wikipedia.org/wiki/Математичка_константа", - "MATH_CONSTANT_TOOLTIP": "Враћа једну од заједничких константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконачно).", - "MATH_IS_EVEN": "је паран", - "MATH_IS_ODD": "је непаран", - "MATH_IS_PRIME": "је прост", - "MATH_IS_WHOLE": "је цео", - "MATH_IS_POSITIVE": "је позитиван", - "MATH_IS_NEGATIVE": "је негативан", - "MATH_IS_DIVISIBLE_BY": "је дељив са", - "MATH_IS_TOOLTIP": "Проверава да ли је број паран, непаран, прост, цео, позитиван, негативан, или дељив са одређеним бројем. Враћа „тачно” или „нетачно”.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "промени %1 за %2", - "MATH_CHANGE_TOOLTIP": "Додаје број променљивој „%1”.", - "MATH_ROUND_HELPURL": "https://sr.wikipedia.org/wiki/Заокруживање", - "MATH_ROUND_TOOLTIP": "Заокружује број на већу или мању вредност.", - "MATH_ROUND_OPERATOR_ROUND": "заокружи", - "MATH_ROUND_OPERATOR_ROUNDUP": "заокружи навише", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "заокружи наниже", - "MATH_ONLIST_HELPURL": "", - "MATH_ONLIST_OPERATOR_SUM": "збир списка", - "MATH_ONLIST_TOOLTIP_SUM": "Враћа збир свих бројева са списка.", - "MATH_ONLIST_OPERATOR_MIN": "мин. списка", - "MATH_ONLIST_TOOLTIP_MIN": "Враћа најмањи број са списка.", - "MATH_ONLIST_OPERATOR_MAX": "макс. списка", - "MATH_ONLIST_TOOLTIP_MAX": "Враћа највећи број са списка.", - "MATH_ONLIST_OPERATOR_AVERAGE": "просек списка", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Враћа просек (аритметичку средину) бројева са списка.", - "MATH_ONLIST_OPERATOR_MEDIAN": "медијана списка", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Враћа медијану са списка.", - "MATH_ONLIST_OPERATOR_MODE": "модус списка", - "MATH_ONLIST_TOOLTIP_MODE": "Враћа списак најчешћих ставки на списку.", - "MATH_ONLIST_OPERATOR_STD_DEV": "стандардна девијација списка", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Враћа стандардну девијацију списка.", - "MATH_ONLIST_OPERATOR_RANDOM": "случајна ставка списка", - "MATH_ONLIST_TOOLTIP_RANDOM": "Враћа случајни елемент са списка.", - "MATH_MODULO_HELPURL": "https://sr.wikipedia.org/wiki/Конгруенција", - "MATH_MODULO_TITLE": "подсетник од %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Враћа подсетник од дељења два броја.", - "MATH_CONSTRAIN_TITLE": "ограничи %1 ниско %2 високо %3", - "MATH_CONSTRAIN_TOOLTIP": "Ограничава број на доње и горње границе (укључиво).", - "MATH_RANDOM_INT_HELPURL": "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева", - "MATH_RANDOM_INT_TITLE": "сличајно одабрани цијели број од %1 до %2", - "MATH_RANDOM_INT_TOOLTIP": "Враћа случајно одабрани цели број између две одређене границе, уклјучиво.", - "MATH_RANDOM_FLOAT_HELPURL": "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "случајни разломак", - "MATH_RANDOM_FLOAT_TOOLTIP": "Враћа случајни разломак између 0.0 (укључиво) и 1.0 (искључиво).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "атан2 од X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Врати арктангенту тачке (X, Y) у степенима од -180 до 180.", - "TEXT_TEXT_HELPURL": "https://sr.wikipedia.org/wiki/Ниска", - "TEXT_TEXT_TOOLTIP": "Слово, реч или ред текста.", - "TEXT_JOIN_TITLE_CREATEWITH": "напиши текст са", - "TEXT_JOIN_TOOLTIP": "Направити дио текста спајајући различите ставке.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "спој", - "TEXT_CREATE_JOIN_TOOLTIP": "Додај, уклони, или другачије поредај одјелке како би изнова поставили овај текст блок.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Додајте ставку у текст.", - "TEXT_APPEND_TITLE": "на %1 додај текст %2", - "TEXT_APPEND_TOOLTIP": "Додаје текст променљивој „%1”.", - "TEXT_LENGTH_TITLE": "дужина текста %1", - "TEXT_LENGTH_TOOLTIP": "Враћа број слова (уклјучујући размаке) у датом тексту.", - "TEXT_ISEMPTY_TITLE": "%1 је празан", - "TEXT_ISEMPTY_TOOLTIP": "Враћа „тачно” ако је достављени текст празан.", - "TEXT_INDEXOF_TOOLTIP": "Враћа индекс првог/задњег појављивања првог текста у другом тексту. Враћа %1 ако текст није пронађен.", - "TEXT_INDEXOF_TITLE": "у тексту %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "пронађи прво појављивање текста", - "TEXT_INDEXOF_OPERATOR_LAST": "пронађи последње појављивање текста", - "TEXT_CHARAT_TITLE": "у тексту %1 %2", - "TEXT_CHARAT_FROM_START": "преузми слово #", - "TEXT_CHARAT_FROM_END": "преузми слово # са краја", - "TEXT_CHARAT_FIRST": "преузми прво слово", - "TEXT_CHARAT_LAST": "преузми последње слово", - "TEXT_CHARAT_RANDOM": "преузми случајно слово", - "TEXT_CHARAT_TAIL": "", - "TEXT_CHARAT_TOOLTIP": "Враћа слово на одређени положај.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Враћа одређени део текста.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "у тексту", - "TEXT_GET_SUBSTRING_START_FROM_START": "преузми подниску из слова #", - "TEXT_GET_SUBSTRING_START_FROM_END": "преузми подниску из слова # са краја", - "TEXT_GET_SUBSTRING_START_FIRST": "преузми подниску из првог слова", - "TEXT_GET_SUBSTRING_END_FROM_START": "слову #", - "TEXT_GET_SUBSTRING_END_FROM_END": "слову # са краја", - "TEXT_GET_SUBSTRING_END_LAST": "последњем слову", - "TEXT_GET_SUBSTRING_TAIL": "", - "TEXT_CHANGECASE_TOOLTIP": "Враћа примерак текста са другачијом величином слова.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "великим словима", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "малим словима", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "свака реч великим словом", - "TEXT_TRIM_TOOLTIP": "Враћа копију текста са уклонјеним простором са једног од два краја.", - "TEXT_TRIM_OPERATOR_BOTH": "трим празнине са обе стране", - "TEXT_TRIM_OPERATOR_LEFT": "скратити простор са леве стране", - "TEXT_TRIM_OPERATOR_RIGHT": "скратити простор са десне стране", - "TEXT_PRINT_TITLE": "прикажи %1", - "TEXT_PRINT_TOOLTIP": "Прикажите одређени текст, број или другу вредност на екрану.", - "TEXT_PROMPT_TYPE_TEXT": "питај за текст са поруком", - "TEXT_PROMPT_TYPE_NUMBER": "питај за број са поруком", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Питајте корисника за број.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Питајте корисника за унос текста.", - "TEXT_COUNT_MESSAGE0": "број %1 у %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Броји колико пута се неки текст појављује унутар неког другог текста.", - "TEXT_REPLACE_MESSAGE0": "замена %1 са %2 у %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Замена свих појава неког текста унутар неког другог текста.", - "TEXT_REVERSE_MESSAGE0": "обрнуто %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Обрће редослед карактера у тексту.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "направи празан списак", - "LISTS_CREATE_EMPTY_TOOLTIP": "Враћа списак, дужине 0, без података", - "LISTS_CREATE_WITH_TOOLTIP": "Направите списак са било којим бројем ставки.", - "LISTS_CREATE_WITH_INPUT_WITH": "направи списак са", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "списак", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Додајте, избришите, или преуредите делове како би се реорганизовали овај блок листе.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Додајте ставку на списак.", - "LISTS_REPEAT_TOOLTIP": "Прави листу која се састоји од задане вредности коју понавлјамо одређени број шута.", - "LISTS_REPEAT_TITLE": "Направити списак са ставком %1 која се понавља %2 пута", - "LISTS_LENGTH_TITLE": "дужина списка %1", - "LISTS_LENGTH_TOOLTIP": "Враћа дужину списка.", - "LISTS_ISEMPTY_TITLE": "%1 је празан", - "LISTS_ISEMPTY_TOOLTIP": "Враћа вредност „тачно” ако је списак празан.", - "LISTS_INLIST": "на списку", - "LISTS_INDEX_OF_FIRST": "пронађи прво појављивање ставке", - "LISTS_INDEX_OF_LAST": "пронађи последње појављивање ставке", - "LISTS_INDEX_OF_TOOLTIP": "Враћа индекс прве/последње појаве ставке на списку. Враћа %1 ако ставка није пронађена.", - "LISTS_GET_INDEX_GET": "преузми", - "LISTS_GET_INDEX_GET_REMOVE": "преузми и уклони", - "LISTS_GET_INDEX_REMOVE": "уклони", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# са краја", - "LISTS_GET_INDEX_FIRST": "прва", - "LISTS_GET_INDEX_LAST": "последња", - "LISTS_GET_INDEX_RANDOM": "случајна", - "LISTS_GET_INDEX_TAIL": "", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 је прва ставка.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 је последња ставка.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Враћа ставку на одређену позицију на списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Враћа прву ставку на списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Враћа последњу ставку са списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Враћа случајну ставку са списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Уклања и враћа ставку са одређеног положаја са списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Уклања и враћа прву ставку са списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Уклања и враћа последњу ставку са списка.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Уклања и враћа случајну ставку са списка.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Уклања ставку са одређеног положаја са списка.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Уклања прву ставку са списка.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Уклања последњу ставку са списка.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Уклања случајну ставку са списка.", - "LISTS_SET_INDEX_SET": "постави", - "LISTS_SET_INDEX_INSERT": "убаци на", - "LISTS_SET_INDEX_INPUT_TO": "као", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Поставља ставку на одређени положај на списку.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Поставља прву ставку на списку.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Поставља последњу ставку на списку.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Поставља случајну ставку на списку.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Убацује ставку на одређени положај на списку.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Убацује ставку на почетак списка.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Додајте ставку на крај списка.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Убацује ставку на случајно место на списку.", - "LISTS_GET_SUBLIST_START_FROM_START": "преузми подсписак од #", - "LISTS_GET_SUBLIST_START_FROM_END": "преузми подсписак из # са краја", - "LISTS_GET_SUBLIST_START_FIRST": "преузми подсписак од прве", - "LISTS_GET_SUBLIST_END_FROM_START": "до #", - "LISTS_GET_SUBLIST_END_FROM_END": "до # од краја", - "LISTS_GET_SUBLIST_END_LAST": "до последње", - "LISTS_GET_SUBLIST_TAIL": "", - "LISTS_GET_SUBLIST_TOOLTIP": "Прави копију одређеног дела списка.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "сортирај %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Сортирајте копију списка.", - "LISTS_SORT_ORDER_ASCENDING": "растуће", - "LISTS_SORT_ORDER_DESCENDING": "опадајуће", - "LISTS_SORT_TYPE_NUMERIC": "као бројеве", - "LISTS_SORT_TYPE_TEXT": "азбучно", - "LISTS_SORT_TYPE_IGNORECASE": "азбучно, игнориши мала и велика слова", - "LISTS_SPLIT_LIST_FROM_TEXT": "направите листу са текста", - "LISTS_SPLIT_TEXT_FROM_LIST": "направи текст из списка", - "LISTS_SPLIT_WITH_DELIMITER": "са граничником", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Раздваја текст у списак текстова, преламањем на сваком граничнику.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Спаја списак текстова у један текст, раздвојених граничником.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "обрнуто %1", - "LISTS_REVERSE_TOOLTIP": "Обрни копију списка.", - "ORDINAL_NUMBER_SUFFIX": "", - "VARIABLES_GET_TOOLTIP": "Враћа вредност ове променљиве.", - "VARIABLES_GET_CREATE_SET": "Направи блок за доделу вредности %1", - "VARIABLES_SET": "постави %1 у %2", - "VARIABLES_SET_TOOLTIP": "Поставља променљиву тако да буде једнака улазу.", - "VARIABLES_SET_CREATE_GET": "Направи блок за преузимање вредности из „%1”", - "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFNORETURN_TITLE": "до", - "PROCEDURES_DEFNORETURN_PROCEDURE": "урадите нешто", - "PROCEDURES_BEFORE_PARAMS": "са:", - "PROCEDURES_CALL_BEFORE_PARAMS": "са:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Прави функцију без излаза.", - "PROCEDURES_DEFNORETURN_COMMENT": "Опишите ову функцију…", - "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", - "PROCEDURES_DEFRETURN_RETURN": "врати", - "PROCEDURES_DEFRETURN_TOOLTIP": "Прави функцију са излазом.", - "PROCEDURES_ALLOW_STATEMENTS": "дозволи изјаве", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Упозорење: Ова функција има дуплиране параметре.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://sr.wikipedia.org/wiki/Потпрограм", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Покреће кориснички дефинисану функцију „%1”.", - "PROCEDURES_CALLRETURN_HELPURL": "https://sr.wikipedia.org/wiki/Потпрограм", - "PROCEDURES_CALLRETURN_TOOLTIP": "Покреће кориснички дефинисану функцију „%1” и користи њен излаз.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "улази", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Додајте, уклоните или преуредите уносе за ову функцију.", - "PROCEDURES_MUTATORARG_TITLE": "име параметра:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Додајте улазни параметар финкцији.", - "PROCEDURES_HIGHLIGHT_DEF": "Истакни дефиницију функције", - "PROCEDURES_CREATE_DO": "Направи „%1”", - "PROCEDURES_IFRETURN_TOOLTIP": "Ако је прва вредност тачна, враћа другу вредност.", - "PROCEDURES_IFRETURN_WARNING": "Упозорење: Овај блок се може користити једино унутар дефиниције функције.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Кажите нешто…", - "WORKSPACE_ARIA_LABEL": "Блоклијев радни простор", - "COLLAPSED_WARNINGS_WARNING": "Срушени блокови садрже упозорења.", - "DIALOG_OK": "У реду", - "DIALOG_CANCEL": "Откажи" -} +{ + "@metadata": { + "authors": [ + "Acamicamacaraca", + "BadDog", + "Kizule", + "Nikola Smolenski", + "Obsuser", + "Perevod16", + "Rancher", + "Zoranzoki21", + "Милан Јелисавчић", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "ставка", + "UNNAMED_KEY": "неименовано", + "TODAY": "Данас", + "DUPLICATE_BLOCK": "Дуплирај", + "ADD_COMMENT": "Додај коментар", + "REMOVE_COMMENT": "Уклони коментар", + "DUPLICATE_COMMENT": "Дуплирај коментар", + "EXTERNAL_INPUTS": "Спољашњи улази", + "INLINE_INPUTS": "Редни улази", + "DELETE_BLOCK": "Избриши блок", + "DELETE_X_BLOCKS": "Избриши %1 блокова", + "DELETE_ALL_BLOCKS": "Избрисати свих %1 блокова?", + "CLEAN_UP": "Очисти блокове", + "COLLAPSE_BLOCK": "Скупи блок", + "COLLAPSE_ALL": "Скупи блокове", + "EXPAND_BLOCK": "Прошири блок", + "EXPAND_ALL": "Прошири блокове", + "DISABLE_BLOCK": "Онемогући блок", + "ENABLE_BLOCK": "Омогући блок", + "HELP": "Помоћ", + "UNDO": "Опозови", + "REDO": "Понови", + "CHANGE_VALUE_TITLE": "Промена вредности:", + "RENAME_VARIABLE": "Преименуј променљиву…", + "RENAME_VARIABLE_TITLE": "Преименуј све ’%1’ променљиве у:", + "NEW_VARIABLE": "Направи променљиву…", + "NEW_STRING_VARIABLE": "Направи променљиву ниске...", + "NEW_NUMBER_VARIABLE": "Направи променљиву броја...", + "NEW_COLOUR_VARIABLE": "Направи променљиву боје...", + "NEW_VARIABLE_TYPE_TITLE": "Нова врста променљиве:", + "NEW_VARIABLE_TITLE": "Име нове променљиве:", + "VARIABLE_ALREADY_EXISTS": "Променљива под именом ’%1’ већ постоји.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Променљива под именом ’%1’ већ постоји за други тип: ’%2’.", + "DELETE_VARIABLE_CONFIRMATION": "Избрисати %1 употребу променљиве „%2”?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Није могуће избрисати променљиву „%1” јер је део дефиниције функције „%2”", + "DELETE_VARIABLE": "Избриши променљиву ’%1’", + "COLOUR_PICKER_HELPURL": "https://sr.wikipedia.org/wiki/Боја", + "COLOUR_PICKER_TOOLTIP": "Одаберите боју са палете.", + "COLOUR_RANDOM_TITLE": "случајна боја", + "COLOUR_RANDOM_TOOLTIP": "Одаберите боју насумично.", + "COLOUR_RGB_HELPURL": "http://www.december.com/html/spec/colorper.html", + "COLOUR_RGB_TITLE": "боја са", + "COLOUR_RGB_RED": "црвена", + "COLOUR_RGB_GREEN": "зелена", + "COLOUR_RGB_BLUE": "плава", + "COLOUR_RGB_TOOLTIP": "Направите боју са одређеном количином црвене, зелене и плаве. Све вредности морају бити између 0 и 100.", + "COLOUR_BLEND_HELPURL": "http://meyerweb.com/eric/tools/color-blend/", + "COLOUR_BLEND_TITLE": "помешај", + "COLOUR_BLEND_COLOUR1": "боја 1", + "COLOUR_BLEND_COLOUR2": "боја 2", + "COLOUR_BLEND_RATIO": "однос", + "COLOUR_BLEND_TOOLTIP": "Меша две боје заједно са датим односом (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://sr.wikipedia.org/wiki/For_петља", + "CONTROLS_REPEAT_TITLE": "понови %1 пута", + "CONTROLS_REPEAT_INPUT_DO": "изврши", + "CONTROLS_REPEAT_TOOLTIP": "Изврши неке наредбе неколико пута.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "понављати док", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "понављати до", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Док је вредност тачна, извршава неке наредбе.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Док је вредност нетачна, извршава неке наредбе.", + "CONTROLS_FOR_TOOLTIP": "Имај промењиву \"%1\" узми вредности од почетног броја до задњег броја, бројећи по одређеном интервалу, и изврши одређене блокове.", + "CONTROLS_FOR_TITLE": "преброј са %1 од %2 до %3 од %4", + "CONTROLS_FOREACH_TITLE": "за сваку ставку %1 на списку %2", + "CONTROLS_FOREACH_TOOLTIP": "За сваку ставку унутар листе, подеси промењиву '%1' по ставци, и онда начини неке изјаве-наредбе.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "изађи из петље", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "настави са следећом итерацијом петље", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Напусти садржај петље.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Прескочи остатак ове петље, и настави са следећом итерацијом(понављанјем).", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Упозорење: Овај блок може да се употреби само унутар петље.", + "CONTROLS_IF_TOOLTIP_1": "ако је вредност тачна, онда изврши неке наредбе-изјаве.", + "CONTROLS_IF_TOOLTIP_2": "ако је вредност тачна, онда изврши први блок наредби, У супротном, изврши други блок наредби.", + "CONTROLS_IF_TOOLTIP_3": "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби.", + "CONTROLS_IF_TOOLTIP_4": "Ако је прва вредност тачна, онда изврши први блок наредби, у супротном, ако је друга вредност тачна , изврши други блок наредби. Ако ни једна од вредности није тачна, изврши последнји блок наредби.", + "CONTROLS_IF_MSG_IF": "ако", + "CONTROLS_IF_MSG_ELSEIF": "иначе-ако", + "CONTROLS_IF_MSG_ELSE": "иначе", + "CONTROLS_IF_IF_TOOLTIP": "Додај, уклони, или преуреди делове како бих реконфигурисали овај иф блок.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Додајте услов блоку „ако“.", + "CONTROLS_IF_ELSE_TOOLTIP": "Додај коначни, catch-all (ухвати све) услове иф блока.", + "LOGIC_COMPARE_HELPURL": "https://sr.wikipedia.org/wiki/Неједнакост", + "LOGIC_COMPARE_TOOLTIP_EQ": "Враћа вредност „тачно“ ако су оба улаза једнака.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Враћа вредност „тачно“ ако су оба уноса неједнака.", + "LOGIC_COMPARE_TOOLTIP_LT": "Враћа вредност „тачно“ ако је први унос мањи од другог.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Враћа вредност „тачно“ ако је први унос мањи или једнак другом.", + "LOGIC_COMPARE_TOOLTIP_GT": "Враћа вредност „тачно“ ако је први унос већи од другог.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Враћа вредност „тачно“ ако је први унос већи или једнак другом.", + "LOGIC_OPERATION_TOOLTIP_AND": "Враћа вредност „тачно“ ако су оба уноса тачна.", + "LOGIC_OPERATION_AND": "и", + "LOGIC_OPERATION_TOOLTIP_OR": "Враћа вредност „тачно“ ако је бар један од уноса тачан.", + "LOGIC_OPERATION_OR": "или", + "LOGIC_NEGATE_TITLE": "није %1", + "LOGIC_NEGATE_TOOLTIP": "Враћа вредност „тачно“ ако је унос нетачан. Враћа вредност „нетачно“ ако је унос тачан.", + "LOGIC_BOOLEAN_TRUE": "тачно", + "LOGIC_BOOLEAN_FALSE": "нетачно", + "LOGIC_BOOLEAN_TOOLTIP": "Враћа или „тачно“ или „нетачно“.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "без вредности", + "LOGIC_NULL_TOOLTIP": "Враћа „без вредности“.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "проба", + "LOGIC_TERNARY_IF_TRUE": "ако је тачно", + "LOGIC_TERNARY_IF_FALSE": "ако је нетачно", + "LOGIC_TERNARY_TOOLTIP": "Проверите услов у „проба”. Ако је услов тачан, тада враћа „ако је тачно” вредност; у другом случају враћа „ако је нетачно” вредност.", + "MATH_NUMBER_HELPURL": "https://sr.wikipedia.org/wiki/Број", + "MATH_NUMBER_TOOLTIP": "Број.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "син", + "MATH_TRIG_COS": "цос", + "MATH_TRIG_TAN": "тан", + "MATH_TRIG_ASIN": "арц син", + "MATH_TRIG_ACOS": "арц цос", + "MATH_TRIG_ATAN": "арц тан", + "MATH_ARITHMETIC_HELPURL": "https://sr.wikipedia.org/wiki/Аритметика", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Враћа збир два броја.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Враћа разлику два броја.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Враћа производ два броја.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Враћа количник два броја.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Враћа први број степенован другим.", + "MATH_SINGLE_HELPURL": "https://sr.wikipedia.org/wiki/Квадратни_корен", + "MATH_SINGLE_OP_ROOT": "квадратни корен", + "MATH_SINGLE_TOOLTIP_ROOT": "Враћа квадратни корен броја.", + "MATH_SINGLE_OP_ABSOLUTE": "апсолутно", + "MATH_SINGLE_TOOLTIP_ABS": "Враћа апсолутну вредност броја.", + "MATH_SINGLE_TOOLTIP_NEG": "Враћа негацију броја.", + "MATH_SINGLE_TOOLTIP_LN": "Враћа природни логаритам броја.", + "MATH_SINGLE_TOOLTIP_LOG10": "Враћа логаритам броја са основом 10.", + "MATH_SINGLE_TOOLTIP_EXP": "Враћа е-број на степен броја.", + "MATH_SINGLE_TOOLTIP_POW10": "Враћа 10-ти степен броја.", + "MATH_TRIG_HELPURL": "https://sr.wikipedia.org/wiki/Тригонометријске_функције", + "MATH_TRIG_TOOLTIP_SIN": "Враћа синус степена (не радијан).", + "MATH_TRIG_TOOLTIP_COS": "Враћа косинус степена (не радијан).", + "MATH_TRIG_TOOLTIP_TAN": "Враћа тангенс степена (не радијан).", + "MATH_TRIG_TOOLTIP_ASIN": "Враћа аркус синус броја.", + "MATH_TRIG_TOOLTIP_ACOS": "Враћа аркус косинус броја.", + "MATH_TRIG_TOOLTIP_ATAN": "Враћа аркус тангенс броја.", + "MATH_CONSTANT_HELPURL": "https://sr.wikipedia.org/wiki/Математичка_константа", + "MATH_CONSTANT_TOOLTIP": "Враћа једну од заједничких константи: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), или ∞ (бесконачно).", + "MATH_IS_EVEN": "је паран", + "MATH_IS_ODD": "је непаран", + "MATH_IS_PRIME": "је прост", + "MATH_IS_WHOLE": "је цео", + "MATH_IS_POSITIVE": "је позитиван", + "MATH_IS_NEGATIVE": "је негативан", + "MATH_IS_DIVISIBLE_BY": "је дељив са", + "MATH_IS_TOOLTIP": "Проверава да ли је број паран, непаран, прост, цео, позитиван, негативан, или дељив са одређеним бројем. Враћа „тачно” или „нетачно”.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "промени %1 за %2", + "MATH_CHANGE_TOOLTIP": "Додаје број променљивој „%1”.", + "MATH_ROUND_HELPURL": "https://sr.wikipedia.org/wiki/Заокруживање", + "MATH_ROUND_TOOLTIP": "Заокружује број на већу или мању вредност.", + "MATH_ROUND_OPERATOR_ROUND": "заокружи", + "MATH_ROUND_OPERATOR_ROUNDUP": "заокружи навише", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "заокружи наниже", + "MATH_ONLIST_HELPURL": "", + "MATH_ONLIST_OPERATOR_SUM": "збир списка", + "MATH_ONLIST_TOOLTIP_SUM": "Враћа збир свих бројева са списка.", + "MATH_ONLIST_OPERATOR_MIN": "мин. списка", + "MATH_ONLIST_TOOLTIP_MIN": "Враћа најмањи број са списка.", + "MATH_ONLIST_OPERATOR_MAX": "макс. списка", + "MATH_ONLIST_TOOLTIP_MAX": "Враћа највећи број са списка.", + "MATH_ONLIST_OPERATOR_AVERAGE": "просек списка", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Враћа просек (аритметичку средину) бројева са списка.", + "MATH_ONLIST_OPERATOR_MEDIAN": "медијана списка", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Враћа медијану са списка.", + "MATH_ONLIST_OPERATOR_MODE": "модус списка", + "MATH_ONLIST_TOOLTIP_MODE": "Враћа списак најчешћих ставки на списку.", + "MATH_ONLIST_OPERATOR_STD_DEV": "стандардна девијација списка", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Враћа стандардну девијацију списка.", + "MATH_ONLIST_OPERATOR_RANDOM": "случајна ставка списка", + "MATH_ONLIST_TOOLTIP_RANDOM": "Враћа случајни елемент са списка.", + "MATH_MODULO_HELPURL": "https://sr.wikipedia.org/wiki/Конгруенција", + "MATH_MODULO_TITLE": "подсетник од %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Враћа подсетник од дељења два броја.", + "MATH_CONSTRAIN_TITLE": "ограничи %1 ниско %2 високо %3", + "MATH_CONSTRAIN_TOOLTIP": "Ограничава број на доње и горње границе (укључиво).", + "MATH_RANDOM_INT_HELPURL": "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева", + "MATH_RANDOM_INT_TITLE": "сличајно одабрани цијели број од %1 до %2", + "MATH_RANDOM_INT_TOOLTIP": "Враћа случајно одабрани цели број између две одређене границе, уклјучиво.", + "MATH_RANDOM_FLOAT_HELPURL": "https://sr.wikipedia.org/wiki/Генератор_случајних_бројева", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "случајни разломак", + "MATH_RANDOM_FLOAT_TOOLTIP": "Враћа случајни разломак између 0.0 (укључиво) и 1.0 (искључиво).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "атан2 од X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Врати арктангенту тачке (X, Y) у степенима од -180 до 180.", + "TEXT_TEXT_HELPURL": "https://sr.wikipedia.org/wiki/Ниска", + "TEXT_TEXT_TOOLTIP": "Слово, реч или ред текста.", + "TEXT_JOIN_TITLE_CREATEWITH": "напиши текст са", + "TEXT_JOIN_TOOLTIP": "Направити дио текста спајајући различите ставке.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "спој", + "TEXT_CREATE_JOIN_TOOLTIP": "Додај, уклони, или другачије поредај одјелке како би изнова поставили овај текст блок.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Додајте ставку у текст.", + "TEXT_APPEND_TITLE": "на %1 додај текст %2", + "TEXT_APPEND_TOOLTIP": "Додаје текст променљивој „%1”.", + "TEXT_LENGTH_TITLE": "дужина текста %1", + "TEXT_LENGTH_TOOLTIP": "Враћа број слова (уклјучујући размаке) у датом тексту.", + "TEXT_ISEMPTY_TITLE": "%1 је празан", + "TEXT_ISEMPTY_TOOLTIP": "Враћа „тачно” ако је достављени текст празан.", + "TEXT_INDEXOF_TOOLTIP": "Враћа индекс првог/задњег појављивања првог текста у другом тексту. Враћа %1 ако текст није пронађен.", + "TEXT_INDEXOF_TITLE": "у тексту %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "пронађи прво појављивање текста", + "TEXT_INDEXOF_OPERATOR_LAST": "пронађи последње појављивање текста", + "TEXT_CHARAT_TITLE": "у тексту %1 %2", + "TEXT_CHARAT_FROM_START": "преузми слово #", + "TEXT_CHARAT_FROM_END": "преузми слово # са краја", + "TEXT_CHARAT_FIRST": "преузми прво слово", + "TEXT_CHARAT_LAST": "преузми последње слово", + "TEXT_CHARAT_RANDOM": "преузми случајно слово", + "TEXT_CHARAT_TAIL": "", + "TEXT_CHARAT_TOOLTIP": "Враћа слово на одређени положај.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Враћа одређени део текста.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "у тексту", + "TEXT_GET_SUBSTRING_START_FROM_START": "преузми подниску из слова #", + "TEXT_GET_SUBSTRING_START_FROM_END": "преузми подниску из слова # са краја", + "TEXT_GET_SUBSTRING_START_FIRST": "преузми подниску из првог слова", + "TEXT_GET_SUBSTRING_END_FROM_START": "слову #", + "TEXT_GET_SUBSTRING_END_FROM_END": "слову # са краја", + "TEXT_GET_SUBSTRING_END_LAST": "последњем слову", + "TEXT_GET_SUBSTRING_TAIL": "", + "TEXT_CHANGECASE_TOOLTIP": "Враћа примерак текста са другачијом величином слова.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "великим словима", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "малим словима", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "свака реч великим словом", + "TEXT_TRIM_TOOLTIP": "Враћа копију текста са уклонјеним простором са једног од два краја.", + "TEXT_TRIM_OPERATOR_BOTH": "трим празнине са обе стране", + "TEXT_TRIM_OPERATOR_LEFT": "скратити простор са леве стране", + "TEXT_TRIM_OPERATOR_RIGHT": "скратити простор са десне стране", + "TEXT_PRINT_TITLE": "прикажи %1", + "TEXT_PRINT_TOOLTIP": "Прикажите одређени текст, број или другу вредност на екрану.", + "TEXT_PROMPT_TYPE_TEXT": "питај за текст са поруком", + "TEXT_PROMPT_TYPE_NUMBER": "питај за број са поруком", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Питајте корисника за број.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Питајте корисника за унос текста.", + "TEXT_COUNT_MESSAGE0": "број %1 у %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Броји колико пута се неки текст појављује унутар неког другог текста.", + "TEXT_REPLACE_MESSAGE0": "замена %1 са %2 у %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Замена свих појава неког текста унутар неког другог текста.", + "TEXT_REVERSE_MESSAGE0": "обрнуто %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Обрће редослед карактера у тексту.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "направи празан списак", + "LISTS_CREATE_EMPTY_TOOLTIP": "Враћа списак, дужине 0, без података", + "LISTS_CREATE_WITH_TOOLTIP": "Направите списак са било којим бројем ставки.", + "LISTS_CREATE_WITH_INPUT_WITH": "направи списак са", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "списак", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Додајте, избришите, или преуредите делове како би се реорганизовали овај блок листе.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Додајте ставку на списак.", + "LISTS_REPEAT_TOOLTIP": "Прави листу која се састоји од задане вредности коју понавлјамо одређени број шута.", + "LISTS_REPEAT_TITLE": "Направити списак са ставком %1 која се понавља %2 пута", + "LISTS_LENGTH_TITLE": "дужина списка %1", + "LISTS_LENGTH_TOOLTIP": "Враћа дужину списка.", + "LISTS_ISEMPTY_TITLE": "%1 је празан", + "LISTS_ISEMPTY_TOOLTIP": "Враћа вредност „тачно” ако је списак празан.", + "LISTS_INLIST": "на списку", + "LISTS_INDEX_OF_FIRST": "пронађи прво појављивање ставке", + "LISTS_INDEX_OF_LAST": "пронађи последње појављивање ставке", + "LISTS_INDEX_OF_TOOLTIP": "Враћа индекс прве/последње појаве ставке на списку. Враћа %1 ако ставка није пронађена.", + "LISTS_GET_INDEX_GET": "преузми", + "LISTS_GET_INDEX_GET_REMOVE": "преузми и уклони", + "LISTS_GET_INDEX_REMOVE": "уклони", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# са краја", + "LISTS_GET_INDEX_FIRST": "прва", + "LISTS_GET_INDEX_LAST": "последња", + "LISTS_GET_INDEX_RANDOM": "случајна", + "LISTS_GET_INDEX_TAIL": "", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 је прва ставка.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 је последња ставка.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Враћа ставку на одређену позицију на списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Враћа прву ставку на списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Враћа последњу ставку са списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Враћа случајну ставку са списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Уклања и враћа ставку са одређеног положаја са списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Уклања и враћа прву ставку са списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Уклања и враћа последњу ставку са списка.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Уклања и враћа случајну ставку са списка.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Уклања ставку са одређеног положаја са списка.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Уклања прву ставку са списка.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Уклања последњу ставку са списка.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Уклања случајну ставку са списка.", + "LISTS_SET_INDEX_SET": "постави", + "LISTS_SET_INDEX_INSERT": "убаци на", + "LISTS_SET_INDEX_INPUT_TO": "као", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Поставља ставку на одређени положај на списку.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Поставља прву ставку на списку.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Поставља последњу ставку на списку.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Поставља случајну ставку на списку.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Убацује ставку на одређени положај на списку.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Убацује ставку на почетак списка.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Додајте ставку на крај списка.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Убацује ставку на случајно место на списку.", + "LISTS_GET_SUBLIST_START_FROM_START": "преузми подсписак од #", + "LISTS_GET_SUBLIST_START_FROM_END": "преузми подсписак из # са краја", + "LISTS_GET_SUBLIST_START_FIRST": "преузми подсписак од прве", + "LISTS_GET_SUBLIST_END_FROM_START": "до #", + "LISTS_GET_SUBLIST_END_FROM_END": "до # од краја", + "LISTS_GET_SUBLIST_END_LAST": "до последње", + "LISTS_GET_SUBLIST_TAIL": "", + "LISTS_GET_SUBLIST_TOOLTIP": "Прави копију одређеног дела списка.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "сортирај %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Сортирајте копију списка.", + "LISTS_SORT_ORDER_ASCENDING": "растуће", + "LISTS_SORT_ORDER_DESCENDING": "опадајуће", + "LISTS_SORT_TYPE_NUMERIC": "као бројеве", + "LISTS_SORT_TYPE_TEXT": "азбучно", + "LISTS_SORT_TYPE_IGNORECASE": "азбучно, игнориши мала и велика слова", + "LISTS_SPLIT_LIST_FROM_TEXT": "направите листу са текста", + "LISTS_SPLIT_TEXT_FROM_LIST": "направи текст из списка", + "LISTS_SPLIT_WITH_DELIMITER": "са граничником", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Раздваја текст у списак текстова, преламањем на сваком граничнику.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Спаја списак текстова у један текст, раздвојених граничником.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "обрнуто %1", + "LISTS_REVERSE_TOOLTIP": "Обрни копију списка.", + "ORDINAL_NUMBER_SUFFIX": "", + "VARIABLES_GET_TOOLTIP": "Враћа вредност ове променљиве.", + "VARIABLES_GET_CREATE_SET": "Направи блок за доделу вредности %1", + "VARIABLES_SET": "постави %1 у %2", + "VARIABLES_SET_TOOLTIP": "Поставља променљиву тако да буде једнака улазу.", + "VARIABLES_SET_CREATE_GET": "Направи блок за преузимање вредности из „%1”", + "PROCEDURES_DEFNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFNORETURN_TITLE": "до", + "PROCEDURES_DEFNORETURN_PROCEDURE": "урадите нешто", + "PROCEDURES_BEFORE_PARAMS": "са:", + "PROCEDURES_CALL_BEFORE_PARAMS": "са:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Прави функцију без излаза.", + "PROCEDURES_DEFNORETURN_COMMENT": "Опишите ову функцију…", + "PROCEDURES_DEFRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", + "PROCEDURES_DEFRETURN_RETURN": "врати", + "PROCEDURES_DEFRETURN_TOOLTIP": "Прави функцију са излазом.", + "PROCEDURES_ALLOW_STATEMENTS": "дозволи изјаве", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Упозорење: Ова функција има дуплиране параметре.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://sr.wikipedia.org/wiki/Потпрограм", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Покреће кориснички дефинисану функцију „%1”.", + "PROCEDURES_CALLRETURN_HELPURL": "https://sr.wikipedia.org/wiki/Потпрограм", + "PROCEDURES_CALLRETURN_TOOLTIP": "Покреће кориснички дефинисану функцију „%1” и користи њен излаз.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "улази", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Додајте, уклоните или преуредите уносе за ову функцију.", + "PROCEDURES_MUTATORARG_TITLE": "име параметра:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Додајте улазни параметар финкцији.", + "PROCEDURES_HIGHLIGHT_DEF": "Истакни дефиницију функције", + "PROCEDURES_CREATE_DO": "Направи „%1”", + "PROCEDURES_IFRETURN_TOOLTIP": "Ако је прва вредност тачна, враћа другу вредност.", + "PROCEDURES_IFRETURN_WARNING": "Упозорење: Овај блок се може користити једино унутар дефиниције функције.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Кажите нешто…", + "WORKSPACE_ARIA_LABEL": "Блоклијев радни простор", + "COLLAPSED_WARNINGS_WARNING": "Срушени блокови садрже упозорења.", + "DIALOG_OK": "У реду", + "DIALOG_CANCEL": "Откажи" +} diff --git a/msg/json/sv.json b/msg/json/sv.json index 46c19a9de80..a08527c7d93 100644 --- a/msg/json/sv.json +++ b/msg/json/sv.json @@ -1,375 +1,375 @@ -{ - "@metadata": { - "authors": [ - "Aaoo", - "Abbedabb", - "Eldaria", - "Jopparn", - "Sabelöga", - "Smuda", - "Technic2", - "WikiPhoenix", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "föremål", - "UNNAMED_KEY": "namnlös", - "TODAY": "Idag", - "DUPLICATE_BLOCK": "Duplicera", - "ADD_COMMENT": "Lägg till kommentar", - "REMOVE_COMMENT": "Radera kommentar", - "DUPLICATE_COMMENT": "Duplicera kommentar", - "EXTERNAL_INPUTS": "Externa inmatningar", - "INLINE_INPUTS": "Radinmatning", - "DELETE_BLOCK": "Radera block", - "DELETE_X_BLOCKS": "Radera %1 block", - "DELETE_ALL_BLOCKS": "Radera alla %1 block?", - "CLEAN_UP": "Städa upp block", - "COLLAPSE_BLOCK": "Fäll ihop block", - "COLLAPSE_ALL": "Fäll ihop block", - "EXPAND_BLOCK": "Fäll ut block", - "EXPAND_ALL": "Fäll ut block", - "DISABLE_BLOCK": "Inaktivera block", - "ENABLE_BLOCK": "Aktivera block", - "HELP": "Hjälp", - "UNDO": "Ångra", - "REDO": "Gör om", - "CHANGE_VALUE_TITLE": "Ändra värde:", - "RENAME_VARIABLE": "Byt namn på variabel...", - "RENAME_VARIABLE_TITLE": "Byt namn på alla'%1'-variabler till:", - "NEW_VARIABLE": "Skapa variabel...", - "NEW_STRING_VARIABLE": "Skapa strängvariabel...", - "NEW_NUMBER_VARIABLE": "Skapa siffervariabel...", - "NEW_COLOUR_VARIABLE": "Skapa färgvariabel...", - "NEW_VARIABLE_TYPE_TITLE": "Ny variabeltyp:", - "NEW_VARIABLE_TITLE": "Nytt variabelnamn:", - "VARIABLE_ALREADY_EXISTS": "En variabel med namnet \"%1\" finns redan.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "En variabel med namnet \"%1\" finns redan för en annan typ: \"%2\".", - "DELETE_VARIABLE_CONFIRMATION": "Radera %1 användningar av variabeln \"%2\"?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Kan inte radera variabeln '%1' eftersom den är en del av definition för funktionen '%2'", - "DELETE_VARIABLE": "Radera variabeln \"%1\"", - "COLOUR_PICKER_HELPURL": "https://sv.wikipedia.org/wiki/Färg", - "COLOUR_PICKER_TOOLTIP": "Välj en färg från paletten.", - "COLOUR_RANDOM_TITLE": "slumpfärg", - "COLOUR_RANDOM_TOOLTIP": "Slumpa fram en färg.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "färg med", - "COLOUR_RGB_RED": "röd", - "COLOUR_RGB_GREEN": "grön", - "COLOUR_RGB_BLUE": "blå", - "COLOUR_RGB_TOOLTIP": "Skapa en färg med det angivna mängden röd, grön och blå. Alla värden måste vara mellan 0 och 100.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "blanda", - "COLOUR_BLEND_COLOUR1": "färg 1", - "COLOUR_BLEND_COLOUR2": "färg 2", - "COLOUR_BLEND_RATIO": "förhållande", - "COLOUR_BLEND_TOOLTIP": "Blandar ihop två färger med ett bestämt förhållande (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "upprepa %1 gånger", - "CONTROLS_REPEAT_INPUT_DO": "utför", - "CONTROLS_REPEAT_TOOLTIP": "Utför några kommandon flera gånger.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "upprepa så länge", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "upprepa tills", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Medan ett värde är sant, utför några kommandon.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Medan ett värde är falskt, utför några kommandon.", - "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", - "CONTROLS_FOR_TOOLTIP": "Låt variabeln \"%1\" anta värden från starttalet till sluttalet, beräknat med det angivna intervallet, och utför de angivna blocken.", - "CONTROLS_FOR_TITLE": "räkna med %1 från %2 till %3 med %4", - "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", - "CONTROLS_FOREACH_TITLE": "för varje föremål %1 i listan %2", - "CONTROLS_FOREACH_TOOLTIP": "För varje objekt i en lista, ange variabeln '%1' till objektet, och utför sedan några kommandon.", - "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "bryt ut ur loop", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fortsätta med nästa upprepning av loop", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Bryt ut ur den innehållande upprepningen.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Hoppa över resten av denna loop och fortsätt med nästa loop.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Varning: Detta block kan endast användas i en loop.", - "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", - "CONTROLS_IF_TOOLTIP_1": "Om ett värde är sant, utför några kommandon.", - "CONTROLS_IF_TOOLTIP_2": "Om värdet är sant, utför det första kommandoblocket. Utför annars det andra kommandoblocket.", - "CONTROLS_IF_TOOLTIP_3": "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket.", - "CONTROLS_IF_TOOLTIP_4": "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket. Om ingen av värdena är sanna, utför det sista kommandoblocket.", - "CONTROLS_IF_MSG_IF": "om", - "CONTROLS_IF_MSG_ELSEIF": "annars om", - "CONTROLS_IF_MSG_ELSE": "annars", - "CONTROLS_IF_IF_TOOLTIP": "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera blocket \"om\".", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Lägg till ett villkor blocket \"om\".", - "CONTROLS_IF_ELSE_TOOLTIP": "Lägg till ett sista villkor som täcker alla alternativ som är kvar för \"if\"-blocket.", - "LOGIC_COMPARE_HELPURL": "https://sv.wikipedia.org/wiki/Olikhet", - "LOGIC_COMPARE_TOOLTIP_EQ": "Ger tillbaka sant om båda värdena är lika med varandra.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Ger tillbaka sant om båda värdena inte är lika med varandra.", - "LOGIC_COMPARE_TOOLTIP_LT": "Ger tillbaka sant om det första värdet är mindre än det andra.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Ger tillbaka sant om det första värdet är mindre än eller lika med det andra.", - "LOGIC_COMPARE_TOOLTIP_GT": "Ger tillbaka sant om det första värdet är större än det andra.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Ger tillbaka sant om det första värdet är större än eller lika med det andra.", - "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", - "LOGIC_OPERATION_TOOLTIP_AND": "Ger tillbaka sant om båda värdena är sanna.", - "LOGIC_OPERATION_AND": "och", - "LOGIC_OPERATION_TOOLTIP_OR": "Ger tillbaka sant om minst ett av värdena är sant.", - "LOGIC_OPERATION_OR": "eller", - "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", - "LOGIC_NEGATE_TITLE": "inte %1", - "LOGIC_NEGATE_TOOLTIP": "Ger tillbaka sant om inmatningen är falsk. Ger tillbaka falskt och inmatningen är sann.", - "LOGIC_BOOLEAN_TRUE": "sant", - "LOGIC_BOOLEAN_FALSE": "falskt", - "LOGIC_BOOLEAN_TOOLTIP": "Returnerar antingen sant eller falskt.", - "LOGIC_NULL_HELPURL": "https://sv.wikipedia.org/wiki/Null", - "LOGIC_NULL": "null", - "LOGIC_NULL_TOOLTIP": "Returnerar null.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "test", - "LOGIC_TERNARY_IF_TRUE": "om sant", - "LOGIC_TERNARY_IF_FALSE": "om falskt", - "LOGIC_TERNARY_TOOLTIP": "Kontrollera villkoret i \"test\". Om villkoret är sant, ge tillbaka \"om sant\"-värdet; annars ge tillbaka \"om falskt\"-värdet.", - "MATH_NUMBER_HELPURL": "https://sv.wikipedia.org/wiki/Tal", - "MATH_NUMBER_TOOLTIP": "Ett tal.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "arcsin", - "MATH_TRIG_ACOS": "arccos", - "MATH_TRIG_ATAN": "arctan", - "MATH_ARITHMETIC_HELPURL": "https://sv.wikipedia.org/wiki/Aritmetik", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Returnerar summan av de två talen.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Returnerar differensen mellan de två talen.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Returnerar produkten av de två talen.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Returnerar kvoten av de två talen.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Ger tillbaka det första talet upphöjt till det andra talet.", - "MATH_SINGLE_HELPURL": "https://sv.wikipedia.org/wiki/Kvadratrot", - "MATH_SINGLE_OP_ROOT": "kvadratrot", - "MATH_SINGLE_TOOLTIP_ROOT": "Returnerar kvadratroten av ett tal.", - "MATH_SINGLE_OP_ABSOLUTE": "absolut", - "MATH_SINGLE_TOOLTIP_ABS": "Returnerar absolutvärdet av ett tal.", - "MATH_SINGLE_TOOLTIP_NEG": "Returnerar negationen av ett tal.", - "MATH_SINGLE_TOOLTIP_LN": "Returnera den naturliga logaritmen av ett tal.", - "MATH_SINGLE_TOOLTIP_LOG10": "Returnerar logaritmen för bas 10 av ett tal.", - "MATH_SINGLE_TOOLTIP_EXP": "Ger tillbaka e upphöjt i ett tal.", - "MATH_SINGLE_TOOLTIP_POW10": "Ger tillbaka 10 upphöjt i ett tal.", - "MATH_TRIG_HELPURL": "https://sv.wikipedia.org/wiki/Trigonometrisk_funktion", - "MATH_TRIG_TOOLTIP_SIN": "Ger tillbaka sinus för en grad (inte radian).", - "MATH_TRIG_TOOLTIP_COS": "Ger tillbaka cosinus för en grad (inte radian).", - "MATH_TRIG_TOOLTIP_TAN": "Ger tillbaka tangens för en grad (inte radian).", - "MATH_TRIG_TOOLTIP_ASIN": "Ger tillbaka arcus sinus (arcsin) för ett tal.", - "MATH_TRIG_TOOLTIP_ACOS": "Ger tillbaka arcus cosinus (arccos) för ett tal.", - "MATH_TRIG_TOOLTIP_ATAN": "Ger tillbaka arcus tangens (arctan) av ett tal.", - "MATH_CONSTANT_HELPURL": "https://sv.wikipedia.org/wiki/Matematisk_konstant", - "MATH_CONSTANT_TOOLTIP": "Returnerar en av de vanliga konstanterna: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (oändligt).", - "MATH_IS_EVEN": "är jämnt", - "MATH_IS_ODD": "är ojämnt", - "MATH_IS_PRIME": "är ett primtal", - "MATH_IS_WHOLE": "är helt", - "MATH_IS_POSITIVE": "är positivt", - "MATH_IS_NEGATIVE": "är negativt", - "MATH_IS_DIVISIBLE_BY": "är delbart med", - "MATH_IS_TOOLTIP": "Kontrollera om ett tal är jämnt, ojämnt, helt, positivt, negativt eller det är delbart med ett bestämt tal. Returnerar med sant eller falskt.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "ändra %1 med %2", - "MATH_CHANGE_TOOLTIP": "Lägg till ett tal till variabeln '%1'.", - "MATH_ROUND_HELPURL": "https://sv.wikipedia.org/wiki/Avrundning", - "MATH_ROUND_TOOLTIP": "Avrunda ett tal uppåt eller nedåt.", - "MATH_ROUND_OPERATOR_ROUND": "avrunda", - "MATH_ROUND_OPERATOR_ROUNDUP": "avrunda uppåt", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "avrunda nedåt", - "MATH_ONLIST_OPERATOR_SUM": "summan av listan", - "MATH_ONLIST_TOOLTIP_SUM": "Ger tillbaka summan av alla talen i listan.", - "MATH_ONLIST_OPERATOR_MIN": "minsta talet i listan", - "MATH_ONLIST_TOOLTIP_MIN": "Ger tillbaka det minsta talet i listan.", - "MATH_ONLIST_OPERATOR_MAX": "högsta talet i listan", - "MATH_ONLIST_TOOLTIP_MAX": "Ger tillbaka det största talet i listan.", - "MATH_ONLIST_OPERATOR_AVERAGE": "medelvärdet av listan", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Ger tillbaka medelvärdet (aritmetiskt) av de numeriska värdena i listan.", - "MATH_ONLIST_OPERATOR_MEDIAN": "medianen av listan", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Returnerar medianen av talen i listan.", - "MATH_ONLIST_OPERATOR_MODE": "typvärdet i listan", - "MATH_ONLIST_TOOLTIP_MODE": "Ger tillbaka en lista med de(t) vanligaste objekte(t/n) i listan.", - "MATH_ONLIST_OPERATOR_STD_DEV": "standardavvikelsen i listan", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Ger tillbaka standardavvikelsen i listan.", - "MATH_ONLIST_OPERATOR_RANDOM": "slumpmässigt objekt i listan", - "MATH_ONLIST_TOOLTIP_RANDOM": "Returnerar ett slumpmässigt element från listan.", - "MATH_MODULO_HELPURL": "https://sv.wikipedia.org/wiki/Modulär_aritmetik", - "MATH_MODULO_TITLE": "resten av %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Returnerar kvoten från divisionen av de två talen.", - "MATH_CONSTRAIN_TITLE": "begränsa %1 till mellan %2 och %3", - "MATH_CONSTRAIN_TOOLTIP": "Begränsa ett tal till att mellan de angivna gränsvärden (inkluderande).", - "MATH_RANDOM_INT_HELPURL": "https://sv.wikipedia.org/wiki/Slumptalsgenerator", - "MATH_RANDOM_INT_TITLE": "slumpartat heltal från %1 till %2", - "MATH_RANDOM_INT_TOOLTIP": "Ger tillbaka ett slumpat heltal mellan två värden, inkluderande.", - "MATH_RANDOM_FLOAT_HELPURL": "https://sv.wikipedia.org/wiki/Slumptalsgenerator", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "slumpat decimaltal", - "MATH_RANDOM_FLOAT_TOOLTIP": "Ger tillbaka ett slumpat decimaltal mellan 0.0 (inkluderat) och 1.0 (exkluderat).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 av X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Returnerar arcustangens av punkt (X, Y) i grader från -180 till 180.", - "TEXT_TEXT_HELPURL": "https://sv.wikipedia.org/wiki/Str%C3%A4ng_%28data%29", - "TEXT_TEXT_TOOLTIP": "En bokstav, ord eller textrad.", - "TEXT_JOIN_TITLE_CREATEWITH": "skapa text med", - "TEXT_JOIN_TOOLTIP": "Skapa en textbit genom att sammanfoga ett valfritt antal föremål.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "sammanfoga", - "TEXT_CREATE_JOIN_TOOLTIP": "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera detta textblock.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Lägg till ett föremål till texten.", - "TEXT_APPEND_TITLE": "för att %1 lägga till text %2", - "TEXT_APPEND_TOOLTIP": "Lägg till lite text till variabeln '%1'.", - "TEXT_LENGTH_TITLE": "längden på %1", - "TEXT_LENGTH_TOOLTIP": "Ger tillbaka antalet bokstäver (inklusive mellanslag) i den angivna texten.", - "TEXT_ISEMPTY_TITLE": "%1 är tom", - "TEXT_ISEMPTY_TOOLTIP": "Returnerar sant om den angivna texten är tom.", - "TEXT_INDEXOF_TOOLTIP": "Ger tillbaka indexet för den första/sista förekomsten av första texten i den andra texten. Ger tillbaka %1 om texten inte hittas.", - "TEXT_INDEXOF_TITLE": "i texten %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "hitta första förekomsten av texten", - "TEXT_INDEXOF_OPERATOR_LAST": "hitta sista förekomsten av texten", - "TEXT_CHARAT_TITLE": "i texten %1 %2", - "TEXT_CHARAT_FROM_START": "hämta bokstaven #", - "TEXT_CHARAT_FROM_END": "hämta bokstaven # från slutet", - "TEXT_CHARAT_FIRST": "hämta första bokstaven", - "TEXT_CHARAT_LAST": "hämta sista bokstaven", - "TEXT_CHARAT_RANDOM": "hämta slumpad bokstav", - "TEXT_CHARAT_TOOLTIP": "Ger tillbaka bokstaven på den specificerade positionen.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Ger tillbaka en viss del av texten.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "i texten", - "TEXT_GET_SUBSTRING_START_FROM_START": "få textdel från bokstav #", - "TEXT_GET_SUBSTRING_START_FROM_END": "få textdel från bokstav # från slutet", - "TEXT_GET_SUBSTRING_START_FIRST": "få textdel från första bokstaven", - "TEXT_GET_SUBSTRING_END_FROM_START": "till bokstav #", - "TEXT_GET_SUBSTRING_END_FROM_END": "till bokstav # från slutet", - "TEXT_GET_SUBSTRING_END_LAST": "till sista bokstaven", - "TEXT_CHANGECASE_TOOLTIP": "Returnerar en kopia av texten i ett annat skiftläge.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "till VERSALER", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "till gemener", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "till Versala Initialer", - "TEXT_TRIM_TOOLTIP": "Returnerar en kopia av texten med borttagna mellanrum från en eller båda ändar.", - "TEXT_TRIM_OPERATOR_BOTH": "ta bort mellanrum från båda sidorna av", - "TEXT_TRIM_OPERATOR_LEFT": "ta bort mellanrum från vänstra sidan av", - "TEXT_TRIM_OPERATOR_RIGHT": "ta bort mellanrum från högra sidan av", - "TEXT_PRINT_TITLE": "skriv %1", - "TEXT_PRINT_TOOLTIP": "Skriv den angivna texten, talet eller annat värde.", - "TEXT_PROMPT_TYPE_TEXT": "fråga efter text med meddelande", - "TEXT_PROMPT_TYPE_NUMBER": "fråga efter ett tal med meddelande", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Fråga användaren efter ett tal.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Fråga användaren efter lite text.", - "TEXT_COUNT_MESSAGE0": "räkna %1 i %2", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Räkna hur många gånger en text förekommer inom en annan text.", - "TEXT_REPLACE_MESSAGE0": "ersätt %1 med %2 i %3", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "Ersätt alla förekomster av en text inom en annan text.", - "TEXT_REVERSE_MESSAGE0": "vänd på %1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "Vänder på teckenordningen i texten.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "skapa tom lista", - "LISTS_CREATE_EMPTY_TOOLTIP": "Ger tillbaka en lista utan någon data, alltså med längden 0", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "Skapa en lista med valfritt antal föremål.", - "LISTS_CREATE_WITH_INPUT_WITH": "skapa lista med", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Lägg till, ta bort eller ändra ordningen på objekten för att göra om det här \"list\"-blocket.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Lägg till ett föremål till listan.", - "LISTS_REPEAT_TOOLTIP": "Skapar en lista som innehåller ett valt värde upprepat ett bestämt antalet gånger.", - "LISTS_REPEAT_TITLE": "skapa lista med föremålet %1 upprepat %2 gånger", - "LISTS_LENGTH_TITLE": "längden på %1", - "LISTS_LENGTH_TOOLTIP": "Returnerar längden på en lista.", - "LISTS_ISEMPTY_TITLE": "%1 är tom", - "LISTS_ISEMPTY_TOOLTIP": "Returnerar sant om listan är tom.", - "LISTS_INLIST": "i listan", - "LISTS_INDEX_OF_FIRST": "hitta första förekomsten av objektet", - "LISTS_INDEX_OF_LAST": "hitta sista förekomsten av objektet", - "LISTS_INDEX_OF_TOOLTIP": "Ger tillbaka den första/sista förekomsten av objektet i listan. Returnerar %1 om objektet inte hittas.", - "LISTS_GET_INDEX_GET": "hämta", - "LISTS_GET_INDEX_GET_REMOVE": "hämta och ta bort", - "LISTS_GET_INDEX_REMOVE": "ta bort", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# från slutet", - "LISTS_GET_INDEX_FIRST": "första", - "LISTS_GET_INDEX_LAST": "sista", - "LISTS_GET_INDEX_RANDOM": "slumpad", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 är det första objektet.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 är det sista objektet.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Ger tillbaka objektet på den efterfrågade positionen i en lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returnerar det första objektet i en lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returnerar det sista objektet i en lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returnerar ett slumpmässigt objekt i en lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Tar bort och återställer objektet på den specificerade positionen i en lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Tar bort och återställer det första objektet i en lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Tar bort och återställer det sista objektet i en lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Tar bort och återställer ett slumpmässigt objekt i en lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Tar bort objektet på den specificerade positionen i en lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Tar bort det första objektet i en lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Tar bort det sista objektet i en lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Tar bort en slumpmässig post i en lista.", - "LISTS_SET_INDEX_SET": "ange", - "LISTS_SET_INDEX_INSERT": "Sätt in vid", - "LISTS_SET_INDEX_INPUT_TO": "som", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Sätter in objektet vid en specificerad position i en lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Anger det första objektet i en lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Anger det sista elementet i en lista.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Sätter in ett slumpat objekt i en lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Sätter in objektet vid en specificerad position i en lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "sätter in objektet i början av en lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Lägg till objektet i slutet av en lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "sätter in objektet på en slumpad position i en lista.", - "LISTS_GET_SUBLIST_START_FROM_START": "få underlista från #", - "LISTS_GET_SUBLIST_START_FROM_END": "få underlista från # från slutet", - "LISTS_GET_SUBLIST_START_FIRST": "få underlista från första", - "LISTS_GET_SUBLIST_END_FROM_START": "till #", - "LISTS_GET_SUBLIST_END_FROM_END": "till # från slutet", - "LISTS_GET_SUBLIST_END_LAST": "till sista", - "LISTS_GET_SUBLIST_TOOLTIP": "Skapar en kopia av den specificerade delen av en lista.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sortera %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sortera en kopia av en lista.", - "LISTS_SORT_ORDER_ASCENDING": "stigande", - "LISTS_SORT_ORDER_DESCENDING": "fallande", - "LISTS_SORT_TYPE_NUMERIC": "numeriskt", - "LISTS_SORT_TYPE_TEXT": "alfabetiskt", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetiskt, ignorera skiftläge", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "skapa lista från text", - "LISTS_SPLIT_TEXT_FROM_LIST": "skapa text från lista", - "LISTS_SPLIT_WITH_DELIMITER": "med avgränsare", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Dela upp text till en textlista och bryt vid varje avgränsare.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Sammanfoga en textlista till en text, som separeras av en avgränsare.", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "vänd på %1", - "LISTS_REVERSE_TOOLTIP": "Vänd på en kopia av en lista.", - "VARIABLES_GET_TOOLTIP": "Returnerar värdet av denna variabel.", - "VARIABLES_GET_CREATE_SET": "Skapa \"välj %1\"", - "VARIABLES_SET": "ange %1 till %2", - "VARIABLES_SET_TOOLTIP": "Gör så att den här variabeln blir lika med inputen.", - "VARIABLES_SET_CREATE_GET": "Skapa 'hämta %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://sv.wikipedia.org/wiki/Funktion_(programmering)", - "PROCEDURES_DEFNORETURN_TITLE": "för att", - "PROCEDURES_DEFNORETURN_PROCEDURE": "göra något", - "PROCEDURES_BEFORE_PARAMS": "med:", - "PROCEDURES_CALL_BEFORE_PARAMS": "med:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Skapar en funktion utan output.", - "PROCEDURES_DEFNORETURN_COMMENT": "Beskriv denna funktion...", - "PROCEDURES_DEFRETURN_HELPURL": "https://sv.wikipedia.org/wiki/Funktion_(programmering)", - "PROCEDURES_DEFRETURN_RETURN": "returnera", - "PROCEDURES_DEFRETURN_TOOLTIP": "Skapar en funktion med output.", - "PROCEDURES_ALLOW_STATEMENTS": "tillåta uttalanden", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Varning: Denna funktion har dubbla parametrar.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Kör den användardefinierade funktionen \"%1\".", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Kör den användardefinierade funktionen \"%1\" och använd resultatet av den.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "inmatningar", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Lägg till, ta bort och ändra ordningen för inmatningar till denna funktion.", - "PROCEDURES_MUTATORARG_TITLE": "inmatningsnamn:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Lägg till en inmatning till funktionen.", - "PROCEDURES_HIGHLIGHT_DEF": "Markera funktionsdefinition", - "PROCEDURES_CREATE_DO": "Skapa '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Om ett värde är sant returneras ett andra värde.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Varning: Detta block får användas endast i en funktionsdefinition.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Säg någonting...", - "WORKSPACE_ARIA_LABEL": "Blocklys arbetsyta", - "COLLAPSED_WARNINGS_WARNING": "Hopfällda block innehåller varningar.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Avbryt" -} +{ + "@metadata": { + "authors": [ + "Aaoo", + "Abbedabb", + "Eldaria", + "Jopparn", + "Sabelöga", + "Smuda", + "Technic2", + "WikiPhoenix", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "föremål", + "UNNAMED_KEY": "namnlös", + "TODAY": "Idag", + "DUPLICATE_BLOCK": "Duplicera", + "ADD_COMMENT": "Lägg till kommentar", + "REMOVE_COMMENT": "Radera kommentar", + "DUPLICATE_COMMENT": "Duplicera kommentar", + "EXTERNAL_INPUTS": "Externa inmatningar", + "INLINE_INPUTS": "Radinmatning", + "DELETE_BLOCK": "Radera block", + "DELETE_X_BLOCKS": "Radera %1 block", + "DELETE_ALL_BLOCKS": "Radera alla %1 block?", + "CLEAN_UP": "Städa upp block", + "COLLAPSE_BLOCK": "Fäll ihop block", + "COLLAPSE_ALL": "Fäll ihop block", + "EXPAND_BLOCK": "Fäll ut block", + "EXPAND_ALL": "Fäll ut block", + "DISABLE_BLOCK": "Inaktivera block", + "ENABLE_BLOCK": "Aktivera block", + "HELP": "Hjälp", + "UNDO": "Ångra", + "REDO": "Gör om", + "CHANGE_VALUE_TITLE": "Ändra värde:", + "RENAME_VARIABLE": "Byt namn på variabel...", + "RENAME_VARIABLE_TITLE": "Byt namn på alla'%1'-variabler till:", + "NEW_VARIABLE": "Skapa variabel...", + "NEW_STRING_VARIABLE": "Skapa strängvariabel...", + "NEW_NUMBER_VARIABLE": "Skapa siffervariabel...", + "NEW_COLOUR_VARIABLE": "Skapa färgvariabel...", + "NEW_VARIABLE_TYPE_TITLE": "Ny variabeltyp:", + "NEW_VARIABLE_TITLE": "Nytt variabelnamn:", + "VARIABLE_ALREADY_EXISTS": "En variabel med namnet \"%1\" finns redan.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "En variabel med namnet \"%1\" finns redan för en annan typ: \"%2\".", + "DELETE_VARIABLE_CONFIRMATION": "Radera %1 användningar av variabeln \"%2\"?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Kan inte radera variabeln '%1' eftersom den är en del av definition för funktionen '%2'", + "DELETE_VARIABLE": "Radera variabeln \"%1\"", + "COLOUR_PICKER_HELPURL": "https://sv.wikipedia.org/wiki/Färg", + "COLOUR_PICKER_TOOLTIP": "Välj en färg från paletten.", + "COLOUR_RANDOM_TITLE": "slumpfärg", + "COLOUR_RANDOM_TOOLTIP": "Slumpa fram en färg.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "färg med", + "COLOUR_RGB_RED": "röd", + "COLOUR_RGB_GREEN": "grön", + "COLOUR_RGB_BLUE": "blå", + "COLOUR_RGB_TOOLTIP": "Skapa en färg med det angivna mängden röd, grön och blå. Alla värden måste vara mellan 0 och 100.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "blanda", + "COLOUR_BLEND_COLOUR1": "färg 1", + "COLOUR_BLEND_COLOUR2": "färg 2", + "COLOUR_BLEND_RATIO": "förhållande", + "COLOUR_BLEND_TOOLTIP": "Blandar ihop två färger med ett bestämt förhållande (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "upprepa %1 gånger", + "CONTROLS_REPEAT_INPUT_DO": "utför", + "CONTROLS_REPEAT_TOOLTIP": "Utför några kommandon flera gånger.", + "CONTROLS_WHILEUNTIL_HELPURL": "https://github.com/google/blockly/wiki/Loops#repeat", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "upprepa så länge", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "upprepa tills", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Medan ett värde är sant, utför några kommandon.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Medan ett värde är falskt, utför några kommandon.", + "CONTROLS_FOR_HELPURL": "https://github.com/google/blockly/wiki/Loops#count-with", + "CONTROLS_FOR_TOOLTIP": "Låt variabeln \"%1\" anta värden från starttalet till sluttalet, beräknat med det angivna intervallet, och utför de angivna blocken.", + "CONTROLS_FOR_TITLE": "räkna med %1 från %2 till %3 med %4", + "CONTROLS_FOREACH_HELPURL": "https://github.com/google/blockly/wiki/Loops#for-each", + "CONTROLS_FOREACH_TITLE": "för varje föremål %1 i listan %2", + "CONTROLS_FOREACH_TOOLTIP": "För varje objekt i en lista, ange variabeln '%1' till objektet, och utför sedan några kommandon.", + "CONTROLS_FLOW_STATEMENTS_HELPURL": "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "bryt ut ur loop", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "fortsätta med nästa upprepning av loop", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Bryt ut ur den innehållande upprepningen.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Hoppa över resten av denna loop och fortsätt med nästa loop.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Varning: Detta block kan endast användas i en loop.", + "CONTROLS_IF_HELPURL": "https://github.com/google/blockly/wiki/IfElse", + "CONTROLS_IF_TOOLTIP_1": "Om ett värde är sant, utför några kommandon.", + "CONTROLS_IF_TOOLTIP_2": "Om värdet är sant, utför det första kommandoblocket. Utför annars det andra kommandoblocket.", + "CONTROLS_IF_TOOLTIP_3": "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket.", + "CONTROLS_IF_TOOLTIP_4": "Om det första värdet är sant, utför det första kommandoblocket. Annars, om det andra värdet är sant, utför det andra kommandoblocket. Om ingen av värdena är sanna, utför det sista kommandoblocket.", + "CONTROLS_IF_MSG_IF": "om", + "CONTROLS_IF_MSG_ELSEIF": "annars om", + "CONTROLS_IF_MSG_ELSE": "annars", + "CONTROLS_IF_IF_TOOLTIP": "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera blocket \"om\".", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Lägg till ett villkor blocket \"om\".", + "CONTROLS_IF_ELSE_TOOLTIP": "Lägg till ett sista villkor som täcker alla alternativ som är kvar för \"if\"-blocket.", + "LOGIC_COMPARE_HELPURL": "https://sv.wikipedia.org/wiki/Olikhet", + "LOGIC_COMPARE_TOOLTIP_EQ": "Ger tillbaka sant om båda värdena är lika med varandra.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Ger tillbaka sant om båda värdena inte är lika med varandra.", + "LOGIC_COMPARE_TOOLTIP_LT": "Ger tillbaka sant om det första värdet är mindre än det andra.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Ger tillbaka sant om det första värdet är mindre än eller lika med det andra.", + "LOGIC_COMPARE_TOOLTIP_GT": "Ger tillbaka sant om det första värdet är större än det andra.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Ger tillbaka sant om det första värdet är större än eller lika med det andra.", + "LOGIC_OPERATION_HELPURL": "https://github.com/google/blockly/wiki/Logic#logical-operations", + "LOGIC_OPERATION_TOOLTIP_AND": "Ger tillbaka sant om båda värdena är sanna.", + "LOGIC_OPERATION_AND": "och", + "LOGIC_OPERATION_TOOLTIP_OR": "Ger tillbaka sant om minst ett av värdena är sant.", + "LOGIC_OPERATION_OR": "eller", + "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", + "LOGIC_NEGATE_TITLE": "inte %1", + "LOGIC_NEGATE_TOOLTIP": "Ger tillbaka sant om inmatningen är falsk. Ger tillbaka falskt och inmatningen är sann.", + "LOGIC_BOOLEAN_TRUE": "sant", + "LOGIC_BOOLEAN_FALSE": "falskt", + "LOGIC_BOOLEAN_TOOLTIP": "Returnerar antingen sant eller falskt.", + "LOGIC_NULL_HELPURL": "https://sv.wikipedia.org/wiki/Null", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "Returnerar null.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "om sant", + "LOGIC_TERNARY_IF_FALSE": "om falskt", + "LOGIC_TERNARY_TOOLTIP": "Kontrollera villkoret i \"test\". Om villkoret är sant, ge tillbaka \"om sant\"-värdet; annars ge tillbaka \"om falskt\"-värdet.", + "MATH_NUMBER_HELPURL": "https://sv.wikipedia.org/wiki/Tal", + "MATH_NUMBER_TOOLTIP": "Ett tal.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "arcsin", + "MATH_TRIG_ACOS": "arccos", + "MATH_TRIG_ATAN": "arctan", + "MATH_ARITHMETIC_HELPURL": "https://sv.wikipedia.org/wiki/Aritmetik", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Returnerar summan av de två talen.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Returnerar differensen mellan de två talen.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Returnerar produkten av de två talen.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Returnerar kvoten av de två talen.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Ger tillbaka det första talet upphöjt till det andra talet.", + "MATH_SINGLE_HELPURL": "https://sv.wikipedia.org/wiki/Kvadratrot", + "MATH_SINGLE_OP_ROOT": "kvadratrot", + "MATH_SINGLE_TOOLTIP_ROOT": "Returnerar kvadratroten av ett tal.", + "MATH_SINGLE_OP_ABSOLUTE": "absolut", + "MATH_SINGLE_TOOLTIP_ABS": "Returnerar absolutvärdet av ett tal.", + "MATH_SINGLE_TOOLTIP_NEG": "Returnerar negationen av ett tal.", + "MATH_SINGLE_TOOLTIP_LN": "Returnera den naturliga logaritmen av ett tal.", + "MATH_SINGLE_TOOLTIP_LOG10": "Returnerar logaritmen för bas 10 av ett tal.", + "MATH_SINGLE_TOOLTIP_EXP": "Ger tillbaka e upphöjt i ett tal.", + "MATH_SINGLE_TOOLTIP_POW10": "Ger tillbaka 10 upphöjt i ett tal.", + "MATH_TRIG_HELPURL": "https://sv.wikipedia.org/wiki/Trigonometrisk_funktion", + "MATH_TRIG_TOOLTIP_SIN": "Ger tillbaka sinus för en grad (inte radian).", + "MATH_TRIG_TOOLTIP_COS": "Ger tillbaka cosinus för en grad (inte radian).", + "MATH_TRIG_TOOLTIP_TAN": "Ger tillbaka tangens för en grad (inte radian).", + "MATH_TRIG_TOOLTIP_ASIN": "Ger tillbaka arcus sinus (arcsin) för ett tal.", + "MATH_TRIG_TOOLTIP_ACOS": "Ger tillbaka arcus cosinus (arccos) för ett tal.", + "MATH_TRIG_TOOLTIP_ATAN": "Ger tillbaka arcus tangens (arctan) av ett tal.", + "MATH_CONSTANT_HELPURL": "https://sv.wikipedia.org/wiki/Matematisk_konstant", + "MATH_CONSTANT_TOOLTIP": "Returnerar en av de vanliga konstanterna: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…) eller ∞ (oändligt).", + "MATH_IS_EVEN": "är jämnt", + "MATH_IS_ODD": "är ojämnt", + "MATH_IS_PRIME": "är ett primtal", + "MATH_IS_WHOLE": "är helt", + "MATH_IS_POSITIVE": "är positivt", + "MATH_IS_NEGATIVE": "är negativt", + "MATH_IS_DIVISIBLE_BY": "är delbart med", + "MATH_IS_TOOLTIP": "Kontrollera om ett tal är jämnt, ojämnt, helt, positivt, negativt eller det är delbart med ett bestämt tal. Returnerar med sant eller falskt.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "ändra %1 med %2", + "MATH_CHANGE_TOOLTIP": "Lägg till ett tal till variabeln '%1'.", + "MATH_ROUND_HELPURL": "https://sv.wikipedia.org/wiki/Avrundning", + "MATH_ROUND_TOOLTIP": "Avrunda ett tal uppåt eller nedåt.", + "MATH_ROUND_OPERATOR_ROUND": "avrunda", + "MATH_ROUND_OPERATOR_ROUNDUP": "avrunda uppåt", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "avrunda nedåt", + "MATH_ONLIST_OPERATOR_SUM": "summan av listan", + "MATH_ONLIST_TOOLTIP_SUM": "Ger tillbaka summan av alla talen i listan.", + "MATH_ONLIST_OPERATOR_MIN": "minsta talet i listan", + "MATH_ONLIST_TOOLTIP_MIN": "Ger tillbaka det minsta talet i listan.", + "MATH_ONLIST_OPERATOR_MAX": "högsta talet i listan", + "MATH_ONLIST_TOOLTIP_MAX": "Ger tillbaka det största talet i listan.", + "MATH_ONLIST_OPERATOR_AVERAGE": "medelvärdet av listan", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Ger tillbaka medelvärdet (aritmetiskt) av de numeriska värdena i listan.", + "MATH_ONLIST_OPERATOR_MEDIAN": "medianen av listan", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Returnerar medianen av talen i listan.", + "MATH_ONLIST_OPERATOR_MODE": "typvärdet i listan", + "MATH_ONLIST_TOOLTIP_MODE": "Ger tillbaka en lista med de(t) vanligaste objekte(t/n) i listan.", + "MATH_ONLIST_OPERATOR_STD_DEV": "standardavvikelsen i listan", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Ger tillbaka standardavvikelsen i listan.", + "MATH_ONLIST_OPERATOR_RANDOM": "slumpmässigt objekt i listan", + "MATH_ONLIST_TOOLTIP_RANDOM": "Returnerar ett slumpmässigt element från listan.", + "MATH_MODULO_HELPURL": "https://sv.wikipedia.org/wiki/Modulär_aritmetik", + "MATH_MODULO_TITLE": "resten av %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Returnerar kvoten från divisionen av de två talen.", + "MATH_CONSTRAIN_TITLE": "begränsa %1 till mellan %2 och %3", + "MATH_CONSTRAIN_TOOLTIP": "Begränsa ett tal till att mellan de angivna gränsvärden (inkluderande).", + "MATH_RANDOM_INT_HELPURL": "https://sv.wikipedia.org/wiki/Slumptalsgenerator", + "MATH_RANDOM_INT_TITLE": "slumpartat heltal från %1 till %2", + "MATH_RANDOM_INT_TOOLTIP": "Ger tillbaka ett slumpat heltal mellan två värden, inkluderande.", + "MATH_RANDOM_FLOAT_HELPURL": "https://sv.wikipedia.org/wiki/Slumptalsgenerator", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "slumpat decimaltal", + "MATH_RANDOM_FLOAT_TOOLTIP": "Ger tillbaka ett slumpat decimaltal mellan 0.0 (inkluderat) och 1.0 (exkluderat).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 av X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Returnerar arcustangens av punkt (X, Y) i grader från -180 till 180.", + "TEXT_TEXT_HELPURL": "https://sv.wikipedia.org/wiki/Str%C3%A4ng_%28data%29", + "TEXT_TEXT_TOOLTIP": "En bokstav, ord eller textrad.", + "TEXT_JOIN_TITLE_CREATEWITH": "skapa text med", + "TEXT_JOIN_TOOLTIP": "Skapa en textbit genom att sammanfoga ett valfritt antal föremål.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "sammanfoga", + "TEXT_CREATE_JOIN_TOOLTIP": "Lägg till, ta bort eller ändra ordningen för sektioner för att omkonfigurera detta textblock.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Lägg till ett föremål till texten.", + "TEXT_APPEND_TITLE": "för att %1 lägga till text %2", + "TEXT_APPEND_TOOLTIP": "Lägg till lite text till variabeln '%1'.", + "TEXT_LENGTH_TITLE": "längden på %1", + "TEXT_LENGTH_TOOLTIP": "Ger tillbaka antalet bokstäver (inklusive mellanslag) i den angivna texten.", + "TEXT_ISEMPTY_TITLE": "%1 är tom", + "TEXT_ISEMPTY_TOOLTIP": "Returnerar sant om den angivna texten är tom.", + "TEXT_INDEXOF_TOOLTIP": "Ger tillbaka indexet för den första/sista förekomsten av första texten i den andra texten. Ger tillbaka %1 om texten inte hittas.", + "TEXT_INDEXOF_TITLE": "i texten %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "hitta första förekomsten av texten", + "TEXT_INDEXOF_OPERATOR_LAST": "hitta sista förekomsten av texten", + "TEXT_CHARAT_TITLE": "i texten %1 %2", + "TEXT_CHARAT_FROM_START": "hämta bokstaven #", + "TEXT_CHARAT_FROM_END": "hämta bokstaven # från slutet", + "TEXT_CHARAT_FIRST": "hämta första bokstaven", + "TEXT_CHARAT_LAST": "hämta sista bokstaven", + "TEXT_CHARAT_RANDOM": "hämta slumpad bokstav", + "TEXT_CHARAT_TOOLTIP": "Ger tillbaka bokstaven på den specificerade positionen.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Ger tillbaka en viss del av texten.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "i texten", + "TEXT_GET_SUBSTRING_START_FROM_START": "få textdel från bokstav #", + "TEXT_GET_SUBSTRING_START_FROM_END": "få textdel från bokstav # från slutet", + "TEXT_GET_SUBSTRING_START_FIRST": "få textdel från första bokstaven", + "TEXT_GET_SUBSTRING_END_FROM_START": "till bokstav #", + "TEXT_GET_SUBSTRING_END_FROM_END": "till bokstav # från slutet", + "TEXT_GET_SUBSTRING_END_LAST": "till sista bokstaven", + "TEXT_CHANGECASE_TOOLTIP": "Returnerar en kopia av texten i ett annat skiftläge.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "till VERSALER", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "till gemener", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "till Versala Initialer", + "TEXT_TRIM_TOOLTIP": "Returnerar en kopia av texten med borttagna mellanrum från en eller båda ändar.", + "TEXT_TRIM_OPERATOR_BOTH": "ta bort mellanrum från båda sidorna av", + "TEXT_TRIM_OPERATOR_LEFT": "ta bort mellanrum från vänstra sidan av", + "TEXT_TRIM_OPERATOR_RIGHT": "ta bort mellanrum från högra sidan av", + "TEXT_PRINT_TITLE": "skriv %1", + "TEXT_PRINT_TOOLTIP": "Skriv den angivna texten, talet eller annat värde.", + "TEXT_PROMPT_TYPE_TEXT": "fråga efter text med meddelande", + "TEXT_PROMPT_TYPE_NUMBER": "fråga efter ett tal med meddelande", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Fråga användaren efter ett tal.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Fråga användaren efter lite text.", + "TEXT_COUNT_MESSAGE0": "räkna %1 i %2", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Räkna hur många gånger en text förekommer inom en annan text.", + "TEXT_REPLACE_MESSAGE0": "ersätt %1 med %2 i %3", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "Ersätt alla förekomster av en text inom en annan text.", + "TEXT_REVERSE_MESSAGE0": "vänd på %1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "Vänder på teckenordningen i texten.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "skapa tom lista", + "LISTS_CREATE_EMPTY_TOOLTIP": "Ger tillbaka en lista utan någon data, alltså med längden 0", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "Skapa en lista med valfritt antal föremål.", + "LISTS_CREATE_WITH_INPUT_WITH": "skapa lista med", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "lista", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Lägg till, ta bort eller ändra ordningen på objekten för att göra om det här \"list\"-blocket.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Lägg till ett föremål till listan.", + "LISTS_REPEAT_TOOLTIP": "Skapar en lista som innehåller ett valt värde upprepat ett bestämt antalet gånger.", + "LISTS_REPEAT_TITLE": "skapa lista med föremålet %1 upprepat %2 gånger", + "LISTS_LENGTH_TITLE": "längden på %1", + "LISTS_LENGTH_TOOLTIP": "Returnerar längden på en lista.", + "LISTS_ISEMPTY_TITLE": "%1 är tom", + "LISTS_ISEMPTY_TOOLTIP": "Returnerar sant om listan är tom.", + "LISTS_INLIST": "i listan", + "LISTS_INDEX_OF_FIRST": "hitta första förekomsten av objektet", + "LISTS_INDEX_OF_LAST": "hitta sista förekomsten av objektet", + "LISTS_INDEX_OF_TOOLTIP": "Ger tillbaka den första/sista förekomsten av objektet i listan. Returnerar %1 om objektet inte hittas.", + "LISTS_GET_INDEX_GET": "hämta", + "LISTS_GET_INDEX_GET_REMOVE": "hämta och ta bort", + "LISTS_GET_INDEX_REMOVE": "ta bort", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# från slutet", + "LISTS_GET_INDEX_FIRST": "första", + "LISTS_GET_INDEX_LAST": "sista", + "LISTS_GET_INDEX_RANDOM": "slumpad", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 är det första objektet.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 är det sista objektet.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Ger tillbaka objektet på den efterfrågade positionen i en lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Returnerar det första objektet i en lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Returnerar det sista objektet i en lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Returnerar ett slumpmässigt objekt i en lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Tar bort och återställer objektet på den specificerade positionen i en lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Tar bort och återställer det första objektet i en lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Tar bort och återställer det sista objektet i en lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Tar bort och återställer ett slumpmässigt objekt i en lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Tar bort objektet på den specificerade positionen i en lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Tar bort det första objektet i en lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Tar bort det sista objektet i en lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Tar bort en slumpmässig post i en lista.", + "LISTS_SET_INDEX_SET": "ange", + "LISTS_SET_INDEX_INSERT": "Sätt in vid", + "LISTS_SET_INDEX_INPUT_TO": "som", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Sätter in objektet vid en specificerad position i en lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Anger det första objektet i en lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Anger det sista elementet i en lista.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Sätter in ett slumpat objekt i en lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Sätter in objektet vid en specificerad position i en lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "sätter in objektet i början av en lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Lägg till objektet i slutet av en lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "sätter in objektet på en slumpad position i en lista.", + "LISTS_GET_SUBLIST_START_FROM_START": "få underlista från #", + "LISTS_GET_SUBLIST_START_FROM_END": "få underlista från # från slutet", + "LISTS_GET_SUBLIST_START_FIRST": "få underlista från första", + "LISTS_GET_SUBLIST_END_FROM_START": "till #", + "LISTS_GET_SUBLIST_END_FROM_END": "till # från slutet", + "LISTS_GET_SUBLIST_END_LAST": "till sista", + "LISTS_GET_SUBLIST_TOOLTIP": "Skapar en kopia av den specificerade delen av en lista.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sortera %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sortera en kopia av en lista.", + "LISTS_SORT_ORDER_ASCENDING": "stigande", + "LISTS_SORT_ORDER_DESCENDING": "fallande", + "LISTS_SORT_TYPE_NUMERIC": "numeriskt", + "LISTS_SORT_TYPE_TEXT": "alfabetiskt", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetiskt, ignorera skiftläge", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "skapa lista från text", + "LISTS_SPLIT_TEXT_FROM_LIST": "skapa text från lista", + "LISTS_SPLIT_WITH_DELIMITER": "med avgränsare", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Dela upp text till en textlista och bryt vid varje avgränsare.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Sammanfoga en textlista till en text, som separeras av en avgränsare.", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "vänd på %1", + "LISTS_REVERSE_TOOLTIP": "Vänd på en kopia av en lista.", + "VARIABLES_GET_TOOLTIP": "Returnerar värdet av denna variabel.", + "VARIABLES_GET_CREATE_SET": "Skapa \"välj %1\"", + "VARIABLES_SET": "ange %1 till %2", + "VARIABLES_SET_TOOLTIP": "Gör så att den här variabeln blir lika med inputen.", + "VARIABLES_SET_CREATE_GET": "Skapa 'hämta %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://sv.wikipedia.org/wiki/Funktion_(programmering)", + "PROCEDURES_DEFNORETURN_TITLE": "för att", + "PROCEDURES_DEFNORETURN_PROCEDURE": "göra något", + "PROCEDURES_BEFORE_PARAMS": "med:", + "PROCEDURES_CALL_BEFORE_PARAMS": "med:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Skapar en funktion utan output.", + "PROCEDURES_DEFNORETURN_COMMENT": "Beskriv denna funktion...", + "PROCEDURES_DEFRETURN_HELPURL": "https://sv.wikipedia.org/wiki/Funktion_(programmering)", + "PROCEDURES_DEFRETURN_RETURN": "returnera", + "PROCEDURES_DEFRETURN_TOOLTIP": "Skapar en funktion med output.", + "PROCEDURES_ALLOW_STATEMENTS": "tillåta uttalanden", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Varning: Denna funktion har dubbla parametrar.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Kör den användardefinierade funktionen \"%1\".", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Kör den användardefinierade funktionen \"%1\" och använd resultatet av den.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "inmatningar", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Lägg till, ta bort och ändra ordningen för inmatningar till denna funktion.", + "PROCEDURES_MUTATORARG_TITLE": "inmatningsnamn:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Lägg till en inmatning till funktionen.", + "PROCEDURES_HIGHLIGHT_DEF": "Markera funktionsdefinition", + "PROCEDURES_CREATE_DO": "Skapa '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Om ett värde är sant returneras ett andra värde.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Varning: Detta block får användas endast i en funktionsdefinition.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Säg någonting...", + "WORKSPACE_ARIA_LABEL": "Blocklys arbetsyta", + "COLLAPSED_WARNINGS_WARNING": "Hopfällda block innehåller varningar.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Avbryt" +} diff --git a/msg/json/sw.json b/msg/json/sw.json index 76095333f6f..249d17602d9 100644 --- a/msg/json/sw.json +++ b/msg/json/sw.json @@ -1,10 +1,10 @@ -{ - "@metadata": { - "authors": [ - "Yasen igra" - ] - }, - "TODAY": "Leo", - "HELP": "Msaada", - "DIALOG_OK": "Sawa" -} +{ + "@metadata": { + "authors": [ + "Yasen igra" + ] + }, + "TODAY": "Leo", + "HELP": "Msaada", + "DIALOG_OK": "Sawa" +} diff --git a/msg/json/ta.json b/msg/json/ta.json index bc858c93473..e8316e6c941 100644 --- a/msg/json/ta.json +++ b/msg/json/ta.json @@ -1,308 +1,308 @@ -{ - "@metadata": { - "authors": [ - "Aswn", - "ElangoRamanujam", - "Ezhillang", - "Karuthan", - "Mahir78", - "Thangamani-arun" - ] - }, - "VARIABLES_DEFAULT_NAME": "உருப்படி", - "UNNAMED_KEY": "பெயரிடப்படாதது", - "TODAY": "இன்று", - "DUPLICATE_BLOCK": "மறுநகல்", - "ADD_COMMENT": "கருத்தை சேர்", - "REMOVE_COMMENT": "கருத்தை நீக்கு", - "EXTERNAL_INPUTS": "வெளி கருவிகளுடன் உள்ளீடு", - "INLINE_INPUTS": "சூழமைவில் உள்ளீடு", - "DELETE_BLOCK": "உறுப்பை நீக்கு", - "DELETE_X_BLOCKS": "%1 உறுப்பை நீக்கு", - "DELETE_ALL_BLOCKS": "அனைத்து %1 நிரல் துண்டுகளையும் அழிக்கவா??", - "COLLAPSE_BLOCK": "உறுப்பை மரை", - "COLLAPSE_ALL": "உறுப்புகளை மரை", - "EXPAND_BLOCK": "உறுப்பை காட்டு", - "EXPAND_ALL": "உறுப்புகளை காட்டு", - "DISABLE_BLOCK": "உறுப்பை இயங்காது செய்", - "ENABLE_BLOCK": "உறுப்பை இயங்குமாரு செய்", - "HELP": "உதவி", - "UNDO": "மீளமை", - "REDO": "மீண்டும் செய்", - "CHANGE_VALUE_TITLE": "மதிப்பை மாற்றவும்:", - "RENAME_VARIABLE": "மாறிலியை மறுபெயரிடுக...", - "RENAME_VARIABLE_TITLE": "அனைத்து '%1' மாறிலிகளையும் பின்வருமாறு மறுபெயரிடுக:", - "NEW_VARIABLE": "மாறிலியை உருவாக்குக...", - "NEW_VARIABLE_TYPE_TITLE": "புதிய மாறிலியின் பெயர்:", - "NEW_VARIABLE_TITLE": "புதிய மாறிலியின் பெயர்:", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "வண்ண தட்டிலிருந்து ஒரு நிறத்தைத் தேர்ந்தெடுக்கவும்.", - "COLOUR_RANDOM_TITLE": "தற்போக்கு நிறம்", - "COLOUR_RANDOM_TOOLTIP": "தற்போக்கில் ஒரு நிறத்தை தேர்ந்தெடுக்கவும்.", - "COLOUR_RGB_TITLE": "நிறத்துடன்", - "COLOUR_RGB_RED": "சிகப்பு", - "COLOUR_RGB_GREEN": "பச்சை", - "COLOUR_RGB_BLUE": "நீலம்", - "COLOUR_RGB_TOOLTIP": "குறிப்பிட்ட அளவு சிவப்பு,பச்சை மற்றும் நீலம் சேர்த்து புது நிறம் உருவாக்கு. மதிப்புகள் 0 முதல் 100 வரை மட்டுமே இருக்க வேண்டும்.", - "COLOUR_BLEND_TITLE": "கலப்பு (வண்ணம்)", - "COLOUR_BLEND_COLOUR1": "நிறம் 1", - "COLOUR_BLEND_COLOUR2": "நிறம் 2", - "COLOUR_BLEND_RATIO": "விகிதம்", - "COLOUR_BLEND_TOOLTIP": "கொடுக்கப்பட்ட விகதத்தில் (0.0 - 1.0) இரு நிறங்களை கலக்குக.", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "'%1' முரை திரும்ப செய்", - "CONTROLS_REPEAT_INPUT_DO": "செய்க", - "CONTROLS_REPEAT_TOOLTIP": "கட்டளைகளை பல முரை செய்ய", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "பலமுரை திரும்ப செய் (வரை)", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "பலமுரை திரும்ப செய் (முடயேனில்)", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "மாறி பொய் ஆக உள்ள வரை, கட்டளைகளை இயக்கு", - "CONTROLS_FOR_TOOLTIP": "முதல் எண்ணில் இருந்து கடை எண் வரை எடுத்துக்கொள்ள ஒரு மாறியை வைத்துக்கொள், குறித்த இடைவெளியை சேர்த்தவறே தொகுதிகளை செயலாக்கு.", - "CONTROLS_FOR_TITLE": "மாறியை வைத்து எண்ண %1 %2 இல் இருந்து %3 வரை %4-இன் படியாக", - "CONTROLS_FOREACH_TITLE": "உருப்படி ஒவ்வொன்றாக %1 பட்டியலில் உள்ள %2", - "CONTROLS_FOREACH_TOOLTIP": "பட்டியலில் உள்ள உருப்படியில் ஒவ்வொன்றாக, மாறியின் பொருள் '%1' ஆக வைக்க.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "மடக்கு கட்டளையை நிறுத்து.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "மடக்கு கட்டளையின் அடுத்த இயக்கநிலைக்கு செல்", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "மடக்கு கட்டளையின் இயக்கத்தில் இருந்து நிறுத்து.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "மடக்கு கட்டளையின் மீதியை விட்டுவிட்டு அடுத்த இயக்கநிலைக்கு செல்", - "CONTROLS_FLOW_STATEMENTS_WARNING": "எச்சரிக்கை : மடக்கு கூற்றில் இந்த தொகுதி ஒரு முறை மட்டுமே செயல்படுத்தப் படலாம்.", - "CONTROLS_IF_TOOLTIP_1": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு", - "CONTROLS_IF_TOOLTIP_2": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை இயக்கு.", - "CONTROLS_IF_TOOLTIP_3": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு.", - "CONTROLS_IF_TOOLTIP_4": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு. இரண்டும் இல்லை என்றால் கடைசி தொகுப்பு இயக்கு.", - "CONTROLS_IF_MSG_IF": "எனில்", - "CONTROLS_IF_MSG_ELSEIF": "இல்லைஆனால்", - "CONTROLS_IF_MSG_ELSE": "இல்லையெனில்", - "CONTROLS_IF_IF_TOOLTIP": "கட்டளைகளை தொகுப்பு திருத்துதம் செய்", - "CONTROLS_IF_ELSEIF_TOOLTIP": "ஆனால் தொகுப்பிற்கு நிபந்தனை சேர்க்க", - "CONTROLS_IF_ELSE_TOOLTIP": "ஆனால் தொகுப்பிற்கு விதிவிலக்கு காப்பை சேர்க்க", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "இரண்டு மாறியும் ஈடானால், மெய் பின்கொடு.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "இரண்டு மாறியும் ஈடாகாவிட்டால், மெய் பின்கொடு.", - "LOGIC_COMPARE_TOOLTIP_LT": "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக இருந்தால், மெய் பின்கொடு.", - "LOGIC_COMPARE_TOOLTIP_LTE": "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு", - "LOGIC_COMPARE_TOOLTIP_GT": "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக இருந்தால், மெய் பின்கொடு.", - "LOGIC_COMPARE_TOOLTIP_GTE": "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு.", - "LOGIC_OPERATION_TOOLTIP_AND": "இரண்டு மாறியும் மெய் ஆனால், மெய் பின்கொடு.", - "LOGIC_OPERATION_AND": "மற்றும்", - "LOGIC_OPERATION_TOOLTIP_OR": "ஏதேனும் ஒரு மதிப்பு மெய் ஆனால், மெய் பின்கொடு", - "LOGIC_OPERATION_OR": "அல்லது", - "LOGIC_NEGATE_TITLE": "%1 இல்லை", - "LOGIC_NEGATE_TOOLTIP": "மெய் ஆனால், பொய் பின்கொடு. பொய் ஆனால், மெய் பின்கொடு.", - "LOGIC_BOOLEAN_TRUE": "மெய்", - "LOGIC_BOOLEAN_FALSE": "பொய்", - "LOGIC_BOOLEAN_TOOLTIP": "மெய், அல்லது பொய் பின்கொடு.", - "LOGIC_NULL": "பூஜியம்", - "LOGIC_NULL_TOOLTIP": "பூஜியம் பின்கொடு", - "LOGIC_TERNARY_CONDITION": "சோதனை", - "LOGIC_TERNARY_IF_TRUE": "மெய்யெனில்", - "LOGIC_TERNARY_IF_FALSE": "பொய்யெனில்", - "LOGIC_TERNARY_TOOLTIP": "'test' உள்ள நிபந்தனையை சரிபார்க்கவும், நிபந்தனை மெய்யானால்,'if true'வை பின்கொடுக்கும் இல்லையெனில் 'if false'வை பின்கொடுக்கும்.", - "MATH_NUMBER_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D", - "MATH_NUMBER_TOOLTIP": "ஒரு எண்.", - "MATH_ARITHMETIC_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4%E0%AE%AE%E0%AF%8D", - "MATH_ARITHMETIC_TOOLTIP_ADD": "இரு எண்களின் கூட்டை பின்கொடு", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "இரு எண்களின் கழிப்பை பின்கொடு", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "இரு எண்களின் பெருக்கலை பின்கொடு", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "இரு எண்களின் வகுத்தல் பின்கொடு", - "MATH_ARITHMETIC_TOOLTIP_POWER": "முதல் உள்ளீடு இரண்டாவது எண் அளவான அடுக்கு பெருக்கை கணித்து பின்கொடு.", - "MATH_SINGLE_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%B5%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%AE%E0%AF%82%E0%AE%B2%E0%AE%AE%E0%AF%8D", - "MATH_SINGLE_OP_ROOT": "வர்க்கமூலம்", - "MATH_SINGLE_TOOLTIP_ROOT": "ஒரு எண்ணின் வர்க்கமூலத்தைத் தரும்.", - "MATH_SINGLE_OP_ABSOLUTE": "தனித்த", - "MATH_SINGLE_TOOLTIP_ABS": "ஒரு எண்ணின் தனித்த மதிப்பை பின்கொடு", - "MATH_SINGLE_TOOLTIP_NEG": "ஒரு எண்ணின் எதிர்மறை மதிப்பை பின்கொடு", - "MATH_SINGLE_TOOLTIP_LN": "ஒரு எண்ணின் (இயற்கை) மடக்கை மதிப்பை பின்கொடு.", - "MATH_SINGLE_TOOLTIP_LOG10": "ஒரு எண்ணின் (10) மடக்கை மதிப்பை பின்கொடு.", - "MATH_SINGLE_TOOLTIP_EXP": "e-இன் எண் அடுக்கு பெருக்கை பின்கொடு.", - "MATH_SINGLE_TOOLTIP_POW10": "10-இன் எண் அடுக்கு பெருக்கை பின்கொடு.", - "MATH_TRIG_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%AE%E0%AF%81%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%8B%E0%AE%A3%E0%AE%B5%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D_%E0%AE%9A%E0%AE%BE%E0%AE%B0%E0%AF%8D%E0%AE%AA%E0%AF%81%E0%AE%95%E0%AE%B3%E0%AF%8D", - "MATH_TRIG_TOOLTIP_SIN": "டிகிரீ சைன் மதிப்பை பின்கொடு.", - "MATH_TRIG_TOOLTIP_COS": "டிகிரீ கோசைன் மதிப்பை பின்கொடு", - "MATH_TRIG_TOOLTIP_TAN": "டிகிரீ டேஞ்சன்டு மதிப்பை பின்கொடு", - "MATH_TRIG_TOOLTIP_ASIN": "மதிப்பின் நேர்மாறு சைன் பின்கொடு", - "MATH_TRIG_TOOLTIP_ACOS": "மதிப்பின் நேர்மாறு கோசைன் பின்கொடு", - "MATH_TRIG_TOOLTIP_ATAN": "மதிப்பின் நேர்மாறு டேஞ்சன்டு பின்கொடு", - "MATH_CONSTANT_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4_%E0%AE%AE%E0%AE%BE%E0%AE%B1%E0%AE%BF%E0%AE%B2%E0%AE%BF", - "MATH_CONSTANT_TOOLTIP": "ஒரு மாறிலியை பின்கொடு π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (முடிவிலி).", - "MATH_IS_EVEN": "2-ஆல் பகும்", - "MATH_IS_ODD": "2-ஆல் பகாத", - "MATH_IS_PRIME": "எண் பகாத்தனிதானதா?", - "MATH_IS_WHOLE": "எண் முழுதானதா?", - "MATH_IS_POSITIVE": "எண் நேர்ம முழுதானதா ?", - "MATH_IS_NEGATIVE": "எண் குறைவானதா ?", - "MATH_IS_DIVISIBLE_BY": "ஆல் வகுபடக் கூடியது", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "மாற்று %1 மூலம் %2", - "MATH_CHANGE_TOOLTIP": "எண்னை '%1' மதிப்பால் கூட்டு,", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "மேல்/கீழ் வழி முழு எண் ஆக மாற்று.", - "MATH_ROUND_OPERATOR_ROUND": "முழுமையாக்கு", - "MATH_ROUND_OPERATOR_ROUNDUP": "மேல்வழி முழுமையாக்கு", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "கீழ்வழி முழுமையாக்கு", - "MATH_ONLIST_OPERATOR_SUM": "பட்டியலின் கூட்டு", - "MATH_ONLIST_TOOLTIP_SUM": "முழு பட்டியலின் எண் சமம் பின்கொடு,", - "MATH_ONLIST_OPERATOR_MIN": "பட்டியலின் கறைவு", - "MATH_ONLIST_TOOLTIP_MIN": "பட்டியலின் குறைவான எண் பின்கொடு", - "MATH_ONLIST_OPERATOR_MAX": "பட்டியலின் மிகுதி", - "MATH_ONLIST_TOOLTIP_MAX": "பட்டியலின் அதிகமான எண் பின்கொடு", - "MATH_ONLIST_OPERATOR_AVERAGE": "பட்டியலின் எண் சராசரி", - "MATH_ONLIST_TOOLTIP_AVERAGE": "முழு பட்டியலின் எண் சராசரி பின்கொடு", - "MATH_ONLIST_OPERATOR_MEDIAN": "பட்டியலின் நடுக்கோடு", - "MATH_ONLIST_TOOLTIP_MEDIAN": "பட்டியலின் நடுக்கோடு பின்கொடு", - "MATH_ONLIST_OPERATOR_MODE": "பட்டியலின் பொதுவகைகள்", - "MATH_ONLIST_TOOLTIP_MODE": "பட்டியலின் பொதுவகைகள் பின்கொடு", - "MATH_ONLIST_OPERATOR_STD_DEV": "பட்டியலின் நியமவிலகல்", - "MATH_ONLIST_TOOLTIP_STD_DEV": "பட்டியலின் நியமவிலகலை பின்கொடு.", - "MATH_ONLIST_OPERATOR_RANDOM": "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி", - "MATH_ONLIST_TOOLTIP_RANDOM": "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி பின்கொடு", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "%1 ÷ %2ன் மீதி", - "MATH_MODULO_TOOLTIP": "இரண்டு எண்கள் மூலம் பிரிவில் இருந்து எஞ்சியதை பின்கொடு.", - "MATH_CONSTRAIN_TITLE": "%1 மாறியை %2 மேலும் %3 கீழும் வற்புறுத்து", - "MATH_CONSTRAIN_TOOLTIP": "எண் மாறி வீசுகளம் உள்ளடங்கிய வாறு வற்புறுத்து", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "வீசுகளம் %1 இல் இருந்து %2 உள்ளடங்கிய வாறு சீரற்ற எண்", - "MATH_RANDOM_INT_TOOLTIP": "வீசுகளம் இல் இருந்த (உள்ளடங்கிய) வாறு சீரற்ற எண் பின்கொடு.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "சீரற்ற எண் பின்னம்", - "MATH_RANDOM_FLOAT_TOOLTIP": "சீரற்ற எண் பின்னம், 0.0 இல் இருந்து 1.0 உட்பட, பின்கொடு.", - "TEXT_TEXT_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%B0%E0%AE%AE%E0%AF%8D_%28%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A9%E0%AE%BF%E0%AE%AF%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D%29", - "TEXT_TEXT_TOOLTIP": "எழுத்து, சரம், சொல், அல்லது உரை சொற்தொடர்.", - "TEXT_JOIN_TITLE_CREATEWITH": "வைத்து உரை உருவாக்க", - "TEXT_JOIN_TOOLTIP": "பல பொருட்களை ஒன்றாக சேர்வதன் மூலம் உரை உருவாக்க.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "சேர்க்க", - "TEXT_CREATE_JOIN_TOOLTIP": "தொகுப்பு உரை திருத்துதம் செய்", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "உருபடியை உரையில் சேர்க்க.", - "TEXT_APPEND_TITLE": "இந்த மாறியிற்கு %1 உரை சேர்க்க %2", - "TEXT_APPEND_TOOLTIP": "'%1' மாறியில் உரையை சேர்", - "TEXT_LENGTH_TITLE": "%1ன் நீளம்", - "TEXT_LENGTH_TOOLTIP": "தொடரில் உள்ள எழுத்துக்களின் (இடைவெளிகளையும் சேர்த்து) எண்ணிகையை பின்கொடு.", - "TEXT_ISEMPTY_TITLE": "%1 காலியானது", - "TEXT_ISEMPTY_TOOLTIP": "காலியானது என்றால் மெய் மதிப்பை பின்கொடு", - "TEXT_INDEXOF_TOOLTIP": "இரண்டாவது உரையில் முதல் உரையின் முதல்/கடை இருக்கை குறிஎண்ணை பின்கொடு.", - "TEXT_INDEXOF_TITLE": "உரையில் %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "உரையில் முதல் தோற்ற இடத்தை பின்கொடு", - "TEXT_INDEXOF_OPERATOR_LAST": "உரையில் கடைசி தோற்ற இடத்தை பின்கொடு", - "TEXT_CHARAT_FROM_START": "# எழுத்தை எடு", - "TEXT_CHARAT_FROM_END": "முடிவில் இருந்து # எழுத்தை எடு", - "TEXT_CHARAT_FIRST": "முதல் எழுத்தைப் பெறுக", - "TEXT_CHARAT_LAST": "இறுதி எழுத்தைப் பெறுக", - "TEXT_CHARAT_RANDOM": "சமவாய்ப்புள்ள எழுத்தை எடு", - "TEXT_CHARAT_TOOLTIP": "கூறிய இடத்தில் உள்ள எழுத்தை எடு", - "TEXT_GET_SUBSTRING_TOOLTIP": "உரையின் குறியிடப்பட்ட சரம் பின்கொடு", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "உரையில்", - "TEXT_GET_SUBSTRING_START_FROM_START": "-இல் உட்கணம் # எழுத்திலிருந்து", - "TEXT_GET_SUBSTRING_START_FROM_END": "-இல் உட்கணம் கடைசி # எழுத்திலிருந்து", - "TEXT_GET_SUBSTRING_START_FIRST": "-இல் உட்கணம் முதல் எழுத்திலிருந்து", - "TEXT_GET_SUBSTRING_END_FROM_START": "எழுத்து # வரை", - "TEXT_GET_SUBSTRING_END_FROM_END": "எழுத்து கடைசியில் இருந்து # வரை", - "TEXT_GET_SUBSTRING_END_LAST": "கடைசி எழுத்து வரை", - "TEXT_CHANGECASE_TOOLTIP": "உரை நகல் எடுத்து பொரிய/சின்ன எழுத்து மாற்றி பின்கொடு.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "பொரிய எழுத்துக்கு மாற்று", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "சின்ன எழுத்துக்கு மாற்று", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "தலைப்பு எழுத்துக்கு மாற்று", - "TEXT_TRIM_TOOLTIP": "உரை நகல் எடுத்து இடைவெளி எழுத்து நீக்கி பின்கொடு.", - "TEXT_TRIM_OPERATOR_BOTH": "இரு பக்கத்திலும் இடைவெளி எழுத்து நேர்த்தி செய்.", - "TEXT_TRIM_OPERATOR_LEFT": "இடது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்.", - "TEXT_TRIM_OPERATOR_RIGHT": "வலது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்.", - "TEXT_PRINT_TITLE": "%1 அச்சிடுக", - "TEXT_PRINT_TOOLTIP": "மதிப்பை அச்சிடு", - "TEXT_PROMPT_TYPE_TEXT": "உரை கொண்டு உரை-உள்ளீடு தூண்டுதலை காட்டு", - "TEXT_PROMPT_TYPE_NUMBER": "உரை கொண்டு எண்-உள்ளீடு தூண்டுதலை காட்டு", - "TEXT_PROMPT_TOOLTIP_NUMBER": "எண்-உள்ளீடு தூண்டுதலை காட்டு", - "TEXT_PROMPT_TOOLTIP_TEXT": "உரை-உள்ளீடு தூண்டுதலை காட்டு", - "LISTS_CREATE_EMPTY_TITLE": "காலி பட்டியல் உருவாக்க", - "LISTS_CREATE_EMPTY_TOOLTIP": "காலி பட்டியல் பின்கொடு.", - "LISTS_CREATE_WITH_TOOLTIP": "இவ்வளவு உருப்படிகளை கொண்டு வேண்டுமாலும் ஒரு பட்டியலை உருவாக்கு.", - "LISTS_CREATE_WITH_INPUT_WITH": "வைத்து பட்டியல் உருவாக்க", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "பட்டியல்", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "கட்டளைகளை தொகுப்பு திருத்துதம் செய்", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "பட்டியலில் ஒரு பொருளை சேர்க்க.", - "LISTS_REPEAT_TOOLTIP": "கொடுக்க பட்ட மதிப்பை, கூறியுள்ள தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு", - "LISTS_REPEAT_TITLE": "உருப்படி %1-யை, %2 தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு", - "LISTS_LENGTH_TITLE": "%1 இன் நீளம்", - "LISTS_LENGTH_TOOLTIP": "பட்டியல் நீளம் பின்கொடு", - "LISTS_ISEMPTY_TITLE": "%1 காலியானது", - "LISTS_ISEMPTY_TOOLTIP": "பட்டியல் காலியானது மெய் பின்கொடு,", - "LISTS_INLIST": "பட்டியலில் உள்ள", - "LISTS_INDEX_OF_FIRST": "உரையில் முதல் தோற்ற இடத்தை காட்டு", - "LISTS_INDEX_OF_LAST": "உரையில் கடைசி தோற்ற இடத்தை காட்டு", - "LISTS_INDEX_OF_TOOLTIP": "பட்டியலில் மதிப்பின் முதல், கடைசி தோற்ற இடத்தை பின்கொடு. காணாவிட்டால் %1 பின்கொடு.", - "LISTS_GET_INDEX_GET": "எடு", - "LISTS_GET_INDEX_GET_REMOVE": "பெற்று நீக்குக", - "LISTS_GET_INDEX_REMOVE": "நீக்குக", - "LISTS_GET_INDEX_FROM_END": "கடைசியில் இருந்து #", - "LISTS_GET_INDEX_FIRST": "முதல்", - "LISTS_GET_INDEX_LAST": "கடைசி", - "LISTS_GET_INDEX_RANDOM": "ஏதோ ஒன்று", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 முதல் உருப்படி.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 கடைசி உருப்படி.ி", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "பட்டியலில் இடத்தில் உருப்படி பின்கொடு.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "பட்டியல் முதல் உருப்படியை பின்கொடு,", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "பட்டியல் கடைசி உருப்படியை பின்கொடு,", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "பட்டியல் சீரற்ற உருப்படியை பின்கொடு,", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கி பின்கொடு.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "பட்டியல் முதல் உருப்படியை நீக்கியபின் பின்கொடு,", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "பட்டியல் இறுதி உருப்படியை நீக்கியபின் பின்கொடு,", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "பட்டியல் சீரற்ற உருப்படியை நீக்கியபின் பின்கொடு,", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கு.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "பட்டியலில் முதல் உருப்படியை நீக்கு", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "பட்டியலில் கடைசி உருப்படியை நீக்கு", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "பட்டியல் சீரற்ற உருப்படியை நீக்கு,", - "LISTS_SET_INDEX_SET": "நியமி", - "LISTS_SET_INDEX_INSERT": "அவ்விடத்தில் நுழை", - "LISTS_SET_INDEX_INPUT_TO": "இதுபொல", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "பட்டியலில் கேட்ட இடத்தில் உருப்படியை வை.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "மதிப்பை பட்டியலில் முதல் உருப்படியில் வை", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "மதிப்பை பட்டியலில் கடைசி உருப்படியில் வை", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "மதிப்பை பட்டியலில் சீரற்ற உருப்படியில் வை", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "பட்டியலில் கேட்ட இடத்தில் உருப்படியை நுழை.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "மதிப்பை பட்டியலின் முதலில் நுழை", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "மதிப்பை பட்டியலின் முடிவில் நுழை", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "மதிப்பை பட்டியலின் சீற்ற இடத்தில் நுழை", - "LISTS_GET_SUBLIST_START_FROM_START": "பகுதி பட்டியலை # இடத்தில் இருந்து கொடு", - "LISTS_GET_SUBLIST_START_FROM_END": "# கடைசியில் இருந்து பகுதி பட்டியலை கொடு", - "LISTS_GET_SUBLIST_START_FIRST": "# முதலில் இருந்து பகுதி பட்டியலை கொடு", - "LISTS_GET_SUBLIST_END_FROM_START": "# வரை", - "LISTS_GET_SUBLIST_END_FROM_END": "முடிவில் இருந்து # வரை", - "LISTS_GET_SUBLIST_END_LAST": "முடிவு வரை", - "LISTS_GET_SUBLIST_TOOLTIP": "குறிப்பட்ட பகுதி பட்டியலின் நகலை கொடு", - "LISTS_SORT_ORDER_ASCENDING": "ஏறுவரிசை", - "LISTS_SORT_ORDER_DESCENDING": "இறங்குவரிசை", - "LISTS_SORT_TYPE_NUMERIC": "எண்வரிசை", - "LISTS_SORT_TYPE_TEXT": "அகரவரிசை", - "LISTS_SPLIT_LIST_FROM_TEXT": "உரையில் இருந்து பட்டியல் உருவாக்கு", - "LISTS_SPLIT_TEXT_FROM_LIST": "பட்டியலில் இருந்து உரை உருவாக்கு", - "LISTS_SPLIT_WITH_DELIMITER": "தடை எழுத்து", - "LISTS_SPLIT_TOOLTIP_SPLIT": "உரையை வரம்புச் சுட்டி கொண்டு துண்டாக்கு.", - "LISTS_SPLIT_TOOLTIP_JOIN": "வரம்புச் சுட்டியை இடையில் இட்டு, உரைதுண்டுகளை ஒன்று சேர்", - "VARIABLES_GET_TOOLTIP": "இந்த மாறி மதிப்பை பின்கொடு", - "VARIABLES_GET_CREATE_SET": "'%1 நியமி' உருவாக்கு", - "VARIABLES_SET": "நியமி %1 இந்த மாறியிற்கு %2", - "VARIABLES_SET_TOOLTIP": "மாறியின் மதிப்பாய் உள்ளீட்டு மதிப்பை வை.", - "VARIABLES_SET_CREATE_GET": "'எடு %1' உருவாக்கு", - "PROCEDURES_DEFNORETURN_TITLE": "இந்த மாறியிற்கு", - "PROCEDURES_DEFNORETURN_PROCEDURE": "கட்டளைகள் செய்ய (இடம்காட்டி)", - "PROCEDURES_BEFORE_PARAMS": "இத்துடன்", - "PROCEDURES_CALL_BEFORE_PARAMS": "இத்துடன்:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "வெளியீடு இல்லாத ஒரு செயல்பாடு உருவாக்குகிறது", - "PROCEDURES_DEFRETURN_RETURN": "பின்கொடு", - "PROCEDURES_DEFRETURN_TOOLTIP": "வெளியீடு உள்ள ஒரு செயல்பாடு உருவாக்குகிறது", - "PROCEDURES_ALLOW_STATEMENTS": "வாக்குமூலங்களை அனுமதிக்கவும்", - "PROCEDURES_DEF_DUPLICATE_WARNING": "எச்சரிக்கை: இந்த செயற்கூறில் போலியான அளபுருக்கள் உண்டு.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "பயனரின் '%1' செயற்கூற்றை ஓட்டு.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "பயனரின் '%1' செயற்கூற்றை ஓட்டி வரும் வெளியீட்டை பயன்படுத்து.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "உள்ளீடுகள்", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "செயல்கூறுகளின் உள்ளீட்டை சேர், நீக்கு, or மீண்டும் வரிசை செய்.", - "PROCEDURES_MUTATORARG_TITLE": "பெயரை உள்ளிடுக:", - "PROCEDURES_MUTATORARG_TOOLTIP": "செயல்கூறுக்கு ஒரு உள்ளீட்டை சேர்.", - "PROCEDURES_HIGHLIGHT_DEF": "நிரல்பாகத்தை விளக்கமாக காட்டு", - "PROCEDURES_CREATE_DO": "'%1' உருவாக்குக", - "PROCEDURES_IFRETURN_TOOLTIP": "மதிப்பு உண்மையானால், இரண்டாவது மதிப்பை பின்கொடு.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "ஏதாகினும் பகர்க...", - "DIALOG_OK": "சரி", - "DIALOG_CANCEL": "இரத்து செய்" -} +{ + "@metadata": { + "authors": [ + "Aswn", + "ElangoRamanujam", + "Ezhillang", + "Karuthan", + "Mahir78", + "Thangamani-arun" + ] + }, + "VARIABLES_DEFAULT_NAME": "உருப்படி", + "UNNAMED_KEY": "பெயரிடப்படாதது", + "TODAY": "இன்று", + "DUPLICATE_BLOCK": "மறுநகல்", + "ADD_COMMENT": "கருத்தை சேர்", + "REMOVE_COMMENT": "கருத்தை நீக்கு", + "EXTERNAL_INPUTS": "வெளி கருவிகளுடன் உள்ளீடு", + "INLINE_INPUTS": "சூழமைவில் உள்ளீடு", + "DELETE_BLOCK": "உறுப்பை நீக்கு", + "DELETE_X_BLOCKS": "%1 உறுப்பை நீக்கு", + "DELETE_ALL_BLOCKS": "அனைத்து %1 நிரல் துண்டுகளையும் அழிக்கவா??", + "COLLAPSE_BLOCK": "உறுப்பை மரை", + "COLLAPSE_ALL": "உறுப்புகளை மரை", + "EXPAND_BLOCK": "உறுப்பை காட்டு", + "EXPAND_ALL": "உறுப்புகளை காட்டு", + "DISABLE_BLOCK": "உறுப்பை இயங்காது செய்", + "ENABLE_BLOCK": "உறுப்பை இயங்குமாரு செய்", + "HELP": "உதவி", + "UNDO": "மீளமை", + "REDO": "மீண்டும் செய்", + "CHANGE_VALUE_TITLE": "மதிப்பை மாற்றவும்:", + "RENAME_VARIABLE": "மாறிலியை மறுபெயரிடுக...", + "RENAME_VARIABLE_TITLE": "அனைத்து '%1' மாறிலிகளையும் பின்வருமாறு மறுபெயரிடுக:", + "NEW_VARIABLE": "மாறிலியை உருவாக்குக...", + "NEW_VARIABLE_TYPE_TITLE": "புதிய மாறிலியின் பெயர்:", + "NEW_VARIABLE_TITLE": "புதிய மாறிலியின் பெயர்:", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "வண்ண தட்டிலிருந்து ஒரு நிறத்தைத் தேர்ந்தெடுக்கவும்.", + "COLOUR_RANDOM_TITLE": "தற்போக்கு நிறம்", + "COLOUR_RANDOM_TOOLTIP": "தற்போக்கில் ஒரு நிறத்தை தேர்ந்தெடுக்கவும்.", + "COLOUR_RGB_TITLE": "நிறத்துடன்", + "COLOUR_RGB_RED": "சிகப்பு", + "COLOUR_RGB_GREEN": "பச்சை", + "COLOUR_RGB_BLUE": "நீலம்", + "COLOUR_RGB_TOOLTIP": "குறிப்பிட்ட அளவு சிவப்பு,பச்சை மற்றும் நீலம் சேர்த்து புது நிறம் உருவாக்கு. மதிப்புகள் 0 முதல் 100 வரை மட்டுமே இருக்க வேண்டும்.", + "COLOUR_BLEND_TITLE": "கலப்பு (வண்ணம்)", + "COLOUR_BLEND_COLOUR1": "நிறம் 1", + "COLOUR_BLEND_COLOUR2": "நிறம் 2", + "COLOUR_BLEND_RATIO": "விகிதம்", + "COLOUR_BLEND_TOOLTIP": "கொடுக்கப்பட்ட விகதத்தில் (0.0 - 1.0) இரு நிறங்களை கலக்குக.", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "'%1' முரை திரும்ப செய்", + "CONTROLS_REPEAT_INPUT_DO": "செய்க", + "CONTROLS_REPEAT_TOOLTIP": "கட்டளைகளை பல முரை செய்ய", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "பலமுரை திரும்ப செய் (வரை)", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "பலமுரை திரும்ப செய் (முடயேனில்)", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "மாறி பொய் ஆக உள்ள வரை, கட்டளைகளை இயக்கு", + "CONTROLS_FOR_TOOLTIP": "முதல் எண்ணில் இருந்து கடை எண் வரை எடுத்துக்கொள்ள ஒரு மாறியை வைத்துக்கொள், குறித்த இடைவெளியை சேர்த்தவறே தொகுதிகளை செயலாக்கு.", + "CONTROLS_FOR_TITLE": "மாறியை வைத்து எண்ண %1 %2 இல் இருந்து %3 வரை %4-இன் படியாக", + "CONTROLS_FOREACH_TITLE": "உருப்படி ஒவ்வொன்றாக %1 பட்டியலில் உள்ள %2", + "CONTROLS_FOREACH_TOOLTIP": "பட்டியலில் உள்ள உருப்படியில் ஒவ்வொன்றாக, மாறியின் பொருள் '%1' ஆக வைக்க.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "மடக்கு கட்டளையை நிறுத்து.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "மடக்கு கட்டளையின் அடுத்த இயக்கநிலைக்கு செல்", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "மடக்கு கட்டளையின் இயக்கத்தில் இருந்து நிறுத்து.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "மடக்கு கட்டளையின் மீதியை விட்டுவிட்டு அடுத்த இயக்கநிலைக்கு செல்", + "CONTROLS_FLOW_STATEMENTS_WARNING": "எச்சரிக்கை : மடக்கு கூற்றில் இந்த தொகுதி ஒரு முறை மட்டுமே செயல்படுத்தப் படலாம்.", + "CONTROLS_IF_TOOLTIP_1": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு", + "CONTROLS_IF_TOOLTIP_2": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை இயக்கு.", + "CONTROLS_IF_TOOLTIP_3": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு.", + "CONTROLS_IF_TOOLTIP_4": "மாறி உண்மை ஆக உள்ள வரை, கட்டளைகளை தொகுப்பு இயக்கு. அல்லது மற்ற (அடுத்த) கட்டளைகளை தொகுப்பு இயக்கு. இரண்டும் இல்லை என்றால் கடைசி தொகுப்பு இயக்கு.", + "CONTROLS_IF_MSG_IF": "எனில்", + "CONTROLS_IF_MSG_ELSEIF": "இல்லைஆனால்", + "CONTROLS_IF_MSG_ELSE": "இல்லையெனில்", + "CONTROLS_IF_IF_TOOLTIP": "கட்டளைகளை தொகுப்பு திருத்துதம் செய்", + "CONTROLS_IF_ELSEIF_TOOLTIP": "ஆனால் தொகுப்பிற்கு நிபந்தனை சேர்க்க", + "CONTROLS_IF_ELSE_TOOLTIP": "ஆனால் தொகுப்பிற்கு விதிவிலக்கு காப்பை சேர்க்க", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "இரண்டு மாறியும் ஈடானால், மெய் பின்கொடு.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "இரண்டு மாறியும் ஈடாகாவிட்டால், மெய் பின்கொடு.", + "LOGIC_COMPARE_TOOLTIP_LT": "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக இருந்தால், மெய் பின்கொடு.", + "LOGIC_COMPARE_TOOLTIP_LTE": "முதல் உள்ளீடு இரண்டாவதைவிட குறைவாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு", + "LOGIC_COMPARE_TOOLTIP_GT": "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக இருந்தால், மெய் பின்கொடு.", + "LOGIC_COMPARE_TOOLTIP_GTE": "முதல் உள்ளீடு இரண்டாவதைவிட அதிகமாக அல்ல சமமாக இருந்தால், மெய் பின்கொடு.", + "LOGIC_OPERATION_TOOLTIP_AND": "இரண்டு மாறியும் மெய் ஆனால், மெய் பின்கொடு.", + "LOGIC_OPERATION_AND": "மற்றும்", + "LOGIC_OPERATION_TOOLTIP_OR": "ஏதேனும் ஒரு மதிப்பு மெய் ஆனால், மெய் பின்கொடு", + "LOGIC_OPERATION_OR": "அல்லது", + "LOGIC_NEGATE_TITLE": "%1 இல்லை", + "LOGIC_NEGATE_TOOLTIP": "மெய் ஆனால், பொய் பின்கொடு. பொய் ஆனால், மெய் பின்கொடு.", + "LOGIC_BOOLEAN_TRUE": "மெய்", + "LOGIC_BOOLEAN_FALSE": "பொய்", + "LOGIC_BOOLEAN_TOOLTIP": "மெய், அல்லது பொய் பின்கொடு.", + "LOGIC_NULL": "பூஜியம்", + "LOGIC_NULL_TOOLTIP": "பூஜியம் பின்கொடு", + "LOGIC_TERNARY_CONDITION": "சோதனை", + "LOGIC_TERNARY_IF_TRUE": "மெய்யெனில்", + "LOGIC_TERNARY_IF_FALSE": "பொய்யெனில்", + "LOGIC_TERNARY_TOOLTIP": "'test' உள்ள நிபந்தனையை சரிபார்க்கவும், நிபந்தனை மெய்யானால்,'if true'வை பின்கொடுக்கும் இல்லையெனில் 'if false'வை பின்கொடுக்கும்.", + "MATH_NUMBER_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D", + "MATH_NUMBER_TOOLTIP": "ஒரு எண்.", + "MATH_ARITHMETIC_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%8E%E0%AE%A3%E0%AF%8D%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4%E0%AE%AE%E0%AF%8D", + "MATH_ARITHMETIC_TOOLTIP_ADD": "இரு எண்களின் கூட்டை பின்கொடு", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "இரு எண்களின் கழிப்பை பின்கொடு", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "இரு எண்களின் பெருக்கலை பின்கொடு", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "இரு எண்களின் வகுத்தல் பின்கொடு", + "MATH_ARITHMETIC_TOOLTIP_POWER": "முதல் உள்ளீடு இரண்டாவது எண் அளவான அடுக்கு பெருக்கை கணித்து பின்கொடு.", + "MATH_SINGLE_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%B5%E0%AE%B0%E0%AF%8D%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%AE%E0%AF%82%E0%AE%B2%E0%AE%AE%E0%AF%8D", + "MATH_SINGLE_OP_ROOT": "வர்க்கமூலம்", + "MATH_SINGLE_TOOLTIP_ROOT": "ஒரு எண்ணின் வர்க்கமூலத்தைத் தரும்.", + "MATH_SINGLE_OP_ABSOLUTE": "தனித்த", + "MATH_SINGLE_TOOLTIP_ABS": "ஒரு எண்ணின் தனித்த மதிப்பை பின்கொடு", + "MATH_SINGLE_TOOLTIP_NEG": "ஒரு எண்ணின் எதிர்மறை மதிப்பை பின்கொடு", + "MATH_SINGLE_TOOLTIP_LN": "ஒரு எண்ணின் (இயற்கை) மடக்கை மதிப்பை பின்கொடு.", + "MATH_SINGLE_TOOLTIP_LOG10": "ஒரு எண்ணின் (10) மடக்கை மதிப்பை பின்கொடு.", + "MATH_SINGLE_TOOLTIP_EXP": "e-இன் எண் அடுக்கு பெருக்கை பின்கொடு.", + "MATH_SINGLE_TOOLTIP_POW10": "10-இன் எண் அடுக்கு பெருக்கை பின்கொடு.", + "MATH_TRIG_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%AE%E0%AF%81%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%8B%E0%AE%A3%E0%AE%B5%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D_%E0%AE%9A%E0%AE%BE%E0%AE%B0%E0%AF%8D%E0%AE%AA%E0%AF%81%E0%AE%95%E0%AE%B3%E0%AF%8D", + "MATH_TRIG_TOOLTIP_SIN": "டிகிரீ சைன் மதிப்பை பின்கொடு.", + "MATH_TRIG_TOOLTIP_COS": "டிகிரீ கோசைன் மதிப்பை பின்கொடு", + "MATH_TRIG_TOOLTIP_TAN": "டிகிரீ டேஞ்சன்டு மதிப்பை பின்கொடு", + "MATH_TRIG_TOOLTIP_ASIN": "மதிப்பின் நேர்மாறு சைன் பின்கொடு", + "MATH_TRIG_TOOLTIP_ACOS": "மதிப்பின் நேர்மாறு கோசைன் பின்கொடு", + "MATH_TRIG_TOOLTIP_ATAN": "மதிப்பின் நேர்மாறு டேஞ்சன்டு பின்கொடு", + "MATH_CONSTANT_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A4_%E0%AE%AE%E0%AE%BE%E0%AE%B1%E0%AE%BF%E0%AE%B2%E0%AE%BF", + "MATH_CONSTANT_TOOLTIP": "ஒரு மாறிலியை பின்கொடு π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (முடிவிலி).", + "MATH_IS_EVEN": "2-ஆல் பகும்", + "MATH_IS_ODD": "2-ஆல் பகாத", + "MATH_IS_PRIME": "எண் பகாத்தனிதானதா?", + "MATH_IS_WHOLE": "எண் முழுதானதா?", + "MATH_IS_POSITIVE": "எண் நேர்ம முழுதானதா ?", + "MATH_IS_NEGATIVE": "எண் குறைவானதா ?", + "MATH_IS_DIVISIBLE_BY": "ஆல் வகுபடக் கூடியது", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "மாற்று %1 மூலம் %2", + "MATH_CHANGE_TOOLTIP": "எண்னை '%1' மதிப்பால் கூட்டு,", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "மேல்/கீழ் வழி முழு எண் ஆக மாற்று.", + "MATH_ROUND_OPERATOR_ROUND": "முழுமையாக்கு", + "MATH_ROUND_OPERATOR_ROUNDUP": "மேல்வழி முழுமையாக்கு", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "கீழ்வழி முழுமையாக்கு", + "MATH_ONLIST_OPERATOR_SUM": "பட்டியலின் கூட்டு", + "MATH_ONLIST_TOOLTIP_SUM": "முழு பட்டியலின் எண் சமம் பின்கொடு,", + "MATH_ONLIST_OPERATOR_MIN": "பட்டியலின் கறைவு", + "MATH_ONLIST_TOOLTIP_MIN": "பட்டியலின் குறைவான எண் பின்கொடு", + "MATH_ONLIST_OPERATOR_MAX": "பட்டியலின் மிகுதி", + "MATH_ONLIST_TOOLTIP_MAX": "பட்டியலின் அதிகமான எண் பின்கொடு", + "MATH_ONLIST_OPERATOR_AVERAGE": "பட்டியலின் எண் சராசரி", + "MATH_ONLIST_TOOLTIP_AVERAGE": "முழு பட்டியலின் எண் சராசரி பின்கொடு", + "MATH_ONLIST_OPERATOR_MEDIAN": "பட்டியலின் நடுக்கோடு", + "MATH_ONLIST_TOOLTIP_MEDIAN": "பட்டியலின் நடுக்கோடு பின்கொடு", + "MATH_ONLIST_OPERATOR_MODE": "பட்டியலின் பொதுவகைகள்", + "MATH_ONLIST_TOOLTIP_MODE": "பட்டியலின் பொதுவகைகள் பின்கொடு", + "MATH_ONLIST_OPERATOR_STD_DEV": "பட்டியலின் நியமவிலகல்", + "MATH_ONLIST_TOOLTIP_STD_DEV": "பட்டியலின் நியமவிலகலை பின்கொடு.", + "MATH_ONLIST_OPERATOR_RANDOM": "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி", + "MATH_ONLIST_TOOLTIP_RANDOM": "ஒரு பட்டியலில் இருந்து சீரற்ற உருப்படி பின்கொடு", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "%1 ÷ %2ன் மீதி", + "MATH_MODULO_TOOLTIP": "இரண்டு எண்கள் மூலம் பிரிவில் இருந்து எஞ்சியதை பின்கொடு.", + "MATH_CONSTRAIN_TITLE": "%1 மாறியை %2 மேலும் %3 கீழும் வற்புறுத்து", + "MATH_CONSTRAIN_TOOLTIP": "எண் மாறி வீசுகளம் உள்ளடங்கிய வாறு வற்புறுத்து", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "வீசுகளம் %1 இல் இருந்து %2 உள்ளடங்கிய வாறு சீரற்ற எண்", + "MATH_RANDOM_INT_TOOLTIP": "வீசுகளம் இல் இருந்த (உள்ளடங்கிய) வாறு சீரற்ற எண் பின்கொடு.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "சீரற்ற எண் பின்னம்", + "MATH_RANDOM_FLOAT_TOOLTIP": "சீரற்ற எண் பின்னம், 0.0 இல் இருந்து 1.0 உட்பட, பின்கொடு.", + "TEXT_TEXT_HELPURL": "https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%B0%E0%AE%AE%E0%AF%8D_%28%E0%AE%95%E0%AE%A3%E0%AE%BF%E0%AE%A9%E0%AE%BF%E0%AE%AF%E0%AE%BF%E0%AE%AF%E0%AE%B2%E0%AF%8D%29", + "TEXT_TEXT_TOOLTIP": "எழுத்து, சரம், சொல், அல்லது உரை சொற்தொடர்.", + "TEXT_JOIN_TITLE_CREATEWITH": "வைத்து உரை உருவாக்க", + "TEXT_JOIN_TOOLTIP": "பல பொருட்களை ஒன்றாக சேர்வதன் மூலம் உரை உருவாக்க.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "சேர்க்க", + "TEXT_CREATE_JOIN_TOOLTIP": "தொகுப்பு உரை திருத்துதம் செய்", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "உருபடியை உரையில் சேர்க்க.", + "TEXT_APPEND_TITLE": "இந்த மாறியிற்கு %1 உரை சேர்க்க %2", + "TEXT_APPEND_TOOLTIP": "'%1' மாறியில் உரையை சேர்", + "TEXT_LENGTH_TITLE": "%1ன் நீளம்", + "TEXT_LENGTH_TOOLTIP": "தொடரில் உள்ள எழுத்துக்களின் (இடைவெளிகளையும் சேர்த்து) எண்ணிகையை பின்கொடு.", + "TEXT_ISEMPTY_TITLE": "%1 காலியானது", + "TEXT_ISEMPTY_TOOLTIP": "காலியானது என்றால் மெய் மதிப்பை பின்கொடு", + "TEXT_INDEXOF_TOOLTIP": "இரண்டாவது உரையில் முதல் உரையின் முதல்/கடை இருக்கை குறிஎண்ணை பின்கொடு.", + "TEXT_INDEXOF_TITLE": "உரையில் %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "உரையில் முதல் தோற்ற இடத்தை பின்கொடு", + "TEXT_INDEXOF_OPERATOR_LAST": "உரையில் கடைசி தோற்ற இடத்தை பின்கொடு", + "TEXT_CHARAT_FROM_START": "# எழுத்தை எடு", + "TEXT_CHARAT_FROM_END": "முடிவில் இருந்து # எழுத்தை எடு", + "TEXT_CHARAT_FIRST": "முதல் எழுத்தைப் பெறுக", + "TEXT_CHARAT_LAST": "இறுதி எழுத்தைப் பெறுக", + "TEXT_CHARAT_RANDOM": "சமவாய்ப்புள்ள எழுத்தை எடு", + "TEXT_CHARAT_TOOLTIP": "கூறிய இடத்தில் உள்ள எழுத்தை எடு", + "TEXT_GET_SUBSTRING_TOOLTIP": "உரையின் குறியிடப்பட்ட சரம் பின்கொடு", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "உரையில்", + "TEXT_GET_SUBSTRING_START_FROM_START": "-இல் உட்கணம் # எழுத்திலிருந்து", + "TEXT_GET_SUBSTRING_START_FROM_END": "-இல் உட்கணம் கடைசி # எழுத்திலிருந்து", + "TEXT_GET_SUBSTRING_START_FIRST": "-இல் உட்கணம் முதல் எழுத்திலிருந்து", + "TEXT_GET_SUBSTRING_END_FROM_START": "எழுத்து # வரை", + "TEXT_GET_SUBSTRING_END_FROM_END": "எழுத்து கடைசியில் இருந்து # வரை", + "TEXT_GET_SUBSTRING_END_LAST": "கடைசி எழுத்து வரை", + "TEXT_CHANGECASE_TOOLTIP": "உரை நகல் எடுத்து பொரிய/சின்ன எழுத்து மாற்றி பின்கொடு.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "பொரிய எழுத்துக்கு மாற்று", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "சின்ன எழுத்துக்கு மாற்று", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "தலைப்பு எழுத்துக்கு மாற்று", + "TEXT_TRIM_TOOLTIP": "உரை நகல் எடுத்து இடைவெளி எழுத்து நீக்கி பின்கொடு.", + "TEXT_TRIM_OPERATOR_BOTH": "இரு பக்கத்திலும் இடைவெளி எழுத்து நேர்த்தி செய்.", + "TEXT_TRIM_OPERATOR_LEFT": "இடது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்.", + "TEXT_TRIM_OPERATOR_RIGHT": "வலது பக்கத்தில் இடைவெளி எழுத்து நேர்த்தி செய்.", + "TEXT_PRINT_TITLE": "%1 அச்சிடுக", + "TEXT_PRINT_TOOLTIP": "மதிப்பை அச்சிடு", + "TEXT_PROMPT_TYPE_TEXT": "உரை கொண்டு உரை-உள்ளீடு தூண்டுதலை காட்டு", + "TEXT_PROMPT_TYPE_NUMBER": "உரை கொண்டு எண்-உள்ளீடு தூண்டுதலை காட்டு", + "TEXT_PROMPT_TOOLTIP_NUMBER": "எண்-உள்ளீடு தூண்டுதலை காட்டு", + "TEXT_PROMPT_TOOLTIP_TEXT": "உரை-உள்ளீடு தூண்டுதலை காட்டு", + "LISTS_CREATE_EMPTY_TITLE": "காலி பட்டியல் உருவாக்க", + "LISTS_CREATE_EMPTY_TOOLTIP": "காலி பட்டியல் பின்கொடு.", + "LISTS_CREATE_WITH_TOOLTIP": "இவ்வளவு உருப்படிகளை கொண்டு வேண்டுமாலும் ஒரு பட்டியலை உருவாக்கு.", + "LISTS_CREATE_WITH_INPUT_WITH": "வைத்து பட்டியல் உருவாக்க", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "பட்டியல்", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "கட்டளைகளை தொகுப்பு திருத்துதம் செய்", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "பட்டியலில் ஒரு பொருளை சேர்க்க.", + "LISTS_REPEAT_TOOLTIP": "கொடுக்க பட்ட மதிப்பை, கூறியுள்ள தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு", + "LISTS_REPEAT_TITLE": "உருப்படி %1-யை, %2 தடவைகள் உள்ளவாறு ஒரு பட்டியலை உருவாக்கு", + "LISTS_LENGTH_TITLE": "%1 இன் நீளம்", + "LISTS_LENGTH_TOOLTIP": "பட்டியல் நீளம் பின்கொடு", + "LISTS_ISEMPTY_TITLE": "%1 காலியானது", + "LISTS_ISEMPTY_TOOLTIP": "பட்டியல் காலியானது மெய் பின்கொடு,", + "LISTS_INLIST": "பட்டியலில் உள்ள", + "LISTS_INDEX_OF_FIRST": "உரையில் முதல் தோற்ற இடத்தை காட்டு", + "LISTS_INDEX_OF_LAST": "உரையில் கடைசி தோற்ற இடத்தை காட்டு", + "LISTS_INDEX_OF_TOOLTIP": "பட்டியலில் மதிப்பின் முதல், கடைசி தோற்ற இடத்தை பின்கொடு. காணாவிட்டால் %1 பின்கொடு.", + "LISTS_GET_INDEX_GET": "எடு", + "LISTS_GET_INDEX_GET_REMOVE": "பெற்று நீக்குக", + "LISTS_GET_INDEX_REMOVE": "நீக்குக", + "LISTS_GET_INDEX_FROM_END": "கடைசியில் இருந்து #", + "LISTS_GET_INDEX_FIRST": "முதல்", + "LISTS_GET_INDEX_LAST": "கடைசி", + "LISTS_GET_INDEX_RANDOM": "ஏதோ ஒன்று", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 முதல் உருப்படி.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 கடைசி உருப்படி.ி", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "பட்டியலில் இடத்தில் உருப்படி பின்கொடு.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "பட்டியல் முதல் உருப்படியை பின்கொடு,", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "பட்டியல் கடைசி உருப்படியை பின்கொடு,", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "பட்டியல் சீரற்ற உருப்படியை பின்கொடு,", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கி பின்கொடு.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "பட்டியல் முதல் உருப்படியை நீக்கியபின் பின்கொடு,", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "பட்டியல் இறுதி உருப்படியை நீக்கியபின் பின்கொடு,", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "பட்டியல் சீரற்ற உருப்படியை நீக்கியபின் பின்கொடு,", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "பட்டியலில் கேட்ட இடத்தின் உருப்படி நீக்கு.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "பட்டியலில் முதல் உருப்படியை நீக்கு", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "பட்டியலில் கடைசி உருப்படியை நீக்கு", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "பட்டியல் சீரற்ற உருப்படியை நீக்கு,", + "LISTS_SET_INDEX_SET": "நியமி", + "LISTS_SET_INDEX_INSERT": "அவ்விடத்தில் நுழை", + "LISTS_SET_INDEX_INPUT_TO": "இதுபொல", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "பட்டியலில் கேட்ட இடத்தில் உருப்படியை வை.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "மதிப்பை பட்டியலில் முதல் உருப்படியில் வை", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "மதிப்பை பட்டியலில் கடைசி உருப்படியில் வை", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "மதிப்பை பட்டியலில் சீரற்ற உருப்படியில் வை", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "பட்டியலில் கேட்ட இடத்தில் உருப்படியை நுழை.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "மதிப்பை பட்டியலின் முதலில் நுழை", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "மதிப்பை பட்டியலின் முடிவில் நுழை", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "மதிப்பை பட்டியலின் சீற்ற இடத்தில் நுழை", + "LISTS_GET_SUBLIST_START_FROM_START": "பகுதி பட்டியலை # இடத்தில் இருந்து கொடு", + "LISTS_GET_SUBLIST_START_FROM_END": "# கடைசியில் இருந்து பகுதி பட்டியலை கொடு", + "LISTS_GET_SUBLIST_START_FIRST": "# முதலில் இருந்து பகுதி பட்டியலை கொடு", + "LISTS_GET_SUBLIST_END_FROM_START": "# வரை", + "LISTS_GET_SUBLIST_END_FROM_END": "முடிவில் இருந்து # வரை", + "LISTS_GET_SUBLIST_END_LAST": "முடிவு வரை", + "LISTS_GET_SUBLIST_TOOLTIP": "குறிப்பட்ட பகுதி பட்டியலின் நகலை கொடு", + "LISTS_SORT_ORDER_ASCENDING": "ஏறுவரிசை", + "LISTS_SORT_ORDER_DESCENDING": "இறங்குவரிசை", + "LISTS_SORT_TYPE_NUMERIC": "எண்வரிசை", + "LISTS_SORT_TYPE_TEXT": "அகரவரிசை", + "LISTS_SPLIT_LIST_FROM_TEXT": "உரையில் இருந்து பட்டியல் உருவாக்கு", + "LISTS_SPLIT_TEXT_FROM_LIST": "பட்டியலில் இருந்து உரை உருவாக்கு", + "LISTS_SPLIT_WITH_DELIMITER": "தடை எழுத்து", + "LISTS_SPLIT_TOOLTIP_SPLIT": "உரையை வரம்புச் சுட்டி கொண்டு துண்டாக்கு.", + "LISTS_SPLIT_TOOLTIP_JOIN": "வரம்புச் சுட்டியை இடையில் இட்டு, உரைதுண்டுகளை ஒன்று சேர்", + "VARIABLES_GET_TOOLTIP": "இந்த மாறி மதிப்பை பின்கொடு", + "VARIABLES_GET_CREATE_SET": "'%1 நியமி' உருவாக்கு", + "VARIABLES_SET": "நியமி %1 இந்த மாறியிற்கு %2", + "VARIABLES_SET_TOOLTIP": "மாறியின் மதிப்பாய் உள்ளீட்டு மதிப்பை வை.", + "VARIABLES_SET_CREATE_GET": "'எடு %1' உருவாக்கு", + "PROCEDURES_DEFNORETURN_TITLE": "இந்த மாறியிற்கு", + "PROCEDURES_DEFNORETURN_PROCEDURE": "கட்டளைகள் செய்ய (இடம்காட்டி)", + "PROCEDURES_BEFORE_PARAMS": "இத்துடன்", + "PROCEDURES_CALL_BEFORE_PARAMS": "இத்துடன்:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "வெளியீடு இல்லாத ஒரு செயல்பாடு உருவாக்குகிறது", + "PROCEDURES_DEFRETURN_RETURN": "பின்கொடு", + "PROCEDURES_DEFRETURN_TOOLTIP": "வெளியீடு உள்ள ஒரு செயல்பாடு உருவாக்குகிறது", + "PROCEDURES_ALLOW_STATEMENTS": "வாக்குமூலங்களை அனுமதிக்கவும்", + "PROCEDURES_DEF_DUPLICATE_WARNING": "எச்சரிக்கை: இந்த செயற்கூறில் போலியான அளபுருக்கள் உண்டு.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "பயனரின் '%1' செயற்கூற்றை ஓட்டு.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "பயனரின் '%1' செயற்கூற்றை ஓட்டி வரும் வெளியீட்டை பயன்படுத்து.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "உள்ளீடுகள்", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "செயல்கூறுகளின் உள்ளீட்டை சேர், நீக்கு, or மீண்டும் வரிசை செய்.", + "PROCEDURES_MUTATORARG_TITLE": "பெயரை உள்ளிடுக:", + "PROCEDURES_MUTATORARG_TOOLTIP": "செயல்கூறுக்கு ஒரு உள்ளீட்டை சேர்.", + "PROCEDURES_HIGHLIGHT_DEF": "நிரல்பாகத்தை விளக்கமாக காட்டு", + "PROCEDURES_CREATE_DO": "'%1' உருவாக்குக", + "PROCEDURES_IFRETURN_TOOLTIP": "மதிப்பு உண்மையானால், இரண்டாவது மதிப்பை பின்கொடு.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "ஏதாகினும் பகர்க...", + "DIALOG_OK": "சரி", + "DIALOG_CANCEL": "இரத்து செய்" +} diff --git a/msg/json/tcy.json b/msg/json/tcy.json index a5ed486f442..e6f9a4b7f0a 100644 --- a/msg/json/tcy.json +++ b/msg/json/tcy.json @@ -1,320 +1,320 @@ -{ - "@metadata": { - "authors": [ - "BHARATHESHA ALASANDEMAJALU", - "Bharathesha Alasandemajalu", - "Chidananda Kampa", - "Kiranpoojary", - "Ravi Mundkur", - "Vishwanatha Badikana" - ] - }, - "VARIABLES_DEFAULT_NAME": "ವಸ್ತು", - "UNNAMED_KEY": "ಪುದರ್ ಇಜ್ಜಂತಿನವು", - "TODAY": "ಇನಿ", - "DUPLICATE_BLOCK": "ನಕಲ್", - "ADD_COMMENT": "ಟಿಪ್ಪಣಿ ಸೇರ್ಸಲೆ", - "REMOVE_COMMENT": "ಟಿಪ್ಪಣಿನ್ ದೆತ್ತ್‌ದ್ ಬುಡ್ಲೆ", - "EXTERNAL_INPUTS": "ಪಿದಯಿದ ಪರಿಪು", - "INLINE_INPUTS": "ಉಳಸಾಲ್‍ದ ಉಳಪರಿಪು", - "DELETE_BLOCK": "ಬ್ಲಾಕ್‍ನ್ ಮಾಜಾವು", - "DELETE_X_BLOCKS": "%1 ಬ್ಲಾಕ್‍ಲೆನ್ ಮಾಜಾವು", - "DELETE_ALL_BLOCKS": "ಮಾತ %1 ಬ್ಲಾಕ್‍ಲೆನ್ ದೆತ್ತ್‌ದ್ ಬುಡೊಡೆ?", - "CLEAN_UP": "ಬ್ಲಾಕ್‍ಲೆನ್ ಸ್ವೊಚ್ಚೊ ಮಲ್ಪುಲೆ", - "COLLAPSE_BLOCK": "ಎಲ್ಯೆ ಮಲ್ತ್‌ದ್ ತಡೆಲೆ", - "COLLAPSE_ALL": "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಎಲ್ಯ ಮಲ್ಪು", - "EXPAND_BLOCK": "ಬ್ಲಾಕ್‍ದ ಮಾಹಿತಿನ್ ಪರಡಾವು", - "EXPAND_ALL": "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಪರಡಾವು", - "DISABLE_BLOCK": "ಬ್ಲಾಕ್‍ನ್ ದೆತ್ತ್‌ಪಾಡ್", - "ENABLE_BLOCK": "ತಡೆನ್ ಸಕ್ರಿಯೊ ಮಲ್ಪು", - "HELP": "ಸಹಾಯೊ", - "UNDO": "ದುಂಬುದಲೆಕೊ", - "REDO": "ಕುಡ ಮಲ್ಪು", - "CHANGE_VALUE_TITLE": "ಮೌಲ್ಯೊನು ಬದಲ್ ಮಲ್ಪು", - "RENAME_VARIABLE": "ವ್ಯತ್ಯಯೊಗು ಕುಡೊರ ಪುದರ್ ದೀಲೆ", - "RENAME_VARIABLE_TITLE": "ಮಾತಾ '%1' ವ್ಯತ್ಯಯೊಲೆನ ಪುದರ್‌ನ್ ನೆಕ್ಕ್ ಬದಲ್ ಮಲ್ಪುಲೆ:", - "NEW_VARIABLE": "ವ್ಯತ್ಯಯೊನು ಉಂಡು ಮಲ್ಪುಲೆ", - "NEW_VARIABLE_TITLE": "ಪೊಸ ವ್ಯತ್ಯಯೊದ ಪುದರ್:", - "VARIABLE_ALREADY_EXISTS": "'%1' ಪನ್ಪಿ ಪುದರ್‌ದ ವ್ಯತ್ಯಯೊ ದುಂಬೆ ಅಸ್ತಿತ್ವೊಡು ಉಂಡು.", - "DELETE_VARIABLE_CONFIRMATION": "'%2' ವ್ಯತ್ಯಯೊದ %1 ಉಪಯೋಗೊಲೆನ್ ಮಾಜಾವೊಡೆ?", - "DELETE_VARIABLE": "'%1' ವ್ಯತ್ಯಯೊನು ಮಾಜಾಲೆ", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/ಬಣ್ಣೊ", - "COLOUR_PICKER_TOOLTIP": "ಬಣ್ಣೊ ಪಟೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ.", - "COLOUR_RANDOM_TITLE": "ಒವ್ವೇ ಒಂಜಿ ಬಣ್ಣೊ", - "COLOUR_RANDOM_TOOLTIP": "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ", - "COLOUR_RGB_TITLE": "ಬಣ್ಣೊದ", - "COLOUR_RGB_RED": "ಕೆಂಪು", - "COLOUR_RGB_GREEN": "ಪಚ್ಚೆ", - "COLOUR_RGB_BLUE": "ನೀಲಿ", - "COLOUR_RGB_TOOLTIP": "ತೊಜಪಾಯಿನ ಪ್ರಮಾಣೊದ ಕೆಂಪು, ಪಚ್ಚೆ ಬೊಕ್ಕ ನೀಲಿ ಬಣ್ಣೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಉಂಡು ಮಲ್ಪುಲೆ. ಮಾತಾ ಮೌಲ್ಯೊಲು 0 ಬುಕ್ಕೊ 100 ತ ನಡುಟೆ ಇಪ್ಪೊಡು.", - "COLOUR_BLEND_TITLE": "ಬೆರಕ್ಕೆ ಮಲ್ಪು", - "COLOUR_BLEND_COLOUR1": "ಬಣ್ಣೊ ೧(ಒಂಜಿ)", - "COLOUR_BLEND_COLOUR2": "ಬಣ್ಣೊ ೨(ರಡ್ಡ್)", - "COLOUR_BLEND_RATIO": "ಅನುಪಾತೊ", - "COLOUR_BLEND_TOOLTIP": "ಕೊರಿನ ಅನುಪಾತೊಡು (0.0- 1.0) ರಡ್ಡ್ ಬಣ್ಣೊಲೆನ್ ಬೆರಕೆ ಮಲ್ಪುಂಡು.", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": " %1 ಸರ್ತಿ ಕೂಡೊರ ಮಲ್ಪು", - "CONTROLS_REPEAT_INPUT_DO": "ಮಲ್ಪುಲೆ", - "CONTROLS_REPEAT_TOOLTIP": "ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಸ್ತ್ ಸರ್ತಿ ಮಲ್ಪು", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ಉಂದು ನಿಜ ಆಂಡ ಕುಡೊರ ಮಲ್ಪು:", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ಉಂದು ನಿಜ ಆಪಿಲೆಕೊ ಕುಡೊರ ಮಲ್ಪು:", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ಮೌಲ್ಯ ತಪ್ಪು ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು", - "CONTROLS_FOR_TOOLTIP": "ನಿರ್ದಿಸ್ಟೊ ಮದ್ಯಂತರೊದ ಮೂಲಕೊ ದೆತೊಂದು '%1' ವ್ಯತ್ಯಯೊಡ್ ಸುರುತ್ತ ಅಂಕೆಡ್ದ್ ಕಡೆತ್ತ ಅಂಕೆ ಮುಟ್ಟದ ಮೌಲ್ಯೊನು ದೆತ್ತೊನಾವ್ ಬೊಕ್ಕ ನಿಗಂಟ್ ಮಲ್ತಿನ ತಡೆಕ್ಲೆನ್ ಮಲ್ಪು", - "CONTROLS_FOR_TITLE": "%2 ಡ್ದ್ %3 ಮುಟ %4 ಸರ್ತಿ %1 ದ ಒಟ್ಟುಗು ಗೆನ್ಪು", - "CONTROLS_FOREACH_TITLE": "%2 ಪಟ್ಟಿಡ್ ಪ್ರತಿ ಒಂಜಿ ವಿಸಯ %1 ಗ್", - "CONTROLS_FOREACH_TOOLTIP": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಪ್ರತಿ ವಿಸಯೊಗು, '%1' ವ್ಯತ್ಯಾಯೊನು ವಿಸಯೊಗು ಜೋಡಾಲೆ, ಬೊಕ್ಕ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪುಲೆ.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ಲೂಪ್ ಕಡಿಯುನಿ", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ಬೊಕ್ಕದ ಲೂಪ್ ಪುನರಾವರ್ತನೆದೊಟ್ಟುಗು ದುಂಬರಿಲೆ", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ಇತ್ತಿನ ಲೂಪ್‍ಡ್ದ್ ಪದಿಯಿ ಬಲೆ", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ಈ ಲೂಪುನು ಅರ್ದೊಡೆ ಬುಡುದ್ ಬೊಕ್ಕ ನನತ್ತ ಪುನರಾವರ್ತನೆಗ್ ದುಂಬರಿಲೆ", - "CONTROLS_FLOW_STATEMENTS_WARNING": "ಎಚ್ಚರೊ: ಈ ತಡೆನ್ ಕಾಲಿ ಒಂಜಿ ಲೂಪುದುಲಯಿ ಮಾತ್ರ ಗಳಸೊಲಿ.", - "CONTROLS_IF_TOOLTIP_1": "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು", - "CONTROLS_IF_TOOLTIP_2": "ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು.", - "CONTROLS_IF_TOOLTIP_3": "ಸುರುತ್ತ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು.", - "CONTROLS_IF_TOOLTIP_4": "ಸುರುತ್ತ ಮೌಲ್ಯೊ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆದ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು. ಒಂಜೇಲೆ ಒವ್ವೇ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತಿಜಿಂಡ, ಪಾತೆರೊಲೆನ ಕಡೆತ್ತ ತಡೆ ಮಲ್ಪು.", - "CONTROLS_IF_MSG_IF": "ಒಂಜಿ ವೇಲೆ", - "CONTROLS_IF_MSG_ELSEIF": "ಅತ್ತಂಡ", - "CONTROLS_IF_MSG_ELSE": "ಅತ್ತಂಡ", - "CONTROLS_IF_IF_TOOLTIP": "ಸೇರಾವ್, ದೆತ್ತ್‌ ಬುಡು, ಅತ್ತಂಡ ಈ 'ಒಂಜಿ ವೇಲೆ' ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಶರ್ತನ್ ಸೇರಾವ್", - "CONTROLS_IF_ELSE_TOOLTIP": "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಕಡೆತ್ತ ಮಾತೆನ್ಲಾ-ಪತ್ತ್ (catch-all) ಶರ್ತನ್ ಸೇರಾವ್", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು", - "LOGIC_COMPARE_TOOLTIP_NEQ": "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಅತ್ತಾಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು", - "LOGIC_COMPARE_TOOLTIP_LT": "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", - "LOGIC_COMPARE_TOOLTIP_LTE": "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", - "LOGIC_COMPARE_TOOLTIP_GT": "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", - "LOGIC_COMPARE_TOOLTIP_GTE": "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", - "LOGIC_OPERATION_TOOLTIP_AND": "ರಡ್ಡ್‌ಲಾ ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", - "LOGIC_OPERATION_AND": "ಬುಕ್ಕೊ", - "LOGIC_OPERATION_TOOLTIP_OR": "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಇನ್‌ಪುಟ್ ನಿಜ ಆಂಡಲಾ, 'ನಿಜ'ನ್ ಪಿರಕೊರು.", - "LOGIC_OPERATION_OR": "ಅತ್ತಂಡ", - "LOGIC_NEGATE_TITLE": "%1 ಅತ್ತ್", - "LOGIC_NEGATE_TOOLTIP": "ಇನ್‌ಪುಟ್ ಸುಲ್ಲಾದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು. ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ಸುಲ್ಲು'ನ್ ಪಿರಕೊರು.", - "LOGIC_BOOLEAN_TRUE": "ಸತ್ಯೊ", - "LOGIC_BOOLEAN_FALSE": "ಸುಲ್ಲು", - "LOGIC_BOOLEAN_TOOLTIP": "ಒಂಜೆ ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನ್ ಪಿರಕೊರು", - "LOGIC_NULL": "ಸೊನ್ನೆ", - "LOGIC_NULL_TOOLTIP": "ಸೊನ್ನೆನ್ ಪಿರಕೊರ್ಪುಂಡು", - "LOGIC_TERNARY_CONDITION": "ಪರೀಕ್ಷೆ", - "LOGIC_TERNARY_IF_TRUE": "ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ", - "LOGIC_TERNARY_IF_FALSE": "ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ", - "LOGIC_TERNARY_TOOLTIP": "'ಪರೀಕ್ಷೆ'ಡ್ ಶರ್ತನ್ ಸರಿತೂಲೆ. ಶರ್ತ ನಿಜವಾದಿತ್ತ್ಂಡ, 'ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು; ಇಜ್ಜಿಂಡ 'ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/ಸಂಖ್ಯೆ", - "MATH_NUMBER_TOOLTIP": "ಅ ನಂಬ್ರೊ.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/ಅಂಕಗಣಿತ", - "MATH_ARITHMETIC_TOOLTIP_ADD": "ರಡ್ಡ್ ಸಂಖ್ಯೆದ ಮೊತ್ತನ್ ಪಿರಕೊರು.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "ರಡ್ಡ ಸ್ಂಖ್ಯೆದ ವ್ಯತ್ಯಾಸೊನು ಪಿರಕೊರು.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "ಸಂಖ್ಯೆದ ಗುಣಲಬ್ಧೊನು ಪಿರಕೊರು.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "ಸಂಖ್ಯೆದ ಭಾಗಲಬ್ದೊನು ಪಿರಕೊರು.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "ಸುರುತ್ತ ಸಂಖ್ಯೆದ ಘಾತೊನು ರಡ್ಡನೆ ಸಂಖ್ಯೆಗ್ ಏರ್ಪಾದ್ ಪಿರಕೊರು.", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ", - "MATH_SINGLE_OP_ROOT": "ವರ್ಗಮೂಲೊ", - "MATH_SINGLE_TOOLTIP_ROOT": "ಸಂಖ್ಯೆದ ವರ್ಗಮೂಲೊನು ಪಿರಕೊರು.", - "MATH_SINGLE_OP_ABSOLUTE": "ಸಂಪೂರ್ನೊ", - "MATH_SINGLE_TOOLTIP_ABS": "ಸಂಖ್ಯೆದ ಸರಿಯಾಯಿನ ಮೌಲ್ಯೊನು ಕೊರು", - "MATH_SINGLE_TOOLTIP_NEG": "ಸಂಖ್ಯೆದ ನಿಷೇಧೊನು ಪಿರಕೊರು", - "MATH_SINGLE_TOOLTIP_LN": "ಸಂಖ್ಯೆದ ಪ್ರಾಕೃತಿಕ ಲಘುಗಣಕನ್ ಪಿರಕೊರು", - "MATH_SINGLE_TOOLTIP_LOG10": "ಸಂಖ್ಯೆದ ದಶಮಾನ ಲಘುಗಣಕನ್ ಪಿರಕೊರು", - "MATH_SINGLE_TOOLTIP_EXP": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು 'e'ನ್ ಪಿರಕೊರು.", - "MATH_SINGLE_TOOLTIP_POW10": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು ೧೦ನ್ ಪಿರಕೊರು", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/ತ್ರಿಕೋನಮಿತಿದ_ಕಾರ್ಯೊಲು", - "MATH_TRIG_TOOLTIP_SIN": "ಒಂಜಿ ಡಿಗ್ರಿದ ಸೈನ್ (sine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್).", - "MATH_TRIG_TOOLTIP_COS": "ಒಂಜಿ ಡಿಗ್ರಿದ ಕೊಸೈನ್ (cosine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್).", - "MATH_TRIG_TOOLTIP_TAN": "ಒಂಜಿ ಡಿಗ್ರಿದ ಟ್ಯಾನ್‌ಜೆಂಟ್ (tangent) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್).", - "MATH_TRIG_TOOLTIP_ASIN": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಸೈನ್ ಪಿರಕೊರು.", - "MATH_TRIG_TOOLTIP_ACOS": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌‌ಕೊಸೈನ್ ಪಿರಕೊರು.", - "MATH_TRIG_TOOLTIP_ATAN": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಟ್ಯಾನ್‌ಜ್ಂಟ್ ಪಿರಕೊರು.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/ಗಣಿತ_ನಿರಂತರ", - "MATH_CONSTANT_TOOLTIP": "ಒಂಜಿ ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕೊನು ಪಿರಕೊರು: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", - "MATH_IS_EVEN": "ಸಮ ಸಂಖ್ಯೆ", - "MATH_IS_ODD": "ಬೆಸ ಸಂಖ್ಯೆ", - "MATH_IS_PRIME": "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆ", - "MATH_IS_WHOLE": "ಪೂರ್ಣ ಸಂಖ್ಯೆ", - "MATH_IS_POSITIVE": "ಧನ ಸಂಖ್ಯೆ", - "MATH_IS_NEGATIVE": "ಋಣ ಸಂಖ್ಯೆ", - "MATH_IS_DIVISIBLE_BY": "ಭಾಗಿಪೊಲಿ", - "MATH_IS_TOOLTIP": "ಒಂಜಿ ಸಂಖ್ಯೆ ಸಮನಾ, ಬೆಸನಾ, ಅವಿಭಾಜ್ಯನಾ, ಪೂರ್ಣನಾ, ಧನನಾ, ಋಣನಾ, ಅತ್ತಂಡ ಅವೆನ್ ಬೇತೆ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಡ್ದ್ ಭಾಗಿಪೊಲಿಯಾ ಪಂದ್ ಪರೀಕ್ಷೆ ಮಲ್ಪು. ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನು ಪಿರಕೊರ್ಪುಂಡು.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "%1 ನ್ %2 ಟ್ ಬದಲ್ ಮಲ್ಪು", - "MATH_CHANGE_TOOLTIP": "'%1' ವ್ಯತ್ಯಯೊಗು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಸೇರಾವ್", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/ಪೂರ್ಣಾಂಕೊ", - "MATH_ROUND_TOOLTIP": "ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಮಿತ್ತ್‌ಗ್ ಅತ್ತಂಡ ತಿರ್ತ್‌ಗ್ ರೌಂಡ್ ಮಲ್ಪು", - "MATH_ROUND_OPERATOR_ROUND": "ರೌಂಡ್", - "MATH_ROUND_OPERATOR_ROUNDUP": "ಮಿತ್ತ್‌ಗ್ ರೌಂಡ್", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "ತಿರ್ತ್‌ಗ್ ರೌಂಡ್", - "MATH_ONLIST_OPERATOR_SUM": "ಪಟ್ಟಿದ ಮೊತ್ತ", - "MATH_ONLIST_TOOLTIP_SUM": "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಮೊತ್ತನ್ ಪಿರಕೊರು", - "MATH_ONLIST_OPERATOR_MIN": "ಪಟ್ಟಿಡ್ ಕಿಞ್ಞವ್", - "MATH_ONLIST_TOOLTIP_MIN": "ಪಟ್ಟಿಡುಪ್ಪುನ ಕಿಞ್ಞ ಸಂಕ್ಯೆನ್ ಪಿರಕೊರು", - "MATH_ONLIST_OPERATOR_MAX": "ಪಟ್ಟಿಡ್ ಮಲ್ಲವ್", - "MATH_ONLIST_TOOLTIP_MAX": "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಲ್ಲ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು", - "MATH_ONLIST_OPERATOR_AVERAGE": "ಪಟ್ಟಿದ ಸರಾಸರಿ", - "MATH_ONLIST_TOOLTIP_AVERAGE": "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಸರಾಸರಿನ್ ಪಿರಕೊರು", - "MATH_ONLIST_OPERATOR_MEDIAN": "ಪಟ್ಟಿದ ನಡುತ್ತವ್", - "MATH_ONLIST_TOOLTIP_MEDIAN": "ಪಟ್ಟಿಡುಪ್ಪುನ ನಡುತ್ತ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು", - "MATH_ONLIST_OPERATOR_MODE": "ಪಟ್ಟಿದ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ಮೌಲ್ಯ", - "MATH_ONLIST_TOOLTIP_MODE": "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ವಿಷಯೊನು ಪಿರಕೊರು", - "MATH_ONLIST_OPERATOR_STD_DEV": "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನ", - "MATH_ONLIST_TOOLTIP_STD_DEV": "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನೊನು ಪಿರಕೊರು", - "MATH_ONLIST_OPERATOR_RANDOM": "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಷಯ", - "MATH_ONLIST_TOOLTIP_RANDOM": "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಂಶೊನು ಪಿರಕೊರು.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/ಮೋಡ್ಯುಲೊ_ಒಪರೇಶನ್", - "MATH_MODULO_TITLE": " %1 ÷ %2 ತ ಶೇಷ", - "MATH_MODULO_TOOLTIP": "ರಡ್ಡ್ ಸಂಖ್ಯೆಲೆನ್ ಭಾಗ ಮಲ್ತ್‌ದ್ ಶೇಷೊನು ಪಿರಕೊರು.", - "MATH_CONSTRAIN_TITLE": "%2 ಕಮ್ಮಿ %3 ಜಾಸ್ತಿ %1 ನಿರ್ಬಂಧ ಮಲ್ಪು", - "MATH_CONSTRAIN_TOOLTIP": "ನಿಗದಿತ ಮಿತಿತ ನಡುಟು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ನಿರ್ಬಂಧ ಮಲ್ಪು", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್", - "MATH_RANDOM_INT_TITLE": " %1 ಡ್ದ್ %2 ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊ", - "MATH_RANDOM_INT_TOOLTIP": "ರಡ್ಡ್ ನಿಗದಿತ ಮಿತಿತ ನಡುತ್ತ ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊನು ಪಿರಕೊರು", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿ", - "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (ಸೇರ್‌ದ್) ಬೊಕ್ಕ 1.0 (ಸೇರಂದೆ) ನಡುತ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿನ್ ಪಿರಕೊರು.", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/ಸ್ಟ್ರಿಂಗ್_(ಕಂಪ್ಯೂಟರ್_ಸೈನ್ಸ್)", - "TEXT_TEXT_TOOLTIP": "ಒಂಜಿ ಅಕ್ಷರೊ, ಪದೊ ಅತ್ತಂಡ ಪಾಟೊದ ಒಂಜಿ ಸಾಲ್", - "TEXT_JOIN_TITLE_CREATEWITH": "ನೆಡ್ದ್ ಪಟ್ಯೊನು ಉಂಡು ಮಲ್ಪು", - "TEXT_JOIN_TOOLTIP": "ಏತಾಂಡಲ ವಿಷಯಲೆನ್ ಒಟ್ಟುಗು ಸೇರಾದ್ ಒಂಜಿ ಪಟ್ಯೊದ ತುಂಡುನು ಉಂಡುಮಲ್ಪು.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "ಸೇರಾವ್", - "TEXT_CREATE_JOIN_TOOLTIP": "ಈ ಪಠ್ಯ ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ, ಸೇರಾವ್, ದೆತ್ತ್ ಬುಡು, ಅತ್ತಂಡ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪು.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "ಪಟ್ಯೊಗು ಒಂಜಿ ವಿಷಯೊನು ಸೇರಾವ್", - "TEXT_APPEND_TITLE": "ಇಂದೆಕ್ %1 ಪಟ್ಯೊನು ಸೇರವೆ %2", - "TEXT_APPEND_TOOLTIP": "%1 ವ್ಯತ್ಯಯೊಗು ಕೆಲವು ಪಟ್ಯೊಲೆನ್ ಸೇರಾವ್", - "TEXT_LENGTH_TITLE": "%1 ಉದ್ದೊ", - "TEXT_LENGTH_TOOLTIP": "ಕೊರಿನ ಪಟ್ಯೊದ ಅಕ್ಷರೊಲೆನ (ಅಂತರೊಲು ಸೇರ್‌ದ್) ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು.", - "TEXT_ISEMPTY_TITLE": "%1 ಖಾಲಿ", - "TEXT_ISEMPTY_TOOLTIP": "ಕೊರಿನ ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು.", - "TEXT_INDEXOF_TOOLTIP": "ರಡ್ಡನೆ ಪಟ್ಯೊಡು ಉಪ್ಪುನ ಸುರುತ ಪಟ್ಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರು. ಪಟ್ಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರು.", - "TEXT_INDEXOF_TITLE": "ಪಟ್ಯೊಡು %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "ಪಟ್ಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್", - "TEXT_INDEXOF_OPERATOR_LAST": "ಪಟ್ಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್", - "TEXT_CHARAT_TITLE": "%1 %2 ಪದೊಟ್ಟು", - "TEXT_CHARAT_FROM_START": "ಅಕ್ಸರೊ #ನ್ ದೆತ್ತೊನು", - "TEXT_CHARAT_FROM_END": "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ನ್ ದೆತ್ತೊನು", - "TEXT_CHARAT_FIRST": "ಸುರುತ್ತ ಅಕ್ಷರೊನು ದೆತ್ತೊನು", - "TEXT_CHARAT_LAST": "ಅಕೇರಿದ ಅಕ್ಷರೊನು ದೆತ್ತೊನು", - "TEXT_CHARAT_RANDOM": "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಕ್ಷರೊನು ದೆತ್ತೊನು", - "TEXT_CHARAT_TOOLTIP": "ಅಕ್ಷರೊನು ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ಪಿರಕೊರ್ಪುಂಡು.", - "TEXT_GET_SUBSTRING_TOOLTIP": "ಪಟ್ಯೊದ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಬಾಗೊನು ಪಿರಕೊರ್ಪುಂಡು.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ಪಟ್ಯೊಡು", - "TEXT_GET_SUBSTRING_START_FROM_START": "ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊ ದೆತ್ತೊನು", - "TEXT_GET_SUBSTRING_START_FROM_END": "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು", - "TEXT_GET_SUBSTRING_START_FIRST": "ಸುರುತ್ತ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು", - "TEXT_GET_SUBSTRING_END_FROM_START": "ಅಕ್ಷರೊ #ಗು", - "TEXT_GET_SUBSTRING_END_FROM_END": "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಗು", - "TEXT_GET_SUBSTRING_END_LAST": "ಅಕೇರಿದ ಅಕ್ಷರೊಗು", - "TEXT_CHANGECASE_TOOLTIP": "ಪಟ್ಯೊದ ಒಂಜಿ ನಕಲ್‍ನ್ ಬೇತೆ ನಮೂನೆಡ್ (case) ಪಿರಕೊರು.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "ಮಲ್ಲ ಅಕ್ಷರೊಗು", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "ಎಲ್ಯ ಅಕ್ಷರೊಗು", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "ತರೆಬರವುದ ಅಕ್ಷರೊಗು", - "TEXT_TRIM_TOOLTIP": "ಒಂಜಿ ಅತ್ತಂಡ ರಡ್ಡ್ ಕೊಡಿಡ್ದ್ ಅಂತರೊಲೆನ್ (space) ದೆತ್ತ್‌ದ್ ಪಟ್ಯೊದ ಪ್ರತಿನ್ ಪಿರಕೊರು.", - "TEXT_TRIM_OPERATOR_BOTH": "ರಡ್ಡ್ ಮೆಯಿತ್ತಲ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್.", - "TEXT_TRIM_OPERATOR_LEFT": "ಎಡತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್.", - "TEXT_TRIM_OPERATOR_RIGHT": "ಬಲತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್.", - "TEXT_PRINT_TITLE": "%1 ಮುದ್ರಣ", - "TEXT_PRINT_TOOLTIP": "ನಿರ್ದಿಷ್ಟ ಪಟ್ಯೊ, ಸಂಖ್ಯೆ ಅತ್ತಂಡ ಬೇತೆ ಮೌಲ್ಯೊನು ಮುದ್ರಿಪುಲೆ.", - "TEXT_PROMPT_TYPE_TEXT": "ಸಂದೇಶೊದೊಟ್ಟುಗು ಪಟ್ಯೊಗು ಕೇನ್.", - "TEXT_PROMPT_TYPE_NUMBER": "ಸಂದೇಶೊದೊಟ್ಟುಗು ಸಂಕ್ಯೆನ್ ಕೇನ್", - "TEXT_PROMPT_TOOLTIP_NUMBER": "ಒಂಜಿ ಸಂಖ್ಯೆಗ್ ಸದಸ್ಯೆರೆನ್ ಕೇನ್", - "TEXT_PROMPT_TOOLTIP_TEXT": "ಕೆಲವು ಪಟ್ಯೊಗು ಸದಸ್ಯೆರೆನ್ ಕೇನ್.", - "LISTS_CREATE_EMPTY_TITLE": "ಕಾಲಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ", - "LISTS_CREATE_EMPTY_TOOLTIP": "ಒಂಜಿ ಪಟ್ಟಿ, ೦ ಉದ್ದೊದ, ಒವ್ವೇ ಮಾಹಿತಿ ದಾಂತಿನ ದಾಖಲೆ ಪಿರಕೊರು.", - "LISTS_CREATE_WITH_TOOLTIP": "ಏತೇ ವಿಸಯೊಲುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ", - "LISTS_CREATE_WITH_INPUT_WITH": "ಒಟ್ಟುಗು ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ಪಟ್ಟಿ", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "ಈ ಪಟ್ಟಿ ತಡೆನ್ ಕುಡ ಸಂರಚನೆ ಮಲ್ಪೆರೆ ಸೇರಾಲೆ, ದೆತ್ತ್ ಬುಡುಲೆ, ಅತ್ತಂಡ ವಿಬಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "ಪಟ್ಟಿಗ್ ಒಂಜಿ ವಿಸಯೊನು ಸೇರಾಲೆ.", - "LISTS_REPEAT_TOOLTIP": "ಕೊರಿನ ಮೌಲ್ಯೊ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಕ್ಯೆದಾತ್ ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ.", - "LISTS_REPEAT_TITLE": "%1 ವಿಸಯೊ %2 ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ.", - "LISTS_LENGTH_TITLE": "%1 ಉದ್ದೊ", - "LISTS_LENGTH_TOOLTIP": "ಪಟ್ಟಿದ ಉದ್ದೊನು ಪಿರಕೊರು.", - "LISTS_ISEMPTY_TITLE": "%1 ಕಾಲಿ", - "LISTS_ISEMPTY_TOOLTIP": "ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು.", - "LISTS_INLIST": "ಪಟ್ಟಿಡ್", - "LISTS_INDEX_OF_FIRST": "ವಿಸಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್", - "LISTS_INDEX_OF_LAST": "ವಿಸಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್", - "LISTS_INDEX_OF_TOOLTIP": "ಪಟ್ಟಿಡುಪ್ಪುನ ವಿಸಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರ್ಪುಂಡು. ವಿಸಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರ್ಪುಂಡು.", - "LISTS_GET_INDEX_GET": "ದೆತೊನು", - "LISTS_GET_INDEX_GET_REMOVE": "ದೆತ್ತೊನು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡು", - "LISTS_GET_INDEX_REMOVE": "ದೆಪ್ಪುಲೆ", - "LISTS_GET_INDEX_FROM_END": "ಅಕೇರಿಡ್ದ್ #", - "LISTS_GET_INDEX_FIRST": "ಸುರುತ", - "LISTS_GET_INDEX_LAST": "ಕಡೆತ", - "LISTS_GET_INDEX_RANDOM": "ಒವ್ವಾಂಡಲ", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ಸುರುತ ವಿಸಯೊ", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ಅಕೇರಿತ ವಿಸಯೊ", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", - "LISTS_SET_INDEX_SET": "ಸೆಟ್ ಮಲ್ಪು", - "LISTS_SET_INDEX_INSERT": "ಸೇರಾವ್", - "LISTS_SET_INDEX_INPUT_TO": "ಲೆಕ", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "ಒಂಜಿ ಪಟ್ಟಿದ ಸುರುಕ್ಕು ವಿಸಯೊನು ಸೇರಾವುಂಡು.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "ಒಂಜಿ ಪಟ್ಟಿದ ಅಕೇರಿಗ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಓಲಾಂಡಲ ವಿಸಯೊನು ಸೇರಾವುಂಡು.", - "LISTS_GET_SUBLIST_START_FROM_START": "# ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು", - "LISTS_GET_SUBLIST_START_FROM_END": "ಅಕೇರಿಡ್ದ್ # ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು", - "LISTS_GET_SUBLIST_START_FIRST": "ಸುರುಡ್ದು ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು", - "LISTS_GET_SUBLIST_END_FROM_START": "# ಗ್", - "LISTS_GET_SUBLIST_END_FROM_END": "ಅಕೇರಿಡ್ದ್ # ಗ್", - "LISTS_GET_SUBLIST_END_LAST": "ಅಕೇರಿಗ್", - "LISTS_GET_SUBLIST_TOOLTIP": "ಪಟ್ಯೊದ ನಿರ್ದಿಷ್ಟ ಬಾಗೊದ ಪ್ರತಿನ್ ಉಂಡುಮಲ್ಪುಂಡು.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "%1 %2 %3 ಇಂಗಡಿಪು", - "LISTS_SORT_TOOLTIP": "ಒಂಜಿ ಪಟ್ಟಿದ ಒಂಜಿ ಪ್ರತಿನ್ ಇಂಗಡಿಪು", - "LISTS_SORT_ORDER_ASCENDING": "ಏರುನು", - "LISTS_SORT_ORDER_DESCENDING": "ಜಪ್ಪುನು", - "LISTS_SORT_TYPE_NUMERIC": "ಸಂಖ್ಯೆ", - "LISTS_SORT_TYPE_TEXT": "ಅಕ್ಷರೊ", - "LISTS_SORT_TYPE_IGNORECASE": "ಅಕ್ಷರೊ, ನಮೂನೆ (case) ಅಲಕ್ಷ್ಯೊ ಮಲ್ಪುಲೆ", - "LISTS_SPLIT_LIST_FROM_TEXT": "ಪಟ್ಯೊಲೆ ಪಟ್ಟಿನ್ ತಯಾರ್ ಮಲ್ಪುಲೆ", - "LISTS_SPLIT_TEXT_FROM_LIST": "ಪಟ್ಟಿದ ಪಟ್ಯೊನು ತಯಾರ್ ಮಲ್ಪುಲೆ", - "LISTS_SPLIT_WITH_DELIMITER": "ಮಿತಿಸೂಚಕೊದ ಒಟ್ಟುಗು", - "LISTS_SPLIT_TOOLTIP_SPLIT": "ಪಟ್ಯೊಲೆನ್ ಪ್ರತಿ ಮಿತಿಸೂಚಕೊಡು ತುಂಡು ಮಲ್ತ್‌ದ್ ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿಗ್ ಬಾಗೊ ಮಲ್ಪುಲೆ.", - "LISTS_SPLIT_TOOLTIP_JOIN": "ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಮಿತಿಸೂಚಕೊದ ಮೂಲಕೊ ಬೇತೆ ಮಲ್ತ್‌ದ್ ಒಂಜಿ ಪಟ್ಯೊಗು ಸೇರಾಲೆ.", - "VARIABLES_GET_TOOLTIP": "ಈ ವ್ಯತ್ಯಯೊದ ಮೌಲ್ಯೊನು ಪಿರಕೊರು.", - "VARIABLES_GET_CREATE_SET": "'ಸೆಟ್ %1' ಉಂಡುಮಲ್ಪುಲೆ", - "VARIABLES_SET": "%1 ನ್ %2 ಕ್ಕ್ ಸೆಟ್ ಮಲ್ಪುಲೆ", - "VARIABLES_SET_TOOLTIP": "ಈ ವ್ಯತ್ಯಯೊನು ಇನ್‌ಪುಟ್‌ಗ್ ಸಮ ಆಪಿಲೆಕ ಸೆಟ್ ಮಲ್ಪುಂಡು.", - "VARIABLES_SET_CREATE_GET": "'ದೆತ್ತೊನು %1' ಉಂಡುಮಲ್ಪುಲೆ", - "PROCEDURES_DEFNORETURN_TITLE": "ಇಂದೆಕ್", - "PROCEDURES_DEFNORETURN_PROCEDURE": "ಎಂಚಿನಾಂಡಲ ಮಲ್ಪುಲೆ", - "PROCEDURES_BEFORE_PARAMS": "ಒಟ್ಟುಗು:", - "PROCEDURES_CALL_BEFORE_PARAMS": "ಒಟ್ಟುಗು:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "ಔಟ್‌ಪುಟ್ ದಾಂತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು.", - "PROCEDURES_DEFNORETURN_COMMENT": "ಈ ಕಾರ್ಯೊನು ಇವರಿಪುಲೆ...", - "PROCEDURES_DEFRETURN_RETURN": "ಪಿರಕೊರು", - "PROCEDURES_DEFRETURN_TOOLTIP": "ಔಟ್‌ಪುಟ್ ಇತ್ತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು.", - "PROCEDURES_ALLOW_STATEMENTS": "ಹೇಳಿಕೆಗ್ ಅವಕಾಸೊ", - "PROCEDURES_DEF_DUPLICATE_WARNING": "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯೊಡು ನಕಲಿ ಮಾನದಂಡೊ ಉಂಡು.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ", - "PROCEDURES_CALLNORETURN_TOOLTIP": "'%1' ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊನು ನಡಪಾಲೆ.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ", - "PROCEDURES_CALLRETURN_TOOLTIP": " ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊ '%1' ನು ನಡಪಾಲೆ ಬುಕ್ಕೊ ಅಯಿತ ಉತ್ಪಾದನೆನ್ ಗಲಸ್‌ಲೆ.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "ಉಲಪರಿಪು", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "ಸೇರಾಲೆ, ದೆತ್ತ್‌ ಬುಡುಲೆ, ಅತ್ತಂಡ ಈ ಕಾರ್ಯೊಗು ಉಲಪರಿಪುಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ.", - "PROCEDURES_MUTATORARG_TITLE": "ಉಲಪರಿಪುದ ಪುದರ್:", - "PROCEDURES_MUTATORARG_TOOLTIP": "ಕಾರ್ಯೊಗು ಒಂಜಿ ಉಲಪರಿಪುನು ಸೇರಲೆ.", - "PROCEDURES_HIGHLIGHT_DEF": "ದೆರ್ತ್ ತೋಜುನ ಕಾರ್ಯೊದ ವ್ಯಾಕ್ಯಾನೊ", - "PROCEDURES_CREATE_DO": " '%1'ನ್ ಉಂಡುಮಲ್ಪುಲೆ", - "PROCEDURES_IFRETURN_TOOLTIP": "ಮೌಲ್ಯೊ ಸತ್ಯೊ ಆಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯೊನು ಪಿರಕೊರು.", - "PROCEDURES_IFRETURN_WARNING": "ಎಚ್ಚರಿಕೆ: ಒಂಜಿ ಕಾರ್ಯ ವ್ಯಾಕ್ಯಾನೊದುಲಯಿ ಮಾತ್ರ ಈ ತಡೆನ್ ಗಲಸೊಲಿ.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "ದಾದಾಂಡಲ ಪನ್ಲೇ...", - "DIALOG_OK": "ಅವು", - "DIALOG_CANCEL": "ಉಂತಾಲೆ" -} +{ + "@metadata": { + "authors": [ + "BHARATHESHA ALASANDEMAJALU", + "Bharathesha Alasandemajalu", + "Chidananda Kampa", + "Kiranpoojary", + "Ravi Mundkur", + "Vishwanatha Badikana" + ] + }, + "VARIABLES_DEFAULT_NAME": "ವಸ್ತು", + "UNNAMED_KEY": "ಪುದರ್ ಇಜ್ಜಂತಿನವು", + "TODAY": "ಇನಿ", + "DUPLICATE_BLOCK": "ನಕಲ್", + "ADD_COMMENT": "ಟಿಪ್ಪಣಿ ಸೇರ್ಸಲೆ", + "REMOVE_COMMENT": "ಟಿಪ್ಪಣಿನ್ ದೆತ್ತ್‌ದ್ ಬುಡ್ಲೆ", + "EXTERNAL_INPUTS": "ಪಿದಯಿದ ಪರಿಪು", + "INLINE_INPUTS": "ಉಳಸಾಲ್‍ದ ಉಳಪರಿಪು", + "DELETE_BLOCK": "ಬ್ಲಾಕ್‍ನ್ ಮಾಜಾವು", + "DELETE_X_BLOCKS": "%1 ಬ್ಲಾಕ್‍ಲೆನ್ ಮಾಜಾವು", + "DELETE_ALL_BLOCKS": "ಮಾತ %1 ಬ್ಲಾಕ್‍ಲೆನ್ ದೆತ್ತ್‌ದ್ ಬುಡೊಡೆ?", + "CLEAN_UP": "ಬ್ಲಾಕ್‍ಲೆನ್ ಸ್ವೊಚ್ಚೊ ಮಲ್ಪುಲೆ", + "COLLAPSE_BLOCK": "ಎಲ್ಯೆ ಮಲ್ತ್‌ದ್ ತಡೆಲೆ", + "COLLAPSE_ALL": "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಎಲ್ಯ ಮಲ್ಪು", + "EXPAND_BLOCK": "ಬ್ಲಾಕ್‍ದ ಮಾಹಿತಿನ್ ಪರಡಾವು", + "EXPAND_ALL": "ಮಾತಾ ತಡೆಕ್ಲೆನ ಮಾಹಿತಿನ್ ಪರಡಾವು", + "DISABLE_BLOCK": "ಬ್ಲಾಕ್‍ನ್ ದೆತ್ತ್‌ಪಾಡ್", + "ENABLE_BLOCK": "ತಡೆನ್ ಸಕ್ರಿಯೊ ಮಲ್ಪು", + "HELP": "ಸಹಾಯೊ", + "UNDO": "ದುಂಬುದಲೆಕೊ", + "REDO": "ಕುಡ ಮಲ್ಪು", + "CHANGE_VALUE_TITLE": "ಮೌಲ್ಯೊನು ಬದಲ್ ಮಲ್ಪು", + "RENAME_VARIABLE": "ವ್ಯತ್ಯಯೊಗು ಕುಡೊರ ಪುದರ್ ದೀಲೆ", + "RENAME_VARIABLE_TITLE": "ಮಾತಾ '%1' ವ್ಯತ್ಯಯೊಲೆನ ಪುದರ್‌ನ್ ನೆಕ್ಕ್ ಬದಲ್ ಮಲ್ಪುಲೆ:", + "NEW_VARIABLE": "ವ್ಯತ್ಯಯೊನು ಉಂಡು ಮಲ್ಪುಲೆ", + "NEW_VARIABLE_TITLE": "ಪೊಸ ವ್ಯತ್ಯಯೊದ ಪುದರ್:", + "VARIABLE_ALREADY_EXISTS": "'%1' ಪನ್ಪಿ ಪುದರ್‌ದ ವ್ಯತ್ಯಯೊ ದುಂಬೆ ಅಸ್ತಿತ್ವೊಡು ಉಂಡು.", + "DELETE_VARIABLE_CONFIRMATION": "'%2' ವ್ಯತ್ಯಯೊದ %1 ಉಪಯೋಗೊಲೆನ್ ಮಾಜಾವೊಡೆ?", + "DELETE_VARIABLE": "'%1' ವ್ಯತ್ಯಯೊನು ಮಾಜಾಲೆ", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/ಬಣ್ಣೊ", + "COLOUR_PICKER_TOOLTIP": "ಬಣ್ಣೊ ಪಟೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ.", + "COLOUR_RANDOM_TITLE": "ಒವ್ವೇ ಒಂಜಿ ಬಣ್ಣೊ", + "COLOUR_RANDOM_TOOLTIP": "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಬಣ್ಣೊನು ಆಯ್ಕೆ ಮಲ್ಪುಲೆ", + "COLOUR_RGB_TITLE": "ಬಣ್ಣೊದ", + "COLOUR_RGB_RED": "ಕೆಂಪು", + "COLOUR_RGB_GREEN": "ಪಚ್ಚೆ", + "COLOUR_RGB_BLUE": "ನೀಲಿ", + "COLOUR_RGB_TOOLTIP": "ತೊಜಪಾಯಿನ ಪ್ರಮಾಣೊದ ಕೆಂಪು, ಪಚ್ಚೆ ಬೊಕ್ಕ ನೀಲಿ ಬಣ್ಣೊಡ್ದು ಒಂಜಿ ಬಣ್ಣೊನು ಉಂಡು ಮಲ್ಪುಲೆ. ಮಾತಾ ಮೌಲ್ಯೊಲು 0 ಬುಕ್ಕೊ 100 ತ ನಡುಟೆ ಇಪ್ಪೊಡು.", + "COLOUR_BLEND_TITLE": "ಬೆರಕ್ಕೆ ಮಲ್ಪು", + "COLOUR_BLEND_COLOUR1": "ಬಣ್ಣೊ ೧(ಒಂಜಿ)", + "COLOUR_BLEND_COLOUR2": "ಬಣ್ಣೊ ೨(ರಡ್ಡ್)", + "COLOUR_BLEND_RATIO": "ಅನುಪಾತೊ", + "COLOUR_BLEND_TOOLTIP": "ಕೊರಿನ ಅನುಪಾತೊಡು (0.0- 1.0) ರಡ್ಡ್ ಬಣ್ಣೊಲೆನ್ ಬೆರಕೆ ಮಲ್ಪುಂಡು.", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": " %1 ಸರ್ತಿ ಕೂಡೊರ ಮಲ್ಪು", + "CONTROLS_REPEAT_INPUT_DO": "ಮಲ್ಪುಲೆ", + "CONTROLS_REPEAT_TOOLTIP": "ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಸ್ತ್ ಸರ್ತಿ ಮಲ್ಪು", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ಉಂದು ನಿಜ ಆಂಡ ಕುಡೊರ ಮಲ್ಪು:", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ಉಂದು ನಿಜ ಆಪಿಲೆಕೊ ಕುಡೊರ ಮಲ್ಪು:", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ಮೌಲ್ಯ ತಪ್ಪು ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು", + "CONTROLS_FOR_TOOLTIP": "ನಿರ್ದಿಸ್ಟೊ ಮದ್ಯಂತರೊದ ಮೂಲಕೊ ದೆತೊಂದು '%1' ವ್ಯತ್ಯಯೊಡ್ ಸುರುತ್ತ ಅಂಕೆಡ್ದ್ ಕಡೆತ್ತ ಅಂಕೆ ಮುಟ್ಟದ ಮೌಲ್ಯೊನು ದೆತ್ತೊನಾವ್ ಬೊಕ್ಕ ನಿಗಂಟ್ ಮಲ್ತಿನ ತಡೆಕ್ಲೆನ್ ಮಲ್ಪು", + "CONTROLS_FOR_TITLE": "%2 ಡ್ದ್ %3 ಮುಟ %4 ಸರ್ತಿ %1 ದ ಒಟ್ಟುಗು ಗೆನ್ಪು", + "CONTROLS_FOREACH_TITLE": "%2 ಪಟ್ಟಿಡ್ ಪ್ರತಿ ಒಂಜಿ ವಿಸಯ %1 ಗ್", + "CONTROLS_FOREACH_TOOLTIP": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಪ್ರತಿ ವಿಸಯೊಗು, '%1' ವ್ಯತ್ಯಾಯೊನು ವಿಸಯೊಗು ಜೋಡಾಲೆ, ಬೊಕ್ಕ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪುಲೆ.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ಲೂಪ್ ಕಡಿಯುನಿ", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ಬೊಕ್ಕದ ಲೂಪ್ ಪುನರಾವರ್ತನೆದೊಟ್ಟುಗು ದುಂಬರಿಲೆ", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ಇತ್ತಿನ ಲೂಪ್‍ಡ್ದ್ ಪದಿಯಿ ಬಲೆ", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ಈ ಲೂಪುನು ಅರ್ದೊಡೆ ಬುಡುದ್ ಬೊಕ್ಕ ನನತ್ತ ಪುನರಾವರ್ತನೆಗ್ ದುಂಬರಿಲೆ", + "CONTROLS_FLOW_STATEMENTS_WARNING": "ಎಚ್ಚರೊ: ಈ ತಡೆನ್ ಕಾಲಿ ಒಂಜಿ ಲೂಪುದುಲಯಿ ಮಾತ್ರ ಗಳಸೊಲಿ.", + "CONTROLS_IF_TOOLTIP_1": "ಮೌಲ್ಯ ನಿಜ ಆದಿತ್ತ್ಂಡ ಕೆಲವು ಪಾತೆರೊಲೆನ್ ಮಲ್ಪು", + "CONTROLS_IF_TOOLTIP_2": "ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು.", + "CONTROLS_IF_TOOLTIP_3": "ಸುರುತ್ತ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು.", + "CONTROLS_IF_TOOLTIP_4": "ಸುರುತ್ತ ಮೌಲ್ಯೊ ನಿಜವಾದಿತ್ತ್‌ಂಡ, ಪಾತೆರೊಲೆನ ಸುರುತ್ತ ತಡೆ ಮಲ್ಪು. ಇಜ್ಜಿಂಡ, ರಡ್ಡನೆದ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತ್ಂಡ, ಪಾತೆರೊಲೆನ ರಡ್ಡನೆ ತಡೆ ಮಲ್ಪು. ಒಂಜೇಲೆ ಒವ್ವೇ ಮೌಲ್ಯ ನಿಜವಾದಿತ್ತಿಜಿಂಡ, ಪಾತೆರೊಲೆನ ಕಡೆತ್ತ ತಡೆ ಮಲ್ಪು.", + "CONTROLS_IF_MSG_IF": "ಒಂಜಿ ವೇಲೆ", + "CONTROLS_IF_MSG_ELSEIF": "ಅತ್ತಂಡ", + "CONTROLS_IF_MSG_ELSE": "ಅತ್ತಂಡ", + "CONTROLS_IF_IF_TOOLTIP": "ಸೇರಾವ್, ದೆತ್ತ್‌ ಬುಡು, ಅತ್ತಂಡ ಈ 'ಒಂಜಿ ವೇಲೆ' ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಶರ್ತನ್ ಸೇರಾವ್", + "CONTROLS_IF_ELSE_TOOLTIP": "'ಒಂಜಿ ವೇಲೆ' ತಡೆಕ್ಕ್ ಒಂಜಿ ಕಡೆತ್ತ ಮಾತೆನ್ಲಾ-ಪತ್ತ್ (catch-all) ಶರ್ತನ್ ಸೇರಾವ್", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು", + "LOGIC_COMPARE_TOOLTIP_NEQ": "ರಡ್ದ್ ಇನ್‌ಪುಟ್‌ಲಾ ಸಮ ಅತ್ತಾಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು", + "LOGIC_COMPARE_TOOLTIP_LT": "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", + "LOGIC_COMPARE_TOOLTIP_LTE": "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಎಲ್ಯ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", + "LOGIC_COMPARE_TOOLTIP_GT": "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", + "LOGIC_COMPARE_TOOLTIP_GTE": "ಸುರುತ್ತ ಇನ್‌ಪುಟ್ ರಡ್ಡನೆ ಇನ್‌ಪುಟ್‌ಡ್ದ್ ಮಲ್ಲ ಅತ್ತಂಡ ಅಯಿಕ್ಕ್ ಸಮ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", + "LOGIC_OPERATION_TOOLTIP_AND": "ರಡ್ಡ್‌ಲಾ ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು", + "LOGIC_OPERATION_AND": "ಬುಕ್ಕೊ", + "LOGIC_OPERATION_TOOLTIP_OR": "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಇನ್‌ಪುಟ್ ನಿಜ ಆಂಡಲಾ, 'ನಿಜ'ನ್ ಪಿರಕೊರು.", + "LOGIC_OPERATION_OR": "ಅತ್ತಂಡ", + "LOGIC_NEGATE_TITLE": "%1 ಅತ್ತ್", + "LOGIC_NEGATE_TOOLTIP": "ಇನ್‌ಪುಟ್ ಸುಲ್ಲಾದಿತ್ತ್ಂಡ, 'ನಿಜ'ನ್ ಪಿರಕೊರು. ಇನ್‌ಪುಟ್ ನಿಜ ಆದಿತ್ತ್ಂಡ, 'ಸುಲ್ಲು'ನ್ ಪಿರಕೊರು.", + "LOGIC_BOOLEAN_TRUE": "ಸತ್ಯೊ", + "LOGIC_BOOLEAN_FALSE": "ಸುಲ್ಲು", + "LOGIC_BOOLEAN_TOOLTIP": "ಒಂಜೆ ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನ್ ಪಿರಕೊರು", + "LOGIC_NULL": "ಸೊನ್ನೆ", + "LOGIC_NULL_TOOLTIP": "ಸೊನ್ನೆನ್ ಪಿರಕೊರ್ಪುಂಡು", + "LOGIC_TERNARY_CONDITION": "ಪರೀಕ್ಷೆ", + "LOGIC_TERNARY_IF_TRUE": "ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ", + "LOGIC_TERNARY_IF_FALSE": "ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ", + "LOGIC_TERNARY_TOOLTIP": "'ಪರೀಕ್ಷೆ'ಡ್ ಶರ್ತನ್ ಸರಿತೂಲೆ. ಶರ್ತ ನಿಜವಾದಿತ್ತ್ಂಡ, 'ಒಂಜಿ ವೇಲೆ ನಿಜ ಆಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು; ಇಜ್ಜಿಂಡ 'ಒಂಜಿ ವೇಲೆ ಸುಲ್ಲಾಂಡ' ಮೌಲ್ಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/ಸಂಖ್ಯೆ", + "MATH_NUMBER_TOOLTIP": "ಅ ನಂಬ್ರೊ.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/ಅಂಕಗಣಿತ", + "MATH_ARITHMETIC_TOOLTIP_ADD": "ರಡ್ಡ್ ಸಂಖ್ಯೆದ ಮೊತ್ತನ್ ಪಿರಕೊರು.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "ರಡ್ಡ ಸ್ಂಖ್ಯೆದ ವ್ಯತ್ಯಾಸೊನು ಪಿರಕೊರು.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "ಸಂಖ್ಯೆದ ಗುಣಲಬ್ಧೊನು ಪಿರಕೊರು.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "ಸಂಖ್ಯೆದ ಭಾಗಲಬ್ದೊನು ಪಿರಕೊರು.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "ಸುರುತ್ತ ಸಂಖ್ಯೆದ ಘಾತೊನು ರಡ್ಡನೆ ಸಂಖ್ಯೆಗ್ ಏರ್ಪಾದ್ ಪಿರಕೊರು.", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ", + "MATH_SINGLE_OP_ROOT": "ವರ್ಗಮೂಲೊ", + "MATH_SINGLE_TOOLTIP_ROOT": "ಸಂಖ್ಯೆದ ವರ್ಗಮೂಲೊನು ಪಿರಕೊರು.", + "MATH_SINGLE_OP_ABSOLUTE": "ಸಂಪೂರ್ನೊ", + "MATH_SINGLE_TOOLTIP_ABS": "ಸಂಖ್ಯೆದ ಸರಿಯಾಯಿನ ಮೌಲ್ಯೊನು ಕೊರು", + "MATH_SINGLE_TOOLTIP_NEG": "ಸಂಖ್ಯೆದ ನಿಷೇಧೊನು ಪಿರಕೊರು", + "MATH_SINGLE_TOOLTIP_LN": "ಸಂಖ್ಯೆದ ಪ್ರಾಕೃತಿಕ ಲಘುಗಣಕನ್ ಪಿರಕೊರು", + "MATH_SINGLE_TOOLTIP_LOG10": "ಸಂಖ್ಯೆದ ದಶಮಾನ ಲಘುಗಣಕನ್ ಪಿರಕೊರು", + "MATH_SINGLE_TOOLTIP_EXP": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು 'e'ನ್ ಪಿರಕೊರು.", + "MATH_SINGLE_TOOLTIP_POW10": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಘಾತೊಗು ೧೦ನ್ ಪಿರಕೊರು", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/ತ್ರಿಕೋನಮಿತಿದ_ಕಾರ್ಯೊಲು", + "MATH_TRIG_TOOLTIP_SIN": "ಒಂಜಿ ಡಿಗ್ರಿದ ಸೈನ್ (sine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್).", + "MATH_TRIG_TOOLTIP_COS": "ಒಂಜಿ ಡಿಗ್ರಿದ ಕೊಸೈನ್ (cosine) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್).", + "MATH_TRIG_TOOLTIP_TAN": "ಒಂಜಿ ಡಿಗ್ರಿದ ಟ್ಯಾನ್‌ಜೆಂಟ್ (tangent) ಪಿರಕೊರು (ರೇಡಿಯನ್ ಅತ್ತ್).", + "MATH_TRIG_TOOLTIP_ASIN": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಸೈನ್ ಪಿರಕೊರು.", + "MATH_TRIG_TOOLTIP_ACOS": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌‌ಕೊಸೈನ್ ಪಿರಕೊರು.", + "MATH_TRIG_TOOLTIP_ATAN": "ಒಂಜಿ ಸಂಖ್ಯೆದ ಆರ್ಕ್‌ಟ್ಯಾನ್‌ಜ್ಂಟ್ ಪಿರಕೊರು.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/ಗಣಿತ_ನಿರಂತರ", + "MATH_CONSTANT_TOOLTIP": "ಒಂಜಿ ಸಾಮಾನ್ಯ ಸ್ಥಿರಾಂಕೊನು ಪಿರಕೊರು: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).", + "MATH_IS_EVEN": "ಸಮ ಸಂಖ್ಯೆ", + "MATH_IS_ODD": "ಬೆಸ ಸಂಖ್ಯೆ", + "MATH_IS_PRIME": "ಅವಿಭಾಜ್ಯ ಸಂಖ್ಯೆ", + "MATH_IS_WHOLE": "ಪೂರ್ಣ ಸಂಖ್ಯೆ", + "MATH_IS_POSITIVE": "ಧನ ಸಂಖ್ಯೆ", + "MATH_IS_NEGATIVE": "ಋಣ ಸಂಖ್ಯೆ", + "MATH_IS_DIVISIBLE_BY": "ಭಾಗಿಪೊಲಿ", + "MATH_IS_TOOLTIP": "ಒಂಜಿ ಸಂಖ್ಯೆ ಸಮನಾ, ಬೆಸನಾ, ಅವಿಭಾಜ್ಯನಾ, ಪೂರ್ಣನಾ, ಧನನಾ, ಋಣನಾ, ಅತ್ತಂಡ ಅವೆನ್ ಬೇತೆ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಡ್ದ್ ಭಾಗಿಪೊಲಿಯಾ ಪಂದ್ ಪರೀಕ್ಷೆ ಮಲ್ಪು. ನಿಜ ಅತ್ತಂಡ ಸುಲ್ಲುನು ಪಿರಕೊರ್ಪುಂಡು.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "%1 ನ್ %2 ಟ್ ಬದಲ್ ಮಲ್ಪು", + "MATH_CHANGE_TOOLTIP": "'%1' ವ್ಯತ್ಯಯೊಗು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಸೇರಾವ್", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/ಪೂರ್ಣಾಂಕೊ", + "MATH_ROUND_TOOLTIP": "ಒಂಜಿ ಸಂಖ್ಯೆನ್ ಮಿತ್ತ್‌ಗ್ ಅತ್ತಂಡ ತಿರ್ತ್‌ಗ್ ರೌಂಡ್ ಮಲ್ಪು", + "MATH_ROUND_OPERATOR_ROUND": "ರೌಂಡ್", + "MATH_ROUND_OPERATOR_ROUNDUP": "ಮಿತ್ತ್‌ಗ್ ರೌಂಡ್", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "ತಿರ್ತ್‌ಗ್ ರೌಂಡ್", + "MATH_ONLIST_OPERATOR_SUM": "ಪಟ್ಟಿದ ಮೊತ್ತ", + "MATH_ONLIST_TOOLTIP_SUM": "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಮೊತ್ತನ್ ಪಿರಕೊರು", + "MATH_ONLIST_OPERATOR_MIN": "ಪಟ್ಟಿಡ್ ಕಿಞ್ಞವ್", + "MATH_ONLIST_TOOLTIP_MIN": "ಪಟ್ಟಿಡುಪ್ಪುನ ಕಿಞ್ಞ ಸಂಕ್ಯೆನ್ ಪಿರಕೊರು", + "MATH_ONLIST_OPERATOR_MAX": "ಪಟ್ಟಿಡ್ ಮಲ್ಲವ್", + "MATH_ONLIST_TOOLTIP_MAX": "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಲ್ಲ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು", + "MATH_ONLIST_OPERATOR_AVERAGE": "ಪಟ್ಟಿದ ಸರಾಸರಿ", + "MATH_ONLIST_TOOLTIP_AVERAGE": "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಾತಾ ಸಂಖ್ಯೆಲೆನ ಸರಾಸರಿನ್ ಪಿರಕೊರು", + "MATH_ONLIST_OPERATOR_MEDIAN": "ಪಟ್ಟಿದ ನಡುತ್ತವ್", + "MATH_ONLIST_TOOLTIP_MEDIAN": "ಪಟ್ಟಿಡುಪ್ಪುನ ನಡುತ್ತ ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು", + "MATH_ONLIST_OPERATOR_MODE": "ಪಟ್ಟಿದ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ಮೌಲ್ಯ", + "MATH_ONLIST_TOOLTIP_MODE": "ಪಟ್ಟಿಡುಪ್ಪುನ ಮಸ್ತ್ ಸಾಮಾನ್ಯ ವಿಷಯೊನು ಪಿರಕೊರು", + "MATH_ONLIST_OPERATOR_STD_DEV": "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನ", + "MATH_ONLIST_TOOLTIP_STD_DEV": "ಪಟ್ಟಿದ ಪ್ರಮಾಣಿತ ವಿಚಲನೊನು ಪಿರಕೊರು", + "MATH_ONLIST_OPERATOR_RANDOM": "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಷಯ", + "MATH_ONLIST_TOOLTIP_RANDOM": "ಪಟ್ಟಿದ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಂಶೊನು ಪಿರಕೊರು.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/ಮೋಡ್ಯುಲೊ_ಒಪರೇಶನ್", + "MATH_MODULO_TITLE": " %1 ÷ %2 ತ ಶೇಷ", + "MATH_MODULO_TOOLTIP": "ರಡ್ಡ್ ಸಂಖ್ಯೆಲೆನ್ ಭಾಗ ಮಲ್ತ್‌ದ್ ಶೇಷೊನು ಪಿರಕೊರು.", + "MATH_CONSTRAIN_TITLE": "%2 ಕಮ್ಮಿ %3 ಜಾಸ್ತಿ %1 ನಿರ್ಬಂಧ ಮಲ್ಪು", + "MATH_CONSTRAIN_TOOLTIP": "ನಿಗದಿತ ಮಿತಿತ ನಡುಟು ಒಂಜಿ ಸಂಖ್ಯೆನ್ ನಿರ್ಬಂಧ ಮಲ್ಪು", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್", + "MATH_RANDOM_INT_TITLE": " %1 ಡ್ದ್ %2 ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊ", + "MATH_RANDOM_INT_TOOLTIP": "ರಡ್ಡ್ ನಿಗದಿತ ಮಿತಿತ ನಡುತ್ತ ಯಾದೃಚ್ಛಿಕ ಪೂರ್ಣಾಂಕೊನು ಪಿರಕೊರು", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/ರಾಂಡಮ್_ನಂಬರ್_ಜನರೇಶನ್", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿ", + "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (ಸೇರ್‌ದ್) ಬೊಕ್ಕ 1.0 (ಸೇರಂದೆ) ನಡುತ ಒವ್ವಾಂಡಲ ಒಂಜಿ ಭಿನ್ನರಾಶಿನ್ ಪಿರಕೊರು.", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/ಸ್ಟ್ರಿಂಗ್_(ಕಂಪ್ಯೂಟರ್_ಸೈನ್ಸ್)", + "TEXT_TEXT_TOOLTIP": "ಒಂಜಿ ಅಕ್ಷರೊ, ಪದೊ ಅತ್ತಂಡ ಪಾಟೊದ ಒಂಜಿ ಸಾಲ್", + "TEXT_JOIN_TITLE_CREATEWITH": "ನೆಡ್ದ್ ಪಟ್ಯೊನು ಉಂಡು ಮಲ್ಪು", + "TEXT_JOIN_TOOLTIP": "ಏತಾಂಡಲ ವಿಷಯಲೆನ್ ಒಟ್ಟುಗು ಸೇರಾದ್ ಒಂಜಿ ಪಟ್ಯೊದ ತುಂಡುನು ಉಂಡುಮಲ್ಪು.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "ಸೇರಾವ್", + "TEXT_CREATE_JOIN_TOOLTIP": "ಈ ಪಠ್ಯ ತಡೆನ್ ಕುಡ ಸಂರಚಣೆ ಮಲ್ಪೆರೆ, ಸೇರಾವ್, ದೆತ್ತ್ ಬುಡು, ಅತ್ತಂಡ ವಿಭಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪು.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "ಪಟ್ಯೊಗು ಒಂಜಿ ವಿಷಯೊನು ಸೇರಾವ್", + "TEXT_APPEND_TITLE": "ಇಂದೆಕ್ %1 ಪಟ್ಯೊನು ಸೇರವೆ %2", + "TEXT_APPEND_TOOLTIP": "%1 ವ್ಯತ್ಯಯೊಗು ಕೆಲವು ಪಟ್ಯೊಲೆನ್ ಸೇರಾವ್", + "TEXT_LENGTH_TITLE": "%1 ಉದ್ದೊ", + "TEXT_LENGTH_TOOLTIP": "ಕೊರಿನ ಪಟ್ಯೊದ ಅಕ್ಷರೊಲೆನ (ಅಂತರೊಲು ಸೇರ್‌ದ್) ಸಂಖ್ಯೆನ್ ಪಿರಕೊರು.", + "TEXT_ISEMPTY_TITLE": "%1 ಖಾಲಿ", + "TEXT_ISEMPTY_TOOLTIP": "ಕೊರಿನ ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು.", + "TEXT_INDEXOF_TOOLTIP": "ರಡ್ಡನೆ ಪಟ್ಯೊಡು ಉಪ್ಪುನ ಸುರುತ ಪಟ್ಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರು. ಪಟ್ಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರು.", + "TEXT_INDEXOF_TITLE": "ಪಟ್ಯೊಡು %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "ಪಟ್ಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್", + "TEXT_INDEXOF_OPERATOR_LAST": "ಪಟ್ಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್", + "TEXT_CHARAT_TITLE": "%1 %2 ಪದೊಟ್ಟು", + "TEXT_CHARAT_FROM_START": "ಅಕ್ಸರೊ #ನ್ ದೆತ್ತೊನು", + "TEXT_CHARAT_FROM_END": "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ನ್ ದೆತ್ತೊನು", + "TEXT_CHARAT_FIRST": "ಸುರುತ್ತ ಅಕ್ಷರೊನು ದೆತ್ತೊನು", + "TEXT_CHARAT_LAST": "ಅಕೇರಿದ ಅಕ್ಷರೊನು ದೆತ್ತೊನು", + "TEXT_CHARAT_RANDOM": "ಒವ್ವಾಂಡಲ ಒಂಜಿ ಅಕ್ಷರೊನು ದೆತ್ತೊನು", + "TEXT_CHARAT_TOOLTIP": "ಅಕ್ಷರೊನು ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ಪಿರಕೊರ್ಪುಂಡು.", + "TEXT_GET_SUBSTRING_TOOLTIP": "ಪಟ್ಯೊದ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಬಾಗೊನು ಪಿರಕೊರ್ಪುಂಡು.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ಪಟ್ಯೊಡು", + "TEXT_GET_SUBSTRING_START_FROM_START": "ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊ ದೆತ್ತೊನು", + "TEXT_GET_SUBSTRING_START_FROM_END": "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು", + "TEXT_GET_SUBSTRING_START_FIRST": "ಸುರುತ್ತ ಅಕ್ಷರೊ #ಡ್ದು ಉಪವಾಕ್ಯೊನು ದೆತ್ತೊನು", + "TEXT_GET_SUBSTRING_END_FROM_START": "ಅಕ್ಷರೊ #ಗು", + "TEXT_GET_SUBSTRING_END_FROM_END": "ಅಕೇರಿಡ್ದ್ ಅಕ್ಷರೊ #ಗು", + "TEXT_GET_SUBSTRING_END_LAST": "ಅಕೇರಿದ ಅಕ್ಷರೊಗು", + "TEXT_CHANGECASE_TOOLTIP": "ಪಟ್ಯೊದ ಒಂಜಿ ನಕಲ್‍ನ್ ಬೇತೆ ನಮೂನೆಡ್ (case) ಪಿರಕೊರು.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "ಮಲ್ಲ ಅಕ್ಷರೊಗು", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "ಎಲ್ಯ ಅಕ್ಷರೊಗು", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "ತರೆಬರವುದ ಅಕ್ಷರೊಗು", + "TEXT_TRIM_TOOLTIP": "ಒಂಜಿ ಅತ್ತಂಡ ರಡ್ಡ್ ಕೊಡಿಡ್ದ್ ಅಂತರೊಲೆನ್ (space) ದೆತ್ತ್‌ದ್ ಪಟ್ಯೊದ ಪ್ರತಿನ್ ಪಿರಕೊರು.", + "TEXT_TRIM_OPERATOR_BOTH": "ರಡ್ಡ್ ಮೆಯಿತ್ತಲ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್.", + "TEXT_TRIM_OPERATOR_LEFT": "ಎಡತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್.", + "TEXT_TRIM_OPERATOR_RIGHT": "ಬಲತ್ತ ಮೆಯಿತ್ತ ಅಂತರೊಲೆನ್ (space) ಕತ್ತೆರ್.", + "TEXT_PRINT_TITLE": "%1 ಮುದ್ರಣ", + "TEXT_PRINT_TOOLTIP": "ನಿರ್ದಿಷ್ಟ ಪಟ್ಯೊ, ಸಂಖ್ಯೆ ಅತ್ತಂಡ ಬೇತೆ ಮೌಲ್ಯೊನು ಮುದ್ರಿಪುಲೆ.", + "TEXT_PROMPT_TYPE_TEXT": "ಸಂದೇಶೊದೊಟ್ಟುಗು ಪಟ್ಯೊಗು ಕೇನ್.", + "TEXT_PROMPT_TYPE_NUMBER": "ಸಂದೇಶೊದೊಟ್ಟುಗು ಸಂಕ್ಯೆನ್ ಕೇನ್", + "TEXT_PROMPT_TOOLTIP_NUMBER": "ಒಂಜಿ ಸಂಖ್ಯೆಗ್ ಸದಸ್ಯೆರೆನ್ ಕೇನ್", + "TEXT_PROMPT_TOOLTIP_TEXT": "ಕೆಲವು ಪಟ್ಯೊಗು ಸದಸ್ಯೆರೆನ್ ಕೇನ್.", + "LISTS_CREATE_EMPTY_TITLE": "ಕಾಲಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ", + "LISTS_CREATE_EMPTY_TOOLTIP": "ಒಂಜಿ ಪಟ್ಟಿ, ೦ ಉದ್ದೊದ, ಒವ್ವೇ ಮಾಹಿತಿ ದಾಂತಿನ ದಾಖಲೆ ಪಿರಕೊರು.", + "LISTS_CREATE_WITH_TOOLTIP": "ಏತೇ ವಿಸಯೊಲುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ", + "LISTS_CREATE_WITH_INPUT_WITH": "ಒಟ್ಟುಗು ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "ಪಟ್ಟಿ", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "ಈ ಪಟ್ಟಿ ತಡೆನ್ ಕುಡ ಸಂರಚನೆ ಮಲ್ಪೆರೆ ಸೇರಾಲೆ, ದೆತ್ತ್ ಬುಡುಲೆ, ಅತ್ತಂಡ ವಿಬಾಗೊಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "ಪಟ್ಟಿಗ್ ಒಂಜಿ ವಿಸಯೊನು ಸೇರಾಲೆ.", + "LISTS_REPEAT_TOOLTIP": "ಕೊರಿನ ಮೌಲ್ಯೊ ಒಂಜಿ ನಿರ್ದಿಷ್ಟ ಸಂಕ್ಯೆದಾತ್ ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ.", + "LISTS_REPEAT_TITLE": "%1 ವಿಸಯೊ %2 ಸರ್ತಿ ಪುನರಾವರ್ತನೆ ಆದುಪ್ಪುನ ಪಟ್ಟಿನ್ ಉಂಡುಮಲ್ಪುಲೆ.", + "LISTS_LENGTH_TITLE": "%1 ಉದ್ದೊ", + "LISTS_LENGTH_TOOLTIP": "ಪಟ್ಟಿದ ಉದ್ದೊನು ಪಿರಕೊರು.", + "LISTS_ISEMPTY_TITLE": "%1 ಕಾಲಿ", + "LISTS_ISEMPTY_TOOLTIP": "ಪಟ್ಯೊ ಖಾಲಿ ಇತ್ತ್ಂಡ 'ನಿಜ'ನ್ ಪಿರಕೊರು.", + "LISTS_INLIST": "ಪಟ್ಟಿಡ್", + "LISTS_INDEX_OF_FIRST": "ವಿಸಯೊ ಸುರುಕ್ಕು ಬತ್ತಿನೇನ್ ನಾಡ್", + "LISTS_INDEX_OF_LAST": "ವಿಸಯೊ ಅಕೇರಿಗ್ ಬತ್ತಿನೇನ್ ನಾಡ್", + "LISTS_INDEX_OF_TOOLTIP": "ಪಟ್ಟಿಡುಪ್ಪುನ ವಿಸಯೊ ಸುರುಕ್ಕು/ಅಕೇರಿಗ್ ಬತ್ತಿನೆತ್ತ ಸೂಚಿನ್ ಪಿರಕೊರ್ಪುಂಡು. ವಿಸಯೊ ತಿಕ್ಕಿಜ್ಜಾಂಡ %1 ನ್ ಪಿರಕೊರ್ಪುಂಡು.", + "LISTS_GET_INDEX_GET": "ದೆತೊನು", + "LISTS_GET_INDEX_GET_REMOVE": "ದೆತ್ತೊನು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡು", + "LISTS_GET_INDEX_REMOVE": "ದೆಪ್ಪುಲೆ", + "LISTS_GET_INDEX_FROM_END": "ಅಕೇರಿಡ್ದ್ #", + "LISTS_GET_INDEX_FIRST": "ಸುರುತ", + "LISTS_GET_INDEX_LAST": "ಕಡೆತ", + "LISTS_GET_INDEX_RANDOM": "ಒವ್ವಾಂಡಲ", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ಸುರುತ ವಿಸಯೊ", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ಅಕೇರಿತ ವಿಸಯೊ", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಪಿರಕೊರ್ಪುಂಡು ಬೊಕ್ಕ ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ದೆತ್ತ್ ಬುಡ್ಪುಂಡು.", + "LISTS_SET_INDEX_SET": "ಸೆಟ್ ಮಲ್ಪು", + "LISTS_SET_INDEX_INSERT": "ಸೇರಾವ್", + "LISTS_SET_INDEX_INPUT_TO": "ಲೆಕ", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಸುರುತ್ತ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಅಕೇರಿದ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಒವ್ವಾಂಡಲ ಒಂಜಿ ವಿಸಯೊನು ಸೆಟ್ ಮಲ್ಪುಂಡು.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಡ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "ಒಂಜಿ ಪಟ್ಟಿದ ಸುರುಕ್ಕು ವಿಸಯೊನು ಸೇರಾವುಂಡು.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "ಒಂಜಿ ಪಟ್ಟಿದ ಅಕೇರಿಗ್ ವಿಸಯೊನು ಸೇರಾವುಂಡು.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "ಒಂಜಿ ಪಟ್ಟಿಡ್ ಓಲಾಂಡಲ ವಿಸಯೊನು ಸೇರಾವುಂಡು.", + "LISTS_GET_SUBLIST_START_FROM_START": "# ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು", + "LISTS_GET_SUBLIST_START_FROM_END": "ಅಕೇರಿಡ್ದ್ # ಡ್ದ್ ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು", + "LISTS_GET_SUBLIST_START_FIRST": "ಸುರುಡ್ದು ಉಪ-ಪಟ್ಟಿನ್ ದೆತ್ತೊನು", + "LISTS_GET_SUBLIST_END_FROM_START": "# ಗ್", + "LISTS_GET_SUBLIST_END_FROM_END": "ಅಕೇರಿಡ್ದ್ # ಗ್", + "LISTS_GET_SUBLIST_END_LAST": "ಅಕೇರಿಗ್", + "LISTS_GET_SUBLIST_TOOLTIP": "ಪಟ್ಯೊದ ನಿರ್ದಿಷ್ಟ ಬಾಗೊದ ಪ್ರತಿನ್ ಉಂಡುಮಲ್ಪುಂಡು.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "%1 %2 %3 ಇಂಗಡಿಪು", + "LISTS_SORT_TOOLTIP": "ಒಂಜಿ ಪಟ್ಟಿದ ಒಂಜಿ ಪ್ರತಿನ್ ಇಂಗಡಿಪು", + "LISTS_SORT_ORDER_ASCENDING": "ಏರುನು", + "LISTS_SORT_ORDER_DESCENDING": "ಜಪ್ಪುನು", + "LISTS_SORT_TYPE_NUMERIC": "ಸಂಖ್ಯೆ", + "LISTS_SORT_TYPE_TEXT": "ಅಕ್ಷರೊ", + "LISTS_SORT_TYPE_IGNORECASE": "ಅಕ್ಷರೊ, ನಮೂನೆ (case) ಅಲಕ್ಷ್ಯೊ ಮಲ್ಪುಲೆ", + "LISTS_SPLIT_LIST_FROM_TEXT": "ಪಟ್ಯೊಲೆ ಪಟ್ಟಿನ್ ತಯಾರ್ ಮಲ್ಪುಲೆ", + "LISTS_SPLIT_TEXT_FROM_LIST": "ಪಟ್ಟಿದ ಪಟ್ಯೊನು ತಯಾರ್ ಮಲ್ಪುಲೆ", + "LISTS_SPLIT_WITH_DELIMITER": "ಮಿತಿಸೂಚಕೊದ ಒಟ್ಟುಗು", + "LISTS_SPLIT_TOOLTIP_SPLIT": "ಪಟ್ಯೊಲೆನ್ ಪ್ರತಿ ಮಿತಿಸೂಚಕೊಡು ತುಂಡು ಮಲ್ತ್‌ದ್ ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿಗ್ ಬಾಗೊ ಮಲ್ಪುಲೆ.", + "LISTS_SPLIT_TOOLTIP_JOIN": "ಪಟ್ಯೊಲೆನ ಒಂಜಿ ಪಟ್ಟಿನ್ ಮಿತಿಸೂಚಕೊದ ಮೂಲಕೊ ಬೇತೆ ಮಲ್ತ್‌ದ್ ಒಂಜಿ ಪಟ್ಯೊಗು ಸೇರಾಲೆ.", + "VARIABLES_GET_TOOLTIP": "ಈ ವ್ಯತ್ಯಯೊದ ಮೌಲ್ಯೊನು ಪಿರಕೊರು.", + "VARIABLES_GET_CREATE_SET": "'ಸೆಟ್ %1' ಉಂಡುಮಲ್ಪುಲೆ", + "VARIABLES_SET": "%1 ನ್ %2 ಕ್ಕ್ ಸೆಟ್ ಮಲ್ಪುಲೆ", + "VARIABLES_SET_TOOLTIP": "ಈ ವ್ಯತ್ಯಯೊನು ಇನ್‌ಪುಟ್‌ಗ್ ಸಮ ಆಪಿಲೆಕ ಸೆಟ್ ಮಲ್ಪುಂಡು.", + "VARIABLES_SET_CREATE_GET": "'ದೆತ್ತೊನು %1' ಉಂಡುಮಲ್ಪುಲೆ", + "PROCEDURES_DEFNORETURN_TITLE": "ಇಂದೆಕ್", + "PROCEDURES_DEFNORETURN_PROCEDURE": "ಎಂಚಿನಾಂಡಲ ಮಲ್ಪುಲೆ", + "PROCEDURES_BEFORE_PARAMS": "ಒಟ್ಟುಗು:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ಒಟ್ಟುಗು:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "ಔಟ್‌ಪುಟ್ ದಾಂತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು.", + "PROCEDURES_DEFNORETURN_COMMENT": "ಈ ಕಾರ್ಯೊನು ಇವರಿಪುಲೆ...", + "PROCEDURES_DEFRETURN_RETURN": "ಪಿರಕೊರು", + "PROCEDURES_DEFRETURN_TOOLTIP": "ಔಟ್‌ಪುಟ್ ಇತ್ತಿನ ಕಾರ್ಯೊನು ಉಂಡುಮಲ್ಪುಂಡು.", + "PROCEDURES_ALLOW_STATEMENTS": "ಹೇಳಿಕೆಗ್ ಅವಕಾಸೊ", + "PROCEDURES_DEF_DUPLICATE_WARNING": "ಎಚ್ಚರಿಕೆ: ಈ ಕಾರ್ಯೊಡು ನಕಲಿ ಮಾನದಂಡೊ ಉಂಡು.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ", + "PROCEDURES_CALLNORETURN_TOOLTIP": "'%1' ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊನು ನಡಪಾಲೆ.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/ವರ್ಗಮೂಲೊ", + "PROCEDURES_CALLRETURN_TOOLTIP": " ಬಳಕೆದಾರೆರೆ ಕಾರ್ಯೊ '%1' ನು ನಡಪಾಲೆ ಬುಕ್ಕೊ ಅಯಿತ ಉತ್ಪಾದನೆನ್ ಗಲಸ್‌ಲೆ.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "ಉಲಪರಿಪು", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "ಸೇರಾಲೆ, ದೆತ್ತ್‌ ಬುಡುಲೆ, ಅತ್ತಂಡ ಈ ಕಾರ್ಯೊಗು ಉಲಪರಿಪುಲೆನ್ ಕುಡ ಒತ್ತರೆ ಮಲ್ಪುಲೆ.", + "PROCEDURES_MUTATORARG_TITLE": "ಉಲಪರಿಪುದ ಪುದರ್:", + "PROCEDURES_MUTATORARG_TOOLTIP": "ಕಾರ್ಯೊಗು ಒಂಜಿ ಉಲಪರಿಪುನು ಸೇರಲೆ.", + "PROCEDURES_HIGHLIGHT_DEF": "ದೆರ್ತ್ ತೋಜುನ ಕಾರ್ಯೊದ ವ್ಯಾಕ್ಯಾನೊ", + "PROCEDURES_CREATE_DO": " '%1'ನ್ ಉಂಡುಮಲ್ಪುಲೆ", + "PROCEDURES_IFRETURN_TOOLTIP": "ಮೌಲ್ಯೊ ಸತ್ಯೊ ಆಂಡ, ರಡ್ಡನೆ ಮೌಲ್ಯೊನು ಪಿರಕೊರು.", + "PROCEDURES_IFRETURN_WARNING": "ಎಚ್ಚರಿಕೆ: ಒಂಜಿ ಕಾರ್ಯ ವ್ಯಾಕ್ಯಾನೊದುಲಯಿ ಮಾತ್ರ ಈ ತಡೆನ್ ಗಲಸೊಲಿ.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "ದಾದಾಂಡಲ ಪನ್ಲೇ...", + "DIALOG_OK": "ಅವು", + "DIALOG_CANCEL": "ಉಂತಾಲೆ" +} diff --git a/msg/json/te.json b/msg/json/te.json index e18f81b3d03..33dee542be4 100644 --- a/msg/json/te.json +++ b/msg/json/te.json @@ -1,101 +1,101 @@ -{ - "@metadata": { - "authors": [ - "Chaduvari", - "Naidugari Jayanna", - "Veeven", - "WP MANIKHANTA" - ] - }, - "VARIABLES_DEFAULT_NAME": "అంశం", - "TODAY": "నేడు", - "DUPLICATE_BLOCK": "నకలు", - "ADD_COMMENT": "వ్యాఖ్య చేర్చు", - "REMOVE_COMMENT": "వ్యాఖ్యను తొలగించు", - "DELETE_BLOCK": "నిరోదన తొలగించు", - "DELETE_X_BLOCKS": "%1నిరోదనలను తోలగించు", - "DELETE_ALL_BLOCKS": "మెుత్తం %1నిరోదనలను తొలగించు?", - "CLEAN_UP": "నిరోదనలను శుభ్రపరుచు", - "COLLAPSE_BLOCK": "నరోదన కూల్చు", - "COLLAPSE_ALL": "నిరోదనలను కూల్చు", - "EXPAND_BLOCK": "నిరోదన విస్తరించు", - "EXPAND_ALL": "నిరోదనలను విస్తరించు", - "DISABLE_BLOCK": "నిరోదన పని చేయకుండా చేయు", - "ENABLE_BLOCK": "నిరోదన ప్రారంబించు", - "HELP": "సహాయం", - "UNDO": "రద్దుచెయ్యి", - "REDO": "మళ్ళీ చెయ్యి", - "CHANGE_VALUE_TITLE": "విలువ మార్చు", - "RENAME_VARIABLE": "పునఃనామకరణ వ్యత్యాసం...", - "RENAME_VARIABLE_TITLE": "మొత్తం వ్యత్యాసాలను '%1' దీనికి పునఃనామకరణించు:", - "NEW_VARIABLE": "కొత్త వ్యత్యాసం...", - "NEW_VARIABLE_TITLE": "కొత్త వ్యత్యాసం పేరు:", - "COLOUR_PICKER_HELPURL": "https://te.wikipedia.org/wiki/రంగు", - "COLOUR_PICKER_TOOLTIP": "చిత్రకారుడు ఉపయోగించే రంగుల నుండి ఒక దానిని ఎంచుకో.", - "COLOUR_RANDOM_TITLE": "యాదృచ్ఛిక రంగు", - "COLOUR_RANDOM_TOOLTIP": "యాదృచ్ఛికంగా ఒక రంగును ఎంచుకో.", - "COLOUR_RGB_TITLE": "తో రంగు", - "COLOUR_RGB_RED": "ఎరుపు", - "COLOUR_RGB_GREEN": "ఆకుపచ్చ", - "COLOUR_RGB_BLUE": "నీలం", - "COLOUR_RGB_TOOLTIP": "ఎరుపు,పచ్చ మరియు బులుగు రంగులను సమంగా ఉపయోగించి ఒక రంగును సృష్ఠించండి.అన్ని విలువలు 0 నుండి 100 మధ్యలో ఉండాలి.", - "COLOUR_BLEND_TITLE": "మిశ్రమం", - "COLOUR_BLEND_COLOUR1": "రంగు 1", - "COLOUR_BLEND_COLOUR2": "రంగు 2", - "COLOUR_BLEND_RATIO": "నిష్పత్తి", - "COLOUR_BLEND_TOOLTIP": "రెండు రంగులను (0.0 - 1.0) నిష్పత్తిలో మిశ్రమించాలి.", - "CONTROLS_REPEAT_HELPURL": "https://te.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 సార్లు మళ్ళీ కొనసాగించు", - "CONTROLS_REPEAT_INPUT_DO": "చేయు", - "CONTROLS_REPEAT_TOOLTIP": "కొన్ని నివేదికలు లేదా ప్రతిపాదనలు అనేక మార్లు చెయ్యండి.", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "అంతవరకు మళ్ళీ కొనసాగించండి", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ఒక వెల నిజమైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ఒక వె తప్పైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి.", - "CONTROLS_FOR_TITLE": "దీనితో లెక్కించు %1 నుండి %2 వరకు %3 తో %4", - "CONTROLS_FOREACH_TITLE": "ఒక అంశం కోసం %1 జాబితా లో %2", - "CONTROLS_IF_MSG_IF": "అయితే", - "LOGIC_OPERATION_AND": "మరియు", - "LOGIC_OPERATION_OR": "లేదా", - "LOGIC_NEGATE_TITLE": "%1 కాదు", - "LOGIC_BOOLEAN_TRUE": "సత్యం", - "LOGIC_BOOLEAN_FALSE": "అసత్యం", - "LOGIC_NULL": "చెల్లని", - "LOGIC_TERNARY_CONDITION": "పరీక్షించు", - "LOGIC_TERNARY_IF_TRUE": "సత్యమైతే", - "LOGIC_TERNARY_IF_FALSE": "అసత్యమైతే", - "MATH_NUMBER_TOOLTIP": "ఒ సంఖ్య.", - "MATH_ARITHMETIC_HELPURL": "https://te.wikipedia.org/wiki/Arithmetic", - "MATH_ARITHMETIC_TOOLTIP_ADD": "రెండు సంఖ్యల మొత్తానికి తిరిగి వెళ్ళండి.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "రెండు సంఖ్యల తేడాకి తిరిగి వెళ్ళండి", - "MATH_IS_POSITIVE": "అనుకూలంగా ఉంది", - "MATH_IS_NEGATIVE": "ప్రతికూలంగా ఉంది", - "MATH_IS_DIVISIBLE_BY": "దీనితో భాగించబడును", - "MATH_ONLIST_OPERATOR_SUM": "జాబితా మొత్తం", - "MATH_ONLIST_OPERATOR_AVERAGE": "జాబితా సగటు", - "TEXT_CREATE_JOIN_TITLE_JOIN": "చేరు", - "TEXT_LENGTH_TITLE": "%1 పొడువు", - "TEXT_ISEMPTY_TITLE": "% 1 ఖాళీ", - "TEXT_CHARAT_FIRST": "మొదటి వర్ణాన్ని పొందు", - "TEXT_CHARAT_LAST": "చివరి వర్ణాన్ని పొందు", - "TEXT_CHARAT_RANDOM": "యాదృశ్చిక వర్ణాన్ని పొందు", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "జాబితా", - "LISTS_INLIST": "జాబితాలో", - "LISTS_GET_INDEX_GET": "పొందు", - "LISTS_GET_INDEX_GET_REMOVE": "తెచ్చుకుని, తీసెయ్యి", - "LISTS_GET_INDEX_REMOVE": "తొలగించు", - "LISTS_GET_INDEX_FROM_END": "#చివరి నుండి", - "LISTS_GET_INDEX_FIRST": "మొదటి", - "LISTS_GET_INDEX_LAST": "చివరి", - "LISTS_GET_INDEX_RANDOM": "యాదృచ్చిక", - "LISTS_SET_INDEX_INPUT_TO": "గా", - "LISTS_GET_SUBLIST_END_FROM_START": "# కు", - "LISTS_GET_SUBLIST_END_FROM_END": "చివరి నుండి # వరకు", - "LISTS_GET_SUBLIST_END_LAST": "తుదకు", - "PROCEDURES_DEFNORETURN_TITLE": "కు", - "PROCEDURES_DEFNORETURN_PROCEDURE": "ఏదో ఒకటి చేయి", - "PROCEDURES_BEFORE_PARAMS": "తో:", - "PROCEDURES_CALL_BEFORE_PARAMS": "తో:", - "PROCEDURES_DEFRETURN_RETURN": "తిరిగి వెళ్ళు", - "DIALOG_OK": "సరే", - "DIALOG_CANCEL": "రద్దు" -} +{ + "@metadata": { + "authors": [ + "Chaduvari", + "Naidugari Jayanna", + "Veeven", + "WP MANIKHANTA" + ] + }, + "VARIABLES_DEFAULT_NAME": "అంశం", + "TODAY": "నేడు", + "DUPLICATE_BLOCK": "నకలు", + "ADD_COMMENT": "వ్యాఖ్య చేర్చు", + "REMOVE_COMMENT": "వ్యాఖ్యను తొలగించు", + "DELETE_BLOCK": "నిరోదన తొలగించు", + "DELETE_X_BLOCKS": "%1నిరోదనలను తోలగించు", + "DELETE_ALL_BLOCKS": "మెుత్తం %1నిరోదనలను తొలగించు?", + "CLEAN_UP": "నిరోదనలను శుభ్రపరుచు", + "COLLAPSE_BLOCK": "నరోదన కూల్చు", + "COLLAPSE_ALL": "నిరోదనలను కూల్చు", + "EXPAND_BLOCK": "నిరోదన విస్తరించు", + "EXPAND_ALL": "నిరోదనలను విస్తరించు", + "DISABLE_BLOCK": "నిరోదన పని చేయకుండా చేయు", + "ENABLE_BLOCK": "నిరోదన ప్రారంబించు", + "HELP": "సహాయం", + "UNDO": "రద్దుచెయ్యి", + "REDO": "మళ్ళీ చెయ్యి", + "CHANGE_VALUE_TITLE": "విలువ మార్చు", + "RENAME_VARIABLE": "పునఃనామకరణ వ్యత్యాసం...", + "RENAME_VARIABLE_TITLE": "మొత్తం వ్యత్యాసాలను '%1' దీనికి పునఃనామకరణించు:", + "NEW_VARIABLE": "కొత్త వ్యత్యాసం...", + "NEW_VARIABLE_TITLE": "కొత్త వ్యత్యాసం పేరు:", + "COLOUR_PICKER_HELPURL": "https://te.wikipedia.org/wiki/రంగు", + "COLOUR_PICKER_TOOLTIP": "చిత్రకారుడు ఉపయోగించే రంగుల నుండి ఒక దానిని ఎంచుకో.", + "COLOUR_RANDOM_TITLE": "యాదృచ్ఛిక రంగు", + "COLOUR_RANDOM_TOOLTIP": "యాదృచ్ఛికంగా ఒక రంగును ఎంచుకో.", + "COLOUR_RGB_TITLE": "తో రంగు", + "COLOUR_RGB_RED": "ఎరుపు", + "COLOUR_RGB_GREEN": "ఆకుపచ్చ", + "COLOUR_RGB_BLUE": "నీలం", + "COLOUR_RGB_TOOLTIP": "ఎరుపు,పచ్చ మరియు బులుగు రంగులను సమంగా ఉపయోగించి ఒక రంగును సృష్ఠించండి.అన్ని విలువలు 0 నుండి 100 మధ్యలో ఉండాలి.", + "COLOUR_BLEND_TITLE": "మిశ్రమం", + "COLOUR_BLEND_COLOUR1": "రంగు 1", + "COLOUR_BLEND_COLOUR2": "రంగు 2", + "COLOUR_BLEND_RATIO": "నిష్పత్తి", + "COLOUR_BLEND_TOOLTIP": "రెండు రంగులను (0.0 - 1.0) నిష్పత్తిలో మిశ్రమించాలి.", + "CONTROLS_REPEAT_HELPURL": "https://te.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 సార్లు మళ్ళీ కొనసాగించు", + "CONTROLS_REPEAT_INPUT_DO": "చేయు", + "CONTROLS_REPEAT_TOOLTIP": "కొన్ని నివేదికలు లేదా ప్రతిపాదనలు అనేక మార్లు చెయ్యండి.", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "అంతవరకు మళ్ళీ కొనసాగించండి", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ఒక వెల నిజమైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ఒక వె తప్పైనప్పుడు కొన్ని నివేదికలు లేదా ప్రతిపాదనలు చెయ్యండి.", + "CONTROLS_FOR_TITLE": "దీనితో లెక్కించు %1 నుండి %2 వరకు %3 తో %4", + "CONTROLS_FOREACH_TITLE": "ఒక అంశం కోసం %1 జాబితా లో %2", + "CONTROLS_IF_MSG_IF": "అయితే", + "LOGIC_OPERATION_AND": "మరియు", + "LOGIC_OPERATION_OR": "లేదా", + "LOGIC_NEGATE_TITLE": "%1 కాదు", + "LOGIC_BOOLEAN_TRUE": "సత్యం", + "LOGIC_BOOLEAN_FALSE": "అసత్యం", + "LOGIC_NULL": "చెల్లని", + "LOGIC_TERNARY_CONDITION": "పరీక్షించు", + "LOGIC_TERNARY_IF_TRUE": "సత్యమైతే", + "LOGIC_TERNARY_IF_FALSE": "అసత్యమైతే", + "MATH_NUMBER_TOOLTIP": "ఒ సంఖ్య.", + "MATH_ARITHMETIC_HELPURL": "https://te.wikipedia.org/wiki/Arithmetic", + "MATH_ARITHMETIC_TOOLTIP_ADD": "రెండు సంఖ్యల మొత్తానికి తిరిగి వెళ్ళండి.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "రెండు సంఖ్యల తేడాకి తిరిగి వెళ్ళండి", + "MATH_IS_POSITIVE": "అనుకూలంగా ఉంది", + "MATH_IS_NEGATIVE": "ప్రతికూలంగా ఉంది", + "MATH_IS_DIVISIBLE_BY": "దీనితో భాగించబడును", + "MATH_ONLIST_OPERATOR_SUM": "జాబితా మొత్తం", + "MATH_ONLIST_OPERATOR_AVERAGE": "జాబితా సగటు", + "TEXT_CREATE_JOIN_TITLE_JOIN": "చేరు", + "TEXT_LENGTH_TITLE": "%1 పొడువు", + "TEXT_ISEMPTY_TITLE": "% 1 ఖాళీ", + "TEXT_CHARAT_FIRST": "మొదటి వర్ణాన్ని పొందు", + "TEXT_CHARAT_LAST": "చివరి వర్ణాన్ని పొందు", + "TEXT_CHARAT_RANDOM": "యాదృశ్చిక వర్ణాన్ని పొందు", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "జాబితా", + "LISTS_INLIST": "జాబితాలో", + "LISTS_GET_INDEX_GET": "పొందు", + "LISTS_GET_INDEX_GET_REMOVE": "తెచ్చుకుని, తీసెయ్యి", + "LISTS_GET_INDEX_REMOVE": "తొలగించు", + "LISTS_GET_INDEX_FROM_END": "#చివరి నుండి", + "LISTS_GET_INDEX_FIRST": "మొదటి", + "LISTS_GET_INDEX_LAST": "చివరి", + "LISTS_GET_INDEX_RANDOM": "యాదృచ్చిక", + "LISTS_SET_INDEX_INPUT_TO": "గా", + "LISTS_GET_SUBLIST_END_FROM_START": "# కు", + "LISTS_GET_SUBLIST_END_FROM_END": "చివరి నుండి # వరకు", + "LISTS_GET_SUBLIST_END_LAST": "తుదకు", + "PROCEDURES_DEFNORETURN_TITLE": "కు", + "PROCEDURES_DEFNORETURN_PROCEDURE": "ఏదో ఒకటి చేయి", + "PROCEDURES_BEFORE_PARAMS": "తో:", + "PROCEDURES_CALL_BEFORE_PARAMS": "తో:", + "PROCEDURES_DEFRETURN_RETURN": "తిరిగి వెళ్ళు", + "DIALOG_OK": "సరే", + "DIALOG_CANCEL": "రద్దు" +} diff --git a/msg/json/th.json b/msg/json/th.json index 2e8d5b8c7e2..1792ba869b6 100644 --- a/msg/json/th.json +++ b/msg/json/th.json @@ -1,341 +1,341 @@ -{ - "@metadata": { - "authors": [ - "Aefgh39622", - "Azpirin", - "Horus", - "Karit", - "Nantapat", - "Octahedron80", - "Roysheng", - "Trisorn Triboon" - ] - }, - "VARIABLES_DEFAULT_NAME": "รายการ", - "UNNAMED_KEY": "ไม่มีชื่อ", - "TODAY": "วันนี้", - "DUPLICATE_BLOCK": "ทำสำเนา", - "ADD_COMMENT": "ใส่คำอธิบาย", - "REMOVE_COMMENT": "เอาคำอธิบายออก", - "DUPLICATE_COMMENT": "ทำสำเนาความเห็น", - "EXTERNAL_INPUTS": "อินพุตภายนอก", - "INLINE_INPUTS": "อินพุตในบรรทัด", - "DELETE_BLOCK": "ลบบล็อก", - "DELETE_X_BLOCKS": "ลบ %1 บล็อก", - "DELETE_ALL_BLOCKS": "ลบ %1 บล็อกทั้งหมด?", - "CLEAN_UP": "จัดเรียงบล็อกให้เป็นแถว", - "COLLAPSE_BLOCK": "ย่อบล็อก", - "COLLAPSE_ALL": "ย่อบล็อก", - "EXPAND_BLOCK": "ขยายบล็อก", - "EXPAND_ALL": "ขยายบล็อก", - "DISABLE_BLOCK": "ปิดใช้งานบล็อก", - "ENABLE_BLOCK": "เปิดใช้งานบล็อก", - "HELP": "ช่วยเหลือ", - "UNDO": "ย้อนกลับ", - "REDO": "ทำซ้ำ", - "CHANGE_VALUE_TITLE": "เปลี่ยนค่า:", - "RENAME_VARIABLE": "เปลี่ยนชื่อตัวแปร...", - "RENAME_VARIABLE_TITLE": "เปลี่ยนชื่อตัวแปร '%1' ทั้งหมดเป็น:", - "NEW_VARIABLE": "สร้างตัวแปร...", - "NEW_STRING_VARIABLE": "สร้างตัวแปร string", - "NEW_NUMBER_VARIABLE": "สร้างตัวแปรจำนวน", - "NEW_COLOUR_VARIABLE": "สร้างตัวแปรสี", - "NEW_VARIABLE_TYPE_TITLE": "ชนิดตัวแปรใหม่", - "NEW_VARIABLE_TITLE": "ชื่อตัวแปรใหม่:", - "VARIABLE_ALREADY_EXISTS": "มีตัวแปรชื่อ '%1' อยู่แล้ว", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ตัวแปรชื่อ '%1' มีอยู่แล้วสำหรับตัวแปรอื่นของชนิด: '%2'", - "DELETE_VARIABLE_CONFIRMATION": "ลบการใช้ตัวแปร %2 %1 ครั้งหรือไม่", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "ไม่สามารถลบตัวแปร '%1' ได้เนื่องจากเป็นส่วนหนึ่งของนิยามของฟังก์ชัน '%2'", - "DELETE_VARIABLE": "ลบตัวแปร '%1'", - "COLOUR_PICKER_HELPURL": "https://th.wikipedia.org/wiki/สี", - "COLOUR_PICKER_TOOLTIP": "เลือกสีจากจานสี", - "COLOUR_RANDOM_TITLE": "สุ่มสี", - "COLOUR_RANDOM_TOOLTIP": "เลือกสีแบบสุ่ม", - "COLOUR_RGB_TITLE": "สีที่ประกอบด้วย", - "COLOUR_RGB_RED": "ค่าสีแดง", - "COLOUR_RGB_GREEN": "ค่าสีเขียว", - "COLOUR_RGB_BLUE": "ค่าสีน้ำเงิน", - "COLOUR_RGB_TOOLTIP": "สร้างสีด้วยการกำหนดค่าสีแดง เขียว และน้ำเงิน ค่าทั้งหมดต้องอยู่ระหว่าง 0 ถึง 100", - "COLOUR_BLEND_TITLE": "ผสม", - "COLOUR_BLEND_COLOUR1": "สีที่ 1", - "COLOUR_BLEND_COLOUR2": "สีที่ 2", - "COLOUR_BLEND_RATIO": "อัตราส่วน", - "COLOUR_BLEND_TOOLTIP": "ผสมสองสีเข้าด้วยกันด้วยอัตราส่วน (0.0 - 1.0)", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "ทำซ้ำ %1 ครั้ง", - "CONTROLS_REPEAT_INPUT_DO": "ทำ", - "CONTROLS_REPEAT_TOOLTIP": "ทำซ้ำบางคำสั่งหลายครั้ง", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ทำซ้ำขณะที่", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ทำซ้ำจนกระทั่ง", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ขณะที่ค่าเป็นจริง ก็จะทำบางคำสั่ง", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ขณะที่ค่าเป็นเท็จ ก็จะทำบางคำสั่ง", - "CONTROLS_FOR_TOOLTIP": "ตัวแปร '%1' จะเริ่มจากจำนวนเริ่มต้น ไปจนถึงจำนวนสุดท้าย ตามระยะที่กำหนด และ ทำบล็อกที่กำหนดไว้", - "CONTROLS_FOR_TITLE": "นับด้วย %1 จาก %2 จนถึง %3 เปลี่ยนค่าทีละ %4", - "CONTROLS_FOREACH_TITLE": "จากทุกรายการ %1 ในรายชื่อ %2", - "CONTROLS_FOREACH_TOOLTIP": "จากทุกรายการในรายชื่อ ตั้งค่าตัวแปร \"%1\" เป็นรายการ และทำตามคำสั่งที่กำหนดไว้", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ออกจากการวนซ้ำ", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "เริ่มการวนซ้ำรอบต่อไป", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ออกจากการวนซ้ำที่อยู่", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ข้ามคำสั่งที่เหลืออยู่ และเริ่มต้นวนซ้ำรอบต่อไป", - "CONTROLS_FLOW_STATEMENTS_WARNING": "คำเตือน: บล็อกนี้ใช้งานได้ภายในการวนซ้ำเท่านั้น", - "CONTROLS_IF_TOOLTIP_1": "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด", - "CONTROLS_IF_TOOLTIP_2": "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด แต่ถ้าเงื่อนไขเป็นเท็จก็จะทำ \"นอกเหนือจากนี้\"", - "CONTROLS_IF_TOOLTIP_3": "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำตามคำสั่งในบล็อกแรก แต่ถ้าไม่ก็จะไปตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามเงื่อนไขในบล็อกที่สองนี้", - "CONTROLS_IF_TOOLTIP_4": "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำคำสั่งในบล็อกแรก จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าเงื่อนไขแรกเป็นเท็จ ก็จะทำการตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามคำสั่งในบล็อกที่สอง จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าทั้งเงื่อนไขแรกและเงื่อนไขที่สองเป็นเท็จทั้งหมด ก็จะมาทำบล็อกที่สาม", - "CONTROLS_IF_MSG_IF": "ถ้า", - "CONTROLS_IF_MSG_ELSEIF": "นอกเหนือจากนี้ ถ้า", - "CONTROLS_IF_MSG_ELSE": "นอกเหนือจากนี้", - "CONTROLS_IF_IF_TOOLTIP": "เพิ่ม ลบ หรือจัดเรียงบล็อก \"ถ้า\" นี้ใหม่", - "CONTROLS_IF_ELSEIF_TOOLTIP": "กำหนดเงื่อนไขของบล็อก \"ถ้า\"", - "CONTROLS_IF_ELSE_TOOLTIP": "เพิ่มสิ่งสุดท้าย ที่จะตรวจจับความเป็นไปได้ทั้งหมดของบล็อก \"ถ้า\"", - "LOGIC_COMPARE_HELPURL": "https://th.wikipedia.org/wiki/อสมการ", - "LOGIC_COMPARE_TOOLTIP_EQ": "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นเท่ากัน", - "LOGIC_COMPARE_TOOLTIP_NEQ": "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นไม่เท่ากัน", - "LOGIC_COMPARE_TOOLTIP_LT": "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าค่าที่สอง", - "LOGIC_COMPARE_TOOLTIP_LTE": "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าหรือเท่ากับค่าที่สอง", - "LOGIC_COMPARE_TOOLTIP_GT": "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าค่าที่สอง", - "LOGIC_COMPARE_TOOLTIP_GTE": "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าหรือเท่ากับค่าที่สอง", - "LOGIC_OPERATION_TOOLTIP_AND": "คืนค่าเป็น \"จริง\" ถ้าค่าทั้งสองค่าเป็นจริง", - "LOGIC_OPERATION_AND": "และ", - "LOGIC_OPERATION_TOOLTIP_OR": "คืนค่าเป็น \"จริง\" ถ้ามีอย่างน้อยหนึ่งค่าที่เป็นจริง", - "LOGIC_OPERATION_OR": "หรือ", - "LOGIC_NEGATE_TITLE": "ไม่ %1", - "LOGIC_NEGATE_TOOLTIP": "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่เป็นเท็จ คืนค่าเป็น \"เท็จ\" ถ้าค่าที่ใส่เป็นจริง", - "LOGIC_BOOLEAN_TRUE": "จริง", - "LOGIC_BOOLEAN_FALSE": "เท็จ", - "LOGIC_BOOLEAN_TOOLTIP": "คืนค่าเป็นจริงหรือเท็จ", - "LOGIC_NULL": "ไม่กำหนด", - "LOGIC_NULL_TOOLTIP": "คืนค่า \"ไม่กำหนด\"", - "LOGIC_TERNARY_CONDITION": "ทดสอบ", - "LOGIC_TERNARY_IF_TRUE": "ถ้า เป็นจริง", - "LOGIC_TERNARY_IF_FALSE": "ถ้า เป็นเท็จ", - "LOGIC_TERNARY_TOOLTIP": "ตรวจสอบเงื่อนไขใน \"ทดสอบ\" ถ้าเงื่อนไขเป็นจริง จะคืนค่า \"ถ้า เป็นจริง\" ถ้าเงื่อนไขเป็นเท็จ จะคืนค่า \"ถ้า เป็นเท็จ\"", - "MATH_NUMBER_HELPURL": "https://th.wikipedia.org/wiki/จำนวน", - "MATH_NUMBER_TOOLTIP": "จำนวน", - "MATH_ARITHMETIC_HELPURL": "https://th.wikipedia.org/wiki/เลขคณิต", - "MATH_ARITHMETIC_TOOLTIP_ADD": "คืนค่าผลรวมของตัวเลขทั้งสองจำนวน", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "คืนค่าผลต่างของตัวเลขทั้งสองจำนวน", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "คืนค่าผลคูณของตัวเลขทั้งสองจำนวน", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "คืนค่าผลหารของตัวเลขทั้งสองจำนวน", - "MATH_ARITHMETIC_TOOLTIP_POWER": "คืนค่าผลการยกกำลัง โดยตัวเลขแรกเป็นฐาน และตัวเลขที่สองเป็นเลขชี้กำลัง", - "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", - "MATH_SINGLE_OP_ROOT": "รากที่สอง", - "MATH_SINGLE_TOOLTIP_ROOT": "คืนค่ารากที่สองของตัวเลข", - "MATH_SINGLE_OP_ABSOLUTE": "ค่าสัมบูรณ์", - "MATH_SINGLE_TOOLTIP_ABS": "คืนค่าค่าสัมบูรณ์ของตัวเลข", - "MATH_SINGLE_TOOLTIP_NEG": "คืนค่าติดลบของตัวเลข", - "MATH_SINGLE_TOOLTIP_LN": "คืนค่าลอการิทึมธรรมชาติของตัวเลข", - "MATH_SINGLE_TOOLTIP_LOG10": "คืนค่าลอการิทึมฐานสิบของตัวเลข", - "MATH_SINGLE_TOOLTIP_EXP": "คืนค่า e ยกกำลังด้วยตัวเลข", - "MATH_SINGLE_TOOLTIP_POW10": "คืนค่า 10 ยกกำลังด้วยตัวเลข", - "MATH_TRIG_HELPURL": "https://th.wikipedia.org/wiki/ฟังก์ชันตรีโกณมิติ", - "MATH_TRIG_TOOLTIP_SIN": "คืนค่า sine ขององศา (ไม่ใช่เรเดียน)", - "MATH_TRIG_TOOLTIP_COS": "คืนค่า cosine ขององศา (ไม่ใช่เรเดียน)", - "MATH_TRIG_TOOLTIP_TAN": "คืนค่า tangent ขององศา (ไม่ใช่เรเดียน)", - "MATH_TRIG_TOOLTIP_ASIN": "คืนค่า arcsine ของตัวเลข", - "MATH_TRIG_TOOLTIP_ACOS": "คืนค่า arccosine ของตัวเลข", - "MATH_TRIG_TOOLTIP_ATAN": "คืนค่า arctangent ของตัวเลข", - "MATH_CONSTANT_HELPURL": "https://th.wikipedia.org/wiki/ค่าคงตัวทางคณิตศาสตร์", - "MATH_CONSTANT_TOOLTIP": "คืนค่าคงตัวทางคณิตศาสตร์ที่พบบ่อยๆ เช่น π (3.141…), e (2.718…), φ (1.618…), รากที่สอง (1.414…), รากที่ ½ (0.707…), ∞ (อนันต์)", - "MATH_IS_EVEN": "เป็นจำนวนคู่", - "MATH_IS_ODD": "เป็นจำนวนคี่", - "MATH_IS_PRIME": "เป็นจำนวนเฉพาะ", - "MATH_IS_WHOLE": "เป็นเลขจำนวนเต็ม", - "MATH_IS_POSITIVE": "เป็นเลขบวก", - "MATH_IS_NEGATIVE": "เป็นเลขติดลบ", - "MATH_IS_DIVISIBLE_BY": "หารลงตัว", - "MATH_IS_TOOLTIP": "ตรวจว่าตัวเลขเป็นจำนวนคู่ จำนวนคี่ จำนวนเฉพาะ จำนวนเต็ม เลขบวก เลขติดลบ หรือหารด้วยเลขที่กำหนดลงตัวหรือไม่ คืนค่าเป็นจริงหรือเท็จ", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "เปลี่ยนค่า %1 เป็น %2", - "MATH_CHANGE_TOOLTIP": "เพิ่มค่าของตัวแปร \"%1\"", - "MATH_ROUND_HELPURL": "https://th.wikipedia.org/wiki/การปัดเศษ", - "MATH_ROUND_TOOLTIP": "ปัดเศษของตัวเลขขึ้นหรือลง", - "MATH_ROUND_OPERATOR_ROUND": "ปัดเศษ", - "MATH_ROUND_OPERATOR_ROUNDUP": "ปัดเศษขึ้น", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "ปัดเศษลง", - "MATH_ONLIST_OPERATOR_SUM": "ผลรวมของรายการ", - "MATH_ONLIST_TOOLTIP_SUM": "คืนค่าผลรวมของตัวเลขทั้งหมดในรายการ", - "MATH_ONLIST_OPERATOR_MIN": "น้อยที่สุดในรายการ", - "MATH_ONLIST_TOOLTIP_MIN": "คืนค่าตัวเลขที่น้อยที่สุดในรายการ", - "MATH_ONLIST_OPERATOR_MAX": "มากที่สุดในรายการ", - "MATH_ONLIST_TOOLTIP_MAX": "คืนค่าตัวเลขที่มากที่สุดในรายการ", - "MATH_ONLIST_OPERATOR_AVERAGE": "ค่าเฉลี่ยของรายการ", - "MATH_ONLIST_TOOLTIP_AVERAGE": "คืนค่าเฉลี่ยของรายการ", - "MATH_ONLIST_OPERATOR_MEDIAN": "ค่ามัธยฐานของรายการ", - "MATH_ONLIST_TOOLTIP_MEDIAN": "คืนค่ามัธยฐานของรายการ", - "MATH_ONLIST_OPERATOR_MODE": "ฐานนิยมของรายการ", - "MATH_ONLIST_TOOLTIP_MODE": "คืนค่าฐานนิยมของรายการ", - "MATH_ONLIST_OPERATOR_STD_DEV": "ส่วนเบี่ยงเบนมาตรฐานของรายการ", - "MATH_ONLIST_TOOLTIP_STD_DEV": "คืนค่าส่วนเบี่ยงเบนมาตรฐานของรายการ", - "MATH_ONLIST_OPERATOR_RANDOM": "สุ่มรายการ", - "MATH_ONLIST_TOOLTIP_RANDOM": "สุ่มคืนค่าสิ่งที่อยู่ในรายการ", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "เศษของ %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "คืนค่าเศษที่ได้จากการหารของตัวเลขทั้งสองจำนวน", - "MATH_CONSTRAIN_TITLE": "จำกัดค่า %1 ต่ำสุด %2 สูงสุด %3", - "MATH_CONSTRAIN_TOOLTIP": "จำกัดค่าของตัวเลขให้อยู่ในช่วงที่กำหนด", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "สุ่มเลขจำนวนเต็มตั้งแต่ %1 จนถึง %2", - "MATH_RANDOM_INT_TOOLTIP": "สุ่มเลขจำนวนเต็มจากช่วงที่กำหนด", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "สุ่มเลขเศษส่วน", - "MATH_RANDOM_FLOAT_TOOLTIP": "สุ่มเลขเศษส่วน ตั้งแต่ 0.0 แต่ไม่เกิน 1.0", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 ของ X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "เปลี่ยนอาร์กแทนเจนต์ของชุด (X, Y) จากองศา 180 เป็น -180.", - "TEXT_TEXT_HELPURL": "https://th.wikipedia.org/wiki/สายอักขระ", - "TEXT_TEXT_TOOLTIP": "ตัวหนังสือ คำ หรือข้อความ", - "TEXT_JOIN_TITLE_CREATEWITH": "สร้างข้อความด้วย", - "TEXT_JOIN_TOOLTIP": "สร้างข้อความด้วยการรวมจำนวนของรายการเข้าด้วยกัน", - "TEXT_CREATE_JOIN_TITLE_JOIN": "รวม", - "TEXT_CREATE_JOIN_TOOLTIP": "เพิ่ม ลบ หรือจัดเรียงบล็อกข้อความนี้ใหม่", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "เพิ่มรายการเข้าไปในข้อความ", - "TEXT_APPEND_TITLE": "นำเอา %1 ต่อด้วยข้อความ %2", - "TEXT_APPEND_TOOLTIP": "ต่อข้อความให้ตัวแปร \"%1\"", - "TEXT_LENGTH_TITLE": "ความยาวของ %1", - "TEXT_LENGTH_TOOLTIP": "คืนค่าความยาวของข้อความ (รวมช่องว่าง)", - "TEXT_ISEMPTY_TITLE": "%1 ว่าง", - "TEXT_ISEMPTY_TOOLTIP": "คืนค่าจริง ถ้าข้อความยังว่างเปล่า", - "TEXT_INDEXOF_TOOLTIP": "คืนค่าตำแหน่งที่พบข้อความแรกอยู่ในข้อความที่สอง คืนค่า %1 ถ้าหาไม่พบ", - "TEXT_INDEXOF_TITLE": "ในข้อความ %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "หาข้อความแรกที่พบ", - "TEXT_INDEXOF_OPERATOR_LAST": "หาข้อความสุดท้ายที่พบ", - "TEXT_CHARAT_TITLE": "ในข้อความ %1 %2", - "TEXT_CHARAT_FROM_START": "ดึง ตัวอักษรตัวที่", - "TEXT_CHARAT_FROM_END": "ดึง ตัวอักษรตัวที่ # จากท้าย", - "TEXT_CHARAT_FIRST": "ดึง ตัวอักษรตัวแรก", - "TEXT_CHARAT_LAST": "ดึง ตัวอักษรตัวสุดท้าย", - "TEXT_CHARAT_RANDOM": "ถึงตัวอักษรแบบสุ่ม", - "TEXT_CHARAT_TOOLTIP": "คืนค่าตัวอักษรจากตำแหน่งที่ระบุ", - "TEXT_GET_SUBSTRING_TOOLTIP": "คืนค่าบางส่วนของข้อความ", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ในข้อความ", - "TEXT_GET_SUBSTRING_START_FROM_START": "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่", - "TEXT_GET_SUBSTRING_START_FROM_END": "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่ # จากท้าย", - "TEXT_GET_SUBSTRING_START_FIRST": "แยกข้อความย่อยตั้งแต่ ตัวอักษรแรก", - "TEXT_GET_SUBSTRING_END_FROM_START": "จนถึง ตัวอักษรที่", - "TEXT_GET_SUBSTRING_END_FROM_END": "จนถึง ตัวอักษรที่ # จากท้าย", - "TEXT_GET_SUBSTRING_END_LAST": "จนถึง ตัวอักษรสุดท้าย", - "TEXT_CHANGECASE_TOOLTIP": "คืนค่าสำเนาของข้อความในกรณีต่างๆ", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "เปลี่ยนเป็น ตัวพิมพ์ใหญ่", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "เปลี่ยนเป็น ตัวพิมพ์เล็ก", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "เปลี่ยนเป็น ตัวอักษรแรกเป็นตัวพิมพ์ใหญ่", - "TEXT_TRIM_TOOLTIP": "คืนค่าสำเนาของข้อความที่ลบเอาช่องว่างหน้าและหลังข้อความออกแล้ว", - "TEXT_TRIM_OPERATOR_BOTH": "ลบช่องว่างทั้งสองข้างของ", - "TEXT_TRIM_OPERATOR_LEFT": "ลบช่องว่างด้านหน้าของ", - "TEXT_TRIM_OPERATOR_RIGHT": "ลบช่องว่างข้างท้ายของ", - "TEXT_PRINT_TITLE": "พิมพ์ %1", - "TEXT_PRINT_TOOLTIP": "พิมพ์ข้อความ ตัวเลข หรือค่าอื่นๆ", - "TEXT_PROMPT_TYPE_TEXT": "แสดงหน้าต่างข้อความ", - "TEXT_PROMPT_TYPE_NUMBER": "แสดงหน้าต่างตัวเลข", - "TEXT_PROMPT_TOOLTIP_NUMBER": "แสดงหน้าต่างให้ผู้ใช้ใส่ตัวเลข", - "TEXT_PROMPT_TOOLTIP_TEXT": "แสดงหน้าต่างให้ผู้ใช้ใส่ข้อความ", - "TEXT_COUNT_MESSAGE0": "นับ %1 ภายใน %2", - "TEXT_COUNT_TOOLTIP": "นับจำนวนข้อความแรกที่พบอยู่ในข้อความที่สอง", - "TEXT_REPLACE_MESSAGE0": "แทนที่ %1 ด้วย %2 ใน %3", - "TEXT_REPLACE_TOOLTIP": "แทนที่ข้อความแรกทั้งหมดที่พบในข้อความที่สอง", - "TEXT_REVERSE_MESSAGE0": "เรียง %1 แบบย้อนกลับ", - "TEXT_REVERSE_TOOLTIP": "เรียงตัวอักษรทั้งหมดของข้อความแบบย้อนกลับ", - "LISTS_CREATE_EMPTY_TITLE": "สร้างรายการเปล่า", - "LISTS_CREATE_EMPTY_TOOLTIP": "สร้างรายการเปล่า (ความยาวเป็น 0) ยังไม่มีข้อมูลใดๆ อยู่", - "LISTS_CREATE_WITH_TOOLTIP": "สร้างรายการพร้อมด้วยไอเท็ม", - "LISTS_CREATE_WITH_INPUT_WITH": "สร้างข้อความด้วย", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "รายการ", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "เพิ่ม ลบ หรือจัดเรียงบล็อกรายการนี้ใหม่", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "เพิ่มไอเท็มเข้าไปในรายการ", - "LISTS_REPEAT_TOOLTIP": "สร้างรายการที่ประกอบด้วยค่าตามที่ระบุในจำนวนตามที่ต้องการ", - "LISTS_REPEAT_TITLE": "สร้างรายการที่มีไอเท็ม %1 จำนวน %2", - "LISTS_LENGTH_TITLE": "ความยาวของ %1", - "LISTS_LENGTH_TOOLTIP": "ส่งคืนค่าความยาวของรายการ", - "LISTS_ISEMPTY_TITLE": "%1 ว่างเปล่า", - "LISTS_ISEMPTY_TOOLTIP": "คืนค่าเป็นจริง ถ้ารายการยังว่างเปล่า", - "LISTS_INLIST": "ในรายการ", - "LISTS_INDEX_OF_FIRST": "หาอันแรกที่พบ", - "LISTS_INDEX_OF_LAST": "หาอันสุดท้ายที่พบ", - "LISTS_INDEX_OF_TOOLTIP": "คืนค่าตำแหน่งของไอเท็มอันแรก/สุดท้ายที่พบในรายการ คืนค่า %1 ถ้าหาไม่พบ", - "LISTS_GET_INDEX_GET": "เรียกดู", - "LISTS_GET_INDEX_GET_REMOVE": "เรียกดูและเอาออก", - "LISTS_GET_INDEX_REMOVE": "เอาออก", - "LISTS_GET_INDEX_FROM_END": "# จากท้าย", - "LISTS_GET_INDEX_FIRST": "แรกสุด", - "LISTS_GET_INDEX_LAST": "ท้ายสุด", - "LISTS_GET_INDEX_RANDOM": "สุ่ม", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 คือไอเท็มอันแรกสุด", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 คือไอเท็มอันท้ายสุด", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "คืนค่าไอเท็มอันแรกในรายการ", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "คืนค่าไอเท็มอันสุดท้ายในรายการ", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "คืนค่าไอเท็มแบบสุ่มจากรายการ", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "เอาออก และคืนค่าไอเท็มในตำแหน่งที่ระบุจากรายการ", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "เอาออก และคืนค่าไอเท็มอันแรกในรายการ", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "เอาออก และคืนค่าไอเท็มอันสุดท้ายในรายการ", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "เอาออก และคืนค่าไอเท็มแบบสุ่มจากรายการ", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "เอาไอเท็มแรกสุดในรายการออก", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "เอาไอเท็มอันท้ายสุดในรายการออก", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "เอาไอเท็มแบบสุ่มจากรายการออก", - "LISTS_SET_INDEX_SET": "กำหนด", - "LISTS_SET_INDEX_INSERT": "แทรกที่", - "LISTS_SET_INDEX_INPUT_TO": "เป็น", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "กำหนดไอเท็มในตำแหน่งที่ระบุในรายการ", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "กำหนดไอเท็มอันแรกในรายการ", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "กำหนดไอเท็มอันสุดท้ายในรายการ", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "กำหนดไอเท็มแบบสุ่มในรายการ", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "แทรกไอเท็มเข้าไปในตำแหน่งที่กำหนด", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "แทรกไอเท็มเข้าไปเป็นอันแรกสุดของรายการ", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "เพิ่มไอเท็มเข้าไปท้ายสุดของรายการ", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "เพิ่มไอเท็มเข้าไปในรายการแบบสุ่ม", - "LISTS_GET_SUBLIST_START_FROM_START": "ดึงรายการย่อยจาก #", - "LISTS_GET_SUBLIST_START_FROM_END": "ดึงรายการย่อยจาก # จากท้ายสุด", - "LISTS_GET_SUBLIST_START_FIRST": "ดึงรายการย่อยทั้งแต่แรกสุด", - "LISTS_GET_SUBLIST_END_FROM_START": "จนถึง #", - "LISTS_GET_SUBLIST_END_FROM_END": "ถึง # จากท้ายสุด", - "LISTS_GET_SUBLIST_END_LAST": "ถึง ท้ายสุด", - "LISTS_GET_SUBLIST_TOOLTIP": "สร้างสำเนารายการในช่วงที่กำหนด", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "เรียงลำดับ %1 %2 %3", - "LISTS_SORT_TOOLTIP": "เรียงลำดับสำเนาของรายชื่อ", - "LISTS_SORT_ORDER_ASCENDING": "น้อยไปหามาก", - "LISTS_SORT_ORDER_DESCENDING": "มากไปหาน้อย", - "LISTS_SORT_TYPE_NUMERIC": "ตัวเลข", - "LISTS_SORT_TYPE_TEXT": "ตัวอักษร", - "LISTS_SORT_TYPE_IGNORECASE": "ตัวอักษร", - "LISTS_SPLIT_LIST_FROM_TEXT": "สร้างรายการจากข้อความ", - "LISTS_SPLIT_TEXT_FROM_LIST": "สร้างข้อความจากรายการ", - "LISTS_SPLIT_WITH_DELIMITER": "ด้วยตัวคั่น", - "LISTS_SPLIT_TOOLTIP_SPLIT": "แบ่งข้อความเป็นรายการข้อความ แยกแต่ละรายการด้วยตัวคั่น", - "LISTS_SPLIT_TOOLTIP_JOIN": "รวมรายการข้อความเป็นข้อความเดียว แบ่งด้วยตัวคั่น", - "LISTS_REVERSE_MESSAGE0": "เรียง %1 แบบย้อนกลับ", - "LISTS_REVERSE_TOOLTIP": "เรียงลำดับสำเนาของรายชื่อแบบย้อนกลับ", - "VARIABLES_GET_TOOLTIP": "คืนค่าของตัวแปรนี้", - "VARIABLES_GET_CREATE_SET": "สร้าง \"กำหนด %1\"", - "VARIABLES_SET": "กำหนด %1 จนถึง %2", - "VARIABLES_SET_TOOLTIP": "กำหนดให้ตัวแปรนี้เท่ากับการป้อนข้อมูล", - "VARIABLES_SET_CREATE_GET": "สร้าง \"get %1\"", - "PROCEDURES_DEFNORETURN_TITLE": "ถึง", - "PROCEDURES_DEFNORETURN_PROCEDURE": "ทำอะไรบางอย่าง", - "PROCEDURES_BEFORE_PARAMS": "ด้วย:", - "PROCEDURES_CALL_BEFORE_PARAMS": "ด้วย:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "สร้างฟังก์ชันที่ไม่มีผลลัพธ์", - "PROCEDURES_DEFNORETURN_COMMENT": "อธิบายฟังก์ชันนี้", - "PROCEDURES_DEFRETURN_RETURN": "คืนค่า", - "PROCEDURES_DEFRETURN_TOOLTIP": "สร้างฟังก์ชันที่มีผลลัพธ์", - "PROCEDURES_ALLOW_STATEMENTS": "ข้อความที่ใช้ได้", - "PROCEDURES_DEF_DUPLICATE_WARNING": "ระวัง: ฟังก์ชันนี้มีพารามิเตอร์ที่มีชื่อซ้ำกัน", - "PROCEDURES_CALLNORETURN_HELPURL": "https://th.wikipedia.org/wiki/ซับรู้ทีน", - "PROCEDURES_CALLNORETURN_TOOLTIP": "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\"", - "PROCEDURES_CALLRETURN_HELPURL": "https://th.wikipedia.org/wiki/ซับรูทีน", - "PROCEDURES_CALLRETURN_TOOLTIP": "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\" และใช้ผลลัพธ์ของมัน", - "PROCEDURES_MUTATORCONTAINER_TITLE": "นำเข้า", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "เพิ่ม, ลบ, หรือจัดเรียง ข้อมูลที่ป้อนเข้าฟังก์ชันนี้", - "PROCEDURES_MUTATORARG_TITLE": "ชื่อนำเข้า:", - "PROCEDURES_MUTATORARG_TOOLTIP": "เพิ่มค่าป้อนเข้าฟังก์ชัน", - "PROCEDURES_HIGHLIGHT_DEF": "เน้นฟังก์ชันนิยาม", - "PROCEDURES_CREATE_DO": "สร้าง \"%1\"", - "PROCEDURES_IFRETURN_TOOLTIP": "ถ้ามีค่าเป็นจริง ให้คืนค่าที่สอง", - "PROCEDURES_IFRETURN_WARNING": "ระวัง: บล็อกนี้ใช้เฉพาะในการสร้างฟังก์ชันเท่านั้น", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "เขียนอะไรสักอย่าง", - "WORKSPACE_ARIA_LABEL": "พื้นที่ทำงาน Blockly", - "COLLAPSED_WARNINGS_WARNING": "บล็อกที่ถูกพับมีคำเตือนอยู่ข้างใน.", - "DIALOG_OK": "ตกลง", - "DIALOG_CANCEL": "ยกเลิก" -} +{ + "@metadata": { + "authors": [ + "Aefgh39622", + "Azpirin", + "Horus", + "Karit", + "Nantapat", + "Octahedron80", + "Roysheng", + "Trisorn Triboon" + ] + }, + "VARIABLES_DEFAULT_NAME": "รายการ", + "UNNAMED_KEY": "ไม่มีชื่อ", + "TODAY": "วันนี้", + "DUPLICATE_BLOCK": "ทำสำเนา", + "ADD_COMMENT": "ใส่คำอธิบาย", + "REMOVE_COMMENT": "เอาคำอธิบายออก", + "DUPLICATE_COMMENT": "ทำสำเนาความเห็น", + "EXTERNAL_INPUTS": "อินพุตภายนอก", + "INLINE_INPUTS": "อินพุตในบรรทัด", + "DELETE_BLOCK": "ลบบล็อก", + "DELETE_X_BLOCKS": "ลบ %1 บล็อก", + "DELETE_ALL_BLOCKS": "ลบ %1 บล็อกทั้งหมด?", + "CLEAN_UP": "จัดเรียงบล็อกให้เป็นแถว", + "COLLAPSE_BLOCK": "ย่อบล็อก", + "COLLAPSE_ALL": "ย่อบล็อก", + "EXPAND_BLOCK": "ขยายบล็อก", + "EXPAND_ALL": "ขยายบล็อก", + "DISABLE_BLOCK": "ปิดใช้งานบล็อก", + "ENABLE_BLOCK": "เปิดใช้งานบล็อก", + "HELP": "ช่วยเหลือ", + "UNDO": "ย้อนกลับ", + "REDO": "ทำซ้ำ", + "CHANGE_VALUE_TITLE": "เปลี่ยนค่า:", + "RENAME_VARIABLE": "เปลี่ยนชื่อตัวแปร...", + "RENAME_VARIABLE_TITLE": "เปลี่ยนชื่อตัวแปร '%1' ทั้งหมดเป็น:", + "NEW_VARIABLE": "สร้างตัวแปร...", + "NEW_STRING_VARIABLE": "สร้างตัวแปร string", + "NEW_NUMBER_VARIABLE": "สร้างตัวแปรจำนวน", + "NEW_COLOUR_VARIABLE": "สร้างตัวแปรสี", + "NEW_VARIABLE_TYPE_TITLE": "ชนิดตัวแปรใหม่", + "NEW_VARIABLE_TITLE": "ชื่อตัวแปรใหม่:", + "VARIABLE_ALREADY_EXISTS": "มีตัวแปรชื่อ '%1' อยู่แล้ว", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ตัวแปรชื่อ '%1' มีอยู่แล้วสำหรับตัวแปรอื่นของชนิด: '%2'", + "DELETE_VARIABLE_CONFIRMATION": "ลบการใช้ตัวแปร %2 %1 ครั้งหรือไม่", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "ไม่สามารถลบตัวแปร '%1' ได้เนื่องจากเป็นส่วนหนึ่งของนิยามของฟังก์ชัน '%2'", + "DELETE_VARIABLE": "ลบตัวแปร '%1'", + "COLOUR_PICKER_HELPURL": "https://th.wikipedia.org/wiki/สี", + "COLOUR_PICKER_TOOLTIP": "เลือกสีจากจานสี", + "COLOUR_RANDOM_TITLE": "สุ่มสี", + "COLOUR_RANDOM_TOOLTIP": "เลือกสีแบบสุ่ม", + "COLOUR_RGB_TITLE": "สีที่ประกอบด้วย", + "COLOUR_RGB_RED": "ค่าสีแดง", + "COLOUR_RGB_GREEN": "ค่าสีเขียว", + "COLOUR_RGB_BLUE": "ค่าสีน้ำเงิน", + "COLOUR_RGB_TOOLTIP": "สร้างสีด้วยการกำหนดค่าสีแดง เขียว และน้ำเงิน ค่าทั้งหมดต้องอยู่ระหว่าง 0 ถึง 100", + "COLOUR_BLEND_TITLE": "ผสม", + "COLOUR_BLEND_COLOUR1": "สีที่ 1", + "COLOUR_BLEND_COLOUR2": "สีที่ 2", + "COLOUR_BLEND_RATIO": "อัตราส่วน", + "COLOUR_BLEND_TOOLTIP": "ผสมสองสีเข้าด้วยกันด้วยอัตราส่วน (0.0 - 1.0)", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "ทำซ้ำ %1 ครั้ง", + "CONTROLS_REPEAT_INPUT_DO": "ทำ", + "CONTROLS_REPEAT_TOOLTIP": "ทำซ้ำบางคำสั่งหลายครั้ง", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ทำซ้ำขณะที่", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ทำซ้ำจนกระทั่ง", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ขณะที่ค่าเป็นจริง ก็จะทำบางคำสั่ง", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "ขณะที่ค่าเป็นเท็จ ก็จะทำบางคำสั่ง", + "CONTROLS_FOR_TOOLTIP": "ตัวแปร '%1' จะเริ่มจากจำนวนเริ่มต้น ไปจนถึงจำนวนสุดท้าย ตามระยะที่กำหนด และ ทำบล็อกที่กำหนดไว้", + "CONTROLS_FOR_TITLE": "นับด้วย %1 จาก %2 จนถึง %3 เปลี่ยนค่าทีละ %4", + "CONTROLS_FOREACH_TITLE": "จากทุกรายการ %1 ในรายชื่อ %2", + "CONTROLS_FOREACH_TOOLTIP": "จากทุกรายการในรายชื่อ ตั้งค่าตัวแปร \"%1\" เป็นรายการ และทำตามคำสั่งที่กำหนดไว้", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ออกจากการวนซ้ำ", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "เริ่มการวนซ้ำรอบต่อไป", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ออกจากการวนซ้ำที่อยู่", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "ข้ามคำสั่งที่เหลืออยู่ และเริ่มต้นวนซ้ำรอบต่อไป", + "CONTROLS_FLOW_STATEMENTS_WARNING": "คำเตือน: บล็อกนี้ใช้งานได้ภายในการวนซ้ำเท่านั้น", + "CONTROLS_IF_TOOLTIP_1": "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด", + "CONTROLS_IF_TOOLTIP_2": "ถ้าเงื่อนไขเป็นจริง ก็จะ \"ทำ\" ตามที่กำหนด แต่ถ้าเงื่อนไขเป็นเท็จก็จะทำ \"นอกเหนือจากนี้\"", + "CONTROLS_IF_TOOLTIP_3": "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำตามคำสั่งในบล็อกแรก แต่ถ้าไม่ก็จะไปตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามเงื่อนไขในบล็อกที่สองนี้", + "CONTROLS_IF_TOOLTIP_4": "ถ้าเงื่อนไขแรกเป็นจริง ก็จะทำคำสั่งในบล็อกแรก จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าเงื่อนไขแรกเป็นเท็จ ก็จะทำการตรวจเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริง ก็จะทำตามคำสั่งในบล็อกที่สอง จากนั้นจะข้ามคำสั่งในบล็อกที่เหลือ แต่ถ้าทั้งเงื่อนไขแรกและเงื่อนไขที่สองเป็นเท็จทั้งหมด ก็จะมาทำบล็อกที่สาม", + "CONTROLS_IF_MSG_IF": "ถ้า", + "CONTROLS_IF_MSG_ELSEIF": "นอกเหนือจากนี้ ถ้า", + "CONTROLS_IF_MSG_ELSE": "นอกเหนือจากนี้", + "CONTROLS_IF_IF_TOOLTIP": "เพิ่ม ลบ หรือจัดเรียงบล็อก \"ถ้า\" นี้ใหม่", + "CONTROLS_IF_ELSEIF_TOOLTIP": "กำหนดเงื่อนไขของบล็อก \"ถ้า\"", + "CONTROLS_IF_ELSE_TOOLTIP": "เพิ่มสิ่งสุดท้าย ที่จะตรวจจับความเป็นไปได้ทั้งหมดของบล็อก \"ถ้า\"", + "LOGIC_COMPARE_HELPURL": "https://th.wikipedia.org/wiki/อสมการ", + "LOGIC_COMPARE_TOOLTIP_EQ": "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นเท่ากัน", + "LOGIC_COMPARE_TOOLTIP_NEQ": "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่ทั้งสองค่านั้นไม่เท่ากัน", + "LOGIC_COMPARE_TOOLTIP_LT": "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าค่าที่สอง", + "LOGIC_COMPARE_TOOLTIP_LTE": "คืนค่าเป็น \"จริง\" ถ้าค่าแรกน้อยกว่าหรือเท่ากับค่าที่สอง", + "LOGIC_COMPARE_TOOLTIP_GT": "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าค่าที่สอง", + "LOGIC_COMPARE_TOOLTIP_GTE": "คืนค่าเป็น \"จริง\" ถ้าค่าแรกมากกว่าหรือเท่ากับค่าที่สอง", + "LOGIC_OPERATION_TOOLTIP_AND": "คืนค่าเป็น \"จริง\" ถ้าค่าทั้งสองค่าเป็นจริง", + "LOGIC_OPERATION_AND": "และ", + "LOGIC_OPERATION_TOOLTIP_OR": "คืนค่าเป็น \"จริง\" ถ้ามีอย่างน้อยหนึ่งค่าที่เป็นจริง", + "LOGIC_OPERATION_OR": "หรือ", + "LOGIC_NEGATE_TITLE": "ไม่ %1", + "LOGIC_NEGATE_TOOLTIP": "คืนค่าเป็น \"จริง\" ถ้าค่าที่ใส่เป็นเท็จ คืนค่าเป็น \"เท็จ\" ถ้าค่าที่ใส่เป็นจริง", + "LOGIC_BOOLEAN_TRUE": "จริง", + "LOGIC_BOOLEAN_FALSE": "เท็จ", + "LOGIC_BOOLEAN_TOOLTIP": "คืนค่าเป็นจริงหรือเท็จ", + "LOGIC_NULL": "ไม่กำหนด", + "LOGIC_NULL_TOOLTIP": "คืนค่า \"ไม่กำหนด\"", + "LOGIC_TERNARY_CONDITION": "ทดสอบ", + "LOGIC_TERNARY_IF_TRUE": "ถ้า เป็นจริง", + "LOGIC_TERNARY_IF_FALSE": "ถ้า เป็นเท็จ", + "LOGIC_TERNARY_TOOLTIP": "ตรวจสอบเงื่อนไขใน \"ทดสอบ\" ถ้าเงื่อนไขเป็นจริง จะคืนค่า \"ถ้า เป็นจริง\" ถ้าเงื่อนไขเป็นเท็จ จะคืนค่า \"ถ้า เป็นเท็จ\"", + "MATH_NUMBER_HELPURL": "https://th.wikipedia.org/wiki/จำนวน", + "MATH_NUMBER_TOOLTIP": "จำนวน", + "MATH_ARITHMETIC_HELPURL": "https://th.wikipedia.org/wiki/เลขคณิต", + "MATH_ARITHMETIC_TOOLTIP_ADD": "คืนค่าผลรวมของตัวเลขทั้งสองจำนวน", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "คืนค่าผลต่างของตัวเลขทั้งสองจำนวน", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "คืนค่าผลคูณของตัวเลขทั้งสองจำนวน", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "คืนค่าผลหารของตัวเลขทั้งสองจำนวน", + "MATH_ARITHMETIC_TOOLTIP_POWER": "คืนค่าผลการยกกำลัง โดยตัวเลขแรกเป็นฐาน และตัวเลขที่สองเป็นเลขชี้กำลัง", + "MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root", + "MATH_SINGLE_OP_ROOT": "รากที่สอง", + "MATH_SINGLE_TOOLTIP_ROOT": "คืนค่ารากที่สองของตัวเลข", + "MATH_SINGLE_OP_ABSOLUTE": "ค่าสัมบูรณ์", + "MATH_SINGLE_TOOLTIP_ABS": "คืนค่าค่าสัมบูรณ์ของตัวเลข", + "MATH_SINGLE_TOOLTIP_NEG": "คืนค่าติดลบของตัวเลข", + "MATH_SINGLE_TOOLTIP_LN": "คืนค่าลอการิทึมธรรมชาติของตัวเลข", + "MATH_SINGLE_TOOLTIP_LOG10": "คืนค่าลอการิทึมฐานสิบของตัวเลข", + "MATH_SINGLE_TOOLTIP_EXP": "คืนค่า e ยกกำลังด้วยตัวเลข", + "MATH_SINGLE_TOOLTIP_POW10": "คืนค่า 10 ยกกำลังด้วยตัวเลข", + "MATH_TRIG_HELPURL": "https://th.wikipedia.org/wiki/ฟังก์ชันตรีโกณมิติ", + "MATH_TRIG_TOOLTIP_SIN": "คืนค่า sine ขององศา (ไม่ใช่เรเดียน)", + "MATH_TRIG_TOOLTIP_COS": "คืนค่า cosine ขององศา (ไม่ใช่เรเดียน)", + "MATH_TRIG_TOOLTIP_TAN": "คืนค่า tangent ขององศา (ไม่ใช่เรเดียน)", + "MATH_TRIG_TOOLTIP_ASIN": "คืนค่า arcsine ของตัวเลข", + "MATH_TRIG_TOOLTIP_ACOS": "คืนค่า arccosine ของตัวเลข", + "MATH_TRIG_TOOLTIP_ATAN": "คืนค่า arctangent ของตัวเลข", + "MATH_CONSTANT_HELPURL": "https://th.wikipedia.org/wiki/ค่าคงตัวทางคณิตศาสตร์", + "MATH_CONSTANT_TOOLTIP": "คืนค่าคงตัวทางคณิตศาสตร์ที่พบบ่อยๆ เช่น π (3.141…), e (2.718…), φ (1.618…), รากที่สอง (1.414…), รากที่ ½ (0.707…), ∞ (อนันต์)", + "MATH_IS_EVEN": "เป็นจำนวนคู่", + "MATH_IS_ODD": "เป็นจำนวนคี่", + "MATH_IS_PRIME": "เป็นจำนวนเฉพาะ", + "MATH_IS_WHOLE": "เป็นเลขจำนวนเต็ม", + "MATH_IS_POSITIVE": "เป็นเลขบวก", + "MATH_IS_NEGATIVE": "เป็นเลขติดลบ", + "MATH_IS_DIVISIBLE_BY": "หารลงตัว", + "MATH_IS_TOOLTIP": "ตรวจว่าตัวเลขเป็นจำนวนคู่ จำนวนคี่ จำนวนเฉพาะ จำนวนเต็ม เลขบวก เลขติดลบ หรือหารด้วยเลขที่กำหนดลงตัวหรือไม่ คืนค่าเป็นจริงหรือเท็จ", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "เปลี่ยนค่า %1 เป็น %2", + "MATH_CHANGE_TOOLTIP": "เพิ่มค่าของตัวแปร \"%1\"", + "MATH_ROUND_HELPURL": "https://th.wikipedia.org/wiki/การปัดเศษ", + "MATH_ROUND_TOOLTIP": "ปัดเศษของตัวเลขขึ้นหรือลง", + "MATH_ROUND_OPERATOR_ROUND": "ปัดเศษ", + "MATH_ROUND_OPERATOR_ROUNDUP": "ปัดเศษขึ้น", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "ปัดเศษลง", + "MATH_ONLIST_OPERATOR_SUM": "ผลรวมของรายการ", + "MATH_ONLIST_TOOLTIP_SUM": "คืนค่าผลรวมของตัวเลขทั้งหมดในรายการ", + "MATH_ONLIST_OPERATOR_MIN": "น้อยที่สุดในรายการ", + "MATH_ONLIST_TOOLTIP_MIN": "คืนค่าตัวเลขที่น้อยที่สุดในรายการ", + "MATH_ONLIST_OPERATOR_MAX": "มากที่สุดในรายการ", + "MATH_ONLIST_TOOLTIP_MAX": "คืนค่าตัวเลขที่มากที่สุดในรายการ", + "MATH_ONLIST_OPERATOR_AVERAGE": "ค่าเฉลี่ยของรายการ", + "MATH_ONLIST_TOOLTIP_AVERAGE": "คืนค่าเฉลี่ยของรายการ", + "MATH_ONLIST_OPERATOR_MEDIAN": "ค่ามัธยฐานของรายการ", + "MATH_ONLIST_TOOLTIP_MEDIAN": "คืนค่ามัธยฐานของรายการ", + "MATH_ONLIST_OPERATOR_MODE": "ฐานนิยมของรายการ", + "MATH_ONLIST_TOOLTIP_MODE": "คืนค่าฐานนิยมของรายการ", + "MATH_ONLIST_OPERATOR_STD_DEV": "ส่วนเบี่ยงเบนมาตรฐานของรายการ", + "MATH_ONLIST_TOOLTIP_STD_DEV": "คืนค่าส่วนเบี่ยงเบนมาตรฐานของรายการ", + "MATH_ONLIST_OPERATOR_RANDOM": "สุ่มรายการ", + "MATH_ONLIST_TOOLTIP_RANDOM": "สุ่มคืนค่าสิ่งที่อยู่ในรายการ", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "เศษของ %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "คืนค่าเศษที่ได้จากการหารของตัวเลขทั้งสองจำนวน", + "MATH_CONSTRAIN_TITLE": "จำกัดค่า %1 ต่ำสุด %2 สูงสุด %3", + "MATH_CONSTRAIN_TOOLTIP": "จำกัดค่าของตัวเลขให้อยู่ในช่วงที่กำหนด", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "สุ่มเลขจำนวนเต็มตั้งแต่ %1 จนถึง %2", + "MATH_RANDOM_INT_TOOLTIP": "สุ่มเลขจำนวนเต็มจากช่วงที่กำหนด", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "สุ่มเลขเศษส่วน", + "MATH_RANDOM_FLOAT_TOOLTIP": "สุ่มเลขเศษส่วน ตั้งแต่ 0.0 แต่ไม่เกิน 1.0", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 ของ X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "เปลี่ยนอาร์กแทนเจนต์ของชุด (X, Y) จากองศา 180 เป็น -180.", + "TEXT_TEXT_HELPURL": "https://th.wikipedia.org/wiki/สายอักขระ", + "TEXT_TEXT_TOOLTIP": "ตัวหนังสือ คำ หรือข้อความ", + "TEXT_JOIN_TITLE_CREATEWITH": "สร้างข้อความด้วย", + "TEXT_JOIN_TOOLTIP": "สร้างข้อความด้วยการรวมจำนวนของรายการเข้าด้วยกัน", + "TEXT_CREATE_JOIN_TITLE_JOIN": "รวม", + "TEXT_CREATE_JOIN_TOOLTIP": "เพิ่ม ลบ หรือจัดเรียงบล็อกข้อความนี้ใหม่", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "เพิ่มรายการเข้าไปในข้อความ", + "TEXT_APPEND_TITLE": "นำเอา %1 ต่อด้วยข้อความ %2", + "TEXT_APPEND_TOOLTIP": "ต่อข้อความให้ตัวแปร \"%1\"", + "TEXT_LENGTH_TITLE": "ความยาวของ %1", + "TEXT_LENGTH_TOOLTIP": "คืนค่าความยาวของข้อความ (รวมช่องว่าง)", + "TEXT_ISEMPTY_TITLE": "%1 ว่าง", + "TEXT_ISEMPTY_TOOLTIP": "คืนค่าจริง ถ้าข้อความยังว่างเปล่า", + "TEXT_INDEXOF_TOOLTIP": "คืนค่าตำแหน่งที่พบข้อความแรกอยู่ในข้อความที่สอง คืนค่า %1 ถ้าหาไม่พบ", + "TEXT_INDEXOF_TITLE": "ในข้อความ %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "หาข้อความแรกที่พบ", + "TEXT_INDEXOF_OPERATOR_LAST": "หาข้อความสุดท้ายที่พบ", + "TEXT_CHARAT_TITLE": "ในข้อความ %1 %2", + "TEXT_CHARAT_FROM_START": "ดึง ตัวอักษรตัวที่", + "TEXT_CHARAT_FROM_END": "ดึง ตัวอักษรตัวที่ # จากท้าย", + "TEXT_CHARAT_FIRST": "ดึง ตัวอักษรตัวแรก", + "TEXT_CHARAT_LAST": "ดึง ตัวอักษรตัวสุดท้าย", + "TEXT_CHARAT_RANDOM": "ถึงตัวอักษรแบบสุ่ม", + "TEXT_CHARAT_TOOLTIP": "คืนค่าตัวอักษรจากตำแหน่งที่ระบุ", + "TEXT_GET_SUBSTRING_TOOLTIP": "คืนค่าบางส่วนของข้อความ", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ในข้อความ", + "TEXT_GET_SUBSTRING_START_FROM_START": "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่", + "TEXT_GET_SUBSTRING_START_FROM_END": "แยกข้อความย่อยตั้งแต่ ตัวอักษรที่ # จากท้าย", + "TEXT_GET_SUBSTRING_START_FIRST": "แยกข้อความย่อยตั้งแต่ ตัวอักษรแรก", + "TEXT_GET_SUBSTRING_END_FROM_START": "จนถึง ตัวอักษรที่", + "TEXT_GET_SUBSTRING_END_FROM_END": "จนถึง ตัวอักษรที่ # จากท้าย", + "TEXT_GET_SUBSTRING_END_LAST": "จนถึง ตัวอักษรสุดท้าย", + "TEXT_CHANGECASE_TOOLTIP": "คืนค่าสำเนาของข้อความในกรณีต่างๆ", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "เปลี่ยนเป็น ตัวพิมพ์ใหญ่", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "เปลี่ยนเป็น ตัวพิมพ์เล็ก", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "เปลี่ยนเป็น ตัวอักษรแรกเป็นตัวพิมพ์ใหญ่", + "TEXT_TRIM_TOOLTIP": "คืนค่าสำเนาของข้อความที่ลบเอาช่องว่างหน้าและหลังข้อความออกแล้ว", + "TEXT_TRIM_OPERATOR_BOTH": "ลบช่องว่างทั้งสองข้างของ", + "TEXT_TRIM_OPERATOR_LEFT": "ลบช่องว่างด้านหน้าของ", + "TEXT_TRIM_OPERATOR_RIGHT": "ลบช่องว่างข้างท้ายของ", + "TEXT_PRINT_TITLE": "พิมพ์ %1", + "TEXT_PRINT_TOOLTIP": "พิมพ์ข้อความ ตัวเลข หรือค่าอื่นๆ", + "TEXT_PROMPT_TYPE_TEXT": "แสดงหน้าต่างข้อความ", + "TEXT_PROMPT_TYPE_NUMBER": "แสดงหน้าต่างตัวเลข", + "TEXT_PROMPT_TOOLTIP_NUMBER": "แสดงหน้าต่างให้ผู้ใช้ใส่ตัวเลข", + "TEXT_PROMPT_TOOLTIP_TEXT": "แสดงหน้าต่างให้ผู้ใช้ใส่ข้อความ", + "TEXT_COUNT_MESSAGE0": "นับ %1 ภายใน %2", + "TEXT_COUNT_TOOLTIP": "นับจำนวนข้อความแรกที่พบอยู่ในข้อความที่สอง", + "TEXT_REPLACE_MESSAGE0": "แทนที่ %1 ด้วย %2 ใน %3", + "TEXT_REPLACE_TOOLTIP": "แทนที่ข้อความแรกทั้งหมดที่พบในข้อความที่สอง", + "TEXT_REVERSE_MESSAGE0": "เรียง %1 แบบย้อนกลับ", + "TEXT_REVERSE_TOOLTIP": "เรียงตัวอักษรทั้งหมดของข้อความแบบย้อนกลับ", + "LISTS_CREATE_EMPTY_TITLE": "สร้างรายการเปล่า", + "LISTS_CREATE_EMPTY_TOOLTIP": "สร้างรายการเปล่า (ความยาวเป็น 0) ยังไม่มีข้อมูลใดๆ อยู่", + "LISTS_CREATE_WITH_TOOLTIP": "สร้างรายการพร้อมด้วยไอเท็ม", + "LISTS_CREATE_WITH_INPUT_WITH": "สร้างข้อความด้วย", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "รายการ", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "เพิ่ม ลบ หรือจัดเรียงบล็อกรายการนี้ใหม่", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "เพิ่มไอเท็มเข้าไปในรายการ", + "LISTS_REPEAT_TOOLTIP": "สร้างรายการที่ประกอบด้วยค่าตามที่ระบุในจำนวนตามที่ต้องการ", + "LISTS_REPEAT_TITLE": "สร้างรายการที่มีไอเท็ม %1 จำนวน %2", + "LISTS_LENGTH_TITLE": "ความยาวของ %1", + "LISTS_LENGTH_TOOLTIP": "ส่งคืนค่าความยาวของรายการ", + "LISTS_ISEMPTY_TITLE": "%1 ว่างเปล่า", + "LISTS_ISEMPTY_TOOLTIP": "คืนค่าเป็นจริง ถ้ารายการยังว่างเปล่า", + "LISTS_INLIST": "ในรายการ", + "LISTS_INDEX_OF_FIRST": "หาอันแรกที่พบ", + "LISTS_INDEX_OF_LAST": "หาอันสุดท้ายที่พบ", + "LISTS_INDEX_OF_TOOLTIP": "คืนค่าตำแหน่งของไอเท็มอันแรก/สุดท้ายที่พบในรายการ คืนค่า %1 ถ้าหาไม่พบ", + "LISTS_GET_INDEX_GET": "เรียกดู", + "LISTS_GET_INDEX_GET_REMOVE": "เรียกดูและเอาออก", + "LISTS_GET_INDEX_REMOVE": "เอาออก", + "LISTS_GET_INDEX_FROM_END": "# จากท้าย", + "LISTS_GET_INDEX_FIRST": "แรกสุด", + "LISTS_GET_INDEX_LAST": "ท้ายสุด", + "LISTS_GET_INDEX_RANDOM": "สุ่ม", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 คือไอเท็มอันแรกสุด", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 คือไอเท็มอันท้ายสุด", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "คืนค่าไอเท็มอันแรกในรายการ", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "คืนค่าไอเท็มอันสุดท้ายในรายการ", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "คืนค่าไอเท็มแบบสุ่มจากรายการ", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "เอาออก และคืนค่าไอเท็มในตำแหน่งที่ระบุจากรายการ", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "เอาออก และคืนค่าไอเท็มอันแรกในรายการ", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "เอาออก และคืนค่าไอเท็มอันสุดท้ายในรายการ", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "เอาออก และคืนค่าไอเท็มแบบสุ่มจากรายการ", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "คืนค่าเป็นไอเท็มตามตำแหน่งที่ระบุ", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "เอาไอเท็มแรกสุดในรายการออก", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "เอาไอเท็มอันท้ายสุดในรายการออก", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "เอาไอเท็มแบบสุ่มจากรายการออก", + "LISTS_SET_INDEX_SET": "กำหนด", + "LISTS_SET_INDEX_INSERT": "แทรกที่", + "LISTS_SET_INDEX_INPUT_TO": "เป็น", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "กำหนดไอเท็มในตำแหน่งที่ระบุในรายการ", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "กำหนดไอเท็มอันแรกในรายการ", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "กำหนดไอเท็มอันสุดท้ายในรายการ", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "กำหนดไอเท็มแบบสุ่มในรายการ", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "แทรกไอเท็มเข้าไปในตำแหน่งที่กำหนด", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "แทรกไอเท็มเข้าไปเป็นอันแรกสุดของรายการ", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "เพิ่มไอเท็มเข้าไปท้ายสุดของรายการ", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "เพิ่มไอเท็มเข้าไปในรายการแบบสุ่ม", + "LISTS_GET_SUBLIST_START_FROM_START": "ดึงรายการย่อยจาก #", + "LISTS_GET_SUBLIST_START_FROM_END": "ดึงรายการย่อยจาก # จากท้ายสุด", + "LISTS_GET_SUBLIST_START_FIRST": "ดึงรายการย่อยทั้งแต่แรกสุด", + "LISTS_GET_SUBLIST_END_FROM_START": "จนถึง #", + "LISTS_GET_SUBLIST_END_FROM_END": "ถึง # จากท้ายสุด", + "LISTS_GET_SUBLIST_END_LAST": "ถึง ท้ายสุด", + "LISTS_GET_SUBLIST_TOOLTIP": "สร้างสำเนารายการในช่วงที่กำหนด", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "เรียงลำดับ %1 %2 %3", + "LISTS_SORT_TOOLTIP": "เรียงลำดับสำเนาของรายชื่อ", + "LISTS_SORT_ORDER_ASCENDING": "น้อยไปหามาก", + "LISTS_SORT_ORDER_DESCENDING": "มากไปหาน้อย", + "LISTS_SORT_TYPE_NUMERIC": "ตัวเลข", + "LISTS_SORT_TYPE_TEXT": "ตัวอักษร", + "LISTS_SORT_TYPE_IGNORECASE": "ตัวอักษร", + "LISTS_SPLIT_LIST_FROM_TEXT": "สร้างรายการจากข้อความ", + "LISTS_SPLIT_TEXT_FROM_LIST": "สร้างข้อความจากรายการ", + "LISTS_SPLIT_WITH_DELIMITER": "ด้วยตัวคั่น", + "LISTS_SPLIT_TOOLTIP_SPLIT": "แบ่งข้อความเป็นรายการข้อความ แยกแต่ละรายการด้วยตัวคั่น", + "LISTS_SPLIT_TOOLTIP_JOIN": "รวมรายการข้อความเป็นข้อความเดียว แบ่งด้วยตัวคั่น", + "LISTS_REVERSE_MESSAGE0": "เรียง %1 แบบย้อนกลับ", + "LISTS_REVERSE_TOOLTIP": "เรียงลำดับสำเนาของรายชื่อแบบย้อนกลับ", + "VARIABLES_GET_TOOLTIP": "คืนค่าของตัวแปรนี้", + "VARIABLES_GET_CREATE_SET": "สร้าง \"กำหนด %1\"", + "VARIABLES_SET": "กำหนด %1 จนถึง %2", + "VARIABLES_SET_TOOLTIP": "กำหนดให้ตัวแปรนี้เท่ากับการป้อนข้อมูล", + "VARIABLES_SET_CREATE_GET": "สร้าง \"get %1\"", + "PROCEDURES_DEFNORETURN_TITLE": "ถึง", + "PROCEDURES_DEFNORETURN_PROCEDURE": "ทำอะไรบางอย่าง", + "PROCEDURES_BEFORE_PARAMS": "ด้วย:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ด้วย:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "สร้างฟังก์ชันที่ไม่มีผลลัพธ์", + "PROCEDURES_DEFNORETURN_COMMENT": "อธิบายฟังก์ชันนี้", + "PROCEDURES_DEFRETURN_RETURN": "คืนค่า", + "PROCEDURES_DEFRETURN_TOOLTIP": "สร้างฟังก์ชันที่มีผลลัพธ์", + "PROCEDURES_ALLOW_STATEMENTS": "ข้อความที่ใช้ได้", + "PROCEDURES_DEF_DUPLICATE_WARNING": "ระวัง: ฟังก์ชันนี้มีพารามิเตอร์ที่มีชื่อซ้ำกัน", + "PROCEDURES_CALLNORETURN_HELPURL": "https://th.wikipedia.org/wiki/ซับรู้ทีน", + "PROCEDURES_CALLNORETURN_TOOLTIP": "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\"", + "PROCEDURES_CALLRETURN_HELPURL": "https://th.wikipedia.org/wiki/ซับรูทีน", + "PROCEDURES_CALLRETURN_TOOLTIP": "เรียกใช้ฟังก์ชันที่สร้างโดยผู้ใช้ \"%1\" และใช้ผลลัพธ์ของมัน", + "PROCEDURES_MUTATORCONTAINER_TITLE": "นำเข้า", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "เพิ่ม, ลบ, หรือจัดเรียง ข้อมูลที่ป้อนเข้าฟังก์ชันนี้", + "PROCEDURES_MUTATORARG_TITLE": "ชื่อนำเข้า:", + "PROCEDURES_MUTATORARG_TOOLTIP": "เพิ่มค่าป้อนเข้าฟังก์ชัน", + "PROCEDURES_HIGHLIGHT_DEF": "เน้นฟังก์ชันนิยาม", + "PROCEDURES_CREATE_DO": "สร้าง \"%1\"", + "PROCEDURES_IFRETURN_TOOLTIP": "ถ้ามีค่าเป็นจริง ให้คืนค่าที่สอง", + "PROCEDURES_IFRETURN_WARNING": "ระวัง: บล็อกนี้ใช้เฉพาะในการสร้างฟังก์ชันเท่านั้น", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "เขียนอะไรสักอย่าง", + "WORKSPACE_ARIA_LABEL": "พื้นที่ทำงาน Blockly", + "COLLAPSED_WARNINGS_WARNING": "บล็อกที่ถูกพับมีคำเตือนอยู่ข้างใน.", + "DIALOG_OK": "ตกลง", + "DIALOG_CANCEL": "ยกเลิก" +} diff --git a/msg/json/ti.json b/msg/json/ti.json index 79b173230b1..d16ef573afa 100644 --- a/msg/json/ti.json +++ b/msg/json/ti.json @@ -1,50 +1,50 @@ -{ - "@metadata": { - "authors": [ - "Joanmp17", - "Taj11" - ] - }, - "VARIABLES_DEFAULT_NAME": "ዓይነት", - "TODAY": "ሎሚ", - "DUPLICATE_BLOCK": "ደጋግም", - "ADD_COMMENT": "ርኢቶ ሃብ", - "REMOVE_COMMENT": "ርኢቶ ኣወግድ", - "DUPLICATE_COMMENT": "ርኢቶ ድገም", - "EXTERNAL_INPUTS": "ናይ ደገ እታወታት", - "INLINE_INPUTS": "መስመራዊ እታወታት", - "DELETE_BLOCK": "ሳንዱቅ ኣወግድ", - "CLEAN_UP": "ሳንዱቅ ፅረግ", - "COLLAPSE_BLOCK": "ሳንዱቅ ኣንእስ", - "COLLAPSE_ALL": "ሳንዱቃት ኣንእስ", - "EXPAND_BLOCK": "ሳንዱቅ ዘርግሕ", - "EXPAND_ALL": "ሳንዱቃት ዘርግሕ", - "DISABLE_BLOCK": "ሳንዱቅ ኣልምስ", - "ENABLE_BLOCK": "ሳንዱቅ ኣክእል", - "HELP": "ሓገዝ", - "UNDO": "ምለስ", - "REDO": "እንደገና ፈጽም", - "CHANGE_VALUE_TITLE": "ዋጋ ቀይር", - "RENAME_VARIABLE": "ስም ተተካኢ ቀይር", - "NEW_VARIABLE": "ተተካኢ ፍጠር", - "NEW_STRING_VARIABLE": "ስትሪንግ ተተካኢ ፍጠር", - "NEW_NUMBER_VARIABLE": "ቁፅሪ ተተካኢ ፍጠር", - "NEW_COLOUR_VARIABLE": "ሕብሪ ተተካኢ ፍጠር", - "NEW_VARIABLE_TYPE_TITLE": "ሓዱሽ ዓይነት ተተካኢ", - "NEW_VARIABLE_TITLE": "ስም ሓዱሽ ተተካኢ", - "COLOUR_RANDOM_TITLE": "ግምታዊ ሕብሪ", - "COLOUR_RANDOM_TOOLTIP": "ብግምት ሕብሪ ምረፅ", - "COLOUR_RGB_TITLE": "በዚ ቀልም", - "COLOUR_RGB_RED": "ቀይሕ", - "COLOUR_RGB_GREEN": "ሓምለዋይ", - "COLOUR_RGB_BLUE": "ሰማያዊ", - "COLOUR_RGB_TOOLTIP": "በቶም ዝተገለፁ መጠናት ቀይሕ፣ ሓምለዋይን ሰማያውን ሕብሪ ፍጠር። ኩሎም ዋጋታት ኣብ መንጎ 0ን 100ን ክኾኑ ኣለዎም።", - "COLOUR_BLEND_TITLE": "ዕፀፍ", - "COLOUR_BLEND_COLOUR1": "ሕብሪ 1", - "COLOUR_BLEND_COLOUR2": "ሕብሪ 2", - "COLOUR_BLEND_RATIO": "መጠን", - "CONTROLS_REPEAT_INPUT_DO": "ስራሕ", - "LISTS_GET_INDEX_RANDOM": "ሃውራዊ", - "DIALOG_OK": "ሕራይ", - "DIALOG_CANCEL": "ኣትርፍ" -} +{ + "@metadata": { + "authors": [ + "Joanmp17", + "Taj11" + ] + }, + "VARIABLES_DEFAULT_NAME": "ዓይነት", + "TODAY": "ሎሚ", + "DUPLICATE_BLOCK": "ደጋግም", + "ADD_COMMENT": "ርኢቶ ሃብ", + "REMOVE_COMMENT": "ርኢቶ ኣወግድ", + "DUPLICATE_COMMENT": "ርኢቶ ድገም", + "EXTERNAL_INPUTS": "ናይ ደገ እታወታት", + "INLINE_INPUTS": "መስመራዊ እታወታት", + "DELETE_BLOCK": "ሳንዱቅ ኣወግድ", + "CLEAN_UP": "ሳንዱቅ ፅረግ", + "COLLAPSE_BLOCK": "ሳንዱቅ ኣንእስ", + "COLLAPSE_ALL": "ሳንዱቃት ኣንእስ", + "EXPAND_BLOCK": "ሳንዱቅ ዘርግሕ", + "EXPAND_ALL": "ሳንዱቃት ዘርግሕ", + "DISABLE_BLOCK": "ሳንዱቅ ኣልምስ", + "ENABLE_BLOCK": "ሳንዱቅ ኣክእል", + "HELP": "ሓገዝ", + "UNDO": "ምለስ", + "REDO": "እንደገና ፈጽም", + "CHANGE_VALUE_TITLE": "ዋጋ ቀይር", + "RENAME_VARIABLE": "ስም ተተካኢ ቀይር", + "NEW_VARIABLE": "ተተካኢ ፍጠር", + "NEW_STRING_VARIABLE": "ስትሪንግ ተተካኢ ፍጠር", + "NEW_NUMBER_VARIABLE": "ቁፅሪ ተተካኢ ፍጠር", + "NEW_COLOUR_VARIABLE": "ሕብሪ ተተካኢ ፍጠር", + "NEW_VARIABLE_TYPE_TITLE": "ሓዱሽ ዓይነት ተተካኢ", + "NEW_VARIABLE_TITLE": "ስም ሓዱሽ ተተካኢ", + "COLOUR_RANDOM_TITLE": "ግምታዊ ሕብሪ", + "COLOUR_RANDOM_TOOLTIP": "ብግምት ሕብሪ ምረፅ", + "COLOUR_RGB_TITLE": "በዚ ቀልም", + "COLOUR_RGB_RED": "ቀይሕ", + "COLOUR_RGB_GREEN": "ሓምለዋይ", + "COLOUR_RGB_BLUE": "ሰማያዊ", + "COLOUR_RGB_TOOLTIP": "በቶም ዝተገለፁ መጠናት ቀይሕ፣ ሓምለዋይን ሰማያውን ሕብሪ ፍጠር። ኩሎም ዋጋታት ኣብ መንጎ 0ን 100ን ክኾኑ ኣለዎም።", + "COLOUR_BLEND_TITLE": "ዕፀፍ", + "COLOUR_BLEND_COLOUR1": "ሕብሪ 1", + "COLOUR_BLEND_COLOUR2": "ሕብሪ 2", + "COLOUR_BLEND_RATIO": "መጠን", + "CONTROLS_REPEAT_INPUT_DO": "ስራሕ", + "LISTS_GET_INDEX_RANDOM": "ሃውራዊ", + "DIALOG_OK": "ሕራይ", + "DIALOG_CANCEL": "ኣትርፍ" +} diff --git a/msg/json/tl.json b/msg/json/tl.json index fc643d3234e..db9ff1abd81 100644 --- a/msg/json/tl.json +++ b/msg/json/tl.json @@ -1,130 +1,130 @@ -{ - "@metadata": { - "authors": [ - "아라" - ] - }, - "DUPLICATE_BLOCK": "Kaparehas", - "ADD_COMMENT": "Dagdag komento", - "EXTERNAL_INPUTS": "Panlabas na Inputs", - "INLINE_INPUTS": "Inline na Inputs", - "DELETE_BLOCK": "burahin ang bloke", - "DELETE_X_BLOCKS": "burahin %1 ng bloke", - "COLLAPSE_BLOCK": "bloke", - "COLLAPSE_ALL": "bloke", - "EXPAND_BLOCK": "Palawakin ang Block", - "EXPAND_ALL": "Palawakin ang Blocks", - "DISABLE_BLOCK": "Ipangwalang bisa ang Block", - "ENABLE_BLOCK": "Bigyan ng bisa ang Block", - "HELP": "Tulong", - "CHANGE_VALUE_TITLE": "pagbago ng value:", - "COLOUR_PICKER_TOOLTIP": "pagpili ng kulay sa paleta.", - "COLOUR_RANDOM_TITLE": "iba ibang kulay", - "COLOUR_RANDOM_TOOLTIP": "pagpili ng iba't ibang kulay.", - "COLOUR_RGB_TITLE": "kulayan ng", - "COLOUR_RGB_RED": "pula", - "COLOUR_RGB_GREEN": "berde", - "COLOUR_RGB_BLUE": "asul", - "COLOUR_RGB_TOOLTIP": "gumawa ng kulay ng may espisipikong dami ng kulay pula, berde, at asul. lahat ng halaga ay dapat sa pagitan ng 0 at 100.", - "COLOUR_BLEND_TITLE": "halo", - "COLOUR_BLEND_COLOUR1": "kulay 1", - "COLOUR_BLEND_COLOUR2": "kulay 2", - "COLOUR_BLEND_RATIO": "proporsyon", - "COLOUR_BLEND_TOOLTIP": "Paghalo ng dalawang kulay kasama ng ibinigay na proporsyon (0.0 - 1.0).", - "CONTROLS_REPEAT_TITLE": "ulitin %1 beses", - "CONTROLS_REPEAT_INPUT_DO": "gawin", - "CONTROLS_REPEAT_TOOLTIP": "gumawa ng ilang pangungusap ng ilang ulit.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ulitin habang", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ulitin hanggang", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Habang ang value ay true, gagawin ang ibang statements.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Habang ang value ay false, gagawin ang ibang statements.", - "CONTROLS_FOR_TOOLTIP": "Magkaroon ng mga variable na \"%1\" na tanggalin ng mga halaga mula sa simulang numero hanggang sa dulong numero, at bilangin sa pamamagitan ng tinukoy na agwat, at gawin ang mga tinukoy na mga blocks.", - "CONTROLS_FOR_TITLE": "bilangin %1 mula %2 hanggang %3 ng %4", - "CONTROLS_FOREACH_TITLE": "sa bawat bagay %1 sa listahan %2", - "CONTROLS_FOREACH_TOOLTIP": "Para sa bawat item sa isang list, i-set ang variable ng '%1' sa mga item, at pagkatapos ay gumawa ng ilang mga statements.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "putulin ang paulit ulit", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "Magpatuloy sa susunod na pag-ulit ng loop", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Hatiin ang nilalaman ng loop.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Laktawan ang natitirang bahagi ng loop, at magpatuloy sa susunod na pag-ulit.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Babala: Ang block ito ay maaari lamang magamit sa loob ng loop.", - "CONTROLS_IF_TOOLTIP_1": "kung ang value ay true, gagawin ang do statements.", - "CONTROLS_IF_TOOLTIP_2": "Kung ang value ay true, gagawin ang unang block ng do statements. Kung hindi, gagawin ang pangalawang block ng statement.", - "CONTROLS_IF_TOOLTIP_3": "Kung ang unang value ay true, gagawin ang first block ng statement. Kung hindi, kung ang second value ay true, gagawin ang second block ng statement.", - "CONTROLS_IF_TOOLTIP_4": "Kung ang first value ay true, gagawin ang first block ng statement. Kung hindi true ang second value, gagawin ang second block ng statement. Kung wala sa mga values ay true, gagawin ang last block ng statements.", - "CONTROLS_IF_MSG_IF": "kung", - "CONTROLS_IF_IF_TOOLTIP": "Mag Add, remove o kaya mag reorder ng sections para maayos ang if block.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Mag dagdag ng condition sa if block.", - "CONTROLS_IF_ELSE_TOOLTIP": "Mag Add ng final, kunin lahat ng condition sa if block.", - "LOGIC_COMPARE_TOOLTIP_EQ": "Nag babalik ng true kung ang pinasok ay parehong magkatumbas.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Return true if both inputs are not equal to each other.", - "LOGIC_COMPARE_TOOLTIP_LT": "Nag babalik ng true kung ang unang pinasok ay maliit kaysa sa pangalawang pinasok.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Nag babalik ng true kung ang unang pinasok ay maliit sa o katumbas sa pangalawang pinasok.", - "LOGIC_COMPARE_TOOLTIP_GT": "Nagbabalik ng true kung ang unang pinasok ay mas malaki kaysa pangalawang pinasok.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Nag babalik ng true kung ang unang pinasok ay mas malaki or katumbas ng pangalawang pinasok.", - "LOGIC_OPERATION_AND": "at", - "LOGIC_OPERATION_OR": "o", - "LOGIC_BOOLEAN_TRUE": "tama", - "LOGIC_BOOLEAN_FALSE": "mali", - "LOGIC_BOOLEAN_TOOLTIP": "Nag babalik ng true or false.", - "LOGIC_NULL": "blangko", - "LOGIC_TERNARY_IF_TRUE": "kung tama", - "LOGIC_TERNARY_IF_FALSE": "kung mali", - "MATH_IS_POSITIVE": "ay positibo", - "MATH_IS_NEGATIVE": "ay negatibo", - "MATH_CHANGE_TITLE": "baguhin %1 by %2", - "LISTS_CREATE_EMPTY_TITLE": "Gumawa ng walang laman na list", - "LISTS_CREATE_EMPTY_TOOLTIP": "Ibabalik ang list, na may haba na 0, nag lalaman ng walang data records", - "LISTS_CREATE_WITH_TOOLTIP": "Gumawa ng list na may kahit anong number ng items.", - "LISTS_CREATE_WITH_INPUT_WITH": "gumawa ng list kasama", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Magdagdag, mag tanggal or mag ayos ng sections para muling maayos ang listahan ng block.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Mag dagdag ng item sa list.", - "LISTS_REPEAT_TOOLTIP": "Pag gawa ng list na binubuo ng binigay na value at inulit na tinuloy na bilang ng beses.", - "LISTS_REPEAT_TITLE": "pag gawa ng list kasama ng item %1 inuulit %2 beses", - "LISTS_LENGTH_TITLE": "haba ng %1", - "LISTS_LENGTH_TOOLTIP": "Pag balik ng haba ng list.", - "LISTS_ISEMPTY_TITLE": "%1 ay walang laman", - "LISTS_ISEMPTY_TOOLTIP": "Nagbabalik ng true kung ang list ay walang laman.", - "LISTS_INLIST": "sa list", - "LISTS_INDEX_OF_FIRST": "Hanapin ang unang pangyayari ng item", - "LISTS_INDEX_OF_LAST": "hanapin ang huling pangyayari ng item", - "LISTS_INDEX_OF_TOOLTIP": "Pagbalik ng index ng una/huli pangyayari ng item sa list. Pagbalik ng %1 kung ang item ay hindi makita.", - "LISTS_GET_INDEX_GET": "kunin", - "LISTS_GET_INDEX_GET_REMOVE": "kunin at tanggalin", - "LISTS_GET_INDEX_REMOVE": "tanggalin", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# mula katapusan", - "LISTS_GET_INDEX_FIRST": "Una", - "LISTS_GET_INDEX_LAST": "huli", - "LISTS_GET_INDEX_RANDOM": "nang hindi pinipili", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ay ang unang item.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ay ang huling item.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Ibalik ang item sa itinakdang posisyon sa list.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Ibalik ang unang item sa list.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Ibalik ang huling item sa list.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Nag babalik ng hindi pinipiling item sa list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Nag tatanggal at nag babalik ng mga items sa tinukoy na posisyon sa list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Nag tatanggal at nag babalik ng mga unang item sa list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Nag tatanggal at nag babalik ng huling item sa list.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Nag tatanggal at nag babalik ng mga hindi pinipiling item sa list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Nag tatanggal ng item sa tinukoy na posisyon sa list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Nag tatanggal ng unang item sa list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Nag tatanggal ng huling item sa list.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Nag tatanggal ng item mula sa walang pinipiling list.", - "LISTS_SET_INDEX_INSERT": "isingit sa", - "LISTS_SET_INDEX_INPUT_TO": "gaya ng", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Pag set ng item sa tinukoy na position sa isang list.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Pag set ng unang item sa isang list.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Pag set sa huling item sa isang list.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Pag set ng walang pinipiling item sa isang list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Nag singit ng item sa tinukoy na posistion sa list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Nag singit ng item sa simula ng list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Idagdag ang item sa huli ng isang list.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Isingit ang item ng walang pinipili sa isang list.", - "LISTS_GET_SUBLIST_START_FROM_START": "pag kuha ng sub-list mula #", - "LISTS_GET_SUBLIST_START_FROM_END": "pag kuha ng sub-list mula sa # mula huli", - "LISTS_GET_SUBLIST_START_FIRST": "pag kuha ng sub-list mula sa una", - "LISTS_GET_SUBLIST_END_FROM_START": "mula #", - "LISTS_GET_SUBLIST_END_FROM_END": "mula # hanggang huli", - "LISTS_GET_SUBLIST_END_LAST": "hanggang huli", - "LISTS_GET_SUBLIST_TOOLTIP": "Gumagawa ng kopya ng tinukoy na bahagi ng list." -} +{ + "@metadata": { + "authors": [ + "아라" + ] + }, + "DUPLICATE_BLOCK": "Kaparehas", + "ADD_COMMENT": "Dagdag komento", + "EXTERNAL_INPUTS": "Panlabas na Inputs", + "INLINE_INPUTS": "Inline na Inputs", + "DELETE_BLOCK": "burahin ang bloke", + "DELETE_X_BLOCKS": "burahin %1 ng bloke", + "COLLAPSE_BLOCK": "bloke", + "COLLAPSE_ALL": "bloke", + "EXPAND_BLOCK": "Palawakin ang Block", + "EXPAND_ALL": "Palawakin ang Blocks", + "DISABLE_BLOCK": "Ipangwalang bisa ang Block", + "ENABLE_BLOCK": "Bigyan ng bisa ang Block", + "HELP": "Tulong", + "CHANGE_VALUE_TITLE": "pagbago ng value:", + "COLOUR_PICKER_TOOLTIP": "pagpili ng kulay sa paleta.", + "COLOUR_RANDOM_TITLE": "iba ibang kulay", + "COLOUR_RANDOM_TOOLTIP": "pagpili ng iba't ibang kulay.", + "COLOUR_RGB_TITLE": "kulayan ng", + "COLOUR_RGB_RED": "pula", + "COLOUR_RGB_GREEN": "berde", + "COLOUR_RGB_BLUE": "asul", + "COLOUR_RGB_TOOLTIP": "gumawa ng kulay ng may espisipikong dami ng kulay pula, berde, at asul. lahat ng halaga ay dapat sa pagitan ng 0 at 100.", + "COLOUR_BLEND_TITLE": "halo", + "COLOUR_BLEND_COLOUR1": "kulay 1", + "COLOUR_BLEND_COLOUR2": "kulay 2", + "COLOUR_BLEND_RATIO": "proporsyon", + "COLOUR_BLEND_TOOLTIP": "Paghalo ng dalawang kulay kasama ng ibinigay na proporsyon (0.0 - 1.0).", + "CONTROLS_REPEAT_TITLE": "ulitin %1 beses", + "CONTROLS_REPEAT_INPUT_DO": "gawin", + "CONTROLS_REPEAT_TOOLTIP": "gumawa ng ilang pangungusap ng ilang ulit.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ulitin habang", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ulitin hanggang", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Habang ang value ay true, gagawin ang ibang statements.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Habang ang value ay false, gagawin ang ibang statements.", + "CONTROLS_FOR_TOOLTIP": "Magkaroon ng mga variable na \"%1\" na tanggalin ng mga halaga mula sa simulang numero hanggang sa dulong numero, at bilangin sa pamamagitan ng tinukoy na agwat, at gawin ang mga tinukoy na mga blocks.", + "CONTROLS_FOR_TITLE": "bilangin %1 mula %2 hanggang %3 ng %4", + "CONTROLS_FOREACH_TITLE": "sa bawat bagay %1 sa listahan %2", + "CONTROLS_FOREACH_TOOLTIP": "Para sa bawat item sa isang list, i-set ang variable ng '%1' sa mga item, at pagkatapos ay gumawa ng ilang mga statements.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "putulin ang paulit ulit", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "Magpatuloy sa susunod na pag-ulit ng loop", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Hatiin ang nilalaman ng loop.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Laktawan ang natitirang bahagi ng loop, at magpatuloy sa susunod na pag-ulit.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Babala: Ang block ito ay maaari lamang magamit sa loob ng loop.", + "CONTROLS_IF_TOOLTIP_1": "kung ang value ay true, gagawin ang do statements.", + "CONTROLS_IF_TOOLTIP_2": "Kung ang value ay true, gagawin ang unang block ng do statements. Kung hindi, gagawin ang pangalawang block ng statement.", + "CONTROLS_IF_TOOLTIP_3": "Kung ang unang value ay true, gagawin ang first block ng statement. Kung hindi, kung ang second value ay true, gagawin ang second block ng statement.", + "CONTROLS_IF_TOOLTIP_4": "Kung ang first value ay true, gagawin ang first block ng statement. Kung hindi true ang second value, gagawin ang second block ng statement. Kung wala sa mga values ay true, gagawin ang last block ng statements.", + "CONTROLS_IF_MSG_IF": "kung", + "CONTROLS_IF_IF_TOOLTIP": "Mag Add, remove o kaya mag reorder ng sections para maayos ang if block.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Mag dagdag ng condition sa if block.", + "CONTROLS_IF_ELSE_TOOLTIP": "Mag Add ng final, kunin lahat ng condition sa if block.", + "LOGIC_COMPARE_TOOLTIP_EQ": "Nag babalik ng true kung ang pinasok ay parehong magkatumbas.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Return true if both inputs are not equal to each other.", + "LOGIC_COMPARE_TOOLTIP_LT": "Nag babalik ng true kung ang unang pinasok ay maliit kaysa sa pangalawang pinasok.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Nag babalik ng true kung ang unang pinasok ay maliit sa o katumbas sa pangalawang pinasok.", + "LOGIC_COMPARE_TOOLTIP_GT": "Nagbabalik ng true kung ang unang pinasok ay mas malaki kaysa pangalawang pinasok.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Nag babalik ng true kung ang unang pinasok ay mas malaki or katumbas ng pangalawang pinasok.", + "LOGIC_OPERATION_AND": "at", + "LOGIC_OPERATION_OR": "o", + "LOGIC_BOOLEAN_TRUE": "tama", + "LOGIC_BOOLEAN_FALSE": "mali", + "LOGIC_BOOLEAN_TOOLTIP": "Nag babalik ng true or false.", + "LOGIC_NULL": "blangko", + "LOGIC_TERNARY_IF_TRUE": "kung tama", + "LOGIC_TERNARY_IF_FALSE": "kung mali", + "MATH_IS_POSITIVE": "ay positibo", + "MATH_IS_NEGATIVE": "ay negatibo", + "MATH_CHANGE_TITLE": "baguhin %1 by %2", + "LISTS_CREATE_EMPTY_TITLE": "Gumawa ng walang laman na list", + "LISTS_CREATE_EMPTY_TOOLTIP": "Ibabalik ang list, na may haba na 0, nag lalaman ng walang data records", + "LISTS_CREATE_WITH_TOOLTIP": "Gumawa ng list na may kahit anong number ng items.", + "LISTS_CREATE_WITH_INPUT_WITH": "gumawa ng list kasama", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Magdagdag, mag tanggal or mag ayos ng sections para muling maayos ang listahan ng block.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Mag dagdag ng item sa list.", + "LISTS_REPEAT_TOOLTIP": "Pag gawa ng list na binubuo ng binigay na value at inulit na tinuloy na bilang ng beses.", + "LISTS_REPEAT_TITLE": "pag gawa ng list kasama ng item %1 inuulit %2 beses", + "LISTS_LENGTH_TITLE": "haba ng %1", + "LISTS_LENGTH_TOOLTIP": "Pag balik ng haba ng list.", + "LISTS_ISEMPTY_TITLE": "%1 ay walang laman", + "LISTS_ISEMPTY_TOOLTIP": "Nagbabalik ng true kung ang list ay walang laman.", + "LISTS_INLIST": "sa list", + "LISTS_INDEX_OF_FIRST": "Hanapin ang unang pangyayari ng item", + "LISTS_INDEX_OF_LAST": "hanapin ang huling pangyayari ng item", + "LISTS_INDEX_OF_TOOLTIP": "Pagbalik ng index ng una/huli pangyayari ng item sa list. Pagbalik ng %1 kung ang item ay hindi makita.", + "LISTS_GET_INDEX_GET": "kunin", + "LISTS_GET_INDEX_GET_REMOVE": "kunin at tanggalin", + "LISTS_GET_INDEX_REMOVE": "tanggalin", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# mula katapusan", + "LISTS_GET_INDEX_FIRST": "Una", + "LISTS_GET_INDEX_LAST": "huli", + "LISTS_GET_INDEX_RANDOM": "nang hindi pinipili", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ay ang unang item.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ay ang huling item.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Ibalik ang item sa itinakdang posisyon sa list.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Ibalik ang unang item sa list.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Ibalik ang huling item sa list.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Nag babalik ng hindi pinipiling item sa list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Nag tatanggal at nag babalik ng mga items sa tinukoy na posisyon sa list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Nag tatanggal at nag babalik ng mga unang item sa list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Nag tatanggal at nag babalik ng huling item sa list.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Nag tatanggal at nag babalik ng mga hindi pinipiling item sa list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Nag tatanggal ng item sa tinukoy na posisyon sa list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Nag tatanggal ng unang item sa list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Nag tatanggal ng huling item sa list.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Nag tatanggal ng item mula sa walang pinipiling list.", + "LISTS_SET_INDEX_INSERT": "isingit sa", + "LISTS_SET_INDEX_INPUT_TO": "gaya ng", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Pag set ng item sa tinukoy na position sa isang list.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Pag set ng unang item sa isang list.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Pag set sa huling item sa isang list.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Pag set ng walang pinipiling item sa isang list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Nag singit ng item sa tinukoy na posistion sa list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Nag singit ng item sa simula ng list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Idagdag ang item sa huli ng isang list.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Isingit ang item ng walang pinipili sa isang list.", + "LISTS_GET_SUBLIST_START_FROM_START": "pag kuha ng sub-list mula #", + "LISTS_GET_SUBLIST_START_FROM_END": "pag kuha ng sub-list mula sa # mula huli", + "LISTS_GET_SUBLIST_START_FIRST": "pag kuha ng sub-list mula sa una", + "LISTS_GET_SUBLIST_END_FROM_START": "mula #", + "LISTS_GET_SUBLIST_END_FROM_END": "mula # hanggang huli", + "LISTS_GET_SUBLIST_END_LAST": "hanggang huli", + "LISTS_GET_SUBLIST_TOOLTIP": "Gumagawa ng kopya ng tinukoy na bahagi ng list." +} diff --git a/msg/json/tlh.json b/msg/json/tlh.json index 3b3b6808bea..919e6b42b3c 100644 --- a/msg/json/tlh.json +++ b/msg/json/tlh.json @@ -1,179 +1,179 @@ -{ - "@metadata": { - "author": "Neil Fraser ", - "lastupdated": "2014-03-24 23:00:00.000000", - "locale": "tlh", - "messagedocumentation" : "qqq" - }, - "VARIABLES_DEFAULT_NAME": "Doch", - "TODAY": "DaHjaj", - "DUPLICATE_BLOCK": "velqa' chenmoH", - "ADD_COMMENT": "QInHom chel", - "REMOVE_COMMENT": "QInHom chelHa'", - "EXTERNAL_INPUTS": "Hur rar", - "INLINE_INPUTS": "qoD rar", - "DELETE_BLOCK": "ngogh Qaw'", - "DELETE_X_BLOCKS": "%1 ngoghmey Qaw'", - "DELETE_ALL_BLOCKS": "Hoch %1 ngoghmey Qaw'?", - "CLEAN_UP": "ngoghmeyvaD tlhegh rurmoH", - "COLLAPSE_BLOCK": "ngogh DejmoH", - "COLLAPSE_ALL": "ngoghmey DejmoH", - "EXPAND_BLOCK": "ngogh DejHa'moH", - "EXPAND_ALL": "ngoghmey DejHa'moH", - "DISABLE_BLOCK": "ngogh Qotlh", - "ENABLE_BLOCK": "ngogh QotlhHa'", - "HELP": "QaH", - "UNDO": "vangHa'", - "REDO": "vangqa'", - "CHANGE_VALUE_TITLE": "choH:", - "NEW_VARIABLE": "lIw chu'...", - "NEW_VARIABLE_TITLE": "lIw chu' pong:", - "RENAME_VARIABLE": "lIw pong choH...", - "RENAME_VARIABLE_TITLE": "Hoch \"%1\" lIwmey pongmey choH:", - "COLOUR_RANDOM_TITLE": "rItlh vISaHbe'", - "COLOUR_RGB_TITLE": "rItlh wIv", - "COLOUR_RGB_RED": "'Iw rItlh", - "COLOUR_RGB_GREEN": "tI rItlh", - "COLOUR_RGB_BLUE": "chal rItlh", - "COLOUR_BLEND_TITLE": "DuD", - "COLOUR_BLEND_COLOUR1": "rItlh wa'", - "COLOUR_BLEND_COLOUR2": "rItlh cha'", - "COLOUR_BLEND_RATIO": "'ar", - "CONTROLS_REPEAT_TITLE": "%1-logh qaSmoH", - "CONTROLS_REPEAT_INPUT_DO": "ruch", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "teHtaHvIS qaSmoH", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "teHpa' qaSmoH", - "CONTROLS_FOR_TITLE": "togh %1 mung %2 ghoch %3 Do %4", - "CONTROLS_FOREACH_TITLE": "ngIq Doch %1 ngaSbogh tetlh %2 nuDDI'", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "gho Haw'", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "gho taHqa'", - "CONTROLS_FLOW_STATEMENTS_WARNING": "yIqIm! ghoDaq neH ngoghvam lo'laH vay'.", - "CONTROLS_IF_MSG_IF": "teHchugh", - "CONTROLS_IF_MSG_ELSEIF": "pagh teHchugh", - "CONTROLS_IF_MSG_ELSE": "pagh", - "LOGIC_OPERATION_AND": "'ej", - "LOGIC_OPERATION_OR": "qoj", - "LOGIC_NEGATE_TITLE": "yoymoH %1", - "LOGIC_BOOLEAN_TRUE": "teH", - "LOGIC_BOOLEAN_FALSE": "teHbe'", - "LOGIC_NULL": "paghna'", - "LOGIC_TERNARY_CONDITION": "chov", - "LOGIC_TERNARY_IF_TRUE": "teHchugh", - "LOGIC_TERNARY_IF_FALSE": "teHbe'chugh", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "-", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "×", - "MATH_POWER_SYMBOL": "^", - "MATH_TRIG_SIN": "sin", - "MATH_TRIG_COS": "cos", - "MATH_TRIG_TAN": "tan", - "MATH_TRIG_ASIN": "asin", - "MATH_TRIG_ACOS": "acos", - "MATH_TRIG_ATAN": "atan", - "MATH_SINGLE_OP_ROOT": "cha'DIch wav", - "MATH_SINGLE_OP_ABSOLUTE": "Dung pagh choH", - "MATH_IS_EVEN": "lang'a' mI'", - "MATH_IS_ODD": "ror'a' mI'", - "MATH_IS_PRIME": "potlh'a' mI'", - "MATH_IS_WHOLE": "ngoHlaHbe''a'", - "MATH_IS_POSITIVE": "Dung pagh", - "MATH_IS_NEGATIVE": "bIng pagh", - "MATH_IS_DIVISIBLE_BY": "wav'a'", - "MATH_CHANGE_TITLE": "choH %1 chel %2", - "MATH_ROUND_OPERATOR_ROUND": "ngoH", - "MATH_ROUND_OPERATOR_ROUNDUP": "Dung ngoH", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "bIng ngoH", - "MATH_ONLIST_OPERATOR_SUM": "chelwI' SIm tetlh", - "MATH_ONLIST_OPERATOR_MIN": "machwI''a' SIm tetlh", - "MATH_ONLIST_OPERATOR_MAX": "tInwI''a' SIm tetlh", - "MATH_ONLIST_OPERATOR_AVERAGE": "beQwI' SIm tetlh", - "MATH_ONLIST_OPERATOR_MEDIAN": "beQwI'botlh SIm tetlh", - "MATH_ONLIST_OPERATOR_MODE": "beQwI' motlh SIm tetlh", - "MATH_ONLIST_OPERATOR_STD_DEV": "motlhbe'wI' SIm tetlh", - "MATH_ONLIST_OPERATOR_RANDOM": "SaHbe' SIm tetlh", - "MATH_MODULO_TITLE": "ratlwI' SIm %1 ÷ %2", - "MATH_CONSTRAIN_TITLE": "jon %1 bIng %2 Dung %3", - "MATH_RANDOM_INT_TITLE": "ngoH mI'SaHbe' bIng %1 Dung %2", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "mI'HomSaHbe'", - "TEXT_JOIN_TITLE_CREATEWITH": "ghItlh ghom", - "TEXT_CREATE_JOIN_TITLE_JOIN": "ghom", - "TEXT_APPEND_TITLE": "chel %1 ghItlh %2", - "TEXT_LENGTH_TITLE": "chuq %1", - "TEXT_ISEMPTY_TITLE": "%1 chIm'a'", - "TEXT_INDEXOF_TITLE": "ghItlhDaq %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "ghItlh wa'DIch Sam", - "TEXT_INDEXOF_OPERATOR_LAST": "ghItlh Qav Sam", - "TEXT_CHARAT_FROM_START": "mu'Hom #", - "TEXT_CHARAT_FROM_END": "mu'Hom # Qav", - "TEXT_CHARAT_FIRST": "mu'Hom wa'DIch", - "TEXT_CHARAT_LAST": "mu'Hom Qav", - "TEXT_CHARAT_RANDOM": "mu'Hom SaHbe'", - "TEXT_CHARAT_TAIL": "Suq", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ghItlhDaq", - "TEXT_GET_SUBSTRING_START_FROM_START": "ghItlhHom moHaq mu'Hom #", - "TEXT_GET_SUBSTRING_START_FROM_END": "ghItlhHom moHaq mu'Hom # Qav", - "TEXT_GET_SUBSTRING_START_FIRST": "ghItlhHom moHaq mu'Hom wa'DIch", - "TEXT_GET_SUBSTRING_END_FROM_START": "mojaq mu'Hom #", - "TEXT_GET_SUBSTRING_END_FROM_END": "mojaq mu'Hom # Qav", - "TEXT_GET_SUBSTRING_END_LAST": "mojaq mu'Hom Qav", - "TEXT_GET_SUBSTRING_TAIL": "Suq", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "tInchoH", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "machchoH", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "DojchoH", - "TEXT_TRIM_OPERATOR_BOTH": "poSnIHlogh pei", - "TEXT_TRIM_OPERATOR_LEFT": "poSlogh pei", - "TEXT_TRIM_OPERATOR_RIGHT": "nIHlogh pei", - "TEXT_PRINT_TITLE": "maq %1", - "TEXT_PROMPT_TYPE_TEXT": "ghItln tlhob 'ej maq", - "TEXT_PROMPT_TYPE_NUMBER": "mI' tlhob 'ej maq", - "LISTS_CREATE_EMPTY_TITLE": "tetlh chIm", - "LISTS_CREATE_WITH_INPUT_WITH": "tetlh ghom", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "tetlh", - "LISTS_REPEAT_TITLE": "tetlh ghom %2 Dochmey %1 pus", - "LISTS_LENGTH_TITLE": "chuq %1", - "LISTS_ISEMPTY_TITLE": "%1 chIm'a'", - "LISTS_INLIST": "tetlhDaq", - "LISTS_INDEX_OF_FIRST": "Doch sam wa'DIch", - "LISTS_INDEX_OF_LAST": "Doch sam Qav", - "LISTS_GET_INDEX_GET": "Suq", - "LISTS_GET_INDEX_GET_REMOVE": "Suq vaj pej", - "LISTS_GET_INDEX_REMOVE": "pej", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# Qav", - "LISTS_GET_INDEX_FIRST": "wa'DIch", - "LISTS_GET_INDEX_LAST": "Qav", - "LISTS_GET_INDEX_RANDOM": "Sahbe'", - "LISTS_GET_INDEX_TAIL": "", - "LISTS_SET_INDEX_SET": "choH", - "LISTS_SET_INDEX_INSERT": "lIH", - "LISTS_SET_INDEX_INPUT_TO": "Dos", - "LISTS_GET_SUBLIST_START_FROM_START": "tetlhHom moHaq #", - "LISTS_GET_SUBLIST_START_FROM_END": "tetlhHom moHaq # Qav", - "LISTS_GET_SUBLIST_START_FIRST": "tetlhHom moHaq wa'DIch", - "LISTS_GET_SUBLIST_END_FROM_START": "mojaQ #", - "LISTS_GET_SUBLIST_END_FROM_END": "mojaQ # Qav", - "LISTS_GET_SUBLIST_END_LAST": "mojaQ Qav", - "LISTS_GET_SUBLIST_TAIL": "Suq", - "LISTS_SPLIT_LIST_FROM_TEXT": "tetlh ghermeH ghItlh wav", - "LISTS_SPLIT_TEXT_FROM_LIST": "ghItlh chenmoHmeH tetlh gherHa'", - "LISTS_SPLIT_WITH_DELIMITER": "rarwI'Hom lo'", - "ORDINAL_NUMBER_SUFFIX": "", - "VARIABLES_GET_CREATE_SET": "chel 'choH %1'", - "VARIABLES_SET": "choH %1 %2", - "VARIABLES_SET_CREATE_GET": "chel 'Suq %1'", - "PROCEDURES_DEFNORETURN_TITLE": "ruch", - "PROCEDURES_DEFNORETURN_PROCEDURE": "mIw", - "PROCEDURES_BEFORE_PARAMS": "qel:", - "PROCEDURES_CALL_BEFORE_PARAMS": "qel:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_COMMENT": "mIw yIDel...", - "PROCEDURES_DEFRETURN_RETURN": "chegh", - "PROCEDURES_ALLOW_STATEMENTS": "mu'tlhegh chaw'", - "PROCEDURES_DEF_DUPLICATE_WARNING": "ghuHmoHna': qelwI' cha'logh chen.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "qelwI'mey", - "PROCEDURES_MUTATORARG_TITLE": "pong:", - "PROCEDURES_HIGHLIGHT_DEF": "mIwna' wew", - "PROCEDURES_CREATE_DO": "chel '%1'", - "PROCEDURES_IFRETURN_WARNING": "ghoHmoHna': ngoghvam ngaSbe' mIwDaq." -} +{ + "@metadata": { + "author": "Neil Fraser ", + "lastupdated": "2014-03-24 23:00:00.000000", + "locale": "tlh", + "messagedocumentation" : "qqq" + }, + "VARIABLES_DEFAULT_NAME": "Doch", + "TODAY": "DaHjaj", + "DUPLICATE_BLOCK": "velqa' chenmoH", + "ADD_COMMENT": "QInHom chel", + "REMOVE_COMMENT": "QInHom chelHa'", + "EXTERNAL_INPUTS": "Hur rar", + "INLINE_INPUTS": "qoD rar", + "DELETE_BLOCK": "ngogh Qaw'", + "DELETE_X_BLOCKS": "%1 ngoghmey Qaw'", + "DELETE_ALL_BLOCKS": "Hoch %1 ngoghmey Qaw'?", + "CLEAN_UP": "ngoghmeyvaD tlhegh rurmoH", + "COLLAPSE_BLOCK": "ngogh DejmoH", + "COLLAPSE_ALL": "ngoghmey DejmoH", + "EXPAND_BLOCK": "ngogh DejHa'moH", + "EXPAND_ALL": "ngoghmey DejHa'moH", + "DISABLE_BLOCK": "ngogh Qotlh", + "ENABLE_BLOCK": "ngogh QotlhHa'", + "HELP": "QaH", + "UNDO": "vangHa'", + "REDO": "vangqa'", + "CHANGE_VALUE_TITLE": "choH:", + "NEW_VARIABLE": "lIw chu'...", + "NEW_VARIABLE_TITLE": "lIw chu' pong:", + "RENAME_VARIABLE": "lIw pong choH...", + "RENAME_VARIABLE_TITLE": "Hoch \"%1\" lIwmey pongmey choH:", + "COLOUR_RANDOM_TITLE": "rItlh vISaHbe'", + "COLOUR_RGB_TITLE": "rItlh wIv", + "COLOUR_RGB_RED": "'Iw rItlh", + "COLOUR_RGB_GREEN": "tI rItlh", + "COLOUR_RGB_BLUE": "chal rItlh", + "COLOUR_BLEND_TITLE": "DuD", + "COLOUR_BLEND_COLOUR1": "rItlh wa'", + "COLOUR_BLEND_COLOUR2": "rItlh cha'", + "COLOUR_BLEND_RATIO": "'ar", + "CONTROLS_REPEAT_TITLE": "%1-logh qaSmoH", + "CONTROLS_REPEAT_INPUT_DO": "ruch", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "teHtaHvIS qaSmoH", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "teHpa' qaSmoH", + "CONTROLS_FOR_TITLE": "togh %1 mung %2 ghoch %3 Do %4", + "CONTROLS_FOREACH_TITLE": "ngIq Doch %1 ngaSbogh tetlh %2 nuDDI'", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "gho Haw'", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "gho taHqa'", + "CONTROLS_FLOW_STATEMENTS_WARNING": "yIqIm! ghoDaq neH ngoghvam lo'laH vay'.", + "CONTROLS_IF_MSG_IF": "teHchugh", + "CONTROLS_IF_MSG_ELSEIF": "pagh teHchugh", + "CONTROLS_IF_MSG_ELSE": "pagh", + "LOGIC_OPERATION_AND": "'ej", + "LOGIC_OPERATION_OR": "qoj", + "LOGIC_NEGATE_TITLE": "yoymoH %1", + "LOGIC_BOOLEAN_TRUE": "teH", + "LOGIC_BOOLEAN_FALSE": "teHbe'", + "LOGIC_NULL": "paghna'", + "LOGIC_TERNARY_CONDITION": "chov", + "LOGIC_TERNARY_IF_TRUE": "teHchugh", + "LOGIC_TERNARY_IF_FALSE": "teHbe'chugh", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "-", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "×", + "MATH_POWER_SYMBOL": "^", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_SINGLE_OP_ROOT": "cha'DIch wav", + "MATH_SINGLE_OP_ABSOLUTE": "Dung pagh choH", + "MATH_IS_EVEN": "lang'a' mI'", + "MATH_IS_ODD": "ror'a' mI'", + "MATH_IS_PRIME": "potlh'a' mI'", + "MATH_IS_WHOLE": "ngoHlaHbe''a'", + "MATH_IS_POSITIVE": "Dung pagh", + "MATH_IS_NEGATIVE": "bIng pagh", + "MATH_IS_DIVISIBLE_BY": "wav'a'", + "MATH_CHANGE_TITLE": "choH %1 chel %2", + "MATH_ROUND_OPERATOR_ROUND": "ngoH", + "MATH_ROUND_OPERATOR_ROUNDUP": "Dung ngoH", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "bIng ngoH", + "MATH_ONLIST_OPERATOR_SUM": "chelwI' SIm tetlh", + "MATH_ONLIST_OPERATOR_MIN": "machwI''a' SIm tetlh", + "MATH_ONLIST_OPERATOR_MAX": "tInwI''a' SIm tetlh", + "MATH_ONLIST_OPERATOR_AVERAGE": "beQwI' SIm tetlh", + "MATH_ONLIST_OPERATOR_MEDIAN": "beQwI'botlh SIm tetlh", + "MATH_ONLIST_OPERATOR_MODE": "beQwI' motlh SIm tetlh", + "MATH_ONLIST_OPERATOR_STD_DEV": "motlhbe'wI' SIm tetlh", + "MATH_ONLIST_OPERATOR_RANDOM": "SaHbe' SIm tetlh", + "MATH_MODULO_TITLE": "ratlwI' SIm %1 ÷ %2", + "MATH_CONSTRAIN_TITLE": "jon %1 bIng %2 Dung %3", + "MATH_RANDOM_INT_TITLE": "ngoH mI'SaHbe' bIng %1 Dung %2", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "mI'HomSaHbe'", + "TEXT_JOIN_TITLE_CREATEWITH": "ghItlh ghom", + "TEXT_CREATE_JOIN_TITLE_JOIN": "ghom", + "TEXT_APPEND_TITLE": "chel %1 ghItlh %2", + "TEXT_LENGTH_TITLE": "chuq %1", + "TEXT_ISEMPTY_TITLE": "%1 chIm'a'", + "TEXT_INDEXOF_TITLE": "ghItlhDaq %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "ghItlh wa'DIch Sam", + "TEXT_INDEXOF_OPERATOR_LAST": "ghItlh Qav Sam", + "TEXT_CHARAT_FROM_START": "mu'Hom #", + "TEXT_CHARAT_FROM_END": "mu'Hom # Qav", + "TEXT_CHARAT_FIRST": "mu'Hom wa'DIch", + "TEXT_CHARAT_LAST": "mu'Hom Qav", + "TEXT_CHARAT_RANDOM": "mu'Hom SaHbe'", + "TEXT_CHARAT_TAIL": "Suq", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ghItlhDaq", + "TEXT_GET_SUBSTRING_START_FROM_START": "ghItlhHom moHaq mu'Hom #", + "TEXT_GET_SUBSTRING_START_FROM_END": "ghItlhHom moHaq mu'Hom # Qav", + "TEXT_GET_SUBSTRING_START_FIRST": "ghItlhHom moHaq mu'Hom wa'DIch", + "TEXT_GET_SUBSTRING_END_FROM_START": "mojaq mu'Hom #", + "TEXT_GET_SUBSTRING_END_FROM_END": "mojaq mu'Hom # Qav", + "TEXT_GET_SUBSTRING_END_LAST": "mojaq mu'Hom Qav", + "TEXT_GET_SUBSTRING_TAIL": "Suq", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "tInchoH", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "machchoH", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "DojchoH", + "TEXT_TRIM_OPERATOR_BOTH": "poSnIHlogh pei", + "TEXT_TRIM_OPERATOR_LEFT": "poSlogh pei", + "TEXT_TRIM_OPERATOR_RIGHT": "nIHlogh pei", + "TEXT_PRINT_TITLE": "maq %1", + "TEXT_PROMPT_TYPE_TEXT": "ghItln tlhob 'ej maq", + "TEXT_PROMPT_TYPE_NUMBER": "mI' tlhob 'ej maq", + "LISTS_CREATE_EMPTY_TITLE": "tetlh chIm", + "LISTS_CREATE_WITH_INPUT_WITH": "tetlh ghom", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "tetlh", + "LISTS_REPEAT_TITLE": "tetlh ghom %2 Dochmey %1 pus", + "LISTS_LENGTH_TITLE": "chuq %1", + "LISTS_ISEMPTY_TITLE": "%1 chIm'a'", + "LISTS_INLIST": "tetlhDaq", + "LISTS_INDEX_OF_FIRST": "Doch sam wa'DIch", + "LISTS_INDEX_OF_LAST": "Doch sam Qav", + "LISTS_GET_INDEX_GET": "Suq", + "LISTS_GET_INDEX_GET_REMOVE": "Suq vaj pej", + "LISTS_GET_INDEX_REMOVE": "pej", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# Qav", + "LISTS_GET_INDEX_FIRST": "wa'DIch", + "LISTS_GET_INDEX_LAST": "Qav", + "LISTS_GET_INDEX_RANDOM": "Sahbe'", + "LISTS_GET_INDEX_TAIL": "", + "LISTS_SET_INDEX_SET": "choH", + "LISTS_SET_INDEX_INSERT": "lIH", + "LISTS_SET_INDEX_INPUT_TO": "Dos", + "LISTS_GET_SUBLIST_START_FROM_START": "tetlhHom moHaq #", + "LISTS_GET_SUBLIST_START_FROM_END": "tetlhHom moHaq # Qav", + "LISTS_GET_SUBLIST_START_FIRST": "tetlhHom moHaq wa'DIch", + "LISTS_GET_SUBLIST_END_FROM_START": "mojaQ #", + "LISTS_GET_SUBLIST_END_FROM_END": "mojaQ # Qav", + "LISTS_GET_SUBLIST_END_LAST": "mojaQ Qav", + "LISTS_GET_SUBLIST_TAIL": "Suq", + "LISTS_SPLIT_LIST_FROM_TEXT": "tetlh ghermeH ghItlh wav", + "LISTS_SPLIT_TEXT_FROM_LIST": "ghItlh chenmoHmeH tetlh gherHa'", + "LISTS_SPLIT_WITH_DELIMITER": "rarwI'Hom lo'", + "ORDINAL_NUMBER_SUFFIX": "", + "VARIABLES_GET_CREATE_SET": "chel 'choH %1'", + "VARIABLES_SET": "choH %1 %2", + "VARIABLES_SET_CREATE_GET": "chel 'Suq %1'", + "PROCEDURES_DEFNORETURN_TITLE": "ruch", + "PROCEDURES_DEFNORETURN_PROCEDURE": "mIw", + "PROCEDURES_BEFORE_PARAMS": "qel:", + "PROCEDURES_CALL_BEFORE_PARAMS": "qel:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_COMMENT": "mIw yIDel...", + "PROCEDURES_DEFRETURN_RETURN": "chegh", + "PROCEDURES_ALLOW_STATEMENTS": "mu'tlhegh chaw'", + "PROCEDURES_DEF_DUPLICATE_WARNING": "ghuHmoHna': qelwI' cha'logh chen.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "qelwI'mey", + "PROCEDURES_MUTATORARG_TITLE": "pong:", + "PROCEDURES_HIGHLIGHT_DEF": "mIwna' wew", + "PROCEDURES_CREATE_DO": "chel '%1'", + "PROCEDURES_IFRETURN_WARNING": "ghoHmoHna': ngoghvam ngaSbe' mIwDaq." +} diff --git a/msg/json/tr.json b/msg/json/tr.json index f22282ee847..37266ef9b56 100644 --- a/msg/json/tr.json +++ b/msg/json/tr.json @@ -1,383 +1,383 @@ -{ - "@metadata": { - "authors": [ - "Alpkant", - "Azerhan Özen", - "BaRaN6161 TURK", - "Bulgu", - "By erdo can", - "Grkn gll", - "Gurkanht", - "HakanIST", - "Hedda", - "Imabadplayer", - "Joseph", - "Kumkumuk", - "Mavrikant", - "McAang", - "Meelo", - "MuratTheTurkish", - "Stonecy", - "Uncitoyen", - "Uğurkent", - "Watermelon juice", - "WikiBronze", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "öge", - "UNNAMED_KEY": "isimsiz", - "TODAY": "Bugün", - "DUPLICATE_BLOCK": "Yinelenen", - "ADD_COMMENT": "Yorum Ekle", - "REMOVE_COMMENT": "Yorumu Sil", - "DUPLICATE_COMMENT": "Yinelenen Yorum", - "EXTERNAL_INPUTS": "Harici Girişler", - "INLINE_INPUTS": "Satır içi Girişler", - "DELETE_BLOCK": "Bloğu Sil", - "DELETE_X_BLOCKS": "%1 Bloğunu Sil", - "DELETE_ALL_BLOCKS": "Tüm %1 blokları silinsin mi?", - "CLEAN_UP": "Blokları Temizle", - "COLLAPSE_BLOCK": "Bloğu Daralt", - "COLLAPSE_ALL": "Blokları Daralt", - "EXPAND_BLOCK": "Bloğu Genişlet", - "EXPAND_ALL": "Blokları Genişlet", - "DISABLE_BLOCK": "Bloğu Devre Dışı Bırak", - "ENABLE_BLOCK": "Bloğu Etkinleştir", - "HELP": "Yardım", - "UNDO": "Geri al", - "REDO": "Yinele", - "CHANGE_VALUE_TITLE": "Değeri değiştir:", - "RENAME_VARIABLE": "Değişkeni yeniden adlandır...", - "RENAME_VARIABLE_TITLE": "Tüm '%1' değişkenini yeniden adlandır:", - "NEW_VARIABLE": "Değişken oluştur...", - "NEW_STRING_VARIABLE": "Dizi değişkeni oluştur...", - "NEW_NUMBER_VARIABLE": "Sayı değişkeni oluştur...", - "NEW_COLOUR_VARIABLE": "Renk değişkeni oluştur...", - "NEW_VARIABLE_TYPE_TITLE": "Yeni değişken tipi:", - "NEW_VARIABLE_TITLE": "Yeni değişken ismi:", - "VARIABLE_ALREADY_EXISTS": "'%1' isimli değişken adı zaten var.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' isimli değişken '%2' tipli başka bir değişkende tanımlı.", - "DELETE_VARIABLE_CONFIRMATION": "'%2' değişkeninin %1 kullanımını silmek istiyor musunuz?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%1' değişkeni, '%2' fonksiyonunun tanımının bir parçası olduğu için silinemez", - "DELETE_VARIABLE": "'%1' değişkenini silmek istiyor musunuz?", - "COLOUR_PICKER_HELPURL": "https://tr.wikipedia.org/wiki/Renk", - "COLOUR_PICKER_TOOLTIP": "Paletten bir renk seç.", - "COLOUR_RANDOM_TITLE": "rastgele renk", - "COLOUR_RANDOM_TOOLTIP": "Rastgele bir renk seç.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "renk değerleri", - "COLOUR_RGB_RED": "kırmızı", - "COLOUR_RGB_GREEN": "yeşil", - "COLOUR_RGB_BLUE": "mavi", - "COLOUR_RGB_TOOLTIP": "Kırmızı, yeşil ve mavinin belirli miktarıyla bir renk oluştur. Tüm değerler 0 ile 100 arasında olmalıdır.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "karıştır", - "COLOUR_BLEND_COLOUR1": "1. renk", - "COLOUR_BLEND_COLOUR2": "2. renk", - "COLOUR_BLEND_RATIO": "oran", - "COLOUR_BLEND_TOOLTIP": "Verilen bir orana (0.0 - 1.0) bağlı olarak iki rengi karıştırır.", - "CONTROLS_REPEAT_HELPURL": "https://tr.wikipedia.org/wiki/For_döngüsü", - "CONTROLS_REPEAT_TITLE": "%1 kez tekrarla", - "CONTROLS_REPEAT_INPUT_DO": "yap", - "CONTROLS_REPEAT_TOOLTIP": "Bazı işlemleri birkaç kez yap.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "tekrar ederken", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "kadar tekrarla", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Bir değer doğru olduğunda bazı beyanlarda bulun.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Bir değer yanlış olduğunda bazı beyanlarda bulun.", - "CONTROLS_FOR_TOOLTIP": "Başlangıç sayısından bitiş sayısına kadar belirtilen aralık ve belirtilen engeller ile devam eden değerler alan '%1' değişkeni oluştur.", - "CONTROLS_FOR_TITLE": "ile sayılır %1 %2 den %3 ye, her adımda %4 değişim", - "CONTROLS_FOREACH_TITLE": "her öğe için %1 listede %2", - "CONTROLS_FOREACH_TOOLTIP": "Bir listedeki her öğe için '%1' değişkenini maddeye atayın ve bundan sonra bazı açıklamalar yapın.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "döngüden çık", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "döngünün sonraki adımından devam et", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "İçeren döngüden çık.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Bu döngünün geri kalanını atlayın ve sonraki adım ile devam edin.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Uyarı: Bu blok yalnızca bir döngü içinde kullanılabilir.", - "CONTROLS_IF_TOOLTIP_1": "Eğer değişken true, yani gerçekleşmiş ise ardından gelen işlemi yerine getir.", - "CONTROLS_IF_TOOLTIP_2": "Eğer değişken true, yani gerçekleşiyor ise ilk bloktaki işlemleri yerine getir. Aksi halde ikinci bloktaki işlemleri yerine getir.", - "CONTROLS_IF_TOOLTIP_3": "Eğer ilk değişken true, yani koşul gerçekleşmiş ise ilk blok içerisindeki işlemi gerçekleştir. Eğer ikinci değişken true ise, ikinci bloktaki işlemi gerçekleştir.", - "CONTROLS_IF_TOOLTIP_4": "Eğer ilk değer true, yani olumlu ise, ilk bloktaki işlemi gerçekleştir. İlk değer true değil ama ikinci değer true ise, ikinci bloktaki işlemi gerçekleştir. Eğer değerlerin hiçbiri true değil ise son bloktaki işlemi gerçekleştir.", - "CONTROLS_IF_MSG_IF": "eğer", - "CONTROLS_IF_MSG_ELSEIF": "değilse eğer", - "CONTROLS_IF_MSG_ELSE": "değilse", - "CONTROLS_IF_IF_TOOLTIP": "If bloğuna ekle, kaldır veya yeniden düzenleme yap.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "If bloğuna bir koşul ekleyin.", - "CONTROLS_IF_ELSE_TOOLTIP": "If bloğuna kalan durumları \"yakalayan\" bir son ekle.", - "LOGIC_COMPARE_HELPURL": "https://tr.wikipedia.org/wiki/Eşitsizlikler", - "LOGIC_COMPARE_TOOLTIP_EQ": "Her iki giriş de birbirine eşitse true değerini döndürün.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Her iki giriş de birbirine eşit değilse true değerini döndürün.", - "LOGIC_COMPARE_TOOLTIP_LT": "İlk giriş ikinci girişten küçükse true değerini döndürün.", - "LOGIC_COMPARE_TOOLTIP_LTE": "İlk giriş ikinci girişten küçük veya ona eşitse true değerini döndürün.", - "LOGIC_COMPARE_TOOLTIP_GT": "İlk giriş ikinci girişten büyükse true değerini döndürün.", - "LOGIC_COMPARE_TOOLTIP_GTE": "İlk giriş ikinci girişten büyük veya ona eşitse true değerini döndürün.", - "LOGIC_OPERATION_TOOLTIP_AND": "Her iki giriş de doğruysa true döndür.", - "LOGIC_OPERATION_AND": "ve", - "LOGIC_OPERATION_TOOLTIP_OR": "Girişlerden en az biri doğru olduğunda true değerini döndürün.", - "LOGIC_OPERATION_OR": "veya", - "LOGIC_NEGATE_TITLE": "%1 değil", - "LOGIC_NEGATE_TOOLTIP": "Giriş yanlışsa true değerini döndürür. Giriş doğruysa false değerini döndürür.", - "LOGIC_BOOLEAN_TRUE": "true", - "LOGIC_BOOLEAN_FALSE": "false", - "LOGIC_BOOLEAN_TOOLTIP": "True veya false değerini döndürür.", - "LOGIC_NULL_HELPURL": "https://tr.wikipedia.org/wiki/Sıfırlanabilir_tip", - "LOGIC_NULL": "boş", - "LOGIC_NULL_TOOLTIP": "Boş değerini döndürür.", - "LOGIC_TERNARY_HELPURL": "https://tr.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "deneme", - "LOGIC_TERNARY_IF_TRUE": "if true", - "LOGIC_TERNARY_IF_FALSE": "if false", - "LOGIC_TERNARY_TOOLTIP": "'test' durumunu kontrol edin. Koşul true olursa, 'if true' değerini döndürür; aksi takdirde 'if false' değerini döndürür.", - "MATH_NUMBER_HELPURL": "https://tr.wikipedia.org/wiki/Sayı", - "MATH_NUMBER_TOOLTIP": "Sayı.", - "MATH_ADDITION_SYMBOL": "+", - "MATH_SUBTRACTION_SYMBOL": "tire", - "MATH_DIVISION_SYMBOL": "÷", - "MATH_MULTIPLICATION_SYMBOL": "x", - "MATH_POWER_SYMBOL": "üst alma", - "MATH_TRIG_SIN": "Sinüs", - "MATH_TRIG_COS": "kosünüs", - "MATH_TRIG_TAN": "tanjant", - "MATH_TRIG_ASIN": "asinüs", - "MATH_TRIG_ACOS": "akosünüs", - "MATH_TRIG_ATAN": "atanjant", - "MATH_ARITHMETIC_HELPURL": "https://tr.wikipedia.org/wiki/Aritmetik", - "MATH_ARITHMETIC_TOOLTIP_ADD": "İki sayının toplamını döndürün.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "İki sayının farkını döndürün.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "İki sayının çarpımını döndürün.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "İki sayının bölümünü döndürün.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Yükseltilen ilk sayıyı ikinci sayının gücüne döndürün.", - "MATH_SINGLE_HELPURL": "https://tr.wikipedia.org/wiki/Karekök", - "MATH_SINGLE_OP_ROOT": "kare kök", - "MATH_SINGLE_TOOLTIP_ROOT": "Bir sayının karekökünü döndürür.", - "MATH_SINGLE_OP_ABSOLUTE": "kesin", - "MATH_SINGLE_TOOLTIP_ABS": "Bir sayının mutlak değerini döndürür.", - "MATH_SINGLE_TOOLTIP_NEG": "Bir sayının reddini döndür.", - "MATH_SINGLE_TOOLTIP_LN": "Bir sayının doğal logaritmasını döndür.", - "MATH_SINGLE_TOOLTIP_LOG10": "Bir sayının 10 logaritmasını geri döndür.", - "MATH_SINGLE_TOOLTIP_EXP": "E'yi bir sayının gücüne döndür.", - "MATH_SINGLE_TOOLTIP_POW10": "10'u sayının gücüne döndür.", - "MATH_TRIG_HELPURL": "https://tr.wikipedia.org/wiki/Trigonometrik_fonksiyonlar", - "MATH_TRIG_TOOLTIP_SIN": "Sinüsü bir derece döndürün (radyan değil).", - "MATH_TRIG_TOOLTIP_COS": "Bir derecenin kosinüsünü döndürün (radyan değil).", - "MATH_TRIG_TOOLTIP_TAN": "Bir derecenin tanjantını döndürün (radyan değil).", - "MATH_TRIG_TOOLTIP_ASIN": "Bir sayının ark sinüsünü döndürün.", - "MATH_TRIG_TOOLTIP_ACOS": "Bir sayının arkosinini döndürün.", - "MATH_TRIG_TOOLTIP_ATAN": "Bir sayının arktanjantını döndürün.", - "MATH_CONSTANT_HELPURL": "https://tr.wikipedia.org/wiki/Matematiksel_sabit", - "MATH_CONSTANT_TOOLTIP": "Ortak sabitlerden birini döndür: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (sonsuzluk).", - "MATH_IS_EVEN": "çift", - "MATH_IS_ODD": "tek", - "MATH_IS_PRIME": "asal", - "MATH_IS_WHOLE": "bütün", - "MATH_IS_POSITIVE": "pozitif", - "MATH_IS_NEGATIVE": "negatif", - "MATH_IS_DIVISIBLE_BY": "bölünebilir", - "MATH_IS_TOOLTIP": "Bir sayının çift, tek, asal, bütün, pozitif, negatif veya belirli bir sayıya bölünebilir olup olmadığını kontrol edin. True veya false değerini döndürür.", - "MATH_CHANGE_HELPURL": "https://tr.wikipedia.org/wiki/Programlama_deyimi", - "MATH_CHANGE_TITLE": "%1 %2 göre değiştir", - "MATH_CHANGE_TOOLTIP": "'%1' değişkenine bir sayı ekle.", - "MATH_ROUND_HELPURL": "https://tr.wikipedia.org/wiki/Yuvarlatma", - "MATH_ROUND_TOOLTIP": "Bir sayıyı yukarı veya aşağı yuvarlayın.", - "MATH_ROUND_OPERATOR_ROUND": "yuvarla", - "MATH_ROUND_OPERATOR_ROUNDUP": "yukarı yuvarla", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "aşağı yuvarla", - "MATH_ONLIST_HELPURL": "", - "MATH_ONLIST_OPERATOR_SUM": "listenin toplamı", - "MATH_ONLIST_TOOLTIP_SUM": "Listedeki tüm sayıların toplamını döndürün.", - "MATH_ONLIST_OPERATOR_MIN": "listenin en küçüğü", - "MATH_ONLIST_TOOLTIP_MIN": "Listedeki en küçük sayıyı döndür.", - "MATH_ONLIST_OPERATOR_MAX": "maksimum liste", - "MATH_ONLIST_TOOLTIP_MAX": "Listedeki en büyük sayıyı döndürün.", - "MATH_ONLIST_OPERATOR_AVERAGE": "liste ortalaması", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Listedeki sayısal değerlerin ortalamasını (aritmetik ortalama) döndürün.", - "MATH_ONLIST_OPERATOR_MEDIAN": "listenin medyanı", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Listeden ortanca numarayı döndürün.", - "MATH_ONLIST_OPERATOR_MODE": "liste modları", - "MATH_ONLIST_TOOLTIP_MODE": "Listedeki en yaygın öğenin bir listesini döndürür.", - "MATH_ONLIST_OPERATOR_STD_DEV": "listenin standart sapması", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Listenin standart sapmasını döndürün.", - "MATH_ONLIST_OPERATOR_RANDOM": "listenin rastgele öğesi", - "MATH_ONLIST_TOOLTIP_RANDOM": "Listeden rastgele bir öğe döndürün.", - "MATH_MODULO_HELPURL": "https://tr.wikipedia.org/wiki/Modulo_işlemi", - "MATH_MODULO_TITLE": "%1 ÷ %2 geri kalan kısım", - "MATH_MODULO_TOOLTIP": "Kalanı iki sayıyı bölmekten döndürün.", - "MATH_CONSTRAIN_TITLE": "%1 en düşük %2 en yüksek %3 ile sınırla", - "MATH_CONSTRAIN_TOOLTIP": "Bir sayıyı belirtilen sınırlar arasında (dahil) ile sınırlandırın.", - "MATH_RANDOM_INT_HELPURL": "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi", - "MATH_RANDOM_INT_TITLE": "%1 ile %2 rastgele tam sayı üretin", - "MATH_RANDOM_INT_TOOLTIP": "Belirtilen iki sınır arasında rastgele bir tamsayı döndürün.", - "MATH_RANDOM_FLOAT_HELPURL": "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "rastgele kesir", - "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (dahil) ve 1.0 (hariç) arasında rastgele bir kesir döndürün.", - "MATH_ATAN2_HELPURL": "https://tr.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2, X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "-180'den 180'e derece cinsinden nokta (X, Y) arktanjantını döndürün.", - "TEXT_TEXT_HELPURL": "https://tr.wikipedia.org/wiki/Dize_(bilgisayar_bilimi)", - "TEXT_TEXT_TOOLTIP": "Bir harf, kelime veya metin satırı.", - "TEXT_JOIN_TITLE_CREATEWITH": "ile metin oluştur", - "TEXT_JOIN_TOOLTIP": "İstediğiniz sayıda öğeyi birleştirerek bir metin parçası oluşturun.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "katıl", - "TEXT_CREATE_JOIN_TOOLTIP": "Bu metin bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Metne bir öğe ekleyin.", - "TEXT_APPEND_TITLE": "%1 için %2 metnini ekle.", - "TEXT_APPEND_TOOLTIP": "'%1' değişkenine bir metin ekleyin.", - "TEXT_LENGTH_TITLE": "%1 uzunluğu", - "TEXT_LENGTH_TOOLTIP": "Sağlanan metindeki harflerin (boşluklar dahil) sayısını döndürür.", - "TEXT_ISEMPTY_TITLE": "%1 boş", - "TEXT_ISEMPTY_TOOLTIP": "Sağlanan metin boşsa true değerini döndürür.", - "TEXT_INDEXOF_TOOLTIP": "İkinci metindeki ilk metnin ilk/son oluşumunun dizinini döndürür. Metin bulunmazsa %1 değerini döndürür.", - "TEXT_INDEXOF_TITLE": "%1 metni içinde %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "metnin ilk oluşumunu bul", - "TEXT_INDEXOF_OPERATOR_LAST": "metnin son tekrarlamasını bul", - "TEXT_CHARAT_TITLE": "%1 içinde %2", - "TEXT_CHARAT_FROM_START": "# harfini al", - "TEXT_CHARAT_FROM_END": "# sona harfleri al", - "TEXT_CHARAT_FIRST": "ilk harfini al", - "TEXT_CHARAT_LAST": "son harfi al", - "TEXT_CHARAT_RANDOM": "rastgele harf al", - "TEXT_CHARAT_TAIL": "", - "TEXT_CHARAT_TOOLTIP": "Belirtilen konumdaki harfi döndürür.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Metnin belirli bir bölümünü döndürür.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "metinde", - "TEXT_GET_SUBSTRING_START_FROM_START": "# harfinden alt dize al", - "TEXT_GET_SUBSTRING_START_FROM_END": "# harfinden alt dize al", - "TEXT_GET_SUBSTRING_START_FIRST": "ilk harfinden alt dize al", - "TEXT_GET_SUBSTRING_END_FROM_START": "# harfe", - "TEXT_GET_SUBSTRING_END_FROM_END": "en başından # harfi", - "TEXT_GET_SUBSTRING_END_LAST": "son harfe", - "TEXT_GET_SUBSTRING_TAIL": "", - "TEXT_CHANGECASE_TOOLTIP": "Metnin bir kopyasını farklı bir durumda döndürün.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "ÜST DURUMA", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "küçük harfe", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Başlık Vakasına", - "TEXT_TRIM_TOOLTIP": "Bir veya her iki uçtan boşluklar kaldırılmış olarak metnin bir kopyasını döndürün.", - "TEXT_TRIM_OPERATOR_BOTH": "her iki tarafından da kırpın", - "TEXT_TRIM_OPERATOR_LEFT": "sol tarafındaki boşlukları kırpın", - "TEXT_TRIM_OPERATOR_RIGHT": "sağ tarafındaki boşlukları kırp", - "TEXT_PRINT_TITLE": "%1 yaz", - "TEXT_PRINT_TOOLTIP": "Belirtilen metni, sayıyı veya başka bir değeri yazdırın.", - "TEXT_PROMPT_TYPE_TEXT": "mesaj içeren metin istemi", - "TEXT_PROMPT_TYPE_NUMBER": "mesaj içeren numara istemi", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Bir numara için kullanıcı sor.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Bazı metinler için kullanıcı sor.", - "TEXT_COUNT_MESSAGE0": "%1 içinde %2 say.", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "Bazı metnin başka bir metnin içinde kaç kez oluştuğunu sayın.", - "TEXT_REPLACE_MESSAGE0": "%1 yerine %3 içindeki %2 ile değiştir", - "TEXT_REPLACE_TOOLTIP": "Bazı metnin tüm tekrarlarını başka bir metnin içinde değiştirin.", - "TEXT_REVERSE_MESSAGE0": "%1 ters çevirin", - "TEXT_REVERSE_TOOLTIP": "Metindeki karakterlerin sırasını tersine çevirir.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "boş liste oluştur", - "LISTS_CREATE_EMPTY_TOOLTIP": "Veri kaydı içermeyen 0 uzunluğunda bir liste döndürür", - "LISTS_CREATE_WITH_TOOLTIP": "İstediğiniz sayıda öğe içeren bir liste oluşturun.", - "LISTS_CREATE_WITH_INPUT_WITH": "ile liste oluştur", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Bu liste bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Listeye bir öğe ekleyin.", - "LISTS_REPEAT_TOOLTIP": "Belirtilen sayıda tekrarlanan belirli bir değerden oluşan bir liste oluşturur.", - "LISTS_REPEAT_TITLE": "%1 tekrarlanan %2 öğeyle liste oluştur", - "LISTS_LENGTH_TITLE": "%1 uzunluğu", - "LISTS_LENGTH_TOOLTIP": "Bir listenin uzunluğunu döndürür.", - "LISTS_ISEMPTY_TITLE": "%1 boş", - "LISTS_ISEMPTY_TOOLTIP": "Liste boşsa true değerini döndürür.", - "LISTS_INLIST": "listede", - "LISTS_INDEX_OF_FIRST": "öğenin ilk oluşumunu bul", - "LISTS_INDEX_OF_LAST": "öğenin son tekrarlamasını bul", - "LISTS_INDEX_OF_TOOLTIP": "Listedeki öğenin ilk/son oluşumunun dizinini döndürür. Öğe bulunmazsa %1 değerini döndürür.", - "LISTS_GET_INDEX_GET": "al", - "LISTS_GET_INDEX_GET_REMOVE": "al ve kaldır", - "LISTS_GET_INDEX_REMOVE": "kaldır", - "LISTS_GET_INDEX_FROM_START": "# Kare", - "LISTS_GET_INDEX_FROM_END": "# sonundan", - "LISTS_GET_INDEX_FIRST": "ilk", - "LISTS_GET_INDEX_LAST": "son", - "LISTS_GET_INDEX_RANDOM": "rastgele", - "LISTS_GET_INDEX_TAIL": "", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ilk öğedir.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 son öğedir.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Listede belirtilen konumda bulunan öğeyi döndürür.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Listedeki ilk öğeyi döndürür.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Listedeki son öğeyi döndürür.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Listedeki rastgele bir öğeyi döndürür.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Öğeyi bir listede belirtilen konumda kaldırır ve döndürür.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Listedeki ilk öğeyi kaldırır ve döndürür.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Listedeki son öğeyi kaldırır ve döndürür.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Listedeki rastgele bir öğeyi kaldırır ve döndürür.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Listede belirtilen konumda bulunan öğeyi kaldırır.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Listedeki ilk öğeyi kaldırır.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Listedeki son öğeyi kaldırır.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Listedeki rastgele bir öğeyi kaldırır.", - "LISTS_SET_INDEX_SET": "ayarla", - "LISTS_SET_INDEX_INSERT": "yerleştir", - "LISTS_SET_INDEX_INPUT_TO": "olarak", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Öğeyi bir listede belirtilen konuma ayarlar.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Listedeki ilk öğeyi ayarlar.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Listedeki son öğeyi ayarlar.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Listede rastgele bir öğe ayarlar.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Öğeyi bir listede belirtilen konuma ekler.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Öğeyi listenin başına ekler.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Öğeyi listenin sonuna ekleyin.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Öğeyi bir listeye rastgele ekler.", - "LISTS_GET_SUBLIST_START_FROM_START": "# listesinden alt liste al", - "LISTS_GET_SUBLIST_START_FROM_END": "# listesinden alt listeyi al", - "LISTS_GET_SUBLIST_START_FIRST": "ilk önce alt listeyi al", - "LISTS_GET_SUBLIST_END_FROM_START": "#", - "LISTS_GET_SUBLIST_END_FROM_END": "sonuna kadar #", - "LISTS_GET_SUBLIST_END_LAST": "sona", - "LISTS_GET_SUBLIST_TAIL": "", - "LISTS_GET_SUBLIST_TOOLTIP": "Listenin belirtilen bölümünün bir kopyasını oluşturur.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sıra %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Listenin bir kopyasını sıralayın.", - "LISTS_SORT_ORDER_ASCENDING": "artan", - "LISTS_SORT_ORDER_DESCENDING": "azalan", - "LISTS_SORT_TYPE_NUMERIC": "sayısal", - "LISTS_SORT_TYPE_TEXT": "alfabetik", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetik, görmezden gelin", - "LISTS_SPLIT_LIST_FROM_TEXT": "metinden liste yap", - "LISTS_SPLIT_TEXT_FROM_LIST": "listeden metin yap", - "LISTS_SPLIT_WITH_DELIMITER": "sınırlayıcı ile", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Metni, her bir sınırlayıcıyı kırarak bir metin listesine bölün.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Metin listesini bir sınırlayıcı ile ayrılmış tek bir metinde birleştirin.", - "LISTS_REVERSE_MESSAGE0": "%1 ters çevirin", - "LISTS_REVERSE_TOOLTIP": "Listenin bir kopyasını ters çevirin.", - "ORDINAL_NUMBER_SUFFIX": "", - "VARIABLES_GET_TOOLTIP": "Bu değişkenin değerini döndürür.", - "VARIABLES_GET_CREATE_SET": "'set %1' oluştur", - "VARIABLES_SET": "%1 %2 ayarla", - "VARIABLES_SET_TOOLTIP": "Bu değişkeni girişe eşit olacak şekilde ayarlar.", - "VARIABLES_SET_CREATE_GET": "'get %1' oluştur", - "PROCEDURES_DEFNORETURN_HELPURL": "https://tr.wikipedia.org/wiki/Altyordam", - "PROCEDURES_DEFNORETURN_TITLE": "-", - "PROCEDURES_DEFNORETURN_PROCEDURE": "bir şey yap", - "PROCEDURES_BEFORE_PARAMS": "ile:", - "PROCEDURES_CALL_BEFORE_PARAMS": "ile:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Çıkışı olmayan bir işlev oluşturur.", - "PROCEDURES_DEFNORETURN_COMMENT": "Bu işlevi açıklayın...", - "PROCEDURES_DEFRETURN_HELPURL": "https://tr.wikipedia.org/wiki/Altyordam", - "PROCEDURES_DEFRETURN_RETURN": "dönüş", - "PROCEDURES_DEFRETURN_TOOLTIP": "Çıkışa sahip bir işlev oluşturur.", - "PROCEDURES_ALLOW_STATEMENTS": "ifadelere izin ver", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Uyarı: Bu işlev yinelenen parametrelere sahiptir.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://tr.wikipedia.org/wiki/Alt_program", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Kullanıcı tanımlı '%1' işlevini çalıştırın.", - "PROCEDURES_CALLRETURN_HELPURL": "https://tr.wikipedia.org/wiki/Alt_program", - "PROCEDURES_CALLRETURN_TOOLTIP": "Kullanıcı tanımlı '%1' işlevini çalıştırın ve çıkışını kullanın.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "girişler", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Bu işleve giriş ekleyin, kaldırın veya yeniden sıralayın.", - "PROCEDURES_MUTATORARG_TITLE": "giriş adı:", - "PROCEDURES_MUTATORARG_TOOLTIP": "İşleve bir giriş ekleyin.", - "PROCEDURES_HIGHLIGHT_DEF": "Vurgulama işlevi tanımı", - "PROCEDURES_CREATE_DO": "'%1' oluştur", - "PROCEDURES_IFRETURN_TOOLTIP": "Bir değer true ise, ikinci bir değer döndürün.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Uyarı: Bu blok yalnızca bir işlev tanımı içinde kullanılabilir.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Bir şeyler söyle...", - "WORKSPACE_ARIA_LABEL": "Blockly Çalışma Alanı", - "COLLAPSED_WARNINGS_WARNING": "Daraltılmış bloklar uyarı içerir.", - "DIALOG_OK": "Tamam", - "DIALOG_CANCEL": "İptal" -} +{ + "@metadata": { + "authors": [ + "Alpkant", + "Azerhan Özen", + "BaRaN6161 TURK", + "Bulgu", + "By erdo can", + "Grkn gll", + "Gurkanht", + "HakanIST", + "Hedda", + "Imabadplayer", + "Joseph", + "Kumkumuk", + "Mavrikant", + "McAang", + "Meelo", + "MuratTheTurkish", + "Stonecy", + "Uncitoyen", + "Uğurkent", + "Watermelon juice", + "WikiBronze", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "öge", + "UNNAMED_KEY": "isimsiz", + "TODAY": "Bugün", + "DUPLICATE_BLOCK": "Yinelenen", + "ADD_COMMENT": "Yorum Ekle", + "REMOVE_COMMENT": "Yorumu Sil", + "DUPLICATE_COMMENT": "Yinelenen Yorum", + "EXTERNAL_INPUTS": "Harici Girişler", + "INLINE_INPUTS": "Satır içi Girişler", + "DELETE_BLOCK": "Bloğu Sil", + "DELETE_X_BLOCKS": "%1 Bloğunu Sil", + "DELETE_ALL_BLOCKS": "Tüm %1 blokları silinsin mi?", + "CLEAN_UP": "Blokları Temizle", + "COLLAPSE_BLOCK": "Bloğu Daralt", + "COLLAPSE_ALL": "Blokları Daralt", + "EXPAND_BLOCK": "Bloğu Genişlet", + "EXPAND_ALL": "Blokları Genişlet", + "DISABLE_BLOCK": "Bloğu Devre Dışı Bırak", + "ENABLE_BLOCK": "Bloğu Etkinleştir", + "HELP": "Yardım", + "UNDO": "Geri al", + "REDO": "Yinele", + "CHANGE_VALUE_TITLE": "Değeri değiştir:", + "RENAME_VARIABLE": "Değişkeni yeniden adlandır...", + "RENAME_VARIABLE_TITLE": "Tüm '%1' değişkenini yeniden adlandır:", + "NEW_VARIABLE": "Değişken oluştur...", + "NEW_STRING_VARIABLE": "Dizi değişkeni oluştur...", + "NEW_NUMBER_VARIABLE": "Sayı değişkeni oluştur...", + "NEW_COLOUR_VARIABLE": "Renk değişkeni oluştur...", + "NEW_VARIABLE_TYPE_TITLE": "Yeni değişken tipi:", + "NEW_VARIABLE_TITLE": "Yeni değişken ismi:", + "VARIABLE_ALREADY_EXISTS": "'%1' isimli değişken adı zaten var.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' isimli değişken '%2' tipli başka bir değişkende tanımlı.", + "DELETE_VARIABLE_CONFIRMATION": "'%2' değişkeninin %1 kullanımını silmek istiyor musunuz?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%1' değişkeni, '%2' fonksiyonunun tanımının bir parçası olduğu için silinemez", + "DELETE_VARIABLE": "'%1' değişkenini silmek istiyor musunuz?", + "COLOUR_PICKER_HELPURL": "https://tr.wikipedia.org/wiki/Renk", + "COLOUR_PICKER_TOOLTIP": "Paletten bir renk seç.", + "COLOUR_RANDOM_TITLE": "rastgele renk", + "COLOUR_RANDOM_TOOLTIP": "Rastgele bir renk seç.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "renk değerleri", + "COLOUR_RGB_RED": "kırmızı", + "COLOUR_RGB_GREEN": "yeşil", + "COLOUR_RGB_BLUE": "mavi", + "COLOUR_RGB_TOOLTIP": "Kırmızı, yeşil ve mavinin belirli miktarıyla bir renk oluştur. Tüm değerler 0 ile 100 arasında olmalıdır.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "karıştır", + "COLOUR_BLEND_COLOUR1": "1. renk", + "COLOUR_BLEND_COLOUR2": "2. renk", + "COLOUR_BLEND_RATIO": "oran", + "COLOUR_BLEND_TOOLTIP": "Verilen bir orana (0.0 - 1.0) bağlı olarak iki rengi karıştırır.", + "CONTROLS_REPEAT_HELPURL": "https://tr.wikipedia.org/wiki/For_döngüsü", + "CONTROLS_REPEAT_TITLE": "%1 kez tekrarla", + "CONTROLS_REPEAT_INPUT_DO": "yap", + "CONTROLS_REPEAT_TOOLTIP": "Bazı işlemleri birkaç kez yap.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "tekrar ederken", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "kadar tekrarla", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Bir değer doğru olduğunda bazı beyanlarda bulun.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Bir değer yanlış olduğunda bazı beyanlarda bulun.", + "CONTROLS_FOR_TOOLTIP": "Başlangıç sayısından bitiş sayısına kadar belirtilen aralık ve belirtilen engeller ile devam eden değerler alan '%1' değişkeni oluştur.", + "CONTROLS_FOR_TITLE": "ile sayılır %1 %2 den %3 ye, her adımda %4 değişim", + "CONTROLS_FOREACH_TITLE": "her öğe için %1 listede %2", + "CONTROLS_FOREACH_TOOLTIP": "Bir listedeki her öğe için '%1' değişkenini maddeye atayın ve bundan sonra bazı açıklamalar yapın.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "döngüden çık", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "döngünün sonraki adımından devam et", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "İçeren döngüden çık.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Bu döngünün geri kalanını atlayın ve sonraki adım ile devam edin.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Uyarı: Bu blok yalnızca bir döngü içinde kullanılabilir.", + "CONTROLS_IF_TOOLTIP_1": "Eğer değişken true, yani gerçekleşmiş ise ardından gelen işlemi yerine getir.", + "CONTROLS_IF_TOOLTIP_2": "Eğer değişken true, yani gerçekleşiyor ise ilk bloktaki işlemleri yerine getir. Aksi halde ikinci bloktaki işlemleri yerine getir.", + "CONTROLS_IF_TOOLTIP_3": "Eğer ilk değişken true, yani koşul gerçekleşmiş ise ilk blok içerisindeki işlemi gerçekleştir. Eğer ikinci değişken true ise, ikinci bloktaki işlemi gerçekleştir.", + "CONTROLS_IF_TOOLTIP_4": "Eğer ilk değer true, yani olumlu ise, ilk bloktaki işlemi gerçekleştir. İlk değer true değil ama ikinci değer true ise, ikinci bloktaki işlemi gerçekleştir. Eğer değerlerin hiçbiri true değil ise son bloktaki işlemi gerçekleştir.", + "CONTROLS_IF_MSG_IF": "eğer", + "CONTROLS_IF_MSG_ELSEIF": "değilse eğer", + "CONTROLS_IF_MSG_ELSE": "değilse", + "CONTROLS_IF_IF_TOOLTIP": "If bloğuna ekle, kaldır veya yeniden düzenleme yap.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "If bloğuna bir koşul ekleyin.", + "CONTROLS_IF_ELSE_TOOLTIP": "If bloğuna kalan durumları \"yakalayan\" bir son ekle.", + "LOGIC_COMPARE_HELPURL": "https://tr.wikipedia.org/wiki/Eşitsizlikler", + "LOGIC_COMPARE_TOOLTIP_EQ": "Her iki giriş de birbirine eşitse true değerini döndürün.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Her iki giriş de birbirine eşit değilse true değerini döndürün.", + "LOGIC_COMPARE_TOOLTIP_LT": "İlk giriş ikinci girişten küçükse true değerini döndürün.", + "LOGIC_COMPARE_TOOLTIP_LTE": "İlk giriş ikinci girişten küçük veya ona eşitse true değerini döndürün.", + "LOGIC_COMPARE_TOOLTIP_GT": "İlk giriş ikinci girişten büyükse true değerini döndürün.", + "LOGIC_COMPARE_TOOLTIP_GTE": "İlk giriş ikinci girişten büyük veya ona eşitse true değerini döndürün.", + "LOGIC_OPERATION_TOOLTIP_AND": "Her iki giriş de doğruysa true döndür.", + "LOGIC_OPERATION_AND": "ve", + "LOGIC_OPERATION_TOOLTIP_OR": "Girişlerden en az biri doğru olduğunda true değerini döndürün.", + "LOGIC_OPERATION_OR": "veya", + "LOGIC_NEGATE_TITLE": "%1 değil", + "LOGIC_NEGATE_TOOLTIP": "Giriş yanlışsa true değerini döndürür. Giriş doğruysa false değerini döndürür.", + "LOGIC_BOOLEAN_TRUE": "true", + "LOGIC_BOOLEAN_FALSE": "false", + "LOGIC_BOOLEAN_TOOLTIP": "True veya false değerini döndürür.", + "LOGIC_NULL_HELPURL": "https://tr.wikipedia.org/wiki/Sıfırlanabilir_tip", + "LOGIC_NULL": "boş", + "LOGIC_NULL_TOOLTIP": "Boş değerini döndürür.", + "LOGIC_TERNARY_HELPURL": "https://tr.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "deneme", + "LOGIC_TERNARY_IF_TRUE": "if true", + "LOGIC_TERNARY_IF_FALSE": "if false", + "LOGIC_TERNARY_TOOLTIP": "'test' durumunu kontrol edin. Koşul true olursa, 'if true' değerini döndürür; aksi takdirde 'if false' değerini döndürür.", + "MATH_NUMBER_HELPURL": "https://tr.wikipedia.org/wiki/Sayı", + "MATH_NUMBER_TOOLTIP": "Sayı.", + "MATH_ADDITION_SYMBOL": "+", + "MATH_SUBTRACTION_SYMBOL": "tire", + "MATH_DIVISION_SYMBOL": "÷", + "MATH_MULTIPLICATION_SYMBOL": "x", + "MATH_POWER_SYMBOL": "üst alma", + "MATH_TRIG_SIN": "Sinüs", + "MATH_TRIG_COS": "kosünüs", + "MATH_TRIG_TAN": "tanjant", + "MATH_TRIG_ASIN": "asinüs", + "MATH_TRIG_ACOS": "akosünüs", + "MATH_TRIG_ATAN": "atanjant", + "MATH_ARITHMETIC_HELPURL": "https://tr.wikipedia.org/wiki/Aritmetik", + "MATH_ARITHMETIC_TOOLTIP_ADD": "İki sayının toplamını döndürün.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "İki sayının farkını döndürün.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "İki sayının çarpımını döndürün.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "İki sayının bölümünü döndürün.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Yükseltilen ilk sayıyı ikinci sayının gücüne döndürün.", + "MATH_SINGLE_HELPURL": "https://tr.wikipedia.org/wiki/Karekök", + "MATH_SINGLE_OP_ROOT": "kare kök", + "MATH_SINGLE_TOOLTIP_ROOT": "Bir sayının karekökünü döndürür.", + "MATH_SINGLE_OP_ABSOLUTE": "kesin", + "MATH_SINGLE_TOOLTIP_ABS": "Bir sayının mutlak değerini döndürür.", + "MATH_SINGLE_TOOLTIP_NEG": "Bir sayının reddini döndür.", + "MATH_SINGLE_TOOLTIP_LN": "Bir sayının doğal logaritmasını döndür.", + "MATH_SINGLE_TOOLTIP_LOG10": "Bir sayının 10 logaritmasını geri döndür.", + "MATH_SINGLE_TOOLTIP_EXP": "E'yi bir sayının gücüne döndür.", + "MATH_SINGLE_TOOLTIP_POW10": "10'u sayının gücüne döndür.", + "MATH_TRIG_HELPURL": "https://tr.wikipedia.org/wiki/Trigonometrik_fonksiyonlar", + "MATH_TRIG_TOOLTIP_SIN": "Sinüsü bir derece döndürün (radyan değil).", + "MATH_TRIG_TOOLTIP_COS": "Bir derecenin kosinüsünü döndürün (radyan değil).", + "MATH_TRIG_TOOLTIP_TAN": "Bir derecenin tanjantını döndürün (radyan değil).", + "MATH_TRIG_TOOLTIP_ASIN": "Bir sayının ark sinüsünü döndürün.", + "MATH_TRIG_TOOLTIP_ACOS": "Bir sayının arkosinini döndürün.", + "MATH_TRIG_TOOLTIP_ATAN": "Bir sayının arktanjantını döndürün.", + "MATH_CONSTANT_HELPURL": "https://tr.wikipedia.org/wiki/Matematiksel_sabit", + "MATH_CONSTANT_TOOLTIP": "Ortak sabitlerden birini döndür: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (sonsuzluk).", + "MATH_IS_EVEN": "çift", + "MATH_IS_ODD": "tek", + "MATH_IS_PRIME": "asal", + "MATH_IS_WHOLE": "bütün", + "MATH_IS_POSITIVE": "pozitif", + "MATH_IS_NEGATIVE": "negatif", + "MATH_IS_DIVISIBLE_BY": "bölünebilir", + "MATH_IS_TOOLTIP": "Bir sayının çift, tek, asal, bütün, pozitif, negatif veya belirli bir sayıya bölünebilir olup olmadığını kontrol edin. True veya false değerini döndürür.", + "MATH_CHANGE_HELPURL": "https://tr.wikipedia.org/wiki/Programlama_deyimi", + "MATH_CHANGE_TITLE": "%1 %2 göre değiştir", + "MATH_CHANGE_TOOLTIP": "'%1' değişkenine bir sayı ekle.", + "MATH_ROUND_HELPURL": "https://tr.wikipedia.org/wiki/Yuvarlatma", + "MATH_ROUND_TOOLTIP": "Bir sayıyı yukarı veya aşağı yuvarlayın.", + "MATH_ROUND_OPERATOR_ROUND": "yuvarla", + "MATH_ROUND_OPERATOR_ROUNDUP": "yukarı yuvarla", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "aşağı yuvarla", + "MATH_ONLIST_HELPURL": "", + "MATH_ONLIST_OPERATOR_SUM": "listenin toplamı", + "MATH_ONLIST_TOOLTIP_SUM": "Listedeki tüm sayıların toplamını döndürün.", + "MATH_ONLIST_OPERATOR_MIN": "listenin en küçüğü", + "MATH_ONLIST_TOOLTIP_MIN": "Listedeki en küçük sayıyı döndür.", + "MATH_ONLIST_OPERATOR_MAX": "maksimum liste", + "MATH_ONLIST_TOOLTIP_MAX": "Listedeki en büyük sayıyı döndürün.", + "MATH_ONLIST_OPERATOR_AVERAGE": "liste ortalaması", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Listedeki sayısal değerlerin ortalamasını (aritmetik ortalama) döndürün.", + "MATH_ONLIST_OPERATOR_MEDIAN": "listenin medyanı", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Listeden ortanca numarayı döndürün.", + "MATH_ONLIST_OPERATOR_MODE": "liste modları", + "MATH_ONLIST_TOOLTIP_MODE": "Listedeki en yaygın öğenin bir listesini döndürür.", + "MATH_ONLIST_OPERATOR_STD_DEV": "listenin standart sapması", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Listenin standart sapmasını döndürün.", + "MATH_ONLIST_OPERATOR_RANDOM": "listenin rastgele öğesi", + "MATH_ONLIST_TOOLTIP_RANDOM": "Listeden rastgele bir öğe döndürün.", + "MATH_MODULO_HELPURL": "https://tr.wikipedia.org/wiki/Modulo_işlemi", + "MATH_MODULO_TITLE": "%1 ÷ %2 geri kalan kısım", + "MATH_MODULO_TOOLTIP": "Kalanı iki sayıyı bölmekten döndürün.", + "MATH_CONSTRAIN_TITLE": "%1 en düşük %2 en yüksek %3 ile sınırla", + "MATH_CONSTRAIN_TOOLTIP": "Bir sayıyı belirtilen sınırlar arasında (dahil) ile sınırlandırın.", + "MATH_RANDOM_INT_HELPURL": "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi", + "MATH_RANDOM_INT_TITLE": "%1 ile %2 rastgele tam sayı üretin", + "MATH_RANDOM_INT_TOOLTIP": "Belirtilen iki sınır arasında rastgele bir tamsayı döndürün.", + "MATH_RANDOM_FLOAT_HELPURL": "https://tr.wikipedia.org/wiki/Rastgele_sayı_üretimi", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "rastgele kesir", + "MATH_RANDOM_FLOAT_TOOLTIP": "0.0 (dahil) ve 1.0 (hariç) arasında rastgele bir kesir döndürün.", + "MATH_ATAN2_HELPURL": "https://tr.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2, X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "-180'den 180'e derece cinsinden nokta (X, Y) arktanjantını döndürün.", + "TEXT_TEXT_HELPURL": "https://tr.wikipedia.org/wiki/Dize_(bilgisayar_bilimi)", + "TEXT_TEXT_TOOLTIP": "Bir harf, kelime veya metin satırı.", + "TEXT_JOIN_TITLE_CREATEWITH": "ile metin oluştur", + "TEXT_JOIN_TOOLTIP": "İstediğiniz sayıda öğeyi birleştirerek bir metin parçası oluşturun.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "katıl", + "TEXT_CREATE_JOIN_TOOLTIP": "Bu metin bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Metne bir öğe ekleyin.", + "TEXT_APPEND_TITLE": "%1 için %2 metnini ekle.", + "TEXT_APPEND_TOOLTIP": "'%1' değişkenine bir metin ekleyin.", + "TEXT_LENGTH_TITLE": "%1 uzunluğu", + "TEXT_LENGTH_TOOLTIP": "Sağlanan metindeki harflerin (boşluklar dahil) sayısını döndürür.", + "TEXT_ISEMPTY_TITLE": "%1 boş", + "TEXT_ISEMPTY_TOOLTIP": "Sağlanan metin boşsa true değerini döndürür.", + "TEXT_INDEXOF_TOOLTIP": "İkinci metindeki ilk metnin ilk/son oluşumunun dizinini döndürür. Metin bulunmazsa %1 değerini döndürür.", + "TEXT_INDEXOF_TITLE": "%1 metni içinde %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "metnin ilk oluşumunu bul", + "TEXT_INDEXOF_OPERATOR_LAST": "metnin son tekrarlamasını bul", + "TEXT_CHARAT_TITLE": "%1 içinde %2", + "TEXT_CHARAT_FROM_START": "# harfini al", + "TEXT_CHARAT_FROM_END": "# sona harfleri al", + "TEXT_CHARAT_FIRST": "ilk harfini al", + "TEXT_CHARAT_LAST": "son harfi al", + "TEXT_CHARAT_RANDOM": "rastgele harf al", + "TEXT_CHARAT_TAIL": "", + "TEXT_CHARAT_TOOLTIP": "Belirtilen konumdaki harfi döndürür.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Metnin belirli bir bölümünü döndürür.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "metinde", + "TEXT_GET_SUBSTRING_START_FROM_START": "# harfinden alt dize al", + "TEXT_GET_SUBSTRING_START_FROM_END": "# harfinden alt dize al", + "TEXT_GET_SUBSTRING_START_FIRST": "ilk harfinden alt dize al", + "TEXT_GET_SUBSTRING_END_FROM_START": "# harfe", + "TEXT_GET_SUBSTRING_END_FROM_END": "en başından # harfi", + "TEXT_GET_SUBSTRING_END_LAST": "son harfe", + "TEXT_GET_SUBSTRING_TAIL": "", + "TEXT_CHANGECASE_TOOLTIP": "Metnin bir kopyasını farklı bir durumda döndürün.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "ÜST DURUMA", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "küçük harfe", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Başlık Vakasına", + "TEXT_TRIM_TOOLTIP": "Bir veya her iki uçtan boşluklar kaldırılmış olarak metnin bir kopyasını döndürün.", + "TEXT_TRIM_OPERATOR_BOTH": "her iki tarafından da kırpın", + "TEXT_TRIM_OPERATOR_LEFT": "sol tarafındaki boşlukları kırpın", + "TEXT_TRIM_OPERATOR_RIGHT": "sağ tarafındaki boşlukları kırp", + "TEXT_PRINT_TITLE": "%1 yaz", + "TEXT_PRINT_TOOLTIP": "Belirtilen metni, sayıyı veya başka bir değeri yazdırın.", + "TEXT_PROMPT_TYPE_TEXT": "mesaj içeren metin istemi", + "TEXT_PROMPT_TYPE_NUMBER": "mesaj içeren numara istemi", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Bir numara için kullanıcı sor.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Bazı metinler için kullanıcı sor.", + "TEXT_COUNT_MESSAGE0": "%1 içinde %2 say.", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "Bazı metnin başka bir metnin içinde kaç kez oluştuğunu sayın.", + "TEXT_REPLACE_MESSAGE0": "%1 yerine %3 içindeki %2 ile değiştir", + "TEXT_REPLACE_TOOLTIP": "Bazı metnin tüm tekrarlarını başka bir metnin içinde değiştirin.", + "TEXT_REVERSE_MESSAGE0": "%1 ters çevirin", + "TEXT_REVERSE_TOOLTIP": "Metindeki karakterlerin sırasını tersine çevirir.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "boş liste oluştur", + "LISTS_CREATE_EMPTY_TOOLTIP": "Veri kaydı içermeyen 0 uzunluğunda bir liste döndürür", + "LISTS_CREATE_WITH_TOOLTIP": "İstediğiniz sayıda öğe içeren bir liste oluşturun.", + "LISTS_CREATE_WITH_INPUT_WITH": "ile liste oluştur", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Bu liste bloğunu yeniden yapılandırmak için bölüm ekleyin, kaldırın veya yeniden sıralayın.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Listeye bir öğe ekleyin.", + "LISTS_REPEAT_TOOLTIP": "Belirtilen sayıda tekrarlanan belirli bir değerden oluşan bir liste oluşturur.", + "LISTS_REPEAT_TITLE": "%1 tekrarlanan %2 öğeyle liste oluştur", + "LISTS_LENGTH_TITLE": "%1 uzunluğu", + "LISTS_LENGTH_TOOLTIP": "Bir listenin uzunluğunu döndürür.", + "LISTS_ISEMPTY_TITLE": "%1 boş", + "LISTS_ISEMPTY_TOOLTIP": "Liste boşsa true değerini döndürür.", + "LISTS_INLIST": "listede", + "LISTS_INDEX_OF_FIRST": "öğenin ilk oluşumunu bul", + "LISTS_INDEX_OF_LAST": "öğenin son tekrarlamasını bul", + "LISTS_INDEX_OF_TOOLTIP": "Listedeki öğenin ilk/son oluşumunun dizinini döndürür. Öğe bulunmazsa %1 değerini döndürür.", + "LISTS_GET_INDEX_GET": "al", + "LISTS_GET_INDEX_GET_REMOVE": "al ve kaldır", + "LISTS_GET_INDEX_REMOVE": "kaldır", + "LISTS_GET_INDEX_FROM_START": "# Kare", + "LISTS_GET_INDEX_FROM_END": "# sonundan", + "LISTS_GET_INDEX_FIRST": "ilk", + "LISTS_GET_INDEX_LAST": "son", + "LISTS_GET_INDEX_RANDOM": "rastgele", + "LISTS_GET_INDEX_TAIL": "", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ilk öğedir.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 son öğedir.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Listede belirtilen konumda bulunan öğeyi döndürür.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Listedeki ilk öğeyi döndürür.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Listedeki son öğeyi döndürür.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Listedeki rastgele bir öğeyi döndürür.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Öğeyi bir listede belirtilen konumda kaldırır ve döndürür.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Listedeki ilk öğeyi kaldırır ve döndürür.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Listedeki son öğeyi kaldırır ve döndürür.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Listedeki rastgele bir öğeyi kaldırır ve döndürür.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Listede belirtilen konumda bulunan öğeyi kaldırır.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Listedeki ilk öğeyi kaldırır.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Listedeki son öğeyi kaldırır.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Listedeki rastgele bir öğeyi kaldırır.", + "LISTS_SET_INDEX_SET": "ayarla", + "LISTS_SET_INDEX_INSERT": "yerleştir", + "LISTS_SET_INDEX_INPUT_TO": "olarak", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Öğeyi bir listede belirtilen konuma ayarlar.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Listedeki ilk öğeyi ayarlar.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Listedeki son öğeyi ayarlar.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Listede rastgele bir öğe ayarlar.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Öğeyi bir listede belirtilen konuma ekler.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Öğeyi listenin başına ekler.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Öğeyi listenin sonuna ekleyin.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Öğeyi bir listeye rastgele ekler.", + "LISTS_GET_SUBLIST_START_FROM_START": "# listesinden alt liste al", + "LISTS_GET_SUBLIST_START_FROM_END": "# listesinden alt listeyi al", + "LISTS_GET_SUBLIST_START_FIRST": "ilk önce alt listeyi al", + "LISTS_GET_SUBLIST_END_FROM_START": "#", + "LISTS_GET_SUBLIST_END_FROM_END": "sonuna kadar #", + "LISTS_GET_SUBLIST_END_LAST": "sona", + "LISTS_GET_SUBLIST_TAIL": "", + "LISTS_GET_SUBLIST_TOOLTIP": "Listenin belirtilen bölümünün bir kopyasını oluşturur.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sıra %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Listenin bir kopyasını sıralayın.", + "LISTS_SORT_ORDER_ASCENDING": "artan", + "LISTS_SORT_ORDER_DESCENDING": "azalan", + "LISTS_SORT_TYPE_NUMERIC": "sayısal", + "LISTS_SORT_TYPE_TEXT": "alfabetik", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetik, görmezden gelin", + "LISTS_SPLIT_LIST_FROM_TEXT": "metinden liste yap", + "LISTS_SPLIT_TEXT_FROM_LIST": "listeden metin yap", + "LISTS_SPLIT_WITH_DELIMITER": "sınırlayıcı ile", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Metni, her bir sınırlayıcıyı kırarak bir metin listesine bölün.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Metin listesini bir sınırlayıcı ile ayrılmış tek bir metinde birleştirin.", + "LISTS_REVERSE_MESSAGE0": "%1 ters çevirin", + "LISTS_REVERSE_TOOLTIP": "Listenin bir kopyasını ters çevirin.", + "ORDINAL_NUMBER_SUFFIX": "", + "VARIABLES_GET_TOOLTIP": "Bu değişkenin değerini döndürür.", + "VARIABLES_GET_CREATE_SET": "'set %1' oluştur", + "VARIABLES_SET": "%1 %2 ayarla", + "VARIABLES_SET_TOOLTIP": "Bu değişkeni girişe eşit olacak şekilde ayarlar.", + "VARIABLES_SET_CREATE_GET": "'get %1' oluştur", + "PROCEDURES_DEFNORETURN_HELPURL": "https://tr.wikipedia.org/wiki/Altyordam", + "PROCEDURES_DEFNORETURN_TITLE": "-", + "PROCEDURES_DEFNORETURN_PROCEDURE": "bir şey yap", + "PROCEDURES_BEFORE_PARAMS": "ile:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ile:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Çıkışı olmayan bir işlev oluşturur.", + "PROCEDURES_DEFNORETURN_COMMENT": "Bu işlevi açıklayın...", + "PROCEDURES_DEFRETURN_HELPURL": "https://tr.wikipedia.org/wiki/Altyordam", + "PROCEDURES_DEFRETURN_RETURN": "dönüş", + "PROCEDURES_DEFRETURN_TOOLTIP": "Çıkışa sahip bir işlev oluşturur.", + "PROCEDURES_ALLOW_STATEMENTS": "ifadelere izin ver", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Uyarı: Bu işlev yinelenen parametrelere sahiptir.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://tr.wikipedia.org/wiki/Alt_program", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Kullanıcı tanımlı '%1' işlevini çalıştırın.", + "PROCEDURES_CALLRETURN_HELPURL": "https://tr.wikipedia.org/wiki/Alt_program", + "PROCEDURES_CALLRETURN_TOOLTIP": "Kullanıcı tanımlı '%1' işlevini çalıştırın ve çıkışını kullanın.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "girişler", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Bu işleve giriş ekleyin, kaldırın veya yeniden sıralayın.", + "PROCEDURES_MUTATORARG_TITLE": "giriş adı:", + "PROCEDURES_MUTATORARG_TOOLTIP": "İşleve bir giriş ekleyin.", + "PROCEDURES_HIGHLIGHT_DEF": "Vurgulama işlevi tanımı", + "PROCEDURES_CREATE_DO": "'%1' oluştur", + "PROCEDURES_IFRETURN_TOOLTIP": "Bir değer true ise, ikinci bir değer döndürün.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Uyarı: Bu blok yalnızca bir işlev tanımı içinde kullanılabilir.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Bir şeyler söyle...", + "WORKSPACE_ARIA_LABEL": "Blockly Çalışma Alanı", + "COLLAPSED_WARNINGS_WARNING": "Daraltılmış bloklar uyarı içerir.", + "DIALOG_OK": "Tamam", + "DIALOG_CANCEL": "İptal" +} diff --git a/msg/json/ug-arab.json b/msg/json/ug-arab.json index 6b1ea0a1869..a271f7ca7bc 100644 --- a/msg/json/ug-arab.json +++ b/msg/json/ug-arab.json @@ -1,132 +1,132 @@ -{ - "@metadata": { - "authors": [ - "HushBeg", - "Uzdil", - "چۈشكۈن" - ] - }, - "VARIABLES_DEFAULT_NAME": "تۈر", - "TODAY": "بۈگۈن", - "DUPLICATE_BLOCK": "كۆچۈرۈش", - "ADD_COMMENT": "ئىزاھات قوشۇش", - "REMOVE_COMMENT": "ئىزاھاتنى ئۆچۈرۈش", - "EXTERNAL_INPUTS": "سىرتقى كىرگۈزۈش", - "INLINE_INPUTS": "تاق قۇرلۇق كىرگۈزۈش", - "DELETE_BLOCK": "بۆلەك ئۆچۈرۈش", - "DELETE_X_BLOCKS": "بۆلەك %1 نى ئۆچۈرۈش", - "DELETE_ALL_BLOCKS": "ھەممىنى ئۆچۈرۈش %1 پارچىمۇ؟", - "CLEAN_UP": "بۆلەكنى رەتلەش", - "COLLAPSE_BLOCK": "قاتلىنىش بۆلىكى", - "COLLAPSE_ALL": "قاتلىنىش بۆلىكى", - "EXPAND_BLOCK": "ئېچىلىش بۆلىكى", - "EXPAND_ALL": "ئېچىلىش بۆلىكى", - "DISABLE_BLOCK": "چەكلەنگەن بۆلەك", - "ENABLE_BLOCK": "قوزغىتىلغان بۆلەك", - "HELP": "ياردەم", - "UNDO": "يېنىۋال", - "REDO": "قايتىلاش", - "CHANGE_VALUE_TITLE": "قىممەت ئۆزگەرتىش:", - "RENAME_VARIABLE": "ئۆزگەرگۈچى مىقدارغا قايتا نام قويۇش", - "RENAME_VARIABLE_TITLE": "بارلىق بۆلەك “%1\" ئۆزگەرگۈچى مىقدار قايتا ناملىنىپ :", - "NEW_VARIABLE": "ئۆزگەرگۈچى مىقدار ... قۇرۇش", - "NEW_VARIABLE_TITLE": "يېڭى ئۆزگەرگۈچى مىقدار نامى:", - "VARIABLE_ALREADY_EXISTS": "ئىسم مەۋجۇت “%1” ئۆزگەرگۈچى", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ئىسىملىك“%1” ئۆزگەرگۈچى مىقدار مەۋجۇت بولۇپ تۇرىدۇ ، لېكىن يەنە بىر ئۆزگەرگۈچى مىقدار تىپى بولۇش سۈپىتى بىلەن “%2” مەۋجۇت .", - "DELETE_VARIABLE_CONFIRMATION": "ئۆچۈرۈش “%2” ئۆزگەرگۈچى مىقدار%1 ئىشلىتىلىش ئورنى بارمۇ؟", - "DELETE_VARIABLE": "“%1” ئۆزگەرگۈچى مىقدارنى ئۆچۈرۈش", - "COLOUR_PICKER_HELPURL": "https://zh.wikipedia.org/wiki/رەڭگى", - "COLOUR_PICKER_TOOLTIP": " تاختىدىن رەڭنى تاللاڭ", - "COLOUR_RANDOM_TITLE": "خالىغان رەڭ", - "COLOUR_RANDOM_TOOLTIP": "ئىختىيارىي بىر رەڭنى تاللاڭ", - "COLOUR_RGB_TITLE": "رەڭگى", - "COLOUR_RGB_RED": "قىزىل", - "COLOUR_RGB_GREEN": "يېشىل", - "COLOUR_RGB_BLUE": "كۆك", - "COLOUR_BLEND_TITLE": "ئارىلاش", - "COLOUR_BLEND_COLOUR1": "رەڭ 1", - "COLOUR_BLEND_COLOUR2": "رەڭ 2", - "COLOUR_BLEND_RATIO": "نىسبەت", - "CONTROLS_REPEAT_HELPURL": "https://zh.wikipedia.org/wiki/Forئايلىنىش", - "CONTROLS_REPEAT_TITLE": "تەكرار %1قېتىم", - "CONTROLS_REPEAT_INPUT_DO": "ئىجرا", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تەكرار بولۇش", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تەكرارلىقى", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ئۈزۈلۈپ ئايلىنىش", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": " كىيىنكى قېتىم داۋاملىق ئايلىنىشن", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ئۇنىڭ دەۋرىي ئۈزۈلۈش ئۆز ئىچىگە ئالىدۇ .", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "بۇ ئايلىنىشنىڭ قالغان قىسمى ئاتلاپ ئۆتۈپ كېتىدۇ ، ھەمدە داۋاملىق كېلەر قېتىملىق ئىتېراتسىيە .", - "CONTROLS_FLOW_STATEMENTS_WARNING": "ئاگاھلاندۇرۇش : بۇ پەقەت بىر ئايلىنىش دەۋرى ئىچىدە ئىشلىتىشكە بولىدۇ .", - "CONTROLS_IF_TOOLTIP_1": "ئەگەر قىممىتى ھەقىقەتەن ، بەزى جۈملە .", - "CONTROLS_IF_TOOLTIP_2": "ئەگەر قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئىككىنچى جۈملىسى ئىجرا قىلىندى .", - "CONTROLS_IF_TOOLTIP_3": "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، ئۇنداقتا ئىككىنچى پارچىنىڭ جۈملە .", - "CONTROLS_IF_TOOLTIP_4": "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، بولسا ئىجرا قىلىش جۈملىسى ئىشككى پارچە . ئەگەر قىممىتى يوق ، ئۇنداقتا ئەڭ ئاخىرقى بىر جۈملىسى .", - "CONTROLS_IF_MSG_IF": "ئەگەر", - "CONTROLS_IF_MSG_ELSEIF": "ئۇنداق بولمىسا ئەگەر", - "CONTROLS_IF_MSG_ELSE": "ئۇنداق بولمىسا", - "CONTROLS_IF_IF_TOOLTIP": "كۆپۈيۈپ كىتىدۇ، ئۆچۈرۈش ياكى قايتا تىزىلغان بايرام « if ( سۆزىنىڭ پارچە قايتىدىن تەقسىملەش .", - "CONTROLS_IF_ELSEIF_TOOLTIP": "بۇ بىلمەيمىز جۈملە بۆلىكى قوشۇلۇپ بىر if شەرتى .", - "CONTROLS_IF_ELSE_TOOLTIP": "ئەڭ ئاخىرقى قوشۇش ، ھەممە ئەھۋالنى ئۆز ئىچىگە ئالىدۇ بايرىمىدا بىلمەيمىز ifپارچىلىرى .", - "LOGIC_COMPARE_HELPURL": "https://zh.wikipedia.org/wiki/ تەڭ ئەمەس", - "LOGIC_COMPARE_TOOLTIP_EQ": "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولسا ، راستىنلا كەينىگە قايتسا.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولمايدۇ ، بەك كەلدى .", - "LOGIC_COMPARE_TOOLTIP_LT": "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا .", - "LOGIC_COMPARE_TOOLTIP_LTE": "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىككىنچى كىرگۈزۈش نەتىجىسى تىن تۆۋەن ياكى شۇنىڭغا تەڭ بولسا راستىنلا كەينىگە قايتسا .", - "LOGIC_COMPARE_TOOLTIP_GT": "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىشككىنچى چوڭ بولسا راستىنلا كەينىگە قايتسا .", - "LOGIC_COMPARE_TOOLTIP_GTE": "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا .", - "LOGIC_OPERATION_AND": "ۋە", - "LOGIC_OPERATION_OR": "ياكى", - "LOGIC_NEGATE_TITLE": "ئەمەس%1", - "LOGIC_BOOLEAN_TRUE": "ھەقىقىي", - "LOGIC_BOOLEAN_FALSE": "يالغان", - "LOGIC_BOOLEAN_TOOLTIP": "راست ياكى يالغان قايتىش", - "LOGIC_NULL": "قۇرۇق", - "LOGIC_NULL_TOOLTIP": " نۆلگە قايتىش", - "LOGIC_TERNARY_CONDITION": "سىناق", - "LOGIC_TERNARY_IF_TRUE": "ئەگەر راست بولسا", - "LOGIC_TERNARY_IF_FALSE": "ئەگەر يالغان بولسا", - "MATH_NUMBER_HELPURL": "https://zh.wikipedia.org/wiki/سان", - "MATH_NUMBER_TOOLTIP": "بىر سان.", - "MATH_ARITHMETIC_HELPURL": "https://zh.wikipedia.org/wiki/ئارىفمېتىكىلىق", - "MATH_SINGLE_HELPURL": "https://zh.wikipedia.org/wiki/كۋادرات يىلتىز", - "MATH_SINGLE_OP_ROOT": " كۋادرات يىلتىز", - "MATH_SINGLE_OP_ABSOLUTE": "مۇتلەق", - "MATH_TRIG_HELPURL": "https://zh.wikipedia.org/wiki/ترىگونومېتىرىيىلىك فۇنكسىيە", - "MATH_CONSTANT_HELPURL": "https://zh.wikipedia.org/wiki/ماتېماتىكا تۇراقلىق سانى", - "MATH_IS_EVEN": "جۈپ سان", - "MATH_IS_ODD": " تاق سان", - "MATH_IS_PRIME": "تۈپ سان", - "MATH_IS_WHOLE": "پۈتۈن سان", - "MATH_IS_POSITIVE": "مۇسبەت", - "MATH_IS_NEGATIVE": " مەنپى", - "MATH_IS_DIVISIBLE_BY": "پۈتۈن بۆلۈنۈش", - "MATH_CHANGE_HELPURL": "https://zh.wikipedia.org/wiقوشۇش", - "MATH_CHANGE_TITLE": " ئۆزگەرتىش %1 دىن %2", - "MATH_ROUND_HELPURL": "https://zh.wikipedia.org/wiki/سانلىق قىممەت تۈزىتىش", - "MATH_ROUND_OPERATOR_ROUND": "تۆۋەنگە تارتىڭ", - "MATH_ROUND_OPERATOR_ROUNDUP": " تۆۋەنگە تارتىڭ", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "تۆۋەنگە تارتىڭ", - "MATH_ONLIST_OPERATOR_MIN": "جەدۋەل ئىچىدىكى ئەڭ كىچىك قىممەت", - "MATH_ONLIST_TOOLTIP_MIN": " جەدۋەلدىكى ئەڭ كىچىك سانغا قايتىش", - "MATH_ONLIST_OPERATOR_MAX": " جەدۋەلدىكى ئەڭ چوڭ قىممەت", - "MATH_ONLIST_OPERATOR_AVERAGE": "جەدۋەل ئىچىدىكى ئوتتۇرىچە سان", - "MATH_ONLIST_OPERATOR_MEDIAN": "جەدۋەلدىكى ئوتتۇرا سان", - "MATH_ONLIST_TOOLTIP_MEDIAN": " جەدۋەلدىكى ئوتتۇرا سانغا قايتىش", - "MATH_ONLIST_OPERATOR_MODE": " جەدۋەل ھالىتى", - "MATH_MODULO_HELPURL": "https://zh.wikipedia.org/wiki/مودېل ھېسابى", - "TEXT_CREATE_JOIN_TITLE_JOIN": " قوشۇش", - "LISTS_GET_INDEX_GET": "قولغا كەلتۈرۈش", - "LISTS_GET_INDEX_REMOVE": "چىقىرىۋىتىش", - "LISTS_GET_INDEX_FIRST": "تۇنجى", - "LISTS_GET_INDEX_LAST": "ئاخىرقى", - "LISTS_GET_INDEX_RANDOM": "خالىغانچە", - "LISTS_SET_INDEX_SET": "تەڭشەك", - "LISTS_SET_INDEX_INSERT": "قىستۇرۇڭ", - "LISTS_SORT_ORDER_ASCENDING": "يۇقىرىغا", - "LISTS_SORT_ORDER_DESCENDING": "تۆۋەنگە", - "LISTS_SORT_TYPE_NUMERIC": "سان بويىچە تىزىل", - "LISTS_SORT_TYPE_TEXT": " ھەرپ بويىچە تىزىل", - "LISTS_SORT_TYPE_IGNORECASE": "ھەرب بويىچە تىزىل، چوڭ كىچىك يېزىلىش ھېساپ قىلىنمايدۇ", - "DIALOG_OK": "ماقۇل", - "DIALOG_CANCEL": "ۋاز كەچ" -} +{ + "@metadata": { + "authors": [ + "HushBeg", + "Uzdil", + "چۈشكۈن" + ] + }, + "VARIABLES_DEFAULT_NAME": "تۈر", + "TODAY": "بۈگۈن", + "DUPLICATE_BLOCK": "كۆچۈرۈش", + "ADD_COMMENT": "ئىزاھات قوشۇش", + "REMOVE_COMMENT": "ئىزاھاتنى ئۆچۈرۈش", + "EXTERNAL_INPUTS": "سىرتقى كىرگۈزۈش", + "INLINE_INPUTS": "تاق قۇرلۇق كىرگۈزۈش", + "DELETE_BLOCK": "بۆلەك ئۆچۈرۈش", + "DELETE_X_BLOCKS": "بۆلەك %1 نى ئۆچۈرۈش", + "DELETE_ALL_BLOCKS": "ھەممىنى ئۆچۈرۈش %1 پارچىمۇ؟", + "CLEAN_UP": "بۆلەكنى رەتلەش", + "COLLAPSE_BLOCK": "قاتلىنىش بۆلىكى", + "COLLAPSE_ALL": "قاتلىنىش بۆلىكى", + "EXPAND_BLOCK": "ئېچىلىش بۆلىكى", + "EXPAND_ALL": "ئېچىلىش بۆلىكى", + "DISABLE_BLOCK": "چەكلەنگەن بۆلەك", + "ENABLE_BLOCK": "قوزغىتىلغان بۆلەك", + "HELP": "ياردەم", + "UNDO": "يېنىۋال", + "REDO": "قايتىلاش", + "CHANGE_VALUE_TITLE": "قىممەت ئۆزگەرتىش:", + "RENAME_VARIABLE": "ئۆزگەرگۈچى مىقدارغا قايتا نام قويۇش", + "RENAME_VARIABLE_TITLE": "بارلىق بۆلەك “%1\" ئۆزگەرگۈچى مىقدار قايتا ناملىنىپ :", + "NEW_VARIABLE": "ئۆزگەرگۈچى مىقدار ... قۇرۇش", + "NEW_VARIABLE_TITLE": "يېڭى ئۆزگەرگۈچى مىقدار نامى:", + "VARIABLE_ALREADY_EXISTS": "ئىسم مەۋجۇت “%1” ئۆزگەرگۈچى", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ئىسىملىك“%1” ئۆزگەرگۈچى مىقدار مەۋجۇت بولۇپ تۇرىدۇ ، لېكىن يەنە بىر ئۆزگەرگۈچى مىقدار تىپى بولۇش سۈپىتى بىلەن “%2” مەۋجۇت .", + "DELETE_VARIABLE_CONFIRMATION": "ئۆچۈرۈش “%2” ئۆزگەرگۈچى مىقدار%1 ئىشلىتىلىش ئورنى بارمۇ؟", + "DELETE_VARIABLE": "“%1” ئۆزگەرگۈچى مىقدارنى ئۆچۈرۈش", + "COLOUR_PICKER_HELPURL": "https://zh.wikipedia.org/wiki/رەڭگى", + "COLOUR_PICKER_TOOLTIP": " تاختىدىن رەڭنى تاللاڭ", + "COLOUR_RANDOM_TITLE": "خالىغان رەڭ", + "COLOUR_RANDOM_TOOLTIP": "ئىختىيارىي بىر رەڭنى تاللاڭ", + "COLOUR_RGB_TITLE": "رەڭگى", + "COLOUR_RGB_RED": "قىزىل", + "COLOUR_RGB_GREEN": "يېشىل", + "COLOUR_RGB_BLUE": "كۆك", + "COLOUR_BLEND_TITLE": "ئارىلاش", + "COLOUR_BLEND_COLOUR1": "رەڭ 1", + "COLOUR_BLEND_COLOUR2": "رەڭ 2", + "COLOUR_BLEND_RATIO": "نىسبەت", + "CONTROLS_REPEAT_HELPURL": "https://zh.wikipedia.org/wiki/Forئايلىنىش", + "CONTROLS_REPEAT_TITLE": "تەكرار %1قېتىم", + "CONTROLS_REPEAT_INPUT_DO": "ئىجرا", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "تەكرار بولۇش", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تەكرارلىقى", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ئۈزۈلۈپ ئايلىنىش", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": " كىيىنكى قېتىم داۋاملىق ئايلىنىشن", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "ئۇنىڭ دەۋرىي ئۈزۈلۈش ئۆز ئىچىگە ئالىدۇ .", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "بۇ ئايلىنىشنىڭ قالغان قىسمى ئاتلاپ ئۆتۈپ كېتىدۇ ، ھەمدە داۋاملىق كېلەر قېتىملىق ئىتېراتسىيە .", + "CONTROLS_FLOW_STATEMENTS_WARNING": "ئاگاھلاندۇرۇش : بۇ پەقەت بىر ئايلىنىش دەۋرى ئىچىدە ئىشلىتىشكە بولىدۇ .", + "CONTROLS_IF_TOOLTIP_1": "ئەگەر قىممىتى ھەقىقەتەن ، بەزى جۈملە .", + "CONTROLS_IF_TOOLTIP_2": "ئەگەر قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئىككىنچى جۈملىسى ئىجرا قىلىندى .", + "CONTROLS_IF_TOOLTIP_3": "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، ئۇنداقتا ئىككىنچى پارچىنىڭ جۈملە .", + "CONTROLS_IF_TOOLTIP_4": "ئەگەر تۇنجى قىممىتى ھەقىقەتەن ، ئۇنداقتا نىڭ بىر جۈملە . ئۇنداق بولمايدىكەن، ئەگەر ئىككىنچى قىممىتى ، بولسا ئىجرا قىلىش جۈملىسى ئىشككى پارچە . ئەگەر قىممىتى يوق ، ئۇنداقتا ئەڭ ئاخىرقى بىر جۈملىسى .", + "CONTROLS_IF_MSG_IF": "ئەگەر", + "CONTROLS_IF_MSG_ELSEIF": "ئۇنداق بولمىسا ئەگەر", + "CONTROLS_IF_MSG_ELSE": "ئۇنداق بولمىسا", + "CONTROLS_IF_IF_TOOLTIP": "كۆپۈيۈپ كىتىدۇ، ئۆچۈرۈش ياكى قايتا تىزىلغان بايرام « if ( سۆزىنىڭ پارچە قايتىدىن تەقسىملەش .", + "CONTROLS_IF_ELSEIF_TOOLTIP": "بۇ بىلمەيمىز جۈملە بۆلىكى قوشۇلۇپ بىر if شەرتى .", + "CONTROLS_IF_ELSE_TOOLTIP": "ئەڭ ئاخىرقى قوشۇش ، ھەممە ئەھۋالنى ئۆز ئىچىگە ئالىدۇ بايرىمىدا بىلمەيمىز ifپارچىلىرى .", + "LOGIC_COMPARE_HELPURL": "https://zh.wikipedia.org/wiki/ تەڭ ئەمەس", + "LOGIC_COMPARE_TOOLTIP_EQ": "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولسا ، راستىنلا كەينىگە قايتسا.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "ئەگەر ئىككى دانە كىرگۈزۈش نەتىجىسى تەڭ بولمايدۇ ، بەك كەلدى .", + "LOGIC_COMPARE_TOOLTIP_LT": "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا .", + "LOGIC_COMPARE_TOOLTIP_LTE": "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىككىنچى كىرگۈزۈش نەتىجىسى تىن تۆۋەن ياكى شۇنىڭغا تەڭ بولسا راستىنلا كەينىگە قايتسا .", + "LOGIC_COMPARE_TOOLTIP_GT": "ئەگەر تۇنجى كىرگۈزۈش نەتىجىسى ئىشككىنچى چوڭ بولسا راستىنلا كەينىگە قايتسا .", + "LOGIC_COMPARE_TOOLTIP_GTE": "ئەگەر تۇنجى كىرگۈزۈش نەتىجىدە ئىشككىنچى كىچىك بولسا راستىنلا كەينىگە قايتسا .", + "LOGIC_OPERATION_AND": "ۋە", + "LOGIC_OPERATION_OR": "ياكى", + "LOGIC_NEGATE_TITLE": "ئەمەس%1", + "LOGIC_BOOLEAN_TRUE": "ھەقىقىي", + "LOGIC_BOOLEAN_FALSE": "يالغان", + "LOGIC_BOOLEAN_TOOLTIP": "راست ياكى يالغان قايتىش", + "LOGIC_NULL": "قۇرۇق", + "LOGIC_NULL_TOOLTIP": " نۆلگە قايتىش", + "LOGIC_TERNARY_CONDITION": "سىناق", + "LOGIC_TERNARY_IF_TRUE": "ئەگەر راست بولسا", + "LOGIC_TERNARY_IF_FALSE": "ئەگەر يالغان بولسا", + "MATH_NUMBER_HELPURL": "https://zh.wikipedia.org/wiki/سان", + "MATH_NUMBER_TOOLTIP": "بىر سان.", + "MATH_ARITHMETIC_HELPURL": "https://zh.wikipedia.org/wiki/ئارىفمېتىكىلىق", + "MATH_SINGLE_HELPURL": "https://zh.wikipedia.org/wiki/كۋادرات يىلتىز", + "MATH_SINGLE_OP_ROOT": " كۋادرات يىلتىز", + "MATH_SINGLE_OP_ABSOLUTE": "مۇتلەق", + "MATH_TRIG_HELPURL": "https://zh.wikipedia.org/wiki/ترىگونومېتىرىيىلىك فۇنكسىيە", + "MATH_CONSTANT_HELPURL": "https://zh.wikipedia.org/wiki/ماتېماتىكا تۇراقلىق سانى", + "MATH_IS_EVEN": "جۈپ سان", + "MATH_IS_ODD": " تاق سان", + "MATH_IS_PRIME": "تۈپ سان", + "MATH_IS_WHOLE": "پۈتۈن سان", + "MATH_IS_POSITIVE": "مۇسبەت", + "MATH_IS_NEGATIVE": " مەنپى", + "MATH_IS_DIVISIBLE_BY": "پۈتۈن بۆلۈنۈش", + "MATH_CHANGE_HELPURL": "https://zh.wikipedia.org/wiقوشۇش", + "MATH_CHANGE_TITLE": " ئۆزگەرتىش %1 دىن %2", + "MATH_ROUND_HELPURL": "https://zh.wikipedia.org/wiki/سانلىق قىممەت تۈزىتىش", + "MATH_ROUND_OPERATOR_ROUND": "تۆۋەنگە تارتىڭ", + "MATH_ROUND_OPERATOR_ROUNDUP": " تۆۋەنگە تارتىڭ", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "تۆۋەنگە تارتىڭ", + "MATH_ONLIST_OPERATOR_MIN": "جەدۋەل ئىچىدىكى ئەڭ كىچىك قىممەت", + "MATH_ONLIST_TOOLTIP_MIN": " جەدۋەلدىكى ئەڭ كىچىك سانغا قايتىش", + "MATH_ONLIST_OPERATOR_MAX": " جەدۋەلدىكى ئەڭ چوڭ قىممەت", + "MATH_ONLIST_OPERATOR_AVERAGE": "جەدۋەل ئىچىدىكى ئوتتۇرىچە سان", + "MATH_ONLIST_OPERATOR_MEDIAN": "جەدۋەلدىكى ئوتتۇرا سان", + "MATH_ONLIST_TOOLTIP_MEDIAN": " جەدۋەلدىكى ئوتتۇرا سانغا قايتىش", + "MATH_ONLIST_OPERATOR_MODE": " جەدۋەل ھالىتى", + "MATH_MODULO_HELPURL": "https://zh.wikipedia.org/wiki/مودېل ھېسابى", + "TEXT_CREATE_JOIN_TITLE_JOIN": " قوشۇش", + "LISTS_GET_INDEX_GET": "قولغا كەلتۈرۈش", + "LISTS_GET_INDEX_REMOVE": "چىقىرىۋىتىش", + "LISTS_GET_INDEX_FIRST": "تۇنجى", + "LISTS_GET_INDEX_LAST": "ئاخىرقى", + "LISTS_GET_INDEX_RANDOM": "خالىغانچە", + "LISTS_SET_INDEX_SET": "تەڭشەك", + "LISTS_SET_INDEX_INSERT": "قىستۇرۇڭ", + "LISTS_SORT_ORDER_ASCENDING": "يۇقىرىغا", + "LISTS_SORT_ORDER_DESCENDING": "تۆۋەنگە", + "LISTS_SORT_TYPE_NUMERIC": "سان بويىچە تىزىل", + "LISTS_SORT_TYPE_TEXT": " ھەرپ بويىچە تىزىل", + "LISTS_SORT_TYPE_IGNORECASE": "ھەرب بويىچە تىزىل، چوڭ كىچىك يېزىلىش ھېساپ قىلىنمايدۇ", + "DIALOG_OK": "ماقۇل", + "DIALOG_CANCEL": "ۋاز كەچ" +} diff --git a/msg/json/uk.json b/msg/json/uk.json index b0763406ebf..6d93e1b621a 100644 --- a/msg/json/uk.json +++ b/msg/json/uk.json @@ -1,362 +1,362 @@ -{ - "@metadata": { - "authors": [ - "Andriykopanytsia", - "Base", - "Gzhegozh", - "Igor Zavadsky", - "Lxlalexlxl", - "Movses", - "Piramidion", - "SimondR", - "Visem", - "Ата", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "елемент", - "UNNAMED_KEY": "без назви", - "TODAY": "Сьогодні", - "DUPLICATE_BLOCK": "Дублювати", - "ADD_COMMENT": "Додати коментар", - "REMOVE_COMMENT": "Видалити коментар", - "DUPLICATE_COMMENT": "Дублювати примітку", - "EXTERNAL_INPUTS": "Зовнішні входи", - "INLINE_INPUTS": "Вбудовані входи", - "DELETE_BLOCK": "Видалити блок", - "DELETE_X_BLOCKS": "Видалити %1 блоків", - "DELETE_ALL_BLOCKS": "Вилучити всі блоки %1?", - "CLEAN_UP": "Очистити блоки", - "COLLAPSE_BLOCK": "Згорнути блок", - "COLLAPSE_ALL": "Згорнути блоки", - "EXPAND_BLOCK": "Розгорнути блок", - "EXPAND_ALL": "Розгорнути блоки", - "DISABLE_BLOCK": "Вимкнути блок", - "ENABLE_BLOCK": "Увімкнути блок", - "HELP": "Довідка", - "UNDO": "Скасувати", - "REDO": "Повторити", - "CHANGE_VALUE_TITLE": "Змінити значення:", - "RENAME_VARIABLE": "Перейменувати змінну...", - "RENAME_VARIABLE_TITLE": "Перейменувати усі змінні \"%1\" до:", - "NEW_VARIABLE": "Створити змінну...", - "NEW_STRING_VARIABLE": "Створити рядкову змінну...", - "NEW_NUMBER_VARIABLE": "Створити числову змінну...", - "NEW_COLOUR_VARIABLE": "Створити колірну змінну...", - "NEW_VARIABLE_TYPE_TITLE": "Тип нової змінної:", - "NEW_VARIABLE_TITLE": "Нова назва змінної:", - "VARIABLE_ALREADY_EXISTS": "Змінна з назвою '%1' вже існує.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Змінна з назвою '%1' вже існує в іншому типі: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Вилучити %1 використання змінної '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Неможливо видалити змінну '%1', тому що це частина визначення функції '%2'", - "DELETE_VARIABLE": "Вилучити змінну '%1'", - "COLOUR_PICKER_HELPURL": "https://uk.wikipedia.org/wiki/Колір", - "COLOUR_PICKER_TOOLTIP": "Вибрати колір з палітри.", - "COLOUR_RANDOM_TITLE": "випадковий колір", - "COLOUR_RANDOM_TOOLTIP": "Вибрати колір навмання.", - "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", - "COLOUR_RGB_TITLE": "колір з", - "COLOUR_RGB_RED": "червоний", - "COLOUR_RGB_GREEN": "зелений", - "COLOUR_RGB_BLUE": "синій", - "COLOUR_RGB_TOOLTIP": "Створити колір зі вказаними рівнями червоного, зеленого та синього. Усі значення мають бути від 0 до 100.", - "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", - "COLOUR_BLEND_TITLE": "змішати", - "COLOUR_BLEND_COLOUR1": "колір 1", - "COLOUR_BLEND_COLOUR2": "колір 2", - "COLOUR_BLEND_RATIO": "співвідношення", - "COLOUR_BLEND_TOOLTIP": "Змішує два кольори разом у вказаному співвідношені (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://uk.wikipedia.org/wiki/Цикл_(програмування)#.D0.A6.D0.B8.D0.BA.D0.BB_.D0.B7_.D0.BB.D1.96.D1.87.D0.B8.D0.BB.D1.8C.D0.BD.D0.B8.D0.BA.D0.BE.D0.BC", - "CONTROLS_REPEAT_TITLE": "повторити %1 разів", - "CONTROLS_REPEAT_INPUT_DO": "виконати", - "CONTROLS_REPEAT_TOOLTIP": "Виконати певні дії декілька разів.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "повторювати поки", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "повторювати, доки не", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Поки значення істинне, виконувати певні дії.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Поки значення хибне, виконувати певні дії.", - "CONTROLS_FOR_TOOLTIP": "Наявна змінна \"%1\" набуває значень від початкового до кінцевого, враховуючи заданий інтервал, і виконуються вказані блоки.", - "CONTROLS_FOR_TITLE": "рахувати з %1 від %2 до %3 через %4", - "CONTROLS_FOREACH_TITLE": "для кожного елемента %1 у списку %2", - "CONTROLS_FOREACH_TOOLTIP": "Для кожного елемента в списку змінна '%1' отримує значення елемента, а потім виконуються певні дії.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "перервати цикл", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "продовжити з наступної ітерації циклу", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Перервати виконання циклу.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Пропустити залишок цього циклу і перейти до виконання наступної ітерації.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Попередження: цей блок може бути використаний тільки в межах циклу.", - "CONTROLS_IF_TOOLTIP_1": "Якщо значення істинне, то виконати певні дії.", - "CONTROLS_IF_TOOLTIP_2": "Якщо значення істинне, то виконується перший блок операторів. В іншому випадку виконується другий блок операторів.", - "CONTROLS_IF_TOOLTIP_3": "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істина, то виконується другий блок операторів.", - "CONTROLS_IF_TOOLTIP_4": "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істинне, то виконується другий блок операторів. Якщо жодне із значень не є істинним, то виконується останній блок операторів.", - "CONTROLS_IF_MSG_IF": "якщо", - "CONTROLS_IF_MSG_ELSEIF": "інакше якщо", - "CONTROLS_IF_MSG_ELSE": "інакше", - "CONTROLS_IF_IF_TOOLTIP": "Додайте, вилучіть або змініть порядок секцій, щоб переналаштувати цей блок 'якщо'.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Додайте умову до блока 'якщо'.", - "CONTROLS_IF_ELSE_TOOLTIP": "Додати остаточну, всеосяжну умову до блоку 'якщо'.", - "LOGIC_COMPARE_HELPURL": "https://uk.wikipedia.org/wiki/Нерівність", - "LOGIC_COMPARE_TOOLTIP_EQ": "Повертає істину, якщо обидва входи рівні один одному.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Повертає істину, якщо обидва входи не дорівнюють один одному.", - "LOGIC_COMPARE_TOOLTIP_LT": "Повертає істину, якщо перше вхідне значення менше, ніж друге.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Повертає істину, якщо перше вхідне значення менше або дорівнює другому.", - "LOGIC_COMPARE_TOOLTIP_GT": "Повертає істину, якщо перше вхідне значення більше, ніж друге.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Повертає істину, якщо перше вхідне значення більше або дорівнює другому.", - "LOGIC_OPERATION_TOOLTIP_AND": "Повертає істину, якщо обидва входи істинні.", - "LOGIC_OPERATION_AND": "та", - "LOGIC_OPERATION_TOOLTIP_OR": "Повертає істину, якщо принаймні один з входів істинний.", - "LOGIC_OPERATION_OR": "або", - "LOGIC_NEGATE_TITLE": "не %1", - "LOGIC_NEGATE_TOOLTIP": "Повертає істину, якщо вхідне значення хибне. Повертає хибність, якщо вхідне значення істинне.", - "LOGIC_BOOLEAN_TRUE": "істина", - "LOGIC_BOOLEAN_FALSE": "хибність", - "LOGIC_BOOLEAN_TOOLTIP": "Повертає значення істина або хибність.", - "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", - "LOGIC_NULL": "ніщо", - "LOGIC_NULL_TOOLTIP": "Повертає ніщо.", - "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", - "LOGIC_TERNARY_CONDITION": "тест", - "LOGIC_TERNARY_IF_TRUE": "якщо істина", - "LOGIC_TERNARY_IF_FALSE": "якщо хибність", - "LOGIC_TERNARY_TOOLTIP": "Перевіряє умову в 'тест'. Якщо умова істинна, то повертає значення 'якщо істина'; в іншому випадку повертає значення 'якщо хибність'.", - "MATH_NUMBER_HELPURL": "https://uk.wikipedia.org/wiki/Число", - "MATH_NUMBER_TOOLTIP": "Число.", - "MATH_ARITHMETIC_HELPURL": "https://uk.wikipedia.org/wiki/Арифметика", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Повертає суму двох чисел.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Повертає різницю двох чисел.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Повертає добуток двох чисел.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Повертає частку двох чисел.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Повертає перше число, піднесене до степеня, вираженого другим числом.", - "MATH_SINGLE_HELPURL": "https://uk.wikipedia.org/wiki/Квадратний_корінь", - "MATH_SINGLE_OP_ROOT": "квадратний корінь", - "MATH_SINGLE_TOOLTIP_ROOT": "Повертає квадратний корінь з числа.", - "MATH_SINGLE_OP_ABSOLUTE": "модуль", - "MATH_SINGLE_TOOLTIP_ABS": "Повертає модуль числа.", - "MATH_SINGLE_TOOLTIP_NEG": "Повертає протилежне число.", - "MATH_SINGLE_TOOLTIP_LN": "Повертає натуральний логарифм числа.", - "MATH_SINGLE_TOOLTIP_LOG10": "Повертає десятковий логарифм числа.", - "MATH_SINGLE_TOOLTIP_EXP": "Повертає e у степені.", - "MATH_SINGLE_TOOLTIP_POW10": "Повертає 10 у степені.", - "MATH_TRIG_HELPURL": "https://uk.wikipedia.org/wiki/Тригонометричні_функції", - "MATH_TRIG_TOOLTIP_SIN": "Повертає синус кута в градусах (не в радіанах).", - "MATH_TRIG_TOOLTIP_COS": "Повертає косинус кута в градусах (не в радіанах).", - "MATH_TRIG_TOOLTIP_TAN": "Повертає тангенс кута в градусах (не в радіанах).", - "MATH_TRIG_TOOLTIP_ASIN": "Повертає арксинус числа.", - "MATH_TRIG_TOOLTIP_ACOS": "Повертає арккосинус числа.", - "MATH_TRIG_TOOLTIP_ATAN": "Повертає арктангенс числа.", - "MATH_CONSTANT_HELPURL": "https://uk.wikipedia.org/wiki/Математична_константа", - "MATH_CONSTANT_TOOLTIP": "Повертає одну з поширених констант: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) або ∞ (нескінченність).", - "MATH_IS_EVEN": "парне", - "MATH_IS_ODD": "непарне", - "MATH_IS_PRIME": "просте", - "MATH_IS_WHOLE": "ціле", - "MATH_IS_POSITIVE": "додатне", - "MATH_IS_NEGATIVE": "від'ємне", - "MATH_IS_DIVISIBLE_BY": "ділиться на", - "MATH_IS_TOOLTIP": "Перевіряє, чи число парне, непарне, просте, ціле, додатне, від'ємне або чи воно ділиться на певне число без остачі. Повертає істину або хибність.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "змінити %1 на %2", - "MATH_CHANGE_TOOLTIP": "Додати число до змінної '%1'.", - "MATH_ROUND_HELPURL": "https://uk.wikipedia.org/wiki/Округлення", - "MATH_ROUND_TOOLTIP": "Округлення числа до більшого або до меншого.", - "MATH_ROUND_OPERATOR_ROUND": "округлити", - "MATH_ROUND_OPERATOR_ROUNDUP": "округлити до більшого", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "округлити до меншого", - "MATH_ONLIST_HELPURL": "http://www.mapleprimes.com/questions/100441-Applying-Function-To-List-Of-Numbers", - "MATH_ONLIST_OPERATOR_SUM": "сума списку", - "MATH_ONLIST_TOOLTIP_SUM": "Повертає суму всіх чисел у списку.", - "MATH_ONLIST_OPERATOR_MIN": "мінімум списку", - "MATH_ONLIST_TOOLTIP_MIN": "Повертає найменше число у списку.", - "MATH_ONLIST_OPERATOR_MAX": "максимум списку", - "MATH_ONLIST_TOOLTIP_MAX": "Повертає найбільше число у списку.", - "MATH_ONLIST_OPERATOR_AVERAGE": "середнє списку", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Повертає середнє (арифметичне) числових значень у списку.", - "MATH_ONLIST_OPERATOR_MEDIAN": "медіана списку", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Повертає медіану списку.", - "MATH_ONLIST_OPERATOR_MODE": "моди списку", - "MATH_ONLIST_TOOLTIP_MODE": "Повертає перелік найпоширеніших елементів у списку.", - "MATH_ONLIST_OPERATOR_STD_DEV": "стандартне відхилення списку", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Повертає стандартне відхилення списку.", - "MATH_ONLIST_OPERATOR_RANDOM": "випадковий елемент списку", - "MATH_ONLIST_TOOLTIP_RANDOM": "Повертає випадковий елемент зі списку.", - "MATH_MODULO_HELPURL": "https://uk.wikipedia.org/wiki/Ділення_з_остачею", - "MATH_MODULO_TITLE": "остача від %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Повертає остачу від ділення двох чисел.", - "MATH_CONSTRAIN_TITLE": "обмежити %1 від %2 до %3", - "MATH_CONSTRAIN_TOOLTIP": "Обмежує число вказаними межами (включно).", - "MATH_RANDOM_INT_HELPURL": "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел", - "MATH_RANDOM_INT_TITLE": "випадкове ціле число від %1 до %2", - "MATH_RANDOM_INT_TOOLTIP": "Повертає випадкове ціле число між двома заданими межами включно.", - "MATH_RANDOM_FLOAT_HELPURL": "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "випадковий дріб", - "MATH_RANDOM_FLOAT_TOOLTIP": "Повертає випадковий дріб від 0,0 (включно) та 1.0 (не включно).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 по X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Повертає арктангенс точки (X, Y) у градусах від -180 до 180.", - "TEXT_TEXT_HELPURL": "https://uk.wikipedia.org/wiki/Рядок_(програмування)", - "TEXT_TEXT_TOOLTIP": "Символ, слово або рядок тексту.", - "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", - "TEXT_JOIN_TITLE_CREATEWITH": "створити текст з", - "TEXT_JOIN_TOOLTIP": "Створити фрагмент тексту шляхом з'єднування будь-якого числа елементів.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "приєднати", - "TEXT_CREATE_JOIN_TOOLTIP": "Додайте, вилучіть або змініть порядок секцій для переналаштування текстового блоку.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Додати елемент до тексту.", - "TEXT_APPEND_TITLE": "до %1 додати текст %2", - "TEXT_APPEND_TOOLTIP": "Додати деякий текст до змінної '%1'.", - "TEXT_LENGTH_TITLE": "довжина %1", - "TEXT_LENGTH_TOOLTIP": "Повертає число символів (включно з пропусками) у даному тексті.", - "TEXT_ISEMPTY_TITLE": "%1 є порожнім", - "TEXT_ISEMPTY_TOOLTIP": "Повертає істину, якщо вказаний текст порожній.", - "TEXT_INDEXOF_TOOLTIP": "Повертає індекс першого/останнього входження першого тексту в другий. Повертає %1, якщо текст не знайдено.", - "TEXT_INDEXOF_TITLE": "у тексті %1 %2 %3.", - "TEXT_INDEXOF_OPERATOR_FIRST": "знайти перше входження тексту", - "TEXT_INDEXOF_OPERATOR_LAST": "знайти останнє входження тексту", - "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", - "TEXT_CHARAT_TITLE": "з тексту %1 %2", - "TEXT_CHARAT_FROM_START": "отримати символ #", - "TEXT_CHARAT_FROM_END": "отримати символ # з кінця", - "TEXT_CHARAT_FIRST": "отримати перший символ", - "TEXT_CHARAT_LAST": "отримати останній символ", - "TEXT_CHARAT_RANDOM": "отримати випадковий символ", - "TEXT_CHARAT_TAIL": "-ий.", - "TEXT_CHARAT_TOOLTIP": "Повертає символ у зазначеній позиції.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Повертає заданий фрагмент тексту.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "у тексті", - "TEXT_GET_SUBSTRING_START_FROM_START": "отримати підрядок від символу #", - "TEXT_GET_SUBSTRING_START_FROM_END": "отримати підрядок від символу # з кінця", - "TEXT_GET_SUBSTRING_START_FIRST": "отримати підрядок від першого символу", - "TEXT_GET_SUBSTRING_END_FROM_START": "до символу #", - "TEXT_GET_SUBSTRING_END_FROM_END": "до символу # з кінця", - "TEXT_GET_SUBSTRING_END_LAST": "до останнього символу", - "TEXT_GET_SUBSTRING_TAIL": "-ого.", - "TEXT_CHANGECASE_TOOLTIP": "В іншому випадку повертає копію тексту.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "до ВЕРХНЬОГО регістру", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "до нижнього регістру", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Великі Перші Букви", - "TEXT_TRIM_TOOLTIP": "Повертає копію тексту з вилученими пропусками з одного або обох кінців.", - "TEXT_TRIM_OPERATOR_BOTH": "вилучити крайні пропуски з обох кінців", - "TEXT_TRIM_OPERATOR_LEFT": "вилучити пропуски з лівого боку", - "TEXT_TRIM_OPERATOR_RIGHT": "вилучити пропуски з правого боку", - "TEXT_PRINT_TITLE": "друк %1", - "TEXT_PRINT_TOOLTIP": "Надрукувати заданий текст, числа або інші значення.", - "TEXT_PROMPT_TYPE_TEXT": "запит тексту з повідомленням", - "TEXT_PROMPT_TYPE_NUMBER": "запит числа з повідомленням", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Запитати у користувача число.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Запитати у користувача деякий текст.", - "TEXT_COUNT_MESSAGE0": "кількість %1 в %2", - "TEXT_COUNT_TOOLTIP": "Підраховує, скільки разів деякий текст з'являється в іншому тексті.", - "TEXT_REPLACE_MESSAGE0": "замінити %1 на %2 в %3", - "TEXT_REPLACE_TOOLTIP": "Замінює всі входження деякого тексту іншим текстом.", - "TEXT_REVERSE_MESSAGE0": "розвернути %1", - "TEXT_REVERSE_TOOLTIP": "Змінює на протилежний порядок символів у тексті.", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "створити порожній список", - "LISTS_CREATE_EMPTY_TOOLTIP": "Повертає список, довжиною 0, що не містить записів даних", - "LISTS_CREATE_WITH_TOOLTIP": "Створює список з будь-якою кількістю елементів.", - "LISTS_CREATE_WITH_INPUT_WITH": "створити список з", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "список", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Додайте, вилучіть або змініть порядок секцій для переналаштування блока списку.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Додати елемент до списку.", - "LISTS_REPEAT_TOOLTIP": "Створює список, що складається з заданого значення повтореного задану кількість разів.", - "LISTS_REPEAT_TITLE": "створити список з елемента %1 повтореного %2 разів", - "LISTS_LENGTH_TITLE": "довжина %1", - "LISTS_LENGTH_TOOLTIP": "Повертає довжину списку.", - "LISTS_ISEMPTY_TITLE": "%1 є порожнім", - "LISTS_ISEMPTY_TOOLTIP": "Повертає істину, якщо список порожній.", - "LISTS_INLIST": "у списку", - "LISTS_INDEX_OF_FIRST": "знайти перше входження елемента", - "LISTS_INDEX_OF_LAST": "знайти останнє входження елемента", - "LISTS_INDEX_OF_TOOLTIP": "Повертає індекс першого/останнього входження елемента у списку. Повертає %1, якщо елемент не знайдено.", - "LISTS_GET_INDEX_GET": "отримати", - "LISTS_GET_INDEX_GET_REMOVE": "отримати і вилучити", - "LISTS_GET_INDEX_REMOVE": "вилучити", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "# з кінця", - "LISTS_GET_INDEX_FIRST": "перший", - "LISTS_GET_INDEX_LAST": "останній", - "LISTS_GET_INDEX_RANDOM": "випадковий", - "LISTS_GET_INDEX_TAIL": "-ий.", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 - це перший елемент.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 - це останній елемент.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Повертає елемент у заданій позиції у списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Повертає перший елемент списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Повертає останній елемент списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Повертає випадковий елемент списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Видаляє і повертає елемент у заданій позиції у списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Видаляє і повертає перший елемент списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Видаляє і повертає останній елемент списку.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Видаляє і повертає випадковий елемент списоку.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Вилучає зі списку елемент у вказаній позиції.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Вилучає перший елемент списку.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Вилучає останній елемент списку.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Вилучає випадковий елемент списку.", - "LISTS_SET_INDEX_SET": "встановити", - "LISTS_SET_INDEX_INSERT": "вставити в", - "LISTS_SET_INDEX_INPUT_TO": "як", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Задає елемент списку у вказаній позиції.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Задає перший елемент списку.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Задає останній елемент списку.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Задає випадковий елемент у списку.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Вставка елемента у вказану позицію списку.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Вставляє елемент на початок списку.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Додає елемент у кінці списку.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Випадковим чином вставляє елемент у список.", - "LISTS_GET_SUBLIST_START_FROM_START": "отримати вкладений список з #", - "LISTS_GET_SUBLIST_START_FROM_END": "отримати вкладений список від # з кінця", - "LISTS_GET_SUBLIST_START_FIRST": "отримати вкладений список з першого", - "LISTS_GET_SUBLIST_END_FROM_START": "до #", - "LISTS_GET_SUBLIST_END_FROM_END": "до # з кінця", - "LISTS_GET_SUBLIST_END_LAST": "до останнього", - "LISTS_GET_SUBLIST_TAIL": "символу.", - "LISTS_GET_SUBLIST_TOOLTIP": "Створює копію вказаної частини списку.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "сортувати %3 %1 %2", - "LISTS_SORT_TOOLTIP": "Сортувати копію списку.", - "LISTS_SORT_ORDER_ASCENDING": "за зростанням", - "LISTS_SORT_ORDER_DESCENDING": "за спаданням", - "LISTS_SORT_TYPE_NUMERIC": "як числа", - "LISTS_SORT_TYPE_TEXT": "за абеткою", - "LISTS_SORT_TYPE_IGNORECASE": "за абеткою, ігноруючи регістр", - "LISTS_SPLIT_LIST_FROM_TEXT": "зробити з тексту список", - "LISTS_SPLIT_TEXT_FROM_LIST": "зробити зі списку текст", - "LISTS_SPLIT_WITH_DELIMITER": "з розділювачем", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Поділити текст на список текстів, розриваючи на кожному розділювачі.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Злити список текстів у єдиний текст, відокремивши розділювачами.", - "LISTS_REVERSE_MESSAGE0": "розвернути %1", - "LISTS_REVERSE_TOOLTIP": "Змінити порядок копії списку на зворотний.", - "ORDINAL_NUMBER_SUFFIX": "-ий.", - "VARIABLES_GET_TOOLTIP": "Повертає значення цієї змінної.", - "VARIABLES_GET_CREATE_SET": "Створити 'встановити %1'", - "VARIABLES_SET": "встановити %1 до %2", - "VARIABLES_SET_TOOLTIP": "Задає цю змінну рівною входу.", - "VARIABLES_SET_CREATE_GET": "Створити 'отримати %1'", - "PROCEDURES_DEFNORETURN_HELPURL": "https://uk.wikipedia.org/wiki/Підпрограма", - "PROCEDURES_DEFNORETURN_TITLE": "до", - "PROCEDURES_DEFNORETURN_PROCEDURE": "щось зробити", - "PROCEDURES_BEFORE_PARAMS": "з:", - "PROCEDURES_CALL_BEFORE_PARAMS": "з:", - "PROCEDURES_DEFNORETURN_DO": "блок тексту", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Створює функцію без виводу.", - "PROCEDURES_DEFNORETURN_COMMENT": "Опишіть цю функцію...", - "PROCEDURES_DEFRETURN_HELPURL": "https://uk.wikipedia.org/wiki/Підпрограма", - "PROCEDURES_DEFRETURN_RETURN": "повернути", - "PROCEDURES_DEFRETURN_TOOLTIP": "Створює функцію з виводом.", - "PROCEDURES_ALLOW_STATEMENTS": "дозволити дії", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Увага: ця функція має дубльовані параметри.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://uk.wikipedia.org/wiki/Підпрограма", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Запустити користувацьку функцію \"%1\".", - "PROCEDURES_CALLRETURN_HELPURL": "https://uk.wikipedia.org/wiki/Підпрограма", - "PROCEDURES_CALLRETURN_TOOLTIP": "Запустити користувацьку функцію \"%1\" і використати її вивід.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "входи", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Додайте, вилучіть або змініть порядок вхідних параметрів для цієї функції.", - "PROCEDURES_MUTATORARG_TITLE": "назва входу:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Додати до функції вхідні параметри.", - "PROCEDURES_HIGHLIGHT_DEF": "Підсвітити визначення функції", - "PROCEDURES_CREATE_DO": "Створити \"%1\"", - "PROCEDURES_IFRETURN_TOOLTIP": "Якщо значення істинне, то повернути друге значення.", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Попередження: цей блок може використовуватися лише в межах визначення функції.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Скажіть щось...", - "WORKSPACE_ARIA_LABEL": "Робоча область Blockly", - "COLLAPSED_WARNINGS_WARNING": "Звернуті блоки містять попередження.", - "DIALOG_OK": "Гаразд", - "DIALOG_CANCEL": "Скасувати" -} +{ + "@metadata": { + "authors": [ + "Andriykopanytsia", + "Base", + "Gzhegozh", + "Igor Zavadsky", + "Lxlalexlxl", + "Movses", + "Piramidion", + "SimondR", + "Visem", + "Ата", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "елемент", + "UNNAMED_KEY": "без назви", + "TODAY": "Сьогодні", + "DUPLICATE_BLOCK": "Дублювати", + "ADD_COMMENT": "Додати коментар", + "REMOVE_COMMENT": "Видалити коментар", + "DUPLICATE_COMMENT": "Дублювати примітку", + "EXTERNAL_INPUTS": "Зовнішні входи", + "INLINE_INPUTS": "Вбудовані входи", + "DELETE_BLOCK": "Видалити блок", + "DELETE_X_BLOCKS": "Видалити %1 блоків", + "DELETE_ALL_BLOCKS": "Вилучити всі блоки %1?", + "CLEAN_UP": "Очистити блоки", + "COLLAPSE_BLOCK": "Згорнути блок", + "COLLAPSE_ALL": "Згорнути блоки", + "EXPAND_BLOCK": "Розгорнути блок", + "EXPAND_ALL": "Розгорнути блоки", + "DISABLE_BLOCK": "Вимкнути блок", + "ENABLE_BLOCK": "Увімкнути блок", + "HELP": "Довідка", + "UNDO": "Скасувати", + "REDO": "Повторити", + "CHANGE_VALUE_TITLE": "Змінити значення:", + "RENAME_VARIABLE": "Перейменувати змінну...", + "RENAME_VARIABLE_TITLE": "Перейменувати усі змінні \"%1\" до:", + "NEW_VARIABLE": "Створити змінну...", + "NEW_STRING_VARIABLE": "Створити рядкову змінну...", + "NEW_NUMBER_VARIABLE": "Створити числову змінну...", + "NEW_COLOUR_VARIABLE": "Створити колірну змінну...", + "NEW_VARIABLE_TYPE_TITLE": "Тип нової змінної:", + "NEW_VARIABLE_TITLE": "Нова назва змінної:", + "VARIABLE_ALREADY_EXISTS": "Змінна з назвою '%1' вже існує.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Змінна з назвою '%1' вже існує в іншому типі: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Вилучити %1 використання змінної '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Неможливо видалити змінну '%1', тому що це частина визначення функції '%2'", + "DELETE_VARIABLE": "Вилучити змінну '%1'", + "COLOUR_PICKER_HELPURL": "https://uk.wikipedia.org/wiki/Колір", + "COLOUR_PICKER_TOOLTIP": "Вибрати колір з палітри.", + "COLOUR_RANDOM_TITLE": "випадковий колір", + "COLOUR_RANDOM_TOOLTIP": "Вибрати колір навмання.", + "COLOUR_RGB_HELPURL": "https://www.december.com/html/spec/colorpercompact.html", + "COLOUR_RGB_TITLE": "колір з", + "COLOUR_RGB_RED": "червоний", + "COLOUR_RGB_GREEN": "зелений", + "COLOUR_RGB_BLUE": "синій", + "COLOUR_RGB_TOOLTIP": "Створити колір зі вказаними рівнями червоного, зеленого та синього. Усі значення мають бути від 0 до 100.", + "COLOUR_BLEND_HELPURL": "https://meyerweb.com/eric/tools/color-blend/#:::rgbp", + "COLOUR_BLEND_TITLE": "змішати", + "COLOUR_BLEND_COLOUR1": "колір 1", + "COLOUR_BLEND_COLOUR2": "колір 2", + "COLOUR_BLEND_RATIO": "співвідношення", + "COLOUR_BLEND_TOOLTIP": "Змішує два кольори разом у вказаному співвідношені (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://uk.wikipedia.org/wiki/Цикл_(програмування)#.D0.A6.D0.B8.D0.BA.D0.BB_.D0.B7_.D0.BB.D1.96.D1.87.D0.B8.D0.BB.D1.8C.D0.BD.D0.B8.D0.BA.D0.BE.D0.BC", + "CONTROLS_REPEAT_TITLE": "повторити %1 разів", + "CONTROLS_REPEAT_INPUT_DO": "виконати", + "CONTROLS_REPEAT_TOOLTIP": "Виконати певні дії декілька разів.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "повторювати поки", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "повторювати, доки не", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Поки значення істинне, виконувати певні дії.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Поки значення хибне, виконувати певні дії.", + "CONTROLS_FOR_TOOLTIP": "Наявна змінна \"%1\" набуває значень від початкового до кінцевого, враховуючи заданий інтервал, і виконуються вказані блоки.", + "CONTROLS_FOR_TITLE": "рахувати з %1 від %2 до %3 через %4", + "CONTROLS_FOREACH_TITLE": "для кожного елемента %1 у списку %2", + "CONTROLS_FOREACH_TOOLTIP": "Для кожного елемента в списку змінна '%1' отримує значення елемента, а потім виконуються певні дії.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "перервати цикл", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "продовжити з наступної ітерації циклу", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Перервати виконання циклу.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Пропустити залишок цього циклу і перейти до виконання наступної ітерації.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Попередження: цей блок може бути використаний тільки в межах циклу.", + "CONTROLS_IF_TOOLTIP_1": "Якщо значення істинне, то виконати певні дії.", + "CONTROLS_IF_TOOLTIP_2": "Якщо значення істинне, то виконується перший блок операторів. В іншому випадку виконується другий блок операторів.", + "CONTROLS_IF_TOOLTIP_3": "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істина, то виконується другий блок операторів.", + "CONTROLS_IF_TOOLTIP_4": "Якщо перше значення істинне, то виконується перший блок операторів. В іншому випадку, якщо друге значення істинне, то виконується другий блок операторів. Якщо жодне із значень не є істинним, то виконується останній блок операторів.", + "CONTROLS_IF_MSG_IF": "якщо", + "CONTROLS_IF_MSG_ELSEIF": "інакше якщо", + "CONTROLS_IF_MSG_ELSE": "інакше", + "CONTROLS_IF_IF_TOOLTIP": "Додайте, вилучіть або змініть порядок секцій, щоб переналаштувати цей блок 'якщо'.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Додайте умову до блока 'якщо'.", + "CONTROLS_IF_ELSE_TOOLTIP": "Додати остаточну, всеосяжну умову до блоку 'якщо'.", + "LOGIC_COMPARE_HELPURL": "https://uk.wikipedia.org/wiki/Нерівність", + "LOGIC_COMPARE_TOOLTIP_EQ": "Повертає істину, якщо обидва входи рівні один одному.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Повертає істину, якщо обидва входи не дорівнюють один одному.", + "LOGIC_COMPARE_TOOLTIP_LT": "Повертає істину, якщо перше вхідне значення менше, ніж друге.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Повертає істину, якщо перше вхідне значення менше або дорівнює другому.", + "LOGIC_COMPARE_TOOLTIP_GT": "Повертає істину, якщо перше вхідне значення більше, ніж друге.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Повертає істину, якщо перше вхідне значення більше або дорівнює другому.", + "LOGIC_OPERATION_TOOLTIP_AND": "Повертає істину, якщо обидва входи істинні.", + "LOGIC_OPERATION_AND": "та", + "LOGIC_OPERATION_TOOLTIP_OR": "Повертає істину, якщо принаймні один з входів істинний.", + "LOGIC_OPERATION_OR": "або", + "LOGIC_NEGATE_TITLE": "не %1", + "LOGIC_NEGATE_TOOLTIP": "Повертає істину, якщо вхідне значення хибне. Повертає хибність, якщо вхідне значення істинне.", + "LOGIC_BOOLEAN_TRUE": "істина", + "LOGIC_BOOLEAN_FALSE": "хибність", + "LOGIC_BOOLEAN_TOOLTIP": "Повертає значення істина або хибність.", + "LOGIC_NULL_HELPURL": "https://en.wikipedia.org/wiki/Nullable_type", + "LOGIC_NULL": "ніщо", + "LOGIC_NULL_TOOLTIP": "Повертає ніщо.", + "LOGIC_TERNARY_HELPURL": "https://en.wikipedia.org/wiki/%3F:", + "LOGIC_TERNARY_CONDITION": "тест", + "LOGIC_TERNARY_IF_TRUE": "якщо істина", + "LOGIC_TERNARY_IF_FALSE": "якщо хибність", + "LOGIC_TERNARY_TOOLTIP": "Перевіряє умову в 'тест'. Якщо умова істинна, то повертає значення 'якщо істина'; в іншому випадку повертає значення 'якщо хибність'.", + "MATH_NUMBER_HELPURL": "https://uk.wikipedia.org/wiki/Число", + "MATH_NUMBER_TOOLTIP": "Число.", + "MATH_ARITHMETIC_HELPURL": "https://uk.wikipedia.org/wiki/Арифметика", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Повертає суму двох чисел.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Повертає різницю двох чисел.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Повертає добуток двох чисел.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Повертає частку двох чисел.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Повертає перше число, піднесене до степеня, вираженого другим числом.", + "MATH_SINGLE_HELPURL": "https://uk.wikipedia.org/wiki/Квадратний_корінь", + "MATH_SINGLE_OP_ROOT": "квадратний корінь", + "MATH_SINGLE_TOOLTIP_ROOT": "Повертає квадратний корінь з числа.", + "MATH_SINGLE_OP_ABSOLUTE": "модуль", + "MATH_SINGLE_TOOLTIP_ABS": "Повертає модуль числа.", + "MATH_SINGLE_TOOLTIP_NEG": "Повертає протилежне число.", + "MATH_SINGLE_TOOLTIP_LN": "Повертає натуральний логарифм числа.", + "MATH_SINGLE_TOOLTIP_LOG10": "Повертає десятковий логарифм числа.", + "MATH_SINGLE_TOOLTIP_EXP": "Повертає e у степені.", + "MATH_SINGLE_TOOLTIP_POW10": "Повертає 10 у степені.", + "MATH_TRIG_HELPURL": "https://uk.wikipedia.org/wiki/Тригонометричні_функції", + "MATH_TRIG_TOOLTIP_SIN": "Повертає синус кута в градусах (не в радіанах).", + "MATH_TRIG_TOOLTIP_COS": "Повертає косинус кута в градусах (не в радіанах).", + "MATH_TRIG_TOOLTIP_TAN": "Повертає тангенс кута в градусах (не в радіанах).", + "MATH_TRIG_TOOLTIP_ASIN": "Повертає арксинус числа.", + "MATH_TRIG_TOOLTIP_ACOS": "Повертає арккосинус числа.", + "MATH_TRIG_TOOLTIP_ATAN": "Повертає арктангенс числа.", + "MATH_CONSTANT_HELPURL": "https://uk.wikipedia.org/wiki/Математична_константа", + "MATH_CONSTANT_TOOLTIP": "Повертає одну з поширених констант: π (3.141...), e (2.718...), φ (1,618...), sqrt(2) (1.414...), sqrt(½) (0.707...) або ∞ (нескінченність).", + "MATH_IS_EVEN": "парне", + "MATH_IS_ODD": "непарне", + "MATH_IS_PRIME": "просте", + "MATH_IS_WHOLE": "ціле", + "MATH_IS_POSITIVE": "додатне", + "MATH_IS_NEGATIVE": "від'ємне", + "MATH_IS_DIVISIBLE_BY": "ділиться на", + "MATH_IS_TOOLTIP": "Перевіряє, чи число парне, непарне, просте, ціле, додатне, від'ємне або чи воно ділиться на певне число без остачі. Повертає істину або хибність.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "змінити %1 на %2", + "MATH_CHANGE_TOOLTIP": "Додати число до змінної '%1'.", + "MATH_ROUND_HELPURL": "https://uk.wikipedia.org/wiki/Округлення", + "MATH_ROUND_TOOLTIP": "Округлення числа до більшого або до меншого.", + "MATH_ROUND_OPERATOR_ROUND": "округлити", + "MATH_ROUND_OPERATOR_ROUNDUP": "округлити до більшого", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "округлити до меншого", + "MATH_ONLIST_HELPURL": "http://www.mapleprimes.com/questions/100441-Applying-Function-To-List-Of-Numbers", + "MATH_ONLIST_OPERATOR_SUM": "сума списку", + "MATH_ONLIST_TOOLTIP_SUM": "Повертає суму всіх чисел у списку.", + "MATH_ONLIST_OPERATOR_MIN": "мінімум списку", + "MATH_ONLIST_TOOLTIP_MIN": "Повертає найменше число у списку.", + "MATH_ONLIST_OPERATOR_MAX": "максимум списку", + "MATH_ONLIST_TOOLTIP_MAX": "Повертає найбільше число у списку.", + "MATH_ONLIST_OPERATOR_AVERAGE": "середнє списку", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Повертає середнє (арифметичне) числових значень у списку.", + "MATH_ONLIST_OPERATOR_MEDIAN": "медіана списку", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Повертає медіану списку.", + "MATH_ONLIST_OPERATOR_MODE": "моди списку", + "MATH_ONLIST_TOOLTIP_MODE": "Повертає перелік найпоширеніших елементів у списку.", + "MATH_ONLIST_OPERATOR_STD_DEV": "стандартне відхилення списку", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Повертає стандартне відхилення списку.", + "MATH_ONLIST_OPERATOR_RANDOM": "випадковий елемент списку", + "MATH_ONLIST_TOOLTIP_RANDOM": "Повертає випадковий елемент зі списку.", + "MATH_MODULO_HELPURL": "https://uk.wikipedia.org/wiki/Ділення_з_остачею", + "MATH_MODULO_TITLE": "остача від %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Повертає остачу від ділення двох чисел.", + "MATH_CONSTRAIN_TITLE": "обмежити %1 від %2 до %3", + "MATH_CONSTRAIN_TOOLTIP": "Обмежує число вказаними межами (включно).", + "MATH_RANDOM_INT_HELPURL": "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел", + "MATH_RANDOM_INT_TITLE": "випадкове ціле число від %1 до %2", + "MATH_RANDOM_INT_TOOLTIP": "Повертає випадкове ціле число між двома заданими межами включно.", + "MATH_RANDOM_FLOAT_HELPURL": "https://uk.wikipedia.org/wiki/Генерація_випадкових_чисел", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "випадковий дріб", + "MATH_RANDOM_FLOAT_TOOLTIP": "Повертає випадковий дріб від 0,0 (включно) та 1.0 (не включно).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 по X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Повертає арктангенс точки (X, Y) у градусах від -180 до 180.", + "TEXT_TEXT_HELPURL": "https://uk.wikipedia.org/wiki/Рядок_(програмування)", + "TEXT_TEXT_TOOLTIP": "Символ, слово або рядок тексту.", + "TEXT_JOIN_HELPURL": "https://github.com/google/blockly/wiki/Text#text-creation", + "TEXT_JOIN_TITLE_CREATEWITH": "створити текст з", + "TEXT_JOIN_TOOLTIP": "Створити фрагмент тексту шляхом з'єднування будь-якого числа елементів.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "приєднати", + "TEXT_CREATE_JOIN_TOOLTIP": "Додайте, вилучіть або змініть порядок секцій для переналаштування текстового блоку.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Додати елемент до тексту.", + "TEXT_APPEND_TITLE": "до %1 додати текст %2", + "TEXT_APPEND_TOOLTIP": "Додати деякий текст до змінної '%1'.", + "TEXT_LENGTH_TITLE": "довжина %1", + "TEXT_LENGTH_TOOLTIP": "Повертає число символів (включно з пропусками) у даному тексті.", + "TEXT_ISEMPTY_TITLE": "%1 є порожнім", + "TEXT_ISEMPTY_TOOLTIP": "Повертає істину, якщо вказаний текст порожній.", + "TEXT_INDEXOF_TOOLTIP": "Повертає індекс першого/останнього входження першого тексту в другий. Повертає %1, якщо текст не знайдено.", + "TEXT_INDEXOF_TITLE": "у тексті %1 %2 %3.", + "TEXT_INDEXOF_OPERATOR_FIRST": "знайти перше входження тексту", + "TEXT_INDEXOF_OPERATOR_LAST": "знайти останнє входження тексту", + "TEXT_CHARAT_HELPURL": "https://github.com/google/blockly/wiki/Text#extracting-text", + "TEXT_CHARAT_TITLE": "з тексту %1 %2", + "TEXT_CHARAT_FROM_START": "отримати символ #", + "TEXT_CHARAT_FROM_END": "отримати символ # з кінця", + "TEXT_CHARAT_FIRST": "отримати перший символ", + "TEXT_CHARAT_LAST": "отримати останній символ", + "TEXT_CHARAT_RANDOM": "отримати випадковий символ", + "TEXT_CHARAT_TAIL": "-ий.", + "TEXT_CHARAT_TOOLTIP": "Повертає символ у зазначеній позиції.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Повертає заданий фрагмент тексту.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "у тексті", + "TEXT_GET_SUBSTRING_START_FROM_START": "отримати підрядок від символу #", + "TEXT_GET_SUBSTRING_START_FROM_END": "отримати підрядок від символу # з кінця", + "TEXT_GET_SUBSTRING_START_FIRST": "отримати підрядок від першого символу", + "TEXT_GET_SUBSTRING_END_FROM_START": "до символу #", + "TEXT_GET_SUBSTRING_END_FROM_END": "до символу # з кінця", + "TEXT_GET_SUBSTRING_END_LAST": "до останнього символу", + "TEXT_GET_SUBSTRING_TAIL": "-ого.", + "TEXT_CHANGECASE_TOOLTIP": "В іншому випадку повертає копію тексту.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "до ВЕРХНЬОГО регістру", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "до нижнього регістру", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "Великі Перші Букви", + "TEXT_TRIM_TOOLTIP": "Повертає копію тексту з вилученими пропусками з одного або обох кінців.", + "TEXT_TRIM_OPERATOR_BOTH": "вилучити крайні пропуски з обох кінців", + "TEXT_TRIM_OPERATOR_LEFT": "вилучити пропуски з лівого боку", + "TEXT_TRIM_OPERATOR_RIGHT": "вилучити пропуски з правого боку", + "TEXT_PRINT_TITLE": "друк %1", + "TEXT_PRINT_TOOLTIP": "Надрукувати заданий текст, числа або інші значення.", + "TEXT_PROMPT_TYPE_TEXT": "запит тексту з повідомленням", + "TEXT_PROMPT_TYPE_NUMBER": "запит числа з повідомленням", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Запитати у користувача число.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Запитати у користувача деякий текст.", + "TEXT_COUNT_MESSAGE0": "кількість %1 в %2", + "TEXT_COUNT_TOOLTIP": "Підраховує, скільки разів деякий текст з'являється в іншому тексті.", + "TEXT_REPLACE_MESSAGE0": "замінити %1 на %2 в %3", + "TEXT_REPLACE_TOOLTIP": "Замінює всі входження деякого тексту іншим текстом.", + "TEXT_REVERSE_MESSAGE0": "розвернути %1", + "TEXT_REVERSE_TOOLTIP": "Змінює на протилежний порядок символів у тексті.", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "створити порожній список", + "LISTS_CREATE_EMPTY_TOOLTIP": "Повертає список, довжиною 0, що не містить записів даних", + "LISTS_CREATE_WITH_TOOLTIP": "Створює список з будь-якою кількістю елементів.", + "LISTS_CREATE_WITH_INPUT_WITH": "створити список з", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "список", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Додайте, вилучіть або змініть порядок секцій для переналаштування блока списку.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Додати елемент до списку.", + "LISTS_REPEAT_TOOLTIP": "Створює список, що складається з заданого значення повтореного задану кількість разів.", + "LISTS_REPEAT_TITLE": "створити список з елемента %1 повтореного %2 разів", + "LISTS_LENGTH_TITLE": "довжина %1", + "LISTS_LENGTH_TOOLTIP": "Повертає довжину списку.", + "LISTS_ISEMPTY_TITLE": "%1 є порожнім", + "LISTS_ISEMPTY_TOOLTIP": "Повертає істину, якщо список порожній.", + "LISTS_INLIST": "у списку", + "LISTS_INDEX_OF_FIRST": "знайти перше входження елемента", + "LISTS_INDEX_OF_LAST": "знайти останнє входження елемента", + "LISTS_INDEX_OF_TOOLTIP": "Повертає індекс першого/останнього входження елемента у списку. Повертає %1, якщо елемент не знайдено.", + "LISTS_GET_INDEX_GET": "отримати", + "LISTS_GET_INDEX_GET_REMOVE": "отримати і вилучити", + "LISTS_GET_INDEX_REMOVE": "вилучити", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "# з кінця", + "LISTS_GET_INDEX_FIRST": "перший", + "LISTS_GET_INDEX_LAST": "останній", + "LISTS_GET_INDEX_RANDOM": "випадковий", + "LISTS_GET_INDEX_TAIL": "-ий.", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 - це перший елемент.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 - це останній елемент.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Повертає елемент у заданій позиції у списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Повертає перший елемент списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Повертає останній елемент списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Повертає випадковий елемент списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Видаляє і повертає елемент у заданій позиції у списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Видаляє і повертає перший елемент списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Видаляє і повертає останній елемент списку.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Видаляє і повертає випадковий елемент списоку.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Вилучає зі списку елемент у вказаній позиції.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Вилучає перший елемент списку.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Вилучає останній елемент списку.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Вилучає випадковий елемент списку.", + "LISTS_SET_INDEX_SET": "встановити", + "LISTS_SET_INDEX_INSERT": "вставити в", + "LISTS_SET_INDEX_INPUT_TO": "як", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Задає елемент списку у вказаній позиції.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Задає перший елемент списку.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Задає останній елемент списку.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Задає випадковий елемент у списку.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Вставка елемента у вказану позицію списку.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Вставляє елемент на початок списку.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Додає елемент у кінці списку.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Випадковим чином вставляє елемент у список.", + "LISTS_GET_SUBLIST_START_FROM_START": "отримати вкладений список з #", + "LISTS_GET_SUBLIST_START_FROM_END": "отримати вкладений список від # з кінця", + "LISTS_GET_SUBLIST_START_FIRST": "отримати вкладений список з першого", + "LISTS_GET_SUBLIST_END_FROM_START": "до #", + "LISTS_GET_SUBLIST_END_FROM_END": "до # з кінця", + "LISTS_GET_SUBLIST_END_LAST": "до останнього", + "LISTS_GET_SUBLIST_TAIL": "символу.", + "LISTS_GET_SUBLIST_TOOLTIP": "Створює копію вказаної частини списку.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "сортувати %3 %1 %2", + "LISTS_SORT_TOOLTIP": "Сортувати копію списку.", + "LISTS_SORT_ORDER_ASCENDING": "за зростанням", + "LISTS_SORT_ORDER_DESCENDING": "за спаданням", + "LISTS_SORT_TYPE_NUMERIC": "як числа", + "LISTS_SORT_TYPE_TEXT": "за абеткою", + "LISTS_SORT_TYPE_IGNORECASE": "за абеткою, ігноруючи регістр", + "LISTS_SPLIT_LIST_FROM_TEXT": "зробити з тексту список", + "LISTS_SPLIT_TEXT_FROM_LIST": "зробити зі списку текст", + "LISTS_SPLIT_WITH_DELIMITER": "з розділювачем", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Поділити текст на список текстів, розриваючи на кожному розділювачі.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Злити список текстів у єдиний текст, відокремивши розділювачами.", + "LISTS_REVERSE_MESSAGE0": "розвернути %1", + "LISTS_REVERSE_TOOLTIP": "Змінити порядок копії списку на зворотний.", + "ORDINAL_NUMBER_SUFFIX": "-ий.", + "VARIABLES_GET_TOOLTIP": "Повертає значення цієї змінної.", + "VARIABLES_GET_CREATE_SET": "Створити 'встановити %1'", + "VARIABLES_SET": "встановити %1 до %2", + "VARIABLES_SET_TOOLTIP": "Задає цю змінну рівною входу.", + "VARIABLES_SET_CREATE_GET": "Створити 'отримати %1'", + "PROCEDURES_DEFNORETURN_HELPURL": "https://uk.wikipedia.org/wiki/Підпрограма", + "PROCEDURES_DEFNORETURN_TITLE": "до", + "PROCEDURES_DEFNORETURN_PROCEDURE": "щось зробити", + "PROCEDURES_BEFORE_PARAMS": "з:", + "PROCEDURES_CALL_BEFORE_PARAMS": "з:", + "PROCEDURES_DEFNORETURN_DO": "блок тексту", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Створює функцію без виводу.", + "PROCEDURES_DEFNORETURN_COMMENT": "Опишіть цю функцію...", + "PROCEDURES_DEFRETURN_HELPURL": "https://uk.wikipedia.org/wiki/Підпрограма", + "PROCEDURES_DEFRETURN_RETURN": "повернути", + "PROCEDURES_DEFRETURN_TOOLTIP": "Створює функцію з виводом.", + "PROCEDURES_ALLOW_STATEMENTS": "дозволити дії", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Увага: ця функція має дубльовані параметри.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://uk.wikipedia.org/wiki/Підпрограма", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Запустити користувацьку функцію \"%1\".", + "PROCEDURES_CALLRETURN_HELPURL": "https://uk.wikipedia.org/wiki/Підпрограма", + "PROCEDURES_CALLRETURN_TOOLTIP": "Запустити користувацьку функцію \"%1\" і використати її вивід.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "входи", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Додайте, вилучіть або змініть порядок вхідних параметрів для цієї функції.", + "PROCEDURES_MUTATORARG_TITLE": "назва входу:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Додати до функції вхідні параметри.", + "PROCEDURES_HIGHLIGHT_DEF": "Підсвітити визначення функції", + "PROCEDURES_CREATE_DO": "Створити \"%1\"", + "PROCEDURES_IFRETURN_TOOLTIP": "Якщо значення істинне, то повернути друге значення.", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "Попередження: цей блок може використовуватися лише в межах визначення функції.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Скажіть щось...", + "WORKSPACE_ARIA_LABEL": "Робоча область Blockly", + "COLLAPSED_WARNINGS_WARNING": "Звернуті блоки містять попередження.", + "DIALOG_OK": "Гаразд", + "DIALOG_CANCEL": "Скасувати" +} diff --git a/msg/json/ur.json b/msg/json/ur.json index d869380c6eb..b55728f7b52 100644 --- a/msg/json/ur.json +++ b/msg/json/ur.json @@ -1,121 +1,121 @@ -{ - "@metadata": { - "authors": [ - "Abdulq", - "NajeebKhan", - "Obaid Raza", - "Rizwan", - "Sayam Asjad", - "عثمان خان شاہ", - "محمد افضل" - ] - }, - "VARIABLES_DEFAULT_NAME": "آئٹم", - "UNNAMED_KEY": "نامعلوم", - "TODAY": "آج", - "DUPLICATE_BLOCK": "نقل", - "ADD_COMMENT": "کمنٹ کریں", - "REMOVE_COMMENT": "تبصرہ کو ہٹا دیں", - "DUPLICATE_COMMENT": " نقل تبصرہ", - "EXTERNAL_INPUTS": "خارجی دخل اندازی", - "INLINE_INPUTS": "بین السطور داخل کریں", - "DELETE_BLOCK": "حذف بلاک", - "DELETE_X_BLOCKS": " بلاکوں کو حذف کریں %1", - "DELETE_ALL_BLOCKS": "تمام%1 بلاکس کو حذف کریں؟", - "CLEAN_UP": "بلاکس صاف کریں", - "COLLAPSE_BLOCK": "بند کرو بلاک", - "COLLAPSE_ALL": "بند کرو بلاکس", - "EXPAND_BLOCK": "بلاک میں توسیع کریں", - "EXPAND_ALL": "بلاکوں میں توسیع کریں", - "DISABLE_BLOCK": "بلاک کو غیرفعال کریں", - "ENABLE_BLOCK": "بلاک کو فعال کریں", - "HELP": "مدد", - "UNDO": "کیا ہوا کام کینسل کرے", - "REDO": "دہرائیں", - "CHANGE_VALUE_TITLE": "ویلیو تبدیل کریں:", - "RENAME_VARIABLE": "دوبار نام دیں ویریابل کو...", - "RENAME_VARIABLE_TITLE": "تمام %1 متغیروں کو دوبارہ نام دے:", - "NEW_VARIABLE": "متغیر بنائیں", - "NEW_STRING_VARIABLE": "متغیر بنائیں String", - "NEW_NUMBER_VARIABLE": "عدد متغیر بناییں", - "NEW_COLOUR_VARIABLE": "رنگ متغیر بنائیں", - "NEW_VARIABLE_TYPE_TITLE": " نئی متغیر قسم", - "NEW_VARIABLE_TITLE": "نیا ویریابل نام:", - "VARIABLE_ALREADY_EXISTS": "ایک متغیر نام %1 پہلے سے ہی موجود ہے.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ایک متغیر نام %1 کسی دوسرے قسم کے لئے پہلے ہی موجود ہے: %2.", - "DELETE_VARIABLE_CONFIRMATION": "%2 متغیر کے %1 استعمال کو حذف کریں؟", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "متغیر '٪ 1' کو حذف نہیں کر سکتا کیونکہ یہ فنکشن کی تعریف کا حصہ ہے '٪ 2'", - "DELETE_VARIABLE": "'٪ 1' متغیر کو حذف کریں", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "پیلیٹ سے رنگ منتخب کریں", - "COLOUR_RANDOM_TITLE": "ناسیدھا رنگ", - "COLOUR_RANDOM_TOOLTIP": "کسی بھی رنگ کو منتجب کریں", - "COLOUR_RGB_TITLE": "کے ساتھ رنگ", - "COLOUR_RGB_RED": "سرخ", - "COLOUR_RGB_GREEN": "سبز", - "COLOUR_RGB_BLUE": "نیلا", - "COLOUR_RGB_TOOLTIP": "مخصوص، سرخ، سبز اور نیلے رنگ کے ساتھ ایک رنگ بنائیں. تمام اقدار 0 اور 100 کے درمیان ہونا ضروری ہے.", - "COLOUR_BLEND_TITLE": "مرکب", - "COLOUR_BLEND_COLOUR1": "رنگ 1", - "COLOUR_BLEND_COLOUR2": "رنگ 2", - "COLOUR_BLEND_RATIO": "ریشیو", - "COLOUR_BLEND_TOOLTIP": "دیئے گئے ریشیو میں دو رنگوں کو مرکب کریں (0.0-1.0)", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "%1 مرتبہ دہرائے", - "CONTROLS_REPEAT_INPUT_DO": "کریں", - "CONTROLS_REPEAT_TOOLTIP": "کچھ جملوں کو کہیں مرتبہ کریں۔", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "کے دوران دہرائے", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تک دہرائے", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں", - "CONTROLS_FOR_TOOLTIP": "کیا چر '%1' ابتدا عدد سے اختتام عدد تک मानों کو لیتا ہے، निर्दिष्ट अंतराल کے تحت گنتی کرتا ہے، اور निर्दिष्ट रुकावटों کو کرتا ہے۔", - "CONTROLS_FOR_TITLE": "%1 سے %2 سے %3 تک %4 کے ساتھ گنتی کریں", - "CONTROLS_FOREACH_TITLE": "प्रत्येक چیز کیلئے %1 فہرست ميں %2", - "CONTROLS_FOREACH_TOOLTIP": "فہرست میں ہر آئٹم کے لئے، '%1' متغیر کو آئٹم پہ لگائے،اور پھر کچھ جملے کہے", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "لوپ سے باہر نکلنا", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "مشتمل لوپ کے باہر توڑ.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "انتباہ: اس بلاک کو صرف لوپ میں استعمال کیا جاسکتا ہے۔", - "CONTROLS_IF_TOOLTIP_1": "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں", - "CONTROLS_IF_MSG_IF": "اگر", - "CONTROLS_IF_MSG_ELSEIF": "دوسراں اگر", - "CONTROLS_IF_MSG_ELSE": "دوسراں", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_OPERATION_AND": "اور", - "LOGIC_OPERATION_OR": "یا", - "LOGIC_NEGATE_TITLE": "%1 نہیں", - "LOGIC_BOOLEAN_TRUE": "سچ", - "LOGIC_BOOLEAN_FALSE": "غلط", - "LOGIC_TERNARY_CONDITION": "ٹیسٹ", - "LOGIC_TERNARY_IF_TRUE": "اگ سچ ہے", - "LOGIC_TERNARY_IF_FALSE": "اگر غلط ہے", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "ایک نمبر.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_SINGLE_OP_ROOT": "اسکویر روٹ", - "MATH_SINGLE_OP_ABSOLUTE": "بالکل", - "TEXT_CHARAT_FROM_START": "# حرف حاصل کریں", - "LISTS_CREATE_WITH_INPUT_WITH": "کے ساتھ فہرست بنائیں", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "فہرست", - "LISTS_LENGTH_TITLE": "%1 کی لمبائی", - "LISTS_INLIST": "فہرست میں", - "LISTS_GET_INDEX_GET": "حاصل کریں", - "LISTS_GET_INDEX_REMOVE": "حذف کریں", - "LISTS_GET_INDEX_FROM_END": "آخر سے", - "LISTS_GET_INDEX_FIRST": "پہلا", - "LISTS_GET_INDEX_LAST": "آخری", - "LISTS_GET_INDEX_RANDOM": "غیرمتعین", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "پہلے آئٹم کو فہرست میں لوٹائے", - "LISTS_SET_INDEX_SET": "تعین کریں", - "LISTS_SET_INDEX_INSERT": "میں درج کریں", - "LISTS_SET_INDEX_INPUT_TO": "بطور", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "فہرست میں پہلا آئٹم کا تعین کریں", - "PROCEDURES_DEFNORETURN_TITLE": "کو", - "PROCEDURES_DEFNORETURN_PROCEDURE": "کچھ کرو", - "PROCEDURES_BEFORE_PARAMS": "سمیت:", - "PROCEDURES_CALL_BEFORE_PARAMS": "سمیت:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "بغیر آوٹ پٹ کا فنکشن بنائیں", - "PROCEDURES_DEFRETURN_RETURN": "واپس آ جائیں", - "PROCEDURES_DEFRETURN_TOOLTIP": "بغیر آوٹ پٹ کا فنکشن بنائیں", - "DIALOG_OK": "ٹھیک ہے", - "DIALOG_CANCEL": "منسوخ" -} +{ + "@metadata": { + "authors": [ + "Abdulq", + "NajeebKhan", + "Obaid Raza", + "Rizwan", + "Sayam Asjad", + "عثمان خان شاہ", + "محمد افضل" + ] + }, + "VARIABLES_DEFAULT_NAME": "آئٹم", + "UNNAMED_KEY": "نامعلوم", + "TODAY": "آج", + "DUPLICATE_BLOCK": "نقل", + "ADD_COMMENT": "کمنٹ کریں", + "REMOVE_COMMENT": "تبصرہ کو ہٹا دیں", + "DUPLICATE_COMMENT": " نقل تبصرہ", + "EXTERNAL_INPUTS": "خارجی دخل اندازی", + "INLINE_INPUTS": "بین السطور داخل کریں", + "DELETE_BLOCK": "حذف بلاک", + "DELETE_X_BLOCKS": " بلاکوں کو حذف کریں %1", + "DELETE_ALL_BLOCKS": "تمام%1 بلاکس کو حذف کریں؟", + "CLEAN_UP": "بلاکس صاف کریں", + "COLLAPSE_BLOCK": "بند کرو بلاک", + "COLLAPSE_ALL": "بند کرو بلاکس", + "EXPAND_BLOCK": "بلاک میں توسیع کریں", + "EXPAND_ALL": "بلاکوں میں توسیع کریں", + "DISABLE_BLOCK": "بلاک کو غیرفعال کریں", + "ENABLE_BLOCK": "بلاک کو فعال کریں", + "HELP": "مدد", + "UNDO": "کیا ہوا کام کینسل کرے", + "REDO": "دہرائیں", + "CHANGE_VALUE_TITLE": "ویلیو تبدیل کریں:", + "RENAME_VARIABLE": "دوبار نام دیں ویریابل کو...", + "RENAME_VARIABLE_TITLE": "تمام %1 متغیروں کو دوبارہ نام دے:", + "NEW_VARIABLE": "متغیر بنائیں", + "NEW_STRING_VARIABLE": "متغیر بنائیں String", + "NEW_NUMBER_VARIABLE": "عدد متغیر بناییں", + "NEW_COLOUR_VARIABLE": "رنگ متغیر بنائیں", + "NEW_VARIABLE_TYPE_TITLE": " نئی متغیر قسم", + "NEW_VARIABLE_TITLE": "نیا ویریابل نام:", + "VARIABLE_ALREADY_EXISTS": "ایک متغیر نام %1 پہلے سے ہی موجود ہے.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "ایک متغیر نام %1 کسی دوسرے قسم کے لئے پہلے ہی موجود ہے: %2.", + "DELETE_VARIABLE_CONFIRMATION": "%2 متغیر کے %1 استعمال کو حذف کریں؟", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "متغیر '٪ 1' کو حذف نہیں کر سکتا کیونکہ یہ فنکشن کی تعریف کا حصہ ہے '٪ 2'", + "DELETE_VARIABLE": "'٪ 1' متغیر کو حذف کریں", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "پیلیٹ سے رنگ منتخب کریں", + "COLOUR_RANDOM_TITLE": "ناسیدھا رنگ", + "COLOUR_RANDOM_TOOLTIP": "کسی بھی رنگ کو منتجب کریں", + "COLOUR_RGB_TITLE": "کے ساتھ رنگ", + "COLOUR_RGB_RED": "سرخ", + "COLOUR_RGB_GREEN": "سبز", + "COLOUR_RGB_BLUE": "نیلا", + "COLOUR_RGB_TOOLTIP": "مخصوص، سرخ، سبز اور نیلے رنگ کے ساتھ ایک رنگ بنائیں. تمام اقدار 0 اور 100 کے درمیان ہونا ضروری ہے.", + "COLOUR_BLEND_TITLE": "مرکب", + "COLOUR_BLEND_COLOUR1": "رنگ 1", + "COLOUR_BLEND_COLOUR2": "رنگ 2", + "COLOUR_BLEND_RATIO": "ریشیو", + "COLOUR_BLEND_TOOLTIP": "دیئے گئے ریشیو میں دو رنگوں کو مرکب کریں (0.0-1.0)", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "%1 مرتبہ دہرائے", + "CONTROLS_REPEAT_INPUT_DO": "کریں", + "CONTROLS_REPEAT_TOOLTIP": "کچھ جملوں کو کہیں مرتبہ کریں۔", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "کے دوران دہرائے", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "تک دہرائے", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں", + "CONTROLS_FOR_TOOLTIP": "کیا چر '%1' ابتدا عدد سے اختتام عدد تک मानों کو لیتا ہے، निर्दिष्ट अंतराल کے تحت گنتی کرتا ہے، اور निर्दिष्ट रुकावटों کو کرتا ہے۔", + "CONTROLS_FOR_TITLE": "%1 سے %2 سے %3 تک %4 کے ساتھ گنتی کریں", + "CONTROLS_FOREACH_TITLE": "प्रत्येक چیز کیلئے %1 فہرست ميں %2", + "CONTROLS_FOREACH_TOOLTIP": "فہرست میں ہر آئٹم کے لئے، '%1' متغیر کو آئٹم پہ لگائے،اور پھر کچھ جملے کہے", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "لوپ سے باہر نکلنا", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "مشتمل لوپ کے باہر توڑ.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "انتباہ: اس بلاک کو صرف لوپ میں استعمال کیا جاسکتا ہے۔", + "CONTROLS_IF_TOOLTIP_1": "اگر ایک ویلیو صحیح ہے، تو کچھ سٹیٹمنٹ کریں", + "CONTROLS_IF_MSG_IF": "اگر", + "CONTROLS_IF_MSG_ELSEIF": "دوسراں اگر", + "CONTROLS_IF_MSG_ELSE": "دوسراں", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_OPERATION_AND": "اور", + "LOGIC_OPERATION_OR": "یا", + "LOGIC_NEGATE_TITLE": "%1 نہیں", + "LOGIC_BOOLEAN_TRUE": "سچ", + "LOGIC_BOOLEAN_FALSE": "غلط", + "LOGIC_TERNARY_CONDITION": "ٹیسٹ", + "LOGIC_TERNARY_IF_TRUE": "اگ سچ ہے", + "LOGIC_TERNARY_IF_FALSE": "اگر غلط ہے", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "ایک نمبر.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_SINGLE_OP_ROOT": "اسکویر روٹ", + "MATH_SINGLE_OP_ABSOLUTE": "بالکل", + "TEXT_CHARAT_FROM_START": "# حرف حاصل کریں", + "LISTS_CREATE_WITH_INPUT_WITH": "کے ساتھ فہرست بنائیں", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "فہرست", + "LISTS_LENGTH_TITLE": "%1 کی لمبائی", + "LISTS_INLIST": "فہرست میں", + "LISTS_GET_INDEX_GET": "حاصل کریں", + "LISTS_GET_INDEX_REMOVE": "حذف کریں", + "LISTS_GET_INDEX_FROM_END": "آخر سے", + "LISTS_GET_INDEX_FIRST": "پہلا", + "LISTS_GET_INDEX_LAST": "آخری", + "LISTS_GET_INDEX_RANDOM": "غیرمتعین", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "پہلے آئٹم کو فہرست میں لوٹائے", + "LISTS_SET_INDEX_SET": "تعین کریں", + "LISTS_SET_INDEX_INSERT": "میں درج کریں", + "LISTS_SET_INDEX_INPUT_TO": "بطور", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "فہرست میں پہلا آئٹم کا تعین کریں", + "PROCEDURES_DEFNORETURN_TITLE": "کو", + "PROCEDURES_DEFNORETURN_PROCEDURE": "کچھ کرو", + "PROCEDURES_BEFORE_PARAMS": "سمیت:", + "PROCEDURES_CALL_BEFORE_PARAMS": "سمیت:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "بغیر آوٹ پٹ کا فنکشن بنائیں", + "PROCEDURES_DEFRETURN_RETURN": "واپس آ جائیں", + "PROCEDURES_DEFRETURN_TOOLTIP": "بغیر آوٹ پٹ کا فنکشن بنائیں", + "DIALOG_OK": "ٹھیک ہے", + "DIALOG_CANCEL": "منسوخ" +} diff --git a/msg/json/uz.json b/msg/json/uz.json index 94e58a65430..71009b79ea9 100644 --- a/msg/json/uz.json +++ b/msg/json/uz.json @@ -1,37 +1,37 @@ -{ - "@metadata": { - "authors": [ - "Nodirbek" - ] - }, - "DELETE_BLOCK": "Blokni o'chirish", - "DELETE_X_BLOCKS": "%1 bloklarini o‘chirish", - "DELETE_ALL_BLOCKS": "Barcha %1 bloklar o'chirilsinmi?", - "CLEAN_UP": "Bloklarni tozalash", - "COLLAPSE_BLOCK": "Blokni yopish", - "COLLAPSE_ALL": "Bloklarni yopish", - "EXPAND_BLOCK": "Blokni kengaytirish", - "EXPAND_ALL": "Bloklarni kengaytirish", - "DISABLE_BLOCK": "Bloklashni o‘chirish", - "ENABLE_BLOCK": "Bloklashni yoqish", - "HELP": "Yordam", - "UNDO": "Bekor qilish", - "REDO": "Qaytarish", - "CHANGE_VALUE_TITLE": "Qiymatni o'zgartirish:", - "NEW_STRING_VARIABLE": "String o'zgaruvchisini yaratish ...", - "NEW_NUMBER_VARIABLE": "Raqam o'zgaruvchisini yarating ...", - "NEW_COLOUR_VARIABLE": "Rang o'zgaruvchisini yaratish ...", - "NEW_VARIABLE_TYPE_TITLE": "Yangi o'zgaruvchining turi:", - "NEW_VARIABLE_TITLE": "Yangi o'zgaruvchining nomi:", - "VARIABLE_ALREADY_EXISTS": "'%1' nomli o'zgaruvchi mavjud.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' nomli o'zgaruvchi boshqa tur uchun allaqachon mavjud: '%2'.", - "DELETE_VARIABLE": "'%1' o'zgaruvchisini o'chirib tashlang", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_RANDOM_TITLE": "tasodifiy rang", - "COLOUR_RANDOM_TOOLTIP": "Tasodifiy rangni tanlang.", - "COLOUR_RGB_RED": "qizil", - "COLOUR_RGB_GREEN": "yashil", - "COLOUR_RGB_BLUE": "ko'k", - "DIALOG_OK": "Mayli", - "DIALOG_CANCEL": "Bekor qilish" -} +{ + "@metadata": { + "authors": [ + "Nodirbek" + ] + }, + "DELETE_BLOCK": "Blokni o'chirish", + "DELETE_X_BLOCKS": "%1 bloklarini o‘chirish", + "DELETE_ALL_BLOCKS": "Barcha %1 bloklar o'chirilsinmi?", + "CLEAN_UP": "Bloklarni tozalash", + "COLLAPSE_BLOCK": "Blokni yopish", + "COLLAPSE_ALL": "Bloklarni yopish", + "EXPAND_BLOCK": "Blokni kengaytirish", + "EXPAND_ALL": "Bloklarni kengaytirish", + "DISABLE_BLOCK": "Bloklashni o‘chirish", + "ENABLE_BLOCK": "Bloklashni yoqish", + "HELP": "Yordam", + "UNDO": "Bekor qilish", + "REDO": "Qaytarish", + "CHANGE_VALUE_TITLE": "Qiymatni o'zgartirish:", + "NEW_STRING_VARIABLE": "String o'zgaruvchisini yaratish ...", + "NEW_NUMBER_VARIABLE": "Raqam o'zgaruvchisini yarating ...", + "NEW_COLOUR_VARIABLE": "Rang o'zgaruvchisini yaratish ...", + "NEW_VARIABLE_TYPE_TITLE": "Yangi o'zgaruvchining turi:", + "NEW_VARIABLE_TITLE": "Yangi o'zgaruvchining nomi:", + "VARIABLE_ALREADY_EXISTS": "'%1' nomli o'zgaruvchi mavjud.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' nomli o'zgaruvchi boshqa tur uchun allaqachon mavjud: '%2'.", + "DELETE_VARIABLE": "'%1' o'zgaruvchisini o'chirib tashlang", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_RANDOM_TITLE": "tasodifiy rang", + "COLOUR_RANDOM_TOOLTIP": "Tasodifiy rangni tanlang.", + "COLOUR_RGB_RED": "qizil", + "COLOUR_RGB_GREEN": "yashil", + "COLOUR_RGB_BLUE": "ko'k", + "DIALOG_OK": "Mayli", + "DIALOG_CANCEL": "Bekor qilish" +} diff --git a/msg/json/vi.json b/msg/json/vi.json index 886cdf7a724..5d3bfdc2b0d 100644 --- a/msg/json/vi.json +++ b/msg/json/vi.json @@ -1,346 +1,346 @@ -{ - "@metadata": { - "authors": [ - "Baonguyen21022003", - "Dstream", - "Espertus", - "Leducthn", - "Nguyenvanduocit", - "Nguyễn Mạnh An", - "Qneutron", - "SierraNguyen", - "Withoutaname" - ] - }, - "VARIABLES_DEFAULT_NAME": "vật", - "UNNAMED_KEY": "không tên", - "TODAY": "Hôm nay", - "DUPLICATE_BLOCK": "Tạo Bản Sao", - "ADD_COMMENT": "Thêm Chú Giải", - "REMOVE_COMMENT": "Xóa Chú Giải", - "DUPLICATE_COMMENT": "Bình luận trùng", - "EXTERNAL_INPUTS": "Chỗ Gắn Bên Ngoài", - "INLINE_INPUTS": "Chỗ Gắn Cùng Dòng", - "DELETE_BLOCK": "Xóa Mảnh Này", - "DELETE_X_BLOCKS": "Xóa %1 Mảnh", - "DELETE_ALL_BLOCKS": "Xóa hết %1 mảnh?", - "CLEAN_UP": "Sắp xếp lại các khối", - "COLLAPSE_BLOCK": "Thu Nhỏ Mảnh", - "COLLAPSE_ALL": "Thu Nhỏ Mọi Mảnh", - "EXPAND_BLOCK": "Mở Lớn Mảnh", - "EXPAND_ALL": "Mở Lớn Mọi Mảnh", - "DISABLE_BLOCK": "Ngưng Tác Dụng", - "ENABLE_BLOCK": "Phục Hồi Tác Dụng", - "HELP": "Trợ Giúp", - "UNDO": "Hoàn tác", - "REDO": "Làm lại", - "CHANGE_VALUE_TITLE": "Thay giá trị thành:", - "RENAME_VARIABLE": "Thay tên biến...", - "RENAME_VARIABLE_TITLE": "Thay tên tất cả các biến \"%1\" thành:", - "NEW_VARIABLE": "Tạo biến...", - "NEW_STRING_VARIABLE": "Tạo một giá trị dạng chuỗi...", - "NEW_NUMBER_VARIABLE": "Tạo một giá trị số...", - "NEW_COLOUR_VARIABLE": "Tạo một giá trị màu sắc...", - "NEW_VARIABLE_TYPE_TITLE": "Kiểu giá trị mới:", - "NEW_VARIABLE_TITLE": "Tên của biến mới:", - "VARIABLE_ALREADY_EXISTS": "Một biến có tên '%1' đã tồn tại.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Giá trị '%1' đã tồn tại dưới dạng: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Xóa %1 lần dùng của giá trị '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Không thể xóa giá trị '%1' vì nó được bao gồm trong định nghĩa của chức năng '%2'", - "DELETE_VARIABLE": "Xóa giá trị '%1'", - "COLOUR_PICKER_HELPURL": "https://vi.wikipedia.org/wiki/M%C3%A0u_s%E1%BA%AFc", - "COLOUR_PICKER_TOOLTIP": "Chọn một màu từ bảng màu.", - "COLOUR_RANDOM_TITLE": "màu bất kỳ", - "COLOUR_RANDOM_TOOLTIP": "chọn một màu bất kỳ.", - "COLOUR_RGB_TITLE": "tạo màu từ", - "COLOUR_RGB_RED": "màu đỏ", - "COLOUR_RGB_GREEN": "màu xanh lá cây", - "COLOUR_RGB_BLUE": "màu xanh dương", - "COLOUR_RGB_TOOLTIP": "Tạo màu từ ba màu: đỏ, xanh lá cây, xanh dương với số lượng cụ thể. Mỗi số phải có giá trị từ 0 đến 100.", - "COLOUR_BLEND_TITLE": "pha", - "COLOUR_BLEND_COLOUR1": "màu 1", - "COLOUR_BLEND_COLOUR2": "màu 2", - "COLOUR_BLEND_RATIO": "tỉ lệ", - "COLOUR_BLEND_TOOLTIP": "Pha hai màu với nhau theo tỉ lệ (0 - 100).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "lặp lại %1 lần", - "CONTROLS_REPEAT_INPUT_DO": "thực hiện", - "CONTROLS_REPEAT_TOOLTIP": "Thực hiện các lệnh vài lần.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "lặp lại trong khi", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "lặp lại cho đến khi", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Miễn là điều kiện còn đúng, thì thực hiện các lệnh.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Miễn là điều kiện còn sai, thì thực hiện các lệnh. Khi điều kiện đúng thì ngưng.", - "CONTROLS_FOR_TOOLTIP": "Cho biến '%1' lấy các giá trị từ số bắt đầu đến số kết thúc, đếm theo khoảng thời gian đã chỉ định và thực hiện các khối được chỉ định.", - "CONTROLS_FOR_TITLE": "đếm theo %1 từ %2 đến %3 mỗi lần thêm %4", - "CONTROLS_FOREACH_TITLE": "với mỗi thành phần %1 trong danh sách %2", - "CONTROLS_FOREACH_TOOLTIP": "Trong một danh sách, lấy từng thành phần, gán vào biến \"%1\", rồi thực hiện một số lệnh.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "thoát", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "sang lần lặp tiếp theo", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Thoát khỏi vòng lặp hiện tại.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Bỏ qua phần còn lại trong vòng lặp này, và sang lần lặp tiếp theo.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Chú ý: Mảnh này chỉ có thế dùng trong các vòng lặp.", - "CONTROLS_IF_TOOLTIP_1": "Nếu điều kiện đúng, thực hiện các lệnh.", - "CONTROLS_IF_TOOLTIP_2": "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu sai, thực hiện các lệnh sau.", - "CONTROLS_IF_TOOLTIP_3": "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai.", - "CONTROLS_IF_TOOLTIP_4": "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai. Nếu không điều kiện nào đúng, thực hiện các lệnh cuối cùng.", - "CONTROLS_IF_MSG_IF": "nếu", - "CONTROLS_IF_MSG_ELSEIF": "nếu không nếu", - "CONTROLS_IF_MSG_ELSE": "nếu không", - "CONTROLS_IF_IF_TOOLTIP": "Thêm, bỏ, hoặc đổi thứ tự các mảnh con để tạo cấu trúc mới cho mảnh nếu.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Thêm một điều kiện vào mảnh nếu.", - "CONTROLS_IF_ELSE_TOOLTIP": "Cuối cùng, khi không điều kiện nào đúng.", - "LOGIC_COMPARE_HELPURL": "https://vi.wikipedia.org/wiki/B%E1%BA%A5t_%C4%91%E1%BA%B3ng_th%E1%BB%A9c", - "LOGIC_COMPARE_TOOLTIP_EQ": "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào bằng nhau.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào không bằng nhau.", - "LOGIC_COMPARE_TOOLTIP_LT": "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn đầu vào thứ hai.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn hoặc bằng đầu vào thứ hai.", - "LOGIC_COMPARE_TOOLTIP_GT": "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn đầu vào thứ hai.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn hoặc bằng đầu vào thứ hai.", - "LOGIC_OPERATION_TOOLTIP_AND": "Hoàn trả \"đúng\" (true) nếu cả hai đầu vào đều đúng.", - "LOGIC_OPERATION_AND": "và", - "LOGIC_OPERATION_TOOLTIP_OR": "Hoàn trả \"đúng\" (true) nếu ít nhất một trong hai đầu vào đúng.", - "LOGIC_OPERATION_OR": "hoặc", - "LOGIC_NEGATE_TITLE": "không %1", - "LOGIC_NEGATE_TOOLTIP": "Hoàn trả \"đúng\" (true) nếu đầu vào sai. Hoàn trả \"sai\" (false) nếu đầu vào đúng.", - "LOGIC_BOOLEAN_TRUE": "đúng", - "LOGIC_BOOLEAN_FALSE": "sai", - "LOGIC_BOOLEAN_TOOLTIP": "Hoàn trả \"đúng\" hoặc \"sai\".", - "LOGIC_NULL": "trống không", - "LOGIC_NULL_TOOLTIP": "Hoàn trả trống không.", - "LOGIC_TERNARY_CONDITION": "kiểm tra", - "LOGIC_TERNARY_IF_TRUE": "nếu đúng", - "LOGIC_TERNARY_IF_FALSE": "nếu sai", - "LOGIC_TERNARY_TOOLTIP": "Kiểm tra điều kiện. Nếu điều kiện đúng, hoàn trả giá trị từ mệnh đề \"nếu đúng\" nếu không đúng, hoàn trả giá trị từ mệnh đề \"nếu sai\".", - "MATH_NUMBER_HELPURL": "https://vi.wikipedia.org/wiki/S%E1%BB%91", - "MATH_NUMBER_TOOLTIP": "Một con số.", - "MATH_ARITHMETIC_HELPURL": "https://vi.wikipedia.org/wiki/S%E1%BB%91_h%E1%BB%8Dc", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Hoàn trả tổng của hai con số.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Hoàn trả hiệu của hai con số.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Hoàn trả tích của hai con số.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Hoàn trả thương của hai con số.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Hoàn trả số lũy thừa với số thứ nhất là cơ số và số thứ hai là số mũ.", - "MATH_SINGLE_HELPURL": "https://vi.wikipedia.org/wiki/C%C4%83n_b%E1%BA%ADc_hai", - "MATH_SINGLE_OP_ROOT": "căn bật hai", - "MATH_SINGLE_TOOLTIP_ROOT": "Hoàn trả căn bật hai của số đầu vào.", - "MATH_SINGLE_OP_ABSOLUTE": "giá trị tuyệt đối", - "MATH_SINGLE_TOOLTIP_ABS": "Hoàn trả giá trị tuyệt đối của số đầu vào.", - "MATH_SINGLE_TOOLTIP_NEG": "Đổi dấu của số đầu vào: âm thành dương và dương thành âm, và hoàn trả số mới.", - "MATH_SINGLE_TOOLTIP_LN": "Hoàn trả lôgarit tự nhiên của số đầu vào.", - "MATH_SINGLE_TOOLTIP_LOG10": "Hoàn trả lôgarit cơ số 10 của số đầu vào.", - "MATH_SINGLE_TOOLTIP_EXP": "Hoàn trả lũy thừa của số e với số mũ đầu vào.", - "MATH_SINGLE_TOOLTIP_POW10": "Hoàn trả lũy thừa của số 10 với số mũ đầu vào.", - "MATH_TRIG_HELPURL": "https://vi.wikipedia.org/wiki/H%C3%A0m_l%C6%B0%E1%BB%A3ng_gi%C3%A1c", - "MATH_TRIG_TOOLTIP_SIN": "Hoàn trả Sin của một góc (theo độ).", - "MATH_TRIG_TOOLTIP_COS": "Hoàn trả Cos của một góc (theo độ).", - "MATH_TRIG_TOOLTIP_TAN": "Hoàn trả Tang của một góc (theo độ).", - "MATH_TRIG_TOOLTIP_ASIN": "Hoàn trả Arcsin của một góc (theo độ).", - "MATH_TRIG_TOOLTIP_ACOS": "Hoàn trả Arccos của một góc (theo độ).", - "MATH_TRIG_TOOLTIP_ATAN": "Hoàn trả Arctang của một góc (theo độ).", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Hoàn trả các đẳng số thường gặp: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (vô cực).", - "MATH_IS_EVEN": "là số chẵn", - "MATH_IS_ODD": "là số lẻ", - "MATH_IS_PRIME": "là số nguyên tố", - "MATH_IS_WHOLE": "là số nguyên", - "MATH_IS_POSITIVE": "là số dương", - "MATH_IS_NEGATIVE": "là số âm", - "MATH_IS_DIVISIBLE_BY": "chia hết cho", - "MATH_IS_TOOLTIP": "Kiểm tra con số xem nó có phải là số chẵn, lẻ, nguyên tố, nguyên, dương, âm, hay xem nó có chia hết cho số đầu vào hay không. Hoàn trả đúng hay sai.", - "MATH_CHANGE_HELPURL": "https://vi.wikipedia.org/wiki/Ph%C3%A9p_c%E1%BB%99ng", - "MATH_CHANGE_TITLE": "cộng vào %1 giá trị %2", - "MATH_CHANGE_TOOLTIP": "Cộng số đầu vào vào biến \"%1\".", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Làm tròn lên hoặc tròn xuống số đầu vào.", - "MATH_ROUND_OPERATOR_ROUND": "làm tròn", - "MATH_ROUND_OPERATOR_ROUNDUP": "làm tròn lên", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "làm tròn xuống", - "MATH_ONLIST_HELPURL": "", - "MATH_ONLIST_OPERATOR_SUM": "tổng của một danh sách", - "MATH_ONLIST_TOOLTIP_SUM": "Hoàn trả tổng số của tất cả các số trong danh sách.", - "MATH_ONLIST_OPERATOR_MIN": "số nhỏ nhất của một danh sách", - "MATH_ONLIST_TOOLTIP_MIN": "Hoàn trả số nhỏ nhất trong tất cả các số trong danh sách.", - "MATH_ONLIST_OPERATOR_MAX": "số lớn nhât của một danh sách", - "MATH_ONLIST_TOOLTIP_MAX": "Hoàn trả số lớn nhất trong tất cả các số trong danh sách.", - "MATH_ONLIST_OPERATOR_AVERAGE": "giá trị trung bình của một danh sách", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Hoàn trả giá trị trung bình từ của danh sách số.", - "MATH_ONLIST_OPERATOR_MEDIAN": "số trung vị của một danh sách", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Hoàn trả số trung vị của danh sách số.", - "MATH_ONLIST_OPERATOR_MODE": "các mode của một danh sách", - "MATH_ONLIST_TOOLTIP_MODE": "Hoàn trả các số có mặt nhiều nhất trong danh sách.", - "MATH_ONLIST_OPERATOR_STD_DEV": "độ lệch chuẩn của một danh sách", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Hoàn trả độ lệch chuẩn của danh sách số.", - "MATH_ONLIST_OPERATOR_RANDOM": "một số bất kỳ của một danh sách", - "MATH_ONLIST_TOOLTIP_RANDOM": "Hoàn trả một số bất kỳ từ các số trong danh sách.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "số dư của %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Chia số thứ nhất cho số thứ hai rồi hoàn trả số dư từ.", - "MATH_CONSTRAIN_TITLE": "giới hạn %1 không dưới %2 không hơn %3", - "MATH_CONSTRAIN_TOOLTIP": "Giới hạn số đầu vào để không dưới số thứ nhất và không hơn số thứ hai.", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "Một số nguyên bất kỳ từ %1 đến %2", - "MATH_RANDOM_INT_TOOLTIP": "Hoàn trả một số nguyên bất kỳ lớn hơn hoặc bằng số đầu và nhỏ hơn hoặc bằng số sau.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "phân số bất kỳ", - "MATH_RANDOM_FLOAT_TOOLTIP": "Hoàn trả một phân số bất kỳ không nhỏ hơn 0.0 và không lớn hơn 1.0.", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 của X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Trả về arctangent của điểm (X, Y) trong khoảng từ -180 độ đến 180 độ.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/string_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Một ký tự, một từ, hay một dòng.", - "TEXT_JOIN_HELPURL": "", - "TEXT_JOIN_TITLE_CREATEWITH": "tạo văn bản từ", - "TEXT_JOIN_TOOLTIP": "Tạo một văn bản từ các thành phần.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "kết nối", - "TEXT_CREATE_JOIN_TOOLTIP": "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh văn bản này.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "thêm vật mới vào văn bản.", - "TEXT_APPEND_TITLE": "ở cuối %1 thêm văn bản %2", - "TEXT_APPEND_TOOLTIP": "Thêm một mảng văn bản vào biến \"%1\".", - "TEXT_LENGTH_TITLE": "độ dài của %1", - "TEXT_LENGTH_TOOLTIP": "Hoàn trả số lượng ký tự (kể cả khoảng trắng) trong văn bản đầu vào.", - "TEXT_ISEMPTY_TITLE": "%1 trống không", - "TEXT_ISEMPTY_TOOLTIP": "Hoàn trả “đúng nếu văn bản không có ký tự nào.", - "TEXT_INDEXOF_TOOLTIP": "Hoàn trả vị trí xuất hiện đầu/cuối của văn bản thứ nhất trong văn bản thứ hai. Nếu không tìm thấy thì hoàn trả số %1.", - "TEXT_INDEXOF_TITLE": "trong văn bản %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "tìm sự có mặt đầu tiên của", - "TEXT_INDEXOF_OPERATOR_LAST": "tìm sự có mặt cuối cùng của", - "TEXT_CHARAT_TITLE": "trong văn bản %1 %2", - "TEXT_CHARAT_FROM_START": "lấy ký tự thứ", - "TEXT_CHARAT_FROM_END": "lấy từ phía cuối, ký tự thứ", - "TEXT_CHARAT_FIRST": "lấy ký tự đầu tiên", - "TEXT_CHARAT_LAST": "lấy ký tự cuối cùng", - "TEXT_CHARAT_RANDOM": "lấy ký tự bất kỳ", - "TEXT_CHARAT_TOOLTIP": "Hoàn trả ký tự ở vị trí đặt ra.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Hoàn trả một mảng ký tự ấn định từ trong văn bản.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "trong văn bản", - "TEXT_GET_SUBSTRING_START_FROM_START": "lấy từ ký tự thứ", - "TEXT_GET_SUBSTRING_START_FROM_END": "lấy từ phía cuối, ký tự thứ", - "TEXT_GET_SUBSTRING_START_FIRST": "lấy từ ký tự đầu tiên", - "TEXT_GET_SUBSTRING_END_FROM_START": "đến ký tự thứ", - "TEXT_GET_SUBSTRING_END_FROM_END": "đến từ phía cuối, ký tự thứ", - "TEXT_GET_SUBSTRING_END_LAST": "đến ký tự cuối cùng", - "TEXT_CHANGECASE_TOOLTIP": "Hoàn trả văn bản sau khi chuyển đổi chữ in hoa hay thường.", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "thành CHỮ IN HOA", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "thành chữ thường", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "thành Chữ In Đầu Mỗi Từ", - "TEXT_TRIM_TOOLTIP": "Hoàn trả bản sao của văn bản sau khi xóa khoảng trắng từ một hoặc hai bên.", - "TEXT_TRIM_OPERATOR_BOTH": "cắt các không gian từ cả hai mặt của", - "TEXT_TRIM_OPERATOR_LEFT": "cắt các không gian từ bên trái của", - "TEXT_TRIM_OPERATOR_RIGHT": "cắt các không gian từ bên phải của", - "TEXT_PRINT_TITLE": "in lên màng hình %1", - "TEXT_PRINT_TOOLTIP": "In ra màng hình một văn bản, con số, hay một giá trị đầu vào khác.", - "TEXT_PROMPT_TYPE_TEXT": "Xin người dùng nhập vào văn bản với dòng hướng dẫn", - "TEXT_PROMPT_TYPE_NUMBER": "Xin người dùng nhập vào con số với dòng hướng dẫn", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Xin người dùng nhập vào một con số.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Xin người dùng nhập vào một văn bản.", - "TEXT_COUNT_MESSAGE0": "đến %1 trong %2", - "TEXT_COUNT_TOOLTIP": "Đếm số lần một đoạn văn bản xuất hiện trong một đoạn văn bản khác.", - "TEXT_REPLACE_MESSAGE0": "thay thế %1 bằng %2 trong %3", - "TEXT_REPLACE_TOOLTIP": "Thay thế tất cả các lần xuất hiện của văn bản bằng văn bản khác.", - "TEXT_REVERSE_MESSAGE0": "đảo ngược %1", - "TEXT_REVERSE_TOOLTIP": "Đảo ngược thứ tự của các chữ cái trong văn bản.", - "LISTS_CREATE_EMPTY_TITLE": "tạo danh sách trống", - "LISTS_CREATE_EMPTY_TOOLTIP": "Hoàn trả một danh sách, với độ dài 0, không có thành tố nào cả", - "LISTS_CREATE_WITH_TOOLTIP": "Tạo một danh sách bao gồm nhiều vậts, với một số lượng bất kỳ.", - "LISTS_CREATE_WITH_INPUT_WITH": "tạo danh sách gồm", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "danh sách", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh danh sách này.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Thêm vật vào danh sách.", - "LISTS_REPEAT_TOOLTIP": "Tạo danh sách gồm một số lượng vật nhất định với mỗi vật đều giống nhau.", - "LISTS_REPEAT_TITLE": "tạo danh sách gồm một vật %1 lặp lại %2 lần", - "LISTS_LENGTH_TITLE": "độ dài của %1", - "LISTS_LENGTH_TOOLTIP": "Hoàn trả độ dài của một danh sách.", - "LISTS_ISEMPTY_TITLE": "%1 trống rỗng", - "LISTS_ISEMPTY_TOOLTIP": "Hoàn trả “đúng\" nếu danh sách không có thành tử nào.", - "LISTS_INLIST": "trong dánh sách", - "LISTS_INDEX_OF_FIRST": "tìm sự có mặt đầu tiên của vật", - "LISTS_INDEX_OF_LAST": "tìm sự có mặt cuối cùng của vật", - "LISTS_INDEX_OF_TOOLTIP": "Hoàn trả vị trí xuất hiện đầu tiên/cuối cùng của vật trong danh sách. Nếu không tìm thấy thì hoàn trả số %1.", - "LISTS_GET_INDEX_GET": "lấy thành tố", - "LISTS_GET_INDEX_GET_REMOVE": "lấy và xóa thành tố", - "LISTS_GET_INDEX_REMOVE": "xóa thành tố", - "LISTS_GET_INDEX_FROM_START": "thứ", - "LISTS_GET_INDEX_FROM_END": "(đếm từ cuối) thứ", - "LISTS_GET_INDEX_FIRST": "đầu tiên", - "LISTS_GET_INDEX_LAST": "cuối cùng", - "LISTS_GET_INDEX_RANDOM": "bất kỳ", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 là thành tố đầu tiên.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 là thành tố cuối cùng.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Hoàn trả thành tố trong danh sách ở vị trí ấn định.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Hoàn trả thành tố đầu tiên trong danh sách.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Hoàn trả thành tố cuối cùng trong danh sách.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Hoàn trả một thành tố bất kỳ trong danh sách.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Hoàn trả và xóa thành tố trong danh sách ở vị trí ấn định.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Hoàn trả và xóa thành tố đầu tiên trong danh sách.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Hoàn trả và xóa thành tố cuối cùng trong danh sách.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Hoàn trả và xóa mộtthành tố bất kỳ trong danh sách.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Xóa thành tố trong danh sách ở vị trí ấn định.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Xóa thành tố đầu tiên trong danh sách.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Xóa thành tố cuối cùng trong danh sách.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Xóa thành tố bất kỳ trong danh sách.", - "LISTS_SET_INDEX_SET": "đặt", - "LISTS_SET_INDEX_INSERT": "chèn vào vị trí", - "LISTS_SET_INDEX_INPUT_TO": "giá trị", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Đặt giá trị của thành tố ở vị trí ấn định trong một danh sách.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Đặt giá trị của thành tố đầu tiên trong danh sách.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Đặt giá trị của thành tố cuối cùng trong danh sách.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Đặt giá trị của thành tố ngẫu nhiên trong danh sách.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Chèn vật vào danh sách theo vị trí ấn định.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Chèn vật vào đầu danh sách.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Gắn thêm vật vào cuối danh sách.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Gắn chèn vật vào danh sách ở vị trí ngẫu nhiên.", - "LISTS_GET_SUBLIST_START_FROM_START": "lấy một danh sách con từ vị trí thứ", - "LISTS_GET_SUBLIST_START_FROM_END": "lấy một danh sách con từ (đếm từ cuối) từ vị trí thứ", - "LISTS_GET_SUBLIST_START_FIRST": "lấy một danh sách con từ đầu tiên", - "LISTS_GET_SUBLIST_END_FROM_START": "đến thứ", - "LISTS_GET_SUBLIST_END_FROM_END": "đến (đếm từ cuối) thứ", - "LISTS_GET_SUBLIST_END_LAST": "đến cuối cùng", - "LISTS_GET_SUBLIST_TOOLTIP": "Lấy một mảng của danh sách này để tạo danh sách con.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "sắp xếp %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Sắp xếp một bản sao của một danh sách.", - "LISTS_SORT_ORDER_ASCENDING": "tăng dần", - "LISTS_SORT_ORDER_DESCENDING": "giảm dần", - "LISTS_SORT_TYPE_NUMERIC": "số", - "LISTS_SORT_TYPE_TEXT": "chữ cái", - "LISTS_SORT_TYPE_IGNORECASE": "chữ cái, không phân biệt hoa/thường", - "LISTS_SPLIT_LIST_FROM_TEXT": "tạo danh sách từ văn bản", - "LISTS_SPLIT_TEXT_FROM_LIST": "tạo văn bản từ danh sách", - "LISTS_SPLIT_WITH_DELIMITER": "với ký tự phân cách", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Tách văn bản thành một danh sách các văn bản nhỏ, ngắt bởi các ký tự phân cách.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Liên kết một danh sách các văn bản vào một văn bản, cách nhau bằng dấu phân cách.", - "LISTS_REVERSE_MESSAGE0": "đảo ngược %1", - "LISTS_REVERSE_TOOLTIP": "Đảo ngược bản sao chép của một danh sách.", - "VARIABLES_GET_TOOLTIP": "Hoàn trả giá trị của.", - "VARIABLES_GET_CREATE_SET": "Tạo mảnh \"đặt vào %1\"", - "VARIABLES_SET": "cho %1 bằng %2", - "VARIABLES_SET_TOOLTIP": "Đặt giá trị của biến này thành...", - "VARIABLES_SET_CREATE_GET": "Tạo mảnh \"lấy %1\"", - "PROCEDURES_DEFNORETURN_TITLE": "thủ tục để", - "PROCEDURES_DEFNORETURN_PROCEDURE": "làm gì đó", - "PROCEDURES_BEFORE_PARAMS": "với:", - "PROCEDURES_CALL_BEFORE_PARAMS": "với:", - "PROCEDURES_DEFNORETURN_DO": "", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Một thủ tục không có giá trị hoàn trả.", - "PROCEDURES_DEFNORETURN_COMMENT": "Mô tả hàm này...", - "PROCEDURES_DEFRETURN_RETURN": "hoàn trả", - "PROCEDURES_DEFRETURN_TOOLTIP": "Một thủ tục có giá trị hoàn trả.", - "PROCEDURES_ALLOW_STATEMENTS": "cho phép báo cáo", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Chú ý: Thủ tục này có lặp lại tên các tham số.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Chạy một thủ tục không có giá trị hoàn trả.", - "PROCEDURES_CALLRETURN_HELPURL": "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con", - "PROCEDURES_CALLRETURN_TOOLTIP": "Chạy một thủ tục có giá trị hoàn trả.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "các tham số", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Thêm, xóa hoặc sắp xếp lại các đầu vào cho hàm này.", - "PROCEDURES_MUTATORARG_TITLE": "biến:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Thêm một đầu vào cho hàm.", - "PROCEDURES_HIGHLIGHT_DEF": "Làm nổi bật thủ tục", - "PROCEDURES_CREATE_DO": "Tạo mảnh \"thực hiện %1\"", - "PROCEDURES_IFRETURN_TOOLTIP": "Khi điều kiện đúng thì hoàn trả một giá trị.", - "PROCEDURES_IFRETURN_WARNING": "Chú ý: Mảnh này chỉ có thể dùng trong một thủ tục.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Hãy nói gì đó...", - "WORKSPACE_ARIA_LABEL": "Không gian làm việc Blockly", - "COLLAPSED_WARNINGS_WARNING": "Các khối bị sập có chứa cảnh báo.", - "DIALOG_OK": "OK", - "DIALOG_CANCEL": "Hủy" -} +{ + "@metadata": { + "authors": [ + "Baonguyen21022003", + "Dstream", + "Espertus", + "Leducthn", + "Nguyenvanduocit", + "Nguyễn Mạnh An", + "Qneutron", + "SierraNguyen", + "Withoutaname" + ] + }, + "VARIABLES_DEFAULT_NAME": "vật", + "UNNAMED_KEY": "không tên", + "TODAY": "Hôm nay", + "DUPLICATE_BLOCK": "Tạo Bản Sao", + "ADD_COMMENT": "Thêm Chú Giải", + "REMOVE_COMMENT": "Xóa Chú Giải", + "DUPLICATE_COMMENT": "Bình luận trùng", + "EXTERNAL_INPUTS": "Chỗ Gắn Bên Ngoài", + "INLINE_INPUTS": "Chỗ Gắn Cùng Dòng", + "DELETE_BLOCK": "Xóa Mảnh Này", + "DELETE_X_BLOCKS": "Xóa %1 Mảnh", + "DELETE_ALL_BLOCKS": "Xóa hết %1 mảnh?", + "CLEAN_UP": "Sắp xếp lại các khối", + "COLLAPSE_BLOCK": "Thu Nhỏ Mảnh", + "COLLAPSE_ALL": "Thu Nhỏ Mọi Mảnh", + "EXPAND_BLOCK": "Mở Lớn Mảnh", + "EXPAND_ALL": "Mở Lớn Mọi Mảnh", + "DISABLE_BLOCK": "Ngưng Tác Dụng", + "ENABLE_BLOCK": "Phục Hồi Tác Dụng", + "HELP": "Trợ Giúp", + "UNDO": "Hoàn tác", + "REDO": "Làm lại", + "CHANGE_VALUE_TITLE": "Thay giá trị thành:", + "RENAME_VARIABLE": "Thay tên biến...", + "RENAME_VARIABLE_TITLE": "Thay tên tất cả các biến \"%1\" thành:", + "NEW_VARIABLE": "Tạo biến...", + "NEW_STRING_VARIABLE": "Tạo một giá trị dạng chuỗi...", + "NEW_NUMBER_VARIABLE": "Tạo một giá trị số...", + "NEW_COLOUR_VARIABLE": "Tạo một giá trị màu sắc...", + "NEW_VARIABLE_TYPE_TITLE": "Kiểu giá trị mới:", + "NEW_VARIABLE_TITLE": "Tên của biến mới:", + "VARIABLE_ALREADY_EXISTS": "Một biến có tên '%1' đã tồn tại.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Giá trị '%1' đã tồn tại dưới dạng: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Xóa %1 lần dùng của giá trị '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Không thể xóa giá trị '%1' vì nó được bao gồm trong định nghĩa của chức năng '%2'", + "DELETE_VARIABLE": "Xóa giá trị '%1'", + "COLOUR_PICKER_HELPURL": "https://vi.wikipedia.org/wiki/M%C3%A0u_s%E1%BA%AFc", + "COLOUR_PICKER_TOOLTIP": "Chọn một màu từ bảng màu.", + "COLOUR_RANDOM_TITLE": "màu bất kỳ", + "COLOUR_RANDOM_TOOLTIP": "chọn một màu bất kỳ.", + "COLOUR_RGB_TITLE": "tạo màu từ", + "COLOUR_RGB_RED": "màu đỏ", + "COLOUR_RGB_GREEN": "màu xanh lá cây", + "COLOUR_RGB_BLUE": "màu xanh dương", + "COLOUR_RGB_TOOLTIP": "Tạo màu từ ba màu: đỏ, xanh lá cây, xanh dương với số lượng cụ thể. Mỗi số phải có giá trị từ 0 đến 100.", + "COLOUR_BLEND_TITLE": "pha", + "COLOUR_BLEND_COLOUR1": "màu 1", + "COLOUR_BLEND_COLOUR2": "màu 2", + "COLOUR_BLEND_RATIO": "tỉ lệ", + "COLOUR_BLEND_TOOLTIP": "Pha hai màu với nhau theo tỉ lệ (0 - 100).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "lặp lại %1 lần", + "CONTROLS_REPEAT_INPUT_DO": "thực hiện", + "CONTROLS_REPEAT_TOOLTIP": "Thực hiện các lệnh vài lần.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "lặp lại trong khi", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "lặp lại cho đến khi", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Miễn là điều kiện còn đúng, thì thực hiện các lệnh.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Miễn là điều kiện còn sai, thì thực hiện các lệnh. Khi điều kiện đúng thì ngưng.", + "CONTROLS_FOR_TOOLTIP": "Cho biến '%1' lấy các giá trị từ số bắt đầu đến số kết thúc, đếm theo khoảng thời gian đã chỉ định và thực hiện các khối được chỉ định.", + "CONTROLS_FOR_TITLE": "đếm theo %1 từ %2 đến %3 mỗi lần thêm %4", + "CONTROLS_FOREACH_TITLE": "với mỗi thành phần %1 trong danh sách %2", + "CONTROLS_FOREACH_TOOLTIP": "Trong một danh sách, lấy từng thành phần, gán vào biến \"%1\", rồi thực hiện một số lệnh.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "thoát", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "sang lần lặp tiếp theo", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Thoát khỏi vòng lặp hiện tại.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Bỏ qua phần còn lại trong vòng lặp này, và sang lần lặp tiếp theo.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Chú ý: Mảnh này chỉ có thế dùng trong các vòng lặp.", + "CONTROLS_IF_TOOLTIP_1": "Nếu điều kiện đúng, thực hiện các lệnh.", + "CONTROLS_IF_TOOLTIP_2": "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu sai, thực hiện các lệnh sau.", + "CONTROLS_IF_TOOLTIP_3": "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai.", + "CONTROLS_IF_TOOLTIP_4": "Nếu điều kiện đúng, thực hiện các lệnh đầu. Nếu không, nếu điều kiện thứ hai đúng, thực hiện các lệnh thứ hai. Nếu không điều kiện nào đúng, thực hiện các lệnh cuối cùng.", + "CONTROLS_IF_MSG_IF": "nếu", + "CONTROLS_IF_MSG_ELSEIF": "nếu không nếu", + "CONTROLS_IF_MSG_ELSE": "nếu không", + "CONTROLS_IF_IF_TOOLTIP": "Thêm, bỏ, hoặc đổi thứ tự các mảnh con để tạo cấu trúc mới cho mảnh nếu.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Thêm một điều kiện vào mảnh nếu.", + "CONTROLS_IF_ELSE_TOOLTIP": "Cuối cùng, khi không điều kiện nào đúng.", + "LOGIC_COMPARE_HELPURL": "https://vi.wikipedia.org/wiki/B%E1%BA%A5t_%C4%91%E1%BA%B3ng_th%E1%BB%A9c", + "LOGIC_COMPARE_TOOLTIP_EQ": "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào bằng nhau.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Hoàn trả giá trị \"đúng\" (true) nếu giá trị hai đầu vào không bằng nhau.", + "LOGIC_COMPARE_TOOLTIP_LT": "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn đầu vào thứ hai.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất nhỏ hơn hoặc bằng đầu vào thứ hai.", + "LOGIC_COMPARE_TOOLTIP_GT": "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn đầu vào thứ hai.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Hoàn trả giá trị \"đúng\" (true) nếu đầu vào thứ nhất lớn hơn hoặc bằng đầu vào thứ hai.", + "LOGIC_OPERATION_TOOLTIP_AND": "Hoàn trả \"đúng\" (true) nếu cả hai đầu vào đều đúng.", + "LOGIC_OPERATION_AND": "và", + "LOGIC_OPERATION_TOOLTIP_OR": "Hoàn trả \"đúng\" (true) nếu ít nhất một trong hai đầu vào đúng.", + "LOGIC_OPERATION_OR": "hoặc", + "LOGIC_NEGATE_TITLE": "không %1", + "LOGIC_NEGATE_TOOLTIP": "Hoàn trả \"đúng\" (true) nếu đầu vào sai. Hoàn trả \"sai\" (false) nếu đầu vào đúng.", + "LOGIC_BOOLEAN_TRUE": "đúng", + "LOGIC_BOOLEAN_FALSE": "sai", + "LOGIC_BOOLEAN_TOOLTIP": "Hoàn trả \"đúng\" hoặc \"sai\".", + "LOGIC_NULL": "trống không", + "LOGIC_NULL_TOOLTIP": "Hoàn trả trống không.", + "LOGIC_TERNARY_CONDITION": "kiểm tra", + "LOGIC_TERNARY_IF_TRUE": "nếu đúng", + "LOGIC_TERNARY_IF_FALSE": "nếu sai", + "LOGIC_TERNARY_TOOLTIP": "Kiểm tra điều kiện. Nếu điều kiện đúng, hoàn trả giá trị từ mệnh đề \"nếu đúng\" nếu không đúng, hoàn trả giá trị từ mệnh đề \"nếu sai\".", + "MATH_NUMBER_HELPURL": "https://vi.wikipedia.org/wiki/S%E1%BB%91", + "MATH_NUMBER_TOOLTIP": "Một con số.", + "MATH_ARITHMETIC_HELPURL": "https://vi.wikipedia.org/wiki/S%E1%BB%91_h%E1%BB%8Dc", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Hoàn trả tổng của hai con số.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Hoàn trả hiệu của hai con số.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Hoàn trả tích của hai con số.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Hoàn trả thương của hai con số.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Hoàn trả số lũy thừa với số thứ nhất là cơ số và số thứ hai là số mũ.", + "MATH_SINGLE_HELPURL": "https://vi.wikipedia.org/wiki/C%C4%83n_b%E1%BA%ADc_hai", + "MATH_SINGLE_OP_ROOT": "căn bật hai", + "MATH_SINGLE_TOOLTIP_ROOT": "Hoàn trả căn bật hai của số đầu vào.", + "MATH_SINGLE_OP_ABSOLUTE": "giá trị tuyệt đối", + "MATH_SINGLE_TOOLTIP_ABS": "Hoàn trả giá trị tuyệt đối của số đầu vào.", + "MATH_SINGLE_TOOLTIP_NEG": "Đổi dấu của số đầu vào: âm thành dương và dương thành âm, và hoàn trả số mới.", + "MATH_SINGLE_TOOLTIP_LN": "Hoàn trả lôgarit tự nhiên của số đầu vào.", + "MATH_SINGLE_TOOLTIP_LOG10": "Hoàn trả lôgarit cơ số 10 của số đầu vào.", + "MATH_SINGLE_TOOLTIP_EXP": "Hoàn trả lũy thừa của số e với số mũ đầu vào.", + "MATH_SINGLE_TOOLTIP_POW10": "Hoàn trả lũy thừa của số 10 với số mũ đầu vào.", + "MATH_TRIG_HELPURL": "https://vi.wikipedia.org/wiki/H%C3%A0m_l%C6%B0%E1%BB%A3ng_gi%C3%A1c", + "MATH_TRIG_TOOLTIP_SIN": "Hoàn trả Sin của một góc (theo độ).", + "MATH_TRIG_TOOLTIP_COS": "Hoàn trả Cos của một góc (theo độ).", + "MATH_TRIG_TOOLTIP_TAN": "Hoàn trả Tang của một góc (theo độ).", + "MATH_TRIG_TOOLTIP_ASIN": "Hoàn trả Arcsin của một góc (theo độ).", + "MATH_TRIG_TOOLTIP_ACOS": "Hoàn trả Arccos của một góc (theo độ).", + "MATH_TRIG_TOOLTIP_ATAN": "Hoàn trả Arctang của một góc (theo độ).", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Hoàn trả các đẳng số thường gặp: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (vô cực).", + "MATH_IS_EVEN": "là số chẵn", + "MATH_IS_ODD": "là số lẻ", + "MATH_IS_PRIME": "là số nguyên tố", + "MATH_IS_WHOLE": "là số nguyên", + "MATH_IS_POSITIVE": "là số dương", + "MATH_IS_NEGATIVE": "là số âm", + "MATH_IS_DIVISIBLE_BY": "chia hết cho", + "MATH_IS_TOOLTIP": "Kiểm tra con số xem nó có phải là số chẵn, lẻ, nguyên tố, nguyên, dương, âm, hay xem nó có chia hết cho số đầu vào hay không. Hoàn trả đúng hay sai.", + "MATH_CHANGE_HELPURL": "https://vi.wikipedia.org/wiki/Ph%C3%A9p_c%E1%BB%99ng", + "MATH_CHANGE_TITLE": "cộng vào %1 giá trị %2", + "MATH_CHANGE_TOOLTIP": "Cộng số đầu vào vào biến \"%1\".", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Làm tròn lên hoặc tròn xuống số đầu vào.", + "MATH_ROUND_OPERATOR_ROUND": "làm tròn", + "MATH_ROUND_OPERATOR_ROUNDUP": "làm tròn lên", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "làm tròn xuống", + "MATH_ONLIST_HELPURL": "", + "MATH_ONLIST_OPERATOR_SUM": "tổng của một danh sách", + "MATH_ONLIST_TOOLTIP_SUM": "Hoàn trả tổng số của tất cả các số trong danh sách.", + "MATH_ONLIST_OPERATOR_MIN": "số nhỏ nhất của một danh sách", + "MATH_ONLIST_TOOLTIP_MIN": "Hoàn trả số nhỏ nhất trong tất cả các số trong danh sách.", + "MATH_ONLIST_OPERATOR_MAX": "số lớn nhât của một danh sách", + "MATH_ONLIST_TOOLTIP_MAX": "Hoàn trả số lớn nhất trong tất cả các số trong danh sách.", + "MATH_ONLIST_OPERATOR_AVERAGE": "giá trị trung bình của một danh sách", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Hoàn trả giá trị trung bình từ của danh sách số.", + "MATH_ONLIST_OPERATOR_MEDIAN": "số trung vị của một danh sách", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Hoàn trả số trung vị của danh sách số.", + "MATH_ONLIST_OPERATOR_MODE": "các mode của một danh sách", + "MATH_ONLIST_TOOLTIP_MODE": "Hoàn trả các số có mặt nhiều nhất trong danh sách.", + "MATH_ONLIST_OPERATOR_STD_DEV": "độ lệch chuẩn của một danh sách", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Hoàn trả độ lệch chuẩn của danh sách số.", + "MATH_ONLIST_OPERATOR_RANDOM": "một số bất kỳ của một danh sách", + "MATH_ONLIST_TOOLTIP_RANDOM": "Hoàn trả một số bất kỳ từ các số trong danh sách.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "số dư của %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Chia số thứ nhất cho số thứ hai rồi hoàn trả số dư từ.", + "MATH_CONSTRAIN_TITLE": "giới hạn %1 không dưới %2 không hơn %3", + "MATH_CONSTRAIN_TOOLTIP": "Giới hạn số đầu vào để không dưới số thứ nhất và không hơn số thứ hai.", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "Một số nguyên bất kỳ từ %1 đến %2", + "MATH_RANDOM_INT_TOOLTIP": "Hoàn trả một số nguyên bất kỳ lớn hơn hoặc bằng số đầu và nhỏ hơn hoặc bằng số sau.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "phân số bất kỳ", + "MATH_RANDOM_FLOAT_TOOLTIP": "Hoàn trả một phân số bất kỳ không nhỏ hơn 0.0 và không lớn hơn 1.0.", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 của X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Trả về arctangent của điểm (X, Y) trong khoảng từ -180 độ đến 180 độ.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/string_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Một ký tự, một từ, hay một dòng.", + "TEXT_JOIN_HELPURL": "", + "TEXT_JOIN_TITLE_CREATEWITH": "tạo văn bản từ", + "TEXT_JOIN_TOOLTIP": "Tạo một văn bản từ các thành phần.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "kết nối", + "TEXT_CREATE_JOIN_TOOLTIP": "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh văn bản này.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "thêm vật mới vào văn bản.", + "TEXT_APPEND_TITLE": "ở cuối %1 thêm văn bản %2", + "TEXT_APPEND_TOOLTIP": "Thêm một mảng văn bản vào biến \"%1\".", + "TEXT_LENGTH_TITLE": "độ dài của %1", + "TEXT_LENGTH_TOOLTIP": "Hoàn trả số lượng ký tự (kể cả khoảng trắng) trong văn bản đầu vào.", + "TEXT_ISEMPTY_TITLE": "%1 trống không", + "TEXT_ISEMPTY_TOOLTIP": "Hoàn trả “đúng nếu văn bản không có ký tự nào.", + "TEXT_INDEXOF_TOOLTIP": "Hoàn trả vị trí xuất hiện đầu/cuối của văn bản thứ nhất trong văn bản thứ hai. Nếu không tìm thấy thì hoàn trả số %1.", + "TEXT_INDEXOF_TITLE": "trong văn bản %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "tìm sự có mặt đầu tiên của", + "TEXT_INDEXOF_OPERATOR_LAST": "tìm sự có mặt cuối cùng của", + "TEXT_CHARAT_TITLE": "trong văn bản %1 %2", + "TEXT_CHARAT_FROM_START": "lấy ký tự thứ", + "TEXT_CHARAT_FROM_END": "lấy từ phía cuối, ký tự thứ", + "TEXT_CHARAT_FIRST": "lấy ký tự đầu tiên", + "TEXT_CHARAT_LAST": "lấy ký tự cuối cùng", + "TEXT_CHARAT_RANDOM": "lấy ký tự bất kỳ", + "TEXT_CHARAT_TOOLTIP": "Hoàn trả ký tự ở vị trí đặt ra.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Hoàn trả một mảng ký tự ấn định từ trong văn bản.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "trong văn bản", + "TEXT_GET_SUBSTRING_START_FROM_START": "lấy từ ký tự thứ", + "TEXT_GET_SUBSTRING_START_FROM_END": "lấy từ phía cuối, ký tự thứ", + "TEXT_GET_SUBSTRING_START_FIRST": "lấy từ ký tự đầu tiên", + "TEXT_GET_SUBSTRING_END_FROM_START": "đến ký tự thứ", + "TEXT_GET_SUBSTRING_END_FROM_END": "đến từ phía cuối, ký tự thứ", + "TEXT_GET_SUBSTRING_END_LAST": "đến ký tự cuối cùng", + "TEXT_CHANGECASE_TOOLTIP": "Hoàn trả văn bản sau khi chuyển đổi chữ in hoa hay thường.", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "thành CHỮ IN HOA", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "thành chữ thường", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "thành Chữ In Đầu Mỗi Từ", + "TEXT_TRIM_TOOLTIP": "Hoàn trả bản sao của văn bản sau khi xóa khoảng trắng từ một hoặc hai bên.", + "TEXT_TRIM_OPERATOR_BOTH": "cắt các không gian từ cả hai mặt của", + "TEXT_TRIM_OPERATOR_LEFT": "cắt các không gian từ bên trái của", + "TEXT_TRIM_OPERATOR_RIGHT": "cắt các không gian từ bên phải của", + "TEXT_PRINT_TITLE": "in lên màng hình %1", + "TEXT_PRINT_TOOLTIP": "In ra màng hình một văn bản, con số, hay một giá trị đầu vào khác.", + "TEXT_PROMPT_TYPE_TEXT": "Xin người dùng nhập vào văn bản với dòng hướng dẫn", + "TEXT_PROMPT_TYPE_NUMBER": "Xin người dùng nhập vào con số với dòng hướng dẫn", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Xin người dùng nhập vào một con số.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Xin người dùng nhập vào một văn bản.", + "TEXT_COUNT_MESSAGE0": "đến %1 trong %2", + "TEXT_COUNT_TOOLTIP": "Đếm số lần một đoạn văn bản xuất hiện trong một đoạn văn bản khác.", + "TEXT_REPLACE_MESSAGE0": "thay thế %1 bằng %2 trong %3", + "TEXT_REPLACE_TOOLTIP": "Thay thế tất cả các lần xuất hiện của văn bản bằng văn bản khác.", + "TEXT_REVERSE_MESSAGE0": "đảo ngược %1", + "TEXT_REVERSE_TOOLTIP": "Đảo ngược thứ tự của các chữ cái trong văn bản.", + "LISTS_CREATE_EMPTY_TITLE": "tạo danh sách trống", + "LISTS_CREATE_EMPTY_TOOLTIP": "Hoàn trả một danh sách, với độ dài 0, không có thành tố nào cả", + "LISTS_CREATE_WITH_TOOLTIP": "Tạo một danh sách bao gồm nhiều vậts, với một số lượng bất kỳ.", + "LISTS_CREATE_WITH_INPUT_WITH": "tạo danh sách gồm", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "danh sách", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Thêm, bỏ, hoặc sắp xếp lại các thành phần để tạo dựng mảnh danh sách này.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Thêm vật vào danh sách.", + "LISTS_REPEAT_TOOLTIP": "Tạo danh sách gồm một số lượng vật nhất định với mỗi vật đều giống nhau.", + "LISTS_REPEAT_TITLE": "tạo danh sách gồm một vật %1 lặp lại %2 lần", + "LISTS_LENGTH_TITLE": "độ dài của %1", + "LISTS_LENGTH_TOOLTIP": "Hoàn trả độ dài của một danh sách.", + "LISTS_ISEMPTY_TITLE": "%1 trống rỗng", + "LISTS_ISEMPTY_TOOLTIP": "Hoàn trả “đúng\" nếu danh sách không có thành tử nào.", + "LISTS_INLIST": "trong dánh sách", + "LISTS_INDEX_OF_FIRST": "tìm sự có mặt đầu tiên của vật", + "LISTS_INDEX_OF_LAST": "tìm sự có mặt cuối cùng của vật", + "LISTS_INDEX_OF_TOOLTIP": "Hoàn trả vị trí xuất hiện đầu tiên/cuối cùng của vật trong danh sách. Nếu không tìm thấy thì hoàn trả số %1.", + "LISTS_GET_INDEX_GET": "lấy thành tố", + "LISTS_GET_INDEX_GET_REMOVE": "lấy và xóa thành tố", + "LISTS_GET_INDEX_REMOVE": "xóa thành tố", + "LISTS_GET_INDEX_FROM_START": "thứ", + "LISTS_GET_INDEX_FROM_END": "(đếm từ cuối) thứ", + "LISTS_GET_INDEX_FIRST": "đầu tiên", + "LISTS_GET_INDEX_LAST": "cuối cùng", + "LISTS_GET_INDEX_RANDOM": "bất kỳ", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 là thành tố đầu tiên.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 là thành tố cuối cùng.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Hoàn trả thành tố trong danh sách ở vị trí ấn định.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Hoàn trả thành tố đầu tiên trong danh sách.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Hoàn trả thành tố cuối cùng trong danh sách.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Hoàn trả một thành tố bất kỳ trong danh sách.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Hoàn trả và xóa thành tố trong danh sách ở vị trí ấn định.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Hoàn trả và xóa thành tố đầu tiên trong danh sách.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Hoàn trả và xóa thành tố cuối cùng trong danh sách.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Hoàn trả và xóa mộtthành tố bất kỳ trong danh sách.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Xóa thành tố trong danh sách ở vị trí ấn định.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Xóa thành tố đầu tiên trong danh sách.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Xóa thành tố cuối cùng trong danh sách.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Xóa thành tố bất kỳ trong danh sách.", + "LISTS_SET_INDEX_SET": "đặt", + "LISTS_SET_INDEX_INSERT": "chèn vào vị trí", + "LISTS_SET_INDEX_INPUT_TO": "giá trị", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Đặt giá trị của thành tố ở vị trí ấn định trong một danh sách.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Đặt giá trị của thành tố đầu tiên trong danh sách.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Đặt giá trị của thành tố cuối cùng trong danh sách.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Đặt giá trị của thành tố ngẫu nhiên trong danh sách.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Chèn vật vào danh sách theo vị trí ấn định.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Chèn vật vào đầu danh sách.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Gắn thêm vật vào cuối danh sách.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Gắn chèn vật vào danh sách ở vị trí ngẫu nhiên.", + "LISTS_GET_SUBLIST_START_FROM_START": "lấy một danh sách con từ vị trí thứ", + "LISTS_GET_SUBLIST_START_FROM_END": "lấy một danh sách con từ (đếm từ cuối) từ vị trí thứ", + "LISTS_GET_SUBLIST_START_FIRST": "lấy một danh sách con từ đầu tiên", + "LISTS_GET_SUBLIST_END_FROM_START": "đến thứ", + "LISTS_GET_SUBLIST_END_FROM_END": "đến (đếm từ cuối) thứ", + "LISTS_GET_SUBLIST_END_LAST": "đến cuối cùng", + "LISTS_GET_SUBLIST_TOOLTIP": "Lấy một mảng của danh sách này để tạo danh sách con.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "sắp xếp %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Sắp xếp một bản sao của một danh sách.", + "LISTS_SORT_ORDER_ASCENDING": "tăng dần", + "LISTS_SORT_ORDER_DESCENDING": "giảm dần", + "LISTS_SORT_TYPE_NUMERIC": "số", + "LISTS_SORT_TYPE_TEXT": "chữ cái", + "LISTS_SORT_TYPE_IGNORECASE": "chữ cái, không phân biệt hoa/thường", + "LISTS_SPLIT_LIST_FROM_TEXT": "tạo danh sách từ văn bản", + "LISTS_SPLIT_TEXT_FROM_LIST": "tạo văn bản từ danh sách", + "LISTS_SPLIT_WITH_DELIMITER": "với ký tự phân cách", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Tách văn bản thành một danh sách các văn bản nhỏ, ngắt bởi các ký tự phân cách.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Liên kết một danh sách các văn bản vào một văn bản, cách nhau bằng dấu phân cách.", + "LISTS_REVERSE_MESSAGE0": "đảo ngược %1", + "LISTS_REVERSE_TOOLTIP": "Đảo ngược bản sao chép của một danh sách.", + "VARIABLES_GET_TOOLTIP": "Hoàn trả giá trị của.", + "VARIABLES_GET_CREATE_SET": "Tạo mảnh \"đặt vào %1\"", + "VARIABLES_SET": "cho %1 bằng %2", + "VARIABLES_SET_TOOLTIP": "Đặt giá trị của biến này thành...", + "VARIABLES_SET_CREATE_GET": "Tạo mảnh \"lấy %1\"", + "PROCEDURES_DEFNORETURN_TITLE": "thủ tục để", + "PROCEDURES_DEFNORETURN_PROCEDURE": "làm gì đó", + "PROCEDURES_BEFORE_PARAMS": "với:", + "PROCEDURES_CALL_BEFORE_PARAMS": "với:", + "PROCEDURES_DEFNORETURN_DO": "", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Một thủ tục không có giá trị hoàn trả.", + "PROCEDURES_DEFNORETURN_COMMENT": "Mô tả hàm này...", + "PROCEDURES_DEFRETURN_RETURN": "hoàn trả", + "PROCEDURES_DEFRETURN_TOOLTIP": "Một thủ tục có giá trị hoàn trả.", + "PROCEDURES_ALLOW_STATEMENTS": "cho phép báo cáo", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Chú ý: Thủ tục này có lặp lại tên các tham số.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Chạy một thủ tục không có giá trị hoàn trả.", + "PROCEDURES_CALLRETURN_HELPURL": "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con", + "PROCEDURES_CALLRETURN_TOOLTIP": "Chạy một thủ tục có giá trị hoàn trả.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "các tham số", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Thêm, xóa hoặc sắp xếp lại các đầu vào cho hàm này.", + "PROCEDURES_MUTATORARG_TITLE": "biến:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Thêm một đầu vào cho hàm.", + "PROCEDURES_HIGHLIGHT_DEF": "Làm nổi bật thủ tục", + "PROCEDURES_CREATE_DO": "Tạo mảnh \"thực hiện %1\"", + "PROCEDURES_IFRETURN_TOOLTIP": "Khi điều kiện đúng thì hoàn trả một giá trị.", + "PROCEDURES_IFRETURN_WARNING": "Chú ý: Mảnh này chỉ có thể dùng trong một thủ tục.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Hãy nói gì đó...", + "WORKSPACE_ARIA_LABEL": "Không gian làm việc Blockly", + "COLLAPSED_WARNINGS_WARNING": "Các khối bị sập có chứa cảnh báo.", + "DIALOG_OK": "OK", + "DIALOG_CANCEL": "Hủy" +} diff --git a/msg/json/xmf.json b/msg/json/xmf.json index 1e2b9980cab..39fd0b24f72 100644 --- a/msg/json/xmf.json +++ b/msg/json/xmf.json @@ -1,88 +1,88 @@ -{ - "@metadata": { - "authors": [ - "Narazeni", - "Silovan" - ] - }, - "VARIABLES_DEFAULT_NAME": "ელემენტი", - "UNNAMED_KEY": "ჯოხოშ უმუშო", - "TODAY": "ამდღა", - "DUPLICATE_BLOCK": "კოპირაფა", - "ADD_COMMENT": "კომენტარიშ გეძინა", - "REMOVE_COMMENT": "კომენტარიშ გოუქვაფა", - "DUPLICATE_COMMENT": "კომენტარიშ დუბლირაფა", - "EXTERNAL_INPUTS": "გალეშე დინოხუნაფა", - "INLINE_INPUTS": "დინოხოლე დინოხუნაფა", - "DELETE_BLOCK": "ბლოკიშ ლასუა", - "DELETE_X_BLOCKS": "%1 ბლოკიშ ლასუა", - "DELETE_ALL_BLOCKS": "არძა (%1) ბლოკი ბლასათო?", - "CLEAN_UP": "ბლოკეფიშ გოუქვაფა", - "COLLAPSE_BLOCK": "ბლოკიშ ტყობინაფა", - "COLLAPSE_ALL": "ბლოკეფიშ ინოკიჩუა", - "EXPAND_BLOCK": "ბლოკიშ გჷმოფაჩუა", - "EXPAND_ALL": "ბლოკეფიშ გჷმოფაჩუა", - "DISABLE_BLOCK": "ბლოკიშ თიშუა", - "ENABLE_BLOCK": "ბლოკიშ ჩართება", - "HELP": "მოხვარა", - "UNDO": "გოუქვაფა", - "REDO": "ოშხონაფა", - "CHANGE_VALUE_TITLE": "შანულობაშ თირუა:", - "RENAME_VARIABLE": "ჯოხოშ თირუა მათირეფონი…", - "RENAME_VARIABLE_TITLE": "არძა მათირეფონი '%1' ჯოხოშ თირუა -შა:", - "NEW_VARIABLE": "აკოქიმინი მათირეფონი...", - "NEW_VARIABLE_TITLE": "ახალი მათირეფონიშ ჯოხო:", - "VARIABLE_ALREADY_EXISTS": "მათირეფონი ჯოხოთი '%1' უკვე არსენებს.", - "DELETE_VARIABLE_CONFIRMATION": "'%2' მათირეფონიშ გჷმორინაფა %1 ბლასათო?", - "DELETE_VARIABLE": "'%1' მათირეფონიშ ლასუა", - "COLOUR_PICKER_HELPURL": "https://xmf.wikipedia.org/wiki/ფერი", - "COLOUR_PICKER_TOOLTIP": "გეგშაგორით ფერი პალიტრაშე.", - "COLOUR_RANDOM_TITLE": "შემთხვევითი ფერი", - "COLOUR_RANDOM_TOOLTIP": "ფერიშ შემთხვევითო გიშაგორუა.", - "COLOUR_RGB_TITLE": "ფერიː", - "COLOUR_RGB_RED": "ჭითა", - "COLOUR_RGB_GREEN": "წვანე", - "COLOUR_RGB_BLUE": "ლენი", - "COLOUR_RGB_TOOLTIP": "აკოქიმინით ფერი მოჩამილი ჭითა, წვანე დო ლენი ფერეფიშ პროპორციეფით. არძა შანულობა 0 დო 100 შქას ოკო რდას.", - "COLOUR_BLEND_TITLE": "ესვარუა", - "COLOUR_BLEND_COLOUR1": "ფერი 1", - "COLOUR_BLEND_COLOUR2": "ფერი 2", - "COLOUR_BLEND_RATIO": "ფერი 1-შ წილი", - "COLOUR_BLEND_TOOLTIP": "ჟირ ფერს ართიანს უწყორუანს მოჩამილი ზჷმათ (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://ru.wikipedia.org/wiki/ციკლი_(პროგრამირაფა)", - "CONTROLS_REPEAT_TITLE": "%1 შა გომაჟირაფა", - "CONTROLS_REPEAT_INPUT_DO": "რსულება", - "CONTROLS_REPEAT_TOOLTIP": "მუსხირენ ზოჯუაშ მუსხირენშა რსულება.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "გომაჟირაფა, სოიშახ", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "გომაჟირაფა, სოიშახ ვა", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "სოიშახ შანულობა ნანდული რე, ზოჯუეფიშ რსულება.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "სოიშახ შანულობა ტყურა რე, ზოჯუეფიშ რსულება", - "CONTROLS_FOR_TOOLTIP": "მათირეფონი '%1'-ის მითმურჩქინანს შანულობას მოჩამილი ბიჯგეფით დუდშე ბოლოშა დო მეწურაფილ ზოჯუეფს არსულენს.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ციკლშე გიშულა", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ციკლიშ გეჸვენჯი ბიჯგშა გინულა", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "თე ციკლიშ მეჭყორიდუა.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "ხვილაფა: თე ბლოკიშ გჷმორინაფა ხვალე ციკლიშ დინოხოლე შილებე.", - "CONTROLS_IF_TOOLTIP_1": "პიჯალეფი ნანდული ქორე-და, ზოჯუეფს არსულენს.", - "CONTROLS_IF_MSG_IF": "თუ", - "CONTROLS_IF_MSG_ELSEIF": "შხვანერო თუ", - "CONTROLS_IF_MSG_ELSE": "შხვანერო", - "LOGIC_OPERATION_AND": "დო", - "LOGIC_OPERATION_OR": "ვარდა", - "LOGIC_BOOLEAN_TRUE": "ნანდული", - "LOGIC_BOOLEAN_FALSE": "ტყურა", - "LOGIC_NULL": "მუთუნ ვარი", - "LOGIC_NULL_TOOLTIP": "დჷთმართინუანს მუთუნ ვარს.", - "MATH_NUMBER_HELPURL": "https://xmf.wikipedia.org/wiki/რიცხუ", - "MATH_NUMBER_TOOLTIP": "რიცხუ.", - "MATH_ARITHMETIC_HELPURL": "https://xmf.wikipedia.org/wiki/არითმეტიკა", - "MATH_SINGLE_OP_ROOT": "კვადრატული ჯინჯი", - "MATH_SINGLE_OP_ABSOLUTE": "მოდული", - "MATH_IS_EVEN": "ჭკობა რე", - "MATH_IS_ODD": "ცანდი რე", - "MATH_IS_PRIME": "უკაჭული რე", - "MATH_IS_WHOLE": "ნთელი რე", - "MATH_IS_POSITIVE": "დადებითი რე", - "MATH_IS_NEGATIVE": "უარყოფითი რე", - "LISTS_ISEMPTY_TITLE": "%1 ცარიელი რე", - "DIALOG_CANCEL": "გოუქვაფა" -} +{ + "@metadata": { + "authors": [ + "Narazeni", + "Silovan" + ] + }, + "VARIABLES_DEFAULT_NAME": "ელემენტი", + "UNNAMED_KEY": "ჯოხოშ უმუშო", + "TODAY": "ამდღა", + "DUPLICATE_BLOCK": "კოპირაფა", + "ADD_COMMENT": "კომენტარიშ გეძინა", + "REMOVE_COMMENT": "კომენტარიშ გოუქვაფა", + "DUPLICATE_COMMENT": "კომენტარიშ დუბლირაფა", + "EXTERNAL_INPUTS": "გალეშე დინოხუნაფა", + "INLINE_INPUTS": "დინოხოლე დინოხუნაფა", + "DELETE_BLOCK": "ბლოკიშ ლასუა", + "DELETE_X_BLOCKS": "%1 ბლოკიშ ლასუა", + "DELETE_ALL_BLOCKS": "არძა (%1) ბლოკი ბლასათო?", + "CLEAN_UP": "ბლოკეფიშ გოუქვაფა", + "COLLAPSE_BLOCK": "ბლოკიშ ტყობინაფა", + "COLLAPSE_ALL": "ბლოკეფიშ ინოკიჩუა", + "EXPAND_BLOCK": "ბლოკიშ გჷმოფაჩუა", + "EXPAND_ALL": "ბლოკეფიშ გჷმოფაჩუა", + "DISABLE_BLOCK": "ბლოკიშ თიშუა", + "ENABLE_BLOCK": "ბლოკიშ ჩართება", + "HELP": "მოხვარა", + "UNDO": "გოუქვაფა", + "REDO": "ოშხონაფა", + "CHANGE_VALUE_TITLE": "შანულობაშ თირუა:", + "RENAME_VARIABLE": "ჯოხოშ თირუა მათირეფონი…", + "RENAME_VARIABLE_TITLE": "არძა მათირეფონი '%1' ჯოხოშ თირუა -შა:", + "NEW_VARIABLE": "აკოქიმინი მათირეფონი...", + "NEW_VARIABLE_TITLE": "ახალი მათირეფონიშ ჯოხო:", + "VARIABLE_ALREADY_EXISTS": "მათირეფონი ჯოხოთი '%1' უკვე არსენებს.", + "DELETE_VARIABLE_CONFIRMATION": "'%2' მათირეფონიშ გჷმორინაფა %1 ბლასათო?", + "DELETE_VARIABLE": "'%1' მათირეფონიშ ლასუა", + "COLOUR_PICKER_HELPURL": "https://xmf.wikipedia.org/wiki/ფერი", + "COLOUR_PICKER_TOOLTIP": "გეგშაგორით ფერი პალიტრაშე.", + "COLOUR_RANDOM_TITLE": "შემთხვევითი ფერი", + "COLOUR_RANDOM_TOOLTIP": "ფერიშ შემთხვევითო გიშაგორუა.", + "COLOUR_RGB_TITLE": "ფერიː", + "COLOUR_RGB_RED": "ჭითა", + "COLOUR_RGB_GREEN": "წვანე", + "COLOUR_RGB_BLUE": "ლენი", + "COLOUR_RGB_TOOLTIP": "აკოქიმინით ფერი მოჩამილი ჭითა, წვანე დო ლენი ფერეფიშ პროპორციეფით. არძა შანულობა 0 დო 100 შქას ოკო რდას.", + "COLOUR_BLEND_TITLE": "ესვარუა", + "COLOUR_BLEND_COLOUR1": "ფერი 1", + "COLOUR_BLEND_COLOUR2": "ფერი 2", + "COLOUR_BLEND_RATIO": "ფერი 1-შ წილი", + "COLOUR_BLEND_TOOLTIP": "ჟირ ფერს ართიანს უწყორუანს მოჩამილი ზჷმათ (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://ru.wikipedia.org/wiki/ციკლი_(პროგრამირაფა)", + "CONTROLS_REPEAT_TITLE": "%1 შა გომაჟირაფა", + "CONTROLS_REPEAT_INPUT_DO": "რსულება", + "CONTROLS_REPEAT_TOOLTIP": "მუსხირენ ზოჯუაშ მუსხირენშა რსულება.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "გომაჟირაფა, სოიშახ", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "გომაჟირაფა, სოიშახ ვა", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "სოიშახ შანულობა ნანდული რე, ზოჯუეფიშ რსულება.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "სოიშახ შანულობა ტყურა რე, ზოჯუეფიშ რსულება", + "CONTROLS_FOR_TOOLTIP": "მათირეფონი '%1'-ის მითმურჩქინანს შანულობას მოჩამილი ბიჯგეფით დუდშე ბოლოშა დო მეწურაფილ ზოჯუეფს არსულენს.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ციკლშე გიშულა", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "ციკლიშ გეჸვენჯი ბიჯგშა გინულა", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "თე ციკლიშ მეჭყორიდუა.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "ხვილაფა: თე ბლოკიშ გჷმორინაფა ხვალე ციკლიშ დინოხოლე შილებე.", + "CONTROLS_IF_TOOLTIP_1": "პიჯალეფი ნანდული ქორე-და, ზოჯუეფს არსულენს.", + "CONTROLS_IF_MSG_IF": "თუ", + "CONTROLS_IF_MSG_ELSEIF": "შხვანერო თუ", + "CONTROLS_IF_MSG_ELSE": "შხვანერო", + "LOGIC_OPERATION_AND": "დო", + "LOGIC_OPERATION_OR": "ვარდა", + "LOGIC_BOOLEAN_TRUE": "ნანდული", + "LOGIC_BOOLEAN_FALSE": "ტყურა", + "LOGIC_NULL": "მუთუნ ვარი", + "LOGIC_NULL_TOOLTIP": "დჷთმართინუანს მუთუნ ვარს.", + "MATH_NUMBER_HELPURL": "https://xmf.wikipedia.org/wiki/რიცხუ", + "MATH_NUMBER_TOOLTIP": "რიცხუ.", + "MATH_ARITHMETIC_HELPURL": "https://xmf.wikipedia.org/wiki/არითმეტიკა", + "MATH_SINGLE_OP_ROOT": "კვადრატული ჯინჯი", + "MATH_SINGLE_OP_ABSOLUTE": "მოდული", + "MATH_IS_EVEN": "ჭკობა რე", + "MATH_IS_ODD": "ცანდი რე", + "MATH_IS_PRIME": "უკაჭული რე", + "MATH_IS_WHOLE": "ნთელი რე", + "MATH_IS_POSITIVE": "დადებითი რე", + "MATH_IS_NEGATIVE": "უარყოფითი რე", + "LISTS_ISEMPTY_TITLE": "%1 ცარიელი რე", + "DIALOG_CANCEL": "გოუქვაფა" +} diff --git a/msg/json/yo.json b/msg/json/yo.json index 524d89e0323..4deb2cea179 100644 --- a/msg/json/yo.json +++ b/msg/json/yo.json @@ -1,331 +1,331 @@ -{ - "@metadata": { - "authors": [ - "Mapmeld" - ] - }, - "VARIABLES_DEFAULT_NAME": "nkan", - "TODAY": "Loni", - "DUPLICATE_BLOCK": "Ṣe ẹẹda", - "ADD_COMMENT": "Ṣe afikun ọrọ iwoye", - "REMOVE_COMMENT": "Yọ afikun ọrọ iwoye", - "DUPLICATE_COMMENT": "Ṣe ẹẹda afikun ọrọ iwoye", - "EXTERNAL_INPUTS": "Awon afikun okeere", - "INLINE_INPUTS": "Afiku tẹle n tẹle", - "DELETE_BLOCK": "Paa Bulọọku rẹ", - "DELETE_X_BLOCKS": "Paa %1 awọn Bulọọku rẹ", - "DELETE_ALL_BLOCKS": "Paa gbogbo %1 bulọọku rẹ?", - "CLEAN_UP": "Nu Bulọọku kuro", - "COLLAPSE_BLOCK": "Bi Bulọọku ṣubu", - "COLLAPSE_ALL": "Bi awọn Bulọọku ṣubu", - "EXPAND_BLOCK": "Fẹ Bulọọku", - "EXPAND_ALL": "Fẹ awọn Bulọọku", - "DISABLE_BLOCK": "Sọ Bulọọku di alaiṣiṣẹ", - "ENABLE_BLOCK": "Muu Bulọọku ṣiṣẹ", - "HELP": "Iranwọ", - "UNDO": "Maa ṣe", - "REDO": "Tun ṣe", - "CHANGE_VALUE_TITLE": "Ṣe ayipada iye:", - "RENAME_VARIABLE": "Tun orukọ oniruuru kọ...", - "RENAME_VARIABLE_TITLE": "Tun orukọ gbogbo '%1' v oniruru kọ si:", - "NEW_VARIABLE": "Ṣe idasile oniruuru...", - "NEW_STRING_VARIABLE": "Ṣe idasile asopọ oniruru...", - "NEW_NUMBER_VARIABLE": "Ṣe idasile nọ́mbà oniruru...", - "NEW_COLOUR_VARIABLE": "Ṣe idasile awọ oniruuru...", - "NEW_VARIABLE_TYPE_TITLE": "Iru oniruuru tuntun:", - "NEW_VARIABLE_TITLE": "Orukọ oniruuru tuntun:", - "VARIABLE_ALREADY_EXISTS": "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ fun iru miran: '%2'.", - "DELETE_VARIABLE_CONFIRMATION": "Paa %1 lilo '%2' oniruuru rẹ?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "E ko lee paa Oniruuru rẹ ' %1' nitori wipe o je ara itumọ isise eto yi '%2'", - "DELETE_VARIABLE": "Paa awon '%1' Oniruuru rẹ", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_PICKER_TOOLTIP": "Yan awọ kan lati inu patako awọ.", - "COLOUR_RANDOM_TITLE": "awọ àrìnàkò", - "COLOUR_RANDOM_TOOLTIP": "Yan awọ kan ni ọna àrìnàkò.", - "COLOUR_RGB_TITLE": "awọ pelu:", - "COLOUR_RGB_RED": "awọ pupu", - "COLOUR_RGB_GREEN": "alawọ ewe", - "COLOUR_RGB_BLUE": "alawọ omi aro", - "COLOUR_RGB_TOOLTIP": "Ṣe idasile awọ kan pelu iye awọ pupu, alawọ ewe, ati alawọ omi aro. Gbogbo iye re gbọdọ je laarin 0 and 100.", - "COLOUR_BLEND_TITLE": "apapọ", - "COLOUR_BLEND_COLOUR1": "awọ 1", - "COLOUR_BLEND_COLOUR2": "awọ 2", - "COLOUR_BLEND_RATIO": "ipin", - "COLOUR_BLEND_TOOLTIP": "Da awo meji papo pelu ipin (0.0 - 1.0).", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "Iye igba %1 ti tun ṣe", - "CONTROLS_REPEAT_INPUT_DO": "ṣe", - "CONTROLS_REPEAT_TOOLTIP": "Ṣe awon alaye ni igba pupo.", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "tun ṣe nigbati", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "tun ṣe titi ti", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Nigbati iye kan ba je otito, tun awon koodu kan ṣe.", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Nigbati awon iye kan ba iro, tun awon koodu kan ṣe.", - "CONTROLS_FOR_TOOLTIP": "Ni awon oriṣiriṣi '%1' ṣe imulo lori iye kọọkan lati ori nọmba tio beere titi de eyin to pari nọmba, kaa ni pase aarin kan pato. Tun koodu yi se nigba kọọkan:", - "CONTROLS_FOR_TITLE": "iyipada %1 lati %2 si %3 fifi kun %4", - "CONTROLS_FOREACH_TITLE": "fun nigba kọọkan %1 ni akojọ %2", - "CONTROLS_FOREACH_TOOLTIP": "Fun nkan kọọkan ninu akojọ kan, ṣe eto oriṢiriṢi '%1' si nkan naa, ki o si tun koodu naa ṣe.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ya kuro ninu lupu", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "beere pelu aṣiṣe lupu", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ya kuro ninu akojọ lupu.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ṣe afoda awon lupu to ku yii, kii o si tesiwaju pelu awon aṣiṣe lupu.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Ikilo: Bulọọku yii se lo ninu aṣiṣe lupu yii nikan.", - "CONTROLS_IF_TOOLTIP_1": "Bi iye yii ba je otito, lẹyinna ṣe awọn alaye.", - "CONTROLS_IF_TOOLTIP_2": "Bi iye yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, ṣe alaye akọkọ bulọọku keji.", - "CONTROLS_IF_TOOLTIP_3": "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji.", - "CONTROLS_IF_TOOLTIP_4": "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji. Bi eyikeyi iye naa ko ba je otito, ṣe alaye akọkọ bulọọku ti o gbeyin.", - "CONTROLS_IF_MSG_IF": "bi", - "CONTROLS_IF_MSG_ELSEIF": "bibẹẹkọ bi", - "CONTROLS_IF_MSG_ELSE": "bibẹẹkọ", - "CONTROLS_IF_IF_TOOLTIP": "Ṣe afikun, se ayọkuro, tabi se a tun beere abala yii lati se a tun gbejade bulọọku yii.", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Ṣe afikun si ipo yii bi bulọọku.", - "CONTROLS_IF_ELSE_TOOLTIP": "Ṣe afikun ipari, mu-gbogbo ipo si bulọọku.", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_COMPARE_TOOLTIP_EQ": "Da otito pada b iafikun mejeji ba dogba bakanna.", - "LOGIC_COMPARE_TOOLTIP_NEQ": "Da otito pada bi afikun mejeji ko ba dogba bakanna.", - "LOGIC_COMPARE_TOOLTIP_LT": "Da otito pada bi afikun akooko ba kere ju afiku keji lo.", - "LOGIC_COMPARE_TOOLTIP_LTE": "Da otito pada bi afikun akooko ba kere ju tabi dogba pelu afiku keji lo.", - "LOGIC_COMPARE_TOOLTIP_GT": "Da otito pada bi afikun akooko ba tobi ju afiku keji lo.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Da otito pada bi afikun akooko ba tobi ju tabi dogba pelu afiku keji lo.", - "LOGIC_OPERATION_TOOLTIP_AND": "Da otito pada bi afikun mejeji ba je otito.", - "LOGIC_OPERATION_AND": "ati", - "LOGIC_OPERATION_TOOLTIP_OR": "Da otitọ pada bi o kere ju afikun kan ba je otito.", - "LOGIC_OPERATION_OR": "tabi", - "LOGIC_NEGATE_TITLE": "kii ṣe %1", - "LOGIC_NEGATE_TOOLTIP": "Da otitọ pada bi afikun ba je irọ. Da iro pada bi afikun ba je otito.", - "LOGIC_BOOLEAN_TRUE": "otitọ", - "LOGIC_BOOLEAN_FALSE": "irọ", - "LOGIC_BOOLEAN_TOOLTIP": "Da pada bi o je otito tabi iro.", - "LOGIC_NULL": "ofo", - "LOGIC_NULL_TOOLTIP": "Da ofo pada.", - "LOGIC_TERNARY_CONDITION": "idanwo", - "LOGIC_TERNARY_IF_TRUE": "bi otitọ", - "LOGIC_TERNARY_IF_FALSE": "bi irọ", - "LOGIC_TERNARY_TOOLTIP": "Ṣe ayewo ipo naa ni 'idanwo'. Bi ipo nab a je otito, Da pada 'bi otito' iye; bibẹẹkọ da pada 'bi iro' iye.", - "MATH_NUMBER_HELPURL": "https://yo.wikipedia.org/wiki/Nọ́mbà", - "MATH_NUMBER_TOOLTIP": "Nọ́mbà kan.", - "MATH_ARITHMETIC_HELPURL": "https://yo.wikipedia.org/wiki/Ìṣírò", - "MATH_ARITHMETIC_TOOLTIP_ADD": "Da apapo awọn nọmba meji pada.", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "Da iyatọ awọn nọmba meji naa pada.", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Da abajade awọn nọmba meji naa pada.", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Da adarọ iye ti awọn nọmba meji pada.", - "MATH_ARITHMETIC_TOOLTIP_POWER": "Da nọmba akọkọ ti a gbe si agbara ti nọmba keji pada.", - "MATH_SINGLE_HELPURL": "https://yo.wikipedia.org/wiki/Gb%C3%B2ngb%C3%B2_al%C3%A1gb%C3%A1ram%C3%A9j%C3%AC", - "MATH_SINGLE_OP_ROOT": "Ipilẹ onihamẹrin", - "MATH_SINGLE_TOOLTIP_ROOT": "Da Ipilẹ onihamẹrin nọmba kan pada.", - "MATH_SINGLE_OP_ABSOLUTE": "patapata", - "MATH_SINGLE_TOOLTIP_ABS": "Da iye patapata ti nọmba kan pada.", - "MATH_SINGLE_TOOLTIP_NEG": "Da ilodisi ti nọmba kan pada", - "MATH_SINGLE_TOOLTIP_LN": "Da lọgaridimu adayeba ti nọmba kan pada.", - "MATH_SINGLE_TOOLTIP_LOG10": "Da ipilẹ 10 lọgaridimu nọmba kan pada.", - "MATH_SINGLE_TOOLTIP_EXP": "Da e pada si agbara ti nọmba kan.", - "MATH_SINGLE_TOOLTIP_POW10": "Da 10 pada si agbara nọmba kan.", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_TRIG_TOOLTIP_SIN": "Da sine ti digiri pada (kii ṣe Radian).", - "MATH_TRIG_TOOLTIP_COS": "Da cosine ti digiri pada (kii ṣe Radian).", - "MATH_TRIG_TOOLTIP_TAN": "Da tangent ti digiri pada (kii ṣe Radian).", - "MATH_TRIG_TOOLTIP_ASIN": "Da arcsine ti digiri pada.", - "MATH_TRIG_TOOLTIP_ACOS": "Da arccosine ti digiri pada.", - "MATH_TRIG_TOOLTIP_ATAN": "Da arctangent ti digiri pada.", - "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", - "MATH_CONSTANT_TOOLTIP": "Da ọkan ninu awọn aiyipada ti o wọpọ pada: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (ailopin).", - "MATH_IS_EVEN": "je se e pin", - "MATH_IS_ODD": "je ai se e pin", - "MATH_IS_PRIME": "je nọ́mbà àkọ́kọ́", - "MATH_IS_WHOLE": "je odidi", - "MATH_IS_POSITIVE": "je di dara", - "MATH_IS_NEGATIVE": "je ai dara", - "MATH_IS_DIVISIBLE_BY": "je sisee pin pẹlu", - "MATH_IS_TOOLTIP": "Ṣe ayẹwo boya nọmba jẹ eyi to se pin, ai se pin, akori, odidi, ti o dara, ti ko dara, tabi ti o ba se e pin pelu nọmba kan. Pada otitọ tabi irọ.", - "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", - "MATH_CHANGE_TITLE": "iyipada %1 nipasẹ %2", - "MATH_CHANGE_TOOLTIP": "Se afiku si nọmba orisirisi '%1'.", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_ROUND_TOOLTIP": "Pa oju nọmba de soke tabi si isalẹ.", - "MATH_ROUND_OPERATOR_ROUND": "pa ju de", - "MATH_ROUND_OPERATOR_ROUNDUP": "pa ju de soke", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "pa ju de si isalẹ", - "MATH_ONLIST_OPERATOR_SUM": "apao akojọ", - "MATH_ONLIST_TOOLTIP_SUM": "Da apapo gbogbo awọn nọmba inu akojọ pada.", - "MATH_ONLIST_OPERATOR_MIN": "akojọ ti o kere ju", - "MATH_ONLIST_TOOLTIP_MIN": "Da nọmba ti o kere julọ ninu akojọ pada.", - "MATH_ONLIST_OPERATOR_MAX": "akojọ ti o pọ ju", - "MATH_ONLIST_TOOLTIP_MAX": "Da nọmba ti o tobi julọ ninu akojọ pada.", - "MATH_ONLIST_OPERATOR_AVERAGE": "idameji akojọ", - "MATH_ONLIST_TOOLTIP_AVERAGE": "Da idameji pada (ipin isiro) ti awọn nọmba iye inu akojọ.", - "MATH_ONLIST_OPERATOR_MEDIAN": "agbedemeji akojọ", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Da agbedemeji nọmba inu akojọ pada.", - "MATH_ONLIST_OPERATOR_MODE": "awọn ipo ti akojọ", - "MATH_ONLIST_TOOLTIP_MODE": "Da akojọ ti eyi ti o wọpọ julọ ninu akojọ.", - "MATH_ONLIST_OPERATOR_STD_DEV": "iṣiro deede ti akojọ", - "MATH_ONLIST_TOOLTIP_STD_DEV": "Da iṣiro deede ti akojọ pada.", - "MATH_ONLIST_OPERATOR_RANDOM": "àrìnàkò nkan ti akojọ", - "MATH_ONLIST_TOOLTIP_RANDOM": "Da àrìnàkò ida ipilẹ nkan lati inu akojọ.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_MODULO_TITLE": "iyokù %1 ÷ %2", - "MATH_MODULO_TOOLTIP": "Da iyokù lati pinpin awọn nọmba meji pada.", - "MATH_CONSTRAIN_TITLE": "atokọ %1 kukuru %2 giga %3", - "MATH_CONSTRAIN_TOOLTIP": "Ṣe atokọ nọmba laarin awọn nọmba kukuru ati giga. (ini afikun).", - "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_INT_TITLE": "oniruru abala lati %1 si %2", - "MATH_RANDOM_INT_TOOLTIP": "Da àrìnàkò abala laarin awon opin pato meji pada, ini afikun.", - "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "oniruru ipin", - "MATH_RANDOM_FLOAT_TOOLTIP": "Da àrìnàkò ida pada laarin 0.0 (ini afikun) ati 1.0 (iyasọtọ).", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Da ojuami arctangent pada (X, Y) ni awon digiri lati -180 si 180.", - "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", - "TEXT_TEXT_TOOLTIP": "Lẹta, ọrọ, tabi ila ọrọ.", - "TEXT_JOIN_TITLE_CREATEWITH": "ṣẹ ẹda ọrọ pẹlu", - "TEXT_JOIN_TOOLTIP": "Ṣẹda ọrọ kan nipa ṣiṣepọ gbogbo awọn ohun kan.", - "TEXT_CREATE_JOIN_TITLE_JOIN": "darapọ", - "TEXT_CREATE_JOIN_TOOLTIP": "Fikun, yọ kuro, tabi ṣe atunṣe awọn apakan lati se atunkọ ọrọ bulooku yii.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ṣe afikun nkan si ọrọ naa.", - "TEXT_APPEND_TITLE": "si %1 fikun ọrọ %2", - "TEXT_APPEND_TOOLTIP": "Ṣe afikun awon ọrọ oniruru '%1'.", - "TEXT_LENGTH_TITLE": "Gigun ti %1", - "TEXT_LENGTH_TOOLTIP": "Da nọmba awọn lẹta pada (pẹlu awọn alafo) ninu ọrọ ti a pese.", - "TEXT_ISEMPTY_TITLE": "%1 je isofo", - "TEXT_ISEMPTY_TOOLTIP": "Da otitọ pada ti ọrọ ti a pese ba ṣofo.", - "TEXT_INDEXOF_TOOLTIP": "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri.", - "TEXT_INDEXOF_TITLE": "ninu %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "wa isele akọkọ ti o wa ninu ọrọ", - "TEXT_INDEXOF_OPERATOR_LAST": "wa isele igbeyin ti o wa ninu ọrọ", - "TEXT_CHARAT_TITLE": "ninu %1 %2", - "TEXT_CHARAT_FROM_START": "gba lẹta #", - "TEXT_CHARAT_FROM_END": "gba lẹta # lati opin", - "TEXT_CHARAT_FIRST": "gba lẹta akọkọ", - "TEXT_CHARAT_LAST": "gba lẹta ti o kẹhin", - "TEXT_CHARAT_RANDOM": "gba lẹta àrìnàkò", - "TEXT_CHARAT_TOOLTIP": "Da lẹta naa pada si ipo ti a ti sọ tẹlẹ.", - "TEXT_GET_SUBSTRING_TOOLTIP": "Da ipin kan pato ti ọrọ naa pada.", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ninu", - "TEXT_GET_SUBSTRING_START_FROM_START": "gba substring lati lẹta #", - "TEXT_GET_SUBSTRING_START_FROM_END": "gba substring lati lẹta # lati opin", - "TEXT_GET_SUBSTRING_START_FIRST": "gba substring lati lẹta akọkọ", - "TEXT_GET_SUBSTRING_END_FROM_START": "si lẹta #", - "TEXT_GET_SUBSTRING_END_FROM_END": "si lẹta # lati opin", - "TEXT_GET_SUBSTRING_END_LAST": "si lẹta kẹhin", - "TEXT_CHANGECASE_TOOLTIP": "aa <-> AA", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "si ALFABETI NLA", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "si alfabeti kekere", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "si Alfabeti Aarin", - "TEXT_TRIM_TOOLTIP": "Da ẹda ti ọrọ naa pada pẹlu awọn alafo miiran ti o kuro lati ọkan tabi awọn opin mejeeji.", - "TEXT_TRIM_OPERATOR_BOTH": "ge awọn alafo lati awọn igun mejeji ti", - "TEXT_TRIM_OPERATOR_LEFT": "ge awọn alafo lati apa osi ti", - "TEXT_TRIM_OPERATOR_RIGHT": "ge awọn alafo lati apa otun ti", - "TEXT_PRINT_TITLE": "tẹ ọrọ %1", - "TEXT_PRINT_TOOLTIP": "Tẹ ọrọ kan pato, nọmba tabi iye awon miiran.", - "TEXT_PROMPT_TYPE_TEXT": "kiakia fun ọrọ pẹlu ifiranṣẹ", - "TEXT_PROMPT_TYPE_NUMBER": "kiakia fun nọmba pẹlu ifiranṣẹ", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Kiakia fun olumulo fun nọmba.", - "TEXT_PROMPT_TOOLTIP_TEXT": "Kiakia fun olumulo fun awon ifiranṣẹ.", - "TEXT_COUNT_MESSAGE0": "ka %1 ni %2", - "TEXT_COUNT_TOOLTIP": "Ka iye igba diẹ ninu awọn ọrọ kan waye laarin awọn ọrọ miiran.", - "TEXT_REPLACE_MESSAGE0": "Ṣe iropọ %1 pelu %2 in %3", - "TEXT_REPLACE_TOOLTIP": "Ṣe iropo gbogbo awọn iṣẹlẹ ti o sele ninu awọn ọrọ laarin awọn ọrọ miiran.", - "TEXT_REVERSE_MESSAGE0": "Ṣe iyipada %1", - "TEXT_REVERSE_TOOLTIP": "Ṣe iyipada aṣẹ awọn ohun kikọ inu ọrọ naa.", - "LISTS_CREATE_EMPTY_TITLE": "Ṣẹda akojọ aṣayan tio ṣofo", - "LISTS_CREATE_EMPTY_TOOLTIP": "Da akojọ pada, ti gigun 0, ko ni awon akosile alaye", - "LISTS_CREATE_WITH_TOOLTIP": "Ṣẹda akojọ pẹlu nọmba eyikeyi ti awọn akojo.", - "LISTS_CREATE_WITH_INPUT_WITH": "ṣẹda akojọ", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "akojọ", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Fikun, yọ, tabi yọ, tunṣe awọn apakan lati akojọ bulooku yii.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Fi nkan kun akojọ.", - "LISTS_REPEAT_TOOLTIP": "Ṣẹda akojọ kan ti o wa fun iye tun nọmba kan pato ti akoko ti a ti yan.", - "LISTS_REPEAT_TITLE": "ṣẹda akojọ pẹlu nkan %1 tun ṣe %2 igba", - "LISTS_LENGTH_TITLE": "gigun ti %1", - "LISTS_LENGTH_TOOLTIP": "Da gigun ti akojo pada.", - "LISTS_ISEMPTY_TITLE": "%1 je ofo", - "LISTS_ISEMPTY_TOOLTIP": "Da otitọ pada nigbati akojọ ba ṣofo.", - "LISTS_INLIST": "ni akojọ", - "LISTS_INDEX_OF_FIRST": "wa awon nkan akọkọ ti o sele", - "LISTS_INDEX_OF_LAST": "wa iṣẹlẹ ti o kẹhin ti akojọ", - "LISTS_INDEX_OF_TOOLTIP": "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri.", - "LISTS_GET_INDEX_GET": "gba", - "LISTS_GET_INDEX_GET_REMOVE": "gba ati yọ", - "LISTS_GET_INDEX_REMOVE": "yọ", - "LISTS_GET_INDEX_FROM_END": "# lati opin", - "LISTS_GET_INDEX_FIRST": "àkọ́kọ́", - "LISTS_GET_INDEX_LAST": "tógbẹ̀yìn", - "LISTS_GET_INDEX_RANDOM": "àrìnàkò", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 jẹ ohun akọkọ.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 jẹ ohun ti o kẹhin.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returns the item at the specified position in a list.", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Da akojọ akọkọ pada.", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Da akojọ ti o kẹhin pada.", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Da ohun àrìnàkò kan pada ninu akojọ", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Yọ ki o si da akojọ kuro ni akọkọ pada.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Yọ ki o si da akojọ ti o kẹhin pada", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Yọ ki o si da akojọ ti o kẹhin àrìnàkò pada", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Da akojọ akọkọ pada.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Da akojọ ti o kẹhin pada.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Da ohun àrìnàkò kan pada ninu akojọ", - "LISTS_SET_INDEX_SET": "ṣeto", - "LISTS_SET_INDEX_INSERT": "fi sii ni", - "LISTS_SET_INDEX_INPUT_TO": "bii", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ṣeto ohun akọkọ sii ipo kan pato ti a ti yan ni akojọ.", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Fi ohun kan sii ni ibẹrẹ akojọ.", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Fi ohun kan kun si opin akojọ.", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Fi ohun kan kun si àrìnàkò akojọ.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Fi ohun kan sii ipo kan pato ti a ti yan ni akojọ.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Fi ohun kan sii ni ibẹrẹ akojọ.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Fi ohun kan kun si opin akojọ.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Fi ohun kan kun si àrìnàkò akojọ.", - "LISTS_GET_SUBLIST_START_FROM_START": "gba ipin -akojọ lati #", - "LISTS_GET_SUBLIST_START_FROM_END": "gba ipin -akojọ lati # lati opin", - "LISTS_GET_SUBLIST_START_FIRST": "gba ipin -akojọ lati akọkọ", - "LISTS_GET_SUBLIST_END_FROM_START": "sii #", - "LISTS_GET_SUBLIST_END_FROM_END": "sii # lati opin", - "LISTS_GET_SUBLIST_END_LAST": "sii opin", - "LISTS_GET_SUBLIST_TOOLTIP": "Ṣẹda ẹda ti apa kan ti o wa ninu akojọ.", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "to %1 %2 %3", - "LISTS_SORT_TOOLTIP": "To ẹda akojọ lẹsẹẹsẹ.", - "LISTS_SORT_ORDER_ASCENDING": "si oke", - "LISTS_SORT_ORDER_DESCENDING": "si isalẹ", - "LISTS_SORT_TYPE_NUMERIC": "awọn nọmba", - "LISTS_SORT_TYPE_TEXT": "awon alfabeti", - "LISTS_SORT_TYPE_IGNORECASE": "awon alfabeti, fojufo irufe", - "LISTS_SPLIT_LIST_FROM_TEXT": "ṣe akojọ lati inu ọrọ", - "LISTS_SPLIT_TEXT_FROM_LIST": "ṣe ọrọ lati akojọ", - "LISTS_SPLIT_WITH_DELIMITER": "pẹlu dẹlimita", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Pin ọrọ sinu akojọ awọn ọrọ kan, fọ ni dẹlimita kọọkan.", - "LISTS_SPLIT_TOOLTIP_JOIN": "Darapọ mọ akojọ awọn ọrọ sinu ọrọ kan, ti a pin nipase delimita.", - "LISTS_REVERSE_MESSAGE0": "Ṣe iyipada %1", - "LISTS_REVERSE_TOOLTIP": "Ṣe iyipada ẹda ti akojọ kan.", - "VARIABLES_GET_TOOLTIP": "Da iye orisirisi yii pada.", - "VARIABLES_GET_CREATE_SET": "Ṣe idasile 'ṣeto %1'", - "VARIABLES_SET": "ṣeto %1 sii %2", - "VARIABLES_SET_TOOLTIP": "Ṣeto oniruru yii lati je bakanna sii igbasilẹ.", - "VARIABLES_SET_CREATE_GET": "Ṣe idasile 'gba %1'", - "PROCEDURES_DEFNORETURN_TITLE": "sii", - "PROCEDURES_DEFNORETURN_PROCEDURE": "Ṣe awon alaye ni igba pupo.", - "PROCEDURES_BEFORE_PARAMS": "pẹlu:", - "PROCEDURES_CALL_BEFORE_PARAMS": "pẹlu:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "Ṣẹda iṣẹ kan lai si iṣagbejade.", - "PROCEDURES_DEFNORETURN_COMMENT": "Ṣe apejuwe iṣẹ yii...", - "PROCEDURES_DEFRETURN_RETURN": "tun tẹ", - "PROCEDURES_DEFRETURN_TOOLTIP": "Ṣẹda iṣẹ pẹlu iṣagbejade kan.", - "PROCEDURES_ALLOW_STATEMENTS": "gba alaye laaye", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Ikilo: Isẹ yii ni awọn ẹda odiwọn.", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Ṣe ṣalaye-iṣẹ ti olumulo '%1'.", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Ṣe ṣalaye-iṣẹ ti olumulo '%1' kii o sii lo iṣagbejade rẹ.", - "PROCEDURES_MUTATORCONTAINER_TITLE": "igbewọle", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Fikun, yọ kuro, tabi tun beere awọn igbewọle si iṣẹ yii.", - "PROCEDURES_MUTATORARG_TITLE": "igbewọle orukọ:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Ṣe afikun kan sii igbewọle si iṣẹ yii.", - "PROCEDURES_HIGHLIGHT_DEF": "Ṣafihan iṣẹ isọtunmọ", - "PROCEDURES_CREATE_DO": "Ṣe idasile '%1'", - "PROCEDURES_IFRETURN_TOOLTIP": "Ti iye ba jẹ otitọ, lẹhinna da iye keji pada.", - "PROCEDURES_IFRETURN_WARNING": "Ikilo: Bulọọki yii le ṣee lo nikan laarin itumọ iṣẹ kan", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Sọ nkankan...", - "DIALOG_OK": "O DARA", - "DIALOG_CANCEL": "Fagilé" -} +{ + "@metadata": { + "authors": [ + "Mapmeld" + ] + }, + "VARIABLES_DEFAULT_NAME": "nkan", + "TODAY": "Loni", + "DUPLICATE_BLOCK": "Ṣe ẹẹda", + "ADD_COMMENT": "Ṣe afikun ọrọ iwoye", + "REMOVE_COMMENT": "Yọ afikun ọrọ iwoye", + "DUPLICATE_COMMENT": "Ṣe ẹẹda afikun ọrọ iwoye", + "EXTERNAL_INPUTS": "Awon afikun okeere", + "INLINE_INPUTS": "Afiku tẹle n tẹle", + "DELETE_BLOCK": "Paa Bulọọku rẹ", + "DELETE_X_BLOCKS": "Paa %1 awọn Bulọọku rẹ", + "DELETE_ALL_BLOCKS": "Paa gbogbo %1 bulọọku rẹ?", + "CLEAN_UP": "Nu Bulọọku kuro", + "COLLAPSE_BLOCK": "Bi Bulọọku ṣubu", + "COLLAPSE_ALL": "Bi awọn Bulọọku ṣubu", + "EXPAND_BLOCK": "Fẹ Bulọọku", + "EXPAND_ALL": "Fẹ awọn Bulọọku", + "DISABLE_BLOCK": "Sọ Bulọọku di alaiṣiṣẹ", + "ENABLE_BLOCK": "Muu Bulọọku ṣiṣẹ", + "HELP": "Iranwọ", + "UNDO": "Maa ṣe", + "REDO": "Tun ṣe", + "CHANGE_VALUE_TITLE": "Ṣe ayipada iye:", + "RENAME_VARIABLE": "Tun orukọ oniruuru kọ...", + "RENAME_VARIABLE_TITLE": "Tun orukọ gbogbo '%1' v oniruru kọ si:", + "NEW_VARIABLE": "Ṣe idasile oniruuru...", + "NEW_STRING_VARIABLE": "Ṣe idasile asopọ oniruru...", + "NEW_NUMBER_VARIABLE": "Ṣe idasile nọ́mbà oniruru...", + "NEW_COLOUR_VARIABLE": "Ṣe idasile awọ oniruuru...", + "NEW_VARIABLE_TYPE_TITLE": "Iru oniruuru tuntun:", + "NEW_VARIABLE_TITLE": "Orukọ oniruuru tuntun:", + "VARIABLE_ALREADY_EXISTS": "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Oniruuru ti a darukọ '%1' ti wa tẹlẹtẹlẹ fun iru miran: '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Paa %1 lilo '%2' oniruuru rẹ?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "E ko lee paa Oniruuru rẹ ' %1' nitori wipe o je ara itumọ isise eto yi '%2'", + "DELETE_VARIABLE": "Paa awon '%1' Oniruuru rẹ", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_PICKER_TOOLTIP": "Yan awọ kan lati inu patako awọ.", + "COLOUR_RANDOM_TITLE": "awọ àrìnàkò", + "COLOUR_RANDOM_TOOLTIP": "Yan awọ kan ni ọna àrìnàkò.", + "COLOUR_RGB_TITLE": "awọ pelu:", + "COLOUR_RGB_RED": "awọ pupu", + "COLOUR_RGB_GREEN": "alawọ ewe", + "COLOUR_RGB_BLUE": "alawọ omi aro", + "COLOUR_RGB_TOOLTIP": "Ṣe idasile awọ kan pelu iye awọ pupu, alawọ ewe, ati alawọ omi aro. Gbogbo iye re gbọdọ je laarin 0 and 100.", + "COLOUR_BLEND_TITLE": "apapọ", + "COLOUR_BLEND_COLOUR1": "awọ 1", + "COLOUR_BLEND_COLOUR2": "awọ 2", + "COLOUR_BLEND_RATIO": "ipin", + "COLOUR_BLEND_TOOLTIP": "Da awo meji papo pelu ipin (0.0 - 1.0).", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "Iye igba %1 ti tun ṣe", + "CONTROLS_REPEAT_INPUT_DO": "ṣe", + "CONTROLS_REPEAT_TOOLTIP": "Ṣe awon alaye ni igba pupo.", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "tun ṣe nigbati", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "tun ṣe titi ti", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Nigbati iye kan ba je otito, tun awon koodu kan ṣe.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Nigbati awon iye kan ba iro, tun awon koodu kan ṣe.", + "CONTROLS_FOR_TOOLTIP": "Ni awon oriṣiriṣi '%1' ṣe imulo lori iye kọọkan lati ori nọmba tio beere titi de eyin to pari nọmba, kaa ni pase aarin kan pato. Tun koodu yi se nigba kọọkan:", + "CONTROLS_FOR_TITLE": "iyipada %1 lati %2 si %3 fifi kun %4", + "CONTROLS_FOREACH_TITLE": "fun nigba kọọkan %1 ni akojọ %2", + "CONTROLS_FOREACH_TOOLTIP": "Fun nkan kọọkan ninu akojọ kan, ṣe eto oriṢiriṢi '%1' si nkan naa, ki o si tun koodu naa ṣe.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "ya kuro ninu lupu", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "beere pelu aṣiṣe lupu", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ya kuro ninu akojọ lupu.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Ṣe afoda awon lupu to ku yii, kii o si tesiwaju pelu awon aṣiṣe lupu.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Ikilo: Bulọọku yii se lo ninu aṣiṣe lupu yii nikan.", + "CONTROLS_IF_TOOLTIP_1": "Bi iye yii ba je otito, lẹyinna ṣe awọn alaye.", + "CONTROLS_IF_TOOLTIP_2": "Bi iye yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, ṣe alaye akọkọ bulọọku keji.", + "CONTROLS_IF_TOOLTIP_3": "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bibẹẹkọ, Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji.", + "CONTROLS_IF_TOOLTIP_4": "Bi iye akọkọ yii ba je otito, lẹyinna ṣe alaye bulọọku akọkọ. Bi iye keji yii ba je otito, ṣe alaye akọkọ bulọọku keji. Bi eyikeyi iye naa ko ba je otito, ṣe alaye akọkọ bulọọku ti o gbeyin.", + "CONTROLS_IF_MSG_IF": "bi", + "CONTROLS_IF_MSG_ELSEIF": "bibẹẹkọ bi", + "CONTROLS_IF_MSG_ELSE": "bibẹẹkọ", + "CONTROLS_IF_IF_TOOLTIP": "Ṣe afikun, se ayọkuro, tabi se a tun beere abala yii lati se a tun gbejade bulọọku yii.", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Ṣe afikun si ipo yii bi bulọọku.", + "CONTROLS_IF_ELSE_TOOLTIP": "Ṣe afikun ipari, mu-gbogbo ipo si bulọọku.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_COMPARE_TOOLTIP_EQ": "Da otito pada b iafikun mejeji ba dogba bakanna.", + "LOGIC_COMPARE_TOOLTIP_NEQ": "Da otito pada bi afikun mejeji ko ba dogba bakanna.", + "LOGIC_COMPARE_TOOLTIP_LT": "Da otito pada bi afikun akooko ba kere ju afiku keji lo.", + "LOGIC_COMPARE_TOOLTIP_LTE": "Da otito pada bi afikun akooko ba kere ju tabi dogba pelu afiku keji lo.", + "LOGIC_COMPARE_TOOLTIP_GT": "Da otito pada bi afikun akooko ba tobi ju afiku keji lo.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Da otito pada bi afikun akooko ba tobi ju tabi dogba pelu afiku keji lo.", + "LOGIC_OPERATION_TOOLTIP_AND": "Da otito pada bi afikun mejeji ba je otito.", + "LOGIC_OPERATION_AND": "ati", + "LOGIC_OPERATION_TOOLTIP_OR": "Da otitọ pada bi o kere ju afikun kan ba je otito.", + "LOGIC_OPERATION_OR": "tabi", + "LOGIC_NEGATE_TITLE": "kii ṣe %1", + "LOGIC_NEGATE_TOOLTIP": "Da otitọ pada bi afikun ba je irọ. Da iro pada bi afikun ba je otito.", + "LOGIC_BOOLEAN_TRUE": "otitọ", + "LOGIC_BOOLEAN_FALSE": "irọ", + "LOGIC_BOOLEAN_TOOLTIP": "Da pada bi o je otito tabi iro.", + "LOGIC_NULL": "ofo", + "LOGIC_NULL_TOOLTIP": "Da ofo pada.", + "LOGIC_TERNARY_CONDITION": "idanwo", + "LOGIC_TERNARY_IF_TRUE": "bi otitọ", + "LOGIC_TERNARY_IF_FALSE": "bi irọ", + "LOGIC_TERNARY_TOOLTIP": "Ṣe ayewo ipo naa ni 'idanwo'. Bi ipo nab a je otito, Da pada 'bi otito' iye; bibẹẹkọ da pada 'bi iro' iye.", + "MATH_NUMBER_HELPURL": "https://yo.wikipedia.org/wiki/Nọ́mbà", + "MATH_NUMBER_TOOLTIP": "Nọ́mbà kan.", + "MATH_ARITHMETIC_HELPURL": "https://yo.wikipedia.org/wiki/Ìṣírò", + "MATH_ARITHMETIC_TOOLTIP_ADD": "Da apapo awọn nọmba meji pada.", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "Da iyatọ awọn nọmba meji naa pada.", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Da abajade awọn nọmba meji naa pada.", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Da adarọ iye ti awọn nọmba meji pada.", + "MATH_ARITHMETIC_TOOLTIP_POWER": "Da nọmba akọkọ ti a gbe si agbara ti nọmba keji pada.", + "MATH_SINGLE_HELPURL": "https://yo.wikipedia.org/wiki/Gb%C3%B2ngb%C3%B2_al%C3%A1gb%C3%A1ram%C3%A9j%C3%AC", + "MATH_SINGLE_OP_ROOT": "Ipilẹ onihamẹrin", + "MATH_SINGLE_TOOLTIP_ROOT": "Da Ipilẹ onihamẹrin nọmba kan pada.", + "MATH_SINGLE_OP_ABSOLUTE": "patapata", + "MATH_SINGLE_TOOLTIP_ABS": "Da iye patapata ti nọmba kan pada.", + "MATH_SINGLE_TOOLTIP_NEG": "Da ilodisi ti nọmba kan pada", + "MATH_SINGLE_TOOLTIP_LN": "Da lọgaridimu adayeba ti nọmba kan pada.", + "MATH_SINGLE_TOOLTIP_LOG10": "Da ipilẹ 10 lọgaridimu nọmba kan pada.", + "MATH_SINGLE_TOOLTIP_EXP": "Da e pada si agbara ti nọmba kan.", + "MATH_SINGLE_TOOLTIP_POW10": "Da 10 pada si agbara nọmba kan.", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_TRIG_TOOLTIP_SIN": "Da sine ti digiri pada (kii ṣe Radian).", + "MATH_TRIG_TOOLTIP_COS": "Da cosine ti digiri pada (kii ṣe Radian).", + "MATH_TRIG_TOOLTIP_TAN": "Da tangent ti digiri pada (kii ṣe Radian).", + "MATH_TRIG_TOOLTIP_ASIN": "Da arcsine ti digiri pada.", + "MATH_TRIG_TOOLTIP_ACOS": "Da arccosine ti digiri pada.", + "MATH_TRIG_TOOLTIP_ATAN": "Da arctangent ti digiri pada.", + "MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant", + "MATH_CONSTANT_TOOLTIP": "Da ọkan ninu awọn aiyipada ti o wọpọ pada: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (ailopin).", + "MATH_IS_EVEN": "je se e pin", + "MATH_IS_ODD": "je ai se e pin", + "MATH_IS_PRIME": "je nọ́mbà àkọ́kọ́", + "MATH_IS_WHOLE": "je odidi", + "MATH_IS_POSITIVE": "je di dara", + "MATH_IS_NEGATIVE": "je ai dara", + "MATH_IS_DIVISIBLE_BY": "je sisee pin pẹlu", + "MATH_IS_TOOLTIP": "Ṣe ayẹwo boya nọmba jẹ eyi to se pin, ai se pin, akori, odidi, ti o dara, ti ko dara, tabi ti o ba se e pin pelu nọmba kan. Pada otitọ tabi irọ.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", + "MATH_CHANGE_TITLE": "iyipada %1 nipasẹ %2", + "MATH_CHANGE_TOOLTIP": "Se afiku si nọmba orisirisi '%1'.", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Pa oju nọmba de soke tabi si isalẹ.", + "MATH_ROUND_OPERATOR_ROUND": "pa ju de", + "MATH_ROUND_OPERATOR_ROUNDUP": "pa ju de soke", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "pa ju de si isalẹ", + "MATH_ONLIST_OPERATOR_SUM": "apao akojọ", + "MATH_ONLIST_TOOLTIP_SUM": "Da apapo gbogbo awọn nọmba inu akojọ pada.", + "MATH_ONLIST_OPERATOR_MIN": "akojọ ti o kere ju", + "MATH_ONLIST_TOOLTIP_MIN": "Da nọmba ti o kere julọ ninu akojọ pada.", + "MATH_ONLIST_OPERATOR_MAX": "akojọ ti o pọ ju", + "MATH_ONLIST_TOOLTIP_MAX": "Da nọmba ti o tobi julọ ninu akojọ pada.", + "MATH_ONLIST_OPERATOR_AVERAGE": "idameji akojọ", + "MATH_ONLIST_TOOLTIP_AVERAGE": "Da idameji pada (ipin isiro) ti awọn nọmba iye inu akojọ.", + "MATH_ONLIST_OPERATOR_MEDIAN": "agbedemeji akojọ", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Da agbedemeji nọmba inu akojọ pada.", + "MATH_ONLIST_OPERATOR_MODE": "awọn ipo ti akojọ", + "MATH_ONLIST_TOOLTIP_MODE": "Da akojọ ti eyi ti o wọpọ julọ ninu akojọ.", + "MATH_ONLIST_OPERATOR_STD_DEV": "iṣiro deede ti akojọ", + "MATH_ONLIST_TOOLTIP_STD_DEV": "Da iṣiro deede ti akojọ pada.", + "MATH_ONLIST_OPERATOR_RANDOM": "àrìnàkò nkan ti akojọ", + "MATH_ONLIST_TOOLTIP_RANDOM": "Da àrìnàkò ida ipilẹ nkan lati inu akojọ.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_TITLE": "iyokù %1 ÷ %2", + "MATH_MODULO_TOOLTIP": "Da iyokù lati pinpin awọn nọmba meji pada.", + "MATH_CONSTRAIN_TITLE": "atokọ %1 kukuru %2 giga %3", + "MATH_CONSTRAIN_TOOLTIP": "Ṣe atokọ nọmba laarin awọn nọmba kukuru ati giga. (ini afikun).", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_INT_TITLE": "oniruru abala lati %1 si %2", + "MATH_RANDOM_INT_TOOLTIP": "Da àrìnàkò abala laarin awon opin pato meji pada, ini afikun.", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "oniruru ipin", + "MATH_RANDOM_FLOAT_TOOLTIP": "Da àrìnàkò ida pada laarin 0.0 (ini afikun) ati 1.0 (iyasọtọ).", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Da ojuami arctangent pada (X, Y) ni awon digiri lati -180 si 180.", + "TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)", + "TEXT_TEXT_TOOLTIP": "Lẹta, ọrọ, tabi ila ọrọ.", + "TEXT_JOIN_TITLE_CREATEWITH": "ṣẹ ẹda ọrọ pẹlu", + "TEXT_JOIN_TOOLTIP": "Ṣẹda ọrọ kan nipa ṣiṣepọ gbogbo awọn ohun kan.", + "TEXT_CREATE_JOIN_TITLE_JOIN": "darapọ", + "TEXT_CREATE_JOIN_TOOLTIP": "Fikun, yọ kuro, tabi ṣe atunṣe awọn apakan lati se atunkọ ọrọ bulooku yii.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ṣe afikun nkan si ọrọ naa.", + "TEXT_APPEND_TITLE": "si %1 fikun ọrọ %2", + "TEXT_APPEND_TOOLTIP": "Ṣe afikun awon ọrọ oniruru '%1'.", + "TEXT_LENGTH_TITLE": "Gigun ti %1", + "TEXT_LENGTH_TOOLTIP": "Da nọmba awọn lẹta pada (pẹlu awọn alafo) ninu ọrọ ti a pese.", + "TEXT_ISEMPTY_TITLE": "%1 je isofo", + "TEXT_ISEMPTY_TOOLTIP": "Da otitọ pada ti ọrọ ti a pese ba ṣofo.", + "TEXT_INDEXOF_TOOLTIP": "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri.", + "TEXT_INDEXOF_TITLE": "ninu %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "wa isele akọkọ ti o wa ninu ọrọ", + "TEXT_INDEXOF_OPERATOR_LAST": "wa isele igbeyin ti o wa ninu ọrọ", + "TEXT_CHARAT_TITLE": "ninu %1 %2", + "TEXT_CHARAT_FROM_START": "gba lẹta #", + "TEXT_CHARAT_FROM_END": "gba lẹta # lati opin", + "TEXT_CHARAT_FIRST": "gba lẹta akọkọ", + "TEXT_CHARAT_LAST": "gba lẹta ti o kẹhin", + "TEXT_CHARAT_RANDOM": "gba lẹta àrìnàkò", + "TEXT_CHARAT_TOOLTIP": "Da lẹta naa pada si ipo ti a ti sọ tẹlẹ.", + "TEXT_GET_SUBSTRING_TOOLTIP": "Da ipin kan pato ti ọrọ naa pada.", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ninu", + "TEXT_GET_SUBSTRING_START_FROM_START": "gba substring lati lẹta #", + "TEXT_GET_SUBSTRING_START_FROM_END": "gba substring lati lẹta # lati opin", + "TEXT_GET_SUBSTRING_START_FIRST": "gba substring lati lẹta akọkọ", + "TEXT_GET_SUBSTRING_END_FROM_START": "si lẹta #", + "TEXT_GET_SUBSTRING_END_FROM_END": "si lẹta # lati opin", + "TEXT_GET_SUBSTRING_END_LAST": "si lẹta kẹhin", + "TEXT_CHANGECASE_TOOLTIP": "aa <-> AA", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "si ALFABETI NLA", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "si alfabeti kekere", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "si Alfabeti Aarin", + "TEXT_TRIM_TOOLTIP": "Da ẹda ti ọrọ naa pada pẹlu awọn alafo miiran ti o kuro lati ọkan tabi awọn opin mejeeji.", + "TEXT_TRIM_OPERATOR_BOTH": "ge awọn alafo lati awọn igun mejeji ti", + "TEXT_TRIM_OPERATOR_LEFT": "ge awọn alafo lati apa osi ti", + "TEXT_TRIM_OPERATOR_RIGHT": "ge awọn alafo lati apa otun ti", + "TEXT_PRINT_TITLE": "tẹ ọrọ %1", + "TEXT_PRINT_TOOLTIP": "Tẹ ọrọ kan pato, nọmba tabi iye awon miiran.", + "TEXT_PROMPT_TYPE_TEXT": "kiakia fun ọrọ pẹlu ifiranṣẹ", + "TEXT_PROMPT_TYPE_NUMBER": "kiakia fun nọmba pẹlu ifiranṣẹ", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Kiakia fun olumulo fun nọmba.", + "TEXT_PROMPT_TOOLTIP_TEXT": "Kiakia fun olumulo fun awon ifiranṣẹ.", + "TEXT_COUNT_MESSAGE0": "ka %1 ni %2", + "TEXT_COUNT_TOOLTIP": "Ka iye igba diẹ ninu awọn ọrọ kan waye laarin awọn ọrọ miiran.", + "TEXT_REPLACE_MESSAGE0": "Ṣe iropọ %1 pelu %2 in %3", + "TEXT_REPLACE_TOOLTIP": "Ṣe iropo gbogbo awọn iṣẹlẹ ti o sele ninu awọn ọrọ laarin awọn ọrọ miiran.", + "TEXT_REVERSE_MESSAGE0": "Ṣe iyipada %1", + "TEXT_REVERSE_TOOLTIP": "Ṣe iyipada aṣẹ awọn ohun kikọ inu ọrọ naa.", + "LISTS_CREATE_EMPTY_TITLE": "Ṣẹda akojọ aṣayan tio ṣofo", + "LISTS_CREATE_EMPTY_TOOLTIP": "Da akojọ pada, ti gigun 0, ko ni awon akosile alaye", + "LISTS_CREATE_WITH_TOOLTIP": "Ṣẹda akojọ pẹlu nọmba eyikeyi ti awọn akojo.", + "LISTS_CREATE_WITH_INPUT_WITH": "ṣẹda akojọ", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "akojọ", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Fikun, yọ, tabi yọ, tunṣe awọn apakan lati akojọ bulooku yii.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Fi nkan kun akojọ.", + "LISTS_REPEAT_TOOLTIP": "Ṣẹda akojọ kan ti o wa fun iye tun nọmba kan pato ti akoko ti a ti yan.", + "LISTS_REPEAT_TITLE": "ṣẹda akojọ pẹlu nkan %1 tun ṣe %2 igba", + "LISTS_LENGTH_TITLE": "gigun ti %1", + "LISTS_LENGTH_TOOLTIP": "Da gigun ti akojo pada.", + "LISTS_ISEMPTY_TITLE": "%1 je ofo", + "LISTS_ISEMPTY_TOOLTIP": "Da otitọ pada nigbati akojọ ba ṣofo.", + "LISTS_INLIST": "ni akojọ", + "LISTS_INDEX_OF_FIRST": "wa awon nkan akọkọ ti o sele", + "LISTS_INDEX_OF_LAST": "wa iṣẹlẹ ti o kẹhin ti akojọ", + "LISTS_INDEX_OF_TOOLTIP": "Da atọka ti akọkọ / iṣẹlẹ to kẹhin ti akojọ. Da %1 akojọ pada ti o ko ba ri.", + "LISTS_GET_INDEX_GET": "gba", + "LISTS_GET_INDEX_GET_REMOVE": "gba ati yọ", + "LISTS_GET_INDEX_REMOVE": "yọ", + "LISTS_GET_INDEX_FROM_END": "# lati opin", + "LISTS_GET_INDEX_FIRST": "àkọ́kọ́", + "LISTS_GET_INDEX_LAST": "tógbẹ̀yìn", + "LISTS_GET_INDEX_RANDOM": "àrìnàkò", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 jẹ ohun akọkọ.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 jẹ ohun ti o kẹhin.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Returns the item at the specified position in a list.", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Da akojọ akọkọ pada.", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Da akojọ ti o kẹhin pada.", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Da ohun àrìnàkò kan pada ninu akojọ", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Yọ ki o si da akojọ kuro ni akọkọ pada.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Yọ ki o si da akojọ ti o kẹhin pada", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Yọ ki o si da akojọ ti o kẹhin àrìnàkò pada", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Yọ ki o si da akojọ naa pada kuro ni ipo kan pato ti o wa.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Da akojọ akọkọ pada.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Da akojọ ti o kẹhin pada.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Da ohun àrìnàkò kan pada ninu akojọ", + "LISTS_SET_INDEX_SET": "ṣeto", + "LISTS_SET_INDEX_INSERT": "fi sii ni", + "LISTS_SET_INDEX_INPUT_TO": "bii", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "Ṣeto ohun akọkọ sii ipo kan pato ti a ti yan ni akojọ.", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Fi ohun kan sii ni ibẹrẹ akojọ.", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Fi ohun kan kun si opin akojọ.", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Fi ohun kan kun si àrìnàkò akojọ.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Fi ohun kan sii ipo kan pato ti a ti yan ni akojọ.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Fi ohun kan sii ni ibẹrẹ akojọ.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Fi ohun kan kun si opin akojọ.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Fi ohun kan kun si àrìnàkò akojọ.", + "LISTS_GET_SUBLIST_START_FROM_START": "gba ipin -akojọ lati #", + "LISTS_GET_SUBLIST_START_FROM_END": "gba ipin -akojọ lati # lati opin", + "LISTS_GET_SUBLIST_START_FIRST": "gba ipin -akojọ lati akọkọ", + "LISTS_GET_SUBLIST_END_FROM_START": "sii #", + "LISTS_GET_SUBLIST_END_FROM_END": "sii # lati opin", + "LISTS_GET_SUBLIST_END_LAST": "sii opin", + "LISTS_GET_SUBLIST_TOOLTIP": "Ṣẹda ẹda ti apa kan ti o wa ninu akojọ.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "to %1 %2 %3", + "LISTS_SORT_TOOLTIP": "To ẹda akojọ lẹsẹẹsẹ.", + "LISTS_SORT_ORDER_ASCENDING": "si oke", + "LISTS_SORT_ORDER_DESCENDING": "si isalẹ", + "LISTS_SORT_TYPE_NUMERIC": "awọn nọmba", + "LISTS_SORT_TYPE_TEXT": "awon alfabeti", + "LISTS_SORT_TYPE_IGNORECASE": "awon alfabeti, fojufo irufe", + "LISTS_SPLIT_LIST_FROM_TEXT": "ṣe akojọ lati inu ọrọ", + "LISTS_SPLIT_TEXT_FROM_LIST": "ṣe ọrọ lati akojọ", + "LISTS_SPLIT_WITH_DELIMITER": "pẹlu dẹlimita", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Pin ọrọ sinu akojọ awọn ọrọ kan, fọ ni dẹlimita kọọkan.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Darapọ mọ akojọ awọn ọrọ sinu ọrọ kan, ti a pin nipase delimita.", + "LISTS_REVERSE_MESSAGE0": "Ṣe iyipada %1", + "LISTS_REVERSE_TOOLTIP": "Ṣe iyipada ẹda ti akojọ kan.", + "VARIABLES_GET_TOOLTIP": "Da iye orisirisi yii pada.", + "VARIABLES_GET_CREATE_SET": "Ṣe idasile 'ṣeto %1'", + "VARIABLES_SET": "ṣeto %1 sii %2", + "VARIABLES_SET_TOOLTIP": "Ṣeto oniruru yii lati je bakanna sii igbasilẹ.", + "VARIABLES_SET_CREATE_GET": "Ṣe idasile 'gba %1'", + "PROCEDURES_DEFNORETURN_TITLE": "sii", + "PROCEDURES_DEFNORETURN_PROCEDURE": "Ṣe awon alaye ni igba pupo.", + "PROCEDURES_BEFORE_PARAMS": "pẹlu:", + "PROCEDURES_CALL_BEFORE_PARAMS": "pẹlu:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Ṣẹda iṣẹ kan lai si iṣagbejade.", + "PROCEDURES_DEFNORETURN_COMMENT": "Ṣe apejuwe iṣẹ yii...", + "PROCEDURES_DEFRETURN_RETURN": "tun tẹ", + "PROCEDURES_DEFRETURN_TOOLTIP": "Ṣẹda iṣẹ pẹlu iṣagbejade kan.", + "PROCEDURES_ALLOW_STATEMENTS": "gba alaye laaye", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Ikilo: Isẹ yii ni awọn ẹda odiwọn.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Ṣe ṣalaye-iṣẹ ti olumulo '%1'.", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_TOOLTIP": "Ṣe ṣalaye-iṣẹ ti olumulo '%1' kii o sii lo iṣagbejade rẹ.", + "PROCEDURES_MUTATORCONTAINER_TITLE": "igbewọle", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Fikun, yọ kuro, tabi tun beere awọn igbewọle si iṣẹ yii.", + "PROCEDURES_MUTATORARG_TITLE": "igbewọle orukọ:", + "PROCEDURES_MUTATORARG_TOOLTIP": "Ṣe afikun kan sii igbewọle si iṣẹ yii.", + "PROCEDURES_HIGHLIGHT_DEF": "Ṣafihan iṣẹ isọtunmọ", + "PROCEDURES_CREATE_DO": "Ṣe idasile '%1'", + "PROCEDURES_IFRETURN_TOOLTIP": "Ti iye ba jẹ otitọ, lẹhinna da iye keji pada.", + "PROCEDURES_IFRETURN_WARNING": "Ikilo: Bulọọki yii le ṣee lo nikan laarin itumọ iṣẹ kan", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Sọ nkankan...", + "DIALOG_OK": "O DARA", + "DIALOG_CANCEL": "Fagilé" +} diff --git a/msg/json/yue.json b/msg/json/yue.json index cbf201513ca..f8909a64d29 100644 --- a/msg/json/yue.json +++ b/msg/json/yue.json @@ -1,19 +1,19 @@ -{ - "@metadata": { - "authors": [ - "Ajeje Brazorf", - "Hello903hello", - "Liuxinyu970226", - "Moon0319" - ] - }, - "TODAY": "今日", - "HELP": "幫手", - "UNDO": "還原", - "REDO": "復原", - "COLOUR_PICKER_HELPURL": "https://zh-yue.wikipedia.org/wiki/色", - "CONTROLS_REPEAT_HELPURL": "https://zh-yue.wikipedia.org/wiki/For_迴圈", - "LISTS_GET_INDEX_RANDOM": "是但", - "DIALOG_OK": "仲可以", - "DIALOG_CANCEL": "取消" -} +{ + "@metadata": { + "authors": [ + "Ajeje Brazorf", + "Hello903hello", + "Liuxinyu970226", + "Moon0319" + ] + }, + "TODAY": "今日", + "HELP": "幫手", + "UNDO": "還原", + "REDO": "復原", + "COLOUR_PICKER_HELPURL": "https://zh-yue.wikipedia.org/wiki/色", + "CONTROLS_REPEAT_HELPURL": "https://zh-yue.wikipedia.org/wiki/For_迴圈", + "LISTS_GET_INDEX_RANDOM": "是但", + "DIALOG_OK": "仲可以", + "DIALOG_CANCEL": "取消" +} diff --git a/msg/json/zgh.json b/msg/json/zgh.json index 8d5a525bb53..83d8814473a 100644 --- a/msg/json/zgh.json +++ b/msg/json/zgh.json @@ -1,94 +1,94 @@ -{ - "@metadata": { - "authors": [ - "Amara-Amaziɣ", - "Aslmad mohamed belarhzali", - "Brahim-essaidi", - "Hakim1bal" - ] - }, - "VARIABLES_DEFAULT_NAME": "ⴰⴼⵔⴷⵉⵙ", - "UNNAMED_KEY": "ⴰⵔⵉⵙⵎ", - "TODAY": "ⴰⵙⵙⴰ", - "ADD_COMMENT": "ⵔⵏⵓ ⴰⵅⴼⴰⵡⴰⵍ", - "REMOVE_COMMENT": "ⴽⴽⵙ ⴰⵅⴼⴰⵡⴰⵍ", - "DELETE_BLOCK": "ⴽⴽⵙ ⴰⴱⵍⵓⴽ", - "DELETE_X_BLOCKS": "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ", - "DELETE_ALL_BLOCKS": "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ ⵎⴰⵕⵕⴰ?", - "HELP": "ⵜⵉⵡⵉⵙⵉ", - "UNDO": "ⵙⵔ", - "REDO": "ⴰⵍⵙ", - "CHANGE_VALUE_TITLE": "ⵙⵏⴼⵍ ⴰⵣⴰⵍ:", - "RENAME_VARIABLE": "ⵙⵏⴼⵍ ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ...", - "RENAME_VARIABLE_TITLE": "ⵙⵏⴼⵍ ⵉⵎⵙⴽⵉⵍⵏ ⴰⴽⴽ '%1' ⵖⵔ:", - "NEW_VARIABLE": "ⵙⴽⵔ ⴰⵎⵙⴽⵉⵍ...", - "NEW_NUMBER_VARIABLE": "ⵙⴽⵔ ⴰⵎⴹⴰⵏ ⴰⵎⵙⴽⵉⵍ...", - "NEW_COLOUR_VARIABLE": "ⵙⴽⵔ ⴰⴽⵍⵓ ⴰⵎⵙⴽⵉⵍ...", - "NEW_VARIABLE_TYPE_TITLE": "ⴰⵏⴰⵡ ⴰⵎⴰⵢⵏⵓ ⵏ ⵓⵎⵙⴽⵉⵍ:", - "NEW_VARIABLE_TITLE": "ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ ⴰⵎⴰⵢⵏⵓ:", - "DELETE_VARIABLE": "ⴽⴽⵙ ⴰⵎⵙⴽⵉⵍ '%1'", - "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", - "COLOUR_RGB_TITLE": "ⴽⵍⵓ ⵙ", - "COLOUR_RGB_RED": "ⴰⵣⴳⴳⵯⴰⵖ", - "COLOUR_RGB_GREEN": "ⴰⵣⴳⵣⴰ", - "COLOUR_RGB_BLUE": "ⴰⵏⵉⵍⵉ", - "COLOUR_RGB_TOOLTIP": "ⴰⵣⴰⵍⵏ ⵉⴼⵓⴽⴽ ⴰⴷ ⵉⵍⵉⵏ ⴳⵔ 0 ⴷ 100.", - "COLOUR_BLEND_TITLE": "ⵙⵎⵔⴽⵙ", - "COLOUR_BLEND_COLOUR1": "ⴰⴽⵍⵓ 1", - "COLOUR_BLEND_COLOUR2": "ⴰⴽⵍⵓ 2", - "COLOUR_BLEND_RATIO": "ⴰⵙⵙⴰⵖ", - "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", - "CONTROLS_REPEAT_TITLE": "ⴰⵍⵙ %1 ⵜⵉⴽⴽⴰⵍ", - "CONTROLS_REPEAT_INPUT_DO": "ⴳ", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ⴰⵍⵙ ⴰⴷⴷⴰⴳ", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ⴰⵍⵙ ⴰⵔⴷ", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ⴽⵓⴷ ⵉⴷⵜⵜⴰ ⵡⴰⵣⴰⵍ, ⵙⵙⵍⴽⵎ ⴽⵔⴰ ⵏ ⵡⴰⵏⴰⴹⵏ.", - "CONTROLS_IF_MSG_IF": "ⵎⴽ", - "CONTROLS_IF_MSG_ELSEIF": "ⵉⵙ", - "CONTROLS_IF_MSG_ELSE": "ⵎⴽ ⴷ ⵓⵀⵓ", - "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", - "LOGIC_OPERATION_AND": "ⴷ", - "LOGIC_OPERATION_OR": "ⵏⵖ", - "LOGIC_NEGATE_TITLE": "ⵓⵔ ⴷ %1", - "LOGIC_BOOLEAN_TRUE": "ⴰⵎⵉⴷⵉ", - "LOGIC_BOOLEAN_FALSE": "ⴰⵔⵎⵉⴷⵉ", - "LOGIC_NULL": "ⵢⵓⵔⴰ", - "LOGIC_TERNARY_CONDITION": "ⴰⵔⵎ", - "LOGIC_TERNARY_IF_TRUE": "ⵎⴽ ⵉⴷⵜⵜⴰ", - "LOGIC_TERNARY_IF_FALSE": "ⵎⴽ ⵓⵔ ⵉⴷⵜⵜⵉ", - "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", - "MATH_NUMBER_TOOLTIP": "ⴽⵔⴰ ⵏ ⵓⵎⴹⴰⵏ.", - "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", - "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", - "MATH_CHANGE_TITLE": "ⵙⵏⴼⵍ %1 ⵙ %2", - "MATH_CHANGE_TOOLTIP": "ⵔⵏⵓ ⵢⴰⵏ ⵓⵎⴹⴰⵏ ⵖⵔ ⵓⵎⵙⴽⵉⵍ '%1'", - "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", - "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 ⵙⴳ X:%1 Y:%2", - "TEXT_JOIN_TITLE_CREATEWITH": "ⵙⵏⴼⵍⵓⵍ ⴰⴹⵕⵉⵚ ⵙ", - "TEXT_CREATE_JOIN_TITLE_JOIN": "ⵍⴽⵎ", - "TEXT_LENGTH_TITLE": "ⵜⵉⵖⵣⵉ ⵏ %1", - "TEXT_INDEXOF_TITLE": "ⴳ ⵓⴹⵕⵉⵚ %1 %2 %3", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ⴳ ⵓⴹⵕⵉⵚ", - "TEXT_GET_SUBSTRING_END_LAST": "ⴰⵔ ⴰⵙⴽⴽⵉⵍ ⴰⵏⴳⴳⴰⵔⵓ", - "LISTS_LENGTH_TITLE": "ⵜⵉⵖⵣⵉ ⵏ %1", - "LISTS_INLIST": "ⴳ ⵜⵍⴳⴰⵎⵜ", - "LISTS_GET_INDEX_REMOVE": "ⵙⵉⵜⵜⵢ", - "LISTS_GET_INDEX_FROM_END": "# ⵙⴳ ⵜⵉⴳⵉⵔⴰ", - "LISTS_GET_INDEX_FIRST": "ⴰⵎⵣⵡⴰⵔⵓ", - "LISTS_GET_INDEX_LAST": "ⴰⵎⴳⴳⴰⵔⵓ", - "LISTS_SET_INDEX_INPUT_TO": "ⴰⵎ", - "LISTS_GET_SUBLIST_END_FROM_START": "ⴰⵔ #", - "LISTS_GET_SUBLIST_END_LAST": "ⴰⵔ ⵜⴳⵉⵔⴰ", - "LISTS_SORT_TYPE_NUMERIC": "ⴰⵎⵓⵟⵟⵓⵏ", - "PROCEDURES_DEFNORETURN_TITLE": "ⵉ", - "PROCEDURES_DEFNORETURN_PROCEDURE": "ⴳ ⴽⵔⴰ", - "PROCEDURES_BEFORE_PARAMS": "ⵙ:", - "PROCEDURES_CALL_BEFORE_PARAMS": "ⵙ:", - "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_MUTATORARG_TOOLTIP": "ⵔⵏⵓ ⴰⵏⴽⵛⴰⵎ ⵖⵔ ⵜⵙⵖⵏⵜ.", - "DIALOG_OK": "ⵡⴰⵅⵅⴰ", - "DIALOG_CANCEL": "ⵙⵔ" -} +{ + "@metadata": { + "authors": [ + "Amara-Amaziɣ", + "Aslmad mohamed belarhzali", + "Brahim-essaidi", + "Hakim1bal" + ] + }, + "VARIABLES_DEFAULT_NAME": "ⴰⴼⵔⴷⵉⵙ", + "UNNAMED_KEY": "ⴰⵔⵉⵙⵎ", + "TODAY": "ⴰⵙⵙⴰ", + "ADD_COMMENT": "ⵔⵏⵓ ⴰⵅⴼⴰⵡⴰⵍ", + "REMOVE_COMMENT": "ⴽⴽⵙ ⴰⵅⴼⴰⵡⴰⵍ", + "DELETE_BLOCK": "ⴽⴽⵙ ⴰⴱⵍⵓⴽ", + "DELETE_X_BLOCKS": "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ", + "DELETE_ALL_BLOCKS": "ⴽⴽⵙ %1 ⵉⴱⵍⵓⴽⵏ ⵎⴰⵕⵕⴰ?", + "HELP": "ⵜⵉⵡⵉⵙⵉ", + "UNDO": "ⵙⵔ", + "REDO": "ⴰⵍⵙ", + "CHANGE_VALUE_TITLE": "ⵙⵏⴼⵍ ⴰⵣⴰⵍ:", + "RENAME_VARIABLE": "ⵙⵏⴼⵍ ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ...", + "RENAME_VARIABLE_TITLE": "ⵙⵏⴼⵍ ⵉⵎⵙⴽⵉⵍⵏ ⴰⴽⴽ '%1' ⵖⵔ:", + "NEW_VARIABLE": "ⵙⴽⵔ ⴰⵎⵙⴽⵉⵍ...", + "NEW_NUMBER_VARIABLE": "ⵙⴽⵔ ⴰⵎⴹⴰⵏ ⴰⵎⵙⴽⵉⵍ...", + "NEW_COLOUR_VARIABLE": "ⵙⴽⵔ ⴰⴽⵍⵓ ⴰⵎⵙⴽⵉⵍ...", + "NEW_VARIABLE_TYPE_TITLE": "ⴰⵏⴰⵡ ⴰⵎⴰⵢⵏⵓ ⵏ ⵓⵎⵙⴽⵉⵍ:", + "NEW_VARIABLE_TITLE": "ⵉⵙⵎ ⵏ ⵓⵎⵙⴽⵉⵍ ⴰⵎⴰⵢⵏⵓ:", + "DELETE_VARIABLE": "ⴽⴽⵙ ⴰⵎⵙⴽⵉⵍ '%1'", + "COLOUR_PICKER_HELPURL": "https://en.wikipedia.org/wiki/Color", + "COLOUR_RGB_TITLE": "ⴽⵍⵓ ⵙ", + "COLOUR_RGB_RED": "ⴰⵣⴳⴳⵯⴰⵖ", + "COLOUR_RGB_GREEN": "ⴰⵣⴳⵣⴰ", + "COLOUR_RGB_BLUE": "ⴰⵏⵉⵍⵉ", + "COLOUR_RGB_TOOLTIP": "ⴰⵣⴰⵍⵏ ⵉⴼⵓⴽⴽ ⴰⴷ ⵉⵍⵉⵏ ⴳⵔ 0 ⴷ 100.", + "COLOUR_BLEND_TITLE": "ⵙⵎⵔⴽⵙ", + "COLOUR_BLEND_COLOUR1": "ⴰⴽⵍⵓ 1", + "COLOUR_BLEND_COLOUR2": "ⴰⴽⵍⵓ 2", + "COLOUR_BLEND_RATIO": "ⴰⵙⵙⴰⵖ", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_TITLE": "ⴰⵍⵙ %1 ⵜⵉⴽⴽⴰⵍ", + "CONTROLS_REPEAT_INPUT_DO": "ⴳ", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "ⴰⵍⵙ ⴰⴷⴷⴰⴳ", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "ⴰⵍⵙ ⴰⵔⴷ", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "ⴽⵓⴷ ⵉⴷⵜⵜⴰ ⵡⴰⵣⴰⵍ, ⵙⵙⵍⴽⵎ ⴽⵔⴰ ⵏ ⵡⴰⵏⴰⴹⵏ.", + "CONTROLS_IF_MSG_IF": "ⵎⴽ", + "CONTROLS_IF_MSG_ELSEIF": "ⵉⵙ", + "CONTROLS_IF_MSG_ELSE": "ⵎⴽ ⴷ ⵓⵀⵓ", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", + "LOGIC_OPERATION_AND": "ⴷ", + "LOGIC_OPERATION_OR": "ⵏⵖ", + "LOGIC_NEGATE_TITLE": "ⵓⵔ ⴷ %1", + "LOGIC_BOOLEAN_TRUE": "ⴰⵎⵉⴷⵉ", + "LOGIC_BOOLEAN_FALSE": "ⴰⵔⵎⵉⴷⵉ", + "LOGIC_NULL": "ⵢⵓⵔⴰ", + "LOGIC_TERNARY_CONDITION": "ⴰⵔⵎ", + "LOGIC_TERNARY_IF_TRUE": "ⵎⴽ ⵉⴷⵜⵜⴰ", + "LOGIC_TERNARY_IF_FALSE": "ⵎⴽ ⵓⵔ ⵉⴷⵜⵜⵉ", + "MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number", + "MATH_NUMBER_TOOLTIP": "ⴽⵔⴰ ⵏ ⵓⵎⴹⴰⵏ.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Arithmetic", + "MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions", + "MATH_CHANGE_TITLE": "ⵙⵏⴼⵍ %1 ⵙ %2", + "MATH_CHANGE_TOOLTIP": "ⵔⵏⵓ ⵢⴰⵏ ⵓⵎⴹⴰⵏ ⵖⵔ ⵓⵎⵙⴽⵉⵍ '%1'", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_ATAN2_HELPURL": "https://en.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "atan2 ⵙⴳ X:%1 Y:%2", + "TEXT_JOIN_TITLE_CREATEWITH": "ⵙⵏⴼⵍⵓⵍ ⴰⴹⵕⵉⵚ ⵙ", + "TEXT_CREATE_JOIN_TITLE_JOIN": "ⵍⴽⵎ", + "TEXT_LENGTH_TITLE": "ⵜⵉⵖⵣⵉ ⵏ %1", + "TEXT_INDEXOF_TITLE": "ⴳ ⵓⴹⵕⵉⵚ %1 %2 %3", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "ⴳ ⵓⴹⵕⵉⵚ", + "TEXT_GET_SUBSTRING_END_LAST": "ⴰⵔ ⴰⵙⴽⴽⵉⵍ ⴰⵏⴳⴳⴰⵔⵓ", + "LISTS_LENGTH_TITLE": "ⵜⵉⵖⵣⵉ ⵏ %1", + "LISTS_INLIST": "ⴳ ⵜⵍⴳⴰⵎⵜ", + "LISTS_GET_INDEX_REMOVE": "ⵙⵉⵜⵜⵢ", + "LISTS_GET_INDEX_FROM_END": "# ⵙⴳ ⵜⵉⴳⵉⵔⴰ", + "LISTS_GET_INDEX_FIRST": "ⴰⵎⵣⵡⴰⵔⵓ", + "LISTS_GET_INDEX_LAST": "ⴰⵎⴳⴳⴰⵔⵓ", + "LISTS_SET_INDEX_INPUT_TO": "ⴰⵎ", + "LISTS_GET_SUBLIST_END_FROM_START": "ⴰⵔ #", + "LISTS_GET_SUBLIST_END_LAST": "ⴰⵔ ⵜⴳⵉⵔⴰ", + "LISTS_SORT_TYPE_NUMERIC": "ⴰⵎⵓⵟⵟⵓⵏ", + "PROCEDURES_DEFNORETURN_TITLE": "ⵉ", + "PROCEDURES_DEFNORETURN_PROCEDURE": "ⴳ ⴽⵔⴰ", + "PROCEDURES_BEFORE_PARAMS": "ⵙ:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ⵙ:", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", + "PROCEDURES_MUTATORARG_TOOLTIP": "ⵔⵏⵓ ⴰⵏⴽⵛⴰⵎ ⵖⵔ ⵜⵙⵖⵏⵜ.", + "DIALOG_OK": "ⵡⴰⵅⵅⴰ", + "DIALOG_CANCEL": "ⵙⵔ" +} diff --git a/msg/json/zh-hans.json b/msg/json/zh-hans.json index 4e4d60738bd..ed6be76a48f 100644 --- a/msg/json/zh-hans.json +++ b/msg/json/zh-hans.json @@ -1,375 +1,375 @@ -{ - "@metadata": { - "authors": [ - ")8", - "A Chinese Wikipedian", - "Ambeta", - "DGCK81LNN", - "Deathkon", - "Duzc2", - "Espertus", - "Htq110219891", - "Hudafu", - "Lantx", - "Liuxinyu970226", - "Luotiancheng", - "Muhaoying", - "Qiyue2001", - "Shatteredwind", - "Shimamura Sakura", - "Tonylianlong", - "WindWood", - "Xiaomingyan", - "Yfdyh000", - "佛壁灯", - "沈澄心", - "아라" - ] - }, - "VARIABLES_DEFAULT_NAME": "项目", - "UNNAMED_KEY": "未命名", - "TODAY": "今天", - "DUPLICATE_BLOCK": "复制", - "ADD_COMMENT": "添加注释", - "REMOVE_COMMENT": "删除注释", - "DUPLICATE_COMMENT": "复制注释", - "EXTERNAL_INPUTS": "外部输入", - "INLINE_INPUTS": "单行输入", - "DELETE_BLOCK": "删除块", - "DELETE_X_BLOCKS": "删除 %1 个块", - "DELETE_ALL_BLOCKS": "删除所有 %1 个块吗?", - "CLEAN_UP": "整理块", - "COLLAPSE_BLOCK": "折叠块", - "COLLAPSE_ALL": "折叠块", - "EXPAND_BLOCK": "展开块", - "EXPAND_ALL": "展开块", - "DISABLE_BLOCK": "禁用块", - "ENABLE_BLOCK": "启用块", - "HELP": "帮助", - "UNDO": "撤销", - "REDO": "重做", - "CHANGE_VALUE_TITLE": "更改值:", - "RENAME_VARIABLE": "重命名变量...", - "RENAME_VARIABLE_TITLE": "将所有“%1”变量重命名为:", - "NEW_VARIABLE": "创建变量...", - "NEW_STRING_VARIABLE": "创建字符串变量...", - "NEW_NUMBER_VARIABLE": "创建数字变量...", - "NEW_COLOUR_VARIABLE": "创建颜色变量...", - "NEW_VARIABLE_TYPE_TITLE": "新变量的类型:", - "NEW_VARIABLE_TITLE": "新变量的名称:", - "VARIABLE_ALREADY_EXISTS": "名字叫“%1”的变量已经存在了。", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "名字叫“%1”的变量已经有了另一个类型:“%2”。", - "DELETE_VARIABLE_CONFIRMATION": "要删除对变量“%2”的%1个引用吗?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "不能删除变量“%1”,因为它是函数“%2”定义的一部分", - "DELETE_VARIABLE": "删除变量“%1”", - "COLOUR_PICKER_HELPURL": "https://zh.wikipedia.org/wiki/颜色", - "COLOUR_PICKER_TOOLTIP": "从调色板中选择一种颜色。", - "COLOUR_RANDOM_TITLE": "随机颜色", - "COLOUR_RANDOM_TOOLTIP": "随机选择一种颜色。", - "COLOUR_RGB_TITLE": "颜色", - "COLOUR_RGB_RED": "红色", - "COLOUR_RGB_GREEN": "绿色", - "COLOUR_RGB_BLUE": "蓝色", - "COLOUR_RGB_TOOLTIP": "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。", - "COLOUR_BLEND_TITLE": "混合", - "COLOUR_BLEND_COLOUR1": "颜色1", - "COLOUR_BLEND_COLOUR2": "颜色2", - "COLOUR_BLEND_RATIO": "比例", - "COLOUR_BLEND_TOOLTIP": "把两种颜色以一个给定的比例(0.0-1.0)进行混合。", - "CONTROLS_REPEAT_HELPURL": "https://zh.wikipedia.org/wiki/For循环", - "CONTROLS_REPEAT_TITLE": "重复 %1 次", - "CONTROLS_REPEAT_INPUT_DO": "执行", - "CONTROLS_REPEAT_TOOLTIP": "多次执行一些语句。", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "当条件满足时重复", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "重复直到条件满足", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "只要值为真,就一直循环执行一些语句。", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "只要值为假,就一直循环执行一些语句。", - "CONTROLS_FOR_TOOLTIP": "用变量%1记录从开始数值到终止数值之间的数值,数值按指定间隔增加,并执行指定的块。", - "CONTROLS_FOR_TITLE": "变量 %1 从 %2 数到 %3 每次增加 %4", - "CONTROLS_FOREACH_TITLE": "遍历列表 %2 里的每一项 %1", - "CONTROLS_FOREACH_TOOLTIP": "遍历列表中的每一项,将变量“%1”设为所选项,并执行一些语句。", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "跳出循环", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "继续下一轮循环", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "跳出包含它的循环。", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "跳过本轮循环的剩余部分,并继进行续下一轮循环。", - "CONTROLS_FLOW_STATEMENTS_WARNING": "警告:这个块只能在循环内使用。", - "CONTROLS_IF_TOOLTIP_1": "如果值为真,执行一些语句。", - "CONTROLS_IF_TOOLTIP_2": "如果值为真,则执行第一块语句。否则,则执行第二块语句。", - "CONTROLS_IF_TOOLTIP_3": "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。", - "CONTROLS_IF_TOOLTIP_4": "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。", - "CONTROLS_IF_MSG_IF": "如果", - "CONTROLS_IF_MSG_ELSEIF": "否则如果", - "CONTROLS_IF_MSG_ELSE": "否则", - "CONTROLS_IF_IF_TOOLTIP": "增加、删除或重新排列各节来重新配置这个if语句块。", - "CONTROLS_IF_ELSEIF_TOOLTIP": "在这个if语句块中增加一个条件。", - "CONTROLS_IF_ELSE_TOOLTIP": "在这个if语句块中添加一个最终的,包括所有其余情况的条件。", - "LOGIC_COMPARE_HELPURL": "https://zh.wikipedia.org/wiki/不等", - "LOGIC_COMPARE_TOOLTIP_EQ": "如果两个输入结果相等,则返回真。", - "LOGIC_COMPARE_TOOLTIP_NEQ": "如果两个输入结果不相等,则返回真。", - "LOGIC_COMPARE_TOOLTIP_LT": "如果第一个输入结果比第二个小,则返回真。", - "LOGIC_COMPARE_TOOLTIP_LTE": "如果第一个输入结果小于或等于第二个输入结果,则返回真。", - "LOGIC_COMPARE_TOOLTIP_GT": "如果第一个输入结果比第二个大,则返回真。", - "LOGIC_COMPARE_TOOLTIP_GTE": "如果第一个输入结果大于或等于第二个输入结果,则返回真。", - "LOGIC_OPERATION_TOOLTIP_AND": "如果两个输入结果都为真,则返回真。", - "LOGIC_OPERATION_AND": "并且", - "LOGIC_OPERATION_TOOLTIP_OR": "如果至少有一个输入结果为真,则返回真。", - "LOGIC_OPERATION_OR": "或", - "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", - "LOGIC_NEGATE_TITLE": "非%1", - "LOGIC_NEGATE_TOOLTIP": "如果输入结果为假,则返回真;如果输入结果为真,则返回假。", - "LOGIC_BOOLEAN_TRUE": "真", - "LOGIC_BOOLEAN_FALSE": "假", - "LOGIC_BOOLEAN_TOOLTIP": "返回真或假。", - "LOGIC_NULL": "空", - "LOGIC_NULL_TOOLTIP": "返回空值。", - "LOGIC_TERNARY_HELPURL": "https://zh.wikipedia.org/wiki/条件运算符", - "LOGIC_TERNARY_CONDITION": "断言", - "LOGIC_TERNARY_IF_TRUE": "如果为真", - "LOGIC_TERNARY_IF_FALSE": "如果为假", - "LOGIC_TERNARY_TOOLTIP": "检查“断言”里的条件语句。如果条件为真,则返回“如果为真”的值,否则,则返回“如果为假”的值。", - "MATH_NUMBER_HELPURL": "https://zh.wikipedia.org/wiki/数", - "MATH_NUMBER_TOOLTIP": "一个数值。", - "MATH_ARITHMETIC_HELPURL": "https://zh.wikipedia.org/wiki/算术", - "MATH_ARITHMETIC_TOOLTIP_ADD": "返回两个数值的和。", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "返回两个数值的差。", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "返回两个数值的乘积。", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "返回两个数值的商。", - "MATH_ARITHMETIC_TOOLTIP_POWER": "返回以第一个数值为底数,以第二个数值为幂的结果。", - "MATH_SINGLE_HELPURL": "https://zh.wikipedia.org/wiki/平方根", - "MATH_SINGLE_OP_ROOT": "平方根", - "MATH_SINGLE_TOOLTIP_ROOT": "返回一个数的平方根。", - "MATH_SINGLE_OP_ABSOLUTE": "绝对值", - "MATH_SINGLE_TOOLTIP_ABS": "返回一个数值的绝对值。", - "MATH_SINGLE_TOOLTIP_NEG": "返回一个数值的相反数。", - "MATH_SINGLE_TOOLTIP_LN": "返回一个数值的自然对数。", - "MATH_SINGLE_TOOLTIP_LOG10": "返回一个数值的以10为底的对数。", - "MATH_SINGLE_TOOLTIP_EXP": "返回e的n次幂。", - "MATH_SINGLE_TOOLTIP_POW10": "返回10的n次幂。", - "MATH_TRIG_HELPURL": "https://zh.wikipedia.org/wiki/三角函数", - "MATH_TRIG_TOOLTIP_SIN": "返回指定角度的正弦值(非弧度)。", - "MATH_TRIG_TOOLTIP_COS": "返回指定角度的余弦值(非弧度)。", - "MATH_TRIG_TOOLTIP_TAN": "返回指定角度的正切值(非弧度)。", - "MATH_TRIG_TOOLTIP_ASIN": "返回一个数值的反正弦值。", - "MATH_TRIG_TOOLTIP_ACOS": "返回一个数值的反余弦值。", - "MATH_TRIG_TOOLTIP_ATAN": "返回一个数值的反正切值。", - "MATH_CONSTANT_HELPURL": "https://zh.wikipedia.org/wiki/数学常数", - "MATH_CONSTANT_TOOLTIP": "返回一个常见常量:π (3.141…)、e (2.718…)、φ (1.618…)、根号2 (1.414…)、根号二分之一 (0.707…)或∞ (无穷大)。", - "MATH_IS_EVEN": "是偶数", - "MATH_IS_ODD": "是奇数", - "MATH_IS_PRIME": "是质数", - "MATH_IS_WHOLE": "是整数", - "MATH_IS_POSITIVE": "是正数", - "MATH_IS_NEGATIVE": "是负数", - "MATH_IS_DIVISIBLE_BY": "可被整除", - "MATH_IS_TOOLTIP": "检查一个数值是否是偶数、奇数、质数、自然数、正数、负数或者是否能被某数整除。返回真或假。", - "MATH_CHANGE_HELPURL": "https://zh.wikipedia.org/wiki/加法", - "MATH_CHANGE_TITLE": "将 %1 增加 %2", - "MATH_CHANGE_TOOLTIP": "为变量“%1”增加一个数值。", - "MATH_ROUND_HELPURL": "https://zh.wikipedia.org/wiki/数值修约", - "MATH_ROUND_TOOLTIP": "数字向上或向下舍入。", - "MATH_ROUND_OPERATOR_ROUND": "四舍五入", - "MATH_ROUND_OPERATOR_ROUNDUP": "向上舍入", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "向下舍入", - "MATH_ONLIST_OPERATOR_SUM": "列表中数值的和", - "MATH_ONLIST_TOOLTIP_SUM": "返回列表中的所有数值的和。", - "MATH_ONLIST_OPERATOR_MIN": "列表最小值", - "MATH_ONLIST_TOOLTIP_MIN": "返回列表中最小值。", - "MATH_ONLIST_OPERATOR_MAX": "列表最大值", - "MATH_ONLIST_TOOLTIP_MAX": "返回列表中最大值。", - "MATH_ONLIST_OPERATOR_AVERAGE": "列表平均值", - "MATH_ONLIST_TOOLTIP_AVERAGE": "返回列表中的数值的平均值。", - "MATH_ONLIST_OPERATOR_MEDIAN": "列表中位数", - "MATH_ONLIST_TOOLTIP_MEDIAN": "返回列表中数值的中位数。", - "MATH_ONLIST_OPERATOR_MODE": "列表中的众数", - "MATH_ONLIST_TOOLTIP_MODE": "返回列表中的出现次数最多的项的列表。", - "MATH_ONLIST_OPERATOR_STD_DEV": "列表的标准差", - "MATH_ONLIST_TOOLTIP_STD_DEV": "返回列表的标准差。", - "MATH_ONLIST_OPERATOR_RANDOM": "列表中的随机一项", - "MATH_ONLIST_TOOLTIP_RANDOM": "从列表中返回一个随机的元素。", - "MATH_MODULO_HELPURL": "https://zh.wikipedia.org/wiki/模除", - "MATH_MODULO_TITLE": "取 %1 ÷ %2 的余数", - "MATH_MODULO_TOOLTIP": "返回这两个数字相除后的余数。", - "MATH_CONSTRAIN_TITLE": "将 %1 限制在 最低 %2 到最高 %3 之间", - "MATH_CONSTRAIN_TOOLTIP": "将一个数值限制在两个指定的数值范围(含边界)之间。", - "MATH_RANDOM_INT_HELPURL": "https://zh.wikipedia.org/wiki/随机数生成器", - "MATH_RANDOM_INT_TITLE": "从 %1 到 %2 范围内的随机整数", - "MATH_RANDOM_INT_TOOLTIP": "返回一个限制在两个指定数值的范围(含边界)之间的随机整数。", - "MATH_RANDOM_FLOAT_HELPURL": "https://zh.wikipedia.org/wiki/随机数生成器", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "随机小数", - "MATH_RANDOM_FLOAT_TOOLTIP": "返回一个从0.0(含)到1.0(不含)之间的随机数。", - "MATH_ATAN2_HELPURL": "https://zh.wikipedia.org/wiki/反正切2", - "MATH_ATAN2_TITLE": "点(x:%1,y:%2)的方位角", - "MATH_ATAN2_TOOLTIP": "返回点(X,Y)的反正切值,范围为-180到180度。", - "TEXT_TEXT_HELPURL": "https://zh.wikipedia.org/wiki/字符串", - "TEXT_TEXT_TOOLTIP": "一个字、词语或一行文本。", - "TEXT_JOIN_TITLE_CREATEWITH": "创建文本,内容:", - "TEXT_JOIN_TOOLTIP": "通过串起任意数量的项以建立一段文本。", - "TEXT_CREATE_JOIN_TITLE_JOIN": "拼接", - "TEXT_CREATE_JOIN_TOOLTIP": "添加、移除或重新排列各节来重新配置这个文本块。", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "将一个项添加到文本中。", - "TEXT_APPEND_TITLE": "在%1之后加上文本%2", - "TEXT_APPEND_TOOLTIP": "将一些文本追加到变量“%1”里。", - "TEXT_LENGTH_TITLE": "%1的长度", - "TEXT_LENGTH_TOOLTIP": "返回给定文本的字母数(包括空格)。", - "TEXT_ISEMPTY_TITLE": "%1是空的", - "TEXT_ISEMPTY_TOOLTIP": "如果给定的文本为空,则返回真。", - "TEXT_INDEXOF_TOOLTIP": "返回第一个文本段在第二个文本段中的第一/最后一个匹配项的起始位置。如果未找到,则返回%1。", - "TEXT_INDEXOF_TITLE": "在文本 %1 里 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "寻找第一次出现的文本", - "TEXT_INDEXOF_OPERATOR_LAST": "寻找最后一次出现的文本", - "TEXT_CHARAT_TITLE": "在文本%1 里 %2", - "TEXT_CHARAT_FROM_START": "获取第#个字符", - "TEXT_CHARAT_FROM_END": "获取倒数第#个字符", - "TEXT_CHARAT_FIRST": "获取第一个字符", - "TEXT_CHARAT_LAST": "获取最后一个字符", - "TEXT_CHARAT_RANDOM": "获取随机一个字符", - "TEXT_CHARAT_TAIL": "-", - "TEXT_CHARAT_TOOLTIP": "返回位于指定位置的字符。", - "TEXT_GET_SUBSTRING_TOOLTIP": "返回文本中指定的一部分。", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "从文本", - "TEXT_GET_SUBSTRING_START_FROM_START": "获取子串,从第#个字符", - "TEXT_GET_SUBSTRING_START_FROM_END": "获取子串,从倒数第#个字符", - "TEXT_GET_SUBSTRING_START_FIRST": "获取子串,从第一个字符", - "TEXT_GET_SUBSTRING_END_FROM_START": "到第#个字符", - "TEXT_GET_SUBSTRING_END_FROM_END": "到倒数第#个字符", - "TEXT_GET_SUBSTRING_END_LAST": "到最后一个字符", - "TEXT_GET_SUBSTRING_TAIL": "-", - "TEXT_CHANGECASE_TOOLTIP": "用不同的大小写模式复制并返回这段文字。", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "转为大写", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "转为小写", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "转为首字母大写", - "TEXT_TRIM_TOOLTIP": "从某一端或同时从两端删除多余的空白,并返回这段文字的一个副本。", - "TEXT_TRIM_OPERATOR_BOTH": "消除其两侧的空白", - "TEXT_TRIM_OPERATOR_LEFT": "消除其左侧的空白", - "TEXT_TRIM_OPERATOR_RIGHT": "消除其右侧的空白", - "TEXT_PRINT_TITLE": "输出%1", - "TEXT_PRINT_TOOLTIP": "输出指定的文字、数字或其他值。", - "TEXT_PROMPT_TYPE_TEXT": "要求输入文本,并显示提示消息", - "TEXT_PROMPT_TYPE_NUMBER": "要求输入数字,并显示提示消息", - "TEXT_PROMPT_TOOLTIP_NUMBER": "要求用户输入数字。", - "TEXT_PROMPT_TOOLTIP_TEXT": "要求用户输入一些文本。", - "TEXT_COUNT_MESSAGE0": "计算%1在%2里出现的次数", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "计算在一段文本中,某个部分文本重复出现了多少次。", - "TEXT_REPLACE_MESSAGE0": "把%3中的%1替换为%2", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "在一段文本中,将出现过的某部分文本都替换掉。", - "TEXT_REVERSE_MESSAGE0": "倒转文本%1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "将文本中各个字符的顺序倒转。", - "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", - "LISTS_CREATE_EMPTY_TITLE": "创建空列表", - "LISTS_CREATE_EMPTY_TOOLTIP": "返回一个列表,长度为 0,不包含任何数据记录", - "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", - "LISTS_CREATE_WITH_TOOLTIP": "建立一个具有任意数量项目的列表。", - "LISTS_CREATE_WITH_INPUT_WITH": "创建列表,内容:", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "列表", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "增加、删除或重新排列各部分以此重新配置这个列表块。", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "将一个项添加到列表中。", - "LISTS_REPEAT_TOOLTIP": "建立包含指定重复次数的值的列表。", - "LISTS_REPEAT_TITLE": "建立列表使用项 %1 重复 %2 次", - "LISTS_LENGTH_TITLE": "%1的长度", - "LISTS_LENGTH_TOOLTIP": "返回列表的长度。", - "LISTS_ISEMPTY_TITLE": "%1是空的", - "LISTS_ISEMPTY_TOOLTIP": "如果改列表为空,则返回真。", - "LISTS_INLIST": "在列表中", - "LISTS_INDEX_OF_FIRST": "寻找第一次出现的项", - "LISTS_INDEX_OF_LAST": "寻找最后一次出现的项", - "LISTS_INDEX_OF_TOOLTIP": "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。", - "LISTS_GET_INDEX_GET": "取得", - "LISTS_GET_INDEX_GET_REMOVE": "取得并移除", - "LISTS_GET_INDEX_REMOVE": "移除", - "LISTS_GET_INDEX_FROM_START": "#", - "LISTS_GET_INDEX_FROM_END": "倒数第#项", - "LISTS_GET_INDEX_FIRST": "第一项", - "LISTS_GET_INDEX_LAST": "最后一项", - "LISTS_GET_INDEX_RANDOM": "随机的一项", - "LISTS_GET_INDEX_TAIL": "-", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1是第一项。", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1是最后一项。", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "返回在列表中的指定位置的项。", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "返回列表中的第一项。", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "返回列表中的最后一项。", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "返回列表中的随机一项。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "移除并返回列表中的指定位置的项。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "移除并返回列表中的第一项。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "移除并返回列表中的最后一项。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "移除并返回列表中的随机一项。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "移除在列表中的指定位置的项。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "移除列表中的第一项", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "移除列表中的最后一项", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "删除列表中的随机一项。", - "LISTS_SET_INDEX_SET": "设置", - "LISTS_SET_INDEX_INSERT": "插入在", - "LISTS_SET_INDEX_INPUT_TO": "值为", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "设置在列表中指定位置的项。", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "设置列表中的第一项。", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "设置列表中的最后一项。", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "设置列表中的随机一项。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "在列表中指定位置插入项。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "在列表的起始处添加该项。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "在列表的末尾处添加该项。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "在列表的随机位置插入该项。", - "LISTS_GET_SUBLIST_START_FROM_START": "获取子列表,从第#项", - "LISTS_GET_SUBLIST_START_FROM_END": "获取子列表,从倒数第#项", - "LISTS_GET_SUBLIST_START_FIRST": "获取子列表,从第一项", - "LISTS_GET_SUBLIST_END_FROM_START": "到第#项", - "LISTS_GET_SUBLIST_END_FROM_END": "到倒数第#项", - "LISTS_GET_SUBLIST_END_LAST": "到最后一项", - "LISTS_GET_SUBLIST_TAIL": "-", - "LISTS_GET_SUBLIST_TOOLTIP": "复制列表中指定的部分。", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "排序%1 %2 %3", - "LISTS_SORT_TOOLTIP": "排序一个列表,返回副本。", - "LISTS_SORT_ORDER_ASCENDING": "升序", - "LISTS_SORT_ORDER_DESCENDING": "降序", - "LISTS_SORT_TYPE_NUMERIC": "按数字", - "LISTS_SORT_TYPE_TEXT": "按字母", - "LISTS_SORT_TYPE_IGNORECASE": "按字母(忽略大小写)", - "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", - "LISTS_SPLIT_LIST_FROM_TEXT": "从文本制作列表", - "LISTS_SPLIT_TEXT_FROM_LIST": "将列表合并为文本", - "LISTS_SPLIT_WITH_DELIMITER": "分隔符:", - "LISTS_SPLIT_TOOLTIP_SPLIT": "将文本按指定的分隔符拆分为文本组成的列表。", - "LISTS_SPLIT_TOOLTIP_JOIN": "加入文本列表至一个文本,由分隔符分隔。", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "倒转%1", - "LISTS_REVERSE_TOOLTIP": "倒转一个列表,返回副本。", - "ORDINAL_NUMBER_SUFFIX": "-", - "VARIABLES_GET_TOOLTIP": "返回此变量的值。", - "VARIABLES_GET_CREATE_SET": "创建“设定%1”", - "VARIABLES_SET": "赋值 %1 为 %2", - "VARIABLES_SET_TOOLTIP": "设置此变量,以使它和输入值相等。", - "VARIABLES_SET_CREATE_GET": "创建“获得%1”", - "PROCEDURES_DEFNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序", - "PROCEDURES_DEFNORETURN_TITLE": "至", - "PROCEDURES_DEFNORETURN_PROCEDURE": "做点什么", - "PROCEDURES_BEFORE_PARAMS": "与:", - "PROCEDURES_CALL_BEFORE_PARAMS": "与:", - "PROCEDURES_DEFNORETURN_DO": "-", - "PROCEDURES_DEFNORETURN_TOOLTIP": "创建一个不带输出值的函数。", - "PROCEDURES_DEFNORETURN_COMMENT": "描述该功能...", - "PROCEDURES_DEFRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序", - "PROCEDURES_DEFRETURN_RETURN": "返回", - "PROCEDURES_DEFRETURN_TOOLTIP": "创建一个有输出值的函数。", - "PROCEDURES_ALLOW_STATEMENTS": "允许声明", - "PROCEDURES_DEF_DUPLICATE_WARNING": "警告:此函数具有重复参数。", - "PROCEDURES_CALLNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序", - "PROCEDURES_CALLNORETURN_TOOLTIP": "运行用户定义的函数“%1”。", - "PROCEDURES_CALLRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序", - "PROCEDURES_CALLRETURN_TOOLTIP": "运行用户定义的函数“%1”,并使用它的输出值。", - "PROCEDURES_MUTATORCONTAINER_TITLE": "输入", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "添加、移除或重新排此函数的输入。", - "PROCEDURES_MUTATORARG_TITLE": "输入名称:", - "PROCEDURES_MUTATORARG_TOOLTIP": "添加函数输入。", - "PROCEDURES_HIGHLIGHT_DEF": "突出显示函数定义", - "PROCEDURES_CREATE_DO": "创建“%1”", - "PROCEDURES_IFRETURN_TOOLTIP": "如果值为真,则返回第二个值。", - "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "警告:这个块只能在函数内部使用。", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "说点什么...", - "WORKSPACE_ARIA_LABEL": "Blockly工作区", - "COLLAPSED_WARNINGS_WARNING": "已收起的信息块内包含警告。", - "DIALOG_OK": "确认", - "DIALOG_CANCEL": "取消" -} +{ + "@metadata": { + "authors": [ + ")8", + "A Chinese Wikipedian", + "Ambeta", + "DGCK81LNN", + "Deathkon", + "Duzc2", + "Espertus", + "Htq110219891", + "Hudafu", + "Lantx", + "Liuxinyu970226", + "Luotiancheng", + "Muhaoying", + "Qiyue2001", + "Shatteredwind", + "Shimamura Sakura", + "Tonylianlong", + "WindWood", + "Xiaomingyan", + "Yfdyh000", + "佛壁灯", + "沈澄心", + "아라" + ] + }, + "VARIABLES_DEFAULT_NAME": "项目", + "UNNAMED_KEY": "未命名", + "TODAY": "今天", + "DUPLICATE_BLOCK": "复制", + "ADD_COMMENT": "添加注释", + "REMOVE_COMMENT": "删除注释", + "DUPLICATE_COMMENT": "复制注释", + "EXTERNAL_INPUTS": "外部输入", + "INLINE_INPUTS": "单行输入", + "DELETE_BLOCK": "删除块", + "DELETE_X_BLOCKS": "删除 %1 个块", + "DELETE_ALL_BLOCKS": "删除所有 %1 个块吗?", + "CLEAN_UP": "整理块", + "COLLAPSE_BLOCK": "折叠块", + "COLLAPSE_ALL": "折叠块", + "EXPAND_BLOCK": "展开块", + "EXPAND_ALL": "展开块", + "DISABLE_BLOCK": "禁用块", + "ENABLE_BLOCK": "启用块", + "HELP": "帮助", + "UNDO": "撤销", + "REDO": "重做", + "CHANGE_VALUE_TITLE": "更改值:", + "RENAME_VARIABLE": "重命名变量...", + "RENAME_VARIABLE_TITLE": "将所有“%1”变量重命名为:", + "NEW_VARIABLE": "创建变量...", + "NEW_STRING_VARIABLE": "创建字符串变量...", + "NEW_NUMBER_VARIABLE": "创建数字变量...", + "NEW_COLOUR_VARIABLE": "创建颜色变量...", + "NEW_VARIABLE_TYPE_TITLE": "新变量的类型:", + "NEW_VARIABLE_TITLE": "新变量的名称:", + "VARIABLE_ALREADY_EXISTS": "名字叫“%1”的变量已经存在了。", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "名字叫“%1”的变量已经有了另一个类型:“%2”。", + "DELETE_VARIABLE_CONFIRMATION": "要删除对变量“%2”的%1个引用吗?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "不能删除变量“%1”,因为它是函数“%2”定义的一部分", + "DELETE_VARIABLE": "删除变量“%1”", + "COLOUR_PICKER_HELPURL": "https://zh.wikipedia.org/wiki/颜色", + "COLOUR_PICKER_TOOLTIP": "从调色板中选择一种颜色。", + "COLOUR_RANDOM_TITLE": "随机颜色", + "COLOUR_RANDOM_TOOLTIP": "随机选择一种颜色。", + "COLOUR_RGB_TITLE": "颜色", + "COLOUR_RGB_RED": "红色", + "COLOUR_RGB_GREEN": "绿色", + "COLOUR_RGB_BLUE": "蓝色", + "COLOUR_RGB_TOOLTIP": "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。", + "COLOUR_BLEND_TITLE": "混合", + "COLOUR_BLEND_COLOUR1": "颜色1", + "COLOUR_BLEND_COLOUR2": "颜色2", + "COLOUR_BLEND_RATIO": "比例", + "COLOUR_BLEND_TOOLTIP": "把两种颜色以一个给定的比例(0.0-1.0)进行混合。", + "CONTROLS_REPEAT_HELPURL": "https://zh.wikipedia.org/wiki/For循环", + "CONTROLS_REPEAT_TITLE": "重复 %1 次", + "CONTROLS_REPEAT_INPUT_DO": "执行", + "CONTROLS_REPEAT_TOOLTIP": "多次执行一些语句。", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "当条件满足时重复", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "重复直到条件满足", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "只要值为真,就一直循环执行一些语句。", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "只要值为假,就一直循环执行一些语句。", + "CONTROLS_FOR_TOOLTIP": "用变量%1记录从开始数值到终止数值之间的数值,数值按指定间隔增加,并执行指定的块。", + "CONTROLS_FOR_TITLE": "变量 %1 从 %2 数到 %3 每次增加 %4", + "CONTROLS_FOREACH_TITLE": "遍历列表 %2 里的每一项 %1", + "CONTROLS_FOREACH_TOOLTIP": "遍历列表中的每一项,将变量“%1”设为所选项,并执行一些语句。", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "跳出循环", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "继续下一轮循环", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "跳出包含它的循环。", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "跳过本轮循环的剩余部分,并继进行续下一轮循环。", + "CONTROLS_FLOW_STATEMENTS_WARNING": "警告:这个块只能在循环内使用。", + "CONTROLS_IF_TOOLTIP_1": "如果值为真,执行一些语句。", + "CONTROLS_IF_TOOLTIP_2": "如果值为真,则执行第一块语句。否则,则执行第二块语句。", + "CONTROLS_IF_TOOLTIP_3": "如果第一个值为真,则执行第一块的语句。否则,如果第二个值为真,则执行第二块的语句。", + "CONTROLS_IF_TOOLTIP_4": "如果第一个值为真,则执行第一块对语句。否则,如果第二个值为真,则执行语句的第二块。如果没有值为真,则执行最后一块的语句。", + "CONTROLS_IF_MSG_IF": "如果", + "CONTROLS_IF_MSG_ELSEIF": "否则如果", + "CONTROLS_IF_MSG_ELSE": "否则", + "CONTROLS_IF_IF_TOOLTIP": "增加、删除或重新排列各节来重新配置这个if语句块。", + "CONTROLS_IF_ELSEIF_TOOLTIP": "在这个if语句块中增加一个条件。", + "CONTROLS_IF_ELSE_TOOLTIP": "在这个if语句块中添加一个最终的,包括所有其余情况的条件。", + "LOGIC_COMPARE_HELPURL": "https://zh.wikipedia.org/wiki/不等", + "LOGIC_COMPARE_TOOLTIP_EQ": "如果两个输入结果相等,则返回真。", + "LOGIC_COMPARE_TOOLTIP_NEQ": "如果两个输入结果不相等,则返回真。", + "LOGIC_COMPARE_TOOLTIP_LT": "如果第一个输入结果比第二个小,则返回真。", + "LOGIC_COMPARE_TOOLTIP_LTE": "如果第一个输入结果小于或等于第二个输入结果,则返回真。", + "LOGIC_COMPARE_TOOLTIP_GT": "如果第一个输入结果比第二个大,则返回真。", + "LOGIC_COMPARE_TOOLTIP_GTE": "如果第一个输入结果大于或等于第二个输入结果,则返回真。", + "LOGIC_OPERATION_TOOLTIP_AND": "如果两个输入结果都为真,则返回真。", + "LOGIC_OPERATION_AND": "并且", + "LOGIC_OPERATION_TOOLTIP_OR": "如果至少有一个输入结果为真,则返回真。", + "LOGIC_OPERATION_OR": "或", + "LOGIC_NEGATE_HELPURL": "https://github.com/google/blockly/wiki/Logic#not", + "LOGIC_NEGATE_TITLE": "非%1", + "LOGIC_NEGATE_TOOLTIP": "如果输入结果为假,则返回真;如果输入结果为真,则返回假。", + "LOGIC_BOOLEAN_TRUE": "真", + "LOGIC_BOOLEAN_FALSE": "假", + "LOGIC_BOOLEAN_TOOLTIP": "返回真或假。", + "LOGIC_NULL": "空", + "LOGIC_NULL_TOOLTIP": "返回空值。", + "LOGIC_TERNARY_HELPURL": "https://zh.wikipedia.org/wiki/条件运算符", + "LOGIC_TERNARY_CONDITION": "断言", + "LOGIC_TERNARY_IF_TRUE": "如果为真", + "LOGIC_TERNARY_IF_FALSE": "如果为假", + "LOGIC_TERNARY_TOOLTIP": "检查“断言”里的条件语句。如果条件为真,则返回“如果为真”的值,否则,则返回“如果为假”的值。", + "MATH_NUMBER_HELPURL": "https://zh.wikipedia.org/wiki/数", + "MATH_NUMBER_TOOLTIP": "一个数值。", + "MATH_ARITHMETIC_HELPURL": "https://zh.wikipedia.org/wiki/算术", + "MATH_ARITHMETIC_TOOLTIP_ADD": "返回两个数值的和。", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "返回两个数值的差。", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "返回两个数值的乘积。", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "返回两个数值的商。", + "MATH_ARITHMETIC_TOOLTIP_POWER": "返回以第一个数值为底数,以第二个数值为幂的结果。", + "MATH_SINGLE_HELPURL": "https://zh.wikipedia.org/wiki/平方根", + "MATH_SINGLE_OP_ROOT": "平方根", + "MATH_SINGLE_TOOLTIP_ROOT": "返回一个数的平方根。", + "MATH_SINGLE_OP_ABSOLUTE": "绝对值", + "MATH_SINGLE_TOOLTIP_ABS": "返回一个数值的绝对值。", + "MATH_SINGLE_TOOLTIP_NEG": "返回一个数值的相反数。", + "MATH_SINGLE_TOOLTIP_LN": "返回一个数值的自然对数。", + "MATH_SINGLE_TOOLTIP_LOG10": "返回一个数值的以10为底的对数。", + "MATH_SINGLE_TOOLTIP_EXP": "返回e的n次幂。", + "MATH_SINGLE_TOOLTIP_POW10": "返回10的n次幂。", + "MATH_TRIG_HELPURL": "https://zh.wikipedia.org/wiki/三角函数", + "MATH_TRIG_TOOLTIP_SIN": "返回指定角度的正弦值(非弧度)。", + "MATH_TRIG_TOOLTIP_COS": "返回指定角度的余弦值(非弧度)。", + "MATH_TRIG_TOOLTIP_TAN": "返回指定角度的正切值(非弧度)。", + "MATH_TRIG_TOOLTIP_ASIN": "返回一个数值的反正弦值。", + "MATH_TRIG_TOOLTIP_ACOS": "返回一个数值的反余弦值。", + "MATH_TRIG_TOOLTIP_ATAN": "返回一个数值的反正切值。", + "MATH_CONSTANT_HELPURL": "https://zh.wikipedia.org/wiki/数学常数", + "MATH_CONSTANT_TOOLTIP": "返回一个常见常量:π (3.141…)、e (2.718…)、φ (1.618…)、根号2 (1.414…)、根号二分之一 (0.707…)或∞ (无穷大)。", + "MATH_IS_EVEN": "是偶数", + "MATH_IS_ODD": "是奇数", + "MATH_IS_PRIME": "是质数", + "MATH_IS_WHOLE": "是整数", + "MATH_IS_POSITIVE": "是正数", + "MATH_IS_NEGATIVE": "是负数", + "MATH_IS_DIVISIBLE_BY": "可被整除", + "MATH_IS_TOOLTIP": "检查一个数值是否是偶数、奇数、质数、自然数、正数、负数或者是否能被某数整除。返回真或假。", + "MATH_CHANGE_HELPURL": "https://zh.wikipedia.org/wiki/加法", + "MATH_CHANGE_TITLE": "将 %1 增加 %2", + "MATH_CHANGE_TOOLTIP": "为变量“%1”增加一个数值。", + "MATH_ROUND_HELPURL": "https://zh.wikipedia.org/wiki/数值修约", + "MATH_ROUND_TOOLTIP": "数字向上或向下舍入。", + "MATH_ROUND_OPERATOR_ROUND": "四舍五入", + "MATH_ROUND_OPERATOR_ROUNDUP": "向上舍入", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "向下舍入", + "MATH_ONLIST_OPERATOR_SUM": "列表中数值的和", + "MATH_ONLIST_TOOLTIP_SUM": "返回列表中的所有数值的和。", + "MATH_ONLIST_OPERATOR_MIN": "列表最小值", + "MATH_ONLIST_TOOLTIP_MIN": "返回列表中最小值。", + "MATH_ONLIST_OPERATOR_MAX": "列表最大值", + "MATH_ONLIST_TOOLTIP_MAX": "返回列表中最大值。", + "MATH_ONLIST_OPERATOR_AVERAGE": "列表平均值", + "MATH_ONLIST_TOOLTIP_AVERAGE": "返回列表中的数值的平均值。", + "MATH_ONLIST_OPERATOR_MEDIAN": "列表中位数", + "MATH_ONLIST_TOOLTIP_MEDIAN": "返回列表中数值的中位数。", + "MATH_ONLIST_OPERATOR_MODE": "列表中的众数", + "MATH_ONLIST_TOOLTIP_MODE": "返回列表中的出现次数最多的项的列表。", + "MATH_ONLIST_OPERATOR_STD_DEV": "列表的标准差", + "MATH_ONLIST_TOOLTIP_STD_DEV": "返回列表的标准差。", + "MATH_ONLIST_OPERATOR_RANDOM": "列表中的随机一项", + "MATH_ONLIST_TOOLTIP_RANDOM": "从列表中返回一个随机的元素。", + "MATH_MODULO_HELPURL": "https://zh.wikipedia.org/wiki/模除", + "MATH_MODULO_TITLE": "取 %1 ÷ %2 的余数", + "MATH_MODULO_TOOLTIP": "返回这两个数字相除后的余数。", + "MATH_CONSTRAIN_TITLE": "将 %1 限制在 最低 %2 到最高 %3 之间", + "MATH_CONSTRAIN_TOOLTIP": "将一个数值限制在两个指定的数值范围(含边界)之间。", + "MATH_RANDOM_INT_HELPURL": "https://zh.wikipedia.org/wiki/随机数生成器", + "MATH_RANDOM_INT_TITLE": "从 %1 到 %2 范围内的随机整数", + "MATH_RANDOM_INT_TOOLTIP": "返回一个限制在两个指定数值的范围(含边界)之间的随机整数。", + "MATH_RANDOM_FLOAT_HELPURL": "https://zh.wikipedia.org/wiki/随机数生成器", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "随机小数", + "MATH_RANDOM_FLOAT_TOOLTIP": "返回一个从0.0(含)到1.0(不含)之间的随机数。", + "MATH_ATAN2_HELPURL": "https://zh.wikipedia.org/wiki/反正切2", + "MATH_ATAN2_TITLE": "点(x:%1,y:%2)的方位角", + "MATH_ATAN2_TOOLTIP": "返回点(X,Y)的反正切值,范围为-180到180度。", + "TEXT_TEXT_HELPURL": "https://zh.wikipedia.org/wiki/字符串", + "TEXT_TEXT_TOOLTIP": "一个字、词语或一行文本。", + "TEXT_JOIN_TITLE_CREATEWITH": "创建文本,内容:", + "TEXT_JOIN_TOOLTIP": "通过串起任意数量的项以建立一段文本。", + "TEXT_CREATE_JOIN_TITLE_JOIN": "拼接", + "TEXT_CREATE_JOIN_TOOLTIP": "添加、移除或重新排列各节来重新配置这个文本块。", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "将一个项添加到文本中。", + "TEXT_APPEND_TITLE": "在%1之后加上文本%2", + "TEXT_APPEND_TOOLTIP": "将一些文本追加到变量“%1”里。", + "TEXT_LENGTH_TITLE": "%1的长度", + "TEXT_LENGTH_TOOLTIP": "返回给定文本的字母数(包括空格)。", + "TEXT_ISEMPTY_TITLE": "%1是空的", + "TEXT_ISEMPTY_TOOLTIP": "如果给定的文本为空,则返回真。", + "TEXT_INDEXOF_TOOLTIP": "返回第一个文本段在第二个文本段中的第一/最后一个匹配项的起始位置。如果未找到,则返回%1。", + "TEXT_INDEXOF_TITLE": "在文本 %1 里 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "寻找第一次出现的文本", + "TEXT_INDEXOF_OPERATOR_LAST": "寻找最后一次出现的文本", + "TEXT_CHARAT_TITLE": "在文本%1 里 %2", + "TEXT_CHARAT_FROM_START": "获取第#个字符", + "TEXT_CHARAT_FROM_END": "获取倒数第#个字符", + "TEXT_CHARAT_FIRST": "获取第一个字符", + "TEXT_CHARAT_LAST": "获取最后一个字符", + "TEXT_CHARAT_RANDOM": "获取随机一个字符", + "TEXT_CHARAT_TAIL": "-", + "TEXT_CHARAT_TOOLTIP": "返回位于指定位置的字符。", + "TEXT_GET_SUBSTRING_TOOLTIP": "返回文本中指定的一部分。", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "从文本", + "TEXT_GET_SUBSTRING_START_FROM_START": "获取子串,从第#个字符", + "TEXT_GET_SUBSTRING_START_FROM_END": "获取子串,从倒数第#个字符", + "TEXT_GET_SUBSTRING_START_FIRST": "获取子串,从第一个字符", + "TEXT_GET_SUBSTRING_END_FROM_START": "到第#个字符", + "TEXT_GET_SUBSTRING_END_FROM_END": "到倒数第#个字符", + "TEXT_GET_SUBSTRING_END_LAST": "到最后一个字符", + "TEXT_GET_SUBSTRING_TAIL": "-", + "TEXT_CHANGECASE_TOOLTIP": "用不同的大小写模式复制并返回这段文字。", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "转为大写", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "转为小写", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "转为首字母大写", + "TEXT_TRIM_TOOLTIP": "从某一端或同时从两端删除多余的空白,并返回这段文字的一个副本。", + "TEXT_TRIM_OPERATOR_BOTH": "消除其两侧的空白", + "TEXT_TRIM_OPERATOR_LEFT": "消除其左侧的空白", + "TEXT_TRIM_OPERATOR_RIGHT": "消除其右侧的空白", + "TEXT_PRINT_TITLE": "输出%1", + "TEXT_PRINT_TOOLTIP": "输出指定的文字、数字或其他值。", + "TEXT_PROMPT_TYPE_TEXT": "要求输入文本,并显示提示消息", + "TEXT_PROMPT_TYPE_NUMBER": "要求输入数字,并显示提示消息", + "TEXT_PROMPT_TOOLTIP_NUMBER": "要求用户输入数字。", + "TEXT_PROMPT_TOOLTIP_TEXT": "要求用户输入一些文本。", + "TEXT_COUNT_MESSAGE0": "计算%1在%2里出现的次数", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "计算在一段文本中,某个部分文本重复出现了多少次。", + "TEXT_REPLACE_MESSAGE0": "把%3中的%1替换为%2", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "在一段文本中,将出现过的某部分文本都替换掉。", + "TEXT_REVERSE_MESSAGE0": "倒转文本%1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "将文本中各个字符的顺序倒转。", + "LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list", + "LISTS_CREATE_EMPTY_TITLE": "创建空列表", + "LISTS_CREATE_EMPTY_TOOLTIP": "返回一个列表,长度为 0,不包含任何数据记录", + "LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with", + "LISTS_CREATE_WITH_TOOLTIP": "建立一个具有任意数量项目的列表。", + "LISTS_CREATE_WITH_INPUT_WITH": "创建列表,内容:", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "列表", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "增加、删除或重新排列各部分以此重新配置这个列表块。", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "将一个项添加到列表中。", + "LISTS_REPEAT_TOOLTIP": "建立包含指定重复次数的值的列表。", + "LISTS_REPEAT_TITLE": "建立列表使用项 %1 重复 %2 次", + "LISTS_LENGTH_TITLE": "%1的长度", + "LISTS_LENGTH_TOOLTIP": "返回列表的长度。", + "LISTS_ISEMPTY_TITLE": "%1是空的", + "LISTS_ISEMPTY_TOOLTIP": "如果改列表为空,则返回真。", + "LISTS_INLIST": "在列表中", + "LISTS_INDEX_OF_FIRST": "寻找第一次出现的项", + "LISTS_INDEX_OF_LAST": "寻找最后一次出现的项", + "LISTS_INDEX_OF_TOOLTIP": "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。", + "LISTS_GET_INDEX_GET": "取得", + "LISTS_GET_INDEX_GET_REMOVE": "取得并移除", + "LISTS_GET_INDEX_REMOVE": "移除", + "LISTS_GET_INDEX_FROM_START": "#", + "LISTS_GET_INDEX_FROM_END": "倒数第#项", + "LISTS_GET_INDEX_FIRST": "第一项", + "LISTS_GET_INDEX_LAST": "最后一项", + "LISTS_GET_INDEX_RANDOM": "随机的一项", + "LISTS_GET_INDEX_TAIL": "-", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1是第一项。", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1是最后一项。", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "返回在列表中的指定位置的项。", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "返回列表中的第一项。", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "返回列表中的最后一项。", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "返回列表中的随机一项。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "移除并返回列表中的指定位置的项。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "移除并返回列表中的第一项。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "移除并返回列表中的最后一项。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "移除并返回列表中的随机一项。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "移除在列表中的指定位置的项。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "移除列表中的第一项", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "移除列表中的最后一项", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "删除列表中的随机一项。", + "LISTS_SET_INDEX_SET": "设置", + "LISTS_SET_INDEX_INSERT": "插入在", + "LISTS_SET_INDEX_INPUT_TO": "值为", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "设置在列表中指定位置的项。", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "设置列表中的第一项。", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "设置列表中的最后一项。", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "设置列表中的随机一项。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "在列表中指定位置插入项。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "在列表的起始处添加该项。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "在列表的末尾处添加该项。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "在列表的随机位置插入该项。", + "LISTS_GET_SUBLIST_START_FROM_START": "获取子列表,从第#项", + "LISTS_GET_SUBLIST_START_FROM_END": "获取子列表,从倒数第#项", + "LISTS_GET_SUBLIST_START_FIRST": "获取子列表,从第一项", + "LISTS_GET_SUBLIST_END_FROM_START": "到第#项", + "LISTS_GET_SUBLIST_END_FROM_END": "到倒数第#项", + "LISTS_GET_SUBLIST_END_LAST": "到最后一项", + "LISTS_GET_SUBLIST_TAIL": "-", + "LISTS_GET_SUBLIST_TOOLTIP": "复制列表中指定的部分。", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "排序%1 %2 %3", + "LISTS_SORT_TOOLTIP": "排序一个列表,返回副本。", + "LISTS_SORT_ORDER_ASCENDING": "升序", + "LISTS_SORT_ORDER_DESCENDING": "降序", + "LISTS_SORT_TYPE_NUMERIC": "按数字", + "LISTS_SORT_TYPE_TEXT": "按字母", + "LISTS_SORT_TYPE_IGNORECASE": "按字母(忽略大小写)", + "LISTS_SPLIT_HELPURL": "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists", + "LISTS_SPLIT_LIST_FROM_TEXT": "从文本制作列表", + "LISTS_SPLIT_TEXT_FROM_LIST": "将列表合并为文本", + "LISTS_SPLIT_WITH_DELIMITER": "分隔符:", + "LISTS_SPLIT_TOOLTIP_SPLIT": "将文本按指定的分隔符拆分为文本组成的列表。", + "LISTS_SPLIT_TOOLTIP_JOIN": "加入文本列表至一个文本,由分隔符分隔。", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "倒转%1", + "LISTS_REVERSE_TOOLTIP": "倒转一个列表,返回副本。", + "ORDINAL_NUMBER_SUFFIX": "-", + "VARIABLES_GET_TOOLTIP": "返回此变量的值。", + "VARIABLES_GET_CREATE_SET": "创建“设定%1”", + "VARIABLES_SET": "赋值 %1 为 %2", + "VARIABLES_SET_TOOLTIP": "设置此变量,以使它和输入值相等。", + "VARIABLES_SET_CREATE_GET": "创建“获得%1”", + "PROCEDURES_DEFNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序", + "PROCEDURES_DEFNORETURN_TITLE": "至", + "PROCEDURES_DEFNORETURN_PROCEDURE": "做点什么", + "PROCEDURES_BEFORE_PARAMS": "与:", + "PROCEDURES_CALL_BEFORE_PARAMS": "与:", + "PROCEDURES_DEFNORETURN_DO": "-", + "PROCEDURES_DEFNORETURN_TOOLTIP": "创建一个不带输出值的函数。", + "PROCEDURES_DEFNORETURN_COMMENT": "描述该功能...", + "PROCEDURES_DEFRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序", + "PROCEDURES_DEFRETURN_RETURN": "返回", + "PROCEDURES_DEFRETURN_TOOLTIP": "创建一个有输出值的函数。", + "PROCEDURES_ALLOW_STATEMENTS": "允许声明", + "PROCEDURES_DEF_DUPLICATE_WARNING": "警告:此函数具有重复参数。", + "PROCEDURES_CALLNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序", + "PROCEDURES_CALLNORETURN_TOOLTIP": "运行用户定义的函数“%1”。", + "PROCEDURES_CALLRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程序", + "PROCEDURES_CALLRETURN_TOOLTIP": "运行用户定义的函数“%1”,并使用它的输出值。", + "PROCEDURES_MUTATORCONTAINER_TITLE": "输入", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "添加、移除或重新排此函数的输入。", + "PROCEDURES_MUTATORARG_TITLE": "输入名称:", + "PROCEDURES_MUTATORARG_TOOLTIP": "添加函数输入。", + "PROCEDURES_HIGHLIGHT_DEF": "突出显示函数定义", + "PROCEDURES_CREATE_DO": "创建“%1”", + "PROCEDURES_IFRETURN_TOOLTIP": "如果值为真,则返回第二个值。", + "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", + "PROCEDURES_IFRETURN_WARNING": "警告:这个块只能在函数内部使用。", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "说点什么...", + "WORKSPACE_ARIA_LABEL": "Blockly工作区", + "COLLAPSED_WARNINGS_WARNING": "已收起的信息块内包含警告。", + "DIALOG_OK": "确认", + "DIALOG_CANCEL": "取消" +} diff --git a/msg/json/zh-hant.json b/msg/json/zh-hant.json index 9c4048e9593..43bb633d7b7 100644 --- a/msg/json/zh-hant.json +++ b/msg/json/zh-hant.json @@ -1,354 +1,354 @@ -{ - "@metadata": { - "authors": [ - "Cwlin0416", - "Dnow", - "Dnowba", - "Gasolin", - "Jessica1213", - "Kasimtan", - "Kly", - "LNDDYL", - "Liuxinyu970226", - "Sean0115", - "Wehwei", - "列维劳德", - "和平至上", - "沈澄心" - ] - }, - "VARIABLES_DEFAULT_NAME": "項目", - "UNNAMED_KEY": "未命名", - "TODAY": "今天", - "DUPLICATE_BLOCK": "重複", - "ADD_COMMENT": "加入註解", - "REMOVE_COMMENT": "移除註解", - "DUPLICATE_COMMENT": "複製註解", - "EXTERNAL_INPUTS": "外部輸入", - "INLINE_INPUTS": "單行輸入", - "DELETE_BLOCK": "刪除區塊", - "DELETE_X_BLOCKS": "刪除%1個積木", - "DELETE_ALL_BLOCKS": "刪除全部 %1 個區塊?", - "CLEAN_UP": "整理區塊", - "COLLAPSE_BLOCK": "收合區塊", - "COLLAPSE_ALL": "收合區塊", - "EXPAND_BLOCK": "展開區塊", - "EXPAND_ALL": "展開積木", - "DISABLE_BLOCK": "停用區塊", - "ENABLE_BLOCK": "啟用積木", - "HELP": "說明", - "UNDO": "還原", - "REDO": "重做", - "CHANGE_VALUE_TITLE": "修改值:", - "RENAME_VARIABLE": "重新命名變數...", - "RENAME_VARIABLE_TITLE": "將所有「%1」變數重新命名為:", - "NEW_VARIABLE": "建立變數…", - "NEW_STRING_VARIABLE": "建立字串變數……", - "NEW_NUMBER_VARIABLE": "建立數值變數……", - "NEW_COLOUR_VARIABLE": "建立顏色變數…", - "NEW_VARIABLE_TYPE_TITLE": "新變數類型:", - "NEW_VARIABLE_TITLE": "新變數名稱:", - "VARIABLE_ALREADY_EXISTS": "已存在變數「%1」。", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "已存在名為「%1」,且用於其它類型「%2」的變數。", - "DELETE_VARIABLE_CONFIRMATION": "刪除使用%1次的「%2」變數?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "無法刪除變數「%1」,因為這是功能「%2」定義的一部份內容", - "DELETE_VARIABLE": "刪除變數「%1」", - "COLOUR_PICKER_HELPURL": "https://zh.wikipedia.org/wiki/顏色", - "COLOUR_PICKER_TOOLTIP": "從調色板中選擇一種顏色。", - "COLOUR_RANDOM_TITLE": "隨機顏色", - "COLOUR_RANDOM_TOOLTIP": "隨機選擇一種顏色。", - "COLOUR_RGB_TITLE": "顏色", - "COLOUR_RGB_RED": "紅", - "COLOUR_RGB_GREEN": "綠", - "COLOUR_RGB_BLUE": "藍", - "COLOUR_RGB_TOOLTIP": "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。", - "COLOUR_BLEND_TITLE": "混合", - "COLOUR_BLEND_COLOUR1": "顏色 1", - "COLOUR_BLEND_COLOUR2": "顏色 2", - "COLOUR_BLEND_RATIO": "比例", - "COLOUR_BLEND_TOOLTIP": "用一個給定的比率(0.0-1.0)混合兩種顏色。", - "CONTROLS_REPEAT_HELPURL": "https://zh.wikipedia.org/wiki/For迴圈", - "CONTROLS_REPEAT_TITLE": "重複%1次", - "CONTROLS_REPEAT_INPUT_DO": "執行", - "CONTROLS_REPEAT_TOOLTIP": "重複執行指定的陳述式多次。", - "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "重複,當", - "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "重複直到", - "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "當值為 true 時,執行一些陳述式。", - "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "當值為 false 時,執行一些陳述式。", - "CONTROLS_FOR_TOOLTIP": "從起始數到結尾數中取出變數「%1」的值,按指定的時間間隔,執行指定的區塊。", - "CONTROLS_FOR_TITLE": "循環計數 %1 從 %2 到 %3 每次增加 %4", - "CONTROLS_FOREACH_TITLE": "為列表 %2 裡的每一項 %1", - "CONTROLS_FOREACH_TOOLTIP": "遍歷每個清單中的項目,將變數「%1」設定到該項目中,然後執行某些陳述式。", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "中斷循環", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "繼續下一個循環", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "中斷當前的循環。", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "跳過這個循環的其餘步驟,並繼續下一次的循環。", - "CONTROLS_FLOW_STATEMENTS_WARNING": "警告:此區塊僅可用於循環內。", - "CONTROLS_IF_TOOLTIP_1": "當值為 true 時,執行一些陳述式。", - "CONTROLS_IF_TOOLTIP_2": "當值為 true 時,執行第一個陳述式。否則,執行第二個陳述式。", - "CONTROLS_IF_TOOLTIP_3": "如果第一個值為 true,則執行第一個陳述式。否則,當第二個值為 true 時,則執行第二個陳述式。", - "CONTROLS_IF_TOOLTIP_4": "如果第一個值為 true,則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。如果前幾個敘述都不為 ture,則執行最後一個陳述式。", - "CONTROLS_IF_MSG_IF": "如果", - "CONTROLS_IF_MSG_ELSEIF": "否則,如果", - "CONTROLS_IF_MSG_ELSE": "否則", - "CONTROLS_IF_IF_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。", - "CONTROLS_IF_ELSEIF_TOOLTIP": "添加條件到「如果」積木。", - "CONTROLS_IF_ELSE_TOOLTIP": "加入一個最終、所有條件都執行的部份到「如果」區塊中。", - "LOGIC_COMPARE_HELPURL": "https://zh.wikipedia.org/wiki/不等", - "LOGIC_COMPARE_TOOLTIP_EQ": "如果這兩個輸入區塊的結果相等,返回 true。", - "LOGIC_COMPARE_TOOLTIP_NEQ": "如果這兩個輸入區塊的結果不相等,返回 true。", - "LOGIC_COMPARE_TOOLTIP_LT": "如果第一個輸入結果比第二個小,返回 true。", - "LOGIC_COMPARE_TOOLTIP_LTE": "如果第一個輸入結果小於或等於第二個,返回 true。", - "LOGIC_COMPARE_TOOLTIP_GT": "如果第一個輸入結果大於第二個,返回 true。", - "LOGIC_COMPARE_TOOLTIP_GTE": "如果第一個輸入結果大於或等於第二個,返回 true。", - "LOGIC_OPERATION_TOOLTIP_AND": "如果兩個輸入結果都為 true,則返回 true。", - "LOGIC_OPERATION_AND": "和", - "LOGIC_OPERATION_TOOLTIP_OR": "如果至少一個輸入結果為 true,返回 true。", - "LOGIC_OPERATION_OR": "或", - "LOGIC_NEGATE_TITLE": "%1 不成立", - "LOGIC_NEGATE_TOOLTIP": "如果輸入結果是 false,則返回 true。如果輸入結果是 true,則返回 false。", - "LOGIC_BOOLEAN_TRUE": "真", - "LOGIC_BOOLEAN_FALSE": "假", - "LOGIC_BOOLEAN_TOOLTIP": "返回真或假。", - "LOGIC_NULL": "空", - "LOGIC_NULL_TOOLTIP": "返回空值。", - "LOGIC_TERNARY_HELPURL": "https://zh.wikipedia.org/wiki/條件運算符", - "LOGIC_TERNARY_CONDITION": "測試", - "LOGIC_TERNARY_IF_TRUE": "如果為真", - "LOGIC_TERNARY_IF_FALSE": "如果為假", - "LOGIC_TERNARY_TOOLTIP": "檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。", - "MATH_NUMBER_HELPURL": "https://zh.wikipedia.org/wiki/數", - "MATH_NUMBER_TOOLTIP": "一個數字。", - "MATH_ARITHMETIC_HELPURL": "https://zh.wikipedia.org/wiki/算術", - "MATH_ARITHMETIC_TOOLTIP_ADD": "返回兩個數字的總和。", - "MATH_ARITHMETIC_TOOLTIP_MINUS": "返回兩個數字的差。", - "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "返回兩個數字的乘積。", - "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "返回兩個數字的商。", - "MATH_ARITHMETIC_TOOLTIP_POWER": "返回第二個數字的指數的第一個數字。", - "MATH_SINGLE_HELPURL": "https://zh.wikipedia.org/wiki/平方根", - "MATH_SINGLE_OP_ROOT": "開根號", - "MATH_SINGLE_TOOLTIP_ROOT": "返回指定數字的平方根。", - "MATH_SINGLE_OP_ABSOLUTE": "絕對值", - "MATH_SINGLE_TOOLTIP_ABS": "返回指定數字的絕對值。", - "MATH_SINGLE_TOOLTIP_NEG": "返回指定數字的相反數。", - "MATH_SINGLE_TOOLTIP_LN": "返回指定數字的自然對數。", - "MATH_SINGLE_TOOLTIP_LOG10": "返回指定數字的對數。", - "MATH_SINGLE_TOOLTIP_EXP": "返回指定數字指數的e的冪次。", - "MATH_SINGLE_TOOLTIP_POW10": "返回指定數字指數的10的冪次。", - "MATH_TRIG_HELPURL": "https://zh.wikipedia.org/wiki/三角函數", - "MATH_TRIG_TOOLTIP_SIN": "返回指定角度的正弦值(非弧度)。", - "MATH_TRIG_TOOLTIP_COS": "返回指定角度的餘弦值(非弧度)。", - "MATH_TRIG_TOOLTIP_TAN": "返回指定角度的正切值(非弧度)。", - "MATH_TRIG_TOOLTIP_ASIN": "返回指定角度的反正弦值(非弧度)。", - "MATH_TRIG_TOOLTIP_ACOS": "返回指定角度的反餘弦值(非弧度)。", - "MATH_TRIG_TOOLTIP_ATAN": "返回指定角度的反正切值。", - "MATH_CONSTANT_HELPURL": "https://zh.wikipedia.org/wiki/數學常數", - "MATH_CONSTANT_TOOLTIP": "返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。", - "MATH_IS_EVEN": "是偶數", - "MATH_IS_ODD": "是奇數", - "MATH_IS_PRIME": "是質數", - "MATH_IS_WHOLE": "是整數", - "MATH_IS_POSITIVE": "是正值", - "MATH_IS_NEGATIVE": "是負數", - "MATH_IS_DIVISIBLE_BY": "可被整除", - "MATH_IS_TOOLTIP": "如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。", - "MATH_CHANGE_HELPURL": "https://zh.wikipedia.org/wiki/加法", - "MATH_CHANGE_TITLE": "修改 %1 自 %2", - "MATH_CHANGE_TOOLTIP": "將數字加到變數「%1」。", - "MATH_ROUND_HELPURL": "https://zh.wikipedia.org/wiki/數值簡化", - "MATH_ROUND_TOOLTIP": "將數字無條件進位或無條件捨去。", - "MATH_ROUND_OPERATOR_ROUND": "四捨五入", - "MATH_ROUND_OPERATOR_ROUNDUP": "無條件進位", - "MATH_ROUND_OPERATOR_ROUNDDOWN": "無條件捨去", - "MATH_ONLIST_OPERATOR_SUM": "數字總和 自清單", - "MATH_ONLIST_TOOLTIP_SUM": "返回清單中的所有數字的總和。", - "MATH_ONLIST_OPERATOR_MIN": "最小值 自清單", - "MATH_ONLIST_TOOLTIP_MIN": "返回清單項目中最小的數字。", - "MATH_ONLIST_OPERATOR_MAX": "最大值 自清單", - "MATH_ONLIST_TOOLTIP_MAX": "返回清單項目中最大的數字。", - "MATH_ONLIST_OPERATOR_AVERAGE": "平均數 自清單", - "MATH_ONLIST_TOOLTIP_AVERAGE": "返回清單中數值的平均值(算術平均值)。", - "MATH_ONLIST_OPERATOR_MEDIAN": "中位數 自清單", - "MATH_ONLIST_TOOLTIP_MEDIAN": "返回清單中數值的中位數。", - "MATH_ONLIST_OPERATOR_MODE": "比較眾數 自清單", - "MATH_ONLIST_TOOLTIP_MODE": "返回一個清單中的最常見的項目。", - "MATH_ONLIST_OPERATOR_STD_DEV": "標準差 自清單", - "MATH_ONLIST_TOOLTIP_STD_DEV": "返回清單中數字的標準差。", - "MATH_ONLIST_OPERATOR_RANDOM": "隨機抽取 自清單", - "MATH_ONLIST_TOOLTIP_RANDOM": "從清單中返回一個隨機的項目。", - "MATH_MODULO_HELPURL": "https://zh.wikipedia.org/wiki/模除", - "MATH_MODULO_TITLE": "%1 除以 %2 的餘數", - "MATH_MODULO_TOOLTIP": "回傳兩個數字相除的餘數。", - "MATH_CONSTRAIN_TITLE": "限制數字 %1 介於(低)%2 到(高)%3", - "MATH_CONSTRAIN_TOOLTIP": "限制數字介於兩個指定的數字之間(包含)。", - "MATH_RANDOM_INT_HELPURL": "https://zh.wikipedia.org/wiki/隨機數生成器", - "MATH_RANDOM_INT_TITLE": "隨機取數 %1 到 %2", - "MATH_RANDOM_INT_TOOLTIP": "在指定二個數之間隨機取一個數(包含)。", - "MATH_RANDOM_FLOAT_HELPURL": "https://zh.wikipedia.org/wiki/隨機數生成器", - "MATH_RANDOM_FLOAT_TITLE_RANDOM": "隨機取分數", - "MATH_RANDOM_FLOAT_TOOLTIP": "在 0.0(包含)和 1.0(不包含)之間隨機取一個數。", - "MATH_ATAN2_HELPURL": "https://zh.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "X:%1 Y:%2 的 Atan2", - "MATH_ATAN2_TOOLTIP": "回傳點(X,Y)從 -180 至 180 度的反正切值。", - "TEXT_TEXT_HELPURL": "https://zh.wikipedia.org/wiki/字串", - "TEXT_TEXT_TOOLTIP": "一個字元、一個單詞,或一串文字。", - "TEXT_JOIN_TITLE_CREATEWITH": "字串組合", - "TEXT_JOIN_TOOLTIP": "通過連接任意數量的項目來建立一串文字。", - "TEXT_CREATE_JOIN_TITLE_JOIN": "加入", - "TEXT_CREATE_JOIN_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個文字區塊。", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "添加一個項目到字串中。", - "TEXT_APPEND_TITLE": "至 %1 套用文字 %2", - "TEXT_APPEND_TOOLTIP": "添加一些文字到變數「%1」之後。", - "TEXT_LENGTH_TITLE": "長度 %1", - "TEXT_LENGTH_TOOLTIP": "返回這串文字的字元數(包含空格)。", - "TEXT_ISEMPTY_TITLE": "%1 為空", - "TEXT_ISEMPTY_TOOLTIP": "如果提供的字串為空,則返回 true。", - "TEXT_INDEXOF_TOOLTIP": "在字串1中檢索是否有包含字串2,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。", - "TEXT_INDEXOF_TITLE": "在文字 %1 %2 %3", - "TEXT_INDEXOF_OPERATOR_FIRST": "從 最前面 索引字串", - "TEXT_INDEXOF_OPERATOR_LAST": "從 最後面 索引字串", - "TEXT_CHARAT_TITLE": "在文字 %1 %2", - "TEXT_CHARAT_FROM_START": "取得 字元 #", - "TEXT_CHARAT_FROM_END": "取得 倒數第 # 個字元", - "TEXT_CHARAT_FIRST": "取得 第一個字元", - "TEXT_CHARAT_LAST": "取得 最後一個字元", - "TEXT_CHARAT_RANDOM": "取得 任意字元", - "TEXT_CHARAT_TOOLTIP": "返回位於指定位置的字元。", - "TEXT_GET_SUBSTRING_TOOLTIP": "返回指定的部分文字。", - "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "在字串", - "TEXT_GET_SUBSTRING_START_FROM_START": "取得 字元 #", - "TEXT_GET_SUBSTRING_START_FROM_END": "取得 倒數第 # 個字元", - "TEXT_GET_SUBSTRING_START_FIRST": "取得 第一個字元", - "TEXT_GET_SUBSTRING_END_FROM_START": "到 字元 #", - "TEXT_GET_SUBSTRING_END_FROM_END": "到 倒數第 # 個字元", - "TEXT_GET_SUBSTRING_END_LAST": "到最後一個字元", - "TEXT_CHANGECASE_TOOLTIP": "使用不同的大小寫複製這段文字。", - "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "轉成英文大寫", - "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "轉成英文小寫", - "TEXT_CHANGECASE_OPERATOR_TITLECASE": "轉成英文首字大寫", - "TEXT_TRIM_TOOLTIP": "複製這段文字,同時刪除兩端多餘的空格。", - "TEXT_TRIM_OPERATOR_BOTH": "消除兩側空格", - "TEXT_TRIM_OPERATOR_LEFT": "消除左側空格", - "TEXT_TRIM_OPERATOR_RIGHT": "消除右側空格", - "TEXT_PRINT_TITLE": "輸出 %1", - "TEXT_PRINT_TOOLTIP": "輸出指定的文字、 數字或其他值。", - "TEXT_PROMPT_TYPE_TEXT": "輸入 文字 並顯示提示訊息", - "TEXT_PROMPT_TYPE_NUMBER": "輸入 數字 並顯示提示訊息", - "TEXT_PROMPT_TOOLTIP_NUMBER": "輸入數字", - "TEXT_PROMPT_TOOLTIP_TEXT": "輸入文字", - "TEXT_COUNT_MESSAGE0": "在%2計算%1", - "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", - "TEXT_COUNT_TOOLTIP": "計算某些文字在內容裡的出現次數。", - "TEXT_REPLACE_MESSAGE0": "在%3以%2取代%1", - "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", - "TEXT_REPLACE_TOOLTIP": "取代在內容裡的全部某些文字。", - "TEXT_REVERSE_MESSAGE0": "反轉%1", - "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", - "TEXT_REVERSE_TOOLTIP": "反轉排序在文字裡的字元。", - "LISTS_CREATE_EMPTY_TITLE": "建立空的清單", - "LISTS_CREATE_EMPTY_TOOLTIP": "返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄", - "LISTS_CREATE_WITH_TOOLTIP": "建立一個具備任意數量項目的清單。", - "LISTS_CREATE_WITH_INPUT_WITH": "使用這些值建立清單", - "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "清單", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個清單區塊。", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "添加一個項目到清單裡。", - "LISTS_REPEAT_TOOLTIP": "建立一個清單,項目中包含指定重複次數的值。", - "LISTS_REPEAT_TITLE": "建立清單使用項目 %1 重複 %2 次", - "LISTS_LENGTH_TITLE": "長度 %1", - "LISTS_LENGTH_TOOLTIP": "返回清單的長度(項目數)。", - "LISTS_ISEMPTY_TITLE": "%1 值為空", - "LISTS_ISEMPTY_TOOLTIP": "如果該清單為空,則返回 true。", - "LISTS_INLIST": "自清單", - "LISTS_INDEX_OF_FIRST": "從 最前面 索引項目", - "LISTS_INDEX_OF_LAST": "從 最後面 索引項目", - "LISTS_INDEX_OF_TOOLTIP": "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。", - "LISTS_GET_INDEX_GET": "取得", - "LISTS_GET_INDEX_GET_REMOVE": "取得並移除", - "LISTS_GET_INDEX_REMOVE": "移除", - "LISTS_GET_INDEX_FROM_END": "倒數第 # 筆", - "LISTS_GET_INDEX_FIRST": "第一筆", - "LISTS_GET_INDEX_LAST": "最後一筆", - "LISTS_GET_INDEX_RANDOM": "隨機", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 是第一個項目。", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 是最後一個項目。", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "返回在清單中指定位置的項目。", - "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "返回清單中的第一個項目。", - "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "返回清單中的最後一個項目。", - "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "返回清單中隨機一個項目。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "移除並返回清單中的指定位置的項目。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "移除並返回清單中的第一個項目。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "移除並返回清單中的最後一個項目。", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "移除並返回清單中的隨機項目。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "移除在清單中指定位置的項目。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "移除清單中的第一個項目。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "移除清單中的最後一個項目。", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "移除清單中隨機一個項目。", - "LISTS_SET_INDEX_SET": "設定", - "LISTS_SET_INDEX_INSERT": "添加", - "LISTS_SET_INDEX_INPUT_TO": "為", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "設定清單中指定位置的項目。", - "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "設定清單中的第一個項目。", - "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "設定清單中的最後一個項目。", - "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "設定清單中隨機一個項目。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "添加一個項目到清單中的指定位置。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "添加一個項目到清單中的第一個位置。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "添加一個項目到清單中的最後一個位置。", - "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "添加一個項目到清單中的隨機位置。", - "LISTS_GET_SUBLIST_START_FROM_START": "取得子清單 從 #", - "LISTS_GET_SUBLIST_START_FROM_END": "取得子清單 從 # 倒數", - "LISTS_GET_SUBLIST_START_FIRST": "取得子清單 從 最前面", - "LISTS_GET_SUBLIST_END_FROM_START": "到 #", - "LISTS_GET_SUBLIST_END_FROM_END": "到 # 倒數", - "LISTS_GET_SUBLIST_END_LAST": "到 最後面", - "LISTS_GET_SUBLIST_TOOLTIP": "複製清單中指定的部分。", - "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", - "LISTS_SORT_TITLE": "排列 %1 %2 %3", - "LISTS_SORT_TOOLTIP": "排序清單的複製內容。", - "LISTS_SORT_ORDER_ASCENDING": "升序", - "LISTS_SORT_ORDER_DESCENDING": "降序", - "LISTS_SORT_TYPE_NUMERIC": "依數字", - "LISTS_SORT_TYPE_TEXT": "依字母", - "LISTS_SORT_TYPE_IGNORECASE": "依字母排序,忽略大小寫", - "LISTS_SPLIT_LIST_FROM_TEXT": "從文本製作清單", - "LISTS_SPLIT_TEXT_FROM_LIST": "從清單拆出文本", - "LISTS_SPLIT_WITH_DELIMITER": "用分隔符", - "LISTS_SPLIT_TOOLTIP_SPLIT": "將文本變成清單項目,按分隔符號拆分。", - "LISTS_SPLIT_TOOLTIP_JOIN": "串起清單項目成一個文本,並用分隔符號分開。", - "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", - "LISTS_REVERSE_MESSAGE0": "反轉%1", - "LISTS_REVERSE_TOOLTIP": "反轉清單的複製內容。", - "VARIABLES_GET_TOOLTIP": "返回此變數的值。", - "VARIABLES_GET_CREATE_SET": "建立「賦值 %1」", - "VARIABLES_SET": "賦值 %1 成 %2", - "VARIABLES_SET_TOOLTIP": "設定此變數,好和輸入結果相等。", - "VARIABLES_SET_CREATE_GET": "建立「取得 %1」", - "PROCEDURES_DEFNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式", - "PROCEDURES_DEFNORETURN_TITLE": "到", - "PROCEDURES_DEFNORETURN_PROCEDURE": "做些什麼", - "PROCEDURES_BEFORE_PARAMS": "與:", - "PROCEDURES_CALL_BEFORE_PARAMS": "與:", - "PROCEDURES_DEFNORETURN_TOOLTIP": "創建一個無回傳值的函式。", - "PROCEDURES_DEFNORETURN_COMMENT": "描述此函式...", - "PROCEDURES_DEFRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式", - "PROCEDURES_DEFRETURN_RETURN": "返回", - "PROCEDURES_DEFRETURN_TOOLTIP": "創建一個有回傳值的的函式。", - "PROCEDURES_ALLOW_STATEMENTS": "允許陳述式", - "PROCEDURES_DEF_DUPLICATE_WARNING": "警告: 此函式中有重複的參數。", - "PROCEDURES_CALLNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式", - "PROCEDURES_CALLNORETURN_TOOLTIP": "執行使用者定義的函式「%1」。", - "PROCEDURES_CALLRETURN_HELPURL": "https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F", - "PROCEDURES_CALLRETURN_TOOLTIP": "執行使用者定義的函式「%1」,並使用它的回傳值。", - "PROCEDURES_MUTATORCONTAINER_TITLE": "輸入", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "添加、刪除或重新排列此函式的輸入。", - "PROCEDURES_MUTATORARG_TITLE": "輸入名稱:", - "PROCEDURES_MUTATORARG_TOOLTIP": "添加一個輸入區塊到函式。", - "PROCEDURES_HIGHLIGHT_DEF": "反白顯示函式定義", - "PROCEDURES_CREATE_DO": "建立「%1」", - "PROCEDURES_IFRETURN_TOOLTIP": "如果值為 true,則返回第二個值。", - "PROCEDURES_IFRETURN_WARNING": "警告:這個區塊只可以在定義函式時使用。", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "來說些事情...", - "WORKSPACE_ARIA_LABEL": "Blockly工作區", - "COLLAPSED_WARNINGS_WARNING": "收合含有警告的區塊。", - "DIALOG_OK": "確定", - "DIALOG_CANCEL": "取消" -} +{ + "@metadata": { + "authors": [ + "Cwlin0416", + "Dnow", + "Dnowba", + "Gasolin", + "Jessica1213", + "Kasimtan", + "Kly", + "LNDDYL", + "Liuxinyu970226", + "Sean0115", + "Wehwei", + "列维劳德", + "和平至上", + "沈澄心" + ] + }, + "VARIABLES_DEFAULT_NAME": "項目", + "UNNAMED_KEY": "未命名", + "TODAY": "今天", + "DUPLICATE_BLOCK": "重複", + "ADD_COMMENT": "加入註解", + "REMOVE_COMMENT": "移除註解", + "DUPLICATE_COMMENT": "複製註解", + "EXTERNAL_INPUTS": "外部輸入", + "INLINE_INPUTS": "單行輸入", + "DELETE_BLOCK": "刪除區塊", + "DELETE_X_BLOCKS": "刪除%1個積木", + "DELETE_ALL_BLOCKS": "刪除全部 %1 個區塊?", + "CLEAN_UP": "整理區塊", + "COLLAPSE_BLOCK": "收合區塊", + "COLLAPSE_ALL": "收合區塊", + "EXPAND_BLOCK": "展開區塊", + "EXPAND_ALL": "展開積木", + "DISABLE_BLOCK": "停用區塊", + "ENABLE_BLOCK": "啟用積木", + "HELP": "說明", + "UNDO": "還原", + "REDO": "重做", + "CHANGE_VALUE_TITLE": "修改值:", + "RENAME_VARIABLE": "重新命名變數...", + "RENAME_VARIABLE_TITLE": "將所有「%1」變數重新命名為:", + "NEW_VARIABLE": "建立變數…", + "NEW_STRING_VARIABLE": "建立字串變數……", + "NEW_NUMBER_VARIABLE": "建立數值變數……", + "NEW_COLOUR_VARIABLE": "建立顏色變數…", + "NEW_VARIABLE_TYPE_TITLE": "新變數類型:", + "NEW_VARIABLE_TITLE": "新變數名稱:", + "VARIABLE_ALREADY_EXISTS": "已存在變數「%1」。", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "已存在名為「%1」,且用於其它類型「%2」的變數。", + "DELETE_VARIABLE_CONFIRMATION": "刪除使用%1次的「%2」變數?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "無法刪除變數「%1」,因為這是功能「%2」定義的一部份內容", + "DELETE_VARIABLE": "刪除變數「%1」", + "COLOUR_PICKER_HELPURL": "https://zh.wikipedia.org/wiki/顏色", + "COLOUR_PICKER_TOOLTIP": "從調色板中選擇一種顏色。", + "COLOUR_RANDOM_TITLE": "隨機顏色", + "COLOUR_RANDOM_TOOLTIP": "隨機選擇一種顏色。", + "COLOUR_RGB_TITLE": "顏色", + "COLOUR_RGB_RED": "紅", + "COLOUR_RGB_GREEN": "綠", + "COLOUR_RGB_BLUE": "藍", + "COLOUR_RGB_TOOLTIP": "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。", + "COLOUR_BLEND_TITLE": "混合", + "COLOUR_BLEND_COLOUR1": "顏色 1", + "COLOUR_BLEND_COLOUR2": "顏色 2", + "COLOUR_BLEND_RATIO": "比例", + "COLOUR_BLEND_TOOLTIP": "用一個給定的比率(0.0-1.0)混合兩種顏色。", + "CONTROLS_REPEAT_HELPURL": "https://zh.wikipedia.org/wiki/For迴圈", + "CONTROLS_REPEAT_TITLE": "重複%1次", + "CONTROLS_REPEAT_INPUT_DO": "執行", + "CONTROLS_REPEAT_TOOLTIP": "重複執行指定的陳述式多次。", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "重複,當", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "重複直到", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "當值為 true 時,執行一些陳述式。", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "當值為 false 時,執行一些陳述式。", + "CONTROLS_FOR_TOOLTIP": "從起始數到結尾數中取出變數「%1」的值,按指定的時間間隔,執行指定的區塊。", + "CONTROLS_FOR_TITLE": "循環計數 %1 從 %2 到 %3 每次增加 %4", + "CONTROLS_FOREACH_TITLE": "為列表 %2 裡的每一項 %1", + "CONTROLS_FOREACH_TOOLTIP": "遍歷每個清單中的項目,將變數「%1」設定到該項目中,然後執行某些陳述式。", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "中斷循環", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "繼續下一個循環", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "中斷當前的循環。", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "跳過這個循環的其餘步驟,並繼續下一次的循環。", + "CONTROLS_FLOW_STATEMENTS_WARNING": "警告:此區塊僅可用於循環內。", + "CONTROLS_IF_TOOLTIP_1": "當值為 true 時,執行一些陳述式。", + "CONTROLS_IF_TOOLTIP_2": "當值為 true 時,執行第一個陳述式。否則,執行第二個陳述式。", + "CONTROLS_IF_TOOLTIP_3": "如果第一個值為 true,則執行第一個陳述式。否則,當第二個值為 true 時,則執行第二個陳述式。", + "CONTROLS_IF_TOOLTIP_4": "如果第一個值為 true,則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。如果前幾個敘述都不為 ture,則執行最後一個陳述式。", + "CONTROLS_IF_MSG_IF": "如果", + "CONTROLS_IF_MSG_ELSEIF": "否則,如果", + "CONTROLS_IF_MSG_ELSE": "否則", + "CONTROLS_IF_IF_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。", + "CONTROLS_IF_ELSEIF_TOOLTIP": "添加條件到「如果」積木。", + "CONTROLS_IF_ELSE_TOOLTIP": "加入一個最終、所有條件都執行的部份到「如果」區塊中。", + "LOGIC_COMPARE_HELPURL": "https://zh.wikipedia.org/wiki/不等", + "LOGIC_COMPARE_TOOLTIP_EQ": "如果這兩個輸入區塊的結果相等,返回 true。", + "LOGIC_COMPARE_TOOLTIP_NEQ": "如果這兩個輸入區塊的結果不相等,返回 true。", + "LOGIC_COMPARE_TOOLTIP_LT": "如果第一個輸入結果比第二個小,返回 true。", + "LOGIC_COMPARE_TOOLTIP_LTE": "如果第一個輸入結果小於或等於第二個,返回 true。", + "LOGIC_COMPARE_TOOLTIP_GT": "如果第一個輸入結果大於第二個,返回 true。", + "LOGIC_COMPARE_TOOLTIP_GTE": "如果第一個輸入結果大於或等於第二個,返回 true。", + "LOGIC_OPERATION_TOOLTIP_AND": "如果兩個輸入結果都為 true,則返回 true。", + "LOGIC_OPERATION_AND": "和", + "LOGIC_OPERATION_TOOLTIP_OR": "如果至少一個輸入結果為 true,返回 true。", + "LOGIC_OPERATION_OR": "或", + "LOGIC_NEGATE_TITLE": "%1 不成立", + "LOGIC_NEGATE_TOOLTIP": "如果輸入結果是 false,則返回 true。如果輸入結果是 true,則返回 false。", + "LOGIC_BOOLEAN_TRUE": "真", + "LOGIC_BOOLEAN_FALSE": "假", + "LOGIC_BOOLEAN_TOOLTIP": "返回真或假。", + "LOGIC_NULL": "空", + "LOGIC_NULL_TOOLTIP": "返回空值。", + "LOGIC_TERNARY_HELPURL": "https://zh.wikipedia.org/wiki/條件運算符", + "LOGIC_TERNARY_CONDITION": "測試", + "LOGIC_TERNARY_IF_TRUE": "如果為真", + "LOGIC_TERNARY_IF_FALSE": "如果為假", + "LOGIC_TERNARY_TOOLTIP": "檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。", + "MATH_NUMBER_HELPURL": "https://zh.wikipedia.org/wiki/數", + "MATH_NUMBER_TOOLTIP": "一個數字。", + "MATH_ARITHMETIC_HELPURL": "https://zh.wikipedia.org/wiki/算術", + "MATH_ARITHMETIC_TOOLTIP_ADD": "返回兩個數字的總和。", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "返回兩個數字的差。", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "返回兩個數字的乘積。", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "返回兩個數字的商。", + "MATH_ARITHMETIC_TOOLTIP_POWER": "返回第二個數字的指數的第一個數字。", + "MATH_SINGLE_HELPURL": "https://zh.wikipedia.org/wiki/平方根", + "MATH_SINGLE_OP_ROOT": "開根號", + "MATH_SINGLE_TOOLTIP_ROOT": "返回指定數字的平方根。", + "MATH_SINGLE_OP_ABSOLUTE": "絕對值", + "MATH_SINGLE_TOOLTIP_ABS": "返回指定數字的絕對值。", + "MATH_SINGLE_TOOLTIP_NEG": "返回指定數字的相反數。", + "MATH_SINGLE_TOOLTIP_LN": "返回指定數字的自然對數。", + "MATH_SINGLE_TOOLTIP_LOG10": "返回指定數字的對數。", + "MATH_SINGLE_TOOLTIP_EXP": "返回指定數字指數的e的冪次。", + "MATH_SINGLE_TOOLTIP_POW10": "返回指定數字指數的10的冪次。", + "MATH_TRIG_HELPURL": "https://zh.wikipedia.org/wiki/三角函數", + "MATH_TRIG_TOOLTIP_SIN": "返回指定角度的正弦值(非弧度)。", + "MATH_TRIG_TOOLTIP_COS": "返回指定角度的餘弦值(非弧度)。", + "MATH_TRIG_TOOLTIP_TAN": "返回指定角度的正切值(非弧度)。", + "MATH_TRIG_TOOLTIP_ASIN": "返回指定角度的反正弦值(非弧度)。", + "MATH_TRIG_TOOLTIP_ACOS": "返回指定角度的反餘弦值(非弧度)。", + "MATH_TRIG_TOOLTIP_ATAN": "返回指定角度的反正切值。", + "MATH_CONSTANT_HELPURL": "https://zh.wikipedia.org/wiki/數學常數", + "MATH_CONSTANT_TOOLTIP": "返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。", + "MATH_IS_EVEN": "是偶數", + "MATH_IS_ODD": "是奇數", + "MATH_IS_PRIME": "是質數", + "MATH_IS_WHOLE": "是整數", + "MATH_IS_POSITIVE": "是正值", + "MATH_IS_NEGATIVE": "是負數", + "MATH_IS_DIVISIBLE_BY": "可被整除", + "MATH_IS_TOOLTIP": "如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。", + "MATH_CHANGE_HELPURL": "https://zh.wikipedia.org/wiki/加法", + "MATH_CHANGE_TITLE": "修改 %1 自 %2", + "MATH_CHANGE_TOOLTIP": "將數字加到變數「%1」。", + "MATH_ROUND_HELPURL": "https://zh.wikipedia.org/wiki/數值簡化", + "MATH_ROUND_TOOLTIP": "將數字無條件進位或無條件捨去。", + "MATH_ROUND_OPERATOR_ROUND": "四捨五入", + "MATH_ROUND_OPERATOR_ROUNDUP": "無條件進位", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "無條件捨去", + "MATH_ONLIST_OPERATOR_SUM": "數字總和 自清單", + "MATH_ONLIST_TOOLTIP_SUM": "返回清單中的所有數字的總和。", + "MATH_ONLIST_OPERATOR_MIN": "最小值 自清單", + "MATH_ONLIST_TOOLTIP_MIN": "返回清單項目中最小的數字。", + "MATH_ONLIST_OPERATOR_MAX": "最大值 自清單", + "MATH_ONLIST_TOOLTIP_MAX": "返回清單項目中最大的數字。", + "MATH_ONLIST_OPERATOR_AVERAGE": "平均數 自清單", + "MATH_ONLIST_TOOLTIP_AVERAGE": "返回清單中數值的平均值(算術平均值)。", + "MATH_ONLIST_OPERATOR_MEDIAN": "中位數 自清單", + "MATH_ONLIST_TOOLTIP_MEDIAN": "返回清單中數值的中位數。", + "MATH_ONLIST_OPERATOR_MODE": "比較眾數 自清單", + "MATH_ONLIST_TOOLTIP_MODE": "返回一個清單中的最常見的項目。", + "MATH_ONLIST_OPERATOR_STD_DEV": "標準差 自清單", + "MATH_ONLIST_TOOLTIP_STD_DEV": "返回清單中數字的標準差。", + "MATH_ONLIST_OPERATOR_RANDOM": "隨機抽取 自清單", + "MATH_ONLIST_TOOLTIP_RANDOM": "從清單中返回一個隨機的項目。", + "MATH_MODULO_HELPURL": "https://zh.wikipedia.org/wiki/模除", + "MATH_MODULO_TITLE": "%1 除以 %2 的餘數", + "MATH_MODULO_TOOLTIP": "回傳兩個數字相除的餘數。", + "MATH_CONSTRAIN_TITLE": "限制數字 %1 介於(低)%2 到(高)%3", + "MATH_CONSTRAIN_TOOLTIP": "限制數字介於兩個指定的數字之間(包含)。", + "MATH_RANDOM_INT_HELPURL": "https://zh.wikipedia.org/wiki/隨機數生成器", + "MATH_RANDOM_INT_TITLE": "隨機取數 %1 到 %2", + "MATH_RANDOM_INT_TOOLTIP": "在指定二個數之間隨機取一個數(包含)。", + "MATH_RANDOM_FLOAT_HELPURL": "https://zh.wikipedia.org/wiki/隨機數生成器", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "隨機取分數", + "MATH_RANDOM_FLOAT_TOOLTIP": "在 0.0(包含)和 1.0(不包含)之間隨機取一個數。", + "MATH_ATAN2_HELPURL": "https://zh.wikipedia.org/wiki/Atan2", + "MATH_ATAN2_TITLE": "X:%1 Y:%2 的 Atan2", + "MATH_ATAN2_TOOLTIP": "回傳點(X,Y)從 -180 至 180 度的反正切值。", + "TEXT_TEXT_HELPURL": "https://zh.wikipedia.org/wiki/字串", + "TEXT_TEXT_TOOLTIP": "一個字元、一個單詞,或一串文字。", + "TEXT_JOIN_TITLE_CREATEWITH": "字串組合", + "TEXT_JOIN_TOOLTIP": "通過連接任意數量的項目來建立一串文字。", + "TEXT_CREATE_JOIN_TITLE_JOIN": "加入", + "TEXT_CREATE_JOIN_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個文字區塊。", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "添加一個項目到字串中。", + "TEXT_APPEND_TITLE": "至 %1 套用文字 %2", + "TEXT_APPEND_TOOLTIP": "添加一些文字到變數「%1」之後。", + "TEXT_LENGTH_TITLE": "長度 %1", + "TEXT_LENGTH_TOOLTIP": "返回這串文字的字元數(包含空格)。", + "TEXT_ISEMPTY_TITLE": "%1 為空", + "TEXT_ISEMPTY_TOOLTIP": "如果提供的字串為空,則返回 true。", + "TEXT_INDEXOF_TOOLTIP": "在字串1中檢索是否有包含字串2,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。", + "TEXT_INDEXOF_TITLE": "在文字 %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "從 最前面 索引字串", + "TEXT_INDEXOF_OPERATOR_LAST": "從 最後面 索引字串", + "TEXT_CHARAT_TITLE": "在文字 %1 %2", + "TEXT_CHARAT_FROM_START": "取得 字元 #", + "TEXT_CHARAT_FROM_END": "取得 倒數第 # 個字元", + "TEXT_CHARAT_FIRST": "取得 第一個字元", + "TEXT_CHARAT_LAST": "取得 最後一個字元", + "TEXT_CHARAT_RANDOM": "取得 任意字元", + "TEXT_CHARAT_TOOLTIP": "返回位於指定位置的字元。", + "TEXT_GET_SUBSTRING_TOOLTIP": "返回指定的部分文字。", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "在字串", + "TEXT_GET_SUBSTRING_START_FROM_START": "取得 字元 #", + "TEXT_GET_SUBSTRING_START_FROM_END": "取得 倒數第 # 個字元", + "TEXT_GET_SUBSTRING_START_FIRST": "取得 第一個字元", + "TEXT_GET_SUBSTRING_END_FROM_START": "到 字元 #", + "TEXT_GET_SUBSTRING_END_FROM_END": "到 倒數第 # 個字元", + "TEXT_GET_SUBSTRING_END_LAST": "到最後一個字元", + "TEXT_CHANGECASE_TOOLTIP": "使用不同的大小寫複製這段文字。", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "轉成英文大寫", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "轉成英文小寫", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "轉成英文首字大寫", + "TEXT_TRIM_TOOLTIP": "複製這段文字,同時刪除兩端多餘的空格。", + "TEXT_TRIM_OPERATOR_BOTH": "消除兩側空格", + "TEXT_TRIM_OPERATOR_LEFT": "消除左側空格", + "TEXT_TRIM_OPERATOR_RIGHT": "消除右側空格", + "TEXT_PRINT_TITLE": "輸出 %1", + "TEXT_PRINT_TOOLTIP": "輸出指定的文字、 數字或其他值。", + "TEXT_PROMPT_TYPE_TEXT": "輸入 文字 並顯示提示訊息", + "TEXT_PROMPT_TYPE_NUMBER": "輸入 數字 並顯示提示訊息", + "TEXT_PROMPT_TOOLTIP_NUMBER": "輸入數字", + "TEXT_PROMPT_TOOLTIP_TEXT": "輸入文字", + "TEXT_COUNT_MESSAGE0": "在%2計算%1", + "TEXT_COUNT_HELPURL": "https://github.com/google/blockly/wiki/Text#counting-substrings", + "TEXT_COUNT_TOOLTIP": "計算某些文字在內容裡的出現次數。", + "TEXT_REPLACE_MESSAGE0": "在%3以%2取代%1", + "TEXT_REPLACE_HELPURL": "https://github.com/google/blockly/wiki/Text#replacing-substrings", + "TEXT_REPLACE_TOOLTIP": "取代在內容裡的全部某些文字。", + "TEXT_REVERSE_MESSAGE0": "反轉%1", + "TEXT_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Text#reversing-text", + "TEXT_REVERSE_TOOLTIP": "反轉排序在文字裡的字元。", + "LISTS_CREATE_EMPTY_TITLE": "建立空的清單", + "LISTS_CREATE_EMPTY_TOOLTIP": "返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄", + "LISTS_CREATE_WITH_TOOLTIP": "建立一個具備任意數量項目的清單。", + "LISTS_CREATE_WITH_INPUT_WITH": "使用這些值建立清單", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "清單", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個清單區塊。", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "添加一個項目到清單裡。", + "LISTS_REPEAT_TOOLTIP": "建立一個清單,項目中包含指定重複次數的值。", + "LISTS_REPEAT_TITLE": "建立清單使用項目 %1 重複 %2 次", + "LISTS_LENGTH_TITLE": "長度 %1", + "LISTS_LENGTH_TOOLTIP": "返回清單的長度(項目數)。", + "LISTS_ISEMPTY_TITLE": "%1 值為空", + "LISTS_ISEMPTY_TOOLTIP": "如果該清單為空,則返回 true。", + "LISTS_INLIST": "自清單", + "LISTS_INDEX_OF_FIRST": "從 最前面 索引項目", + "LISTS_INDEX_OF_LAST": "從 最後面 索引項目", + "LISTS_INDEX_OF_TOOLTIP": "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。", + "LISTS_GET_INDEX_GET": "取得", + "LISTS_GET_INDEX_GET_REMOVE": "取得並移除", + "LISTS_GET_INDEX_REMOVE": "移除", + "LISTS_GET_INDEX_FROM_END": "倒數第 # 筆", + "LISTS_GET_INDEX_FIRST": "第一筆", + "LISTS_GET_INDEX_LAST": "最後一筆", + "LISTS_GET_INDEX_RANDOM": "隨機", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 是第一個項目。", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 是最後一個項目。", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "返回在清單中指定位置的項目。", + "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "返回清單中的第一個項目。", + "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "返回清單中的最後一個項目。", + "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "返回清單中隨機一個項目。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "移除並返回清單中的指定位置的項目。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "移除並返回清單中的第一個項目。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "移除並返回清單中的最後一個項目。", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "移除並返回清單中的隨機項目。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "移除在清單中指定位置的項目。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "移除清單中的第一個項目。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "移除清單中的最後一個項目。", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "移除清單中隨機一個項目。", + "LISTS_SET_INDEX_SET": "設定", + "LISTS_SET_INDEX_INSERT": "添加", + "LISTS_SET_INDEX_INPUT_TO": "為", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "設定清單中指定位置的項目。", + "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "設定清單中的第一個項目。", + "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "設定清單中的最後一個項目。", + "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "設定清單中隨機一個項目。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "添加一個項目到清單中的指定位置。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "添加一個項目到清單中的第一個位置。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "添加一個項目到清單中的最後一個位置。", + "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "添加一個項目到清單中的隨機位置。", + "LISTS_GET_SUBLIST_START_FROM_START": "取得子清單 從 #", + "LISTS_GET_SUBLIST_START_FROM_END": "取得子清單 從 # 倒數", + "LISTS_GET_SUBLIST_START_FIRST": "取得子清單 從 最前面", + "LISTS_GET_SUBLIST_END_FROM_START": "到 #", + "LISTS_GET_SUBLIST_END_FROM_END": "到 # 倒數", + "LISTS_GET_SUBLIST_END_LAST": "到 最後面", + "LISTS_GET_SUBLIST_TOOLTIP": "複製清單中指定的部分。", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "排列 %1 %2 %3", + "LISTS_SORT_TOOLTIP": "排序清單的複製內容。", + "LISTS_SORT_ORDER_ASCENDING": "升序", + "LISTS_SORT_ORDER_DESCENDING": "降序", + "LISTS_SORT_TYPE_NUMERIC": "依數字", + "LISTS_SORT_TYPE_TEXT": "依字母", + "LISTS_SORT_TYPE_IGNORECASE": "依字母排序,忽略大小寫", + "LISTS_SPLIT_LIST_FROM_TEXT": "從文本製作清單", + "LISTS_SPLIT_TEXT_FROM_LIST": "從清單拆出文本", + "LISTS_SPLIT_WITH_DELIMITER": "用分隔符", + "LISTS_SPLIT_TOOLTIP_SPLIT": "將文本變成清單項目,按分隔符號拆分。", + "LISTS_SPLIT_TOOLTIP_JOIN": "串起清單項目成一個文本,並用分隔符號分開。", + "LISTS_REVERSE_HELPURL": "https://github.com/google/blockly/wiki/Lists#reversing-a-list", + "LISTS_REVERSE_MESSAGE0": "反轉%1", + "LISTS_REVERSE_TOOLTIP": "反轉清單的複製內容。", + "VARIABLES_GET_TOOLTIP": "返回此變數的值。", + "VARIABLES_GET_CREATE_SET": "建立「賦值 %1」", + "VARIABLES_SET": "賦值 %1 成 %2", + "VARIABLES_SET_TOOLTIP": "設定此變數,好和輸入結果相等。", + "VARIABLES_SET_CREATE_GET": "建立「取得 %1」", + "PROCEDURES_DEFNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式", + "PROCEDURES_DEFNORETURN_TITLE": "到", + "PROCEDURES_DEFNORETURN_PROCEDURE": "做些什麼", + "PROCEDURES_BEFORE_PARAMS": "與:", + "PROCEDURES_CALL_BEFORE_PARAMS": "與:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "創建一個無回傳值的函式。", + "PROCEDURES_DEFNORETURN_COMMENT": "描述此函式...", + "PROCEDURES_DEFRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式", + "PROCEDURES_DEFRETURN_RETURN": "返回", + "PROCEDURES_DEFRETURN_TOOLTIP": "創建一個有回傳值的的函式。", + "PROCEDURES_ALLOW_STATEMENTS": "允許陳述式", + "PROCEDURES_DEF_DUPLICATE_WARNING": "警告: 此函式中有重複的參數。", + "PROCEDURES_CALLNORETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式", + "PROCEDURES_CALLNORETURN_TOOLTIP": "執行使用者定義的函式「%1」。", + "PROCEDURES_CALLRETURN_HELPURL": "https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F", + "PROCEDURES_CALLRETURN_TOOLTIP": "執行使用者定義的函式「%1」,並使用它的回傳值。", + "PROCEDURES_MUTATORCONTAINER_TITLE": "輸入", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "添加、刪除或重新排列此函式的輸入。", + "PROCEDURES_MUTATORARG_TITLE": "輸入名稱:", + "PROCEDURES_MUTATORARG_TOOLTIP": "添加一個輸入區塊到函式。", + "PROCEDURES_HIGHLIGHT_DEF": "反白顯示函式定義", + "PROCEDURES_CREATE_DO": "建立「%1」", + "PROCEDURES_IFRETURN_TOOLTIP": "如果值為 true,則返回第二個值。", + "PROCEDURES_IFRETURN_WARNING": "警告:這個區塊只可以在定義函式時使用。", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "來說些事情...", + "WORKSPACE_ARIA_LABEL": "Blockly工作區", + "COLLAPSED_WARNINGS_WARNING": "收合含有警告的區塊。", + "DIALOG_OK": "確定", + "DIALOG_CANCEL": "取消" +} diff --git a/msg/messages.js b/msg/messages.js index 37311dfa503..5670764b142 100644 --- a/msg/messages.js +++ b/msg/messages.js @@ -1,1599 +1,1632 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview English strings. - * - * After modifying this file, run: - * - * npm run generate:langfiles - * - * to regenerate json/{en,qqq,constants,synonyms}.json. - * - * To convert all of the json files to .js files, run: - * - * npm run build:langfiles - */ -'use strict'; - - -/** - * Due to the frequency of long strings, the 80-column wrap rule need not apply - * to message files. - */ - -/** - * Each message is preceded with a triple-slash comment that becomes the - * message descriptor. The build process extracts these descriptors, adds - * them to msg/json/qqq.json, and they show up in the translation console. - */ - -/** @type {string} */ -/// {{Notranslate}} Hue value for all logic blocks. -Blockly.Msg.LOGIC_HUE = '210'; -/** @type {string} */ -/// {{Notranslate}} Hue value for all loop blocks. -Blockly.Msg.LOOPS_HUE = '120'; -/** @type {string} */ -/// {{Notranslate}} Hue value for all math blocks. -Blockly.Msg.MATH_HUE = '230'; -/** @type {string} */ -/// {{Notranslate}} Hue value for all text blocks. -Blockly.Msg.TEXTS_HUE = '160'; -/** @type {string} */ -/// {{Notranslate}} Hue value for all list blocks. -Blockly.Msg.LISTS_HUE = '260'; -/** @type {string} */ -/// {{Notranslate}} Hue value for all colour blocks. -Blockly.Msg.COLOUR_HUE = '20'; -/** @type {string} */ -/// {{Notranslate}} Hue value for all variable blocks. -Blockly.Msg.VARIABLES_HUE = '330'; -/** @type {string} */ -/// {{Notranslate}} Hue value for all variable dynamic blocks. -Blockly.Msg.VARIABLES_DYNAMIC_HUE = '310'; -/** @type {string} */ -/// {{Notranslate}} Hue value for all procedure blocks. -Blockly.Msg.PROCEDURES_HUE = '290'; - -/** @type {string} */ -/// default name - A simple, general default name for a variable, preferably short. -/// For more context, see -/// [[Translating:Blockly#infrequent_message_types]].\n{{Identical|Item}} -Blockly.Msg.VARIABLES_DEFAULT_NAME = 'item'; -/** @type {string} */ -/// default name - A simple, default name for an unnamed function or variable. Preferably indicates that the item is unnamed. -Blockly.Msg.UNNAMED_KEY = 'unnamed'; -/** @type {string} */ -/// button text - Button that sets a calendar to today's date.\n{{Identical|Today}} -Blockly.Msg.TODAY = 'Today'; - -// Context menus. -/** @type {string} */ -/// context menu - Make a copy of the selected block (and any blocks it contains).\n{{Identical|Duplicate}} -Blockly.Msg.DUPLICATE_BLOCK = 'Duplicate'; -/** @type {string} */ -/// context menu - Add a descriptive comment to the selected block. -Blockly.Msg.ADD_COMMENT = 'Add Comment'; -/** @type {string} */ -/// context menu - Remove the descriptive comment from the selected block. -Blockly.Msg.REMOVE_COMMENT = 'Remove Comment'; -/** @type {string} */ -/// context menu - Make a copy of the selected workspace comment.\n{{Identical|Duplicate}} -Blockly.Msg.DUPLICATE_COMMENT = 'Duplicate Comment'; -/** @type {string} */ -/// context menu - Change from 'external' to 'inline' mode for displaying blocks used as inputs to the selected block. See [[Translating:Blockly#context_menus]]. -Blockly.Msg.EXTERNAL_INPUTS = 'External Inputs'; -/** @type {string} */ -/// context menu - Change from 'internal' to 'external' mode for displaying blocks used as inputs to the selected block. See [[Translating:Blockly#context_menus]]. -Blockly.Msg.INLINE_INPUTS = 'Inline Inputs'; -/** @type {string} */ -/// context menu - Permanently delete the selected block. -Blockly.Msg.DELETE_BLOCK = 'Delete Block'; -/** @type {string} */ -/// context menu - Permanently delete the %1 selected blocks.\n\nParameters:\n* %1 - an integer greater than 1. -Blockly.Msg.DELETE_X_BLOCKS = 'Delete %1 Blocks'; -/** @type {string} */ -/// confirmation prompt - Question the user if they really wanted to permanently delete all %1 blocks.\n\nParameters:\n* %1 - an integer greater than 1. -Blockly.Msg.DELETE_ALL_BLOCKS = 'Delete all %1 blocks?'; -/** @type {string} */ -/// context menu - Reposition all the blocks so that they form a neat line. -Blockly.Msg.CLEAN_UP = 'Clean up Blocks'; -/** @type {string} */ -/// context menu - Make the appearance of the selected block smaller by hiding some information about it. -Blockly.Msg.COLLAPSE_BLOCK = 'Collapse Block'; -/** @type {string} */ -/// context menu - Make the appearance of all blocks smaller by hiding some information about it. Use the same terminology as in the previous message. -Blockly.Msg.COLLAPSE_ALL = 'Collapse Blocks'; -/** @type {string} */ -/// context menu - Restore the appearance of the selected block by showing information about it that was hidden (collapsed) earlier. -Blockly.Msg.EXPAND_BLOCK = 'Expand Block'; -/** @type {string} */ -/// context menu - Restore the appearance of all blocks by showing information about it that was hidden (collapsed) earlier. Use the same terminology as in the previous message. -Blockly.Msg.EXPAND_ALL = 'Expand Blocks'; -/** @type {string} */ -/// context menu - Make the selected block have no effect (unless reenabled). -Blockly.Msg.DISABLE_BLOCK = 'Disable Block'; -/** @type {string} */ -/// context menu - Make the selected block have effect (after having been disabled earlier). -Blockly.Msg.ENABLE_BLOCK = 'Enable Block'; -/** @type {string} */ -/// context menu - Provide helpful information about the selected block.\n{{Identical|Help}} -Blockly.Msg.HELP = 'Help'; -/** @type {string} */ -/// context menu - Undo the previous action.\n{{Identical|Undo}} -Blockly.Msg.UNDO = 'Undo'; -/** @type {string} */ -/// context menu - Undo the previous undo action.\n{{Identical|Redo}} -Blockly.Msg.REDO = 'Redo'; - -// Variable renaming. -/** @type {string} */ -/// prompt - This message is only seen in the Opera browser. With most browsers, users can edit numeric values in blocks by just clicking and typing. Opera does not allows this, so we have to open a new window and prompt users with this message to chanage a value. -Blockly.Msg.CHANGE_VALUE_TITLE = 'Change value:'; -/** @type {string} */ -/// dropdown choice - When the user clicks on a variable block, this is one of the dropdown menu choices. It is used to rename the current variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu]. -Blockly.Msg.RENAME_VARIABLE = 'Rename variable...'; -/** @type {string} */ -/// prompt - Prompts the user to enter the new name for the selected variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].\n\nParameters:\n* %1 - the name of the variable to be renamed. -Blockly.Msg.RENAME_VARIABLE_TITLE = 'Rename all "%1" variables to:'; - -// Variable creation -/** @type {string} */ -/// button text - Text on the button used to launch the variable creation dialogue. -Blockly.Msg.NEW_VARIABLE = 'Create variable...'; -/** @type {string} */ -/// button text - Text on the button used to launch the variable creation dialogue. -Blockly.Msg.NEW_STRING_VARIABLE = 'Create string variable...'; -/** @type {string} */ -/// button text - Text on the button used to launch the variable creation dialogue. -Blockly.Msg.NEW_NUMBER_VARIABLE = 'Create number variable...'; -/** @type {string} */ -/// button text - Text on the button used to launch the variable creation dialogue. -Blockly.Msg.NEW_COLOUR_VARIABLE = 'Create colour variable...'; -/** @type {string} */ -/// prompt - Prompts the user to enter the type for a variable. -Blockly.Msg.NEW_VARIABLE_TYPE_TITLE = 'New variable type:'; -/** @type {string} */ -/// prompt - Prompts the user to enter the name for a new variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu]. -Blockly.Msg.NEW_VARIABLE_TITLE = 'New variable name:'; -/** @type {string} */ -/// alert - Tells the user that the name they entered is already in use. -Blockly.Msg.VARIABLE_ALREADY_EXISTS = 'A variable named "%1" already exists.'; -/** @type {string} */ -/// alert - Tells the user that the name they entered is already in use for another type. -Blockly.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE = 'A variable named "%1" already exists for another type: "%2".'; - -// Variable deletion. -/** @type {string} */ -/// confirm - Ask the user to confirm their deletion of multiple uses of a variable. -Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = 'Delete %1 uses of the "%2" variable?'; -/** @type {string} */ -/// alert - Tell the user that they can't delete a variable because it's part of the definition of a function. -Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE = 'Can\'t delete the variable "%1" because it\'s part of the definition of the function "%2"'; -/** @type {string} */ -/// dropdown choice - Delete the currently selected variable. -Blockly.Msg.DELETE_VARIABLE = 'Delete the "%1" variable'; - -// Colour Blocks. -/** @type {string} */ -/// {{Optional}} url - Information about colour. -Blockly.Msg.COLOUR_PICKER_HELPURL = 'https://en.wikipedia.org/wiki/Color'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette]. -Blockly.Msg.COLOUR_PICKER_TOOLTIP = 'Choose a colour from the palette.'; -/** @type {string} */ -/// {{Optional}} url - A link that displays a random colour each time you visit it. -Blockly.Msg.COLOUR_RANDOM_HELPURL = 'http://randomcolour.com'; -/** @type {string} */ -/// block text - Title of block that generates a colour at random. -Blockly.Msg.COLOUR_RANDOM_TITLE = 'random colour'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Colour#generating-a-random-colour https://github.com/google/blockly/wiki/Colour#generating-a-random-colour]. -Blockly.Msg.COLOUR_RANDOM_TOOLTIP = 'Choose a colour at random.'; -/** @type {string} */ -/// {{Optional}} url - A link for colour codes with percentages (0-100%) for each component, instead of the more common 0-255, which may be more difficult for beginners. -Blockly.Msg.COLOUR_RGB_HELPURL = 'https://www.december.com/html/spec/colorpercompact.html'; -/** @type {string} */ -/// block text - Title of block for [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components]. -Blockly.Msg.COLOUR_RGB_TITLE = 'colour with'; -/** @type {string} */ -/// block input text - The amount of red (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Red}} -Blockly.Msg.COLOUR_RGB_RED = 'red'; -/** @type {string} */ -/// block input text - The amount of green (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components]. -Blockly.Msg.COLOUR_RGB_GREEN = 'green'; -/** @type {string} */ -/// block input text - The amount of blue (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Blue}} -Blockly.Msg.COLOUR_RGB_BLUE = 'blue'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components]. -Blockly.Msg.COLOUR_RGB_TOOLTIP = 'Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.'; -/** @type {string} */ -/// {{Optional}} url - A useful link that displays blending of two colours. -Blockly.Msg.COLOUR_BLEND_HELPURL = 'https://meyerweb.com/eric/tools/color-blend/#:::rgbp'; -/** @type {string} */ -/// block text - A verb for blending two shades of paint. -Blockly.Msg.COLOUR_BLEND_TITLE = 'blend'; -/** @type {string} */ -/// block input text - The first of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend]. -Blockly.Msg.COLOUR_BLEND_COLOUR1 = 'colour 1'; -/** @type {string} */ -/// block input text - The second of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend]. -Blockly.Msg.COLOUR_BLEND_COLOUR2 = 'colour 2'; -/** @type {string} */ -/// block input text - The proportion of the [https://github.com/google/blockly/wiki/Colour#blending-colours blend] containing the first colour; the remaining proportion is of the second colour. For example, if the first colour is red and the second colour blue, a ratio of 1 would yield pure red, a ratio of .5 would yield purple (equal amounts of red and blue), and a ratio of 0 would yield pure blue.\n{{Identical|Ratio}} -Blockly.Msg.COLOUR_BLEND_RATIO = 'ratio'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Colour#blending-colours https://github.com/google/blockly/wiki/Colour#blending-colours]. -Blockly.Msg.COLOUR_BLEND_TOOLTIP = 'Blends two colours together with a given ratio (0.0 - 1.0).'; - -// Loop Blocks. -/** @type {string} */ -/// {{Optional}} url - Describes 'repeat loops' in computer programs; consider using the translation of the page [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow]. -Blockly.Msg.CONTROLS_REPEAT_HELPURL = 'https://en.wikipedia.org/wiki/For_loop'; -/** @type {string} */ -/// block input text - Title of [https://github.com/google/blockly/wiki/Loops#repeat repeat block].\n\nParameters:\n* %1 - the number of times the body of the loop should be repeated. -Blockly.Msg.CONTROLS_REPEAT_TITLE = 'repeat %1 times'; -/** @type {string} */ -/// block text - Preceding the blocks in the body of the loop. See [https://github.com/google/blockly/wiki/Loops https://github.com/google/blockly/wiki/Loops].\n{{Identical|Do}} -Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = 'do'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat https://github.com/google/blockly/wiki/Loops#repeat]. -Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = 'Do some statements several times.'; -/** @type {string} */ -/// {{Optional}} url - Describes 'while loops' in computer programs; consider using the translation of [https://en.wikipedia.org/wiki/While_loop https://en.wikipedia.org/wiki/While_loop], if present, or [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow]. -Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = 'https://github.com/google/blockly/wiki/Loops#repeat'; -/** @type {string} */ -Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; -/** @type {string} */ -/// dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-while repeat while] the following condition is true. -Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = 'repeat while'; -/** @type {string} */ -/// dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-until repeat until] the following condition becomes true. -Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = 'repeat until'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while]. -Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = 'While a value is true, then do some statements.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-until https://github.com/google/blockly/wiki/Loops#repeat-until]. -Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = 'While a value is false, then do some statements.'; - -/** @type {string} */ -/// {{Optional}} url - Describes 'for loops' in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/For_loop https://en.wikipedia.org/wiki/For_loop], if present. -Blockly.Msg.CONTROLS_FOR_HELPURL = 'https://github.com/google/blockly/wiki/Loops#count-with'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Loops#count-with https://github.com/google/blockly/wiki/Loops#count-with].\n\nParameters:\n* %1 - the name of the loop variable. -Blockly.Msg.CONTROLS_FOR_TOOLTIP = 'Have the variable "%1" take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.'; -/** @type {string} */ -/// block text - Repeatedly counts a variable (%1) -/// starting with a (usually lower) number in a range (%2), -/// ending with a (usually higher) number in a range (%3), and counting the -/// iterations by a number of steps (%4). As in -/// [https://github.com/google/blockly/wiki/Loops#count-with -/// https://github.com/google/blockly/wiki/Loops#count-with]. -/// [[File:Blockly-count-with.png]] -Blockly.Msg.CONTROLS_FOR_TITLE = 'count with %1 from %2 to %3 by %4'; -/** @type {string} */ -Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; - -/** @type {string} */ -/// {{Optional}} url - Describes 'for-each loops' in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/Foreach https://en.wikipedia.org/wiki/Foreach] if present. -Blockly.Msg.CONTROLS_FOREACH_HELPURL = 'https://github.com/google/blockly/wiki/Loops#for-each'; -/** @type {string} */ -/// block text - Title of [https://github.com/google/blockly/wiki/Loops#for-each for each block]. -/// Sequentially assigns every item in array %2 to the valiable %1. -Blockly.Msg.CONTROLS_FOREACH_TITLE = 'for each item %1 in list %2'; -/** @type {string} */ -Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; -/** @type {string} */ -/// block text - Description of [https://github.com/google/blockly/wiki/Loops#for-each for each blocks].\n\nParameters:\n* %1 - the name of the loop variable. -Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = 'For each item in a list, set the variable "%1" to the item, and then do some statements.'; - -/** @type {string} */ -/// {{Optional}} url - Describes control flow in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow], if it exists. -Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = 'https://github.com/google/blockly/wiki/Loops#loop-termination-blocks'; -/** @type {string} */ -/// dropdown - The current loop should be exited. See [https://github.com/google/blockly/wiki/Loops#break https://github.com/google/blockly/wiki/Loops#break]. -Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = 'break out of loop'; -/** @type {string} */ -/// dropdown - The current iteration of the loop should be ended and the next should begin. See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration]. -Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = 'continue with next iteration of loop'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Loops#break-out-of-loop https://github.com/google/blockly/wiki/Loops#break-out-of-loop]. -Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = 'Break out of the containing loop.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration]. -Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = 'Skip the rest of this loop, and continue with the next iteration.'; -/** @type {string} */ -/// warning - The user has tried placing a block outside of a loop (for each, while, repeat, etc.), but this type of block may only be used within a loop. See [https://github.com/google/blockly/wiki/Loops#loop-termination-blocks https://github.com/google/blockly/wiki/Loops#loop-termination-blocks]. -Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = 'Warning: This block may only be used within a loop.'; - -// Logic Blocks. -/** @type {string} */ -/// {{Optional}} url - Describes conditional statements (if-then-else) in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_else https://en.wikipedia.org/wiki/If_else], if present. -Blockly.Msg.CONTROLS_IF_HELPURL = 'https://github.com/google/blockly/wiki/IfElse'; -/** @type {string} */ -/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-blocks 'if' blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present. -Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = 'If a value is true, then do some statements.'; -/** @type {string} */ -/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-blocks if-else blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present. -Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = 'If a value is true, then do the first block of statements. Otherwise, do the second block of statements.'; -/** @type {string} */ -/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-blocks if-else-if blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present. -Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = 'If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.'; -/** @type {string} */ -/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-else-blocks if-else-if-else blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present. -Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = 'If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. -/// It is recommended, but not essential, that this have text in common with the translation of 'else if'\n{{Identical|If}} -Blockly.Msg.CONTROLS_IF_MSG_IF = 'if'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. The English words "otherwise if" would probably be clearer than "else if", but the latter is used because it is traditional and shorter. -Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = 'else if'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. The English word "otherwise" would probably be superior to "else", but the latter is used because it is traditional and shorter. -Blockly.Msg.CONTROLS_IF_MSG_ELSE = 'else'; -/** @type {string} */ -Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; -/** @type {string} */ -Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF; -/** @type {string} */ -/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification]. -Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = 'Add, remove, or reorder sections to reconfigure this if block.'; -/** @type {string} */ -Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF; -/** @type {string} */ -/// tooltip - Describes the 'else if' subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification]. -Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = 'Add a condition to the if block.'; -/** @type {string} */ -Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE; -/** @type {string} */ -/// tooltip - Describes the 'else' subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification]. -Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = 'Add a final, catch-all condition to the if block.'; - -/** @type {string} */ -/// {{Optional}} url - Information about comparisons. -Blockly.Msg.LOGIC_COMPARE_HELPURL = 'https://en.wikipedia.org/wiki/Inequality_(mathematics)'; -/** @type {string} */ -/// tooltip - Describes the equals (=) block. -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = 'Return true if both inputs equal each other.'; -/** @type {string} */ -/// tooltip - Describes the not equals (≠) block. -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = 'Return true if both inputs are not equal to each other.'; -/** @type {string} */ -/// tooltip - Describes the less than (<) block. -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = 'Return true if the first input is smaller than the second input.'; -/** @type {string} */ -/// tooltip - Describes the less than or equals (≤) block. -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = 'Return true if the first input is smaller than or equal to the second input.'; -/** @type {string} */ -/// tooltip - Describes the greater than (>) block. -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = 'Return true if the first input is greater than the second input.'; -/** @type {string} */ -/// tooltip - Describes the greater than or equals (≥) block. -Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = 'Return true if the first input is greater than or equal to the second input.'; - -/** @type {string} */ -/// {{Optional}} url - Information about the Boolean conjunction ("and") and disjunction ("or") operators. Consider using the translation of [https://en.wikipedia.org/wiki/Boolean_logic https://en.wikipedia.org/wiki/Boolean_logic], if it exists in your language. -Blockly.Msg.LOGIC_OPERATION_HELPURL = 'https://github.com/google/blockly/wiki/Logic#logical-operations'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction]. -Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = 'Return true if both inputs are true.'; -/** @type {string} */ -/// block text - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction].\n{{Identical|And}} -Blockly.Msg.LOGIC_OPERATION_AND = 'and'; -/** @type {string} */ -/// block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction]. -Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = 'Return true if at least one of the inputs is true.'; -/** @type {string} */ -/// block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction].\n{{Identical|Or}} -Blockly.Msg.LOGIC_OPERATION_OR = 'or'; - -/** @type {string} */ -/// {{Optional}} url - Information about logical negation. The translation of [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation] is recommended if it exists in the target language. -Blockly.Msg.LOGIC_NEGATE_HELPURL = 'https://github.com/google/blockly/wiki/Logic#not'; -/** @type {string} */ -/// block text - This is a unary operator that returns ''false'' when the input is ''true'', and ''true'' when the input is ''false''. -/// \n\nParameters:\n* %1 - the input (which should be either the value "true" or "false") -Blockly.Msg.LOGIC_NEGATE_TITLE = 'not %1'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation]. -Blockly.Msg.LOGIC_NEGATE_TOOLTIP = 'Returns true if the input is false. Returns false if the input is true.'; - -/** @type {string} */ -/// {{Optional}} url - Information about the logic values ''true'' and ''false''. Consider using the translation of [https://en.wikipedia.org/wiki/Truth_value https://en.wikipedia.org/wiki/Truth_value] if it exists in your language. -Blockly.Msg.LOGIC_BOOLEAN_HELPURL = 'https://github.com/google/blockly/wiki/Logic#values'; -/** @type {string} */ -/// block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] ''true''.\n{{Identical|True}} -Blockly.Msg.LOGIC_BOOLEAN_TRUE = 'true'; -/** @type {string} */ -/// block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] ''false''.\n{{Identical|False}} -Blockly.Msg.LOGIC_BOOLEAN_FALSE = 'false'; -/** @type {string} */ -/// tooltip - Indicates that the block returns either of the two possible [https://en.wikipedia.org/wiki/Truth_value logical values]. -Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = 'Returns either true or false.'; - -/** @type {string} */ -/// {{Optional}} url - Provide a link to the translation of [https://en.wikipedia.org/wiki/Nullable_type https://en.wikipedia.org/wiki/Nullable_type], if it exists in your language; otherwise, do not worry about translating this advanced concept. -Blockly.Msg.LOGIC_NULL_HELPURL = 'https://en.wikipedia.org/wiki/Nullable_type'; -/** @type {string} */ -/// block text - In computer languages, ''null'' is a special value that indicates that no value has been set. You may use your language's word for "nothing" or "invalid".\n{{Identical|Null}} -Blockly.Msg.LOGIC_NULL = 'null'; -/** @type {string} */ -/// tooltip - This should use the word from the previous message. -Blockly.Msg.LOGIC_NULL_TOOLTIP = 'Returns null.'; - -/** @type {string} */ -/// {{Optional}} url - Describes the programming language operator known as the ''ternary'' or ''conditional'' operator. It is recommended that you use the translation of [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:] if it exists. -Blockly.Msg.LOGIC_TERNARY_HELPURL = 'https://en.wikipedia.org/wiki/%3F:'; -/** @type {string} */ -/// block input text - Label for the input whose value determines which of the other two inputs is returned. In some programming languages, this is called a ''''predicate''''. -Blockly.Msg.LOGIC_TERNARY_CONDITION = 'test'; -/** @type {string} */ -/// block input text - Indicates that the following input should be returned (used as output) if the test input is true. Remember to try to keep block text terse (short). -Blockly.Msg.LOGIC_TERNARY_IF_TRUE = 'if true'; -/** @type {string} */ -/// block input text - Indicates that the following input should be returned (used as output) if the test input is false. -Blockly.Msg.LOGIC_TERNARY_IF_FALSE = 'if false'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:]. -Blockly.Msg.LOGIC_TERNARY_TOOLTIP = 'Check the condition in "test". If the condition is true, returns the "if true" value; otherwise returns the "if false" value.'; - -// Math Blocks. -/** @type {string} */ -/// {{Optional}} url - Information about (real) numbers. -Blockly.Msg.MATH_NUMBER_HELPURL = 'https://en.wikipedia.org/wiki/Number'; -/** @type {string} */ -/// tooltip - Any positive or negative number, not necessarily an integer. -Blockly.Msg.MATH_NUMBER_TOOLTIP = 'A number.'; - -/** @type {string} */ -/// {{Optional}} math - The symbol for the binary operation addition. -Blockly.Msg.MATH_ADDITION_SYMBOL = '+'; -/** @type {string} */ -/// {{Optional}} math - The symbol for the binary operation indicating that the right operand should be -/// subtracted from the left operand. -Blockly.Msg.MATH_SUBTRACTION_SYMBOL = '-'; -/** @type {string} */ -/// {{Optional}} math - The binary operation indicating that the left operand should be divided by -/// the right operand. -Blockly.Msg.MATH_DIVISION_SYMBOL = '÷'; -/** @type {string} */ -/// {{Optional}} math - The symbol for the binary operation multiplication. -Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = '×'; -/** @type {string} */ -/// {{Optional}} math - The symbol for the binary operation exponentiation. Specifically, if the -/// value of the left operand is L and the value of the right operand (the exponent) is -/// R, multiply L by itself R times. (Fractional and negative exponents are also legal.) -Blockly.Msg.MATH_POWER_SYMBOL = '^'; - -/** @type {string} */ -/// math - The short name of the trigonometric function -/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine]. -Blockly.Msg.MATH_TRIG_SIN = 'sin'; -/** @type {string} */ -/// math - The short name of the trigonometric function -/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine]. -Blockly.Msg.MATH_TRIG_COS = 'cos'; -/** @type {string} */ -/// math - The short name of the trigonometric function -/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent]. -Blockly.Msg.MATH_TRIG_TAN = 'tan'; -/** @type {string} */ -/// math - The short name of the ''inverse of'' the trigonometric function -/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine]. -Blockly.Msg.MATH_TRIG_ASIN = 'asin'; -/** @type {string} */ -/// math - The short name of the ''inverse of'' the trigonometric function -/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine]. -Blockly.Msg.MATH_TRIG_ACOS = 'acos'; -/** @type {string} */ -/// math - The short name of the ''inverse of'' the trigonometric function -/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent]. -Blockly.Msg.MATH_TRIG_ATAN = 'atan'; - -/** @type {string} */ -/// {{Optional}} url - Information about addition, subtraction, multiplication, division, and exponentiation. -Blockly.Msg.MATH_ARITHMETIC_HELPURL = 'https://en.wikipedia.org/wiki/Arithmetic'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition]. -Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = 'Return the sum of the two numbers.'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Subtraction https://en.wikipedia.org/wiki/Subtraction]. -Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = 'Return the difference of the two numbers.'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Multiplication https://en.wikipedia.org/wiki/Multiplication]. -Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = 'Return the product of the two numbers.'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Division_(mathematics) https://en.wikipedia.org/wiki/Division_(mathematics)]. -Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = 'Return the quotient of the two numbers.'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Exponentiation https://en.wikipedia.org/wiki/Exponentiation]. -Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = 'Return the first number raised to the power of the second number.'; - -/** @type {string} */ -/// {{Optional}} url - Information about the square root operation. -Blockly.Msg.MATH_SINGLE_HELPURL = 'https://en.wikipedia.org/wiki/Square_root'; -/** @type {string} */ -/// dropdown - This computes the positive [https://en.wikipedia.org/wiki/Square_root square root] of its input. For example, the square root of 16 is 4. -Blockly.Msg.MATH_SINGLE_OP_ROOT = 'square root'; -/** @type {string} */ -/// tooltip - Please use the same term as in the previous message. -Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = 'Return the square root of a number.'; -/** @type {string} */ -/// dropdown - This leaves positive numeric inputs changed and inverts negative inputs. For example, the absolute value of 5 is 5; the absolute value of -5 is also 5. For more information, see [https://en.wikipedia.org/wiki/Absolute_value https://en.wikipedia.org/wiki/Absolute_value]. -Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = 'absolute'; -/** @type {string} */ -/// tooltip - Please use the same term as in the previous message. -Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = 'Return the absolute value of a number.'; - -/** @type {string} */ -/// tooltip - Calculates '''0-n''', where '''n''' is the single numeric input. -Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = 'Return the negation of a number.'; -/** @type {string} */ -/// tooltip - Calculates the [https://en.wikipedia.org/wiki/Natural_logarithm|natural logarithm] of its single numeric input. -Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = 'Return the natural logarithm of a number.'; -/** @type {string} */ -/// tooltip - Calculates the [https://en.wikipedia.org/wiki/Common_logarithm common logarithm] of its single numeric input. -Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = 'Return the base 10 logarithm of a number.'; -/** @type {string} */ -/// tooltip - Multiplies [https://en.wikipedia.org/wiki/E_(mathematical_constant) e] by itself n times, where n is the single numeric input. -Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = 'Return e to the power of a number.'; -/** @type {string} */ -/// tooltip - Multiplies 10 by itself n times, where n is the single numeric input. -Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = 'Return 10 to the power of a number.'; - -/** @type {string} */ -/// {{Optional}} url - Information about the trigonometric functions sine, cosine, tangent, and their inverses (ideally using degrees, not radians). -Blockly.Msg.MATH_TRIG_HELPURL = 'https://en.wikipedia.org/wiki/Trigonometric_functions'; -/** @type {string} */ -/// tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians. -Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = 'Return the sine of a degree (not radian).'; -/** @type {string} */ -/// tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians. -Blockly.Msg.MATH_TRIG_TOOLTIP_COS = 'Return the cosine of a degree (not radian).'; -/** @type {string} */ -/// tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians. -Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = 'Return the tangent of a degree (not radian).'; -/** @type {string} */ -/// tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent sine function], using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians. -Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = 'Return the arcsine of a number.'; -/** @type {string} */ -/// tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent cosine] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians. -Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = 'Return the arccosine of a number.'; -/** @type {string} */ -/// tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent tangent] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians. -Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = 'Return the arctangent of a number.'; - -/** @type {string} */ -/// {{Optional}} url - Information about the mathematical constants Pi (π), e, the golden ratio (φ), √ 2, √ 1/2, and infinity (∞). -Blockly.Msg.MATH_CONSTANT_HELPURL = 'https://en.wikipedia.org/wiki/Mathematical_constant'; -/** @type {string} */ -/// tooltip - Provides the specified [https://en.wikipedia.org/wiki/Mathematical_constant mathematical constant]. -Blockly.Msg.MATH_CONSTANT_TOOLTIP = 'Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).'; -/** @type {string} */ -/// dropdown - A number is '''even''' if it is a multiple of 2. For example, 4 is even (yielding true), but 3 is not (false). -Blockly.Msg.MATH_IS_EVEN = 'is even'; -/** @type {string} */ -/// dropdown - A number is '''odd''' if it is not a multiple of 2. For example, 3 is odd (yielding true), but 4 is not (false). The opposite of "odd" is "even". -Blockly.Msg.MATH_IS_ODD = 'is odd'; -/** @type {string} */ -/// dropdown - A number is [https://en.wikipedia.org/wiki/Prime prime] if it cannot be evenly divided by any positive integers except for 1 and itself. For example, 5 is prime, but 6 is not because 2 × 3 = 6. -Blockly.Msg.MATH_IS_PRIME = 'is prime'; -/** @type {string} */ -/// dropdown - A number is '''whole''' if it is an [https://en.wikipedia.org/wiki/Integer integer]. For example, 5 is whole, but 5.1 is not. -Blockly.Msg.MATH_IS_WHOLE = 'is whole'; -/** @type {string} */ -/// dropdown - A number is '''positive''' if it is greater than 0. (0 is neither negative nor positive.) -Blockly.Msg.MATH_IS_POSITIVE = 'is positive'; -/** @type {string} */ -/// dropdown - A number is '''negative''' if it is less than 0. (0 is neither negative nor positive.) -Blockly.Msg.MATH_IS_NEGATIVE = 'is negative'; -/** @type {string} */ -/// dropdown - A number x is divisible by y if y goes into x evenly. For example, 10 is divisible by 5, but 10 is not divisible by 3. -Blockly.Msg.MATH_IS_DIVISIBLE_BY = 'is divisible by'; -/** @type {string} */ -/// tooltip - This block lets the user specify via a dropdown menu whether to check if the numeric input is even, odd, prime, whole, positive, negative, or divisible by a given value. -Blockly.Msg.MATH_IS_TOOLTIP = 'Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.'; - -/** @type {string} */ -/// {{Optional}} url - Information about incrementing (increasing the value of) a variable. -/// For other languages, just use the translation of the Wikipedia page about -/// addition ([https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition]). -Blockly.Msg.MATH_CHANGE_HELPURL = 'https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter'; -/** @type {string} */ -/// - As in: ''change'' [the value of variable] ''item'' ''by'' 1 (e.g., if the variable named 'item' had the value 5, change it to 6). -/// %1 is a variable name. -/// %2 is the amount of change. -Blockly.Msg.MATH_CHANGE_TITLE = 'change %1 by %2'; -/** @type {string} */ -Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME; -/** @type {string} */ -/// tooltip - This updates the value of the variable by adding to it the following numeric input.\n\nParameters:\n* %1 - the name of the variable whose value should be increased. -Blockly.Msg.MATH_CHANGE_TOOLTIP = 'Add a number to variable "%1".'; - -/** @type {string} */ -/// {{Optional}} url - Information about how numbers are rounded to the nearest integer -Blockly.Msg.MATH_ROUND_HELPURL = 'https://en.wikipedia.org/wiki/Rounding'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Rounding https://en.wikipedia.org/wiki/Rounding]. -Blockly.Msg.MATH_ROUND_TOOLTIP = 'Round a number up or down.'; -/** @type {string} */ -/// dropdown - This rounds its input to the nearest whole number. For example, 3.4 is rounded to 3. -Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = 'round'; -/** @type {string} */ -/// dropdown - This rounds its input up to the nearest whole number. For example, if the input was 2.2, the result would be 3. -Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = 'round up'; -/** @type {string} */ -/// dropdown - This rounds its input down to the nearest whole number. For example, if the input was 3.8, the result would be 3. -Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = 'round down'; - -/** @type {string} */ -/// {{Optional}} url - Information about applying a function to a list of numbers. (We were unable to find such information in English. Feel free to skip this and any other URLs that are difficult.) -Blockly.Msg.MATH_ONLIST_HELPURL = ''; -/** @type {string} */ -/// dropdown - This computes the sum of the numeric elements in the list. For example, the sum of the list {1, 4} is 5. -Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = 'sum of list'; -/** @type {string} */ -/// tooltip - Please use the same term for "sum" as in the previous message. -Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = 'Return the sum of all the numbers in the list.'; -/** @type {string} */ -/// dropdown - This finds the smallest (minimum) number in a list. For example, the smallest number in the list [-5, 0, 3] is -5. -Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = 'min of list'; -/** @type {string} */ -/// tooltip - Please use the same term for "min" or "minimum" as in the previous message. -Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = 'Return the smallest number in the list.'; -/** @type {string} */ -/// dropdown - This finds the largest (maximum) number in a list. For example, the largest number in the list [-5, 0, 3] is 3. -Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = 'max of list'; -/** @type {string} */ -/// tooltip -Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = 'Return the largest number in the list.'; -/** @type {string} */ -/// dropdown - This adds up all of the numbers in a list and divides the sum by the number of elements in the list. For example, the [https://en.wikipedia.org/wiki/Arithmetic_mean average] of the list [1, 2, 3, 4] is 2.5 (10/4). -Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = 'average of list'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Arithmetic_mean https://en.wikipedia.org/wiki/Arithmetic_mean] for more informatin. -Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = 'Return the average (arithmetic mean) of the numeric values in the list.'; -/** @type {string} */ -/// dropdown - This finds the [https://en.wikipedia.org/wiki/Median median] of the numeric values in a list. For example, the median of the list {1, 2, 7, 12, 13} is 7. -Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = 'median of list'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Median median https://en.wikipedia.org/wiki/Median median] for more information. -Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = 'Return the median number in the list.'; -/** @type {string} */ -/// dropdown - This finds the most common numbers ([https://en.wikipedia.org/wiki/Mode_(statistics) modes]) in a list. For example, the modes of the list {1, 3, 9, 3, 9} are {3, 9}. -Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = 'modes of list'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Mode_(statistics) https://en.wikipedia.org/wiki/Mode_(statistics)] for more information. -Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = 'Return a list of the most common item(s) in the list.'; -/** @type {string} */ -/// dropdown - This finds the [https://en.wikipedia.org/wiki/Standard_deviation standard deviation] of the numeric values in a list. -Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = 'standard deviation of list'; -/** @type {string} */ -/// tooltip - See [https://en.wikipedia.org/wiki/Standard_deviation https://en.wikipedia.org/wiki/Standard_deviation] for more information. -Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = 'Return the standard deviation of the list.'; -/** @type {string} */ -/// dropdown - This choose an element at random from a list. Each element is chosen with equal probability. -Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = 'random item of list'; -/** @type {string} */ -/// tooltip - Please use same term for 'random' as in previous entry. -Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = 'Return a random element from the list.'; - -/** @type {string} */ -/// {{Optional}} url - information about the modulo (remainder) operation. -Blockly.Msg.MATH_MODULO_HELPURL = 'https://en.wikipedia.org/wiki/Modulo_operation'; -/** @type {string} */ -/// block text - Title of block providing the remainder when dividing the first numerical input by the second. For example, the remainder of 10 divided by 3 is 1.\n\nParameters:\n* %1 - the dividend (10, in our example)\n* %2 - the divisor (3 in our example). -Blockly.Msg.MATH_MODULO_TITLE = 'remainder of %1 ÷ %2'; -/** @type {string} */ -/// tooltip - For example, the remainder of 10 divided by 3 is 1. -Blockly.Msg.MATH_MODULO_TOOLTIP = 'Return the remainder from dividing the two numbers.'; - -/** @type {string} */ -/// {{Optional}} url - Information about constraining a numeric value to be in a specific range. (The English URL is not ideal. Recall that translating URLs is the lowest priority.) -Blockly.Msg.MATH_CONSTRAIN_HELPURL = 'https://en.wikipedia.org/wiki/Clamping_(graphics)'; -/** @type {string} */ -/// block text - The title of the block that '''constrain'''s (forces) a number to be in a given range. -///For example, if the number 150 is constrained to be between 5 and 100, the result will be 100. -///\n\nParameters:\n* %1 - the value to constrain (e.g., 150)\n* %2 - the minimum value (e.g., 5)\n* %3 - the maximum value (e.g., 100). -Blockly.Msg.MATH_CONSTRAIN_TITLE = 'constrain %1 low %2 high %3'; -/** @type {string} */ -/// tooltip - This compares a number ''x'' to a low value ''L'' and a high value ''H''. If ''x'' is less then ''L'', the result is ''L''. If ''x'' is greater than ''H'', the result is ''H''. Otherwise, the result is ''x''. -Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = 'Constrain a number to be between the specified limits (inclusive).'; - -/** @type {string} */ -/// {{Optional}} url - Information about how computers generate random numbers. -Blockly.Msg.MATH_RANDOM_INT_HELPURL = 'https://en.wikipedia.org/wiki/Random_number_generation'; -/** @type {string} */ -/// block text - The title of the block that generates a random integer (whole number) in the specified range. For example, if the range is from 5 to 7, this returns 5, 6, or 7 with equal likelihood. %1 is a placeholder for the lower number, %2 is the placeholder for the larger number. -Blockly.Msg.MATH_RANDOM_INT_TITLE = 'random integer from %1 to %2'; -/** @type {string} */ -/// tooltip - Return a random integer between two values specified as inputs. For example, if one input was 7 and another 9, any of the numbers 7, 8, or 9 could be produced. -Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = 'Return a random integer between the two specified limits, inclusive.'; - -/** @type {string} */ -/// {{Optional}} url - Information about how computers generate random numbers (specifically, numbers in the range from 0 to just below 1). -Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = 'https://en.wikipedia.org/wiki/Random_number_generation'; -/** @type {string} */ -/// block text - The title of the block that generates a random number greater than or equal to 0 and less than 1. -Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = 'random fraction'; -/** @type {string} */ -/// tooltip - Return a random fraction between 0 and 1. The value may be equal to 0 but must be less than 1. -Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = 'Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).'; - -/** @type {string} */ -/// {{Optional}} url - Information about how to calculate atan2. -Blockly.Msg.MATH_ATAN2_HELPURL = 'https://en.wikipedia.org/wiki/Atan2'; -/** @type {string} */ -/// block text - The title of the block that calculates atan2 of point (X, Y). For example, if the point is (-1, -1), this returns -135. %1 is a placeholder for the X coordinate, %2 is the placeholder for the Y coordinate. -Blockly.Msg.MATH_ATAN2_TITLE = 'atan2 of X:%1 Y:%2'; -/** @type {string} */ -/// tooltip - Return the arctangent of point (X, Y) in degrees from -180 to 180. For example, if the point is (-1, -1) this returns -135. -Blockly.Msg.MATH_ATAN2_TOOLTIP = 'Return the arctangent of point (X, Y) in degrees from -180 to 180.'; - -// Text Blocks. -/** @type {string} */ -/// {{Optional}} url - Information about how computers represent text (sometimes referred to as ''string''s). -Blockly.Msg.TEXT_TEXT_HELPURL = 'https://en.wikipedia.org/wiki/String_(computer_science)'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text https://github.com/google/blockly/wiki/Text]. -Blockly.Msg.TEXT_TEXT_TOOLTIP = 'A letter, word, or line of text.'; - -/** @type {string} */ -/// {{Optional}} url - Information on concatenating/appending pieces of text. -Blockly.Msg.TEXT_JOIN_HELPURL = 'https://github.com/google/blockly/wiki/Text#text-creation'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation]. -Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = 'create text with'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation create text with] for more information. -Blockly.Msg.TEXT_JOIN_TOOLTIP = 'Create a piece of text by joining together any number of items.'; - -/** @type {string} */ -/// block text - This is shown when the programmer wants to change the number of pieces of text being joined together. See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section.\n{{Identical|Join}} -Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = 'join'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section. -Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = 'Add, remove, or reorder sections to reconfigure this text block.'; -/** @type {string} */ -Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section. -Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = 'Add an item to the text.'; - -/** @type {string} */ -/// {{Optional}} url - This and the other text-related URLs are going to be hard to translate. As always, it is okay to leave untranslated or paste in the English-language URL. For these URLs, you might also consider a general URL about how computers represent text (such as the translation of [https://en.wikipedia.org/wiki/String_(computer_science) this Wikipedia page]). -Blockly.Msg.TEXT_APPEND_HELPURL = 'https://github.com/google/blockly/wiki/Text#text-modification'; -/** @type {string} */ -/// block input text - Message that the variable name at %1 will have the item at %2 appended to it. -/// [[File:blockly-append-text.png]] -Blockly.Msg.TEXT_APPEND_TITLE = 'to %1 append text %2'; -/** @type {string} */ -Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-modification https://github.com/google/blockly/wiki/Text#text-modification] for more information.\n\nParameters:\n* %1 - the name of the variable to which text should be appended -Blockly.Msg.TEXT_APPEND_TOOLTIP = 'Append some text to variable "%1".'; - -/** @type {string} */ -/// {{Optional}} url - Information about text on computers (usually referred to as 'strings'). -Blockly.Msg.TEXT_LENGTH_HELPURL = 'https://github.com/google/blockly/wiki/Text#text-modification'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length]. -/// \n\nParameters:\n* %1 - the piece of text to take the length of -Blockly.Msg.TEXT_LENGTH_TITLE = 'length of %1'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length]. -Blockly.Msg.TEXT_LENGTH_TOOLTIP = 'Returns the number of letters (including spaces) in the provided text.'; - -/** @type {string} */ -/// {{Optional}} url - Information about empty pieces of text on computers (usually referred to as 'empty strings'). -Blockly.Msg.TEXT_ISEMPTY_HELPURL = 'https://github.com/google/blockly/wiki/Text#checking-for-empty-text'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text]. -/// \n\nParameters:\n* %1 - the piece of text to test for emptiness -Blockly.Msg.TEXT_ISEMPTY_TITLE = '%1 is empty'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text]. -Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = 'Returns true if the provided text is empty.'; - -/** @type {string} */ -/// {{Optional}} url - Information about finding a character in a piece of text. -Blockly.Msg.TEXT_INDEXOF_HELPURL = 'https://github.com/google/blockly/wiki/Text#finding-text'; -/** @type {string} */ -/// tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode. See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text]. -Blockly.Msg.TEXT_INDEXOF_TOOLTIP = 'Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.'; -/** @type {string} */ -/// block text - Title of blocks allowing users to find text. See -/// [https://github.com/google/blockly/wiki/Text#finding-text -/// https://github.com/google/blockly/wiki/Text#finding-text]. -/// [[File:Blockly-find-text.png]]. -/// In English the expanded message is "in text %1 find (first|last) occurance of text %3" -/// where %1 and %3 are added by the user. See TEXT_INDEXOF_OPERATOR_FIRST and -/// TEXT_INDEXOF_OPERATOR_LAST for the dropdown text that replaces %2. -Blockly.Msg.TEXT_INDEXOF_TITLE = 'in text %1 %2 %3'; -/** @type {string} */ -/// dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text -/// https://github.com/google/blockly/wiki/Text#finding-text]. -/// [[File:Blockly-find-text.png]]. -Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = 'find first occurrence of text'; -/** @type {string} */ -/// dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text -/// https://github.com/google/blockly/wiki/Text#finding-text]. This would -/// replace "find first occurrence of text" below. (For more information on -/// how common text is factored out of dropdown menus, see -/// [https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus -/// https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus)].) -/// [[File:Blockly-find-text.png]]. -Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = 'find last occurrence of text'; -/** @type {string} */ - -/// {{Optional}} url - Information about extracting characters (letters, number, symbols, etc.) from text. -Blockly.Msg.TEXT_CHARAT_HELPURL = 'https://github.com/google/blockly/wiki/Text#extracting-text'; -/** @type {string} */ -/// block text - Text for a block to extract a letter (or number, -/// punctuation character, etc.) from a string, as shown below. %1 is added by -/// the user and %2 is replaced by a dropdown of options, possibly followed by -/// another user supplied string. TEXT_CHARAT_TAIL is then added to the end. See -/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character -/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. -/// [[File:Blockly-text-get.png]] -Blockly.Msg.TEXT_CHARAT_TITLE = 'in text %1 %2'; -/** @type {string} */ -/// dropdown - Indicates that the letter (or number, punctuation character, etc.) with the -/// specified index should be obtained from the preceding piece of text. See -/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character -/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. -/// [[File:Blockly-text-get.png]] -Blockly.Msg.TEXT_CHARAT_FROM_START = 'get letter #'; -/** @type {string} */ -/// block text - Indicates that the letter (or number, punctuation character, etc.) with the -/// specified index from the end of a given piece of text should be obtained. See -/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character -/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. -/// [[File:Blockly-text-get.png]] -Blockly.Msg.TEXT_CHARAT_FROM_END = 'get letter # from end'; -/** @type {string} */ -/// block text - Indicates that the first letter of the following piece of text should be -/// retrieved. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character -/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. -/// [[File:Blockly-text-get.png]] -Blockly.Msg.TEXT_CHARAT_FIRST = 'get first letter'; -/** @type {string} */ -/// block text - Indicates that the last letter (or number, punctuation mark, etc.) of the -/// following piece of text should be retrieved. See -/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character -/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. -/// [[File:Blockly-text-get.png]] -Blockly.Msg.TEXT_CHARAT_LAST = 'get last letter'; -/** @type {string} */ -/// block text - Indicates that any letter (or number, punctuation mark, etc.) in the -/// following piece of text should be randomly selected. See -/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character -/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. -/// [[File:Blockly-text-get.png]] -Blockly.Msg.TEXT_CHARAT_RANDOM = 'get random letter'; -/** @type {string} */ -/// block text - Text that goes after the rightmost block/dropdown when getting a single letter from -/// a piece of text, as in [https://blockly-demo.appspot.com/static/apps/code/index.html#3m23km these -/// blocks] or shown below. For most languages, this will be blank. -/// [[File:Blockly-text-get.png]] -Blockly.Msg.TEXT_CHARAT_TAIL = ''; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character -/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. -/// [[File:Blockly-text-get.png]] -Blockly.Msg.TEXT_CHARAT_TOOLTIP = 'Returns the letter at the specified position.'; - -/** @type {string} */ -/// See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text -/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. -Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = 'Returns a specified portion of the text.'; -/** @type {string} */ -/// {{Optional}} url - Information about extracting characters from text. Reminder: urls are the -/// lowest priority translations. Feel free to skip. -Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = 'https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text'; -/** @type {string} */ -/// block text - Precedes a piece of text from which a portion should be extracted. -/// [[File:Blockly-get-substring.png]] -Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = 'in text'; -/** @type {string} */ -/// dropdown - Indicates that the following number specifies the position (relative to the start -/// position) of the beginning of the region of text that should be obtained from the preceding -/// piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text -/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. -/// [[File:Blockly-get-substring.png]] -Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = 'get substring from letter #'; -/** @type {string} */ -/// dropdown - Indicates that the following number specifies the position (relative to the end -/// position) of the beginning of the region of text that should be obtained from the preceding -/// piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text -/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. -/// Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will -/// automatically appear ''after'' this and any other -/// [https://translatewiki.net/wiki/Translating:Blockly#Ordinal_numbers ordinal numbers] -/// on this block. -/// [[File:Blockly-get-substring.png]] -Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = 'get substring from letter # from end'; -/** @type {string} */ -/// block text - Indicates that a region starting with the first letter of the preceding piece -/// of text should be extracted. See -/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text -/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. -/// [[File:Blockly-get-substring.png]] -Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = 'get substring from first letter'; -/** @type {string} */ -/// dropdown - Indicates that the following number specifies the position (relative to -/// the start position) of the end of the region of text that should be obtained from the -/// preceding piece of text. See -/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text -/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. -/// [[File:Blockly-get-substring.png]] -Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = 'to letter #'; -/** @type {string} */ -/// dropdown - Indicates that the following number specifies the position (relative to the -/// end position) of the end of the region of text that should be obtained from the preceding -/// piece of text. See -/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text -/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. -/// [[File:Blockly-get-substring.png]] -Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = 'to letter # from end'; -/** @type {string} */ -/// block text - Indicates that a region ending with the last letter of the preceding piece -/// of text should be extracted. See -/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text -/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. -/// [[File:Blockly-get-substring.png]] -Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = 'to last letter'; -/** @type {string} */ -/// block text - Text that should go after the rightmost block/dropdown when -/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text -/// extracting a region of text]. In most languages, this will be the empty string. -/// [[File:Blockly-get-substring.png]] -Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ''; - -/** @type {string} */ -/// {{Optional}} url - Information about the case of letters (upper-case and lower-case). -Blockly.Msg.TEXT_CHANGECASE_HELPURL = 'https://github.com/google/blockly/wiki/Text#adjusting-text-case'; -/** @type {string} */ -/// tooltip - Describes a block to adjust the case of letters. For more information on this block, -/// see [https://github.com/google/blockly/wiki/Text#adjusting-text-case -/// https://github.com/google/blockly/wiki/Text#adjusting-text-case]. -Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = 'Return a copy of the text in a different case.'; -/** @type {string} */ -/// block text - Indicates that all of the letters in the following piece of text should be -/// capitalized. If your language does not use case, you may indicate that this is not -/// applicable to your language. For more information on this block, see -/// [https://github.com/google/blockly/wiki/Text#adjusting-text-case -/// https://github.com/google/blockly/wiki/Text#adjusting-text-case]. -Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = 'to UPPER CASE'; -/** @type {string} */ -/// block text - Indicates that all of the letters in the following piece of text should be converted to lower-case. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case]. -Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = 'to lower case'; -/** @type {string} */ -/// block text - Indicates that the first letter of each of the following words should be capitalized and the rest converted to lower-case. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case]. -Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = 'to Title Case'; - -/** @type {string} */ -/// {{Optional}} url - Information about trimming (removing) text off the beginning and ends of pieces of text. -Blockly.Msg.TEXT_TRIM_HELPURL = 'https://github.com/google/blockly/wiki/Text#trimming-removing-spaces'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces -/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. -Blockly.Msg.TEXT_TRIM_TOOLTIP = 'Return a copy of the text with spaces removed from one or both ends.'; -/** @type {string} */ -/// dropdown - Removes spaces from the beginning and end of a piece of text. See -/// [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces -/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. Note that neither -/// this nor the other options modify the original piece of text (that follows); -/// the block just returns a version of the text without the specified spaces. -Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = 'trim spaces from both sides of'; -/** @type {string} */ -/// dropdown - Removes spaces from the beginning of a piece of text. See -/// [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces -/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. -/// Note that in right-to-left scripts, this will remove spaces from the right side. -Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = 'trim spaces from left side of'; -/** @type {string} */ -/// dropdown - Removes spaces from the end of a piece of text. See -/// [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces -/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. -/// Note that in right-to-left scripts, this will remove spaces from the left side. -Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = 'trim spaces from right side of'; - -/** @type {string} */ -/// {{Optional}} url - Information about displaying text on computers. -Blockly.Msg.TEXT_PRINT_HELPURL = 'https://github.com/google/blockly/wiki/Text#printing-text'; -/** @type {string} */ -/// block text - Display the input on the screen. See -/// [https://github.com/google/blockly/wiki/Text#printing-text -/// https://github.com/google/blockly/wiki/Text#printing-text]. -/// \n\nParameters:\n* %1 - the value to print -Blockly.Msg.TEXT_PRINT_TITLE = 'print %1'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text#printing-text -/// https://github.com/google/blockly/wiki/Text#printing-text]. -Blockly.Msg.TEXT_PRINT_TOOLTIP = 'Print the specified text, number or other value.'; -/** @type {string} */ -/// {{Optional}} url - Information about getting text from users. -Blockly.Msg.TEXT_PROMPT_HELPURL = 'https://github.com/google/blockly/wiki/Text#getting-input-from-the-user'; -/** @type {string} */ -/// dropdown - Specifies that a piece of text should be requested from the user with -/// the following message. See [https://github.com/google/blockly/wiki/Text#printing-text -/// https://github.com/google/blockly/wiki/Text#printing-text]. -Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = 'prompt for text with message'; -/** @type {string} */ -/// dropdown - Specifies that a number should be requested from the user with the -/// following message. See [https://github.com/google/blockly/wiki/Text#printing-text -/// https://github.com/google/blockly/wiki/Text#printing-text]. -Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = 'prompt for number with message'; -/** @type {string} */ -/// dropdown - Precedes the message with which the user should be prompted for -/// a number. See [https://github.com/google/blockly/wiki/Text#printing-text -/// https://github.com/google/blockly/wiki/Text#printing-text]. -Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = 'Prompt for user for a number.'; -/** @type {string} */ -/// dropdown - Precedes the message with which the user should be prompted for some text. -/// See [https://github.com/google/blockly/wiki/Text#printing-text -/// https://github.com/google/blockly/wiki/Text#printing-text]. -Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = 'Prompt for user for some text.'; - -/** @type {string} */ -/// block text - Title of a block that counts the number of instances of -/// a smaller pattern (%1) inside a longer string (%2). -Blockly.Msg.TEXT_COUNT_MESSAGE0 = 'count %1 in %2'; -/** @type {string} */ -/// {{Optional}} url - Information about counting how many times a string appears in another string. -Blockly.Msg.TEXT_COUNT_HELPURL = 'https://github.com/google/blockly/wiki/Text#counting-substrings'; -/** @type {string} */ -/// tooltip - Short description of a block that counts how many times some text occurs within some other text. -Blockly.Msg.TEXT_COUNT_TOOLTIP = 'Count how many times some text occurs within some other text.'; - -/** @type {string} */ -/// block text - Title of a block that returns a copy of text (%3) with all -/// instances of some smaller text (%1) replaced with other text (%2). -Blockly.Msg.TEXT_REPLACE_MESSAGE0 = 'replace %1 with %2 in %3'; -/** @type {string} */ -/// {{Optional}} url - Information about replacing each copy text (or string, in computer lingo) with other text. -Blockly.Msg.TEXT_REPLACE_HELPURL = 'https://github.com/google/blockly/wiki/Text#replacing-substrings'; -/** @type {string} */ -/// tooltip - Short description of a block that replaces copies of text in a large text with other text. -Blockly.Msg.TEXT_REPLACE_TOOLTIP = 'Replace all occurances of some text within some other text.'; - -/** @type {string} */ -/// block text - Title of block that returns a copy of text (%1) with the order -/// of letters and characters reversed. -Blockly.Msg.TEXT_REVERSE_MESSAGE0 = 'reverse %1'; -/** @type {string} */ -/// {{Optional}} url - Information about reversing a letters/characters in text. -Blockly.Msg.TEXT_REVERSE_HELPURL = 'https://github.com/google/blockly/wiki/Text#reversing-text'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Text]. -Blockly.Msg.TEXT_REVERSE_TOOLTIP = 'Reverses the order of the characters in the text.'; - -// Lists Blocks. -/** @type {string} */ -/// {{Optional}} url - Information on empty lists. -Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = 'https://github.com/google/blockly/wiki/Lists#create-empty-list'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list]. -Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = 'create empty list'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list]. -Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = 'Returns a list, of length 0, containing no data records'; - -/** @type {string} */ -/// {{Optional}} url - Information on building lists. -Blockly.Msg.LISTS_CREATE_WITH_HELPURL = 'https://github.com/google/blockly/wiki/Lists#create-list-with'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with]. -Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = 'Create a list with any number of items.'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with]. -Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = 'create list with'; -/** @type {string} */ -/// block text - This appears in a sub-block when [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs changing the number of inputs in a ''''create list with'''' block].\n{{Identical|List}} -Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = 'list'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs]. -Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = 'Add, remove, or reorder sections to reconfigure this list block.'; -/** @type {string} */ -Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs]. -Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = 'Add an item to the list.'; - -/** @type {string} */ -/// {{Optional}} url - Information about [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item]. -Blockly.Msg.LISTS_REPEAT_HELPURL = 'https://github.com/google/blockly/wiki/Lists#create-list-with'; -/** @type {string} */ -/// {{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item]. -Blockly.Msg.LISTS_REPEAT_TOOLTIP = 'Creates a list consisting of the given value repeated the specified number of times.'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with -/// https://github.com/google/blockly/wiki/Lists#create-list-with]. -///\n\nParameters:\n* %1 - the item (text) to be repeated\n* %2 - the number of times to repeat it -Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times'; - -/** @type {string} */ -/// {{Optional}} url - Information about how the length of a list is computed (i.e., by the total number of elements, not the number of different elements). -Blockly.Msg.LISTS_LENGTH_HELPURL = 'https://github.com/google/blockly/wiki/Lists#length-of'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of]. -/// \n\nParameters:\n* %1 - the list whose length is desired -Blockly.Msg.LISTS_LENGTH_TITLE = 'length of %1'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of Blockly:Lists:length of]. -Blockly.Msg.LISTS_LENGTH_TOOLTIP = 'Returns the length of a list.'; - -/** @type {string} */ -/// {{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#is-empty https://github.com/google/blockly/wiki/Lists#is-empty]. -Blockly.Msg.LISTS_ISEMPTY_HELPURL = 'https://github.com/google/blockly/wiki/Lists#is-empty'; -/** @type {string} */ -/// block text - See [https://github.com/google/blockly/wiki/Lists#is-empty -/// https://github.com/google/blockly/wiki/Lists#is-empty]. -/// \n\nParameters:\n* %1 - the list to test -Blockly.Msg.LISTS_ISEMPTY_TITLE = '%1 is empty'; -/** @type {string} */ -/// block tooltip - See [https://github.com/google/blockly/wiki/Lists#is-empty -/// https://github.com/google/blockly/wiki/Lists#is-empty]. -Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = 'Returns true if the list is empty.'; - -/** @type {string} */ -/// block text - Title of blocks operating on [https://github.com/google/blockly/wiki/Lists lists]. -Blockly.Msg.LISTS_INLIST = 'in list'; - -/** @type {string} */ -/// {{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list -/// https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list]. -Blockly.Msg.LISTS_INDEX_OF_HELPURL = 'https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list'; -/** @type {string} */ -Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; -/** @type {string} */ -/// dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list -/// Lists#finding-items-in-a-list]. -/// [[File:Blockly-list-find.png]] -Blockly.Msg.LISTS_INDEX_OF_FIRST = 'find first occurrence of item'; -/** @type {string} */ -/// dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list -/// https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list]. -/// [[File:Blockly-list-find.png]] -Blockly.Msg.LISTS_INDEX_OF_LAST = 'find last occurrence of item'; -/** @type {string} */ -/// tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode. See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list -/// https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list]. -/// [[File:Blockly-list-find.png]] -Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = 'Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.'; - -/** @type {string} */ -Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL; -/** @type {string} */ -/// dropdown - Indicates that the user wishes to -/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item -/// get an item from a list] without removing it from the list. -Blockly.Msg.LISTS_GET_INDEX_GET = 'get'; -/** @type {string} */ -/// dropdown - Indicates that the user wishes to -/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item -/// get and remove an item from a list], as opposed to merely getting -/// it without modifying the list. -Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = 'get and remove'; -/** @type {string} */ -/// dropdown - Indicates that the user wishes to -/// [https://github.com/google/blockly/wiki/Lists#removing-an-item -/// remove an item from a list].\n{{Identical|Remove}} -Blockly.Msg.LISTS_GET_INDEX_REMOVE = 'remove'; -/** @type {string} */ -/// dropdown - Indicates that an index relative to the front of the list should be used to -/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item get and/or remove -/// an item from a list]. Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will -/// automatically appear ''after'' this number (and any other ordinal numbers on this block). -/// See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly. -/// [[File:Blockly-list-get-item.png]] -Blockly.Msg.LISTS_GET_INDEX_FROM_START = '#'; -/** @type {string} */ -/// dropdown - Indicates that an index relative to the end of the list should be used -/// to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item access an item in a list]. -/// [[File:Blockly-list-get-item.png]] -Blockly.Msg.LISTS_GET_INDEX_FROM_END = '# from end'; -/** @type {string} */ -/// dropdown - Indicates that the '''first''' item should be -/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. -/// [[File:Blockly-list-get-item.png]] -Blockly.Msg.LISTS_GET_INDEX_FIRST = 'first'; -/** @type {string} */ -/// dropdown - Indicates that the '''last''' item should be -/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. -/// [[File:Blockly-list-get-item.png]] -Blockly.Msg.LISTS_GET_INDEX_LAST = 'last'; -/** @type {string} */ -/// dropdown - Indicates that a '''random''' item should be -/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. -/// [[File:Blockly-list-get-item.png]] -Blockly.Msg.LISTS_GET_INDEX_RANDOM = 'random'; -/** @type {string} */ -/// block text - Text that should go after the rightmost block/dropdown when -/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item -/// accessing an item from a list]. In most languages, this will be the empty string. -/// [[File:Blockly-list-get-item.png]] -Blockly.Msg.LISTS_GET_INDEX_TAIL = ''; -/** @type {string} */ -Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; -/** @type {string} */ -/// tooltip - Indicates the ordinal number that the first item in a list is referenced by. %1 will be replaced by either "#0" or "#1" depending on the indexing mode. -Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = '%1 is the first item.'; -/** @type {string} */ -/// tooltip - Indicates the ordinal number that the last item in a list is referenced by. %1 will be replaced by either "#0" or "#1" depending on the indexing mode. -Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = '%1 is the last item.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = 'Returns the item at the specified position in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = 'Returns the first item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = 'Returns the last item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = 'Returns a random item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for '#' or '# from end'. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = 'Removes and returns the item at the specified position in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'first'. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = 'Removes and returns the first item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'last'. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = 'Removes and returns the last item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'random'. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = 'Removes and returns a random item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for '#' or '# from end'. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = 'Removes the item at the specified position in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'first'. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = 'Removes the first item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'last'. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = 'Removes the last item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'random'. -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = 'Removes a random item in a list.'; -/** @type {string} */ -/// {{Optional}} url - Information about putting items in lists. -Blockly.Msg.LISTS_SET_INDEX_HELPURL = 'https://github.com/google/blockly/wiki/Lists#in-list--set'; -/** @type {string} */ -Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; -/** @type {string} */ -/// block text - [https://github.com/google/blockly/wiki/Lists#in-list--set -/// Replaces an item in a list]. -/// [[File:Blockly-in-list-set-insert.png]] -Blockly.Msg.LISTS_SET_INDEX_SET = 'set'; -/** @type {string} */ -/// block text - [https://github.com/google/blockly/wiki/Lists#in-list--insert-at -/// Inserts an item into a list]. -/// [[File:Blockly-in-list-set-insert.png]] -Blockly.Msg.LISTS_SET_INDEX_INSERT = 'insert at'; -/** @type {string} */ -/// block text - The word(s) after the position in the list and before the item to be set/inserted. -/// [[File:Blockly-in-list-set-insert.png]] -Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = 'as'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block). -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = 'Sets the item at the specified position in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block). -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = 'Sets the first item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block). -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = 'Sets the last item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block). -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = 'Sets a random item in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block). -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = 'Inserts the item at the specified position in a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block). -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = 'Inserts the item at the start of a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block). -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = 'Append the item to the end of a list.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block). -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = 'Inserts the item randomly in a list.'; - -/** @type {string} */ -/// {{Optional}} url - Information describing extracting a sublist from an existing list. -Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = 'https://github.com/google/blockly/wiki/Lists#getting-a-sublist'; -/** @type {string} */ -Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; -/** @type {string} */ -/// dropdown - Indicates that an index relative to the front of the list should be used -/// to specify the beginning of the range from which to -/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. -/// [[File:Blockly-get-sublist.png]] -/// Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will -/// automatically appear ''after'' this number (and any other ordinal numbers on this block). -/// See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly. -Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = 'get sub-list from #'; -/** @type {string} */ -/// dropdown - Indicates that an index relative to the end of the list should be used -/// to specify the beginning of the range from which to -/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. -Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = 'get sub-list from # from end'; -/** @type {string} */ -/// dropdown - Indicates that the -/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist sublist to extract] -/// should begin with the list's first item. -Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = 'get sub-list from first'; -/** @type {string} */ -/// dropdown - Indicates that an index relative to the front of the list should be -/// used to specify the end of the range from which to -/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. -/// [[File:Blockly-get-sublist.png]] -Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = 'to #'; -/** @type {string} */ -/// dropdown - Indicates that an index relative to the end of the list should be -/// used to specify the end of the range from which to -/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. -/// [[File:Blockly-get-sublist.png]] -Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = 'to # from end'; -/** @type {string} */ -/// dropdown - Indicates that the '''last''' item in the given list should be -/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist the end -/// of the selected sublist]. -/// [[File:Blockly-get-sublist.png]] -Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = 'to last'; -/** @type {string} */ -/// block text - This appears in the rightmost position ("tail") of the -/// sublist block, as described at -/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist -/// https://github.com/google/blockly/wiki/Lists#getting-a-sublist]. -/// In English and most other languages, this is the empty string. -/// [[File:Blockly-get-sublist.png]] -Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ''; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-sublist -/// https://github.com/google/blockly/wiki/Lists#getting-a-sublist] for more information. -/// [[File:Blockly-get-sublist.png]] -Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = 'Creates a copy of the specified portion of a list.'; - -/** @type {string} */ -/// {{Optional}} url - Information describing sorting a list. -Blockly.Msg.LISTS_SORT_HELPURL = 'https://github.com/google/blockly/wiki/Lists#sorting-a-list'; -/** @type {string} */ -/// Sort as type %1 (numeric or alphabetic) in order %2 (ascending or descending) a list of items %3.\n{{Identical|Sort}} -Blockly.Msg.LISTS_SORT_TITLE = 'sort %1 %2 %3'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#sorting-a-list]. -Blockly.Msg.LISTS_SORT_TOOLTIP = 'Sort a copy of a list.'; -/** @type {string} */ -/// sorting order or direction from low to high value for numeric, or A-Z for alphabetic.\n{{Identical|Ascending}} -Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = 'ascending'; -/** @type {string} */ -/// sorting order or direction from high to low value for numeric, or Z-A for alphabetic.\n{{Identical|Descending}} -Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = 'descending'; -/** @type {string} */ -/// sort by treating each item as a number. -Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = 'numeric'; -/** @type {string} */ -/// sort by treating each item alphabetically, case-sensitive. -Blockly.Msg.LISTS_SORT_TYPE_TEXT = 'alphabetic'; -/** @type {string} */ -/// sort by treating each item alphabetically, ignoring differences in case. -Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = 'alphabetic, ignore case'; - -/** @type {string} */ -/// {{Optional}} url - Information describing splitting text into a list, or joining a list into text. -Blockly.Msg.LISTS_SPLIT_HELPURL = 'https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists'; -/** @type {string} */ -/// dropdown - Indicates that text will be split up into a list (e.g. "a-b-c" -> ["a", "b", "c"]). -Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = 'make list from text'; -/** @type {string} */ -/// dropdown - Indicates that a list will be joined together to form text (e.g. ["a", "b", "c"] -> "a-b-c"). -Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = 'make text from list'; -/** @type {string} */ -/// block text - Prompts for a letter to be used as a separator when splitting or joining text. -Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = 'with delimiter'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#make-list-from-text -/// https://github.com/google/blockly/wiki/Lists#make-list-from-text] for more information. -Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = 'Split text into a list of texts, breaking at each delimiter.'; -/** @type {string} */ -/// tooltip - See [https://github.com/google/blockly/wiki/Lists#make-text-from-list -/// https://github.com/google/blockly/wiki/Lists#make-text-from-list] for more information. -Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = 'Join a list of texts into one text, separated by a delimiter.'; - -/** @type {string} */ -/// {{Optional}} url - Information describing reversing a list. -Blockly.Msg.LISTS_REVERSE_HELPURL = 'https://github.com/google/blockly/wiki/Lists#reversing-a-list'; -/** @type {string} */ -/// block text - Title of block that returns a copy of a list (%1) with the order of items reversed. -Blockly.Msg.LISTS_REVERSE_MESSAGE0 = 'reverse %1'; -/** @type {string} */ -/// tooltip - Short description for a block that reverses a copy of a list. -Blockly.Msg.LISTS_REVERSE_TOOLTIP = 'Reverse a copy of a list.'; - -/** @type {string} */ -/// grammar - Text that follows an ordinal number (a number that indicates -/// position relative to other numbers). In most languages, such text appears -/// before the number, so this should be blank. An exception is Hungarian. -/// See [[Translating:Blockly#Ordinal_numbers]] for more information. -Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ''; - -// Variables Blocks. -/** @type {string} */ -/// {{Optional}} url - Information about ''variables'' in computer programming. Consider using your language's translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists. -Blockly.Msg.VARIABLES_GET_HELPURL = 'https://github.com/google/blockly/wiki/Variables#get'; -/** @type {string} */ -/// tooltip - This gets the value of the named variable without modifying it. -Blockly.Msg.VARIABLES_GET_TOOLTIP = 'Returns the value of this variable.'; -/** @type {string} */ -/// context menu - Selecting this creates a block to set (change) the value of this variable. -/// \n\nParameters:\n* %1 - the name of the variable. -Blockly.Msg.VARIABLES_GET_CREATE_SET = 'Create "set %1"'; - -/** @type {string} */ -/// {{Optional}} url - Information about ''variables'' in computer programming. Consider using your language's translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists. -Blockly.Msg.VARIABLES_SET_HELPURL = 'https://github.com/google/blockly/wiki/Variables#set'; -/** @type {string} */ -/// block text - Change the value of a mathematical variable: '''set [the value of] x to 7'''.\n\nParameters:\n* %1 - the name of the variable.\n* %2 - the value to be assigned. -Blockly.Msg.VARIABLES_SET = 'set %1 to %2'; -/** @type {string} */ -/// tooltip - This initializes or changes the value of the named variable. -Blockly.Msg.VARIABLES_SET_TOOLTIP = 'Sets this variable to be equal to the input.'; -/** @type {string} */ -/// context menu - Selecting this creates a block to get (change) the value of -/// this variable.\n\nParameters:\n* %1 - the name of the variable. -Blockly.Msg.VARIABLES_SET_CREATE_GET = 'Create "get %1"'; - -// Procedures Blocks. -/** @type {string} */ -/// {{Optional}} url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that do not have return values. -Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = 'https://en.wikipedia.org/wiki/Subroutine'; -/** @type {string} */ -/// block text - This precedes the name of the function when defining it. See -/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#c84aoc this sample -/// function definition]. -Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = 'to'; -/** @type {string} */ -/// default name - This acts as a placeholder for the name of a function on a -/// function definition block, as shown on -/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#w7cfju this block]. -/// The user will replace it with the function's name. -Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = 'do something'; -/** @type {string} */ -/// block text - This precedes the list of parameters on a function's definition block. See -/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample -/// function with parameters]. -Blockly.Msg.PROCEDURES_BEFORE_PARAMS = 'with:'; -/** @type {string} */ -/// block text - This precedes the list of parameters on a function's caller block. See -/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample -/// function with parameters]. -Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = 'with:'; -/** @type {string} */ -/// block text - This appears next to the function's "body", the blocks that should be -/// run when the function is called, as shown in -/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample -/// function definition]. -Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ''; -/** @type {string} */ -/// tooltip -Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = 'Creates a function with no output.'; -/** @type {string} */ -/// Placeholder text that the user is encouraged to replace with a description of what their function does. -Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = 'Describe this function...'; -/** @type {string} */ -/// {{Optional}} url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that have return values. -Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = 'https://en.wikipedia.org/wiki/Subroutine'; -/** @type {string} */ -Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE; -/** @type {string} */ -Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE; -/** @type {string} */ -Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO; -/** @type {string} */ -Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT; -/** @type {string} */ -/// block text - This imperative or infinite verb precedes the value that is used as the return value -/// (output) of this function. See -/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#6ot5y5 this sample -/// function that returns a value]. -Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = 'return'; -/** @type {string} */ -/// tooltip -Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = 'Creates a function with an output.'; -/** @type {string} */ -/// Label for a checkbox that controls if statements are allowed in a function. -Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = 'allow statements'; - -/** @type {string} */ -/// alert - The user has created a function with two parameters that have the same name. Every parameter must have a different name. -Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = 'Warning: This function has duplicate parameters.'; - -/** @type {string} */ -/// {{Optional}} url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that do not return values. -Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = 'https://en.wikipedia.org/wiki/Subroutine'; -/** @type {string} */ -/// tooltip - This block causes the body (blocks inside) of the named function definition to be run. -Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = 'Run the user-defined function "%1".'; - -/** @type {string} */ -/// {{Optional}} url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that return values. -Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = 'https://en.wikipedia.org/wiki/Subroutine'; -/** @type {string} */ -/// tooltip - This block causes the body (blocks inside) of the named function definition to be run.\n\nParameters:\n* %1 - the name of the function. -Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = 'Run the user-defined function "%1" and use its output.'; - -/** @type {string} */ -/// block text - This text appears on a block in a window that appears when the user clicks -/// on the plus sign or star on a function definition block. It refers to the set of parameters -/// (referred to by the simpler term "inputs") to the function. See -/// [[Translating:Blockly#function_definitions]].\n{{Identical|Input}} -Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = 'inputs'; -/** @type {string} */ -/// tooltip -Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = 'Add, remove, or reorder inputs to this function.'; -/** @type {string} */ -/// block text - This text appears on a block in a window that appears when the user clicks -/// on the plus sign or star on a function definition block]. It appears on the block for -/// adding an individual parameter (referred to by the simpler term "inputs") to the function. -/// See [[Translating:Blockly#function_definitions]]. -Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = 'input name:'; -/** @type {string} */ -/// tooltip -Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = 'Add an input to the function.'; - -/** @type {string} */ -/// context menu - This appears on the context menu for function calls. Selecting -/// it causes the corresponding function definition to be highlighted (as shown at -/// [[Translating:Blockly#context_menus]]. -Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = 'Highlight function definition'; -/** @type {string} */ -/// context menu - This appears on the context menu for function definitions. -/// Selecting it creates a block to call the function.\n\nParameters:\n* %1 - the name of the function.\n{{Identical|Create}} -Blockly.Msg.PROCEDURES_CREATE_DO = 'Create "%1"'; - -/** @type {string} */ -/// tooltip - If the first value is true, this causes the second value to be returned -/// immediately from the enclosing function. -Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = 'If a value is true, then return a second value.'; -/** @type {string} */ -/// {{Optional}} url - Information about guard clauses. -Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = 'http://c2.com/cgi/wiki?GuardClause'; -/** @type {string} */ -/// warning - This appears if the user tries to use this block outside of a function definition. -Blockly.Msg.PROCEDURES_IFRETURN_WARNING = 'Warning: This block may be used only within a function definition.'; - -/** @type {string} */ -/// comment text - This text appears in a new workspace comment, to hint that -/// the user can type here. -Blockly.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT = 'Say something...'; - -/** @type {string} */ -/// workspace - This text is read out when a user navigates to the workspace while -/// using a screen reader. -Blockly.Msg.WORKSPACE_ARIA_LABEL = 'Blockly Workspace'; - -/** @type {string} */ -/// warning - This appears if the user collapses a block, and blocks inside -/// that block have warnings attached to them. It should inform the user that the -/// block they collapsed contains blocks that have warnings. -Blockly.Msg.COLLAPSED_WARNINGS_WARNING = 'Collapsed blocks contain warnings.'; - -/** @type {string} */ -/// button label - Pressing this button closes help information.\n{{Identical|OK}} -Blockly.Msg.DIALOG_OK = 'OK'; - -/** @type {string} */ -/// button label - Pressing this button cancels a proposed action.\n{{Identical|Cancel}} -Blockly.Msg.DIALOG_CANCEL = 'Cancel'; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview English strings. + * + * After modifying this file, run: + * + * npm run generate:langfiles + * + * to regenerate json/{en,qqq,constants,synonyms}.json. + * + * To convert all of the json files to .js files, run: + * + * npm run build:langfiles + */ +'use strict'; + + +/** + * Due to the frequency of long strings, the 80-column wrap rule need not apply + * to message files. + */ + +/** + * Each message is preceded with a triple-slash comment that becomes the + * message descriptor. The build process extracts these descriptors, adds + * them to msg/json/qqq.json, and they show up in the translation console. + */ + +/** @type {string} */ +/// {{Notranslate}} Hue value for all logic blocks. +Blockly.Msg.LOGIC_HUE = '210'; +/** @type {string} */ +/// {{Notranslate}} Hue value for all loop blocks. +Blockly.Msg.LOOPS_HUE = '120'; +/** @type {string} */ +/// {{Notranslate}} Hue value for all math blocks. +Blockly.Msg.MATH_HUE = '230'; +/** @type {string} */ +/// {{Notranslate}} Hue value for all text blocks. +Blockly.Msg.TEXTS_HUE = '160'; +/** @type {string} */ +/// {{Notranslate}} Hue value for all list blocks. +Blockly.Msg.LISTS_HUE = '260'; +/** @type {string} */ +/// {{Notranslate}} Hue value for all colour blocks. +Blockly.Msg.COLOUR_HUE = '20'; +/** @type {string} */ +/// {{Notranslate}} Hue value for all variable blocks. +Blockly.Msg.VARIABLES_HUE = '330'; +/** @type {string} */ +/// {{Notranslate}} Hue value for all variable dynamic blocks. +Blockly.Msg.VARIABLES_DYNAMIC_HUE = '310'; +/** @type {string} */ +/// {{Notranslate}} Hue value for all procedure blocks. +Blockly.Msg.PROCEDURES_HUE = '290'; + +/** @type {string} */ +/// default name - A simple, general default name for a variable, preferably short. +/// For more context, see +/// [[Translating:Blockly#infrequent_message_types]].\n{{Identical|Item}} +Blockly.Msg.VARIABLES_DEFAULT_NAME = 'item'; +/** @type {string} */ +/// default name - A simple, default name for an unnamed function or variable. Preferably indicates that the item is unnamed. +Blockly.Msg.UNNAMED_KEY = 'unnamed'; +/** @type {string} */ +/// button text - Button that sets a calendar to today's date.\n{{Identical|Today}} +Blockly.Msg.TODAY = 'Today'; + +// Context menus. +/** @type {string} */ +/// context menu - Make a copy of the selected block (and any blocks it contains).\n{{Identical|Duplicate}} +Blockly.Msg.DUPLICATE_BLOCK = 'Duplicate'; +/** @type {string} */ +/// context menu - Add a descriptive comment to the selected block. +Blockly.Msg.ADD_COMMENT = 'Add Comment'; +/** @type {string} */ +/// context menu - Remove the descriptive comment from the selected block. +Blockly.Msg.REMOVE_COMMENT = 'Remove Comment'; +/** @type {string} */ +/// context menu - Make a copy of the selected workspace comment.\n{{Identical|Duplicate}} +Blockly.Msg.DUPLICATE_COMMENT = 'Duplicate Comment'; +/** @type {string} */ +/// context menu - Change from 'external' to 'inline' mode for displaying blocks used as inputs to the selected block. See [[Translating:Blockly#context_menus]]. +Blockly.Msg.EXTERNAL_INPUTS = 'External Inputs'; +/** @type {string} */ +/// context menu - Change from 'internal' to 'external' mode for displaying blocks used as inputs to the selected block. See [[Translating:Blockly#context_menus]]. +Blockly.Msg.INLINE_INPUTS = 'Inline Inputs'; +/** @type {string} */ +/// context menu - Permanently delete the selected block. +Blockly.Msg.DELETE_BLOCK = 'Delete Block'; +/** @type {string} */ +/// context menu - Permanently delete the %1 selected blocks.\n\nParameters:\n* %1 - an integer greater than 1. +Blockly.Msg.DELETE_X_BLOCKS = 'Delete %1 Blocks'; +/** @type {string} */ +/// confirmation prompt - Question the user if they really wanted to permanently delete all %1 blocks.\n\nParameters:\n* %1 - an integer greater than 1. +Blockly.Msg.DELETE_ALL_BLOCKS = 'Delete all %1 blocks?'; +/** @type {string} */ +/// context menu - Reposition all the blocks so that they form a neat line. +Blockly.Msg.CLEAN_UP = 'Clean up Blocks'; +/** @type {string} */ +/// context menu - Make the appearance of the selected block smaller by hiding some information about it. +Blockly.Msg.COLLAPSE_BLOCK = 'Collapse Block'; +/** @type {string} */ +/// context menu - Make the appearance of all blocks smaller by hiding some information about it. Use the same terminology as in the previous message. +Blockly.Msg.COLLAPSE_ALL = 'Collapse Blocks'; +/** @type {string} */ +/// context menu - Restore the appearance of the selected block by showing information about it that was hidden (collapsed) earlier. +Blockly.Msg.EXPAND_BLOCK = 'Expand Block'; +/** @type {string} */ +/// context menu - Restore the appearance of all blocks by showing information about it that was hidden (collapsed) earlier. Use the same terminology as in the previous message. +Blockly.Msg.EXPAND_ALL = 'Expand Blocks'; +/** @type {string} */ +/// context menu - Make the selected block have no effect (unless reenabled). +Blockly.Msg.DISABLE_BLOCK = 'Disable Block'; +/** @type {string} */ +/// context menu - Make the selected block have effect (after having been disabled earlier). +Blockly.Msg.ENABLE_BLOCK = 'Enable Block'; +/** @type {string} */ +/// context menu - Provide helpful information about the selected block.\n{{Identical|Help}} +Blockly.Msg.HELP = 'Help'; +/** @type {string} */ +/// context menu - Undo the previous action.\n{{Identical|Undo}} +Blockly.Msg.UNDO = 'Undo'; +/** @type {string} */ +/// context menu - Undo the previous undo action.\n{{Identical|Redo}} +Blockly.Msg.REDO = 'Redo'; + +// Variable renaming. +/** @type {string} */ +/// prompt - This message is only seen in the Opera browser. With most browsers, users can edit numeric values in blocks by just clicking and typing. Opera does not allows this, so we have to open a new window and prompt users with this message to chanage a value. +Blockly.Msg.CHANGE_VALUE_TITLE = 'Change value:'; +/** @type {string} */ +/// dropdown choice - When the user clicks on a variable block, this is one of the dropdown menu choices. It is used to rename the current variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu]. +Blockly.Msg.RENAME_VARIABLE = 'Rename variable...'; +/** @type {string} */ +/// prompt - Prompts the user to enter the new name for the selected variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].\n\nParameters:\n* %1 - the name of the variable to be renamed. +Blockly.Msg.RENAME_VARIABLE_TITLE = 'Rename all "%1" variables to:'; + +// Variable creation +/** @type {string} */ +/// button text - Text on the button used to launch the variable creation dialogue. +Blockly.Msg.NEW_VARIABLE = 'Create variable...'; +/** @type {string} */ +/// button text - Text on the button used to launch the variable creation dialogue. +Blockly.Msg.NEW_STRING_VARIABLE = 'Create string variable...'; +/** @type {string} */ +/// button text - Text on the button used to launch the variable creation dialogue. +Blockly.Msg.NEW_NUMBER_VARIABLE = 'Create number variable...'; +/** @type {string} */ +/// button text - Text on the button used to launch the variable creation dialogue. +Blockly.Msg.NEW_COLOUR_VARIABLE = 'Create colour variable...'; +/** @type {string} */ +/// prompt - Prompts the user to enter the type for a variable. +Blockly.Msg.NEW_VARIABLE_TYPE_TITLE = 'New variable type:'; +/** @type {string} */ +/// prompt - Prompts the user to enter the name for a new variable. See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu]. +Blockly.Msg.NEW_VARIABLE_TITLE = 'New variable name:'; +/** @type {string} */ +/// alert - Tells the user that the name they entered is already in use. +Blockly.Msg.VARIABLE_ALREADY_EXISTS = 'A variable named "%1" already exists.'; +/** @type {string} */ +/// alert - Tells the user that the name they entered is already in use for another type. +Blockly.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE = 'A variable named "%1" already exists for another type: "%2".'; + +// Variable deletion. +/** @type {string} */ +/// confirm - Ask the user to confirm their deletion of multiple uses of a variable. +Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = 'Delete %1 uses of the "%2" variable?'; +/** @type {string} */ +/// alert - Tell the user that they can't delete a variable because it's part of the definition of a function. +Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE = 'Can\'t delete the variable "%1" because it\'s part of the definition of the function "%2"'; +/** @type {string} */ +/// dropdown choice - Delete the currently selected variable. +Blockly.Msg.DELETE_VARIABLE = 'Delete the "%1" variable'; + +// Colour Blocks. +/** @type {string} */ +/// {{Optional}} url - Information about colour. +Blockly.Msg.COLOUR_PICKER_HELPURL = 'https://en.wikipedia.org/wiki/Color'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette]. +Blockly.Msg.COLOUR_PICKER_TOOLTIP = 'Choose a colour from the palette.'; +/** @type {string} */ +/// {{Optional}} url - A link that displays a random colour each time you visit it. +Blockly.Msg.COLOUR_RANDOM_HELPURL = 'http://randomcolour.com'; +/** @type {string} */ +/// block text - Title of block that generates a colour at random. +Blockly.Msg.COLOUR_RANDOM_TITLE = 'random colour'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Colour#generating-a-random-colour https://github.com/google/blockly/wiki/Colour#generating-a-random-colour]. +Blockly.Msg.COLOUR_RANDOM_TOOLTIP = 'Choose a colour at random.'; +/** @type {string} */ +/// {{Optional}} url - A link for colour codes with percentages (0-100%) for each component, instead of the more common 0-255, which may be more difficult for beginners. +Blockly.Msg.COLOUR_RGB_HELPURL = 'https://www.december.com/html/spec/colorpercompact.html'; +/** @type {string} */ +/// block text - Title of block for [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components]. +Blockly.Msg.COLOUR_RGB_TITLE = 'colour with'; +/** @type {string} */ +/// block input text - The amount of red (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Red}} +Blockly.Msg.COLOUR_RGB_RED = 'red'; +/** @type {string} */ +/// block input text - The amount of green (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components]. +Blockly.Msg.COLOUR_RGB_GREEN = 'green'; +/** @type {string} */ +/// block input text - The amount of blue (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Blue}} +Blockly.Msg.COLOUR_RGB_BLUE = 'blue'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components]. +Blockly.Msg.COLOUR_RGB_TOOLTIP = 'Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.'; +/** @type {string} */ +/// {{Optional}} url - A useful link that displays blending of two colours. +Blockly.Msg.COLOUR_BLEND_HELPURL = 'https://meyerweb.com/eric/tools/color-blend/#:::rgbp'; +/** @type {string} */ +/// block text - A verb for blending two shades of paint. +Blockly.Msg.COLOUR_BLEND_TITLE = 'blend'; +/** @type {string} */ +/// block input text - The first of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend]. +Blockly.Msg.COLOUR_BLEND_COLOUR1 = 'colour 1'; +/** @type {string} */ +/// block input text - The second of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend]. +Blockly.Msg.COLOUR_BLEND_COLOUR2 = 'colour 2'; +/** @type {string} */ +/// block input text - The proportion of the [https://github.com/google/blockly/wiki/Colour#blending-colours blend] containing the first colour; the remaining proportion is of the second colour. For example, if the first colour is red and the second colour blue, a ratio of 1 would yield pure red, a ratio of .5 would yield purple (equal amounts of red and blue), and a ratio of 0 would yield pure blue.\n{{Identical|Ratio}} +Blockly.Msg.COLOUR_BLEND_RATIO = 'ratio'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Colour#blending-colours https://github.com/google/blockly/wiki/Colour#blending-colours]. +Blockly.Msg.COLOUR_BLEND_TOOLTIP = 'Blends two colours together with a given ratio (0.0 - 1.0).'; + +// Loop Blocks. +/** @type {string} */ +/// {{Optional}} url - Describes 'repeat loops' in computer programs; consider using the translation of the page [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow]. +Blockly.Msg.CONTROLS_REPEAT_HELPURL = 'https://en.wikipedia.org/wiki/For_loop'; +/** @type {string} */ +/// block input text - Title of [https://github.com/google/blockly/wiki/Loops#repeat repeat block].\n\nParameters:\n* %1 - the number of times the body of the loop should be repeated. +Blockly.Msg.CONTROLS_REPEAT_TITLE = 'repeat %1 times'; +/** @type {string} */ +/// block text - Preceding the blocks in the body of the loop. See [https://github.com/google/blockly/wiki/Loops https://github.com/google/blockly/wiki/Loops].\n{{Identical|Do}} +Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = 'do'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat https://github.com/google/blockly/wiki/Loops#repeat]. +Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = 'Do some statements several times.'; +/** @type {string} */ +/// {{Optional}} url - Describes 'while loops' in computer programs; consider using the translation of [https://en.wikipedia.org/wiki/While_loop https://en.wikipedia.org/wiki/While_loop], if present, or [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow]. +Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = 'https://github.com/google/blockly/wiki/Loops#repeat'; +/** @type {string} */ +Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; +/** @type {string} */ +/// dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-while repeat while] the following condition is true. +Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = 'repeat while'; +/** @type {string} */ +/// dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-until repeat until] the following condition becomes true. +Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = 'repeat until'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while]. +Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = 'While a value is true, then do some statements.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-until https://github.com/google/blockly/wiki/Loops#repeat-until]. +Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = 'While a value is false, then do some statements.'; + +/** @type {string} */ +/// {{Optional}} url - Describes 'for loops' in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/For_loop https://en.wikipedia.org/wiki/For_loop], if present. +Blockly.Msg.CONTROLS_FOR_HELPURL = 'https://github.com/google/blockly/wiki/Loops#count-with'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Loops#count-with https://github.com/google/blockly/wiki/Loops#count-with].\n\nParameters:\n* %1 - the name of the loop variable. +Blockly.Msg.CONTROLS_FOR_TOOLTIP = 'Have the variable "%1" take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.'; +/** @type {string} */ +/// block text - Repeatedly counts a variable (%1) +/// starting with a (usually lower) number in a range (%2), +/// ending with a (usually higher) number in a range (%3), and counting the +/// iterations by a number of steps (%4). As in +/// [https://github.com/google/blockly/wiki/Loops#count-with +/// https://github.com/google/blockly/wiki/Loops#count-with]. +/// [[File:Blockly-count-with.png]] +Blockly.Msg.CONTROLS_FOR_TITLE = 'count with %1 from %2 to %3 by %4'; +/** @type {string} */ +Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; + +/** @type {string} */ +/// {{Optional}} url - Describes 'for-each loops' in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/Foreach https://en.wikipedia.org/wiki/Foreach] if present. +Blockly.Msg.CONTROLS_FOREACH_HELPURL = 'https://github.com/google/blockly/wiki/Loops#for-each'; +/** @type {string} */ +/// block text - Title of [https://github.com/google/blockly/wiki/Loops#for-each for each block]. +/// Sequentially assigns every item in array %2 to the valiable %1. +Blockly.Msg.CONTROLS_FOREACH_TITLE = 'for each item %1 in list %2'; +/** @type {string} */ +Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; +/** @type {string} */ +/// block text - Description of [https://github.com/google/blockly/wiki/Loops#for-each for each blocks].\n\nParameters:\n* %1 - the name of the loop variable. +Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = 'For each item in a list, set the variable "%1" to the item, and then do some statements.'; + +/** @type {string} */ +/// {{Optional}} url - Describes control flow in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow], if it exists. +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = 'https://github.com/google/blockly/wiki/Loops#loop-termination-blocks'; +/** @type {string} */ +/// dropdown - The current loop should be exited. See [https://github.com/google/blockly/wiki/Loops#break https://github.com/google/blockly/wiki/Loops#break]. +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = 'break out of loop'; +/** @type {string} */ +/// dropdown - The current iteration of the loop should be ended and the next should begin. See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration]. +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = 'continue with next iteration of loop'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Loops#break-out-of-loop https://github.com/google/blockly/wiki/Loops#break-out-of-loop]. +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = 'Break out of the containing loop.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration]. +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = 'Skip the rest of this loop, and continue with the next iteration.'; +/** @type {string} */ +/// warning - The user has tried placing a block outside of a loop (for each, while, repeat, etc.), but this type of block may only be used within a loop. See [https://github.com/google/blockly/wiki/Loops#loop-termination-blocks https://github.com/google/blockly/wiki/Loops#loop-termination-blocks]. +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = 'Warning: This block may only be used within a loop.'; + +// Logic Blocks. +/** @type {string} */ +/// {{Optional}} url - Describes conditional statements (if-then-else) in computer programs. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_else https://en.wikipedia.org/wiki/If_else], if present. +Blockly.Msg.CONTROLS_IF_HELPURL = 'https://github.com/google/blockly/wiki/IfElse'; +/** @type {string} */ +/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-blocks 'if' blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present. +Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = 'If a value is true, then do some statements.'; +/** @type {string} */ +/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-blocks if-else blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present. +Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = 'If a value is true, then do the first block of statements. Otherwise, do the second block of statements.'; +/** @type {string} */ +/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-blocks if-else-if blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present. +Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = 'If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.'; +/** @type {string} */ +/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-else-blocks if-else-if-else blocks]. Consider using your language's translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present. +Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = 'If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. +/// It is recommended, but not essential, that this have text in common with the translation of 'else if'\n{{Identical|If}} +Blockly.Msg.CONTROLS_IF_MSG_IF = 'if'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. The English words "otherwise if" would probably be clearer than "else if", but the latter is used because it is traditional and shorter. +Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = 'else if'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse]. The English word "otherwise" would probably be superior to "else", but the latter is used because it is traditional and shorter. +Blockly.Msg.CONTROLS_IF_MSG_ELSE = 'else'; +/** @type {string} */ +Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; +/** @type {string} */ +Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF; +/** @type {string} */ +/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification]. +Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = 'Add, remove, or reorder sections to reconfigure this if block.'; +/** @type {string} */ +Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF; +/** @type {string} */ +/// tooltip - Describes the 'else if' subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification]. +Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = 'Add a condition to the if block.'; +/** @type {string} */ +Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE; +/** @type {string} */ +/// tooltip - Describes the 'else' subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification]. +Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = 'Add a final, catch-all condition to the if block.'; + +/** @type {string} */ +/// {{Optional}} url - Information about comparisons. +Blockly.Msg.LOGIC_COMPARE_HELPURL = 'https://en.wikipedia.org/wiki/Inequality_(mathematics)'; +/** @type {string} */ +/// tooltip - Describes the equals (=) block. +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = 'Return true if both inputs equal each other.'; +/** @type {string} */ +/// tooltip - Describes the not equals (≠) block. +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = 'Return true if both inputs are not equal to each other.'; +/** @type {string} */ +/// tooltip - Describes the less than (<) block. +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = 'Return true if the first input is smaller than the second input.'; +/** @type {string} */ +/// tooltip - Describes the less than or equals (≤) block. +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = 'Return true if the first input is smaller than or equal to the second input.'; +/** @type {string} */ +/// tooltip - Describes the greater than (>) block. +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = 'Return true if the first input is greater than the second input.'; +/** @type {string} */ +/// tooltip - Describes the greater than or equals (≥) block. +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = 'Return true if the first input is greater than or equal to the second input.'; + +/** @type {string} */ +/// {{Optional}} url - Information about the Boolean conjunction ("and") and disjunction ("or") operators. Consider using the translation of [https://en.wikipedia.org/wiki/Boolean_logic https://en.wikipedia.org/wiki/Boolean_logic], if it exists in your language. +Blockly.Msg.LOGIC_OPERATION_HELPURL = 'https://github.com/google/blockly/wiki/Logic#logical-operations'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction]. +Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = 'Return true if both inputs are true.'; +/** @type {string} */ +/// block text - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction].\n{{Identical|And}} +Blockly.Msg.LOGIC_OPERATION_AND = 'and'; +/** @type {string} */ +/// block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction]. +Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = 'Return true if at least one of the inputs is true.'; +/** @type {string} */ +/// block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction].\n{{Identical|Or}} +Blockly.Msg.LOGIC_OPERATION_OR = 'or'; + +/** @type {string} */ +/// {{Optional}} url - Information about logical negation. The translation of [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation] is recommended if it exists in the target language. +Blockly.Msg.LOGIC_NEGATE_HELPURL = 'https://github.com/google/blockly/wiki/Logic#not'; +/** @type {string} */ +/// block text - This is a unary operator that returns ''false'' when the input is ''true'', and ''true'' when the input is ''false''. +/// \n\nParameters:\n* %1 - the input (which should be either the value "true" or "false") +Blockly.Msg.LOGIC_NEGATE_TITLE = 'not %1'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation]. +Blockly.Msg.LOGIC_NEGATE_TOOLTIP = 'Returns true if the input is false. Returns false if the input is true.'; + +/** @type {string} */ +/// {{Optional}} url - Information about the logic values ''true'' and ''false''. Consider using the translation of [https://en.wikipedia.org/wiki/Truth_value https://en.wikipedia.org/wiki/Truth_value] if it exists in your language. +Blockly.Msg.LOGIC_BOOLEAN_HELPURL = 'https://github.com/google/blockly/wiki/Logic#values'; +/** @type {string} */ +/// block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] ''true''.\n{{Identical|True}} +Blockly.Msg.LOGIC_BOOLEAN_TRUE = 'true'; +/** @type {string} */ +/// block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] ''false''.\n{{Identical|False}} +Blockly.Msg.LOGIC_BOOLEAN_FALSE = 'false'; +/** @type {string} */ +/// tooltip - Indicates that the block returns either of the two possible [https://en.wikipedia.org/wiki/Truth_value logical values]. +Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = 'Returns either true or false.'; + +/** @type {string} */ +/// {{Optional}} url - Provide a link to the translation of [https://en.wikipedia.org/wiki/Nullable_type https://en.wikipedia.org/wiki/Nullable_type], if it exists in your language; otherwise, do not worry about translating this advanced concept. +Blockly.Msg.LOGIC_NULL_HELPURL = 'https://en.wikipedia.org/wiki/Nullable_type'; +/** @type {string} */ +/// block text - In computer languages, ''null'' is a special value that indicates that no value has been set. You may use your language's word for "nothing" or "invalid".\n{{Identical|Null}} +Blockly.Msg.LOGIC_NULL = 'null'; +/** @type {string} */ +/// tooltip - This should use the word from the previous message. +Blockly.Msg.LOGIC_NULL_TOOLTIP = 'Returns null.'; + +/** @type {string} */ +/// {{Optional}} url - Describes the programming language operator known as the ''ternary'' or ''conditional'' operator. It is recommended that you use the translation of [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:] if it exists. +Blockly.Msg.LOGIC_TERNARY_HELPURL = 'https://en.wikipedia.org/wiki/%3F:'; +/** @type {string} */ +/// block input text - Label for the input whose value determines which of the other two inputs is returned. In some programming languages, this is called a ''''predicate''''. +Blockly.Msg.LOGIC_TERNARY_CONDITION = 'test'; +/** @type {string} */ +/// block input text - Indicates that the following input should be returned (used as output) if the test input is true. Remember to try to keep block text terse (short). +Blockly.Msg.LOGIC_TERNARY_IF_TRUE = 'if true'; +/** @type {string} */ +/// block input text - Indicates that the following input should be returned (used as output) if the test input is false. +Blockly.Msg.LOGIC_TERNARY_IF_FALSE = 'if false'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:]. +Blockly.Msg.LOGIC_TERNARY_TOOLTIP = 'Check the condition in "test". If the condition is true, returns the "if true" value; otherwise returns the "if false" value.'; + +// Math Blocks. +/** @type {string} */ +/// {{Optional}} url - Information about (real) numbers. +Blockly.Msg.MATH_NUMBER_HELPURL = 'https://en.wikipedia.org/wiki/Number'; +/** @type {string} */ +/// tooltip - Any positive or negative number, not necessarily an integer. +Blockly.Msg.MATH_NUMBER_TOOLTIP = 'A number.'; + +/** @type {string} */ +/// {{Optional}} math - The symbol for the binary operation addition. +Blockly.Msg.MATH_ADDITION_SYMBOL = '+'; +/** @type {string} */ +/// {{Optional}} math - The symbol for the binary operation indicating that the right operand should be +/// subtracted from the left operand. +Blockly.Msg.MATH_SUBTRACTION_SYMBOL = '-'; +/** @type {string} */ +/// {{Optional}} math - The binary operation indicating that the left operand should be divided by +/// the right operand. +Blockly.Msg.MATH_DIVISION_SYMBOL = '÷'; +/** @type {string} */ +/// {{Optional}} math - The symbol for the binary operation multiplication. +Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = '×'; +/** @type {string} */ +/// {{Optional}} math - The symbol for the binary operation exponentiation. Specifically, if the +/// value of the left operand is L and the value of the right operand (the exponent) is +/// R, multiply L by itself R times. (Fractional and negative exponents are also legal.) +Blockly.Msg.MATH_POWER_SYMBOL = '^'; + +/** @type {string} */ +/// math - The short name of the trigonometric function +/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine]. +Blockly.Msg.MATH_TRIG_SIN = 'sin'; +/** @type {string} */ +/// math - The short name of the trigonometric function +/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine]. +Blockly.Msg.MATH_TRIG_COS = 'cos'; +/** @type {string} */ +/// math - The short name of the trigonometric function +/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent]. +Blockly.Msg.MATH_TRIG_TAN = 'tan'; +/** @type {string} */ +/// math - The short name of the ''inverse of'' the trigonometric function +/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine]. +Blockly.Msg.MATH_TRIG_ASIN = 'asin'; +/** @type {string} */ +/// math - The short name of the ''inverse of'' the trigonometric function +/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine]. +Blockly.Msg.MATH_TRIG_ACOS = 'acos'; +/** @type {string} */ +/// math - The short name of the ''inverse of'' the trigonometric function +/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent]. +Blockly.Msg.MATH_TRIG_ATAN = 'atan'; + +/** @type {string} */ +/// {{Optional}} url - Information about addition, subtraction, multiplication, division, and exponentiation. +Blockly.Msg.MATH_ARITHMETIC_HELPURL = 'https://en.wikipedia.org/wiki/Arithmetic'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition]. +Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = 'Return the sum of the two numbers.'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Subtraction https://en.wikipedia.org/wiki/Subtraction]. +Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = 'Return the difference of the two numbers.'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Multiplication https://en.wikipedia.org/wiki/Multiplication]. +Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = 'Return the product of the two numbers.'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Division_(mathematics) https://en.wikipedia.org/wiki/Division_(mathematics)]. +Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = 'Return the quotient of the two numbers.'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Exponentiation https://en.wikipedia.org/wiki/Exponentiation]. +Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = 'Return the first number raised to the power of the second number.'; + +/** @type {string} */ +/// {{Optional}} url - Information about the square root operation. +Blockly.Msg.MATH_SINGLE_HELPURL = 'https://en.wikipedia.org/wiki/Square_root'; +/** @type {string} */ +/// dropdown - This computes the positive [https://en.wikipedia.org/wiki/Square_root square root] of its input. For example, the square root of 16 is 4. +Blockly.Msg.MATH_SINGLE_OP_ROOT = 'square root'; +/** @type {string} */ +/// tooltip - Please use the same term as in the previous message. +Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = 'Return the square root of a number.'; +/** @type {string} */ +/// dropdown - This leaves positive numeric inputs changed and inverts negative inputs. For example, the absolute value of 5 is 5; the absolute value of -5 is also 5. For more information, see [https://en.wikipedia.org/wiki/Absolute_value https://en.wikipedia.org/wiki/Absolute_value]. +Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = 'absolute'; +/** @type {string} */ +/// tooltip - Please use the same term as in the previous message. +Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = 'Return the absolute value of a number.'; + +/** @type {string} */ +/// tooltip - Calculates '''0-n''', where '''n''' is the single numeric input. +Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = 'Return the negation of a number.'; +/** @type {string} */ +/// tooltip - Calculates the [https://en.wikipedia.org/wiki/Natural_logarithm|natural logarithm] of its single numeric input. +Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = 'Return the natural logarithm of a number.'; +/** @type {string} */ +/// tooltip - Calculates the [https://en.wikipedia.org/wiki/Common_logarithm common logarithm] of its single numeric input. +Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = 'Return the base 10 logarithm of a number.'; +/** @type {string} */ +/// tooltip - Multiplies [https://en.wikipedia.org/wiki/E_(mathematical_constant) e] by itself n times, where n is the single numeric input. +Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = 'Return e to the power of a number.'; +/** @type {string} */ +/// tooltip - Multiplies 10 by itself n times, where n is the single numeric input. +Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = 'Return 10 to the power of a number.'; + +/** @type {string} */ +/// {{Optional}} url - Information about the trigonometric functions sine, cosine, tangent, and their inverses (ideally using degrees, not radians). +Blockly.Msg.MATH_TRIG_HELPURL = 'https://en.wikipedia.org/wiki/Trigonometric_functions'; +/** @type {string} */ +/// tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians. +Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = 'Return the sine of a degree (not radian).'; +/** @type {string} */ +/// tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians. +Blockly.Msg.MATH_TRIG_TOOLTIP_COS = 'Return the cosine of a degree (not radian).'; +/** @type {string} */ +/// tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians. +Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = 'Return the tangent of a degree (not radian).'; +/** @type {string} */ +/// tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent sine function], using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians. +Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = 'Return the arcsine of a number.'; +/** @type {string} */ +/// tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent cosine] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians. +Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = 'Return the arccosine of a number.'; +/** @type {string} */ +/// tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent tangent] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians. +Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = 'Return the arctangent of a number.'; + +/** @type {string} */ +/// {{Optional}} url - Information about the mathematical constants Pi (π), e, the golden ratio (φ), √ 2, √ 1/2, and infinity (∞). +Blockly.Msg.MATH_CONSTANT_HELPURL = 'https://en.wikipedia.org/wiki/Mathematical_constant'; +/** @type {string} */ +/// tooltip - Provides the specified [https://en.wikipedia.org/wiki/Mathematical_constant mathematical constant]. +Blockly.Msg.MATH_CONSTANT_TOOLTIP = 'Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).'; +/** @type {string} */ +/// dropdown - A number is '''even''' if it is a multiple of 2. For example, 4 is even (yielding true), but 3 is not (false). +Blockly.Msg.MATH_IS_EVEN = 'is even'; +/** @type {string} */ +/// dropdown - A number is '''odd''' if it is not a multiple of 2. For example, 3 is odd (yielding true), but 4 is not (false). The opposite of "odd" is "even". +Blockly.Msg.MATH_IS_ODD = 'is odd'; +/** @type {string} */ +/// dropdown - A number is [https://en.wikipedia.org/wiki/Prime prime] if it cannot be evenly divided by any positive integers except for 1 and itself. For example, 5 is prime, but 6 is not because 2 × 3 = 6. +Blockly.Msg.MATH_IS_PRIME = 'is prime'; +/** @type {string} */ +/// dropdown - A number is '''whole''' if it is an [https://en.wikipedia.org/wiki/Integer integer]. For example, 5 is whole, but 5.1 is not. +Blockly.Msg.MATH_IS_WHOLE = 'is whole'; +/** @type {string} */ +/// dropdown - A number is '''positive''' if it is greater than 0. (0 is neither negative nor positive.) +Blockly.Msg.MATH_IS_POSITIVE = 'is positive'; +/** @type {string} */ +/// dropdown - A number is '''negative''' if it is less than 0. (0 is neither negative nor positive.) +Blockly.Msg.MATH_IS_NEGATIVE = 'is negative'; +/** @type {string} */ +/// dropdown - A number x is divisible by y if y goes into x evenly. For example, 10 is divisible by 5, but 10 is not divisible by 3. +Blockly.Msg.MATH_IS_DIVISIBLE_BY = 'is divisible by'; +/** @type {string} */ +/// tooltip - This block lets the user specify via a dropdown menu whether to check if the numeric input is even, odd, prime, whole, positive, negative, or divisible by a given value. +Blockly.Msg.MATH_IS_TOOLTIP = 'Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.'; + +/** @type {string} */ +/// {{Optional}} url - Information about incrementing (increasing the value of) a variable. +/// For other languages, just use the translation of the Wikipedia page about +/// addition ([https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition]). +Blockly.Msg.MATH_CHANGE_HELPURL = 'https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter'; +/** @type {string} */ +/// - As in: ''change'' [the value of variable] ''item'' ''by'' 1 (e.g., if the variable named 'item' had the value 5, change it to 6). +/// %1 is a variable name. +/// %2 is the amount of change. +Blockly.Msg.MATH_CHANGE_TITLE = 'change %1 by %2'; +/** @type {string} */ +Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME; +/** @type {string} */ +/// tooltip - This updates the value of the variable by adding to it the following numeric input.\n\nParameters:\n* %1 - the name of the variable whose value should be increased. +Blockly.Msg.MATH_CHANGE_TOOLTIP = 'Add a number to variable "%1".'; + +/** @type {string} */ +/// {{Optional}} url - Information about how numbers are rounded to the nearest integer +Blockly.Msg.MATH_ROUND_HELPURL = 'https://en.wikipedia.org/wiki/Rounding'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Rounding https://en.wikipedia.org/wiki/Rounding]. +Blockly.Msg.MATH_ROUND_TOOLTIP = 'Round a number up or down.'; +/** @type {string} */ +/// dropdown - This rounds its input to the nearest whole number. For example, 3.4 is rounded to 3. +Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = 'round'; +/** @type {string} */ +/// dropdown - This rounds its input up to the nearest whole number. For example, if the input was 2.2, the result would be 3. +Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = 'round up'; +/** @type {string} */ +/// dropdown - This rounds its input down to the nearest whole number. For example, if the input was 3.8, the result would be 3. +Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = 'round down'; + +/** @type {string} */ +/// {{Optional}} url - Information about applying a function to a list of numbers. (We were unable to find such information in English. Feel free to skip this and any other URLs that are difficult.) +Blockly.Msg.MATH_ONLIST_HELPURL = ''; +/** @type {string} */ +/// dropdown - This computes the sum of the numeric elements in the list. For example, the sum of the list {1, 4} is 5. +Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = 'sum of list'; +/** @type {string} */ +/// tooltip - Please use the same term for "sum" as in the previous message. +Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = 'Return the sum of all the numbers in the list.'; +/** @type {string} */ +/// dropdown - This finds the smallest (minimum) number in a list. For example, the smallest number in the list [-5, 0, 3] is -5. +Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = 'min of list'; +/** @type {string} */ +/// tooltip - Please use the same term for "min" or "minimum" as in the previous message. +Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = 'Return the smallest number in the list.'; +/** @type {string} */ +/// dropdown - This finds the largest (maximum) number in a list. For example, the largest number in the list [-5, 0, 3] is 3. +Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = 'max of list'; +/** @type {string} */ +/// tooltip +Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = 'Return the largest number in the list.'; +/** @type {string} */ +/// dropdown - This adds up all of the numbers in a list and divides the sum by the number of elements in the list. For example, the [https://en.wikipedia.org/wiki/Arithmetic_mean average] of the list [1, 2, 3, 4] is 2.5 (10/4). +Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = 'average of list'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Arithmetic_mean https://en.wikipedia.org/wiki/Arithmetic_mean] for more informatin. +Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = 'Return the average (arithmetic mean) of the numeric values in the list.'; +/** @type {string} */ +/// dropdown - This finds the [https://en.wikipedia.org/wiki/Median median] of the numeric values in a list. For example, the median of the list {1, 2, 7, 12, 13} is 7. +Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = 'median of list'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Median median https://en.wikipedia.org/wiki/Median median] for more information. +Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = 'Return the median number in the list.'; +/** @type {string} */ +/// dropdown - This finds the most common numbers ([https://en.wikipedia.org/wiki/Mode_(statistics) modes]) in a list. For example, the modes of the list {1, 3, 9, 3, 9} are {3, 9}. +Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = 'modes of list'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Mode_(statistics) https://en.wikipedia.org/wiki/Mode_(statistics)] for more information. +Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = 'Return a list of the most common item(s) in the list.'; +/** @type {string} */ +/// dropdown - This finds the [https://en.wikipedia.org/wiki/Standard_deviation standard deviation] of the numeric values in a list. +Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = 'standard deviation of list'; +/** @type {string} */ +/// tooltip - See [https://en.wikipedia.org/wiki/Standard_deviation https://en.wikipedia.org/wiki/Standard_deviation] for more information. +Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = 'Return the standard deviation of the list.'; +/** @type {string} */ +/// dropdown - This choose an element at random from a list. Each element is chosen with equal probability. +Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = 'random item of list'; +/** @type {string} */ +/// tooltip - Please use same term for 'random' as in previous entry. +Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = 'Return a random element from the list.'; + +/** @type {string} */ +/// {{Optional}} url - information about the modulo (remainder) operation. +Blockly.Msg.MATH_MODULO_HELPURL = 'https://en.wikipedia.org/wiki/Modulo_operation'; +/** @type {string} */ +/// block text - Title of block providing the remainder when dividing the first numerical input by the second. For example, the remainder of 10 divided by 3 is 1.\n\nParameters:\n* %1 - the dividend (10, in our example)\n* %2 - the divisor (3 in our example). +Blockly.Msg.MATH_MODULO_TITLE = 'remainder of %1 ÷ %2'; +/** @type {string} */ +/// tooltip - For example, the remainder of 10 divided by 3 is 1. +Blockly.Msg.MATH_MODULO_TOOLTIP = 'Return the remainder from dividing the two numbers.'; + +/** @type {string} */ +/// {{Optional}} url - Information about constraining a numeric value to be in a specific range. (The English URL is not ideal. Recall that translating URLs is the lowest priority.) +Blockly.Msg.MATH_CONSTRAIN_HELPURL = 'https://en.wikipedia.org/wiki/Clamping_(graphics)'; +/** @type {string} */ +/// block text - The title of the block that '''constrain'''s (forces) a number to be in a given range. +///For example, if the number 150 is constrained to be between 5 and 100, the result will be 100. +///\n\nParameters:\n* %1 - the value to constrain (e.g., 150)\n* %2 - the minimum value (e.g., 5)\n* %3 - the maximum value (e.g., 100). +Blockly.Msg.MATH_CONSTRAIN_TITLE = 'constrain %1 low %2 high %3'; +/** @type {string} */ +/// tooltip - This compares a number ''x'' to a low value ''L'' and a high value ''H''. If ''x'' is less then ''L'', the result is ''L''. If ''x'' is greater than ''H'', the result is ''H''. Otherwise, the result is ''x''. +Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = 'Constrain a number to be between the specified limits (inclusive).'; + +/** @type {string} */ +/// {{Optional}} url - Information about how computers generate random numbers. +Blockly.Msg.MATH_RANDOM_INT_HELPURL = 'https://en.wikipedia.org/wiki/Random_number_generation'; +/** @type {string} */ +/// block text - The title of the block that generates a random integer (whole number) in the specified range. For example, if the range is from 5 to 7, this returns 5, 6, or 7 with equal likelihood. %1 is a placeholder for the lower number, %2 is the placeholder for the larger number. +Blockly.Msg.MATH_RANDOM_INT_TITLE = 'random integer from %1 to %2'; +/** @type {string} */ +/// tooltip - Return a random integer between two values specified as inputs. For example, if one input was 7 and another 9, any of the numbers 7, 8, or 9 could be produced. +Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = 'Return a random integer between the two specified limits, inclusive.'; + +/** @type {string} */ +/// {{Optional}} url - Information about how computers generate random numbers (specifically, numbers in the range from 0 to just below 1). +Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = 'https://en.wikipedia.org/wiki/Random_number_generation'; +/** @type {string} */ +/// block text - The title of the block that generates a random number greater than or equal to 0 and less than 1. +Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = 'random fraction'; +/** @type {string} */ +/// tooltip - Return a random fraction between 0 and 1. The value may be equal to 0 but must be less than 1. +Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = 'Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).'; + +/** @type {string} */ +/// {{Optional}} url - Information about how to calculate atan2. +Blockly.Msg.MATH_ATAN2_HELPURL = 'https://en.wikipedia.org/wiki/Atan2'; +/** @type {string} */ +/// block text - The title of the block that calculates atan2 of point (X, Y). For example, if the point is (-1, -1), this returns -135. %1 is a placeholder for the X coordinate, %2 is the placeholder for the Y coordinate. +Blockly.Msg.MATH_ATAN2_TITLE = 'atan2 of X:%1 Y:%2'; +/** @type {string} */ +/// tooltip - Return the arctangent of point (X, Y) in degrees from -180 to 180. For example, if the point is (-1, -1) this returns -135. +Blockly.Msg.MATH_ATAN2_TOOLTIP = 'Return the arctangent of point (X, Y) in degrees from -180 to 180.'; + +// Text Blocks. +/** @type {string} */ +/// {{Optional}} url - Information about how computers represent text (sometimes referred to as ''string''s). +Blockly.Msg.TEXT_TEXT_HELPURL = 'https://en.wikipedia.org/wiki/String_(computer_science)'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text https://github.com/google/blockly/wiki/Text]. +Blockly.Msg.TEXT_TEXT_TOOLTIP = 'A letter, word, or line of text.'; + +/** @type {string} */ +/// {{Optional}} url - Information on concatenating/appending pieces of text. +Blockly.Msg.TEXT_JOIN_HELPURL = 'https://github.com/google/blockly/wiki/Text#text-creation'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation]. +Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = 'create text with'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation create text with] for more information. +Blockly.Msg.TEXT_JOIN_TOOLTIP = 'Create a piece of text by joining together any number of items.'; + +/** @type {string} */ +/// block text - This is shown when the programmer wants to change the number of pieces of text being joined together. See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section.\n{{Identical|Join}} +Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = 'join'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section. +Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = 'Add, remove, or reorder sections to reconfigure this text block.'; +/** @type {string} */ +Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the 'Text creation' section. +Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = 'Add an item to the text.'; + +/** @type {string} */ +/// {{Optional}} url - This and the other text-related URLs are going to be hard to translate. As always, it is okay to leave untranslated or paste in the English-language URL. For these URLs, you might also consider a general URL about how computers represent text (such as the translation of [https://en.wikipedia.org/wiki/String_(computer_science) this Wikipedia page]). +Blockly.Msg.TEXT_APPEND_HELPURL = 'https://github.com/google/blockly/wiki/Text#text-modification'; +/** @type {string} */ +/// block input text - Message that the variable name at %1 will have the item at %2 appended to it. +/// [[File:blockly-append-text.png]] +Blockly.Msg.TEXT_APPEND_TITLE = 'to %1 append text %2'; +/** @type {string} */ +Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-modification https://github.com/google/blockly/wiki/Text#text-modification] for more information.\n\nParameters:\n* %1 - the name of the variable to which text should be appended +Blockly.Msg.TEXT_APPEND_TOOLTIP = 'Append some text to variable "%1".'; + +/** @type {string} */ +/// {{Optional}} url - Information about text on computers (usually referred to as 'strings'). +Blockly.Msg.TEXT_LENGTH_HELPURL = 'https://github.com/google/blockly/wiki/Text#text-modification'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length]. +/// \n\nParameters:\n* %1 - the piece of text to take the length of +Blockly.Msg.TEXT_LENGTH_TITLE = 'length of %1'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length]. +Blockly.Msg.TEXT_LENGTH_TOOLTIP = 'Returns the number of letters (including spaces) in the provided text.'; + +/** @type {string} */ +/// {{Optional}} url - Information about empty pieces of text on computers (usually referred to as 'empty strings'). +Blockly.Msg.TEXT_ISEMPTY_HELPURL = 'https://github.com/google/blockly/wiki/Text#checking-for-empty-text'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text]. +/// \n\nParameters:\n* %1 - the piece of text to test for emptiness +Blockly.Msg.TEXT_ISEMPTY_TITLE = '%1 is empty'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text]. +Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = 'Returns true if the provided text is empty.'; + +/** @type {string} */ +/// {{Optional}} url - Information about finding a character in a piece of text. +Blockly.Msg.TEXT_INDEXOF_HELPURL = 'https://github.com/google/blockly/wiki/Text#finding-text'; +/** @type {string} */ +/// tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode. See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text]. +Blockly.Msg.TEXT_INDEXOF_TOOLTIP = 'Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.'; +/** @type {string} */ +/// block text - Title of blocks allowing users to find text. See +/// [https://github.com/google/blockly/wiki/Text#finding-text +/// https://github.com/google/blockly/wiki/Text#finding-text]. +/// [[File:Blockly-find-text.png]]. +/// In English the expanded message is "in text %1 find (first|last) occurance of text %3" +/// where %1 and %3 are added by the user. See TEXT_INDEXOF_OPERATOR_FIRST and +/// TEXT_INDEXOF_OPERATOR_LAST for the dropdown text that replaces %2. +Blockly.Msg.TEXT_INDEXOF_TITLE = 'in text %1 %2 %3'; +/** @type {string} */ +/// dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text +/// https://github.com/google/blockly/wiki/Text#finding-text]. +/// [[File:Blockly-find-text.png]]. +Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = 'find first occurrence of text'; +/** @type {string} */ +/// dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text +/// https://github.com/google/blockly/wiki/Text#finding-text]. This would +/// replace "find first occurrence of text" below. (For more information on +/// how common text is factored out of dropdown menus, see +/// [https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus +/// https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus)].) +/// [[File:Blockly-find-text.png]]. +Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = 'find last occurrence of text'; +/** @type {string} */ + +/// {{Optional}} url - Information about extracting characters (letters, number, symbols, etc.) from text. +Blockly.Msg.TEXT_CHARAT_HELPURL = 'https://github.com/google/blockly/wiki/Text#extracting-text'; +/** @type {string} */ +/// block text - Text for a block to extract a letter (or number, +/// punctuation character, etc.) from a string, as shown below. %1 is added by +/// the user and %2 is replaced by a dropdown of options, possibly followed by +/// another user supplied string. TEXT_CHARAT_TAIL is then added to the end. See +/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character +/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. +/// [[File:Blockly-text-get.png]] +Blockly.Msg.TEXT_CHARAT_TITLE = 'in text %1 %2'; +/** @type {string} */ +/// dropdown - Indicates that the letter (or number, punctuation character, etc.) with the +/// specified index should be obtained from the preceding piece of text. See +/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character +/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. +/// [[File:Blockly-text-get.png]] +Blockly.Msg.TEXT_CHARAT_FROM_START = 'get letter #'; +/** @type {string} */ +/// block text - Indicates that the letter (or number, punctuation character, etc.) with the +/// specified index from the end of a given piece of text should be obtained. See +/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character +/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. +/// [[File:Blockly-text-get.png]] +Blockly.Msg.TEXT_CHARAT_FROM_END = 'get letter # from end'; +/** @type {string} */ +/// block text - Indicates that the first letter of the following piece of text should be +/// retrieved. See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character +/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. +/// [[File:Blockly-text-get.png]] +Blockly.Msg.TEXT_CHARAT_FIRST = 'get first letter'; +/** @type {string} */ +/// block text - Indicates that the last letter (or number, punctuation mark, etc.) of the +/// following piece of text should be retrieved. See +/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character +/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. +/// [[File:Blockly-text-get.png]] +Blockly.Msg.TEXT_CHARAT_LAST = 'get last letter'; +/** @type {string} */ +/// block text - Indicates that any letter (or number, punctuation mark, etc.) in the +/// following piece of text should be randomly selected. See +/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character +/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. +/// [[File:Blockly-text-get.png]] +Blockly.Msg.TEXT_CHARAT_RANDOM = 'get random letter'; +/** @type {string} */ +/// block text - Text that goes after the rightmost block/dropdown when getting a single letter from +/// a piece of text, as in [https://blockly-demo.appspot.com/static/apps/code/index.html#3m23km these +/// blocks] or shown below. For most languages, this will be blank. +/// [[File:Blockly-text-get.png]] +Blockly.Msg.TEXT_CHARAT_TAIL = ''; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character +/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character]. +/// [[File:Blockly-text-get.png]] +Blockly.Msg.TEXT_CHARAT_TOOLTIP = 'Returns the letter at the specified position.'; + +/** @type {string} */ +/// See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text +/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. +Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = 'Returns a specified portion of the text.'; +/** @type {string} */ +/// {{Optional}} url - Information about extracting characters from text. Reminder: urls are the +/// lowest priority translations. Feel free to skip. +Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = 'https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text'; +/** @type {string} */ +/// block text - Precedes a piece of text from which a portion should be extracted. +/// [[File:Blockly-get-substring.png]] +Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = 'in text'; +/** @type {string} */ +/// dropdown - Indicates that the following number specifies the position (relative to the start +/// position) of the beginning of the region of text that should be obtained from the preceding +/// piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text +/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. +/// [[File:Blockly-get-substring.png]] +Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = 'get substring from letter #'; +/** @type {string} */ +/// dropdown - Indicates that the following number specifies the position (relative to the end +/// position) of the beginning of the region of text that should be obtained from the preceding +/// piece of text. See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text +/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. +/// Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will +/// automatically appear ''after'' this and any other +/// [https://translatewiki.net/wiki/Translating:Blockly#Ordinal_numbers ordinal numbers] +/// on this block. +/// [[File:Blockly-get-substring.png]] +Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = 'get substring from letter # from end'; +/** @type {string} */ +/// block text - Indicates that a region starting with the first letter of the preceding piece +/// of text should be extracted. See +/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text +/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. +/// [[File:Blockly-get-substring.png]] +Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = 'get substring from first letter'; +/** @type {string} */ +/// dropdown - Indicates that the following number specifies the position (relative to +/// the start position) of the end of the region of text that should be obtained from the +/// preceding piece of text. See +/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text +/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. +/// [[File:Blockly-get-substring.png]] +Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = 'to letter #'; +/** @type {string} */ +/// dropdown - Indicates that the following number specifies the position (relative to the +/// end position) of the end of the region of text that should be obtained from the preceding +/// piece of text. See +/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text +/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. +/// [[File:Blockly-get-substring.png]] +Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = 'to letter # from end'; +/** @type {string} */ +/// block text - Indicates that a region ending with the last letter of the preceding piece +/// of text should be extracted. See +/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text +/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text]. +/// [[File:Blockly-get-substring.png]] +Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = 'to last letter'; +/** @type {string} */ +/// block text - Text that should go after the rightmost block/dropdown when +/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text +/// extracting a region of text]. In most languages, this will be the empty string. +/// [[File:Blockly-get-substring.png]] +Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ''; + +/** @type {string} */ +/// {{Optional}} url - Information about the case of letters (upper-case and lower-case). +Blockly.Msg.TEXT_CHANGECASE_HELPURL = 'https://github.com/google/blockly/wiki/Text#adjusting-text-case'; +/** @type {string} */ +/// tooltip - Describes a block to adjust the case of letters. For more information on this block, +/// see [https://github.com/google/blockly/wiki/Text#adjusting-text-case +/// https://github.com/google/blockly/wiki/Text#adjusting-text-case]. +Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = 'Return a copy of the text in a different case.'; +/** @type {string} */ +/// block text - Indicates that all of the letters in the following piece of text should be +/// capitalized. If your language does not use case, you may indicate that this is not +/// applicable to your language. For more information on this block, see +/// [https://github.com/google/blockly/wiki/Text#adjusting-text-case +/// https://github.com/google/blockly/wiki/Text#adjusting-text-case]. +Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = 'to UPPER CASE'; +/** @type {string} */ +/// block text - Indicates that all of the letters in the following piece of text should be converted to lower-case. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case]. +Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = 'to lower case'; +/** @type {string} */ +/// block text - Indicates that the first letter of each of the following words should be capitalized and the rest converted to lower-case. If your language does not use case, you may indicate that this is not applicable to your language. For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case]. +Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = 'to Title Case'; + +/** @type {string} */ +/// {{Optional}} url - Information about trimming (removing) text off the beginning and ends of pieces of text. +Blockly.Msg.TEXT_TRIM_HELPURL = 'https://github.com/google/blockly/wiki/Text#trimming-removing-spaces'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces +/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. +Blockly.Msg.TEXT_TRIM_TOOLTIP = 'Return a copy of the text with spaces removed from one or both ends.'; +/** @type {string} */ +/// dropdown - Removes spaces from the beginning and end of a piece of text. See +/// [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces +/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. Note that neither +/// this nor the other options modify the original piece of text (that follows); +/// the block just returns a version of the text without the specified spaces. +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = 'trim spaces from both sides of'; +/** @type {string} */ +/// dropdown - Removes spaces from the beginning of a piece of text. See +/// [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces +/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. +/// Note that in right-to-left scripts, this will remove spaces from the right side. +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = 'trim spaces from left side of'; +/** @type {string} */ +/// dropdown - Removes spaces from the end of a piece of text. See +/// [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces +/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces]. +/// Note that in right-to-left scripts, this will remove spaces from the left side. +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = 'trim spaces from right side of'; + +/** @type {string} */ +/// {{Optional}} url - Information about displaying text on computers. +Blockly.Msg.TEXT_PRINT_HELPURL = 'https://github.com/google/blockly/wiki/Text#printing-text'; +/** @type {string} */ +/// block text - Display the input on the screen. See +/// [https://github.com/google/blockly/wiki/Text#printing-text +/// https://github.com/google/blockly/wiki/Text#printing-text]. +/// \n\nParameters:\n* %1 - the value to print +Blockly.Msg.TEXT_PRINT_TITLE = 'print %1'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text#printing-text +/// https://github.com/google/blockly/wiki/Text#printing-text]. +Blockly.Msg.TEXT_PRINT_TOOLTIP = 'Print the specified text, number or other value.'; +/** @type {string} */ +/// {{Optional}} url - Information about getting text from users. +Blockly.Msg.TEXT_PROMPT_HELPURL = 'https://github.com/google/blockly/wiki/Text#getting-input-from-the-user'; +/** @type {string} */ +/// dropdown - Specifies that a piece of text should be requested from the user with +/// the following message. See [https://github.com/google/blockly/wiki/Text#printing-text +/// https://github.com/google/blockly/wiki/Text#printing-text]. +Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = 'prompt for text with message'; +/** @type {string} */ +/// dropdown - Specifies that a number should be requested from the user with the +/// following message. See [https://github.com/google/blockly/wiki/Text#printing-text +/// https://github.com/google/blockly/wiki/Text#printing-text]. +Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = 'prompt for number with message'; +/** @type {string} */ +/// dropdown - Precedes the message with which the user should be prompted for +/// a number. See [https://github.com/google/blockly/wiki/Text#printing-text +/// https://github.com/google/blockly/wiki/Text#printing-text]. +Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = 'Prompt for user for a number.'; +/** @type {string} */ +/// dropdown - Precedes the message with which the user should be prompted for some text. +/// See [https://github.com/google/blockly/wiki/Text#printing-text +/// https://github.com/google/blockly/wiki/Text#printing-text]. +Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = 'Prompt for user for some text.'; + +/** @type {string} */ +/// block text - Title of a block that counts the number of instances of +/// a smaller pattern (%1) inside a longer string (%2). +Blockly.Msg.TEXT_COUNT_MESSAGE0 = 'count %1 in %2'; +/** @type {string} */ +/// {{Optional}} url - Information about counting how many times a string appears in another string. +Blockly.Msg.TEXT_COUNT_HELPURL = 'https://github.com/google/blockly/wiki/Text#counting-substrings'; +/** @type {string} */ +/// tooltip - Short description of a block that counts how many times some text occurs within some other text. +Blockly.Msg.TEXT_COUNT_TOOLTIP = 'Count how many times some text occurs within some other text.'; + +/** @type {string} */ +/// block text - Title of a block that returns a copy of text (%3) with all +/// instances of some smaller text (%1) replaced with other text (%2). +Blockly.Msg.TEXT_REPLACE_MESSAGE0 = 'replace %1 with %2 in %3'; +/** @type {string} */ +/// {{Optional}} url - Information about replacing each copy text (or string, in computer lingo) with other text. +Blockly.Msg.TEXT_REPLACE_HELPURL = 'https://github.com/google/blockly/wiki/Text#replacing-substrings'; +/** @type {string} */ +/// tooltip - Short description of a block that replaces copies of text in a large text with other text. +Blockly.Msg.TEXT_REPLACE_TOOLTIP = 'Replace all occurances of some text within some other text.'; + +/** @type {string} */ +/// block text - Title of block that returns a copy of text (%1) with the order +/// of letters and characters reversed. +Blockly.Msg.TEXT_REVERSE_MESSAGE0 = 'reverse %1'; +/** @type {string} */ +/// {{Optional}} url - Information about reversing a letters/characters in text. +Blockly.Msg.TEXT_REVERSE_HELPURL = 'https://github.com/google/blockly/wiki/Text#reversing-text'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Text]. +Blockly.Msg.TEXT_REVERSE_TOOLTIP = 'Reverses the order of the characters in the text.'; + +// Lists Blocks. +/** @type {string} */ +/// {{Optional}} url - Information on empty lists. +Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = 'https://github.com/google/blockly/wiki/Lists#create-empty-list'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list]. +Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = 'create empty list'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list]. +Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = 'Returns a list, of length 0, containing no data records'; + +/** @type {string} */ +/// {{Optional}} url - Information on building lists. +Blockly.Msg.LISTS_CREATE_WITH_HELPURL = 'https://github.com/google/blockly/wiki/Lists#create-list-with'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with]. +Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = 'Create a list with any number of items.'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with]. +Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = 'create list with'; +/** @type {string} */ +/// block text - This appears in a sub-block when [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs changing the number of inputs in a ''''create list with'''' block].\n{{Identical|List}} +Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = 'list'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs]. +Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = 'Add, remove, or reorder sections to reconfigure this list block.'; +/** @type {string} */ +Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs]. +Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = 'Add an item to the list.'; + +/** @type {string} */ +/// {{Optional}} url - Information about [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item]. +Blockly.Msg.LISTS_REPEAT_HELPURL = 'https://github.com/google/blockly/wiki/Lists#create-list-with'; +/** @type {string} */ +/// {{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item]. +Blockly.Msg.LISTS_REPEAT_TOOLTIP = 'Creates a list consisting of the given value repeated the specified number of times.'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with +/// https://github.com/google/blockly/wiki/Lists#create-list-with]. +///\n\nParameters:\n* %1 - the item (text) to be repeated\n* %2 - the number of times to repeat it +Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times'; + +/** @type {string} */ +/// {{Optional}} url - Information about how the length of a list is computed (i.e., by the total number of elements, not the number of different elements). +Blockly.Msg.LISTS_LENGTH_HELPURL = 'https://github.com/google/blockly/wiki/Lists#length-of'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of]. +/// \n\nParameters:\n* %1 - the list whose length is desired +Blockly.Msg.LISTS_LENGTH_TITLE = 'length of %1'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of Blockly:Lists:length of]. +Blockly.Msg.LISTS_LENGTH_TOOLTIP = 'Returns the length of a list.'; + +/** @type {string} */ +/// {{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#is-empty https://github.com/google/blockly/wiki/Lists#is-empty]. +Blockly.Msg.LISTS_ISEMPTY_HELPURL = 'https://github.com/google/blockly/wiki/Lists#is-empty'; +/** @type {string} */ +/// block text - See [https://github.com/google/blockly/wiki/Lists#is-empty +/// https://github.com/google/blockly/wiki/Lists#is-empty]. +/// \n\nParameters:\n* %1 - the list to test +Blockly.Msg.LISTS_ISEMPTY_TITLE = '%1 is empty'; +/** @type {string} */ +/// block tooltip - See [https://github.com/google/blockly/wiki/Lists#is-empty +/// https://github.com/google/blockly/wiki/Lists#is-empty]. +Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = 'Returns true if the list is empty.'; + +/** @type {string} */ +/// block text - Title of blocks operating on [https://github.com/google/blockly/wiki/Lists lists]. +Blockly.Msg.LISTS_INLIST = 'in list'; + +/** @type {string} */ +/// {{Optional}} url - See [https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list +/// https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list]. +Blockly.Msg.LISTS_INDEX_OF_HELPURL = 'https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list'; +/** @type {string} */ +Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; +/** @type {string} */ +/// dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list +/// Lists#finding-items-in-a-list]. +/// [[File:Blockly-list-find.png]] +Blockly.Msg.LISTS_INDEX_OF_FIRST = 'find first occurrence of item'; +/** @type {string} */ +/// dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list +/// https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list]. +/// [[File:Blockly-list-find.png]] +Blockly.Msg.LISTS_INDEX_OF_LAST = 'find last occurrence of item'; +/** @type {string} */ +/// tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode. See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list +/// https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list]. +/// [[File:Blockly-list-find.png]] +Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = 'Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.'; + +/** @type {string} */ +Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL; +/** @type {string} */ +/// dropdown - Indicates that the user wishes to +/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item +/// get an item from a list] without removing it from the list. +Blockly.Msg.LISTS_GET_INDEX_GET = 'get'; +/** @type {string} */ +/// dropdown - Indicates that the user wishes to +/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item +/// get and remove an item from a list], as opposed to merely getting +/// it without modifying the list. +Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = 'get and remove'; +/** @type {string} */ +/// dropdown - Indicates that the user wishes to +/// [https://github.com/google/blockly/wiki/Lists#removing-an-item +/// remove an item from a list].\n{{Identical|Remove}} +Blockly.Msg.LISTS_GET_INDEX_REMOVE = 'remove'; +/** @type {string} */ +/// dropdown - Indicates that an index relative to the front of the list should be used to +/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item get and/or remove +/// an item from a list]. Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will +/// automatically appear ''after'' this number (and any other ordinal numbers on this block). +/// See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly. +/// [[File:Blockly-list-get-item.png]] +Blockly.Msg.LISTS_GET_INDEX_FROM_START = '#'; +/** @type {string} */ +/// dropdown - Indicates that an index relative to the end of the list should be used +/// to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item access an item in a list]. +/// [[File:Blockly-list-get-item.png]] +Blockly.Msg.LISTS_GET_INDEX_FROM_END = '# from end'; +/** @type {string} */ +/// dropdown - Indicates that the '''first''' item should be +/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. +/// [[File:Blockly-list-get-item.png]] +Blockly.Msg.LISTS_GET_INDEX_FIRST = 'first'; +/** @type {string} */ +/// dropdown - Indicates that the '''last''' item should be +/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. +/// [[File:Blockly-list-get-item.png]] +Blockly.Msg.LISTS_GET_INDEX_LAST = 'last'; +/** @type {string} */ +/// dropdown - Indicates that a '''random''' item should be +/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list]. +/// [[File:Blockly-list-get-item.png]] +Blockly.Msg.LISTS_GET_INDEX_RANDOM = 'random'; +/** @type {string} */ +/// block text - Text that should go after the rightmost block/dropdown when +/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item +/// accessing an item from a list]. In most languages, this will be the empty string. +/// [[File:Blockly-list-get-item.png]] +Blockly.Msg.LISTS_GET_INDEX_TAIL = ''; +/** @type {string} */ +Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; +/** @type {string} */ +/// tooltip - Indicates the ordinal number that the first item in a list is referenced by. %1 will be replaced by either "#0" or "#1" depending on the indexing mode. +Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = '%1 is the first item.'; +/** @type {string} */ +/// tooltip - Indicates the ordinal number that the last item in a list is referenced by. %1 will be replaced by either "#0" or "#1" depending on the indexing mode. +Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = '%1 is the last item.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = 'Returns the item at the specified position in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = 'Returns the first item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = 'Returns the last item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = 'Returns a random item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for '#' or '# from end'. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = 'Removes and returns the item at the specified position in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'first'. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = 'Removes and returns the first item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'last'. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = 'Removes and returns the last item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'random'. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = 'Removes and returns a random item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for '#' or '# from end'. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = 'Removes the item at the specified position in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'first'. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = 'Removes the first item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'last'. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = 'Removes the last item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for 'random'. +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = 'Removes a random item in a list.'; +/** @type {string} */ +/// {{Optional}} url - Information about putting items in lists. +Blockly.Msg.LISTS_SET_INDEX_HELPURL = 'https://github.com/google/blockly/wiki/Lists#in-list--set'; +/** @type {string} */ +Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; +/** @type {string} */ +/// block text - [https://github.com/google/blockly/wiki/Lists#in-list--set +/// Replaces an item in a list]. +/// [[File:Blockly-in-list-set-insert.png]] +Blockly.Msg.LISTS_SET_INDEX_SET = 'set'; +/** @type {string} */ +/// block text - [https://github.com/google/blockly/wiki/Lists#in-list--insert-at +/// Inserts an item into a list]. +/// [[File:Blockly-in-list-set-insert.png]] +Blockly.Msg.LISTS_SET_INDEX_INSERT = 'insert at'; +/** @type {string} */ +/// block text - The word(s) after the position in the list and before the item to be set/inserted. +/// [[File:Blockly-in-list-set-insert.png]] +Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = 'as'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block). +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = 'Sets the item at the specified position in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block). +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = 'Sets the first item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block). +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = 'Sets the last item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block). +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = 'Sets a random item in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block). +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = 'Inserts the item at the specified position in a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block). +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = 'Inserts the item at the start of a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block). +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = 'Append the item to the end of a list.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block). +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = 'Inserts the item randomly in a list.'; + +/** @type {string} */ +/// {{Optional}} url - Information describing extracting a sublist from an existing list. +Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = 'https://github.com/google/blockly/wiki/Lists#getting-a-sublist'; +/** @type {string} */ +Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; +/** @type {string} */ +/// dropdown - Indicates that an index relative to the front of the list should be used +/// to specify the beginning of the range from which to +/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. +/// [[File:Blockly-get-sublist.png]] +/// Note: If {{msg-blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will +/// automatically appear ''after'' this number (and any other ordinal numbers on this block). +/// See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly. +Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = 'get sub-list from #'; +/** @type {string} */ +/// dropdown - Indicates that an index relative to the end of the list should be used +/// to specify the beginning of the range from which to +/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. +Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = 'get sub-list from # from end'; +/** @type {string} */ +/// dropdown - Indicates that the +/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist sublist to extract] +/// should begin with the list's first item. +Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = 'get sub-list from first'; +/** @type {string} */ +/// dropdown - Indicates that an index relative to the front of the list should be +/// used to specify the end of the range from which to +/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. +/// [[File:Blockly-get-sublist.png]] +Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = 'to #'; +/** @type {string} */ +/// dropdown - Indicates that an index relative to the end of the list should be +/// used to specify the end of the range from which to +/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist]. +/// [[File:Blockly-get-sublist.png]] +Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = 'to # from end'; +/** @type {string} */ +/// dropdown - Indicates that the '''last''' item in the given list should be +/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist the end +/// of the selected sublist]. +/// [[File:Blockly-get-sublist.png]] +Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = 'to last'; +/** @type {string} */ +/// block text - This appears in the rightmost position ("tail") of the +/// sublist block, as described at +/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist +/// https://github.com/google/blockly/wiki/Lists#getting-a-sublist]. +/// In English and most other languages, this is the empty string. +/// [[File:Blockly-get-sublist.png]] +Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ''; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-sublist +/// https://github.com/google/blockly/wiki/Lists#getting-a-sublist] for more information. +/// [[File:Blockly-get-sublist.png]] +Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = 'Creates a copy of the specified portion of a list.'; + +/** @type {string} */ +/// {{Optional}} url - Information describing sorting a list. +Blockly.Msg.LISTS_SORT_HELPURL = 'https://github.com/google/blockly/wiki/Lists#sorting-a-list'; +/** @type {string} */ +/// Sort as type %1 (numeric or alphabetic) in order %2 (ascending or descending) a list of items %3.\n{{Identical|Sort}} +Blockly.Msg.LISTS_SORT_TITLE = 'sort %1 %2 %3'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#sorting-a-list]. +Blockly.Msg.LISTS_SORT_TOOLTIP = 'Sort a copy of a list.'; +/** @type {string} */ +/// sorting order or direction from low to high value for numeric, or A-Z for alphabetic.\n{{Identical|Ascending}} +Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = 'ascending'; +/** @type {string} */ +/// sorting order or direction from high to low value for numeric, or Z-A for alphabetic.\n{{Identical|Descending}} +Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = 'descending'; +/** @type {string} */ +/// sort by treating each item as a number. +Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = 'numeric'; +/** @type {string} */ +/// sort by treating each item alphabetically, case-sensitive. +Blockly.Msg.LISTS_SORT_TYPE_TEXT = 'alphabetic'; +/** @type {string} */ +/// sort by treating each item alphabetically, ignoring differences in case. +Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = 'alphabetic, ignore case'; + +/** @type {string} */ +/// {{Optional}} url - Information describing splitting text into a list, or joining a list into text. +Blockly.Msg.LISTS_SPLIT_HELPURL = 'https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists'; +/** @type {string} */ +/// dropdown - Indicates that text will be split up into a list (e.g. "a-b-c" -> ["a", "b", "c"]). +Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = 'make list from text'; +/** @type {string} */ +/// dropdown - Indicates that a list will be joined together to form text (e.g. ["a", "b", "c"] -> "a-b-c"). +Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = 'make text from list'; +/** @type {string} */ +/// block text - Prompts for a letter to be used as a separator when splitting or joining text. +Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = 'with delimiter'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#make-list-from-text +/// https://github.com/google/blockly/wiki/Lists#make-list-from-text] for more information. +Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = 'Split text into a list of texts, breaking at each delimiter.'; +/** @type {string} */ +/// tooltip - See [https://github.com/google/blockly/wiki/Lists#make-text-from-list +/// https://github.com/google/blockly/wiki/Lists#make-text-from-list] for more information. +Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = 'Join a list of texts into one text, separated by a delimiter.'; + +/** @type {string} */ +/// {{Optional}} url - Information describing reversing a list. +Blockly.Msg.LISTS_REVERSE_HELPURL = 'https://github.com/google/blockly/wiki/Lists#reversing-a-list'; +/** @type {string} */ +/// block text - Title of block that returns a copy of a list (%1) with the order of items reversed. +Blockly.Msg.LISTS_REVERSE_MESSAGE0 = 'reverse %1'; +/** @type {string} */ +/// tooltip - Short description for a block that reverses a copy of a list. +Blockly.Msg.LISTS_REVERSE_TOOLTIP = 'Reverse a copy of a list.'; + +/** @type {string} */ +/// grammar - Text that follows an ordinal number (a number that indicates +/// position relative to other numbers). In most languages, such text appears +/// before the number, so this should be blank. An exception is Hungarian. +/// See [[Translating:Blockly#Ordinal_numbers]] for more information. +Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ''; + +// Variables Blocks. +/** @type {string} */ +/// {{Optional}} url - Information about ''variables'' in computer programming. Consider using your language's translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists. +Blockly.Msg.VARIABLES_GET_HELPURL = 'https://github.com/google/blockly/wiki/Variables#get'; +/** @type {string} */ +/// tooltip - This gets the value of the named variable without modifying it. +Blockly.Msg.VARIABLES_GET_TOOLTIP = 'Returns the value of this variable.'; +/** @type {string} */ +/// context menu - Selecting this creates a block to set (change) the value of this variable. +/// \n\nParameters:\n* %1 - the name of the variable. +Blockly.Msg.VARIABLES_GET_CREATE_SET = 'Create "set %1"'; + +/** @type {string} */ +/// {{Optional}} url - Information about ''variables'' in computer programming. Consider using your language's translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists. +Blockly.Msg.VARIABLES_SET_HELPURL = 'https://github.com/google/blockly/wiki/Variables#set'; +/** @type {string} */ +/// block text - Change the value of a mathematical variable: '''set [the value of] x to 7'''.\n\nParameters:\n* %1 - the name of the variable.\n* %2 - the value to be assigned. +Blockly.Msg.VARIABLES_SET = 'set %1 to %2'; +/** @type {string} */ +/// tooltip - This initializes or changes the value of the named variable. +Blockly.Msg.VARIABLES_SET_TOOLTIP = 'Sets this variable to be equal to the input.'; +/** @type {string} */ +/// context menu - Selecting this creates a block to get (change) the value of +/// this variable.\n\nParameters:\n* %1 - the name of the variable. +Blockly.Msg.VARIABLES_SET_CREATE_GET = 'Create "get %1"'; + + +// Procedures Blocks. +/** @type {string} */ +/// {{Optional}} url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that do not have return values. +Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = 'https://en.wikipedia.org/wiki/Subroutine'; +/** @type {string} */ +/// block text - This precedes the name of the function when defining it. See +/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#c84aoc this sample +/// function definition]. +Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = 'to'; +/** @type {string} */ +/// default name - This acts as a placeholder for the name of a function on a +/// function definition block, as shown on +/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#w7cfju this block]. +/// The user will replace it with the function's name. +Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = 'do something'; +/** @type {string} */ +/// block text - This precedes the list of parameters on a function's definition block. See +/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample +/// function with parameters]. +Blockly.Msg.PROCEDURES_BEFORE_PARAMS = 'with:'; +/** @type {string} */ +/// block text - This precedes the list of parameters on a function's caller block. See +/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample +/// function with parameters]. +Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = 'with:'; +/** @type {string} */ +/// block text - This appears next to the function's "body", the blocks that should be +/// run when the function is called, as shown in +/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample +/// function definition]. +Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ''; +/** @type {string} */ +/// tooltip +Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = 'Creates a function with no output.'; +/** @type {string} */ +/// Placeholder text that the user is encouraged to replace with a description of what their function does. +Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = 'Describe this function...'; +/** @type {string} */ +/// {{Optional}} url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that have return values. +Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = 'https://en.wikipedia.org/wiki/Subroutine'; +/** @type {string} */ +Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE; +/** @type {string} */ +Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE; +/** @type {string} */ +Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO; +/** @type {string} */ +Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT; +/** @type {string} */ +/// block text - This imperative or infinite verb precedes the value that is used as the return value +/// (output) of this function. See +/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#6ot5y5 this sample +/// function that returns a value]. +Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = 'return'; +/** @type {string} */ +/// tooltip +Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = 'Creates a function with an output.'; +/** @type {string} */ +/// Label for a checkbox that controls if statements are allowed in a function. +Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = 'allow statements'; + +/** @type {string} */ +/// alert - The user has created a function with two parameters that have the same name. Every parameter must have a different name. +Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = 'Warning: This function has duplicate parameters.'; + +/** @type {string} */ +/// {{Optional}} url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that do not return values. +Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = 'https://en.wikipedia.org/wiki/Subroutine'; +/** @type {string} */ +/// tooltip - This block causes the body (blocks inside) of the named function definition to be run. +Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = 'Run the user-defined function "%1".'; + +/** @type {string} */ +/// {{Optional}} url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that return values. +Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = 'https://en.wikipedia.org/wiki/Subroutine'; +/** @type {string} */ +/// tooltip - This block causes the body (blocks inside) of the named function definition to be run.\n\nParameters:\n* %1 - the name of the function. +Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = 'Run the user-defined function "%1" and use its output.'; + +/** @type {string} */ +/// block text - This text appears on a block in a window that appears when the user clicks +/// on the plus sign or star on a function definition block. It refers to the set of parameters +/// (referred to by the simpler term "inputs") to the function. See +/// [[Translating:Blockly#function_definitions]].\n{{Identical|Input}} +Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = 'inputs'; +/** @type {string} */ +/// tooltip +Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = 'Add, remove, or reorder inputs to this function.'; +/** @type {string} */ +/// block text - This text appears on a block in a window that appears when the user clicks +/// on the plus sign or star on a function definition block]. It appears on the block for +/// adding an individual parameter (referred to by the simpler term "inputs") to the function. +/// See [[Translating:Blockly#function_definitions]]. +Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = 'input name:'; +/** @type {string} */ +/// tooltip +Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = 'Add an input to the function.'; + +/** @type {string} */ +/// context menu - This appears on the context menu for function calls. Selecting +/// it causes the corresponding function definition to be highlighted (as shown at +/// [[Translating:Blockly#context_menus]]. +Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = 'Highlight function definition'; +/** @type {string} */ +/// context menu - This appears on the context menu for function definitions. +/// Selecting it creates a block to call the function.\n\nParameters:\n* %1 - the name of the function.\n{{Identical|Create}} +Blockly.Msg.PROCEDURES_CREATE_DO = 'Create "%1"'; + +/** @type {string} */ +/// tooltip - If the first value is true, this causes the second value to be returned +/// immediately from the enclosing function. +Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = 'If a value is true, then return a second value.'; +/** @type {string} */ +/// {{Optional}} url - Information about guard clauses. +Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = 'http://c2.com/cgi/wiki?GuardClause'; +/** @type {string} */ +/// warning - This appears if the user tries to use this block outside of a function definition. +Blockly.Msg.PROCEDURES_IFRETURN_WARNING = 'Warning: This block may be used only within a function definition.'; + +/** @type {string} */ +/// comment text - This text appears in a new workspace comment, to hint that +/// the user can type here. +Blockly.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT = 'Say something...'; + +/** @type {string} */ +/// workspace - This text is read out when a user navigates to the workspace while +/// using a screen reader. +Blockly.Msg.WORKSPACE_ARIA_LABEL = 'Blockly Workspace'; + +/** @type {string} */ +/// warning - This appears if the user collapses a block, and blocks inside +/// that block have warnings attached to them. It should inform the user that the +/// block they collapsed contains blocks that have warnings. +Blockly.Msg.COLLAPSED_WARNINGS_WARNING = 'Collapsed blocks contain warnings.'; + +/** @type {string} */ +/// button label - Pressing this button closes help information.\n{{Identical|OK}} +Blockly.Msg.DIALOG_OK = 'OK'; + +/** @type {string} */ +/// button label - Pressing this button cancels a proposed action.\n{{Identical|Cancel}} +Blockly.Msg.DIALOG_CANCEL = 'Cancel'; + + +/** @type {string} */ +/// tooltip - This initializes or changes the value of the named variable. +Blockly.Msg.VARIABLES_CALL_TOOLTIP = 'Calls a method from current variable.'; +/** @type {string} */ +/// tooltip - This initializes or changes the value of the named variable. +Blockly.Msg.VARIABLES_CALL_OUT_TOOLTIP = 'Returns the value of a method from current variable.'; +/** @type {string} */ +Blockly.Msg.CALL_TEXT = "call"; +/** @type {string} */ +Blockly.Msg.RETURN_TEXT = "return"; +/** @type {string} */ +/// tooltip - This is the block that implements the setup of the code +Blockly.Msg.PROCEDURES_SETUP_TOOLTIP = 'Block that contains the blocks related to the setup of the program.'; + +/** @type {string} */ +/// tooltip - This is the block that implements the setup of the supervisor code +Blockly.Msg.PROCEDURES_SETUP_SUPERVISOR_TOOLTIP = 'Block that contains the blocks related to the setup of the supervisor.'; + +/** @type {string} */ +/// tooltip - This is the block that implements the execution of the code +Blockly.Msg.PROCEDURES_RUN_TOOLTIP = 'Block that contains the blocks related to the execution of the program.'; + +/** @type {string} */ +Blockly.Msg.PROCEDURES_SETUP_TITLE = "Setup"; + +/** @type {string} */ +Blockly.Msg.PROCEDURES_SETUP_SUPERVISOR_TITLE = "Supervisor Setup"; + +/** @type {string} */ +Blockly.Msg.PROCEDURES_RUN_TITLE = "Run"; diff --git a/package-lock.json b/package-lock.json index 1823285c0af..a39570fe866 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22633 +1,22597 @@ -{ - "name": "blockly", - "version": "8.0.5", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "blockly", - "version": "8.0.5", - "license": "Apache-2.0", - "dependencies": { - "jsdom": "15.2.1" - }, - "devDependencies": { - "@blockly/block-test": "^2.0.1", - "@blockly/dev-tools": "^3.0.1", - "@blockly/theme-modern": "^2.1.1", - "@hyperjump/json-schema": "^0.18.4", - "@wdio/selenium-standalone-service": "^7.10.1", - "chai": "^4.2.0", - "clang-format": "^1.6.0", - "closure-calculate-chunks": "^3.0.2", - "concurrently": "^7.0.0", - "eslint": "^8.4.1", - "eslint-config-google": "^0.14.0", - "google-closure-compiler": "^20220301.0.0", - "google-closure-deps": "^20220202.0.0", - "gulp": "^4.0.2", - "gulp-clang-format": "^1.0.27", - "gulp-concat": "^2.6.1", - "gulp-insert": "^0.5.0", - "gulp-rename": "^2.0.0", - "gulp-replace": "^1.0.0", - "gulp-series": "^1.0.2", - "gulp-shell": "^0.8.0", - "gulp-sourcemaps": "^3.0.0", - "gulp-umd": "^2.0.0", - "http-server": "^14.0.0", - "js-green-licenses": "^3.0.0", - "json5": "^2.2.0", - "mocha": "^9.1.1", - "readline-sync": "^1.4.10", - "rimraf": "^3.0.2", - "selenium-standalone": "^8.0.3", - "through2": "^4.0.2", - "typescript": "^4.3.2", - "webdriverio": "^7.0.3", - "yargs": "^17.2.1" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@blockly/block-test": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@blockly/block-test/-/block-test-2.0.4.tgz", - "integrity": "sha512-nECM+4kSaZLNVBhbfTnsKl+kfqxcBHbflo6TE2rmaP8GjbndtT9I7XHdmXDtHGomfPTFF1qJ7bl09fmFqcdeQQ==", - "dev": true, - "engines": { - "node": ">=8.17.0" - }, - "peerDependencies": { - "blockly": "^7.20211209.0" - } - }, - "node_modules/@blockly/dev-tools": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@blockly/dev-tools/-/dev-tools-3.0.7.tgz", - "integrity": "sha512-s55teQLYNKOtWZIngce2WFy052CrEGPMfhRzQgFKlrTfVafr+iZc+E4MTIY1J9R2Zw5uKnfxULV8LfNrwcH+fA==", - "dev": true, - "dependencies": { - "@blockly/block-test": "^2.0.4", - "@blockly/theme-dark": "^2.0.7", - "@blockly/theme-deuteranopia": "^1.0.8", - "@blockly/theme-highcontrast": "^1.0.8", - "@blockly/theme-tritanopia": "^1.0.8", - "chai": "^4.2.0", - "dat.gui": "^0.7.7", - "lodash.assign": "^4.2.0", - "lodash.merge": "^4.6.2", - "monaco-editor": "^0.20.0", - "sinon": "^9.0.2" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "blockly": "^7.20211209.0" - } - }, - "node_modules/@blockly/theme-dark": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@blockly/theme-dark/-/theme-dark-2.0.7.tgz", - "integrity": "sha512-sErL00Uaa0yBviBWpNT0tobaty5BYb+xbE3LwSsot7P/4u/j+pD+oKS8fqt8xsWxbtn67zL8PARmaP3KVe4+Aw==", - "dev": true, - "engines": { - "node": ">=8.17.0" - }, - "peerDependencies": { - "blockly": "3.20200123.0 - 7" - } - }, - "node_modules/@blockly/theme-deuteranopia": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@blockly/theme-deuteranopia/-/theme-deuteranopia-1.0.8.tgz", - "integrity": "sha512-/9aDJCUuyDJ4OSHr2lCJRpqBLSvgV8YP7uCeCKuoY3uMnMKTxEcJ/AUma+oF98os+i3/GeNzCMYQ/6bdlCXRIQ==", - "dev": true, - "engines": { - "node": ">=8.17.0" - }, - "peerDependencies": { - "blockly": "3.20200123.0 - 7" - } - }, - "node_modules/@blockly/theme-highcontrast": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@blockly/theme-highcontrast/-/theme-highcontrast-1.0.8.tgz", - "integrity": "sha512-A9bvQpmNtsn3W3pWa0NRttBm1IeIhV6zGAp4ziY+GU0kNGZDgbrP10JJKfz3dv+RCaXmslE9kS25RU/LYJjB/Q==", - "dev": true, - "engines": { - "node": ">=8.17.0" - }, - "peerDependencies": { - "blockly": "3.20200123.0 - 7" - } - }, - "node_modules/@blockly/theme-modern": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/@blockly/theme-modern/-/theme-modern-2.1.28.tgz", - "integrity": "sha512-SRPrQJOvTU8yC+NFnfFipaciCJEfmIG+imPwNcL1WZ/pPct6ojEDwHKAalWkHGLrTb0rmOaDVeHJJQx+HZmQsQ==", - "dev": true, - "engines": { - "node": ">=8.17.0" - }, - "peerDependencies": { - "blockly": "3.20200123.0 - 7" - } - }, - "node_modules/@blockly/theme-tritanopia": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@blockly/theme-tritanopia/-/theme-tritanopia-1.0.8.tgz", - "integrity": "sha512-61G8VB5a8F9eRMYAXpeRia/DrRRfAnUqpA62pksvtcRwMoztwhToUHHkSYuOHxpDpKG/rTlaFtf/GUHFFaFHEQ==", - "dev": true, - "engines": { - "node": ">=8.17.0" - }, - "peerDependencies": { - "blockly": "3.20200123.0 - 7" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz", - "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@gulp-sourcemaps/identity-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", - "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", - "dev": true, - "dependencies": { - "acorn": "^6.4.1", - "normalize-path": "^3.0.0", - "postcss": "^7.0.16", - "source-map": "^0.6.0", - "through2": "^3.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", - "dev": true, - "dependencies": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", - "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@hyperjump/json-pointer": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@hyperjump/json-pointer/-/json-pointer-0.9.2.tgz", - "integrity": "sha512-PGCyTWO+WTkNWhMdlgE7OiQYPVkme9/e6d7K2xiZxH1wMGxGgZEEDNCe8hox7rkuD1equ4eZM+K3eoPCexckmA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "just-curry-it": "^3.2.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jdesrosiers" - } - }, - "node_modules/@hyperjump/json-schema": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/@hyperjump/json-schema/-/json-schema-0.18.4.tgz", - "integrity": "sha512-FVdSlOrOio/sWCbVbAP3yH/gKKddvrIvKzLS/id6/CidWH0r0x5ZTPM1zBS0Su7gU6OOjFRxDYhrIhnNBI5ODg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@hyperjump/json-schema-core": "^0.23.4", - "fastest-stable-stringify": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jdesrosiers" - } - }, - "node_modules/@hyperjump/json-schema-core": { - "version": "0.23.6", - "resolved": "https://registry.npmjs.org/@hyperjump/json-schema-core/-/json-schema-core-0.23.6.tgz", - "integrity": "sha512-X0IzGRi5K4c91awB3xNt5bvbs34UyHwOpRKKFFJ2nWDWW7e22VNGvibqo/S2rdFyta3wqOHTICFNTQjjcVdIZg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@hyperjump/json-pointer": "^0.9.1", - "@hyperjump/pact": "^0.2.0", - "content-type": "^1.0.4", - "node-fetch": "^2.6.5", - "pubsub-js": "^1.9.1", - "url-resolve-browser": "^1.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jdesrosiers" - } - }, - "node_modules/@hyperjump/pact": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@hyperjump/pact/-/pact-0.2.1.tgz", - "integrity": "sha512-imzl9j1UiqM/HC3kgfS0/TdXcEFGFkq5EwjyaztLfdmia8KLBXGy3rC96K+nnyY+2fA69yA9HtnDappub5VSQQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "just-curry-it": "^3.1.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jdesrosiers" - } - }, - "node_modules/@sindresorhus/is": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", - "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", - "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-P+dkdFu0n08PDIvw+9nT9ByQnd+Udc8DaWPb9HKfaPwCvWvQpC5XaMRx2xLWECm9x1VKNps6vEAlirjA6+uNrQ==", - "dev": true - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "dev": true, - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "node_modules/@types/ejs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.0.tgz", - "integrity": "sha512-DCg+Ka+uDQ31lJ/UtEXVlaeV3d6t81gifaVWKJy4MYVVgvJttyX/viREy+If7fz+tK/gVxTGMtyrFPnm4gjrVA==", - "dev": true, - "peer": true - }, - "node_modules/@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", - "dev": true - }, - "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "node_modules/@types/inquirer": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz", - "integrity": "sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/through": "*", - "rxjs": "^7.2.0" - } - }, - "node_modules/@types/keyv": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", - "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/lodash": { - "version": "4.14.178", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", - "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", - "dev": true, - "peer": true - }, - "node_modules/@types/lodash.flattendeep": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@types/lodash.flattendeep/-/lodash.flattendeep-4.4.6.tgz", - "integrity": "sha512-uLm2MaRVlqJSGsMK0RZpP5T3KqReq+9WbYDHCUhBhp98v56hMG/Yht52bsoTSui9xz2mUvQ9NfG3LrNGDL92Ng==", - "dev": true, - "peer": true, - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/lodash.pickby": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/@types/lodash.pickby/-/lodash.pickby-4.6.6.tgz", - "integrity": "sha512-NFa13XxlMd9eFi0UFZFWIztpMpXhozbijrx3Yb1viYZphT7jyopIFVoIRF4eYMjruWNEG1rnyrRmg/8ej9T8Iw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/lodash.union": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/@types/lodash.union/-/lodash.union-4.6.6.tgz", - "integrity": "sha512-Wu0ZEVNcyCz8eAn6TlUbYWZoGbH9E+iOHxAZbwUoCEXdUiy6qpcz5o44mMXViM4vlPLLCPlkAubEP1gokoSZaw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/recursive-readdir": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/recursive-readdir/-/recursive-readdir-2.2.0.tgz", - "integrity": "sha512-HGk753KRu2N4mWduovY4BLjYq4jTOL29gV2OfGdGxHcPSWGFkC5RRIdk+VTs5XmYd7MVAD+JwKrcb5+5Y7FOCg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/selenium-standalone": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@types/selenium-standalone/-/selenium-standalone-7.0.1.tgz", - "integrity": "sha512-zbKenL0fAXzPyiOaaFMrvFdMNhj5BgNJQq8bxiZfwQD9ID2J8bUG5xbcS3tQtlzIX/62z9nG5Vo45oaHWTbvbw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ua-parser-js": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", - "dev": true - }, - "node_modules/@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", - "dev": true, - "dependencies": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, - "node_modules/@types/which": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", - "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/@wdio/cli": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.16.10.tgz", - "integrity": "sha512-VYip4i1SKRwsTiLd9I5EaHP7l+5F4jStQ5JulejEbYDHor6NEcakGsF+m6JAzHZgxs9QcskNxLr8tBveXM/b7w==", - "dev": true, - "peer": true, - "dependencies": { - "@types/ejs": "^3.0.5", - "@types/fs-extra": "^9.0.4", - "@types/inquirer": "^8.1.2", - "@types/lodash.flattendeep": "^4.4.6", - "@types/lodash.pickby": "^4.6.6", - "@types/lodash.union": "^4.6.6", - "@types/node": "^16.11.1", - "@types/recursive-readdir": "^2.2.0", - "@wdio/config": "7.16.3", - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.3", - "@wdio/utils": "7.16.3", - "async-exit-hook": "^2.0.1", - "chalk": "^4.0.0", - "chokidar": "^3.0.0", - "cli-spinners": "^2.1.0", - "ejs": "^3.0.1", - "fs-extra": "^10.0.0", - "inquirer": "8.1.5", - "lodash.flattendeep": "^4.4.0", - "lodash.pickby": "^4.6.0", - "lodash.union": "^4.6.0", - "mkdirp": "^1.0.4", - "recursive-readdir": "^2.2.2", - "webdriverio": "7.16.10", - "yargs": "^17.0.0", - "yarn-install": "^1.0.0" - }, - "bin": { - "wdio": "bin/wdio.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/@wdio/repl": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.16.3.tgz", - "integrity": "sha512-aFpWyAIuPo6VVmkotZDWXMzd4qw3gD+xAhB6blNrMCZKWnz9+HqZnuGGc6pmiyuc5yFzb9wF22tnIxuyTyH7yA==", - "dev": true, - "peer": true, - "dependencies": { - "@wdio/utils": "7.16.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@wdio/cli/node_modules/devtools": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.16.10.tgz", - "integrity": "sha512-43uB3t6uNjWsqiQKRLY7axFLuMdKqlQxq6N3FWCfBKl9We1oygkGkE7Scnushdbc4lk7QwGXBC1DQ83dCgA5Gw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "^16.11.1", - "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.16.3", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.3", - "@wdio/utils": "7.16.3", - "chrome-launcher": "^0.15.0", - "edge-paths": "^2.1.0", - "puppeteer-core": "^11.0.0", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/devtools-protocol": { - "version": "0.0.944179", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.944179.tgz", - "integrity": "sha512-oqBbLKuCAkEqqsWn0rsfkjy79F0/QTQR/rlijZzeHInJfDRPYwP0D04NiQX9MQmucrAyRWGseY0b/ff0yhQdXg==", - "dev": true, - "peer": true - }, - "node_modules/@wdio/cli/node_modules/node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", - "dev": true, - "peer": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/puppeteer-core": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-11.0.0.tgz", - "integrity": "sha512-hfQ39KNP0qKplQ86iaCNXHH9zpWlV01UFdggt2qffgWeCBF9KMavwP/k/iK/JidPPWfOnKZhDLSHZVSUr73DtA==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "4.3.2", - "devtools-protocol": "0.0.901419", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.5", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.2.3" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/@wdio/cli/node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", - "dev": true, - "peer": true - }, - "node_modules/@wdio/cli/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true, - "peer": true - }, - "node_modules/@wdio/cli/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@wdio/cli/node_modules/webdriver": { - "version": "7.16.9", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.16.9.tgz", - "integrity": "sha512-6bpiyE3/1ncgyNM/RwzEWjpxu2NLYyeYNu/97OMEwFMDV8EqvlZh3wFnODi6tY0K5t4dEryIPiyjF3MDVySRAg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "^16.11.1", - "@wdio/config": "7.16.3", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.3", - "@wdio/utils": "7.16.3", - "got": "^11.0.2", - "ky": "^0.28.5", - "lodash.merge": "^4.6.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/webdriverio": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.16.10.tgz", - "integrity": "sha512-Idsn0084HqcqHa5/BW/75dwFEitSDi/hhXk+GRA0wZkVU7woE8ZKACsMS270kOADgXYU9XJBT8jo6YM3R3Sa+Q==", - "dev": true, - "peer": true, - "dependencies": { - "@types/aria-query": "^5.0.0", - "@types/node": "^16.11.1", - "@wdio/config": "7.16.3", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/repl": "7.16.3", - "@wdio/types": "7.16.3", - "@wdio/utils": "7.16.3", - "archiver": "^5.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "7.16.10", - "devtools-protocol": "^0.0.944179", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "minimatch": "^3.0.4", - "puppeteer-core": "^11.0.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.16.9" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true, - "peer": true - }, - "node_modules/@wdio/cli/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "peer": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@wdio/config": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.16.3.tgz", - "integrity": "sha512-YbpeZAeEncyJrsKxfAwjhNbDUf/ZrMB2Io3PYnH3RQjEEo5lYlO15aUt9uJx09W5h8hBPcrj7CfUC5yNkFZJhw==", - "dev": true, - "peer": true, - "dependencies": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.3", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/logger": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.16.0.tgz", - "integrity": "sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/protocols": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.16.7.tgz", - "integrity": "sha512-Wv40pNQcLiPzQ3o98Mv4A8T1EBQ6k4khglz/e2r16CTm+F3DDYh8eLMAsU5cgnmuwwDKX1EyOiFwieykBn5MCg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/repl": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.17.3.tgz", - "integrity": "sha512-ZX4dYnoOb9NC3IQFhva4B7FCoVx9v7CIG7g5W4bX/un5Xfyz3Fne1vGP9Aku15nyIaXRSCzuV6vpT/5KR6q6Hg==", - "dev": true, - "dependencies": { - "@wdio/utils": "7.17.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/repl/node_modules/@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "node_modules/@wdio/repl/node_modules/@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/repl/node_modules/@wdio/types": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.17.3.tgz", - "integrity": "sha512-j8kYdaMl4NFRS8M1bFDuEa3GMbUZbLQY7i6XEnJSetyW0GyMDLlzwcfXI4DdX85+3JbO5624UGKxVsQcuA7T3A==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/repl/node_modules/@wdio/utils": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.17.3.tgz", - "integrity": "sha512-20bGTCmgBNVKa2BJs3B5kxbsryjhfEOoKDnFjZ/rAVZYT1t1sg0e/W+vRfamd++NqTaIHOY/IKGEFiEnCw5nXw==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "p-iteration": "^1.1.8" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/selenium-standalone-service": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wdio/selenium-standalone-service/-/selenium-standalone-service-7.18.0.tgz", - "integrity": "sha512-Tl+GB45oYsnL5zP5xQU245Uhcm3IFL7XP3x7nIsUj7VHzWPSvMB4Hib90CnNiTd2pY1AUC8q+2rlS1M1jZq3VQ==", - "dev": true, - "dependencies": { - "@types/fs-extra": "^9.0.1", - "@types/node": "^17.0.4", - "@types/selenium-standalone": "^7.0.0", - "@wdio/config": "7.18.0", - "@wdio/logger": "7.17.3", - "@wdio/types": "7.18.0", - "fs-extra": "^10.0.0", - "selenium-standalone": "^8.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@wdio/cli": "^7.0.0" - } - }, - "node_modules/@wdio/selenium-standalone-service/node_modules/@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "node_modules/@wdio/selenium-standalone-service/node_modules/@wdio/config": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.18.0.tgz", - "integrity": "sha512-pXv4MWfMFSOXU6eJRbJuHcP0hN9sOyRzEpHNgMk6hsDpzqSKFp2Rg4fYrlmvYJILrM6PxTfylVz9gwP4QWOsdA==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.18.0", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/selenium-standalone-service/node_modules/@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/selenium-standalone-service/node_modules/@wdio/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.18.0.tgz", - "integrity": "sha512-GZO5gmobbAOGln4+edAsyPbeLes4I6ZCa0iBn/KVM72y8cvHH+L2ojLsDvzd6Pn/g79zDjEUpBH7BgkDplj8lg==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/types": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.16.3.tgz", - "integrity": "sha512-iJLtJrOJZSJrXR1zseCkVWUFs477FngjWz2HTMfGHR69LzfmxC0RNagemjZuLTfhTqWp/FBbqaA/F+7xJdNKag==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "^16.11.1", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/utils": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.16.3.tgz", - "integrity": "sha512-/662h5Z7B5TejHN6GiW96PAKuTPi/xcAGmtjA9ozRBI2/0eHSccDfNEaBgTTjLqqEgGAXylHcOuxHOrKx2ddJw==", - "dev": true, - "peer": true, - "dependencies": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.3", - "p-iteration": "^1.1.8" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dependencies": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals/node_modules/acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dev": true, - "dependencies": { - "buffer-equal": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/archiver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", - "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.0", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver/node_modules/async": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", - "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", - "dev": true - }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dev": true, - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dev": true, - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dev": true, - "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dev": true, - "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dev": true, - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "node_modules/async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dev": true, - "dependencies": { - "async-done": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dev": true, - "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/binaryextensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", - "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", - "dev": true, - "engines": { - "node": ">=0.8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/blockly": { - "version": "7.20211209.2", - "resolved": "https://registry.npmjs.org/blockly/-/blockly-7.20211209.2.tgz", - "integrity": "sha512-74HTPbnDOwVGKx6qRE/ZVVQwf+J9s/WkgDKv0vuXw/DtBLvLrew7Nf5jaZP0+DXRVJpP1u5sfu+qtHaom0i6Ug==", - "dev": true, - "peer": true, - "dependencies": { - "jsdom": "15.2.1" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true - }, - "node_modules/cac": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz", - "integrity": "sha1-bSTO7Dcu/lybeYgIvH9JtHJCpO8=", - "dev": true, - "peer": true, - "dependencies": { - "camelcase-keys": "^3.0.0", - "chalk": "^1.1.3", - "indent-string": "^3.0.0", - "minimist": "^1.2.0", - "read-pkg-up": "^1.0.1", - "suffix": "^0.1.0", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cac/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/camelcase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz", - "integrity": "sha1-/AxsNgNj9zd+N5O5oWvM8QcMHKQ=", - "dev": true, - "peer": true, - "dependencies": { - "camelcase": "^3.0.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/cac/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "peer": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "peer": true - }, - "node_modules/cac/node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cac/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "peer": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/cac/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "peer": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "peer": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "peer": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/cac/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "peer": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true, - "peer": true - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/chrome-launcher": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.0.tgz", - "integrity": "sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - }, - "bin": { - "print-chrome-path": "bin/print-chrome-path.js" - }, - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/clang-format": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.6.0.tgz", - "integrity": "sha512-W3/L7fWkA8DoLkz9UGjrRnNi+J5a5TuS2HDLqk6WsicpOzb66MBu4eY/EcXhicHriVnAXWQVyk5/VeHWY6w4ow==", - "dev": true, - "dependencies": { - "async": "^1.5.2", - "glob": "^7.0.0", - "resolve": "^1.1.6" - }, - "bin": { - "check-clang-format": "bin/check-clang-format.js", - "clang-format": "index.js", - "git-clang-format": "bin/git-clang-format" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", - "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.1.1", - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.14", - "timers-ext": "^0.1.5" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "peer": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/closure-calculate-chunks": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/closure-calculate-chunks/-/closure-calculate-chunks-3.0.3.tgz", - "integrity": "sha512-xtDmQORvSXfgT+6Xkde1RYTHsowCwqyHL92WdG4ZJKJ4bpu+A9yWK32kr4gInZEKRSAS0QrCrkXQJq4bOD5cJA==", - "dev": true, - "dependencies": { - "acorn": "8.x", - "acorn-walk": "8.x", - "graphlib": "2.x", - "open": "7.x", - "resolve": "1.x", - "sigma": "1.x", - "temp": "0.x", - "yargs": "16.x" - }, - "bin": { - "closure-calculate-chunks": "cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/closure-calculate-chunks/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/closure-calculate-chunks/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dev": true, - "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/concat-with-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/concurrently": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.0.0.tgz", - "integrity": "sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" - }, - "bin": { - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.0 || >=16.0.0" - } - }, - "node_modules/concurrently/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/concurrently/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", - "dev": true, - "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "dev": true, - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - }, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "dev": true, - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, - "node_modules/css-shorthand-properties": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz", - "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==", - "dev": true - }, - "node_modules/css-value": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", - "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=", - "dev": true - }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dat.gui": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.7.tgz", - "integrity": "sha512-sRl/28gF/XRC5ywC9I4zriATTsQcpSsRG7seXCPnTkK8/EQMIbCu5NPMpICLGxX9ZEUvcXR3ArLYCtgreFoMDw==", - "dev": true - }, - "node_modules/data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dependencies": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "node_modules/date-fns": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.27.0.tgz", - "integrity": "sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q==", - "dev": true, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug-fabulous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", - "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", - "dev": true, - "dependencies": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" - } - }, - "node_modules/debug-fabulous/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "peer": true, - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/defaults/node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/devtools": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.17.3.tgz", - "integrity": "sha512-y5O+z+q7cUuAKMY9ZNGexbb62MUimKAJX7OkFecix2Fl9+YFSmAQUUtHWrTt9qFkw5NJNMdiXZhQvk+JdfRygw==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.17.3", - "@wdio/logger": "7.17.3", - "@wdio/protocols": "7.17.3", - "@wdio/types": "7.17.3", - "@wdio/utils": "7.17.3", - "chrome-launcher": "^0.15.0", - "edge-paths": "^2.1.0", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.979353", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.979353.tgz", - "integrity": "sha512-/A7o8FU5n4i2WN/RH6opBbteawPbNgyKmmyl6Ts4zpQ5FVq/cGe2K/qGr8t80BLVu8KynTckHbdpaLCwxzRyFA==", - "dev": true - }, - "node_modules/devtools/node_modules/@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "node_modules/devtools/node_modules/@wdio/config": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.17.3.tgz", - "integrity": "sha512-MSWCsx0w1EbxbwOD8ykTxHqgx208CWoz9n4oWHx7Q1APfetqWFLM4O7K8cdZS1gV4IvH4EAV9807L91K8r0JNw==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools/node_modules/@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools/node_modules/@wdio/protocols": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.17.3.tgz", - "integrity": "sha512-DxVRil2uMDOshk0gMOrmemC9uEZuB5Dv4bJX/ozZwXPV9AHd6oJqUrsF/fs8bT9+4AWkE58yqsRBFc/pt7sFMw==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools/node_modules/@wdio/types": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.17.3.tgz", - "integrity": "sha512-j8kYdaMl4NFRS8M1bFDuEa3GMbUZbLQY7i6XEnJSetyW0GyMDLlzwcfXI4DdX85+3JbO5624UGKxVsQcuA7T3A==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools/node_modules/@wdio/utils": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.17.3.tgz", - "integrity": "sha512-20bGTCmgBNVKa2BJs3B5kxbsryjhfEOoKDnFjZ/rAVZYT1t1sg0e/W+vRfamd++NqTaIHOY/IKGEFiEnCw5nXw==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "p-iteration": "^1.1.8" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/diff": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", - "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dependencies": { - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "dependencies": { - "readable-stream": "~1.1.9" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/edge-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz", - "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==", - "dev": true, - "dependencies": { - "@types/which": "^1.3.2", - "which": "^2.0.2" - } - }, - "node_modules/ejs": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz", - "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==", - "dev": true, - "peer": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.1.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", - "dev": true, - "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/event-stream": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", - "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "dev": true, - "dependencies": { - "type": "^2.5.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", - "dev": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "peer": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "node_modules/fastest-stable-stringify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", - "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==", - "dev": true - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "peer": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "node_modules/filelist": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", - "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", - "dev": true, - "peer": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs-mkdirp-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/gaxios": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", - "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-watcher/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/glob-watcher/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/glob-watcher/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/google-closure-compiler": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20220301.0.0.tgz", - "integrity": "sha512-+yAqhufKIWddg587tnvRll92eLJQIlzINmgr1h5gLXZVioY3svrSYKH4TZiUuNj0UnVFoK0o1YuW122x+iFl2g==", - "dev": true, - "dependencies": { - "chalk": "2.x", - "google-closure-compiler-java": "^20220301.0.0", - "minimist": "1.x", - "vinyl": "2.x", - "vinyl-sourcemaps-apply": "^0.2.0" - }, - "bin": { - "google-closure-compiler": "cli.js" - }, - "engines": { - "node": ">=10" - }, - "optionalDependencies": { - "google-closure-compiler-linux": "^20220301.0.0", - "google-closure-compiler-osx": "^20220301.0.0", - "google-closure-compiler-windows": "^20220301.0.0" - } - }, - "node_modules/google-closure-compiler-java": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20220301.0.0.tgz", - "integrity": "sha512-kv5oaUI4xn3qWYWtRHRqbm314kesfeFlCxiFRcvBIx13mKfR0qvbOkgajLpSM6nb3voNM/E9MB9mfvHJ9XIXSg==", - "dev": true - }, - "node_modules/google-closure-compiler-linux": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20220301.0.0.tgz", - "integrity": "sha512-N2D0SRnxZ7kqdoZ2WsmLIjmizR4Xr0HaUYDK2RCOtsV21RYV8OR2u0ATp7aXhYy8WfxvYH478Ehvmc9Uzy986A==", - "cpu": [ - "x64", - "x86" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/google-closure-compiler-osx": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20220301.0.0.tgz", - "integrity": "sha512-Xqf0m5takwfv43ML4aODJxmAsAZQMTMo683gyRs0APAecncs+YKxaDPMH+pQAdI3HPY2QsvkarlunAp0HSwU5A==", - "cpu": [ - "x64", - "x86", - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/google-closure-compiler-windows": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20220301.0.0.tgz", - "integrity": "sha512-s+FU/vcpLTEgx8MCMgj0STCYkVk7syzF9KqiYPOTtbTD9ra99HPe/CEuQG7iJ3Fty9dhm9zEaetv4Dp4Wr6x+Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/google-closure-compiler/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/google-closure-compiler/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/google-closure-compiler/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/google-closure-compiler/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/google-closure-compiler/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/google-closure-compiler/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/google-closure-compiler/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/google-closure-deps": { - "version": "20220202.0.0", - "resolved": "https://registry.npmjs.org/google-closure-deps/-/google-closure-deps-20220202.0.0.tgz", - "integrity": "sha512-cPE4GbWRn4ix92UFE1nbjJpQw3eQ/1fGjjMDJG8mghhBEiBBXzBZUEpPALrpdEy9ZYgOdaRAr9UqAN35jfmy8g==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4", - "yargs": "^16.2.0" - }, - "bin": { - "closure-make-deps": "bin/closuremakedeps.js", - "get-js-version": "bin/getjsversion.js" - } - }, - "node_modules/google-closure-deps/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/google-closure-deps/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/got": { - "version": "11.8.3", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", - "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/graphlib": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-clang-format": { - "version": "1.0.27", - "resolved": "https://registry.npmjs.org/gulp-clang-format/-/gulp-clang-format-1.0.27.tgz", - "integrity": "sha512-Jj4PGuNXKdqVCh9fijvL7wdzma5TQRJz1vv8FjOjnSkfq3s/mvbdE/jq+5HG1c/q+jcYkXTEGkYT3CrdnJOLaQ==", - "dev": true, - "dependencies": { - "clang-format": "^1.0.32", - "fancy-log": "^1.3.2", - "gulp-diff": "^1.0.0", - "plugin-error": "^1.0.1", - "stream-combiner2": "^1.1.1", - "through2": "^2.0.3" - } - }, - "node_modules/gulp-clang-format/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-cli/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/gulp-cli/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/gulp-cli/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - } - }, - "node_modules/gulp-cli/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - }, - "node_modules/gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", - "dev": true, - "dependencies": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-concat/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-diff": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulp-diff/-/gulp-diff-1.0.0.tgz", - "integrity": "sha1-EBsjcS3WsQe9B9BauI6jrEhf7Xc=", - "dev": true, - "dependencies": { - "cli-color": "^1.0.0", - "diff": "^2.0.2", - "event-stream": "^3.1.5", - "gulp-util": "^3.0.6", - "through2": "^2.0.0" - } - }, - "node_modules/gulp-diff/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-insert": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/gulp-insert/-/gulp-insert-0.5.0.tgz", - "integrity": "sha1-MjE/E+SiPPWsylzl8MCAkjx3hgI=", - "dev": true, - "dependencies": { - "readable-stream": "^1.0.26-4", - "streamqueue": "0.0.6" - } - }, - "node_modules/gulp-insert/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/gulp-insert/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/gulp-insert/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/gulp-rename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", - "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-replace": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz", - "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==", - "dev": true, - "dependencies": { - "@types/node": "^14.14.41", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gulp-replace/node_modules/@types/node": { - "version": "14.18.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.0.tgz", - "integrity": "sha512-0GeIl2kmVMXEnx8tg1SlG6Gg8vkqirrW752KqolYo1PHevhhZN3bhJ67qHj+bQaINhX0Ra3TlWwRvMCd9iEfNQ==", - "dev": true - }, - "node_modules/gulp-series": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/gulp-series/-/gulp-series-1.0.2.tgz", - "integrity": "sha1-gWGZA1AXh13QDUiIklBP659jCgs=", - "dev": true - }, - "node_modules/gulp-shell": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.8.0.tgz", - "integrity": "sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ==", - "dev": true, - "dependencies": { - "chalk": "^3.0.0", - "fancy-log": "^1.3.3", - "lodash.template": "^4.5.0", - "plugin-error": "^1.0.1", - "through2": "^3.0.1", - "tslib": "^1.10.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/gulp-shell/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-shell/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/gulp-sourcemaps": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", - "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", - "dev": true, - "dependencies": { - "@gulp-sourcemaps/identity-map": "^2.0.1", - "@gulp-sourcemaps/map-sources": "^1.0.0", - "acorn": "^6.4.1", - "convert-source-map": "^1.0.0", - "css": "^3.0.0", - "debug-fabulous": "^1.0.0", - "detect-newline": "^2.0.0", - "graceful-fs": "^4.0.0", - "source-map": "^0.6.0", - "strip-bom-string": "^1.0.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gulp-sourcemaps/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/gulp-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-sourcemaps/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-umd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gulp-umd/-/gulp-umd-2.0.0.tgz", - "integrity": "sha512-zA0RDIITdOwpVUBQ6vy2R+iCsTXwDImPnWreNBmVJQAg3nDGefowV7KYwWoIeEVoxyHZT2CR50nEF6ovUh5/2A==", - "dev": true, - "dependencies": { - "concat-stream": "^1.6.2", - "lodash.template": "^4.4.0", - "through2": "^2.0.3" - } - }, - "node_modules/gulp-umd/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "deprecated": "gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5", - "dev": true, - "dependencies": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/gulp-util/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/gulp-util/node_modules/clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "node_modules/gulp-util/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/gulp-util/node_modules/lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "dependencies": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "node_modules/gulp-util/node_modules/lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, - "node_modules/gulp-util/node_modules/object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/gulp-util/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-util/node_modules/vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "dependencies": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - }, - "engines": { - "node": ">= 0.9" - } - }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "dependencies": { - "glogg": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-server": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.0.tgz", - "integrity": "sha512-5lYsIcZtf6pdR8tCtzAHTWrAveo4liUlJdWc7YafwK/maPgYHs+VNP6KpCClmUnSorJrARVMXqtT055zBv11Yg==", - "dev": true, - "dependencies": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.5", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - }, - "bin": { - "http-server": "bin/http-server" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/inquirer": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.5.tgz", - "integrity": "sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.2.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-port-reachable": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-3.1.0.tgz", - "integrity": "sha512-vjc0SSRNZ32s9SbZBzGaiP6YVB+xglLShhgZD/FHMZUXBvQWaV9CtzgeVhjccFJrI6RAMV+LX7NYxueW/A8W5A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/istextorbinary": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", - "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", - "dev": true, - "dependencies": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dev": true, - "peer": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true, - "peer": true - }, - "node_modules/js-green-licenses": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-green-licenses/-/js-green-licenses-3.0.1.tgz", - "integrity": "sha512-dKyO14U6LaDzJ5gNlvP/v1vkTW7TTXEKNxMHnkxqdYStcYVEJlfubfqbEageVzV41PWu7felyNbwawoEJ/RpYQ==", - "dev": true, - "dependencies": { - "gaxios": "^4.0.0", - "meow": "^9.0.0", - "npm-package-arg": "^8.0.0", - "package-json": "^6.0.0", - "semver": "^7.3.2", - "spdx-correct": "^3.0.0", - "spdx-satisfies": "^5.0.0", - "strip-json-comments": "^3.0.0" - }, - "bin": { - "jsgl": "build/src/cli.js" - }, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "node_modules/jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "dependencies": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsdom/node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dependencies": { - "whatwg-encoding": "^1.0.1" - } - }, - "node_modules/jsdom/node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/just-curry-it": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/just-curry-it/-/just-curry-it-3.2.1.tgz", - "integrity": "sha512-Q8206k8pTY7krW32cdmPsP+DqqLgWx/hYPSj9/+7SYqSqz7UuwPbfSe07lQtvuuaVyiSJveXk0E5RydOuWwsEg==", - "dev": true - }, - "node_modules/just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", - "dev": true - }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", - "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ky": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.28.7.tgz", - "integrity": "sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dev": true, - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dev": true, - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lighthouse-logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", - "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", - "dev": true, - "dependencies": { - "debug": "^2.6.9", - "marky": "^1.2.2" - } - }, - "node_modules/lighthouse-logger/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/lighthouse-logger/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "node_modules/lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "node_modules/lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "node_modules/lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "node_modules/lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "node_modules/lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "node_modules/lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "node_modules/lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "node_modules/lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "dependencies": { - "lodash._root": "^3.0.0" - } - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true, - "peer": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "node_modules/lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "node_modules/lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "node_modules/lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "dependencies": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "node_modules/lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", - "dev": true, - "peer": true - }, - "node_modules/lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "node_modules/lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "dev": true - }, - "node_modules/lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true - }, - "node_modules/loupe": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.3.tgz", - "integrity": "sha512-krIV4Cf1BIGIx2t1e6tucThhrBemUnIUjMtD2vN4mrMxnxpBvrcosBSpooqunBqP/hOEEV1w/Cr1YskGtqw5Jg==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", - "dev": true - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/marky": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.2.tgz", - "integrity": "sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ==", - "dev": true - }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/memoizee/node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minimist-options/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/mocha": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz", - "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "3.0.4", - "ms": "2.1.3", - "nanoid": "3.2.0", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/monaco-editor": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.20.0.tgz", - "integrity": "sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ==", - "dev": true - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "dependencies": { - "duplexer2": "0.0.2" - } - }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true, - "peer": true - }, - "node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "dev": true, - "optional": true - }, - "node_modules/nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "node_modules/nise": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", - "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0", - "@sinonjs/fake-timers": "^6.0.0", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dev": true, - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "peer": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true, - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "peer": true, - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-iteration": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", - "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json/node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json/node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/package-json/node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/package-json/node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/package-json/node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json/node_modules/got/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/package-json/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/package-json/node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/package-json/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json/node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/package-json/node_modules/responselike/node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "dependencies": { - "through": "~2.3" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/plugin-error/node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "dev": true, - "bin": { - "printj": "bin/printj.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true, - "peer": true - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "node_modules/pubsub-js": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/pubsub-js/-/pubsub-js-1.9.4.tgz", - "integrity": "sha512-hJYpaDvPH4w8ZX/0Fdf9ma1AwRgU353GfbaVfPjfJQf1KxZ2iHaHl3fAUw1qlJIR5dr4F3RzjGaWohYUEyoh7A==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/puppeteer-core": { - "version": "13.5.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.5.1.tgz", - "integrity": "sha512-dobVqWjV34ilyfQHR3BBnCYaekBYTi5MgegEYBRYd3s3uFy8jUpZEEWbaFjG9ETm+LGzR5Lmr0aF6LLuHtiuCg==", - "dev": true, - "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.3", - "devtools-protocol": "0.0.969999", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.969999", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.969999.tgz", - "integrity": "sha512-6GfzuDWU0OFAuOvBokXpXPLxjOJ5DZ157Ue3sGQQM3LgAamb8m0R0ruSfN0DDu+XG5XJgT50i6zZ/0o8RglreQ==", - "dev": true - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-selector-shadow-dom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz", - "integrity": "sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==", - "dev": true - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "dev": true, - "peer": true, - "dependencies": { - "minimatch": "3.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dev": true, - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-bom-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/replacestream/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "dev": true, - "dependencies": { - "value-or-function": "^3.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - } - }, - "node_modules/resq": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.1.tgz", - "integrity": "sha512-zhp1iyUH02MLciv3bIM2bNtTFx/fqRsK4Jk73jcPqp00d/sMTTjOtjdTMAcgjrQKGx5DvQ/HSpeqaMW0atGRJA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1" - } - }, - "node_modules/resq/node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "peer": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/rgb2hex": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", - "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/rxjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", - "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", - "dev": true, - "peer": true, - "dependencies": { - "tslib": "~2.1.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true, - "peer": true - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dependencies": { - "xmlchars": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", - "dev": true - }, - "node_modules/selenium-standalone": { - "version": "8.0.9", - "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-8.0.9.tgz", - "integrity": "sha512-Bl5Wbaeu5bKVmpLVATYeRcPsk9Bv3fr1aUvdC39UZjG6R/bem8j8Pj+dwB9F+PsS/owQnKh0BCg1KalZcAImbw==", - "dev": true, - "dependencies": { - "commander": "^8.3.0", - "cross-spawn": "^7.0.3", - "debug": "^4.3.1", - "fs-extra": "^10.0.0", - "got": "^11.8.2", - "is-port-reachable": "^3.0.0", - "lodash.mapvalues": "^4.6.0", - "lodash.merge": "^4.6.2", - "minimist": "^1.2.5", - "mkdirp": "^1.0.4", - "progress": "2.0.3", - "tar-stream": "2.2.0", - "which": "^2.0.2", - "yauzl": "^2.10.0" - }, - "bin": { - "selenium-standalone": "bin/selenium-standalone" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dev": true, - "dependencies": { - "sver-compat": "^1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/serialize-error": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", - "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sigma": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sigma/-/sigma-1.2.1.tgz", - "integrity": "sha512-9Z0m1pssXv6sndPMvOzXnM1mVO73YCWDE6X5bKxJyG+9J0B9zJkgtgoBM7cnxEaJMzmrbxPceKTVpwF7cS/xqA==", - "dev": true - }, - "node_modules/signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", - "dev": true, - "peer": true - }, - "node_modules/sinon": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", - "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.8.1", - "@sinonjs/fake-timers": "^6.0.1", - "@sinonjs/samsam": "^5.3.1", - "diff": "^4.0.2", - "nise": "^4.0.4", - "supports-color": "^7.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", - "dev": true - }, - "node_modules/spdx-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", - "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", - "dev": true, - "dependencies": { - "array-find-index": "^1.0.2", - "spdx-expression-parse": "^3.0.0", - "spdx-ranges": "^2.0.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "dev": true - }, - "node_modules/spdx-ranges": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", - "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", - "dev": true - }, - "node_modules/spdx-satisfies": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz", - "integrity": "sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==", - "dev": true, - "dependencies": { - "spdx-compare": "^1.0.0", - "spdx-expression-parse": "^3.0.0", - "spdx-ranges": "^2.0.0" - } - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "dependencies": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dev": true, - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-combiner2/node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/streamqueue": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/streamqueue/-/streamqueue-0.0.6.tgz", - "integrity": "sha1-ZvX17JTpuK8knkrsLdH3Qb/pTeM=", - "dev": true, - "dependencies": { - "readable-stream": "^1.0.26-2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/streamqueue/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/streamqueue/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/streamqueue/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/suffix": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", - "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dev": true, - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/temp/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/textextensions": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", - "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/through2-filter/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "peer": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dev": true, - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-regex-range/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "dev": true, - "dependencies": { - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/to-through/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", - "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", - "dev": true - }, - "node_modules/union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "dev": true, - "dependencies": { - "qs": "^6.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url-resolve-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/url-resolve-browser/-/url-resolve-browser-1.2.0.tgz", - "integrity": "sha512-L9PBPnlKNDFzt9ElK4br8I8Tufdm1xgv1GhMeiP7ZC87x0b7mr+4vSh13kmPq5km80JKX+UD2BeEFTCrFZ6xDA==", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "dev": true, - "dependencies": { - "builtins": "^1.0.3" - } - }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dev": true, - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "dev": true, - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "dependencies": { - "source-map": "^0.5.1" - } - }, - "node_modules/vinyl/node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dependencies": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "peer": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webdriver": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.17.3.tgz", - "integrity": "sha512-E1V/IKYjJoVjK9zhHfSCWeqORhgNlDuYydykm0h+CchEhMSgTmtTH/LYfXSx4myXzobdlIg6xhE7Jv7XPjSkAA==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "@wdio/config": "7.17.3", - "@wdio/logger": "7.17.3", - "@wdio/protocols": "7.17.3", - "@wdio/types": "7.17.3", - "@wdio/utils": "7.17.3", - "got": "^11.0.2", - "ky": "^0.30.0", - "lodash.merge": "^4.6.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriver/node_modules/@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "node_modules/webdriver/node_modules/@wdio/config": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.17.3.tgz", - "integrity": "sha512-MSWCsx0w1EbxbwOD8ykTxHqgx208CWoz9n4oWHx7Q1APfetqWFLM4O7K8cdZS1gV4IvH4EAV9807L91K8r0JNw==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriver/node_modules/@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriver/node_modules/@wdio/protocols": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.17.3.tgz", - "integrity": "sha512-DxVRil2uMDOshk0gMOrmemC9uEZuB5Dv4bJX/ozZwXPV9AHd6oJqUrsF/fs8bT9+4AWkE58yqsRBFc/pt7sFMw==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriver/node_modules/@wdio/types": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.17.3.tgz", - "integrity": "sha512-j8kYdaMl4NFRS8M1bFDuEa3GMbUZbLQY7i6XEnJSetyW0GyMDLlzwcfXI4DdX85+3JbO5624UGKxVsQcuA7T3A==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriver/node_modules/@wdio/utils": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.17.3.tgz", - "integrity": "sha512-20bGTCmgBNVKa2BJs3B5kxbsryjhfEOoKDnFjZ/rAVZYT1t1sg0e/W+vRfamd++NqTaIHOY/IKGEFiEnCw5nXw==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "p-iteration": "^1.1.8" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriver/node_modules/ky": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", - "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, - "node_modules/webdriverio": { - "version": "7.17.4", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.17.4.tgz", - "integrity": "sha512-p7u2q7NJL7Et8FdSroq/Ltoi3KkKxERE79Srh9lFr6yRNPFqb46dJf/g4nljLhburnGkbNdYN15JWgyWYnnj9g==", - "dev": true, - "dependencies": { - "@types/aria-query": "^5.0.0", - "@types/node": "^17.0.4", - "@wdio/config": "7.17.3", - "@wdio/logger": "7.17.3", - "@wdio/protocols": "7.17.3", - "@wdio/repl": "7.17.3", - "@wdio/types": "7.17.3", - "@wdio/utils": "7.17.3", - "archiver": "^5.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "7.17.3", - "devtools-protocol": "^0.0.979353", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "minimatch": "^5.0.0", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.17.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "node_modules/webdriverio/node_modules/@wdio/config": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.17.3.tgz", - "integrity": "sha512-MSWCsx0w1EbxbwOD8ykTxHqgx208CWoz9n4oWHx7Q1APfetqWFLM4O7K8cdZS1gV4IvH4EAV9807L91K8r0JNw==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@wdio/protocols": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.17.3.tgz", - "integrity": "sha512-DxVRil2uMDOshk0gMOrmemC9uEZuB5Dv4bJX/ozZwXPV9AHd6oJqUrsF/fs8bT9+4AWkE58yqsRBFc/pt7sFMw==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@wdio/types": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.17.3.tgz", - "integrity": "sha512-j8kYdaMl4NFRS8M1bFDuEa3GMbUZbLQY7i6XEnJSetyW0GyMDLlzwcfXI4DdX85+3JbO5624UGKxVsQcuA7T3A==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@wdio/utils": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.17.3.tgz", - "integrity": "sha512-20bGTCmgBNVKa2BJs3B5kxbsryjhfEOoKDnFjZ/rAVZYT1t1sg0e/W+vRfamd++NqTaIHOY/IKGEFiEnCw5nXw==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "p-iteration": "^1.1.8" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/webdriverio/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yarn-install": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", - "integrity": "sha1-V/RQULgu/VcYKzlzxUqgXLXSUjA=", - "dev": true, - "peer": true, - "dependencies": { - "cac": "^3.0.3", - "chalk": "^1.1.3", - "cross-spawn": "^4.0.2" - }, - "bin": { - "yarn-install": "bin/yarn-install.js", - "yarn-remove": "bin/yarn-remove.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yarn-install/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "peer": true, - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "node_modules/yarn-install/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/yarn-install/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "peer": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/yarn-install/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "peer": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/yarn-install/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/yarn-install/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true, - "peer": true - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.0" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@blockly/block-test": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@blockly/block-test/-/block-test-2.0.4.tgz", - "integrity": "sha512-nECM+4kSaZLNVBhbfTnsKl+kfqxcBHbflo6TE2rmaP8GjbndtT9I7XHdmXDtHGomfPTFF1qJ7bl09fmFqcdeQQ==", - "dev": true, - "requires": {} - }, - "@blockly/dev-tools": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@blockly/dev-tools/-/dev-tools-3.0.7.tgz", - "integrity": "sha512-s55teQLYNKOtWZIngce2WFy052CrEGPMfhRzQgFKlrTfVafr+iZc+E4MTIY1J9R2Zw5uKnfxULV8LfNrwcH+fA==", - "dev": true, - "requires": { - "@blockly/block-test": "^2.0.4", - "@blockly/theme-dark": "^2.0.7", - "@blockly/theme-deuteranopia": "^1.0.8", - "@blockly/theme-highcontrast": "^1.0.8", - "@blockly/theme-tritanopia": "^1.0.8", - "chai": "^4.2.0", - "dat.gui": "^0.7.7", - "lodash.assign": "^4.2.0", - "lodash.merge": "^4.6.2", - "monaco-editor": "^0.20.0", - "sinon": "^9.0.2" - } - }, - "@blockly/theme-dark": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@blockly/theme-dark/-/theme-dark-2.0.7.tgz", - "integrity": "sha512-sErL00Uaa0yBviBWpNT0tobaty5BYb+xbE3LwSsot7P/4u/j+pD+oKS8fqt8xsWxbtn67zL8PARmaP3KVe4+Aw==", - "dev": true, - "requires": {} - }, - "@blockly/theme-deuteranopia": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@blockly/theme-deuteranopia/-/theme-deuteranopia-1.0.8.tgz", - "integrity": "sha512-/9aDJCUuyDJ4OSHr2lCJRpqBLSvgV8YP7uCeCKuoY3uMnMKTxEcJ/AUma+oF98os+i3/GeNzCMYQ/6bdlCXRIQ==", - "dev": true, - "requires": {} - }, - "@blockly/theme-highcontrast": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@blockly/theme-highcontrast/-/theme-highcontrast-1.0.8.tgz", - "integrity": "sha512-A9bvQpmNtsn3W3pWa0NRttBm1IeIhV6zGAp4ziY+GU0kNGZDgbrP10JJKfz3dv+RCaXmslE9kS25RU/LYJjB/Q==", - "dev": true, - "requires": {} - }, - "@blockly/theme-modern": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/@blockly/theme-modern/-/theme-modern-2.1.28.tgz", - "integrity": "sha512-SRPrQJOvTU8yC+NFnfFipaciCJEfmIG+imPwNcL1WZ/pPct6ojEDwHKAalWkHGLrTb0rmOaDVeHJJQx+HZmQsQ==", - "dev": true, - "requires": {} - }, - "@blockly/theme-tritanopia": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@blockly/theme-tritanopia/-/theme-tritanopia-1.0.8.tgz", - "integrity": "sha512-61G8VB5a8F9eRMYAXpeRia/DrRRfAnUqpA62pksvtcRwMoztwhToUHHkSYuOHxpDpKG/rTlaFtf/GUHFFaFHEQ==", - "dev": true, - "requires": {} - }, - "@eslint/eslintrc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz", - "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - } - }, - "@gulp-sourcemaps/identity-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", - "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", - "dev": true, - "requires": { - "acorn": "^6.4.1", - "normalize-path": "^3.0.0", - "postcss": "^7.0.16", - "source-map": "^0.6.0", - "through2": "^3.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - } - } - }, - "@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", - "dev": true, - "requires": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", - "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@hyperjump/json-pointer": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@hyperjump/json-pointer/-/json-pointer-0.9.2.tgz", - "integrity": "sha512-PGCyTWO+WTkNWhMdlgE7OiQYPVkme9/e6d7K2xiZxH1wMGxGgZEEDNCe8hox7rkuD1equ4eZM+K3eoPCexckmA==", - "dev": true, - "requires": { - "just-curry-it": "^3.2.1" - } - }, - "@hyperjump/json-schema": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/@hyperjump/json-schema/-/json-schema-0.18.4.tgz", - "integrity": "sha512-FVdSlOrOio/sWCbVbAP3yH/gKKddvrIvKzLS/id6/CidWH0r0x5ZTPM1zBS0Su7gU6OOjFRxDYhrIhnNBI5ODg==", - "dev": true, - "requires": { - "@hyperjump/json-schema-core": "^0.23.4", - "fastest-stable-stringify": "^2.0.2" - } - }, - "@hyperjump/json-schema-core": { - "version": "0.23.6", - "resolved": "https://registry.npmjs.org/@hyperjump/json-schema-core/-/json-schema-core-0.23.6.tgz", - "integrity": "sha512-X0IzGRi5K4c91awB3xNt5bvbs34UyHwOpRKKFFJ2nWDWW7e22VNGvibqo/S2rdFyta3wqOHTICFNTQjjcVdIZg==", - "dev": true, - "requires": { - "@hyperjump/json-pointer": "^0.9.1", - "@hyperjump/pact": "^0.2.0", - "content-type": "^1.0.4", - "node-fetch": "^2.6.5", - "pubsub-js": "^1.9.1", - "url-resolve-browser": "^1.2.0" - } - }, - "@hyperjump/pact": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@hyperjump/pact/-/pact-0.2.1.tgz", - "integrity": "sha512-imzl9j1UiqM/HC3kgfS0/TdXcEFGFkq5EwjyaztLfdmia8KLBXGy3rC96K+nnyY+2fA69yA9HtnDappub5VSQQ==", - "dev": true, - "requires": { - "just-curry-it": "^3.1.0" - } - }, - "@sindresorhus/is": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", - "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", - "dev": true - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@sinonjs/samsam": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", - "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "@types/aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-P+dkdFu0n08PDIvw+9nT9ByQnd+Udc8DaWPb9HKfaPwCvWvQpC5XaMRx2xLWECm9x1VKNps6vEAlirjA6+uNrQ==", - "dev": true - }, - "@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "@types/ejs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.0.tgz", - "integrity": "sha512-DCg+Ka+uDQ31lJ/UtEXVlaeV3d6t81gifaVWKJy4MYVVgvJttyX/viREy+If7fz+tK/gVxTGMtyrFPnm4gjrVA==", - "dev": true, - "peer": true - }, - "@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", - "dev": true - }, - "@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "@types/inquirer": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz", - "integrity": "sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ==", - "dev": true, - "peer": true, - "requires": { - "@types/through": "*", - "rxjs": "^7.2.0" - } - }, - "@types/keyv": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", - "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/lodash": { - "version": "4.14.178", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", - "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", - "dev": true, - "peer": true - }, - "@types/lodash.flattendeep": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@types/lodash.flattendeep/-/lodash.flattendeep-4.4.6.tgz", - "integrity": "sha512-uLm2MaRVlqJSGsMK0RZpP5T3KqReq+9WbYDHCUhBhp98v56hMG/Yht52bsoTSui9xz2mUvQ9NfG3LrNGDL92Ng==", - "dev": true, - "peer": true, - "requires": { - "@types/lodash": "*" - } - }, - "@types/lodash.pickby": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/@types/lodash.pickby/-/lodash.pickby-4.6.6.tgz", - "integrity": "sha512-NFa13XxlMd9eFi0UFZFWIztpMpXhozbijrx3Yb1viYZphT7jyopIFVoIRF4eYMjruWNEG1rnyrRmg/8ej9T8Iw==", - "dev": true, - "peer": true, - "requires": { - "@types/lodash": "*" - } - }, - "@types/lodash.union": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/@types/lodash.union/-/lodash.union-4.6.6.tgz", - "integrity": "sha512-Wu0ZEVNcyCz8eAn6TlUbYWZoGbH9E+iOHxAZbwUoCEXdUiy6qpcz5o44mMXViM4vlPLLCPlkAubEP1gokoSZaw==", - "dev": true, - "peer": true, - "requires": { - "@types/lodash": "*" - } - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/node": { - "version": "16.11.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", - "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/recursive-readdir": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/recursive-readdir/-/recursive-readdir-2.2.0.tgz", - "integrity": "sha512-HGk753KRu2N4mWduovY4BLjYq4jTOL29gV2OfGdGxHcPSWGFkC5RRIdk+VTs5XmYd7MVAD+JwKrcb5+5Y7FOCg==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/selenium-standalone": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@types/selenium-standalone/-/selenium-standalone-7.0.1.tgz", - "integrity": "sha512-zbKenL0fAXzPyiOaaFMrvFdMNhj5BgNJQq8bxiZfwQD9ID2J8bUG5xbcS3tQtlzIX/62z9nG5Vo45oaHWTbvbw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/ua-parser-js": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", - "dev": true - }, - "@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", - "dev": true, - "requires": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, - "@types/which": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", - "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==", - "dev": true - }, - "@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "@wdio/cli": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.16.10.tgz", - "integrity": "sha512-VYip4i1SKRwsTiLd9I5EaHP7l+5F4jStQ5JulejEbYDHor6NEcakGsF+m6JAzHZgxs9QcskNxLr8tBveXM/b7w==", - "dev": true, - "peer": true, - "requires": { - "@types/ejs": "^3.0.5", - "@types/fs-extra": "^9.0.4", - "@types/inquirer": "^8.1.2", - "@types/lodash.flattendeep": "^4.4.6", - "@types/lodash.pickby": "^4.6.6", - "@types/lodash.union": "^4.6.6", - "@types/node": "^16.11.1", - "@types/recursive-readdir": "^2.2.0", - "@wdio/config": "7.16.3", - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.3", - "@wdio/utils": "7.16.3", - "async-exit-hook": "^2.0.1", - "chalk": "^4.0.0", - "chokidar": "^3.0.0", - "cli-spinners": "^2.1.0", - "ejs": "^3.0.1", - "fs-extra": "^10.0.0", - "inquirer": "8.1.5", - "lodash.flattendeep": "^4.4.0", - "lodash.pickby": "^4.6.0", - "lodash.union": "^4.6.0", - "mkdirp": "^1.0.4", - "recursive-readdir": "^2.2.2", - "webdriverio": "7.16.10", - "yargs": "^17.0.0", - "yarn-install": "^1.0.0" - }, - "dependencies": { - "@wdio/repl": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.16.3.tgz", - "integrity": "sha512-aFpWyAIuPo6VVmkotZDWXMzd4qw3gD+xAhB6blNrMCZKWnz9+HqZnuGGc6pmiyuc5yFzb9wF22tnIxuyTyH7yA==", - "dev": true, - "peer": true, - "requires": { - "@wdio/utils": "7.16.3" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "peer": true, - "requires": { - "ms": "2.1.2" - } - }, - "devtools": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.16.10.tgz", - "integrity": "sha512-43uB3t6uNjWsqiQKRLY7axFLuMdKqlQxq6N3FWCfBKl9We1oygkGkE7Scnushdbc4lk7QwGXBC1DQ83dCgA5Gw==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "^16.11.1", - "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.16.3", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.3", - "@wdio/utils": "7.16.3", - "chrome-launcher": "^0.15.0", - "edge-paths": "^2.1.0", - "puppeteer-core": "^11.0.0", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^8.0.0" - } - }, - "devtools-protocol": { - "version": "0.0.944179", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.944179.tgz", - "integrity": "sha512-oqBbLKuCAkEqqsWn0rsfkjy79F0/QTQR/rlijZzeHInJfDRPYwP0D04NiQX9MQmucrAyRWGseY0b/ff0yhQdXg==", - "dev": true, - "peer": true - }, - "node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", - "dev": true, - "peer": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "puppeteer-core": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-11.0.0.tgz", - "integrity": "sha512-hfQ39KNP0qKplQ86iaCNXHH9zpWlV01UFdggt2qffgWeCBF9KMavwP/k/iK/JidPPWfOnKZhDLSHZVSUr73DtA==", - "dev": true, - "peer": true, - "requires": { - "debug": "4.3.2", - "devtools-protocol": "0.0.901419", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.5", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.2.3" - }, - "dependencies": { - "devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", - "dev": true, - "peer": true - } - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true, - "peer": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "peer": true - }, - "webdriver": { - "version": "7.16.9", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.16.9.tgz", - "integrity": "sha512-6bpiyE3/1ncgyNM/RwzEWjpxu2NLYyeYNu/97OMEwFMDV8EqvlZh3wFnODi6tY0K5t4dEryIPiyjF3MDVySRAg==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "^16.11.1", - "@wdio/config": "7.16.3", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.3", - "@wdio/utils": "7.16.3", - "got": "^11.0.2", - "ky": "^0.28.5", - "lodash.merge": "^4.6.1" - } - }, - "webdriverio": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.16.10.tgz", - "integrity": "sha512-Idsn0084HqcqHa5/BW/75dwFEitSDi/hhXk+GRA0wZkVU7woE8ZKACsMS270kOADgXYU9XJBT8jo6YM3R3Sa+Q==", - "dev": true, - "peer": true, - "requires": { - "@types/aria-query": "^5.0.0", - "@types/node": "^16.11.1", - "@wdio/config": "7.16.3", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/repl": "7.16.3", - "@wdio/types": "7.16.3", - "@wdio/utils": "7.16.3", - "archiver": "^5.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "7.16.10", - "devtools-protocol": "^0.0.944179", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "minimatch": "^3.0.4", - "puppeteer-core": "^11.0.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.16.9" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true, - "peer": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "peer": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "peer": true, - "requires": {} - } - } - }, - "@wdio/config": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.16.3.tgz", - "integrity": "sha512-YbpeZAeEncyJrsKxfAwjhNbDUf/ZrMB2Io3PYnH3RQjEEo5lYlO15aUt9uJx09W5h8hBPcrj7CfUC5yNkFZJhw==", - "dev": true, - "peer": true, - "requires": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.3", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - } - }, - "@wdio/logger": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.16.0.tgz", - "integrity": "sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - } - }, - "@wdio/protocols": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.16.7.tgz", - "integrity": "sha512-Wv40pNQcLiPzQ3o98Mv4A8T1EBQ6k4khglz/e2r16CTm+F3DDYh8eLMAsU5cgnmuwwDKX1EyOiFwieykBn5MCg==", - "dev": true, - "peer": true - }, - "@wdio/repl": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.17.3.tgz", - "integrity": "sha512-ZX4dYnoOb9NC3IQFhva4B7FCoVx9v7CIG7g5W4bX/un5Xfyz3Fne1vGP9Aku15nyIaXRSCzuV6vpT/5KR6q6Hg==", - "dev": true, - "requires": { - "@wdio/utils": "7.17.3" - }, - "dependencies": { - "@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - } - }, - "@wdio/types": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.17.3.tgz", - "integrity": "sha512-j8kYdaMl4NFRS8M1bFDuEa3GMbUZbLQY7i6XEnJSetyW0GyMDLlzwcfXI4DdX85+3JbO5624UGKxVsQcuA7T3A==", - "dev": true, - "requires": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - } - }, - "@wdio/utils": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.17.3.tgz", - "integrity": "sha512-20bGTCmgBNVKa2BJs3B5kxbsryjhfEOoKDnFjZ/rAVZYT1t1sg0e/W+vRfamd++NqTaIHOY/IKGEFiEnCw5nXw==", - "dev": true, - "requires": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "p-iteration": "^1.1.8" - } - } - } - }, - "@wdio/selenium-standalone-service": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wdio/selenium-standalone-service/-/selenium-standalone-service-7.18.0.tgz", - "integrity": "sha512-Tl+GB45oYsnL5zP5xQU245Uhcm3IFL7XP3x7nIsUj7VHzWPSvMB4Hib90CnNiTd2pY1AUC8q+2rlS1M1jZq3VQ==", - "dev": true, - "requires": { - "@types/fs-extra": "^9.0.1", - "@types/node": "^17.0.4", - "@types/selenium-standalone": "^7.0.0", - "@wdio/config": "7.18.0", - "@wdio/logger": "7.17.3", - "@wdio/types": "7.18.0", - "fs-extra": "^10.0.0", - "selenium-standalone": "^8.0.3" - }, - "dependencies": { - "@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "@wdio/config": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.18.0.tgz", - "integrity": "sha512-pXv4MWfMFSOXU6eJRbJuHcP0hN9sOyRzEpHNgMk6hsDpzqSKFp2Rg4fYrlmvYJILrM6PxTfylVz9gwP4QWOsdA==", - "dev": true, - "requires": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.18.0", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - } - }, - "@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - } - }, - "@wdio/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.18.0.tgz", - "integrity": "sha512-GZO5gmobbAOGln4+edAsyPbeLes4I6ZCa0iBn/KVM72y8cvHH+L2ojLsDvzd6Pn/g79zDjEUpBH7BgkDplj8lg==", - "dev": true, - "requires": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - } - } - } - }, - "@wdio/types": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.16.3.tgz", - "integrity": "sha512-iJLtJrOJZSJrXR1zseCkVWUFs477FngjWz2HTMfGHR69LzfmxC0RNagemjZuLTfhTqWp/FBbqaA/F+7xJdNKag==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "^16.11.1", - "got": "^11.8.1" - } - }, - "@wdio/utils": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.16.3.tgz", - "integrity": "sha512-/662h5Z7B5TejHN6GiW96PAKuTPi/xcAGmtjA9ozRBI2/0eHSccDfNEaBgTTjLqqEgGAXylHcOuxHOrKx2ddJw==", - "dev": true, - "peer": true, - "requires": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.3", - "p-iteration": "^1.1.8" - } - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" - } - } - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "peer": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dev": true, - "requires": { - "buffer-equal": "^1.0.0" - } - }, - "archiver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", - "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.0", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, - "dependencies": { - "async": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", - "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dev": true, - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dev": true, - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", - "dev": true, - "peer": true - }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dev": true, - "requires": { - "async-done": "^1.2.2" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dev": true, - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "binaryextensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", - "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "blockly": { - "version": "7.20211209.2", - "resolved": "https://registry.npmjs.org/blockly/-/blockly-7.20211209.2.tgz", - "integrity": "sha512-74HTPbnDOwVGKx6qRE/ZVVQwf+J9s/WkgDKv0vuXw/DtBLvLrew7Nf5jaZP0+DXRVJpP1u5sfu+qtHaom0i6Ug==", - "dev": true, - "peer": true, - "requires": { - "jsdom": "15.2.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true - }, - "cac": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz", - "integrity": "sha1-bSTO7Dcu/lybeYgIvH9JtHJCpO8=", - "dev": true, - "peer": true, - "requires": { - "camelcase-keys": "^3.0.0", - "chalk": "^1.1.3", - "indent-string": "^3.0.0", - "minimist": "^1.2.0", - "read-pkg-up": "^1.0.1", - "suffix": "^0.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "peer": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true, - "peer": true - }, - "camelcase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz", - "integrity": "sha1-/AxsNgNj9zd+N5O5oWvM8QcMHKQ=", - "dev": true, - "peer": true, - "requires": { - "camelcase": "^3.0.0", - "map-obj": "^1.0.0" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "peer": true - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "peer": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "peer": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true, - "peer": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "peer": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "peer": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "peer": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "peer": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "peer": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "peer": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "peer": true - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true - }, - "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "dependencies": { - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - } - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true, - "peer": true - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-launcher": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.0.tgz", - "integrity": "sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA==", - "dev": true, - "requires": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - } - }, - "clang-format": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.6.0.tgz", - "integrity": "sha512-W3/L7fWkA8DoLkz9UGjrRnNi+J5a5TuS2HDLqk6WsicpOzb66MBu4eY/EcXhicHriVnAXWQVyk5/VeHWY6w4ow==", - "dev": true, - "requires": { - "async": "^1.5.2", - "glob": "^7.0.0", - "resolve": "^1.1.6" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - } - } - }, - "cli-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", - "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", - "dev": true, - "requires": { - "ansi-regex": "^2.1.1", - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.14", - "timers-ext": "^0.1.5" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "peer": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "dev": true, - "peer": true - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "peer": true - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "closure-calculate-chunks": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/closure-calculate-chunks/-/closure-calculate-chunks-3.0.3.tgz", - "integrity": "sha512-xtDmQORvSXfgT+6Xkde1RYTHsowCwqyHL92WdG4ZJKJ4bpu+A9yWK32kr4gInZEKRSAS0QrCrkXQJq4bOD5cJA==", - "dev": true, - "requires": { - "acorn": "8.x", - "acorn-walk": "8.x", - "graphlib": "2.x", - "open": "7.x", - "resolve": "1.x", - "sigma": "1.x", - "temp": "0.x", - "yargs": "16.x" - }, - "dependencies": { - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dev": true, - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "concurrently": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.0.0.tgz", - "integrity": "sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", - "dev": true, - "requires": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", - "dev": true - }, - "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "dev": true, - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } - }, - "crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "dev": true, - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "requires": { - "node-fetch": "2.6.7" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-shorthand-properties": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz", - "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==", - "dev": true - }, - "css-value": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", - "integrity": "sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo=", - "dev": true - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - } - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "dat.gui": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.7.tgz", - "integrity": "sha512-sRl/28gF/XRC5ywC9I4zriATTsQcpSsRG7seXCPnTkK8/EQMIbCu5NPMpICLGxX9ZEUvcXR3ArLYCtgreFoMDw==", - "dev": true - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "date-fns": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.27.0.tgz", - "integrity": "sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q==", - "dev": true - }, - "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "debug-fabulous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", - "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", - "dev": true, - "requires": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - } - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } - } - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "requires": { - "kind-of": "^5.0.2" - } - }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "peer": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true, - "peer": true - } - } - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "devtools": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.17.3.tgz", - "integrity": "sha512-y5O+z+q7cUuAKMY9ZNGexbb62MUimKAJX7OkFecix2Fl9+YFSmAQUUtHWrTt9qFkw5NJNMdiXZhQvk+JdfRygw==", - "dev": true, - "requires": { - "@types/node": "^17.0.4", - "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.17.3", - "@wdio/logger": "7.17.3", - "@wdio/protocols": "7.17.3", - "@wdio/types": "7.17.3", - "@wdio/utils": "7.17.3", - "chrome-launcher": "^0.15.0", - "edge-paths": "^2.1.0", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^8.0.0" - }, - "dependencies": { - "@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "@wdio/config": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.17.3.tgz", - "integrity": "sha512-MSWCsx0w1EbxbwOD8ykTxHqgx208CWoz9n4oWHx7Q1APfetqWFLM4O7K8cdZS1gV4IvH4EAV9807L91K8r0JNw==", - "dev": true, - "requires": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - } - }, - "@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - } - }, - "@wdio/protocols": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.17.3.tgz", - "integrity": "sha512-DxVRil2uMDOshk0gMOrmemC9uEZuB5Dv4bJX/ozZwXPV9AHd6oJqUrsF/fs8bT9+4AWkE58yqsRBFc/pt7sFMw==", - "dev": true - }, - "@wdio/types": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.17.3.tgz", - "integrity": "sha512-j8kYdaMl4NFRS8M1bFDuEa3GMbUZbLQY7i6XEnJSetyW0GyMDLlzwcfXI4DdX85+3JbO5624UGKxVsQcuA7T3A==", - "dev": true, - "requires": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - } - }, - "@wdio/utils": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.17.3.tgz", - "integrity": "sha512-20bGTCmgBNVKa2BJs3B5kxbsryjhfEOoKDnFjZ/rAVZYT1t1sg0e/W+vRfamd++NqTaIHOY/IKGEFiEnCw5nXw==", - "dev": true, - "requires": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "p-iteration": "^1.1.8" - } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } - } - }, - "devtools-protocol": { - "version": "0.0.979353", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.979353.tgz", - "integrity": "sha512-/A7o8FU5n4i2WN/RH6opBbteawPbNgyKmmyl6Ts4zpQ5FVq/cGe2K/qGr8t80BLVu8KynTckHbdpaLCwxzRyFA==", - "dev": true - }, - "diff": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", - "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "edge-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz", - "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==", - "dev": true, - "requires": { - "@types/which": "^1.3.2", - "which": "^2.0.2" - } - }, - "ejs": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz", - "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==", - "dev": true, - "peer": true, - "requires": { - "jake": "^10.8.5" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "eslint": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", - "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.1.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - } - } - }, - "eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", - "dev": true, - "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "event-stream": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", - "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "dev": true, - "requires": { - "type": "^2.5.0" - }, - "dependencies": { - "type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "peer": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fastest-stable-stringify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", - "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==", - "dev": true - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "peer": true, - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "peer": true - } - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "filelist": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", - "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", - "dev": true, - "peer": true, - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "peer": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "peer": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gaxios": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", - "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.1" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - }, - "dependencies": { - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "google-closure-compiler": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20220301.0.0.tgz", - "integrity": "sha512-+yAqhufKIWddg587tnvRll92eLJQIlzINmgr1h5gLXZVioY3svrSYKH4TZiUuNj0UnVFoK0o1YuW122x+iFl2g==", - "dev": true, - "requires": { - "chalk": "2.x", - "google-closure-compiler-java": "^20220301.0.0", - "google-closure-compiler-linux": "^20220301.0.0", - "google-closure-compiler-osx": "^20220301.0.0", - "google-closure-compiler-windows": "^20220301.0.0", - "minimist": "1.x", - "vinyl": "2.x", - "vinyl-sourcemaps-apply": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "google-closure-compiler-java": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20220301.0.0.tgz", - "integrity": "sha512-kv5oaUI4xn3qWYWtRHRqbm314kesfeFlCxiFRcvBIx13mKfR0qvbOkgajLpSM6nb3voNM/E9MB9mfvHJ9XIXSg==", - "dev": true - }, - "google-closure-compiler-linux": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20220301.0.0.tgz", - "integrity": "sha512-N2D0SRnxZ7kqdoZ2WsmLIjmizR4Xr0HaUYDK2RCOtsV21RYV8OR2u0ATp7aXhYy8WfxvYH478Ehvmc9Uzy986A==", - "dev": true, - "optional": true - }, - "google-closure-compiler-osx": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20220301.0.0.tgz", - "integrity": "sha512-Xqf0m5takwfv43ML4aODJxmAsAZQMTMo683gyRs0APAecncs+YKxaDPMH+pQAdI3HPY2QsvkarlunAp0HSwU5A==", - "dev": true, - "optional": true - }, - "google-closure-compiler-windows": { - "version": "20220301.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20220301.0.0.tgz", - "integrity": "sha512-s+FU/vcpLTEgx8MCMgj0STCYkVk7syzF9KqiYPOTtbTD9ra99HPe/CEuQG7iJ3Fty9dhm9zEaetv4Dp4Wr6x+Q==", - "dev": true, - "optional": true - }, - "google-closure-deps": { - "version": "20220202.0.0", - "resolved": "https://registry.npmjs.org/google-closure-deps/-/google-closure-deps-20220202.0.0.tgz", - "integrity": "sha512-cPE4GbWRn4ix92UFE1nbjJpQw3eQ/1fGjjMDJG8mghhBEiBBXzBZUEpPALrpdEy9ZYgOdaRAr9UqAN35jfmy8g==", - "dev": true, - "requires": { - "minimatch": "^3.0.4", - "yargs": "^16.2.0" - }, - "dependencies": { - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "got": { - "version": "11.8.3", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", - "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", - "dev": true, - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "graphlib": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - } - }, - "gulp-clang-format": { - "version": "1.0.27", - "resolved": "https://registry.npmjs.org/gulp-clang-format/-/gulp-clang-format-1.0.27.tgz", - "integrity": "sha512-Jj4PGuNXKdqVCh9fijvL7wdzma5TQRJz1vv8FjOjnSkfq3s/mvbdE/jq+5HG1c/q+jcYkXTEGkYT3CrdnJOLaQ==", - "dev": true, - "requires": { - "clang-format": "^1.0.32", - "fancy-log": "^1.3.2", - "gulp-diff": "^1.0.0", - "plugin-error": "^1.0.1", - "stream-combiner2": "^1.1.1", - "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "dependencies": { - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - } - }, - "yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - } - } - }, - "gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", - "dev": true, - "requires": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "gulp-diff": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulp-diff/-/gulp-diff-1.0.0.tgz", - "integrity": "sha1-EBsjcS3WsQe9B9BauI6jrEhf7Xc=", - "dev": true, - "requires": { - "cli-color": "^1.0.0", - "diff": "^2.0.2", - "event-stream": "^3.1.5", - "gulp-util": "^3.0.6", - "through2": "^2.0.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "gulp-insert": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/gulp-insert/-/gulp-insert-0.5.0.tgz", - "integrity": "sha1-MjE/E+SiPPWsylzl8MCAkjx3hgI=", - "dev": true, - "requires": { - "readable-stream": "^1.0.26-4", - "streamqueue": "0.0.6" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "gulp-rename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", - "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", - "dev": true - }, - "gulp-replace": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz", - "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==", - "dev": true, - "requires": { - "@types/node": "^14.14.41", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" - }, - "dependencies": { - "@types/node": { - "version": "14.18.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.0.tgz", - "integrity": "sha512-0GeIl2kmVMXEnx8tg1SlG6Gg8vkqirrW752KqolYo1PHevhhZN3bhJ67qHj+bQaINhX0Ra3TlWwRvMCd9iEfNQ==", - "dev": true - } - } - }, - "gulp-series": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/gulp-series/-/gulp-series-1.0.2.tgz", - "integrity": "sha1-gWGZA1AXh13QDUiIklBP659jCgs=", - "dev": true - }, - "gulp-shell": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.8.0.tgz", - "integrity": "sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "fancy-log": "^1.3.3", - "lodash.template": "^4.5.0", - "plugin-error": "^1.0.1", - "through2": "^3.0.1", - "tslib": "^1.10.0" - }, - "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - } - } - }, - "gulp-sourcemaps": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", - "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", - "dev": true, - "requires": { - "@gulp-sourcemaps/identity-map": "^2.0.1", - "@gulp-sourcemaps/map-sources": "^1.0.0", - "acorn": "^6.4.1", - "convert-source-map": "^1.0.0", - "css": "^3.0.0", - "debug-fabulous": "^1.0.0", - "detect-newline": "^2.0.0", - "graceful-fs": "^4.0.0", - "source-map": "^0.6.0", - "strip-bom-string": "^1.0.0", - "through2": "^2.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "gulp-umd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gulp-umd/-/gulp-umd-2.0.0.tgz", - "integrity": "sha512-zA0RDIITdOwpVUBQ6vy2R+iCsTXwDImPnWreNBmVJQAg3nDGefowV7KYwWoIeEVoxyHZT2CR50nEF6ovUh5/2A==", - "dev": true, - "requires": { - "concat-stream": "^1.6.2", - "lodash.template": "^4.4.0", - "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "requires": { - "whatwg-encoding": "^2.0.0" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-server": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.0.tgz", - "integrity": "sha512-5lYsIcZtf6pdR8tCtzAHTWrAveo4liUlJdWc7YafwK/maPgYHs+VNP6KpCClmUnSorJrARVMXqtT055zBv11Yg==", - "dev": true, - "requires": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.5", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "inquirer": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.5.tgz", - "integrity": "sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg==", - "dev": true, - "peer": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.2.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "peer": true - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "is-port-reachable": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-3.1.0.tgz", - "integrity": "sha512-vjc0SSRNZ32s9SbZBzGaiP6YVB+xglLShhgZD/FHMZUXBvQWaV9CtzgeVhjccFJrI6RAMV+LX7NYxueW/A8W5A==", - "dev": true - }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "istextorbinary": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", - "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", - "dev": true, - "requires": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" - } - }, - "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dev": true, - "peer": true, - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true, - "peer": true - } - } - }, - "js-green-licenses": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-green-licenses/-/js-green-licenses-3.0.1.tgz", - "integrity": "sha512-dKyO14U6LaDzJ5gNlvP/v1vkTW7TTXEKNxMHnkxqdYStcYVEJlfubfqbEageVzV41PWu7felyNbwawoEJ/RpYQ==", - "dev": true, - "requires": { - "gaxios": "^4.0.0", - "meow": "^9.0.0", - "npm-package-arg": "^8.0.0", - "package-json": "^6.0.0", - "semver": "^7.3.2", - "spdx-correct": "^3.0.0", - "spdx-satisfies": "^5.0.0", - "strip-json-comments": "^3.0.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "requires": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - } - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "just-curry-it": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/just-curry-it/-/just-curry-it-3.2.1.tgz", - "integrity": "sha512-Q8206k8pTY7krW32cdmPsP+DqqLgWx/hYPSj9/+7SYqSqz7UuwPbfSe07lQtvuuaVyiSJveXk0E5RydOuWwsEg==", - "dev": true - }, - "just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", - "dev": true - }, - "just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, - "keyv": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", - "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ky": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.28.7.tgz", - "integrity": "sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==", - "dev": true, - "peer": true - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dev": true, - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dev": true, - "requires": { - "flush-write-stream": "^1.0.2" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "lighthouse-logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", - "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "marky": "^1.2.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - } - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "^3.0.0" - } - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true, - "peer": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", - "dev": true, - "peer": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "dev": true - }, - "lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", - "dev": true - }, - "loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true - }, - "loupe": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.3.tgz", - "integrity": "sha512-krIV4Cf1BIGIx2t1e6tucThhrBemUnIUjMtD2vN4mrMxnxpBvrcosBSpooqunBqP/hOEEV1w/Cr1YskGtqw5Jg==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", - "dev": true, - "requires": { - "es5-ext": "~0.10.2" - } - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true - }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "marky": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.2.tgz", - "integrity": "sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ==", - "dev": true - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dev": true, - "requires": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - }, - "dependencies": { - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - } - } - }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" - }, - "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "requires": { - "mime-db": "1.51.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "peer": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "mocha": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz", - "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "3.0.4", - "ms": "2.1.3", - "nanoid": "3.2.0", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - } - } - }, - "monaco-editor": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.20.0.tgz", - "integrity": "sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - } - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true, - "peer": true - }, - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "dev": true, - "optional": true - }, - "nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nise": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", - "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0", - "@sinonjs/fake-timers": "^6.0.0", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dev": true, - "requires": { - "once": "^1.3.2" - } - }, - "npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "peer": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "peer": true, - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "peer": true - }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true - }, - "p-iteration": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", - "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - } - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - } - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "~2.3" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, - "dependencies": { - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - } - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true, - "peer": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "pubsub-js": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/pubsub-js/-/pubsub-js-1.9.4.tgz", - "integrity": "sha512-hJYpaDvPH4w8ZX/0Fdf9ma1AwRgU353GfbaVfPjfJQf1KxZ2iHaHl3fAUw1qlJIR5dr4F3RzjGaWohYUEyoh7A==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "puppeteer-core": { - "version": "13.5.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.5.1.tgz", - "integrity": "sha512-dobVqWjV34ilyfQHR3BBnCYaekBYTi5MgegEYBRYd3s3uFy8jUpZEEWbaFjG9ETm+LGzR5Lmr0aF6LLuHtiuCg==", - "dev": true, - "requires": { - "cross-fetch": "3.1.5", - "debug": "4.3.3", - "devtools-protocol": "0.0.969999", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "dependencies": { - "devtools-protocol": { - "version": "0.0.969999", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.969999.tgz", - "integrity": "sha512-6GfzuDWU0OFAuOvBokXpXPLxjOJ5DZ157Ue3sGQQM3LgAamb8m0R0ruSfN0DDu+XG5XJgT50i6zZ/0o8RglreQ==", - "dev": true - }, - "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, - "requires": {} - } - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "query-selector-shadow-dom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz", - "integrity": "sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==", - "dev": true - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - } - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", - "dev": true - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "dev": true, - "peer": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dev": true, - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "dev": true, - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dev": true, - "requires": { - "lowercase-keys": "^2.0.0" - } - }, - "resq": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.1.tgz", - "integrity": "sha512-zhp1iyUH02MLciv3bIM2bNtTFx/fqRsK4Jk73jcPqp00d/sMTTjOtjdTMAcgjrQKGx5DvQ/HSpeqaMW0atGRJA==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1" - }, - "dependencies": { - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "peer": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rgb2hex": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", - "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "peer": true - }, - "rxjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", - "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", - "dev": true, - "peer": true, - "requires": { - "tslib": "~2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true, - "peer": true - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "requires": { - "xmlchars": "^2.1.1" - } - }, - "secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", - "dev": true - }, - "selenium-standalone": { - "version": "8.0.9", - "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-8.0.9.tgz", - "integrity": "sha512-Bl5Wbaeu5bKVmpLVATYeRcPsk9Bv3fr1aUvdC39UZjG6R/bem8j8Pj+dwB9F+PsS/owQnKh0BCg1KalZcAImbw==", - "dev": true, - "requires": { - "commander": "^8.3.0", - "cross-spawn": "^7.0.3", - "debug": "^4.3.1", - "fs-extra": "^10.0.0", - "got": "^11.8.2", - "is-port-reachable": "^3.0.0", - "lodash.mapvalues": "^4.6.0", - "lodash.merge": "^4.6.2", - "minimist": "^1.2.5", - "mkdirp": "^1.0.4", - "progress": "2.0.3", - "tar-stream": "2.2.0", - "which": "^2.0.2", - "yauzl": "^2.10.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dev": true, - "requires": { - "sver-compat": "^1.5.0" - } - }, - "serialize-error": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", - "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - }, - "dependencies": { - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "sigma": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sigma/-/sigma-1.2.1.tgz", - "integrity": "sha512-9Z0m1pssXv6sndPMvOzXnM1mVO73YCWDE6X5bKxJyG+9J0B9zJkgtgoBM7cnxEaJMzmrbxPceKTVpwF7cS/xqA==", - "dev": true - }, - "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", - "dev": true, - "peer": true - }, - "sinon": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", - "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.8.1", - "@sinonjs/fake-timers": "^6.0.1", - "@sinonjs/samsam": "^5.3.1", - "diff": "^4.0.2", - "nise": "^4.0.4", - "supports-color": "^7.1.0" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", - "dev": true - }, - "spdx-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", - "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", - "dev": true, - "requires": { - "array-find-index": "^1.0.2", - "spdx-expression-parse": "^3.0.0", - "spdx-ranges": "^2.0.0" - } - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "dev": true - }, - "spdx-ranges": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", - "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", - "dev": true - }, - "spdx-satisfies": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz", - "integrity": "sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==", - "dev": true, - "requires": { - "spdx-compare": "^1.0.0", - "spdx-expression-parse": "^3.0.0", - "spdx-ranges": "^2.0.0" - } - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - } - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dev": true, - "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - } - } - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "streamqueue": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/streamqueue/-/streamqueue-0.0.6.tgz", - "integrity": "sha1-ZvX17JTpuK8knkrsLdH3Qb/pTeM=", - "dev": true, - "requires": { - "readable-stream": "^1.0.26-2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - } - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", - "dev": true - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "suffix": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", - "integrity": "sha1-zFgjFkag7xEC95R47zqSSP2chC8=", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dev": true, - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "textextensions": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", - "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dev": true, - "requires": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "peer": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - }, - "dependencies": { - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - } - } - }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "dev": true, - "requires": { - "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "peer": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true - }, - "ua-parser-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", - "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", - "dev": true - }, - "unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "dependencies": { - "fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", - "dev": true - } - } - }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true - }, - "union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "dev": true, - "requires": { - "qs": "^6.4.0" - } - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - } - } - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-resolve-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/url-resolve-browser/-/url-resolve-browser-1.2.0.tgz", - "integrity": "sha512-L9PBPnlKNDFzt9ElK4br8I8Tufdm1xgv1GhMeiP7ZC87x0b7mr+4vSh13kmPq5km80JKX+UD2BeEFTCrFZ6xDA==", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - } - } - }, - "vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "dependencies": { - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true - } - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "dev": true, - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "requires": { - "source-map": "^0.5.1" - } - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "peer": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webdriver": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.17.3.tgz", - "integrity": "sha512-E1V/IKYjJoVjK9zhHfSCWeqORhgNlDuYydykm0h+CchEhMSgTmtTH/LYfXSx4myXzobdlIg6xhE7Jv7XPjSkAA==", - "dev": true, - "requires": { - "@types/node": "^17.0.4", - "@wdio/config": "7.17.3", - "@wdio/logger": "7.17.3", - "@wdio/protocols": "7.17.3", - "@wdio/types": "7.17.3", - "@wdio/utils": "7.17.3", - "got": "^11.0.2", - "ky": "^0.30.0", - "lodash.merge": "^4.6.1" - }, - "dependencies": { - "@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "@wdio/config": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.17.3.tgz", - "integrity": "sha512-MSWCsx0w1EbxbwOD8ykTxHqgx208CWoz9n4oWHx7Q1APfetqWFLM4O7K8cdZS1gV4IvH4EAV9807L91K8r0JNw==", - "dev": true, - "requires": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - } - }, - "@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - } - }, - "@wdio/protocols": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.17.3.tgz", - "integrity": "sha512-DxVRil2uMDOshk0gMOrmemC9uEZuB5Dv4bJX/ozZwXPV9AHd6oJqUrsF/fs8bT9+4AWkE58yqsRBFc/pt7sFMw==", - "dev": true - }, - "@wdio/types": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.17.3.tgz", - "integrity": "sha512-j8kYdaMl4NFRS8M1bFDuEa3GMbUZbLQY7i6XEnJSetyW0GyMDLlzwcfXI4DdX85+3JbO5624UGKxVsQcuA7T3A==", - "dev": true, - "requires": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - } - }, - "@wdio/utils": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.17.3.tgz", - "integrity": "sha512-20bGTCmgBNVKa2BJs3B5kxbsryjhfEOoKDnFjZ/rAVZYT1t1sg0e/W+vRfamd++NqTaIHOY/IKGEFiEnCw5nXw==", - "dev": true, - "requires": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "p-iteration": "^1.1.8" - } - }, - "ky": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", - "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", - "dev": true - } - } - }, - "webdriverio": { - "version": "7.17.4", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.17.4.tgz", - "integrity": "sha512-p7u2q7NJL7Et8FdSroq/Ltoi3KkKxERE79Srh9lFr6yRNPFqb46dJf/g4nljLhburnGkbNdYN15JWgyWYnnj9g==", - "dev": true, - "requires": { - "@types/aria-query": "^5.0.0", - "@types/node": "^17.0.4", - "@wdio/config": "7.17.3", - "@wdio/logger": "7.17.3", - "@wdio/protocols": "7.17.3", - "@wdio/repl": "7.17.3", - "@wdio/types": "7.17.3", - "@wdio/utils": "7.17.3", - "archiver": "^5.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "7.17.3", - "devtools-protocol": "^0.0.979353", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "minimatch": "^5.0.0", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.17.3" - }, - "dependencies": { - "@types/node": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", - "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==", - "dev": true - }, - "@wdio/config": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.17.3.tgz", - "integrity": "sha512-MSWCsx0w1EbxbwOD8ykTxHqgx208CWoz9n4oWHx7Q1APfetqWFLM4O7K8cdZS1gV4IvH4EAV9807L91K8r0JNw==", - "dev": true, - "requires": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - } - }, - "@wdio/logger": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.17.3.tgz", - "integrity": "sha512-hpvJDsJMX8G/8gXHOEipxkQPjojjA+BRCZqCvZRLCVpWm2JB7tBoMzu9sUJXcpSkY03b94KAd4EwNA2uNAf9aQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - } - }, - "@wdio/protocols": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.17.3.tgz", - "integrity": "sha512-DxVRil2uMDOshk0gMOrmemC9uEZuB5Dv4bJX/ozZwXPV9AHd6oJqUrsF/fs8bT9+4AWkE58yqsRBFc/pt7sFMw==", - "dev": true - }, - "@wdio/types": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.17.3.tgz", - "integrity": "sha512-j8kYdaMl4NFRS8M1bFDuEa3GMbUZbLQY7i6XEnJSetyW0GyMDLlzwcfXI4DdX85+3JbO5624UGKxVsQcuA7T3A==", - "dev": true, - "requires": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - } - }, - "@wdio/utils": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.17.3.tgz", - "integrity": "sha512-20bGTCmgBNVKa2BJs3B5kxbsryjhfEOoKDnFjZ/rAVZYT1t1sg0e/W+vRfamd++NqTaIHOY/IKGEFiEnCw5nXw==", - "dev": true, - "requires": { - "@wdio/logger": "7.17.3", - "@wdio/types": "7.17.3", - "p-iteration": "^1.1.8" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "requires": { - "iconv-lite": "0.6.3" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, - "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "requires": {} - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", - "dev": true - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } - } - }, - "yarn-install": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", - "integrity": "sha1-V/RQULgu/VcYKzlzxUqgXLXSUjA=", - "dev": true, - "peer": true, - "requires": { - "cac": "^3.0.3", - "chalk": "^1.1.3", - "cross-spawn": "^4.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "peer": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "peer": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "peer": true - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "peer": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "peer": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "peer": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "peer": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true, - "peer": true - } - } - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - } - } -} +{ + "name": "blockly", + "version": "8.0.5", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "blockly", + "version": "8.0.5", + "license": "Apache-2.0", + "dependencies": { + "jsdom": "15.2.1" + }, + "devDependencies": { + "@blockly/block-test": "^2.0.1", + "@blockly/dev-tools": "^3.0.1", + "@blockly/theme-modern": "^2.1.1", + "@hyperjump/json-schema": "^0.18.4", + "@wdio/selenium-standalone-service": "^7.10.1", + "chai": "^4.2.0", + "clang-format": "^1.6.0", + "closure-calculate-chunks": "^3.0.2", + "concurrently": "^7.0.0", + "eslint": "^8.4.1", + "eslint-config-google": "^0.14.0", + "google-closure-compiler": "^20220301.0.0", + "google-closure-deps": "^20220202.0.0", + "gulp": "^4.0.2", + "gulp-clang-format": "^1.0.27", + "gulp-concat": "^2.6.1", + "gulp-insert": "^0.5.0", + "gulp-rename": "^2.0.0", + "gulp-replace": "^1.0.0", + "gulp-series": "^1.0.2", + "gulp-shell": "^0.8.0", + "gulp-sourcemaps": "^3.0.0", + "gulp-umd": "^2.0.0", + "http-server": "^14.0.0", + "js-green-licenses": "^3.0.0", + "json5": "^2.2.0", + "mocha": "^9.1.1", + "readline-sync": "^1.4.10", + "rimraf": "^3.0.2", + "selenium-standalone": "^8.0.3", + "through2": "^4.0.2", + "typescript": "^4.3.2", + "webdriverio": "^7.0.3", + "yargs": "^17.2.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@blockly/block-test": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@blockly/block-test/-/block-test-2.0.18.tgz", + "integrity": "sha512-IujQmkTPwRtbONyJ1nWxSr5FYaoCXByOKuNYsXiLa5TL79DlU6CuapzFCw/AnFF0z6LImY+WlMuiQPo0HhG/Lw==", + "dev": true, + "engines": { + "node": ">=8.17.0" + }, + "peerDependencies": { + "blockly": ">=7 <9" + } + }, + "node_modules/@blockly/dev-tools": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@blockly/dev-tools/-/dev-tools-3.1.8.tgz", + "integrity": "sha512-NspvkxClFlBsYe9mxfi51QuVFYtUVcKtG9OmtxEoapk1G6K1JDp3jtwUfNd3U2UjMmFHZMP9OaJC5nQQBye3hw==", + "dev": true, + "dependencies": { + "@blockly/block-test": "^2.0.14", + "@blockly/theme-dark": "^3.0.13", + "@blockly/theme-deuteranopia": "^2.0.13", + "@blockly/theme-highcontrast": "^2.0.13", + "@blockly/theme-tritanopia": "^2.0.13", + "chai": "^4.2.0", + "dat.gui": "^0.7.7", + "lodash.assign": "^4.2.0", + "lodash.merge": "^4.6.2", + "monaco-editor": "^0.20.0", + "sinon": "^9.0.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "blockly": ">=7 <9" + } + }, + "node_modules/@blockly/theme-dark": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@blockly/theme-dark/-/theme-dark-3.0.17.tgz", + "integrity": "sha512-WxYApZT2vok2k4ba98KrweFTTiL2CS8JvOO8ZaOaI5GSWTU7jO6b+KCPHf5WAEY80iqAspg1gRTeePKliZmgIA==", + "dev": true, + "engines": { + "node": ">=8.17.0" + }, + "peerDependencies": { + "blockly": ">=7 <9" + } + }, + "node_modules/@blockly/theme-deuteranopia": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@blockly/theme-deuteranopia/-/theme-deuteranopia-2.0.17.tgz", + "integrity": "sha512-smTIWZJNUBAz7YoNRoFUWk0K5ghFWaXlrDqtbPWxpSEr+qxmVoj3ZqjDvy1R+QexMCg4BQ+XZdJpTwVAwuY8lg==", + "dev": true, + "engines": { + "node": ">=8.17.0" + }, + "peerDependencies": { + "blockly": ">=7 <9" + } + }, + "node_modules/@blockly/theme-highcontrast": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@blockly/theme-highcontrast/-/theme-highcontrast-2.0.17.tgz", + "integrity": "sha512-Cy3hd0TNmeytvLwqo9yRYy4YgW9pn4z8sDPWO7SXdUqFNgKoT8FBfMMEbYLmC2vdQyn+Fj1Q04FugVF1xqEm2w==", + "dev": true, + "engines": { + "node": ">=8.17.0" + }, + "peerDependencies": { + "blockly": ">=7 <9" + } + }, + "node_modules/@blockly/theme-modern": { + "version": "2.1.42", + "resolved": "https://registry.npmjs.org/@blockly/theme-modern/-/theme-modern-2.1.42.tgz", + "integrity": "sha512-CCS1EYQ3k0N70/ol0ozzEBcb5dYMpmjjOQFOEDWsSzyt8qujKRneFDp8f9+/W1a43jyaY53kZPTYuaXfPaAp0A==", + "dev": true, + "engines": { + "node": ">=8.17.0" + }, + "peerDependencies": { + "blockly": ">=3.20200123.0 <9" + } + }, + "node_modules/@blockly/theme-tritanopia": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@blockly/theme-tritanopia/-/theme-tritanopia-2.0.17.tgz", + "integrity": "sha512-DuE6TcRTcrEIzVszbcI3xeq8XEdAR25uOVIOTAUPLcp8wjGSGxDp5OZLePLHvIFC8aZ7tUgr/3gW6F0/F0nPmQ==", + "dev": true, + "engines": { + "node": ">=8.17.0" + }, + "peerDependencies": { + "blockly": ">=7 <9" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@gulp-sourcemaps/identity-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", + "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", + "dev": true, + "dependencies": { + "acorn": "^6.4.1", + "normalize-path": "^3.0.0", + "postcss": "^7.0.16", + "source-map": "^0.6.0", + "through2": "^3.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@gulp-sourcemaps/identity-map/node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A==", + "dev": true, + "dependencies": { + "normalize-path": "^2.0.1", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@gulp-sourcemaps/map-sources/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@gulp-sourcemaps/map-sources/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", + "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@hyperjump/json-pointer": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@hyperjump/json-pointer/-/json-pointer-0.9.6.tgz", + "integrity": "sha512-3szMJLfz+1wtfPHnGi1sHzwFfFdZqIZLCCYtaD47vLZMAQCbtoBRVZn44jJgIQ6v37+8fom5rsxSSIMKWi0zbg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "just-curry-it": "^5.2.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jdesrosiers" + } + }, + "node_modules/@hyperjump/json-schema": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/@hyperjump/json-schema/-/json-schema-0.18.5.tgz", + "integrity": "sha512-O4+E8BqwzkhPm6BEkswaExIqtrtznpVQjyllA3Q3rB0VQZ4YWW7L5AtaqIiL0XtxpnuCiPKqb73BBGdyycLL6g==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@hyperjump/json-schema-core": "^0.23.4", + "fastest-stable-stringify": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jdesrosiers" + } + }, + "node_modules/@hyperjump/json-schema-core": { + "version": "0.23.7", + "resolved": "https://registry.npmjs.org/@hyperjump/json-schema-core/-/json-schema-core-0.23.7.tgz", + "integrity": "sha512-64gBteTl+zAvI1D68l/+gH7ncuM+Cf0rGdm/YwtsYZlNfbybgFD5R5uuJCsPGJDm5ZYqqWMdPIq6Nh5jDENYRw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@hyperjump/json-pointer": "^0.9.1", + "@hyperjump/pact": "^0.2.0", + "content-type": "^1.0.4", + "node-fetch": "^2.6.5", + "pubsub-js": "^1.9.1", + "url-resolve-browser": "^1.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jdesrosiers" + } + }, + "node_modules/@hyperjump/pact": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@hyperjump/pact/-/pact-0.2.4.tgz", + "integrity": "sha512-BGmyLaUSCMVyHrwXr67rMxgiQHPHwcmVCjROoY8q232EpMz9d9aFCkgGhdx//yEfHM7zgsm0zZ8RD/F89uPySg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "just-curry-it": "^3.1.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jdesrosiers" + } + }, + "node_modules/@hyperjump/pact/node_modules/just-curry-it": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/just-curry-it/-/just-curry-it-3.2.1.tgz", + "integrity": "sha512-Q8206k8pTY7krW32cdmPsP+DqqLgWx/hYPSj9/+7SYqSqz7UuwPbfSe07lQtvuuaVyiSJveXk0E5RydOuWwsEg==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", + "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-P+dkdFu0n08PDIvw+9nT9ByQnd+Udc8DaWPb9HKfaPwCvWvQpC5XaMRx2xLWECm9x1VKNps6vEAlirjA6+uNrQ==", + "dev": true + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "node_modules/@types/ejs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.1.tgz", + "integrity": "sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA==", + "dev": true, + "peer": true + }, + "node_modules/@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/inquirer": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.3.tgz", + "integrity": "sha512-ZlBqD+8WIVNy3KIVkl+Qne6bGLW2erwN0GJXY9Ri/9EMbyupee3xw3H0Mmv5kJoLyNpfd/oHlwKxO0DUDH7yWA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/through": "*" + } + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.185", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.185.tgz", + "integrity": "sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA==", + "dev": true, + "peer": true + }, + "node_modules/@types/lodash.flattendeep": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@types/lodash.flattendeep/-/lodash.flattendeep-4.4.7.tgz", + "integrity": "sha512-1h6GW/AeZw/Wej6uxrqgmdTDZX1yFS39lRsXYkg+3kWvOWWrlGCI6H7lXxlUHOzxDT4QeYGmgPpQ3BX9XevzOg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/lodash.pickby": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/@types/lodash.pickby/-/lodash.pickby-4.6.7.tgz", + "integrity": "sha512-4ebXRusuLflfscbD0PUX4eVknDHD9Yf+uMtBIvA/hrnTqeAzbuHuDjvnYriLjUrI9YrhCPVKUf4wkRSXJQ6gig==", + "dev": true, + "peer": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/lodash.union": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/@types/lodash.union/-/lodash.union-4.6.7.tgz", + "integrity": "sha512-6HXM6tsnHJzKgJE0gA/LhTGf/7AbjUk759WZ1MziVm+OBNAATHhdgj+a3KVE8g76GCLAnN4ZEQQG1EGgtBIABA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.7.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", + "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/recursive-readdir": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/recursive-readdir/-/recursive-readdir-2.2.1.tgz", + "integrity": "sha512-Xd+Ptc4/F2ueInqy5yK2FI5FxtwwbX2+VZpcg+9oYsFJVen8qQKGapCr+Bi5wQtHU1cTXT8s+07lo/nKPgu8Gg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/selenium-standalone": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/selenium-standalone/-/selenium-standalone-7.0.1.tgz", + "integrity": "sha512-zbKenL0fAXzPyiOaaFMrvFdMNhj5BgNJQq8bxiZfwQD9ID2J8bUG5xbcS3tQtlzIX/62z9nG5Vo45oaHWTbvbw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/through": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", + "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ua-parser-js": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", + "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", + "dev": true + }, + "node_modules/@types/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "dev": true, + "dependencies": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "node_modules/@types/which": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", + "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/@wdio/cli": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.25.0.tgz", + "integrity": "sha512-bN+ExZ6oP1taLgnNRT+fDcB+dCgElEj87sXPDR95nR+W0w3z8a77dlps+OwE2xEozgsEqlNfiuapI8uUQqTmrg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/ejs": "^3.0.5", + "@types/fs-extra": "^9.0.4", + "@types/inquirer": "^8.1.2", + "@types/lodash.flattendeep": "^4.4.6", + "@types/lodash.pickby": "^4.6.6", + "@types/lodash.union": "^4.6.6", + "@types/node": "^18.0.0", + "@types/recursive-readdir": "^2.2.0", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/protocols": "7.22.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "async-exit-hook": "^2.0.1", + "chalk": "^4.0.0", + "chokidar": "^3.0.0", + "cli-spinners": "^2.1.0", + "ejs": "^3.0.1", + "fs-extra": "^10.0.0", + "inquirer": "8.2.4", + "lodash.flattendeep": "^4.4.0", + "lodash.pickby": "^4.6.0", + "lodash.union": "^4.6.0", + "mkdirp": "^1.0.4", + "recursive-readdir": "^2.2.2", + "webdriverio": "7.25.0", + "yargs": "^17.0.0", + "yarn-install": "^1.0.0" + }, + "bin": { + "wdio": "bin/wdio.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wdio/config": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.25.0.tgz", + "integrity": "sha512-fttJIPu9x2H9sz6g7GsDNx0LH6S3EyXUjrk3nUz+ccwgnXtq3E3WyGgBdZsAObItvvplLNM5nSdtWNZSW0+Dzw==", + "dev": true, + "dependencies": { + "@wdio/logger": "7.19.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "deepmerge": "^4.0.0", + "glob": "^8.0.3" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wdio/logger": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.19.0.tgz", + "integrity": "sha512-xR7SN/kGei1QJD1aagzxs3KMuzNxdT/7LYYx+lt6BII49+fqL/SO+5X0FDCZD0Ds93AuQvvz9eGyzrBI2FFXmQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wdio/protocols": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.22.0.tgz", + "integrity": "sha512-8EXRR+Ymdwousm/VGtW3H1hwxZ/1g1H99A1lF0U4GuJ5cFWHCd0IVE5H31Z52i8ZruouW8jueMkGZPSo2IIUSQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wdio/repl": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.25.0.tgz", + "integrity": "sha512-XhWsiOgKnkJ/0z2Um+ckcLVUHjyBB9JEtdP2mY2LjkK55W2/mXl+Mg0G3zNbG3YvT8VCV3QzSFAJKBhyfaBjwA==", + "dev": true, + "dependencies": { + "@wdio/utils": "7.25.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wdio/selenium-standalone-service": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/selenium-standalone-service/-/selenium-standalone-service-7.25.0.tgz", + "integrity": "sha512-WRX4ljr6VRmV2YO+jqWSOhKMQKpLItJUklhOT9P98LwzMB607fMFTnN1vJ/rI3Q2ZLoHDPbPGnbmTYUw/4uzzQ==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.1", + "@types/node": "^18.0.0", + "@types/selenium-standalone": "^7.0.0", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/types": "7.25.0", + "fs-extra": "^10.0.0", + "selenium-standalone": "^8.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@wdio/cli": "^7.0.0" + } + }, + "node_modules/@wdio/types": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.25.0.tgz", + "integrity": "sha512-BET/5UZSobAiBSbpWlUzcdjU1WszuUhaGBY7Pj4aAZjlvEeU5ZW5q2/655kxAvFhqHZ4AFEgd6NXg8krOEkXaA==", + "dev": true, + "dependencies": { + "@types/node": "^18.0.0", + "got": "^11.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "^4.6.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@wdio/utils": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.25.0.tgz", + "integrity": "sha512-dRPJoVb2wsMv/GFwAVcVbp0+8CE+vVeW/+lpre6ocn36WAnDQJD6X5UGYde5oQeXGyjzj1/nMHBSsr+ifvuJRQ==", + "dev": true, + "dependencies": { + "@wdio/logger": "7.19.0", + "@wdio/types": "7.25.0", + "p-iteration": "^1.1.8" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals/node_modules/acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dev": true, + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz", + "integrity": "sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==" + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dev": true, + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dev": true, + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dev": true, + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/binaryextensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", + "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "dev": true, + "engines": { + "node": ">=0.8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blockly": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/blockly/-/blockly-8.0.5.tgz", + "integrity": "sha512-jgr3PHImkFYSC2pNWZ74TmXP1HdajxeRd2DQaAt+9I+XLl9RCWvInqNHcS+blsKBTn6zOIxHK6nLzRATbLrDSw==", + "dev": true, + "peer": true, + "dependencies": { + "jsdom": "15.2.1" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "node_modules/cac": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz", + "integrity": "sha512-hq4rxE3NT5PlaEiVV39Z45d6MoFcQZG5dsgJqtAUeOz3408LEQAElToDkf9i5IYSCOmK0If/81dLg7nKxqPR0w==", + "dev": true, + "peer": true, + "dependencies": { + "camelcase-keys": "^3.0.0", + "chalk": "^1.1.3", + "indent-string": "^3.0.0", + "minimist": "^1.2.0", + "read-pkg-up": "^1.0.1", + "suffix": "^0.1.0", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cac/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/camelcase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz", + "integrity": "sha512-U4E6A6aFyYnNW+tDt5/yIUKQURKXe3WMFPfX4FxrQFcwZ/R08AUk1xWcUtlr7oq6CV07Ji+aa69V2g7BSpblnQ==", + "dev": true, + "peer": true, + "dependencies": { + "camelcase": "^3.0.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cac/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "peer": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "peer": true + }, + "node_modules/cac/node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cac/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "peer": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/cac/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "peer": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "peer": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "peer": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/cac/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cac/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "peer": true + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chrome-launcher": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", + "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/clang-format": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.8.0.tgz", + "integrity": "sha512-pK8gzfu55/lHzIpQ1givIbWfn3eXnU7SfxqIwVgnn5jEM6j4ZJYjpFqFs4iSBPNedzRMmfjYjuQhu657WAXHXw==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "glob": "^7.0.0", + "resolve": "^1.1.6" + }, + "bin": { + "check-clang-format": "bin/check-clang-format.js", + "clang-format": "index.js", + "git-clang-format": "bin/git-clang-format" + } + }, + "node_modules/clang-format/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-color": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", + "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.1.1", + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.5" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "peer": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/closure-calculate-chunks": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/closure-calculate-chunks/-/closure-calculate-chunks-3.0.3.tgz", + "integrity": "sha512-xtDmQORvSXfgT+6Xkde1RYTHsowCwqyHL92WdG4ZJKJ4bpu+A9yWK32kr4gInZEKRSAS0QrCrkXQJq4bOD5cJA==", + "dev": true, + "dependencies": { + "acorn": "8.x", + "acorn-walk": "8.x", + "graphlib": "2.x", + "open": "7.x", + "resolve": "1.x", + "sigma": "1.x", + "temp": "0.x", + "yargs": "16.x" + }, + "bin": { + "closure-calculate-chunks": "cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/closure-calculate-chunks/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/closure-calculate-chunks/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dev": true, + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/concurrently": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.4.0.tgz", + "integrity": "sha512-M6AfrueDt/GEna/Vg9BqQ+93yuvzkSKmoTixnwEJkH0LlcGrRC2eCmjeG1tLLHIYfpYJABokqSGyMcXjm96AFA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.29.1", + "lodash": "^4.17.21", + "rxjs": "^7.0.0", + "shell-quote": "^1.7.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^17.3.1" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dev": true, + "dependencies": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "node_modules/css-shorthand-properties": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz", + "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==", + "dev": true + }, + "node_modules/css-value": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", + "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", + "dev": true + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dat.gui": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.9.tgz", + "integrity": "sha512-sCNc1OHobc+Erc1HqiswYgHdVNpSJUlk/Hz8vzOCsER7rl+oF/4+v8GXFUyCgtXpoCX6+bnmg07DedLvBLwYKQ==", + "dev": true + }, + "node_modules/data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "dev": true, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", + "dev": true, + "dependencies": { + "debug": "3.X", + "memoizee": "0.4.X", + "object-assign": "4.X" + } + }, + "node_modules/debug-fabulous/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "peer": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/devtools": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.25.0.tgz", + "integrity": "sha512-SU9jKoJJccXKXfYiIqgktoL5TuzLglqcHeivPPJjzhX17S99zH9bHw4SyhQALox3J1Xgmim+dzO6yTQtRU6cAQ==", + "dev": true, + "dependencies": { + "@types/node": "^18.0.0", + "@types/ua-parser-js": "^0.7.33", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/protocols": "7.22.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "chrome-launcher": "^0.15.0", + "edge-paths": "^2.1.0", + "puppeteer-core": "^13.1.3", + "query-selector-shadow-dom": "^1.0.0", + "ua-parser-js": "^1.0.1", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1049481", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1049481.tgz", + "integrity": "sha512-QeoiFUnCNlXusSIfCOov0bn9uGTx7Q+9Cj+vvNFzHym5OcJeXyFxXNtvWtFmDorlEnTJYL5S6wXv+kgAg1s/Zw==", + "dev": true + }, + "node_modules/devtools/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/diff": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", + "integrity": "sha512-9wfm3RLzMp/PyTFWuw9liEzdlxsdGixCW0ZTU1XDmtlAkvpVXTPGF8KnfSs0hm3BPbg19OrUPPsRkHXoREpP1g==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==", + "dev": true, + "dependencies": { + "readable-stream": "~1.1.9" + } + }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "node_modules/each-props/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/edge-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz", + "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==", + "dev": true, + "dependencies": { + "@types/which": "^1.3.2", + "which": "^2.0.2" + } + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "peer": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-stream": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", + "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "peer": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastest-stable-stringify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", + "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "peer": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "peer": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gaxios": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-stream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-stream/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-watcher/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/glob-watcher/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/glob-watcher/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-watcher/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/glob-watcher/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/google-closure-compiler": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20220301.0.0.tgz", + "integrity": "sha512-+yAqhufKIWddg587tnvRll92eLJQIlzINmgr1h5gLXZVioY3svrSYKH4TZiUuNj0UnVFoK0o1YuW122x+iFl2g==", + "dev": true, + "dependencies": { + "chalk": "2.x", + "google-closure-compiler-java": "^20220301.0.0", + "minimist": "1.x", + "vinyl": "2.x", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "bin": { + "google-closure-compiler": "cli.js" + }, + "engines": { + "node": ">=10" + }, + "optionalDependencies": { + "google-closure-compiler-linux": "^20220301.0.0", + "google-closure-compiler-osx": "^20220301.0.0", + "google-closure-compiler-windows": "^20220301.0.0" + } + }, + "node_modules/google-closure-compiler-java": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20220301.0.0.tgz", + "integrity": "sha512-kv5oaUI4xn3qWYWtRHRqbm314kesfeFlCxiFRcvBIx13mKfR0qvbOkgajLpSM6nb3voNM/E9MB9mfvHJ9XIXSg==", + "dev": true + }, + "node_modules/google-closure-compiler-linux": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20220301.0.0.tgz", + "integrity": "sha512-N2D0SRnxZ7kqdoZ2WsmLIjmizR4Xr0HaUYDK2RCOtsV21RYV8OR2u0ATp7aXhYy8WfxvYH478Ehvmc9Uzy986A==", + "cpu": [ + "x64", + "x86" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/google-closure-compiler-osx": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20220301.0.0.tgz", + "integrity": "sha512-Xqf0m5takwfv43ML4aODJxmAsAZQMTMo683gyRs0APAecncs+YKxaDPMH+pQAdI3HPY2QsvkarlunAp0HSwU5A==", + "cpu": [ + "x64", + "x86", + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/google-closure-compiler-windows": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20220301.0.0.tgz", + "integrity": "sha512-s+FU/vcpLTEgx8MCMgj0STCYkVk7syzF9KqiYPOTtbTD9ra99HPe/CEuQG7iJ3Fty9dhm9zEaetv4Dp4Wr6x+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/google-closure-compiler/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/google-closure-compiler/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/google-closure-compiler/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/google-closure-compiler/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/google-closure-compiler/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/google-closure-compiler/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/google-closure-compiler/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/google-closure-deps": { + "version": "20220202.0.0", + "resolved": "https://registry.npmjs.org/google-closure-deps/-/google-closure-deps-20220202.0.0.tgz", + "integrity": "sha512-cPE4GbWRn4ix92UFE1nbjJpQw3eQ/1fGjjMDJG8mghhBEiBBXzBZUEpPALrpdEy9ZYgOdaRAr9UqAN35jfmy8g==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4", + "yargs": "^16.2.0" + }, + "bin": { + "closure-make-deps": "bin/closuremakedeps.js", + "get-js-version": "bin/getjsversion.js" + } + }, + "node_modules/google-closure-deps/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-closure-deps/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-clang-format": { + "version": "1.0.27", + "resolved": "https://registry.npmjs.org/gulp-clang-format/-/gulp-clang-format-1.0.27.tgz", + "integrity": "sha512-Jj4PGuNXKdqVCh9fijvL7wdzma5TQRJz1vv8FjOjnSkfq3s/mvbdE/jq+5HG1c/q+jcYkXTEGkYT3CrdnJOLaQ==", + "dev": true, + "dependencies": { + "clang-format": "^1.0.32", + "fancy-log": "^1.3.2", + "gulp-diff": "^1.0.0", + "plugin-error": "^1.0.1", + "stream-combiner2": "^1.1.1", + "through2": "^2.0.3" + } + }, + "node_modules/gulp-clang-format/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/gulp-cli/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/gulp-cli/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/gulp-cli/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/gulp-cli/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-cli/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/gulp-cli/node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "node_modules/gulp-cli/node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + }, + "node_modules/gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", + "dev": true, + "dependencies": { + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-concat/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulp-diff": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-diff/-/gulp-diff-1.0.0.tgz", + "integrity": "sha512-d4dwx2A1dzPTUS9kWl8WaWRhXshZHoQqbEy7x5tzDqN4V2C3dLh82BH7Plr10vjYtiqd+LitU0sX2f61mex3cQ==", + "dev": true, + "dependencies": { + "cli-color": "^1.0.0", + "diff": "^2.0.2", + "event-stream": "^3.1.5", + "gulp-util": "^3.0.6", + "through2": "^2.0.0" + } + }, + "node_modules/gulp-diff/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulp-insert": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/gulp-insert/-/gulp-insert-0.5.0.tgz", + "integrity": "sha512-SDKCWmjomAo0N0Bzj9qEKIfURORJR/72p6AbDBIK9yKZw794ROTrQHliBem+NJzS2GsTWSm8dGWJ5L7KtjnMRA==", + "dev": true, + "dependencies": { + "readable-stream": "^1.0.26-4", + "streamqueue": "0.0.6" + } + }, + "node_modules/gulp-insert/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/gulp-insert/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/gulp-insert/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "node_modules/gulp-rename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", + "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/gulp-replace": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz", + "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==", + "dev": true, + "dependencies": { + "@types/node": "^14.14.41", + "@types/vinyl": "^2.0.4", + "istextorbinary": "^3.0.0", + "replacestream": "^4.0.3", + "yargs-parser": ">=5.0.0-security.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gulp-replace/node_modules/@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==", + "dev": true + }, + "node_modules/gulp-series": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/gulp-series/-/gulp-series-1.0.2.tgz", + "integrity": "sha512-lDlL1NqUsL9EApekdKPx0r09HJZBhY5nygbdyPgI+EwYMPgN94DYaeIcVBwKJtGnnkg/AIC99YPDvhPd0h5c1g==", + "dev": true + }, + "node_modules/gulp-shell": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.8.0.tgz", + "integrity": "sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "fancy-log": "^1.3.3", + "lodash.template": "^4.5.0", + "plugin-error": "^1.0.1", + "through2": "^3.0.1", + "tslib": "^1.10.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/gulp-shell/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gulp-shell/node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/gulp-sourcemaps": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", + "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", + "dev": true, + "dependencies": { + "@gulp-sourcemaps/identity-map": "^2.0.1", + "@gulp-sourcemaps/map-sources": "^1.0.0", + "acorn": "^6.4.1", + "convert-source-map": "^1.0.0", + "css": "^3.0.0", + "debug-fabulous": "^1.0.0", + "detect-newline": "^2.0.0", + "graceful-fs": "^4.0.0", + "source-map": "^0.6.0", + "strip-bom-string": "^1.0.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gulp-sourcemaps/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/gulp-sourcemaps/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulp-umd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-umd/-/gulp-umd-2.0.0.tgz", + "integrity": "sha512-zA0RDIITdOwpVUBQ6vy2R+iCsTXwDImPnWreNBmVJQAg3nDGefowV7KYwWoIeEVoxyHZT2CR50nEF6ovUh5/2A==", + "dev": true, + "dependencies": { + "concat-stream": "^1.6.2", + "lodash.template": "^4.4.0", + "through2": "^2.0.3" + } + }, + "node_modules/gulp-umd/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==", + "deprecated": "gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5", + "dev": true, + "dependencies": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/gulp-util/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-util/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-util/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/gulp-util/node_modules/clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==", + "dev": true + }, + "node_modules/gulp-util/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/gulp-util/node_modules/lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==", + "dev": true, + "dependencies": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "node_modules/gulp-util/node_modules/lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha512-TcrlEr31tDYnWkHFWDCV3dHYroKEXpJZ2YJYvJdhN+y4AkWMDZ5I4I8XDtUKqSAyG81N7w+I1mFEJtcED+tGqQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "node_modules/gulp-util/node_modules/object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-util/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulp-util/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/gulp-util/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/gulp-util/node_modules/vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha512-P5zdf3WB9uzr7IFoVQ2wZTmUwHL8cMZWJGzLBNCHNZ3NB6HTMsYABtt7z8tAGIINLXyAob9B9a1yzVGMFOYKEA==", + "dev": true, + "dependencies": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + }, + "engines": { + "node": ">= 0.9" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", + "dev": true, + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-port-reachable": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-3.1.0.tgz", + "integrity": "sha512-vjc0SSRNZ32s9SbZBzGaiP6YVB+xglLShhgZD/FHMZUXBvQWaV9CtzgeVhjccFJrI6RAMV+LX7NYxueW/A8W5A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/istextorbinary": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", + "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", + "dev": true, + "dependencies": { + "binaryextensions": "^2.2.0", + "textextensions": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "peer": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-green-licenses": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-green-licenses/-/js-green-licenses-3.0.1.tgz", + "integrity": "sha512-dKyO14U6LaDzJ5gNlvP/v1vkTW7TTXEKNxMHnkxqdYStcYVEJlfubfqbEageVzV41PWu7felyNbwawoEJ/RpYQ==", + "dev": true, + "dependencies": { + "gaxios": "^4.0.0", + "meow": "^9.0.0", + "npm-package-arg": "^8.0.0", + "package-json": "^6.0.0", + "semver": "^7.3.2", + "spdx-correct": "^3.0.0", + "spdx-satisfies": "^5.0.0", + "strip-json-comments": "^3.0.0" + }, + "bin": { + "jsgl": "build/src/cli.js" + }, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dependencies": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsdom/node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/jsdom/node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/just-curry-it": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/just-curry-it/-/just-curry-it-5.2.1.tgz", + "integrity": "sha512-M8qhhO9WVNc3yZgf3qfiNxMIsQlHqFHJ3vMI8N/rkp852h1utOB/N3ebS8jeXGAwYSbkdd0K6zP9eZneUtjHwA==", + "dev": true + }, + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", + "dev": true + }, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.0.tgz", + "integrity": "sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ky": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", + "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dev": true, + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/liftoff/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", + "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==", + "dev": true + }, + "node_modules/lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha512-mTzAr1aNAv/i7W43vOR/uD/aJ4ngbtsRaCubp2BfZhlGU/eORUjg/7F6X0orNMdv33JOrdgGybtvMN/po3EWrA==", + "dev": true + }, + "node_modules/lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha512-H94wl5P13uEqlCg7OcNNhMQ8KvWSIyqXzOPusRgHC9DK3o54P6P3xtbXlVbRABG4q5gSmp7EDdJ0MSuW9HX6Mg==", + "dev": true + }, + "node_modules/lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==", + "dev": true + }, + "node_modules/lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==", + "dev": true + }, + "node_modules/lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha512-Sjlavm5y+FUVIF3vF3B75GyXrzsfYV8Dlv3L4mEpuB9leg8N6yf/7rU06iLPx9fY0Mv3khVp9p7Dx0mGV6V5OQ==", + "dev": true + }, + "node_modules/lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha512-OrPwdDc65iJiBeUe5n/LIjd7Viy99bKwDdk7Z5ljfZg0uFRFlfQaCy9tZ4YMAag9WAZmlVpe1iZrkIMMSMHD3w==", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "node_modules/lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==", + "dev": true + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true + }, + "node_modules/lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ==", + "dev": true, + "dependencies": { + "lodash._root": "^3.0.0" + } + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true, + "peer": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true + }, + "node_modules/lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", + "dev": true + }, + "node_modules/lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "dev": true, + "dependencies": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.pickby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", + "dev": true, + "peer": true + }, + "node_modules/lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true + }, + "node_modules/lodash.zip": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", + "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-plugin-prefix": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", + "dev": true + }, + "node_modules/loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-iterator/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "dev": true + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "dev": true + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dev": true, + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/monaco-editor": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.20.0.tgz", + "integrity": "sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha512-7ZxrUybYv9NonoXgwoOqtStIu18D1c3eFZj27hqgf5kBrBF8Q+tE8V0MW8dKM5QLkQPh1JhhbKgHLY9kifov4Q==", + "dev": true, + "dependencies": { + "duplexer2": "0.0.2" + } + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "peer": true + }, + "node_modules/nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "dev": true, + "optional": true + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/nise": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", + "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0", + "@sinonjs/fake-timers": "^6.0.0", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "peer": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-iteration": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", + "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json/node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/package-json/node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/package-json/node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/got/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/package-json/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/package-json/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/package-json/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/package-json/node_modules/responselike/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/path-to-regexp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true, + "peer": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pubsub-js": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/pubsub-js/-/pubsub-js-1.9.4.tgz", + "integrity": "sha512-hJYpaDvPH4w8ZX/0Fdf9ma1AwRgU353GfbaVfPjfJQf1KxZ2iHaHl3fAUw1qlJIR5dr4F3RzjGaWohYUEyoh7A==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer-core": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", + "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", + "dev": true, + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.981744", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.5.0" + }, + "engines": { + "node": ">=10.18.1" + } + }, + "node_modules/puppeteer-core/node_modules/devtools-protocol": { + "version": "0.0.981744", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", + "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", + "dev": true + }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-selector-shadow-dom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz", + "integrity": "sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", + "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", + "dev": true, + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "peer": true, + "dependencies": { + "minimatch": "3.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dev": true, + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-bom-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replacestream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", + "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.3", + "object-assign": "^4.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/replacestream/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/resq": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.2.tgz", + "integrity": "sha512-HmgVS3j+FLrEDBTDYysPdPVF9/hioDMJ/otOiQDKqk77YfZeeLOj0qi34yObumcud1gBpk+wpBTEg4kMicD++A==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1" + } + }, + "node_modules/resq/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", + "dev": true + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "peer": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb2hex": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", + "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dependencies": { + "xmlchars": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, + "node_modules/selenium-standalone": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-8.2.0.tgz", + "integrity": "sha512-gRFJm2A91sL0/4PavIsfTVNjyqNjk+zbdJg/zAYgTMjuoWJv+BlYJh+1UbEtyjt4YvZACYif1DFAzFjQapqiOA==", + "dev": true, + "dependencies": { + "commander": "^9.0.0", + "cross-spawn": "^7.0.3", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "got": "^11.8.2", + "is-port-reachable": "^3.0.0", + "lodash.mapvalues": "^4.6.0", + "lodash.merge": "^4.6.2", + "minimist": "^1.2.5", + "mkdirp": "^1.0.4", + "progress": "2.0.3", + "tar-stream": "2.2.0", + "which": "^2.0.2", + "yauzl": "^2.10.0" + }, + "bin": { + "selenium-standalone": "bin/selenium-standalone" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "dev": true, + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/serialize-error": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", + "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "node_modules/sigma": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sigma/-/sigma-1.2.1.tgz", + "integrity": "sha512-9Z0m1pssXv6sndPMvOzXnM1mVO73YCWDE6X5bKxJyG+9J0B9zJkgtgoBM7cnxEaJMzmrbxPceKTVpwF7cS/xqA==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "peer": true + }, + "node_modules/sinon": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", + "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.8.1", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/samsam": "^5.3.1", + "diff": "^4.0.2", + "nise": "^4.0.4", + "supports-color": "^7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true + }, + "node_modules/spdx-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", + "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", + "dev": true, + "dependencies": { + "array-find-index": "^1.0.2", + "spdx-expression-parse": "^3.0.0", + "spdx-ranges": "^2.0.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/spdx-ranges": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", + "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", + "dev": true + }, + "node_modules/spdx-satisfies": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz", + "integrity": "sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==", + "dev": true, + "dependencies": { + "spdx-compare": "^1.0.0", + "spdx-expression-parse": "^3.0.0", + "spdx-ranges": "^2.0.0" + } + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-combiner2/node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/streamqueue": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/streamqueue/-/streamqueue-0.0.6.tgz", + "integrity": "sha512-l09LNfTUkmLMckTB1Mm8Um5GMS1uTZ/KTodg/SMf5Nx758IOsmaqIQ/AJumAnNMkDgZBG39btq3LVkN90knq8w==", + "dev": true, + "dependencies": { + "readable-stream": "^1.0.26-2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/streamqueue/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/streamqueue/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/streamqueue/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/suffix": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", + "integrity": "sha512-j5uf6MJtMCfC4vBe5LFktSe4bGyNTBk7I2Kdri0jeLrcv5B9pWfxVa5JQpoxgtR8vaVB7bVxsWgnfQbX5wkhAA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "dev": true, + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/temp/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/textextensions": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", + "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/through2-filter/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "peer": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/to-through/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dependencies": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", + "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker/node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", + "dev": true + }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url-resolve-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-resolve-browser/-/url-resolve-browser-1.2.0.tgz", + "integrity": "sha512-L9PBPnlKNDFzt9ElK4br8I8Tufdm1xgv1GhMeiP7ZC87x0b7mr+4vSh13kmPq5km80JKX+UD2BeEFTCrFZ6xDA==", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "dependencies": { + "source-map": "^0.5.1" + } + }, + "node_modules/vinyl-sourcemaps-apply/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl/node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dependencies": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "peer": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webdriver": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.25.0.tgz", + "integrity": "sha512-fYsxVMHpYAXecJP1m+fqC3BSKrWS3fcCiI120NRnZrZ52vcodpiJSuOAedKIXegQZlzl77U4VWeSHiY1f6Iseg==", + "dev": true, + "dependencies": { + "@types/node": "^18.0.0", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/protocols": "7.22.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "got": "^11.0.2", + "ky": "0.30.0", + "lodash.merge": "^4.6.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/webdriverio": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.25.0.tgz", + "integrity": "sha512-7s7PSeGpcUkZq3UTjdG8etbblAerp27Jyf/VQ4Nr0bdZACDfsCVSyvQQuD0HH880VryV+7tjXK6cSV4eYzY64Q==", + "dev": true, + "dependencies": { + "@types/aria-query": "^5.0.0", + "@types/node": "^18.0.0", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/protocols": "7.22.0", + "@wdio/repl": "7.25.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "archiver": "^5.0.0", + "aria-query": "^5.0.0", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "devtools": "7.25.0", + "devtools-protocol": "^0.0.1049481", + "fs-extra": "^10.0.0", + "grapheme-splitter": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "lodash.isobject": "^3.0.2", + "lodash.isplainobject": "^4.0.6", + "lodash.zip": "^4.2.0", + "minimatch": "^5.0.0", + "puppeteer-core": "^13.1.3", + "query-selector-shadow-dom": "^1.0.0", + "resq": "^1.9.1", + "rgb2hex": "0.2.5", + "serialize-error": "^8.0.0", + "webdriver": "7.25.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/webdriverio/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/webdriverio/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yarn-install": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", + "integrity": "sha512-VO1u181msinhPcGvQTVMnHVOae8zjX/NSksR17e6eXHRveDvHCF5mGjh9hkN8mzyfnCqcBe42LdTs7bScuTaeg==", + "dev": true, + "peer": true, + "dependencies": { + "cac": "^3.0.3", + "chalk": "^1.1.3", + "cross-spawn": "^4.0.2" + }, + "bin": { + "yarn-install": "bin/yarn-install.js", + "yarn-remove": "bin/yarn-remove.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yarn-install/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn-install/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn-install/node_modules/cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "node_modules/yarn-install/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/yarn-install/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "peer": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/yarn-install/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn-install/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/yarn-install/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/yarn-install/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "peer": true + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@blockly/block-test": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@blockly/block-test/-/block-test-2.0.18.tgz", + "integrity": "sha512-IujQmkTPwRtbONyJ1nWxSr5FYaoCXByOKuNYsXiLa5TL79DlU6CuapzFCw/AnFF0z6LImY+WlMuiQPo0HhG/Lw==", + "dev": true, + "requires": {} + }, + "@blockly/dev-tools": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@blockly/dev-tools/-/dev-tools-3.1.8.tgz", + "integrity": "sha512-NspvkxClFlBsYe9mxfi51QuVFYtUVcKtG9OmtxEoapk1G6K1JDp3jtwUfNd3U2UjMmFHZMP9OaJC5nQQBye3hw==", + "dev": true, + "requires": { + "@blockly/block-test": "^2.0.14", + "@blockly/theme-dark": "^3.0.13", + "@blockly/theme-deuteranopia": "^2.0.13", + "@blockly/theme-highcontrast": "^2.0.13", + "@blockly/theme-tritanopia": "^2.0.13", + "chai": "^4.2.0", + "dat.gui": "^0.7.7", + "lodash.assign": "^4.2.0", + "lodash.merge": "^4.6.2", + "monaco-editor": "^0.20.0", + "sinon": "^9.0.2" + } + }, + "@blockly/theme-dark": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@blockly/theme-dark/-/theme-dark-3.0.17.tgz", + "integrity": "sha512-WxYApZT2vok2k4ba98KrweFTTiL2CS8JvOO8ZaOaI5GSWTU7jO6b+KCPHf5WAEY80iqAspg1gRTeePKliZmgIA==", + "dev": true, + "requires": {} + }, + "@blockly/theme-deuteranopia": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@blockly/theme-deuteranopia/-/theme-deuteranopia-2.0.17.tgz", + "integrity": "sha512-smTIWZJNUBAz7YoNRoFUWk0K5ghFWaXlrDqtbPWxpSEr+qxmVoj3ZqjDvy1R+QexMCg4BQ+XZdJpTwVAwuY8lg==", + "dev": true, + "requires": {} + }, + "@blockly/theme-highcontrast": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@blockly/theme-highcontrast/-/theme-highcontrast-2.0.17.tgz", + "integrity": "sha512-Cy3hd0TNmeytvLwqo9yRYy4YgW9pn4z8sDPWO7SXdUqFNgKoT8FBfMMEbYLmC2vdQyn+Fj1Q04FugVF1xqEm2w==", + "dev": true, + "requires": {} + }, + "@blockly/theme-modern": { + "version": "2.1.42", + "resolved": "https://registry.npmjs.org/@blockly/theme-modern/-/theme-modern-2.1.42.tgz", + "integrity": "sha512-CCS1EYQ3k0N70/ol0ozzEBcb5dYMpmjjOQFOEDWsSzyt8qujKRneFDp8f9+/W1a43jyaY53kZPTYuaXfPaAp0A==", + "dev": true, + "requires": {} + }, + "@blockly/theme-tritanopia": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@blockly/theme-tritanopia/-/theme-tritanopia-2.0.17.tgz", + "integrity": "sha512-DuE6TcRTcrEIzVszbcI3xeq8XEdAR25uOVIOTAUPLcp8wjGSGxDp5OZLePLHvIFC8aZ7tUgr/3gW6F0/F0nPmQ==", + "dev": true, + "requires": {} + }, + "@eslint/eslintrc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@gulp-sourcemaps/identity-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", + "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", + "dev": true, + "requires": { + "acorn": "^6.4.1", + "normalize-path": "^3.0.0", + "postcss": "^7.0.16", + "source-map": "^0.6.0", + "through2": "^3.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A==", + "dev": true, + "requires": { + "normalize-path": "^2.0.1", + "through2": "^2.0.3" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", + "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@hyperjump/json-pointer": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@hyperjump/json-pointer/-/json-pointer-0.9.6.tgz", + "integrity": "sha512-3szMJLfz+1wtfPHnGi1sHzwFfFdZqIZLCCYtaD47vLZMAQCbtoBRVZn44jJgIQ6v37+8fom5rsxSSIMKWi0zbg==", + "dev": true, + "requires": { + "just-curry-it": "^5.2.1" + } + }, + "@hyperjump/json-schema": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/@hyperjump/json-schema/-/json-schema-0.18.5.tgz", + "integrity": "sha512-O4+E8BqwzkhPm6BEkswaExIqtrtznpVQjyllA3Q3rB0VQZ4YWW7L5AtaqIiL0XtxpnuCiPKqb73BBGdyycLL6g==", + "dev": true, + "requires": { + "@hyperjump/json-schema-core": "^0.23.4", + "fastest-stable-stringify": "^2.0.2" + } + }, + "@hyperjump/json-schema-core": { + "version": "0.23.7", + "resolved": "https://registry.npmjs.org/@hyperjump/json-schema-core/-/json-schema-core-0.23.7.tgz", + "integrity": "sha512-64gBteTl+zAvI1D68l/+gH7ncuM+Cf0rGdm/YwtsYZlNfbybgFD5R5uuJCsPGJDm5ZYqqWMdPIq6Nh5jDENYRw==", + "dev": true, + "requires": { + "@hyperjump/json-pointer": "^0.9.1", + "@hyperjump/pact": "^0.2.0", + "content-type": "^1.0.4", + "node-fetch": "^2.6.5", + "pubsub-js": "^1.9.1", + "url-resolve-browser": "^1.2.0" + } + }, + "@hyperjump/pact": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@hyperjump/pact/-/pact-0.2.4.tgz", + "integrity": "sha512-BGmyLaUSCMVyHrwXr67rMxgiQHPHwcmVCjROoY8q232EpMz9d9aFCkgGhdx//yEfHM7zgsm0zZ8RD/F89uPySg==", + "dev": true, + "requires": { + "just-curry-it": "^3.1.0" + }, + "dependencies": { + "just-curry-it": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/just-curry-it/-/just-curry-it-3.2.1.tgz", + "integrity": "sha512-Q8206k8pTY7krW32cdmPsP+DqqLgWx/hYPSj9/+7SYqSqz7UuwPbfSe07lQtvuuaVyiSJveXk0E5RydOuWwsEg==", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@sinonjs/samsam": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", + "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@types/aria-query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-P+dkdFu0n08PDIvw+9nT9ByQnd+Udc8DaWPb9HKfaPwCvWvQpC5XaMRx2xLWECm9x1VKNps6vEAlirjA6+uNrQ==", + "dev": true + }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "@types/ejs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.1.tgz", + "integrity": "sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA==", + "dev": true, + "peer": true + }, + "@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/inquirer": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.3.tgz", + "integrity": "sha512-ZlBqD+8WIVNy3KIVkl+Qne6bGLW2erwN0GJXY9Ri/9EMbyupee3xw3H0Mmv5kJoLyNpfd/oHlwKxO0DUDH7yWA==", + "dev": true, + "peer": true, + "requires": { + "@types/through": "*" + } + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lodash": { + "version": "4.14.185", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.185.tgz", + "integrity": "sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA==", + "dev": true, + "peer": true + }, + "@types/lodash.flattendeep": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@types/lodash.flattendeep/-/lodash.flattendeep-4.4.7.tgz", + "integrity": "sha512-1h6GW/AeZw/Wej6uxrqgmdTDZX1yFS39lRsXYkg+3kWvOWWrlGCI6H7lXxlUHOzxDT4QeYGmgPpQ3BX9XevzOg==", + "dev": true, + "peer": true, + "requires": { + "@types/lodash": "*" + } + }, + "@types/lodash.pickby": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/@types/lodash.pickby/-/lodash.pickby-4.6.7.tgz", + "integrity": "sha512-4ebXRusuLflfscbD0PUX4eVknDHD9Yf+uMtBIvA/hrnTqeAzbuHuDjvnYriLjUrI9YrhCPVKUf4wkRSXJQ6gig==", + "dev": true, + "peer": true, + "requires": { + "@types/lodash": "*" + } + }, + "@types/lodash.union": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/@types/lodash.union/-/lodash.union-4.6.7.tgz", + "integrity": "sha512-6HXM6tsnHJzKgJE0gA/LhTGf/7AbjUk759WZ1MziVm+OBNAATHhdgj+a3KVE8g76GCLAnN4ZEQQG1EGgtBIABA==", + "dev": true, + "peer": true, + "requires": { + "@types/lodash": "*" + } + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "18.7.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", + "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/recursive-readdir": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/recursive-readdir/-/recursive-readdir-2.2.1.tgz", + "integrity": "sha512-Xd+Ptc4/F2ueInqy5yK2FI5FxtwwbX2+VZpcg+9oYsFJVen8qQKGapCr+Bi5wQtHU1cTXT8s+07lo/nKPgu8Gg==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*" + } + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/selenium-standalone": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/selenium-standalone/-/selenium-standalone-7.0.1.tgz", + "integrity": "sha512-zbKenL0fAXzPyiOaaFMrvFdMNhj5BgNJQq8bxiZfwQD9ID2J8bUG5xbcS3tQtlzIX/62z9nG5Vo45oaHWTbvbw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/through": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", + "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ua-parser-js": { + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", + "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", + "dev": true + }, + "@types/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "dev": true, + "requires": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "@types/which": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", + "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "@wdio/cli": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.25.0.tgz", + "integrity": "sha512-bN+ExZ6oP1taLgnNRT+fDcB+dCgElEj87sXPDR95nR+W0w3z8a77dlps+OwE2xEozgsEqlNfiuapI8uUQqTmrg==", + "dev": true, + "peer": true, + "requires": { + "@types/ejs": "^3.0.5", + "@types/fs-extra": "^9.0.4", + "@types/inquirer": "^8.1.2", + "@types/lodash.flattendeep": "^4.4.6", + "@types/lodash.pickby": "^4.6.6", + "@types/lodash.union": "^4.6.6", + "@types/node": "^18.0.0", + "@types/recursive-readdir": "^2.2.0", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/protocols": "7.22.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "async-exit-hook": "^2.0.1", + "chalk": "^4.0.0", + "chokidar": "^3.0.0", + "cli-spinners": "^2.1.0", + "ejs": "^3.0.1", + "fs-extra": "^10.0.0", + "inquirer": "8.2.4", + "lodash.flattendeep": "^4.4.0", + "lodash.pickby": "^4.6.0", + "lodash.union": "^4.6.0", + "mkdirp": "^1.0.4", + "recursive-readdir": "^2.2.2", + "webdriverio": "7.25.0", + "yargs": "^17.0.0", + "yarn-install": "^1.0.0" + } + }, + "@wdio/config": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.25.0.tgz", + "integrity": "sha512-fttJIPu9x2H9sz6g7GsDNx0LH6S3EyXUjrk3nUz+ccwgnXtq3E3WyGgBdZsAObItvvplLNM5nSdtWNZSW0+Dzw==", + "dev": true, + "requires": { + "@wdio/logger": "7.19.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "deepmerge": "^4.0.0", + "glob": "^8.0.3" + } + }, + "@wdio/logger": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.19.0.tgz", + "integrity": "sha512-xR7SN/kGei1QJD1aagzxs3KMuzNxdT/7LYYx+lt6BII49+fqL/SO+5X0FDCZD0Ds93AuQvvz9eGyzrBI2FFXmQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^6.0.0" + } + }, + "@wdio/protocols": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.22.0.tgz", + "integrity": "sha512-8EXRR+Ymdwousm/VGtW3H1hwxZ/1g1H99A1lF0U4GuJ5cFWHCd0IVE5H31Z52i8ZruouW8jueMkGZPSo2IIUSQ==", + "dev": true + }, + "@wdio/repl": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.25.0.tgz", + "integrity": "sha512-XhWsiOgKnkJ/0z2Um+ckcLVUHjyBB9JEtdP2mY2LjkK55W2/mXl+Mg0G3zNbG3YvT8VCV3QzSFAJKBhyfaBjwA==", + "dev": true, + "requires": { + "@wdio/utils": "7.25.0" + } + }, + "@wdio/selenium-standalone-service": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/selenium-standalone-service/-/selenium-standalone-service-7.25.0.tgz", + "integrity": "sha512-WRX4ljr6VRmV2YO+jqWSOhKMQKpLItJUklhOT9P98LwzMB607fMFTnN1vJ/rI3Q2ZLoHDPbPGnbmTYUw/4uzzQ==", + "dev": true, + "requires": { + "@types/fs-extra": "^9.0.1", + "@types/node": "^18.0.0", + "@types/selenium-standalone": "^7.0.0", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/types": "7.25.0", + "fs-extra": "^10.0.0", + "selenium-standalone": "^8.0.3" + } + }, + "@wdio/types": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.25.0.tgz", + "integrity": "sha512-BET/5UZSobAiBSbpWlUzcdjU1WszuUhaGBY7Pj4aAZjlvEeU5ZW5q2/655kxAvFhqHZ4AFEgd6NXg8krOEkXaA==", + "dev": true, + "requires": { + "@types/node": "^18.0.0", + "got": "^11.8.1" + } + }, + "@wdio/utils": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.25.0.tgz", + "integrity": "sha512-dRPJoVb2wsMv/GFwAVcVbp0+8CE+vVeW/+lpre6ocn36WAnDQJD6X5UGYde5oQeXGyjzj1/nMHBSsr+ifvuJRQ==", + "dev": true, + "requires": { + "@wdio/logger": "7.19.0", + "@wdio/types": "7.25.0", + "p-iteration": "^1.1.8" + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + } + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "peer": true + } + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "aria-query": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz", + "integrity": "sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "peer": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "binaryextensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", + "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "blockly": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/blockly/-/blockly-8.0.5.tgz", + "integrity": "sha512-jgr3PHImkFYSC2pNWZ74TmXP1HdajxeRd2DQaAt+9I+XLl9RCWvInqNHcS+blsKBTn6zOIxHK6nLzRATbLrDSw==", + "dev": true, + "peer": true, + "requires": { + "jsdom": "15.2.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "cac": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz", + "integrity": "sha512-hq4rxE3NT5PlaEiVV39Z45d6MoFcQZG5dsgJqtAUeOz3408LEQAElToDkf9i5IYSCOmK0If/81dLg7nKxqPR0w==", + "dev": true, + "peer": true, + "requires": { + "camelcase-keys": "^3.0.0", + "chalk": "^1.1.3", + "indent-string": "^3.0.0", + "minimist": "^1.2.0", + "read-pkg-up": "^1.0.1", + "suffix": "^0.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "peer": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true, + "peer": true + }, + "camelcase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz", + "integrity": "sha512-U4E6A6aFyYnNW+tDt5/yIUKQURKXe3WMFPfX4FxrQFcwZ/R08AUk1xWcUtlr7oq6CV07Ji+aa69V2g7BSpblnQ==", + "dev": true, + "peer": true, + "requires": { + "camelcase": "^3.0.0", + "map-obj": "^1.0.0" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "peer": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "peer": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true, + "peer": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "peer": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "peer": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "peer": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "peer": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "peer": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "peer": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "peer": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "peer": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "dependencies": { + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + } + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "peer": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-launcher": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", + "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", + "dev": true, + "requires": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + } + }, + "clang-format": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.8.0.tgz", + "integrity": "sha512-pK8gzfu55/lHzIpQ1givIbWfn3eXnU7SfxqIwVgnn5jEM6j4ZJYjpFqFs4iSBPNedzRMmfjYjuQhu657WAXHXw==", + "dev": true, + "requires": { + "async": "^3.2.3", + "glob": "^7.0.0", + "resolve": "^1.1.6" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + } + } + }, + "cli-color": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", + "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "dev": true, + "requires": { + "ansi-regex": "^2.1.1", + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.5" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "peer": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "peer": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "peer": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true + }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "closure-calculate-chunks": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/closure-calculate-chunks/-/closure-calculate-chunks-3.0.3.tgz", + "integrity": "sha512-xtDmQORvSXfgT+6Xkde1RYTHsowCwqyHL92WdG4ZJKJ4bpu+A9yWK32kr4gInZEKRSAS0QrCrkXQJq4bOD5cJA==", + "dev": true, + "requires": { + "acorn": "8.x", + "acorn-walk": "8.x", + "graphlib": "2.x", + "open": "7.x", + "resolve": "1.x", + "sigma": "1.x", + "temp": "0.x", + "yargs": "16.x" + }, + "dependencies": { + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "concurrently": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.4.0.tgz", + "integrity": "sha512-M6AfrueDt/GEna/Vg9BqQ+93yuvzkSKmoTixnwEJkH0LlcGrRC2eCmjeG1tLLHIYfpYJABokqSGyMcXjm96AFA==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "date-fns": "^2.29.1", + "lodash": "^4.17.21", + "rxjs": "^7.0.0", + "shell-quote": "^1.7.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^17.3.1" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dev": true, + "requires": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true + }, + "crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dev": true, + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "requires": { + "node-fetch": "2.6.7" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "css-shorthand-properties": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz", + "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==", + "dev": true + }, + "css-value": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", + "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", + "dev": true + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dat.gui": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.9.tgz", + "integrity": "sha512-sCNc1OHobc+Erc1HqiswYgHdVNpSJUlk/Hz8vzOCsER7rl+oF/4+v8GXFUyCgtXpoCX6+bnmg07DedLvBLwYKQ==", + "dev": true + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "date-fns": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "dev": true + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", + "dev": true, + "requires": { + "debug": "3.X", + "memoizee": "0.4.X", + "object-assign": "4.X" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "peer": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "peer": true + } + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", + "dev": true + }, + "devtools": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.25.0.tgz", + "integrity": "sha512-SU9jKoJJccXKXfYiIqgktoL5TuzLglqcHeivPPJjzhX17S99zH9bHw4SyhQALox3J1Xgmim+dzO6yTQtRU6cAQ==", + "dev": true, + "requires": { + "@types/node": "^18.0.0", + "@types/ua-parser-js": "^0.7.33", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/protocols": "7.22.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "chrome-launcher": "^0.15.0", + "edge-paths": "^2.1.0", + "puppeteer-core": "^13.1.3", + "query-selector-shadow-dom": "^1.0.0", + "ua-parser-js": "^1.0.1", + "uuid": "^9.0.0" + }, + "dependencies": { + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true + } + } + }, + "devtools-protocol": { + "version": "0.0.1049481", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1049481.tgz", + "integrity": "sha512-QeoiFUnCNlXusSIfCOov0bn9uGTx7Q+9Cj+vvNFzHym5OcJeXyFxXNtvWtFmDorlEnTJYL5S6wXv+kgAg1s/Zw==", + "dev": true + }, + "diff": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", + "integrity": "sha512-9wfm3RLzMp/PyTFWuw9liEzdlxsdGixCW0ZTU1XDmtlAkvpVXTPGF8KnfSs0hm3BPbg19OrUPPsRkHXoREpP1g==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "edge-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz", + "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==", + "dev": true, + "requires": { + "@types/which": "^1.3.2", + "which": "^2.0.2" + } + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "peer": true, + "requires": { + "jake": "^10.8.5" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + } + } + }, + "eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "event-stream": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", + "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "peer": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fastest-stable-stringify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz", + "integrity": "sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "peer": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true + } + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "peer": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gaxios": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "google-closure-compiler": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20220301.0.0.tgz", + "integrity": "sha512-+yAqhufKIWddg587tnvRll92eLJQIlzINmgr1h5gLXZVioY3svrSYKH4TZiUuNj0UnVFoK0o1YuW122x+iFl2g==", + "dev": true, + "requires": { + "chalk": "2.x", + "google-closure-compiler-java": "^20220301.0.0", + "google-closure-compiler-linux": "^20220301.0.0", + "google-closure-compiler-osx": "^20220301.0.0", + "google-closure-compiler-windows": "^20220301.0.0", + "minimist": "1.x", + "vinyl": "2.x", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "google-closure-compiler-java": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20220301.0.0.tgz", + "integrity": "sha512-kv5oaUI4xn3qWYWtRHRqbm314kesfeFlCxiFRcvBIx13mKfR0qvbOkgajLpSM6nb3voNM/E9MB9mfvHJ9XIXSg==", + "dev": true + }, + "google-closure-compiler-linux": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20220301.0.0.tgz", + "integrity": "sha512-N2D0SRnxZ7kqdoZ2WsmLIjmizR4Xr0HaUYDK2RCOtsV21RYV8OR2u0ATp7aXhYy8WfxvYH478Ehvmc9Uzy986A==", + "dev": true, + "optional": true + }, + "google-closure-compiler-osx": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20220301.0.0.tgz", + "integrity": "sha512-Xqf0m5takwfv43ML4aODJxmAsAZQMTMo683gyRs0APAecncs+YKxaDPMH+pQAdI3HPY2QsvkarlunAp0HSwU5A==", + "dev": true, + "optional": true + }, + "google-closure-compiler-windows": { + "version": "20220301.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20220301.0.0.tgz", + "integrity": "sha512-s+FU/vcpLTEgx8MCMgj0STCYkVk7syzF9KqiYPOTtbTD9ra99HPe/CEuQG7iJ3Fty9dhm9zEaetv4Dp4Wr6x+Q==", + "dev": true, + "optional": true + }, + "google-closure-deps": { + "version": "20220202.0.0", + "resolved": "https://registry.npmjs.org/google-closure-deps/-/google-closure-deps-20220202.0.0.tgz", + "integrity": "sha512-cPE4GbWRn4ix92UFE1nbjJpQw3eQ/1fGjjMDJG8mghhBEiBBXzBZUEpPALrpdEy9ZYgOdaRAr9UqAN35jfmy8g==", + "dev": true, + "requires": { + "minimatch": "^3.0.4", + "yargs": "^16.2.0" + }, + "dependencies": { + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + } + }, + "gulp-clang-format": { + "version": "1.0.27", + "resolved": "https://registry.npmjs.org/gulp-clang-format/-/gulp-clang-format-1.0.27.tgz", + "integrity": "sha512-Jj4PGuNXKdqVCh9fijvL7wdzma5TQRJz1vv8FjOjnSkfq3s/mvbdE/jq+5HG1c/q+jcYkXTEGkYT3CrdnJOLaQ==", + "dev": true, + "requires": { + "clang-format": "^1.0.32", + "fancy-log": "^1.3.2", + "gulp-diff": "^1.0.0", + "plugin-error": "^1.0.1", + "stream-combiner2": "^1.1.1", + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + } + }, + "gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", + "dev": true, + "requires": { + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-diff": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-diff/-/gulp-diff-1.0.0.tgz", + "integrity": "sha512-d4dwx2A1dzPTUS9kWl8WaWRhXshZHoQqbEy7x5tzDqN4V2C3dLh82BH7Plr10vjYtiqd+LitU0sX2f61mex3cQ==", + "dev": true, + "requires": { + "cli-color": "^1.0.0", + "diff": "^2.0.2", + "event-stream": "^3.1.5", + "gulp-util": "^3.0.6", + "through2": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-insert": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/gulp-insert/-/gulp-insert-0.5.0.tgz", + "integrity": "sha512-SDKCWmjomAo0N0Bzj9qEKIfURORJR/72p6AbDBIK9yKZw794ROTrQHliBem+NJzS2GsTWSm8dGWJ5L7KtjnMRA==", + "dev": true, + "requires": { + "readable-stream": "^1.0.26-4", + "streamqueue": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "gulp-rename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", + "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", + "dev": true + }, + "gulp-replace": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz", + "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==", + "dev": true, + "requires": { + "@types/node": "^14.14.41", + "@types/vinyl": "^2.0.4", + "istextorbinary": "^3.0.0", + "replacestream": "^4.0.3", + "yargs-parser": ">=5.0.0-security.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.31.tgz", + "integrity": "sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw==", + "dev": true + } + } + }, + "gulp-series": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/gulp-series/-/gulp-series-1.0.2.tgz", + "integrity": "sha512-lDlL1NqUsL9EApekdKPx0r09HJZBhY5nygbdyPgI+EwYMPgN94DYaeIcVBwKJtGnnkg/AIC99YPDvhPd0h5c1g==", + "dev": true + }, + "gulp-shell": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.8.0.tgz", + "integrity": "sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "fancy-log": "^1.3.3", + "lodash.template": "^4.5.0", + "plugin-error": "^1.0.1", + "through2": "^3.0.1", + "tslib": "^1.10.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "gulp-sourcemaps": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", + "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", + "dev": true, + "requires": { + "@gulp-sourcemaps/identity-map": "^2.0.1", + "@gulp-sourcemaps/map-sources": "^1.0.0", + "acorn": "^6.4.1", + "convert-source-map": "^1.0.0", + "css": "^3.0.0", + "debug-fabulous": "^1.0.0", + "detect-newline": "^2.0.0", + "graceful-fs": "^4.0.0", + "source-map": "^0.6.0", + "strip-bom-string": "^1.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-umd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-umd/-/gulp-umd-2.0.0.tgz", + "integrity": "sha512-zA0RDIITdOwpVUBQ6vy2R+iCsTXwDImPnWreNBmVJQAg3nDGefowV7KYwWoIeEVoxyHZT2CR50nEF6ovUh5/2A==", + "dev": true, + "requires": { + "concat-stream": "^1.6.2", + "lodash.template": "^4.4.0", + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha512-TcrlEr31tDYnWkHFWDCV3dHYroKEXpJZ2YJYvJdhN+y4AkWMDZ5I4I8XDtUKqSAyG81N7w+I1mFEJtcED+tGqQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha512-P5zdf3WB9uzr7IFoVQ2wZTmUwHL8cMZWJGzLBNCHNZ3NB6HTMsYABtt7z8tAGIINLXyAob9B9a1yzVGMFOYKEA==", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "requires": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "peer": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "peer": true + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "is-port-reachable": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-3.1.0.tgz", + "integrity": "sha512-vjc0SSRNZ32s9SbZBzGaiP6YVB+xglLShhgZD/FHMZUXBvQWaV9CtzgeVhjccFJrI6RAMV+LX7NYxueW/A8W5A==", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "istextorbinary": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", + "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", + "dev": true, + "requires": { + "binaryextensions": "^2.2.0", + "textextensions": "^3.2.0" + } + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "peer": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "js-green-licenses": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-green-licenses/-/js-green-licenses-3.0.1.tgz", + "integrity": "sha512-dKyO14U6LaDzJ5gNlvP/v1vkTW7TTXEKNxMHnkxqdYStcYVEJlfubfqbEageVzV41PWu7felyNbwawoEJ/RpYQ==", + "dev": true, + "requires": { + "gaxios": "^4.0.0", + "meow": "^9.0.0", + "npm-package-arg": "^8.0.0", + "package-json": "^6.0.0", + "semver": "^7.3.2", + "spdx-correct": "^3.0.0", + "spdx-satisfies": "^5.0.0", + "strip-json-comments": "^3.0.0" + } + }, + "js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + } + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "just-curry-it": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/just-curry-it/-/just-curry-it-5.2.1.tgz", + "integrity": "sha512-M8qhhO9WVNc3yZgf3qfiNxMIsQlHqFHJ3vMI8N/rkp852h1utOB/N3ebS8jeXGAwYSbkdd0K6zP9eZneUtjHwA==", + "dev": true + }, + "just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", + "dev": true + }, + "just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, + "keyv": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.0.tgz", + "integrity": "sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ky": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", + "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", + "dev": true + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "lighthouse-logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", + "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "marky": "^1.2.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha512-mTzAr1aNAv/i7W43vOR/uD/aJ4ngbtsRaCubp2BfZhlGU/eORUjg/7F6X0orNMdv33JOrdgGybtvMN/po3EWrA==", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha512-H94wl5P13uEqlCg7OcNNhMQ8KvWSIyqXzOPusRgHC9DK3o54P6P3xtbXlVbRABG4q5gSmp7EDdJ0MSuW9HX6Mg==", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha512-Sjlavm5y+FUVIF3vF3B75GyXrzsfYV8Dlv3L4mEpuB9leg8N6yf/7rU06iLPx9fY0Mv3khVp9p7Dx0mGV6V5OQ==", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha512-OrPwdDc65iJiBeUe5n/LIjd7Viy99bKwDdk7Z5ljfZg0uFRFlfQaCy9tZ4YMAag9WAZmlVpe1iZrkIMMSMHD3w==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ==", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true, + "peer": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", + "dev": true + }, + "lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.pickby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", + "dev": true, + "peer": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true + }, + "lodash.zip": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", + "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "dev": true + }, + "loglevel-plugin-prefix": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", + "dev": true + }, + "loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dev": true, + "requires": { + "es5-ext": "~0.10.2" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "dev": true + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "peer": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + } + } + }, + "monaco-editor": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.20.0.tgz", + "integrity": "sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha512-7ZxrUybYv9NonoXgwoOqtStIu18D1c3eFZj27hqgf5kBrBF8Q+tE8V0MW8dKM5QLkQPh1JhhbKgHLY9kifov4Q==", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "peer": true + }, + "nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "nise": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", + "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0", + "@sinonjs/fake-timers": "^6.0.0", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "peer": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "peer": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "peer": true + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true + }, + "p-iteration": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", + "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + } + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + } + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + } + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true, + "peer": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "pubsub-js": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/pubsub-js/-/pubsub-js-1.9.4.tgz", + "integrity": "sha512-hJYpaDvPH4w8ZX/0Fdf9ma1AwRgU353GfbaVfPjfJQf1KxZ2iHaHl3fAUw1qlJIR5dr4F3RzjGaWohYUEyoh7A==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "puppeteer-core": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", + "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", + "dev": true, + "requires": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.981744", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.5.0" + }, + "dependencies": { + "devtools-protocol": { + "version": "0.0.981744", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", + "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", + "dev": true + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + } + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "query-selector-shadow-dom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz", + "integrity": "sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + } + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-glob": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", + "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", + "dev": true, + "requires": { + "minimatch": "^5.1.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "dev": true + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "peer": true, + "requires": { + "minimatch": "3.0.4" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dev": true, + "requires": { + "rc": "1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "replacestream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", + "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.3", + "object-assign": "^4.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "requires": { + "lowercase-keys": "^2.0.0" + } + }, + "resq": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.2.tgz", + "integrity": "sha512-HmgVS3j+FLrEDBTDYysPdPVF9/hioDMJ/otOiQDKqk77YfZeeLOj0qi34yObumcud1gBpk+wpBTEg4kMicD++A==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1" + }, + "dependencies": { + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", + "dev": true + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "peer": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rgb2hex": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", + "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "peer": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", + "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "requires": { + "xmlchars": "^2.1.1" + } + }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, + "selenium-standalone": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-8.2.0.tgz", + "integrity": "sha512-gRFJm2A91sL0/4PavIsfTVNjyqNjk+zbdJg/zAYgTMjuoWJv+BlYJh+1UbEtyjt4YvZACYif1DFAzFjQapqiOA==", + "dev": true, + "requires": { + "commander": "^9.0.0", + "cross-spawn": "^7.0.3", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "got": "^11.8.2", + "is-port-reachable": "^3.0.0", + "lodash.mapvalues": "^4.6.0", + "lodash.merge": "^4.6.2", + "minimist": "^1.2.5", + "mkdirp": "^1.0.4", + "progress": "2.0.3", + "tar-stream": "2.2.0", + "which": "^2.0.2", + "yauzl": "^2.10.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "serialize-error": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", + "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "sigma": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sigma/-/sigma-1.2.1.tgz", + "integrity": "sha512-9Z0m1pssXv6sndPMvOzXnM1mVO73YCWDE6X5bKxJyG+9J0B9zJkgtgoBM7cnxEaJMzmrbxPceKTVpwF7cS/xqA==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "peer": true + }, + "sinon": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", + "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.1", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/samsam": "^5.3.1", + "diff": "^4.0.2", + "nise": "^4.0.4", + "supports-color": "^7.1.0" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true + }, + "spdx-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", + "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", + "dev": true, + "requires": { + "array-find-index": "^1.0.2", + "spdx-expression-parse": "^3.0.0", + "spdx-ranges": "^2.0.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "spdx-ranges": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", + "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", + "dev": true + }, + "spdx-satisfies": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz", + "integrity": "sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==", + "dev": true, + "requires": { + "spdx-compare": "^1.0.0", + "spdx-expression-parse": "^3.0.0", + "spdx-ranges": "^2.0.0" + } + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==" + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + } + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "streamqueue": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/streamqueue/-/streamqueue-0.0.6.tgz", + "integrity": "sha512-l09LNfTUkmLMckTB1Mm8Um5GMS1uTZ/KTodg/SMf5Nx758IOsmaqIQ/AJumAnNMkDgZBG39btq3LVkN90knq8w==", + "dev": true, + "requires": { + "readable-stream": "^1.0.26-2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + } + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "suffix": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", + "integrity": "sha512-j5uf6MJtMCfC4vBe5LFktSe4bGyNTBk7I2Kdri0jeLrcv5B9pWfxVa5JQpoxgtR8vaVB7bVxsWgnfQbX5wkhAA==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "textextensions": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", + "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "dev": true + }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "peer": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "requires": { + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "requires": { + "punycode": "^2.1.0" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true + }, + "ua-parser-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", + "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", + "dev": true + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true + }, + "undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "dependencies": { + "fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", + "dev": true + } + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "dev": true + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "requires": { + "qs": "^6.4.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-resolve-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-resolve-browser/-/url-resolve-browser-1.2.0.tgz", + "integrity": "sha512-L9PBPnlKNDFzt9ElK4br8I8Tufdm1xgv1GhMeiP7ZC87x0b7mr+4vSh13kmPq5km80JKX+UD2BeEFTCrFZ6xDA==", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + } + } + }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "dependencies": { + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true + } + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "requires": { + "source-map": "^0.5.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "peer": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webdriver": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.25.0.tgz", + "integrity": "sha512-fYsxVMHpYAXecJP1m+fqC3BSKrWS3fcCiI120NRnZrZ52vcodpiJSuOAedKIXegQZlzl77U4VWeSHiY1f6Iseg==", + "dev": true, + "requires": { + "@types/node": "^18.0.0", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/protocols": "7.22.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "got": "^11.0.2", + "ky": "0.30.0", + "lodash.merge": "^4.6.1" + } + }, + "webdriverio": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.25.0.tgz", + "integrity": "sha512-7s7PSeGpcUkZq3UTjdG8etbblAerp27Jyf/VQ4Nr0bdZACDfsCVSyvQQuD0HH880VryV+7tjXK6cSV4eYzY64Q==", + "dev": true, + "requires": { + "@types/aria-query": "^5.0.0", + "@types/node": "^18.0.0", + "@wdio/config": "7.25.0", + "@wdio/logger": "7.19.0", + "@wdio/protocols": "7.22.0", + "@wdio/repl": "7.25.0", + "@wdio/types": "7.25.0", + "@wdio/utils": "7.25.0", + "archiver": "^5.0.0", + "aria-query": "^5.0.0", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "devtools": "7.25.0", + "devtools-protocol": "^0.0.1049481", + "fs-extra": "^10.0.0", + "grapheme-splitter": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "lodash.isobject": "^3.0.2", + "lodash.isplainobject": "^4.0.6", + "lodash.zip": "^4.2.0", + "minimatch": "^5.0.0", + "puppeteer-core": "^13.1.3", + "query-selector-shadow-dom": "^1.0.0", + "resq": "^1.9.1", + "rgb2hex": "0.2.5", + "serialize-error": "^8.0.0", + "webdriver": "7.25.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, + "yarn-install": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", + "integrity": "sha512-VO1u181msinhPcGvQTVMnHVOae8zjX/NSksR17e6eXHRveDvHCF5mGjh9hkN8mzyfnCqcBe42LdTs7bScuTaeg==", + "dev": true, + "peer": true, + "requires": { + "cac": "^3.0.3", + "chalk": "^1.1.3", + "cross-spawn": "^4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "peer": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "peer": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "peer": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "peer": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "peer": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "peer": true + } + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + } + } +} diff --git a/package.json b/package.json index 3e1692de1f8..e2c9106415d 100644 --- a/package.json +++ b/package.json @@ -1,107 +1,107 @@ -{ - "name": "blockly", - "version": "8.0.5", - "description": "Blockly is a library for building visual programming editors.", - "keywords": [ - "blockly" - ], - "repository": { - "type": "git", - "url": "https://github.com/google/blockly.git" - }, - "bugs": { - "url": "https://github.com/google/blockly/issues" - }, - "homepage": "https://developers.google.com/blockly/", - "author": { - "name": "Neil Fraser" - }, - "scripts": { - "build": "gulp build", - "build-debug": "gulp build --verbose --debug", - "build-debug-log": "npm run build:debug > build-debug.log 2>&1 && tail -3 build-debug.log", - "build-strict": "gulp build --verbose --strict", - "build-strict-log": "npm run build:strict > build-debug.log 2>&1 && tail -3 build-debug.log", - "build:compiled": "gulp buildCompiled", - "build:compressed": "npm run build:compiled", - "build:deps": "gulp buildDeps", - "build:langfiles": "gulp buildLangfiles", - "build-ts": "gulp buildTs && gulp build --compileTs", - "bump": "npm --no-git-tag-version version 4.$(date +'%Y%m%d').0", - "clean": "gulp clean", - "clean:build": "gulp cleanBuildDir", - "clean:release": "gulp cleanReleaseDir", - "checkin": "gulp checkin", - "checkin:built": "gulp checkinBuilt", - "checkin:typings": "gulp checkinTypings", - "deployDemos": "gulp deployDemos", - "deployDemos:beta": "gulp deployDemosBeta", - "format": "gulp clangFormat", - "format:sortrequires": "gulp sortRequires", - "generate:langfiles": "gulp generateLangfiles", - "license": "gulp checkLicenses", - "lint": "eslint .", - "package": "gulp package", - "prepareDemos": "gulp prepareDemos", - "publish": "gulp publish", - "publish:beta": "gulp publishBeta", - "recompile": "gulp recompile", - "release": "gulp gitCreateRC", - "start": "http-server ./ -o /tests/playground.html -c-1", - "test": "tests/run_all_tests.sh", - "test:generators": "tests/scripts/run_generators.sh", - "test:mocha:interactive": "http-server ./ -o /tests/mocha/index.html -c-1", - "test:compile:advanced": "gulp buildAdvancedCompilationTest --debug", - "typings": "gulp typings", - "updateGithubPages": "gulp gitUpdateGithubPages" - }, - "main": "./index.js", - "umd": "./blockly.min.js", - "unpkg": "./blockly.min.js", - "types": "./index.d.ts", - "browser": { - "./node.js": "./browser.js", - "./core.js": "./core-browser.js", - "./blockly-node.js": "./blockly.js" - }, - "license": "Apache-2.0", - "devDependencies": { - "@blockly/block-test": "^2.0.1", - "@blockly/dev-tools": "^3.0.1", - "@blockly/theme-modern": "^2.1.1", - "@hyperjump/json-schema": "^0.18.4", - "@wdio/selenium-standalone-service": "^7.10.1", - "chai": "^4.2.0", - "clang-format": "^1.6.0", - "closure-calculate-chunks": "^3.0.2", - "concurrently": "^7.0.0", - "eslint": "^8.4.1", - "eslint-config-google": "^0.14.0", - "google-closure-compiler": "^20220301.0.0", - "google-closure-deps": "^20220202.0.0", - "gulp": "^4.0.2", - "gulp-clang-format": "^1.0.27", - "gulp-concat": "^2.6.1", - "gulp-insert": "^0.5.0", - "gulp-rename": "^2.0.0", - "gulp-replace": "^1.0.0", - "gulp-series": "^1.0.2", - "gulp-shell": "^0.8.0", - "gulp-sourcemaps": "^3.0.0", - "gulp-umd": "^2.0.0", - "http-server": "^14.0.0", - "js-green-licenses": "^3.0.0", - "json5": "^2.2.0", - "mocha": "^9.1.1", - "readline-sync": "^1.4.10", - "rimraf": "^3.0.2", - "selenium-standalone": "^8.0.3", - "through2": "^4.0.2", - "typescript": "^4.3.2", - "webdriverio": "^7.0.3", - "yargs": "^17.2.1" - }, - "dependencies": { - "jsdom": "15.2.1" - } -} +{ + "name": "blockly", + "version": "8.0.5", + "description": "Blockly is a library for building visual programming editors.", + "keywords": [ + "blockly" + ], + "repository": { + "type": "git", + "url": "https://github.com/NTU-AI/ntu-blockly.git" + }, + "bugs": { + "url": "https://github.com/NTU-AI/ntu-blockly/issues" + }, + "homepage": "https://developers.google.com/blockly/", + "author": { + "name": "Neil Fraser" + }, + "scripts": { + "build": "gulp build", + "build-debug": "gulp build --verbose --debug", + "build-debug-log": "npm run build:debug > build-debug.log 2>&1 && tail -3 build-debug.log", + "build-strict": "gulp build --verbose --strict", + "build-strict-log": "npm run build:strict > build-debug.log 2>&1 && tail -3 build-debug.log", + "build:compiled": "gulp buildCompiled", + "build:compressed": "npm run build:compiled", + "build:deps": "gulp buildDeps", + "build:langfiles": "gulp buildLangfiles", + "build-ts": "gulp buildTs && gulp build --compileTs", + "bump": "npm --no-git-tag-version version 4.$(date +'%Y%m%d').0", + "clean": "gulp clean", + "clean:build": "gulp cleanBuildDir", + "clean:release": "gulp cleanReleaseDir", + "checkin": "gulp checkin", + "checkin:built": "gulp checkinBuilt", + "checkin:typings": "gulp checkinTypings", + "deployDemos": "gulp deployDemos", + "deployDemos:beta": "gulp deployDemosBeta", + "format": "gulp clangFormat", + "format:sortrequires": "gulp sortRequires", + "generate:langfiles": "gulp generateLangfiles", + "license": "gulp checkLicenses", + "lint": "eslint .", + "package": "gulp package", + "prepareDemos": "gulp prepareDemos", + "publish": "gulp publish", + "publish:beta": "gulp publishBeta", + "recompile": "gulp recompile", + "release": "gulp gitCreateRC", + "start": "http-server ./ -o /tests/playground.html -c-1", + "test": "tests/run_all_tests.sh", + "test:generators": "tests/scripts/run_generators.sh", + "test:mocha:interactive": "http-server ./ -o /tests/mocha/index.html -c-1", + "test:compile:advanced": "gulp buildAdvancedCompilationTest --debug", + "typings": "gulp typings", + "updateGithubPages": "gulp gitUpdateGithubPages" + }, + "main": "./index.js", + "umd": "./blockly.min.js", + "unpkg": "./blockly.min.js", + "types": "./index.d.ts", + "browser": { + "./node.js": "./browser.js", + "./core.js": "./core-browser.js", + "./blockly-node.js": "./blockly.js" + }, + "license": "Apache-2.0", + "devDependencies": { + "@blockly/block-test": "^2.0.1", + "@blockly/dev-tools": "^3.0.1", + "@blockly/theme-modern": "^2.1.1", + "@hyperjump/json-schema": "^0.18.4", + "@wdio/selenium-standalone-service": "^7.10.1", + "chai": "^4.2.0", + "clang-format": "^1.6.0", + "closure-calculate-chunks": "^3.0.2", + "concurrently": "^7.0.0", + "eslint": "^8.4.1", + "eslint-config-google": "^0.14.0", + "google-closure-compiler": "^20220301.0.0", + "google-closure-deps": "^20220202.0.0", + "gulp": "^4.0.2", + "gulp-clang-format": "^1.0.27", + "gulp-concat": "^2.6.1", + "gulp-insert": "^0.5.0", + "gulp-rename": "^2.0.0", + "gulp-replace": "^1.0.0", + "gulp-series": "^1.0.2", + "gulp-shell": "^0.8.0", + "gulp-sourcemaps": "^3.0.0", + "gulp-umd": "^2.0.0", + "http-server": "^14.0.0", + "js-green-licenses": "^3.0.0", + "json5": "^2.2.0", + "mocha": "^9.1.1", + "readline-sync": "^1.4.10", + "rimraf": "^3.0.2", + "selenium-standalone": "^8.0.3", + "through2": "^4.0.2", + "typescript": "^4.3.2", + "webdriverio": "^7.0.3", + "yargs": "^17.2.1" + }, + "dependencies": { + "jsdom": "15.2.1" + } +} diff --git a/php_compressed.js b/php_compressed.js index 38c878cec4c..ee545b12159 100644 --- a/php_compressed.js +++ b/php_compressed.js @@ -1,111 +1,111 @@ -// Do not edit this file; automatically generated. - -/* eslint-disable */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { // AMD - define(["./blockly_compressed.js"], factory); - } else if (typeof exports === 'object') { // Node.js - module.exports = factory(require("./blockly_compressed.js")); - } else { // Browser - var factoryExports = factory(root.Blockly); - root.Blockly.PHP = factoryExports; - } -}(this, function(__parent__) { -var $=__parent__.__namespace__; -var module$contents$Blockly$PHP_PHP=new $.module$exports$Blockly$Generator.Generator("PHP");module$contents$Blockly$PHP_PHP.addReservedWords("__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,clone,const,continue,declare,default,die,do,echo,else,elseif,empty,enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,final,for,foreach,function,global,goto,if,implements,include,include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,print,private,protected,public,require,require_once,return,static,switch,throw,trait,try,unset,use,var,while,xor,PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,PHP_SYSCONFDIR,PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,PHP_CONFIG_FILE_SCAN_DIR,PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,E_NOTICE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE,E_DEPRECATED,E_USER_DEPRECATED,E_ALL,E_STRICT,__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,__FILE__,__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__"); -module$contents$Blockly$PHP_PHP.ORDER_ATOMIC=0;module$contents$Blockly$PHP_PHP.ORDER_CLONE=1;module$contents$Blockly$PHP_PHP.ORDER_NEW=1;module$contents$Blockly$PHP_PHP.ORDER_MEMBER=2.1;module$contents$Blockly$PHP_PHP.ORDER_FUNCTION_CALL=2.2;module$contents$Blockly$PHP_PHP.ORDER_POWER=3;module$contents$Blockly$PHP_PHP.ORDER_INCREMENT=4;module$contents$Blockly$PHP_PHP.ORDER_DECREMENT=4;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_NOT=4;module$contents$Blockly$PHP_PHP.ORDER_CAST=4; -module$contents$Blockly$PHP_PHP.ORDER_SUPPRESS_ERROR=4;module$contents$Blockly$PHP_PHP.ORDER_INSTANCEOF=5;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT=6;module$contents$Blockly$PHP_PHP.ORDER_UNARY_PLUS=7.1;module$contents$Blockly$PHP_PHP.ORDER_UNARY_NEGATION=7.2;module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION=8.1;module$contents$Blockly$PHP_PHP.ORDER_DIVISION=8.2;module$contents$Blockly$PHP_PHP.ORDER_MODULUS=8.3;module$contents$Blockly$PHP_PHP.ORDER_ADDITION=9.1; -module$contents$Blockly$PHP_PHP.ORDER_SUBTRACTION=9.2;module$contents$Blockly$PHP_PHP.ORDER_STRING_CONCAT=9.3;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_SHIFT=10;module$contents$Blockly$PHP_PHP.ORDER_RELATIONAL=11;module$contents$Blockly$PHP_PHP.ORDER_EQUALITY=12;module$contents$Blockly$PHP_PHP.ORDER_REFERENCE=13;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_AND=13;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_XOR=14;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_OR=15; -module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND=16;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR=17;module$contents$Blockly$PHP_PHP.ORDER_IF_NULL=18;module$contents$Blockly$PHP_PHP.ORDER_CONDITIONAL=19;module$contents$Blockly$PHP_PHP.ORDER_ASSIGNMENT=20;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND_WEAK=21;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_XOR=22;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR_WEAK=23;module$contents$Blockly$PHP_PHP.ORDER_NONE=99; -module$contents$Blockly$PHP_PHP.ORDER_OVERRIDES=[[module$contents$Blockly$PHP_PHP.ORDER_MEMBER,module$contents$Blockly$PHP_PHP.ORDER_FUNCTION_CALL],[module$contents$Blockly$PHP_PHP.ORDER_MEMBER,module$contents$Blockly$PHP_PHP.ORDER_MEMBER],[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT],[module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION,module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION],[module$contents$Blockly$PHP_PHP.ORDER_ADDITION,module$contents$Blockly$PHP_PHP.ORDER_ADDITION], -[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND],[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR]];module$contents$Blockly$PHP_PHP.isInitialized=!1; -module$contents$Blockly$PHP_PHP.init=function(a){Object.getPrototypeOf(this).init.call(this);this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$exports$Blockly$Names.Names(this.RESERVED_WORDS_,"$");this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);this.isInitialized=!0}; -module$contents$Blockly$PHP_PHP.finish=function(a){var b=(0,$.module$exports$Blockly$utils$object.values)(this.definitions_);a=Object.getPrototypeOf(this).finish.call(this,a);this.isInitialized=!1;this.nameDB_.reset();return b.join("\n\n")+"\n\n\n"+a};module$contents$Blockly$PHP_PHP.scrubNakedValue=function(a){return a+";\n"};module$contents$Blockly$PHP_PHP.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"}; -module$contents$Blockly$PHP_PHP.multiline_quote_=function(a){return a.split(/\n/g).map(this.quote_).join(' . "\\n" .\n')}; -module$contents$Blockly$PHP_PHP.scrub_=function(a,b,c){var d="";if(!a.outputConnection||!a.outputConnection.targetConnection){var e=a.getCommentText();e&&(e=(0,$.module$exports$Blockly$utils$string.wrap)(e,this.COMMENT_WRAP-3),d+=this.prefixLines(e,"// ")+"\n");for(var f=0;fc?h=g=this.ORDER_SUBTRACTION:d&&(h=g=this.ORDER_UNARY_NEGATION);a=this.valueToCode(a,b,g)||f;(0,$.module$exports$Blockly$utils$string.isNumber)(a)?(a=Number(a)+c,d&&(a=-a)):(0c&&(a=a+" - "+-c),d&&(a=c?"-("+a+")":"-"+a),h=Math.floor(h),e=Math.floor(e),h&&e>=h&& -(a="("+a+")"));return a};$.Blockly.PHP=module$contents$Blockly$PHP_PHP;var module$exports$Blockly$PHP$variables={};$.Blockly.PHP.variables_get=function(a){return[$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.variables_set=function(a){var b=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0";return $.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" = "+b+";\n"};var module$exports$Blockly$PHP$variablesDynamic={};$.Blockly.PHP.variables_get_dynamic=$.Blockly.PHP.variables_get;$.Blockly.PHP.variables_set_dynamic=$.Blockly.PHP.variables_set;var module$exports$Blockly$PHP$texts={};$.Blockly.PHP.text=function(a){return[$.Blockly.PHP.quote_(a.getFieldValue("TEXT")),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.text_multiline=function(a){a=$.Blockly.PHP.multiline_quote_(a.getFieldValue("TEXT"));var b=-1!==a.indexOf(".")?$.Blockly.PHP.ORDER_STRING_CONCAT:$.Blockly.PHP.ORDER_ATOMIC;return[a,b]}; -$.Blockly.PHP.text_join=function(a){if(0===a.itemCount_)return["''",$.Blockly.PHP.ORDER_ATOMIC];if(1===a.itemCount_)return[$.Blockly.PHP.valueToCode(a,"ADD0",$.Blockly.PHP.ORDER_NONE)||"''",$.Blockly.PHP.ORDER_NONE];if(2===a.itemCount_){var b=$.Blockly.PHP.valueToCode(a,"ADD0",$.Blockly.PHP.ORDER_STRING_CONCAT)||"''";a=$.Blockly.PHP.valueToCode(a,"ADD1",$.Blockly.PHP.ORDER_STRING_CONCAT)||"''";return[b+" . "+a,$.Blockly.PHP.ORDER_STRING_CONCAT]}b=Array(a.itemCount_);for(var c=0;c 0",$.Blockly.PHP.ORDER_RELATIONAL,$.Blockly.PHP.ORDER_RELATIONAL],NEGATIVE:[""," < 0",$.Blockly.PHP.ORDER_RELATIONAL,$.Blockly.PHP.ORDER_RELATIONAL],DIVISIBLE_BY:[null,null,$.Blockly.PHP.ORDER_MODULUS, -$.Blockly.PHP.ORDER_EQUALITY],PRIME:[null,null,$.Blockly.PHP.ORDER_NONE,$.Blockly.PHP.ORDER_FUNCTION_CALL]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value,f=b.next().value;b=b.next().value;f=$.Blockly.PHP.valueToCode(a,"NUMBER_TO_CHECK",f)||"0";if("PRIME"===c)a=$.Blockly.PHP.provideFunction_("math_isPrime","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if ($n == 2 || $n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for ($x = 6; $x <= sqrt($n) + 1; $x += 6) {\n if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) {\n return false;\n }\n }\n return true;\n}\n")+ -"("+f+")";else if("DIVISIBLE_BY"===c){a=$.Blockly.PHP.valueToCode(a,"DIVISOR",$.Blockly.PHP.ORDER_MODULUS)||"0";if("0"===a)return["false",$.Blockly.PHP.ORDER_ATOMIC];a=f+" % "+a+" == 0"}else a=d+f+e;return[a,b]};$.Blockly.PHP.math_change=function(a){var b=$.Blockly.PHP.valueToCode(a,"DELTA",$.Blockly.PHP.ORDER_ADDITION)||"0";return $.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" += "+b+";\n"};$.Blockly.PHP.math_round=$.Blockly.PHP.math_single; -$.Blockly.PHP.math_trig=$.Blockly.PHP.math_single; -$.Blockly.PHP.math_on_list=function(a){var b=a.getFieldValue("OP");switch(b){case "SUM":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="array_sum("+a+")";break;case "MIN":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="min("+a+")";break;case "MAX":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="max("+a+")";break;case "AVERAGE":b=$.Blockly.PHP.provideFunction_("math_mean","\nfunction "+ -$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($myList) {\n return array_sum($myList) / count($myList);\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"array()";a=b+"("+a+")";break;case "MEDIAN":b=$.Blockly.PHP.provideFunction_("math_median","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($arr) {\n sort($arr,SORT_NUMERIC);\n return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] :\n ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2;\n}\n"); -a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MODE":b=$.Blockly.PHP.provideFunction_("math_modes","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($values) {\n if (empty($values)) return array();\n $counts = array_count_values($values);\n arsort($counts); // Sort counts in descending order\n $modes = array_keys($counts, current($counts), true);\n return $modes;\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]"; -a=b+"("+a+")";break;case "STD_DEV":b=$.Blockly.PHP.provideFunction_("math_standard_deviation","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($numbers) {\n $n = count($numbers);\n if (!$n) return null;\n $mean = array_sum($numbers) / count($numbers);\n foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2);\n return sqrt(array_sum($devs) / (count($devs) - 1));\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "RANDOM":b= -$.Blockly.PHP.provideFunction_("math_random_list","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($list) {\n $x = rand(0, count($list)-1);\n return $list[$x];\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;default:throw Error("Unknown operator: "+b);}return[a,$.Blockly.PHP.ORDER_FUNCTION_CALL]}; -$.Blockly.PHP.math_modulo=function(a){var b=$.Blockly.PHP.valueToCode(a,"DIVIDEND",$.Blockly.PHP.ORDER_MODULUS)||"0";a=$.Blockly.PHP.valueToCode(a,"DIVISOR",$.Blockly.PHP.ORDER_MODULUS)||"0";return[b+" % "+a,$.Blockly.PHP.ORDER_MODULUS]}; -$.Blockly.PHP.math_constrain=function(a){var b=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"0",c=$.Blockly.PHP.valueToCode(a,"LOW",$.Blockly.PHP.ORDER_NONE)||"0";a=$.Blockly.PHP.valueToCode(a,"HIGH",$.Blockly.PHP.ORDER_NONE)||"Infinity";return["min(max("+b+", "+c+"), "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; -$.Blockly.PHP.math_random_int=function(a){var b=$.Blockly.PHP.valueToCode(a,"FROM",$.Blockly.PHP.ORDER_NONE)||"0";a=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_NONE)||"0";return[$.Blockly.PHP.provideFunction_("math_random_int","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($a, $b) {\n if ($a > $b) {\n return rand($b, $a);\n }\n return rand($a, $b);\n}\n")+"("+b+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; -$.Blockly.PHP.math_random_float=function(a){return["(float)rand()/(float)getrandmax()",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.math_atan2=function(a){var b=$.Blockly.PHP.valueToCode(a,"X",$.Blockly.PHP.ORDER_NONE)||"0";return["atan2("+($.Blockly.PHP.valueToCode(a,"Y",$.Blockly.PHP.ORDER_NONE)||"0")+", "+b+") / pi() * 180",$.Blockly.PHP.ORDER_DIVISION]};var module$exports$Blockly$PHP$loops={}; -$.Blockly.PHP.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(Number(a.getFieldValue("TIMES"))):$.Blockly.PHP.valueToCode(a,"TIMES",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0";var c=$.Blockly.PHP.statementToCode(a,"DO");c=$.Blockly.PHP.addLoopTrap(c,a);a="";var d=$.Blockly.PHP.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE),e=b;b.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(b)||(e=$.Blockly.PHP.nameDB_.getDistinctName("repeat_end",$.module$exports$Blockly$Names.NameType.VARIABLE), -a+=e+" = "+b+";\n");return a+("for ("+d+" = 0; "+d+" < "+e+"; "+d+"++) {\n"+c+"}\n")};$.Blockly.PHP.controls_repeat=$.Blockly.PHP.controls_repeat_ext;$.Blockly.PHP.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.PHP.valueToCode(a,"BOOL",b?$.Blockly.PHP.ORDER_LOGICAL_NOT:$.Blockly.PHP.ORDER_NONE)||"false",d=$.Blockly.PHP.statementToCode(a,"DO");d=$.Blockly.PHP.addLoopTrap(d,a);b&&(c="!"+c);return"while ("+c+") {\n"+d+"}\n"}; -$.Blockly.PHP.controls_for=function(a){var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.PHP.valueToCode(a,"FROM",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0",d=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0",e=$.Blockly.PHP.valueToCode(a,"BY",$.Blockly.PHP.ORDER_ASSIGNMENT)||"1",f=$.Blockly.PHP.statementToCode(a,"DO");f=$.Blockly.PHP.addLoopTrap(f,a);if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&&(0,$.module$exports$Blockly$utils$string.isNumber)(d)&& -(0,$.module$exports$Blockly$utils$string.isNumber)(e)){var g=Number(c)<=Number(d);a="for ("+b+" = "+c+"; "+b+(g?" <= ":" >= ")+d+"; "+b;b=Math.abs(Number(e));a=(1===b?a+(g?"++":"--"):a+((g?" += ":" -= ")+b))+(") {\n"+f+"}\n")}else a="",g=c,c.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(c)||(g=$.Blockly.PHP.nameDB_.getDistinctName(b+"_start",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=g+" = "+c+";\n"),c=d,d.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(d)|| -(c=$.Blockly.PHP.nameDB_.getDistinctName(b+"_end",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=c+" = "+d+";\n"),d=$.Blockly.PHP.nameDB_.getDistinctName(b+"_inc",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=d+" = ",a=(0,$.module$exports$Blockly$utils$string.isNumber)(e)?a+(Math.abs(e)+";\n"):a+("abs("+e+");\n"),a=a+("if ("+g+" > "+c+") {\n")+($.Blockly.PHP.INDENT+d+" = -"+d+";\n"),a+="}\n",a+="for ("+b+" = "+g+"; "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+"; "+b+" += "+d+") {\n"+f+ -"}\n";return a};$.Blockly.PHP.controls_forEach=function(a){var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_ASSIGNMENT)||"[]",d=$.Blockly.PHP.statementToCode(a,"DO");d=$.Blockly.PHP.addLoopTrap(d,a);return"foreach ("+c+" as "+b+") {\n"+d+"}\n"}; -$.Blockly.PHP.controls_flow_statements=function(a){var b="";$.Blockly.PHP.STATEMENT_PREFIX&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,a));$.Blockly.PHP.STATEMENT_SUFFIX&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a));if($.Blockly.PHP.STATEMENT_PREFIX){var c=a.getSurroundLoop();c&&!c.suppressPrefixSuffix&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,c))}switch(a.getFieldValue("FLOW")){case "BREAK":return b+"break;\n";case "CONTINUE":return b+"continue;\n"}throw Error("Unknown flow statement."); -};var module$exports$Blockly$PHP$logic={}; -$.Blockly.PHP.controls_if=function(a){var b=0,c="";$.Blockly.PHP.STATEMENT_PREFIX&&(c+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,a));do{var d=$.Blockly.PHP.valueToCode(a,"IF"+b,$.Blockly.PHP.ORDER_NONE)||"false";var e=$.Blockly.PHP.statementToCode(a,"DO"+b);$.Blockly.PHP.STATEMENT_SUFFIX&&(e=$.Blockly.PHP.prefixLines($.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a),$.Blockly.PHP.INDENT)+e);c+=(0",GTE:">="}[a.getFieldValue("OP")],c="=="===b||"!="===b?$.Blockly.PHP.ORDER_EQUALITY:$.Blockly.PHP.ORDER_RELATIONAL,d=$.Blockly.PHP.valueToCode(a,"A",c)||"0";a=$.Blockly.PHP.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; -$.Blockly.PHP.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"&&":"||",c="&&"===b?$.Blockly.PHP.ORDER_LOGICAL_AND:$.Blockly.PHP.ORDER_LOGICAL_OR,d=$.Blockly.PHP.valueToCode(a,"A",c);a=$.Blockly.PHP.valueToCode(a,"B",c);if(d||a){var e="&&"===b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]};$.Blockly.PHP.logic_negate=function(a){var b=$.Blockly.PHP.ORDER_LOGICAL_NOT;return["!"+($.Blockly.PHP.valueToCode(a,"BOOL",b)||"true"),b]}; -$.Blockly.PHP.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"true":"false",$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.logic_null=function(a){return["null",$.Blockly.PHP.ORDER_ATOMIC]}; -$.Blockly.PHP.logic_ternary=function(a){var b=$.Blockly.PHP.valueToCode(a,"IF",$.Blockly.PHP.ORDER_CONDITIONAL)||"false",c=$.Blockly.PHP.valueToCode(a,"THEN",$.Blockly.PHP.ORDER_CONDITIONAL)||"null";a=$.Blockly.PHP.valueToCode(a,"ELSE",$.Blockly.PHP.ORDER_CONDITIONAL)||"null";return[b+" ? "+c+" : "+a,$.Blockly.PHP.ORDER_CONDITIONAL]};var module$exports$Blockly$PHP$lists={};$.Blockly.PHP.lists_create_empty=function(a){return["array()",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c 'strnatcasecmp',\n 'TEXT' => 'strcmp',\n 'IGNORE_CASE' => 'strcasecmp'\n );\n $sortCmp = $sortCmpFuncs[$type];\n $list2 = $list;\n usort($list2, $sortCmp);\n if ($direction == -1) {\n $list2 = array_reverse($list2);\n }\n return $list2;\n}\n")+"("+ -b+', "'+a+'", '+c+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.lists_split=function(a){var b=$.Blockly.PHP.valueToCode(a,"INPUT",$.Blockly.PHP.ORDER_NONE),c=$.Blockly.PHP.valueToCode(a,"DELIM",$.Blockly.PHP.ORDER_NONE)||"''";a=a.getFieldValue("MODE");if("SPLIT"===a)b||(b="''"),a="explode";else if("JOIN"===a)b||(b="array()"),a="implode";else throw Error("Unknown mode: "+a);return[a+"("+c+", "+b+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; -$.Blockly.PHP.lists_reverse=function(a){return["array_reverse("+($.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$colour={};$.Blockly.PHP.colour_picker=function(a){return[$.Blockly.PHP.quote_(a.getFieldValue("COLOUR")),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.colour_random=function(a){return[$.Blockly.PHP.provideFunction_("colour_random","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"() {\n return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);\n}\n")+"()",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; -$.Blockly.PHP.colour_rgb=function(a){var b=$.Blockly.PHP.valueToCode(a,"RED",$.Blockly.PHP.ORDER_NONE)||0,c=$.Blockly.PHP.valueToCode(a,"GREEN",$.Blockly.PHP.ORDER_NONE)||0;a=$.Blockly.PHP.valueToCode(a,"BLUE",$.Blockly.PHP.ORDER_NONE)||0;return[$.Blockly.PHP.provideFunction_("colour_rgb","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($r, $g, $b) {\n $r = round(max(min($r, 100), 0) * 2.55);\n $g = round(max(min($g, 100), 0) * 2.55);\n $b = round(max(min($b, 100), 0) * 2.55);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n")+ -"("+b+", "+c+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; -$.Blockly.PHP.colour_blend=function(a){var b=$.Blockly.PHP.valueToCode(a,"COLOUR1",$.Blockly.PHP.ORDER_NONE)||"'#000000'",c=$.Blockly.PHP.valueToCode(a,"COLOUR2",$.Blockly.PHP.ORDER_NONE)||"'#000000'";a=$.Blockly.PHP.valueToCode(a,"RATIO",$.Blockly.PHP.ORDER_NONE)||.5;return[$.Blockly.PHP.provideFunction_("colour_blend","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($c1, $c2, $ratio) {\n $ratio = max(min($ratio, 1), 0);\n $r1 = hexdec(substr($c1, 1, 2));\n $g1 = hexdec(substr($c1, 3, 2));\n $b1 = hexdec(substr($c1, 5, 2));\n $r2 = hexdec(substr($c2, 1, 2));\n $g2 = hexdec(substr($c2, 3, 2));\n $b2 = hexdec(substr($c2, 5, 2));\n $r = round($r1 * (1 - $ratio) + $r2 * $ratio);\n $g = round($g1 * (1 - $ratio) + $g2 * $ratio);\n $b = round($b1 * (1 - $ratio) + $b2 * $ratio);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n")+"("+ -b+", "+c+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$all={}; -$.Blockly.PHP.__namespace__=$; -return $.Blockly.PHP; -})); - - -//# sourceMappingURL=php_compressed.js.map +// Do not edit this file; automatically generated. + +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define(["./blockly_compressed.js"], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(require("./blockly_compressed.js")); + } else { // Browser + var factoryExports = factory(root.Blockly); + root.Blockly.PHP = factoryExports; + } +}(this, function(__parent__) { +var $=__parent__.__namespace__; +var module$contents$Blockly$PHP_PHP=new $.module$exports$Blockly$Generator.Generator("PHP");module$contents$Blockly$PHP_PHP.addReservedWords("__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,clone,const,continue,declare,default,die,do,echo,else,elseif,empty,enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,final,for,foreach,function,global,goto,if,implements,include,include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,print,private,protected,public,require,require_once,return,static,switch,throw,trait,try,unset,use,var,while,xor,PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,PHP_SYSCONFDIR,PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,PHP_CONFIG_FILE_SCAN_DIR,PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,E_NOTICE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE,E_DEPRECATED,E_USER_DEPRECATED,E_ALL,E_STRICT,__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,__FILE__,__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__"); +module$contents$Blockly$PHP_PHP.ORDER_ATOMIC=0;module$contents$Blockly$PHP_PHP.ORDER_CLONE=1;module$contents$Blockly$PHP_PHP.ORDER_NEW=1;module$contents$Blockly$PHP_PHP.ORDER_MEMBER=2.1;module$contents$Blockly$PHP_PHP.ORDER_FUNCTION_CALL=2.2;module$contents$Blockly$PHP_PHP.ORDER_POWER=3;module$contents$Blockly$PHP_PHP.ORDER_INCREMENT=4;module$contents$Blockly$PHP_PHP.ORDER_DECREMENT=4;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_NOT=4;module$contents$Blockly$PHP_PHP.ORDER_CAST=4; +module$contents$Blockly$PHP_PHP.ORDER_SUPPRESS_ERROR=4;module$contents$Blockly$PHP_PHP.ORDER_INSTANCEOF=5;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT=6;module$contents$Blockly$PHP_PHP.ORDER_UNARY_PLUS=7.1;module$contents$Blockly$PHP_PHP.ORDER_UNARY_NEGATION=7.2;module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION=8.1;module$contents$Blockly$PHP_PHP.ORDER_DIVISION=8.2;module$contents$Blockly$PHP_PHP.ORDER_MODULUS=8.3;module$contents$Blockly$PHP_PHP.ORDER_ADDITION=9.1; +module$contents$Blockly$PHP_PHP.ORDER_SUBTRACTION=9.2;module$contents$Blockly$PHP_PHP.ORDER_STRING_CONCAT=9.3;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_SHIFT=10;module$contents$Blockly$PHP_PHP.ORDER_RELATIONAL=11;module$contents$Blockly$PHP_PHP.ORDER_EQUALITY=12;module$contents$Blockly$PHP_PHP.ORDER_REFERENCE=13;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_AND=13;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_XOR=14;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_OR=15; +module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND=16;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR=17;module$contents$Blockly$PHP_PHP.ORDER_IF_NULL=18;module$contents$Blockly$PHP_PHP.ORDER_CONDITIONAL=19;module$contents$Blockly$PHP_PHP.ORDER_ASSIGNMENT=20;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND_WEAK=21;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_XOR=22;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR_WEAK=23;module$contents$Blockly$PHP_PHP.ORDER_NONE=99; +module$contents$Blockly$PHP_PHP.ORDER_OVERRIDES=[[module$contents$Blockly$PHP_PHP.ORDER_MEMBER,module$contents$Blockly$PHP_PHP.ORDER_FUNCTION_CALL],[module$contents$Blockly$PHP_PHP.ORDER_MEMBER,module$contents$Blockly$PHP_PHP.ORDER_MEMBER],[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT],[module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION,module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION],[module$contents$Blockly$PHP_PHP.ORDER_ADDITION,module$contents$Blockly$PHP_PHP.ORDER_ADDITION], +[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND],[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR]];module$contents$Blockly$PHP_PHP.isInitialized=!1; +module$contents$Blockly$PHP_PHP.init=function(a){Object.getPrototypeOf(this).init.call(this);this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$exports$Blockly$Names.Names(this.RESERVED_WORDS_,"$");this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);this.isInitialized=!0}; +module$contents$Blockly$PHP_PHP.finish=function(a){var b=(0,$.module$exports$Blockly$utils$object.values)(this.definitions_);a=Object.getPrototypeOf(this).finish.call(this,a);this.isInitialized=!1;this.nameDB_.reset();return b.join("\n\n")+"\n\n\n"+a};module$contents$Blockly$PHP_PHP.scrubNakedValue=function(a){return a+";\n"};module$contents$Blockly$PHP_PHP.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"}; +module$contents$Blockly$PHP_PHP.multiline_quote_=function(a){return a.split(/\n/g).map(this.quote_).join(' . "\\n" .\n')}; +module$contents$Blockly$PHP_PHP.scrub_=function(a,b,c){var d="";if(!a.outputConnection||!a.outputConnection.targetConnection){var e=a.getCommentText();e&&(e=(0,$.module$exports$Blockly$utils$string.wrap)(e,this.COMMENT_WRAP-3),d+=this.prefixLines(e,"// ")+"\n");for(var f=0;fc?h=g=this.ORDER_SUBTRACTION:d&&(h=g=this.ORDER_UNARY_NEGATION);a=this.valueToCode(a,b,g)||f;(0,$.module$exports$Blockly$utils$string.isNumber)(a)?(a=Number(a)+c,d&&(a=-a)):(0c&&(a=a+" - "+-c),d&&(a=c?"-("+a+")":"-"+a),h=Math.floor(h),e=Math.floor(e),h&&e>=h&& +(a="("+a+")"));return a};$.Blockly.PHP=module$contents$Blockly$PHP_PHP;var module$exports$Blockly$PHP$variables={};$.Blockly.PHP.variables_get=function(a){return[$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.variables_set=function(a){var b=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0";return $.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" = "+b+";\n"};var module$exports$Blockly$PHP$variablesDynamic={};$.Blockly.PHP.variables_get_dynamic=$.Blockly.PHP.variables_get;$.Blockly.PHP.variables_set_dynamic=$.Blockly.PHP.variables_set;var module$exports$Blockly$PHP$texts={};$.Blockly.PHP.text=function(a){return[$.Blockly.PHP.quote_(a.getFieldValue("TEXT")),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.text_multiline=function(a){a=$.Blockly.PHP.multiline_quote_(a.getFieldValue("TEXT"));var b=-1!==a.indexOf(".")?$.Blockly.PHP.ORDER_STRING_CONCAT:$.Blockly.PHP.ORDER_ATOMIC;return[a,b]}; +$.Blockly.PHP.text_join=function(a){if(0===a.itemCount_)return["''",$.Blockly.PHP.ORDER_ATOMIC];if(1===a.itemCount_)return[$.Blockly.PHP.valueToCode(a,"ADD0",$.Blockly.PHP.ORDER_NONE)||"''",$.Blockly.PHP.ORDER_NONE];if(2===a.itemCount_){var b=$.Blockly.PHP.valueToCode(a,"ADD0",$.Blockly.PHP.ORDER_STRING_CONCAT)||"''";a=$.Blockly.PHP.valueToCode(a,"ADD1",$.Blockly.PHP.ORDER_STRING_CONCAT)||"''";return[b+" . "+a,$.Blockly.PHP.ORDER_STRING_CONCAT]}b=Array(a.itemCount_);for(var c=0;c 0",$.Blockly.PHP.ORDER_RELATIONAL,$.Blockly.PHP.ORDER_RELATIONAL],NEGATIVE:[""," < 0",$.Blockly.PHP.ORDER_RELATIONAL,$.Blockly.PHP.ORDER_RELATIONAL],DIVISIBLE_BY:[null,null,$.Blockly.PHP.ORDER_MODULUS, +$.Blockly.PHP.ORDER_EQUALITY],PRIME:[null,null,$.Blockly.PHP.ORDER_NONE,$.Blockly.PHP.ORDER_FUNCTION_CALL]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value,f=b.next().value;b=b.next().value;f=$.Blockly.PHP.valueToCode(a,"NUMBER_TO_CHECK",f)||"0";if("PRIME"===c)a=$.Blockly.PHP.provideFunction_("math_isPrime","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if ($n == 2 || $n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for ($x = 6; $x <= sqrt($n) + 1; $x += 6) {\n if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) {\n return false;\n }\n }\n return true;\n}\n")+ +"("+f+")";else if("DIVISIBLE_BY"===c){a=$.Blockly.PHP.valueToCode(a,"DIVISOR",$.Blockly.PHP.ORDER_MODULUS)||"0";if("0"===a)return["false",$.Blockly.PHP.ORDER_ATOMIC];a=f+" % "+a+" == 0"}else a=d+f+e;return[a,b]};$.Blockly.PHP.math_change=function(a){var b=$.Blockly.PHP.valueToCode(a,"DELTA",$.Blockly.PHP.ORDER_ADDITION)||"0";return $.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" += "+b+";\n"};$.Blockly.PHP.math_round=$.Blockly.PHP.math_single; +$.Blockly.PHP.math_trig=$.Blockly.PHP.math_single; +$.Blockly.PHP.math_on_list=function(a){var b=a.getFieldValue("OP");switch(b){case "SUM":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="array_sum("+a+")";break;case "MIN":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="min("+a+")";break;case "MAX":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="max("+a+")";break;case "AVERAGE":b=$.Blockly.PHP.provideFunction_("math_mean","\nfunction "+ +$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($myList) {\n return array_sum($myList) / count($myList);\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"array()";a=b+"("+a+")";break;case "MEDIAN":b=$.Blockly.PHP.provideFunction_("math_median","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($arr) {\n sort($arr,SORT_NUMERIC);\n return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] :\n ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2;\n}\n"); +a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MODE":b=$.Blockly.PHP.provideFunction_("math_modes","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($values) {\n if (empty($values)) return array();\n $counts = array_count_values($values);\n arsort($counts); // Sort counts in descending order\n $modes = array_keys($counts, current($counts), true);\n return $modes;\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]"; +a=b+"("+a+")";break;case "STD_DEV":b=$.Blockly.PHP.provideFunction_("math_standard_deviation","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($numbers) {\n $n = count($numbers);\n if (!$n) return null;\n $mean = array_sum($numbers) / count($numbers);\n foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2);\n return sqrt(array_sum($devs) / (count($devs) - 1));\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "RANDOM":b= +$.Blockly.PHP.provideFunction_("math_random_list","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($list) {\n $x = rand(0, count($list)-1);\n return $list[$x];\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;default:throw Error("Unknown operator: "+b);}return[a,$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.math_modulo=function(a){var b=$.Blockly.PHP.valueToCode(a,"DIVIDEND",$.Blockly.PHP.ORDER_MODULUS)||"0";a=$.Blockly.PHP.valueToCode(a,"DIVISOR",$.Blockly.PHP.ORDER_MODULUS)||"0";return[b+" % "+a,$.Blockly.PHP.ORDER_MODULUS]}; +$.Blockly.PHP.math_constrain=function(a){var b=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"0",c=$.Blockly.PHP.valueToCode(a,"LOW",$.Blockly.PHP.ORDER_NONE)||"0";a=$.Blockly.PHP.valueToCode(a,"HIGH",$.Blockly.PHP.ORDER_NONE)||"Infinity";return["min(max("+b+", "+c+"), "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.math_random_int=function(a){var b=$.Blockly.PHP.valueToCode(a,"FROM",$.Blockly.PHP.ORDER_NONE)||"0";a=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_NONE)||"0";return[$.Blockly.PHP.provideFunction_("math_random_int","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($a, $b) {\n if ($a > $b) {\n return rand($b, $a);\n }\n return rand($a, $b);\n}\n")+"("+b+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.math_random_float=function(a){return["(float)rand()/(float)getrandmax()",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.math_atan2=function(a){var b=$.Blockly.PHP.valueToCode(a,"X",$.Blockly.PHP.ORDER_NONE)||"0";return["atan2("+($.Blockly.PHP.valueToCode(a,"Y",$.Blockly.PHP.ORDER_NONE)||"0")+", "+b+") / pi() * 180",$.Blockly.PHP.ORDER_DIVISION]};var module$exports$Blockly$PHP$loops={}; +$.Blockly.PHP.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(Number(a.getFieldValue("TIMES"))):$.Blockly.PHP.valueToCode(a,"TIMES",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0";var c=$.Blockly.PHP.statementToCode(a,"DO");c=$.Blockly.PHP.addLoopTrap(c,a);a="";var d=$.Blockly.PHP.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE),e=b;b.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(b)||(e=$.Blockly.PHP.nameDB_.getDistinctName("repeat_end",$.module$exports$Blockly$Names.NameType.VARIABLE), +a+=e+" = "+b+";\n");return a+("for ("+d+" = 0; "+d+" < "+e+"; "+d+"++) {\n"+c+"}\n")};$.Blockly.PHP.controls_repeat=$.Blockly.PHP.controls_repeat_ext;$.Blockly.PHP.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.PHP.valueToCode(a,"BOOL",b?$.Blockly.PHP.ORDER_LOGICAL_NOT:$.Blockly.PHP.ORDER_NONE)||"false",d=$.Blockly.PHP.statementToCode(a,"DO");d=$.Blockly.PHP.addLoopTrap(d,a);b&&(c="!"+c);return"while ("+c+") {\n"+d+"}\n"}; +$.Blockly.PHP.controls_for=function(a){var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.PHP.valueToCode(a,"FROM",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0",d=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0",e=$.Blockly.PHP.valueToCode(a,"BY",$.Blockly.PHP.ORDER_ASSIGNMENT)||"1",f=$.Blockly.PHP.statementToCode(a,"DO");f=$.Blockly.PHP.addLoopTrap(f,a);if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&&(0,$.module$exports$Blockly$utils$string.isNumber)(d)&& +(0,$.module$exports$Blockly$utils$string.isNumber)(e)){var g=Number(c)<=Number(d);a="for ("+b+" = "+c+"; "+b+(g?" <= ":" >= ")+d+"; "+b;b=Math.abs(Number(e));a=(1===b?a+(g?"++":"--"):a+((g?" += ":" -= ")+b))+(") {\n"+f+"}\n")}else a="",g=c,c.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(c)||(g=$.Blockly.PHP.nameDB_.getDistinctName(b+"_start",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=g+" = "+c+";\n"),c=d,d.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(d)|| +(c=$.Blockly.PHP.nameDB_.getDistinctName(b+"_end",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=c+" = "+d+";\n"),d=$.Blockly.PHP.nameDB_.getDistinctName(b+"_inc",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=d+" = ",a=(0,$.module$exports$Blockly$utils$string.isNumber)(e)?a+(Math.abs(e)+";\n"):a+("abs("+e+");\n"),a=a+("if ("+g+" > "+c+") {\n")+($.Blockly.PHP.INDENT+d+" = -"+d+";\n"),a+="}\n",a+="for ("+b+" = "+g+"; "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+"; "+b+" += "+d+") {\n"+f+ +"}\n";return a};$.Blockly.PHP.controls_forEach=function(a){var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_ASSIGNMENT)||"[]",d=$.Blockly.PHP.statementToCode(a,"DO");d=$.Blockly.PHP.addLoopTrap(d,a);return"foreach ("+c+" as "+b+") {\n"+d+"}\n"}; +$.Blockly.PHP.controls_flow_statements=function(a){var b="";$.Blockly.PHP.STATEMENT_PREFIX&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,a));$.Blockly.PHP.STATEMENT_SUFFIX&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a));if($.Blockly.PHP.STATEMENT_PREFIX){var c=a.getSurroundLoop();c&&!c.suppressPrefixSuffix&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,c))}switch(a.getFieldValue("FLOW")){case "BREAK":return b+"break;\n";case "CONTINUE":return b+"continue;\n"}throw Error("Unknown flow statement."); +};var module$exports$Blockly$PHP$logic={}; +$.Blockly.PHP.controls_if=function(a){var b=0,c="";$.Blockly.PHP.STATEMENT_PREFIX&&(c+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,a));do{var d=$.Blockly.PHP.valueToCode(a,"IF"+b,$.Blockly.PHP.ORDER_NONE)||"false";var e=$.Blockly.PHP.statementToCode(a,"DO"+b);$.Blockly.PHP.STATEMENT_SUFFIX&&(e=$.Blockly.PHP.prefixLines($.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a),$.Blockly.PHP.INDENT)+e);c+=(0",GTE:">="}[a.getFieldValue("OP")],c="=="===b||"!="===b?$.Blockly.PHP.ORDER_EQUALITY:$.Blockly.PHP.ORDER_RELATIONAL,d=$.Blockly.PHP.valueToCode(a,"A",c)||"0";a=$.Blockly.PHP.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; +$.Blockly.PHP.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"&&":"||",c="&&"===b?$.Blockly.PHP.ORDER_LOGICAL_AND:$.Blockly.PHP.ORDER_LOGICAL_OR,d=$.Blockly.PHP.valueToCode(a,"A",c);a=$.Blockly.PHP.valueToCode(a,"B",c);if(d||a){var e="&&"===b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]};$.Blockly.PHP.logic_negate=function(a){var b=$.Blockly.PHP.ORDER_LOGICAL_NOT;return["!"+($.Blockly.PHP.valueToCode(a,"BOOL",b)||"true"),b]}; +$.Blockly.PHP.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"true":"false",$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.logic_null=function(a){return["null",$.Blockly.PHP.ORDER_ATOMIC]}; +$.Blockly.PHP.logic_ternary=function(a){var b=$.Blockly.PHP.valueToCode(a,"IF",$.Blockly.PHP.ORDER_CONDITIONAL)||"false",c=$.Blockly.PHP.valueToCode(a,"THEN",$.Blockly.PHP.ORDER_CONDITIONAL)||"null";a=$.Blockly.PHP.valueToCode(a,"ELSE",$.Blockly.PHP.ORDER_CONDITIONAL)||"null";return[b+" ? "+c+" : "+a,$.Blockly.PHP.ORDER_CONDITIONAL]};var module$exports$Blockly$PHP$lists={};$.Blockly.PHP.lists_create_empty=function(a){return["array()",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c 'strnatcasecmp',\n 'TEXT' => 'strcmp',\n 'IGNORE_CASE' => 'strcasecmp'\n );\n $sortCmp = $sortCmpFuncs[$type];\n $list2 = $list;\n usort($list2, $sortCmp);\n if ($direction == -1) {\n $list2 = array_reverse($list2);\n }\n return $list2;\n}\n")+"("+ +b+', "'+a+'", '+c+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.lists_split=function(a){var b=$.Blockly.PHP.valueToCode(a,"INPUT",$.Blockly.PHP.ORDER_NONE),c=$.Blockly.PHP.valueToCode(a,"DELIM",$.Blockly.PHP.ORDER_NONE)||"''";a=a.getFieldValue("MODE");if("SPLIT"===a)b||(b="''"),a="explode";else if("JOIN"===a)b||(b="array()"),a="implode";else throw Error("Unknown mode: "+a);return[a+"("+c+", "+b+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.lists_reverse=function(a){return["array_reverse("+($.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$colour={};$.Blockly.PHP.colour_picker=function(a){return[$.Blockly.PHP.quote_(a.getFieldValue("COLOUR")),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.colour_random=function(a){return[$.Blockly.PHP.provideFunction_("colour_random","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"() {\n return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);\n}\n")+"()",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.colour_rgb=function(a){var b=$.Blockly.PHP.valueToCode(a,"RED",$.Blockly.PHP.ORDER_NONE)||0,c=$.Blockly.PHP.valueToCode(a,"GREEN",$.Blockly.PHP.ORDER_NONE)||0;a=$.Blockly.PHP.valueToCode(a,"BLUE",$.Blockly.PHP.ORDER_NONE)||0;return[$.Blockly.PHP.provideFunction_("colour_rgb","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($r, $g, $b) {\n $r = round(max(min($r, 100), 0) * 2.55);\n $g = round(max(min($g, 100), 0) * 2.55);\n $b = round(max(min($b, 100), 0) * 2.55);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n")+ +"("+b+", "+c+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}; +$.Blockly.PHP.colour_blend=function(a){var b=$.Blockly.PHP.valueToCode(a,"COLOUR1",$.Blockly.PHP.ORDER_NONE)||"'#000000'",c=$.Blockly.PHP.valueToCode(a,"COLOUR2",$.Blockly.PHP.ORDER_NONE)||"'#000000'";a=$.Blockly.PHP.valueToCode(a,"RATIO",$.Blockly.PHP.ORDER_NONE)||.5;return[$.Blockly.PHP.provideFunction_("colour_blend","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($c1, $c2, $ratio) {\n $ratio = max(min($ratio, 1), 0);\n $r1 = hexdec(substr($c1, 1, 2));\n $g1 = hexdec(substr($c1, 3, 2));\n $b1 = hexdec(substr($c1, 5, 2));\n $r2 = hexdec(substr($c2, 1, 2));\n $g2 = hexdec(substr($c2, 3, 2));\n $b2 = hexdec(substr($c2, 5, 2));\n $r = round($r1 * (1 - $ratio) + $r2 * $ratio);\n $g = round($g1 * (1 - $ratio) + $g2 * $ratio);\n $b = round($b1 * (1 - $ratio) + $b2 * $ratio);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n")+"("+ +b+", "+c+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$all={}; +$.Blockly.PHP.__namespace__=$; +return $.Blockly.PHP; +})); + + +//# sourceMappingURL=php_compressed.js.map diff --git a/python_compressed.js b/python_compressed.js index 55cacf1b6d2..2479a913efe 100644 --- a/python_compressed.js +++ b/python_compressed.js @@ -1,107 +1,107 @@ -// Do not edit this file; automatically generated. - -/* eslint-disable */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { // AMD - define(["./blockly_compressed.js"], factory); - } else if (typeof exports === 'object') { // Node.js - module.exports = factory(require("./blockly_compressed.js")); - } else { // Browser - var factoryExports = factory(root.Blockly); - root.Blockly.Python = factoryExports; - } -}(this, function(__parent__) { -var $=__parent__.__namespace__; -var module$contents$Blockly$Python_Python=new $.module$exports$Blockly$Generator.Generator("Python");module$contents$Blockly$Python_Python.addReservedWords("False,None,True,and,as,assert,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,or,pass,print,raise,return,try,while,with,yield,NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,ArithmeticError,AssertionError,AttributeError,BaseException,BlockingIOError,BrokenPipeError,BufferError,BytesWarning,ChildProcessError,ConnectionAbortedError,ConnectionError,ConnectionRefusedError,ConnectionResetError,DeprecationWarning,EOFError,Ellipsis,EnvironmentError,Exception,FileExistsError,FileNotFoundError,FloatingPointError,FutureWarning,GeneratorExit,IOError,ImportError,ImportWarning,IndentationError,IndexError,InterruptedError,IsADirectoryError,KeyError,KeyboardInterrupt,LookupError,MemoryError,ModuleNotFoundError,NameError,NotADirectoryError,NotImplemented,NotImplementedError,OSError,OverflowError,PendingDeprecationWarning,PermissionError,ProcessLookupError,RecursionError,ReferenceError,ResourceWarning,RuntimeError,RuntimeWarning,StandardError,StopAsyncIteration,StopIteration,SyntaxError,SyntaxWarning,SystemError,SystemExit,TabError,TimeoutError,TypeError,UnboundLocalError,UnicodeDecodeError,UnicodeEncodeError,UnicodeError,UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,ZeroDivisionError,_,__build_class__,__debug__,__doc__,__import__,__loader__,__name__,__package__,__spec__,abs,all,any,apply,ascii,basestring,bin,bool,buffer,bytearray,bytes,callable,chr,classmethod,cmp,coerce,compile,complex,copyright,credits,delattr,dict,dir,divmod,enumerate,eval,exec,execfile,exit,file,filter,float,format,frozenset,getattr,globals,hasattr,hash,help,hex,id,input,int,intern,isinstance,issubclass,iter,len,license,list,locals,long,map,max,memoryview,min,next,object,oct,open,ord,pow,print,property,quit,range,raw_input,reduce,reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,sum,super,tuple,type,unichr,unicode,vars,xrange,zip"); -module$contents$Blockly$Python_Python.ORDER_ATOMIC=0;module$contents$Blockly$Python_Python.ORDER_COLLECTION=1;module$contents$Blockly$Python_Python.ORDER_STRING_CONVERSION=1;module$contents$Blockly$Python_Python.ORDER_MEMBER=2.1;module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL=2.2;module$contents$Blockly$Python_Python.ORDER_EXPONENTIATION=3;module$contents$Blockly$Python_Python.ORDER_UNARY_SIGN=4;module$contents$Blockly$Python_Python.ORDER_BITWISE_NOT=4; -module$contents$Blockly$Python_Python.ORDER_MULTIPLICATIVE=5;module$contents$Blockly$Python_Python.ORDER_ADDITIVE=6;module$contents$Blockly$Python_Python.ORDER_BITWISE_SHIFT=7;module$contents$Blockly$Python_Python.ORDER_BITWISE_AND=8;module$contents$Blockly$Python_Python.ORDER_BITWISE_XOR=9;module$contents$Blockly$Python_Python.ORDER_BITWISE_OR=10;module$contents$Blockly$Python_Python.ORDER_RELATIONAL=11;module$contents$Blockly$Python_Python.ORDER_LOGICAL_NOT=12; -module$contents$Blockly$Python_Python.ORDER_LOGICAL_AND=13;module$contents$Blockly$Python_Python.ORDER_LOGICAL_OR=14;module$contents$Blockly$Python_Python.ORDER_CONDITIONAL=15;module$contents$Blockly$Python_Python.ORDER_LAMBDA=16;module$contents$Blockly$Python_Python.ORDER_NONE=99; -module$contents$Blockly$Python_Python.ORDER_OVERRIDES=[[module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL,module$contents$Blockly$Python_Python.ORDER_MEMBER],[module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL,module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL],[module$contents$Blockly$Python_Python.ORDER_MEMBER,module$contents$Blockly$Python_Python.ORDER_MEMBER],[module$contents$Blockly$Python_Python.ORDER_MEMBER,module$contents$Blockly$Python_Python.ORDER_FUNCTION_CALL],[module$contents$Blockly$Python_Python.ORDER_LOGICAL_NOT, -module$contents$Blockly$Python_Python.ORDER_LOGICAL_NOT],[module$contents$Blockly$Python_Python.ORDER_LOGICAL_AND,module$contents$Blockly$Python_Python.ORDER_LOGICAL_AND],[module$contents$Blockly$Python_Python.ORDER_LOGICAL_OR,module$contents$Blockly$Python_Python.ORDER_LOGICAL_OR]];module$contents$Blockly$Python_Python.isInitialized=!1; -module$contents$Blockly$Python_Python.init=function(a){Object.getPrototypeOf(this).init.call(this);this.PASS=this.INDENT+"pass\n";this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$exports$Blockly$Names.Names(this.RESERVED_WORDS_);this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);for(var b=[],c=(0,$.module$exports$Blockly$Variables.allDeveloperVariables)(a),d=0;dc?"int("+a+" - "+-c+")":"int("+a+")",d&&(a="-"+a));return a};$.Blockly.Python=module$contents$Blockly$Python_Python;var module$exports$Blockly$Python$variables={};$.Blockly.Python.variables_get=function(a){return[$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.variables_set=function(a){var b=$.Blockly.Python.valueToCode(a,"VALUE",$.Blockly.Python.ORDER_NONE)||"0";return $.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" = "+b+"\n"};var module$exports$Blockly$Python$variablesDynamic={};$.Blockly.Python.variables_get_dynamic=$.Blockly.Python.variables_get;$.Blockly.Python.variables_set_dynamic=$.Blockly.Python.variables_set;var module$exports$Blockly$Python$texts={};$.Blockly.Python.text=function(a){return[$.Blockly.Python.quote_(a.getFieldValue("TEXT")),$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.text_multiline=function(a){a=$.Blockly.Python.multiline_quote_(a.getFieldValue("TEXT"));var b=-1!==a.indexOf("+")?$.Blockly.Python.ORDER_ADDITIVE:$.Blockly.Python.ORDER_ATOMIC;return[a,b]}; -var module$contents$Blockly$Python$texts_strRegExp=/^\s*'([^']|\\')*'\s*$/,module$contents$Blockly$Python$texts_forceString=function(a){return module$contents$Blockly$Python$texts_strRegExp.test(a)?[a,$.Blockly.Python.ORDER_ATOMIC]:["str("+a+")",$.Blockly.Python.ORDER_FUNCTION_CALL]}; -$.Blockly.Python.text_join=function(a){switch(a.itemCount_){case 0:return["''",$.Blockly.Python.ORDER_ATOMIC];case 1:return a=$.Blockly.Python.valueToCode(a,"ADD0",$.Blockly.Python.ORDER_NONE)||"''",module$contents$Blockly$Python$texts_forceString(a);case 2:var b=$.Blockly.Python.valueToCode(a,"ADD0",$.Blockly.Python.ORDER_NONE)||"''";a=$.Blockly.Python.valueToCode(a,"ADD1",$.Blockly.Python.ORDER_NONE)||"''";return[module$contents$Blockly$Python$texts_forceString(b)[0]+" + "+module$contents$Blockly$Python$texts_forceString(a)[0], -$.Blockly.Python.ORDER_ADDITIVE];default:b=[];for(var c=0;ca?$.Blockly.Python.ORDER_UNARY_SIGN:$.Blockly.Python.ORDER_ATOMIC;return[a,b]}; -$.Blockly.Python.math_arithmetic=function(a){var b={ADD:[" + ",$.Blockly.Python.ORDER_ADDITIVE],MINUS:[" - ",$.Blockly.Python.ORDER_ADDITIVE],MULTIPLY:[" * ",$.Blockly.Python.ORDER_MULTIPLICATIVE],DIVIDE:[" / ",$.Blockly.Python.ORDER_MULTIPLICATIVE],POWER:[" ** ",$.Blockly.Python.ORDER_EXPONENTIATION]}[a.getFieldValue("OP")],c=b[0];b=b[1];var d=$.Blockly.Python.valueToCode(a,"A",b)||"0";a=$.Blockly.Python.valueToCode(a,"B",b)||"0";return[d+c+a,b]}; -$.Blockly.Python.math_single=function(a){var b=a.getFieldValue("OP");if("NEG"===b){var c=$.Blockly.Python.valueToCode(a,"NUM",$.Blockly.Python.ORDER_UNARY_SIGN)||"0";return["-"+c,$.Blockly.Python.ORDER_UNARY_SIGN]}$.Blockly.Python.definitions_.import_math="import math";a="SIN"===b||"COS"===b||"TAN"===b?$.Blockly.Python.valueToCode(a,"NUM",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0":$.Blockly.Python.valueToCode(a,"NUM",$.Blockly.Python.ORDER_NONE)||"0";switch(b){case "ABS":c="math.fabs("+a+")";break; -case "ROOT":c="math.sqrt("+a+")";break;case "LN":c="math.log("+a+")";break;case "LOG10":c="math.log10("+a+")";break;case "EXP":c="math.exp("+a+")";break;case "POW10":c="math.pow(10,"+a+")";break;case "ROUND":c="round("+a+")";break;case "ROUNDUP":c="math.ceil("+a+")";break;case "ROUNDDOWN":c="math.floor("+a+")";break;case "SIN":c="math.sin("+a+" / 180.0 * math.pi)";break;case "COS":c="math.cos("+a+" / 180.0 * math.pi)";break;case "TAN":c="math.tan("+a+" / 180.0 * math.pi)"}if(c)return[c,$.Blockly.Python.ORDER_FUNCTION_CALL]; -switch(b){case "ASIN":c="math.asin("+a+") / math.pi * 180";break;case "ACOS":c="math.acos("+a+") / math.pi * 180";break;case "ATAN":c="math.atan("+a+") / math.pi * 180";break;default:throw Error("Unknown math operator: "+b);}return[c,$.Blockly.Python.ORDER_MULTIPLICATIVE]}; -$.Blockly.Python.math_constant=function(a){var b={PI:["math.pi",$.Blockly.Python.ORDER_MEMBER],E:["math.e",$.Blockly.Python.ORDER_MEMBER],GOLDEN_RATIO:["(1 + math.sqrt(5)) / 2",$.Blockly.Python.ORDER_MULTIPLICATIVE],SQRT2:["math.sqrt(2)",$.Blockly.Python.ORDER_MEMBER],SQRT1_2:["math.sqrt(1.0 / 2)",$.Blockly.Python.ORDER_MEMBER],INFINITY:["float('inf')",$.Blockly.Python.ORDER_ATOMIC]};a=a.getFieldValue("CONSTANT");"INFINITY"!==a&&($.Blockly.Python.definitions_.import_math="import math");return b[a]}; -$.Blockly.Python.math_number_property=function(a){var b={EVEN:[" % 2 == 0",$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],ODD:[" % 2 == 1",$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],WHOLE:[" % 1 == 0",$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],POSITIVE:[" > 0",$.Blockly.Python.ORDER_RELATIONAL,$.Blockly.Python.ORDER_RELATIONAL],NEGATIVE:[" < 0",$.Blockly.Python.ORDER_RELATIONAL,$.Blockly.Python.ORDER_RELATIONAL], -DIVISIBLE_BY:[null,$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],PRIME:[null,$.Blockly.Python.ORDER_NONE,$.Blockly.Python.ORDER_FUNCTION_CALL]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value;b=b.next().value;e=$.Blockly.Python.valueToCode(a,"NUMBER_TO_CHECK",e)||"0";if("PRIME"===c)$.Blockly.Python.definitions_.import_math="import math",$.Blockly.Python.definitions_.from_numbers_import_Number="from numbers import Number", -a=$.Blockly.Python.provideFunction_("math_isPrime","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(n):\n # https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n # If n is not a number but a string, try parsing it.\n if not isinstance(n, Number):\n try:\n n = float(n)\n except:\n return False\n if n == 2 or n == 3:\n return True\n # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3.\n if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0:\n return False\n # Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for x in range(6, int(math.sqrt(n)) + 2, 6):\n if n % (x - 1) == 0 or n % (x + 1) == 0:\n return False\n return True\n")+ -"("+e+")";else if("DIVISIBLE_BY"===c){a=$.Blockly.Python.valueToCode(a,"DIVISOR",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0";if("0"===a)return["False",$.Blockly.Python.ORDER_ATOMIC];a=e+" % "+a+" == 0"}else a=e+d;return[a,b]}; -$.Blockly.Python.math_change=function(a){$.Blockly.Python.definitions_.from_numbers_import_Number="from numbers import Number";var b=$.Blockly.Python.valueToCode(a,"DELTA",$.Blockly.Python.ORDER_ADDITIVE)||"0";a=$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE);return a+" = ("+a+" if isinstance("+a+", Number) else 0) + "+b+"\n"};$.Blockly.Python.math_round=$.Blockly.Python.math_single;$.Blockly.Python.math_trig=$.Blockly.Python.math_single; -$.Blockly.Python.math_on_list=function(a){var b=a.getFieldValue("OP");a=$.Blockly.Python.valueToCode(a,"LIST",$.Blockly.Python.ORDER_NONE)||"[]";switch(b){case "SUM":b="sum("+a+")";break;case "MIN":b="min("+a+")";break;case "MAX":b="max("+a+")";break;case "AVERAGE":$.Blockly.Python.definitions_.from_numbers_import_Number="from numbers import Number";b=$.Blockly.Python.provideFunction_("math_mean","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(myList):\n localList = [e for e in myList if isinstance(e, Number)]\n if not localList: return\n return float(sum(localList)) / len(localList)\n")+ -"("+a+")";break;case "MEDIAN":$.Blockly.Python.definitions_.from_numbers_import_Number="from numbers import Number";b=$.Blockly.Python.provideFunction_("math_median","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(myList):\n localList = sorted([e for e in myList if isinstance(e, Number)])\n if not localList: return\n if len(localList) % 2 == 0:\n return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0\n else:\n return localList[(len(localList) - 1) // 2]\n")+ -"("+a+")";break;case "MODE":b=$.Blockly.Python.provideFunction_("math_modes","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+'(some_list):\n modes = []\n # Using a lists of [item, count] to keep count rather than dict\n # to avoid "unhashable" errors when the counted item is itself a list or dict.\n counts = []\n maxCount = 1\n for item in some_list:\n found = False\n for count in counts:\n if count[0] == item:\n count[1] += 1\n maxCount = max(maxCount, count[1])\n found = True\n if not found:\n counts.append([item, 1])\n for counted_item, item_count in counts:\n if item_count == maxCount:\n modes.append(counted_item)\n return modes\n')+ -"("+a+")";break;case "STD_DEV":$.Blockly.Python.definitions_.import_math="import math";b=$.Blockly.Python.provideFunction_("math_standard_deviation","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(numbers):\n n = len(numbers)\n if n == 0: return\n mean = float(sum(numbers)) / n\n variance = sum((x - mean) ** 2 for x in numbers) / n\n return math.sqrt(variance)\n")+"("+a+")";break;case "RANDOM":$.Blockly.Python.definitions_.import_random="import random";b="random.choice("+a+")";break;default:throw Error("Unknown operator: "+ -b);}return[b,$.Blockly.Python.ORDER_FUNCTION_CALL]};$.Blockly.Python.math_modulo=function(a){var b=$.Blockly.Python.valueToCode(a,"DIVIDEND",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0";a=$.Blockly.Python.valueToCode(a,"DIVISOR",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0";return[b+" % "+a,$.Blockly.Python.ORDER_MULTIPLICATIVE]}; -$.Blockly.Python.math_constrain=function(a){var b=$.Blockly.Python.valueToCode(a,"VALUE",$.Blockly.Python.ORDER_NONE)||"0",c=$.Blockly.Python.valueToCode(a,"LOW",$.Blockly.Python.ORDER_NONE)||"0";a=$.Blockly.Python.valueToCode(a,"HIGH",$.Blockly.Python.ORDER_NONE)||"float('inf')";return["min(max("+b+", "+c+"), "+a+")",$.Blockly.Python.ORDER_FUNCTION_CALL]}; -$.Blockly.Python.math_random_int=function(a){$.Blockly.Python.definitions_.import_random="import random";var b=$.Blockly.Python.valueToCode(a,"FROM",$.Blockly.Python.ORDER_NONE)||"0";a=$.Blockly.Python.valueToCode(a,"TO",$.Blockly.Python.ORDER_NONE)||"0";return["random.randint("+b+", "+a+")",$.Blockly.Python.ORDER_FUNCTION_CALL]};$.Blockly.Python.math_random_float=function(a){$.Blockly.Python.definitions_.import_random="import random";return["random.random()",$.Blockly.Python.ORDER_FUNCTION_CALL]}; -$.Blockly.Python.math_atan2=function(a){$.Blockly.Python.definitions_.import_math="import math";var b=$.Blockly.Python.valueToCode(a,"X",$.Blockly.Python.ORDER_NONE)||"0";return["math.atan2("+($.Blockly.Python.valueToCode(a,"Y",$.Blockly.Python.ORDER_NONE)||"0")+", "+b+") / math.pi * 180",$.Blockly.Python.ORDER_MULTIPLICATIVE]};var module$exports$Blockly$Python$loops={}; -$.Blockly.Python.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(parseInt(a.getFieldValue("TIMES"),10)):$.Blockly.Python.valueToCode(a,"TIMES",$.Blockly.Python.ORDER_NONE)||"0";b=(0,$.module$exports$Blockly$utils$string.isNumber)(b)?parseInt(b,10):"int("+b+")";var c=$.Blockly.Python.statementToCode(a,"DO");c=$.Blockly.Python.addLoopTrap(c,a)||$.Blockly.Python.PASS;return"for "+$.Blockly.Python.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE)+" in range("+ -b+"):\n"+c};$.Blockly.Python.controls_repeat=$.Blockly.Python.controls_repeat_ext;$.Blockly.Python.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.Python.valueToCode(a,"BOOL",b?$.Blockly.Python.ORDER_LOGICAL_NOT:$.Blockly.Python.ORDER_NONE)||"False",d=$.Blockly.Python.statementToCode(a,"DO");d=$.Blockly.Python.addLoopTrap(d,a)||$.Blockly.Python.PASS;b&&(c="not "+c);return"while "+c+":\n"+d}; -$.Blockly.Python.controls_for=function(a){var b=$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.Python.valueToCode(a,"FROM",$.Blockly.Python.ORDER_NONE)||"0",d=$.Blockly.Python.valueToCode(a,"TO",$.Blockly.Python.ORDER_NONE)||"0",e=$.Blockly.Python.valueToCode(a,"BY",$.Blockly.Python.ORDER_NONE)||"1",f=$.Blockly.Python.statementToCode(a,"DO");f=$.Blockly.Python.addLoopTrap(f,a)||$.Blockly.Python.PASS;var g="";a=function(){return $.Blockly.Python.provideFunction_("upRange", -"\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(start, stop, step):\n while start <= stop:\n yield start\n start += abs(step)\n")};var h=function(){return $.Blockly.Python.provideFunction_("downRange","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(start, stop, step):\n while start >= stop:\n yield start\n start -= abs(step)\n")};if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&&(0,$.module$exports$Blockly$utils$string.isNumber)(d)&&(0,$.module$exports$Blockly$utils$string.isNumber)(e))c= -Number(c),d=Number(d),e=Math.abs(Number(e)),0===c%1&&0===d%1&&0===e%1?(c<=d?(d++,a=0===c&&1===e?d:c+", "+d,1!==e&&(a+=", "+e)):(d--,a=c+", "+d+", -"+e),a="range("+a+")"):(a=c",GTE:">="}[a.getFieldValue("OP")],c=$.Blockly.Python.ORDER_RELATIONAL,d=$.Blockly.Python.valueToCode(a,"A",c)||"0";a=$.Blockly.Python.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; -$.Blockly.Python.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"and":"or",c="and"===b?$.Blockly.Python.ORDER_LOGICAL_AND:$.Blockly.Python.ORDER_LOGICAL_OR,d=$.Blockly.Python.valueToCode(a,"A",c);a=$.Blockly.Python.valueToCode(a,"B",c);if(d||a){var e="and"===b?"True":"False";d||(d=e);a||(a=e)}else a=d="False";return[d+" "+b+" "+a,c]};$.Blockly.Python.logic_negate=function(a){return["not "+($.Blockly.Python.valueToCode(a,"BOOL",$.Blockly.Python.ORDER_LOGICAL_NOT)||"True"),$.Blockly.Python.ORDER_LOGICAL_NOT]}; -$.Blockly.Python.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"True":"False",$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.logic_null=function(a){return["None",$.Blockly.Python.ORDER_ATOMIC]}; -$.Blockly.Python.logic_ternary=function(a){var b=$.Blockly.Python.valueToCode(a,"IF",$.Blockly.Python.ORDER_CONDITIONAL)||"False",c=$.Blockly.Python.valueToCode(a,"THEN",$.Blockly.Python.ORDER_CONDITIONAL)||"None";a=$.Blockly.Python.valueToCode(a,"ELSE",$.Blockly.Python.ORDER_CONDITIONAL)||"None";return[c+" if "+b+" else "+a,$.Blockly.Python.ORDER_CONDITIONAL]};var module$exports$Blockly$Python$lists={};$.Blockly.Python.lists_create_empty=function(a){return["[]",$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;cc?"int("+a+" - "+-c+")":"int("+a+")",d&&(a="-"+a));return a};$.Blockly.Python=module$contents$Blockly$Python_Python;var module$exports$Blockly$Python$variables={};$.Blockly.Python.variables_get=function(a){return[$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.variables_set=function(a){var b=$.Blockly.Python.valueToCode(a,"VALUE",$.Blockly.Python.ORDER_NONE)||"0";return $.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" = "+b+"\n"};var module$exports$Blockly$Python$variablesDynamic={};$.Blockly.Python.variables_get_dynamic=$.Blockly.Python.variables_get;$.Blockly.Python.variables_set_dynamic=$.Blockly.Python.variables_set;var module$exports$Blockly$Python$texts={};$.Blockly.Python.text=function(a){return[$.Blockly.Python.quote_(a.getFieldValue("TEXT")),$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.text_multiline=function(a){a=$.Blockly.Python.multiline_quote_(a.getFieldValue("TEXT"));var b=-1!==a.indexOf("+")?$.Blockly.Python.ORDER_ADDITIVE:$.Blockly.Python.ORDER_ATOMIC;return[a,b]}; +var module$contents$Blockly$Python$texts_strRegExp=/^\s*'([^']|\\')*'\s*$/,module$contents$Blockly$Python$texts_forceString=function(a){return module$contents$Blockly$Python$texts_strRegExp.test(a)?[a,$.Blockly.Python.ORDER_ATOMIC]:["str("+a+")",$.Blockly.Python.ORDER_FUNCTION_CALL]}; +$.Blockly.Python.text_join=function(a){switch(a.itemCount_){case 0:return["''",$.Blockly.Python.ORDER_ATOMIC];case 1:return a=$.Blockly.Python.valueToCode(a,"ADD0",$.Blockly.Python.ORDER_NONE)||"''",module$contents$Blockly$Python$texts_forceString(a);case 2:var b=$.Blockly.Python.valueToCode(a,"ADD0",$.Blockly.Python.ORDER_NONE)||"''";a=$.Blockly.Python.valueToCode(a,"ADD1",$.Blockly.Python.ORDER_NONE)||"''";return[module$contents$Blockly$Python$texts_forceString(b)[0]+" + "+module$contents$Blockly$Python$texts_forceString(a)[0], +$.Blockly.Python.ORDER_ADDITIVE];default:b=[];for(var c=0;ca?$.Blockly.Python.ORDER_UNARY_SIGN:$.Blockly.Python.ORDER_ATOMIC;return[a,b]}; +$.Blockly.Python.math_arithmetic=function(a){var b={ADD:[" + ",$.Blockly.Python.ORDER_ADDITIVE],MINUS:[" - ",$.Blockly.Python.ORDER_ADDITIVE],MULTIPLY:[" * ",$.Blockly.Python.ORDER_MULTIPLICATIVE],DIVIDE:[" / ",$.Blockly.Python.ORDER_MULTIPLICATIVE],POWER:[" ** ",$.Blockly.Python.ORDER_EXPONENTIATION]}[a.getFieldValue("OP")],c=b[0];b=b[1];var d=$.Blockly.Python.valueToCode(a,"A",b)||"0";a=$.Blockly.Python.valueToCode(a,"B",b)||"0";return[d+c+a,b]}; +$.Blockly.Python.math_single=function(a){var b=a.getFieldValue("OP");if("NEG"===b){var c=$.Blockly.Python.valueToCode(a,"NUM",$.Blockly.Python.ORDER_UNARY_SIGN)||"0";return["-"+c,$.Blockly.Python.ORDER_UNARY_SIGN]}$.Blockly.Python.definitions_.import_math="import math";a="SIN"===b||"COS"===b||"TAN"===b?$.Blockly.Python.valueToCode(a,"NUM",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0":$.Blockly.Python.valueToCode(a,"NUM",$.Blockly.Python.ORDER_NONE)||"0";switch(b){case "ABS":c="math.fabs("+a+")";break; +case "ROOT":c="math.sqrt("+a+")";break;case "LN":c="math.log("+a+")";break;case "LOG10":c="math.log10("+a+")";break;case "EXP":c="math.exp("+a+")";break;case "POW10":c="math.pow(10,"+a+")";break;case "ROUND":c="round("+a+")";break;case "ROUNDUP":c="math.ceil("+a+")";break;case "ROUNDDOWN":c="math.floor("+a+")";break;case "SIN":c="math.sin("+a+" / 180.0 * math.pi)";break;case "COS":c="math.cos("+a+" / 180.0 * math.pi)";break;case "TAN":c="math.tan("+a+" / 180.0 * math.pi)"}if(c)return[c,$.Blockly.Python.ORDER_FUNCTION_CALL]; +switch(b){case "ASIN":c="math.asin("+a+") / math.pi * 180";break;case "ACOS":c="math.acos("+a+") / math.pi * 180";break;case "ATAN":c="math.atan("+a+") / math.pi * 180";break;default:throw Error("Unknown math operator: "+b);}return[c,$.Blockly.Python.ORDER_MULTIPLICATIVE]}; +$.Blockly.Python.math_constant=function(a){var b={PI:["math.pi",$.Blockly.Python.ORDER_MEMBER],E:["math.e",$.Blockly.Python.ORDER_MEMBER],GOLDEN_RATIO:["(1 + math.sqrt(5)) / 2",$.Blockly.Python.ORDER_MULTIPLICATIVE],SQRT2:["math.sqrt(2)",$.Blockly.Python.ORDER_MEMBER],SQRT1_2:["math.sqrt(1.0 / 2)",$.Blockly.Python.ORDER_MEMBER],INFINITY:["float('inf')",$.Blockly.Python.ORDER_ATOMIC]};a=a.getFieldValue("CONSTANT");"INFINITY"!==a&&($.Blockly.Python.definitions_.import_math="import math");return b[a]}; +$.Blockly.Python.math_number_property=function(a){var b={EVEN:[" % 2 == 0",$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],ODD:[" % 2 == 1",$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],WHOLE:[" % 1 == 0",$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],POSITIVE:[" > 0",$.Blockly.Python.ORDER_RELATIONAL,$.Blockly.Python.ORDER_RELATIONAL],NEGATIVE:[" < 0",$.Blockly.Python.ORDER_RELATIONAL,$.Blockly.Python.ORDER_RELATIONAL], +DIVISIBLE_BY:[null,$.Blockly.Python.ORDER_MULTIPLICATIVE,$.Blockly.Python.ORDER_RELATIONAL],PRIME:[null,$.Blockly.Python.ORDER_NONE,$.Blockly.Python.ORDER_FUNCTION_CALL]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value;b=b.next().value;e=$.Blockly.Python.valueToCode(a,"NUMBER_TO_CHECK",e)||"0";if("PRIME"===c)$.Blockly.Python.definitions_.import_math="import math",$.Blockly.Python.definitions_.from_numbers_import_Number="from numbers import Number", +a=$.Blockly.Python.provideFunction_("math_isPrime","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(n):\n # https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n # If n is not a number but a string, try parsing it.\n if not isinstance(n, Number):\n try:\n n = float(n)\n except:\n return False\n if n == 2 or n == 3:\n return True\n # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3.\n if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0:\n return False\n # Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for x in range(6, int(math.sqrt(n)) + 2, 6):\n if n % (x - 1) == 0 or n % (x + 1) == 0:\n return False\n return True\n")+ +"("+e+")";else if("DIVISIBLE_BY"===c){a=$.Blockly.Python.valueToCode(a,"DIVISOR",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0";if("0"===a)return["False",$.Blockly.Python.ORDER_ATOMIC];a=e+" % "+a+" == 0"}else a=e+d;return[a,b]}; +$.Blockly.Python.math_change=function(a){$.Blockly.Python.definitions_.from_numbers_import_Number="from numbers import Number";var b=$.Blockly.Python.valueToCode(a,"DELTA",$.Blockly.Python.ORDER_ADDITIVE)||"0";a=$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE);return a+" = ("+a+" if isinstance("+a+", Number) else 0) + "+b+"\n"};$.Blockly.Python.math_round=$.Blockly.Python.math_single;$.Blockly.Python.math_trig=$.Blockly.Python.math_single; +$.Blockly.Python.math_on_list=function(a){var b=a.getFieldValue("OP");a=$.Blockly.Python.valueToCode(a,"LIST",$.Blockly.Python.ORDER_NONE)||"[]";switch(b){case "SUM":b="sum("+a+")";break;case "MIN":b="min("+a+")";break;case "MAX":b="max("+a+")";break;case "AVERAGE":$.Blockly.Python.definitions_.from_numbers_import_Number="from numbers import Number";b=$.Blockly.Python.provideFunction_("math_mean","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(myList):\n localList = [e for e in myList if isinstance(e, Number)]\n if not localList: return\n return float(sum(localList)) / len(localList)\n")+ +"("+a+")";break;case "MEDIAN":$.Blockly.Python.definitions_.from_numbers_import_Number="from numbers import Number";b=$.Blockly.Python.provideFunction_("math_median","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(myList):\n localList = sorted([e for e in myList if isinstance(e, Number)])\n if not localList: return\n if len(localList) % 2 == 0:\n return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0\n else:\n return localList[(len(localList) - 1) // 2]\n")+ +"("+a+")";break;case "MODE":b=$.Blockly.Python.provideFunction_("math_modes","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+'(some_list):\n modes = []\n # Using a lists of [item, count] to keep count rather than dict\n # to avoid "unhashable" errors when the counted item is itself a list or dict.\n counts = []\n maxCount = 1\n for item in some_list:\n found = False\n for count in counts:\n if count[0] == item:\n count[1] += 1\n maxCount = max(maxCount, count[1])\n found = True\n if not found:\n counts.append([item, 1])\n for counted_item, item_count in counts:\n if item_count == maxCount:\n modes.append(counted_item)\n return modes\n')+ +"("+a+")";break;case "STD_DEV":$.Blockly.Python.definitions_.import_math="import math";b=$.Blockly.Python.provideFunction_("math_standard_deviation","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(numbers):\n n = len(numbers)\n if n == 0: return\n mean = float(sum(numbers)) / n\n variance = sum((x - mean) ** 2 for x in numbers) / n\n return math.sqrt(variance)\n")+"("+a+")";break;case "RANDOM":$.Blockly.Python.definitions_.import_random="import random";b="random.choice("+a+")";break;default:throw Error("Unknown operator: "+ +b);}return[b,$.Blockly.Python.ORDER_FUNCTION_CALL]};$.Blockly.Python.math_modulo=function(a){var b=$.Blockly.Python.valueToCode(a,"DIVIDEND",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0";a=$.Blockly.Python.valueToCode(a,"DIVISOR",$.Blockly.Python.ORDER_MULTIPLICATIVE)||"0";return[b+" % "+a,$.Blockly.Python.ORDER_MULTIPLICATIVE]}; +$.Blockly.Python.math_constrain=function(a){var b=$.Blockly.Python.valueToCode(a,"VALUE",$.Blockly.Python.ORDER_NONE)||"0",c=$.Blockly.Python.valueToCode(a,"LOW",$.Blockly.Python.ORDER_NONE)||"0";a=$.Blockly.Python.valueToCode(a,"HIGH",$.Blockly.Python.ORDER_NONE)||"float('inf')";return["min(max("+b+", "+c+"), "+a+")",$.Blockly.Python.ORDER_FUNCTION_CALL]}; +$.Blockly.Python.math_random_int=function(a){$.Blockly.Python.definitions_.import_random="import random";var b=$.Blockly.Python.valueToCode(a,"FROM",$.Blockly.Python.ORDER_NONE)||"0";a=$.Blockly.Python.valueToCode(a,"TO",$.Blockly.Python.ORDER_NONE)||"0";return["random.randint("+b+", "+a+")",$.Blockly.Python.ORDER_FUNCTION_CALL]};$.Blockly.Python.math_random_float=function(a){$.Blockly.Python.definitions_.import_random="import random";return["random.random()",$.Blockly.Python.ORDER_FUNCTION_CALL]}; +$.Blockly.Python.math_atan2=function(a){$.Blockly.Python.definitions_.import_math="import math";var b=$.Blockly.Python.valueToCode(a,"X",$.Blockly.Python.ORDER_NONE)||"0";return["math.atan2("+($.Blockly.Python.valueToCode(a,"Y",$.Blockly.Python.ORDER_NONE)||"0")+", "+b+") / math.pi * 180",$.Blockly.Python.ORDER_MULTIPLICATIVE]};var module$exports$Blockly$Python$loops={}; +$.Blockly.Python.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(parseInt(a.getFieldValue("TIMES"),10)):$.Blockly.Python.valueToCode(a,"TIMES",$.Blockly.Python.ORDER_NONE)||"0";b=(0,$.module$exports$Blockly$utils$string.isNumber)(b)?parseInt(b,10):"int("+b+")";var c=$.Blockly.Python.statementToCode(a,"DO");c=$.Blockly.Python.addLoopTrap(c,a)||$.Blockly.Python.PASS;return"for "+$.Blockly.Python.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE)+" in range("+ +b+"):\n"+c};$.Blockly.Python.controls_repeat=$.Blockly.Python.controls_repeat_ext;$.Blockly.Python.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.Python.valueToCode(a,"BOOL",b?$.Blockly.Python.ORDER_LOGICAL_NOT:$.Blockly.Python.ORDER_NONE)||"False",d=$.Blockly.Python.statementToCode(a,"DO");d=$.Blockly.Python.addLoopTrap(d,a)||$.Blockly.Python.PASS;b&&(c="not "+c);return"while "+c+":\n"+d}; +$.Blockly.Python.controls_for=function(a){var b=$.Blockly.Python.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.Python.valueToCode(a,"FROM",$.Blockly.Python.ORDER_NONE)||"0",d=$.Blockly.Python.valueToCode(a,"TO",$.Blockly.Python.ORDER_NONE)||"0",e=$.Blockly.Python.valueToCode(a,"BY",$.Blockly.Python.ORDER_NONE)||"1",f=$.Blockly.Python.statementToCode(a,"DO");f=$.Blockly.Python.addLoopTrap(f,a)||$.Blockly.Python.PASS;var g="";a=function(){return $.Blockly.Python.provideFunction_("upRange", +"\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(start, stop, step):\n while start <= stop:\n yield start\n start += abs(step)\n")};var h=function(){return $.Blockly.Python.provideFunction_("downRange","\ndef "+$.Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(start, stop, step):\n while start >= stop:\n yield start\n start -= abs(step)\n")};if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&&(0,$.module$exports$Blockly$utils$string.isNumber)(d)&&(0,$.module$exports$Blockly$utils$string.isNumber)(e))c= +Number(c),d=Number(d),e=Math.abs(Number(e)),0===c%1&&0===d%1&&0===e%1?(c<=d?(d++,a=0===c&&1===e?d:c+", "+d,1!==e&&(a+=", "+e)):(d--,a=c+", "+d+", -"+e),a="range("+a+")"):(a=c",GTE:">="}[a.getFieldValue("OP")],c=$.Blockly.Python.ORDER_RELATIONAL,d=$.Blockly.Python.valueToCode(a,"A",c)||"0";a=$.Blockly.Python.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; +$.Blockly.Python.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"and":"or",c="and"===b?$.Blockly.Python.ORDER_LOGICAL_AND:$.Blockly.Python.ORDER_LOGICAL_OR,d=$.Blockly.Python.valueToCode(a,"A",c);a=$.Blockly.Python.valueToCode(a,"B",c);if(d||a){var e="and"===b?"True":"False";d||(d=e);a||(a=e)}else a=d="False";return[d+" "+b+" "+a,c]};$.Blockly.Python.logic_negate=function(a){return["not "+($.Blockly.Python.valueToCode(a,"BOOL",$.Blockly.Python.ORDER_LOGICAL_NOT)||"True"),$.Blockly.Python.ORDER_LOGICAL_NOT]}; +$.Blockly.Python.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"True":"False",$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.logic_null=function(a){return["None",$.Blockly.Python.ORDER_ATOMIC]}; +$.Blockly.Python.logic_ternary=function(a){var b=$.Blockly.Python.valueToCode(a,"IF",$.Blockly.Python.ORDER_CONDITIONAL)||"False",c=$.Blockly.Python.valueToCode(a,"THEN",$.Blockly.Python.ORDER_CONDITIONAL)||"None";a=$.Blockly.Python.valueToCode(a,"ELSE",$.Blockly.Python.ORDER_CONDITIONAL)||"None";return[c+" if "+b+" else "+a,$.Blockly.Python.ORDER_CONDITIONAL]};var module$exports$Blockly$Python$lists={};$.Blockly.Python.lists_create_empty=function(a){return["[]",$.Blockly.Python.ORDER_ATOMIC]};$.Blockly.Python.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c&2 -} -inf() { - echo -e "${BLUE}[INFO]:${COLOR_NONE} $*" >&2 -} -warn() { - echo -e "${ORANGE}[WARN]:${COLOR_NONE} $*" >&2 -} -err() { - echo -e "${RED}[ERROR]:${COLOR_NONE} $*" >&2 -} -reenter_instructions() { - echo -e "${ORANGE}$*${COLOR_NONE}" >&2 -} - -####################################### -# Checks whether the provided filepath exists. -# Arguments: -# The filepath to check for existence. -# Optional: Whether to log an error. -####################################### -verify-filepath() { - local filepath="$1" - local no_log="$2" - if [[ ! -f "${filepath}" ]]; then - if [[ -z "${no_log}" || "${no_log}" == 'true' ]]; then - err "File ${filepath} does not exist" - fi - return 1 - fi -} - -####################################### -# Creates a commit with a message based on the specified step and file. -# Arguments: -# Which conversion step this message is for. -# The filepath of the file being converted. -####################################### -commit-step() { - local step="$1" - local filepath="$2" - if [[ -z "${step}" ]]; then - err "Missing argument (1-4)" - return 1 - fi - if [[ -z "${filepath}" ]]; then - err "Missing argument filepath" - return 1 - fi - verify-filepath "${filepath}" - if [[ $? -eq 1 ]]; then return 1; fi - - local message='' - case $1 in - 1) - message="Migrate ${filepath} to ES6 const/let" - ;; - 2) - message="Migrate ${filepath} to goog.module" - ;; - 3) - message="Migrate ${filepath} named requires" - ;; - 4) - message="clang-format ${filepath}" - ;; - *) - err 'INVALID ARGUMENT' - return 1 - ;; - esac - git add . - if [[ -z $(git status --porcelain) ]]; then - success "Nothing to commit" - return 0 - fi - git commit -m "${message}" - success "created commit with message: \"${message}\"" -} - -####################################### -# Extracts a list of properties that are accessed on the specified module name. -# Excludes any matches -# Arguments: -# The module name to find properties accessed for. -# The modules required by the specified module as a single string. -# The filepath to extract requires from. -# Optional: The top-level module. -# Outputs: -# Writes list of properties to stdout as items separated by spaces. -####################################### -getPropertiesAccessed() { - local module_name="$1" - local requires="$2" - local filepath="$3" - local top_module_name="$4" - # Get any strings that follow "$module_name.", excluding matches for - # "$module_name.prototype" and remove list item duplicates (sort -u). - local properties_accessed=$(perl -nle 'print $& while m{(?<='"${module_name}"'\.)(?!prototype)\w+}g' "${filepath}" | sort -u) - - # Get a list of any requires that are a child of $module_name. - # Ex: Blockly.utils.dom is a child of Blockly.utils, this would return "dom" - local requires_overlap=$(echo "${requires}" | perl -nle 'print $& while m{(?<='"${module_name}"'\.)\w+}g') - # Detect if there was any overlap. - if [[ -n "${requires_overlap}" ]]; then - while read -r requires_overlap_prop; do - # Removes any instances of $requires_overlap_prop. Includes regex - # lookarounds so that it does not simply match string contains. - # Ex: if $requires_overlap is "Svg", then it would update the list - # "isTargetInput mouseToSvg noEvent Svg" to - # "isTargetInput mouseToSvg noEvent " (note that mouseToSvg is unchanged). - properties_accessed=$(echo "${properties_accessed}" | perl -pe 's/(?> "${filepath}" - echo "exports = ${class_name};" >> "${filepath}" - - npm run build:deps - - success "Completed automated conversion to goog.module. Please manually review before committing." - return 0 - fi - - # No top level class. - inf 'Updating top-level property declarations...' - perl -pi -e 's/^'"${module_name}"'\.([^ ]+) =/const \1 =/g' "${filepath}" - - # Extract specific properties accessed so that properties from requires that - # are children of the module aren't changed. - # Ex: The module Blockly.utils shouldn't update Blockly.utils.dom (since it is - # a require from another module. - local requires=$(getRequires "${filepath}") - local properties_accessed=$(getPropertiesAccessed "${module_name}" "${requires}" "${filepath}") - inf "Updating local references to module..." - for property in $(echo "${properties_accessed}"); do - inf "Updating references of ${module_name}.${property} to ${property}..." - perl -pi -e 's/'"${module_name}"'\.'"${property}"'(?!\w)/'"${property}"'/g' "${filepath}" - done - - npm run build:deps - success "Completed automation for step 2. Please manually review and add exports for non-private top-level functions." -} - -####################################### -# Runs step 3 of the automated conversion. -# Arguments: -# The filepath of the file being converted. -####################################### -step3() { - inf "Extracting module name..." - local module_name=$(perl -ne 'print m/(?<=^goog\.module\('\'')([^'\'']+)/' "${filepath}") - if [[ -z "${module_name}" ]]; then - err "Could not extract module name" - return 1 - fi - inf "Extracted module name \"${module_name}\"" - - local requires=$(getRequires "${filepath}") - - # Process each require - echo "${requires}" | while read -r require; do - inf "Processing require \"${require}\"" - local usages=$(perl -nle 'print $& while m{'"${require}"'(?!'\'')}g' "${filepath}" | wc -l) - - if [[ "${usages}" -eq "0" ]]; then - warn "Unused require \"${require}\"" - continue - fi - - local require_name=$(echo "${require}" | perl -pe 's/(\w+\.)+(\w+)/\2/g') - inf "Updating require declaration for ${require}..." - perl -pi -e 's/^(goog\.(require|requireType)\('\'"${require}"\''\);)/const '"${require_name}"' = \1/' "${filepath}" - - # Parse property access of module - local direct_access_count=$(perl -nle 'print $& while m{'"${require}"'[^\.'\'']}g' "${filepath}" | wc -l) - local properties_accessed=$(getPropertiesAccessed "${require}" "${requires}" "${filepath}") - - # Remove $module_name in case it is a child of $require. - # Ex: Blockly.utils.dom would be a child of Blockly, module_overlap would be - # "utils" - local module_overlap=$(echo "${module_name}" | perl -nle 'print $& while m{(?<='"${require}"'\.)\w+}g') - if [[ -n "${module_overlap}" ]]; then - properties_accessed=$(echo "${properties_accessed}" | perl -pe 's/'"${module_overlap}"'//g') - # Trim any extra whitespace created. - properties_accessed=$(echo "${properties_accessed}" | xargs) - fi - - if [[ -n "${properties_accessed}" ]]; then - local comma_properties=$(echo "${properties_accessed}" | perl -pe 's/\s+/, /g' | perl -pe 's/, $//') - inf "Detected references of ${require}: ${comma_properties}" - - for require_prop in $(echo "${properties_accessed}"); do - inf "Updating references of ${require}.${require_prop} to ${require_name}.${require_prop}..." - perl -pi -e 's/'"${require}"'\.'"${require_prop}"'(?!\w)/'"${require_name}"'\.'"${require_prop}"'/g' "${filepath}" - done - fi - - inf "Updating direct references of ${require} to ${require_name}..." - perl -pi -e 's/'"${require}"'(?!['\''\w\.])/'"${require_name}"'/g' "${filepath}" - done - - local missing_requires=$(perl -nle'print $& while m{(? |-s ]" - echo " -h Display help and exit" - echo " -c Create a commit for the specified step [1-4]" - echo " -s Run the specified step [2-4]" -} - -####################################### -# Main entry point. -####################################### -main() { - if [ "$1" = "" ]; then - help - else - local filepath="" - # Support filepath as first argument. - verify-filepath "$1" "false" - if [[ $? -eq 0 ]]; then - filepath="$1" - shift - fi - - local command="$1" - shift - case $command in - -c) commit-step "$@" "${filepath}" ;; - -s) run-step "$@" "${filepath}" ;; - *) err "INVALID ARGUMENT ${command}";; - esac - fi -} - -main "$@" +#!/bin/bash + +# This file makes extensive use of perl for the purpose of extracting and +# replacing string (regex) patterns in a way that is both GNU and macOS +# compatible. +# +# Common perl flags used (also described at https://perldoc.perl.org/perlrun): +# -e : Used to execute perl programs on the command line +# -p : Assumes an input loop around script. Prints every processed line. +# -n : Assumes an input loop around script. Does not print every line. +# -i : Used for in-place editing. Used in commands for find/replace. +# -l[octnum] : Assigns the output record separator "$/" as an octal number. If +# octnum is not present, sets output record separator to the current +# value of the input record separator "$\". +# +# Common perl commands found: +# 1. perl -pi -e 's/regex/replacement/modifiers' +# This command does an in-place search-and-replace. The global ("/g") modifier +# causes it to replace all occurrences, rather than only the first match. +# 2. perl -ne 'print m/regex/modifiers' +# This command returns a string containing the regex match (designated by the +# capture group "()" in the regex). This will return the first match, unless +# the global modifier is specified, in which case, it will return all matches. +# If this command is used without a capture group it returns true or false (in +# the form a truthy or falsy value). +# 3. perl -nle 'print $& while m{regex}modifiers' +# Similar to (2), but returns regex matches separated by newlines. +# The "m{regex}modifiers" is equivalent to "m/regex/modifiers" syntax. +# +# Additional information on regex: +# This script makes use of some advanced regex syntax such as "capture groups" +# and "lookaround assertions". +# Additionally, characters are escaped from regex with a backslash "\". +# Single quotes need to be escaped in both regex and the string, resulting in +# '\'' being used to represent a single quote character. +# For a reference to syntax of regular expressions in Perl, see: +# https://perldoc.perl.org/perlre + +####################################### +# Logging functions. +####################################### +COLOR_NONE="\033[0m" +GREEN="\033[0;32m" +BLUE="\033[0;34m" +ORANGE="\033[0;33m" +RED="\033[0;31m" +success() { + echo -e "${GREEN}[SUCCESS]:${COLOR_NONE} $*" >&2 +} +inf() { + echo -e "${BLUE}[INFO]:${COLOR_NONE} $*" >&2 +} +warn() { + echo -e "${ORANGE}[WARN]:${COLOR_NONE} $*" >&2 +} +err() { + echo -e "${RED}[ERROR]:${COLOR_NONE} $*" >&2 +} +reenter_instructions() { + echo -e "${ORANGE}$*${COLOR_NONE}" >&2 +} + +####################################### +# Checks whether the provided filepath exists. +# Arguments: +# The filepath to check for existence. +# Optional: Whether to log an error. +####################################### +verify-filepath() { + local filepath="$1" + local no_log="$2" + if [[ ! -f "${filepath}" ]]; then + if [[ -z "${no_log}" || "${no_log}" == 'true' ]]; then + err "File ${filepath} does not exist" + fi + return 1 + fi +} + +####################################### +# Creates a commit with a message based on the specified step and file. +# Arguments: +# Which conversion step this message is for. +# The filepath of the file being converted. +####################################### +commit-step() { + local step="$1" + local filepath="$2" + if [[ -z "${step}" ]]; then + err "Missing argument (1-4)" + return 1 + fi + if [[ -z "${filepath}" ]]; then + err "Missing argument filepath" + return 1 + fi + verify-filepath "${filepath}" + if [[ $? -eq 1 ]]; then return 1; fi + + local message='' + case $1 in + 1) + message="Migrate ${filepath} to ES6 const/let" + ;; + 2) + message="Migrate ${filepath} to goog.module" + ;; + 3) + message="Migrate ${filepath} named requires" + ;; + 4) + message="clang-format ${filepath}" + ;; + *) + err 'INVALID ARGUMENT' + return 1 + ;; + esac + git add . + if [[ -z $(git status --porcelain) ]]; then + success "Nothing to commit" + return 0 + fi + git commit -m "${message}" + success "created commit with message: \"${message}\"" +} + +####################################### +# Extracts a list of properties that are accessed on the specified module name. +# Excludes any matches +# Arguments: +# The module name to find properties accessed for. +# The modules required by the specified module as a single string. +# The filepath to extract requires from. +# Optional: The top-level module. +# Outputs: +# Writes list of properties to stdout as items separated by spaces. +####################################### +getPropertiesAccessed() { + local module_name="$1" + local requires="$2" + local filepath="$3" + local top_module_name="$4" + # Get any strings that follow "$module_name.", excluding matches for + # "$module_name.prototype" and remove list item duplicates (sort -u). + local properties_accessed=$(perl -nle 'print $& while m{(?<='"${module_name}"'\.)(?!prototype)\w+}g' "${filepath}" | sort -u) + + # Get a list of any requires that are a child of $module_name. + # Ex: Blockly.utils.dom is a child of Blockly.utils, this would return "dom" + local requires_overlap=$(echo "${requires}" | perl -nle 'print $& while m{(?<='"${module_name}"'\.)\w+}g') + # Detect if there was any overlap. + if [[ -n "${requires_overlap}" ]]; then + while read -r requires_overlap_prop; do + # Removes any instances of $requires_overlap_prop. Includes regex + # lookarounds so that it does not simply match string contains. + # Ex: if $requires_overlap is "Svg", then it would update the list + # "isTargetInput mouseToSvg noEvent Svg" to + # "isTargetInput mouseToSvg noEvent " (note that mouseToSvg is unchanged). + properties_accessed=$(echo "${properties_accessed}" | perl -pe 's/(?> "${filepath}" + echo "exports = ${class_name};" >> "${filepath}" + + npm run build:deps + + success "Completed automated conversion to goog.module. Please manually review before committing." + return 0 + fi + + # No top level class. + inf 'Updating top-level property declarations...' + perl -pi -e 's/^'"${module_name}"'\.([^ ]+) =/const \1 =/g' "${filepath}" + + # Extract specific properties accessed so that properties from requires that + # are children of the module aren't changed. + # Ex: The module Blockly.utils shouldn't update Blockly.utils.dom (since it is + # a require from another module. + local requires=$(getRequires "${filepath}") + local properties_accessed=$(getPropertiesAccessed "${module_name}" "${requires}" "${filepath}") + inf "Updating local references to module..." + for property in $(echo "${properties_accessed}"); do + inf "Updating references of ${module_name}.${property} to ${property}..." + perl -pi -e 's/'"${module_name}"'\.'"${property}"'(?!\w)/'"${property}"'/g' "${filepath}" + done + + npm run build:deps + success "Completed automation for step 2. Please manually review and add exports for non-private top-level functions." +} + +####################################### +# Runs step 3 of the automated conversion. +# Arguments: +# The filepath of the file being converted. +####################################### +step3() { + inf "Extracting module name..." + local module_name=$(perl -ne 'print m/(?<=^goog\.module\('\'')([^'\'']+)/' "${filepath}") + if [[ -z "${module_name}" ]]; then + err "Could not extract module name" + return 1 + fi + inf "Extracted module name \"${module_name}\"" + + local requires=$(getRequires "${filepath}") + + # Process each require + echo "${requires}" | while read -r require; do + inf "Processing require \"${require}\"" + local usages=$(perl -nle 'print $& while m{'"${require}"'(?!'\'')}g' "${filepath}" | wc -l) + + if [[ "${usages}" -eq "0" ]]; then + warn "Unused require \"${require}\"" + continue + fi + + local require_name=$(echo "${require}" | perl -pe 's/(\w+\.)+(\w+)/\2/g') + inf "Updating require declaration for ${require}..." + perl -pi -e 's/^(goog\.(require|requireType)\('\'"${require}"\''\);)/const '"${require_name}"' = \1/' "${filepath}" + + # Parse property access of module + local direct_access_count=$(perl -nle 'print $& while m{'"${require}"'[^\.'\'']}g' "${filepath}" | wc -l) + local properties_accessed=$(getPropertiesAccessed "${require}" "${requires}" "${filepath}") + + # Remove $module_name in case it is a child of $require. + # Ex: Blockly.utils.dom would be a child of Blockly, module_overlap would be + # "utils" + local module_overlap=$(echo "${module_name}" | perl -nle 'print $& while m{(?<='"${require}"'\.)\w+}g') + if [[ -n "${module_overlap}" ]]; then + properties_accessed=$(echo "${properties_accessed}" | perl -pe 's/'"${module_overlap}"'//g') + # Trim any extra whitespace created. + properties_accessed=$(echo "${properties_accessed}" | xargs) + fi + + if [[ -n "${properties_accessed}" ]]; then + local comma_properties=$(echo "${properties_accessed}" | perl -pe 's/\s+/, /g' | perl -pe 's/, $//') + inf "Detected references of ${require}: ${comma_properties}" + + for require_prop in $(echo "${properties_accessed}"); do + inf "Updating references of ${require}.${require_prop} to ${require_name}.${require_prop}..." + perl -pi -e 's/'"${require}"'\.'"${require_prop}"'(?!\w)/'"${require_name}"'\.'"${require_prop}"'/g' "${filepath}" + done + fi + + inf "Updating direct references of ${require} to ${require_name}..." + perl -pi -e 's/'"${require}"'(?!['\''\w\.])/'"${require_name}"'/g' "${filepath}" + done + + local missing_requires=$(perl -nle'print $& while m{(? |-s ]" + echo " -h Display help and exit" + echo " -c Create a commit for the specified step [1-4]" + echo " -s Run the specified step [2-4]" +} + +####################################### +# Main entry point. +####################################### +main() { + if [ "$1" = "" ]; then + help + else + local filepath="" + # Support filepath as first argument. + verify-filepath "$1" "false" + if [[ $? -eq 0 ]]; then + filepath="$1" + shift + fi + + local command="$1" + shift + case $command in + -c) commit-step "$@" "${filepath}" ;; + -s) run-step "$@" "${filepath}" ;; + *) err "INVALID ARGUMENT ${command}";; + esac + fi +} + +main "$@" diff --git a/scripts/gulpfiles/appengine_tasks.js b/scripts/gulpfiles/appengine_tasks.js index 2eb1b4d7528..cde9fe799d0 100644 --- a/scripts/gulpfiles/appengine_tasks.js +++ b/scripts/gulpfiles/appengine_tasks.js @@ -1,149 +1,149 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Gulp script to deploy Blockly demos on appengine. - */ - -var gulp = require('gulp'); - -var fs = require('fs'); -var rimraf = require('rimraf'); -var path = require('path'); -var execSync = require('child_process').execSync; - -var packageJson = require('../../package.json'); - -const demoTmpDir = '../_deploy'; -const demoStaticTmpDir = '../_deploy/static'; - -/** - * Cleans and creates the tmp directory used for deploying. - */ -function prepareDeployDir(done) { - // Clean directory if exists. - if (fs.existsSync(demoTmpDir)) { - rimraf.sync(demoTmpDir); - } - fs.mkdirSync(demoStaticTmpDir, {recursive: true}); - done(); -} - -/** - * Copies all files into static deploy directory except for those under - * appengine. - */ -function copyStaticSrc(done) { - execSync(`git archive HEAD | tar -x -C ${demoStaticTmpDir}`, - { stdio: 'inherit' }); - done() -} - -/** - * Copies appengine files into deploy directory. - */ -function copyAppengineSrc() { - const appengineSrc = [ - `${demoStaticTmpDir}/appengine/**/*`, - `${demoStaticTmpDir}/appengine/.gcloudignore`, - ]; - return gulp.src(appengineSrc).pipe(gulp.dest(demoTmpDir)); -} - -/** - * Copies playground deps into deploy directory. - */ -function copyPlaygroundDeps() { - const playgroundDeps = [ - './node_modules/@blockly/dev-tools/dist/index.js', - './node_modules/@blockly/theme-modern/dist/index.js', - './node_modules/@blockly/block-test/dist/index.js', - ]; - return gulp.src(playgroundDeps, {base: '.'}).pipe(gulp.dest(demoStaticTmpDir)); -} - -/** - * Deploys files from tmp directory to appengine to version based on the version - * passed in and then cleans the tmp directory. - */ -function deployToAndClean(demoVersion) { - try { - execSync(`gcloud app deploy --project blockly-demo --version ${demoVersion} --no-promote`, { stdio: 'inherit', cwd: demoTmpDir }); - } finally { - // Clean up tmp directory. - if (fs.existsSync(demoTmpDir)) { - rimraf.sync(demoTmpDir); - } - } -} - -/** - * Constructs a demo version name based on the version specified in - * package.json. - */ -function getDemosVersion() { - const minorVersion = packageJson.version.split('.')[1]; - const patchVersion = packageJson.version.split('.')[2]; - let demoVersion = minorVersion; - if (patchVersion !== 0) { - demoVersion += '-' + patchVersion; - } - return demoVersion; -} - -/** - * Deploys files from tmp directory to appengine to version based on the version - * specified in package.json and then cleans the tmp directory. - */ -function deployAndClean(done) { - const demoVersion = getDemosVersion(); - deployToAndClean(demoVersion); - done(); -} - -/** - * Constructs a beta demo version name based on the current date. - */ -function getDemosBetaVersion() { - var date = new Date(); - var mm = date.getMonth() + 1; // Month, 0-11 - var dd = date.getDate(); // Day of the month, 1-31 - var yyyy = date.getFullYear(); - return `${yyyy}${mm < 10 ? '0' + mm : mm}${dd}-beta`; -} - -/** - * Deploys files from tmp directory to appengine to a beta version based on the - * current date and then cleans the tmp directory. - */ -function deployBetaAndClean(done) { - const demoVersion = getDemosBetaVersion(); - deployToAndClean(demoVersion); - done(); -} - -/** - * Prepares demos. - */ -const prepareDemos = gulp.series( - prepareDeployDir, copyStaticSrc, copyAppengineSrc, copyPlaygroundDeps); - - -/** - * Deploys demos. - */ -const deployDemos = gulp.series(prepareDemos, deployAndClean); - -/** - * Deploys beta version of demos (version appended with -beta). - */ -const deployDemosBeta = gulp.series(prepareDemos, deployBetaAndClean); - -module.exports = { - deployDemos: deployDemos, - deployDemosBeta: deployDemosBeta, - prepareDemos: prepareDemos -} +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Gulp script to deploy Blockly demos on appengine. + */ + +var gulp = require('gulp'); + +var fs = require('fs'); +var rimraf = require('rimraf'); +var path = require('path'); +var execSync = require('child_process').execSync; + +var packageJson = require('../../package.json'); + +const demoTmpDir = '../_deploy'; +const demoStaticTmpDir = '../_deploy/static'; + +/** + * Cleans and creates the tmp directory used for deploying. + */ +function prepareDeployDir(done) { + // Clean directory if exists. + if (fs.existsSync(demoTmpDir)) { + rimraf.sync(demoTmpDir); + } + fs.mkdirSync(demoStaticTmpDir, {recursive: true}); + done(); +} + +/** + * Copies all files into static deploy directory except for those under + * appengine. + */ +function copyStaticSrc(done) { + execSync(`git archive HEAD | tar -x -C ${demoStaticTmpDir}`, + { stdio: 'inherit' }); + done() +} + +/** + * Copies appengine files into deploy directory. + */ +function copyAppengineSrc() { + const appengineSrc = [ + `${demoStaticTmpDir}/appengine/**/*`, + `${demoStaticTmpDir}/appengine/.gcloudignore`, + ]; + return gulp.src(appengineSrc).pipe(gulp.dest(demoTmpDir)); +} + +/** + * Copies playground deps into deploy directory. + */ +function copyPlaygroundDeps() { + const playgroundDeps = [ + './node_modules/@blockly/dev-tools/dist/index.js', + './node_modules/@blockly/theme-modern/dist/index.js', + './node_modules/@blockly/block-test/dist/index.js', + ]; + return gulp.src(playgroundDeps, {base: '.'}).pipe(gulp.dest(demoStaticTmpDir)); +} + +/** + * Deploys files from tmp directory to appengine to version based on the version + * passed in and then cleans the tmp directory. + */ +function deployToAndClean(demoVersion) { + try { + execSync(`gcloud app deploy --project blockly-demo --version ${demoVersion} --no-promote`, { stdio: 'inherit', cwd: demoTmpDir }); + } finally { + // Clean up tmp directory. + if (fs.existsSync(demoTmpDir)) { + rimraf.sync(demoTmpDir); + } + } +} + +/** + * Constructs a demo version name based on the version specified in + * package.json. + */ +function getDemosVersion() { + const minorVersion = packageJson.version.split('.')[1]; + const patchVersion = packageJson.version.split('.')[2]; + let demoVersion = minorVersion; + if (patchVersion !== 0) { + demoVersion += '-' + patchVersion; + } + return demoVersion; +} + +/** + * Deploys files from tmp directory to appengine to version based on the version + * specified in package.json and then cleans the tmp directory. + */ +function deployAndClean(done) { + const demoVersion = getDemosVersion(); + deployToAndClean(demoVersion); + done(); +} + +/** + * Constructs a beta demo version name based on the current date. + */ +function getDemosBetaVersion() { + var date = new Date(); + var mm = date.getMonth() + 1; // Month, 0-11 + var dd = date.getDate(); // Day of the month, 1-31 + var yyyy = date.getFullYear(); + return `${yyyy}${mm < 10 ? '0' + mm : mm}${dd}-beta`; +} + +/** + * Deploys files from tmp directory to appengine to a beta version based on the + * current date and then cleans the tmp directory. + */ +function deployBetaAndClean(done) { + const demoVersion = getDemosBetaVersion(); + deployToAndClean(demoVersion); + done(); +} + +/** + * Prepares demos. + */ +const prepareDemos = gulp.series( + prepareDeployDir, copyStaticSrc, copyAppengineSrc, copyPlaygroundDeps); + + +/** + * Deploys demos. + */ +const deployDemos = gulp.series(prepareDemos, deployAndClean); + +/** + * Deploys beta version of demos (version appended with -beta). + */ +const deployDemosBeta = gulp.series(prepareDemos, deployBetaAndClean); + +module.exports = { + deployDemos: deployDemos, + deployDemosBeta: deployDemosBeta, + prepareDemos: prepareDemos +} diff --git a/scripts/gulpfiles/build_tasks.js b/scripts/gulpfiles/build_tasks.js index 47b3241646a..de0b3381eb5 100644 --- a/scripts/gulpfiles/build_tasks.js +++ b/scripts/gulpfiles/build_tasks.js @@ -1,718 +1,718 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Gulp script to build Blockly for Node & NPM. - */ - -var gulp = require('gulp'); -gulp.replace = require('gulp-replace'); -gulp.rename = require('gulp-rename'); -gulp.sourcemaps = require('gulp-sourcemaps'); - -var path = require('path'); -var fs = require('fs'); -var execSync = require('child_process').execSync; -var through2 = require('through2'); - -const clangFormat = require('clang-format'); -const clangFormatter = require('gulp-clang-format'); -var closureCompiler = require('google-closure-compiler').gulp(); -var closureDeps = require('google-closure-deps'); -var argv = require('yargs').argv; -var rimraf = require('rimraf'); - -var {BUILD_DIR, TSC_OUTPUT_DIR} = require('./config'); -var {getPackageJson} = require('./helper_tasks'); - -//////////////////////////////////////////////////////////// -// Build // -//////////////////////////////////////////////////////////// - -/** - * Suffix to add to compiled output files. - */ -const COMPILED_SUFFIX = '_compressed'; - -/** - * Checked-in file to cache output of closure-calculate-chunks, to - * allow for testing on node.js v12 (or earlier) which is not - * compatible with closure-calculate-chunks. - */ -const CHUNK_CACHE_FILE = 'scripts/gulpfiles/chunks.json' - -/** - * Name of an object to be used as a shared "global" namespace by - * chunks generated by the Closure Compiler with the - * --rename_prefix_namespace option (see - * https://github.com/google/closure-compiler/wiki/Chunk-output-for-dynamic-loading#using-global_namespace-as-the-chunk-output-type - * for more information.) The wrapper for the first chunk will create - * an object with this name and save it; wrappers for other chunks - * will ensure that the same object is available with this same name. - * The --rename_prefix_namespace option will then cause the compiled - * chunks to create properties on this object instead of creating - * "global" (really chunk-local) variables. This allows later chunks - * to depend upon modules from earlier chunks. - * - * It can be any value that doesn't clash with a global variable or - * wrapper argument, but as it will appear many times in the compiled - * output it is preferable that it be short. - */ -const NAMESPACE_VARIABLE = '$'; - -/** - * Property that will be used to store the value of the namespace - * object on each chunk's exported object. This is so that dependent - * chunks can retrieve the namespace object and thereby access modules - * defined in the parent chunk (or it's parent, etc.). This should be - * chosen so as to not collide with any exported name. - */ -const NAMESPACE_PROPERTY = '__namespace__'; - -/** - * A list of chunks. Order matters: later chunks can depend on - * earlier ones, but not vice-versa. All chunks are assumed to depend - * on the first chunk. Properties are as follows: - * - * - .name: the name of the chunk. Used to label it when describing - * it to Closure Compiler and forms the prefix of filename the chunk - * will be written to. - * - .entry: the source .js file which is the entrypoint for the - * chunk. - * - .reexport: if running in a browser, save the chunk's exports - * object at this location in the global namespace. - * - * The function getChunkOptions will, after running - * closure-calculate-chunks, update each chunk to add the following - * properties: - * - * - .parent: the parent chunk of the given chunk. Typically - * chunks[0], except for chunk[0].parent which will be null. - * - .wrapper: the generated chunk wrapper. - * - * Output files will be named .js. - */ -const chunks = [ - { - name: 'blockly', - entry: 'core/blockly.js', - reexport: 'Blockly', - }, - { - name: 'blocks', - entry: 'blocks/blocks.js', - reexport: 'Blockly.libraryBlocks', - }, - { - name: 'javascript', - entry: 'generators/javascript/all.js', - reexport: 'Blockly.JavaScript', - }, - { - name: 'python', - entry: 'generators/python/all.js', - reexport: 'Blockly.Python', - }, - { - name: 'php', - entry: 'generators/php/all.js', - reexport: 'Blockly.PHP', - }, - { - name: 'lua', - entry: 'generators/lua/all.js', - reexport: 'Blockly.Lua', - }, - { - name: 'dart', - entry: 'generators/dart/all.js', - reexport: 'Blockly.Dart', - } -]; - -const licenseRegex = `\\/\\*\\* - \\* @license - \\* (Copyright \\d+ (Google LLC|Massachusetts Institute of Technology)) -( \\* All rights reserved. -)? \\* SPDX-License-Identifier: Apache-2.0 - \\*\\/`; - -/** - * Helper method for stripping the Google's and MIT's Apache Licenses. - */ -function stripApacheLicense() { - // Strip out Google's and MIT's Apache licences. - // Closure Compiler preserves dozens of Apache licences in the Blockly code. - // Remove these if they belong to Google or MIT. - // MIT's permission to do this is logged in Blockly issue #2412. - return gulp.replace(new RegExp(licenseRegex, "g"), '\n\n\n\n'); - // Replace with the same number of lines so that source-maps are not affected. -} - -/** - * Closure compiler diagnostic groups we want to be treated as errors. - * These are effected when the --debug or --strict flags are passed. - * For a full list of closure compiler groups, consult the output of - * google-closure-compiler --help or look in the source here: - * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/DiagnosticGroups.java#L117 - * - * The list in JSCOMP_ERROR contains all the diagnostic groups we know - * about, but some are commented out if we don't want them, and may - * appear in JSCOMP_WARNING or JSCOMP_OFF instead. Items not - * appearing on any list will default to setting provided by the - * compiler, which may vary depending on compilation level. - */ -var JSCOMP_ERROR = [ - // 'accessControls', // Deprecated; means same as visibility. - 'checkPrototypalTypes', - 'checkRegExp', - 'checkTypes', - 'checkVars', - 'conformanceViolations', - 'const', - 'constantProperty', - 'deprecated', - 'deprecatedAnnotations', - 'duplicateMessage', - 'es5Strict', - 'externsValidation', - 'extraRequire', // Undocumented but valid. - 'functionParams', - 'globalThis', - 'invalidCasts', - 'misplacedTypeAnnotation', - // 'missingOverride', // There are many of these, which should be fixed. - 'missingPolyfill', - 'missingProperties', - 'missingProvide', - 'missingRequire', - 'missingReturn', - // 'missingSourcesWarnings', // Group of several other options. - 'moduleLoad', - 'msgDescriptions', - 'nonStandardJsDocs', - // 'partialAlias', // Don't want this to be an error yet; only warning. - // 'polymer', // Not applicable. - // 'reportUnknownTypes', // VERY verbose. - // 'strictCheckTypes', // Use --strict to enable. - // 'strictMissingProperties', // Part of strictCheckTypes. - 'strictModuleChecks', // Undocumented but valid. - 'strictModuleDepCheck', - // 'strictPrimitiveOperators', // Part of strictCheckTypes. - 'suspiciousCode', - 'typeInvalidation', - 'undefinedVars', - 'underscore', - 'unknownDefines', - 'unusedLocalVariables', - 'unusedPrivateMembers', - 'uselessCode', - 'untranspilableFeatures', - // 'visibility', // Disabled; see note in JSCOMP_OFF. -]; - -/** - * Closure compiler diagnostic groups we want to be treated as warnings. - * These are effected when the --debug or --strict flags are passed. - */ -var JSCOMP_WARNING = [ -]; - -/** - * Closure compiler diagnostic groups we want to be ignored. - * These suppressions are always effected by default. - */ -var JSCOMP_OFF = [ - /* In order to transition to ES modules, modules will need to import - * one another by relative paths. This means that the existing - * practice of moving all source files into the same directory for - * compilation (see docs for flattenCorePaths) would break - * imports. Not flattening files in this way breaks our usage - * of @package however; files were flattened so that all Blockly - * source files are in the same directory and can use @package to - * mark methods that are only allowed for use by Blockly, while - * still allowing access between e.g. core/events/* and - * core/utils/*. We were downgrading access control violations - * (including @private) to warnings, but this ends up being so - * spammy that it makes the compiler output nearly useless. - * - * Once ES module migration is complete, they will be re-enabled and - * an alternative to @package will be established. - */ - 'visibility', -]; - -/** - * This task updates tests/deps.js, used by blockly_uncompressed.js - * when loading Blockly in uncompiled mode. - * - * Also updates tests/deps.mocha.js, used by the mocha test suite. - */ -function buildDeps(done) { - const closurePath = argv.closureLibrary ? - 'node_modules/google-closure-library/closure/goog' : - 'closure/goog'; - - const coreDir = argv.compileTs ? path.join(TSC_OUTPUT_DIR, 'core') : 'core'; - const roots = [ - closurePath, - coreDir, - 'blocks', - 'generators', - ]; - - const testRoots = [ - ...roots, - 'tests/mocha' - ]; - - const args = roots.map(root => `--root '${root}' `).join(''); - execSync(`closure-make-deps ${args} > tests/deps.js`, {stdio: 'inherit'}); - - // Use grep to filter out the entries that are already in deps.js. - const testArgs = testRoots.map(root => `--root '${root}' `).join(''); - execSync(`closure-make-deps ${testArgs} | grep 'tests/mocha'` + - ' > tests/deps.mocha.js', {stdio: 'inherit'}); - done(); -}; - -/** - * This task regenrates msg/json/en.js and msg/json/qqq.js from - * msg/messages.js. - */ -function generateLangfiles(done) { - // Run js_to_json.py - const jsToJsonCmd = `python3 scripts/i18n/js_to_json.py \ - --input_file ${path.join('msg', 'messages.js')} \ - --output_dir ${path.join('msg', 'json')} \ - --quiet`; - execSync(jsToJsonCmd, { stdio: 'inherit' }); - - console.log(` -Regenerated several flies in msg/json/. Now run - - git diff msg/json/*.json - -and check that operation has not overwritten any modifications made to -hints, etc. by the TranslateWiki volunteers. If it has, backport -their changes to msg/messages.js and re-run 'npm run generate:langfiles'. - -Once you are satisfied that any new hints have been backported you may -go ahead and commit the changes, but note that the generate script -will have removed the translator credits - be careful not to commit -this removal! -`); - - done(); -}; - -/** - * This task builds Blockly's lang files. - * msg/*.js - */ -function buildLangfiles(done) { - // Create output directory. - const outputDir = path.join(BUILD_DIR, 'msg', 'js'); - fs.mkdirSync(outputDir, {recursive: true}); - - // Run create_messages.py. - let json_files = fs.readdirSync(path.join('msg', 'json')); - json_files = json_files.filter(file => file.endsWith('json') && - !(new RegExp(/(keys|synonyms|qqq|constants)\.json$/).test(file))); - json_files = json_files.map(file => path.join('msg', 'json', file)); - const createMessagesCmd = `python3 ./scripts/i18n/create_messages.py \ - --source_lang_file ${path.join('msg', 'json', 'en.json')} \ - --source_synonym_file ${path.join('msg', 'json', 'synonyms.json')} \ - --source_constants_file ${path.join('msg', 'json', 'constants.json')} \ - --key_file ${path.join('msg', 'json', 'keys.json')} \ - --output_dir ${outputDir} \ - --quiet ${json_files.join(' ')}`; - execSync(createMessagesCmd, {stdio: 'inherit'}); - - done(); -}; - -/** - * A helper method to return an closure compiler chunk wrapper that - * wraps the compiler output for the given chunk in a Universal Module - * Definition. - */ -function chunkWrapper(chunk) { - // Each chunk can have only a single dependency, which is its parent - // chunk. It is used only to retrieve the namespace object, which - // is saved on to the exports object for the chunk so that any child - // chunk(s) can obtain it. - - // JavaScript expressions for the amd, cjs and browser dependencies. - let amdDepsExpr = ''; - let cjsDepsExpr = ''; - let browserDepsExpr = ''; - // Arguments for the factory function. - let factoryArgs = ''; - // Expression to get or create the namespace object. - let namespaceExpr = `{}`; - - if (chunk.parent) { - const parentFilename = - JSON.stringify(`./${chunk.parent.name}${COMPILED_SUFFIX}.js`); - amdDepsExpr = parentFilename; - cjsDepsExpr = `require(${parentFilename})`; - browserDepsExpr = `root.${chunk.parent.reexport}`; - factoryArgs = '__parent__'; - namespaceExpr = `${factoryArgs}.${NAMESPACE_PROPERTY}`; - } - - // Expression that evaluates the the value of the exports object for - // the specified chunk. For now we guess the name that is created - // by the module's goog.module.delcareLegacyNamespace call based on - // chunk.reexport. - const exportsExpression = `${NAMESPACE_VARIABLE}.${chunk.reexport}`; - // In near future we might try to guess the internally-generated - // name for the ES module's exports object. - // const exportsExpression = - // 'module$' + chunk.entry.replace(/\.m?js$/, '').replace(/\//g, '$'); - - - // Note that when loading in a browser the base of the exported path - // (e.g. Blockly.blocks.all - see issue #5932) might not exist - // before factory has been executed, so calling factory() and - // assigning the result are done in separate statements to ensure - // they are sequenced correctly. - return `// Do not edit this file; automatically generated. - -/* eslint-disable */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { // AMD - define([${amdDepsExpr}], factory); - } else if (typeof exports === 'object') { // Node.js - module.exports = factory(${cjsDepsExpr}); - } else { // Browser - var factoryExports = factory(${browserDepsExpr}); - root.${chunk.reexport} = factoryExports; - } -}(this, function(${factoryArgs}) { -var ${NAMESPACE_VARIABLE}=${namespaceExpr}; -%output% -${exportsExpression}.${NAMESPACE_PROPERTY}=${NAMESPACE_VARIABLE}; -return ${exportsExpression}; -})); -`; -}; - -/** - * Get chunking options to pass to Closure Compiler by using - * closure-calculate-chunks (hereafter "ccc") to generate them based - * on the deps.js file (which must be up to date!). - * - * The generated options are modified to use the original chunk names - * given in chunks instead of the entry-point based names used by ccc. - * - * @return {{chunk: !Array, js: !Array}} The chunking - * information, in the same form as emitted by - * closure-calculate-chunks. - * - * TODO(cpcallen): maybeAddClosureLibrary? Or maybe remove base.js? - */ -function getChunkOptions() { - if (argv.compileTs) { - chunks[0].entry = path.join(TSC_OUTPUT_DIR, chunks[0].entry); - } - const cccArgs = [ - '--closure-library-base-js-path ./closure/goog/base_minimal.js', - '--deps-file ./tests/deps.js', - ...(chunks.map(chunk => `--entrypoint '${chunk.entry}'`)), - ]; - const cccCommand = `closure-calculate-chunks ${cccArgs.join(' ')}`; - - // Because (as of 2021-11-25) closure-calculate-chunks v3.0.2 - // requries node.js v14 or later, we save the output of cccCommand - // in a checked-in .json file, so we can use the contents of that - // file when building on older versions of node. - // - // When this is no longer necessary the following section can be - // replaced with: - // - // const rawOptions = JSON.parse(execSync(cccCommand)); - const nodeMajorVersion = /v(\d+)\./.exec(process.version)[1]; - let rawOptions; - if (nodeMajorVersion >= 14) { - rawOptions = JSON.parse(String(execSync(cccCommand))); - // Replace absolute paths with relative ones, so they will be - // valid on other machines. Only needed because we're saving this - // output to use later on another machine. - rawOptions.js = rawOptions.js.map(p => p.replace(process.cwd(), '.')); - fs.writeFileSync(CHUNK_CACHE_FILE, - JSON.stringify(rawOptions, null, 2) + '\n'); - } else { - console.log(`Warning: using pre-computed chunks from ${CHUNK_CACHE_FILE}`); - rawOptions = JSON.parse(String(fs.readFileSync(CHUNK_CACHE_FILE))); - } - - // rawOptions should now be of the form: - // - // { - // chunk: [ - // 'blockly:258', - // 'all:10:blockly', - // 'all1:11:blockly', - // 'all2:11:blockly', - // /* ... remaining handful of chunks */ - // ], - // js: [ - // './core/serialization/workspaces.js', - // './core/serialization/variables.js', - // /* ... remaining several hundred files */ - // ], - // } - // - // This is designed to be passed directly as-is as the options - // object to the Closure Compiler node API, but we want to replace - // the unhelpful entry-point based chunk names (let's call these - // "nicknames") with the ones from chunks. Unforutnately there's no - // guarnatee they will be in the same order that the entry points - // were supplied in (though it happens to work out that way if no - // chunk depends on any chunk but the first), so we look for - // one of the entrypoints amongst the files in each chunk. - const chunkByNickname = Object.create(null); - const jsFiles = rawOptions.js.slice(); // Will be modified via .splice! - const chunkList = rawOptions.chunk.map((element) => { - const [nickname, numJsFiles, parentNick] = element.split(':'); - - // Get array of files for just this chunk. - const chunkFiles = jsFiles.splice(0, numJsFiles); - - // Figure out which chunk this is by looking for one of the - // known chunk entrypoints in chunkFiles. N.B.: O(n*m). :-( - const chunk = chunks.find( - chunk => chunkFiles.find(f => f.endsWith('/' + chunk.entry))); - if (!chunk) throw new Error('Unable to identify chunk'); - - // Replace nicknames with the names we chose. - chunkByNickname[nickname] = chunk; - if (!parentNick) { // Chunk has no parent. - chunk.parent = null; - return `${chunk.name}:${numJsFiles}`; - } - chunk.parent = chunkByNickname[parentNick]; - return `${chunk.name}:${numJsFiles}:${chunk.parent.name}`; - }); - - // Generate a chunk wrapper for each chunk. - for (const chunk of chunks) { - chunk.wrapper = chunkWrapper(chunk); - } - const chunkWrappers = chunks.map(chunk => `${chunk.name}:${chunk.wrapper}`); - - return {chunk: chunkList, js: rawOptions.js, chunk_wrapper: chunkWrappers}; -} - -/** - * RegExp that globally matches path.sep (i.e., "/" or "\"). - */ -const pathSepRegExp = new RegExp(path.sep.replace(/\\/, '\\\\'), "g"); - -/** - * Modify the supplied gulp.rename path object to relax @package - * restrictions in core/. - * - * Background: subdirectories of core/ are used to group similar files - * together but are not intended to limit access to names - * marked @package; instead, that annotation is intended to mean only - * that the annotated name not part of the public API. - * - * To make @package behave less strictly in core/, this function can - * be used to as a gulp.rename filter, modifying the path object to - * flatten all files in core/** so that they're in the same directory, - * while ensuring that files with the same base name don't conflict. - * - * @param {{dirname: string, basename: string, extname: string}} - * pathObject The path argument supplied by gulp.rename to its - * callback. Modified in place. - */ -function flattenCorePaths(pathObject) { - const dirs = pathObject.dirname.split(path.sep); - const coreIndex = argv.compileTs ? 2 : 0; - if (dirs[coreIndex] === 'core') { - pathObject.dirname = path.join(...dirs.slice(0, coreIndex + 1)); - pathObject.basename = - dirs.slice(coreIndex + 1).concat(pathObject.basename).join('-slash-'); - } -} - -/** - * Undo the effects of flattenCorePaths on a single path string. - * @param string pathString The flattened path. - * @return string The path after unflattening. - */ -function unflattenCorePaths(pathString) { - return pathString.replace(/-slash-/g, path.sep); -} - -/** - * Helper method for calling the Closure compiler, establishing - * default options (that can be overridden by the caller). - * @param {*} options Caller-supplied options that will override the - * defaultOptions. - */ -function compile(options) { - const defaultOptions = { - compilation_level: 'SIMPLE_OPTIMIZATIONS', - warning_level: argv.verbose ? 'VERBOSE' : 'DEFAULT', - language_in: 'ECMASCRIPT_2020', - language_out: 'ECMASCRIPT5_STRICT', - jscomp_off: [...JSCOMP_OFF], - rewrite_polyfills: true, - hide_warnings_for: 'node_modules', - define: ['COMPILED=true'], - }; - if (argv.debug || argv.strict) { - defaultOptions.jscomp_error = [...JSCOMP_ERROR]; - defaultOptions.jscomp_warning = [...JSCOMP_WARNING]; - if (argv.strict) { - defaultOptions.jscomp_error.push('strictCheckTypes'); - } - } - // Extra options for Closure Compiler gulp plugin. - const platform = ['native', 'java', 'javascript']; - - return closureCompiler({...defaultOptions, ...options}, {platform}); -} - -/** - * This task compiles the core library, blocks and generators, creating - * blockly_compressed.js, blocks_compressed.js, etc. - * - * The deps.js file must be up-to-date. - */ -function buildCompiled() { - // Get chunking. - const chunkOptions = getChunkOptions(); - // Closure Compiler options. - const packageJson = getPackageJson(); // For version number. - const options = { - define: 'Blockly.VERSION="' + packageJson.version + '"', - chunk: chunkOptions.chunk, - chunk_wrapper: chunkOptions.chunk_wrapper, - rename_prefix_namespace: NAMESPACE_VARIABLE, - // Don't supply the list of source files in chunkOptions.js as an - // option to Closure Compiler; instead feed them as input via gulp.src. - }; - - // Fire up compilation pipline. - return gulp.src(chunkOptions.js, {base: './'}) - .pipe(stripApacheLicense()) - .pipe(gulp.sourcemaps.init()) - // .pipe(gulp.rename(flattenCorePaths)) - .pipe(compile(options)) - .pipe(gulp.rename({suffix: COMPILED_SUFFIX})) - // .pipe(gulp.sourcemaps.mapSources(unflattenCorePaths)) - .pipe( - gulp.sourcemaps.write('.', {includeContent: false, sourceRoot: './'})) - .pipe(gulp.dest(BUILD_DIR)); -}; - -/** - * This task builds Blockly core, blocks and generators together and uses - * closure compiler's ADVANCED_COMPILATION mode. - */ -function buildAdvancedCompilationTest() { - const coreSrcs = argv.compileTs ? - TSC_OUTPUT_DIR + '/core/**/*.js' : 'core/**/*.js'; - const srcs = [ - 'closure/goog/base_minimal.js', - coreSrcs, - 'blocks/**/*.js', - 'generators/**/*.js', - 'tests/compile/main.js', - 'tests/compile/test_blocks.js', - ]; - - // Closure Compiler options. - const options = { - dependency_mode: 'PRUNE', - compilation_level: 'ADVANCED_OPTIMIZATIONS', - entry_point: './tests/compile/main.js', - js_output_file: 'main_compressed.js', - }; - return gulp.src(srcs, {base: './'}) - .pipe(stripApacheLicense()) - .pipe(gulp.sourcemaps.init()) - // .pipe(gulp.rename(flattenCorePaths)) - .pipe(compile(options)) - // .pipe(gulp.sourcemaps.mapSources(unflattenCorePaths)) - .pipe(gulp.sourcemaps.write( - '.', {includeContent: false, sourceRoot: '../../'})) - .pipe(gulp.dest('./tests/compile/')); -} - -/** - * This task builds all of Blockly: - * blockly_compressed.js - * blocks_compressed.js - * javascript_compressed.js - * python_compressed.js - * php_compressed.js - * lua_compressed.js - * dart_compressed.js - * blockly_uncompressed.js - * msg/json/*.js - * test/deps*.js - */ -const build = gulp.parallel( - gulp.series(buildDeps, buildCompiled), - buildLangfiles, - ); - -/** - * This task copies built files from BUILD_DIR back to the repository - * so they can be committed to git. - */ -function checkinBuilt() { - return gulp.src([ - `${BUILD_DIR}/**.js`, - `${BUILD_DIR}/**.js.map`, - `${BUILD_DIR}/**/**.js`, - `${BUILD_DIR}/**/**.js.map`, - ]).pipe(gulp.dest('.')); -}; - -/** - * This task cleans the build directory (by deleting it). - */ -function cleanBuildDir(done) { - // Sanity check. - if (BUILD_DIR === '.' || BUILD_DIR === '/') { - throw new Error(`Refusing to rm -rf ${BUILD_DIR}`); - } - rimraf(BUILD_DIR, done); -} - -/** - * Runs clang format on all files in the core directory. - */ -function format() { - return gulp.src(['core/**/*.js', 'blocks/**/*.js'], {base: '.'}) - .pipe(clangFormatter.format('file', clangFormat)) - .pipe(gulp.dest('.')); -}; - -function buildTypescript(done) { - execSync('npx tsc', {stdio: 'inherit'}); - done(); -} - -module.exports = { - build: build, - deps: buildDeps, - generateLangfiles: generateLangfiles, - langfiles: buildLangfiles, - compiled: buildCompiled, - format: format, - checkinBuilt: checkinBuilt, - cleanBuildDir: cleanBuildDir, - advancedCompilationTest: buildAdvancedCompilationTest, - buildTypescript: buildTypescript -} +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Gulp script to build Blockly for Node & NPM. + */ + +var gulp = require('gulp'); +gulp.replace = require('gulp-replace'); +gulp.rename = require('gulp-rename'); +gulp.sourcemaps = require('gulp-sourcemaps'); + +var path = require('path'); +var fs = require('fs'); +var execSync = require('child_process').execSync; +var through2 = require('through2'); + +const clangFormat = require('clang-format'); +const clangFormatter = require('gulp-clang-format'); +var closureCompiler = require('google-closure-compiler').gulp(); +var closureDeps = require('google-closure-deps'); +var argv = require('yargs').argv; +var rimraf = require('rimraf'); + +var {BUILD_DIR, TSC_OUTPUT_DIR} = require('./config'); +var {getPackageJson} = require('./helper_tasks'); + +//////////////////////////////////////////////////////////// +// Build // +//////////////////////////////////////////////////////////// + +/** + * Suffix to add to compiled output files. + */ +const COMPILED_SUFFIX = '_compressed'; + +/** + * Checked-in file to cache output of closure-calculate-chunks, to + * allow for testing on node.js v12 (or earlier) which is not + * compatible with closure-calculate-chunks. + */ +const CHUNK_CACHE_FILE = 'scripts/gulpfiles/chunks.json' + +/** + * Name of an object to be used as a shared "global" namespace by + * chunks generated by the Closure Compiler with the + * --rename_prefix_namespace option (see + * https://github.com/google/closure-compiler/wiki/Chunk-output-for-dynamic-loading#using-global_namespace-as-the-chunk-output-type + * for more information.) The wrapper for the first chunk will create + * an object with this name and save it; wrappers for other chunks + * will ensure that the same object is available with this same name. + * The --rename_prefix_namespace option will then cause the compiled + * chunks to create properties on this object instead of creating + * "global" (really chunk-local) variables. This allows later chunks + * to depend upon modules from earlier chunks. + * + * It can be any value that doesn't clash with a global variable or + * wrapper argument, but as it will appear many times in the compiled + * output it is preferable that it be short. + */ +const NAMESPACE_VARIABLE = '$'; + +/** + * Property that will be used to store the value of the namespace + * object on each chunk's exported object. This is so that dependent + * chunks can retrieve the namespace object and thereby access modules + * defined in the parent chunk (or it's parent, etc.). This should be + * chosen so as to not collide with any exported name. + */ +const NAMESPACE_PROPERTY = '__namespace__'; + +/** + * A list of chunks. Order matters: later chunks can depend on + * earlier ones, but not vice-versa. All chunks are assumed to depend + * on the first chunk. Properties are as follows: + * + * - .name: the name of the chunk. Used to label it when describing + * it to Closure Compiler and forms the prefix of filename the chunk + * will be written to. + * - .entry: the source .js file which is the entrypoint for the + * chunk. + * - .reexport: if running in a browser, save the chunk's exports + * object at this location in the global namespace. + * + * The function getChunkOptions will, after running + * closure-calculate-chunks, update each chunk to add the following + * properties: + * + * - .parent: the parent chunk of the given chunk. Typically + * chunks[0], except for chunk[0].parent which will be null. + * - .wrapper: the generated chunk wrapper. + * + * Output files will be named .js. + */ +const chunks = [ + { + name: 'blockly', + entry: 'core/blockly.js', + reexport: 'Blockly', + }, + { + name: 'blocks', + entry: 'blocks/blocks.js', + reexport: 'Blockly.libraryBlocks', + }, + { + name: 'javascript', + entry: 'generators/javascript/all.js', + reexport: 'Blockly.JavaScript', + }, + { + name: 'python', + entry: 'generators/python/all.js', + reexport: 'Blockly.Python', + }, + { + name: 'php', + entry: 'generators/php/all.js', + reexport: 'Blockly.PHP', + }, + { + name: 'lua', + entry: 'generators/lua/all.js', + reexport: 'Blockly.Lua', + }, + { + name: 'dart', + entry: 'generators/dart/all.js', + reexport: 'Blockly.Dart', + } +]; + +const licenseRegex = `\\/\\*\\* + \\* @license + \\* (Copyright \\d+ (Google LLC|Massachusetts Institute of Technology)) +( \\* All rights reserved. +)? \\* SPDX-License-Identifier: Apache-2.0 + \\*\\/`; + +/** + * Helper method for stripping the Google's and MIT's Apache Licenses. + */ +function stripApacheLicense() { + // Strip out Google's and MIT's Apache licences. + // Closure Compiler preserves dozens of Apache licences in the Blockly code. + // Remove these if they belong to Google or MIT. + // MIT's permission to do this is logged in Blockly issue #2412. + return gulp.replace(new RegExp(licenseRegex, "g"), '\n\n\n\n'); + // Replace with the same number of lines so that source-maps are not affected. +} + +/** + * Closure compiler diagnostic groups we want to be treated as errors. + * These are effected when the --debug or --strict flags are passed. + * For a full list of closure compiler groups, consult the output of + * google-closure-compiler --help or look in the source here: + * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/DiagnosticGroups.java#L117 + * + * The list in JSCOMP_ERROR contains all the diagnostic groups we know + * about, but some are commented out if we don't want them, and may + * appear in JSCOMP_WARNING or JSCOMP_OFF instead. Items not + * appearing on any list will default to setting provided by the + * compiler, which may vary depending on compilation level. + */ +var JSCOMP_ERROR = [ + // 'accessControls', // Deprecated; means same as visibility. + 'checkPrototypalTypes', + 'checkRegExp', + 'checkTypes', + 'checkVars', + 'conformanceViolations', + 'const', + 'constantProperty', + 'deprecated', + 'deprecatedAnnotations', + 'duplicateMessage', + 'es5Strict', + 'externsValidation', + 'extraRequire', // Undocumented but valid. + 'functionParams', + 'globalThis', + 'invalidCasts', + 'misplacedTypeAnnotation', + // 'missingOverride', // There are many of these, which should be fixed. + 'missingPolyfill', + 'missingProperties', + 'missingProvide', + 'missingRequire', + 'missingReturn', + // 'missingSourcesWarnings', // Group of several other options. + 'moduleLoad', + 'msgDescriptions', + 'nonStandardJsDocs', + // 'partialAlias', // Don't want this to be an error yet; only warning. + // 'polymer', // Not applicable. + // 'reportUnknownTypes', // VERY verbose. + // 'strictCheckTypes', // Use --strict to enable. + // 'strictMissingProperties', // Part of strictCheckTypes. + 'strictModuleChecks', // Undocumented but valid. + 'strictModuleDepCheck', + // 'strictPrimitiveOperators', // Part of strictCheckTypes. + 'suspiciousCode', + 'typeInvalidation', + 'undefinedVars', + 'underscore', + 'unknownDefines', + 'unusedLocalVariables', + 'unusedPrivateMembers', + 'uselessCode', + 'untranspilableFeatures', + // 'visibility', // Disabled; see note in JSCOMP_OFF. +]; + +/** + * Closure compiler diagnostic groups we want to be treated as warnings. + * These are effected when the --debug or --strict flags are passed. + */ +var JSCOMP_WARNING = [ +]; + +/** + * Closure compiler diagnostic groups we want to be ignored. + * These suppressions are always effected by default. + */ +var JSCOMP_OFF = [ + /* In order to transition to ES modules, modules will need to import + * one another by relative paths. This means that the existing + * practice of moving all source files into the same directory for + * compilation (see docs for flattenCorePaths) would break + * imports. Not flattening files in this way breaks our usage + * of @package however; files were flattened so that all Blockly + * source files are in the same directory and can use @package to + * mark methods that are only allowed for use by Blockly, while + * still allowing access between e.g. core/events/* and + * core/utils/*. We were downgrading access control violations + * (including @private) to warnings, but this ends up being so + * spammy that it makes the compiler output nearly useless. + * + * Once ES module migration is complete, they will be re-enabled and + * an alternative to @package will be established. + */ + 'visibility', +]; + +/** + * This task updates tests/deps.js, used by blockly_uncompressed.js + * when loading Blockly in uncompiled mode. + * + * Also updates tests/deps.mocha.js, used by the mocha test suite. + */ +function buildDeps(done) { + const closurePath = argv.closureLibrary ? + 'node_modules/google-closure-library/closure/goog' : + 'closure/goog'; + + const coreDir = argv.compileTs ? path.join(TSC_OUTPUT_DIR, 'core') : 'core'; + const roots = [ + closurePath, + coreDir, + 'blocks', + 'generators', + ]; + + const testRoots = [ + ...roots, + 'tests/mocha' + ]; + + const args = roots.map(root => `--root '${root}' `).join(''); + execSync(`closure-make-deps ${args} > tests/deps.js`, {stdio: 'inherit'}); + + // Use grep to filter out the entries that are already in deps.js. + const testArgs = testRoots.map(root => `--root '${root}' `).join(''); + execSync(`closure-make-deps ${testArgs} | grep 'tests/mocha'` + + ' > tests/deps.mocha.js', {stdio: 'inherit'}); + done(); +}; + +/** + * This task regenrates msg/json/en.js and msg/json/qqq.js from + * msg/messages.js. + */ +function generateLangfiles(done) { + // Run js_to_json.py + const jsToJsonCmd = `python3 scripts/i18n/js_to_json.py \ + --input_file ${path.join('msg', 'messages.js')} \ + --output_dir ${path.join('msg', 'json')} \ + --quiet`; + execSync(jsToJsonCmd, { stdio: 'inherit' }); + + console.log(` +Regenerated several flies in msg/json/. Now run + + git diff msg/json/*.json + +and check that operation has not overwritten any modifications made to +hints, etc. by the TranslateWiki volunteers. If it has, backport +their changes to msg/messages.js and re-run 'npm run generate:langfiles'. + +Once you are satisfied that any new hints have been backported you may +go ahead and commit the changes, but note that the generate script +will have removed the translator credits - be careful not to commit +this removal! +`); + + done(); +}; + +/** + * This task builds Blockly's lang files. + * msg/*.js + */ +function buildLangfiles(done) { + // Create output directory. + const outputDir = path.join(BUILD_DIR, 'msg', 'js'); + fs.mkdirSync(outputDir, {recursive: true}); + + // Run create_messages.py. + let json_files = fs.readdirSync(path.join('msg', 'json')); + json_files = json_files.filter(file => file.endsWith('json') && + !(new RegExp(/(keys|synonyms|qqq|constants)\.json$/).test(file))); + json_files = json_files.map(file => path.join('msg', 'json', file)); + const createMessagesCmd = `python3 ./scripts/i18n/create_messages.py \ + --source_lang_file ${path.join('msg', 'json', 'en.json')} \ + --source_synonym_file ${path.join('msg', 'json', 'synonyms.json')} \ + --source_constants_file ${path.join('msg', 'json', 'constants.json')} \ + --key_file ${path.join('msg', 'json', 'keys.json')} \ + --output_dir ${outputDir} \ + --quiet ${json_files.join(' ')}`; + execSync(createMessagesCmd, {stdio: 'inherit'}); + + done(); +}; + +/** + * A helper method to return an closure compiler chunk wrapper that + * wraps the compiler output for the given chunk in a Universal Module + * Definition. + */ +function chunkWrapper(chunk) { + // Each chunk can have only a single dependency, which is its parent + // chunk. It is used only to retrieve the namespace object, which + // is saved on to the exports object for the chunk so that any child + // chunk(s) can obtain it. + + // JavaScript expressions for the amd, cjs and browser dependencies. + let amdDepsExpr = ''; + let cjsDepsExpr = ''; + let browserDepsExpr = ''; + // Arguments for the factory function. + let factoryArgs = ''; + // Expression to get or create the namespace object. + let namespaceExpr = `{}`; + + if (chunk.parent) { + const parentFilename = + JSON.stringify(`./${chunk.parent.name}${COMPILED_SUFFIX}.js`); + amdDepsExpr = parentFilename; + cjsDepsExpr = `require(${parentFilename})`; + browserDepsExpr = `root.${chunk.parent.reexport}`; + factoryArgs = '__parent__'; + namespaceExpr = `${factoryArgs}.${NAMESPACE_PROPERTY}`; + } + + // Expression that evaluates the the value of the exports object for + // the specified chunk. For now we guess the name that is created + // by the module's goog.module.delcareLegacyNamespace call based on + // chunk.reexport. + const exportsExpression = `${NAMESPACE_VARIABLE}.${chunk.reexport}`; + // In near future we might try to guess the internally-generated + // name for the ES module's exports object. + // const exportsExpression = + // 'module$' + chunk.entry.replace(/\.m?js$/, '').replace(/\//g, '$'); + + + // Note that when loading in a browser the base of the exported path + // (e.g. Blockly.blocks.all - see issue #5932) might not exist + // before factory has been executed, so calling factory() and + // assigning the result are done in separate statements to ensure + // they are sequenced correctly. + return `// Do not edit this file; automatically generated. + +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define([${amdDepsExpr}], factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(${cjsDepsExpr}); + } else { // Browser + var factoryExports = factory(${browserDepsExpr}); + root.${chunk.reexport} = factoryExports; + } +}(this, function(${factoryArgs}) { +var ${NAMESPACE_VARIABLE}=${namespaceExpr}; +%output% +${exportsExpression}.${NAMESPACE_PROPERTY}=${NAMESPACE_VARIABLE}; +return ${exportsExpression}; +})); +`; +}; + +/** + * Get chunking options to pass to Closure Compiler by using + * closure-calculate-chunks (hereafter "ccc") to generate them based + * on the deps.js file (which must be up to date!). + * + * The generated options are modified to use the original chunk names + * given in chunks instead of the entry-point based names used by ccc. + * + * @return {{chunk: !Array, js: !Array}} The chunking + * information, in the same form as emitted by + * closure-calculate-chunks. + * + * TODO(cpcallen): maybeAddClosureLibrary? Or maybe remove base.js? + */ +function getChunkOptions() { + if (argv.compileTs) { + chunks[0].entry = path.join(TSC_OUTPUT_DIR, chunks[0].entry); + } + const cccArgs = [ + '--closure-library-base-js-path ./closure/goog/base_minimal.js', + '--deps-file ./tests/deps.js', + ...(chunks.map(chunk => `--entrypoint '${chunk.entry}'`)), + ]; + const cccCommand = `closure-calculate-chunks ${cccArgs.join(' ')}`; + + // Because (as of 2021-11-25) closure-calculate-chunks v3.0.2 + // requries node.js v14 or later, we save the output of cccCommand + // in a checked-in .json file, so we can use the contents of that + // file when building on older versions of node. + // + // When this is no longer necessary the following section can be + // replaced with: + // + // const rawOptions = JSON.parse(execSync(cccCommand)); + const nodeMajorVersion = /v(\d+)\./.exec(process.version)[1]; + let rawOptions; + if (nodeMajorVersion >= 14) { + rawOptions = JSON.parse(String(execSync(cccCommand))); + // Replace absolute paths with relative ones, so they will be + // valid on other machines. Only needed because we're saving this + // output to use later on another machine. + rawOptions.js = rawOptions.js.map(p => p.replace(process.cwd(), '.')); + fs.writeFileSync(CHUNK_CACHE_FILE, + JSON.stringify(rawOptions, null, 2) + '\n'); + } else { + console.log(`Warning: using pre-computed chunks from ${CHUNK_CACHE_FILE}`); + rawOptions = JSON.parse(String(fs.readFileSync(CHUNK_CACHE_FILE))); + } + + // rawOptions should now be of the form: + // + // { + // chunk: [ + // 'blockly:258', + // 'all:10:blockly', + // 'all1:11:blockly', + // 'all2:11:blockly', + // /* ... remaining handful of chunks */ + // ], + // js: [ + // './core/serialization/workspaces.js', + // './core/serialization/variables.js', + // /* ... remaining several hundred files */ + // ], + // } + // + // This is designed to be passed directly as-is as the options + // object to the Closure Compiler node API, but we want to replace + // the unhelpful entry-point based chunk names (let's call these + // "nicknames") with the ones from chunks. Unforutnately there's no + // guarnatee they will be in the same order that the entry points + // were supplied in (though it happens to work out that way if no + // chunk depends on any chunk but the first), so we look for + // one of the entrypoints amongst the files in each chunk. + const chunkByNickname = Object.create(null); + const jsFiles = rawOptions.js.slice(); // Will be modified via .splice! + const chunkList = rawOptions.chunk.map((element) => { + const [nickname, numJsFiles, parentNick] = element.split(':'); + + // Get array of files for just this chunk. + const chunkFiles = jsFiles.splice(0, numJsFiles); + + // Figure out which chunk this is by looking for one of the + // known chunk entrypoints in chunkFiles. N.B.: O(n*m). :-( + const chunk = chunks.find( + chunk => chunkFiles.find(f => f.endsWith('/' + chunk.entry))); + if (!chunk) throw new Error('Unable to identify chunk'); + + // Replace nicknames with the names we chose. + chunkByNickname[nickname] = chunk; + if (!parentNick) { // Chunk has no parent. + chunk.parent = null; + return `${chunk.name}:${numJsFiles}`; + } + chunk.parent = chunkByNickname[parentNick]; + return `${chunk.name}:${numJsFiles}:${chunk.parent.name}`; + }); + + // Generate a chunk wrapper for each chunk. + for (const chunk of chunks) { + chunk.wrapper = chunkWrapper(chunk); + } + const chunkWrappers = chunks.map(chunk => `${chunk.name}:${chunk.wrapper}`); + + return {chunk: chunkList, js: rawOptions.js, chunk_wrapper: chunkWrappers}; +} + +/** + * RegExp that globally matches path.sep (i.e., "/" or "\"). + */ +const pathSepRegExp = new RegExp(path.sep.replace(/\\/, '\\\\'), "g"); + +/** + * Modify the supplied gulp.rename path object to relax @package + * restrictions in core/. + * + * Background: subdirectories of core/ are used to group similar files + * together but are not intended to limit access to names + * marked @package; instead, that annotation is intended to mean only + * that the annotated name not part of the public API. + * + * To make @package behave less strictly in core/, this function can + * be used to as a gulp.rename filter, modifying the path object to + * flatten all files in core/** so that they're in the same directory, + * while ensuring that files with the same base name don't conflict. + * + * @param {{dirname: string, basename: string, extname: string}} + * pathObject The path argument supplied by gulp.rename to its + * callback. Modified in place. + */ +function flattenCorePaths(pathObject) { + const dirs = pathObject.dirname.split(path.sep); + const coreIndex = argv.compileTs ? 2 : 0; + if (dirs[coreIndex] === 'core') { + pathObject.dirname = path.join(...dirs.slice(0, coreIndex + 1)); + pathObject.basename = + dirs.slice(coreIndex + 1).concat(pathObject.basename).join('-slash-'); + } +} + +/** + * Undo the effects of flattenCorePaths on a single path string. + * @param string pathString The flattened path. + * @return string The path after unflattening. + */ +function unflattenCorePaths(pathString) { + return pathString.replace(/-slash-/g, path.sep); +} + +/** + * Helper method for calling the Closure compiler, establishing + * default options (that can be overridden by the caller). + * @param {*} options Caller-supplied options that will override the + * defaultOptions. + */ +function compile(options) { + const defaultOptions = { + compilation_level: 'SIMPLE_OPTIMIZATIONS', + warning_level: argv.verbose ? 'VERBOSE' : 'DEFAULT', + language_in: 'ECMASCRIPT_2020', + language_out: 'ECMASCRIPT5_STRICT', + jscomp_off: [...JSCOMP_OFF], + rewrite_polyfills: true, + hide_warnings_for: 'node_modules', + define: ['COMPILED=true'], + }; + if (argv.debug || argv.strict) { + defaultOptions.jscomp_error = [...JSCOMP_ERROR]; + defaultOptions.jscomp_warning = [...JSCOMP_WARNING]; + if (argv.strict) { + defaultOptions.jscomp_error.push('strictCheckTypes'); + } + } + // Extra options for Closure Compiler gulp plugin. + const platform = ['native', 'java', 'javascript']; + + return closureCompiler({...defaultOptions, ...options}, {platform}); +} + +/** + * This task compiles the core library, blocks and generators, creating + * blockly_compressed.js, blocks_compressed.js, etc. + * + * The deps.js file must be up-to-date. + */ +function buildCompiled() { + // Get chunking. + const chunkOptions = getChunkOptions(); + // Closure Compiler options. + const packageJson = getPackageJson(); // For version number. + const options = { + define: 'Blockly.VERSION="' + packageJson.version + '"', + chunk: chunkOptions.chunk, + chunk_wrapper: chunkOptions.chunk_wrapper, + rename_prefix_namespace: NAMESPACE_VARIABLE, + // Don't supply the list of source files in chunkOptions.js as an + // option to Closure Compiler; instead feed them as input via gulp.src. + }; + + // Fire up compilation pipline. + return gulp.src(chunkOptions.js, {base: './'}) + .pipe(stripApacheLicense()) + .pipe(gulp.sourcemaps.init()) + // .pipe(gulp.rename(flattenCorePaths)) + .pipe(compile(options)) + .pipe(gulp.rename({suffix: COMPILED_SUFFIX})) + // .pipe(gulp.sourcemaps.mapSources(unflattenCorePaths)) + .pipe( + gulp.sourcemaps.write('.', {includeContent: false, sourceRoot: './'})) + .pipe(gulp.dest(BUILD_DIR)); +}; + +/** + * This task builds Blockly core, blocks and generators together and uses + * closure compiler's ADVANCED_COMPILATION mode. + */ +function buildAdvancedCompilationTest() { + const coreSrcs = argv.compileTs ? + TSC_OUTPUT_DIR + '/core/**/*.js' : 'core/**/*.js'; + const srcs = [ + 'closure/goog/base_minimal.js', + coreSrcs, + 'blocks/**/*.js', + 'generators/**/*.js', + 'tests/compile/main.js', + 'tests/compile/test_blocks.js', + ]; + + // Closure Compiler options. + const options = { + dependency_mode: 'PRUNE', + compilation_level: 'ADVANCED_OPTIMIZATIONS', + entry_point: './tests/compile/main.js', + js_output_file: 'main_compressed.js', + }; + return gulp.src(srcs, {base: './'}) + .pipe(stripApacheLicense()) + .pipe(gulp.sourcemaps.init()) + // .pipe(gulp.rename(flattenCorePaths)) + .pipe(compile(options)) + // .pipe(gulp.sourcemaps.mapSources(unflattenCorePaths)) + .pipe(gulp.sourcemaps.write( + '.', {includeContent: false, sourceRoot: '../../'})) + .pipe(gulp.dest('./tests/compile/')); +} + +/** + * This task builds all of Blockly: + * blockly_compressed.js + * blocks_compressed.js + * javascript_compressed.js + * python_compressed.js + * php_compressed.js + * lua_compressed.js + * dart_compressed.js + * blockly_uncompressed.js + * msg/json/*.js + * test/deps*.js + */ +const build = gulp.parallel( + gulp.series(buildDeps, buildCompiled), + buildLangfiles, + ); + +/** + * This task copies built files from BUILD_DIR back to the repository + * so they can be committed to git. + */ +function checkinBuilt() { + return gulp.src([ + `${BUILD_DIR}/**.js`, + `${BUILD_DIR}/**.js.map`, + `${BUILD_DIR}/**/**.js`, + `${BUILD_DIR}/**/**.js.map`, + ]).pipe(gulp.dest('.')); +}; + +/** + * This task cleans the build directory (by deleting it). + */ +function cleanBuildDir(done) { + // Sanity check. + if (BUILD_DIR === '.' || BUILD_DIR === '/') { + throw new Error(`Refusing to rm -rf ${BUILD_DIR}`); + } + rimraf(BUILD_DIR, done); +} + +/** + * Runs clang format on all files in the core directory. + */ +function format() { + return gulp.src(['core/**/*.js', 'blocks/**/*.js'], {base: '.'}) + .pipe(clangFormatter.format('file', clangFormat)) + .pipe(gulp.dest('.')); +}; + +function buildTypescript(done) { + execSync('npx tsc', {stdio: 'inherit'}); + done(); +} + +module.exports = { + build: build, + deps: buildDeps, + generateLangfiles: generateLangfiles, + langfiles: buildLangfiles, + compiled: buildCompiled, + format: format, + checkinBuilt: checkinBuilt, + cleanBuildDir: cleanBuildDir, + advancedCompilationTest: buildAdvancedCompilationTest, + buildTypescript: buildTypescript +} diff --git a/scripts/gulpfiles/cleanup_tasks.js b/scripts/gulpfiles/cleanup_tasks.js index e6c8501ff51..677e7e5e11d 100644 --- a/scripts/gulpfiles/cleanup_tasks.js +++ b/scripts/gulpfiles/cleanup_tasks.js @@ -1,85 +1,85 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Gulp tasks to complete various clean up tasks. - */ - -const gulp = require('gulp'); -const path = require('path'); -const through2 = require('through2'); - -/** - * Sorts goog.requires in core, blocks and generators. - */ -function sortRequires() { - const srcs = ['core/**/**/*.js', 'blocks/*.js', 'generators/**/*.js']; - const excludes = ['core/requires.js']; - return gulp.src(srcs, {base: './'}) - .pipe(through2.obj((file, _enc, next) => { - if (file.isNull() || file.isDirectory()) { - next(null, file); - return; - } - - if (file.extname !== '.js' && path.extname(file.history[0]) !== '.js') { - next(null, file); - return; - } - - const relPath = path.relative(path.join(file.cwd, file.base), file.path); - if (excludes.indexOf(relPath) > -1) { - next(null, file); - return; - } - - const contents = file.contents.toString(); - - // Capture requires. - const re = /goog\.(require|requireType)\('(.*)'\);/gm; - const requiresList = []; - const requireTypesList = []; - let firstIndex; - let lastIndex; - while ((match = re.exec(contents)) !== null) { - if (match[1] === 'require') requiresList.push(match[2]); - if (match[1] === 'requireType') requireTypesList.push(match[2]); - if (firstIndex === undefined) { - firstIndex = match.index; - } else { - lastIndex = re.lastIndex; - } - } - - // Sort requires. - requiresList.sort( - (a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); - requireTypesList.sort( - (a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); - - // Replace in file. - const requiresSection = requiresList.length ? - requiresList.map(r => `goog.require('${r}');`).join('\n') + '\n\n' : - ''; - const requireTypesSection = requireTypesList.length ? - requireTypesList.map(r => `goog.requireType('${r}');`).join('\n') + - '\n\n' : - ''; - const requires = `${requiresSection}${requireTypesSection}\n`; - - if (firstIndex !== undefined & lastIndex !== undefined) { - file.contents = Buffer.from( - contents.substring(0, firstIndex) + requires + - contents.substring(lastIndex).trimStart()); - } - next(null, file); - })) - .pipe(gulp.dest('./')); -}; - -module.exports = { - sortRequires: sortRequires -}; +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Gulp tasks to complete various clean up tasks. + */ + +const gulp = require('gulp'); +const path = require('path'); +const through2 = require('through2'); + +/** + * Sorts goog.requires in core, blocks and generators. + */ +function sortRequires() { + const srcs = ['core/**/**/*.js', 'blocks/*.js', 'generators/**/*.js']; + const excludes = ['core/requires.js']; + return gulp.src(srcs, {base: './'}) + .pipe(through2.obj((file, _enc, next) => { + if (file.isNull() || file.isDirectory()) { + next(null, file); + return; + } + + if (file.extname !== '.js' && path.extname(file.history[0]) !== '.js') { + next(null, file); + return; + } + + const relPath = path.relative(path.join(file.cwd, file.base), file.path); + if (excludes.indexOf(relPath) > -1) { + next(null, file); + return; + } + + const contents = file.contents.toString(); + + // Capture requires. + const re = /goog\.(require|requireType)\('(.*)'\);/gm; + const requiresList = []; + const requireTypesList = []; + let firstIndex; + let lastIndex; + while ((match = re.exec(contents)) !== null) { + if (match[1] === 'require') requiresList.push(match[2]); + if (match[1] === 'requireType') requireTypesList.push(match[2]); + if (firstIndex === undefined) { + firstIndex = match.index; + } else { + lastIndex = re.lastIndex; + } + } + + // Sort requires. + requiresList.sort( + (a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); + requireTypesList.sort( + (a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); + + // Replace in file. + const requiresSection = requiresList.length ? + requiresList.map(r => `goog.require('${r}');`).join('\n') + '\n\n' : + ''; + const requireTypesSection = requireTypesList.length ? + requireTypesList.map(r => `goog.requireType('${r}');`).join('\n') + + '\n\n' : + ''; + const requires = `${requiresSection}${requireTypesSection}\n`; + + if (firstIndex !== undefined & lastIndex !== undefined) { + file.contents = Buffer.from( + contents.substring(0, firstIndex) + requires + + contents.substring(lastIndex).trimStart()); + } + next(null, file); + })) + .pipe(gulp.dest('./')); +}; + +module.exports = { + sortRequires: sortRequires +}; diff --git a/scripts/gulpfiles/config.js b/scripts/gulpfiles/config.js index f8ee8c1a8b3..05b18757672 100644 --- a/scripts/gulpfiles/config.js +++ b/scripts/gulpfiles/config.js @@ -1,35 +1,35 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Common configuration for Gulp scripts. - */ - -var path = require('path'); - -// Paths are all relative to the repository root. Do not include -// trailing slash. -// -// TODO(#5007): If you modify these values, you must also modify the -// corresponding values in the following files: -// -// - tests/scripts/compile_typings.sh -// - tests/scripts/check_metadata.sh -module.exports = { - // Directory to write compiled output to. - BUILD_DIR: 'build', - - // Directory in which to assemble (and from which to publish) the - // blockly npm package. - RELEASE_DIR: 'dist', - - // Directory to write typings output to. - TYPINGS_BUILD_DIR: path.join('build', 'typings'), - - // Directory where typescript compiler output can be found. - // Matches the value in tsconfig.json: outDir - TSC_OUTPUT_DIR: path.join('build', 'ts'), -}; +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Common configuration for Gulp scripts. + */ + +var path = require('path'); + +// Paths are all relative to the repository root. Do not include +// trailing slash. +// +// TODO(#5007): If you modify these values, you must also modify the +// corresponding values in the following files: +// +// - tests/scripts/compile_typings.sh +// - tests/scripts/check_metadata.sh +module.exports = { + // Directory to write compiled output to. + BUILD_DIR: 'build', + + // Directory in which to assemble (and from which to publish) the + // blockly npm package. + RELEASE_DIR: 'dist', + + // Directory to write typings output to. + TYPINGS_BUILD_DIR: path.join('build', 'typings'), + + // Directory where typescript compiler output can be found. + // Matches the value in tsconfig.json: outDir + TSC_OUTPUT_DIR: path.join('build', 'ts'), +}; diff --git a/scripts/gulpfiles/git_tasks.js b/scripts/gulpfiles/git_tasks.js index bfc28df4c29..b36ca49b9ea 100644 --- a/scripts/gulpfiles/git_tasks.js +++ b/scripts/gulpfiles/git_tasks.js @@ -1,123 +1,123 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Git-related gulp tasks for Blockly. - */ - -var gulp = require('gulp'); -var execSync = require('child_process').execSync; - -var buildTasks = require('./build_tasks'); - -const upstream_url = "https://github.com/google/blockly.git"; - -// Stash current state, check out the named branch, and sync with -// google/blockly. -function syncBranch(branchName) { - return function(done) { - execSync('git stash save -m "Stash for sync"', { stdio: 'inherit' }); - checkoutBranch(branchName); - execSync('git pull ' + upstream_url + ' ' + branchName, - { stdio: 'inherit' }); - execSync('git push origin ' + branchName, { stdio: 'inherit' }); - done(); - } -} - -// Stash current state, check out develop, and sync with google/blockly. -function syncDevelop() { - return syncBranch('develop'); -}; - -// Stash current state, check out master, and sync with google/blockly. -function syncMaster() { - return syncBranch('master'); -}; - -// Helper function: get a name for a rebuild branch. Format: rebuild_mm_dd_yyyy. -function getRebuildBranchName() { - var date = new Date(); - var mm = date.getMonth() + 1; // Month, 0-11 - var dd = date.getDate(); // Day of the month, 1-31 - var yyyy = date.getFullYear(); - return 'rebuild_' + mm + '_' + dd + '_' + yyyy; -}; - -// Helper function: get a name for a rebuild branch. Format: rebuild_yyyy_mm. -function getRCBranchName() { - var date = new Date(); - var mm = date.getMonth() + 1; // Month, 0-11 - var yyyy = date.getFullYear(); - return 'rc_' + yyyy + '_' + mm; -}; - -// If branch does not exist then create the branch. -// If branch exists switch to branch. -function checkoutBranch(branchName) { - execSync('git checkout ' + branchName + ' || git checkout -b ' + branchName, - { stdio: 'inherit' }); -} - -// Create and push an RC branch. -// Note that this pushes to google/blockly. -const createRC = gulp.series( - syncDevelop(), - function(done) { - var branchName = getRCBranchName(); - execSync('git checkout -b ' + branchName, { stdio: 'inherit' }); - execSync('git push ' + upstream_url + ' ' + branchName, - { stdio: 'inherit' }); - done(); - } -); - -// Create the rebuild branch. -function createRebuildBranch(done) { - var branchName = getRebuildBranchName(); - console.log('make-rebuild-branch: creating branch ' + branchName); - execSync('git checkout -b ' + branchName, { stdio: 'inherit' }); - done(); -} - -// Push the rebuild branch to origin. -function pushRebuildBranch(done) { - console.log('push-rebuild-branch: committing rebuild'); - execSync('git commit -am "Rebuild"', { stdio: 'inherit' }); - var branchName = getRebuildBranchName(); - execSync('git push origin ' + branchName, { stdio: 'inherit' }); - console.log('Branch ' + branchName + ' pushed to GitHub.'); - console.log('Next step: create a pull request against develop.'); - done(); -} - -// Update github pages with what is currently in develop. -const updateGithubPages = gulp.series( - function(done) { - execSync('git stash save -m "Stash for sync"', { stdio: 'inherit' }); - execSync('git checkout gh-pages || git checkout -b gh-pages', { stdio: 'inherit' }); - execSync('git fetch upstream', { stdio: 'inherit' }); - execSync('git reset --hard upstream/develop', { stdio: 'inherit' }); - done(); - }, - buildTasks.cleanBuildDir, - buildTasks.build, - buildTasks.checkinBuilt, - function(done) { - execSync('git commit -am "Rebuild"', { stdio: 'inherit' }); - execSync('git push ' + upstream_url + ' gh-pages --force', { stdio: 'inherit' }); - done(); - } -); - -module.exports = { - syncDevelop: syncDevelop, - syncMaster: syncMaster, - createRC: createRC, - updateGithubPages: updateGithubPages, - createRebuildBranch: createRebuildBranch, - pushRebuildBranch: pushRebuildBranch -} +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Git-related gulp tasks for Blockly. + */ + +var gulp = require('gulp'); +var execSync = require('child_process').execSync; + +var buildTasks = require('./build_tasks'); + +const upstream_url = "https://github.com/google/blockly.git"; + +// Stash current state, check out the named branch, and sync with +// google/blockly. +function syncBranch(branchName) { + return function(done) { + execSync('git stash save -m "Stash for sync"', { stdio: 'inherit' }); + checkoutBranch(branchName); + execSync('git pull ' + upstream_url + ' ' + branchName, + { stdio: 'inherit' }); + execSync('git push origin ' + branchName, { stdio: 'inherit' }); + done(); + } +} + +// Stash current state, check out develop, and sync with google/blockly. +function syncDevelop() { + return syncBranch('develop'); +}; + +// Stash current state, check out master, and sync with google/blockly. +function syncMaster() { + return syncBranch('master'); +}; + +// Helper function: get a name for a rebuild branch. Format: rebuild_mm_dd_yyyy. +function getRebuildBranchName() { + var date = new Date(); + var mm = date.getMonth() + 1; // Month, 0-11 + var dd = date.getDate(); // Day of the month, 1-31 + var yyyy = date.getFullYear(); + return 'rebuild_' + mm + '_' + dd + '_' + yyyy; +}; + +// Helper function: get a name for a rebuild branch. Format: rebuild_yyyy_mm. +function getRCBranchName() { + var date = new Date(); + var mm = date.getMonth() + 1; // Month, 0-11 + var yyyy = date.getFullYear(); + return 'rc_' + yyyy + '_' + mm; +}; + +// If branch does not exist then create the branch. +// If branch exists switch to branch. +function checkoutBranch(branchName) { + execSync('git checkout ' + branchName + ' || git checkout -b ' + branchName, + { stdio: 'inherit' }); +} + +// Create and push an RC branch. +// Note that this pushes to google/blockly. +const createRC = gulp.series( + syncDevelop(), + function(done) { + var branchName = getRCBranchName(); + execSync('git checkout -b ' + branchName, { stdio: 'inherit' }); + execSync('git push ' + upstream_url + ' ' + branchName, + { stdio: 'inherit' }); + done(); + } +); + +// Create the rebuild branch. +function createRebuildBranch(done) { + var branchName = getRebuildBranchName(); + console.log('make-rebuild-branch: creating branch ' + branchName); + execSync('git checkout -b ' + branchName, { stdio: 'inherit' }); + done(); +} + +// Push the rebuild branch to origin. +function pushRebuildBranch(done) { + console.log('push-rebuild-branch: committing rebuild'); + execSync('git commit -am "Rebuild"', { stdio: 'inherit' }); + var branchName = getRebuildBranchName(); + execSync('git push origin ' + branchName, { stdio: 'inherit' }); + console.log('Branch ' + branchName + ' pushed to GitHub.'); + console.log('Next step: create a pull request against develop.'); + done(); +} + +// Update github pages with what is currently in develop. +const updateGithubPages = gulp.series( + function(done) { + execSync('git stash save -m "Stash for sync"', { stdio: 'inherit' }); + execSync('git checkout gh-pages || git checkout -b gh-pages', { stdio: 'inherit' }); + execSync('git fetch upstream', { stdio: 'inherit' }); + execSync('git reset --hard upstream/develop', { stdio: 'inherit' }); + done(); + }, + buildTasks.cleanBuildDir, + buildTasks.build, + buildTasks.checkinBuilt, + function(done) { + execSync('git commit -am "Rebuild"', { stdio: 'inherit' }); + execSync('git push ' + upstream_url + ' gh-pages --force', { stdio: 'inherit' }); + done(); + } +); + +module.exports = { + syncDevelop: syncDevelop, + syncMaster: syncMaster, + createRC: createRC, + updateGithubPages: updateGithubPages, + createRebuildBranch: createRebuildBranch, + pushRebuildBranch: pushRebuildBranch +} diff --git a/scripts/gulpfiles/helper_tasks.js b/scripts/gulpfiles/helper_tasks.js index b239d03f5fa..9b394aac214 100644 --- a/scripts/gulpfiles/helper_tasks.js +++ b/scripts/gulpfiles/helper_tasks.js @@ -1,19 +1,19 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Any gulp helper functions. - */ - -// Clears the require cache to ensure the package.json is up to date. -function getPackageJson() { - delete require.cache[require.resolve('../../package.json')] - return require('../../package.json'); -} - -module.exports = { - getPackageJson: getPackageJson -} +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Any gulp helper functions. + */ + +// Clears the require cache to ensure the package.json is up to date. +function getPackageJson() { + delete require.cache[require.resolve('../../package.json')] + return require('../../package.json'); +} + +module.exports = { + getPackageJson: getPackageJson +} diff --git a/scripts/gulpfiles/license_tasks.js b/scripts/gulpfiles/license_tasks.js index 3e6b93efb3e..4730099b6c1 100644 --- a/scripts/gulpfiles/license_tasks.js +++ b/scripts/gulpfiles/license_tasks.js @@ -1,21 +1,21 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Gulp tasks to check the licenses of Blockly dependencies. - */ - -const jsgl = require('js-green-licenses'); - -function checkLicenses() { - const checker = new jsgl.LicenseChecker(); - checker.setDefaultHandlers(); - return checker.checkLocalDirectory('.'); -}; - -module.exports = { - checkLicenses: checkLicenses -}; +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Gulp tasks to check the licenses of Blockly dependencies. + */ + +const jsgl = require('js-green-licenses'); + +function checkLicenses() { + const checker = new jsgl.LicenseChecker(); + checker.setDefaultHandlers(); + return checker.checkLocalDirectory('.'); +}; + +module.exports = { + checkLicenses: checkLicenses +}; diff --git a/scripts/gulpfiles/package_tasks.js b/scripts/gulpfiles/package_tasks.js index 5297ddf079e..22e35a68f35 100644 --- a/scripts/gulpfiles/package_tasks.js +++ b/scripts/gulpfiles/package_tasks.js @@ -1,441 +1,441 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Gulp tasks to package Blockly for distribution on NPM. - */ - -var gulp = require('gulp'); -gulp.concat = require('gulp-concat'); -gulp.replace = require('gulp-replace'); -gulp.rename = require('gulp-rename'); -gulp.insert = require('gulp-insert'); -gulp.umd = require('gulp-umd'); - -var path = require('path'); -var fs = require('fs'); -var rimraf = require('rimraf'); -var {getPackageJson} = require('./helper_tasks'); -var {BUILD_DIR, RELEASE_DIR, TYPINGS_BUILD_DIR} = require('./config'); - -// Path to template files for gulp-umd. -const TEMPLATE_DIR = 'scripts/package/templates'; - -/** - * A helper method for wrapping a file into a Universal Module Definition. - * @param {string} namespace The export namespace. - * @param {Array} dependencies An array of dependencies to inject. - */ -function packageUMD(namespace, dependencies, template = 'umd.template') { - return gulp.umd({ - dependencies: function () { return dependencies; }, - namespace: function () { return namespace; }, - exports: function () { return namespace; }, - template: path.join(TEMPLATE_DIR, template) - }); -}; - -/** - * A helper method for wrapping a file into a CommonJS module for Node.js. - * @param {string} namespace The export namespace. - * @param {Array} dependencies An array of dependencies to inject. - */ -function packageCommonJS(namespace, dependencies) { - return gulp.umd({ - dependencies: function () { return dependencies; }, - namespace: function () { return namespace; }, - exports: function () { return namespace; }, - template: path.join(TEMPLATE_DIR, 'node.template') - }); -}; - -// Sanity check that the BUILD_DIR directory exists, and that certain -// files are in it. -function checkBuildDir(done) { - // Check that directory exists. - if (!fs.existsSync(BUILD_DIR)) { - done(new Error(`The ${BUILD_DIR} directory does not exist. ` + - 'Has packageTasks.build been run?')); - return; - } - // Check files built by buildTasks.build exist in BUILD_DIR. - for (const fileName of [ - 'blockly_compressed.js', // buildTasks.buildCompressed - 'blocks_compressed.js', // buildTasks.buildBlocks - 'javascript_compressed.js', // buildTasks.buildGenerators - 'msg/js/en.js', // buildTaks.buildLangfiles - ]) { - if (!fs.existsSync(`${BUILD_DIR}/${fileName}`)) { - done(new Error( - `Your ${BUILD_DIR} directory does not contain ${fileName}. ` + - 'Has packageTasks.build been run? Try "npm run build".')); - return; - } - } - done(); -} - -/** - * This task copies source files into the release directory. - */ -function packageSources() { - return gulp.src(['core/**/**.js', 'blocks/**.js', 'generators/**/**.js'], - {base: '.'}) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task copies the compressed files and their source maps into - * the release directory. - */ -function packageCompressed() { - return gulp.src('*_compressed.js?(.map)', {cwd: BUILD_DIR}) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task wraps scripts/package/blockly.js into a UMD module. - * @example import 'blockly/blockly'; - */ -function packageBlockly() { - return gulp.src('scripts/package/blockly.js') - .pipe(packageUMD('Blockly', [{ - name: 'Blockly', - amd: './blockly_compressed', - cjs: './blockly_compressed', - }])) - .pipe(gulp.rename('blockly.js')) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task wraps scripts/package/blocks.js into a UMD module. - * @example import 'blockly/blocks'; - */ -function packageBlocks() { - return gulp.src('scripts/package/blocks.js') - .pipe(packageUMD('BlocklyBlocks', [{ - name: 'BlocklyBlocks', - amd: './blocks_compressed', - cjs: './blocks_compressed', - }])) - .pipe(gulp.rename('blocks.js')) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task wraps scripts/package/index.js into a UMD module. - * We implicitly require the Node entry point in CommonJS environments, - * and the Browser entry point for AMD environments. - * @example import * as Blockly from 'blockly'; - */ -function packageIndex() { - return gulp.src('scripts/package/index.js') - .pipe(packageUMD('Blockly', [{ - name: 'Blockly', - amd: './browser', - cjs: './node', - }])) - .pipe(gulp.rename('index.js')) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task wraps scripts/package/browser/index.js into a UMD module. - * By default, the module includes Blockly core and built-in blocks, - * as well as the JavaScript code generator and the English block - * localization files. - * This module is configured (in package.json) to replaces the module - * built by package-node in browser environments. - * @example import * as Blockly from 'blockly/browser'; - */ -function packageBrowser() { - return gulp.src('scripts/package/browser/index.js') - .pipe(packageUMD('Blockly', [{ - name: 'Blockly', - amd: './core-browser', - cjs: './core-browser', - },{ - name: 'En', - amd: './msg/en', - cjs: './msg/en', - },{ - name: 'BlocklyBlocks', - amd: './blocks', - cjs: './blocks', - },{ - name: 'BlocklyJS', - amd: './javascript', - cjs: './javascript', - }])) - .pipe(gulp.rename('browser.js')) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task wraps scripts/package/browser/core.js into a UMD module. - * By default, the module includes the Blockly core package and a - * helper method to set the locale. - * This module is configured (in package.json) to replaces the module - * built by package-node-core in browser environments. - * @example import * as Blockly from 'blockly/core'; - */ -function packageCore() { - return gulp.src('scripts/package/browser/core.js') - .pipe(packageUMD('Blockly', [{ - name: 'Blockly', - amd: './blockly', - cjs: './blockly', - }])) - .pipe(gulp.rename('core-browser.js')) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task wraps scripts/package/node/index.js into a CommonJS module for Node.js. - * By default, the module includes Blockly core and built-in blocks, - * as well as all the code generators and the English block localization files. - * This module is configured (in package.json) to be replaced by the module - * built by package-browser in browser environments. - * @example import * as Blockly from 'blockly/node'; - */ -function packageNode() { - return gulp.src('scripts/package/node/index.js') - .pipe(packageCommonJS('Blockly', [{ - name: 'Blockly', - cjs: './core', - },{ - name: 'En', - cjs: './msg/en', - },{ - name: 'BlocklyBlocks', - cjs: './blocks', - },{ - name: 'BlocklyJS', - cjs: './javascript', - },{ - name: 'BlocklyPython', - cjs: './python', - },{ - name: 'BlocklyPHP', - cjs: './php', - },{ - name: 'BlocklyLua', - cjs: './lua', - }, { - name: 'BlocklyDart', - cjs: './dart', - }])) - .pipe(gulp.rename('node.js')) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task wraps scripts/package/node/core.js into a CommonJS module for Node.js. - * By default, the module includes the Blockly core package for Node.js - * and a helper method to set the locale. - * This module is configured (in package.json) to be replaced by the module - * built by package-core in browser environments. - * @example import * as Blockly from 'blockly/core'; - */ -function packageNodeCore() { - return gulp.src('scripts/package/node/core.js') - .pipe(packageCommonJS('Blockly', [{ - name: 'Blockly', - amd: './blockly', - cjs: './blockly', - }])) - .pipe(gulp.rename('core.js')) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * A helper method for wrapping a generator file into a UMD module. - * @param {string} file Source file name. - * @param {string} rename Destination file name. - * @param {string} namespace Export namespace. - */ -function packageGenerator(file, rename, namespace) { - return gulp.src(`scripts/package/${rename}`) - .pipe(packageUMD(`Blockly${namespace}`, [{ - name: 'Blockly', - amd: './core', - cjs: './core', - }, { - name: `Blockly${namespace}`, - amd: `./${file}`, - cjs: `./${file}`, - }])) - .pipe(gulp.rename(rename)) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task wraps javascript_compressed.js into a UMD module. - * @example import 'blockly/javascript'; - */ -function packageJavascript() { - return packageGenerator('javascript_compressed.js', 'javascript.js', 'JavaScript'); -}; - -/** - * This task wraps python_compressed.js into a UMD module. - * @example import 'blockly/python'; - */ -function packagePython() { - return packageGenerator('python_compressed.js', 'python.js', 'Python'); -}; - -/** - * This task wraps lua_compressed.js into a UMD module. - * @example import 'blockly/lua'; - */ -function packageLua() { - return packageGenerator('lua_compressed.js', 'lua.js', 'Lua'); -}; - -/** - * This task wraps dart_compressed.js into a UMD module. - * @example import 'blockly/dart'; - */ -function packageDart() { - return packageGenerator('dart_compressed.js', 'dart.js', 'Dart'); -}; - -/** - * This task wraps php_compressed.js into a UMD module. - * @example import 'blockly/php'; - */ -function packagePHP() { - return packageGenerator('php_compressed.js', 'php.js', 'PHP'); -}; - -/** - * This task wraps each of the ${BUILD_DIR}/msg/js/* files into a UMD module. - * @example import * as En from 'blockly/msg/en'; - */ -function packageLocales() { - // Remove references to goog.provide and goog.require. - return gulp.src(`${BUILD_DIR}/msg/js/*.js`) - .pipe(gulp.replace(/goog\.[^\n]+/g, '')) - .pipe(packageUMD('Blockly.Msg', [], 'umd-msg.template')) - .pipe(gulp.dest(`${RELEASE_DIR}/msg`)); -}; - -/** - * This task creates a UMD bundle of Blockly which includes the Blockly - * core files, the built-in blocks, the JavaScript code generator and the - * English localization files. - * @example - */ -function packageUMDBundle() { - var srcs = [ - `${BUILD_DIR}/blockly_compressed.js`, - `${BUILD_DIR}/msg/js/en.js`, - `${BUILD_DIR}/blocks_compressed.js`, - `${BUILD_DIR}/javascript_compressed.js`, - ]; - return gulp.src(srcs) - .pipe(gulp.concat('blockly.min.js')) - .pipe(gulp.dest(`${RELEASE_DIR}`)); -}; - -/** - * This task copies all the media/* files into the release directory. - */ -function packageMedia() { - return gulp.src('media/*') - .pipe(gulp.dest(`${RELEASE_DIR}/media`)); -}; - -/** - * This task copies the package.json file into the release directory. - */ -function packageJSON(cb) { - const packageJson = getPackageJson(); - const json = Object.assign({}, packageJson); - delete json['scripts']; - if (!fs.existsSync(RELEASE_DIR)) { - fs.mkdirSync(RELEASE_DIR, {recursive: true}); - } - fs.writeFileSync(`${RELEASE_DIR}/package.json`, - JSON.stringify(json, null, 2)); - cb(); -}; - -/** - * This task copies the scripts/package/README.md file into the - * release directory. This file is what developers will see at - * https://www.npmjs.com/package/blockly . - */ -function packageReadme() { - return gulp.src('scripts/package/README.md') - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task copies the typings/blockly.d.ts TypeScript definition - * file into the release directory. The bundled declaration file is - * referenced in package.json in the types property. - * As of Q4 2021 this simply copies the existing ts definition files, since - * generation through typescript-closure-tools does not work with goog.module. - * TODO(5621): Regenerate definition files and copy them into the release dir as - * needed. - */ -function packageDTS() { - const handwrittenSrcs = [ - 'typings/*.d.ts', - 'typings/msg/msg.d.ts', - ]; - return gulp.src(handwrittenSrcs, {base: 'typings'}) - .pipe(gulp.dest(RELEASE_DIR)); -}; - -/** - * This task cleans the release directory (by deleting it). - */ -function cleanReleaseDir(done) { - // Sanity check. - if (RELEASE_DIR === '.' || RELEASE_DIR === '/') { - throw new Error(`Refusing to rm -rf ${RELEASE_DIR}`); - } - rimraf(RELEASE_DIR, done); -} - -/** - * This task prepares the files to be included in the NPM by copying - * them into the release directory. - */ -const package = gulp.series( - checkBuildDir, - cleanReleaseDir, - gulp.parallel( - packageIndex, - packageSources, - packageCompressed, - packageBrowser, - packageNode, - packageCore, - packageNodeCore, - packageBlockly, - packageBlocks, - packageJavascript, - packagePython, - packageLua, - packageDart, - packagePHP, - packageLocales, - packageMedia, - packageUMDBundle, - packageJSON, - packageReadme, - packageDTS) - ); - -module.exports = { - cleanReleaseDir: cleanReleaseDir, - package: package, -}; +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Gulp tasks to package Blockly for distribution on NPM. + */ + +var gulp = require('gulp'); +gulp.concat = require('gulp-concat'); +gulp.replace = require('gulp-replace'); +gulp.rename = require('gulp-rename'); +gulp.insert = require('gulp-insert'); +gulp.umd = require('gulp-umd'); + +var path = require('path'); +var fs = require('fs'); +var rimraf = require('rimraf'); +var {getPackageJson} = require('./helper_tasks'); +var {BUILD_DIR, RELEASE_DIR, TYPINGS_BUILD_DIR} = require('./config'); + +// Path to template files for gulp-umd. +const TEMPLATE_DIR = 'scripts/package/templates'; + +/** + * A helper method for wrapping a file into a Universal Module Definition. + * @param {string} namespace The export namespace. + * @param {Array} dependencies An array of dependencies to inject. + */ +function packageUMD(namespace, dependencies, template = 'umd.template') { + return gulp.umd({ + dependencies: function () { return dependencies; }, + namespace: function () { return namespace; }, + exports: function () { return namespace; }, + template: path.join(TEMPLATE_DIR, template) + }); +}; + +/** + * A helper method for wrapping a file into a CommonJS module for Node.js. + * @param {string} namespace The export namespace. + * @param {Array} dependencies An array of dependencies to inject. + */ +function packageCommonJS(namespace, dependencies) { + return gulp.umd({ + dependencies: function () { return dependencies; }, + namespace: function () { return namespace; }, + exports: function () { return namespace; }, + template: path.join(TEMPLATE_DIR, 'node.template') + }); +}; + +// Sanity check that the BUILD_DIR directory exists, and that certain +// files are in it. +function checkBuildDir(done) { + // Check that directory exists. + if (!fs.existsSync(BUILD_DIR)) { + done(new Error(`The ${BUILD_DIR} directory does not exist. ` + + 'Has packageTasks.build been run?')); + return; + } + // Check files built by buildTasks.build exist in BUILD_DIR. + for (const fileName of [ + 'blockly_compressed.js', // buildTasks.buildCompressed + 'blocks_compressed.js', // buildTasks.buildBlocks + 'javascript_compressed.js', // buildTasks.buildGenerators + 'msg/js/en.js', // buildTaks.buildLangfiles + ]) { + if (!fs.existsSync(`${BUILD_DIR}/${fileName}`)) { + done(new Error( + `Your ${BUILD_DIR} directory does not contain ${fileName}. ` + + 'Has packageTasks.build been run? Try "npm run build".')); + return; + } + } + done(); +} + +/** + * This task copies source files into the release directory. + */ +function packageSources() { + return gulp.src(['core/**/**.js', 'blocks/**.js', 'generators/**/**.js'], + {base: '.'}) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task copies the compressed files and their source maps into + * the release directory. + */ +function packageCompressed() { + return gulp.src('*_compressed.js?(.map)', {cwd: BUILD_DIR}) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task wraps scripts/package/blockly.js into a UMD module. + * @example import 'blockly/blockly'; + */ +function packageBlockly() { + return gulp.src('scripts/package/blockly.js') + .pipe(packageUMD('Blockly', [{ + name: 'Blockly', + amd: './blockly_compressed', + cjs: './blockly_compressed', + }])) + .pipe(gulp.rename('blockly.js')) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task wraps scripts/package/blocks.js into a UMD module. + * @example import 'blockly/blocks'; + */ +function packageBlocks() { + return gulp.src('scripts/package/blocks.js') + .pipe(packageUMD('BlocklyBlocks', [{ + name: 'BlocklyBlocks', + amd: './blocks_compressed', + cjs: './blocks_compressed', + }])) + .pipe(gulp.rename('blocks.js')) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task wraps scripts/package/index.js into a UMD module. + * We implicitly require the Node entry point in CommonJS environments, + * and the Browser entry point for AMD environments. + * @example import * as Blockly from 'blockly'; + */ +function packageIndex() { + return gulp.src('scripts/package/index.js') + .pipe(packageUMD('Blockly', [{ + name: 'Blockly', + amd: './browser', + cjs: './node', + }])) + .pipe(gulp.rename('index.js')) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task wraps scripts/package/browser/index.js into a UMD module. + * By default, the module includes Blockly core and built-in blocks, + * as well as the JavaScript code generator and the English block + * localization files. + * This module is configured (in package.json) to replaces the module + * built by package-node in browser environments. + * @example import * as Blockly from 'blockly/browser'; + */ +function packageBrowser() { + return gulp.src('scripts/package/browser/index.js') + .pipe(packageUMD('Blockly', [{ + name: 'Blockly', + amd: './core-browser', + cjs: './core-browser', + },{ + name: 'En', + amd: './msg/en', + cjs: './msg/en', + },{ + name: 'BlocklyBlocks', + amd: './blocks', + cjs: './blocks', + },{ + name: 'BlocklyJS', + amd: './javascript', + cjs: './javascript', + }])) + .pipe(gulp.rename('browser.js')) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task wraps scripts/package/browser/core.js into a UMD module. + * By default, the module includes the Blockly core package and a + * helper method to set the locale. + * This module is configured (in package.json) to replaces the module + * built by package-node-core in browser environments. + * @example import * as Blockly from 'blockly/core'; + */ +function packageCore() { + return gulp.src('scripts/package/browser/core.js') + .pipe(packageUMD('Blockly', [{ + name: 'Blockly', + amd: './blockly', + cjs: './blockly', + }])) + .pipe(gulp.rename('core-browser.js')) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task wraps scripts/package/node/index.js into a CommonJS module for Node.js. + * By default, the module includes Blockly core and built-in blocks, + * as well as all the code generators and the English block localization files. + * This module is configured (in package.json) to be replaced by the module + * built by package-browser in browser environments. + * @example import * as Blockly from 'blockly/node'; + */ +function packageNode() { + return gulp.src('scripts/package/node/index.js') + .pipe(packageCommonJS('Blockly', [{ + name: 'Blockly', + cjs: './core', + },{ + name: 'En', + cjs: './msg/en', + },{ + name: 'BlocklyBlocks', + cjs: './blocks', + },{ + name: 'BlocklyJS', + cjs: './javascript', + },{ + name: 'BlocklyPython', + cjs: './python', + },{ + name: 'BlocklyPHP', + cjs: './php', + },{ + name: 'BlocklyLua', + cjs: './lua', + }, { + name: 'BlocklyDart', + cjs: './dart', + }])) + .pipe(gulp.rename('node.js')) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task wraps scripts/package/node/core.js into a CommonJS module for Node.js. + * By default, the module includes the Blockly core package for Node.js + * and a helper method to set the locale. + * This module is configured (in package.json) to be replaced by the module + * built by package-core in browser environments. + * @example import * as Blockly from 'blockly/core'; + */ +function packageNodeCore() { + return gulp.src('scripts/package/node/core.js') + .pipe(packageCommonJS('Blockly', [{ + name: 'Blockly', + amd: './blockly', + cjs: './blockly', + }])) + .pipe(gulp.rename('core.js')) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * A helper method for wrapping a generator file into a UMD module. + * @param {string} file Source file name. + * @param {string} rename Destination file name. + * @param {string} namespace Export namespace. + */ +function packageGenerator(file, rename, namespace) { + return gulp.src(`scripts/package/${rename}`) + .pipe(packageUMD(`Blockly${namespace}`, [{ + name: 'Blockly', + amd: './core', + cjs: './core', + }, { + name: `Blockly${namespace}`, + amd: `./${file}`, + cjs: `./${file}`, + }])) + .pipe(gulp.rename(rename)) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task wraps javascript_compressed.js into a UMD module. + * @example import 'blockly/javascript'; + */ +function packageJavascript() { + return packageGenerator('javascript_compressed.js', 'javascript.js', 'JavaScript'); +}; + +/** + * This task wraps python_compressed.js into a UMD module. + * @example import 'blockly/python'; + */ +function packagePython() { + return packageGenerator('python_compressed.js', 'python.js', 'Python'); +}; + +/** + * This task wraps lua_compressed.js into a UMD module. + * @example import 'blockly/lua'; + */ +function packageLua() { + return packageGenerator('lua_compressed.js', 'lua.js', 'Lua'); +}; + +/** + * This task wraps dart_compressed.js into a UMD module. + * @example import 'blockly/dart'; + */ +function packageDart() { + return packageGenerator('dart_compressed.js', 'dart.js', 'Dart'); +}; + +/** + * This task wraps php_compressed.js into a UMD module. + * @example import 'blockly/php'; + */ +function packagePHP() { + return packageGenerator('php_compressed.js', 'php.js', 'PHP'); +}; + +/** + * This task wraps each of the ${BUILD_DIR}/msg/js/* files into a UMD module. + * @example import * as En from 'blockly/msg/en'; + */ +function packageLocales() { + // Remove references to goog.provide and goog.require. + return gulp.src(`${BUILD_DIR}/msg/js/*.js`) + .pipe(gulp.replace(/goog\.[^\n]+/g, '')) + .pipe(packageUMD('Blockly.Msg', [], 'umd-msg.template')) + .pipe(gulp.dest(`${RELEASE_DIR}/msg`)); +}; + +/** + * This task creates a UMD bundle of Blockly which includes the Blockly + * core files, the built-in blocks, the JavaScript code generator and the + * English localization files. + * @example + */ +function packageUMDBundle() { + var srcs = [ + `${BUILD_DIR}/blockly_compressed.js`, + `${BUILD_DIR}/msg/js/en.js`, + `${BUILD_DIR}/blocks_compressed.js`, + `${BUILD_DIR}/javascript_compressed.js`, + ]; + return gulp.src(srcs) + .pipe(gulp.concat('blockly.min.js')) + .pipe(gulp.dest(`${RELEASE_DIR}`)); +}; + +/** + * This task copies all the media/* files into the release directory. + */ +function packageMedia() { + return gulp.src('media/*') + .pipe(gulp.dest(`${RELEASE_DIR}/media`)); +}; + +/** + * This task copies the package.json file into the release directory. + */ +function packageJSON(cb) { + const packageJson = getPackageJson(); + const json = Object.assign({}, packageJson); + delete json['scripts']; + if (!fs.existsSync(RELEASE_DIR)) { + fs.mkdirSync(RELEASE_DIR, {recursive: true}); + } + fs.writeFileSync(`${RELEASE_DIR}/package.json`, + JSON.stringify(json, null, 2)); + cb(); +}; + +/** + * This task copies the scripts/package/README.md file into the + * release directory. This file is what developers will see at + * https://www.npmjs.com/package/blockly . + */ +function packageReadme() { + return gulp.src('scripts/package/README.md') + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task copies the typings/blockly.d.ts TypeScript definition + * file into the release directory. The bundled declaration file is + * referenced in package.json in the types property. + * As of Q4 2021 this simply copies the existing ts definition files, since + * generation through typescript-closure-tools does not work with goog.module. + * TODO(5621): Regenerate definition files and copy them into the release dir as + * needed. + */ +function packageDTS() { + const handwrittenSrcs = [ + 'typings/*.d.ts', + 'typings/msg/msg.d.ts', + ]; + return gulp.src(handwrittenSrcs, {base: 'typings'}) + .pipe(gulp.dest(RELEASE_DIR)); +}; + +/** + * This task cleans the release directory (by deleting it). + */ +function cleanReleaseDir(done) { + // Sanity check. + if (RELEASE_DIR === '.' || RELEASE_DIR === '/') { + throw new Error(`Refusing to rm -rf ${RELEASE_DIR}`); + } + rimraf(RELEASE_DIR, done); +} + +/** + * This task prepares the files to be included in the NPM by copying + * them into the release directory. + */ +const package = gulp.series( + checkBuildDir, + cleanReleaseDir, + gulp.parallel( + packageIndex, + packageSources, + packageCompressed, + packageBrowser, + packageNode, + packageCore, + packageNodeCore, + packageBlockly, + packageBlocks, + packageJavascript, + packagePython, + packageLua, + packageDart, + packagePHP, + packageLocales, + packageMedia, + packageUMDBundle, + packageJSON, + packageReadme, + packageDTS) + ); + +module.exports = { + cleanReleaseDir: cleanReleaseDir, + package: package, +}; diff --git a/scripts/gulpfiles/release_tasks.js b/scripts/gulpfiles/release_tasks.js index d44928ca34d..ef73724c0a6 100644 --- a/scripts/gulpfiles/release_tasks.js +++ b/scripts/gulpfiles/release_tasks.js @@ -1,195 +1,195 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Gulp scripts for releasing Blockly. - */ - -var execSync = require('child_process').execSync; -var fs = require('fs'); -var gulp = require('gulp'); -var readlineSync = require('readline-sync'); - -var buildTasks = require('./build_tasks'); -var gitTasks = require('./git_tasks'); -var packageTasks = require('./package_tasks'); -var {getPackageJson} = require('./helper_tasks'); -var {RELEASE_DIR} = require('./config'); - - -// Gets the current major version. -function getMajorVersion() { - var { version } = getPackageJson(); - var re = new RegExp(/^(\d)./); - var match = re.exec(version); - if (!match[0]) { - return null; - } - console.log(match[0]); - return parseInt(match[0]); -} - -// Updates the version depending on user input. -function updateVersion(done, updateType) { - var majorVersion = getMajorVersion(); - if (!majorVersion) { - done(new Error('Something went wrong when getting the major version number.')); - } else if (!updateType) { - // User selected to cancel. - done(new Error('Cancelling process.')); - } - - switch (updateType.toLowerCase()) { - case 'major': - majorVersion++; - execSync(`npm --no-git-tag-version version ${majorVersion}.$(date +'%Y%m%d').0`, {stdio: 'inherit'}); - done(); - break; - case 'minor': - execSync(`npm --no-git-tag-version version ${majorVersion}.$(date +'%Y%m%d').0`, {stdio: 'inherit'}); - done(); - break; - case 'patch': - execSync(`npm --no-git-tag-version version patch`, {stdio: 'inherit'}); - done(); - break; - default: - done(new Error('Unexpected update type was chosen.')) - } -} - -// Prompt the user to figure out what kind of version update we should do. -function updateVersionPrompt(done) { - var releaseTypes = ['Major', 'Minor', 'Patch']; - var index = readlineSync.keyInSelect(releaseTypes, 'Which version type?'); - updateVersion(done, releaseTypes[index]); -} - -// Checks with the user that they are on the correct git branch. -function checkBranch(done) { - var gitBranchName = execSync('git rev-parse --abbrev-ref HEAD').toString(); - if (readlineSync.keyInYN(`You are on '${gitBranchName.trim()}'. Is this the correct branch?`)) { - done(); - } else { - done(new Error('Not on correct branch')); - } -} - - -// Sanity check that the RELASE_DIR directory exists, and that certain -// files are in it. -function checkReleaseDir(done) { - const sanityFiles = ['blockly_compressed.js', 'blocks_compressed.js', - 'core', 'blocks', 'generators']; - // Check that directory exists. - if (fs.existsSync(RELEASE_DIR)) { - // Sanity check that certain files exist in RELASE_DIR. - sanityFiles.forEach((fileName) => { - if (!fs.existsSync(`${RELEASE_DIR}/${fileName}`)) { - done(new Error( - `Your ${RELEASE_DIR} directory does not contain ${fileName}`)); - return; - } - }); - done(); - } else { - done(new Error(`The ${RELEASE_DIR} directory does not exist. ` + - 'Has packageTasks.package been run?')); - } -} - -// Check with the user that the version number is correct, then login and publish to npm. -function loginAndPublish_(done, isBeta) { - var { version } = getPackageJson(); - if(readlineSync.keyInYN(`You are about to publish blockly with the version number:${version}. Do you want to continue?`)) { - execSync(`npm login --registry https://wombat-dressing-room.appspot.com`, {stdio: 'inherit'}); - execSync(`npm publish --registry https://wombat-dressing-room.appspot.com ${isBeta ? '--tag beta' : ''}`, {cwd: RELEASE_DIR, stdio: 'inherit'}); - done(); - } else { - done(new Error('User quit due to the version number not being correct.')); - } -} - -// Login and publish. -function loginAndPublish(done) { - return loginAndPublish_(done, false); -} - -// Login and publish the beta version. -function loginAndPublishBeta(done) { - return loginAndPublish_(done, true); -} - -// Repeatedly prompts the user for a beta version number until a valid one is given. -// A valid version number must have '-beta.x' and can not have already been used to publish to npm. -function updateBetaVersion(done) { - var isValid = false; - var newVersion = null; - var blocklyVersions = JSON.parse(execSync('npm view blockly versions --json').toString()); - var re = new RegExp(/-beta\.(\d)/); - var latestBetaVersion = execSync('npm show blockly version --tag beta').toString().trim(); - while(!isValid) { - newVersion = readlineSync.question(`What is the new beta version? (latest beta version: ${latestBetaVersion})`); - var existsOnNpm = blocklyVersions.indexOf(newVersion) > -1; - var isFormatted = newVersion.search(re) > -1; - if (!existsOnNpm && isFormatted) { - isValid = true; - } else if (existsOnNpm) { - console.log("This version already exists. Please enter a new version."); - } else if (!isFormatted) { - console.log("To publish a beta version you must have -beta.x in the version."); - } - } - // Allow the same version here, since we already check the version does not exist on npm. - execSync(`npm --no-git-tag-version --allow-same-version version ${newVersion}`, {stdio: 'inherit'}); - done(); -} - -// Build Blockly and prepare to check in the resulting built files. -const rebuildAll = gulp.series( - buildTasks.cleanBuildDir, - buildTasks.build, - buildTasks.checkinBuilt, - // TODO(5621): Re-enable once typings generation is fixed. - // typings.typings, - // typings.msgTypings, - // typings.checkinTypings, - ); - -// Package and publish to npm. -const publish = gulp.series( - rebuildAll, - packageTasks.package, - checkBranch, - checkReleaseDir, - loginAndPublish -); - -// Publish a beta version of Blockly. -const publishBeta = gulp.series( - updateBetaVersion, - rebuildAll, - packageTasks.package, - checkBranch, - checkReleaseDir, - loginAndPublishBeta -); - -// Switch to a new branch, update the version number, build Blockly -// and check in the resulting built files. -const recompileDevelop = gulp.series( - gitTasks.syncDevelop(), - gitTasks.createRebuildBranch, - updateVersionPrompt, - rebuildAll, - gitTasks.pushRebuildBranch - ); - -module.exports = { - recompile: recompileDevelop, - publishBeta: publishBeta, - publish: publish -} +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Gulp scripts for releasing Blockly. + */ + +var execSync = require('child_process').execSync; +var fs = require('fs'); +var gulp = require('gulp'); +var readlineSync = require('readline-sync'); + +var buildTasks = require('./build_tasks'); +var gitTasks = require('./git_tasks'); +var packageTasks = require('./package_tasks'); +var {getPackageJson} = require('./helper_tasks'); +var {RELEASE_DIR} = require('./config'); + + +// Gets the current major version. +function getMajorVersion() { + var { version } = getPackageJson(); + var re = new RegExp(/^(\d)./); + var match = re.exec(version); + if (!match[0]) { + return null; + } + console.log(match[0]); + return parseInt(match[0]); +} + +// Updates the version depending on user input. +function updateVersion(done, updateType) { + var majorVersion = getMajorVersion(); + if (!majorVersion) { + done(new Error('Something went wrong when getting the major version number.')); + } else if (!updateType) { + // User selected to cancel. + done(new Error('Cancelling process.')); + } + + switch (updateType.toLowerCase()) { + case 'major': + majorVersion++; + execSync(`npm --no-git-tag-version version ${majorVersion}.$(date +'%Y%m%d').0`, {stdio: 'inherit'}); + done(); + break; + case 'minor': + execSync(`npm --no-git-tag-version version ${majorVersion}.$(date +'%Y%m%d').0`, {stdio: 'inherit'}); + done(); + break; + case 'patch': + execSync(`npm --no-git-tag-version version patch`, {stdio: 'inherit'}); + done(); + break; + default: + done(new Error('Unexpected update type was chosen.')) + } +} + +// Prompt the user to figure out what kind of version update we should do. +function updateVersionPrompt(done) { + var releaseTypes = ['Major', 'Minor', 'Patch']; + var index = readlineSync.keyInSelect(releaseTypes, 'Which version type?'); + updateVersion(done, releaseTypes[index]); +} + +// Checks with the user that they are on the correct git branch. +function checkBranch(done) { + var gitBranchName = execSync('git rev-parse --abbrev-ref HEAD').toString(); + if (readlineSync.keyInYN(`You are on '${gitBranchName.trim()}'. Is this the correct branch?`)) { + done(); + } else { + done(new Error('Not on correct branch')); + } +} + + +// Sanity check that the RELASE_DIR directory exists, and that certain +// files are in it. +function checkReleaseDir(done) { + const sanityFiles = ['blockly_compressed.js', 'blocks_compressed.js', + 'core', 'blocks', 'generators']; + // Check that directory exists. + if (fs.existsSync(RELEASE_DIR)) { + // Sanity check that certain files exist in RELASE_DIR. + sanityFiles.forEach((fileName) => { + if (!fs.existsSync(`${RELEASE_DIR}/${fileName}`)) { + done(new Error( + `Your ${RELEASE_DIR} directory does not contain ${fileName}`)); + return; + } + }); + done(); + } else { + done(new Error(`The ${RELEASE_DIR} directory does not exist. ` + + 'Has packageTasks.package been run?')); + } +} + +// Check with the user that the version number is correct, then login and publish to npm. +function loginAndPublish_(done, isBeta) { + var { version } = getPackageJson(); + if(readlineSync.keyInYN(`You are about to publish blockly with the version number:${version}. Do you want to continue?`)) { + execSync(`npm login --registry https://wombat-dressing-room.appspot.com`, {stdio: 'inherit'}); + execSync(`npm publish --registry https://wombat-dressing-room.appspot.com ${isBeta ? '--tag beta' : ''}`, {cwd: RELEASE_DIR, stdio: 'inherit'}); + done(); + } else { + done(new Error('User quit due to the version number not being correct.')); + } +} + +// Login and publish. +function loginAndPublish(done) { + return loginAndPublish_(done, false); +} + +// Login and publish the beta version. +function loginAndPublishBeta(done) { + return loginAndPublish_(done, true); +} + +// Repeatedly prompts the user for a beta version number until a valid one is given. +// A valid version number must have '-beta.x' and can not have already been used to publish to npm. +function updateBetaVersion(done) { + var isValid = false; + var newVersion = null; + var blocklyVersions = JSON.parse(execSync('npm view blockly versions --json').toString()); + var re = new RegExp(/-beta\.(\d)/); + var latestBetaVersion = execSync('npm show blockly version --tag beta').toString().trim(); + while(!isValid) { + newVersion = readlineSync.question(`What is the new beta version? (latest beta version: ${latestBetaVersion})`); + var existsOnNpm = blocklyVersions.indexOf(newVersion) > -1; + var isFormatted = newVersion.search(re) > -1; + if (!existsOnNpm && isFormatted) { + isValid = true; + } else if (existsOnNpm) { + console.log("This version already exists. Please enter a new version."); + } else if (!isFormatted) { + console.log("To publish a beta version you must have -beta.x in the version."); + } + } + // Allow the same version here, since we already check the version does not exist on npm. + execSync(`npm --no-git-tag-version --allow-same-version version ${newVersion}`, {stdio: 'inherit'}); + done(); +} + +// Build Blockly and prepare to check in the resulting built files. +const rebuildAll = gulp.series( + buildTasks.cleanBuildDir, + buildTasks.build, + buildTasks.checkinBuilt, + // TODO(5621): Re-enable once typings generation is fixed. + // typings.typings, + // typings.msgTypings, + // typings.checkinTypings, + ); + +// Package and publish to npm. +const publish = gulp.series( + rebuildAll, + packageTasks.package, + checkBranch, + checkReleaseDir, + loginAndPublish +); + +// Publish a beta version of Blockly. +const publishBeta = gulp.series( + updateBetaVersion, + rebuildAll, + packageTasks.package, + checkBranch, + checkReleaseDir, + loginAndPublishBeta +); + +// Switch to a new branch, update the version number, build Blockly +// and check in the resulting built files. +const recompileDevelop = gulp.series( + gitTasks.syncDevelop(), + gitTasks.createRebuildBranch, + updateVersionPrompt, + rebuildAll, + gitTasks.pushRebuildBranch + ); + +module.exports = { + recompile: recompileDevelop, + publishBeta: publishBeta, + publish: publish +} diff --git a/scripts/i18n/common.py b/scripts/i18n/common.py index 0ac733dcade..217aff0d407 100644 --- a/scripts/i18n/common.py +++ b/scripts/i18n/common.py @@ -1,233 +1,233 @@ -#!/usr/bin/python3 - -# Code shared by translation conversion scripts. -# -# Copyright 2013 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import codecs -import json -import os -from datetime import datetime - -class InputError(Exception): - """Exception raised for errors in the input. - - Attributes: - location -- where error occurred - msg -- explanation of the error - - """ - - def __init__(self, location, msg): - Exception.__init__(self, '{0}: {1}'.format(location, msg)) - self.location = location - self.msg = msg - - -def read_json_file(filename): - """Read a JSON file as UTF-8 into a dictionary, discarding @metadata. - - Args: - filename: The filename, which must end ".json". - - Returns: - The dictionary. - - Raises: - InputError: The filename did not end with ".json" or an error occurred - while opening or reading the file. - """ - if not filename.endswith('.json'): - raise InputError(filename, 'filenames must end with ".json"') - try: - # Read in file. - with codecs.open(filename, 'r', 'utf-8') as infile: - defs = json.load(infile) - if '@metadata' in defs: - del defs['@metadata'] - return defs - except ValueError as e: - print('Error reading ' + filename) - raise InputError(filename, str(e)) - - -def _create_qqq_file(output_dir): - """Creates a qqq.json file with message documentation for translatewiki.net. - - The file consists of key-value pairs, where the keys are message ids and - the values are descriptions for the translators of the messages. - What documentation exists for the format can be found at: - http://translatewiki.net/wiki/Translating:Localisation_for_developers#Message_documentation - - The file should be closed by _close_qqq_file(). - - Parameters: - output_dir: The output directory. - - Returns: - A pointer to a file to which a left brace and newline have been written. - - Raises: - IOError: An error occurred while opening or writing the file. - """ - qqq_file_name = os.path.join(os.curdir, output_dir, 'qqq.json') - qqq_file = codecs.open(qqq_file_name, 'w', 'utf-8') - print('Created file: ' + qqq_file_name) - qqq_file.write('{\n') - return qqq_file - - -def _close_qqq_file(qqq_file): - """Closes a qqq.json file created and opened by _create_qqq_file(). - - This writes the final newlines and right brace. - - Args: - qqq_file: A file created by _create_qqq_file(). - - Raises: - IOError: An error occurred while writing to or closing the file. - """ - qqq_file.write('\n}\n') - qqq_file.close() - - -def _create_lang_file(author, lang, output_dir): - """Creates a .json file for translatewiki.net. - - The file consists of metadata, followed by key-value pairs, where the keys - are message ids and the values are the messages in the language specified - by the corresponding command-line argument. The file should be closed by - _close_lang_file(). - - Args: - author: Name and email address of contact for translators. - lang: ISO 639-1 source language code. - output_dir: Relative directory for output files. - - Returns: - A pointer to a file to which the metadata has been written. - - Raises: - IOError: An error occurred while opening or writing the file. - """ - lang_file_name = os.path.join(os.curdir, output_dir, lang + '.json') - lang_file = codecs.open(lang_file_name, 'w', 'utf-8') - print('Created file: ' + lang_file_name) - # string.format doesn't like printing braces, so break up our writes. - lang_file.write('{\n\t"@metadata": {') - lang_file.write(""" -\t\t"author": "{0}", -\t\t"lastupdated": "{1}", -\t\t"locale": "{2}", -\t\t"messagedocumentation" : "qqq" -""".format(author, str(datetime.now()), lang)) - lang_file.write('\t},\n') - return lang_file - - -def _close_lang_file(lang_file): - """Closes a .json file created with _create_lang_file(). - - This also writes the terminating left brace and newline. - - Args: - lang_file: A file opened with _create_lang_file(). - - Raises: - IOError: An error occurred while writing to or closing the file. - """ - lang_file.write('\n}\n') - lang_file.close() - - -def _create_key_file(output_dir): - """Creates a keys.json file mapping Closure keys to Blockly keys. - - Args: - output_dir: Relative directory for output files. - - Raises: - IOError: An error occurred while creating the file. - """ - key_file_name = os.path.join(os.curdir, output_dir, 'keys.json') - key_file = open(key_file_name, 'w') - key_file.write('{\n') - print('Created file: ' + key_file_name) - return key_file - - -def _close_key_file(key_file): - """Closes a key file created and opened with _create_key_file(). - - Args: - key_file: A file created by _create_key_file(). - - Raises: - IOError: An error occurred while writing to or closing the file. - """ - key_file.write('\n}\n') - key_file.close() - - -def write_files(author, lang, output_dir, units, write_key_file): - """Writes the output files for the given units. - - There are three possible output files: - * lang_file: JSON file mapping meanings (e.g., Maze.turnLeft) to the - English text. The base name of the language file is specified by the - "lang" command-line argument. - * key_file: JSON file mapping meanings to Soy-generated keys (long hash - codes). This is only output if the parameter write_key_file is True. - * qqq_file: JSON file mapping meanings to descriptions. - - Args: - author: Name and email address of contact for translators. - lang: ISO 639-1 source language code. - output_dir: Relative directory for output files. - units: A list of dictionaries with entries for 'meaning', 'source', - 'description', and 'keys' (the last only if write_key_file is true), - in the order desired in the output files. - write_key_file: Whether to output a keys.json file. - - Raises: - IOError: An error occurs opening, writing to, or closing a file. - KeyError: An expected key is missing from units. - """ - lang_file = _create_lang_file(author, lang, output_dir) - qqq_file = _create_qqq_file(output_dir) - if write_key_file: - key_file = _create_key_file(output_dir) - first_entry = True - for unit in units: - if not first_entry: - lang_file.write(',\n') - if write_key_file: - key_file.write(',\n') - qqq_file.write(',\n') - lang_file.write(u'\t"{0}": "{1}"'.format( - unit['meaning'], - unit['source'].replace('"', "'"))) - if write_key_file: - key_file.write('"{0}": "{1}"'.format(unit['meaning'], unit['key'])) - qqq_file.write(u'\t"{0}": "{1}"'.format( - unit['meaning'], - unit['description'].replace('"', "'").replace( - '{lb}', '{').replace('{rb}', '}'))) - first_entry = False - _close_lang_file(lang_file) - if write_key_file: - _close_key_file(key_file) - _close_qqq_file(qqq_file) +#!/usr/bin/python3 + +# Code shared by translation conversion scripts. +# +# Copyright 2013 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import codecs +import json +import os +from datetime import datetime + +class InputError(Exception): + """Exception raised for errors in the input. + + Attributes: + location -- where error occurred + msg -- explanation of the error + + """ + + def __init__(self, location, msg): + Exception.__init__(self, '{0}: {1}'.format(location, msg)) + self.location = location + self.msg = msg + + +def read_json_file(filename): + """Read a JSON file as UTF-8 into a dictionary, discarding @metadata. + + Args: + filename: The filename, which must end ".json". + + Returns: + The dictionary. + + Raises: + InputError: The filename did not end with ".json" or an error occurred + while opening or reading the file. + """ + if not filename.endswith('.json'): + raise InputError(filename, 'filenames must end with ".json"') + try: + # Read in file. + with codecs.open(filename, 'r', 'utf-8') as infile: + defs = json.load(infile) + if '@metadata' in defs: + del defs['@metadata'] + return defs + except ValueError as e: + print('Error reading ' + filename) + raise InputError(filename, str(e)) + + +def _create_qqq_file(output_dir): + """Creates a qqq.json file with message documentation for translatewiki.net. + + The file consists of key-value pairs, where the keys are message ids and + the values are descriptions for the translators of the messages. + What documentation exists for the format can be found at: + http://translatewiki.net/wiki/Translating:Localisation_for_developers#Message_documentation + + The file should be closed by _close_qqq_file(). + + Parameters: + output_dir: The output directory. + + Returns: + A pointer to a file to which a left brace and newline have been written. + + Raises: + IOError: An error occurred while opening or writing the file. + """ + qqq_file_name = os.path.join(os.curdir, output_dir, 'qqq.json') + qqq_file = codecs.open(qqq_file_name, 'w', 'utf-8') + print('Created file: ' + qqq_file_name) + qqq_file.write('{\n') + return qqq_file + + +def _close_qqq_file(qqq_file): + """Closes a qqq.json file created and opened by _create_qqq_file(). + + This writes the final newlines and right brace. + + Args: + qqq_file: A file created by _create_qqq_file(). + + Raises: + IOError: An error occurred while writing to or closing the file. + """ + qqq_file.write('\n}\n') + qqq_file.close() + + +def _create_lang_file(author, lang, output_dir): + """Creates a .json file for translatewiki.net. + + The file consists of metadata, followed by key-value pairs, where the keys + are message ids and the values are the messages in the language specified + by the corresponding command-line argument. The file should be closed by + _close_lang_file(). + + Args: + author: Name and email address of contact for translators. + lang: ISO 639-1 source language code. + output_dir: Relative directory for output files. + + Returns: + A pointer to a file to which the metadata has been written. + + Raises: + IOError: An error occurred while opening or writing the file. + """ + lang_file_name = os.path.join(os.curdir, output_dir, lang + '.json') + lang_file = codecs.open(lang_file_name, 'w', 'utf-8') + print('Created file: ' + lang_file_name) + # string.format doesn't like printing braces, so break up our writes. + lang_file.write('{\n\t"@metadata": {') + lang_file.write(""" +\t\t"author": "{0}", +\t\t"lastupdated": "{1}", +\t\t"locale": "{2}", +\t\t"messagedocumentation" : "qqq" +""".format(author, str(datetime.now()), lang)) + lang_file.write('\t},\n') + return lang_file + + +def _close_lang_file(lang_file): + """Closes a .json file created with _create_lang_file(). + + This also writes the terminating left brace and newline. + + Args: + lang_file: A file opened with _create_lang_file(). + + Raises: + IOError: An error occurred while writing to or closing the file. + """ + lang_file.write('\n}\n') + lang_file.close() + + +def _create_key_file(output_dir): + """Creates a keys.json file mapping Closure keys to Blockly keys. + + Args: + output_dir: Relative directory for output files. + + Raises: + IOError: An error occurred while creating the file. + """ + key_file_name = os.path.join(os.curdir, output_dir, 'keys.json') + key_file = open(key_file_name, 'w') + key_file.write('{\n') + print('Created file: ' + key_file_name) + return key_file + + +def _close_key_file(key_file): + """Closes a key file created and opened with _create_key_file(). + + Args: + key_file: A file created by _create_key_file(). + + Raises: + IOError: An error occurred while writing to or closing the file. + """ + key_file.write('\n}\n') + key_file.close() + + +def write_files(author, lang, output_dir, units, write_key_file): + """Writes the output files for the given units. + + There are three possible output files: + * lang_file: JSON file mapping meanings (e.g., Maze.turnLeft) to the + English text. The base name of the language file is specified by the + "lang" command-line argument. + * key_file: JSON file mapping meanings to Soy-generated keys (long hash + codes). This is only output if the parameter write_key_file is True. + * qqq_file: JSON file mapping meanings to descriptions. + + Args: + author: Name and email address of contact for translators. + lang: ISO 639-1 source language code. + output_dir: Relative directory for output files. + units: A list of dictionaries with entries for 'meaning', 'source', + 'description', and 'keys' (the last only if write_key_file is true), + in the order desired in the output files. + write_key_file: Whether to output a keys.json file. + + Raises: + IOError: An error occurs opening, writing to, or closing a file. + KeyError: An expected key is missing from units. + """ + lang_file = _create_lang_file(author, lang, output_dir) + qqq_file = _create_qqq_file(output_dir) + if write_key_file: + key_file = _create_key_file(output_dir) + first_entry = True + for unit in units: + if not first_entry: + lang_file.write(',\n') + if write_key_file: + key_file.write(',\n') + qqq_file.write(',\n') + lang_file.write(u'\t"{0}": "{1}"'.format( + unit['meaning'], + unit['source'].replace('"', "'"))) + if write_key_file: + key_file.write('"{0}": "{1}"'.format(unit['meaning'], unit['key'])) + qqq_file.write(u'\t"{0}": "{1}"'.format( + unit['meaning'], + unit['description'].replace('"', "'").replace( + '{lb}', '{').replace('{rb}', '}'))) + first_entry = False + _close_lang_file(lang_file) + if write_key_file: + _close_key_file(key_file) + _close_qqq_file(qqq_file) diff --git a/scripts/i18n/create_messages.py b/scripts/i18n/create_messages.py index d0d739734b0..38c5d0b9002 100755 --- a/scripts/i18n/create_messages.py +++ b/scripts/i18n/create_messages.py @@ -1,164 +1,164 @@ -#!/usr/bin/python3 - -# Generate .js files defining Blockly core and language messages. -# -# Copyright 2013 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import codecs -import os -import re -import sys -from common import read_json_file - - -_NEWLINE_PATTERN = re.compile('[\n\r]') - - -def string_is_ascii(s): - try: - # This approach is better for compatibility - return all(ord(c) < 128 for c in s) - except TypeError: - return False - -def load_constants(filename): - """Read in constants file, which must be output in every language.""" - constant_defs = read_json_file(filename) - constants_text = '\n' - for key in constant_defs: - value = constant_defs[key] - value = value.replace('"', '\\"') - constants_text += u'\nBlockly.Msg["{0}"] = \"{1}\";'.format( - key, value) - return constants_text - -def main(): - """Generate .js files defining Blockly core and language messages.""" - - # Process command-line arguments. - parser = argparse.ArgumentParser(description='Convert JSON files to JS.') - parser.add_argument('--source_lang', default='en', - help='ISO 639-1 source language code') - parser.add_argument('--source_lang_file', - default=os.path.join('json', 'en.json'), - help='Path to .json file for source language') - parser.add_argument('--source_synonym_file', - default=os.path.join('json', 'synonyms.json'), - help='Path to .json file with synonym definitions') - parser.add_argument('--source_constants_file', - default=os.path.join('json', 'constants.json'), - help='Path to .json file with constant definitions') - parser.add_argument('--output_dir', default='js/', - help='relative directory for output files') - parser.add_argument('--key_file', default='keys.json', - help='relative path to input keys file') - parser.add_argument('--quiet', action='store_true', default=False, - help='do not write anything to standard output') - parser.add_argument('files', nargs='+', help='input files') - args = parser.parse_args() - if not args.output_dir.endswith(os.path.sep): - args.output_dir += os.path.sep - - # Read in source language .json file, which provides any values missing - # in target languages' .json files. - source_defs = read_json_file(os.path.join(os.curdir, args.source_lang_file)) - # Make sure the source file doesn't contain a newline or carriage return. - for key, value in source_defs.items(): - if _NEWLINE_PATTERN.search(value): - print('ERROR: definition of {0} in {1} contained a newline character.'. - format(key, args.source_lang_file)) - sys.exit(1) - sorted_keys = sorted(source_defs.keys()) - - # Read in synonyms file, which must be output in every language. - synonym_defs = read_json_file(os.path.join( - os.curdir, args.source_synonym_file)) - - # synonym_defs is also being sorted to ensure the same order is kept - synonym_text = '\n'.join([u'Blockly.Msg["{0}"] = Blockly.Msg["{1}"];' - .format(key, synonym_defs[key]) for key in sorted(synonym_defs)]) - - # Read in constants file, which must be output in every language. - constants_text = load_constants(os.path.join(os.curdir, args.source_constants_file)) - - # Create each output file. - for arg_file in args.files: - (_, filename) = os.path.split(arg_file) - target_lang = filename[:filename.index('.')] - if target_lang not in ('qqq', 'keys', 'synonyms', 'constants'): - target_defs = read_json_file(os.path.join(os.curdir, arg_file)) - - # Verify that keys are 'ascii' - bad_keys = [key for key in target_defs if not string_is_ascii(key)] - if bad_keys: - print(u'These keys in {0} contain non ascii characters: {1}'.format( - filename, ', '.join(bad_keys))) - - # If there's a '\n' or '\r', remove it and print a warning. - for key, value in target_defs.items(): - if _NEWLINE_PATTERN.search(value): - print(u'WARNING: definition of {0} in {1} contained ' - 'a newline character.'. - format(key, arg_file)) - target_defs[key] = _NEWLINE_PATTERN.sub(' ', value) - - # Output file. - outname = os.path.join(os.curdir, args.output_dir, target_lang + '.js') - with codecs.open(outname, 'w', 'utf-8') as outfile: - outfile.write( - """// This file was automatically generated. Do not modify. - -'use strict'; - -var Blockly = Blockly || {{ Msg: Object.create(null) }}; - -""".format(target_lang.replace('-', '.'))) - # For each key in the source language file, output the target value - # if present; otherwise, output the source language value with a - # warning comment. - for key in sorted_keys: - if key in target_defs: - value = target_defs[key] - comment = '' - del target_defs[key] - else: - value = source_defs[key] - comment = ' // untranslated' - value = value.replace('"', '\\"') - outfile.write(u'Blockly.Msg["{0}"] = "{1}";{2}\n' - .format(key, value, comment)) - - # Announce any keys defined only for target language. - if target_defs: - extra_keys = [key for key in target_defs if key not in synonym_defs] - synonym_keys = [key for key in target_defs if key in synonym_defs] - if not args.quiet: - if extra_keys: - print(u'These extra keys appeared in {0}: {1}'.format( - filename, ', '.join(extra_keys))) - if synonym_keys: - print(u'These synonym keys appeared in {0}: {1}'.format( - filename, ', '.join(synonym_keys))) - - outfile.write(synonym_text) - outfile.write(constants_text) - - if not args.quiet: - print('Created {0}'.format(outname)) - - -if __name__ == '__main__': - main() +#!/usr/bin/python3 + +# Generate .js files defining Blockly core and language messages. +# +# Copyright 2013 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import codecs +import os +import re +import sys +from common import read_json_file + + +_NEWLINE_PATTERN = re.compile('[\n\r]') + + +def string_is_ascii(s): + try: + # This approach is better for compatibility + return all(ord(c) < 128 for c in s) + except TypeError: + return False + +def load_constants(filename): + """Read in constants file, which must be output in every language.""" + constant_defs = read_json_file(filename) + constants_text = '\n' + for key in constant_defs: + value = constant_defs[key] + value = value.replace('"', '\\"') + constants_text += u'\nBlockly.Msg["{0}"] = \"{1}\";'.format( + key, value) + return constants_text + +def main(): + """Generate .js files defining Blockly core and language messages.""" + + # Process command-line arguments. + parser = argparse.ArgumentParser(description='Convert JSON files to JS.') + parser.add_argument('--source_lang', default='en', + help='ISO 639-1 source language code') + parser.add_argument('--source_lang_file', + default=os.path.join('json', 'en.json'), + help='Path to .json file for source language') + parser.add_argument('--source_synonym_file', + default=os.path.join('json', 'synonyms.json'), + help='Path to .json file with synonym definitions') + parser.add_argument('--source_constants_file', + default=os.path.join('json', 'constants.json'), + help='Path to .json file with constant definitions') + parser.add_argument('--output_dir', default='js/', + help='relative directory for output files') + parser.add_argument('--key_file', default='keys.json', + help='relative path to input keys file') + parser.add_argument('--quiet', action='store_true', default=False, + help='do not write anything to standard output') + parser.add_argument('files', nargs='+', help='input files') + args = parser.parse_args() + if not args.output_dir.endswith(os.path.sep): + args.output_dir += os.path.sep + + # Read in source language .json file, which provides any values missing + # in target languages' .json files. + source_defs = read_json_file(os.path.join(os.curdir, args.source_lang_file)) + # Make sure the source file doesn't contain a newline or carriage return. + for key, value in source_defs.items(): + if _NEWLINE_PATTERN.search(value): + print('ERROR: definition of {0} in {1} contained a newline character.'. + format(key, args.source_lang_file)) + sys.exit(1) + sorted_keys = sorted(source_defs.keys()) + + # Read in synonyms file, which must be output in every language. + synonym_defs = read_json_file(os.path.join( + os.curdir, args.source_synonym_file)) + + # synonym_defs is also being sorted to ensure the same order is kept + synonym_text = '\n'.join([u'Blockly.Msg["{0}"] = Blockly.Msg["{1}"];' + .format(key, synonym_defs[key]) for key in sorted(synonym_defs)]) + + # Read in constants file, which must be output in every language. + constants_text = load_constants(os.path.join(os.curdir, args.source_constants_file)) + + # Create each output file. + for arg_file in args.files: + (_, filename) = os.path.split(arg_file) + target_lang = filename[:filename.index('.')] + if target_lang not in ('qqq', 'keys', 'synonyms', 'constants'): + target_defs = read_json_file(os.path.join(os.curdir, arg_file)) + + # Verify that keys are 'ascii' + bad_keys = [key for key in target_defs if not string_is_ascii(key)] + if bad_keys: + print(u'These keys in {0} contain non ascii characters: {1}'.format( + filename, ', '.join(bad_keys))) + + # If there's a '\n' or '\r', remove it and print a warning. + for key, value in target_defs.items(): + if _NEWLINE_PATTERN.search(value): + print(u'WARNING: definition of {0} in {1} contained ' + 'a newline character.'. + format(key, arg_file)) + target_defs[key] = _NEWLINE_PATTERN.sub(' ', value) + + # Output file. + outname = os.path.join(os.curdir, args.output_dir, target_lang + '.js') + with codecs.open(outname, 'w', 'utf-8') as outfile: + outfile.write( + """// This file was automatically generated. Do not modify. + +'use strict'; + +var Blockly = Blockly || {{ Msg: Object.create(null) }}; + +""".format(target_lang.replace('-', '.'))) + # For each key in the source language file, output the target value + # if present; otherwise, output the source language value with a + # warning comment. + for key in sorted_keys: + if key in target_defs: + value = target_defs[key] + comment = '' + del target_defs[key] + else: + value = source_defs[key] + comment = ' // untranslated' + value = value.replace('"', '\\"') + outfile.write(u'Blockly.Msg["{0}"] = "{1}";{2}\n' + .format(key, value, comment)) + + # Announce any keys defined only for target language. + if target_defs: + extra_keys = [key for key in target_defs if key not in synonym_defs] + synonym_keys = [key for key in target_defs if key in synonym_defs] + if not args.quiet: + if extra_keys: + print(u'These extra keys appeared in {0}: {1}'.format( + filename, ', '.join(extra_keys))) + if synonym_keys: + print(u'These synonym keys appeared in {0}: {1}'.format( + filename, ', '.join(synonym_keys))) + + outfile.write(synonym_text) + outfile.write(constants_text) + + if not args.quiet: + print('Created {0}'.format(outname)) + + +if __name__ == '__main__': + main() diff --git a/scripts/i18n/dedup_json.py b/scripts/i18n/dedup_json.py index ccdddf54ab0..2f44d30d63f 100755 --- a/scripts/i18n/dedup_json.py +++ b/scripts/i18n/dedup_json.py @@ -1,72 +1,72 @@ -#!/usr/bin/python3 - -# Consolidates duplicate key-value pairs in a JSON file. -# If the same key is used with different values, no warning is given, -# and there is no guarantee about which key-value pair will be output. -# There is also no guarantee as to the order of the key-value pairs -# output. -# -# Copyright 2013 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import codecs -import json -from common import InputError - - -def main(): - """Parses arguments and iterates over files. - - Raises: - IOError: An I/O error occurred with an input or output file. - InputError: Input JSON could not be parsed. - """ - - # Set up argument parser. - parser = argparse.ArgumentParser( - description='Removes duplicate key-value pairs from JSON files.') - parser.add_argument('--suffix', default='', - help='optional suffix for output files; ' - 'if empty, files will be changed in place') - parser.add_argument('files', nargs='+', help='input files') - args = parser.parse_args() - - # Iterate over files. - for filename in args.files: - # Read in json using Python libraries. This eliminates duplicates. - print('Processing ' + filename + '...') - try: - with codecs.open(filename, 'r', 'utf-8') as infile: - j = json.load(infile) - except ValueError as e: - print('Error reading ' + filename) - raise InputError(filename, str(e)) - - # Built up output strings as an array to make output of delimiters easier. - output = [] - for key in j: - if key != '@metadata': - output.append('\t"' + key + '": "' + - j[key].replace('\n', '\\n') + '"') - - # Output results. - with codecs.open(filename + args.suffix, 'w', 'utf-8') as outfile: - outfile.write('{\n') - outfile.write(',\n'.join(output)) - outfile.write('\n}\n') - - -if __name__ == '__main__': - main() +#!/usr/bin/python3 + +# Consolidates duplicate key-value pairs in a JSON file. +# If the same key is used with different values, no warning is given, +# and there is no guarantee about which key-value pair will be output. +# There is also no guarantee as to the order of the key-value pairs +# output. +# +# Copyright 2013 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import codecs +import json +from common import InputError + + +def main(): + """Parses arguments and iterates over files. + + Raises: + IOError: An I/O error occurred with an input or output file. + InputError: Input JSON could not be parsed. + """ + + # Set up argument parser. + parser = argparse.ArgumentParser( + description='Removes duplicate key-value pairs from JSON files.') + parser.add_argument('--suffix', default='', + help='optional suffix for output files; ' + 'if empty, files will be changed in place') + parser.add_argument('files', nargs='+', help='input files') + args = parser.parse_args() + + # Iterate over files. + for filename in args.files: + # Read in json using Python libraries. This eliminates duplicates. + print('Processing ' + filename + '...') + try: + with codecs.open(filename, 'r', 'utf-8') as infile: + j = json.load(infile) + except ValueError as e: + print('Error reading ' + filename) + raise InputError(filename, str(e)) + + # Built up output strings as an array to make output of delimiters easier. + output = [] + for key in j: + if key != '@metadata': + output.append('\t"' + key + '": "' + + j[key].replace('\n', '\\n') + '"') + + # Output results. + with codecs.open(filename + args.suffix, 'w', 'utf-8') as outfile: + outfile.write('{\n') + outfile.write(',\n'.join(output)) + outfile.write('\n}\n') + + +if __name__ == '__main__': + main() diff --git a/scripts/i18n/js_to_json.py b/scripts/i18n/js_to_json.py index c073163de2d..cf49c58dd7a 100755 --- a/scripts/i18n/js_to_json.py +++ b/scripts/i18n/js_to_json.py @@ -1,133 +1,133 @@ -#!/usr/bin/python3 - -# Gives the translation status of the specified apps and languages. -# -# Copyright 2013 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Extracts messages from messages.js file into .json files for translation. - -Specifically, lines with the following formats are extracted: - - /// Here is a description of the following message. - Blockly.SOME_KEY = 'Some value'; - -Adjacent "///" lines are concatenated. - -There are two output files, each of which is proper JSON. For each key, the -file en.json would get an entry of the form: - - "Blockly.SOME_KEY", "Some value", - -The file qqq.json would get: - - "Blockly.SOME_KEY", "Here is a description of the following message.", - -Commas would of course be omitted for the final entry of each value. -""" - -import argparse -import codecs -import json -import os -import re -from common import write_files - - -_INPUT_DEF_PATTERN = re.compile("""Blockly.Msg.(\w*)\s*=\s*'(.*)';?\r?$""") - -_INPUT_SYN_PATTERN = re.compile( - """Blockly.Msg.(\w*)\s*=\s*Blockly.Msg.(\w*);""") - -_CONSTANT_DESCRIPTION_PATTERN = re.compile( - """{{Notranslate}}""", re.IGNORECASE) - -def main(): - # Set up argument parser. - parser = argparse.ArgumentParser(description='Create translation files.') - parser.add_argument( - '--author', - default='Ellen Spertus ', - help='name and email address of contact for translators') - parser.add_argument('--lang', default='en', - help='ISO 639-1 source language code') - parser.add_argument('--output_dir', default='json', - help='relative directory for output files') - parser.add_argument('--input_file', default='messages.js', - help='input file') - parser.add_argument('--quiet', action='store_true', default=False, - help='only display warnings, not routine info') - args = parser.parse_args() - if (not args.output_dir.endswith(os.path.sep)): - args.output_dir += os.path.sep - - # Read and parse input file. - results = [] - synonyms = {} - constants = {} # Values that are constant across all languages. - description = '' - infile = codecs.open(args.input_file, 'r', 'utf-8') - for line in infile: - if line.startswith('///'): - if description: - description = description + ' ' + line[3:].strip() - else: - description = line[3:].strip() - else: - match = _INPUT_DEF_PATTERN.match(line) - if match: - key = match.group(1) - value = match.group(2).replace("\\'", "'") - if not description: - print('Warning: No description for ' + result['meaning']) - if (description and _CONSTANT_DESCRIPTION_PATTERN.search(description)): - constants[key] = value - else: - result = {} - result['meaning'] = key - result['source'] = value - result['description'] = description - results.append(result) - description = '' - else: - match = _INPUT_SYN_PATTERN.match(line) - if match: - if description: - print('Warning: Description preceding definition of synonym {0}.'. - format(match.group(1))) - description = '' - synonyms[match.group(1)] = match.group(2) - infile.close() - - # Create .json, keys.json, and qqq.json. - write_files(args.author, args.lang, args.output_dir, results, False) - - # Create synonyms.json. - synonym_file_name = os.path.join(os.curdir, args.output_dir, 'synonyms.json') - with open(synonym_file_name, 'w') as outfile: - json.dump(synonyms, outfile) - if not args.quiet: - print("Wrote {0} synonym pairs to {1}.".format( - len(synonyms), synonym_file_name)) - - # Create constants.json - constants_file_name = os.path.join(os.curdir, args.output_dir, 'constants.json') - with open(constants_file_name, 'w') as outfile: - json.dump(constants, outfile) - if not args.quiet: - print("Wrote {0} constant pairs to {1}.".format( - len(constants), synonym_file_name)) - -if __name__ == '__main__': - main() +#!/usr/bin/python3 + +# Gives the translation status of the specified apps and languages. +# +# Copyright 2013 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Extracts messages from messages.js file into .json files for translation. + +Specifically, lines with the following formats are extracted: + + /// Here is a description of the following message. + Blockly.SOME_KEY = 'Some value'; + +Adjacent "///" lines are concatenated. + +There are two output files, each of which is proper JSON. For each key, the +file en.json would get an entry of the form: + + "Blockly.SOME_KEY", "Some value", + +The file qqq.json would get: + + "Blockly.SOME_KEY", "Here is a description of the following message.", + +Commas would of course be omitted for the final entry of each value. +""" + +import argparse +import codecs +import json +import os +import re +from common import write_files + + +_INPUT_DEF_PATTERN = re.compile("""Blockly.Msg.(\w*)\s*=\s*'(.*)';?\r?$""") + +_INPUT_SYN_PATTERN = re.compile( + """Blockly.Msg.(\w*)\s*=\s*Blockly.Msg.(\w*);""") + +_CONSTANT_DESCRIPTION_PATTERN = re.compile( + """{{Notranslate}}""", re.IGNORECASE) + +def main(): + # Set up argument parser. + parser = argparse.ArgumentParser(description='Create translation files.') + parser.add_argument( + '--author', + default='Ellen Spertus ', + help='name and email address of contact for translators') + parser.add_argument('--lang', default='en', + help='ISO 639-1 source language code') + parser.add_argument('--output_dir', default='json', + help='relative directory for output files') + parser.add_argument('--input_file', default='messages.js', + help='input file') + parser.add_argument('--quiet', action='store_true', default=False, + help='only display warnings, not routine info') + args = parser.parse_args() + if (not args.output_dir.endswith(os.path.sep)): + args.output_dir += os.path.sep + + # Read and parse input file. + results = [] + synonyms = {} + constants = {} # Values that are constant across all languages. + description = '' + infile = codecs.open(args.input_file, 'r', 'utf-8') + for line in infile: + if line.startswith('///'): + if description: + description = description + ' ' + line[3:].strip() + else: + description = line[3:].strip() + else: + match = _INPUT_DEF_PATTERN.match(line) + if match: + key = match.group(1) + value = match.group(2).replace("\\'", "'") + if not description: + print('Warning: No description for ' + result['meaning']) + if (description and _CONSTANT_DESCRIPTION_PATTERN.search(description)): + constants[key] = value + else: + result = {} + result['meaning'] = key + result['source'] = value + result['description'] = description + results.append(result) + description = '' + else: + match = _INPUT_SYN_PATTERN.match(line) + if match: + if description: + print('Warning: Description preceding definition of synonym {0}.'. + format(match.group(1))) + description = '' + synonyms[match.group(1)] = match.group(2) + infile.close() + + # Create .json, keys.json, and qqq.json. + write_files(args.author, args.lang, args.output_dir, results, False) + + # Create synonyms.json. + synonym_file_name = os.path.join(os.curdir, args.output_dir, 'synonyms.json') + with open(synonym_file_name, 'w') as outfile: + json.dump(synonyms, outfile) + if not args.quiet: + print("Wrote {0} synonym pairs to {1}.".format( + len(synonyms), synonym_file_name)) + + # Create constants.json + constants_file_name = os.path.join(os.curdir, args.output_dir, 'constants.json') + with open(constants_file_name, 'w') as outfile: + json.dump(constants, outfile) + if not args.quiet: + print("Wrote {0} constant pairs to {1}.".format( + len(constants), synonym_file_name)) + +if __name__ == '__main__': + main() diff --git a/scripts/i18n/tests.py b/scripts/i18n/tests.py index 684d731058e..dad67337371 100644 --- a/scripts/i18n/tests.py +++ b/scripts/i18n/tests.py @@ -1,46 +1,46 @@ -#!/usr/bin/python3 -# -*- coding: utf-8 -*- - -# Tests of i18n scripts. -# -# Copyright 2013 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import common -import re -import unittest - -class TestSequenceFunctions(unittest.TestCase): - def test_insert_breaks(self): - spaces = re.compile(r'\s+|\\n') - def contains_all_chars(orig, result): - return re.sub(spaces, '', orig) == re.sub(spaces, '', result) - - sentences = [u'Quay Pegman qua bên trái hoặc bên phải 90 độ.', - u'Foo bar baz this is english that is okay bye.', - u'If there is a path in the specified direction, \nthen ' + - u'do some actions.', - u'If there is a path in the specified direction, then do ' + - u'the first block of actions. Otherwise, do the second ' + - u'block of actions.'] - for sentence in sentences: - output = common.insert_breaks(sentence, 30, 50) - self.assertTrue(contains_all_chars(sentence, output), - u'Mismatch between:\n{0}\n{1}'.format( - re.sub(spaces, '', sentence), - re.sub(spaces, '', output))) - - -if __name__ == '__main__': - unittest.main() +#!/usr/bin/python3 +# -*- coding: utf-8 -*- + +# Tests of i18n scripts. +# +# Copyright 2013 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import common +import re +import unittest + +class TestSequenceFunctions(unittest.TestCase): + def test_insert_breaks(self): + spaces = re.compile(r'\s+|\\n') + def contains_all_chars(orig, result): + return re.sub(spaces, '', orig) == re.sub(spaces, '', result) + + sentences = [u'Quay Pegman qua bên trái hoặc bên phải 90 độ.', + u'Foo bar baz this is english that is okay bye.', + u'If there is a path in the specified direction, \nthen ' + + u'do some actions.', + u'If there is a path in the specified direction, then do ' + + u'the first block of actions. Otherwise, do the second ' + + u'block of actions.'] + for sentence in sentences: + output = common.insert_breaks(sentence, 30, 50) + self.assertTrue(contains_all_chars(sentence, output), + u'Mismatch between:\n{0}\n{1}'.format( + re.sub(spaces, '', sentence), + re.sub(spaces, '', output))) + + +if __name__ == '__main__': + unittest.main() diff --git a/scripts/migration/renamings.json5 b/scripts/migration/renamings.json5 index 2de068b491f..3a50c252f69 100644 --- a/scripts/migration/renamings.json5 +++ b/scripts/migration/renamings.json5 @@ -1,1341 +1,1341 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Collected information about modules and module - * exports that have been renamed between versions. - * - * This file is in JSON5 format; see https://json5.org/. - */ - -{ - // Example entry: - '0.0.0': [ // Version that includes the rename. - // Each entry in the array is a module. - // All of the properties are optional. - { - // The name that the module had before this version. - oldName: 'old.module.name', - - // The name that the module now has in this version. - newName: 'new.module.name', - - // If a module had a default export and now has a named export, - // the name of the named export can be given here. - newExport: 'newNameForDefaultExport', - - // The old location of this module on the Blockly tree (the - // mega-object that people access if they are importing all of - // Blockly). Usually this is the same as the oldName and can be - // omitted. - oldPath: 'old.path.on.Blockly.tree', - - // The new location of this module on the Blockly tree. To be - // backwards compatible with people accessing the Blockly tree, - // this should be the same as the oldPath. If omitted, newPath - // is assumed to be the same newName. - newPath: 'new.path.on.Blockly.tree', - - // Each entry in this map is the old name of a named export. - exports: { - // The name that the export had before this version. - // All of the properties on this object are optional. - 'oldExportName': { - // The new module that the export is in in this version. If - // this is not provided, the newModule is assumed to be the - // parent module's newPath. - newModule: 'new.module.name', - - // The name that the export now has in this version. - newExport: 'newExportName', - - // The old location of this module on the Blockly tree. - // If omitted, oldPath defaults to - // .. - oldPath: 'old.path.on.Blockly.tree', - - // The new location of this module on the Blockly tree. To - // be backwards compatible with people accessing the - // Blockkly tree, this should be the same as the oldPath. - // Defaults to `${newModule}.${newExport}`. - newPath: 'new.path.on.Blockly.tree', - - // If a named export has been changed to a private variable - // with a get method, this is the name of the get method. - getMethod: 'getMethodName', - - // If a named export has been changed to a private variable - // with a set method, this is the name of the set method. - setMethod: 'setMethodName', - }, - - // This file can also document the renaming of a property or - // sub-property of an (object-valued) named export. - 'exportExport.oldProperty': { - newExport: 'newExport.newProperty', - // Additional options as above. - }, - - // Or promotion of property to named export, etc. - 'exportExport.oldProperty': { - newExport: 'newTopLevelExport', - }, - }, - }, - ], - - '5.20210325.0': [ - { - oldName: 'Blockly', - exports: { - // bind/unbind events functions. See PR #4642 - EventData: {newModule: 'Blockly.browserEvents', newExport: 'Data'}, - bindEvent_: {newModule: 'Blockly.browserEvents', newExport: 'bind'}, - unbindEvent_: {newModule: 'Blockly.browserEvents', newExport: 'unbind'}, - bindEventWithChecks_: { - newModule: 'Blockly.browserEvents', - newExport: 'conditionalBind', - }, - }, - } - ], - - '7.20211209.0-beta.0': [ - { - oldName: 'Blockly', - exports: { - // Clipboard. See PR #5237. - clipboardXml_: {newModule: 'Blockly.clipboard', newExport: 'xml'}, - clipboardSource_: {newModule: 'Blockly.clipboard', newExport: 'source'}, - clipboardTypeCounts_: { - newModule: 'Blockly.clipboard', - newExport: 'typeCounts', - }, - copy: {newModule: 'Blockly.clipboard'}, - paste: {newModule: 'Blockly.clipboard'}, - duplicate: {newModule: 'Blockly.clipboard'}, - - // mainWorkspace. See PR #5244. - mainWorkspace: { - newModule: 'Blockly.common', - getMethod: 'getMainWorkspace', - setMethod: 'setMainWorkspace', - }, - getMainWorkspace: {newModule: 'Blockly.common'}, - - // parentContainer, draggingConnections. See PR #5262. - parentContainer: { - newModule: 'Blockly.common', - getMethod: 'getParentContainer', - setMethod: 'setParentContainer', - }, - setParentContainer: {newModule: 'Blockly.common'}, - draggingConnections: {newModule: 'Blockly.common'}, - - // Dialogs. See PR #5457. - alert: { - newModule: 'Blockly.dialog', - newExport: 'alert', - setMethod: 'setAlert', - }, - confirm: { - newModule: 'Blockly.dialog', - newExport: 'confirm', - setMethod: 'setConfirm', - }, - prompt: { - newModule: 'Blockly.dialog', - newExport: 'prompt', - setMethod: 'setPrompt', - }, - // hueToHex. See PR #5462. - hueToHex: {newModule: 'Blockly.utils.colour'}, - // Blockly.hideChaff() became - // Blockly.common.getMainWorkspace().hideChaff(). See PR #5460. - - // selected. See PR #5489. - selected: { - newModule: 'Blockly.common', - getMethod: 'getSelected', - setMethod: 'setSelected', - }, - } - }, - { - oldName: 'Blockly.Blocks', - newName: 'Blockly.blocks', - newExport: 'Blocks', // Previous default export now named. - newPath: 'Blockly.Blocks', // But still on tree with original name. - }, - { - oldName: 'Blockly.ContextMenu', - exports: { - currentBlock: { - getMethod: 'getCurrentBlock', - setMethod: 'setCurrentBlock' - }, - }, - }, - { - oldName: 'Blockly.Events', - exports: { - recordUndo: {getMethod: 'getRecordUndo', setMethod: 'setRecordUndo'}, - }, - }, - { - oldName: 'Blockly.Tooltip', - exports: { - DIV: {getMethod: 'getDiv', setMethod: 'setDiv'}, - visible: {getMethod: 'isVisible'}, - }, - }, - { - oldName: 'Blockly.WidgetDiv', - exports: { - DIV: {getMethod: 'getDiv'}, - }, - }, - { - oldName: 'Blockly.connectionTypes', - newName: 'Blockly.ConnectionType', - newExport: 'ConnectionType', // Previous default export now named. - newPath: 'Blockly.ConnectionType', // Type reexported directly. - }, - { - oldName: 'Blockly.utils', - exports: { - genUid: {newModule: 'Blockly.utils.idGenerator'}, - getScrollDelta: {newModule: 'Blockly.utils.browserEvents'}, - isTargetInput: {newModule: 'Blockly.utils.browserEvents'}, - isRightButton: {newModule: 'Blockly.utils.browserEvents'}, - mouseToSvg: {newModule: 'Blockly.utils.browserEvents'}, - }, - }, - { - oldName: 'Blockly.utils.global', - newExport: 'globalThis', - newPath: 'Blockly.utils.global', - }, - { - oldName: 'Blockly.utils.IdGenerator', - newName: 'Blockly.utils.idGenerator', - }, - { - oldName: 'Blockly.utils.xml', - exports: { - // document was a function before, too - not a static property - // or get accessor. - document: {newExport: 'getDocument'}, - }, - }, - ], - - '7.20211209.0': [ - { - oldName: 'Blockly', - exports: { - // Align. - ALIGN_LEFT: { - newModule: 'Blockly.Input', - newExport: 'Align.LEFT', - newPath: 'Blockly.ALIGN_LEFT', - }, - ALIGN_CENTRE: { - newModule: 'Blockly.Input', - newExport: 'Align.CENTRE', - newPath: 'Blockly.ALIGN_CENTRE', - }, - ALIGN_RIGHT: { - newModule: 'Blockly.Input', - newExport: 'Align.RIGHT', - newPath: 'Blockly.ALIGN_RIGHT', - }, - - svgSize: {newModule: 'Blockly.utils.svgMath'}, - resizeSvgContents: {newModule: 'Blockly.WorkspaecSvg'}, - defineBlocksWithJsonArray: {newModule: 'Blockly.common'}, - isNumber: {newModule: 'Blockly.utils.string'}, - } - }, - - { - oldName: 'Blockly.Blocks.colour', - newName: 'Blockly.blocks.colour' - }, - // Blockly.Blocks.lists not previously provided. - { - oldName: 'Blockly.Blocks.logic', - newName: 'Blockly.blocks.logic' - }, - { - oldName: 'Blockly.Blocks.loops', - newName: 'Blockly.blocks.loops' - }, - { - oldName: 'Blockly.Blocks.math', - newName: 'Blockly.blocks.math' - }, - { - oldName: 'Blockly.Blocks.procedures', - newName: 'Blockly.blocks.procedures' - }, - { - oldName: 'Blockly.Blocks.texts', - newName: 'Blockly.blocks.texts' - }, - { - oldName: 'Blockly.Blocks.variables', - newName: 'Blockly.blocks.variables' - }, - // Blockly.Blocks.variablesDynamic not previously provided. - - { - oldName: 'Blockly.utils', - exports: { - screenToWsCoordinates: {newModule: 'Blockly.utils.svgMath'}, - getDocumentScroll: {newModule: 'Blockly.utils.svgMath'}, - getViewportBBox: {newModule: 'Blockly.utils.svgMath'}, - is3dSupported: {newModule: 'Blockly.utils.svgMath'}, - getRelativeXY: {newModule: 'Blockly.utils.svgMath'}, - getInjectionDivXY_: { - newModule: 'Blockly.utils.svgMath', - newExport: 'getInjectionDivXY' - }, - parseBlockColour: {newModule: 'Blockly.utils.parsing'}, - checkMessageReferences: {newModule: 'Blockly.utils.parsing'}, - replaceMessageReferences: {newModule: 'Blockly.utils.parsing'}, - tokenizeInterpolation: {newModule: 'Blockly.utils.parsing'}, - arrayRemove: { - newModule: 'Blockly.utils.array', - newExport: 'removeElem' - }, - getBlockTypeCounts: - {newModule: 'Blockly.common', newExport: 'getBlockTypeCounts'}, - runAfterPageLoad: - {newModule: 'Blockly.Extensions', newExport: 'runAfterPageLoad'}, - }, - }, - - // Default exports to named exports. - { - oldName: 'Blockly.Events.Abstract', - newExport: 'Abstract', - newPath: 'Blockly.Events.Abstract', - }, - { - oldName: 'Blockly.Events.BlockBase', - newExport: 'BlockBase', - newPath: 'Blockly.Events.BlockBase', - }, - { - oldName: 'Blockly.Events.BlockChange', - newExport: 'BlockChange', - newPath: 'Blockly.Events.BlockChange', - }, - { - oldName: 'Blockly.Events.BlockCreate', - newExport: 'BlockCreate', - newPath: 'Blockly.Events.BlockCreate', - }, - { - oldName: 'Blockly.Events.BlockDelete', - newExport: 'BlockDelete', - newPath: 'Blockly.Events.BlockDelete', - }, - { - oldName: 'Blockly.Events.BlockDrag', - newExport: 'BlockDrag', - newPath: 'Blockly.Events.BlockDrag', - }, - { - oldName: 'Blockly.Events.BlockMove', - newExport: 'BlockMove', - newPath: 'Blockly.Events.BlockMove', - }, - { - oldName: 'Blockly.Events.BubbleOpen', - newExport: 'BubbleOpen', - newPath: 'Blockly.Events.BubbleOpen', - }, - { - oldName: 'Blockly.Events.Click', - newExport: 'Click', - newPath: 'Blockly.Events.Click', - }, - { - oldName: 'Blockly.Events.CommentBase', - newExport: 'CommentBase', - newPath: 'Blockly.Events.CommentBase', - }, - { - oldName: 'Blockly.Events.CommentChange', - newExport: 'CommentChange', - newPath: 'Blockly.Events.CommentChange', - }, - { - oldName: 'Blockly.Events.CommentCreate', - newExport: 'CommentCreate', - newPath: 'Blockly.Events.CommentCreate', - }, - { - oldName: 'Blockly.Events.CommentDelete', - newExport: 'CommentDelete', - newPath: 'Blockly.Events.CommentDelete', - }, - { - oldName: 'Blockly.Events.CommentMove', - newExport: 'CommentMove', - newPath: 'Blockly.Events.CommentMove', - }, - { - oldName: 'Blockly.Events.MarkerMove', - newExport: 'MarkerMove', - newPath: 'Blockly.Events.MarkerMove', - }, - { - oldName: 'Blockly.Events.Selected', - newExport: 'Selected', - newPath: 'Blockly.Events.Selected', - }, - { - oldName: 'Blockly.Events.ThemeChange', - newExport: 'ThemeChange', - newPath: 'Blockly.Events.ThemeChange', - }, - { - oldName: 'Blockly.Events.ToolboxItemSelect', - newExport: 'ToolboxItemSelect', - newPath: 'Blockly.Events.ToolboxItemSelect', - }, - { - oldName: 'Blockly.Events.TrashcanOpen', - newExport: 'TrashcanOpen', - newPath: 'Blockly.Events.TrashcanOpen', - }, - { - oldName: 'Blockly.Events.Ui', - newExport: 'Ui', - newPath: 'Blockly.Events.Ui', - }, - { - oldName: 'Blockly.Events.UiBase', - newExport: 'UiBase', - newPath: 'Blockly.Events.UiBase', - }, - { - oldName: 'Blockly.Events.VarBase', - newExport: 'VarBase', - newPath: 'Blockly.Events.VarBase', - }, - { - oldName: 'Blockly.Events.VarCreate', - newExport: 'VarCreate', - newPath: 'Blockly.Events.VarCreate', - }, - { - oldName: 'Blockly.Events.VarDelete', - newExport: 'VarDelete', - newPath: 'Blockly.Events.VarDelete', - }, - { - oldName: 'Blockly.Events.VarRename', - newExport: 'VarRename', - newPath: 'Blockly.Events.VarRename', - }, - { - oldName: 'Blockly.Events.ViewportChange', - newExport: 'ViewportChange', - newPath: 'Blockly.Events.ViewportChange', - }, - { - oldName: 'Blockly.Events.FinishedLoading', - newExport: 'FinishedLoading', - newPath: 'Blockly.Events.FinishedLoading', - }, - { - oldName: 'Blockly.IASTNodeLocation', - newExport: 'IASTNodeLocation', - newPath: 'Blockly.IASTNodeLocation', - }, - { - oldName: 'Blockly.IASTNodeLocationSvg', - newExport: 'IASTNodeLocationSvg', - newPath: 'Blockly.IASTNodeLocationSvg', - }, - { - oldName: 'Blockly.IASTNodeLocationWithBlock', - newExport: 'IASTNodeLocationWithBlock', - newPath: 'Blockly.IASTNodeLocationWithBlock', - }, - { - oldName: 'Blockly.IAutoHideable', - newExport: 'IAutoHideable', - newPath: 'Blockly.IAutoHideable', - }, - { - oldName: 'Blockly.IBlockDragger', - newExport: 'IBlockDragger', - newPath: 'Blockly.IBlockDragger', - }, - { - oldName: 'Blockly.IBoundedElement', - newExport: 'IBoundedElement', - newPath: 'Blockly.IBoundedElement', - }, - { - oldName: 'Blockly.IBubble', - newExport: 'IBubble', - newPath: 'Blockly.IBubble', - }, - { - oldName: 'Blockly.ICollapsibleToolboxItem', - newExport: 'ICollapsibleToolboxItem', - newPath: 'Blockly.ICollapsibleToolboxItem', - }, - { - oldName: 'Blockly.IComponent', - newExport: 'IComponent', - newPath: 'Blockly.IComponent', - }, - { - oldName: 'Blockly.IConnectionChecker', - newExport: 'IConnectionChecker', - newPath: 'Blockly.IConnectionChecker', - }, - { - oldName: 'Blockly.IContextMenu', - newExport: 'IContextMenu', - newPath: 'Blockly.IContextMenu', - }, - { - oldName: 'Blockly.ICopyable', - newExport: 'ICopyable', - newPath: 'Blockly.ICopyable', - }, - { - oldName: 'Blockly.IDeletable', - newExport: 'IDeletable', - newPath: 'Blockly.IDeletable', - }, - { - oldName: 'Blockly.IDeleteArea', - newExport: 'IDeleteArea', - newPath: 'Blockly.IDeleteArea', - }, - { - oldName: 'Blockly.IDragTarget', - newExport: 'IDragTarget', - newPath: 'Blockly.IDragTarget', - }, - { - oldName: 'Blockly.IDraggable', - newExport: 'IDraggable', - newPath: 'Blockly.IDraggable', - }, - { - oldName: 'Blockly.IFlyout', - newExport: 'IFlyout', - newPath: 'Blockly.IFlyout', - }, - { - oldName: 'Blockly.IKeyboardAccessible', - newExport: 'IKeyboardAccessible', - newPath: 'Blockly.IKeyboardAccessible', - }, - { - oldName: 'Blockly.IMetricsManager', - newExport: 'IMetricsManager', - newPath: 'Blockly.IMetricsManager', - }, - { - oldName: 'Blockly.IMovable', - newExport: 'IMovable', - newPath: 'Blockly.IMovable', - }, - { - oldName: 'Blockly.IPositionable', - newExport: 'IPositionable', - newPath: 'Blockly.IPositionable', - }, - { - oldName: 'Blockly.IRegistrable', - newExport: 'IRegistrable', - newPath: 'Blockly.IRegistrable', - }, - { - oldName: 'Blockly.IRegistrableField', - newExport: 'IRegistrableField', - newPath: 'Blockly.IRegistrableField', - }, - { - oldName: 'Blockly.ISelectable', - newExport: 'ISelectable', - newPath: 'Blockly.ISelectable', - }, - { - oldName: 'Blockly.ISelectableToolboxItem', - newExport: 'ISelectableToolboxItem', - newPath: 'Blockly.ISelectableToolboxItem', - }, - { - oldName: 'Blockly.IStyleable', - newExport: 'IStyleable', - newPath: 'Blockly.IStyleable', - }, - { - oldName: 'Blockly.IToolbox', - newExport: 'IToolbox', - newPath: 'Blockly.IToolbox', - }, - { - oldName: 'Blockly.IToolboxItem', - newExport: 'IToolboxItem', - newPath: 'Blockly.IToolboxItem', - }, - { - oldName: 'Blockly.blockRendering.ConstantProvider', - newExport: 'ConstantProvider', - newPath: 'Blockly.blockRendering.ConstantProvider', - }, - { - oldName: 'Blockly.blockRendering.Debug', - newExport: 'Debug', - newPath: 'Blockly.blockRendering.Debug', - }, - { - oldName: 'Blockly.blockRendering.Drawer', - newExport: 'Drawer', - newPath: 'Blockly.blockRendering.Drawer', - }, - { - oldName: 'Blockly.blockRendering.IPathObject', - newExport: 'IPathObject', - newPath: 'Blockly.blockRendering.IPathObject', - }, - { - oldName: 'Blockly.blockRendering.RenderInfo', - newExport: 'RenderInfo', - newPath: 'Blockly.blockRendering.RenderInfo', - }, - { - oldName: 'Blockly.blockRendering.MarkerSvg', - newExport: 'MarkerSvg', - newPath: 'Blockly.blockRendering.MarkerSvg', - }, - { - oldName: 'Blockly.blockRendering.PathObject', - newExport: 'PathObject', - newPath: 'Blockly.blockRendering.PathObject', - }, - { - oldName: 'Blockly.blockRendering.Renderer', - newExport: 'Renderer', - newPath: 'Blockly.blockRendering.Renderer', - }, - { - oldName: 'Blockly.geras.InlineInput', - newExport: 'InlineInput', - newPath: 'Blockly.geras.InlineInput', - }, - { - oldName: 'Blockly.geras.StatementInput', - newExport: 'StatementInput', - newPath: 'Blockly.geras.StatementInput', - }, - { - oldName: 'Blockly.geras.ConstantProvider', - newExport: 'ConstantProvider', - newPath: 'Blockly.geras.ConstantProvider', - }, - { - oldName: 'Blockly.geras.Drawer', - newExport: 'Drawer', - newPath: 'Blockly.geras.Drawer', - }, - { - oldName: 'Blockly.geras.HighlightConstantProvider', - newExport: 'HighlightConstantProvider', - newPath: 'Blockly.geras.HighlightConstantProvider', - }, - { - oldName: 'Blockly.geras.Highlighter', - newExport: 'Highlighter', - newPath: 'Blockly.geras.Highlighter', - }, - { - oldName: 'Blockly.geras.RenderInfo', - newExport: 'RenderInfo', - newPath: 'Blockly.geras.RenderInfo', - }, - { - oldName: 'Blockly.geras.PathObject', - newExport: 'PathObject', - newPath: 'Blockly.geras.PathObject', - }, - { - oldName: 'Blockly.geras.Renderer', - newExport: 'Renderer', - newPath: 'Blockly.geras.Renderer', - }, - { - oldName: 'Blockly.blockRendering.Measurable', - newExport: 'Measurable', - newPath: 'Blockly.blockRendering.Measurable', - }, - { - oldName: 'Blockly.blockRendering.BottomRow', - newExport: 'BottomRow', - newPath: 'Blockly.blockRendering.BottomRow', - }, - { - oldName: 'Blockly.blockRendering.Connection', - newExport: 'Connection', - newPath: 'Blockly.blockRendering.Connection', - }, - { - oldName: 'Blockly.blockRendering.ExternalValueInput', - newExport: 'ExternalValueInput', - newPath: 'Blockly.blockRendering.ExternalValueInput', - }, - { - oldName: 'Blockly.blockRendering.Field', - newExport: 'Field', - newPath: 'Blockly.blockRendering.Field', - }, - { - oldName: 'Blockly.blockRendering.Hat', - newExport: 'Hat', - newPath: 'Blockly.blockRendering.Hat', - }, - { - oldName: 'Blockly.blockRendering.Icon', - newExport: 'Icon', - newPath: 'Blockly.blockRendering.Icon', - }, - { - oldName: 'Blockly.blockRendering.InRowSpacer', - newExport: 'InRowSpacer', - newPath: 'Blockly.blockRendering.InRowSpacer', - }, - { - oldName: 'Blockly.blockRendering.InlineInput', - newExport: 'InlineInput', - newPath: 'Blockly.blockRendering.InlineInput', - }, - { - oldName: 'Blockly.blockRendering.InputConnection', - newExport: 'InputConnection', - newPath: 'Blockly.blockRendering.InputConnection', - }, - { - oldName: 'Blockly.blockRendering.InputRow', - newExport: 'InputRow', - newPath: 'Blockly.blockRendering.InputRow', - }, - { - oldName: 'Blockly.blockRendering.JaggedEdge', - newExport: 'JaggedEdge', - newPath: 'Blockly.blockRendering.JaggedEdge', - }, - { - oldName: 'Blockly.blockRendering.NextConnection', - newExport: 'NextConnection', - newPath: 'Blockly.blockRendering.NextConnection', - }, - { - oldName: 'Blockly.blockRendering.OutputConnection', - newExport: 'OutputConnection', - newPath: 'Blockly.blockRendering.OutputConnection', - }, - { - oldName: 'Blockly.blockRendering.PreviousConnection', - newExport: 'PreviousConnection', - newPath: 'Blockly.blockRendering.PreviousConnection', - }, - { - oldName: 'Blockly.blockRendering.RoundCorner', - newExport: 'RoundCorner', - newPath: 'Blockly.blockRendering.RoundCorner', - }, - { - oldName: 'Blockly.blockRendering.Row', - newExport: 'Row', - newPath: 'Blockly.blockRendering.Row', - }, - { - oldName: 'Blockly.blockRendering.SpacerRow', - newExport: 'SpacerRow', - newPath: 'Blockly.blockRendering.SpacerRow', - }, - { - oldName: 'Blockly.blockRendering.SquareCorner', - newExport: 'SquareCorner', - newPath: 'Blockly.blockRendering.SquareCorner', - }, - { - oldName: 'Blockly.blockRendering.StatementInput', - newExport: 'StatementInput', - newPath: 'Blockly.blockRendering.StatementInput', - }, - { - oldName: 'Blockly.blockRendering.TopRow', - newExport: 'TopRow', - newPath: 'Blockly.blockRendering.TopRow', - }, - { - oldName: 'Blockly.blockRendering.Types', - newExport: 'Types', - newPath: 'Blockly.blockRendering.Types', - }, - { - oldName: 'Blockly.minimalist.ConstantProvider', - newExport: 'ConstantProvider', - newPath: 'Blockly.minimalist.ConstantProvider', - }, - { - oldName: 'Blockly.minimalist.Drawer', - newExport: 'Drawer', - newPath: 'Blockly.minimalist.Drawer', - }, - { - oldName: 'Blockly.minimalist.RenderInfo', - newExport: 'RenderInfo', - newPath: 'Blockly.minimalist.RenderInfo', - }, - { - oldName: 'Blockly.minimalist.Renderer', - newExport: 'Renderer', - newPath: 'Blockly.minimalist.Renderer', - }, - { - oldName: 'Blockly.thrasos.RenderInfo', - newExport: 'RenderInfo', - newPath: 'Blockly.thrasos.RenderInfo', - }, - { - oldName: 'Blockly.thrasos.Renderer', - newExport: 'Renderer', - newPath: 'Blockly.thrasos.Renderer', - }, - { - oldName: 'Blockly.zelos.BottomRow', - newExport: 'BottomRow', - newPath: 'Blockly.zelos.BottomRow', - }, - { - oldName: 'Blockly.zelos.StatementInput', - newExport: 'StatementInput', - newPath: 'Blockly.zelos.StatementInput', - }, - { - oldName: 'Blockly.zelos.RightConnectionShape', - newExport: 'RightConnectionShape', - newPath: 'Blockly.zelos.RightConnectionShape', - }, - { - oldName: 'Blockly.zelos.TopRow', - newExport: 'TopRow', - newPath: 'Blockly.zelos.TopRow', - }, - { - oldName: 'Blockly.zelos.ConstantProvider', - newExport: 'ConstantProvider', - newPath: 'Blockly.zelos.ConstantProvider', - }, - { - oldName: 'Blockly.zelos.Drawer', - newExport: 'Drawer', - newPath: 'Blockly.zelos.Drawer', - }, - { - oldName: 'Blockly.zelos.RenderInfo', - newExport: 'RenderInfo', - newPath: 'Blockly.zelos.RenderInfo', - }, - { - oldName: 'Blockly.zelos.MarkerSvg', - newExport: 'MarkerSvg', - newPath: 'Blockly.zelos.MarkerSvg', - }, - { - oldName: 'Blockly.zelos.PathObject', - newExport: 'PathObject', - newPath: 'Blockly.zelos.PathObject', - }, - { - oldName: 'Blockly.zelos.Renderer', - newExport: 'Renderer', - newPath: 'Blockly.zelos.Renderer', - }, - { - oldName: 'Blockly.Themes.Classic', - newExport: 'Classic', - newPath: 'Blockly.Themes.Classic', - }, - { - oldName: 'Blockly.Themes.Zelos', - newExport: 'Zelos', - newPath: 'Blockly.Themes.Zelos', - }, - { - oldName: 'Blockly.ToolboxCategory', - newExport: 'ToolboxCategory', - newPath: 'Blockly.ToolboxCategory', - }, - { - oldName: 'Blockly.CollapsibleToolboxCategory', - newExport: 'CollapsibleToolboxCategory', - newPath: 'Blockly.CollapsibleToolboxCategory', - }, - { - oldName: 'Blockly.ToolboxSeparator', - newExport: 'ToolboxSeparator', - newPath: 'Blockly.ToolboxSeparator', - }, - { - oldName: 'Blockly.Toolbox', - newExport: 'Toolbox', - newPath: 'Blockly.Toolbox', - }, - { - oldName: 'Blockly.ToolboxItem', - newExport: 'ToolboxItem', - newPath: 'Blockly.ToolboxItem', - }, - { - oldName: 'Blockly.utils.Coordinate', - newExport: 'Coordinate', - newPath: 'Blockly.utils.Coordinate', - }, - { - oldName: 'Blockly.utils.KeyCodes', - newExport: 'KeyCodes', - newPath: 'Blockly.utils.KeyCodes', - }, - { - oldName: 'Blockly.utils.Metrics', - newExport: 'Metrics', - newPath: 'Blockly.utils.Metrics', - }, - { - oldName: 'Blockly.utils.Rect', - newExport: 'Rect', - newPath: 'Blockly.utils.Rect', - }, - { - oldName: 'Blockly.utils.Size', - newExport: 'Size', - newPath: 'Blockly.utils.Size', - }, - { - oldName: 'Blockly.utils.Svg', - newExport: 'Svg', - newPath: 'Blockly.utils.Svg', - }, - { - oldName: 'Blockly.BlocklyOptions', - newExport: 'BlocklyOptions', - newPath: 'Blockly.BlocklyOptions', - }, - { - oldName: 'Blockly.Bubble', - newExport: 'Bubble', - newPath: 'Blockly.Bubble', - }, - { - oldName: 'Blockly.BubbleDragger', - newExport: 'BubbleDragger', - newPath: 'Blockly.BubbleDragger', - }, - { - oldName: 'Blockly.Comment', - newExport: 'Comment', - newPath: 'Blockly.Comment', - }, - { - oldName: 'Blockly.ComponentManager', - newExport: 'ComponentManager', - newPath: 'Blockly.ComponentManager', - }, - { - oldName: 'Blockly.Connection', - newExport: 'Connection', - newPath: 'Blockly.Connection', - }, - { - oldName: 'Blockly.ConnectionChecker', - newExport: 'ConnectionChecker', - newPath: 'Blockly.ConnectionChecker', - }, - { - oldName: 'Blockly.ConnectionDB', - newExport: 'ConnectionDB', - newPath: 'Blockly.ConnectionDB', - }, - { - oldName: 'Blockly.ContextMenuRegistry', - newExport: 'ContextMenuRegistry', - newPath: 'Blockly.ContextMenuRegistry', - }, - { - oldName: 'Blockly.DeleteArea', - newExport: 'DeleteArea', - newPath: 'Blockly.DeleteArea', - }, - { - oldName: 'Blockly.DragTarget', - newExport: 'DragTarget', - newPath: 'Blockly.DragTarget', - }, - { - oldName: 'Blockly.DropDownDiv', - newExport: 'DropDownDiv', - newPath: 'Blockly.DropDownDiv', - }, - { - oldName: 'Blockly.Field', - newExport: 'Field', - newPath: 'Blockly.Field', - }, - { - oldName: 'Blockly.FieldAngle', - newExport: 'FieldAngle', - newPath: 'Blockly.FieldAngle', - }, - { - oldName: 'Blockly.FieldCheckbox', - newExport: 'FieldCheckbox', - newPath: 'Blockly.FieldCheckbox', - }, - { - oldName: 'Blockly.FieldColour', - newExport: 'FieldColour', - newPath: 'Blockly.FieldColour', - }, - { - oldName: 'Blockly.FieldDropdown', - newExport: 'FieldDropdown', - newPath: 'Blockly.FieldDropdown', - }, - { - oldName: 'Blockly.FieldImage', - newExport: 'FieldImage', - newPath: 'Blockly.FieldImage', - }, - { - oldName: 'Blockly.FieldLabel', - newExport: 'FieldLabel', - newPath: 'Blockly.FieldLabel', - }, - { - oldName: 'Blockly.FieldLabelSerializable', - newExport: 'FieldLabelSerializable', - newPath: 'Blockly.FieldLabelSerializable', - }, - { - oldName: 'Blockly.FieldMultilineInput', - newExport: 'FieldMultilineInput', - newPath: 'Blockly.FieldMultilineInput', - }, - { - oldName: 'Blockly.FieldNumber', - newExport: 'FieldNumber', - newPath: 'Blockly.FieldNumber', - }, - { - oldName: 'Blockly.FieldTextInput', - newExport: 'FieldTextInput', - newPath: 'Blockly.FieldTextInput', - }, - { - oldName: 'Blockly.FieldVariable', - newExport: 'FieldVariable', - newPath: 'Blockly.FieldVariable', - }, - { - oldName: 'Blockly.Flyout', - newExport: 'Flyout', - newPath: 'Blockly.Flyout', - }, - { - oldName: 'Blockly.FlyoutButton', - newExport: 'FlyoutButton', - newPath: 'Blockly.FlyoutButton', - }, - { - oldName: 'Blockly.HorizontalFlyout', - newExport: 'HorizontalFlyout', - newPath: 'Blockly.HorizontalFlyout', - }, - { - oldName: 'Blockly.FlyoutMetricsManager', - newExport: 'FlyoutMetricsManager', - newPath: 'Blockly.FlyoutMetricsManager', - }, - { - oldName: 'Blockly.VerticalFlyout', - newExport: 'VerticalFlyout', - newPath: 'Blockly.VerticalFlyout', - }, - { - oldName: 'Blockly.Generator', - newExport: 'Generator', - newPath: 'Blockly.Generator', - }, - { - oldName: 'Blockly.Gesture', - newExport: 'Gesture', - newPath: 'Blockly.Gesture', - }, - { - oldName: 'Blockly.Grid', - newExport: 'Grid', - newPath: 'Blockly.Grid', - }, - { - oldName: 'Blockly.Icon', - newExport: 'Icon', - newPath: 'Blockly.Icon', - }, - { - oldName: 'Blockly.inject', - newExport: 'inject', - newPath: 'Blockly.inject', - }, - { - oldName: 'Blockly.Input', - newExport: 'Input', - newPath: 'Blockly.Input', - }, - { - oldName: 'Blockly.inputTypes', - newExport: 'inputTypes', - newPath: 'Blockly.inputTypes', - }, - { - oldName: 'Blockly.InsertionMarkerManager', - newExport: 'InsertionMarkerManager', - newPath: 'Blockly.InsertionMarkerManager', - }, - { - oldName: 'Blockly.MarkerManager', - newExport: 'MarkerManager', - newPath: 'Blockly.MarkerManager', - }, - { - oldName: 'Blockly.Menu', - newExport: 'Menu', - newPath: 'Blockly.Menu', - }, - { - oldName: 'Blockly.MenuItem', - newExport: 'MenuItem', - newPath: 'Blockly.MenuItem', - }, - { - oldName: 'Blockly.MetricsManager', - newExport: 'MetricsManager', - newPath: 'Blockly.MetricsManager', - }, - { - oldName: 'Blockly.Msg', - newExport: 'Msg', - newPath: 'Blockly.Msg', - }, - { - oldName: 'Blockly.Mutator', - newExport: 'Mutator', - newPath: 'Blockly.Mutator', - }, - { - oldName: 'Blockly.Names', - newExport: 'Names', - newPath: 'Blockly.Names', - }, - { - oldName: 'Blockly.Options', - newExport: 'Options', - newPath: 'Blockly.Options', - }, - { - oldName: 'Blockly.RenderedConnection', - newExport: 'RenderedConnection', - newPath: 'Blockly.RenderedConnection', - }, - { - oldName: 'Blockly.Scrollbar', - newExport: 'Scrollbar', - newPath: 'Blockly.Scrollbar', - }, - { - oldName: 'Blockly.ScrollbarPair', - newExport: 'ScrollbarPair', - newPath: 'Blockly.ScrollbarPair', - }, - { - oldName: 'Blockly.ShortcutRegistry', - newExport: 'ShortcutRegistry', - newPath: 'Blockly.ShortcutRegistry', - }, - { - oldName: 'Blockly.Theme', - newExport: 'Theme', - newPath: 'Blockly.Theme', - }, - { - oldName: 'Blockly.ThemeManager', - newExport: 'ThemeManager', - newPath: 'Blockly.ThemeManager', - }, - { - oldName: 'Blockly.TouchGesture', - newExport: 'TouchGesture', - newPath: 'Blockly.TouchGesture', - }, - { - oldName: 'Blockly.Trashcan', - newExport: 'Trashcan', - newPath: 'Blockly.Trashcan', - }, - { - oldName: 'Blockly.VariableMap', - newExport: 'VariableMap', - newPath: 'Blockly.VariableMap', - }, - { - oldName: 'Blockly.VariableModel', - newExport: 'VariableModel', - newPath: 'Blockly.VariableModel', - }, - { - oldName: 'Blockly.Warning', - newExport: 'Warning', - newPath: 'Blockly.Warning', - }, - { - oldName: 'Blockly.Workspace', - newExport: 'Workspace', - newPath: 'Blockly.Workspace', - }, - { - oldName: 'Blockly.WorkspaceAudio', - newExport: 'WorkspaceAudio', - newPath: 'Blockly.WorkspaceAudio', - }, - { - oldName: 'Blockly.WorkspaceComment', - newExport: 'WorkspaceComment', - newPath: 'Blockly.WorkspaceComment', - }, - { - oldName: 'Blockly.WorkspaceCommentSvg', - newExport: 'WorkspaceCommentSvg', - newPath: 'Blockly.WorkspaceCommentSvg', - }, - { - oldName: 'Blockly.WorkspaceDragSurfaceSvg', - newExport: 'WorkspaceDragSurfaceSvg', - newPath: 'Blockly.WorkspaceDragSurfaceSvg', - }, - { - oldName: 'Blockly.WorkspaceDragger', - newExport: 'WorkspaceDragger', - newPath: 'Blockly.WorkspaceDragger', - }, - { - oldName: 'Blockly.WorkspaceSvg', - newExport: 'WorkspaceSvg', - newPath: 'Blockly.WorkspaceSvg', - }, - { - oldName: 'Blockly.ZoomControls', - newExport: 'ZoomControls', - newPath: 'Blockly.ZoomControls', - }, - ], - - '8.0.0': [ - { - oldName: 'Blockly', - exports: { - DRAG_RADIUS: { - newModule: 'Blockly.config', - newExport: 'config.dragRadius', - }, - FLYOUT_DRAG_RADIUS: { - newModule: 'Blockly.config', - newExport: 'config.flyoutDragRadius', - }, - SNAP_RADIUS: { - newModule: 'Blockly.config', - newExport: 'config.snapRadius', - }, - CONNECTING_SNAP_RADIUS: { - newModule: 'Blockly.config', - newExport: 'config.connectingSnapRadius', - }, - CURRENT_CONNECTION_PREFERENCE: { - newModule: 'Blockly.config', - newExport: 'config.currentConnectionPreference', - }, - BUMP_DELAY: { - newModule: 'Blockly.config', - newExport: 'config.bumpDelay', - }, - SPRITE: { - newModule: 'Blockly.constants', - }, - }, - }, - { - oldName: 'Blockly.blocks.all', - newName: 'Blockly.libraryBlocks', - }, - { - oldName: 'Blockly.blocks.colour', - newName: 'Blockly.libraryBlocks.colour', - }, - { - oldName: 'Blockly.blocks.lists', - newName: 'Blockly.libraryBlocks.lists', - }, - { - oldName: 'Blockly.blocks.logic', - newName: 'Blockly.libraryBlocks.logic', - }, - { - oldName: 'Blockly.blocks.loops', - newName: 'Blockly.libraryBlocks.loops', - }, - { - oldName: 'Blockly.blocks.math', - newName: 'Blockly.libraryBlocks.math', - }, - { - oldName: 'Blockly.blocks.procedures', - newName: 'Blockly.libraryBlocks.procedures', - }, - { - oldName: 'Blockly.blocks.text', - newName: 'Blockly.libraryBlocks.text', - }, - { - oldName: 'Blockly.blocks.variables', - newName: 'Blockly.libraryBlocks.variables', - }, - { - oldName: 'Blockly.blocks.variablesDynamic', - newName: 'Blockly.libraryBlocks.variablesDynamic', - }, - { - oldName: 'Blockly.DropDownDiv', - newName: 'Blockly.dropDownDiv', - newPath: 'Blockly.DropDownDiv', - }, - ], - - 'develop': [ ], -} +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Collected information about modules and module + * exports that have been renamed between versions. + * + * This file is in JSON5 format; see https://json5.org/. + */ + +{ + // Example entry: + '0.0.0': [ // Version that includes the rename. + // Each entry in the array is a module. + // All of the properties are optional. + { + // The name that the module had before this version. + oldName: 'old.module.name', + + // The name that the module now has in this version. + newName: 'new.module.name', + + // If a module had a default export and now has a named export, + // the name of the named export can be given here. + newExport: 'newNameForDefaultExport', + + // The old location of this module on the Blockly tree (the + // mega-object that people access if they are importing all of + // Blockly). Usually this is the same as the oldName and can be + // omitted. + oldPath: 'old.path.on.Blockly.tree', + + // The new location of this module on the Blockly tree. To be + // backwards compatible with people accessing the Blockly tree, + // this should be the same as the oldPath. If omitted, newPath + // is assumed to be the same newName. + newPath: 'new.path.on.Blockly.tree', + + // Each entry in this map is the old name of a named export. + exports: { + // The name that the export had before this version. + // All of the properties on this object are optional. + 'oldExportName': { + // The new module that the export is in in this version. If + // this is not provided, the newModule is assumed to be the + // parent module's newPath. + newModule: 'new.module.name', + + // The name that the export now has in this version. + newExport: 'newExportName', + + // The old location of this module on the Blockly tree. + // If omitted, oldPath defaults to + // .. + oldPath: 'old.path.on.Blockly.tree', + + // The new location of this module on the Blockly tree. To + // be backwards compatible with people accessing the + // Blockkly tree, this should be the same as the oldPath. + // Defaults to `${newModule}.${newExport}`. + newPath: 'new.path.on.Blockly.tree', + + // If a named export has been changed to a private variable + // with a get method, this is the name of the get method. + getMethod: 'getMethodName', + + // If a named export has been changed to a private variable + // with a set method, this is the name of the set method. + setMethod: 'setMethodName', + }, + + // This file can also document the renaming of a property or + // sub-property of an (object-valued) named export. + 'exportExport.oldProperty': { + newExport: 'newExport.newProperty', + // Additional options as above. + }, + + // Or promotion of property to named export, etc. + 'exportExport.oldProperty': { + newExport: 'newTopLevelExport', + }, + }, + }, + ], + + '5.20210325.0': [ + { + oldName: 'Blockly', + exports: { + // bind/unbind events functions. See PR #4642 + EventData: {newModule: 'Blockly.browserEvents', newExport: 'Data'}, + bindEvent_: {newModule: 'Blockly.browserEvents', newExport: 'bind'}, + unbindEvent_: {newModule: 'Blockly.browserEvents', newExport: 'unbind'}, + bindEventWithChecks_: { + newModule: 'Blockly.browserEvents', + newExport: 'conditionalBind', + }, + }, + } + ], + + '7.20211209.0-beta.0': [ + { + oldName: 'Blockly', + exports: { + // Clipboard. See PR #5237. + clipboardXml_: {newModule: 'Blockly.clipboard', newExport: 'xml'}, + clipboardSource_: {newModule: 'Blockly.clipboard', newExport: 'source'}, + clipboardTypeCounts_: { + newModule: 'Blockly.clipboard', + newExport: 'typeCounts', + }, + copy: {newModule: 'Blockly.clipboard'}, + paste: {newModule: 'Blockly.clipboard'}, + duplicate: {newModule: 'Blockly.clipboard'}, + + // mainWorkspace. See PR #5244. + mainWorkspace: { + newModule: 'Blockly.common', + getMethod: 'getMainWorkspace', + setMethod: 'setMainWorkspace', + }, + getMainWorkspace: {newModule: 'Blockly.common'}, + + // parentContainer, draggingConnections. See PR #5262. + parentContainer: { + newModule: 'Blockly.common', + getMethod: 'getParentContainer', + setMethod: 'setParentContainer', + }, + setParentContainer: {newModule: 'Blockly.common'}, + draggingConnections: {newModule: 'Blockly.common'}, + + // Dialogs. See PR #5457. + alert: { + newModule: 'Blockly.dialog', + newExport: 'alert', + setMethod: 'setAlert', + }, + confirm: { + newModule: 'Blockly.dialog', + newExport: 'confirm', + setMethod: 'setConfirm', + }, + prompt: { + newModule: 'Blockly.dialog', + newExport: 'prompt', + setMethod: 'setPrompt', + }, + // hueToHex. See PR #5462. + hueToHex: {newModule: 'Blockly.utils.colour'}, + // Blockly.hideChaff() became + // Blockly.common.getMainWorkspace().hideChaff(). See PR #5460. + + // selected. See PR #5489. + selected: { + newModule: 'Blockly.common', + getMethod: 'getSelected', + setMethod: 'setSelected', + }, + } + }, + { + oldName: 'Blockly.Blocks', + newName: 'Blockly.blocks', + newExport: 'Blocks', // Previous default export now named. + newPath: 'Blockly.Blocks', // But still on tree with original name. + }, + { + oldName: 'Blockly.ContextMenu', + exports: { + currentBlock: { + getMethod: 'getCurrentBlock', + setMethod: 'setCurrentBlock' + }, + }, + }, + { + oldName: 'Blockly.Events', + exports: { + recordUndo: {getMethod: 'getRecordUndo', setMethod: 'setRecordUndo'}, + }, + }, + { + oldName: 'Blockly.Tooltip', + exports: { + DIV: {getMethod: 'getDiv', setMethod: 'setDiv'}, + visible: {getMethod: 'isVisible'}, + }, + }, + { + oldName: 'Blockly.WidgetDiv', + exports: { + DIV: {getMethod: 'getDiv'}, + }, + }, + { + oldName: 'Blockly.connectionTypes', + newName: 'Blockly.ConnectionType', + newExport: 'ConnectionType', // Previous default export now named. + newPath: 'Blockly.ConnectionType', // Type reexported directly. + }, + { + oldName: 'Blockly.utils', + exports: { + genUid: {newModule: 'Blockly.utils.idGenerator'}, + getScrollDelta: {newModule: 'Blockly.utils.browserEvents'}, + isTargetInput: {newModule: 'Blockly.utils.browserEvents'}, + isRightButton: {newModule: 'Blockly.utils.browserEvents'}, + mouseToSvg: {newModule: 'Blockly.utils.browserEvents'}, + }, + }, + { + oldName: 'Blockly.utils.global', + newExport: 'globalThis', + newPath: 'Blockly.utils.global', + }, + { + oldName: 'Blockly.utils.IdGenerator', + newName: 'Blockly.utils.idGenerator', + }, + { + oldName: 'Blockly.utils.xml', + exports: { + // document was a function before, too - not a static property + // or get accessor. + document: {newExport: 'getDocument'}, + }, + }, + ], + + '7.20211209.0': [ + { + oldName: 'Blockly', + exports: { + // Align. + ALIGN_LEFT: { + newModule: 'Blockly.Input', + newExport: 'Align.LEFT', + newPath: 'Blockly.ALIGN_LEFT', + }, + ALIGN_CENTRE: { + newModule: 'Blockly.Input', + newExport: 'Align.CENTRE', + newPath: 'Blockly.ALIGN_CENTRE', + }, + ALIGN_RIGHT: { + newModule: 'Blockly.Input', + newExport: 'Align.RIGHT', + newPath: 'Blockly.ALIGN_RIGHT', + }, + + svgSize: {newModule: 'Blockly.utils.svgMath'}, + resizeSvgContents: {newModule: 'Blockly.WorkspaecSvg'}, + defineBlocksWithJsonArray: {newModule: 'Blockly.common'}, + isNumber: {newModule: 'Blockly.utils.string'}, + } + }, + + { + oldName: 'Blockly.Blocks.colour', + newName: 'Blockly.blocks.colour' + }, + // Blockly.Blocks.lists not previously provided. + { + oldName: 'Blockly.Blocks.logic', + newName: 'Blockly.blocks.logic' + }, + { + oldName: 'Blockly.Blocks.loops', + newName: 'Blockly.blocks.loops' + }, + { + oldName: 'Blockly.Blocks.math', + newName: 'Blockly.blocks.math' + }, + { + oldName: 'Blockly.Blocks.procedures', + newName: 'Blockly.blocks.procedures' + }, + { + oldName: 'Blockly.Blocks.texts', + newName: 'Blockly.blocks.texts' + }, + { + oldName: 'Blockly.Blocks.variables', + newName: 'Blockly.blocks.variables' + }, + // Blockly.Blocks.variablesDynamic not previously provided. + + { + oldName: 'Blockly.utils', + exports: { + screenToWsCoordinates: {newModule: 'Blockly.utils.svgMath'}, + getDocumentScroll: {newModule: 'Blockly.utils.svgMath'}, + getViewportBBox: {newModule: 'Blockly.utils.svgMath'}, + is3dSupported: {newModule: 'Blockly.utils.svgMath'}, + getRelativeXY: {newModule: 'Blockly.utils.svgMath'}, + getInjectionDivXY_: { + newModule: 'Blockly.utils.svgMath', + newExport: 'getInjectionDivXY' + }, + parseBlockColour: {newModule: 'Blockly.utils.parsing'}, + checkMessageReferences: {newModule: 'Blockly.utils.parsing'}, + replaceMessageReferences: {newModule: 'Blockly.utils.parsing'}, + tokenizeInterpolation: {newModule: 'Blockly.utils.parsing'}, + arrayRemove: { + newModule: 'Blockly.utils.array', + newExport: 'removeElem' + }, + getBlockTypeCounts: + {newModule: 'Blockly.common', newExport: 'getBlockTypeCounts'}, + runAfterPageLoad: + {newModule: 'Blockly.Extensions', newExport: 'runAfterPageLoad'}, + }, + }, + + // Default exports to named exports. + { + oldName: 'Blockly.Events.Abstract', + newExport: 'Abstract', + newPath: 'Blockly.Events.Abstract', + }, + { + oldName: 'Blockly.Events.BlockBase', + newExport: 'BlockBase', + newPath: 'Blockly.Events.BlockBase', + }, + { + oldName: 'Blockly.Events.BlockChange', + newExport: 'BlockChange', + newPath: 'Blockly.Events.BlockChange', + }, + { + oldName: 'Blockly.Events.BlockCreate', + newExport: 'BlockCreate', + newPath: 'Blockly.Events.BlockCreate', + }, + { + oldName: 'Blockly.Events.BlockDelete', + newExport: 'BlockDelete', + newPath: 'Blockly.Events.BlockDelete', + }, + { + oldName: 'Blockly.Events.BlockDrag', + newExport: 'BlockDrag', + newPath: 'Blockly.Events.BlockDrag', + }, + { + oldName: 'Blockly.Events.BlockMove', + newExport: 'BlockMove', + newPath: 'Blockly.Events.BlockMove', + }, + { + oldName: 'Blockly.Events.BubbleOpen', + newExport: 'BubbleOpen', + newPath: 'Blockly.Events.BubbleOpen', + }, + { + oldName: 'Blockly.Events.Click', + newExport: 'Click', + newPath: 'Blockly.Events.Click', + }, + { + oldName: 'Blockly.Events.CommentBase', + newExport: 'CommentBase', + newPath: 'Blockly.Events.CommentBase', + }, + { + oldName: 'Blockly.Events.CommentChange', + newExport: 'CommentChange', + newPath: 'Blockly.Events.CommentChange', + }, + { + oldName: 'Blockly.Events.CommentCreate', + newExport: 'CommentCreate', + newPath: 'Blockly.Events.CommentCreate', + }, + { + oldName: 'Blockly.Events.CommentDelete', + newExport: 'CommentDelete', + newPath: 'Blockly.Events.CommentDelete', + }, + { + oldName: 'Blockly.Events.CommentMove', + newExport: 'CommentMove', + newPath: 'Blockly.Events.CommentMove', + }, + { + oldName: 'Blockly.Events.MarkerMove', + newExport: 'MarkerMove', + newPath: 'Blockly.Events.MarkerMove', + }, + { + oldName: 'Blockly.Events.Selected', + newExport: 'Selected', + newPath: 'Blockly.Events.Selected', + }, + { + oldName: 'Blockly.Events.ThemeChange', + newExport: 'ThemeChange', + newPath: 'Blockly.Events.ThemeChange', + }, + { + oldName: 'Blockly.Events.ToolboxItemSelect', + newExport: 'ToolboxItemSelect', + newPath: 'Blockly.Events.ToolboxItemSelect', + }, + { + oldName: 'Blockly.Events.TrashcanOpen', + newExport: 'TrashcanOpen', + newPath: 'Blockly.Events.TrashcanOpen', + }, + { + oldName: 'Blockly.Events.Ui', + newExport: 'Ui', + newPath: 'Blockly.Events.Ui', + }, + { + oldName: 'Blockly.Events.UiBase', + newExport: 'UiBase', + newPath: 'Blockly.Events.UiBase', + }, + { + oldName: 'Blockly.Events.VarBase', + newExport: 'VarBase', + newPath: 'Blockly.Events.VarBase', + }, + { + oldName: 'Blockly.Events.VarCreate', + newExport: 'VarCreate', + newPath: 'Blockly.Events.VarCreate', + }, + { + oldName: 'Blockly.Events.VarDelete', + newExport: 'VarDelete', + newPath: 'Blockly.Events.VarDelete', + }, + { + oldName: 'Blockly.Events.VarRename', + newExport: 'VarRename', + newPath: 'Blockly.Events.VarRename', + }, + { + oldName: 'Blockly.Events.ViewportChange', + newExport: 'ViewportChange', + newPath: 'Blockly.Events.ViewportChange', + }, + { + oldName: 'Blockly.Events.FinishedLoading', + newExport: 'FinishedLoading', + newPath: 'Blockly.Events.FinishedLoading', + }, + { + oldName: 'Blockly.IASTNodeLocation', + newExport: 'IASTNodeLocation', + newPath: 'Blockly.IASTNodeLocation', + }, + { + oldName: 'Blockly.IASTNodeLocationSvg', + newExport: 'IASTNodeLocationSvg', + newPath: 'Blockly.IASTNodeLocationSvg', + }, + { + oldName: 'Blockly.IASTNodeLocationWithBlock', + newExport: 'IASTNodeLocationWithBlock', + newPath: 'Blockly.IASTNodeLocationWithBlock', + }, + { + oldName: 'Blockly.IAutoHideable', + newExport: 'IAutoHideable', + newPath: 'Blockly.IAutoHideable', + }, + { + oldName: 'Blockly.IBlockDragger', + newExport: 'IBlockDragger', + newPath: 'Blockly.IBlockDragger', + }, + { + oldName: 'Blockly.IBoundedElement', + newExport: 'IBoundedElement', + newPath: 'Blockly.IBoundedElement', + }, + { + oldName: 'Blockly.IBubble', + newExport: 'IBubble', + newPath: 'Blockly.IBubble', + }, + { + oldName: 'Blockly.ICollapsibleToolboxItem', + newExport: 'ICollapsibleToolboxItem', + newPath: 'Blockly.ICollapsibleToolboxItem', + }, + { + oldName: 'Blockly.IComponent', + newExport: 'IComponent', + newPath: 'Blockly.IComponent', + }, + { + oldName: 'Blockly.IConnectionChecker', + newExport: 'IConnectionChecker', + newPath: 'Blockly.IConnectionChecker', + }, + { + oldName: 'Blockly.IContextMenu', + newExport: 'IContextMenu', + newPath: 'Blockly.IContextMenu', + }, + { + oldName: 'Blockly.ICopyable', + newExport: 'ICopyable', + newPath: 'Blockly.ICopyable', + }, + { + oldName: 'Blockly.IDeletable', + newExport: 'IDeletable', + newPath: 'Blockly.IDeletable', + }, + { + oldName: 'Blockly.IDeleteArea', + newExport: 'IDeleteArea', + newPath: 'Blockly.IDeleteArea', + }, + { + oldName: 'Blockly.IDragTarget', + newExport: 'IDragTarget', + newPath: 'Blockly.IDragTarget', + }, + { + oldName: 'Blockly.IDraggable', + newExport: 'IDraggable', + newPath: 'Blockly.IDraggable', + }, + { + oldName: 'Blockly.IFlyout', + newExport: 'IFlyout', + newPath: 'Blockly.IFlyout', + }, + { + oldName: 'Blockly.IKeyboardAccessible', + newExport: 'IKeyboardAccessible', + newPath: 'Blockly.IKeyboardAccessible', + }, + { + oldName: 'Blockly.IMetricsManager', + newExport: 'IMetricsManager', + newPath: 'Blockly.IMetricsManager', + }, + { + oldName: 'Blockly.IMovable', + newExport: 'IMovable', + newPath: 'Blockly.IMovable', + }, + { + oldName: 'Blockly.IPositionable', + newExport: 'IPositionable', + newPath: 'Blockly.IPositionable', + }, + { + oldName: 'Blockly.IRegistrable', + newExport: 'IRegistrable', + newPath: 'Blockly.IRegistrable', + }, + { + oldName: 'Blockly.IRegistrableField', + newExport: 'IRegistrableField', + newPath: 'Blockly.IRegistrableField', + }, + { + oldName: 'Blockly.ISelectable', + newExport: 'ISelectable', + newPath: 'Blockly.ISelectable', + }, + { + oldName: 'Blockly.ISelectableToolboxItem', + newExport: 'ISelectableToolboxItem', + newPath: 'Blockly.ISelectableToolboxItem', + }, + { + oldName: 'Blockly.IStyleable', + newExport: 'IStyleable', + newPath: 'Blockly.IStyleable', + }, + { + oldName: 'Blockly.IToolbox', + newExport: 'IToolbox', + newPath: 'Blockly.IToolbox', + }, + { + oldName: 'Blockly.IToolboxItem', + newExport: 'IToolboxItem', + newPath: 'Blockly.IToolboxItem', + }, + { + oldName: 'Blockly.blockRendering.ConstantProvider', + newExport: 'ConstantProvider', + newPath: 'Blockly.blockRendering.ConstantProvider', + }, + { + oldName: 'Blockly.blockRendering.Debug', + newExport: 'Debug', + newPath: 'Blockly.blockRendering.Debug', + }, + { + oldName: 'Blockly.blockRendering.Drawer', + newExport: 'Drawer', + newPath: 'Blockly.blockRendering.Drawer', + }, + { + oldName: 'Blockly.blockRendering.IPathObject', + newExport: 'IPathObject', + newPath: 'Blockly.blockRendering.IPathObject', + }, + { + oldName: 'Blockly.blockRendering.RenderInfo', + newExport: 'RenderInfo', + newPath: 'Blockly.blockRendering.RenderInfo', + }, + { + oldName: 'Blockly.blockRendering.MarkerSvg', + newExport: 'MarkerSvg', + newPath: 'Blockly.blockRendering.MarkerSvg', + }, + { + oldName: 'Blockly.blockRendering.PathObject', + newExport: 'PathObject', + newPath: 'Blockly.blockRendering.PathObject', + }, + { + oldName: 'Blockly.blockRendering.Renderer', + newExport: 'Renderer', + newPath: 'Blockly.blockRendering.Renderer', + }, + { + oldName: 'Blockly.geras.InlineInput', + newExport: 'InlineInput', + newPath: 'Blockly.geras.InlineInput', + }, + { + oldName: 'Blockly.geras.StatementInput', + newExport: 'StatementInput', + newPath: 'Blockly.geras.StatementInput', + }, + { + oldName: 'Blockly.geras.ConstantProvider', + newExport: 'ConstantProvider', + newPath: 'Blockly.geras.ConstantProvider', + }, + { + oldName: 'Blockly.geras.Drawer', + newExport: 'Drawer', + newPath: 'Blockly.geras.Drawer', + }, + { + oldName: 'Blockly.geras.HighlightConstantProvider', + newExport: 'HighlightConstantProvider', + newPath: 'Blockly.geras.HighlightConstantProvider', + }, + { + oldName: 'Blockly.geras.Highlighter', + newExport: 'Highlighter', + newPath: 'Blockly.geras.Highlighter', + }, + { + oldName: 'Blockly.geras.RenderInfo', + newExport: 'RenderInfo', + newPath: 'Blockly.geras.RenderInfo', + }, + { + oldName: 'Blockly.geras.PathObject', + newExport: 'PathObject', + newPath: 'Blockly.geras.PathObject', + }, + { + oldName: 'Blockly.geras.Renderer', + newExport: 'Renderer', + newPath: 'Blockly.geras.Renderer', + }, + { + oldName: 'Blockly.blockRendering.Measurable', + newExport: 'Measurable', + newPath: 'Blockly.blockRendering.Measurable', + }, + { + oldName: 'Blockly.blockRendering.BottomRow', + newExport: 'BottomRow', + newPath: 'Blockly.blockRendering.BottomRow', + }, + { + oldName: 'Blockly.blockRendering.Connection', + newExport: 'Connection', + newPath: 'Blockly.blockRendering.Connection', + }, + { + oldName: 'Blockly.blockRendering.ExternalValueInput', + newExport: 'ExternalValueInput', + newPath: 'Blockly.blockRendering.ExternalValueInput', + }, + { + oldName: 'Blockly.blockRendering.Field', + newExport: 'Field', + newPath: 'Blockly.blockRendering.Field', + }, + { + oldName: 'Blockly.blockRendering.Hat', + newExport: 'Hat', + newPath: 'Blockly.blockRendering.Hat', + }, + { + oldName: 'Blockly.blockRendering.Icon', + newExport: 'Icon', + newPath: 'Blockly.blockRendering.Icon', + }, + { + oldName: 'Blockly.blockRendering.InRowSpacer', + newExport: 'InRowSpacer', + newPath: 'Blockly.blockRendering.InRowSpacer', + }, + { + oldName: 'Blockly.blockRendering.InlineInput', + newExport: 'InlineInput', + newPath: 'Blockly.blockRendering.InlineInput', + }, + { + oldName: 'Blockly.blockRendering.InputConnection', + newExport: 'InputConnection', + newPath: 'Blockly.blockRendering.InputConnection', + }, + { + oldName: 'Blockly.blockRendering.InputRow', + newExport: 'InputRow', + newPath: 'Blockly.blockRendering.InputRow', + }, + { + oldName: 'Blockly.blockRendering.JaggedEdge', + newExport: 'JaggedEdge', + newPath: 'Blockly.blockRendering.JaggedEdge', + }, + { + oldName: 'Blockly.blockRendering.NextConnection', + newExport: 'NextConnection', + newPath: 'Blockly.blockRendering.NextConnection', + }, + { + oldName: 'Blockly.blockRendering.OutputConnection', + newExport: 'OutputConnection', + newPath: 'Blockly.blockRendering.OutputConnection', + }, + { + oldName: 'Blockly.blockRendering.PreviousConnection', + newExport: 'PreviousConnection', + newPath: 'Blockly.blockRendering.PreviousConnection', + }, + { + oldName: 'Blockly.blockRendering.RoundCorner', + newExport: 'RoundCorner', + newPath: 'Blockly.blockRendering.RoundCorner', + }, + { + oldName: 'Blockly.blockRendering.Row', + newExport: 'Row', + newPath: 'Blockly.blockRendering.Row', + }, + { + oldName: 'Blockly.blockRendering.SpacerRow', + newExport: 'SpacerRow', + newPath: 'Blockly.blockRendering.SpacerRow', + }, + { + oldName: 'Blockly.blockRendering.SquareCorner', + newExport: 'SquareCorner', + newPath: 'Blockly.blockRendering.SquareCorner', + }, + { + oldName: 'Blockly.blockRendering.StatementInput', + newExport: 'StatementInput', + newPath: 'Blockly.blockRendering.StatementInput', + }, + { + oldName: 'Blockly.blockRendering.TopRow', + newExport: 'TopRow', + newPath: 'Blockly.blockRendering.TopRow', + }, + { + oldName: 'Blockly.blockRendering.Types', + newExport: 'Types', + newPath: 'Blockly.blockRendering.Types', + }, + { + oldName: 'Blockly.minimalist.ConstantProvider', + newExport: 'ConstantProvider', + newPath: 'Blockly.minimalist.ConstantProvider', + }, + { + oldName: 'Blockly.minimalist.Drawer', + newExport: 'Drawer', + newPath: 'Blockly.minimalist.Drawer', + }, + { + oldName: 'Blockly.minimalist.RenderInfo', + newExport: 'RenderInfo', + newPath: 'Blockly.minimalist.RenderInfo', + }, + { + oldName: 'Blockly.minimalist.Renderer', + newExport: 'Renderer', + newPath: 'Blockly.minimalist.Renderer', + }, + { + oldName: 'Blockly.thrasos.RenderInfo', + newExport: 'RenderInfo', + newPath: 'Blockly.thrasos.RenderInfo', + }, + { + oldName: 'Blockly.thrasos.Renderer', + newExport: 'Renderer', + newPath: 'Blockly.thrasos.Renderer', + }, + { + oldName: 'Blockly.zelos.BottomRow', + newExport: 'BottomRow', + newPath: 'Blockly.zelos.BottomRow', + }, + { + oldName: 'Blockly.zelos.StatementInput', + newExport: 'StatementInput', + newPath: 'Blockly.zelos.StatementInput', + }, + { + oldName: 'Blockly.zelos.RightConnectionShape', + newExport: 'RightConnectionShape', + newPath: 'Blockly.zelos.RightConnectionShape', + }, + { + oldName: 'Blockly.zelos.TopRow', + newExport: 'TopRow', + newPath: 'Blockly.zelos.TopRow', + }, + { + oldName: 'Blockly.zelos.ConstantProvider', + newExport: 'ConstantProvider', + newPath: 'Blockly.zelos.ConstantProvider', + }, + { + oldName: 'Blockly.zelos.Drawer', + newExport: 'Drawer', + newPath: 'Blockly.zelos.Drawer', + }, + { + oldName: 'Blockly.zelos.RenderInfo', + newExport: 'RenderInfo', + newPath: 'Blockly.zelos.RenderInfo', + }, + { + oldName: 'Blockly.zelos.MarkerSvg', + newExport: 'MarkerSvg', + newPath: 'Blockly.zelos.MarkerSvg', + }, + { + oldName: 'Blockly.zelos.PathObject', + newExport: 'PathObject', + newPath: 'Blockly.zelos.PathObject', + }, + { + oldName: 'Blockly.zelos.Renderer', + newExport: 'Renderer', + newPath: 'Blockly.zelos.Renderer', + }, + { + oldName: 'Blockly.Themes.Classic', + newExport: 'Classic', + newPath: 'Blockly.Themes.Classic', + }, + { + oldName: 'Blockly.Themes.Zelos', + newExport: 'Zelos', + newPath: 'Blockly.Themes.Zelos', + }, + { + oldName: 'Blockly.ToolboxCategory', + newExport: 'ToolboxCategory', + newPath: 'Blockly.ToolboxCategory', + }, + { + oldName: 'Blockly.CollapsibleToolboxCategory', + newExport: 'CollapsibleToolboxCategory', + newPath: 'Blockly.CollapsibleToolboxCategory', + }, + { + oldName: 'Blockly.ToolboxSeparator', + newExport: 'ToolboxSeparator', + newPath: 'Blockly.ToolboxSeparator', + }, + { + oldName: 'Blockly.Toolbox', + newExport: 'Toolbox', + newPath: 'Blockly.Toolbox', + }, + { + oldName: 'Blockly.ToolboxItem', + newExport: 'ToolboxItem', + newPath: 'Blockly.ToolboxItem', + }, + { + oldName: 'Blockly.utils.Coordinate', + newExport: 'Coordinate', + newPath: 'Blockly.utils.Coordinate', + }, + { + oldName: 'Blockly.utils.KeyCodes', + newExport: 'KeyCodes', + newPath: 'Blockly.utils.KeyCodes', + }, + { + oldName: 'Blockly.utils.Metrics', + newExport: 'Metrics', + newPath: 'Blockly.utils.Metrics', + }, + { + oldName: 'Blockly.utils.Rect', + newExport: 'Rect', + newPath: 'Blockly.utils.Rect', + }, + { + oldName: 'Blockly.utils.Size', + newExport: 'Size', + newPath: 'Blockly.utils.Size', + }, + { + oldName: 'Blockly.utils.Svg', + newExport: 'Svg', + newPath: 'Blockly.utils.Svg', + }, + { + oldName: 'Blockly.BlocklyOptions', + newExport: 'BlocklyOptions', + newPath: 'Blockly.BlocklyOptions', + }, + { + oldName: 'Blockly.Bubble', + newExport: 'Bubble', + newPath: 'Blockly.Bubble', + }, + { + oldName: 'Blockly.BubbleDragger', + newExport: 'BubbleDragger', + newPath: 'Blockly.BubbleDragger', + }, + { + oldName: 'Blockly.Comment', + newExport: 'Comment', + newPath: 'Blockly.Comment', + }, + { + oldName: 'Blockly.ComponentManager', + newExport: 'ComponentManager', + newPath: 'Blockly.ComponentManager', + }, + { + oldName: 'Blockly.Connection', + newExport: 'Connection', + newPath: 'Blockly.Connection', + }, + { + oldName: 'Blockly.ConnectionChecker', + newExport: 'ConnectionChecker', + newPath: 'Blockly.ConnectionChecker', + }, + { + oldName: 'Blockly.ConnectionDB', + newExport: 'ConnectionDB', + newPath: 'Blockly.ConnectionDB', + }, + { + oldName: 'Blockly.ContextMenuRegistry', + newExport: 'ContextMenuRegistry', + newPath: 'Blockly.ContextMenuRegistry', + }, + { + oldName: 'Blockly.DeleteArea', + newExport: 'DeleteArea', + newPath: 'Blockly.DeleteArea', + }, + { + oldName: 'Blockly.DragTarget', + newExport: 'DragTarget', + newPath: 'Blockly.DragTarget', + }, + { + oldName: 'Blockly.DropDownDiv', + newExport: 'DropDownDiv', + newPath: 'Blockly.DropDownDiv', + }, + { + oldName: 'Blockly.Field', + newExport: 'Field', + newPath: 'Blockly.Field', + }, + { + oldName: 'Blockly.FieldAngle', + newExport: 'FieldAngle', + newPath: 'Blockly.FieldAngle', + }, + { + oldName: 'Blockly.FieldCheckbox', + newExport: 'FieldCheckbox', + newPath: 'Blockly.FieldCheckbox', + }, + { + oldName: 'Blockly.FieldColour', + newExport: 'FieldColour', + newPath: 'Blockly.FieldColour', + }, + { + oldName: 'Blockly.FieldDropdown', + newExport: 'FieldDropdown', + newPath: 'Blockly.FieldDropdown', + }, + { + oldName: 'Blockly.FieldImage', + newExport: 'FieldImage', + newPath: 'Blockly.FieldImage', + }, + { + oldName: 'Blockly.FieldLabel', + newExport: 'FieldLabel', + newPath: 'Blockly.FieldLabel', + }, + { + oldName: 'Blockly.FieldLabelSerializable', + newExport: 'FieldLabelSerializable', + newPath: 'Blockly.FieldLabelSerializable', + }, + { + oldName: 'Blockly.FieldMultilineInput', + newExport: 'FieldMultilineInput', + newPath: 'Blockly.FieldMultilineInput', + }, + { + oldName: 'Blockly.FieldNumber', + newExport: 'FieldNumber', + newPath: 'Blockly.FieldNumber', + }, + { + oldName: 'Blockly.FieldTextInput', + newExport: 'FieldTextInput', + newPath: 'Blockly.FieldTextInput', + }, + { + oldName: 'Blockly.FieldVariable', + newExport: 'FieldVariable', + newPath: 'Blockly.FieldVariable', + }, + { + oldName: 'Blockly.Flyout', + newExport: 'Flyout', + newPath: 'Blockly.Flyout', + }, + { + oldName: 'Blockly.FlyoutButton', + newExport: 'FlyoutButton', + newPath: 'Blockly.FlyoutButton', + }, + { + oldName: 'Blockly.HorizontalFlyout', + newExport: 'HorizontalFlyout', + newPath: 'Blockly.HorizontalFlyout', + }, + { + oldName: 'Blockly.FlyoutMetricsManager', + newExport: 'FlyoutMetricsManager', + newPath: 'Blockly.FlyoutMetricsManager', + }, + { + oldName: 'Blockly.VerticalFlyout', + newExport: 'VerticalFlyout', + newPath: 'Blockly.VerticalFlyout', + }, + { + oldName: 'Blockly.Generator', + newExport: 'Generator', + newPath: 'Blockly.Generator', + }, + { + oldName: 'Blockly.Gesture', + newExport: 'Gesture', + newPath: 'Blockly.Gesture', + }, + { + oldName: 'Blockly.Grid', + newExport: 'Grid', + newPath: 'Blockly.Grid', + }, + { + oldName: 'Blockly.Icon', + newExport: 'Icon', + newPath: 'Blockly.Icon', + }, + { + oldName: 'Blockly.inject', + newExport: 'inject', + newPath: 'Blockly.inject', + }, + { + oldName: 'Blockly.Input', + newExport: 'Input', + newPath: 'Blockly.Input', + }, + { + oldName: 'Blockly.inputTypes', + newExport: 'inputTypes', + newPath: 'Blockly.inputTypes', + }, + { + oldName: 'Blockly.InsertionMarkerManager', + newExport: 'InsertionMarkerManager', + newPath: 'Blockly.InsertionMarkerManager', + }, + { + oldName: 'Blockly.MarkerManager', + newExport: 'MarkerManager', + newPath: 'Blockly.MarkerManager', + }, + { + oldName: 'Blockly.Menu', + newExport: 'Menu', + newPath: 'Blockly.Menu', + }, + { + oldName: 'Blockly.MenuItem', + newExport: 'MenuItem', + newPath: 'Blockly.MenuItem', + }, + { + oldName: 'Blockly.MetricsManager', + newExport: 'MetricsManager', + newPath: 'Blockly.MetricsManager', + }, + { + oldName: 'Blockly.Msg', + newExport: 'Msg', + newPath: 'Blockly.Msg', + }, + { + oldName: 'Blockly.Mutator', + newExport: 'Mutator', + newPath: 'Blockly.Mutator', + }, + { + oldName: 'Blockly.Names', + newExport: 'Names', + newPath: 'Blockly.Names', + }, + { + oldName: 'Blockly.Options', + newExport: 'Options', + newPath: 'Blockly.Options', + }, + { + oldName: 'Blockly.RenderedConnection', + newExport: 'RenderedConnection', + newPath: 'Blockly.RenderedConnection', + }, + { + oldName: 'Blockly.Scrollbar', + newExport: 'Scrollbar', + newPath: 'Blockly.Scrollbar', + }, + { + oldName: 'Blockly.ScrollbarPair', + newExport: 'ScrollbarPair', + newPath: 'Blockly.ScrollbarPair', + }, + { + oldName: 'Blockly.ShortcutRegistry', + newExport: 'ShortcutRegistry', + newPath: 'Blockly.ShortcutRegistry', + }, + { + oldName: 'Blockly.Theme', + newExport: 'Theme', + newPath: 'Blockly.Theme', + }, + { + oldName: 'Blockly.ThemeManager', + newExport: 'ThemeManager', + newPath: 'Blockly.ThemeManager', + }, + { + oldName: 'Blockly.TouchGesture', + newExport: 'TouchGesture', + newPath: 'Blockly.TouchGesture', + }, + { + oldName: 'Blockly.Trashcan', + newExport: 'Trashcan', + newPath: 'Blockly.Trashcan', + }, + { + oldName: 'Blockly.VariableMap', + newExport: 'VariableMap', + newPath: 'Blockly.VariableMap', + }, + { + oldName: 'Blockly.VariableModel', + newExport: 'VariableModel', + newPath: 'Blockly.VariableModel', + }, + { + oldName: 'Blockly.Warning', + newExport: 'Warning', + newPath: 'Blockly.Warning', + }, + { + oldName: 'Blockly.Workspace', + newExport: 'Workspace', + newPath: 'Blockly.Workspace', + }, + { + oldName: 'Blockly.WorkspaceAudio', + newExport: 'WorkspaceAudio', + newPath: 'Blockly.WorkspaceAudio', + }, + { + oldName: 'Blockly.WorkspaceComment', + newExport: 'WorkspaceComment', + newPath: 'Blockly.WorkspaceComment', + }, + { + oldName: 'Blockly.WorkspaceCommentSvg', + newExport: 'WorkspaceCommentSvg', + newPath: 'Blockly.WorkspaceCommentSvg', + }, + { + oldName: 'Blockly.WorkspaceDragSurfaceSvg', + newExport: 'WorkspaceDragSurfaceSvg', + newPath: 'Blockly.WorkspaceDragSurfaceSvg', + }, + { + oldName: 'Blockly.WorkspaceDragger', + newExport: 'WorkspaceDragger', + newPath: 'Blockly.WorkspaceDragger', + }, + { + oldName: 'Blockly.WorkspaceSvg', + newExport: 'WorkspaceSvg', + newPath: 'Blockly.WorkspaceSvg', + }, + { + oldName: 'Blockly.ZoomControls', + newExport: 'ZoomControls', + newPath: 'Blockly.ZoomControls', + }, + ], + + '8.0.0': [ + { + oldName: 'Blockly', + exports: { + DRAG_RADIUS: { + newModule: 'Blockly.config', + newExport: 'config.dragRadius', + }, + FLYOUT_DRAG_RADIUS: { + newModule: 'Blockly.config', + newExport: 'config.flyoutDragRadius', + }, + SNAP_RADIUS: { + newModule: 'Blockly.config', + newExport: 'config.snapRadius', + }, + CONNECTING_SNAP_RADIUS: { + newModule: 'Blockly.config', + newExport: 'config.connectingSnapRadius', + }, + CURRENT_CONNECTION_PREFERENCE: { + newModule: 'Blockly.config', + newExport: 'config.currentConnectionPreference', + }, + BUMP_DELAY: { + newModule: 'Blockly.config', + newExport: 'config.bumpDelay', + }, + SPRITE: { + newModule: 'Blockly.constants', + }, + }, + }, + { + oldName: 'Blockly.blocks.all', + newName: 'Blockly.libraryBlocks', + }, + { + oldName: 'Blockly.blocks.colour', + newName: 'Blockly.libraryBlocks.colour', + }, + { + oldName: 'Blockly.blocks.lists', + newName: 'Blockly.libraryBlocks.lists', + }, + { + oldName: 'Blockly.blocks.logic', + newName: 'Blockly.libraryBlocks.logic', + }, + { + oldName: 'Blockly.blocks.loops', + newName: 'Blockly.libraryBlocks.loops', + }, + { + oldName: 'Blockly.blocks.math', + newName: 'Blockly.libraryBlocks.math', + }, + { + oldName: 'Blockly.blocks.procedures', + newName: 'Blockly.libraryBlocks.procedures', + }, + { + oldName: 'Blockly.blocks.text', + newName: 'Blockly.libraryBlocks.text', + }, + { + oldName: 'Blockly.blocks.variables', + newName: 'Blockly.libraryBlocks.variables', + }, + { + oldName: 'Blockly.blocks.variablesDynamic', + newName: 'Blockly.libraryBlocks.variablesDynamic', + }, + { + oldName: 'Blockly.DropDownDiv', + newName: 'Blockly.dropDownDiv', + newPath: 'Blockly.DropDownDiv', + }, + ], + + 'develop': [ ], +} diff --git a/scripts/package/README.md b/scripts/package/README.md index b4f0cf3b802..9494865223c 100644 --- a/scripts/package/README.md +++ b/scripts/package/README.md @@ -1,77 +1,77 @@ -# Blockly - -Google's Blockly is a web-based, visual programming editor. Users can drag -blocks together to build programs. All code is free and open source. - -The source for this module is in the [Blockly repo](http://github.com/google/blockly). - -## Installation - -You can install this package either via ``npm`` or ``unpkg``. - -### npm -```bash -npm install blockly -``` - -### unpkg -```html - -``` - -## Example Usage - -```js -import Blockly from 'blockly'; -Blockly.inject('blocklyDiv', { - ... -}) -``` - -## Samples - -For samples on how to integrate Blockly into your project, view the list of samples at [blockly-samples](https://github.com/google/blockly-samples). - - -### Importing Blockly - -When you import Blockly with ``import * as Blockly from 'blockly';`` you'll get the default modules: -Blockly core, Blockly built-in blocks, the JavaScript generator and the English lang files. - -If you need more flexibility, you'll want to define your imports more carefully: - -#### Blockly Core - -```js -import * as Blockly from 'blockly/core'; -``` - -#### Blockly built in blocks - -```js -import 'blockly/blocks'; -``` - -#### Blockly Generators -If your application needs to generate code from the Blockly blocks, you'll want to include a generator. - -```js -import 'blockly/python'; -``` -to include the Python generator, you can also import ``blockly/javascript``, ``blockly/php``, ``blockly/dart`` and ``blockly/lua``. - -#### Blockly Languages - -```js -import * as Fr from 'blockly/msg/fr'; -Blockly.setLocale(Fr); -``` - -To import the French lang files. Once you've imported the specific lang module, you'll also want to set the locale in Blockly. - -For a full list of supported Blockly locales, see: [https://github.com/google/blockly/tree/master/msg/js](https://github.com/google/blockly/tree/master/msg/js) - - -## License - -Apache 2.0 +# Blockly + +Google's Blockly is a web-based, visual programming editor. Users can drag +blocks together to build programs. All code is free and open source. + +The source for this module is in the [Blockly repo](http://github.com/google/blockly). + +## Installation + +You can install this package either via ``npm`` or ``unpkg``. + +### npm +```bash +npm install blockly +``` + +### unpkg +```html + +``` + +## Example Usage + +```js +import Blockly from 'blockly'; +Blockly.inject('blocklyDiv', { + ... +}) +``` + +## Samples + +For samples on how to integrate Blockly into your project, view the list of samples at [blockly-samples](https://github.com/google/blockly-samples). + + +### Importing Blockly + +When you import Blockly with ``import * as Blockly from 'blockly';`` you'll get the default modules: +Blockly core, Blockly built-in blocks, the JavaScript generator and the English lang files. + +If you need more flexibility, you'll want to define your imports more carefully: + +#### Blockly Core + +```js +import * as Blockly from 'blockly/core'; +``` + +#### Blockly built in blocks + +```js +import 'blockly/blocks'; +``` + +#### Blockly Generators +If your application needs to generate code from the Blockly blocks, you'll want to include a generator. + +```js +import 'blockly/python'; +``` +to include the Python generator, you can also import ``blockly/javascript``, ``blockly/php``, ``blockly/dart`` and ``blockly/lua``. + +#### Blockly Languages + +```js +import * as Fr from 'blockly/msg/fr'; +Blockly.setLocale(Fr); +``` + +To import the French lang files. Once you've imported the specific lang module, you'll also want to set the locale in Blockly. + +For a full list of supported Blockly locales, see: [https://github.com/google/blockly/tree/master/msg/js](https://github.com/google/blockly/tree/master/msg/js) + + +## License + +Apache 2.0 diff --git a/scripts/package/blockly.js b/scripts/package/blockly.js index 77021b3d63c..0de4095a2db 100644 --- a/scripts/package/blockly.js +++ b/scripts/package/blockly.js @@ -1,9 +1,9 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Blockly module; just a wrapper for blockly_compressed.js. - */ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blockly module; just a wrapper for blockly_compressed.js. + */ diff --git a/scripts/package/blocks.js b/scripts/package/blocks.js index 66ae806bffa..79d229471bb 100644 --- a/scripts/package/blocks.js +++ b/scripts/package/blocks.js @@ -1,9 +1,9 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Blockly blocks module; just a wrapper for blocks_compressed.js. - */ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blockly blocks module; just a wrapper for blocks_compressed.js. + */ diff --git a/scripts/package/browser/core.js b/scripts/package/browser/core.js index a0b0d92593a..eee77aafbfe 100644 --- a/scripts/package/browser/core.js +++ b/scripts/package/browser/core.js @@ -1,20 +1,20 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Blockly core module for the browser. It includes blockly.js - * and adds a helper method for setting the locale. - */ - -/* eslint-disable */ -'use strict'; - -// Add a helper method to set the Blockly locale. -Blockly.setLocale = function (locale) { - Object.keys(locale).forEach(function (k) { - Blockly.Msg[k] = locale[k]; - }); -}; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blockly core module for the browser. It includes blockly.js + * and adds a helper method for setting the locale. + */ + +/* eslint-disable */ +'use strict'; + +// Add a helper method to set the Blockly locale. +Blockly.setLocale = function (locale) { + Object.keys(locale).forEach(function (k) { + Blockly.Msg[k] = locale[k]; + }); +}; diff --git a/scripts/package/browser/index.js b/scripts/package/browser/index.js index 36d0c325bf2..57454a49c5f 100644 --- a/scripts/package/browser/index.js +++ b/scripts/package/browser/index.js @@ -1,17 +1,17 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Blockly module for the browser. This includes Blockly core - * and built in blocks, the JavaScript code generator and the English block - * localization files. - */ - -/* eslint-disable */ -'use strict'; - -// Include the EN Locale by default. -Blockly.setLocale(En); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blockly module for the browser. This includes Blockly core + * and built in blocks, the JavaScript code generator and the English block + * localization files. + */ + +/* eslint-disable */ +'use strict'; + +// Include the EN Locale by default. +Blockly.setLocale(En); diff --git a/scripts/package/dart.js b/scripts/package/dart.js index d59060bded7..623ce398da2 100644 --- a/scripts/package/dart.js +++ b/scripts/package/dart.js @@ -1,9 +1,9 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Dart generator module; just a wrapper for dart_compressed.js. - */ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Dart generator module; just a wrapper for dart_compressed.js. + */ diff --git a/scripts/package/index.js b/scripts/package/index.js index 0264fd446b5..12e62be59cf 100644 --- a/scripts/package/index.js +++ b/scripts/package/index.js @@ -1,11 +1,11 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Blockly module; this is a wrapper which selects - * either browser.js or node.js, depending on which environment we - * are running in. - */ +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blockly module; this is a wrapper which selects + * either browser.js or node.js, depending on which environment we + * are running in. + */ diff --git a/scripts/package/javascript.js b/scripts/package/javascript.js index e4adba09fd2..0b52ebd2d1a 100644 --- a/scripts/package/javascript.js +++ b/scripts/package/javascript.js @@ -1,10 +1,10 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview JavaScript Generator module; just a wrapper for - * javascript_compressed.js. - */ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview JavaScript Generator module; just a wrapper for + * javascript_compressed.js. + */ diff --git a/scripts/package/lua.js b/scripts/package/lua.js index ca37b44f995..48335606579 100644 --- a/scripts/package/lua.js +++ b/scripts/package/lua.js @@ -1,9 +1,9 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Lua generator module; just a wrapper for lua_compressed.js. - */ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Lua generator module; just a wrapper for lua_compressed.js. + */ diff --git a/scripts/package/node/core.js b/scripts/package/node/core.js index 36a5addd21a..24b1ea56c65 100644 --- a/scripts/package/node/core.js +++ b/scripts/package/node/core.js @@ -1,32 +1,32 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Blockly core module for Node. It includes blockly-node.js - * and adds a helper method for setting the locale. - */ - -/* eslint-disable */ -'use strict'; - -// Add a helper method to set the Blockly locale. -Blockly.setLocale = function (locale) { - Object.keys(locale).forEach(function (k) { - Blockly.Msg[k] = locale[k]; - }); -}; - -// Override textToDomDocument and provide Node.js alternatives to DOMParser and -// XMLSerializer. -const globalThis = Blockly.utils.global; -if (typeof globalThis.document !== 'object') { - const jsdom = require('jsdom/lib/jsdom/living'); - globalThis.DOMParser = jsdom.DOMParser; - globalThis.XMLSerializer = jsdom.XMLSerializer; - const xmlDocument = Blockly.utils.xml.textToDomDocument( - ``); - Blockly.utils.xml.setDocument(xmlDocument); -} +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blockly core module for Node. It includes blockly-node.js + * and adds a helper method for setting the locale. + */ + +/* eslint-disable */ +'use strict'; + +// Add a helper method to set the Blockly locale. +Blockly.setLocale = function (locale) { + Object.keys(locale).forEach(function (k) { + Blockly.Msg[k] = locale[k]; + }); +}; + +// Override textToDomDocument and provide Node.js alternatives to DOMParser and +// XMLSerializer. +const globalThis = Blockly.utils.global; +if (typeof globalThis.document !== 'object') { + const jsdom = require('jsdom/lib/jsdom/living'); + globalThis.DOMParser = jsdom.DOMParser; + globalThis.XMLSerializer = jsdom.XMLSerializer; + const xmlDocument = Blockly.utils.xml.textToDomDocument( + ``); + Blockly.utils.xml.setDocument(xmlDocument); +} diff --git a/scripts/package/node/index.js b/scripts/package/node/index.js index 33c322a98e6..0bffaa68472 100644 --- a/scripts/package/node/index.js +++ b/scripts/package/node/index.js @@ -1,16 +1,16 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Blockly module for Node. It includes Blockly core, - * built-in blocks, all the generators and the English locale. - */ - -/* eslint-disable */ -'use strict'; - -// Include the EN Locale by default. -Blockly.setLocale(En); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Blockly module for Node. It includes Blockly core, + * built-in blocks, all the generators and the English locale. + */ + +/* eslint-disable */ +'use strict'; + +// Include the EN Locale by default. +Blockly.setLocale(En); diff --git a/scripts/package/php.js b/scripts/package/php.js index a6ed3fa6d3b..21e5bb9ba88 100644 --- a/scripts/package/php.js +++ b/scripts/package/php.js @@ -1,9 +1,9 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview PHP generator module; just a wrapper for php_compressed.js. - */ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview PHP generator module; just a wrapper for php_compressed.js. + */ diff --git a/scripts/package/python.js b/scripts/package/python.js index 0bb64c06f7d..53d73ff910b 100644 --- a/scripts/package/python.js +++ b/scripts/package/python.js @@ -1,10 +1,10 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Python generator module; just a wrapper for - * python_compressed.js. - */ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Python generator module; just a wrapper for + * python_compressed.js. + */ diff --git a/scripts/package/templates/node.template b/scripts/package/templates/node.template index eef05d74258..5bfcf1b9a23 100644 --- a/scripts/package/templates/node.template +++ b/scripts/package/templates/node.template @@ -1,5 +1,5 @@ -/* eslint-disable */ -(function (<%= param %>){ -<%= contents %> -module.exports = <%= exports %>; -})(<%= cjs %>); +/* eslint-disable */ +(function (<%= param %>){ +<%= contents %> +module.exports = <%= exports %>; +})(<%= cjs %>); diff --git a/scripts/package/templates/umd-msg.template b/scripts/package/templates/umd-msg.template index 527936f1622..d6b3e3c5474 100644 --- a/scripts/package/templates/umd-msg.template +++ b/scripts/package/templates/umd-msg.template @@ -1,16 +1,16 @@ -/* eslint-disable */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { // AMD - define(<%= amd %>, factory); - } else if (typeof exports === 'object') { // Node.js - module.exports = factory(); - } else { // Browser - var messages = factory(); - for (var key in messages) { - root.<%= namespace %>[key] = messages[key]; - } - } -}(this, function() { -<%= contents %> -return Blockly.Msg; -})); +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define(<%= amd %>, factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(); + } else { // Browser + var messages = factory(); + for (var key in messages) { + root.<%= namespace %>[key] = messages[key]; + } + } +}(this, function() { +<%= contents %> +return Blockly.Msg; +})); diff --git a/scripts/package/templates/umd.template b/scripts/package/templates/umd.template index ab62e103c8a..26de15ac26a 100644 --- a/scripts/package/templates/umd.template +++ b/scripts/package/templates/umd.template @@ -1,13 +1,13 @@ -/* eslint-disable */ -;(function(root, factory) { - if (typeof define === 'function' && define.amd) { // AMD - define(<%= amd %>, factory); - } else if (typeof exports === 'object') { // Node.js - module.exports = factory(<%= cjs %>); - } else { // Browser - root.<%= namespace %> = factory(<%= global %>); - } -}(this, function(<%= param %>) { -<%= contents %> -return <%= exports %>; -})); +/* eslint-disable */ +;(function(root, factory) { + if (typeof define === 'function' && define.amd) { // AMD + define(<%= amd %>, factory); + } else if (typeof exports === 'object') { // Node.js + module.exports = factory(<%= cjs %>); + } else { // Browser + root.<%= namespace %> = factory(<%= global %>); + } +}(this, function(<%= param %>) { +<%= contents %> +return <%= exports %>; +})); diff --git a/scripts/themes/blockStyles_example.json b/scripts/themes/blockStyles_example.json index e58191c18e3..400740a0289 100644 --- a/scripts/themes/blockStyles_example.json +++ b/scripts/themes/blockStyles_example.json @@ -1,11 +1,11 @@ -{ - "colour":"#A5745B", - "lists":"260", - "logic":"210", - "loops":"120", - "math":"230", - "procedure":"290", - "text":"160", - "variables":"310", - "variables_dynamic":"310" -} +{ + "colour":"#A5745B", + "lists":"260", + "logic":"210", + "loops":"120", + "math":"230", + "procedure":"290", + "text":"160", + "variables":"310", + "variables_dynamic":"310" +} diff --git a/scripts/themes/create_blockStyles.py b/scripts/themes/create_blockStyles.py index d1f88a4b0db..18bcd3e73dc 100644 --- a/scripts/themes/create_blockStyles.py +++ b/scripts/themes/create_blockStyles.py @@ -1,181 +1,181 @@ -# !/usr/bin/env python -# Converts a single colour to primary, secondary and tertiary colours. -# Primary Colour - The colour given -# Secondary Colour - Lightens the primary colour by .8 -# Tertiary Colour - Darkens the primary colour by .2 -# -# Copyright 2012 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# Usage: create_blockStyles.py -# -# fileName - Name of the file holding the map of style names to colours. -# Refer to blockStyles_example.json for an example input. -# -# Input: A json file with the keys being style names and the values -# being either a hue (number) or a hex value (string). -# Ex: {"styleName": 10, "styleName2": "#FFFFFF"} -# -# Output: A json file with the keys being style names and the values being an -# object holding primary, secondary, and tertiary colours in hex format. -# {"styleName": -# {"colourPrimary":"hexVal", -# "colourSecondary":"hexVal", -# "colourTertiary":"hexVal" -# } -# } - -import math -import json -import sys - -HSV_SATURATION = .45 -BRIGHTNESS_VAL = .65 * 255 -LIGHT_FACTOR = .8 -DARK_FACTOR = .2 - -#Change HSV (Hue Saturation Value) to RGB -#This is adapted to python from the js version found here: -#https://blockly-demo.appspot.com/closure-library/closure/goog/colour/color.js -def hsvToRgb(h, s, brightness): - red = 0 - green = 0 - blue = 0 - if (s == 0): - red = brightness - green = brightness - blue = brightness - else: - sextant = math.floor(h / 60) - remainder = (float(h) / float(60)) - sextant - val1 = brightness * (1 - s) - val2 = brightness * (1 - (s * remainder)) - val3 = brightness * (1 - (s * (1 - remainder))) - if sextant == 1: - red = val2 - green = brightness - blue = val1 - elif sextant == 2: - red = val1 - green = brightness - blue = val3 - elif sextant == 3: - red = val1 - green = val2 - blue = brightness - elif sextant == 4: - red = val3 - green = val1 - blue = brightness - elif sextant == 5: - red = brightness - green = val1 - blue = val2 - elif sextant == 0: - red = brightness - green = val3 - blue = val1 - return [math.floor(red), math.floor(green), math.floor(blue)] - - -#Blend two rgb colours with the factor being the weight given to the first colour -#This is adapted to python from the js version found here: -#https://blockly-demo.appspot.com/closure-library/closure/goog/colour/color.js -def blend(rgb1, rgb2, factor): - factor = max(min(factor, 1), 0) - return [ - round(rgb2[0] + factor * (rgb1[0] - rgb2[0])), - round(rgb2[1] + factor * (rgb1[1] - rgb2[1])), - round(rgb2[2] + factor * (rgb1[2] - rgb2[2])) - ] - - -#Lightens a given rgb colour -#This is adapted to python from the js version found here: -#https://blockly-demo.appspot.com/closure-library/closure/goog/colour/color.js -def lighten(rgb, factor): - white = [255, 255, 255] - return blend(white, rgb, factor) - - -#Darkens a given rgb colour -#This is adapted to python from the js version found here: -#https://blockly-demo.appspot.com/closure-library/closure/goog/colour/color.js -def darken(rgb, factor): - black = [0, 0, 0]; - return blend(black, rgb, factor) - - -#Converts rgb to hex -def rgbToHex(rgb): - #Add checks in here to make sure valid numbers - return '#%02x%02x%02x' % (rgb[0], rgb[1], rgb[2]) - - -#Calculates the primary, secondary and tertiary colours for the block style -def findOtherColours(rgb): - colourPrimary = rgbToHex(rgb) - colourSecondary = rgbToHex(lighten(rgb, LIGHT_FACTOR)) - colourTertiary = rgbToHex(darken(rgb, DARK_FACTOR)) - return { - "colourPrimary": colourPrimary, - "colourSecondary": colourSecondary, - "colourTertiary": colourTertiary - } - -# Converts a hex colour to rgb colour format -def hexToRgb(hexColour): - r = int(hexColour[1:3], 16) - g = int(hexColour[3:5], 16) - b = int(hexColour[5:7], 16) - return [r, g, b] - -# Converts either a hue or hex colour to rgb colour format -def findRgbVal(colour): - try: - hue = int(colour) - rgb = hsvToRgb(hue, HSV_SATURATION, BRIGHTNESS_VAL) - except (TypeError, ValueError): - hexColour = colour - rgb = hexToRgb(hexColour) - return rgb - -# Get info on the input file -def getFileInfo(): - if (len(sys.argv) < 2): - print("Please provide a filename") - sys.exit() - fileName = sys.argv[1] - try: - jsonFile = open(fileName).read() - except IOError as err: - print('Could not find that file name') - sys.exit() - return (jsonFile, fileName) - -# Creates a map with the keys being the style names and the values being an object -# holding colourPrimary, colourSecondary, colourTertiary -def createColourMap(): - (jsonFile, fileName) = getFileInfo() - jsonData = json.loads(jsonFile) - colourObj = {} - for key in jsonData.keys(): - rgbVal = findRgbVal(jsonData[key]) - colourObj[key] = findOtherColours(rgbVal) - f= open("new_" + fileName,"w+") - f.write(json.dumps(colourObj, indent=2, sort_keys=True)) - f.close() - -createColourMap() +# !/usr/bin/env python +# Converts a single colour to primary, secondary and tertiary colours. +# Primary Colour - The colour given +# Secondary Colour - Lightens the primary colour by .8 +# Tertiary Colour - Darkens the primary colour by .2 +# +# Copyright 2012 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# Usage: create_blockStyles.py +# +# fileName - Name of the file holding the map of style names to colours. +# Refer to blockStyles_example.json for an example input. +# +# Input: A json file with the keys being style names and the values +# being either a hue (number) or a hex value (string). +# Ex: {"styleName": 10, "styleName2": "#FFFFFF"} +# +# Output: A json file with the keys being style names and the values being an +# object holding primary, secondary, and tertiary colours in hex format. +# {"styleName": +# {"colourPrimary":"hexVal", +# "colourSecondary":"hexVal", +# "colourTertiary":"hexVal" +# } +# } + +import math +import json +import sys + +HSV_SATURATION = .45 +BRIGHTNESS_VAL = .65 * 255 +LIGHT_FACTOR = .8 +DARK_FACTOR = .2 + +#Change HSV (Hue Saturation Value) to RGB +#This is adapted to python from the js version found here: +#https://blockly-demo.appspot.com/closure-library/closure/goog/colour/color.js +def hsvToRgb(h, s, brightness): + red = 0 + green = 0 + blue = 0 + if (s == 0): + red = brightness + green = brightness + blue = brightness + else: + sextant = math.floor(h / 60) + remainder = (float(h) / float(60)) - sextant + val1 = brightness * (1 - s) + val2 = brightness * (1 - (s * remainder)) + val3 = brightness * (1 - (s * (1 - remainder))) + if sextant == 1: + red = val2 + green = brightness + blue = val1 + elif sextant == 2: + red = val1 + green = brightness + blue = val3 + elif sextant == 3: + red = val1 + green = val2 + blue = brightness + elif sextant == 4: + red = val3 + green = val1 + blue = brightness + elif sextant == 5: + red = brightness + green = val1 + blue = val2 + elif sextant == 0: + red = brightness + green = val3 + blue = val1 + return [math.floor(red), math.floor(green), math.floor(blue)] + + +#Blend two rgb colours with the factor being the weight given to the first colour +#This is adapted to python from the js version found here: +#https://blockly-demo.appspot.com/closure-library/closure/goog/colour/color.js +def blend(rgb1, rgb2, factor): + factor = max(min(factor, 1), 0) + return [ + round(rgb2[0] + factor * (rgb1[0] - rgb2[0])), + round(rgb2[1] + factor * (rgb1[1] - rgb2[1])), + round(rgb2[2] + factor * (rgb1[2] - rgb2[2])) + ] + + +#Lightens a given rgb colour +#This is adapted to python from the js version found here: +#https://blockly-demo.appspot.com/closure-library/closure/goog/colour/color.js +def lighten(rgb, factor): + white = [255, 255, 255] + return blend(white, rgb, factor) + + +#Darkens a given rgb colour +#This is adapted to python from the js version found here: +#https://blockly-demo.appspot.com/closure-library/closure/goog/colour/color.js +def darken(rgb, factor): + black = [0, 0, 0]; + return blend(black, rgb, factor) + + +#Converts rgb to hex +def rgbToHex(rgb): + #Add checks in here to make sure valid numbers + return '#%02x%02x%02x' % (rgb[0], rgb[1], rgb[2]) + + +#Calculates the primary, secondary and tertiary colours for the block style +def findOtherColours(rgb): + colourPrimary = rgbToHex(rgb) + colourSecondary = rgbToHex(lighten(rgb, LIGHT_FACTOR)) + colourTertiary = rgbToHex(darken(rgb, DARK_FACTOR)) + return { + "colourPrimary": colourPrimary, + "colourSecondary": colourSecondary, + "colourTertiary": colourTertiary + } + +# Converts a hex colour to rgb colour format +def hexToRgb(hexColour): + r = int(hexColour[1:3], 16) + g = int(hexColour[3:5], 16) + b = int(hexColour[5:7], 16) + return [r, g, b] + +# Converts either a hue or hex colour to rgb colour format +def findRgbVal(colour): + try: + hue = int(colour) + rgb = hsvToRgb(hue, HSV_SATURATION, BRIGHTNESS_VAL) + except (TypeError, ValueError): + hexColour = colour + rgb = hexToRgb(hexColour) + return rgb + +# Get info on the input file +def getFileInfo(): + if (len(sys.argv) < 2): + print("Please provide a filename") + sys.exit() + fileName = sys.argv[1] + try: + jsonFile = open(fileName).read() + except IOError as err: + print('Could not find that file name') + sys.exit() + return (jsonFile, fileName) + +# Creates a map with the keys being the style names and the values being an object +# holding colourPrimary, colourSecondary, colourTertiary +def createColourMap(): + (jsonFile, fileName) = getFileInfo() + jsonData = json.loads(jsonFile) + colourObj = {} + for key in jsonData.keys(): + rgbVal = findRgbVal(jsonData[key]) + colourObj[key] = findOtherColours(rgbVal) + f= open("new_" + fileName,"w+") + f.write(json.dumps(colourObj, indent=2, sort_keys=True)) + f.close() + +createColourMap() diff --git a/tests/compile/index.html b/tests/compile/index.html index 97fb520316f..df8b36e6adb 100644 --- a/tests/compile/index.html +++ b/tests/compile/index.html @@ -1,43 +1,43 @@ - - - - - Blockly: Advanced Compilation Test - - - - - -

      Blockly: Advanced Compilation Test

      - -

      To run this test manually, run `npm run test:compile:advanced` - from the command line, then open this file in your web browser.

      - -

      Measure the size of main_compressed.js (295kb as of October 2017), then reload - this page and see if Blockly works.

      - -
      - - - + + + + + Blockly: Advanced Compilation Test + + + + + +

      Blockly: Advanced Compilation Test

      + +

      To run this test manually, run `npm run test:compile:advanced` + from the command line, then open this file in your web browser.

      + +

      Measure the size of main_compressed.js (295kb as of October 2017), then reload + this page and see if Blockly works.

      + +
      + + + diff --git a/tests/compile/main.js b/tests/compile/main.js index b5d20a770cd..eba27e00c96 100644 --- a/tests/compile/main.js +++ b/tests/compile/main.js @@ -1,36 +1,36 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Main'); - -// Core -// Either require 'Blockly.requires', or just the components you use: -/* eslint-disable-next-line no-unused-vars */ -const {BlocklyOptions} = goog.requireType('Blockly.BlocklyOptions'); -const {inject} = goog.require('Blockly.inject'); -/** @suppress {extraRequire} */ -goog.require('Blockly.geras.Renderer'); -/** @suppress {extraRequire} */ -goog.require('Blockly.VerticalFlyout'); -// Blocks -/** @suppress {extraRequire} */ -goog.require('Blockly.libraryBlocks.logic'); -/** @suppress {extraRequire} */ -goog.require('Blockly.libraryBlocks.loops'); -/** @suppress {extraRequire} */ -goog.require('Blockly.libraryBlocks.math'); -/** @suppress {extraRequire} */ -goog.require('Blockly.libraryBlocks.texts'); -/** @suppress {extraRequire} */ -goog.require('Blockly.libraryBlocks.testBlocks'); - - -function init() { - inject('blocklyDiv', /** @type {BlocklyOptions} */ ({ - 'toolbox': document.getElementById('toolbox') - })); -}; -window.addEventListener('load', init); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Main'); + +// Core +// Either require 'Blockly.requires', or just the components you use: +/* eslint-disable-next-line no-unused-vars */ +const {BlocklyOptions} = goog.requireType('Blockly.BlocklyOptions'); +const {inject} = goog.require('Blockly.inject'); +/** @suppress {extraRequire} */ +goog.require('Blockly.geras.Renderer'); +/** @suppress {extraRequire} */ +goog.require('Blockly.VerticalFlyout'); +// Blocks +/** @suppress {extraRequire} */ +goog.require('Blockly.libraryBlocks.logic'); +/** @suppress {extraRequire} */ +goog.require('Blockly.libraryBlocks.loops'); +/** @suppress {extraRequire} */ +goog.require('Blockly.libraryBlocks.math'); +/** @suppress {extraRequire} */ +goog.require('Blockly.libraryBlocks.texts'); +/** @suppress {extraRequire} */ +goog.require('Blockly.libraryBlocks.testBlocks'); + + +function init() { + inject('blocklyDiv', /** @type {BlocklyOptions} */ ({ + 'toolbox': document.getElementById('toolbox') + })); +}; +window.addEventListener('load', init); diff --git a/tests/compile/test_blocks.js b/tests/compile/test_blocks.js index 2b8cc6621bc..59c317daf9f 100644 --- a/tests/compile/test_blocks.js +++ b/tests/compile/test_blocks.js @@ -1,48 +1,48 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Test blocks for advanced compilation. - */ -'use strict'; - -goog.provide('Blockly.libraryBlocks.testBlocks'); - -goog.require('Blockly'); - -Blockly.defineBlocksWithJsonArray([ - { - 'type': 'test_style_hex1', - 'message0': 'Block color: Bright purple %1 %2 %3 %4', - 'args0': [ - { - 'type': 'field_input', - 'name': 'TEXT', - 'text': '#992aff', - }, - { - 'type': 'field_dropdown', - 'name': 'DROPDOWN', - 'options': [ - ['option', 'ONE'], - ['option', 'TWO'], - ], - }, - { - 'type': 'field_checkbox', - 'name': 'NAME', - 'checked': true, - }, - { - 'type': 'input_value', - 'name': 'NAME', - }, - ], - 'previousStatement': null, - 'nextStatement': null, - 'colour': '#992aff', - } -]); +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Test blocks for advanced compilation. + */ +'use strict'; + +goog.provide('Blockly.libraryBlocks.testBlocks'); + +goog.require('Blockly'); + +Blockly.defineBlocksWithJsonArray([ + { + 'type': 'test_style_hex1', + 'message0': 'Block color: Bright purple %1 %2 %3 %4', + 'args0': [ + { + 'type': 'field_input', + 'name': 'TEXT', + 'text': '#992aff', + }, + { + 'type': 'field_dropdown', + 'name': 'DROPDOWN', + 'options': [ + ['option', 'ONE'], + ['option', 'TWO'], + ], + }, + { + 'type': 'field_checkbox', + 'name': 'NAME', + 'checked': true, + }, + { + 'type': 'input_value', + 'name': 'NAME', + }, + ], + 'previousStatement': null, + 'nextStatement': null, + 'colour': '#992aff', + } +]); diff --git a/tests/deps.js b/tests/deps.js index 317703f1a39..b088112153b 100644 --- a/tests/deps.js +++ b/tests/deps.js @@ -12,7 +12,7 @@ goog.addDependency('../../core/block.js', ['Blockly.Block'], ['Blockly.ASTNode', goog.addDependency('../../core/block_animations.js', ['Blockly.blockAnimations'], ['Blockly.utils.Svg', 'Blockly.utils.dom'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/block_drag_surface.js', ['Blockly.BlockDragSurfaceSvg'], ['Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.svgMath'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/block_dragger.js', ['Blockly.BlockDragger'], ['Blockly.Events.BlockDrag', 'Blockly.Events.BlockMove', 'Blockly.Events.utils', 'Blockly.IBlockDragger', 'Blockly.InsertionMarkerManager', 'Blockly.blockAnimations', 'Blockly.bumpObjects', 'Blockly.common', 'Blockly.registry', 'Blockly.utils.Coordinate', 'Blockly.utils.dom'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/block_svg.js', ['Blockly.BlockSvg'], ['Blockly.ASTNode', 'Blockly.Block', 'Blockly.ConnectionType', 'Blockly.ContextMenu', 'Blockly.ContextMenuRegistry', 'Blockly.Events.BlockMove', 'Blockly.Events.Selected', 'Blockly.Events.utils', 'Blockly.FieldLabel', 'Blockly.IASTNodeLocationSvg', 'Blockly.IBoundedElement', 'Blockly.ICopyable', 'Blockly.IDraggable', 'Blockly.MarkerManager', 'Blockly.Msg', 'Blockly.RenderedConnection', 'Blockly.TabNavigateCursor', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.blockAnimations', 'Blockly.browserEvents', 'Blockly.common', 'Blockly.config', 'Blockly.constants', 'Blockly.internalConstants', 'Blockly.serialization.blocks', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.svgMath', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/block_svg.js', ['Blockly.BlockSvg'], ['Blockly.ASTNode', 'Blockly.Block', 'Blockly.ConnectionType', 'Blockly.ContextMenu', 'Blockly.ContextMenuRegistry', 'Blockly.Events.BlockMove', 'Blockly.Events.Selected', 'Blockly.Events.utils', 'Blockly.FieldLabel', 'Blockly.IASTNodeLocationSvg', 'Blockly.IBoundedElement', 'Blockly.ICopyable', 'Blockly.IDraggable', 'Blockly.MarkerManager', 'Blockly.Msg', 'Blockly.RenderedConnection', 'Blockly.TabNavigateCursor', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.blockAnimations', 'Blockly.browserEvents', 'Blockly.common', 'Blockly.config', 'Blockly.constants', 'Blockly.internalConstants', 'Blockly.serialization.blocks', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.svgMath', 'Blockly.utils.userAgent'], {'lang': 'es_2020', 'module': 'goog'}); goog.addDependency('../../core/blockly.js', ['Blockly'], ['Blockly.ASTNode', 'Blockly.BasicCursor', 'Blockly.Block', 'Blockly.BlockDragSurfaceSvg', 'Blockly.BlockDragger', 'Blockly.BlockSvg', 'Blockly.BlocklyOptions', 'Blockly.Bubble', 'Blockly.BubbleDragger', 'Blockly.CollapsibleToolboxCategory', 'Blockly.Comment', 'Blockly.ComponentManager', 'Blockly.Connection', 'Blockly.ConnectionChecker', 'Blockly.ConnectionDB', 'Blockly.ConnectionType', 'Blockly.ContextMenu', 'Blockly.ContextMenuItems', 'Blockly.ContextMenuRegistry', 'Blockly.Css', 'Blockly.Cursor', 'Blockly.DeleteArea', 'Blockly.DragTarget', 'Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Events.FinishedLoading', 'Blockly.Events.Ui', 'Blockly.Events.UiBase', 'Blockly.Events.VarCreate', 'Blockly.Extensions', 'Blockly.Field', 'Blockly.FieldAngle', 'Blockly.FieldCheckbox', 'Blockly.FieldColour', 'Blockly.FieldDropdown', 'Blockly.FieldImage', 'Blockly.FieldLabel', 'Blockly.FieldLabelSerializable', 'Blockly.FieldMultilineInput', 'Blockly.FieldNumber', 'Blockly.FieldTextInput', 'Blockly.FieldVariable', 'Blockly.Flyout', 'Blockly.FlyoutButton', 'Blockly.FlyoutMetricsManager', 'Blockly.Generator', 'Blockly.Gesture', 'Blockly.Grid', 'Blockly.HorizontalFlyout', 'Blockly.IASTNodeLocation', 'Blockly.IASTNodeLocationSvg', 'Blockly.IASTNodeLocationWithBlock', 'Blockly.IAutoHideable', 'Blockly.IBlockDragger', 'Blockly.IBoundedElement', 'Blockly.IBubble', 'Blockly.ICollapsibleToolboxItem', 'Blockly.IComponent', 'Blockly.IConnectionChecker', 'Blockly.IContextMenu', 'Blockly.ICopyable', 'Blockly.IDeletable', 'Blockly.IDeleteArea', 'Blockly.IDragTarget', 'Blockly.IDraggable', 'Blockly.IFlyout', 'Blockly.IKeyboardAccessible', 'Blockly.IMetricsManager', 'Blockly.IMovable', 'Blockly.IPositionable', 'Blockly.IRegistrable', 'Blockly.IRegistrableField', 'Blockly.ISelectable', 'Blockly.ISelectableToolboxItem', 'Blockly.IStyleable', 'Blockly.IToolbox', 'Blockly.IToolboxItem', 'Blockly.Icon', 'Blockly.Input', 'Blockly.InsertionMarkerManager', 'Blockly.Marker', 'Blockly.MarkerManager', 'Blockly.Menu', 'Blockly.MenuItem', 'Blockly.MetricsManager', 'Blockly.Msg', 'Blockly.Mutator', 'Blockly.Names', 'Blockly.Options', 'Blockly.Procedures', 'Blockly.RenderedConnection', 'Blockly.Scrollbar', 'Blockly.ScrollbarPair', 'Blockly.ShortcutItems', 'Blockly.ShortcutRegistry', 'Blockly.TabNavigateCursor', 'Blockly.Theme', 'Blockly.ThemeManager', 'Blockly.Themes', 'Blockly.Toolbox', 'Blockly.ToolboxCategory', 'Blockly.ToolboxItem', 'Blockly.ToolboxSeparator', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.TouchGesture', 'Blockly.Trashcan', 'Blockly.VariableMap', 'Blockly.VariableModel', 'Blockly.Variables', 'Blockly.VariablesDynamic', 'Blockly.VerticalFlyout', 'Blockly.Warning', 'Blockly.WidgetDiv', 'Blockly.Workspace', 'Blockly.WorkspaceAudio', 'Blockly.WorkspaceComment', 'Blockly.WorkspaceCommentSvg', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.WorkspaceDragger', 'Blockly.WorkspaceSvg', 'Blockly.Xml', 'Blockly.ZoomControls', 'Blockly.blockAnimations', 'Blockly.blockRendering', 'Blockly.blocks', 'Blockly.browserEvents', 'Blockly.bumpObjects', 'Blockly.clipboard', 'Blockly.common', 'Blockly.config', 'Blockly.constants', 'Blockly.dialog', 'Blockly.dropDownDiv', 'Blockly.fieldRegistry', 'Blockly.geras', 'Blockly.inject', 'Blockly.inputTypes', 'Blockly.internalConstants', 'Blockly.minimalist', 'Blockly.registry', 'Blockly.serialization.ISerializer', 'Blockly.serialization.blocks', 'Blockly.serialization.exceptions', 'Blockly.serialization.priorities', 'Blockly.serialization.registry', 'Blockly.serialization.variables', 'Blockly.serialization.workspaces', 'Blockly.thrasos', 'Blockly.uiPosition', 'Blockly.utils', 'Blockly.utils.colour', 'Blockly.utils.deprecation', 'Blockly.utils.global', 'Blockly.utils.svgMath', 'Blockly.utils.toolbox', 'Blockly.zelos'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/blockly_options.js', ['Blockly.BlocklyOptions'], [], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/blocks.js', ['Blockly.blocks'], [], {'lang': 'es6', 'module': 'goog'}); @@ -25,7 +25,7 @@ goog.addDependency('../../core/comment.js', ['Blockly.Comment'], ['Blockly.Bubbl goog.addDependency('../../core/common.js', ['Blockly.common'], ['Blockly.blocks'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/component_manager.js', ['Blockly.ComponentManager'], ['Blockly.utils.array'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/config.js', ['Blockly.config'], [], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/connection.js', ['Blockly.Connection'], ['Blockly.ConnectionType', 'Blockly.Events.BlockMove', 'Blockly.Events.utils', 'Blockly.IASTNodeLocationWithBlock', 'Blockly.Xml', 'Blockly.constants', 'Blockly.serialization.blocks'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/connection.js', ['Blockly.Connection'], ['Blockly.ConnectionType', 'Blockly.Events.BlockMove', 'Blockly.Events.utils', 'Blockly.IASTNodeLocationWithBlock', 'Blockly.Xml', 'Blockly.constants', 'Blockly.serialization.blocks'], {'lang': 'es_2020', 'module': 'goog'}); goog.addDependency('../../core/connection_checker.js', ['Blockly.ConnectionChecker'], ['Blockly.Connection', 'Blockly.ConnectionType', 'Blockly.IConnectionChecker', 'Blockly.common', 'Blockly.internalConstants', 'Blockly.registry'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/connection_db.js', ['Blockly.ConnectionDB'], ['Blockly.ConnectionType', 'Blockly.constants'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/connection_type.js', ['Blockly.ConnectionType'], [], {'lang': 'es6', 'module': 'goog'}); @@ -35,7 +35,7 @@ goog.addDependency('../../core/contextmenu_items.js', ['Blockly.ContextMenuItems goog.addDependency('../../core/contextmenu_registry.js', ['Blockly.ContextMenuRegistry'], [], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/css.js', ['Blockly.Css'], ['Blockly.utils.deprecation'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/delete_area.js', ['Blockly.DeleteArea'], ['Blockly.BlockSvg', 'Blockly.DragTarget', 'Blockly.IDeleteArea'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/dialog.js', ['Blockly.dialog'], [], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/dialog.js', ['Blockly.dialog'], ['Blockly.Msg'], {'lang': 'es8', 'module': 'goog'}); goog.addDependency('../../core/drag_target.js', ['Blockly.DragTarget'], ['Blockly.IDragTarget'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/dropdowndiv.js', ['Blockly.dropDownDiv'], ['Blockly.common', 'Blockly.utils.Rect', 'Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.style'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/events/events.js', ['Blockly.Events'], ['Blockly.Events.Abstract', 'Blockly.Events.BlockBase', 'Blockly.Events.BlockChange', 'Blockly.Events.BlockCreate', 'Blockly.Events.BlockDelete', 'Blockly.Events.BlockDrag', 'Blockly.Events.BlockMove', 'Blockly.Events.BubbleOpen', 'Blockly.Events.Click', 'Blockly.Events.CommentBase', 'Blockly.Events.CommentChange', 'Blockly.Events.CommentCreate', 'Blockly.Events.CommentDelete', 'Blockly.Events.CommentMove', 'Blockly.Events.FinishedLoading', 'Blockly.Events.MarkerMove', 'Blockly.Events.Selected', 'Blockly.Events.ThemeChange', 'Blockly.Events.ToolboxItemSelect', 'Blockly.Events.TrashcanOpen', 'Blockly.Events.Ui', 'Blockly.Events.UiBase', 'Blockly.Events.VarBase', 'Blockly.Events.VarCreate', 'Blockly.Events.VarDelete', 'Blockly.Events.VarRename', 'Blockly.Events.ViewportChange', 'Blockly.Events.utils', 'Blockly.utils.deprecation'], {'lang': 'es6', 'module': 'goog'}); diff --git a/tests/generators/colour.xml b/tests/generators/colour.xml index 05a9dee4856..db46a6254fe 100644 --- a/tests/generators/colour.xml +++ b/tests/generators/colour.xml @@ -1,318 +1,318 @@ - - - test colour picker - Describe this function... - - - - - static colour - - - - - #ff6600 - - - - - #ff6600 - - - - - - - test rgb - Describe this function... - - - - - from rgb - - - - - - - 100 - - - - - 40 - - - - - 0 - - - - - - - #ff6600 - - - - - - - Colour - - - - - - - - - - - - - - - - - - - - - - - test colour random - Describe this function... - - - - - 100 - - - - - item - - - - - - - - - - - length of random colour string: - - - - - item - - - - - - - - - item - - - - - - - 7 - - - - - - - - - - format of random colour string: - - - - - item - - - - - - - - FIRST - - - item - - - - - - - # - - - - - i - - - 1 - - - - - 6 - - - - - TRUE - - - - - - contents of random colour string: - - - - - item - - - - - at index: - - - - - - - i - - - - - - - - - NEQ - - - - - -1 - - - - - - - FIRST - - - abcdefABDEF0123456789 - - - - - - FROM_START - - - item - - - - - - - i - - - - - - - - - - - - - - - - - - - - - - - - - test blend - Describe this function... - - - - - blend - - - - - - - #ff0000 - - - - - - - 100 - - - - - 40 - - - - - 0 - - - - - - - 0.4 - - - - - - - #ff2900 - - - - - - + + + test colour picker + Describe this function... + + + + + static colour + + + + + #ff6600 + + + + + #ff6600 + + + + + + + test rgb + Describe this function... + + + + + from rgb + + + + + + + 100 + + + + + 40 + + + + + 0 + + + + + + + #ff6600 + + + + + + + Colour + + + + + + + + + + + + + + + + + + + + + + + test colour random + Describe this function... + + + + + 100 + + + + + item + + + + + + + + + + + length of random colour string: + + + + + item + + + + + + + + + item + + + + + + + 7 + + + + + + + + + + format of random colour string: + + + + + item + + + + + + + + FIRST + + + item + + + + + + + # + + + + + i + + + 1 + + + + + 6 + + + + + TRUE + + + + + + contents of random colour string: + + + + + item + + + + + at index: + + + + + + + i + + + + + + + + + NEQ + + + + + -1 + + + + + + + FIRST + + + abcdefABDEF0123456789 + + + + + + FROM_START + + + item + + + + + + + i + + + + + + + + + + + + + + + + + + + + + + + + + test blend + Describe this function... + + + + + blend + + + + + + + #ff0000 + + + + + + + 100 + + + + + 40 + + + + + 0 + + + + + + + 0.4 + + + + + + + #ff2900 + + + + + + diff --git a/tests/generators/functions.xml b/tests/generators/functions.xml index c2299c777ba..e5c3cdbbe78 100644 --- a/tests/generators/functions.xml +++ b/tests/generators/functions.xml @@ -1,561 +1,561 @@ - - - - Functions - - - - - - - - - - - test recurse - - - - - - - - - - 3 - - - - - - - -1-2-1-3-1-2-1- - - - - - - - - - - - test procedure - - - - - - - - - 8 - - - - - 2 - - - - - - - procedure with global - - - - - proc z - - - - - 4 - - - - - proc w - - - FALSE - - - - - - - - - - FALSE - - - - - - - procedure no return - - - TRUE - - - proc w - - - - - proc w - - - FALSE - - - - - - - - - - TRUE - - - - - - - procedure return - - - FALSE - - - proc w - - - - - - - - - - - - - - - - - - - - - - - - - procedure 1 - - - proc z - - - DIVIDE - - - proc x - - - - - proc y - - - - - - - - - - - - procedure 2 - - - - - - proc x - - - - - proc w - - - TRUE - - - - - - - - - test function - - - - - function with arguments - - - - - - - - - - - 2 - - - - - 3 - - - - - - - -1 - - - - - - - function with side effect - - - - - func z - - - - - side effect - - - - - func a - - - unchanged - - - - - func c - - - global - - - - - - - function with global - - - - - - - - - - 2 - - - - - - - 3global - - - - - - - function with scope - - - - - func a - - - - - unchanged - - - - - - - function return - - - TRUE - - - - - - - - TRUE - - - - - - - - - function no return - - - FALSE - - - - - - - - FALSE - - - - - - - - - - - - - - - - - - - - - - - - - - - function 1 - - - func z - - - side effect - - - - - - - MINUS - - - func x - - - - - func y - - - - - - - - - - function 2 - - - func a - - - 1 - - - - - - - - - - func a - - - - - func c - - - - - - - - - - function 3 - - - - - - func a - - - - - TRUE - - - - - - - FALSE - - - - - - - - recurse - - - - - - GT - - - n - - - - - 0 - - - - - - - text - - - - - - - - - - - MINUS - - - n - - - - - 1 - - - - - - - - - n - - - - - - - - - - MINUS - - - n - - - - - 1 - - - - - - - - - - - - - text - - - - - - - - - - - - - text - - - - + + + + Functions + + + + + + + + + + + test recurse + + + + + + + + + + 3 + + + + + + + -1-2-1-3-1-2-1- + + + + + + + + + + + test procedure + + + + + + + + + 8 + + + + + 2 + + + + + + + procedure with global + + + + + proc z + + + + + 4 + + + + + proc w + + + FALSE + + + + + + + + + + FALSE + + + + + + + procedure no return + + + TRUE + + + proc w + + + + + proc w + + + FALSE + + + + + + + + + + TRUE + + + + + + + procedure return + + + FALSE + + + proc w + + + + + + + + + + + + + + + + + + + + + + + + + procedure 1 + + + proc z + + + DIVIDE + + + proc x + + + + + proc y + + + + + + + + + + + + procedure 2 + + + + + + proc x + + + + + proc w + + + TRUE + + + + + + + + + test function + + + + + function with arguments + + + + + + + + + + + 2 + + + + + 3 + + + + + + + -1 + + + + + + + function with side effect + + + + + func z + + + + + side effect + + + + + func a + + + unchanged + + + + + func c + + + global + + + + + + + function with global + + + + + + + + + + 2 + + + + + + + 3global + + + + + + + function with scope + + + + + func a + + + + + unchanged + + + + + + + function return + + + TRUE + + + + + + + + TRUE + + + + + + + + + function no return + + + FALSE + + + + + + + + FALSE + + + + + + + + + + + + + + + + + + + + + + + + + + + function 1 + + + func z + + + side effect + + + + + + + MINUS + + + func x + + + + + func y + + + + + + + + + + function 2 + + + func a + + + 1 + + + + + + + + + + func a + + + + + func c + + + + + + + + + + function 3 + + + + + + func a + + + + + TRUE + + + + + + + FALSE + + + + + + + + recurse + + + + + + GT + + + n + + + + + 0 + + + + + + + text + + + + + + + + + + + MINUS + + + n + + + + + 1 + + + + + + + + + n + + + + + + + + + + MINUS + + + n + + + + + 1 + + + + + + + + + + + + + text + + + - + + + + + + + + + text + + + + diff --git a/tests/generators/golden/generated.dart b/tests/generators/golden/generated.dart index a4788658839..69589a4ef6b 100644 --- a/tests/generators/golden/generated.dart +++ b/tests/generators/golden/generated.dart @@ -1,1702 +1,1702 @@ -import 'dart:math' as Math; - -var unittestResults, test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy; - -String unittest_report() { - // Create test report. - List report = []; - StringBuffer summary = new StringBuffer(); - int fails = 0; - for (int x = 0; x < unittestResults.length; x++) { - if (unittestResults[x][0]) { - summary.write("."); - } else { - summary.write("F"); - fails++; - report.add(""); - report.add("FAIL: ${unittestResults[x][2]}"); - report.add(unittestResults[x][1]); - } - } - report.insert(0, summary.toString()); - report.add(""); - report.add("Ran ${unittestResults.length} tests."); - report.add(""); - if (fails != 0) { - report.add("FAILED (failures=$fails)"); - } else { - report.add("OK"); - } - return report.join("\n"); -} - -void unittest_assertequals(dynamic actual, dynamic expected, String message) { - // Asserts that a value equals another value. - if (unittestResults == null) { - throw "Orphaned assert: ${message}"; - } - bool equals(a, b) { - if (a == b) { - return true; - } else if (a is List && b is List) { - if (a.length != b.length) { - return false; - } - for (num i = 0; i < a.length; i++) { - if (!equals(a[i], b[i])) { - return false; - } - } - return true; - } - return false; - } - if (equals(actual, expected)) { - unittestResults.add([true, "OK", message]); - } else { - unittestResults.add([false, "Expected: $expected\nActual: $actual", message]); - } -} - -void unittest_fail(String message) { - // Always assert an error. - if (unittestResults == null) { - throw "Orphaned assert fail: ${message}"; - } - unittestResults.add([false, "Fail.", message]); -} - -/// Describe this function... -void test_if() { - if (false) { - unittest_fail('if false'); - } - ok = false; - if (true) { - ok = true; - } - unittest_assertequals(ok, true, 'if true'); - ok = false; - if (false) { - unittest_fail('if/else false'); - } else { - ok = true; - } - unittest_assertequals(ok, true, 'if/else false'); - ok = false; - if (true) { - ok = true; - } else { - unittest_fail('if/else true'); - } - unittest_assertequals(ok, true, 'if/else true'); - ok = false; - if (false) { - unittest_fail('elseif 1'); - }else if (true) { - ok = true; - }else if (true) { - unittest_fail('elseif 2'); - } else { - unittest_fail('elseif 3'); - } - unittest_assertequals(ok, true, 'elseif 4'); -} - -/// Describe this function... -void test_ifelse() { - ok = false; - if (true) { - ok = true; - } else { - unittest_fail('ifelse true'); - } - unittest_assertequals(ok, true, 'ifelse true'); - ok = false; - if (false) { - unittest_fail('ifelse false'); - } else { - ok = true; - } - unittest_assertequals(ok, true, 'ifelse false'); -} - -/// Describe this function... -void test_equalities() { - unittest_assertequals(2 == 2, true, 'Equal yes'); - unittest_assertequals(3 == 4, false, 'Equal no'); - unittest_assertequals(5 != 6, true, 'Not equal yes'); - unittest_assertequals(3 == 4, false, 'Not equal no'); - unittest_assertequals(5 < 6, true, 'Smaller yes'); - unittest_assertequals(7 < 7, false, 'Smaller no'); - unittest_assertequals(9 > 8, true, 'Greater yes'); - unittest_assertequals(10 > 10, false, 'Greater no'); - unittest_assertequals(11 <= 11, true, 'Smaller-equal yes'); - unittest_assertequals(13 <= 12, false, 'Smaller-equal no'); - unittest_assertequals(14 >= 14, true, 'Greater-equal yes'); - unittest_assertequals(15 >= 16, false, 'Greater-equal no'); -} - -/// Describe this function... -void test_and() { - unittest_assertequals(true && true, true, 'And true/true'); - unittest_assertequals(false && true, false, 'And false/true'); - unittest_assertequals(true && false, false, 'And true/false'); - unittest_assertequals(false && false, false, 'And false/false'); -} - -/// Describe this function... -void test_or() { - unittest_assertequals(true || true, true, 'Or true/true'); - unittest_assertequals(false || true, true, 'Or false/true'); - unittest_assertequals(true || false, true, 'Or true/false'); - unittest_assertequals(false || false, false, 'Or false/false'); -} - -/// Describe this function... -void test_ternary() { - unittest_assertequals(true ? 42 : 99, 42, 'if true'); - unittest_assertequals(false ? 42 : 99, 99, 'if true'); -} - -/// Describe this function... -void test_foreach() { - log = ''; - for (var x in ['a', 'b', 'c']) { - log = [log, x].join(); - } - unittest_assertequals(log, 'abc', 'for loop'); -} - -/// Describe this function... -void test_repeat() { - count = 0; - for (int count2 = 0; count2 < 10; count2++) { - count = (count is num ? count : 0) + 1; - } - unittest_assertequals(count, 10, 'repeat 10'); -} - -/// Describe this function... -void test_while() { - while (false) { - unittest_fail('while 0'); - } - while (!true) { - unittest_fail('until 0'); - } - count = 1; - while (count != 10) { - count = (count is num ? count : 0) + 1; - } - unittest_assertequals(count, 10, 'while 10'); - count = 1; - while (!(count == 10)) { - count = (count is num ? count : 0) + 1; - } - unittest_assertequals(count, 10, 'until 10'); -} - -/// Describe this function... -void test_repeat_ext() { - count = 0; - for (int count3 = 0; count3 < 10; count3++) { - count = (count is num ? count : 0) + 1; - } - unittest_assertequals(count, 10, 'repeat 10'); -} - -/// Describe this function... -void test_count_by() { - log = ''; - for (x = 1; x <= 8; x += 2) { - log = [log, x].join(); - } - unittest_assertequals(log, '1357', 'count up ints'); - log = ''; - for (x = 8; x >= 1; x -= 2) { - log = [log, x].join(); - } - unittest_assertequals(log, '8642', 'count down ints'); - loglist = []; - for (x = 1; x <= 8; x += 1.5) { - loglist.add(x); - } - unittest_assertequals(loglist, [1, 2.5, 4, 5.5, 7], 'count with floats'); - loglist = []; - var x_start = 1 + 0; - var x_end = 8 + 0; - num x_inc = (1 - 2).abs(); - if (x_start > x_end) { - x_inc = -x_inc; - } - for (x = x_start; x_inc >= 0 ? x <= x_end : x >= x_end; x += x_inc) { - loglist.add(x); - } - unittest_assertequals(loglist, [1, 2, 3, 4, 5, 6, 7, 8], 'count up non-trivial ints'); - loglist = []; - var x_start2 = 8 + 0; - var x_end2 = 1 + 0; - num x_inc2 = 2; - if (x_start2 > x_end2) { - x_inc2 = -x_inc2; - } - for (x = x_start2; x_inc2 >= 0 ? x <= x_end2 : x >= x_end2; x += x_inc2) { - loglist.add(x); - } - unittest_assertequals(loglist, [8, 6, 4, 2], 'count down non-trivial ints'); - loglist = []; - var x_start3 = 5 + 0.5; - var x_end3 = 1 + 0; - num x_inc3 = (1 + 0).abs(); - if (x_start3 > x_end3) { - x_inc3 = -x_inc3; - } - for (x = x_start3; x_inc3 >= 0 ? x <= x_end3 : x >= x_end3; x += x_inc3) { - loglist.add(x); - } - unittest_assertequals(loglist, [5.5, 4.5, 3.5, 2.5, 1.5], 'count with floats'); -} - -/// Describe this function... -void test_count_loops() { - log = ''; - for (x = 1; x <= 8; x++) { - log = [log, x].join(); - } - unittest_assertequals(log, '12345678', 'count up'); - log = ''; - for (x = 8; x >= 1; x--) { - log = [log, x].join(); - } - unittest_assertequals(log, '87654321', 'count down'); - loglist = []; - var x_start4 = 1 + 0; - var x_end4 = 4 + 0; - num x_inc4 = 1; - if (x_start4 > x_end4) { - x_inc4 = -x_inc4; - } - for (x = x_start4; x_inc4 >= 0 ? x <= x_end4 : x >= x_end4; x += x_inc4) { - loglist.add(x); - } - unittest_assertequals(loglist, [1, 2, 3, 4], 'count up non-trivial'); - loglist = []; - var x_start5 = 3 + 1; - var x_end5 = 1 + 0; - num x_inc5 = 1; - if (x_start5 > x_end5) { - x_inc5 = -x_inc5; - } - for (x = x_start5; x_inc5 >= 0 ? x <= x_end5 : x >= x_end5; x += x_inc5) { - loglist.add(x); - } - unittest_assertequals(loglist, [4, 3, 2, 1], 'count down non-trivial'); -} - -/// Describe this function... -void test_continue() { - log = ''; - count = 0; - while (count != 8) { - count = (count is num ? count : 0) + 1; - if (count == 5) { - continue; - } - log = [log, count].join(); - } - unittest_assertequals(log, '1234678', 'while continue'); - log = ''; - count = 0; - while (!(count == 8)) { - count = (count is num ? count : 0) + 1; - if (count == 5) { - continue; - } - log = [log, count].join(); - } - unittest_assertequals(log, '1234678', 'until continue'); - log = ''; - for (x = 1; x <= 8; x++) { - if (x == 5) { - continue; - } - log = [log, x].join(); - } - unittest_assertequals(log, '1234678', 'count continue'); - log = ''; - for (var x in ['a', 'b', 'c', 'd']) { - if (x == 'c') { - continue; - } - log = [log, x].join(); - } - unittest_assertequals(log, 'abd', 'for continue'); -} - -/// Describe this function... -void test_break() { - count = 1; - while (count != 10) { - if (count == 5) { - break; - } - count = (count is num ? count : 0) + 1; - } - unittest_assertequals(count, 5, 'while break'); - count = 1; - while (!(count == 10)) { - if (count == 5) { - break; - } - count = (count is num ? count : 0) + 1; - } - unittest_assertequals(count, 5, 'until break'); - log = ''; - for (x = 1; x <= 8; x++) { - if (x == 5) { - break; - } - log = [log, x].join(); - } - unittest_assertequals(log, '1234', 'count break'); - log = ''; - for (var x in ['a', 'b', 'c', 'd']) { - if (x == 'c') { - break; - } - log = [log, x].join(); - } - unittest_assertequals(log, 'ab', 'for break'); -} - -/// Tests the "single" block. -void test_single() { - unittest_assertequals(Math.sqrt(25), 5, 'sqrt'); - unittest_assertequals((-25).abs(), 25, 'abs'); - unittest_assertequals(-(-25), 25, 'negate'); - unittest_assertequals(Math.log(1), 0, 'ln'); - unittest_assertequals(Math.log(100) / Math.log(10), 2, 'log10'); - unittest_assertequals(Math.exp(2), 7.38905609893065, 'exp'); - unittest_assertequals(Math.pow(10,2), 100, 'power10'); -} - -/// Tests the "arithmetic" block for all operations and checks -/// parenthesis are properly generated for different orders. -void test_arithmetic() { - unittest_assertequals(1 + 2, 3, 'add'); - unittest_assertequals(1 - 2, -1, 'subtract'); - unittest_assertequals(1 - (0 + 2), -1, 'subtract order with add'); - unittest_assertequals(1 - (0 - 2), 3, 'subtract order with subtract'); - unittest_assertequals(4 * 2.5, 10, 'multiply'); - unittest_assertequals(4 * (0 + 2.5), 10, 'multiply order'); - unittest_assertequals(8.2 / -5, -1.64, 'divide'); - unittest_assertequals(8.2 / (0 + -5), -1.64, 'divide order'); - unittest_assertequals(Math.pow(10, 4), 10000, 'power'); - unittest_assertequals(Math.pow(10, 0 + 4), 10000, 'power order'); -} - -/// Tests the "trig" block. -void test_trig() { - unittest_assertequals(Math.sin(90 / 180 * Math.pi), 1, 'sin'); - unittest_assertequals(Math.cos(180 / 180 * Math.pi), -1, 'cos'); - unittest_assertequals(Math.tan(0 / 180 * Math.pi), 0, 'tan'); - unittest_assertequals(Math.asin(-1) / Math.pi * 180, -90, 'asin'); - unittest_assertequals(Math.acos(1) / Math.pi * 180, 0, 'acos'); - unittest_assertequals(Math.atan(1) / Math.pi * 180, 45, 'atan'); -} - -/// Tests the "constant" blocks. -void test_constant() { - unittest_assertequals((Math.pi * 1000).floor(), 3141, 'const pi'); - unittest_assertequals((Math.e * 1000).floor(), 2718, 'const e'); - unittest_assertequals((((1 + Math.sqrt(5)) / 2) * 1000).floor(), 1618, 'const golden'); - unittest_assertequals((Math.sqrt2 * 1000).floor(), 1414, 'const sqrt 2'); - unittest_assertequals((Math.sqrt1_2 * 1000).floor(), 707, 'const sqrt 0.5'); - unittest_assertequals(9999 < double.infinity, true, 'const infinity'); -} - -bool math_isPrime(n) { - // https://en.wikipedia.org/wiki/Primality_test#Naive_methods - if (n == 2 || n == 3) { - return true; - } - // False if n is null, negative, is 1, or not whole. - // And false if n is divisible by 2 or 3. - if (n == null || n <= 1 || n % 1 != 0 || n % 2 == 0 || n % 3 == 0) { - return false; - } - // Check all the numbers of form 6k +/- 1, up to sqrt(n). - for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) { - if (n % (x - 1) == 0 || n % (x + 1) == 0) { - return false; - } - } - return true; -} - -/// Tests the "number property" blocks. -void test_number_properties() { - unittest_assertequals(42 % 2 == 0, true, 'even'); - unittest_assertequals(42.1 % 2 == 1, false, 'odd'); - unittest_assertequals(math_isPrime(5), true, 'prime 5'); - unittest_assertequals(math_isPrime(5 + 2), true, 'prime 5 + 2 (extra parentheses)'); - unittest_assertequals(math_isPrime(25), false, 'prime 25'); - unittest_assertequals(math_isPrime(-31.1), false, 'prime negative'); - unittest_assertequals(Math.pi % 1 == 0, false, 'whole'); - unittest_assertequals(double.infinity > 0, true, 'positive'); - unittest_assertequals(5 + 2 > 0, true, '5 + 2 is positive (extra parentheses)'); - unittest_assertequals(-42 < 0, true, 'negative'); - unittest_assertequals(3 + 2 < 0, false, '3 + 2 is negative (extra parentheses)'); - unittest_assertequals(42 % 2 == 0, true, 'divisible'); - unittest_assertequals(!false, true, 'divisible by 0'); -} - -/// Tests the "round" block. -void test_round() { - unittest_assertequals(42.42.round(), 42, 'round'); - unittest_assertequals((-42.42).ceil(), -42, 'round up'); - unittest_assertequals(42.42.floor(), 42, 'round down'); -} - -/// Tests the "change" block. -void test_change() { - varToChange = 100; - varToChange = (varToChange is num ? varToChange : 0) + 42; - unittest_assertequals(varToChange, 142, 'change'); -} - -num math_sum(List myList) { - num sumVal = 0; - myList.forEach((num entry) {sumVal += entry;}); - return sumVal; -} - -num math_min(List myList) { - if (myList.isEmpty) return null; - num minVal = myList[0]; - myList.forEach((num entry) {minVal = Math.min(minVal, entry);}); - return minVal; -} - -num math_max(List myList) { - if (myList.isEmpty) return null; - num maxVal = myList[0]; - myList.forEach((num entry) {maxVal = Math.max(maxVal, entry);}); - return maxVal; -} - -num math_mean(List myList) { - // First filter list for numbers only. - List localList = new List.from(myList); - localList.removeWhere((a) => a is! num); - if (localList.isEmpty) return null; - num sumVal = 0; - localList.forEach((var entry) {sumVal += entry;}); - return sumVal / localList.length; -} - -num math_median(List myList) { - // First filter list for numbers only, then sort, then return middle value - // or the average of two middle values if list has an even number of elements. - List localList = new List.from(myList); - localList.removeWhere((a) => a is! num); - if (localList.isEmpty) return null; - localList.sort((a, b) => (a - b)); - int index = localList.length ~/ 2; - if (localList.length % 2 == 1) { - return localList[index]; - } else { - return (localList[index - 1] + localList[index]) / 2; - } -} - -List math_modes(List values) { - List modes = []; - List counts = []; - int maxCount = 0; - for (int i = 0; i < values.length; i++) { - var value = values[i]; - bool found = false; - int thisCount; - for (int j = 0; j < counts.length; j++) { - if (counts[j][0] == value) { - thisCount = ++counts[j][1]; - found = true; - break; - } - } - if (!found) { - counts.add([value, 1]); - thisCount = 1; - } - maxCount = Math.max(thisCount, maxCount); - } - for (int j = 0; j < counts.length; j++) { - if (counts[j][1] == maxCount) { - modes.add(counts[j][0]); - } - } - return modes; -} - -num math_standard_deviation(List myList) { - // First filter list for numbers only. - List numbers = new List.from(myList); - numbers.removeWhere((a) => a is! num); - if (numbers.isEmpty) return null; - num n = numbers.length; - num sum = 0; - numbers.forEach((x) => sum += x); - num mean = sum / n; - num sumSquare = 0; - numbers.forEach((x) => sumSquare += Math.pow(x - mean, 2)); - return Math.sqrt(sumSquare / n); -} - -dynamic math_random_item(List myList) { - int x = new Math.Random().nextInt(myList.length); - return myList[x]; -} - -/// Tests the "list operation" blocks. -void test_operations_on_list() { - unittest_assertequals(math_sum([3, 4, 5]), 12, 'sum'); - unittest_assertequals(math_min([3, 4, 5]), 3, 'min'); - unittest_assertequals(math_max([3, 4, 5]), 5, 'max'); - unittest_assertequals(math_mean([3, 4, 5]), 4, 'average'); - unittest_assertequals(math_median([3, 4, 5, 1]), 3.5, 'median'); - unittest_assertequals(math_modes([3, 4, 3]), [3], 'modes'); - unittest_assertequals(math_modes([3, 4, 3, 1, 4]), [3, 4], 'modes multiple'); - unittest_assertequals(math_standard_deviation([3, 3, 3]), 0, 'standard dev'); - unittest_assertequals([3, 4, 5].indexOf(math_random_item([3, 4, 5])) + 1 > 0, true, 'random'); -} - -/// Tests the "mod" block. -void test_mod() { - unittest_assertequals(42 % 5, 2, 'mod'); -} - -/// Tests the "constrain" block. -void test_constraint() { - unittest_assertequals(Math.min(Math.max(100, 0), 42), 42, 'constraint'); -} - -int math_random_int(num a, num b) { - if (a > b) { - // Swap a and b to ensure a is smaller. - num c = a; - a = b; - b = c; - } - return new Math.Random().nextInt(b - a + 1) + a; -} - -/// Tests the "random integer" block. -void test_random_integer() { - rand = math_random_int(5, 10); - unittest_assertequals(rand >= 5 && rand <= 10, true, 'randRange'); - unittest_assertequals(rand % 1 == 0, true, 'randInteger'); -} - -/// Tests the "random fraction" block. -void test_random_fraction() { - rand = new Math.Random().nextDouble(); - unittest_assertequals(rand >= 0 && rand <= 1, true, 'randFloat'); -} - -/// Describe this function... -void test_atan2() { - unittest_assertequals(Math.atan2(5, -5) / Math.pi * 180, 135, 'atan2'); - unittest_assertequals(Math.atan2(-12, 0) / Math.pi * 180, -90, 'atan2'); -} - -/// Checks that the number of calls is one in order -/// to confirm that a function was only called once. -void check_number_of_calls(test_name) { - test_name = [test_name, 'number of calls'].join(); - unittest_assertequals(number_of_calls, 1, test_name); -} - -/// Tests the "create text with" block with varying number of inputs. -void test_create_text() { - unittest_assertequals('', '', 'no text'); - unittest_assertequals('Hello'.toString(), 'Hello', 'create single'); - unittest_assertequals((-1).toString(), '-1', 'create single number'); - unittest_assertequals(['K',9].join(), 'K9', 'create double text'); - unittest_assertequals([4,2].join(), '42', 'create double text numbers'); - unittest_assertequals([1,2,3].join(), '123', 'create triple'); - unittest_assertequals([1,true ? 0 : null,'M'].join(), '10M', 'create order'); -} - -/// Creates an empty string for use with the empty test. -dynamic get_empty() { - return ''; -} - -/// Tests the "is empty" block". -void test_empty_text() { - unittest_assertequals('Google'.isEmpty, false, 'not empty'); - unittest_assertequals(''.isEmpty, true, 'empty'); - unittest_assertequals((get_empty()).isEmpty, true, 'empty complex'); - unittest_assertequals((true ? '' : null).isEmpty, true, 'empty order'); -} - -/// Tests the "length" block. -void test_text_length() { - unittest_assertequals(''.length, 0, 'zero length'); - unittest_assertequals('Google'.length, 6, 'non-zero length'); - unittest_assertequals((true ? 'car' : null).length, 3, 'length order'); -} - -/// Tests the "append text" block with different types of parameters. -void test_append() { - item = 'Miserable'; - item = [item, 'Failure'].join(); - unittest_assertequals(item, 'MiserableFailure', 'append text'); - item = 12; - item = [item, 34].join(); - unittest_assertequals(item, '1234', 'append number'); - item = 'Something '; - item = [item, true ? 'Positive' : null].join(); - unittest_assertequals(item, 'Something Positive', 'append order'); -} - -/// Tests the "find" block with a variable. -void test_find_text_simple() { - text = 'Banana'; - unittest_assertequals(text.indexOf('an') + 1, 2, 'find first simple'); - unittest_assertequals(text.lastIndexOf('an') + 1, 4, 'find last simple'); - unittest_assertequals(text.indexOf('Peel') + 1, 0, 'find none simple'); -} - -/// Creates a string for use with the find test. -dynamic get_fruit() { - number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; - return 'Banana'; -} - -/// Tests the "find" block with a function call. -void test_find_text_complex() { - number_of_calls = 0; - unittest_assertequals((get_fruit()).indexOf('an') + 1, 2, 'find first complex'); - check_number_of_calls('find first complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_fruit() : null).indexOf('an') + 1, 2, 'find first order complex'); - check_number_of_calls('find first order complex'); - number_of_calls = 0; - unittest_assertequals((get_fruit()).lastIndexOf('an') + 1, 4, 'find last complex'); - check_number_of_calls('find last complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_fruit() : null).lastIndexOf('an') + 1, 4, 'find last order complex'); - check_number_of_calls('find last order complex'); - number_of_calls = 0; - unittest_assertequals((get_fruit()).indexOf('Peel') + 1, 0, 'find none complex'); - check_number_of_calls('find none complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_fruit() : null).indexOf('Peel') + 1, 0, 'find none order complex'); - check_number_of_calls('find none order complex'); -} - -String text_get_from_end(String text, num x) { - return text[text.length - x]; -} - -String text_random_letter(String text) { - int x = new Math.Random().nextInt(text.length); - return text[x]; -} - -/// Tests the "get letter" block with a variable. -void test_get_text_simple() { - text = 'Blockly'; - unittest_assertequals(text[0], 'B', 'get first simple'); - unittest_assertequals(text_get_from_end(text, 1), 'y', 'get last simple'); - unittest_assertequals(text.indexOf(text_random_letter(text)) + 1 > 0, true, 'get random simple'); - unittest_assertequals(text[2], 'o', 'get # simple'); - unittest_assertequals(text[((true ? 3 : null) - 1)], 'o', 'get # order simple'); - unittest_assertequals(text_get_from_end(text, 3), 'k', 'get #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(text_get_from_end(text, 0 + 3), 'k', 'get #-end order simple'); -} - -/// Creates a string for use with the get test. -dynamic get_Blockly() { - number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; - return 'Blockly'; -} - -/// Tests the "get letter" block with a function call. -void test_get_text_complex() { - text = 'Blockly'; - number_of_calls = 0; - unittest_assertequals((get_Blockly())[0], 'B', 'get first complex'); - check_number_of_calls('get first complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_Blockly() : null)[0], 'B', 'get first order complex'); - check_number_of_calls('get first order complex'); - number_of_calls = 0; - unittest_assertequals(text_get_from_end(get_Blockly(), 1), 'y', 'get last complex'); - check_number_of_calls('get last complex'); - number_of_calls = 0; - unittest_assertequals(text_get_from_end(true ? get_Blockly() : null, 1), 'y', 'get last order complex'); - check_number_of_calls('get last order complex'); - number_of_calls = 0; - unittest_assertequals(text.indexOf(text_random_letter(get_Blockly())) + 1 > 0, true, 'get random complex'); - check_number_of_calls('get random complex'); - number_of_calls = 0; - unittest_assertequals(text.indexOf(text_random_letter(true ? get_Blockly() : null)) + 1 > 0, true, 'get random order complex'); - check_number_of_calls('get random order complex'); - number_of_calls = 0; - unittest_assertequals((get_Blockly())[2], 'o', 'get # complex'); - check_number_of_calls('get # complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_Blockly() : null)[((true ? 3 : null) - 1)], 'o', 'get # order complex'); - check_number_of_calls('get # order complex'); - number_of_calls = 0; - unittest_assertequals(text_get_from_end(get_Blockly(), 3), 'k', 'get #-end complex'); - check_number_of_calls('get #-end complex'); - number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(text_get_from_end(true ? get_Blockly() : null, 0 + 3), 'k', 'get #-end order complex'); - check_number_of_calls('get #-end order complex'); -} - -/// Creates a string for use with the substring test. -dynamic get_numbers() { - number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; - return '123456789'; -} - -/// Tests the "get substring" block with a variable. -void test_substring_simple() { - text = '123456789'; - unittest_assertequals(text.substring(1, 3), '23', 'substring # simple'); - unittest_assertequals(text.substring(((true ? 2 : null) - 1), true ? 3 : null), '23', 'substring # simple order'); - unittest_assertequals(text.substring(text.length - 3, text.length - 1), '78', 'substring #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(text.substring(text.length - (0 + 3), text.length - ((0 + 2) - 1)), '78', 'substring #-end simple order'); - unittest_assertequals(text, text, 'substring first-last simple'); - unittest_assertequals(text.substring(1, text.length - 1), '2345678', 'substring # #-end simple'); - unittest_assertequals(text.substring(text.length - 7, 4), '34', 'substring #-end # simple'); - unittest_assertequals(text.substring(0, 4), '1234', 'substring first # simple'); - unittest_assertequals(text.substring(0, text.length - 1), '12345678', 'substring first #-end simple'); - unittest_assertequals(text.substring(6), '789', 'substring # last simple'); - unittest_assertequals(text.substring(text.length - 3), '789', 'substring #-end last simple'); - unittest_assertequals(text.substring(0, text.length - 0), '123456789', 'substring all with # #-end simple'); - unittest_assertequals(text.substring(text.length - 9, 9), '123456789', 'substring all with #-end # simple'); - // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - unittest_assertequals(text.substring(((0 + 1) - 1), text.length - ((0 + 1) - 1)), '123456789', 'substring all with # #-end math simple'); -} - -String text_get_substring(String text, String where1, num at1, String where2, num at2) { - int getAt(String where, num at) { - if (where == 'FROM_END') { - at = text.length - 1 - at; - } else if (where == 'FIRST') { - at = 0; - } else if (where == 'LAST') { - at = text.length - 1; - } else if (where != 'FROM_START') { - throw 'Unhandled option (text_getSubstring).'; - } - return at; - } - at1 = getAt(where1, at1); - at2 = getAt(where2, at2) + 1; - return text.substring(at1, at2); -} - -/// Tests the "get substring" block with a function call. -void test_substring_complex() { - number_of_calls = 0; - unittest_assertequals((get_numbers()).substring(1, 3), '23', 'substring # complex'); - check_number_of_calls('substring # complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_numbers() : null).substring(((true ? 2 : null) - 1), true ? 3 : null), '23', 'substring # complex order'); - check_number_of_calls('substring # complex order'); - number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(text_get_substring(get_numbers(), 'FROM_END', 2, 'FROM_END', 1), '78', 'substring #-end complex'); - check_number_of_calls('substring #-end complex'); - number_of_calls = 0; - unittest_assertequals(text_get_substring(true ? get_numbers() : null, 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), '78', 'substring #-end order order'); - check_number_of_calls('substring #-end order order'); - number_of_calls = 0; - unittest_assertequals(get_numbers(), text, 'substring first-last'); - check_number_of_calls('substring first-last'); - number_of_calls = 0; - unittest_assertequals(text_get_substring(get_numbers(), 'FROM_START', 1, 'FROM_END', 1), '2345678', 'substring # #-end complex'); - check_number_of_calls('substring # #-end complex'); - number_of_calls = 0; - unittest_assertequals(text_get_substring(get_numbers(), 'FROM_END', 6, 'FROM_START', 3), '34', 'substring #-end # complex'); - check_number_of_calls('substring #-end # complex'); - number_of_calls = 0; - unittest_assertequals((get_numbers()).substring(0, 4), '1234', 'substring first # complex'); - check_number_of_calls('substring first # complex'); - number_of_calls = 0; - unittest_assertequals(text_get_substring(get_numbers(), 'FIRST', 0, 'FROM_END', 1), '12345678', 'substring first #-end complex'); - check_number_of_calls('substring first #-end complex'); - number_of_calls = 0; - unittest_assertequals(text_get_substring(get_numbers(), 'FROM_START', 6, 'LAST', 0), '789', 'substring # last complex'); - check_number_of_calls('substring # last complex'); - number_of_calls = 0; - unittest_assertequals(text_get_substring(get_numbers(), 'FROM_END', 2, 'LAST', 0), '789', 'substring #-end last complex'); - check_number_of_calls('substring #-end last complex'); - number_of_calls = 0; - unittest_assertequals(text_get_substring(get_numbers(), 'FROM_START', 0, 'FROM_END', 0), '123456789', 'substring all with # #-end complex'); - check_number_of_calls('substring all with # #-end complex'); - number_of_calls = 0; - unittest_assertequals(text_get_substring(get_numbers(), 'FROM_END', 8, 'FROM_START', 8), '123456789', 'substring all with #-end # complex'); - check_number_of_calls('substring all with #-end # complex'); - number_of_calls = 0; - // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - unittest_assertequals(text_get_substring(get_numbers(), 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), '123456789', 'substring all with # #-end math complex'); - check_number_of_calls('substring all with # #-end math complex'); -} - -String text_toTitleCase(String str) { - RegExp exp = new RegExp(r'\b'); - List list = str.split(exp); - final title = new StringBuffer(); - for (String part in list) { - if (part.length > 0) { - title.write(part[0].toUpperCase()); - if (part.length > 0) { - title.write(part.substring(1).toLowerCase()); - } - } - } - return title.toString(); -} - -/// Tests the "change casing" block. -void test_case() { - text = 'Hello World'; - unittest_assertequals(text.toUpperCase(), 'HELLO WORLD', 'uppercase'); - unittest_assertequals((true ? text : null).toUpperCase(), 'HELLO WORLD', 'uppercase order'); - text = 'Hello World'; - unittest_assertequals(text.toLowerCase(), 'hello world', 'lowercase'); - unittest_assertequals((true ? text : null).toLowerCase(), 'hello world', 'lowercase order'); - text = 'heLLo WorlD'; - unittest_assertequals(text_toTitleCase(text), 'Hello World', 'titlecase'); - unittest_assertequals(text_toTitleCase(true ? text : null), 'Hello World', 'titlecase order'); -} - -/// Tests the "trim" block. -void test_trim() { - text = ' abc def '; - unittest_assertequals(text.trim(), 'abc def', 'trim both'); - unittest_assertequals((true ? text : null).trim(), 'abc def', 'trim both order'); - unittest_assertequals(text.replaceFirst(new RegExp(r'^\s+'), ''), 'abc def ', 'trim left'); - unittest_assertequals((true ? text : null).replaceFirst(new RegExp(r'^\s+'), ''), 'abc def ', 'trim left order'); - unittest_assertequals(text.replaceFirst(new RegExp(r'\s+$'), ''), ' abc def', 'trim right'); - unittest_assertequals((true ? text : null).replaceFirst(new RegExp(r'\s+$'), ''), ' abc def', 'trim right order'); -} - -int text_count(String haystack, String needle) { - if (needle.length == 0) { - return haystack.length + 1; - } - int index = 0; - int count = 0; - while (index != -1) { - index = haystack.indexOf(needle, index); - if (index != -1) { - count++; - index += needle.length; - } - } - return count; -} - -/// Tests the "trim" block. -void test_count_text() { - text = 'woolloomooloo'; - unittest_assertequals(text_count(text, 'o'), 8, 'len 1'); - unittest_assertequals(text_count(text, 'oo'), 4, 'len 2'); - unittest_assertequals(text_count(text, 'loo'), 2, 'len 3'); - unittest_assertequals(text_count(text, 'wool'), 1, 'start'); - unittest_assertequals(text_count(text, 'chicken'), 0, 'missing'); - unittest_assertequals(text_count(text, ''), 14, 'empty needle'); - unittest_assertequals(text_count('', 'chicken'), 0, 'empty source'); -} - -/// Tests the "trim" block. -void test_text_reverse() { - unittest_assertequals(new String.fromCharCodes(''.runes.toList().reversed), '', 'empty string'); - unittest_assertequals(new String.fromCharCodes('a'.runes.toList().reversed), 'a', 'len 1'); - unittest_assertequals(new String.fromCharCodes('ab'.runes.toList().reversed), 'ba', 'len 2'); - unittest_assertequals(new String.fromCharCodes('woolloomooloo'.runes.toList().reversed), 'ooloomoolloow', 'longer'); -} - -/// Tests the "trim" block. -void test_replace() { - unittest_assertequals('woolloomooloo'.replaceAll('oo', '123'), 'w123ll123m123l123', 'replace all instances 1'); - unittest_assertequals('woolloomooloo'.replaceAll('.oo', 'X'), 'woolloomooloo', 'literal string replacement'); - unittest_assertequals('woolloomooloo'.replaceAll('abc', 'X'), 'woolloomooloo', 'not found'); - unittest_assertequals('woolloomooloo'.replaceAll('o', ''), 'wllml', 'empty replacement 1'); - unittest_assertequals('aaaaa'.replaceAll('aaaaa', ''), '', 'empty replacement 2'); - unittest_assertequals('aaaaa'.replaceAll('a', ''), '', 'empty replacement 3'); - unittest_assertequals(''.replaceAll('a', 'chicken'), '', 'empty source'); -} - -/// Tests the "multiline" block. -void test_multiline() { - unittest_assertequals('', '', 'no text'); - unittest_assertequals('Google', 'Google', 'simple'); - unittest_assertequals('paragraph' + '\n' + - 'with newlines' + '\n' + - 'yup', 'paragraph' + '\n' + - 'with newlines' + '\n' + - 'yup', 'no compile error with newlines'); - unittest_assertequals(text_count('bark bark' + '\n' + - 'bark bark bark' + '\n' + - 'bark bark bark bark', 'bark'), 9, 'count with newlines'); -} - -/// Checks that the number of calls is one in order -/// to confirm that a function was only called once. -void check_number_of_calls2(test_name) { - test_name = [test_name, 'number of calls'].join(); - unittest_assertequals(number_of_calls, 1, test_name); -} - -/// Tests the "create list with" and "create empty list" blocks. -void test_create_lists() { - unittest_assertequals([], [], 'create empty'); - unittest_assertequals([true, 'love'], [true, 'love'], 'create items'); - unittest_assertequals(new List.filled(3, 'Eject'), ['Eject', 'Eject', 'Eject'], 'create repeated'); - unittest_assertequals(new List.filled(0 + 3, 'Eject'), ['Eject', 'Eject', 'Eject'], 'create repeated order'); -} - -/// Creates an empty list for use with the empty test. -dynamic get_empty_list() { - return []; -} - -/// Tests the "is empty" block. -void test_lists_empty() { - unittest_assertequals([0].isEmpty, false, 'not empty'); - unittest_assertequals([].isEmpty, true, 'empty'); - unittest_assertequals((get_empty_list()).isEmpty, true, 'empty complex'); - unittest_assertequals((true ? [] : null).isEmpty, true, 'empty order'); -} - -/// Tests the "length" block. -void test_lists_length() { - unittest_assertequals([].length, 0, 'zero length'); - unittest_assertequals(['cat'].length, 1, 'one length'); - unittest_assertequals(['cat', true, []].length, 3, 'three length'); - unittest_assertequals((true ? ['cat', true] : null).length, 2, 'two length order'); -} - -/// Tests the "find" block with a variable. -void test_find_lists_simple() { - list = ['Alice', 'Eve', 'Bob', 'Eve']; - unittest_assertequals(list.indexOf('Eve') + 1, 2, 'find first simple'); - unittest_assertequals(list.lastIndexOf('Eve') + 1, 4, 'find last simple'); - unittest_assertequals(list.indexOf('Dave') + 1, 0, 'find none simple'); -} - -/// Creates a list for use with the find test. -dynamic get_names() { - number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; - return ['Alice', 'Eve', 'Bob', 'Eve']; -} - -/// Tests the "find" block with a function call. -void test_find_lists_complex() { - number_of_calls = 0; - unittest_assertequals((get_names()).indexOf('Eve') + 1, 2, 'find first complex'); - check_number_of_calls('find first complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_names() : null).indexOf('Eve') + 1, 2, 'find first order complex'); - check_number_of_calls('find first order complex'); - number_of_calls = 0; - unittest_assertequals((get_names()).lastIndexOf('Eve') + 1, 4, 'find last complex'); - check_number_of_calls('find last complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_names() : null).lastIndexOf('Eve') + 1, 4, 'find last order complex'); - check_number_of_calls('find last order complex'); - number_of_calls = 0; - unittest_assertequals((get_names()).indexOf('Dave') + 1, 0, 'find none complex'); - check_number_of_calls('find none complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_names() : null).indexOf('Dave') + 1, 0, 'find none order complex'); - check_number_of_calls('find none order complex'); -} - -dynamic lists_get_random_item(List my_list) { - int x = new Math.Random().nextInt(my_list.length); - return my_list[x]; -} - -/// Tests the "get" block with a variable. -void test_get_lists_simple() { - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals(list.first, 'Kirk', 'get first simple'); - unittest_assertequals(list.last, 'McCoy', 'get last simple'); - unittest_assertequals(list.indexOf(lists_get_random_item(list)) + 1 > 0, true, 'get random simple'); - unittest_assertequals(list[1], 'Spock', 'get # simple'); - unittest_assertequals(list[((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); - unittest_assertequals(list[list.length - 3], 'Kirk', 'get #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(list[list.length - (0 + 3)], 'Kirk', 'get #-end order simple'); -} - -dynamic lists_get_from_end(List my_list, num x) { - x = my_list.length - x; - return my_list[x]; -} - -/// Tests the "get" block with create list call. -void test_get_lists_create_list() { - unittest_assertequals(['Kirk', 'Spock', 'McCoy'].first, 'Kirk', 'get first create list'); - unittest_assertequals(['Kirk', 'Spock', 'McCoy'].last, 'McCoy', 'get last simple'); - unittest_assertequals(['Kirk', 'Spock', 'McCoy'].indexOf(lists_get_random_item(['Kirk', 'Spock', 'McCoy'])) + 1 > 0, true, 'get random simple'); - unittest_assertequals(['Kirk', 'Spock', 'McCoy'][1], 'Spock', 'get # simple'); - unittest_assertequals(['Kirk', 'Spock', 'McCoy'][((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); - unittest_assertequals(lists_get_from_end(['Kirk', 'Spock', 'McCoy'], 3), 'Kirk', 'get #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(lists_get_from_end(['Kirk', 'Spock', 'McCoy'], 0 + 3), 'Kirk', 'get #-end order simple'); -} - -/// Creates a list for use with the get test. -dynamic get_star_wars() { - number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; - return ['Kirk', 'Spock', 'McCoy']; -} - -/// Tests the "get" block with a function call. -void test_get_lists_complex() { - list = ['Kirk', 'Spock', 'McCoy']; - number_of_calls = 0; - unittest_assertequals((get_star_wars()).first, 'Kirk', 'get first complex'); - check_number_of_calls('get first complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_star_wars() : null).first, 'Kirk', 'get first order complex'); - check_number_of_calls('get first order complex'); - number_of_calls = 0; - unittest_assertequals((get_star_wars()).last, 'McCoy', 'get last complex'); - check_number_of_calls('get last complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_star_wars() : null).last, 'McCoy', 'get last order complex'); - check_number_of_calls('get last order complex'); - number_of_calls = 0; - unittest_assertequals(list.indexOf(lists_get_random_item(get_star_wars())) + 1 > 0, true, 'get random complex'); - check_number_of_calls('get random complex'); - number_of_calls = 0; - unittest_assertequals(list.indexOf(lists_get_random_item(true ? get_star_wars() : null)) + 1 > 0, true, 'get random order complex'); - check_number_of_calls('get random order complex'); - number_of_calls = 0; - unittest_assertequals((get_star_wars())[1], 'Spock', 'get # complex'); - check_number_of_calls('get # complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_star_wars() : null)[((true ? 2 : null) - 1)], 'Spock', 'get # order complex'); - check_number_of_calls('get # order complex'); - number_of_calls = 0; - unittest_assertequals(lists_get_from_end(get_star_wars(), 3), 'Kirk', 'get #-end complex'); - check_number_of_calls('get #-end complex'); - number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(lists_get_from_end(true ? get_star_wars() : null, 0 + 3), 'Kirk', 'get #-end order complex'); - check_number_of_calls('get #-end order complex'); -} - -dynamic lists_remove_random_item(List my_list) { - int x = new Math.Random().nextInt(my_list.length); - return my_list.removeAt(x); -} - -dynamic lists_remove_from_end(List my_list, num x) { - x = my_list.length - x; - return my_list.removeAt(x); -} - -/// Tests the "get and remove" block. -void test_getRemove() { - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals(list.removeAt(0), 'Kirk', 'getremove first'); - unittest_assertequals(list, ['Spock', 'McCoy'], 'getremove first list'); - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals((true ? list : null).removeAt(0), 'Kirk', 'getremove first order'); - unittest_assertequals(list, ['Spock', 'McCoy'], 'getremove first order list'); - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals(list.removeLast(), 'McCoy', 'getremove last'); - unittest_assertequals(list, ['Kirk', 'Spock'], 'getremove last list'); - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals((true ? list : null).removeLast(), 'McCoy', 'getremove last order'); - unittest_assertequals(list, ['Kirk', 'Spock'], 'getremove last order list'); - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals(list.indexOf(lists_remove_random_item(list)) + 1 == 0, true, 'getremove random'); - unittest_assertequals(list.length, 2, 'getremove random list'); - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals(list.indexOf(lists_remove_random_item(true ? list : null)) + 1 == 0, true, 'getremove random order'); - unittest_assertequals(list.length, 2, 'getremove random order list'); - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals(list.removeAt(1), 'Spock', 'getremove #'); - unittest_assertequals(list, ['Kirk', 'McCoy'], 'getremove # list'); - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals((true ? list : null).removeAt(((true ? 2 : null) - 1)), 'Spock', 'getremove # order'); - unittest_assertequals(list, ['Kirk', 'McCoy'], 'getremove # order list'); - list = ['Kirk', 'Spock', 'McCoy']; - unittest_assertequals(list.removeAt(list.length - 3), 'Kirk', 'getremove #-end'); - unittest_assertequals(list, ['Spock', 'McCoy'], 'getremove #-end list'); - list = ['Kirk', 'Spock', 'McCoy']; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(lists_remove_from_end(true ? list : null, 0 + 3), 'Kirk', 'getremove #-end order'); - unittest_assertequals(list, ['Spock', 'McCoy'], 'getremove #-end order list'); -} - -/// Tests the "remove" block. -void test_remove() { - list = ['Kirk', 'Spock', 'McCoy']; - list.removeAt(0); - unittest_assertequals(list, ['Spock', 'McCoy'], 'remove first list'); - list = ['Kirk', 'Spock', 'McCoy']; - (true ? list : null).removeAt(0); - unittest_assertequals(list, ['Spock', 'McCoy'], 'remove first order list'); - list = ['Kirk', 'Spock', 'McCoy']; - list.removeLast(); - unittest_assertequals(list, ['Kirk', 'Spock'], 'remove last list'); - list = ['Kirk', 'Spock', 'McCoy']; - (true ? list : null).removeLast(); - unittest_assertequals(list, ['Kirk', 'Spock'], 'remove last order list'); - list = ['Kirk', 'Spock', 'McCoy']; - int tmp_x = new Math.Random().nextInt(list.length); - list.removeAt(tmp_x); - unittest_assertequals(list.length, 2, 'remove random list'); - list = ['Kirk', 'Spock', 'McCoy']; - List tmp_list = true ? list : null; - int tmp_x2 = new Math.Random().nextInt(tmp_list.length); - tmp_list.removeAt(tmp_x2); - unittest_assertequals(list.length, 2, 'remove random order list'); - list = ['Kirk', 'Spock', 'McCoy']; - list.removeAt(1); - unittest_assertequals(list, ['Kirk', 'McCoy'], 'remove # list'); - list = ['Kirk', 'Spock', 'McCoy']; - (true ? list : null).removeAt(((true ? 2 : null) - 1)); - unittest_assertequals(list, ['Kirk', 'McCoy'], 'remove # order list'); - list = ['Kirk', 'Spock', 'McCoy']; - list.removeAt(list.length - 3); - unittest_assertequals(list, ['Spock', 'McCoy'], 'remove #-end list'); - list = ['Kirk', 'Spock', 'McCoy']; - // The order for index for #-end is addition because this will catch - // errors in generators where most perform the operation ... - index. - List tmp_list2 = true ? list : null; - tmp_list2.removeAt(tmp_list2.length - (0 + 3)); - unittest_assertequals(list, ['Spock', 'McCoy'], 'remove #-end order list'); -} - -/// Tests the "set" block. -void test_set() { - list = ['Picard', 'Riker', 'Crusher']; - list[0] = 'Jean-Luc'; - unittest_assertequals(list, ['Jean-Luc', 'Riker', 'Crusher'], 'set first list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null)[0] = 'Jean-Luc'; - unittest_assertequals(list, ['Jean-Luc', 'Riker', 'Crusher'], 'set first order list'); - list = ['Picard', 'Riker', 'Crusher']; - list[list.length - 1] = 'Beverly'; - unittest_assertequals(list, ['Picard', 'Riker', 'Beverly'], 'set last list'); - list = ['Picard', 'Riker', 'Crusher']; - List tmp_list3 = (true ? list : null); - tmp_list3[tmp_list3.length - 1] = 'Beverly'; - unittest_assertequals(list, ['Picard', 'Riker', 'Beverly'], 'set last order list'); - list = ['Picard', 'Riker', 'Crusher']; - int tmp_x3 = new Math.Random().nextInt(list.length); - list[tmp_x3] = 'Data'; - unittest_assertequals(list.length, 3, 'set random list'); - list = ['Picard', 'Riker', 'Crusher']; - List tmp_list4 = (true ? list : null); - int tmp_x4 = new Math.Random().nextInt(tmp_list4.length); - tmp_list4[tmp_x4] = 'Data'; - unittest_assertequals(list.length, 3, 'set random order list'); - list = ['Picard', 'Riker', 'Crusher']; - list[2] = 'Pulaski'; - unittest_assertequals(list, ['Picard', 'Riker', 'Pulaski'], 'set # list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null)[((true ? 3 : null) - 1)] = 'Pulaski'; - unittest_assertequals(list, ['Picard', 'Riker', 'Pulaski'], 'set # order list'); - list = ['Picard', 'Riker', 'Crusher']; - list[list.length - 1] = 'Pulaski'; - unittest_assertequals(list, ['Picard', 'Riker', 'Pulaski'], 'set #-end list'); - list = ['Picard', 'Riker', 'Crusher']; - // The order for index for #-end is addition because this will catch - // errors in generators where most perform the operation ... - index. - List tmp_list5 = (true ? list : null); - tmp_list5[tmp_list5.length - (0 + 2)] = 'Pulaski'; - unittest_assertequals(list, ['Picard', 'Pulaski', 'Crusher'], 'set #-end order list'); -} - -/// Tests the "insert" block. -void test_insert() { - list = ['Picard', 'Riker', 'Crusher']; - list.insert(0, 'Data'); - unittest_assertequals(list, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null).insert(0, 'Data'); - unittest_assertequals(list, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first order list'); - list = ['Picard', 'Riker', 'Crusher']; - list.add('Data'); - unittest_assertequals(list, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null).add('Data'); - unittest_assertequals(list, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last order list'); - list = ['Picard', 'Riker', 'Crusher']; - int tmp_x5 = new Math.Random().nextInt(list.length); - list.insert(tmp_x5, 'Data'); - unittest_assertequals(list.length, 4, 'insert random list'); - list = ['Picard', 'Riker', 'Crusher']; - List tmp_list6 = (true ? list : null); - int tmp_x6 = new Math.Random().nextInt(tmp_list6.length); - tmp_list6.insert(tmp_x6, 'Data'); - unittest_assertequals(list.length, 4, 'insert random order list'); - list = ['Picard', 'Riker', 'Crusher']; - list.insert(2, 'Data'); - unittest_assertequals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null).insert(((true ? 3 : null) - 1), 'Data'); - unittest_assertequals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # order list'); - list = ['Picard', 'Riker', 'Crusher']; - list.insert(list.length - 1, 'Data'); - unittest_assertequals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert #-end list'); - list = ['Picard', 'Riker', 'Crusher']; - // The order for index for #-end is addition because this will catch - // errors in generators where most perform the operation ... - index. - List tmp_list7 = (true ? list : null); - tmp_list7.insert(tmp_list7.length - (0 + 2), 'Data'); - unittest_assertequals(list, ['Picard', 'Data', 'Riker', 'Crusher'], 'insert #-end order list'); -} - -/// Tests the "get sub-list" block with a variable. -void test_sublist_simple() { - list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; - unittest_assertequals(list.sublist(1, 3), ['Challenger', 'Discovery'], 'sublist # simple'); - unittest_assertequals(list.sublist(((true ? 2 : null) - 1), true ? 3 : null), ['Challenger', 'Discovery'], 'sublist # simple order'); - unittest_assertequals(list.sublist(list.length - 3, list.length - 1), ['Discovery', 'Atlantis'], 'sublist #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(list.sublist(list.length - (0 + 3), list.length - ((0 + 2) - 1)), ['Discovery', 'Atlantis'], 'sublist #-end simple order'); - unittest_assertequals(list.sublist(0), list, 'sublist first-last simple'); - changing_list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; - list_copy = changing_list.sublist(0); - int tmp_x7 = new Math.Random().nextInt(changing_list.length); - changing_list.removeAt(tmp_x7); - unittest_assertequals(list_copy, list, 'sublist first-last simple copy check'); - unittest_assertequals(list.sublist(1, list.length - 1), ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end simple'); - unittest_assertequals(list.sublist(list.length - 3, 4), ['Discovery', 'Atlantis'], 'sublist #-end # simple'); - unittest_assertequals(list.sublist(0, 4), ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # simple'); - unittest_assertequals(list.sublist(0, list.length - 3), ['Columbia', 'Challenger'], 'sublist first #-end simple'); - unittest_assertequals(list.sublist(3), ['Atlantis', 'Endeavour'], 'sublist # last simple'); - unittest_assertequals(list.sublist(list.length - 4), ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple'); - unittest_assertequals(list.sublist(0, list.length - 0), list, 'sublist all with # #-end simple'); - unittest_assertequals(list.sublist(list.length - 5, 5), list, 'sublist all with #-end # simple'); - // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - unittest_assertequals(list.sublist(((0 + 1) - 1), list.length - ((0 + 1) - 1)), list, 'sublist all with # #-end math simple'); -} - -/// Creates a list for use with the sublist test. -dynamic get_space_shuttles() { - number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; - return ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; -} - -List lists_get_sublist(List list, String where1, num at1, String where2, num at2) { - int getAt(String where, num at) { - if (where == 'FROM_END') { - at = list.length - 1 - at; - } else if (where == 'FIRST') { - at = 0; - } else if (where == 'LAST') { - at = list.length - 1; - } else if (where != 'FROM_START') { - throw 'Unhandled option (lists_getSublist).'; - } - return at; - } - at1 = getAt(where1, at1); - at2 = getAt(where2, at2) + 1; - return list.sublist(at1, at2); -} - -/// Tests the "get sub-list" block with a function call. -void test_sublist_complex() { - number_of_calls = 0; - unittest_assertequals((get_space_shuttles()).sublist(1, 3), ['Challenger', 'Discovery'], 'sublist # start complex'); - check_number_of_calls('sublist # start complex'); - number_of_calls = 0; - unittest_assertequals((true ? get_space_shuttles() : null).sublist(((true ? 2 : null) - 1), true ? 3 : null), ['Challenger', 'Discovery'], 'sublist # start order complex'); - check_number_of_calls('sublist # start order complex'); - number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_END', 2, 'FROM_END', 1), ['Discovery', 'Atlantis'], 'sublist # end complex'); - unittest_assertequals(number_of_calls, 1, 'sublist # end complex number of calls'); - number_of_calls = 0; - unittest_assertequals(lists_get_sublist((true ? get_space_shuttles() : null), 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), ['Discovery', 'Atlantis'], 'sublist # end order complex'); - check_number_of_calls('sublist # end order complex'); - number_of_calls = 0; - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FIRST', 0, 'LAST', 0), list, 'sublist first-last complex'); - check_number_of_calls('sublist first-last complex'); - number_of_calls = 0; - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_START', 1, 'FROM_END', 1), ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end complex'); - check_number_of_calls('sublist # #-end complex'); - number_of_calls = 0; - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_END', 2, 'FROM_START', 3), ['Discovery', 'Atlantis'], 'sublist #-end # complex'); - check_number_of_calls('sublist #-end # complex'); - number_of_calls = 0; - unittest_assertequals((get_space_shuttles()).sublist(0, 4), ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # complex'); - check_number_of_calls('sublist first # complex'); - number_of_calls = 0; - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FIRST', 0, 'FROM_END', 3), ['Columbia', 'Challenger'], 'sublist first #-end complex'); - check_number_of_calls('sublist first #-end complex'); - number_of_calls = 0; - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_START', 3, 'LAST', 0), ['Atlantis', 'Endeavour'], 'sublist # last complex'); - check_number_of_calls('sublist # last complex'); - number_of_calls = 0; - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_END', 3, 'LAST', 0), ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple'); - check_number_of_calls('sublist #-end last simple'); - number_of_calls = 0; - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_START', 0, 'FROM_END', 0), list, 'sublist all with # #-end complex'); - check_number_of_calls('sublist all with # #-end complex'); - number_of_calls = 0; - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_END', 4, 'FROM_START', 4), list, 'sublist all with #-end # complex'); - check_number_of_calls('sublist all with #-end # complex'); - number_of_calls = 0; - // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), list, 'sublist all with # #-end math complex'); - check_number_of_calls('sublist all with # #-end math complex'); -} - -/// Tests the "join" block. -void test_join() { - list = ['Vulcan', 'Klingon', 'Borg']; - unittest_assertequals(list.join(','), 'Vulcan,Klingon,Borg', 'join'); - unittest_assertequals((true ? list : null).join(','), 'Vulcan,Klingon,Borg', 'join order'); -} - -/// Tests the "split" block. -void test_split() { - text = 'Vulcan,Klingon,Borg'; - unittest_assertequals(text.split(','), ['Vulcan', 'Klingon', 'Borg'], 'split'); - unittest_assertequals((true ? text : null).split(','), ['Vulcan', 'Klingon', 'Borg'], 'split order'); -} - -List lists_sort(List list, String type, int direction) { - var compareFuncs = { - 'NUMERIC': (a, b) => (direction * a.compareTo(b)).toInt(), - 'TEXT': (a, b) => direction * a.toString().compareTo(b.toString()), - 'IGNORE_CASE': - (a, b) => direction * - a.toString().toLowerCase().compareTo(b.toString().toLowerCase()) - }; - list = new List.from(list); - var compare = compareFuncs[type]; - list.sort(compare); - return list; -} - -/// Tests the "alphabetic sort" block. -void test_sort_alphabetic() { - list = ['Vulcan', 'klingon', 'Borg']; - unittest_assertequals(lists_sort(list, "TEXT", 1), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending'); - unittest_assertequals(lists_sort(true ? list : null, "TEXT", 1), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending order'); -} - -/// Tests the "alphabetic sort ignore case" block. -void test_sort_ignoreCase() { - list = ['Vulcan', 'klingon', 'Borg']; - unittest_assertequals(lists_sort(list, "IGNORE_CASE", 1), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending'); - unittest_assertequals(lists_sort(true ? list : null, "IGNORE_CASE", 1), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending order'); -} - -/// Tests the "numeric sort" block. -void test_sort_numeric() { - list = [8, 18, -1]; - unittest_assertequals(lists_sort(list, "NUMERIC", -1), [18, 8, -1], 'sort numeric descending'); - unittest_assertequals(lists_sort(true ? list : null, "NUMERIC", -1), [18, 8, -1], 'sort numeric descending order'); -} - -/// Tests the "list reverse" block. -void test_lists_reverse() { - list = [8, 18, -1, 64]; - unittest_assertequals(new List.from(list.reversed), [64, -1, 18, 8], 'reverse a copy'); - unittest_assertequals(list, [8, 18, -1, 64], 'reverse a copy original'); - list = []; - unittest_assertequals(new List.from(list.reversed), [], 'empty list'); -} - -/// Describe this function... -void test_colour_picker() { - unittest_assertequals('#ff6600', '#ff6600', 'static colour'); -} - -String colour_rgb(num r, num g, num b) { - num rn = (Math.max(Math.min(r, 100), 0) * 2.55).round(); - String rs = rn.toInt().toRadixString(16); - rs = '0$rs'; - rs = rs.substring(rs.length - 2); - num gn = (Math.max(Math.min(g, 100), 0) * 2.55).round(); - String gs = gn.toInt().toRadixString(16); - gs = '0$gs'; - gs = gs.substring(gs.length - 2); - num bn = (Math.max(Math.min(b, 100), 0) * 2.55).round(); - String bs = bn.toInt().toRadixString(16); - bs = '0$bs'; - bs = bs.substring(bs.length - 2); - return '#$rs$gs$bs'; -} - -/// Describe this function... -void test_rgb() { - unittest_assertequals(colour_rgb(100, 40, 0), '#ff6600', 'from rgb'); -} - -String colour_random() { - String hex = '0123456789abcdef'; - var rnd = new Math.Random(); - return '#${hex[rnd.nextInt(16)]}${hex[rnd.nextInt(16)]}' - '${hex[rnd.nextInt(16)]}${hex[rnd.nextInt(16)]}' - '${hex[rnd.nextInt(16)]}${hex[rnd.nextInt(16)]}'; -} - -/// Describe this function... -void test_colour_random() { - for (int count4 = 0; count4 < 100; count4++) { - item = colour_random(); - unittest_assertequals(item.length, 7, ['length of random colour string: ',item].join()); - unittest_assertequals(item[0], '#', ['format of random colour string: ',item].join()); - for (i = 1; i <= 6; i++) { - unittest_assertequals(0 != 'abcdefABDEF0123456789'.indexOf(item[((i + 1) - 1)]) + 1, true, ['contents of random colour string: ',item,' at index: ',i + 1].join()); - } - } -} - -String colour_blend(String c1, String c2, num ratio) { - ratio = Math.max(Math.min(ratio, 1), 0); - int r1 = int.parse('0x${c1.substring(1, 3)}'); - int g1 = int.parse('0x${c1.substring(3, 5)}'); - int b1 = int.parse('0x${c1.substring(5, 7)}'); - int r2 = int.parse('0x${c2.substring(1, 3)}'); - int g2 = int.parse('0x${c2.substring(3, 5)}'); - int b2 = int.parse('0x${c2.substring(5, 7)}'); - num rn = (r1 * (1 - ratio) + r2 * ratio).round(); - String rs = rn.toInt().toRadixString(16); - num gn = (g1 * (1 - ratio) + g2 * ratio).round(); - String gs = gn.toInt().toRadixString(16); - num bn = (b1 * (1 - ratio) + b2 * ratio).round(); - String bs = bn.toInt().toRadixString(16); - rs = '0$rs'; - rs = rs.substring(rs.length - 2); - gs = '0$gs'; - gs = gs.substring(gs.length - 2); - bs = '0$bs'; - bs = bs.substring(bs.length - 2); - return '#$rs$gs$bs'; -} - -/// Describe this function... -void test_blend() { - unittest_assertequals(colour_blend('#ff0000', colour_rgb(100, 40, 0), 0.4), '#ff2900', 'blend'); -} - -/// Describe this function... -void test_procedure() { - procedure_1(8, 2); - unittest_assertequals(proc_z, 4, 'procedure with global'); - proc_w = false; - procedure_2(false); - unittest_assertequals(proc_w, true, 'procedure no return'); - proc_w = false; - procedure_2(true); - unittest_assertequals(proc_w, false, 'procedure return'); -} - -/// Describe this function... -void procedure_1(proc_x, proc_y) { - proc_z = proc_x / proc_y; -} - -/// Describe this function... -void procedure_2(proc_x) { - if (proc_x) { - return; - } - proc_w = true; -} - -/// Describe this function... -void test_function() { - unittest_assertequals(function_1(2, 3), -1, 'function with arguments'); - unittest_assertequals(func_z, 'side effect', 'function with side effect'); - func_a = 'unchanged'; - func_c = 'global'; - unittest_assertequals(function_2(2), '3global', 'function with global'); - unittest_assertequals(func_a, 'unchanged', 'function with scope'); - unittest_assertequals(function_3(true), true, 'function return'); - unittest_assertequals(function_3(false), false, 'function no return'); -} - -/// Describe this function... -dynamic function_1(func_x, func_y) { - func_z = 'side effect'; - return func_x - func_y; -} - -/// Describe this function... -dynamic function_2(func_a) { - func_a = (func_a is num ? func_a : 0) + 1; - return [func_a,func_c].join(); -} - -/// Describe this function... -dynamic function_3(func_a) { - if (func_a) { - return true; - } - return false; -} - -/// Describe this function... -dynamic recurse(n) { - if (n > 0) { - text = [recurse(n - 1),n,recurse(n - 1)].join(); - } else { - text = '-'; - } - return text; -} - - -main() { - unittestResults = []; - print('\n====================\n\nRunning suite: Logic'); - unittest_assertequals(true, true, 'True'); - unittest_assertequals(false, false, 'False'); - unittest_assertequals(!false, true, 'Not true'); - unittest_assertequals(!true, false, 'Not false'); - test_if(); - test_ifelse(); - test_equalities(); - test_and(); - test_or(); - test_ternary(); - print(unittest_report()); - unittestResults = null; - - unittestResults = []; - print('\n====================\n\nRunning suite: Loops 1'); - test_repeat(); - test_repeat_ext(); - test_while(); - test_foreach(); - print(unittest_report()); - unittestResults = null; - - unittestResults = []; - print('\n====================\n\nRunning suite: Loops 2'); - test_count_loops(); - test_count_by(); - print(unittest_report()); - unittestResults = null; - - unittestResults = []; - print('\n====================\n\nRunning suite: Loops 3'); - test_break(); - test_continue(); - print(unittest_report()); - unittestResults = null; - - unittestResults = []; - print('\n====================\n\nRunning suite: Math'); - test_arithmetic(); - test_single(); - test_trig(); - test_constant(); - test_change(); - test_number_properties(); - test_round(); - test_operations_on_list(); - test_constraint(); - test_mod(); - test_random_integer(); - test_random_fraction(); - test_atan2(); - print(unittest_report()); - unittestResults = null; - - unittestResults = []; - print('\n====================\n\nRunning suite: Text'); - test_text_length(); - test_empty_text(); - test_create_text(); - test_append(); - test_find_text_simple(); - test_find_text_complex(); - test_get_text_simple(); - test_get_text_complex(); - test_substring_simple(); - test_substring_complex(); - test_case(); - test_trim(); - test_count_text(); - test_text_reverse(); - test_replace(); - test_multiline(); - print(unittest_report()); - unittestResults = null; - - unittestResults = []; - print('\n====================\n\nRunning suite: Lists'); - test_create_lists(); - test_lists_empty(); - test_lists_length(); - test_find_lists_simple(); - test_find_lists_complex(); - test_get_lists_simple(); - test_get_lists_create_list(); - test_get_lists_complex(); - test_getRemove(); - test_remove(); - test_set(); - test_insert(); - test_sublist_simple(); - test_sublist_complex(); - test_join(); - test_split(); - test_sort_alphabetic(); - test_sort_ignoreCase(); - test_sort_numeric(); - test_lists_reverse(); - print(unittest_report()); - unittestResults = null; - - unittestResults = []; - print('\n====================\n\nRunning suite: Colour'); - test_colour_picker(); - test_blend(); - test_rgb(); - test_colour_random(); - print(unittest_report()); - unittestResults = null; - - unittestResults = []; - print('\n====================\n\nRunning suite: Variables'); - item = 123; - unittest_assertequals(item, 123, 'variable'); - if2 = 123; - unittest_assertequals(if2, 123, 'reserved variable'); - print(unittest_report()); - unittestResults = null; - - // Intentionally non-connected variable. - naked; - - unittestResults = []; - print('\n====================\n\nRunning suite: Functions'); - test_procedure(); - test_function(); - unittest_assertequals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse'); - print(unittest_report()); - unittestResults = null; +import 'dart:math' as Math; + +var unittestResults, test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy; + +String unittest_report() { + // Create test report. + List report = []; + StringBuffer summary = new StringBuffer(); + int fails = 0; + for (int x = 0; x < unittestResults.length; x++) { + if (unittestResults[x][0]) { + summary.write("."); + } else { + summary.write("F"); + fails++; + report.add(""); + report.add("FAIL: ${unittestResults[x][2]}"); + report.add(unittestResults[x][1]); + } + } + report.insert(0, summary.toString()); + report.add(""); + report.add("Ran ${unittestResults.length} tests."); + report.add(""); + if (fails != 0) { + report.add("FAILED (failures=$fails)"); + } else { + report.add("OK"); + } + return report.join("\n"); +} + +void unittest_assertequals(dynamic actual, dynamic expected, String message) { + // Asserts that a value equals another value. + if (unittestResults == null) { + throw "Orphaned assert: ${message}"; + } + bool equals(a, b) { + if (a == b) { + return true; + } else if (a is List && b is List) { + if (a.length != b.length) { + return false; + } + for (num i = 0; i < a.length; i++) { + if (!equals(a[i], b[i])) { + return false; + } + } + return true; + } + return false; + } + if (equals(actual, expected)) { + unittestResults.add([true, "OK", message]); + } else { + unittestResults.add([false, "Expected: $expected\nActual: $actual", message]); + } +} + +void unittest_fail(String message) { + // Always assert an error. + if (unittestResults == null) { + throw "Orphaned assert fail: ${message}"; + } + unittestResults.add([false, "Fail.", message]); +} + +/// Describe this function... +void test_if() { + if (false) { + unittest_fail('if false'); + } + ok = false; + if (true) { + ok = true; + } + unittest_assertequals(ok, true, 'if true'); + ok = false; + if (false) { + unittest_fail('if/else false'); + } else { + ok = true; + } + unittest_assertequals(ok, true, 'if/else false'); + ok = false; + if (true) { + ok = true; + } else { + unittest_fail('if/else true'); + } + unittest_assertequals(ok, true, 'if/else true'); + ok = false; + if (false) { + unittest_fail('elseif 1'); + }else if (true) { + ok = true; + }else if (true) { + unittest_fail('elseif 2'); + } else { + unittest_fail('elseif 3'); + } + unittest_assertequals(ok, true, 'elseif 4'); +} + +/// Describe this function... +void test_ifelse() { + ok = false; + if (true) { + ok = true; + } else { + unittest_fail('ifelse true'); + } + unittest_assertequals(ok, true, 'ifelse true'); + ok = false; + if (false) { + unittest_fail('ifelse false'); + } else { + ok = true; + } + unittest_assertequals(ok, true, 'ifelse false'); +} + +/// Describe this function... +void test_equalities() { + unittest_assertequals(2 == 2, true, 'Equal yes'); + unittest_assertequals(3 == 4, false, 'Equal no'); + unittest_assertequals(5 != 6, true, 'Not equal yes'); + unittest_assertequals(3 == 4, false, 'Not equal no'); + unittest_assertequals(5 < 6, true, 'Smaller yes'); + unittest_assertequals(7 < 7, false, 'Smaller no'); + unittest_assertequals(9 > 8, true, 'Greater yes'); + unittest_assertequals(10 > 10, false, 'Greater no'); + unittest_assertequals(11 <= 11, true, 'Smaller-equal yes'); + unittest_assertequals(13 <= 12, false, 'Smaller-equal no'); + unittest_assertequals(14 >= 14, true, 'Greater-equal yes'); + unittest_assertequals(15 >= 16, false, 'Greater-equal no'); +} + +/// Describe this function... +void test_and() { + unittest_assertequals(true && true, true, 'And true/true'); + unittest_assertequals(false && true, false, 'And false/true'); + unittest_assertequals(true && false, false, 'And true/false'); + unittest_assertequals(false && false, false, 'And false/false'); +} + +/// Describe this function... +void test_or() { + unittest_assertequals(true || true, true, 'Or true/true'); + unittest_assertequals(false || true, true, 'Or false/true'); + unittest_assertequals(true || false, true, 'Or true/false'); + unittest_assertequals(false || false, false, 'Or false/false'); +} + +/// Describe this function... +void test_ternary() { + unittest_assertequals(true ? 42 : 99, 42, 'if true'); + unittest_assertequals(false ? 42 : 99, 99, 'if true'); +} + +/// Describe this function... +void test_foreach() { + log = ''; + for (var x in ['a', 'b', 'c']) { + log = [log, x].join(); + } + unittest_assertequals(log, 'abc', 'for loop'); +} + +/// Describe this function... +void test_repeat() { + count = 0; + for (int count2 = 0; count2 < 10; count2++) { + count = (count is num ? count : 0) + 1; + } + unittest_assertequals(count, 10, 'repeat 10'); +} + +/// Describe this function... +void test_while() { + while (false) { + unittest_fail('while 0'); + } + while (!true) { + unittest_fail('until 0'); + } + count = 1; + while (count != 10) { + count = (count is num ? count : 0) + 1; + } + unittest_assertequals(count, 10, 'while 10'); + count = 1; + while (!(count == 10)) { + count = (count is num ? count : 0) + 1; + } + unittest_assertequals(count, 10, 'until 10'); +} + +/// Describe this function... +void test_repeat_ext() { + count = 0; + for (int count3 = 0; count3 < 10; count3++) { + count = (count is num ? count : 0) + 1; + } + unittest_assertequals(count, 10, 'repeat 10'); +} + +/// Describe this function... +void test_count_by() { + log = ''; + for (x = 1; x <= 8; x += 2) { + log = [log, x].join(); + } + unittest_assertequals(log, '1357', 'count up ints'); + log = ''; + for (x = 8; x >= 1; x -= 2) { + log = [log, x].join(); + } + unittest_assertequals(log, '8642', 'count down ints'); + loglist = []; + for (x = 1; x <= 8; x += 1.5) { + loglist.add(x); + } + unittest_assertequals(loglist, [1, 2.5, 4, 5.5, 7], 'count with floats'); + loglist = []; + var x_start = 1 + 0; + var x_end = 8 + 0; + num x_inc = (1 - 2).abs(); + if (x_start > x_end) { + x_inc = -x_inc; + } + for (x = x_start; x_inc >= 0 ? x <= x_end : x >= x_end; x += x_inc) { + loglist.add(x); + } + unittest_assertequals(loglist, [1, 2, 3, 4, 5, 6, 7, 8], 'count up non-trivial ints'); + loglist = []; + var x_start2 = 8 + 0; + var x_end2 = 1 + 0; + num x_inc2 = 2; + if (x_start2 > x_end2) { + x_inc2 = -x_inc2; + } + for (x = x_start2; x_inc2 >= 0 ? x <= x_end2 : x >= x_end2; x += x_inc2) { + loglist.add(x); + } + unittest_assertequals(loglist, [8, 6, 4, 2], 'count down non-trivial ints'); + loglist = []; + var x_start3 = 5 + 0.5; + var x_end3 = 1 + 0; + num x_inc3 = (1 + 0).abs(); + if (x_start3 > x_end3) { + x_inc3 = -x_inc3; + } + for (x = x_start3; x_inc3 >= 0 ? x <= x_end3 : x >= x_end3; x += x_inc3) { + loglist.add(x); + } + unittest_assertequals(loglist, [5.5, 4.5, 3.5, 2.5, 1.5], 'count with floats'); +} + +/// Describe this function... +void test_count_loops() { + log = ''; + for (x = 1; x <= 8; x++) { + log = [log, x].join(); + } + unittest_assertequals(log, '12345678', 'count up'); + log = ''; + for (x = 8; x >= 1; x--) { + log = [log, x].join(); + } + unittest_assertequals(log, '87654321', 'count down'); + loglist = []; + var x_start4 = 1 + 0; + var x_end4 = 4 + 0; + num x_inc4 = 1; + if (x_start4 > x_end4) { + x_inc4 = -x_inc4; + } + for (x = x_start4; x_inc4 >= 0 ? x <= x_end4 : x >= x_end4; x += x_inc4) { + loglist.add(x); + } + unittest_assertequals(loglist, [1, 2, 3, 4], 'count up non-trivial'); + loglist = []; + var x_start5 = 3 + 1; + var x_end5 = 1 + 0; + num x_inc5 = 1; + if (x_start5 > x_end5) { + x_inc5 = -x_inc5; + } + for (x = x_start5; x_inc5 >= 0 ? x <= x_end5 : x >= x_end5; x += x_inc5) { + loglist.add(x); + } + unittest_assertequals(loglist, [4, 3, 2, 1], 'count down non-trivial'); +} + +/// Describe this function... +void test_continue() { + log = ''; + count = 0; + while (count != 8) { + count = (count is num ? count : 0) + 1; + if (count == 5) { + continue; + } + log = [log, count].join(); + } + unittest_assertequals(log, '1234678', 'while continue'); + log = ''; + count = 0; + while (!(count == 8)) { + count = (count is num ? count : 0) + 1; + if (count == 5) { + continue; + } + log = [log, count].join(); + } + unittest_assertequals(log, '1234678', 'until continue'); + log = ''; + for (x = 1; x <= 8; x++) { + if (x == 5) { + continue; + } + log = [log, x].join(); + } + unittest_assertequals(log, '1234678', 'count continue'); + log = ''; + for (var x in ['a', 'b', 'c', 'd']) { + if (x == 'c') { + continue; + } + log = [log, x].join(); + } + unittest_assertequals(log, 'abd', 'for continue'); +} + +/// Describe this function... +void test_break() { + count = 1; + while (count != 10) { + if (count == 5) { + break; + } + count = (count is num ? count : 0) + 1; + } + unittest_assertequals(count, 5, 'while break'); + count = 1; + while (!(count == 10)) { + if (count == 5) { + break; + } + count = (count is num ? count : 0) + 1; + } + unittest_assertequals(count, 5, 'until break'); + log = ''; + for (x = 1; x <= 8; x++) { + if (x == 5) { + break; + } + log = [log, x].join(); + } + unittest_assertequals(log, '1234', 'count break'); + log = ''; + for (var x in ['a', 'b', 'c', 'd']) { + if (x == 'c') { + break; + } + log = [log, x].join(); + } + unittest_assertequals(log, 'ab', 'for break'); +} + +/// Tests the "single" block. +void test_single() { + unittest_assertequals(Math.sqrt(25), 5, 'sqrt'); + unittest_assertequals((-25).abs(), 25, 'abs'); + unittest_assertequals(-(-25), 25, 'negate'); + unittest_assertequals(Math.log(1), 0, 'ln'); + unittest_assertequals(Math.log(100) / Math.log(10), 2, 'log10'); + unittest_assertequals(Math.exp(2), 7.38905609893065, 'exp'); + unittest_assertequals(Math.pow(10,2), 100, 'power10'); +} + +/// Tests the "arithmetic" block for all operations and checks +/// parenthesis are properly generated for different orders. +void test_arithmetic() { + unittest_assertequals(1 + 2, 3, 'add'); + unittest_assertequals(1 - 2, -1, 'subtract'); + unittest_assertequals(1 - (0 + 2), -1, 'subtract order with add'); + unittest_assertequals(1 - (0 - 2), 3, 'subtract order with subtract'); + unittest_assertequals(4 * 2.5, 10, 'multiply'); + unittest_assertequals(4 * (0 + 2.5), 10, 'multiply order'); + unittest_assertequals(8.2 / -5, -1.64, 'divide'); + unittest_assertequals(8.2 / (0 + -5), -1.64, 'divide order'); + unittest_assertequals(Math.pow(10, 4), 10000, 'power'); + unittest_assertequals(Math.pow(10, 0 + 4), 10000, 'power order'); +} + +/// Tests the "trig" block. +void test_trig() { + unittest_assertequals(Math.sin(90 / 180 * Math.pi), 1, 'sin'); + unittest_assertequals(Math.cos(180 / 180 * Math.pi), -1, 'cos'); + unittest_assertequals(Math.tan(0 / 180 * Math.pi), 0, 'tan'); + unittest_assertequals(Math.asin(-1) / Math.pi * 180, -90, 'asin'); + unittest_assertequals(Math.acos(1) / Math.pi * 180, 0, 'acos'); + unittest_assertequals(Math.atan(1) / Math.pi * 180, 45, 'atan'); +} + +/// Tests the "constant" blocks. +void test_constant() { + unittest_assertequals((Math.pi * 1000).floor(), 3141, 'const pi'); + unittest_assertequals((Math.e * 1000).floor(), 2718, 'const e'); + unittest_assertequals((((1 + Math.sqrt(5)) / 2) * 1000).floor(), 1618, 'const golden'); + unittest_assertequals((Math.sqrt2 * 1000).floor(), 1414, 'const sqrt 2'); + unittest_assertequals((Math.sqrt1_2 * 1000).floor(), 707, 'const sqrt 0.5'); + unittest_assertequals(9999 < double.infinity, true, 'const infinity'); +} + +bool math_isPrime(n) { + // https://en.wikipedia.org/wiki/Primality_test#Naive_methods + if (n == 2 || n == 3) { + return true; + } + // False if n is null, negative, is 1, or not whole. + // And false if n is divisible by 2 or 3. + if (n == null || n <= 1 || n % 1 != 0 || n % 2 == 0 || n % 3 == 0) { + return false; + } + // Check all the numbers of form 6k +/- 1, up to sqrt(n). + for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) { + if (n % (x - 1) == 0 || n % (x + 1) == 0) { + return false; + } + } + return true; +} + +/// Tests the "number property" blocks. +void test_number_properties() { + unittest_assertequals(42 % 2 == 0, true, 'even'); + unittest_assertequals(42.1 % 2 == 1, false, 'odd'); + unittest_assertequals(math_isPrime(5), true, 'prime 5'); + unittest_assertequals(math_isPrime(5 + 2), true, 'prime 5 + 2 (extra parentheses)'); + unittest_assertequals(math_isPrime(25), false, 'prime 25'); + unittest_assertequals(math_isPrime(-31.1), false, 'prime negative'); + unittest_assertequals(Math.pi % 1 == 0, false, 'whole'); + unittest_assertequals(double.infinity > 0, true, 'positive'); + unittest_assertequals(5 + 2 > 0, true, '5 + 2 is positive (extra parentheses)'); + unittest_assertequals(-42 < 0, true, 'negative'); + unittest_assertequals(3 + 2 < 0, false, '3 + 2 is negative (extra parentheses)'); + unittest_assertequals(42 % 2 == 0, true, 'divisible'); + unittest_assertequals(!false, true, 'divisible by 0'); +} + +/// Tests the "round" block. +void test_round() { + unittest_assertequals(42.42.round(), 42, 'round'); + unittest_assertequals((-42.42).ceil(), -42, 'round up'); + unittest_assertequals(42.42.floor(), 42, 'round down'); +} + +/// Tests the "change" block. +void test_change() { + varToChange = 100; + varToChange = (varToChange is num ? varToChange : 0) + 42; + unittest_assertequals(varToChange, 142, 'change'); +} + +num math_sum(List myList) { + num sumVal = 0; + myList.forEach((num entry) {sumVal += entry;}); + return sumVal; +} + +num math_min(List myList) { + if (myList.isEmpty) return null; + num minVal = myList[0]; + myList.forEach((num entry) {minVal = Math.min(minVal, entry);}); + return minVal; +} + +num math_max(List myList) { + if (myList.isEmpty) return null; + num maxVal = myList[0]; + myList.forEach((num entry) {maxVal = Math.max(maxVal, entry);}); + return maxVal; +} + +num math_mean(List myList) { + // First filter list for numbers only. + List localList = new List.from(myList); + localList.removeWhere((a) => a is! num); + if (localList.isEmpty) return null; + num sumVal = 0; + localList.forEach((var entry) {sumVal += entry;}); + return sumVal / localList.length; +} + +num math_median(List myList) { + // First filter list for numbers only, then sort, then return middle value + // or the average of two middle values if list has an even number of elements. + List localList = new List.from(myList); + localList.removeWhere((a) => a is! num); + if (localList.isEmpty) return null; + localList.sort((a, b) => (a - b)); + int index = localList.length ~/ 2; + if (localList.length % 2 == 1) { + return localList[index]; + } else { + return (localList[index - 1] + localList[index]) / 2; + } +} + +List math_modes(List values) { + List modes = []; + List counts = []; + int maxCount = 0; + for (int i = 0; i < values.length; i++) { + var value = values[i]; + bool found = false; + int thisCount; + for (int j = 0; j < counts.length; j++) { + if (counts[j][0] == value) { + thisCount = ++counts[j][1]; + found = true; + break; + } + } + if (!found) { + counts.add([value, 1]); + thisCount = 1; + } + maxCount = Math.max(thisCount, maxCount); + } + for (int j = 0; j < counts.length; j++) { + if (counts[j][1] == maxCount) { + modes.add(counts[j][0]); + } + } + return modes; +} + +num math_standard_deviation(List myList) { + // First filter list for numbers only. + List numbers = new List.from(myList); + numbers.removeWhere((a) => a is! num); + if (numbers.isEmpty) return null; + num n = numbers.length; + num sum = 0; + numbers.forEach((x) => sum += x); + num mean = sum / n; + num sumSquare = 0; + numbers.forEach((x) => sumSquare += Math.pow(x - mean, 2)); + return Math.sqrt(sumSquare / n); +} + +dynamic math_random_item(List myList) { + int x = new Math.Random().nextInt(myList.length); + return myList[x]; +} + +/// Tests the "list operation" blocks. +void test_operations_on_list() { + unittest_assertequals(math_sum([3, 4, 5]), 12, 'sum'); + unittest_assertequals(math_min([3, 4, 5]), 3, 'min'); + unittest_assertequals(math_max([3, 4, 5]), 5, 'max'); + unittest_assertequals(math_mean([3, 4, 5]), 4, 'average'); + unittest_assertequals(math_median([3, 4, 5, 1]), 3.5, 'median'); + unittest_assertequals(math_modes([3, 4, 3]), [3], 'modes'); + unittest_assertequals(math_modes([3, 4, 3, 1, 4]), [3, 4], 'modes multiple'); + unittest_assertequals(math_standard_deviation([3, 3, 3]), 0, 'standard dev'); + unittest_assertequals([3, 4, 5].indexOf(math_random_item([3, 4, 5])) + 1 > 0, true, 'random'); +} + +/// Tests the "mod" block. +void test_mod() { + unittest_assertequals(42 % 5, 2, 'mod'); +} + +/// Tests the "constrain" block. +void test_constraint() { + unittest_assertequals(Math.min(Math.max(100, 0), 42), 42, 'constraint'); +} + +int math_random_int(num a, num b) { + if (a > b) { + // Swap a and b to ensure a is smaller. + num c = a; + a = b; + b = c; + } + return new Math.Random().nextInt(b - a + 1) + a; +} + +/// Tests the "random integer" block. +void test_random_integer() { + rand = math_random_int(5, 10); + unittest_assertequals(rand >= 5 && rand <= 10, true, 'randRange'); + unittest_assertequals(rand % 1 == 0, true, 'randInteger'); +} + +/// Tests the "random fraction" block. +void test_random_fraction() { + rand = new Math.Random().nextDouble(); + unittest_assertequals(rand >= 0 && rand <= 1, true, 'randFloat'); +} + +/// Describe this function... +void test_atan2() { + unittest_assertequals(Math.atan2(5, -5) / Math.pi * 180, 135, 'atan2'); + unittest_assertequals(Math.atan2(-12, 0) / Math.pi * 180, -90, 'atan2'); +} + +/// Checks that the number of calls is one in order +/// to confirm that a function was only called once. +void check_number_of_calls(test_name) { + test_name = [test_name, 'number of calls'].join(); + unittest_assertequals(number_of_calls, 1, test_name); +} + +/// Tests the "create text with" block with varying number of inputs. +void test_create_text() { + unittest_assertequals('', '', 'no text'); + unittest_assertequals('Hello'.toString(), 'Hello', 'create single'); + unittest_assertequals((-1).toString(), '-1', 'create single number'); + unittest_assertequals(['K',9].join(), 'K9', 'create double text'); + unittest_assertequals([4,2].join(), '42', 'create double text numbers'); + unittest_assertequals([1,2,3].join(), '123', 'create triple'); + unittest_assertequals([1,true ? 0 : null,'M'].join(), '10M', 'create order'); +} + +/// Creates an empty string for use with the empty test. +dynamic get_empty() { + return ''; +} + +/// Tests the "is empty" block". +void test_empty_text() { + unittest_assertequals('Google'.isEmpty, false, 'not empty'); + unittest_assertequals(''.isEmpty, true, 'empty'); + unittest_assertequals((get_empty()).isEmpty, true, 'empty complex'); + unittest_assertequals((true ? '' : null).isEmpty, true, 'empty order'); +} + +/// Tests the "length" block. +void test_text_length() { + unittest_assertequals(''.length, 0, 'zero length'); + unittest_assertequals('Google'.length, 6, 'non-zero length'); + unittest_assertequals((true ? 'car' : null).length, 3, 'length order'); +} + +/// Tests the "append text" block with different types of parameters. +void test_append() { + item = 'Miserable'; + item = [item, 'Failure'].join(); + unittest_assertequals(item, 'MiserableFailure', 'append text'); + item = 12; + item = [item, 34].join(); + unittest_assertequals(item, '1234', 'append number'); + item = 'Something '; + item = [item, true ? 'Positive' : null].join(); + unittest_assertequals(item, 'Something Positive', 'append order'); +} + +/// Tests the "find" block with a variable. +void test_find_text_simple() { + text = 'Banana'; + unittest_assertequals(text.indexOf('an') + 1, 2, 'find first simple'); + unittest_assertequals(text.lastIndexOf('an') + 1, 4, 'find last simple'); + unittest_assertequals(text.indexOf('Peel') + 1, 0, 'find none simple'); +} + +/// Creates a string for use with the find test. +dynamic get_fruit() { + number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; + return 'Banana'; +} + +/// Tests the "find" block with a function call. +void test_find_text_complex() { + number_of_calls = 0; + unittest_assertequals((get_fruit()).indexOf('an') + 1, 2, 'find first complex'); + check_number_of_calls('find first complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_fruit() : null).indexOf('an') + 1, 2, 'find first order complex'); + check_number_of_calls('find first order complex'); + number_of_calls = 0; + unittest_assertequals((get_fruit()).lastIndexOf('an') + 1, 4, 'find last complex'); + check_number_of_calls('find last complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_fruit() : null).lastIndexOf('an') + 1, 4, 'find last order complex'); + check_number_of_calls('find last order complex'); + number_of_calls = 0; + unittest_assertequals((get_fruit()).indexOf('Peel') + 1, 0, 'find none complex'); + check_number_of_calls('find none complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_fruit() : null).indexOf('Peel') + 1, 0, 'find none order complex'); + check_number_of_calls('find none order complex'); +} + +String text_get_from_end(String text, num x) { + return text[text.length - x]; +} + +String text_random_letter(String text) { + int x = new Math.Random().nextInt(text.length); + return text[x]; +} + +/// Tests the "get letter" block with a variable. +void test_get_text_simple() { + text = 'Blockly'; + unittest_assertequals(text[0], 'B', 'get first simple'); + unittest_assertequals(text_get_from_end(text, 1), 'y', 'get last simple'); + unittest_assertequals(text.indexOf(text_random_letter(text)) + 1 > 0, true, 'get random simple'); + unittest_assertequals(text[2], 'o', 'get # simple'); + unittest_assertequals(text[((true ? 3 : null) - 1)], 'o', 'get # order simple'); + unittest_assertequals(text_get_from_end(text, 3), 'k', 'get #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(text_get_from_end(text, 0 + 3), 'k', 'get #-end order simple'); +} + +/// Creates a string for use with the get test. +dynamic get_Blockly() { + number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; + return 'Blockly'; +} + +/// Tests the "get letter" block with a function call. +void test_get_text_complex() { + text = 'Blockly'; + number_of_calls = 0; + unittest_assertequals((get_Blockly())[0], 'B', 'get first complex'); + check_number_of_calls('get first complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_Blockly() : null)[0], 'B', 'get first order complex'); + check_number_of_calls('get first order complex'); + number_of_calls = 0; + unittest_assertequals(text_get_from_end(get_Blockly(), 1), 'y', 'get last complex'); + check_number_of_calls('get last complex'); + number_of_calls = 0; + unittest_assertequals(text_get_from_end(true ? get_Blockly() : null, 1), 'y', 'get last order complex'); + check_number_of_calls('get last order complex'); + number_of_calls = 0; + unittest_assertequals(text.indexOf(text_random_letter(get_Blockly())) + 1 > 0, true, 'get random complex'); + check_number_of_calls('get random complex'); + number_of_calls = 0; + unittest_assertequals(text.indexOf(text_random_letter(true ? get_Blockly() : null)) + 1 > 0, true, 'get random order complex'); + check_number_of_calls('get random order complex'); + number_of_calls = 0; + unittest_assertequals((get_Blockly())[2], 'o', 'get # complex'); + check_number_of_calls('get # complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_Blockly() : null)[((true ? 3 : null) - 1)], 'o', 'get # order complex'); + check_number_of_calls('get # order complex'); + number_of_calls = 0; + unittest_assertequals(text_get_from_end(get_Blockly(), 3), 'k', 'get #-end complex'); + check_number_of_calls('get #-end complex'); + number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(text_get_from_end(true ? get_Blockly() : null, 0 + 3), 'k', 'get #-end order complex'); + check_number_of_calls('get #-end order complex'); +} + +/// Creates a string for use with the substring test. +dynamic get_numbers() { + number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; + return '123456789'; +} + +/// Tests the "get substring" block with a variable. +void test_substring_simple() { + text = '123456789'; + unittest_assertequals(text.substring(1, 3), '23', 'substring # simple'); + unittest_assertequals(text.substring(((true ? 2 : null) - 1), true ? 3 : null), '23', 'substring # simple order'); + unittest_assertequals(text.substring(text.length - 3, text.length - 1), '78', 'substring #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(text.substring(text.length - (0 + 3), text.length - ((0 + 2) - 1)), '78', 'substring #-end simple order'); + unittest_assertequals(text, text, 'substring first-last simple'); + unittest_assertequals(text.substring(1, text.length - 1), '2345678', 'substring # #-end simple'); + unittest_assertequals(text.substring(text.length - 7, 4), '34', 'substring #-end # simple'); + unittest_assertequals(text.substring(0, 4), '1234', 'substring first # simple'); + unittest_assertequals(text.substring(0, text.length - 1), '12345678', 'substring first #-end simple'); + unittest_assertequals(text.substring(6), '789', 'substring # last simple'); + unittest_assertequals(text.substring(text.length - 3), '789', 'substring #-end last simple'); + unittest_assertequals(text.substring(0, text.length - 0), '123456789', 'substring all with # #-end simple'); + unittest_assertequals(text.substring(text.length - 9, 9), '123456789', 'substring all with #-end # simple'); + // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + unittest_assertequals(text.substring(((0 + 1) - 1), text.length - ((0 + 1) - 1)), '123456789', 'substring all with # #-end math simple'); +} + +String text_get_substring(String text, String where1, num at1, String where2, num at2) { + int getAt(String where, num at) { + if (where == 'FROM_END') { + at = text.length - 1 - at; + } else if (where == 'FIRST') { + at = 0; + } else if (where == 'LAST') { + at = text.length - 1; + } else if (where != 'FROM_START') { + throw 'Unhandled option (text_getSubstring).'; + } + return at; + } + at1 = getAt(where1, at1); + at2 = getAt(where2, at2) + 1; + return text.substring(at1, at2); +} + +/// Tests the "get substring" block with a function call. +void test_substring_complex() { + number_of_calls = 0; + unittest_assertequals((get_numbers()).substring(1, 3), '23', 'substring # complex'); + check_number_of_calls('substring # complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_numbers() : null).substring(((true ? 2 : null) - 1), true ? 3 : null), '23', 'substring # complex order'); + check_number_of_calls('substring # complex order'); + number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(text_get_substring(get_numbers(), 'FROM_END', 2, 'FROM_END', 1), '78', 'substring #-end complex'); + check_number_of_calls('substring #-end complex'); + number_of_calls = 0; + unittest_assertequals(text_get_substring(true ? get_numbers() : null, 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), '78', 'substring #-end order order'); + check_number_of_calls('substring #-end order order'); + number_of_calls = 0; + unittest_assertequals(get_numbers(), text, 'substring first-last'); + check_number_of_calls('substring first-last'); + number_of_calls = 0; + unittest_assertequals(text_get_substring(get_numbers(), 'FROM_START', 1, 'FROM_END', 1), '2345678', 'substring # #-end complex'); + check_number_of_calls('substring # #-end complex'); + number_of_calls = 0; + unittest_assertequals(text_get_substring(get_numbers(), 'FROM_END', 6, 'FROM_START', 3), '34', 'substring #-end # complex'); + check_number_of_calls('substring #-end # complex'); + number_of_calls = 0; + unittest_assertequals((get_numbers()).substring(0, 4), '1234', 'substring first # complex'); + check_number_of_calls('substring first # complex'); + number_of_calls = 0; + unittest_assertequals(text_get_substring(get_numbers(), 'FIRST', 0, 'FROM_END', 1), '12345678', 'substring first #-end complex'); + check_number_of_calls('substring first #-end complex'); + number_of_calls = 0; + unittest_assertequals(text_get_substring(get_numbers(), 'FROM_START', 6, 'LAST', 0), '789', 'substring # last complex'); + check_number_of_calls('substring # last complex'); + number_of_calls = 0; + unittest_assertequals(text_get_substring(get_numbers(), 'FROM_END', 2, 'LAST', 0), '789', 'substring #-end last complex'); + check_number_of_calls('substring #-end last complex'); + number_of_calls = 0; + unittest_assertequals(text_get_substring(get_numbers(), 'FROM_START', 0, 'FROM_END', 0), '123456789', 'substring all with # #-end complex'); + check_number_of_calls('substring all with # #-end complex'); + number_of_calls = 0; + unittest_assertequals(text_get_substring(get_numbers(), 'FROM_END', 8, 'FROM_START', 8), '123456789', 'substring all with #-end # complex'); + check_number_of_calls('substring all with #-end # complex'); + number_of_calls = 0; + // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + unittest_assertequals(text_get_substring(get_numbers(), 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), '123456789', 'substring all with # #-end math complex'); + check_number_of_calls('substring all with # #-end math complex'); +} + +String text_toTitleCase(String str) { + RegExp exp = new RegExp(r'\b'); + List list = str.split(exp); + final title = new StringBuffer(); + for (String part in list) { + if (part.length > 0) { + title.write(part[0].toUpperCase()); + if (part.length > 0) { + title.write(part.substring(1).toLowerCase()); + } + } + } + return title.toString(); +} + +/// Tests the "change casing" block. +void test_case() { + text = 'Hello World'; + unittest_assertequals(text.toUpperCase(), 'HELLO WORLD', 'uppercase'); + unittest_assertequals((true ? text : null).toUpperCase(), 'HELLO WORLD', 'uppercase order'); + text = 'Hello World'; + unittest_assertequals(text.toLowerCase(), 'hello world', 'lowercase'); + unittest_assertequals((true ? text : null).toLowerCase(), 'hello world', 'lowercase order'); + text = 'heLLo WorlD'; + unittest_assertequals(text_toTitleCase(text), 'Hello World', 'titlecase'); + unittest_assertequals(text_toTitleCase(true ? text : null), 'Hello World', 'titlecase order'); +} + +/// Tests the "trim" block. +void test_trim() { + text = ' abc def '; + unittest_assertequals(text.trim(), 'abc def', 'trim both'); + unittest_assertequals((true ? text : null).trim(), 'abc def', 'trim both order'); + unittest_assertequals(text.replaceFirst(new RegExp(r'^\s+'), ''), 'abc def ', 'trim left'); + unittest_assertequals((true ? text : null).replaceFirst(new RegExp(r'^\s+'), ''), 'abc def ', 'trim left order'); + unittest_assertequals(text.replaceFirst(new RegExp(r'\s+$'), ''), ' abc def', 'trim right'); + unittest_assertequals((true ? text : null).replaceFirst(new RegExp(r'\s+$'), ''), ' abc def', 'trim right order'); +} + +int text_count(String haystack, String needle) { + if (needle.length == 0) { + return haystack.length + 1; + } + int index = 0; + int count = 0; + while (index != -1) { + index = haystack.indexOf(needle, index); + if (index != -1) { + count++; + index += needle.length; + } + } + return count; +} + +/// Tests the "trim" block. +void test_count_text() { + text = 'woolloomooloo'; + unittest_assertequals(text_count(text, 'o'), 8, 'len 1'); + unittest_assertequals(text_count(text, 'oo'), 4, 'len 2'); + unittest_assertequals(text_count(text, 'loo'), 2, 'len 3'); + unittest_assertequals(text_count(text, 'wool'), 1, 'start'); + unittest_assertequals(text_count(text, 'chicken'), 0, 'missing'); + unittest_assertequals(text_count(text, ''), 14, 'empty needle'); + unittest_assertequals(text_count('', 'chicken'), 0, 'empty source'); +} + +/// Tests the "trim" block. +void test_text_reverse() { + unittest_assertequals(new String.fromCharCodes(''.runes.toList().reversed), '', 'empty string'); + unittest_assertequals(new String.fromCharCodes('a'.runes.toList().reversed), 'a', 'len 1'); + unittest_assertequals(new String.fromCharCodes('ab'.runes.toList().reversed), 'ba', 'len 2'); + unittest_assertequals(new String.fromCharCodes('woolloomooloo'.runes.toList().reversed), 'ooloomoolloow', 'longer'); +} + +/// Tests the "trim" block. +void test_replace() { + unittest_assertequals('woolloomooloo'.replaceAll('oo', '123'), 'w123ll123m123l123', 'replace all instances 1'); + unittest_assertequals('woolloomooloo'.replaceAll('.oo', 'X'), 'woolloomooloo', 'literal string replacement'); + unittest_assertequals('woolloomooloo'.replaceAll('abc', 'X'), 'woolloomooloo', 'not found'); + unittest_assertequals('woolloomooloo'.replaceAll('o', ''), 'wllml', 'empty replacement 1'); + unittest_assertequals('aaaaa'.replaceAll('aaaaa', ''), '', 'empty replacement 2'); + unittest_assertequals('aaaaa'.replaceAll('a', ''), '', 'empty replacement 3'); + unittest_assertequals(''.replaceAll('a', 'chicken'), '', 'empty source'); +} + +/// Tests the "multiline" block. +void test_multiline() { + unittest_assertequals('', '', 'no text'); + unittest_assertequals('Google', 'Google', 'simple'); + unittest_assertequals('paragraph' + '\n' + + 'with newlines' + '\n' + + 'yup', 'paragraph' + '\n' + + 'with newlines' + '\n' + + 'yup', 'no compile error with newlines'); + unittest_assertequals(text_count('bark bark' + '\n' + + 'bark bark bark' + '\n' + + 'bark bark bark bark', 'bark'), 9, 'count with newlines'); +} + +/// Checks that the number of calls is one in order +/// to confirm that a function was only called once. +void check_number_of_calls2(test_name) { + test_name = [test_name, 'number of calls'].join(); + unittest_assertequals(number_of_calls, 1, test_name); +} + +/// Tests the "create list with" and "create empty list" blocks. +void test_create_lists() { + unittest_assertequals([], [], 'create empty'); + unittest_assertequals([true, 'love'], [true, 'love'], 'create items'); + unittest_assertequals(new List.filled(3, 'Eject'), ['Eject', 'Eject', 'Eject'], 'create repeated'); + unittest_assertequals(new List.filled(0 + 3, 'Eject'), ['Eject', 'Eject', 'Eject'], 'create repeated order'); +} + +/// Creates an empty list for use with the empty test. +dynamic get_empty_list() { + return []; +} + +/// Tests the "is empty" block. +void test_lists_empty() { + unittest_assertequals([0].isEmpty, false, 'not empty'); + unittest_assertequals([].isEmpty, true, 'empty'); + unittest_assertequals((get_empty_list()).isEmpty, true, 'empty complex'); + unittest_assertequals((true ? [] : null).isEmpty, true, 'empty order'); +} + +/// Tests the "length" block. +void test_lists_length() { + unittest_assertequals([].length, 0, 'zero length'); + unittest_assertequals(['cat'].length, 1, 'one length'); + unittest_assertequals(['cat', true, []].length, 3, 'three length'); + unittest_assertequals((true ? ['cat', true] : null).length, 2, 'two length order'); +} + +/// Tests the "find" block with a variable. +void test_find_lists_simple() { + list = ['Alice', 'Eve', 'Bob', 'Eve']; + unittest_assertequals(list.indexOf('Eve') + 1, 2, 'find first simple'); + unittest_assertequals(list.lastIndexOf('Eve') + 1, 4, 'find last simple'); + unittest_assertequals(list.indexOf('Dave') + 1, 0, 'find none simple'); +} + +/// Creates a list for use with the find test. +dynamic get_names() { + number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; + return ['Alice', 'Eve', 'Bob', 'Eve']; +} + +/// Tests the "find" block with a function call. +void test_find_lists_complex() { + number_of_calls = 0; + unittest_assertequals((get_names()).indexOf('Eve') + 1, 2, 'find first complex'); + check_number_of_calls('find first complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_names() : null).indexOf('Eve') + 1, 2, 'find first order complex'); + check_number_of_calls('find first order complex'); + number_of_calls = 0; + unittest_assertequals((get_names()).lastIndexOf('Eve') + 1, 4, 'find last complex'); + check_number_of_calls('find last complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_names() : null).lastIndexOf('Eve') + 1, 4, 'find last order complex'); + check_number_of_calls('find last order complex'); + number_of_calls = 0; + unittest_assertequals((get_names()).indexOf('Dave') + 1, 0, 'find none complex'); + check_number_of_calls('find none complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_names() : null).indexOf('Dave') + 1, 0, 'find none order complex'); + check_number_of_calls('find none order complex'); +} + +dynamic lists_get_random_item(List my_list) { + int x = new Math.Random().nextInt(my_list.length); + return my_list[x]; +} + +/// Tests the "get" block with a variable. +void test_get_lists_simple() { + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals(list.first, 'Kirk', 'get first simple'); + unittest_assertequals(list.last, 'McCoy', 'get last simple'); + unittest_assertequals(list.indexOf(lists_get_random_item(list)) + 1 > 0, true, 'get random simple'); + unittest_assertequals(list[1], 'Spock', 'get # simple'); + unittest_assertequals(list[((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); + unittest_assertequals(list[list.length - 3], 'Kirk', 'get #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(list[list.length - (0 + 3)], 'Kirk', 'get #-end order simple'); +} + +dynamic lists_get_from_end(List my_list, num x) { + x = my_list.length - x; + return my_list[x]; +} + +/// Tests the "get" block with create list call. +void test_get_lists_create_list() { + unittest_assertequals(['Kirk', 'Spock', 'McCoy'].first, 'Kirk', 'get first create list'); + unittest_assertequals(['Kirk', 'Spock', 'McCoy'].last, 'McCoy', 'get last simple'); + unittest_assertequals(['Kirk', 'Spock', 'McCoy'].indexOf(lists_get_random_item(['Kirk', 'Spock', 'McCoy'])) + 1 > 0, true, 'get random simple'); + unittest_assertequals(['Kirk', 'Spock', 'McCoy'][1], 'Spock', 'get # simple'); + unittest_assertequals(['Kirk', 'Spock', 'McCoy'][((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); + unittest_assertequals(lists_get_from_end(['Kirk', 'Spock', 'McCoy'], 3), 'Kirk', 'get #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(lists_get_from_end(['Kirk', 'Spock', 'McCoy'], 0 + 3), 'Kirk', 'get #-end order simple'); +} + +/// Creates a list for use with the get test. +dynamic get_star_wars() { + number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; + return ['Kirk', 'Spock', 'McCoy']; +} + +/// Tests the "get" block with a function call. +void test_get_lists_complex() { + list = ['Kirk', 'Spock', 'McCoy']; + number_of_calls = 0; + unittest_assertequals((get_star_wars()).first, 'Kirk', 'get first complex'); + check_number_of_calls('get first complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_star_wars() : null).first, 'Kirk', 'get first order complex'); + check_number_of_calls('get first order complex'); + number_of_calls = 0; + unittest_assertequals((get_star_wars()).last, 'McCoy', 'get last complex'); + check_number_of_calls('get last complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_star_wars() : null).last, 'McCoy', 'get last order complex'); + check_number_of_calls('get last order complex'); + number_of_calls = 0; + unittest_assertequals(list.indexOf(lists_get_random_item(get_star_wars())) + 1 > 0, true, 'get random complex'); + check_number_of_calls('get random complex'); + number_of_calls = 0; + unittest_assertequals(list.indexOf(lists_get_random_item(true ? get_star_wars() : null)) + 1 > 0, true, 'get random order complex'); + check_number_of_calls('get random order complex'); + number_of_calls = 0; + unittest_assertequals((get_star_wars())[1], 'Spock', 'get # complex'); + check_number_of_calls('get # complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_star_wars() : null)[((true ? 2 : null) - 1)], 'Spock', 'get # order complex'); + check_number_of_calls('get # order complex'); + number_of_calls = 0; + unittest_assertequals(lists_get_from_end(get_star_wars(), 3), 'Kirk', 'get #-end complex'); + check_number_of_calls('get #-end complex'); + number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(lists_get_from_end(true ? get_star_wars() : null, 0 + 3), 'Kirk', 'get #-end order complex'); + check_number_of_calls('get #-end order complex'); +} + +dynamic lists_remove_random_item(List my_list) { + int x = new Math.Random().nextInt(my_list.length); + return my_list.removeAt(x); +} + +dynamic lists_remove_from_end(List my_list, num x) { + x = my_list.length - x; + return my_list.removeAt(x); +} + +/// Tests the "get and remove" block. +void test_getRemove() { + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals(list.removeAt(0), 'Kirk', 'getremove first'); + unittest_assertequals(list, ['Spock', 'McCoy'], 'getremove first list'); + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals((true ? list : null).removeAt(0), 'Kirk', 'getremove first order'); + unittest_assertequals(list, ['Spock', 'McCoy'], 'getremove first order list'); + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals(list.removeLast(), 'McCoy', 'getremove last'); + unittest_assertequals(list, ['Kirk', 'Spock'], 'getremove last list'); + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals((true ? list : null).removeLast(), 'McCoy', 'getremove last order'); + unittest_assertequals(list, ['Kirk', 'Spock'], 'getremove last order list'); + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals(list.indexOf(lists_remove_random_item(list)) + 1 == 0, true, 'getremove random'); + unittest_assertequals(list.length, 2, 'getremove random list'); + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals(list.indexOf(lists_remove_random_item(true ? list : null)) + 1 == 0, true, 'getremove random order'); + unittest_assertequals(list.length, 2, 'getremove random order list'); + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals(list.removeAt(1), 'Spock', 'getremove #'); + unittest_assertequals(list, ['Kirk', 'McCoy'], 'getremove # list'); + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals((true ? list : null).removeAt(((true ? 2 : null) - 1)), 'Spock', 'getremove # order'); + unittest_assertequals(list, ['Kirk', 'McCoy'], 'getremove # order list'); + list = ['Kirk', 'Spock', 'McCoy']; + unittest_assertequals(list.removeAt(list.length - 3), 'Kirk', 'getremove #-end'); + unittest_assertequals(list, ['Spock', 'McCoy'], 'getremove #-end list'); + list = ['Kirk', 'Spock', 'McCoy']; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(lists_remove_from_end(true ? list : null, 0 + 3), 'Kirk', 'getremove #-end order'); + unittest_assertequals(list, ['Spock', 'McCoy'], 'getremove #-end order list'); +} + +/// Tests the "remove" block. +void test_remove() { + list = ['Kirk', 'Spock', 'McCoy']; + list.removeAt(0); + unittest_assertequals(list, ['Spock', 'McCoy'], 'remove first list'); + list = ['Kirk', 'Spock', 'McCoy']; + (true ? list : null).removeAt(0); + unittest_assertequals(list, ['Spock', 'McCoy'], 'remove first order list'); + list = ['Kirk', 'Spock', 'McCoy']; + list.removeLast(); + unittest_assertequals(list, ['Kirk', 'Spock'], 'remove last list'); + list = ['Kirk', 'Spock', 'McCoy']; + (true ? list : null).removeLast(); + unittest_assertequals(list, ['Kirk', 'Spock'], 'remove last order list'); + list = ['Kirk', 'Spock', 'McCoy']; + int tmp_x = new Math.Random().nextInt(list.length); + list.removeAt(tmp_x); + unittest_assertequals(list.length, 2, 'remove random list'); + list = ['Kirk', 'Spock', 'McCoy']; + List tmp_list = true ? list : null; + int tmp_x2 = new Math.Random().nextInt(tmp_list.length); + tmp_list.removeAt(tmp_x2); + unittest_assertequals(list.length, 2, 'remove random order list'); + list = ['Kirk', 'Spock', 'McCoy']; + list.removeAt(1); + unittest_assertequals(list, ['Kirk', 'McCoy'], 'remove # list'); + list = ['Kirk', 'Spock', 'McCoy']; + (true ? list : null).removeAt(((true ? 2 : null) - 1)); + unittest_assertequals(list, ['Kirk', 'McCoy'], 'remove # order list'); + list = ['Kirk', 'Spock', 'McCoy']; + list.removeAt(list.length - 3); + unittest_assertequals(list, ['Spock', 'McCoy'], 'remove #-end list'); + list = ['Kirk', 'Spock', 'McCoy']; + // The order for index for #-end is addition because this will catch + // errors in generators where most perform the operation ... - index. + List tmp_list2 = true ? list : null; + tmp_list2.removeAt(tmp_list2.length - (0 + 3)); + unittest_assertequals(list, ['Spock', 'McCoy'], 'remove #-end order list'); +} + +/// Tests the "set" block. +void test_set() { + list = ['Picard', 'Riker', 'Crusher']; + list[0] = 'Jean-Luc'; + unittest_assertequals(list, ['Jean-Luc', 'Riker', 'Crusher'], 'set first list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null)[0] = 'Jean-Luc'; + unittest_assertequals(list, ['Jean-Luc', 'Riker', 'Crusher'], 'set first order list'); + list = ['Picard', 'Riker', 'Crusher']; + list[list.length - 1] = 'Beverly'; + unittest_assertequals(list, ['Picard', 'Riker', 'Beverly'], 'set last list'); + list = ['Picard', 'Riker', 'Crusher']; + List tmp_list3 = (true ? list : null); + tmp_list3[tmp_list3.length - 1] = 'Beverly'; + unittest_assertequals(list, ['Picard', 'Riker', 'Beverly'], 'set last order list'); + list = ['Picard', 'Riker', 'Crusher']; + int tmp_x3 = new Math.Random().nextInt(list.length); + list[tmp_x3] = 'Data'; + unittest_assertequals(list.length, 3, 'set random list'); + list = ['Picard', 'Riker', 'Crusher']; + List tmp_list4 = (true ? list : null); + int tmp_x4 = new Math.Random().nextInt(tmp_list4.length); + tmp_list4[tmp_x4] = 'Data'; + unittest_assertequals(list.length, 3, 'set random order list'); + list = ['Picard', 'Riker', 'Crusher']; + list[2] = 'Pulaski'; + unittest_assertequals(list, ['Picard', 'Riker', 'Pulaski'], 'set # list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null)[((true ? 3 : null) - 1)] = 'Pulaski'; + unittest_assertequals(list, ['Picard', 'Riker', 'Pulaski'], 'set # order list'); + list = ['Picard', 'Riker', 'Crusher']; + list[list.length - 1] = 'Pulaski'; + unittest_assertequals(list, ['Picard', 'Riker', 'Pulaski'], 'set #-end list'); + list = ['Picard', 'Riker', 'Crusher']; + // The order for index for #-end is addition because this will catch + // errors in generators where most perform the operation ... - index. + List tmp_list5 = (true ? list : null); + tmp_list5[tmp_list5.length - (0 + 2)] = 'Pulaski'; + unittest_assertequals(list, ['Picard', 'Pulaski', 'Crusher'], 'set #-end order list'); +} + +/// Tests the "insert" block. +void test_insert() { + list = ['Picard', 'Riker', 'Crusher']; + list.insert(0, 'Data'); + unittest_assertequals(list, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null).insert(0, 'Data'); + unittest_assertequals(list, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first order list'); + list = ['Picard', 'Riker', 'Crusher']; + list.add('Data'); + unittest_assertequals(list, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null).add('Data'); + unittest_assertequals(list, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last order list'); + list = ['Picard', 'Riker', 'Crusher']; + int tmp_x5 = new Math.Random().nextInt(list.length); + list.insert(tmp_x5, 'Data'); + unittest_assertequals(list.length, 4, 'insert random list'); + list = ['Picard', 'Riker', 'Crusher']; + List tmp_list6 = (true ? list : null); + int tmp_x6 = new Math.Random().nextInt(tmp_list6.length); + tmp_list6.insert(tmp_x6, 'Data'); + unittest_assertequals(list.length, 4, 'insert random order list'); + list = ['Picard', 'Riker', 'Crusher']; + list.insert(2, 'Data'); + unittest_assertequals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null).insert(((true ? 3 : null) - 1), 'Data'); + unittest_assertequals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # order list'); + list = ['Picard', 'Riker', 'Crusher']; + list.insert(list.length - 1, 'Data'); + unittest_assertequals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert #-end list'); + list = ['Picard', 'Riker', 'Crusher']; + // The order for index for #-end is addition because this will catch + // errors in generators where most perform the operation ... - index. + List tmp_list7 = (true ? list : null); + tmp_list7.insert(tmp_list7.length - (0 + 2), 'Data'); + unittest_assertequals(list, ['Picard', 'Data', 'Riker', 'Crusher'], 'insert #-end order list'); +} + +/// Tests the "get sub-list" block with a variable. +void test_sublist_simple() { + list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; + unittest_assertequals(list.sublist(1, 3), ['Challenger', 'Discovery'], 'sublist # simple'); + unittest_assertequals(list.sublist(((true ? 2 : null) - 1), true ? 3 : null), ['Challenger', 'Discovery'], 'sublist # simple order'); + unittest_assertequals(list.sublist(list.length - 3, list.length - 1), ['Discovery', 'Atlantis'], 'sublist #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(list.sublist(list.length - (0 + 3), list.length - ((0 + 2) - 1)), ['Discovery', 'Atlantis'], 'sublist #-end simple order'); + unittest_assertequals(list.sublist(0), list, 'sublist first-last simple'); + changing_list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; + list_copy = changing_list.sublist(0); + int tmp_x7 = new Math.Random().nextInt(changing_list.length); + changing_list.removeAt(tmp_x7); + unittest_assertequals(list_copy, list, 'sublist first-last simple copy check'); + unittest_assertequals(list.sublist(1, list.length - 1), ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end simple'); + unittest_assertequals(list.sublist(list.length - 3, 4), ['Discovery', 'Atlantis'], 'sublist #-end # simple'); + unittest_assertequals(list.sublist(0, 4), ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # simple'); + unittest_assertequals(list.sublist(0, list.length - 3), ['Columbia', 'Challenger'], 'sublist first #-end simple'); + unittest_assertequals(list.sublist(3), ['Atlantis', 'Endeavour'], 'sublist # last simple'); + unittest_assertequals(list.sublist(list.length - 4), ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple'); + unittest_assertequals(list.sublist(0, list.length - 0), list, 'sublist all with # #-end simple'); + unittest_assertequals(list.sublist(list.length - 5, 5), list, 'sublist all with #-end # simple'); + // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + unittest_assertequals(list.sublist(((0 + 1) - 1), list.length - ((0 + 1) - 1)), list, 'sublist all with # #-end math simple'); +} + +/// Creates a list for use with the sublist test. +dynamic get_space_shuttles() { + number_of_calls = (number_of_calls is num ? number_of_calls : 0) + 1; + return ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; +} + +List lists_get_sublist(List list, String where1, num at1, String where2, num at2) { + int getAt(String where, num at) { + if (where == 'FROM_END') { + at = list.length - 1 - at; + } else if (where == 'FIRST') { + at = 0; + } else if (where == 'LAST') { + at = list.length - 1; + } else if (where != 'FROM_START') { + throw 'Unhandled option (lists_getSublist).'; + } + return at; + } + at1 = getAt(where1, at1); + at2 = getAt(where2, at2) + 1; + return list.sublist(at1, at2); +} + +/// Tests the "get sub-list" block with a function call. +void test_sublist_complex() { + number_of_calls = 0; + unittest_assertequals((get_space_shuttles()).sublist(1, 3), ['Challenger', 'Discovery'], 'sublist # start complex'); + check_number_of_calls('sublist # start complex'); + number_of_calls = 0; + unittest_assertequals((true ? get_space_shuttles() : null).sublist(((true ? 2 : null) - 1), true ? 3 : null), ['Challenger', 'Discovery'], 'sublist # start order complex'); + check_number_of_calls('sublist # start order complex'); + number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_END', 2, 'FROM_END', 1), ['Discovery', 'Atlantis'], 'sublist # end complex'); + unittest_assertequals(number_of_calls, 1, 'sublist # end complex number of calls'); + number_of_calls = 0; + unittest_assertequals(lists_get_sublist((true ? get_space_shuttles() : null), 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), ['Discovery', 'Atlantis'], 'sublist # end order complex'); + check_number_of_calls('sublist # end order complex'); + number_of_calls = 0; + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FIRST', 0, 'LAST', 0), list, 'sublist first-last complex'); + check_number_of_calls('sublist first-last complex'); + number_of_calls = 0; + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_START', 1, 'FROM_END', 1), ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end complex'); + check_number_of_calls('sublist # #-end complex'); + number_of_calls = 0; + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_END', 2, 'FROM_START', 3), ['Discovery', 'Atlantis'], 'sublist #-end # complex'); + check_number_of_calls('sublist #-end # complex'); + number_of_calls = 0; + unittest_assertequals((get_space_shuttles()).sublist(0, 4), ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # complex'); + check_number_of_calls('sublist first # complex'); + number_of_calls = 0; + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FIRST', 0, 'FROM_END', 3), ['Columbia', 'Challenger'], 'sublist first #-end complex'); + check_number_of_calls('sublist first #-end complex'); + number_of_calls = 0; + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_START', 3, 'LAST', 0), ['Atlantis', 'Endeavour'], 'sublist # last complex'); + check_number_of_calls('sublist # last complex'); + number_of_calls = 0; + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_END', 3, 'LAST', 0), ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple'); + check_number_of_calls('sublist #-end last simple'); + number_of_calls = 0; + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_START', 0, 'FROM_END', 0), list, 'sublist all with # #-end complex'); + check_number_of_calls('sublist all with # #-end complex'); + number_of_calls = 0; + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_END', 4, 'FROM_START', 4), list, 'sublist all with #-end # complex'); + check_number_of_calls('sublist all with #-end # complex'); + number_of_calls = 0; + // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + unittest_assertequals(lists_get_sublist((get_space_shuttles()), 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), list, 'sublist all with # #-end math complex'); + check_number_of_calls('sublist all with # #-end math complex'); +} + +/// Tests the "join" block. +void test_join() { + list = ['Vulcan', 'Klingon', 'Borg']; + unittest_assertequals(list.join(','), 'Vulcan,Klingon,Borg', 'join'); + unittest_assertequals((true ? list : null).join(','), 'Vulcan,Klingon,Borg', 'join order'); +} + +/// Tests the "split" block. +void test_split() { + text = 'Vulcan,Klingon,Borg'; + unittest_assertequals(text.split(','), ['Vulcan', 'Klingon', 'Borg'], 'split'); + unittest_assertequals((true ? text : null).split(','), ['Vulcan', 'Klingon', 'Borg'], 'split order'); +} + +List lists_sort(List list, String type, int direction) { + var compareFuncs = { + 'NUMERIC': (a, b) => (direction * a.compareTo(b)).toInt(), + 'TEXT': (a, b) => direction * a.toString().compareTo(b.toString()), + 'IGNORE_CASE': + (a, b) => direction * + a.toString().toLowerCase().compareTo(b.toString().toLowerCase()) + }; + list = new List.from(list); + var compare = compareFuncs[type]; + list.sort(compare); + return list; +} + +/// Tests the "alphabetic sort" block. +void test_sort_alphabetic() { + list = ['Vulcan', 'klingon', 'Borg']; + unittest_assertequals(lists_sort(list, "TEXT", 1), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending'); + unittest_assertequals(lists_sort(true ? list : null, "TEXT", 1), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending order'); +} + +/// Tests the "alphabetic sort ignore case" block. +void test_sort_ignoreCase() { + list = ['Vulcan', 'klingon', 'Borg']; + unittest_assertequals(lists_sort(list, "IGNORE_CASE", 1), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending'); + unittest_assertequals(lists_sort(true ? list : null, "IGNORE_CASE", 1), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending order'); +} + +/// Tests the "numeric sort" block. +void test_sort_numeric() { + list = [8, 18, -1]; + unittest_assertequals(lists_sort(list, "NUMERIC", -1), [18, 8, -1], 'sort numeric descending'); + unittest_assertequals(lists_sort(true ? list : null, "NUMERIC", -1), [18, 8, -1], 'sort numeric descending order'); +} + +/// Tests the "list reverse" block. +void test_lists_reverse() { + list = [8, 18, -1, 64]; + unittest_assertequals(new List.from(list.reversed), [64, -1, 18, 8], 'reverse a copy'); + unittest_assertequals(list, [8, 18, -1, 64], 'reverse a copy original'); + list = []; + unittest_assertequals(new List.from(list.reversed), [], 'empty list'); +} + +/// Describe this function... +void test_colour_picker() { + unittest_assertequals('#ff6600', '#ff6600', 'static colour'); +} + +String colour_rgb(num r, num g, num b) { + num rn = (Math.max(Math.min(r, 100), 0) * 2.55).round(); + String rs = rn.toInt().toRadixString(16); + rs = '0$rs'; + rs = rs.substring(rs.length - 2); + num gn = (Math.max(Math.min(g, 100), 0) * 2.55).round(); + String gs = gn.toInt().toRadixString(16); + gs = '0$gs'; + gs = gs.substring(gs.length - 2); + num bn = (Math.max(Math.min(b, 100), 0) * 2.55).round(); + String bs = bn.toInt().toRadixString(16); + bs = '0$bs'; + bs = bs.substring(bs.length - 2); + return '#$rs$gs$bs'; +} + +/// Describe this function... +void test_rgb() { + unittest_assertequals(colour_rgb(100, 40, 0), '#ff6600', 'from rgb'); +} + +String colour_random() { + String hex = '0123456789abcdef'; + var rnd = new Math.Random(); + return '#${hex[rnd.nextInt(16)]}${hex[rnd.nextInt(16)]}' + '${hex[rnd.nextInt(16)]}${hex[rnd.nextInt(16)]}' + '${hex[rnd.nextInt(16)]}${hex[rnd.nextInt(16)]}'; +} + +/// Describe this function... +void test_colour_random() { + for (int count4 = 0; count4 < 100; count4++) { + item = colour_random(); + unittest_assertequals(item.length, 7, ['length of random colour string: ',item].join()); + unittest_assertequals(item[0], '#', ['format of random colour string: ',item].join()); + for (i = 1; i <= 6; i++) { + unittest_assertequals(0 != 'abcdefABDEF0123456789'.indexOf(item[((i + 1) - 1)]) + 1, true, ['contents of random colour string: ',item,' at index: ',i + 1].join()); + } + } +} + +String colour_blend(String c1, String c2, num ratio) { + ratio = Math.max(Math.min(ratio, 1), 0); + int r1 = int.parse('0x${c1.substring(1, 3)}'); + int g1 = int.parse('0x${c1.substring(3, 5)}'); + int b1 = int.parse('0x${c1.substring(5, 7)}'); + int r2 = int.parse('0x${c2.substring(1, 3)}'); + int g2 = int.parse('0x${c2.substring(3, 5)}'); + int b2 = int.parse('0x${c2.substring(5, 7)}'); + num rn = (r1 * (1 - ratio) + r2 * ratio).round(); + String rs = rn.toInt().toRadixString(16); + num gn = (g1 * (1 - ratio) + g2 * ratio).round(); + String gs = gn.toInt().toRadixString(16); + num bn = (b1 * (1 - ratio) + b2 * ratio).round(); + String bs = bn.toInt().toRadixString(16); + rs = '0$rs'; + rs = rs.substring(rs.length - 2); + gs = '0$gs'; + gs = gs.substring(gs.length - 2); + bs = '0$bs'; + bs = bs.substring(bs.length - 2); + return '#$rs$gs$bs'; +} + +/// Describe this function... +void test_blend() { + unittest_assertequals(colour_blend('#ff0000', colour_rgb(100, 40, 0), 0.4), '#ff2900', 'blend'); +} + +/// Describe this function... +void test_procedure() { + procedure_1(8, 2); + unittest_assertequals(proc_z, 4, 'procedure with global'); + proc_w = false; + procedure_2(false); + unittest_assertequals(proc_w, true, 'procedure no return'); + proc_w = false; + procedure_2(true); + unittest_assertequals(proc_w, false, 'procedure return'); +} + +/// Describe this function... +void procedure_1(proc_x, proc_y) { + proc_z = proc_x / proc_y; +} + +/// Describe this function... +void procedure_2(proc_x) { + if (proc_x) { + return; + } + proc_w = true; +} + +/// Describe this function... +void test_function() { + unittest_assertequals(function_1(2, 3), -1, 'function with arguments'); + unittest_assertequals(func_z, 'side effect', 'function with side effect'); + func_a = 'unchanged'; + func_c = 'global'; + unittest_assertequals(function_2(2), '3global', 'function with global'); + unittest_assertequals(func_a, 'unchanged', 'function with scope'); + unittest_assertequals(function_3(true), true, 'function return'); + unittest_assertequals(function_3(false), false, 'function no return'); +} + +/// Describe this function... +dynamic function_1(func_x, func_y) { + func_z = 'side effect'; + return func_x - func_y; +} + +/// Describe this function... +dynamic function_2(func_a) { + func_a = (func_a is num ? func_a : 0) + 1; + return [func_a,func_c].join(); +} + +/// Describe this function... +dynamic function_3(func_a) { + if (func_a) { + return true; + } + return false; +} + +/// Describe this function... +dynamic recurse(n) { + if (n > 0) { + text = [recurse(n - 1),n,recurse(n - 1)].join(); + } else { + text = '-'; + } + return text; +} + + +main() { + unittestResults = []; + print('\n====================\n\nRunning suite: Logic'); + unittest_assertequals(true, true, 'True'); + unittest_assertequals(false, false, 'False'); + unittest_assertequals(!false, true, 'Not true'); + unittest_assertequals(!true, false, 'Not false'); + test_if(); + test_ifelse(); + test_equalities(); + test_and(); + test_or(); + test_ternary(); + print(unittest_report()); + unittestResults = null; + + unittestResults = []; + print('\n====================\n\nRunning suite: Loops 1'); + test_repeat(); + test_repeat_ext(); + test_while(); + test_foreach(); + print(unittest_report()); + unittestResults = null; + + unittestResults = []; + print('\n====================\n\nRunning suite: Loops 2'); + test_count_loops(); + test_count_by(); + print(unittest_report()); + unittestResults = null; + + unittestResults = []; + print('\n====================\n\nRunning suite: Loops 3'); + test_break(); + test_continue(); + print(unittest_report()); + unittestResults = null; + + unittestResults = []; + print('\n====================\n\nRunning suite: Math'); + test_arithmetic(); + test_single(); + test_trig(); + test_constant(); + test_change(); + test_number_properties(); + test_round(); + test_operations_on_list(); + test_constraint(); + test_mod(); + test_random_integer(); + test_random_fraction(); + test_atan2(); + print(unittest_report()); + unittestResults = null; + + unittestResults = []; + print('\n====================\n\nRunning suite: Text'); + test_text_length(); + test_empty_text(); + test_create_text(); + test_append(); + test_find_text_simple(); + test_find_text_complex(); + test_get_text_simple(); + test_get_text_complex(); + test_substring_simple(); + test_substring_complex(); + test_case(); + test_trim(); + test_count_text(); + test_text_reverse(); + test_replace(); + test_multiline(); + print(unittest_report()); + unittestResults = null; + + unittestResults = []; + print('\n====================\n\nRunning suite: Lists'); + test_create_lists(); + test_lists_empty(); + test_lists_length(); + test_find_lists_simple(); + test_find_lists_complex(); + test_get_lists_simple(); + test_get_lists_create_list(); + test_get_lists_complex(); + test_getRemove(); + test_remove(); + test_set(); + test_insert(); + test_sublist_simple(); + test_sublist_complex(); + test_join(); + test_split(); + test_sort_alphabetic(); + test_sort_ignoreCase(); + test_sort_numeric(); + test_lists_reverse(); + print(unittest_report()); + unittestResults = null; + + unittestResults = []; + print('\n====================\n\nRunning suite: Colour'); + test_colour_picker(); + test_blend(); + test_rgb(); + test_colour_random(); + print(unittest_report()); + unittestResults = null; + + unittestResults = []; + print('\n====================\n\nRunning suite: Variables'); + item = 123; + unittest_assertequals(item, 123, 'variable'); + if2 = 123; + unittest_assertequals(if2, 123, 'reserved variable'); + print(unittest_report()); + unittestResults = null; + + // Intentionally non-connected variable. + naked; + + unittestResults = []; + print('\n====================\n\nRunning suite: Functions'); + test_procedure(); + test_function(); + unittest_assertequals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse'); + print(unittest_report()); + unittestResults = null; } \ No newline at end of file diff --git a/tests/generators/golden/generated.js b/tests/generators/golden/generated.js index 48a4e20ac9f..8e27afe1fbe 100644 --- a/tests/generators/golden/generated.js +++ b/tests/generators/golden/generated.js @@ -1,1635 +1,1635 @@ -'use strict'; - -var unittestResults, test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy; - -function unittest_report() { - // Create test report. - var report = []; - var summary = []; - var fails = 0; - for (var i = 0; i < unittestResults.length; i++) { - if (unittestResults[i][0]) { - summary.push("."); - } else { - summary.push("F"); - fails++; - report.push(""); - report.push("FAIL: " + unittestResults[i][2]); - report.push(unittestResults[i][1]); - } - } - report.unshift(summary.join("")); - report.push(""); - report.push("Number of tests run: " + unittestResults.length); - report.push(""); - if (fails) { - report.push("FAILED (failures=" + fails + ")"); - } else { - report.push("OK"); - } - return report.join("\n"); -} - -function assertEquals(actual, expected, message) { - // Asserts that a value equals another value. - if (!unittestResults) { - throw "Orphaned assert: " + message; - } - function equals(a, b) { - if (a === b) { - return true; - } else if ((typeof a === "number") && (typeof b === "number") && - (a.toPrecision(15) == b.toPrecision(15))) { - return true; - } else if (a instanceof Array && b instanceof Array) { - if (a.length !== b.length) { - return false; - } - for (var i = 0; i < a.length; i++) { - if (!equals(a[i], b[i])) { - return false; - } - } - return true; - } - return false; - } - if (equals(actual, expected)) { - unittestResults.push([true, "OK", message]); - } else { - unittestResults.push([false, "Expected: " + expected + "\nActual: " + actual, message]); - } -} - -function unittest_fail(message) { - // Always assert an error. - if (!unittestResults) { - throw "Orphaned assert fail: " + message; - } - unittestResults.push([false, "Fail.", message]); -} - -// Describe this function... -function test_if() { - if (false) { - unittest_fail('if false'); - } - ok = false; - if (true) { - ok = true; - } - assertEquals(ok, true, 'if true'); - ok = false; - if (false) { - unittest_fail('if/else false'); - } else { - ok = true; - } - assertEquals(ok, true, 'if/else false'); - ok = false; - if (true) { - ok = true; - } else { - unittest_fail('if/else true'); - } - assertEquals(ok, true, 'if/else true'); - ok = false; - if (false) { - unittest_fail('elseif 1'); - } else if (true) { - ok = true; - } else if (true) { - unittest_fail('elseif 2'); - } else { - unittest_fail('elseif 3'); - } - assertEquals(ok, true, 'elseif 4'); -} - -// Describe this function... -function test_ifelse() { - ok = false; - if (true) { - ok = true; - } else { - unittest_fail('ifelse true'); - } - assertEquals(ok, true, 'ifelse true'); - ok = false; - if (false) { - unittest_fail('ifelse false'); - } else { - ok = true; - } - assertEquals(ok, true, 'ifelse false'); -} - -// Describe this function... -function test_equalities() { - assertEquals(2 == 2, true, 'Equal yes'); - assertEquals(3 == 4, false, 'Equal no'); - assertEquals(5 != 6, true, 'Not equal yes'); - assertEquals(3 == 4, false, 'Not equal no'); - assertEquals(5 < 6, true, 'Smaller yes'); - assertEquals(7 < 7, false, 'Smaller no'); - assertEquals(9 > 8, true, 'Greater yes'); - assertEquals(10 > 10, false, 'Greater no'); - assertEquals(11 <= 11, true, 'Smaller-equal yes'); - assertEquals(13 <= 12, false, 'Smaller-equal no'); - assertEquals(14 >= 14, true, 'Greater-equal yes'); - assertEquals(15 >= 16, false, 'Greater-equal no'); -} - -// Describe this function... -function test_and() { - assertEquals(true && true, true, 'And true/true'); - assertEquals(false && true, false, 'And false/true'); - assertEquals(true && false, false, 'And true/false'); - assertEquals(false && false, false, 'And false/false'); -} - -// Describe this function... -function test_or() { - assertEquals(true || true, true, 'Or true/true'); - assertEquals(false || true, true, 'Or false/true'); - assertEquals(true || false, true, 'Or true/false'); - assertEquals(false || false, false, 'Or false/false'); -} - -// Describe this function... -function test_ternary() { - assertEquals(true ? 42 : 99, 42, 'if true'); - assertEquals(false ? 42 : 99, 99, 'if true'); -} - -// Describe this function... -function test_foreach() { - log = ''; - var x_list = ['a', 'b', 'c']; - for (var x_index in x_list) { - x = x_list[x_index]; - log += String(x); - } - assertEquals(log, 'abc', 'for loop'); -} - -// Describe this function... -function test_repeat() { - count = 0; - for (var count2 = 0; count2 < 10; count2++) { - count = (typeof count === 'number' ? count : 0) + 1; - } - assertEquals(count, 10, 'repeat 10'); -} - -// Describe this function... -function test_while() { - while (false) { - unittest_fail('while 0'); - } - while (!true) { - unittest_fail('until 0'); - } - count = 1; - while (count != 10) { - count = (typeof count === 'number' ? count : 0) + 1; - } - assertEquals(count, 10, 'while 10'); - count = 1; - while (!(count == 10)) { - count = (typeof count === 'number' ? count : 0) + 1; - } - assertEquals(count, 10, 'until 10'); -} - -// Describe this function... -function test_repeat_ext() { - count = 0; - for (var count3 = 0; count3 < 10; count3++) { - count = (typeof count === 'number' ? count : 0) + 1; - } - assertEquals(count, 10, 'repeat 10'); -} - -// Describe this function... -function test_count_by() { - log = ''; - for (x = 1; x <= 8; x += 2) { - log += String(x); - } - assertEquals(log, '1357', 'count up ints'); - log = ''; - for (x = 8; x >= 1; x -= 2) { - log += String(x); - } - assertEquals(log, '8642', 'count down ints'); - loglist = []; - for (x = 1; x <= 8; x += 1.5) { - loglist.push(x); - } - assertEquals(loglist, [1, 2.5, 4, 5.5, 7], 'count with floats'); - loglist = []; - var x_start = 1 + 0; - var x_end = 8 + 0; - var x_inc = Math.abs(1 - 2); - if (x_start > x_end) { - x_inc = -x_inc; - } - for (x = x_start; x_inc >= 0 ? x <= x_end : x >= x_end; x += x_inc) { - loglist.push(x); - } - assertEquals(loglist, [1, 2, 3, 4, 5, 6, 7, 8], 'count up non-trivial ints'); - loglist = []; - var x_start2 = 8 + 0; - var x_end2 = 1 + 0; - var x_inc2 = 2; - if (x_start2 > x_end2) { - x_inc2 = -x_inc2; - } - for (x = x_start2; x_inc2 >= 0 ? x <= x_end2 : x >= x_end2; x += x_inc2) { - loglist.push(x); - } - assertEquals(loglist, [8, 6, 4, 2], 'count down non-trivial ints'); - loglist = []; - var x_start3 = 5 + 0.5; - var x_end3 = 1 + 0; - var x_inc3 = Math.abs(1 + 0); - if (x_start3 > x_end3) { - x_inc3 = -x_inc3; - } - for (x = x_start3; x_inc3 >= 0 ? x <= x_end3 : x >= x_end3; x += x_inc3) { - loglist.push(x); - } - assertEquals(loglist, [5.5, 4.5, 3.5, 2.5, 1.5], 'count with floats'); -} - -// Describe this function... -function test_count_loops() { - log = ''; - for (x = 1; x <= 8; x++) { - log += String(x); - } - assertEquals(log, '12345678', 'count up'); - log = ''; - for (x = 8; x >= 1; x--) { - log += String(x); - } - assertEquals(log, '87654321', 'count down'); - loglist = []; - var x_start4 = 1 + 0; - var x_end4 = 4 + 0; - var x_inc4 = 1; - if (x_start4 > x_end4) { - x_inc4 = -x_inc4; - } - for (x = x_start4; x_inc4 >= 0 ? x <= x_end4 : x >= x_end4; x += x_inc4) { - loglist.push(x); - } - assertEquals(loglist, [1, 2, 3, 4], 'count up non-trivial'); - loglist = []; - var x_start5 = 3 + 1; - var x_end5 = 1 + 0; - var x_inc5 = 1; - if (x_start5 > x_end5) { - x_inc5 = -x_inc5; - } - for (x = x_start5; x_inc5 >= 0 ? x <= x_end5 : x >= x_end5; x += x_inc5) { - loglist.push(x); - } - assertEquals(loglist, [4, 3, 2, 1], 'count down non-trivial'); -} - -// Describe this function... -function test_continue() { - log = ''; - count = 0; - while (count != 8) { - count = (typeof count === 'number' ? count : 0) + 1; - if (count == 5) { - continue; - } - log += String(count); - } - assertEquals(log, '1234678', 'while continue'); - log = ''; - count = 0; - while (!(count == 8)) { - count = (typeof count === 'number' ? count : 0) + 1; - if (count == 5) { - continue; - } - log += String(count); - } - assertEquals(log, '1234678', 'until continue'); - log = ''; - for (x = 1; x <= 8; x++) { - if (x == 5) { - continue; - } - log += String(x); - } - assertEquals(log, '1234678', 'count continue'); - log = ''; - var x_list2 = ['a', 'b', 'c', 'd']; - for (var x_index2 in x_list2) { - x = x_list2[x_index2]; - if (x == 'c') { - continue; - } - log += String(x); - } - assertEquals(log, 'abd', 'for continue'); -} - -// Describe this function... -function test_break() { - count = 1; - while (count != 10) { - if (count == 5) { - break; - } - count = (typeof count === 'number' ? count : 0) + 1; - } - assertEquals(count, 5, 'while break'); - count = 1; - while (!(count == 10)) { - if (count == 5) { - break; - } - count = (typeof count === 'number' ? count : 0) + 1; - } - assertEquals(count, 5, 'until break'); - log = ''; - for (x = 1; x <= 8; x++) { - if (x == 5) { - break; - } - log += String(x); - } - assertEquals(log, '1234', 'count break'); - log = ''; - var x_list3 = ['a', 'b', 'c', 'd']; - for (var x_index3 in x_list3) { - x = x_list3[x_index3]; - if (x == 'c') { - break; - } - log += String(x); - } - assertEquals(log, 'ab', 'for break'); -} - -// Tests the "single" block. -function test_single() { - assertEquals(Math.sqrt(25), 5, 'sqrt'); - assertEquals(Math.abs(-25), 25, 'abs'); - assertEquals(-(-25), 25, 'negate'); - assertEquals(Math.log(1), 0, 'ln'); - assertEquals(Math.log(100) / Math.log(10), 2, 'log10'); - assertEquals(Math.exp(2), 7.38905609893065, 'exp'); - assertEquals(Math.pow(10,2), 100, 'power10'); -} - -// Tests the "arithmetic" block for all operations and checks -// parenthesis are properly generated for different orders. -function test_arithmetic() { - assertEquals(1 + 2, 3, 'add'); - assertEquals(1 - 2, -1, 'subtract'); - assertEquals(1 - (0 + 2), -1, 'subtract order with add'); - assertEquals(1 - (0 - 2), 3, 'subtract order with subtract'); - assertEquals(4 * 2.5, 10, 'multiply'); - assertEquals(4 * (0 + 2.5), 10, 'multiply order'); - assertEquals(8.2 / -5, -1.64, 'divide'); - assertEquals(8.2 / (0 + -5), -1.64, 'divide order'); - assertEquals(Math.pow(10, 4), 10000, 'power'); - assertEquals(Math.pow(10, 0 + 4), 10000, 'power order'); -} - -// Tests the "trig" block. -function test_trig() { - assertEquals(Math.sin(90 / 180 * Math.PI), 1, 'sin'); - assertEquals(Math.cos(180 / 180 * Math.PI), -1, 'cos'); - assertEquals(Math.tan(0 / 180 * Math.PI), 0, 'tan'); - assertEquals(Math.asin(-1) / Math.PI * 180, -90, 'asin'); - assertEquals(Math.acos(1) / Math.PI * 180, 0, 'acos'); - assertEquals(Math.atan(1) / Math.PI * 180, 45, 'atan'); -} - -// Tests the "constant" blocks. -function test_constant() { - assertEquals(Math.floor(Math.PI * 1000), 3141, 'const pi'); - assertEquals(Math.floor(Math.E * 1000), 2718, 'const e'); - assertEquals(Math.floor(((1 + Math.sqrt(5)) / 2) * 1000), 1618, 'const golden'); - assertEquals(Math.floor(Math.SQRT2 * 1000), 1414, 'const sqrt 2'); - assertEquals(Math.floor(Math.SQRT1_2 * 1000), 707, 'const sqrt 0.5'); - assertEquals(9999 < Infinity, true, 'const infinity'); -} - -function mathIsPrime(n) { - // https://en.wikipedia.org/wiki/Primality_test#Naive_methods - if (n == 2 || n == 3) { - return true; - } - // False if n is NaN, negative, is 1, or not whole. - // And false if n is divisible by 2 or 3. - if (isNaN(n) || n <= 1 || n % 1 !== 0 || n % 2 === 0 || n % 3 === 0) { - return false; - } - // Check all the numbers of form 6k +/- 1, up to sqrt(n). - for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) { - if (n % (x - 1) === 0 || n % (x + 1) === 0) { - return false; - } - } - return true; -} - -// Tests the "number property" blocks. -function test_number_properties() { - assertEquals(42 % 2 === 0, true, 'even'); - assertEquals(42.1 % 2 === 1, false, 'odd'); - assertEquals(mathIsPrime(5), true, 'prime 5'); - assertEquals(mathIsPrime(5 + 2), true, 'prime 5 + 2 (extra parentheses)'); - assertEquals(mathIsPrime(25), false, 'prime 25'); - assertEquals(mathIsPrime(-31.1), false, 'prime negative'); - assertEquals(Math.PI % 1 === 0, false, 'whole'); - assertEquals(Infinity > 0, true, 'positive'); - assertEquals(5 + 2 > 0, true, '5 + 2 is positive (extra parentheses)'); - assertEquals(-42 < 0, true, 'negative'); - assertEquals(3 + 2 < 0, false, '3 + 2 is negative (extra parentheses)'); - assertEquals(42 % 2 === 0, true, 'divisible'); - assertEquals(!(42 % 0 === 0), true, 'divisible by 0'); -} - -// Tests the "round" block. -function test_round() { - assertEquals(Math.round(42.42), 42, 'round'); - assertEquals(Math.ceil(-42.42), -42, 'round up'); - assertEquals(Math.floor(42.42), 42, 'round down'); -} - -// Tests the "change" block. -function test_change() { - varToChange = 100; - varToChange = (typeof varToChange === 'number' ? varToChange : 0) + 42; - assertEquals(varToChange, 142, 'change'); -} - -function mathMean(myList) { - return myList.reduce(function(x, y) {return x + y;}) / myList.length; -} - -function mathMedian(myList) { - var localList = myList.filter(function (x) {return typeof x === 'number';}); - if (!localList.length) return null; - localList.sort(function(a, b) {return b - a;}); - if (localList.length % 2 === 0) { - return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2; - } else { - return localList[(localList.length - 1) / 2]; - } -} - -function mathModes(values) { - var modes = []; - var counts = []; - var maxCount = 0; - for (var i = 0; i < values.length; i++) { - var value = values[i]; - var found = false; - var thisCount; - for (var j = 0; j < counts.length; j++) { - if (counts[j][0] === value) { - thisCount = ++counts[j][1]; - found = true; - break; - } - } - if (!found) { - counts.push([value, 1]); - thisCount = 1; - } - maxCount = Math.max(thisCount, maxCount); - } - for (var j = 0; j < counts.length; j++) { - if (counts[j][1] === maxCount) { - modes.push(counts[j][0]); - } - } - return modes; -} - -function mathStandardDeviation(numbers) { - var n = numbers.length; - if (!n) return null; - var mean = numbers.reduce(function(x, y) {return x + y;}) / n; - var variance = 0; - for (var j = 0; j < n; j++) { - variance += Math.pow(numbers[j] - mean, 2); - } - variance = variance / n; - return Math.sqrt(variance); -} - -function mathRandomList(list) { - var x = Math.floor(Math.random() * list.length); - return list[x]; -} - -// Tests the "list operation" blocks. -function test_operations_on_list() { - assertEquals([3, 4, 5].reduce(function(x, y) {return x + y;}), 12, 'sum'); - assertEquals(Math.min.apply(null, [3, 4, 5]), 3, 'min'); - assertEquals(Math.max.apply(null, [3, 4, 5]), 5, 'max'); - assertEquals(mathMean([3, 4, 5]), 4, 'average'); - assertEquals(mathMedian([3, 4, 5, 1]), 3.5, 'median'); - assertEquals(mathModes([3, 4, 3]), [3], 'modes'); - assertEquals(mathModes([3, 4, 3, 1, 4]), [3, 4], 'modes multiple'); - assertEquals(mathStandardDeviation([3, 3, 3]), 0, 'standard dev'); - assertEquals([3, 4, 5].indexOf(mathRandomList([3, 4, 5])) + 1 > 0, true, 'random'); -} - -// Tests the "mod" block. -function test_mod() { - assertEquals(42 % 5, 2, 'mod'); -} - -// Tests the "constrain" block. -function test_constraint() { - assertEquals(Math.min(Math.max(100, 0), 42), 42, 'constraint'); -} - -function mathRandomInt(a, b) { - if (a > b) { - // Swap a and b to ensure a is smaller. - var c = a; - a = b; - b = c; - } - return Math.floor(Math.random() * (b - a + 1) + a); -} - -// Tests the "random integer" block. -function test_random_integer() { - rand = mathRandomInt(5, 10); - assertEquals(rand >= 5 && rand <= 10, true, 'randRange'); - assertEquals(rand % 1 === 0, true, 'randInteger'); -} - -// Tests the "random fraction" block. -function test_random_fraction() { - rand = Math.random(); - assertEquals(rand >= 0 && rand <= 1, true, 'randFloat'); -} - -// Describe this function... -function test_atan2() { - assertEquals(Math.atan2(5, -5) / Math.PI * 180, 135, 'atan2'); - assertEquals(Math.atan2(-12, 0) / Math.PI * 180, -90, 'atan2'); -} - -// Checks that the number of calls is one in order -// to confirm that a function was only called once. -function check_number_of_calls(test_name) { - test_name += 'number of calls'; - assertEquals(number_of_calls, 1, test_name); -} - -// Tests the "create text with" block with varying number of inputs. -function test_create_text() { - assertEquals('', '', 'no text'); - assertEquals('Hello', 'Hello', 'create single'); - assertEquals(String(-1), '-1', 'create single number'); - assertEquals('K' + String(9), 'K9', 'create double text'); - assertEquals(String(4) + String(2), '42', 'create double text numbers'); - assertEquals([1,2,3].join(''), '123', 'create triple'); - assertEquals([1,true ? 0 : null,'M'].join(''), '10M', 'create order'); -} - -// Creates an empty string for use with the empty test. -function get_empty() { - return ''; -} - -// Tests the "is empty" block". -function test_empty_text() { - assertEquals(!'Google'.length, false, 'not empty'); - assertEquals(!''.length, true, 'empty'); - assertEquals(!get_empty().length, true, 'empty complex'); - assertEquals(!(true ? '' : null).length, true, 'empty order'); -} - -// Tests the "length" block. -function test_text_length() { - assertEquals(''.length, 0, 'zero length'); - assertEquals('Google'.length, 6, 'non-zero length'); - assertEquals((true ? 'car' : null).length, 3, 'length order'); -} - -// Tests the "append text" block with different types of parameters. -function test_append() { - item = 'Miserable'; - item += 'Failure'; - assertEquals(item, 'MiserableFailure', 'append text'); - item = 12; - item += String(34); - assertEquals(item, '1234', 'append number'); - item = 'Something '; - item += String(true ? 'Positive' : null); - assertEquals(item, 'Something Positive', 'append order'); -} - -// Tests the "find" block with a variable. -function test_find_text_simple() { - text = 'Banana'; - assertEquals(text.indexOf('an') + 1, 2, 'find first simple'); - assertEquals(text.lastIndexOf('an') + 1, 4, 'find last simple'); - assertEquals(text.indexOf('Peel') + 1, 0, 'find none simple'); -} - -// Creates a string for use with the find test. -function get_fruit() { - number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; - return 'Banana'; -} - -// Tests the "find" block with a function call. -function test_find_text_complex() { - number_of_calls = 0; - assertEquals(get_fruit().indexOf('an') + 1, 2, 'find first complex'); - check_number_of_calls('find first complex'); - number_of_calls = 0; - assertEquals((true ? get_fruit() : null).indexOf('an') + 1, 2, 'find first order complex'); - check_number_of_calls('find first order complex'); - number_of_calls = 0; - assertEquals(get_fruit().lastIndexOf('an') + 1, 4, 'find last complex'); - check_number_of_calls('find last complex'); - number_of_calls = 0; - assertEquals((true ? get_fruit() : null).lastIndexOf('an') + 1, 4, 'find last order complex'); - check_number_of_calls('find last order complex'); - number_of_calls = 0; - assertEquals(get_fruit().indexOf('Peel') + 1, 0, 'find none complex'); - check_number_of_calls('find none complex'); - number_of_calls = 0; - assertEquals((true ? get_fruit() : null).indexOf('Peel') + 1, 0, 'find none order complex'); - check_number_of_calls('find none order complex'); -} - -function textRandomLetter(text) { - var x = Math.floor(Math.random() * text.length); - return text[x]; -} - -// Tests the "get letter" block with a variable. -function test_get_text_simple() { - text = 'Blockly'; - assertEquals(text.charAt(0), 'B', 'get first simple'); - assertEquals(text.slice(-1), 'y', 'get last simple'); - assertEquals(text.indexOf(textRandomLetter(text)) + 1 > 0, true, 'get random simple'); - assertEquals(text.charAt(2), 'o', 'get # simple'); - assertEquals(text.charAt(((true ? 3 : null) - 1)), 'o', 'get # order simple'); - assertEquals(text.slice(-3).charAt(0), 'k', 'get #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(text.slice((-(0 + 3))).charAt(0), 'k', 'get #-end order simple'); -} - -// Creates a string for use with the get test. -function get_Blockly() { - number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; - return 'Blockly'; -} - -// Tests the "get letter" block with a function call. -function test_get_text_complex() { - text = 'Blockly'; - number_of_calls = 0; - assertEquals(get_Blockly().charAt(0), 'B', 'get first complex'); - check_number_of_calls('get first complex'); - number_of_calls = 0; - assertEquals((true ? get_Blockly() : null).charAt(0), 'B', 'get first order complex'); - check_number_of_calls('get first order complex'); - number_of_calls = 0; - assertEquals(get_Blockly().slice(-1), 'y', 'get last complex'); - check_number_of_calls('get last complex'); - number_of_calls = 0; - assertEquals((true ? get_Blockly() : null).slice(-1), 'y', 'get last order complex'); - check_number_of_calls('get last order complex'); - number_of_calls = 0; - assertEquals(text.indexOf(textRandomLetter(get_Blockly())) + 1 > 0, true, 'get random complex'); - check_number_of_calls('get random complex'); - number_of_calls = 0; - assertEquals(text.indexOf(textRandomLetter(true ? get_Blockly() : null)) + 1 > 0, true, 'get random order complex'); - check_number_of_calls('get random order complex'); - number_of_calls = 0; - assertEquals(get_Blockly().charAt(2), 'o', 'get # complex'); - check_number_of_calls('get # complex'); - number_of_calls = 0; - assertEquals((true ? get_Blockly() : null).charAt(((true ? 3 : null) - 1)), 'o', 'get # order complex'); - check_number_of_calls('get # order complex'); - number_of_calls = 0; - assertEquals(get_Blockly().slice(-3).charAt(0), 'k', 'get #-end complex'); - check_number_of_calls('get #-end complex'); - number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals((true ? get_Blockly() : null).slice((-(0 + 3))).charAt(0), 'k', 'get #-end order complex'); - check_number_of_calls('get #-end order complex'); -} - -// Creates a string for use with the substring test. -function get_numbers() { - number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; - return '123456789'; -} - -// Tests the "get substring" block with a variable. -function test_substring_simple() { - text = '123456789'; - assertEquals(text.slice(1, 3), '23', 'substring # simple'); - assertEquals(text.slice(((true ? 2 : null) - 1), true ? 3 : null), '23', 'substring # simple order'); - assertEquals(text.slice(text.length - 3, text.length - 1), '78', 'substring #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(text.slice(text.length - (0 + 3), text.length - ((0 + 2) - 1)), '78', 'substring #-end simple order'); - assertEquals(text, text, 'substring first-last simple'); - assertEquals(text.slice(1, text.length - 1), '2345678', 'substring # #-end simple'); - assertEquals(text.slice(text.length - 7, 4), '34', 'substring #-end # simple'); - assertEquals(text.slice(0, 4), '1234', 'substring first # simple'); - assertEquals(text.slice(0, text.length - 1), '12345678', 'substring first #-end simple'); - assertEquals(text.slice(6, text.length), '789', 'substring # last simple'); - assertEquals(text.slice(text.length - 3, text.length), '789', 'substring #-end last simple'); - assertEquals(text.slice(0, text.length - 0), '123456789', 'substring all with # #-end simple'); - assertEquals(text.slice(text.length - 9, 9), '123456789', 'substring all with #-end # simple'); - // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - assertEquals(text.slice(((0 + 1) - 1), text.length - ((0 + 1) - 1)), '123456789', 'substring all with # #-end math simple'); -} - -function subsequenceFromEndFromEnd(sequence, at1, at2) { - var start = sequence.length - 1 - at1; - var end = sequence.length - 1 - at2 + 1; - return sequence.slice(start, end); -} - -function subsequenceFromStartFromEnd(sequence, at1, at2) { - var start = at1; - var end = sequence.length - 1 - at2 + 1; - return sequence.slice(start, end); -} - -function subsequenceFromEndFromStart(sequence, at1, at2) { - var start = sequence.length - 1 - at1; - var end = at2 + 1; - return sequence.slice(start, end); -} - -function subsequenceFirstFromEnd(sequence, at2) { - var start = 0; - var end = sequence.length - 1 - at2 + 1; - return sequence.slice(start, end); -} - -function subsequenceFromStartLast(sequence, at1) { - var start = at1; - var end = sequence.length - 1 + 1; - return sequence.slice(start, end); -} - -function subsequenceFromEndLast(sequence, at1) { - var start = sequence.length - 1 - at1; - var end = sequence.length - 1 + 1; - return sequence.slice(start, end); -} - -// Tests the "get substring" block with a function call. -function test_substring_complex() { - number_of_calls = 0; - assertEquals(get_numbers().slice(1, 3), '23', 'substring # complex'); - check_number_of_calls('substring # complex'); - number_of_calls = 0; - assertEquals((true ? get_numbers() : null).slice(((true ? 2 : null) - 1), true ? 3 : null), '23', 'substring # complex order'); - check_number_of_calls('substring # complex order'); - number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(subsequenceFromEndFromEnd(get_numbers(), 2, 1), '78', 'substring #-end complex'); - check_number_of_calls('substring #-end complex'); - number_of_calls = 0; - assertEquals(subsequenceFromEndFromEnd(true ? get_numbers() : null, ((0 + 3) - 1), ((0 + 2) - 1)), '78', 'substring #-end order order'); - check_number_of_calls('substring #-end order order'); - number_of_calls = 0; - assertEquals(get_numbers(), text, 'substring first-last'); - check_number_of_calls('substring first-last'); - number_of_calls = 0; - assertEquals(subsequenceFromStartFromEnd(get_numbers(), 1, 1), '2345678', 'substring # #-end complex'); - check_number_of_calls('substring # #-end complex'); - number_of_calls = 0; - assertEquals(subsequenceFromEndFromStart(get_numbers(), 6, 3), '34', 'substring #-end # complex'); - check_number_of_calls('substring #-end # complex'); - number_of_calls = 0; - assertEquals(get_numbers().slice(0, 4), '1234', 'substring first # complex'); - check_number_of_calls('substring first # complex'); - number_of_calls = 0; - assertEquals(subsequenceFirstFromEnd(get_numbers(), 1), '12345678', 'substring first #-end complex'); - check_number_of_calls('substring first #-end complex'); - number_of_calls = 0; - assertEquals(subsequenceFromStartLast(get_numbers(), 6), '789', 'substring # last complex'); - check_number_of_calls('substring # last complex'); - number_of_calls = 0; - assertEquals(subsequenceFromEndLast(get_numbers(), 2), '789', 'substring #-end last complex'); - check_number_of_calls('substring #-end last complex'); - number_of_calls = 0; - assertEquals(subsequenceFromStartFromEnd(get_numbers(), 0, 0), '123456789', 'substring all with # #-end complex'); - check_number_of_calls('substring all with # #-end complex'); - number_of_calls = 0; - assertEquals(subsequenceFromEndFromStart(get_numbers(), 8, 8), '123456789', 'substring all with #-end # complex'); - check_number_of_calls('substring all with #-end # complex'); - number_of_calls = 0; - // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - assertEquals(subsequenceFromStartFromEnd(get_numbers(), ((0 + 1) - 1), ((0 + 1) - 1)), '123456789', 'substring all with # #-end math complex'); - check_number_of_calls('substring all with # #-end math complex'); -} - -function textToTitleCase(str) { - return str.replace(/\S+/g, - function(txt) {return txt[0].toUpperCase() + txt.substring(1).toLowerCase();}); -} - -// Tests the "change casing" block. -function test_case() { - text = 'Hello World'; - assertEquals(text.toUpperCase(), 'HELLO WORLD', 'uppercase'); - assertEquals((true ? text : null).toUpperCase(), 'HELLO WORLD', 'uppercase order'); - text = 'Hello World'; - assertEquals(text.toLowerCase(), 'hello world', 'lowercase'); - assertEquals((true ? text : null).toLowerCase(), 'hello world', 'lowercase order'); - text = 'heLLo WorlD'; - assertEquals(textToTitleCase(text), 'Hello World', 'titlecase'); - assertEquals(textToTitleCase(true ? text : null), 'Hello World', 'titlecase order'); -} - -// Tests the "trim" block. -function test_trim() { - text = ' abc def '; - assertEquals(text.trim(), 'abc def', 'trim both'); - assertEquals((true ? text : null).trim(), 'abc def', 'trim both order'); - assertEquals(text.replace(/^[\s\xa0]+/, ''), 'abc def ', 'trim left'); - assertEquals((true ? text : null).replace(/^[\s\xa0]+/, ''), 'abc def ', 'trim left order'); - assertEquals(text.replace(/[\s\xa0]+$/, ''), ' abc def', 'trim right'); - assertEquals((true ? text : null).replace(/[\s\xa0]+$/, ''), ' abc def', 'trim right order'); -} - -function textCount(haystack, needle) { - if (needle.length === 0) { - return haystack.length + 1; - } else { - return haystack.split(needle).length - 1; - } -} - -// Tests the "trim" block. -function test_count_text() { - text = 'woolloomooloo'; - assertEquals(textCount(text, 'o'), 8, 'len 1'); - assertEquals(textCount(text, 'oo'), 4, 'len 2'); - assertEquals(textCount(text, 'loo'), 2, 'len 3'); - assertEquals(textCount(text, 'wool'), 1, 'start'); - assertEquals(textCount(text, 'chicken'), 0, 'missing'); - assertEquals(textCount(text, ''), 14, 'empty needle'); - assertEquals(textCount('', 'chicken'), 0, 'empty source'); -} - -// Tests the "trim" block. -function test_text_reverse() { - assertEquals(''.split('').reverse().join(''), '', 'empty string'); - assertEquals('a'.split('').reverse().join(''), 'a', 'len 1'); - assertEquals('ab'.split('').reverse().join(''), 'ba', 'len 2'); - assertEquals('woolloomooloo'.split('').reverse().join(''), 'ooloomoolloow', 'longer'); -} - -function textReplace(haystack, needle, replacement) { - needle = needle.replace(/([-()\[\]{}+?*.$\^|,:# 0, true, 'get random simple'); - assertEquals(list[1], 'Spock', 'get # simple'); - assertEquals(list[((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); - assertEquals(list.slice(-3)[0], 'Kirk', 'get #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list.slice((-(0 + 3)))[0], 'Kirk', 'get #-end order simple'); -} - -// Tests the "get" block with create list call. -function test_get_lists_create_list() { - assertEquals(['Kirk', 'Spock', 'McCoy'][0], 'Kirk', 'get first create list'); - assertEquals(['Kirk', 'Spock', 'McCoy'].slice(-1)[0], 'McCoy', 'get last simple'); - assertEquals(['Kirk', 'Spock', 'McCoy'].indexOf(listsGetRandomItem(['Kirk', 'Spock', 'McCoy'], false)) + 1 > 0, true, 'get random simple'); - assertEquals(['Kirk', 'Spock', 'McCoy'][1], 'Spock', 'get # simple'); - assertEquals(['Kirk', 'Spock', 'McCoy'][((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); - assertEquals(['Kirk', 'Spock', 'McCoy'].slice(-3)[0], 'Kirk', 'get #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(['Kirk', 'Spock', 'McCoy'].slice((-(0 + 3)))[0], 'Kirk', 'get #-end order simple'); -} - -// Creates a list for use with the get test. -function get_star_wars() { - number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; - return ['Kirk', 'Spock', 'McCoy']; -} - -// Tests the "get" block with a function call. -function test_get_lists_complex() { - list = ['Kirk', 'Spock', 'McCoy']; - number_of_calls = 0; - assertEquals(get_star_wars()[0], 'Kirk', 'get first complex'); - check_number_of_calls('get first complex'); - number_of_calls = 0; - assertEquals((true ? get_star_wars() : null)[0], 'Kirk', 'get first order complex'); - check_number_of_calls('get first order complex'); - number_of_calls = 0; - assertEquals(get_star_wars().slice(-1)[0], 'McCoy', 'get last complex'); - check_number_of_calls('get last complex'); - number_of_calls = 0; - assertEquals((true ? get_star_wars() : null).slice(-1)[0], 'McCoy', 'get last order complex'); - check_number_of_calls('get last order complex'); - number_of_calls = 0; - assertEquals(list.indexOf(listsGetRandomItem(get_star_wars(), false)) + 1 > 0, true, 'get random complex'); - check_number_of_calls('get random complex'); - number_of_calls = 0; - assertEquals(list.indexOf(listsGetRandomItem(true ? get_star_wars() : null, false)) + 1 > 0, true, 'get random order complex'); - check_number_of_calls('get random order complex'); - number_of_calls = 0; - assertEquals(get_star_wars()[1], 'Spock', 'get # complex'); - check_number_of_calls('get # complex'); - number_of_calls = 0; - assertEquals((true ? get_star_wars() : null)[((true ? 2 : null) - 1)], 'Spock', 'get # order complex'); - check_number_of_calls('get # order complex'); - number_of_calls = 0; - assertEquals(get_star_wars().slice(-3)[0], 'Kirk', 'get #-end complex'); - check_number_of_calls('get #-end complex'); - number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals((true ? get_star_wars() : null).slice((-(0 + 3)))[0], 'Kirk', 'get #-end order complex'); - check_number_of_calls('get #-end order complex'); -} - -// Tests the "get and remove" block. -function test_getRemove() { - list = ['Kirk', 'Spock', 'McCoy']; - assertEquals(list.shift(), 'Kirk', 'getremove first'); - assertEquals(list, ['Spock', 'McCoy'], 'getremove first list'); - list = ['Kirk', 'Spock', 'McCoy']; - assertEquals((true ? list : null).shift(), 'Kirk', 'getremove first order'); - assertEquals(list, ['Spock', 'McCoy'], 'getremove first order list'); - list = ['Kirk', 'Spock', 'McCoy']; - assertEquals(list.pop(), 'McCoy', 'getremove last'); - assertEquals(list, ['Kirk', 'Spock'], 'getremove last list'); - list = ['Kirk', 'Spock', 'McCoy']; - assertEquals((true ? list : null).pop(), 'McCoy', 'getremove last order'); - assertEquals(list, ['Kirk', 'Spock'], 'getremove last order list'); - list = ['Kirk', 'Spock', 'McCoy']; - assertEquals(list.indexOf(listsGetRandomItem(list, true)) + 1 == 0, true, 'getremove random'); - assertEquals(list.length, 2, 'getremove random list'); - list = ['Kirk', 'Spock', 'McCoy']; - assertEquals(list.indexOf(listsGetRandomItem(true ? list : null, true)) + 1 == 0, true, 'getremove random order'); - assertEquals(list.length, 2, 'getremove random order list'); - list = ['Kirk', 'Spock', 'McCoy']; - assertEquals(list.splice(1, 1)[0], 'Spock', 'getremove #'); - assertEquals(list, ['Kirk', 'McCoy'], 'getremove # list'); - list = ['Kirk', 'Spock', 'McCoy']; - assertEquals((true ? list : null).splice(((true ? 2 : null) - 1), 1)[0], 'Spock', 'getremove # order'); - assertEquals(list, ['Kirk', 'McCoy'], 'getremove # order list'); - list = ['Kirk', 'Spock', 'McCoy']; - assertEquals(list.splice(-3, 1)[0], 'Kirk', 'getremove #-end'); - assertEquals(list, ['Spock', 'McCoy'], 'getremove #-end list'); - list = ['Kirk', 'Spock', 'McCoy']; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals((true ? list : null).splice((-(0 + 3)), 1)[0], 'Kirk', 'getremove #-end order'); - assertEquals(list, ['Spock', 'McCoy'], 'getremove #-end order list'); -} - -// Tests the "remove" block. -function test_remove() { - list = ['Kirk', 'Spock', 'McCoy']; - list.shift(); - assertEquals(list, ['Spock', 'McCoy'], 'remove first list'); - list = ['Kirk', 'Spock', 'McCoy']; - (true ? list : null).shift(); - assertEquals(list, ['Spock', 'McCoy'], 'remove first order list'); - list = ['Kirk', 'Spock', 'McCoy']; - list.pop(); - assertEquals(list, ['Kirk', 'Spock'], 'remove last list'); - list = ['Kirk', 'Spock', 'McCoy']; - (true ? list : null).pop(); - assertEquals(list, ['Kirk', 'Spock'], 'remove last order list'); - list = ['Kirk', 'Spock', 'McCoy']; - listsGetRandomItem(list, true); - assertEquals(list.length, 2, 'remove random list'); - list = ['Kirk', 'Spock', 'McCoy']; - listsGetRandomItem(true ? list : null, true); - assertEquals(list.length, 2, 'remove random order list'); - list = ['Kirk', 'Spock', 'McCoy']; - list.splice(1, 1); - assertEquals(list, ['Kirk', 'McCoy'], 'remove # list'); - list = ['Kirk', 'Spock', 'McCoy']; - (true ? list : null).splice(((true ? 2 : null) - 1), 1); - assertEquals(list, ['Kirk', 'McCoy'], 'remove # order list'); - list = ['Kirk', 'Spock', 'McCoy']; - list.splice(-3, 1);assertEquals(list, ['Spock', 'McCoy'], 'remove #-end list'); - list = ['Kirk', 'Spock', 'McCoy']; - // The order for index for #-end is addition because this will catch - // errors in generators where most perform the operation ... - index. - (true ? list : null).splice((-(0 + 3)), 1);assertEquals(list, ['Spock', 'McCoy'], 'remove #-end order list'); -} - -// Tests the "set" block. -function test_set() { - list = ['Picard', 'Riker', 'Crusher']; - list[0] = 'Jean-Luc'; - assertEquals(list, ['Jean-Luc', 'Riker', 'Crusher'], 'set first list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null)[0] = 'Jean-Luc'; - assertEquals(list, ['Jean-Luc', 'Riker', 'Crusher'], 'set first order list'); - list = ['Picard', 'Riker', 'Crusher']; - list[list.length - 1] = 'Beverly'; - assertEquals(list, ['Picard', 'Riker', 'Beverly'], 'set last list'); - list = ['Picard', 'Riker', 'Crusher']; - var tmpList = (true ? list : null); - tmpList[tmpList.length - 1] = 'Beverly'; - assertEquals(list, ['Picard', 'Riker', 'Beverly'], 'set last order list'); - list = ['Picard', 'Riker', 'Crusher']; - var tmpX = Math.floor(Math.random() * list.length); - list[tmpX] = 'Data'; - assertEquals(list.length, 3, 'set random list'); - list = ['Picard', 'Riker', 'Crusher']; - var tmpList2 = (true ? list : null); - var tmpX2 = Math.floor(Math.random() * tmpList2.length); - tmpList2[tmpX2] = 'Data'; - assertEquals(list.length, 3, 'set random order list'); - list = ['Picard', 'Riker', 'Crusher']; - list[2] = 'Pulaski'; - assertEquals(list, ['Picard', 'Riker', 'Pulaski'], 'set # list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null)[((true ? 3 : null) - 1)] = 'Pulaski'; - assertEquals(list, ['Picard', 'Riker', 'Pulaski'], 'set # order list'); - list = ['Picard', 'Riker', 'Crusher']; - list[list.length - 1] = 'Pulaski'; - assertEquals(list, ['Picard', 'Riker', 'Pulaski'], 'set #-end list'); - list = ['Picard', 'Riker', 'Crusher']; - // The order for index for #-end is addition because this will catch - // errors in generators where most perform the operation ... - index. - var tmpList3 = (true ? list : null); - tmpList3[tmpList3.length - (0 + 2)] = 'Pulaski'; - assertEquals(list, ['Picard', 'Pulaski', 'Crusher'], 'set #-end order list'); -} - -// Tests the "insert" block. -function test_insert() { - list = ['Picard', 'Riker', 'Crusher']; - list.unshift('Data'); - assertEquals(list, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null).unshift('Data'); - assertEquals(list, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first order list'); - list = ['Picard', 'Riker', 'Crusher']; - list.push('Data'); - assertEquals(list, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null).push('Data'); - assertEquals(list, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last order list'); - list = ['Picard', 'Riker', 'Crusher']; - var tmpX3 = Math.floor(Math.random() * list.length); - list.splice(tmpX3, 0, 'Data'); - assertEquals(list.length, 4, 'insert random list'); - list = ['Picard', 'Riker', 'Crusher']; - var tmpList4 = (true ? list : null); - var tmpX4 = Math.floor(Math.random() * tmpList4.length); - tmpList4.splice(tmpX4, 0, 'Data'); - assertEquals(list.length, 4, 'insert random order list'); - list = ['Picard', 'Riker', 'Crusher']; - list.splice(2, 0, 'Data'); - assertEquals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # list'); - list = ['Picard', 'Riker', 'Crusher']; - (true ? list : null).splice(((true ? 3 : null) - 1), 0, 'Data'); - assertEquals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # order list'); - list = ['Picard', 'Riker', 'Crusher']; - list.splice(list.length - 1, 0, 'Data'); - assertEquals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert #-end list'); - list = ['Picard', 'Riker', 'Crusher']; - // The order for index for #-end is addition because this will catch - // errors in generators where most perform the operation ... - index. - var tmpList5 = (true ? list : null); - tmpList5.splice(tmpList5.length - (0 + 2), 0, 'Data'); - assertEquals(list, ['Picard', 'Data', 'Riker', 'Crusher'], 'insert #-end order list'); -} - -// Tests the "get sub-list" block with a variable. -function test_sublist_simple() { - list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; - assertEquals(list.slice(1, 3), ['Challenger', 'Discovery'], 'sublist # simple'); - assertEquals(list.slice(((true ? 2 : null) - 1), true ? 3 : null), ['Challenger', 'Discovery'], 'sublist # simple order'); - assertEquals(list.slice(list.length - 3, list.length - 1), ['Discovery', 'Atlantis'], 'sublist #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list.slice(list.length - (0 + 3), list.length - ((0 + 2) - 1)), ['Discovery', 'Atlantis'], 'sublist #-end simple order'); - assertEquals(list.slice(0), list, 'sublist first-last simple'); - changing_list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; - list_copy = changing_list.slice(0); - listsGetRandomItem(changing_list, true); - assertEquals(list_copy, list, 'sublist first-last simple copy check'); - assertEquals(list.slice(1, list.length - 1), ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end simple'); - assertEquals(list.slice(list.length - 3, 4), ['Discovery', 'Atlantis'], 'sublist #-end # simple'); - assertEquals(list.slice(0, 4), ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # simple'); - assertEquals(list.slice(0, list.length - 3), ['Columbia', 'Challenger'], 'sublist first #-end simple'); - assertEquals(list.slice(3, list.length), ['Atlantis', 'Endeavour'], 'sublist # last simple'); - assertEquals(list.slice(list.length - 4, list.length), ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple'); - assertEquals(list.slice(0, list.length - 0), list, 'sublist all with # #-end simple'); - assertEquals(list.slice(list.length - 5, 5), list, 'sublist all with #-end # simple'); - // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - assertEquals(list.slice(((0 + 1) - 1), list.length - ((0 + 1) - 1)), list, 'sublist all with # #-end math simple'); -} - -// Creates a list for use with the sublist test. -function get_space_shuttles() { - number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; - return ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; -} - -// Tests the "get sub-list" block with a function call. -function test_sublist_complex() { - number_of_calls = 0; - assertEquals(get_space_shuttles().slice(1, 3), ['Challenger', 'Discovery'], 'sublist # start complex'); - check_number_of_calls('sublist # start complex'); - number_of_calls = 0; - assertEquals((true ? get_space_shuttles() : null).slice(((true ? 2 : null) - 1), true ? 3 : null), ['Challenger', 'Discovery'], 'sublist # start order complex'); - check_number_of_calls('sublist # start order complex'); - number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(subsequenceFromEndFromEnd(get_space_shuttles(), 2, 1), ['Discovery', 'Atlantis'], 'sublist # end complex'); - assertEquals(number_of_calls, 1, 'sublist # end complex number of calls'); - number_of_calls = 0; - assertEquals(subsequenceFromEndFromEnd((true ? get_space_shuttles() : null), ((0 + 3) - 1), ((0 + 2) - 1)), ['Discovery', 'Atlantis'], 'sublist # end order complex'); - check_number_of_calls('sublist # end order complex'); - number_of_calls = 0; - assertEquals(get_space_shuttles().slice(0), list, 'sublist first-last complex'); - check_number_of_calls('sublist first-last complex'); - number_of_calls = 0; - assertEquals(subsequenceFromStartFromEnd(get_space_shuttles(), 1, 1), ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end complex'); - check_number_of_calls('sublist # #-end complex'); - number_of_calls = 0; - assertEquals(subsequenceFromEndFromStart(get_space_shuttles(), 2, 3), ['Discovery', 'Atlantis'], 'sublist #-end # complex'); - check_number_of_calls('sublist #-end # complex'); - number_of_calls = 0; - assertEquals(get_space_shuttles().slice(0, 4), ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # complex'); - check_number_of_calls('sublist first # complex'); - number_of_calls = 0; - assertEquals(subsequenceFirstFromEnd(get_space_shuttles(), 3), ['Columbia', 'Challenger'], 'sublist first #-end complex'); - check_number_of_calls('sublist first #-end complex'); - number_of_calls = 0; - assertEquals(subsequenceFromStartLast(get_space_shuttles(), 3), ['Atlantis', 'Endeavour'], 'sublist # last complex'); - check_number_of_calls('sublist # last complex'); - number_of_calls = 0; - assertEquals(subsequenceFromEndLast(get_space_shuttles(), 3), ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple'); - check_number_of_calls('sublist #-end last simple'); - number_of_calls = 0; - assertEquals(subsequenceFromStartFromEnd(get_space_shuttles(), 0, 0), list, 'sublist all with # #-end complex'); - check_number_of_calls('sublist all with # #-end complex'); - number_of_calls = 0; - assertEquals(subsequenceFromEndFromStart(get_space_shuttles(), 4, 4), list, 'sublist all with #-end # complex'); - check_number_of_calls('sublist all with #-end # complex'); - number_of_calls = 0; - // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - assertEquals(subsequenceFromStartFromEnd(get_space_shuttles(), ((0 + 1) - 1), ((0 + 1) - 1)), list, 'sublist all with # #-end math complex'); - check_number_of_calls('sublist all with # #-end math complex'); -} - -// Tests the "join" block. -function test_join() { - list = ['Vulcan', 'Klingon', 'Borg']; - assertEquals(list.join(','), 'Vulcan,Klingon,Borg', 'join'); - assertEquals((true ? list : null).join(','), 'Vulcan,Klingon,Borg', 'join order'); -} - -// Tests the "split" block. -function test_split() { - text = 'Vulcan,Klingon,Borg'; - assertEquals(text.split(','), ['Vulcan', 'Klingon', 'Borg'], 'split'); - assertEquals((true ? text : null).split(','), ['Vulcan', 'Klingon', 'Borg'], 'split order'); -} - -function listsGetSortCompare(type, direction) { - var compareFuncs = { - 'NUMERIC': function(a, b) { - return Number(a) - Number(b); }, - 'TEXT': function(a, b) { - return a.toString() > b.toString() ? 1 : -1; }, - 'IGNORE_CASE': function(a, b) { - return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; }, - }; - var compare = compareFuncs[type]; - return function(a, b) { return compare(a, b) * direction; }; -} - -// Tests the "alphabetic sort" block. -function test_sort_alphabetic() { - list = ['Vulcan', 'klingon', 'Borg']; - assertEquals(list.slice().sort(listsGetSortCompare("TEXT", 1)), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending'); - assertEquals((true ? list : null).slice().sort(listsGetSortCompare("TEXT", 1)), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending order'); -} - -// Tests the "alphabetic sort ignore case" block. -function test_sort_ignoreCase() { - list = ['Vulcan', 'klingon', 'Borg']; - assertEquals(list.slice().sort(listsGetSortCompare("IGNORE_CASE", 1)), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending'); - assertEquals((true ? list : null).slice().sort(listsGetSortCompare("IGNORE_CASE", 1)), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending order'); -} - -// Tests the "numeric sort" block. -function test_sort_numeric() { - list = [8, 18, -1]; - assertEquals(list.slice().sort(listsGetSortCompare("NUMERIC", -1)), [18, 8, -1], 'sort numeric descending'); - assertEquals((true ? list : null).slice().sort(listsGetSortCompare("NUMERIC", -1)), [18, 8, -1], 'sort numeric descending order'); -} - -// Tests the "list reverse" block. -function test_lists_reverse() { - list = [8, 18, -1, 64]; - assertEquals(list.slice().reverse(), [64, -1, 18, 8], 'reverse a copy'); - assertEquals(list, [8, 18, -1, 64], 'reverse a copy original'); - list = []; - assertEquals(list.slice().reverse(), [], 'empty list'); -} - -// Describe this function... -function test_colour_picker() { - assertEquals('#ff6600', '#ff6600', 'static colour'); -} - -function colourRgb(r, g, b) { - r = Math.max(Math.min(Number(r), 100), 0) * 2.55; - g = Math.max(Math.min(Number(g), 100), 0) * 2.55; - b = Math.max(Math.min(Number(b), 100), 0) * 2.55; - r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2); - g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2); - b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2); - return '#' + r + g + b; -} - -// Describe this function... -function test_rgb() { - assertEquals(colourRgb(100, 40, 0), '#ff6600', 'from rgb'); -} - -function colourRandom() { - var num = Math.floor(Math.random() * Math.pow(2, 24)); - return '#' + ('00000' + num.toString(16)).substr(-6); -} - -// Describe this function... -function test_colour_random() { - for (var count4 = 0; count4 < 100; count4++) { - item = colourRandom(); - assertEquals(item.length, 7, 'length of random colour string: ' + String(item)); - assertEquals(item.charAt(0), '#', 'format of random colour string: ' + String(item)); - for (i = 1; i <= 6; i++) { - assertEquals(0 != 'abcdefABDEF0123456789'.indexOf(item.charAt(((i + 1) - 1))) + 1, true, ['contents of random colour string: ',item,' at index: ',i + 1].join('')); - } - } -} - -function colourBlend(c1, c2, ratio) { - ratio = Math.max(Math.min(Number(ratio), 1), 0); - var r1 = parseInt(c1.substring(1, 3), 16); - var g1 = parseInt(c1.substring(3, 5), 16); - var b1 = parseInt(c1.substring(5, 7), 16); - var r2 = parseInt(c2.substring(1, 3), 16); - var g2 = parseInt(c2.substring(3, 5), 16); - var b2 = parseInt(c2.substring(5, 7), 16); - var r = Math.round(r1 * (1 - ratio) + r2 * ratio); - var g = Math.round(g1 * (1 - ratio) + g2 * ratio); - var b = Math.round(b1 * (1 - ratio) + b2 * ratio); - r = ('0' + (r || 0).toString(16)).slice(-2); - g = ('0' + (g || 0).toString(16)).slice(-2); - b = ('0' + (b || 0).toString(16)).slice(-2); - return '#' + r + g + b; -} - -// Describe this function... -function test_blend() { - assertEquals(colourBlend('#ff0000', colourRgb(100, 40, 0), 0.4), '#ff2900', 'blend'); -} - -// Describe this function... -function test_procedure() { - procedure_1(8, 2); - assertEquals(proc_z, 4, 'procedure with global'); - proc_w = false; - procedure_2(false); - assertEquals(proc_w, true, 'procedure no return'); - proc_w = false; - procedure_2(true); - assertEquals(proc_w, false, 'procedure return'); -} - -// Describe this function... -function procedure_1(proc_x, proc_y) { - proc_z = proc_x / proc_y; -} - -// Describe this function... -function procedure_2(proc_x) { - if (proc_x) { - return; - } - proc_w = true; -} - -// Describe this function... -function test_function() { - assertEquals(function_1(2, 3), -1, 'function with arguments'); - assertEquals(func_z, 'side effect', 'function with side effect'); - func_a = 'unchanged'; - func_c = 'global'; - assertEquals(function_2(2), '3global', 'function with global'); - assertEquals(func_a, 'unchanged', 'function with scope'); - assertEquals(function_3(true), true, 'function return'); - assertEquals(function_3(false), false, 'function no return'); -} - -// Describe this function... -function function_1(func_x, func_y) { - func_z = 'side effect'; - return func_x - func_y; -} - -// Describe this function... -function function_2(func_a) { - func_a = (typeof func_a === 'number' ? func_a : 0) + 1; - return String(func_a) + String(func_c); -} - -// Describe this function... -function function_3(func_a) { - if (func_a) { - return true; - } - return false; -} - -// Describe this function... -function recurse(n) { - if (n > 0) { - text = [recurse(n - 1),n,recurse(n - 1)].join(''); - } else { - text = '-'; - } - return text; -} - - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Logic') -assertEquals(true, true, 'True'); -assertEquals(false, false, 'False'); -assertEquals(!false, true, 'Not true'); -assertEquals(!true, false, 'Not false'); -test_if(); -test_ifelse(); -test_equalities(); -test_and(); -test_or(); -test_ternary(); -console.log(unittest_report()); -unittestResults = null; - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Loops 1') -test_repeat(); -test_repeat_ext(); -test_while(); -test_foreach(); -console.log(unittest_report()); -unittestResults = null; - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Loops 2') -test_count_loops(); -test_count_by(); -console.log(unittest_report()); -unittestResults = null; - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Loops 3') -test_break(); -test_continue(); -console.log(unittest_report()); -unittestResults = null; - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Math') -test_arithmetic(); -test_single(); -test_trig(); -test_constant(); -test_change(); -test_number_properties(); -test_round(); -test_operations_on_list(); -test_constraint(); -test_mod(); -test_random_integer(); -test_random_fraction(); -test_atan2(); -console.log(unittest_report()); -unittestResults = null; - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Text') -test_text_length(); -test_empty_text(); -test_create_text(); -test_append(); -test_find_text_simple(); -test_find_text_complex(); -test_get_text_simple(); -test_get_text_complex(); -test_substring_simple(); -test_substring_complex(); -test_case(); -test_trim(); -test_count_text(); -test_text_reverse(); -test_replace(); -test_multiline(); -console.log(unittest_report()); -unittestResults = null; - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Lists') -test_create_lists(); -test_lists_empty(); -test_lists_length(); -test_find_lists_simple(); -test_find_lists_complex(); -test_get_lists_simple(); -test_get_lists_create_list(); -test_get_lists_complex(); -test_getRemove(); -test_remove(); -test_set(); -test_insert(); -test_sublist_simple(); -test_sublist_complex(); -test_join(); -test_split(); -test_sort_alphabetic(); -test_sort_ignoreCase(); -test_sort_numeric(); -test_lists_reverse(); -console.log(unittest_report()); -unittestResults = null; - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Colour') -test_colour_picker(); -test_blend(); -test_rgb(); -test_colour_random(); -console.log(unittest_report()); -unittestResults = null; - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Variables') -item = 123; -assertEquals(item, 123, 'variable'); -if2 = 123; -assertEquals(if2, 123, 'reserved variable'); -console.log(unittest_report()); -unittestResults = null; - -// Intentionally non-connected variable. -naked; - -unittestResults = []; -console.log('\n====================\n\nRunning suite: Functions') -test_procedure(); -test_function(); -assertEquals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse'); -console.log(unittest_report()); -unittestResults = null; +'use strict'; + +var unittestResults, test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy; + +function unittest_report() { + // Create test report. + var report = []; + var summary = []; + var fails = 0; + for (var i = 0; i < unittestResults.length; i++) { + if (unittestResults[i][0]) { + summary.push("."); + } else { + summary.push("F"); + fails++; + report.push(""); + report.push("FAIL: " + unittestResults[i][2]); + report.push(unittestResults[i][1]); + } + } + report.unshift(summary.join("")); + report.push(""); + report.push("Number of tests run: " + unittestResults.length); + report.push(""); + if (fails) { + report.push("FAILED (failures=" + fails + ")"); + } else { + report.push("OK"); + } + return report.join("\n"); +} + +function assertEquals(actual, expected, message) { + // Asserts that a value equals another value. + if (!unittestResults) { + throw "Orphaned assert: " + message; + } + function equals(a, b) { + if (a === b) { + return true; + } else if ((typeof a === "number") && (typeof b === "number") && + (a.toPrecision(15) == b.toPrecision(15))) { + return true; + } else if (a instanceof Array && b instanceof Array) { + if (a.length !== b.length) { + return false; + } + for (var i = 0; i < a.length; i++) { + if (!equals(a[i], b[i])) { + return false; + } + } + return true; + } + return false; + } + if (equals(actual, expected)) { + unittestResults.push([true, "OK", message]); + } else { + unittestResults.push([false, "Expected: " + expected + "\nActual: " + actual, message]); + } +} + +function unittest_fail(message) { + // Always assert an error. + if (!unittestResults) { + throw "Orphaned assert fail: " + message; + } + unittestResults.push([false, "Fail.", message]); +} + +// Describe this function... +function test_if() { + if (false) { + unittest_fail('if false'); + } + ok = false; + if (true) { + ok = true; + } + assertEquals(ok, true, 'if true'); + ok = false; + if (false) { + unittest_fail('if/else false'); + } else { + ok = true; + } + assertEquals(ok, true, 'if/else false'); + ok = false; + if (true) { + ok = true; + } else { + unittest_fail('if/else true'); + } + assertEquals(ok, true, 'if/else true'); + ok = false; + if (false) { + unittest_fail('elseif 1'); + } else if (true) { + ok = true; + } else if (true) { + unittest_fail('elseif 2'); + } else { + unittest_fail('elseif 3'); + } + assertEquals(ok, true, 'elseif 4'); +} + +// Describe this function... +function test_ifelse() { + ok = false; + if (true) { + ok = true; + } else { + unittest_fail('ifelse true'); + } + assertEquals(ok, true, 'ifelse true'); + ok = false; + if (false) { + unittest_fail('ifelse false'); + } else { + ok = true; + } + assertEquals(ok, true, 'ifelse false'); +} + +// Describe this function... +function test_equalities() { + assertEquals(2 == 2, true, 'Equal yes'); + assertEquals(3 == 4, false, 'Equal no'); + assertEquals(5 != 6, true, 'Not equal yes'); + assertEquals(3 == 4, false, 'Not equal no'); + assertEquals(5 < 6, true, 'Smaller yes'); + assertEquals(7 < 7, false, 'Smaller no'); + assertEquals(9 > 8, true, 'Greater yes'); + assertEquals(10 > 10, false, 'Greater no'); + assertEquals(11 <= 11, true, 'Smaller-equal yes'); + assertEquals(13 <= 12, false, 'Smaller-equal no'); + assertEquals(14 >= 14, true, 'Greater-equal yes'); + assertEquals(15 >= 16, false, 'Greater-equal no'); +} + +// Describe this function... +function test_and() { + assertEquals(true && true, true, 'And true/true'); + assertEquals(false && true, false, 'And false/true'); + assertEquals(true && false, false, 'And true/false'); + assertEquals(false && false, false, 'And false/false'); +} + +// Describe this function... +function test_or() { + assertEquals(true || true, true, 'Or true/true'); + assertEquals(false || true, true, 'Or false/true'); + assertEquals(true || false, true, 'Or true/false'); + assertEquals(false || false, false, 'Or false/false'); +} + +// Describe this function... +function test_ternary() { + assertEquals(true ? 42 : 99, 42, 'if true'); + assertEquals(false ? 42 : 99, 99, 'if true'); +} + +// Describe this function... +function test_foreach() { + log = ''; + var x_list = ['a', 'b', 'c']; + for (var x_index in x_list) { + x = x_list[x_index]; + log += String(x); + } + assertEquals(log, 'abc', 'for loop'); +} + +// Describe this function... +function test_repeat() { + count = 0; + for (var count2 = 0; count2 < 10; count2++) { + count = (typeof count === 'number' ? count : 0) + 1; + } + assertEquals(count, 10, 'repeat 10'); +} + +// Describe this function... +function test_while() { + while (false) { + unittest_fail('while 0'); + } + while (!true) { + unittest_fail('until 0'); + } + count = 1; + while (count != 10) { + count = (typeof count === 'number' ? count : 0) + 1; + } + assertEquals(count, 10, 'while 10'); + count = 1; + while (!(count == 10)) { + count = (typeof count === 'number' ? count : 0) + 1; + } + assertEquals(count, 10, 'until 10'); +} + +// Describe this function... +function test_repeat_ext() { + count = 0; + for (var count3 = 0; count3 < 10; count3++) { + count = (typeof count === 'number' ? count : 0) + 1; + } + assertEquals(count, 10, 'repeat 10'); +} + +// Describe this function... +function test_count_by() { + log = ''; + for (x = 1; x <= 8; x += 2) { + log += String(x); + } + assertEquals(log, '1357', 'count up ints'); + log = ''; + for (x = 8; x >= 1; x -= 2) { + log += String(x); + } + assertEquals(log, '8642', 'count down ints'); + loglist = []; + for (x = 1; x <= 8; x += 1.5) { + loglist.push(x); + } + assertEquals(loglist, [1, 2.5, 4, 5.5, 7], 'count with floats'); + loglist = []; + var x_start = 1 + 0; + var x_end = 8 + 0; + var x_inc = Math.abs(1 - 2); + if (x_start > x_end) { + x_inc = -x_inc; + } + for (x = x_start; x_inc >= 0 ? x <= x_end : x >= x_end; x += x_inc) { + loglist.push(x); + } + assertEquals(loglist, [1, 2, 3, 4, 5, 6, 7, 8], 'count up non-trivial ints'); + loglist = []; + var x_start2 = 8 + 0; + var x_end2 = 1 + 0; + var x_inc2 = 2; + if (x_start2 > x_end2) { + x_inc2 = -x_inc2; + } + for (x = x_start2; x_inc2 >= 0 ? x <= x_end2 : x >= x_end2; x += x_inc2) { + loglist.push(x); + } + assertEquals(loglist, [8, 6, 4, 2], 'count down non-trivial ints'); + loglist = []; + var x_start3 = 5 + 0.5; + var x_end3 = 1 + 0; + var x_inc3 = Math.abs(1 + 0); + if (x_start3 > x_end3) { + x_inc3 = -x_inc3; + } + for (x = x_start3; x_inc3 >= 0 ? x <= x_end3 : x >= x_end3; x += x_inc3) { + loglist.push(x); + } + assertEquals(loglist, [5.5, 4.5, 3.5, 2.5, 1.5], 'count with floats'); +} + +// Describe this function... +function test_count_loops() { + log = ''; + for (x = 1; x <= 8; x++) { + log += String(x); + } + assertEquals(log, '12345678', 'count up'); + log = ''; + for (x = 8; x >= 1; x--) { + log += String(x); + } + assertEquals(log, '87654321', 'count down'); + loglist = []; + var x_start4 = 1 + 0; + var x_end4 = 4 + 0; + var x_inc4 = 1; + if (x_start4 > x_end4) { + x_inc4 = -x_inc4; + } + for (x = x_start4; x_inc4 >= 0 ? x <= x_end4 : x >= x_end4; x += x_inc4) { + loglist.push(x); + } + assertEquals(loglist, [1, 2, 3, 4], 'count up non-trivial'); + loglist = []; + var x_start5 = 3 + 1; + var x_end5 = 1 + 0; + var x_inc5 = 1; + if (x_start5 > x_end5) { + x_inc5 = -x_inc5; + } + for (x = x_start5; x_inc5 >= 0 ? x <= x_end5 : x >= x_end5; x += x_inc5) { + loglist.push(x); + } + assertEquals(loglist, [4, 3, 2, 1], 'count down non-trivial'); +} + +// Describe this function... +function test_continue() { + log = ''; + count = 0; + while (count != 8) { + count = (typeof count === 'number' ? count : 0) + 1; + if (count == 5) { + continue; + } + log += String(count); + } + assertEquals(log, '1234678', 'while continue'); + log = ''; + count = 0; + while (!(count == 8)) { + count = (typeof count === 'number' ? count : 0) + 1; + if (count == 5) { + continue; + } + log += String(count); + } + assertEquals(log, '1234678', 'until continue'); + log = ''; + for (x = 1; x <= 8; x++) { + if (x == 5) { + continue; + } + log += String(x); + } + assertEquals(log, '1234678', 'count continue'); + log = ''; + var x_list2 = ['a', 'b', 'c', 'd']; + for (var x_index2 in x_list2) { + x = x_list2[x_index2]; + if (x == 'c') { + continue; + } + log += String(x); + } + assertEquals(log, 'abd', 'for continue'); +} + +// Describe this function... +function test_break() { + count = 1; + while (count != 10) { + if (count == 5) { + break; + } + count = (typeof count === 'number' ? count : 0) + 1; + } + assertEquals(count, 5, 'while break'); + count = 1; + while (!(count == 10)) { + if (count == 5) { + break; + } + count = (typeof count === 'number' ? count : 0) + 1; + } + assertEquals(count, 5, 'until break'); + log = ''; + for (x = 1; x <= 8; x++) { + if (x == 5) { + break; + } + log += String(x); + } + assertEquals(log, '1234', 'count break'); + log = ''; + var x_list3 = ['a', 'b', 'c', 'd']; + for (var x_index3 in x_list3) { + x = x_list3[x_index3]; + if (x == 'c') { + break; + } + log += String(x); + } + assertEquals(log, 'ab', 'for break'); +} + +// Tests the "single" block. +function test_single() { + assertEquals(Math.sqrt(25), 5, 'sqrt'); + assertEquals(Math.abs(-25), 25, 'abs'); + assertEquals(-(-25), 25, 'negate'); + assertEquals(Math.log(1), 0, 'ln'); + assertEquals(Math.log(100) / Math.log(10), 2, 'log10'); + assertEquals(Math.exp(2), 7.38905609893065, 'exp'); + assertEquals(Math.pow(10,2), 100, 'power10'); +} + +// Tests the "arithmetic" block for all operations and checks +// parenthesis are properly generated for different orders. +function test_arithmetic() { + assertEquals(1 + 2, 3, 'add'); + assertEquals(1 - 2, -1, 'subtract'); + assertEquals(1 - (0 + 2), -1, 'subtract order with add'); + assertEquals(1 - (0 - 2), 3, 'subtract order with subtract'); + assertEquals(4 * 2.5, 10, 'multiply'); + assertEquals(4 * (0 + 2.5), 10, 'multiply order'); + assertEquals(8.2 / -5, -1.64, 'divide'); + assertEquals(8.2 / (0 + -5), -1.64, 'divide order'); + assertEquals(Math.pow(10, 4), 10000, 'power'); + assertEquals(Math.pow(10, 0 + 4), 10000, 'power order'); +} + +// Tests the "trig" block. +function test_trig() { + assertEquals(Math.sin(90 / 180 * Math.PI), 1, 'sin'); + assertEquals(Math.cos(180 / 180 * Math.PI), -1, 'cos'); + assertEquals(Math.tan(0 / 180 * Math.PI), 0, 'tan'); + assertEquals(Math.asin(-1) / Math.PI * 180, -90, 'asin'); + assertEquals(Math.acos(1) / Math.PI * 180, 0, 'acos'); + assertEquals(Math.atan(1) / Math.PI * 180, 45, 'atan'); +} + +// Tests the "constant" blocks. +function test_constant() { + assertEquals(Math.floor(Math.PI * 1000), 3141, 'const pi'); + assertEquals(Math.floor(Math.E * 1000), 2718, 'const e'); + assertEquals(Math.floor(((1 + Math.sqrt(5)) / 2) * 1000), 1618, 'const golden'); + assertEquals(Math.floor(Math.SQRT2 * 1000), 1414, 'const sqrt 2'); + assertEquals(Math.floor(Math.SQRT1_2 * 1000), 707, 'const sqrt 0.5'); + assertEquals(9999 < Infinity, true, 'const infinity'); +} + +function mathIsPrime(n) { + // https://en.wikipedia.org/wiki/Primality_test#Naive_methods + if (n == 2 || n == 3) { + return true; + } + // False if n is NaN, negative, is 1, or not whole. + // And false if n is divisible by 2 or 3. + if (isNaN(n) || n <= 1 || n % 1 !== 0 || n % 2 === 0 || n % 3 === 0) { + return false; + } + // Check all the numbers of form 6k +/- 1, up to sqrt(n). + for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) { + if (n % (x - 1) === 0 || n % (x + 1) === 0) { + return false; + } + } + return true; +} + +// Tests the "number property" blocks. +function test_number_properties() { + assertEquals(42 % 2 === 0, true, 'even'); + assertEquals(42.1 % 2 === 1, false, 'odd'); + assertEquals(mathIsPrime(5), true, 'prime 5'); + assertEquals(mathIsPrime(5 + 2), true, 'prime 5 + 2 (extra parentheses)'); + assertEquals(mathIsPrime(25), false, 'prime 25'); + assertEquals(mathIsPrime(-31.1), false, 'prime negative'); + assertEquals(Math.PI % 1 === 0, false, 'whole'); + assertEquals(Infinity > 0, true, 'positive'); + assertEquals(5 + 2 > 0, true, '5 + 2 is positive (extra parentheses)'); + assertEquals(-42 < 0, true, 'negative'); + assertEquals(3 + 2 < 0, false, '3 + 2 is negative (extra parentheses)'); + assertEquals(42 % 2 === 0, true, 'divisible'); + assertEquals(!(42 % 0 === 0), true, 'divisible by 0'); +} + +// Tests the "round" block. +function test_round() { + assertEquals(Math.round(42.42), 42, 'round'); + assertEquals(Math.ceil(-42.42), -42, 'round up'); + assertEquals(Math.floor(42.42), 42, 'round down'); +} + +// Tests the "change" block. +function test_change() { + varToChange = 100; + varToChange = (typeof varToChange === 'number' ? varToChange : 0) + 42; + assertEquals(varToChange, 142, 'change'); +} + +function mathMean(myList) { + return myList.reduce(function(x, y) {return x + y;}) / myList.length; +} + +function mathMedian(myList) { + var localList = myList.filter(function (x) {return typeof x === 'number';}); + if (!localList.length) return null; + localList.sort(function(a, b) {return b - a;}); + if (localList.length % 2 === 0) { + return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2; + } else { + return localList[(localList.length - 1) / 2]; + } +} + +function mathModes(values) { + var modes = []; + var counts = []; + var maxCount = 0; + for (var i = 0; i < values.length; i++) { + var value = values[i]; + var found = false; + var thisCount; + for (var j = 0; j < counts.length; j++) { + if (counts[j][0] === value) { + thisCount = ++counts[j][1]; + found = true; + break; + } + } + if (!found) { + counts.push([value, 1]); + thisCount = 1; + } + maxCount = Math.max(thisCount, maxCount); + } + for (var j = 0; j < counts.length; j++) { + if (counts[j][1] === maxCount) { + modes.push(counts[j][0]); + } + } + return modes; +} + +function mathStandardDeviation(numbers) { + var n = numbers.length; + if (!n) return null; + var mean = numbers.reduce(function(x, y) {return x + y;}) / n; + var variance = 0; + for (var j = 0; j < n; j++) { + variance += Math.pow(numbers[j] - mean, 2); + } + variance = variance / n; + return Math.sqrt(variance); +} + +function mathRandomList(list) { + var x = Math.floor(Math.random() * list.length); + return list[x]; +} + +// Tests the "list operation" blocks. +function test_operations_on_list() { + assertEquals([3, 4, 5].reduce(function(x, y) {return x + y;}), 12, 'sum'); + assertEquals(Math.min.apply(null, [3, 4, 5]), 3, 'min'); + assertEquals(Math.max.apply(null, [3, 4, 5]), 5, 'max'); + assertEquals(mathMean([3, 4, 5]), 4, 'average'); + assertEquals(mathMedian([3, 4, 5, 1]), 3.5, 'median'); + assertEquals(mathModes([3, 4, 3]), [3], 'modes'); + assertEquals(mathModes([3, 4, 3, 1, 4]), [3, 4], 'modes multiple'); + assertEquals(mathStandardDeviation([3, 3, 3]), 0, 'standard dev'); + assertEquals([3, 4, 5].indexOf(mathRandomList([3, 4, 5])) + 1 > 0, true, 'random'); +} + +// Tests the "mod" block. +function test_mod() { + assertEquals(42 % 5, 2, 'mod'); +} + +// Tests the "constrain" block. +function test_constraint() { + assertEquals(Math.min(Math.max(100, 0), 42), 42, 'constraint'); +} + +function mathRandomInt(a, b) { + if (a > b) { + // Swap a and b to ensure a is smaller. + var c = a; + a = b; + b = c; + } + return Math.floor(Math.random() * (b - a + 1) + a); +} + +// Tests the "random integer" block. +function test_random_integer() { + rand = mathRandomInt(5, 10); + assertEquals(rand >= 5 && rand <= 10, true, 'randRange'); + assertEquals(rand % 1 === 0, true, 'randInteger'); +} + +// Tests the "random fraction" block. +function test_random_fraction() { + rand = Math.random(); + assertEquals(rand >= 0 && rand <= 1, true, 'randFloat'); +} + +// Describe this function... +function test_atan2() { + assertEquals(Math.atan2(5, -5) / Math.PI * 180, 135, 'atan2'); + assertEquals(Math.atan2(-12, 0) / Math.PI * 180, -90, 'atan2'); +} + +// Checks that the number of calls is one in order +// to confirm that a function was only called once. +function check_number_of_calls(test_name) { + test_name += 'number of calls'; + assertEquals(number_of_calls, 1, test_name); +} + +// Tests the "create text with" block with varying number of inputs. +function test_create_text() { + assertEquals('', '', 'no text'); + assertEquals('Hello', 'Hello', 'create single'); + assertEquals(String(-1), '-1', 'create single number'); + assertEquals('K' + String(9), 'K9', 'create double text'); + assertEquals(String(4) + String(2), '42', 'create double text numbers'); + assertEquals([1,2,3].join(''), '123', 'create triple'); + assertEquals([1,true ? 0 : null,'M'].join(''), '10M', 'create order'); +} + +// Creates an empty string for use with the empty test. +function get_empty() { + return ''; +} + +// Tests the "is empty" block". +function test_empty_text() { + assertEquals(!'Google'.length, false, 'not empty'); + assertEquals(!''.length, true, 'empty'); + assertEquals(!get_empty().length, true, 'empty complex'); + assertEquals(!(true ? '' : null).length, true, 'empty order'); +} + +// Tests the "length" block. +function test_text_length() { + assertEquals(''.length, 0, 'zero length'); + assertEquals('Google'.length, 6, 'non-zero length'); + assertEquals((true ? 'car' : null).length, 3, 'length order'); +} + +// Tests the "append text" block with different types of parameters. +function test_append() { + item = 'Miserable'; + item += 'Failure'; + assertEquals(item, 'MiserableFailure', 'append text'); + item = 12; + item += String(34); + assertEquals(item, '1234', 'append number'); + item = 'Something '; + item += String(true ? 'Positive' : null); + assertEquals(item, 'Something Positive', 'append order'); +} + +// Tests the "find" block with a variable. +function test_find_text_simple() { + text = 'Banana'; + assertEquals(text.indexOf('an') + 1, 2, 'find first simple'); + assertEquals(text.lastIndexOf('an') + 1, 4, 'find last simple'); + assertEquals(text.indexOf('Peel') + 1, 0, 'find none simple'); +} + +// Creates a string for use with the find test. +function get_fruit() { + number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; + return 'Banana'; +} + +// Tests the "find" block with a function call. +function test_find_text_complex() { + number_of_calls = 0; + assertEquals(get_fruit().indexOf('an') + 1, 2, 'find first complex'); + check_number_of_calls('find first complex'); + number_of_calls = 0; + assertEquals((true ? get_fruit() : null).indexOf('an') + 1, 2, 'find first order complex'); + check_number_of_calls('find first order complex'); + number_of_calls = 0; + assertEquals(get_fruit().lastIndexOf('an') + 1, 4, 'find last complex'); + check_number_of_calls('find last complex'); + number_of_calls = 0; + assertEquals((true ? get_fruit() : null).lastIndexOf('an') + 1, 4, 'find last order complex'); + check_number_of_calls('find last order complex'); + number_of_calls = 0; + assertEquals(get_fruit().indexOf('Peel') + 1, 0, 'find none complex'); + check_number_of_calls('find none complex'); + number_of_calls = 0; + assertEquals((true ? get_fruit() : null).indexOf('Peel') + 1, 0, 'find none order complex'); + check_number_of_calls('find none order complex'); +} + +function textRandomLetter(text) { + var x = Math.floor(Math.random() * text.length); + return text[x]; +} + +// Tests the "get letter" block with a variable. +function test_get_text_simple() { + text = 'Blockly'; + assertEquals(text.charAt(0), 'B', 'get first simple'); + assertEquals(text.slice(-1), 'y', 'get last simple'); + assertEquals(text.indexOf(textRandomLetter(text)) + 1 > 0, true, 'get random simple'); + assertEquals(text.charAt(2), 'o', 'get # simple'); + assertEquals(text.charAt(((true ? 3 : null) - 1)), 'o', 'get # order simple'); + assertEquals(text.slice(-3).charAt(0), 'k', 'get #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(text.slice((-(0 + 3))).charAt(0), 'k', 'get #-end order simple'); +} + +// Creates a string for use with the get test. +function get_Blockly() { + number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; + return 'Blockly'; +} + +// Tests the "get letter" block with a function call. +function test_get_text_complex() { + text = 'Blockly'; + number_of_calls = 0; + assertEquals(get_Blockly().charAt(0), 'B', 'get first complex'); + check_number_of_calls('get first complex'); + number_of_calls = 0; + assertEquals((true ? get_Blockly() : null).charAt(0), 'B', 'get first order complex'); + check_number_of_calls('get first order complex'); + number_of_calls = 0; + assertEquals(get_Blockly().slice(-1), 'y', 'get last complex'); + check_number_of_calls('get last complex'); + number_of_calls = 0; + assertEquals((true ? get_Blockly() : null).slice(-1), 'y', 'get last order complex'); + check_number_of_calls('get last order complex'); + number_of_calls = 0; + assertEquals(text.indexOf(textRandomLetter(get_Blockly())) + 1 > 0, true, 'get random complex'); + check_number_of_calls('get random complex'); + number_of_calls = 0; + assertEquals(text.indexOf(textRandomLetter(true ? get_Blockly() : null)) + 1 > 0, true, 'get random order complex'); + check_number_of_calls('get random order complex'); + number_of_calls = 0; + assertEquals(get_Blockly().charAt(2), 'o', 'get # complex'); + check_number_of_calls('get # complex'); + number_of_calls = 0; + assertEquals((true ? get_Blockly() : null).charAt(((true ? 3 : null) - 1)), 'o', 'get # order complex'); + check_number_of_calls('get # order complex'); + number_of_calls = 0; + assertEquals(get_Blockly().slice(-3).charAt(0), 'k', 'get #-end complex'); + check_number_of_calls('get #-end complex'); + number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals((true ? get_Blockly() : null).slice((-(0 + 3))).charAt(0), 'k', 'get #-end order complex'); + check_number_of_calls('get #-end order complex'); +} + +// Creates a string for use with the substring test. +function get_numbers() { + number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; + return '123456789'; +} + +// Tests the "get substring" block with a variable. +function test_substring_simple() { + text = '123456789'; + assertEquals(text.slice(1, 3), '23', 'substring # simple'); + assertEquals(text.slice(((true ? 2 : null) - 1), true ? 3 : null), '23', 'substring # simple order'); + assertEquals(text.slice(text.length - 3, text.length - 1), '78', 'substring #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(text.slice(text.length - (0 + 3), text.length - ((0 + 2) - 1)), '78', 'substring #-end simple order'); + assertEquals(text, text, 'substring first-last simple'); + assertEquals(text.slice(1, text.length - 1), '2345678', 'substring # #-end simple'); + assertEquals(text.slice(text.length - 7, 4), '34', 'substring #-end # simple'); + assertEquals(text.slice(0, 4), '1234', 'substring first # simple'); + assertEquals(text.slice(0, text.length - 1), '12345678', 'substring first #-end simple'); + assertEquals(text.slice(6, text.length), '789', 'substring # last simple'); + assertEquals(text.slice(text.length - 3, text.length), '789', 'substring #-end last simple'); + assertEquals(text.slice(0, text.length - 0), '123456789', 'substring all with # #-end simple'); + assertEquals(text.slice(text.length - 9, 9), '123456789', 'substring all with #-end # simple'); + // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + assertEquals(text.slice(((0 + 1) - 1), text.length - ((0 + 1) - 1)), '123456789', 'substring all with # #-end math simple'); +} + +function subsequenceFromEndFromEnd(sequence, at1, at2) { + var start = sequence.length - 1 - at1; + var end = sequence.length - 1 - at2 + 1; + return sequence.slice(start, end); +} + +function subsequenceFromStartFromEnd(sequence, at1, at2) { + var start = at1; + var end = sequence.length - 1 - at2 + 1; + return sequence.slice(start, end); +} + +function subsequenceFromEndFromStart(sequence, at1, at2) { + var start = sequence.length - 1 - at1; + var end = at2 + 1; + return sequence.slice(start, end); +} + +function subsequenceFirstFromEnd(sequence, at2) { + var start = 0; + var end = sequence.length - 1 - at2 + 1; + return sequence.slice(start, end); +} + +function subsequenceFromStartLast(sequence, at1) { + var start = at1; + var end = sequence.length - 1 + 1; + return sequence.slice(start, end); +} + +function subsequenceFromEndLast(sequence, at1) { + var start = sequence.length - 1 - at1; + var end = sequence.length - 1 + 1; + return sequence.slice(start, end); +} + +// Tests the "get substring" block with a function call. +function test_substring_complex() { + number_of_calls = 0; + assertEquals(get_numbers().slice(1, 3), '23', 'substring # complex'); + check_number_of_calls('substring # complex'); + number_of_calls = 0; + assertEquals((true ? get_numbers() : null).slice(((true ? 2 : null) - 1), true ? 3 : null), '23', 'substring # complex order'); + check_number_of_calls('substring # complex order'); + number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(subsequenceFromEndFromEnd(get_numbers(), 2, 1), '78', 'substring #-end complex'); + check_number_of_calls('substring #-end complex'); + number_of_calls = 0; + assertEquals(subsequenceFromEndFromEnd(true ? get_numbers() : null, ((0 + 3) - 1), ((0 + 2) - 1)), '78', 'substring #-end order order'); + check_number_of_calls('substring #-end order order'); + number_of_calls = 0; + assertEquals(get_numbers(), text, 'substring first-last'); + check_number_of_calls('substring first-last'); + number_of_calls = 0; + assertEquals(subsequenceFromStartFromEnd(get_numbers(), 1, 1), '2345678', 'substring # #-end complex'); + check_number_of_calls('substring # #-end complex'); + number_of_calls = 0; + assertEquals(subsequenceFromEndFromStart(get_numbers(), 6, 3), '34', 'substring #-end # complex'); + check_number_of_calls('substring #-end # complex'); + number_of_calls = 0; + assertEquals(get_numbers().slice(0, 4), '1234', 'substring first # complex'); + check_number_of_calls('substring first # complex'); + number_of_calls = 0; + assertEquals(subsequenceFirstFromEnd(get_numbers(), 1), '12345678', 'substring first #-end complex'); + check_number_of_calls('substring first #-end complex'); + number_of_calls = 0; + assertEquals(subsequenceFromStartLast(get_numbers(), 6), '789', 'substring # last complex'); + check_number_of_calls('substring # last complex'); + number_of_calls = 0; + assertEquals(subsequenceFromEndLast(get_numbers(), 2), '789', 'substring #-end last complex'); + check_number_of_calls('substring #-end last complex'); + number_of_calls = 0; + assertEquals(subsequenceFromStartFromEnd(get_numbers(), 0, 0), '123456789', 'substring all with # #-end complex'); + check_number_of_calls('substring all with # #-end complex'); + number_of_calls = 0; + assertEquals(subsequenceFromEndFromStart(get_numbers(), 8, 8), '123456789', 'substring all with #-end # complex'); + check_number_of_calls('substring all with #-end # complex'); + number_of_calls = 0; + // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + assertEquals(subsequenceFromStartFromEnd(get_numbers(), ((0 + 1) - 1), ((0 + 1) - 1)), '123456789', 'substring all with # #-end math complex'); + check_number_of_calls('substring all with # #-end math complex'); +} + +function textToTitleCase(str) { + return str.replace(/\S+/g, + function(txt) {return txt[0].toUpperCase() + txt.substring(1).toLowerCase();}); +} + +// Tests the "change casing" block. +function test_case() { + text = 'Hello World'; + assertEquals(text.toUpperCase(), 'HELLO WORLD', 'uppercase'); + assertEquals((true ? text : null).toUpperCase(), 'HELLO WORLD', 'uppercase order'); + text = 'Hello World'; + assertEquals(text.toLowerCase(), 'hello world', 'lowercase'); + assertEquals((true ? text : null).toLowerCase(), 'hello world', 'lowercase order'); + text = 'heLLo WorlD'; + assertEquals(textToTitleCase(text), 'Hello World', 'titlecase'); + assertEquals(textToTitleCase(true ? text : null), 'Hello World', 'titlecase order'); +} + +// Tests the "trim" block. +function test_trim() { + text = ' abc def '; + assertEquals(text.trim(), 'abc def', 'trim both'); + assertEquals((true ? text : null).trim(), 'abc def', 'trim both order'); + assertEquals(text.replace(/^[\s\xa0]+/, ''), 'abc def ', 'trim left'); + assertEquals((true ? text : null).replace(/^[\s\xa0]+/, ''), 'abc def ', 'trim left order'); + assertEquals(text.replace(/[\s\xa0]+$/, ''), ' abc def', 'trim right'); + assertEquals((true ? text : null).replace(/[\s\xa0]+$/, ''), ' abc def', 'trim right order'); +} + +function textCount(haystack, needle) { + if (needle.length === 0) { + return haystack.length + 1; + } else { + return haystack.split(needle).length - 1; + } +} + +// Tests the "trim" block. +function test_count_text() { + text = 'woolloomooloo'; + assertEquals(textCount(text, 'o'), 8, 'len 1'); + assertEquals(textCount(text, 'oo'), 4, 'len 2'); + assertEquals(textCount(text, 'loo'), 2, 'len 3'); + assertEquals(textCount(text, 'wool'), 1, 'start'); + assertEquals(textCount(text, 'chicken'), 0, 'missing'); + assertEquals(textCount(text, ''), 14, 'empty needle'); + assertEquals(textCount('', 'chicken'), 0, 'empty source'); +} + +// Tests the "trim" block. +function test_text_reverse() { + assertEquals(''.split('').reverse().join(''), '', 'empty string'); + assertEquals('a'.split('').reverse().join(''), 'a', 'len 1'); + assertEquals('ab'.split('').reverse().join(''), 'ba', 'len 2'); + assertEquals('woolloomooloo'.split('').reverse().join(''), 'ooloomoolloow', 'longer'); +} + +function textReplace(haystack, needle, replacement) { + needle = needle.replace(/([-()\[\]{}+?*.$\^|,:# 0, true, 'get random simple'); + assertEquals(list[1], 'Spock', 'get # simple'); + assertEquals(list[((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); + assertEquals(list.slice(-3)[0], 'Kirk', 'get #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list.slice((-(0 + 3)))[0], 'Kirk', 'get #-end order simple'); +} + +// Tests the "get" block with create list call. +function test_get_lists_create_list() { + assertEquals(['Kirk', 'Spock', 'McCoy'][0], 'Kirk', 'get first create list'); + assertEquals(['Kirk', 'Spock', 'McCoy'].slice(-1)[0], 'McCoy', 'get last simple'); + assertEquals(['Kirk', 'Spock', 'McCoy'].indexOf(listsGetRandomItem(['Kirk', 'Spock', 'McCoy'], false)) + 1 > 0, true, 'get random simple'); + assertEquals(['Kirk', 'Spock', 'McCoy'][1], 'Spock', 'get # simple'); + assertEquals(['Kirk', 'Spock', 'McCoy'][((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); + assertEquals(['Kirk', 'Spock', 'McCoy'].slice(-3)[0], 'Kirk', 'get #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(['Kirk', 'Spock', 'McCoy'].slice((-(0 + 3)))[0], 'Kirk', 'get #-end order simple'); +} + +// Creates a list for use with the get test. +function get_star_wars() { + number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; + return ['Kirk', 'Spock', 'McCoy']; +} + +// Tests the "get" block with a function call. +function test_get_lists_complex() { + list = ['Kirk', 'Spock', 'McCoy']; + number_of_calls = 0; + assertEquals(get_star_wars()[0], 'Kirk', 'get first complex'); + check_number_of_calls('get first complex'); + number_of_calls = 0; + assertEquals((true ? get_star_wars() : null)[0], 'Kirk', 'get first order complex'); + check_number_of_calls('get first order complex'); + number_of_calls = 0; + assertEquals(get_star_wars().slice(-1)[0], 'McCoy', 'get last complex'); + check_number_of_calls('get last complex'); + number_of_calls = 0; + assertEquals((true ? get_star_wars() : null).slice(-1)[0], 'McCoy', 'get last order complex'); + check_number_of_calls('get last order complex'); + number_of_calls = 0; + assertEquals(list.indexOf(listsGetRandomItem(get_star_wars(), false)) + 1 > 0, true, 'get random complex'); + check_number_of_calls('get random complex'); + number_of_calls = 0; + assertEquals(list.indexOf(listsGetRandomItem(true ? get_star_wars() : null, false)) + 1 > 0, true, 'get random order complex'); + check_number_of_calls('get random order complex'); + number_of_calls = 0; + assertEquals(get_star_wars()[1], 'Spock', 'get # complex'); + check_number_of_calls('get # complex'); + number_of_calls = 0; + assertEquals((true ? get_star_wars() : null)[((true ? 2 : null) - 1)], 'Spock', 'get # order complex'); + check_number_of_calls('get # order complex'); + number_of_calls = 0; + assertEquals(get_star_wars().slice(-3)[0], 'Kirk', 'get #-end complex'); + check_number_of_calls('get #-end complex'); + number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals((true ? get_star_wars() : null).slice((-(0 + 3)))[0], 'Kirk', 'get #-end order complex'); + check_number_of_calls('get #-end order complex'); +} + +// Tests the "get and remove" block. +function test_getRemove() { + list = ['Kirk', 'Spock', 'McCoy']; + assertEquals(list.shift(), 'Kirk', 'getremove first'); + assertEquals(list, ['Spock', 'McCoy'], 'getremove first list'); + list = ['Kirk', 'Spock', 'McCoy']; + assertEquals((true ? list : null).shift(), 'Kirk', 'getremove first order'); + assertEquals(list, ['Spock', 'McCoy'], 'getremove first order list'); + list = ['Kirk', 'Spock', 'McCoy']; + assertEquals(list.pop(), 'McCoy', 'getremove last'); + assertEquals(list, ['Kirk', 'Spock'], 'getremove last list'); + list = ['Kirk', 'Spock', 'McCoy']; + assertEquals((true ? list : null).pop(), 'McCoy', 'getremove last order'); + assertEquals(list, ['Kirk', 'Spock'], 'getremove last order list'); + list = ['Kirk', 'Spock', 'McCoy']; + assertEquals(list.indexOf(listsGetRandomItem(list, true)) + 1 == 0, true, 'getremove random'); + assertEquals(list.length, 2, 'getremove random list'); + list = ['Kirk', 'Spock', 'McCoy']; + assertEquals(list.indexOf(listsGetRandomItem(true ? list : null, true)) + 1 == 0, true, 'getremove random order'); + assertEquals(list.length, 2, 'getremove random order list'); + list = ['Kirk', 'Spock', 'McCoy']; + assertEquals(list.splice(1, 1)[0], 'Spock', 'getremove #'); + assertEquals(list, ['Kirk', 'McCoy'], 'getremove # list'); + list = ['Kirk', 'Spock', 'McCoy']; + assertEquals((true ? list : null).splice(((true ? 2 : null) - 1), 1)[0], 'Spock', 'getremove # order'); + assertEquals(list, ['Kirk', 'McCoy'], 'getremove # order list'); + list = ['Kirk', 'Spock', 'McCoy']; + assertEquals(list.splice(-3, 1)[0], 'Kirk', 'getremove #-end'); + assertEquals(list, ['Spock', 'McCoy'], 'getremove #-end list'); + list = ['Kirk', 'Spock', 'McCoy']; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals((true ? list : null).splice((-(0 + 3)), 1)[0], 'Kirk', 'getremove #-end order'); + assertEquals(list, ['Spock', 'McCoy'], 'getremove #-end order list'); +} + +// Tests the "remove" block. +function test_remove() { + list = ['Kirk', 'Spock', 'McCoy']; + list.shift(); + assertEquals(list, ['Spock', 'McCoy'], 'remove first list'); + list = ['Kirk', 'Spock', 'McCoy']; + (true ? list : null).shift(); + assertEquals(list, ['Spock', 'McCoy'], 'remove first order list'); + list = ['Kirk', 'Spock', 'McCoy']; + list.pop(); + assertEquals(list, ['Kirk', 'Spock'], 'remove last list'); + list = ['Kirk', 'Spock', 'McCoy']; + (true ? list : null).pop(); + assertEquals(list, ['Kirk', 'Spock'], 'remove last order list'); + list = ['Kirk', 'Spock', 'McCoy']; + listsGetRandomItem(list, true); + assertEquals(list.length, 2, 'remove random list'); + list = ['Kirk', 'Spock', 'McCoy']; + listsGetRandomItem(true ? list : null, true); + assertEquals(list.length, 2, 'remove random order list'); + list = ['Kirk', 'Spock', 'McCoy']; + list.splice(1, 1); + assertEquals(list, ['Kirk', 'McCoy'], 'remove # list'); + list = ['Kirk', 'Spock', 'McCoy']; + (true ? list : null).splice(((true ? 2 : null) - 1), 1); + assertEquals(list, ['Kirk', 'McCoy'], 'remove # order list'); + list = ['Kirk', 'Spock', 'McCoy']; + list.splice(-3, 1);assertEquals(list, ['Spock', 'McCoy'], 'remove #-end list'); + list = ['Kirk', 'Spock', 'McCoy']; + // The order for index for #-end is addition because this will catch + // errors in generators where most perform the operation ... - index. + (true ? list : null).splice((-(0 + 3)), 1);assertEquals(list, ['Spock', 'McCoy'], 'remove #-end order list'); +} + +// Tests the "set" block. +function test_set() { + list = ['Picard', 'Riker', 'Crusher']; + list[0] = 'Jean-Luc'; + assertEquals(list, ['Jean-Luc', 'Riker', 'Crusher'], 'set first list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null)[0] = 'Jean-Luc'; + assertEquals(list, ['Jean-Luc', 'Riker', 'Crusher'], 'set first order list'); + list = ['Picard', 'Riker', 'Crusher']; + list[list.length - 1] = 'Beverly'; + assertEquals(list, ['Picard', 'Riker', 'Beverly'], 'set last list'); + list = ['Picard', 'Riker', 'Crusher']; + var tmpList = (true ? list : null); + tmpList[tmpList.length - 1] = 'Beverly'; + assertEquals(list, ['Picard', 'Riker', 'Beverly'], 'set last order list'); + list = ['Picard', 'Riker', 'Crusher']; + var tmpX = Math.floor(Math.random() * list.length); + list[tmpX] = 'Data'; + assertEquals(list.length, 3, 'set random list'); + list = ['Picard', 'Riker', 'Crusher']; + var tmpList2 = (true ? list : null); + var tmpX2 = Math.floor(Math.random() * tmpList2.length); + tmpList2[tmpX2] = 'Data'; + assertEquals(list.length, 3, 'set random order list'); + list = ['Picard', 'Riker', 'Crusher']; + list[2] = 'Pulaski'; + assertEquals(list, ['Picard', 'Riker', 'Pulaski'], 'set # list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null)[((true ? 3 : null) - 1)] = 'Pulaski'; + assertEquals(list, ['Picard', 'Riker', 'Pulaski'], 'set # order list'); + list = ['Picard', 'Riker', 'Crusher']; + list[list.length - 1] = 'Pulaski'; + assertEquals(list, ['Picard', 'Riker', 'Pulaski'], 'set #-end list'); + list = ['Picard', 'Riker', 'Crusher']; + // The order for index for #-end is addition because this will catch + // errors in generators where most perform the operation ... - index. + var tmpList3 = (true ? list : null); + tmpList3[tmpList3.length - (0 + 2)] = 'Pulaski'; + assertEquals(list, ['Picard', 'Pulaski', 'Crusher'], 'set #-end order list'); +} + +// Tests the "insert" block. +function test_insert() { + list = ['Picard', 'Riker', 'Crusher']; + list.unshift('Data'); + assertEquals(list, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null).unshift('Data'); + assertEquals(list, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first order list'); + list = ['Picard', 'Riker', 'Crusher']; + list.push('Data'); + assertEquals(list, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null).push('Data'); + assertEquals(list, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last order list'); + list = ['Picard', 'Riker', 'Crusher']; + var tmpX3 = Math.floor(Math.random() * list.length); + list.splice(tmpX3, 0, 'Data'); + assertEquals(list.length, 4, 'insert random list'); + list = ['Picard', 'Riker', 'Crusher']; + var tmpList4 = (true ? list : null); + var tmpX4 = Math.floor(Math.random() * tmpList4.length); + tmpList4.splice(tmpX4, 0, 'Data'); + assertEquals(list.length, 4, 'insert random order list'); + list = ['Picard', 'Riker', 'Crusher']; + list.splice(2, 0, 'Data'); + assertEquals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # list'); + list = ['Picard', 'Riker', 'Crusher']; + (true ? list : null).splice(((true ? 3 : null) - 1), 0, 'Data'); + assertEquals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # order list'); + list = ['Picard', 'Riker', 'Crusher']; + list.splice(list.length - 1, 0, 'Data'); + assertEquals(list, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert #-end list'); + list = ['Picard', 'Riker', 'Crusher']; + // The order for index for #-end is addition because this will catch + // errors in generators where most perform the operation ... - index. + var tmpList5 = (true ? list : null); + tmpList5.splice(tmpList5.length - (0 + 2), 0, 'Data'); + assertEquals(list, ['Picard', 'Data', 'Riker', 'Crusher'], 'insert #-end order list'); +} + +// Tests the "get sub-list" block with a variable. +function test_sublist_simple() { + list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; + assertEquals(list.slice(1, 3), ['Challenger', 'Discovery'], 'sublist # simple'); + assertEquals(list.slice(((true ? 2 : null) - 1), true ? 3 : null), ['Challenger', 'Discovery'], 'sublist # simple order'); + assertEquals(list.slice(list.length - 3, list.length - 1), ['Discovery', 'Atlantis'], 'sublist #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list.slice(list.length - (0 + 3), list.length - ((0 + 2) - 1)), ['Discovery', 'Atlantis'], 'sublist #-end simple order'); + assertEquals(list.slice(0), list, 'sublist first-last simple'); + changing_list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; + list_copy = changing_list.slice(0); + listsGetRandomItem(changing_list, true); + assertEquals(list_copy, list, 'sublist first-last simple copy check'); + assertEquals(list.slice(1, list.length - 1), ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end simple'); + assertEquals(list.slice(list.length - 3, 4), ['Discovery', 'Atlantis'], 'sublist #-end # simple'); + assertEquals(list.slice(0, 4), ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # simple'); + assertEquals(list.slice(0, list.length - 3), ['Columbia', 'Challenger'], 'sublist first #-end simple'); + assertEquals(list.slice(3, list.length), ['Atlantis', 'Endeavour'], 'sublist # last simple'); + assertEquals(list.slice(list.length - 4, list.length), ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple'); + assertEquals(list.slice(0, list.length - 0), list, 'sublist all with # #-end simple'); + assertEquals(list.slice(list.length - 5, 5), list, 'sublist all with #-end # simple'); + // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + assertEquals(list.slice(((0 + 1) - 1), list.length - ((0 + 1) - 1)), list, 'sublist all with # #-end math simple'); +} + +// Creates a list for use with the sublist test. +function get_space_shuttles() { + number_of_calls = (typeof number_of_calls === 'number' ? number_of_calls : 0) + 1; + return ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour']; +} + +// Tests the "get sub-list" block with a function call. +function test_sublist_complex() { + number_of_calls = 0; + assertEquals(get_space_shuttles().slice(1, 3), ['Challenger', 'Discovery'], 'sublist # start complex'); + check_number_of_calls('sublist # start complex'); + number_of_calls = 0; + assertEquals((true ? get_space_shuttles() : null).slice(((true ? 2 : null) - 1), true ? 3 : null), ['Challenger', 'Discovery'], 'sublist # start order complex'); + check_number_of_calls('sublist # start order complex'); + number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(subsequenceFromEndFromEnd(get_space_shuttles(), 2, 1), ['Discovery', 'Atlantis'], 'sublist # end complex'); + assertEquals(number_of_calls, 1, 'sublist # end complex number of calls'); + number_of_calls = 0; + assertEquals(subsequenceFromEndFromEnd((true ? get_space_shuttles() : null), ((0 + 3) - 1), ((0 + 2) - 1)), ['Discovery', 'Atlantis'], 'sublist # end order complex'); + check_number_of_calls('sublist # end order complex'); + number_of_calls = 0; + assertEquals(get_space_shuttles().slice(0), list, 'sublist first-last complex'); + check_number_of_calls('sublist first-last complex'); + number_of_calls = 0; + assertEquals(subsequenceFromStartFromEnd(get_space_shuttles(), 1, 1), ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end complex'); + check_number_of_calls('sublist # #-end complex'); + number_of_calls = 0; + assertEquals(subsequenceFromEndFromStart(get_space_shuttles(), 2, 3), ['Discovery', 'Atlantis'], 'sublist #-end # complex'); + check_number_of_calls('sublist #-end # complex'); + number_of_calls = 0; + assertEquals(get_space_shuttles().slice(0, 4), ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # complex'); + check_number_of_calls('sublist first # complex'); + number_of_calls = 0; + assertEquals(subsequenceFirstFromEnd(get_space_shuttles(), 3), ['Columbia', 'Challenger'], 'sublist first #-end complex'); + check_number_of_calls('sublist first #-end complex'); + number_of_calls = 0; + assertEquals(subsequenceFromStartLast(get_space_shuttles(), 3), ['Atlantis', 'Endeavour'], 'sublist # last complex'); + check_number_of_calls('sublist # last complex'); + number_of_calls = 0; + assertEquals(subsequenceFromEndLast(get_space_shuttles(), 3), ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple'); + check_number_of_calls('sublist #-end last simple'); + number_of_calls = 0; + assertEquals(subsequenceFromStartFromEnd(get_space_shuttles(), 0, 0), list, 'sublist all with # #-end complex'); + check_number_of_calls('sublist all with # #-end complex'); + number_of_calls = 0; + assertEquals(subsequenceFromEndFromStart(get_space_shuttles(), 4, 4), list, 'sublist all with #-end # complex'); + check_number_of_calls('sublist all with #-end # complex'); + number_of_calls = 0; + // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + assertEquals(subsequenceFromStartFromEnd(get_space_shuttles(), ((0 + 1) - 1), ((0 + 1) - 1)), list, 'sublist all with # #-end math complex'); + check_number_of_calls('sublist all with # #-end math complex'); +} + +// Tests the "join" block. +function test_join() { + list = ['Vulcan', 'Klingon', 'Borg']; + assertEquals(list.join(','), 'Vulcan,Klingon,Borg', 'join'); + assertEquals((true ? list : null).join(','), 'Vulcan,Klingon,Borg', 'join order'); +} + +// Tests the "split" block. +function test_split() { + text = 'Vulcan,Klingon,Borg'; + assertEquals(text.split(','), ['Vulcan', 'Klingon', 'Borg'], 'split'); + assertEquals((true ? text : null).split(','), ['Vulcan', 'Klingon', 'Borg'], 'split order'); +} + +function listsGetSortCompare(type, direction) { + var compareFuncs = { + 'NUMERIC': function(a, b) { + return Number(a) - Number(b); }, + 'TEXT': function(a, b) { + return a.toString() > b.toString() ? 1 : -1; }, + 'IGNORE_CASE': function(a, b) { + return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; }, + }; + var compare = compareFuncs[type]; + return function(a, b) { return compare(a, b) * direction; }; +} + +// Tests the "alphabetic sort" block. +function test_sort_alphabetic() { + list = ['Vulcan', 'klingon', 'Borg']; + assertEquals(list.slice().sort(listsGetSortCompare("TEXT", 1)), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending'); + assertEquals((true ? list : null).slice().sort(listsGetSortCompare("TEXT", 1)), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending order'); +} + +// Tests the "alphabetic sort ignore case" block. +function test_sort_ignoreCase() { + list = ['Vulcan', 'klingon', 'Borg']; + assertEquals(list.slice().sort(listsGetSortCompare("IGNORE_CASE", 1)), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending'); + assertEquals((true ? list : null).slice().sort(listsGetSortCompare("IGNORE_CASE", 1)), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending order'); +} + +// Tests the "numeric sort" block. +function test_sort_numeric() { + list = [8, 18, -1]; + assertEquals(list.slice().sort(listsGetSortCompare("NUMERIC", -1)), [18, 8, -1], 'sort numeric descending'); + assertEquals((true ? list : null).slice().sort(listsGetSortCompare("NUMERIC", -1)), [18, 8, -1], 'sort numeric descending order'); +} + +// Tests the "list reverse" block. +function test_lists_reverse() { + list = [8, 18, -1, 64]; + assertEquals(list.slice().reverse(), [64, -1, 18, 8], 'reverse a copy'); + assertEquals(list, [8, 18, -1, 64], 'reverse a copy original'); + list = []; + assertEquals(list.slice().reverse(), [], 'empty list'); +} + +// Describe this function... +function test_colour_picker() { + assertEquals('#ff6600', '#ff6600', 'static colour'); +} + +function colourRgb(r, g, b) { + r = Math.max(Math.min(Number(r), 100), 0) * 2.55; + g = Math.max(Math.min(Number(g), 100), 0) * 2.55; + b = Math.max(Math.min(Number(b), 100), 0) * 2.55; + r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2); + g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2); + b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2); + return '#' + r + g + b; +} + +// Describe this function... +function test_rgb() { + assertEquals(colourRgb(100, 40, 0), '#ff6600', 'from rgb'); +} + +function colourRandom() { + var num = Math.floor(Math.random() * Math.pow(2, 24)); + return '#' + ('00000' + num.toString(16)).substr(-6); +} + +// Describe this function... +function test_colour_random() { + for (var count4 = 0; count4 < 100; count4++) { + item = colourRandom(); + assertEquals(item.length, 7, 'length of random colour string: ' + String(item)); + assertEquals(item.charAt(0), '#', 'format of random colour string: ' + String(item)); + for (i = 1; i <= 6; i++) { + assertEquals(0 != 'abcdefABDEF0123456789'.indexOf(item.charAt(((i + 1) - 1))) + 1, true, ['contents of random colour string: ',item,' at index: ',i + 1].join('')); + } + } +} + +function colourBlend(c1, c2, ratio) { + ratio = Math.max(Math.min(Number(ratio), 1), 0); + var r1 = parseInt(c1.substring(1, 3), 16); + var g1 = parseInt(c1.substring(3, 5), 16); + var b1 = parseInt(c1.substring(5, 7), 16); + var r2 = parseInt(c2.substring(1, 3), 16); + var g2 = parseInt(c2.substring(3, 5), 16); + var b2 = parseInt(c2.substring(5, 7), 16); + var r = Math.round(r1 * (1 - ratio) + r2 * ratio); + var g = Math.round(g1 * (1 - ratio) + g2 * ratio); + var b = Math.round(b1 * (1 - ratio) + b2 * ratio); + r = ('0' + (r || 0).toString(16)).slice(-2); + g = ('0' + (g || 0).toString(16)).slice(-2); + b = ('0' + (b || 0).toString(16)).slice(-2); + return '#' + r + g + b; +} + +// Describe this function... +function test_blend() { + assertEquals(colourBlend('#ff0000', colourRgb(100, 40, 0), 0.4), '#ff2900', 'blend'); +} + +// Describe this function... +function test_procedure() { + procedure_1(8, 2); + assertEquals(proc_z, 4, 'procedure with global'); + proc_w = false; + procedure_2(false); + assertEquals(proc_w, true, 'procedure no return'); + proc_w = false; + procedure_2(true); + assertEquals(proc_w, false, 'procedure return'); +} + +// Describe this function... +function procedure_1(proc_x, proc_y) { + proc_z = proc_x / proc_y; +} + +// Describe this function... +function procedure_2(proc_x) { + if (proc_x) { + return; + } + proc_w = true; +} + +// Describe this function... +function test_function() { + assertEquals(function_1(2, 3), -1, 'function with arguments'); + assertEquals(func_z, 'side effect', 'function with side effect'); + func_a = 'unchanged'; + func_c = 'global'; + assertEquals(function_2(2), '3global', 'function with global'); + assertEquals(func_a, 'unchanged', 'function with scope'); + assertEquals(function_3(true), true, 'function return'); + assertEquals(function_3(false), false, 'function no return'); +} + +// Describe this function... +function function_1(func_x, func_y) { + func_z = 'side effect'; + return func_x - func_y; +} + +// Describe this function... +function function_2(func_a) { + func_a = (typeof func_a === 'number' ? func_a : 0) + 1; + return String(func_a) + String(func_c); +} + +// Describe this function... +function function_3(func_a) { + if (func_a) { + return true; + } + return false; +} + +// Describe this function... +function recurse(n) { + if (n > 0) { + text = [recurse(n - 1),n,recurse(n - 1)].join(''); + } else { + text = '-'; + } + return text; +} + + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Logic') +assertEquals(true, true, 'True'); +assertEquals(false, false, 'False'); +assertEquals(!false, true, 'Not true'); +assertEquals(!true, false, 'Not false'); +test_if(); +test_ifelse(); +test_equalities(); +test_and(); +test_or(); +test_ternary(); +console.log(unittest_report()); +unittestResults = null; + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Loops 1') +test_repeat(); +test_repeat_ext(); +test_while(); +test_foreach(); +console.log(unittest_report()); +unittestResults = null; + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Loops 2') +test_count_loops(); +test_count_by(); +console.log(unittest_report()); +unittestResults = null; + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Loops 3') +test_break(); +test_continue(); +console.log(unittest_report()); +unittestResults = null; + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Math') +test_arithmetic(); +test_single(); +test_trig(); +test_constant(); +test_change(); +test_number_properties(); +test_round(); +test_operations_on_list(); +test_constraint(); +test_mod(); +test_random_integer(); +test_random_fraction(); +test_atan2(); +console.log(unittest_report()); +unittestResults = null; + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Text') +test_text_length(); +test_empty_text(); +test_create_text(); +test_append(); +test_find_text_simple(); +test_find_text_complex(); +test_get_text_simple(); +test_get_text_complex(); +test_substring_simple(); +test_substring_complex(); +test_case(); +test_trim(); +test_count_text(); +test_text_reverse(); +test_replace(); +test_multiline(); +console.log(unittest_report()); +unittestResults = null; + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Lists') +test_create_lists(); +test_lists_empty(); +test_lists_length(); +test_find_lists_simple(); +test_find_lists_complex(); +test_get_lists_simple(); +test_get_lists_create_list(); +test_get_lists_complex(); +test_getRemove(); +test_remove(); +test_set(); +test_insert(); +test_sublist_simple(); +test_sublist_complex(); +test_join(); +test_split(); +test_sort_alphabetic(); +test_sort_ignoreCase(); +test_sort_numeric(); +test_lists_reverse(); +console.log(unittest_report()); +unittestResults = null; + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Colour') +test_colour_picker(); +test_blend(); +test_rgb(); +test_colour_random(); +console.log(unittest_report()); +unittestResults = null; + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Variables') +item = 123; +assertEquals(item, 123, 'variable'); +if2 = 123; +assertEquals(if2, 123, 'reserved variable'); +console.log(unittest_report()); +unittestResults = null; + +// Intentionally non-connected variable. +naked; + +unittestResults = []; +console.log('\n====================\n\nRunning suite: Functions') +test_procedure(); +test_function(); +assertEquals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse'); +console.log(unittest_report()); +unittestResults = null; diff --git a/tests/generators/golden/generated.lua b/tests/generators/golden/generated.lua index 085a76070be..e5958ecc99d 100644 --- a/tests/generators/golden/generated.lua +++ b/tests/generators/golden/generated.lua @@ -1,1905 +1,1905 @@ -function unittest_report() - -- Create test report. - local report = {} - local summary = {} - local fails = 0 - for _, v in pairs(unittestResults) do - if v["success"] then - table.insert(summary, ".") - else - table.insert(summary, "F") - fails = fails + 1 - table.insert(report, "FAIL: " .. v["title"]) - table.insert(report, v["log"]) - end - end - table.insert(report, 1, table.concat(summary)) - table.insert(report, "") - table.insert(report, "Number of tests run: " .. #unittestResults) - table.insert(report, "") - if fails > 0 then - table.insert(report, "FAILED (failures=" .. fails .. ")") - else - table.insert(report, "OK") - end - return table.concat(report, "\n") -end - -function assertEquals(actual, expected, message) - -- Asserts that a value equals another value. - assert(unittestResults ~= nil, "Orphaned assert equals: " .. message) - if type(actual) == "table" and type(expected) == "table" then - local lists_match = #actual == #expected - if lists_match then - for i, v1 in ipairs(actual) do - local v2 = expected[i] - if type(v1) == "number" and type(v2) == "number" then - if math.abs(v1 - v2) > 1e-9 then - lists_match = false - end - elseif v1 ~= v2 then - lists_match = false - end - end - end - if lists_match then - table.insert(unittestResults, {success=true, log="OK", title=message}) - return - else - -- produce the non-matching strings for a human-readable error - expected = "{" .. table.concat(expected, ", ") .. "}" - actual = "{" .. table.concat(actual, ", ") .. "}" - end - end - if actual == expected or (type(actual) == "number" and type(expected) == "number" and math.abs(actual - expected) < 1e-9) then - table.insert(unittestResults, {success=true, log="OK", title=message}) - else - table.insert(unittestResults, {success=false, log=string.format("Expected: %s\nActual: %s", tostring(expected), tostring(actual)), title=message}) - end -end - -function unittest_fail(message) - -- Always assert an error. - assert(unittestResults ~= nil, "Orphaned assert fail: " .. message) - table.insert(unittestResults, {success=false, log="Fail.", title=message}) -end - --- Describe this function... -function test_if() - if false then - unittest_fail('if false') - end - ok = false - if true then - ok = true - end - assertEquals(ok, true, 'if true') - ok = false - if false then - unittest_fail('if/else false') - else - ok = true - end - assertEquals(ok, true, 'if/else false') - ok = false - if true then - ok = true - else - unittest_fail('if/else true') - end - assertEquals(ok, true, 'if/else true') - ok = false - if false then - unittest_fail('elseif 1') - elseif true then - ok = true - elseif true then - unittest_fail('elseif 2') - else - unittest_fail('elseif 3') - end - assertEquals(ok, true, 'elseif 4') -end - - --- Describe this function... -function test_ifelse() - ok = false - if true then - ok = true - else - unittest_fail('ifelse true') - end - assertEquals(ok, true, 'ifelse true') - ok = false - if false then - unittest_fail('ifelse false') - else - ok = true - end - assertEquals(ok, true, 'ifelse false') -end - - --- Describe this function... -function test_equalities() - assertEquals(2 == 2, true, 'Equal yes') - assertEquals(3 == 4, false, 'Equal no') - assertEquals(5 ~= 6, true, 'Not equal yes') - assertEquals(3 == 4, false, 'Not equal no') - assertEquals(5 < 6, true, 'Smaller yes') - assertEquals(7 < 7, false, 'Smaller no') - assertEquals(9 > 8, true, 'Greater yes') - assertEquals(10 > 10, false, 'Greater no') - assertEquals(11 <= 11, true, 'Smaller-equal yes') - assertEquals(13 <= 12, false, 'Smaller-equal no') - assertEquals(14 >= 14, true, 'Greater-equal yes') - assertEquals(15 >= 16, false, 'Greater-equal no') -end - - --- Describe this function... -function test_and() - assertEquals(true and true, true, 'And true/true') - assertEquals(false and true, false, 'And false/true') - assertEquals(true and false, false, 'And true/false') - assertEquals(false and false, false, 'And false/false') -end - - --- Describe this function... -function test_or() - assertEquals(true or true, true, 'Or true/true') - assertEquals(false or true, true, 'Or false/true') - assertEquals(true or false, true, 'Or true/false') - assertEquals(false or false, false, 'Or false/false') -end - - --- Describe this function... -function test_ternary() - assertEquals(true and 42 or 99, 42, 'if true') - assertEquals(false and 42 or 99, 99, 'if true') -end - - --- Describe this function... -function test_foreach() - log = '' - for _, x in ipairs({'a', 'b', 'c'}) do - log = log .. x - end - assertEquals(log, 'abc', 'for loop') -end - - --- Describe this function... -function test_repeat() - count = 0 - for count2 = 1, 10 do - count = count + 1 - end - assertEquals(count, 10, 'repeat 10') -end - - --- Describe this function... -function test_while() - while false do - unittest_fail('while 0') - end - while not true do - unittest_fail('until 0') - end - count = 1 - while count ~= 10 do - count = count + 1 - end - assertEquals(count, 10, 'while 10') - count = 1 - while not (count == 10) do - count = count + 1 - end - assertEquals(count, 10, 'until 10') -end - - --- Describe this function... -function test_repeat_ext() - count = 0 - for count3 = 1, 10 do - count = count + 1 - end - assertEquals(count, 10, 'repeat 10') -end - - --- Describe this function... -function test_count_by() - log = '' - for x = 1, 8, 2 do - log = log .. x - end - assertEquals(log, '1357', 'count up ints') - log = '' - for x = 8, 1, -2 do - log = log .. x - end - assertEquals(log, '8642', 'count down ints') - loglist = {} - for x = 1, 8, 1.5 do - table.insert(loglist, #loglist + 1, x) - end - assertEquals(loglist, {1, 2.5, 4, 5.5, 7}, 'count with floats') - loglist = {} - x_inc = math.abs(1 - 2) - if (1 + 0) > (8 + 0) then - x_inc = -x_inc - end - for x = 1 + 0, 8 + 0, x_inc do - table.insert(loglist, #loglist + 1, x) - end - assertEquals(loglist, {1, 2, 3, 4, 5, 6, 7, 8}, 'count up non-trivial ints') - loglist = {} - x_inc2 = 2 - if (8 + 0) > (1 + 0) then - x_inc2 = -x_inc2 - end - for x = 8 + 0, 1 + 0, x_inc2 do - table.insert(loglist, #loglist + 1, x) - end - assertEquals(loglist, {8, 6, 4, 2}, 'count down non-trivial ints') - loglist = {} - x_inc3 = math.abs(1 + 0) - if (5 + 0.5) > (1 + 0) then - x_inc3 = -x_inc3 - end - for x = 5 + 0.5, 1 + 0, x_inc3 do - table.insert(loglist, #loglist + 1, x) - end - assertEquals(loglist, {5.5, 4.5, 3.5, 2.5, 1.5}, 'count with floats') -end - - --- Describe this function... -function test_count_loops() - log = '' - for x = 1, 8, 1 do - log = log .. x - end - assertEquals(log, '12345678', 'count up') - log = '' - for x = 8, 1, -1 do - log = log .. x - end - assertEquals(log, '87654321', 'count down') - loglist = {} - x_inc4 = 1 - if (1 + 0) > (4 + 0) then - x_inc4 = -x_inc4 - end - for x = 1 + 0, 4 + 0, x_inc4 do - table.insert(loglist, #loglist + 1, x) - end - assertEquals(loglist, {1, 2, 3, 4}, 'count up non-trivial') - loglist = {} - x_inc5 = 1 - if (3 + 1) > (1 + 0) then - x_inc5 = -x_inc5 - end - for x = 3 + 1, 1 + 0, x_inc5 do - table.insert(loglist, #loglist + 1, x) - end - assertEquals(loglist, {4, 3, 2, 1}, 'count down non-trivial') -end - - --- Describe this function... -function test_continue() - log = '' - count = 0 - while count ~= 8 do - count = count + 1 - if count == 5 then - goto continue - end - log = log .. count - ::continue:: - end - assertEquals(log, '1234678', 'while continue') - log = '' - count = 0 - while not (count == 8) do - count = count + 1 - if count == 5 then - goto continue - end - log = log .. count - ::continue:: - end - assertEquals(log, '1234678', 'until continue') - log = '' - for x = 1, 8, 1 do - if x == 5 then - goto continue - end - log = log .. x - ::continue:: - end - assertEquals(log, '1234678', 'count continue') - log = '' - for _, x in ipairs({'a', 'b', 'c', 'd'}) do - if x == 'c' then - goto continue - end - log = log .. x - ::continue:: - end - assertEquals(log, 'abd', 'for continue') -end - - --- Describe this function... -function test_break() - count = 1 - while count ~= 10 do - if count == 5 then - break - end - count = count + 1 - end - assertEquals(count, 5, 'while break') - count = 1 - while not (count == 10) do - if count == 5 then - break - end - count = count + 1 - end - assertEquals(count, 5, 'until break') - log = '' - for x = 1, 8, 1 do - if x == 5 then - break - end - log = log .. x - end - assertEquals(log, '1234', 'count break') - log = '' - for _, x in ipairs({'a', 'b', 'c', 'd'}) do - if x == 'c' then - break - end - log = log .. x - end - assertEquals(log, 'ab', 'for break') -end - - --- Tests the "single" block. -function test_single() - assertEquals(math.sqrt(25), 5, 'sqrt') - assertEquals(math.abs(-25), 25, 'abs') - assertEquals(-(-25), 25, 'negate') - assertEquals(math.log(1), 0, 'ln') - assertEquals(math.log(100, 10), 2, 'log10') - assertEquals(math.exp(2), 7.38905609893065, 'exp') - assertEquals(10 ^ 2, 100, 'power10') -end - - --- Tests the "arithmetic" block for all operations and checks --- parenthesis are properly generated for different orders. -function test_arithmetic() - assertEquals(1 + 2, 3, 'add') - assertEquals(1 - 2, -1, 'subtract') - assertEquals(1 - (0 + 2), -1, 'subtract order with add') - assertEquals(1 - (0 - 2), 3, 'subtract order with subtract') - assertEquals(4 * 2.5, 10, 'multiply') - assertEquals(4 * (0 + 2.5), 10, 'multiply order') - assertEquals(8.2 / -5, -1.64, 'divide') - assertEquals(8.2 / (0 + -5), -1.64, 'divide order') - assertEquals(10 ^ 4, 10000, 'power') - assertEquals(10 ^ (0 + 4), 10000, 'power order') -end - - --- Tests the "trig" block. -function test_trig() - assertEquals(math.sin(math.rad(90)), 1, 'sin') - assertEquals(math.cos(math.rad(180)), -1, 'cos') - assertEquals(math.tan(math.rad(0)), 0, 'tan') - assertEquals(math.deg(math.asin(-1)), -90, 'asin') - assertEquals(math.deg(math.acos(1)), 0, 'acos') - assertEquals(math.deg(math.atan(1)), 45, 'atan') -end - - --- Tests the "constant" blocks. -function test_constant() - assertEquals(math.floor(math.pi * 1000), 3141, 'const pi') - assertEquals(math.floor(math.exp(1) * 1000), 2718, 'const e') - assertEquals(math.floor(((1 + math.sqrt(5)) / 2) * 1000), 1618, 'const golden') - assertEquals(math.floor(math.sqrt(2) * 1000), 1414, 'const sqrt 2') - assertEquals(math.floor(math.sqrt(1 / 2) * 1000), 707, 'const sqrt 0.5') - assertEquals(9999 < math.huge, true, 'const infinity') -end - - -function math_isPrime(n) - -- https://en.wikipedia.org/wiki/Primality_test#Naive_methods - if n == 2 or n == 3 then - return true - end - -- False if n is NaN, negative, is 1, or not whole. - -- And false if n is divisible by 2 or 3. - if not(n > 1) or n % 1 ~= 0 or n % 2 == 0 or n % 3 == 0 then - return false - end - -- Check all the numbers of form 6k +/- 1, up to sqrt(n). - for x = 6, math.sqrt(n) + 1.5, 6 do - if n % (x - 1) == 0 or n % (x + 1) == 0 then - return false - end - end - return true -end - --- Tests the "number property" blocks. -function test_number_properties() - assertEquals(42 % 2 == 0, true, 'even') - assertEquals(42.1 % 2 == 1, false, 'odd') - assertEquals(math_isPrime(5), true, 'prime 5') - assertEquals(math_isPrime(5 + 2), true, 'prime 5 + 2 (extra parentheses)') - assertEquals(math_isPrime(25), false, 'prime 25') - assertEquals(math_isPrime(-31.1), false, 'prime negative') - assertEquals(math.pi % 1 == 0, false, 'whole') - assertEquals(math.huge > 0, true, 'positive') - assertEquals(5 + 2 > 0, true, '5 + 2 is positive (extra parentheses)') - assertEquals(-42 < 0, true, 'negative') - assertEquals(3 + 2 < 0, false, '3 + 2 is negative (extra parentheses)') - assertEquals(42 % 2 == 0, true, 'divisible') - assertEquals(not nil, true, 'divisible by 0') -end - - --- Tests the "round" block. -function test_round() - assertEquals(math.floor(42.42 + .5), 42, 'round') - assertEquals(math.ceil(-42.42), -42, 'round up') - assertEquals(math.floor(42.42), 42, 'round down') -end - - --- Tests the "change" block. -function test_change() - varToChange = 100 - varToChange = varToChange + 42 - assertEquals(varToChange, 142, 'change') -end - - -function math_sum(t) - local result = 0 - for _, v in ipairs(t) do - result = result + v - end - return result -end - -function math_min(t) - if #t == 0 then - return 0 - end - local result = math.huge - for _, v in ipairs(t) do - if v < result then - result = v - end - end - return result -end - -function math_max(t) - if #t == 0 then - return 0 - end - local result = -math.huge - for _, v in ipairs(t) do - if v > result then - result = v - end - end - return result -end - -function math_average(t) - if #t == 0 then - return 0 - end - return math_sum(t) / #t -end - -function math_median(t) - -- Source: http://lua-users.org/wiki/SimpleStats - if #t == 0 then - return 0 - end - local temp = {} - for _, v in ipairs(t) do - if type(v) == 'number' then - table.insert(temp, v) - end - end - table.sort(temp) - if #temp % 2 == 0 then - return (temp[#temp / 2] + temp[(#temp / 2) + 1]) / 2 - else - return temp[math.ceil(#temp / 2)] - end -end - -function math_modes(t) - -- Source: http://lua-users.org/wiki/SimpleStats - local counts = {} - for _, v in ipairs(t) do - if counts[v] == nil then - counts[v] = 1 - else - counts[v] = counts[v] + 1 - end - end - local biggestCount = 0 - for _, v in pairs(counts) do - if v > biggestCount then - biggestCount = v - end - end - local temp = {} - for k, v in pairs(counts) do - if v == biggestCount then - table.insert(temp, k) - end - end - return temp -end - -function math_standard_deviation(t) - local m - local vm - local total = 0 - local count = 0 - local result - m = #t == 0 and 0 or math_sum(t) / #t - for _, v in ipairs(t) do - if type(v) == 'number' then - vm = v - m - total = total + (vm * vm) - count = count + 1 - end - end - result = math.sqrt(total / (count-1)) - return result -end - -function math_random_list(t) - if #t == 0 then - return nil - end - return t[math.random(#t)] -end - -function first_index(t, elem) - for k, v in ipairs(t) do - if v == elem then - return k - end - end - return 0 -end - --- Tests the "list operation" blocks. -function test_operations_on_list() - assertEquals(math_sum({3, 4, 5}), 12, 'sum') - assertEquals(math_min({3, 4, 5}), 3, 'min') - assertEquals(math_max({3, 4, 5}), 5, 'max') - assertEquals(math_average({3, 4, 5}), 4, 'average') - assertEquals(math_median({3, 4, 5, 1}), 3.5, 'median') - assertEquals(math_modes({3, 4, 3}), {3}, 'modes') - assertEquals(math_modes({3, 4, 3, 1, 4}), {3, 4}, 'modes multiple') - assertEquals(math_standard_deviation({3, 3, 3}), 0, 'standard dev') - assertEquals(first_index({3, 4, 5}, math_random_list({3, 4, 5})) > 0, true, 'random') -end - - --- Tests the "mod" block. -function test_mod() - assertEquals(42 % 5, 2, 'mod') -end - - --- Tests the "constrain" block. -function test_constraint() - assertEquals(math.min(math.max(100, 0), 42), 42, 'constraint') -end - - --- Tests the "random integer" block. -function test_random_integer() - rand = math.random(5, 10) - assertEquals(rand >= 5 and rand <= 10, true, 'randRange') - assertEquals(rand % 1 == 0, true, 'randInteger') -end - - --- Tests the "random fraction" block. -function test_random_fraction() - rand = math.random() - assertEquals(rand >= 0 and rand <= 1, true, 'randFloat') -end - - --- Describe this function... -function test_atan2() - assertEquals(math.deg(math.atan2(5, -5)), 135, 'atan2') - assertEquals(math.deg(math.atan2(-12, 0)), -90, 'atan2') -end - - --- Checks that the number of calls is one in order --- to confirm that a function was only called once. -function check_number_of_calls(test_name) - test_name = test_name .. 'number of calls' - assertEquals(number_of_calls, 1, test_name) -end - - --- Tests the "create text with" block with varying number of inputs. -function test_create_text() - assertEquals('', '', 'no text') - assertEquals(tostring('Hello'), 'Hello', 'create single') - assertEquals(tostring(-1), '-1', 'create single number') - assertEquals('K' .. 9, 'K9', 'create double text') - assertEquals(4 .. 2, '42', 'create double text numbers') - assertEquals(table.concat({1, 2, 3}), '123', 'create triple') - assertEquals(table.concat({1, true and 0 or nil, 'M'}), '10M', 'create order') -end - - --- Creates an empty string for use with the empty test. -function get_empty() - return '' -end - - --- Tests the "is empty" block". -function test_empty_text() - assertEquals(#'Google' == 0, false, 'not empty') - assertEquals(#'' == 0, true, 'empty') - assertEquals(#get_empty() == 0, true, 'empty complex') - assertEquals(#(true and '' or nil) == 0, true, 'empty order') -end - - --- Tests the "length" block. -function test_text_length() - assertEquals(#'', 0, 'zero length') - assertEquals(#'Google', 6, 'non-zero length') - assertEquals(#(true and 'car' or nil), 3, 'length order') -end - - --- Tests the "append text" block with different types of parameters. -function test_append() - item = 'Miserable' - item = item .. 'Failure' - assertEquals(item, 'MiserableFailure', 'append text') - item = 12 - item = item .. 34 - assertEquals(item, '1234', 'append number') - item = 'Something ' - item = item .. (true and 'Positive' or nil) - assertEquals(item, 'Something Positive', 'append order') -end - - -function firstIndexOf(str, substr) - local i = string.find(str, substr, 1, true) - if i == nil then - return 0 - end - return i -end - -function lastIndexOf(str, substr) - local i = string.find(string.reverse(str), string.reverse(substr), 1, true) - if i then - return #str + 2 - i - #substr - end - return 0 -end - --- Tests the "find" block with a variable. -function test_find_text_simple() - text = 'Banana' - assertEquals(firstIndexOf(text, 'an'), 2, 'find first simple') - assertEquals(lastIndexOf(text, 'an'), 4, 'find last simple') - assertEquals(firstIndexOf(text, 'Peel'), 0, 'find none simple') -end - - --- Creates a string for use with the find test. -function get_fruit() - number_of_calls = number_of_calls + 1 - return 'Banana' -end - - --- Tests the "find" block with a function call. -function test_find_text_complex() - number_of_calls = 0 - assertEquals(firstIndexOf(get_fruit(), 'an'), 2, 'find first complex') - check_number_of_calls('find first complex') - number_of_calls = 0 - assertEquals(firstIndexOf(true and get_fruit() or nil, 'an'), 2, 'find first order complex') - check_number_of_calls('find first order complex') - number_of_calls = 0 - assertEquals(lastIndexOf(get_fruit(), 'an'), 4, 'find last complex') - check_number_of_calls('find last complex') - number_of_calls = 0 - assertEquals(lastIndexOf(true and get_fruit() or nil, 'an'), 4, 'find last order complex') - check_number_of_calls('find last order complex') - number_of_calls = 0 - assertEquals(firstIndexOf(get_fruit(), 'Peel'), 0, 'find none complex') - check_number_of_calls('find none complex') - number_of_calls = 0 - assertEquals(firstIndexOf(true and get_fruit() or nil, 'Peel'), 0, 'find none order complex') - check_number_of_calls('find none order complex') -end - - -function text_random_letter(str) - local index = math.random(string.len(str)) - return string.sub(str, index, index) -end - -function text_char_at(str, index) - return string.sub(str, index, index) -end - --- Tests the "get letter" block with a variable. -function test_get_text_simple() - text = 'Blockly' - assertEquals(string.sub(text, 1, 1), 'B', 'get first simple') - assertEquals(string.sub(text, -1, -1), 'y', 'get last simple') - assertEquals(firstIndexOf(text, text_random_letter(text)) > 0, true, 'get random simple') - assertEquals(string.sub(text, 3, 3), 'o', 'get # simple') - assertEquals(text_char_at(text, true and 3 or nil), 'o', 'get # order simple') - assertEquals(string.sub(text, -3, -3), 'k', 'get #-end simple') - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(text_char_at(text, -(0 + 3)), 'k', 'get #-end order simple') -end - - --- Creates a string for use with the get test. -function get_Blockly() - number_of_calls = number_of_calls + 1 - return 'Blockly' -end - - --- Tests the "get letter" block with a function call. -function test_get_text_complex() - text = 'Blockly' - number_of_calls = 0 - assertEquals(string.sub(get_Blockly(), 1, 1), 'B', 'get first complex') - check_number_of_calls('get first complex') - number_of_calls = 0 - assertEquals(string.sub(true and get_Blockly() or nil, 1, 1), 'B', 'get first order complex') - check_number_of_calls('get first order complex') - number_of_calls = 0 - assertEquals(string.sub(get_Blockly(), -1, -1), 'y', 'get last complex') - check_number_of_calls('get last complex') - number_of_calls = 0 - assertEquals(string.sub(true and get_Blockly() or nil, -1, -1), 'y', 'get last order complex') - check_number_of_calls('get last order complex') - number_of_calls = 0 - assertEquals(firstIndexOf(text, text_random_letter(get_Blockly())) > 0, true, 'get random complex') - check_number_of_calls('get random complex') - number_of_calls = 0 - assertEquals(firstIndexOf(text, text_random_letter(true and get_Blockly() or nil)) > 0, true, 'get random order complex') - check_number_of_calls('get random order complex') - number_of_calls = 0 - assertEquals(string.sub(get_Blockly(), 3, 3), 'o', 'get # complex') - check_number_of_calls('get # complex') - number_of_calls = 0 - assertEquals(text_char_at(true and get_Blockly() or nil, true and 3 or nil), 'o', 'get # order complex') - check_number_of_calls('get # order complex') - number_of_calls = 0 - assertEquals(string.sub(get_Blockly(), -3, -3), 'k', 'get #-end complex') - check_number_of_calls('get #-end complex') - number_of_calls = 0 - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(text_char_at(true and get_Blockly() or nil, -(0 + 3)), 'k', 'get #-end order complex') - check_number_of_calls('get #-end order complex') -end - - --- Creates a string for use with the substring test. -function get_numbers() - number_of_calls = number_of_calls + 1 - return '123456789' -end - - --- Tests the "get substring" block with a variable. -function test_substring_simple() - text = '123456789' - assertEquals(string.sub(text, 2, 3), '23', 'substring # simple') - assertEquals(string.sub(text, true and 2 or nil, true and 3 or nil), '23', 'substring # simple order') - assertEquals(string.sub(text, -3, -2), '78', 'substring #-end simple') - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(string.sub(text, -(0 + 3), -(0 + 2)), '78', 'substring #-end simple order') - assertEquals(string.sub(text, 1, -1), text, 'substring first-last simple') - assertEquals(string.sub(text, 2, -2), '2345678', 'substring # #-end simple') - assertEquals(string.sub(text, -7, 4), '34', 'substring #-end # simple') - assertEquals(string.sub(text, 1, 4), '1234', 'substring first # simple') - assertEquals(string.sub(text, 1, -2), '12345678', 'substring first #-end simple') - assertEquals(string.sub(text, 7, -1), '789', 'substring # last simple') - assertEquals(string.sub(text, -3, -1), '789', 'substring #-end last simple') - assertEquals(string.sub(text, 1, -1), '123456789', 'substring all with # #-end simple') - assertEquals(string.sub(text, -9, 9), '123456789', 'substring all with #-end # simple') - -- Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - assertEquals(string.sub(text, 0 + 1, -(0 + 1)), '123456789', 'substring all with # #-end math simple') -end - - --- Tests the "get substring" block with a function call. -function test_substring_complex() - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), 2, 3), '23', 'substring # complex') - check_number_of_calls('substring # complex') - number_of_calls = 0 - assertEquals(string.sub(true and get_numbers() or nil, true and 2 or nil, true and 3 or nil), '23', 'substring # complex order') - check_number_of_calls('substring # complex order') - number_of_calls = 0 - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(string.sub(get_numbers(), -3, -2), '78', 'substring #-end complex') - check_number_of_calls('substring #-end complex') - number_of_calls = 0 - assertEquals(string.sub(true and get_numbers() or nil, -(0 + 3), -(0 + 2)), '78', 'substring #-end order order') - check_number_of_calls('substring #-end order order') - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), 1, -1), text, 'substring first-last') - check_number_of_calls('substring first-last') - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), 2, -2), '2345678', 'substring # #-end complex') - check_number_of_calls('substring # #-end complex') - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), -7, 4), '34', 'substring #-end # complex') - check_number_of_calls('substring #-end # complex') - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), 1, 4), '1234', 'substring first # complex') - check_number_of_calls('substring first # complex') - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), 1, -2), '12345678', 'substring first #-end complex') - check_number_of_calls('substring first #-end complex') - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), 7, -1), '789', 'substring # last complex') - check_number_of_calls('substring # last complex') - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), -3, -1), '789', 'substring #-end last complex') - check_number_of_calls('substring #-end last complex') - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), 1, -1), '123456789', 'substring all with # #-end complex') - check_number_of_calls('substring all with # #-end complex') - number_of_calls = 0 - assertEquals(string.sub(get_numbers(), -9, 9), '123456789', 'substring all with #-end # complex') - check_number_of_calls('substring all with #-end # complex') - number_of_calls = 0 - -- Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - assertEquals(string.sub(get_numbers(), 0 + 1, -(0 + 1)), '123456789', 'substring all with # #-end math complex') - check_number_of_calls('substring all with # #-end math complex') -end - - -function text_titlecase(str) - local buf = {} - local inWord = false - for i = 1, #str do - local c = string.sub(str, i, i) - if inWord then - table.insert(buf, string.lower(c)) - if string.find(c, "%s") then - inWord = false - end - else - table.insert(buf, string.upper(c)) - inWord = true - end - end - return table.concat(buf) -end - --- Tests the "change casing" block. -function test_case() - text = 'Hello World' - assertEquals(string.upper(text), 'HELLO WORLD', 'uppercase') - assertEquals(string.upper(true and text or nil), 'HELLO WORLD', 'uppercase order') - text = 'Hello World' - assertEquals(string.lower(text), 'hello world', 'lowercase') - assertEquals(string.lower(true and text or nil), 'hello world', 'lowercase order') - text = 'heLLo WorlD' - assertEquals(text_titlecase(text), 'Hello World', 'titlecase') - assertEquals(text_titlecase(true and text or nil), 'Hello World', 'titlecase order') -end - - --- Tests the "trim" block. -function test_trim() - text = ' abc def ' - assertEquals(string.gsub(text, "^%s*(.-)%s*$", "%1"), 'abc def', 'trim both') - assertEquals(string.gsub(true and text or nil, "^%s*(.-)%s*$", "%1"), 'abc def', 'trim both order') - assertEquals(string.gsub(text, "^%s*(,-)", "%1"), 'abc def ', 'trim left') - assertEquals(string.gsub(true and text or nil, "^%s*(,-)", "%1"), 'abc def ', 'trim left order') - assertEquals(string.gsub(text, "(.-)%s*$", "%1"), ' abc def', 'trim right') - assertEquals(string.gsub(true and text or nil, "(.-)%s*$", "%1"), ' abc def', 'trim right order') -end - - -function text_count(haystack, needle) - if #needle == 0 then - return #haystack + 1 - end - local i = 1 - local count = 0 - while true do - i = string.find(haystack, needle, i, true) - if i == nil then - break - end - count = count + 1 - i = i + #needle - end - return count -end - --- Tests the "trim" block. -function test_count_text() - text = 'woolloomooloo' - assertEquals(text_count(text, 'o'), 8, 'len 1') - assertEquals(text_count(text, 'oo'), 4, 'len 2') - assertEquals(text_count(text, 'loo'), 2, 'len 3') - assertEquals(text_count(text, 'wool'), 1, 'start') - assertEquals(text_count(text, 'chicken'), 0, 'missing') - assertEquals(text_count(text, ''), 14, 'empty needle') - assertEquals(text_count('', 'chicken'), 0, 'empty source') -end - - --- Tests the "trim" block. -function test_text_reverse() - assertEquals(string.reverse(''), '', 'empty string') - assertEquals(string.reverse('a'), 'a', 'len 1') - assertEquals(string.reverse('ab'), 'ba', 'len 2') - assertEquals(string.reverse('woolloomooloo'), 'ooloomoolloow', 'longer') -end - - -function text_replace(haystack, needle, replacement) - local buf = {} - local i = 1 - while i <= #haystack do - if string.sub(haystack, i, i + #needle - 1) == needle then - for j = 1, #replacement do - table.insert(buf, string.sub(replacement, j, j)) - end - i = i + #needle - else - table.insert(buf, string.sub(haystack, i, i)) - i = i + 1 - end - end - return table.concat(buf) -end - --- Tests the "trim" block. -function test_replace() - assertEquals(text_replace('woolloomooloo', 'oo', '123'), 'w123ll123m123l123', 'replace all instances 1') - assertEquals(text_replace('woolloomooloo', '.oo', 'X'), 'woolloomooloo', 'literal string replacement') - assertEquals(text_replace('woolloomooloo', 'abc', 'X'), 'woolloomooloo', 'not found') - assertEquals(text_replace('woolloomooloo', 'o', ''), 'wllml', 'empty replacement 1') - assertEquals(text_replace('aaaaa', 'aaaaa', ''), '', 'empty replacement 2') - assertEquals(text_replace('aaaaa', 'a', ''), '', 'empty replacement 3') - assertEquals(text_replace('', 'a', 'chicken'), '', 'empty source') -end - - --- Tests the "multiline" block. -function test_multiline() - assertEquals('', '', 'no text') - assertEquals('Google', 'Google', 'simple') - assertEquals('paragraph' .. '\n' .. - 'with newlines' .. '\n' .. - 'yup', 'paragraph' .. '\n' .. - 'with newlines' .. '\n' .. - 'yup', 'no compile error with newlines') - assertEquals(text_count('bark bark' .. '\n' .. - 'bark bark bark' .. '\n' .. - 'bark bark bark bark', 'bark'), 9, 'count with newlines') -end - - --- Checks that the number of calls is one in order --- to confirm that a function was only called once. -function check_number_of_calls2(test_name) - test_name = test_name .. 'number of calls' - assertEquals(number_of_calls, 1, test_name) -end - - -function create_list_repeated(item, count) - local t = {} - for i = 1, count do - table.insert(t, item) - end - return t -end - --- Tests the "create list with" and "create empty list" blocks. -function test_create_lists() - assertEquals({}, {}, 'create empty') - assertEquals({true, 'love'}, {true, 'love'}, 'create items') - assertEquals(create_list_repeated('Eject', 3), {'Eject', 'Eject', 'Eject'}, 'create repeated') - assertEquals(create_list_repeated('Eject', 0 + 3), {'Eject', 'Eject', 'Eject'}, 'create repeated order') -end - - --- Creates an empty list for use with the empty test. -function get_empty_list() - return {} -end - - --- Tests the "is empty" block. -function test_lists_empty() - assertEquals(#{0} == 0, false, 'not empty') - assertEquals(#{} == 0, true, 'empty') - assertEquals(#get_empty_list() == 0, true, 'empty complex') - assertEquals(#(true and {} or nil) == 0, true, 'empty order') -end - - --- Tests the "length" block. -function test_lists_length() - assertEquals(#{}, 0, 'zero length') - assertEquals(#{'cat'}, 1, 'one length') - assertEquals(#{'cat', true, {}}, 3, 'three length') - assertEquals(#(true and {'cat', true} or nil), 2, 'two length order') -end - - -function last_index(t, elem) - for i = #t, 1, -1 do - if t[i] == elem then - return i - end - end - return 0 -end - --- Tests the "find" block with a variable. -function test_find_lists_simple() - list = {'Alice', 'Eve', 'Bob', 'Eve'} - assertEquals(first_index(list, 'Eve'), 2, 'find first simple') - assertEquals(last_index(list, 'Eve'), 4, 'find last simple') - assertEquals(first_index(list, 'Dave'), 0, 'find none simple') -end - - --- Creates a list for use with the find test. -function get_names() - number_of_calls = number_of_calls + 1 - return {'Alice', 'Eve', 'Bob', 'Eve'} -end - - --- Tests the "find" block with a function call. -function test_find_lists_complex() - number_of_calls = 0 - assertEquals(first_index(get_names(), 'Eve'), 2, 'find first complex') - check_number_of_calls('find first complex') - number_of_calls = 0 - assertEquals(first_index(true and get_names() or nil, 'Eve'), 2, 'find first order complex') - check_number_of_calls('find first order complex') - number_of_calls = 0 - assertEquals(last_index(get_names(), 'Eve'), 4, 'find last complex') - check_number_of_calls('find last complex') - number_of_calls = 0 - assertEquals(last_index(true and get_names() or nil, 'Eve'), 4, 'find last order complex') - check_number_of_calls('find last order complex') - number_of_calls = 0 - assertEquals(first_index(get_names(), 'Dave'), 0, 'find none complex') - check_number_of_calls('find none complex') - number_of_calls = 0 - assertEquals(first_index(true and get_names() or nil, 'Dave'), 0, 'find none order complex') - check_number_of_calls('find none order complex') -end - - --- Tests the "get" block with a variable. -function test_get_lists_simple() - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(list[1], 'Kirk', 'get first simple') - assertEquals(list[#list], 'McCoy', 'get last simple') - assertEquals(first_index(list, list[math.random(#list)]) > 0, true, 'get random simple') - assertEquals(list[2], 'Spock', 'get # simple') - assertEquals(list[true and 2 or nil], 'Spock', 'get # order simple') - assertEquals(list[#list + 1 - 3], 'Kirk', 'get #-end simple') - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list[#list + 1 - (0 + 3)], 'Kirk', 'get #-end order simple') -end - - -function list_get_last(t) - return t[#t] -end - -function list_get_random(t) - return t[math.random(#t)] -end - -function list_get_from_end(t, at) - return t[#t + 1 - at] -end - --- Tests the "get" block with create list call. -function test_get_lists_create_list() - assertEquals(({'Kirk', 'Spock', 'McCoy'})[1], 'Kirk', 'get first create list') - assertEquals(list_get_last(({'Kirk', 'Spock', 'McCoy'})), 'McCoy', 'get last simple') - assertEquals(first_index({'Kirk', 'Spock', 'McCoy'}, list_get_random(({'Kirk', 'Spock', 'McCoy'}))) > 0, true, 'get random simple') - assertEquals(({'Kirk', 'Spock', 'McCoy'})[2], 'Spock', 'get # simple') - assertEquals(({'Kirk', 'Spock', 'McCoy'})[true and 2 or nil], 'Spock', 'get # order simple') - assertEquals(list_get_from_end(({'Kirk', 'Spock', 'McCoy'}), 3), 'Kirk', 'get #-end simple') - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list_get_from_end(({'Kirk', 'Spock', 'McCoy'}), 0 + 3), 'Kirk', 'get #-end order simple') -end - - --- Creates a list for use with the get test. -function get_star_wars() - number_of_calls = number_of_calls + 1 - return {'Kirk', 'Spock', 'McCoy'} -end - - --- Tests the "get" block with a function call. -function test_get_lists_complex() - list = {'Kirk', 'Spock', 'McCoy'} - number_of_calls = 0 - assertEquals((get_star_wars())[1], 'Kirk', 'get first complex') - check_number_of_calls('get first complex') - number_of_calls = 0 - assertEquals((true and get_star_wars() or nil)[1], 'Kirk', 'get first order complex') - check_number_of_calls('get first order complex') - number_of_calls = 0 - assertEquals(list_get_last((get_star_wars())), 'McCoy', 'get last complex') - check_number_of_calls('get last complex') - number_of_calls = 0 - assertEquals(list_get_last((true and get_star_wars() or nil)), 'McCoy', 'get last order complex') - check_number_of_calls('get last order complex') - number_of_calls = 0 - assertEquals(first_index(list, list_get_random((get_star_wars()))) > 0, true, 'get random complex') - check_number_of_calls('get random complex') - number_of_calls = 0 - assertEquals(first_index(list, list_get_random((true and get_star_wars() or nil))) > 0, true, 'get random order complex') - check_number_of_calls('get random order complex') - number_of_calls = 0 - assertEquals((get_star_wars())[2], 'Spock', 'get # complex') - check_number_of_calls('get # complex') - number_of_calls = 0 - assertEquals((true and get_star_wars() or nil)[true and 2 or nil], 'Spock', 'get # order complex') - check_number_of_calls('get # order complex') - number_of_calls = 0 - assertEquals(list_get_from_end((get_star_wars()), 3), 'Kirk', 'get #-end complex') - check_number_of_calls('get #-end complex') - number_of_calls = 0 - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list_get_from_end((true and get_star_wars() or nil), 0 + 3), 'Kirk', 'get #-end order complex') - check_number_of_calls('get #-end order complex') -end - - -function list_remove_last(t) - return table.remove(t, #t) -end - -function list_remove_random(t) - return table.remove(t, math.random(#t)) -end - -function list_remove_from_end(t, at) - return table.remove(t, #t + 1 - at) -end - --- Tests the "get and remove" block. -function test_getRemove() - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(table.remove(list, 1), 'Kirk', 'getremove first') - assertEquals(list, {'Spock', 'McCoy'}, 'getremove first list') - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(table.remove((true and list or nil), 1), 'Kirk', 'getremove first order') - assertEquals(list, {'Spock', 'McCoy'}, 'getremove first order list') - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(table.remove(list, #list), 'McCoy', 'getremove last') - assertEquals(list, {'Kirk', 'Spock'}, 'getremove last list') - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(list_remove_last((true and list or nil)), 'McCoy', 'getremove last order') - assertEquals(list, {'Kirk', 'Spock'}, 'getremove last order list') - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(first_index(list, table.remove(list, math.random(#list))) == 0, true, 'getremove random') - assertEquals(#list, 2, 'getremove random list') - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(first_index(list, list_remove_random((true and list or nil))) == 0, true, 'getremove random order') - assertEquals(#list, 2, 'getremove random order list') - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(table.remove(list, 2), 'Spock', 'getremove #') - assertEquals(list, {'Kirk', 'McCoy'}, 'getremove # list') - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(table.remove((true and list or nil), true and 2 or nil), 'Spock', 'getremove # order') - assertEquals(list, {'Kirk', 'McCoy'}, 'getremove # order list') - list = {'Kirk', 'Spock', 'McCoy'} - assertEquals(table.remove(list, #list + 1 - 3), 'Kirk', 'getremove #-end') - assertEquals(list, {'Spock', 'McCoy'}, 'getremove #-end list') - list = {'Kirk', 'Spock', 'McCoy'} - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list_remove_from_end((true and list or nil), 0 + 3), 'Kirk', 'getremove #-end order') - assertEquals(list, {'Spock', 'McCoy'}, 'getremove #-end order list') -end - - --- Tests the "remove" block. -function test_remove() - list = {'Kirk', 'Spock', 'McCoy'} - table.remove(list, 1) - assertEquals(list, {'Spock', 'McCoy'}, 'remove first list') - list = {'Kirk', 'Spock', 'McCoy'} - table.remove((true and list or nil), 1) - assertEquals(list, {'Spock', 'McCoy'}, 'remove first order list') - list = {'Kirk', 'Spock', 'McCoy'} - table.remove(list, #list) - assertEquals(list, {'Kirk', 'Spock'}, 'remove last list') - list = {'Kirk', 'Spock', 'McCoy'} - tmp_list = (true and list or nil) - table.remove(tmp_list, #tmp_list) - assertEquals(list, {'Kirk', 'Spock'}, 'remove last order list') - list = {'Kirk', 'Spock', 'McCoy'} - table.remove(list, math.random(#list)) - assertEquals(#list, 2, 'remove random list') - list = {'Kirk', 'Spock', 'McCoy'} - tmp_list2 = (true and list or nil) - table.remove(tmp_list2, math.random(#tmp_list2)) - assertEquals(#list, 2, 'remove random order list') - list = {'Kirk', 'Spock', 'McCoy'} - table.remove(list, 2) - assertEquals(list, {'Kirk', 'McCoy'}, 'remove # list') - list = {'Kirk', 'Spock', 'McCoy'} - table.remove((true and list or nil), true and 2 or nil) - assertEquals(list, {'Kirk', 'McCoy'}, 'remove # order list') - list = {'Kirk', 'Spock', 'McCoy'} - table.remove(list, #list + 1 - 3) - assertEquals(list, {'Spock', 'McCoy'}, 'remove #-end list') - list = {'Kirk', 'Spock', 'McCoy'} - -- The order for index for #-end is addition because this will catch - -- errors in generators where most perform the operation ... - index. - tmp_list3 = (true and list or nil) - table.remove(tmp_list3, #tmp_list3 + 1 - (0 + 3)) - assertEquals(list, {'Spock', 'McCoy'}, 'remove #-end order list') -end - - --- Tests the "set" block. -function test_set() - list = {'Picard', 'Riker', 'Crusher'} - list[1] = 'Jean-Luc' - assertEquals(list, {'Jean-Luc', 'Riker', 'Crusher'}, 'set first list') - list = {'Picard', 'Riker', 'Crusher'} - (true and list or nil)[1] = 'Jean-Luc' - assertEquals(list, {'Jean-Luc', 'Riker', 'Crusher'}, 'set first order list') - list = {'Picard', 'Riker', 'Crusher'} - list[#list] = 'Beverly' - assertEquals(list, {'Picard', 'Riker', 'Beverly'}, 'set last list') - list = {'Picard', 'Riker', 'Crusher'} - tmp_list4 = (true and list or nil) - tmp_list4[#tmp_list4] = 'Beverly' - assertEquals(list, {'Picard', 'Riker', 'Beverly'}, 'set last order list') - list = {'Picard', 'Riker', 'Crusher'} - list[math.random(#list)] = 'Data' - assertEquals(#list, 3, 'set random list') - list = {'Picard', 'Riker', 'Crusher'} - tmp_list5 = (true and list or nil) - tmp_list5[math.random(#tmp_list5)] = 'Data' - assertEquals(#list, 3, 'set random order list') - list = {'Picard', 'Riker', 'Crusher'} - list[3] = 'Pulaski' - assertEquals(list, {'Picard', 'Riker', 'Pulaski'}, 'set # list') - list = {'Picard', 'Riker', 'Crusher'} - (true and list or nil)[(true and 3 or nil)] = 'Pulaski' - assertEquals(list, {'Picard', 'Riker', 'Pulaski'}, 'set # order list') - list = {'Picard', 'Riker', 'Crusher'} - list[#list + 1 - 1] = 'Pulaski' - assertEquals(list, {'Picard', 'Riker', 'Pulaski'}, 'set #-end list') - list = {'Picard', 'Riker', 'Crusher'} - -- The order for index for #-end is addition because this will catch - -- errors in generators where most perform the operation ... - index. - tmp_list6 = (true and list or nil) - tmp_list6[#tmp_list6 + 1 - (0 + 2)] = 'Pulaski' - assertEquals(list, {'Picard', 'Pulaski', 'Crusher'}, 'set #-end order list') -end - - --- Tests the "insert" block. -function test_insert() - list = {'Picard', 'Riker', 'Crusher'} - table.insert(list, 1, 'Data') - assertEquals(list, {'Data', 'Picard', 'Riker', 'Crusher'}, 'insert first list') - list = {'Picard', 'Riker', 'Crusher'} - table.insert((true and list or nil), 1, 'Data') - assertEquals(list, {'Data', 'Picard', 'Riker', 'Crusher'}, 'insert first order list') - list = {'Picard', 'Riker', 'Crusher'} - table.insert(list, #list + 1, 'Data') - assertEquals(list, {'Picard', 'Riker', 'Crusher', 'Data'}, 'insert last list') - list = {'Picard', 'Riker', 'Crusher'} - tmp_list7 = (true and list or nil) - table.insert(tmp_list7, #tmp_list7 + 1, 'Data') - assertEquals(list, {'Picard', 'Riker', 'Crusher', 'Data'}, 'insert last order list') - list = {'Picard', 'Riker', 'Crusher'} - table.insert(list, math.random(#list), 'Data') - assertEquals(#list, 4, 'insert random list') - list = {'Picard', 'Riker', 'Crusher'} - tmp_list8 = (true and list or nil) - table.insert(tmp_list8, math.random(#tmp_list8), 'Data') - assertEquals(#list, 4, 'insert random order list') - list = {'Picard', 'Riker', 'Crusher'} - table.insert(list, 3, 'Data') - assertEquals(list, {'Picard', 'Riker', 'Data', 'Crusher'}, 'insert # list') - list = {'Picard', 'Riker', 'Crusher'} - table.insert((true and list or nil), (true and 3 or nil), 'Data') - assertEquals(list, {'Picard', 'Riker', 'Data', 'Crusher'}, 'insert # order list') - list = {'Picard', 'Riker', 'Crusher'} - table.insert(list, #list + 1 - 1, 'Data') - assertEquals(list, {'Picard', 'Riker', 'Data', 'Crusher'}, 'insert #-end list') - list = {'Picard', 'Riker', 'Crusher'} - -- The order for index for #-end is addition because this will catch - -- errors in generators where most perform the operation ... - index. - tmp_list9 = (true and list or nil) - table.insert(tmp_list9, #tmp_list9 + 1 - (0 + 2), 'Data') - assertEquals(list, {'Picard', 'Data', 'Riker', 'Crusher'}, 'insert #-end order list') -end - - -function list_sublist_from_start_from_start(source, at1, at2) - local t = {} - local start = at1 - local finish = at2 - for i = start, finish do - table.insert(t, source[i]) - end - return t -end - -function list_sublist_from_end_from_end(source, at1, at2) - local t = {} - local start = #source + 1 - at1 - local finish = #source + 1 - at2 - for i = start, finish do - table.insert(t, source[i]) - end - return t -end - -function list_sublist_first_last(source) - local t = {} - local start = 1 - local finish = #source - for i = start, finish do - table.insert(t, source[i]) - end - return t -end - -function list_sublist_from_start_from_end(source, at1, at2) - local t = {} - local start = at1 - local finish = #source + 1 - at2 - for i = start, finish do - table.insert(t, source[i]) - end - return t -end - -function list_sublist_from_end_from_start(source, at1, at2) - local t = {} - local start = #source + 1 - at1 - local finish = at2 - for i = start, finish do - table.insert(t, source[i]) - end - return t -end - -function list_sublist_first_from_start(source, at2) - local t = {} - local start = 1 - local finish = at2 - for i = start, finish do - table.insert(t, source[i]) - end - return t -end - -function list_sublist_first_from_end(source, at2) - local t = {} - local start = 1 - local finish = #source + 1 - at2 - for i = start, finish do - table.insert(t, source[i]) - end - return t -end - -function list_sublist_from_start_last(source, at1) - local t = {} - local start = at1 - local finish = #source - for i = start, finish do - table.insert(t, source[i]) - end - return t -end - -function list_sublist_from_end_last(source, at1) - local t = {} - local start = #source + 1 - at1 - local finish = #source - for i = start, finish do - table.insert(t, source[i]) - end - return t -end - --- Tests the "get sub-list" block with a variable. -function test_sublist_simple() - list = {'Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'} - assertEquals(list_sublist_from_start_from_start(list, 2, 3), {'Challenger', 'Discovery'}, 'sublist # simple') - assertEquals(list_sublist_from_start_from_start(list, true and 2 or nil, true and 3 or nil), {'Challenger', 'Discovery'}, 'sublist # simple order') - assertEquals(list_sublist_from_end_from_end(list, 3, 2), {'Discovery', 'Atlantis'}, 'sublist #-end simple') - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list_sublist_from_end_from_end(list, 0 + 3, 0 + 2), {'Discovery', 'Atlantis'}, 'sublist #-end simple order') - assertEquals(list_sublist_first_last(list), list, 'sublist first-last simple') - changing_list = {'Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'} - list_copy = list_sublist_first_last(changing_list) - table.remove(changing_list, math.random(#changing_list)) - assertEquals(list_copy, list, 'sublist first-last simple copy check') - assertEquals(list_sublist_from_start_from_end(list, 2, 2), {'Challenger', 'Discovery', 'Atlantis'}, 'sublist # #-end simple') - assertEquals(list_sublist_from_end_from_start(list, 3, 4), {'Discovery', 'Atlantis'}, 'sublist #-end # simple') - assertEquals(list_sublist_first_from_start(list, 4), {'Columbia', 'Challenger', 'Discovery', 'Atlantis'}, 'sublist first # simple') - assertEquals(list_sublist_first_from_end(list, 4), {'Columbia', 'Challenger'}, 'sublist first #-end simple') - assertEquals(list_sublist_from_start_last(list, 4), {'Atlantis', 'Endeavour'}, 'sublist # last simple') - assertEquals(list_sublist_from_end_last(list, 4), {'Challenger', 'Discovery', 'Atlantis', 'Endeavour'}, 'sublist #-end last simple') - assertEquals(list_sublist_from_start_from_end(list, 1, 1), list, 'sublist all with # #-end simple') - assertEquals(list_sublist_from_end_from_start(list, 5, 5), list, 'sublist all with #-end # simple') - -- Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - assertEquals(list_sublist_from_start_from_end(list, 0 + 1, 0 + 1), list, 'sublist all with # #-end math simple') -end - - --- Creates a list for use with the sublist test. -function get_space_shuttles() - number_of_calls = number_of_calls + 1 - return {'Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'} -end - - --- Tests the "get sub-list" block with a function call. -function test_sublist_complex() - number_of_calls = 0 - assertEquals(list_sublist_from_start_from_start(get_space_shuttles(), 2, 3), {'Challenger', 'Discovery'}, 'sublist # start complex') - check_number_of_calls('sublist # start complex') - number_of_calls = 0 - assertEquals(list_sublist_from_start_from_start(true and get_space_shuttles() or nil, true and 2 or nil, true and 3 or nil), {'Challenger', 'Discovery'}, 'sublist # start order complex') - check_number_of_calls('sublist # start order complex') - number_of_calls = 0 - -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list_sublist_from_end_from_end(get_space_shuttles(), 3, 2), {'Discovery', 'Atlantis'}, 'sublist # end complex') - assertEquals(number_of_calls, 1, 'sublist # end complex number of calls') - number_of_calls = 0 - assertEquals(list_sublist_from_end_from_end(true and get_space_shuttles() or nil, 0 + 3, 0 + 2), {'Discovery', 'Atlantis'}, 'sublist # end order complex') - check_number_of_calls('sublist # end order complex') - number_of_calls = 0 - assertEquals(list_sublist_first_last(get_space_shuttles()), list, 'sublist first-last complex') - check_number_of_calls('sublist first-last complex') - number_of_calls = 0 - assertEquals(list_sublist_from_start_from_end(get_space_shuttles(), 2, 2), {'Challenger', 'Discovery', 'Atlantis'}, 'sublist # #-end complex') - check_number_of_calls('sublist # #-end complex') - number_of_calls = 0 - assertEquals(list_sublist_from_end_from_start(get_space_shuttles(), 3, 4), {'Discovery', 'Atlantis'}, 'sublist #-end # complex') - check_number_of_calls('sublist #-end # complex') - number_of_calls = 0 - assertEquals(list_sublist_first_from_start(get_space_shuttles(), 4), {'Columbia', 'Challenger', 'Discovery', 'Atlantis'}, 'sublist first # complex') - check_number_of_calls('sublist first # complex') - number_of_calls = 0 - assertEquals(list_sublist_first_from_end(get_space_shuttles(), 4), {'Columbia', 'Challenger'}, 'sublist first #-end complex') - check_number_of_calls('sublist first #-end complex') - number_of_calls = 0 - assertEquals(list_sublist_from_start_last(get_space_shuttles(), 4), {'Atlantis', 'Endeavour'}, 'sublist # last complex') - check_number_of_calls('sublist # last complex') - number_of_calls = 0 - assertEquals(list_sublist_from_end_last(get_space_shuttles(), 4), {'Challenger', 'Discovery', 'Atlantis', 'Endeavour'}, 'sublist #-end last simple') - check_number_of_calls('sublist #-end last simple') - number_of_calls = 0 - assertEquals(list_sublist_from_start_from_end(get_space_shuttles(), 1, 1), list, 'sublist all with # #-end complex') - check_number_of_calls('sublist all with # #-end complex') - number_of_calls = 0 - assertEquals(list_sublist_from_end_from_start(get_space_shuttles(), 5, 5), list, 'sublist all with #-end # complex') - check_number_of_calls('sublist all with #-end # complex') - number_of_calls = 0 - -- Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - assertEquals(list_sublist_from_start_from_end(get_space_shuttles(), 0 + 1, 0 + 1), list, 'sublist all with # #-end math complex') - check_number_of_calls('sublist all with # #-end math complex') -end - - --- Tests the "join" block. -function test_join() - list = {'Vulcan', 'Klingon', 'Borg'} - assertEquals(table.concat(list, ','), 'Vulcan,Klingon,Borg', 'join') - assertEquals(table.concat(true and list or nil, ','), 'Vulcan,Klingon,Borg', 'join order') -end - - -function list_string_split(input, delim) - local t = {} - local pos = 1 - while true do - next_delim = string.find(input, delim, pos) - if next_delim == nil then - table.insert(t, string.sub(input, pos)) - break - else - table.insert(t, string.sub(input, pos, next_delim-1)) - pos = next_delim + #delim - end - end - return t -end - --- Tests the "split" block. -function test_split() - text = 'Vulcan,Klingon,Borg' - assertEquals(list_string_split(text, ','), {'Vulcan', 'Klingon', 'Borg'}, 'split') - assertEquals(list_string_split(true and text or nil, ','), {'Vulcan', 'Klingon', 'Borg'}, 'split order') -end - - -function list_sort(list, typev, direction) - local t = {} - for n,v in pairs(list) do table.insert(t, v) end - local compareFuncs = { - NUMERIC = function(a, b) - return (tonumber(tostring(a)) or 0) - < (tonumber(tostring(b)) or 0) end, - TEXT = function(a, b) - return tostring(a) < tostring(b) end, - IGNORE_CASE = function(a, b) - return string.lower(tostring(a)) < string.lower(tostring(b)) end - } - local compareTemp = compareFuncs[typev] - local compare = compareTemp - if direction == -1 - then compare = function(a, b) return compareTemp(b, a) end - end - table.sort(t, compare) - return t -end - --- Tests the "alphabetic sort" block. -function test_sort_alphabetic() - list = {'Vulcan', 'klingon', 'Borg'} - assertEquals(list_sort(list,"TEXT", 1), {'Borg', 'Vulcan', 'klingon'}, 'sort alphabetic ascending') - assertEquals(list_sort(true and list or nil,"TEXT", 1), {'Borg', 'Vulcan', 'klingon'}, 'sort alphabetic ascending order') -end - - --- Tests the "alphabetic sort ignore case" block. -function test_sort_ignoreCase() - list = {'Vulcan', 'klingon', 'Borg'} - assertEquals(list_sort(list,"IGNORE_CASE", 1), {'Borg', 'klingon', 'Vulcan'}, 'sort ignore case ascending') - assertEquals(list_sort(true and list or nil,"IGNORE_CASE", 1), {'Borg', 'klingon', 'Vulcan'}, 'sort ignore case ascending order') -end - - --- Tests the "numeric sort" block. -function test_sort_numeric() - list = {8, 18, -1} - assertEquals(list_sort(list,"NUMERIC", -1), {18, 8, -1}, 'sort numeric descending') - assertEquals(list_sort(true and list or nil,"NUMERIC", -1), {18, 8, -1}, 'sort numeric descending order') -end - - -function list_reverse(input) - local reversed = {} - for i = #input, 1, -1 do - table.insert(reversed, input[i]) - end - return reversed -end - --- Tests the "list reverse" block. -function test_lists_reverse() - list = {8, 18, -1, 64} - assertEquals(list_reverse(list), {64, -1, 18, 8}, 'reverse a copy') - assertEquals(list, {8, 18, -1, 64}, 'reverse a copy original') - list = {} - assertEquals(list_reverse(list), {}, 'empty list') -end - - --- Describe this function... -function test_colour_picker() - assertEquals('#ff6600', '#ff6600', 'static colour') -end - - -function colour_rgb(r, g, b) - r = math.floor(math.min(100, math.max(0, r)) * 2.55 + .5) - g = math.floor(math.min(100, math.max(0, g)) * 2.55 + .5) - b = math.floor(math.min(100, math.max(0, b)) * 2.55 + .5) - return string.format("#%02x%02x%02x", r, g, b) -end - --- Describe this function... -function test_rgb() - assertEquals(colour_rgb(100, 40, 0), '#ff6600', 'from rgb') -end - - --- Describe this function... -function test_colour_random() - for count4 = 1, 100 do - item = string.format("#%06x", math.random(0, 2^24 - 1)) - assertEquals(#item, 7, 'length of random colour string: ' .. item) - assertEquals(string.sub(item, 1, 1), '#', 'format of random colour string: ' .. item) - for i = 1, 6, 1 do - assertEquals(0 ~= firstIndexOf('abcdefABDEF0123456789', text_char_at(item, i + 1)), true, table.concat({'contents of random colour string: ', item, ' at index: ', i + 1})) - end - end -end - - -function colour_blend(colour1, colour2, ratio) - local r1 = tonumber(string.sub(colour1, 2, 3), 16) - local r2 = tonumber(string.sub(colour2, 2, 3), 16) - local g1 = tonumber(string.sub(colour1, 4, 5), 16) - local g2 = tonumber(string.sub(colour2, 4, 5), 16) - local b1 = tonumber(string.sub(colour1, 6, 7), 16) - local b2 = tonumber(string.sub(colour2, 6, 7), 16) - local ratio = math.min(1, math.max(0, ratio)) - local r = math.floor(r1 * (1 - ratio) + r2 * ratio + .5) - local g = math.floor(g1 * (1 - ratio) + g2 * ratio + .5) - local b = math.floor(b1 * (1 - ratio) + b2 * ratio + .5) - return string.format("#%02x%02x%02x", r, g, b) -end - --- Describe this function... -function test_blend() - assertEquals(colour_blend('#ff0000', colour_rgb(100, 40, 0), 0.4), '#ff2900', 'blend') -end - - --- Describe this function... -function test_procedure() - procedure_1(8, 2) - assertEquals(proc_z, 4, 'procedure with global') - proc_w = false - procedure_2(false) - assertEquals(proc_w, true, 'procedure no return') - proc_w = false - procedure_2(true) - assertEquals(proc_w, false, 'procedure return') -end - - --- Describe this function... -function procedure_1(proc_x, proc_y) - proc_z = proc_x / proc_y -end - - --- Describe this function... -function procedure_2(proc_x) - if proc_x then - return - end - proc_w = true -end - - --- Describe this function... -function test_function() - assertEquals(function_1(2, 3), -1, 'function with arguments') - assertEquals(func_z, 'side effect', 'function with side effect') - func_a = 'unchanged' - func_c = 'global' - assertEquals(function_2(2), '3global', 'function with global') - assertEquals(func_a, 'unchanged', 'function with scope') - assertEquals(function_3(true), true, 'function return') - assertEquals(function_3(false), false, 'function no return') -end - - --- Describe this function... -function function_1(func_x, func_y) - func_z = 'side effect' - return func_x - func_y -end - - --- Describe this function... -function function_2(func_a) - func_a = func_a + 1 - return func_a .. func_c -end - - --- Describe this function... -function function_3(func_a) - if func_a then - return true - end - return false -end - - --- Describe this function... -function recurse(n) - if n > 0 then - text = table.concat({recurse(n - 1), n, recurse(n - 1)}) - else - text = '-' - end - return text -end - - - -unittestResults = {} -print('\n====================\n\nRunning suite: Logic') -assertEquals(true, true, 'True') -assertEquals(false, false, 'False') -assertEquals(not false, true, 'Not true') -assertEquals(not true, false, 'Not false') -test_if() -test_ifelse() -test_equalities() -test_and() -test_or() -test_ternary() -print(unittest_report()) -unittestResults = nil - -unittestResults = {} -print('\n====================\n\nRunning suite: Loops 1') -test_repeat() -test_repeat_ext() -test_while() -test_foreach() -print(unittest_report()) -unittestResults = nil - -unittestResults = {} -print('\n====================\n\nRunning suite: Loops 2') -test_count_loops() -test_count_by() -print(unittest_report()) -unittestResults = nil - -unittestResults = {} -print('\n====================\n\nRunning suite: Loops 3') -test_break() -test_continue() -print(unittest_report()) -unittestResults = nil - -unittestResults = {} -print('\n====================\n\nRunning suite: Math') -test_arithmetic() -test_single() -test_trig() -test_constant() -test_change() -test_number_properties() -test_round() -test_operations_on_list() -test_constraint() -test_mod() -test_random_integer() -test_random_fraction() -test_atan2() -print(unittest_report()) -unittestResults = nil - -unittestResults = {} -print('\n====================\n\nRunning suite: Text') -test_text_length() -test_empty_text() -test_create_text() -test_append() -test_find_text_simple() -test_find_text_complex() -test_get_text_simple() -test_get_text_complex() -test_substring_simple() -test_substring_complex() -test_case() -test_trim() -test_count_text() -test_text_reverse() -test_replace() -test_multiline() -print(unittest_report()) -unittestResults = nil - -unittestResults = {} -print('\n====================\n\nRunning suite: Lists') -test_create_lists() -test_lists_empty() -test_lists_length() -test_find_lists_simple() -test_find_lists_complex() -test_get_lists_simple() -test_get_lists_create_list() -test_get_lists_complex() -test_getRemove() -test_remove() -test_set() -test_insert() -test_sublist_simple() -test_sublist_complex() -test_join() -test_split() -test_sort_alphabetic() -test_sort_ignoreCase() -test_sort_numeric() -test_lists_reverse() -print(unittest_report()) -unittestResults = nil - -unittestResults = {} -print('\n====================\n\nRunning suite: Colour') -test_colour_picker() -test_blend() -test_rgb() -test_colour_random() -print(unittest_report()) -unittestResults = nil - -unittestResults = {} -print('\n====================\n\nRunning suite: Variables') -item = 123 -assertEquals(item, 123, 'variable') -if2 = 123 -assertEquals(if2, 123, 'reserved variable') -print(unittest_report()) -unittestResults = nil - -local _ = -- Intentionally non-connected variable. -naked - -unittestResults = {} -print('\n====================\n\nRunning suite: Functions') -test_procedure() -test_function() -assertEquals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse') -print(unittest_report()) -unittestResults = nil +function unittest_report() + -- Create test report. + local report = {} + local summary = {} + local fails = 0 + for _, v in pairs(unittestResults) do + if v["success"] then + table.insert(summary, ".") + else + table.insert(summary, "F") + fails = fails + 1 + table.insert(report, "FAIL: " .. v["title"]) + table.insert(report, v["log"]) + end + end + table.insert(report, 1, table.concat(summary)) + table.insert(report, "") + table.insert(report, "Number of tests run: " .. #unittestResults) + table.insert(report, "") + if fails > 0 then + table.insert(report, "FAILED (failures=" .. fails .. ")") + else + table.insert(report, "OK") + end + return table.concat(report, "\n") +end + +function assertEquals(actual, expected, message) + -- Asserts that a value equals another value. + assert(unittestResults ~= nil, "Orphaned assert equals: " .. message) + if type(actual) == "table" and type(expected) == "table" then + local lists_match = #actual == #expected + if lists_match then + for i, v1 in ipairs(actual) do + local v2 = expected[i] + if type(v1) == "number" and type(v2) == "number" then + if math.abs(v1 - v2) > 1e-9 then + lists_match = false + end + elseif v1 ~= v2 then + lists_match = false + end + end + end + if lists_match then + table.insert(unittestResults, {success=true, log="OK", title=message}) + return + else + -- produce the non-matching strings for a human-readable error + expected = "{" .. table.concat(expected, ", ") .. "}" + actual = "{" .. table.concat(actual, ", ") .. "}" + end + end + if actual == expected or (type(actual) == "number" and type(expected) == "number" and math.abs(actual - expected) < 1e-9) then + table.insert(unittestResults, {success=true, log="OK", title=message}) + else + table.insert(unittestResults, {success=false, log=string.format("Expected: %s\nActual: %s", tostring(expected), tostring(actual)), title=message}) + end +end + +function unittest_fail(message) + -- Always assert an error. + assert(unittestResults ~= nil, "Orphaned assert fail: " .. message) + table.insert(unittestResults, {success=false, log="Fail.", title=message}) +end + +-- Describe this function... +function test_if() + if false then + unittest_fail('if false') + end + ok = false + if true then + ok = true + end + assertEquals(ok, true, 'if true') + ok = false + if false then + unittest_fail('if/else false') + else + ok = true + end + assertEquals(ok, true, 'if/else false') + ok = false + if true then + ok = true + else + unittest_fail('if/else true') + end + assertEquals(ok, true, 'if/else true') + ok = false + if false then + unittest_fail('elseif 1') + elseif true then + ok = true + elseif true then + unittest_fail('elseif 2') + else + unittest_fail('elseif 3') + end + assertEquals(ok, true, 'elseif 4') +end + + +-- Describe this function... +function test_ifelse() + ok = false + if true then + ok = true + else + unittest_fail('ifelse true') + end + assertEquals(ok, true, 'ifelse true') + ok = false + if false then + unittest_fail('ifelse false') + else + ok = true + end + assertEquals(ok, true, 'ifelse false') +end + + +-- Describe this function... +function test_equalities() + assertEquals(2 == 2, true, 'Equal yes') + assertEquals(3 == 4, false, 'Equal no') + assertEquals(5 ~= 6, true, 'Not equal yes') + assertEquals(3 == 4, false, 'Not equal no') + assertEquals(5 < 6, true, 'Smaller yes') + assertEquals(7 < 7, false, 'Smaller no') + assertEquals(9 > 8, true, 'Greater yes') + assertEquals(10 > 10, false, 'Greater no') + assertEquals(11 <= 11, true, 'Smaller-equal yes') + assertEquals(13 <= 12, false, 'Smaller-equal no') + assertEquals(14 >= 14, true, 'Greater-equal yes') + assertEquals(15 >= 16, false, 'Greater-equal no') +end + + +-- Describe this function... +function test_and() + assertEquals(true and true, true, 'And true/true') + assertEquals(false and true, false, 'And false/true') + assertEquals(true and false, false, 'And true/false') + assertEquals(false and false, false, 'And false/false') +end + + +-- Describe this function... +function test_or() + assertEquals(true or true, true, 'Or true/true') + assertEquals(false or true, true, 'Or false/true') + assertEquals(true or false, true, 'Or true/false') + assertEquals(false or false, false, 'Or false/false') +end + + +-- Describe this function... +function test_ternary() + assertEquals(true and 42 or 99, 42, 'if true') + assertEquals(false and 42 or 99, 99, 'if true') +end + + +-- Describe this function... +function test_foreach() + log = '' + for _, x in ipairs({'a', 'b', 'c'}) do + log = log .. x + end + assertEquals(log, 'abc', 'for loop') +end + + +-- Describe this function... +function test_repeat() + count = 0 + for count2 = 1, 10 do + count = count + 1 + end + assertEquals(count, 10, 'repeat 10') +end + + +-- Describe this function... +function test_while() + while false do + unittest_fail('while 0') + end + while not true do + unittest_fail('until 0') + end + count = 1 + while count ~= 10 do + count = count + 1 + end + assertEquals(count, 10, 'while 10') + count = 1 + while not (count == 10) do + count = count + 1 + end + assertEquals(count, 10, 'until 10') +end + + +-- Describe this function... +function test_repeat_ext() + count = 0 + for count3 = 1, 10 do + count = count + 1 + end + assertEquals(count, 10, 'repeat 10') +end + + +-- Describe this function... +function test_count_by() + log = '' + for x = 1, 8, 2 do + log = log .. x + end + assertEquals(log, '1357', 'count up ints') + log = '' + for x = 8, 1, -2 do + log = log .. x + end + assertEquals(log, '8642', 'count down ints') + loglist = {} + for x = 1, 8, 1.5 do + table.insert(loglist, #loglist + 1, x) + end + assertEquals(loglist, {1, 2.5, 4, 5.5, 7}, 'count with floats') + loglist = {} + x_inc = math.abs(1 - 2) + if (1 + 0) > (8 + 0) then + x_inc = -x_inc + end + for x = 1 + 0, 8 + 0, x_inc do + table.insert(loglist, #loglist + 1, x) + end + assertEquals(loglist, {1, 2, 3, 4, 5, 6, 7, 8}, 'count up non-trivial ints') + loglist = {} + x_inc2 = 2 + if (8 + 0) > (1 + 0) then + x_inc2 = -x_inc2 + end + for x = 8 + 0, 1 + 0, x_inc2 do + table.insert(loglist, #loglist + 1, x) + end + assertEquals(loglist, {8, 6, 4, 2}, 'count down non-trivial ints') + loglist = {} + x_inc3 = math.abs(1 + 0) + if (5 + 0.5) > (1 + 0) then + x_inc3 = -x_inc3 + end + for x = 5 + 0.5, 1 + 0, x_inc3 do + table.insert(loglist, #loglist + 1, x) + end + assertEquals(loglist, {5.5, 4.5, 3.5, 2.5, 1.5}, 'count with floats') +end + + +-- Describe this function... +function test_count_loops() + log = '' + for x = 1, 8, 1 do + log = log .. x + end + assertEquals(log, '12345678', 'count up') + log = '' + for x = 8, 1, -1 do + log = log .. x + end + assertEquals(log, '87654321', 'count down') + loglist = {} + x_inc4 = 1 + if (1 + 0) > (4 + 0) then + x_inc4 = -x_inc4 + end + for x = 1 + 0, 4 + 0, x_inc4 do + table.insert(loglist, #loglist + 1, x) + end + assertEquals(loglist, {1, 2, 3, 4}, 'count up non-trivial') + loglist = {} + x_inc5 = 1 + if (3 + 1) > (1 + 0) then + x_inc5 = -x_inc5 + end + for x = 3 + 1, 1 + 0, x_inc5 do + table.insert(loglist, #loglist + 1, x) + end + assertEquals(loglist, {4, 3, 2, 1}, 'count down non-trivial') +end + + +-- Describe this function... +function test_continue() + log = '' + count = 0 + while count ~= 8 do + count = count + 1 + if count == 5 then + goto continue + end + log = log .. count + ::continue:: + end + assertEquals(log, '1234678', 'while continue') + log = '' + count = 0 + while not (count == 8) do + count = count + 1 + if count == 5 then + goto continue + end + log = log .. count + ::continue:: + end + assertEquals(log, '1234678', 'until continue') + log = '' + for x = 1, 8, 1 do + if x == 5 then + goto continue + end + log = log .. x + ::continue:: + end + assertEquals(log, '1234678', 'count continue') + log = '' + for _, x in ipairs({'a', 'b', 'c', 'd'}) do + if x == 'c' then + goto continue + end + log = log .. x + ::continue:: + end + assertEquals(log, 'abd', 'for continue') +end + + +-- Describe this function... +function test_break() + count = 1 + while count ~= 10 do + if count == 5 then + break + end + count = count + 1 + end + assertEquals(count, 5, 'while break') + count = 1 + while not (count == 10) do + if count == 5 then + break + end + count = count + 1 + end + assertEquals(count, 5, 'until break') + log = '' + for x = 1, 8, 1 do + if x == 5 then + break + end + log = log .. x + end + assertEquals(log, '1234', 'count break') + log = '' + for _, x in ipairs({'a', 'b', 'c', 'd'}) do + if x == 'c' then + break + end + log = log .. x + end + assertEquals(log, 'ab', 'for break') +end + + +-- Tests the "single" block. +function test_single() + assertEquals(math.sqrt(25), 5, 'sqrt') + assertEquals(math.abs(-25), 25, 'abs') + assertEquals(-(-25), 25, 'negate') + assertEquals(math.log(1), 0, 'ln') + assertEquals(math.log(100, 10), 2, 'log10') + assertEquals(math.exp(2), 7.38905609893065, 'exp') + assertEquals(10 ^ 2, 100, 'power10') +end + + +-- Tests the "arithmetic" block for all operations and checks +-- parenthesis are properly generated for different orders. +function test_arithmetic() + assertEquals(1 + 2, 3, 'add') + assertEquals(1 - 2, -1, 'subtract') + assertEquals(1 - (0 + 2), -1, 'subtract order with add') + assertEquals(1 - (0 - 2), 3, 'subtract order with subtract') + assertEquals(4 * 2.5, 10, 'multiply') + assertEquals(4 * (0 + 2.5), 10, 'multiply order') + assertEquals(8.2 / -5, -1.64, 'divide') + assertEquals(8.2 / (0 + -5), -1.64, 'divide order') + assertEquals(10 ^ 4, 10000, 'power') + assertEquals(10 ^ (0 + 4), 10000, 'power order') +end + + +-- Tests the "trig" block. +function test_trig() + assertEquals(math.sin(math.rad(90)), 1, 'sin') + assertEquals(math.cos(math.rad(180)), -1, 'cos') + assertEquals(math.tan(math.rad(0)), 0, 'tan') + assertEquals(math.deg(math.asin(-1)), -90, 'asin') + assertEquals(math.deg(math.acos(1)), 0, 'acos') + assertEquals(math.deg(math.atan(1)), 45, 'atan') +end + + +-- Tests the "constant" blocks. +function test_constant() + assertEquals(math.floor(math.pi * 1000), 3141, 'const pi') + assertEquals(math.floor(math.exp(1) * 1000), 2718, 'const e') + assertEquals(math.floor(((1 + math.sqrt(5)) / 2) * 1000), 1618, 'const golden') + assertEquals(math.floor(math.sqrt(2) * 1000), 1414, 'const sqrt 2') + assertEquals(math.floor(math.sqrt(1 / 2) * 1000), 707, 'const sqrt 0.5') + assertEquals(9999 < math.huge, true, 'const infinity') +end + + +function math_isPrime(n) + -- https://en.wikipedia.org/wiki/Primality_test#Naive_methods + if n == 2 or n == 3 then + return true + end + -- False if n is NaN, negative, is 1, or not whole. + -- And false if n is divisible by 2 or 3. + if not(n > 1) or n % 1 ~= 0 or n % 2 == 0 or n % 3 == 0 then + return false + end + -- Check all the numbers of form 6k +/- 1, up to sqrt(n). + for x = 6, math.sqrt(n) + 1.5, 6 do + if n % (x - 1) == 0 or n % (x + 1) == 0 then + return false + end + end + return true +end + +-- Tests the "number property" blocks. +function test_number_properties() + assertEquals(42 % 2 == 0, true, 'even') + assertEquals(42.1 % 2 == 1, false, 'odd') + assertEquals(math_isPrime(5), true, 'prime 5') + assertEquals(math_isPrime(5 + 2), true, 'prime 5 + 2 (extra parentheses)') + assertEquals(math_isPrime(25), false, 'prime 25') + assertEquals(math_isPrime(-31.1), false, 'prime negative') + assertEquals(math.pi % 1 == 0, false, 'whole') + assertEquals(math.huge > 0, true, 'positive') + assertEquals(5 + 2 > 0, true, '5 + 2 is positive (extra parentheses)') + assertEquals(-42 < 0, true, 'negative') + assertEquals(3 + 2 < 0, false, '3 + 2 is negative (extra parentheses)') + assertEquals(42 % 2 == 0, true, 'divisible') + assertEquals(not nil, true, 'divisible by 0') +end + + +-- Tests the "round" block. +function test_round() + assertEquals(math.floor(42.42 + .5), 42, 'round') + assertEquals(math.ceil(-42.42), -42, 'round up') + assertEquals(math.floor(42.42), 42, 'round down') +end + + +-- Tests the "change" block. +function test_change() + varToChange = 100 + varToChange = varToChange + 42 + assertEquals(varToChange, 142, 'change') +end + + +function math_sum(t) + local result = 0 + for _, v in ipairs(t) do + result = result + v + end + return result +end + +function math_min(t) + if #t == 0 then + return 0 + end + local result = math.huge + for _, v in ipairs(t) do + if v < result then + result = v + end + end + return result +end + +function math_max(t) + if #t == 0 then + return 0 + end + local result = -math.huge + for _, v in ipairs(t) do + if v > result then + result = v + end + end + return result +end + +function math_average(t) + if #t == 0 then + return 0 + end + return math_sum(t) / #t +end + +function math_median(t) + -- Source: http://lua-users.org/wiki/SimpleStats + if #t == 0 then + return 0 + end + local temp = {} + for _, v in ipairs(t) do + if type(v) == 'number' then + table.insert(temp, v) + end + end + table.sort(temp) + if #temp % 2 == 0 then + return (temp[#temp / 2] + temp[(#temp / 2) + 1]) / 2 + else + return temp[math.ceil(#temp / 2)] + end +end + +function math_modes(t) + -- Source: http://lua-users.org/wiki/SimpleStats + local counts = {} + for _, v in ipairs(t) do + if counts[v] == nil then + counts[v] = 1 + else + counts[v] = counts[v] + 1 + end + end + local biggestCount = 0 + for _, v in pairs(counts) do + if v > biggestCount then + biggestCount = v + end + end + local temp = {} + for k, v in pairs(counts) do + if v == biggestCount then + table.insert(temp, k) + end + end + return temp +end + +function math_standard_deviation(t) + local m + local vm + local total = 0 + local count = 0 + local result + m = #t == 0 and 0 or math_sum(t) / #t + for _, v in ipairs(t) do + if type(v) == 'number' then + vm = v - m + total = total + (vm * vm) + count = count + 1 + end + end + result = math.sqrt(total / (count-1)) + return result +end + +function math_random_list(t) + if #t == 0 then + return nil + end + return t[math.random(#t)] +end + +function first_index(t, elem) + for k, v in ipairs(t) do + if v == elem then + return k + end + end + return 0 +end + +-- Tests the "list operation" blocks. +function test_operations_on_list() + assertEquals(math_sum({3, 4, 5}), 12, 'sum') + assertEquals(math_min({3, 4, 5}), 3, 'min') + assertEquals(math_max({3, 4, 5}), 5, 'max') + assertEquals(math_average({3, 4, 5}), 4, 'average') + assertEquals(math_median({3, 4, 5, 1}), 3.5, 'median') + assertEquals(math_modes({3, 4, 3}), {3}, 'modes') + assertEquals(math_modes({3, 4, 3, 1, 4}), {3, 4}, 'modes multiple') + assertEquals(math_standard_deviation({3, 3, 3}), 0, 'standard dev') + assertEquals(first_index({3, 4, 5}, math_random_list({3, 4, 5})) > 0, true, 'random') +end + + +-- Tests the "mod" block. +function test_mod() + assertEquals(42 % 5, 2, 'mod') +end + + +-- Tests the "constrain" block. +function test_constraint() + assertEquals(math.min(math.max(100, 0), 42), 42, 'constraint') +end + + +-- Tests the "random integer" block. +function test_random_integer() + rand = math.random(5, 10) + assertEquals(rand >= 5 and rand <= 10, true, 'randRange') + assertEquals(rand % 1 == 0, true, 'randInteger') +end + + +-- Tests the "random fraction" block. +function test_random_fraction() + rand = math.random() + assertEquals(rand >= 0 and rand <= 1, true, 'randFloat') +end + + +-- Describe this function... +function test_atan2() + assertEquals(math.deg(math.atan2(5, -5)), 135, 'atan2') + assertEquals(math.deg(math.atan2(-12, 0)), -90, 'atan2') +end + + +-- Checks that the number of calls is one in order +-- to confirm that a function was only called once. +function check_number_of_calls(test_name) + test_name = test_name .. 'number of calls' + assertEquals(number_of_calls, 1, test_name) +end + + +-- Tests the "create text with" block with varying number of inputs. +function test_create_text() + assertEquals('', '', 'no text') + assertEquals(tostring('Hello'), 'Hello', 'create single') + assertEquals(tostring(-1), '-1', 'create single number') + assertEquals('K' .. 9, 'K9', 'create double text') + assertEquals(4 .. 2, '42', 'create double text numbers') + assertEquals(table.concat({1, 2, 3}), '123', 'create triple') + assertEquals(table.concat({1, true and 0 or nil, 'M'}), '10M', 'create order') +end + + +-- Creates an empty string for use with the empty test. +function get_empty() + return '' +end + + +-- Tests the "is empty" block". +function test_empty_text() + assertEquals(#'Google' == 0, false, 'not empty') + assertEquals(#'' == 0, true, 'empty') + assertEquals(#get_empty() == 0, true, 'empty complex') + assertEquals(#(true and '' or nil) == 0, true, 'empty order') +end + + +-- Tests the "length" block. +function test_text_length() + assertEquals(#'', 0, 'zero length') + assertEquals(#'Google', 6, 'non-zero length') + assertEquals(#(true and 'car' or nil), 3, 'length order') +end + + +-- Tests the "append text" block with different types of parameters. +function test_append() + item = 'Miserable' + item = item .. 'Failure' + assertEquals(item, 'MiserableFailure', 'append text') + item = 12 + item = item .. 34 + assertEquals(item, '1234', 'append number') + item = 'Something ' + item = item .. (true and 'Positive' or nil) + assertEquals(item, 'Something Positive', 'append order') +end + + +function firstIndexOf(str, substr) + local i = string.find(str, substr, 1, true) + if i == nil then + return 0 + end + return i +end + +function lastIndexOf(str, substr) + local i = string.find(string.reverse(str), string.reverse(substr), 1, true) + if i then + return #str + 2 - i - #substr + end + return 0 +end + +-- Tests the "find" block with a variable. +function test_find_text_simple() + text = 'Banana' + assertEquals(firstIndexOf(text, 'an'), 2, 'find first simple') + assertEquals(lastIndexOf(text, 'an'), 4, 'find last simple') + assertEquals(firstIndexOf(text, 'Peel'), 0, 'find none simple') +end + + +-- Creates a string for use with the find test. +function get_fruit() + number_of_calls = number_of_calls + 1 + return 'Banana' +end + + +-- Tests the "find" block with a function call. +function test_find_text_complex() + number_of_calls = 0 + assertEquals(firstIndexOf(get_fruit(), 'an'), 2, 'find first complex') + check_number_of_calls('find first complex') + number_of_calls = 0 + assertEquals(firstIndexOf(true and get_fruit() or nil, 'an'), 2, 'find first order complex') + check_number_of_calls('find first order complex') + number_of_calls = 0 + assertEquals(lastIndexOf(get_fruit(), 'an'), 4, 'find last complex') + check_number_of_calls('find last complex') + number_of_calls = 0 + assertEquals(lastIndexOf(true and get_fruit() or nil, 'an'), 4, 'find last order complex') + check_number_of_calls('find last order complex') + number_of_calls = 0 + assertEquals(firstIndexOf(get_fruit(), 'Peel'), 0, 'find none complex') + check_number_of_calls('find none complex') + number_of_calls = 0 + assertEquals(firstIndexOf(true and get_fruit() or nil, 'Peel'), 0, 'find none order complex') + check_number_of_calls('find none order complex') +end + + +function text_random_letter(str) + local index = math.random(string.len(str)) + return string.sub(str, index, index) +end + +function text_char_at(str, index) + return string.sub(str, index, index) +end + +-- Tests the "get letter" block with a variable. +function test_get_text_simple() + text = 'Blockly' + assertEquals(string.sub(text, 1, 1), 'B', 'get first simple') + assertEquals(string.sub(text, -1, -1), 'y', 'get last simple') + assertEquals(firstIndexOf(text, text_random_letter(text)) > 0, true, 'get random simple') + assertEquals(string.sub(text, 3, 3), 'o', 'get # simple') + assertEquals(text_char_at(text, true and 3 or nil), 'o', 'get # order simple') + assertEquals(string.sub(text, -3, -3), 'k', 'get #-end simple') + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(text_char_at(text, -(0 + 3)), 'k', 'get #-end order simple') +end + + +-- Creates a string for use with the get test. +function get_Blockly() + number_of_calls = number_of_calls + 1 + return 'Blockly' +end + + +-- Tests the "get letter" block with a function call. +function test_get_text_complex() + text = 'Blockly' + number_of_calls = 0 + assertEquals(string.sub(get_Blockly(), 1, 1), 'B', 'get first complex') + check_number_of_calls('get first complex') + number_of_calls = 0 + assertEquals(string.sub(true and get_Blockly() or nil, 1, 1), 'B', 'get first order complex') + check_number_of_calls('get first order complex') + number_of_calls = 0 + assertEquals(string.sub(get_Blockly(), -1, -1), 'y', 'get last complex') + check_number_of_calls('get last complex') + number_of_calls = 0 + assertEquals(string.sub(true and get_Blockly() or nil, -1, -1), 'y', 'get last order complex') + check_number_of_calls('get last order complex') + number_of_calls = 0 + assertEquals(firstIndexOf(text, text_random_letter(get_Blockly())) > 0, true, 'get random complex') + check_number_of_calls('get random complex') + number_of_calls = 0 + assertEquals(firstIndexOf(text, text_random_letter(true and get_Blockly() or nil)) > 0, true, 'get random order complex') + check_number_of_calls('get random order complex') + number_of_calls = 0 + assertEquals(string.sub(get_Blockly(), 3, 3), 'o', 'get # complex') + check_number_of_calls('get # complex') + number_of_calls = 0 + assertEquals(text_char_at(true and get_Blockly() or nil, true and 3 or nil), 'o', 'get # order complex') + check_number_of_calls('get # order complex') + number_of_calls = 0 + assertEquals(string.sub(get_Blockly(), -3, -3), 'k', 'get #-end complex') + check_number_of_calls('get #-end complex') + number_of_calls = 0 + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(text_char_at(true and get_Blockly() or nil, -(0 + 3)), 'k', 'get #-end order complex') + check_number_of_calls('get #-end order complex') +end + + +-- Creates a string for use with the substring test. +function get_numbers() + number_of_calls = number_of_calls + 1 + return '123456789' +end + + +-- Tests the "get substring" block with a variable. +function test_substring_simple() + text = '123456789' + assertEquals(string.sub(text, 2, 3), '23', 'substring # simple') + assertEquals(string.sub(text, true and 2 or nil, true and 3 or nil), '23', 'substring # simple order') + assertEquals(string.sub(text, -3, -2), '78', 'substring #-end simple') + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(string.sub(text, -(0 + 3), -(0 + 2)), '78', 'substring #-end simple order') + assertEquals(string.sub(text, 1, -1), text, 'substring first-last simple') + assertEquals(string.sub(text, 2, -2), '2345678', 'substring # #-end simple') + assertEquals(string.sub(text, -7, 4), '34', 'substring #-end # simple') + assertEquals(string.sub(text, 1, 4), '1234', 'substring first # simple') + assertEquals(string.sub(text, 1, -2), '12345678', 'substring first #-end simple') + assertEquals(string.sub(text, 7, -1), '789', 'substring # last simple') + assertEquals(string.sub(text, -3, -1), '789', 'substring #-end last simple') + assertEquals(string.sub(text, 1, -1), '123456789', 'substring all with # #-end simple') + assertEquals(string.sub(text, -9, 9), '123456789', 'substring all with #-end # simple') + -- Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + assertEquals(string.sub(text, 0 + 1, -(0 + 1)), '123456789', 'substring all with # #-end math simple') +end + + +-- Tests the "get substring" block with a function call. +function test_substring_complex() + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), 2, 3), '23', 'substring # complex') + check_number_of_calls('substring # complex') + number_of_calls = 0 + assertEquals(string.sub(true and get_numbers() or nil, true and 2 or nil, true and 3 or nil), '23', 'substring # complex order') + check_number_of_calls('substring # complex order') + number_of_calls = 0 + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(string.sub(get_numbers(), -3, -2), '78', 'substring #-end complex') + check_number_of_calls('substring #-end complex') + number_of_calls = 0 + assertEquals(string.sub(true and get_numbers() or nil, -(0 + 3), -(0 + 2)), '78', 'substring #-end order order') + check_number_of_calls('substring #-end order order') + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), 1, -1), text, 'substring first-last') + check_number_of_calls('substring first-last') + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), 2, -2), '2345678', 'substring # #-end complex') + check_number_of_calls('substring # #-end complex') + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), -7, 4), '34', 'substring #-end # complex') + check_number_of_calls('substring #-end # complex') + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), 1, 4), '1234', 'substring first # complex') + check_number_of_calls('substring first # complex') + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), 1, -2), '12345678', 'substring first #-end complex') + check_number_of_calls('substring first #-end complex') + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), 7, -1), '789', 'substring # last complex') + check_number_of_calls('substring # last complex') + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), -3, -1), '789', 'substring #-end last complex') + check_number_of_calls('substring #-end last complex') + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), 1, -1), '123456789', 'substring all with # #-end complex') + check_number_of_calls('substring all with # #-end complex') + number_of_calls = 0 + assertEquals(string.sub(get_numbers(), -9, 9), '123456789', 'substring all with #-end # complex') + check_number_of_calls('substring all with #-end # complex') + number_of_calls = 0 + -- Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + assertEquals(string.sub(get_numbers(), 0 + 1, -(0 + 1)), '123456789', 'substring all with # #-end math complex') + check_number_of_calls('substring all with # #-end math complex') +end + + +function text_titlecase(str) + local buf = {} + local inWord = false + for i = 1, #str do + local c = string.sub(str, i, i) + if inWord then + table.insert(buf, string.lower(c)) + if string.find(c, "%s") then + inWord = false + end + else + table.insert(buf, string.upper(c)) + inWord = true + end + end + return table.concat(buf) +end + +-- Tests the "change casing" block. +function test_case() + text = 'Hello World' + assertEquals(string.upper(text), 'HELLO WORLD', 'uppercase') + assertEquals(string.upper(true and text or nil), 'HELLO WORLD', 'uppercase order') + text = 'Hello World' + assertEquals(string.lower(text), 'hello world', 'lowercase') + assertEquals(string.lower(true and text or nil), 'hello world', 'lowercase order') + text = 'heLLo WorlD' + assertEquals(text_titlecase(text), 'Hello World', 'titlecase') + assertEquals(text_titlecase(true and text or nil), 'Hello World', 'titlecase order') +end + + +-- Tests the "trim" block. +function test_trim() + text = ' abc def ' + assertEquals(string.gsub(text, "^%s*(.-)%s*$", "%1"), 'abc def', 'trim both') + assertEquals(string.gsub(true and text or nil, "^%s*(.-)%s*$", "%1"), 'abc def', 'trim both order') + assertEquals(string.gsub(text, "^%s*(,-)", "%1"), 'abc def ', 'trim left') + assertEquals(string.gsub(true and text or nil, "^%s*(,-)", "%1"), 'abc def ', 'trim left order') + assertEquals(string.gsub(text, "(.-)%s*$", "%1"), ' abc def', 'trim right') + assertEquals(string.gsub(true and text or nil, "(.-)%s*$", "%1"), ' abc def', 'trim right order') +end + + +function text_count(haystack, needle) + if #needle == 0 then + return #haystack + 1 + end + local i = 1 + local count = 0 + while true do + i = string.find(haystack, needle, i, true) + if i == nil then + break + end + count = count + 1 + i = i + #needle + end + return count +end + +-- Tests the "trim" block. +function test_count_text() + text = 'woolloomooloo' + assertEquals(text_count(text, 'o'), 8, 'len 1') + assertEquals(text_count(text, 'oo'), 4, 'len 2') + assertEquals(text_count(text, 'loo'), 2, 'len 3') + assertEquals(text_count(text, 'wool'), 1, 'start') + assertEquals(text_count(text, 'chicken'), 0, 'missing') + assertEquals(text_count(text, ''), 14, 'empty needle') + assertEquals(text_count('', 'chicken'), 0, 'empty source') +end + + +-- Tests the "trim" block. +function test_text_reverse() + assertEquals(string.reverse(''), '', 'empty string') + assertEquals(string.reverse('a'), 'a', 'len 1') + assertEquals(string.reverse('ab'), 'ba', 'len 2') + assertEquals(string.reverse('woolloomooloo'), 'ooloomoolloow', 'longer') +end + + +function text_replace(haystack, needle, replacement) + local buf = {} + local i = 1 + while i <= #haystack do + if string.sub(haystack, i, i + #needle - 1) == needle then + for j = 1, #replacement do + table.insert(buf, string.sub(replacement, j, j)) + end + i = i + #needle + else + table.insert(buf, string.sub(haystack, i, i)) + i = i + 1 + end + end + return table.concat(buf) +end + +-- Tests the "trim" block. +function test_replace() + assertEquals(text_replace('woolloomooloo', 'oo', '123'), 'w123ll123m123l123', 'replace all instances 1') + assertEquals(text_replace('woolloomooloo', '.oo', 'X'), 'woolloomooloo', 'literal string replacement') + assertEquals(text_replace('woolloomooloo', 'abc', 'X'), 'woolloomooloo', 'not found') + assertEquals(text_replace('woolloomooloo', 'o', ''), 'wllml', 'empty replacement 1') + assertEquals(text_replace('aaaaa', 'aaaaa', ''), '', 'empty replacement 2') + assertEquals(text_replace('aaaaa', 'a', ''), '', 'empty replacement 3') + assertEquals(text_replace('', 'a', 'chicken'), '', 'empty source') +end + + +-- Tests the "multiline" block. +function test_multiline() + assertEquals('', '', 'no text') + assertEquals('Google', 'Google', 'simple') + assertEquals('paragraph' .. '\n' .. + 'with newlines' .. '\n' .. + 'yup', 'paragraph' .. '\n' .. + 'with newlines' .. '\n' .. + 'yup', 'no compile error with newlines') + assertEquals(text_count('bark bark' .. '\n' .. + 'bark bark bark' .. '\n' .. + 'bark bark bark bark', 'bark'), 9, 'count with newlines') +end + + +-- Checks that the number of calls is one in order +-- to confirm that a function was only called once. +function check_number_of_calls2(test_name) + test_name = test_name .. 'number of calls' + assertEquals(number_of_calls, 1, test_name) +end + + +function create_list_repeated(item, count) + local t = {} + for i = 1, count do + table.insert(t, item) + end + return t +end + +-- Tests the "create list with" and "create empty list" blocks. +function test_create_lists() + assertEquals({}, {}, 'create empty') + assertEquals({true, 'love'}, {true, 'love'}, 'create items') + assertEquals(create_list_repeated('Eject', 3), {'Eject', 'Eject', 'Eject'}, 'create repeated') + assertEquals(create_list_repeated('Eject', 0 + 3), {'Eject', 'Eject', 'Eject'}, 'create repeated order') +end + + +-- Creates an empty list for use with the empty test. +function get_empty_list() + return {} +end + + +-- Tests the "is empty" block. +function test_lists_empty() + assertEquals(#{0} == 0, false, 'not empty') + assertEquals(#{} == 0, true, 'empty') + assertEquals(#get_empty_list() == 0, true, 'empty complex') + assertEquals(#(true and {} or nil) == 0, true, 'empty order') +end + + +-- Tests the "length" block. +function test_lists_length() + assertEquals(#{}, 0, 'zero length') + assertEquals(#{'cat'}, 1, 'one length') + assertEquals(#{'cat', true, {}}, 3, 'three length') + assertEquals(#(true and {'cat', true} or nil), 2, 'two length order') +end + + +function last_index(t, elem) + for i = #t, 1, -1 do + if t[i] == elem then + return i + end + end + return 0 +end + +-- Tests the "find" block with a variable. +function test_find_lists_simple() + list = {'Alice', 'Eve', 'Bob', 'Eve'} + assertEquals(first_index(list, 'Eve'), 2, 'find first simple') + assertEquals(last_index(list, 'Eve'), 4, 'find last simple') + assertEquals(first_index(list, 'Dave'), 0, 'find none simple') +end + + +-- Creates a list for use with the find test. +function get_names() + number_of_calls = number_of_calls + 1 + return {'Alice', 'Eve', 'Bob', 'Eve'} +end + + +-- Tests the "find" block with a function call. +function test_find_lists_complex() + number_of_calls = 0 + assertEquals(first_index(get_names(), 'Eve'), 2, 'find first complex') + check_number_of_calls('find first complex') + number_of_calls = 0 + assertEquals(first_index(true and get_names() or nil, 'Eve'), 2, 'find first order complex') + check_number_of_calls('find first order complex') + number_of_calls = 0 + assertEquals(last_index(get_names(), 'Eve'), 4, 'find last complex') + check_number_of_calls('find last complex') + number_of_calls = 0 + assertEquals(last_index(true and get_names() or nil, 'Eve'), 4, 'find last order complex') + check_number_of_calls('find last order complex') + number_of_calls = 0 + assertEquals(first_index(get_names(), 'Dave'), 0, 'find none complex') + check_number_of_calls('find none complex') + number_of_calls = 0 + assertEquals(first_index(true and get_names() or nil, 'Dave'), 0, 'find none order complex') + check_number_of_calls('find none order complex') +end + + +-- Tests the "get" block with a variable. +function test_get_lists_simple() + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(list[1], 'Kirk', 'get first simple') + assertEquals(list[#list], 'McCoy', 'get last simple') + assertEquals(first_index(list, list[math.random(#list)]) > 0, true, 'get random simple') + assertEquals(list[2], 'Spock', 'get # simple') + assertEquals(list[true and 2 or nil], 'Spock', 'get # order simple') + assertEquals(list[#list + 1 - 3], 'Kirk', 'get #-end simple') + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list[#list + 1 - (0 + 3)], 'Kirk', 'get #-end order simple') +end + + +function list_get_last(t) + return t[#t] +end + +function list_get_random(t) + return t[math.random(#t)] +end + +function list_get_from_end(t, at) + return t[#t + 1 - at] +end + +-- Tests the "get" block with create list call. +function test_get_lists_create_list() + assertEquals(({'Kirk', 'Spock', 'McCoy'})[1], 'Kirk', 'get first create list') + assertEquals(list_get_last(({'Kirk', 'Spock', 'McCoy'})), 'McCoy', 'get last simple') + assertEquals(first_index({'Kirk', 'Spock', 'McCoy'}, list_get_random(({'Kirk', 'Spock', 'McCoy'}))) > 0, true, 'get random simple') + assertEquals(({'Kirk', 'Spock', 'McCoy'})[2], 'Spock', 'get # simple') + assertEquals(({'Kirk', 'Spock', 'McCoy'})[true and 2 or nil], 'Spock', 'get # order simple') + assertEquals(list_get_from_end(({'Kirk', 'Spock', 'McCoy'}), 3), 'Kirk', 'get #-end simple') + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list_get_from_end(({'Kirk', 'Spock', 'McCoy'}), 0 + 3), 'Kirk', 'get #-end order simple') +end + + +-- Creates a list for use with the get test. +function get_star_wars() + number_of_calls = number_of_calls + 1 + return {'Kirk', 'Spock', 'McCoy'} +end + + +-- Tests the "get" block with a function call. +function test_get_lists_complex() + list = {'Kirk', 'Spock', 'McCoy'} + number_of_calls = 0 + assertEquals((get_star_wars())[1], 'Kirk', 'get first complex') + check_number_of_calls('get first complex') + number_of_calls = 0 + assertEquals((true and get_star_wars() or nil)[1], 'Kirk', 'get first order complex') + check_number_of_calls('get first order complex') + number_of_calls = 0 + assertEquals(list_get_last((get_star_wars())), 'McCoy', 'get last complex') + check_number_of_calls('get last complex') + number_of_calls = 0 + assertEquals(list_get_last((true and get_star_wars() or nil)), 'McCoy', 'get last order complex') + check_number_of_calls('get last order complex') + number_of_calls = 0 + assertEquals(first_index(list, list_get_random((get_star_wars()))) > 0, true, 'get random complex') + check_number_of_calls('get random complex') + number_of_calls = 0 + assertEquals(first_index(list, list_get_random((true and get_star_wars() or nil))) > 0, true, 'get random order complex') + check_number_of_calls('get random order complex') + number_of_calls = 0 + assertEquals((get_star_wars())[2], 'Spock', 'get # complex') + check_number_of_calls('get # complex') + number_of_calls = 0 + assertEquals((true and get_star_wars() or nil)[true and 2 or nil], 'Spock', 'get # order complex') + check_number_of_calls('get # order complex') + number_of_calls = 0 + assertEquals(list_get_from_end((get_star_wars()), 3), 'Kirk', 'get #-end complex') + check_number_of_calls('get #-end complex') + number_of_calls = 0 + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list_get_from_end((true and get_star_wars() or nil), 0 + 3), 'Kirk', 'get #-end order complex') + check_number_of_calls('get #-end order complex') +end + + +function list_remove_last(t) + return table.remove(t, #t) +end + +function list_remove_random(t) + return table.remove(t, math.random(#t)) +end + +function list_remove_from_end(t, at) + return table.remove(t, #t + 1 - at) +end + +-- Tests the "get and remove" block. +function test_getRemove() + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(table.remove(list, 1), 'Kirk', 'getremove first') + assertEquals(list, {'Spock', 'McCoy'}, 'getremove first list') + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(table.remove((true and list or nil), 1), 'Kirk', 'getremove first order') + assertEquals(list, {'Spock', 'McCoy'}, 'getremove first order list') + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(table.remove(list, #list), 'McCoy', 'getremove last') + assertEquals(list, {'Kirk', 'Spock'}, 'getremove last list') + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(list_remove_last((true and list or nil)), 'McCoy', 'getremove last order') + assertEquals(list, {'Kirk', 'Spock'}, 'getremove last order list') + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(first_index(list, table.remove(list, math.random(#list))) == 0, true, 'getremove random') + assertEquals(#list, 2, 'getremove random list') + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(first_index(list, list_remove_random((true and list or nil))) == 0, true, 'getremove random order') + assertEquals(#list, 2, 'getremove random order list') + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(table.remove(list, 2), 'Spock', 'getremove #') + assertEquals(list, {'Kirk', 'McCoy'}, 'getremove # list') + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(table.remove((true and list or nil), true and 2 or nil), 'Spock', 'getremove # order') + assertEquals(list, {'Kirk', 'McCoy'}, 'getremove # order list') + list = {'Kirk', 'Spock', 'McCoy'} + assertEquals(table.remove(list, #list + 1 - 3), 'Kirk', 'getremove #-end') + assertEquals(list, {'Spock', 'McCoy'}, 'getremove #-end list') + list = {'Kirk', 'Spock', 'McCoy'} + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list_remove_from_end((true and list or nil), 0 + 3), 'Kirk', 'getremove #-end order') + assertEquals(list, {'Spock', 'McCoy'}, 'getremove #-end order list') +end + + +-- Tests the "remove" block. +function test_remove() + list = {'Kirk', 'Spock', 'McCoy'} + table.remove(list, 1) + assertEquals(list, {'Spock', 'McCoy'}, 'remove first list') + list = {'Kirk', 'Spock', 'McCoy'} + table.remove((true and list or nil), 1) + assertEquals(list, {'Spock', 'McCoy'}, 'remove first order list') + list = {'Kirk', 'Spock', 'McCoy'} + table.remove(list, #list) + assertEquals(list, {'Kirk', 'Spock'}, 'remove last list') + list = {'Kirk', 'Spock', 'McCoy'} + tmp_list = (true and list or nil) + table.remove(tmp_list, #tmp_list) + assertEquals(list, {'Kirk', 'Spock'}, 'remove last order list') + list = {'Kirk', 'Spock', 'McCoy'} + table.remove(list, math.random(#list)) + assertEquals(#list, 2, 'remove random list') + list = {'Kirk', 'Spock', 'McCoy'} + tmp_list2 = (true and list or nil) + table.remove(tmp_list2, math.random(#tmp_list2)) + assertEquals(#list, 2, 'remove random order list') + list = {'Kirk', 'Spock', 'McCoy'} + table.remove(list, 2) + assertEquals(list, {'Kirk', 'McCoy'}, 'remove # list') + list = {'Kirk', 'Spock', 'McCoy'} + table.remove((true and list or nil), true and 2 or nil) + assertEquals(list, {'Kirk', 'McCoy'}, 'remove # order list') + list = {'Kirk', 'Spock', 'McCoy'} + table.remove(list, #list + 1 - 3) + assertEquals(list, {'Spock', 'McCoy'}, 'remove #-end list') + list = {'Kirk', 'Spock', 'McCoy'} + -- The order for index for #-end is addition because this will catch + -- errors in generators where most perform the operation ... - index. + tmp_list3 = (true and list or nil) + table.remove(tmp_list3, #tmp_list3 + 1 - (0 + 3)) + assertEquals(list, {'Spock', 'McCoy'}, 'remove #-end order list') +end + + +-- Tests the "set" block. +function test_set() + list = {'Picard', 'Riker', 'Crusher'} + list[1] = 'Jean-Luc' + assertEquals(list, {'Jean-Luc', 'Riker', 'Crusher'}, 'set first list') + list = {'Picard', 'Riker', 'Crusher'} + (true and list or nil)[1] = 'Jean-Luc' + assertEquals(list, {'Jean-Luc', 'Riker', 'Crusher'}, 'set first order list') + list = {'Picard', 'Riker', 'Crusher'} + list[#list] = 'Beverly' + assertEquals(list, {'Picard', 'Riker', 'Beverly'}, 'set last list') + list = {'Picard', 'Riker', 'Crusher'} + tmp_list4 = (true and list or nil) + tmp_list4[#tmp_list4] = 'Beverly' + assertEquals(list, {'Picard', 'Riker', 'Beverly'}, 'set last order list') + list = {'Picard', 'Riker', 'Crusher'} + list[math.random(#list)] = 'Data' + assertEquals(#list, 3, 'set random list') + list = {'Picard', 'Riker', 'Crusher'} + tmp_list5 = (true and list or nil) + tmp_list5[math.random(#tmp_list5)] = 'Data' + assertEquals(#list, 3, 'set random order list') + list = {'Picard', 'Riker', 'Crusher'} + list[3] = 'Pulaski' + assertEquals(list, {'Picard', 'Riker', 'Pulaski'}, 'set # list') + list = {'Picard', 'Riker', 'Crusher'} + (true and list or nil)[(true and 3 or nil)] = 'Pulaski' + assertEquals(list, {'Picard', 'Riker', 'Pulaski'}, 'set # order list') + list = {'Picard', 'Riker', 'Crusher'} + list[#list + 1 - 1] = 'Pulaski' + assertEquals(list, {'Picard', 'Riker', 'Pulaski'}, 'set #-end list') + list = {'Picard', 'Riker', 'Crusher'} + -- The order for index for #-end is addition because this will catch + -- errors in generators where most perform the operation ... - index. + tmp_list6 = (true and list or nil) + tmp_list6[#tmp_list6 + 1 - (0 + 2)] = 'Pulaski' + assertEquals(list, {'Picard', 'Pulaski', 'Crusher'}, 'set #-end order list') +end + + +-- Tests the "insert" block. +function test_insert() + list = {'Picard', 'Riker', 'Crusher'} + table.insert(list, 1, 'Data') + assertEquals(list, {'Data', 'Picard', 'Riker', 'Crusher'}, 'insert first list') + list = {'Picard', 'Riker', 'Crusher'} + table.insert((true and list or nil), 1, 'Data') + assertEquals(list, {'Data', 'Picard', 'Riker', 'Crusher'}, 'insert first order list') + list = {'Picard', 'Riker', 'Crusher'} + table.insert(list, #list + 1, 'Data') + assertEquals(list, {'Picard', 'Riker', 'Crusher', 'Data'}, 'insert last list') + list = {'Picard', 'Riker', 'Crusher'} + tmp_list7 = (true and list or nil) + table.insert(tmp_list7, #tmp_list7 + 1, 'Data') + assertEquals(list, {'Picard', 'Riker', 'Crusher', 'Data'}, 'insert last order list') + list = {'Picard', 'Riker', 'Crusher'} + table.insert(list, math.random(#list), 'Data') + assertEquals(#list, 4, 'insert random list') + list = {'Picard', 'Riker', 'Crusher'} + tmp_list8 = (true and list or nil) + table.insert(tmp_list8, math.random(#tmp_list8), 'Data') + assertEquals(#list, 4, 'insert random order list') + list = {'Picard', 'Riker', 'Crusher'} + table.insert(list, 3, 'Data') + assertEquals(list, {'Picard', 'Riker', 'Data', 'Crusher'}, 'insert # list') + list = {'Picard', 'Riker', 'Crusher'} + table.insert((true and list or nil), (true and 3 or nil), 'Data') + assertEquals(list, {'Picard', 'Riker', 'Data', 'Crusher'}, 'insert # order list') + list = {'Picard', 'Riker', 'Crusher'} + table.insert(list, #list + 1 - 1, 'Data') + assertEquals(list, {'Picard', 'Riker', 'Data', 'Crusher'}, 'insert #-end list') + list = {'Picard', 'Riker', 'Crusher'} + -- The order for index for #-end is addition because this will catch + -- errors in generators where most perform the operation ... - index. + tmp_list9 = (true and list or nil) + table.insert(tmp_list9, #tmp_list9 + 1 - (0 + 2), 'Data') + assertEquals(list, {'Picard', 'Data', 'Riker', 'Crusher'}, 'insert #-end order list') +end + + +function list_sublist_from_start_from_start(source, at1, at2) + local t = {} + local start = at1 + local finish = at2 + for i = start, finish do + table.insert(t, source[i]) + end + return t +end + +function list_sublist_from_end_from_end(source, at1, at2) + local t = {} + local start = #source + 1 - at1 + local finish = #source + 1 - at2 + for i = start, finish do + table.insert(t, source[i]) + end + return t +end + +function list_sublist_first_last(source) + local t = {} + local start = 1 + local finish = #source + for i = start, finish do + table.insert(t, source[i]) + end + return t +end + +function list_sublist_from_start_from_end(source, at1, at2) + local t = {} + local start = at1 + local finish = #source + 1 - at2 + for i = start, finish do + table.insert(t, source[i]) + end + return t +end + +function list_sublist_from_end_from_start(source, at1, at2) + local t = {} + local start = #source + 1 - at1 + local finish = at2 + for i = start, finish do + table.insert(t, source[i]) + end + return t +end + +function list_sublist_first_from_start(source, at2) + local t = {} + local start = 1 + local finish = at2 + for i = start, finish do + table.insert(t, source[i]) + end + return t +end + +function list_sublist_first_from_end(source, at2) + local t = {} + local start = 1 + local finish = #source + 1 - at2 + for i = start, finish do + table.insert(t, source[i]) + end + return t +end + +function list_sublist_from_start_last(source, at1) + local t = {} + local start = at1 + local finish = #source + for i = start, finish do + table.insert(t, source[i]) + end + return t +end + +function list_sublist_from_end_last(source, at1) + local t = {} + local start = #source + 1 - at1 + local finish = #source + for i = start, finish do + table.insert(t, source[i]) + end + return t +end + +-- Tests the "get sub-list" block with a variable. +function test_sublist_simple() + list = {'Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'} + assertEquals(list_sublist_from_start_from_start(list, 2, 3), {'Challenger', 'Discovery'}, 'sublist # simple') + assertEquals(list_sublist_from_start_from_start(list, true and 2 or nil, true and 3 or nil), {'Challenger', 'Discovery'}, 'sublist # simple order') + assertEquals(list_sublist_from_end_from_end(list, 3, 2), {'Discovery', 'Atlantis'}, 'sublist #-end simple') + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list_sublist_from_end_from_end(list, 0 + 3, 0 + 2), {'Discovery', 'Atlantis'}, 'sublist #-end simple order') + assertEquals(list_sublist_first_last(list), list, 'sublist first-last simple') + changing_list = {'Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'} + list_copy = list_sublist_first_last(changing_list) + table.remove(changing_list, math.random(#changing_list)) + assertEquals(list_copy, list, 'sublist first-last simple copy check') + assertEquals(list_sublist_from_start_from_end(list, 2, 2), {'Challenger', 'Discovery', 'Atlantis'}, 'sublist # #-end simple') + assertEquals(list_sublist_from_end_from_start(list, 3, 4), {'Discovery', 'Atlantis'}, 'sublist #-end # simple') + assertEquals(list_sublist_first_from_start(list, 4), {'Columbia', 'Challenger', 'Discovery', 'Atlantis'}, 'sublist first # simple') + assertEquals(list_sublist_first_from_end(list, 4), {'Columbia', 'Challenger'}, 'sublist first #-end simple') + assertEquals(list_sublist_from_start_last(list, 4), {'Atlantis', 'Endeavour'}, 'sublist # last simple') + assertEquals(list_sublist_from_end_last(list, 4), {'Challenger', 'Discovery', 'Atlantis', 'Endeavour'}, 'sublist #-end last simple') + assertEquals(list_sublist_from_start_from_end(list, 1, 1), list, 'sublist all with # #-end simple') + assertEquals(list_sublist_from_end_from_start(list, 5, 5), list, 'sublist all with #-end # simple') + -- Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + assertEquals(list_sublist_from_start_from_end(list, 0 + 1, 0 + 1), list, 'sublist all with # #-end math simple') +end + + +-- Creates a list for use with the sublist test. +function get_space_shuttles() + number_of_calls = number_of_calls + 1 + return {'Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'} +end + + +-- Tests the "get sub-list" block with a function call. +function test_sublist_complex() + number_of_calls = 0 + assertEquals(list_sublist_from_start_from_start(get_space_shuttles(), 2, 3), {'Challenger', 'Discovery'}, 'sublist # start complex') + check_number_of_calls('sublist # start complex') + number_of_calls = 0 + assertEquals(list_sublist_from_start_from_start(true and get_space_shuttles() or nil, true and 2 or nil, true and 3 or nil), {'Challenger', 'Discovery'}, 'sublist # start order complex') + check_number_of_calls('sublist # start order complex') + number_of_calls = 0 + -- The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list_sublist_from_end_from_end(get_space_shuttles(), 3, 2), {'Discovery', 'Atlantis'}, 'sublist # end complex') + assertEquals(number_of_calls, 1, 'sublist # end complex number of calls') + number_of_calls = 0 + assertEquals(list_sublist_from_end_from_end(true and get_space_shuttles() or nil, 0 + 3, 0 + 2), {'Discovery', 'Atlantis'}, 'sublist # end order complex') + check_number_of_calls('sublist # end order complex') + number_of_calls = 0 + assertEquals(list_sublist_first_last(get_space_shuttles()), list, 'sublist first-last complex') + check_number_of_calls('sublist first-last complex') + number_of_calls = 0 + assertEquals(list_sublist_from_start_from_end(get_space_shuttles(), 2, 2), {'Challenger', 'Discovery', 'Atlantis'}, 'sublist # #-end complex') + check_number_of_calls('sublist # #-end complex') + number_of_calls = 0 + assertEquals(list_sublist_from_end_from_start(get_space_shuttles(), 3, 4), {'Discovery', 'Atlantis'}, 'sublist #-end # complex') + check_number_of_calls('sublist #-end # complex') + number_of_calls = 0 + assertEquals(list_sublist_first_from_start(get_space_shuttles(), 4), {'Columbia', 'Challenger', 'Discovery', 'Atlantis'}, 'sublist first # complex') + check_number_of_calls('sublist first # complex') + number_of_calls = 0 + assertEquals(list_sublist_first_from_end(get_space_shuttles(), 4), {'Columbia', 'Challenger'}, 'sublist first #-end complex') + check_number_of_calls('sublist first #-end complex') + number_of_calls = 0 + assertEquals(list_sublist_from_start_last(get_space_shuttles(), 4), {'Atlantis', 'Endeavour'}, 'sublist # last complex') + check_number_of_calls('sublist # last complex') + number_of_calls = 0 + assertEquals(list_sublist_from_end_last(get_space_shuttles(), 4), {'Challenger', 'Discovery', 'Atlantis', 'Endeavour'}, 'sublist #-end last simple') + check_number_of_calls('sublist #-end last simple') + number_of_calls = 0 + assertEquals(list_sublist_from_start_from_end(get_space_shuttles(), 1, 1), list, 'sublist all with # #-end complex') + check_number_of_calls('sublist all with # #-end complex') + number_of_calls = 0 + assertEquals(list_sublist_from_end_from_start(get_space_shuttles(), 5, 5), list, 'sublist all with #-end # complex') + check_number_of_calls('sublist all with #-end # complex') + number_of_calls = 0 + -- Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + assertEquals(list_sublist_from_start_from_end(get_space_shuttles(), 0 + 1, 0 + 1), list, 'sublist all with # #-end math complex') + check_number_of_calls('sublist all with # #-end math complex') +end + + +-- Tests the "join" block. +function test_join() + list = {'Vulcan', 'Klingon', 'Borg'} + assertEquals(table.concat(list, ','), 'Vulcan,Klingon,Borg', 'join') + assertEquals(table.concat(true and list or nil, ','), 'Vulcan,Klingon,Borg', 'join order') +end + + +function list_string_split(input, delim) + local t = {} + local pos = 1 + while true do + next_delim = string.find(input, delim, pos) + if next_delim == nil then + table.insert(t, string.sub(input, pos)) + break + else + table.insert(t, string.sub(input, pos, next_delim-1)) + pos = next_delim + #delim + end + end + return t +end + +-- Tests the "split" block. +function test_split() + text = 'Vulcan,Klingon,Borg' + assertEquals(list_string_split(text, ','), {'Vulcan', 'Klingon', 'Borg'}, 'split') + assertEquals(list_string_split(true and text or nil, ','), {'Vulcan', 'Klingon', 'Borg'}, 'split order') +end + + +function list_sort(list, typev, direction) + local t = {} + for n,v in pairs(list) do table.insert(t, v) end + local compareFuncs = { + NUMERIC = function(a, b) + return (tonumber(tostring(a)) or 0) + < (tonumber(tostring(b)) or 0) end, + TEXT = function(a, b) + return tostring(a) < tostring(b) end, + IGNORE_CASE = function(a, b) + return string.lower(tostring(a)) < string.lower(tostring(b)) end + } + local compareTemp = compareFuncs[typev] + local compare = compareTemp + if direction == -1 + then compare = function(a, b) return compareTemp(b, a) end + end + table.sort(t, compare) + return t +end + +-- Tests the "alphabetic sort" block. +function test_sort_alphabetic() + list = {'Vulcan', 'klingon', 'Borg'} + assertEquals(list_sort(list,"TEXT", 1), {'Borg', 'Vulcan', 'klingon'}, 'sort alphabetic ascending') + assertEquals(list_sort(true and list or nil,"TEXT", 1), {'Borg', 'Vulcan', 'klingon'}, 'sort alphabetic ascending order') +end + + +-- Tests the "alphabetic sort ignore case" block. +function test_sort_ignoreCase() + list = {'Vulcan', 'klingon', 'Borg'} + assertEquals(list_sort(list,"IGNORE_CASE", 1), {'Borg', 'klingon', 'Vulcan'}, 'sort ignore case ascending') + assertEquals(list_sort(true and list or nil,"IGNORE_CASE", 1), {'Borg', 'klingon', 'Vulcan'}, 'sort ignore case ascending order') +end + + +-- Tests the "numeric sort" block. +function test_sort_numeric() + list = {8, 18, -1} + assertEquals(list_sort(list,"NUMERIC", -1), {18, 8, -1}, 'sort numeric descending') + assertEquals(list_sort(true and list or nil,"NUMERIC", -1), {18, 8, -1}, 'sort numeric descending order') +end + + +function list_reverse(input) + local reversed = {} + for i = #input, 1, -1 do + table.insert(reversed, input[i]) + end + return reversed +end + +-- Tests the "list reverse" block. +function test_lists_reverse() + list = {8, 18, -1, 64} + assertEquals(list_reverse(list), {64, -1, 18, 8}, 'reverse a copy') + assertEquals(list, {8, 18, -1, 64}, 'reverse a copy original') + list = {} + assertEquals(list_reverse(list), {}, 'empty list') +end + + +-- Describe this function... +function test_colour_picker() + assertEquals('#ff6600', '#ff6600', 'static colour') +end + + +function colour_rgb(r, g, b) + r = math.floor(math.min(100, math.max(0, r)) * 2.55 + .5) + g = math.floor(math.min(100, math.max(0, g)) * 2.55 + .5) + b = math.floor(math.min(100, math.max(0, b)) * 2.55 + .5) + return string.format("#%02x%02x%02x", r, g, b) +end + +-- Describe this function... +function test_rgb() + assertEquals(colour_rgb(100, 40, 0), '#ff6600', 'from rgb') +end + + +-- Describe this function... +function test_colour_random() + for count4 = 1, 100 do + item = string.format("#%06x", math.random(0, 2^24 - 1)) + assertEquals(#item, 7, 'length of random colour string: ' .. item) + assertEquals(string.sub(item, 1, 1), '#', 'format of random colour string: ' .. item) + for i = 1, 6, 1 do + assertEquals(0 ~= firstIndexOf('abcdefABDEF0123456789', text_char_at(item, i + 1)), true, table.concat({'contents of random colour string: ', item, ' at index: ', i + 1})) + end + end +end + + +function colour_blend(colour1, colour2, ratio) + local r1 = tonumber(string.sub(colour1, 2, 3), 16) + local r2 = tonumber(string.sub(colour2, 2, 3), 16) + local g1 = tonumber(string.sub(colour1, 4, 5), 16) + local g2 = tonumber(string.sub(colour2, 4, 5), 16) + local b1 = tonumber(string.sub(colour1, 6, 7), 16) + local b2 = tonumber(string.sub(colour2, 6, 7), 16) + local ratio = math.min(1, math.max(0, ratio)) + local r = math.floor(r1 * (1 - ratio) + r2 * ratio + .5) + local g = math.floor(g1 * (1 - ratio) + g2 * ratio + .5) + local b = math.floor(b1 * (1 - ratio) + b2 * ratio + .5) + return string.format("#%02x%02x%02x", r, g, b) +end + +-- Describe this function... +function test_blend() + assertEquals(colour_blend('#ff0000', colour_rgb(100, 40, 0), 0.4), '#ff2900', 'blend') +end + + +-- Describe this function... +function test_procedure() + procedure_1(8, 2) + assertEquals(proc_z, 4, 'procedure with global') + proc_w = false + procedure_2(false) + assertEquals(proc_w, true, 'procedure no return') + proc_w = false + procedure_2(true) + assertEquals(proc_w, false, 'procedure return') +end + + +-- Describe this function... +function procedure_1(proc_x, proc_y) + proc_z = proc_x / proc_y +end + + +-- Describe this function... +function procedure_2(proc_x) + if proc_x then + return + end + proc_w = true +end + + +-- Describe this function... +function test_function() + assertEquals(function_1(2, 3), -1, 'function with arguments') + assertEquals(func_z, 'side effect', 'function with side effect') + func_a = 'unchanged' + func_c = 'global' + assertEquals(function_2(2), '3global', 'function with global') + assertEquals(func_a, 'unchanged', 'function with scope') + assertEquals(function_3(true), true, 'function return') + assertEquals(function_3(false), false, 'function no return') +end + + +-- Describe this function... +function function_1(func_x, func_y) + func_z = 'side effect' + return func_x - func_y +end + + +-- Describe this function... +function function_2(func_a) + func_a = func_a + 1 + return func_a .. func_c +end + + +-- Describe this function... +function function_3(func_a) + if func_a then + return true + end + return false +end + + +-- Describe this function... +function recurse(n) + if n > 0 then + text = table.concat({recurse(n - 1), n, recurse(n - 1)}) + else + text = '-' + end + return text +end + + + +unittestResults = {} +print('\n====================\n\nRunning suite: Logic') +assertEquals(true, true, 'True') +assertEquals(false, false, 'False') +assertEquals(not false, true, 'Not true') +assertEquals(not true, false, 'Not false') +test_if() +test_ifelse() +test_equalities() +test_and() +test_or() +test_ternary() +print(unittest_report()) +unittestResults = nil + +unittestResults = {} +print('\n====================\n\nRunning suite: Loops 1') +test_repeat() +test_repeat_ext() +test_while() +test_foreach() +print(unittest_report()) +unittestResults = nil + +unittestResults = {} +print('\n====================\n\nRunning suite: Loops 2') +test_count_loops() +test_count_by() +print(unittest_report()) +unittestResults = nil + +unittestResults = {} +print('\n====================\n\nRunning suite: Loops 3') +test_break() +test_continue() +print(unittest_report()) +unittestResults = nil + +unittestResults = {} +print('\n====================\n\nRunning suite: Math') +test_arithmetic() +test_single() +test_trig() +test_constant() +test_change() +test_number_properties() +test_round() +test_operations_on_list() +test_constraint() +test_mod() +test_random_integer() +test_random_fraction() +test_atan2() +print(unittest_report()) +unittestResults = nil + +unittestResults = {} +print('\n====================\n\nRunning suite: Text') +test_text_length() +test_empty_text() +test_create_text() +test_append() +test_find_text_simple() +test_find_text_complex() +test_get_text_simple() +test_get_text_complex() +test_substring_simple() +test_substring_complex() +test_case() +test_trim() +test_count_text() +test_text_reverse() +test_replace() +test_multiline() +print(unittest_report()) +unittestResults = nil + +unittestResults = {} +print('\n====================\n\nRunning suite: Lists') +test_create_lists() +test_lists_empty() +test_lists_length() +test_find_lists_simple() +test_find_lists_complex() +test_get_lists_simple() +test_get_lists_create_list() +test_get_lists_complex() +test_getRemove() +test_remove() +test_set() +test_insert() +test_sublist_simple() +test_sublist_complex() +test_join() +test_split() +test_sort_alphabetic() +test_sort_ignoreCase() +test_sort_numeric() +test_lists_reverse() +print(unittest_report()) +unittestResults = nil + +unittestResults = {} +print('\n====================\n\nRunning suite: Colour') +test_colour_picker() +test_blend() +test_rgb() +test_colour_random() +print(unittest_report()) +unittestResults = nil + +unittestResults = {} +print('\n====================\n\nRunning suite: Variables') +item = 123 +assertEquals(item, 123, 'variable') +if2 = 123 +assertEquals(if2, 123, 'reserved variable') +print(unittest_report()) +unittestResults = nil + +local _ = -- Intentionally non-connected variable. +naked + +unittestResults = {} +print('\n====================\n\nRunning suite: Functions') +test_procedure() +test_function() +assertEquals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse') +print(unittest_report()) +unittestResults = nil diff --git a/tests/generators/golden/generated.php b/tests/generators/golden/generated.php index 4a16b6f5cc3..35da62798b6 100644 --- a/tests/generators/golden/generated.php +++ b/tests/generators/golden/generated.php @@ -1,1702 +1,1702 @@ -function unittest_report() { - global $unittestResults; - // Create test report. - $report = array(); - $summary = array(); - $fails = 0; - for ($x = 0; $x < count($unittestResults); $x++) { - if ($unittestResults[$x][0]) { - array_push($summary, "."); - } else { - array_push($summary, "F"); - $fails++; - array_push($report, ""); - array_push($report, "FAIL: " . $unittestResults[$x][2]); - array_push($report, $unittestResults[$x][1]); - } - } - array_unshift($report, implode("", $summary)); - array_push($report, ""); - array_push($report, "Number of tests run: " . count($unittestResults)); - array_push($report, ""); - if ($fails) { - array_push($report, "FAILED (failures=" . $fails . ")"); - } else { - array_push($report, "OK"); - } - return implode("\n", $report); -} - -function assertEquals($actual, $expected, $message) { - global $unittestResults; - // Asserts that a value equals another value. - if (!is_array($unittestResults)) { - throw new Exception("Orphaned assert: " . $message); - } - if ($actual == $expected) { - array_push($unittestResults, [true, "OK", $message]); - } else { - $expected = is_array($expected) ? implode(" ", $expected) : $expected; - $actual = is_array($actual) ? implode(" ", $actual) : $actual; - array_push($unittestResults, [false, "Expected: " . $expected . "\nActual: " . $actual, $message]); - } -} - -function unittest_fail($message) { - global $unittestResults; - // Always assert an error. - if (!$unittestResults) { - throw new Exception("Orphaned assert fail: " . $message); - } - array_push($unittestResults, [false, "Fail.", $message]); -} - -// Describe this function... -function test_if() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - if (false) { - unittest_fail('if false'); - } - $ok = false; - if (true) { - $ok = true; - } - assertEquals($ok, true, 'if true'); - $ok = false; - if (false) { - unittest_fail('if/else false'); - } else { - $ok = true; - } - assertEquals($ok, true, 'if/else false'); - $ok = false; - if (true) { - $ok = true; - } else { - unittest_fail('if/else true'); - } - assertEquals($ok, true, 'if/else true'); - $ok = false; - if (false) { - unittest_fail('elseif 1'); - } else if (true) { - $ok = true; - } else if (true) { - unittest_fail('elseif 2'); - } else { - unittest_fail('elseif 3'); - } - assertEquals($ok, true, 'elseif 4'); -} - -// Describe this function... -function test_ifelse() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $ok = false; - if (true) { - $ok = true; - } else { - unittest_fail('ifelse true'); - } - assertEquals($ok, true, 'ifelse true'); - $ok = false; - if (false) { - unittest_fail('ifelse false'); - } else { - $ok = true; - } - assertEquals($ok, true, 'ifelse false'); -} - -// Describe this function... -function test_equalities() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(2 == 2, true, 'Equal yes'); - assertEquals(3 == 4, false, 'Equal no'); - assertEquals(5 != 6, true, 'Not equal yes'); - assertEquals(3 == 4, false, 'Not equal no'); - assertEquals(5 < 6, true, 'Smaller yes'); - assertEquals(7 < 7, false, 'Smaller no'); - assertEquals(9 > 8, true, 'Greater yes'); - assertEquals(10 > 10, false, 'Greater no'); - assertEquals(11 <= 11, true, 'Smaller-equal yes'); - assertEquals(13 <= 12, false, 'Smaller-equal no'); - assertEquals(14 >= 14, true, 'Greater-equal yes'); - assertEquals(15 >= 16, false, 'Greater-equal no'); -} - -// Describe this function... -function test_and() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(true && true, true, 'And true/true'); - assertEquals(false && true, false, 'And false/true'); - assertEquals(true && false, false, 'And true/false'); - assertEquals(false && false, false, 'And false/false'); -} - -// Describe this function... -function test_or() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(true || true, true, 'Or true/true'); - assertEquals(false || true, true, 'Or false/true'); - assertEquals(true || false, true, 'Or true/false'); - assertEquals(false || false, false, 'Or false/false'); -} - -// Describe this function... -function test_ternary() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(true ? 42 : 99, 42, 'if true'); - assertEquals(false ? 42 : 99, 99, 'if true'); -} - -// Describe this function... -function test_foreach() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $log = ''; - foreach (array('a', 'b', 'c') as $x) { - $log .= $x; - } - assertEquals($log, 'abc', 'for loop'); -} - -// Describe this function... -function test_repeat() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $count = 0; - for ($count2 = 0; $count2 < 10; $count2++) { - $count += 1; - } - assertEquals($count, 10, 'repeat 10'); -} - -// Describe this function... -function test_while() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - while (false) { - unittest_fail('while 0'); - } - while (!true) { - unittest_fail('until 0'); - } - $count = 1; - while ($count != 10) { - $count += 1; - } - assertEquals($count, 10, 'while 10'); - $count = 1; - while (!($count == 10)) { - $count += 1; - } - assertEquals($count, 10, 'until 10'); -} - -// Describe this function... -function test_repeat_ext() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $count = 0; - for ($count3 = 0; $count3 < 10; $count3++) { - $count += 1; - } - assertEquals($count, 10, 'repeat 10'); -} - -// Describe this function... -function test_count_by() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $log = ''; - for ($x = 1; $x <= 8; $x += 2) { - $log .= $x; - } - assertEquals($log, '1357', 'count up ints'); - $log = ''; - for ($x = 8; $x >= 1; $x -= 2) { - $log .= $x; - } - assertEquals($log, '8642', 'count down ints'); - $loglist = array(); - for ($x = 1; $x <= 8; $x += 1.5) { - array_push($loglist, $x); - } - assertEquals($loglist, array(1, 2.5, 4, 5.5, 7), 'count with floats'); - $loglist = array(); - $_x_start = 1 + 0; - $_x_end = 8 + 0; - $_x_inc = abs(1 - 2); - if ($_x_start > $_x_end) { - $_x_inc = -$_x_inc; - } - for ($x = $_x_start; $_x_inc >= 0 ? $x <= $_x_end : $x >= $_x_end; $x += $_x_inc) { - array_push($loglist, $x); - } - assertEquals($loglist, array(1, 2, 3, 4, 5, 6, 7, 8), 'count up non-trivial ints'); - $loglist = array(); - $_x_start2 = 8 + 0; - $_x_end2 = 1 + 0; - $_x_inc2 = 2; - if ($_x_start2 > $_x_end2) { - $_x_inc2 = -$_x_inc2; - } - for ($x = $_x_start2; $_x_inc2 >= 0 ? $x <= $_x_end2 : $x >= $_x_end2; $x += $_x_inc2) { - array_push($loglist, $x); - } - assertEquals($loglist, array(8, 6, 4, 2), 'count down non-trivial ints'); - $loglist = array(); - $_x_start3 = 5 + 0.5; - $_x_end3 = 1 + 0; - $_x_inc3 = abs(1 + 0); - if ($_x_start3 > $_x_end3) { - $_x_inc3 = -$_x_inc3; - } - for ($x = $_x_start3; $_x_inc3 >= 0 ? $x <= $_x_end3 : $x >= $_x_end3; $x += $_x_inc3) { - array_push($loglist, $x); - } - assertEquals($loglist, array(5.5, 4.5, 3.5, 2.5, 1.5), 'count with floats'); -} - -// Describe this function... -function test_count_loops() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $log = ''; - for ($x = 1; $x <= 8; $x++) { - $log .= $x; - } - assertEquals($log, '12345678', 'count up'); - $log = ''; - for ($x = 8; $x >= 1; $x--) { - $log .= $x; - } - assertEquals($log, '87654321', 'count down'); - $loglist = array(); - $_x_start4 = 1 + 0; - $_x_end4 = 4 + 0; - $_x_inc4 = 1; - if ($_x_start4 > $_x_end4) { - $_x_inc4 = -$_x_inc4; - } - for ($x = $_x_start4; $_x_inc4 >= 0 ? $x <= $_x_end4 : $x >= $_x_end4; $x += $_x_inc4) { - array_push($loglist, $x); - } - assertEquals($loglist, array(1, 2, 3, 4), 'count up non-trivial'); - $loglist = array(); - $_x_start5 = 3 + 1; - $_x_end5 = 1 + 0; - $_x_inc5 = 1; - if ($_x_start5 > $_x_end5) { - $_x_inc5 = -$_x_inc5; - } - for ($x = $_x_start5; $_x_inc5 >= 0 ? $x <= $_x_end5 : $x >= $_x_end5; $x += $_x_inc5) { - array_push($loglist, $x); - } - assertEquals($loglist, array(4, 3, 2, 1), 'count down non-trivial'); -} - -// Describe this function... -function test_continue() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $log = ''; - $count = 0; - while ($count != 8) { - $count += 1; - if ($count == 5) { - continue; - } - $log .= $count; - } - assertEquals($log, '1234678', 'while continue'); - $log = ''; - $count = 0; - while (!($count == 8)) { - $count += 1; - if ($count == 5) { - continue; - } - $log .= $count; - } - assertEquals($log, '1234678', 'until continue'); - $log = ''; - for ($x = 1; $x <= 8; $x++) { - if ($x == 5) { - continue; - } - $log .= $x; - } - assertEquals($log, '1234678', 'count continue'); - $log = ''; - foreach (array('a', 'b', 'c', 'd') as $x) { - if ($x == 'c') { - continue; - } - $log .= $x; - } - assertEquals($log, 'abd', 'for continue'); -} - -// Describe this function... -function test_break() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $count = 1; - while ($count != 10) { - if ($count == 5) { - break; - } - $count += 1; - } - assertEquals($count, 5, 'while break'); - $count = 1; - while (!($count == 10)) { - if ($count == 5) { - break; - } - $count += 1; - } - assertEquals($count, 5, 'until break'); - $log = ''; - for ($x = 1; $x <= 8; $x++) { - if ($x == 5) { - break; - } - $log .= $x; - } - assertEquals($log, '1234', 'count break'); - $log = ''; - foreach (array('a', 'b', 'c', 'd') as $x) { - if ($x == 'c') { - break; - } - $log .= $x; - } - assertEquals($log, 'ab', 'for break'); -} - -// Tests the "single" block. -function test_single() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(sqrt(25), 5, 'sqrt'); - assertEquals(abs(-25), 25, 'abs'); - assertEquals(-(-25), 25, 'negate'); - assertEquals(log(1), 0, 'ln'); - assertEquals(log(100) / log(10), 2, 'log10'); - assertEquals(exp(2), 7.38905609893065, 'exp'); - assertEquals(pow(10,2), 100, 'power10'); -} - -// Tests the "arithmetic" block for all operations and checks -// parenthesis are properly generated for different orders. -function test_arithmetic() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(1 + 2, 3, 'add'); - assertEquals(1 - 2, -1, 'subtract'); - assertEquals(1 - (0 + 2), -1, 'subtract order with add'); - assertEquals(1 - (0 - 2), 3, 'subtract order with subtract'); - assertEquals(4 * 2.5, 10, 'multiply'); - assertEquals(4 * (0 + 2.5), 10, 'multiply order'); - assertEquals(8.2 / -5, -1.64, 'divide'); - assertEquals(8.2 / (0 + -5), -1.64, 'divide order'); - assertEquals(10 ** 4, 10000, 'power'); - assertEquals(10 ** (0 + 4), 10000, 'power order'); -} - -// Tests the "trig" block. -function test_trig() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(sin(90 / 180 * pi()), 1, 'sin'); - assertEquals(cos(180 / 180 * pi()), -1, 'cos'); - assertEquals(tan(0 / 180 * pi()), 0, 'tan'); - assertEquals(asin(-1) / pi() * 180, -90, 'asin'); - assertEquals(acos(1) / pi() * 180, 0, 'acos'); - assertEquals(atan(1) / pi() * 180, 45, 'atan'); -} - -// Tests the "constant" blocks. -function test_constant() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(floor(M_PI * 1000), 3141, 'const pi'); - assertEquals(floor(M_E * 1000), 2718, 'const e'); - assertEquals(floor(((1 + sqrt(5)) / 2) * 1000), 1618, 'const golden'); - assertEquals(floor(M_SQRT2 * 1000), 1414, 'const sqrt 2'); - assertEquals(floor(M_SQRT1_2 * 1000), 707, 'const sqrt 0.5'); - assertEquals(9999 < INF, true, 'const infinity'); -} - -function math_isPrime($n) { - // https://en.wikipedia.org/wiki/Primality_test#Naive_methods - if ($n == 2 || $n == 3) { - return true; - } - // False if n is NaN, negative, is 1, or not whole. - // And false if n is divisible by 2 or 3. - if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) { - return false; - } - // Check all the numbers of form 6k +/- 1, up to sqrt(n). - for ($x = 6; $x <= sqrt($n) + 1; $x += 6) { - if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) { - return false; - } - } - return true; -} - -// Tests the "number property" blocks. -function test_number_properties() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(42 % 2 == 0, true, 'even'); - assertEquals(42.1 % 2 == 1, false, 'odd'); - assertEquals(math_isPrime(5), true, 'prime 5'); - assertEquals(math_isPrime(5 + 2), true, 'prime 5 + 2 (extra parentheses)'); - assertEquals(math_isPrime(25), false, 'prime 25'); - assertEquals(math_isPrime(-31.1), false, 'prime negative'); - assertEquals(is_int(M_PI), false, 'whole'); - assertEquals(INF > 0, true, 'positive'); - assertEquals(5 + 2 > 0, true, '5 + 2 is positive (extra parentheses)'); - assertEquals(-42 < 0, true, 'negative'); - assertEquals(3 + 2 < 0, false, '3 + 2 is negative (extra parentheses)'); - assertEquals(42 % 2 == 0, true, 'divisible'); - assertEquals(!false, true, 'divisible by 0'); -} - -// Tests the "round" block. -function test_round() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(round(42.42), 42, 'round'); - assertEquals(ceil(-42.42), -42, 'round up'); - assertEquals(floor(42.42), 42, 'round down'); -} - -// Tests the "change" block. -function test_change() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $varToChange = 100; - $varToChange += 42; - assertEquals($varToChange, 142, 'change'); -} - -function math_mean($myList) { - return array_sum($myList) / count($myList); -} - -function math_median($arr) { - sort($arr,SORT_NUMERIC); - return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] : - ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2; -} - -function math_modes($values) { - if (empty($values)) return array(); - $counts = array_count_values($values); - arsort($counts); // Sort counts in descending order - $modes = array_keys($counts, current($counts), true); - return $modes; -} - -function math_standard_deviation($numbers) { - $n = count($numbers); - if (!$n) return null; - $mean = array_sum($numbers) / count($numbers); - foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2); - return sqrt(array_sum($devs) / (count($devs) - 1)); -} - -function math_random_list($list) { - $x = rand(0, count($list)-1); - return $list[$x]; -} - -function indexOf($haystack, $needle) { - for ($index = 0; $index < count($haystack); $index++) { - if ($haystack[$index] == $needle) return $index + 1; - } - return 0; -} - -// Tests the "list operation" blocks. -function test_operations_on_list() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(array_sum((array(3, 4, 5))), 12, 'sum'); - assertEquals(min((array(3, 4, 5))), 3, 'min'); - assertEquals(max((array(3, 4, 5))), 5, 'max'); - assertEquals(math_mean(array(3, 4, 5)), 4, 'average'); - assertEquals(math_median(array(3, 4, 5, 1)), 3.5, 'median'); - assertEquals(math_modes(array(3, 4, 3)), array(3), 'modes'); - assertEquals(math_modes(array(3, 4, 3, 1, 4)), array(3, 4), 'modes multiple'); - assertEquals(math_standard_deviation(array(3, 3, 3)), 0, 'standard dev'); - assertEquals(indexOf(array(3, 4, 5), math_random_list(array(3, 4, 5))) > 0, true, 'random'); -} - -// Tests the "mod" block. -function test_mod() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(42 % 5, 2, 'mod'); -} - -// Tests the "constrain" block. -function test_constraint() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(min(max(100, 0), 42), 42, 'constraint'); -} - -function math_random_int($a, $b) { - if ($a > $b) { - return rand($b, $a); - } - return rand($a, $b); -} - -// Tests the "random integer" block. -function test_random_integer() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $rand = math_random_int(5, 10); - assertEquals($rand >= 5 && $rand <= 10, true, 'randRange'); - assertEquals(is_int($rand), true, 'randInteger'); -} - -// Tests the "random fraction" block. -function test_random_fraction() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $rand = (float)rand()/(float)getrandmax(); - assertEquals($rand >= 0 && $rand <= 1, true, 'randFloat'); -} - -// Describe this function... -function test_atan2() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(atan2(5, -5) / pi() * 180, 135, 'atan2'); - assertEquals(atan2(-12, 0) / pi() * 180, -90, 'atan2'); -} - -// Checks that the number of calls is one in order -// to confirm that a function was only called once. -function check_number_of_calls($test_name) { - global $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $test_name .= 'number of calls'; - assertEquals($number_of_calls, 1, $test_name); -} - -// Tests the "create text with" block with varying number of inputs. -function test_create_text() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals('', '', 'no text'); - assertEquals('Hello', 'Hello', 'create single'); - assertEquals(-1, '-1', 'create single number'); - assertEquals('K' . 9, 'K9', 'create double text'); - assertEquals(4 . 2, '42', 'create double text numbers'); - assertEquals(implode('', array(1,2,3)), '123', 'create triple'); - assertEquals(implode('', array(1,true ? 0 : null,'M')), '10M', 'create order'); -} - -// Creates an empty string for use with the empty test. -function get_empty() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - return ''; -} - -// Tests the "is empty" block". -function test_empty_text() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(empty('Google'), false, 'not empty'); - assertEquals(empty(''), true, 'empty'); - assertEquals(empty(get_empty()), true, 'empty complex'); - assertEquals(empty(true ? '' : null), true, 'empty order'); -} - -function length($value) { - if (is_string($value)) { - return strlen($value); - } - return count($value); -} - -// Tests the "length" block. -function test_text_length() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(length(''), 0, 'zero length'); - assertEquals(length('Google'), 6, 'non-zero length'); - assertEquals(length(true ? 'car' : null), 3, 'length order'); -} - -// Tests the "append text" block with different types of parameters. -function test_append() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $item = 'Miserable'; - $item .= 'Failure'; - assertEquals($item, 'MiserableFailure', 'append text'); - $item = 12; - $item .= 34; - assertEquals($item, '1234', 'append number'); - $item = 'Something '; - $item .= true ? 'Positive' : null; - assertEquals($item, 'Something Positive', 'append order'); -} - -function text_indexOf($text, $search) { - $pos = strpos($text, $search); - return $pos === false ? 0 : $pos + 1; -} - -function text_lastIndexOf($text, $search) { - $pos = strrpos($text, $search); - return $pos === false ? 0 : $pos + 1; -} - -// Tests the "find" block with a variable. -function test_find_text_simple() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $text = 'Banana'; - assertEquals(text_indexOf($text, 'an'), 2, 'find first simple'); - assertEquals(text_lastIndexOf($text, 'an'), 4, 'find last simple'); - assertEquals(text_indexOf($text, 'Peel'), 0, 'find none simple'); -} - -// Creates a string for use with the find test. -function get_fruit() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls += 1; - return 'Banana'; -} - -// Tests the "find" block with a function call. -function test_find_text_complex() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls = 0; - assertEquals(text_indexOf(get_fruit(), 'an'), 2, 'find first complex'); - check_number_of_calls('find first complex'); - $number_of_calls = 0; - assertEquals(text_indexOf(true ? get_fruit() : null, 'an'), 2, 'find first order complex'); - check_number_of_calls('find first order complex'); - $number_of_calls = 0; - assertEquals(text_lastIndexOf(get_fruit(), 'an'), 4, 'find last complex'); - check_number_of_calls('find last complex'); - $number_of_calls = 0; - assertEquals(text_lastIndexOf(true ? get_fruit() : null, 'an'), 4, 'find last order complex'); - check_number_of_calls('find last order complex'); - $number_of_calls = 0; - assertEquals(text_indexOf(get_fruit(), 'Peel'), 0, 'find none complex'); - check_number_of_calls('find none complex'); - $number_of_calls = 0; - assertEquals(text_indexOf(true ? get_fruit() : null, 'Peel'), 0, 'find none order complex'); - check_number_of_calls('find none order complex'); -} - -function text_random_letter($text) { - return $text[rand(0, strlen($text) - 1)]; -} - -// Tests the "get letter" block with a variable. -function test_get_text_simple() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $text = 'Blockly'; - assertEquals(substr($text, 0, 1), 'B', 'get first simple'); - assertEquals(substr($text, -1), 'y', 'get last simple'); - assertEquals(text_indexOf($text, text_random_letter($text)) > 0, true, 'get random simple'); - assertEquals(substr($text, 2, 1), 'o', 'get # simple'); - assertEquals(substr($text, ((true ? 3 : null) - 1), 1), 'o', 'get # order simple'); - assertEquals(substr($text, -3, 1), 'k', 'get #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(substr($text, (-(0 + 3)), 1), 'k', 'get #-end order simple'); -} - -// Creates a string for use with the get test. -function get_Blockly() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls += 1; - return 'Blockly'; -} - -// Tests the "get letter" block with a function call. -function test_get_text_complex() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $text = 'Blockly'; - $number_of_calls = 0; - assertEquals(substr(get_Blockly(), 0, 1), 'B', 'get first complex'); - check_number_of_calls('get first complex'); - $number_of_calls = 0; - assertEquals(substr(true ? get_Blockly() : null, 0, 1), 'B', 'get first order complex'); - check_number_of_calls('get first order complex'); - $number_of_calls = 0; - assertEquals(substr(get_Blockly(), -1), 'y', 'get last complex'); - check_number_of_calls('get last complex'); - $number_of_calls = 0; - assertEquals(substr(true ? get_Blockly() : null, -1), 'y', 'get last order complex'); - check_number_of_calls('get last order complex'); - $number_of_calls = 0; - assertEquals(text_indexOf($text, text_random_letter(get_Blockly())) > 0, true, 'get random complex'); - check_number_of_calls('get random complex'); - $number_of_calls = 0; - assertEquals(text_indexOf($text, text_random_letter(true ? get_Blockly() : null)) > 0, true, 'get random order complex'); - check_number_of_calls('get random order complex'); - $number_of_calls = 0; - assertEquals(substr(get_Blockly(), 2, 1), 'o', 'get # complex'); - check_number_of_calls('get # complex'); - $number_of_calls = 0; - assertEquals(substr(true ? get_Blockly() : null, ((true ? 3 : null) - 1), 1), 'o', 'get # order complex'); - check_number_of_calls('get # order complex'); - $number_of_calls = 0; - assertEquals(substr(get_Blockly(), -3, 1), 'k', 'get #-end complex'); - check_number_of_calls('get #-end complex'); - $number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(substr(true ? get_Blockly() : null, (-(0 + 3)), 1), 'k', 'get #-end order complex'); - check_number_of_calls('get #-end order complex'); -} - -// Creates a string for use with the substring test. -function get_numbers() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls += 1; - return '123456789'; -} - -function text_get_substring($text, $where1, $at1, $where2, $at2) { - if ($where1 == 'FROM_END') { - $at1 = strlen($text) - 1 - $at1; - } else if ($where1 == 'FIRST') { - $at1 = 0; - } else if ($where1 != 'FROM_START') { - throw new Exception('Unhandled option (text_get_substring).'); - } - $length = 0; - if ($where2 == 'FROM_START') { - $length = $at2 - $at1 + 1; - } else if ($where2 == 'FROM_END') { - $length = strlen($text) - $at1 - $at2; - } else if ($where2 == 'LAST') { - $length = strlen($text) - $at1; - } else { - throw new Exception('Unhandled option (text_get_substring).'); - } - return substr($text, $at1, $length); -} - -// Tests the "get substring" block with a variable. -function test_substring_simple() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $text = '123456789'; - assertEquals(text_get_substring($text, 'FROM_START', 1, 'FROM_START', 2), '23', 'substring # simple'); - assertEquals(text_get_substring($text, 'FROM_START', ((true ? 2 : null) - 1), 'FROM_START', ((true ? 3 : null) - 1)), '23', 'substring # simple order'); - assertEquals(text_get_substring($text, 'FROM_END', 2, 'FROM_END', 1), '78', 'substring #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(text_get_substring($text, 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), '78', 'substring #-end simple order'); - assertEquals($text, $text, 'substring first-last simple'); - assertEquals(text_get_substring($text, 'FROM_START', 1, 'FROM_END', 1), '2345678', 'substring # #-end simple'); - assertEquals(text_get_substring($text, 'FROM_END', 6, 'FROM_START', 3), '34', 'substring #-end # simple'); - assertEquals(text_get_substring($text, 'FIRST', 0, 'FROM_START', 3), '1234', 'substring first # simple'); - assertEquals(text_get_substring($text, 'FIRST', 0, 'FROM_END', 1), '12345678', 'substring first #-end simple'); - assertEquals(text_get_substring($text, 'FROM_START', 6, 'LAST', 0), '789', 'substring # last simple'); - assertEquals(text_get_substring($text, 'FROM_END', 2, 'LAST', 0), '789', 'substring #-end last simple'); - assertEquals(text_get_substring($text, 'FROM_START', 0, 'FROM_END', 0), '123456789', 'substring all with # #-end simple'); - assertEquals(text_get_substring($text, 'FROM_END', 8, 'FROM_START', 8), '123456789', 'substring all with #-end # simple'); - // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - assertEquals(text_get_substring($text, 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), '123456789', 'substring all with # #-end math simple'); -} - -// Tests the "get substring" block with a function call. -function test_substring_complex() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls = 0; - assertEquals(text_get_substring(get_numbers(), 'FROM_START', 1, 'FROM_START', 2), '23', 'substring # complex'); - check_number_of_calls('substring # complex'); - $number_of_calls = 0; - assertEquals(text_get_substring(true ? get_numbers() : null, 'FROM_START', ((true ? 2 : null) - 1), 'FROM_START', ((true ? 3 : null) - 1)), '23', 'substring # complex order'); - check_number_of_calls('substring # complex order'); - $number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(text_get_substring(get_numbers(), 'FROM_END', 2, 'FROM_END', 1), '78', 'substring #-end complex'); - check_number_of_calls('substring #-end complex'); - $number_of_calls = 0; - assertEquals(text_get_substring(true ? get_numbers() : null, 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), '78', 'substring #-end order order'); - check_number_of_calls('substring #-end order order'); - $number_of_calls = 0; - assertEquals(get_numbers(), $text, 'substring first-last'); - check_number_of_calls('substring first-last'); - $number_of_calls = 0; - assertEquals(text_get_substring(get_numbers(), 'FROM_START', 1, 'FROM_END', 1), '2345678', 'substring # #-end complex'); - check_number_of_calls('substring # #-end complex'); - $number_of_calls = 0; - assertEquals(text_get_substring(get_numbers(), 'FROM_END', 6, 'FROM_START', 3), '34', 'substring #-end # complex'); - check_number_of_calls('substring #-end # complex'); - $number_of_calls = 0; - assertEquals(text_get_substring(get_numbers(), 'FIRST', 0, 'FROM_START', 3), '1234', 'substring first # complex'); - check_number_of_calls('substring first # complex'); - $number_of_calls = 0; - assertEquals(text_get_substring(get_numbers(), 'FIRST', 0, 'FROM_END', 1), '12345678', 'substring first #-end complex'); - check_number_of_calls('substring first #-end complex'); - $number_of_calls = 0; - assertEquals(text_get_substring(get_numbers(), 'FROM_START', 6, 'LAST', 0), '789', 'substring # last complex'); - check_number_of_calls('substring # last complex'); - $number_of_calls = 0; - assertEquals(text_get_substring(get_numbers(), 'FROM_END', 2, 'LAST', 0), '789', 'substring #-end last complex'); - check_number_of_calls('substring #-end last complex'); - $number_of_calls = 0; - assertEquals(text_get_substring(get_numbers(), 'FROM_START', 0, 'FROM_END', 0), '123456789', 'substring all with # #-end complex'); - check_number_of_calls('substring all with # #-end complex'); - $number_of_calls = 0; - assertEquals(text_get_substring(get_numbers(), 'FROM_END', 8, 'FROM_START', 8), '123456789', 'substring all with #-end # complex'); - check_number_of_calls('substring all with #-end # complex'); - $number_of_calls = 0; - // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - assertEquals(text_get_substring(get_numbers(), 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), '123456789', 'substring all with # #-end math complex'); - check_number_of_calls('substring all with # #-end math complex'); -} - -// Tests the "change casing" block. -function test_case() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $text = 'Hello World'; - assertEquals(strtoupper($text), 'HELLO WORLD', 'uppercase'); - assertEquals(strtoupper(true ? $text : null), 'HELLO WORLD', 'uppercase order'); - $text = 'Hello World'; - assertEquals(strtolower($text), 'hello world', 'lowercase'); - assertEquals(strtolower(true ? $text : null), 'hello world', 'lowercase order'); - $text = 'heLLo WorlD'; - assertEquals(ucwords(strtolower($text)), 'Hello World', 'titlecase'); - assertEquals(ucwords(strtolower(true ? $text : null)), 'Hello World', 'titlecase order'); -} - -// Tests the "trim" block. -function test_trim() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $text = ' abc def '; - assertEquals(trim($text), 'abc def', 'trim both'); - assertEquals(trim(true ? $text : null), 'abc def', 'trim both order'); - assertEquals(ltrim($text), 'abc def ', 'trim left'); - assertEquals(ltrim(true ? $text : null), 'abc def ', 'trim left order'); - assertEquals(rtrim($text), ' abc def', 'trim right'); - assertEquals(rtrim(true ? $text : null), ' abc def', 'trim right order'); -} - -// Tests the "trim" block. -function test_count_text() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $text = 'woolloomooloo'; - assertEquals(strlen('o') === 0 ? strlen($text) + 1 : substr_count($text, 'o'), 8, 'len 1'); - assertEquals(strlen('oo') === 0 ? strlen($text) + 1 : substr_count($text, 'oo'), 4, 'len 2'); - assertEquals(strlen('loo') === 0 ? strlen($text) + 1 : substr_count($text, 'loo'), 2, 'len 3'); - assertEquals(strlen('wool') === 0 ? strlen($text) + 1 : substr_count($text, 'wool'), 1, 'start'); - assertEquals(strlen('chicken') === 0 ? strlen($text) + 1 : substr_count($text, 'chicken'), 0, 'missing'); - assertEquals(strlen('') === 0 ? strlen($text) + 1 : substr_count($text, ''), 14, 'empty needle'); - assertEquals(strlen('chicken') === 0 ? strlen('') + 1 : substr_count('', 'chicken'), 0, 'empty source'); -} - -// Tests the "trim" block. -function test_text_reverse() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(strrev(''), '', 'empty string'); - assertEquals(strrev('a'), 'a', 'len 1'); - assertEquals(strrev('ab'), 'ba', 'len 2'); - assertEquals(strrev('woolloomooloo'), 'ooloomoolloow', 'longer'); -} - -// Tests the "trim" block. -function test_replace() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(str_replace('oo', '123', 'woolloomooloo'), 'w123ll123m123l123', 'replace all instances 1'); - assertEquals(str_replace('.oo', 'X', 'woolloomooloo'), 'woolloomooloo', 'literal string replacement'); - assertEquals(str_replace('abc', 'X', 'woolloomooloo'), 'woolloomooloo', 'not found'); - assertEquals(str_replace('o', '', 'woolloomooloo'), 'wllml', 'empty replacement 1'); - assertEquals(str_replace('aaaaa', '', 'aaaaa'), '', 'empty replacement 2'); - assertEquals(str_replace('a', '', 'aaaaa'), '', 'empty replacement 3'); - assertEquals(str_replace('a', 'chicken', ''), '', 'empty source'); -} - -// Tests the "multiline" block. -function test_multiline() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals('', '', 'no text'); - assertEquals('Google', 'Google', 'simple'); - assertEquals('paragraph' . "\n" . - 'with newlines' . "\n" . - 'yup', 'paragraph' . "\n" . - 'with newlines' . "\n" . - 'yup', 'no compile error with newlines'); - assertEquals(strlen('bark') === 0 ? strlen('bark bark' . "\n" . - 'bark bark bark' . "\n" . - 'bark bark bark bark') + 1 : substr_count('bark bark' . "\n" . - 'bark bark bark' . "\n" . - 'bark bark bark bark', 'bark'), 9, 'count with newlines'); -} - -// Checks that the number of calls is one in order -// to confirm that a function was only called once. -function check_number_of_calls2($test_name) { - global $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $test_name .= 'number of calls'; - assertEquals($number_of_calls, 1, $test_name); -} - -function lists_repeat($value, $count) { - $array = array(); - for ($index = 0; $index < $count; $index++) { - $array[] = $value; - } - return $array; -} - -// Tests the "create list with" and "create empty list" blocks. -function test_create_lists() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(array(), array(), 'create empty'); - assertEquals(array(true, 'love'), array(true, 'love'), 'create items'); - assertEquals(lists_repeat('Eject', 3), array('Eject', 'Eject', 'Eject'), 'create repeated'); - assertEquals(lists_repeat('Eject', 0 + 3), array('Eject', 'Eject', 'Eject'), 'create repeated order'); -} - -// Creates an empty list for use with the empty test. -function get_empty_list() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - return array(); -} - -// Tests the "is empty" block. -function test_lists_empty() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(empty((array(0))), false, 'not empty'); - assertEquals(empty((array())), true, 'empty'); - assertEquals(empty((get_empty_list())), true, 'empty complex'); - assertEquals(empty((true ? array() : null)), true, 'empty order'); -} - -// Tests the "length" block. -function test_lists_length() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(length(array()), 0, 'zero length'); - assertEquals(length(array('cat')), 1, 'one length'); - assertEquals(length(array('cat', true, array())), 3, 'three length'); - assertEquals(length(true ? array('cat', true) : null), 2, 'two length order'); -} - -function lastIndexOf($haystack, $needle) { - $last = 0; - for ($index = 0; $index < count($haystack); $index++) { - if ($haystack[$index] == $needle) $last = $index + 1; - } - return $last; -} - -// Tests the "find" block with a variable. -function test_find_lists_simple() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Alice', 'Eve', 'Bob', 'Eve'); - assertEquals(indexOf($list2, 'Eve'), 2, 'find first simple'); - assertEquals(lastIndexOf($list2, 'Eve'), 4, 'find last simple'); - assertEquals(indexOf($list2, 'Dave'), 0, 'find none simple'); -} - -// Creates a list for use with the find test. -function get_names() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls += 1; - return array('Alice', 'Eve', 'Bob', 'Eve'); -} - -// Tests the "find" block with a function call. -function test_find_lists_complex() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls = 0; - assertEquals(indexOf(get_names(), 'Eve'), 2, 'find first complex'); - check_number_of_calls('find first complex'); - $number_of_calls = 0; - assertEquals(indexOf((true ? get_names() : null), 'Eve'), 2, 'find first order complex'); - check_number_of_calls('find first order complex'); - $number_of_calls = 0; - assertEquals(lastIndexOf(get_names(), 'Eve'), 4, 'find last complex'); - check_number_of_calls('find last complex'); - $number_of_calls = 0; - assertEquals(lastIndexOf((true ? get_names() : null), 'Eve'), 4, 'find last order complex'); - check_number_of_calls('find last order complex'); - $number_of_calls = 0; - assertEquals(indexOf(get_names(), 'Dave'), 0, 'find none complex'); - check_number_of_calls('find none complex'); - $number_of_calls = 0; - assertEquals(indexOf((true ? get_names() : null), 'Dave'), 0, 'find none order complex'); - check_number_of_calls('find none order complex'); -} - -function lists_get_random_item($list) { - return $list[rand(0,count($list)-1)]; -} - -// Tests the "get" block with a variable. -function test_get_lists_simple() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals($list2[0], 'Kirk', 'get first simple'); - assertEquals(end($list2), 'McCoy', 'get last simple'); - assertEquals(indexOf($list2, lists_get_random_item($list2)) > 0, true, 'get random simple'); - assertEquals($list2[1], 'Spock', 'get # simple'); - assertEquals($list2[((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); - assertEquals(array_slice($list2, -3, 1)[0], 'Kirk', 'get #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(array_slice($list2, (-(0 + 3)), 1)[0], 'Kirk', 'get #-end order simple'); -} - -// Tests the "get" block with create list call. -function test_get_lists_create_list() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(array('Kirk', 'Spock', 'McCoy')[0], 'Kirk', 'get first create list'); - assertEquals(end(array('Kirk', 'Spock', 'McCoy')), 'McCoy', 'get last simple'); - assertEquals(indexOf(array('Kirk', 'Spock', 'McCoy'), lists_get_random_item(array('Kirk', 'Spock', 'McCoy'))) > 0, true, 'get random simple'); - assertEquals(array('Kirk', 'Spock', 'McCoy')[1], 'Spock', 'get # simple'); - assertEquals(array('Kirk', 'Spock', 'McCoy')[((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); - assertEquals(array_slice(array('Kirk', 'Spock', 'McCoy'), -3, 1)[0], 'Kirk', 'get #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(array_slice(array('Kirk', 'Spock', 'McCoy'), (-(0 + 3)), 1)[0], 'Kirk', 'get #-end order simple'); -} - -// Creates a list for use with the get test. -function get_star_wars() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls += 1; - return array('Kirk', 'Spock', 'McCoy'); -} - -// Tests the "get" block with a function call. -function test_get_lists_complex() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Kirk', 'Spock', 'McCoy'); - $number_of_calls = 0; - assertEquals(get_star_wars()[0], 'Kirk', 'get first complex'); - check_number_of_calls('get first complex'); - $number_of_calls = 0; - assertEquals((true ? get_star_wars() : null)[0], 'Kirk', 'get first order complex'); - check_number_of_calls('get first order complex'); - $number_of_calls = 0; - assertEquals(end(get_star_wars()), 'McCoy', 'get last complex'); - check_number_of_calls('get last complex'); - $number_of_calls = 0; - assertEquals(end(true ? get_star_wars() : null), 'McCoy', 'get last order complex'); - check_number_of_calls('get last order complex'); - $number_of_calls = 0; - assertEquals(indexOf($list2, lists_get_random_item(get_star_wars())) > 0, true, 'get random complex'); - check_number_of_calls('get random complex'); - $number_of_calls = 0; - assertEquals(indexOf($list2, lists_get_random_item(true ? get_star_wars() : null)) > 0, true, 'get random order complex'); - check_number_of_calls('get random order complex'); - $number_of_calls = 0; - assertEquals(get_star_wars()[1], 'Spock', 'get # complex'); - check_number_of_calls('get # complex'); - $number_of_calls = 0; - assertEquals((true ? get_star_wars() : null)[((true ? 2 : null) - 1)], 'Spock', 'get # order complex'); - check_number_of_calls('get # order complex'); - $number_of_calls = 0; - assertEquals(array_slice(get_star_wars(), -3, 1)[0], 'Kirk', 'get #-end complex'); - check_number_of_calls('get #-end complex'); - $number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(array_slice(true ? get_star_wars() : null, (-(0 + 3)), 1)[0], 'Kirk', 'get #-end order complex'); - check_number_of_calls('get #-end order complex'); -} - -function lists_get_remove_random_item(&$list) { - $x = rand(0,count($list)-1); - unset($list[$x]); - return array_values($list); -} - -// Tests the "get and remove" block. -function test_getRemove() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals(array_shift($list2), 'Kirk', 'getremove first'); - assertEquals($list2, array('Spock', 'McCoy'), 'getremove first list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals(array_shift(true ? $list2 : null), 'Kirk', 'getremove first order'); - assertEquals($list2, array('Spock', 'McCoy'), 'getremove first order list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals(array_pop($list2), 'McCoy', 'getremove last'); - assertEquals($list2, array('Kirk', 'Spock'), 'getremove last list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals(array_pop(true ? $list2 : null), 'McCoy', 'getremove last order'); - assertEquals($list2, array('Kirk', 'Spock'), 'getremove last order list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals(indexOf($list2, lists_get_remove_random_item($list2)) == 0, true, 'getremove random'); - assertEquals(length($list2), 2, 'getremove random list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals(indexOf($list2, lists_get_remove_random_item(true ? $list2 : null)) == 0, true, 'getremove random order'); - assertEquals(length($list2), 2, 'getremove random order list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals(array_splice($list2, 1, 1)[0], 'Spock', 'getremove #'); - assertEquals($list2, array('Kirk', 'McCoy'), 'getremove # list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals(array_splice(true ? $list2 : null, ((true ? 2 : null) - 1), 1)[0], 'Spock', 'getremove # order'); - assertEquals($list2, array('Kirk', 'McCoy'), 'getremove # order list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - assertEquals(array_splice($list2, count($list2) - 3, 1)[0], 'Kirk', 'getremove #-end'); - assertEquals($list2, array('Spock', 'McCoy'), 'getremove #-end list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(array_splice(true ? $list2 : null, count(true ? $list2 : null) - (0 + 3), 1)[0], 'Kirk', 'getremove #-end order'); - assertEquals($list2, array('Spock', 'McCoy'), 'getremove #-end order list'); -} - -function lists_remove_random_item(&$list) { - unset($list[rand(0,count($list)-1)]); -} - -// Tests the "remove" block. -function test_remove() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Kirk', 'Spock', 'McCoy'); - array_shift($list2); - assertEquals($list2, array('Spock', 'McCoy'), 'remove first list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - array_shift(true ? $list2 : null); - assertEquals($list2, array('Spock', 'McCoy'), 'remove first order list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - array_pop($list2); - assertEquals($list2, array('Kirk', 'Spock'), 'remove last list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - array_pop(true ? $list2 : null); - assertEquals($list2, array('Kirk', 'Spock'), 'remove last order list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - lists_remove_random_item($list2); - assertEquals(length($list2), 2, 'remove random list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - lists_remove_random_item(true ? $list2 : null); - assertEquals(length($list2), 2, 'remove random order list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - array_splice($list2, 1, 1); - assertEquals($list2, array('Kirk', 'McCoy'), 'remove # list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - array_splice(true ? $list2 : null, ((true ? 2 : null) - 1), 1); - assertEquals($list2, array('Kirk', 'McCoy'), 'remove # order list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - array_splice($list2, count($list2) - 3, 1)[0]; - assertEquals($list2, array('Spock', 'McCoy'), 'remove #-end list'); - $list2 = array('Kirk', 'Spock', 'McCoy'); - // The order for index for #-end is addition because this will catch - // errors in generators where most perform the operation ... - index. - array_splice(true ? $list2 : null, count(true ? $list2 : null) - (0 + 3), 1)[0]; - assertEquals($list2, array('Spock', 'McCoy'), 'remove #-end order list'); -} - -function lists_set_last_item(&$list, $value) { - $list[count($list) - 1] = $value; -} - -function lists_set_from_end(&$list, $at, $value) { - $list[count($list) - $at] = $value; -} - -// Tests the "set" block. -function test_set() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Picard', 'Riker', 'Crusher'); - $list2[0] = 'Jean-Luc'; - assertEquals($list2, array('Jean-Luc', 'Riker', 'Crusher'), 'set first list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - (true ? $list2 : null)[0] = 'Jean-Luc'; - assertEquals($list2, array('Jean-Luc', 'Riker', 'Crusher'), 'set first order list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - lists_set_last_item($list2, 'Beverly'); - assertEquals($list2, array('Picard', 'Riker', 'Beverly'), 'set last list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - lists_set_last_item(true ? $list2 : null, 'Beverly'); - assertEquals($list2, array('Picard', 'Riker', 'Beverly'), 'set last order list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - $tmp_x = rand(0, count($list2)-1); - $list2[$tmp_x] = 'Data'; - assertEquals(length($list2), 3, 'set random list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - $tmp_list = &(true ? $list2 : null); - $tmp_x2 = rand(0, count($tmp_list)-1); - $tmp_list[$tmp_x2] = 'Data'; - assertEquals(length($list2), 3, 'set random order list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - $list2[2] = 'Pulaski'; - assertEquals($list2, array('Picard', 'Riker', 'Pulaski'), 'set # list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - (true ? $list2 : null)[((true ? 3 : null) - 1)] = 'Pulaski'; - assertEquals($list2, array('Picard', 'Riker', 'Pulaski'), 'set # order list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - lists_set_from_end($list2, 1, 'Pulaski'); - assertEquals($list2, array('Picard', 'Riker', 'Pulaski'), 'set #-end list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - // The order for index for #-end is addition because this will catch - // errors in generators where most perform the operation ... - index. - lists_set_from_end(true ? $list2 : null, 0 + 2, 'Pulaski'); - assertEquals($list2, array('Picard', 'Pulaski', 'Crusher'), 'set #-end order list'); -} - -function lists_insert_from_end(&$list, $at, $value) { - return array_splice($list, count($list) - $at, 0, $value); -} - -// Tests the "insert" block. -function test_insert() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Picard', 'Riker', 'Crusher'); - array_unshift($list2, 'Data'); - assertEquals($list2, array('Data', 'Picard', 'Riker', 'Crusher'), 'insert first list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - array_unshift(true ? $list2 : null, 'Data'); - assertEquals($list2, array('Data', 'Picard', 'Riker', 'Crusher'), 'insert first order list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - array_push($list2, 'Data'); - assertEquals($list2, array('Picard', 'Riker', 'Crusher', 'Data'), 'insert last list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - array_push(true ? $list2 : null, 'Data'); - assertEquals($list2, array('Picard', 'Riker', 'Crusher', 'Data'), 'insert last order list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - $tmp_x3 = rand(0, count($list2)-1); - array_splice($list2, $tmp_x3, 0, 'Data'); - assertEquals(length($list2), 4, 'insert random list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - $tmp_list2 = &(true ? $list2 : null); - $tmp_x4 = rand(0, count($tmp_list2)-1); - array_splice($tmp_list2, $tmp_x4, 0, 'Data'); - assertEquals(length($list2), 4, 'insert random order list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - array_splice($list2, 2, 0, 'Data'); - assertEquals($list2, array('Picard', 'Riker', 'Data', 'Crusher'), 'insert # list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - array_splice(true ? $list2 : null, ((true ? 3 : null) - 1), 0, 'Data'); - assertEquals($list2, array('Picard', 'Riker', 'Data', 'Crusher'), 'insert # order list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - lists_insert_from_end($list2, 1, 'Data'); - assertEquals($list2, array('Picard', 'Riker', 'Data', 'Crusher'), 'insert #-end list'); - $list2 = array('Picard', 'Riker', 'Crusher'); - // The order for index for #-end is addition because this will catch - // errors in generators where most perform the operation ... - index. - lists_insert_from_end(true ? $list2 : null, 0 + 2, 'Data'); - assertEquals($list2, array('Picard', 'Data', 'Riker', 'Crusher'), 'insert #-end order list'); -} - -// Tests the "get sub-list" block with a variable. -function test_sublist_simple() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'); - assertEquals(array_slice($list2, 1, 2 - 1 + 1), array('Challenger', 'Discovery'), 'sublist # simple'); - assertEquals(array_slice($list2, ((true ? 2 : null) - 1), ((true ? 3 : null) - 1) - ((true ? 2 : null) - 1) + 1), array('Challenger', 'Discovery'), 'sublist # simple order'); - assertEquals(array_slice($list2, count($list2) - 3, count($list2) - 1 - (count($list2) - 3)), array('Discovery', 'Atlantis'), 'sublist #-end simple'); - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(array_slice($list2, count($list2) - (0 + 3), count($list2) - ((0 + 2) - 1) - (count($list2) - (0 + 3))), array('Discovery', 'Atlantis'), 'sublist #-end simple order'); - assertEquals($list2, $list2, 'sublist first-last simple'); - $changing_list = array('Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'); - $list_copy = $changing_list; - lists_remove_random_item($changing_list); - assertEquals($list_copy, $list2, 'sublist first-last simple copy check'); - assertEquals(array_slice($list2, 1, count($list2) - 1 - 1), array('Challenger', 'Discovery', 'Atlantis'), 'sublist # #-end simple'); - assertEquals(array_slice($list2, count($list2) - 3, 3 - (count($list2) - 3) + 1), array('Discovery', 'Atlantis'), 'sublist #-end # simple'); - assertEquals(array_slice($list2, 0, 3 - 0 + 1), array('Columbia', 'Challenger', 'Discovery', 'Atlantis'), 'sublist first # simple'); - assertEquals(array_slice($list2, 0, count($list2) - 3 - 0), array('Columbia', 'Challenger'), 'sublist first #-end simple'); - assertEquals(array_slice($list2, 3, count($list2) - 3), array('Atlantis', 'Endeavour'), 'sublist # last simple'); - assertEquals(array_slice($list2, count($list2) - 4, count($list2) - (count($list2) - 4)), array('Challenger', 'Discovery', 'Atlantis', 'Endeavour'), 'sublist #-end last simple'); - assertEquals(array_slice($list2, 0, count($list2) - 0 - 0), $list2, 'sublist all with # #-end simple'); - assertEquals(array_slice($list2, count($list2) - 5, 4 - (count($list2) - 5) + 1), $list2, 'sublist all with #-end # simple'); - // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - assertEquals(array_slice($list2, ((0 + 1) - 1), count($list2) - ((0 + 1) - 1) - ((0 + 1) - 1)), $list2, 'sublist all with # #-end math simple'); -} - -// Creates a list for use with the sublist test. -function get_space_shuttles() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls += 1; - return array('Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'); -} - -function lists_get_sublist($list, $where1, $at1, $where2, $at2) { - if ($where1 == 'FROM_END') { - $at1 = count($list) - 1 - $at1; - } else if ($where1 == 'FIRST') { - $at1 = 0; - } else if ($where1 != 'FROM_START') { - throw new Exception('Unhandled option (lists_get_sublist).'); - } - $length = 0; - if ($where2 == 'FROM_START') { - $length = $at2 - $at1 + 1; - } else if ($where2 == 'FROM_END') { - $length = count($list) - $at1 - $at2; - } else if ($where2 == 'LAST') { - $length = count($list) - $at1; - } else { - throw new Exception('Unhandled option (lists_get_sublist).'); - } - return array_slice($list, $at1, $length); -} - -// Tests the "get sub-list" block with a function call. -function test_sublist_complex() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $number_of_calls = 0; - assertEquals(array_slice(get_space_shuttles(), 1, 2 - 1 + 1), array('Challenger', 'Discovery'), 'sublist # start complex'); - check_number_of_calls('sublist # start complex'); - $number_of_calls = 0; - assertEquals(array_slice(true ? get_space_shuttles() : null, ((true ? 2 : null) - 1), ((true ? 3 : null) - 1) - ((true ? 2 : null) - 1) + 1), array('Challenger', 'Discovery'), 'sublist # start order complex'); - check_number_of_calls('sublist # start order complex'); - $number_of_calls = 0; - // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_END', 2, 'FROM_END', 1), array('Discovery', 'Atlantis'), 'sublist # end complex'); - assertEquals($number_of_calls, 1, 'sublist # end complex number of calls'); - $number_of_calls = 0; - assertEquals(lists_get_sublist(true ? get_space_shuttles() : null, 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), array('Discovery', 'Atlantis'), 'sublist # end order complex'); - check_number_of_calls('sublist # end order complex'); - $number_of_calls = 0; - assertEquals(get_space_shuttles(), $list2, 'sublist first-last complex'); - check_number_of_calls('sublist first-last complex'); - $number_of_calls = 0; - assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_START', 1, 'FROM_END', 1), array('Challenger', 'Discovery', 'Atlantis'), 'sublist # #-end complex'); - check_number_of_calls('sublist # #-end complex'); - $number_of_calls = 0; - assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_END', 2, 'FROM_START', 3), array('Discovery', 'Atlantis'), 'sublist #-end # complex'); - check_number_of_calls('sublist #-end # complex'); - $number_of_calls = 0; - assertEquals(array_slice(get_space_shuttles(), 0, 3 - 0 + 1), array('Columbia', 'Challenger', 'Discovery', 'Atlantis'), 'sublist first # complex'); - check_number_of_calls('sublist first # complex'); - $number_of_calls = 0; - assertEquals(lists_get_sublist(get_space_shuttles(), 'FIRST', 0, 'FROM_END', 3), array('Columbia', 'Challenger'), 'sublist first #-end complex'); - check_number_of_calls('sublist first #-end complex'); - $number_of_calls = 0; - assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_START', 3, 'LAST', 0), array('Atlantis', 'Endeavour'), 'sublist # last complex'); - check_number_of_calls('sublist # last complex'); - $number_of_calls = 0; - assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_END', 3, 'LAST', 0), array('Challenger', 'Discovery', 'Atlantis', 'Endeavour'), 'sublist #-end last simple'); - check_number_of_calls('sublist #-end last simple'); - $number_of_calls = 0; - assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_START', 0, 'FROM_END', 0), $list2, 'sublist all with # #-end complex'); - check_number_of_calls('sublist all with # #-end complex'); - $number_of_calls = 0; - assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_END', 4, 'FROM_START', 4), $list2, 'sublist all with #-end # complex'); - check_number_of_calls('sublist all with #-end # complex'); - $number_of_calls = 0; - // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), $list2, 'sublist all with # #-end math complex'); - check_number_of_calls('sublist all with # #-end math complex'); -} - -// Tests the "join" block. -function test_join() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Vulcan', 'Klingon', 'Borg'); - assertEquals(implode(',', $list2), 'Vulcan,Klingon,Borg', 'join'); - assertEquals(implode(',', true ? $list2 : null), 'Vulcan,Klingon,Borg', 'join order'); -} - -// Tests the "split" block. -function test_split() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $text = 'Vulcan,Klingon,Borg'; - assertEquals(explode(',', $text), array('Vulcan', 'Klingon', 'Borg'), 'split'); - assertEquals(explode(',', true ? $text : null), array('Vulcan', 'Klingon', 'Borg'), 'split order'); -} - -function lists_sort($list, $type, $direction) { - $sortCmpFuncs = array( - 'NUMERIC' => 'strnatcasecmp', - 'TEXT' => 'strcmp', - 'IGNORE_CASE' => 'strcasecmp' - ); - $sortCmp = $sortCmpFuncs[$type]; - $list2 = $list; - usort($list2, $sortCmp); - if ($direction == -1) { - $list2 = array_reverse($list2); - } - return $list2; -} - -// Tests the "alphabetic sort" block. -function test_sort_alphabetic() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Vulcan', 'klingon', 'Borg'); - assertEquals(lists_sort($list2, "TEXT", 1), array('Borg', 'Vulcan', 'klingon'), 'sort alphabetic ascending'); - assertEquals(lists_sort(true ? $list2 : null, "TEXT", 1), array('Borg', 'Vulcan', 'klingon'), 'sort alphabetic ascending order'); -} - -// Tests the "alphabetic sort ignore case" block. -function test_sort_ignoreCase() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array('Vulcan', 'klingon', 'Borg'); - assertEquals(lists_sort($list2, "IGNORE_CASE", 1), array('Borg', 'klingon', 'Vulcan'), 'sort ignore case ascending'); - assertEquals(lists_sort(true ? $list2 : null, "IGNORE_CASE", 1), array('Borg', 'klingon', 'Vulcan'), 'sort ignore case ascending order'); -} - -// Tests the "numeric sort" block. -function test_sort_numeric() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array(8, 18, -1); - assertEquals(lists_sort($list2, "NUMERIC", -1), array(18, 8, -1), 'sort numeric descending'); - assertEquals(lists_sort(true ? $list2 : null, "NUMERIC", -1), array(18, 8, -1), 'sort numeric descending order'); -} - -// Tests the "list reverse" block. -function test_lists_reverse() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $list2 = array(8, 18, -1, 64); - assertEquals(array_reverse($list2), array(64, -1, 18, 8), 'reverse a copy'); - assertEquals($list2, array(8, 18, -1, 64), 'reverse a copy original'); - $list2 = array(); - assertEquals(array_reverse($list2), array(), 'empty list'); -} - -// Describe this function... -function test_colour_picker() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals('#ff6600', '#ff6600', 'static colour'); -} - -function colour_rgb($r, $g, $b) { - $r = round(max(min($r, 100), 0) * 2.55); - $g = round(max(min($g, 100), 0) * 2.55); - $b = round(max(min($b, 100), 0) * 2.55); - $hex = '#'; - $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT); - $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT); - $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT); - return $hex; -} - -// Describe this function... -function test_rgb() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(colour_rgb(100, 40, 0), '#ff6600', 'from rgb'); -} - -function colour_random() { - return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT); -} - -// Describe this function... -function test_colour_random() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - for ($count4 = 0; $count4 < 100; $count4++) { - $item = colour_random(); - assertEquals(length($item), 7, 'length of random colour string: ' . $item); - assertEquals(substr($item, 0, 1), '#', 'format of random colour string: ' . $item); - for ($i = 1; $i <= 6; $i++) { - assertEquals(0 != text_indexOf('abcdefABDEF0123456789', substr($item, (($i + 1) - 1), 1)), true, implode('', array('contents of random colour string: ',$item,' at index: ',$i + 1))); - } - } -} - -function colour_blend($c1, $c2, $ratio) { - $ratio = max(min($ratio, 1), 0); - $r1 = hexdec(substr($c1, 1, 2)); - $g1 = hexdec(substr($c1, 3, 2)); - $b1 = hexdec(substr($c1, 5, 2)); - $r2 = hexdec(substr($c2, 1, 2)); - $g2 = hexdec(substr($c2, 3, 2)); - $b2 = hexdec(substr($c2, 5, 2)); - $r = round($r1 * (1 - $ratio) + $r2 * $ratio); - $g = round($g1 * (1 - $ratio) + $g2 * $ratio); - $b = round($b1 * (1 - $ratio) + $b2 * $ratio); - $hex = '#'; - $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT); - $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT); - $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT); - return $hex; -} - -// Describe this function... -function test_blend() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(colour_blend('#ff0000', colour_rgb(100, 40, 0), 0.4), '#ff2900', 'blend'); -} - -// Describe this function... -function test_procedure() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - procedure_1(8, 2); - assertEquals($proc_z, 4, 'procedure with global'); - $proc_w = false; - procedure_2(false); - assertEquals($proc_w, true, 'procedure no return'); - $proc_w = false; - procedure_2(true); - assertEquals($proc_w, false, 'procedure return'); -} - -// Describe this function... -function procedure_1($proc_x, $proc_y) { - global $test_name, $naked, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $proc_z = $proc_x / $proc_y; -} - -// Describe this function... -function procedure_2($proc_x) { - global $test_name, $naked, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - if ($proc_x) { - return; - } - $proc_w = true; -} - -// Describe this function... -function test_function() { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - assertEquals(function_1(2, 3), -1, 'function with arguments'); - assertEquals($func_z, 'side effect', 'function with side effect'); - $func_a = 'unchanged'; - $func_c = 'global'; - assertEquals(function_2(2), '3global', 'function with global'); - assertEquals($func_a, 'unchanged', 'function with scope'); - assertEquals(function_3(true), true, 'function return'); - assertEquals(function_3(false), false, 'function no return'); -} - -// Describe this function... -function function_1($func_x, $func_y) { - global $test_name, $naked, $proc_x, $proc_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $func_z = 'side effect'; - return $func_x - $func_y; -} - -// Describe this function... -function function_2($func_a) { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - $func_a += 1; - return $func_a . $func_c; -} - -// Describe this function... -function function_3($func_a) { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - if ($func_a) { - return true; - } - return false; -} - -// Describe this function... -function recurse($n) { - global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; - if ($n > 0) { - $text = implode('', array(recurse($n - 1),$n,recurse($n - 1))); - } else { - $text = '-'; - } - return $text; -} - - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Logic\n"); -assertEquals(true, true, 'True'); -assertEquals(false, false, 'False'); -assertEquals(!false, true, 'Not true'); -assertEquals(!true, false, 'Not false'); -test_if(); -test_ifelse(); -test_equalities(); -test_and(); -test_or(); -test_ternary(); -print(unittest_report()); -$unittestResults = null; - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Loops 1\n"); -test_repeat(); -test_repeat_ext(); -test_while(); -test_foreach(); -print(unittest_report()); -$unittestResults = null; - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Loops 2\n"); -test_count_loops(); -test_count_by(); -print(unittest_report()); -$unittestResults = null; - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Loops 3\n"); -test_break(); -test_continue(); -print(unittest_report()); -$unittestResults = null; - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Math\n"); -test_arithmetic(); -test_single(); -test_trig(); -test_constant(); -test_change(); -test_number_properties(); -test_round(); -test_operations_on_list(); -test_constraint(); -test_mod(); -test_random_integer(); -test_random_fraction(); -test_atan2(); -print(unittest_report()); -$unittestResults = null; - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Text\n"); -test_text_length(); -test_empty_text(); -test_create_text(); -test_append(); -test_find_text_simple(); -test_find_text_complex(); -test_get_text_simple(); -test_get_text_complex(); -test_substring_simple(); -test_substring_complex(); -test_case(); -test_trim(); -test_count_text(); -test_text_reverse(); -test_replace(); -test_multiline(); -print(unittest_report()); -$unittestResults = null; - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Lists\n"); -test_create_lists(); -test_lists_empty(); -test_lists_length(); -test_find_lists_simple(); -test_find_lists_complex(); -test_get_lists_simple(); -test_get_lists_create_list(); -test_get_lists_complex(); -test_getRemove(); -test_remove(); -test_set(); -test_insert(); -test_sublist_simple(); -test_sublist_complex(); -test_join(); -test_split(); -test_sort_alphabetic(); -test_sort_ignoreCase(); -test_sort_numeric(); -test_lists_reverse(); -print(unittest_report()); -$unittestResults = null; - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Colour\n"); -test_colour_picker(); -test_blend(); -test_rgb(); -test_colour_random(); -print(unittest_report()); -$unittestResults = null; - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Variables\n"); -$item = 123; -assertEquals($item, 123, 'variable'); -$if2 = 123; -assertEquals($if2, 123, 'reserved variable'); -print(unittest_report()); -$unittestResults = null; - -// Intentionally non-connected variable. -$naked; - -$unittestResults = array(); -print("\n====================\n\nRunning suite: Functions\n"); -test_procedure(); -test_function(); -assertEquals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse'); -print(unittest_report()); -$unittestResults = null; +function unittest_report() { + global $unittestResults; + // Create test report. + $report = array(); + $summary = array(); + $fails = 0; + for ($x = 0; $x < count($unittestResults); $x++) { + if ($unittestResults[$x][0]) { + array_push($summary, "."); + } else { + array_push($summary, "F"); + $fails++; + array_push($report, ""); + array_push($report, "FAIL: " . $unittestResults[$x][2]); + array_push($report, $unittestResults[$x][1]); + } + } + array_unshift($report, implode("", $summary)); + array_push($report, ""); + array_push($report, "Number of tests run: " . count($unittestResults)); + array_push($report, ""); + if ($fails) { + array_push($report, "FAILED (failures=" . $fails . ")"); + } else { + array_push($report, "OK"); + } + return implode("\n", $report); +} + +function assertEquals($actual, $expected, $message) { + global $unittestResults; + // Asserts that a value equals another value. + if (!is_array($unittestResults)) { + throw new Exception("Orphaned assert: " . $message); + } + if ($actual == $expected) { + array_push($unittestResults, [true, "OK", $message]); + } else { + $expected = is_array($expected) ? implode(" ", $expected) : $expected; + $actual = is_array($actual) ? implode(" ", $actual) : $actual; + array_push($unittestResults, [false, "Expected: " . $expected . "\nActual: " . $actual, $message]); + } +} + +function unittest_fail($message) { + global $unittestResults; + // Always assert an error. + if (!$unittestResults) { + throw new Exception("Orphaned assert fail: " . $message); + } + array_push($unittestResults, [false, "Fail.", $message]); +} + +// Describe this function... +function test_if() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + if (false) { + unittest_fail('if false'); + } + $ok = false; + if (true) { + $ok = true; + } + assertEquals($ok, true, 'if true'); + $ok = false; + if (false) { + unittest_fail('if/else false'); + } else { + $ok = true; + } + assertEquals($ok, true, 'if/else false'); + $ok = false; + if (true) { + $ok = true; + } else { + unittest_fail('if/else true'); + } + assertEquals($ok, true, 'if/else true'); + $ok = false; + if (false) { + unittest_fail('elseif 1'); + } else if (true) { + $ok = true; + } else if (true) { + unittest_fail('elseif 2'); + } else { + unittest_fail('elseif 3'); + } + assertEquals($ok, true, 'elseif 4'); +} + +// Describe this function... +function test_ifelse() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $ok = false; + if (true) { + $ok = true; + } else { + unittest_fail('ifelse true'); + } + assertEquals($ok, true, 'ifelse true'); + $ok = false; + if (false) { + unittest_fail('ifelse false'); + } else { + $ok = true; + } + assertEquals($ok, true, 'ifelse false'); +} + +// Describe this function... +function test_equalities() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(2 == 2, true, 'Equal yes'); + assertEquals(3 == 4, false, 'Equal no'); + assertEquals(5 != 6, true, 'Not equal yes'); + assertEquals(3 == 4, false, 'Not equal no'); + assertEquals(5 < 6, true, 'Smaller yes'); + assertEquals(7 < 7, false, 'Smaller no'); + assertEquals(9 > 8, true, 'Greater yes'); + assertEquals(10 > 10, false, 'Greater no'); + assertEquals(11 <= 11, true, 'Smaller-equal yes'); + assertEquals(13 <= 12, false, 'Smaller-equal no'); + assertEquals(14 >= 14, true, 'Greater-equal yes'); + assertEquals(15 >= 16, false, 'Greater-equal no'); +} + +// Describe this function... +function test_and() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(true && true, true, 'And true/true'); + assertEquals(false && true, false, 'And false/true'); + assertEquals(true && false, false, 'And true/false'); + assertEquals(false && false, false, 'And false/false'); +} + +// Describe this function... +function test_or() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(true || true, true, 'Or true/true'); + assertEquals(false || true, true, 'Or false/true'); + assertEquals(true || false, true, 'Or true/false'); + assertEquals(false || false, false, 'Or false/false'); +} + +// Describe this function... +function test_ternary() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(true ? 42 : 99, 42, 'if true'); + assertEquals(false ? 42 : 99, 99, 'if true'); +} + +// Describe this function... +function test_foreach() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $log = ''; + foreach (array('a', 'b', 'c') as $x) { + $log .= $x; + } + assertEquals($log, 'abc', 'for loop'); +} + +// Describe this function... +function test_repeat() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $count = 0; + for ($count2 = 0; $count2 < 10; $count2++) { + $count += 1; + } + assertEquals($count, 10, 'repeat 10'); +} + +// Describe this function... +function test_while() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + while (false) { + unittest_fail('while 0'); + } + while (!true) { + unittest_fail('until 0'); + } + $count = 1; + while ($count != 10) { + $count += 1; + } + assertEquals($count, 10, 'while 10'); + $count = 1; + while (!($count == 10)) { + $count += 1; + } + assertEquals($count, 10, 'until 10'); +} + +// Describe this function... +function test_repeat_ext() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $count = 0; + for ($count3 = 0; $count3 < 10; $count3++) { + $count += 1; + } + assertEquals($count, 10, 'repeat 10'); +} + +// Describe this function... +function test_count_by() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $log = ''; + for ($x = 1; $x <= 8; $x += 2) { + $log .= $x; + } + assertEquals($log, '1357', 'count up ints'); + $log = ''; + for ($x = 8; $x >= 1; $x -= 2) { + $log .= $x; + } + assertEquals($log, '8642', 'count down ints'); + $loglist = array(); + for ($x = 1; $x <= 8; $x += 1.5) { + array_push($loglist, $x); + } + assertEquals($loglist, array(1, 2.5, 4, 5.5, 7), 'count with floats'); + $loglist = array(); + $_x_start = 1 + 0; + $_x_end = 8 + 0; + $_x_inc = abs(1 - 2); + if ($_x_start > $_x_end) { + $_x_inc = -$_x_inc; + } + for ($x = $_x_start; $_x_inc >= 0 ? $x <= $_x_end : $x >= $_x_end; $x += $_x_inc) { + array_push($loglist, $x); + } + assertEquals($loglist, array(1, 2, 3, 4, 5, 6, 7, 8), 'count up non-trivial ints'); + $loglist = array(); + $_x_start2 = 8 + 0; + $_x_end2 = 1 + 0; + $_x_inc2 = 2; + if ($_x_start2 > $_x_end2) { + $_x_inc2 = -$_x_inc2; + } + for ($x = $_x_start2; $_x_inc2 >= 0 ? $x <= $_x_end2 : $x >= $_x_end2; $x += $_x_inc2) { + array_push($loglist, $x); + } + assertEquals($loglist, array(8, 6, 4, 2), 'count down non-trivial ints'); + $loglist = array(); + $_x_start3 = 5 + 0.5; + $_x_end3 = 1 + 0; + $_x_inc3 = abs(1 + 0); + if ($_x_start3 > $_x_end3) { + $_x_inc3 = -$_x_inc3; + } + for ($x = $_x_start3; $_x_inc3 >= 0 ? $x <= $_x_end3 : $x >= $_x_end3; $x += $_x_inc3) { + array_push($loglist, $x); + } + assertEquals($loglist, array(5.5, 4.5, 3.5, 2.5, 1.5), 'count with floats'); +} + +// Describe this function... +function test_count_loops() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $log = ''; + for ($x = 1; $x <= 8; $x++) { + $log .= $x; + } + assertEquals($log, '12345678', 'count up'); + $log = ''; + for ($x = 8; $x >= 1; $x--) { + $log .= $x; + } + assertEquals($log, '87654321', 'count down'); + $loglist = array(); + $_x_start4 = 1 + 0; + $_x_end4 = 4 + 0; + $_x_inc4 = 1; + if ($_x_start4 > $_x_end4) { + $_x_inc4 = -$_x_inc4; + } + for ($x = $_x_start4; $_x_inc4 >= 0 ? $x <= $_x_end4 : $x >= $_x_end4; $x += $_x_inc4) { + array_push($loglist, $x); + } + assertEquals($loglist, array(1, 2, 3, 4), 'count up non-trivial'); + $loglist = array(); + $_x_start5 = 3 + 1; + $_x_end5 = 1 + 0; + $_x_inc5 = 1; + if ($_x_start5 > $_x_end5) { + $_x_inc5 = -$_x_inc5; + } + for ($x = $_x_start5; $_x_inc5 >= 0 ? $x <= $_x_end5 : $x >= $_x_end5; $x += $_x_inc5) { + array_push($loglist, $x); + } + assertEquals($loglist, array(4, 3, 2, 1), 'count down non-trivial'); +} + +// Describe this function... +function test_continue() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $log = ''; + $count = 0; + while ($count != 8) { + $count += 1; + if ($count == 5) { + continue; + } + $log .= $count; + } + assertEquals($log, '1234678', 'while continue'); + $log = ''; + $count = 0; + while (!($count == 8)) { + $count += 1; + if ($count == 5) { + continue; + } + $log .= $count; + } + assertEquals($log, '1234678', 'until continue'); + $log = ''; + for ($x = 1; $x <= 8; $x++) { + if ($x == 5) { + continue; + } + $log .= $x; + } + assertEquals($log, '1234678', 'count continue'); + $log = ''; + foreach (array('a', 'b', 'c', 'd') as $x) { + if ($x == 'c') { + continue; + } + $log .= $x; + } + assertEquals($log, 'abd', 'for continue'); +} + +// Describe this function... +function test_break() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $count = 1; + while ($count != 10) { + if ($count == 5) { + break; + } + $count += 1; + } + assertEquals($count, 5, 'while break'); + $count = 1; + while (!($count == 10)) { + if ($count == 5) { + break; + } + $count += 1; + } + assertEquals($count, 5, 'until break'); + $log = ''; + for ($x = 1; $x <= 8; $x++) { + if ($x == 5) { + break; + } + $log .= $x; + } + assertEquals($log, '1234', 'count break'); + $log = ''; + foreach (array('a', 'b', 'c', 'd') as $x) { + if ($x == 'c') { + break; + } + $log .= $x; + } + assertEquals($log, 'ab', 'for break'); +} + +// Tests the "single" block. +function test_single() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(sqrt(25), 5, 'sqrt'); + assertEquals(abs(-25), 25, 'abs'); + assertEquals(-(-25), 25, 'negate'); + assertEquals(log(1), 0, 'ln'); + assertEquals(log(100) / log(10), 2, 'log10'); + assertEquals(exp(2), 7.38905609893065, 'exp'); + assertEquals(pow(10,2), 100, 'power10'); +} + +// Tests the "arithmetic" block for all operations and checks +// parenthesis are properly generated for different orders. +function test_arithmetic() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(1 + 2, 3, 'add'); + assertEquals(1 - 2, -1, 'subtract'); + assertEquals(1 - (0 + 2), -1, 'subtract order with add'); + assertEquals(1 - (0 - 2), 3, 'subtract order with subtract'); + assertEquals(4 * 2.5, 10, 'multiply'); + assertEquals(4 * (0 + 2.5), 10, 'multiply order'); + assertEquals(8.2 / -5, -1.64, 'divide'); + assertEquals(8.2 / (0 + -5), -1.64, 'divide order'); + assertEquals(10 ** 4, 10000, 'power'); + assertEquals(10 ** (0 + 4), 10000, 'power order'); +} + +// Tests the "trig" block. +function test_trig() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(sin(90 / 180 * pi()), 1, 'sin'); + assertEquals(cos(180 / 180 * pi()), -1, 'cos'); + assertEquals(tan(0 / 180 * pi()), 0, 'tan'); + assertEquals(asin(-1) / pi() * 180, -90, 'asin'); + assertEquals(acos(1) / pi() * 180, 0, 'acos'); + assertEquals(atan(1) / pi() * 180, 45, 'atan'); +} + +// Tests the "constant" blocks. +function test_constant() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(floor(M_PI * 1000), 3141, 'const pi'); + assertEquals(floor(M_E * 1000), 2718, 'const e'); + assertEquals(floor(((1 + sqrt(5)) / 2) * 1000), 1618, 'const golden'); + assertEquals(floor(M_SQRT2 * 1000), 1414, 'const sqrt 2'); + assertEquals(floor(M_SQRT1_2 * 1000), 707, 'const sqrt 0.5'); + assertEquals(9999 < INF, true, 'const infinity'); +} + +function math_isPrime($n) { + // https://en.wikipedia.org/wiki/Primality_test#Naive_methods + if ($n == 2 || $n == 3) { + return true; + } + // False if n is NaN, negative, is 1, or not whole. + // And false if n is divisible by 2 or 3. + if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) { + return false; + } + // Check all the numbers of form 6k +/- 1, up to sqrt(n). + for ($x = 6; $x <= sqrt($n) + 1; $x += 6) { + if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) { + return false; + } + } + return true; +} + +// Tests the "number property" blocks. +function test_number_properties() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(42 % 2 == 0, true, 'even'); + assertEquals(42.1 % 2 == 1, false, 'odd'); + assertEquals(math_isPrime(5), true, 'prime 5'); + assertEquals(math_isPrime(5 + 2), true, 'prime 5 + 2 (extra parentheses)'); + assertEquals(math_isPrime(25), false, 'prime 25'); + assertEquals(math_isPrime(-31.1), false, 'prime negative'); + assertEquals(is_int(M_PI), false, 'whole'); + assertEquals(INF > 0, true, 'positive'); + assertEquals(5 + 2 > 0, true, '5 + 2 is positive (extra parentheses)'); + assertEquals(-42 < 0, true, 'negative'); + assertEquals(3 + 2 < 0, false, '3 + 2 is negative (extra parentheses)'); + assertEquals(42 % 2 == 0, true, 'divisible'); + assertEquals(!false, true, 'divisible by 0'); +} + +// Tests the "round" block. +function test_round() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(round(42.42), 42, 'round'); + assertEquals(ceil(-42.42), -42, 'round up'); + assertEquals(floor(42.42), 42, 'round down'); +} + +// Tests the "change" block. +function test_change() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $varToChange = 100; + $varToChange += 42; + assertEquals($varToChange, 142, 'change'); +} + +function math_mean($myList) { + return array_sum($myList) / count($myList); +} + +function math_median($arr) { + sort($arr,SORT_NUMERIC); + return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] : + ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2; +} + +function math_modes($values) { + if (empty($values)) return array(); + $counts = array_count_values($values); + arsort($counts); // Sort counts in descending order + $modes = array_keys($counts, current($counts), true); + return $modes; +} + +function math_standard_deviation($numbers) { + $n = count($numbers); + if (!$n) return null; + $mean = array_sum($numbers) / count($numbers); + foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2); + return sqrt(array_sum($devs) / (count($devs) - 1)); +} + +function math_random_list($list) { + $x = rand(0, count($list)-1); + return $list[$x]; +} + +function indexOf($haystack, $needle) { + for ($index = 0; $index < count($haystack); $index++) { + if ($haystack[$index] == $needle) return $index + 1; + } + return 0; +} + +// Tests the "list operation" blocks. +function test_operations_on_list() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(array_sum((array(3, 4, 5))), 12, 'sum'); + assertEquals(min((array(3, 4, 5))), 3, 'min'); + assertEquals(max((array(3, 4, 5))), 5, 'max'); + assertEquals(math_mean(array(3, 4, 5)), 4, 'average'); + assertEquals(math_median(array(3, 4, 5, 1)), 3.5, 'median'); + assertEquals(math_modes(array(3, 4, 3)), array(3), 'modes'); + assertEquals(math_modes(array(3, 4, 3, 1, 4)), array(3, 4), 'modes multiple'); + assertEquals(math_standard_deviation(array(3, 3, 3)), 0, 'standard dev'); + assertEquals(indexOf(array(3, 4, 5), math_random_list(array(3, 4, 5))) > 0, true, 'random'); +} + +// Tests the "mod" block. +function test_mod() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(42 % 5, 2, 'mod'); +} + +// Tests the "constrain" block. +function test_constraint() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(min(max(100, 0), 42), 42, 'constraint'); +} + +function math_random_int($a, $b) { + if ($a > $b) { + return rand($b, $a); + } + return rand($a, $b); +} + +// Tests the "random integer" block. +function test_random_integer() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $rand = math_random_int(5, 10); + assertEquals($rand >= 5 && $rand <= 10, true, 'randRange'); + assertEquals(is_int($rand), true, 'randInteger'); +} + +// Tests the "random fraction" block. +function test_random_fraction() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $rand = (float)rand()/(float)getrandmax(); + assertEquals($rand >= 0 && $rand <= 1, true, 'randFloat'); +} + +// Describe this function... +function test_atan2() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(atan2(5, -5) / pi() * 180, 135, 'atan2'); + assertEquals(atan2(-12, 0) / pi() * 180, -90, 'atan2'); +} + +// Checks that the number of calls is one in order +// to confirm that a function was only called once. +function check_number_of_calls($test_name) { + global $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $test_name .= 'number of calls'; + assertEquals($number_of_calls, 1, $test_name); +} + +// Tests the "create text with" block with varying number of inputs. +function test_create_text() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals('', '', 'no text'); + assertEquals('Hello', 'Hello', 'create single'); + assertEquals(-1, '-1', 'create single number'); + assertEquals('K' . 9, 'K9', 'create double text'); + assertEquals(4 . 2, '42', 'create double text numbers'); + assertEquals(implode('', array(1,2,3)), '123', 'create triple'); + assertEquals(implode('', array(1,true ? 0 : null,'M')), '10M', 'create order'); +} + +// Creates an empty string for use with the empty test. +function get_empty() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + return ''; +} + +// Tests the "is empty" block". +function test_empty_text() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(empty('Google'), false, 'not empty'); + assertEquals(empty(''), true, 'empty'); + assertEquals(empty(get_empty()), true, 'empty complex'); + assertEquals(empty(true ? '' : null), true, 'empty order'); +} + +function length($value) { + if (is_string($value)) { + return strlen($value); + } + return count($value); +} + +// Tests the "length" block. +function test_text_length() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(length(''), 0, 'zero length'); + assertEquals(length('Google'), 6, 'non-zero length'); + assertEquals(length(true ? 'car' : null), 3, 'length order'); +} + +// Tests the "append text" block with different types of parameters. +function test_append() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $item = 'Miserable'; + $item .= 'Failure'; + assertEquals($item, 'MiserableFailure', 'append text'); + $item = 12; + $item .= 34; + assertEquals($item, '1234', 'append number'); + $item = 'Something '; + $item .= true ? 'Positive' : null; + assertEquals($item, 'Something Positive', 'append order'); +} + +function text_indexOf($text, $search) { + $pos = strpos($text, $search); + return $pos === false ? 0 : $pos + 1; +} + +function text_lastIndexOf($text, $search) { + $pos = strrpos($text, $search); + return $pos === false ? 0 : $pos + 1; +} + +// Tests the "find" block with a variable. +function test_find_text_simple() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $text = 'Banana'; + assertEquals(text_indexOf($text, 'an'), 2, 'find first simple'); + assertEquals(text_lastIndexOf($text, 'an'), 4, 'find last simple'); + assertEquals(text_indexOf($text, 'Peel'), 0, 'find none simple'); +} + +// Creates a string for use with the find test. +function get_fruit() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls += 1; + return 'Banana'; +} + +// Tests the "find" block with a function call. +function test_find_text_complex() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls = 0; + assertEquals(text_indexOf(get_fruit(), 'an'), 2, 'find first complex'); + check_number_of_calls('find first complex'); + $number_of_calls = 0; + assertEquals(text_indexOf(true ? get_fruit() : null, 'an'), 2, 'find first order complex'); + check_number_of_calls('find first order complex'); + $number_of_calls = 0; + assertEquals(text_lastIndexOf(get_fruit(), 'an'), 4, 'find last complex'); + check_number_of_calls('find last complex'); + $number_of_calls = 0; + assertEquals(text_lastIndexOf(true ? get_fruit() : null, 'an'), 4, 'find last order complex'); + check_number_of_calls('find last order complex'); + $number_of_calls = 0; + assertEquals(text_indexOf(get_fruit(), 'Peel'), 0, 'find none complex'); + check_number_of_calls('find none complex'); + $number_of_calls = 0; + assertEquals(text_indexOf(true ? get_fruit() : null, 'Peel'), 0, 'find none order complex'); + check_number_of_calls('find none order complex'); +} + +function text_random_letter($text) { + return $text[rand(0, strlen($text) - 1)]; +} + +// Tests the "get letter" block with a variable. +function test_get_text_simple() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $text = 'Blockly'; + assertEquals(substr($text, 0, 1), 'B', 'get first simple'); + assertEquals(substr($text, -1), 'y', 'get last simple'); + assertEquals(text_indexOf($text, text_random_letter($text)) > 0, true, 'get random simple'); + assertEquals(substr($text, 2, 1), 'o', 'get # simple'); + assertEquals(substr($text, ((true ? 3 : null) - 1), 1), 'o', 'get # order simple'); + assertEquals(substr($text, -3, 1), 'k', 'get #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(substr($text, (-(0 + 3)), 1), 'k', 'get #-end order simple'); +} + +// Creates a string for use with the get test. +function get_Blockly() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls += 1; + return 'Blockly'; +} + +// Tests the "get letter" block with a function call. +function test_get_text_complex() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $text = 'Blockly'; + $number_of_calls = 0; + assertEquals(substr(get_Blockly(), 0, 1), 'B', 'get first complex'); + check_number_of_calls('get first complex'); + $number_of_calls = 0; + assertEquals(substr(true ? get_Blockly() : null, 0, 1), 'B', 'get first order complex'); + check_number_of_calls('get first order complex'); + $number_of_calls = 0; + assertEquals(substr(get_Blockly(), -1), 'y', 'get last complex'); + check_number_of_calls('get last complex'); + $number_of_calls = 0; + assertEquals(substr(true ? get_Blockly() : null, -1), 'y', 'get last order complex'); + check_number_of_calls('get last order complex'); + $number_of_calls = 0; + assertEquals(text_indexOf($text, text_random_letter(get_Blockly())) > 0, true, 'get random complex'); + check_number_of_calls('get random complex'); + $number_of_calls = 0; + assertEquals(text_indexOf($text, text_random_letter(true ? get_Blockly() : null)) > 0, true, 'get random order complex'); + check_number_of_calls('get random order complex'); + $number_of_calls = 0; + assertEquals(substr(get_Blockly(), 2, 1), 'o', 'get # complex'); + check_number_of_calls('get # complex'); + $number_of_calls = 0; + assertEquals(substr(true ? get_Blockly() : null, ((true ? 3 : null) - 1), 1), 'o', 'get # order complex'); + check_number_of_calls('get # order complex'); + $number_of_calls = 0; + assertEquals(substr(get_Blockly(), -3, 1), 'k', 'get #-end complex'); + check_number_of_calls('get #-end complex'); + $number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(substr(true ? get_Blockly() : null, (-(0 + 3)), 1), 'k', 'get #-end order complex'); + check_number_of_calls('get #-end order complex'); +} + +// Creates a string for use with the substring test. +function get_numbers() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls += 1; + return '123456789'; +} + +function text_get_substring($text, $where1, $at1, $where2, $at2) { + if ($where1 == 'FROM_END') { + $at1 = strlen($text) - 1 - $at1; + } else if ($where1 == 'FIRST') { + $at1 = 0; + } else if ($where1 != 'FROM_START') { + throw new Exception('Unhandled option (text_get_substring).'); + } + $length = 0; + if ($where2 == 'FROM_START') { + $length = $at2 - $at1 + 1; + } else if ($where2 == 'FROM_END') { + $length = strlen($text) - $at1 - $at2; + } else if ($where2 == 'LAST') { + $length = strlen($text) - $at1; + } else { + throw new Exception('Unhandled option (text_get_substring).'); + } + return substr($text, $at1, $length); +} + +// Tests the "get substring" block with a variable. +function test_substring_simple() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $text = '123456789'; + assertEquals(text_get_substring($text, 'FROM_START', 1, 'FROM_START', 2), '23', 'substring # simple'); + assertEquals(text_get_substring($text, 'FROM_START', ((true ? 2 : null) - 1), 'FROM_START', ((true ? 3 : null) - 1)), '23', 'substring # simple order'); + assertEquals(text_get_substring($text, 'FROM_END', 2, 'FROM_END', 1), '78', 'substring #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(text_get_substring($text, 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), '78', 'substring #-end simple order'); + assertEquals($text, $text, 'substring first-last simple'); + assertEquals(text_get_substring($text, 'FROM_START', 1, 'FROM_END', 1), '2345678', 'substring # #-end simple'); + assertEquals(text_get_substring($text, 'FROM_END', 6, 'FROM_START', 3), '34', 'substring #-end # simple'); + assertEquals(text_get_substring($text, 'FIRST', 0, 'FROM_START', 3), '1234', 'substring first # simple'); + assertEquals(text_get_substring($text, 'FIRST', 0, 'FROM_END', 1), '12345678', 'substring first #-end simple'); + assertEquals(text_get_substring($text, 'FROM_START', 6, 'LAST', 0), '789', 'substring # last simple'); + assertEquals(text_get_substring($text, 'FROM_END', 2, 'LAST', 0), '789', 'substring #-end last simple'); + assertEquals(text_get_substring($text, 'FROM_START', 0, 'FROM_END', 0), '123456789', 'substring all with # #-end simple'); + assertEquals(text_get_substring($text, 'FROM_END', 8, 'FROM_START', 8), '123456789', 'substring all with #-end # simple'); + // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + assertEquals(text_get_substring($text, 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), '123456789', 'substring all with # #-end math simple'); +} + +// Tests the "get substring" block with a function call. +function test_substring_complex() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls = 0; + assertEquals(text_get_substring(get_numbers(), 'FROM_START', 1, 'FROM_START', 2), '23', 'substring # complex'); + check_number_of_calls('substring # complex'); + $number_of_calls = 0; + assertEquals(text_get_substring(true ? get_numbers() : null, 'FROM_START', ((true ? 2 : null) - 1), 'FROM_START', ((true ? 3 : null) - 1)), '23', 'substring # complex order'); + check_number_of_calls('substring # complex order'); + $number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(text_get_substring(get_numbers(), 'FROM_END', 2, 'FROM_END', 1), '78', 'substring #-end complex'); + check_number_of_calls('substring #-end complex'); + $number_of_calls = 0; + assertEquals(text_get_substring(true ? get_numbers() : null, 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), '78', 'substring #-end order order'); + check_number_of_calls('substring #-end order order'); + $number_of_calls = 0; + assertEquals(get_numbers(), $text, 'substring first-last'); + check_number_of_calls('substring first-last'); + $number_of_calls = 0; + assertEquals(text_get_substring(get_numbers(), 'FROM_START', 1, 'FROM_END', 1), '2345678', 'substring # #-end complex'); + check_number_of_calls('substring # #-end complex'); + $number_of_calls = 0; + assertEquals(text_get_substring(get_numbers(), 'FROM_END', 6, 'FROM_START', 3), '34', 'substring #-end # complex'); + check_number_of_calls('substring #-end # complex'); + $number_of_calls = 0; + assertEquals(text_get_substring(get_numbers(), 'FIRST', 0, 'FROM_START', 3), '1234', 'substring first # complex'); + check_number_of_calls('substring first # complex'); + $number_of_calls = 0; + assertEquals(text_get_substring(get_numbers(), 'FIRST', 0, 'FROM_END', 1), '12345678', 'substring first #-end complex'); + check_number_of_calls('substring first #-end complex'); + $number_of_calls = 0; + assertEquals(text_get_substring(get_numbers(), 'FROM_START', 6, 'LAST', 0), '789', 'substring # last complex'); + check_number_of_calls('substring # last complex'); + $number_of_calls = 0; + assertEquals(text_get_substring(get_numbers(), 'FROM_END', 2, 'LAST', 0), '789', 'substring #-end last complex'); + check_number_of_calls('substring #-end last complex'); + $number_of_calls = 0; + assertEquals(text_get_substring(get_numbers(), 'FROM_START', 0, 'FROM_END', 0), '123456789', 'substring all with # #-end complex'); + check_number_of_calls('substring all with # #-end complex'); + $number_of_calls = 0; + assertEquals(text_get_substring(get_numbers(), 'FROM_END', 8, 'FROM_START', 8), '123456789', 'substring all with #-end # complex'); + check_number_of_calls('substring all with #-end # complex'); + $number_of_calls = 0; + // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + assertEquals(text_get_substring(get_numbers(), 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), '123456789', 'substring all with # #-end math complex'); + check_number_of_calls('substring all with # #-end math complex'); +} + +// Tests the "change casing" block. +function test_case() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $text = 'Hello World'; + assertEquals(strtoupper($text), 'HELLO WORLD', 'uppercase'); + assertEquals(strtoupper(true ? $text : null), 'HELLO WORLD', 'uppercase order'); + $text = 'Hello World'; + assertEquals(strtolower($text), 'hello world', 'lowercase'); + assertEquals(strtolower(true ? $text : null), 'hello world', 'lowercase order'); + $text = 'heLLo WorlD'; + assertEquals(ucwords(strtolower($text)), 'Hello World', 'titlecase'); + assertEquals(ucwords(strtolower(true ? $text : null)), 'Hello World', 'titlecase order'); +} + +// Tests the "trim" block. +function test_trim() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $text = ' abc def '; + assertEquals(trim($text), 'abc def', 'trim both'); + assertEquals(trim(true ? $text : null), 'abc def', 'trim both order'); + assertEquals(ltrim($text), 'abc def ', 'trim left'); + assertEquals(ltrim(true ? $text : null), 'abc def ', 'trim left order'); + assertEquals(rtrim($text), ' abc def', 'trim right'); + assertEquals(rtrim(true ? $text : null), ' abc def', 'trim right order'); +} + +// Tests the "trim" block. +function test_count_text() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $text = 'woolloomooloo'; + assertEquals(strlen('o') === 0 ? strlen($text) + 1 : substr_count($text, 'o'), 8, 'len 1'); + assertEquals(strlen('oo') === 0 ? strlen($text) + 1 : substr_count($text, 'oo'), 4, 'len 2'); + assertEquals(strlen('loo') === 0 ? strlen($text) + 1 : substr_count($text, 'loo'), 2, 'len 3'); + assertEquals(strlen('wool') === 0 ? strlen($text) + 1 : substr_count($text, 'wool'), 1, 'start'); + assertEquals(strlen('chicken') === 0 ? strlen($text) + 1 : substr_count($text, 'chicken'), 0, 'missing'); + assertEquals(strlen('') === 0 ? strlen($text) + 1 : substr_count($text, ''), 14, 'empty needle'); + assertEquals(strlen('chicken') === 0 ? strlen('') + 1 : substr_count('', 'chicken'), 0, 'empty source'); +} + +// Tests the "trim" block. +function test_text_reverse() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(strrev(''), '', 'empty string'); + assertEquals(strrev('a'), 'a', 'len 1'); + assertEquals(strrev('ab'), 'ba', 'len 2'); + assertEquals(strrev('woolloomooloo'), 'ooloomoolloow', 'longer'); +} + +// Tests the "trim" block. +function test_replace() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(str_replace('oo', '123', 'woolloomooloo'), 'w123ll123m123l123', 'replace all instances 1'); + assertEquals(str_replace('.oo', 'X', 'woolloomooloo'), 'woolloomooloo', 'literal string replacement'); + assertEquals(str_replace('abc', 'X', 'woolloomooloo'), 'woolloomooloo', 'not found'); + assertEquals(str_replace('o', '', 'woolloomooloo'), 'wllml', 'empty replacement 1'); + assertEquals(str_replace('aaaaa', '', 'aaaaa'), '', 'empty replacement 2'); + assertEquals(str_replace('a', '', 'aaaaa'), '', 'empty replacement 3'); + assertEquals(str_replace('a', 'chicken', ''), '', 'empty source'); +} + +// Tests the "multiline" block. +function test_multiline() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals('', '', 'no text'); + assertEquals('Google', 'Google', 'simple'); + assertEquals('paragraph' . "\n" . + 'with newlines' . "\n" . + 'yup', 'paragraph' . "\n" . + 'with newlines' . "\n" . + 'yup', 'no compile error with newlines'); + assertEquals(strlen('bark') === 0 ? strlen('bark bark' . "\n" . + 'bark bark bark' . "\n" . + 'bark bark bark bark') + 1 : substr_count('bark bark' . "\n" . + 'bark bark bark' . "\n" . + 'bark bark bark bark', 'bark'), 9, 'count with newlines'); +} + +// Checks that the number of calls is one in order +// to confirm that a function was only called once. +function check_number_of_calls2($test_name) { + global $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $test_name .= 'number of calls'; + assertEquals($number_of_calls, 1, $test_name); +} + +function lists_repeat($value, $count) { + $array = array(); + for ($index = 0; $index < $count; $index++) { + $array[] = $value; + } + return $array; +} + +// Tests the "create list with" and "create empty list" blocks. +function test_create_lists() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(array(), array(), 'create empty'); + assertEquals(array(true, 'love'), array(true, 'love'), 'create items'); + assertEquals(lists_repeat('Eject', 3), array('Eject', 'Eject', 'Eject'), 'create repeated'); + assertEquals(lists_repeat('Eject', 0 + 3), array('Eject', 'Eject', 'Eject'), 'create repeated order'); +} + +// Creates an empty list for use with the empty test. +function get_empty_list() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + return array(); +} + +// Tests the "is empty" block. +function test_lists_empty() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(empty((array(0))), false, 'not empty'); + assertEquals(empty((array())), true, 'empty'); + assertEquals(empty((get_empty_list())), true, 'empty complex'); + assertEquals(empty((true ? array() : null)), true, 'empty order'); +} + +// Tests the "length" block. +function test_lists_length() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(length(array()), 0, 'zero length'); + assertEquals(length(array('cat')), 1, 'one length'); + assertEquals(length(array('cat', true, array())), 3, 'three length'); + assertEquals(length(true ? array('cat', true) : null), 2, 'two length order'); +} + +function lastIndexOf($haystack, $needle) { + $last = 0; + for ($index = 0; $index < count($haystack); $index++) { + if ($haystack[$index] == $needle) $last = $index + 1; + } + return $last; +} + +// Tests the "find" block with a variable. +function test_find_lists_simple() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Alice', 'Eve', 'Bob', 'Eve'); + assertEquals(indexOf($list2, 'Eve'), 2, 'find first simple'); + assertEquals(lastIndexOf($list2, 'Eve'), 4, 'find last simple'); + assertEquals(indexOf($list2, 'Dave'), 0, 'find none simple'); +} + +// Creates a list for use with the find test. +function get_names() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls += 1; + return array('Alice', 'Eve', 'Bob', 'Eve'); +} + +// Tests the "find" block with a function call. +function test_find_lists_complex() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls = 0; + assertEquals(indexOf(get_names(), 'Eve'), 2, 'find first complex'); + check_number_of_calls('find first complex'); + $number_of_calls = 0; + assertEquals(indexOf((true ? get_names() : null), 'Eve'), 2, 'find first order complex'); + check_number_of_calls('find first order complex'); + $number_of_calls = 0; + assertEquals(lastIndexOf(get_names(), 'Eve'), 4, 'find last complex'); + check_number_of_calls('find last complex'); + $number_of_calls = 0; + assertEquals(lastIndexOf((true ? get_names() : null), 'Eve'), 4, 'find last order complex'); + check_number_of_calls('find last order complex'); + $number_of_calls = 0; + assertEquals(indexOf(get_names(), 'Dave'), 0, 'find none complex'); + check_number_of_calls('find none complex'); + $number_of_calls = 0; + assertEquals(indexOf((true ? get_names() : null), 'Dave'), 0, 'find none order complex'); + check_number_of_calls('find none order complex'); +} + +function lists_get_random_item($list) { + return $list[rand(0,count($list)-1)]; +} + +// Tests the "get" block with a variable. +function test_get_lists_simple() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals($list2[0], 'Kirk', 'get first simple'); + assertEquals(end($list2), 'McCoy', 'get last simple'); + assertEquals(indexOf($list2, lists_get_random_item($list2)) > 0, true, 'get random simple'); + assertEquals($list2[1], 'Spock', 'get # simple'); + assertEquals($list2[((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); + assertEquals(array_slice($list2, -3, 1)[0], 'Kirk', 'get #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(array_slice($list2, (-(0 + 3)), 1)[0], 'Kirk', 'get #-end order simple'); +} + +// Tests the "get" block with create list call. +function test_get_lists_create_list() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(array('Kirk', 'Spock', 'McCoy')[0], 'Kirk', 'get first create list'); + assertEquals(end(array('Kirk', 'Spock', 'McCoy')), 'McCoy', 'get last simple'); + assertEquals(indexOf(array('Kirk', 'Spock', 'McCoy'), lists_get_random_item(array('Kirk', 'Spock', 'McCoy'))) > 0, true, 'get random simple'); + assertEquals(array('Kirk', 'Spock', 'McCoy')[1], 'Spock', 'get # simple'); + assertEquals(array('Kirk', 'Spock', 'McCoy')[((true ? 2 : null) - 1)], 'Spock', 'get # order simple'); + assertEquals(array_slice(array('Kirk', 'Spock', 'McCoy'), -3, 1)[0], 'Kirk', 'get #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(array_slice(array('Kirk', 'Spock', 'McCoy'), (-(0 + 3)), 1)[0], 'Kirk', 'get #-end order simple'); +} + +// Creates a list for use with the get test. +function get_star_wars() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls += 1; + return array('Kirk', 'Spock', 'McCoy'); +} + +// Tests the "get" block with a function call. +function test_get_lists_complex() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Kirk', 'Spock', 'McCoy'); + $number_of_calls = 0; + assertEquals(get_star_wars()[0], 'Kirk', 'get first complex'); + check_number_of_calls('get first complex'); + $number_of_calls = 0; + assertEquals((true ? get_star_wars() : null)[0], 'Kirk', 'get first order complex'); + check_number_of_calls('get first order complex'); + $number_of_calls = 0; + assertEquals(end(get_star_wars()), 'McCoy', 'get last complex'); + check_number_of_calls('get last complex'); + $number_of_calls = 0; + assertEquals(end(true ? get_star_wars() : null), 'McCoy', 'get last order complex'); + check_number_of_calls('get last order complex'); + $number_of_calls = 0; + assertEquals(indexOf($list2, lists_get_random_item(get_star_wars())) > 0, true, 'get random complex'); + check_number_of_calls('get random complex'); + $number_of_calls = 0; + assertEquals(indexOf($list2, lists_get_random_item(true ? get_star_wars() : null)) > 0, true, 'get random order complex'); + check_number_of_calls('get random order complex'); + $number_of_calls = 0; + assertEquals(get_star_wars()[1], 'Spock', 'get # complex'); + check_number_of_calls('get # complex'); + $number_of_calls = 0; + assertEquals((true ? get_star_wars() : null)[((true ? 2 : null) - 1)], 'Spock', 'get # order complex'); + check_number_of_calls('get # order complex'); + $number_of_calls = 0; + assertEquals(array_slice(get_star_wars(), -3, 1)[0], 'Kirk', 'get #-end complex'); + check_number_of_calls('get #-end complex'); + $number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(array_slice(true ? get_star_wars() : null, (-(0 + 3)), 1)[0], 'Kirk', 'get #-end order complex'); + check_number_of_calls('get #-end order complex'); +} + +function lists_get_remove_random_item(&$list) { + $x = rand(0,count($list)-1); + unset($list[$x]); + return array_values($list); +} + +// Tests the "get and remove" block. +function test_getRemove() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals(array_shift($list2), 'Kirk', 'getremove first'); + assertEquals($list2, array('Spock', 'McCoy'), 'getremove first list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals(array_shift(true ? $list2 : null), 'Kirk', 'getremove first order'); + assertEquals($list2, array('Spock', 'McCoy'), 'getremove first order list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals(array_pop($list2), 'McCoy', 'getremove last'); + assertEquals($list2, array('Kirk', 'Spock'), 'getremove last list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals(array_pop(true ? $list2 : null), 'McCoy', 'getremove last order'); + assertEquals($list2, array('Kirk', 'Spock'), 'getremove last order list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals(indexOf($list2, lists_get_remove_random_item($list2)) == 0, true, 'getremove random'); + assertEquals(length($list2), 2, 'getremove random list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals(indexOf($list2, lists_get_remove_random_item(true ? $list2 : null)) == 0, true, 'getremove random order'); + assertEquals(length($list2), 2, 'getremove random order list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals(array_splice($list2, 1, 1)[0], 'Spock', 'getremove #'); + assertEquals($list2, array('Kirk', 'McCoy'), 'getremove # list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals(array_splice(true ? $list2 : null, ((true ? 2 : null) - 1), 1)[0], 'Spock', 'getremove # order'); + assertEquals($list2, array('Kirk', 'McCoy'), 'getremove # order list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + assertEquals(array_splice($list2, count($list2) - 3, 1)[0], 'Kirk', 'getremove #-end'); + assertEquals($list2, array('Spock', 'McCoy'), 'getremove #-end list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(array_splice(true ? $list2 : null, count(true ? $list2 : null) - (0 + 3), 1)[0], 'Kirk', 'getremove #-end order'); + assertEquals($list2, array('Spock', 'McCoy'), 'getremove #-end order list'); +} + +function lists_remove_random_item(&$list) { + unset($list[rand(0,count($list)-1)]); +} + +// Tests the "remove" block. +function test_remove() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Kirk', 'Spock', 'McCoy'); + array_shift($list2); + assertEquals($list2, array('Spock', 'McCoy'), 'remove first list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + array_shift(true ? $list2 : null); + assertEquals($list2, array('Spock', 'McCoy'), 'remove first order list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + array_pop($list2); + assertEquals($list2, array('Kirk', 'Spock'), 'remove last list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + array_pop(true ? $list2 : null); + assertEquals($list2, array('Kirk', 'Spock'), 'remove last order list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + lists_remove_random_item($list2); + assertEquals(length($list2), 2, 'remove random list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + lists_remove_random_item(true ? $list2 : null); + assertEquals(length($list2), 2, 'remove random order list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + array_splice($list2, 1, 1); + assertEquals($list2, array('Kirk', 'McCoy'), 'remove # list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + array_splice(true ? $list2 : null, ((true ? 2 : null) - 1), 1); + assertEquals($list2, array('Kirk', 'McCoy'), 'remove # order list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + array_splice($list2, count($list2) - 3, 1)[0]; + assertEquals($list2, array('Spock', 'McCoy'), 'remove #-end list'); + $list2 = array('Kirk', 'Spock', 'McCoy'); + // The order for index for #-end is addition because this will catch + // errors in generators where most perform the operation ... - index. + array_splice(true ? $list2 : null, count(true ? $list2 : null) - (0 + 3), 1)[0]; + assertEquals($list2, array('Spock', 'McCoy'), 'remove #-end order list'); +} + +function lists_set_last_item(&$list, $value) { + $list[count($list) - 1] = $value; +} + +function lists_set_from_end(&$list, $at, $value) { + $list[count($list) - $at] = $value; +} + +// Tests the "set" block. +function test_set() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Picard', 'Riker', 'Crusher'); + $list2[0] = 'Jean-Luc'; + assertEquals($list2, array('Jean-Luc', 'Riker', 'Crusher'), 'set first list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + (true ? $list2 : null)[0] = 'Jean-Luc'; + assertEquals($list2, array('Jean-Luc', 'Riker', 'Crusher'), 'set first order list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + lists_set_last_item($list2, 'Beverly'); + assertEquals($list2, array('Picard', 'Riker', 'Beverly'), 'set last list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + lists_set_last_item(true ? $list2 : null, 'Beverly'); + assertEquals($list2, array('Picard', 'Riker', 'Beverly'), 'set last order list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + $tmp_x = rand(0, count($list2)-1); + $list2[$tmp_x] = 'Data'; + assertEquals(length($list2), 3, 'set random list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + $tmp_list = &(true ? $list2 : null); + $tmp_x2 = rand(0, count($tmp_list)-1); + $tmp_list[$tmp_x2] = 'Data'; + assertEquals(length($list2), 3, 'set random order list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + $list2[2] = 'Pulaski'; + assertEquals($list2, array('Picard', 'Riker', 'Pulaski'), 'set # list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + (true ? $list2 : null)[((true ? 3 : null) - 1)] = 'Pulaski'; + assertEquals($list2, array('Picard', 'Riker', 'Pulaski'), 'set # order list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + lists_set_from_end($list2, 1, 'Pulaski'); + assertEquals($list2, array('Picard', 'Riker', 'Pulaski'), 'set #-end list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + // The order for index for #-end is addition because this will catch + // errors in generators where most perform the operation ... - index. + lists_set_from_end(true ? $list2 : null, 0 + 2, 'Pulaski'); + assertEquals($list2, array('Picard', 'Pulaski', 'Crusher'), 'set #-end order list'); +} + +function lists_insert_from_end(&$list, $at, $value) { + return array_splice($list, count($list) - $at, 0, $value); +} + +// Tests the "insert" block. +function test_insert() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Picard', 'Riker', 'Crusher'); + array_unshift($list2, 'Data'); + assertEquals($list2, array('Data', 'Picard', 'Riker', 'Crusher'), 'insert first list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + array_unshift(true ? $list2 : null, 'Data'); + assertEquals($list2, array('Data', 'Picard', 'Riker', 'Crusher'), 'insert first order list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + array_push($list2, 'Data'); + assertEquals($list2, array('Picard', 'Riker', 'Crusher', 'Data'), 'insert last list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + array_push(true ? $list2 : null, 'Data'); + assertEquals($list2, array('Picard', 'Riker', 'Crusher', 'Data'), 'insert last order list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + $tmp_x3 = rand(0, count($list2)-1); + array_splice($list2, $tmp_x3, 0, 'Data'); + assertEquals(length($list2), 4, 'insert random list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + $tmp_list2 = &(true ? $list2 : null); + $tmp_x4 = rand(0, count($tmp_list2)-1); + array_splice($tmp_list2, $tmp_x4, 0, 'Data'); + assertEquals(length($list2), 4, 'insert random order list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + array_splice($list2, 2, 0, 'Data'); + assertEquals($list2, array('Picard', 'Riker', 'Data', 'Crusher'), 'insert # list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + array_splice(true ? $list2 : null, ((true ? 3 : null) - 1), 0, 'Data'); + assertEquals($list2, array('Picard', 'Riker', 'Data', 'Crusher'), 'insert # order list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + lists_insert_from_end($list2, 1, 'Data'); + assertEquals($list2, array('Picard', 'Riker', 'Data', 'Crusher'), 'insert #-end list'); + $list2 = array('Picard', 'Riker', 'Crusher'); + // The order for index for #-end is addition because this will catch + // errors in generators where most perform the operation ... - index. + lists_insert_from_end(true ? $list2 : null, 0 + 2, 'Data'); + assertEquals($list2, array('Picard', 'Data', 'Riker', 'Crusher'), 'insert #-end order list'); +} + +// Tests the "get sub-list" block with a variable. +function test_sublist_simple() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'); + assertEquals(array_slice($list2, 1, 2 - 1 + 1), array('Challenger', 'Discovery'), 'sublist # simple'); + assertEquals(array_slice($list2, ((true ? 2 : null) - 1), ((true ? 3 : null) - 1) - ((true ? 2 : null) - 1) + 1), array('Challenger', 'Discovery'), 'sublist # simple order'); + assertEquals(array_slice($list2, count($list2) - 3, count($list2) - 1 - (count($list2) - 3)), array('Discovery', 'Atlantis'), 'sublist #-end simple'); + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(array_slice($list2, count($list2) - (0 + 3), count($list2) - ((0 + 2) - 1) - (count($list2) - (0 + 3))), array('Discovery', 'Atlantis'), 'sublist #-end simple order'); + assertEquals($list2, $list2, 'sublist first-last simple'); + $changing_list = array('Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'); + $list_copy = $changing_list; + lists_remove_random_item($changing_list); + assertEquals($list_copy, $list2, 'sublist first-last simple copy check'); + assertEquals(array_slice($list2, 1, count($list2) - 1 - 1), array('Challenger', 'Discovery', 'Atlantis'), 'sublist # #-end simple'); + assertEquals(array_slice($list2, count($list2) - 3, 3 - (count($list2) - 3) + 1), array('Discovery', 'Atlantis'), 'sublist #-end # simple'); + assertEquals(array_slice($list2, 0, 3 - 0 + 1), array('Columbia', 'Challenger', 'Discovery', 'Atlantis'), 'sublist first # simple'); + assertEquals(array_slice($list2, 0, count($list2) - 3 - 0), array('Columbia', 'Challenger'), 'sublist first #-end simple'); + assertEquals(array_slice($list2, 3, count($list2) - 3), array('Atlantis', 'Endeavour'), 'sublist # last simple'); + assertEquals(array_slice($list2, count($list2) - 4, count($list2) - (count($list2) - 4)), array('Challenger', 'Discovery', 'Atlantis', 'Endeavour'), 'sublist #-end last simple'); + assertEquals(array_slice($list2, 0, count($list2) - 0 - 0), $list2, 'sublist all with # #-end simple'); + assertEquals(array_slice($list2, count($list2) - 5, 4 - (count($list2) - 5) + 1), $list2, 'sublist all with #-end # simple'); + // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + assertEquals(array_slice($list2, ((0 + 1) - 1), count($list2) - ((0 + 1) - 1) - ((0 + 1) - 1)), $list2, 'sublist all with # #-end math simple'); +} + +// Creates a list for use with the sublist test. +function get_space_shuttles() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls += 1; + return array('Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'); +} + +function lists_get_sublist($list, $where1, $at1, $where2, $at2) { + if ($where1 == 'FROM_END') { + $at1 = count($list) - 1 - $at1; + } else if ($where1 == 'FIRST') { + $at1 = 0; + } else if ($where1 != 'FROM_START') { + throw new Exception('Unhandled option (lists_get_sublist).'); + } + $length = 0; + if ($where2 == 'FROM_START') { + $length = $at2 - $at1 + 1; + } else if ($where2 == 'FROM_END') { + $length = count($list) - $at1 - $at2; + } else if ($where2 == 'LAST') { + $length = count($list) - $at1; + } else { + throw new Exception('Unhandled option (lists_get_sublist).'); + } + return array_slice($list, $at1, $length); +} + +// Tests the "get sub-list" block with a function call. +function test_sublist_complex() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $number_of_calls = 0; + assertEquals(array_slice(get_space_shuttles(), 1, 2 - 1 + 1), array('Challenger', 'Discovery'), 'sublist # start complex'); + check_number_of_calls('sublist # start complex'); + $number_of_calls = 0; + assertEquals(array_slice(true ? get_space_shuttles() : null, ((true ? 2 : null) - 1), ((true ? 3 : null) - 1) - ((true ? 2 : null) - 1) + 1), array('Challenger', 'Discovery'), 'sublist # start order complex'); + check_number_of_calls('sublist # start order complex'); + $number_of_calls = 0; + // The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_END', 2, 'FROM_END', 1), array('Discovery', 'Atlantis'), 'sublist # end complex'); + assertEquals($number_of_calls, 1, 'sublist # end complex number of calls'); + $number_of_calls = 0; + assertEquals(lists_get_sublist(true ? get_space_shuttles() : null, 'FROM_END', ((0 + 3) - 1), 'FROM_END', ((0 + 2) - 1)), array('Discovery', 'Atlantis'), 'sublist # end order complex'); + check_number_of_calls('sublist # end order complex'); + $number_of_calls = 0; + assertEquals(get_space_shuttles(), $list2, 'sublist first-last complex'); + check_number_of_calls('sublist first-last complex'); + $number_of_calls = 0; + assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_START', 1, 'FROM_END', 1), array('Challenger', 'Discovery', 'Atlantis'), 'sublist # #-end complex'); + check_number_of_calls('sublist # #-end complex'); + $number_of_calls = 0; + assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_END', 2, 'FROM_START', 3), array('Discovery', 'Atlantis'), 'sublist #-end # complex'); + check_number_of_calls('sublist #-end # complex'); + $number_of_calls = 0; + assertEquals(array_slice(get_space_shuttles(), 0, 3 - 0 + 1), array('Columbia', 'Challenger', 'Discovery', 'Atlantis'), 'sublist first # complex'); + check_number_of_calls('sublist first # complex'); + $number_of_calls = 0; + assertEquals(lists_get_sublist(get_space_shuttles(), 'FIRST', 0, 'FROM_END', 3), array('Columbia', 'Challenger'), 'sublist first #-end complex'); + check_number_of_calls('sublist first #-end complex'); + $number_of_calls = 0; + assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_START', 3, 'LAST', 0), array('Atlantis', 'Endeavour'), 'sublist # last complex'); + check_number_of_calls('sublist # last complex'); + $number_of_calls = 0; + assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_END', 3, 'LAST', 0), array('Challenger', 'Discovery', 'Atlantis', 'Endeavour'), 'sublist #-end last simple'); + check_number_of_calls('sublist #-end last simple'); + $number_of_calls = 0; + assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_START', 0, 'FROM_END', 0), $list2, 'sublist all with # #-end complex'); + check_number_of_calls('sublist all with # #-end complex'); + $number_of_calls = 0; + assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_END', 4, 'FROM_START', 4), $list2, 'sublist all with #-end # complex'); + check_number_of_calls('sublist all with #-end # complex'); + $number_of_calls = 0; + // Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + assertEquals(lists_get_sublist(get_space_shuttles(), 'FROM_START', ((0 + 1) - 1), 'FROM_END', ((0 + 1) - 1)), $list2, 'sublist all with # #-end math complex'); + check_number_of_calls('sublist all with # #-end math complex'); +} + +// Tests the "join" block. +function test_join() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Vulcan', 'Klingon', 'Borg'); + assertEquals(implode(',', $list2), 'Vulcan,Klingon,Borg', 'join'); + assertEquals(implode(',', true ? $list2 : null), 'Vulcan,Klingon,Borg', 'join order'); +} + +// Tests the "split" block. +function test_split() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $text = 'Vulcan,Klingon,Borg'; + assertEquals(explode(',', $text), array('Vulcan', 'Klingon', 'Borg'), 'split'); + assertEquals(explode(',', true ? $text : null), array('Vulcan', 'Klingon', 'Borg'), 'split order'); +} + +function lists_sort($list, $type, $direction) { + $sortCmpFuncs = array( + 'NUMERIC' => 'strnatcasecmp', + 'TEXT' => 'strcmp', + 'IGNORE_CASE' => 'strcasecmp' + ); + $sortCmp = $sortCmpFuncs[$type]; + $list2 = $list; + usort($list2, $sortCmp); + if ($direction == -1) { + $list2 = array_reverse($list2); + } + return $list2; +} + +// Tests the "alphabetic sort" block. +function test_sort_alphabetic() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Vulcan', 'klingon', 'Borg'); + assertEquals(lists_sort($list2, "TEXT", 1), array('Borg', 'Vulcan', 'klingon'), 'sort alphabetic ascending'); + assertEquals(lists_sort(true ? $list2 : null, "TEXT", 1), array('Borg', 'Vulcan', 'klingon'), 'sort alphabetic ascending order'); +} + +// Tests the "alphabetic sort ignore case" block. +function test_sort_ignoreCase() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array('Vulcan', 'klingon', 'Borg'); + assertEquals(lists_sort($list2, "IGNORE_CASE", 1), array('Borg', 'klingon', 'Vulcan'), 'sort ignore case ascending'); + assertEquals(lists_sort(true ? $list2 : null, "IGNORE_CASE", 1), array('Borg', 'klingon', 'Vulcan'), 'sort ignore case ascending order'); +} + +// Tests the "numeric sort" block. +function test_sort_numeric() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array(8, 18, -1); + assertEquals(lists_sort($list2, "NUMERIC", -1), array(18, 8, -1), 'sort numeric descending'); + assertEquals(lists_sort(true ? $list2 : null, "NUMERIC", -1), array(18, 8, -1), 'sort numeric descending order'); +} + +// Tests the "list reverse" block. +function test_lists_reverse() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $list2 = array(8, 18, -1, 64); + assertEquals(array_reverse($list2), array(64, -1, 18, 8), 'reverse a copy'); + assertEquals($list2, array(8, 18, -1, 64), 'reverse a copy original'); + $list2 = array(); + assertEquals(array_reverse($list2), array(), 'empty list'); +} + +// Describe this function... +function test_colour_picker() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals('#ff6600', '#ff6600', 'static colour'); +} + +function colour_rgb($r, $g, $b) { + $r = round(max(min($r, 100), 0) * 2.55); + $g = round(max(min($g, 100), 0) * 2.55); + $b = round(max(min($b, 100), 0) * 2.55); + $hex = '#'; + $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT); + $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT); + $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT); + return $hex; +} + +// Describe this function... +function test_rgb() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(colour_rgb(100, 40, 0), '#ff6600', 'from rgb'); +} + +function colour_random() { + return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT); +} + +// Describe this function... +function test_colour_random() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + for ($count4 = 0; $count4 < 100; $count4++) { + $item = colour_random(); + assertEquals(length($item), 7, 'length of random colour string: ' . $item); + assertEquals(substr($item, 0, 1), '#', 'format of random colour string: ' . $item); + for ($i = 1; $i <= 6; $i++) { + assertEquals(0 != text_indexOf('abcdefABDEF0123456789', substr($item, (($i + 1) - 1), 1)), true, implode('', array('contents of random colour string: ',$item,' at index: ',$i + 1))); + } + } +} + +function colour_blend($c1, $c2, $ratio) { + $ratio = max(min($ratio, 1), 0); + $r1 = hexdec(substr($c1, 1, 2)); + $g1 = hexdec(substr($c1, 3, 2)); + $b1 = hexdec(substr($c1, 5, 2)); + $r2 = hexdec(substr($c2, 1, 2)); + $g2 = hexdec(substr($c2, 3, 2)); + $b2 = hexdec(substr($c2, 5, 2)); + $r = round($r1 * (1 - $ratio) + $r2 * $ratio); + $g = round($g1 * (1 - $ratio) + $g2 * $ratio); + $b = round($b1 * (1 - $ratio) + $b2 * $ratio); + $hex = '#'; + $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT); + $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT); + $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT); + return $hex; +} + +// Describe this function... +function test_blend() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(colour_blend('#ff0000', colour_rgb(100, 40, 0), 0.4), '#ff2900', 'blend'); +} + +// Describe this function... +function test_procedure() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + procedure_1(8, 2); + assertEquals($proc_z, 4, 'procedure with global'); + $proc_w = false; + procedure_2(false); + assertEquals($proc_w, true, 'procedure no return'); + $proc_w = false; + procedure_2(true); + assertEquals($proc_w, false, 'procedure return'); +} + +// Describe this function... +function procedure_1($proc_x, $proc_y) { + global $test_name, $naked, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $proc_z = $proc_x / $proc_y; +} + +// Describe this function... +function procedure_2($proc_x) { + global $test_name, $naked, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + if ($proc_x) { + return; + } + $proc_w = true; +} + +// Describe this function... +function test_function() { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + assertEquals(function_1(2, 3), -1, 'function with arguments'); + assertEquals($func_z, 'side effect', 'function with side effect'); + $func_a = 'unchanged'; + $func_c = 'global'; + assertEquals(function_2(2), '3global', 'function with global'); + assertEquals($func_a, 'unchanged', 'function with scope'); + assertEquals(function_3(true), true, 'function return'); + assertEquals(function_3(false), false, 'function no return'); +} + +// Describe this function... +function function_1($func_x, $func_y) { + global $test_name, $naked, $proc_x, $proc_y, $func_a, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $func_z = 'side effect'; + return $func_x - $func_y; +} + +// Describe this function... +function function_2($func_a) { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + $func_a += 1; + return $func_a . $func_c; +} + +// Describe this function... +function function_3($func_a) { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $n, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + if ($func_a) { + return true; + } + return false; +} + +// Describe this function... +function recurse($n) { + global $test_name, $naked, $proc_x, $proc_y, $func_x, $func_y, $func_a, $ok, $log, $count, $varToChange, $rand, $item, $text, $number_of_calls, $list2, $proc_z, $func_z, $x, $proc_w, $func_c, $if2, $i, $loglist, $changing_list, $list_copy, $unittestResults; + if ($n > 0) { + $text = implode('', array(recurse($n - 1),$n,recurse($n - 1))); + } else { + $text = '-'; + } + return $text; +} + + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Logic\n"); +assertEquals(true, true, 'True'); +assertEquals(false, false, 'False'); +assertEquals(!false, true, 'Not true'); +assertEquals(!true, false, 'Not false'); +test_if(); +test_ifelse(); +test_equalities(); +test_and(); +test_or(); +test_ternary(); +print(unittest_report()); +$unittestResults = null; + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Loops 1\n"); +test_repeat(); +test_repeat_ext(); +test_while(); +test_foreach(); +print(unittest_report()); +$unittestResults = null; + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Loops 2\n"); +test_count_loops(); +test_count_by(); +print(unittest_report()); +$unittestResults = null; + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Loops 3\n"); +test_break(); +test_continue(); +print(unittest_report()); +$unittestResults = null; + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Math\n"); +test_arithmetic(); +test_single(); +test_trig(); +test_constant(); +test_change(); +test_number_properties(); +test_round(); +test_operations_on_list(); +test_constraint(); +test_mod(); +test_random_integer(); +test_random_fraction(); +test_atan2(); +print(unittest_report()); +$unittestResults = null; + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Text\n"); +test_text_length(); +test_empty_text(); +test_create_text(); +test_append(); +test_find_text_simple(); +test_find_text_complex(); +test_get_text_simple(); +test_get_text_complex(); +test_substring_simple(); +test_substring_complex(); +test_case(); +test_trim(); +test_count_text(); +test_text_reverse(); +test_replace(); +test_multiline(); +print(unittest_report()); +$unittestResults = null; + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Lists\n"); +test_create_lists(); +test_lists_empty(); +test_lists_length(); +test_find_lists_simple(); +test_find_lists_complex(); +test_get_lists_simple(); +test_get_lists_create_list(); +test_get_lists_complex(); +test_getRemove(); +test_remove(); +test_set(); +test_insert(); +test_sublist_simple(); +test_sublist_complex(); +test_join(); +test_split(); +test_sort_alphabetic(); +test_sort_ignoreCase(); +test_sort_numeric(); +test_lists_reverse(); +print(unittest_report()); +$unittestResults = null; + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Colour\n"); +test_colour_picker(); +test_blend(); +test_rgb(); +test_colour_random(); +print(unittest_report()); +$unittestResults = null; + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Variables\n"); +$item = 123; +assertEquals($item, 123, 'variable'); +$if2 = 123; +assertEquals($if2, 123, 'reserved variable'); +print(unittest_report()); +$unittestResults = null; + +// Intentionally non-connected variable. +$naked; + +$unittestResults = array(); +print("\n====================\n\nRunning suite: Functions\n"); +test_procedure(); +test_function(); +assertEquals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse'); +print(unittest_report()); +$unittestResults = null; diff --git a/tests/generators/golden/generated.py b/tests/generators/golden/generated.py index 28a673b7492..fc2490115fb 100644 --- a/tests/generators/golden/generated.py +++ b/tests/generators/golden/generated.py @@ -1,1473 +1,1473 @@ -from numbers import Number -import math -import random -import sys - -unittestResults = None -test_name = None -naked = None -proc_x = None -proc_y = None -func_x = None -func_y = None -func_a = None -n = None -ok = None -log = None -count = None -varToChange = None -rand = None -item = None -text = None -number_of_calls = None -list2 = None -proc_z = None -func_z = None -x = None -proc_w = None -func_c = None -if2 = None -i = None -loglist = None -changing_list = None -list_copy = None - -def unittest_report(): - # Create test report. - report = [] - summary = [] - fails = 0 - for (success, log, message) in unittestResults: - if success: - summary.append(".") - else: - summary.append("F") - fails += 1 - report.append("") - report.append("FAIL: " + message) - report.append(log) - report.insert(0, "".join(summary)) - report.append("") - report.append("Number of tests run: %d" % len(unittestResults)) - report.append("") - if fails: - report.append("FAILED (failures=%d)" % fails) - else: - report.append("OK") - return "\n".join(report) - -def assertEquals(actual, expected, message): - # Asserts that a value equals another value. - if unittestResults == None: - raise Exception("Orphaned assert equals: " + message) - if actual == expected: - unittestResults.append((True, "OK", message)) - else: - unittestResults.append((False, "Expected: %s\nActual: %s" % (expected, actual), message)) - -def fail(message): - # Always assert an error. - if unittestResults == None: - raise Exception("Orphaned assert equals: " + message) - unittestResults.append((False, "Fail.", message)) - -# Describe this function... -def test_if(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - if False: - fail('if false') - ok = False - if True: - ok = True - assertEquals(ok, True, 'if true') - ok = False - if False: - fail('if/else false') - else: - ok = True - assertEquals(ok, True, 'if/else false') - ok = False - if True: - ok = True - else: - fail('if/else true') - assertEquals(ok, True, 'if/else true') - ok = False - if False: - fail('elseif 1') - elif True: - ok = True - elif True: - fail('elseif 2') - else: - fail('elseif 3') - assertEquals(ok, True, 'elseif 4') - -# Describe this function... -def test_ifelse(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - ok = False - if True: - ok = True - else: - fail('ifelse true') - assertEquals(ok, True, 'ifelse true') - ok = False - if False: - fail('ifelse false') - else: - ok = True - assertEquals(ok, True, 'ifelse false') - -# Describe this function... -def test_equalities(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(2 == 2, True, 'Equal yes') - assertEquals(3 == 4, False, 'Equal no') - assertEquals(5 != 6, True, 'Not equal yes') - assertEquals(3 == 4, False, 'Not equal no') - assertEquals(5 < 6, True, 'Smaller yes') - assertEquals(7 < 7, False, 'Smaller no') - assertEquals(9 > 8, True, 'Greater yes') - assertEquals(10 > 10, False, 'Greater no') - assertEquals(11 <= 11, True, 'Smaller-equal yes') - assertEquals(13 <= 12, False, 'Smaller-equal no') - assertEquals(14 >= 14, True, 'Greater-equal yes') - assertEquals(15 >= 16, False, 'Greater-equal no') - -# Describe this function... -def test_and(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(True and True, True, 'And true/true') - assertEquals(False and True, False, 'And false/true') - assertEquals(True and False, False, 'And true/false') - assertEquals(False and False, False, 'And false/false') - -# Describe this function... -def test_or(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(True or True, True, 'Or true/true') - assertEquals(False or True, True, 'Or false/true') - assertEquals(True or False, True, 'Or true/false') - assertEquals(False or False, False, 'Or false/false') - -# Describe this function... -def test_ternary(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(42 if True else 99, 42, 'if true') - assertEquals(42 if False else 99, 99, 'if true') - -# Describe this function... -def test_foreach(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - log = '' - for x in ['a', 'b', 'c']: - log = str(log) + str(x) - assertEquals(log, 'abc', 'for loop') - -# Describe this function... -def test_repeat(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - count = 0 - for count2 in range(10): - count = (count if isinstance(count, Number) else 0) + 1 - assertEquals(count, 10, 'repeat 10') - -# Describe this function... -def test_while(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - while False: - fail('while 0') - while not True: - fail('until 0') - count = 1 - while count != 10: - count = (count if isinstance(count, Number) else 0) + 1 - assertEquals(count, 10, 'while 10') - count = 1 - while not count == 10: - count = (count if isinstance(count, Number) else 0) + 1 - assertEquals(count, 10, 'until 10') - -# Describe this function... -def test_repeat_ext(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - count = 0 - for count3 in range(10): - count = (count if isinstance(count, Number) else 0) + 1 - assertEquals(count, 10, 'repeat 10') - -def upRange(start, stop, step): - while start <= stop: - yield start - start += abs(step) - -def downRange(start, stop, step): - while start >= stop: - yield start - start -= abs(step) - -# Describe this function... -def test_count_by(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - log = '' - for x in range(1, 9, 2): - log = str(log) + str(x) - assertEquals(log, '1357', 'count up ints') - log = '' - for x in range(8, 0, -2): - log = str(log) + str(x) - assertEquals(log, '8642', 'count down ints') - loglist = [] - for x in upRange(1, 8, 1.5): - loglist.append(x) - assertEquals(loglist, [1, 2.5, 4, 5.5, 7], 'count with floats') - loglist = [] - x_start = float(1 + 0) - x_end = float(8 + 0) - x_inc = float(1 - 2) - for x in (x_start <= x_end) and upRange(x_start, x_end, x_inc) or downRange(x_start, x_end, x_inc): - loglist.append(x) - assertEquals(loglist, [1, 2, 3, 4, 5, 6, 7, 8], 'count up non-trivial ints') - loglist = [] - x_start2 = float(8 + 0) - x_end2 = float(1 + 0) - for x in (x_start2 <= x_end2) and upRange(x_start2, x_end2, 2) or downRange(x_start2, x_end2, 2): - loglist.append(x) - assertEquals(loglist, [8, 6, 4, 2], 'count down non-trivial ints') - loglist = [] - x_start3 = float(5 + 0.5) - x_end3 = float(1 + 0) - x_inc2 = float(1 + 0) - for x in (x_start3 <= x_end3) and upRange(x_start3, x_end3, x_inc2) or downRange(x_start3, x_end3, x_inc2): - loglist.append(x) - assertEquals(loglist, [5.5, 4.5, 3.5, 2.5, 1.5], 'count with floats') - -# Describe this function... -def test_count_loops(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - log = '' - for x in range(1, 9): - log = str(log) + str(x) - assertEquals(log, '12345678', 'count up') - log = '' - for x in range(8, 0, -1): - log = str(log) + str(x) - assertEquals(log, '87654321', 'count down') - loglist = [] - x_start4 = float(1 + 0) - x_end4 = float(4 + 0) - for x in (x_start4 <= x_end4) and upRange(x_start4, x_end4, 1) or downRange(x_start4, x_end4, 1): - loglist.append(x) - assertEquals(loglist, [1, 2, 3, 4], 'count up non-trivial') - loglist = [] - x_start5 = float(3 + 1) - x_end5 = float(1 + 0) - for x in (x_start5 <= x_end5) and upRange(x_start5, x_end5, 1) or downRange(x_start5, x_end5, 1): - loglist.append(x) - assertEquals(loglist, [4, 3, 2, 1], 'count down non-trivial') - -# Describe this function... -def test_continue(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - log = '' - count = 0 - while count != 8: - count = (count if isinstance(count, Number) else 0) + 1 - if count == 5: - continue - log = str(log) + str(count) - assertEquals(log, '1234678', 'while continue') - log = '' - count = 0 - while not count == 8: - count = (count if isinstance(count, Number) else 0) + 1 - if count == 5: - continue - log = str(log) + str(count) - assertEquals(log, '1234678', 'until continue') - log = '' - for x in range(1, 9): - if x == 5: - continue - log = str(log) + str(x) - assertEquals(log, '1234678', 'count continue') - log = '' - for x in ['a', 'b', 'c', 'd']: - if x == 'c': - continue - log = str(log) + str(x) - assertEquals(log, 'abd', 'for continue') - -# Describe this function... -def test_break(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - count = 1 - while count != 10: - if count == 5: - break - count = (count if isinstance(count, Number) else 0) + 1 - assertEquals(count, 5, 'while break') - count = 1 - while not count == 10: - if count == 5: - break - count = (count if isinstance(count, Number) else 0) + 1 - assertEquals(count, 5, 'until break') - log = '' - for x in range(1, 9): - if x == 5: - break - log = str(log) + str(x) - assertEquals(log, '1234', 'count break') - log = '' - for x in ['a', 'b', 'c', 'd']: - if x == 'c': - break - log = str(log) + str(x) - assertEquals(log, 'ab', 'for break') - -# Tests the "single" block. -def test_single(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(math.sqrt(25), 5, 'sqrt') - assertEquals(math.fabs(-25), 25, 'abs') - assertEquals(-(-25), 25, 'negate') - assertEquals(math.log(1), 0, 'ln') - assertEquals(math.log10(100), 2, 'log10') - assertEquals(math.exp(2), 7.38905609893065, 'exp') - assertEquals(math.pow(10,2), 100, 'power10') - -# Tests the "arithmetic" block for all operations and checks -# parenthesis are properly generated for different orders. -def test_arithmetic(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(1 + 2, 3, 'add') - assertEquals(1 - 2, -1, 'subtract') - assertEquals(1 - (0 + 2), -1, 'subtract order with add') - assertEquals(1 - (0 - 2), 3, 'subtract order with subtract') - assertEquals(4 * 2.5, 10, 'multiply') - assertEquals(4 * (0 + 2.5), 10, 'multiply order') - assertEquals(8.2 / -5, -1.64, 'divide') - assertEquals(8.2 / (0 + -5), -1.64, 'divide order') - assertEquals(10 ** 4, 10000, 'power') - assertEquals(10 ** (0 + 4), 10000, 'power order') - -# Tests the "trig" block. -def test_trig(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(math.sin(90 / 180.0 * math.pi), 1, 'sin') - assertEquals(math.cos(180 / 180.0 * math.pi), -1, 'cos') - assertEquals(math.tan(0 / 180.0 * math.pi), 0, 'tan') - assertEquals(math.asin(-1) / math.pi * 180, -90, 'asin') - assertEquals(math.acos(1) / math.pi * 180, 0, 'acos') - assertEquals(math.atan(1) / math.pi * 180, 45, 'atan') - -# Tests the "constant" blocks. -def test_constant(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(math.floor(math.pi * 1000), 3141, 'const pi') - assertEquals(math.floor(math.e * 1000), 2718, 'const e') - assertEquals(math.floor(((1 + math.sqrt(5)) / 2) * 1000), 1618, 'const golden') - assertEquals(math.floor(math.sqrt(2) * 1000), 1414, 'const sqrt 2') - assertEquals(math.floor(math.sqrt(1.0 / 2) * 1000), 707, 'const sqrt 0.5') - assertEquals(9999 < float('inf'), True, 'const infinity') - -def math_isPrime(n): - # https://en.wikipedia.org/wiki/Primality_test#Naive_methods - # If n is not a number but a string, try parsing it. - if not isinstance(n, Number): - try: - n = float(n) - except: - return False - if n == 2 or n == 3: - return True - # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3. - if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0: - return False - # Check all the numbers of form 6k +/- 1, up to sqrt(n). - for x in range(6, int(math.sqrt(n)) + 2, 6): - if n % (x - 1) == 0 or n % (x + 1) == 0: - return False - return True - -# Tests the "number property" blocks. -def test_number_properties(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(42 % 2 == 0, True, 'even') - assertEquals(42.1 % 2 == 1, False, 'odd') - assertEquals(math_isPrime(5), True, 'prime 5') - assertEquals(math_isPrime(5 + 2), True, 'prime 5 + 2 (extra parentheses)') - assertEquals(math_isPrime(25), False, 'prime 25') - assertEquals(math_isPrime(-31.1), False, 'prime negative') - assertEquals(math.pi % 1 == 0, False, 'whole') - assertEquals(float('inf') > 0, True, 'positive') - assertEquals(5 + 2 > 0, True, '5 + 2 is positive (extra parentheses)') - assertEquals(-42 < 0, True, 'negative') - assertEquals(3 + 2 < 0, False, '3 + 2 is negative (extra parentheses)') - assertEquals(42 % 2 == 0, True, 'divisible') - assertEquals(not False, True, 'divisible by 0') - -# Tests the "round" block. -def test_round(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(round(42.42), 42, 'round') - assertEquals(math.ceil(-42.42), -42, 'round up') - assertEquals(math.floor(42.42), 42, 'round down') - -# Tests the "change" block. -def test_change(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - varToChange = 100 - varToChange = (varToChange if isinstance(varToChange, Number) else 0) + 42 - assertEquals(varToChange, 142, 'change') - -def math_mean(myList): - localList = [e for e in myList if isinstance(e, Number)] - if not localList: return - return float(sum(localList)) / len(localList) - -def math_median(myList): - localList = sorted([e for e in myList if isinstance(e, Number)]) - if not localList: return - if len(localList) % 2 == 0: - return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0 - else: - return localList[(len(localList) - 1) // 2] - -def math_modes(some_list): - modes = [] - # Using a lists of [item, count] to keep count rather than dict - # to avoid "unhashable" errors when the counted item is itself a list or dict. - counts = [] - maxCount = 1 - for item in some_list: - found = False - for count in counts: - if count[0] == item: - count[1] += 1 - maxCount = max(maxCount, count[1]) - found = True - if not found: - counts.append([item, 1]) - for counted_item, item_count in counts: - if item_count == maxCount: - modes.append(counted_item) - return modes - -def math_standard_deviation(numbers): - n = len(numbers) - if n == 0: return - mean = float(sum(numbers)) / n - variance = sum((x - mean) ** 2 for x in numbers) / n - return math.sqrt(variance) - -def first_index(my_list, elem): - try: index = my_list.index(elem) + 1 - except: index = 0 - return index - -# Tests the "list operation" blocks. -def test_operations_on_list(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(sum([3, 4, 5]), 12, 'sum') - assertEquals(min([3, 4, 5]), 3, 'min') - assertEquals(max([3, 4, 5]), 5, 'max') - assertEquals(math_mean([3, 4, 5]), 4, 'average') - assertEquals(math_median([3, 4, 5, 1]), 3.5, 'median') - assertEquals(math_modes([3, 4, 3]), [3], 'modes') - assertEquals(math_modes([3, 4, 3, 1, 4]), [3, 4], 'modes multiple') - assertEquals(math_standard_deviation([3, 3, 3]), 0, 'standard dev') - assertEquals(first_index([3, 4, 5], random.choice([3, 4, 5])) > 0, True, 'random') - -# Tests the "mod" block. -def test_mod(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(42 % 5, 2, 'mod') - -# Tests the "constrain" block. -def test_constraint(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(min(max(100, 0), 42), 42, 'constraint') - -# Tests the "random integer" block. -def test_random_integer(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - rand = random.randint(5, 10) - assertEquals(rand >= 5 and rand <= 10, True, 'randRange') - assertEquals(rand % 1 == 0, True, 'randInteger') - -# Tests the "random fraction" block. -def test_random_fraction(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - rand = random.random() - assertEquals(rand >= 0 and rand <= 1, True, 'randFloat') - -# Describe this function... -def test_atan2(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(math.atan2(5, -5) / math.pi * 180, 135, 'atan2') - assertEquals(math.atan2(-12, 0) / math.pi * 180, -90, 'atan2') - -# Checks that the number of calls is one in order -# to confirm that a function was only called once. -def check_number_of_calls(test_name): - global naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - test_name = str(test_name) + 'number of calls' - assertEquals(number_of_calls, 1, test_name) - -# Tests the "create text with" block with varying number of inputs. -def test_create_text(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals('', '', 'no text') - assertEquals('Hello', 'Hello', 'create single') - assertEquals(str(-1), '-1', 'create single number') - assertEquals('K' + str(9), 'K9', 'create double text') - assertEquals(str(4) + str(2), '42', 'create double text numbers') - assertEquals(''.join([str(x2) for x2 in [1, 2, 3]]), '123', 'create triple') - assertEquals(''.join([str(x3) for x3 in [1, 0 if True else None, 'M']]), '10M', 'create order') - -# Creates an empty string for use with the empty test. -def get_empty(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - return '' - -# Tests the "is empty" block". -def test_empty_text(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(not len('Google'), False, 'not empty') - assertEquals(not len(''), True, 'empty') - assertEquals(not len(get_empty()), True, 'empty complex') - assertEquals(not len('' if True else None), True, 'empty order') - -# Tests the "length" block. -def test_text_length(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(len(''), 0, 'zero length') - assertEquals(len('Google'), 6, 'non-zero length') - assertEquals(len('car' if True else None), 3, 'length order') - -# Tests the "append text" block with different types of parameters. -def test_append(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - item = 'Miserable' - item = str(item) + 'Failure' - assertEquals(item, 'MiserableFailure', 'append text') - item = 12 - item = str(item) + str(34) - assertEquals(item, '1234', 'append number') - item = 'Something ' - item = str(item) + str('Positive' if True else None) - assertEquals(item, 'Something Positive', 'append order') - -# Tests the "find" block with a variable. -def test_find_text_simple(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - text = 'Banana' - assertEquals(text.find('an') + 1, 2, 'find first simple') - assertEquals(text.rfind('an') + 1, 4, 'find last simple') - assertEquals(text.find('Peel') + 1, 0, 'find none simple') - -# Creates a string for use with the find test. -def get_fruit(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 - return 'Banana' - -# Tests the "find" block with a function call. -def test_find_text_complex(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = 0 - assertEquals(get_fruit().find('an') + 1, 2, 'find first complex') - check_number_of_calls('find first complex') - number_of_calls = 0 - assertEquals((get_fruit() if True else None).find('an') + 1, 2, 'find first order complex') - check_number_of_calls('find first order complex') - number_of_calls = 0 - assertEquals(get_fruit().rfind('an') + 1, 4, 'find last complex') - check_number_of_calls('find last complex') - number_of_calls = 0 - assertEquals((get_fruit() if True else None).rfind('an') + 1, 4, 'find last order complex') - check_number_of_calls('find last order complex') - number_of_calls = 0 - assertEquals(get_fruit().find('Peel') + 1, 0, 'find none complex') - check_number_of_calls('find none complex') - number_of_calls = 0 - assertEquals((get_fruit() if True else None).find('Peel') + 1, 0, 'find none order complex') - check_number_of_calls('find none order complex') - -def text_random_letter(text): - x = int(random.random() * len(text)) - return text[x] - -# Tests the "get letter" block with a variable. -def test_get_text_simple(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - text = 'Blockly' - assertEquals(text[0], 'B', 'get first simple') - assertEquals(text[-1], 'y', 'get last simple') - assertEquals(text.find(text_random_letter(text)) + 1 > 0, True, 'get random simple') - assertEquals(text[2], 'o', 'get # simple') - assertEquals(text[int((3 if True else None) - 1)], 'o', 'get # order simple') - assertEquals(text[-3], 'k', 'get #-end simple') - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(text[-int(0 + 3)], 'k', 'get #-end order simple') - -# Creates a string for use with the get test. -def get_Blockly(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 - return 'Blockly' - -# Tests the "get letter" block with a function call. -def test_get_text_complex(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - text = 'Blockly' - number_of_calls = 0 - assertEquals(get_Blockly()[0], 'B', 'get first complex') - check_number_of_calls('get first complex') - number_of_calls = 0 - assertEquals((get_Blockly() if True else None)[0], 'B', 'get first order complex') - check_number_of_calls('get first order complex') - number_of_calls = 0 - assertEquals(get_Blockly()[-1], 'y', 'get last complex') - check_number_of_calls('get last complex') - number_of_calls = 0 - assertEquals((get_Blockly() if True else None)[-1], 'y', 'get last order complex') - check_number_of_calls('get last order complex') - number_of_calls = 0 - assertEquals(text.find(text_random_letter(get_Blockly())) + 1 > 0, True, 'get random complex') - check_number_of_calls('get random complex') - number_of_calls = 0 - assertEquals(text.find(text_random_letter(get_Blockly() if True else None)) + 1 > 0, True, 'get random order complex') - check_number_of_calls('get random order complex') - number_of_calls = 0 - assertEquals(get_Blockly()[2], 'o', 'get # complex') - check_number_of_calls('get # complex') - number_of_calls = 0 - assertEquals((get_Blockly() if True else None)[int((3 if True else None) - 1)], 'o', 'get # order complex') - check_number_of_calls('get # order complex') - number_of_calls = 0 - assertEquals(get_Blockly()[-3], 'k', 'get #-end complex') - check_number_of_calls('get #-end complex') - number_of_calls = 0 - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals((get_Blockly() if True else None)[-int(0 + 3)], 'k', 'get #-end order complex') - check_number_of_calls('get #-end order complex') - -# Creates a string for use with the substring test. -def get_numbers(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 - return '123456789' - -# Tests the "get substring" block with a variable. -def test_substring_simple(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - text = '123456789' - assertEquals(text[1 : 3], '23', 'substring # simple') - assertEquals(text[int((2 if True else None) - 1) : int(3 if True else None)], '23', 'substring # simple order') - assertEquals(text[-3 : -1], '78', 'substring #-end simple') - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(text[-int(0 + 3) : -int((0 + 2) - 1) or sys.maxsize], '78', 'substring #-end simple order') - assertEquals(text[ : ], text, 'substring first-last simple') - assertEquals(text[1 : -1], '2345678', 'substring # #-end simple') - assertEquals(text[-7 : 4], '34', 'substring #-end # simple') - assertEquals(text[ : 4], '1234', 'substring first # simple') - assertEquals(text[ : -1], '12345678', 'substring first #-end simple') - assertEquals(text[6 : ], '789', 'substring # last simple') - assertEquals(text[-3 : ], '789', 'substring #-end last simple') - assertEquals(text[ : ], '123456789', 'substring all with # #-end simple') - assertEquals(text[-9 : 9], '123456789', 'substring all with #-end # simple') - # Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - assertEquals(text[int((0 + 1) - 1) : -int((0 + 1) - 1) or sys.maxsize], '123456789', 'substring all with # #-end math simple') - -# Tests the "get substring" block with a function call. -def test_substring_complex(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = 0 - assertEquals(get_numbers()[1 : 3], '23', 'substring # complex') - check_number_of_calls('substring # complex') - number_of_calls = 0 - assertEquals((get_numbers() if True else None)[int((2 if True else None) - 1) : int(3 if True else None)], '23', 'substring # complex order') - check_number_of_calls('substring # complex order') - number_of_calls = 0 - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(get_numbers()[-3 : -1], '78', 'substring #-end complex') - check_number_of_calls('substring #-end complex') - number_of_calls = 0 - assertEquals((get_numbers() if True else None)[-int(0 + 3) : -int((0 + 2) - 1) or sys.maxsize], '78', 'substring #-end order order') - check_number_of_calls('substring #-end order order') - number_of_calls = 0 - assertEquals(get_numbers()[ : ], text, 'substring first-last') - check_number_of_calls('substring first-last') - number_of_calls = 0 - assertEquals(get_numbers()[1 : -1], '2345678', 'substring # #-end complex') - check_number_of_calls('substring # #-end complex') - number_of_calls = 0 - assertEquals(get_numbers()[-7 : 4], '34', 'substring #-end # complex') - check_number_of_calls('substring #-end # complex') - number_of_calls = 0 - assertEquals(get_numbers()[ : 4], '1234', 'substring first # complex') - check_number_of_calls('substring first # complex') - number_of_calls = 0 - assertEquals(get_numbers()[ : -1], '12345678', 'substring first #-end complex') - check_number_of_calls('substring first #-end complex') - number_of_calls = 0 - assertEquals(get_numbers()[6 : ], '789', 'substring # last complex') - check_number_of_calls('substring # last complex') - number_of_calls = 0 - assertEquals(get_numbers()[-3 : ], '789', 'substring #-end last complex') - check_number_of_calls('substring #-end last complex') - number_of_calls = 0 - assertEquals(get_numbers()[ : ], '123456789', 'substring all with # #-end complex') - check_number_of_calls('substring all with # #-end complex') - number_of_calls = 0 - assertEquals(get_numbers()[-9 : 9], '123456789', 'substring all with #-end # complex') - check_number_of_calls('substring all with #-end # complex') - number_of_calls = 0 - # Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - assertEquals(get_numbers()[int((0 + 1) - 1) : -int((0 + 1) - 1) or sys.maxsize], '123456789', 'substring all with # #-end math complex') - check_number_of_calls('substring all with # #-end math complex') - -# Tests the "change casing" block. -def test_case(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - text = 'Hello World' - assertEquals(text.upper(), 'HELLO WORLD', 'uppercase') - assertEquals((text if True else None).upper(), 'HELLO WORLD', 'uppercase order') - text = 'Hello World' - assertEquals(text.lower(), 'hello world', 'lowercase') - assertEquals((text if True else None).lower(), 'hello world', 'lowercase order') - text = 'heLLo WorlD' - assertEquals(text.title(), 'Hello World', 'titlecase') - assertEquals((text if True else None).title(), 'Hello World', 'titlecase order') - -# Tests the "trim" block. -def test_trim(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - text = ' abc def ' - assertEquals(text.strip(), 'abc def', 'trim both') - assertEquals((text if True else None).strip(), 'abc def', 'trim both order') - assertEquals(text.lstrip(), 'abc def ', 'trim left') - assertEquals((text if True else None).lstrip(), 'abc def ', 'trim left order') - assertEquals(text.rstrip(), ' abc def', 'trim right') - assertEquals((text if True else None).rstrip(), ' abc def', 'trim right order') - -# Tests the "trim" block. -def test_count_text(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - text = 'woolloomooloo' - assertEquals(text.count('o'), 8, 'len 1') - assertEquals(text.count('oo'), 4, 'len 2') - assertEquals(text.count('loo'), 2, 'len 3') - assertEquals(text.count('wool'), 1, 'start') - assertEquals(text.count('chicken'), 0, 'missing') - assertEquals(text.count(''), 14, 'empty needle') - assertEquals(''.count('chicken'), 0, 'empty source') - -# Tests the "trim" block. -def test_text_reverse(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(''[::-1], '', 'empty string') - assertEquals('a'[::-1], 'a', 'len 1') - assertEquals('ab'[::-1], 'ba', 'len 2') - assertEquals('woolloomooloo'[::-1], 'ooloomoolloow', 'longer') - -# Tests the "trim" block. -def test_replace(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals('woolloomooloo'.replace('oo', '123'), 'w123ll123m123l123', 'replace all instances 1') - assertEquals('woolloomooloo'.replace('.oo', 'X'), 'woolloomooloo', 'literal string replacement') - assertEquals('woolloomooloo'.replace('abc', 'X'), 'woolloomooloo', 'not found') - assertEquals('woolloomooloo'.replace('o', ''), 'wllml', 'empty replacement 1') - assertEquals('aaaaa'.replace('aaaaa', ''), '', 'empty replacement 2') - assertEquals('aaaaa'.replace('a', ''), '', 'empty replacement 3') - assertEquals(''.replace('a', 'chicken'), '', 'empty source') - -# Tests the "multiline" block. -def test_multiline(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals('', '', 'no text') - assertEquals('Google', 'Google', 'simple') - assertEquals('paragraph' + '\n' + - 'with newlines' + '\n' + - 'yup', 'paragraph' + '\n' + - 'with newlines' + '\n' + - 'yup', 'no compile error with newlines') - assertEquals(('bark bark' + '\n' + - 'bark bark bark' + '\n' + - 'bark bark bark bark').count('bark'), 9, 'count with newlines') - -# Checks that the number of calls is one in order -# to confirm that a function was only called once. -def check_number_of_calls2(test_name): - global naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - test_name = str(test_name) + 'number of calls' - assertEquals(number_of_calls, 1, test_name) - -# Tests the "create list with" and "create empty list" blocks. -def test_create_lists(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals([], [], 'create empty') - assertEquals([True, 'love'], [True, 'love'], 'create items') - assertEquals(['Eject'] * 3, ['Eject', 'Eject', 'Eject'], 'create repeated') - assertEquals(['Eject'] * (0 + 3), ['Eject', 'Eject', 'Eject'], 'create repeated order') - -# Creates an empty list for use with the empty test. -def get_empty_list(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - return [] - -# Tests the "is empty" block. -def test_lists_empty(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(not len([0]), False, 'not empty') - assertEquals(not len([]), True, 'empty') - assertEquals(not len(get_empty_list()), True, 'empty complex') - assertEquals(not len([] if True else None), True, 'empty order') - -# Tests the "length" block. -def test_lists_length(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(len([]), 0, 'zero length') - assertEquals(len(['cat']), 1, 'one length') - assertEquals(len(['cat', True, []]), 3, 'three length') - assertEquals(len(['cat', True] if True else None), 2, 'two length order') - -def last_index(my_list, elem): - try: index = len(my_list) - my_list[::-1].index(elem) - except: index = 0 - return index - -# Tests the "find" block with a variable. -def test_find_lists_simple(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Alice', 'Eve', 'Bob', 'Eve'] - assertEquals(first_index(list2, 'Eve'), 2, 'find first simple') - assertEquals(last_index(list2, 'Eve'), 4, 'find last simple') - assertEquals(first_index(list2, 'Dave'), 0, 'find none simple') - -# Creates a list for use with the find test. -def get_names(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 - return ['Alice', 'Eve', 'Bob', 'Eve'] - -# Tests the "find" block with a function call. -def test_find_lists_complex(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = 0 - assertEquals(first_index(get_names(), 'Eve'), 2, 'find first complex') - check_number_of_calls('find first complex') - number_of_calls = 0 - assertEquals(first_index(get_names() if True else None, 'Eve'), 2, 'find first order complex') - check_number_of_calls('find first order complex') - number_of_calls = 0 - assertEquals(last_index(get_names(), 'Eve'), 4, 'find last complex') - check_number_of_calls('find last complex') - number_of_calls = 0 - assertEquals(last_index(get_names() if True else None, 'Eve'), 4, 'find last order complex') - check_number_of_calls('find last order complex') - number_of_calls = 0 - assertEquals(first_index(get_names(), 'Dave'), 0, 'find none complex') - check_number_of_calls('find none complex') - number_of_calls = 0 - assertEquals(first_index(get_names() if True else None, 'Dave'), 0, 'find none order complex') - check_number_of_calls('find none order complex') - -# Tests the "get" block with a variable. -def test_get_lists_simple(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals(list2[0], 'Kirk', 'get first simple') - assertEquals(list2[-1], 'McCoy', 'get last simple') - assertEquals(first_index(list2, random.choice(list2)) > 0, True, 'get random simple') - assertEquals(list2[1], 'Spock', 'get # simple') - assertEquals(list2[int((2 if True else None) - 1)], 'Spock', 'get # order simple') - assertEquals(list2[-3], 'Kirk', 'get #-end simple') - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list2[-int(0 + 3)], 'Kirk', 'get #-end order simple') - -# Tests the "get" block with create list call. -def test_get_lists_create_list(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(['Kirk', 'Spock', 'McCoy'][0], 'Kirk', 'get first create list') - assertEquals(['Kirk', 'Spock', 'McCoy'][-1], 'McCoy', 'get last simple') - assertEquals(first_index(['Kirk', 'Spock', 'McCoy'], random.choice(['Kirk', 'Spock', 'McCoy'])) > 0, True, 'get random simple') - assertEquals(['Kirk', 'Spock', 'McCoy'][1], 'Spock', 'get # simple') - assertEquals(['Kirk', 'Spock', 'McCoy'][int((2 if True else None) - 1)], 'Spock', 'get # order simple') - assertEquals(['Kirk', 'Spock', 'McCoy'][-3], 'Kirk', 'get #-end simple') - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(['Kirk', 'Spock', 'McCoy'][-int(0 + 3)], 'Kirk', 'get #-end order simple') - -# Creates a list for use with the get test. -def get_star_wars(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 - return ['Kirk', 'Spock', 'McCoy'] - -# Tests the "get" block with a function call. -def test_get_lists_complex(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Kirk', 'Spock', 'McCoy'] - number_of_calls = 0 - assertEquals(get_star_wars()[0], 'Kirk', 'get first complex') - check_number_of_calls('get first complex') - number_of_calls = 0 - assertEquals((get_star_wars() if True else None)[0], 'Kirk', 'get first order complex') - check_number_of_calls('get first order complex') - number_of_calls = 0 - assertEquals(get_star_wars()[-1], 'McCoy', 'get last complex') - check_number_of_calls('get last complex') - number_of_calls = 0 - assertEquals((get_star_wars() if True else None)[-1], 'McCoy', 'get last order complex') - check_number_of_calls('get last order complex') - number_of_calls = 0 - assertEquals(first_index(list2, random.choice(get_star_wars())) > 0, True, 'get random complex') - check_number_of_calls('get random complex') - number_of_calls = 0 - assertEquals(first_index(list2, random.choice(get_star_wars() if True else None)) > 0, True, 'get random order complex') - check_number_of_calls('get random order complex') - number_of_calls = 0 - assertEquals(get_star_wars()[1], 'Spock', 'get # complex') - check_number_of_calls('get # complex') - number_of_calls = 0 - assertEquals((get_star_wars() if True else None)[int((2 if True else None) - 1)], 'Spock', 'get # order complex') - check_number_of_calls('get # order complex') - number_of_calls = 0 - assertEquals(get_star_wars()[-3], 'Kirk', 'get #-end complex') - check_number_of_calls('get #-end complex') - number_of_calls = 0 - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals((get_star_wars() if True else None)[-int(0 + 3)], 'Kirk', 'get #-end order complex') - check_number_of_calls('get #-end order complex') - -def lists_remove_random_item(myList): - x = int(random.random() * len(myList)) - return myList.pop(x) - -# Tests the "get and remove" block. -def test_getRemove(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals(list2.pop(0), 'Kirk', 'getremove first') - assertEquals(list2, ['Spock', 'McCoy'], 'getremove first list') - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals((list2 if True else None).pop(0), 'Kirk', 'getremove first order') - assertEquals(list2, ['Spock', 'McCoy'], 'getremove first order list') - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals(list2.pop(), 'McCoy', 'getremove last') - assertEquals(list2, ['Kirk', 'Spock'], 'getremove last list') - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals((list2 if True else None).pop(), 'McCoy', 'getremove last order') - assertEquals(list2, ['Kirk', 'Spock'], 'getremove last order list') - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals(first_index(list2, lists_remove_random_item(list2)) == 0, True, 'getremove random') - assertEquals(len(list2), 2, 'getremove random list') - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals(first_index(list2, lists_remove_random_item(list2 if True else None)) == 0, True, 'getremove random order') - assertEquals(len(list2), 2, 'getremove random order list') - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals(list2.pop(1), 'Spock', 'getremove #') - assertEquals(list2, ['Kirk', 'McCoy'], 'getremove # list') - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals((list2 if True else None).pop(int((2 if True else None) - 1)), 'Spock', 'getremove # order') - assertEquals(list2, ['Kirk', 'McCoy'], 'getremove # order list') - list2 = ['Kirk', 'Spock', 'McCoy'] - assertEquals(list2.pop(-3), 'Kirk', 'getremove #-end') - assertEquals(list2, ['Spock', 'McCoy'], 'getremove #-end list') - list2 = ['Kirk', 'Spock', 'McCoy'] - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals((list2 if True else None).pop(-int(0 + 3)), 'Kirk', 'getremove #-end order') - assertEquals(list2, ['Spock', 'McCoy'], 'getremove #-end order list') - -# Tests the "remove" block. -def test_remove(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Kirk', 'Spock', 'McCoy'] - list2.pop(0) - assertEquals(list2, ['Spock', 'McCoy'], 'remove first list') - list2 = ['Kirk', 'Spock', 'McCoy'] - (list2 if True else None).pop(0) - assertEquals(list2, ['Spock', 'McCoy'], 'remove first order list') - list2 = ['Kirk', 'Spock', 'McCoy'] - list2.pop() - assertEquals(list2, ['Kirk', 'Spock'], 'remove last list') - list2 = ['Kirk', 'Spock', 'McCoy'] - (list2 if True else None).pop() - assertEquals(list2, ['Kirk', 'Spock'], 'remove last order list') - list2 = ['Kirk', 'Spock', 'McCoy'] - lists_remove_random_item(list2) - assertEquals(len(list2), 2, 'remove random list') - list2 = ['Kirk', 'Spock', 'McCoy'] - lists_remove_random_item(list2 if True else None) - assertEquals(len(list2), 2, 'remove random order list') - list2 = ['Kirk', 'Spock', 'McCoy'] - list2.pop(1) - assertEquals(list2, ['Kirk', 'McCoy'], 'remove # list') - list2 = ['Kirk', 'Spock', 'McCoy'] - (list2 if True else None).pop(int((2 if True else None) - 1)) - assertEquals(list2, ['Kirk', 'McCoy'], 'remove # order list') - list2 = ['Kirk', 'Spock', 'McCoy'] - list2.pop(-3) - assertEquals(list2, ['Spock', 'McCoy'], 'remove #-end list') - list2 = ['Kirk', 'Spock', 'McCoy'] - # The order for index for #-end is addition because this will catch - # errors in generators where most perform the operation ... - index. - (list2 if True else None).pop(-int(0 + 3)) - assertEquals(list2, ['Spock', 'McCoy'], 'remove #-end order list') - -# Tests the "set" block. -def test_set(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Picard', 'Riker', 'Crusher'] - list2[0] = 'Jean-Luc' - assertEquals(list2, ['Jean-Luc', 'Riker', 'Crusher'], 'set first list') - list2 = ['Picard', 'Riker', 'Crusher'] - (list2 if True else None)[0] = 'Jean-Luc' - assertEquals(list2, ['Jean-Luc', 'Riker', 'Crusher'], 'set first order list') - list2 = ['Picard', 'Riker', 'Crusher'] - list2[-1] = 'Beverly' - assertEquals(list2, ['Picard', 'Riker', 'Beverly'], 'set last list') - list2 = ['Picard', 'Riker', 'Crusher'] - (list2 if True else None)[-1] = 'Beverly' - assertEquals(list2, ['Picard', 'Riker', 'Beverly'], 'set last order list') - list2 = ['Picard', 'Riker', 'Crusher'] - tmp_x = int(random.random() * len(list2)) - list2[tmp_x] = 'Data' - assertEquals(len(list2), 3, 'set random list') - list2 = ['Picard', 'Riker', 'Crusher'] - tmp_list = (list2 if True else None) - tmp_x2 = int(random.random() * len(tmp_list)) - tmp_list[tmp_x2] = 'Data' - assertEquals(len(list2), 3, 'set random order list') - list2 = ['Picard', 'Riker', 'Crusher'] - list2[2] = 'Pulaski' - assertEquals(list2, ['Picard', 'Riker', 'Pulaski'], 'set # list') - list2 = ['Picard', 'Riker', 'Crusher'] - (list2 if True else None)[int((3 if True else None) - 1)] = 'Pulaski' - assertEquals(list2, ['Picard', 'Riker', 'Pulaski'], 'set # order list') - list2 = ['Picard', 'Riker', 'Crusher'] - list2[-1] = 'Pulaski' - assertEquals(list2, ['Picard', 'Riker', 'Pulaski'], 'set #-end list') - list2 = ['Picard', 'Riker', 'Crusher'] - # The order for index for #-end is addition because this will catch - # errors in generators where most perform the operation ... - index. - (list2 if True else None)[-int(0 + 2)] = 'Pulaski' - assertEquals(list2, ['Picard', 'Pulaski', 'Crusher'], 'set #-end order list') - -# Tests the "insert" block. -def test_insert(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Picard', 'Riker', 'Crusher'] - list2.insert(0, 'Data') - assertEquals(list2, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first list') - list2 = ['Picard', 'Riker', 'Crusher'] - (list2 if True else None).insert(0, 'Data') - assertEquals(list2, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first order list') - list2 = ['Picard', 'Riker', 'Crusher'] - list2.append('Data') - assertEquals(list2, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last list') - list2 = ['Picard', 'Riker', 'Crusher'] - (list2 if True else None).append('Data') - assertEquals(list2, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last order list') - list2 = ['Picard', 'Riker', 'Crusher'] - tmp_x3 = int(random.random() * len(list2)) - list2.insert(tmp_x3, 'Data') - assertEquals(len(list2), 4, 'insert random list') - list2 = ['Picard', 'Riker', 'Crusher'] - tmp_list2 = (list2 if True else None) - tmp_x4 = int(random.random() * len(tmp_list2)) - tmp_list2.insert(tmp_x4, 'Data') - assertEquals(len(list2), 4, 'insert random order list') - list2 = ['Picard', 'Riker', 'Crusher'] - list2.insert(2, 'Data') - assertEquals(list2, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # list') - list2 = ['Picard', 'Riker', 'Crusher'] - (list2 if True else None).insert(int((3 if True else None) - 1), 'Data') - assertEquals(list2, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # order list') - list2 = ['Picard', 'Riker', 'Crusher'] - list2.insert(-1, 'Data') - assertEquals(list2, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert #-end list') - list2 = ['Picard', 'Riker', 'Crusher'] - # The order for index for #-end is addition because this will catch - # errors in generators where most perform the operation ... - index. - (list2 if True else None).insert(-int(0 + 2), 'Data') - assertEquals(list2, ['Picard', 'Data', 'Riker', 'Crusher'], 'insert #-end order list') - -# Tests the "get sub-list" block with a variable. -def test_sublist_simple(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'] - assertEquals(list2[1 : 3], ['Challenger', 'Discovery'], 'sublist # simple') - assertEquals(list2[int((2 if True else None) - 1) : int(3 if True else None)], ['Challenger', 'Discovery'], 'sublist # simple order') - assertEquals(list2[-3 : -1], ['Discovery', 'Atlantis'], 'sublist #-end simple') - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(list2[-int(0 + 3) : -int((0 + 2) - 1) or sys.maxsize], ['Discovery', 'Atlantis'], 'sublist #-end simple order') - assertEquals(list2[ : ], list2, 'sublist first-last simple') - changing_list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'] - list_copy = changing_list[ : ] - lists_remove_random_item(changing_list) - assertEquals(list_copy, list2, 'sublist first-last simple copy check') - assertEquals(list2[1 : -1], ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end simple') - assertEquals(list2[-3 : 4], ['Discovery', 'Atlantis'], 'sublist #-end # simple') - assertEquals(list2[ : 4], ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # simple') - assertEquals(list2[ : -3], ['Columbia', 'Challenger'], 'sublist first #-end simple') - assertEquals(list2[3 : ], ['Atlantis', 'Endeavour'], 'sublist # last simple') - assertEquals(list2[-4 : ], ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple') - assertEquals(list2[ : ], list2, 'sublist all with # #-end simple') - assertEquals(list2[-5 : 5], list2, 'sublist all with #-end # simple') - # Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - assertEquals(list2[int((0 + 1) - 1) : -int((0 + 1) - 1) or sys.maxsize], list2, 'sublist all with # #-end math simple') - -# Creates a list for use with the sublist test. -def get_space_shuttles(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 - return ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'] - -# Tests the "get sub-list" block with a function call. -def test_sublist_complex(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - number_of_calls = 0 - assertEquals(get_space_shuttles()[1 : 3], ['Challenger', 'Discovery'], 'sublist # start complex') - check_number_of_calls('sublist # start complex') - number_of_calls = 0 - assertEquals((get_space_shuttles() if True else None)[int((2 if True else None) - 1) : int(3 if True else None)], ['Challenger', 'Discovery'], 'sublist # start order complex') - check_number_of_calls('sublist # start order complex') - number_of_calls = 0 - # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - assertEquals(get_space_shuttles()[-3 : -1], ['Discovery', 'Atlantis'], 'sublist # end complex') - assertEquals(number_of_calls, 1, 'sublist # end complex number of calls') - number_of_calls = 0 - assertEquals((get_space_shuttles() if True else None)[-int(0 + 3) : -int((0 + 2) - 1) or sys.maxsize], ['Discovery', 'Atlantis'], 'sublist # end order complex') - check_number_of_calls('sublist # end order complex') - number_of_calls = 0 - assertEquals(get_space_shuttles()[ : ], list2, 'sublist first-last complex') - check_number_of_calls('sublist first-last complex') - number_of_calls = 0 - assertEquals(get_space_shuttles()[1 : -1], ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end complex') - check_number_of_calls('sublist # #-end complex') - number_of_calls = 0 - assertEquals(get_space_shuttles()[-3 : 4], ['Discovery', 'Atlantis'], 'sublist #-end # complex') - check_number_of_calls('sublist #-end # complex') - number_of_calls = 0 - assertEquals(get_space_shuttles()[ : 4], ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # complex') - check_number_of_calls('sublist first # complex') - number_of_calls = 0 - assertEquals(get_space_shuttles()[ : -3], ['Columbia', 'Challenger'], 'sublist first #-end complex') - check_number_of_calls('sublist first #-end complex') - number_of_calls = 0 - assertEquals(get_space_shuttles()[3 : ], ['Atlantis', 'Endeavour'], 'sublist # last complex') - check_number_of_calls('sublist # last complex') - number_of_calls = 0 - assertEquals(get_space_shuttles()[-4 : ], ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple') - check_number_of_calls('sublist #-end last simple') - number_of_calls = 0 - assertEquals(get_space_shuttles()[ : ], list2, 'sublist all with # #-end complex') - check_number_of_calls('sublist all with # #-end complex') - number_of_calls = 0 - assertEquals(get_space_shuttles()[-5 : 5], list2, 'sublist all with #-end # complex') - check_number_of_calls('sublist all with #-end # complex') - number_of_calls = 0 - # Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - assertEquals(get_space_shuttles()[int((0 + 1) - 1) : -int((0 + 1) - 1) or sys.maxsize], list2, 'sublist all with # #-end math complex') - check_number_of_calls('sublist all with # #-end math complex') - -# Tests the "join" block. -def test_join(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Vulcan', 'Klingon', 'Borg'] - assertEquals(','.join(list2), 'Vulcan,Klingon,Borg', 'join') - assertEquals(','.join(list2 if True else None), 'Vulcan,Klingon,Borg', 'join order') - -# Tests the "split" block. -def test_split(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - text = 'Vulcan,Klingon,Borg' - assertEquals(text.split(','), ['Vulcan', 'Klingon', 'Borg'], 'split') - assertEquals((text if True else None).split(','), ['Vulcan', 'Klingon', 'Borg'], 'split order') - -def lists_sort(my_list, type, reverse): - def try_float(s): - try: - return float(s) - except: - return 0 - key_funcs = { - "NUMERIC": try_float, - "TEXT": str, - "IGNORE_CASE": lambda s: str(s).lower() - } - key_func = key_funcs[type] - list_cpy = list(my_list) - return sorted(list_cpy, key=key_func, reverse=reverse) - -# Tests the "alphabetic sort" block. -def test_sort_alphabetic(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Vulcan', 'klingon', 'Borg'] - assertEquals(lists_sort(list2, "TEXT", False), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending') - assertEquals(lists_sort(list2 if True else None, "TEXT", False), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending order') - -# Tests the "alphabetic sort ignore case" block. -def test_sort_ignoreCase(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = ['Vulcan', 'klingon', 'Borg'] - assertEquals(lists_sort(list2, "IGNORE_CASE", False), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending') - assertEquals(lists_sort(list2 if True else None, "IGNORE_CASE", False), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending order') - -# Tests the "numeric sort" block. -def test_sort_numeric(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = [8, 18, -1] - assertEquals(lists_sort(list2, "NUMERIC", True), [18, 8, -1], 'sort numeric descending') - assertEquals(lists_sort(list2 if True else None, "NUMERIC", True), [18, 8, -1], 'sort numeric descending order') - -# Tests the "list reverse" block. -def test_lists_reverse(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - list2 = [8, 18, -1, 64] - assertEquals(list(reversed(list2)), [64, -1, 18, 8], 'reverse a copy') - assertEquals(list2, [8, 18, -1, 64], 'reverse a copy original') - list2 = [] - assertEquals(list(reversed(list2)), [], 'empty list') - -# Describe this function... -def test_colour_picker(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals('#ff6600', '#ff6600', 'static colour') - -def colour_rgb(r, g, b): - r = round(min(100, max(0, r)) * 2.55) - g = round(min(100, max(0, g)) * 2.55) - b = round(min(100, max(0, b)) * 2.55) - return '#%02x%02x%02x' % (r, g, b) - -# Describe this function... -def test_rgb(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(colour_rgb(100, 40, 0), '#ff6600', 'from rgb') - -# Describe this function... -def test_colour_random(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - for count4 in range(100): - item = '#%06x' % random.randint(0, 2**24 - 1) - assertEquals(len(item), 7, 'length of random colour string: ' + str(item)) - assertEquals(item[0], '#', 'format of random colour string: ' + str(item)) - for i in range(1, 7): - assertEquals(0 != 'abcdefABDEF0123456789'.find(item[int((i + 1) - 1)]) + 1, True, ''.join([str(x4) for x4 in ['contents of random colour string: ', item, ' at index: ', i + 1]])) - -def colour_blend(colour1, colour2, ratio): - r1, r2 = int(colour1[1:3], 16), int(colour2[1:3], 16) - g1, g2 = int(colour1[3:5], 16), int(colour2[3:5], 16) - b1, b2 = int(colour1[5:7], 16), int(colour2[5:7], 16) - ratio = min(1, max(0, ratio)) - r = round(r1 * (1 - ratio) + r2 * ratio) - g = round(g1 * (1 - ratio) + g2 * ratio) - b = round(b1 * (1 - ratio) + b2 * ratio) - return '#%02x%02x%02x' % (r, g, b) - -# Describe this function... -def test_blend(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(colour_blend('#ff0000', colour_rgb(100, 40, 0), 0.4), '#ff2900', 'blend') - -# Describe this function... -def test_procedure(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - procedure_1(8, 2) - assertEquals(proc_z, 4, 'procedure with global') - proc_w = False - procedure_2(False) - assertEquals(proc_w, True, 'procedure no return') - proc_w = False - procedure_2(True) - assertEquals(proc_w, False, 'procedure return') - -# Describe this function... -def procedure_1(proc_x, proc_y): - global test_name, naked, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - proc_z = proc_x / proc_y - -# Describe this function... -def procedure_2(proc_x): - global test_name, naked, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - if proc_x: - return - proc_w = True - -# Describe this function... -def test_function(): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - assertEquals(function_1(2, 3), -1, 'function with arguments') - assertEquals(func_z, 'side effect', 'function with side effect') - func_a = 'unchanged' - func_c = 'global' - assertEquals(function_2(2), '3global', 'function with global') - assertEquals(func_a, 'unchanged', 'function with scope') - assertEquals(function_3(True), True, 'function return') - assertEquals(function_3(False), False, 'function no return') - -# Describe this function... -def function_1(func_x, func_y): - global test_name, naked, proc_x, proc_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - func_z = 'side effect' - return func_x - func_y - -# Describe this function... -def function_2(func_a): - global test_name, naked, proc_x, proc_y, func_x, func_y, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - func_a = (func_a if isinstance(func_a, Number) else 0) + 1 - return str(func_a) + str(func_c) - -# Describe this function... -def function_3(func_a): - global test_name, naked, proc_x, proc_y, func_x, func_y, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - if func_a: - return True - return False - -# Describe this function... -def recurse(n): - global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults - if n > 0: - text = ''.join([str(x5) for x5 in [recurse(n - 1), n, recurse(n - 1)]]) - else: - text = '-' - return text - - -unittestResults = [] -print('\n====================\n\nRunning suite: Logic') -assertEquals(True, True, 'True') -assertEquals(False, False, 'False') -assertEquals(not False, True, 'Not true') -assertEquals(not True, False, 'Not false') -test_if() -test_ifelse() -test_equalities() -test_and() -test_or() -test_ternary() -print(unittest_report()) -unittestResults = None - -unittestResults = [] -print('\n====================\n\nRunning suite: Loops 1') -test_repeat() -test_repeat_ext() -test_while() -test_foreach() -print(unittest_report()) -unittestResults = None - -unittestResults = [] -print('\n====================\n\nRunning suite: Loops 2') -test_count_loops() -test_count_by() -print(unittest_report()) -unittestResults = None - -unittestResults = [] -print('\n====================\n\nRunning suite: Loops 3') -test_break() -test_continue() -print(unittest_report()) -unittestResults = None - -unittestResults = [] -print('\n====================\n\nRunning suite: Math') -test_arithmetic() -test_single() -test_trig() -test_constant() -test_change() -test_number_properties() -test_round() -test_operations_on_list() -test_constraint() -test_mod() -test_random_integer() -test_random_fraction() -test_atan2() -print(unittest_report()) -unittestResults = None - -unittestResults = [] -print('\n====================\n\nRunning suite: Text') -test_text_length() -test_empty_text() -test_create_text() -test_append() -test_find_text_simple() -test_find_text_complex() -test_get_text_simple() -test_get_text_complex() -test_substring_simple() -test_substring_complex() -test_case() -test_trim() -test_count_text() -test_text_reverse() -test_replace() -test_multiline() -print(unittest_report()) -unittestResults = None - -unittestResults = [] -print('\n====================\n\nRunning suite: Lists') -test_create_lists() -test_lists_empty() -test_lists_length() -test_find_lists_simple() -test_find_lists_complex() -test_get_lists_simple() -test_get_lists_create_list() -test_get_lists_complex() -test_getRemove() -test_remove() -test_set() -test_insert() -test_sublist_simple() -test_sublist_complex() -test_join() -test_split() -test_sort_alphabetic() -test_sort_ignoreCase() -test_sort_numeric() -test_lists_reverse() -print(unittest_report()) -unittestResults = None - -unittestResults = [] -print('\n====================\n\nRunning suite: Colour') -test_colour_picker() -test_blend() -test_rgb() -test_colour_random() -print(unittest_report()) -unittestResults = None - -unittestResults = [] -print('\n====================\n\nRunning suite: Variables') -item = 123 -assertEquals(item, 123, 'variable') -if2 = 123 -assertEquals(if2, 123, 'reserved variable') -print(unittest_report()) -unittestResults = None - -# Intentionally non-connected variable. -naked - -unittestResults = [] -print('\n====================\n\nRunning suite: Functions') -test_procedure() -test_function() -assertEquals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse') -print(unittest_report()) -unittestResults = None +from numbers import Number +import math +import random +import sys + +unittestResults = None +test_name = None +naked = None +proc_x = None +proc_y = None +func_x = None +func_y = None +func_a = None +n = None +ok = None +log = None +count = None +varToChange = None +rand = None +item = None +text = None +number_of_calls = None +list2 = None +proc_z = None +func_z = None +x = None +proc_w = None +func_c = None +if2 = None +i = None +loglist = None +changing_list = None +list_copy = None + +def unittest_report(): + # Create test report. + report = [] + summary = [] + fails = 0 + for (success, log, message) in unittestResults: + if success: + summary.append(".") + else: + summary.append("F") + fails += 1 + report.append("") + report.append("FAIL: " + message) + report.append(log) + report.insert(0, "".join(summary)) + report.append("") + report.append("Number of tests run: %d" % len(unittestResults)) + report.append("") + if fails: + report.append("FAILED (failures=%d)" % fails) + else: + report.append("OK") + return "\n".join(report) + +def assertEquals(actual, expected, message): + # Asserts that a value equals another value. + if unittestResults == None: + raise Exception("Orphaned assert equals: " + message) + if actual == expected: + unittestResults.append((True, "OK", message)) + else: + unittestResults.append((False, "Expected: %s\nActual: %s" % (expected, actual), message)) + +def fail(message): + # Always assert an error. + if unittestResults == None: + raise Exception("Orphaned assert equals: " + message) + unittestResults.append((False, "Fail.", message)) + +# Describe this function... +def test_if(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + if False: + fail('if false') + ok = False + if True: + ok = True + assertEquals(ok, True, 'if true') + ok = False + if False: + fail('if/else false') + else: + ok = True + assertEquals(ok, True, 'if/else false') + ok = False + if True: + ok = True + else: + fail('if/else true') + assertEquals(ok, True, 'if/else true') + ok = False + if False: + fail('elseif 1') + elif True: + ok = True + elif True: + fail('elseif 2') + else: + fail('elseif 3') + assertEquals(ok, True, 'elseif 4') + +# Describe this function... +def test_ifelse(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + ok = False + if True: + ok = True + else: + fail('ifelse true') + assertEquals(ok, True, 'ifelse true') + ok = False + if False: + fail('ifelse false') + else: + ok = True + assertEquals(ok, True, 'ifelse false') + +# Describe this function... +def test_equalities(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(2 == 2, True, 'Equal yes') + assertEquals(3 == 4, False, 'Equal no') + assertEquals(5 != 6, True, 'Not equal yes') + assertEquals(3 == 4, False, 'Not equal no') + assertEquals(5 < 6, True, 'Smaller yes') + assertEquals(7 < 7, False, 'Smaller no') + assertEquals(9 > 8, True, 'Greater yes') + assertEquals(10 > 10, False, 'Greater no') + assertEquals(11 <= 11, True, 'Smaller-equal yes') + assertEquals(13 <= 12, False, 'Smaller-equal no') + assertEquals(14 >= 14, True, 'Greater-equal yes') + assertEquals(15 >= 16, False, 'Greater-equal no') + +# Describe this function... +def test_and(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(True and True, True, 'And true/true') + assertEquals(False and True, False, 'And false/true') + assertEquals(True and False, False, 'And true/false') + assertEquals(False and False, False, 'And false/false') + +# Describe this function... +def test_or(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(True or True, True, 'Or true/true') + assertEquals(False or True, True, 'Or false/true') + assertEquals(True or False, True, 'Or true/false') + assertEquals(False or False, False, 'Or false/false') + +# Describe this function... +def test_ternary(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(42 if True else 99, 42, 'if true') + assertEquals(42 if False else 99, 99, 'if true') + +# Describe this function... +def test_foreach(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + log = '' + for x in ['a', 'b', 'c']: + log = str(log) + str(x) + assertEquals(log, 'abc', 'for loop') + +# Describe this function... +def test_repeat(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + count = 0 + for count2 in range(10): + count = (count if isinstance(count, Number) else 0) + 1 + assertEquals(count, 10, 'repeat 10') + +# Describe this function... +def test_while(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + while False: + fail('while 0') + while not True: + fail('until 0') + count = 1 + while count != 10: + count = (count if isinstance(count, Number) else 0) + 1 + assertEquals(count, 10, 'while 10') + count = 1 + while not count == 10: + count = (count if isinstance(count, Number) else 0) + 1 + assertEquals(count, 10, 'until 10') + +# Describe this function... +def test_repeat_ext(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + count = 0 + for count3 in range(10): + count = (count if isinstance(count, Number) else 0) + 1 + assertEquals(count, 10, 'repeat 10') + +def upRange(start, stop, step): + while start <= stop: + yield start + start += abs(step) + +def downRange(start, stop, step): + while start >= stop: + yield start + start -= abs(step) + +# Describe this function... +def test_count_by(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + log = '' + for x in range(1, 9, 2): + log = str(log) + str(x) + assertEquals(log, '1357', 'count up ints') + log = '' + for x in range(8, 0, -2): + log = str(log) + str(x) + assertEquals(log, '8642', 'count down ints') + loglist = [] + for x in upRange(1, 8, 1.5): + loglist.append(x) + assertEquals(loglist, [1, 2.5, 4, 5.5, 7], 'count with floats') + loglist = [] + x_start = float(1 + 0) + x_end = float(8 + 0) + x_inc = float(1 - 2) + for x in (x_start <= x_end) and upRange(x_start, x_end, x_inc) or downRange(x_start, x_end, x_inc): + loglist.append(x) + assertEquals(loglist, [1, 2, 3, 4, 5, 6, 7, 8], 'count up non-trivial ints') + loglist = [] + x_start2 = float(8 + 0) + x_end2 = float(1 + 0) + for x in (x_start2 <= x_end2) and upRange(x_start2, x_end2, 2) or downRange(x_start2, x_end2, 2): + loglist.append(x) + assertEquals(loglist, [8, 6, 4, 2], 'count down non-trivial ints') + loglist = [] + x_start3 = float(5 + 0.5) + x_end3 = float(1 + 0) + x_inc2 = float(1 + 0) + for x in (x_start3 <= x_end3) and upRange(x_start3, x_end3, x_inc2) or downRange(x_start3, x_end3, x_inc2): + loglist.append(x) + assertEquals(loglist, [5.5, 4.5, 3.5, 2.5, 1.5], 'count with floats') + +# Describe this function... +def test_count_loops(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + log = '' + for x in range(1, 9): + log = str(log) + str(x) + assertEquals(log, '12345678', 'count up') + log = '' + for x in range(8, 0, -1): + log = str(log) + str(x) + assertEquals(log, '87654321', 'count down') + loglist = [] + x_start4 = float(1 + 0) + x_end4 = float(4 + 0) + for x in (x_start4 <= x_end4) and upRange(x_start4, x_end4, 1) or downRange(x_start4, x_end4, 1): + loglist.append(x) + assertEquals(loglist, [1, 2, 3, 4], 'count up non-trivial') + loglist = [] + x_start5 = float(3 + 1) + x_end5 = float(1 + 0) + for x in (x_start5 <= x_end5) and upRange(x_start5, x_end5, 1) or downRange(x_start5, x_end5, 1): + loglist.append(x) + assertEquals(loglist, [4, 3, 2, 1], 'count down non-trivial') + +# Describe this function... +def test_continue(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + log = '' + count = 0 + while count != 8: + count = (count if isinstance(count, Number) else 0) + 1 + if count == 5: + continue + log = str(log) + str(count) + assertEquals(log, '1234678', 'while continue') + log = '' + count = 0 + while not count == 8: + count = (count if isinstance(count, Number) else 0) + 1 + if count == 5: + continue + log = str(log) + str(count) + assertEquals(log, '1234678', 'until continue') + log = '' + for x in range(1, 9): + if x == 5: + continue + log = str(log) + str(x) + assertEquals(log, '1234678', 'count continue') + log = '' + for x in ['a', 'b', 'c', 'd']: + if x == 'c': + continue + log = str(log) + str(x) + assertEquals(log, 'abd', 'for continue') + +# Describe this function... +def test_break(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + count = 1 + while count != 10: + if count == 5: + break + count = (count if isinstance(count, Number) else 0) + 1 + assertEquals(count, 5, 'while break') + count = 1 + while not count == 10: + if count == 5: + break + count = (count if isinstance(count, Number) else 0) + 1 + assertEquals(count, 5, 'until break') + log = '' + for x in range(1, 9): + if x == 5: + break + log = str(log) + str(x) + assertEquals(log, '1234', 'count break') + log = '' + for x in ['a', 'b', 'c', 'd']: + if x == 'c': + break + log = str(log) + str(x) + assertEquals(log, 'ab', 'for break') + +# Tests the "single" block. +def test_single(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(math.sqrt(25), 5, 'sqrt') + assertEquals(math.fabs(-25), 25, 'abs') + assertEquals(-(-25), 25, 'negate') + assertEquals(math.log(1), 0, 'ln') + assertEquals(math.log10(100), 2, 'log10') + assertEquals(math.exp(2), 7.38905609893065, 'exp') + assertEquals(math.pow(10,2), 100, 'power10') + +# Tests the "arithmetic" block for all operations and checks +# parenthesis are properly generated for different orders. +def test_arithmetic(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(1 + 2, 3, 'add') + assertEquals(1 - 2, -1, 'subtract') + assertEquals(1 - (0 + 2), -1, 'subtract order with add') + assertEquals(1 - (0 - 2), 3, 'subtract order with subtract') + assertEquals(4 * 2.5, 10, 'multiply') + assertEquals(4 * (0 + 2.5), 10, 'multiply order') + assertEquals(8.2 / -5, -1.64, 'divide') + assertEquals(8.2 / (0 + -5), -1.64, 'divide order') + assertEquals(10 ** 4, 10000, 'power') + assertEquals(10 ** (0 + 4), 10000, 'power order') + +# Tests the "trig" block. +def test_trig(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(math.sin(90 / 180.0 * math.pi), 1, 'sin') + assertEquals(math.cos(180 / 180.0 * math.pi), -1, 'cos') + assertEquals(math.tan(0 / 180.0 * math.pi), 0, 'tan') + assertEquals(math.asin(-1) / math.pi * 180, -90, 'asin') + assertEquals(math.acos(1) / math.pi * 180, 0, 'acos') + assertEquals(math.atan(1) / math.pi * 180, 45, 'atan') + +# Tests the "constant" blocks. +def test_constant(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(math.floor(math.pi * 1000), 3141, 'const pi') + assertEquals(math.floor(math.e * 1000), 2718, 'const e') + assertEquals(math.floor(((1 + math.sqrt(5)) / 2) * 1000), 1618, 'const golden') + assertEquals(math.floor(math.sqrt(2) * 1000), 1414, 'const sqrt 2') + assertEquals(math.floor(math.sqrt(1.0 / 2) * 1000), 707, 'const sqrt 0.5') + assertEquals(9999 < float('inf'), True, 'const infinity') + +def math_isPrime(n): + # https://en.wikipedia.org/wiki/Primality_test#Naive_methods + # If n is not a number but a string, try parsing it. + if not isinstance(n, Number): + try: + n = float(n) + except: + return False + if n == 2 or n == 3: + return True + # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3. + if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0: + return False + # Check all the numbers of form 6k +/- 1, up to sqrt(n). + for x in range(6, int(math.sqrt(n)) + 2, 6): + if n % (x - 1) == 0 or n % (x + 1) == 0: + return False + return True + +# Tests the "number property" blocks. +def test_number_properties(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(42 % 2 == 0, True, 'even') + assertEquals(42.1 % 2 == 1, False, 'odd') + assertEquals(math_isPrime(5), True, 'prime 5') + assertEquals(math_isPrime(5 + 2), True, 'prime 5 + 2 (extra parentheses)') + assertEquals(math_isPrime(25), False, 'prime 25') + assertEquals(math_isPrime(-31.1), False, 'prime negative') + assertEquals(math.pi % 1 == 0, False, 'whole') + assertEquals(float('inf') > 0, True, 'positive') + assertEquals(5 + 2 > 0, True, '5 + 2 is positive (extra parentheses)') + assertEquals(-42 < 0, True, 'negative') + assertEquals(3 + 2 < 0, False, '3 + 2 is negative (extra parentheses)') + assertEquals(42 % 2 == 0, True, 'divisible') + assertEquals(not False, True, 'divisible by 0') + +# Tests the "round" block. +def test_round(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(round(42.42), 42, 'round') + assertEquals(math.ceil(-42.42), -42, 'round up') + assertEquals(math.floor(42.42), 42, 'round down') + +# Tests the "change" block. +def test_change(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + varToChange = 100 + varToChange = (varToChange if isinstance(varToChange, Number) else 0) + 42 + assertEquals(varToChange, 142, 'change') + +def math_mean(myList): + localList = [e for e in myList if isinstance(e, Number)] + if not localList: return + return float(sum(localList)) / len(localList) + +def math_median(myList): + localList = sorted([e for e in myList if isinstance(e, Number)]) + if not localList: return + if len(localList) % 2 == 0: + return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0 + else: + return localList[(len(localList) - 1) // 2] + +def math_modes(some_list): + modes = [] + # Using a lists of [item, count] to keep count rather than dict + # to avoid "unhashable" errors when the counted item is itself a list or dict. + counts = [] + maxCount = 1 + for item in some_list: + found = False + for count in counts: + if count[0] == item: + count[1] += 1 + maxCount = max(maxCount, count[1]) + found = True + if not found: + counts.append([item, 1]) + for counted_item, item_count in counts: + if item_count == maxCount: + modes.append(counted_item) + return modes + +def math_standard_deviation(numbers): + n = len(numbers) + if n == 0: return + mean = float(sum(numbers)) / n + variance = sum((x - mean) ** 2 for x in numbers) / n + return math.sqrt(variance) + +def first_index(my_list, elem): + try: index = my_list.index(elem) + 1 + except: index = 0 + return index + +# Tests the "list operation" blocks. +def test_operations_on_list(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(sum([3, 4, 5]), 12, 'sum') + assertEquals(min([3, 4, 5]), 3, 'min') + assertEquals(max([3, 4, 5]), 5, 'max') + assertEquals(math_mean([3, 4, 5]), 4, 'average') + assertEquals(math_median([3, 4, 5, 1]), 3.5, 'median') + assertEquals(math_modes([3, 4, 3]), [3], 'modes') + assertEquals(math_modes([3, 4, 3, 1, 4]), [3, 4], 'modes multiple') + assertEquals(math_standard_deviation([3, 3, 3]), 0, 'standard dev') + assertEquals(first_index([3, 4, 5], random.choice([3, 4, 5])) > 0, True, 'random') + +# Tests the "mod" block. +def test_mod(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(42 % 5, 2, 'mod') + +# Tests the "constrain" block. +def test_constraint(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(min(max(100, 0), 42), 42, 'constraint') + +# Tests the "random integer" block. +def test_random_integer(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + rand = random.randint(5, 10) + assertEquals(rand >= 5 and rand <= 10, True, 'randRange') + assertEquals(rand % 1 == 0, True, 'randInteger') + +# Tests the "random fraction" block. +def test_random_fraction(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + rand = random.random() + assertEquals(rand >= 0 and rand <= 1, True, 'randFloat') + +# Describe this function... +def test_atan2(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(math.atan2(5, -5) / math.pi * 180, 135, 'atan2') + assertEquals(math.atan2(-12, 0) / math.pi * 180, -90, 'atan2') + +# Checks that the number of calls is one in order +# to confirm that a function was only called once. +def check_number_of_calls(test_name): + global naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + test_name = str(test_name) + 'number of calls' + assertEquals(number_of_calls, 1, test_name) + +# Tests the "create text with" block with varying number of inputs. +def test_create_text(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals('', '', 'no text') + assertEquals('Hello', 'Hello', 'create single') + assertEquals(str(-1), '-1', 'create single number') + assertEquals('K' + str(9), 'K9', 'create double text') + assertEquals(str(4) + str(2), '42', 'create double text numbers') + assertEquals(''.join([str(x2) for x2 in [1, 2, 3]]), '123', 'create triple') + assertEquals(''.join([str(x3) for x3 in [1, 0 if True else None, 'M']]), '10M', 'create order') + +# Creates an empty string for use with the empty test. +def get_empty(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + return '' + +# Tests the "is empty" block". +def test_empty_text(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(not len('Google'), False, 'not empty') + assertEquals(not len(''), True, 'empty') + assertEquals(not len(get_empty()), True, 'empty complex') + assertEquals(not len('' if True else None), True, 'empty order') + +# Tests the "length" block. +def test_text_length(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(len(''), 0, 'zero length') + assertEquals(len('Google'), 6, 'non-zero length') + assertEquals(len('car' if True else None), 3, 'length order') + +# Tests the "append text" block with different types of parameters. +def test_append(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + item = 'Miserable' + item = str(item) + 'Failure' + assertEquals(item, 'MiserableFailure', 'append text') + item = 12 + item = str(item) + str(34) + assertEquals(item, '1234', 'append number') + item = 'Something ' + item = str(item) + str('Positive' if True else None) + assertEquals(item, 'Something Positive', 'append order') + +# Tests the "find" block with a variable. +def test_find_text_simple(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + text = 'Banana' + assertEquals(text.find('an') + 1, 2, 'find first simple') + assertEquals(text.rfind('an') + 1, 4, 'find last simple') + assertEquals(text.find('Peel') + 1, 0, 'find none simple') + +# Creates a string for use with the find test. +def get_fruit(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 + return 'Banana' + +# Tests the "find" block with a function call. +def test_find_text_complex(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = 0 + assertEquals(get_fruit().find('an') + 1, 2, 'find first complex') + check_number_of_calls('find first complex') + number_of_calls = 0 + assertEquals((get_fruit() if True else None).find('an') + 1, 2, 'find first order complex') + check_number_of_calls('find first order complex') + number_of_calls = 0 + assertEquals(get_fruit().rfind('an') + 1, 4, 'find last complex') + check_number_of_calls('find last complex') + number_of_calls = 0 + assertEquals((get_fruit() if True else None).rfind('an') + 1, 4, 'find last order complex') + check_number_of_calls('find last order complex') + number_of_calls = 0 + assertEquals(get_fruit().find('Peel') + 1, 0, 'find none complex') + check_number_of_calls('find none complex') + number_of_calls = 0 + assertEquals((get_fruit() if True else None).find('Peel') + 1, 0, 'find none order complex') + check_number_of_calls('find none order complex') + +def text_random_letter(text): + x = int(random.random() * len(text)) + return text[x] + +# Tests the "get letter" block with a variable. +def test_get_text_simple(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + text = 'Blockly' + assertEquals(text[0], 'B', 'get first simple') + assertEquals(text[-1], 'y', 'get last simple') + assertEquals(text.find(text_random_letter(text)) + 1 > 0, True, 'get random simple') + assertEquals(text[2], 'o', 'get # simple') + assertEquals(text[int((3 if True else None) - 1)], 'o', 'get # order simple') + assertEquals(text[-3], 'k', 'get #-end simple') + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(text[-int(0 + 3)], 'k', 'get #-end order simple') + +# Creates a string for use with the get test. +def get_Blockly(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 + return 'Blockly' + +# Tests the "get letter" block with a function call. +def test_get_text_complex(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + text = 'Blockly' + number_of_calls = 0 + assertEquals(get_Blockly()[0], 'B', 'get first complex') + check_number_of_calls('get first complex') + number_of_calls = 0 + assertEquals((get_Blockly() if True else None)[0], 'B', 'get first order complex') + check_number_of_calls('get first order complex') + number_of_calls = 0 + assertEquals(get_Blockly()[-1], 'y', 'get last complex') + check_number_of_calls('get last complex') + number_of_calls = 0 + assertEquals((get_Blockly() if True else None)[-1], 'y', 'get last order complex') + check_number_of_calls('get last order complex') + number_of_calls = 0 + assertEquals(text.find(text_random_letter(get_Blockly())) + 1 > 0, True, 'get random complex') + check_number_of_calls('get random complex') + number_of_calls = 0 + assertEquals(text.find(text_random_letter(get_Blockly() if True else None)) + 1 > 0, True, 'get random order complex') + check_number_of_calls('get random order complex') + number_of_calls = 0 + assertEquals(get_Blockly()[2], 'o', 'get # complex') + check_number_of_calls('get # complex') + number_of_calls = 0 + assertEquals((get_Blockly() if True else None)[int((3 if True else None) - 1)], 'o', 'get # order complex') + check_number_of_calls('get # order complex') + number_of_calls = 0 + assertEquals(get_Blockly()[-3], 'k', 'get #-end complex') + check_number_of_calls('get #-end complex') + number_of_calls = 0 + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals((get_Blockly() if True else None)[-int(0 + 3)], 'k', 'get #-end order complex') + check_number_of_calls('get #-end order complex') + +# Creates a string for use with the substring test. +def get_numbers(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 + return '123456789' + +# Tests the "get substring" block with a variable. +def test_substring_simple(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + text = '123456789' + assertEquals(text[1 : 3], '23', 'substring # simple') + assertEquals(text[int((2 if True else None) - 1) : int(3 if True else None)], '23', 'substring # simple order') + assertEquals(text[-3 : -1], '78', 'substring #-end simple') + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(text[-int(0 + 3) : -int((0 + 2) - 1) or sys.maxsize], '78', 'substring #-end simple order') + assertEquals(text[ : ], text, 'substring first-last simple') + assertEquals(text[1 : -1], '2345678', 'substring # #-end simple') + assertEquals(text[-7 : 4], '34', 'substring #-end # simple') + assertEquals(text[ : 4], '1234', 'substring first # simple') + assertEquals(text[ : -1], '12345678', 'substring first #-end simple') + assertEquals(text[6 : ], '789', 'substring # last simple') + assertEquals(text[-3 : ], '789', 'substring #-end last simple') + assertEquals(text[ : ], '123456789', 'substring all with # #-end simple') + assertEquals(text[-9 : 9], '123456789', 'substring all with #-end # simple') + # Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + assertEquals(text[int((0 + 1) - 1) : -int((0 + 1) - 1) or sys.maxsize], '123456789', 'substring all with # #-end math simple') + +# Tests the "get substring" block with a function call. +def test_substring_complex(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = 0 + assertEquals(get_numbers()[1 : 3], '23', 'substring # complex') + check_number_of_calls('substring # complex') + number_of_calls = 0 + assertEquals((get_numbers() if True else None)[int((2 if True else None) - 1) : int(3 if True else None)], '23', 'substring # complex order') + check_number_of_calls('substring # complex order') + number_of_calls = 0 + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(get_numbers()[-3 : -1], '78', 'substring #-end complex') + check_number_of_calls('substring #-end complex') + number_of_calls = 0 + assertEquals((get_numbers() if True else None)[-int(0 + 3) : -int((0 + 2) - 1) or sys.maxsize], '78', 'substring #-end order order') + check_number_of_calls('substring #-end order order') + number_of_calls = 0 + assertEquals(get_numbers()[ : ], text, 'substring first-last') + check_number_of_calls('substring first-last') + number_of_calls = 0 + assertEquals(get_numbers()[1 : -1], '2345678', 'substring # #-end complex') + check_number_of_calls('substring # #-end complex') + number_of_calls = 0 + assertEquals(get_numbers()[-7 : 4], '34', 'substring #-end # complex') + check_number_of_calls('substring #-end # complex') + number_of_calls = 0 + assertEquals(get_numbers()[ : 4], '1234', 'substring first # complex') + check_number_of_calls('substring first # complex') + number_of_calls = 0 + assertEquals(get_numbers()[ : -1], '12345678', 'substring first #-end complex') + check_number_of_calls('substring first #-end complex') + number_of_calls = 0 + assertEquals(get_numbers()[6 : ], '789', 'substring # last complex') + check_number_of_calls('substring # last complex') + number_of_calls = 0 + assertEquals(get_numbers()[-3 : ], '789', 'substring #-end last complex') + check_number_of_calls('substring #-end last complex') + number_of_calls = 0 + assertEquals(get_numbers()[ : ], '123456789', 'substring all with # #-end complex') + check_number_of_calls('substring all with # #-end complex') + number_of_calls = 0 + assertEquals(get_numbers()[-9 : 9], '123456789', 'substring all with #-end # complex') + check_number_of_calls('substring all with #-end # complex') + number_of_calls = 0 + # Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + assertEquals(get_numbers()[int((0 + 1) - 1) : -int((0 + 1) - 1) or sys.maxsize], '123456789', 'substring all with # #-end math complex') + check_number_of_calls('substring all with # #-end math complex') + +# Tests the "change casing" block. +def test_case(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + text = 'Hello World' + assertEquals(text.upper(), 'HELLO WORLD', 'uppercase') + assertEquals((text if True else None).upper(), 'HELLO WORLD', 'uppercase order') + text = 'Hello World' + assertEquals(text.lower(), 'hello world', 'lowercase') + assertEquals((text if True else None).lower(), 'hello world', 'lowercase order') + text = 'heLLo WorlD' + assertEquals(text.title(), 'Hello World', 'titlecase') + assertEquals((text if True else None).title(), 'Hello World', 'titlecase order') + +# Tests the "trim" block. +def test_trim(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + text = ' abc def ' + assertEquals(text.strip(), 'abc def', 'trim both') + assertEquals((text if True else None).strip(), 'abc def', 'trim both order') + assertEquals(text.lstrip(), 'abc def ', 'trim left') + assertEquals((text if True else None).lstrip(), 'abc def ', 'trim left order') + assertEquals(text.rstrip(), ' abc def', 'trim right') + assertEquals((text if True else None).rstrip(), ' abc def', 'trim right order') + +# Tests the "trim" block. +def test_count_text(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + text = 'woolloomooloo' + assertEquals(text.count('o'), 8, 'len 1') + assertEquals(text.count('oo'), 4, 'len 2') + assertEquals(text.count('loo'), 2, 'len 3') + assertEquals(text.count('wool'), 1, 'start') + assertEquals(text.count('chicken'), 0, 'missing') + assertEquals(text.count(''), 14, 'empty needle') + assertEquals(''.count('chicken'), 0, 'empty source') + +# Tests the "trim" block. +def test_text_reverse(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(''[::-1], '', 'empty string') + assertEquals('a'[::-1], 'a', 'len 1') + assertEquals('ab'[::-1], 'ba', 'len 2') + assertEquals('woolloomooloo'[::-1], 'ooloomoolloow', 'longer') + +# Tests the "trim" block. +def test_replace(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals('woolloomooloo'.replace('oo', '123'), 'w123ll123m123l123', 'replace all instances 1') + assertEquals('woolloomooloo'.replace('.oo', 'X'), 'woolloomooloo', 'literal string replacement') + assertEquals('woolloomooloo'.replace('abc', 'X'), 'woolloomooloo', 'not found') + assertEquals('woolloomooloo'.replace('o', ''), 'wllml', 'empty replacement 1') + assertEquals('aaaaa'.replace('aaaaa', ''), '', 'empty replacement 2') + assertEquals('aaaaa'.replace('a', ''), '', 'empty replacement 3') + assertEquals(''.replace('a', 'chicken'), '', 'empty source') + +# Tests the "multiline" block. +def test_multiline(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals('', '', 'no text') + assertEquals('Google', 'Google', 'simple') + assertEquals('paragraph' + '\n' + + 'with newlines' + '\n' + + 'yup', 'paragraph' + '\n' + + 'with newlines' + '\n' + + 'yup', 'no compile error with newlines') + assertEquals(('bark bark' + '\n' + + 'bark bark bark' + '\n' + + 'bark bark bark bark').count('bark'), 9, 'count with newlines') + +# Checks that the number of calls is one in order +# to confirm that a function was only called once. +def check_number_of_calls2(test_name): + global naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + test_name = str(test_name) + 'number of calls' + assertEquals(number_of_calls, 1, test_name) + +# Tests the "create list with" and "create empty list" blocks. +def test_create_lists(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals([], [], 'create empty') + assertEquals([True, 'love'], [True, 'love'], 'create items') + assertEquals(['Eject'] * 3, ['Eject', 'Eject', 'Eject'], 'create repeated') + assertEquals(['Eject'] * (0 + 3), ['Eject', 'Eject', 'Eject'], 'create repeated order') + +# Creates an empty list for use with the empty test. +def get_empty_list(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + return [] + +# Tests the "is empty" block. +def test_lists_empty(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(not len([0]), False, 'not empty') + assertEquals(not len([]), True, 'empty') + assertEquals(not len(get_empty_list()), True, 'empty complex') + assertEquals(not len([] if True else None), True, 'empty order') + +# Tests the "length" block. +def test_lists_length(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(len([]), 0, 'zero length') + assertEquals(len(['cat']), 1, 'one length') + assertEquals(len(['cat', True, []]), 3, 'three length') + assertEquals(len(['cat', True] if True else None), 2, 'two length order') + +def last_index(my_list, elem): + try: index = len(my_list) - my_list[::-1].index(elem) + except: index = 0 + return index + +# Tests the "find" block with a variable. +def test_find_lists_simple(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Alice', 'Eve', 'Bob', 'Eve'] + assertEquals(first_index(list2, 'Eve'), 2, 'find first simple') + assertEquals(last_index(list2, 'Eve'), 4, 'find last simple') + assertEquals(first_index(list2, 'Dave'), 0, 'find none simple') + +# Creates a list for use with the find test. +def get_names(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 + return ['Alice', 'Eve', 'Bob', 'Eve'] + +# Tests the "find" block with a function call. +def test_find_lists_complex(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = 0 + assertEquals(first_index(get_names(), 'Eve'), 2, 'find first complex') + check_number_of_calls('find first complex') + number_of_calls = 0 + assertEquals(first_index(get_names() if True else None, 'Eve'), 2, 'find first order complex') + check_number_of_calls('find first order complex') + number_of_calls = 0 + assertEquals(last_index(get_names(), 'Eve'), 4, 'find last complex') + check_number_of_calls('find last complex') + number_of_calls = 0 + assertEquals(last_index(get_names() if True else None, 'Eve'), 4, 'find last order complex') + check_number_of_calls('find last order complex') + number_of_calls = 0 + assertEquals(first_index(get_names(), 'Dave'), 0, 'find none complex') + check_number_of_calls('find none complex') + number_of_calls = 0 + assertEquals(first_index(get_names() if True else None, 'Dave'), 0, 'find none order complex') + check_number_of_calls('find none order complex') + +# Tests the "get" block with a variable. +def test_get_lists_simple(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals(list2[0], 'Kirk', 'get first simple') + assertEquals(list2[-1], 'McCoy', 'get last simple') + assertEquals(first_index(list2, random.choice(list2)) > 0, True, 'get random simple') + assertEquals(list2[1], 'Spock', 'get # simple') + assertEquals(list2[int((2 if True else None) - 1)], 'Spock', 'get # order simple') + assertEquals(list2[-3], 'Kirk', 'get #-end simple') + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list2[-int(0 + 3)], 'Kirk', 'get #-end order simple') + +# Tests the "get" block with create list call. +def test_get_lists_create_list(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(['Kirk', 'Spock', 'McCoy'][0], 'Kirk', 'get first create list') + assertEquals(['Kirk', 'Spock', 'McCoy'][-1], 'McCoy', 'get last simple') + assertEquals(first_index(['Kirk', 'Spock', 'McCoy'], random.choice(['Kirk', 'Spock', 'McCoy'])) > 0, True, 'get random simple') + assertEquals(['Kirk', 'Spock', 'McCoy'][1], 'Spock', 'get # simple') + assertEquals(['Kirk', 'Spock', 'McCoy'][int((2 if True else None) - 1)], 'Spock', 'get # order simple') + assertEquals(['Kirk', 'Spock', 'McCoy'][-3], 'Kirk', 'get #-end simple') + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(['Kirk', 'Spock', 'McCoy'][-int(0 + 3)], 'Kirk', 'get #-end order simple') + +# Creates a list for use with the get test. +def get_star_wars(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 + return ['Kirk', 'Spock', 'McCoy'] + +# Tests the "get" block with a function call. +def test_get_lists_complex(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Kirk', 'Spock', 'McCoy'] + number_of_calls = 0 + assertEquals(get_star_wars()[0], 'Kirk', 'get first complex') + check_number_of_calls('get first complex') + number_of_calls = 0 + assertEquals((get_star_wars() if True else None)[0], 'Kirk', 'get first order complex') + check_number_of_calls('get first order complex') + number_of_calls = 0 + assertEquals(get_star_wars()[-1], 'McCoy', 'get last complex') + check_number_of_calls('get last complex') + number_of_calls = 0 + assertEquals((get_star_wars() if True else None)[-1], 'McCoy', 'get last order complex') + check_number_of_calls('get last order complex') + number_of_calls = 0 + assertEquals(first_index(list2, random.choice(get_star_wars())) > 0, True, 'get random complex') + check_number_of_calls('get random complex') + number_of_calls = 0 + assertEquals(first_index(list2, random.choice(get_star_wars() if True else None)) > 0, True, 'get random order complex') + check_number_of_calls('get random order complex') + number_of_calls = 0 + assertEquals(get_star_wars()[1], 'Spock', 'get # complex') + check_number_of_calls('get # complex') + number_of_calls = 0 + assertEquals((get_star_wars() if True else None)[int((2 if True else None) - 1)], 'Spock', 'get # order complex') + check_number_of_calls('get # order complex') + number_of_calls = 0 + assertEquals(get_star_wars()[-3], 'Kirk', 'get #-end complex') + check_number_of_calls('get #-end complex') + number_of_calls = 0 + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals((get_star_wars() if True else None)[-int(0 + 3)], 'Kirk', 'get #-end order complex') + check_number_of_calls('get #-end order complex') + +def lists_remove_random_item(myList): + x = int(random.random() * len(myList)) + return myList.pop(x) + +# Tests the "get and remove" block. +def test_getRemove(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals(list2.pop(0), 'Kirk', 'getremove first') + assertEquals(list2, ['Spock', 'McCoy'], 'getremove first list') + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals((list2 if True else None).pop(0), 'Kirk', 'getremove first order') + assertEquals(list2, ['Spock', 'McCoy'], 'getremove first order list') + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals(list2.pop(), 'McCoy', 'getremove last') + assertEquals(list2, ['Kirk', 'Spock'], 'getremove last list') + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals((list2 if True else None).pop(), 'McCoy', 'getremove last order') + assertEquals(list2, ['Kirk', 'Spock'], 'getremove last order list') + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals(first_index(list2, lists_remove_random_item(list2)) == 0, True, 'getremove random') + assertEquals(len(list2), 2, 'getremove random list') + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals(first_index(list2, lists_remove_random_item(list2 if True else None)) == 0, True, 'getremove random order') + assertEquals(len(list2), 2, 'getremove random order list') + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals(list2.pop(1), 'Spock', 'getremove #') + assertEquals(list2, ['Kirk', 'McCoy'], 'getremove # list') + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals((list2 if True else None).pop(int((2 if True else None) - 1)), 'Spock', 'getremove # order') + assertEquals(list2, ['Kirk', 'McCoy'], 'getremove # order list') + list2 = ['Kirk', 'Spock', 'McCoy'] + assertEquals(list2.pop(-3), 'Kirk', 'getremove #-end') + assertEquals(list2, ['Spock', 'McCoy'], 'getremove #-end list') + list2 = ['Kirk', 'Spock', 'McCoy'] + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals((list2 if True else None).pop(-int(0 + 3)), 'Kirk', 'getremove #-end order') + assertEquals(list2, ['Spock', 'McCoy'], 'getremove #-end order list') + +# Tests the "remove" block. +def test_remove(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Kirk', 'Spock', 'McCoy'] + list2.pop(0) + assertEquals(list2, ['Spock', 'McCoy'], 'remove first list') + list2 = ['Kirk', 'Spock', 'McCoy'] + (list2 if True else None).pop(0) + assertEquals(list2, ['Spock', 'McCoy'], 'remove first order list') + list2 = ['Kirk', 'Spock', 'McCoy'] + list2.pop() + assertEquals(list2, ['Kirk', 'Spock'], 'remove last list') + list2 = ['Kirk', 'Spock', 'McCoy'] + (list2 if True else None).pop() + assertEquals(list2, ['Kirk', 'Spock'], 'remove last order list') + list2 = ['Kirk', 'Spock', 'McCoy'] + lists_remove_random_item(list2) + assertEquals(len(list2), 2, 'remove random list') + list2 = ['Kirk', 'Spock', 'McCoy'] + lists_remove_random_item(list2 if True else None) + assertEquals(len(list2), 2, 'remove random order list') + list2 = ['Kirk', 'Spock', 'McCoy'] + list2.pop(1) + assertEquals(list2, ['Kirk', 'McCoy'], 'remove # list') + list2 = ['Kirk', 'Spock', 'McCoy'] + (list2 if True else None).pop(int((2 if True else None) - 1)) + assertEquals(list2, ['Kirk', 'McCoy'], 'remove # order list') + list2 = ['Kirk', 'Spock', 'McCoy'] + list2.pop(-3) + assertEquals(list2, ['Spock', 'McCoy'], 'remove #-end list') + list2 = ['Kirk', 'Spock', 'McCoy'] + # The order for index for #-end is addition because this will catch + # errors in generators where most perform the operation ... - index. + (list2 if True else None).pop(-int(0 + 3)) + assertEquals(list2, ['Spock', 'McCoy'], 'remove #-end order list') + +# Tests the "set" block. +def test_set(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Picard', 'Riker', 'Crusher'] + list2[0] = 'Jean-Luc' + assertEquals(list2, ['Jean-Luc', 'Riker', 'Crusher'], 'set first list') + list2 = ['Picard', 'Riker', 'Crusher'] + (list2 if True else None)[0] = 'Jean-Luc' + assertEquals(list2, ['Jean-Luc', 'Riker', 'Crusher'], 'set first order list') + list2 = ['Picard', 'Riker', 'Crusher'] + list2[-1] = 'Beverly' + assertEquals(list2, ['Picard', 'Riker', 'Beverly'], 'set last list') + list2 = ['Picard', 'Riker', 'Crusher'] + (list2 if True else None)[-1] = 'Beverly' + assertEquals(list2, ['Picard', 'Riker', 'Beverly'], 'set last order list') + list2 = ['Picard', 'Riker', 'Crusher'] + tmp_x = int(random.random() * len(list2)) + list2[tmp_x] = 'Data' + assertEquals(len(list2), 3, 'set random list') + list2 = ['Picard', 'Riker', 'Crusher'] + tmp_list = (list2 if True else None) + tmp_x2 = int(random.random() * len(tmp_list)) + tmp_list[tmp_x2] = 'Data' + assertEquals(len(list2), 3, 'set random order list') + list2 = ['Picard', 'Riker', 'Crusher'] + list2[2] = 'Pulaski' + assertEquals(list2, ['Picard', 'Riker', 'Pulaski'], 'set # list') + list2 = ['Picard', 'Riker', 'Crusher'] + (list2 if True else None)[int((3 if True else None) - 1)] = 'Pulaski' + assertEquals(list2, ['Picard', 'Riker', 'Pulaski'], 'set # order list') + list2 = ['Picard', 'Riker', 'Crusher'] + list2[-1] = 'Pulaski' + assertEquals(list2, ['Picard', 'Riker', 'Pulaski'], 'set #-end list') + list2 = ['Picard', 'Riker', 'Crusher'] + # The order for index for #-end is addition because this will catch + # errors in generators where most perform the operation ... - index. + (list2 if True else None)[-int(0 + 2)] = 'Pulaski' + assertEquals(list2, ['Picard', 'Pulaski', 'Crusher'], 'set #-end order list') + +# Tests the "insert" block. +def test_insert(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Picard', 'Riker', 'Crusher'] + list2.insert(0, 'Data') + assertEquals(list2, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first list') + list2 = ['Picard', 'Riker', 'Crusher'] + (list2 if True else None).insert(0, 'Data') + assertEquals(list2, ['Data', 'Picard', 'Riker', 'Crusher'], 'insert first order list') + list2 = ['Picard', 'Riker', 'Crusher'] + list2.append('Data') + assertEquals(list2, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last list') + list2 = ['Picard', 'Riker', 'Crusher'] + (list2 if True else None).append('Data') + assertEquals(list2, ['Picard', 'Riker', 'Crusher', 'Data'], 'insert last order list') + list2 = ['Picard', 'Riker', 'Crusher'] + tmp_x3 = int(random.random() * len(list2)) + list2.insert(tmp_x3, 'Data') + assertEquals(len(list2), 4, 'insert random list') + list2 = ['Picard', 'Riker', 'Crusher'] + tmp_list2 = (list2 if True else None) + tmp_x4 = int(random.random() * len(tmp_list2)) + tmp_list2.insert(tmp_x4, 'Data') + assertEquals(len(list2), 4, 'insert random order list') + list2 = ['Picard', 'Riker', 'Crusher'] + list2.insert(2, 'Data') + assertEquals(list2, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # list') + list2 = ['Picard', 'Riker', 'Crusher'] + (list2 if True else None).insert(int((3 if True else None) - 1), 'Data') + assertEquals(list2, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert # order list') + list2 = ['Picard', 'Riker', 'Crusher'] + list2.insert(-1, 'Data') + assertEquals(list2, ['Picard', 'Riker', 'Data', 'Crusher'], 'insert #-end list') + list2 = ['Picard', 'Riker', 'Crusher'] + # The order for index for #-end is addition because this will catch + # errors in generators where most perform the operation ... - index. + (list2 if True else None).insert(-int(0 + 2), 'Data') + assertEquals(list2, ['Picard', 'Data', 'Riker', 'Crusher'], 'insert #-end order list') + +# Tests the "get sub-list" block with a variable. +def test_sublist_simple(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'] + assertEquals(list2[1 : 3], ['Challenger', 'Discovery'], 'sublist # simple') + assertEquals(list2[int((2 if True else None) - 1) : int(3 if True else None)], ['Challenger', 'Discovery'], 'sublist # simple order') + assertEquals(list2[-3 : -1], ['Discovery', 'Atlantis'], 'sublist #-end simple') + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(list2[-int(0 + 3) : -int((0 + 2) - 1) or sys.maxsize], ['Discovery', 'Atlantis'], 'sublist #-end simple order') + assertEquals(list2[ : ], list2, 'sublist first-last simple') + changing_list = ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'] + list_copy = changing_list[ : ] + lists_remove_random_item(changing_list) + assertEquals(list_copy, list2, 'sublist first-last simple copy check') + assertEquals(list2[1 : -1], ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end simple') + assertEquals(list2[-3 : 4], ['Discovery', 'Atlantis'], 'sublist #-end # simple') + assertEquals(list2[ : 4], ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # simple') + assertEquals(list2[ : -3], ['Columbia', 'Challenger'], 'sublist first #-end simple') + assertEquals(list2[3 : ], ['Atlantis', 'Endeavour'], 'sublist # last simple') + assertEquals(list2[-4 : ], ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple') + assertEquals(list2[ : ], list2, 'sublist all with # #-end simple') + assertEquals(list2[-5 : 5], list2, 'sublist all with #-end # simple') + # Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + assertEquals(list2[int((0 + 1) - 1) : -int((0 + 1) - 1) or sys.maxsize], list2, 'sublist all with # #-end math simple') + +# Creates a list for use with the sublist test. +def get_space_shuttles(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = (number_of_calls if isinstance(number_of_calls, Number) else 0) + 1 + return ['Columbia', 'Challenger', 'Discovery', 'Atlantis', 'Endeavour'] + +# Tests the "get sub-list" block with a function call. +def test_sublist_complex(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + number_of_calls = 0 + assertEquals(get_space_shuttles()[1 : 3], ['Challenger', 'Discovery'], 'sublist # start complex') + check_number_of_calls('sublist # start complex') + number_of_calls = 0 + assertEquals((get_space_shuttles() if True else None)[int((2 if True else None) - 1) : int(3 if True else None)], ['Challenger', 'Discovery'], 'sublist # start order complex') + check_number_of_calls('sublist # start order complex') + number_of_calls = 0 + # The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + assertEquals(get_space_shuttles()[-3 : -1], ['Discovery', 'Atlantis'], 'sublist # end complex') + assertEquals(number_of_calls, 1, 'sublist # end complex number of calls') + number_of_calls = 0 + assertEquals((get_space_shuttles() if True else None)[-int(0 + 3) : -int((0 + 2) - 1) or sys.maxsize], ['Discovery', 'Atlantis'], 'sublist # end order complex') + check_number_of_calls('sublist # end order complex') + number_of_calls = 0 + assertEquals(get_space_shuttles()[ : ], list2, 'sublist first-last complex') + check_number_of_calls('sublist first-last complex') + number_of_calls = 0 + assertEquals(get_space_shuttles()[1 : -1], ['Challenger', 'Discovery', 'Atlantis'], 'sublist # #-end complex') + check_number_of_calls('sublist # #-end complex') + number_of_calls = 0 + assertEquals(get_space_shuttles()[-3 : 4], ['Discovery', 'Atlantis'], 'sublist #-end # complex') + check_number_of_calls('sublist #-end # complex') + number_of_calls = 0 + assertEquals(get_space_shuttles()[ : 4], ['Columbia', 'Challenger', 'Discovery', 'Atlantis'], 'sublist first # complex') + check_number_of_calls('sublist first # complex') + number_of_calls = 0 + assertEquals(get_space_shuttles()[ : -3], ['Columbia', 'Challenger'], 'sublist first #-end complex') + check_number_of_calls('sublist first #-end complex') + number_of_calls = 0 + assertEquals(get_space_shuttles()[3 : ], ['Atlantis', 'Endeavour'], 'sublist # last complex') + check_number_of_calls('sublist # last complex') + number_of_calls = 0 + assertEquals(get_space_shuttles()[-4 : ], ['Challenger', 'Discovery', 'Atlantis', 'Endeavour'], 'sublist #-end last simple') + check_number_of_calls('sublist #-end last simple') + number_of_calls = 0 + assertEquals(get_space_shuttles()[ : ], list2, 'sublist all with # #-end complex') + check_number_of_calls('sublist all with # #-end complex') + number_of_calls = 0 + assertEquals(get_space_shuttles()[-5 : 5], list2, 'sublist all with #-end # complex') + check_number_of_calls('sublist all with #-end # complex') + number_of_calls = 0 + # Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + assertEquals(get_space_shuttles()[int((0 + 1) - 1) : -int((0 + 1) - 1) or sys.maxsize], list2, 'sublist all with # #-end math complex') + check_number_of_calls('sublist all with # #-end math complex') + +# Tests the "join" block. +def test_join(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Vulcan', 'Klingon', 'Borg'] + assertEquals(','.join(list2), 'Vulcan,Klingon,Borg', 'join') + assertEquals(','.join(list2 if True else None), 'Vulcan,Klingon,Borg', 'join order') + +# Tests the "split" block. +def test_split(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + text = 'Vulcan,Klingon,Borg' + assertEquals(text.split(','), ['Vulcan', 'Klingon', 'Borg'], 'split') + assertEquals((text if True else None).split(','), ['Vulcan', 'Klingon', 'Borg'], 'split order') + +def lists_sort(my_list, type, reverse): + def try_float(s): + try: + return float(s) + except: + return 0 + key_funcs = { + "NUMERIC": try_float, + "TEXT": str, + "IGNORE_CASE": lambda s: str(s).lower() + } + key_func = key_funcs[type] + list_cpy = list(my_list) + return sorted(list_cpy, key=key_func, reverse=reverse) + +# Tests the "alphabetic sort" block. +def test_sort_alphabetic(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Vulcan', 'klingon', 'Borg'] + assertEquals(lists_sort(list2, "TEXT", False), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending') + assertEquals(lists_sort(list2 if True else None, "TEXT", False), ['Borg', 'Vulcan', 'klingon'], 'sort alphabetic ascending order') + +# Tests the "alphabetic sort ignore case" block. +def test_sort_ignoreCase(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = ['Vulcan', 'klingon', 'Borg'] + assertEquals(lists_sort(list2, "IGNORE_CASE", False), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending') + assertEquals(lists_sort(list2 if True else None, "IGNORE_CASE", False), ['Borg', 'klingon', 'Vulcan'], 'sort ignore case ascending order') + +# Tests the "numeric sort" block. +def test_sort_numeric(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = [8, 18, -1] + assertEquals(lists_sort(list2, "NUMERIC", True), [18, 8, -1], 'sort numeric descending') + assertEquals(lists_sort(list2 if True else None, "NUMERIC", True), [18, 8, -1], 'sort numeric descending order') + +# Tests the "list reverse" block. +def test_lists_reverse(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + list2 = [8, 18, -1, 64] + assertEquals(list(reversed(list2)), [64, -1, 18, 8], 'reverse a copy') + assertEquals(list2, [8, 18, -1, 64], 'reverse a copy original') + list2 = [] + assertEquals(list(reversed(list2)), [], 'empty list') + +# Describe this function... +def test_colour_picker(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals('#ff6600', '#ff6600', 'static colour') + +def colour_rgb(r, g, b): + r = round(min(100, max(0, r)) * 2.55) + g = round(min(100, max(0, g)) * 2.55) + b = round(min(100, max(0, b)) * 2.55) + return '#%02x%02x%02x' % (r, g, b) + +# Describe this function... +def test_rgb(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(colour_rgb(100, 40, 0), '#ff6600', 'from rgb') + +# Describe this function... +def test_colour_random(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + for count4 in range(100): + item = '#%06x' % random.randint(0, 2**24 - 1) + assertEquals(len(item), 7, 'length of random colour string: ' + str(item)) + assertEquals(item[0], '#', 'format of random colour string: ' + str(item)) + for i in range(1, 7): + assertEquals(0 != 'abcdefABDEF0123456789'.find(item[int((i + 1) - 1)]) + 1, True, ''.join([str(x4) for x4 in ['contents of random colour string: ', item, ' at index: ', i + 1]])) + +def colour_blend(colour1, colour2, ratio): + r1, r2 = int(colour1[1:3], 16), int(colour2[1:3], 16) + g1, g2 = int(colour1[3:5], 16), int(colour2[3:5], 16) + b1, b2 = int(colour1[5:7], 16), int(colour2[5:7], 16) + ratio = min(1, max(0, ratio)) + r = round(r1 * (1 - ratio) + r2 * ratio) + g = round(g1 * (1 - ratio) + g2 * ratio) + b = round(b1 * (1 - ratio) + b2 * ratio) + return '#%02x%02x%02x' % (r, g, b) + +# Describe this function... +def test_blend(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(colour_blend('#ff0000', colour_rgb(100, 40, 0), 0.4), '#ff2900', 'blend') + +# Describe this function... +def test_procedure(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + procedure_1(8, 2) + assertEquals(proc_z, 4, 'procedure with global') + proc_w = False + procedure_2(False) + assertEquals(proc_w, True, 'procedure no return') + proc_w = False + procedure_2(True) + assertEquals(proc_w, False, 'procedure return') + +# Describe this function... +def procedure_1(proc_x, proc_y): + global test_name, naked, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + proc_z = proc_x / proc_y + +# Describe this function... +def procedure_2(proc_x): + global test_name, naked, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + if proc_x: + return + proc_w = True + +# Describe this function... +def test_function(): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + assertEquals(function_1(2, 3), -1, 'function with arguments') + assertEquals(func_z, 'side effect', 'function with side effect') + func_a = 'unchanged' + func_c = 'global' + assertEquals(function_2(2), '3global', 'function with global') + assertEquals(func_a, 'unchanged', 'function with scope') + assertEquals(function_3(True), True, 'function return') + assertEquals(function_3(False), False, 'function no return') + +# Describe this function... +def function_1(func_x, func_y): + global test_name, naked, proc_x, proc_y, func_a, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + func_z = 'side effect' + return func_x - func_y + +# Describe this function... +def function_2(func_a): + global test_name, naked, proc_x, proc_y, func_x, func_y, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + func_a = (func_a if isinstance(func_a, Number) else 0) + 1 + return str(func_a) + str(func_c) + +# Describe this function... +def function_3(func_a): + global test_name, naked, proc_x, proc_y, func_x, func_y, n, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + if func_a: + return True + return False + +# Describe this function... +def recurse(n): + global test_name, naked, proc_x, proc_y, func_x, func_y, func_a, ok, log, count, varToChange, rand, item, text, number_of_calls, list2, proc_z, func_z, x, proc_w, func_c, if2, i, loglist, changing_list, list_copy, unittestResults + if n > 0: + text = ''.join([str(x5) for x5 in [recurse(n - 1), n, recurse(n - 1)]]) + else: + text = '-' + return text + + +unittestResults = [] +print('\n====================\n\nRunning suite: Logic') +assertEquals(True, True, 'True') +assertEquals(False, False, 'False') +assertEquals(not False, True, 'Not true') +assertEquals(not True, False, 'Not false') +test_if() +test_ifelse() +test_equalities() +test_and() +test_or() +test_ternary() +print(unittest_report()) +unittestResults = None + +unittestResults = [] +print('\n====================\n\nRunning suite: Loops 1') +test_repeat() +test_repeat_ext() +test_while() +test_foreach() +print(unittest_report()) +unittestResults = None + +unittestResults = [] +print('\n====================\n\nRunning suite: Loops 2') +test_count_loops() +test_count_by() +print(unittest_report()) +unittestResults = None + +unittestResults = [] +print('\n====================\n\nRunning suite: Loops 3') +test_break() +test_continue() +print(unittest_report()) +unittestResults = None + +unittestResults = [] +print('\n====================\n\nRunning suite: Math') +test_arithmetic() +test_single() +test_trig() +test_constant() +test_change() +test_number_properties() +test_round() +test_operations_on_list() +test_constraint() +test_mod() +test_random_integer() +test_random_fraction() +test_atan2() +print(unittest_report()) +unittestResults = None + +unittestResults = [] +print('\n====================\n\nRunning suite: Text') +test_text_length() +test_empty_text() +test_create_text() +test_append() +test_find_text_simple() +test_find_text_complex() +test_get_text_simple() +test_get_text_complex() +test_substring_simple() +test_substring_complex() +test_case() +test_trim() +test_count_text() +test_text_reverse() +test_replace() +test_multiline() +print(unittest_report()) +unittestResults = None + +unittestResults = [] +print('\n====================\n\nRunning suite: Lists') +test_create_lists() +test_lists_empty() +test_lists_length() +test_find_lists_simple() +test_find_lists_complex() +test_get_lists_simple() +test_get_lists_create_list() +test_get_lists_complex() +test_getRemove() +test_remove() +test_set() +test_insert() +test_sublist_simple() +test_sublist_complex() +test_join() +test_split() +test_sort_alphabetic() +test_sort_ignoreCase() +test_sort_numeric() +test_lists_reverse() +print(unittest_report()) +unittestResults = None + +unittestResults = [] +print('\n====================\n\nRunning suite: Colour') +test_colour_picker() +test_blend() +test_rgb() +test_colour_random() +print(unittest_report()) +unittestResults = None + +unittestResults = [] +print('\n====================\n\nRunning suite: Variables') +item = 123 +assertEquals(item, 123, 'variable') +if2 = 123 +assertEquals(if2, 123, 'reserved variable') +print(unittest_report()) +unittestResults = None + +# Intentionally non-connected variable. +naked + +unittestResults = [] +print('\n====================\n\nRunning suite: Functions') +test_procedure() +test_function() +assertEquals(recurse(3), '-1-2-1-3-1-2-1-', 'test recurse') +print(unittest_report()) +unittestResults = None diff --git a/tests/generators/index.html b/tests/generators/index.html index 9e37f05b6c6..0e72fcc610e 100644 --- a/tests/generators/index.html +++ b/tests/generators/index.html @@ -1,404 +1,404 @@ - - - - -Blockly Generator Tests - - - - - - - - - - - - - - - - -
      - - - -
      -

      Blockly Generator Tests

      - -

      See the docs for details on running the tests. - - -

      - -
      - Logic
      - Loops 1 (repeat, while, foreach)
      - Loops 2 (count)
      - Loops 3 (continue, break)
      - Math
      - Text
      - Lists
      - Colour
      - Variables
      - Functions
      -
      - -

      - - -

      -

      - -

      - -

      - - -

      - -

      - Generate: - -

      - -
      interpreter -
      -
      - -
      interpreter -
      -
      - -
      interpreter -
      -
      - -
      interpreter -
      -
      - -
      interpreter -
      -

      -
      - -
      - - + + + + +Blockly Generator Tests + + + + + + + + + + + + + + + + +
      + + + +
      +

      Blockly Generator Tests

      + +

      See the docs for details on running the tests. + + +

      + +
      + Logic
      + Loops 1 (repeat, while, foreach)
      + Loops 2 (count)
      + Loops 3 (continue, break)
      + Math
      + Text
      + Lists
      + Colour
      + Variables
      + Functions
      +
      + +

      + + +

      +

      + +

      + +

      + + +

      + +

      + Generate: + +

      + +
      interpreter +
      +
      + +
      interpreter +
      +
      + +
      interpreter +
      +
      + +
      interpreter +
      +
      + +
      interpreter +
      +

      +
      + +
      + + diff --git a/tests/generators/lists.xml b/tests/generators/lists.xml index ce8a143694c..2cce6e8808e 100644 --- a/tests/generators/lists.xml +++ b/tests/generators/lists.xml @@ -1,8675 +1,8675 @@ - - - Lists - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - check number of calls - Checks that the number of calls is one in order to confirm that a function was only called once. - - - test name - - - number of calls - - - - - - - test name - - - - - number of calls - - - - - 1 - - - - - - - - - test create lists - Tests the "create list with" and "create empty list" blocks. - - - - - create empty - - - - - - - - - - - - - - - create items - - - - - - - - TRUE - - - - - love - - - - - - - - - - TRUE - - - - - love - - - - - - - - - create repeated - - - - - - - Eject - - - - - 3 - - - - - - - - - - Eject - - - - - Eject - - - - - Eject - - - - - - - - - create repeated order - - - - - - - Eject - - - - - ADD - - - 0 - - - - - 3 - - - - - - - - - - - - Eject - - - - - Eject - - - - - Eject - - - - - - - - - - - - - - - - get empty list - Creates an empty list for use with the empty test. - - - - - - test lists empty - Tests the "is empty" block. - - - FALSE - - - not empty - - - - - - - - - - 0 - - - - - - - - - TRUE - - - empty - - - - - - - - - - - - TRUE - - - empty complex - - - - - - - - - - - - - - TRUE - - - empty order - - - - - - - - - TRUE - - - - - - - - - - - - - - - - - - - - - - - test lists length - Tests the "length" block. - - - - - zero length - - - - - - - - - - - - 0 - - - - - - - one length - - - - - - - - - - cat - - - - - - - - - 1 - - - - - - - three length - - - - - - - - - - cat - - - - - TRUE - - - - - - - - - - - - 3 - - - - - - - two length order - - - - - - - - - TRUE - - - - - - - - cat - - - - - TRUE - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - test find lists simple - Tests the "find" block with a variable. - - - list - - - - - - Alice - - - - - Eve - - - - - Bob - - - - - Eve - - - - - - - - - find first simple - - - - - FIRST - - - list - - - - - Eve - - - - - - - - - 1 - - - - - - - - - find last simple - - - - - LAST - - - list - - - - - Eve - - - - - - - - - 3 - - - - - - - - - find none simple - - - - - FIRST - - - list - - - - - Dave - - - - - - - - - -1 - - - - - - - - - - - - - - - get names - Creates a list for use with the find test. - - - number of calls - - - 1 - - - - - - - - - - Alice - - - - - Eve - - - - - Bob - - - - - Eve - - - - - - - test find lists complex - Tests the "find" block with a function call. - - - number of calls - - - 0 - - - - - - - find first complex - - - - - FIRST - - - - - - - - Eve - - - - - - - - - 1 - - - - - - - - - - - - find first complex - - - - - number of calls - - - 0 - - - - - - - find first order complex - - - - - FIRST - - - - - TRUE - - - - - - - - - - - - - - - Eve - - - - - - - - - 1 - - - - - - - - - - - - find first order complex - - - - - number of calls - - - 0 - - - - - - - find last complex - - - - - LAST - - - - - - - - Eve - - - - - - - - - 3 - - - - - - - - - - - - find last complex - - - - - number of calls - - - 0 - - - - - - - find last order complex - - - - - LAST - - - - - TRUE - - - - - - - - - - - - - - - Eve - - - - - - - - - 3 - - - - - - - - - - - - find last order complex - - - - - number of calls - - - 0 - - - - - - - find none complex - - - - - FIRST - - - - - - - - Dave - - - - - - - - - -1 - - - - - - - - - - - - find none complex - - - - - number of calls - - - 0 - - - - - - - find none order complex - - - - - FIRST - - - - - TRUE - - - - - - - - - - - - - - - Dave - - - - - - - - - -1 - - - - - - - - - - - - find none order complex - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test get lists simple - Tests the "get" block with a variable. - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - get first simple - - - - - - GET - FIRST - - - list - - - - - - - Kirk - - - - - - - get last simple - - - - - - GET - LAST - - - list - - - - - - - McCoy - - - - - TRUE - - - get random simple - - - - - GT - - - FIRST - - - list - - - - - - GET - RANDOM - - - list - - - - - - - - - - - -1 - - - - - - - - - - - get # simple - - - - - - GET - FROM_START - - - list - - - - - - - 1 - - - - - - - - - Spock - - - - - - - get # order simple - - - - - - GET - FROM_START - - - list - - - - - - - TRUE - - - - - - - 1 - - - - - - - - - - - - - - Spock - - - - - - - get #-end simple - - - - - - GET - FROM_END - - - list - - - - - - - 2 - - - - - - - - - Kirk - - - - - - - get #-end order simple - - - - - - GET - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - list - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - - - Kirk - - - - - - - - - - - - - - - - - - - - - test get lists create list - Tests the "get" block with create list call. - - - - - get first create list - - - - - - GET - FIRST - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - Kirk - - - - - - - get last simple - - - - - - GET - LAST - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - McCoy - - - - - TRUE - - - get random simple - - - - - GT - - - FIRST - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - GET - RANDOM - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - - - - - -1 - - - - - - - - - - - get # simple - - - - - - GET - FROM_START - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - 1 - - - - - - - - - Spock - - - - - - - get # order simple - - - - - - GET - FROM_START - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - TRUE - - - - - - - 1 - - - - - - - - - - - - - - Spock - - - - - - - get #-end simple - - - - - - GET - FROM_END - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - 2 - - - - - - - - - Kirk - - - - - - - get #-end order simple - - - - - - GET - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - - - Kirk - - - - - - - - - - - - - - - - - - - get star wars - Creates a list for use with the get test. - - - number of calls - - - 1 - - - - - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - test get lists complex - Tests the "get" block with a function call. - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - number of calls - - - 0 - - - - - - - get first complex - - - - - - GET - FIRST - - - - - - - - - - Kirk - - - - - - - - - - get first complex - - - - - number of calls - - - 0 - - - - - - - get first order complex - - - - - - GET - FIRST - - - - - TRUE - - - - - - - - - - - - - - - - - Kirk - - - - - - - - - - get first order complex - - - - - number of calls - - - 0 - - - - - - - get last complex - - - - - - GET - LAST - - - - - - - - - - McCoy - - - - - - - - - - get last complex - - - - - number of calls - - - 0 - - - - - - - get last order complex - - - - - - GET - LAST - - - - - TRUE - - - - - - - - - - - - - - - - - McCoy - - - - - - - - - - get last order complex - - - - - number of calls - - - 0 - - - - - TRUE - - - get random complex - - - - - GT - - - FIRST - - - list - - - - - - GET - RANDOM - - - - - - - - - - - - - - -1 - - - - - - - - - - - - - - get random complex - - - - - number of calls - - - 0 - - - - - TRUE - - - get random order complex - - - - - GT - - - FIRST - - - list - - - - - - GET - RANDOM - - - - - TRUE - - - - - - - - - - - - - - - - - - - - - -1 - - - - - - - - - - - - - - get random order complex - - - - - number of calls - - - 0 - - - - - - - get # complex - - - - - - GET - FROM_START - - - - - - - - - - 1 - - - - - - - - - Spock - - - - - - - - - - get # complex - - - - - number of calls - - - 0 - - - - - - - get # order complex - - - - - - GET - FROM_START - - - - - TRUE - - - - - - - - - - - - - - - - - TRUE - - - - - - - 1 - - - - - - - - - - - - - - Spock - - - - - - - - - - get # order complex - - - - - number of calls - - - 0 - - - - - - - get #-end complex - - - - - - GET - FROM_END - - - - - - - - - - 2 - - - - - - - - - Kirk - - - - - - - - - - get #-end complex - - - - - number of calls - - - 0 - - - - - - - get #-end order complex - - - - - - GET - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - - - TRUE - - - - - - - - - - - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - - - Kirk - - - - - - - - - - get #-end order complex - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test getRemove - Tests the "get and remove" block. - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - getremove first - - - - - - GET_REMOVE - FIRST - - - list - - - - - - - Kirk - - - - - - - getremove first list - - - - - list - - - - - - - - Spock - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - getremove first order - - - - - - GET_REMOVE - FIRST - - - - - TRUE - - - - - list - - - - - - - - - - - - Kirk - - - - - - - getremove first order list - - - - - list - - - - - - - - Spock - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - getremove last - - - - - - GET_REMOVE - LAST - - - list - - - - - - - McCoy - - - - - - - getremove last list - - - - - list - - - - - - - - Kirk - - - - - Spock - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - getremove last order - - - - - - GET_REMOVE - LAST - - - - - TRUE - - - - - list - - - - - - - - - - - - McCoy - - - - - - - getremove last order list - - - - - list - - - - - - - - Kirk - - - - - Spock - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - TRUE - - - getremove random - - - - - EQ - - - FIRST - - - list - - - - - - GET_REMOVE - RANDOM - - - list - - - - - - - - - - - -1 - - - - - - - - - - - getremove random list - - - - - - - list - - - - - - - 2 - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - TRUE - - - getremove random order - - - - - EQ - - - FIRST - - - list - - - - - - GET_REMOVE - RANDOM - - - - - TRUE - - - - - list - - - - - - - - - - - - - - - - -1 - - - - - - - - - - - getremove random order list - - - - - - - list - - - - - - - 2 - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - getremove # - - - - - - GET_REMOVE - FROM_START - - - list - - - - - - - 1 - - - - - - - - - Spock - - - - - - - getremove # list - - - - - list - - - - - - - - Kirk - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - getremove # order - - - - - - GET_REMOVE - FROM_START - - - - - TRUE - - - - - list - - - - - - - - - - - - TRUE - - - - - - - 1 - - - - - - - - - - - - - - Spock - - - - - - - getremove # order list - - - - - list - - - - - - - - Kirk - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - getremove #-end - - - - - - GET_REMOVE - FROM_END - - - list - - - - - - - 2 - - - - - - - - - Kirk - - - - - - - getremove #-end list - - - - - list - - - - - - - - Spock - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - - getremove #-end order - - - - - - GET_REMOVE - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - - - TRUE - - - - - list - - - - - - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - - - Kirk - - - - - - - getremove #-end order list - - - - - list - - - - - - - - Spock - - - - - McCoy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test remove - Tests the "remove" block. - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - FIRST - - - list - - - - - - - remove first list - - - - - list - - - - - - - - Spock - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - FIRST - - - - - TRUE - - - - - list - - - - - - - - - - - - remove first order list - - - - - list - - - - - - - - Spock - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - LAST - - - list - - - - - - - remove last list - - - - - list - - - - - - - - Kirk - - - - - Spock - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - LAST - - - - - TRUE - - - - - list - - - - - - - - - - - - remove last order list - - - - - list - - - - - - - - Kirk - - - - - Spock - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - RANDOM - - - list - - - - - - - remove random list - - - - - - - list - - - - - - - 2 - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - RANDOM - - - - - TRUE - - - - - list - - - - - - - - - - - - remove random order list - - - - - - - list - - - - - - - 2 - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - FROM_START - - - list - - - - - - - 1 - - - - - - - - - remove # list - - - - - list - - - - - - - - Kirk - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - FROM_START - - - - - TRUE - - - - - list - - - - - - - - - - - - TRUE - - - - - - - 1 - - - - - - - - - - - - - - remove # order list - - - - - list - - - - - - - - Kirk - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - FROM_END - - - list - - - - - - - 2 - - - - - - - - - remove #-end list - - - - - list - - - - - - - - Spock - - - - - McCoy - - - - - - - list - - - - - - Kirk - - - - - Spock - - - - - McCoy - - - - - - - - REMOVE - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - - - TRUE - - - - - list - - - - - - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - - - remove #-end order list - - - - - list - - - - - - - - Spock - - - - - McCoy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test set - Tests the "set" block. - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - FIRST - - - list - - - - - Jean-Luc - - - - - - - set first list - - - - - list - - - - - - - - Jean-Luc - - - - - Riker - - - - - Crusher - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - FIRST - - - - - TRUE - - - - - list - - - - - - - - - - Jean-Luc - - - - - - - set first order list - - - - - list - - - - - - - - Jean-Luc - - - - - Riker - - - - - Crusher - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - LAST - - - list - - - - - Beverly - - - - - - - set last list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Beverly - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - LAST - - - - - TRUE - - - - - list - - - - - - - - - - Beverly - - - - - - - set last order list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Beverly - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - RANDOM - - - list - - - - - Data - - - - - - - set random list - - - - - - - list - - - - - - - 3 - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - RANDOM - - - - - TRUE - - - - - list - - - - - - - - - - Data - - - - - - - set random order list - - - - - - - list - - - - - - - 3 - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - FROM_START - - - list - - - - - - - 2 - - - - - - - Pulaski - - - - - - - set # list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Pulaski - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - FROM_START - - - - - TRUE - - - - - list - - - - - - - - - - - - TRUE - - - - - - - 2 - - - - - - - - - - - - Pulaski - - - - - - - set # order list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Pulaski - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - FROM_END - - - list - - - - - - - 0 - - - - - - - Pulaski - - - - - - - set #-end list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Pulaski - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - SET - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - - - TRUE - - - - - list - - - - - - - - - - ADD - - - 0 - - - - - - - 1 - - - - - - - - - Pulaski - - - - - - - set #-end order list - - - - - list - - - - - - - - Picard - - - - - Pulaski - - - - - Crusher - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test insert - Tests the "insert" block. - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - FIRST - - - list - - - - - Data - - - - - - - insert first list - - - - - list - - - - - - - - Data - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - FIRST - - - - - TRUE - - - - - list - - - - - - - - - - Data - - - - - - - insert first order list - - - - - list - - - - - - - - Data - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - LAST - - - list - - - - - Data - - - - - - - insert last list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - Data - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - LAST - - - - - TRUE - - - - - list - - - - - - - - - - Data - - - - - - - insert last order list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - Data - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - RANDOM - - - list - - - - - Data - - - - - - - insert random list - - - - - - - list - - - - - - - 4 - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - RANDOM - - - - - TRUE - - - - - list - - - - - - - - - - Data - - - - - - - insert random order list - - - - - - - list - - - - - - - 4 - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - FROM_START - - - list - - - - - - - 2 - - - - - - - Data - - - - - - - insert # list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Data - - - - - Crusher - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - FROM_START - - - - - TRUE - - - - - list - - - - - - - - - - - - TRUE - - - - - - - 2 - - - - - - - - - - - - Data - - - - - - - insert # order list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Data - - - - - Crusher - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - FROM_END - - - list - - - - - - - 0 - - - - - - - Data - - - - - - - insert #-end list - - - - - list - - - - - - - - Picard - - - - - Riker - - - - - Data - - - - - Crusher - - - - - - - list - - - - - - Picard - - - - - Riker - - - - - Crusher - - - - - - - - INSERT - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - - - TRUE - - - - - list - - - - - - - - - - ADD - - - 0 - - - - - - - 1 - - - - - - - - - Data - - - - - - - insert #-end order list - - - - - list - - - - - - - - Picard - - - - - Data - - - - - Riker - - - - - Crusher - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test sublist simple - Tests the "get sub-list" block with a variable. - - - list - - - - - - Columbia - - - - - Challenger - - - - - Discovery - - - - - Atlantis - - - - - Endeavour - - - - - - - - - sublist # simple - - - - - - FROM_START - FROM_START - - - list - - - - - - - 1 - - - - - - - - - 2 - - - - - - - - - - - - Challenger - - - - - Discovery - - - - - - - - - sublist # simple order - - - - - - FROM_START - FROM_START - - - list - - - - - - - TRUE - - - - - - - 1 - - - - - - - - - - - - - - TRUE - - - - - - - 2 - - - - - - - - - - - - - - - - - Challenger - - - - - Discovery - - - - - - - - - sublist #-end simple - - - - - - FROM_END - FROM_END - - - list - - - - - - - 2 - - - - - - - - - 1 - - - - - - - - - - - - Discovery - - - - - Atlantis - - - - - - - - - sublist #-end simple order - - - - - - FROM_END - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - list - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - ADD - - - 0 - - - - - - - 1 - - - - - - - - - - - - - - Discovery - - - - - Atlantis - - - - - - - - - sublist first-last simple - - - - - - FIRST - LAST - - - list - - - - - - - list - - - - - changing list - - - - - - Columbia - - - - - Challenger - - - - - Discovery - - - - - Atlantis - - - - - Endeavour - - - - - - - list copy - - - - FIRST - LAST - - - changing list - - - - - - - - REMOVE - RANDOM - - - changing list - - - - - - - sublist first-last simple copy check - - - - - list copy - - - - - list - - - - - - - sublist # #-end simple - - - - - - FROM_START - FROM_END - - - list - - - - - - - 1 - - - - - - - - - 1 - - - - - - - - - - - - Challenger - - - - - Discovery - - - - - Atlantis - - - - - - - - - sublist #-end # simple - - - - - - FROM_END - FROM_START - - - list - - - - - - - 2 - - - - - - - - - 3 - - - - - - - - - - - - Discovery - - - - - Atlantis - - - - - - - - - sublist first # simple - - - - - - FIRST - FROM_START - - - list - - - - - - - 3 - - - - - - - - - - - - Columbia - - - - - Challenger - - - - - Discovery - - - - - Atlantis - - - - - - - - - sublist first #-end simple - - - - - - FIRST - FROM_END - - - list - - - - - - - 3 - - - - - - - - - - - - Columbia - - - - - Challenger - - - - - - - - - sublist # last simple - - - - - - FROM_START - LAST - - - list - - - - - - - 3 - - - - - - - - - - - - Atlantis - - - - - Endeavour - - - - - - - - - sublist #-end last simple - - - - - - FROM_END - LAST - - - list - - - - - - - 3 - - - - - - - - - - - - Challenger - - - - - Discovery - - - - - Atlantis - - - - - Endeavour - - - - - - - - - sublist all with # #-end simple - - - - - - FROM_START - FROM_END - - - list - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - list - - - - - - - sublist all with #-end # simple - - - - - - FROM_END - FROM_START - - - list - - - - - - - 4 - - - - - - - - - 4 - - - - - - - - - list - - - - - - - sublist all with # #-end math simple - - - - - - FROM_START - FROM_END - Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - - - list - - - - - ADD - - - 0 - - - - - - - 0 - - - - - - - - - ADD - - - 0 - - - - - - - 0 - - - - - - - - - - - list - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - get space shuttles - Creates a list for use with the sublist test. - - - number of calls - - - 1 - - - - - - - - - - Columbia - - - - - Challenger - - - - - Discovery - - - - - Atlantis - - - - - Endeavour - - - - - - - test sublist complex - Tests the "get sub-list" block with a function call. - - - number of calls - - - 0 - - - - - - - sublist # start complex - - - - - - FROM_START - FROM_START - - - - - - - - - - 1 - - - - - - - - - 2 - - - - - - - - - - - - Challenger - - - - - Discovery - - - - - - - - - - - - sublist # start complex - - - - - number of calls - - - 0 - - - - - - - sublist # start order complex - - - - - - FROM_START - FROM_START - - - - - TRUE - - - - - - - - - - - - - - - - - TRUE - - - - - - - 1 - - - - - - - - - - - - - - TRUE - - - - - - - 2 - - - - - - - - - - - - - - - - - Challenger - - - - - Discovery - - - - - - - - - - - - sublist # start order complex - - - - - number of calls - - - 0 - - - - - - - sublist # end complex - - - - - - FROM_END - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - - - - - - - - 2 - - - - - - - - - 1 - - - - - - - - - - - - Discovery - - - - - Atlantis - - - - - - - - - sublist # end complex number of calls - - - - - number of calls - - - - - 1 - - - - - number of calls - - - 0 - - - - - - - sublist # end order complex - - - - - - FROM_END - FROM_END - - - - - TRUE - - - - - - - - - - - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - ADD - - - 0 - - - - - - - 1 - - - - - - - - - - - - - - Discovery - - - - - Atlantis - - - - - - - - - - - - sublist # end order complex - - - - - number of calls - - - 0 - - - - - - - sublist first-last complex - - - - - - FIRST - LAST - - - - - - - - - - list - - - - - - - - - - sublist first-last complex - - - - - number of calls - - - 0 - - - - - - - sublist # #-end complex - - - - - - FROM_START - FROM_END - - - - - - - - - - 1 - - - - - - - - - 1 - - - - - - - - - - - - Challenger - - - - - Discovery - - - - - Atlantis - - - - - - - - - - - - sublist # #-end complex - - - - - number of calls - - - 0 - - - - - - - sublist #-end # complex - - - - - - FROM_END - FROM_START - - - - - - - - - - 2 - - - - - - - - - 3 - - - - - - - - - - - - Discovery - - - - - Atlantis - - - - - - - - - - - - sublist #-end # complex - - - - - number of calls - - - 0 - - - - - - - sublist first # complex - - - - - - FIRST - FROM_START - - - - - - - - - - 3 - - - - - - - - - - - - Columbia - - - - - Challenger - - - - - Discovery - - - - - Atlantis - - - - - - - - - - - - sublist first # complex - - - - - number of calls - - - 0 - - - - - - - sublist first #-end complex - - - - - - FIRST - FROM_END - - - - - - - - - - 3 - - - - - - - - - - - - Columbia - - - - - Challenger - - - - - - - - - - - - sublist first #-end complex - - - - - number of calls - - - 0 - - - - - - - sublist # last complex - - - - - - FROM_START - LAST - - - - - - - - - - 3 - - - - - - - - - - - - Atlantis - - - - - Endeavour - - - - - - - - - - - - sublist # last complex - - - - - number of calls - - - 0 - - - - - - - sublist #-end last simple - - - - - - FROM_END - LAST - - - - - - - - - - 3 - - - - - - - - - - - - Challenger - - - - - Discovery - - - - - Atlantis - - - - - Endeavour - - - - - - - - - - - - sublist #-end last simple - - - - - number of calls - - - 0 - - - - - - - sublist all with # #-end complex - - - - - - FROM_START - FROM_END - - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - list - - - - - - - - - - sublist all with # #-end complex - - - - - number of calls - - - 0 - - - - - - - sublist all with #-end # complex - - - - - - FROM_END - FROM_START - - - - - - - - - - 4 - - - - - - - - - 4 - - - - - - - - - list - - - - - - - - - - sublist all with #-end # complex - - - - - number of calls - - - 0 - - - - - - - sublist all with # #-end math complex - - - - - - FROM_START - FROM_END - Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. - - - - - - - - ADD - - - 0 - - - - - - - 0 - - - - - - - - - ADD - - - 0 - - - - - - - 0 - - - - - - - - - - - list - - - - - - - - - - sublist all with # #-end math complex - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test join - Tests the "join" block. - - - list - - - - - - Vulcan - - - - - Klingon - - - - - Borg - - - - - - - - - join - - - - - - JOIN - - - list - - - - - , - - - - - - - Vulcan,Klingon,Borg - - - - - - - join order - - - - - - JOIN - - - - - TRUE - - - - - list - - - - - - - - - - , - - - - - - - Vulcan,Klingon,Borg - - - - - - - - - - - test split - Tests the "split" block. - - - text - - - Vulcan,Klingon,Borg - - - - - - - split - - - - - - SPLIT - - - text - - - - - , - - - - - - - - - - Vulcan - - - - - Klingon - - - - - Borg - - - - - - - - - split order - - - - - - SPLIT - - - - - TRUE - - - - - text - - - - - - - - - - , - - - - - - - - - - Vulcan - - - - - Klingon - - - - - Borg - - - - - - - - - - - - - test sort alphabetic - Tests the "alphabetic sort" block. - - - list - - - - - - Vulcan - - - - - klingon - - - - - Borg - - - - - - - - - sort alphabetic ascending - - - - - TEXT - 1 - - - list - - - - - - - - - - Borg - - - - - Vulcan - - - - - klingon - - - - - - - - - sort alphabetic ascending order - - - - - TEXT - 1 - - - - - TRUE - - - - - list - - - - - - - - - - - - - - - Borg - - - - - Vulcan - - - - - klingon - - - - - - - - - - - - - test sort ignoreCase - Tests the "alphabetic sort ignore case" block. - - - list - - - - - - Vulcan - - - - - klingon - - - - - Borg - - - - - - - - - sort ignore case ascending - - - - - IGNORE_CASE - 1 - - - list - - - - - - - - - - Borg - - - - - klingon - - - - - Vulcan - - - - - - - - - sort ignore case ascending order - - - - - IGNORE_CASE - 1 - - - - - TRUE - - - - - list - - - - - - - - - - - - - - - Borg - - - - - klingon - - - - - Vulcan - - - - - - - - - - - - - test sort numeric - Tests the "numeric sort" block. - - - list - - - - - - 8 - - - - - 18 - - - - - -1 - - - - - - - - - sort numeric descending - - - - - NUMERIC - -1 - - - list - - - - - - - - - - 18 - - - - - 8 - - - - - -1 - - - - - - - - - sort numeric descending order - - - - - NUMERIC - -1 - - - - - TRUE - - - - - list - - - - - - - - - - - - - - - 18 - - - - - 8 - - - - - -1 - - - - - - - - - - - - - test lists reverse - Tests the "list reverse" block. - - - list - - - - - - 8 - - - - - 18 - - - - - -1 - - - - - 64 - - - - - - - - - reverse a copy - - - - - - - list - - - - - - - - - - 64 - - - - - -1 - - - - - 18 - - - - - 8 - - - - - - - - - reverse a copy original - - - - - list - - - - - - - - 8 - - - - - 18 - - - - - -1 - - - - - 64 - - - - - - - list - - - - - - - - empty list - - - - - - - list - - - - - - - - - - - - - - - - - - + + + Lists + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + check number of calls + Checks that the number of calls is one in order to confirm that a function was only called once. + + + test name + + + number of calls + + + + + + + test name + + + + + number of calls + + + + + 1 + + + + + + + + + test create lists + Tests the "create list with" and "create empty list" blocks. + + + + + create empty + + + + + + + + + + + + + + + create items + + + + + + + + TRUE + + + + + love + + + + + + + + + + TRUE + + + + + love + + + + + + + + + create repeated + + + + + + + Eject + + + + + 3 + + + + + + + + + + Eject + + + + + Eject + + + + + Eject + + + + + + + + + create repeated order + + + + + + + Eject + + + + + ADD + + + 0 + + + + + 3 + + + + + + + + + + + + Eject + + + + + Eject + + + + + Eject + + + + + + + + + + + + + + + + get empty list + Creates an empty list for use with the empty test. + + + + + + test lists empty + Tests the "is empty" block. + + + FALSE + + + not empty + + + + + + + + + + 0 + + + + + + + + + TRUE + + + empty + + + + + + + + + + + + TRUE + + + empty complex + + + + + + + + + + + + + + TRUE + + + empty order + + + + + + + + + TRUE + + + + + + + + + + + + + + + + + + + + + + + test lists length + Tests the "length" block. + + + + + zero length + + + + + + + + + + + + 0 + + + + + + + one length + + + + + + + + + + cat + + + + + + + + + 1 + + + + + + + three length + + + + + + + + + + cat + + + + + TRUE + + + + + + + + + + + + 3 + + + + + + + two length order + + + + + + + + + TRUE + + + + + + + + cat + + + + + TRUE + + + + + + + + + + + + + + 2 + + + + + + + + + + + + + test find lists simple + Tests the "find" block with a variable. + + + list + + + + + + Alice + + + + + Eve + + + + + Bob + + + + + Eve + + + + + + + + + find first simple + + + + + FIRST + + + list + + + + + Eve + + + + + + + + + 1 + + + + + + + + + find last simple + + + + + LAST + + + list + + + + + Eve + + + + + + + + + 3 + + + + + + + + + find none simple + + + + + FIRST + + + list + + + + + Dave + + + + + + + + + -1 + + + + + + + + + + + + + + + get names + Creates a list for use with the find test. + + + number of calls + + + 1 + + + + + + + + + + Alice + + + + + Eve + + + + + Bob + + + + + Eve + + + + + + + test find lists complex + Tests the "find" block with a function call. + + + number of calls + + + 0 + + + + + + + find first complex + + + + + FIRST + + + + + + + + Eve + + + + + + + + + 1 + + + + + + + + + + + + find first complex + + + + + number of calls + + + 0 + + + + + + + find first order complex + + + + + FIRST + + + + + TRUE + + + + + + + + + + + + + + + Eve + + + + + + + + + 1 + + + + + + + + + + + + find first order complex + + + + + number of calls + + + 0 + + + + + + + find last complex + + + + + LAST + + + + + + + + Eve + + + + + + + + + 3 + + + + + + + + + + + + find last complex + + + + + number of calls + + + 0 + + + + + + + find last order complex + + + + + LAST + + + + + TRUE + + + + + + + + + + + + + + + Eve + + + + + + + + + 3 + + + + + + + + + + + + find last order complex + + + + + number of calls + + + 0 + + + + + + + find none complex + + + + + FIRST + + + + + + + + Dave + + + + + + + + + -1 + + + + + + + + + + + + find none complex + + + + + number of calls + + + 0 + + + + + + + find none order complex + + + + + FIRST + + + + + TRUE + + + + + + + + + + + + + + + Dave + + + + + + + + + -1 + + + + + + + + + + + + find none order complex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test get lists simple + Tests the "get" block with a variable. + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + get first simple + + + + + + GET + FIRST + + + list + + + + + + + Kirk + + + + + + + get last simple + + + + + + GET + LAST + + + list + + + + + + + McCoy + + + + + TRUE + + + get random simple + + + + + GT + + + FIRST + + + list + + + + + + GET + RANDOM + + + list + + + + + + + + + + + -1 + + + + + + + + + + + get # simple + + + + + + GET + FROM_START + + + list + + + + + + + 1 + + + + + + + + + Spock + + + + + + + get # order simple + + + + + + GET + FROM_START + + + list + + + + + + + TRUE + + + + + + + 1 + + + + + + + + + + + + + + Spock + + + + + + + get #-end simple + + + + + + GET + FROM_END + + + list + + + + + + + 2 + + + + + + + + + Kirk + + + + + + + get #-end order simple + + + + + + GET + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + list + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + + + Kirk + + + + + + + + + + + + + + + + + + + + + test get lists create list + Tests the "get" block with create list call. + + + + + get first create list + + + + + + GET + FIRST + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + Kirk + + + + + + + get last simple + + + + + + GET + LAST + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + McCoy + + + + + TRUE + + + get random simple + + + + + GT + + + FIRST + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + GET + RANDOM + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + + + + + -1 + + + + + + + + + + + get # simple + + + + + + GET + FROM_START + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + 1 + + + + + + + + + Spock + + + + + + + get # order simple + + + + + + GET + FROM_START + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + TRUE + + + + + + + 1 + + + + + + + + + + + + + + Spock + + + + + + + get #-end simple + + + + + + GET + FROM_END + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + 2 + + + + + + + + + Kirk + + + + + + + get #-end order simple + + + + + + GET + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + + + Kirk + + + + + + + + + + + + + + + + + + + get star wars + Creates a list for use with the get test. + + + number of calls + + + 1 + + + + + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + test get lists complex + Tests the "get" block with a function call. + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + number of calls + + + 0 + + + + + + + get first complex + + + + + + GET + FIRST + + + + + + + + + + Kirk + + + + + + + + + + get first complex + + + + + number of calls + + + 0 + + + + + + + get first order complex + + + + + + GET + FIRST + + + + + TRUE + + + + + + + + + + + + + + + + + Kirk + + + + + + + + + + get first order complex + + + + + number of calls + + + 0 + + + + + + + get last complex + + + + + + GET + LAST + + + + + + + + + + McCoy + + + + + + + + + + get last complex + + + + + number of calls + + + 0 + + + + + + + get last order complex + + + + + + GET + LAST + + + + + TRUE + + + + + + + + + + + + + + + + + McCoy + + + + + + + + + + get last order complex + + + + + number of calls + + + 0 + + + + + TRUE + + + get random complex + + + + + GT + + + FIRST + + + list + + + + + + GET + RANDOM + + + + + + + + + + + + + + -1 + + + + + + + + + + + + + + get random complex + + + + + number of calls + + + 0 + + + + + TRUE + + + get random order complex + + + + + GT + + + FIRST + + + list + + + + + + GET + RANDOM + + + + + TRUE + + + + + + + + + + + + + + + + + + + + + -1 + + + + + + + + + + + + + + get random order complex + + + + + number of calls + + + 0 + + + + + + + get # complex + + + + + + GET + FROM_START + + + + + + + + + + 1 + + + + + + + + + Spock + + + + + + + + + + get # complex + + + + + number of calls + + + 0 + + + + + + + get # order complex + + + + + + GET + FROM_START + + + + + TRUE + + + + + + + + + + + + + + + + + TRUE + + + + + + + 1 + + + + + + + + + + + + + + Spock + + + + + + + + + + get # order complex + + + + + number of calls + + + 0 + + + + + + + get #-end complex + + + + + + GET + FROM_END + + + + + + + + + + 2 + + + + + + + + + Kirk + + + + + + + + + + get #-end complex + + + + + number of calls + + + 0 + + + + + + + get #-end order complex + + + + + + GET + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + + + TRUE + + + + + + + + + + + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + + + Kirk + + + + + + + + + + get #-end order complex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test getRemove + Tests the "get and remove" block. + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + getremove first + + + + + + GET_REMOVE + FIRST + + + list + + + + + + + Kirk + + + + + + + getremove first list + + + + + list + + + + + + + + Spock + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + getremove first order + + + + + + GET_REMOVE + FIRST + + + + + TRUE + + + + + list + + + + + + + + + + + + Kirk + + + + + + + getremove first order list + + + + + list + + + + + + + + Spock + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + getremove last + + + + + + GET_REMOVE + LAST + + + list + + + + + + + McCoy + + + + + + + getremove last list + + + + + list + + + + + + + + Kirk + + + + + Spock + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + getremove last order + + + + + + GET_REMOVE + LAST + + + + + TRUE + + + + + list + + + + + + + + + + + + McCoy + + + + + + + getremove last order list + + + + + list + + + + + + + + Kirk + + + + + Spock + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + TRUE + + + getremove random + + + + + EQ + + + FIRST + + + list + + + + + + GET_REMOVE + RANDOM + + + list + + + + + + + + + + + -1 + + + + + + + + + + + getremove random list + + + + + + + list + + + + + + + 2 + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + TRUE + + + getremove random order + + + + + EQ + + + FIRST + + + list + + + + + + GET_REMOVE + RANDOM + + + + + TRUE + + + + + list + + + + + + + + + + + + + + + + -1 + + + + + + + + + + + getremove random order list + + + + + + + list + + + + + + + 2 + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + getremove # + + + + + + GET_REMOVE + FROM_START + + + list + + + + + + + 1 + + + + + + + + + Spock + + + + + + + getremove # list + + + + + list + + + + + + + + Kirk + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + getremove # order + + + + + + GET_REMOVE + FROM_START + + + + + TRUE + + + + + list + + + + + + + + + + + + TRUE + + + + + + + 1 + + + + + + + + + + + + + + Spock + + + + + + + getremove # order list + + + + + list + + + + + + + + Kirk + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + getremove #-end + + + + + + GET_REMOVE + FROM_END + + + list + + + + + + + 2 + + + + + + + + + Kirk + + + + + + + getremove #-end list + + + + + list + + + + + + + + Spock + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + + getremove #-end order + + + + + + GET_REMOVE + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + + + TRUE + + + + + list + + + + + + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + + + Kirk + + + + + + + getremove #-end order list + + + + + list + + + + + + + + Spock + + + + + McCoy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test remove + Tests the "remove" block. + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + FIRST + + + list + + + + + + + remove first list + + + + + list + + + + + + + + Spock + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + FIRST + + + + + TRUE + + + + + list + + + + + + + + + + + + remove first order list + + + + + list + + + + + + + + Spock + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + LAST + + + list + + + + + + + remove last list + + + + + list + + + + + + + + Kirk + + + + + Spock + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + LAST + + + + + TRUE + + + + + list + + + + + + + + + + + + remove last order list + + + + + list + + + + + + + + Kirk + + + + + Spock + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + RANDOM + + + list + + + + + + + remove random list + + + + + + + list + + + + + + + 2 + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + RANDOM + + + + + TRUE + + + + + list + + + + + + + + + + + + remove random order list + + + + + + + list + + + + + + + 2 + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + FROM_START + + + list + + + + + + + 1 + + + + + + + + + remove # list + + + + + list + + + + + + + + Kirk + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + FROM_START + + + + + TRUE + + + + + list + + + + + + + + + + + + TRUE + + + + + + + 1 + + + + + + + + + + + + + + remove # order list + + + + + list + + + + + + + + Kirk + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + FROM_END + + + list + + + + + + + 2 + + + + + + + + + remove #-end list + + + + + list + + + + + + + + Spock + + + + + McCoy + + + + + + + list + + + + + + Kirk + + + + + Spock + + + + + McCoy + + + + + + + + REMOVE + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + + + TRUE + + + + + list + + + + + + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + + + remove #-end order list + + + + + list + + + + + + + + Spock + + + + + McCoy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test set + Tests the "set" block. + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + FIRST + + + list + + + + + Jean-Luc + + + + + + + set first list + + + + + list + + + + + + + + Jean-Luc + + + + + Riker + + + + + Crusher + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + FIRST + + + + + TRUE + + + + + list + + + + + + + + + + Jean-Luc + + + + + + + set first order list + + + + + list + + + + + + + + Jean-Luc + + + + + Riker + + + + + Crusher + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + LAST + + + list + + + + + Beverly + + + + + + + set last list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Beverly + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + LAST + + + + + TRUE + + + + + list + + + + + + + + + + Beverly + + + + + + + set last order list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Beverly + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + RANDOM + + + list + + + + + Data + + + + + + + set random list + + + + + + + list + + + + + + + 3 + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + RANDOM + + + + + TRUE + + + + + list + + + + + + + + + + Data + + + + + + + set random order list + + + + + + + list + + + + + + + 3 + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + FROM_START + + + list + + + + + + + 2 + + + + + + + Pulaski + + + + + + + set # list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Pulaski + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + FROM_START + + + + + TRUE + + + + + list + + + + + + + + + + + + TRUE + + + + + + + 2 + + + + + + + + + + + + Pulaski + + + + + + + set # order list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Pulaski + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + FROM_END + + + list + + + + + + + 0 + + + + + + + Pulaski + + + + + + + set #-end list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Pulaski + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + SET + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + + + TRUE + + + + + list + + + + + + + + + + ADD + + + 0 + + + + + + + 1 + + + + + + + + + Pulaski + + + + + + + set #-end order list + + + + + list + + + + + + + + Picard + + + + + Pulaski + + + + + Crusher + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test insert + Tests the "insert" block. + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + FIRST + + + list + + + + + Data + + + + + + + insert first list + + + + + list + + + + + + + + Data + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + FIRST + + + + + TRUE + + + + + list + + + + + + + + + + Data + + + + + + + insert first order list + + + + + list + + + + + + + + Data + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + LAST + + + list + + + + + Data + + + + + + + insert last list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + Data + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + LAST + + + + + TRUE + + + + + list + + + + + + + + + + Data + + + + + + + insert last order list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + Data + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + RANDOM + + + list + + + + + Data + + + + + + + insert random list + + + + + + + list + + + + + + + 4 + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + RANDOM + + + + + TRUE + + + + + list + + + + + + + + + + Data + + + + + + + insert random order list + + + + + + + list + + + + + + + 4 + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + FROM_START + + + list + + + + + + + 2 + + + + + + + Data + + + + + + + insert # list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Data + + + + + Crusher + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + FROM_START + + + + + TRUE + + + + + list + + + + + + + + + + + + TRUE + + + + + + + 2 + + + + + + + + + + + + Data + + + + + + + insert # order list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Data + + + + + Crusher + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + FROM_END + + + list + + + + + + + 0 + + + + + + + Data + + + + + + + insert #-end list + + + + + list + + + + + + + + Picard + + + + + Riker + + + + + Data + + + + + Crusher + + + + + + + list + + + + + + Picard + + + + + Riker + + + + + Crusher + + + + + + + + INSERT + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + + + TRUE + + + + + list + + + + + + + + + + ADD + + + 0 + + + + + + + 1 + + + + + + + + + Data + + + + + + + insert #-end order list + + + + + list + + + + + + + + Picard + + + + + Data + + + + + Riker + + + + + Crusher + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test sublist simple + Tests the "get sub-list" block with a variable. + + + list + + + + + + Columbia + + + + + Challenger + + + + + Discovery + + + + + Atlantis + + + + + Endeavour + + + + + + + + + sublist # simple + + + + + + FROM_START + FROM_START + + + list + + + + + + + 1 + + + + + + + + + 2 + + + + + + + + + + + + Challenger + + + + + Discovery + + + + + + + + + sublist # simple order + + + + + + FROM_START + FROM_START + + + list + + + + + + + TRUE + + + + + + + 1 + + + + + + + + + + + + + + TRUE + + + + + + + 2 + + + + + + + + + + + + + + + + + Challenger + + + + + Discovery + + + + + + + + + sublist #-end simple + + + + + + FROM_END + FROM_END + + + list + + + + + + + 2 + + + + + + + + + 1 + + + + + + + + + + + + Discovery + + + + + Atlantis + + + + + + + + + sublist #-end simple order + + + + + + FROM_END + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + list + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + ADD + + + 0 + + + + + + + 1 + + + + + + + + + + + + + + Discovery + + + + + Atlantis + + + + + + + + + sublist first-last simple + + + + + + FIRST + LAST + + + list + + + + + + + list + + + + + changing list + + + + + + Columbia + + + + + Challenger + + + + + Discovery + + + + + Atlantis + + + + + Endeavour + + + + + + + list copy + + + + FIRST + LAST + + + changing list + + + + + + + + REMOVE + RANDOM + + + changing list + + + + + + + sublist first-last simple copy check + + + + + list copy + + + + + list + + + + + + + sublist # #-end simple + + + + + + FROM_START + FROM_END + + + list + + + + + + + 1 + + + + + + + + + 1 + + + + + + + + + + + + Challenger + + + + + Discovery + + + + + Atlantis + + + + + + + + + sublist #-end # simple + + + + + + FROM_END + FROM_START + + + list + + + + + + + 2 + + + + + + + + + 3 + + + + + + + + + + + + Discovery + + + + + Atlantis + + + + + + + + + sublist first # simple + + + + + + FIRST + FROM_START + + + list + + + + + + + 3 + + + + + + + + + + + + Columbia + + + + + Challenger + + + + + Discovery + + + + + Atlantis + + + + + + + + + sublist first #-end simple + + + + + + FIRST + FROM_END + + + list + + + + + + + 3 + + + + + + + + + + + + Columbia + + + + + Challenger + + + + + + + + + sublist # last simple + + + + + + FROM_START + LAST + + + list + + + + + + + 3 + + + + + + + + + + + + Atlantis + + + + + Endeavour + + + + + + + + + sublist #-end last simple + + + + + + FROM_END + LAST + + + list + + + + + + + 3 + + + + + + + + + + + + Challenger + + + + + Discovery + + + + + Atlantis + + + + + Endeavour + + + + + + + + + sublist all with # #-end simple + + + + + + FROM_START + FROM_END + + + list + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + list + + + + + + + sublist all with #-end # simple + + + + + + FROM_END + FROM_START + + + list + + + + + + + 4 + + + + + + + + + 4 + + + + + + + + + list + + + + + + + sublist all with # #-end math simple + + + + + + FROM_START + FROM_END + Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + + + list + + + + + ADD + + + 0 + + + + + + + 0 + + + + + + + + + ADD + + + 0 + + + + + + + 0 + + + + + + + + + + + list + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + get space shuttles + Creates a list for use with the sublist test. + + + number of calls + + + 1 + + + + + + + + + + Columbia + + + + + Challenger + + + + + Discovery + + + + + Atlantis + + + + + Endeavour + + + + + + + test sublist complex + Tests the "get sub-list" block with a function call. + + + number of calls + + + 0 + + + + + + + sublist # start complex + + + + + + FROM_START + FROM_START + + + + + + + + + + 1 + + + + + + + + + 2 + + + + + + + + + + + + Challenger + + + + + Discovery + + + + + + + + + + + + sublist # start complex + + + + + number of calls + + + 0 + + + + + + + sublist # start order complex + + + + + + FROM_START + FROM_START + + + + + TRUE + + + + + + + + + + + + + + + + + TRUE + + + + + + + 1 + + + + + + + + + + + + + + TRUE + + + + + + + 2 + + + + + + + + + + + + + + + + + Challenger + + + + + Discovery + + + + + + + + + + + + sublist # start order complex + + + + + number of calls + + + 0 + + + + + + + sublist # end complex + + + + + + FROM_END + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + + + + + + + + 2 + + + + + + + + + 1 + + + + + + + + + + + + Discovery + + + + + Atlantis + + + + + + + + + sublist # end complex number of calls + + + + + number of calls + + + + + 1 + + + + + number of calls + + + 0 + + + + + + + sublist # end order complex + + + + + + FROM_END + FROM_END + + + + + TRUE + + + + + + + + + + + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + ADD + + + 0 + + + + + + + 1 + + + + + + + + + + + + + + Discovery + + + + + Atlantis + + + + + + + + + + + + sublist # end order complex + + + + + number of calls + + + 0 + + + + + + + sublist first-last complex + + + + + + FIRST + LAST + + + + + + + + + + list + + + + + + + + + + sublist first-last complex + + + + + number of calls + + + 0 + + + + + + + sublist # #-end complex + + + + + + FROM_START + FROM_END + + + + + + + + + + 1 + + + + + + + + + 1 + + + + + + + + + + + + Challenger + + + + + Discovery + + + + + Atlantis + + + + + + + + + + + + sublist # #-end complex + + + + + number of calls + + + 0 + + + + + + + sublist #-end # complex + + + + + + FROM_END + FROM_START + + + + + + + + + + 2 + + + + + + + + + 3 + + + + + + + + + + + + Discovery + + + + + Atlantis + + + + + + + + + + + + sublist #-end # complex + + + + + number of calls + + + 0 + + + + + + + sublist first # complex + + + + + + FIRST + FROM_START + + + + + + + + + + 3 + + + + + + + + + + + + Columbia + + + + + Challenger + + + + + Discovery + + + + + Atlantis + + + + + + + + + + + + sublist first # complex + + + + + number of calls + + + 0 + + + + + + + sublist first #-end complex + + + + + + FIRST + FROM_END + + + + + + + + + + 3 + + + + + + + + + + + + Columbia + + + + + Challenger + + + + + + + + + + + + sublist first #-end complex + + + + + number of calls + + + 0 + + + + + + + sublist # last complex + + + + + + FROM_START + LAST + + + + + + + + + + 3 + + + + + + + + + + + + Atlantis + + + + + Endeavour + + + + + + + + + + + + sublist # last complex + + + + + number of calls + + + 0 + + + + + + + sublist #-end last simple + + + + + + FROM_END + LAST + + + + + + + + + + 3 + + + + + + + + + + + + Challenger + + + + + Discovery + + + + + Atlantis + + + + + Endeavour + + + + + + + + + + + + sublist #-end last simple + + + + + number of calls + + + 0 + + + + + + + sublist all with # #-end complex + + + + + + FROM_START + FROM_END + + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + list + + + + + + + + + + sublist all with # #-end complex + + + + + number of calls + + + 0 + + + + + + + sublist all with #-end # complex + + + + + + FROM_END + FROM_START + + + + + + + + + + 4 + + + + + + + + + 4 + + + + + + + + + list + + + + + + + + + + sublist all with #-end # complex + + + + + number of calls + + + 0 + + + + + + + sublist all with # #-end math complex + + + + + + FROM_START + FROM_END + Checks that the whole list is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where sublist uses [x:length - y] for # #-end. + + + + + + + + ADD + + + 0 + + + + + + + 0 + + + + + + + + + ADD + + + 0 + + + + + + + 0 + + + + + + + + + + + list + + + + + + + + + + sublist all with # #-end math complex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test join + Tests the "join" block. + + + list + + + + + + Vulcan + + + + + Klingon + + + + + Borg + + + + + + + + + join + + + + + + JOIN + + + list + + + + + , + + + + + + + Vulcan,Klingon,Borg + + + + + + + join order + + + + + + JOIN + + + + + TRUE + + + + + list + + + + + + + + + + , + + + + + + + Vulcan,Klingon,Borg + + + + + + + + + + + test split + Tests the "split" block. + + + text + + + Vulcan,Klingon,Borg + + + + + + + split + + + + + + SPLIT + + + text + + + + + , + + + + + + + + + + Vulcan + + + + + Klingon + + + + + Borg + + + + + + + + + split order + + + + + + SPLIT + + + + + TRUE + + + + + text + + + + + + + + + + , + + + + + + + + + + Vulcan + + + + + Klingon + + + + + Borg + + + + + + + + + + + + + test sort alphabetic + Tests the "alphabetic sort" block. + + + list + + + + + + Vulcan + + + + + klingon + + + + + Borg + + + + + + + + + sort alphabetic ascending + + + + + TEXT + 1 + + + list + + + + + + + + + + Borg + + + + + Vulcan + + + + + klingon + + + + + + + + + sort alphabetic ascending order + + + + + TEXT + 1 + + + + + TRUE + + + + + list + + + + + + + + + + + + + + + Borg + + + + + Vulcan + + + + + klingon + + + + + + + + + + + + + test sort ignoreCase + Tests the "alphabetic sort ignore case" block. + + + list + + + + + + Vulcan + + + + + klingon + + + + + Borg + + + + + + + + + sort ignore case ascending + + + + + IGNORE_CASE + 1 + + + list + + + + + + + + + + Borg + + + + + klingon + + + + + Vulcan + + + + + + + + + sort ignore case ascending order + + + + + IGNORE_CASE + 1 + + + + + TRUE + + + + + list + + + + + + + + + + + + + + + Borg + + + + + klingon + + + + + Vulcan + + + + + + + + + + + + + test sort numeric + Tests the "numeric sort" block. + + + list + + + + + + 8 + + + + + 18 + + + + + -1 + + + + + + + + + sort numeric descending + + + + + NUMERIC + -1 + + + list + + + + + + + + + + 18 + + + + + 8 + + + + + -1 + + + + + + + + + sort numeric descending order + + + + + NUMERIC + -1 + + + + + TRUE + + + + + list + + + + + + + + + + + + + + + 18 + + + + + 8 + + + + + -1 + + + + + + + + + + + + + test lists reverse + Tests the "list reverse" block. + + + list + + + + + + 8 + + + + + 18 + + + + + -1 + + + + + 64 + + + + + + + + + reverse a copy + + + + + + + list + + + + + + + + + + 64 + + + + + -1 + + + + + 18 + + + + + 8 + + + + + + + + + reverse a copy original + + + + + list + + + + + + + + 8 + + + + + 18 + + + + + -1 + + + + + 64 + + + + + + + list + + + + + + + + empty list + + + + + + + list + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/generators/logic.xml b/tests/generators/logic.xml index d5312d4c6cd..18b5943abb1 100644 --- a/tests/generators/logic.xml +++ b/tests/generators/logic.xml @@ -1,1019 +1,1019 @@ - - - Logic - - - TRUE - - - True - - - - - TRUE - - - - - FALSE - - - False - - - - - FALSE - - - - - TRUE - - - Not true - - - - - - - FALSE - - - - - - - FALSE - - - Not false - - - - - - - TRUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test if - Describe this function... - - - - - FALSE - - - - - if false - - - - - ok - - - FALSE - - - - - - - TRUE - - - - - ok - - - TRUE - - - - - - - TRUE - - - if true - - - - - ok - - - - - ok - - - FALSE - - - - - - - - FALSE - - - - - if/else false - - - - - ok - - - TRUE - - - - - - - TRUE - - - if/else false - - - - - ok - - - - - ok - - - FALSE - - - - - - - - TRUE - - - - - ok - - - TRUE - - - - - - - if/else true - - - - - TRUE - - - if/else true - - - - - ok - - - - - ok - - - FALSE - - - - - - - - FALSE - - - - - elseif 1 - - - - - TRUE - - - - - ok - - - TRUE - - - - - - - TRUE - - - - - elseif 2 - - - - - elseif 3 - - - - - TRUE - - - elseif 4 - - - - - ok - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test ifelse - Describe this function... - - - ok - - - FALSE - - - - - - - TRUE - - - - - ok - - - TRUE - - - - - - - ifelse true - - - - - TRUE - - - ifelse true - - - - - ok - - - - - ok - - - FALSE - - - - - - - FALSE - - - - - ifelse false - - - - - ok - - - TRUE - - - - - - - TRUE - - - ifelse false - - - - - ok - - - - - - - - - - - - - - - - - test equalities - Describe this function... - - - TRUE - - - Equal yes - - - - - EQ - - - 2 - - - - - 2 - - - - - - - FALSE - - - Equal no - - - - - EQ - - - 3 - - - - - 4 - - - - - - - TRUE - - - Not equal yes - - - - - NEQ - - - 5 - - - - - 6 - - - - - - - FALSE - - - Not equal no - - - - - EQ - - - 3 - - - - - 4 - - - - - - - TRUE - - - Smaller yes - - - - - LT - - - 5 - - - - - 6 - - - - - - - FALSE - - - Smaller no - - - - - LT - - - 7 - - - - - 7 - - - - - - - TRUE - - - Greater yes - - - - - GT - - - 9 - - - - - 8 - - - - - - - FALSE - - - Greater no - - - - - GT - - - 10 - - - - - 10 - - - - - - - TRUE - - - Smaller-equal yes - - - - - LTE - - - 11 - - - - - 11 - - - - - - - FALSE - - - Smaller-equal no - - - - - LTE - - - 13 - - - - - 12 - - - - - - - TRUE - - - Greater-equal yes - - - - - GTE - - - 14 - - - - - 14 - - - - - - - FALSE - - - Greater-equal no - - - - - GTE - - - 15 - - - - - 16 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test and - Describe this function... - - - TRUE - - - And true/true - - - - - AND - - - TRUE - - - - - TRUE - - - - - - - FALSE - - - And false/true - - - - - AND - - - FALSE - - - - - TRUE - - - - - - - FALSE - - - And true/false - - - - - AND - - - TRUE - - - - - FALSE - - - - - - - FALSE - - - And false/false - - - - - AND - - - FALSE - - - - - FALSE - - - - - - - - - - - - - - - test or - Describe this function... - - - TRUE - - - Or true/true - - - - - OR - - - TRUE - - - - - TRUE - - - - - - - TRUE - - - Or false/true - - - - - OR - - - FALSE - - - - - TRUE - - - - - - - TRUE - - - Or true/false - - - - - OR - - - TRUE - - - - - FALSE - - - - - - - FALSE - - - Or false/false - - - - - OR - - - FALSE - - - - - FALSE - - - - - - - - - - - - - - - test ternary - Describe this function... - - - - - if true - - - - - - - TRUE - - - - - 42 - - - - - 99 - - - - - - - 42 - - - - - - - if true - - - - - - - FALSE - - - - - 42 - - - - - 99 - - - - - - - 99 - - - - - - - - + + + Logic + + + TRUE + + + True + + + + + TRUE + + + + + FALSE + + + False + + + + + FALSE + + + + + TRUE + + + Not true + + + + + + + FALSE + + + + + + + FALSE + + + Not false + + + + + + + TRUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test if + Describe this function... + + + + + FALSE + + + + + if false + + + + + ok + + + FALSE + + + + + + + TRUE + + + + + ok + + + TRUE + + + + + + + TRUE + + + if true + + + + + ok + + + + + ok + + + FALSE + + + + + + + + FALSE + + + + + if/else false + + + + + ok + + + TRUE + + + + + + + TRUE + + + if/else false + + + + + ok + + + + + ok + + + FALSE + + + + + + + + TRUE + + + + + ok + + + TRUE + + + + + + + if/else true + + + + + TRUE + + + if/else true + + + + + ok + + + + + ok + + + FALSE + + + + + + + + FALSE + + + + + elseif 1 + + + + + TRUE + + + + + ok + + + TRUE + + + + + + + TRUE + + + + + elseif 2 + + + + + elseif 3 + + + + + TRUE + + + elseif 4 + + + + + ok + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test ifelse + Describe this function... + + + ok + + + FALSE + + + + + + + TRUE + + + + + ok + + + TRUE + + + + + + + ifelse true + + + + + TRUE + + + ifelse true + + + + + ok + + + + + ok + + + FALSE + + + + + + + FALSE + + + + + ifelse false + + + + + ok + + + TRUE + + + + + + + TRUE + + + ifelse false + + + + + ok + + + + + + + + + + + + + + + + + test equalities + Describe this function... + + + TRUE + + + Equal yes + + + + + EQ + + + 2 + + + + + 2 + + + + + + + FALSE + + + Equal no + + + + + EQ + + + 3 + + + + + 4 + + + + + + + TRUE + + + Not equal yes + + + + + NEQ + + + 5 + + + + + 6 + + + + + + + FALSE + + + Not equal no + + + + + EQ + + + 3 + + + + + 4 + + + + + + + TRUE + + + Smaller yes + + + + + LT + + + 5 + + + + + 6 + + + + + + + FALSE + + + Smaller no + + + + + LT + + + 7 + + + + + 7 + + + + + + + TRUE + + + Greater yes + + + + + GT + + + 9 + + + + + 8 + + + + + + + FALSE + + + Greater no + + + + + GT + + + 10 + + + + + 10 + + + + + + + TRUE + + + Smaller-equal yes + + + + + LTE + + + 11 + + + + + 11 + + + + + + + FALSE + + + Smaller-equal no + + + + + LTE + + + 13 + + + + + 12 + + + + + + + TRUE + + + Greater-equal yes + + + + + GTE + + + 14 + + + + + 14 + + + + + + + FALSE + + + Greater-equal no + + + + + GTE + + + 15 + + + + + 16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test and + Describe this function... + + + TRUE + + + And true/true + + + + + AND + + + TRUE + + + + + TRUE + + + + + + + FALSE + + + And false/true + + + + + AND + + + FALSE + + + + + TRUE + + + + + + + FALSE + + + And true/false + + + + + AND + + + TRUE + + + + + FALSE + + + + + + + FALSE + + + And false/false + + + + + AND + + + FALSE + + + + + FALSE + + + + + + + + + + + + + + + test or + Describe this function... + + + TRUE + + + Or true/true + + + + + OR + + + TRUE + + + + + TRUE + + + + + + + TRUE + + + Or false/true + + + + + OR + + + FALSE + + + + + TRUE + + + + + + + TRUE + + + Or true/false + + + + + OR + + + TRUE + + + + + FALSE + + + + + + + FALSE + + + Or false/false + + + + + OR + + + FALSE + + + + + FALSE + + + + + + + + + + + + + + + test ternary + Describe this function... + + + + + if true + + + + + + + TRUE + + + + + 42 + + + + + 99 + + + + + + + 42 + + + + + + + if true + + + + + + + FALSE + + + + + 42 + + + + + 99 + + + + + + + 99 + + + + + + + + diff --git a/tests/generators/loops1.xml b/tests/generators/loops1.xml index 9ee2239ea3c..f6d24e759e7 100644 --- a/tests/generators/loops1.xml +++ b/tests/generators/loops1.xml @@ -1,345 +1,345 @@ - - - Loops 1 - - - - - - - - - - - - - - - - - - - - - - - - test foreach - - - log - - - - - - - - x - - - - - - a - - - - - b - - - - - c - - - - - - - log - - - x - - - - - - - - - for loop - - - - - log - - - - - abc - - - - - - - - - - - - test while - - - WHILE - - - FALSE - - - - - while 0 - - - - - UNTIL - - - TRUE - - - - - until 0 - - - - - count - - - 1 - - - - - WHILE - - - NEQ - - - count - - - - - 10 - - - - - - - count - - - 1 - - - - - - - - - while 10 - - - - - count - - - - - 10 - - - - - count - - - 1 - - - - - UNTIL - - - EQ - - - count - - - - - 10 - - - - - - - count - - - 1 - - - - - - - - - until 10 - - - - - count - - - - - 10 - - - - - - - - - - - - - - - - - - - - - - test repeat - - - count - - - 0 - - - - - 10 - - - count - - - 1 - - - - - - - - - repeat 10 - - - - - count - - - - - 10 - - - - - - - - - - - - test repeat_ext - - - count - - - 0 - - - - - - - 10 - - - - - count - - - 1 - - - - - - - - - repeat 10 - - - - - count - - - - - 10 - - - - - - - - - - + + + Loops 1 + + + + + + + + + + + + + + + + + + + + + + + + test foreach + + + log + + + + + + + + x + + + + + + a + + + + + b + + + + + c + + + + + + + log + + + x + + + + + + + + + for loop + + + + + log + + + + + abc + + + + + + + + + + + + test while + + + WHILE + + + FALSE + + + + + while 0 + + + + + UNTIL + + + TRUE + + + + + until 0 + + + + + count + + + 1 + + + + + WHILE + + + NEQ + + + count + + + + + 10 + + + + + + + count + + + 1 + + + + + + + + + while 10 + + + + + count + + + + + 10 + + + + + count + + + 1 + + + + + UNTIL + + + EQ + + + count + + + + + 10 + + + + + + + count + + + 1 + + + + + + + + + until 10 + + + + + count + + + + + 10 + + + + + + + + + + + + + + + + + + + + + + test repeat + + + count + + + 0 + + + + + 10 + + + count + + + 1 + + + + + + + + + repeat 10 + + + + + count + + + + + 10 + + + + + + + + + + + + test repeat_ext + + + count + + + 0 + + + + + + + 10 + + + + + count + + + 1 + + + + + + + + + repeat 10 + + + + + count + + + + + 10 + + + + + + + + + + diff --git a/tests/generators/loops2.xml b/tests/generators/loops2.xml index ae6adfbef69..0110e64a5df 100644 --- a/tests/generators/loops2.xml +++ b/tests/generators/loops2.xml @@ -1,891 +1,891 @@ - - - Loops 2 - - - - - - - - - - - - - test count by - - - log - - - - - - - - x - - - 1 - - - - - 8 - - - - - 2 - - - - - log - - - x - - - - - - - - - count up ints - - - - - log - - - - - 1357 - - - - - log - - - - - - - - x - - - 8 - - - - - 1 - - - - - 2 - - - - - log - - - x - - - - - - - - - count down ints - - - - - log - - - - - 8642 - - - - - loglist - - - - - - x - - - 1 - - - - - 8 - - - - - 1.5 - - - - - - INSERT - LAST - - - loglist - - - - - x - - - - - - - - - count with floats - - - - - loglist - - - - - - - - 1 - - - - - 2.5 - - - - - 4 - - - - - 5.5 - - - - - 7 - - - - - - - loglist - - - - - - x - - - ADD - - - 1 - - - - - 0 - - - - - - - ADD - - - 8 - - - - - 0 - - - - - - - MINUS - - - 1 - - - - - 2 - - - - - - - - INSERT - LAST - - - loglist - - - - - x - - - - - - - - - count up non-trivial ints - - - - - loglist - - - - - - - - 1 - - - - - 2 - - - - - 3 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - - - loglist - - - - - - x - - - ADD - - - 8 - - - - - 0 - - - - - - - ADD - - - 1 - - - - - 0 - - - - - - - 2 - - - - - - INSERT - LAST - - - loglist - - - - - x - - - - - - - - - count down non-trivial ints - - - - - loglist - - - - - - - - 8 - - - - - 6 - - - - - 4 - - - - - 2 - - - - - - - loglist - - - - - - x - - - ADD - - - 5 - - - - - 0.5 - - - - - - - ADD - - - 1 - - - - - 0 - - - - - - - ADD - - - 1 - - - - - 0 - - - - - - - - INSERT - LAST - - - loglist - - - - - x - - - - - - - - - count with floats - - - - - loglist - - - - - - - - 5.5 - - - - - 4.5 - - - - - 3.5 - - - - - 2.5 - - - - - 1.5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test count loops - - - log - - - - - - - - x - - - 1 - - - - - 8 - - - - - log - - - x - - - - - - - - - count up - - - - - log - - - - - 12345678 - - - - - log - - - - - - - - x - - - 8 - - - - - 1 - - - - - log - - - x - - - - - - - - - count down - - - - - log - - - - - 87654321 - - - - - loglist - - - - - - x - - - ADD - - - 1 - - - - - 0 - - - - - - - ADD - - - 4 - - - - - 0 - - - - - - - - INSERT - LAST - - - loglist - - - - - x - - - - - - - - - count up non-trivial - - - - - loglist - - - - - - - - 1 - - - - - 2 - - - - - 3 - - - - - 4 - - - - - - - loglist - - - - - - x - - - ADD - - - 3 - - - - - 1 - - - - - - - ADD - - - 1 - - - - - 0 - - - - - - - - INSERT - LAST - - - loglist - - - - - x - - - - - - - - - count down non-trivial - - - - - loglist - - - - - - - - 4 - - - - - 3 - - - - - 2 - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Loops 2 + + + + + + + + + + + + + test count by + + + log + + + + + + + + x + + + 1 + + + + + 8 + + + + + 2 + + + + + log + + + x + + + + + + + + + count up ints + + + + + log + + + + + 1357 + + + + + log + + + + + + + + x + + + 8 + + + + + 1 + + + + + 2 + + + + + log + + + x + + + + + + + + + count down ints + + + + + log + + + + + 8642 + + + + + loglist + + + + + + x + + + 1 + + + + + 8 + + + + + 1.5 + + + + + + INSERT + LAST + + + loglist + + + + + x + + + + + + + + + count with floats + + + + + loglist + + + + + + + + 1 + + + + + 2.5 + + + + + 4 + + + + + 5.5 + + + + + 7 + + + + + + + loglist + + + + + + x + + + ADD + + + 1 + + + + + 0 + + + + + + + ADD + + + 8 + + + + + 0 + + + + + + + MINUS + + + 1 + + + + + 2 + + + + + + + + INSERT + LAST + + + loglist + + + + + x + + + + + + + + + count up non-trivial ints + + + + + loglist + + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + 5 + + + + + 6 + + + + + 7 + + + + + 8 + + + + + + + loglist + + + + + + x + + + ADD + + + 8 + + + + + 0 + + + + + + + ADD + + + 1 + + + + + 0 + + + + + + + 2 + + + + + + INSERT + LAST + + + loglist + + + + + x + + + + + + + + + count down non-trivial ints + + + + + loglist + + + + + + + + 8 + + + + + 6 + + + + + 4 + + + + + 2 + + + + + + + loglist + + + + + + x + + + ADD + + + 5 + + + + + 0.5 + + + + + + + ADD + + + 1 + + + + + 0 + + + + + + + ADD + + + 1 + + + + + 0 + + + + + + + + INSERT + LAST + + + loglist + + + + + x + + + + + + + + + count with floats + + + + + loglist + + + + + + + + 5.5 + + + + + 4.5 + + + + + 3.5 + + + + + 2.5 + + + + + 1.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test count loops + + + log + + + + + + + + x + + + 1 + + + + + 8 + + + + + log + + + x + + + + + + + + + count up + + + + + log + + + + + 12345678 + + + + + log + + + + + + + + x + + + 8 + + + + + 1 + + + + + log + + + x + + + + + + + + + count down + + + + + log + + + + + 87654321 + + + + + loglist + + + + + + x + + + ADD + + + 1 + + + + + 0 + + + + + + + ADD + + + 4 + + + + + 0 + + + + + + + + INSERT + LAST + + + loglist + + + + + x + + + + + + + + + count up non-trivial + + + + + loglist + + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + + + loglist + + + + + + x + + + ADD + + + 3 + + + + + 1 + + + + + + + ADD + + + 1 + + + + + 0 + + + + + + + + INSERT + LAST + + + loglist + + + + + x + + + + + + + + + count down non-trivial + + + + + loglist + + + + + + + + 4 + + + + + 3 + + + + + 2 + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/generators/loops3.xml b/tests/generators/loops3.xml index 08006bdeadd..a84d1402a1f 100644 --- a/tests/generators/loops3.xml +++ b/tests/generators/loops3.xml @@ -1,735 +1,735 @@ - - - Loops 3 - - - - - - - - - - - - - test continue - - - log - - - - - - - - count - - - 0 - - - - - WHILE - - - NEQ - - - count - - - - - 8 - - - - - - - count - - - 1 - - - - - - - EQ - - - count - - - - - 5 - - - - - - - CONTINUE - - - - - log - - - count - - - - - - - - - - - - - while continue - - - - - log - - - - - 1234678 - - - - - log - - - - - - - - count - - - 0 - - - - - UNTIL - - - EQ - - - count - - - - - 8 - - - - - - - count - - - 1 - - - - - - - EQ - - - count - - - - - 5 - - - - - - - CONTINUE - - - - - log - - - count - - - - - - - - - - - - - until continue - - - - - log - - - - - 1234678 - - - - - log - - - - - - - - x - - - 1 - - - - - 8 - - - - - - - EQ - - - x - - - - - 5 - - - - - - - CONTINUE - - - - - log - - - x - - - - - - - - - - - count continue - - - - - log - - - - - 1234678 - - - - - log - - - - - - - - x - - - - - - a - - - - - b - - - - - c - - - - - d - - - - - - - - - EQ - - - x - - - - - c - - - - - - - CONTINUE - - - - - log - - - x - - - - - - - - - - - for continue - - - - - log - - - - - abd - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test break - - - count - - - 1 - - - - - WHILE - - - NEQ - - - count - - - - - 10 - - - - - - - - - EQ - - - count - - - - - 5 - - - - - - - BREAK - - - - - count - - - 1 - - - - - - - - - - - while break - - - - - count - - - - - 5 - - - - - count - - - 1 - - - - - UNTIL - - - EQ - - - count - - - - - 10 - - - - - - - - - EQ - - - count - - - - - 5 - - - - - - - BREAK - - - - - count - - - 1 - - - - - - - - - - - until break - - - - - count - - - - - 5 - - - - - log - - - - - - - - x - - - 1 - - - - - 8 - - - - - - - EQ - - - x - - - - - 5 - - - - - - - BREAK - - - - - log - - - x - - - - - - - - - - - count break - - - - - log - - - - - 1234 - - - - - log - - - - - - - - x - - - - - - a - - - - - b - - - - - c - - - - - d - - - - - - - - - EQ - - - x - - - - - c - - - - - - - BREAK - - - - - log - - - x - - - - - - - - - - - for break - - - - - log - - - - - ab - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Loops 3 + + + + + + + + + + + + + test continue + + + log + + + + + + + + count + + + 0 + + + + + WHILE + + + NEQ + + + count + + + + + 8 + + + + + + + count + + + 1 + + + + + + + EQ + + + count + + + + + 5 + + + + + + + CONTINUE + + + + + log + + + count + + + + + + + + + + + + + while continue + + + + + log + + + + + 1234678 + + + + + log + + + + + + + + count + + + 0 + + + + + UNTIL + + + EQ + + + count + + + + + 8 + + + + + + + count + + + 1 + + + + + + + EQ + + + count + + + + + 5 + + + + + + + CONTINUE + + + + + log + + + count + + + + + + + + + + + + + until continue + + + + + log + + + + + 1234678 + + + + + log + + + + + + + + x + + + 1 + + + + + 8 + + + + + + + EQ + + + x + + + + + 5 + + + + + + + CONTINUE + + + + + log + + + x + + + + + + + + + + + count continue + + + + + log + + + + + 1234678 + + + + + log + + + + + + + + x + + + + + + a + + + + + b + + + + + c + + + + + d + + + + + + + + + EQ + + + x + + + + + c + + + + + + + CONTINUE + + + + + log + + + x + + + + + + + + + + + for continue + + + + + log + + + + + abd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test break + + + count + + + 1 + + + + + WHILE + + + NEQ + + + count + + + + + 10 + + + + + + + + + EQ + + + count + + + + + 5 + + + + + + + BREAK + + + + + count + + + 1 + + + + + + + + + + + while break + + + + + count + + + + + 5 + + + + + count + + + 1 + + + + + UNTIL + + + EQ + + + count + + + + + 10 + + + + + + + + + EQ + + + count + + + + + 5 + + + + + + + BREAK + + + + + count + + + 1 + + + + + + + + + + + until break + + + + + count + + + + + 5 + + + + + log + + + + + + + + x + + + 1 + + + + + 8 + + + + + + + EQ + + + x + + + + + 5 + + + + + + + BREAK + + + + + log + + + x + + + + + + + + + + + count break + + + + + log + + + + + 1234 + + + + + log + + + + + + + + x + + + + + + a + + + + + b + + + + + c + + + + + d + + + + + + + + + EQ + + + x + + + + + c + + + + + + + BREAK + + + + + log + + + x + + + + + + + + + + + for break + + + + + log + + + + + ab + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/generators/math.xml b/tests/generators/math.xml index 682d143acb8..2d25993cfea 100644 --- a/tests/generators/math.xml +++ b/tests/generators/math.xml @@ -1,2077 +1,2077 @@ - - - varToChange - rand - - - Math - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test single - Tests the "single" block. - - - - - sqrt - - - - - ROOT - - - 25 - - - - - - - 5 - - - - - - - abs - - - - - ABS - - - -25 - - - - - - - 25 - - - - - - - negate - - - - - NEG - - - -25 - - - - - - - 25 - - - - - - - ln - - - - - LN - - - 1 - - - - - - - 0 - - - - - - - log10 - - - - - LOG10 - - - 100 - - - - - - - 2 - - - - - - - exp - - - - - EXP - - - 2 - - - - - - - 7.38905609893065 - - - - - - - power10 - - - - - POW10 - - - 2 - - - - - - - 100 - - - - - - - - - - - - - - - - - - - test arithmetic - Tests the "arithmetic" block for all operations and checks parenthesis are properly generated for different orders. - - - - - add - - - - - ADD - - - 1 - - - - - 2 - - - - - - - 3 - - - - - - - subtract - - - - - MINUS - - - 1 - - - - - 2 - - - - - - - -1 - - - - - - - subtract order with add - - - - - MINUS - - - 1 - - - - - ADD - - - 0 - - - - - 2 - - - - - - - - - -1 - - - - - - - subtract order with subtract - - - - - MINUS - - - 1 - - - - - MINUS - - - 0 - - - - - 2 - - - - - - - - - 3 - - - - - - - multiply - - - - - MULTIPLY - - - 4 - - - - - 2.5 - - - - - - - 10 - - - - - - - multiply order - - - - - MULTIPLY - - - 4 - - - - - ADD - - - 0 - - - - - 2.5 - - - - - - - - - 10 - - - - - - - divide - - - - - DIVIDE - - - 8.2 - - - - - -5 - - - - - - - -1.64 - - - - - - - divide order - - - - - DIVIDE - - - 8.2 - - - - - ADD - - - 0 - - - - - -5 - - - - - - - - - -1.64 - - - - - - - power - - - - - POWER - - - 10 - - - - - 4 - - - - - - - 10000 - - - - - - - power order - - - - - POWER - - - 10 - - - - - ADD - - - 0 - - - - - 4 - - - - - - - - - 10000 - - - - - - - - - - - - - - - - - - - - - - - - - test trig - Tests the "trig" block. - - - - - sin - - - - - SIN - - - 90 - - - - - - - 1 - - - - - - - cos - - - - - COS - - - 180 - - - - - - - -1 - - - - - - - tan - - - - - TAN - - - 0 - - - - - - - 0 - - - - - - - asin - - - - - ASIN - - - -1 - - - - - - - -90 - - - - - - - acos - - - - - ACOS - - - 1 - - - - - - - 0 - - - - - - - atan - - - - - ATAN - - - 1 - - - - - - - 45 - - - - - - - - - - - - - - - - - test constant - Tests the "constant" blocks. - - - - - const pi - - - - - ROUNDDOWN - - - MULTIPLY - - - PI - - - - - 1000 - - - - - - - - - 3141 - - - - - - - const e - - - - - ROUNDDOWN - - - MULTIPLY - - - E - - - - - 1000 - - - - - - - - - 2718 - - - - - - - const golden - - - - - ROUNDDOWN - - - MULTIPLY - - - GOLDEN_RATIO - - - - - 1000 - - - - - - - - - 1618 - - - - - - - const sqrt 2 - - - - - ROUNDDOWN - - - MULTIPLY - - - SQRT2 - - - - - 1000 - - - - - - - - - 1414 - - - - - - - const sqrt 0.5 - - - - - ROUNDDOWN - - - MULTIPLY - - - SQRT1_2 - - - - - 1000 - - - - - - - - - 707 - - - - - TRUE - - - const infinity - - - - - LT - - - 9999 - - - - - INFINITY - - - - - - - - - - - - - - - - - - - test number properties - Tests the "number property" blocks. - - - TRUE - - - even - - - - - - EVEN - - - 42 - - - - - - - FALSE - - - odd - - - - - - ODD - - - 42.1 - - - - - - - TRUE - - - prime 5 - - - - - - PRIME - - - 5 - - - - - - - TRUE - - - prime 5 + 2 (extra parentheses) - - - - - - PRIME - - - ADD - - - 5 - - - - - 2 - - - - - - - - - FALSE - - - prime 25 - - - - - - PRIME - - - 25 - - - - - - - FALSE - - - prime negative - - - - - - PRIME - - - -31.1 - - - - - - - FALSE - - - whole - - - - - - WHOLE - - - PI - - - - - - - TRUE - - - positive - - - - - - POSITIVE - - - INFINITY - - - - - - - TRUE - - - 5 + 2 is positive (extra parentheses) - - - - - - POSITIVE - - - ADD - - - 5 - - - - - 2 - - - - - - - - - TRUE - - - negative - - - - - - NEGATIVE - - - -42 - - - - - - - FALSE - - - 3 + 2 is negative (extra parentheses) - - - - - - NEGATIVE - - - ADD - - - 3 - - - - - 2 - - - - - - - - - TRUE - - - divisible - - - - - - DIVISIBLE_BY - - - 42 - - - - - 2 - - - - - - - TRUE - - - divisible by 0 - - - - - - - - DIVISIBLE_BY - - - 42 - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test round - Tests the "round" block. - - - - - round - - - - - ROUND - - - 42.42 - - - - - - - 42 - - - - - - - round up - - - - - ROUNDUP - - - -42.42 - - - - - - - -42 - - - - - - - round down - - - - - ROUNDDOWN - - - 42.42 - - - - - - - 42 - - - - - - - - - - - test change - Tests the "change" block. - - - varToChange - - - 100 - - - - - varToChange - - - 42 - - - - - - - change - - - - - varToChange - - - - - 142 - - - - - - - - - - - test operations on list - Tests the "list operation" blocks. - - - - - sum - - - - - - SUM - - - - - - 3 - - - - - 4 - - - - - 5 - - - - - - - - - 12 - - - - - - - min - - - - - - MIN - - - - - - 3 - - - - - 4 - - - - - 5 - - - - - - - - - 3 - - - - - - - max - - - - - - MAX - - - - - - 3 - - - - - 4 - - - - - 5 - - - - - - - - - 5 - - - - - - - average - - - - - - AVERAGE - - - - - - 3 - - - - - 4 - - - - - 5 - - - - - - - - - 4 - - - - - - - median - - - - - - MEDIAN - - - - - - 3 - - - - - 4 - - - - - 5 - - - - - 1 - - - - - - - - - 3.5 - - - - - - - modes - - - - - - MODE - - - - - - 3 - - - - - 4 - - - - - 3 - - - - - - - - - - - - 3 - - - - - - - - - modes multiple - - - - - - MODE - - - - - - 3 - - - - - 4 - - - - - 3 - - - - - 1 - - - - - 4 - - - - - - - - - - - - 3 - - - - - 4 - - - - - - - - - standard dev - - - - - - STD_DEV - - - - - - 3 - - - - - 3 - - - - - 3 - - - - - - - - - 0 - - - - - TRUE - - - random - - - - - GT - - - FIRST - - - - - - 3 - - - - - 4 - - - - - 5 - - - - - - - - RANDOM - - - - - - 3 - - - - - 4 - - - - - 5 - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - test mod - Tests the "mod" block. - - - - - mod - - - - - - - 42 - - - - - 5 - - - - - - - 2 - - - - - - - test constraint - Tests the "constrain" block. - - - - - constraint - - - - - - - 100 - - - - - 0 - - - - - 42 - - - - - - - 42 - - - - - - - test random integer - Tests the "random integer" block. - - - rand - - - - - 5 - - - - - 10 - - - - - - - TRUE - - - randRange - - - - - AND - - - GTE - - - rand - - - - - 5 - - - - - - - LTE - - - rand - - - - - 10 - - - - - - - - - TRUE - - - randInteger - - - - - - WHOLE - - - rand - - - - - - - - - - - - - test random fraction - Tests the "random fraction" block. - - - rand - - - - - - TRUE - - - randFloat - - - - - AND - - - GTE - - - rand - - - - - 0 - - - - - - - LTE - - - rand - - - - - 1 - - - - - - - - - - - - - test atan2 - Describe this function... - - - - - atan2 - - - - - - - -5 - - - - - 5 - - - - - - - 135 - - - - - - - atan2 - - - - - - - 0 - - - - - -12 - - - - - - - -90 - - - - - - - - + + + varToChange + rand + + + Math + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test single + Tests the "single" block. + + + + + sqrt + + + + + ROOT + + + 25 + + + + + + + 5 + + + + + + + abs + + + + + ABS + + + -25 + + + + + + + 25 + + + + + + + negate + + + + + NEG + + + -25 + + + + + + + 25 + + + + + + + ln + + + + + LN + + + 1 + + + + + + + 0 + + + + + + + log10 + + + + + LOG10 + + + 100 + + + + + + + 2 + + + + + + + exp + + + + + EXP + + + 2 + + + + + + + 7.38905609893065 + + + + + + + power10 + + + + + POW10 + + + 2 + + + + + + + 100 + + + + + + + + + + + + + + + + + + + test arithmetic + Tests the "arithmetic" block for all operations and checks parenthesis are properly generated for different orders. + + + + + add + + + + + ADD + + + 1 + + + + + 2 + + + + + + + 3 + + + + + + + subtract + + + + + MINUS + + + 1 + + + + + 2 + + + + + + + -1 + + + + + + + subtract order with add + + + + + MINUS + + + 1 + + + + + ADD + + + 0 + + + + + 2 + + + + + + + + + -1 + + + + + + + subtract order with subtract + + + + + MINUS + + + 1 + + + + + MINUS + + + 0 + + + + + 2 + + + + + + + + + 3 + + + + + + + multiply + + + + + MULTIPLY + + + 4 + + + + + 2.5 + + + + + + + 10 + + + + + + + multiply order + + + + + MULTIPLY + + + 4 + + + + + ADD + + + 0 + + + + + 2.5 + + + + + + + + + 10 + + + + + + + divide + + + + + DIVIDE + + + 8.2 + + + + + -5 + + + + + + + -1.64 + + + + + + + divide order + + + + + DIVIDE + + + 8.2 + + + + + ADD + + + 0 + + + + + -5 + + + + + + + + + -1.64 + + + + + + + power + + + + + POWER + + + 10 + + + + + 4 + + + + + + + 10000 + + + + + + + power order + + + + + POWER + + + 10 + + + + + ADD + + + 0 + + + + + 4 + + + + + + + + + 10000 + + + + + + + + + + + + + + + + + + + + + + + + + test trig + Tests the "trig" block. + + + + + sin + + + + + SIN + + + 90 + + + + + + + 1 + + + + + + + cos + + + + + COS + + + 180 + + + + + + + -1 + + + + + + + tan + + + + + TAN + + + 0 + + + + + + + 0 + + + + + + + asin + + + + + ASIN + + + -1 + + + + + + + -90 + + + + + + + acos + + + + + ACOS + + + 1 + + + + + + + 0 + + + + + + + atan + + + + + ATAN + + + 1 + + + + + + + 45 + + + + + + + + + + + + + + + + + test constant + Tests the "constant" blocks. + + + + + const pi + + + + + ROUNDDOWN + + + MULTIPLY + + + PI + + + + + 1000 + + + + + + + + + 3141 + + + + + + + const e + + + + + ROUNDDOWN + + + MULTIPLY + + + E + + + + + 1000 + + + + + + + + + 2718 + + + + + + + const golden + + + + + ROUNDDOWN + + + MULTIPLY + + + GOLDEN_RATIO + + + + + 1000 + + + + + + + + + 1618 + + + + + + + const sqrt 2 + + + + + ROUNDDOWN + + + MULTIPLY + + + SQRT2 + + + + + 1000 + + + + + + + + + 1414 + + + + + + + const sqrt 0.5 + + + + + ROUNDDOWN + + + MULTIPLY + + + SQRT1_2 + + + + + 1000 + + + + + + + + + 707 + + + + + TRUE + + + const infinity + + + + + LT + + + 9999 + + + + + INFINITY + + + + + + + + + + + + + + + + + + + test number properties + Tests the "number property" blocks. + + + TRUE + + + even + + + + + + EVEN + + + 42 + + + + + + + FALSE + + + odd + + + + + + ODD + + + 42.1 + + + + + + + TRUE + + + prime 5 + + + + + + PRIME + + + 5 + + + + + + + TRUE + + + prime 5 + 2 (extra parentheses) + + + + + + PRIME + + + ADD + + + 5 + + + + + 2 + + + + + + + + + FALSE + + + prime 25 + + + + + + PRIME + + + 25 + + + + + + + FALSE + + + prime negative + + + + + + PRIME + + + -31.1 + + + + + + + FALSE + + + whole + + + + + + WHOLE + + + PI + + + + + + + TRUE + + + positive + + + + + + POSITIVE + + + INFINITY + + + + + + + TRUE + + + 5 + 2 is positive (extra parentheses) + + + + + + POSITIVE + + + ADD + + + 5 + + + + + 2 + + + + + + + + + TRUE + + + negative + + + + + + NEGATIVE + + + -42 + + + + + + + FALSE + + + 3 + 2 is negative (extra parentheses) + + + + + + NEGATIVE + + + ADD + + + 3 + + + + + 2 + + + + + + + + + TRUE + + + divisible + + + + + + DIVISIBLE_BY + + + 42 + + + + + 2 + + + + + + + TRUE + + + divisible by 0 + + + + + + + + DIVISIBLE_BY + + + 42 + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test round + Tests the "round" block. + + + + + round + + + + + ROUND + + + 42.42 + + + + + + + 42 + + + + + + + round up + + + + + ROUNDUP + + + -42.42 + + + + + + + -42 + + + + + + + round down + + + + + ROUNDDOWN + + + 42.42 + + + + + + + 42 + + + + + + + + + + + test change + Tests the "change" block. + + + varToChange + + + 100 + + + + + varToChange + + + 42 + + + + + + + change + + + + + varToChange + + + + + 142 + + + + + + + + + + + test operations on list + Tests the "list operation" blocks. + + + + + sum + + + + + + SUM + + + + + + 3 + + + + + 4 + + + + + 5 + + + + + + + + + 12 + + + + + + + min + + + + + + MIN + + + + + + 3 + + + + + 4 + + + + + 5 + + + + + + + + + 3 + + + + + + + max + + + + + + MAX + + + + + + 3 + + + + + 4 + + + + + 5 + + + + + + + + + 5 + + + + + + + average + + + + + + AVERAGE + + + + + + 3 + + + + + 4 + + + + + 5 + + + + + + + + + 4 + + + + + + + median + + + + + + MEDIAN + + + + + + 3 + + + + + 4 + + + + + 5 + + + + + 1 + + + + + + + + + 3.5 + + + + + + + modes + + + + + + MODE + + + + + + 3 + + + + + 4 + + + + + 3 + + + + + + + + + + + + 3 + + + + + + + + + modes multiple + + + + + + MODE + + + + + + 3 + + + + + 4 + + + + + 3 + + + + + 1 + + + + + 4 + + + + + + + + + + + + 3 + + + + + 4 + + + + + + + + + standard dev + + + + + + STD_DEV + + + + + + 3 + + + + + 3 + + + + + 3 + + + + + + + + + 0 + + + + + TRUE + + + random + + + + + GT + + + FIRST + + + + + + 3 + + + + + 4 + + + + + 5 + + + + + + + + RANDOM + + + + + + 3 + + + + + 4 + + + + + 5 + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + test mod + Tests the "mod" block. + + + + + mod + + + + + + + 42 + + + + + 5 + + + + + + + 2 + + + + + + + test constraint + Tests the "constrain" block. + + + + + constraint + + + + + + + 100 + + + + + 0 + + + + + 42 + + + + + + + 42 + + + + + + + test random integer + Tests the "random integer" block. + + + rand + + + + + 5 + + + + + 10 + + + + + + + TRUE + + + randRange + + + + + AND + + + GTE + + + rand + + + + + 5 + + + + + + + LTE + + + rand + + + + + 10 + + + + + + + + + TRUE + + + randInteger + + + + + + WHOLE + + + rand + + + + + + + + + + + + + test random fraction + Tests the "random fraction" block. + + + rand + + + + + + TRUE + + + randFloat + + + + + AND + + + GTE + + + rand + + + + + 0 + + + + + + + LTE + + + rand + + + + + 1 + + + + + + + + + + + + + test atan2 + Describe this function... + + + + + atan2 + + + + + + + -5 + + + + + 5 + + + + + + + 135 + + + + + + + atan2 + + + + + + + 0 + + + + + -12 + + + + + + + -90 + + + + + + + + diff --git a/tests/generators/run_generators_in_browser.js b/tests/generators/run_generators_in_browser.js index 97dcf97276b..cc8bf0e99ae 100644 --- a/tests/generators/run_generators_in_browser.js +++ b/tests/generators/run_generators_in_browser.js @@ -1,112 +1,112 @@ -/** - * @license - * Copyright 2018 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Node.js script to run generator tests in Firefox, via webdriver. - */ -var webdriverio = require('webdriverio'); -var fs = require('fs'); - -module.exports = runGeneratorsInBrowser; - -/** - * Run the generator for a given language and save the results to a file. - * @param {Thenable} browser A Thenable managing the processing of the browser - * tests. - * @param {string} filename Where to write the output file. - * @param {Function} codegenFn The function to run for code generation for this - * language. - */ -async function runLangGeneratorInBrowser(browser, filename, codegenFn) { - await browser.execute(codegenFn); - var elem = await browser.$("#importExport"); - var result = await elem.getValue(); - fs.writeFile(filename, result, function(err) { - if (err) { - return console.log(err); - } - }); -} - -/** - * Runs the generator tests in Chrome. It uses webdriverio to - * launch Chrome and load index.html. Outputs a summary of the test results - * to the console and outputs files for later validation. - * @return the Thenable managing the processing of the browser tests. - */ -async function runGeneratorsInBrowser() { - var options = { - capabilities: { - browserName: 'chrome', - }, - logLevel: 'warn', - services: ['selenium-standalone'] - }; - // Run in headless mode on Github Actions. - if (process.env.CI) { - options.capabilities['goog:chromeOptions'] = { - args: ['--headless', '--no-sandbox', '--disable-dev-shm-usage', '--allow-file-access-from-files'] - }; - } else { - // --disable-gpu is needed to prevent Chrome from hanging on Linux with - // NVIDIA drivers older than v295.20. See - // https://github.com/google/blockly/issues/5345 for details. - options.capabilities['goog:chromeOptions'] = { - args: ['--allow-file-access-from-files', '--disable-gpu'] - }; - } - - var url = 'file://' + __dirname + '/index.html'; - var prefix = 'tests/generators/tmp/generated'; - - console.log('Starting webdriverio...'); - const browser = await webdriverio.remote(options); - console.log('Initialized.\nLoading url: ' + url); - await browser.url(url); - - await browser.execute(function() { - checkAll(); - loadSelected(); - }); - - await runLangGeneratorInBrowser(browser, prefix + '.js', - function() { - toJavaScript(); - }); - await runLangGeneratorInBrowser(browser, prefix + '.py', - function() { - toPython(); - }); - await runLangGeneratorInBrowser(browser, prefix + '.dart', - function() { - toDart(); - }); - await runLangGeneratorInBrowser(browser, prefix + '.lua', - function() { - toLua(); - }); - await runLangGeneratorInBrowser(browser, prefix + '.php', - function() { - toPhp(); - }); - - await browser.deleteSession(); -} - -if (require.main === module) { - runGeneratorsInBrowser().catch(e => { - console.error(e); - process.exit(1); - }).then(function(result) { - if (result) { - console.log('Generator tests failed'); - process.exit(1); - } else { - console.log('Generator tests passed'); - process.exit(0); - } - }); -} +/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Node.js script to run generator tests in Firefox, via webdriver. + */ +var webdriverio = require('webdriverio'); +var fs = require('fs'); + +module.exports = runGeneratorsInBrowser; + +/** + * Run the generator for a given language and save the results to a file. + * @param {Thenable} browser A Thenable managing the processing of the browser + * tests. + * @param {string} filename Where to write the output file. + * @param {Function} codegenFn The function to run for code generation for this + * language. + */ +async function runLangGeneratorInBrowser(browser, filename, codegenFn) { + await browser.execute(codegenFn); + var elem = await browser.$("#importExport"); + var result = await elem.getValue(); + fs.writeFile(filename, result, function(err) { + if (err) { + return console.log(err); + } + }); +} + +/** + * Runs the generator tests in Chrome. It uses webdriverio to + * launch Chrome and load index.html. Outputs a summary of the test results + * to the console and outputs files for later validation. + * @return the Thenable managing the processing of the browser tests. + */ +async function runGeneratorsInBrowser() { + var options = { + capabilities: { + browserName: 'chrome', + }, + logLevel: 'warn', + services: ['selenium-standalone'] + }; + // Run in headless mode on Github Actions. + if (process.env.CI) { + options.capabilities['goog:chromeOptions'] = { + args: ['--headless', '--no-sandbox', '--disable-dev-shm-usage', '--allow-file-access-from-files'] + }; + } else { + // --disable-gpu is needed to prevent Chrome from hanging on Linux with + // NVIDIA drivers older than v295.20. See + // https://github.com/google/blockly/issues/5345 for details. + options.capabilities['goog:chromeOptions'] = { + args: ['--allow-file-access-from-files', '--disable-gpu'] + }; + } + + var url = 'file://' + __dirname + '/index.html'; + var prefix = 'tests/generators/tmp/generated'; + + console.log('Starting webdriverio...'); + const browser = await webdriverio.remote(options); + console.log('Initialized.\nLoading url: ' + url); + await browser.url(url); + + await browser.execute(function() { + checkAll(); + loadSelected(); + }); + + await runLangGeneratorInBrowser(browser, prefix + '.js', + function() { + toJavaScript(); + }); + await runLangGeneratorInBrowser(browser, prefix + '.py', + function() { + toPython(); + }); + await runLangGeneratorInBrowser(browser, prefix + '.dart', + function() { + toDart(); + }); + await runLangGeneratorInBrowser(browser, prefix + '.lua', + function() { + toLua(); + }); + await runLangGeneratorInBrowser(browser, prefix + '.php', + function() { + toPhp(); + }); + + await browser.deleteSession(); +} + +if (require.main === module) { + runGeneratorsInBrowser().catch(e => { + console.error(e); + process.exit(1); + }).then(function(result) { + if (result) { + console.log('Generator tests failed'); + process.exit(1); + } else { + console.log('Generator tests passed'); + process.exit(0); + } + }); +} diff --git a/tests/generators/text.xml b/tests/generators/text.xml index d10593735c6..5edef1267e7 100644 --- a/tests/generators/text.xml +++ b/tests/generators/text.xml @@ -1,4745 +1,4745 @@ - - - Text - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - check number of calls - Checks that the number of calls is one in order to confirm that a function was only called once. - - - test name - - - number of calls - - - - - - - test name - - - - - number of calls - - - - - 1 - - - - - - - - - test create text - Tests the "create text with" block with varying number of inputs. - - - - - no text - - - - - - - - - - - - - - - - - create single - - - - - - - - Hello - - - - - - - Hello - - - - - - - create single number - - - - - - - - -1 - - - - - - - -1 - - - - - - - create double text - - - - - - - - K - - - - - 9 - - - - - - - K9 - - - - - - - create double text numbers - - - - - - - - 4 - - - - - 2 - - - - - - - 42 - - - - - - - create triple - - - - - - - - 1 - - - - - 2 - - - - - 3 - - - - - - - 123 - - - - - - - create order - - - - - - - - 1 - - - - - - - TRUE - - - - - 0 - - - - - - - - - - M - - - - - - - 10M - - - - - - - - - - - - - - - - - - - - get empty - Creates an empty string for use with the empty test. - - - - - - - - test empty text - Tests the "is empty" block". - - - FALSE - - - not empty - - - - - - - Google - - - - - - - TRUE - - - empty - - - - - - - - - - - - - - TRUE - - - empty complex - - - - - - - - - - - - - - TRUE - - - empty order - - - - - - - - - TRUE - - - - - - - - - - - - - - - - - - - - - - - - - test text length - Tests the "length" block. - - - - - zero length - - - - - - - - - - - - - - 0 - - - - - - - non-zero length - - - - - - - Google - - - - - - - 6 - - - - - - - length order - - - - - - - - - TRUE - - - - - car - - - - - - - - - - - - 3 - - - - - - - - - - - test append - Tests the "append text" block with different types of parameters. - - - item - - - Miserable - - - - - item - - - Failure - - - - - - - append text - - - - - item - - - - - MiserableFailure - - - - - item - - - 12 - - - - - item - - - 34 - - - - - - - append number - - - - - item - - - - - 1234 - - - - - item - - - Something - - - - - item - - - - - TRUE - - - - - Positive - - - - - - - - - - - - append order - - - - - item - - - - - Something Positive - - - - - - - - - - - - - - - - - - - - - - - test find text simple - Tests the "find" block with a variable. - - - text - - - Banana - - - - - - - find first simple - - - - - FIRST - - - text - - - - - an - - - - - - - - - 1 - - - - - - - - - find last simple - - - - - LAST - - - text - - - - - an - - - - - - - - - 3 - - - - - - - - - find none simple - - - - - FIRST - - - text - - - - - Peel - - - - - - - - - -1 - - - - - - - - - - - - - - - get fruit - Creates a string for use with the find test. - - - number of calls - - - 1 - - - - - - - Banana - - - - - test find text complex - Tests the "find" block with a function call. - - - number of calls - - - 0 - - - - - - - find first complex - - - - - FIRST - - - - - - - - an - - - - - - - - - 1 - - - - - - - - - - - - find first complex - - - - - number of calls - - - 0 - - - - - - - find first order complex - - - - - FIRST - - - - - TRUE - - - - - - - - - - - - - - - an - - - - - - - - - 1 - - - - - - - - - - - - find first order complex - - - - - number of calls - - - 0 - - - - - - - find last complex - - - - - LAST - - - - - - - - an - - - - - - - - - 3 - - - - - - - - - - - - find last complex - - - - - number of calls - - - 0 - - - - - - - find last order complex - - - - - LAST - - - - - TRUE - - - - - - - - - - - - - - - an - - - - - - - - - 3 - - - - - - - - - - - - find last order complex - - - - - number of calls - - - 0 - - - - - - - find none complex - - - - - FIRST - - - - - - - - Peel - - - - - - - - - -1 - - - - - - - - - - - - find none complex - - - - - number of calls - - - 0 - - - - - - - find none order complex - - - - - FIRST - - - - - TRUE - - - - - - - - - - - - - - - Peel - - - - - - - - - -1 - - - - - - - - - - - - find none order complex - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test get text simple - Tests the "get letter" block with a variable. - - - text - - - Blockly - - - - - - - get first simple - - - - - - FIRST - - - text - - - - - - - B - - - - - - - get last simple - - - - - - LAST - - - text - - - - - - - y - - - - - TRUE - - - get random simple - - - - - GT - - - FIRST - - - text - - - - - - RANDOM - - - text - - - - - - - - - - - -1 - - - - - - - - - - - get # simple - - - - - - FROM_START - - - text - - - - - - - 2 - - - - - - - - - o - - - - - - - get # order simple - - - - - - FROM_START - - - text - - - - - - - TRUE - - - - - - - 2 - - - - - - - - - - - - - - o - - - - - - - get #-end simple - - - - - - FROM_END - - - text - - - - - - - 2 - - - - - - - - - k - - - - - - - get #-end order simple - - - - - - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - text - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - - - k - - - - - - - - - - - - - - - - - - - - - get Blockly - Creates a string for use with the get test. - - - number of calls - - - 1 - - - - - - - Blockly - - - - - test get text complex - Tests the "get letter" block with a function call. - - - text - - - Blockly - - - - - number of calls - - - 0 - - - - - - - get first complex - - - - - - FIRST - - - - - - - - - - B - - - - - - - - - - get first complex - - - - - number of calls - - - 0 - - - - - - - get first order complex - - - - - - FIRST - - - - - TRUE - - - - - - - - - - - - - - - - - B - - - - - - - - - - get first order complex - - - - - number of calls - - - 0 - - - - - - - get last complex - - - - - - LAST - - - - - - - - - - y - - - - - - - - - - get last complex - - - - - number of calls - - - 0 - - - - - - - get last order complex - - - - - - LAST - - - - - TRUE - - - - - - - - - - - - - - - - - y - - - - - - - - - - get last order complex - - - - - number of calls - - - 0 - - - - - TRUE - - - get random complex - - - - - GT - - - FIRST - - - text - - - - - - RANDOM - - - - - - - - - - - - - - -1 - - - - - - - - - - - - - - get random complex - - - - - number of calls - - - 0 - - - - - TRUE - - - get random order complex - - - - - GT - - - FIRST - - - text - - - - - - RANDOM - - - - - TRUE - - - - - - - - - - - - - - - - - - - - - -1 - - - - - - - - - - - - - - get random order complex - - - - - number of calls - - - 0 - - - - - - - get # complex - - - - - - FROM_START - - - - - - - - - - 2 - - - - - - - - - o - - - - - - - - - - get # complex - - - - - number of calls - - - 0 - - - - - - - get # order complex - - - - - - FROM_START - - - - - TRUE - - - - - - - - - - - - - - - - - TRUE - - - - - - - 2 - - - - - - - - - - - - - - o - - - - - - - - - - get # order complex - - - - - number of calls - - - 0 - - - - - - - get #-end complex - - - - - - FROM_END - - - - - - - - - - 2 - - - - - - - - - k - - - - - - - - - - get #-end complex - - - - - number of calls - - - 0 - - - - - - - get #-end order complex - - - - - - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - - - TRUE - - - - - - - - - - - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - - - k - - - - - - - - - - get #-end order complex - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - get numbers - Creates a string for use with the substring test. - - - number of calls - - - 1 - - - - - - - 123456789 - - - - - test substring simple - Tests the "get substring" block with a variable. - - - text - - - 123456789 - - - - - - - substring # simple - - - - - - FROM_START - FROM_START - - - text - - - - - - - 1 - - - - - - - - - 2 - - - - - - - - - 23 - - - - - - - substring # simple order - - - - - - FROM_START - FROM_START - - - text - - - - - - - TRUE - - - - - - - 1 - - - - - - - - - - - - - - TRUE - - - - - - - 2 - - - - - - - - - - - - - - 23 - - - - - - - substring #-end simple - - - - - - FROM_END - FROM_END - - - text - - - - - - - 2 - - - - - - - - - 1 - - - - - - - - - 78 - - - - - - - substring #-end simple order - - - - - - FROM_END - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - text - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - ADD - - - 0 - - - - - - - 1 - - - - - - - - - - - 78 - - - - - - - substring first-last simple - - - - - - FIRST - LAST - - - text - - - - - - - text - - - - - - - substring # #-end simple - - - - - - FROM_START - FROM_END - - - text - - - - - - - 1 - - - - - - - - - 1 - - - - - - - - - 2345678 - - - - - - - substring #-end # simple - - - - - - FROM_END - FROM_START - - - text - - - - - - - 6 - - - - - - - - - 3 - - - - - - - - - 34 - - - - - - - substring first # simple - - - - - - FIRST - FROM_START - - - text - - - - - - - 3 - - - - - - - - - 1234 - - - - - - - substring first #-end simple - - - - - - FIRST - FROM_END - - - text - - - - - - - 1 - - - - - - - - - 12345678 - - - - - - - substring # last simple - - - - - - FROM_START - LAST - - - text - - - - - - - 6 - - - - - - - - - 789 - - - - - - - substring #-end last simple - - - - - - FROM_END - LAST - - - text - - - - - - - 2 - - - - - - - - - 789 - - - - - - - substring all with # #-end simple - - - - - - FROM_START - FROM_END - - - text - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 123456789 - - - - - - - substring all with #-end # simple - - - - - - FROM_END - FROM_START - - - text - - - - - - - 8 - - - - - - - - - 8 - - - - - - - - - 123456789 - - - - - - - substring all with # #-end math simple - - - - - - FROM_START - FROM_END - Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - - - text - - - - - ADD - - - 0 - - - - - - - 0 - - - - - - - - - ADD - - - 0 - - - - - - - 0 - - - - - - - - - - - 123456789 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test substring complex - Tests the "get substring" block with a function call. - - - number of calls - - - 0 - - - - - - - substring # complex - - - - - - FROM_START - FROM_START - - - - - - - - - - 1 - - - - - - - - - 2 - - - - - - - - - 23 - - - - - - - - - - substring # complex - - - - - number of calls - - - 0 - - - - - - - substring # complex order - - - - - - FROM_START - FROM_START - - - - - TRUE - - - - - - - - - - - - - - - - - TRUE - - - - - - - 1 - - - - - - - - - - - - - - TRUE - - - - - - - 2 - - - - - - - - - - - - - - 23 - - - - - - - - - - substring # complex order - - - - - number of calls - - - 0 - - - - - - - substring #-end complex - - - - - - FROM_END - FROM_END - The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. - - - - - - - - - - 2 - - - - - - - - - 1 - - - - - - - - - 78 - - - - - - - - - - substring #-end complex - - - - - number of calls - - - 0 - - - - - - - substring #-end order order - - - - - - FROM_END - FROM_END - - - - - TRUE - - - - - - - - - - - - - - - ADD - - - 0 - - - - - - - 2 - - - - - - - - - ADD - - - 0 - - - - - - - 1 - - - - - - - - - - - 78 - - - - - - - - - - substring #-end order order - - - - - number of calls - - - 0 - - - - - - - substring first-last - - - - - - FIRST - LAST - - - - - - - - - - text - - - - - - - - - - substring first-last - - - - - number of calls - - - 0 - - - - - - - substring # #-end complex - - - - - - FROM_START - FROM_END - - - - - - - - - - 1 - - - - - - - - - 1 - - - - - - - - - 2345678 - - - - - - - - - - substring # #-end complex - - - - - number of calls - - - 0 - - - - - - - substring #-end # complex - - - - - - FROM_END - FROM_START - - - - - - - - - - 6 - - - - - - - - - 3 - - - - - - - - - 34 - - - - - - - - - - substring #-end # complex - - - - - number of calls - - - 0 - - - - - - - substring first # complex - - - - - - FIRST - FROM_START - - - - - - - - - - 3 - - - - - - - - - 1234 - - - - - - - - - - substring first # complex - - - - - number of calls - - - 0 - - - - - - - substring first #-end complex - - - - - - FIRST - FROM_END - - - - - - - - - - 1 - - - - - - - - - 12345678 - - - - - - - - - - substring first #-end complex - - - - - number of calls - - - 0 - - - - - - - substring # last complex - - - - - - FROM_START - LAST - - - - - - - - - - 6 - - - - - - - - - 789 - - - - - - - - - - substring # last complex - - - - - number of calls - - - 0 - - - - - - - substring #-end last complex - - - - - - FROM_END - LAST - - - - - - - - - - 2 - - - - - - - - - 789 - - - - - - - - - - substring #-end last complex - - - - - number of calls - - - 0 - - - - - - - substring all with # #-end complex - - - - - - FROM_START - FROM_END - - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 123456789 - - - - - - - - - - substring all with # #-end complex - - - - - number of calls - - - 0 - - - - - - - substring all with #-end # complex - - - - - - FROM_END - FROM_START - - - - - - - - - - 8 - - - - - - - - - 8 - - - - - - - - - 123456789 - - - - - - - - - - substring all with #-end # complex - - - - - number of calls - - - 0 - - - - - - - substring all with # #-end math complex - - - - - - FROM_START - FROM_END - Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. - - - - - - - - ADD - - - 0 - - - - - - - 0 - - - - - - - - - ADD - - - 0 - - - - - - - 0 - - - - - - - - - - - 123456789 - - - - - - - - - - substring all with # #-end math complex - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test case - Tests the "change casing" block. - - - text - - - Hello World - - - - - - - uppercase - - - - - UPPERCASE - - - text - - - - - - - HELLO WORLD - - - - - - - uppercase order - - - - - UPPERCASE - - - - - TRUE - - - - - text - - - - - - - - - - - - HELLO WORLD - - - - - text - - - Hello World - - - - - - - lowercase - - - - - LOWERCASE - - - text - - - - - - - hello world - - - - - - - lowercase order - - - - - LOWERCASE - - - - - TRUE - - - - - text - - - - - - - - - - - - hello world - - - - - text - - - heLLo WorlD - - - - - - - titlecase - - - - - TITLECASE - - - text - - - - - - - Hello World - - - - - - - titlecase order - - - - - TITLECASE - - - - - TRUE - - - - - text - - - - - - - - - - - - Hello World - - - - - - - - - - - - - - - - - - - - - - - test trim - Tests the "trim" block. - - - text - - - abc def - - - - - - - trim both - - - - - BOTH - - - text - - - - - - - abc def - - - - - - - trim both order - - - - - BOTH - - - - - TRUE - - - - - text - - - - - - - - - - - - abc def - - - - - - - trim left - - - - - LEFT - - - text - - - - - - - abc def - - - - - - - trim left order - - - - - LEFT - - - - - TRUE - - - - - text - - - - - - - - - - - - abc def - - - - - - - trim right - - - - - RIGHT - - - text - - - - - - - abc def - - - - - - - trim right order - - - - - RIGHT - - - - - TRUE - - - - - text - - - - - - - - - - - - abc def - - - - - - - - - - - - - - - - - - - test count text - Tests the "trim" block. - - - text - - - woolloomooloo - - - - - - - len 1 - - - - - - - o - - - - - text - - - - - - - 8 - - - - - - - len 2 - - - - - - - oo - - - - - text - - - - - - - 4 - - - - - - - len 3 - - - - - - - loo - - - - - text - - - - - - - 2 - - - - - - - start - - - - - - - wool - - - - - text - - - - - - - 1 - - - - - - - missing - - - - - - - chicken - - - - - text - - - - - - - 0 - - - - - - - empty needle - - - - - - - - - - - - text - - - - - - - 14 - - - - - - - empty source - - - - - - - chicken - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - test text reverse - Tests the "trim" block. - - - - - empty string - - - - - - - - - - - - - - - - - - - - - len 1 - - - - - - - a - - - - - - - a - - - - - - - len 2 - - - - - - - ab - - - - - - - ba - - - - - - - longer - - - - - - - woolloomooloo - - - - - - - ooloomoolloow - - - - - - - - - - - - - test replace - Tests the "trim" block. - - - - - replace all instances 1 - - - - - - - oo - - - - - 123 - - - - - woolloomooloo - - - - - - - w123ll123m123l123 - - - - - - - literal string replacement - - - - - - - .oo - - - - - X - - - - - woolloomooloo - - - - - - - woolloomooloo - - - - - - - not found - - - - - - - abc - - - - - X - - - - - woolloomooloo - - - - - - - woolloomooloo - - - - - - - empty replacement 1 - - - - - - - o - - - - - - - - - - woolloomooloo - - - - - - - wllml - - - - - - - empty replacement 2 - - - - - - - aaaaa - - - - - - - - - - aaaaa - - - - - - - - - - - - - - empty replacement 3 - - - - - - - a - - - - - - - - - - aaaaa - - - - - - - - - - - - - - empty source - - - - - - - a - - - - - chicken - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - test multiline - Tests the "multiline" block. - - - - - no text - - - - - - - - - - - - - - - - - simple - - - - - Google - - - - - Google - - - - - - - no compile error with newlines - - - - - paragraph with newlines yup - - - - - paragraph with newlines yup - - - - - - - count with newlines - - - - - - - bark - - - - - bark bark bark bark bark bark bark bark bark - - - - - - - 9 - - - - - - - - - - - + + + Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + check number of calls + Checks that the number of calls is one in order to confirm that a function was only called once. + + + test name + + + number of calls + + + + + + + test name + + + + + number of calls + + + + + 1 + + + + + + + + + test create text + Tests the "create text with" block with varying number of inputs. + + + + + no text + + + + + + + + + + + + + + + + + create single + + + + + + + + Hello + + + + + + + Hello + + + + + + + create single number + + + + + + + + -1 + + + + + + + -1 + + + + + + + create double text + + + + + + + + K + + + + + 9 + + + + + + + K9 + + + + + + + create double text numbers + + + + + + + + 4 + + + + + 2 + + + + + + + 42 + + + + + + + create triple + + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + + + 123 + + + + + + + create order + + + + + + + + 1 + + + + + + + TRUE + + + + + 0 + + + + + + + + + + M + + + + + + + 10M + + + + + + + + + + + + + + + + + + + + get empty + Creates an empty string for use with the empty test. + + + + + + + + test empty text + Tests the "is empty" block". + + + FALSE + + + not empty + + + + + + + Google + + + + + + + TRUE + + + empty + + + + + + + + + + + + + + TRUE + + + empty complex + + + + + + + + + + + + + + TRUE + + + empty order + + + + + + + + + TRUE + + + + + + + + + + + + + + + + + + + + + + + + + test text length + Tests the "length" block. + + + + + zero length + + + + + + + + + + + + + + 0 + + + + + + + non-zero length + + + + + + + Google + + + + + + + 6 + + + + + + + length order + + + + + + + + + TRUE + + + + + car + + + + + + + + + + + + 3 + + + + + + + + + + + test append + Tests the "append text" block with different types of parameters. + + + item + + + Miserable + + + + + item + + + Failure + + + + + + + append text + + + + + item + + + + + MiserableFailure + + + + + item + + + 12 + + + + + item + + + 34 + + + + + + + append number + + + + + item + + + + + 1234 + + + + + item + + + Something + + + + + item + + + + + TRUE + + + + + Positive + + + + + + + + + + + + append order + + + + + item + + + + + Something Positive + + + + + + + + + + + + + + + + + + + + + + + test find text simple + Tests the "find" block with a variable. + + + text + + + Banana + + + + + + + find first simple + + + + + FIRST + + + text + + + + + an + + + + + + + + + 1 + + + + + + + + + find last simple + + + + + LAST + + + text + + + + + an + + + + + + + + + 3 + + + + + + + + + find none simple + + + + + FIRST + + + text + + + + + Peel + + + + + + + + + -1 + + + + + + + + + + + + + + + get fruit + Creates a string for use with the find test. + + + number of calls + + + 1 + + + + + + + Banana + + + + + test find text complex + Tests the "find" block with a function call. + + + number of calls + + + 0 + + + + + + + find first complex + + + + + FIRST + + + + + + + + an + + + + + + + + + 1 + + + + + + + + + + + + find first complex + + + + + number of calls + + + 0 + + + + + + + find first order complex + + + + + FIRST + + + + + TRUE + + + + + + + + + + + + + + + an + + + + + + + + + 1 + + + + + + + + + + + + find first order complex + + + + + number of calls + + + 0 + + + + + + + find last complex + + + + + LAST + + + + + + + + an + + + + + + + + + 3 + + + + + + + + + + + + find last complex + + + + + number of calls + + + 0 + + + + + + + find last order complex + + + + + LAST + + + + + TRUE + + + + + + + + + + + + + + + an + + + + + + + + + 3 + + + + + + + + + + + + find last order complex + + + + + number of calls + + + 0 + + + + + + + find none complex + + + + + FIRST + + + + + + + + Peel + + + + + + + + + -1 + + + + + + + + + + + + find none complex + + + + + number of calls + + + 0 + + + + + + + find none order complex + + + + + FIRST + + + + + TRUE + + + + + + + + + + + + + + + Peel + + + + + + + + + -1 + + + + + + + + + + + + find none order complex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test get text simple + Tests the "get letter" block with a variable. + + + text + + + Blockly + + + + + + + get first simple + + + + + + FIRST + + + text + + + + + + + B + + + + + + + get last simple + + + + + + LAST + + + text + + + + + + + y + + + + + TRUE + + + get random simple + + + + + GT + + + FIRST + + + text + + + + + + RANDOM + + + text + + + + + + + + + + + -1 + + + + + + + + + + + get # simple + + + + + + FROM_START + + + text + + + + + + + 2 + + + + + + + + + o + + + + + + + get # order simple + + + + + + FROM_START + + + text + + + + + + + TRUE + + + + + + + 2 + + + + + + + + + + + + + + o + + + + + + + get #-end simple + + + + + + FROM_END + + + text + + + + + + + 2 + + + + + + + + + k + + + + + + + get #-end order simple + + + + + + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + text + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + + + k + + + + + + + + + + + + + + + + + + + + + get Blockly + Creates a string for use with the get test. + + + number of calls + + + 1 + + + + + + + Blockly + + + + + test get text complex + Tests the "get letter" block with a function call. + + + text + + + Blockly + + + + + number of calls + + + 0 + + + + + + + get first complex + + + + + + FIRST + + + + + + + + + + B + + + + + + + + + + get first complex + + + + + number of calls + + + 0 + + + + + + + get first order complex + + + + + + FIRST + + + + + TRUE + + + + + + + + + + + + + + + + + B + + + + + + + + + + get first order complex + + + + + number of calls + + + 0 + + + + + + + get last complex + + + + + + LAST + + + + + + + + + + y + + + + + + + + + + get last complex + + + + + number of calls + + + 0 + + + + + + + get last order complex + + + + + + LAST + + + + + TRUE + + + + + + + + + + + + + + + + + y + + + + + + + + + + get last order complex + + + + + number of calls + + + 0 + + + + + TRUE + + + get random complex + + + + + GT + + + FIRST + + + text + + + + + + RANDOM + + + + + + + + + + + + + + -1 + + + + + + + + + + + + + + get random complex + + + + + number of calls + + + 0 + + + + + TRUE + + + get random order complex + + + + + GT + + + FIRST + + + text + + + + + + RANDOM + + + + + TRUE + + + + + + + + + + + + + + + + + + + + + -1 + + + + + + + + + + + + + + get random order complex + + + + + number of calls + + + 0 + + + + + + + get # complex + + + + + + FROM_START + + + + + + + + + + 2 + + + + + + + + + o + + + + + + + + + + get # complex + + + + + number of calls + + + 0 + + + + + + + get # order complex + + + + + + FROM_START + + + + + TRUE + + + + + + + + + + + + + + + + + TRUE + + + + + + + 2 + + + + + + + + + + + + + + o + + + + + + + + + + get # order complex + + + + + number of calls + + + 0 + + + + + + + get #-end complex + + + + + + FROM_END + + + + + + + + + + 2 + + + + + + + + + k + + + + + + + + + + get #-end complex + + + + + number of calls + + + 0 + + + + + + + get #-end order complex + + + + + + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + + + TRUE + + + + + + + + + + + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + + + k + + + + + + + + + + get #-end order complex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + get numbers + Creates a string for use with the substring test. + + + number of calls + + + 1 + + + + + + + 123456789 + + + + + test substring simple + Tests the "get substring" block with a variable. + + + text + + + 123456789 + + + + + + + substring # simple + + + + + + FROM_START + FROM_START + + + text + + + + + + + 1 + + + + + + + + + 2 + + + + + + + + + 23 + + + + + + + substring # simple order + + + + + + FROM_START + FROM_START + + + text + + + + + + + TRUE + + + + + + + 1 + + + + + + + + + + + + + + TRUE + + + + + + + 2 + + + + + + + + + + + + + + 23 + + + + + + + substring #-end simple + + + + + + FROM_END + FROM_END + + + text + + + + + + + 2 + + + + + + + + + 1 + + + + + + + + + 78 + + + + + + + substring #-end simple order + + + + + + FROM_END + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + text + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + ADD + + + 0 + + + + + + + 1 + + + + + + + + + + + 78 + + + + + + + substring first-last simple + + + + + + FIRST + LAST + + + text + + + + + + + text + + + + + + + substring # #-end simple + + + + + + FROM_START + FROM_END + + + text + + + + + + + 1 + + + + + + + + + 1 + + + + + + + + + 2345678 + + + + + + + substring #-end # simple + + + + + + FROM_END + FROM_START + + + text + + + + + + + 6 + + + + + + + + + 3 + + + + + + + + + 34 + + + + + + + substring first # simple + + + + + + FIRST + FROM_START + + + text + + + + + + + 3 + + + + + + + + + 1234 + + + + + + + substring first #-end simple + + + + + + FIRST + FROM_END + + + text + + + + + + + 1 + + + + + + + + + 12345678 + + + + + + + substring # last simple + + + + + + FROM_START + LAST + + + text + + + + + + + 6 + + + + + + + + + 789 + + + + + + + substring #-end last simple + + + + + + FROM_END + LAST + + + text + + + + + + + 2 + + + + + + + + + 789 + + + + + + + substring all with # #-end simple + + + + + + FROM_START + FROM_END + + + text + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 123456789 + + + + + + + substring all with #-end # simple + + + + + + FROM_END + FROM_START + + + text + + + + + + + 8 + + + + + + + + + 8 + + + + + + + + + 123456789 + + + + + + + substring all with # #-end math simple + + + + + + FROM_START + FROM_END + Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + + + text + + + + + ADD + + + 0 + + + + + + + 0 + + + + + + + + + ADD + + + 0 + + + + + + + 0 + + + + + + + + + + + 123456789 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test substring complex + Tests the "get substring" block with a function call. + + + number of calls + + + 0 + + + + + + + substring # complex + + + + + + FROM_START + FROM_START + + + + + + + + + + 1 + + + + + + + + + 2 + + + + + + + + + 23 + + + + + + + + + + substring # complex + + + + + number of calls + + + 0 + + + + + + + substring # complex order + + + + + + FROM_START + FROM_START + + + + + TRUE + + + + + + + + + + + + + + + + + TRUE + + + + + + + 1 + + + + + + + + + + + + + + TRUE + + + + + + + 2 + + + + + + + + + + + + + + 23 + + + + + + + + + + substring # complex order + + + + + number of calls + + + 0 + + + + + + + substring #-end complex + + + + + + FROM_END + FROM_END + The order for index for #-end is addition because this will catch errors in generators where most perform the operation ... - index. + + + + + + + + + + 2 + + + + + + + + + 1 + + + + + + + + + 78 + + + + + + + + + + substring #-end complex + + + + + number of calls + + + 0 + + + + + + + substring #-end order order + + + + + + FROM_END + FROM_END + + + + + TRUE + + + + + + + + + + + + + + + ADD + + + 0 + + + + + + + 2 + + + + + + + + + ADD + + + 0 + + + + + + + 1 + + + + + + + + + + + 78 + + + + + + + + + + substring #-end order order + + + + + number of calls + + + 0 + + + + + + + substring first-last + + + + + + FIRST + LAST + + + + + + + + + + text + + + + + + + + + + substring first-last + + + + + number of calls + + + 0 + + + + + + + substring # #-end complex + + + + + + FROM_START + FROM_END + + + + + + + + + + 1 + + + + + + + + + 1 + + + + + + + + + 2345678 + + + + + + + + + + substring # #-end complex + + + + + number of calls + + + 0 + + + + + + + substring #-end # complex + + + + + + FROM_END + FROM_START + + + + + + + + + + 6 + + + + + + + + + 3 + + + + + + + + + 34 + + + + + + + + + + substring #-end # complex + + + + + number of calls + + + 0 + + + + + + + substring first # complex + + + + + + FIRST + FROM_START + + + + + + + + + + 3 + + + + + + + + + 1234 + + + + + + + + + + substring first # complex + + + + + number of calls + + + 0 + + + + + + + substring first #-end complex + + + + + + FIRST + FROM_END + + + + + + + + + + 1 + + + + + + + + + 12345678 + + + + + + + + + + substring first #-end complex + + + + + number of calls + + + 0 + + + + + + + substring # last complex + + + + + + FROM_START + LAST + + + + + + + + + + 6 + + + + + + + + + 789 + + + + + + + + + + substring # last complex + + + + + number of calls + + + 0 + + + + + + + substring #-end last complex + + + + + + FROM_END + LAST + + + + + + + + + + 2 + + + + + + + + + 789 + + + + + + + + + + substring #-end last complex + + + + + number of calls + + + 0 + + + + + + + substring all with # #-end complex + + + + + + FROM_START + FROM_END + + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 123456789 + + + + + + + + + + substring all with # #-end complex + + + + + number of calls + + + 0 + + + + + + + substring all with #-end # complex + + + + + + FROM_END + FROM_START + + + + + + + + + + 8 + + + + + + + + + 8 + + + + + + + + + 123456789 + + + + + + + + + + substring all with #-end # complex + + + + + number of calls + + + 0 + + + + + + + substring all with # #-end math complex + + + + + + FROM_START + FROM_END + Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end. + + + + + + + + ADD + + + 0 + + + + + + + 0 + + + + + + + + + ADD + + + 0 + + + + + + + 0 + + + + + + + + + + + 123456789 + + + + + + + + + + substring all with # #-end math complex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test case + Tests the "change casing" block. + + + text + + + Hello World + + + + + + + uppercase + + + + + UPPERCASE + + + text + + + + + + + HELLO WORLD + + + + + + + uppercase order + + + + + UPPERCASE + + + + + TRUE + + + + + text + + + + + + + + + + + + HELLO WORLD + + + + + text + + + Hello World + + + + + + + lowercase + + + + + LOWERCASE + + + text + + + + + + + hello world + + + + + + + lowercase order + + + + + LOWERCASE + + + + + TRUE + + + + + text + + + + + + + + + + + + hello world + + + + + text + + + heLLo WorlD + + + + + + + titlecase + + + + + TITLECASE + + + text + + + + + + + Hello World + + + + + + + titlecase order + + + + + TITLECASE + + + + + TRUE + + + + + text + + + + + + + + + + + + Hello World + + + + + + + + + + + + + + + + + + + + + + + test trim + Tests the "trim" block. + + + text + + + abc def + + + + + + + trim both + + + + + BOTH + + + text + + + + + + + abc def + + + + + + + trim both order + + + + + BOTH + + + + + TRUE + + + + + text + + + + + + + + + + + + abc def + + + + + + + trim left + + + + + LEFT + + + text + + + + + + + abc def + + + + + + + trim left order + + + + + LEFT + + + + + TRUE + + + + + text + + + + + + + + + + + + abc def + + + + + + + trim right + + + + + RIGHT + + + text + + + + + + + abc def + + + + + + + trim right order + + + + + RIGHT + + + + + TRUE + + + + + text + + + + + + + + + + + + abc def + + + + + + + + + + + + + + + + + + + test count text + Tests the "trim" block. + + + text + + + woolloomooloo + + + + + + + len 1 + + + + + + + o + + + + + text + + + + + + + 8 + + + + + + + len 2 + + + + + + + oo + + + + + text + + + + + + + 4 + + + + + + + len 3 + + + + + + + loo + + + + + text + + + + + + + 2 + + + + + + + start + + + + + + + wool + + + + + text + + + + + + + 1 + + + + + + + missing + + + + + + + chicken + + + + + text + + + + + + + 0 + + + + + + + empty needle + + + + + + + + + + + + text + + + + + + + 14 + + + + + + + empty source + + + + + + + chicken + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + test text reverse + Tests the "trim" block. + + + + + empty string + + + + + + + + + + + + + + + + + + + + + len 1 + + + + + + + a + + + + + + + a + + + + + + + len 2 + + + + + + + ab + + + + + + + ba + + + + + + + longer + + + + + + + woolloomooloo + + + + + + + ooloomoolloow + + + + + + + + + + + + + test replace + Tests the "trim" block. + + + + + replace all instances 1 + + + + + + + oo + + + + + 123 + + + + + woolloomooloo + + + + + + + w123ll123m123l123 + + + + + + + literal string replacement + + + + + + + .oo + + + + + X + + + + + woolloomooloo + + + + + + + woolloomooloo + + + + + + + not found + + + + + + + abc + + + + + X + + + + + woolloomooloo + + + + + + + woolloomooloo + + + + + + + empty replacement 1 + + + + + + + o + + + + + + + + + + woolloomooloo + + + + + + + wllml + + + + + + + empty replacement 2 + + + + + + + aaaaa + + + + + + + + + + aaaaa + + + + + + + + + + + + + + empty replacement 3 + + + + + + + a + + + + + + + + + + aaaaa + + + + + + + + + + + + + + empty source + + + + + + + a + + + + + chicken + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + test multiline + Tests the "multiline" block. + + + + + no text + + + + + + + + + + + + + + + + + simple + + + + + Google + + + + + Google + + + + + + + no compile error with newlines + + + + + paragraph with newlines yup + + + + + paragraph with newlines yup + + + + + + + count with newlines + + + + + + + bark + + + + + bark bark bark bark bark bark bark bark bark + + + + + + + 9 + + + + + + + + + + + \ No newline at end of file diff --git a/tests/generators/unittest.js b/tests/generators/unittest.js index 18d3ce89539..2253b1289c6 100644 --- a/tests/generators/unittest.js +++ b/tests/generators/unittest.js @@ -1,103 +1,103 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Unit test blocks for Blockly. - */ -'use strict'; - -Blockly.Blocks['unittest_main'] = { - // Container for unit tests. - init: function() { - this.setColour(65); - this.appendDummyInput() - .appendField('run test suite') - .appendField(new Blockly.FieldTextInput(''), 'SUITE_NAME'); - this.appendStatementInput('DO'); - this.setTooltip('Executes the enclosed unit tests,\n' + - 'then prints a summary.'); - }, - getDeveloperVars: function() { - return ['unittestResults']; - } -}; - -Blockly.Blocks['unittest_assertequals'] = { - // Asserts that a value equals another value. - init: function() { - this.setColour(65); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.appendValueInput('MESSAGE') - .appendField('name') - .setCheck('String'); - this.appendValueInput('ACTUAL') - .appendField('actual'); - this.appendValueInput('EXPECTED') - .appendField('expected'); - this.setTooltip('Tests that "actual == expected".'); - }, - getDeveloperVars: function() { - return ['unittestResults']; - } -}; - -Blockly.Blocks['unittest_assertvalue'] = { - // Asserts that a value is true, false, or null. - init: function() { - this.setColour(65); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.appendValueInput('MESSAGE', 'test name') - .appendField('name') - .setCheck('String'); - this.appendValueInput('ACTUAL') - .appendField('assert') - .appendField(new Blockly.FieldDropdown( - [['true', 'TRUE'], ['false', 'FALSE'], ['null', 'NULL']]), 'EXPECTED'); - this.setTooltip('Tests that the value is true, false, or null.'); - }, - getDeveloperVars: function() { - return ['unittestResults']; - } -}; - -Blockly.Blocks['unittest_fail'] = { - // Always assert an error. - init: function() { - this.setColour(65); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.appendDummyInput() - .appendField(new Blockly.FieldTextInput('test name'), 'MESSAGE') - .appendField('fail'); - this.setTooltip('Records an error.'); - }, - getDeveloperVars: function() { - return ['unittestResults']; - } -}; - -Blockly.Blocks['unittest_adjustindex'] = { - // Adjusts the indexing based on current setting. - init: function() { - this.jsonInit({ - "message0": "adjusted %1", - "args0": [ - { - "type": "input_value", - "name": "INDEX", - "check": "Number" - } - ], - "inputsInline": true, - "output": "Number", - "colour": 65, - "tooltip": "Adjusts the value based on whether generated code is using " + - "zero or one based indexing." - }); - } -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Unit test blocks for Blockly. + */ +'use strict'; + +Blockly.Blocks['unittest_main'] = { + // Container for unit tests. + init: function() { + this.setColour(65); + this.appendDummyInput() + .appendField('run test suite') + .appendField(new Blockly.FieldTextInput(''), 'SUITE_NAME'); + this.appendStatementInput('DO'); + this.setTooltip('Executes the enclosed unit tests,\n' + + 'then prints a summary.'); + }, + getDeveloperVars: function() { + return ['unittestResults']; + } +}; + +Blockly.Blocks['unittest_assertequals'] = { + // Asserts that a value equals another value. + init: function() { + this.setColour(65); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.appendValueInput('MESSAGE') + .appendField('name') + .setCheck('String'); + this.appendValueInput('ACTUAL') + .appendField('actual'); + this.appendValueInput('EXPECTED') + .appendField('expected'); + this.setTooltip('Tests that "actual == expected".'); + }, + getDeveloperVars: function() { + return ['unittestResults']; + } +}; + +Blockly.Blocks['unittest_assertvalue'] = { + // Asserts that a value is true, false, or null. + init: function() { + this.setColour(65); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.appendValueInput('MESSAGE', 'test name') + .appendField('name') + .setCheck('String'); + this.appendValueInput('ACTUAL') + .appendField('assert') + .appendField(new Blockly.FieldDropdown( + [['true', 'TRUE'], ['false', 'FALSE'], ['null', 'NULL']]), 'EXPECTED'); + this.setTooltip('Tests that the value is true, false, or null.'); + }, + getDeveloperVars: function() { + return ['unittestResults']; + } +}; + +Blockly.Blocks['unittest_fail'] = { + // Always assert an error. + init: function() { + this.setColour(65); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.appendDummyInput() + .appendField(new Blockly.FieldTextInput('test name'), 'MESSAGE') + .appendField('fail'); + this.setTooltip('Records an error.'); + }, + getDeveloperVars: function() { + return ['unittestResults']; + } +}; + +Blockly.Blocks['unittest_adjustindex'] = { + // Adjusts the indexing based on current setting. + init: function() { + this.jsonInit({ + "message0": "adjusted %1", + "args0": [ + { + "type": "input_value", + "name": "INDEX", + "check": "Number" + } + ], + "inputsInline": true, + "output": "Number", + "colour": 65, + "tooltip": "Adjusts the value based on whether generated code is using " + + "zero or one based indexing." + }); + } +}; diff --git a/tests/generators/unittest_dart.js b/tests/generators/unittest_dart.js index 65a348aba79..d28a6a4cbc3 100644 --- a/tests/generators/unittest_dart.js +++ b/tests/generators/unittest_dart.js @@ -1,163 +1,163 @@ -/** - * @license - * Copyright 2014 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Dart for unit test blocks. - */ -'use strict'; - -Blockly.Dart['unittest_main'] = function(block) { - // Container for unit tests. - var resultsVar = Blockly.Dart.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.Dart.provideFunction_( - 'unittest_report', - [ 'String ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '() {', - ' // Create test report.', - ' List report = [];', - ' StringBuffer summary = new StringBuffer();', - ' int fails = 0;', - ' for (int x = 0; x < ' + resultsVar + '.length; x++) {', - ' if (' + resultsVar + '[x][0]) {', - ' summary.write(".");', - ' } else {', - ' summary.write("F");', - ' fails++;', - ' report.add("");', - ' report.add("FAIL: ${' + resultsVar + '[x][2]}");', - ' report.add(' + resultsVar + '[x][1]);', - ' }', - ' }', - ' report.insert(0, summary.toString());', - ' report.add("");', - ' report.add("Ran ${' + resultsVar + '.length} tests.");', - ' report.add("");', - ' if (fails != 0) {', - ' report.add("FAILED (failures=$fails)");', - ' } else {', - ' report.add("OK");', - ' }', - ' return report.join("\\n");', - '}']); - // Setup global to hold test results. - var code = resultsVar + ' = [];\n'; - // Say which test suite this is. - code += 'print(\'\\n====================\\n\\n' + - 'Running suite: ' + - block.getFieldValue('SUITE_NAME') + - '\');\n'; - // Run tests (unindented). - code += Blockly.Dart.statementToCode(block, 'DO') - .replace(/^ /, '').replace(/\n /g, '\n'); - // Print the report to the console (that's where errors will go anyway). - code += 'print(' + functionName + '());\n'; - // Destroy results. - code += resultsVar + ' = null;\n'; - return code; -}; - -Blockly.Dart['unittest_main'].defineAssert_ = function() { - var resultsVar = Blockly.Dart.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.Dart.provideFunction_( - 'unittest_assertequals', - [ 'void ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + - '(dynamic actual, dynamic expected, String message) {', - ' // Asserts that a value equals another value.', - ' if (' + resultsVar + ' == null) {', - ' throw "Orphaned assert: ${message}";', - ' }', - ' bool equals(a, b) {', - ' if (a == b) {', - ' return true;', - ' } else if (a is List && b is List) {', - ' if (a.length != b.length) {', - ' return false;', - ' }', - ' for (num i = 0; i < a.length; i++) {', - ' if (!equals(a[i], b[i])) {', - ' return false;', - ' }', - ' }', - ' return true;', - ' }', - ' return false;', - ' }', - ' if (equals(actual, expected)) {', - ' ' + resultsVar + '.add([true, "OK", message]);', - ' } else {', - ' ' + resultsVar + '.add([false, ' + - '"Expected: $expected\\nActual: $actual", message]);', - ' }', - '}']); - return functionName; -}; - -Blockly.Dart['unittest_assertequals'] = function(block) { - // Asserts that a value equals another value. - var message = Blockly.Dart.valueToCode(block, 'MESSAGE', - Blockly.Dart.ORDER_NONE) || ''; - var actual = Blockly.Dart.valueToCode(block, 'ACTUAL', - Blockly.Dart.ORDER_NONE) || 'null'; - var expected = Blockly.Dart.valueToCode(block, 'EXPECTED', - Blockly.Dart.ORDER_NONE) || 'null'; - return Blockly.Dart['unittest_main'].defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ');\n'; -}; - -Blockly.Dart['unittest_assertvalue'] = function(block) { - // Asserts that a value is true, false, or null. - var message = Blockly.Dart.valueToCode(block, 'MESSAGE', - Blockly.Dart.ORDER_NONE) || ''; - var actual = Blockly.Dart.valueToCode(block, 'ACTUAL', - Blockly.Dart.ORDER_NONE) || 'null'; - var expected = block.getFieldValue('EXPECTED'); - if (expected === 'TRUE') { - expected = 'true'; - } else if (expected === 'FALSE') { - expected = 'false'; - } else if (expected === 'NULL') { - expected = 'null'; - } - return Blockly.Dart['unittest_main'].defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ');\n'; -}; - -Blockly.Dart['unittest_fail'] = function(block) { - // Always assert an error. - var resultsVar = Blockly.Dart.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var message = Blockly.Dart.quote_(block.getFieldValue('MESSAGE')); - var functionName = Blockly.Dart.provideFunction_( - 'unittest_fail', - [ 'void ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + - '(String message) {', - ' // Always assert an error.', - ' if (' + resultsVar + ' == null) {', - ' throw "Orphaned assert fail: ${message}";', - ' }', - ' ' + resultsVar + '.add([false, "Fail.", message]);', - '}']); - return functionName + '(' + message + ');\n'; -}; - -Blockly.Dart['unittest_adjustindex'] = function(block) { - var index = Blockly.Dart.valueToCode(block, 'INDEX', - Blockly.Dart.ORDER_ADDITIVE) || '0'; - // Adjust index if using one-based indexing. - if (block.workspace.options.oneBasedIndex) { - if (Blockly.isNumber(index)) { - // If the index is a naked number, adjust it right now. - return [Number(index) + 1, Blockly.Dart.ORDER_ATOMIC]; - } else { - // If the index is dynamic, adjust it in code. - index = index + ' + 1'; - } - } else if (Blockly.isNumber(index)) { - return [index, Blockly.Dart.ORDER_ATOMIC]; - } - return [index, Blockly.Dart.ORDER_ADDITIVE]; -}; +/** + * @license + * Copyright 2014 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Dart for unit test blocks. + */ +'use strict'; + +Blockly.Dart['unittest_main'] = function(block) { + // Container for unit tests. + var resultsVar = Blockly.Dart.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.Dart.provideFunction_( + 'unittest_report', + [ 'String ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + '() {', + ' // Create test report.', + ' List report = [];', + ' StringBuffer summary = new StringBuffer();', + ' int fails = 0;', + ' for (int x = 0; x < ' + resultsVar + '.length; x++) {', + ' if (' + resultsVar + '[x][0]) {', + ' summary.write(".");', + ' } else {', + ' summary.write("F");', + ' fails++;', + ' report.add("");', + ' report.add("FAIL: ${' + resultsVar + '[x][2]}");', + ' report.add(' + resultsVar + '[x][1]);', + ' }', + ' }', + ' report.insert(0, summary.toString());', + ' report.add("");', + ' report.add("Ran ${' + resultsVar + '.length} tests.");', + ' report.add("");', + ' if (fails != 0) {', + ' report.add("FAILED (failures=$fails)");', + ' } else {', + ' report.add("OK");', + ' }', + ' return report.join("\\n");', + '}']); + // Setup global to hold test results. + var code = resultsVar + ' = [];\n'; + // Say which test suite this is. + code += 'print(\'\\n====================\\n\\n' + + 'Running suite: ' + + block.getFieldValue('SUITE_NAME') + + '\');\n'; + // Run tests (unindented). + code += Blockly.Dart.statementToCode(block, 'DO') + .replace(/^ /, '').replace(/\n /g, '\n'); + // Print the report to the console (that's where errors will go anyway). + code += 'print(' + functionName + '());\n'; + // Destroy results. + code += resultsVar + ' = null;\n'; + return code; +}; + +Blockly.Dart['unittest_main'].defineAssert_ = function() { + var resultsVar = Blockly.Dart.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.Dart.provideFunction_( + 'unittest_assertequals', + [ 'void ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + + '(dynamic actual, dynamic expected, String message) {', + ' // Asserts that a value equals another value.', + ' if (' + resultsVar + ' == null) {', + ' throw "Orphaned assert: ${message}";', + ' }', + ' bool equals(a, b) {', + ' if (a == b) {', + ' return true;', + ' } else if (a is List && b is List) {', + ' if (a.length != b.length) {', + ' return false;', + ' }', + ' for (num i = 0; i < a.length; i++) {', + ' if (!equals(a[i], b[i])) {', + ' return false;', + ' }', + ' }', + ' return true;', + ' }', + ' return false;', + ' }', + ' if (equals(actual, expected)) {', + ' ' + resultsVar + '.add([true, "OK", message]);', + ' } else {', + ' ' + resultsVar + '.add([false, ' + + '"Expected: $expected\\nActual: $actual", message]);', + ' }', + '}']); + return functionName; +}; + +Blockly.Dart['unittest_assertequals'] = function(block) { + // Asserts that a value equals another value. + var message = Blockly.Dart.valueToCode(block, 'MESSAGE', + Blockly.Dart.ORDER_NONE) || ''; + var actual = Blockly.Dart.valueToCode(block, 'ACTUAL', + Blockly.Dart.ORDER_NONE) || 'null'; + var expected = Blockly.Dart.valueToCode(block, 'EXPECTED', + Blockly.Dart.ORDER_NONE) || 'null'; + return Blockly.Dart['unittest_main'].defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ');\n'; +}; + +Blockly.Dart['unittest_assertvalue'] = function(block) { + // Asserts that a value is true, false, or null. + var message = Blockly.Dart.valueToCode(block, 'MESSAGE', + Blockly.Dart.ORDER_NONE) || ''; + var actual = Blockly.Dart.valueToCode(block, 'ACTUAL', + Blockly.Dart.ORDER_NONE) || 'null'; + var expected = block.getFieldValue('EXPECTED'); + if (expected === 'TRUE') { + expected = 'true'; + } else if (expected === 'FALSE') { + expected = 'false'; + } else if (expected === 'NULL') { + expected = 'null'; + } + return Blockly.Dart['unittest_main'].defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ');\n'; +}; + +Blockly.Dart['unittest_fail'] = function(block) { + // Always assert an error. + var resultsVar = Blockly.Dart.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var message = Blockly.Dart.quote_(block.getFieldValue('MESSAGE')); + var functionName = Blockly.Dart.provideFunction_( + 'unittest_fail', + [ 'void ' + Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_ + + '(String message) {', + ' // Always assert an error.', + ' if (' + resultsVar + ' == null) {', + ' throw "Orphaned assert fail: ${message}";', + ' }', + ' ' + resultsVar + '.add([false, "Fail.", message]);', + '}']); + return functionName + '(' + message + ');\n'; +}; + +Blockly.Dart['unittest_adjustindex'] = function(block) { + var index = Blockly.Dart.valueToCode(block, 'INDEX', + Blockly.Dart.ORDER_ADDITIVE) || '0'; + // Adjust index if using one-based indexing. + if (block.workspace.options.oneBasedIndex) { + if (Blockly.isNumber(index)) { + // If the index is a naked number, adjust it right now. + return [Number(index) + 1, Blockly.Dart.ORDER_ATOMIC]; + } else { + // If the index is dynamic, adjust it in code. + index = index + ' + 1'; + } + } else if (Blockly.isNumber(index)) { + return [index, Blockly.Dart.ORDER_ATOMIC]; + } + return [index, Blockly.Dart.ORDER_ADDITIVE]; +}; diff --git a/tests/generators/unittest_javascript.js b/tests/generators/unittest_javascript.js index df48642df4a..857bab8be08 100644 --- a/tests/generators/unittest_javascript.js +++ b/tests/generators/unittest_javascript.js @@ -1,167 +1,167 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating JavaScript for unit test blocks. - */ -'use strict'; - -Blockly.JavaScript['unittest_main'] = function(block) { - // Container for unit tests. - var resultsVar = Blockly.JavaScript.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.JavaScript.provideFunction_( - 'unittest_report', - [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + '() {', - ' // Create test report.', - ' var report = [];', - ' var summary = [];', - ' var fails = 0;', - ' for (var i = 0; i < ' + resultsVar + '.length; i++) {', - ' if (' + resultsVar + '[i][0]) {', - ' summary.push(".");', - ' } else {', - ' summary.push("F");', - ' fails++;', - ' report.push("");', - ' report.push("FAIL: " + ' + resultsVar + '[i][2]);', - ' report.push(' + resultsVar + '[i][1]);', - ' }', - ' }', - ' report.unshift(summary.join(""));', - ' report.push("");', - ' report.push("Number of tests run: " + ' + resultsVar + - '.length);', - ' report.push("");', - ' if (fails) {', - ' report.push("FAILED (failures=" + fails + ")");', - ' } else {', - ' report.push("OK");', - ' }', - ' return report.join("\\n");', - '}']); - // Setup global to hold test results. - var code = resultsVar + ' = [];\n'; - // Say which test suite this is. - code += 'console.log(\'\\n====================\\n\\n' + - 'Running suite: ' + - block.getFieldValue('SUITE_NAME') + - '\')\n'; - // Run tests (unindented). - code += Blockly.JavaScript.statementToCode(block, 'DO') - .replace(/^ /, '').replace(/\n /g, '\n'); - // Send the report to the console (that's where errors will go anyway). - code += 'console.log(' + functionName + '());\n'; - // Destroy results. - code += resultsVar + ' = null;\n'; - return code; -}; - -Blockly.JavaScript['unittest_main'].defineAssert_ = function(block) { - var resultsVar = Blockly.JavaScript.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.JavaScript.provideFunction_( - 'assertEquals', - [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + - '(actual, expected, message) {', - ' // Asserts that a value equals another value.', - ' if (!' + resultsVar + ') {', - ' throw "Orphaned assert: " + message;', - ' }', - ' function equals(a, b) {', - ' if (a === b) {', - ' return true;', - ' } else if ((typeof a === "number") && (typeof b === "number") &&', - ' (a.toPrecision(15) == b.toPrecision(15))) {', - ' return true;', - ' } else if (a instanceof Array && b instanceof Array) {', - ' if (a.length !== b.length) {', - ' return false;', - ' }', - ' for (var i = 0; i < a.length; i++) {', - ' if (!equals(a[i], b[i])) {', - ' return false;', - ' }', - ' }', - ' return true;', - ' }', - ' return false;', - ' }', - ' if (equals(actual, expected)) {', - ' ' + resultsVar + '.push([true, "OK", message]);', - ' } else {', - ' ' + resultsVar + '.push([false, ' + - '"Expected: " + expected + "\\nActual: " + actual, message]);', - ' }', - '}']); - return functionName; -}; - -Blockly.JavaScript['unittest_assertequals'] = function(block) { - // Asserts that a value equals another value. - var message = Blockly.JavaScript.valueToCode(block, 'MESSAGE', - Blockly.JavaScript.ORDER_NONE) || ''; - var actual = Blockly.JavaScript.valueToCode(block, 'ACTUAL', - Blockly.JavaScript.ORDER_NONE) || 'null'; - var expected = Blockly.JavaScript.valueToCode(block, 'EXPECTED', - Blockly.JavaScript.ORDER_NONE) || 'null'; - return Blockly.JavaScript['unittest_main'].defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ');\n'; -}; - -Blockly.JavaScript['unittest_assertvalue'] = function(block) { - // Asserts that a value is true, false, or null. - var message = Blockly.JavaScript.valueToCode(block, 'MESSAGE', - Blockly.JavaScript.ORDER_NONE) || ''; - var actual = Blockly.JavaScript.valueToCode(block, 'ACTUAL', - Blockly.JavaScript.ORDER_NONE) || 'null'; - var expected = block.getFieldValue('EXPECTED'); - if (expected === 'TRUE') { - expected = 'true'; - } else if (expected === 'FALSE') { - expected = 'false'; - } else if (expected === 'NULL') { - expected = 'null'; - } - return Blockly.JavaScript['unittest_main'].defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ');\n'; -}; - -Blockly.JavaScript['unittest_fail'] = function(block) { - // Always assert an error. - var resultsVar = Blockly.JavaScript.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var message = Blockly.JavaScript.quote_(block.getFieldValue('MESSAGE')); - var functionName = Blockly.JavaScript.provideFunction_( - 'unittest_fail', - [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + - '(message) {', - ' // Always assert an error.', - ' if (!' + resultsVar + ') {', - ' throw "Orphaned assert fail: " + message;', - ' }', - ' ' + resultsVar + '.push([false, "Fail.", message]);', - '}']); - return functionName + '(' + message + ');\n'; -}; - -Blockly.JavaScript['unittest_adjustindex'] = function(block) { - var index = Blockly.JavaScript.valueToCode(block, 'INDEX', - Blockly.JavaScript.ORDER_ADDITION) || '0'; - // Adjust index if using one-based indexing. - if (block.workspace.options.oneBasedIndex) { - if (Blockly.isNumber(index)) { - // If the index is a naked number, adjust it right now. - return [Number(index) + 1, Blockly.JavaScript.ORDER_ATOMIC]; - } else { - // If the index is dynamic, adjust it in code. - index = index + ' + 1'; - } - } else if (Blockly.isNumber(index)) { - return [index, Blockly.JavaScript.ORDER_ATOMIC]; - } - return [index, Blockly.JavaScript.ORDER_ADDITION]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating JavaScript for unit test blocks. + */ +'use strict'; + +Blockly.JavaScript['unittest_main'] = function(block) { + // Container for unit tests. + var resultsVar = Blockly.JavaScript.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.JavaScript.provideFunction_( + 'unittest_report', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + '() {', + ' // Create test report.', + ' var report = [];', + ' var summary = [];', + ' var fails = 0;', + ' for (var i = 0; i < ' + resultsVar + '.length; i++) {', + ' if (' + resultsVar + '[i][0]) {', + ' summary.push(".");', + ' } else {', + ' summary.push("F");', + ' fails++;', + ' report.push("");', + ' report.push("FAIL: " + ' + resultsVar + '[i][2]);', + ' report.push(' + resultsVar + '[i][1]);', + ' }', + ' }', + ' report.unshift(summary.join(""));', + ' report.push("");', + ' report.push("Number of tests run: " + ' + resultsVar + + '.length);', + ' report.push("");', + ' if (fails) {', + ' report.push("FAILED (failures=" + fails + ")");', + ' } else {', + ' report.push("OK");', + ' }', + ' return report.join("\\n");', + '}']); + // Setup global to hold test results. + var code = resultsVar + ' = [];\n'; + // Say which test suite this is. + code += 'console.log(\'\\n====================\\n\\n' + + 'Running suite: ' + + block.getFieldValue('SUITE_NAME') + + '\')\n'; + // Run tests (unindented). + code += Blockly.JavaScript.statementToCode(block, 'DO') + .replace(/^ /, '').replace(/\n /g, '\n'); + // Send the report to the console (that's where errors will go anyway). + code += 'console.log(' + functionName + '());\n'; + // Destroy results. + code += resultsVar + ' = null;\n'; + return code; +}; + +Blockly.JavaScript['unittest_main'].defineAssert_ = function(block) { + var resultsVar = Blockly.JavaScript.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.JavaScript.provideFunction_( + 'assertEquals', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(actual, expected, message) {', + ' // Asserts that a value equals another value.', + ' if (!' + resultsVar + ') {', + ' throw "Orphaned assert: " + message;', + ' }', + ' function equals(a, b) {', + ' if (a === b) {', + ' return true;', + ' } else if ((typeof a === "number") && (typeof b === "number") &&', + ' (a.toPrecision(15) == b.toPrecision(15))) {', + ' return true;', + ' } else if (a instanceof Array && b instanceof Array) {', + ' if (a.length !== b.length) {', + ' return false;', + ' }', + ' for (var i = 0; i < a.length; i++) {', + ' if (!equals(a[i], b[i])) {', + ' return false;', + ' }', + ' }', + ' return true;', + ' }', + ' return false;', + ' }', + ' if (equals(actual, expected)) {', + ' ' + resultsVar + '.push([true, "OK", message]);', + ' } else {', + ' ' + resultsVar + '.push([false, ' + + '"Expected: " + expected + "\\nActual: " + actual, message]);', + ' }', + '}']); + return functionName; +}; + +Blockly.JavaScript['unittest_assertequals'] = function(block) { + // Asserts that a value equals another value. + var message = Blockly.JavaScript.valueToCode(block, 'MESSAGE', + Blockly.JavaScript.ORDER_NONE) || ''; + var actual = Blockly.JavaScript.valueToCode(block, 'ACTUAL', + Blockly.JavaScript.ORDER_NONE) || 'null'; + var expected = Blockly.JavaScript.valueToCode(block, 'EXPECTED', + Blockly.JavaScript.ORDER_NONE) || 'null'; + return Blockly.JavaScript['unittest_main'].defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ');\n'; +}; + +Blockly.JavaScript['unittest_assertvalue'] = function(block) { + // Asserts that a value is true, false, or null. + var message = Blockly.JavaScript.valueToCode(block, 'MESSAGE', + Blockly.JavaScript.ORDER_NONE) || ''; + var actual = Blockly.JavaScript.valueToCode(block, 'ACTUAL', + Blockly.JavaScript.ORDER_NONE) || 'null'; + var expected = block.getFieldValue('EXPECTED'); + if (expected === 'TRUE') { + expected = 'true'; + } else if (expected === 'FALSE') { + expected = 'false'; + } else if (expected === 'NULL') { + expected = 'null'; + } + return Blockly.JavaScript['unittest_main'].defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ');\n'; +}; + +Blockly.JavaScript['unittest_fail'] = function(block) { + // Always assert an error. + var resultsVar = Blockly.JavaScript.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var message = Blockly.JavaScript.quote_(block.getFieldValue('MESSAGE')); + var functionName = Blockly.JavaScript.provideFunction_( + 'unittest_fail', + [ 'function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + + '(message) {', + ' // Always assert an error.', + ' if (!' + resultsVar + ') {', + ' throw "Orphaned assert fail: " + message;', + ' }', + ' ' + resultsVar + '.push([false, "Fail.", message]);', + '}']); + return functionName + '(' + message + ');\n'; +}; + +Blockly.JavaScript['unittest_adjustindex'] = function(block) { + var index = Blockly.JavaScript.valueToCode(block, 'INDEX', + Blockly.JavaScript.ORDER_ADDITION) || '0'; + // Adjust index if using one-based indexing. + if (block.workspace.options.oneBasedIndex) { + if (Blockly.isNumber(index)) { + // If the index is a naked number, adjust it right now. + return [Number(index) + 1, Blockly.JavaScript.ORDER_ATOMIC]; + } else { + // If the index is dynamic, adjust it in code. + index = index + ' + 1'; + } + } else if (Blockly.isNumber(index)) { + return [index, Blockly.JavaScript.ORDER_ATOMIC]; + } + return [index, Blockly.JavaScript.ORDER_ADDITION]; +}; diff --git a/tests/generators/unittest_lua.js b/tests/generators/unittest_lua.js index 06b21744d8c..1ac70291412 100644 --- a/tests/generators/unittest_lua.js +++ b/tests/generators/unittest_lua.js @@ -1,165 +1,165 @@ -/** - * @license - * Copyright 2016 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Lua for unit test blocks. - */ -'use strict'; - -Blockly.Lua['unittest_main'] = function(block) { - // Container for unit tests. - var resultsVar = Blockly.Lua.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.Lua.provideFunction_( - 'unittest_report', - ['function ' + Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_ + '()', - ' -- Create test report.', - ' local report = {}', - ' local summary = {}', - ' local fails = 0', - ' for _, v in pairs(' + resultsVar + ') do', - ' if v["success"] then', - ' table.insert(summary, ".")', - ' else', - ' table.insert(summary, "F")', - ' fails = fails + 1', - ' table.insert(report, "FAIL: " .. v["title"])', - ' table.insert(report, v["log"])', - ' end', - ' end', - ' table.insert(report, 1, table.concat(summary))', - ' table.insert(report, "")', - ' table.insert(report, "Number of tests run: " .. #' + resultsVar + ')', - ' table.insert(report, "")', - ' if fails > 0 then', - ' table.insert(report, "FAILED (failures=" .. fails .. ")")', - ' else', - ' table.insert(report, "OK")', - ' end', - ' return table.concat(report, "\\n")', - 'end']); - // Setup global to hold test results. - var code = resultsVar + ' = {}\n'; - // Say which test suite this is. - code += 'print(\'\\n====================\\n\\n' + - 'Running suite: ' + - block.getFieldValue('SUITE_NAME') + - '\')\n'; - // Run tests (unindented). - code += Blockly.Lua.statementToCode(block, 'DO') - .replace(/^ /, '').replace(/\n /g, '\n'); - // Print the report. - code += 'print(' + functionName + '())\n'; - // Destroy results. - code += resultsVar + ' = nil\n'; - return code; -}; - -Blockly.Lua['unittest_main'].defineAssert_ = function(block) { - var resultsVar = Blockly.Lua.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.Lua.provideFunction_( - 'assertEquals', - ['function ' + Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_ + - '(actual, expected, message)', - ' -- Asserts that a value equals another value.', - ' assert(' + resultsVar + ' ~= nil, ' + - '"Orphaned assert equals: " .. message)', - ' if type(actual) == "table" and type(expected) == "table" then', - ' local lists_match = #actual == #expected', - ' if lists_match then', - ' for i, v1 in ipairs(actual) do', - ' local v2 = expected[i]', - ' if type(v1) == "number" and type(v2) == "number" then', - ' if math.abs(v1 - v2) > 1e-9 then', - ' lists_match = false', - ' end', - ' elseif v1 ~= v2 then', - ' lists_match = false', - ' end', - ' end', - ' end', - ' if lists_match then', - ' table.insert(' + resultsVar + - ', {success=true, log="OK", title=message})', - ' return', - ' else', - ' -- produce the non-matching strings for a human-readable error', - ' expected = "{" .. table.concat(expected, ", ") .. "}"', - ' actual = "{" .. table.concat(actual, ", ") .. "}"', - ' end', - ' end', - ' if actual == expected or (type(actual) == "number" and ' + - 'type(expected) == "number" and math.abs(actual - expected) < ' + - '1e-9) then ', - ' table.insert(' + resultsVar + - ', {success=true, log="OK", title=message})', - ' else', - ' table.insert(' + resultsVar + ', {success=false, ' + - 'log=string.format("Expected: %s\\nActual: %s"' + - ', tostring(expected), tostring(actual)), title=message})', - ' end', - 'end']); - return functionName; -}; - -Blockly.Lua['unittest_assertequals'] = function(block) { - // Asserts that a value equals another value. - var message = Blockly.Lua.valueToCode(block, 'MESSAGE', - Blockly.Lua.ORDER_NONE) || ''; - var actual = Blockly.Lua.valueToCode(block, 'ACTUAL', - Blockly.Lua.ORDER_NONE) || 'nil'; - var expected = Blockly.Lua.valueToCode(block, 'EXPECTED', - Blockly.Lua.ORDER_NONE) || 'nil'; - return Blockly.Lua['unittest_main'].defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ')\n'; -}; - -Blockly.Lua['unittest_assertvalue'] = function(block) { - // Asserts that a value is true, false, or null. - var message = Blockly.Lua.valueToCode(block, 'MESSAGE', - Blockly.Lua.ORDER_NONE) || ''; - var actual = Blockly.Lua.valueToCode(block, 'ACTUAL', - Blockly.Lua.ORDER_NONE) || 'nil'; - var expected = block.getFieldValue('EXPECTED'); - if (expected == 'TRUE') { - expected = 'true'; - } else if (expected == 'FALSE') { - expected = 'false'; - } else if (expected == 'NULL') { - expected = 'nil'; - } - return Blockly.Lua.unittest_main.defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ')\n'; -}; - -Blockly.Lua['unittest_fail'] = function(block) { - // Always assert an error. - var resultsVar = Blockly.Lua.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var message = Blockly.Lua.quote_(block.getFieldValue('MESSAGE')); - var functionName = Blockly.Lua.provideFunction_( - 'unittest_fail', - ['function ' + Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_ + '(message)', - ' -- Always assert an error.', - ' assert(' + resultsVar + - ' ~= nil, "Orphaned assert fail: " .. message)', - ' table.insert(' + resultsVar + - ', {success=false, log="Fail.", title=message})', - 'end']); - return functionName + '(' + message + ')\n'; -}; - -Blockly.Lua['unittest_adjustindex'] = function(block) { - var index = Blockly.Lua.valueToCode(block, 'INDEX', - Blockly.Lua.ORDER_ADDITIVE) || '0'; - if (Blockly.isNumber(index)) { - // If the index is a naked number, adjust it right now. - return [Number(index) + 1, Blockly.Lua.ORDER_ATOMIC]; - } - // If the index is dynamic, adjust it in code. - return [index + ' + 1', Blockly.Lua.ORDER_ADDITIVE]; -}; +/** + * @license + * Copyright 2016 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Lua for unit test blocks. + */ +'use strict'; + +Blockly.Lua['unittest_main'] = function(block) { + // Container for unit tests. + var resultsVar = Blockly.Lua.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.Lua.provideFunction_( + 'unittest_report', + ['function ' + Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_ + '()', + ' -- Create test report.', + ' local report = {}', + ' local summary = {}', + ' local fails = 0', + ' for _, v in pairs(' + resultsVar + ') do', + ' if v["success"] then', + ' table.insert(summary, ".")', + ' else', + ' table.insert(summary, "F")', + ' fails = fails + 1', + ' table.insert(report, "FAIL: " .. v["title"])', + ' table.insert(report, v["log"])', + ' end', + ' end', + ' table.insert(report, 1, table.concat(summary))', + ' table.insert(report, "")', + ' table.insert(report, "Number of tests run: " .. #' + resultsVar + ')', + ' table.insert(report, "")', + ' if fails > 0 then', + ' table.insert(report, "FAILED (failures=" .. fails .. ")")', + ' else', + ' table.insert(report, "OK")', + ' end', + ' return table.concat(report, "\\n")', + 'end']); + // Setup global to hold test results. + var code = resultsVar + ' = {}\n'; + // Say which test suite this is. + code += 'print(\'\\n====================\\n\\n' + + 'Running suite: ' + + block.getFieldValue('SUITE_NAME') + + '\')\n'; + // Run tests (unindented). + code += Blockly.Lua.statementToCode(block, 'DO') + .replace(/^ /, '').replace(/\n /g, '\n'); + // Print the report. + code += 'print(' + functionName + '())\n'; + // Destroy results. + code += resultsVar + ' = nil\n'; + return code; +}; + +Blockly.Lua['unittest_main'].defineAssert_ = function(block) { + var resultsVar = Blockly.Lua.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.Lua.provideFunction_( + 'assertEquals', + ['function ' + Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_ + + '(actual, expected, message)', + ' -- Asserts that a value equals another value.', + ' assert(' + resultsVar + ' ~= nil, ' + + '"Orphaned assert equals: " .. message)', + ' if type(actual) == "table" and type(expected) == "table" then', + ' local lists_match = #actual == #expected', + ' if lists_match then', + ' for i, v1 in ipairs(actual) do', + ' local v2 = expected[i]', + ' if type(v1) == "number" and type(v2) == "number" then', + ' if math.abs(v1 - v2) > 1e-9 then', + ' lists_match = false', + ' end', + ' elseif v1 ~= v2 then', + ' lists_match = false', + ' end', + ' end', + ' end', + ' if lists_match then', + ' table.insert(' + resultsVar + + ', {success=true, log="OK", title=message})', + ' return', + ' else', + ' -- produce the non-matching strings for a human-readable error', + ' expected = "{" .. table.concat(expected, ", ") .. "}"', + ' actual = "{" .. table.concat(actual, ", ") .. "}"', + ' end', + ' end', + ' if actual == expected or (type(actual) == "number" and ' + + 'type(expected) == "number" and math.abs(actual - expected) < ' + + '1e-9) then ', + ' table.insert(' + resultsVar + + ', {success=true, log="OK", title=message})', + ' else', + ' table.insert(' + resultsVar + ', {success=false, ' + + 'log=string.format("Expected: %s\\nActual: %s"' + + ', tostring(expected), tostring(actual)), title=message})', + ' end', + 'end']); + return functionName; +}; + +Blockly.Lua['unittest_assertequals'] = function(block) { + // Asserts that a value equals another value. + var message = Blockly.Lua.valueToCode(block, 'MESSAGE', + Blockly.Lua.ORDER_NONE) || ''; + var actual = Blockly.Lua.valueToCode(block, 'ACTUAL', + Blockly.Lua.ORDER_NONE) || 'nil'; + var expected = Blockly.Lua.valueToCode(block, 'EXPECTED', + Blockly.Lua.ORDER_NONE) || 'nil'; + return Blockly.Lua['unittest_main'].defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ')\n'; +}; + +Blockly.Lua['unittest_assertvalue'] = function(block) { + // Asserts that a value is true, false, or null. + var message = Blockly.Lua.valueToCode(block, 'MESSAGE', + Blockly.Lua.ORDER_NONE) || ''; + var actual = Blockly.Lua.valueToCode(block, 'ACTUAL', + Blockly.Lua.ORDER_NONE) || 'nil'; + var expected = block.getFieldValue('EXPECTED'); + if (expected == 'TRUE') { + expected = 'true'; + } else if (expected == 'FALSE') { + expected = 'false'; + } else if (expected == 'NULL') { + expected = 'nil'; + } + return Blockly.Lua.unittest_main.defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ')\n'; +}; + +Blockly.Lua['unittest_fail'] = function(block) { + // Always assert an error. + var resultsVar = Blockly.Lua.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var message = Blockly.Lua.quote_(block.getFieldValue('MESSAGE')); + var functionName = Blockly.Lua.provideFunction_( + 'unittest_fail', + ['function ' + Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_ + '(message)', + ' -- Always assert an error.', + ' assert(' + resultsVar + + ' ~= nil, "Orphaned assert fail: " .. message)', + ' table.insert(' + resultsVar + + ', {success=false, log="Fail.", title=message})', + 'end']); + return functionName + '(' + message + ')\n'; +}; + +Blockly.Lua['unittest_adjustindex'] = function(block) { + var index = Blockly.Lua.valueToCode(block, 'INDEX', + Blockly.Lua.ORDER_ADDITIVE) || '0'; + if (Blockly.isNumber(index)) { + // If the index is a naked number, adjust it right now. + return [Number(index) + 1, Blockly.Lua.ORDER_ATOMIC]; + } + // If the index is dynamic, adjust it in code. + return [index + ' + 1', Blockly.Lua.ORDER_ADDITIVE]; +}; diff --git a/tests/generators/unittest_php.js b/tests/generators/unittest_php.js index eba709ce053..e7a10aa3449 100644 --- a/tests/generators/unittest_php.js +++ b/tests/generators/unittest_php.js @@ -1,154 +1,154 @@ -/** - * @license - * Copyright 2015 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating PHP for unit test blocks. - */ -'use strict'; - -Blockly.PHP['unittest_main'] = function(block) { - // Container for unit tests. - var resultsVar = Blockly.PHP.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.PHP.provideFunction_( - 'unittest_report', - [ 'function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '() {', - ' global ' + resultsVar + ';', - ' // Create test report.', - ' $report = array();', - ' $summary = array();', - ' $fails = 0;', - ' for ($x = 0; $x < count(' + resultsVar + '); $x++) {', - ' if (' + resultsVar + '[$x][0]) {', - ' array_push($summary, ".");', - ' } else {', - ' array_push($summary, "F");', - ' $fails++;', - ' array_push($report, "");', - ' array_push($report, "FAIL: " . ' + resultsVar + '[$x][2]);', - ' array_push($report, ' + resultsVar + '[$x][1]);', - ' }', - ' }', - ' array_unshift($report, implode("", $summary));', - ' array_push($report, "");', - ' array_push($report, "Number of tests run: " . count(' + resultsVar + '));', - ' array_push($report, "");', - ' if ($fails) {', - ' array_push($report, "FAILED (failures=" . $fails . ")");', - ' } else {', - ' array_push($report, "OK");', - ' }', - ' return implode("\\n", $report);', - '}']); - // Setup global to hold test results. - var code = resultsVar + ' = array();\n'; - // Say which test suite this is. - code += 'print("\\n====================\\n\\n' + - 'Running suite: ' + - block.getFieldValue('SUITE_NAME') + - '\\n");\n'; - // Run tests (unindented). - code += Blockly.PHP.statementToCode(block, 'DO') - .replace(/^ /, '').replace(/\n /g, '\n'); - // Send the report to the console (that's where errors will go anyway). - code += 'print(' + functionName + '());\n'; - // Destroy results. - code += resultsVar + ' = null;\n'; - return code; -}; - -Blockly.PHP['unittest_main'].defineAssert_ = function(block) { - var resultsVar = Blockly.PHP.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.PHP.provideFunction_( - 'assertEquals', - ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + - '($actual, $expected, $message) {', - ' global ' + resultsVar + ';', - ' // Asserts that a value equals another value.', - ' if (!is_array(' + resultsVar + ')) {', - ' throw new Exception("Orphaned assert: " . $message);', - ' }', - ' if ($actual == $expected) {', - ' array_push(' + resultsVar + ', [true, "OK", $message]);', - ' } else {', - ' $expected = is_array($expected) ? implode(" ", $expected) : ' + - '$expected;', - ' $actual = is_array($actual) ? implode(" ", $actual) : ' + - '$actual;', - ' array_push(' + resultsVar + ', [false, ' + - '"Expected: " . $expected . "\\nActual: " . $actual, $message]);', - ' }', - '}']); - return functionName; -}; - -Blockly.PHP['unittest_assertequals'] = function(block) { - // Asserts that a value equals another value. - var message = Blockly.PHP.valueToCode(block, 'MESSAGE', - Blockly.PHP.ORDER_NONE) || ''; - var actual = Blockly.PHP.valueToCode(block, 'ACTUAL', - Blockly.PHP.ORDER_NONE) || 'null'; - var expected = Blockly.PHP.valueToCode(block, 'EXPECTED', - Blockly.PHP.ORDER_NONE) || 'null'; - return Blockly.PHP['unittest_main'].defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ');\n'; -}; - -Blockly.PHP['unittest_assertvalue'] = function(block) { - // Asserts that a value is true, false, or null. - var message = Blockly.PHP.valueToCode(block, 'MESSAGE', - Blockly.PHP.ORDER_NONE) || ''; - var actual = Blockly.PHP.valueToCode(block, 'ACTUAL', - Blockly.PHP.ORDER_NONE) || 'null'; - var expected = block.getFieldValue('EXPECTED'); - if (expected == 'TRUE') { - expected = 'true'; - } else if (expected == 'FALSE') { - expected = 'false'; - } else if (expected == 'NULL') { - expected = 'null'; - } - return Blockly.PHP['unittest_main'].defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ');\n'; -}; - -Blockly.PHP['unittest_fail'] = function(block) { - // Always assert an error. - var resultsVar = Blockly.PHP.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var message = Blockly.PHP.quote_(block.getFieldValue('MESSAGE')); - var functionName = Blockly.PHP.provideFunction_( - 'unittest_fail', - [ 'function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + - '($message) {', - ' global ' + resultsVar + ';', - ' // Always assert an error.', - ' if (!' + resultsVar + ') {', - ' throw new Exception("Orphaned assert fail: " . $message);', - ' }', - ' array_push(' + resultsVar + ', [false, "Fail.", $message]);', - '}']); - return functionName + '(' + message + ');\n'; -}; - -Blockly.PHP['unittest_adjustindex'] = function(block) { - var index = Blockly.PHP.valueToCode(block, 'INDEX', - Blockly.PHP.ORDER_ADDITION) || '0'; - // Adjust index if using one-based indexing. - if (block.workspace.options.oneBasedIndex) { - if (Blockly.isNumber(index)) { - // If the index is a naked number, adjust it right now. - return [Number(index) + 1, Blockly.PHP.ORDER_ATOMIC]; - } else { - // If the index is dynamic, adjust it in code. - index = index + ' + 1'; - } - } else if (Blockly.isNumber(index)) { - return [index, Blockly.PHP.ORDER_ATOMIC]; - } - return [index, Blockly.PHP.ORDER_ADDITION]; -}; +/** + * @license + * Copyright 2015 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating PHP for unit test blocks. + */ +'use strict'; + +Blockly.PHP['unittest_main'] = function(block) { + // Container for unit tests. + var resultsVar = Blockly.PHP.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.PHP.provideFunction_( + 'unittest_report', + [ 'function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + '() {', + ' global ' + resultsVar + ';', + ' // Create test report.', + ' $report = array();', + ' $summary = array();', + ' $fails = 0;', + ' for ($x = 0; $x < count(' + resultsVar + '); $x++) {', + ' if (' + resultsVar + '[$x][0]) {', + ' array_push($summary, ".");', + ' } else {', + ' array_push($summary, "F");', + ' $fails++;', + ' array_push($report, "");', + ' array_push($report, "FAIL: " . ' + resultsVar + '[$x][2]);', + ' array_push($report, ' + resultsVar + '[$x][1]);', + ' }', + ' }', + ' array_unshift($report, implode("", $summary));', + ' array_push($report, "");', + ' array_push($report, "Number of tests run: " . count(' + resultsVar + '));', + ' array_push($report, "");', + ' if ($fails) {', + ' array_push($report, "FAILED (failures=" . $fails . ")");', + ' } else {', + ' array_push($report, "OK");', + ' }', + ' return implode("\\n", $report);', + '}']); + // Setup global to hold test results. + var code = resultsVar + ' = array();\n'; + // Say which test suite this is. + code += 'print("\\n====================\\n\\n' + + 'Running suite: ' + + block.getFieldValue('SUITE_NAME') + + '\\n");\n'; + // Run tests (unindented). + code += Blockly.PHP.statementToCode(block, 'DO') + .replace(/^ /, '').replace(/\n /g, '\n'); + // Send the report to the console (that's where errors will go anyway). + code += 'print(' + functionName + '());\n'; + // Destroy results. + code += resultsVar + ' = null;\n'; + return code; +}; + +Blockly.PHP['unittest_main'].defineAssert_ = function(block) { + var resultsVar = Blockly.PHP.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.PHP.provideFunction_( + 'assertEquals', + ['function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + + '($actual, $expected, $message) {', + ' global ' + resultsVar + ';', + ' // Asserts that a value equals another value.', + ' if (!is_array(' + resultsVar + ')) {', + ' throw new Exception("Orphaned assert: " . $message);', + ' }', + ' if ($actual == $expected) {', + ' array_push(' + resultsVar + ', [true, "OK", $message]);', + ' } else {', + ' $expected = is_array($expected) ? implode(" ", $expected) : ' + + '$expected;', + ' $actual = is_array($actual) ? implode(" ", $actual) : ' + + '$actual;', + ' array_push(' + resultsVar + ', [false, ' + + '"Expected: " . $expected . "\\nActual: " . $actual, $message]);', + ' }', + '}']); + return functionName; +}; + +Blockly.PHP['unittest_assertequals'] = function(block) { + // Asserts that a value equals another value. + var message = Blockly.PHP.valueToCode(block, 'MESSAGE', + Blockly.PHP.ORDER_NONE) || ''; + var actual = Blockly.PHP.valueToCode(block, 'ACTUAL', + Blockly.PHP.ORDER_NONE) || 'null'; + var expected = Blockly.PHP.valueToCode(block, 'EXPECTED', + Blockly.PHP.ORDER_NONE) || 'null'; + return Blockly.PHP['unittest_main'].defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ');\n'; +}; + +Blockly.PHP['unittest_assertvalue'] = function(block) { + // Asserts that a value is true, false, or null. + var message = Blockly.PHP.valueToCode(block, 'MESSAGE', + Blockly.PHP.ORDER_NONE) || ''; + var actual = Blockly.PHP.valueToCode(block, 'ACTUAL', + Blockly.PHP.ORDER_NONE) || 'null'; + var expected = block.getFieldValue('EXPECTED'); + if (expected == 'TRUE') { + expected = 'true'; + } else if (expected == 'FALSE') { + expected = 'false'; + } else if (expected == 'NULL') { + expected = 'null'; + } + return Blockly.PHP['unittest_main'].defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ');\n'; +}; + +Blockly.PHP['unittest_fail'] = function(block) { + // Always assert an error. + var resultsVar = Blockly.PHP.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var message = Blockly.PHP.quote_(block.getFieldValue('MESSAGE')); + var functionName = Blockly.PHP.provideFunction_( + 'unittest_fail', + [ 'function ' + Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_ + + '($message) {', + ' global ' + resultsVar + ';', + ' // Always assert an error.', + ' if (!' + resultsVar + ') {', + ' throw new Exception("Orphaned assert fail: " . $message);', + ' }', + ' array_push(' + resultsVar + ', [false, "Fail.", $message]);', + '}']); + return functionName + '(' + message + ');\n'; +}; + +Blockly.PHP['unittest_adjustindex'] = function(block) { + var index = Blockly.PHP.valueToCode(block, 'INDEX', + Blockly.PHP.ORDER_ADDITION) || '0'; + // Adjust index if using one-based indexing. + if (block.workspace.options.oneBasedIndex) { + if (Blockly.isNumber(index)) { + // If the index is a naked number, adjust it right now. + return [Number(index) + 1, Blockly.PHP.ORDER_ATOMIC]; + } else { + // If the index is dynamic, adjust it in code. + index = index + ' + 1'; + } + } else if (Blockly.isNumber(index)) { + return [index, Blockly.PHP.ORDER_ATOMIC]; + } + return [index, Blockly.PHP.ORDER_ADDITION]; +}; diff --git a/tests/generators/unittest_python.js b/tests/generators/unittest_python.js index 073211d6287..929771e9b07 100644 --- a/tests/generators/unittest_python.js +++ b/tests/generators/unittest_python.js @@ -1,138 +1,138 @@ -/** - * @license - * Copyright 2012 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Generating Python for unit test blocks. - */ -'use strict'; - -Blockly.Python['unittest_main'] = function(block) { - // Container for unit tests. - var resultsVar = Blockly.Python.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.Python.provideFunction_( - 'unittest_report', - ['def ' + Blockly.Python.FUNCTION_NAME_PLACEHOLDER_ + '():', - ' # Create test report.', - ' report = []', - ' summary = []', - ' fails = 0', - ' for (success, log, message) in ' + resultsVar + ':', - ' if success:', - ' summary.append(".")', - ' else:', - ' summary.append("F")', - ' fails += 1', - ' report.append("")', - ' report.append("FAIL: " + message)', - ' report.append(log)', - ' report.insert(0, "".join(summary))', - ' report.append("")', - ' report.append("Number of tests run: %d" % len(' + resultsVar + '))', - ' report.append("")', - ' if fails:', - ' report.append("FAILED (failures=%d)" % fails)', - ' else:', - ' report.append("OK")', - ' return "\\n".join(report)']); - - // Setup global to hold test results. - var code = resultsVar + ' = []\n'; - // Say which test suite this is. - code += 'print(\'\\n====================\\n\\n' + - 'Running suite: ' + - block.getFieldValue('SUITE_NAME') + - '\')\n'; - // Run tests (unindented). - code += Blockly.Python.statementToCode(block, 'DO') - .replace(/^ /, '').replace(/\n /g, '\n'); - // Print the report. - code += 'print(' + functionName + '())\n'; - // Destroy results. - code += resultsVar + ' = None\n'; - return code; -}; - -Blockly.Python['unittest_main'].defineAssert_ = function() { - var resultsVar = Blockly.Python.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var functionName = Blockly.Python.provideFunction_( - 'assertEquals', - ['def ' + Blockly.Python.FUNCTION_NAME_PLACEHOLDER_ + - '(actual, expected, message):', - ' # Asserts that a value equals another value.', - ' if ' + resultsVar + ' == None:', - ' raise Exception("Orphaned assert equals: " + message)', - ' if actual == expected:', - ' ' + resultsVar + '.append((True, "OK", message))', - ' else:', - ' ' + resultsVar + '.append((False, ' + - '"Expected: %s\\nActual: %s" % (expected, actual), message))']); - return functionName; -}; - -Blockly.Python['unittest_assertequals'] = function(block) { - // Asserts that a value equals another value. - var message = Blockly.Python.valueToCode(block, 'MESSAGE', - Blockly.Python.ORDER_NONE) || ''; - var actual = Blockly.Python.valueToCode(block, 'ACTUAL', - Blockly.Python.ORDER_NONE) || 'None'; - var expected = Blockly.Python.valueToCode(block, 'EXPECTED', - Blockly.Python.ORDER_NONE) || 'None'; - return Blockly.Python['unittest_main'].defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ')\n'; -}; - -Blockly.Python['unittest_assertvalue'] = function(block) { - // Asserts that a value is true, false, or null. - var message = Blockly.Python.valueToCode(block, 'MESSAGE', - Blockly.Python.ORDER_NONE) || ''; - var actual = Blockly.Python.valueToCode(block, 'ACTUAL', - Blockly.Python.ORDER_NONE) || 'None'; - var expected = block.getFieldValue('EXPECTED'); - if (expected == 'TRUE') { - expected = 'True'; - } else if (expected == 'FALSE') { - expected = 'False'; - } else if (expected == 'NULL') { - expected = 'None'; - } - return Blockly.Python['unittest_main'].defineAssert_() + - '(' + actual + ', ' + expected + ', ' + message + ')\n'; -}; - -Blockly.Python['unittest_fail'] = function(block) { - // Always assert an error. - var resultsVar = Blockly.Python.nameDB_.getName('unittestResults', - Blockly.Names.DEVELOPER_VARIABLE_TYPE); - var message = Blockly.Python.quote_(block.getFieldValue('MESSAGE')); - var functionName = Blockly.Python.provideFunction_( - 'fail', - ['def ' + Blockly.Python.FUNCTION_NAME_PLACEHOLDER_ + '(message):', - ' # Always assert an error.', - ' if ' + resultsVar + ' == None:', - ' raise Exception("Orphaned assert equals: " + message)', - ' ' + resultsVar + '.append((False, "Fail.", message))']); - return functionName + '(' + message + ')\n'; -}; - -Blockly.Python['unittest_adjustindex'] = function(block) { - var index = Blockly.Python.valueToCode(block, 'INDEX', - Blockly.Python.ORDER_ADDITIVE) || '0'; - // Adjust index if using one-based indexing. - if (block.workspace.options.oneBasedIndex) { - if (Blockly.isNumber(index)) { - // If the index is a naked number, adjust it right now. - return [Number(index) + 1, Blockly.Python.ORDER_ATOMIC]; - } else { - // If the index is dynamic, adjust it in code. - index = index + ' + 1'; - } - } else if (Blockly.isNumber(index)) { - return [index, Blockly.Python.ORDER_ATOMIC]; - } - return [index, Blockly.Python.ORDER_ADDITIVE]; -}; +/** + * @license + * Copyright 2012 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Generating Python for unit test blocks. + */ +'use strict'; + +Blockly.Python['unittest_main'] = function(block) { + // Container for unit tests. + var resultsVar = Blockly.Python.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.Python.provideFunction_( + 'unittest_report', + ['def ' + Blockly.Python.FUNCTION_NAME_PLACEHOLDER_ + '():', + ' # Create test report.', + ' report = []', + ' summary = []', + ' fails = 0', + ' for (success, log, message) in ' + resultsVar + ':', + ' if success:', + ' summary.append(".")', + ' else:', + ' summary.append("F")', + ' fails += 1', + ' report.append("")', + ' report.append("FAIL: " + message)', + ' report.append(log)', + ' report.insert(0, "".join(summary))', + ' report.append("")', + ' report.append("Number of tests run: %d" % len(' + resultsVar + '))', + ' report.append("")', + ' if fails:', + ' report.append("FAILED (failures=%d)" % fails)', + ' else:', + ' report.append("OK")', + ' return "\\n".join(report)']); + + // Setup global to hold test results. + var code = resultsVar + ' = []\n'; + // Say which test suite this is. + code += 'print(\'\\n====================\\n\\n' + + 'Running suite: ' + + block.getFieldValue('SUITE_NAME') + + '\')\n'; + // Run tests (unindented). + code += Blockly.Python.statementToCode(block, 'DO') + .replace(/^ /, '').replace(/\n /g, '\n'); + // Print the report. + code += 'print(' + functionName + '())\n'; + // Destroy results. + code += resultsVar + ' = None\n'; + return code; +}; + +Blockly.Python['unittest_main'].defineAssert_ = function() { + var resultsVar = Blockly.Python.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var functionName = Blockly.Python.provideFunction_( + 'assertEquals', + ['def ' + Blockly.Python.FUNCTION_NAME_PLACEHOLDER_ + + '(actual, expected, message):', + ' # Asserts that a value equals another value.', + ' if ' + resultsVar + ' == None:', + ' raise Exception("Orphaned assert equals: " + message)', + ' if actual == expected:', + ' ' + resultsVar + '.append((True, "OK", message))', + ' else:', + ' ' + resultsVar + '.append((False, ' + + '"Expected: %s\\nActual: %s" % (expected, actual), message))']); + return functionName; +}; + +Blockly.Python['unittest_assertequals'] = function(block) { + // Asserts that a value equals another value. + var message = Blockly.Python.valueToCode(block, 'MESSAGE', + Blockly.Python.ORDER_NONE) || ''; + var actual = Blockly.Python.valueToCode(block, 'ACTUAL', + Blockly.Python.ORDER_NONE) || 'None'; + var expected = Blockly.Python.valueToCode(block, 'EXPECTED', + Blockly.Python.ORDER_NONE) || 'None'; + return Blockly.Python['unittest_main'].defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ')\n'; +}; + +Blockly.Python['unittest_assertvalue'] = function(block) { + // Asserts that a value is true, false, or null. + var message = Blockly.Python.valueToCode(block, 'MESSAGE', + Blockly.Python.ORDER_NONE) || ''; + var actual = Blockly.Python.valueToCode(block, 'ACTUAL', + Blockly.Python.ORDER_NONE) || 'None'; + var expected = block.getFieldValue('EXPECTED'); + if (expected == 'TRUE') { + expected = 'True'; + } else if (expected == 'FALSE') { + expected = 'False'; + } else if (expected == 'NULL') { + expected = 'None'; + } + return Blockly.Python['unittest_main'].defineAssert_() + + '(' + actual + ', ' + expected + ', ' + message + ')\n'; +}; + +Blockly.Python['unittest_fail'] = function(block) { + // Always assert an error. + var resultsVar = Blockly.Python.nameDB_.getName('unittestResults', + Blockly.Names.DEVELOPER_VARIABLE_TYPE); + var message = Blockly.Python.quote_(block.getFieldValue('MESSAGE')); + var functionName = Blockly.Python.provideFunction_( + 'fail', + ['def ' + Blockly.Python.FUNCTION_NAME_PLACEHOLDER_ + '(message):', + ' # Always assert an error.', + ' if ' + resultsVar + ' == None:', + ' raise Exception("Orphaned assert equals: " + message)', + ' ' + resultsVar + '.append((False, "Fail.", message))']); + return functionName + '(' + message + ')\n'; +}; + +Blockly.Python['unittest_adjustindex'] = function(block) { + var index = Blockly.Python.valueToCode(block, 'INDEX', + Blockly.Python.ORDER_ADDITIVE) || '0'; + // Adjust index if using one-based indexing. + if (block.workspace.options.oneBasedIndex) { + if (Blockly.isNumber(index)) { + // If the index is a naked number, adjust it right now. + return [Number(index) + 1, Blockly.Python.ORDER_ATOMIC]; + } else { + // If the index is dynamic, adjust it in code. + index = index + ' + 1'; + } + } else if (Blockly.isNumber(index)) { + return [index, Blockly.Python.ORDER_ATOMIC]; + } + return [index, Blockly.Python.ORDER_ADDITIVE]; +}; diff --git a/tests/generators/variables.xml b/tests/generators/variables.xml index a95ec893203..c5019655efa 100644 --- a/tests/generators/variables.xml +++ b/tests/generators/variables.xml @@ -1,68 +1,68 @@ - - - - Variables - - - item - - - 123 - - - - - - - variable - - - - - item - - - - - 123 - - - - - if - - - 123 - - - - - - - reserved variable - - - - - if - - - - - 123 - - - - - - - - - - - - - naked - Intentionally non-connected variable. - - + + + + Variables + + + item + + + 123 + + + + + + + variable + + + + + item + + + + + 123 + + + + + if + + + 123 + + + + + + + reserved variable + + + + + if + + + + + 123 + + + + + + + + + + + + + naked + Intentionally non-connected variable. + + diff --git a/tests/migration/renamings-schema.json b/tests/migration/renamings-schema.json index 6dc643b2075..346e52161f2 100644 --- a/tests/migration/renamings-schema.json +++ b/tests/migration/renamings-schema.json @@ -1,57 +1,57 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/google/blockly/tests/migration/renamings-schema.json", - "title": "Renamings", - "description": "A file containing information about module and module export renamings", - "type": "object", - "patternProperties": { - "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$": {"$ref": "#/$defs/version"} - }, - "properties": { - "develop": {"$ref": "#/$defs/version"} - }, - "additionalProperties": false, - "$defs": { - "version": { - "description": "All the renamings that happened in a paricular release.", - "type": "array", - "items": { - "description": "All the renamings in/of a particular module.", - "type": "object", - "properties": { - "oldName": {"$ref": "#/$defs/dottedIdentifier"}, - "newName": {"$ref": "#/$defs/dottedIdentifier"}, - "newExport": {"$ref": "#/$defs/dottedIdentifier"}, - "oldPath": {"$ref": "#/$defs/dottedIdentifier"}, - "newPath": {"$ref": "#/$defs/dottedIdentifier"}, - "exports": { - "description": "A list of the exports that have been renamed.", - "type": "object", - "patternProperties": { - "^[A-Za-z$_][A-Za-z0-9$_]*(\\.[A-Za-z$_][A-Za-z0-9$_]*)*$": { - "description": "A single renamed (or moved) export.", - "type": "object", - "properties": { - "newModule": {"$ref": "#/$defs/dottedIdentifier"}, - "newExport": {"$ref": "#/$defs/dottedIdentifier"}, - "oldPath": {"$ref": "#/$defs/dottedIdentifier"}, - "newPath": {"$ref": "#/$defs/dottedIdentifier"}, - "getMethod": {"$ref": "#/$defs/dottedIdentifier"}, - "setMethod": {"$ref": "#/$defs/dottedIdentifier"} - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "required": ["oldName"], - "additionalProperties": false - } - }, - "dottedIdentifier": { - "type": "string", - "pattern": "^[A-Za-z$_][A-Za-z0-9$_]*(\\.[A-Za-z$_][A-Za-z0-9$_]*)*$" - } - } -} +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/google/blockly/tests/migration/renamings-schema.json", + "title": "Renamings", + "description": "A file containing information about module and module export renamings", + "type": "object", + "patternProperties": { + "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$": {"$ref": "#/$defs/version"} + }, + "properties": { + "develop": {"$ref": "#/$defs/version"} + }, + "additionalProperties": false, + "$defs": { + "version": { + "description": "All the renamings that happened in a paricular release.", + "type": "array", + "items": { + "description": "All the renamings in/of a particular module.", + "type": "object", + "properties": { + "oldName": {"$ref": "#/$defs/dottedIdentifier"}, + "newName": {"$ref": "#/$defs/dottedIdentifier"}, + "newExport": {"$ref": "#/$defs/dottedIdentifier"}, + "oldPath": {"$ref": "#/$defs/dottedIdentifier"}, + "newPath": {"$ref": "#/$defs/dottedIdentifier"}, + "exports": { + "description": "A list of the exports that have been renamed.", + "type": "object", + "patternProperties": { + "^[A-Za-z$_][A-Za-z0-9$_]*(\\.[A-Za-z$_][A-Za-z0-9$_]*)*$": { + "description": "A single renamed (or moved) export.", + "type": "object", + "properties": { + "newModule": {"$ref": "#/$defs/dottedIdentifier"}, + "newExport": {"$ref": "#/$defs/dottedIdentifier"}, + "oldPath": {"$ref": "#/$defs/dottedIdentifier"}, + "newPath": {"$ref": "#/$defs/dottedIdentifier"}, + "getMethod": {"$ref": "#/$defs/dottedIdentifier"}, + "setMethod": {"$ref": "#/$defs/dottedIdentifier"} + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "required": ["oldName"], + "additionalProperties": false + } + }, + "dottedIdentifier": { + "type": "string", + "pattern": "^[A-Za-z$_][A-Za-z0-9$_]*(\\.[A-Za-z$_][A-Za-z0-9$_]*)*$" + } + } +} diff --git a/tests/migration/validate-renamings.js b/tests/migration/validate-renamings.js index 8b66e3beab0..e6b39c73aac 100755 --- a/tests/migration/validate-renamings.js +++ b/tests/migration/validate-renamings.js @@ -1,73 +1,73 @@ -#!/usr/bin/env node -/** - * @license - * Copyright 2022 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview A script to validate the renamings file - * (scripts/migration/renamings.json5) agaist the schema - * (renamings-schema.json). - */ - -/* global require __dirname process */ - -const JsonSchema = require('@hyperjump/json-schema'); -const JSON5 = require('json5'); -const fs = require('fs'); -const path = require('path'); - - -/** - * Renaming schema filename. - * @type {string} - */ -const SCHEMA_FILENAME = path.join(__dirname, 'renamings-schema.json'); - -/** - * Renamings filename. - * @type {string} - */ -const RENAMINGS_FILENAME = - path.resolve(__dirname, '../../scripts/migration/renamings.json5'); - -// Can't use top-level await outside a module, and can't use require -// in a module, so use an IIAFE. -(async function() { - const schemaUrl = 'file://' + path.resolve(SCHEMA_FILENAME); - const schema = await JsonSchema.get(schemaUrl); - - const renamingsJson5 = fs.readFileSync(RENAMINGS_FILENAME); - const renamings = JSON5.parse(renamingsJson5); - - const output = - await JsonSchema.validate(schema, renamings, JsonSchema.DETAILED); - - if (!output.valid) { - console.log('Renamings file is invalid.'); - console.log('Maybe this validator output will help you find the problem:'); - console.log(JSON5.stringify(output, undefined, ' ')); - process.exit(1); - } - - // File passed schema validation. Do some additional checks. - let ok = true; - Object.entries(renamings).forEach(([version, modules]) => { - // Scan through modules and check for duplicates. - const seen = new Set(); - for (const {oldName} of modules) { - if (seen.has(oldName)) { - console.log(`Duplicate entry for module ${oldName} ` + - `in version ${version}.`); - ok = false; - } - seen.add(oldName); - } - }); - if (!ok) { - console.log('Renamings file is invalid.'); - process.exit(1); - } - // Default is a successful exit 0. -})(); +#!/usr/bin/env node +/** + * @license + * Copyright 2022 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview A script to validate the renamings file + * (scripts/migration/renamings.json5) agaist the schema + * (renamings-schema.json). + */ + +/* global require __dirname process */ + +const JsonSchema = require('@hyperjump/json-schema'); +const JSON5 = require('json5'); +const fs = require('fs'); +const path = require('path'); + + +/** + * Renaming schema filename. + * @type {string} + */ +const SCHEMA_FILENAME = path.join(__dirname, 'renamings-schema.json'); + +/** + * Renamings filename. + * @type {string} + */ +const RENAMINGS_FILENAME = + path.resolve(__dirname, '../../scripts/migration/renamings.json5'); + +// Can't use top-level await outside a module, and can't use require +// in a module, so use an IIAFE. +(async function() { + const schemaUrl = 'file://' + path.resolve(SCHEMA_FILENAME); + const schema = await JsonSchema.get(schemaUrl); + + const renamingsJson5 = fs.readFileSync(RENAMINGS_FILENAME); + const renamings = JSON5.parse(renamingsJson5); + + const output = + await JsonSchema.validate(schema, renamings, JsonSchema.DETAILED); + + if (!output.valid) { + console.log('Renamings file is invalid.'); + console.log('Maybe this validator output will help you find the problem:'); + console.log(JSON5.stringify(output, undefined, ' ')); + process.exit(1); + } + + // File passed schema validation. Do some additional checks. + let ok = true; + Object.entries(renamings).forEach(([version, modules]) => { + // Scan through modules and check for duplicates. + const seen = new Set(); + for (const {oldName} of modules) { + if (seen.has(oldName)) { + console.log(`Duplicate entry for module ${oldName} ` + + `in version ${version}.`); + ok = false; + } + seen.add(oldName); + } + }); + if (!ok) { + console.log('Renamings file is invalid.'); + process.exit(1); + } + // Default is a successful exit 0. +})(); diff --git a/tests/mocha/.eslintrc.json b/tests/mocha/.eslintrc.json index 8ebf31ae61c..cb99e0f9a08 100644 --- a/tests/mocha/.eslintrc.json +++ b/tests/mocha/.eslintrc.json @@ -1,17 +1,17 @@ -{ - "env": { - "browser": true, - "mocha": true - }, - "globals": { - "chai": false, - "sinon": false - }, - "rules": { - "no-unused-vars": ["off"], - // Allow uncommented helper functions in tests. - "require-jsdoc": ["off"], - "prefer-rest-params": ["off"] - }, - "extends": "../../.eslintrc.json" -} +{ + "env": { + "browser": true, + "mocha": true + }, + "globals": { + "chai": false, + "sinon": false + }, + "rules": { + "no-unused-vars": ["off"], + // Allow uncommented helper functions in tests. + "require-jsdoc": ["off"], + "prefer-rest-params": ["off"] + }, + "extends": "../../.eslintrc.json" +} diff --git a/tests/mocha/.mocharc.js b/tests/mocha/.mocharc.js index 3c156db3e95..bf007ef4e12 100644 --- a/tests/mocha/.mocharc.js +++ b/tests/mocha/.mocharc.js @@ -1,7 +1,7 @@ -'use strict'; - -module.exports = { - ui: 'tdd', - file: '../blockly_uncompressed.js', - reporter: 'landing' -}; +'use strict'; + +module.exports = { + ui: 'tdd', + file: '../blockly_uncompressed.js', + reporter: 'landing' +}; diff --git a/tests/mocha/astnode_test.js b/tests/mocha/astnode_test.js index f974f3ea8a2..28f44634681 100644 --- a/tests/mocha/astnode_test.js +++ b/tests/mocha/astnode_test.js @@ -1,807 +1,807 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.astNode'); - -const {ASTNode} = goog.require('Blockly.ASTNode'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('ASTNode', function() { - setup(function() { - sharedTestSetup.call(this); - Blockly.defineBlocksWithJsonArray([{ - "type": "input_statement", - "message0": "%1 %2 %3 %4", - "args0": [ - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - { - "type": "input_value", - "name": "NAME", - }, - { - "type": "input_statement", - "name": "NAME", - }, - ], - "previousStatement": null, - "nextStatement": null, - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "value_input", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "NAME", - }, - ], - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "field_input", - "message0": "%1", - "args0": [ - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - ], - "output": null, - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - ]); - this.workspace = new Blockly.Workspace(); - this.cursor = this.workspace.cursor; - const statementInput1 = this.workspace.newBlock('input_statement'); - const statementInput2 = this.workspace.newBlock('input_statement'); - const statementInput3 = this.workspace.newBlock('input_statement'); - const statementInput4 = this.workspace.newBlock('input_statement'); - const fieldWithOutput = this.workspace.newBlock('field_input'); - const valueInput = this.workspace.newBlock('value_input'); - - statementInput1.nextConnection.connect(statementInput2.previousConnection); - statementInput1.inputList[0].connection - .connect(fieldWithOutput.outputConnection); - statementInput2.inputList[1].connection - .connect(statementInput3.previousConnection); - - this.blocks = { - statementInput1: statementInput1, - statementInput2: statementInput2, - statementInput3: statementInput3, - statementInput4: statementInput4, - fieldWithOutput: fieldWithOutput, - valueInput: valueInput, - }; - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('HelperFunctions', function() { - test('findNextForInput_', function() { - const input = this.blocks.statementInput1.inputList[0]; - const input2 = this.blocks.statementInput1.inputList[1]; - const connection = input.connection; - const node = ASTNode.createConnectionNode(connection); - const newASTNode = node.findNextForInput_(input); - chai.assert.equal(newASTNode.getLocation(), input2.connection); - }); - - test('findPrevForInput_', function() { - const input = this.blocks.statementInput1.inputList[0]; - const input2 = this.blocks.statementInput1.inputList[1]; - const connection = input2.connection; - const node = ASTNode.createConnectionNode(connection); - const newASTNode = node.findPrevForInput_(input2); - chai.assert.equal(newASTNode.getLocation(), input.connection); - }); - - test('findNextForField_', function() { - const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; - const field2 = this.blocks.statementInput1.inputList[0].fieldRow[1]; - const node = ASTNode.createFieldNode(field); - const newASTNode = node.findNextForField_(field); - chai.assert.equal(newASTNode.getLocation(), field2); - }); - - test('findPrevForField_', function() { - const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; - const field2 = this.blocks.statementInput1.inputList[0].fieldRow[1]; - const node = ASTNode.createFieldNode(field2); - const newASTNode = node.findPrevForField_(field2); - chai.assert.equal(newASTNode.getLocation(), field); - }); - - test('navigateBetweenStacks_Forward', function() { - const node = new ASTNode( - ASTNode.types.NEXT, this.blocks.statementInput1.nextConnection); - const newASTNode = node.navigateBetweenStacks_(true); - chai.assert.equal(newASTNode.getLocation(), this.blocks.statementInput4); - }); - - test('navigateBetweenStacks_Backward', function() { - const node = new ASTNode( - ASTNode.types.BLOCK, this.blocks.statementInput4); - const newASTNode = node.navigateBetweenStacks_(false); - chai.assert.equal(newASTNode.getLocation(), this.blocks.statementInput1); - }); - test('getOutAstNodeForBlock_', function() { - const node = new ASTNode( - ASTNode.types.BLOCK, this.blocks.statementInput2); - const newASTNode = node.getOutAstNodeForBlock_(this.blocks.statementInput2); - chai.assert.equal(newASTNode.getLocation(), this.blocks.statementInput1); - }); - test('getOutAstNodeForBlock_OneBlock', function() { - const node = new ASTNode( - ASTNode.types.BLOCK, this.blocks.statementInput4); - const newASTNode = node.getOutAstNodeForBlock_(this.blocks.statementInput4); - chai.assert.equal(newASTNode.getLocation(), this.blocks.statementInput4); - }); - test('findFirstFieldOrInput_', function() { - const node = new ASTNode( - ASTNode.types.BLOCK, this.blocks.statementInput4); - const field = this.blocks.statementInput4.inputList[0].fieldRow[0]; - const newASTNode = node.findFirstFieldOrInput_(this.blocks.statementInput4); - chai.assert.equal(newASTNode.getLocation(), field); - }); - }); - - suite('NavigationFunctions', function() { - setup(function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "top_connection", - "message0": "", - "previousStatement": null, - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "start_block", - "message0": "", - "nextStatement": null, - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "fields_and_input", - "message0": "%1 hi %2 %3 %4", - "args0": [ - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - { - "type": "input_dummy", - }, - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - { - "type": "input_value", - "name": "NAME", - }, - ], - "previousStatement": null, - "nextStatement": null, - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "two_fields", - "message0": "%1 hi", - "args0": [ - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - ], - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "fields_and_input2", - "message0": "%1 %2 %3 hi %4 bye", - "args0": [ - { - "type": "input_value", - "name": "NAME", - }, - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - { - "type": "input_value", - "name": "NAME", - }, - { - "type": "input_statement", - "name": "NAME", - }, - ], - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "dummy_input", - "message0": "Hello", - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "dummy_inputValue", - "message0": "Hello %1 %2", - "args0": [ - { - "type": "input_dummy", - }, - { - "type": "input_value", - "name": "NAME", - }, - ], - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "output_next", - "message0": "", - "output": null, - "colour": 230, - "tooltip": "", - "helpUrl": "", - "nextStatement": null, - }]); - const noNextConnection = this.workspace.newBlock('top_connection'); - const fieldAndInputs = this.workspace.newBlock('fields_and_input'); - const twoFields = this.workspace.newBlock('two_fields'); - const fieldAndInputs2 = this.workspace.newBlock('fields_and_input2'); - const noPrevConnection = this.workspace.newBlock('start_block'); - this.blocks.noNextConnection = noNextConnection; - this.blocks.fieldAndInputs = fieldAndInputs; - this.blocks.twoFields = twoFields; - this.blocks.fieldAndInputs2 = fieldAndInputs2; - this.blocks.noPrevConnection = noPrevConnection; - - const dummyInput = this.workspace.newBlock('dummy_input'); - const dummyInputValue = this.workspace.newBlock('dummy_inputValue'); - const fieldWithOutput2 = this.workspace.newBlock('field_input'); - this.blocks.dummyInput = dummyInput; - this.blocks.dummyInputValue = dummyInputValue; - this.blocks.fieldWithOutput2 = fieldWithOutput2; - - const secondBlock = this.workspace.newBlock('input_statement'); - const outputNextBlock = this.workspace.newBlock('output_next'); - this.blocks.secondBlock = secondBlock; - this.blocks.outputNextBlock = outputNextBlock; - }); - suite('Next', function() { - setup(function() { - this.singleBlockWorkspace = new Blockly.Workspace(); - const singleBlock = this.singleBlockWorkspace.newBlock('two_fields'); - this.blocks.singleBlock = singleBlock; - }); - teardown(function() { - workspaceTeardown.call(this, this.singleBlockWorkspace); - }); - - test('fromPreviousToBlock', function() { - const prevConnection = this.blocks.statementInput1.previousConnection; - const node = ASTNode.createConnectionNode(prevConnection); - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), this.blocks.statementInput1); - }); - test('fromBlockToNext', function() { - const nextConnection = this.blocks.statementInput1.nextConnection; - const node = ASTNode.createBlockNode(this.blocks.statementInput1); - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), nextConnection); - }); - test('fromBlockToNull', function() { - const node = ASTNode.createBlockNode(this.blocks.noNextConnection); - const nextNode = node.next(); - chai.assert.isNull(nextNode); - }); - test('fromNextToPrevious', function() { - const nextConnection = this.blocks.statementInput1.nextConnection; - const prevConnection = this.blocks.statementInput2.previousConnection; - const node = ASTNode.createConnectionNode(nextConnection); - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), prevConnection); - }); - test('fromNextToNull', function() { - const nextConnection = this.blocks.statementInput2.nextConnection; - const node = ASTNode.createConnectionNode(nextConnection); - const nextNode = node.next(); - chai.assert.isNull(nextNode); - }); - test('fromInputToInput', function() { - const input = this.blocks.statementInput1.inputList[0]; - const inputConnection = this.blocks.statementInput1.inputList[1].connection; - const node = ASTNode.createInputNode(input); - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), inputConnection); - }); - test('fromInputToStatementInput', function() { - const input = this.blocks.fieldAndInputs2.inputList[1]; - const inputConnection = this.blocks.fieldAndInputs2.inputList[2].connection; - const node = ASTNode.createInputNode(input); - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), inputConnection); - }); - test('fromInputToField', function() { - const input = this.blocks.fieldAndInputs2.inputList[0]; - const field = this.blocks.fieldAndInputs2.inputList[1].fieldRow[0]; - const node = ASTNode.createInputNode(input); - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), field); - }); - test('fromInputToNull', function() { - const input = this.blocks.fieldAndInputs2.inputList[2]; - const node = ASTNode.createInputNode(input); - const nextNode = node.next(); - chai.assert.isNull(nextNode); - }); - test('fromOutputToBlock', function() { - const output = this.blocks.fieldWithOutput.outputConnection; - const node = ASTNode.createConnectionNode(output); - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), this.blocks.fieldWithOutput); - }); - test('fromFieldToInput', function() { - const field = this.blocks.statementInput1.inputList[0].fieldRow[1]; - const inputConnection = this.blocks.statementInput1.inputList[0].connection; - const node = ASTNode.createFieldNode(field); - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), inputConnection); - }); - test('fromFieldToField', function() { - const field = this.blocks.fieldAndInputs.inputList[0].fieldRow[0]; - const node = ASTNode.createFieldNode(field); - const field2 = this.blocks.fieldAndInputs.inputList[1].fieldRow[0]; - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), field2); - }); - test('fromFieldToNull', function() { - const field = this.blocks.twoFields.inputList[0].fieldRow[0]; - const node = ASTNode.createFieldNode(field); - const nextNode = node.next(); - chai.assert.isNull(nextNode); - }); - test('fromStackToStack', function() { - const node = ASTNode.createStackNode(this.blocks.statementInput1); - const nextNode = node.next(); - chai.assert.equal(nextNode.getLocation(), this.blocks.statementInput4); - chai.assert.equal(nextNode.getType(), ASTNode.types.STACK); - }); - test('fromStackToNull', function() { - const node = ASTNode.createStackNode(this.blocks.singleBlock); - const nextNode = node.next(); - chai.assert.isNull(nextNode); - }); - }); - - suite('Previous', function() { - test('fromPreviousToNull', function() { - const prevConnection = this.blocks.statementInput1.previousConnection; - const node = ASTNode.createConnectionNode(prevConnection); - const prevNode = node.prev(); - chai.assert.isNull(prevNode); - }); - test('fromPreviousToNext', function() { - const prevConnection = this.blocks.statementInput2.previousConnection; - const node = ASTNode.createConnectionNode(prevConnection); - const prevNode = node.prev(); - const nextConnection = this.blocks.statementInput1.nextConnection; - chai.assert.equal(prevNode.getLocation(), nextConnection); - }); - test('fromPreviousToInput', function() { - const prevConnection = this.blocks.statementInput3.previousConnection; - const node = ASTNode.createConnectionNode(prevConnection); - const prevNode = node.prev(); - chai.assert.isNull(prevNode); - }); - test('fromBlockToPrevious', function() { - const node = ASTNode.createBlockNode(this.blocks.statementInput1); - const prevNode = node.prev(); - const prevConnection = this.blocks.statementInput1.previousConnection; - chai.assert.equal(prevNode.getLocation(), prevConnection); - }); - test('fromBlockToNull', function() { - const node = ASTNode.createBlockNode(this.blocks.noPrevConnection); - const prevNode = node.prev(); - chai.assert.isNull(prevNode); - }); - test('fromBlockToOutput', function() { - const node = ASTNode.createBlockNode(this.blocks.fieldWithOutput); - const prevNode = node.prev(); - const outputConnection = this.blocks.fieldWithOutput.outputConnection; - chai.assert.equal(prevNode.getLocation(), outputConnection); - }); - test('fromNextToBlock', function() { - const nextConnection = this.blocks.statementInput1.nextConnection; - const node = ASTNode.createConnectionNode(nextConnection); - const prevNode = node.prev(); - chai.assert.equal(prevNode.getLocation(), this.blocks.statementInput1); - }); - test('fromInputToField', function() { - const input = this.blocks.statementInput1.inputList[0]; - const node = ASTNode.createInputNode(input); - const prevNode = node.prev(); - chai.assert.equal(prevNode.getLocation(), input.fieldRow[1]); - }); - test('fromInputToNull', function() { - const input = this.blocks.fieldAndInputs2.inputList[0]; - const node = ASTNode.createInputNode(input); - const prevNode = node.prev(); - chai.assert.isNull(prevNode); - }); - test('fromInputToInput', function() { - const input = this.blocks.fieldAndInputs2.inputList[2]; - const inputConnection = this.blocks.fieldAndInputs2.inputList[1].connection; - const node = ASTNode.createInputNode(input); - const prevNode = node.prev(); - chai.assert.equal(prevNode.getLocation(), inputConnection); - }); - test('fromOutputToNull', function() { - const output = this.blocks.fieldWithOutput.outputConnection; - const node = ASTNode.createConnectionNode(output); - const prevNode = node.prev(); - chai.assert.isNull(prevNode); - }); - test('fromFieldToNull', function() { - const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; - const node = ASTNode.createFieldNode(field); - const prevNode = node.prev(); - chai.assert.isNull(prevNode); - }); - test('fromFieldToInput', function() { - const field = this.blocks.fieldAndInputs2.inputList[1].fieldRow[0]; - const inputConnection = this.blocks.fieldAndInputs2.inputList[0].connection; - const node = ASTNode.createFieldNode(field); - const prevNode = node.prev(); - chai.assert.equal(prevNode.getLocation(), inputConnection); - }); - test('fromFieldToField', function() { - const field = this.blocks.fieldAndInputs.inputList[1].fieldRow[0]; - const field2 = this.blocks.fieldAndInputs.inputList[0].fieldRow[0]; - const node = ASTNode.createFieldNode(field); - const prevNode = node.prev(); - chai.assert.equal(prevNode.getLocation(), field2); - }); - test('fromStackToStack', function() { - const node = ASTNode.createStackNode(this.blocks.statementInput4); - const prevNode = node.prev(); - chai.assert.equal(prevNode.getLocation(), this.blocks.statementInput1); - chai.assert.equal(prevNode.getType(), ASTNode.types.STACK); - }); - }); - - suite('In', function() { - setup(function() { - this.emptyWorkspace = new Blockly.Workspace(); - }); - teardown(function() { - workspaceTeardown.call(this, this.emptyWorkspace); - }); - - test('fromInputToOutput', function() { - const input = this.blocks.statementInput1.inputList[0]; - const node = ASTNode.createInputNode(input); - const inNode = node.in(); - const outputConnection = this.blocks.fieldWithOutput.outputConnection; - chai.assert.equal(inNode.getLocation(), outputConnection); - }); - test('fromInputToNull', function() { - const input = this.blocks.statementInput2.inputList[0]; - const node = ASTNode.createInputNode(input); - const inNode = node.in(); - chai.assert.isNull(inNode); - }); - test('fromInputToPrevious', function() { - const input = this.blocks.statementInput2.inputList[1]; - const previousConnection = this.blocks.statementInput3.previousConnection; - const node = ASTNode.createInputNode(input); - const inNode = node.in(); - chai.assert.equal(inNode.getLocation(), previousConnection); - }); - test('fromBlockToInput', function() { - const input = this.blocks.valueInput.inputList[0]; - const node = ASTNode.createBlockNode(this.blocks.valueInput); - const inNode = node.in(); - chai.assert.equal(inNode.getLocation(), input.connection); - }); - test('fromBlockToField', function() { - const node = ASTNode.createBlockNode(this.blocks.statementInput1); - const inNode = node.in(); - const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; - chai.assert.equal(inNode.getLocation(), field); - }); - test('fromBlockToPrevious', function() { - const prevConnection = this.blocks.statementInput4.previousConnection; - const node = ASTNode.createStackNode(this.blocks.statementInput4); - const inNode = node.in(); - chai.assert.equal(inNode.getLocation(), prevConnection); - chai.assert.equal(inNode.getType(), ASTNode.types.PREVIOUS); - }); - test('fromBlockToNull_DummyInput', function() { - const node = ASTNode.createBlockNode(this.blocks.dummyInput); - const inNode = node.in(); - chai.assert.isNull(inNode); - }); - test('fromBlockToInput_DummyInputValue', function() { - const node = ASTNode.createBlockNode(this.blocks.dummyInputValue); - const inputConnection = this.blocks.dummyInputValue.inputList[1].connection; - const inNode = node.in(); - chai.assert.equal(inNode.getLocation(), inputConnection); - }); - test('fromOuputToNull', function() { - const output = this.blocks.fieldWithOutput.outputConnection; - const node = ASTNode.createConnectionNode(output); - const inNode = node.in(); - chai.assert.isNull(inNode); - }); - test('fromFieldToNull', function() { - const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; - const node = ASTNode.createFieldNode(field); - const inNode = node.in(); - chai.assert.isNull(inNode); - }); - test('fromWorkspaceToStack', function() { - const coordinate = new Blockly.utils.Coordinate(100, 100); - const node = ASTNode.createWorkspaceNode(this.workspace, coordinate); - const inNode = node.in(); - chai.assert.equal(inNode.getLocation(), this.workspace.getTopBlocks()[0]); - chai.assert.equal(inNode.getType(), ASTNode.types.STACK); - }); - test('fromWorkspaceToNull', function() { - const coordinate = new Blockly.utils.Coordinate(100, 100); - const node = ASTNode.createWorkspaceNode( - this.emptyWorkspace, coordinate); - const inNode = node.in(); - chai.assert.isNull(inNode); - }); - test('fromStackToPrevious', function() { - const node = ASTNode.createStackNode(this.blocks.statementInput1); - const previous = this.blocks.statementInput1.previousConnection; - const inNode = node.in(); - chai.assert.equal(inNode.getLocation(), previous); - chai.assert.equal(inNode.getType(), ASTNode.types.PREVIOUS); - }); - test('fromStackToOutput', function() { - const node = ASTNode.createStackNode(this.blocks.fieldWithOutput2); - const output = this.blocks.fieldWithOutput2.outputConnection; - const inNode = node.in(); - chai.assert.equal(inNode.getLocation(), output); - chai.assert.equal(inNode.getType(), ASTNode.types.OUTPUT); - }); - test('fromStackToBlock', function() { - const node = ASTNode.createStackNode(this.blocks.dummyInput); - const inNode = node.in(); - chai.assert.equal(inNode.getLocation(), this.blocks.dummyInput); - chai.assert.equal(inNode.getType(), ASTNode.types.BLOCK); - }); - }); - - suite('Out', function() { - setup(function() { - const secondBlock = this.blocks.secondBlock; - const outputNextBlock = this.blocks.outputNextBlock; - this.blocks.noPrevConnection.nextConnection.connect(secondBlock.previousConnection); - secondBlock.inputList[0].connection - .connect(outputNextBlock.outputConnection); - }); - - test('fromInputToBlock', function() { - const input = this.blocks.statementInput1.inputList[0]; - const node = ASTNode.createInputNode(input); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.BLOCK); - chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); - }); - test('fromOutputToInput', function() { - const output = this.blocks.fieldWithOutput.outputConnection; - const node = ASTNode.createConnectionNode(output); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); - chai.assert.equal(outNode.getLocation(), - this.blocks.statementInput1.inputList[0].connection); - }); - test('fromOutputToStack', function() { - const output = this.blocks.fieldWithOutput2.outputConnection; - const node = ASTNode.createConnectionNode(output); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.STACK); - chai.assert.equal(outNode.getLocation(), this.blocks.fieldWithOutput2); - }); - test('fromFieldToBlock', function() { - const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; - const node = ASTNode.createFieldNode(field); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.BLOCK); - chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); - }); - test('fromStackToWorkspace', function() { - const stub = sinon.stub(this.blocks.statementInput4, - "getRelativeToSurfaceXY").returns({x: 10, y: 10}); - const node = ASTNode.createStackNode(this.blocks.statementInput4); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.WORKSPACE); - chai.assert.equal(outNode.wsCoordinate_.x, 10); - chai.assert.equal(outNode.wsCoordinate_.y, -10); - stub.restore(); - }); - test('fromPreviousToInput', function() { - const previous = this.blocks.statementInput3.previousConnection; - const inputConnection = this.blocks.statementInput2.inputList[1].connection; - const node = ASTNode.createConnectionNode(previous); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); - chai.assert.equal(outNode.getLocation(), inputConnection); - }); - test('fromPreviousToStack', function() { - const previous = this.blocks.statementInput2.previousConnection; - const node = ASTNode.createConnectionNode(previous); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.STACK); - chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); - }); - test('fromNextToInput', function() { - const next = this.blocks.statementInput3.nextConnection; - const inputConnection = this.blocks.statementInput2.inputList[1].connection; - const node = ASTNode.createConnectionNode(next); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); - chai.assert.equal(outNode.getLocation(), inputConnection); - }); - test('fromNextToStack', function() { - const next = this.blocks.statementInput2.nextConnection; - const node = ASTNode.createConnectionNode(next); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.STACK); - chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); - }); - test('fromNextToStack_NoPreviousConnection', function() { - const next = this.blocks.secondBlock.nextConnection; - const node = ASTNode.createConnectionNode(next); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.STACK); - chai.assert.equal(outNode.getLocation(), this.blocks.noPrevConnection); - }); - /** - * This is where there is a block with both an output connection and a - * next connection attached to an input. - */ - test('fromNextToInput_OutputAndPreviousConnection', function() { - const next = this.blocks.outputNextBlock.nextConnection; - const node = ASTNode.createConnectionNode(next); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); - chai.assert.equal(outNode.getLocation(), - this.blocks.secondBlock.inputList[0].connection); - }); - test('fromBlockToStack', function() { - const node = ASTNode.createBlockNode(this.blocks.statementInput2); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.STACK); - chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); - }); - test('fromBlockToInput', function() { - const input = this.blocks.statementInput2.inputList[1].connection; - const node = ASTNode.createBlockNode(this.blocks.statementInput3); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); - chai.assert.equal(outNode.getLocation(), input); - }); - test('fromTopBlockToStack', function() { - const node = ASTNode.createBlockNode(this.blocks.statementInput1); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.STACK); - chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); - }); - test('fromBlockToStack_OutputConnection', function() { - const node = ASTNode.createBlockNode(this.blocks.fieldWithOutput2); - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.STACK); - chai.assert.equal(outNode.getLocation(), this.blocks.fieldWithOutput2); - }); - test('fromBlockToInput_OutputConnection', function() { - const node = ASTNode.createBlockNode(this.blocks.outputNextBlock); - const inputConnection = this.blocks.secondBlock.inputList[0].connection; - const outNode = node.out(); - chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); - chai.assert.equal(outNode.getLocation(), inputConnection); - }); - }); - - suite('createFunctions', function() { - test('createFieldNode', function() { - const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; - const node = ASTNode.createFieldNode(field); - chai.assert.equal(node.getLocation(), field); - chai.assert.equal(node.getType(), ASTNode.types.FIELD); - chai.assert.isFalse(node.isConnection()); - }); - test('createConnectionNode', function() { - const prevConnection = this.blocks.statementInput4.previousConnection; - const node = ASTNode.createConnectionNode(prevConnection); - chai.assert.equal(node.getLocation(), prevConnection); - chai.assert.equal(node.getType(), ASTNode.types.PREVIOUS); - chai.assert.isTrue(node.isConnection()); - }); - test('createInputNode', function() { - const input = this.blocks.statementInput1.inputList[0]; - const node = ASTNode.createInputNode(input); - chai.assert.equal(node.getLocation(), input.connection); - chai.assert.equal(node.getType(), ASTNode.types.INPUT); - chai.assert.isTrue(node.isConnection()); - }); - test('createWorkspaceNode', function() { - const coordinate = new Blockly.utils.Coordinate(100, 100); - const node = ASTNode - .createWorkspaceNode(this.workspace, coordinate); - chai.assert.equal(node.getLocation(), this.workspace); - chai.assert.equal(node.getType(), ASTNode.types.WORKSPACE); - chai.assert.equal(node.getWsCoordinate(), coordinate); - chai.assert.isFalse(node.isConnection()); - }); - test('createStatementConnectionNode', function() { - const nextConnection = this.blocks.statementInput1.inputList[1].connection; - const inputConnection = this.blocks.statementInput1.inputList[1].connection; - const node = ASTNode.createConnectionNode(nextConnection); - chai.assert.equal(node.getLocation(), inputConnection); - chai.assert.equal(node.getType(), ASTNode.types.INPUT); - chai.assert.isTrue(node.isConnection()); - }); - test('createTopNode-previous', function() { - const block = this.blocks.statementInput1; - const topNode = ASTNode.createTopNode(block); - chai.assert.equal(topNode.getLocation(), block.previousConnection); - }); - test('createTopNode-block', function() { - const block = this.blocks.noPrevConnection; - const topNode = ASTNode.createTopNode(block); - chai.assert.equal(topNode.getLocation(), block); - }); - test('createTopNode-output', function() { - const block = this.blocks.outputNextBlock; - const topNode = ASTNode.createTopNode(block); - chai.assert.equal(topNode.getLocation(), block.outputConnection); - }); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.astNode'); + +const {ASTNode} = goog.require('Blockly.ASTNode'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('ASTNode', function() { + setup(function() { + sharedTestSetup.call(this); + Blockly.defineBlocksWithJsonArray([{ + "type": "input_statement", + "message0": "%1 %2 %3 %4", + "args0": [ + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + { + "type": "input_value", + "name": "NAME", + }, + { + "type": "input_statement", + "name": "NAME", + }, + ], + "previousStatement": null, + "nextStatement": null, + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "value_input", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "NAME", + }, + ], + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "field_input", + "message0": "%1", + "args0": [ + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + ], + "output": null, + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + ]); + this.workspace = new Blockly.Workspace(); + this.cursor = this.workspace.cursor; + const statementInput1 = this.workspace.newBlock('input_statement'); + const statementInput2 = this.workspace.newBlock('input_statement'); + const statementInput3 = this.workspace.newBlock('input_statement'); + const statementInput4 = this.workspace.newBlock('input_statement'); + const fieldWithOutput = this.workspace.newBlock('field_input'); + const valueInput = this.workspace.newBlock('value_input'); + + statementInput1.nextConnection.connect(statementInput2.previousConnection); + statementInput1.inputList[0].connection + .connect(fieldWithOutput.outputConnection); + statementInput2.inputList[1].connection + .connect(statementInput3.previousConnection); + + this.blocks = { + statementInput1: statementInput1, + statementInput2: statementInput2, + statementInput3: statementInput3, + statementInput4: statementInput4, + fieldWithOutput: fieldWithOutput, + valueInput: valueInput, + }; + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('HelperFunctions', function() { + test('findNextForInput_', function() { + const input = this.blocks.statementInput1.inputList[0]; + const input2 = this.blocks.statementInput1.inputList[1]; + const connection = input.connection; + const node = ASTNode.createConnectionNode(connection); + const newASTNode = node.findNextForInput_(input); + chai.assert.equal(newASTNode.getLocation(), input2.connection); + }); + + test('findPrevForInput_', function() { + const input = this.blocks.statementInput1.inputList[0]; + const input2 = this.blocks.statementInput1.inputList[1]; + const connection = input2.connection; + const node = ASTNode.createConnectionNode(connection); + const newASTNode = node.findPrevForInput_(input2); + chai.assert.equal(newASTNode.getLocation(), input.connection); + }); + + test('findNextForField_', function() { + const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; + const field2 = this.blocks.statementInput1.inputList[0].fieldRow[1]; + const node = ASTNode.createFieldNode(field); + const newASTNode = node.findNextForField_(field); + chai.assert.equal(newASTNode.getLocation(), field2); + }); + + test('findPrevForField_', function() { + const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; + const field2 = this.blocks.statementInput1.inputList[0].fieldRow[1]; + const node = ASTNode.createFieldNode(field2); + const newASTNode = node.findPrevForField_(field2); + chai.assert.equal(newASTNode.getLocation(), field); + }); + + test('navigateBetweenStacks_Forward', function() { + const node = new ASTNode( + ASTNode.types.NEXT, this.blocks.statementInput1.nextConnection); + const newASTNode = node.navigateBetweenStacks_(true); + chai.assert.equal(newASTNode.getLocation(), this.blocks.statementInput4); + }); + + test('navigateBetweenStacks_Backward', function() { + const node = new ASTNode( + ASTNode.types.BLOCK, this.blocks.statementInput4); + const newASTNode = node.navigateBetweenStacks_(false); + chai.assert.equal(newASTNode.getLocation(), this.blocks.statementInput1); + }); + test('getOutAstNodeForBlock_', function() { + const node = new ASTNode( + ASTNode.types.BLOCK, this.blocks.statementInput2); + const newASTNode = node.getOutAstNodeForBlock_(this.blocks.statementInput2); + chai.assert.equal(newASTNode.getLocation(), this.blocks.statementInput1); + }); + test('getOutAstNodeForBlock_OneBlock', function() { + const node = new ASTNode( + ASTNode.types.BLOCK, this.blocks.statementInput4); + const newASTNode = node.getOutAstNodeForBlock_(this.blocks.statementInput4); + chai.assert.equal(newASTNode.getLocation(), this.blocks.statementInput4); + }); + test('findFirstFieldOrInput_', function() { + const node = new ASTNode( + ASTNode.types.BLOCK, this.blocks.statementInput4); + const field = this.blocks.statementInput4.inputList[0].fieldRow[0]; + const newASTNode = node.findFirstFieldOrInput_(this.blocks.statementInput4); + chai.assert.equal(newASTNode.getLocation(), field); + }); + }); + + suite('NavigationFunctions', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "top_connection", + "message0": "", + "previousStatement": null, + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "start_block", + "message0": "", + "nextStatement": null, + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "fields_and_input", + "message0": "%1 hi %2 %3 %4", + "args0": [ + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + { + "type": "input_dummy", + }, + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + { + "type": "input_value", + "name": "NAME", + }, + ], + "previousStatement": null, + "nextStatement": null, + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "two_fields", + "message0": "%1 hi", + "args0": [ + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + ], + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "fields_and_input2", + "message0": "%1 %2 %3 hi %4 bye", + "args0": [ + { + "type": "input_value", + "name": "NAME", + }, + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + { + "type": "input_value", + "name": "NAME", + }, + { + "type": "input_statement", + "name": "NAME", + }, + ], + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "dummy_input", + "message0": "Hello", + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "dummy_inputValue", + "message0": "Hello %1 %2", + "args0": [ + { + "type": "input_dummy", + }, + { + "type": "input_value", + "name": "NAME", + }, + ], + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "output_next", + "message0": "", + "output": null, + "colour": 230, + "tooltip": "", + "helpUrl": "", + "nextStatement": null, + }]); + const noNextConnection = this.workspace.newBlock('top_connection'); + const fieldAndInputs = this.workspace.newBlock('fields_and_input'); + const twoFields = this.workspace.newBlock('two_fields'); + const fieldAndInputs2 = this.workspace.newBlock('fields_and_input2'); + const noPrevConnection = this.workspace.newBlock('start_block'); + this.blocks.noNextConnection = noNextConnection; + this.blocks.fieldAndInputs = fieldAndInputs; + this.blocks.twoFields = twoFields; + this.blocks.fieldAndInputs2 = fieldAndInputs2; + this.blocks.noPrevConnection = noPrevConnection; + + const dummyInput = this.workspace.newBlock('dummy_input'); + const dummyInputValue = this.workspace.newBlock('dummy_inputValue'); + const fieldWithOutput2 = this.workspace.newBlock('field_input'); + this.blocks.dummyInput = dummyInput; + this.blocks.dummyInputValue = dummyInputValue; + this.blocks.fieldWithOutput2 = fieldWithOutput2; + + const secondBlock = this.workspace.newBlock('input_statement'); + const outputNextBlock = this.workspace.newBlock('output_next'); + this.blocks.secondBlock = secondBlock; + this.blocks.outputNextBlock = outputNextBlock; + }); + suite('Next', function() { + setup(function() { + this.singleBlockWorkspace = new Blockly.Workspace(); + const singleBlock = this.singleBlockWorkspace.newBlock('two_fields'); + this.blocks.singleBlock = singleBlock; + }); + teardown(function() { + workspaceTeardown.call(this, this.singleBlockWorkspace); + }); + + test('fromPreviousToBlock', function() { + const prevConnection = this.blocks.statementInput1.previousConnection; + const node = ASTNode.createConnectionNode(prevConnection); + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), this.blocks.statementInput1); + }); + test('fromBlockToNext', function() { + const nextConnection = this.blocks.statementInput1.nextConnection; + const node = ASTNode.createBlockNode(this.blocks.statementInput1); + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), nextConnection); + }); + test('fromBlockToNull', function() { + const node = ASTNode.createBlockNode(this.blocks.noNextConnection); + const nextNode = node.next(); + chai.assert.isNull(nextNode); + }); + test('fromNextToPrevious', function() { + const nextConnection = this.blocks.statementInput1.nextConnection; + const prevConnection = this.blocks.statementInput2.previousConnection; + const node = ASTNode.createConnectionNode(nextConnection); + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), prevConnection); + }); + test('fromNextToNull', function() { + const nextConnection = this.blocks.statementInput2.nextConnection; + const node = ASTNode.createConnectionNode(nextConnection); + const nextNode = node.next(); + chai.assert.isNull(nextNode); + }); + test('fromInputToInput', function() { + const input = this.blocks.statementInput1.inputList[0]; + const inputConnection = this.blocks.statementInput1.inputList[1].connection; + const node = ASTNode.createInputNode(input); + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), inputConnection); + }); + test('fromInputToStatementInput', function() { + const input = this.blocks.fieldAndInputs2.inputList[1]; + const inputConnection = this.blocks.fieldAndInputs2.inputList[2].connection; + const node = ASTNode.createInputNode(input); + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), inputConnection); + }); + test('fromInputToField', function() { + const input = this.blocks.fieldAndInputs2.inputList[0]; + const field = this.blocks.fieldAndInputs2.inputList[1].fieldRow[0]; + const node = ASTNode.createInputNode(input); + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), field); + }); + test('fromInputToNull', function() { + const input = this.blocks.fieldAndInputs2.inputList[2]; + const node = ASTNode.createInputNode(input); + const nextNode = node.next(); + chai.assert.isNull(nextNode); + }); + test('fromOutputToBlock', function() { + const output = this.blocks.fieldWithOutput.outputConnection; + const node = ASTNode.createConnectionNode(output); + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), this.blocks.fieldWithOutput); + }); + test('fromFieldToInput', function() { + const field = this.blocks.statementInput1.inputList[0].fieldRow[1]; + const inputConnection = this.blocks.statementInput1.inputList[0].connection; + const node = ASTNode.createFieldNode(field); + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), inputConnection); + }); + test('fromFieldToField', function() { + const field = this.blocks.fieldAndInputs.inputList[0].fieldRow[0]; + const node = ASTNode.createFieldNode(field); + const field2 = this.blocks.fieldAndInputs.inputList[1].fieldRow[0]; + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), field2); + }); + test('fromFieldToNull', function() { + const field = this.blocks.twoFields.inputList[0].fieldRow[0]; + const node = ASTNode.createFieldNode(field); + const nextNode = node.next(); + chai.assert.isNull(nextNode); + }); + test('fromStackToStack', function() { + const node = ASTNode.createStackNode(this.blocks.statementInput1); + const nextNode = node.next(); + chai.assert.equal(nextNode.getLocation(), this.blocks.statementInput4); + chai.assert.equal(nextNode.getType(), ASTNode.types.STACK); + }); + test('fromStackToNull', function() { + const node = ASTNode.createStackNode(this.blocks.singleBlock); + const nextNode = node.next(); + chai.assert.isNull(nextNode); + }); + }); + + suite('Previous', function() { + test('fromPreviousToNull', function() { + const prevConnection = this.blocks.statementInput1.previousConnection; + const node = ASTNode.createConnectionNode(prevConnection); + const prevNode = node.prev(); + chai.assert.isNull(prevNode); + }); + test('fromPreviousToNext', function() { + const prevConnection = this.blocks.statementInput2.previousConnection; + const node = ASTNode.createConnectionNode(prevConnection); + const prevNode = node.prev(); + const nextConnection = this.blocks.statementInput1.nextConnection; + chai.assert.equal(prevNode.getLocation(), nextConnection); + }); + test('fromPreviousToInput', function() { + const prevConnection = this.blocks.statementInput3.previousConnection; + const node = ASTNode.createConnectionNode(prevConnection); + const prevNode = node.prev(); + chai.assert.isNull(prevNode); + }); + test('fromBlockToPrevious', function() { + const node = ASTNode.createBlockNode(this.blocks.statementInput1); + const prevNode = node.prev(); + const prevConnection = this.blocks.statementInput1.previousConnection; + chai.assert.equal(prevNode.getLocation(), prevConnection); + }); + test('fromBlockToNull', function() { + const node = ASTNode.createBlockNode(this.blocks.noPrevConnection); + const prevNode = node.prev(); + chai.assert.isNull(prevNode); + }); + test('fromBlockToOutput', function() { + const node = ASTNode.createBlockNode(this.blocks.fieldWithOutput); + const prevNode = node.prev(); + const outputConnection = this.blocks.fieldWithOutput.outputConnection; + chai.assert.equal(prevNode.getLocation(), outputConnection); + }); + test('fromNextToBlock', function() { + const nextConnection = this.blocks.statementInput1.nextConnection; + const node = ASTNode.createConnectionNode(nextConnection); + const prevNode = node.prev(); + chai.assert.equal(prevNode.getLocation(), this.blocks.statementInput1); + }); + test('fromInputToField', function() { + const input = this.blocks.statementInput1.inputList[0]; + const node = ASTNode.createInputNode(input); + const prevNode = node.prev(); + chai.assert.equal(prevNode.getLocation(), input.fieldRow[1]); + }); + test('fromInputToNull', function() { + const input = this.blocks.fieldAndInputs2.inputList[0]; + const node = ASTNode.createInputNode(input); + const prevNode = node.prev(); + chai.assert.isNull(prevNode); + }); + test('fromInputToInput', function() { + const input = this.blocks.fieldAndInputs2.inputList[2]; + const inputConnection = this.blocks.fieldAndInputs2.inputList[1].connection; + const node = ASTNode.createInputNode(input); + const prevNode = node.prev(); + chai.assert.equal(prevNode.getLocation(), inputConnection); + }); + test('fromOutputToNull', function() { + const output = this.blocks.fieldWithOutput.outputConnection; + const node = ASTNode.createConnectionNode(output); + const prevNode = node.prev(); + chai.assert.isNull(prevNode); + }); + test('fromFieldToNull', function() { + const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; + const node = ASTNode.createFieldNode(field); + const prevNode = node.prev(); + chai.assert.isNull(prevNode); + }); + test('fromFieldToInput', function() { + const field = this.blocks.fieldAndInputs2.inputList[1].fieldRow[0]; + const inputConnection = this.blocks.fieldAndInputs2.inputList[0].connection; + const node = ASTNode.createFieldNode(field); + const prevNode = node.prev(); + chai.assert.equal(prevNode.getLocation(), inputConnection); + }); + test('fromFieldToField', function() { + const field = this.blocks.fieldAndInputs.inputList[1].fieldRow[0]; + const field2 = this.blocks.fieldAndInputs.inputList[0].fieldRow[0]; + const node = ASTNode.createFieldNode(field); + const prevNode = node.prev(); + chai.assert.equal(prevNode.getLocation(), field2); + }); + test('fromStackToStack', function() { + const node = ASTNode.createStackNode(this.blocks.statementInput4); + const prevNode = node.prev(); + chai.assert.equal(prevNode.getLocation(), this.blocks.statementInput1); + chai.assert.equal(prevNode.getType(), ASTNode.types.STACK); + }); + }); + + suite('In', function() { + setup(function() { + this.emptyWorkspace = new Blockly.Workspace(); + }); + teardown(function() { + workspaceTeardown.call(this, this.emptyWorkspace); + }); + + test('fromInputToOutput', function() { + const input = this.blocks.statementInput1.inputList[0]; + const node = ASTNode.createInputNode(input); + const inNode = node.in(); + const outputConnection = this.blocks.fieldWithOutput.outputConnection; + chai.assert.equal(inNode.getLocation(), outputConnection); + }); + test('fromInputToNull', function() { + const input = this.blocks.statementInput2.inputList[0]; + const node = ASTNode.createInputNode(input); + const inNode = node.in(); + chai.assert.isNull(inNode); + }); + test('fromInputToPrevious', function() { + const input = this.blocks.statementInput2.inputList[1]; + const previousConnection = this.blocks.statementInput3.previousConnection; + const node = ASTNode.createInputNode(input); + const inNode = node.in(); + chai.assert.equal(inNode.getLocation(), previousConnection); + }); + test('fromBlockToInput', function() { + const input = this.blocks.valueInput.inputList[0]; + const node = ASTNode.createBlockNode(this.blocks.valueInput); + const inNode = node.in(); + chai.assert.equal(inNode.getLocation(), input.connection); + }); + test('fromBlockToField', function() { + const node = ASTNode.createBlockNode(this.blocks.statementInput1); + const inNode = node.in(); + const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; + chai.assert.equal(inNode.getLocation(), field); + }); + test('fromBlockToPrevious', function() { + const prevConnection = this.blocks.statementInput4.previousConnection; + const node = ASTNode.createStackNode(this.blocks.statementInput4); + const inNode = node.in(); + chai.assert.equal(inNode.getLocation(), prevConnection); + chai.assert.equal(inNode.getType(), ASTNode.types.PREVIOUS); + }); + test('fromBlockToNull_DummyInput', function() { + const node = ASTNode.createBlockNode(this.blocks.dummyInput); + const inNode = node.in(); + chai.assert.isNull(inNode); + }); + test('fromBlockToInput_DummyInputValue', function() { + const node = ASTNode.createBlockNode(this.blocks.dummyInputValue); + const inputConnection = this.blocks.dummyInputValue.inputList[1].connection; + const inNode = node.in(); + chai.assert.equal(inNode.getLocation(), inputConnection); + }); + test('fromOuputToNull', function() { + const output = this.blocks.fieldWithOutput.outputConnection; + const node = ASTNode.createConnectionNode(output); + const inNode = node.in(); + chai.assert.isNull(inNode); + }); + test('fromFieldToNull', function() { + const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; + const node = ASTNode.createFieldNode(field); + const inNode = node.in(); + chai.assert.isNull(inNode); + }); + test('fromWorkspaceToStack', function() { + const coordinate = new Blockly.utils.Coordinate(100, 100); + const node = ASTNode.createWorkspaceNode(this.workspace, coordinate); + const inNode = node.in(); + chai.assert.equal(inNode.getLocation(), this.workspace.getTopBlocks()[0]); + chai.assert.equal(inNode.getType(), ASTNode.types.STACK); + }); + test('fromWorkspaceToNull', function() { + const coordinate = new Blockly.utils.Coordinate(100, 100); + const node = ASTNode.createWorkspaceNode( + this.emptyWorkspace, coordinate); + const inNode = node.in(); + chai.assert.isNull(inNode); + }); + test('fromStackToPrevious', function() { + const node = ASTNode.createStackNode(this.blocks.statementInput1); + const previous = this.blocks.statementInput1.previousConnection; + const inNode = node.in(); + chai.assert.equal(inNode.getLocation(), previous); + chai.assert.equal(inNode.getType(), ASTNode.types.PREVIOUS); + }); + test('fromStackToOutput', function() { + const node = ASTNode.createStackNode(this.blocks.fieldWithOutput2); + const output = this.blocks.fieldWithOutput2.outputConnection; + const inNode = node.in(); + chai.assert.equal(inNode.getLocation(), output); + chai.assert.equal(inNode.getType(), ASTNode.types.OUTPUT); + }); + test('fromStackToBlock', function() { + const node = ASTNode.createStackNode(this.blocks.dummyInput); + const inNode = node.in(); + chai.assert.equal(inNode.getLocation(), this.blocks.dummyInput); + chai.assert.equal(inNode.getType(), ASTNode.types.BLOCK); + }); + }); + + suite('Out', function() { + setup(function() { + const secondBlock = this.blocks.secondBlock; + const outputNextBlock = this.blocks.outputNextBlock; + this.blocks.noPrevConnection.nextConnection.connect(secondBlock.previousConnection); + secondBlock.inputList[0].connection + .connect(outputNextBlock.outputConnection); + }); + + test('fromInputToBlock', function() { + const input = this.blocks.statementInput1.inputList[0]; + const node = ASTNode.createInputNode(input); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.BLOCK); + chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); + }); + test('fromOutputToInput', function() { + const output = this.blocks.fieldWithOutput.outputConnection; + const node = ASTNode.createConnectionNode(output); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); + chai.assert.equal(outNode.getLocation(), + this.blocks.statementInput1.inputList[0].connection); + }); + test('fromOutputToStack', function() { + const output = this.blocks.fieldWithOutput2.outputConnection; + const node = ASTNode.createConnectionNode(output); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.STACK); + chai.assert.equal(outNode.getLocation(), this.blocks.fieldWithOutput2); + }); + test('fromFieldToBlock', function() { + const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; + const node = ASTNode.createFieldNode(field); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.BLOCK); + chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); + }); + test('fromStackToWorkspace', function() { + const stub = sinon.stub(this.blocks.statementInput4, + "getRelativeToSurfaceXY").returns({x: 10, y: 10}); + const node = ASTNode.createStackNode(this.blocks.statementInput4); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.WORKSPACE); + chai.assert.equal(outNode.wsCoordinate_.x, 10); + chai.assert.equal(outNode.wsCoordinate_.y, -10); + stub.restore(); + }); + test('fromPreviousToInput', function() { + const previous = this.blocks.statementInput3.previousConnection; + const inputConnection = this.blocks.statementInput2.inputList[1].connection; + const node = ASTNode.createConnectionNode(previous); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); + chai.assert.equal(outNode.getLocation(), inputConnection); + }); + test('fromPreviousToStack', function() { + const previous = this.blocks.statementInput2.previousConnection; + const node = ASTNode.createConnectionNode(previous); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.STACK); + chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); + }); + test('fromNextToInput', function() { + const next = this.blocks.statementInput3.nextConnection; + const inputConnection = this.blocks.statementInput2.inputList[1].connection; + const node = ASTNode.createConnectionNode(next); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); + chai.assert.equal(outNode.getLocation(), inputConnection); + }); + test('fromNextToStack', function() { + const next = this.blocks.statementInput2.nextConnection; + const node = ASTNode.createConnectionNode(next); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.STACK); + chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); + }); + test('fromNextToStack_NoPreviousConnection', function() { + const next = this.blocks.secondBlock.nextConnection; + const node = ASTNode.createConnectionNode(next); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.STACK); + chai.assert.equal(outNode.getLocation(), this.blocks.noPrevConnection); + }); + /** + * This is where there is a block with both an output connection and a + * next connection attached to an input. + */ + test('fromNextToInput_OutputAndPreviousConnection', function() { + const next = this.blocks.outputNextBlock.nextConnection; + const node = ASTNode.createConnectionNode(next); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); + chai.assert.equal(outNode.getLocation(), + this.blocks.secondBlock.inputList[0].connection); + }); + test('fromBlockToStack', function() { + const node = ASTNode.createBlockNode(this.blocks.statementInput2); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.STACK); + chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); + }); + test('fromBlockToInput', function() { + const input = this.blocks.statementInput2.inputList[1].connection; + const node = ASTNode.createBlockNode(this.blocks.statementInput3); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); + chai.assert.equal(outNode.getLocation(), input); + }); + test('fromTopBlockToStack', function() { + const node = ASTNode.createBlockNode(this.blocks.statementInput1); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.STACK); + chai.assert.equal(outNode.getLocation(), this.blocks.statementInput1); + }); + test('fromBlockToStack_OutputConnection', function() { + const node = ASTNode.createBlockNode(this.blocks.fieldWithOutput2); + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.STACK); + chai.assert.equal(outNode.getLocation(), this.blocks.fieldWithOutput2); + }); + test('fromBlockToInput_OutputConnection', function() { + const node = ASTNode.createBlockNode(this.blocks.outputNextBlock); + const inputConnection = this.blocks.secondBlock.inputList[0].connection; + const outNode = node.out(); + chai.assert.equal(outNode.getType(), ASTNode.types.INPUT); + chai.assert.equal(outNode.getLocation(), inputConnection); + }); + }); + + suite('createFunctions', function() { + test('createFieldNode', function() { + const field = this.blocks.statementInput1.inputList[0].fieldRow[0]; + const node = ASTNode.createFieldNode(field); + chai.assert.equal(node.getLocation(), field); + chai.assert.equal(node.getType(), ASTNode.types.FIELD); + chai.assert.isFalse(node.isConnection()); + }); + test('createConnectionNode', function() { + const prevConnection = this.blocks.statementInput4.previousConnection; + const node = ASTNode.createConnectionNode(prevConnection); + chai.assert.equal(node.getLocation(), prevConnection); + chai.assert.equal(node.getType(), ASTNode.types.PREVIOUS); + chai.assert.isTrue(node.isConnection()); + }); + test('createInputNode', function() { + const input = this.blocks.statementInput1.inputList[0]; + const node = ASTNode.createInputNode(input); + chai.assert.equal(node.getLocation(), input.connection); + chai.assert.equal(node.getType(), ASTNode.types.INPUT); + chai.assert.isTrue(node.isConnection()); + }); + test('createWorkspaceNode', function() { + const coordinate = new Blockly.utils.Coordinate(100, 100); + const node = ASTNode + .createWorkspaceNode(this.workspace, coordinate); + chai.assert.equal(node.getLocation(), this.workspace); + chai.assert.equal(node.getType(), ASTNode.types.WORKSPACE); + chai.assert.equal(node.getWsCoordinate(), coordinate); + chai.assert.isFalse(node.isConnection()); + }); + test('createStatementConnectionNode', function() { + const nextConnection = this.blocks.statementInput1.inputList[1].connection; + const inputConnection = this.blocks.statementInput1.inputList[1].connection; + const node = ASTNode.createConnectionNode(nextConnection); + chai.assert.equal(node.getLocation(), inputConnection); + chai.assert.equal(node.getType(), ASTNode.types.INPUT); + chai.assert.isTrue(node.isConnection()); + }); + test('createTopNode-previous', function() { + const block = this.blocks.statementInput1; + const topNode = ASTNode.createTopNode(block); + chai.assert.equal(topNode.getLocation(), block.previousConnection); + }); + test('createTopNode-block', function() { + const block = this.blocks.noPrevConnection; + const topNode = ASTNode.createTopNode(block); + chai.assert.equal(topNode.getLocation(), block); + }); + test('createTopNode-output', function() { + const block = this.blocks.outputNextBlock; + const topNode = ASTNode.createTopNode(block); + chai.assert.equal(topNode.getLocation(), block.outputConnection); + }); + }); + }); +}); diff --git a/tests/mocha/block_change_event_test.js b/tests/mocha/block_change_event_test.js index 6cfbca57885..420507f8f12 100644 --- a/tests/mocha/block_change_event_test.js +++ b/tests/mocha/block_change_event_test.js @@ -1,74 +1,74 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.blockChangeEvent'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {defineMutatorBlocks} = goog.require('Blockly.test.helpers.blockDefinitions'); - - -suite('Block Change Event', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('Undo and Redo', function() { - suite('Mutation', function() { - setup(function() { - defineMutatorBlocks(); - }); - - teardown(function() { - Blockly.Extensions.unregister('xml_mutator'); - Blockly.Extensions.unregister('jso_mutator'); - }); - - suite('XML', function() { - test('Undo', function() { - const block = this.workspace.newBlock('xml_block', 'block_id'); - block.domToMutation( - Blockly.Xml.textToDom('')); - const blockChange = new Blockly.Events.BlockChange( - block, 'mutation', null, '', ''); - blockChange.run(false); - chai.assert.isFalse(block.hasInput); - }); - - test('Redo', function() { - const block = this.workspace.newBlock('xml_block', 'block_id'); - const blockChange = new Blockly.Events.BlockChange( - block, 'mutation', null, '', ''); - blockChange.run(true); - chai.assert.isTrue(block.hasInput); - }); - }); - - suite('JSO', function() { - test('Undo', function() { - const block = this.workspace.newBlock('jso_block', 'block_id'); - block.loadExtraState({hasInput: true}); - const blockChange = new Blockly.Events.BlockChange( - block, 'mutation', null, '', '{"hasInput":true}'); - blockChange.run(false); - chai.assert.isFalse(block.hasInput); - }); - - test('Redo', function() { - const block = this.workspace.newBlock('jso_block', 'block_id'); - const blockChange = new Blockly.Events.BlockChange( - block, 'mutation', null, '', '{"hasInput":true}'); - blockChange.run(true); - chai.assert.isTrue(block.hasInput); - }); - }); - }); - }); -}); +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.blockChangeEvent'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {defineMutatorBlocks} = goog.require('Blockly.test.helpers.blockDefinitions'); + + +suite('Block Change Event', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('Undo and Redo', function() { + suite('Mutation', function() { + setup(function() { + defineMutatorBlocks(); + }); + + teardown(function() { + Blockly.Extensions.unregister('xml_mutator'); + Blockly.Extensions.unregister('jso_mutator'); + }); + + suite('XML', function() { + test('Undo', function() { + const block = this.workspace.newBlock('xml_block', 'block_id'); + block.domToMutation( + Blockly.Xml.textToDom('')); + const blockChange = new Blockly.Events.BlockChange( + block, 'mutation', null, '', ''); + blockChange.run(false); + chai.assert.isFalse(block.hasInput); + }); + + test('Redo', function() { + const block = this.workspace.newBlock('xml_block', 'block_id'); + const blockChange = new Blockly.Events.BlockChange( + block, 'mutation', null, '', ''); + blockChange.run(true); + chai.assert.isTrue(block.hasInput); + }); + }); + + suite('JSO', function() { + test('Undo', function() { + const block = this.workspace.newBlock('jso_block', 'block_id'); + block.loadExtraState({hasInput: true}); + const blockChange = new Blockly.Events.BlockChange( + block, 'mutation', null, '', '{"hasInput":true}'); + blockChange.run(false); + chai.assert.isFalse(block.hasInput); + }); + + test('Redo', function() { + const block = this.workspace.newBlock('jso_block', 'block_id'); + const blockChange = new Blockly.Events.BlockChange( + block, 'mutation', null, '', '{"hasInput":true}'); + blockChange.run(true); + chai.assert.isTrue(block.hasInput); + }); + }); + }); + }); +}); diff --git a/tests/mocha/block_create_event_test.js b/tests/mocha/block_create_event_test.js index 475991908ac..ea68e7803be 100644 --- a/tests/mocha/block_create_event_test.js +++ b/tests/mocha/block_create_event_test.js @@ -1,60 +1,60 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.blockCreateEvent'); - -const {assertEventFired} = goog.require('Blockly.test.helpers.events'); -const eventUtils = goog.require('Blockly.Events.utils'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Block Create Event', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - test('Create shadow on disconnect', function() { - Blockly.Events.disable(); - const block = Blockly.serialization.blocks.append( - { - "type": "text_print", - "inputs": { - "TEXT": { - "shadow": { - "type": "text", - "id": "shadowId", - "fields": { - "TEXT": "abc", - }, - }, - "block": { - "type": "text", - "fields": { - "TEXT": "", - }, - }, - }, - }, - }, - this.workspace); - Blockly.Events.enable(); - block.getInput('TEXT').connection.disconnect(); - assertEventFired( - this.eventsFireStub, - Blockly.Events.BlockCreate, - {'recordUndo': false, 'type': eventUtils.BLOCK_CREATE}, - this.workspace.id, - 'shadowId'); - const calls = this.eventsFireStub.getCalls(); - const event = calls[calls.length - 1].args[0]; - chai.assert.equal(event.xml.tagName, 'shadow'); - }); -}); +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.blockCreateEvent'); + +const {assertEventFired} = goog.require('Blockly.test.helpers.events'); +const eventUtils = goog.require('Blockly.Events.utils'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Block Create Event', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + test('Create shadow on disconnect', function() { + Blockly.Events.disable(); + const block = Blockly.serialization.blocks.append( + { + "type": "text_print", + "inputs": { + "TEXT": { + "shadow": { + "type": "text", + "id": "shadowId", + "fields": { + "TEXT": "abc", + }, + }, + "block": { + "type": "text", + "fields": { + "TEXT": "", + }, + }, + }, + }, + }, + this.workspace); + Blockly.Events.enable(); + block.getInput('TEXT').connection.disconnect(); + assertEventFired( + this.eventsFireStub, + Blockly.Events.BlockCreate, + {'recordUndo': false, 'type': eventUtils.BLOCK_CREATE}, + this.workspace.id, + 'shadowId'); + const calls = this.eventsFireStub.getCalls(); + const event = calls[calls.length - 1].args[0]; + chai.assert.equal(event.xml.tagName, 'shadow'); + }); +}); diff --git a/tests/mocha/block_json_test.js b/tests/mocha/block_json_test.js index b93045960f6..721b6411f7d 100644 --- a/tests/mocha/block_json_test.js +++ b/tests/mocha/block_json_test.js @@ -1,599 +1,599 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.blockJson'); - -const {Align} = goog.require('Blockly.Input'); - - -suite('Block JSON initialization', function() { - suite('validateTokens_', function() { - setup(function() { - this.assertError = function(tokens, count, error) { - const block = { - type: 'test', - validateTokens_: Blockly.Block.prototype.validateTokens_, - }; - chai.assert.throws(function() { - block.validateTokens_(tokens, count); - }, error); - }; - - this.assertNoError = function(tokens, count) { - const block = { - type: 'test', - validateTokens_: Blockly.Block.prototype.validateTokens_, - }; - chai.assert.doesNotThrow(function() { - block.validateTokens_(tokens, count); - }); - }; - }); - - test('0 args, 0 tokens', function() { - this.assertNoError(['test', 'test'], 0); - }); - - test('0 args, 1 token', function() { - this.assertError(['test', 1, 'test'], 0, - 'Block "test": Message index %1 out of range.'); - }); - - test('1 arg, 0 tokens', function() { - this.assertError(['test', 'test'], 1, - 'Block "test": Message does not reference all 1 arg(s).'); - }); - - test('1 arg, 1 token', function() { - this.assertNoError(['test', 1, 'test'], 1); - }); - - test('1 arg, 2 tokens', function() { - this.assertError(['test', 1, 1, 'test'], 1, - 'Block "test": Message index %1 duplicated.'); - }); - - test('Token out of lower bound', function() { - this.assertError(['test', 0, 'test'], 1, - 'Block "test": Message index %0 out of range.'); - }); - - test('Token out of upper bound', function() { - this.assertError(['test', 2, 'test'], 1, - 'Block "test": Message index %2 out of range.'); - }); - }); - - suite('interpolateArguments_', function() { - setup(function() { - this.assertInterpolation = function(tokens, args, lastAlign, elements) { - const block = { - type: 'test', - interpolateArguments_: Blockly.Block.prototype.interpolateArguments_, - stringToFieldJson_: Blockly.Block.prototype.stringToFieldJson_, - isInputKeyword_: Blockly.Block.prototype.isInputKeyword_, - }; - chai.assert.deepEqual( - block.interpolateArguments_(tokens, args, lastAlign), - elements); - }; - }); - - test('Strings to labels', function() { - this.assertInterpolation( - ['test1', 'test2', 'test3', {'type': 'input_dummy'}], - [], - undefined, - [ - { - 'type': 'field_label', - 'text': 'test1', - }, - { - 'type': 'field_label', - 'text': 'test2', - }, - { - 'type': 'field_label', - 'text': 'test3', - }, - { - 'type': 'input_dummy', - }, - ]); - }); - - test('Ignore empty strings', function() { - this.assertInterpolation( - ['test1', '', ' ', {'type': 'input_dummy'}], - [], - undefined, - [ - { - 'type': 'field_label', - 'text': 'test1', - }, - { - 'type': 'input_dummy', - }, - ]); - }); - - test('Insert args', function() { - this.assertInterpolation( - [1, 2, 3, {'type': 'input_dummy'}], - [ - { - 'type': 'field_number', - 'name': 'test1', - }, - { - 'type': 'field_number', - 'name': 'test2', - }, - { - 'type': 'field_number', - 'name': 'test3', - }, - ], - undefined, - [ - { - 'type': 'field_number', - 'name': 'test1', - }, - { - 'type': 'field_number', - 'name': 'test2', - }, - { - 'type': 'field_number', - 'name': 'test3', - }, - { - 'type': 'input_dummy', - }, - ]); - }); - - test('String args to labels', function() { - this.assertInterpolation( - [1, 2, 3, {'type': 'input_dummy'}], - ['test1', 'test2', 'test3'], - undefined, - [ - { - 'type': 'field_label', - 'text': 'test1', - }, - { - 'type': 'field_label', - 'text': 'test2', - }, - { - 'type': 'field_label', - 'text': 'test3', - }, - { - 'type': 'input_dummy', - }, - ]); - }); - - test('Ignore empty string args', function() { - this.assertInterpolation( - [1, 2, 3, {'type': 'input_dummy'}], - ['test1', ' ', ' '], - undefined, - [ - { - 'type': 'field_label', - 'text': 'test1', - }, - { - 'type': 'input_dummy', - }, - ]); - }); - - test('Add last dummy', function() { - this.assertInterpolation( - ['test1', 'test2', 'test3'], - [], - undefined, - [ - { - 'type': 'field_label', - 'text': 'test1', - }, - { - 'type': 'field_label', - 'text': 'test2', - }, - { - 'type': 'field_label', - 'text': 'test3', - }, - { - 'type': 'input_dummy', - }, - ]); - }); - - test('Add last dummy for no_field_prefix_field', function() { - this.assertInterpolation( - [ - { - 'type': 'no_field_prefix_field', - }, - ], - [], - undefined, - [ - { - 'type': 'no_field_prefix_field', - }, - { - 'type': 'input_dummy', - }, - ]); - }); - - test('Add last dummy for input_prefix_field', function() { - this.assertInterpolation( - [ - { - 'type': 'input_prefix_field', - }, - ], - [], - undefined, - [ - { - 'type': 'input_prefix_field', - }, - { - 'type': 'input_dummy', - }, - ]); - }); - - test('Set last dummy alignment', function() { - this.assertInterpolation( - ['test1', 'test2', 'test3'], - [], - 'CENTER', - [ - { - 'type': 'field_label', - 'text': 'test1', - }, - { - 'type': 'field_label', - 'text': 'test2', - }, - { - 'type': 'field_label', - 'text': 'test3', - }, - { - 'type': 'input_dummy', - 'align': 'CENTER', - }, - ]); - }); - }); - - suite('fieldFromJson_', function() { - setup(function() { - this.stub = sinon.stub(Blockly.fieldRegistry, 'fromJson') - .callsFake(function(elem) { - switch (elem['type']) { - case 'field_label': - return 'field_label'; - case 'field_number': - return 'field_number'; - case 'no_field_prefix_field': - return 'no_field_prefix_field'; - case 'input_prefix_field': - return 'input_prefix_field'; - default: - return null; - } - }); - - this.assertField = function(json, expectedType) { - const block = { - type: 'test', - fieldFromJson_: Blockly.Block.prototype.fieldFromJson_, - stringToFieldJson_: Blockly.Block.prototype.stringToFieldJson_, - }; - chai.assert.strictEqual(block.fieldFromJson_(json), expectedType); - }; - }); - - teardown(function() { - this.stub.restore(); - }); - - test('Simple field', function() { - this.assertField({ - 'type': 'field_label', - 'text': 'text', - }, 'field_label'); - }); - - test('Bad field', function() { - this.assertField({ - 'type': 'field_bad', - }, null); - }); - - test('no_field_prefix_field', function() { - this.assertField({ - 'type': 'no_field_prefix_field', - }, 'no_field_prefix_field'); - }); - - test('input_prefix_field', function() { - this.assertField({ - 'type': 'input_prefix_field', - }, 'input_prefix_field'); - }); - - test('Alt string', function() { - this.assertField({ - 'type': 'field_undefined', - 'alt': 'alt text', - }, 'field_label'); - }); - - test('input_prefix_bad w/ alt string', function() { - this.assertField({ - 'type': 'input_prefix_bad', - 'alt': 'alt string', - }, 'field_label'); - }); - - test('Alt other field', function() { - this.assertField({ - 'type': 'field_undefined', - 'alt': { - 'type': 'field_number', - 'name': 'FIELDNAME', - }, - }, 'field_number'); - }); - - test('Deep alt string', function() { - this.assertField({ - 'type': 'field_undefined1', - 'alt': { - 'type': 'field_undefined2', - 'alt': { - 'type': 'field_undefined3', - 'alt': { - 'type': 'field_undefined4', - 'alt': { - 'type': 'field_undefined5', - 'alt': 'text', - }, - }, - }, - }, - }, 'field_label'); - }); - - test('Deep alt other field', function() { - this.assertField({ - 'type': 'field_undefined1', - 'alt': { - 'type': 'field_undefined2', - 'alt': { - 'type': 'field_undefined3', - 'alt': { - 'type': 'field_undefined4', - 'alt': { - 'type': 'field_undefined5', - 'alt': { - 'type': 'field_number', - 'name': 'FIELDNAME', - }, - }, - }, - }, - }, - }, 'field_number'); - }); - - test('No alt', function() { - this.assertField({ - 'type': 'field_undefined', - }, null); - }); - - test('Bad alt', function() { - this.assertField({ - 'type': 'field_undefined', - 'alt': { - 'type': 'field_undefined', - }, - }, null); - }); - - test('Spaces string alt', function() { - this.assertField({ - 'type': 'field_undefined', - 'alt': ' ', - }, null); - }); - }); - - suite('inputFromJson_', function() { - setup(function() { - const Input = function(type) { - this.type = type; - this.setCheck = sinon.fake(); - this.setAlign = sinon.fake(); - }; - const Block = function() { - this.type = 'test'; - this.appendDummyInput = sinon.fake.returns(new Input()); - this.appendValueInput = sinon.fake.returns(new Input()); - this.appendStatementInput = sinon.fake.returns(new Input()); - this.inputFromJson_ = Blockly.Block.prototype.inputFromJson_; - }; - - this.assertInput = function(json, type, check, align) { - const block = new Block(); - const input = block.inputFromJson_(json); - switch (type) { - case 'input_dummy': - chai.assert.isTrue(block.appendDummyInput.calledOnce, - 'Expected a dummy input to be created.'); - break; - case 'input_value': - chai.assert.isTrue(block.appendValueInput.calledOnce, - 'Expected a value input to be created.'); - break; - case 'input_statement': - chai.assert.isTrue(block.appendStatementInput.calledOnce, - 'Expected a statement input to be created.'); - break; - default: - chai.assert.isNull(input, 'Expected input to be null'); - chai.assert.isTrue(block.appendDummyInput.notCalled, - 'Expected no input to be created'); - chai.assert.isTrue(block.appendValueInput.notCalled, - 'Expected no input to be created'); - chai.assert.isTrue(block.appendStatementInput.notCalled, - 'Expected no input to be created'); - return; - } - if (check) { - chai.assert.isTrue(input.setCheck.calledWith(check), - 'Expected setCheck to be called with', check); - } else { - chai.assert.isTrue(input.setCheck.notCalled, - 'Expected setCheck to not be called'); - } - if (align !== undefined) { - chai.assert.isTrue(input.setAlign.calledWith(align), - 'Expected setAlign to be called with', align); - } else { - chai.assert.isTrue(input.setAlign.notCalled, - 'Expected setAlign to not be called'); - } - }; - }); - - test('Dummy', function() { - this.assertInput( - { - 'type': 'input_dummy', - }, - 'input_dummy'); - }); - - test('Value', function() { - this.assertInput( - { - 'type': 'input_value', - }, - 'input_value'); - }); - - test('Statement', function() { - this.assertInput( - { - 'type': 'input_statement', - }, - 'input_statement'); - }); - - test('Bad input type', function() { - this.assertInput( - { - 'type': 'input_bad', - }, - 'input_bad'); - }); - - test('String Check', function() { - this.assertInput( - { - 'type': 'input_dummy', - 'check': 'Integer', - }, - 'input_dummy', - 'Integer'); - }); - - test('Array check', function() { - this.assertInput( - { - 'type': 'input_dummy', - 'check': ['Integer', 'Number'], - }, - 'input_dummy', - ['Integer', 'Number']); - }); - - test('Empty check', function() { - this.assertInput( - { - 'type': 'input_dummy', - 'check': '', - }, - 'input_dummy'); - }); - - test('Null check', function() { - this.assertInput( - { - 'type': 'input_dummy', - 'check': null, - }, - 'input_dummy'); - }); - - test('"Left" align', function() { - this.assertInput( - { - 'type': 'input_dummy', - 'align': 'LEFT', - }, - 'input_dummy', undefined, Align.LEFT); - }); - - test('"Right" align', function() { - this.assertInput( - { - 'type': 'input_dummy', - 'align': 'RIGHT', - }, - 'input_dummy', undefined, Align.RIGHT); - }); - - test('"Center" align', function() { - this.assertInput( - { - 'type': 'input_dummy', - 'align': 'CENTER', - }, - 'input_dummy', undefined, Align.CENTRE); - }); - - test('"Centre" align', function() { - this.assertInput( - { - 'type': 'input_dummy', - 'align': 'CENTRE', - }, - 'input_dummy', undefined, Align.CENTRE); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.blockJson'); + +const {Align} = goog.require('Blockly.Input'); + + +suite('Block JSON initialization', function() { + suite('validateTokens_', function() { + setup(function() { + this.assertError = function(tokens, count, error) { + const block = { + type: 'test', + validateTokens_: Blockly.Block.prototype.validateTokens_, + }; + chai.assert.throws(function() { + block.validateTokens_(tokens, count); + }, error); + }; + + this.assertNoError = function(tokens, count) { + const block = { + type: 'test', + validateTokens_: Blockly.Block.prototype.validateTokens_, + }; + chai.assert.doesNotThrow(function() { + block.validateTokens_(tokens, count); + }); + }; + }); + + test('0 args, 0 tokens', function() { + this.assertNoError(['test', 'test'], 0); + }); + + test('0 args, 1 token', function() { + this.assertError(['test', 1, 'test'], 0, + 'Block "test": Message index %1 out of range.'); + }); + + test('1 arg, 0 tokens', function() { + this.assertError(['test', 'test'], 1, + 'Block "test": Message does not reference all 1 arg(s).'); + }); + + test('1 arg, 1 token', function() { + this.assertNoError(['test', 1, 'test'], 1); + }); + + test('1 arg, 2 tokens', function() { + this.assertError(['test', 1, 1, 'test'], 1, + 'Block "test": Message index %1 duplicated.'); + }); + + test('Token out of lower bound', function() { + this.assertError(['test', 0, 'test'], 1, + 'Block "test": Message index %0 out of range.'); + }); + + test('Token out of upper bound', function() { + this.assertError(['test', 2, 'test'], 1, + 'Block "test": Message index %2 out of range.'); + }); + }); + + suite('interpolateArguments_', function() { + setup(function() { + this.assertInterpolation = function(tokens, args, lastAlign, elements) { + const block = { + type: 'test', + interpolateArguments_: Blockly.Block.prototype.interpolateArguments_, + stringToFieldJson_: Blockly.Block.prototype.stringToFieldJson_, + isInputKeyword_: Blockly.Block.prototype.isInputKeyword_, + }; + chai.assert.deepEqual( + block.interpolateArguments_(tokens, args, lastAlign), + elements); + }; + }); + + test('Strings to labels', function() { + this.assertInterpolation( + ['test1', 'test2', 'test3', {'type': 'input_dummy'}], + [], + undefined, + [ + { + 'type': 'field_label', + 'text': 'test1', + }, + { + 'type': 'field_label', + 'text': 'test2', + }, + { + 'type': 'field_label', + 'text': 'test3', + }, + { + 'type': 'input_dummy', + }, + ]); + }); + + test('Ignore empty strings', function() { + this.assertInterpolation( + ['test1', '', ' ', {'type': 'input_dummy'}], + [], + undefined, + [ + { + 'type': 'field_label', + 'text': 'test1', + }, + { + 'type': 'input_dummy', + }, + ]); + }); + + test('Insert args', function() { + this.assertInterpolation( + [1, 2, 3, {'type': 'input_dummy'}], + [ + { + 'type': 'field_number', + 'name': 'test1', + }, + { + 'type': 'field_number', + 'name': 'test2', + }, + { + 'type': 'field_number', + 'name': 'test3', + }, + ], + undefined, + [ + { + 'type': 'field_number', + 'name': 'test1', + }, + { + 'type': 'field_number', + 'name': 'test2', + }, + { + 'type': 'field_number', + 'name': 'test3', + }, + { + 'type': 'input_dummy', + }, + ]); + }); + + test('String args to labels', function() { + this.assertInterpolation( + [1, 2, 3, {'type': 'input_dummy'}], + ['test1', 'test2', 'test3'], + undefined, + [ + { + 'type': 'field_label', + 'text': 'test1', + }, + { + 'type': 'field_label', + 'text': 'test2', + }, + { + 'type': 'field_label', + 'text': 'test3', + }, + { + 'type': 'input_dummy', + }, + ]); + }); + + test('Ignore empty string args', function() { + this.assertInterpolation( + [1, 2, 3, {'type': 'input_dummy'}], + ['test1', ' ', ' '], + undefined, + [ + { + 'type': 'field_label', + 'text': 'test1', + }, + { + 'type': 'input_dummy', + }, + ]); + }); + + test('Add last dummy', function() { + this.assertInterpolation( + ['test1', 'test2', 'test3'], + [], + undefined, + [ + { + 'type': 'field_label', + 'text': 'test1', + }, + { + 'type': 'field_label', + 'text': 'test2', + }, + { + 'type': 'field_label', + 'text': 'test3', + }, + { + 'type': 'input_dummy', + }, + ]); + }); + + test('Add last dummy for no_field_prefix_field', function() { + this.assertInterpolation( + [ + { + 'type': 'no_field_prefix_field', + }, + ], + [], + undefined, + [ + { + 'type': 'no_field_prefix_field', + }, + { + 'type': 'input_dummy', + }, + ]); + }); + + test('Add last dummy for input_prefix_field', function() { + this.assertInterpolation( + [ + { + 'type': 'input_prefix_field', + }, + ], + [], + undefined, + [ + { + 'type': 'input_prefix_field', + }, + { + 'type': 'input_dummy', + }, + ]); + }); + + test('Set last dummy alignment', function() { + this.assertInterpolation( + ['test1', 'test2', 'test3'], + [], + 'CENTER', + [ + { + 'type': 'field_label', + 'text': 'test1', + }, + { + 'type': 'field_label', + 'text': 'test2', + }, + { + 'type': 'field_label', + 'text': 'test3', + }, + { + 'type': 'input_dummy', + 'align': 'CENTER', + }, + ]); + }); + }); + + suite('fieldFromJson_', function() { + setup(function() { + this.stub = sinon.stub(Blockly.fieldRegistry, 'fromJson') + .callsFake(function(elem) { + switch (elem['type']) { + case 'field_label': + return 'field_label'; + case 'field_number': + return 'field_number'; + case 'no_field_prefix_field': + return 'no_field_prefix_field'; + case 'input_prefix_field': + return 'input_prefix_field'; + default: + return null; + } + }); + + this.assertField = function(json, expectedType) { + const block = { + type: 'test', + fieldFromJson_: Blockly.Block.prototype.fieldFromJson_, + stringToFieldJson_: Blockly.Block.prototype.stringToFieldJson_, + }; + chai.assert.strictEqual(block.fieldFromJson_(json), expectedType); + }; + }); + + teardown(function() { + this.stub.restore(); + }); + + test('Simple field', function() { + this.assertField({ + 'type': 'field_label', + 'text': 'text', + }, 'field_label'); + }); + + test('Bad field', function() { + this.assertField({ + 'type': 'field_bad', + }, null); + }); + + test('no_field_prefix_field', function() { + this.assertField({ + 'type': 'no_field_prefix_field', + }, 'no_field_prefix_field'); + }); + + test('input_prefix_field', function() { + this.assertField({ + 'type': 'input_prefix_field', + }, 'input_prefix_field'); + }); + + test('Alt string', function() { + this.assertField({ + 'type': 'field_undefined', + 'alt': 'alt text', + }, 'field_label'); + }); + + test('input_prefix_bad w/ alt string', function() { + this.assertField({ + 'type': 'input_prefix_bad', + 'alt': 'alt string', + }, 'field_label'); + }); + + test('Alt other field', function() { + this.assertField({ + 'type': 'field_undefined', + 'alt': { + 'type': 'field_number', + 'name': 'FIELDNAME', + }, + }, 'field_number'); + }); + + test('Deep alt string', function() { + this.assertField({ + 'type': 'field_undefined1', + 'alt': { + 'type': 'field_undefined2', + 'alt': { + 'type': 'field_undefined3', + 'alt': { + 'type': 'field_undefined4', + 'alt': { + 'type': 'field_undefined5', + 'alt': 'text', + }, + }, + }, + }, + }, 'field_label'); + }); + + test('Deep alt other field', function() { + this.assertField({ + 'type': 'field_undefined1', + 'alt': { + 'type': 'field_undefined2', + 'alt': { + 'type': 'field_undefined3', + 'alt': { + 'type': 'field_undefined4', + 'alt': { + 'type': 'field_undefined5', + 'alt': { + 'type': 'field_number', + 'name': 'FIELDNAME', + }, + }, + }, + }, + }, + }, 'field_number'); + }); + + test('No alt', function() { + this.assertField({ + 'type': 'field_undefined', + }, null); + }); + + test('Bad alt', function() { + this.assertField({ + 'type': 'field_undefined', + 'alt': { + 'type': 'field_undefined', + }, + }, null); + }); + + test('Spaces string alt', function() { + this.assertField({ + 'type': 'field_undefined', + 'alt': ' ', + }, null); + }); + }); + + suite('inputFromJson_', function() { + setup(function() { + const Input = function(type) { + this.type = type; + this.setCheck = sinon.fake(); + this.setAlign = sinon.fake(); + }; + const Block = function() { + this.type = 'test'; + this.appendDummyInput = sinon.fake.returns(new Input()); + this.appendValueInput = sinon.fake.returns(new Input()); + this.appendStatementInput = sinon.fake.returns(new Input()); + this.inputFromJson_ = Blockly.Block.prototype.inputFromJson_; + }; + + this.assertInput = function(json, type, check, align) { + const block = new Block(); + const input = block.inputFromJson_(json); + switch (type) { + case 'input_dummy': + chai.assert.isTrue(block.appendDummyInput.calledOnce, + 'Expected a dummy input to be created.'); + break; + case 'input_value': + chai.assert.isTrue(block.appendValueInput.calledOnce, + 'Expected a value input to be created.'); + break; + case 'input_statement': + chai.assert.isTrue(block.appendStatementInput.calledOnce, + 'Expected a statement input to be created.'); + break; + default: + chai.assert.isNull(input, 'Expected input to be null'); + chai.assert.isTrue(block.appendDummyInput.notCalled, + 'Expected no input to be created'); + chai.assert.isTrue(block.appendValueInput.notCalled, + 'Expected no input to be created'); + chai.assert.isTrue(block.appendStatementInput.notCalled, + 'Expected no input to be created'); + return; + } + if (check) { + chai.assert.isTrue(input.setCheck.calledWith(check), + 'Expected setCheck to be called with', check); + } else { + chai.assert.isTrue(input.setCheck.notCalled, + 'Expected setCheck to not be called'); + } + if (align !== undefined) { + chai.assert.isTrue(input.setAlign.calledWith(align), + 'Expected setAlign to be called with', align); + } else { + chai.assert.isTrue(input.setAlign.notCalled, + 'Expected setAlign to not be called'); + } + }; + }); + + test('Dummy', function() { + this.assertInput( + { + 'type': 'input_dummy', + }, + 'input_dummy'); + }); + + test('Value', function() { + this.assertInput( + { + 'type': 'input_value', + }, + 'input_value'); + }); + + test('Statement', function() { + this.assertInput( + { + 'type': 'input_statement', + }, + 'input_statement'); + }); + + test('Bad input type', function() { + this.assertInput( + { + 'type': 'input_bad', + }, + 'input_bad'); + }); + + test('String Check', function() { + this.assertInput( + { + 'type': 'input_dummy', + 'check': 'Integer', + }, + 'input_dummy', + 'Integer'); + }); + + test('Array check', function() { + this.assertInput( + { + 'type': 'input_dummy', + 'check': ['Integer', 'Number'], + }, + 'input_dummy', + ['Integer', 'Number']); + }); + + test('Empty check', function() { + this.assertInput( + { + 'type': 'input_dummy', + 'check': '', + }, + 'input_dummy'); + }); + + test('Null check', function() { + this.assertInput( + { + 'type': 'input_dummy', + 'check': null, + }, + 'input_dummy'); + }); + + test('"Left" align', function() { + this.assertInput( + { + 'type': 'input_dummy', + 'align': 'LEFT', + }, + 'input_dummy', undefined, Align.LEFT); + }); + + test('"Right" align', function() { + this.assertInput( + { + 'type': 'input_dummy', + 'align': 'RIGHT', + }, + 'input_dummy', undefined, Align.RIGHT); + }); + + test('"Center" align', function() { + this.assertInput( + { + 'type': 'input_dummy', + 'align': 'CENTER', + }, + 'input_dummy', undefined, Align.CENTRE); + }); + + test('"Centre" align', function() { + this.assertInput( + { + 'type': 'input_dummy', + 'align': 'CENTRE', + }, + 'input_dummy', undefined, Align.CENTRE); + }); + }); +}); diff --git a/tests/mocha/block_test.js b/tests/mocha/block_test.js index 13e51553403..310705c4adb 100644 --- a/tests/mocha/block_test.js +++ b/tests/mocha/block_test.js @@ -1,2008 +1,2008 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.blocks'); - -const {Blocks} = goog.require('Blockly.blocks'); -const {ConnectionType} = goog.require('Blockly.ConnectionType'); -const {createDeprecationWarningStub} = goog.require('Blockly.test.helpers.warnings'); -const {createRenderedBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const eventUtils = goog.require('Blockly.Events.utils'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Blocks', function() { - setup(function() { - sharedTestSetup.call(this, {fireEventsNow: false}); - this.workspace = new Blockly.Workspace(); - Blockly.defineBlocksWithJsonArray([ - { - "type": "empty_block", - "message0": "", - }, - { - "type": "stack_block", - "message0": "", - "previousStatement": null, - "nextStatement": null, - }, - { - "type": "row_block", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - }, - ], - "output": null, - }, - { - "type": "statement_block", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "STATEMENT", - }, - ], - "previousStatement": null, - "nextStatement": null, - }]); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - function createTestBlocks(workspace, isRow) { - const blockType = isRow ? 'row_block' : 'stack_block'; - const blockA = workspace.newBlock(blockType); - const blockB = workspace.newBlock(blockType); - const blockC = workspace.newBlock(blockType); - - if (isRow) { - blockA.inputList[0].connection.connect(blockB.outputConnection); - blockB.inputList[0].connection.connect(blockC.outputConnection); - } else { - blockA.nextConnection.connect(blockB.previousConnection); - blockB.nextConnection.connect(blockC.previousConnection); - } - - chai.assert.equal(blockC.getParent(), blockB); - - return { - A: blockA, /* Parent */ - B: blockB, /* Middle */ - C: blockC, /* Child */ - }; - } - - suite('Unplug', function() { - function assertUnpluggedNoheal(blocks) { - // A has nothing connected to it. - chai.assert.equal(blocks.A.getChildren().length, 0); - // B and C are still connected. - chai.assert.equal(blocks.C.getParent(), blocks.B); - // B is the top of its stack. - chai.assert.isNull(blocks.B.getParent()); - } - function assertUnpluggedHealed(blocks) { - // A and C are connected. - chai.assert.equal(blocks.A.getChildren().length, 1); - chai.assert.equal(blocks.C.getParent(), blocks.A); - // B has nothing connected to it. - chai.assert.equal(blocks.B.getChildren().length, 0); - // B is the top of its stack. - chai.assert.isNull(blocks.B.getParent()); - } - function assertUnpluggedHealFailed(blocks) { - // A has nothing connected to it. - chai.assert.equal(blocks.A.getChildren().length, 0); - // B has nothing connected to it. - chai.assert.equal(blocks.B.getChildren().length, 0); - // B is the top of its stack. - chai.assert.isNull(blocks.B.getParent()); - // C is the top of its stack. - chai.assert.isNull(blocks.C.getParent()); - } - - suite('Row', function() { - setup(function() { - this.blocks = createTestBlocks(this.workspace, true); - }); - - test('Don\'t heal', function() { - this.blocks.B.unplug(false); - assertUnpluggedNoheal(this.blocks); - }); - test('Heal', function() { - this.blocks.B.unplug(true); - // Each block has only one input, and the types work. - assertUnpluggedHealed(this.blocks); - }); - test('Heal with bad checks', function() { - const blocks = this.blocks; - - // A and C can't connect, but both can connect to B. - blocks.A.inputList[0].connection.setCheck('type1'); - blocks.C.outputConnection.setCheck('type2'); - - // Each block has only one input, but the types don't work. - blocks.B.unplug(true); - assertUnpluggedHealFailed(blocks); - }); - test('Parent has multiple inputs', function() { - const blocks = this.blocks; - // Add extra input to parent - blocks.A.appendValueInput("INPUT").setCheck(null); - blocks.B.unplug(true); - assertUnpluggedHealed(blocks); - }); - test('Middle has multiple inputs', function() { - const blocks = this.blocks; - // Add extra input to middle block - blocks.B.appendValueInput("INPUT").setCheck(null); - blocks.B.unplug(true); - assertUnpluggedHealed(blocks); - }); - test('Child has multiple inputs', function() { - const blocks = this.blocks; - // Add extra input to child block - blocks.C.appendValueInput("INPUT").setCheck(null); - // Child block input count doesn't matter. - blocks.B.unplug(true); - assertUnpluggedHealed(blocks); - }); - test('Child is shadow', function() { - const blocks = this.blocks; - blocks.C.setShadow(true); - blocks.B.unplug(true); - // Even though we're asking to heal, it will appear as if it has not - // healed because shadows always stay with the parent. - assertUnpluggedNoheal(blocks); - }); - }); - suite('Stack', function() { - setup(function() { - this.blocks = createTestBlocks(this.workspace, false); - }); - - test('Don\'t heal', function() { - this.blocks.B.unplug(); - assertUnpluggedNoheal(this.blocks); - }); - test('Heal', function() { - this.blocks.B.unplug(true); - assertUnpluggedHealed(this.blocks); - }); - test('Heal with bad checks', function() { - const blocks = this.blocks; - // A and C can't connect, but both can connect to B. - blocks.A.nextConnection.setCheck('type1'); - blocks.C.previousConnection.setCheck('type2'); - - // The types don't work. - blocks.B.unplug(true); - - assertUnpluggedHealFailed(blocks); - }); - test('Child is shadow', function() { - const blocks = this.blocks; - blocks.C.setShadow(true); - blocks.B.unplug(true); - // Even though we're asking to heal, it will appear as if it has not - // healed because shadows always stay with the parent. - assertUnpluggedNoheal(blocks); - }); - }); - }); - suite('Dispose', function() { - function assertDisposedNoheal(blocks) { - chai.assert.isFalse(blocks.A.disposed); - // A has nothing connected to it. - chai.assert.equal(blocks.A.getChildren().length, 0); - // B is disposed. - chai.assert.isTrue(blocks.B.disposed); - // And C is disposed. - chai.assert.isTrue(blocks.C.disposed); - } - function assertDisposedHealed(blocks) { - chai.assert.isFalse(blocks.A.disposed); - chai.assert.isFalse(blocks.C.disposed); - // A and C are connected. - chai.assert.equal(blocks.A.getChildren().length, 1); - chai.assert.equal(blocks.C.getParent(), blocks.A); - // B is disposed. - chai.assert.isTrue(blocks.B.disposed); - } - function assertDisposedHealFailed(blocks) { - chai.assert.isFalse(blocks.A.disposed); - chai.assert.isFalse(blocks.C.disposed); - // A has nothing connected to it. - chai.assert.equal(blocks.A.getChildren().length, 0); - // B is disposed. - chai.assert.isTrue(blocks.B.disposed); - // C is the top of its stack. - chai.assert.isNull(blocks.C.getParent()); - } - - suite('Row', function() { - setup(function() { - this.blocks = createTestBlocks(this.workspace, true); - }); - - test('Don\'t heal', function() { - this.blocks.B.dispose(false); - assertDisposedNoheal(this.blocks); - }); - test('Heal', function() { - this.blocks.B.dispose(true); - // Each block has only one input, and the types work. - assertDisposedHealed(this.blocks); - }); - test('Heal with bad checks', function() { - const blocks = this.blocks; - - // A and C can't connect, but both can connect to B. - blocks.A.inputList[0].connection.setCheck('type1'); - blocks.C.outputConnection.setCheck('type2'); - - // Each block has only one input, but the types don't work. - blocks.B.dispose(true); - assertDisposedHealFailed(blocks); - }); - test('Parent has multiple inputs', function() { - const blocks = this.blocks; - // Add extra input to parent - blocks.A.appendValueInput("INPUT").setCheck(null); - blocks.B.dispose(true); - assertDisposedHealed(blocks); - }); - test('Middle has multiple inputs', function() { - const blocks = this.blocks; - // Add extra input to middle block - blocks.B.appendValueInput("INPUT").setCheck(null); - blocks.B.dispose(true); - assertDisposedHealed(blocks); - }); - test('Child has multiple inputs', function() { - const blocks = this.blocks; - // Add extra input to child block - blocks.C.appendValueInput("INPUT").setCheck(null); - // Child block input count doesn't matter. - blocks.B.dispose(true); - assertDisposedHealed(blocks); - }); - test('Child is shadow', function() { - const blocks = this.blocks; - blocks.C.setShadow(true); - blocks.B.dispose(true); - // Even though we're asking to heal, it will appear as if it has not - // healed because shadows always get destroyed. - assertDisposedNoheal(blocks); - }); - }); - suite('Stack', function() { - setup(function() { - this.blocks = createTestBlocks(this.workspace, false); - }); - - test('Don\'t heal', function() { - this.blocks.B.dispose(); - assertDisposedNoheal(this.blocks); - }); - test('Heal', function() { - this.blocks.B.dispose(true); - assertDisposedHealed(this.blocks); - }); - test('Heal with bad checks', function() { - const blocks = this.blocks; - // A and C can't connect, but both can connect to B. - blocks.A.nextConnection.setCheck('type1'); - blocks.C.previousConnection.setCheck('type2'); - - // The types don't work. - blocks.B.dispose(true); - - assertDisposedHealFailed(blocks); - }); - test('Child is shadow', function() { - const blocks = this.blocks; - blocks.C.setShadow(true); - blocks.B.dispose(true); - // Even though we're asking to heal, it will appear as if it has not - // healed because shadows always get destroyed. - assertDisposedNoheal(blocks); - }); - }); - }); - suite('Remove Input', function() { - setup(function() { - Blockly.defineBlocksWithJsonArray([ - { - "type": "value_block", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "VALUE", - }, - ], - }, - ]); - }); - - suite('Value', function() { - setup(function() { - this.blockA = this.workspace.newBlock('value_block'); - }); - - test('No Connected', function() { - this.blockA.removeInput('VALUE'); - chai.assert.isNull(this.blockA.getInput('VALUE')); - }); - test('Block Connected', function() { - const blockB = this.workspace.newBlock('row_block'); - this.blockA.getInput('VALUE').connection - .connect(blockB.outputConnection); - - this.blockA.removeInput('VALUE'); - chai.assert.isFalse(blockB.disposed); - chai.assert.equal(this.blockA.getChildren().length, 0); - }); - test('Shadow Connected', function() { - const blockB = this.workspace.newBlock('row_block'); - blockB.setShadow(true); - this.blockA.getInput('VALUE').connection - .connect(blockB.outputConnection); - - this.blockA.removeInput('VALUE'); - chai.assert.isTrue(blockB.disposed); - chai.assert.equal(this.blockA.getChildren().length, 0); - }); - }); - suite('Statement', function() { - setup(function() { - this.blockA = this.workspace.newBlock('statement_block'); - }); - - test('No Connected', function() { - this.blockA.removeInput('STATEMENT'); - chai.assert.isNull(this.blockA.getInput('STATEMENT')); - }); - test('Block Connected', function() { - const blockB = this.workspace.newBlock('stack_block'); - this.blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - - this.blockA.removeInput('STATEMENT'); - chai.assert.isFalse(blockB.disposed); - chai.assert.equal(this.blockA.getChildren().length, 0); - }); - test('Shadow Connected', function() { - const blockB = this.workspace.newBlock('stack_block'); - blockB.setShadow(true); - this.blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - - this.blockA.removeInput('STATEMENT'); - chai.assert.isTrue(blockB.disposed); - chai.assert.equal(this.blockA.getChildren().length, 0); - }); - }); - }); - suite('Connection Tracking', function() { - setup(function() { - this.workspace = Blockly.inject('blocklyDiv'); - - this.getInputs = function() { - return this.workspace - .connectionDBList[ConnectionType.INPUT_VALUE].connections_; - }; - this.getOutputs = function() { - return this.workspace - .connectionDBList[ConnectionType.OUTPUT_VALUE].connections_; - }; - this.getNext = function() { - return this.workspace - .connectionDBList[ConnectionType.NEXT_STATEMENT].connections_; - }; - this.getPrevious = function() { - return this.workspace - .connectionDBList[ConnectionType.PREVIOUS_STATEMENT].connections_; - }; - - this.assertConnectionsEmpty = function() { - chai.assert.isEmpty(this.getInputs()); - chai.assert.isEmpty(this.getOutputs()); - chai.assert.isEmpty(this.getNext()); - chai.assert.isEmpty(this.getPrevious()); - }; - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - suite('Deserialization', function() { - setup(function() { - this.deserializationHelper = function(text) { - const dom = Blockly.Xml.textToDom(text); - Blockly.Xml.appendDomToWorkspace(dom, this.workspace); - this.assertConnectionsEmpty(); - this.clock.runAll(); - }; - }); - test('Stack', function() { - this.deserializationHelper( - '' + - ' ' + - ''); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - }); - test('Multi-Stack', function() { - this.deserializationHelper( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 3); - }); - test('Collapsed Stack', function() { - this.deserializationHelper( - '' + - ' ' + - '' - ); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - }); - test('Collapsed Multi-Stack', function() { - this.deserializationHelper( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 3); - }); - test('Row', function() { - this.deserializationHelper( - '' + - ' ' + - '' - ); - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 1); - }); - test('Multi-Row', function() { - this.deserializationHelper( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.getOutputs().length, 3); - chai.assert.equal(this.getInputs().length, 3); - }); - test('Collapsed Row', function() { - this.deserializationHelper( - '' + - ' ' + - '' - ); - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 0); - }); - test('Collapsed Multi-Row', function() { - this.deserializationHelper( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 0); - }); - test('Collapsed Multi-Row Middle', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.runAll(); - chai.assert.equal(this.getOutputs().length, 2); - chai.assert.equal(this.getInputs().length, 1); - }); - test('Statement', function() { - this.deserializationHelper( - '' + - ' ' + - '' - ); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 2); - }); - test('Multi-Statement', function() { - this.deserializationHelper( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 6); - }); - test('Collapsed Statement', function() { - this.deserializationHelper( - '' + - ' ' + - '' - ); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - }); - test('Collapsed Multi-Statement', function() { - this.deserializationHelper( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - }); - test('Collapsed Multi-Statement Middle', function() { - this.deserializationHelper( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.getPrevious().length, 2); - chai.assert.equal(this.getNext().length, 3); - }); - }); - suite('Programmatic Block Creation', function() { - test('Stack', function() { - const block = this.workspace.newBlock('stack_block'); - this.assertConnectionsEmpty(); - block.initSvg(); - block.render(); - - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - }); - test('Row', function() { - const block = this.workspace.newBlock('row_block'); - this.assertConnectionsEmpty(); - block.initSvg(); - block.render(); - - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 1); - }); - test('Statement', function() { - const block = this.workspace.newBlock('statement_block'); - this.assertConnectionsEmpty(); - block.initSvg(); - block.render(); - - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 2); - }); - }); - suite('setCollapsed', function() { - test('Stack', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - this.clock.runAll(); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - - block.setCollapsed(true); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - - block.setCollapsed(false); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - }); - test('Multi-Stack', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.runAll(); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 3); - - block.setCollapsed(true); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 3); - - block.setCollapsed(false); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 3); - }); - test('Row', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - this.clock.runAll(); - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 1); - - block.setCollapsed(true); - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 0); - - block.setCollapsed(false); - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 1); - }); - test('Multi-Row', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - this.clock.runAll(); - chai.assert.equal(this.getOutputs().length, 3); - chai.assert.equal(this.getInputs().length, 3); - - block.setCollapsed(true); - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 0); - - block.setCollapsed(false); - chai.assert.equal(this.getOutputs().length, 3); - chai.assert.equal(this.getInputs().length, 3); - }); - test('Multi-Row Middle', function() { - let block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - this.clock.runAll(); - chai.assert.equal(this.getOutputs().length, 3); - chai.assert.equal(this.getInputs().length, 3); - - block = block.getInputTargetBlock('INPUT'); - block.setCollapsed(true); - chai.assert.equal(this.getOutputs().length, 2); - chai.assert.equal(this.getInputs().length, 1); - - block.setCollapsed(false); - chai.assert.equal(this.getOutputs().length, 3); - chai.assert.equal(this.getInputs().length, 3); - }); - test('Multi-Row Double Collapse', function() { - // Collapse middle -> Collapse top -> - // Uncollapse top -> Uncollapse middle - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - this.clock.runAll(); - chai.assert.equal(this.getOutputs().length, 3); - chai.assert.equal(this.getInputs().length, 3); - - const middleBlock = block.getInputTargetBlock('INPUT'); - middleBlock.setCollapsed(true); - chai.assert.equal(this.getOutputs().length, 2); - chai.assert.equal(this.getInputs().length, 1); - - block.setCollapsed(true); - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 0); - - block.setCollapsed(false); - chai.assert.equal(this.getOutputs().length, 2); - chai.assert.equal(this.getInputs().length, 1); - - middleBlock.setCollapsed(false); - chai.assert.equal(this.getOutputs().length, 3); - chai.assert.equal(this.getInputs().length, 3); - }); - test('Statement', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - this.clock.runAll(); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 2); - - block.setCollapsed(true); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - - block.setCollapsed(false); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 2); - }); - test('Multi-Statement', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.runAll(); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 6); - - block.setCollapsed(true); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - - block.setCollapsed(false); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 6); - }); - test('Multi-Statement Middle', function() { - let block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.runAll(); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 6); - - block = block.getInputTargetBlock('STATEMENT'); - block.setCollapsed(true); - chai.assert.equal(this.getPrevious().length, 2); - chai.assert.equal(this.getNext().length, 3); - - block.setCollapsed(false); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 6); - }); - test('Multi-Statement Double Collapse', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.runAll(); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 6); - - const middleBlock = block.getInputTargetBlock('STATEMENT'); - middleBlock.setCollapsed(true); - chai.assert.equal(this.getPrevious().length, 2); - chai.assert.equal(this.getNext().length, 3); - - block.setCollapsed(true); - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - - block.setCollapsed(false); - chai.assert.equal(this.getPrevious().length, 2); - chai.assert.equal(this.getNext().length, 3); - - middleBlock.setCollapsed(false); - chai.assert.equal(this.getPrevious().length, 3); - chai.assert.equal(this.getNext().length, 6); - }); - }); - suite('Setting Parent Block', function() { - setup(function() { - this.printBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - this.textJoinBlock = this.printBlock.getInputTargetBlock('TEXT'); - this.textBlock = this.textJoinBlock.getInputTargetBlock('ADD0'); - }); - - function assertBlockIsOnlyChild(parent, child, inputName) { - chai.assert.equal(parent.getChildren().length, 1); - chai.assert.equal(parent.getInputTargetBlock(inputName), child); - chai.assert.equal(child.getParent(), parent); - } - function assertNonParentAndOrphan(nonParent, orphan, inputName) { - chai.assert.equal(nonParent.getChildren().length, 0); - chai.assert.isNull(nonParent.getInputTargetBlock('TEXT')); - chai.assert.isNull(orphan.getParent()); - } - function assertOriginalSetup() { - assertBlockIsOnlyChild(this.printBlock, this.textJoinBlock, 'TEXT'); - assertBlockIsOnlyChild(this.textJoinBlock, this.textBlock, 'ADD0'); - } - - test('Setting to connected parent', function() { - chai.assert.doesNotThrow(this.textJoinBlock.setParent - .bind(this.textJoinBlock, this.printBlock)); - assertOriginalSetup.call(this); - }); - test('Setting to new parent after connecting to it', function() { - this.textJoinBlock.outputConnection.disconnect(); - this.textBlock.outputConnection - .connect(this.printBlock.getInput('TEXT').connection); - chai.assert.doesNotThrow(this.textBlock.setParent - .bind(this.textBlock, this.printBlock)); - assertBlockIsOnlyChild(this.printBlock, this.textBlock, 'TEXT'); - }); - test('Setting to new parent while connected to other block', function() { - // Setting to grandparent with no available input connection. - chai.assert.throws(this.textBlock.setParent - .bind(this.textBlock, this.printBlock)); - this.textJoinBlock.outputConnection.disconnect(); - // Setting to block with available input connection. - chai.assert.throws(this.textBlock.setParent - .bind(this.textBlock, this.printBlock)); - assertNonParentAndOrphan(this.printBlock, this.textJoinBlock, 'TEXT'); - assertBlockIsOnlyChild(this.textJoinBlock, this.textBlock, 'ADD0'); - }); - test('Setting to same parent after disconnecting from it', function() { - this.textJoinBlock.outputConnection.disconnect(); - chai.assert.throws(this.textJoinBlock.setParent - .bind(this.textJoinBlock, this.printBlock)); - assertNonParentAndOrphan(this.printBlock, this.textJoinBlock, 'TEXT'); - }); - test('Setting to new parent when orphan', function() { - this.textBlock.outputConnection.disconnect(); - // When new parent has no available input connection. - chai.assert.throws(this.textBlock.setParent - .bind(this.textBlock, this.printBlock)); - this.textJoinBlock.outputConnection.disconnect(); - // When new parent has available input connection. - chai.assert.throws(this.textBlock.setParent - .bind(this.textBlock, this.printBlock)); - - assertNonParentAndOrphan(this.printBlock, this.textJoinBlock, 'TEXT'); - assertNonParentAndOrphan(this.printBlock, this.textBlock, 'TEXT'); - assertNonParentAndOrphan(this.textJoinBlock, this.textBlock, 'ADD0'); - }); - test('Setting parent to null after disconnecting', function() { - this.textBlock.outputConnection.disconnect(); - chai.assert.doesNotThrow(this.textBlock.setParent - .bind(this.textBlock, null)); - assertNonParentAndOrphan(this.textJoinBlock, this.textBlock, 'ADD0'); - }); - test('Setting parent to null without disconnecting', function() { - chai.assert.throws(this.textBlock.setParent - .bind(this.textBlock, null)); - assertOriginalSetup.call(this); - }); - }); - suite('Remove Connections Programmatically', function() { - test('Output', function() { - const block = createRenderedBlock(this.workspace, 'row_block'); - - block.setOutput(false); - - chai.assert.equal(this.getOutputs().length, 0); - chai.assert.equal(this.getInputs().length, 1); - }); - test('Value', function() { - const block = createRenderedBlock(this.workspace, 'row_block'); - - block.removeInput('INPUT'); - - chai.assert.equal(this.getOutputs().length, 1); - chai.assert.equal(this.getInputs().length, 0); - }); - test('Previous', function() { - const block = createRenderedBlock(this.workspace, 'stack_block'); - - block.setPreviousStatement(false); - - chai.assert.equal(this.getPrevious().length, 0); - chai.assert.equal(this.getNext().length, 1); - }); - test('Next', function() { - const block = createRenderedBlock(this.workspace, 'stack_block'); - - block.setNextStatement(false); - - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 0); - }); - test('Statement', function() { - const block = createRenderedBlock(this.workspace, 'statement_block'); - - block.removeInput('STATEMENT'); - - chai.assert.equal(this.getPrevious().length, 1); - chai.assert.equal(this.getNext().length, 1); - }); - }); - suite('Add Connections Programmatically', function() { - test('Output', function() { - const block = createRenderedBlock(this.workspace, 'empty_block'); - // this.workspace.newBlock('empty_block'); - // block.initSvg(); - // block.render(); - - block.setOutput(true); - - chai.assert.equal(this.getOutputs().length, 1); - }); - test('Value', function() { - const block = this.workspace.newBlock('empty_block'); - block.initSvg(); - block.render(); - - block.appendValueInput('INPUT'); - - chai.assert.equal(this.getInputs().length, 1); - }); - test('Previous', function() { - const block = this.workspace.newBlock('empty_block'); - block.initSvg(); - block.render(); - - block.setPreviousStatement(true); - - chai.assert.equal(this.getPrevious().length, 1); - }); - test('Next', function() { - const block = this.workspace.newBlock('empty_block'); - block.initSvg(); - block.render(); - - block.setNextStatement(true); - - chai.assert.equal(this.getNext().length, 1); - }); - test('Statement', function() { - const block = this.workspace.newBlock('empty_block'); - block.initSvg(); - block.render(); - - block.appendStatementInput('STATEMENT'); - - chai.assert.equal(this.getNext().length, 1); - }); - }); - }); - suite('Comments', function() { - suite('Set/Get Text', function() { - function assertCommentEvent(eventSpy, oldValue, newValue) { - const calls = eventSpy.getCalls(); - const event = calls[calls.length - 1].args[0]; - chai.assert.equal(event.type, eventUtils.BLOCK_CHANGE); - chai.assert.equal(event.element, 'comment'); - chai.assert.equal(event.oldValue, oldValue); - chai.assert.equal(event.newValue, newValue); - } - function assertNoCommentEvent(eventSpy) { - const calls = eventSpy.getCalls(); - const event = calls[calls.length - 1].args[0]; - chai.assert.notEqual(event.type, eventUtils.BLOCK_CHANGE); - } - setup(function() { - this.eventsFireSpy = sinon.spy(eventUtils, 'fire'); - }); - teardown(function() { - this.eventsFireSpy.restore(); - }); - suite('Headless', function() { - setup(function() { - this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - }); - test('Text', function() { - this.block.setCommentText('test text'); - chai.assert.equal(this.block.getCommentText(), 'test text'); - assertCommentEvent(this.eventsFireSpy, null, 'test text'); - }); - test('Text Empty', function() { - this.block.setCommentText(''); - chai.assert.equal(this.block.getCommentText(), ''); - assertCommentEvent(this.eventsFireSpy, null, ''); - }); - test('Text Null', function() { - this.block.setCommentText(null); - chai.assert.isNull(this.block.getCommentText()); - assertNoCommentEvent(this.eventsFireSpy); - }); - test('Text -> Null', function() { - this.block.setCommentText('first text'); - - this.block.setCommentText(null); - chai.assert.isNull(this.block.getCommentText()); - assertCommentEvent(this.eventsFireSpy, 'first text', null); - }); - }); - suite('Rendered', function() { - setup(function() { - this.workspace = Blockly.inject('blocklyDiv', { - comments: true, - scrollbars: true, - }); - this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - test('Text', function() { - this.block.setCommentText('test text'); - chai.assert.equal(this.block.getCommentText(), 'test text'); - assertCommentEvent(this.eventsFireSpy, null, 'test text'); - }); - test('Text Empty', function() { - this.block.setCommentText(''); - chai.assert.equal(this.block.getCommentText(), ''); - assertCommentEvent(this.eventsFireSpy, null, ''); - }); - test('Text Null', function() { - this.block.setCommentText(null); - chai.assert.isNull(this.block.getCommentText()); - assertNoCommentEvent(this.eventsFireSpy); - }); - test('Text -> Null', function() { - this.block.setCommentText('first text'); - - this.block.setCommentText(null); - chai.assert.isNull(this.block.getCommentText()); - assertCommentEvent(this.eventsFireSpy, 'first text', null); - }); - test('Set While Visible - Editable', function() { - this.block.setCommentText('test1'); - const icon = this.block.getCommentIcon(); - icon.setVisible(true); - - this.block.setCommentText('test2'); - chai.assert.equal(this.block.getCommentText(), 'test2'); - assertCommentEvent(this.eventsFireSpy, 'test1', 'test2'); - chai.assert.equal(icon.textarea_.value, 'test2'); - }); - test('Set While Visible - NonEditable', function() { - this.block.setCommentText('test1'); - // Restored up by call to sinon.restore() in sharedTestTeardown() - sinon.stub(this.block, 'isEditable').returns(false); - const icon = this.block.getCommentIcon(); - icon.setVisible(true); - - this.block.setCommentText('test2'); - chai.assert.equal(this.block.getCommentText(), 'test2'); - assertCommentEvent(this.eventsFireSpy, 'test1', 'test2'); - chai.assert.equal(icon.paragraphElement_.firstChild.textContent, - 'test2'); - }); - test('Get Text While Editing', function() { - this.block.setCommentText('test1'); - const icon = this.block.getCommentIcon(); - icon.setVisible(true); - icon.textarea_.value = 'test2'; - icon.textarea_.dispatchEvent(new Event('input')); - - chai.assert.equal(this.block.getCommentText(), 'test2'); - }); - }); - }); - }); - suite('Getting/Setting Field (Values)', function() { - setup(function() { - this.workspace = Blockly.inject('blocklyDiv'); - this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - 'test' - ), this.workspace); - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Getting Field', function() { - chai.assert.instanceOf(this.block.getField('TEXT'), Blockly.Field); - }); - test('Getting Field without Name', function() { - chai.assert.throws(this.block.getField.bind(this.block), TypeError); - }); - test('Getting Value of Field without Name', function() { - chai.assert.throws(this.block.getFieldValue.bind(this.block), TypeError); - }); - test('Getting Field with Wrong Type', function() { - const testFunction = function() { - return 'TEXT'; - }; - const inputs = [1, null, testFunction, {toString: testFunction}, ['TEXT']]; - for (let i = 0; i < inputs.length; i++) { - chai.assert.throws(this.block.getField.bind(this.block, inputs[i]), - TypeError); - } - }); - test('Getting Value of Field with Wrong Type', function() { - const testFunction = function() { - return 'TEXT'; - }; - const inputs = [1, null, testFunction, {toString: testFunction}, ['TEXT']]; - for (let i = 0; i < inputs.length; i++) { - chai.assert.throws( - this.block.getFieldValue.bind(this.block, inputs[i]), TypeError); - } - }); - test('Getting/Setting Field Value', function() { - chai.assert.equal(this.block.getFieldValue('TEXT'), 'test'); - this.block.setFieldValue('abc', 'TEXT'); - chai.assert.equal(this.block.getFieldValue('TEXT'), 'abc'); - }); - test('Setting Field without Name', function() { - chai.assert.throws(this.block.setFieldValue.bind(this.block, 'test')); - }); - test('Setting Field with Wrong Type', function() { - const testFunction = function() { - return 'TEXT'; - }; - const inputs = [1, null, testFunction, {toString: testFunction}, ['TEXT']]; - for (let i = 0; i < inputs.length; i++) { - chai.assert.throws(this.block.setFieldValue.bind(this.block, 'test', - inputs[i]), TypeError); - } - }); - }); - suite('Icon Management', function() { - suite('Bubbles and Collapsing', function() { - setup(function() { - workspaceTeardown.call(this, this.workspace); - this.workspace = Blockly.inject('blocklyDiv'); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Has Icon', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - block.setCommentText('test text'); - block.comment.setVisible(true); - chai.assert.isTrue(block.comment.isVisible()); - block.setCollapsed(true); - chai.assert.isFalse(block.comment.isVisible()); - }); - test('Child Has Icon', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - const childBlock = block.getInputTargetBlock('STATEMENT'); - childBlock.setCommentText('test text'); - childBlock.comment.setVisible(true); - chai.assert.isTrue(childBlock.comment.isVisible()); - block.setCollapsed(true); - chai.assert.isFalse(childBlock.comment.isVisible()); - }); - test('Next Block Has Icon', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ), this.workspace); - const nextBlock = block.getNextBlock(); - nextBlock.setCommentText('test text'); - nextBlock.comment.setVisible(true); - chai.assert.isTrue(nextBlock.comment.isVisible()); - block.setCollapsed(true); - chai.assert.isTrue(nextBlock.comment.isVisible()); - }); - }); - }); - suite('Collapsing and Expanding', function() { - function assertCollapsed(block, opt_string) { - chai.assert.isTrue(block.isCollapsed()); - for (let i = 0, input; (input = block.inputList[i]); i++) { - if (input.name == Blockly.Block.COLLAPSED_INPUT_NAME) { - continue; - } - chai.assert.isFalse(input.isVisible()); - for (let j = 0, field; (field = input.fieldRow[j]); j++) { - chai.assert.isFalse(field.isVisible()); - } - } - const icons = block.getIcons(); - for (let i = 0, icon; (icon = icons[i]); i++) { - chai.assert.isFalse(icon.isVisible()); - } - - const input = block.getInput(Blockly.Block.COLLAPSED_INPUT_NAME); - chai.assert.isNotNull(input); - chai.assert.isTrue(input.isVisible()); - const field = block.getField(Blockly.Block.COLLAPSED_FIELD_NAME); - chai.assert.isNotNull(field); - chai.assert.isTrue(field.isVisible()); - - if (opt_string) { - chai.assert.equal(field.getText(), opt_string); - } - } - function assertNotCollapsed(block) { - chai.assert.isFalse(block.isCollapsed()); - for (let i = 0, input; (input = block.inputList[i]); i++) { - chai.assert.isTrue(input.isVisible()); - for (let j = 0, field; (field = input.fieldRow[j]); j++) { - chai.assert.isTrue(field.isVisible()); - } - } - - const input = block.getInput(Blockly.Block.COLLAPSED_INPUT_NAME); - chai.assert.isNull(input); - const field = block.getField(Blockly.Block.COLLAPSED_FIELD_NAME); - chai.assert.isNull(field); - } - function isBlockHidden(block) { - let node = block.getSvgRoot(); - do { - const visible = node.style.display != 'none'; - if (!visible) { - return true; - } - node = node.parentNode; - } while (node != document); - return false; - } - - setup(function() { - eventUtils.disable(); - // We need a visible workspace. - this.workspace = Blockly.inject('blocklyDiv', {}); - Blockly.defineBlocksWithJsonArray([ - { - "type": "variable_block", - "message0": "%1", - "args0": [ - { - "type": "field_variable", - "name": "NAME", - "variable": "x", - }, - ], - }, - ]); - }); - teardown(function() { - eventUtils.enable(); - workspaceTeardown.call(this, this.workspace); - }); - suite('Connecting and Disconnecting', function() { - test('Connect Block to Next', function() { - const blockA = createRenderedBlock(this.workspace, 'stack_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.nextConnection.connect(blockB.previousConnection); - assertNotCollapsed(blockB); - }); - test('Connect Block to Value Input', function() { - const blockA = createRenderedBlock(this.workspace, 'row_block'); - const blockB = createRenderedBlock(this.workspace, 'row_block'); - - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.getInput('INPUT').connection.connect(blockB.outputConnection); - chai.assert.isTrue(isBlockHidden(blockB)); - blockA.setCollapsed(false); - assertNotCollapsed(blockA); - chai.assert.isFalse(isBlockHidden(blockB)); - }); - test('Connect Block to Statement Input', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - chai.assert.isTrue(isBlockHidden(blockB)); - blockA.setCollapsed(false); - assertNotCollapsed(blockA); - chai.assert.isFalse(isBlockHidden(blockB)); - }); - test('Connect Block to Child of Collapsed - Input', function() { - const blockA = createRenderedBlock(this.workspace, 'row_block'); - const blockB = createRenderedBlock(this.workspace, 'row_block'); - const blockC = createRenderedBlock(this.workspace, 'row_block'); - - blockA.getInput('INPUT').connection.connect(blockB.outputConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockB)); - blockB.getInput('INPUT').connection.connect(blockC.outputConnection); - chai.assert.isTrue(isBlockHidden(blockC)); - - blockA.setCollapsed(false); - assertNotCollapsed(blockA); - chai.assert.isFalse(isBlockHidden(blockB)); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - test('Connect Block to Child of Collapsed - Next', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - const blockC = createRenderedBlock(this.workspace, 'stack_block'); - - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockB)); - blockB.nextConnection.connect(blockC.previousConnection); - chai.assert.isTrue(isBlockHidden(blockC)); - - blockA.setCollapsed(false); - assertNotCollapsed(blockA); - chai.assert.isFalse(isBlockHidden(blockB)); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - test('Connect Block to Value Input Already Taken', function() { - const blockA = createRenderedBlock(this.workspace, 'row_block'); - const blockB = createRenderedBlock(this.workspace, 'row_block'); - const blockC = createRenderedBlock(this.workspace, 'row_block'); - - blockA.getInput('INPUT').connection.connect(blockB.outputConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockB)); - blockA.getInput('INPUT').connection.connect(blockC.outputConnection); - chai.assert.isTrue(isBlockHidden(blockC)); - // Still hidden after C is inserted between. - chai.assert.isTrue(isBlockHidden(blockB)); - - blockA.setCollapsed(false); - assertNotCollapsed(blockA); - chai.assert.isFalse(isBlockHidden(blockB)); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - test('Connect Block to Statement Input Already Taken', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - const blockC = createRenderedBlock(this.workspace, 'stack_block'); - - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockB)); - blockA.getInput('STATEMENT').connection - .connect(blockC.previousConnection); - chai.assert.isTrue(isBlockHidden(blockC)); - // Still hidden after C is inserted between. - chai.assert.isTrue(isBlockHidden(blockB)); - - blockA.setCollapsed(false); - assertNotCollapsed(blockA); - chai.assert.isFalse(isBlockHidden(blockB)); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - test('Connect Block with Child - Input', function() { - const blockA = createRenderedBlock(this.workspace, 'row_block'); - const blockB = createRenderedBlock(this.workspace, 'row_block'); - const blockC = createRenderedBlock(this.workspace, 'row_block'); - - blockB.getInput('INPUT').connection.connect(blockC.outputConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.getInput('INPUT').connection.connect(blockB.outputConnection); - chai.assert.isTrue(isBlockHidden(blockC)); - chai.assert.isTrue(isBlockHidden(blockB)); - - blockA.setCollapsed(false); - assertNotCollapsed(blockA); - chai.assert.isFalse(isBlockHidden(blockB)); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - test('Connect Block with Child - Statement', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - const blockC = createRenderedBlock(this.workspace, 'stack_block'); - - blockB.nextConnection.connect(blockC.previousConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - chai.assert.isTrue(isBlockHidden(blockC)); - chai.assert.isTrue(isBlockHidden(blockB)); - - blockA.setCollapsed(false); - assertNotCollapsed(blockA); - chai.assert.isFalse(isBlockHidden(blockB)); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - test('Disconnect Block from Value Input', function() { - const blockA = createRenderedBlock(this.workspace, 'row_block'); - const blockB = createRenderedBlock(this.workspace, 'row_block'); - - blockA.getInput('INPUT').connection.connect(blockB.outputConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockB)); - blockB.outputConnection.disconnect(); - chai.assert.isFalse(isBlockHidden(blockB)); - }); - test('Disconnect Block from Statement Input', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockB)); - blockB.previousConnection.disconnect(); - chai.assert.isFalse(isBlockHidden(blockB)); - }); - test('Disconnect Block from Child of Collapsed - Input', function() { - const blockA = createRenderedBlock(this.workspace, 'row_block'); - const blockB = createRenderedBlock(this.workspace, 'row_block'); - const blockC = createRenderedBlock(this.workspace, 'row_block'); - - blockA.getInput('INPUT').connection.connect(blockB.outputConnection); - blockB.getInput('INPUT').connection.connect(blockC.outputConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockB)); - chai.assert.isTrue(isBlockHidden(blockC)); - - blockC.outputConnection.disconnect(); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - test('Disconnect Block from Child of Collapsed - Next', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - const blockC = createRenderedBlock(this.workspace, 'stack_block'); - - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - blockB.nextConnection.connect(blockC.previousConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockB)); - chai.assert.isTrue(isBlockHidden(blockC)); - - blockC.previousConnection.disconnect(); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - test('Disconnect Block with Child - Input', function() { - const blockA = createRenderedBlock(this.workspace, 'row_block'); - const blockB = createRenderedBlock(this.workspace, 'row_block'); - const blockC = createRenderedBlock(this.workspace, 'row_block'); - - blockB.getInput('INPUT').connection.connect(blockC.outputConnection); - blockA.getInput('INPUT').connection.connect(blockB.outputConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockB)); - chai.assert.isTrue(isBlockHidden(blockC)); - - blockB.outputConnection.disconnect(); - chai.assert.isFalse(isBlockHidden(blockB)); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - test('Disconnect Block with Child - Statement', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - const blockC = createRenderedBlock(this.workspace, 'stack_block'); - - blockB.nextConnection.connect(blockC.previousConnection); - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - blockA.setCollapsed(true); - assertCollapsed(blockA); - chai.assert.isTrue(isBlockHidden(blockC)); - chai.assert.isTrue(isBlockHidden(blockB)); - - blockB.previousConnection.disconnect(); - chai.assert.isFalse(isBlockHidden(blockB)); - chai.assert.isFalse(isBlockHidden(blockC)); - }); - }); - suite('Adding and Removing Block Parts', function() { - test('Add Previous Connection', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.setPreviousStatement(true); - assertCollapsed(blockA); - chai.assert.isNotNull(blockA.previousConnection); - }); - test('Add Next Connection', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.setNextStatement(true); - assertCollapsed(blockA); - chai.assert.isNotNull(blockA.nextConnection); - }); - test('Add Input', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.appendDummyInput('NAME'); - assertCollapsed(blockA); - chai.assert.isNotNull(blockA.getInput('NAME')); - }); - test('Add Field', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - const input = blockA.appendDummyInput('NAME'); - blockA.setCollapsed(true); - assertCollapsed(blockA); - input.appendField(new Blockly.FieldLabel('test'), 'FIELD'); - assertCollapsed(blockA); - const field = blockA.getField('FIELD'); - chai.assert.isNotNull(field); - chai.assert.equal(field.getText(), 'test'); - }); - test('Add Icon', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.setCommentText('test'); - assertCollapsed(blockA); - }); - test('Remove Previous Connection', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - blockA.setPreviousStatement(true); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.setPreviousStatement(false); - assertCollapsed(blockA); - chai.assert.isNull(blockA.previousConnection); - }); - test('Remove Next Connection', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - blockA.setNextStatement(true); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.setNextStatement(false); - assertCollapsed(blockA); - chai.assert.isNull(blockA.nextConnection); - }); - test('Remove Input', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - blockA.appendDummyInput('NAME'); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.removeInput('NAME'); - assertCollapsed(blockA); - chai.assert.isNull(blockA.getInput('NAME')); - }); - test('Remove Field', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - const input = blockA.appendDummyInput('NAME'); - input.appendField(new Blockly.FieldLabel('test'), 'FIELD'); - blockA.setCollapsed(true); - assertCollapsed(blockA); - input.removeField('FIELD'); - assertCollapsed(blockA); - const field = blockA.getField('FIELD'); - chai.assert.isNull(field); - }); - test('Remove Icon', function() { - const blockA = createRenderedBlock(this.workspace, 'empty_block'); - blockA.setCommentText('test'); - blockA.setCollapsed(true); - assertCollapsed(blockA); - blockA.setCommentText(null); - assertCollapsed(blockA); - }); - }); - suite('Renaming Vars', function() { - test('Simple Rename', function() { - const blockA = createRenderedBlock(this.workspace, 'variable_block'); - - blockA.setCollapsed(true); - assertCollapsed(blockA, 'x'); - - const variable = this.workspace.getVariable('x', ''); - this.workspace.renameVariableById(variable.getId(), 'y'); - assertCollapsed(blockA, 'y'); - }); - test('Coalesce, Different Case', function() { - const blockA = createRenderedBlock(this.workspace, 'variable_block'); - - blockA.setCollapsed(true); - assertCollapsed(blockA, 'x'); - - const variable = this.workspace.createVariable('y'); - this.workspace.renameVariableById(variable.getId(), 'X'); - assertCollapsed(blockA, 'X'); - }); - }); - suite('Disabled Blocks', function() { - test('Children of Collapsed Blocks Should Enable Properly', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - // Disable the block and collapse it. - blockA.setEnabled(false); - blockA.setCollapsed(true); - - // Enable the block before expanding it. - blockA.setEnabled(true); - blockA.setCollapsed(false); - - // The child blocks should be enabled. - chai.assert.isFalse(blockB.disabled); - chai.assert.isFalse(blockB.getSvgRoot().classList.contains('blocklyDisabled')); - }); - test('Children of Collapsed Block Should Not Update', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - - // Disable the block and collapse it. - blockA.setEnabled(false); - blockA.setCollapsed(true); - - const blockUpdateDisabled = sinon.stub(blockB, 'updateDisabled'); - - // Enable the block before expanding it. - blockA.setEnabled(true); - - // For performance reasons updateDisabled should not be called - // on children of collapsed blocks. - sinon.assert.notCalled(blockUpdateDisabled); - }); - test('Disabled Children of Collapsed Blocks Should Stay Disabled', function() { - const blockA = createRenderedBlock(this.workspace, 'statement_block'); - const blockB = createRenderedBlock(this.workspace, 'stack_block'); - blockA.getInput('STATEMENT').connection - .connect(blockB.previousConnection); - - // Disable the child block. - blockB.setEnabled(false); - - // Collapse and disable the parent block. - blockA.setCollapsed(false); - blockA.setEnabled(false); - - // Enable the parent block. - blockA.setEnabled(true); - blockA.setCollapsed(true); - - // Child blocks should stay disabled if they have been set. - chai.assert.isTrue(blockB.disabled); - }); - }); - }); - suite('Style', function() { - suite('Headless', function() { - setup(function() { - this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - }); - test('Set colour', function() { - this.block.setColour('20'); - chai.assert.equal(this.block.getColour(), '#a5745b'); - chai.assert.equal(this.block.colour_, this.block.getColour()); - chai.assert.equal(this.block.hue_, '20'); - }); - test('Set style', function() { - this.block.setStyle('styleOne'); - chai.assert.equal(this.block.getStyleName(), 'styleOne'); - chai.assert.isNull(this.block.hue_); - // Calling setStyle does not update the colour on a headless block. - chai.assert.equal(this.block.getColour(), '#000000'); - }); - }); - suite('Rendered', function() { - setup(function() { - this.workspace = Blockly.inject('blocklyDiv', {}); - this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - this.workspace.setTheme(new Blockly.Theme('test', { - "styleOne": { - "colourPrimary": "#000000", - "colourSecondary": "#999999", - "colourTertiary": "#4d4d4d", - "hat": '', - }, - }), {}); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - // Clear all registered themes. - Blockly.registry.TEST_ONLY.typeMap['theme'] = {}; - }); - test('Set colour hue', function() { - this.block.setColour('20'); - chai.assert.equal(this.block.getStyleName(), 'auto_#a5745b'); - chai.assert.equal(this.block.getColour(), '#a5745b'); - chai.assert.equal(this.block.colour_, this.block.getColour()); - chai.assert.equal(this.block.hue_, '20'); - }); - test('Set colour hex', function() { - this.block.setColour('#000000'); - chai.assert.equal(this.block.getStyleName(), 'auto_#000000'); - chai.assert.equal(this.block.getColour(), '#000000'); - chai.assert.equal(this.block.colour_, this.block.getColour()); - chai.assert.isNull(this.block.hue_); - }); - test('Set style', function() { - this.block.setStyle('styleOne'); - chai.assert.equal(this.block.getStyleName(), 'styleOne'); - chai.assert.equal(this.block.getColour(), '#000000'); - chai.assert.equal(this.block.colour_, this.block.getColour()); - }); - }); - }); - suite('toString', function() { - const toStringTests = [ - { - name: 'statement block', - xml: '' + - '' + - '' + - '10' + - '' + - '' + - '', - toString: 'repeat 10 times do ?', - }, - { - name: 'nested statement blocks', - xml: '' + - '' + - '' + - '10' + - '' + - '' + - '' + - '' + - '' + - '', - toString: 'repeat 10 times do if ? do ?', - }, - { - name: 'nested Boolean output blocks', - xml: '' + - '' + - '' + - 'EQ' + - '' + - '' + - 'AND' + - '' + - '' + - '' + - '' + - '', - toString: 'if ((? and ?) = ?) do ?', - }, - { - name: 'output block', - xml: '' + - 'ROOT' + - '' + - '' + - '9' + - '' + - '' + - '', - toString: 'square root 9', - }, - { - name: 'nested Number output blocks', - xml: '' + - 'ADD' + - '' + - '' + - '1' + - '' + - '' + - 'MULTIPLY' + - '' + - '' + - '10' + - '' + - '' + - '' + - '' + - '5' + - '' + - '' + - '' + - '' + - '' + - '' + - '3' + - '' + - '' + - '', - toString: '(10 × 5) + 3', - }, - { - name: 'nested String output blocks', - xml: '' + - '' + - '' + - '' + - 'Hello' + - '' + - '' + - '' + - '' + - 'World' + - '' + - '' + - '', - toString: 'create text with “ Hello ” “ World ”', - }, - { - name: 'parentheses in string literal', - xml: '' + - 'foo ( bar ) baz' + - '', - toString: '“ foo ( bar ) baz ”', - }, - ]; - // Create mocha test cases for each toString test. - toStringTests.forEach(function(t) { - test(t.name, function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(t.xml), - this.workspace); - chai.assert.equal(block.toString(), t.toString); - }); - }); - }); - - suite('Initialization', function() { - setup(function() { - Blockly.defineBlocksWithJsonArray([ - { - "type": "init_test_block", - "message0": "", - }, - ]); - }); - test('recordUndo is reset even if init throws', function() { - // The test could pass if init is never called, - // so we assert init was called to be safe. - let initCalled = false; - let recordUndoDuringInit; - Blocks['init_test_block'].init = function() { - initCalled = true; - recordUndoDuringInit = eventUtils.getRecordUndo(); - throw new Error(); - }; - chai.assert.throws(function() { - this.workspace.newBlock('init_test_block'); - }.bind(this)); - chai.assert.isFalse(recordUndoDuringInit, - 'recordUndo should be false during block init function'); - chai.assert.isTrue(eventUtils.getRecordUndo(), - 'recordUndo should be reset to true after init'); - chai.assert.isTrue(initCalled, 'expected init function to be called'); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.blocks'); + +const {Blocks} = goog.require('Blockly.blocks'); +const {ConnectionType} = goog.require('Blockly.ConnectionType'); +const {createDeprecationWarningStub} = goog.require('Blockly.test.helpers.warnings'); +const {createRenderedBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const eventUtils = goog.require('Blockly.Events.utils'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Blocks', function() { + setup(function() { + sharedTestSetup.call(this, {fireEventsNow: false}); + this.workspace = new Blockly.Workspace(); + Blockly.defineBlocksWithJsonArray([ + { + "type": "empty_block", + "message0": "", + }, + { + "type": "stack_block", + "message0": "", + "previousStatement": null, + "nextStatement": null, + }, + { + "type": "row_block", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + }, + ], + "output": null, + }, + { + "type": "statement_block", + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "STATEMENT", + }, + ], + "previousStatement": null, + "nextStatement": null, + }]); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + function createTestBlocks(workspace, isRow) { + const blockType = isRow ? 'row_block' : 'stack_block'; + const blockA = workspace.newBlock(blockType); + const blockB = workspace.newBlock(blockType); + const blockC = workspace.newBlock(blockType); + + if (isRow) { + blockA.inputList[0].connection.connect(blockB.outputConnection); + blockB.inputList[0].connection.connect(blockC.outputConnection); + } else { + blockA.nextConnection.connect(blockB.previousConnection); + blockB.nextConnection.connect(blockC.previousConnection); + } + + chai.assert.equal(blockC.getParent(), blockB); + + return { + A: blockA, /* Parent */ + B: blockB, /* Middle */ + C: blockC, /* Child */ + }; + } + + suite('Unplug', function() { + function assertUnpluggedNoheal(blocks) { + // A has nothing connected to it. + chai.assert.equal(blocks.A.getChildren().length, 0); + // B and C are still connected. + chai.assert.equal(blocks.C.getParent(), blocks.B); + // B is the top of its stack. + chai.assert.isNull(blocks.B.getParent()); + } + function assertUnpluggedHealed(blocks) { + // A and C are connected. + chai.assert.equal(blocks.A.getChildren().length, 1); + chai.assert.equal(blocks.C.getParent(), blocks.A); + // B has nothing connected to it. + chai.assert.equal(blocks.B.getChildren().length, 0); + // B is the top of its stack. + chai.assert.isNull(blocks.B.getParent()); + } + function assertUnpluggedHealFailed(blocks) { + // A has nothing connected to it. + chai.assert.equal(blocks.A.getChildren().length, 0); + // B has nothing connected to it. + chai.assert.equal(blocks.B.getChildren().length, 0); + // B is the top of its stack. + chai.assert.isNull(blocks.B.getParent()); + // C is the top of its stack. + chai.assert.isNull(blocks.C.getParent()); + } + + suite('Row', function() { + setup(function() { + this.blocks = createTestBlocks(this.workspace, true); + }); + + test('Don\'t heal', function() { + this.blocks.B.unplug(false); + assertUnpluggedNoheal(this.blocks); + }); + test('Heal', function() { + this.blocks.B.unplug(true); + // Each block has only one input, and the types work. + assertUnpluggedHealed(this.blocks); + }); + test('Heal with bad checks', function() { + const blocks = this.blocks; + + // A and C can't connect, but both can connect to B. + blocks.A.inputList[0].connection.setCheck('type1'); + blocks.C.outputConnection.setCheck('type2'); + + // Each block has only one input, but the types don't work. + blocks.B.unplug(true); + assertUnpluggedHealFailed(blocks); + }); + test('Parent has multiple inputs', function() { + const blocks = this.blocks; + // Add extra input to parent + blocks.A.appendValueInput("INPUT").setCheck(null); + blocks.B.unplug(true); + assertUnpluggedHealed(blocks); + }); + test('Middle has multiple inputs', function() { + const blocks = this.blocks; + // Add extra input to middle block + blocks.B.appendValueInput("INPUT").setCheck(null); + blocks.B.unplug(true); + assertUnpluggedHealed(blocks); + }); + test('Child has multiple inputs', function() { + const blocks = this.blocks; + // Add extra input to child block + blocks.C.appendValueInput("INPUT").setCheck(null); + // Child block input count doesn't matter. + blocks.B.unplug(true); + assertUnpluggedHealed(blocks); + }); + test('Child is shadow', function() { + const blocks = this.blocks; + blocks.C.setShadow(true); + blocks.B.unplug(true); + // Even though we're asking to heal, it will appear as if it has not + // healed because shadows always stay with the parent. + assertUnpluggedNoheal(blocks); + }); + }); + suite('Stack', function() { + setup(function() { + this.blocks = createTestBlocks(this.workspace, false); + }); + + test('Don\'t heal', function() { + this.blocks.B.unplug(); + assertUnpluggedNoheal(this.blocks); + }); + test('Heal', function() { + this.blocks.B.unplug(true); + assertUnpluggedHealed(this.blocks); + }); + test('Heal with bad checks', function() { + const blocks = this.blocks; + // A and C can't connect, but both can connect to B. + blocks.A.nextConnection.setCheck('type1'); + blocks.C.previousConnection.setCheck('type2'); + + // The types don't work. + blocks.B.unplug(true); + + assertUnpluggedHealFailed(blocks); + }); + test('Child is shadow', function() { + const blocks = this.blocks; + blocks.C.setShadow(true); + blocks.B.unplug(true); + // Even though we're asking to heal, it will appear as if it has not + // healed because shadows always stay with the parent. + assertUnpluggedNoheal(blocks); + }); + }); + }); + suite('Dispose', function() { + function assertDisposedNoheal(blocks) { + chai.assert.isFalse(blocks.A.disposed); + // A has nothing connected to it. + chai.assert.equal(blocks.A.getChildren().length, 0); + // B is disposed. + chai.assert.isTrue(blocks.B.disposed); + // And C is disposed. + chai.assert.isTrue(blocks.C.disposed); + } + function assertDisposedHealed(blocks) { + chai.assert.isFalse(blocks.A.disposed); + chai.assert.isFalse(blocks.C.disposed); + // A and C are connected. + chai.assert.equal(blocks.A.getChildren().length, 1); + chai.assert.equal(blocks.C.getParent(), blocks.A); + // B is disposed. + chai.assert.isTrue(blocks.B.disposed); + } + function assertDisposedHealFailed(blocks) { + chai.assert.isFalse(blocks.A.disposed); + chai.assert.isFalse(blocks.C.disposed); + // A has nothing connected to it. + chai.assert.equal(blocks.A.getChildren().length, 0); + // B is disposed. + chai.assert.isTrue(blocks.B.disposed); + // C is the top of its stack. + chai.assert.isNull(blocks.C.getParent()); + } + + suite('Row', function() { + setup(function() { + this.blocks = createTestBlocks(this.workspace, true); + }); + + test('Don\'t heal', function() { + this.blocks.B.dispose(false); + assertDisposedNoheal(this.blocks); + }); + test('Heal', function() { + this.blocks.B.dispose(true); + // Each block has only one input, and the types work. + assertDisposedHealed(this.blocks); + }); + test('Heal with bad checks', function() { + const blocks = this.blocks; + + // A and C can't connect, but both can connect to B. + blocks.A.inputList[0].connection.setCheck('type1'); + blocks.C.outputConnection.setCheck('type2'); + + // Each block has only one input, but the types don't work. + blocks.B.dispose(true); + assertDisposedHealFailed(blocks); + }); + test('Parent has multiple inputs', function() { + const blocks = this.blocks; + // Add extra input to parent + blocks.A.appendValueInput("INPUT").setCheck(null); + blocks.B.dispose(true); + assertDisposedHealed(blocks); + }); + test('Middle has multiple inputs', function() { + const blocks = this.blocks; + // Add extra input to middle block + blocks.B.appendValueInput("INPUT").setCheck(null); + blocks.B.dispose(true); + assertDisposedHealed(blocks); + }); + test('Child has multiple inputs', function() { + const blocks = this.blocks; + // Add extra input to child block + blocks.C.appendValueInput("INPUT").setCheck(null); + // Child block input count doesn't matter. + blocks.B.dispose(true); + assertDisposedHealed(blocks); + }); + test('Child is shadow', function() { + const blocks = this.blocks; + blocks.C.setShadow(true); + blocks.B.dispose(true); + // Even though we're asking to heal, it will appear as if it has not + // healed because shadows always get destroyed. + assertDisposedNoheal(blocks); + }); + }); + suite('Stack', function() { + setup(function() { + this.blocks = createTestBlocks(this.workspace, false); + }); + + test('Don\'t heal', function() { + this.blocks.B.dispose(); + assertDisposedNoheal(this.blocks); + }); + test('Heal', function() { + this.blocks.B.dispose(true); + assertDisposedHealed(this.blocks); + }); + test('Heal with bad checks', function() { + const blocks = this.blocks; + // A and C can't connect, but both can connect to B. + blocks.A.nextConnection.setCheck('type1'); + blocks.C.previousConnection.setCheck('type2'); + + // The types don't work. + blocks.B.dispose(true); + + assertDisposedHealFailed(blocks); + }); + test('Child is shadow', function() { + const blocks = this.blocks; + blocks.C.setShadow(true); + blocks.B.dispose(true); + // Even though we're asking to heal, it will appear as if it has not + // healed because shadows always get destroyed. + assertDisposedNoheal(blocks); + }); + }); + }); + suite('Remove Input', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([ + { + "type": "value_block", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "VALUE", + }, + ], + }, + ]); + }); + + suite('Value', function() { + setup(function() { + this.blockA = this.workspace.newBlock('value_block'); + }); + + test('No Connected', function() { + this.blockA.removeInput('VALUE'); + chai.assert.isNull(this.blockA.getInput('VALUE')); + }); + test('Block Connected', function() { + const blockB = this.workspace.newBlock('row_block'); + this.blockA.getInput('VALUE').connection + .connect(blockB.outputConnection); + + this.blockA.removeInput('VALUE'); + chai.assert.isFalse(blockB.disposed); + chai.assert.equal(this.blockA.getChildren().length, 0); + }); + test('Shadow Connected', function() { + const blockB = this.workspace.newBlock('row_block'); + blockB.setShadow(true); + this.blockA.getInput('VALUE').connection + .connect(blockB.outputConnection); + + this.blockA.removeInput('VALUE'); + chai.assert.isTrue(blockB.disposed); + chai.assert.equal(this.blockA.getChildren().length, 0); + }); + }); + suite('Statement', function() { + setup(function() { + this.blockA = this.workspace.newBlock('statement_block'); + }); + + test('No Connected', function() { + this.blockA.removeInput('STATEMENT'); + chai.assert.isNull(this.blockA.getInput('STATEMENT')); + }); + test('Block Connected', function() { + const blockB = this.workspace.newBlock('stack_block'); + this.blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + + this.blockA.removeInput('STATEMENT'); + chai.assert.isFalse(blockB.disposed); + chai.assert.equal(this.blockA.getChildren().length, 0); + }); + test('Shadow Connected', function() { + const blockB = this.workspace.newBlock('stack_block'); + blockB.setShadow(true); + this.blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + + this.blockA.removeInput('STATEMENT'); + chai.assert.isTrue(blockB.disposed); + chai.assert.equal(this.blockA.getChildren().length, 0); + }); + }); + }); + suite('Connection Tracking', function() { + setup(function() { + this.workspace = Blockly.inject('blocklyDiv'); + + this.getInputs = function() { + return this.workspace + .connectionDBList[ConnectionType.INPUT_VALUE].connections_; + }; + this.getOutputs = function() { + return this.workspace + .connectionDBList[ConnectionType.OUTPUT_VALUE].connections_; + }; + this.getNext = function() { + return this.workspace + .connectionDBList[ConnectionType.NEXT_STATEMENT].connections_; + }; + this.getPrevious = function() { + return this.workspace + .connectionDBList[ConnectionType.PREVIOUS_STATEMENT].connections_; + }; + + this.assertConnectionsEmpty = function() { + chai.assert.isEmpty(this.getInputs()); + chai.assert.isEmpty(this.getOutputs()); + chai.assert.isEmpty(this.getNext()); + chai.assert.isEmpty(this.getPrevious()); + }; + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + suite('Deserialization', function() { + setup(function() { + this.deserializationHelper = function(text) { + const dom = Blockly.Xml.textToDom(text); + Blockly.Xml.appendDomToWorkspace(dom, this.workspace); + this.assertConnectionsEmpty(); + this.clock.runAll(); + }; + }); + test('Stack', function() { + this.deserializationHelper( + '' + + ' ' + + ''); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + }); + test('Multi-Stack', function() { + this.deserializationHelper( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 3); + }); + test('Collapsed Stack', function() { + this.deserializationHelper( + '' + + ' ' + + '' + ); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + }); + test('Collapsed Multi-Stack', function() { + this.deserializationHelper( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 3); + }); + test('Row', function() { + this.deserializationHelper( + '' + + ' ' + + '' + ); + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 1); + }); + test('Multi-Row', function() { + this.deserializationHelper( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.getOutputs().length, 3); + chai.assert.equal(this.getInputs().length, 3); + }); + test('Collapsed Row', function() { + this.deserializationHelper( + '' + + ' ' + + '' + ); + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 0); + }); + test('Collapsed Multi-Row', function() { + this.deserializationHelper( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 0); + }); + test('Collapsed Multi-Row Middle', function() { + Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + this.assertConnectionsEmpty(); + this.clock.runAll(); + chai.assert.equal(this.getOutputs().length, 2); + chai.assert.equal(this.getInputs().length, 1); + }); + test('Statement', function() { + this.deserializationHelper( + '' + + ' ' + + '' + ); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 2); + }); + test('Multi-Statement', function() { + this.deserializationHelper( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 6); + }); + test('Collapsed Statement', function() { + this.deserializationHelper( + '' + + ' ' + + '' + ); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + }); + test('Collapsed Multi-Statement', function() { + this.deserializationHelper( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + }); + test('Collapsed Multi-Statement Middle', function() { + this.deserializationHelper( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.getPrevious().length, 2); + chai.assert.equal(this.getNext().length, 3); + }); + }); + suite('Programmatic Block Creation', function() { + test('Stack', function() { + const block = this.workspace.newBlock('stack_block'); + this.assertConnectionsEmpty(); + block.initSvg(); + block.render(); + + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + }); + test('Row', function() { + const block = this.workspace.newBlock('row_block'); + this.assertConnectionsEmpty(); + block.initSvg(); + block.render(); + + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 1); + }); + test('Statement', function() { + const block = this.workspace.newBlock('statement_block'); + this.assertConnectionsEmpty(); + block.initSvg(); + block.render(); + + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 2); + }); + }); + suite('setCollapsed', function() { + test('Stack', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + this.clock.runAll(); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + + block.setCollapsed(true); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + + block.setCollapsed(false); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + }); + test('Multi-Stack', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + this.assertConnectionsEmpty(); + this.clock.runAll(); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 3); + + block.setCollapsed(true); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 3); + + block.setCollapsed(false); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 3); + }); + test('Row', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + this.clock.runAll(); + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 1); + + block.setCollapsed(true); + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 0); + + block.setCollapsed(false); + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 1); + }); + test('Multi-Row', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + this.clock.runAll(); + chai.assert.equal(this.getOutputs().length, 3); + chai.assert.equal(this.getInputs().length, 3); + + block.setCollapsed(true); + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 0); + + block.setCollapsed(false); + chai.assert.equal(this.getOutputs().length, 3); + chai.assert.equal(this.getInputs().length, 3); + }); + test('Multi-Row Middle', function() { + let block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + this.clock.runAll(); + chai.assert.equal(this.getOutputs().length, 3); + chai.assert.equal(this.getInputs().length, 3); + + block = block.getInputTargetBlock('INPUT'); + block.setCollapsed(true); + chai.assert.equal(this.getOutputs().length, 2); + chai.assert.equal(this.getInputs().length, 1); + + block.setCollapsed(false); + chai.assert.equal(this.getOutputs().length, 3); + chai.assert.equal(this.getInputs().length, 3); + }); + test('Multi-Row Double Collapse', function() { + // Collapse middle -> Collapse top -> + // Uncollapse top -> Uncollapse middle + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + this.clock.runAll(); + chai.assert.equal(this.getOutputs().length, 3); + chai.assert.equal(this.getInputs().length, 3); + + const middleBlock = block.getInputTargetBlock('INPUT'); + middleBlock.setCollapsed(true); + chai.assert.equal(this.getOutputs().length, 2); + chai.assert.equal(this.getInputs().length, 1); + + block.setCollapsed(true); + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 0); + + block.setCollapsed(false); + chai.assert.equal(this.getOutputs().length, 2); + chai.assert.equal(this.getInputs().length, 1); + + middleBlock.setCollapsed(false); + chai.assert.equal(this.getOutputs().length, 3); + chai.assert.equal(this.getInputs().length, 3); + }); + test('Statement', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + this.clock.runAll(); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 2); + + block.setCollapsed(true); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + + block.setCollapsed(false); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 2); + }); + test('Multi-Statement', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + this.assertConnectionsEmpty(); + this.clock.runAll(); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 6); + + block.setCollapsed(true); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + + block.setCollapsed(false); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 6); + }); + test('Multi-Statement Middle', function() { + let block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + this.assertConnectionsEmpty(); + this.clock.runAll(); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 6); + + block = block.getInputTargetBlock('STATEMENT'); + block.setCollapsed(true); + chai.assert.equal(this.getPrevious().length, 2); + chai.assert.equal(this.getNext().length, 3); + + block.setCollapsed(false); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 6); + }); + test('Multi-Statement Double Collapse', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + this.assertConnectionsEmpty(); + this.clock.runAll(); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 6); + + const middleBlock = block.getInputTargetBlock('STATEMENT'); + middleBlock.setCollapsed(true); + chai.assert.equal(this.getPrevious().length, 2); + chai.assert.equal(this.getNext().length, 3); + + block.setCollapsed(true); + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + + block.setCollapsed(false); + chai.assert.equal(this.getPrevious().length, 2); + chai.assert.equal(this.getNext().length, 3); + + middleBlock.setCollapsed(false); + chai.assert.equal(this.getPrevious().length, 3); + chai.assert.equal(this.getNext().length, 6); + }); + }); + suite('Setting Parent Block', function() { + setup(function() { + this.printBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + this.textJoinBlock = this.printBlock.getInputTargetBlock('TEXT'); + this.textBlock = this.textJoinBlock.getInputTargetBlock('ADD0'); + }); + + function assertBlockIsOnlyChild(parent, child, inputName) { + chai.assert.equal(parent.getChildren().length, 1); + chai.assert.equal(parent.getInputTargetBlock(inputName), child); + chai.assert.equal(child.getParent(), parent); + } + function assertNonParentAndOrphan(nonParent, orphan, inputName) { + chai.assert.equal(nonParent.getChildren().length, 0); + chai.assert.isNull(nonParent.getInputTargetBlock('TEXT')); + chai.assert.isNull(orphan.getParent()); + } + function assertOriginalSetup() { + assertBlockIsOnlyChild(this.printBlock, this.textJoinBlock, 'TEXT'); + assertBlockIsOnlyChild(this.textJoinBlock, this.textBlock, 'ADD0'); + } + + test('Setting to connected parent', function() { + chai.assert.doesNotThrow(this.textJoinBlock.setParent + .bind(this.textJoinBlock, this.printBlock)); + assertOriginalSetup.call(this); + }); + test('Setting to new parent after connecting to it', function() { + this.textJoinBlock.outputConnection.disconnect(); + this.textBlock.outputConnection + .connect(this.printBlock.getInput('TEXT').connection); + chai.assert.doesNotThrow(this.textBlock.setParent + .bind(this.textBlock, this.printBlock)); + assertBlockIsOnlyChild(this.printBlock, this.textBlock, 'TEXT'); + }); + test('Setting to new parent while connected to other block', function() { + // Setting to grandparent with no available input connection. + chai.assert.throws(this.textBlock.setParent + .bind(this.textBlock, this.printBlock)); + this.textJoinBlock.outputConnection.disconnect(); + // Setting to block with available input connection. + chai.assert.throws(this.textBlock.setParent + .bind(this.textBlock, this.printBlock)); + assertNonParentAndOrphan(this.printBlock, this.textJoinBlock, 'TEXT'); + assertBlockIsOnlyChild(this.textJoinBlock, this.textBlock, 'ADD0'); + }); + test('Setting to same parent after disconnecting from it', function() { + this.textJoinBlock.outputConnection.disconnect(); + chai.assert.throws(this.textJoinBlock.setParent + .bind(this.textJoinBlock, this.printBlock)); + assertNonParentAndOrphan(this.printBlock, this.textJoinBlock, 'TEXT'); + }); + test('Setting to new parent when orphan', function() { + this.textBlock.outputConnection.disconnect(); + // When new parent has no available input connection. + chai.assert.throws(this.textBlock.setParent + .bind(this.textBlock, this.printBlock)); + this.textJoinBlock.outputConnection.disconnect(); + // When new parent has available input connection. + chai.assert.throws(this.textBlock.setParent + .bind(this.textBlock, this.printBlock)); + + assertNonParentAndOrphan(this.printBlock, this.textJoinBlock, 'TEXT'); + assertNonParentAndOrphan(this.printBlock, this.textBlock, 'TEXT'); + assertNonParentAndOrphan(this.textJoinBlock, this.textBlock, 'ADD0'); + }); + test('Setting parent to null after disconnecting', function() { + this.textBlock.outputConnection.disconnect(); + chai.assert.doesNotThrow(this.textBlock.setParent + .bind(this.textBlock, null)); + assertNonParentAndOrphan(this.textJoinBlock, this.textBlock, 'ADD0'); + }); + test('Setting parent to null without disconnecting', function() { + chai.assert.throws(this.textBlock.setParent + .bind(this.textBlock, null)); + assertOriginalSetup.call(this); + }); + }); + suite('Remove Connections Programmatically', function() { + test('Output', function() { + const block = createRenderedBlock(this.workspace, 'row_block'); + + block.setOutput(false); + + chai.assert.equal(this.getOutputs().length, 0); + chai.assert.equal(this.getInputs().length, 1); + }); + test('Value', function() { + const block = createRenderedBlock(this.workspace, 'row_block'); + + block.removeInput('INPUT'); + + chai.assert.equal(this.getOutputs().length, 1); + chai.assert.equal(this.getInputs().length, 0); + }); + test('Previous', function() { + const block = createRenderedBlock(this.workspace, 'stack_block'); + + block.setPreviousStatement(false); + + chai.assert.equal(this.getPrevious().length, 0); + chai.assert.equal(this.getNext().length, 1); + }); + test('Next', function() { + const block = createRenderedBlock(this.workspace, 'stack_block'); + + block.setNextStatement(false); + + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 0); + }); + test('Statement', function() { + const block = createRenderedBlock(this.workspace, 'statement_block'); + + block.removeInput('STATEMENT'); + + chai.assert.equal(this.getPrevious().length, 1); + chai.assert.equal(this.getNext().length, 1); + }); + }); + suite('Add Connections Programmatically', function() { + test('Output', function() { + const block = createRenderedBlock(this.workspace, 'empty_block'); + // this.workspace.newBlock('empty_block'); + // block.initSvg(); + // block.render(); + + block.setOutput(true); + + chai.assert.equal(this.getOutputs().length, 1); + }); + test('Value', function() { + const block = this.workspace.newBlock('empty_block'); + block.initSvg(); + block.render(); + + block.appendValueInput('INPUT'); + + chai.assert.equal(this.getInputs().length, 1); + }); + test('Previous', function() { + const block = this.workspace.newBlock('empty_block'); + block.initSvg(); + block.render(); + + block.setPreviousStatement(true); + + chai.assert.equal(this.getPrevious().length, 1); + }); + test('Next', function() { + const block = this.workspace.newBlock('empty_block'); + block.initSvg(); + block.render(); + + block.setNextStatement(true); + + chai.assert.equal(this.getNext().length, 1); + }); + test('Statement', function() { + const block = this.workspace.newBlock('empty_block'); + block.initSvg(); + block.render(); + + block.appendStatementInput('STATEMENT'); + + chai.assert.equal(this.getNext().length, 1); + }); + }); + }); + suite('Comments', function() { + suite('Set/Get Text', function() { + function assertCommentEvent(eventSpy, oldValue, newValue) { + const calls = eventSpy.getCalls(); + const event = calls[calls.length - 1].args[0]; + chai.assert.equal(event.type, eventUtils.BLOCK_CHANGE); + chai.assert.equal(event.element, 'comment'); + chai.assert.equal(event.oldValue, oldValue); + chai.assert.equal(event.newValue, newValue); + } + function assertNoCommentEvent(eventSpy) { + const calls = eventSpy.getCalls(); + const event = calls[calls.length - 1].args[0]; + chai.assert.notEqual(event.type, eventUtils.BLOCK_CHANGE); + } + setup(function() { + this.eventsFireSpy = sinon.spy(eventUtils, 'fire'); + }); + teardown(function() { + this.eventsFireSpy.restore(); + }); + suite('Headless', function() { + setup(function() { + this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + }); + test('Text', function() { + this.block.setCommentText('test text'); + chai.assert.equal(this.block.getCommentText(), 'test text'); + assertCommentEvent(this.eventsFireSpy, null, 'test text'); + }); + test('Text Empty', function() { + this.block.setCommentText(''); + chai.assert.equal(this.block.getCommentText(), ''); + assertCommentEvent(this.eventsFireSpy, null, ''); + }); + test('Text Null', function() { + this.block.setCommentText(null); + chai.assert.isNull(this.block.getCommentText()); + assertNoCommentEvent(this.eventsFireSpy); + }); + test('Text -> Null', function() { + this.block.setCommentText('first text'); + + this.block.setCommentText(null); + chai.assert.isNull(this.block.getCommentText()); + assertCommentEvent(this.eventsFireSpy, 'first text', null); + }); + }); + suite('Rendered', function() { + setup(function() { + this.workspace = Blockly.inject('blocklyDiv', { + comments: true, + scrollbars: true, + }); + this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + test('Text', function() { + this.block.setCommentText('test text'); + chai.assert.equal(this.block.getCommentText(), 'test text'); + assertCommentEvent(this.eventsFireSpy, null, 'test text'); + }); + test('Text Empty', function() { + this.block.setCommentText(''); + chai.assert.equal(this.block.getCommentText(), ''); + assertCommentEvent(this.eventsFireSpy, null, ''); + }); + test('Text Null', function() { + this.block.setCommentText(null); + chai.assert.isNull(this.block.getCommentText()); + assertNoCommentEvent(this.eventsFireSpy); + }); + test('Text -> Null', function() { + this.block.setCommentText('first text'); + + this.block.setCommentText(null); + chai.assert.isNull(this.block.getCommentText()); + assertCommentEvent(this.eventsFireSpy, 'first text', null); + }); + test('Set While Visible - Editable', function() { + this.block.setCommentText('test1'); + const icon = this.block.getCommentIcon(); + icon.setVisible(true); + + this.block.setCommentText('test2'); + chai.assert.equal(this.block.getCommentText(), 'test2'); + assertCommentEvent(this.eventsFireSpy, 'test1', 'test2'); + chai.assert.equal(icon.textarea_.value, 'test2'); + }); + test('Set While Visible - NonEditable', function() { + this.block.setCommentText('test1'); + // Restored up by call to sinon.restore() in sharedTestTeardown() + sinon.stub(this.block, 'isEditable').returns(false); + const icon = this.block.getCommentIcon(); + icon.setVisible(true); + + this.block.setCommentText('test2'); + chai.assert.equal(this.block.getCommentText(), 'test2'); + assertCommentEvent(this.eventsFireSpy, 'test1', 'test2'); + chai.assert.equal(icon.paragraphElement_.firstChild.textContent, + 'test2'); + }); + test('Get Text While Editing', function() { + this.block.setCommentText('test1'); + const icon = this.block.getCommentIcon(); + icon.setVisible(true); + icon.textarea_.value = 'test2'; + icon.textarea_.dispatchEvent(new Event('input')); + + chai.assert.equal(this.block.getCommentText(), 'test2'); + }); + }); + }); + }); + suite('Getting/Setting Field (Values)', function() { + setup(function() { + this.workspace = Blockly.inject('blocklyDiv'); + this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + 'test' + ), this.workspace); + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Getting Field', function() { + chai.assert.instanceOf(this.block.getField('TEXT'), Blockly.Field); + }); + test('Getting Field without Name', function() { + chai.assert.throws(this.block.getField.bind(this.block), TypeError); + }); + test('Getting Value of Field without Name', function() { + chai.assert.throws(this.block.getFieldValue.bind(this.block), TypeError); + }); + test('Getting Field with Wrong Type', function() { + const testFunction = function() { + return 'TEXT'; + }; + const inputs = [1, null, testFunction, {toString: testFunction}, ['TEXT']]; + for (let i = 0; i < inputs.length; i++) { + chai.assert.throws(this.block.getField.bind(this.block, inputs[i]), + TypeError); + } + }); + test('Getting Value of Field with Wrong Type', function() { + const testFunction = function() { + return 'TEXT'; + }; + const inputs = [1, null, testFunction, {toString: testFunction}, ['TEXT']]; + for (let i = 0; i < inputs.length; i++) { + chai.assert.throws( + this.block.getFieldValue.bind(this.block, inputs[i]), TypeError); + } + }); + test('Getting/Setting Field Value', function() { + chai.assert.equal(this.block.getFieldValue('TEXT'), 'test'); + this.block.setFieldValue('abc', 'TEXT'); + chai.assert.equal(this.block.getFieldValue('TEXT'), 'abc'); + }); + test('Setting Field without Name', function() { + chai.assert.throws(this.block.setFieldValue.bind(this.block, 'test')); + }); + test('Setting Field with Wrong Type', function() { + const testFunction = function() { + return 'TEXT'; + }; + const inputs = [1, null, testFunction, {toString: testFunction}, ['TEXT']]; + for (let i = 0; i < inputs.length; i++) { + chai.assert.throws(this.block.setFieldValue.bind(this.block, 'test', + inputs[i]), TypeError); + } + }); + }); + suite('Icon Management', function() { + suite('Bubbles and Collapsing', function() { + setup(function() { + workspaceTeardown.call(this, this.workspace); + this.workspace = Blockly.inject('blocklyDiv'); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Has Icon', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + block.setCommentText('test text'); + block.comment.setVisible(true); + chai.assert.isTrue(block.comment.isVisible()); + block.setCollapsed(true); + chai.assert.isFalse(block.comment.isVisible()); + }); + test('Child Has Icon', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + const childBlock = block.getInputTargetBlock('STATEMENT'); + childBlock.setCommentText('test text'); + childBlock.comment.setVisible(true); + chai.assert.isTrue(childBlock.comment.isVisible()); + block.setCollapsed(true); + chai.assert.isFalse(childBlock.comment.isVisible()); + }); + test('Next Block Has Icon', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), this.workspace); + const nextBlock = block.getNextBlock(); + nextBlock.setCommentText('test text'); + nextBlock.comment.setVisible(true); + chai.assert.isTrue(nextBlock.comment.isVisible()); + block.setCollapsed(true); + chai.assert.isTrue(nextBlock.comment.isVisible()); + }); + }); + }); + suite('Collapsing and Expanding', function() { + function assertCollapsed(block, opt_string) { + chai.assert.isTrue(block.isCollapsed()); + for (let i = 0, input; (input = block.inputList[i]); i++) { + if (input.name == Blockly.Block.COLLAPSED_INPUT_NAME) { + continue; + } + chai.assert.isFalse(input.isVisible()); + for (let j = 0, field; (field = input.fieldRow[j]); j++) { + chai.assert.isFalse(field.isVisible()); + } + } + const icons = block.getIcons(); + for (let i = 0, icon; (icon = icons[i]); i++) { + chai.assert.isFalse(icon.isVisible()); + } + + const input = block.getInput(Blockly.Block.COLLAPSED_INPUT_NAME); + chai.assert.isNotNull(input); + chai.assert.isTrue(input.isVisible()); + const field = block.getField(Blockly.Block.COLLAPSED_FIELD_NAME); + chai.assert.isNotNull(field); + chai.assert.isTrue(field.isVisible()); + + if (opt_string) { + chai.assert.equal(field.getText(), opt_string); + } + } + function assertNotCollapsed(block) { + chai.assert.isFalse(block.isCollapsed()); + for (let i = 0, input; (input = block.inputList[i]); i++) { + chai.assert.isTrue(input.isVisible()); + for (let j = 0, field; (field = input.fieldRow[j]); j++) { + chai.assert.isTrue(field.isVisible()); + } + } + + const input = block.getInput(Blockly.Block.COLLAPSED_INPUT_NAME); + chai.assert.isNull(input); + const field = block.getField(Blockly.Block.COLLAPSED_FIELD_NAME); + chai.assert.isNull(field); + } + function isBlockHidden(block) { + let node = block.getSvgRoot(); + do { + const visible = node.style.display != 'none'; + if (!visible) { + return true; + } + node = node.parentNode; + } while (node != document); + return false; + } + + setup(function() { + eventUtils.disable(); + // We need a visible workspace. + this.workspace = Blockly.inject('blocklyDiv', {}); + Blockly.defineBlocksWithJsonArray([ + { + "type": "variable_block", + "message0": "%1", + "args0": [ + { + "type": "field_variable", + "name": "NAME", + "variable": "x", + }, + ], + }, + ]); + }); + teardown(function() { + eventUtils.enable(); + workspaceTeardown.call(this, this.workspace); + }); + suite('Connecting and Disconnecting', function() { + test('Connect Block to Next', function() { + const blockA = createRenderedBlock(this.workspace, 'stack_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.nextConnection.connect(blockB.previousConnection); + assertNotCollapsed(blockB); + }); + test('Connect Block to Value Input', function() { + const blockA = createRenderedBlock(this.workspace, 'row_block'); + const blockB = createRenderedBlock(this.workspace, 'row_block'); + + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.getInput('INPUT').connection.connect(blockB.outputConnection); + chai.assert.isTrue(isBlockHidden(blockB)); + blockA.setCollapsed(false); + assertNotCollapsed(blockA); + chai.assert.isFalse(isBlockHidden(blockB)); + }); + test('Connect Block to Statement Input', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + chai.assert.isTrue(isBlockHidden(blockB)); + blockA.setCollapsed(false); + assertNotCollapsed(blockA); + chai.assert.isFalse(isBlockHidden(blockB)); + }); + test('Connect Block to Child of Collapsed - Input', function() { + const blockA = createRenderedBlock(this.workspace, 'row_block'); + const blockB = createRenderedBlock(this.workspace, 'row_block'); + const blockC = createRenderedBlock(this.workspace, 'row_block'); + + blockA.getInput('INPUT').connection.connect(blockB.outputConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockB)); + blockB.getInput('INPUT').connection.connect(blockC.outputConnection); + chai.assert.isTrue(isBlockHidden(blockC)); + + blockA.setCollapsed(false); + assertNotCollapsed(blockA); + chai.assert.isFalse(isBlockHidden(blockB)); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + test('Connect Block to Child of Collapsed - Next', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + const blockC = createRenderedBlock(this.workspace, 'stack_block'); + + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockB)); + blockB.nextConnection.connect(blockC.previousConnection); + chai.assert.isTrue(isBlockHidden(blockC)); + + blockA.setCollapsed(false); + assertNotCollapsed(blockA); + chai.assert.isFalse(isBlockHidden(blockB)); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + test('Connect Block to Value Input Already Taken', function() { + const blockA = createRenderedBlock(this.workspace, 'row_block'); + const blockB = createRenderedBlock(this.workspace, 'row_block'); + const blockC = createRenderedBlock(this.workspace, 'row_block'); + + blockA.getInput('INPUT').connection.connect(blockB.outputConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockB)); + blockA.getInput('INPUT').connection.connect(blockC.outputConnection); + chai.assert.isTrue(isBlockHidden(blockC)); + // Still hidden after C is inserted between. + chai.assert.isTrue(isBlockHidden(blockB)); + + blockA.setCollapsed(false); + assertNotCollapsed(blockA); + chai.assert.isFalse(isBlockHidden(blockB)); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + test('Connect Block to Statement Input Already Taken', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + const blockC = createRenderedBlock(this.workspace, 'stack_block'); + + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockB)); + blockA.getInput('STATEMENT').connection + .connect(blockC.previousConnection); + chai.assert.isTrue(isBlockHidden(blockC)); + // Still hidden after C is inserted between. + chai.assert.isTrue(isBlockHidden(blockB)); + + blockA.setCollapsed(false); + assertNotCollapsed(blockA); + chai.assert.isFalse(isBlockHidden(blockB)); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + test('Connect Block with Child - Input', function() { + const blockA = createRenderedBlock(this.workspace, 'row_block'); + const blockB = createRenderedBlock(this.workspace, 'row_block'); + const blockC = createRenderedBlock(this.workspace, 'row_block'); + + blockB.getInput('INPUT').connection.connect(blockC.outputConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.getInput('INPUT').connection.connect(blockB.outputConnection); + chai.assert.isTrue(isBlockHidden(blockC)); + chai.assert.isTrue(isBlockHidden(blockB)); + + blockA.setCollapsed(false); + assertNotCollapsed(blockA); + chai.assert.isFalse(isBlockHidden(blockB)); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + test('Connect Block with Child - Statement', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + const blockC = createRenderedBlock(this.workspace, 'stack_block'); + + blockB.nextConnection.connect(blockC.previousConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + chai.assert.isTrue(isBlockHidden(blockC)); + chai.assert.isTrue(isBlockHidden(blockB)); + + blockA.setCollapsed(false); + assertNotCollapsed(blockA); + chai.assert.isFalse(isBlockHidden(blockB)); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + test('Disconnect Block from Value Input', function() { + const blockA = createRenderedBlock(this.workspace, 'row_block'); + const blockB = createRenderedBlock(this.workspace, 'row_block'); + + blockA.getInput('INPUT').connection.connect(blockB.outputConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockB)); + blockB.outputConnection.disconnect(); + chai.assert.isFalse(isBlockHidden(blockB)); + }); + test('Disconnect Block from Statement Input', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockB)); + blockB.previousConnection.disconnect(); + chai.assert.isFalse(isBlockHidden(blockB)); + }); + test('Disconnect Block from Child of Collapsed - Input', function() { + const blockA = createRenderedBlock(this.workspace, 'row_block'); + const blockB = createRenderedBlock(this.workspace, 'row_block'); + const blockC = createRenderedBlock(this.workspace, 'row_block'); + + blockA.getInput('INPUT').connection.connect(blockB.outputConnection); + blockB.getInput('INPUT').connection.connect(blockC.outputConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockB)); + chai.assert.isTrue(isBlockHidden(blockC)); + + blockC.outputConnection.disconnect(); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + test('Disconnect Block from Child of Collapsed - Next', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + const blockC = createRenderedBlock(this.workspace, 'stack_block'); + + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + blockB.nextConnection.connect(blockC.previousConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockB)); + chai.assert.isTrue(isBlockHidden(blockC)); + + blockC.previousConnection.disconnect(); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + test('Disconnect Block with Child - Input', function() { + const blockA = createRenderedBlock(this.workspace, 'row_block'); + const blockB = createRenderedBlock(this.workspace, 'row_block'); + const blockC = createRenderedBlock(this.workspace, 'row_block'); + + blockB.getInput('INPUT').connection.connect(blockC.outputConnection); + blockA.getInput('INPUT').connection.connect(blockB.outputConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockB)); + chai.assert.isTrue(isBlockHidden(blockC)); + + blockB.outputConnection.disconnect(); + chai.assert.isFalse(isBlockHidden(blockB)); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + test('Disconnect Block with Child - Statement', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + const blockC = createRenderedBlock(this.workspace, 'stack_block'); + + blockB.nextConnection.connect(blockC.previousConnection); + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + blockA.setCollapsed(true); + assertCollapsed(blockA); + chai.assert.isTrue(isBlockHidden(blockC)); + chai.assert.isTrue(isBlockHidden(blockB)); + + blockB.previousConnection.disconnect(); + chai.assert.isFalse(isBlockHidden(blockB)); + chai.assert.isFalse(isBlockHidden(blockC)); + }); + }); + suite('Adding and Removing Block Parts', function() { + test('Add Previous Connection', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.setPreviousStatement(true); + assertCollapsed(blockA); + chai.assert.isNotNull(blockA.previousConnection); + }); + test('Add Next Connection', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.setNextStatement(true); + assertCollapsed(blockA); + chai.assert.isNotNull(blockA.nextConnection); + }); + test('Add Input', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.appendDummyInput('NAME'); + assertCollapsed(blockA); + chai.assert.isNotNull(blockA.getInput('NAME')); + }); + test('Add Field', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + const input = blockA.appendDummyInput('NAME'); + blockA.setCollapsed(true); + assertCollapsed(blockA); + input.appendField(new Blockly.FieldLabel('test'), 'FIELD'); + assertCollapsed(blockA); + const field = blockA.getField('FIELD'); + chai.assert.isNotNull(field); + chai.assert.equal(field.getText(), 'test'); + }); + test('Add Icon', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.setCommentText('test'); + assertCollapsed(blockA); + }); + test('Remove Previous Connection', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + blockA.setPreviousStatement(true); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.setPreviousStatement(false); + assertCollapsed(blockA); + chai.assert.isNull(blockA.previousConnection); + }); + test('Remove Next Connection', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + blockA.setNextStatement(true); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.setNextStatement(false); + assertCollapsed(blockA); + chai.assert.isNull(blockA.nextConnection); + }); + test('Remove Input', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + blockA.appendDummyInput('NAME'); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.removeInput('NAME'); + assertCollapsed(blockA); + chai.assert.isNull(blockA.getInput('NAME')); + }); + test('Remove Field', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + const input = blockA.appendDummyInput('NAME'); + input.appendField(new Blockly.FieldLabel('test'), 'FIELD'); + blockA.setCollapsed(true); + assertCollapsed(blockA); + input.removeField('FIELD'); + assertCollapsed(blockA); + const field = blockA.getField('FIELD'); + chai.assert.isNull(field); + }); + test('Remove Icon', function() { + const blockA = createRenderedBlock(this.workspace, 'empty_block'); + blockA.setCommentText('test'); + blockA.setCollapsed(true); + assertCollapsed(blockA); + blockA.setCommentText(null); + assertCollapsed(blockA); + }); + }); + suite('Renaming Vars', function() { + test('Simple Rename', function() { + const blockA = createRenderedBlock(this.workspace, 'variable_block'); + + blockA.setCollapsed(true); + assertCollapsed(blockA, 'x'); + + const variable = this.workspace.getVariable('x', ''); + this.workspace.renameVariableById(variable.getId(), 'y'); + assertCollapsed(blockA, 'y'); + }); + test('Coalesce, Different Case', function() { + const blockA = createRenderedBlock(this.workspace, 'variable_block'); + + blockA.setCollapsed(true); + assertCollapsed(blockA, 'x'); + + const variable = this.workspace.createVariable('y'); + this.workspace.renameVariableById(variable.getId(), 'X'); + assertCollapsed(blockA, 'X'); + }); + }); + suite('Disabled Blocks', function() { + test('Children of Collapsed Blocks Should Enable Properly', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + // Disable the block and collapse it. + blockA.setEnabled(false); + blockA.setCollapsed(true); + + // Enable the block before expanding it. + blockA.setEnabled(true); + blockA.setCollapsed(false); + + // The child blocks should be enabled. + chai.assert.isFalse(blockB.disabled); + chai.assert.isFalse(blockB.getSvgRoot().classList.contains('blocklyDisabled')); + }); + test('Children of Collapsed Block Should Not Update', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + + // Disable the block and collapse it. + blockA.setEnabled(false); + blockA.setCollapsed(true); + + const blockUpdateDisabled = sinon.stub(blockB, 'updateDisabled'); + + // Enable the block before expanding it. + blockA.setEnabled(true); + + // For performance reasons updateDisabled should not be called + // on children of collapsed blocks. + sinon.assert.notCalled(blockUpdateDisabled); + }); + test('Disabled Children of Collapsed Blocks Should Stay Disabled', function() { + const blockA = createRenderedBlock(this.workspace, 'statement_block'); + const blockB = createRenderedBlock(this.workspace, 'stack_block'); + blockA.getInput('STATEMENT').connection + .connect(blockB.previousConnection); + + // Disable the child block. + blockB.setEnabled(false); + + // Collapse and disable the parent block. + blockA.setCollapsed(false); + blockA.setEnabled(false); + + // Enable the parent block. + blockA.setEnabled(true); + blockA.setCollapsed(true); + + // Child blocks should stay disabled if they have been set. + chai.assert.isTrue(blockB.disabled); + }); + }); + }); + suite('Style', function() { + suite('Headless', function() { + setup(function() { + this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + }); + test('Set colour', function() { + this.block.setColour('20'); + chai.assert.equal(this.block.getColour(), '#a5745b'); + chai.assert.equal(this.block.colour_, this.block.getColour()); + chai.assert.equal(this.block.hue_, '20'); + }); + test('Set style', function() { + this.block.setStyle('styleOne'); + chai.assert.equal(this.block.getStyleName(), 'styleOne'); + chai.assert.isNull(this.block.hue_); + // Calling setStyle does not update the colour on a headless block. + chai.assert.equal(this.block.getColour(), '#000000'); + }); + }); + suite('Rendered', function() { + setup(function() { + this.workspace = Blockly.inject('blocklyDiv', {}); + this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + this.workspace.setTheme(new Blockly.Theme('test', { + "styleOne": { + "colourPrimary": "#000000", + "colourSecondary": "#999999", + "colourTertiary": "#4d4d4d", + "hat": '', + }, + }), {}); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + // Clear all registered themes. + Blockly.registry.TEST_ONLY.typeMap['theme'] = {}; + }); + test('Set colour hue', function() { + this.block.setColour('20'); + chai.assert.equal(this.block.getStyleName(), 'auto_#a5745b'); + chai.assert.equal(this.block.getColour(), '#a5745b'); + chai.assert.equal(this.block.colour_, this.block.getColour()); + chai.assert.equal(this.block.hue_, '20'); + }); + test('Set colour hex', function() { + this.block.setColour('#000000'); + chai.assert.equal(this.block.getStyleName(), 'auto_#000000'); + chai.assert.equal(this.block.getColour(), '#000000'); + chai.assert.equal(this.block.colour_, this.block.getColour()); + chai.assert.isNull(this.block.hue_); + }); + test('Set style', function() { + this.block.setStyle('styleOne'); + chai.assert.equal(this.block.getStyleName(), 'styleOne'); + chai.assert.equal(this.block.getColour(), '#000000'); + chai.assert.equal(this.block.colour_, this.block.getColour()); + }); + }); + }); + suite('toString', function() { + const toStringTests = [ + { + name: 'statement block', + xml: '' + + '' + + '' + + '10' + + '' + + '' + + '', + toString: 'repeat 10 times do ?', + }, + { + name: 'nested statement blocks', + xml: '' + + '' + + '' + + '10' + + '' + + '' + + '' + + '' + + '' + + '', + toString: 'repeat 10 times do if ? do ?', + }, + { + name: 'nested Boolean output blocks', + xml: '' + + '' + + '' + + 'EQ' + + '' + + '' + + 'AND' + + '' + + '' + + '' + + '' + + '', + toString: 'if ((? and ?) = ?) do ?', + }, + { + name: 'output block', + xml: '' + + 'ROOT' + + '' + + '' + + '9' + + '' + + '' + + '', + toString: 'square root 9', + }, + { + name: 'nested Number output blocks', + xml: '' + + 'ADD' + + '' + + '' + + '1' + + '' + + '' + + 'MULTIPLY' + + '' + + '' + + '10' + + '' + + '' + + '' + + '' + + '5' + + '' + + '' + + '' + + '' + + '' + + '' + + '3' + + '' + + '' + + '', + toString: '(10 × 5) + 3', + }, + { + name: 'nested String output blocks', + xml: '' + + '' + + '' + + '' + + 'Hello' + + '' + + '' + + '' + + '' + + 'World' + + '' + + '' + + '', + toString: 'create text with “ Hello ” “ World ”', + }, + { + name: 'parentheses in string literal', + xml: '' + + 'foo ( bar ) baz' + + '', + toString: '“ foo ( bar ) baz ”', + }, + ]; + // Create mocha test cases for each toString test. + toStringTests.forEach(function(t) { + test(t.name, function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(t.xml), + this.workspace); + chai.assert.equal(block.toString(), t.toString); + }); + }); + }); + + suite('Initialization', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([ + { + "type": "init_test_block", + "message0": "", + }, + ]); + }); + test('recordUndo is reset even if init throws', function() { + // The test could pass if init is never called, + // so we assert init was called to be safe. + let initCalled = false; + let recordUndoDuringInit; + Blocks['init_test_block'].init = function() { + initCalled = true; + recordUndoDuringInit = eventUtils.getRecordUndo(); + throw new Error(); + }; + chai.assert.throws(function() { + this.workspace.newBlock('init_test_block'); + }.bind(this)); + chai.assert.isFalse(recordUndoDuringInit, + 'recordUndo should be false during block init function'); + chai.assert.isTrue(eventUtils.getRecordUndo(), + 'recordUndo should be reset to true after init'); + chai.assert.isTrue(initCalled, 'expected init function to be called'); + }); + }); +}); diff --git a/tests/mocha/comment_deserialization_test.js b/tests/mocha/comment_deserialization_test.js index f3eb48dc5e1..a537ea1af1e 100644 --- a/tests/mocha/comment_deserialization_test.js +++ b/tests/mocha/comment_deserialization_test.js @@ -1,117 +1,117 @@ -/** - * @license - * Copyright 2022 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.commentDeserialization'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {simulateClick} = goog.require('Blockly.test.helpers.userInput'); - - -suite('Comment Deserialization', function() { - setup(function() { - sharedTestSetup.call(this); - Blockly.defineBlocksWithJsonArray([ - { - "type": "empty_block", - "message0": "", - "args0": [], - }, - ]); - const toolboxXml = ` - - - - test toolbox text - - - - `; - this.workspace = Blockly.inject('blocklyDiv', { - comments: true, - scrollbars: true, - trashcan: true, - maxTrashcanContents: Infinity, - toolbox: Blockly.Xml.textToDom(toolboxXml), - }); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - suite('Pattern', function() { - teardown(function() { - // Delete all blocks. - this.workspace.clear(); - }); - function createBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - block.setCommentText('test text'); - return block; - } - function assertComment(workspace, text) { - // Show comment. - const block = workspace.getAllBlocks()[0]; - block.comment.setVisible(true); - // Check comment bubble size. - const comment = block.getCommentIcon(); - const bubbleSize = comment.getBubbleSize(); - chai.assert.isNotNaN(bubbleSize.width); - chai.assert.isNotNaN(bubbleSize.height); - // Check comment text. - chai.assert.equal(comment.textarea_.value, text); - } - test('Trashcan', function() { - // Create block. - this.block = createBlock(this.workspace); - // Delete block. - this.block.checkAndDelete(); - chai.assert.equal(this.workspace.getAllBlocks().length, 0); - // Open trashcan. - simulateClick(this.workspace.trashcan.svgGroup_); - // Place from trashcan. - simulateClick(this.workspace.trashcan.flyout.svgGroup_.querySelector('.blocklyDraggable')); - chai.assert.equal(this.workspace.getAllBlocks().length, 1); - // Check comment. - assertComment(this.workspace, 'test text'); - }); - test('Undo', function() { - // Create block. - this.block = createBlock(this.workspace); - // Delete block. - this.block.checkAndDelete(); - chai.assert.equal(this.workspace.getAllBlocks().length, 0); - // Undo. - this.workspace.undo(false); - chai.assert.equal(this.workspace.getAllBlocks().length, 1); - // Check comment. - assertComment(this.workspace, 'test text'); - }); - test('Redo', function() { - // Create block. - this.block = createBlock(this.workspace); - // Undo & undo. - this.workspace.undo(false); - this.workspace.undo(false); - chai.assert.equal(this.workspace.getAllBlocks().length, 0); - // Redo & redo. - this.workspace.undo(true); - this.workspace.undo(true); - chai.assert.equal(this.workspace.getAllBlocks().length, 1); - // Check comment. - assertComment(this.workspace, 'test text'); - }); - test('Toolbox', function() { - // Place from toolbox. - const toolbox = this.workspace.getToolbox(); - simulateClick(toolbox.HtmlDiv.querySelector('.blocklyTreeRow')); - simulateClick(toolbox.getFlyout().svgGroup_.querySelector('.blocklyDraggable')); - chai.assert.equal(this.workspace.getAllBlocks().length, 1); - // Check comment. - assertComment(this.workspace, 'test toolbox text'); - }); - }); -}); +/** + * @license + * Copyright 2022 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.commentDeserialization'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {simulateClick} = goog.require('Blockly.test.helpers.userInput'); + + +suite('Comment Deserialization', function() { + setup(function() { + sharedTestSetup.call(this); + Blockly.defineBlocksWithJsonArray([ + { + "type": "empty_block", + "message0": "", + "args0": [], + }, + ]); + const toolboxXml = ` + + + + test toolbox text + + + + `; + this.workspace = Blockly.inject('blocklyDiv', { + comments: true, + scrollbars: true, + trashcan: true, + maxTrashcanContents: Infinity, + toolbox: Blockly.Xml.textToDom(toolboxXml), + }); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + suite('Pattern', function() { + teardown(function() { + // Delete all blocks. + this.workspace.clear(); + }); + function createBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + block.setCommentText('test text'); + return block; + } + function assertComment(workspace, text) { + // Show comment. + const block = workspace.getAllBlocks()[0]; + block.comment.setVisible(true); + // Check comment bubble size. + const comment = block.getCommentIcon(); + const bubbleSize = comment.getBubbleSize(); + chai.assert.isNotNaN(bubbleSize.width); + chai.assert.isNotNaN(bubbleSize.height); + // Check comment text. + chai.assert.equal(comment.textarea_.value, text); + } + test('Trashcan', function() { + // Create block. + this.block = createBlock(this.workspace); + // Delete block. + this.block.checkAndDelete(); + chai.assert.equal(this.workspace.getAllBlocks().length, 0); + // Open trashcan. + simulateClick(this.workspace.trashcan.svgGroup_); + // Place from trashcan. + simulateClick(this.workspace.trashcan.flyout.svgGroup_.querySelector('.blocklyDraggable')); + chai.assert.equal(this.workspace.getAllBlocks().length, 1); + // Check comment. + assertComment(this.workspace, 'test text'); + }); + test('Undo', function() { + // Create block. + this.block = createBlock(this.workspace); + // Delete block. + this.block.checkAndDelete(); + chai.assert.equal(this.workspace.getAllBlocks().length, 0); + // Undo. + this.workspace.undo(false); + chai.assert.equal(this.workspace.getAllBlocks().length, 1); + // Check comment. + assertComment(this.workspace, 'test text'); + }); + test('Redo', function() { + // Create block. + this.block = createBlock(this.workspace); + // Undo & undo. + this.workspace.undo(false); + this.workspace.undo(false); + chai.assert.equal(this.workspace.getAllBlocks().length, 0); + // Redo & redo. + this.workspace.undo(true); + this.workspace.undo(true); + chai.assert.equal(this.workspace.getAllBlocks().length, 1); + // Check comment. + assertComment(this.workspace, 'test text'); + }); + test('Toolbox', function() { + // Place from toolbox. + const toolbox = this.workspace.getToolbox(); + simulateClick(toolbox.HtmlDiv.querySelector('.blocklyTreeRow')); + simulateClick(toolbox.getFlyout().svgGroup_.querySelector('.blocklyDraggable')); + chai.assert.equal(this.workspace.getAllBlocks().length, 1); + // Check comment. + assertComment(this.workspace, 'test toolbox text'); + }); + }); +}); diff --git a/tests/mocha/comment_test.js b/tests/mocha/comment_test.js index afee012f659..1f682f6782f 100644 --- a/tests/mocha/comment_test.js +++ b/tests/mocha/comment_test.js @@ -1,136 +1,136 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.comments'); - -const {assertEventFired} = goog.require('Blockly.test.helpers.events'); -const eventUtils = goog.require('Blockly.Events.utils'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Comments', function() { - setup(function() { - sharedTestSetup.call(this); - Blockly.defineBlocksWithJsonArray([ - { - "type": "empty_block", - "message0": "", - "args0": [], - }, - ]); - this.workspace = Blockly.inject('blocklyDiv', { - comments: true, - scrollbars: true, - }); - this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - this.comment = new Blockly.Comment(this.block); - this.comment.computeIconLocation(); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - suite('Visibility and Editability', function() { - setup(function() { - this.block.setCommentText('test text'); - }); - - function assertEditable(comment) { - chai.assert.isNotOk(comment.paragraphElement_); - chai.assert.isOk(comment.textarea_); - chai.assert.equal(comment.textarea_.value, 'test text'); - } - function assertNotEditable(comment) { - chai.assert.isNotOk(comment.textarea_); - chai.assert.isOk(comment.paragraphElement_); - chai.assert.equal(comment.paragraphElement_.firstChild.textContent, - 'test text'); - } - test('Editable', function() { - this.comment.setVisible(true); - chai.assert.isTrue(this.comment.isVisible()); - assertEditable(this.comment); - assertEventFired( - this.eventsFireStub, Blockly.Events.BubbleOpen, - {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, this.workspace.id, - this.block.id); - }); - test('Not Editable', function() { - sinon.stub(this.block, 'isEditable').returns(false); - - this.comment.setVisible(true); - - chai.assert.isTrue(this.comment.isVisible()); - assertNotEditable(this.comment); - assertEventFired( - this.eventsFireStub, Blockly.Events.BubbleOpen, - {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, - this.workspace.id, this.block.id); - }); - test('Editable -> Not Editable', function() { - this.comment.setVisible(true); - sinon.stub(this.block, 'isEditable').returns(false); - - this.comment.updateEditable(); - - chai.assert.isTrue(this.comment.isVisible()); - assertNotEditable(this.comment); - assertEventFired( - this.eventsFireStub, Blockly.Events.BubbleOpen, - {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, - this.workspace.id, this.block.id); - }); - test('Not Editable -> Editable', function() { - const editableStub = sinon.stub(this.block, 'isEditable').returns(false); - - this.comment.setVisible(true); - - editableStub.returns(true); - - this.comment.updateEditable(); - chai.assert.isTrue(this.comment.isVisible()); - assertEditable(this.comment); - assertEventFired( - this.eventsFireStub, Blockly.Events.BubbleOpen, - {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, - this.workspace.id, this.block.id); - }); - }); - suite('Set/Get Bubble Size', function() { - teardown(function() { - sinon.restore(); - }); - function assertBubbleSize(comment, height, width) { - const size = comment.getBubbleSize(); - chai.assert.equal(size.height, height); - chai.assert.equal(size.width, width); - } - function assertBubbleSizeDefault(comment) { - assertBubbleSize(comment, 80, 160); - } - test('Set Size While Visible', function() { - this.comment.setVisible(true); - const bubbleSizeSpy = sinon.spy(this.comment.bubble_, 'setBubbleSize'); - - assertBubbleSizeDefault(this.comment); - this.comment.setBubbleSize(100, 100); - assertBubbleSize(this.comment, 100, 100); - sinon.assert.calledOnce(bubbleSizeSpy); - - this.comment.setVisible(false); - assertBubbleSize(this.comment, 100, 100); - }); - test('Set Size While Invisible', function() { - assertBubbleSizeDefault(this.comment); - this.comment.setBubbleSize(100, 100); - assertBubbleSize(this.comment, 100, 100); - - this.comment.setVisible(true); - assertBubbleSize(this.comment, 100, 100); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.comments'); + +const {assertEventFired} = goog.require('Blockly.test.helpers.events'); +const eventUtils = goog.require('Blockly.Events.utils'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Comments', function() { + setup(function() { + sharedTestSetup.call(this); + Blockly.defineBlocksWithJsonArray([ + { + "type": "empty_block", + "message0": "", + "args0": [], + }, + ]); + this.workspace = Blockly.inject('blocklyDiv', { + comments: true, + scrollbars: true, + }); + this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + this.comment = new Blockly.Comment(this.block); + this.comment.computeIconLocation(); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + suite('Visibility and Editability', function() { + setup(function() { + this.block.setCommentText('test text'); + }); + + function assertEditable(comment) { + chai.assert.isNotOk(comment.paragraphElement_); + chai.assert.isOk(comment.textarea_); + chai.assert.equal(comment.textarea_.value, 'test text'); + } + function assertNotEditable(comment) { + chai.assert.isNotOk(comment.textarea_); + chai.assert.isOk(comment.paragraphElement_); + chai.assert.equal(comment.paragraphElement_.firstChild.textContent, + 'test text'); + } + test('Editable', function() { + this.comment.setVisible(true); + chai.assert.isTrue(this.comment.isVisible()); + assertEditable(this.comment); + assertEventFired( + this.eventsFireStub, Blockly.Events.BubbleOpen, + {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, this.workspace.id, + this.block.id); + }); + test('Not Editable', function() { + sinon.stub(this.block, 'isEditable').returns(false); + + this.comment.setVisible(true); + + chai.assert.isTrue(this.comment.isVisible()); + assertNotEditable(this.comment); + assertEventFired( + this.eventsFireStub, Blockly.Events.BubbleOpen, + {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, + this.workspace.id, this.block.id); + }); + test('Editable -> Not Editable', function() { + this.comment.setVisible(true); + sinon.stub(this.block, 'isEditable').returns(false); + + this.comment.updateEditable(); + + chai.assert.isTrue(this.comment.isVisible()); + assertNotEditable(this.comment); + assertEventFired( + this.eventsFireStub, Blockly.Events.BubbleOpen, + {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, + this.workspace.id, this.block.id); + }); + test('Not Editable -> Editable', function() { + const editableStub = sinon.stub(this.block, 'isEditable').returns(false); + + this.comment.setVisible(true); + + editableStub.returns(true); + + this.comment.updateEditable(); + chai.assert.isTrue(this.comment.isVisible()); + assertEditable(this.comment); + assertEventFired( + this.eventsFireStub, Blockly.Events.BubbleOpen, + {bubbleType: 'comment', isOpen: true, type: eventUtils.BUBBLE_OPEN}, + this.workspace.id, this.block.id); + }); + }); + suite('Set/Get Bubble Size', function() { + teardown(function() { + sinon.restore(); + }); + function assertBubbleSize(comment, height, width) { + const size = comment.getBubbleSize(); + chai.assert.equal(size.height, height); + chai.assert.equal(size.width, width); + } + function assertBubbleSizeDefault(comment) { + assertBubbleSize(comment, 80, 160); + } + test('Set Size While Visible', function() { + this.comment.setVisible(true); + const bubbleSizeSpy = sinon.spy(this.comment.bubble_, 'setBubbleSize'); + + assertBubbleSizeDefault(this.comment); + this.comment.setBubbleSize(100, 100); + assertBubbleSize(this.comment, 100, 100); + sinon.assert.calledOnce(bubbleSizeSpy); + + this.comment.setVisible(false); + assertBubbleSize(this.comment, 100, 100); + }); + test('Set Size While Invisible', function() { + assertBubbleSizeDefault(this.comment); + this.comment.setBubbleSize(100, 100); + assertBubbleSize(this.comment, 100, 100); + + this.comment.setVisible(true); + assertBubbleSize(this.comment, 100, 100); + }); + }); +}); diff --git a/tests/mocha/connection_checker_test.js b/tests/mocha/connection_checker_test.js index 523fecfccfd..a266c445ec3 100644 --- a/tests/mocha/connection_checker_test.js +++ b/tests/mocha/connection_checker_test.js @@ -1,344 +1,344 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.connectionChecker'); - -const {ConnectionType} = goog.require('Blockly.ConnectionType'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Connection checker', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - suiteSetup(function() { - this.checker = new Blockly.ConnectionChecker(); - }); - suite('Safety checks', function() { - function assertReasonHelper(checker, one, two, reason) { - chai.assert.equal(checker.canConnectWithReason(one, two), reason); - // Order should not matter. - chai.assert.equal(checker.canConnectWithReason(two, one), reason); - } - - test('Target Null', function() { - const connection = new Blockly.Connection({}, ConnectionType.INPUT_VALUE); - assertReasonHelper( - this.checker, - connection, - null, - Blockly.Connection.REASON_TARGET_NULL); - }); - test('Target Self', function() { - const block = {workspace: 1}; - const connection1 = new Blockly.Connection(block, ConnectionType.INPUT_VALUE); - const connection2 = new Blockly.Connection(block, ConnectionType.OUTPUT_VALUE); - - assertReasonHelper( - this.checker, - connection1, - connection2, - Blockly.Connection.REASON_SELF_CONNECTION); - }); - test('Different Workspaces', function() { - const connection1 = new Blockly.Connection( - {workspace: 1}, ConnectionType.INPUT_VALUE); - const connection2 = new Blockly.Connection( - {workspace: 2}, ConnectionType.OUTPUT_VALUE); - - assertReasonHelper( - this.checker, - connection1, - connection2, - Blockly.Connection.REASON_DIFFERENT_WORKSPACES); - }); - suite('Types', function() { - setup(function() { - // We have to declare each separately so that the connections belong - // on different blocks. - const prevBlock = {isShadow: function() {}}; - const nextBlock = {isShadow: function() {}}; - const outBlock = {isShadow: function() {}}; - const inBlock = {isShadow: function() {}}; - this.previous = new Blockly.Connection( - prevBlock, ConnectionType.PREVIOUS_STATEMENT); - this.next = new Blockly.Connection( - nextBlock, ConnectionType.NEXT_STATEMENT); - this.output = new Blockly.Connection( - outBlock, ConnectionType.OUTPUT_VALUE); - this.input = new Blockly.Connection( - inBlock, ConnectionType.INPUT_VALUE); - }); - test('Previous, Next', function() { - assertReasonHelper( - this.checker, - this.previous, - this.next, - Blockly.Connection.CAN_CONNECT); - }); - test('Previous, Output', function() { - assertReasonHelper( - this.checker, - this.previous, - this.output, - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Previous, Input', function() { - assertReasonHelper( - this.checker, - this.previous, - this.input, - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Next, Previous', function() { - assertReasonHelper( - this.checker, - this.next, - this.previous, - Blockly.Connection.CAN_CONNECT); - }); - test('Next, Output', function() { - assertReasonHelper( - this.checker, - this.next, - this.output, - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Next, Input', function() { - assertReasonHelper( - this.checker, - this.next, - this.input, - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Output, Previous', function() { - assertReasonHelper( - this.checker, - this.previous, - this.output, - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Output, Next', function() { - assertReasonHelper( - this.checker, - this.output, - this.next, - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Output, Input', function() { - assertReasonHelper( - this.checker, - this.output, - this.input, - Blockly.Connection.CAN_CONNECT); - }); - test('Input, Previous', function() { - assertReasonHelper( - this.checker, - this.previous, - this.input, - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Input, Next', function() { - assertReasonHelper( - this.checker, - this.input, - this.next, - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Input, Output', function() { - assertReasonHelper( - this.checker, - this.input, - this.output, - Blockly.Connection.CAN_CONNECT); - }); - }); - suite('Shadows', function() { - test('Previous Shadow', function() { - const prevBlock = {isShadow: function() {return true;}}; - const nextBlock = {isShadow: function() {return false;}}; - const prev = new Blockly.Connection(prevBlock, ConnectionType.PREVIOUS_STATEMENT); - const next = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); - - assertReasonHelper( - this.checker, - prev, - next, - Blockly.Connection.CAN_CONNECT); - }); - test('Next Shadow', function() { - const prevBlock = {isShadow: function() {return false;}}; - const nextBlock = {isShadow: function() {return true;}}; - const prev = new Blockly.Connection(prevBlock, ConnectionType.PREVIOUS_STATEMENT); - const next = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); - - assertReasonHelper( - this.checker, - prev, - next, - Blockly.Connection.REASON_SHADOW_PARENT); - }); - test('Prev and Next Shadow', function() { - const prevBlock = {isShadow: function() {return true;}}; - const nextBlock = {isShadow: function() {return true;}}; - const prev = new Blockly.Connection(prevBlock, ConnectionType.PREVIOUS_STATEMENT); - const next = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); - - assertReasonHelper( - this.checker, - prev, - next, - Blockly.Connection.CAN_CONNECT); - }); - test('Output Shadow', function() { - const outBlock = {isShadow: function() {return true;}}; - const inBlock = {isShadow: function() {return false;}}; - const outCon = new Blockly.Connection(outBlock, ConnectionType.OUTPUT_VALUE); - const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); - - assertReasonHelper( - this.checker, - outCon, - inCon, - Blockly.Connection.CAN_CONNECT); - }); - test('Input Shadow', function() { - const outBlock = {isShadow: function() {return false;}}; - const inBlock = {isShadow: function() {return true;}}; - const outCon = new Blockly.Connection(outBlock, ConnectionType.OUTPUT_VALUE); - const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); - - assertReasonHelper( - this.checker, - outCon, - inCon, - Blockly.Connection.REASON_SHADOW_PARENT); - }); - test('Output and Input Shadow', function() { - const outBlock = {isShadow: function() {return true;}}; - const inBlock = {isShadow: function() {return true;}}; - const outCon = new Blockly.Connection(outBlock, ConnectionType.OUTPUT_VALUE); - const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); - - assertReasonHelper( - this.checker, - outCon, - inCon, - Blockly.Connection.CAN_CONNECT); - }); - }); - suite('Output and Previous', function() { - /** - * Update two connections to target each other. - * @param {Connection} first The first connection to update. - * @param {Connection} second The second connection to update. - */ - const connectReciprocally = function(first, second) { - if (!first || !second) { - throw Error('Cannot connect null connections.'); - } - first.targetConnection = second; - second.targetConnection = first; - }; - test('Output connected, adding previous', function() { - const outBlock = { - isShadow: function() { - }, - }; - const inBlock = { - isShadow: function() { - }, - }; - const outCon = new Blockly.Connection(outBlock, ConnectionType.OUTPUT_VALUE); - const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); - outBlock.outputConnection = outCon; - inBlock.inputConnection = inCon; - connectReciprocally(inCon, outCon); - const prevCon = new Blockly.Connection(outBlock, ConnectionType.PREVIOUS_STATEMENT); - const nextBlock = { - isShadow: function() { - }, - }; - const nextCon = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); - - assertReasonHelper( - this.checker, - prevCon, - nextCon, - Blockly.Connection.REASON_PREVIOUS_AND_OUTPUT); - }); - test('Previous connected, adding output', function() { - const prevBlock = { - isShadow: function() { - }, - }; - const nextBlock = { - isShadow: function() { - }, - }; - const prevCon = new Blockly.Connection(prevBlock, ConnectionType.PREVIOUS_STATEMENT); - const nextCon = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); - prevBlock.previousConnection = prevCon; - nextBlock.nextConnection = nextCon; - connectReciprocally(prevCon, nextCon); - const outCon = new Blockly.Connection(prevBlock, ConnectionType.OUTPUT_VALUE); - const inBlock = { - isShadow: function() { - }, - }; - const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); - - assertReasonHelper( - this.checker, - outCon, - inCon, - Blockly.Connection.REASON_PREVIOUS_AND_OUTPUT); - }); - }); - }); - suite('Check Types', function() { - setup(function() { - this.con1 = new Blockly.Connection({}, ConnectionType.PREVIOUS_STATEMENT); - this.con2 = new Blockly.Connection({}, ConnectionType.NEXT_STATEMENT); - }); - function assertCheckTypes(checker, one, two) { - chai.assert.isTrue(checker.doTypeChecks(one, two)); - // Order should not matter. - chai.assert.isTrue(checker.doTypeChecks(one, two)); - } - test('No Types', function() { - assertCheckTypes(this.checker, this.con1, this.con2); - }); - test('Same Type', function() { - this.con1.setCheck('type1'); - this.con2.setCheck('type1'); - assertCheckTypes(this.checker, this.con1, this.con2); - }); - test('Same Types', function() { - this.con1.setCheck(['type1', 'type2']); - this.con2.setCheck(['type1', 'type2']); - assertCheckTypes(this.checker, this.con1, this.con2); - }); - test('Single Same Type', function() { - this.con1.setCheck(['type1', 'type2']); - this.con2.setCheck(['type1', 'type3']); - assertCheckTypes(this.checker, this.con1, this.con2); - }); - test('One Typed, One Promiscuous', function() { - this.con1.setCheck('type1'); - assertCheckTypes(this.checker, this.con1, this.con2); - }); - test('No Compatible Types', function() { - this.con1.setCheck('type1'); - this.con2.setCheck('type2'); - chai.assert.isFalse(this.checker.doTypeChecks(this.con1, this.con2)); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.connectionChecker'); + +const {ConnectionType} = goog.require('Blockly.ConnectionType'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Connection checker', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + suiteSetup(function() { + this.checker = new Blockly.ConnectionChecker(); + }); + suite('Safety checks', function() { + function assertReasonHelper(checker, one, two, reason) { + chai.assert.equal(checker.canConnectWithReason(one, two), reason); + // Order should not matter. + chai.assert.equal(checker.canConnectWithReason(two, one), reason); + } + + test('Target Null', function() { + const connection = new Blockly.Connection({}, ConnectionType.INPUT_VALUE); + assertReasonHelper( + this.checker, + connection, + null, + Blockly.Connection.REASON_TARGET_NULL); + }); + test('Target Self', function() { + const block = {workspace: 1}; + const connection1 = new Blockly.Connection(block, ConnectionType.INPUT_VALUE); + const connection2 = new Blockly.Connection(block, ConnectionType.OUTPUT_VALUE); + + assertReasonHelper( + this.checker, + connection1, + connection2, + Blockly.Connection.REASON_SELF_CONNECTION); + }); + test('Different Workspaces', function() { + const connection1 = new Blockly.Connection( + {workspace: 1}, ConnectionType.INPUT_VALUE); + const connection2 = new Blockly.Connection( + {workspace: 2}, ConnectionType.OUTPUT_VALUE); + + assertReasonHelper( + this.checker, + connection1, + connection2, + Blockly.Connection.REASON_DIFFERENT_WORKSPACES); + }); + suite('Types', function() { + setup(function() { + // We have to declare each separately so that the connections belong + // on different blocks. + const prevBlock = {isShadow: function() {}}; + const nextBlock = {isShadow: function() {}}; + const outBlock = {isShadow: function() {}}; + const inBlock = {isShadow: function() {}}; + this.previous = new Blockly.Connection( + prevBlock, ConnectionType.PREVIOUS_STATEMENT); + this.next = new Blockly.Connection( + nextBlock, ConnectionType.NEXT_STATEMENT); + this.output = new Blockly.Connection( + outBlock, ConnectionType.OUTPUT_VALUE); + this.input = new Blockly.Connection( + inBlock, ConnectionType.INPUT_VALUE); + }); + test('Previous, Next', function() { + assertReasonHelper( + this.checker, + this.previous, + this.next, + Blockly.Connection.CAN_CONNECT); + }); + test('Previous, Output', function() { + assertReasonHelper( + this.checker, + this.previous, + this.output, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Previous, Input', function() { + assertReasonHelper( + this.checker, + this.previous, + this.input, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Next, Previous', function() { + assertReasonHelper( + this.checker, + this.next, + this.previous, + Blockly.Connection.CAN_CONNECT); + }); + test('Next, Output', function() { + assertReasonHelper( + this.checker, + this.next, + this.output, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Next, Input', function() { + assertReasonHelper( + this.checker, + this.next, + this.input, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Output, Previous', function() { + assertReasonHelper( + this.checker, + this.previous, + this.output, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Output, Next', function() { + assertReasonHelper( + this.checker, + this.output, + this.next, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Output, Input', function() { + assertReasonHelper( + this.checker, + this.output, + this.input, + Blockly.Connection.CAN_CONNECT); + }); + test('Input, Previous', function() { + assertReasonHelper( + this.checker, + this.previous, + this.input, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Input, Next', function() { + assertReasonHelper( + this.checker, + this.input, + this.next, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Input, Output', function() { + assertReasonHelper( + this.checker, + this.input, + this.output, + Blockly.Connection.CAN_CONNECT); + }); + }); + suite('Shadows', function() { + test('Previous Shadow', function() { + const prevBlock = {isShadow: function() {return true;}}; + const nextBlock = {isShadow: function() {return false;}}; + const prev = new Blockly.Connection(prevBlock, ConnectionType.PREVIOUS_STATEMENT); + const next = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); + + assertReasonHelper( + this.checker, + prev, + next, + Blockly.Connection.CAN_CONNECT); + }); + test('Next Shadow', function() { + const prevBlock = {isShadow: function() {return false;}}; + const nextBlock = {isShadow: function() {return true;}}; + const prev = new Blockly.Connection(prevBlock, ConnectionType.PREVIOUS_STATEMENT); + const next = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); + + assertReasonHelper( + this.checker, + prev, + next, + Blockly.Connection.REASON_SHADOW_PARENT); + }); + test('Prev and Next Shadow', function() { + const prevBlock = {isShadow: function() {return true;}}; + const nextBlock = {isShadow: function() {return true;}}; + const prev = new Blockly.Connection(prevBlock, ConnectionType.PREVIOUS_STATEMENT); + const next = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); + + assertReasonHelper( + this.checker, + prev, + next, + Blockly.Connection.CAN_CONNECT); + }); + test('Output Shadow', function() { + const outBlock = {isShadow: function() {return true;}}; + const inBlock = {isShadow: function() {return false;}}; + const outCon = new Blockly.Connection(outBlock, ConnectionType.OUTPUT_VALUE); + const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); + + assertReasonHelper( + this.checker, + outCon, + inCon, + Blockly.Connection.CAN_CONNECT); + }); + test('Input Shadow', function() { + const outBlock = {isShadow: function() {return false;}}; + const inBlock = {isShadow: function() {return true;}}; + const outCon = new Blockly.Connection(outBlock, ConnectionType.OUTPUT_VALUE); + const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); + + assertReasonHelper( + this.checker, + outCon, + inCon, + Blockly.Connection.REASON_SHADOW_PARENT); + }); + test('Output and Input Shadow', function() { + const outBlock = {isShadow: function() {return true;}}; + const inBlock = {isShadow: function() {return true;}}; + const outCon = new Blockly.Connection(outBlock, ConnectionType.OUTPUT_VALUE); + const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); + + assertReasonHelper( + this.checker, + outCon, + inCon, + Blockly.Connection.CAN_CONNECT); + }); + }); + suite('Output and Previous', function() { + /** + * Update two connections to target each other. + * @param {Connection} first The first connection to update. + * @param {Connection} second The second connection to update. + */ + const connectReciprocally = function(first, second) { + if (!first || !second) { + throw Error('Cannot connect null connections.'); + } + first.targetConnection = second; + second.targetConnection = first; + }; + test('Output connected, adding previous', function() { + const outBlock = { + isShadow: function() { + }, + }; + const inBlock = { + isShadow: function() { + }, + }; + const outCon = new Blockly.Connection(outBlock, ConnectionType.OUTPUT_VALUE); + const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); + outBlock.outputConnection = outCon; + inBlock.inputConnection = inCon; + connectReciprocally(inCon, outCon); + const prevCon = new Blockly.Connection(outBlock, ConnectionType.PREVIOUS_STATEMENT); + const nextBlock = { + isShadow: function() { + }, + }; + const nextCon = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); + + assertReasonHelper( + this.checker, + prevCon, + nextCon, + Blockly.Connection.REASON_PREVIOUS_AND_OUTPUT); + }); + test('Previous connected, adding output', function() { + const prevBlock = { + isShadow: function() { + }, + }; + const nextBlock = { + isShadow: function() { + }, + }; + const prevCon = new Blockly.Connection(prevBlock, ConnectionType.PREVIOUS_STATEMENT); + const nextCon = new Blockly.Connection(nextBlock, ConnectionType.NEXT_STATEMENT); + prevBlock.previousConnection = prevCon; + nextBlock.nextConnection = nextCon; + connectReciprocally(prevCon, nextCon); + const outCon = new Blockly.Connection(prevBlock, ConnectionType.OUTPUT_VALUE); + const inBlock = { + isShadow: function() { + }, + }; + const inCon = new Blockly.Connection(inBlock, ConnectionType.INPUT_VALUE); + + assertReasonHelper( + this.checker, + outCon, + inCon, + Blockly.Connection.REASON_PREVIOUS_AND_OUTPUT); + }); + }); + }); + suite('Check Types', function() { + setup(function() { + this.con1 = new Blockly.Connection({}, ConnectionType.PREVIOUS_STATEMENT); + this.con2 = new Blockly.Connection({}, ConnectionType.NEXT_STATEMENT); + }); + function assertCheckTypes(checker, one, two) { + chai.assert.isTrue(checker.doTypeChecks(one, two)); + // Order should not matter. + chai.assert.isTrue(checker.doTypeChecks(one, two)); + } + test('No Types', function() { + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('Same Type', function() { + this.con1.setCheck('type1'); + this.con2.setCheck('type1'); + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('Same Types', function() { + this.con1.setCheck(['type1', 'type2']); + this.con2.setCheck(['type1', 'type2']); + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('Single Same Type', function() { + this.con1.setCheck(['type1', 'type2']); + this.con2.setCheck(['type1', 'type3']); + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('One Typed, One Promiscuous', function() { + this.con1.setCheck('type1'); + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('No Compatible Types', function() { + this.con1.setCheck('type1'); + this.con2.setCheck('type2'); + chai.assert.isFalse(this.checker.doTypeChecks(this.con1, this.con2)); + }); + }); +}); diff --git a/tests/mocha/connection_db_test.js b/tests/mocha/connection_db_test.js index cdc343bd559..0f4c705727c 100644 --- a/tests/mocha/connection_db_test.js +++ b/tests/mocha/connection_db_test.js @@ -1,271 +1,271 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.connectionDb'); - -const {ConnectionType} = goog.require('Blockly.ConnectionType'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Connection Database', function() { - setup(function() { - sharedTestSetup.call(this); - this.database = new Blockly.ConnectionDB(new Blockly.ConnectionChecker()); - - this.assertOrder = function() { - const length = this.database.connections_.length; - for (let i = 1; i < length; i++) { - chai.assert.isAtMost(this.database.connections_[i - 1].y, - this.database.connections_[i].y); - } - }; - this.createConnection = function(x, y, type, opt_database) { - const workspace = { - connectionDBList: [], - }; - workspace.connectionDBList[type] = opt_database || this.database; - const connection = new Blockly.RenderedConnection( - {workspace: workspace}, type); - connection.x = x; - connection.y = y; - return connection; - }; - this.createSimpleTestConnections = function() { - for (let i = 0; i < 10; i++) { - const connection = this.createConnection(0, i, ConnectionType.PREVIOUS_STATEMENT); - this.database.addConnection(connection, i); - } - }; - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - test('Add Connection', function() { - const y2 = {y: 2}; - const y4 = {y: 4}; - const y1 = {y: 1}; - const y3a = {y: 3}; - const y3b = {y: 3}; - - this.database.addConnection(y2, 2); - chai.assert.sameOrderedMembers( - this.database.connections_, [y2]); - - this.database.addConnection(y4, 4); - chai.assert.sameOrderedMembers( - this.database.connections_, [y2, y4]); - - this.database.addConnection(y1, 1); - chai.assert.sameOrderedMembers( - this.database.connections_, [y1, y2, y4]); - - this.database.addConnection(y3a, 3); - chai.assert.sameOrderedMembers( - this.database.connections_, [y1, y2, y3a, y4]); - - this.database.addConnection(y3b, 3); - chai.assert.sameOrderedMembers( - this.database.connections_, [y1, y2, y3b, y3a, y4]); - }); - test('Remove Connection', function() { - const y2 = {y: 2}; - const y4 = {y: 4}; - const y1 = {y: 1}; - const y3a = {y: 3}; - const y3b = {y: 3}; - const y3c = {y: 3}; - - this.database.addConnection(y2, 2); - this.database.addConnection(y4, 4); - this.database.addConnection(y1, 1); - this.database.addConnection(y3c, 3); - this.database.addConnection(y3b, 3); - this.database.addConnection(y3a, 3); - - chai.assert.sameOrderedMembers( - this.database.connections_, [y1, y2, y3a, y3b, y3c, y4]); - - this.database.removeConnection(y2, 2); - chai.assert.sameOrderedMembers( - this.database.connections_, [y1, y3a, y3b, y3c, y4]); - - this.database.removeConnection(y4, 4); - chai.assert.sameOrderedMembers( - this.database.connections_, [y1, y3a, y3b, y3c]); - - this.database.removeConnection(y1, 1); - chai.assert.sameOrderedMembers( - this.database.connections_, [y3a, y3b, y3c]); - - this.database.removeConnection(y3a, 3); - chai.assert.sameOrderedMembers( - this.database.connections_, [y3b, y3c]); - - this.database.removeConnection(y3c, 3); - chai.assert.sameOrderedMembers( - this.database.connections_, [y3b]); - - this.database.removeConnection(y3b, 3); - chai.assert.isEmpty(this.database.connections_); - }); - suite('Get Neighbors', function() { - test('Empty Database', function() { - const connection = this.createConnection(0, 0, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - chai.assert.isEmpty(this.database.getNeighbours(connection), 100); - }); - test('Block At Top', function() { - this.createSimpleTestConnections(); - - const checkConnection = this.createConnection(0, 0, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - const neighbors = this.database.getNeighbours(checkConnection, 4); - chai.assert.sameMembers(neighbors, this.database.connections_.slice(0, 5)); - }); - test('Block In Middle', function() { - this.createSimpleTestConnections(); - - const checkConnection = this.createConnection(0, 4, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - const neighbors = this.database.getNeighbours(checkConnection, 2); - chai.assert.sameMembers(neighbors, this.database.connections_.slice(2, 7)); - }); - test('Block At End', function() { - this.createSimpleTestConnections(); - - const checkConnection = this.createConnection(0, 9, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - const neighbors = this.database.getNeighbours(checkConnection, 4); - chai.assert.sameMembers(neighbors, this.database.connections_.slice(5, 10)); - }); - test('Out of Range X', function() { - this.createSimpleTestConnections(); - - const checkConnection = this.createConnection(10, 9, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - const neighbors = this.database.getNeighbours(checkConnection, 4); - chai.assert.isEmpty(neighbors); - }); - test('Out of Range Y', function() { - this.createSimpleTestConnections(); - - const checkConnection = this.createConnection(0, 19, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - const neighbors = this.database.getNeighbours(checkConnection, 4); - chai.assert.isEmpty(neighbors); - }); - test('Out of Range Diagonal', function() { - this.createSimpleTestConnections(); - - const checkConnection = this.createConnection(-2, -2, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - const neighbors = this.database.getNeighbours(checkConnection, 2); - chai.assert.isEmpty(neighbors); - }); - }); - suite('Ordering', function() { - test('Simple', function() { - for (let i = 0; i < 10; i++) { - const connection = this.createConnection(0, i, ConnectionType.NEXT_STATEMENT); - this.database.addConnection(connection, i); - } - this.assertOrder(); - }); - test('Quasi-Random', function() { - const xCoords = [-29, -47, -77, 2, 43, 34, -59, -52, -90, -36, -91, 38, - 87, -20, 60, 4, -57, 65, -37, -81, 57, 58, -96, 1, 67, -79, 34, 93, - -90, -99, -62, 4, 11, -36, -51, -72, 3, -50, -24, -45, -92, -38, 37, - 24, -47, -73, 79, -20, 99, 43, -10, -87, 19, 35, -62, -36, 49, 86, - -24, -47, -89, 33, -44, 25, -73, -91, 85, 6, 0, 89, -94, 36, -35, 84, - -9, 96, -21, 52, 10, -95, 7, -67, -70, 62, 9, -40, -95, -9, -94, 55, - 57, -96, 55, 8, -48, -57, -87, 81, 23, 65]; - const yCoords = [-81, 82, 5, 47, 30, 57, -12, 28, 38, 92, -25, -20, 23, - -51, 73, -90, 8, 28, -51, -15, 81, -60, -6, -16, 77, -62, -42, -24, - 35, 95, -46, -7, 61, -16, 14, 91, 57, -38, 27, -39, 92, 47, -98, 11, - -33, -72, 64, 38, -64, -88, -35, -59, -76, -94, 45, -25, -100, -95, - 63, -97, 45, 98, 99, 34, 27, 52, -18, -45, 66, -32, -38, 70, -73, - -23, 5, -2, -13, -9, 48, 74, -97, -11, 35, -79, -16, -77, 83, -57, - -53, 35, -44, 100, -27, -15, 5, 39, 33, -19, -20, -95]; - - const length = xCoords.length; - for (let i = 0; i < length; i++) { - const connection = this.createConnection(xCoords[i], yCoords[i], - ConnectionType.NEXT_STATEMENT); - this.database.addConnection(connection, yCoords[i]); - } - this.assertOrder(); - }); - }); - - suite('Search For Closest', function() { - setup(function() { - // Ignore type checks. - sinon.stub(this.database.connectionChecker_, 'doTypeChecks') - .returns(true); - // Ignore safety checks. - sinon.stub(this.database.connectionChecker_, 'doSafetyChecks') - .returns(Blockly.Connection.CAN_CONNECT); - // Skip everything but the distance checks. - sinon.stub(this.database.connectionChecker_, 'doDragChecks') - .callsFake(function(a, b, distance) { - return a.distanceFrom(b) <= distance; - }); - - this.createCheckConnection = function(x, y) { - const checkConnection = this.createConnection(x, y, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - return checkConnection; - }; - }); - test('Empty Database', function() { - const checkConnection = this.createConnection(0, 0, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - chai.assert.isNull(this.database.searchForClosest( - checkConnection, 100, {x: 0, y: 0}).connection); - }); - test('Too Far', function() { - const connection = this.createConnection(0, 100, ConnectionType.PREVIOUS_STATEMENT); - this.database.addConnection(connection, 100); - - const checkConnection = this.createConnection(0, 0, ConnectionType.NEXT_STATEMENT, - new Blockly.ConnectionDB()); - chai.assert.isNull(this.database.searchForClosest( - checkConnection, 50, {x: 0, y: 0}).connection); - }); - test('Single in Range', function() { - this.createSimpleTestConnections(); - - const checkConnection = this.createCheckConnection(0, 14); - - const last = this.database.connections_[9]; - const closest = this.database.searchForClosest( - checkConnection, 5, {x: 0, y: 0}).connection; - chai.assert.equal(last, closest); - }); - test('Many in Range', function() { - this.createSimpleTestConnections(); - - const checkConnection = this.createCheckConnection(0, 10); - - const last = this.database.connections_[9]; - const closest = this.database.searchForClosest( - checkConnection, 5, {x: 0, y: 0}).connection; - chai.assert.equal(last, closest); - }); - test('No Y-Coord Priority', function() { - const connection1 = this.createConnection(6, 6, ConnectionType.PREVIOUS_STATEMENT); - this.database.addConnection(connection1, 6); - const connection2 = this.createConnection(5, 5, ConnectionType.PREVIOUS_STATEMENT); - this.database.addConnection(connection2, 5); - - const checkConnection = this.createCheckConnection(4, 6); - - const closest = this.database.searchForClosest( - checkConnection, 3, {x: 0, y: 0}).connection; - chai.assert.equal(connection2, closest); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.connectionDb'); + +const {ConnectionType} = goog.require('Blockly.ConnectionType'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Connection Database', function() { + setup(function() { + sharedTestSetup.call(this); + this.database = new Blockly.ConnectionDB(new Blockly.ConnectionChecker()); + + this.assertOrder = function() { + const length = this.database.connections_.length; + for (let i = 1; i < length; i++) { + chai.assert.isAtMost(this.database.connections_[i - 1].y, + this.database.connections_[i].y); + } + }; + this.createConnection = function(x, y, type, opt_database) { + const workspace = { + connectionDBList: [], + }; + workspace.connectionDBList[type] = opt_database || this.database; + const connection = new Blockly.RenderedConnection( + {workspace: workspace}, type); + connection.x = x; + connection.y = y; + return connection; + }; + this.createSimpleTestConnections = function() { + for (let i = 0; i < 10; i++) { + const connection = this.createConnection(0, i, ConnectionType.PREVIOUS_STATEMENT); + this.database.addConnection(connection, i); + } + }; + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + test('Add Connection', function() { + const y2 = {y: 2}; + const y4 = {y: 4}; + const y1 = {y: 1}; + const y3a = {y: 3}; + const y3b = {y: 3}; + + this.database.addConnection(y2, 2); + chai.assert.sameOrderedMembers( + this.database.connections_, [y2]); + + this.database.addConnection(y4, 4); + chai.assert.sameOrderedMembers( + this.database.connections_, [y2, y4]); + + this.database.addConnection(y1, 1); + chai.assert.sameOrderedMembers( + this.database.connections_, [y1, y2, y4]); + + this.database.addConnection(y3a, 3); + chai.assert.sameOrderedMembers( + this.database.connections_, [y1, y2, y3a, y4]); + + this.database.addConnection(y3b, 3); + chai.assert.sameOrderedMembers( + this.database.connections_, [y1, y2, y3b, y3a, y4]); + }); + test('Remove Connection', function() { + const y2 = {y: 2}; + const y4 = {y: 4}; + const y1 = {y: 1}; + const y3a = {y: 3}; + const y3b = {y: 3}; + const y3c = {y: 3}; + + this.database.addConnection(y2, 2); + this.database.addConnection(y4, 4); + this.database.addConnection(y1, 1); + this.database.addConnection(y3c, 3); + this.database.addConnection(y3b, 3); + this.database.addConnection(y3a, 3); + + chai.assert.sameOrderedMembers( + this.database.connections_, [y1, y2, y3a, y3b, y3c, y4]); + + this.database.removeConnection(y2, 2); + chai.assert.sameOrderedMembers( + this.database.connections_, [y1, y3a, y3b, y3c, y4]); + + this.database.removeConnection(y4, 4); + chai.assert.sameOrderedMembers( + this.database.connections_, [y1, y3a, y3b, y3c]); + + this.database.removeConnection(y1, 1); + chai.assert.sameOrderedMembers( + this.database.connections_, [y3a, y3b, y3c]); + + this.database.removeConnection(y3a, 3); + chai.assert.sameOrderedMembers( + this.database.connections_, [y3b, y3c]); + + this.database.removeConnection(y3c, 3); + chai.assert.sameOrderedMembers( + this.database.connections_, [y3b]); + + this.database.removeConnection(y3b, 3); + chai.assert.isEmpty(this.database.connections_); + }); + suite('Get Neighbors', function() { + test('Empty Database', function() { + const connection = this.createConnection(0, 0, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + chai.assert.isEmpty(this.database.getNeighbours(connection), 100); + }); + test('Block At Top', function() { + this.createSimpleTestConnections(); + + const checkConnection = this.createConnection(0, 0, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + const neighbors = this.database.getNeighbours(checkConnection, 4); + chai.assert.sameMembers(neighbors, this.database.connections_.slice(0, 5)); + }); + test('Block In Middle', function() { + this.createSimpleTestConnections(); + + const checkConnection = this.createConnection(0, 4, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + const neighbors = this.database.getNeighbours(checkConnection, 2); + chai.assert.sameMembers(neighbors, this.database.connections_.slice(2, 7)); + }); + test('Block At End', function() { + this.createSimpleTestConnections(); + + const checkConnection = this.createConnection(0, 9, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + const neighbors = this.database.getNeighbours(checkConnection, 4); + chai.assert.sameMembers(neighbors, this.database.connections_.slice(5, 10)); + }); + test('Out of Range X', function() { + this.createSimpleTestConnections(); + + const checkConnection = this.createConnection(10, 9, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + const neighbors = this.database.getNeighbours(checkConnection, 4); + chai.assert.isEmpty(neighbors); + }); + test('Out of Range Y', function() { + this.createSimpleTestConnections(); + + const checkConnection = this.createConnection(0, 19, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + const neighbors = this.database.getNeighbours(checkConnection, 4); + chai.assert.isEmpty(neighbors); + }); + test('Out of Range Diagonal', function() { + this.createSimpleTestConnections(); + + const checkConnection = this.createConnection(-2, -2, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + const neighbors = this.database.getNeighbours(checkConnection, 2); + chai.assert.isEmpty(neighbors); + }); + }); + suite('Ordering', function() { + test('Simple', function() { + for (let i = 0; i < 10; i++) { + const connection = this.createConnection(0, i, ConnectionType.NEXT_STATEMENT); + this.database.addConnection(connection, i); + } + this.assertOrder(); + }); + test('Quasi-Random', function() { + const xCoords = [-29, -47, -77, 2, 43, 34, -59, -52, -90, -36, -91, 38, + 87, -20, 60, 4, -57, 65, -37, -81, 57, 58, -96, 1, 67, -79, 34, 93, + -90, -99, -62, 4, 11, -36, -51, -72, 3, -50, -24, -45, -92, -38, 37, + 24, -47, -73, 79, -20, 99, 43, -10, -87, 19, 35, -62, -36, 49, 86, + -24, -47, -89, 33, -44, 25, -73, -91, 85, 6, 0, 89, -94, 36, -35, 84, + -9, 96, -21, 52, 10, -95, 7, -67, -70, 62, 9, -40, -95, -9, -94, 55, + 57, -96, 55, 8, -48, -57, -87, 81, 23, 65]; + const yCoords = [-81, 82, 5, 47, 30, 57, -12, 28, 38, 92, -25, -20, 23, + -51, 73, -90, 8, 28, -51, -15, 81, -60, -6, -16, 77, -62, -42, -24, + 35, 95, -46, -7, 61, -16, 14, 91, 57, -38, 27, -39, 92, 47, -98, 11, + -33, -72, 64, 38, -64, -88, -35, -59, -76, -94, 45, -25, -100, -95, + 63, -97, 45, 98, 99, 34, 27, 52, -18, -45, 66, -32, -38, 70, -73, + -23, 5, -2, -13, -9, 48, 74, -97, -11, 35, -79, -16, -77, 83, -57, + -53, 35, -44, 100, -27, -15, 5, 39, 33, -19, -20, -95]; + + const length = xCoords.length; + for (let i = 0; i < length; i++) { + const connection = this.createConnection(xCoords[i], yCoords[i], + ConnectionType.NEXT_STATEMENT); + this.database.addConnection(connection, yCoords[i]); + } + this.assertOrder(); + }); + }); + + suite('Search For Closest', function() { + setup(function() { + // Ignore type checks. + sinon.stub(this.database.connectionChecker_, 'doTypeChecks') + .returns(true); + // Ignore safety checks. + sinon.stub(this.database.connectionChecker_, 'doSafetyChecks') + .returns(Blockly.Connection.CAN_CONNECT); + // Skip everything but the distance checks. + sinon.stub(this.database.connectionChecker_, 'doDragChecks') + .callsFake(function(a, b, distance) { + return a.distanceFrom(b) <= distance; + }); + + this.createCheckConnection = function(x, y) { + const checkConnection = this.createConnection(x, y, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + return checkConnection; + }; + }); + test('Empty Database', function() { + const checkConnection = this.createConnection(0, 0, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + chai.assert.isNull(this.database.searchForClosest( + checkConnection, 100, {x: 0, y: 0}).connection); + }); + test('Too Far', function() { + const connection = this.createConnection(0, 100, ConnectionType.PREVIOUS_STATEMENT); + this.database.addConnection(connection, 100); + + const checkConnection = this.createConnection(0, 0, ConnectionType.NEXT_STATEMENT, + new Blockly.ConnectionDB()); + chai.assert.isNull(this.database.searchForClosest( + checkConnection, 50, {x: 0, y: 0}).connection); + }); + test('Single in Range', function() { + this.createSimpleTestConnections(); + + const checkConnection = this.createCheckConnection(0, 14); + + const last = this.database.connections_[9]; + const closest = this.database.searchForClosest( + checkConnection, 5, {x: 0, y: 0}).connection; + chai.assert.equal(last, closest); + }); + test('Many in Range', function() { + this.createSimpleTestConnections(); + + const checkConnection = this.createCheckConnection(0, 10); + + const last = this.database.connections_[9]; + const closest = this.database.searchForClosest( + checkConnection, 5, {x: 0, y: 0}).connection; + chai.assert.equal(last, closest); + }); + test('No Y-Coord Priority', function() { + const connection1 = this.createConnection(6, 6, ConnectionType.PREVIOUS_STATEMENT); + this.database.addConnection(connection1, 6); + const connection2 = this.createConnection(5, 5, ConnectionType.PREVIOUS_STATEMENT); + this.database.addConnection(connection2, 5); + + const checkConnection = this.createCheckConnection(4, 6); + + const closest = this.database.searchForClosest( + checkConnection, 3, {x: 0, y: 0}).connection; + chai.assert.equal(connection2, closest); + }); + }); +}); diff --git a/tests/mocha/connection_test.js b/tests/mocha/connection_test.js index 37bca1240fe..4031feb603d 100644 --- a/tests/mocha/connection_test.js +++ b/tests/mocha/connection_test.js @@ -1,3471 +1,3471 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.connection'); - -const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {defineRowBlock, defineStatementBlock, defineStackBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); - - -suite('Connection', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = sinon.createStubInstance(Blockly.Workspace); - this.workspace.connectionChecker = new Blockly.ConnectionChecker(); - this.createConnection = function(type) { - const block = { - workspace: this.workspace, - isShadow: function() {return false;}, - }; - const connection = new Blockly.Connection(block, type); - return connection; - }; - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('Set Shadow', function() { - function assertBlockMatches(block, isShadow, opt_id) { - chai.assert.equal(block.isShadow(), isShadow, - `expected block ${block.id} to ${isShadow ? '' : 'not'} be a shadow`); - if (opt_id) { - chai.assert.equal(block.id, opt_id); - } - } - - function assertInputHasBlock(parent, inputName, isShadow, opt_name) { - const block = parent.getInputTargetBlock(inputName); - chai.assert.exists(block, - `expected block ${opt_name || ''} to be attached to ${inputName}`); - assertBlockMatches(block, isShadow, opt_name); - } - - function assertNextHasBlock(parent, isShadow, opt_name) { - const block = parent.getNextBlock(); - chai.assert.exists(block, - `expected block ${opt_name || ''} to be attached to next connection`); - assertBlockMatches(block, isShadow, opt_name); - } - - function assertInputNotHasBlock(parent, inputName) { - const block = parent.getInputTargetBlock(inputName); - chai.assert.notExists(block, - `expected block ${block && block.id} to not be attached to ${inputName}`); - } - - function assertNextNotHasBlock(parent) { - const block = parent.getNextBlock(); - chai.assert.notExists(block, - `expected block ${block && block.id} to not be attached to next connection`); - } - - function assertSerialization(block, jso, xmlText) { - const actualJso = Blockly.serialization.blocks - .save(block, {addNextBlocks: true}); - const actualXml = Blockly.Xml.domToText(Blockly.Xml.blockToDom(block)); - chai.assert.deepEqual(actualJso, jso); - chai.assert.equal(actualXml, xmlText); - } - - const testSuites = [ - { - title: 'Rendered', - createWorkspace: () => { - return Blockly.inject('blocklyDiv'); - }, - }, - { - title: 'Headless', - createWorkspace: () => { - return new Blockly.Workspace(); - }, - }, - ]; - - testSuites.forEach((testSuite) => { - // Create a suite for each suite. - suite(testSuite.title, function() { - setup(function() { - this.workspace = testSuite.createWorkspace(); - - defineRowBlock(); - defineStatementBlock(); - defineStackBlock(); - - createGenUidStubWithReturns( - new Array(30).fill().map((_, i) => 'id' + i)); - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - suite('setShadowDom', function() { - suite('Add - No Block Connected', function() { - // These are defined separately in each suite. - function createRowBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - return block; - } - - function createStatementBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - return block; - } - - function createStackBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - return block; - } - - test('Value', function() { - const parent = createRowBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' - ); - parent.getInput('INPUT').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'INPUT', true); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Value', function() { - const parent = createRowBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - parent.getInput('INPUT').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'INPUT', true); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id2', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' - ); - parent.getInput('NAME').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'NAME', true); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Statement', function() { - const parent = createStatementBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - parent.getInput('NAME').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'NAME', true); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id2', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' - ); - parent.nextConnection.setShadowDom(xml); - assertNextHasBlock(parent, true); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Next', function() { - const parent = createStackBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - parent.nextConnection.setShadowDom(xml); - assertNextHasBlock(parent, true); - assertNextHasBlock(parent.getNextBlock(), true); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id2', - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - }); - - suite('Add - With Block Connected', function() { - // These are defined separately in each suite. - function createRowBlocks(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ), workspace); - return block; - } - - function createStatementBlocks(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ), workspace); - return block; - } - - function createStackBlocks(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ), workspace); - return block; - } - - test('Value', function() { - const parent = createRowBlocks(this.workspace); - const xml = Blockly.Xml.textToDom( - '' - ); - parent.getInput('INPUT').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'INPUT', false); - parent.getInput('INPUT').connection.disconnect(); - assertInputHasBlock(parent, 'INPUT', true); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Value', function() { - const parent = createRowBlocks(this.workspace); - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - parent.getInput('INPUT').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'INPUT', false); - assertInputNotHasBlock(parent.getInputTargetBlock('INPUT'), 'INPUT'); - parent.getInput('INPUT').connection.disconnect(); - assertInputHasBlock(parent, 'INPUT', true); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id2', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlocks(this.workspace); - const xml = Blockly.Xml.textToDom( - '' - ); - parent.getInput('NAME').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'NAME', false); - parent.getInput('NAME').connection.disconnect(); - assertInputHasBlock(parent, 'NAME', true); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Statement', function() { - const parent = createStatementBlocks(this.workspace); - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - parent.getInput('NAME').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'NAME', false); - assertInputNotHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME'); - parent.getInput('NAME').connection.disconnect(); - assertInputHasBlock(parent, 'NAME', true); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id2', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlocks(this.workspace); - const xml = Blockly.Xml.textToDom( - '' - ); - parent.nextConnection.setShadowDom(xml); - assertNextHasBlock(parent, false); - parent.nextConnection.disconnect(); - assertNextHasBlock(parent, true); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Next', function() { - const parent = createStackBlocks(this.workspace); - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - parent.nextConnection.setShadowDom(xml); - assertNextHasBlock(parent, false); - assertNextNotHasBlock(parent.getNextBlock()); - parent.nextConnection.disconnect(); - assertNextHasBlock(parent, true); - assertNextHasBlock(parent.getNextBlock(), true); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id2', - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - }); - - suite('Add - With Shadow Connected', function() { - // These are defined separately in each suite. - function createRowBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - return block; - } - - function createStatementBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - return block; - } - - function createStackBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - return block; - } - - test('Value', function() { - const parent = createRowBlock(this.workspace); - const xml1 = Blockly.Xml.textToDom( - '' - ); - parent.getInput('INPUT').connection.setShadowDom(xml1); - assertInputHasBlock(parent, 'INPUT', true, '1'); - const xml2 = - Blockly.Xml.textToDom(''); - parent.getInput('INPUT').connection.setShadowDom(xml2); - assertInputHasBlock(parent, 'INPUT', true, '2'); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': '2', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Value', function() { - const parent = createRowBlock(this.workspace); - const xml1 = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ''); - parent.getInput('INPUT').connection.setShadowDom(xml1); - assertInputHasBlock(parent, 'INPUT', true, '1'); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'a'); - const xml2 = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ''); - parent.getInput('INPUT').connection.setShadowDom(xml2); - assertInputHasBlock(parent, 'INPUT', true, '2'); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'b'); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': '2', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'b', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlock(this.workspace); - const xml1 = Blockly.Xml.textToDom( - ''); - parent.getInput('NAME').connection.setShadowDom(xml1); - assertInputHasBlock(parent, 'NAME', true, '1'); - const xml2 = Blockly.Xml.textToDom( - ''); - parent.getInput('NAME').connection.setShadowDom(xml2); - assertInputHasBlock(parent, 'NAME', true, '2'); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': '2', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Statement', function() { - const parent = createStatementBlock(this.workspace); - const xml1 = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ''); - parent.getInput('NAME').connection.setShadowDom(xml1); - assertInputHasBlock(parent, 'NAME', true, '1'); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true, 'a'); - const xml2 = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ''); - parent.getInput('NAME').connection.setShadowDom(xml2); - assertInputHasBlock(parent, 'NAME', true, '2'); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true, 'b'); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': '2', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'b', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlock(this.workspace); - const xml1 = - Blockly.Xml.textToDom(''); - parent.nextConnection.setShadowDom(xml1); - assertNextHasBlock(parent, true, '1'); - const xml2 = - Blockly.Xml.textToDom(''); - parent.nextConnection.setShadowDom(xml2); - assertNextHasBlock(parent, true, '2'); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': '2', - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Next', function() { - const parent = createStackBlock(this.workspace); - const xml1 = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ''); - parent.nextConnection.setShadowDom(xml1); - assertNextHasBlock(parent, true, '1'); - assertNextHasBlock(parent.getNextBlock(), true, 'a'); - const xml2 = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ''); - parent.nextConnection.setShadowDom(xml2); - assertNextHasBlock(parent, true, '2'); - assertNextHasBlock(parent.getNextBlock(), true, 'b'); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': '2', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'b', - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - }); - - suite('Remove - No Block Connected', function() { - // These are defined separately in each suite. - function createRowBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ), workspace); - return block; - } - - function createStatementBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ), workspace); - return block; - } - - function createStackBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ), workspace); - return block; - } - - test('Value', function() { - const parent = createRowBlock(this.workspace); - parent.getInput('INPUT').connection.setShadowDom(null); - assertInputNotHasBlock(parent, 'INPUT'); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlock(this.workspace); - parent.getInput('NAME').connection.setShadowDom(null); - assertInputNotHasBlock(parent, 'STATEMENT'); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlock(this.workspace); - parent.nextConnection.setShadowDom(null); - assertNextNotHasBlock(parent); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - }); - - suite('Remove - Block Connected', function() { - // These are defined separately in each suite. - function createRowBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), workspace); - return block; - } - - function createStatementBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), workspace); - return block; - } - - function createStackBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - '' - ), workspace); - return block; - } - - test('Value', function() { - const parent = createRowBlock(this.workspace); - parent.getInput('INPUT').connection.setShadowDom(null); - assertInputHasBlock(parent, 'INPUT', false); - parent.getInput('INPUT').connection.disconnect(); - assertInputNotHasBlock(parent, 'INPUT'); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlock(this.workspace); - parent.getInput('NAME').connection.setShadowDom(null); - assertInputHasBlock(parent, 'NAME', false); - parent.getInput('NAME').connection.disconnect(); - assertInputNotHasBlock(parent, 'NAME'); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlock(this.workspace); - parent.nextConnection.setShadowDom(null); - assertNextHasBlock(parent, false); - parent.nextConnection.disconnect(); - assertNextNotHasBlock(parent); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - }); - - suite('Add - Connect & Disconnect - Remove', function() { - // These are defined separately in each suite. - function createRowBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - return block; - } - - function createStatementBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - return block; - } - - function createStackBlock(workspace) { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), workspace); - return block; - } - - test('Value', function() { - const parent = createRowBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' - ); - parent.getInput('INPUT').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'INPUT', true); - const child = createRowBlock(this.workspace); - parent.getInput('INPUT').connection.connect(child.outputConnection); - assertInputHasBlock(parent, 'INPUT', false); - parent.getInput('INPUT').connection.disconnect(); - assertInputHasBlock(parent, 'INPUT', true); - parent.getInput('INPUT').connection.setShadowDom(null); - assertInputNotHasBlock(parent, 'INPUT'); - }); - - test('Multiple Value', function() { - const parent = createRowBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - parent.getInput('INPUT').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'INPUT', true); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true); - const child = createRowBlock(this.workspace); - parent.getInput('INPUT').connection.connect(child.outputConnection); - assertInputHasBlock(parent, 'INPUT', false); - parent.getInput('INPUT').connection.disconnect(); - assertInputHasBlock(parent, 'INPUT', true); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true); - parent.getInput('INPUT').connection.setShadowDom(null); - assertInputNotHasBlock(parent, 'INPUT'); - }); - - test('Statement', function() { - const parent = createStatementBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' - ); - parent.getInput('NAME').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'NAME', true); - const child = createStatementBlock(this.workspace); - parent.getInput('NAME').connection - .connect(child.previousConnection); - assertInputHasBlock(parent, 'NAME', false); - parent.getInput('NAME').connection.disconnect(); - assertInputHasBlock(parent, 'NAME', true); - parent.getInput('NAME').connection.setShadowDom(null); - assertInputNotHasBlock(parent, 'NAME'); - }); - - test('Multiple Statement', function() { - const parent = createStatementBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - parent.getInput('NAME').connection.setShadowDom(xml); - assertInputHasBlock(parent, 'NAME', true); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true); - const child = createStatementBlock(this.workspace); - parent.getInput('NAME').connection - .connect(child.previousConnection); - assertInputHasBlock(parent, 'NAME', false); - parent.getInput('NAME').connection.disconnect(); - assertInputHasBlock(parent, 'NAME', true); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true); - parent.getInput('NAME').connection.setShadowDom(null); - assertInputNotHasBlock(parent, 'NAME'); - }); - - test('Next', function() { - const parent = createStackBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' - ); - parent.nextConnection.setShadowDom(xml); - assertNextHasBlock(parent, true); - const child = createStatementBlock(this.workspace); - parent.nextConnection.connect(child.previousConnection); - assertNextHasBlock(parent, false); - parent.nextConnection.disconnect(); - assertNextHasBlock(parent, true); - parent.nextConnection.setShadowDom(null); - assertNextNotHasBlock(parent); - }); - - test('Multiple Next', function() { - const parent = createStackBlock(this.workspace); - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - parent.nextConnection.setShadowDom(xml); - assertNextHasBlock(parent, true); - assertNextHasBlock(parent.getNextBlock(), true); - const child = createStatementBlock(this.workspace); - parent.nextConnection.connect(child.previousConnection); - assertNextHasBlock(parent, false); - parent.nextConnection.disconnect(); - assertNextHasBlock(parent, true); - assertNextHasBlock(parent.getNextBlock(), true); - parent.nextConnection.setShadowDom(null); - assertNextNotHasBlock(parent); - }); - }); - - suite('Invalid', function() { - test('Attach to output', function() { - const block = this.workspace.newBlock('row_block'); - chai.assert.throws(() => - block.outputConnection.setShadowDom(Blockly.Xml.textToDom( - ''))); - }); - - test('Attach to previous', function() { - const block = this.workspace.newBlock('stack_block'); - chai.assert.throws(() => - block.previousConnection.setShadowDom(Blockly.Xml.textToDom( - ''))); - }); - - test('Missing output', function() { - const block = this.workspace.newBlock('row_block'); - chai.assert.throws(() => - block.outputConnection.setShadowDom(Blockly.Xml.textToDom( - ''))); - }); - - test('Missing previous', function() { - const block = this.workspace.newBlock('stack_block'); - chai.assert.throws(() => - block.previousConnection.setShadowDom(Blockly.Xml.textToDom( - ''))); - }); - - test('Invalid connection checks, output', function() { - const block = this.workspace.newBlock('logic_operation'); - chai.assert.throws(() => - block.getInput('A').connection.setShadowDom( - Blockly.Xml.textToDom(''))); - }); - - test('Invalid connection checks, previous', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "stack_checks_block", - "message0": "", - "previousStatement": "check 1", - "nextStatement": "check 2", - }]); - const block = this.workspace.newBlock('stack_checks_block'); - chai.assert.throws(() => - block.nextConnection.setShadowDom(Blockly.Xml.textToDom( - ''))); - }); - }); - }); - - suite('setShadowState', function() { - suite('Add - No Block Connected', function() { - // These are defined separately in each suite. - function createRowBlock(workspace) { - return Blockly.serialization.blocks.append( - {'type': 'row_block', 'id': 'id0'}, workspace); - } - - function createStatementBlock(workspace) { - return Blockly.serialization.blocks.append( - {'type': 'statement_block', 'id': 'id0'}, workspace); - } - - function createStackBlock(workspace) { - return Blockly.serialization.blocks.append( - {'type': 'stack_block', 'id': 'id0'}, workspace); - } - - test('Value', function() { - const parent = createRowBlock(this.workspace); - parent.getInput('INPUT').connection - .setShadowState({'type': 'row_block', 'id': 'id1'}); - assertInputHasBlock(parent, 'INPUT', true); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Value', function() { - const parent = createRowBlock(this.workspace); - parent.getInput('INPUT').connection.setShadowState({ - 'type': 'row_block', - 'id': 'id1', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id2', - }, - }, - }, - }); - assertInputHasBlock(parent, 'INPUT', true); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id2', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlock(this.workspace); - parent.getInput('NAME').connection - .setShadowState({'type': 'statement_block', 'id': 'id1'}); - assertInputHasBlock(parent, 'NAME', true); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Statment', function() { - const parent = createStatementBlock(this.workspace); - parent.getInput('NAME').connection.setShadowState({ - 'type': 'statement_block', - 'id': 'id1', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id2', - }, - }, - }, - }); - assertInputHasBlock(parent, 'NAME', true); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id2', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlock(this.workspace); - parent.nextConnection - .setShadowState({'type': 'stack_block', 'id': 'id1'}); - assertNextHasBlock(parent, true); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - test('Multiple Next', function() { - const parent = createStackBlock(this.workspace); - parent.nextConnection.setShadowState({ - 'type': 'stack_block', - 'id': 'id1', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id2', - }, - }, - }); - assertNextHasBlock(parent, true); - assertNextHasBlock(parent.getNextBlock(), true); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id2', - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - }); - - suite('Add - With Block Connected', function() { - // These are defined separately in each suite. - function createRowBlocks(workspace) { - return Blockly.serialization.blocks.append( - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'block': { - 'type': 'row_block', - 'id': 'idA', - }, - }, - }, - }, - workspace); - } - - function createStatementBlocks(workspace) { - return Blockly.serialization.blocks.append( - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'block': { - 'type': 'statement_block', - 'id': 'idA', - }, - }, - }, - }, - workspace); - } - - function createStackBlocks(workspace) { - return Blockly.serialization.blocks.append( - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'block': { - 'type': 'stack_block', - 'id': 'idA', - }, - }, - }, - workspace); - } - - test('Value', function() { - const parent = createRowBlocks(this.workspace); - parent.getInput('INPUT').connection - .setShadowState({'type': 'row_block', 'id': 'id1'}); - assertInputHasBlock(parent, 'INPUT', false); - parent.getInput('INPUT').connection.disconnect(); - assertInputHasBlock(parent, 'INPUT', true); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Value', function() { - const parent = createRowBlocks(this.workspace); - parent.getInput('INPUT').connection.setShadowState( - { - 'type': 'row_block', - 'id': 'id1', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id2', - }, - }, - }, - } - ); - assertInputHasBlock(parent, 'INPUT', false); - assertInputNotHasBlock(parent.getInputTargetBlock('INPUT'), 'INPUT'); - parent.getInput('INPUT').connection.disconnect(); - assertInputHasBlock(parent, 'INPUT', true); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id2', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlocks(this.workspace); - parent.getInput('NAME').connection - .setShadowState({'type': 'statement_block', 'id': 'id1'}); - assertInputHasBlock(parent, 'NAME', false); - parent.getInput('NAME').connection.disconnect(); - assertInputHasBlock(parent, 'NAME', true); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Statement', function() { - const parent = createStatementBlocks(this.workspace); - parent.getInput('NAME').connection.setShadowState( - { - 'type': 'statement_block', - 'id': 'id1', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id2', - }, - }, - }, - } - ); - assertInputHasBlock(parent, 'NAME', false); - assertInputNotHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME'); - parent.getInput('NAME').connection.disconnect(); - assertInputHasBlock(parent, 'NAME', true); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id2', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlocks(this.workspace); - parent.nextConnection - .setShadowState({'type': 'stack_block', 'id': 'id1'}); - assertNextHasBlock(parent, false); - parent.nextConnection.disconnect(); - assertNextHasBlock(parent, true); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Next', function() { - const parent = createStackBlocks(this.workspace); - parent.nextConnection.setShadowState( - { - 'type': 'stack_block', - 'id': 'id1', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id2', - }, - }, - } - ); - assertNextHasBlock(parent, false); - assertNextNotHasBlock(parent.getNextBlock()); - parent.nextConnection.disconnect(); - assertNextHasBlock(parent, true); - assertNextHasBlock(parent.getNextBlock(), true); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id2', - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - }); - - suite('Add - With Shadow Connected', function() { - // These are defined separately in each suite. - function createRowBlock(workspace) { - return Blockly.serialization.blocks.append( - {'type': 'row_block', 'id': 'id0'}, workspace); - } - - function createStatementBlock(workspace) { - return Blockly.serialization.blocks.append( - {'type': 'statement_block', 'id': 'id0'}, workspace); - } - - function createStackBlock(workspace) { - return Blockly.serialization.blocks.append( - {'type': 'stack_block', 'id': 'id0'}, workspace); - } - - test('Value', function() { - const parent = createRowBlock(this.workspace); - parent.getInput('INPUT').connection - .setShadowState({'type': 'row_block', 'id': '1'}); - assertInputHasBlock(parent, 'INPUT', true, '1'); - parent.getInput('INPUT').connection - .setShadowState({'type': 'row_block', 'id': '2'}); - assertInputHasBlock(parent, 'INPUT', true, '2'); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': '2', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Value', function() { - const parent = createRowBlock(this.workspace); - parent.getInput('INPUT').connection.setShadowState( - { - 'type': 'row_block', - 'id': '1', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'a', - }, - }, - }, - } - ); - assertInputHasBlock(parent, 'INPUT', true, '1'); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'a'); - parent.getInput('INPUT').connection.setShadowState( - { - 'type': 'row_block', - 'id': '2', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'b', - }, - }, - }, - } - ); - assertInputHasBlock(parent, 'INPUT', true, '2'); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'b'); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': '2', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'b', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlock(this.workspace); - parent.getInput('NAME').connection - .setShadowState({'type': 'statement_block', 'id': '1'}); - assertInputHasBlock(parent, 'NAME', true, '1'); - parent.getInput('NAME').connection - .setShadowState({'type': 'statement_block', 'id': '2'}); - assertInputHasBlock(parent, 'NAME', true, '2'); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': '2', - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Statement', function() { - const parent = createStatementBlock(this.workspace); - parent.getInput('NAME').connection.setShadowState( - { - 'type': 'statement_block', - 'id': '1', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'a', - }, - }, - }, - } - ); - assertInputHasBlock(parent, 'NAME', true, '1'); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true, 'a'); - parent.getInput('NAME').connection.setShadowState( - { - 'type': 'statement_block', - 'id': '2', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'b', - }, - }, - }, - } - ); - assertInputHasBlock(parent, 'NAME', true, '2'); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true, 'b'); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': '2', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'b', - }, - }, - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlock(this.workspace); - parent.nextConnection - .setShadowState({'type': 'stack_block', 'id': '1'}); - assertNextHasBlock(parent, true, '1'); - parent.nextConnection - .setShadowState({'type': 'stack_block', 'id': '2'}); - assertNextHasBlock(parent, true, '2'); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': '2', - }, - }, - }, - '' + - '' + - '' + - '' + - '' - ); - }); - - test('Multiple Next', function() { - const parent = createStackBlock(this.workspace); - parent.nextConnection.setShadowState( - { - 'type': 'stack_block', - 'id': '1', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'a', - }, - }, - } - ); - assertNextHasBlock(parent, true, '1'); - assertNextHasBlock(parent.getNextBlock(), true, 'a'); - parent.nextConnection.setShadowState( - { - 'type': 'stack_block', - 'id': '2', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'b', - }, - }, - } - ); - assertNextHasBlock(parent, true, '2'); - assertNextHasBlock(parent.getNextBlock(), true, 'b'); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': '2', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'b', - }, - }, - }, - }, - }, - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - ); - }); - }); - - suite('Remove - No Block Connected', function() { - // These are defined separately in each suite. - function createRowBlocks(workspace) { - return Blockly.serialization.blocks.append( - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - }, - }, - }, - }, - workspace); - } - - function createStatementBlocks(workspace) { - return Blockly.serialization.blocks.append( - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - }, - }, - }, - }, - workspace); - } - - function createStackBlocks(workspace) { - return Blockly.serialization.blocks.append( - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - }, - }, - }, - workspace); - } - - test('Value', function() { - const parent = createRowBlocks(this.workspace); - parent.getInput('INPUT').connection.setShadowState(null); - assertInputNotHasBlock(parent, 'INPUT'); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlocks(this.workspace); - parent.getInput('NAME').connection.setShadowState(null); - assertInputNotHasBlock(parent, 'NAME'); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlocks(this.workspace); - parent.nextConnection.setShadowState(null); - assertNextNotHasBlock(parent); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - }); - - suite('Remove - Block Connected', function() { - // These are defined separately in each suite. - function createRowBlocks(workspace) { - return Blockly.serialization.blocks.append( - { - 'type': 'row_block', - 'id': 'id0', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - 'id': 'id1', - }, - 'block': { - 'type': 'row_block', - 'id': 'id2', - }, - }, - }, - }, - workspace); - } - - function createStatementBlocks(workspace) { - return Blockly.serialization.blocks.append( - { - 'type': 'statement_block', - 'id': 'id0', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - 'id': 'id1', - }, - 'block': { - 'type': 'statement_block', - 'id': 'id2', - }, - }, - }, - }, - workspace); - } - - function createStackBlocks(workspace) { - return Blockly.serialization.blocks.append( - { - 'type': 'stack_block', - 'id': 'id0', - 'next': { - 'shadow': { - 'type': 'stack_block', - 'id': 'id1', - }, - 'block': { - 'type': 'stack_block', - 'id': 'id2', - }, - }, - }, - workspace); - } - - test('Value', function() { - const parent = createRowBlocks(this.workspace); - parent.getInput('INPUT').connection.setShadowState(null); - assertInputHasBlock(parent, 'INPUT', false); - parent.getInput('INPUT').connection.disconnect(); - assertInputNotHasBlock(parent, 'INPUT'); - assertSerialization( - parent, - { - 'type': 'row_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - - test('Statement', function() { - const parent = createStatementBlocks(this.workspace); - parent.getInput('NAME').connection.setShadowState(null); - assertInputHasBlock(parent, 'NAME', false); - parent.getInput('NAME').connection.disconnect(); - assertInputNotHasBlock(parent, 'NAME'); - assertSerialization( - parent, - { - 'type': 'statement_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - - test('Next', function() { - const parent = createStackBlocks(this.workspace); - parent.nextConnection.setShadowState(null); - assertNextHasBlock(parent, false); - parent.nextConnection.disconnect(); - assertNextNotHasBlock(parent); - assertSerialization( - parent, - { - 'type': 'stack_block', - 'id': 'id0', - }, - '' + - '' - ); - }); - }); - - suite('Add - Connect & Disconnect - Remove', function() { - // These are defined separately in each suite. - function createRowBlock(workspace) { - return Blockly.serialization.blocks.append( - {'type': 'row_block'}, workspace); - } - - function createStatementBlock(workspace) { - return Blockly.serialization.blocks.append( - {'type': 'statement_block'}, workspace); - } - - function createStackBlock(workspace) { - return Blockly.serialization.blocks.append( - {'type': 'stack_block'}, workspace); - } - - test('Value', function() { - const parent = createRowBlock(this.workspace); - parent.getInput('INPUT').connection - .setShadowState({'type': 'row_block'}); - assertInputHasBlock(parent, 'INPUT', true); - const child = createRowBlock(this.workspace); - parent.getInput('INPUT').connection.connect(child.outputConnection); - assertInputHasBlock(parent, 'INPUT', false); - parent.getInput('INPUT').connection.disconnect(); - assertInputHasBlock(parent, 'INPUT', true); - parent.getInput('INPUT').connection.setShadowState(null); - assertInputNotHasBlock(parent, 'INPUT'); - }); - - test('Multiple Value', function() { - const parent = createRowBlock(this.workspace); - parent.getInput('INPUT').connection.setShadowState({ - 'type': 'row_block', - 'inputs': { - 'INPUT': { - 'shadow': { - 'type': 'row_block', - }, - }, - }, - }); - assertInputHasBlock(parent, 'INPUT', true); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true); - const child = createRowBlock(this.workspace); - parent.getInput('INPUT').connection.connect(child.outputConnection); - assertInputHasBlock(parent, 'INPUT', false); - parent.getInput('INPUT').connection.disconnect(); - assertInputHasBlock(parent, 'INPUT', true); - assertInputHasBlock( - parent.getInputTargetBlock('INPUT'), 'INPUT', true); - parent.getInput('INPUT').connection.setShadowState(null); - assertInputNotHasBlock(parent, 'INPUT'); - }); - - test('Statement', function() { - const parent = createStatementBlock(this.workspace); - parent.getInput('NAME').connection - .setShadowState({'type': 'statement_block'}); - assertInputHasBlock(parent, 'NAME', true); - const child = createStatementBlock(this.workspace); - parent.getInput('NAME').connection - .connect(child.previousConnection); - assertInputHasBlock(parent, 'NAME', false); - parent.getInput('NAME').connection.disconnect(); - assertInputHasBlock(parent, 'NAME', true); - parent.getInput('NAME').connection.setShadowState(null); - assertInputNotHasBlock(parent, 'NAME'); - }); - - test('Multiple Statement', function() { - const parent = createStatementBlock(this.workspace); - parent.getInput('NAME').connection.setShadowState({ - 'type': 'statement_block', - 'inputs': { - 'NAME': { - 'shadow': { - 'type': 'statement_block', - }, - }, - }, - }); - assertInputHasBlock(parent, 'NAME', true); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true); - const child = createStatementBlock(this.workspace); - parent.getInput('NAME').connection - .connect(child.previousConnection); - assertInputHasBlock(parent, 'NAME', false); - parent.getInput('NAME').connection.disconnect(); - assertInputHasBlock(parent, 'NAME', true); - assertInputHasBlock( - parent.getInputTargetBlock('NAME'), 'NAME', true); - parent.getInput('NAME').connection.setShadowState(null); - assertInputNotHasBlock(parent, 'NAME'); - }); - - test('Next', function() { - const parent = createStackBlock(this.workspace); - parent.nextConnection.setShadowState({'type': 'stack_block'}); - const child = createStatementBlock(this.workspace); - parent.nextConnection.connect(child.previousConnection); - assertNextHasBlock(parent, false); - parent.nextConnection.disconnect(); - assertNextHasBlock(parent, true); - parent.nextConnection.setShadowState(null); - assertNextNotHasBlock(parent); - }); - - test('Multiple Next', function() { - const parent = createStackBlock(this.workspace); - parent.nextConnection.setShadowState({ - 'type': 'stack_block', - 'next': { - 'shadow': { - 'type': 'stack_block', - }, - }, - }); - assertNextHasBlock(parent, true); - assertNextHasBlock(parent.getNextBlock(), true); - const child = createStatementBlock(this.workspace); - parent.nextConnection.connect(child.previousConnection); - assertNextHasBlock(parent, false); - parent.nextConnection.disconnect(); - assertNextHasBlock(parent, true); - assertNextHasBlock(parent.getNextBlock(), true); - parent.nextConnection.setShadowState(null); - assertNextNotHasBlock(parent); - }); - }); - - suite('Invalid', function() { - test('Attach to output', function() { - const block = this.workspace.newBlock('row_block'); - chai.assert.throws(() => - block.outputConnection.setShadowState({'type': 'row_block'})); - }); - - test('Attach to previous', function() { - const block = this.workspace.newBlock('stack_block'); - chai.assert.throws(() => - block.previousConnection.setShadowState( - {'type': 'stack_block'})); - }); - - test('Missing output', function() { - const block = this.workspace.newBlock('row_block'); - chai.assert.throws(() => - block.outputConnection.setShadowState({'type': 'stack_block'})); - }); - - test('Missing previous', function() { - const block = this.workspace.newBlock('stack_block'); - chai.assert.throws(() => - block.previousConnection.setShadowState({'type': 'row_block'})); - }); - - test('Invalid connection checks, output', function() { - const block = this.workspace.newBlock('logic_operation'); - chai.assert.throws(() => - block.getInput('A').connection.setShadowState( - {'type': 'math_number'})); - }); - - test('Invalid connection checks, previous', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "stack_checks_block", - "message0": "", - "previousStatement": "check 1", - "nextStatement": "check 2", - }]); - const block = this.workspace.newBlock('stack_checks_block'); - chai.assert.throws(() => - block.nextConnection.setShadowState( - {'type': 'stack_checks_block'})); - }); - }); - }); - }); - }); - }); - - suite('Connect', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - Blockly.defineBlocksWithJsonArray([ - { - "type": "stack_block", - "message0": "%1", - "args0": [ - { - "type": "field_input", - "name": "FIELD", - "text": "default", - }, - ], - "previousStatement": 'check1', - "nextStatement": 'check1', - }, - { - "type": "stack_block_1to2", - "message0": "", - "previousStatement": 'check1', - "nextStatement": 'check2', - }, - { - "type": "stack_block_2to1", - "message0": "", - "previousStatement": 'check2', - "nextStatement": 'check1', - }, - { - "type": "stack_block_noend", - "message0": "", - "previousStatement": 'check1', - }, - { - "type": "row_block", - "message0": "%1 %2", - "args0": [ - { - "type": "field_input", - "name": "FIELD", - "text": "default", - }, - { - "type": "input_value", - "name": "INPUT", - "check": 'check1', - }, - ], - "output": 'check1', - }, - { - "type": "row_block_1to2", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - "check": 'check1', - }, - ], - "output": 'check2', - }, - { - "type": "row_block_2to1", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - "check": 'check2', - }, - ], - "output": 'check1', - }, - { - "type": "row_block_noend", - "message0": "", - "output": 'check1', - }, - { - "type": "row_block_multiple_inputs", - "message0": "%1 %2", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - "check": 'check1', - }, - { - "type": "input_value", - "name": "INPUT2", - "check": 'check1', - }, - ], - "output": 'check1', - }, - { - 'type': 'output_to_statements', - 'message0': '%1 %2', - 'args0': [ - { - 'type': 'input_statement', - 'name': 'INPUT', - 'check': 'check1', - }, - { - 'type': 'input_statement', - 'name': 'INPUT2', - 'check': 'check1', - }, - ], - 'output': 'check1', - }, - { - "type": "statement_block", - "message0": "%1 %2", - "args0": [ - { - "type": "field_input", - "name": "FIELD", - "text": "default", - }, - { - "type": "input_statement", - "name": "NAME", - "check": 'check1', - }, - ], - "previousStatement": 'check1', - "nextStatement": 'check1', - }, - { - "type": "statement_block_1to2", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - "check": 'check1', - }, - ], - "previousStatement": 'check1', - "nextStatement": 'check2', - }, - { - "type": "statement_block_2to1", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - "check": 'check2', - }, - ], - "previousStatement": 'check2', - "nextStatement": 'check1', - }, - { - "type": "statement_block_noend", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - "check": 'check1', - }, - ], - "previousStatement": 'check1', - }, - ]); - - // Used to make sure we don't get stray shadow blocks or anything. - this.assertBlockCount = function(count) { - chai.assert.equal(this.workspace.getAllBlocks().length, count); - }; - }); - - suite('Disconnect from old parent', function() { - test('Value', function() { - const oldParent = this.workspace.newBlock('row_block'); - const newParent = this.workspace.newBlock('row_block'); - const child = this.workspace.newBlock('row_block'); - - oldParent.getInput('INPUT').connection.connect(child.outputConnection); - newParent.getInput('INPUT').connection.connect(child.outputConnection); - - chai.assert.isFalse( - oldParent.getInput('INPUT').connection.isConnected()); - this.assertBlockCount(3); - }); - - test('Statement', function() { - const oldParent = this.workspace.newBlock('statement_block'); - const newParent = this.workspace.newBlock('statement_block'); - const child = this.workspace.newBlock('stack_block'); - - oldParent.getInput('NAME').connection - .connect(child.previousConnection); - newParent.getInput('NAME').connection - .connect(child.previousConnection); - - chai.assert.isFalse( - oldParent.getInput('NAME').connection.isConnected()); - this.assertBlockCount(3); - }); - - test('Next', function() { - const oldParent = this.workspace.newBlock('stack_block'); - const newParent = this.workspace.newBlock('stack_block'); - const child = this.workspace.newBlock('stack_block'); - - oldParent.nextConnection.connect(child.previousConnection); - newParent.nextConnection.connect(child.previousConnection); - - chai.assert.isFalse(oldParent.nextConnection.isConnected()); - this.assertBlockCount(3); - }); - }); - - suite('Shadow dissolves', function() { - test('Value', function() { - const newParent = this.workspace.newBlock('row_block'); - const child = this.workspace.newBlock('row_block'); - const xml = Blockly.Xml.textToDom( - '' - ); - newParent.getInput('INPUT').connection.setShadowDom(xml); - chai.assert.isTrue(newParent.getInputTargetBlock('INPUT').isShadow()); - - newParent.getInput('INPUT').connection.connect(child.outputConnection); - - chai.assert.isFalse(newParent.getInputTargetBlock('INPUT').isShadow()); - this.assertBlockCount(2); - }); - - test('Statement', function() { - const newParent = this.workspace.newBlock('statement_block'); - const child = this.workspace.newBlock('stack_block'); - const xml = Blockly.Xml.textToDom( - '' - ); - newParent.getInput('NAME').connection.setShadowDom(xml); - chai.assert.isTrue( - newParent.getInputTargetBlock('NAME').isShadow()); - - newParent.getInput('NAME').connection - .connect(child.previousConnection); - - chai.assert.isFalse( - newParent.getInputTargetBlock('NAME').isShadow()); - this.assertBlockCount(2); - }); - - test('Next', function() { - const newParent = this.workspace.newBlock('stack_block'); - const child = this.workspace.newBlock('stack_block'); - const xml = Blockly.Xml.textToDom( - '' - ); - newParent.nextConnection.setShadowDom(xml); - chai.assert.isTrue(newParent.getNextBlock().isShadow()); - - newParent.nextConnection.connect(child.previousConnection); - - chai.assert.isFalse(newParent.getNextBlock().isShadow()); - this.assertBlockCount(2); - }); - }); - - suite('Saving shadow values', function() { - test('Value', function() { - const newParent = this.workspace.newBlock('row_block'); - const child = this.workspace.newBlock('row_block'); - const xml = Blockly.Xml.textToDom( - '' - ); - newParent.getInput('INPUT').connection.setShadowDom(xml); - newParent.getInputTargetBlock('INPUT').setFieldValue('new', 'FIELD'); - - newParent.getInput('INPUT').connection.connect(child.outputConnection); - newParent.getInput('INPUT').connection.disconnect(); - - const target = newParent.getInputTargetBlock('INPUT'); - chai.assert.isTrue(target.isShadow()); - chai.assert.equal(target.getFieldValue('FIELD'), 'new'); - this.assertBlockCount(3); - }); - - test('Statement', function() { - const newParent = this.workspace.newBlock('statement_block'); - const child = this.workspace.newBlock('stack_block'); - const xml = Blockly.Xml.textToDom( - '' - ); - newParent.getInput('NAME').connection.setShadowDom(xml); - newParent.getInputTargetBlock('NAME') - .setFieldValue('new', 'FIELD'); - - newParent.getInput('NAME').connection - .connect(child.previousConnection); - newParent.getInput('NAME').connection.disconnect(); - - const target = newParent.getInputTargetBlock('NAME'); - chai.assert.isTrue(target.isShadow()); - chai.assert.equal(target.getFieldValue('FIELD'), 'new'); - this.assertBlockCount(3); - }); - - test('Next', function() { - const newParent = this.workspace.newBlock('stack_block'); - const child = this.workspace.newBlock('stack_block'); - const xml = Blockly.Xml.textToDom( - '' - ); - newParent.nextConnection.setShadowDom(xml); - newParent.getNextBlock().setFieldValue('new', 'FIELD'); - - newParent.nextConnection.connect(child.previousConnection); - newParent.nextConnection.disconnect(); - - const target = newParent.getNextBlock(); - chai.assert.isTrue(target.isShadow()); - chai.assert.equal(target.getFieldValue('FIELD'), 'new'); - this.assertBlockCount(3); - }); - }); - - suite('Reattach or bump orphan', function() { - suite('Value', function() { - suite('No available spots', function() { - test('No connection', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock('row_block_noend'); - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - - test('All statements', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock('output_to_statements'); - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - - test('Bad checks', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock('row_block_2to1'); - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - - test('Through different types', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock('row_block_2to1'); - const otherChild = this.workspace.newBlock('row_block_1to2'); - - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - newChild.getInput('INPUT').connection - .connect(otherChild.outputConnection); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - }); - - suite('Multiple available spots', function() { - suite('No shadows', function() { - test('Top block', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock( - 'row_block_multiple_inputs'); - - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - - test('Child blocks', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock( - 'row_block_multiple_inputs'); - const childX = this.workspace.newBlock('row_block'); - const childY = this.workspace.newBlock('row_block'); - - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - newChild.getInput('INPUT').connection - .connect(childX.outputConnection); - newChild.getInput('INPUT2').connection - .connect(childY.outputConnection); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - - test('Spots filled', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock( - 'row_block_multiple_inputs'); - const otherChild = this.workspace.newBlock('row_block_noend'); - - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - newChild.getInput('INPUT').connection - .connect(otherChild.outputConnection); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - }); - - suite('Shadows', function() { - test('Top block', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock( - 'row_block_multiple_inputs'); - - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - newChild.getInput('INPUT').connection.setShadowDom( - Blockly.Xml.textToDom('') - .firstChild); - newChild.getInput('INPUT2').connection.setShadowDom( - Blockly.Xml.textToDom('') - .firstChild); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - - test('Child blocks', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock( - 'row_block_multiple_inputs'); - const childX = this.workspace.newBlock('row_block'); - const childY = this.workspace.newBlock('row_block'); - - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - newChild.getInput('INPUT').connection - .connect(childX.outputConnection); - newChild.getInput('INPUT2').connection - .connect(childY.outputConnection); - childX.getInput('INPUT').connection.setShadowDom( - Blockly.Xml.textToDom('') - .firstChild); - childY.getInput('INPUT').connection.setShadowDom( - Blockly.Xml.textToDom('') - .firstChild); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - - test('Spots filled', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock( - 'row_block_multiple_inputs'); - const otherChild = this.workspace.newBlock('row_block_noend'); - - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - newChild.getInput('INPUT').connection - .connect(otherChild.outputConnection); - newChild.getInput('INPUT2').connection.setShadowDom( - Blockly.Xml.textToDom('') - .firstChild); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isFalse( - oldChild.outputConnection.isConnected()); - }); - }); - }); - - suite('Single available spot', function() { - test('No shadows', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock('row_block'); - - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isTrue( - newChild.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - newChild.getInputTargetBlock('INPUT'), oldChild); - }); - - test('Shadows', function() { - const parent = this.workspace.newBlock('row_block'); - const oldChild = this.workspace.newBlock('row_block'); - const newChild = this.workspace.newBlock('row_block'); - - parent.getInput('INPUT').connection - .connect(oldChild.outputConnection); - newChild.getInput('INPUT').connection.setShadowDom( - Blockly.Xml.textToDom('') - .firstChild); - - parent.getInput('INPUT').connection - .connect(newChild.outputConnection); - - chai.assert.isTrue( - parent.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('INPUT'), newChild); - chai.assert.isTrue( - newChild.getInput('INPUT').connection.isConnected()); - chai.assert.equal( - newChild.getInputTargetBlock('INPUT'), oldChild); - }); - }); - }); - - suite('Statement', function() { - suite('No shadows', function() { - test('Simple', function() { - const parent = this.workspace.newBlock('statement_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block'); - parent.getInput('NAME').connection - .connect(oldChild.previousConnection); - - parent.getInput('NAME').connection - .connect(newChild.previousConnection); - - chai.assert.isTrue( - parent.getInput('NAME').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('NAME'), newChild); - chai.assert.isTrue(newChild.nextConnection.isConnected()); - chai.assert.equal(newChild.getNextBlock(), oldChild); - this.assertBlockCount(3); - }); - - test('Bad check in between', function() { - const parent = this.workspace.newBlock('statement_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild1 = this.workspace.newBlock('stack_block_1to2'); - const newChild2 = this.workspace.newBlock('stack_block_2to1'); - parent.getInput('NAME').connection - .connect(oldChild.previousConnection); - newChild1.nextConnection.connect(newChild2.previousConnection); - - parent.getInput('NAME').connection - .connect(newChild1.previousConnection); - - chai.assert.isTrue( - parent.getInput('NAME').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('NAME'), newChild1); - chai.assert.isTrue(newChild2.nextConnection.isConnected()); - chai.assert.equal(newChild2.getNextBlock(), oldChild); - this.assertBlockCount(4); - }); - - test('Bad check at end', function() { - const parent = this.workspace.newBlock('statement_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block_1to2'); - parent.getInput('NAME').connection - .connect(oldChild.previousConnection); - const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); - - parent.getInput('NAME').connection - .connect(newChild.previousConnection); - - chai.assert.isTrue( - parent.getInput('NAME').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('NAME'), newChild); - chai.assert.isFalse(newChild.nextConnection.isConnected()); - chai.assert.isTrue(spy.calledOnce); - this.assertBlockCount(3); - }); - - test('No end connection', function() { - const parent = this.workspace.newBlock('statement_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block_noend'); - parent.getInput('NAME').connection - .connect(oldChild.previousConnection); - const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); - - parent.getInput('NAME').connection - .connect(newChild.previousConnection); - - chai.assert.isTrue( - parent.getInput('NAME').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('NAME'), newChild); - chai.assert.isTrue(spy.calledOnce); - this.assertBlockCount(3); - }); - }); - - suite('Shadows', function() { - test('Simple', function() { - const parent = this.workspace.newBlock('statement_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block'); - parent.getInput('NAME').connection - .connect(oldChild.previousConnection); - const xml = Blockly.Xml.textToDom( - '' - ); - newChild.nextConnection.setShadowDom(xml); - - parent.getInput('NAME').connection - .connect(newChild.previousConnection); - - chai.assert.isTrue( - parent.getInput('NAME').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('NAME'), newChild); - chai.assert.isTrue(newChild.nextConnection.isConnected()); - chai.assert.equal(newChild.getNextBlock(), oldChild); - this.assertBlockCount(3); - }); - - test('Bad check in between', function() { - const parent = this.workspace.newBlock('statement_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild1 = this.workspace.newBlock('stack_block_1to2'); - const newChild2 = this.workspace.newBlock('stack_block_2to1'); - parent.getInput('NAME').connection - .connect(oldChild.previousConnection); - newChild1.nextConnection.connect(newChild2.previousConnection); - const xml = Blockly.Xml.textToDom( - '' - ); - newChild2.nextConnection.setShadowDom(xml); - - parent.getInput('NAME').connection - .connect(newChild1.previousConnection); - - chai.assert.isTrue( - parent.getInput('NAME').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('NAME'), newChild1); - chai.assert.isTrue(newChild2.nextConnection.isConnected()); - chai.assert.equal(newChild2.getNextBlock(), oldChild); - this.assertBlockCount(4); - }); - - test('Bad check at end', function() { - const parent = this.workspace.newBlock('statement_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block_1to2'); - parent.getInput('NAME').connection - .connect(oldChild.previousConnection); - const xml = Blockly.Xml.textToDom( - '' - ); - newChild.nextConnection.setShadowDom(xml); - const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); - - parent.getInput('NAME').connection - .connect(newChild.previousConnection); - - chai.assert.isTrue( - parent.getInput('NAME').connection.isConnected()); - chai.assert.equal( - parent.getInputTargetBlock('NAME'), newChild); - chai.assert.isTrue(newChild.nextConnection.isConnected()); - chai.assert.isTrue(newChild.getNextBlock().isShadow()); - chai.assert.isTrue(spy.calledOnce); - this.assertBlockCount(4); - }); - }); - }); - - suite('Next', function() { - suite('No shadows', function() { - test('Simple', function() { - const parent = this.workspace.newBlock('stack_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block'); - parent.nextConnection.connect(oldChild.previousConnection); - - parent.nextConnection.connect(newChild.previousConnection); - - chai.assert.isTrue(parent.nextConnection.isConnected()); - chai.assert.equal(parent.getNextBlock(), newChild); - chai.assert.isTrue(newChild.nextConnection.isConnected()); - chai.assert.equal(newChild.getNextBlock(), oldChild); - this.assertBlockCount(3); - }); - - test('Bad check in between', function() { - const parent = this.workspace.newBlock('stack_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild1 = this.workspace.newBlock('stack_block_1to2'); - const newChild2 = this.workspace.newBlock('stack_block_2to1'); - parent.nextConnection.connect(oldChild.previousConnection); - newChild1.nextConnection.connect(newChild2.previousConnection); - - parent.nextConnection.connect(newChild1.previousConnection); - - chai.assert.isTrue(parent.nextConnection.isConnected()); - chai.assert.equal(parent.getNextBlock(), newChild1); - chai.assert.isTrue(newChild2.nextConnection.isConnected()); - chai.assert.equal(newChild2.getNextBlock(), oldChild); - this.assertBlockCount(4); - }); - - test('Bad check at end', function() { - const parent = this.workspace.newBlock('stack_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block_1to2'); - parent.nextConnection.connect(oldChild.previousConnection); - const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); - - parent.nextConnection.connect(newChild.previousConnection); - - chai.assert.isTrue(parent.nextConnection.isConnected()); - chai.assert.equal(parent.getNextBlock(), newChild); - chai.assert.isFalse(newChild.nextConnection.isConnected()); - chai.assert.isTrue(spy.calledOnce); - this.assertBlockCount(3); - }); - - test('No end connection', function() { - const parent = this.workspace.newBlock('stack_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block_noend'); - parent.nextConnection.connect(oldChild.previousConnection); - const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); - - parent.nextConnection.connect(newChild.previousConnection); - - chai.assert.isTrue(parent.nextConnection.isConnected()); - chai.assert.equal(parent.getNextBlock(), newChild); - chai.assert.isTrue(spy.calledOnce); - this.assertBlockCount(3); - }); - }); - - suite('Shadows', function() { - test('Simple', function() { - const parent = this.workspace.newBlock('stack_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block'); - parent.nextConnection.connect(oldChild.previousConnection); - const xml = Blockly.Xml.textToDom( - '' - ); - newChild.nextConnection.setShadowDom(xml); - - parent.nextConnection.connect(newChild.previousConnection); - - chai.assert.isTrue(parent.nextConnection.isConnected()); - chai.assert.equal(parent.getNextBlock(), newChild); - chai.assert.isTrue(newChild.nextConnection.isConnected()); - chai.assert.equal(newChild.getNextBlock(), oldChild); - this.assertBlockCount(3); - }); - - test('Bad check in between', function() { - const parent = this.workspace.newBlock('stack_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild1 = this.workspace.newBlock('stack_block_1to2'); - const newChild2 = this.workspace.newBlock('stack_block_2to1'); - parent.nextConnection.connect(oldChild.previousConnection); - newChild1.nextConnection.connect(newChild2.previousConnection); - const xml = Blockly.Xml.textToDom( - '' - ); - newChild2.nextConnection.setShadowDom(xml); - - parent.nextConnection.connect(newChild1.previousConnection); - - chai.assert.isTrue(parent.nextConnection.isConnected()); - chai.assert.equal(parent.getNextBlock(), newChild1); - chai.assert.isTrue(newChild2.nextConnection.isConnected()); - chai.assert.equal(newChild2.getNextBlock(), oldChild); - this.assertBlockCount(4); - }); - - test('Bad check at end', function() { - const parent = this.workspace.newBlock('stack_block'); - const oldChild = this.workspace.newBlock('stack_block'); - const newChild = this.workspace.newBlock('stack_block_1to2'); - parent.nextConnection.connect(oldChild.previousConnection); - const xml = Blockly.Xml.textToDom( - '' - ); - newChild.nextConnection.setShadowDom(xml); - const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); - - parent.nextConnection.connect(newChild.previousConnection); - - chai.assert.isTrue(parent.nextConnection.isConnected()); - chai.assert.equal(parent.getNextBlock(), newChild); - chai.assert.isTrue(newChild.nextConnection.isConnected()); - chai.assert.isTrue(newChild.getNextBlock().isShadow()); - chai.assert.isTrue(spy.calledOnce); - this.assertBlockCount(4); - }); - }); - }); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.connection'); + +const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {defineRowBlock, defineStatementBlock, defineStackBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); + + +suite('Connection', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = sinon.createStubInstance(Blockly.Workspace); + this.workspace.connectionChecker = new Blockly.ConnectionChecker(); + this.createConnection = function(type) { + const block = { + workspace: this.workspace, + isShadow: function() {return false;}, + }; + const connection = new Blockly.Connection(block, type); + return connection; + }; + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('Set Shadow', function() { + function assertBlockMatches(block, isShadow, opt_id) { + chai.assert.equal(block.isShadow(), isShadow, + `expected block ${block.id} to ${isShadow ? '' : 'not'} be a shadow`); + if (opt_id) { + chai.assert.equal(block.id, opt_id); + } + } + + function assertInputHasBlock(parent, inputName, isShadow, opt_name) { + const block = parent.getInputTargetBlock(inputName); + chai.assert.exists(block, + `expected block ${opt_name || ''} to be attached to ${inputName}`); + assertBlockMatches(block, isShadow, opt_name); + } + + function assertNextHasBlock(parent, isShadow, opt_name) { + const block = parent.getNextBlock(); + chai.assert.exists(block, + `expected block ${opt_name || ''} to be attached to next connection`); + assertBlockMatches(block, isShadow, opt_name); + } + + function assertInputNotHasBlock(parent, inputName) { + const block = parent.getInputTargetBlock(inputName); + chai.assert.notExists(block, + `expected block ${block && block.id} to not be attached to ${inputName}`); + } + + function assertNextNotHasBlock(parent) { + const block = parent.getNextBlock(); + chai.assert.notExists(block, + `expected block ${block && block.id} to not be attached to next connection`); + } + + function assertSerialization(block, jso, xmlText) { + const actualJso = Blockly.serialization.blocks + .save(block, {addNextBlocks: true}); + const actualXml = Blockly.Xml.domToText(Blockly.Xml.blockToDom(block)); + chai.assert.deepEqual(actualJso, jso); + chai.assert.equal(actualXml, xmlText); + } + + const testSuites = [ + { + title: 'Rendered', + createWorkspace: () => { + return Blockly.inject('blocklyDiv'); + }, + }, + { + title: 'Headless', + createWorkspace: () => { + return new Blockly.Workspace(); + }, + }, + ]; + + testSuites.forEach((testSuite) => { + // Create a suite for each suite. + suite(testSuite.title, function() { + setup(function() { + this.workspace = testSuite.createWorkspace(); + + defineRowBlock(); + defineStatementBlock(); + defineStackBlock(); + + createGenUidStubWithReturns( + new Array(30).fill().map((_, i) => 'id' + i)); + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + suite('setShadowDom', function() { + suite('Add - No Block Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + test('Value', function() { + const parent = createRowBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Value', function() { + const parent = createRowBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id2', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('NAME').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'NAME', true); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Statement', function() { + const parent = createStatementBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('NAME').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'NAME', true); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id2', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Next', function() { + const parent = createStackBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id2', + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + }); + + suite('Add - With Block Connected', function() { + // These are defined separately in each suite. + function createRowBlocks(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStatementBlocks(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStackBlocks(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + test('Value', function() { + const parent = createRowBlocks(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Value', function() { + const parent = createRowBlocks(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', false); + assertInputNotHasBlock(parent.getInputTargetBlock('INPUT'), 'INPUT'); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id2', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlocks(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('NAME').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'NAME', false); + parent.getInput('NAME').connection.disconnect(); + assertInputHasBlock(parent, 'NAME', true); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Statement', function() { + const parent = createStatementBlocks(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('NAME').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'NAME', false); + assertInputNotHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME'); + parent.getInput('NAME').connection.disconnect(); + assertInputHasBlock(parent, 'NAME', true); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id2', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlocks(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Next', function() { + const parent = createStackBlocks(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, false); + assertNextNotHasBlock(parent.getNextBlock()); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id2', + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + }); + + suite('Add - With Shadow Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + test('Value', function() { + const parent = createRowBlock(this.workspace); + const xml1 = Blockly.Xml.textToDom( + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml1); + assertInputHasBlock(parent, 'INPUT', true, '1'); + const xml2 = + Blockly.Xml.textToDom(''); + parent.getInput('INPUT').connection.setShadowDom(xml2); + assertInputHasBlock(parent, 'INPUT', true, '2'); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': '2', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Value', function() { + const parent = createRowBlock(this.workspace); + const xml1 = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ''); + parent.getInput('INPUT').connection.setShadowDom(xml1); + assertInputHasBlock(parent, 'INPUT', true, '1'); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'a'); + const xml2 = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ''); + parent.getInput('INPUT').connection.setShadowDom(xml2); + assertInputHasBlock(parent, 'INPUT', true, '2'); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'b'); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': '2', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'b', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlock(this.workspace); + const xml1 = Blockly.Xml.textToDom( + ''); + parent.getInput('NAME').connection.setShadowDom(xml1); + assertInputHasBlock(parent, 'NAME', true, '1'); + const xml2 = Blockly.Xml.textToDom( + ''); + parent.getInput('NAME').connection.setShadowDom(xml2); + assertInputHasBlock(parent, 'NAME', true, '2'); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': '2', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Statement', function() { + const parent = createStatementBlock(this.workspace); + const xml1 = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ''); + parent.getInput('NAME').connection.setShadowDom(xml1); + assertInputHasBlock(parent, 'NAME', true, '1'); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true, 'a'); + const xml2 = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ''); + parent.getInput('NAME').connection.setShadowDom(xml2); + assertInputHasBlock(parent, 'NAME', true, '2'); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true, 'b'); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': '2', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'b', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlock(this.workspace); + const xml1 = + Blockly.Xml.textToDom(''); + parent.nextConnection.setShadowDom(xml1); + assertNextHasBlock(parent, true, '1'); + const xml2 = + Blockly.Xml.textToDom(''); + parent.nextConnection.setShadowDom(xml2); + assertNextHasBlock(parent, true, '2'); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': '2', + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Next', function() { + const parent = createStackBlock(this.workspace); + const xml1 = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ''); + parent.nextConnection.setShadowDom(xml1); + assertNextHasBlock(parent, true, '1'); + assertNextHasBlock(parent.getNextBlock(), true, 'a'); + const xml2 = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ''); + parent.nextConnection.setShadowDom(xml2); + assertNextHasBlock(parent, true, '2'); + assertNextHasBlock(parent.getNextBlock(), true, 'b'); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': '2', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'b', + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + }); + + suite('Remove - No Block Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + test('Value', function() { + const parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'INPUT'); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlock(this.workspace); + parent.getInput('NAME').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'STATEMENT'); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlock(this.workspace); + parent.nextConnection.setShadowDom(null); + assertNextNotHasBlock(parent); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + }); + + suite('Remove - Block Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + test('Value', function() { + const parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.setShadowDom(null); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputNotHasBlock(parent, 'INPUT'); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlock(this.workspace); + parent.getInput('NAME').connection.setShadowDom(null); + assertInputHasBlock(parent, 'NAME', false); + parent.getInput('NAME').connection.disconnect(); + assertInputNotHasBlock(parent, 'NAME'); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlock(this.workspace); + parent.nextConnection.setShadowDom(null); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextNotHasBlock(parent); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + }); + + suite('Add - Connect & Disconnect - Remove', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + test('Value', function() { + const parent = createRowBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true); + const child = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.connect(child.outputConnection); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + parent.getInput('INPUT').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'INPUT'); + }); + + test('Multiple Value', function() { + const parent = createRowBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + const child = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.connect(child.outputConnection); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + parent.getInput('INPUT').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'INPUT'); + }); + + test('Statement', function() { + const parent = createStatementBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('NAME').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'NAME', true); + const child = createStatementBlock(this.workspace); + parent.getInput('NAME').connection + .connect(child.previousConnection); + assertInputHasBlock(parent, 'NAME', false); + parent.getInput('NAME').connection.disconnect(); + assertInputHasBlock(parent, 'NAME', true); + parent.getInput('NAME').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'NAME'); + }); + + test('Multiple Statement', function() { + const parent = createStatementBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('NAME').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'NAME', true); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true); + const child = createStatementBlock(this.workspace); + parent.getInput('NAME').connection + .connect(child.previousConnection); + assertInputHasBlock(parent, 'NAME', false); + parent.getInput('NAME').connection.disconnect(); + assertInputHasBlock(parent, 'NAME', true); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true); + parent.getInput('NAME').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'NAME'); + }); + + test('Next', function() { + const parent = createStackBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true); + const child = createStatementBlock(this.workspace); + parent.nextConnection.connect(child.previousConnection); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + parent.nextConnection.setShadowDom(null); + assertNextNotHasBlock(parent); + }); + + test('Multiple Next', function() { + const parent = createStackBlock(this.workspace); + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + const child = createStatementBlock(this.workspace); + parent.nextConnection.connect(child.previousConnection); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + parent.nextConnection.setShadowDom(null); + assertNextNotHasBlock(parent); + }); + }); + + suite('Invalid', function() { + test('Attach to output', function() { + const block = this.workspace.newBlock('row_block'); + chai.assert.throws(() => + block.outputConnection.setShadowDom(Blockly.Xml.textToDom( + ''))); + }); + + test('Attach to previous', function() { + const block = this.workspace.newBlock('stack_block'); + chai.assert.throws(() => + block.previousConnection.setShadowDom(Blockly.Xml.textToDom( + ''))); + }); + + test('Missing output', function() { + const block = this.workspace.newBlock('row_block'); + chai.assert.throws(() => + block.outputConnection.setShadowDom(Blockly.Xml.textToDom( + ''))); + }); + + test('Missing previous', function() { + const block = this.workspace.newBlock('stack_block'); + chai.assert.throws(() => + block.previousConnection.setShadowDom(Blockly.Xml.textToDom( + ''))); + }); + + test('Invalid connection checks, output', function() { + const block = this.workspace.newBlock('logic_operation'); + chai.assert.throws(() => + block.getInput('A').connection.setShadowDom( + Blockly.Xml.textToDom(''))); + }); + + test('Invalid connection checks, previous', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "stack_checks_block", + "message0": "", + "previousStatement": "check 1", + "nextStatement": "check 2", + }]); + const block = this.workspace.newBlock('stack_checks_block'); + chai.assert.throws(() => + block.nextConnection.setShadowDom(Blockly.Xml.textToDom( + ''))); + }); + }); + }); + + suite('setShadowState', function() { + suite('Add - No Block Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + return Blockly.serialization.blocks.append( + {'type': 'row_block', 'id': 'id0'}, workspace); + } + + function createStatementBlock(workspace) { + return Blockly.serialization.blocks.append( + {'type': 'statement_block', 'id': 'id0'}, workspace); + } + + function createStackBlock(workspace) { + return Blockly.serialization.blocks.append( + {'type': 'stack_block', 'id': 'id0'}, workspace); + } + + test('Value', function() { + const parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection + .setShadowState({'type': 'row_block', 'id': 'id1'}); + assertInputHasBlock(parent, 'INPUT', true); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Value', function() { + const parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.setShadowState({ + 'type': 'row_block', + 'id': 'id1', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id2', + }, + }, + }, + }); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id2', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlock(this.workspace); + parent.getInput('NAME').connection + .setShadowState({'type': 'statement_block', 'id': 'id1'}); + assertInputHasBlock(parent, 'NAME', true); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Statment', function() { + const parent = createStatementBlock(this.workspace); + parent.getInput('NAME').connection.setShadowState({ + 'type': 'statement_block', + 'id': 'id1', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id2', + }, + }, + }, + }); + assertInputHasBlock(parent, 'NAME', true); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id2', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlock(this.workspace); + parent.nextConnection + .setShadowState({'type': 'stack_block', 'id': 'id1'}); + assertNextHasBlock(parent, true); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + test('Multiple Next', function() { + const parent = createStackBlock(this.workspace); + parent.nextConnection.setShadowState({ + 'type': 'stack_block', + 'id': 'id1', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id2', + }, + }, + }); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id2', + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + }); + + suite('Add - With Block Connected', function() { + // These are defined separately in each suite. + function createRowBlocks(workspace) { + return Blockly.serialization.blocks.append( + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'block': { + 'type': 'row_block', + 'id': 'idA', + }, + }, + }, + }, + workspace); + } + + function createStatementBlocks(workspace) { + return Blockly.serialization.blocks.append( + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'block': { + 'type': 'statement_block', + 'id': 'idA', + }, + }, + }, + }, + workspace); + } + + function createStackBlocks(workspace) { + return Blockly.serialization.blocks.append( + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'block': { + 'type': 'stack_block', + 'id': 'idA', + }, + }, + }, + workspace); + } + + test('Value', function() { + const parent = createRowBlocks(this.workspace); + parent.getInput('INPUT').connection + .setShadowState({'type': 'row_block', 'id': 'id1'}); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Value', function() { + const parent = createRowBlocks(this.workspace); + parent.getInput('INPUT').connection.setShadowState( + { + 'type': 'row_block', + 'id': 'id1', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id2', + }, + }, + }, + } + ); + assertInputHasBlock(parent, 'INPUT', false); + assertInputNotHasBlock(parent.getInputTargetBlock('INPUT'), 'INPUT'); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id2', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlocks(this.workspace); + parent.getInput('NAME').connection + .setShadowState({'type': 'statement_block', 'id': 'id1'}); + assertInputHasBlock(parent, 'NAME', false); + parent.getInput('NAME').connection.disconnect(); + assertInputHasBlock(parent, 'NAME', true); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Statement', function() { + const parent = createStatementBlocks(this.workspace); + parent.getInput('NAME').connection.setShadowState( + { + 'type': 'statement_block', + 'id': 'id1', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id2', + }, + }, + }, + } + ); + assertInputHasBlock(parent, 'NAME', false); + assertInputNotHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME'); + parent.getInput('NAME').connection.disconnect(); + assertInputHasBlock(parent, 'NAME', true); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id2', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlocks(this.workspace); + parent.nextConnection + .setShadowState({'type': 'stack_block', 'id': 'id1'}); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Next', function() { + const parent = createStackBlocks(this.workspace); + parent.nextConnection.setShadowState( + { + 'type': 'stack_block', + 'id': 'id1', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id2', + }, + }, + } + ); + assertNextHasBlock(parent, false); + assertNextNotHasBlock(parent.getNextBlock()); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id2', + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + }); + + suite('Add - With Shadow Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + return Blockly.serialization.blocks.append( + {'type': 'row_block', 'id': 'id0'}, workspace); + } + + function createStatementBlock(workspace) { + return Blockly.serialization.blocks.append( + {'type': 'statement_block', 'id': 'id0'}, workspace); + } + + function createStackBlock(workspace) { + return Blockly.serialization.blocks.append( + {'type': 'stack_block', 'id': 'id0'}, workspace); + } + + test('Value', function() { + const parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection + .setShadowState({'type': 'row_block', 'id': '1'}); + assertInputHasBlock(parent, 'INPUT', true, '1'); + parent.getInput('INPUT').connection + .setShadowState({'type': 'row_block', 'id': '2'}); + assertInputHasBlock(parent, 'INPUT', true, '2'); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': '2', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Value', function() { + const parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.setShadowState( + { + 'type': 'row_block', + 'id': '1', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'a', + }, + }, + }, + } + ); + assertInputHasBlock(parent, 'INPUT', true, '1'); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'a'); + parent.getInput('INPUT').connection.setShadowState( + { + 'type': 'row_block', + 'id': '2', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'b', + }, + }, + }, + } + ); + assertInputHasBlock(parent, 'INPUT', true, '2'); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'b'); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': '2', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'b', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlock(this.workspace); + parent.getInput('NAME').connection + .setShadowState({'type': 'statement_block', 'id': '1'}); + assertInputHasBlock(parent, 'NAME', true, '1'); + parent.getInput('NAME').connection + .setShadowState({'type': 'statement_block', 'id': '2'}); + assertInputHasBlock(parent, 'NAME', true, '2'); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': '2', + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Statement', function() { + const parent = createStatementBlock(this.workspace); + parent.getInput('NAME').connection.setShadowState( + { + 'type': 'statement_block', + 'id': '1', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'a', + }, + }, + }, + } + ); + assertInputHasBlock(parent, 'NAME', true, '1'); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true, 'a'); + parent.getInput('NAME').connection.setShadowState( + { + 'type': 'statement_block', + 'id': '2', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'b', + }, + }, + }, + } + ); + assertInputHasBlock(parent, 'NAME', true, '2'); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true, 'b'); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': '2', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'b', + }, + }, + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlock(this.workspace); + parent.nextConnection + .setShadowState({'type': 'stack_block', 'id': '1'}); + assertNextHasBlock(parent, true, '1'); + parent.nextConnection + .setShadowState({'type': 'stack_block', 'id': '2'}); + assertNextHasBlock(parent, true, '2'); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': '2', + }, + }, + }, + '' + + '' + + '' + + '' + + '' + ); + }); + + test('Multiple Next', function() { + const parent = createStackBlock(this.workspace); + parent.nextConnection.setShadowState( + { + 'type': 'stack_block', + 'id': '1', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'a', + }, + }, + } + ); + assertNextHasBlock(parent, true, '1'); + assertNextHasBlock(parent.getNextBlock(), true, 'a'); + parent.nextConnection.setShadowState( + { + 'type': 'stack_block', + 'id': '2', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'b', + }, + }, + } + ); + assertNextHasBlock(parent, true, '2'); + assertNextHasBlock(parent.getNextBlock(), true, 'b'); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': '2', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'b', + }, + }, + }, + }, + }, + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + ); + }); + }); + + suite('Remove - No Block Connected', function() { + // These are defined separately in each suite. + function createRowBlocks(workspace) { + return Blockly.serialization.blocks.append( + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + }, + }, + }, + }, + workspace); + } + + function createStatementBlocks(workspace) { + return Blockly.serialization.blocks.append( + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + }, + }, + }, + }, + workspace); + } + + function createStackBlocks(workspace) { + return Blockly.serialization.blocks.append( + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + }, + }, + }, + workspace); + } + + test('Value', function() { + const parent = createRowBlocks(this.workspace); + parent.getInput('INPUT').connection.setShadowState(null); + assertInputNotHasBlock(parent, 'INPUT'); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlocks(this.workspace); + parent.getInput('NAME').connection.setShadowState(null); + assertInputNotHasBlock(parent, 'NAME'); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlocks(this.workspace); + parent.nextConnection.setShadowState(null); + assertNextNotHasBlock(parent); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + }); + + suite('Remove - Block Connected', function() { + // These are defined separately in each suite. + function createRowBlocks(workspace) { + return Blockly.serialization.blocks.append( + { + 'type': 'row_block', + 'id': 'id0', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + 'id': 'id1', + }, + 'block': { + 'type': 'row_block', + 'id': 'id2', + }, + }, + }, + }, + workspace); + } + + function createStatementBlocks(workspace) { + return Blockly.serialization.blocks.append( + { + 'type': 'statement_block', + 'id': 'id0', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + 'id': 'id1', + }, + 'block': { + 'type': 'statement_block', + 'id': 'id2', + }, + }, + }, + }, + workspace); + } + + function createStackBlocks(workspace) { + return Blockly.serialization.blocks.append( + { + 'type': 'stack_block', + 'id': 'id0', + 'next': { + 'shadow': { + 'type': 'stack_block', + 'id': 'id1', + }, + 'block': { + 'type': 'stack_block', + 'id': 'id2', + }, + }, + }, + workspace); + } + + test('Value', function() { + const parent = createRowBlocks(this.workspace); + parent.getInput('INPUT').connection.setShadowState(null); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputNotHasBlock(parent, 'INPUT'); + assertSerialization( + parent, + { + 'type': 'row_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + + test('Statement', function() { + const parent = createStatementBlocks(this.workspace); + parent.getInput('NAME').connection.setShadowState(null); + assertInputHasBlock(parent, 'NAME', false); + parent.getInput('NAME').connection.disconnect(); + assertInputNotHasBlock(parent, 'NAME'); + assertSerialization( + parent, + { + 'type': 'statement_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + + test('Next', function() { + const parent = createStackBlocks(this.workspace); + parent.nextConnection.setShadowState(null); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextNotHasBlock(parent); + assertSerialization( + parent, + { + 'type': 'stack_block', + 'id': 'id0', + }, + '' + + '' + ); + }); + }); + + suite('Add - Connect & Disconnect - Remove', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + return Blockly.serialization.blocks.append( + {'type': 'row_block'}, workspace); + } + + function createStatementBlock(workspace) { + return Blockly.serialization.blocks.append( + {'type': 'statement_block'}, workspace); + } + + function createStackBlock(workspace) { + return Blockly.serialization.blocks.append( + {'type': 'stack_block'}, workspace); + } + + test('Value', function() { + const parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection + .setShadowState({'type': 'row_block'}); + assertInputHasBlock(parent, 'INPUT', true); + const child = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.connect(child.outputConnection); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + parent.getInput('INPUT').connection.setShadowState(null); + assertInputNotHasBlock(parent, 'INPUT'); + }); + + test('Multiple Value', function() { + const parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.setShadowState({ + 'type': 'row_block', + 'inputs': { + 'INPUT': { + 'shadow': { + 'type': 'row_block', + }, + }, + }, + }); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + const child = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.connect(child.outputConnection); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + parent.getInput('INPUT').connection.setShadowState(null); + assertInputNotHasBlock(parent, 'INPUT'); + }); + + test('Statement', function() { + const parent = createStatementBlock(this.workspace); + parent.getInput('NAME').connection + .setShadowState({'type': 'statement_block'}); + assertInputHasBlock(parent, 'NAME', true); + const child = createStatementBlock(this.workspace); + parent.getInput('NAME').connection + .connect(child.previousConnection); + assertInputHasBlock(parent, 'NAME', false); + parent.getInput('NAME').connection.disconnect(); + assertInputHasBlock(parent, 'NAME', true); + parent.getInput('NAME').connection.setShadowState(null); + assertInputNotHasBlock(parent, 'NAME'); + }); + + test('Multiple Statement', function() { + const parent = createStatementBlock(this.workspace); + parent.getInput('NAME').connection.setShadowState({ + 'type': 'statement_block', + 'inputs': { + 'NAME': { + 'shadow': { + 'type': 'statement_block', + }, + }, + }, + }); + assertInputHasBlock(parent, 'NAME', true); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true); + const child = createStatementBlock(this.workspace); + parent.getInput('NAME').connection + .connect(child.previousConnection); + assertInputHasBlock(parent, 'NAME', false); + parent.getInput('NAME').connection.disconnect(); + assertInputHasBlock(parent, 'NAME', true); + assertInputHasBlock( + parent.getInputTargetBlock('NAME'), 'NAME', true); + parent.getInput('NAME').connection.setShadowState(null); + assertInputNotHasBlock(parent, 'NAME'); + }); + + test('Next', function() { + const parent = createStackBlock(this.workspace); + parent.nextConnection.setShadowState({'type': 'stack_block'}); + const child = createStatementBlock(this.workspace); + parent.nextConnection.connect(child.previousConnection); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + parent.nextConnection.setShadowState(null); + assertNextNotHasBlock(parent); + }); + + test('Multiple Next', function() { + const parent = createStackBlock(this.workspace); + parent.nextConnection.setShadowState({ + 'type': 'stack_block', + 'next': { + 'shadow': { + 'type': 'stack_block', + }, + }, + }); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + const child = createStatementBlock(this.workspace); + parent.nextConnection.connect(child.previousConnection); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + parent.nextConnection.setShadowState(null); + assertNextNotHasBlock(parent); + }); + }); + + suite('Invalid', function() { + test('Attach to output', function() { + const block = this.workspace.newBlock('row_block'); + chai.assert.throws(() => + block.outputConnection.setShadowState({'type': 'row_block'})); + }); + + test('Attach to previous', function() { + const block = this.workspace.newBlock('stack_block'); + chai.assert.throws(() => + block.previousConnection.setShadowState( + {'type': 'stack_block'})); + }); + + test('Missing output', function() { + const block = this.workspace.newBlock('row_block'); + chai.assert.throws(() => + block.outputConnection.setShadowState({'type': 'stack_block'})); + }); + + test('Missing previous', function() { + const block = this.workspace.newBlock('stack_block'); + chai.assert.throws(() => + block.previousConnection.setShadowState({'type': 'row_block'})); + }); + + test('Invalid connection checks, output', function() { + const block = this.workspace.newBlock('logic_operation'); + chai.assert.throws(() => + block.getInput('A').connection.setShadowState( + {'type': 'math_number'})); + }); + + test('Invalid connection checks, previous', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "stack_checks_block", + "message0": "", + "previousStatement": "check 1", + "nextStatement": "check 2", + }]); + const block = this.workspace.newBlock('stack_checks_block'); + chai.assert.throws(() => + block.nextConnection.setShadowState( + {'type': 'stack_checks_block'})); + }); + }); + }); + }); + }); + }); + + suite('Connect', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + Blockly.defineBlocksWithJsonArray([ + { + "type": "stack_block", + "message0": "%1", + "args0": [ + { + "type": "field_input", + "name": "FIELD", + "text": "default", + }, + ], + "previousStatement": 'check1', + "nextStatement": 'check1', + }, + { + "type": "stack_block_1to2", + "message0": "", + "previousStatement": 'check1', + "nextStatement": 'check2', + }, + { + "type": "stack_block_2to1", + "message0": "", + "previousStatement": 'check2', + "nextStatement": 'check1', + }, + { + "type": "stack_block_noend", + "message0": "", + "previousStatement": 'check1', + }, + { + "type": "row_block", + "message0": "%1 %2", + "args0": [ + { + "type": "field_input", + "name": "FIELD", + "text": "default", + }, + { + "type": "input_value", + "name": "INPUT", + "check": 'check1', + }, + ], + "output": 'check1', + }, + { + "type": "row_block_1to2", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + "check": 'check1', + }, + ], + "output": 'check2', + }, + { + "type": "row_block_2to1", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + "check": 'check2', + }, + ], + "output": 'check1', + }, + { + "type": "row_block_noend", + "message0": "", + "output": 'check1', + }, + { + "type": "row_block_multiple_inputs", + "message0": "%1 %2", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + "check": 'check1', + }, + { + "type": "input_value", + "name": "INPUT2", + "check": 'check1', + }, + ], + "output": 'check1', + }, + { + 'type': 'output_to_statements', + 'message0': '%1 %2', + 'args0': [ + { + 'type': 'input_statement', + 'name': 'INPUT', + 'check': 'check1', + }, + { + 'type': 'input_statement', + 'name': 'INPUT2', + 'check': 'check1', + }, + ], + 'output': 'check1', + }, + { + "type": "statement_block", + "message0": "%1 %2", + "args0": [ + { + "type": "field_input", + "name": "FIELD", + "text": "default", + }, + { + "type": "input_statement", + "name": "NAME", + "check": 'check1', + }, + ], + "previousStatement": 'check1', + "nextStatement": 'check1', + }, + { + "type": "statement_block_1to2", + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "NAME", + "check": 'check1', + }, + ], + "previousStatement": 'check1', + "nextStatement": 'check2', + }, + { + "type": "statement_block_2to1", + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "NAME", + "check": 'check2', + }, + ], + "previousStatement": 'check2', + "nextStatement": 'check1', + }, + { + "type": "statement_block_noend", + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "NAME", + "check": 'check1', + }, + ], + "previousStatement": 'check1', + }, + ]); + + // Used to make sure we don't get stray shadow blocks or anything. + this.assertBlockCount = function(count) { + chai.assert.equal(this.workspace.getAllBlocks().length, count); + }; + }); + + suite('Disconnect from old parent', function() { + test('Value', function() { + const oldParent = this.workspace.newBlock('row_block'); + const newParent = this.workspace.newBlock('row_block'); + const child = this.workspace.newBlock('row_block'); + + oldParent.getInput('INPUT').connection.connect(child.outputConnection); + newParent.getInput('INPUT').connection.connect(child.outputConnection); + + chai.assert.isFalse( + oldParent.getInput('INPUT').connection.isConnected()); + this.assertBlockCount(3); + }); + + test('Statement', function() { + const oldParent = this.workspace.newBlock('statement_block'); + const newParent = this.workspace.newBlock('statement_block'); + const child = this.workspace.newBlock('stack_block'); + + oldParent.getInput('NAME').connection + .connect(child.previousConnection); + newParent.getInput('NAME').connection + .connect(child.previousConnection); + + chai.assert.isFalse( + oldParent.getInput('NAME').connection.isConnected()); + this.assertBlockCount(3); + }); + + test('Next', function() { + const oldParent = this.workspace.newBlock('stack_block'); + const newParent = this.workspace.newBlock('stack_block'); + const child = this.workspace.newBlock('stack_block'); + + oldParent.nextConnection.connect(child.previousConnection); + newParent.nextConnection.connect(child.previousConnection); + + chai.assert.isFalse(oldParent.nextConnection.isConnected()); + this.assertBlockCount(3); + }); + }); + + suite('Shadow dissolves', function() { + test('Value', function() { + const newParent = this.workspace.newBlock('row_block'); + const child = this.workspace.newBlock('row_block'); + const xml = Blockly.Xml.textToDom( + '' + ); + newParent.getInput('INPUT').connection.setShadowDom(xml); + chai.assert.isTrue(newParent.getInputTargetBlock('INPUT').isShadow()); + + newParent.getInput('INPUT').connection.connect(child.outputConnection); + + chai.assert.isFalse(newParent.getInputTargetBlock('INPUT').isShadow()); + this.assertBlockCount(2); + }); + + test('Statement', function() { + const newParent = this.workspace.newBlock('statement_block'); + const child = this.workspace.newBlock('stack_block'); + const xml = Blockly.Xml.textToDom( + '' + ); + newParent.getInput('NAME').connection.setShadowDom(xml); + chai.assert.isTrue( + newParent.getInputTargetBlock('NAME').isShadow()); + + newParent.getInput('NAME').connection + .connect(child.previousConnection); + + chai.assert.isFalse( + newParent.getInputTargetBlock('NAME').isShadow()); + this.assertBlockCount(2); + }); + + test('Next', function() { + const newParent = this.workspace.newBlock('stack_block'); + const child = this.workspace.newBlock('stack_block'); + const xml = Blockly.Xml.textToDom( + '' + ); + newParent.nextConnection.setShadowDom(xml); + chai.assert.isTrue(newParent.getNextBlock().isShadow()); + + newParent.nextConnection.connect(child.previousConnection); + + chai.assert.isFalse(newParent.getNextBlock().isShadow()); + this.assertBlockCount(2); + }); + }); + + suite('Saving shadow values', function() { + test('Value', function() { + const newParent = this.workspace.newBlock('row_block'); + const child = this.workspace.newBlock('row_block'); + const xml = Blockly.Xml.textToDom( + '' + ); + newParent.getInput('INPUT').connection.setShadowDom(xml); + newParent.getInputTargetBlock('INPUT').setFieldValue('new', 'FIELD'); + + newParent.getInput('INPUT').connection.connect(child.outputConnection); + newParent.getInput('INPUT').connection.disconnect(); + + const target = newParent.getInputTargetBlock('INPUT'); + chai.assert.isTrue(target.isShadow()); + chai.assert.equal(target.getFieldValue('FIELD'), 'new'); + this.assertBlockCount(3); + }); + + test('Statement', function() { + const newParent = this.workspace.newBlock('statement_block'); + const child = this.workspace.newBlock('stack_block'); + const xml = Blockly.Xml.textToDom( + '' + ); + newParent.getInput('NAME').connection.setShadowDom(xml); + newParent.getInputTargetBlock('NAME') + .setFieldValue('new', 'FIELD'); + + newParent.getInput('NAME').connection + .connect(child.previousConnection); + newParent.getInput('NAME').connection.disconnect(); + + const target = newParent.getInputTargetBlock('NAME'); + chai.assert.isTrue(target.isShadow()); + chai.assert.equal(target.getFieldValue('FIELD'), 'new'); + this.assertBlockCount(3); + }); + + test('Next', function() { + const newParent = this.workspace.newBlock('stack_block'); + const child = this.workspace.newBlock('stack_block'); + const xml = Blockly.Xml.textToDom( + '' + ); + newParent.nextConnection.setShadowDom(xml); + newParent.getNextBlock().setFieldValue('new', 'FIELD'); + + newParent.nextConnection.connect(child.previousConnection); + newParent.nextConnection.disconnect(); + + const target = newParent.getNextBlock(); + chai.assert.isTrue(target.isShadow()); + chai.assert.equal(target.getFieldValue('FIELD'), 'new'); + this.assertBlockCount(3); + }); + }); + + suite('Reattach or bump orphan', function() { + suite('Value', function() { + suite('No available spots', function() { + test('No connection', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock('row_block_noend'); + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + + test('All statements', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock('output_to_statements'); + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + + test('Bad checks', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock('row_block_2to1'); + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + + test('Through different types', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock('row_block_2to1'); + const otherChild = this.workspace.newBlock('row_block_1to2'); + + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + newChild.getInput('INPUT').connection + .connect(otherChild.outputConnection); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + }); + + suite('Multiple available spots', function() { + suite('No shadows', function() { + test('Top block', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock( + 'row_block_multiple_inputs'); + + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + + test('Child blocks', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock( + 'row_block_multiple_inputs'); + const childX = this.workspace.newBlock('row_block'); + const childY = this.workspace.newBlock('row_block'); + + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + newChild.getInput('INPUT').connection + .connect(childX.outputConnection); + newChild.getInput('INPUT2').connection + .connect(childY.outputConnection); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + + test('Spots filled', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock( + 'row_block_multiple_inputs'); + const otherChild = this.workspace.newBlock('row_block_noend'); + + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + newChild.getInput('INPUT').connection + .connect(otherChild.outputConnection); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + }); + + suite('Shadows', function() { + test('Top block', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock( + 'row_block_multiple_inputs'); + + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + newChild.getInput('INPUT').connection.setShadowDom( + Blockly.Xml.textToDom('') + .firstChild); + newChild.getInput('INPUT2').connection.setShadowDom( + Blockly.Xml.textToDom('') + .firstChild); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + + test('Child blocks', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock( + 'row_block_multiple_inputs'); + const childX = this.workspace.newBlock('row_block'); + const childY = this.workspace.newBlock('row_block'); + + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + newChild.getInput('INPUT').connection + .connect(childX.outputConnection); + newChild.getInput('INPUT2').connection + .connect(childY.outputConnection); + childX.getInput('INPUT').connection.setShadowDom( + Blockly.Xml.textToDom('') + .firstChild); + childY.getInput('INPUT').connection.setShadowDom( + Blockly.Xml.textToDom('') + .firstChild); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + + test('Spots filled', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock( + 'row_block_multiple_inputs'); + const otherChild = this.workspace.newBlock('row_block_noend'); + + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + newChild.getInput('INPUT').connection + .connect(otherChild.outputConnection); + newChild.getInput('INPUT2').connection.setShadowDom( + Blockly.Xml.textToDom('') + .firstChild); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isFalse( + oldChild.outputConnection.isConnected()); + }); + }); + }); + + suite('Single available spot', function() { + test('No shadows', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock('row_block'); + + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isTrue( + newChild.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + newChild.getInputTargetBlock('INPUT'), oldChild); + }); + + test('Shadows', function() { + const parent = this.workspace.newBlock('row_block'); + const oldChild = this.workspace.newBlock('row_block'); + const newChild = this.workspace.newBlock('row_block'); + + parent.getInput('INPUT').connection + .connect(oldChild.outputConnection); + newChild.getInput('INPUT').connection.setShadowDom( + Blockly.Xml.textToDom('') + .firstChild); + + parent.getInput('INPUT').connection + .connect(newChild.outputConnection); + + chai.assert.isTrue( + parent.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('INPUT'), newChild); + chai.assert.isTrue( + newChild.getInput('INPUT').connection.isConnected()); + chai.assert.equal( + newChild.getInputTargetBlock('INPUT'), oldChild); + }); + }); + }); + + suite('Statement', function() { + suite('No shadows', function() { + test('Simple', function() { + const parent = this.workspace.newBlock('statement_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block'); + parent.getInput('NAME').connection + .connect(oldChild.previousConnection); + + parent.getInput('NAME').connection + .connect(newChild.previousConnection); + + chai.assert.isTrue( + parent.getInput('NAME').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('NAME'), newChild); + chai.assert.isTrue(newChild.nextConnection.isConnected()); + chai.assert.equal(newChild.getNextBlock(), oldChild); + this.assertBlockCount(3); + }); + + test('Bad check in between', function() { + const parent = this.workspace.newBlock('statement_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild1 = this.workspace.newBlock('stack_block_1to2'); + const newChild2 = this.workspace.newBlock('stack_block_2to1'); + parent.getInput('NAME').connection + .connect(oldChild.previousConnection); + newChild1.nextConnection.connect(newChild2.previousConnection); + + parent.getInput('NAME').connection + .connect(newChild1.previousConnection); + + chai.assert.isTrue( + parent.getInput('NAME').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('NAME'), newChild1); + chai.assert.isTrue(newChild2.nextConnection.isConnected()); + chai.assert.equal(newChild2.getNextBlock(), oldChild); + this.assertBlockCount(4); + }); + + test('Bad check at end', function() { + const parent = this.workspace.newBlock('statement_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block_1to2'); + parent.getInput('NAME').connection + .connect(oldChild.previousConnection); + const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); + + parent.getInput('NAME').connection + .connect(newChild.previousConnection); + + chai.assert.isTrue( + parent.getInput('NAME').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('NAME'), newChild); + chai.assert.isFalse(newChild.nextConnection.isConnected()); + chai.assert.isTrue(spy.calledOnce); + this.assertBlockCount(3); + }); + + test('No end connection', function() { + const parent = this.workspace.newBlock('statement_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block_noend'); + parent.getInput('NAME').connection + .connect(oldChild.previousConnection); + const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); + + parent.getInput('NAME').connection + .connect(newChild.previousConnection); + + chai.assert.isTrue( + parent.getInput('NAME').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('NAME'), newChild); + chai.assert.isTrue(spy.calledOnce); + this.assertBlockCount(3); + }); + }); + + suite('Shadows', function() { + test('Simple', function() { + const parent = this.workspace.newBlock('statement_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block'); + parent.getInput('NAME').connection + .connect(oldChild.previousConnection); + const xml = Blockly.Xml.textToDom( + '' + ); + newChild.nextConnection.setShadowDom(xml); + + parent.getInput('NAME').connection + .connect(newChild.previousConnection); + + chai.assert.isTrue( + parent.getInput('NAME').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('NAME'), newChild); + chai.assert.isTrue(newChild.nextConnection.isConnected()); + chai.assert.equal(newChild.getNextBlock(), oldChild); + this.assertBlockCount(3); + }); + + test('Bad check in between', function() { + const parent = this.workspace.newBlock('statement_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild1 = this.workspace.newBlock('stack_block_1to2'); + const newChild2 = this.workspace.newBlock('stack_block_2to1'); + parent.getInput('NAME').connection + .connect(oldChild.previousConnection); + newChild1.nextConnection.connect(newChild2.previousConnection); + const xml = Blockly.Xml.textToDom( + '' + ); + newChild2.nextConnection.setShadowDom(xml); + + parent.getInput('NAME').connection + .connect(newChild1.previousConnection); + + chai.assert.isTrue( + parent.getInput('NAME').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('NAME'), newChild1); + chai.assert.isTrue(newChild2.nextConnection.isConnected()); + chai.assert.equal(newChild2.getNextBlock(), oldChild); + this.assertBlockCount(4); + }); + + test('Bad check at end', function() { + const parent = this.workspace.newBlock('statement_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block_1to2'); + parent.getInput('NAME').connection + .connect(oldChild.previousConnection); + const xml = Blockly.Xml.textToDom( + '' + ); + newChild.nextConnection.setShadowDom(xml); + const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); + + parent.getInput('NAME').connection + .connect(newChild.previousConnection); + + chai.assert.isTrue( + parent.getInput('NAME').connection.isConnected()); + chai.assert.equal( + parent.getInputTargetBlock('NAME'), newChild); + chai.assert.isTrue(newChild.nextConnection.isConnected()); + chai.assert.isTrue(newChild.getNextBlock().isShadow()); + chai.assert.isTrue(spy.calledOnce); + this.assertBlockCount(4); + }); + }); + }); + + suite('Next', function() { + suite('No shadows', function() { + test('Simple', function() { + const parent = this.workspace.newBlock('stack_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block'); + parent.nextConnection.connect(oldChild.previousConnection); + + parent.nextConnection.connect(newChild.previousConnection); + + chai.assert.isTrue(parent.nextConnection.isConnected()); + chai.assert.equal(parent.getNextBlock(), newChild); + chai.assert.isTrue(newChild.nextConnection.isConnected()); + chai.assert.equal(newChild.getNextBlock(), oldChild); + this.assertBlockCount(3); + }); + + test('Bad check in between', function() { + const parent = this.workspace.newBlock('stack_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild1 = this.workspace.newBlock('stack_block_1to2'); + const newChild2 = this.workspace.newBlock('stack_block_2to1'); + parent.nextConnection.connect(oldChild.previousConnection); + newChild1.nextConnection.connect(newChild2.previousConnection); + + parent.nextConnection.connect(newChild1.previousConnection); + + chai.assert.isTrue(parent.nextConnection.isConnected()); + chai.assert.equal(parent.getNextBlock(), newChild1); + chai.assert.isTrue(newChild2.nextConnection.isConnected()); + chai.assert.equal(newChild2.getNextBlock(), oldChild); + this.assertBlockCount(4); + }); + + test('Bad check at end', function() { + const parent = this.workspace.newBlock('stack_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block_1to2'); + parent.nextConnection.connect(oldChild.previousConnection); + const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); + + parent.nextConnection.connect(newChild.previousConnection); + + chai.assert.isTrue(parent.nextConnection.isConnected()); + chai.assert.equal(parent.getNextBlock(), newChild); + chai.assert.isFalse(newChild.nextConnection.isConnected()); + chai.assert.isTrue(spy.calledOnce); + this.assertBlockCount(3); + }); + + test('No end connection', function() { + const parent = this.workspace.newBlock('stack_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block_noend'); + parent.nextConnection.connect(oldChild.previousConnection); + const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); + + parent.nextConnection.connect(newChild.previousConnection); + + chai.assert.isTrue(parent.nextConnection.isConnected()); + chai.assert.equal(parent.getNextBlock(), newChild); + chai.assert.isTrue(spy.calledOnce); + this.assertBlockCount(3); + }); + }); + + suite('Shadows', function() { + test('Simple', function() { + const parent = this.workspace.newBlock('stack_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block'); + parent.nextConnection.connect(oldChild.previousConnection); + const xml = Blockly.Xml.textToDom( + '' + ); + newChild.nextConnection.setShadowDom(xml); + + parent.nextConnection.connect(newChild.previousConnection); + + chai.assert.isTrue(parent.nextConnection.isConnected()); + chai.assert.equal(parent.getNextBlock(), newChild); + chai.assert.isTrue(newChild.nextConnection.isConnected()); + chai.assert.equal(newChild.getNextBlock(), oldChild); + this.assertBlockCount(3); + }); + + test('Bad check in between', function() { + const parent = this.workspace.newBlock('stack_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild1 = this.workspace.newBlock('stack_block_1to2'); + const newChild2 = this.workspace.newBlock('stack_block_2to1'); + parent.nextConnection.connect(oldChild.previousConnection); + newChild1.nextConnection.connect(newChild2.previousConnection); + const xml = Blockly.Xml.textToDom( + '' + ); + newChild2.nextConnection.setShadowDom(xml); + + parent.nextConnection.connect(newChild1.previousConnection); + + chai.assert.isTrue(parent.nextConnection.isConnected()); + chai.assert.equal(parent.getNextBlock(), newChild1); + chai.assert.isTrue(newChild2.nextConnection.isConnected()); + chai.assert.equal(newChild2.getNextBlock(), oldChild); + this.assertBlockCount(4); + }); + + test('Bad check at end', function() { + const parent = this.workspace.newBlock('stack_block'); + const oldChild = this.workspace.newBlock('stack_block'); + const newChild = this.workspace.newBlock('stack_block_1to2'); + parent.nextConnection.connect(oldChild.previousConnection); + const xml = Blockly.Xml.textToDom( + '' + ); + newChild.nextConnection.setShadowDom(xml); + const spy = sinon.spy(oldChild.previousConnection, 'onFailedConnect'); + + parent.nextConnection.connect(newChild.previousConnection); + + chai.assert.isTrue(parent.nextConnection.isConnected()); + chai.assert.equal(parent.getNextBlock(), newChild); + chai.assert.isTrue(newChild.nextConnection.isConnected()); + chai.assert.isTrue(newChild.getNextBlock().isShadow()); + chai.assert.isTrue(spy.calledOnce); + this.assertBlockCount(4); + }); + }); + }); + }); + }); +}); diff --git a/tests/mocha/contextmenu_items_test.js b/tests/mocha/contextmenu_items_test.js index c9b9b8127a6..e243894a9ff 100644 --- a/tests/mocha/contextmenu_items_test.js +++ b/tests/mocha/contextmenu_items_test.js @@ -1,414 +1,414 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.contextMenuItem'); - -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Context Menu Items', function() { - setup(function() { - sharedTestSetup.call(this); - - // Creates a WorkspaceSVG - const toolbox = document.getElementById('toolbox-categories'); - this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); - - this.registry = Blockly.ContextMenuRegistry.registry; - this.registry.reset(); - Blockly.ContextMenuItems.registerDefaultOptions(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('Workspace Items', function() { - setup(function() { - this.scope = {workspace: this.workspace}; - }); - - suite('undo', function() { - setup(function() { - this.undoOption = this.registry.getItem('undoWorkspace'); - }); - - test('Disabled when nothing to undo', function() { - const precondition = this.undoOption.preconditionFn(this.scope); - chai.assert.equal(precondition, 'disabled', - 'Should be disabled when there is nothing to undo'); - }); - - test('Enabled when something to undo', function() { - // Create a new block, which should be undoable. - this.workspace.newBlock('text'); - const precondition = this.undoOption.preconditionFn(this.scope); - chai.assert.equal(precondition, 'enabled', - 'Should be enabled when there are actions to undo'); - }); - - test('Undoes adding a new block', function() { - this.workspace.newBlock('text'); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 1); - this.undoOption.callback(this.scope); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 0, - 'Should be no blocks after undo'); - }); - - test('Has correct label', function() { - chai.assert.equal(this.undoOption.displayText(), 'Undo'); - }); - }); - - suite('Redo', function() { - setup(function() { - this.redoOption = this.registry.getItem('redoWorkspace'); - }); - - test('Disabled when nothing to redo', function() { - // Create a new block. There should be something to undo, but not redo. - this.workspace.newBlock('text'); - const precondition = this.redoOption.preconditionFn(this.scope); - chai.assert.equal(precondition, 'disabled', - 'Should be disabled when there is nothing to redo'); - }); - - test('Enabled when something to redo', function() { - // Create a new block, then undo it, which means there is something to redo. - this.workspace.newBlock('text'); - this.workspace.undo(false); - const precondition = this.redoOption.preconditionFn(this.scope); - chai.assert.equal(precondition, 'enabled', - 'Should be enabled when there are actions to redo'); - }); - - test('Redoes adding new block', function() { - // Add a new block, then undo it, then redo it. - this.workspace.newBlock('text'); - this.workspace.undo(false); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); - this.redoOption.callback(this.scope); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 1, - 'Should be 1 block after redo'); - }); - - test('Has correct label', function() { - chai.assert.equal(this.redoOption.displayText(), 'Redo'); - }); - }); - - suite('Cleanup', function() { - setup(function() { - this.cleanupOption = this.registry.getItem('cleanWorkspace'); - this.cleanupStub = sinon.stub(this.workspace, 'cleanUp'); - }); - - test('Enabled when multiple blocks', function() { - this.workspace.newBlock('text'); - this.workspace.newBlock('text'); - chai.assert.equal(this.cleanupOption.preconditionFn(this.scope), 'enabled', - 'Should be enabled if there are multiple blocks'); - }); - - test('Disabled when no blocks', function() { - chai.assert.equal(this.cleanupOption.preconditionFn(this.scope), 'disabled', - 'Should be disabled if there are no blocks'); - }); - - test('Hidden when not movable', function() { - sinon.stub(this.workspace, 'isMovable').returns(false); - chai.assert.equal(this.cleanupOption.preconditionFn(this.scope), 'hidden', - 'Should be hidden if the workspace is not movable'); - }); - - test('Calls workspace cleanup', function() { - this.cleanupOption.callback(this.scope); - sinon.assert.calledOnce(this.cleanupStub); - }); - - test('Has correct label', function() { - chai.assert.equal(this.cleanupOption.displayText(), 'Clean up Blocks'); - }); - }); - - suite('Collapse', function() { - setup(function() { - this.collapseOption = this.registry.getItem('collapseWorkspace'); - }); - - test('Enabled when uncollapsed blocks', function() { - this.workspace.newBlock('text'); - const block2 = this.workspace.newBlock('text'); - block2.setCollapsed(true); - chai.assert.equal(this.collapseOption.preconditionFn(this.scope), 'enabled', - 'Should be enabled when any blocks are expanded'); - }); - - test('Disabled when all blocks collapsed', function() { - this.workspace.newBlock('text').setCollapsed(true); - chai.assert.equal(this.collapseOption.preconditionFn(this.scope), 'disabled', - 'Should be disabled when no blocks are expanded'); - }); - - test('Hidden when no collapse option', function() { - const workspaceWithOptions = new Blockly.Workspace(new Blockly.Options({collapse: false})); - this.scope.workspace = workspaceWithOptions; - - try { - chai.assert.equal(this.collapseOption.preconditionFn(this.scope), 'hidden', - 'Should be hidden if collapse is disabled in options'); - } finally { - workspaceTeardown.call(this, workspaceWithOptions); - } - }); - - test('Collapses all blocks', function() { - // All blocks should be collapsed, even if some already were. - const block1 = this.workspace.newBlock('text'); - const block2 = this.workspace.newBlock('text'); - // Need to render block to properly collapse it. - block1.initSvg(); - block1.render(); - block1.setCollapsed(true); - - this.collapseOption.callback(this.scope); - this.clock.runAll(); - - chai.assert.isTrue(block1.isCollapsed(), - 'Previously collapsed block should still be collapsed'); - chai.assert.isTrue(block2.isCollapsed(), - 'Previously expanded block should now be collapsed'); - }); - - test('Has correct label', function() { - chai.assert.equal(this.collapseOption.displayText(), 'Collapse Blocks'); - }); - }); - - suite('Expand', function() { - setup(function() { - this.expandOption = this.registry.getItem('expandWorkspace'); - }); - - test('Enabled when collapsed blocks', function() { - this.workspace.newBlock('text'); - const block2 = this.workspace.newBlock('text'); - block2.setCollapsed(true); - - chai.assert.equal(this.expandOption.preconditionFn(this.scope), 'enabled', - 'Should be enabled when any blocks are collapsed'); - }); - - test('Disabled when no collapsed blocks', function() { - this.workspace.newBlock('text'); - chai.assert.equal(this.expandOption.preconditionFn(this.scope), 'disabled', - 'Should be disabled when no blocks are collapsed'); - }); - - test('Hidden when no collapse option', function() { - const workspaceWithOptions = new Blockly.Workspace(new Blockly.Options({collapse: false})); - this.scope.workspace = workspaceWithOptions; - - try { - chai.assert.equal(this.expandOption.preconditionFn(this.scope), 'hidden', - 'Should be hidden if collapse is disabled in options'); - } finally { - workspaceTeardown.call(this, workspaceWithOptions); - } - }); - - test('Expands all blocks', function() { - // All blocks should be expanded, even if some already were. - const block1 = this.workspace.newBlock('text'); - const block2 = this.workspace.newBlock('text'); - // Need to render block to properly collapse it. - block2.initSvg(); - block2.render(); - block2.setCollapsed(true); - - this.expandOption.callback(this.scope); - this.clock.runAll(); - - chai.assert.isFalse(block1.isCollapsed(), - 'Previously expanded block should still be expanded'); - chai.assert.isFalse(block2.isCollapsed(), - 'Previously collapsed block should now be expanded'); - }); - - test('Has correct label', function() { - chai.assert.equal(this.expandOption.displayText(), 'Expand Blocks'); - }); - }); - - suite('Delete', function() { - setup(function() { - this.deleteOption = this.registry.getItem('workspaceDelete'); - }); - - test('Enabled when blocks to delete', function() { - this.workspace.newBlock('text'); - chai.assert.equal(this.deleteOption.preconditionFn(this.scope), 'enabled'); - }); - - test('Disabled when no blocks to delete', function() { - chai.assert.equal(this.deleteOption.preconditionFn(this.scope), 'disabled'); - }); - - test('Deletes all blocks after confirming', function() { - // Mocks the confirmation dialog and calls the callback with 'true' simulating ok. - const confirmStub = sinon.stub( - Blockly.dialog, 'confirm').callsArgWith(1, true); - - this.workspace.newBlock('text'); - this.workspace.newBlock('text'); - this.deleteOption.callback(this.scope); - this.clock.runAll(); - sinon.assert.calledOnce(confirmStub); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); - }); - - test('Does not delete blocks if not confirmed', function() { - // Mocks the confirmation dialog and calls the callback with 'false' simulating cancel. - const confirmStub = sinon.stub( - Blockly.dialog, 'confirm').callsArgWith(1, false); - - this.workspace.newBlock('text'); - this.workspace.newBlock('text'); - this.deleteOption.callback(this.scope); - this.clock.runAll(); - sinon.assert.calledOnce(confirmStub); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 2); - }); - - test('No dialog for single block', function() { - const confirmStub = sinon.stub(Blockly.dialog, 'confirm'); - this.workspace.newBlock('text'); - this.deleteOption.callback(this.scope); - this.clock.runAll(); - - sinon.assert.notCalled(confirmStub); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); - }); - - test('Has correct label for multiple blocks', function() { - this.workspace.newBlock('text'); - this.workspace.newBlock('text'); - - chai.assert.equal(this.deleteOption.displayText(this.scope), 'Delete 2 Blocks'); - }); - - test('Has correct label for single block', function() { - this.workspace.newBlock('text'); - chai.assert.equal(this.deleteOption.displayText(this.scope), 'Delete Block'); - }); - }); - }); - - suite('Block Items', function() { - setup(function() { - this.block = this.workspace.newBlock('text'); - this.scope = {block: this.block}; - }); - - suite('Duplicate', function() { - setup(function() { - this.duplicateOption = this.registry.getItem('blockDuplicate'); - }); - - test('Enabled when block is duplicatable', function() { - // Block is duplicatable by default - chai.assert.equal(this.duplicateOption.preconditionFn(this.scope), 'enabled'); - }); - - test('Disabled when block is not dupicatable', function() { - sinon.stub(this.block, 'isDuplicatable').returns(false); - chai.assert.equal(this.duplicateOption.preconditionFn(this.scope), 'disabled'); - }); - - test('Hidden when in flyout', function() { - this.block.isInFlyout = true; - chai.assert.equal(this.duplicateOption.preconditionFn(this.scope), 'hidden'); - }); - - test('Calls duplicate', function() { - const spy = sinon.spy(Blockly.clipboard, 'duplicate'); - - this.duplicateOption.callback(this.scope); - - sinon.assert.calledOnce(spy); - sinon.assert.calledWith(spy, this.block); - }); - - test('Has correct label', function() { - chai.assert.equal(this.duplicateOption.displayText(), 'Duplicate'); - }); - }); - - suite('Comment', function() { - setup(function() { - this.commentOption = this.registry.getItem('blockComment'); - }); - - test('Enabled for normal block', function() { - chai.assert.equal(this.commentOption.preconditionFn(this.scope), 'enabled'); - }); - - test('Hidden for IE', function() { - const oldState = Blockly.utils.userAgent.IE; - try { - Blockly.utils.userAgent.IE = true; - chai.assert.equal(this.commentOption.preconditionFn(this.scope), 'hidden'); - } finally { - Blockly.utils.userAgent.IE = oldState; - } - }); - - test('Hidden for collapsed block', function() { - // Must render block to collapse it properly. - this.block.initSvg(); - this.block.render(); - this.block.setCollapsed(true); - - chai.assert.equal(this.commentOption.preconditionFn(this.scope), 'hidden'); - }); - - test('Creates comment if one did not exist', function() { - chai.assert.isNull(this.block.getCommentIcon(), 'New block should not have a comment'); - this.commentOption.callback(this.scope); - chai.assert.exists(this.block.getCommentIcon()); - chai.assert.isEmpty(this.block.getCommentText(), 'Block should have empty comment text'); - }); - - test('Removes comment if block had one', function() { - this.block.setCommentText('Test comment'); - this.commentOption.callback(this.scope); - chai.assert.isNull(this.block.getCommentText(), - 'Block should not have comment after removal'); - }); - - test('Has correct label for add comment', function() { - chai.assert.equal(this.commentOption.displayText(this.scope), 'Add Comment'); - }); - - test('Has correct label for remove comment', function() { - this.block.setCommentText('Test comment'); - chai.assert.equal(this.commentOption.displayText(this.scope), 'Remove Comment'); - }); - }); - - suite('Inline Variables', function() { - setup(function() { - this.inlineOption = this.registry.getItem('blockInline'); - }); - - test('Enabled when inputs to inline', function() { - this.block.appendValueInput('test1'); - this.block.appendValueInput('test2'); - chai.assert.equal(this.inlineOption.preconditionFn(this.scope), 'enabled'); - }); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.contextMenuItem'); + +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Context Menu Items', function() { + setup(function() { + sharedTestSetup.call(this); + + // Creates a WorkspaceSVG + const toolbox = document.getElementById('toolbox-categories'); + this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); + + this.registry = Blockly.ContextMenuRegistry.registry; + this.registry.reset(); + Blockly.ContextMenuItems.registerDefaultOptions(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('Workspace Items', function() { + setup(function() { + this.scope = {workspace: this.workspace}; + }); + + suite('undo', function() { + setup(function() { + this.undoOption = this.registry.getItem('undoWorkspace'); + }); + + test('Disabled when nothing to undo', function() { + const precondition = this.undoOption.preconditionFn(this.scope); + chai.assert.equal(precondition, 'disabled', + 'Should be disabled when there is nothing to undo'); + }); + + test('Enabled when something to undo', function() { + // Create a new block, which should be undoable. + this.workspace.newBlock('text'); + const precondition = this.undoOption.preconditionFn(this.scope); + chai.assert.equal(precondition, 'enabled', + 'Should be enabled when there are actions to undo'); + }); + + test('Undoes adding a new block', function() { + this.workspace.newBlock('text'); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 1); + this.undoOption.callback(this.scope); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0, + 'Should be no blocks after undo'); + }); + + test('Has correct label', function() { + chai.assert.equal(this.undoOption.displayText(), 'Undo'); + }); + }); + + suite('Redo', function() { + setup(function() { + this.redoOption = this.registry.getItem('redoWorkspace'); + }); + + test('Disabled when nothing to redo', function() { + // Create a new block. There should be something to undo, but not redo. + this.workspace.newBlock('text'); + const precondition = this.redoOption.preconditionFn(this.scope); + chai.assert.equal(precondition, 'disabled', + 'Should be disabled when there is nothing to redo'); + }); + + test('Enabled when something to redo', function() { + // Create a new block, then undo it, which means there is something to redo. + this.workspace.newBlock('text'); + this.workspace.undo(false); + const precondition = this.redoOption.preconditionFn(this.scope); + chai.assert.equal(precondition, 'enabled', + 'Should be enabled when there are actions to redo'); + }); + + test('Redoes adding new block', function() { + // Add a new block, then undo it, then redo it. + this.workspace.newBlock('text'); + this.workspace.undo(false); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); + this.redoOption.callback(this.scope); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 1, + 'Should be 1 block after redo'); + }); + + test('Has correct label', function() { + chai.assert.equal(this.redoOption.displayText(), 'Redo'); + }); + }); + + suite('Cleanup', function() { + setup(function() { + this.cleanupOption = this.registry.getItem('cleanWorkspace'); + this.cleanupStub = sinon.stub(this.workspace, 'cleanUp'); + }); + + test('Enabled when multiple blocks', function() { + this.workspace.newBlock('text'); + this.workspace.newBlock('text'); + chai.assert.equal(this.cleanupOption.preconditionFn(this.scope), 'enabled', + 'Should be enabled if there are multiple blocks'); + }); + + test('Disabled when no blocks', function() { + chai.assert.equal(this.cleanupOption.preconditionFn(this.scope), 'disabled', + 'Should be disabled if there are no blocks'); + }); + + test('Hidden when not movable', function() { + sinon.stub(this.workspace, 'isMovable').returns(false); + chai.assert.equal(this.cleanupOption.preconditionFn(this.scope), 'hidden', + 'Should be hidden if the workspace is not movable'); + }); + + test('Calls workspace cleanup', function() { + this.cleanupOption.callback(this.scope); + sinon.assert.calledOnce(this.cleanupStub); + }); + + test('Has correct label', function() { + chai.assert.equal(this.cleanupOption.displayText(), 'Clean up Blocks'); + }); + }); + + suite('Collapse', function() { + setup(function() { + this.collapseOption = this.registry.getItem('collapseWorkspace'); + }); + + test('Enabled when uncollapsed blocks', function() { + this.workspace.newBlock('text'); + const block2 = this.workspace.newBlock('text'); + block2.setCollapsed(true); + chai.assert.equal(this.collapseOption.preconditionFn(this.scope), 'enabled', + 'Should be enabled when any blocks are expanded'); + }); + + test('Disabled when all blocks collapsed', function() { + this.workspace.newBlock('text').setCollapsed(true); + chai.assert.equal(this.collapseOption.preconditionFn(this.scope), 'disabled', + 'Should be disabled when no blocks are expanded'); + }); + + test('Hidden when no collapse option', function() { + const workspaceWithOptions = new Blockly.Workspace(new Blockly.Options({collapse: false})); + this.scope.workspace = workspaceWithOptions; + + try { + chai.assert.equal(this.collapseOption.preconditionFn(this.scope), 'hidden', + 'Should be hidden if collapse is disabled in options'); + } finally { + workspaceTeardown.call(this, workspaceWithOptions); + } + }); + + test('Collapses all blocks', function() { + // All blocks should be collapsed, even if some already were. + const block1 = this.workspace.newBlock('text'); + const block2 = this.workspace.newBlock('text'); + // Need to render block to properly collapse it. + block1.initSvg(); + block1.render(); + block1.setCollapsed(true); + + this.collapseOption.callback(this.scope); + this.clock.runAll(); + + chai.assert.isTrue(block1.isCollapsed(), + 'Previously collapsed block should still be collapsed'); + chai.assert.isTrue(block2.isCollapsed(), + 'Previously expanded block should now be collapsed'); + }); + + test('Has correct label', function() { + chai.assert.equal(this.collapseOption.displayText(), 'Collapse Blocks'); + }); + }); + + suite('Expand', function() { + setup(function() { + this.expandOption = this.registry.getItem('expandWorkspace'); + }); + + test('Enabled when collapsed blocks', function() { + this.workspace.newBlock('text'); + const block2 = this.workspace.newBlock('text'); + block2.setCollapsed(true); + + chai.assert.equal(this.expandOption.preconditionFn(this.scope), 'enabled', + 'Should be enabled when any blocks are collapsed'); + }); + + test('Disabled when no collapsed blocks', function() { + this.workspace.newBlock('text'); + chai.assert.equal(this.expandOption.preconditionFn(this.scope), 'disabled', + 'Should be disabled when no blocks are collapsed'); + }); + + test('Hidden when no collapse option', function() { + const workspaceWithOptions = new Blockly.Workspace(new Blockly.Options({collapse: false})); + this.scope.workspace = workspaceWithOptions; + + try { + chai.assert.equal(this.expandOption.preconditionFn(this.scope), 'hidden', + 'Should be hidden if collapse is disabled in options'); + } finally { + workspaceTeardown.call(this, workspaceWithOptions); + } + }); + + test('Expands all blocks', function() { + // All blocks should be expanded, even if some already were. + const block1 = this.workspace.newBlock('text'); + const block2 = this.workspace.newBlock('text'); + // Need to render block to properly collapse it. + block2.initSvg(); + block2.render(); + block2.setCollapsed(true); + + this.expandOption.callback(this.scope); + this.clock.runAll(); + + chai.assert.isFalse(block1.isCollapsed(), + 'Previously expanded block should still be expanded'); + chai.assert.isFalse(block2.isCollapsed(), + 'Previously collapsed block should now be expanded'); + }); + + test('Has correct label', function() { + chai.assert.equal(this.expandOption.displayText(), 'Expand Blocks'); + }); + }); + + suite('Delete', function() { + setup(function() { + this.deleteOption = this.registry.getItem('workspaceDelete'); + }); + + test('Enabled when blocks to delete', function() { + this.workspace.newBlock('text'); + chai.assert.equal(this.deleteOption.preconditionFn(this.scope), 'enabled'); + }); + + test('Disabled when no blocks to delete', function() { + chai.assert.equal(this.deleteOption.preconditionFn(this.scope), 'disabled'); + }); + + test('Deletes all blocks after confirming', function() { + // Mocks the confirmation dialog and calls the callback with 'true' simulating ok. + const confirmStub = sinon.stub( + Blockly.dialog, 'confirm').callsArgWith(1, true); + + this.workspace.newBlock('text'); + this.workspace.newBlock('text'); + this.deleteOption.callback(this.scope); + this.clock.runAll(); + sinon.assert.calledOnce(confirmStub); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); + }); + + test('Does not delete blocks if not confirmed', function() { + // Mocks the confirmation dialog and calls the callback with 'false' simulating cancel. + const confirmStub = sinon.stub( + Blockly.dialog, 'confirm').callsArgWith(1, false); + + this.workspace.newBlock('text'); + this.workspace.newBlock('text'); + this.deleteOption.callback(this.scope); + this.clock.runAll(); + sinon.assert.calledOnce(confirmStub); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 2); + }); + + test('No dialog for single block', function() { + const confirmStub = sinon.stub(Blockly.dialog, 'confirm'); + this.workspace.newBlock('text'); + this.deleteOption.callback(this.scope); + this.clock.runAll(); + + sinon.assert.notCalled(confirmStub); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); + }); + + test('Has correct label for multiple blocks', function() { + this.workspace.newBlock('text'); + this.workspace.newBlock('text'); + + chai.assert.equal(this.deleteOption.displayText(this.scope), 'Delete 2 Blocks'); + }); + + test('Has correct label for single block', function() { + this.workspace.newBlock('text'); + chai.assert.equal(this.deleteOption.displayText(this.scope), 'Delete Block'); + }); + }); + }); + + suite('Block Items', function() { + setup(function() { + this.block = this.workspace.newBlock('text'); + this.scope = {block: this.block}; + }); + + suite('Duplicate', function() { + setup(function() { + this.duplicateOption = this.registry.getItem('blockDuplicate'); + }); + + test('Enabled when block is duplicatable', function() { + // Block is duplicatable by default + chai.assert.equal(this.duplicateOption.preconditionFn(this.scope), 'enabled'); + }); + + test('Disabled when block is not dupicatable', function() { + sinon.stub(this.block, 'isDuplicatable').returns(false); + chai.assert.equal(this.duplicateOption.preconditionFn(this.scope), 'disabled'); + }); + + test('Hidden when in flyout', function() { + this.block.isInFlyout = true; + chai.assert.equal(this.duplicateOption.preconditionFn(this.scope), 'hidden'); + }); + + test('Calls duplicate', function() { + const spy = sinon.spy(Blockly.clipboard, 'duplicate'); + + this.duplicateOption.callback(this.scope); + + sinon.assert.calledOnce(spy); + sinon.assert.calledWith(spy, this.block); + }); + + test('Has correct label', function() { + chai.assert.equal(this.duplicateOption.displayText(), 'Duplicate'); + }); + }); + + suite('Comment', function() { + setup(function() { + this.commentOption = this.registry.getItem('blockComment'); + }); + + test('Enabled for normal block', function() { + chai.assert.equal(this.commentOption.preconditionFn(this.scope), 'enabled'); + }); + + test('Hidden for IE', function() { + const oldState = Blockly.utils.userAgent.IE; + try { + Blockly.utils.userAgent.IE = true; + chai.assert.equal(this.commentOption.preconditionFn(this.scope), 'hidden'); + } finally { + Blockly.utils.userAgent.IE = oldState; + } + }); + + test('Hidden for collapsed block', function() { + // Must render block to collapse it properly. + this.block.initSvg(); + this.block.render(); + this.block.setCollapsed(true); + + chai.assert.equal(this.commentOption.preconditionFn(this.scope), 'hidden'); + }); + + test('Creates comment if one did not exist', function() { + chai.assert.isNull(this.block.getCommentIcon(), 'New block should not have a comment'); + this.commentOption.callback(this.scope); + chai.assert.exists(this.block.getCommentIcon()); + chai.assert.isEmpty(this.block.getCommentText(), 'Block should have empty comment text'); + }); + + test('Removes comment if block had one', function() { + this.block.setCommentText('Test comment'); + this.commentOption.callback(this.scope); + chai.assert.isNull(this.block.getCommentText(), + 'Block should not have comment after removal'); + }); + + test('Has correct label for add comment', function() { + chai.assert.equal(this.commentOption.displayText(this.scope), 'Add Comment'); + }); + + test('Has correct label for remove comment', function() { + this.block.setCommentText('Test comment'); + chai.assert.equal(this.commentOption.displayText(this.scope), 'Remove Comment'); + }); + }); + + suite('Inline Variables', function() { + setup(function() { + this.inlineOption = this.registry.getItem('blockInline'); + }); + + test('Enabled when inputs to inline', function() { + this.block.appendValueInput('test1'); + this.block.appendValueInput('test2'); + chai.assert.equal(this.inlineOption.preconditionFn(this.scope), 'enabled'); + }); + }); + }); +}); diff --git a/tests/mocha/cursor_test.js b/tests/mocha/cursor_test.js index 77b22470aec..3f9a52a6a0e 100644 --- a/tests/mocha/cursor_test.js +++ b/tests/mocha/cursor_test.js @@ -1,126 +1,126 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.cursor'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {ASTNode} = goog.require('Blockly.ASTNode'); - - -suite('Cursor', function() { - setup(function() { - sharedTestSetup.call(this); - Blockly.defineBlocksWithJsonArray([{ - "type": "input_statement", - "message0": "%1 %2 %3 %4", - "args0": [ - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - { - "type": "input_value", - "name": "NAME", - }, - { - "type": "input_statement", - "name": "NAME", - }, - ], - "previousStatement": null, - "nextStatement": null, - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - { - "type": "field_input", - "message0": "%1", - "args0": [ - { - "type": "field_input", - "name": "NAME", - "text": "default", - }, - ], - "output": null, - "colour": 230, - "tooltip": "", - "helpUrl": "", - }, - ]); - this.workspace = Blockly.inject('blocklyDiv', {}); - this.cursor = this.workspace.getCursor(); - const blockA = this.workspace.newBlock('input_statement'); - const blockB = this.workspace.newBlock('input_statement'); - const blockC = this.workspace.newBlock('input_statement'); - const blockD = this.workspace.newBlock('input_statement'); - const blockE = this.workspace.newBlock('field_input'); - - blockA.nextConnection.connect(blockB.previousConnection); - blockA.inputList[0].connection.connect(blockE.outputConnection); - blockB.inputList[1].connection.connect(blockC.previousConnection); - this.cursor.drawer_ = null; - this.blocks = { - A: blockA, - B: blockB, - C: blockC, - D: blockD, - E: blockE, - }; - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - test('Next - From a Previous skip over next connection and block', function() { - const prevNode = ASTNode.createConnectionNode(this.blocks.A.previousConnection); - this.cursor.setCurNode(prevNode); - this.cursor.next(); - const curNode = this.cursor.getCurNode(); - chai.assert.equal(curNode.getLocation(), this.blocks.B.previousConnection); - }); - test('Next - From last block in a stack go to next connection', function() { - const prevNode = ASTNode.createConnectionNode(this.blocks.B.previousConnection); - this.cursor.setCurNode(prevNode); - this.cursor.next(); - const curNode = this.cursor.getCurNode(); - chai.assert.equal(curNode.getLocation(), this.blocks.B.nextConnection); - }); - - test('In - From output connection', function() { - const fieldBlock = this.blocks.E; - const outputNode = ASTNode.createConnectionNode(fieldBlock.outputConnection); - this.cursor.setCurNode(outputNode); - this.cursor.in(); - const curNode = this.cursor.getCurNode(); - chai.assert.equal(curNode.getLocation(), fieldBlock.inputList[0].fieldRow[0]); - }); - - test('Prev - From previous connection skip over next connection', function() { - const prevConnection = this.blocks.B.previousConnection; - const prevConnectionNode = ASTNode.createConnectionNode(prevConnection); - this.cursor.setCurNode(prevConnectionNode); - this.cursor.prev(); - const curNode = this.cursor.getCurNode(); - chai.assert.equal(curNode.getLocation(), this.blocks.A.previousConnection); - }); - - test('Out - From field skip over block node', function() { - const field = this.blocks.E.inputList[0].fieldRow[0]; - const fieldNode = ASTNode.createFieldNode(field); - this.cursor.setCurNode(fieldNode); - this.cursor.out(); - const curNode = this.cursor.getCurNode(); - chai.assert.equal(curNode.getLocation(), this.blocks.E.outputConnection); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.cursor'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {ASTNode} = goog.require('Blockly.ASTNode'); + + +suite('Cursor', function() { + setup(function() { + sharedTestSetup.call(this); + Blockly.defineBlocksWithJsonArray([{ + "type": "input_statement", + "message0": "%1 %2 %3 %4", + "args0": [ + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + { + "type": "input_value", + "name": "NAME", + }, + { + "type": "input_statement", + "name": "NAME", + }, + ], + "previousStatement": null, + "nextStatement": null, + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + { + "type": "field_input", + "message0": "%1", + "args0": [ + { + "type": "field_input", + "name": "NAME", + "text": "default", + }, + ], + "output": null, + "colour": 230, + "tooltip": "", + "helpUrl": "", + }, + ]); + this.workspace = Blockly.inject('blocklyDiv', {}); + this.cursor = this.workspace.getCursor(); + const blockA = this.workspace.newBlock('input_statement'); + const blockB = this.workspace.newBlock('input_statement'); + const blockC = this.workspace.newBlock('input_statement'); + const blockD = this.workspace.newBlock('input_statement'); + const blockE = this.workspace.newBlock('field_input'); + + blockA.nextConnection.connect(blockB.previousConnection); + blockA.inputList[0].connection.connect(blockE.outputConnection); + blockB.inputList[1].connection.connect(blockC.previousConnection); + this.cursor.drawer_ = null; + this.blocks = { + A: blockA, + B: blockB, + C: blockC, + D: blockD, + E: blockE, + }; + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + test('Next - From a Previous skip over next connection and block', function() { + const prevNode = ASTNode.createConnectionNode(this.blocks.A.previousConnection); + this.cursor.setCurNode(prevNode); + this.cursor.next(); + const curNode = this.cursor.getCurNode(); + chai.assert.equal(curNode.getLocation(), this.blocks.B.previousConnection); + }); + test('Next - From last block in a stack go to next connection', function() { + const prevNode = ASTNode.createConnectionNode(this.blocks.B.previousConnection); + this.cursor.setCurNode(prevNode); + this.cursor.next(); + const curNode = this.cursor.getCurNode(); + chai.assert.equal(curNode.getLocation(), this.blocks.B.nextConnection); + }); + + test('In - From output connection', function() { + const fieldBlock = this.blocks.E; + const outputNode = ASTNode.createConnectionNode(fieldBlock.outputConnection); + this.cursor.setCurNode(outputNode); + this.cursor.in(); + const curNode = this.cursor.getCurNode(); + chai.assert.equal(curNode.getLocation(), fieldBlock.inputList[0].fieldRow[0]); + }); + + test('Prev - From previous connection skip over next connection', function() { + const prevConnection = this.blocks.B.previousConnection; + const prevConnectionNode = ASTNode.createConnectionNode(prevConnection); + this.cursor.setCurNode(prevConnectionNode); + this.cursor.prev(); + const curNode = this.cursor.getCurNode(); + chai.assert.equal(curNode.getLocation(), this.blocks.A.previousConnection); + }); + + test('Out - From field skip over block node', function() { + const field = this.blocks.E.inputList[0].fieldRow[0]; + const fieldNode = ASTNode.createFieldNode(field); + this.cursor.setCurNode(fieldNode); + this.cursor.out(); + const curNode = this.cursor.getCurNode(); + chai.assert.equal(curNode.getLocation(), this.blocks.E.outputConnection); + }); +}); diff --git a/tests/mocha/dropdowndiv_test.js b/tests/mocha/dropdowndiv_test.js index 6cd8dca539e..cccd42b7e95 100644 --- a/tests/mocha/dropdowndiv_test.js +++ b/tests/mocha/dropdowndiv_test.js @@ -1,80 +1,80 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.dropdown'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('DropDownDiv', function() { - suite('Positioning', function() { - setup(function() { - sharedTestSetup.call(this); - this.boundsStub = sinon.stub(Blockly.DropDownDiv.TEST_ONLY, 'getBoundsInfo') - .returns({ - left: 0, - right: 100, - top: 0, - bottom: 100, - width: 100, - height: 100, - }); - this.sizeStub = sinon.stub(Blockly.utils.style, 'getSize') - .returns({ - width: 60, - height: 60, - }); - this.clientHeightStub = sinon.stub(document.documentElement, 'clientHeight') - .get(function() {return 1000;}); - this.clientTopStub = sinon.stub(document.documentElement, 'clientTop') - .get(function() {return 0;}); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - test('Below, in Bounds', function() { - const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 0, 50, -10); - // "Above" in value actually means below in render. - chai.assert.isAtLeast(metrics.initialY, 0); - chai.assert.isAbove(metrics.finalY, 0); - chai.assert.isTrue(metrics.arrowVisible); - chai.assert.isTrue(metrics.arrowAtTop); - }); - test('Above, in Bounds', function() { - const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 100, 50, 90); - // "Below" in value actually means above in render. - chai.assert.isAtMost(metrics.initialY, 100); - chai.assert.isBelow(metrics.finalY, 100); - chai.assert.isTrue(metrics.arrowVisible); - chai.assert.isFalse(metrics.arrowAtTop); - }); - test('Below, out of Bounds', function() { - const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 60, 50, 50); - // "Above" in value actually means below in render. - chai.assert.isAtLeast(metrics.initialY, 60); - chai.assert.isAbove(metrics.finalY, 60); - chai.assert.isTrue(metrics.arrowVisible); - chai.assert.isTrue(metrics.arrowAtTop); - }); - test('Above, in Bounds', function() { - const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 100, 50, 90); - // "Below" in value actually means above in render. - chai.assert.isAtMost(metrics.initialY, 100); - chai.assert.isBelow(metrics.finalY, 100); - chai.assert.isTrue(metrics.arrowVisible); - chai.assert.isFalse(metrics.arrowAtTop); - }); - test('No Solution, Render At Top', function() { - this.clientHeightStub.get(function() {return 100;}); - const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 60, 50, 50); - // "Above" in value actually means below in render. - chai.assert.equal(metrics.initialY, 0); - chai.assert.equal(metrics.finalY, 0); - chai.assert.isFalse(metrics.arrowVisible); - chai.assert.isNotOk(metrics.arrowAtTop); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.dropdown'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('DropDownDiv', function() { + suite('Positioning', function() { + setup(function() { + sharedTestSetup.call(this); + this.boundsStub = sinon.stub(Blockly.DropDownDiv.TEST_ONLY, 'getBoundsInfo') + .returns({ + left: 0, + right: 100, + top: 0, + bottom: 100, + width: 100, + height: 100, + }); + this.sizeStub = sinon.stub(Blockly.utils.style, 'getSize') + .returns({ + width: 60, + height: 60, + }); + this.clientHeightStub = sinon.stub(document.documentElement, 'clientHeight') + .get(function() {return 1000;}); + this.clientTopStub = sinon.stub(document.documentElement, 'clientTop') + .get(function() {return 0;}); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + test('Below, in Bounds', function() { + const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 0, 50, -10); + // "Above" in value actually means below in render. + chai.assert.isAtLeast(metrics.initialY, 0); + chai.assert.isAbove(metrics.finalY, 0); + chai.assert.isTrue(metrics.arrowVisible); + chai.assert.isTrue(metrics.arrowAtTop); + }); + test('Above, in Bounds', function() { + const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 100, 50, 90); + // "Below" in value actually means above in render. + chai.assert.isAtMost(metrics.initialY, 100); + chai.assert.isBelow(metrics.finalY, 100); + chai.assert.isTrue(metrics.arrowVisible); + chai.assert.isFalse(metrics.arrowAtTop); + }); + test('Below, out of Bounds', function() { + const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 60, 50, 50); + // "Above" in value actually means below in render. + chai.assert.isAtLeast(metrics.initialY, 60); + chai.assert.isAbove(metrics.finalY, 60); + chai.assert.isTrue(metrics.arrowVisible); + chai.assert.isTrue(metrics.arrowAtTop); + }); + test('Above, in Bounds', function() { + const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 100, 50, 90); + // "Below" in value actually means above in render. + chai.assert.isAtMost(metrics.initialY, 100); + chai.assert.isBelow(metrics.finalY, 100); + chai.assert.isTrue(metrics.arrowVisible); + chai.assert.isFalse(metrics.arrowAtTop); + }); + test('No Solution, Render At Top', function() { + this.clientHeightStub.get(function() {return 100;}); + const metrics = Blockly.DropDownDiv.TEST_ONLY.getPositionMetrics(50, 60, 50, 50); + // "Above" in value actually means below in render. + chai.assert.equal(metrics.initialY, 0); + chai.assert.equal(metrics.finalY, 0); + chai.assert.isFalse(metrics.arrowVisible); + chai.assert.isNotOk(metrics.arrowAtTop); + }); + }); +}); diff --git a/tests/mocha/event_test.js b/tests/mocha/event_test.js index 9ee53a68941..277e8ec3bc4 100644 --- a/tests/mocha/event_test.js +++ b/tests/mocha/event_test.js @@ -1,1199 +1,1199 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.event'); - -const {ASTNode} = goog.require('Blockly.ASTNode'); -const {assertEventEquals, assertNthCallEventArgEquals, createFireChangeListenerSpy} = goog.require('Blockly.test.helpers.events'); -const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); -const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const eventUtils = goog.require('Blockly.Events.utils'); -goog.require('Blockly.WorkspaceComment'); - - -suite('Events', function() { - setup(function() { - sharedTestSetup.call(this, {fireEventsNow: false}); - this.eventsFireSpy = sinon.spy(eventUtils, 'fire'); - this.workspace = new Blockly.Workspace(); - Blockly.defineBlocksWithJsonArray([{ - 'type': 'field_variable_test_block', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': 'item', - }, - ], - }, - { - 'type': 'simple_test_block', - 'message0': 'simple test block', - }]); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - function createSimpleTestBlock(workspace) { - // Disable events while constructing the block: this is a test of the - // Blockly.Event constructors, not the block constructors. - // Set the group id to avoid an extra call to genUid. - eventUtils.disable(); - let block; - try { - eventUtils.setGroup('unused'); - block = new Blockly.Block( - workspace, 'simple_test_block'); - } finally { - eventUtils.setGroup(false); - } - eventUtils.enable(); - return block; - } - - suite('Constructors', function() { - test('Abstract', function() { - const event = new Blockly.Events.Abstract(); - assertEventEquals(event, undefined, undefined, undefined, { - 'recordUndo': true, - 'group': '', - }); - }); - - test('UI event without block', function() { - const event = new Blockly.Events.UiBase(this.workspace.id); - assertEventEquals(event, undefined, this.workspace.id, undefined, { - 'recordUndo': false, - 'group': '', - }, true); - }); - - test('Click without block', function() { - const event = new Blockly.Events.Click(null, this.workspace.id, 'workspace'); - assertEventEquals(event, Blockly.Events.CLICK, this.workspace.id, null, { - 'targetType': 'workspace', - 'recordUndo': false, - 'group': '', - }, true); - }); - - test('Old UI event without block', function() { - const TEST_GROUP_ID = 'testGroup'; - eventUtils.setGroup(TEST_GROUP_ID); - const event = new Blockly.Events.Ui(null, 'foo', 'bar', 'baz'); - assertEventEquals(event, Blockly.Events.UI, '', null, { - 'element': 'foo', - 'oldValue': 'bar', - 'newValue': 'baz', - 'recordUndo': false, - 'group': TEST_GROUP_ID, - }, true); - }); - - suite('With simple blocks', function() { - setup(function() { - this.TEST_BLOCK_ID = 'test_block_id'; - this.TEST_PARENT_ID = 'parent'; - // genUid is expected to be called either once or twice in this suite. - this.genUidStub = createGenUidStubWithReturns( - [this.TEST_BLOCK_ID, this.TEST_PARENT_ID]); - this.block = createSimpleTestBlock(this.workspace); - }); - - test('Block base', function() { - const event = new Blockly.Events.BlockBase(this.block); - sinon.assert.calledOnce(this.genUidStub); - assertEventEquals(event, undefined, - this.workspace.id, this.TEST_BLOCK_ID, - { - 'varId': undefined, - 'recordUndo': true, - 'group': '', - }); - }); - - test('Block create', function() { - const event = new Blockly.Events.BlockCreate(this.block); - sinon.assert.calledOnce(this.genUidStub); - assertEventEquals(event, Blockly.Events.BLOCK_CREATE, - this.workspace.id, this.TEST_BLOCK_ID, - { - 'recordUndo': true, - 'group': '', - }); - }); - - test('Block delete', function() { - const event = new Blockly.Events.BlockDelete(this.block); - sinon.assert.calledOnce(this.genUidStub); - assertEventEquals(event, Blockly.Events.BLOCK_DELETE, - this.workspace.id, this.TEST_BLOCK_ID, - { - 'recordUndo': true, - 'group': '', - }); - }); - - test('Old UI event with block', function() { - const TEST_GROUP_ID = 'testGroup'; - eventUtils.setGroup(TEST_GROUP_ID); - const event = new Blockly.Events.Ui(this.block, 'foo', 'bar', 'baz'); - sinon.assert.calledOnce(this.genUidStub); - assertEventEquals(event, Blockly.Events.UI, this.workspace.id, - this.TEST_BLOCK_ID, - { - 'element': 'foo', - 'oldValue': 'bar', - 'newValue': 'baz', - 'recordUndo': false, - 'group': TEST_GROUP_ID, - }, true); - }); - - test('Click with block', function() { - const TEST_GROUP_ID = 'testGroup'; - eventUtils.setGroup(TEST_GROUP_ID); - const event = new Blockly.Events.Click(this.block, null, 'block'); - assertEventEquals(event, Blockly.Events.CLICK, this.workspace.id, - this.TEST_BLOCK_ID, { - 'targetType': 'block', - 'recordUndo': false, - 'group': TEST_GROUP_ID, - }, true); - }); - - suite('Block Move', function() { - test('by coordinate', function() { - const coordinate = new Blockly.utils.Coordinate(3, 4); - this.block.xy_ = coordinate; - - const event = new Blockly.Events.BlockMove(this.block); - sinon.assert.calledOnce(this.genUidStub); - assertEventEquals(event, Blockly.Events.BLOCK_MOVE, this.workspace.id, - this.TEST_BLOCK_ID, { - 'oldParentId': undefined, - 'oldInputName': undefined, - 'oldCoordinate': coordinate, - 'recordUndo': true, - 'group': '', - }); - }); - - test('by parent', function() { - try { - this.parentBlock = createSimpleTestBlock(this.workspace); - this.block.parentBlock_ = this.parentBlock; - this.block.xy_ = new Blockly.utils.Coordinate(3, 4); - const event = new Blockly.Events.BlockMove(this.block); - sinon.assert.calledTwice(this.genUidStub); - assertEventEquals(event, Blockly.Events.BLOCK_MOVE, this.workspace.id, - this.TEST_BLOCK_ID, { - 'oldParentId': this.TEST_PARENT_ID, - 'oldInputName': undefined, - 'oldCoordinate': undefined, - 'recordUndo': true, - 'group': '', - }); - } finally { - // This needs to be cleared, otherwise workspace.dispose will fail. - this.block.parentBlock_ = null; - } - }); - }); - }); - - suite('With shadow blocks', function() { - setup(function() { - this.TEST_BLOCK_ID = 'test_block_id'; - this.TEST_PARENT_ID = 'parent'; - // genUid is expected to be called either once or twice in this suite. - this.genUidStub = createGenUidStubWithReturns( - [this.TEST_BLOCK_ID, this.TEST_PARENT_ID]); - this.block = createSimpleTestBlock(this.workspace); - this.block.setShadow(true); - }); - - test('Block base', function() { - const event = new Blockly.Events.BlockBase(this.block); - sinon.assert.calledOnce(this.genUidStub); - assertEventEquals(event, undefined, - this.workspace.id, this.TEST_BLOCK_ID, - { - 'varId': undefined, - 'recordUndo': true, - 'group': '', - }); - }); - - test('Block change', function() { - const event = new Blockly.Events.BlockChange( - this.block, 'field', 'FIELD_NAME', 'old', 'new'); - sinon.assert.calledOnce(this.genUidStub); - assertEventEquals(event, Blockly.Events.BLOCK_CHANGE, - this.workspace.id, this.TEST_BLOCK_ID, - { - 'varId': undefined, - 'element': 'field', - 'name': 'FIELD_NAME', - 'oldValue': 'old', - 'newValue': 'new', - 'recordUndo': true, - 'group': '', - }); - }); - - test('Block create', function() { - const event = new Blockly.Events.BlockCreate(this.block); - sinon.assert.calledOnce(this.genUidStub); - assertEventEquals(event, Blockly.Events.BLOCK_CREATE, - this.workspace.id, this.TEST_BLOCK_ID, - { - 'recordUndo': false, - 'group': '', - }); - }); - - test('Block delete', function() { - const event = new Blockly.Events.BlockDelete(this.block); - sinon.assert.calledOnce(this.genUidStub); - assertEventEquals(event, Blockly.Events.BLOCK_DELETE, - this.workspace.id, this.TEST_BLOCK_ID, - { - 'recordUndo': false, - 'group': '', - }); - }); - - test('Block move', function() { - try { - this.parentBlock = createSimpleTestBlock(this.workspace); - this.block.parentBlock_ = this.parentBlock; - this.block.xy_ = new Blockly.utils.Coordinate(3, 4); - const event = new Blockly.Events.BlockMove(this.block); - sinon.assert.calledTwice(this.genUidStub); - assertEventEquals(event, Blockly.Events.BLOCK_MOVE, this.workspace.id, - this.TEST_BLOCK_ID, - { - 'oldParentId': this.TEST_PARENT_ID, - 'oldInputName': undefined, - 'oldCoordinate': undefined, - 'recordUndo': false, - 'group': '', - }); - } finally { - // This needs to be cleared, otherwise workspace.dispose will fail. - this.block.parentBlock_ = null; - } - }); - }); - - suite('With variable getter blocks', function() { - setup(function() { - this.genUidStub = createGenUidStubWithReturns( - [this.TEST_BLOCK_ID, 'test_var_id', 'test_group_id']); - // Disabling events when creating a block with variable can cause issues - // at workspace dispose. - this.block = new Blockly.Block( - this.workspace, 'field_variable_test_block'); - }); - - test('Block change', function() { - const event = new Blockly.Events.BlockChange( - this.block, 'field', 'VAR', 'id1', 'id2'); - assertEventEquals(event, Blockly.Events.BLOCK_CHANGE, this.workspace.id, - this.TEST_BLOCK_ID, - { - 'element': 'field', - 'name': 'VAR', - 'oldValue': 'id1', - 'newValue': 'id2', - 'recordUndo': true, - 'group': '', - }); - }); - }); - }); - - suite('Serialization', function() { - const safeStringify = (json) => { - const cache = []; - return JSON.stringify(json, (key, value) => { - if (typeof value == 'object' && value != null) { - if (cache.includes(value)) { - // Discard duplicate reference. - return undefined; - } - cache.push(value); - return value; - } - return value; - }); - }; - const variableEventTestCases = [ - {title: 'Var create', class: Blockly.Events.VarCreate, - getArgs: (thisObj) => [thisObj.variable], - getExpectedJson: () => ({type: 'var_create', varId: 'id1', - varType: 'type1', varName: 'name1'})}, - {title: 'Var delete', class: Blockly.Events.VarDelete, - getArgs: (thisObj) => [thisObj.variable], - getExpectedJson: () => ({type: 'var_delete', varId: 'id1', - varType: 'type1', varName: 'name1'})}, - {title: 'Var rename', class: Blockly.Events.VarRename, - getArgs: (thisObj) => [thisObj.variable, 'name2'], - getExpectedJson: () => ({type: 'var_rename', varId: 'id1', - oldName: 'name1', newName: 'name2'})}, - ]; - const uiEventTestCases = [ - {title: 'Bubble open', class: Blockly.Events.BubbleOpen, - getArgs: (thisObj) => [thisObj.block, true, 'mutator'], - getExpectedJson: (thisObj) => ({type: 'bubble_open', isOpen: true, - bubbleType: 'mutator', blockId: thisObj.block.id})}, - {title: 'Block click', class: Blockly.Events.Click, - getArgs: (thisObj) => [thisObj.block, null, 'block'], - getExpectedJson: (thisObj) => ({type: 'click', targetType: 'block', - blockId: thisObj.block.id})}, - {title: 'Workspace click', class: Blockly.Events.Click, - getArgs: (thisObj) => [null, thisObj.workspace.id, 'workspace'], - getExpectedJson: (thisObj) => ({type: 'click', - targetType: 'workspace'})}, - {title: 'Drag start', class: Blockly.Events.BlockDrag, - getArgs: (thisObj) => [thisObj.block, true, [thisObj.block]], - getExpectedJson: (thisObj) => ({type: 'drag', - isStart: true, blockId: thisObj.block.id, blocks: [thisObj.block]})}, - {title: 'Drag end', class: Blockly.Events.BlockDrag, - getArgs: (thisObj) => [thisObj.block, false, [thisObj.block]], - getExpectedJson: (thisObj) => ({type: 'drag', - isStart: false, blockId: thisObj.block.id, blocks: [thisObj.block]})}, - {title: 'null to Block Marker move', class: Blockly.Events.MarkerMove, - getArgs: (thisObj) => [thisObj.block, true, null, - new ASTNode(ASTNode.types.BLOCK, thisObj.block)], - getExpectedJson: (thisObj) => ({type: 'marker_move', - isCursor: true, blockId: thisObj.block.id, oldNode: null, - newNode: new ASTNode(ASTNode.types.BLOCK, - thisObj.block)})}, - {title: 'null to Workspace Marker move', class: Blockly.Events.MarkerMove, - getArgs: (thisObj) => [null, true, null, - ASTNode.createWorkspaceNode(thisObj.workspace, - new Blockly.utils.Coordinate(0, 0))], - getExpectedJson: (thisObj) => ({type: 'marker_move', - isCursor: true, blockId: null, oldNode: null, - newNode: ASTNode.createWorkspaceNode(thisObj.workspace, - new Blockly.utils.Coordinate(0, 0))})}, - {title: 'Workspace to Block Marker move', - class: Blockly.Events.MarkerMove, - getArgs: (thisObj) => [thisObj.block, true, - ASTNode.createWorkspaceNode(thisObj.workspace, - new Blockly.utils.Coordinate(0, 0)), - new ASTNode(ASTNode.types.BLOCK, thisObj.block)], - getExpectedJson: (thisObj) => ({type: 'marker_move', - isCursor: true, blockId: thisObj.block.id, - oldNode: ASTNode.createWorkspaceNode(thisObj.workspace, - new Blockly.utils.Coordinate(0, 0)), - newNode: new ASTNode(ASTNode.types.BLOCK, - thisObj.block)})}, - {title: 'Block to Workspace Marker move', - class: Blockly.Events.MarkerMove, - getArgs: (thisObj) => [null, true, - new ASTNode(ASTNode.types.BLOCK, thisObj.block), - ASTNode.createWorkspaceNode(thisObj.workspace, - new Blockly.utils.Coordinate(0, 0))]}, - {title: 'Selected', class: Blockly.Events.Selected, - getArgs: (thisObj) => [null, thisObj.block.id, thisObj.workspace.id], - getExpectedJson: (thisObj) => ({type: 'selected', oldElementId: null, - newElementId: thisObj.block.id})}, - {title: 'Selected (deselect)', class: Blockly.Events.Selected, - getArgs: (thisObj) => [thisObj.block.id, null, thisObj.workspace.id], - getExpectedJson: (thisObj) => ({type: 'selected', - oldElementId: thisObj.block.id, newElementId: null})}, - {title: 'Theme Change', class: Blockly.Events.ThemeChange, - getArgs: (thisObj) => ['classic', thisObj.workspace.id], - getExpectedJson: () => ({type: 'theme_change', themeName: 'classic'})}, - {title: 'Toolbox item select', - class: Blockly.Events.ToolboxItemSelect, - getArgs: (thisObj) => ['Math', 'Loops', thisObj.workspace.id], - getExpectedJson: () => ({type: 'toolbox_item_select', oldItem: 'Math', - newItem: 'Loops'})}, - {title: 'Toolbox item select (no previous)', - class: Blockly.Events.ToolboxItemSelect, - getArgs: (thisObj) => [null, 'Loops', thisObj.workspace.id], - getExpectedJson: () => ({type: 'toolbox_item_select', oldItem: null, - newItem: 'Loops'})}, - {title: 'Toolbox item select (deselect)', - class: Blockly.Events.ToolboxItemSelect, - getArgs: (thisObj) => ['Math', null, thisObj.workspace.id], - getExpectedJson: () => ({type: 'toolbox_item_select', oldItem: 'Math', - newItem: null})}, - {title: 'Trashcan open', class: Blockly.Events.TrashcanOpen, - getArgs: (thisObj) => [true, thisObj.workspace.id], - getExpectedJson: () => ({type: 'trashcan_open', isOpen: true})}, - {title: 'Viewport change', class: Blockly.Events.ViewportChange, - getArgs: (thisObj) => [2.666, 1.333, 1.2, thisObj.workspace.id, 1], - getExpectedJson: () => ({type: 'viewport_change', viewTop: 2.666, - viewLeft: 1.333, scale: 1.2, oldScale: 1})}, - {title: 'Viewport change (0,0)', class: Blockly.Events.ViewportChange, - getArgs: (thisObj) => [0, 0, 1.2, thisObj.workspace.id, 1], - getExpectedJson: () => ({type: 'viewport_change', viewTop: 0, - viewLeft: 0, scale: 1.2, oldScale: 1})}, - ]; - const blockEventTestCases = [ - { - title: 'Block change', - class: Blockly.Events.BlockChange, - getArgs: (thisObj) => [thisObj.block, 'collapsed', null, false, true], - getExpectedJson: (thisObj) => ({ - type: 'change', - blockId: thisObj.block.id, - element: 'collapsed', - oldValue: false, - newValue: true, - }), - }, - { - title: 'Block create', - class: Blockly.Events.BlockCreate, - getArgs: (thisObj) => [thisObj.block], - getExpectedJson: (thisObj) => ({ - type: 'create', - blockId: thisObj.block.id, - xml: '' + - '', - ids: [thisObj.block.id], - json: { - 'type': 'simple_test_block', - 'id': 'testBlockId1', - 'x': 0, - 'y': 0, - }, - }), - }, - { - title: 'Block create (shadow)', - class: Blockly.Events.BlockCreate, - getArgs: (thisObj) => [thisObj.shadowBlock], - getExpectedJson: (thisObj) => ({ - type: 'create', - blockId: thisObj.shadowBlock.id, - xml: '' + - '', - ids: [thisObj.shadowBlock.id], - json: { - 'type': 'simple_test_block', - 'id': 'testBlockId2', - 'x': 0, - 'y': 0, - }, - recordUndo: false, - }), - }, - { - title: 'Block delete', - class: Blockly.Events.BlockDelete, - getArgs: (thisObj) => [thisObj.block], - getExpectedJson: (thisObj) => ({ - type: 'delete', - blockId: thisObj.block.id, - oldXml: '' + - '', - ids: [thisObj.block.id], - wasShadow: false, - oldJson: { - 'type': 'simple_test_block', - 'id': 'testBlockId1', - 'x': 0, - 'y': 0, - }, - }), - }, - { - title: 'Block delete (shadow)', - class: Blockly.Events.BlockDelete, - getArgs: (thisObj) => [thisObj.shadowBlock], - getExpectedJson: (thisObj) => ({ - type: 'delete', - blockId: thisObj.shadowBlock.id, - oldXml: '' + - '', - ids: [thisObj.shadowBlock.id], - wasShadow: true, - oldJson: { - 'type': 'simple_test_block', - 'id': 'testBlockId2', - 'x': 0, - 'y': 0, - }, - recordUndo: false, - }), - }, - // TODO(#4577) Test serialization of move event coordinate properties. - { - title: 'Block move', - class: Blockly.Events.BlockMove, - getArgs: (thisObj) => [thisObj.block], - getExpectedJson: (thisObj) => ({ - type: 'move', - blockId: thisObj.block.id, - }), - }, - { - title: 'Block move (shadow)', - class: Blockly.Events.BlockMove, - getArgs: (thisObj) => [thisObj.shadowBlock], - getExpectedJson: (thisObj) => ({ - type: 'move', - blockId: thisObj.shadowBlock.id, - recordUndo: false, - }), - }, - ]; - const workspaceEventTestCases = [ - {title: 'Finished Loading', class: Blockly.Events.FinishedLoading, - getArgs: (thisObj) => [thisObj.workspace], - getExpectedJson: (thisObj) => ({type: 'finished_loading', - workspaceId: thisObj.workspace.id})}, - ]; - const workspaceCommentEventTestCases = [ - {title: 'Comment change', class: Blockly.Events.CommentChange, - getArgs: (thisObj) => [thisObj.comment, 'bar', 'foo'], - getExpectedJson: (thisObj) => ({type: 'comment_change', - commentId: thisObj.comment.id, oldContents: 'bar', - newContents: 'foo'})}, - {title: 'Comment create', class: Blockly.Events.CommentCreate, - getArgs: (thisObj) => [thisObj.comment], - getExpectedJson: (thisObj) => ({type: 'comment_create', - commentId: thisObj.comment.id, - xml: Blockly.Xml.domToText(thisObj.comment.toXmlWithXY())})}, - {title: 'Comment delete', class: Blockly.Events.CommentDelete, - getArgs: (thisObj) => [thisObj.comment], - getExpectedJson: (thisObj) => ({type: 'comment_delete', - commentId: thisObj.comment.id})}, - // TODO(#4577) Test serialization of move event coordinate properties. - {title: 'Comment move', class: Blockly.Events.CommentMove, - getArgs: (thisObj) => [thisObj.comment], - getExpectedJson: (thisObj) => ({type: 'comment_move', - commentId: thisObj.comment.id, oldCoordinate: '0,0'})}, - ]; - const testSuites = [ - {title: 'Variable events', testCases: variableEventTestCases, - setup: (thisObj) => { - thisObj.variable = - thisObj.workspace.createVariable('name1', 'type1', 'id1'); - }}, - {title: 'UI events', testCases: uiEventTestCases, - setup: (thisObj) => { - thisObj.block = createSimpleTestBlock(thisObj.workspace); - }}, - {title: 'Block events', testCases: blockEventTestCases, - setup: (thisObj) => { - createGenUidStubWithReturns(['testBlockId1', 'testBlockId2']); - thisObj.block = createSimpleTestBlock(thisObj.workspace); - thisObj.shadowBlock = createSimpleTestBlock(thisObj.workspace); - thisObj.shadowBlock.setShadow(true); - }}, - {title: 'Workspace events', - testCases: workspaceEventTestCases, - setup: (_) => {}}, - {title: 'WorkspaceComment events', - testCases: workspaceCommentEventTestCases, - setup: (thisObj) => { - thisObj.comment = new Blockly.WorkspaceComment( - thisObj.workspace, 'comment text', 0, 0, 'comment id'); - }}, - ]; - testSuites.forEach((testSuite) => { - suite(testSuite.title, function() { - setup(function() { - testSuite.setup(this); - }); - suite('fromJson', function() { - testSuite.testCases.forEach((testCase) => { - test(testCase.title, function() { - const event = new testCase.class(...testCase.getArgs(this)); - const event2 = new testCase.class(); - const json = event.toJson(); - event2.fromJson(json); - - chai.assert.equal( - safeStringify(event2.toJson()), safeStringify(json)); - }); - }); - }); - suite('toJson', function() { - testSuite.testCases.forEach((testCase) => { - if (testCase.getExpectedJson) { - test(testCase.title, function() { - const event = new testCase.class(...testCase.getArgs(this)); - const json = event.toJson(); - const expectedJson = testCase.getExpectedJson(this); - - chai.assert.equal( - safeStringify(json), safeStringify(expectedJson)); - }); - } - }); - }); - }); - }); - }); - - suite('Variable events', function() { - setup(function() { - this.variable = this.workspace.createVariable('name1', 'type1', 'id1'); - }); - - /** - * Check if a variable with the given values exists. - * @param {Blockly.Workspace|Blockly.VariableMap} container The workspace or - * variableMap the checked variable belongs to. - * @param {!string} name The expected name of the variable. - * @param {!string} type The expected type of the variable. - * @param {!string} id The expected id of the variable. - */ - function checkVariableValues(container, name, type, id) { - const variable = container.getVariableById(id); - chai.assert.isDefined(variable); - chai.assert.equal(name, variable.name); - chai.assert.equal(type, variable.type); - chai.assert.equal(id, variable.getId()); - } - - suite('Constructors', function() { - test('Var base', function() { - const event = new Blockly.Events.VarBase(this.variable); - assertEventEquals(event, undefined, this.workspace.id, undefined, { - 'varId': 'id1', - 'recordUndo': true, - 'group': '', - }); - }); - - test('Var create', function() { - const event = new Blockly.Events.VarCreate(this.variable); - assertEventEquals(event, Blockly.Events.VAR_CREATE, this.workspace.id, - undefined, - { - 'varId': 'id1', - 'varType': 'type1', - 'varName': 'name1', - 'recordUndo': true, - 'group': '', - }); - }); - - test('Var delete', function() { - const event = new Blockly.Events.VarDelete(this.variable); - assertEventEquals(event, Blockly.Events.VAR_DELETE, this.workspace.id, - undefined, - { - 'varId': 'id1', - 'varType': 'type1', - 'varName': 'name1', - 'recordUndo': true, - 'group': '', - }); - }); - - test('Var rename', function() { - const event = new Blockly.Events.VarRename(this.variable, 'name2'); - assertEventEquals(event, Blockly.Events.VAR_RENAME, this.workspace.id, - undefined, - { - 'varId': 'id1', - 'oldName': 'name1', - 'newName': 'name2', - 'recordUndo': true, - 'group': '', - }); - }); - }); - - suite('Run Forward', function() { - test('Var create', function() { - const json = {type: "var_create", varId: "id2", varType: "type2", - varName: "name2"}; - const event = eventUtils.fromJson(json, this.workspace); - const x = this.workspace.getVariableById('id2'); - chai.assert.isNull(x); - event.run(true); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - }); - - test('Var delete', function() { - const event = new Blockly.Events.VarDelete(this.variable); - chai.assert.isNotNull(this.workspace.getVariableById('id1')); - event.run(true); - chai.assert.isNull(this.workspace.getVariableById('id1')); - }); - - test('Var rename', function() { - const event = new Blockly.Events.VarRename(this.variable, 'name2'); - event.run(true); - chai.assert.isNull(this.workspace.getVariable('name1')); - checkVariableValues(this.workspace, 'name2', 'type1', 'id1'); - }); - }); - suite('Run Backward', function() { - test('Var create', function() { - const event = new Blockly.Events.VarCreate(this.variable); - chai.assert.isNotNull(this.workspace.getVariableById('id1')); - event.run(false); - }); - - test('Var delete', function() { - const json = {type: "var_delete", varId: "id2", varType: "type2", - varName: "name2"}; - const event = eventUtils.fromJson(json, this.workspace); - chai.assert.isNull(this.workspace.getVariableById('id2')); - event.run(false); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - }); - - test('Var rename', function() { - const event = new Blockly.Events.VarRename(this.variable, 'name2'); - event.run(false); - chai.assert.isNull(this.workspace.getVariable('name2')); - checkVariableValues(this.workspace, 'name1', 'type1', 'id1'); - }); - }); - }); - - suite('Filters', function() { - function addMoveEvent(events, block, newX, newY) { - events.push(new Blockly.Events.BlockMove(block)); - block.xy_ = new Blockly.utils.Coordinate(newX, newY); - events[events.length - 1].recordNew(); - } - - function addMoveEventParent(events, block, parent) { - events.push(new Blockly.Events.BlockMove(block)); - block.setParent(parent); - events[events.length - 1].recordNew(); - } - - test('No removed, order unchanged', function() { - const block = this.workspace.newBlock('field_variable_test_block', '1'); - const events = [ - new Blockly.Events.BlockCreate(block), - new Blockly.Events.BlockMove(block), - new Blockly.Events.BlockChange(block, 'field', 'VAR', 'id1', 'id2'), - new Blockly.Events.Click(block), - ]; - const filteredEvents = eventUtils.filter(events, true); - chai.assert.equal(filteredEvents.length, 4); // no event should have been removed. - // test that the order hasn't changed - chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockCreate); - chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); - chai.assert.isTrue(filteredEvents[2] instanceof Blockly.Events.BlockChange); - chai.assert.isTrue(filteredEvents[3] instanceof Blockly.Events.Click); - }); - - test('Different blocks no removed', function() { - const block1 = this.workspace.newBlock('field_variable_test_block', '1'); - const block2 = this.workspace.newBlock('field_variable_test_block', '2'); - const events = [ - new Blockly.Events.BlockCreate(block1), - new Blockly.Events.BlockMove(block1), - new Blockly.Events.BlockCreate(block2), - new Blockly.Events.BlockMove(block2), - ]; - const filteredEvents = eventUtils.filter(events, true); - chai.assert.equal(filteredEvents.length, 4); // no event should have been removed. - }); - - test('Forward', function() { - const block = this.workspace.newBlock('field_variable_test_block', '1'); - const events = [new Blockly.Events.BlockCreate(block)]; - addMoveEvent(events, block, 1, 1); - addMoveEvent(events, block, 2, 2); - addMoveEvent(events, block, 3, 3); - const filteredEvents = eventUtils.filter(events, true); - chai.assert.equal(filteredEvents.length, 2); // duplicate moves should have been removed. - // test that the order hasn't changed - chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockCreate); - chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); - chai.assert.equal(filteredEvents[1].newCoordinate.x, 3); - chai.assert.equal(filteredEvents[1].newCoordinate.y, 3); - }); - - test('Backward', function() { - const block = this.workspace.newBlock('field_variable_test_block', '1'); - const events = [new Blockly.Events.BlockCreate(block)]; - addMoveEvent(events, block, 1, 1); - addMoveEvent(events, block, 2, 2); - addMoveEvent(events, block, 3, 3); - const filteredEvents = eventUtils.filter(events, false); - chai.assert.equal(filteredEvents.length, 2); // duplicate event should have been removed. - // test that the order hasn't changed - chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockCreate); - chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); - chai.assert.equal(filteredEvents[1].newCoordinate.x, 1); - chai.assert.equal(filteredEvents[1].newCoordinate.y, 1); - }); - - test('Merge block move events', function() { - const block = this.workspace.newBlock('field_variable_test_block', '1'); - const events = []; - addMoveEvent(events, block, 0, 0); - addMoveEvent(events, block, 1, 1); - const filteredEvents = eventUtils.filter(events, true); - chai.assert.equal(filteredEvents.length, 1); // second move event merged into first - chai.assert.equal(filteredEvents[0].newCoordinate.x, 1); - chai.assert.equal(filteredEvents[0].newCoordinate.y, 1); - }); - - test('Merge block change events', function() { - const block1 = this.workspace.newBlock('field_variable_test_block', '1'); - const events = [ - new Blockly.Events.BlockChange(block1, 'field', 'VAR', 'item', 'item1'), - new Blockly.Events.BlockChange(block1, 'field', 'VAR', 'item1', 'item2'), - ]; - const filteredEvents = eventUtils.filter(events, true); - chai.assert.equal(filteredEvents.length, 1); // second change event merged into first - chai.assert.equal(filteredEvents[0].oldValue, 'item'); - chai.assert.equal(filteredEvents[0].newValue, 'item2'); - }); - - test('Merge viewport change events', function() { - const events = [ - new Blockly.Events.ViewportChange(1, 2, 3, this.workspace, 4), - new Blockly.Events.ViewportChange(5, 6, 7, this.workspace, 8), - ]; - const filteredEvents = eventUtils.filter(events, true); - chai.assert.equal(filteredEvents.length, 1); // second change event merged into first - chai.assert.equal(filteredEvents[0].viewTop, 5); - chai.assert.equal(filteredEvents[0].viewLeft, 6); - chai.assert.equal(filteredEvents[0].scale, 7); - chai.assert.equal(filteredEvents[0].oldScale, 8); - }); - - test('Merge ui events', function() { - const block1 = this.workspace.newBlock('field_variable_test_block', '1'); - const block2 = this.workspace.newBlock('field_variable_test_block', '2'); - const block3 = this.workspace.newBlock('field_variable_test_block', '3'); - const events = [ - new Blockly.Events.BubbleOpen(block1, true, 'comment'), - new Blockly.Events.Click(block1), - new Blockly.Events.BubbleOpen(block2, true, 'mutator'), - new Blockly.Events.Click(block2), - new Blockly.Events.BubbleOpen(block3, true, 'warning'), - new Blockly.Events.Click(block3), - ]; - const filteredEvents = eventUtils.filter(events, true); - // click event merged into corresponding *Open event - chai.assert.equal(filteredEvents.length, 3); - chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BubbleOpen); - chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BubbleOpen); - chai.assert.isTrue(filteredEvents[2] instanceof Blockly.Events.BubbleOpen); - chai.assert.equal(filteredEvents[0].bubbleType, 'comment'); - chai.assert.equal(filteredEvents[1].bubbleType, 'mutator'); - chai.assert.equal(filteredEvents[2].bubbleType, 'warning'); - }); - - test('Colliding events not dropped', function() { - // Tests that events that collide on a (event, block, workspace) tuple - // but cannot be merged do not get dropped during filtering. - const block = this.workspace.newBlock('field_variable_test_block', '1'); - const events = [ - new Blockly.Events.Click(block), - new Blockly.Events.Ui(block, 'stackclick', undefined, undefined), - ]; - const filteredEvents = eventUtils.filter(events, true); - // click and stackclick should both exist - chai.assert.equal(filteredEvents.length, 2); - chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.Click); - chai.assert.equal(filteredEvents[1].element, 'stackclick'); - }); - - test('Merging null operations dropped', function() { - // Mutator composition could result in move events for blocks - // connected to the mutated block that were null operations. This - // leads to events in the undo/redo queue that do nothing, requiring - // an extra undo/redo to proceed to the next event. This test ensures - // that two move events that do get merged (disconnecting and - // reconnecting a block in response to a mutator change) are filtered - // from the queue. - const block = this.workspace.newBlock('field_variable_test_block', '1'); - block.setParent(null); - const events = []; - addMoveEventParent(events, block, null); - addMoveEventParent(events, block, null); - const filteredEvents = eventUtils.filter(events, true); - // The two events should be merged, but because nothing has changed - // they will be filtered out. - chai.assert.equal(filteredEvents.length, 0); - }); - - test('Move events different blocks not merged', function() { - // Move events should only merge if they refer to the same block and are - // consecutive. - // See github.com/google/blockly/pull/1892 for a worked example showing - // how merging non-consecutive events can fail when replacing a shadow - // block. - const block1 = createSimpleTestBlock(this.workspace); - const block2 = createSimpleTestBlock(this.workspace); - - const events = []; - addMoveEvent(events, block1, 1, 1); - addMoveEvent(events, block2, 1, 1); - events.push(new Blockly.Events.BlockDelete(block2)); - addMoveEvent(events, block1, 2, 2); - - const filteredEvents = eventUtils.filter(events, true); - // Nothing should have merged. - chai.assert.equal(filteredEvents.length, 4); - // test that the order hasn't changed - chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockMove); - chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); - chai.assert.isTrue(filteredEvents[2] instanceof Blockly.Events.BlockDelete); - chai.assert.isTrue(filteredEvents[3] instanceof Blockly.Events.BlockMove); - }); - }); - - suite('Firing', function() { - setup(function() { - this.changeListenerSpy = createFireChangeListenerSpy(this.workspace); - }); - - test('Block dispose triggers Delete', function() { - let workspaceSvg; - try { - const toolbox = document.getElementById('toolbox-categories'); - workspaceSvg = Blockly.inject('blocklyDiv', {toolbox: toolbox}); - const TEST_BLOCK_ID = 'test_block_id'; - const genUidStub = createGenUidStubWithReturns( - [TEST_BLOCK_ID, 'test_group_id']); - - const block = workspaceSvg.newBlock(''); - block.initSvg(); - block.setCommentText('test comment'); - const expectedOldXml = Blockly.Xml.blockToDomWithXY(block); - const expectedId = block.id; - - // Run all queued events. - this.clock.runAll(); - - this.eventsFireSpy.resetHistory(); - const changeListenerSpy = createFireChangeListenerSpy(workspaceSvg); - block.dispose(); - - // Run all queued events. - this.clock.runAll(); - - // Expect two calls to genUid: one to set the block's ID, and one for - // the event group's ID for creating block. - sinon.assert.calledTwice(genUidStub); - - assertNthCallEventArgEquals( - this.eventsFireSpy, 0, Blockly.Events.BlockDelete, - {oldXml: expectedOldXml, group: ''}, - workspaceSvg.id, expectedId); - assertNthCallEventArgEquals( - changeListenerSpy, 0, Blockly.Events.BlockDelete, - {oldXml: expectedOldXml, group: ''}, - workspaceSvg.id, expectedId); - - // Expect the workspace to not have a variable with ID 'test_block_id'. - chai.assert.isNull(this.workspace.getVariableById(TEST_BLOCK_ID)); - } finally { - workspaceTeardown.call(this, workspaceSvg); - } - }); - - test('New block new var', function() { - const TEST_BLOCK_ID = 'test_block_id'; - const TEST_GROUP_ID = 'test_group_id'; - const TEST_VAR_ID = 'test_var_id'; - const genUidStub = createGenUidStubWithReturns( - [TEST_BLOCK_ID, TEST_GROUP_ID, TEST_VAR_ID]); - const _ = this.workspace.newBlock('field_variable_test_block'); - const TEST_VAR_NAME = 'item'; // As defined in block's json. - - // Run all queued events. - this.clock.runAll(); - - // Expect three calls to genUid: one to set the block's ID, one for the event - // group's ID, and one for the variable's ID. - sinon.assert.calledThrice(genUidStub); - - // Expect two events fired: varCreate and block create. - sinon.assert.calledTwice(this.eventsFireSpy); - // Expect both events to trigger change listener. - sinon.assert.calledTwice(this.changeListenerSpy); - // Both events should be on undo stack - chai.assert.equal(this.workspace.undoStack_.length, 2, - 'Undo stack length'); - - assertNthCallEventArgEquals( - this.changeListenerSpy, 0, Blockly.Events.VarCreate, - {group: TEST_GROUP_ID, varId: TEST_VAR_ID, varName: TEST_VAR_NAME}, - this.workspace.id, undefined); - assertNthCallEventArgEquals( - this.changeListenerSpy, 1, Blockly.Events.BlockCreate, - {group: TEST_GROUP_ID}, this.workspace.id, TEST_BLOCK_ID); - - // Expect the workspace to have a variable with ID 'test_var_id'. - chai.assert.isNotNull(this.workspace.getVariableById(TEST_VAR_ID)); - }); - - test('New block new var xml', function() { - const TEST_GROUP_ID = 'test_group_id'; - const genUidStub = createGenUidStubWithReturns(TEST_GROUP_ID); - const dom = Blockly.Xml.textToDom( - '' + - ' ' + - ' name1' + - ' ' + - ''); - Blockly.Xml.domToWorkspace(dom, this.workspace); - const TEST_BLOCK_ID = 'test_block_id'; - const TEST_VAR_ID = 'test_var_id'; - const TEST_VAR_NAME = 'name1'; - - // Run all queued events. - this.clock.runAll(); - - // Expect one call to genUid: for the event group's id - sinon.assert.calledOnce(genUidStub); - - // When block is created using domToWorkspace, 5 events are fired: - // 1. varCreate (events disabled) - // 2. varCreate - // 3. block create - // 4. move (no-op, is filtered out) - // 5. finished loading - sinon.assert.callCount(this.eventsFireSpy, 5); - // The first varCreate and move event should have been ignored. - sinon.assert.callCount(this.changeListenerSpy, 3); - // Expect two events on undo stack: varCreate and block create. - chai.assert.equal(this.workspace.undoStack_.length, 2, - 'Undo stack length'); - - assertNthCallEventArgEquals( - this.changeListenerSpy, 0, Blockly.Events.VarCreate, - {group: TEST_GROUP_ID, varId: TEST_VAR_ID, varName: TEST_VAR_NAME}, - this.workspace.id, undefined); - assertNthCallEventArgEquals( - this.changeListenerSpy, 1, Blockly.Events.BlockCreate, - {group: TEST_GROUP_ID}, this.workspace.id, TEST_BLOCK_ID); - - // Finished loading event should not be part of event group. - assertNthCallEventArgEquals( - this.changeListenerSpy, 2, Blockly.Events.FinishedLoading, - {group: ''}, this.workspace.id, undefined); - - // Expect the workspace to have a variable with ID 'test_var_id'. - chai.assert.isNotNull(this.workspace.getVariableById(TEST_VAR_ID)); - }); - }); - suite('Disable orphans', function() { - setup(function() { - // disableOrphans needs a WorkspaceSVG - const toolbox = document.getElementById('toolbox-categories'); - this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - test('Created orphan block is disabled', function() { - this.workspace.addChangeListener(eventUtils.disableOrphans); - const block = this.workspace.newBlock('controls_for'); - block.initSvg(); - block.render(); - - // Fire all events - this.clock.runAll(); - - chai.assert.isFalse(block.isEnabled(), - 'Expected orphan block to be disabled after creation'); - }); - test('Created procedure block is enabled', function() { - this.workspace.addChangeListener(eventUtils.disableOrphans); - - // Procedure block is never an orphan - const functionBlock = this.workspace.newBlock('procedures_defnoreturn'); - functionBlock.initSvg(); - functionBlock.render(); - - // Fire all events - this.clock.runAll(); - - chai.assert.isTrue(functionBlock.isEnabled(), - 'Expected top-level procedure block to be enabled'); - }); - test('Moving a block to top-level disables it', function() { - this.workspace.addChangeListener(eventUtils.disableOrphans); - const functionBlock = this.workspace.newBlock('procedures_defnoreturn'); - functionBlock.initSvg(); - functionBlock.render(); - - const block = this.workspace.newBlock('controls_for'); - block.initSvg(); - block.render(); - - // Connect the block to the function block input stack - functionBlock.inputList[1].connection.connect(block.previousConnection); - - // Disconnect it again - block.unplug(false); - - // Fire all events - this.clock.runAll(); - - chai.assert.isFalse(block.isEnabled(), - 'Expected disconnected block to be disabled'); - }); - test('Giving block a parent enables it', function() { - this.workspace.addChangeListener(eventUtils.disableOrphans); - const functionBlock = this.workspace.newBlock('procedures_defnoreturn'); - functionBlock.initSvg(); - functionBlock.render(); - - const block = this.workspace.newBlock('controls_for'); - block.initSvg(); - block.render(); - - // Connect the block to the function block input stack - functionBlock.inputList[1].connection.connect(block.previousConnection); - - // Fire all events - this.clock.runAll(); - - chai.assert.isTrue(block.isEnabled(), - 'Expected block to be enabled after connecting to parent'); - }); - test('disableOrphans events are not undoable', function() { - this.workspace.addChangeListener(eventUtils.disableOrphans); - const functionBlock = this.workspace.newBlock('procedures_defnoreturn'); - functionBlock.initSvg(); - functionBlock.render(); - - const block = this.workspace.newBlock('controls_for'); - block.initSvg(); - block.render(); - - // Connect the block to the function block input stack - functionBlock.inputList[1].connection.connect(block.previousConnection); - - // Disconnect it again - block.unplug(false); - - // Fire all events - this.clock.runAll(); - - const disabledEvents = this.workspace.getUndoStack().filter(function(e) { - return e.element === 'disabled'; - }); - chai.assert.isEmpty(disabledEvents, - 'Undo stack should not contain any disabled events'); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.event'); + +const {ASTNode} = goog.require('Blockly.ASTNode'); +const {assertEventEquals, assertNthCallEventArgEquals, createFireChangeListenerSpy} = goog.require('Blockly.test.helpers.events'); +const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); +const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const eventUtils = goog.require('Blockly.Events.utils'); +goog.require('Blockly.WorkspaceComment'); + + +suite('Events', function() { + setup(function() { + sharedTestSetup.call(this, {fireEventsNow: false}); + this.eventsFireSpy = sinon.spy(eventUtils, 'fire'); + this.workspace = new Blockly.Workspace(); + Blockly.defineBlocksWithJsonArray([{ + 'type': 'field_variable_test_block', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': 'item', + }, + ], + }, + { + 'type': 'simple_test_block', + 'message0': 'simple test block', + }]); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + function createSimpleTestBlock(workspace) { + // Disable events while constructing the block: this is a test of the + // Blockly.Event constructors, not the block constructors. + // Set the group id to avoid an extra call to genUid. + eventUtils.disable(); + let block; + try { + eventUtils.setGroup('unused'); + block = new Blockly.Block( + workspace, 'simple_test_block'); + } finally { + eventUtils.setGroup(false); + } + eventUtils.enable(); + return block; + } + + suite('Constructors', function() { + test('Abstract', function() { + const event = new Blockly.Events.Abstract(); + assertEventEquals(event, undefined, undefined, undefined, { + 'recordUndo': true, + 'group': '', + }); + }); + + test('UI event without block', function() { + const event = new Blockly.Events.UiBase(this.workspace.id); + assertEventEquals(event, undefined, this.workspace.id, undefined, { + 'recordUndo': false, + 'group': '', + }, true); + }); + + test('Click without block', function() { + const event = new Blockly.Events.Click(null, this.workspace.id, 'workspace'); + assertEventEquals(event, Blockly.Events.CLICK, this.workspace.id, null, { + 'targetType': 'workspace', + 'recordUndo': false, + 'group': '', + }, true); + }); + + test('Old UI event without block', function() { + const TEST_GROUP_ID = 'testGroup'; + eventUtils.setGroup(TEST_GROUP_ID); + const event = new Blockly.Events.Ui(null, 'foo', 'bar', 'baz'); + assertEventEquals(event, Blockly.Events.UI, '', null, { + 'element': 'foo', + 'oldValue': 'bar', + 'newValue': 'baz', + 'recordUndo': false, + 'group': TEST_GROUP_ID, + }, true); + }); + + suite('With simple blocks', function() { + setup(function() { + this.TEST_BLOCK_ID = 'test_block_id'; + this.TEST_PARENT_ID = 'parent'; + // genUid is expected to be called either once or twice in this suite. + this.genUidStub = createGenUidStubWithReturns( + [this.TEST_BLOCK_ID, this.TEST_PARENT_ID]); + this.block = createSimpleTestBlock(this.workspace); + }); + + test('Block base', function() { + const event = new Blockly.Events.BlockBase(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, undefined, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'varId': undefined, + 'recordUndo': true, + 'group': '', + }); + }); + + test('Block create', function() { + const event = new Blockly.Events.BlockCreate(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.BLOCK_CREATE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': true, + 'group': '', + }); + }); + + test('Block delete', function() { + const event = new Blockly.Events.BlockDelete(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.BLOCK_DELETE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': true, + 'group': '', + }); + }); + + test('Old UI event with block', function() { + const TEST_GROUP_ID = 'testGroup'; + eventUtils.setGroup(TEST_GROUP_ID); + const event = new Blockly.Events.Ui(this.block, 'foo', 'bar', 'baz'); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.UI, this.workspace.id, + this.TEST_BLOCK_ID, + { + 'element': 'foo', + 'oldValue': 'bar', + 'newValue': 'baz', + 'recordUndo': false, + 'group': TEST_GROUP_ID, + }, true); + }); + + test('Click with block', function() { + const TEST_GROUP_ID = 'testGroup'; + eventUtils.setGroup(TEST_GROUP_ID); + const event = new Blockly.Events.Click(this.block, null, 'block'); + assertEventEquals(event, Blockly.Events.CLICK, this.workspace.id, + this.TEST_BLOCK_ID, { + 'targetType': 'block', + 'recordUndo': false, + 'group': TEST_GROUP_ID, + }, true); + }); + + suite('Block Move', function() { + test('by coordinate', function() { + const coordinate = new Blockly.utils.Coordinate(3, 4); + this.block.xy_ = coordinate; + + const event = new Blockly.Events.BlockMove(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.BLOCK_MOVE, this.workspace.id, + this.TEST_BLOCK_ID, { + 'oldParentId': undefined, + 'oldInputName': undefined, + 'oldCoordinate': coordinate, + 'recordUndo': true, + 'group': '', + }); + }); + + test('by parent', function() { + try { + this.parentBlock = createSimpleTestBlock(this.workspace); + this.block.parentBlock_ = this.parentBlock; + this.block.xy_ = new Blockly.utils.Coordinate(3, 4); + const event = new Blockly.Events.BlockMove(this.block); + sinon.assert.calledTwice(this.genUidStub); + assertEventEquals(event, Blockly.Events.BLOCK_MOVE, this.workspace.id, + this.TEST_BLOCK_ID, { + 'oldParentId': this.TEST_PARENT_ID, + 'oldInputName': undefined, + 'oldCoordinate': undefined, + 'recordUndo': true, + 'group': '', + }); + } finally { + // This needs to be cleared, otherwise workspace.dispose will fail. + this.block.parentBlock_ = null; + } + }); + }); + }); + + suite('With shadow blocks', function() { + setup(function() { + this.TEST_BLOCK_ID = 'test_block_id'; + this.TEST_PARENT_ID = 'parent'; + // genUid is expected to be called either once or twice in this suite. + this.genUidStub = createGenUidStubWithReturns( + [this.TEST_BLOCK_ID, this.TEST_PARENT_ID]); + this.block = createSimpleTestBlock(this.workspace); + this.block.setShadow(true); + }); + + test('Block base', function() { + const event = new Blockly.Events.BlockBase(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, undefined, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'varId': undefined, + 'recordUndo': true, + 'group': '', + }); + }); + + test('Block change', function() { + const event = new Blockly.Events.BlockChange( + this.block, 'field', 'FIELD_NAME', 'old', 'new'); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.BLOCK_CHANGE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'varId': undefined, + 'element': 'field', + 'name': 'FIELD_NAME', + 'oldValue': 'old', + 'newValue': 'new', + 'recordUndo': true, + 'group': '', + }); + }); + + test('Block create', function() { + const event = new Blockly.Events.BlockCreate(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.BLOCK_CREATE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': false, + 'group': '', + }); + }); + + test('Block delete', function() { + const event = new Blockly.Events.BlockDelete(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.BLOCK_DELETE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': false, + 'group': '', + }); + }); + + test('Block move', function() { + try { + this.parentBlock = createSimpleTestBlock(this.workspace); + this.block.parentBlock_ = this.parentBlock; + this.block.xy_ = new Blockly.utils.Coordinate(3, 4); + const event = new Blockly.Events.BlockMove(this.block); + sinon.assert.calledTwice(this.genUidStub); + assertEventEquals(event, Blockly.Events.BLOCK_MOVE, this.workspace.id, + this.TEST_BLOCK_ID, + { + 'oldParentId': this.TEST_PARENT_ID, + 'oldInputName': undefined, + 'oldCoordinate': undefined, + 'recordUndo': false, + 'group': '', + }); + } finally { + // This needs to be cleared, otherwise workspace.dispose will fail. + this.block.parentBlock_ = null; + } + }); + }); + + suite('With variable getter blocks', function() { + setup(function() { + this.genUidStub = createGenUidStubWithReturns( + [this.TEST_BLOCK_ID, 'test_var_id', 'test_group_id']); + // Disabling events when creating a block with variable can cause issues + // at workspace dispose. + this.block = new Blockly.Block( + this.workspace, 'field_variable_test_block'); + }); + + test('Block change', function() { + const event = new Blockly.Events.BlockChange( + this.block, 'field', 'VAR', 'id1', 'id2'); + assertEventEquals(event, Blockly.Events.BLOCK_CHANGE, this.workspace.id, + this.TEST_BLOCK_ID, + { + 'element': 'field', + 'name': 'VAR', + 'oldValue': 'id1', + 'newValue': 'id2', + 'recordUndo': true, + 'group': '', + }); + }); + }); + }); + + suite('Serialization', function() { + const safeStringify = (json) => { + const cache = []; + return JSON.stringify(json, (key, value) => { + if (typeof value == 'object' && value != null) { + if (cache.includes(value)) { + // Discard duplicate reference. + return undefined; + } + cache.push(value); + return value; + } + return value; + }); + }; + const variableEventTestCases = [ + {title: 'Var create', class: Blockly.Events.VarCreate, + getArgs: (thisObj) => [thisObj.variable], + getExpectedJson: () => ({type: 'var_create', varId: 'id1', + varType: 'type1', varName: 'name1'})}, + {title: 'Var delete', class: Blockly.Events.VarDelete, + getArgs: (thisObj) => [thisObj.variable], + getExpectedJson: () => ({type: 'var_delete', varId: 'id1', + varType: 'type1', varName: 'name1'})}, + {title: 'Var rename', class: Blockly.Events.VarRename, + getArgs: (thisObj) => [thisObj.variable, 'name2'], + getExpectedJson: () => ({type: 'var_rename', varId: 'id1', + oldName: 'name1', newName: 'name2'})}, + ]; + const uiEventTestCases = [ + {title: 'Bubble open', class: Blockly.Events.BubbleOpen, + getArgs: (thisObj) => [thisObj.block, true, 'mutator'], + getExpectedJson: (thisObj) => ({type: 'bubble_open', isOpen: true, + bubbleType: 'mutator', blockId: thisObj.block.id})}, + {title: 'Block click', class: Blockly.Events.Click, + getArgs: (thisObj) => [thisObj.block, null, 'block'], + getExpectedJson: (thisObj) => ({type: 'click', targetType: 'block', + blockId: thisObj.block.id})}, + {title: 'Workspace click', class: Blockly.Events.Click, + getArgs: (thisObj) => [null, thisObj.workspace.id, 'workspace'], + getExpectedJson: (thisObj) => ({type: 'click', + targetType: 'workspace'})}, + {title: 'Drag start', class: Blockly.Events.BlockDrag, + getArgs: (thisObj) => [thisObj.block, true, [thisObj.block]], + getExpectedJson: (thisObj) => ({type: 'drag', + isStart: true, blockId: thisObj.block.id, blocks: [thisObj.block]})}, + {title: 'Drag end', class: Blockly.Events.BlockDrag, + getArgs: (thisObj) => [thisObj.block, false, [thisObj.block]], + getExpectedJson: (thisObj) => ({type: 'drag', + isStart: false, blockId: thisObj.block.id, blocks: [thisObj.block]})}, + {title: 'null to Block Marker move', class: Blockly.Events.MarkerMove, + getArgs: (thisObj) => [thisObj.block, true, null, + new ASTNode(ASTNode.types.BLOCK, thisObj.block)], + getExpectedJson: (thisObj) => ({type: 'marker_move', + isCursor: true, blockId: thisObj.block.id, oldNode: null, + newNode: new ASTNode(ASTNode.types.BLOCK, + thisObj.block)})}, + {title: 'null to Workspace Marker move', class: Blockly.Events.MarkerMove, + getArgs: (thisObj) => [null, true, null, + ASTNode.createWorkspaceNode(thisObj.workspace, + new Blockly.utils.Coordinate(0, 0))], + getExpectedJson: (thisObj) => ({type: 'marker_move', + isCursor: true, blockId: null, oldNode: null, + newNode: ASTNode.createWorkspaceNode(thisObj.workspace, + new Blockly.utils.Coordinate(0, 0))})}, + {title: 'Workspace to Block Marker move', + class: Blockly.Events.MarkerMove, + getArgs: (thisObj) => [thisObj.block, true, + ASTNode.createWorkspaceNode(thisObj.workspace, + new Blockly.utils.Coordinate(0, 0)), + new ASTNode(ASTNode.types.BLOCK, thisObj.block)], + getExpectedJson: (thisObj) => ({type: 'marker_move', + isCursor: true, blockId: thisObj.block.id, + oldNode: ASTNode.createWorkspaceNode(thisObj.workspace, + new Blockly.utils.Coordinate(0, 0)), + newNode: new ASTNode(ASTNode.types.BLOCK, + thisObj.block)})}, + {title: 'Block to Workspace Marker move', + class: Blockly.Events.MarkerMove, + getArgs: (thisObj) => [null, true, + new ASTNode(ASTNode.types.BLOCK, thisObj.block), + ASTNode.createWorkspaceNode(thisObj.workspace, + new Blockly.utils.Coordinate(0, 0))]}, + {title: 'Selected', class: Blockly.Events.Selected, + getArgs: (thisObj) => [null, thisObj.block.id, thisObj.workspace.id], + getExpectedJson: (thisObj) => ({type: 'selected', oldElementId: null, + newElementId: thisObj.block.id})}, + {title: 'Selected (deselect)', class: Blockly.Events.Selected, + getArgs: (thisObj) => [thisObj.block.id, null, thisObj.workspace.id], + getExpectedJson: (thisObj) => ({type: 'selected', + oldElementId: thisObj.block.id, newElementId: null})}, + {title: 'Theme Change', class: Blockly.Events.ThemeChange, + getArgs: (thisObj) => ['classic', thisObj.workspace.id], + getExpectedJson: () => ({type: 'theme_change', themeName: 'classic'})}, + {title: 'Toolbox item select', + class: Blockly.Events.ToolboxItemSelect, + getArgs: (thisObj) => ['Math', 'Loops', thisObj.workspace.id], + getExpectedJson: () => ({type: 'toolbox_item_select', oldItem: 'Math', + newItem: 'Loops'})}, + {title: 'Toolbox item select (no previous)', + class: Blockly.Events.ToolboxItemSelect, + getArgs: (thisObj) => [null, 'Loops', thisObj.workspace.id], + getExpectedJson: () => ({type: 'toolbox_item_select', oldItem: null, + newItem: 'Loops'})}, + {title: 'Toolbox item select (deselect)', + class: Blockly.Events.ToolboxItemSelect, + getArgs: (thisObj) => ['Math', null, thisObj.workspace.id], + getExpectedJson: () => ({type: 'toolbox_item_select', oldItem: 'Math', + newItem: null})}, + {title: 'Trashcan open', class: Blockly.Events.TrashcanOpen, + getArgs: (thisObj) => [true, thisObj.workspace.id], + getExpectedJson: () => ({type: 'trashcan_open', isOpen: true})}, + {title: 'Viewport change', class: Blockly.Events.ViewportChange, + getArgs: (thisObj) => [2.666, 1.333, 1.2, thisObj.workspace.id, 1], + getExpectedJson: () => ({type: 'viewport_change', viewTop: 2.666, + viewLeft: 1.333, scale: 1.2, oldScale: 1})}, + {title: 'Viewport change (0,0)', class: Blockly.Events.ViewportChange, + getArgs: (thisObj) => [0, 0, 1.2, thisObj.workspace.id, 1], + getExpectedJson: () => ({type: 'viewport_change', viewTop: 0, + viewLeft: 0, scale: 1.2, oldScale: 1})}, + ]; + const blockEventTestCases = [ + { + title: 'Block change', + class: Blockly.Events.BlockChange, + getArgs: (thisObj) => [thisObj.block, 'collapsed', null, false, true], + getExpectedJson: (thisObj) => ({ + type: 'change', + blockId: thisObj.block.id, + element: 'collapsed', + oldValue: false, + newValue: true, + }), + }, + { + title: 'Block create', + class: Blockly.Events.BlockCreate, + getArgs: (thisObj) => [thisObj.block], + getExpectedJson: (thisObj) => ({ + type: 'create', + blockId: thisObj.block.id, + xml: '' + + '', + ids: [thisObj.block.id], + json: { + 'type': 'simple_test_block', + 'id': 'testBlockId1', + 'x': 0, + 'y': 0, + }, + }), + }, + { + title: 'Block create (shadow)', + class: Blockly.Events.BlockCreate, + getArgs: (thisObj) => [thisObj.shadowBlock], + getExpectedJson: (thisObj) => ({ + type: 'create', + blockId: thisObj.shadowBlock.id, + xml: '' + + '', + ids: [thisObj.shadowBlock.id], + json: { + 'type': 'simple_test_block', + 'id': 'testBlockId2', + 'x': 0, + 'y': 0, + }, + recordUndo: false, + }), + }, + { + title: 'Block delete', + class: Blockly.Events.BlockDelete, + getArgs: (thisObj) => [thisObj.block], + getExpectedJson: (thisObj) => ({ + type: 'delete', + blockId: thisObj.block.id, + oldXml: '' + + '', + ids: [thisObj.block.id], + wasShadow: false, + oldJson: { + 'type': 'simple_test_block', + 'id': 'testBlockId1', + 'x': 0, + 'y': 0, + }, + }), + }, + { + title: 'Block delete (shadow)', + class: Blockly.Events.BlockDelete, + getArgs: (thisObj) => [thisObj.shadowBlock], + getExpectedJson: (thisObj) => ({ + type: 'delete', + blockId: thisObj.shadowBlock.id, + oldXml: '' + + '', + ids: [thisObj.shadowBlock.id], + wasShadow: true, + oldJson: { + 'type': 'simple_test_block', + 'id': 'testBlockId2', + 'x': 0, + 'y': 0, + }, + recordUndo: false, + }), + }, + // TODO(#4577) Test serialization of move event coordinate properties. + { + title: 'Block move', + class: Blockly.Events.BlockMove, + getArgs: (thisObj) => [thisObj.block], + getExpectedJson: (thisObj) => ({ + type: 'move', + blockId: thisObj.block.id, + }), + }, + { + title: 'Block move (shadow)', + class: Blockly.Events.BlockMove, + getArgs: (thisObj) => [thisObj.shadowBlock], + getExpectedJson: (thisObj) => ({ + type: 'move', + blockId: thisObj.shadowBlock.id, + recordUndo: false, + }), + }, + ]; + const workspaceEventTestCases = [ + {title: 'Finished Loading', class: Blockly.Events.FinishedLoading, + getArgs: (thisObj) => [thisObj.workspace], + getExpectedJson: (thisObj) => ({type: 'finished_loading', + workspaceId: thisObj.workspace.id})}, + ]; + const workspaceCommentEventTestCases = [ + {title: 'Comment change', class: Blockly.Events.CommentChange, + getArgs: (thisObj) => [thisObj.comment, 'bar', 'foo'], + getExpectedJson: (thisObj) => ({type: 'comment_change', + commentId: thisObj.comment.id, oldContents: 'bar', + newContents: 'foo'})}, + {title: 'Comment create', class: Blockly.Events.CommentCreate, + getArgs: (thisObj) => [thisObj.comment], + getExpectedJson: (thisObj) => ({type: 'comment_create', + commentId: thisObj.comment.id, + xml: Blockly.Xml.domToText(thisObj.comment.toXmlWithXY())})}, + {title: 'Comment delete', class: Blockly.Events.CommentDelete, + getArgs: (thisObj) => [thisObj.comment], + getExpectedJson: (thisObj) => ({type: 'comment_delete', + commentId: thisObj.comment.id})}, + // TODO(#4577) Test serialization of move event coordinate properties. + {title: 'Comment move', class: Blockly.Events.CommentMove, + getArgs: (thisObj) => [thisObj.comment], + getExpectedJson: (thisObj) => ({type: 'comment_move', + commentId: thisObj.comment.id, oldCoordinate: '0,0'})}, + ]; + const testSuites = [ + {title: 'Variable events', testCases: variableEventTestCases, + setup: (thisObj) => { + thisObj.variable = + thisObj.workspace.createVariable('name1', 'type1', 'id1'); + }}, + {title: 'UI events', testCases: uiEventTestCases, + setup: (thisObj) => { + thisObj.block = createSimpleTestBlock(thisObj.workspace); + }}, + {title: 'Block events', testCases: blockEventTestCases, + setup: (thisObj) => { + createGenUidStubWithReturns(['testBlockId1', 'testBlockId2']); + thisObj.block = createSimpleTestBlock(thisObj.workspace); + thisObj.shadowBlock = createSimpleTestBlock(thisObj.workspace); + thisObj.shadowBlock.setShadow(true); + }}, + {title: 'Workspace events', + testCases: workspaceEventTestCases, + setup: (_) => {}}, + {title: 'WorkspaceComment events', + testCases: workspaceCommentEventTestCases, + setup: (thisObj) => { + thisObj.comment = new Blockly.WorkspaceComment( + thisObj.workspace, 'comment text', 0, 0, 'comment id'); + }}, + ]; + testSuites.forEach((testSuite) => { + suite(testSuite.title, function() { + setup(function() { + testSuite.setup(this); + }); + suite('fromJson', function() { + testSuite.testCases.forEach((testCase) => { + test(testCase.title, function() { + const event = new testCase.class(...testCase.getArgs(this)); + const event2 = new testCase.class(); + const json = event.toJson(); + event2.fromJson(json); + + chai.assert.equal( + safeStringify(event2.toJson()), safeStringify(json)); + }); + }); + }); + suite('toJson', function() { + testSuite.testCases.forEach((testCase) => { + if (testCase.getExpectedJson) { + test(testCase.title, function() { + const event = new testCase.class(...testCase.getArgs(this)); + const json = event.toJson(); + const expectedJson = testCase.getExpectedJson(this); + + chai.assert.equal( + safeStringify(json), safeStringify(expectedJson)); + }); + } + }); + }); + }); + }); + }); + + suite('Variable events', function() { + setup(function() { + this.variable = this.workspace.createVariable('name1', 'type1', 'id1'); + }); + + /** + * Check if a variable with the given values exists. + * @param {Blockly.Workspace|Blockly.VariableMap} container The workspace or + * variableMap the checked variable belongs to. + * @param {!string} name The expected name of the variable. + * @param {!string} type The expected type of the variable. + * @param {!string} id The expected id of the variable. + */ + function checkVariableValues(container, name, type, id) { + const variable = container.getVariableById(id); + chai.assert.isDefined(variable); + chai.assert.equal(name, variable.name); + chai.assert.equal(type, variable.type); + chai.assert.equal(id, variable.getId()); + } + + suite('Constructors', function() { + test('Var base', function() { + const event = new Blockly.Events.VarBase(this.variable); + assertEventEquals(event, undefined, this.workspace.id, undefined, { + 'varId': 'id1', + 'recordUndo': true, + 'group': '', + }); + }); + + test('Var create', function() { + const event = new Blockly.Events.VarCreate(this.variable); + assertEventEquals(event, Blockly.Events.VAR_CREATE, this.workspace.id, + undefined, + { + 'varId': 'id1', + 'varType': 'type1', + 'varName': 'name1', + 'recordUndo': true, + 'group': '', + }); + }); + + test('Var delete', function() { + const event = new Blockly.Events.VarDelete(this.variable); + assertEventEquals(event, Blockly.Events.VAR_DELETE, this.workspace.id, + undefined, + { + 'varId': 'id1', + 'varType': 'type1', + 'varName': 'name1', + 'recordUndo': true, + 'group': '', + }); + }); + + test('Var rename', function() { + const event = new Blockly.Events.VarRename(this.variable, 'name2'); + assertEventEquals(event, Blockly.Events.VAR_RENAME, this.workspace.id, + undefined, + { + 'varId': 'id1', + 'oldName': 'name1', + 'newName': 'name2', + 'recordUndo': true, + 'group': '', + }); + }); + }); + + suite('Run Forward', function() { + test('Var create', function() { + const json = {type: "var_create", varId: "id2", varType: "type2", + varName: "name2"}; + const event = eventUtils.fromJson(json, this.workspace); + const x = this.workspace.getVariableById('id2'); + chai.assert.isNull(x); + event.run(true); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + }); + + test('Var delete', function() { + const event = new Blockly.Events.VarDelete(this.variable); + chai.assert.isNotNull(this.workspace.getVariableById('id1')); + event.run(true); + chai.assert.isNull(this.workspace.getVariableById('id1')); + }); + + test('Var rename', function() { + const event = new Blockly.Events.VarRename(this.variable, 'name2'); + event.run(true); + chai.assert.isNull(this.workspace.getVariable('name1')); + checkVariableValues(this.workspace, 'name2', 'type1', 'id1'); + }); + }); + suite('Run Backward', function() { + test('Var create', function() { + const event = new Blockly.Events.VarCreate(this.variable); + chai.assert.isNotNull(this.workspace.getVariableById('id1')); + event.run(false); + }); + + test('Var delete', function() { + const json = {type: "var_delete", varId: "id2", varType: "type2", + varName: "name2"}; + const event = eventUtils.fromJson(json, this.workspace); + chai.assert.isNull(this.workspace.getVariableById('id2')); + event.run(false); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + }); + + test('Var rename', function() { + const event = new Blockly.Events.VarRename(this.variable, 'name2'); + event.run(false); + chai.assert.isNull(this.workspace.getVariable('name2')); + checkVariableValues(this.workspace, 'name1', 'type1', 'id1'); + }); + }); + }); + + suite('Filters', function() { + function addMoveEvent(events, block, newX, newY) { + events.push(new Blockly.Events.BlockMove(block)); + block.xy_ = new Blockly.utils.Coordinate(newX, newY); + events[events.length - 1].recordNew(); + } + + function addMoveEventParent(events, block, parent) { + events.push(new Blockly.Events.BlockMove(block)); + block.setParent(parent); + events[events.length - 1].recordNew(); + } + + test('No removed, order unchanged', function() { + const block = this.workspace.newBlock('field_variable_test_block', '1'); + const events = [ + new Blockly.Events.BlockCreate(block), + new Blockly.Events.BlockMove(block), + new Blockly.Events.BlockChange(block, 'field', 'VAR', 'id1', 'id2'), + new Blockly.Events.Click(block), + ]; + const filteredEvents = eventUtils.filter(events, true); + chai.assert.equal(filteredEvents.length, 4); // no event should have been removed. + // test that the order hasn't changed + chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockCreate); + chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); + chai.assert.isTrue(filteredEvents[2] instanceof Blockly.Events.BlockChange); + chai.assert.isTrue(filteredEvents[3] instanceof Blockly.Events.Click); + }); + + test('Different blocks no removed', function() { + const block1 = this.workspace.newBlock('field_variable_test_block', '1'); + const block2 = this.workspace.newBlock('field_variable_test_block', '2'); + const events = [ + new Blockly.Events.BlockCreate(block1), + new Blockly.Events.BlockMove(block1), + new Blockly.Events.BlockCreate(block2), + new Blockly.Events.BlockMove(block2), + ]; + const filteredEvents = eventUtils.filter(events, true); + chai.assert.equal(filteredEvents.length, 4); // no event should have been removed. + }); + + test('Forward', function() { + const block = this.workspace.newBlock('field_variable_test_block', '1'); + const events = [new Blockly.Events.BlockCreate(block)]; + addMoveEvent(events, block, 1, 1); + addMoveEvent(events, block, 2, 2); + addMoveEvent(events, block, 3, 3); + const filteredEvents = eventUtils.filter(events, true); + chai.assert.equal(filteredEvents.length, 2); // duplicate moves should have been removed. + // test that the order hasn't changed + chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockCreate); + chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); + chai.assert.equal(filteredEvents[1].newCoordinate.x, 3); + chai.assert.equal(filteredEvents[1].newCoordinate.y, 3); + }); + + test('Backward', function() { + const block = this.workspace.newBlock('field_variable_test_block', '1'); + const events = [new Blockly.Events.BlockCreate(block)]; + addMoveEvent(events, block, 1, 1); + addMoveEvent(events, block, 2, 2); + addMoveEvent(events, block, 3, 3); + const filteredEvents = eventUtils.filter(events, false); + chai.assert.equal(filteredEvents.length, 2); // duplicate event should have been removed. + // test that the order hasn't changed + chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockCreate); + chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); + chai.assert.equal(filteredEvents[1].newCoordinate.x, 1); + chai.assert.equal(filteredEvents[1].newCoordinate.y, 1); + }); + + test('Merge block move events', function() { + const block = this.workspace.newBlock('field_variable_test_block', '1'); + const events = []; + addMoveEvent(events, block, 0, 0); + addMoveEvent(events, block, 1, 1); + const filteredEvents = eventUtils.filter(events, true); + chai.assert.equal(filteredEvents.length, 1); // second move event merged into first + chai.assert.equal(filteredEvents[0].newCoordinate.x, 1); + chai.assert.equal(filteredEvents[0].newCoordinate.y, 1); + }); + + test('Merge block change events', function() { + const block1 = this.workspace.newBlock('field_variable_test_block', '1'); + const events = [ + new Blockly.Events.BlockChange(block1, 'field', 'VAR', 'item', 'item1'), + new Blockly.Events.BlockChange(block1, 'field', 'VAR', 'item1', 'item2'), + ]; + const filteredEvents = eventUtils.filter(events, true); + chai.assert.equal(filteredEvents.length, 1); // second change event merged into first + chai.assert.equal(filteredEvents[0].oldValue, 'item'); + chai.assert.equal(filteredEvents[0].newValue, 'item2'); + }); + + test('Merge viewport change events', function() { + const events = [ + new Blockly.Events.ViewportChange(1, 2, 3, this.workspace, 4), + new Blockly.Events.ViewportChange(5, 6, 7, this.workspace, 8), + ]; + const filteredEvents = eventUtils.filter(events, true); + chai.assert.equal(filteredEvents.length, 1); // second change event merged into first + chai.assert.equal(filteredEvents[0].viewTop, 5); + chai.assert.equal(filteredEvents[0].viewLeft, 6); + chai.assert.equal(filteredEvents[0].scale, 7); + chai.assert.equal(filteredEvents[0].oldScale, 8); + }); + + test('Merge ui events', function() { + const block1 = this.workspace.newBlock('field_variable_test_block', '1'); + const block2 = this.workspace.newBlock('field_variable_test_block', '2'); + const block3 = this.workspace.newBlock('field_variable_test_block', '3'); + const events = [ + new Blockly.Events.BubbleOpen(block1, true, 'comment'), + new Blockly.Events.Click(block1), + new Blockly.Events.BubbleOpen(block2, true, 'mutator'), + new Blockly.Events.Click(block2), + new Blockly.Events.BubbleOpen(block3, true, 'warning'), + new Blockly.Events.Click(block3), + ]; + const filteredEvents = eventUtils.filter(events, true); + // click event merged into corresponding *Open event + chai.assert.equal(filteredEvents.length, 3); + chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BubbleOpen); + chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BubbleOpen); + chai.assert.isTrue(filteredEvents[2] instanceof Blockly.Events.BubbleOpen); + chai.assert.equal(filteredEvents[0].bubbleType, 'comment'); + chai.assert.equal(filteredEvents[1].bubbleType, 'mutator'); + chai.assert.equal(filteredEvents[2].bubbleType, 'warning'); + }); + + test('Colliding events not dropped', function() { + // Tests that events that collide on a (event, block, workspace) tuple + // but cannot be merged do not get dropped during filtering. + const block = this.workspace.newBlock('field_variable_test_block', '1'); + const events = [ + new Blockly.Events.Click(block), + new Blockly.Events.Ui(block, 'stackclick', undefined, undefined), + ]; + const filteredEvents = eventUtils.filter(events, true); + // click and stackclick should both exist + chai.assert.equal(filteredEvents.length, 2); + chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.Click); + chai.assert.equal(filteredEvents[1].element, 'stackclick'); + }); + + test('Merging null operations dropped', function() { + // Mutator composition could result in move events for blocks + // connected to the mutated block that were null operations. This + // leads to events in the undo/redo queue that do nothing, requiring + // an extra undo/redo to proceed to the next event. This test ensures + // that two move events that do get merged (disconnecting and + // reconnecting a block in response to a mutator change) are filtered + // from the queue. + const block = this.workspace.newBlock('field_variable_test_block', '1'); + block.setParent(null); + const events = []; + addMoveEventParent(events, block, null); + addMoveEventParent(events, block, null); + const filteredEvents = eventUtils.filter(events, true); + // The two events should be merged, but because nothing has changed + // they will be filtered out. + chai.assert.equal(filteredEvents.length, 0); + }); + + test('Move events different blocks not merged', function() { + // Move events should only merge if they refer to the same block and are + // consecutive. + // See github.com/google/blockly/pull/1892 for a worked example showing + // how merging non-consecutive events can fail when replacing a shadow + // block. + const block1 = createSimpleTestBlock(this.workspace); + const block2 = createSimpleTestBlock(this.workspace); + + const events = []; + addMoveEvent(events, block1, 1, 1); + addMoveEvent(events, block2, 1, 1); + events.push(new Blockly.Events.BlockDelete(block2)); + addMoveEvent(events, block1, 2, 2); + + const filteredEvents = eventUtils.filter(events, true); + // Nothing should have merged. + chai.assert.equal(filteredEvents.length, 4); + // test that the order hasn't changed + chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockMove); + chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); + chai.assert.isTrue(filteredEvents[2] instanceof Blockly.Events.BlockDelete); + chai.assert.isTrue(filteredEvents[3] instanceof Blockly.Events.BlockMove); + }); + }); + + suite('Firing', function() { + setup(function() { + this.changeListenerSpy = createFireChangeListenerSpy(this.workspace); + }); + + test('Block dispose triggers Delete', function() { + let workspaceSvg; + try { + const toolbox = document.getElementById('toolbox-categories'); + workspaceSvg = Blockly.inject('blocklyDiv', {toolbox: toolbox}); + const TEST_BLOCK_ID = 'test_block_id'; + const genUidStub = createGenUidStubWithReturns( + [TEST_BLOCK_ID, 'test_group_id']); + + const block = workspaceSvg.newBlock(''); + block.initSvg(); + block.setCommentText('test comment'); + const expectedOldXml = Blockly.Xml.blockToDomWithXY(block); + const expectedId = block.id; + + // Run all queued events. + this.clock.runAll(); + + this.eventsFireSpy.resetHistory(); + const changeListenerSpy = createFireChangeListenerSpy(workspaceSvg); + block.dispose(); + + // Run all queued events. + this.clock.runAll(); + + // Expect two calls to genUid: one to set the block's ID, and one for + // the event group's ID for creating block. + sinon.assert.calledTwice(genUidStub); + + assertNthCallEventArgEquals( + this.eventsFireSpy, 0, Blockly.Events.BlockDelete, + {oldXml: expectedOldXml, group: ''}, + workspaceSvg.id, expectedId); + assertNthCallEventArgEquals( + changeListenerSpy, 0, Blockly.Events.BlockDelete, + {oldXml: expectedOldXml, group: ''}, + workspaceSvg.id, expectedId); + + // Expect the workspace to not have a variable with ID 'test_block_id'. + chai.assert.isNull(this.workspace.getVariableById(TEST_BLOCK_ID)); + } finally { + workspaceTeardown.call(this, workspaceSvg); + } + }); + + test('New block new var', function() { + const TEST_BLOCK_ID = 'test_block_id'; + const TEST_GROUP_ID = 'test_group_id'; + const TEST_VAR_ID = 'test_var_id'; + const genUidStub = createGenUidStubWithReturns( + [TEST_BLOCK_ID, TEST_GROUP_ID, TEST_VAR_ID]); + const _ = this.workspace.newBlock('field_variable_test_block'); + const TEST_VAR_NAME = 'item'; // As defined in block's json. + + // Run all queued events. + this.clock.runAll(); + + // Expect three calls to genUid: one to set the block's ID, one for the event + // group's ID, and one for the variable's ID. + sinon.assert.calledThrice(genUidStub); + + // Expect two events fired: varCreate and block create. + sinon.assert.calledTwice(this.eventsFireSpy); + // Expect both events to trigger change listener. + sinon.assert.calledTwice(this.changeListenerSpy); + // Both events should be on undo stack + chai.assert.equal(this.workspace.undoStack_.length, 2, + 'Undo stack length'); + + assertNthCallEventArgEquals( + this.changeListenerSpy, 0, Blockly.Events.VarCreate, + {group: TEST_GROUP_ID, varId: TEST_VAR_ID, varName: TEST_VAR_NAME}, + this.workspace.id, undefined); + assertNthCallEventArgEquals( + this.changeListenerSpy, 1, Blockly.Events.BlockCreate, + {group: TEST_GROUP_ID}, this.workspace.id, TEST_BLOCK_ID); + + // Expect the workspace to have a variable with ID 'test_var_id'. + chai.assert.isNotNull(this.workspace.getVariableById(TEST_VAR_ID)); + }); + + test('New block new var xml', function() { + const TEST_GROUP_ID = 'test_group_id'; + const genUidStub = createGenUidStubWithReturns(TEST_GROUP_ID); + const dom = Blockly.Xml.textToDom( + '' + + ' ' + + ' name1' + + ' ' + + ''); + Blockly.Xml.domToWorkspace(dom, this.workspace); + const TEST_BLOCK_ID = 'test_block_id'; + const TEST_VAR_ID = 'test_var_id'; + const TEST_VAR_NAME = 'name1'; + + // Run all queued events. + this.clock.runAll(); + + // Expect one call to genUid: for the event group's id + sinon.assert.calledOnce(genUidStub); + + // When block is created using domToWorkspace, 5 events are fired: + // 1. varCreate (events disabled) + // 2. varCreate + // 3. block create + // 4. move (no-op, is filtered out) + // 5. finished loading + sinon.assert.callCount(this.eventsFireSpy, 5); + // The first varCreate and move event should have been ignored. + sinon.assert.callCount(this.changeListenerSpy, 3); + // Expect two events on undo stack: varCreate and block create. + chai.assert.equal(this.workspace.undoStack_.length, 2, + 'Undo stack length'); + + assertNthCallEventArgEquals( + this.changeListenerSpy, 0, Blockly.Events.VarCreate, + {group: TEST_GROUP_ID, varId: TEST_VAR_ID, varName: TEST_VAR_NAME}, + this.workspace.id, undefined); + assertNthCallEventArgEquals( + this.changeListenerSpy, 1, Blockly.Events.BlockCreate, + {group: TEST_GROUP_ID}, this.workspace.id, TEST_BLOCK_ID); + + // Finished loading event should not be part of event group. + assertNthCallEventArgEquals( + this.changeListenerSpy, 2, Blockly.Events.FinishedLoading, + {group: ''}, this.workspace.id, undefined); + + // Expect the workspace to have a variable with ID 'test_var_id'. + chai.assert.isNotNull(this.workspace.getVariableById(TEST_VAR_ID)); + }); + }); + suite('Disable orphans', function() { + setup(function() { + // disableOrphans needs a WorkspaceSVG + const toolbox = document.getElementById('toolbox-categories'); + this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + test('Created orphan block is disabled', function() { + this.workspace.addChangeListener(eventUtils.disableOrphans); + const block = this.workspace.newBlock('controls_for'); + block.initSvg(); + block.render(); + + // Fire all events + this.clock.runAll(); + + chai.assert.isFalse(block.isEnabled(), + 'Expected orphan block to be disabled after creation'); + }); + test('Created procedure block is enabled', function() { + this.workspace.addChangeListener(eventUtils.disableOrphans); + + // Procedure block is never an orphan + const functionBlock = this.workspace.newBlock('procedures_defnoreturn'); + functionBlock.initSvg(); + functionBlock.render(); + + // Fire all events + this.clock.runAll(); + + chai.assert.isTrue(functionBlock.isEnabled(), + 'Expected top-level procedure block to be enabled'); + }); + test('Moving a block to top-level disables it', function() { + this.workspace.addChangeListener(eventUtils.disableOrphans); + const functionBlock = this.workspace.newBlock('procedures_defnoreturn'); + functionBlock.initSvg(); + functionBlock.render(); + + const block = this.workspace.newBlock('controls_for'); + block.initSvg(); + block.render(); + + // Connect the block to the function block input stack + functionBlock.inputList[1].connection.connect(block.previousConnection); + + // Disconnect it again + block.unplug(false); + + // Fire all events + this.clock.runAll(); + + chai.assert.isFalse(block.isEnabled(), + 'Expected disconnected block to be disabled'); + }); + test('Giving block a parent enables it', function() { + this.workspace.addChangeListener(eventUtils.disableOrphans); + const functionBlock = this.workspace.newBlock('procedures_defnoreturn'); + functionBlock.initSvg(); + functionBlock.render(); + + const block = this.workspace.newBlock('controls_for'); + block.initSvg(); + block.render(); + + // Connect the block to the function block input stack + functionBlock.inputList[1].connection.connect(block.previousConnection); + + // Fire all events + this.clock.runAll(); + + chai.assert.isTrue(block.isEnabled(), + 'Expected block to be enabled after connecting to parent'); + }); + test('disableOrphans events are not undoable', function() { + this.workspace.addChangeListener(eventUtils.disableOrphans); + const functionBlock = this.workspace.newBlock('procedures_defnoreturn'); + functionBlock.initSvg(); + functionBlock.render(); + + const block = this.workspace.newBlock('controls_for'); + block.initSvg(); + block.render(); + + // Connect the block to the function block input stack + functionBlock.inputList[1].connection.connect(block.previousConnection); + + // Disconnect it again + block.unplug(false); + + // Fire all events + this.clock.runAll(); + + const disabledEvents = this.workspace.getUndoStack().filter(function(e) { + return e.element === 'disabled'; + }); + chai.assert.isEmpty(disabledEvents, + 'Undo stack should not contain any disabled events'); + }); + }); +}); diff --git a/tests/mocha/extensions_test.js b/tests/mocha/extensions_test.js index 6c2873ff1f5..41cb97b6dbe 100644 --- a/tests/mocha/extensions_test.js +++ b/tests/mocha/extensions_test.js @@ -1,572 +1,572 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.extensions'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Extensions', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - this.extensionsCleanup_ = []; - }); - teardown(function() { - sharedTestTeardown.call(this); - for (let i = 0; i < this.extensionsCleanup_.length; i++) { - const extension = this.extensionsCleanup_[i]; - delete Blockly.Extensions.TEST_ONLY.allExtensions[extension]; - } - }); - - test('Definition before and after block type', function() { - this.extensionsCleanup_.push('extensions_test_before'); - this.extensionsCleanup_.push('extensions_test_after'); - - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test_before']); - const beforeCallback = sinon.spy(); - // Extension defined before the block type is defined. - Blockly.Extensions.register('extensions_test_before', beforeCallback); - - Blockly.defineBlocksWithJsonArray([{ - "type": "extension_test_block", - "message0": "extension_test_block", - "extensions": ["extensions_test_before", "extensions_test_after"], - }]); - - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test_after']); - const afterCallback = sinon.spy(); - // Extension defined after the block type (but before instantiation). - Blockly.Extensions.register('extensions_test_after', afterCallback); - - chai.assert.typeOf( - Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test_before'], - 'function'); - chai.assert.typeOf( - Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test_after'], - 'function'); - sinon.assert.notCalled(beforeCallback); - sinon.assert.notCalled(afterCallback); - - const block = new Blockly.Block(this.workspace, 'extension_test_block'); - - sinon.assert.calledOnce(beforeCallback); - sinon.assert.calledOnce(afterCallback); - sinon.assert.calledOn(beforeCallback, block); - sinon.assert.calledOn(afterCallback, block); - }); - - test('Parent tooltip when inline', function() { - const defaultTooltip = "defaultTooltip"; - const parentTooltip = "parentTooltip"; - Blockly.defineBlocksWithJsonArray([ - { - "type": "test_parent_tooltip_when_inline", - "message0": "test_parent_tooltip_when_inline", - "output": true, - "tooltip": defaultTooltip, - "extensions": ["parent_tooltip_when_inline"], - }, - { - "type": "test_parent", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - }, - ], - "tooltip": parentTooltip, - }, - ]); - - const block = - new Blockly.Block(this.workspace, 'test_parent_tooltip_when_inline'); - - // Tooltip is dynamic after extension initialization. - chai.assert.typeOf(block.tooltip, 'function'); - chai.assert.equal(block.tooltip(), defaultTooltip); - - // Tooltip is normal before connected to parent. - const parent = new Blockly.Block(this.workspace, 'test_parent'); - chai.assert.equal(parent.tooltip, parentTooltip); - chai.assert.notExists(parent.inputsInline); - - // Tooltip is normal when parent is not inline. - parent.getInput('INPUT').connection.connect(block.outputConnection); - chai.assert.equal(block.getParent(), parent); - chai.assert.equal(block.tooltip(), defaultTooltip); - - // Tooltip is parent's when parent is inline. - parent.setInputsInline(true); - chai.assert.equal(block.tooltip(), parentTooltip); - - // Tooltip revert when disconnected. - parent.getInput('INPUT').connection.disconnect(); - chai.assert.notExists(block.getParent()); - chai.assert.equal(block.tooltip(), defaultTooltip); - }); - - suite('Mixin', function() { - test('Basic', function() { - this.extensionsCleanup_.push('mixin_test'); - - const testMixin = { - field: 'FIELD', - method: function() { - console.log('TEXT_MIXIN method()'); - }, - }; - - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['mixin_test']); - // Extension defined before the block type is defined. - Blockly.Extensions.registerMixin('mixin_test', testMixin); - - chai.assert.typeOf( - Blockly.Extensions.TEST_ONLY.allExtensions['mixin_test'], 'function'); - - - Blockly.defineBlocksWithJsonArray([{ - "type": "test_block_mixin", - "message0": "test_block_mixin", - "extensions": ["mixin_test"], - }]); - - const block = new Blockly.Block(this.workspace, 'test_block_mixin'); - - chai.assert.equal(testMixin.field, block.field); - chai.assert.equal(testMixin.method, block.method); - }); - - suite('Mutator', function() { - test('Basic', function() { - this.extensionsCleanup_.push('mutator_test'); - - Blockly.defineBlocksWithJsonArray([{ - "type": "mutator_test_block", - "message0": "mutator_test_block", - "mutator": "mutator_test", - }]); - - // Events code calls mutationToDom and expects it to give back a meaningful - // value. - Blockly.Events.disable(); - Blockly.Extensions.registerMutator('mutator_test', - { - domToMutation: function() { - return 'domToMutationFn'; - }, - mutationToDom: function() { - return 'mutationToDomFn'; - }, - compose: function() { - return 'composeFn'; - }, - decompose: function() { - return 'decomposeFn'; - }, - }); - - const block = new Blockly.Block(this.workspace, 'mutator_test_block'); - - // Make sure all of the functions were installed correctly. - chai.assert.equal(block.domToMutation(), 'domToMutationFn'); - chai.assert.equal(block.mutationToDom(), 'mutationToDomFn'); - chai.assert.equal(block.compose(), 'composeFn'); - chai.assert.equal(block.decompose(), 'decomposeFn'); - }); - - test('With helper function', function() { - this.extensionsCleanup_.push('extensions_test'); - - Blockly.defineBlocksWithJsonArray([{ - "type": "mutator_test_block", - "message0": "mutator_test_block", - "mutator": ["extensions_test"], - }]); - - // Events code calls mutationToDom and expects it to give back a - // meaningful value. - Blockly.Events.disable(); - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test']); - const helperFunctionSpy = sinon.spy(); - Blockly.Extensions.registerMutator('extensions_test', - { - domToMutation: function() { - return 'domToMutationFn'; - }, - mutationToDom: function() { - return 'mutationToDomFn'; - }, - }, - helperFunctionSpy - ); - - const _ = new Blockly.Block(this.workspace, 'mutator_test_block'); - - sinon.assert.calledOnce(helperFunctionSpy); - }); - - test('No dialog', function() { - this.extensionsCleanup_.push('mutator_test'); - - Blockly.defineBlocksWithJsonArray([{ - "type": "mutator_test_block", - "message0": "mutator_test_block", - "mutator": "mutator_test", - }]); - - // Events code calls mutationToDom and expects it to give back a - // meaningful value. - Blockly.Events.disable(); - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); - Blockly.Extensions.registerMutator('mutator_test', - { - domToMutation: function() { - return 'domToMutationFn'; - }, - mutationToDom: function() { - return 'mutationToDomFn'; - }, - }); - - const block = new Blockly.Block(this.workspace, 'mutator_test_block'); - - // Make sure all of the functions were installed correctly. - chai.assert.equal(block.domToMutation(), 'domToMutationFn'); - chai.assert.equal(block.mutationToDom(), 'mutationToDomFn'); - chai.assert.isUndefined(block['compose']); - chai.assert.isUndefined(block['decompose']); - }); - }); - }); - - suite('Error cases', function() { - test('Missing extension', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "missing_extension_block", - "message0": "missing_extension_block", - "extensions": ["missing_extension"], - }]); - - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['missing_extension']); - const workspace = this.workspace; - chai.assert.throws(function() { - const _ = new Blockly.Block(workspace, 'missing_extension_block'); - }); - }); - - test('Mixin overwrites local value', function() { - this.extensionsCleanup_.push('mixin_bad_inputList'); - - const TEST_MIXIN_BAD_INPUTLIST = { - inputList: 'bad inputList', // Defined in constructor - }; - - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['mixin_bad_inputList']); - // Extension defined before the block type is defined. - Blockly.Extensions.registerMixin( - 'mixin_bad_inputList', TEST_MIXIN_BAD_INPUTLIST); - chai.assert.typeOf( - Blockly.Extensions.TEST_ONLY.allExtensions['mixin_bad_inputList'], - 'function'); - - Blockly.defineBlocksWithJsonArray([{ - "type": "test_block_bad_inputList", - "message0": "test_block_bad_inputList", - "extensions": ["mixin_bad_inputList"], - }]); - - const workspace = this.workspace; - chai.assert.throws(function() { - const _ = new Blockly.Block(workspace, 'test_block_bad_inputList'); - }, /inputList/); - }); - - test('Mixin overwrites prototype', function() { - this.extensionsCleanup_.push('mixin_bad_colour_'); - - const TEST_MIXIN_BAD_COLOUR = { - colour_: 'bad colour_', // Defined on prototype - }; - - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['mixin_bad_colour_']); - // Extension defined before the block type is defined. - Blockly.Extensions.registerMixin( - 'mixin_bad_colour_', TEST_MIXIN_BAD_COLOUR); - chai.assert.typeOf( - Blockly.Extensions.TEST_ONLY.allExtensions['mixin_bad_colour_'], - 'function'); - - Blockly.defineBlocksWithJsonArray([{ - "type": "test_block_bad_colour", - "message0": "test_block_bad_colour", - "extensions": ["mixin_bad_colour_"], - }]); - - const workspace = this.workspace; - chai.assert.throws(function() { - const _ = new Blockly.Block(workspace, 'test_block_bad_colour'); - }, /colour_/); - }); - - test('Use mutator as extension', function() { - this.extensionsCleanup_.push('mutator_test'); - - Blockly.defineBlocksWithJsonArray([{ - "type": "mutator_test_block", - "message0": "mutator_test_block", - "extensions": ["mutator_test"], - }]); - - // Events code calls mutationToDom and expects it to give back a - // meaningful value. - Blockly.Events.disable(); - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); - Blockly.Extensions.registerMutator('mutator_test', - { - domToMutation: function() { - return 'domToMutationFn'; - }, - mutationToDom: function() { - return 'mutationToDomFn'; - }, - }); - - const workspace = this.workspace; - chai.assert.throws(function() { - const _ = new Blockly.Block(workspace, 'mutator_test_block'); - }); - // Should have failed on apply, not on register. - chai.assert.isNotNull( - Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); - }); - - test('Use mutator mixin as extension', function() { - this.extensionsCleanup_.push('mutator_test'); - - Blockly.defineBlocksWithJsonArray([{ - "type": "mutator_test_block", - "message0": "mutator_test_block", - "extensions": ["mutator_test"], - }]); - - // Events code calls mutationToDom and expects it to give back a - // meaningful value. - Blockly.Events.disable(); - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); - Blockly.Extensions.registerMixin('mutator_test', - { - domToMutation: function() { - return 'domToMutationFn'; - }, - mutationToDom: function() { - return 'mutationToDomFn'; - }, - }); - - const workspace = this.workspace; - chai.assert.throws(function() { - const _ = new Blockly.Block(workspace, 'mutator_test_block'); - }); - // Should have failed on apply, not on register. - chai.assert.isNotNull( - Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); - }); - - test('Use extension as mutator', function() { - this.extensionsCleanup_.push('extensions_test'); - - Blockly.defineBlocksWithJsonArray([{ - "type": "mutator_test_block", - "message0": "mutator_test_block", - "mutator": ["extensions_test"], - }]); - - // Events code calls mutationToDom and expects it to give back a - // meaningful value. - Blockly.Events.disable(); - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test']); - Blockly.Extensions.register('extensions_test', function() { - return 'extensions_test_fn'; - }); - - const workspace = this.workspace; - chai.assert.throws(function() { - const _ = new Blockly.Block(workspace, 'mutator_test_block'); - }); - // Should have failed on apply, not on register. - chai.assert.isNotNull( - Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test']); - }); - - suite('register', function() { - test('Just a string', function() { - this.extensionsCleanup_.push('extension_just_a_string'); - chai.assert.isUndefined(Blockly.Extensions.TEST_ONLY - .allExtensions['extension_just_a_string']); - chai.assert.throws(function() { - Blockly.Extensions.register('extension_just_a_string', null); - }); - }); - - test('Null', function() { - this.extensionsCleanup_.push('extension_is_null'); - chai.assert.isUndefined( - Blockly.Extensions.TEST_ONLY.allExtensions['extension_is_null']); - chai.assert.throws(function() { - Blockly.Extensions.register('extension_is_null', null); - }); - }); - - test('Undefined', function() { - this.extensionsCleanup_.push('extension_is_undefined'); - chai.assert.isUndefined(Blockly.Extensions.TEST_ONLY - .allExtensions['extension_is_undefined']); - chai.assert.throws(function() { - Blockly.Extensions.register('extension_is_undefined', null); - }); - }); - }); - - suite('registerMutator', function() { - test('No domToMutation', function() { - this.extensionsCleanup_.push('mutator_test'); - chai.assert.throws(function() { - Blockly.Extensions.registerMutator('mutator_test', - { - mutationToDom: function() { - return 'mutationToDomFn'; - }, - compose: function() { - return 'composeFn'; - }, - decompose: function() { - return 'decomposeFn'; - }, - }); - }, /domToMutation/); - }); - - test('No mutationToDom', function() { - this.extensionsCleanup_.push('mutator_test'); - chai.assert.throws(function() { - Blockly.Extensions.registerMutator('mutator_test', - { - domToMutation: function() { - return 'domToMutationFn'; - }, - compose: function() { - return 'composeFn'; - }, - decompose: function() { - return 'decomposeFn'; - }, - }); - }, /mutationToDom/); - }); - - test('No saveExtraState', function() { - this.extensionsCleanup_.push('mutator_test'); - chai.assert.throws(function() { - Blockly.Extensions.registerMutator('mutator_test', - { - loadExtraState: function() { - return 'loadExtraState'; - }, - compose: function() { - return 'composeFn'; - }, - decompose: function() { - return 'decomposeFn'; - }, - }); - }, /saveExtraState/); - }); - - test('No loadExtraState', function() { - this.extensionsCleanup_.push('mutator_test'); - chai.assert.throws(function() { - Blockly.Extensions.registerMutator('mutator_test', - { - saveExtraState: function() { - return 'saveExtraState'; - }, - compose: function() { - return 'composeFn'; - }, - decompose: function() { - return 'decomposeFn'; - }, - }); - }, /loadExtraState/); - }); - - test('No serialization hooks', function() { - this.extensionsCleanup_.push('mutator_test'); - chai.assert.throws(function() { - Blockly.Extensions.registerMutator('mutator_test', - { - compose: function() { - return 'composeFn'; - }, - decompose: function() { - return 'decomposeFn'; - }, - }); - }, 'Mutations must contain either XML hooks, or JSON hooks, or both'); - }); - - test('Has decompose but no compose', function() { - this.extensionsCleanup_.push('mutator_test'); - chai.assert.throws(function() { - Blockly.Extensions.registerMutator('mutator_test', - { - domToMutation: function() { - return 'domToMutationFn'; - }, - mutationToDom: function() { - return 'mutationToDomFn'; - }, - decompose: function() { - return 'decomposeFn'; - }, - }); - }, /compose/); - }); - - test('Has compose but no decompose', function() { - this.extensionsCleanup_.push('mutator_test'); - chai.assert.throws(function() { - Blockly.Extensions.registerMutator('mutator_test', - { - domToMutation: function() { - return 'domToMutationFn'; - }, - mutationToDom: function() { - return 'mutationToDomFn'; - }, - compose: function() { - return 'composeFn'; - }, - }); - }, /decompose/); - }); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.extensions'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Extensions', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + this.extensionsCleanup_ = []; + }); + teardown(function() { + sharedTestTeardown.call(this); + for (let i = 0; i < this.extensionsCleanup_.length; i++) { + const extension = this.extensionsCleanup_[i]; + delete Blockly.Extensions.TEST_ONLY.allExtensions[extension]; + } + }); + + test('Definition before and after block type', function() { + this.extensionsCleanup_.push('extensions_test_before'); + this.extensionsCleanup_.push('extensions_test_after'); + + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test_before']); + const beforeCallback = sinon.spy(); + // Extension defined before the block type is defined. + Blockly.Extensions.register('extensions_test_before', beforeCallback); + + Blockly.defineBlocksWithJsonArray([{ + "type": "extension_test_block", + "message0": "extension_test_block", + "extensions": ["extensions_test_before", "extensions_test_after"], + }]); + + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test_after']); + const afterCallback = sinon.spy(); + // Extension defined after the block type (but before instantiation). + Blockly.Extensions.register('extensions_test_after', afterCallback); + + chai.assert.typeOf( + Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test_before'], + 'function'); + chai.assert.typeOf( + Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test_after'], + 'function'); + sinon.assert.notCalled(beforeCallback); + sinon.assert.notCalled(afterCallback); + + const block = new Blockly.Block(this.workspace, 'extension_test_block'); + + sinon.assert.calledOnce(beforeCallback); + sinon.assert.calledOnce(afterCallback); + sinon.assert.calledOn(beforeCallback, block); + sinon.assert.calledOn(afterCallback, block); + }); + + test('Parent tooltip when inline', function() { + const defaultTooltip = "defaultTooltip"; + const parentTooltip = "parentTooltip"; + Blockly.defineBlocksWithJsonArray([ + { + "type": "test_parent_tooltip_when_inline", + "message0": "test_parent_tooltip_when_inline", + "output": true, + "tooltip": defaultTooltip, + "extensions": ["parent_tooltip_when_inline"], + }, + { + "type": "test_parent", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + }, + ], + "tooltip": parentTooltip, + }, + ]); + + const block = + new Blockly.Block(this.workspace, 'test_parent_tooltip_when_inline'); + + // Tooltip is dynamic after extension initialization. + chai.assert.typeOf(block.tooltip, 'function'); + chai.assert.equal(block.tooltip(), defaultTooltip); + + // Tooltip is normal before connected to parent. + const parent = new Blockly.Block(this.workspace, 'test_parent'); + chai.assert.equal(parent.tooltip, parentTooltip); + chai.assert.notExists(parent.inputsInline); + + // Tooltip is normal when parent is not inline. + parent.getInput('INPUT').connection.connect(block.outputConnection); + chai.assert.equal(block.getParent(), parent); + chai.assert.equal(block.tooltip(), defaultTooltip); + + // Tooltip is parent's when parent is inline. + parent.setInputsInline(true); + chai.assert.equal(block.tooltip(), parentTooltip); + + // Tooltip revert when disconnected. + parent.getInput('INPUT').connection.disconnect(); + chai.assert.notExists(block.getParent()); + chai.assert.equal(block.tooltip(), defaultTooltip); + }); + + suite('Mixin', function() { + test('Basic', function() { + this.extensionsCleanup_.push('mixin_test'); + + const testMixin = { + field: 'FIELD', + method: function() { + console.log('TEXT_MIXIN method()'); + }, + }; + + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['mixin_test']); + // Extension defined before the block type is defined. + Blockly.Extensions.registerMixin('mixin_test', testMixin); + + chai.assert.typeOf( + Blockly.Extensions.TEST_ONLY.allExtensions['mixin_test'], 'function'); + + + Blockly.defineBlocksWithJsonArray([{ + "type": "test_block_mixin", + "message0": "test_block_mixin", + "extensions": ["mixin_test"], + }]); + + const block = new Blockly.Block(this.workspace, 'test_block_mixin'); + + chai.assert.equal(testMixin.field, block.field); + chai.assert.equal(testMixin.method, block.method); + }); + + suite('Mutator', function() { + test('Basic', function() { + this.extensionsCleanup_.push('mutator_test'); + + Blockly.defineBlocksWithJsonArray([{ + "type": "mutator_test_block", + "message0": "mutator_test_block", + "mutator": "mutator_test", + }]); + + // Events code calls mutationToDom and expects it to give back a meaningful + // value. + Blockly.Events.disable(); + Blockly.Extensions.registerMutator('mutator_test', + { + domToMutation: function() { + return 'domToMutationFn'; + }, + mutationToDom: function() { + return 'mutationToDomFn'; + }, + compose: function() { + return 'composeFn'; + }, + decompose: function() { + return 'decomposeFn'; + }, + }); + + const block = new Blockly.Block(this.workspace, 'mutator_test_block'); + + // Make sure all of the functions were installed correctly. + chai.assert.equal(block.domToMutation(), 'domToMutationFn'); + chai.assert.equal(block.mutationToDom(), 'mutationToDomFn'); + chai.assert.equal(block.compose(), 'composeFn'); + chai.assert.equal(block.decompose(), 'decomposeFn'); + }); + + test('With helper function', function() { + this.extensionsCleanup_.push('extensions_test'); + + Blockly.defineBlocksWithJsonArray([{ + "type": "mutator_test_block", + "message0": "mutator_test_block", + "mutator": ["extensions_test"], + }]); + + // Events code calls mutationToDom and expects it to give back a + // meaningful value. + Blockly.Events.disable(); + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test']); + const helperFunctionSpy = sinon.spy(); + Blockly.Extensions.registerMutator('extensions_test', + { + domToMutation: function() { + return 'domToMutationFn'; + }, + mutationToDom: function() { + return 'mutationToDomFn'; + }, + }, + helperFunctionSpy + ); + + const _ = new Blockly.Block(this.workspace, 'mutator_test_block'); + + sinon.assert.calledOnce(helperFunctionSpy); + }); + + test('No dialog', function() { + this.extensionsCleanup_.push('mutator_test'); + + Blockly.defineBlocksWithJsonArray([{ + "type": "mutator_test_block", + "message0": "mutator_test_block", + "mutator": "mutator_test", + }]); + + // Events code calls mutationToDom and expects it to give back a + // meaningful value. + Blockly.Events.disable(); + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); + Blockly.Extensions.registerMutator('mutator_test', + { + domToMutation: function() { + return 'domToMutationFn'; + }, + mutationToDom: function() { + return 'mutationToDomFn'; + }, + }); + + const block = new Blockly.Block(this.workspace, 'mutator_test_block'); + + // Make sure all of the functions were installed correctly. + chai.assert.equal(block.domToMutation(), 'domToMutationFn'); + chai.assert.equal(block.mutationToDom(), 'mutationToDomFn'); + chai.assert.isUndefined(block['compose']); + chai.assert.isUndefined(block['decompose']); + }); + }); + }); + + suite('Error cases', function() { + test('Missing extension', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "missing_extension_block", + "message0": "missing_extension_block", + "extensions": ["missing_extension"], + }]); + + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['missing_extension']); + const workspace = this.workspace; + chai.assert.throws(function() { + const _ = new Blockly.Block(workspace, 'missing_extension_block'); + }); + }); + + test('Mixin overwrites local value', function() { + this.extensionsCleanup_.push('mixin_bad_inputList'); + + const TEST_MIXIN_BAD_INPUTLIST = { + inputList: 'bad inputList', // Defined in constructor + }; + + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['mixin_bad_inputList']); + // Extension defined before the block type is defined. + Blockly.Extensions.registerMixin( + 'mixin_bad_inputList', TEST_MIXIN_BAD_INPUTLIST); + chai.assert.typeOf( + Blockly.Extensions.TEST_ONLY.allExtensions['mixin_bad_inputList'], + 'function'); + + Blockly.defineBlocksWithJsonArray([{ + "type": "test_block_bad_inputList", + "message0": "test_block_bad_inputList", + "extensions": ["mixin_bad_inputList"], + }]); + + const workspace = this.workspace; + chai.assert.throws(function() { + const _ = new Blockly.Block(workspace, 'test_block_bad_inputList'); + }, /inputList/); + }); + + test('Mixin overwrites prototype', function() { + this.extensionsCleanup_.push('mixin_bad_colour_'); + + const TEST_MIXIN_BAD_COLOUR = { + colour_: 'bad colour_', // Defined on prototype + }; + + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['mixin_bad_colour_']); + // Extension defined before the block type is defined. + Blockly.Extensions.registerMixin( + 'mixin_bad_colour_', TEST_MIXIN_BAD_COLOUR); + chai.assert.typeOf( + Blockly.Extensions.TEST_ONLY.allExtensions['mixin_bad_colour_'], + 'function'); + + Blockly.defineBlocksWithJsonArray([{ + "type": "test_block_bad_colour", + "message0": "test_block_bad_colour", + "extensions": ["mixin_bad_colour_"], + }]); + + const workspace = this.workspace; + chai.assert.throws(function() { + const _ = new Blockly.Block(workspace, 'test_block_bad_colour'); + }, /colour_/); + }); + + test('Use mutator as extension', function() { + this.extensionsCleanup_.push('mutator_test'); + + Blockly.defineBlocksWithJsonArray([{ + "type": "mutator_test_block", + "message0": "mutator_test_block", + "extensions": ["mutator_test"], + }]); + + // Events code calls mutationToDom and expects it to give back a + // meaningful value. + Blockly.Events.disable(); + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); + Blockly.Extensions.registerMutator('mutator_test', + { + domToMutation: function() { + return 'domToMutationFn'; + }, + mutationToDom: function() { + return 'mutationToDomFn'; + }, + }); + + const workspace = this.workspace; + chai.assert.throws(function() { + const _ = new Blockly.Block(workspace, 'mutator_test_block'); + }); + // Should have failed on apply, not on register. + chai.assert.isNotNull( + Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); + }); + + test('Use mutator mixin as extension', function() { + this.extensionsCleanup_.push('mutator_test'); + + Blockly.defineBlocksWithJsonArray([{ + "type": "mutator_test_block", + "message0": "mutator_test_block", + "extensions": ["mutator_test"], + }]); + + // Events code calls mutationToDom and expects it to give back a + // meaningful value. + Blockly.Events.disable(); + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); + Blockly.Extensions.registerMixin('mutator_test', + { + domToMutation: function() { + return 'domToMutationFn'; + }, + mutationToDom: function() { + return 'mutationToDomFn'; + }, + }); + + const workspace = this.workspace; + chai.assert.throws(function() { + const _ = new Blockly.Block(workspace, 'mutator_test_block'); + }); + // Should have failed on apply, not on register. + chai.assert.isNotNull( + Blockly.Extensions.TEST_ONLY.allExtensions['mutator_test']); + }); + + test('Use extension as mutator', function() { + this.extensionsCleanup_.push('extensions_test'); + + Blockly.defineBlocksWithJsonArray([{ + "type": "mutator_test_block", + "message0": "mutator_test_block", + "mutator": ["extensions_test"], + }]); + + // Events code calls mutationToDom and expects it to give back a + // meaningful value. + Blockly.Events.disable(); + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test']); + Blockly.Extensions.register('extensions_test', function() { + return 'extensions_test_fn'; + }); + + const workspace = this.workspace; + chai.assert.throws(function() { + const _ = new Blockly.Block(workspace, 'mutator_test_block'); + }); + // Should have failed on apply, not on register. + chai.assert.isNotNull( + Blockly.Extensions.TEST_ONLY.allExtensions['extensions_test']); + }); + + suite('register', function() { + test('Just a string', function() { + this.extensionsCleanup_.push('extension_just_a_string'); + chai.assert.isUndefined(Blockly.Extensions.TEST_ONLY + .allExtensions['extension_just_a_string']); + chai.assert.throws(function() { + Blockly.Extensions.register('extension_just_a_string', null); + }); + }); + + test('Null', function() { + this.extensionsCleanup_.push('extension_is_null'); + chai.assert.isUndefined( + Blockly.Extensions.TEST_ONLY.allExtensions['extension_is_null']); + chai.assert.throws(function() { + Blockly.Extensions.register('extension_is_null', null); + }); + }); + + test('Undefined', function() { + this.extensionsCleanup_.push('extension_is_undefined'); + chai.assert.isUndefined(Blockly.Extensions.TEST_ONLY + .allExtensions['extension_is_undefined']); + chai.assert.throws(function() { + Blockly.Extensions.register('extension_is_undefined', null); + }); + }); + }); + + suite('registerMutator', function() { + test('No domToMutation', function() { + this.extensionsCleanup_.push('mutator_test'); + chai.assert.throws(function() { + Blockly.Extensions.registerMutator('mutator_test', + { + mutationToDom: function() { + return 'mutationToDomFn'; + }, + compose: function() { + return 'composeFn'; + }, + decompose: function() { + return 'decomposeFn'; + }, + }); + }, /domToMutation/); + }); + + test('No mutationToDom', function() { + this.extensionsCleanup_.push('mutator_test'); + chai.assert.throws(function() { + Blockly.Extensions.registerMutator('mutator_test', + { + domToMutation: function() { + return 'domToMutationFn'; + }, + compose: function() { + return 'composeFn'; + }, + decompose: function() { + return 'decomposeFn'; + }, + }); + }, /mutationToDom/); + }); + + test('No saveExtraState', function() { + this.extensionsCleanup_.push('mutator_test'); + chai.assert.throws(function() { + Blockly.Extensions.registerMutator('mutator_test', + { + loadExtraState: function() { + return 'loadExtraState'; + }, + compose: function() { + return 'composeFn'; + }, + decompose: function() { + return 'decomposeFn'; + }, + }); + }, /saveExtraState/); + }); + + test('No loadExtraState', function() { + this.extensionsCleanup_.push('mutator_test'); + chai.assert.throws(function() { + Blockly.Extensions.registerMutator('mutator_test', + { + saveExtraState: function() { + return 'saveExtraState'; + }, + compose: function() { + return 'composeFn'; + }, + decompose: function() { + return 'decomposeFn'; + }, + }); + }, /loadExtraState/); + }); + + test('No serialization hooks', function() { + this.extensionsCleanup_.push('mutator_test'); + chai.assert.throws(function() { + Blockly.Extensions.registerMutator('mutator_test', + { + compose: function() { + return 'composeFn'; + }, + decompose: function() { + return 'decomposeFn'; + }, + }); + }, 'Mutations must contain either XML hooks, or JSON hooks, or both'); + }); + + test('Has decompose but no compose', function() { + this.extensionsCleanup_.push('mutator_test'); + chai.assert.throws(function() { + Blockly.Extensions.registerMutator('mutator_test', + { + domToMutation: function() { + return 'domToMutationFn'; + }, + mutationToDom: function() { + return 'mutationToDomFn'; + }, + decompose: function() { + return 'decomposeFn'; + }, + }); + }, /compose/); + }); + + test('Has compose but no decompose', function() { + this.extensionsCleanup_.push('mutator_test'); + chai.assert.throws(function() { + Blockly.Extensions.registerMutator('mutator_test', + { + domToMutation: function() { + return 'domToMutationFn'; + }, + mutationToDom: function() { + return 'mutationToDomFn'; + }, + compose: function() { + return 'composeFn'; + }, + }); + }, /decompose/); + }); + }); + }); +}); diff --git a/tests/mocha/field_angle_test.js b/tests/mocha/field_angle_test.js index 1639eb206fd..6f124a07db7 100644 --- a/tests/mocha/field_angle_test.js +++ b/tests/mocha/field_angle_test.js @@ -1,351 +1,351 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldAngle'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Angle Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - {title: 'Undefined', value: undefined}, - {title: 'Null', value: null}, - {title: 'NaN', value: NaN}, - {title: 'Non-Parsable String', value: 'bad'}, - {title: 'Infinity', value: Infinity, expectedValue: Infinity}, - {title: 'Negative Infinity', value: -Infinity, expectedValue: -Infinity}, - {title: 'Infinity String', value: 'Infinity', expectedValue: Infinity}, - {title: 'Negative Infinity String', value: '-Infinity', - expectedValue: -Infinity}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - - const validValueTestCases = [ - {title: 'Integer', value: 1, expectedValue: 1}, - {title: 'Float', value: 1.5, expectedValue: 1.5}, - {title: 'Integer String', value: '1', expectedValue: 1}, - {title: 'Float String', value: '1.5', expectedValue: 1.5}, - {title: '> 360°', value: 362, expectedValue: 2}, - ]; - const addArgsAndJson = function(testCase) { - testCase.args = [testCase.value]; - testCase.json = {'angle': testCase.value}; - }; - invalidValueTestCases.forEach(addArgsAndJson); - validValueTestCases.forEach(addArgsAndJson); - - /** - * The expected default value for the field being tested. - * @type {*} - */ - const defaultFieldValue = 0; - /** - * Asserts that the field property values are set to default. - * @param {FieldTemplate} field The field to check. - */ - const assertFieldDefault = function(field) { - assertFieldValue(field, defaultFieldValue); - }; - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldAngle} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue(field, testCase.expectedValue); - }; - - runConstructorSuiteTests( - Blockly.FieldAngle, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - runFromJsonSuiteTests( - Blockly.FieldAngle, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - suite('setValue', function() { - suite('Empty -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldAngle(); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, defaultFieldValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue(2.5); - assertFieldValue(this.field, 2.5); - }); - }); - suite('Value -> New Value', function() { - const initialValue = 1; - setup(function() { - this.field = new Blockly.FieldAngle(initialValue); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, initialValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue(2.5); - assertFieldValue(this.field, 2.5); - }); - }); - }); - suite('Validators', function() { - setup(function() { - this.field = new Blockly.FieldAngle(1); - this.field.htmlInput_ = Object.create(null); - this.field.htmlInput_.oldValue_ = '1'; - this.field.htmlInput_.untypedDefaultValue_ = 1; - this.stub = sinon.stub(this.field, 'resizeEditor_'); - }); - teardown(function() { - sinon.restore(); - }); - const testSuites = [ - {title: 'Null Validator', - validator: - function() { - return null; - }, - value: 2, expectedValue: 1}, - {title: 'Force Mult of 30 Validator', - validator: - function(newValue) { - return Math.round(newValue / 30) * 30; - }, - value: 25, expectedValue: 30}, - {title: 'Returns Undefined Validator', validator: function() {}, value: 2, - expectedValue: 2}, - ]; - testSuites.forEach(function(suiteInfo) { - suite(suiteInfo.title, function() { - setup(function() { - this.field.setValidator(suiteInfo.validator); - }); - test('When Editing', function() { - this.field.isBeingEdited_ = true; - this.field.htmlInput_.value = String(suiteInfo.value); - this.field.onHtmlInputChange_(null); - assertFieldValue( - this.field, suiteInfo.expectedValue, String(suiteInfo.value)); - }); - test('When Not Editing', function() { - this.field.setValue(suiteInfo.value); - assertFieldValue(this.field, suiteInfo.expectedValue); - }); - }); - }); - }); - suite('Customizations', function() { - suite('Clockwise', function() { - test('JS Configuration', function() { - const field = new Blockly.FieldAngle(0, null, { - clockwise: true, - }); - chai.assert.isTrue(field.clockwise_); - }); - test('JSON Definition', function() { - const field = Blockly.FieldAngle.fromJson({ - value: 0, - clockwise: true, - }); - chai.assert.isTrue(field.clockwise_); - }); - test('Constant', function() { - // Note: Generally constants should be set at compile time, not - // runtime (since they are constants) but for testing purposes we - // can do this. - Blockly.FieldAngle.CLOCKWISE = true; - const field = new Blockly.FieldAngle(); - chai.assert.isTrue(field.clockwise_); - }); - }); - suite('Offset', function() { - test('JS Configuration', function() { - const field = new Blockly.FieldAngle(0, null, { - offset: 90, - }); - chai.assert.equal(field.offset_, 90); - }); - test('JSON Definition', function() { - const field = Blockly.FieldAngle.fromJson({ - value: 0, - offset: 90, - }); - chai.assert.equal(field.offset_, 90); - }); - test('Constant', function() { - // Note: Generally constants should be set at compile time, not - // runtime (since they are constants) but for testing purposes we - // can do this. - Blockly.FieldAngle.OFFSET = 90; - const field = new Blockly.FieldAngle(); - chai.assert.equal(field.offset_, 90); - }); - test('Null', function() { - // Note: Generally constants should be set at compile time, not - // runtime (since they are constants) but for testing purposes we - // can do this. - Blockly.FieldAngle.OFFSET = 90; - const field = Blockly.FieldAngle.fromJson({ - value: 0, - offset: null, - }); - chai.assert.equal(field.offset_, 90); - }); - }); - suite('Wrap', function() { - test('JS Configuration', function() { - const field = new Blockly.FieldAngle(0, null, { - wrap: 180, - }); - chai.assert.equal(field.wrap_, 180); - }); - test('JSON Definition', function() { - const field = Blockly.FieldAngle.fromJson({ - value: 0, - wrap: 180, - }); - chai.assert.equal(field.wrap_, 180); - }); - test('Constant', function() { - // Note: Generally constants should be set at compile time, not - // runtime (since they are constants) but for testing purposes we - // can do this. - Blockly.FieldAngle.WRAP = 180; - const field = new Blockly.FieldAngle(); - chai.assert.equal(field.wrap_, 180); - }); - test('Null', function() { - // Note: Generally constants should be set at compile time, not - // runtime (since they are constants) but for testing purposes we - // can do this. - Blockly.FieldAngle.WRAP = 180; - const field = Blockly.FieldAngle.fromJson({ - value: 0, - wrap: null, - }); - chai.assert.equal(field.wrap_, 180); - }); - }); - suite('Round', function() { - test('JS Configuration', function() { - const field = new Blockly.FieldAngle(0, null, { - round: 30, - }); - chai.assert.equal(field.round_, 30); - }); - test('JSON Definition', function() { - const field = Blockly.FieldAngle.fromJson({ - value: 0, - round: 30, - }); - chai.assert.equal(field.round_, 30); - }); - test('Constant', function() { - // Note: Generally constants should be set at compile time, not - // runtime (since they are constants) but for testing purposes we - // can do this. - Blockly.FieldAngle.ROUND = 30; - const field = new Blockly.FieldAngle(); - chai.assert.equal(field.round_, 30); - }); - test('Null', function() { - // Note: Generally constants should be set at compile time, not - // runtime (since they are constants) but for testing purposes we - // can do this. - Blockly.FieldAngle.ROUND = 30; - const field = Blockly.FieldAngle.fromJson({ - value: 0, - round: null, - }); - chai.assert.equal(field.round_, 30); - }); - }); - suite('Mode', function() { - suite('Compass', function() { - test('JS Configuration', function() { - const field = new Blockly.FieldAngle(0, null, { - mode: 'compass', - }); - chai.assert.equal(field.offset_, 90); - chai.assert.isTrue(field.clockwise_); - }); - test('JS Configuration', function() { - const field = Blockly.FieldAngle.fromJson({ - value: 0, - mode: 'compass', - }); - chai.assert.equal(field.offset_, 90); - chai.assert.isTrue(field.clockwise_); - }); - }); - suite('Protractor', function() { - test('JS Configuration', function() { - const field = new Blockly.FieldAngle(0, null, { - mode: 'protractor', - }); - chai.assert.equal(field.offset_, 0); - chai.assert.isFalse(field.clockwise_); - }); - test('JS Configuration', function() { - const field = Blockly.FieldAngle.fromJson({ - value: 0, - mode: 'protractor', - }); - chai.assert.equal(field.offset_, 0); - chai.assert.isFalse(field.clockwise_); - }); - }); - }); - }); - - suite('Serialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - - this.assertValue = (value) => { - const block = this.workspace.newBlock('row_block'); - const field = new Blockly.FieldAngle(value); - block.getInput('INPUT').appendField(field, 'ANGLE'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual(jso['fields'], {'ANGLE': value}); - }; - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Simple', function() { - this.assertValue(90); - }); - - test('Max precision', function() { - this.assertValue(1.000000000000001); - }); - - test('Smallest number', function() { - this.assertValue(5e-324); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldAngle'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Angle Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + {title: 'Undefined', value: undefined}, + {title: 'Null', value: null}, + {title: 'NaN', value: NaN}, + {title: 'Non-Parsable String', value: 'bad'}, + {title: 'Infinity', value: Infinity, expectedValue: Infinity}, + {title: 'Negative Infinity', value: -Infinity, expectedValue: -Infinity}, + {title: 'Infinity String', value: 'Infinity', expectedValue: Infinity}, + {title: 'Negative Infinity String', value: '-Infinity', + expectedValue: -Infinity}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + + const validValueTestCases = [ + {title: 'Integer', value: 1, expectedValue: 1}, + {title: 'Float', value: 1.5, expectedValue: 1.5}, + {title: 'Integer String', value: '1', expectedValue: 1}, + {title: 'Float String', value: '1.5', expectedValue: 1.5}, + {title: '> 360°', value: 362, expectedValue: 2}, + ]; + const addArgsAndJson = function(testCase) { + testCase.args = [testCase.value]; + testCase.json = {'angle': testCase.value}; + }; + invalidValueTestCases.forEach(addArgsAndJson); + validValueTestCases.forEach(addArgsAndJson); + + /** + * The expected default value for the field being tested. + * @type {*} + */ + const defaultFieldValue = 0; + /** + * Asserts that the field property values are set to default. + * @param {FieldTemplate} field The field to check. + */ + const assertFieldDefault = function(field) { + assertFieldValue(field, defaultFieldValue); + }; + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldAngle} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue(field, testCase.expectedValue); + }; + + runConstructorSuiteTests( + Blockly.FieldAngle, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + runFromJsonSuiteTests( + Blockly.FieldAngle, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + suite('setValue', function() { + suite('Empty -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldAngle(); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, defaultFieldValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue(2.5); + assertFieldValue(this.field, 2.5); + }); + }); + suite('Value -> New Value', function() { + const initialValue = 1; + setup(function() { + this.field = new Blockly.FieldAngle(initialValue); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, initialValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue(2.5); + assertFieldValue(this.field, 2.5); + }); + }); + }); + suite('Validators', function() { + setup(function() { + this.field = new Blockly.FieldAngle(1); + this.field.htmlInput_ = Object.create(null); + this.field.htmlInput_.oldValue_ = '1'; + this.field.htmlInput_.untypedDefaultValue_ = 1; + this.stub = sinon.stub(this.field, 'resizeEditor_'); + }); + teardown(function() { + sinon.restore(); + }); + const testSuites = [ + {title: 'Null Validator', + validator: + function() { + return null; + }, + value: 2, expectedValue: 1}, + {title: 'Force Mult of 30 Validator', + validator: + function(newValue) { + return Math.round(newValue / 30) * 30; + }, + value: 25, expectedValue: 30}, + {title: 'Returns Undefined Validator', validator: function() {}, value: 2, + expectedValue: 2}, + ]; + testSuites.forEach(function(suiteInfo) { + suite(suiteInfo.title, function() { + setup(function() { + this.field.setValidator(suiteInfo.validator); + }); + test('When Editing', function() { + this.field.isBeingEdited_ = true; + this.field.htmlInput_.value = String(suiteInfo.value); + this.field.onHtmlInputChange_(null); + assertFieldValue( + this.field, suiteInfo.expectedValue, String(suiteInfo.value)); + }); + test('When Not Editing', function() { + this.field.setValue(suiteInfo.value); + assertFieldValue(this.field, suiteInfo.expectedValue); + }); + }); + }); + }); + suite('Customizations', function() { + suite('Clockwise', function() { + test('JS Configuration', function() { + const field = new Blockly.FieldAngle(0, null, { + clockwise: true, + }); + chai.assert.isTrue(field.clockwise_); + }); + test('JSON Definition', function() { + const field = Blockly.FieldAngle.fromJson({ + value: 0, + clockwise: true, + }); + chai.assert.isTrue(field.clockwise_); + }); + test('Constant', function() { + // Note: Generally constants should be set at compile time, not + // runtime (since they are constants) but for testing purposes we + // can do this. + Blockly.FieldAngle.CLOCKWISE = true; + const field = new Blockly.FieldAngle(); + chai.assert.isTrue(field.clockwise_); + }); + }); + suite('Offset', function() { + test('JS Configuration', function() { + const field = new Blockly.FieldAngle(0, null, { + offset: 90, + }); + chai.assert.equal(field.offset_, 90); + }); + test('JSON Definition', function() { + const field = Blockly.FieldAngle.fromJson({ + value: 0, + offset: 90, + }); + chai.assert.equal(field.offset_, 90); + }); + test('Constant', function() { + // Note: Generally constants should be set at compile time, not + // runtime (since they are constants) but for testing purposes we + // can do this. + Blockly.FieldAngle.OFFSET = 90; + const field = new Blockly.FieldAngle(); + chai.assert.equal(field.offset_, 90); + }); + test('Null', function() { + // Note: Generally constants should be set at compile time, not + // runtime (since they are constants) but for testing purposes we + // can do this. + Blockly.FieldAngle.OFFSET = 90; + const field = Blockly.FieldAngle.fromJson({ + value: 0, + offset: null, + }); + chai.assert.equal(field.offset_, 90); + }); + }); + suite('Wrap', function() { + test('JS Configuration', function() { + const field = new Blockly.FieldAngle(0, null, { + wrap: 180, + }); + chai.assert.equal(field.wrap_, 180); + }); + test('JSON Definition', function() { + const field = Blockly.FieldAngle.fromJson({ + value: 0, + wrap: 180, + }); + chai.assert.equal(field.wrap_, 180); + }); + test('Constant', function() { + // Note: Generally constants should be set at compile time, not + // runtime (since they are constants) but for testing purposes we + // can do this. + Blockly.FieldAngle.WRAP = 180; + const field = new Blockly.FieldAngle(); + chai.assert.equal(field.wrap_, 180); + }); + test('Null', function() { + // Note: Generally constants should be set at compile time, not + // runtime (since they are constants) but for testing purposes we + // can do this. + Blockly.FieldAngle.WRAP = 180; + const field = Blockly.FieldAngle.fromJson({ + value: 0, + wrap: null, + }); + chai.assert.equal(field.wrap_, 180); + }); + }); + suite('Round', function() { + test('JS Configuration', function() { + const field = new Blockly.FieldAngle(0, null, { + round: 30, + }); + chai.assert.equal(field.round_, 30); + }); + test('JSON Definition', function() { + const field = Blockly.FieldAngle.fromJson({ + value: 0, + round: 30, + }); + chai.assert.equal(field.round_, 30); + }); + test('Constant', function() { + // Note: Generally constants should be set at compile time, not + // runtime (since they are constants) but for testing purposes we + // can do this. + Blockly.FieldAngle.ROUND = 30; + const field = new Blockly.FieldAngle(); + chai.assert.equal(field.round_, 30); + }); + test('Null', function() { + // Note: Generally constants should be set at compile time, not + // runtime (since they are constants) but for testing purposes we + // can do this. + Blockly.FieldAngle.ROUND = 30; + const field = Blockly.FieldAngle.fromJson({ + value: 0, + round: null, + }); + chai.assert.equal(field.round_, 30); + }); + }); + suite('Mode', function() { + suite('Compass', function() { + test('JS Configuration', function() { + const field = new Blockly.FieldAngle(0, null, { + mode: 'compass', + }); + chai.assert.equal(field.offset_, 90); + chai.assert.isTrue(field.clockwise_); + }); + test('JS Configuration', function() { + const field = Blockly.FieldAngle.fromJson({ + value: 0, + mode: 'compass', + }); + chai.assert.equal(field.offset_, 90); + chai.assert.isTrue(field.clockwise_); + }); + }); + suite('Protractor', function() { + test('JS Configuration', function() { + const field = new Blockly.FieldAngle(0, null, { + mode: 'protractor', + }); + chai.assert.equal(field.offset_, 0); + chai.assert.isFalse(field.clockwise_); + }); + test('JS Configuration', function() { + const field = Blockly.FieldAngle.fromJson({ + value: 0, + mode: 'protractor', + }); + chai.assert.equal(field.offset_, 0); + chai.assert.isFalse(field.clockwise_); + }); + }); + }); + }); + + suite('Serialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + + this.assertValue = (value) => { + const block = this.workspace.newBlock('row_block'); + const field = new Blockly.FieldAngle(value); + block.getInput('INPUT').appendField(field, 'ANGLE'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual(jso['fields'], {'ANGLE': value}); + }; + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Simple', function() { + this.assertValue(90); + }); + + test('Max precision', function() { + this.assertValue(1.000000000000001); + }); + + test('Smallest number', function() { + this.assertValue(5e-324); + }); + }); +}); diff --git a/tests/mocha/field_checkbox_test.js b/tests/mocha/field_checkbox_test.js index 5de5659849a..fcfa6dbec6b 100644 --- a/tests/mocha/field_checkbox_test.js +++ b/tests/mocha/field_checkbox_test.js @@ -1,241 +1,241 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldCheckbox'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); - - -suite('Checkbox Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - {title: 'Undefined', value: undefined}, - {title: 'Null', value: null}, - {title: 'NaN', value: NaN}, - {title: 'Non-Parsable String', value: 'bad'}, - {title: 'Integer', value: 1}, - {title: 'Float', value: 1.5}, - {title: 'String true', value: 'true'}, - {title: 'String false', value: 'false'}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueTestCases = [ - {title: 'Boolean true', value: true, expectedValue: 'TRUE', - expectedText: 'true'}, - {title: 'Boolean false', value: false, expectedValue: 'FALSE', - expectedText: 'false'}, - {title: 'String TRUE', value: 'TRUE', expectedValue: 'TRUE', - expectedText: 'true'}, - {title: 'String FALSE', value: 'FALSE', expectedValue: 'FALSE', - expectedText: 'false'}, - ]; - const addArgsAndJson = function(testCase) { - testCase.args = [testCase.value]; - testCase.json = {'checked': testCase.value}; - }; - invalidValueTestCases.forEach(addArgsAndJson); - validValueTestCases.forEach(addArgsAndJson); - - /** - * The expected default value for the field being tested. - * @type {*} - */ - const defaultFieldValue = 'FALSE'; - /** - * Asserts that the field property values are set to default. - * @param {!Blockly.FieldCheckbox} field The field to check. - */ - const assertFieldDefault = function(field) { - assertFieldValue( - field, defaultFieldValue, defaultFieldValue.toLowerCase()); - }; - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldCheckbox} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue( - field, testCase.expectedValue, testCase.expectedValue.toLowerCase()); - }; - - runConstructorSuiteTests( - Blockly.FieldCheckbox, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - runFromJsonSuiteTests( - Blockly.FieldCheckbox, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - suite('setValue', function() { - suite('True -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldCheckbox('TRUE'); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, 'TRUE', 'true'); - }); - suite('False -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldCheckbox('FALSE'); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, 'FALSE', 'false'); - }); - }); - suite('Validators', function() { - setup(function() { - this.field = new Blockly.FieldCheckbox(true); - }); - const testSuites = [ - {title: 'Null Validator', - validator: - function() { - return null; - }, - value: 'FALSE', expectedValue: 'TRUE'}, - {title: 'Always True Validator', - validator: - function() { - return 'TRUE'; - }, - value: 'FALSE', expectedValue: 'TRUE'}, - {title: 'Always False Validator', - validator: - function() { - return 'TRUE'; - }, - value: 'FALSE', expectedValue: 'TRUE'}, - {title: 'Returns Undefined Validator', validator: function() {}, - value: 'FALSE', expectedValue: 'FALSE'}, - ]; - testSuites.forEach(function(suiteInfo) { - suite(suiteInfo.title, function() { - setup(function() { - this.field.setValidator(suiteInfo.validator); - }); - test('New Value', function() { - this.field.setValue(suiteInfo.value); - assertFieldValue( - this.field, suiteInfo.expectedValue, - String(suiteInfo.expectedValue).toLowerCase()); - }); - }); - }); - }); - suite('Customizations', function() { - suite('Check Character', function() { - function assertCharacter(field, char) { - field.fieldGroup_ = Blockly.utils.dom.createSvgElement( - Blockly.utils.Svg.G, {}, null); - field.sourceBlock_ = { - RTL: false, - rendered: true, - workspace: { - keyboardAccessibilityMode: false, - }, - render: function() {field.render_();}, - bumpNeighbours: function() {}, - }; - field.constants_ = { - FIELD_CHECKBOX_X_OFFSET: 2, - FIELD_CHECKBOX_Y_OFFSET: 2, - FIELD_BORDER_RECT_RADIUS: 4, - FIELD_BORDER_RECT_HEIGHT: 16, - FIELD_TEXT_BASELINE_CENTER: false, - FIELD_TEXT_HEIGHT: 16, - FIELD_TEXT_BASELINE: 13, - }; - field.initView(); - field.render_(); - chai.assert(field.textContent_.nodeValue, char); - } - test('Constant', function() { - const checkChar = Blockly.FieldCheckbox.CHECK_CHAR; - // Note: Developers shouldn't actually do this. IMO they should change - // the file and then recompile. But this is fine for testing. - Blockly.FieldCheckbox.CHECK_CHAR = '\u2661'; - const field = new Blockly.FieldCheckbox(true); - assertCharacter(field, '\u2661'); - Blockly.FieldCheckbox.CHECK_CHAR = checkChar; - }); - test('JS Constructor', function() { - const field = new Blockly.FieldCheckbox(true, null, { - checkCharacter: '\u2661', - }); - assertCharacter(field, '\u2661'); - }); - test('JSON Definition', function() { - const field = Blockly.FieldCheckbox.fromJson({ - checkCharacter: '\u2661', - }); - assertCharacter(field, '\u2661'); - }); - test('setCheckCharacter', function() { - const field = new Blockly.FieldCheckbox(); - assertCharacter(field, Blockly.FieldCheckbox.CHECK_CHAR); - field.setCheckCharacter('\u2661'); - // Don't call assertCharacter b/c we don't want to re-initialize. - chai.assert.equal(field.textContent_.nodeValue, '\u2661'); - }); - test('setCheckCharacter Before Init', function() { - const field = new Blockly.FieldCheckbox(); - field.setCheckCharacter('\u2661'); - assertCharacter(field, '\u2661'); - }); - test('Remove Custom Character', function() { - const field = new Blockly.FieldCheckbox(true, null, { - 'checkCharacter': '\u2661', - }); - assertCharacter(field, '\u2661'); - field.setCheckCharacter(null); - chai.assert(field.textContent_.nodeValue, - Blockly.FieldCheckbox.CHECK_CHAR); - }); - }); - }); - - suite('Serialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - - this.assertValue = (value) => { - const block = this.workspace.newBlock('row_block'); - const field = new Blockly.FieldCheckbox(value); - block.getInput('INPUT').appendField(field, 'CHECK'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual(jso['fields'], {'CHECK': value}); - }; - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('True', function() { - this.assertValue(true); - }); - - test('False', function() { - this.assertValue(false); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldCheckbox'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); + + +suite('Checkbox Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + {title: 'Undefined', value: undefined}, + {title: 'Null', value: null}, + {title: 'NaN', value: NaN}, + {title: 'Non-Parsable String', value: 'bad'}, + {title: 'Integer', value: 1}, + {title: 'Float', value: 1.5}, + {title: 'String true', value: 'true'}, + {title: 'String false', value: 'false'}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueTestCases = [ + {title: 'Boolean true', value: true, expectedValue: 'TRUE', + expectedText: 'true'}, + {title: 'Boolean false', value: false, expectedValue: 'FALSE', + expectedText: 'false'}, + {title: 'String TRUE', value: 'TRUE', expectedValue: 'TRUE', + expectedText: 'true'}, + {title: 'String FALSE', value: 'FALSE', expectedValue: 'FALSE', + expectedText: 'false'}, + ]; + const addArgsAndJson = function(testCase) { + testCase.args = [testCase.value]; + testCase.json = {'checked': testCase.value}; + }; + invalidValueTestCases.forEach(addArgsAndJson); + validValueTestCases.forEach(addArgsAndJson); + + /** + * The expected default value for the field being tested. + * @type {*} + */ + const defaultFieldValue = 'FALSE'; + /** + * Asserts that the field property values are set to default. + * @param {!Blockly.FieldCheckbox} field The field to check. + */ + const assertFieldDefault = function(field) { + assertFieldValue( + field, defaultFieldValue, defaultFieldValue.toLowerCase()); + }; + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldCheckbox} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue( + field, testCase.expectedValue, testCase.expectedValue.toLowerCase()); + }; + + runConstructorSuiteTests( + Blockly.FieldCheckbox, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + runFromJsonSuiteTests( + Blockly.FieldCheckbox, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + suite('setValue', function() { + suite('True -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldCheckbox('TRUE'); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, 'TRUE', 'true'); + }); + suite('False -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldCheckbox('FALSE'); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, 'FALSE', 'false'); + }); + }); + suite('Validators', function() { + setup(function() { + this.field = new Blockly.FieldCheckbox(true); + }); + const testSuites = [ + {title: 'Null Validator', + validator: + function() { + return null; + }, + value: 'FALSE', expectedValue: 'TRUE'}, + {title: 'Always True Validator', + validator: + function() { + return 'TRUE'; + }, + value: 'FALSE', expectedValue: 'TRUE'}, + {title: 'Always False Validator', + validator: + function() { + return 'TRUE'; + }, + value: 'FALSE', expectedValue: 'TRUE'}, + {title: 'Returns Undefined Validator', validator: function() {}, + value: 'FALSE', expectedValue: 'FALSE'}, + ]; + testSuites.forEach(function(suiteInfo) { + suite(suiteInfo.title, function() { + setup(function() { + this.field.setValidator(suiteInfo.validator); + }); + test('New Value', function() { + this.field.setValue(suiteInfo.value); + assertFieldValue( + this.field, suiteInfo.expectedValue, + String(suiteInfo.expectedValue).toLowerCase()); + }); + }); + }); + }); + suite('Customizations', function() { + suite('Check Character', function() { + function assertCharacter(field, char) { + field.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); + field.sourceBlock_ = { + RTL: false, + rendered: true, + workspace: { + keyboardAccessibilityMode: false, + }, + render: function() {field.render_();}, + bumpNeighbours: function() {}, + }; + field.constants_ = { + FIELD_CHECKBOX_X_OFFSET: 2, + FIELD_CHECKBOX_Y_OFFSET: 2, + FIELD_BORDER_RECT_RADIUS: 4, + FIELD_BORDER_RECT_HEIGHT: 16, + FIELD_TEXT_BASELINE_CENTER: false, + FIELD_TEXT_HEIGHT: 16, + FIELD_TEXT_BASELINE: 13, + }; + field.initView(); + field.render_(); + chai.assert(field.textContent_.nodeValue, char); + } + test('Constant', function() { + const checkChar = Blockly.FieldCheckbox.CHECK_CHAR; + // Note: Developers shouldn't actually do this. IMO they should change + // the file and then recompile. But this is fine for testing. + Blockly.FieldCheckbox.CHECK_CHAR = '\u2661'; + const field = new Blockly.FieldCheckbox(true); + assertCharacter(field, '\u2661'); + Blockly.FieldCheckbox.CHECK_CHAR = checkChar; + }); + test('JS Constructor', function() { + const field = new Blockly.FieldCheckbox(true, null, { + checkCharacter: '\u2661', + }); + assertCharacter(field, '\u2661'); + }); + test('JSON Definition', function() { + const field = Blockly.FieldCheckbox.fromJson({ + checkCharacter: '\u2661', + }); + assertCharacter(field, '\u2661'); + }); + test('setCheckCharacter', function() { + const field = new Blockly.FieldCheckbox(); + assertCharacter(field, Blockly.FieldCheckbox.CHECK_CHAR); + field.setCheckCharacter('\u2661'); + // Don't call assertCharacter b/c we don't want to re-initialize. + chai.assert.equal(field.textContent_.nodeValue, '\u2661'); + }); + test('setCheckCharacter Before Init', function() { + const field = new Blockly.FieldCheckbox(); + field.setCheckCharacter('\u2661'); + assertCharacter(field, '\u2661'); + }); + test('Remove Custom Character', function() { + const field = new Blockly.FieldCheckbox(true, null, { + 'checkCharacter': '\u2661', + }); + assertCharacter(field, '\u2661'); + field.setCheckCharacter(null); + chai.assert(field.textContent_.nodeValue, + Blockly.FieldCheckbox.CHECK_CHAR); + }); + }); + }); + + suite('Serialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + + this.assertValue = (value) => { + const block = this.workspace.newBlock('row_block'); + const field = new Blockly.FieldCheckbox(value); + block.getInput('INPUT').appendField(field, 'CHECK'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual(jso['fields'], {'CHECK': value}); + }; + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('True', function() { + this.assertValue(true); + }); + + test('False', function() { + this.assertValue(false); + }); + }); +}); diff --git a/tests/mocha/field_colour_test.js b/tests/mocha/field_colour_test.js index eb0389702a5..1147a7ed8e2 100644 --- a/tests/mocha/field_colour_test.js +++ b/tests/mocha/field_colour_test.js @@ -1,314 +1,314 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldColour'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Colour Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - {title: 'Undefined', value: undefined}, - {title: 'Null', value: null}, - {title: 'NaN', value: NaN}, - {title: 'Non-Parsable String', value: 'bad-string'}, - {title: 'Integer', value: 1}, - {title: 'Float', value: 1.5}, - {title: 'Infinity', value: Infinity, expectedValue: Infinity}, - {title: 'Negative Infinity', value: -Infinity, expectedValue: -Infinity}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - - const validValueTestCases = [ - {title: '#AAAAAA', value: '#AAAAAA', expectedValue: '#aaaaaa', - expectedText: '#aaa'}, - {title: '#aaaaaa', value: '#aaaaaa', expectedValue: '#aaaaaa', - expectedText: '#aaa'}, - {title: '#AAAA00', value: '#AAAA00', expectedValue: '#aaaa00', - expectedText: '#aa0'}, - {title: '#aaaA00', value: '#aaaA00', expectedValue: '#aaaa00', - expectedText: '#aa0'}, - {title: '#BCBCBC', value: '#BCBCBC', expectedValue: '#bcbcbc', - expectedText: '#bcbcbc'}, - {title: '#bcbcbc', value: '#bcbcbc', expectedValue: '#bcbcbc', - expectedText: '#bcbcbc'}, - {title: '#AA0', value: '#AA0', expectedValue: '#aaaa00', - expectedText: '#aa0'}, - {title: '#aa0', value: '#aa0', expectedValue: '#aaaa00', - expectedText: '#aa0'}, - {title: 'rgb(170, 170, 0)', value: 'rgb(170, 170, 0)', - expectedValue: '#aaaa00', expectedText: '#aa0'}, - {title: 'red', value: 'red', expectedValue: '#ff0000', - expectedText: '#f00'}, - ]; - const addArgsAndJson = function(testCase) { - testCase.args = [testCase.value]; - testCase.json = {'colour': testCase.value}; - }; - invalidValueTestCases.forEach(addArgsAndJson); - validValueTestCases.forEach(addArgsAndJson); - - /** - * The expected default value for the field being tested. - * @type {*} - */ - const defaultFieldValue = Blockly.FieldColour.COLOURS[0]; - /** - * The expected default text for the field being tested. - * @type {*} - */ - const defaultTextValue = ( - function() { - let expectedText = defaultFieldValue; - const m = defaultFieldValue.match(/^#(.)\1(.)\2(.)\3$/); - if (m) { - expectedText = '#' + m[1] + m[2] + m[3]; - } - return expectedText; - })(); - /** - * Asserts that the field property values are set to default. - * @param {FieldTemplate} field The field to check. - */ - const assertFieldDefault = function(field) { - assertFieldValue(field, defaultFieldValue, defaultTextValue); - }; - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldAngle} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue( - field, testCase.expectedValue, testCase.expectedText); - }; - - runConstructorSuiteTests( - Blockly.FieldColour, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - runFromJsonSuiteTests( - Blockly.FieldColour, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - suite('setValue', function() { - suite('Empty -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldColour(); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, defaultFieldValue, - defaultTextValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('#bcbcbc'); - assertFieldValue(this.field, '#bcbcbc', '#bcbcbc'); - }); - }); - suite('Value -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldColour('#aaaaaa'); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, '#aaaaaa', '#aaa'); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('#bcbcbc'); - assertFieldValue(this.field, '#bcbcbc', '#bcbcbc'); - }); - }); - }); - suite('Validators', function() { - setup(function() { - this.field = new Blockly.FieldColour('#aaaaaa'); - }); - const testSuites = [ - {title: 'Null Validator', - validator: - function() { - return null; - }, - value: '#000000', expectedValue: '#aaaaaa', expectedText: '#aaa'}, - {title: 'Force Full Red Validator', - validator: - function(newValue) { - return '#ff' + newValue.substr(3, 4); - }, - value: '#000000', expectedValue: '#ff0000', expectedText: '#f00'}, - {title: 'Returns Undefined Validator', validator: function() {}, - value: '#000000', expectedValue: '#000000', expectedText: '#000'}, - ]; - testSuites.forEach(function(suiteInfo) { - suite(suiteInfo.title, function() { - setup(function() { - this.field.setValidator(suiteInfo.validator); - }); - test('New Value', function() { - this.field.setValue(suiteInfo.value); - assertFieldValue( - this.field, suiteInfo.expectedValue, suiteInfo.expectedText); - }); - }); - }); - }); - suite('Customizations', function() { - suite('Colours and Titles', function() { - function assertColoursAndTitles(field, colours, titles) { - field.dropdownCreate_(); - let index = 0; - let node = field.picker_.firstChild.firstChild; - while (node) { - chai.assert.equal(node.getAttribute('title'), titles[index]); - chai.assert.equal( - Blockly.utils.colour.parse( - node.style.backgroundColor), - colours[index]); - - let nextNode = node.nextSibling; - if (!nextNode) { - nextNode = node.parentElement.nextSibling; - if (!nextNode) { - break; - } - nextNode = nextNode.firstChild; - } - node = nextNode; - - index++; - } - } - test('Constants', function() { - const colours = Blockly.FieldColour.COLOURS; - const titles = Blockly.FieldColour.TITLES; - // Note: Developers shouldn't actually do this. IMO they should - // change the file and then recompile. But this is fine for testing. - Blockly.FieldColour.COLOURS = ['#aaaaaa']; - Blockly.FieldColour.TITLES = ['grey']; - const field = new Blockly.FieldColour(); - - assertColoursAndTitles(field, ['#aaaaaa'], ['grey']); - - Blockly.FieldColour.COLOURS = colours; - Blockly.FieldColour.TITLES = titles; - }); - test('JS Constructor', function() { - const field = new Blockly.FieldColour('#aaaaaa', null, { - colourOptions: ['#aaaaaa'], - colourTitles: ['grey'], - }); - assertColoursAndTitles(field, ['#aaaaaa'], ['grey']); - }); - test('JSON Definition', function() { - const field = Blockly.FieldColour.fromJson({ - colour: '#aaaaaa', - colourOptions: ['#aaaaaa'], - colourTitles: ['grey'], - }); - assertColoursAndTitles(field, ['#aaaaaa'], ['grey']); - }); - test('setColours', function() { - const field = new Blockly.FieldColour(); - field.setColours(['#aaaaaa'], ['grey']); - assertColoursAndTitles(field, ['#aaaaaa'], ['grey']); - }); - test('Titles Undefined', function() { - const field = new Blockly.FieldColour(); - field.setColours(['#aaaaaa']); - assertColoursAndTitles(field, ['#aaaaaa'], ['#aaaaaa']); - }); - test('Some Titles Undefined', function() { - const field = new Blockly.FieldColour(); - field.setColours(['#aaaaaa', '#ff0000'], ['grey']); - assertColoursAndTitles(field, - ['#aaaaaa', '#ff0000'], ['grey', '#ff0000']); - }); - // This is kinda derpy behavior, but I wanted to document it. - test('Overwriting Colours While Leaving Titles', function() { - const field = new Blockly.FieldColour(); - field.setColours(['#aaaaaa'], ['grey']); - field.setColours(['#ff0000']); - assertColoursAndTitles(field, ['#ff0000'], ['grey']); - }); - }); - suite('Columns', function() { - function assertColumns(field, columns) { - field.dropdownCreate_(); - chai.assert.equal(field.picker_.firstChild.children.length, columns); - } - test('Constants', function() { - const columns = Blockly.FieldColour.COLUMNS; - // Note: Developers shouldn't actually do this. IMO they should edit - // the file and then recompile. But this is fine for testing. - Blockly.FieldColour.COLUMNS = 3; - const field = new Blockly.FieldColour(); - - assertColumns(field, 3); - - Blockly.FieldColour.COLUMNS = columns; - }); - test('JS Constructor', function() { - const field = new Blockly.FieldColour('#ffffff', null, { - columns: 3, - }); - assertColumns(field, 3); - }); - test('JSON Definition', function() { - const field = Blockly.FieldColour.fromJson({ - 'colour': '#ffffff', - 'columns': 3, - }); - assertColumns(field, 3); - }); - test('setColumns', function() { - const field = new Blockly.FieldColour(); - field.setColumns(3); - assertColumns(field, 3); - }); - }); - }); - - suite('Serialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - - this.assertValue = (value) => { - const block = this.workspace.newBlock('row_block'); - const field = new Blockly.FieldColour(value); - block.getInput('INPUT').appendField(field, 'COLOUR'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual(jso['fields'], {'COLOUR': value}); - }; - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Three char', function() { - this.assertValue('#001122'); - }); - - test('Six char', function() { - this.assertValue('#012345'); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldColour'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Colour Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + {title: 'Undefined', value: undefined}, + {title: 'Null', value: null}, + {title: 'NaN', value: NaN}, + {title: 'Non-Parsable String', value: 'bad-string'}, + {title: 'Integer', value: 1}, + {title: 'Float', value: 1.5}, + {title: 'Infinity', value: Infinity, expectedValue: Infinity}, + {title: 'Negative Infinity', value: -Infinity, expectedValue: -Infinity}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + + const validValueTestCases = [ + {title: '#AAAAAA', value: '#AAAAAA', expectedValue: '#aaaaaa', + expectedText: '#aaa'}, + {title: '#aaaaaa', value: '#aaaaaa', expectedValue: '#aaaaaa', + expectedText: '#aaa'}, + {title: '#AAAA00', value: '#AAAA00', expectedValue: '#aaaa00', + expectedText: '#aa0'}, + {title: '#aaaA00', value: '#aaaA00', expectedValue: '#aaaa00', + expectedText: '#aa0'}, + {title: '#BCBCBC', value: '#BCBCBC', expectedValue: '#bcbcbc', + expectedText: '#bcbcbc'}, + {title: '#bcbcbc', value: '#bcbcbc', expectedValue: '#bcbcbc', + expectedText: '#bcbcbc'}, + {title: '#AA0', value: '#AA0', expectedValue: '#aaaa00', + expectedText: '#aa0'}, + {title: '#aa0', value: '#aa0', expectedValue: '#aaaa00', + expectedText: '#aa0'}, + {title: 'rgb(170, 170, 0)', value: 'rgb(170, 170, 0)', + expectedValue: '#aaaa00', expectedText: '#aa0'}, + {title: 'red', value: 'red', expectedValue: '#ff0000', + expectedText: '#f00'}, + ]; + const addArgsAndJson = function(testCase) { + testCase.args = [testCase.value]; + testCase.json = {'colour': testCase.value}; + }; + invalidValueTestCases.forEach(addArgsAndJson); + validValueTestCases.forEach(addArgsAndJson); + + /** + * The expected default value for the field being tested. + * @type {*} + */ + const defaultFieldValue = Blockly.FieldColour.COLOURS[0]; + /** + * The expected default text for the field being tested. + * @type {*} + */ + const defaultTextValue = ( + function() { + let expectedText = defaultFieldValue; + const m = defaultFieldValue.match(/^#(.)\1(.)\2(.)\3$/); + if (m) { + expectedText = '#' + m[1] + m[2] + m[3]; + } + return expectedText; + })(); + /** + * Asserts that the field property values are set to default. + * @param {FieldTemplate} field The field to check. + */ + const assertFieldDefault = function(field) { + assertFieldValue(field, defaultFieldValue, defaultTextValue); + }; + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldAngle} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue( + field, testCase.expectedValue, testCase.expectedText); + }; + + runConstructorSuiteTests( + Blockly.FieldColour, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + runFromJsonSuiteTests( + Blockly.FieldColour, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + suite('setValue', function() { + suite('Empty -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldColour(); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, defaultFieldValue, + defaultTextValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('#bcbcbc'); + assertFieldValue(this.field, '#bcbcbc', '#bcbcbc'); + }); + }); + suite('Value -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldColour('#aaaaaa'); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, '#aaaaaa', '#aaa'); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('#bcbcbc'); + assertFieldValue(this.field, '#bcbcbc', '#bcbcbc'); + }); + }); + }); + suite('Validators', function() { + setup(function() { + this.field = new Blockly.FieldColour('#aaaaaa'); + }); + const testSuites = [ + {title: 'Null Validator', + validator: + function() { + return null; + }, + value: '#000000', expectedValue: '#aaaaaa', expectedText: '#aaa'}, + {title: 'Force Full Red Validator', + validator: + function(newValue) { + return '#ff' + newValue.substr(3, 4); + }, + value: '#000000', expectedValue: '#ff0000', expectedText: '#f00'}, + {title: 'Returns Undefined Validator', validator: function() {}, + value: '#000000', expectedValue: '#000000', expectedText: '#000'}, + ]; + testSuites.forEach(function(suiteInfo) { + suite(suiteInfo.title, function() { + setup(function() { + this.field.setValidator(suiteInfo.validator); + }); + test('New Value', function() { + this.field.setValue(suiteInfo.value); + assertFieldValue( + this.field, suiteInfo.expectedValue, suiteInfo.expectedText); + }); + }); + }); + }); + suite('Customizations', function() { + suite('Colours and Titles', function() { + function assertColoursAndTitles(field, colours, titles) { + field.dropdownCreate_(); + let index = 0; + let node = field.picker_.firstChild.firstChild; + while (node) { + chai.assert.equal(node.getAttribute('title'), titles[index]); + chai.assert.equal( + Blockly.utils.colour.parse( + node.style.backgroundColor), + colours[index]); + + let nextNode = node.nextSibling; + if (!nextNode) { + nextNode = node.parentElement.nextSibling; + if (!nextNode) { + break; + } + nextNode = nextNode.firstChild; + } + node = nextNode; + + index++; + } + } + test('Constants', function() { + const colours = Blockly.FieldColour.COLOURS; + const titles = Blockly.FieldColour.TITLES; + // Note: Developers shouldn't actually do this. IMO they should + // change the file and then recompile. But this is fine for testing. + Blockly.FieldColour.COLOURS = ['#aaaaaa']; + Blockly.FieldColour.TITLES = ['grey']; + const field = new Blockly.FieldColour(); + + assertColoursAndTitles(field, ['#aaaaaa'], ['grey']); + + Blockly.FieldColour.COLOURS = colours; + Blockly.FieldColour.TITLES = titles; + }); + test('JS Constructor', function() { + const field = new Blockly.FieldColour('#aaaaaa', null, { + colourOptions: ['#aaaaaa'], + colourTitles: ['grey'], + }); + assertColoursAndTitles(field, ['#aaaaaa'], ['grey']); + }); + test('JSON Definition', function() { + const field = Blockly.FieldColour.fromJson({ + colour: '#aaaaaa', + colourOptions: ['#aaaaaa'], + colourTitles: ['grey'], + }); + assertColoursAndTitles(field, ['#aaaaaa'], ['grey']); + }); + test('setColours', function() { + const field = new Blockly.FieldColour(); + field.setColours(['#aaaaaa'], ['grey']); + assertColoursAndTitles(field, ['#aaaaaa'], ['grey']); + }); + test('Titles Undefined', function() { + const field = new Blockly.FieldColour(); + field.setColours(['#aaaaaa']); + assertColoursAndTitles(field, ['#aaaaaa'], ['#aaaaaa']); + }); + test('Some Titles Undefined', function() { + const field = new Blockly.FieldColour(); + field.setColours(['#aaaaaa', '#ff0000'], ['grey']); + assertColoursAndTitles(field, + ['#aaaaaa', '#ff0000'], ['grey', '#ff0000']); + }); + // This is kinda derpy behavior, but I wanted to document it. + test('Overwriting Colours While Leaving Titles', function() { + const field = new Blockly.FieldColour(); + field.setColours(['#aaaaaa'], ['grey']); + field.setColours(['#ff0000']); + assertColoursAndTitles(field, ['#ff0000'], ['grey']); + }); + }); + suite('Columns', function() { + function assertColumns(field, columns) { + field.dropdownCreate_(); + chai.assert.equal(field.picker_.firstChild.children.length, columns); + } + test('Constants', function() { + const columns = Blockly.FieldColour.COLUMNS; + // Note: Developers shouldn't actually do this. IMO they should edit + // the file and then recompile. But this is fine for testing. + Blockly.FieldColour.COLUMNS = 3; + const field = new Blockly.FieldColour(); + + assertColumns(field, 3); + + Blockly.FieldColour.COLUMNS = columns; + }); + test('JS Constructor', function() { + const field = new Blockly.FieldColour('#ffffff', null, { + columns: 3, + }); + assertColumns(field, 3); + }); + test('JSON Definition', function() { + const field = Blockly.FieldColour.fromJson({ + 'colour': '#ffffff', + 'columns': 3, + }); + assertColumns(field, 3); + }); + test('setColumns', function() { + const field = new Blockly.FieldColour(); + field.setColumns(3); + assertColumns(field, 3); + }); + }); + }); + + suite('Serialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + + this.assertValue = (value) => { + const block = this.workspace.newBlock('row_block'); + const field = new Blockly.FieldColour(value); + block.getInput('INPUT').appendField(field, 'COLOUR'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual(jso['fields'], {'COLOUR': value}); + }; + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Three char', function() { + this.assertValue('#001122'); + }); + + test('Six char', function() { + this.assertValue('#012345'); + }); + }); +}); diff --git a/tests/mocha/field_dropdown_test.js b/tests/mocha/field_dropdown_test.js index 1b67525f442..3b72d437cb8 100644 --- a/tests/mocha/field_dropdown_test.js +++ b/tests/mocha/field_dropdown_test.js @@ -1,194 +1,194 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldDropdown'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Dropdown Fields', function() { - setup(function() { - sharedTestSetup.call(this); - - // Invalid value test are expected to log errors. - const nativeConsoleError = console.error; - this.nativeConsoleError = nativeConsoleError; - console.error = function(msg) { - if (!msg.includes('Each FieldDropdown option')) { - nativeConsoleError.call(this, ...arguments); - } - }; - }); - teardown(function() { - console.error = this.nativeConsoleError; - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueCreationTestCases = [ - {title: 'Undefined', args: [undefined]}, - {title: 'Array Items not Arrays', args: [undefined]}, - {title: 'Array Items with Invalid IDs', - args: [[['1', 1], ['2', 2], ['3', 3]]]}, - {title: 'Array Items with Invalid Content', - args: [[[1, '1'], [2, '2'], [3, '3']]]}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueCreationTestCases = [ - {title: 'Text Dropdown', value: 'A', expectedValue: 'A', expectedText: 'a', - args: [[['a', 'A'], ['b', 'B'], ['c', 'C']]]}, - {title: 'Image Dropdown', value: 'A', expectedValue: 'A', expectedText: 'a', - args: [[ - [{src: 'scrA', alt: 'a'}, 'A'], - [{src: 'scrB', alt: 'b'}, 'B'], - [{src: 'scrC', alt: 'c'}, 'C']]]}, - {title: 'Dynamic Text Dropdown', value: 'A', expectedValue: 'A', expectedText: 'a', - args: [() => { - return [['a', 'A'], ['b', 'B'], ['c', 'C']]; - }]}, - {title: 'Dynamic Image Dropdown', value: 'A', expectedValue: 'A', expectedText: 'a', - args: [() => { - return [ - [{src: 'scrA', alt: 'a'}, 'A'], - [{src: 'scrB', alt: 'b'}, 'B'], - [{src: 'scrC', alt: 'c'}, 'C']]; - }]}, - ]; - const addJson = function(testCase) { - testCase.json = {'options': testCase.args[0]}; - }; - invalidValueCreationTestCases.forEach(addJson); - validValueCreationTestCases.forEach(addJson); - - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldDropdown} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue(field, testCase.expectedValue, testCase.expectedText); - }; - - runConstructorSuiteTests( - Blockly.FieldDropdown, validValueCreationTestCases, - invalidValueCreationTestCases, validTestCaseAssertField); - - runFromJsonSuiteTests( - Blockly.FieldDropdown, validValueCreationTestCases, - invalidValueCreationTestCases, validTestCaseAssertField); - - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueSetValueTestCases = [ - {title: 'Null', value: null}, - {title: 'Undefined', value: undefined}, - {title: 'Invalid ID', value: 'bad'}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueSetValueTestCases = [ - {title: 'Valid ID', value: 'B', expectedValue: 'B', expectedText: 'b'}, - ]; - - suite('setValue', function() { - setup(function() { - this.field = new Blockly.FieldDropdown( - [['a', 'A'], ['b', 'B'], ['c', 'C']]); - }); - runSetValueTests( - validValueSetValueTestCases, invalidValueSetValueTestCases, 'A', 'a'); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('B'); - assertFieldValue(this.field, 'B', 'b'); - }); - }); - - suite('Validators', function() { - setup(function() { - this.dropdownField = new Blockly.FieldDropdown([ - ["1a", "1A"], ["1b", "1B"], ["1c", "1C"], - ["2a", "2A"], ["2b", "2B"], ["2c", "2C"]]); - }); - teardown(function() { - this.dropdownField.setValidator(null); - }); - suite('Null Validator', function() { - setup(function() { - this.dropdownField.setValidator(function() { - return null; - }); - }); - test('New Value', function() { - this.dropdownField.setValue('1B'); - assertFieldValue(this.dropdownField, '1A', '1a'); - }); - }); - suite('Force 1s Validator', function() { - setup(function() { - this.dropdownField.setValidator(function(newValue) { - return '1' + newValue.charAt(1); - }); - }); - test('New Value', function() { - this.dropdownField.setValue('2B'); - assertFieldValue(this.dropdownField, '1B', '1b'); - }); - }); - suite('Returns Undefined Validator', function() { - setup(function() { - this.dropdownField.setValidator(function() {}); - }); - test('New Value', function() { - this.dropdownField.setValue('1B'); - assertFieldValue(this.dropdownField, '1B', '1b'); - }); - }); - }); - - suite('Serialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - - - this.assertValue = (value, field) => { - const block = this.workspace.newBlock('row_block'); - field.setValue(value); - block.getInput('INPUT').appendField(field, 'DROPDOWN'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual(jso['fields'], {'DROPDOWN': value}); - }; - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Simple', function() { - const field = new Blockly.FieldDropdown( - [['apple', 'A'], ['ball', 'B'], ['carrot', 'C']]); - this.assertValue('C', field); - }); - - test('Dynamic', function() { - const field = new Blockly.FieldDropdown( - () => [['apple', 'A'], ['ball', 'B'], ['carrot', 'C']]); - this.assertValue('C', field); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldDropdown'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Dropdown Fields', function() { + setup(function() { + sharedTestSetup.call(this); + + // Invalid value test are expected to log errors. + const nativeConsoleError = console.error; + this.nativeConsoleError = nativeConsoleError; + console.error = function(msg) { + if (!msg.includes('Each FieldDropdown option')) { + nativeConsoleError.call(this, ...arguments); + } + }; + }); + teardown(function() { + console.error = this.nativeConsoleError; + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueCreationTestCases = [ + {title: 'Undefined', args: [undefined]}, + {title: 'Array Items not Arrays', args: [undefined]}, + {title: 'Array Items with Invalid IDs', + args: [[['1', 1], ['2', 2], ['3', 3]]]}, + {title: 'Array Items with Invalid Content', + args: [[[1, '1'], [2, '2'], [3, '3']]]}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueCreationTestCases = [ + {title: 'Text Dropdown', value: 'A', expectedValue: 'A', expectedText: 'a', + args: [[['a', 'A'], ['b', 'B'], ['c', 'C']]]}, + {title: 'Image Dropdown', value: 'A', expectedValue: 'A', expectedText: 'a', + args: [[ + [{src: 'scrA', alt: 'a'}, 'A'], + [{src: 'scrB', alt: 'b'}, 'B'], + [{src: 'scrC', alt: 'c'}, 'C']]]}, + {title: 'Dynamic Text Dropdown', value: 'A', expectedValue: 'A', expectedText: 'a', + args: [() => { + return [['a', 'A'], ['b', 'B'], ['c', 'C']]; + }]}, + {title: 'Dynamic Image Dropdown', value: 'A', expectedValue: 'A', expectedText: 'a', + args: [() => { + return [ + [{src: 'scrA', alt: 'a'}, 'A'], + [{src: 'scrB', alt: 'b'}, 'B'], + [{src: 'scrC', alt: 'c'}, 'C']]; + }]}, + ]; + const addJson = function(testCase) { + testCase.json = {'options': testCase.args[0]}; + }; + invalidValueCreationTestCases.forEach(addJson); + validValueCreationTestCases.forEach(addJson); + + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldDropdown} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue(field, testCase.expectedValue, testCase.expectedText); + }; + + runConstructorSuiteTests( + Blockly.FieldDropdown, validValueCreationTestCases, + invalidValueCreationTestCases, validTestCaseAssertField); + + runFromJsonSuiteTests( + Blockly.FieldDropdown, validValueCreationTestCases, + invalidValueCreationTestCases, validTestCaseAssertField); + + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueSetValueTestCases = [ + {title: 'Null', value: null}, + {title: 'Undefined', value: undefined}, + {title: 'Invalid ID', value: 'bad'}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueSetValueTestCases = [ + {title: 'Valid ID', value: 'B', expectedValue: 'B', expectedText: 'b'}, + ]; + + suite('setValue', function() { + setup(function() { + this.field = new Blockly.FieldDropdown( + [['a', 'A'], ['b', 'B'], ['c', 'C']]); + }); + runSetValueTests( + validValueSetValueTestCases, invalidValueSetValueTestCases, 'A', 'a'); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('B'); + assertFieldValue(this.field, 'B', 'b'); + }); + }); + + suite('Validators', function() { + setup(function() { + this.dropdownField = new Blockly.FieldDropdown([ + ["1a", "1A"], ["1b", "1B"], ["1c", "1C"], + ["2a", "2A"], ["2b", "2B"], ["2c", "2C"]]); + }); + teardown(function() { + this.dropdownField.setValidator(null); + }); + suite('Null Validator', function() { + setup(function() { + this.dropdownField.setValidator(function() { + return null; + }); + }); + test('New Value', function() { + this.dropdownField.setValue('1B'); + assertFieldValue(this.dropdownField, '1A', '1a'); + }); + }); + suite('Force 1s Validator', function() { + setup(function() { + this.dropdownField.setValidator(function(newValue) { + return '1' + newValue.charAt(1); + }); + }); + test('New Value', function() { + this.dropdownField.setValue('2B'); + assertFieldValue(this.dropdownField, '1B', '1b'); + }); + }); + suite('Returns Undefined Validator', function() { + setup(function() { + this.dropdownField.setValidator(function() {}); + }); + test('New Value', function() { + this.dropdownField.setValue('1B'); + assertFieldValue(this.dropdownField, '1B', '1b'); + }); + }); + }); + + suite('Serialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + + + this.assertValue = (value, field) => { + const block = this.workspace.newBlock('row_block'); + field.setValue(value); + block.getInput('INPUT').appendField(field, 'DROPDOWN'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual(jso['fields'], {'DROPDOWN': value}); + }; + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Simple', function() { + const field = new Blockly.FieldDropdown( + [['apple', 'A'], ['ball', 'B'], ['carrot', 'C']]); + this.assertValue('C', field); + }); + + test('Dynamic', function() { + const field = new Blockly.FieldDropdown( + () => [['apple', 'A'], ['ball', 'B'], ['carrot', 'C']]); + this.assertValue('C', field); + }); + }); +}); diff --git a/tests/mocha/field_image_test.js b/tests/mocha/field_image_test.js index 62826398a70..1c602860294 100644 --- a/tests/mocha/field_image_test.js +++ b/tests/mocha/field_image_test.js @@ -1,200 +1,200 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldImage'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Image Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - {title: 'Undefined Src', value: undefined, args: [undefined, 1, 1]}, - {title: 'Undefined Size', value: 'src', args: ['src', undefined, undefined]}, - {title: 'Zero Size', value: 'src', args: ['src', 0, 0]}, - {title: 'Non-Parsable String for Size', value: 'src', args: ['src', 'bad', 'bad']}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueCreationTestCases = [ - {title: 'With Alt', value: 'src', expectedValue: 'src', - args: ['src', 1, 1, 'alt'], expectedText: 'alt'}, - {title: 'Without Alt', value: 'src', expectedValue: 'src', - args: ['src', 1, 1], expectedText: ''}, - ]; - /** - * Adds json property to test cases based on args property. - * @param {!Array} testCase The test case to modify. - */ - const addJson = function(testCase) { - testCase.json = {'src': testCase.args[0], 'width': testCase.args[1], - 'height': testCase.args[2]}; - if (testCase.args[3]) { - testCase.json['alt'] = testCase.args[3]; - } - }; - invalidValueTestCases.forEach(addJson); - validValueCreationTestCases.forEach(addJson); - - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldImage} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue(field, testCase.expectedValue, testCase.expectedText); - }; - - runConstructorSuiteTests( - Blockly.FieldImage, validValueCreationTestCases, invalidValueTestCases, - validTestCaseAssertField); - - runFromJsonSuiteTests( - Blockly.FieldImage, validValueCreationTestCases, invalidValueTestCases, - validTestCaseAssertField); - - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueSetValueTestCases = [ - {title: 'Good src', value: 'newSrc', expectedValue: 'newSrc', - expectedText: 'alt'}, - ]; - - suite('setValue', function() { - setup(function() { - this.field = new Blockly.FieldImage('src', 1, 1, 'alt'); - }); - runSetValueTests( - validValueSetValueTestCases, invalidValueTestCases, 'src', 'alt'); - }); - - suite('Customizations', function() { - suite('On Click Handler', function() { - setup(function() { - this.onClick = function() { - console.log('on click'); - }; - }); - test('JS Constructor', function() { - const field = new Blockly.FieldImage('src', 10, 10, null, this.onClick); - chai.assert.equal(field.clickHandler_, this.onClick); - }); - test('setOnClickHandler', function() { - const field = new Blockly.FieldImage('src', 10, 10); - field.setOnClickHandler(this.onClick); - chai.assert.equal(field.clickHandler_, this.onClick); - }); - test('Remove Click Handler', function() { - const field = new Blockly.FieldImage('src', 10, 10, null, this.onClick); - field.setOnClickHandler(null); - chai.assert.isNull(field.clickHandler_); - }); - }); - suite('Alt', function() { - test('JS Constructor', function() { - const field = new Blockly.FieldImage('src', 10, 10, 'alt'); - chai.assert.equal(field.altText_, 'alt'); - }); - test('JSON Definition', function() { - const field = Blockly.FieldImage.fromJson({ - src: 'src', - width: 10, - height: 10, - alt: 'alt', - }); - chai.assert.equal(field.altText_, 'alt'); - }); - suite('SetAlt', function() { - setup(function() { - this.imageField = new Blockly.FieldImage('src', 10, 10, 'alt'); - }); - test('Null', function() { - this.imageField.setAlt(null); - assertFieldValue(this.imageField, 'src', ''); - }); - test('Empty String', function() { - this.imageField.setAlt(''); - assertFieldValue(this.imageField, 'src', ''); - }); - test('Good Alt', function() { - this.imageField.setAlt('newAlt'); - assertFieldValue(this.imageField, 'src', 'newAlt'); - }); - }); - test('JS Configuration - Simple', function() { - const field = new Blockly.FieldImage('src', 10, 10, null, null, null, { - alt: 'alt', - }); - chai.assert.equal(field.altText_, 'alt'); - }); - test('JS Configuration - Ignore', function() { - const field = new Blockly.FieldImage('src', 10, 10, 'alt', null, null, { - alt: 'configAlt', - }); - chai.assert.equal(field.altText_, 'configAlt'); - }); - test('JS Configuration - Ignore - \'\'', function() { - const field = new Blockly.FieldImage('src', 10, 10, '', null, null, { - alt: 'configAlt', - }); - chai.assert.equal(field.altText_, 'configAlt'); - }); - test('JS Configuration - Ignore - Config \'\'', function() { - const field = new Blockly.FieldImage('src', 10, 10, 'alt', null, null, { - alt: '', - }); - chai.assert.equal(field.altText_, ''); - }); - }); - suite('Flip RTL', function() { - test('JS Constructor', function() { - const field = new Blockly.FieldImage('src', 10, 10, null, null, true); - chai.assert.isTrue(field.getFlipRtl()); - }); - test('JSON Definition', function() { - const field = Blockly.FieldImage.fromJson({ - src: 'src', - width: 10, - height: 10, - flipRtl: true, - }); - chai.assert.isTrue(field.getFlipRtl()); - }); - test('JS Configuration - Simple', function() { - const field = new Blockly.FieldImage('src', 10, 10, null, null, null, { - flipRtl: true, - }); - chai.assert.isTrue(field.getFlipRtl()); - }); - test('JS Configuration - Ignore - True', function() { - const field = new Blockly.FieldImage('src', 10, 10, null, null, true, { - flipRtl: false, - }); - chai.assert.isFalse(field.getFlipRtl()); - }); - test('JS Configuration - Ignore - False', function() { - const field = new Blockly.FieldImage('src', 10, 10, null, null, false, { - flipRtl: true, - }); - chai.assert.isTrue(field.getFlipRtl()); - }); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldImage'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Image Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + {title: 'Undefined Src', value: undefined, args: [undefined, 1, 1]}, + {title: 'Undefined Size', value: 'src', args: ['src', undefined, undefined]}, + {title: 'Zero Size', value: 'src', args: ['src', 0, 0]}, + {title: 'Non-Parsable String for Size', value: 'src', args: ['src', 'bad', 'bad']}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueCreationTestCases = [ + {title: 'With Alt', value: 'src', expectedValue: 'src', + args: ['src', 1, 1, 'alt'], expectedText: 'alt'}, + {title: 'Without Alt', value: 'src', expectedValue: 'src', + args: ['src', 1, 1], expectedText: ''}, + ]; + /** + * Adds json property to test cases based on args property. + * @param {!Array} testCase The test case to modify. + */ + const addJson = function(testCase) { + testCase.json = {'src': testCase.args[0], 'width': testCase.args[1], + 'height': testCase.args[2]}; + if (testCase.args[3]) { + testCase.json['alt'] = testCase.args[3]; + } + }; + invalidValueTestCases.forEach(addJson); + validValueCreationTestCases.forEach(addJson); + + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldImage} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue(field, testCase.expectedValue, testCase.expectedText); + }; + + runConstructorSuiteTests( + Blockly.FieldImage, validValueCreationTestCases, invalidValueTestCases, + validTestCaseAssertField); + + runFromJsonSuiteTests( + Blockly.FieldImage, validValueCreationTestCases, invalidValueTestCases, + validTestCaseAssertField); + + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueSetValueTestCases = [ + {title: 'Good src', value: 'newSrc', expectedValue: 'newSrc', + expectedText: 'alt'}, + ]; + + suite('setValue', function() { + setup(function() { + this.field = new Blockly.FieldImage('src', 1, 1, 'alt'); + }); + runSetValueTests( + validValueSetValueTestCases, invalidValueTestCases, 'src', 'alt'); + }); + + suite('Customizations', function() { + suite('On Click Handler', function() { + setup(function() { + this.onClick = function() { + console.log('on click'); + }; + }); + test('JS Constructor', function() { + const field = new Blockly.FieldImage('src', 10, 10, null, this.onClick); + chai.assert.equal(field.clickHandler_, this.onClick); + }); + test('setOnClickHandler', function() { + const field = new Blockly.FieldImage('src', 10, 10); + field.setOnClickHandler(this.onClick); + chai.assert.equal(field.clickHandler_, this.onClick); + }); + test('Remove Click Handler', function() { + const field = new Blockly.FieldImage('src', 10, 10, null, this.onClick); + field.setOnClickHandler(null); + chai.assert.isNull(field.clickHandler_); + }); + }); + suite('Alt', function() { + test('JS Constructor', function() { + const field = new Blockly.FieldImage('src', 10, 10, 'alt'); + chai.assert.equal(field.altText_, 'alt'); + }); + test('JSON Definition', function() { + const field = Blockly.FieldImage.fromJson({ + src: 'src', + width: 10, + height: 10, + alt: 'alt', + }); + chai.assert.equal(field.altText_, 'alt'); + }); + suite('SetAlt', function() { + setup(function() { + this.imageField = new Blockly.FieldImage('src', 10, 10, 'alt'); + }); + test('Null', function() { + this.imageField.setAlt(null); + assertFieldValue(this.imageField, 'src', ''); + }); + test('Empty String', function() { + this.imageField.setAlt(''); + assertFieldValue(this.imageField, 'src', ''); + }); + test('Good Alt', function() { + this.imageField.setAlt('newAlt'); + assertFieldValue(this.imageField, 'src', 'newAlt'); + }); + }); + test('JS Configuration - Simple', function() { + const field = new Blockly.FieldImage('src', 10, 10, null, null, null, { + alt: 'alt', + }); + chai.assert.equal(field.altText_, 'alt'); + }); + test('JS Configuration - Ignore', function() { + const field = new Blockly.FieldImage('src', 10, 10, 'alt', null, null, { + alt: 'configAlt', + }); + chai.assert.equal(field.altText_, 'configAlt'); + }); + test('JS Configuration - Ignore - \'\'', function() { + const field = new Blockly.FieldImage('src', 10, 10, '', null, null, { + alt: 'configAlt', + }); + chai.assert.equal(field.altText_, 'configAlt'); + }); + test('JS Configuration - Ignore - Config \'\'', function() { + const field = new Blockly.FieldImage('src', 10, 10, 'alt', null, null, { + alt: '', + }); + chai.assert.equal(field.altText_, ''); + }); + }); + suite('Flip RTL', function() { + test('JS Constructor', function() { + const field = new Blockly.FieldImage('src', 10, 10, null, null, true); + chai.assert.isTrue(field.getFlipRtl()); + }); + test('JSON Definition', function() { + const field = Blockly.FieldImage.fromJson({ + src: 'src', + width: 10, + height: 10, + flipRtl: true, + }); + chai.assert.isTrue(field.getFlipRtl()); + }); + test('JS Configuration - Simple', function() { + const field = new Blockly.FieldImage('src', 10, 10, null, null, null, { + flipRtl: true, + }); + chai.assert.isTrue(field.getFlipRtl()); + }); + test('JS Configuration - Ignore - True', function() { + const field = new Blockly.FieldImage('src', 10, 10, null, null, true, { + flipRtl: false, + }); + chai.assert.isFalse(field.getFlipRtl()); + }); + test('JS Configuration - Ignore - False', function() { + const field = new Blockly.FieldImage('src', 10, 10, null, null, false, { + flipRtl: true, + }); + chai.assert.isTrue(field.getFlipRtl()); + }); + }); + }); +}); diff --git a/tests/mocha/field_label_serializable_test.js b/tests/mocha/field_label_serializable_test.js index b5ba42824a2..fcc52fdfce6 100644 --- a/tests/mocha/field_label_serializable_test.js +++ b/tests/mocha/field_label_serializable_test.js @@ -1,214 +1,214 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldLabelSerialization'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); - - -suite('Label Serializable Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - {title: 'Undefined', value: undefined}, - {title: 'Null', value: null}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueTestCases = [ - {title: 'String', value: 'value', expectedValue: 'value'}, - {title: 'Boolean true', value: true, expectedValue: 'true'}, - {title: 'Boolean false', value: false, expectedValue: 'false'}, - {title: 'Number (Truthy)', value: 1, expectedValue: '1'}, - {title: 'Number (Falsy)', value: 0, expectedValue: '0'}, - {title: 'NaN', value: NaN, expectedValue: 'NaN'}, - ]; - const addArgsAndJson = function(testCase) { - testCase.args = [testCase.value]; - testCase.json = {'text': testCase.value}; - }; - invalidValueTestCases.forEach(addArgsAndJson); - validValueTestCases.forEach(addArgsAndJson); - - /** - * The expected default value for the field being tested. - * @type {*} - */ - const defaultFieldValue = ''; - /** - * Asserts that the field property values are set to default. - * @param {!Blockly.FieldLabelSerializable} field The field to check. - */ - const assertFieldDefault = function(field) { - assertFieldValue(field, defaultFieldValue); - }; - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldLabelSerializable} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue(field, testCase.expectedValue); - }; - - runConstructorSuiteTests( - Blockly.FieldLabelSerializable, validValueTestCases, - invalidValueTestCases, validTestCaseAssertField, assertFieldDefault); - - runFromJsonSuiteTests( - Blockly.FieldLabelSerializable, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - suite('setValue', function() { - suite('Empty -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldLabelSerializable(); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, defaultFieldValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('value'); - assertFieldValue(this.field, 'value'); - }); - }); - suite('Value -> New Value', function() { - const initialValue = 'oldValue'; - setup(function() { - this.field = new Blockly.FieldLabelSerializable(initialValue); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, initialValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('value'); - assertFieldValue(this.field, 'value'); - }); - }); - }); - - suite('Customizations', function() { - function assertHasClass(labelField, cssClass) { - labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( - Blockly.utils.Svg.G, {}, null); - labelField.constants_ = { - FIELD_TEXT_BASELINE_Y: 13, - }; - labelField.initView(); - chai.assert.isTrue(Blockly.utils.dom.hasClass( - labelField.textElement_, cssClass)); - } - function assertDoesNotHaveClass(labelField, cssClass) { - labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( - Blockly.utils.Svg.G, {}, null); - labelField.constants_ = { - FIELD_TEXT_BASELINE_Y: 13, - }; - labelField.initView(); - chai.assert.isFalse(Blockly.utils.dom.hasClass( - labelField.textElement_, cssClass)); - } - test('JS Constructor', function() { - const field = new Blockly.FieldLabelSerializable('text', 'testClass'); - assertHasClass(field, 'testClass'); - }); - test('JSON Definition', function() { - const field = Blockly.FieldLabelSerializable.fromJson({ - class: 'testClass', - }); - assertHasClass(field, 'testClass'); - }); - test('JS Configuration - Simple', function() { - const field = new Blockly.FieldLabelSerializable('text', null, { - class: 'testClass', - }); - assertHasClass(field, 'testClass'); - }); - test('JS Configuration - Ignore', function() { - const field = new Blockly.FieldLabelSerializable('text', 'paramClass', { - class: 'configClass', - }); - assertDoesNotHaveClass(field, 'paramClass'); - assertHasClass(field, 'configClass'); - }); - test('JS Configuration - Ignore - \'\'', function() { - const field = new Blockly.FieldLabelSerializable('text', '', { - class: 'configClass', - }); - assertHasClass(field, 'configClass'); - }); - test('JS Configuration - Ignore - Config \'\'', function() { - const field = new Blockly.FieldLabelSerializable('text', 'paramClass', { - class: '', - }); - assertDoesNotHaveClass(field, 'paramClass'); - }); - suite('setClass', function() { - test('setClass', function() { - const field = new Blockly.FieldLabelSerializable(); - field.fieldGroup_ = Blockly.utils.dom.createSvgElement( - Blockly.utils.Svg.G, {}, null); - field.constants_ = { - FIELD_TEXT_BASELINE_Y: 13, - }; - field.initView(); - field.setClass('testClass'); - // Don't call assertHasClass b/c we don't want to re-initialize. - chai.assert.isTrue(Blockly.utils.dom.hasClass( - field.textElement_, 'testClass')); - }); - test('setClass Before Initialization', function() { - const field = new Blockly.FieldLabelSerializable(); - field.setClass('testClass'); - assertHasClass(field, 'testClass'); - }); - test('Remove Class', function() { - const field = new Blockly.FieldLabelSerializable('text', null, { - class: 'testClass', - }); - assertHasClass(field, 'testClass'); - field.setClass(null); - chai.assert.isFalse(Blockly.utils.dom.hasClass( - field.textElement_, 'testClass')); - }); - }); - }); - - suite('Serialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - - this.assertValue = (value) => { - const block = this.workspace.newBlock('row_block'); - const field = new Blockly.FieldLabelSerializable(value); - block.getInput('INPUT').appendField(field, 'LABEL'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual(jso['fields'], {'LABEL': value}); - }; - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Simple', function() { - this.assertValue('test label'); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldLabelSerialization'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); + + +suite('Label Serializable Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + {title: 'Undefined', value: undefined}, + {title: 'Null', value: null}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueTestCases = [ + {title: 'String', value: 'value', expectedValue: 'value'}, + {title: 'Boolean true', value: true, expectedValue: 'true'}, + {title: 'Boolean false', value: false, expectedValue: 'false'}, + {title: 'Number (Truthy)', value: 1, expectedValue: '1'}, + {title: 'Number (Falsy)', value: 0, expectedValue: '0'}, + {title: 'NaN', value: NaN, expectedValue: 'NaN'}, + ]; + const addArgsAndJson = function(testCase) { + testCase.args = [testCase.value]; + testCase.json = {'text': testCase.value}; + }; + invalidValueTestCases.forEach(addArgsAndJson); + validValueTestCases.forEach(addArgsAndJson); + + /** + * The expected default value for the field being tested. + * @type {*} + */ + const defaultFieldValue = ''; + /** + * Asserts that the field property values are set to default. + * @param {!Blockly.FieldLabelSerializable} field The field to check. + */ + const assertFieldDefault = function(field) { + assertFieldValue(field, defaultFieldValue); + }; + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldLabelSerializable} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue(field, testCase.expectedValue); + }; + + runConstructorSuiteTests( + Blockly.FieldLabelSerializable, validValueTestCases, + invalidValueTestCases, validTestCaseAssertField, assertFieldDefault); + + runFromJsonSuiteTests( + Blockly.FieldLabelSerializable, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + suite('setValue', function() { + suite('Empty -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldLabelSerializable(); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, defaultFieldValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('value'); + assertFieldValue(this.field, 'value'); + }); + }); + suite('Value -> New Value', function() { + const initialValue = 'oldValue'; + setup(function() { + this.field = new Blockly.FieldLabelSerializable(initialValue); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, initialValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('value'); + assertFieldValue(this.field, 'value'); + }); + }); + }); + + suite('Customizations', function() { + function assertHasClass(labelField, cssClass) { + labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); + labelField.constants_ = { + FIELD_TEXT_BASELINE_Y: 13, + }; + labelField.initView(); + chai.assert.isTrue(Blockly.utils.dom.hasClass( + labelField.textElement_, cssClass)); + } + function assertDoesNotHaveClass(labelField, cssClass) { + labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); + labelField.constants_ = { + FIELD_TEXT_BASELINE_Y: 13, + }; + labelField.initView(); + chai.assert.isFalse(Blockly.utils.dom.hasClass( + labelField.textElement_, cssClass)); + } + test('JS Constructor', function() { + const field = new Blockly.FieldLabelSerializable('text', 'testClass'); + assertHasClass(field, 'testClass'); + }); + test('JSON Definition', function() { + const field = Blockly.FieldLabelSerializable.fromJson({ + class: 'testClass', + }); + assertHasClass(field, 'testClass'); + }); + test('JS Configuration - Simple', function() { + const field = new Blockly.FieldLabelSerializable('text', null, { + class: 'testClass', + }); + assertHasClass(field, 'testClass'); + }); + test('JS Configuration - Ignore', function() { + const field = new Blockly.FieldLabelSerializable('text', 'paramClass', { + class: 'configClass', + }); + assertDoesNotHaveClass(field, 'paramClass'); + assertHasClass(field, 'configClass'); + }); + test('JS Configuration - Ignore - \'\'', function() { + const field = new Blockly.FieldLabelSerializable('text', '', { + class: 'configClass', + }); + assertHasClass(field, 'configClass'); + }); + test('JS Configuration - Ignore - Config \'\'', function() { + const field = new Blockly.FieldLabelSerializable('text', 'paramClass', { + class: '', + }); + assertDoesNotHaveClass(field, 'paramClass'); + }); + suite('setClass', function() { + test('setClass', function() { + const field = new Blockly.FieldLabelSerializable(); + field.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); + field.constants_ = { + FIELD_TEXT_BASELINE_Y: 13, + }; + field.initView(); + field.setClass('testClass'); + // Don't call assertHasClass b/c we don't want to re-initialize. + chai.assert.isTrue(Blockly.utils.dom.hasClass( + field.textElement_, 'testClass')); + }); + test('setClass Before Initialization', function() { + const field = new Blockly.FieldLabelSerializable(); + field.setClass('testClass'); + assertHasClass(field, 'testClass'); + }); + test('Remove Class', function() { + const field = new Blockly.FieldLabelSerializable('text', null, { + class: 'testClass', + }); + assertHasClass(field, 'testClass'); + field.setClass(null); + chai.assert.isFalse(Blockly.utils.dom.hasClass( + field.textElement_, 'testClass')); + }); + }); + }); + + suite('Serialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + + this.assertValue = (value) => { + const block = this.workspace.newBlock('row_block'); + const field = new Blockly.FieldLabelSerializable(value); + block.getInput('INPUT').appendField(field, 'LABEL'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual(jso['fields'], {'LABEL': value}); + }; + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Simple', function() { + this.assertValue('test label'); + }); + }); +}); diff --git a/tests/mocha/field_label_test.js b/tests/mocha/field_label_test.js index 62f088b9617..f4bbe5618c2 100644 --- a/tests/mocha/field_label_test.js +++ b/tests/mocha/field_label_test.js @@ -1,192 +1,192 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldLabel'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {createTestBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); - - -suite('Label Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - {title: 'Undefined', value: undefined}, - {title: 'Null', value: null}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueTestCases = [ - {title: 'String', value: 'value', expectedValue: 'value'}, - {title: 'Boolean true', value: true, expectedValue: 'true'}, - {title: 'Boolean false', value: false, expectedValue: 'false'}, - {title: 'Number (Truthy)', value: 1, expectedValue: '1'}, - {title: 'Number (Falsy)', value: 0, expectedValue: '0'}, - {title: 'NaN', value: NaN, expectedValue: 'NaN'}, - ]; - const addArgsAndJson = function(testCase) { - testCase.args = [testCase.value]; - testCase.json = {'text': testCase.value}; - }; - invalidValueTestCases.forEach(addArgsAndJson); - validValueTestCases.forEach(addArgsAndJson); - - /** - * The expected default value for the field being tested. - * @type {*} - */ - const defaultFieldValue = ''; - /** - * Asserts that the field property values are set to default. - * @param {!Blockly.FieldLabel} field The field to check. - */ - const assertFieldDefault = function(field) { - assertFieldValue(field, defaultFieldValue); - }; - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldLabel} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue(field, testCase.expectedValue); - }; - - runConstructorSuiteTests( - Blockly.FieldLabel, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - runFromJsonSuiteTests( - Blockly.FieldLabel, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - suite('setValue', function() { - suite('Empty -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldLabel(); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, defaultFieldValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('value'); - assertFieldValue(this.field, 'value'); - }); - }); - suite('Value -> New Value', function() { - const initialValue = 'oldValue'; - setup(function() { - this.field = new Blockly.FieldLabel(initialValue); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, initialValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('value'); - assertFieldValue(this.field, 'value'); - }); - }); - }); - - suite('Customizations', function() { - function assertHasClass(labelField, cssClass) { - labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( - Blockly.utils.Svg.G, {}, null); - labelField.constants_ = { - FIELD_TEXT_BASELINE_Y: 13, - }; - labelField.initView(); - chai.assert.isTrue(Blockly.utils.dom.hasClass( - labelField.textElement_, cssClass)); - } - function assertDoesNotHaveClass(labelField, cssClass) { - labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( - Blockly.utils.Svg.G, {}, null); - labelField.constants_ = { - FIELD_TEXT_BASELINE_Y: 13, - }; - labelField.initView(); - chai.assert.isFalse(Blockly.utils.dom.hasClass( - labelField.textElement_, cssClass)); - } - - test('JS Constructor', function() { - const field = new Blockly.FieldLabel('text', 'testClass'); - assertHasClass(field, 'testClass'); - }); - test('JSON Definition', function() { - const field = Blockly.FieldLabel.fromJson({ - class: 'testClass', - }); - assertHasClass(field, 'testClass'); - }); - test('JS Configuration - Simple', function() { - const field = new Blockly.FieldLabel('text', null, { - class: 'testClass', - }); - assertHasClass(field, 'testClass'); - }); - test('JS Configuration - Ignore', function() { - const field = new Blockly.FieldLabel('text', 'paramClass', { - class: 'configClass', - }); - assertDoesNotHaveClass(field, 'paramClass'); - assertHasClass(field, 'configClass'); - }); - test('JS Configuration - Ignore - \'\'', function() { - const field = new Blockly.FieldLabel('text', '', { - class: 'configClass', - }); - assertHasClass(field, 'configClass'); - }); - test('JS Configuration - Ignore - Config \'\'', function() { - const field = new Blockly.FieldLabel('text', 'paramClass', { - class: '', - }); - assertDoesNotHaveClass(field, 'paramClass'); - }); - suite('setClass', function() { - test('setClass', function() { - const field = new Blockly.FieldLabel(); - field.fieldGroup_ = Blockly.utils.dom.createSvgElement( - Blockly.utils.Svg.G, {}, null); - field.constants_ = { - FIELD_TEXT_BASELINE_Y: 13, - }; - field.initView(); - field.setClass('testClass'); - // Don't call assertHasClass b/c we don't want to re-initialize. - chai.assert.isTrue(Blockly.utils.dom.hasClass( - field.textElement_, 'testClass')); - }); - test('setClass Before Initialization', function() { - const field = new Blockly.FieldLabel(); - field.setClass('testClass'); - assertHasClass(field, 'testClass'); - }); - test('Remove Class', function() { - const field = new Blockly.FieldLabel('text', null, { - class: 'testClass', - }); - assertHasClass(field, 'testClass'); - field.setClass(null); - chai.assert.isFalse(Blockly.utils.dom.hasClass( - field.textElement_, 'testClass')); - }); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldLabel'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {createTestBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); + + +suite('Label Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + {title: 'Undefined', value: undefined}, + {title: 'Null', value: null}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueTestCases = [ + {title: 'String', value: 'value', expectedValue: 'value'}, + {title: 'Boolean true', value: true, expectedValue: 'true'}, + {title: 'Boolean false', value: false, expectedValue: 'false'}, + {title: 'Number (Truthy)', value: 1, expectedValue: '1'}, + {title: 'Number (Falsy)', value: 0, expectedValue: '0'}, + {title: 'NaN', value: NaN, expectedValue: 'NaN'}, + ]; + const addArgsAndJson = function(testCase) { + testCase.args = [testCase.value]; + testCase.json = {'text': testCase.value}; + }; + invalidValueTestCases.forEach(addArgsAndJson); + validValueTestCases.forEach(addArgsAndJson); + + /** + * The expected default value for the field being tested. + * @type {*} + */ + const defaultFieldValue = ''; + /** + * Asserts that the field property values are set to default. + * @param {!Blockly.FieldLabel} field The field to check. + */ + const assertFieldDefault = function(field) { + assertFieldValue(field, defaultFieldValue); + }; + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldLabel} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue(field, testCase.expectedValue); + }; + + runConstructorSuiteTests( + Blockly.FieldLabel, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + runFromJsonSuiteTests( + Blockly.FieldLabel, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + suite('setValue', function() { + suite('Empty -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldLabel(); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, defaultFieldValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('value'); + assertFieldValue(this.field, 'value'); + }); + }); + suite('Value -> New Value', function() { + const initialValue = 'oldValue'; + setup(function() { + this.field = new Blockly.FieldLabel(initialValue); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, initialValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('value'); + assertFieldValue(this.field, 'value'); + }); + }); + }); + + suite('Customizations', function() { + function assertHasClass(labelField, cssClass) { + labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); + labelField.constants_ = { + FIELD_TEXT_BASELINE_Y: 13, + }; + labelField.initView(); + chai.assert.isTrue(Blockly.utils.dom.hasClass( + labelField.textElement_, cssClass)); + } + function assertDoesNotHaveClass(labelField, cssClass) { + labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); + labelField.constants_ = { + FIELD_TEXT_BASELINE_Y: 13, + }; + labelField.initView(); + chai.assert.isFalse(Blockly.utils.dom.hasClass( + labelField.textElement_, cssClass)); + } + + test('JS Constructor', function() { + const field = new Blockly.FieldLabel('text', 'testClass'); + assertHasClass(field, 'testClass'); + }); + test('JSON Definition', function() { + const field = Blockly.FieldLabel.fromJson({ + class: 'testClass', + }); + assertHasClass(field, 'testClass'); + }); + test('JS Configuration - Simple', function() { + const field = new Blockly.FieldLabel('text', null, { + class: 'testClass', + }); + assertHasClass(field, 'testClass'); + }); + test('JS Configuration - Ignore', function() { + const field = new Blockly.FieldLabel('text', 'paramClass', { + class: 'configClass', + }); + assertDoesNotHaveClass(field, 'paramClass'); + assertHasClass(field, 'configClass'); + }); + test('JS Configuration - Ignore - \'\'', function() { + const field = new Blockly.FieldLabel('text', '', { + class: 'configClass', + }); + assertHasClass(field, 'configClass'); + }); + test('JS Configuration - Ignore - Config \'\'', function() { + const field = new Blockly.FieldLabel('text', 'paramClass', { + class: '', + }); + assertDoesNotHaveClass(field, 'paramClass'); + }); + suite('setClass', function() { + test('setClass', function() { + const field = new Blockly.FieldLabel(); + field.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); + field.constants_ = { + FIELD_TEXT_BASELINE_Y: 13, + }; + field.initView(); + field.setClass('testClass'); + // Don't call assertHasClass b/c we don't want to re-initialize. + chai.assert.isTrue(Blockly.utils.dom.hasClass( + field.textElement_, 'testClass')); + }); + test('setClass Before Initialization', function() { + const field = new Blockly.FieldLabel(); + field.setClass('testClass'); + assertHasClass(field, 'testClass'); + }); + test('Remove Class', function() { + const field = new Blockly.FieldLabel('text', null, { + class: 'testClass', + }); + assertHasClass(field, 'testClass'); + field.setClass(null); + chai.assert.isFalse(Blockly.utils.dom.hasClass( + field.textElement_, 'testClass')); + }); + }); + }); +}); diff --git a/tests/mocha/field_multilineinput_test.js b/tests/mocha/field_multilineinput_test.js index 6096384fe08..a0901fc2bbc 100644 --- a/tests/mocha/field_multilineinput_test.js +++ b/tests/mocha/field_multilineinput_test.js @@ -1,191 +1,191 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldMultiline'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {runCodeGenerationTestSuites} = goog.require('Blockly.test.helpers.codeGeneration'); - - -suite('Multiline Input Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - {title: 'Undefined', value: undefined}, - {title: 'Null', value: null}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueTestCases = [ - {title: 'Empty string', value: '', expectedValue: ''}, - {title: 'String no newline', value: 'value', expectedValue: 'value'}, - {title: 'String with newline', value: 'bark bark\n bark bark bark\n bark bar bark bark\n', expectedValue: 'bark bark\n bark bark bark\n bark bar bark bark\n'}, - {title: 'Boolean true', value: true, expectedValue: 'true'}, - {title: 'Boolean false', value: false, expectedValue: 'false'}, - {title: 'Number (Truthy)', value: 1, expectedValue: '1'}, - {title: 'Number (Falsy)', value: 0, expectedValue: '0'}, - {title: 'NaN', value: NaN, expectedValue: 'NaN'}, - ]; - const addArgsAndJson = function(testCase) { - testCase.args = [testCase.value]; - testCase.json = {'text': testCase.value}; - }; - invalidValueTestCases.forEach(addArgsAndJson); - validValueTestCases.forEach(addArgsAndJson); - - /** - * The expected default value for the field being tested. - * @type {*} - */ - const defaultFieldValue = ''; - /** - * Asserts that the field property values are set to default. - * @param {!Blockly.FieldMultilineInput} field The field to check. - */ - const assertFieldDefault = function(field) { - assertFieldValue(field, defaultFieldValue); - }; - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldMultilineInput} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue(field, testCase.expectedValue); - }; - - runConstructorSuiteTests( - Blockly.FieldMultilineInput, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - runFromJsonSuiteTests( - Blockly.FieldMultilineInput, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - suite('setValue', function() { - suite('Empty -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldMultilineInput(); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, defaultFieldValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('value'); - assertFieldValue(this.field, 'value'); - }); - }); - suite('Value -> New Value', function() { - const initialValue = 'oldValue'; - setup(function() { - this.field = new Blockly.FieldMultilineInput(initialValue); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, initialValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('value'); - assertFieldValue(this.field, 'value'); - }); - }); - }); - - suite('blockToCode', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - }); - const createBlockFn = (value) => { - return (workspace) => { - const block = workspace.newBlock('text_multiline'); - const textField = block.getField('TEXT'); - textField.setValue(value); - return block; - }; - }; - - /** - * Test suites for code generation tests.s - * @type {Array} - */ - const testSuites = [ - {title: 'Dart', generator: Blockly.Dart, - testCases: [ - {title: 'Empty string', expectedCode: '\'\'', - createBlock: createBlockFn('')}, - {title: 'String with newline', expectedCode: '\'bark bark\' + \'\\n\' + \n\' bark bark bark\' + \'\\n\' + \n\' bark bar bark bark\' + \'\\n\' + \n\'\'', - createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, - ]}, - {title: 'JavaScript', generator: Blockly.JavaScript, - testCases: [ - {title: 'Empty string', expectedCode: '\'\'', - createBlock: createBlockFn('')}, - {title: 'String with newline', expectedCode: '\'bark bark\' + \'\\n\' +\n\' bark bark bark\' + \'\\n\' +\n\' bark bar bark bark\' + \'\\n\' +\n\'\'', - createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, - ]}, - {title: 'Lua', generator: Blockly.Lua, - testCases: [ - {title: 'Empty string', expectedCode: '\'\'', - createBlock: createBlockFn('')}, - {title: 'String with newline', expectedCode: '\'bark bark\' .. \'\\n\' ..\n\' bark bark bark\' .. \'\\n\' ..\n\' bark bar bark bark\' .. \'\\n\' ..\n\'\'', - createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, - ]}, - {title: 'PHP', generator: Blockly.PHP, - testCases: [ - {title: 'Empty string', expectedCode: '\'\'', - createBlock: createBlockFn('')}, - {title: 'String with newline', expectedCode: '\'bark bark\' . "\\n" .\n\' bark bark bark\' . "\\n" .\n\' bark bar bark bark\' . "\\n" .\n\'\'', - createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, - ]}, - {title: 'Python', generator: Blockly.Python, - testCases: [ - {title: 'Empty string', expectedCode: '\'\'', - createBlock: createBlockFn('')}, - {title: 'String with newline', expectedCode: '\'bark bark\' + \'\\n\' + \n\' bark bark bark\' + \'\\n\' + \n\' bark bar bark bark\' + \'\\n\' + \n\'\'', - createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, - ]}, - ]; - runCodeGenerationTestSuites(testSuites); - }); - - suite('Serialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - - this.assertValue = (value) => { - const block = this.workspace.newBlock('row_block'); - const field = new Blockly.FieldMultilineInput(value); - block.getInput('INPUT').appendField(field, 'MULTILINE'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual(jso['fields'], {'MULTILINE': value}); - }; - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Single line', function() { - this.assertValue('this is a single line'); - }); - - test('Multiple lines', function() { - this.assertValue('this\nis\n multiple\n lines'); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldMultiline'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {runCodeGenerationTestSuites} = goog.require('Blockly.test.helpers.codeGeneration'); + + +suite('Multiline Input Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + {title: 'Undefined', value: undefined}, + {title: 'Null', value: null}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueTestCases = [ + {title: 'Empty string', value: '', expectedValue: ''}, + {title: 'String no newline', value: 'value', expectedValue: 'value'}, + {title: 'String with newline', value: 'bark bark\n bark bark bark\n bark bar bark bark\n', expectedValue: 'bark bark\n bark bark bark\n bark bar bark bark\n'}, + {title: 'Boolean true', value: true, expectedValue: 'true'}, + {title: 'Boolean false', value: false, expectedValue: 'false'}, + {title: 'Number (Truthy)', value: 1, expectedValue: '1'}, + {title: 'Number (Falsy)', value: 0, expectedValue: '0'}, + {title: 'NaN', value: NaN, expectedValue: 'NaN'}, + ]; + const addArgsAndJson = function(testCase) { + testCase.args = [testCase.value]; + testCase.json = {'text': testCase.value}; + }; + invalidValueTestCases.forEach(addArgsAndJson); + validValueTestCases.forEach(addArgsAndJson); + + /** + * The expected default value for the field being tested. + * @type {*} + */ + const defaultFieldValue = ''; + /** + * Asserts that the field property values are set to default. + * @param {!Blockly.FieldMultilineInput} field The field to check. + */ + const assertFieldDefault = function(field) { + assertFieldValue(field, defaultFieldValue); + }; + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldMultilineInput} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue(field, testCase.expectedValue); + }; + + runConstructorSuiteTests( + Blockly.FieldMultilineInput, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + runFromJsonSuiteTests( + Blockly.FieldMultilineInput, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + suite('setValue', function() { + suite('Empty -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldMultilineInput(); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, defaultFieldValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('value'); + assertFieldValue(this.field, 'value'); + }); + }); + suite('Value -> New Value', function() { + const initialValue = 'oldValue'; + setup(function() { + this.field = new Blockly.FieldMultilineInput(initialValue); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, initialValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('value'); + assertFieldValue(this.field, 'value'); + }); + }); + }); + + suite('blockToCode', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + }); + const createBlockFn = (value) => { + return (workspace) => { + const block = workspace.newBlock('text_multiline'); + const textField = block.getField('TEXT'); + textField.setValue(value); + return block; + }; + }; + + /** + * Test suites for code generation tests.s + * @type {Array} + */ + const testSuites = [ + {title: 'Dart', generator: Blockly.Dart, + testCases: [ + {title: 'Empty string', expectedCode: '\'\'', + createBlock: createBlockFn('')}, + {title: 'String with newline', expectedCode: '\'bark bark\' + \'\\n\' + \n\' bark bark bark\' + \'\\n\' + \n\' bark bar bark bark\' + \'\\n\' + \n\'\'', + createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, + ]}, + {title: 'JavaScript', generator: Blockly.JavaScript, + testCases: [ + {title: 'Empty string', expectedCode: '\'\'', + createBlock: createBlockFn('')}, + {title: 'String with newline', expectedCode: '\'bark bark\' + \'\\n\' +\n\' bark bark bark\' + \'\\n\' +\n\' bark bar bark bark\' + \'\\n\' +\n\'\'', + createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, + ]}, + {title: 'Lua', generator: Blockly.Lua, + testCases: [ + {title: 'Empty string', expectedCode: '\'\'', + createBlock: createBlockFn('')}, + {title: 'String with newline', expectedCode: '\'bark bark\' .. \'\\n\' ..\n\' bark bark bark\' .. \'\\n\' ..\n\' bark bar bark bark\' .. \'\\n\' ..\n\'\'', + createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, + ]}, + {title: 'PHP', generator: Blockly.PHP, + testCases: [ + {title: 'Empty string', expectedCode: '\'\'', + createBlock: createBlockFn('')}, + {title: 'String with newline', expectedCode: '\'bark bark\' . "\\n" .\n\' bark bark bark\' . "\\n" .\n\' bark bar bark bark\' . "\\n" .\n\'\'', + createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, + ]}, + {title: 'Python', generator: Blockly.Python, + testCases: [ + {title: 'Empty string', expectedCode: '\'\'', + createBlock: createBlockFn('')}, + {title: 'String with newline', expectedCode: '\'bark bark\' + \'\\n\' + \n\' bark bark bark\' + \'\\n\' + \n\' bark bar bark bark\' + \'\\n\' + \n\'\'', + createBlock: createBlockFn('bark bark\n bark bark bark\n bark bar bark bark\n')}, + ]}, + ]; + runCodeGenerationTestSuites(testSuites); + }); + + suite('Serialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + + this.assertValue = (value) => { + const block = this.workspace.newBlock('row_block'); + const field = new Blockly.FieldMultilineInput(value); + block.getInput('INPUT').appendField(field, 'MULTILINE'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual(jso['fields'], {'MULTILINE': value}); + }; + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Single line', function() { + this.assertValue('this is a single line'); + }); + + test('Multiple lines', function() { + this.assertValue('this\nis\n multiple\n lines'); + }); + }); +}); diff --git a/tests/mocha/field_number_test.js b/tests/mocha/field_number_test.js index fd23cc6613e..493776f1a8b 100644 --- a/tests/mocha/field_number_test.js +++ b/tests/mocha/field_number_test.js @@ -1,382 +1,382 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldNumber'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {runTestCases} = goog.require('Blockly.test.helpers.common'); - - -suite('Number Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - {title: 'Undefined', value: undefined}, - {title: 'Null', value: null}, - {title: 'NaN', value: NaN}, - {title: 'Non-Parsable String', value: 'bad'}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueTestCases = [ - {title: 'Integer', value: 1, expectedValue: 1}, - {title: 'Float', value: 1.5, expectedValue: 1.5}, - {title: 'Integer String', value: '1', expectedValue: 1}, - {title: 'Float String', value: '1.5', expectedValue: 1.5}, - {title: 'Infinity', value: Infinity, expectedValue: Infinity}, - {title: 'Negative Infinity', value: -Infinity, expectedValue: -Infinity}, - {title: 'Infinity String', value: 'Infinity', expectedValue: Infinity}, - {title: 'Negative Infinity String', value: '-Infinity', - expectedValue: -Infinity}, - ]; - const addArgsAndJson = function(testCase) { - testCase.args = Array(4).fill(testCase.value); - testCase.json = {'value': testCase.value, 'min': testCase.value, - 'max': testCase.value, 'precision': testCase.value}; - }; - invalidValueTestCases.forEach(addArgsAndJson); - validValueTestCases.forEach(addArgsAndJson); - - /** - * The expected default value for the field being tested. - * @type {*} - */ - const defaultFieldValue = 0; - /** - * Asserts that the field property values are as expected. - * @param {!Blockly.FieldNumber} field The field to check. - * @param {!number} expectedMin The expected min. - * @param {!number} expectedMax The expected max. - * @param {!number} expectedPrecision The expected precision. - * @param {!number} expectedValue The expected value. - */ - function assertNumberField(field, expectedMin, expectedMax, - expectedPrecision, expectedValue) { - assertFieldValue(field, expectedValue); - chai.assert.equal(field.getMin(), expectedMin, 'Min'); - chai.assert.equal(field.getMax(), expectedMax, 'Max'); - chai.assert.equal( - field.getPrecision(), expectedPrecision, 'Precision'); - } - /** - * Asserts that the field property values are set to default. - * @param {!Blockly.FieldNumber} field The field to check. - */ - const assertFieldDefault = function(field) { - assertNumberField(field, -Infinity, Infinity, 0, defaultFieldValue); - }; - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldNumber} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertNumberField( - field, testCase.expectedValue, testCase.expectedValue, - testCase.expectedValue, testCase.expectedValue); - }; - - runConstructorSuiteTests( - Blockly.FieldNumber, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - runFromJsonSuiteTests( - Blockly.FieldNumber, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - suite('setValue', function() { - suite('Empty -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldNumber(); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, defaultFieldValue); - }); - suite('Value -> New Value', function() { - const initialValue = 1; - setup(function() { - this.field = new Blockly.FieldNumber(initialValue); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, initialValue); - }); - suite('Constraints', function() { - const testCases = [ - {title: 'Float', json: {}, value: 123.456, expectedValue: 123.456}, - {title: '0.01', json: {precision: .01}, value: 123.456, - expectedValue: 123.46}, - {title: '1e-7', json: {precision: .0000001}, value: 123.00000456, - expectedValue: 123.0000046}, - {title: '0.5', json: {precision: .5}, value: 123.456, - expectedValue: 123.5}, - {title: '1', json: {precision: 1}, value: 123.456, - expectedValue: 123}, - {title: '1.5', json: {precision: 1.5}, value: 123.456, - expectedValue: 123}, - ]; - suite('Precision', function() { - runTestCases(testCases, function(testCase) { - return function() { - const field = Blockly.FieldNumber.fromJson(testCase.json); - field.setValue(testCase.value); - assertFieldValue(field, testCase.expectedValue); - }; - }); - test('Null', function() { - const field = Blockly.FieldNumber.fromJson({precision: null}); - chai.assert.equal(field.getPrecision(), 0); - }); - }); - const setValueBoundsTestFn = function(testCase) { - return function() { - const field = Blockly.FieldNumber.fromJson(testCase.json); - testCase.values.forEach(function(value, i) { - field.setValue(value); - assertFieldValue( - field, testCase.expectedValues[i]); - }); - }; - }; - suite('Min', function() { - const testCases = [ - {title: '-10', json: {min: -10}, values: [-20, 0, 20], - expectedValues: [-10, 0, 20]}, - {title: '0', json: {min: 0}, values: [-20, 0, 20], - expectedValues: [0, 0, 20]}, - {title: '+10', json: {min: 10}, values: [-20, 0, 20], - expectedValues: [10, 10, 20]}, - ]; - runTestCases(testCases, setValueBoundsTestFn); - test('Null', function() { - const field = Blockly.FieldNumber.fromJson({min: null}); - chai.assert.equal(field.getMin(), -Infinity); - }); - }); - suite('Max', function() { - const testCases = [ - {title: '-10', json: {max: -10}, values: [-20, 0, 20], - expectedValues: [-20, -10, -10]}, - {title: '0', json: {max: 0}, values: [-20, 0, 20], - expectedValues: [-20, 0, 0]}, - {title: '+10', json: {max: 10}, values: [-20, 0, 20], - expectedValues: [-20, 0, 10]}, - ]; - runTestCases(testCases, setValueBoundsTestFn); - test('Null', function() { - const field = Blockly.FieldNumber.fromJson({max: null}); - chai.assert.equal(field.getMax(), Infinity); - }); - }); - }); - }); - suite('Validators', function() { - setup(function() { - this.field = new Blockly.FieldNumber(1); - this.field.htmlInput_ = Object.create(null); - this.field.htmlInput_.oldValue_ = '1'; - this.field.htmlInput_.untypedDefaultValue_ = 1; - this.stub = sinon.stub(this.field, 'resizeEditor_'); - }); - teardown(function() { - sinon.restore(); - }); - const testSuites = [ - {title: 'Null Validator', - validator: - function() { - return null; - }, - value: 2, expectedValue: 1}, - {title: 'Force End with 6 Validator', - validator: - function(newValue) { - return String(newValue).replace(/.$/, '6'); - }, - value: 25, expectedValue: 26}, - {title: 'Returns Undefined Validator', validator: function() {}, value: 2, - expectedValue: 2}, - ]; - testSuites.forEach(function(suiteInfo) { - suite(suiteInfo.title, function() { - setup(function() { - this.field.setValidator(suiteInfo.validator); - }); - test('When Editing', function() { - this.field.isBeingEdited_ = true; - this.field.htmlInput_.value = String(suiteInfo.value); - this.field.onHtmlInputChange_(null); - assertFieldValue( - this.field, suiteInfo.expectedValue, String(suiteInfo.value)); - }); - test('When Not Editing', function() { - this.field.setValue(suiteInfo.value); - assertFieldValue(this.field, suiteInfo.expectedValue); - }); - }); - }); - }); - suite('Customizations', function() { - suite('Min', function() { - test('JS Constructor', function() { - const field = new Blockly.FieldNumber(0, -10); - assertNumberField(field, -10, Infinity, 0, 0); - }); - test('JSON Definition', function() { - const field = Blockly.FieldNumber.fromJson({ - min: -10, - }); - assertNumberField(field, -10, Infinity, 0, 0); - }); - test('Set Constraints', function() { - const field = new Blockly.FieldNumber(); - field.setConstraints(-10); - assertNumberField(field, -10, Infinity, 0, 0); - }); - test('Set Min', function() { - const field = new Blockly.FieldNumber(); - field.setMin(-10); - assertNumberField(field, -10, Infinity, 0, 0); - }); - test('JS Configuration - Simple', function() { - const field = new Blockly.FieldNumber( - undefined, undefined, undefined, undefined, undefined, { - min: -10, - }); - assertNumberField(field, -10, Infinity, 0, 0); - }); - test('JS Configuration - Ignore', function() { - const field = new Blockly.FieldNumber( - undefined, -1, undefined, undefined, undefined, { - min: -10, - }); - assertNumberField(field, -10, Infinity, 0, 0); - }); - }); - suite('Max', function() { - test('JS Constructor', function() { - const field = new Blockly.FieldNumber(0, undefined, 10); - assertNumberField(field, -Infinity, 10, 0, 0); - }); - test('JSON Definition', function() { - const field = Blockly.FieldNumber.fromJson({ - max: 10, - }); - assertNumberField(field, -Infinity, 10, 0, 0); - }); - test('Set Constraints', function() { - const field = new Blockly.FieldNumber(); - field.setConstraints(undefined, 10); - assertNumberField(field, -Infinity, 10, 0, 0); - }); - test('Set Max', function() { - const field = new Blockly.FieldNumber(); - field.setMax(10); - assertNumberField(field, -Infinity, 10, 0, 0); - }); - test('JS Configuration - Simple', function() { - const field = new Blockly.FieldNumber( - undefined, undefined, undefined, undefined, undefined, { - max: 10, - }); - assertNumberField(field, -Infinity, 10, 0, 0); - }); - test('JS Configuration - Ignore', function() { - const field = new Blockly.FieldNumber( - undefined, undefined, 1, undefined, undefined, { - max: 10, - }); - assertNumberField(field, -Infinity, 10, 0, 0); - }); - }); - suite('Precision', function() { - test('JS Constructor', function() { - const field = new Blockly.FieldNumber(0, undefined, undefined, 1); - assertNumberField(field, -Infinity, Infinity, 1, 0); - }); - test('JSON Definition', function() { - const field = Blockly.FieldNumber.fromJson({ - precision: 1, - }); - assertNumberField(field, -Infinity, Infinity, 1, 0); - }); - test('Set Constraints', function() { - const field = new Blockly.FieldNumber(); - field.setConstraints(undefined, undefined, 1); - assertNumberField(field, -Infinity, Infinity, 1, 0); - }); - test('Set Precision', function() { - const field = new Blockly.FieldNumber(); - field.setPrecision(1); - assertNumberField(field, -Infinity, Infinity, 1, 0); - }); - test('JS Configuration - Simple', function() { - const field = new Blockly.FieldNumber( - undefined, undefined, undefined, undefined, undefined, { - precision: 1, - }); - assertNumberField(field, -Infinity, Infinity, 1, 0); - }); - test('JS Configuration - Ignore', function() { - const field = new Blockly.FieldNumber( - undefined, undefined, undefined, .5, undefined, { - precision: 1, - }); - assertNumberField(field, -Infinity, Infinity, 1, 0); - }); - }); - }); - - suite('Serialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - - this.assertValue = (value) => { - const block = this.workspace.newBlock('row_block'); - const field = new Blockly.FieldNumber(value); - block.getInput('INPUT').appendField(field, 'NUMBER'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual(jso['fields'], {'NUMBER': value}); - }; - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Simple', function() { - this.assertValue(10); - }); - - test('Max precision small', function() { - this.assertValue(1.000000000000001); - }); - - test('Max precision large', function() { - this.assertValue(1000000000000001); - }); - - test('Smallest', function() { - this.assertValue(5e-324); - }); - - test('Largest', function() { - this.assertValue(1.7976931348623157e+308); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldNumber'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {runTestCases} = goog.require('Blockly.test.helpers.common'); + + +suite('Number Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + {title: 'Undefined', value: undefined}, + {title: 'Null', value: null}, + {title: 'NaN', value: NaN}, + {title: 'Non-Parsable String', value: 'bad'}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueTestCases = [ + {title: 'Integer', value: 1, expectedValue: 1}, + {title: 'Float', value: 1.5, expectedValue: 1.5}, + {title: 'Integer String', value: '1', expectedValue: 1}, + {title: 'Float String', value: '1.5', expectedValue: 1.5}, + {title: 'Infinity', value: Infinity, expectedValue: Infinity}, + {title: 'Negative Infinity', value: -Infinity, expectedValue: -Infinity}, + {title: 'Infinity String', value: 'Infinity', expectedValue: Infinity}, + {title: 'Negative Infinity String', value: '-Infinity', + expectedValue: -Infinity}, + ]; + const addArgsAndJson = function(testCase) { + testCase.args = Array(4).fill(testCase.value); + testCase.json = {'value': testCase.value, 'min': testCase.value, + 'max': testCase.value, 'precision': testCase.value}; + }; + invalidValueTestCases.forEach(addArgsAndJson); + validValueTestCases.forEach(addArgsAndJson); + + /** + * The expected default value for the field being tested. + * @type {*} + */ + const defaultFieldValue = 0; + /** + * Asserts that the field property values are as expected. + * @param {!Blockly.FieldNumber} field The field to check. + * @param {!number} expectedMin The expected min. + * @param {!number} expectedMax The expected max. + * @param {!number} expectedPrecision The expected precision. + * @param {!number} expectedValue The expected value. + */ + function assertNumberField(field, expectedMin, expectedMax, + expectedPrecision, expectedValue) { + assertFieldValue(field, expectedValue); + chai.assert.equal(field.getMin(), expectedMin, 'Min'); + chai.assert.equal(field.getMax(), expectedMax, 'Max'); + chai.assert.equal( + field.getPrecision(), expectedPrecision, 'Precision'); + } + /** + * Asserts that the field property values are set to default. + * @param {!Blockly.FieldNumber} field The field to check. + */ + const assertFieldDefault = function(field) { + assertNumberField(field, -Infinity, Infinity, 0, defaultFieldValue); + }; + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldNumber} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertNumberField( + field, testCase.expectedValue, testCase.expectedValue, + testCase.expectedValue, testCase.expectedValue); + }; + + runConstructorSuiteTests( + Blockly.FieldNumber, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + runFromJsonSuiteTests( + Blockly.FieldNumber, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + suite('setValue', function() { + suite('Empty -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldNumber(); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, defaultFieldValue); + }); + suite('Value -> New Value', function() { + const initialValue = 1; + setup(function() { + this.field = new Blockly.FieldNumber(initialValue); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, initialValue); + }); + suite('Constraints', function() { + const testCases = [ + {title: 'Float', json: {}, value: 123.456, expectedValue: 123.456}, + {title: '0.01', json: {precision: .01}, value: 123.456, + expectedValue: 123.46}, + {title: '1e-7', json: {precision: .0000001}, value: 123.00000456, + expectedValue: 123.0000046}, + {title: '0.5', json: {precision: .5}, value: 123.456, + expectedValue: 123.5}, + {title: '1', json: {precision: 1}, value: 123.456, + expectedValue: 123}, + {title: '1.5', json: {precision: 1.5}, value: 123.456, + expectedValue: 123}, + ]; + suite('Precision', function() { + runTestCases(testCases, function(testCase) { + return function() { + const field = Blockly.FieldNumber.fromJson(testCase.json); + field.setValue(testCase.value); + assertFieldValue(field, testCase.expectedValue); + }; + }); + test('Null', function() { + const field = Blockly.FieldNumber.fromJson({precision: null}); + chai.assert.equal(field.getPrecision(), 0); + }); + }); + const setValueBoundsTestFn = function(testCase) { + return function() { + const field = Blockly.FieldNumber.fromJson(testCase.json); + testCase.values.forEach(function(value, i) { + field.setValue(value); + assertFieldValue( + field, testCase.expectedValues[i]); + }); + }; + }; + suite('Min', function() { + const testCases = [ + {title: '-10', json: {min: -10}, values: [-20, 0, 20], + expectedValues: [-10, 0, 20]}, + {title: '0', json: {min: 0}, values: [-20, 0, 20], + expectedValues: [0, 0, 20]}, + {title: '+10', json: {min: 10}, values: [-20, 0, 20], + expectedValues: [10, 10, 20]}, + ]; + runTestCases(testCases, setValueBoundsTestFn); + test('Null', function() { + const field = Blockly.FieldNumber.fromJson({min: null}); + chai.assert.equal(field.getMin(), -Infinity); + }); + }); + suite('Max', function() { + const testCases = [ + {title: '-10', json: {max: -10}, values: [-20, 0, 20], + expectedValues: [-20, -10, -10]}, + {title: '0', json: {max: 0}, values: [-20, 0, 20], + expectedValues: [-20, 0, 0]}, + {title: '+10', json: {max: 10}, values: [-20, 0, 20], + expectedValues: [-20, 0, 10]}, + ]; + runTestCases(testCases, setValueBoundsTestFn); + test('Null', function() { + const field = Blockly.FieldNumber.fromJson({max: null}); + chai.assert.equal(field.getMax(), Infinity); + }); + }); + }); + }); + suite('Validators', function() { + setup(function() { + this.field = new Blockly.FieldNumber(1); + this.field.htmlInput_ = Object.create(null); + this.field.htmlInput_.oldValue_ = '1'; + this.field.htmlInput_.untypedDefaultValue_ = 1; + this.stub = sinon.stub(this.field, 'resizeEditor_'); + }); + teardown(function() { + sinon.restore(); + }); + const testSuites = [ + {title: 'Null Validator', + validator: + function() { + return null; + }, + value: 2, expectedValue: 1}, + {title: 'Force End with 6 Validator', + validator: + function(newValue) { + return String(newValue).replace(/.$/, '6'); + }, + value: 25, expectedValue: 26}, + {title: 'Returns Undefined Validator', validator: function() {}, value: 2, + expectedValue: 2}, + ]; + testSuites.forEach(function(suiteInfo) { + suite(suiteInfo.title, function() { + setup(function() { + this.field.setValidator(suiteInfo.validator); + }); + test('When Editing', function() { + this.field.isBeingEdited_ = true; + this.field.htmlInput_.value = String(suiteInfo.value); + this.field.onHtmlInputChange_(null); + assertFieldValue( + this.field, suiteInfo.expectedValue, String(suiteInfo.value)); + }); + test('When Not Editing', function() { + this.field.setValue(suiteInfo.value); + assertFieldValue(this.field, suiteInfo.expectedValue); + }); + }); + }); + }); + suite('Customizations', function() { + suite('Min', function() { + test('JS Constructor', function() { + const field = new Blockly.FieldNumber(0, -10); + assertNumberField(field, -10, Infinity, 0, 0); + }); + test('JSON Definition', function() { + const field = Blockly.FieldNumber.fromJson({ + min: -10, + }); + assertNumberField(field, -10, Infinity, 0, 0); + }); + test('Set Constraints', function() { + const field = new Blockly.FieldNumber(); + field.setConstraints(-10); + assertNumberField(field, -10, Infinity, 0, 0); + }); + test('Set Min', function() { + const field = new Blockly.FieldNumber(); + field.setMin(-10); + assertNumberField(field, -10, Infinity, 0, 0); + }); + test('JS Configuration - Simple', function() { + const field = new Blockly.FieldNumber( + undefined, undefined, undefined, undefined, undefined, { + min: -10, + }); + assertNumberField(field, -10, Infinity, 0, 0); + }); + test('JS Configuration - Ignore', function() { + const field = new Blockly.FieldNumber( + undefined, -1, undefined, undefined, undefined, { + min: -10, + }); + assertNumberField(field, -10, Infinity, 0, 0); + }); + }); + suite('Max', function() { + test('JS Constructor', function() { + const field = new Blockly.FieldNumber(0, undefined, 10); + assertNumberField(field, -Infinity, 10, 0, 0); + }); + test('JSON Definition', function() { + const field = Blockly.FieldNumber.fromJson({ + max: 10, + }); + assertNumberField(field, -Infinity, 10, 0, 0); + }); + test('Set Constraints', function() { + const field = new Blockly.FieldNumber(); + field.setConstraints(undefined, 10); + assertNumberField(field, -Infinity, 10, 0, 0); + }); + test('Set Max', function() { + const field = new Blockly.FieldNumber(); + field.setMax(10); + assertNumberField(field, -Infinity, 10, 0, 0); + }); + test('JS Configuration - Simple', function() { + const field = new Blockly.FieldNumber( + undefined, undefined, undefined, undefined, undefined, { + max: 10, + }); + assertNumberField(field, -Infinity, 10, 0, 0); + }); + test('JS Configuration - Ignore', function() { + const field = new Blockly.FieldNumber( + undefined, undefined, 1, undefined, undefined, { + max: 10, + }); + assertNumberField(field, -Infinity, 10, 0, 0); + }); + }); + suite('Precision', function() { + test('JS Constructor', function() { + const field = new Blockly.FieldNumber(0, undefined, undefined, 1); + assertNumberField(field, -Infinity, Infinity, 1, 0); + }); + test('JSON Definition', function() { + const field = Blockly.FieldNumber.fromJson({ + precision: 1, + }); + assertNumberField(field, -Infinity, Infinity, 1, 0); + }); + test('Set Constraints', function() { + const field = new Blockly.FieldNumber(); + field.setConstraints(undefined, undefined, 1); + assertNumberField(field, -Infinity, Infinity, 1, 0); + }); + test('Set Precision', function() { + const field = new Blockly.FieldNumber(); + field.setPrecision(1); + assertNumberField(field, -Infinity, Infinity, 1, 0); + }); + test('JS Configuration - Simple', function() { + const field = new Blockly.FieldNumber( + undefined, undefined, undefined, undefined, undefined, { + precision: 1, + }); + assertNumberField(field, -Infinity, Infinity, 1, 0); + }); + test('JS Configuration - Ignore', function() { + const field = new Blockly.FieldNumber( + undefined, undefined, undefined, .5, undefined, { + precision: 1, + }); + assertNumberField(field, -Infinity, Infinity, 1, 0); + }); + }); + }); + + suite('Serialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + + this.assertValue = (value) => { + const block = this.workspace.newBlock('row_block'); + const field = new Blockly.FieldNumber(value); + block.getInput('INPUT').appendField(field, 'NUMBER'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual(jso['fields'], {'NUMBER': value}); + }; + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Simple', function() { + this.assertValue(10); + }); + + test('Max precision small', function() { + this.assertValue(1.000000000000001); + }); + + test('Max precision large', function() { + this.assertValue(1000000000000001); + }); + + test('Smallest', function() { + this.assertValue(5e-324); + }); + + test('Largest', function() { + this.assertValue(1.7976931348623157e+308); + }); + }); +}); diff --git a/tests/mocha/field_registry_test.js b/tests/mocha/field_registry_test.js index 39408136561..495db8f5ffb 100644 --- a/tests/mocha/field_registry_test.js +++ b/tests/mocha/field_registry_test.js @@ -1,100 +1,100 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldRegistry'); - -const {createDeprecationWarningStub} = goog.require('Blockly.test.helpers.warnings'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Field Registry', function() { - class CustomFieldType extends Blockly.Field { - constructor(value) { - super(value); - } - - static fromJson(options) { - return new CustomFieldType(options['value']); - } - } - - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - if (Blockly.registry.TEST_ONLY.typeMap['field']['field_custom_test']) { - delete Blockly.registry.TEST_ONLY.typeMap['field']['field_custom_test']; - } - }); - - suite('Registration', function() { - test('Simple', function() { - Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); - }); - test('fromJson as Key', function() { - chai.assert.throws(function() { - Blockly.fieldRegistry.register(CustomFieldType.fromJson, ''); - }, 'Invalid name'); - }); - test('No fromJson', function() { - const fromJson = CustomFieldType.fromJson; - delete CustomFieldType.fromJson; - chai.assert.throws(function() { - Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); - }, 'must have a fromJson function'); - CustomFieldType.fromJson = fromJson; - }); - test('fromJson not a function', function() { - const fromJson = CustomFieldType.fromJson; - CustomFieldType.fromJson = true; - chai.assert.throws(function() { - Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); - }, 'must have a fromJson function'); - CustomFieldType.fromJson = fromJson; - }); - }); - suite('Retrieval', function() { - test('Simple', function() { - Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); - - const json = { - type: 'field_custom_test', - value: 'ok', - }; - - const field = Blockly.fieldRegistry.fromJson(json); - - chai.assert.isNotNull(field); - chai.assert.equal(field.getValue(), 'ok'); - }); - test('Not Registered', function() { - const json = { - type: 'field_custom_test', - value: 'ok', - }; - - const spy = sinon.stub(console, 'warn'); - const field = Blockly.fieldRegistry.fromJson(json); - chai.assert.isNull(field); - chai.assert.isTrue(spy.called); - spy.restore(); - }); - test('Case Different', function() { - Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); - - const json = { - type: 'FIELD_CUSTOM_TEST', - value: 'ok', - }; - - const field = Blockly.fieldRegistry.fromJson(json); - - chai.assert.isNotNull(field); - chai.assert.equal(field.getValue(), 'ok'); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldRegistry'); + +const {createDeprecationWarningStub} = goog.require('Blockly.test.helpers.warnings'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Field Registry', function() { + class CustomFieldType extends Blockly.Field { + constructor(value) { + super(value); + } + + static fromJson(options) { + return new CustomFieldType(options['value']); + } + } + + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + if (Blockly.registry.TEST_ONLY.typeMap['field']['field_custom_test']) { + delete Blockly.registry.TEST_ONLY.typeMap['field']['field_custom_test']; + } + }); + + suite('Registration', function() { + test('Simple', function() { + Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); + }); + test('fromJson as Key', function() { + chai.assert.throws(function() { + Blockly.fieldRegistry.register(CustomFieldType.fromJson, ''); + }, 'Invalid name'); + }); + test('No fromJson', function() { + const fromJson = CustomFieldType.fromJson; + delete CustomFieldType.fromJson; + chai.assert.throws(function() { + Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); + }, 'must have a fromJson function'); + CustomFieldType.fromJson = fromJson; + }); + test('fromJson not a function', function() { + const fromJson = CustomFieldType.fromJson; + CustomFieldType.fromJson = true; + chai.assert.throws(function() { + Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); + }, 'must have a fromJson function'); + CustomFieldType.fromJson = fromJson; + }); + }); + suite('Retrieval', function() { + test('Simple', function() { + Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); + + const json = { + type: 'field_custom_test', + value: 'ok', + }; + + const field = Blockly.fieldRegistry.fromJson(json); + + chai.assert.isNotNull(field); + chai.assert.equal(field.getValue(), 'ok'); + }); + test('Not Registered', function() { + const json = { + type: 'field_custom_test', + value: 'ok', + }; + + const spy = sinon.stub(console, 'warn'); + const field = Blockly.fieldRegistry.fromJson(json); + chai.assert.isNull(field); + chai.assert.isTrue(spy.called); + spy.restore(); + }); + test('Case Different', function() { + Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); + + const json = { + type: 'FIELD_CUSTOM_TEST', + value: 'ok', + }; + + const field = Blockly.fieldRegistry.fromJson(json); + + chai.assert.isNotNull(field); + chai.assert.equal(field.getValue(), 'ok'); + }); + }); +}); diff --git a/tests/mocha/field_test.js b/tests/mocha/field_test.js index 4d1887aa07f..3039e694b39 100644 --- a/tests/mocha/field_test.js +++ b/tests/mocha/field_test.js @@ -1,793 +1,793 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldTest'); - -const {addBlockTypeToCleanup, addMessageToCleanup, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {createDeprecationWarningStub} = goog.require('Blockly.test.helpers.warnings'); - - -suite('Abstract Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('Is Serializable', function() { - // Both EDITABLE and SERIALIZABLE are default. - class FieldDefault extends Blockly.Field { - constructor() { - super(); - this.name = 'NAME'; - } - } - - // EDITABLE is false and SERIALIZABLE is default. - class FieldFalseDefault extends Blockly.Field { - constructor() { - super(); - this.name = 'NAME'; - this.EDITABLE = false; - } - } - - // EDITABLE is default and SERIALIZABLE is true. - class FieldDefaultTrue extends Blockly.Field { - constructor() { - super(); - this.name = 'NAME'; - this.SERIALIZABLE = true; - } - } - - // EDITABLE is false and SERIALIZABLE is true. - class FieldFalseTrue extends Blockly.Field { - constructor() { - super(); - this.name = 'NAME'; - this.EDITABLE = false; - this.SERIALIZABLE = true; - } - } - - /* Test Backwards Compatibility */ - test('Editable Default(true), Serializable Default(false)', function() { - // An old default field should be serialized. - const field = new FieldDefault(); - const stub = sinon.stub(console, 'warn'); - chai.assert.isTrue(field.isSerializable()); - sinon.assert.calledOnce(stub); - stub.restore(); - }); - test('Editable False, Serializable Default(false)', function() { - // An old non-editable field should not be serialized. - const field = new FieldFalseDefault(); - chai.assert.isFalse(field.isSerializable()); - }); - /* Test Other Cases */ - test('Editable Default(true), Serializable True', function() { - // A field that is both editable and serializable should be serialized. - const field = new FieldDefaultTrue(); - chai.assert.isTrue(field.isSerializable()); - }); - test('Editable False, Serializable True', function() { - // A field that is not editable, but overrides serializable to true - // should be serialized (e.g. field_label_serializable) - const field = new FieldFalseTrue(); - chai.assert.isTrue(field.isSerializable()); - }); - }); - - suite('Serialization', function() { - class DefaultSerializationField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - } - - class CustomXmlField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - - toXml(fieldElement) { - fieldElement.textContent = 'custom value'; - return fieldElement; - } - - fromXml(fieldElement) { - this.someProperty = fieldElement.textContent; - } - } - - class CustomXmlCallSuperField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - - toXml(fieldElement) { - super.toXml(fieldElement); - fieldElement.setAttribute('attribute', 'custom value'); - return fieldElement; - } - - fromXml(fieldElement) { - super.fromXml(fieldElement); - this.someProperty = fieldElement.getAttribute('attribute'); - } - } - - class CustomJsoField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - - saveState() { - return 'custom value'; - } - - loadState(state) { - this.someProperty = state; - } - } - - class CustomJsoCallSuperField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - - saveState() { - return { - default: super.saveState(), - val: 'custom value', - }; - } - - loadState(state) { - super.loadState(state.default); - this.someProperty = state.val; - } - } - - class CustomXmlAndJsoField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - - toXml(fieldElement) { - fieldElement.textContent = 'custom value'; - return fieldElement; - } - - fromXml(fieldElement) { - this.someProperty = fieldElement.textContent; - } - - saveState() { - return 'custom value'; - } - - loadState(state) { - this.someProperty = state; - } - } - - suite('Save', function() { - suite('JSO', function() { - test('No implementations', function() { - const field = new DefaultSerializationField('test value'); - const value = field.saveState(); - chai.assert.equal(value, 'test value'); - }); - - test('Xml implementations', function() { - const field = new CustomXmlField('test value'); - const value = field.saveState(); - chai.assert.equal(value, 'custom value'); - }); - - test('Xml super implementation', function() { - const field = new CustomXmlCallSuperField('test value'); - const value = field.saveState(); - chai.assert.equal( - value, - 'test value'); - }); - - test('JSO implementations', function() { - const field = new CustomJsoField('test value'); - const value = field.saveState(); - chai.assert.equal(value, 'custom value'); - }); - - test('JSO super implementations', function() { - const field = new CustomJsoCallSuperField('test value'); - const value = field.saveState(); - chai.assert.deepEqual( - value, {default: 'test value', val: 'custom value'}); - }); - - test('Xml and JSO implementations', function() { - const field = new CustomXmlAndJsoField('test value'); - const value = field.saveState(); - chai.assert.equal(value, 'custom value'); - }); - }); - - suite('Xml', function() { - test('No implementations', function() { - const field = new DefaultSerializationField('test value'); - const element = document.createElement('field'); - const value = Blockly.Xml.domToText(field.toXml(element)); - chai.assert.equal( - value, - 'test value'); - }); - - test('Xml implementations', function() { - const field = new CustomXmlField('test value'); - const element = document.createElement('field'); - const value = Blockly.Xml.domToText(field.toXml(element)); - chai.assert.equal( - value, - 'custom value' - ); - }); - - test('Xml super implementation', function() { - const field = new CustomXmlCallSuperField('test value'); - const element = document.createElement('field'); - const value = Blockly.Xml.domToText(field.toXml(element)); - chai.assert.equal( - value, - 'test value'); - }); - - test('Xml and JSO implementations', function() { - const field = new CustomXmlAndJsoField('test value'); - const element = document.createElement('field'); - const value = Blockly.Xml.domToText(field.toXml(element)); - chai.assert.equal( - value, - 'custom value' - ); - }); - }); - }); - - suite('Load', function() { - suite('JSO', function() { - test('No implementations', function() { - const field = new DefaultSerializationField(''); - field.loadState('test value'); - chai.assert.equal(field.getValue(), 'test value'); - }); - - test('Xml implementations', function() { - const field = new CustomXmlField(''); - field.loadState('custom value'); - chai.assert.equal(field.someProperty, 'custom value'); - }); - - test('Xml super implementation', function() { - const field = new CustomXmlCallSuperField(''); - field.loadState( - 'test value'); - chai.assert.equal(field.getValue(), 'test value'); - chai.assert.equal(field.someProperty, 'custom value'); - }); - - test('JSO implementations', function() { - const field = new CustomJsoField(''); - field.loadState('custom value'); - chai.assert.equal(field.someProperty, 'custom value'); - }); - - test('JSO super implementations', function() { - const field = new CustomJsoCallSuperField(''); - field.loadState({default: 'test value', val: 'custom value'}); - chai.assert.equal(field.getValue(), 'test value'); - chai.assert.equal(field.someProperty, 'custom value'); - }); - - test('Xml and JSO implementations', function() { - const field = new CustomXmlAndJsoField(''); - field.loadState('custom value'); - chai.assert.equal(field.someProperty, 'custom value'); - }); - }); - - suite('Xml', function() { - test('No implementations', function() { - const field = new DefaultSerializationField(''); - field.fromXml( - Blockly.Xml.textToDom('test value')); - chai.assert.equal(field.getValue(), 'test value'); - }); - - test('Xml implementations', function() { - const field = new CustomXmlField(''); - field.fromXml( - Blockly.Xml.textToDom('custom value')); - chai.assert.equal(field.someProperty, 'custom value'); - }); - - test('Xml super implementation', function() { - const field = new CustomXmlCallSuperField(''); - field.fromXml( - Blockly.Xml.textToDom( - 'test value' - ) - ); - chai.assert.equal(field.getValue(), 'test value'); - chai.assert.equal(field.someProperty, 'custom value'); - }); - - test('XML andd JSO implementations', function() { - const field = new CustomXmlAndJsoField(''); - field.fromXml( - Blockly.Xml.textToDom('custom value')); - chai.assert.equal(field.someProperty, 'custom value'); - }); - }); - }); - }); - - suite('setValue', function() { - function addSpies(field, excludeSpies = []) { - if (!excludeSpies.includes('doValueInvalid_')) { - sinon.spy(field, 'doValueInvalid_'); - } - if (!excludeSpies.includes('doValueUpdate_')) { - sinon.spy(field, 'doValueUpdate_'); - } - if (!excludeSpies.includes('forceRerender')) { - sinon.spy(field, 'forceRerender'); - } - } - function stubDoValueInvalid(field, isDirty) { - sinon.stub(field, 'doValueInvalid_').callsFake(function(newValue) { - this.isDirty_ = isDirty; - }); - } - function stubDoValueUpdate(field, isDirty) { - sinon.stub(field, 'doValueUpdate_').callsFake(function(newValue) { - this.isDirty_ = isDirty; - }); - } - function setLocalValidatorWithReturn(field, value) { - field.setValidator(function() { - return value; - }); - } - function setLocalValidator(field, isValid) { - if (isValid) { - field.setValidator(function(newValue) { - return newValue; - }); - } else { - setLocalValidatorWithReturn(field, null); - } - } - function stubClassValidatorWithReturn(field, value) { - sinon.stub(field, 'doClassValidation_').returns(value); - } - function stubClassValidator(field, isValid) { - if (isValid) { - sinon.stub(field, 'doClassValidation_').callsFake(function(newValue) { - return newValue; - }); - } else { - stubClassValidatorWithReturn(field, null); - } - } - setup(function() { - this.field = new Blockly.Field(); - this.field.isDirty_ = false; - }); - test('Null', function() { - addSpies(this.field); - this.field.setValue(null); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.notCalled(this.field.doValueUpdate_); - sinon.assert.notCalled(this.field.forceRerender); - }); - test('No Validators, Dirty (Default)', function() { - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - sinon.assert.calledOnce(this.field.forceRerender); - }); - test('No Validators, Not Dirty', function() { - stubDoValueUpdate(this.field, false); - addSpies(this.field, ['doValueUpdate_']); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - sinon.assert.notCalled(this.field.forceRerender); - }); - test('Class Validator Returns Invalid, Not Dirty (Default)', function() { - stubClassValidator(this.field, false); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.calledOnce(this.field.doValueInvalid_); - sinon.assert.notCalled(this.field.doValueUpdate_); - sinon.assert.notCalled(this.field.forceRerender); - }); - test('Class Validator Returns Invalid, Dirty', function() { - stubClassValidator(this.field, false); - stubDoValueInvalid(this.field, true); - addSpies(this.field, ['doValueInvalid_']); - this.field.setValue('value'); - sinon.assert.calledOnce(this.field.doValueInvalid_); - sinon.assert.notCalled(this.field.doValueUpdate_); - sinon.assert.calledOnce(this.field.forceRerender); - }); - test('Class Validator Returns Valid, Not Dirty', function() { - stubClassValidator(this.field, true); - stubDoValueUpdate(this.field, false); - addSpies(this.field, ['doValueUpdate_']); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - sinon.assert.notCalled(this.field.forceRerender); - }); - test('Class Validator Returns Valid, Dirty (Default)', function() { - stubClassValidator(this.field, true); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - sinon.assert.calledOnce(this.field.forceRerender); - }); - test('Local Validator Returns Invalid, Not Dirty (Default)', function() { - setLocalValidator(this.field, false); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.calledOnce(this.field.doValueInvalid_); - sinon.assert.notCalled(this.field.doValueUpdate_); - sinon.assert.notCalled(this.field.forceRerender); - }); - test('Local Validator Returns Invalid, Dirty', function() { - stubDoValueInvalid(this.field, true); - setLocalValidator(this.field, false); - addSpies(this.field, ['doValueInvalid_']); - this.field.setValue('value'); - sinon.assert.calledOnce(this.field.doValueInvalid_); - sinon.assert.notCalled(this.field.doValueUpdate_); - sinon.assert.calledOnce(this.field.forceRerender); - }); - test('Local Validator Returns Valid, Not Dirty', function() { - stubDoValueUpdate(this.field, false); - setLocalValidator(this.field, true); - addSpies(this.field, ['doValueUpdate_']); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - sinon.assert.notCalled(this.field.forceRerender); - }); - test('Local Validator Returns Valid, Dirty (Default)', function() { - setLocalValidator(this.field, true); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - sinon.assert.calledOnce(this.field.forceRerender); - }); - test('New Value Matches Old Value', function() { - this.field.setValue('value'); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - sinon.assert.notCalled(this.field.forceRerender); - }); - test('New Value (Class)Validates to Old Value', function() { - this.field.setValue('value'); - stubClassValidatorWithReturn(this.field, 'value'); - addSpies(this.field); - this.field.setValue('notValue'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - sinon.assert.notCalled(this.field.forceRerender); - }); - test('New Value (Local)Validates to Old Value', function() { - this.field.setValue('value'); - setLocalValidatorWithReturn(this.field, 'value'); - addSpies(this.field); - this.field.setValue('notValue'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - sinon.assert.notCalled(this.field.forceRerender); - }); - test('New Value (Class)Validates to not Old Value', function() { - this.field.setValue('value'); - stubClassValidatorWithReturn(this.field, 'notValue'); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - }); - test('New Value (Local)Validates to not Old Value', function() { - this.field.setValue('value'); - setLocalValidatorWithReturn(this.field, 'notValue'); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - }); - test('Class Validator Returns Null', function() { - stubClassValidatorWithReturn(this.field, null); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.calledOnce(this.field.doValueInvalid_); - sinon.assert.notCalled(this.field.doValueUpdate_); - }); - test('Class Validator Returns Same', function() { - sinon.stub(this.field, 'doClassValidation_').callsFake( - function(newValue) { - return newValue; - }); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - }); - test('Class Validator Returns Different', function() { - stubClassValidatorWithReturn(this.field, 'differentValue'); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - }); - test('Class Validator Returns Undefined', function() { - stubClassValidatorWithReturn(this.field, undefined); - addSpies(this.field); - this.field.setValue('value'); - chai.assert.equal(this.field.getValue(), 'value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - }); - test('Local Validator Returns Null', function() { - setLocalValidatorWithReturn(this.field, null); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.calledOnce(this.field.doValueInvalid_); - sinon.assert.notCalled(this.field.doValueUpdate_); - }); - test('Local Validator Returns Same', function() { - this.field.setValidator(function(newValue) { - return newValue; - }); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - }); - test('Local Validator Returns Different', function() { - setLocalValidatorWithReturn(this.field, 'differentValue'); - addSpies(this.field); - this.field.setValue('value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - }); - test('Local Validator Returns Undefined', function() { - setLocalValidatorWithReturn(this.field, undefined); - addSpies(this.field); - this.field.setValue('value'); - chai.assert.equal(this.field.getValue(), 'value'); - sinon.assert.notCalled(this.field.doValueInvalid_); - sinon.assert.calledOnce(this.field.doValueUpdate_); - }); - }); - - suite('Customization', function() { - // All this field does is wrap the abstract field. - class CustomField extends Blockly.Field { - constructor(opt_config) { - super('value', null, opt_config); - } - - static fromJson(options) { - return new CustomField(options); - } - } - - suite('Tooltip', function() { - test('JS Constructor', function() { - const field = new Blockly.Field('value', null, { - tooltip: 'test tooltip', - }); - chai.assert.equal(field.tooltip_, 'test tooltip'); - }); - test('JS Constructor - Dynamic', function() { - const returnTooltip = function() { - return 'dynamic tooltip text'; - }; - const field = new Blockly.Field('value', null, { - tooltip: returnTooltip, - }); - chai.assert.equal(field.tooltip_, returnTooltip); - }); - test('JSON Definition', function() { - const field = CustomField.fromJson({ - tooltip: "test tooltip", - }); - chai.assert.equal(field.tooltip_, 'test tooltip'); - }); - suite('W/ Msg References', function() { - setup(function() { - addMessageToCleanup(this.sharedCleanup, 'TOOLTIP'); - Blockly.Msg['TOOLTIP'] = 'test tooltip'; - }); - test('JS Constructor', function() { - const field = new Blockly.Field('value', null, { - tooltip: '%{BKY_TOOLTIP}', - }); - chai.assert.equal(field.tooltip_, 'test tooltip'); - }); - test('JSON Definition', function() { - const field = CustomField.fromJson({ - tooltip: "%{BKY_TOOLTIP}", - }); - chai.assert.equal(field.tooltip_, 'test tooltip'); - }); - }); - suite('setTooltip', function() { - setup(function() { - this.workspace = new Blockly.WorkspaceSvg(new Blockly.Options({})); - this.workspace.createDom(); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - test('Before Append', function() { - addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); - Blockly.Blocks['tooltip'] = { - init: function() { - const field = new Blockly.FieldTextInput('default'); - field.setTooltip('tooltip'); - this.appendDummyInput() - .appendField(field, 'TOOLTIP'); - }, - }; - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ).children[0], this.workspace); - const field = block.getField('TOOLTIP'); - chai.assert.equal(field.getClickTarget_().tooltip, 'tooltip'); - }); - test('After Append', function() { - addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); - Blockly.Blocks['tooltip'] = { - init: function() { - const field = new Blockly.FieldTextInput('default'); - this.appendDummyInput() - .appendField(field, 'TOOLTIP'); - field.setTooltip('tooltip'); - }, - }; - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ).children[0], this.workspace); - const field = block.getField('TOOLTIP'); - chai.assert.equal(field.getClickTarget_().tooltip, 'tooltip'); - }); - test('After Block Creation', function() { - addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); - Blockly.Blocks['tooltip'] = { - init: function() { - const field = new Blockly.FieldTextInput('default'); - this.appendDummyInput() - .appendField(field, 'TOOLTIP'); - }, - }; - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ).children[0], this.workspace); - const field = block.getField('TOOLTIP'); - field.setTooltip('tooltip'); - chai.assert.equal(field.getClickTarget_().tooltip, 'tooltip'); - }); - test('Dynamic Function', function() { - addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); - Blockly.Blocks['tooltip'] = { - init: function() { - const field = new Blockly.FieldTextInput('default'); - field.setTooltip(this.tooltipFunc); - this.appendDummyInput() - .appendField(field, 'TOOLTIP'); - }, - - tooltipFunc: function() { - return this.getFieldValue('TOOLTIP'); - }, - }; - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ).children[0], this.workspace); - const field = block.getField('TOOLTIP'); - chai.assert.equal(field.getClickTarget_().tooltip, block.tooltipFunc); - }); - test('Element', function() { - addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); - Blockly.Blocks['tooltip'] = { - init: function() { - const field = new Blockly.FieldTextInput('default'); - field.setTooltip(this.element); - this.appendDummyInput() - .appendField(field, 'TOOLTIP'); - }, - element: { - tooltip: 'tooltip', - }, - }; - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ).children[0], this.workspace); - const field = block.getField('TOOLTIP'); - chai.assert.equal(field.getClickTarget_().tooltip, block.element); - }); - test('Null', function() { - addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); - Blockly.Blocks['tooltip'] = { - init: function() { - const field = new Blockly.FieldTextInput('default'); - field.setTooltip(null); - this.appendDummyInput() - .appendField(field, 'TOOLTIP'); - }, - }; - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ).children[0], this.workspace); - const field = block.getField('TOOLTIP'); - chai.assert.equal(field.getClickTarget_().tooltip, block); - }); - test('Undefined', function() { - addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); - Blockly.Blocks['tooltip'] = { - init: function() { - const field = new Blockly.FieldTextInput('default'); - this.appendDummyInput() - .appendField(field, 'TOOLTIP'); - }, - }; - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ).children[0], this.workspace); - const field = block.getField('TOOLTIP'); - chai.assert.equal(field.getClickTarget_().tooltip, block); - }); - }); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldTest'); + +const {addBlockTypeToCleanup, addMessageToCleanup, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {createDeprecationWarningStub} = goog.require('Blockly.test.helpers.warnings'); + + +suite('Abstract Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('Is Serializable', function() { + // Both EDITABLE and SERIALIZABLE are default. + class FieldDefault extends Blockly.Field { + constructor() { + super(); + this.name = 'NAME'; + } + } + + // EDITABLE is false and SERIALIZABLE is default. + class FieldFalseDefault extends Blockly.Field { + constructor() { + super(); + this.name = 'NAME'; + this.EDITABLE = false; + } + } + + // EDITABLE is default and SERIALIZABLE is true. + class FieldDefaultTrue extends Blockly.Field { + constructor() { + super(); + this.name = 'NAME'; + this.SERIALIZABLE = true; + } + } + + // EDITABLE is false and SERIALIZABLE is true. + class FieldFalseTrue extends Blockly.Field { + constructor() { + super(); + this.name = 'NAME'; + this.EDITABLE = false; + this.SERIALIZABLE = true; + } + } + + /* Test Backwards Compatibility */ + test('Editable Default(true), Serializable Default(false)', function() { + // An old default field should be serialized. + const field = new FieldDefault(); + const stub = sinon.stub(console, 'warn'); + chai.assert.isTrue(field.isSerializable()); + sinon.assert.calledOnce(stub); + stub.restore(); + }); + test('Editable False, Serializable Default(false)', function() { + // An old non-editable field should not be serialized. + const field = new FieldFalseDefault(); + chai.assert.isFalse(field.isSerializable()); + }); + /* Test Other Cases */ + test('Editable Default(true), Serializable True', function() { + // A field that is both editable and serializable should be serialized. + const field = new FieldDefaultTrue(); + chai.assert.isTrue(field.isSerializable()); + }); + test('Editable False, Serializable True', function() { + // A field that is not editable, but overrides serializable to true + // should be serialized (e.g. field_label_serializable) + const field = new FieldFalseTrue(); + chai.assert.isTrue(field.isSerializable()); + }); + }); + + suite('Serialization', function() { + class DefaultSerializationField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + } + + class CustomXmlField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + + toXml(fieldElement) { + fieldElement.textContent = 'custom value'; + return fieldElement; + } + + fromXml(fieldElement) { + this.someProperty = fieldElement.textContent; + } + } + + class CustomXmlCallSuperField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + + toXml(fieldElement) { + super.toXml(fieldElement); + fieldElement.setAttribute('attribute', 'custom value'); + return fieldElement; + } + + fromXml(fieldElement) { + super.fromXml(fieldElement); + this.someProperty = fieldElement.getAttribute('attribute'); + } + } + + class CustomJsoField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + + saveState() { + return 'custom value'; + } + + loadState(state) { + this.someProperty = state; + } + } + + class CustomJsoCallSuperField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + + saveState() { + return { + default: super.saveState(), + val: 'custom value', + }; + } + + loadState(state) { + super.loadState(state.default); + this.someProperty = state.val; + } + } + + class CustomXmlAndJsoField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + + toXml(fieldElement) { + fieldElement.textContent = 'custom value'; + return fieldElement; + } + + fromXml(fieldElement) { + this.someProperty = fieldElement.textContent; + } + + saveState() { + return 'custom value'; + } + + loadState(state) { + this.someProperty = state; + } + } + + suite('Save', function() { + suite('JSO', function() { + test('No implementations', function() { + const field = new DefaultSerializationField('test value'); + const value = field.saveState(); + chai.assert.equal(value, 'test value'); + }); + + test('Xml implementations', function() { + const field = new CustomXmlField('test value'); + const value = field.saveState(); + chai.assert.equal(value, 'custom value'); + }); + + test('Xml super implementation', function() { + const field = new CustomXmlCallSuperField('test value'); + const value = field.saveState(); + chai.assert.equal( + value, + 'test value'); + }); + + test('JSO implementations', function() { + const field = new CustomJsoField('test value'); + const value = field.saveState(); + chai.assert.equal(value, 'custom value'); + }); + + test('JSO super implementations', function() { + const field = new CustomJsoCallSuperField('test value'); + const value = field.saveState(); + chai.assert.deepEqual( + value, {default: 'test value', val: 'custom value'}); + }); + + test('Xml and JSO implementations', function() { + const field = new CustomXmlAndJsoField('test value'); + const value = field.saveState(); + chai.assert.equal(value, 'custom value'); + }); + }); + + suite('Xml', function() { + test('No implementations', function() { + const field = new DefaultSerializationField('test value'); + const element = document.createElement('field'); + const value = Blockly.Xml.domToText(field.toXml(element)); + chai.assert.equal( + value, + 'test value'); + }); + + test('Xml implementations', function() { + const field = new CustomXmlField('test value'); + const element = document.createElement('field'); + const value = Blockly.Xml.domToText(field.toXml(element)); + chai.assert.equal( + value, + 'custom value' + ); + }); + + test('Xml super implementation', function() { + const field = new CustomXmlCallSuperField('test value'); + const element = document.createElement('field'); + const value = Blockly.Xml.domToText(field.toXml(element)); + chai.assert.equal( + value, + 'test value'); + }); + + test('Xml and JSO implementations', function() { + const field = new CustomXmlAndJsoField('test value'); + const element = document.createElement('field'); + const value = Blockly.Xml.domToText(field.toXml(element)); + chai.assert.equal( + value, + 'custom value' + ); + }); + }); + }); + + suite('Load', function() { + suite('JSO', function() { + test('No implementations', function() { + const field = new DefaultSerializationField(''); + field.loadState('test value'); + chai.assert.equal(field.getValue(), 'test value'); + }); + + test('Xml implementations', function() { + const field = new CustomXmlField(''); + field.loadState('custom value'); + chai.assert.equal(field.someProperty, 'custom value'); + }); + + test('Xml super implementation', function() { + const field = new CustomXmlCallSuperField(''); + field.loadState( + 'test value'); + chai.assert.equal(field.getValue(), 'test value'); + chai.assert.equal(field.someProperty, 'custom value'); + }); + + test('JSO implementations', function() { + const field = new CustomJsoField(''); + field.loadState('custom value'); + chai.assert.equal(field.someProperty, 'custom value'); + }); + + test('JSO super implementations', function() { + const field = new CustomJsoCallSuperField(''); + field.loadState({default: 'test value', val: 'custom value'}); + chai.assert.equal(field.getValue(), 'test value'); + chai.assert.equal(field.someProperty, 'custom value'); + }); + + test('Xml and JSO implementations', function() { + const field = new CustomXmlAndJsoField(''); + field.loadState('custom value'); + chai.assert.equal(field.someProperty, 'custom value'); + }); + }); + + suite('Xml', function() { + test('No implementations', function() { + const field = new DefaultSerializationField(''); + field.fromXml( + Blockly.Xml.textToDom('test value')); + chai.assert.equal(field.getValue(), 'test value'); + }); + + test('Xml implementations', function() { + const field = new CustomXmlField(''); + field.fromXml( + Blockly.Xml.textToDom('custom value')); + chai.assert.equal(field.someProperty, 'custom value'); + }); + + test('Xml super implementation', function() { + const field = new CustomXmlCallSuperField(''); + field.fromXml( + Blockly.Xml.textToDom( + 'test value' + ) + ); + chai.assert.equal(field.getValue(), 'test value'); + chai.assert.equal(field.someProperty, 'custom value'); + }); + + test('XML andd JSO implementations', function() { + const field = new CustomXmlAndJsoField(''); + field.fromXml( + Blockly.Xml.textToDom('custom value')); + chai.assert.equal(field.someProperty, 'custom value'); + }); + }); + }); + }); + + suite('setValue', function() { + function addSpies(field, excludeSpies = []) { + if (!excludeSpies.includes('doValueInvalid_')) { + sinon.spy(field, 'doValueInvalid_'); + } + if (!excludeSpies.includes('doValueUpdate_')) { + sinon.spy(field, 'doValueUpdate_'); + } + if (!excludeSpies.includes('forceRerender')) { + sinon.spy(field, 'forceRerender'); + } + } + function stubDoValueInvalid(field, isDirty) { + sinon.stub(field, 'doValueInvalid_').callsFake(function(newValue) { + this.isDirty_ = isDirty; + }); + } + function stubDoValueUpdate(field, isDirty) { + sinon.stub(field, 'doValueUpdate_').callsFake(function(newValue) { + this.isDirty_ = isDirty; + }); + } + function setLocalValidatorWithReturn(field, value) { + field.setValidator(function() { + return value; + }); + } + function setLocalValidator(field, isValid) { + if (isValid) { + field.setValidator(function(newValue) { + return newValue; + }); + } else { + setLocalValidatorWithReturn(field, null); + } + } + function stubClassValidatorWithReturn(field, value) { + sinon.stub(field, 'doClassValidation_').returns(value); + } + function stubClassValidator(field, isValid) { + if (isValid) { + sinon.stub(field, 'doClassValidation_').callsFake(function(newValue) { + return newValue; + }); + } else { + stubClassValidatorWithReturn(field, null); + } + } + setup(function() { + this.field = new Blockly.Field(); + this.field.isDirty_ = false; + }); + test('Null', function() { + addSpies(this.field); + this.field.setValue(null); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); + }); + test('No Validators, Dirty (Default)', function() { + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); + }); + test('No Validators, Not Dirty', function() { + stubDoValueUpdate(this.field, false); + addSpies(this.field, ['doValueUpdate_']); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); + }); + test('Class Validator Returns Invalid, Not Dirty (Default)', function() { + stubClassValidator(this.field, false); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); + }); + test('Class Validator Returns Invalid, Dirty', function() { + stubClassValidator(this.field, false); + stubDoValueInvalid(this.field, true); + addSpies(this.field, ['doValueInvalid_']); + this.field.setValue('value'); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); + }); + test('Class Validator Returns Valid, Not Dirty', function() { + stubClassValidator(this.field, true); + stubDoValueUpdate(this.field, false); + addSpies(this.field, ['doValueUpdate_']); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); + }); + test('Class Validator Returns Valid, Dirty (Default)', function() { + stubClassValidator(this.field, true); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); + }); + test('Local Validator Returns Invalid, Not Dirty (Default)', function() { + setLocalValidator(this.field, false); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); + }); + test('Local Validator Returns Invalid, Dirty', function() { + stubDoValueInvalid(this.field, true); + setLocalValidator(this.field, false); + addSpies(this.field, ['doValueInvalid_']); + this.field.setValue('value'); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); + }); + test('Local Validator Returns Valid, Not Dirty', function() { + stubDoValueUpdate(this.field, false); + setLocalValidator(this.field, true); + addSpies(this.field, ['doValueUpdate_']); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); + }); + test('Local Validator Returns Valid, Dirty (Default)', function() { + setLocalValidator(this.field, true); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); + }); + test('New Value Matches Old Value', function() { + this.field.setValue('value'); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); + }); + test('New Value (Class)Validates to Old Value', function() { + this.field.setValue('value'); + stubClassValidatorWithReturn(this.field, 'value'); + addSpies(this.field); + this.field.setValue('notValue'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); + }); + test('New Value (Local)Validates to Old Value', function() { + this.field.setValue('value'); + setLocalValidatorWithReturn(this.field, 'value'); + addSpies(this.field); + this.field.setValue('notValue'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); + }); + test('New Value (Class)Validates to not Old Value', function() { + this.field.setValue('value'); + stubClassValidatorWithReturn(this.field, 'notValue'); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + }); + test('New Value (Local)Validates to not Old Value', function() { + this.field.setValue('value'); + setLocalValidatorWithReturn(this.field, 'notValue'); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + }); + test('Class Validator Returns Null', function() { + stubClassValidatorWithReturn(this.field, null); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + }); + test('Class Validator Returns Same', function() { + sinon.stub(this.field, 'doClassValidation_').callsFake( + function(newValue) { + return newValue; + }); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + }); + test('Class Validator Returns Different', function() { + stubClassValidatorWithReturn(this.field, 'differentValue'); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + }); + test('Class Validator Returns Undefined', function() { + stubClassValidatorWithReturn(this.field, undefined); + addSpies(this.field); + this.field.setValue('value'); + chai.assert.equal(this.field.getValue(), 'value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + }); + test('Local Validator Returns Null', function() { + setLocalValidatorWithReturn(this.field, null); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + }); + test('Local Validator Returns Same', function() { + this.field.setValidator(function(newValue) { + return newValue; + }); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + }); + test('Local Validator Returns Different', function() { + setLocalValidatorWithReturn(this.field, 'differentValue'); + addSpies(this.field); + this.field.setValue('value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + }); + test('Local Validator Returns Undefined', function() { + setLocalValidatorWithReturn(this.field, undefined); + addSpies(this.field); + this.field.setValue('value'); + chai.assert.equal(this.field.getValue(), 'value'); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + }); + }); + + suite('Customization', function() { + // All this field does is wrap the abstract field. + class CustomField extends Blockly.Field { + constructor(opt_config) { + super('value', null, opt_config); + } + + static fromJson(options) { + return new CustomField(options); + } + } + + suite('Tooltip', function() { + test('JS Constructor', function() { + const field = new Blockly.Field('value', null, { + tooltip: 'test tooltip', + }); + chai.assert.equal(field.tooltip_, 'test tooltip'); + }); + test('JS Constructor - Dynamic', function() { + const returnTooltip = function() { + return 'dynamic tooltip text'; + }; + const field = new Blockly.Field('value', null, { + tooltip: returnTooltip, + }); + chai.assert.equal(field.tooltip_, returnTooltip); + }); + test('JSON Definition', function() { + const field = CustomField.fromJson({ + tooltip: "test tooltip", + }); + chai.assert.equal(field.tooltip_, 'test tooltip'); + }); + suite('W/ Msg References', function() { + setup(function() { + addMessageToCleanup(this.sharedCleanup, 'TOOLTIP'); + Blockly.Msg['TOOLTIP'] = 'test tooltip'; + }); + test('JS Constructor', function() { + const field = new Blockly.Field('value', null, { + tooltip: '%{BKY_TOOLTIP}', + }); + chai.assert.equal(field.tooltip_, 'test tooltip'); + }); + test('JSON Definition', function() { + const field = CustomField.fromJson({ + tooltip: "%{BKY_TOOLTIP}", + }); + chai.assert.equal(field.tooltip_, 'test tooltip'); + }); + }); + suite('setTooltip', function() { + setup(function() { + this.workspace = new Blockly.WorkspaceSvg(new Blockly.Options({})); + this.workspace.createDom(); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + test('Before Append', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); + Blockly.Blocks['tooltip'] = { + init: function() { + const field = new Blockly.FieldTextInput('default'); + field.setTooltip('tooltip'); + this.appendDummyInput() + .appendField(field, 'TOOLTIP'); + }, + }; + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ).children[0], this.workspace); + const field = block.getField('TOOLTIP'); + chai.assert.equal(field.getClickTarget_().tooltip, 'tooltip'); + }); + test('After Append', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); + Blockly.Blocks['tooltip'] = { + init: function() { + const field = new Blockly.FieldTextInput('default'); + this.appendDummyInput() + .appendField(field, 'TOOLTIP'); + field.setTooltip('tooltip'); + }, + }; + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ).children[0], this.workspace); + const field = block.getField('TOOLTIP'); + chai.assert.equal(field.getClickTarget_().tooltip, 'tooltip'); + }); + test('After Block Creation', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); + Blockly.Blocks['tooltip'] = { + init: function() { + const field = new Blockly.FieldTextInput('default'); + this.appendDummyInput() + .appendField(field, 'TOOLTIP'); + }, + }; + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ).children[0], this.workspace); + const field = block.getField('TOOLTIP'); + field.setTooltip('tooltip'); + chai.assert.equal(field.getClickTarget_().tooltip, 'tooltip'); + }); + test('Dynamic Function', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); + Blockly.Blocks['tooltip'] = { + init: function() { + const field = new Blockly.FieldTextInput('default'); + field.setTooltip(this.tooltipFunc); + this.appendDummyInput() + .appendField(field, 'TOOLTIP'); + }, + + tooltipFunc: function() { + return this.getFieldValue('TOOLTIP'); + }, + }; + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ).children[0], this.workspace); + const field = block.getField('TOOLTIP'); + chai.assert.equal(field.getClickTarget_().tooltip, block.tooltipFunc); + }); + test('Element', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); + Blockly.Blocks['tooltip'] = { + init: function() { + const field = new Blockly.FieldTextInput('default'); + field.setTooltip(this.element); + this.appendDummyInput() + .appendField(field, 'TOOLTIP'); + }, + element: { + tooltip: 'tooltip', + }, + }; + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ).children[0], this.workspace); + const field = block.getField('TOOLTIP'); + chai.assert.equal(field.getClickTarget_().tooltip, block.element); + }); + test('Null', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); + Blockly.Blocks['tooltip'] = { + init: function() { + const field = new Blockly.FieldTextInput('default'); + field.setTooltip(null); + this.appendDummyInput() + .appendField(field, 'TOOLTIP'); + }, + }; + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ).children[0], this.workspace); + const field = block.getField('TOOLTIP'); + chai.assert.equal(field.getClickTarget_().tooltip, block); + }); + test('Undefined', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); + Blockly.Blocks['tooltip'] = { + init: function() { + const field = new Blockly.FieldTextInput('default'); + this.appendDummyInput() + .appendField(field, 'TOOLTIP'); + }, + }; + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ).children[0], this.workspace); + const field = block.getField('TOOLTIP'); + chai.assert.equal(field.getClickTarget_().tooltip, block); + }); + }); + }); + }); +}); diff --git a/tests/mocha/field_textinput_test.js b/tests/mocha/field_textinput_test.js index efd01d70223..e635e3033cc 100644 --- a/tests/mocha/field_textinput_test.js +++ b/tests/mocha/field_textinput_test.js @@ -1,256 +1,256 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldTextInput'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Text Input Fields', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - {title: 'Undefined', value: undefined}, - {title: 'Null', value: null}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueTestCases = [ - {title: 'String', value: 'value', expectedValue: 'value'}, - {title: 'Boolean true', value: true, expectedValue: 'true'}, - {title: 'Boolean false', value: false, expectedValue: 'false'}, - {title: 'Number (Truthy)', value: 1, expectedValue: '1'}, - {title: 'Number (Falsy)', value: 0, expectedValue: '0'}, - {title: 'NaN', value: NaN, expectedValue: 'NaN'}, - ]; - const addArgsAndJson = function(testCase) { - testCase.args = [testCase.value]; - testCase.json = {'text': testCase.value}; - }; - invalidValueTestCases.forEach(addArgsAndJson); - validValueTestCases.forEach(addArgsAndJson); - - /** - * The expected default value for the field being tested. - * @type {*} - */ - const defaultFieldValue = ''; - /** - * Asserts that the field property values are set to default. - * @param {!Blockly.FieldTextInput} field The field to check. - */ - const assertFieldDefault = function(field) { - assertFieldValue(field, defaultFieldValue); - }; - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldTextInput} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue(field, testCase.expectedValue); - }; - - runConstructorSuiteTests( - Blockly.FieldTextInput, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - runFromJsonSuiteTests( - Blockly.FieldTextInput, validValueTestCases, invalidValueTestCases, - validTestCaseAssertField, assertFieldDefault); - - suite('setValue', function() { - suite('Empty -> New Value', function() { - setup(function() { - this.field = new Blockly.FieldTextInput(); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, defaultFieldValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('value'); - assertFieldValue(this.field, 'value'); - }); - }); - suite('Value -> New Value', function() { - const initialValue = 'oldValue'; - setup(function() { - this.field = new Blockly.FieldTextInput(initialValue); - }); - runSetValueTests( - validValueTestCases, invalidValueTestCases, initialValue); - test('With source block', function() { - this.field.setSourceBlock(createTestBlock()); - this.field.setValue('value'); - assertFieldValue(this.field, 'value'); - }); - }); - }); - - suite('Validators', function() { - setup(function() { - this.field = new Blockly.FieldTextInput('value'); - this.field.htmlInput_ = Object.create(null); - this.field.htmlInput_.oldValue_ = 'value'; - this.field.htmlInput_.untypedDefaultValue_ = 'value'; - this.stub = sinon.stub(this.field, 'resizeEditor_'); - }); - teardown(function() { - sinon.restore(); - }); - const testSuites = [ - {title: 'Null Validator', - validator: - function() { - return null; - }, - value: 'newValue', expectedValue: 'value'}, - {title: 'Remove \'a\' Validator', - validator: - function(newValue) { - return newValue.replace(/a/g, ''); - }, - value: 'bbbaaa', expectedValue: 'bbb'}, - {title: 'Returns Undefined Validator', validator: function() {}, - value: 'newValue', expectedValue: 'newValue', expectedText: 'newValue'}, - ]; - testSuites.forEach(function(suiteInfo) { - suite(suiteInfo.title, function() { - setup(function() { - this.field.setValidator(suiteInfo.validator); - }); - test('When Editing', function() { - this.field.isBeingEdited_ = true; - this.field.htmlInput_.value = suiteInfo.value; - this.field.onHtmlInputChange_(null); - assertFieldValue( - this.field, suiteInfo.expectedValue, suiteInfo.value); - }); - test('When Not Editing', function() { - this.field.setValue(suiteInfo.value); - assertFieldValue(this.field, suiteInfo.expectedValue); - }); - }); - }); - }); - - suite('Customization', function() { - suite('Spellcheck', function() { - setup(function() { - this.prepField = function(field) { - const workspace = { - getScale: function() { - return 1; - }, - getRenderer: function() { - return { - getClassName: function() { - return ''; - }, - }; - }, - getTheme: function() { - return { - getClassName: function() { - return ''; - }, - }; - }, - markFocused: function() {}, - }; - field.sourceBlock_ = { - workspace: workspace, - }; - field.constants_ = { - FIELD_TEXT_FONTSIZE: 11, - FIELD_TEXT_FONTWEIGHT: 'normal', - FIELD_TEXT_FONTFAMILY: 'sans-serif', - }; - field.clickTarget_ = document.createElement('div'); - Blockly.common.setMainWorkspace(workspace); - Blockly.WidgetDiv.createDom(); - this.stub = sinon.stub(field, 'resizeEditor_'); - }; - - this.assertSpellcheck = function(field, value) { - this.prepField(field); - field.showEditor_(); - chai.assert.equal(field.htmlInput_.getAttribute('spellcheck'), - value.toString()); - }; - }); - teardown(function() { - if (this.stub) { - this.stub.restore(); - } - }); - test('Default', function() { - const field = new Blockly.FieldTextInput('test'); - this.assertSpellcheck(field, true); - }); - test('JS Constructor', function() { - const field = new Blockly.FieldTextInput('test', null, { - spellcheck: false, - }); - this.assertSpellcheck(field, false); - }); - test('JSON Definition', function() { - const field = Blockly.FieldTextInput.fromJson({ - text: 'test', - spellcheck: false, - }); - this.assertSpellcheck(field, false); - }); - test('setSpellcheck Editor Hidden', function() { - const field = new Blockly.FieldTextInput('test'); - field.setSpellcheck(false); - this.assertSpellcheck(field, false); - }); - test('setSpellcheck Editor Shown', function() { - const field = new Blockly.FieldTextInput('test'); - this.prepField(field); - field.showEditor_(); - field.setSpellcheck(false); - chai.assert.equal(field.htmlInput_.getAttribute('spellcheck'), 'false'); - }); - }); - }); - - suite('Serialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - - this.assertValue = (value) => { - const block = this.workspace.newBlock('row_block'); - const field = new Blockly.FieldTextInput(value); - block.getInput('INPUT').appendField(field, 'TEXT'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual(jso['fields'], {'TEXT': value}); - }; - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Simple', function() { - this.assertValue('test text'); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldTextInput'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Text Input Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + {title: 'Undefined', value: undefined}, + {title: 'Null', value: null}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueTestCases = [ + {title: 'String', value: 'value', expectedValue: 'value'}, + {title: 'Boolean true', value: true, expectedValue: 'true'}, + {title: 'Boolean false', value: false, expectedValue: 'false'}, + {title: 'Number (Truthy)', value: 1, expectedValue: '1'}, + {title: 'Number (Falsy)', value: 0, expectedValue: '0'}, + {title: 'NaN', value: NaN, expectedValue: 'NaN'}, + ]; + const addArgsAndJson = function(testCase) { + testCase.args = [testCase.value]; + testCase.json = {'text': testCase.value}; + }; + invalidValueTestCases.forEach(addArgsAndJson); + validValueTestCases.forEach(addArgsAndJson); + + /** + * The expected default value for the field being tested. + * @type {*} + */ + const defaultFieldValue = ''; + /** + * Asserts that the field property values are set to default. + * @param {!Blockly.FieldTextInput} field The field to check. + */ + const assertFieldDefault = function(field) { + assertFieldValue(field, defaultFieldValue); + }; + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldTextInput} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue(field, testCase.expectedValue); + }; + + runConstructorSuiteTests( + Blockly.FieldTextInput, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + runFromJsonSuiteTests( + Blockly.FieldTextInput, validValueTestCases, invalidValueTestCases, + validTestCaseAssertField, assertFieldDefault); + + suite('setValue', function() { + suite('Empty -> New Value', function() { + setup(function() { + this.field = new Blockly.FieldTextInput(); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, defaultFieldValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('value'); + assertFieldValue(this.field, 'value'); + }); + }); + suite('Value -> New Value', function() { + const initialValue = 'oldValue'; + setup(function() { + this.field = new Blockly.FieldTextInput(initialValue); + }); + runSetValueTests( + validValueTestCases, invalidValueTestCases, initialValue); + test('With source block', function() { + this.field.setSourceBlock(createTestBlock()); + this.field.setValue('value'); + assertFieldValue(this.field, 'value'); + }); + }); + }); + + suite('Validators', function() { + setup(function() { + this.field = new Blockly.FieldTextInput('value'); + this.field.htmlInput_ = Object.create(null); + this.field.htmlInput_.oldValue_ = 'value'; + this.field.htmlInput_.untypedDefaultValue_ = 'value'; + this.stub = sinon.stub(this.field, 'resizeEditor_'); + }); + teardown(function() { + sinon.restore(); + }); + const testSuites = [ + {title: 'Null Validator', + validator: + function() { + return null; + }, + value: 'newValue', expectedValue: 'value'}, + {title: 'Remove \'a\' Validator', + validator: + function(newValue) { + return newValue.replace(/a/g, ''); + }, + value: 'bbbaaa', expectedValue: 'bbb'}, + {title: 'Returns Undefined Validator', validator: function() {}, + value: 'newValue', expectedValue: 'newValue', expectedText: 'newValue'}, + ]; + testSuites.forEach(function(suiteInfo) { + suite(suiteInfo.title, function() { + setup(function() { + this.field.setValidator(suiteInfo.validator); + }); + test('When Editing', function() { + this.field.isBeingEdited_ = true; + this.field.htmlInput_.value = suiteInfo.value; + this.field.onHtmlInputChange_(null); + assertFieldValue( + this.field, suiteInfo.expectedValue, suiteInfo.value); + }); + test('When Not Editing', function() { + this.field.setValue(suiteInfo.value); + assertFieldValue(this.field, suiteInfo.expectedValue); + }); + }); + }); + }); + + suite('Customization', function() { + suite('Spellcheck', function() { + setup(function() { + this.prepField = function(field) { + const workspace = { + getScale: function() { + return 1; + }, + getRenderer: function() { + return { + getClassName: function() { + return ''; + }, + }; + }, + getTheme: function() { + return { + getClassName: function() { + return ''; + }, + }; + }, + markFocused: function() {}, + }; + field.sourceBlock_ = { + workspace: workspace, + }; + field.constants_ = { + FIELD_TEXT_FONTSIZE: 11, + FIELD_TEXT_FONTWEIGHT: 'normal', + FIELD_TEXT_FONTFAMILY: 'sans-serif', + }; + field.clickTarget_ = document.createElement('div'); + Blockly.common.setMainWorkspace(workspace); + Blockly.WidgetDiv.createDom(); + this.stub = sinon.stub(field, 'resizeEditor_'); + }; + + this.assertSpellcheck = function(field, value) { + this.prepField(field); + field.showEditor_(); + chai.assert.equal(field.htmlInput_.getAttribute('spellcheck'), + value.toString()); + }; + }); + teardown(function() { + if (this.stub) { + this.stub.restore(); + } + }); + test('Default', function() { + const field = new Blockly.FieldTextInput('test'); + this.assertSpellcheck(field, true); + }); + test('JS Constructor', function() { + const field = new Blockly.FieldTextInput('test', null, { + spellcheck: false, + }); + this.assertSpellcheck(field, false); + }); + test('JSON Definition', function() { + const field = Blockly.FieldTextInput.fromJson({ + text: 'test', + spellcheck: false, + }); + this.assertSpellcheck(field, false); + }); + test('setSpellcheck Editor Hidden', function() { + const field = new Blockly.FieldTextInput('test'); + field.setSpellcheck(false); + this.assertSpellcheck(field, false); + }); + test('setSpellcheck Editor Shown', function() { + const field = new Blockly.FieldTextInput('test'); + this.prepField(field); + field.showEditor_(); + field.setSpellcheck(false); + chai.assert.equal(field.htmlInput_.getAttribute('spellcheck'), 'false'); + }); + }); + }); + + suite('Serialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + + this.assertValue = (value) => { + const block = this.workspace.newBlock('row_block'); + const field = new Blockly.FieldTextInput(value); + block.getInput('INPUT').appendField(field, 'TEXT'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual(jso['fields'], {'TEXT': value}); + }; + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Simple', function() { + this.assertValue('test text'); + }); + }); +}); diff --git a/tests/mocha/field_variable_test.js b/tests/mocha/field_variable_test.js index 2eafb6f42bb..d3d11d1f261 100644 --- a/tests/mocha/field_variable_test.js +++ b/tests/mocha/field_variable_test.js @@ -1,507 +1,507 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.fieldVariable'); - -const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); -const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); - - -suite('Variable Fields', function() { - const FAKE_VARIABLE_NAME = 'default_name'; - const FAKE_ID = 'id1'; - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - // Stub for default variable name. - sinon.stub(Blockly.Variables, 'generateUniqueName').returns( - FAKE_VARIABLE_NAME); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - /** - * Configuration for field creation tests with invalid values. - * @type {!Array} - */ - const invalidValueCreationTestCases = [ - {title: 'Undefined', value: undefined, args: [undefined]}, - {title: 'Null', value: null, args: [null]}, - {title: 'Boolean true', value: true, args: [true]}, - {title: 'Boolean false', value: false, args: [false]}, - {title: 'Number (Truthy)', value: 1, args: [1]}, - {title: 'Number (Falsy)', value: 0, args: [0]}, - {title: 'NaN', value: NaN, args: [NaN]}, - ]; - /** - * Configuration for field creation tests with valid values. - * @type {!Array} - */ - const validValueCreationTestCases = [ - {title: 'String', value: 'id2', args: ['name2'], - expectedValue: 'id2', expectedText: 'name2'}, - ]; - const addJson = function(testCase) { - testCase.json = {'variable': testCase.args[0]}; - }; - invalidValueCreationTestCases.forEach(addJson); - validValueCreationTestCases.forEach(addJson); - - const initVariableField = (workspace, fieldVariable) => { - const mockBlock = createTestBlock(); - mockBlock.workspace = workspace; - fieldVariable.setSourceBlock(mockBlock); - - // No view to initialize, but still need to init the model. - const genUidStub = createGenUidStubWithReturns(FAKE_ID); - fieldVariable.initModel(); - genUidStub.restore(); - - return fieldVariable; - }; - const customCreateWithJs = function(testCase) { - const fieldVariable = testCase ? new Blockly.FieldVariable(...testCase.args) : - new Blockly.FieldVariable(); - return initVariableField(this.workspace, fieldVariable); - }; - const customCreateWithJson = function(testCase) { - const fieldVariable = testCase ? - Blockly.FieldVariable.fromJson(testCase.json) : - Blockly.FieldVariable.fromJson({}); - return initVariableField(this.workspace, fieldVariable); - }; - - /** - * The expected default name for the field being tested. - * @type {*} - */ - const defaultFieldName = FAKE_VARIABLE_NAME; - /** - * Asserts that the field property values are set to default. - * @param {!Blockly.FieldVariable} field The field to check. - */ - const assertFieldDefault = function(field) { - assertFieldValue(field, FAKE_ID, defaultFieldName); - }; - /** - * Asserts that the field properties are correct based on the test case. - * @param {!Blockly.FieldVariable} field The field to check. - * @param {!FieldValueTestCase} testCase The test case. - */ - const validTestCaseAssertField = function(field, testCase) { - assertFieldValue(field, FAKE_ID, testCase.expectedText); - }; - - runConstructorSuiteTests( - Blockly.FieldVariable, validValueCreationTestCases, - invalidValueCreationTestCases, - validTestCaseAssertField, assertFieldDefault, customCreateWithJs); - - runFromJsonSuiteTests( - Blockly.FieldVariable, validValueCreationTestCases, - invalidValueCreationTestCases, - validTestCaseAssertField, assertFieldDefault, customCreateWithJson); - - suite('initModel', function() { - test('No Value Before InitModel', function() { - const fieldVariable = new Blockly.FieldVariable('name1'); - chai.assert.equal(fieldVariable.getText(), ''); - chai.assert.isNull(fieldVariable.getValue()); - }); - }); - - - /** - * Configuration for field tests with invalid values. - * @type {!Array} - */ - const invalidValueTestCases = [ - ...invalidValueCreationTestCases, - {title: 'Variable does not exist', value: 'id3', args: ['name2'], - expectedValue: 'id2', expectedText: 'name2'}, - ]; - /** - * Configuration for field tests with valid values. - * @type {!Array} - */ - const validValueTestCases = [ - {title: 'New variable ID', value: 'id2', args: ['name2'], - expectedValue: 'id2', expectedText: 'name2'}, - ]; - - suite('setValue', function() { - setup(function() { - this.workspace.createVariable('name2', null, 'id2'); - this.field = new Blockly.FieldVariable(null); - initVariableField(this.workspace, this.field); - - // Invalid value test are expected to log errors. - const nativeConsoleWarn = console.warn; - this.nativeConsoleWarn = nativeConsoleWarn; - console.warn = function(msg) { - if (!msg.includes('Variable id doesn\'t point to a real variable')) { - nativeConsoleWarn.call(this, ...arguments); - } - }; - }); - teardown(function() { - console.warn = this.nativeConsoleWarn; - }); - runSetValueTests(validValueTestCases, invalidValueTestCases, - FAKE_ID, defaultFieldName); - }); - - suite('Dropdown options', function() { - const assertDropdownContents = (fieldVariable, expectedVarOptions) => { - const dropdownOptions = Blockly.FieldVariable.dropdownCreate.call( - fieldVariable); - // Expect variable options, a rename option, and a delete option. - chai.assert.lengthOf(dropdownOptions, expectedVarOptions.length + 2); - for (let i = 0, option; (option = expectedVarOptions[i]); i++) { - chai.assert.deepEqual(dropdownOptions[i], option); - } - chai.assert.include( - dropdownOptions[dropdownOptions.length - 2][0], 'Rename'); - - chai.assert.include( - dropdownOptions[dropdownOptions.length - 1][0], 'Delete'); - }; - test('Contains variables created before field', function() { - this.workspace.createVariable('name1', '', 'id1'); - this.workspace.createVariable('name2', '', 'id2'); - // Expect that the dropdown options will contain the variables that exist - const fieldVariable = initVariableField( - this.workspace, new Blockly.FieldVariable('name2')); - assertDropdownContents(fieldVariable, - [['name1', 'id1'], ['name2', 'id2']]); - }); - test('Contains variables created after field', function() { - // Expect that the dropdown options will contain the variables that exist - const fieldVariable = initVariableField( - this.workspace, new Blockly.FieldVariable('name1')); - // Expect that variables created after field creation will show up too. - this.workspace.createVariable('name2', '', 'id2'); - assertDropdownContents(fieldVariable, - [['name1', 'id1'], ['name2', 'id2']]); - }); - test('Contains variables created before and after field', function() { - this.workspace.createVariable('name1', '', 'id1'); - this.workspace.createVariable('name2', '', 'id2'); - // Expect that the dropdown options will contain the variables that exist - const fieldVariable = initVariableField( - this.workspace, new Blockly.FieldVariable('name1')); - // Expect that variables created after field creation will show up too. - this.workspace.createVariable('name3', '', 'id3'); - assertDropdownContents(fieldVariable, - [['name1', 'id1'], ['name2', 'id2'], ['name3', 'id3']]); - }); - }); - - suite('Validators', function() { - setup(function() { - this.workspace.createVariable('name1', null, 'id1'); - this.workspace.createVariable('name2', null, 'id2'); - this.workspace.createVariable('name3', null, 'id3'); - this.variableField = initVariableField( - this.workspace, new Blockly.FieldVariable('name1')); - }); - suite('Null Validator', function() { - setup(function() { - this.variableField.setValidator(function() { - return null; - }); - }); - test('New Value', function() { - this.variableField.setValue('id2'); - assertFieldValue(this.variableField, 'id1', 'name1'); - }); - }); - suite('Force \'id\' ID Validator', function() { - setup(function() { - this.variableField.setValidator(function(newValue) { - return 'id' + newValue.charAt(newValue.length - 1); - }); - }); - test('New Value', function() { - // Must create the var so that the field doesn't throw an error. - this.workspace.createVariable('thing2', null, 'other2'); - this.variableField.setValue('other2'); - assertFieldValue(this.variableField, 'id2', 'name2'); - }); - }); - suite('Returns Undefined Validator', function() { - setup(function() { - this.variableField.setValidator(function() {}); - }); - test('New Value', function() { - this.variableField.setValue('id2'); - assertFieldValue(this.variableField, 'id2', 'name2'); - }); - }); - }); - - suite('Customizations', function() { - suite('Types and Default Types', function() { - test('JS Constructor', function() { - const field = new Blockly.FieldVariable( - 'test', undefined, ['Type1'], 'Type1'); - chai.assert.deepEqual(field.variableTypes, ['Type1']); - chai.assert.equal(field.defaultType_, 'Type1'); - }); - test('JSON Definition', function() { - const field = Blockly.FieldVariable.fromJson({ - variable: 'test', - variableTypes: ['Type1'], - defaultType: 'Type1', - }); - chai.assert.deepEqual(field.variableTypes, ['Type1']); - chai.assert.equal(field.defaultType_, 'Type1'); - }); - test('JS Configuration - Simple', function() { - const field = new Blockly.FieldVariable( - 'test', undefined, undefined, undefined, { - variableTypes: ['Type1'], - defaultType: 'Type1', - }); - chai.assert.deepEqual(field.variableTypes, ['Type1']); - chai.assert.equal(field.defaultType_, 'Type1'); - }); - test('JS Configuration - Ignore', function() { - const field = new Blockly.FieldVariable( - 'test', undefined, ['Type2'], 'Type2', { - variableTypes: ['Type1'], - defaultType: 'Type1', - }); - chai.assert.deepEqual(field.variableTypes, ['Type1']); - chai.assert.equal(field.defaultType_, 'Type1'); - }); - }); - }); - suite('Get variable types', function() { - setup(function() { - this.workspace.createVariable('name1', 'type1'); - this.workspace.createVariable('name2', 'type2'); - }); - test('variableTypes is undefined', function() { - // Expect that since variableTypes is undefined, only type empty string - // will be returned (regardless of what types are available on the workspace). - const fieldVariable = new Blockly.FieldVariable('name1'); - const resultTypes = fieldVariable.getVariableTypes_(); - chai.assert.deepEqual(resultTypes, ['']); - }); - test('variableTypes is explicit', function() { - // Expect that since variableTypes is defined, it will be the return - // value, regardless of what types are available on the workspace. - const fieldVariable = new Blockly.FieldVariable( - 'name1', null, ['type1', 'type2'], 'type1'); - const resultTypes = fieldVariable.getVariableTypes_(); - chai.assert.deepEqual(resultTypes, ['type1', 'type2']); - chai.assert.equal(fieldVariable.defaultType_, 'type1', - 'Default type was wrong'); - }); - test('variableTypes is null', function() { - // Expect all variable types to be returned. - // The field does not need to be initialized to do this--it just needs - // a pointer to the workspace. - const fieldVariable = new Blockly.FieldVariable('name1'); - const mockBlock = createTestBlock(); - mockBlock.workspace = this.workspace; - fieldVariable.setSourceBlock(mockBlock); - fieldVariable.variableTypes = null; - - const resultTypes = fieldVariable.getVariableTypes_(); - // The empty string is always one of the options. - chai.assert.deepEqual(resultTypes, ['type1', 'type2', '']); - }); - test('variableTypes is the empty list', function() { - const fieldVariable = new Blockly.FieldVariable('name1'); - const mockBlock = createTestBlock(); - mockBlock.workspace = this.workspace; - fieldVariable.setSourceBlock(mockBlock); - fieldVariable.variableTypes = []; - - chai.assert.throws(function() { - fieldVariable.getVariableTypes_(); - }); - }); - }); - suite('Default types', function() { - test('Default type exists', function() { - const fieldVariable = new Blockly.FieldVariable(null, null, ['b'], 'b'); - chai.assert.equal(fieldVariable.defaultType_, 'b', - 'The variable field\'s default type should be "b"'); - }); - test('No default type', function() { - const fieldVariable = new Blockly.FieldVariable(null); - chai.assert.equal(fieldVariable.defaultType_, '', 'The variable field\'s default type should be the empty string'); - chai.assert.isNull(fieldVariable.variableTypes, - 'The variable field\'s allowed types should be null'); - }); - test('Default type mismatch', function() { - // Invalid default type when creating a variable field. - chai.assert.throws(function() { - new Blockly.FieldVariable(null, null, ['a'], 'b'); - }); - }); - test('Default type mismatch with empty array', function() { - // Invalid default type when creating a variable field. - chai.assert.throws(function() { - new Blockly.FieldVariable(null, null, ['a']); - }); - }); - }); - suite('Renaming Variables', function() { - setup(function() { - this.workspace.createVariable('name1', null, 'id1'); - Blockly.defineBlocksWithJsonArray([{ - "type": "field_variable_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_variable", - "name": "VAR", - "variable": "name1", - }, - ], - }]); - this.variableBlock = new Blockly.Block(this.workspace, - 'field_variable_test_block'); - this.variableField = this.variableBlock.getField('VAR'); - }); - test('Rename & Keep Old ID', function() { - this.workspace.renameVariableById('id1', 'name2'); - chai.assert.equal(this.variableField.getText(), 'name2'); - chai.assert.equal(this.variableField.getValue(), 'id1'); - }); - test('Rename & Get New ID', function() { - this.workspace.createVariable('name2', null, 'id2'); - this.workspace.renameVariableById('id1', 'name2'); - chai.assert.equal(this.variableField.getText(), 'name2'); - chai.assert.equal(this.variableField.getValue(), 'id2'); - }); - }); - - suite('Serialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - createGenUidStubWithReturns(new Array(10).fill().map((_, i) => 'id' + i)); - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - suite('Full', function() { - test('Untyped', function() { - const block = this.workspace.newBlock('row_block'); - const field = new Blockly.FieldVariable('x'); - block.getInput('INPUT').appendField(field, 'VAR'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual( - jso['fields'], {'VAR': {'id': 'id2', 'name': 'x', 'type': ''}}); - }); - - test('Typed', function() { - const block = this.workspace.newBlock('row_block'); - const field = - new Blockly.FieldVariable('x', undefined, undefined, 'String'); - block.getInput('INPUT').appendField(field, 'VAR'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual( - jso['fields'], {'VAR': {'id': 'id2', 'name': 'x', 'type': 'String'}}); - }); - }); - - suite('Not full', function() { - test('Untyped', function() { - const block = this.workspace.newBlock('row_block'); - const field = new Blockly.FieldVariable('x'); - block.getInput('INPUT').appendField(field, 'VAR'); - const jso = Blockly.serialization.blocks.save( - block, {doFullSerialization: false}); - chai.assert.deepEqual(jso['fields'], {'VAR': {'id': 'id2'}}); - chai.assert.isUndefined(jso['fields']['VAR']['name']); - chai.assert.isUndefined(jso['fields']['VAR']['type']); - }); - - test('Typed', function() { - const block = this.workspace.newBlock('row_block'); - const field = - new Blockly.FieldVariable('x', undefined, undefined, 'String'); - block.getInput('INPUT').appendField(field, 'VAR'); - const jso = Blockly.serialization.blocks.save( - block, {doFullSerialization: false}); - chai.assert.deepEqual(jso['fields'], {'VAR': {'id': 'id2'}}); - chai.assert.isUndefined(jso['fields']['VAR']['name']); - chai.assert.isUndefined(jso['fields']['VAR']['type']); - }); - }); - }); - - suite('Deserialization', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - defineRowBlock(); - createGenUidStubWithReturns(new Array(10).fill().map((_, i) => 'id' + i)); - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('ID', function() { - this.workspace.createVariable('test', '', 'id1'); - const block = Blockly.serialization.blocks.append({ - 'type': 'variables_get', - 'fields': { - 'VAR': { - 'id': 'id1', - }, - }, - }, - this.workspace); - const variable = block.getField('VAR').getVariable(); - chai.assert.equal(variable.name, 'test'); - chai.assert.equal(variable.type, ''); - chai.assert.equal(variable.getId(), 'id1'); - }); - - test('Name, untyped', function() { - const block = Blockly.serialization.blocks.append({ - 'type': 'variables_get', - 'fields': { - 'VAR': { - 'name': 'test', - }, - }, - }, - this.workspace); - const variable = block.getField('VAR').getVariable(); - chai.assert.equal(variable.name, 'test'); - chai.assert.equal(variable.type, ''); - chai.assert.equal(variable.getId(), 'id2'); - }); - - test('Name, typed', function() { - const block = Blockly.serialization.blocks.append({ - 'type': 'variables_get', - 'fields': { - 'VAR': { - 'name': 'test', - 'type': 'string', - }, - }, - }, - this.workspace); - const variable = block.getField('VAR').getVariable(); - chai.assert.equal(variable.name, 'test'); - chai.assert.equal(variable.type, 'string'); - chai.assert.equal(variable.getId(), 'id2'); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.fieldVariable'); + +const {assertFieldValue, runConstructorSuiteTests, runFromJsonSuiteTests, runSetValueTests} = goog.require('Blockly.test.helpers.fields'); +const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {createTestBlock, defineRowBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); + + +suite('Variable Fields', function() { + const FAKE_VARIABLE_NAME = 'default_name'; + const FAKE_ID = 'id1'; + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + // Stub for default variable name. + sinon.stub(Blockly.Variables, 'generateUniqueName').returns( + FAKE_VARIABLE_NAME); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + /** + * Configuration for field creation tests with invalid values. + * @type {!Array} + */ + const invalidValueCreationTestCases = [ + {title: 'Undefined', value: undefined, args: [undefined]}, + {title: 'Null', value: null, args: [null]}, + {title: 'Boolean true', value: true, args: [true]}, + {title: 'Boolean false', value: false, args: [false]}, + {title: 'Number (Truthy)', value: 1, args: [1]}, + {title: 'Number (Falsy)', value: 0, args: [0]}, + {title: 'NaN', value: NaN, args: [NaN]}, + ]; + /** + * Configuration for field creation tests with valid values. + * @type {!Array} + */ + const validValueCreationTestCases = [ + {title: 'String', value: 'id2', args: ['name2'], + expectedValue: 'id2', expectedText: 'name2'}, + ]; + const addJson = function(testCase) { + testCase.json = {'variable': testCase.args[0]}; + }; + invalidValueCreationTestCases.forEach(addJson); + validValueCreationTestCases.forEach(addJson); + + const initVariableField = (workspace, fieldVariable) => { + const mockBlock = createTestBlock(); + mockBlock.workspace = workspace; + fieldVariable.setSourceBlock(mockBlock); + + // No view to initialize, but still need to init the model. + const genUidStub = createGenUidStubWithReturns(FAKE_ID); + fieldVariable.initModel(); + genUidStub.restore(); + + return fieldVariable; + }; + const customCreateWithJs = function(testCase) { + const fieldVariable = testCase ? new Blockly.FieldVariable(...testCase.args) : + new Blockly.FieldVariable(); + return initVariableField(this.workspace, fieldVariable); + }; + const customCreateWithJson = function(testCase) { + const fieldVariable = testCase ? + Blockly.FieldVariable.fromJson(testCase.json) : + Blockly.FieldVariable.fromJson({}); + return initVariableField(this.workspace, fieldVariable); + }; + + /** + * The expected default name for the field being tested. + * @type {*} + */ + const defaultFieldName = FAKE_VARIABLE_NAME; + /** + * Asserts that the field property values are set to default. + * @param {!Blockly.FieldVariable} field The field to check. + */ + const assertFieldDefault = function(field) { + assertFieldValue(field, FAKE_ID, defaultFieldName); + }; + /** + * Asserts that the field properties are correct based on the test case. + * @param {!Blockly.FieldVariable} field The field to check. + * @param {!FieldValueTestCase} testCase The test case. + */ + const validTestCaseAssertField = function(field, testCase) { + assertFieldValue(field, FAKE_ID, testCase.expectedText); + }; + + runConstructorSuiteTests( + Blockly.FieldVariable, validValueCreationTestCases, + invalidValueCreationTestCases, + validTestCaseAssertField, assertFieldDefault, customCreateWithJs); + + runFromJsonSuiteTests( + Blockly.FieldVariable, validValueCreationTestCases, + invalidValueCreationTestCases, + validTestCaseAssertField, assertFieldDefault, customCreateWithJson); + + suite('initModel', function() { + test('No Value Before InitModel', function() { + const fieldVariable = new Blockly.FieldVariable('name1'); + chai.assert.equal(fieldVariable.getText(), ''); + chai.assert.isNull(fieldVariable.getValue()); + }); + }); + + + /** + * Configuration for field tests with invalid values. + * @type {!Array} + */ + const invalidValueTestCases = [ + ...invalidValueCreationTestCases, + {title: 'Variable does not exist', value: 'id3', args: ['name2'], + expectedValue: 'id2', expectedText: 'name2'}, + ]; + /** + * Configuration for field tests with valid values. + * @type {!Array} + */ + const validValueTestCases = [ + {title: 'New variable ID', value: 'id2', args: ['name2'], + expectedValue: 'id2', expectedText: 'name2'}, + ]; + + suite('setValue', function() { + setup(function() { + this.workspace.createVariable('name2', null, 'id2'); + this.field = new Blockly.FieldVariable(null); + initVariableField(this.workspace, this.field); + + // Invalid value test are expected to log errors. + const nativeConsoleWarn = console.warn; + this.nativeConsoleWarn = nativeConsoleWarn; + console.warn = function(msg) { + if (!msg.includes('Variable id doesn\'t point to a real variable')) { + nativeConsoleWarn.call(this, ...arguments); + } + }; + }); + teardown(function() { + console.warn = this.nativeConsoleWarn; + }); + runSetValueTests(validValueTestCases, invalidValueTestCases, + FAKE_ID, defaultFieldName); + }); + + suite('Dropdown options', function() { + const assertDropdownContents = (fieldVariable, expectedVarOptions) => { + const dropdownOptions = Blockly.FieldVariable.dropdownCreate.call( + fieldVariable); + // Expect variable options, a rename option, and a delete option. + chai.assert.lengthOf(dropdownOptions, expectedVarOptions.length + 2); + for (let i = 0, option; (option = expectedVarOptions[i]); i++) { + chai.assert.deepEqual(dropdownOptions[i], option); + } + chai.assert.include( + dropdownOptions[dropdownOptions.length - 2][0], 'Rename'); + + chai.assert.include( + dropdownOptions[dropdownOptions.length - 1][0], 'Delete'); + }; + test('Contains variables created before field', function() { + this.workspace.createVariable('name1', '', 'id1'); + this.workspace.createVariable('name2', '', 'id2'); + // Expect that the dropdown options will contain the variables that exist + const fieldVariable = initVariableField( + this.workspace, new Blockly.FieldVariable('name2')); + assertDropdownContents(fieldVariable, + [['name1', 'id1'], ['name2', 'id2']]); + }); + test('Contains variables created after field', function() { + // Expect that the dropdown options will contain the variables that exist + const fieldVariable = initVariableField( + this.workspace, new Blockly.FieldVariable('name1')); + // Expect that variables created after field creation will show up too. + this.workspace.createVariable('name2', '', 'id2'); + assertDropdownContents(fieldVariable, + [['name1', 'id1'], ['name2', 'id2']]); + }); + test('Contains variables created before and after field', function() { + this.workspace.createVariable('name1', '', 'id1'); + this.workspace.createVariable('name2', '', 'id2'); + // Expect that the dropdown options will contain the variables that exist + const fieldVariable = initVariableField( + this.workspace, new Blockly.FieldVariable('name1')); + // Expect that variables created after field creation will show up too. + this.workspace.createVariable('name3', '', 'id3'); + assertDropdownContents(fieldVariable, + [['name1', 'id1'], ['name2', 'id2'], ['name3', 'id3']]); + }); + }); + + suite('Validators', function() { + setup(function() { + this.workspace.createVariable('name1', null, 'id1'); + this.workspace.createVariable('name2', null, 'id2'); + this.workspace.createVariable('name3', null, 'id3'); + this.variableField = initVariableField( + this.workspace, new Blockly.FieldVariable('name1')); + }); + suite('Null Validator', function() { + setup(function() { + this.variableField.setValidator(function() { + return null; + }); + }); + test('New Value', function() { + this.variableField.setValue('id2'); + assertFieldValue(this.variableField, 'id1', 'name1'); + }); + }); + suite('Force \'id\' ID Validator', function() { + setup(function() { + this.variableField.setValidator(function(newValue) { + return 'id' + newValue.charAt(newValue.length - 1); + }); + }); + test('New Value', function() { + // Must create the var so that the field doesn't throw an error. + this.workspace.createVariable('thing2', null, 'other2'); + this.variableField.setValue('other2'); + assertFieldValue(this.variableField, 'id2', 'name2'); + }); + }); + suite('Returns Undefined Validator', function() { + setup(function() { + this.variableField.setValidator(function() {}); + }); + test('New Value', function() { + this.variableField.setValue('id2'); + assertFieldValue(this.variableField, 'id2', 'name2'); + }); + }); + }); + + suite('Customizations', function() { + suite('Types and Default Types', function() { + test('JS Constructor', function() { + const field = new Blockly.FieldVariable( + 'test', undefined, ['Type1'], 'Type1'); + chai.assert.deepEqual(field.variableTypes, ['Type1']); + chai.assert.equal(field.defaultType_, 'Type1'); + }); + test('JSON Definition', function() { + const field = Blockly.FieldVariable.fromJson({ + variable: 'test', + variableTypes: ['Type1'], + defaultType: 'Type1', + }); + chai.assert.deepEqual(field.variableTypes, ['Type1']); + chai.assert.equal(field.defaultType_, 'Type1'); + }); + test('JS Configuration - Simple', function() { + const field = new Blockly.FieldVariable( + 'test', undefined, undefined, undefined, { + variableTypes: ['Type1'], + defaultType: 'Type1', + }); + chai.assert.deepEqual(field.variableTypes, ['Type1']); + chai.assert.equal(field.defaultType_, 'Type1'); + }); + test('JS Configuration - Ignore', function() { + const field = new Blockly.FieldVariable( + 'test', undefined, ['Type2'], 'Type2', { + variableTypes: ['Type1'], + defaultType: 'Type1', + }); + chai.assert.deepEqual(field.variableTypes, ['Type1']); + chai.assert.equal(field.defaultType_, 'Type1'); + }); + }); + }); + suite('Get variable types', function() { + setup(function() { + this.workspace.createVariable('name1', 'type1'); + this.workspace.createVariable('name2', 'type2'); + }); + test('variableTypes is undefined', function() { + // Expect that since variableTypes is undefined, only type empty string + // will be returned (regardless of what types are available on the workspace). + const fieldVariable = new Blockly.FieldVariable('name1'); + const resultTypes = fieldVariable.getVariableTypes_(); + chai.assert.deepEqual(resultTypes, ['']); + }); + test('variableTypes is explicit', function() { + // Expect that since variableTypes is defined, it will be the return + // value, regardless of what types are available on the workspace. + const fieldVariable = new Blockly.FieldVariable( + 'name1', null, ['type1', 'type2'], 'type1'); + const resultTypes = fieldVariable.getVariableTypes_(); + chai.assert.deepEqual(resultTypes, ['type1', 'type2']); + chai.assert.equal(fieldVariable.defaultType_, 'type1', + 'Default type was wrong'); + }); + test('variableTypes is null', function() { + // Expect all variable types to be returned. + // The field does not need to be initialized to do this--it just needs + // a pointer to the workspace. + const fieldVariable = new Blockly.FieldVariable('name1'); + const mockBlock = createTestBlock(); + mockBlock.workspace = this.workspace; + fieldVariable.setSourceBlock(mockBlock); + fieldVariable.variableTypes = null; + + const resultTypes = fieldVariable.getVariableTypes_(); + // The empty string is always one of the options. + chai.assert.deepEqual(resultTypes, ['type1', 'type2', '']); + }); + test('variableTypes is the empty list', function() { + const fieldVariable = new Blockly.FieldVariable('name1'); + const mockBlock = createTestBlock(); + mockBlock.workspace = this.workspace; + fieldVariable.setSourceBlock(mockBlock); + fieldVariable.variableTypes = []; + + chai.assert.throws(function() { + fieldVariable.getVariableTypes_(); + }); + }); + }); + suite('Default types', function() { + test('Default type exists', function() { + const fieldVariable = new Blockly.FieldVariable(null, null, ['b'], 'b'); + chai.assert.equal(fieldVariable.defaultType_, 'b', + 'The variable field\'s default type should be "b"'); + }); + test('No default type', function() { + const fieldVariable = new Blockly.FieldVariable(null); + chai.assert.equal(fieldVariable.defaultType_, '', 'The variable field\'s default type should be the empty string'); + chai.assert.isNull(fieldVariable.variableTypes, + 'The variable field\'s allowed types should be null'); + }); + test('Default type mismatch', function() { + // Invalid default type when creating a variable field. + chai.assert.throws(function() { + new Blockly.FieldVariable(null, null, ['a'], 'b'); + }); + }); + test('Default type mismatch with empty array', function() { + // Invalid default type when creating a variable field. + chai.assert.throws(function() { + new Blockly.FieldVariable(null, null, ['a']); + }); + }); + }); + suite('Renaming Variables', function() { + setup(function() { + this.workspace.createVariable('name1', null, 'id1'); + Blockly.defineBlocksWithJsonArray([{ + "type": "field_variable_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_variable", + "name": "VAR", + "variable": "name1", + }, + ], + }]); + this.variableBlock = new Blockly.Block(this.workspace, + 'field_variable_test_block'); + this.variableField = this.variableBlock.getField('VAR'); + }); + test('Rename & Keep Old ID', function() { + this.workspace.renameVariableById('id1', 'name2'); + chai.assert.equal(this.variableField.getText(), 'name2'); + chai.assert.equal(this.variableField.getValue(), 'id1'); + }); + test('Rename & Get New ID', function() { + this.workspace.createVariable('name2', null, 'id2'); + this.workspace.renameVariableById('id1', 'name2'); + chai.assert.equal(this.variableField.getText(), 'name2'); + chai.assert.equal(this.variableField.getValue(), 'id2'); + }); + }); + + suite('Serialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + createGenUidStubWithReturns(new Array(10).fill().map((_, i) => 'id' + i)); + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + suite('Full', function() { + test('Untyped', function() { + const block = this.workspace.newBlock('row_block'); + const field = new Blockly.FieldVariable('x'); + block.getInput('INPUT').appendField(field, 'VAR'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual( + jso['fields'], {'VAR': {'id': 'id2', 'name': 'x', 'type': ''}}); + }); + + test('Typed', function() { + const block = this.workspace.newBlock('row_block'); + const field = + new Blockly.FieldVariable('x', undefined, undefined, 'String'); + block.getInput('INPUT').appendField(field, 'VAR'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual( + jso['fields'], {'VAR': {'id': 'id2', 'name': 'x', 'type': 'String'}}); + }); + }); + + suite('Not full', function() { + test('Untyped', function() { + const block = this.workspace.newBlock('row_block'); + const field = new Blockly.FieldVariable('x'); + block.getInput('INPUT').appendField(field, 'VAR'); + const jso = Blockly.serialization.blocks.save( + block, {doFullSerialization: false}); + chai.assert.deepEqual(jso['fields'], {'VAR': {'id': 'id2'}}); + chai.assert.isUndefined(jso['fields']['VAR']['name']); + chai.assert.isUndefined(jso['fields']['VAR']['type']); + }); + + test('Typed', function() { + const block = this.workspace.newBlock('row_block'); + const field = + new Blockly.FieldVariable('x', undefined, undefined, 'String'); + block.getInput('INPUT').appendField(field, 'VAR'); + const jso = Blockly.serialization.blocks.save( + block, {doFullSerialization: false}); + chai.assert.deepEqual(jso['fields'], {'VAR': {'id': 'id2'}}); + chai.assert.isUndefined(jso['fields']['VAR']['name']); + chai.assert.isUndefined(jso['fields']['VAR']['type']); + }); + }); + }); + + suite('Deserialization', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + defineRowBlock(); + createGenUidStubWithReturns(new Array(10).fill().map((_, i) => 'id' + i)); + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('ID', function() { + this.workspace.createVariable('test', '', 'id1'); + const block = Blockly.serialization.blocks.append({ + 'type': 'variables_get', + 'fields': { + 'VAR': { + 'id': 'id1', + }, + }, + }, + this.workspace); + const variable = block.getField('VAR').getVariable(); + chai.assert.equal(variable.name, 'test'); + chai.assert.equal(variable.type, ''); + chai.assert.equal(variable.getId(), 'id1'); + }); + + test('Name, untyped', function() { + const block = Blockly.serialization.blocks.append({ + 'type': 'variables_get', + 'fields': { + 'VAR': { + 'name': 'test', + }, + }, + }, + this.workspace); + const variable = block.getField('VAR').getVariable(); + chai.assert.equal(variable.name, 'test'); + chai.assert.equal(variable.type, ''); + chai.assert.equal(variable.getId(), 'id2'); + }); + + test('Name, typed', function() { + const block = Blockly.serialization.blocks.append({ + 'type': 'variables_get', + 'fields': { + 'VAR': { + 'name': 'test', + 'type': 'string', + }, + }, + }, + this.workspace); + const variable = block.getField('VAR').getVariable(); + chai.assert.equal(variable.name, 'test'); + chai.assert.equal(variable.type, 'string'); + chai.assert.equal(variable.getId(), 'id2'); + }); + }); +}); diff --git a/tests/mocha/flyout_test.js b/tests/mocha/flyout_test.js index 8fbc38659e0..7eb6006e91a 100644 --- a/tests/mocha/flyout_test.js +++ b/tests/mocha/flyout_test.js @@ -1,586 +1,586 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.flyout'); - -const {defineStackBlock, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {getBasicToolbox, getChildItem, getCollapsibleItem, getDeeplyNestedJSON, getInjectedToolbox, getNonCollapsibleItem, getProperSimpleJson, getSeparator, getSimpleJson, getXmlArray} = goog.require('Blockly.test.helpers.toolboxDefinitions'); - - -suite('Flyout', function() { - setup(function() { - sharedTestSetup.call(this); - Blockly.defineBlocksWithJsonArray([{ - "type": "basic_block", - "message0": "%1", - "args0": [ - { - "type": "field_input", - "name": "TEXT", - "text": "default", - }, - ], - }]); - this.toolboxXml = document.getElementById('toolbox-simple'); - this.workspace = Blockly.inject('blocklyDiv', - { - toolbox: this.toolboxXml, - }); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('position', function() { - suite('vertical flyout', function() { - suite('simple flyout', function() { - setup(function() { - this.flyout = this.workspace.getFlyout(); - this.targetMetricsManager = this.flyout.targetWorkspace.getMetricsManager(); - }); - test('y is always 0', function() { - chai.assert.equal(this.flyout.getY(), 0, 'y coordinate in vertical flyout should be 0'); - }); - test('x is right of workspace if flyout at right', function() { - sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ - width: 100, - }); - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.RIGHT; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.RIGHT; - chai.assert.equal(this.flyout.getX(), 100, 'x should be right of workspace'); - }); - test('x is 0 if flyout at left', function() { - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.LEFT; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.LEFT; - chai.assert.equal(this.flyout.getX(), 0, 'x should be 0 if the flyout is on the left'); - }); - }); - suite('toolbox flyout', function() { - setup(function() { - const toolbox = document.getElementById('toolbox-categories'); - this.workspace = Blockly.inject('blocklyDiv', - { - toolbox: toolbox, - }); - this.flyout = this.workspace.getToolbox().getFlyout(); - this.targetMetricsManager = this.flyout.targetWorkspace.getMetricsManager(); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - test('x is aligned with toolbox at left', function() { - sinon.stub(this.targetMetricsManager, 'getToolboxMetrics').returns({ - width: 20, - }); - this.flyout.setVisible(true); - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.LEFT; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.LEFT; - chai.assert.equal(this.flyout.getX(), 20, 'x should be aligned with toolbox'); - }); - test('x is aligned with toolbox at right', function() { - sinon.stub(this.targetMetricsManager, 'getToolboxMetrics').returns({ - width: 20, - }); - sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ - width: 100, - }); - this.flyout.width_ = 10; - this.flyout.setVisible(true); - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.RIGHT; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.RIGHT; - chai.assert.equal(this.flyout.getX(), 90, 'x + width should be aligned with toolbox'); - }); - }); - // These tests simulate a trashcan flyout, i.e. the flyout under test is on the - // opposite side of the workspace toolbox setting. - suite('trashcan flyout', function() { - setup(function() { - this.flyout = this.workspace.getFlyout(); - this.targetMetricsManager = this.flyout.targetWorkspace.getMetricsManager(); - }); - test('x is 0 if trashcan on left', function() { - sinon.stub(this.flyout.targetWorkspace, 'getMetrics').returns({ - viewWidth: 100, - }); - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.RIGHT; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.LEFT; - chai.assert.equal(this.flyout.getX(), 0, 'x should be aligned with left edge'); - }); - test('trashcan on right covers right edge of workspace', function() { - this.flyout.width_ = 20; - sinon.stub(this.targetMetricsManager, 'getAbsoluteMetrics').returns({ - left: 10, - }); - sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ - width: 100, - }); - - this.flyout.setVisible(true); - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.LEFT; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.RIGHT; - chai.assert.equal(this.flyout.getX(), 90, 'x + width should be aligned with right edge'); - }); - }); - }); - - suite('horizontal flyout', function() { - setup(function() { - this.workspace = Blockly.inject('blocklyDiv', - { - toolbox: this.toolboxXml, - horizontalLayout: true, - }); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - suite('simple flyout', function() { - setup(function() { - this.flyout = this.workspace.getFlyout(); - this.targetMetricsManager = this.flyout.targetWorkspace.getMetricsManager(); - }); - test('x is always 0', function() { - chai.assert.equal(this.flyout.getX(), 0, 'x coordinate in horizontal flyout should be 0'); - }); - test('y is 0 if flyout at top', function() { - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.TOP; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.TOP; - chai.assert.equal(this.flyout.getY(), 0, 'y should be 0 if flyout is at the top'); - }); - test('y is below workspace if flyout at bottom', function() { - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.BOTTOM; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.BOTTOM; - sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ - height: 50, - }); - chai.assert.equal(this.flyout.getY(), 50, 'y should be below the workspace'); - }); - }); - suite('toolbox flyout', function() { - setup(function() { - const toolbox = document.getElementById('toolbox-categories'); - this.workspace = Blockly.inject('blocklyDiv', - { - toolbox: toolbox, - horizontalLayout: true, - }); - this.flyout = this.workspace.getToolbox().getFlyout(); - this.targetMetricsManager = - this.flyout.targetWorkspace.getMetricsManager(); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - test('y is aligned with toolbox at top', function() { - sinon.stub(this.targetMetricsManager, 'getToolboxMetrics').returns({ - height: 20, - }); - this.flyout.setVisible(true); - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.TOP; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.TOP; - chai.assert.equal(this.flyout.getY(), 20, 'y should be aligned with toolbox'); - }); - test('y is aligned with toolbox at bottom', function() { - sinon.stub(this.targetMetricsManager, 'getToolboxMetrics').returns({ - height: 20, - }); - sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ - height: 100, - }); - this.flyout.height_ = 30; - this.flyout.setVisible(true); - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.BOTTOM; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.BOTTOM; - chai.assert.equal(this.flyout.getY(), 70, 'y + height should be aligned with toolbox'); - }); - }); - // These tests simulate a trashcan flyout, i.e. the flyout under test is on the - // opposite side of the workspace toolbox setting. - suite('trashcan flyout', function() { - setup(function() { - this.flyout = this.workspace.getFlyout(); - this.targetMetricsManager = - this.flyout.targetWorkspace.getMetricsManager(); - }); - test('y is 0 if trashcan at top', function() { - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.BOTTOM; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.TOP; - chai.assert.equal(this.flyout.getY(), 0, 'y should be aligned with top'); - }); - test('trashcan on bottom covers bottom of workspace', function() { - this.flyout.targetWorkspace.toolboxPosition = - Blockly.utils.toolbox.Position.TOP; - this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.BOTTOM; - sinon.stub(this.targetMetricsManager, 'getAbsoluteMetrics').returns({ - top: 10, - }); - sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ - height: 50, - }); - this.flyout.setVisible(true); - this.flyout.height_ = 20; - chai.assert.equal(this.flyout.getY(), 40, 'y + height should be aligned with bottom'); - }); - }); - }); - }); - - suite('createFlyoutInfo_', function() { - setup(function() { - this.flyout = this.workspace.getFlyout(); - this.createFlyoutSpy = sinon.spy(this.flyout, 'createFlyoutInfo_'); - }); - - function checkFlyoutInfo(flyoutSpy) { - const flyoutInfo = flyoutSpy.returnValues[0]; - const contents = flyoutInfo.contents; - const gaps = flyoutInfo.gaps; - - const expectedGaps = [20, 24, 24]; - chai.assert.deepEqual(gaps, expectedGaps); - - chai.assert.equal(contents.length, 3, 'Contents'); - - chai.assert.equal(contents[0].type, 'block', 'Contents'); - const block = contents[0]['block']; - chai.assert.instanceOf(block, Blockly.BlockSvg); - chai.assert.equal(block.getFieldValue('OP'), 'NEQ'); - const childA = block.getInputTargetBlock('A'); - const childB = block.getInputTargetBlock('B'); - chai.assert.isTrue(childA.isShadow()); - chai.assert.isFalse(childB.isShadow()); - chai.assert.equal(childA.getFieldValue('NUM'), 1); - chai.assert.equal(childB.getFieldValue('NUM'), 2); - - chai.assert.equal(contents[1].type, 'button', 'Contents'); - chai.assert.instanceOf(contents[1]['button'], Blockly.FlyoutButton); - - chai.assert.equal(contents[2].type, 'button', 'Contents'); - chai.assert.instanceOf(contents[2]['button'], Blockly.FlyoutButton); - } - - suite('Direct show', function() { - test('Node', function() { - this.flyout.show(this.toolboxXml); - checkFlyoutInfo(this.createFlyoutSpy); - }); - - test('NodeList', function() { - const nodeList = document.getElementById('toolbox-simple').childNodes; - this.flyout.show(nodeList); - checkFlyoutInfo(this.createFlyoutSpy); - }); - - test('Array of JSON', function() { - this.flyout.show(getSimpleJson()); - checkFlyoutInfo(this.createFlyoutSpy); - }); - - test('Array of Proper JSON', function() { - this.flyout.show(getProperSimpleJson()); - checkFlyoutInfo(this.createFlyoutSpy); - }); - - test('Array of XML', function() { - this.flyout.show(getXmlArray()); - checkFlyoutInfo(this.createFlyoutSpy); - }); - }); - - suite('Dynamic category', function() { - setup(function() { - this.stubAndAssert = function(val) { - sinon.stub( - this.flyout.workspace_.targetWorkspace, - 'getToolboxCategoryCallback') - .returns(function() {return val;}); - this.flyout.show('someString'); - checkFlyoutInfo(this.createFlyoutSpy); - }; - }); - - test('No category available', function() { - chai.assert.throws( - function() { - this.flyout.show('someString'); - }.bind(this), - 'Couldn\'t find a callback function when opening ' + - 'a toolbox category.'); - }); - - test('Node', function() { - this.stubAndAssert(this.toolboxXml); - }); - - test('NodeList', function() { - this.stubAndAssert( - document.getElementById('toolbox-simple').childNodes); - }); - - test('Array of JSON', function() { - this.stubAndAssert(getSimpleJson()); - }); - - test('Array of Proper JSON', function() { - this.stubAndAssert(getProperSimpleJson()); - }); - - test('Array of XML', function() { - this.stubAndAssert(getXmlArray()); - }); - }); - }); - - suite('Creating blocks', function() { - suite('Enabled/Disabled', function() { - setup(function() { - this.flyout = this.workspace.getFlyout(); - - this.assertDisabled = function(disabled) { - const block = this.flyout.getWorkspace().getTopBlocks(false)[0]; - chai.assert.equal(!block.isEnabled(), disabled); - }; - }); - - suite('XML', function() { - test('True string', function() { - const xml = Blockly.Xml.textToDom( - '' + - '' + - '' - ); - this.flyout.show(xml); - this.assertDisabled(true); - }); - - test('False string', function() { - const xml = Blockly.Xml.textToDom( - '' + - '' + - '' - ); - this.flyout.show(xml); - this.assertDisabled(false); - }); - - test('Disabled string', function() { - // The XML system supports this for some reason!? - const xml = Blockly.Xml.textToDom( - '' + - '' + - '' - ); - this.flyout.show(xml); - this.assertDisabled(true); - }); - - test('Different string', function() { - const xml = Blockly.Xml.textToDom( - '' + - '' + - '' - ); - this.flyout.show(xml); - this.assertDisabled(false); - }); - }); - - suite('JSON', function() { - test('All undefined', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - }, - ]; - this.flyout.show(json); - this.assertDisabled(false); - }); - - test('Enabled true', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - 'enabled': true, - }, - ]; - this.flyout.show(json); - this.assertDisabled(false); - }); - - test('Enabled false', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - 'enabled': false, - }, - ]; - this.flyout.show(json); - this.assertDisabled(true); - }); - - test('Disabled true string', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - 'disabled': 'true', - }, - ]; - this.flyout.show(json); - this.assertDisabled(true); - }); - - test('Disabled false string', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - 'disabled': 'false', - }, - ]; - this.flyout.show(json); - this.assertDisabled(false); - }); - - test('Disabled string', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - 'disabled': 'disabled', // This is not respected by the JSON! - }, - ]; - this.flyout.show(json); - this.assertDisabled(false); - }); - - test('Disabled true value', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - 'disabled': true, - }, - ]; - this.flyout.show(json); - this.assertDisabled(true); - }); - - test('Disabled false value', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - 'disabled': false, - }, - ]; - this.flyout.show(json); - this.assertDisabled(false); - }); - - test('Disabled different string', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - 'disabled': 'random', - }, - ]; - this.flyout.show(json); - this.assertDisabled(false); - }); - - test('Disabled empty string', function() { - const json = [ - { - 'kind': 'block', - 'type': 'text_print', - 'disabled': '', - }, - ]; - this.flyout.show(json); - this.assertDisabled(false); - }); - }); - }); - }); - - suite('Recycling', function() { - setup(function() { - this.flyout = this.workspace.getFlyout(); - }); - - test('Recycling disabled', function() { - this.flyout.show({ - 'contents': [ - { - 'kind': 'BLOCK', - 'type': 'math_number', - 'fields': { - 'NUM': 123, - }, - }, - ], - }); - this.flyout.show({ - 'contents': [ - { - 'kind': 'BLOCK', - 'type': 'math_number', - 'fields': { - 'NUM': 321, - }, - }, - ], - }); - const block = this.flyout.workspace_.getAllBlocks()[0]; - chai.assert.equal(block.getFieldValue('NUM'), 321); - }); - - test('Recycling enabled', function() { - this.flyout.blockIsRecyclable_ = function() {return true;}; - this.flyout.show({ - 'contents': [ - { - 'kind': 'BLOCK', - 'type': 'math_number', - 'fields': { - 'NUM': 123, - }, - }, - ], - }); - this.flyout.show({ - 'contents': [ - { - 'kind': 'BLOCK', - 'type': 'math_number', - 'fields': { - 'NUM': 321, - }, - }, - ], - }); - const block = this.flyout.workspace_.getAllBlocks()[0]; - chai.assert.equal(block.getFieldValue('NUM'), 123); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.flyout'); + +const {defineStackBlock, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {getBasicToolbox, getChildItem, getCollapsibleItem, getDeeplyNestedJSON, getInjectedToolbox, getNonCollapsibleItem, getProperSimpleJson, getSeparator, getSimpleJson, getXmlArray} = goog.require('Blockly.test.helpers.toolboxDefinitions'); + + +suite('Flyout', function() { + setup(function() { + sharedTestSetup.call(this); + Blockly.defineBlocksWithJsonArray([{ + "type": "basic_block", + "message0": "%1", + "args0": [ + { + "type": "field_input", + "name": "TEXT", + "text": "default", + }, + ], + }]); + this.toolboxXml = document.getElementById('toolbox-simple'); + this.workspace = Blockly.inject('blocklyDiv', + { + toolbox: this.toolboxXml, + }); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('position', function() { + suite('vertical flyout', function() { + suite('simple flyout', function() { + setup(function() { + this.flyout = this.workspace.getFlyout(); + this.targetMetricsManager = this.flyout.targetWorkspace.getMetricsManager(); + }); + test('y is always 0', function() { + chai.assert.equal(this.flyout.getY(), 0, 'y coordinate in vertical flyout should be 0'); + }); + test('x is right of workspace if flyout at right', function() { + sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ + width: 100, + }); + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.RIGHT; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.RIGHT; + chai.assert.equal(this.flyout.getX(), 100, 'x should be right of workspace'); + }); + test('x is 0 if flyout at left', function() { + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.LEFT; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.LEFT; + chai.assert.equal(this.flyout.getX(), 0, 'x should be 0 if the flyout is on the left'); + }); + }); + suite('toolbox flyout', function() { + setup(function() { + const toolbox = document.getElementById('toolbox-categories'); + this.workspace = Blockly.inject('blocklyDiv', + { + toolbox: toolbox, + }); + this.flyout = this.workspace.getToolbox().getFlyout(); + this.targetMetricsManager = this.flyout.targetWorkspace.getMetricsManager(); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + test('x is aligned with toolbox at left', function() { + sinon.stub(this.targetMetricsManager, 'getToolboxMetrics').returns({ + width: 20, + }); + this.flyout.setVisible(true); + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.LEFT; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.LEFT; + chai.assert.equal(this.flyout.getX(), 20, 'x should be aligned with toolbox'); + }); + test('x is aligned with toolbox at right', function() { + sinon.stub(this.targetMetricsManager, 'getToolboxMetrics').returns({ + width: 20, + }); + sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ + width: 100, + }); + this.flyout.width_ = 10; + this.flyout.setVisible(true); + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.RIGHT; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.RIGHT; + chai.assert.equal(this.flyout.getX(), 90, 'x + width should be aligned with toolbox'); + }); + }); + // These tests simulate a trashcan flyout, i.e. the flyout under test is on the + // opposite side of the workspace toolbox setting. + suite('trashcan flyout', function() { + setup(function() { + this.flyout = this.workspace.getFlyout(); + this.targetMetricsManager = this.flyout.targetWorkspace.getMetricsManager(); + }); + test('x is 0 if trashcan on left', function() { + sinon.stub(this.flyout.targetWorkspace, 'getMetrics').returns({ + viewWidth: 100, + }); + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.RIGHT; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.LEFT; + chai.assert.equal(this.flyout.getX(), 0, 'x should be aligned with left edge'); + }); + test('trashcan on right covers right edge of workspace', function() { + this.flyout.width_ = 20; + sinon.stub(this.targetMetricsManager, 'getAbsoluteMetrics').returns({ + left: 10, + }); + sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ + width: 100, + }); + + this.flyout.setVisible(true); + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.LEFT; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.RIGHT; + chai.assert.equal(this.flyout.getX(), 90, 'x + width should be aligned with right edge'); + }); + }); + }); + + suite('horizontal flyout', function() { + setup(function() { + this.workspace = Blockly.inject('blocklyDiv', + { + toolbox: this.toolboxXml, + horizontalLayout: true, + }); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + suite('simple flyout', function() { + setup(function() { + this.flyout = this.workspace.getFlyout(); + this.targetMetricsManager = this.flyout.targetWorkspace.getMetricsManager(); + }); + test('x is always 0', function() { + chai.assert.equal(this.flyout.getX(), 0, 'x coordinate in horizontal flyout should be 0'); + }); + test('y is 0 if flyout at top', function() { + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.TOP; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.TOP; + chai.assert.equal(this.flyout.getY(), 0, 'y should be 0 if flyout is at the top'); + }); + test('y is below workspace if flyout at bottom', function() { + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.BOTTOM; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.BOTTOM; + sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ + height: 50, + }); + chai.assert.equal(this.flyout.getY(), 50, 'y should be below the workspace'); + }); + }); + suite('toolbox flyout', function() { + setup(function() { + const toolbox = document.getElementById('toolbox-categories'); + this.workspace = Blockly.inject('blocklyDiv', + { + toolbox: toolbox, + horizontalLayout: true, + }); + this.flyout = this.workspace.getToolbox().getFlyout(); + this.targetMetricsManager = + this.flyout.targetWorkspace.getMetricsManager(); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + test('y is aligned with toolbox at top', function() { + sinon.stub(this.targetMetricsManager, 'getToolboxMetrics').returns({ + height: 20, + }); + this.flyout.setVisible(true); + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.TOP; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.TOP; + chai.assert.equal(this.flyout.getY(), 20, 'y should be aligned with toolbox'); + }); + test('y is aligned with toolbox at bottom', function() { + sinon.stub(this.targetMetricsManager, 'getToolboxMetrics').returns({ + height: 20, + }); + sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ + height: 100, + }); + this.flyout.height_ = 30; + this.flyout.setVisible(true); + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.BOTTOM; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.BOTTOM; + chai.assert.equal(this.flyout.getY(), 70, 'y + height should be aligned with toolbox'); + }); + }); + // These tests simulate a trashcan flyout, i.e. the flyout under test is on the + // opposite side of the workspace toolbox setting. + suite('trashcan flyout', function() { + setup(function() { + this.flyout = this.workspace.getFlyout(); + this.targetMetricsManager = + this.flyout.targetWorkspace.getMetricsManager(); + }); + test('y is 0 if trashcan at top', function() { + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.BOTTOM; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.TOP; + chai.assert.equal(this.flyout.getY(), 0, 'y should be aligned with top'); + }); + test('trashcan on bottom covers bottom of workspace', function() { + this.flyout.targetWorkspace.toolboxPosition = + Blockly.utils.toolbox.Position.TOP; + this.flyout.toolboxPosition_ = Blockly.utils.toolbox.Position.BOTTOM; + sinon.stub(this.targetMetricsManager, 'getAbsoluteMetrics').returns({ + top: 10, + }); + sinon.stub(this.targetMetricsManager, 'getViewMetrics').returns({ + height: 50, + }); + this.flyout.setVisible(true); + this.flyout.height_ = 20; + chai.assert.equal(this.flyout.getY(), 40, 'y + height should be aligned with bottom'); + }); + }); + }); + }); + + suite('createFlyoutInfo_', function() { + setup(function() { + this.flyout = this.workspace.getFlyout(); + this.createFlyoutSpy = sinon.spy(this.flyout, 'createFlyoutInfo_'); + }); + + function checkFlyoutInfo(flyoutSpy) { + const flyoutInfo = flyoutSpy.returnValues[0]; + const contents = flyoutInfo.contents; + const gaps = flyoutInfo.gaps; + + const expectedGaps = [20, 24, 24]; + chai.assert.deepEqual(gaps, expectedGaps); + + chai.assert.equal(contents.length, 3, 'Contents'); + + chai.assert.equal(contents[0].type, 'block', 'Contents'); + const block = contents[0]['block']; + chai.assert.instanceOf(block, Blockly.BlockSvg); + chai.assert.equal(block.getFieldValue('OP'), 'NEQ'); + const childA = block.getInputTargetBlock('A'); + const childB = block.getInputTargetBlock('B'); + chai.assert.isTrue(childA.isShadow()); + chai.assert.isFalse(childB.isShadow()); + chai.assert.equal(childA.getFieldValue('NUM'), 1); + chai.assert.equal(childB.getFieldValue('NUM'), 2); + + chai.assert.equal(contents[1].type, 'button', 'Contents'); + chai.assert.instanceOf(contents[1]['button'], Blockly.FlyoutButton); + + chai.assert.equal(contents[2].type, 'button', 'Contents'); + chai.assert.instanceOf(contents[2]['button'], Blockly.FlyoutButton); + } + + suite('Direct show', function() { + test('Node', function() { + this.flyout.show(this.toolboxXml); + checkFlyoutInfo(this.createFlyoutSpy); + }); + + test('NodeList', function() { + const nodeList = document.getElementById('toolbox-simple').childNodes; + this.flyout.show(nodeList); + checkFlyoutInfo(this.createFlyoutSpy); + }); + + test('Array of JSON', function() { + this.flyout.show(getSimpleJson()); + checkFlyoutInfo(this.createFlyoutSpy); + }); + + test('Array of Proper JSON', function() { + this.flyout.show(getProperSimpleJson()); + checkFlyoutInfo(this.createFlyoutSpy); + }); + + test('Array of XML', function() { + this.flyout.show(getXmlArray()); + checkFlyoutInfo(this.createFlyoutSpy); + }); + }); + + suite('Dynamic category', function() { + setup(function() { + this.stubAndAssert = function(val) { + sinon.stub( + this.flyout.workspace_.targetWorkspace, + 'getToolboxCategoryCallback') + .returns(function() {return val;}); + this.flyout.show('someString'); + checkFlyoutInfo(this.createFlyoutSpy); + }; + }); + + test('No category available', function() { + chai.assert.throws( + function() { + this.flyout.show('someString'); + }.bind(this), + 'Couldn\'t find a callback function when opening ' + + 'a toolbox category.'); + }); + + test('Node', function() { + this.stubAndAssert(this.toolboxXml); + }); + + test('NodeList', function() { + this.stubAndAssert( + document.getElementById('toolbox-simple').childNodes); + }); + + test('Array of JSON', function() { + this.stubAndAssert(getSimpleJson()); + }); + + test('Array of Proper JSON', function() { + this.stubAndAssert(getProperSimpleJson()); + }); + + test('Array of XML', function() { + this.stubAndAssert(getXmlArray()); + }); + }); + }); + + suite('Creating blocks', function() { + suite('Enabled/Disabled', function() { + setup(function() { + this.flyout = this.workspace.getFlyout(); + + this.assertDisabled = function(disabled) { + const block = this.flyout.getWorkspace().getTopBlocks(false)[0]; + chai.assert.equal(!block.isEnabled(), disabled); + }; + }); + + suite('XML', function() { + test('True string', function() { + const xml = Blockly.Xml.textToDom( + '' + + '' + + '' + ); + this.flyout.show(xml); + this.assertDisabled(true); + }); + + test('False string', function() { + const xml = Blockly.Xml.textToDom( + '' + + '' + + '' + ); + this.flyout.show(xml); + this.assertDisabled(false); + }); + + test('Disabled string', function() { + // The XML system supports this for some reason!? + const xml = Blockly.Xml.textToDom( + '' + + '' + + '' + ); + this.flyout.show(xml); + this.assertDisabled(true); + }); + + test('Different string', function() { + const xml = Blockly.Xml.textToDom( + '' + + '' + + '' + ); + this.flyout.show(xml); + this.assertDisabled(false); + }); + }); + + suite('JSON', function() { + test('All undefined', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + }, + ]; + this.flyout.show(json); + this.assertDisabled(false); + }); + + test('Enabled true', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + 'enabled': true, + }, + ]; + this.flyout.show(json); + this.assertDisabled(false); + }); + + test('Enabled false', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + 'enabled': false, + }, + ]; + this.flyout.show(json); + this.assertDisabled(true); + }); + + test('Disabled true string', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + 'disabled': 'true', + }, + ]; + this.flyout.show(json); + this.assertDisabled(true); + }); + + test('Disabled false string', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + 'disabled': 'false', + }, + ]; + this.flyout.show(json); + this.assertDisabled(false); + }); + + test('Disabled string', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + 'disabled': 'disabled', // This is not respected by the JSON! + }, + ]; + this.flyout.show(json); + this.assertDisabled(false); + }); + + test('Disabled true value', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + 'disabled': true, + }, + ]; + this.flyout.show(json); + this.assertDisabled(true); + }); + + test('Disabled false value', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + 'disabled': false, + }, + ]; + this.flyout.show(json); + this.assertDisabled(false); + }); + + test('Disabled different string', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + 'disabled': 'random', + }, + ]; + this.flyout.show(json); + this.assertDisabled(false); + }); + + test('Disabled empty string', function() { + const json = [ + { + 'kind': 'block', + 'type': 'text_print', + 'disabled': '', + }, + ]; + this.flyout.show(json); + this.assertDisabled(false); + }); + }); + }); + }); + + suite('Recycling', function() { + setup(function() { + this.flyout = this.workspace.getFlyout(); + }); + + test('Recycling disabled', function() { + this.flyout.show({ + 'contents': [ + { + 'kind': 'BLOCK', + 'type': 'math_number', + 'fields': { + 'NUM': 123, + }, + }, + ], + }); + this.flyout.show({ + 'contents': [ + { + 'kind': 'BLOCK', + 'type': 'math_number', + 'fields': { + 'NUM': 321, + }, + }, + ], + }); + const block = this.flyout.workspace_.getAllBlocks()[0]; + chai.assert.equal(block.getFieldValue('NUM'), 321); + }); + + test('Recycling enabled', function() { + this.flyout.blockIsRecyclable_ = function() {return true;}; + this.flyout.show({ + 'contents': [ + { + 'kind': 'BLOCK', + 'type': 'math_number', + 'fields': { + 'NUM': 123, + }, + }, + ], + }); + this.flyout.show({ + 'contents': [ + { + 'kind': 'BLOCK', + 'type': 'math_number', + 'fields': { + 'NUM': 321, + }, + }, + ], + }); + const block = this.flyout.workspace_.getAllBlocks()[0]; + chai.assert.equal(block.getFieldValue('NUM'), 123); + }); + }); +}); diff --git a/tests/mocha/generator_test.js b/tests/mocha/generator_test.js index 4167d44f664..e5bd539e99a 100644 --- a/tests/mocha/generator_test.js +++ b/tests/mocha/generator_test.js @@ -1,155 +1,155 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.generator'); - -goog.require('Blockly.Dart'); -goog.require('Blockly.JavaScript'); -goog.require('Blockly.Lua'); -goog.require('Blockly.PHP'); -goog.require('Blockly.Python'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Generator', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('prefix', function() { - setup(function() { - this.generator = new Blockly.Generator('INTERCAL'); - }); - - test('Nothing', function() { - chai.assert.equal(this.generator.prefixLines('', ''), ''); - }); - - test('One word', function() { - chai.assert.equal(this.generator.prefixLines('Hello', '@'), '@Hello'); - }); - - test('One line', function() { - chai.assert.equal(this.generator.prefixLines('Hello\n', '12'), '12Hello\n'); - }); - - test('Two lines', function() { - chai.assert.equal(this.generator.prefixLines('Hello\nWorld\n', '***'), '***Hello\n***World\n'); - }); - }); - - suite('blockToCode', function() { - setup(function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "stack_block", - "message0": "", - "previousStatement": null, - "nextStatement": null, - }, - { - "type": "row_block", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - }, - ], - "output": null, - "nextStatement": null, - }]); - const rowBlock = this.workspace.newBlock('row_block'); - const stackBlock = this.workspace.newBlock('stack_block'); - - this.blockToCodeTest = function( - generator, blockDisabled, opt_thisOnly, - expectedCode, opt_message) { - generator.row_block = function(_) {return 'row_block';}; - generator.stack_block = function(_) {return 'stack_block';}; - rowBlock.nextConnection.connect(stackBlock.previousConnection); - rowBlock.disabled = blockDisabled; - - const code = generator.blockToCode(rowBlock, opt_thisOnly); - chai.assert.equal(code, expectedCode, opt_message); - }; - }); - - const testCase = [ - [Blockly.Dart, 'Dart'], - [Blockly.JavaScript, 'JavaScript'], - [Blockly.Lua, 'Lua'], - [Blockly.PHP, 'PHP'], - [Blockly.Python, 'Python']]; - - suite('Trivial', function() { - testCase.forEach(function(testCase) { - const generator = testCase[0]; - const name = testCase[1]; - test(name, function() { - generator.init(this.workspace); - this.blockToCodeTest(generator, false, true, 'row_block'); - this.blockToCodeTest( - generator, false, false, 'row_blockstack_block', 'thisOnly=false'); - }); - }); - }); - - suite('Disabled block', function() { - testCase.forEach(function(testCase) { - const generator = testCase[0]; - const name = testCase[1]; - test(name, function() { - this.blockToCodeTest(generator, true, true, ''); - this.blockToCodeTest(generator, true, false, 'stack_block', 'thisOnly=false'); - }); - }); - }); - - suite('Nested block', function() { - setup(function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "test_loop_block", - "message0": "Repeat Loop", - "message1": "%1", - "args1": [{ - "type": "input_statement", - "name": "DO", - }], - "previousStatement": null, - "nextStatement": null, - }]); - const blockA = this.workspace.newBlock('test_loop_block'); - const blockB = this.workspace.newBlock('test_loop_block'); - const blockC = this.workspace.newBlock('test_loop_block'); - this.loopTest = function( - generator, opt_thisOnly, expectedCode, opt_message) { - generator.test_loop_block = function(block) { - return '{' + generator.statementToCode(block, 'DO') + '}'; - }; - blockA.getInput('DO').connection.connect(blockB.previousConnection); - blockA.nextConnection.connect(blockC.previousConnection); - - const code = generator.blockToCode(blockA, opt_thisOnly); - chai.assert.equal(code, expectedCode, opt_message); - }; - }); - - testCase.forEach(function(testCase) { - const generator = testCase[0]; - const name = testCase[1]; - test(name, function() { - this.loopTest(generator, true, '{ {}}'); - this.loopTest(generator, false, '{ {}}{}', 'thisOnly=false'); - }); - }); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.generator'); + +goog.require('Blockly.Dart'); +goog.require('Blockly.JavaScript'); +goog.require('Blockly.Lua'); +goog.require('Blockly.PHP'); +goog.require('Blockly.Python'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Generator', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('prefix', function() { + setup(function() { + this.generator = new Blockly.Generator('INTERCAL'); + }); + + test('Nothing', function() { + chai.assert.equal(this.generator.prefixLines('', ''), ''); + }); + + test('One word', function() { + chai.assert.equal(this.generator.prefixLines('Hello', '@'), '@Hello'); + }); + + test('One line', function() { + chai.assert.equal(this.generator.prefixLines('Hello\n', '12'), '12Hello\n'); + }); + + test('Two lines', function() { + chai.assert.equal(this.generator.prefixLines('Hello\nWorld\n', '***'), '***Hello\n***World\n'); + }); + }); + + suite('blockToCode', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "stack_block", + "message0": "", + "previousStatement": null, + "nextStatement": null, + }, + { + "type": "row_block", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + }, + ], + "output": null, + "nextStatement": null, + }]); + const rowBlock = this.workspace.newBlock('row_block'); + const stackBlock = this.workspace.newBlock('stack_block'); + + this.blockToCodeTest = function( + generator, blockDisabled, opt_thisOnly, + expectedCode, opt_message) { + generator.row_block = function(_) {return 'row_block';}; + generator.stack_block = function(_) {return 'stack_block';}; + rowBlock.nextConnection.connect(stackBlock.previousConnection); + rowBlock.disabled = blockDisabled; + + const code = generator.blockToCode(rowBlock, opt_thisOnly); + chai.assert.equal(code, expectedCode, opt_message); + }; + }); + + const testCase = [ + [Blockly.Dart, 'Dart'], + [Blockly.JavaScript, 'JavaScript'], + [Blockly.Lua, 'Lua'], + [Blockly.PHP, 'PHP'], + [Blockly.Python, 'Python']]; + + suite('Trivial', function() { + testCase.forEach(function(testCase) { + const generator = testCase[0]; + const name = testCase[1]; + test(name, function() { + generator.init(this.workspace); + this.blockToCodeTest(generator, false, true, 'row_block'); + this.blockToCodeTest( + generator, false, false, 'row_blockstack_block', 'thisOnly=false'); + }); + }); + }); + + suite('Disabled block', function() { + testCase.forEach(function(testCase) { + const generator = testCase[0]; + const name = testCase[1]; + test(name, function() { + this.blockToCodeTest(generator, true, true, ''); + this.blockToCodeTest(generator, true, false, 'stack_block', 'thisOnly=false'); + }); + }); + }); + + suite('Nested block', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "test_loop_block", + "message0": "Repeat Loop", + "message1": "%1", + "args1": [{ + "type": "input_statement", + "name": "DO", + }], + "previousStatement": null, + "nextStatement": null, + }]); + const blockA = this.workspace.newBlock('test_loop_block'); + const blockB = this.workspace.newBlock('test_loop_block'); + const blockC = this.workspace.newBlock('test_loop_block'); + this.loopTest = function( + generator, opt_thisOnly, expectedCode, opt_message) { + generator.test_loop_block = function(block) { + return '{' + generator.statementToCode(block, 'DO') + '}'; + }; + blockA.getInput('DO').connection.connect(blockB.previousConnection); + blockA.nextConnection.connect(blockC.previousConnection); + + const code = generator.blockToCode(blockA, opt_thisOnly); + chai.assert.equal(code, expectedCode, opt_message); + }; + }); + + testCase.forEach(function(testCase) { + const generator = testCase[0]; + const name = testCase[1]; + test(name, function() { + this.loopTest(generator, true, '{ {}}'); + this.loopTest(generator, false, '{ {}}{}', 'thisOnly=false'); + }); + }); + }); + }); +}); diff --git a/tests/mocha/gesture_test.js b/tests/mocha/gesture_test.js index 6e21287ded2..908ed5e4bfd 100644 --- a/tests/mocha/gesture_test.js +++ b/tests/mocha/gesture_test.js @@ -1,94 +1,94 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.gesture'); - -const {assertEventFired, assertEventNotFired} = goog.require('Blockly.test.helpers.events'); -const {defineBasicBlockWithField} = goog.require('Blockly.test.helpers.blockDefinitions'); -const {dispatchPointerEvent} = goog.require('Blockly.test.helpers.userInput'); -const eventUtils = goog.require('Blockly.Events.utils'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Gesture', function() { - function testGestureIsFieldClick(block, isFieldClick, eventsFireStub) { - const field = block.getField('NAME'); - const eventTarget = field.getClickTarget_(); - chai.assert.exists(eventTarget, - 'Precondition: missing click target for field'); - - eventsFireStub.resetHistory(); - dispatchPointerEvent(eventTarget, 'pointerdown'); - - const fieldWorkspace = field.sourceBlock_.workspace; - // Gestures triggered on flyouts are stored on targetWorkspace. - const gestureWorkspace = fieldWorkspace.targetWorkspace || fieldWorkspace; - const gesture = gestureWorkspace.currentGesture_; - chai.assert.exists(gesture, 'Gesture exists after pointerdown.'); - const isFieldClickSpy = sinon.spy(gesture, 'isFieldClick_'); - - dispatchPointerEvent(eventTarget, 'pointerup'); - dispatchPointerEvent(eventTarget, 'click'); - - sinon.assert.called(isFieldClickSpy); - chai.assert.isTrue(isFieldClickSpy.alwaysReturned(isFieldClick)); - - - assertEventFired(eventsFireStub, Blockly.Events.Selected, - {oldElementId: null, newElementId: block.id, type: eventUtils.SELECTED}, fieldWorkspace.id); - assertEventNotFired(eventsFireStub, Blockly.Events.Click, {type: eventUtils.CLICK}); - } - - function getTopFlyoutBlock(flyout) { - return flyout.workspace_.topBlocks_[0]; - } - - setup(function() { - sharedTestSetup.call(this); - defineBasicBlockWithField(); - const toolbox = document.getElementById('gesture-test-toolbox'); - this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - test('Constructor', function() { - const e = {id: 'dummy_test_event'}; - const gesture = new Blockly.Gesture(e, this.workspace); - chai.assert.equal(gesture.mostRecentEvent_, e); - chai.assert.equal(gesture.creatorWorkspace_, this.workspace); - }); - - test('Field click - Click in workspace', function() { - const block = this.workspace.newBlock('test_field_block'); - block.initSvg(); - block.render(); - - testGestureIsFieldClick(block, true, this.eventsFireStub); - }); - - test('Field click - Auto close flyout', function() { - const flyout = this.workspace.flyout_; - chai.assert.exists(this.workspace.flyout_, - 'Precondition: missing flyout'); - flyout.autoClose = true; - - const block = getTopFlyoutBlock(flyout); - testGestureIsFieldClick(block, false, this.eventsFireStub); - }); - - test('Field click - Always open flyout', function() { - const flyout = this.workspace.flyout_; - chai.assert.exists(this.workspace.flyout_, - 'Precondition: missing flyout'); - flyout.autoClose = false; - - const block = getTopFlyoutBlock(flyout); - testGestureIsFieldClick(block, true, this.eventsFireStub); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.gesture'); + +const {assertEventFired, assertEventNotFired} = goog.require('Blockly.test.helpers.events'); +const {defineBasicBlockWithField} = goog.require('Blockly.test.helpers.blockDefinitions'); +const {dispatchPointerEvent} = goog.require('Blockly.test.helpers.userInput'); +const eventUtils = goog.require('Blockly.Events.utils'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Gesture', function() { + function testGestureIsFieldClick(block, isFieldClick, eventsFireStub) { + const field = block.getField('NAME'); + const eventTarget = field.getClickTarget_(); + chai.assert.exists(eventTarget, + 'Precondition: missing click target for field'); + + eventsFireStub.resetHistory(); + dispatchPointerEvent(eventTarget, 'pointerdown'); + + const fieldWorkspace = field.sourceBlock_.workspace; + // Gestures triggered on flyouts are stored on targetWorkspace. + const gestureWorkspace = fieldWorkspace.targetWorkspace || fieldWorkspace; + const gesture = gestureWorkspace.currentGesture_; + chai.assert.exists(gesture, 'Gesture exists after pointerdown.'); + const isFieldClickSpy = sinon.spy(gesture, 'isFieldClick_'); + + dispatchPointerEvent(eventTarget, 'pointerup'); + dispatchPointerEvent(eventTarget, 'click'); + + sinon.assert.called(isFieldClickSpy); + chai.assert.isTrue(isFieldClickSpy.alwaysReturned(isFieldClick)); + + + assertEventFired(eventsFireStub, Blockly.Events.Selected, + {oldElementId: null, newElementId: block.id, type: eventUtils.SELECTED}, fieldWorkspace.id); + assertEventNotFired(eventsFireStub, Blockly.Events.Click, {type: eventUtils.CLICK}); + } + + function getTopFlyoutBlock(flyout) { + return flyout.workspace_.topBlocks_[0]; + } + + setup(function() { + sharedTestSetup.call(this); + defineBasicBlockWithField(); + const toolbox = document.getElementById('gesture-test-toolbox'); + this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + test('Constructor', function() { + const e = {id: 'dummy_test_event'}; + const gesture = new Blockly.Gesture(e, this.workspace); + chai.assert.equal(gesture.mostRecentEvent_, e); + chai.assert.equal(gesture.creatorWorkspace_, this.workspace); + }); + + test('Field click - Click in workspace', function() { + const block = this.workspace.newBlock('test_field_block'); + block.initSvg(); + block.render(); + + testGestureIsFieldClick(block, true, this.eventsFireStub); + }); + + test('Field click - Auto close flyout', function() { + const flyout = this.workspace.flyout_; + chai.assert.exists(this.workspace.flyout_, + 'Precondition: missing flyout'); + flyout.autoClose = true; + + const block = getTopFlyoutBlock(flyout); + testGestureIsFieldClick(block, false, this.eventsFireStub); + }); + + test('Field click - Always open flyout', function() { + const flyout = this.workspace.flyout_; + chai.assert.exists(this.workspace.flyout_, + 'Precondition: missing flyout'); + flyout.autoClose = false; + + const block = getTopFlyoutBlock(flyout); + testGestureIsFieldClick(block, true, this.eventsFireStub); + }); +}); diff --git a/tests/mocha/index.html b/tests/mocha/index.html index 27edd9d6aa8..afc8ccc156b 100644 --- a/tests/mocha/index.html +++ b/tests/mocha/index.html @@ -1,190 +1,190 @@ - - - - - Mocha Tests for Blockly - - - - - - - - -
      - - - - - - - - - -
      - - - - - - - - - - - - + + + + + Mocha Tests for Blockly + + + + + + + + +
      + + + + + + + + + +
      + + + + + + + + + + + + diff --git a/tests/mocha/input_test.js b/tests/mocha/input_test.js index cd69972129d..ed01c28928c 100644 --- a/tests/mocha/input_test.js +++ b/tests/mocha/input_test.js @@ -1,306 +1,306 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.input'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Inputs', function() { - setup(function() { - sharedTestSetup.call(this); - Blockly.defineBlocksWithJsonArray([{ - "type": "empty_block", - "message0": "", - "args0": [], - }]); - - this.workspace = Blockly.inject('blocklyDiv'); - this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - - this.renderStub = sinon.stub(this.block, 'render'); - this.bumpNeighboursStub = sinon.stub(this.block, 'bumpNeighbours'); - - this.dummy = this.block.appendDummyInput('DUMMY'); - this.value = this.block.appendValueInput('VALUE'); - this.statement = this.block.appendStatementInput('STATEMENT'); - - this.renderStub.resetHistory(); - this.bumpNeighboursStub.resetHistory(); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - suite('Insert Field At', function() { - suite('Index Bounds', function() { - test('< 0', function() { - const field = new Blockly.FieldLabel('field'); - chai.assert.throws(function() { - this.dummy.insertFieldAt(-1, field); - }); - }); - test('> length', function() { - const field = new Blockly.FieldLabel('field'); - chai.assert.throws(function() { - this.dummy.insertFieldAt(1, field); - }); - }); - }); - suite('Values', function() { - // We're mostly just testing that it doesn't throw errors. - test('Field', function() { - const field = new Blockly.FieldLabel('field'); - this.dummy.insertFieldAt(0, field); - chai.assert.equal(this.dummy.fieldRow[0], field); - }); - test('String', function() { - this.dummy.insertFieldAt(0, 'field'); - chai.assert.instanceOf(this.dummy.fieldRow[0], Blockly.FieldLabel); - }); - test('String w/ field_label overwritten', function() { - Blockly.fieldRegistry.unregister('field_label'); - Blockly.fieldRegistry.register('field_label', Blockly.FieldNumber); - - this.dummy.insertFieldAt(0, '1'); - chai.assert.instanceOf(this.dummy.fieldRow[0], Blockly.FieldNumber); - - Blockly.fieldRegistry.unregister('field_label'); - Blockly.fieldRegistry.register('field_label', Blockly.FieldLabel); - }); - test('Empty String', function() { - this.dummy.insertFieldAt(0, ''); - chai.assert.isEmpty(this.dummy.fieldRow); - }); - test('Empty String W/ Name', function() { - this.dummy.insertFieldAt(0, '', 'NAME'); - chai.assert.instanceOf(this.dummy.fieldRow[0], Blockly.FieldLabel); - }); - test('Null', function() { - this.dummy.insertFieldAt(0, null); - chai.assert.isEmpty(this.dummy.fieldRow); - }); - test('Undefined', function() { - this.dummy.insertFieldAt(0, undefined); - chai.assert.isEmpty(this.dummy.fieldRow); - }); - }); - suite('Prefixes and Suffixes', function() { - test('Prefix', function() { - const field = new Blockly.FieldLabel('field'); - const prefix = new Blockly.FieldLabel('prefix'); - field.prefixField = prefix; - - this.dummy.appendField(field); - chai.assert.deepEqual(this.dummy.fieldRow, [prefix, field]); - }); - test('Suffix', function() { - const field = new Blockly.FieldLabel('field'); - const suffix = new Blockly.FieldLabel('suffix'); - field.suffixField = suffix; - - this.dummy.appendField(field); - chai.assert.deepEqual(this.dummy.fieldRow, [field, suffix]); - }); - test('Prefix and Suffix', function() { - const field = new Blockly.FieldLabel('field'); - const prefix = new Blockly.FieldLabel('prefix'); - const suffix = new Blockly.FieldLabel('suffix'); - field.prefixField = prefix; - field.suffixField = suffix; - - this.dummy.appendField(field); - chai.assert.deepEqual(this.dummy.fieldRow, [prefix, field, suffix]); - }); - test('Dropdown - Prefix', function() { - const field = new Blockly.FieldDropdown( - [ - ['prefix option1', 'OPTION1'], - ['prefix option2', 'OPTION2'], - ] - ); - - this.dummy.appendField(field); - chai.assert.equal(this.dummy.fieldRow.length, 2); - }); - test('Dropdown - Suffix', function() { - const field = new Blockly.FieldDropdown( - [ - ['option1 suffix', 'OPTION1'], - ['option2 suffix', 'OPTION2'], - ] - ); - - this.dummy.appendField(field); - chai.assert.equal(this.dummy.fieldRow.length, 2); - }); - test('Dropdown - Prefix and Suffix', function() { - const field = new Blockly.FieldDropdown( - [ - ['prefix option1 suffix', 'OPTION1'], - ['prefix option2 suffix', 'OPTION2'], - ] - ); - - this.dummy.appendField(field); - chai.assert.equal(this.dummy.fieldRow.length, 3); - }); - }); - suite('Field Initialization', function() { - test('Rendered', function() { - const field = new Blockly.FieldLabel('field'); - const setBlockSpy = sinon.spy(field, 'setSourceBlock'); - const initSpy = sinon.spy(field, 'init'); - - this.dummy.insertFieldAt(0, field); - sinon.assert.calledOnce(setBlockSpy); - chai.assert.equal(setBlockSpy.getCall(0).args[0], this.block); - sinon.assert.calledOnce(initSpy); - sinon.assert.calledOnce(this.renderStub); - sinon.assert.calledOnce(this.bumpNeighboursStub); - - setBlockSpy.restore(); - initSpy.restore(); - }); - // TODO: InsertFieldAt does not properly handle initialization in - // headless mode. - test.skip('Headless', function() { - const field = new Blockly.FieldLabel('field'); - const setBlockSpy = sinon.spy(field, 'setSourceBlock'); - const initModelSpy = sinon.spy(field, 'initModel'); - - this.block.rendered = false; - - this.dummy.insertFieldAt(0, field); - sinon.assert.calledOnce(setBlockSpy); - chai.assert.equal(setBlockSpy.getCall(0).args[0], this.block); - sinon.assert.calledOnce(initModelSpy); - sinon.assert.notCalled(this.renderStub); - sinon.assert.notCalled(this.bumpNeighboursStub); - - setBlockSpy.restore(); - initModelSpy.restore(); - }); - }); - }); - suite('Remove Field', function() { - test('Field Not Found', function() { - chai.assert.throws(function() { - this.dummy.removeField('FIELD'); - }); - }); - test('Rendered', function() { - const field = new Blockly.FieldLabel('field'); - const disposeSpy = sinon.spy(field, 'dispose'); - this.dummy.appendField(field, 'FIELD'); - - this.renderStub.resetHistory(); - this.bumpNeighboursStub.resetHistory(); - - this.dummy.removeField('FIELD'); - sinon.assert.calledOnce(disposeSpy); - sinon.assert.calledOnce(this.renderStub); - sinon.assert.calledOnce(this.bumpNeighboursStub); - }); - test('Headless', function() { - const field = new Blockly.FieldLabel('field'); - const disposeSpy = sinon.spy(field, 'dispose'); - this.dummy.appendField(field, 'FIELD'); - - this.renderStub.resetHistory(); - this.bumpNeighboursStub.resetHistory(); - - this.block.rendered = false; - - this.dummy.removeField('FIELD'); - sinon.assert.calledOnce(disposeSpy); - sinon.assert.notCalled(this.renderStub); - sinon.assert.notCalled(this.bumpNeighboursStub); - }); - }); - suite('Field Ordering/Manipulation', function() { - setup(function() { - this.a = new Blockly.FieldLabel('a'); - this.b = new Blockly.FieldLabel('b'); - this.c = new Blockly.FieldLabel('c'); - }); - test('Append A, B, C', function() { - this.dummy.appendField(this.a, 'A'); - this.dummy.appendField(this.b, 'B'); - this.dummy.appendField(this.c, 'C'); - - chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b, this.c]); - }); - test('Append B, C; Insert A at Start', function() { - this.dummy.appendField(this.b, 'B'); - this.dummy.appendField(this.c, 'C'); - this.dummy.insertFieldAt(0, this.a, 'A'); - - chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b, this.c]); - }); - test('Append A, C; Insert B Between', function() { - this.dummy.appendField(this.a, 'A'); - this.dummy.appendField(this.c, 'C'); - this.dummy.insertFieldAt(1, this.b, 'B'); - - chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b, this.c]); - }); - test('Append A, B; Insert C at End', function() { - this.dummy.appendField(this.a, 'A'); - this.dummy.appendField(this.b, 'B'); - this.dummy.insertFieldAt(2, this.c, 'C'); - - chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b, this.c]); - }); - test('Append A, B, C; Remove A, B, C', function() { - this.dummy.appendField(this.a, 'A'); - this.dummy.appendField(this.b, 'B'); - this.dummy.appendField(this.c, 'C'); - - this.dummy.removeField('A'); - this.dummy.removeField('B'); - this.dummy.removeField('C'); - - chai.assert.isEmpty(this.dummy.fieldRow); - }); - test('Append A, B, C; Remove A', function() { - this.dummy.appendField(this.a, 'A'); - this.dummy.appendField(this.b, 'B'); - this.dummy.appendField(this.c, 'C'); - - this.dummy.removeField('A'); - - chai.assert.deepEqual(this.dummy.fieldRow, [this.b, this.c]); - }); - test('Append A, B, C; Remove B', function() { - this.dummy.appendField(this.a, 'A'); - this.dummy.appendField(this.b, 'B'); - this.dummy.appendField(this.c, 'C'); - - this.dummy.removeField('B'); - - chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.c]); - }); - test('Append A, B, C; Remove C', function() { - this.dummy.appendField(this.a, 'A'); - this.dummy.appendField(this.b, 'B'); - this.dummy.appendField(this.c, 'C'); - - this.dummy.removeField('C'); - - chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b]); - }); - test('Append A, B; Remove A; Append C', function() { - this.dummy.appendField(this.a, 'A'); - this.dummy.appendField(this.b, 'B'); - this.dummy.removeField('A'); - this.dummy.appendField(this.c, 'C'); - - chai.assert.deepEqual(this.dummy.fieldRow, [this.b, this.c]); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.input'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Inputs', function() { + setup(function() { + sharedTestSetup.call(this); + Blockly.defineBlocksWithJsonArray([{ + "type": "empty_block", + "message0": "", + "args0": [], + }]); + + this.workspace = Blockly.inject('blocklyDiv'); + this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + + this.renderStub = sinon.stub(this.block, 'render'); + this.bumpNeighboursStub = sinon.stub(this.block, 'bumpNeighbours'); + + this.dummy = this.block.appendDummyInput('DUMMY'); + this.value = this.block.appendValueInput('VALUE'); + this.statement = this.block.appendStatementInput('STATEMENT'); + + this.renderStub.resetHistory(); + this.bumpNeighboursStub.resetHistory(); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + suite('Insert Field At', function() { + suite('Index Bounds', function() { + test('< 0', function() { + const field = new Blockly.FieldLabel('field'); + chai.assert.throws(function() { + this.dummy.insertFieldAt(-1, field); + }); + }); + test('> length', function() { + const field = new Blockly.FieldLabel('field'); + chai.assert.throws(function() { + this.dummy.insertFieldAt(1, field); + }); + }); + }); + suite('Values', function() { + // We're mostly just testing that it doesn't throw errors. + test('Field', function() { + const field = new Blockly.FieldLabel('field'); + this.dummy.insertFieldAt(0, field); + chai.assert.equal(this.dummy.fieldRow[0], field); + }); + test('String', function() { + this.dummy.insertFieldAt(0, 'field'); + chai.assert.instanceOf(this.dummy.fieldRow[0], Blockly.FieldLabel); + }); + test('String w/ field_label overwritten', function() { + Blockly.fieldRegistry.unregister('field_label'); + Blockly.fieldRegistry.register('field_label', Blockly.FieldNumber); + + this.dummy.insertFieldAt(0, '1'); + chai.assert.instanceOf(this.dummy.fieldRow[0], Blockly.FieldNumber); + + Blockly.fieldRegistry.unregister('field_label'); + Blockly.fieldRegistry.register('field_label', Blockly.FieldLabel); + }); + test('Empty String', function() { + this.dummy.insertFieldAt(0, ''); + chai.assert.isEmpty(this.dummy.fieldRow); + }); + test('Empty String W/ Name', function() { + this.dummy.insertFieldAt(0, '', 'NAME'); + chai.assert.instanceOf(this.dummy.fieldRow[0], Blockly.FieldLabel); + }); + test('Null', function() { + this.dummy.insertFieldAt(0, null); + chai.assert.isEmpty(this.dummy.fieldRow); + }); + test('Undefined', function() { + this.dummy.insertFieldAt(0, undefined); + chai.assert.isEmpty(this.dummy.fieldRow); + }); + }); + suite('Prefixes and Suffixes', function() { + test('Prefix', function() { + const field = new Blockly.FieldLabel('field'); + const prefix = new Blockly.FieldLabel('prefix'); + field.prefixField = prefix; + + this.dummy.appendField(field); + chai.assert.deepEqual(this.dummy.fieldRow, [prefix, field]); + }); + test('Suffix', function() { + const field = new Blockly.FieldLabel('field'); + const suffix = new Blockly.FieldLabel('suffix'); + field.suffixField = suffix; + + this.dummy.appendField(field); + chai.assert.deepEqual(this.dummy.fieldRow, [field, suffix]); + }); + test('Prefix and Suffix', function() { + const field = new Blockly.FieldLabel('field'); + const prefix = new Blockly.FieldLabel('prefix'); + const suffix = new Blockly.FieldLabel('suffix'); + field.prefixField = prefix; + field.suffixField = suffix; + + this.dummy.appendField(field); + chai.assert.deepEqual(this.dummy.fieldRow, [prefix, field, suffix]); + }); + test('Dropdown - Prefix', function() { + const field = new Blockly.FieldDropdown( + [ + ['prefix option1', 'OPTION1'], + ['prefix option2', 'OPTION2'], + ] + ); + + this.dummy.appendField(field); + chai.assert.equal(this.dummy.fieldRow.length, 2); + }); + test('Dropdown - Suffix', function() { + const field = new Blockly.FieldDropdown( + [ + ['option1 suffix', 'OPTION1'], + ['option2 suffix', 'OPTION2'], + ] + ); + + this.dummy.appendField(field); + chai.assert.equal(this.dummy.fieldRow.length, 2); + }); + test('Dropdown - Prefix and Suffix', function() { + const field = new Blockly.FieldDropdown( + [ + ['prefix option1 suffix', 'OPTION1'], + ['prefix option2 suffix', 'OPTION2'], + ] + ); + + this.dummy.appendField(field); + chai.assert.equal(this.dummy.fieldRow.length, 3); + }); + }); + suite('Field Initialization', function() { + test('Rendered', function() { + const field = new Blockly.FieldLabel('field'); + const setBlockSpy = sinon.spy(field, 'setSourceBlock'); + const initSpy = sinon.spy(field, 'init'); + + this.dummy.insertFieldAt(0, field); + sinon.assert.calledOnce(setBlockSpy); + chai.assert.equal(setBlockSpy.getCall(0).args[0], this.block); + sinon.assert.calledOnce(initSpy); + sinon.assert.calledOnce(this.renderStub); + sinon.assert.calledOnce(this.bumpNeighboursStub); + + setBlockSpy.restore(); + initSpy.restore(); + }); + // TODO: InsertFieldAt does not properly handle initialization in + // headless mode. + test.skip('Headless', function() { + const field = new Blockly.FieldLabel('field'); + const setBlockSpy = sinon.spy(field, 'setSourceBlock'); + const initModelSpy = sinon.spy(field, 'initModel'); + + this.block.rendered = false; + + this.dummy.insertFieldAt(0, field); + sinon.assert.calledOnce(setBlockSpy); + chai.assert.equal(setBlockSpy.getCall(0).args[0], this.block); + sinon.assert.calledOnce(initModelSpy); + sinon.assert.notCalled(this.renderStub); + sinon.assert.notCalled(this.bumpNeighboursStub); + + setBlockSpy.restore(); + initModelSpy.restore(); + }); + }); + }); + suite('Remove Field', function() { + test('Field Not Found', function() { + chai.assert.throws(function() { + this.dummy.removeField('FIELD'); + }); + }); + test('Rendered', function() { + const field = new Blockly.FieldLabel('field'); + const disposeSpy = sinon.spy(field, 'dispose'); + this.dummy.appendField(field, 'FIELD'); + + this.renderStub.resetHistory(); + this.bumpNeighboursStub.resetHistory(); + + this.dummy.removeField('FIELD'); + sinon.assert.calledOnce(disposeSpy); + sinon.assert.calledOnce(this.renderStub); + sinon.assert.calledOnce(this.bumpNeighboursStub); + }); + test('Headless', function() { + const field = new Blockly.FieldLabel('field'); + const disposeSpy = sinon.spy(field, 'dispose'); + this.dummy.appendField(field, 'FIELD'); + + this.renderStub.resetHistory(); + this.bumpNeighboursStub.resetHistory(); + + this.block.rendered = false; + + this.dummy.removeField('FIELD'); + sinon.assert.calledOnce(disposeSpy); + sinon.assert.notCalled(this.renderStub); + sinon.assert.notCalled(this.bumpNeighboursStub); + }); + }); + suite('Field Ordering/Manipulation', function() { + setup(function() { + this.a = new Blockly.FieldLabel('a'); + this.b = new Blockly.FieldLabel('b'); + this.c = new Blockly.FieldLabel('c'); + }); + test('Append A, B, C', function() { + this.dummy.appendField(this.a, 'A'); + this.dummy.appendField(this.b, 'B'); + this.dummy.appendField(this.c, 'C'); + + chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b, this.c]); + }); + test('Append B, C; Insert A at Start', function() { + this.dummy.appendField(this.b, 'B'); + this.dummy.appendField(this.c, 'C'); + this.dummy.insertFieldAt(0, this.a, 'A'); + + chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b, this.c]); + }); + test('Append A, C; Insert B Between', function() { + this.dummy.appendField(this.a, 'A'); + this.dummy.appendField(this.c, 'C'); + this.dummy.insertFieldAt(1, this.b, 'B'); + + chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b, this.c]); + }); + test('Append A, B; Insert C at End', function() { + this.dummy.appendField(this.a, 'A'); + this.dummy.appendField(this.b, 'B'); + this.dummy.insertFieldAt(2, this.c, 'C'); + + chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b, this.c]); + }); + test('Append A, B, C; Remove A, B, C', function() { + this.dummy.appendField(this.a, 'A'); + this.dummy.appendField(this.b, 'B'); + this.dummy.appendField(this.c, 'C'); + + this.dummy.removeField('A'); + this.dummy.removeField('B'); + this.dummy.removeField('C'); + + chai.assert.isEmpty(this.dummy.fieldRow); + }); + test('Append A, B, C; Remove A', function() { + this.dummy.appendField(this.a, 'A'); + this.dummy.appendField(this.b, 'B'); + this.dummy.appendField(this.c, 'C'); + + this.dummy.removeField('A'); + + chai.assert.deepEqual(this.dummy.fieldRow, [this.b, this.c]); + }); + test('Append A, B, C; Remove B', function() { + this.dummy.appendField(this.a, 'A'); + this.dummy.appendField(this.b, 'B'); + this.dummy.appendField(this.c, 'C'); + + this.dummy.removeField('B'); + + chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.c]); + }); + test('Append A, B, C; Remove C', function() { + this.dummy.appendField(this.a, 'A'); + this.dummy.appendField(this.b, 'B'); + this.dummy.appendField(this.c, 'C'); + + this.dummy.removeField('C'); + + chai.assert.deepEqual(this.dummy.fieldRow, [this.a, this.b]); + }); + test('Append A, B; Remove A; Append C', function() { + this.dummy.appendField(this.a, 'A'); + this.dummy.appendField(this.b, 'B'); + this.dummy.removeField('A'); + this.dummy.appendField(this.c, 'C'); + + chai.assert.deepEqual(this.dummy.fieldRow, [this.b, this.c]); + }); + }); +}); diff --git a/tests/mocha/insertion_marker_test.js b/tests/mocha/insertion_marker_test.js index 53958b55bd5..60d3ebdce47 100644 --- a/tests/mocha/insertion_marker_test.js +++ b/tests/mocha/insertion_marker_test.js @@ -1,385 +1,385 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.insertionMarker'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('InsertionMarkers', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = Blockly.inject('blocklyDiv', {}); - Blockly.defineBlocksWithJsonArray([ - { - "type": "stack_block", - "message0": "", - "previousStatement": null, - "nextStatement": null, - }, - { - "type": "row_block", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - }, - ], - "output": null, - }, - { - "type": "statement_block", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "STATEMENT", - }, - ], - "previousStatement": null, - "nextStatement": null, - }]); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - suite('Code Generation', function() { - setup(function() { - Blockly.JavaScript['stack_block'] = function(block) { - return 'stack[' + block.id + '];\n'; - }; - Blockly.JavaScript['row_block'] = function(block) { - const value = Blockly.JavaScript - .valueToCode(block, 'INPUT', Blockly.JavaScript.ORDER_NONE); - const code = 'row[' + block.id + '](' + value + ')'; - return [code, Blockly.JavaScript.ORDER_NONE]; - }; - Blockly.JavaScript['statement_block'] = function(block) { - return 'statement[' + block.id + ']{\n' + Blockly.JavaScript - .statementToCode(block, 'STATEMENT') + '};\n'; - }; - - this.assertGen = function(xml, expectedCode) { - Blockly.Xml.domToWorkspace(xml, this.workspace); - const block = this.workspace.getBlockById('insertion'); - block.isInsertionMarker_ = true; - const code = Blockly.JavaScript.workspaceToCode(this.workspace); - chai.assert.equal(code, expectedCode); - }; - }); - teardown(function() { - delete Blockly.JavaScript['stack_block']; - delete Blockly.JavaScript['row_block']; - delete Blockly.JavaScript['statement_block']; - }); - test('Marker Surrounds', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertGen(xml, 'statement[a]{\n};\n'); - }); - test('Marker Enclosed', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertGen(xml, 'statement[a]{\n};\n'); - }); - test('Marker Enclosed and Surrounds', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertGen(xml, - 'statement[a]{\n' + - ' statement[b]{\n' + - ' };\n' + - '};\n'); - }); - test('Marker Prev', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertGen(xml, 'stack[a];\n'); - }); - test('Marker Next', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertGen(xml, 'stack[a];\n'); - }); - test('Marker Middle of Stack', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertGen(xml, - 'stack[a];\n' + - 'stack[b];\n'); - }); - test('Marker On Output', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertGen(xml, 'row[a]();\n'); - }); - test('Marker On Input', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertGen(xml, 'row[a]();\n'); - }); - test('Marker Middle of Row', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertGen(xml, 'row[a](row[b]());\n'); - }); - test('Marker Detatched', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ''); - this.assertGen(xml, 'stack[a];\n'); - }); - }); - suite('Serialization', function() { - setup(function() { - this.assertXml = function(xmlIn, expectXml) { - Blockly.Xml.domToWorkspace(xmlIn, this.workspace); - const block = this.workspace.getBlockById('insertion'); - block.setInsertionMarker(true); - let xml = Blockly.Xml.workspaceToDom(this.workspace); - Blockly.Xml.domToWorkspace(xml, this.workspace); - xml = Blockly.Xml.domToText(xml); - chai.assert.equal(xml, expectXml); - }; - }); - test('Marker Surrounds', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - // Note how the x and y are not 20, they are slightly lower and end-er - // because these are the coords of the wrapped block. - this.assertXml(xml, - '' + - '' + - ''); - }); - test('Marker Enclosed', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertXml(xml, - '' + - '' + - ''); - }); - test('Marker Enclosed and Surrounds', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertXml(xml, - '' + - '' + - '' + - '' + - '' + - '' + - ''); - }); - test('Marker Prev', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - // Note how the y coord is not at 20, it is lower. This is because these - // are the coords of the next block. - this.assertXml(xml, - '' + - '' + - ''); - }); - test('Marker Next', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertXml(xml, - '' + - '' + - ''); - }); - test('Marker Middle of Stack', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertXml(xml, - '' + - '' + - '' + - '' + - '' + - '' + - ''); - }); - test('Marker On Output', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - // Note how the x value is not at 20. This is because these are the coords - // of the wrapped block. - this.assertXml(xml, - '' + - '' + - ''); - }); - test('Marker On Input', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertXml(xml, - '' + - '' + - ''); - }); - test('Marker Middle of Row', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - this.assertXml(xml, - '' + - '' + - '' + - '' + - '' + - '' + - ''); - }); - test('Marker Detatched', function() { - const xml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ''); - this.assertXml(xml, - '' + - '' + - ''); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.insertionMarker'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('InsertionMarkers', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = Blockly.inject('blocklyDiv', {}); + Blockly.defineBlocksWithJsonArray([ + { + "type": "stack_block", + "message0": "", + "previousStatement": null, + "nextStatement": null, + }, + { + "type": "row_block", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + }, + ], + "output": null, + }, + { + "type": "statement_block", + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "STATEMENT", + }, + ], + "previousStatement": null, + "nextStatement": null, + }]); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + suite('Code Generation', function() { + setup(function() { + Blockly.JavaScript['stack_block'] = function(block) { + return 'stack[' + block.id + '];\n'; + }; + Blockly.JavaScript['row_block'] = function(block) { + const value = Blockly.JavaScript + .valueToCode(block, 'INPUT', Blockly.JavaScript.ORDER_NONE); + const code = 'row[' + block.id + '](' + value + ')'; + return [code, Blockly.JavaScript.ORDER_NONE]; + }; + Blockly.JavaScript['statement_block'] = function(block) { + return 'statement[' + block.id + ']{\n' + Blockly.JavaScript + .statementToCode(block, 'STATEMENT') + '};\n'; + }; + + this.assertGen = function(xml, expectedCode) { + Blockly.Xml.domToWorkspace(xml, this.workspace); + const block = this.workspace.getBlockById('insertion'); + block.isInsertionMarker_ = true; + const code = Blockly.JavaScript.workspaceToCode(this.workspace); + chai.assert.equal(code, expectedCode); + }; + }); + teardown(function() { + delete Blockly.JavaScript['stack_block']; + delete Blockly.JavaScript['row_block']; + delete Blockly.JavaScript['statement_block']; + }); + test('Marker Surrounds', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertGen(xml, 'statement[a]{\n};\n'); + }); + test('Marker Enclosed', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertGen(xml, 'statement[a]{\n};\n'); + }); + test('Marker Enclosed and Surrounds', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertGen(xml, + 'statement[a]{\n' + + ' statement[b]{\n' + + ' };\n' + + '};\n'); + }); + test('Marker Prev', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertGen(xml, 'stack[a];\n'); + }); + test('Marker Next', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertGen(xml, 'stack[a];\n'); + }); + test('Marker Middle of Stack', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertGen(xml, + 'stack[a];\n' + + 'stack[b];\n'); + }); + test('Marker On Output', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertGen(xml, 'row[a]();\n'); + }); + test('Marker On Input', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertGen(xml, 'row[a]();\n'); + }); + test('Marker Middle of Row', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertGen(xml, 'row[a](row[b]());\n'); + }); + test('Marker Detatched', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ''); + this.assertGen(xml, 'stack[a];\n'); + }); + }); + suite('Serialization', function() { + setup(function() { + this.assertXml = function(xmlIn, expectXml) { + Blockly.Xml.domToWorkspace(xmlIn, this.workspace); + const block = this.workspace.getBlockById('insertion'); + block.setInsertionMarker(true); + let xml = Blockly.Xml.workspaceToDom(this.workspace); + Blockly.Xml.domToWorkspace(xml, this.workspace); + xml = Blockly.Xml.domToText(xml); + chai.assert.equal(xml, expectXml); + }; + }); + test('Marker Surrounds', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + // Note how the x and y are not 20, they are slightly lower and end-er + // because these are the coords of the wrapped block. + this.assertXml(xml, + '' + + '' + + ''); + }); + test('Marker Enclosed', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertXml(xml, + '' + + '' + + ''); + }); + test('Marker Enclosed and Surrounds', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertXml(xml, + '' + + '' + + '' + + '' + + '' + + '' + + ''); + }); + test('Marker Prev', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + // Note how the y coord is not at 20, it is lower. This is because these + // are the coords of the next block. + this.assertXml(xml, + '' + + '' + + ''); + }); + test('Marker Next', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertXml(xml, + '' + + '' + + ''); + }); + test('Marker Middle of Stack', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertXml(xml, + '' + + '' + + '' + + '' + + '' + + '' + + ''); + }); + test('Marker On Output', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + // Note how the x value is not at 20. This is because these are the coords + // of the wrapped block. + this.assertXml(xml, + '' + + '' + + ''); + }); + test('Marker On Input', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertXml(xml, + '' + + '' + + ''); + }); + test('Marker Middle of Row', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + this.assertXml(xml, + '' + + '' + + '' + + '' + + '' + + '' + + ''); + }); + test('Marker Detatched', function() { + const xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ''); + this.assertXml(xml, + '' + + '' + + ''); + }); + }); +}); diff --git a/tests/mocha/jso_deserialization_test.js b/tests/mocha/jso_deserialization_test.js index 7f89f118984..dd901810b32 100644 --- a/tests/mocha/jso_deserialization_test.js +++ b/tests/mocha/jso_deserialization_test.js @@ -1,716 +1,716 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.jsoDeserialization'); - -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {assertEventFired} = goog.require('Blockly.test.helpers.events'); -const eventUtils = goog.require('Blockly.Events.utils'); - - -suite('JSO Deserialization', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('Events', function() { - suite('Finished loading', function() { - test('Just var', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'controls_if', - 'id': 'testId', - 'x': 42, - 'y': 42, - }, - ], - }, - }; - Blockly.serialization.workspaces.load(state, this.workspace); - assertEventFired( - this.eventsFireStub, - Blockly.Events.FinishedLoading, - {type: eventUtils.FINISHED_LOADING}, - this.workspace.id); - }); - - test('Explicit group', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'controls_if', - 'id': 'testId', - 'x': 42, - 'y': 42, - }, - ], - }, - }; - Blockly.Events.setGroup('my group'); - Blockly.serialization.workspaces.load(state, this.workspace); - assertEventFired( - this.eventsFireStub, Blockly.Events.FinishedLoading, - {'group': 'my group', "type": eventUtils.FINISHED_LOADING}, - this.workspace.id); - }); - - test('Automatic group', function() { - const state = { - 'variables': [ - { - 'name': 'test', - 'id': 'testId', - }, - ], - 'blocks': { - 'blocks': [ - { - 'type': 'variables_get', - 'id': 'blockId', - 'x': 42, - 'y': 42, - 'fields': { - 'VAR': { - 'id': 'testId', - }, - }, - }, - ], - }, - }; - Blockly.serialization.workspaces.load(state, this.workspace); - const calls = this.eventsFireStub.getCalls(); - const group = calls[0].args[0].group; - chai.assert.isTrue(calls.every((call) => call.args[0].group == group)); - }); - }); - - suite('Var create', function() { - test('Just var', function() { - const state = { - 'variables': [ - { - 'name': 'test', - 'id': 'testId', - }, - ], - }; - Blockly.serialization.workspaces.load(state, this.workspace); - assertEventFired( - this.eventsFireStub, Blockly.Events.VarCreate, { - 'varName': 'test', - 'varId': 'testId', - 'varType': '', - 'recordUndo': false, - "type": eventUtils.VAR_CREATE, - }, - this.workspace.id); - }); - - test('Record undo', function() { - const state = { - 'variables': [ - { - 'name': 'test', - 'id': 'testId', - }, - ], - }; - Blockly.serialization.workspaces.load(state, this.workspace, {recordUndo: true}); - assertEventFired( - this.eventsFireStub, Blockly.Events.VarCreate, { - 'varName': 'test', - 'varId': 'testId', - 'varType': '', - 'recordUndo': true, - "type": eventUtils.VAR_CREATE, - }, - this.workspace.id); - }); - - test('Grouping', function() { - const state = { - 'variables': [ - { - 'name': 'test', - 'id': 'testId', - }, - ], - }; - Blockly.Events.setGroup('my group'); - Blockly.serialization.workspaces.load(state, this.workspace); - assertEventFired( - this.eventsFireStub, Blockly.Events.VarCreate, { - 'varName': 'test', - 'varId': 'testId', - 'varType': '', - 'group': 'my group', - "type": eventUtils.VAR_CREATE, - }, - this.workspace.id); - }); - - test('Multiple vars grouped', function() { - const state = { - 'variables': [ - { - 'name': 'test', - 'id': 'testId', - }, - { - 'name': 'test2', - 'id': 'testId2', - }, - ], - }; - Blockly.serialization.workspaces.load(state, this.workspace); - const calls = this.eventsFireStub.getCalls(); - const group = calls[0].args[0].group; - chai.assert.isTrue(calls.every((call) => call.args[0].group == group)); - }); - - test('Var with block', function() { - const state = { - 'variables': [ - { - 'name': 'test', - 'id': 'testId', - }, - ], - 'blocks': { - 'blocks': [ - { - 'type': 'variables_get', - 'id': 'blockId', - 'x': 42, - 'y': 42, - 'fields': { - 'VAR': { - 'id': 'testId', - }, - }, - }, - ], - }, - }; - Blockly.serialization.workspaces.load(state, this.workspace); - const calls = this.eventsFireStub.getCalls(); - const count = calls.reduce((acc, call) => { - if (call.args[0] instanceof Blockly.Events.VarCreate) { - return acc + 1; - } - return acc; - }, 0); - chai.assert.equal(count, 1); - assertEventFired( - this.eventsFireStub, Blockly.Events.VarCreate, { - 'varName': 'test', - 'varId': 'testId', - 'varType': '', - "type": eventUtils.VAR_CREATE, - }, - this.workspace.id); - }); - }); - - suite('Block create', function() { - suite('Top-level call', function() { - test('No children', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'controls_if', - 'id': 'testId', - 'x': 42, - 'y': 42, - }, - ], - }, - }; - Blockly.serialization.workspaces.load(state, this.workspace); - assertEventFired( - this.eventsFireStub, - Blockly.Events.BlockCreate, - {'recordUndo': false, "type": eventUtils.BLOCK_CREATE}, - this.workspace.id, - 'testId'); - }); - - test('Record undo', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'controls_if', - 'id': 'testId', - 'x': 42, - 'y': 42, - }, - ], - }, - }; - Blockly.serialization.workspaces.load(state, this.workspace, {'recordUndo': true}); - assertEventFired( - this.eventsFireStub, - Blockly.Events.BlockCreate, - {'recordUndo': true, "type": eventUtils.BLOCK_CREATE}, - this.workspace.id, - 'testId'); - }); - - test('Grouping', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'controls_if', - 'id': 'testId', - 'x': 42, - 'y': 42, - }, - ], - }, - }; - Blockly.Events.setGroup('my group'); - Blockly.serialization.workspaces.load(state, this.workspace); - assertEventFired( - this.eventsFireStub, - Blockly.Events.BlockCreate, - {'group': 'my group', "type": eventUtils.BLOCK_CREATE}, - this.workspace.id, - 'testId'); - }); - - test('Multiple blocks grouped', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'controls_if', - 'id': 'testId', - 'x': 42, - 'y': 42, - }, - { - 'type': 'controls_if', - 'id': 'testId', - 'x': 84, - 'y': 84, - }, - ], - }, - }; - Blockly.serialization.workspaces.load(state, this.workspace); - const calls = this.eventsFireStub.getCalls(); - const group = calls[0].args[0].group; - chai.assert.isTrue(calls.every((call) => call.args[0].group == group)); - }); - - test('With children', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'controls_if', - 'id': 'id1', - 'x': 42, - 'y': 42, - 'inputs': { - 'DO0': { - 'block': { - 'type': 'controls_if', - 'id': 'id2', - }, - }, - }, - 'next': { - 'block': { - 'type': 'controls_if', - 'id': 'id3', - }, - }, - }, - ], - }, - }; - Blockly.serialization.workspaces.load(state, this.workspace); - assertEventFired( - this.eventsFireStub, - Blockly.Events.BlockCreate, - {type: eventUtils.BLOCK_CREATE}, - this.workspace.id, - 'id1'); - }); - }); - - suite('Direct call', function() { - test('No children', function() { - const state = { - 'type': 'controls_if', - 'id': 'testId', - 'x': 42, - 'y': 42, - }; - Blockly.serialization.blocks.append(state, this.workspace); - assertEventFired( - this.eventsFireStub, - Blockly.Events.BlockCreate, - {'recordUndo': false}, - this.workspace.id, - 'testId'); - }); - - test('Record undo', function() { - const state = { - 'type': 'controls_if', - 'id': 'testId', - 'x': 42, - 'y': 42, - }; - Blockly.serialization.blocks.append( - state, this.workspace, {'recordUndo': true}); - assertEventFired( - this.eventsFireStub, - Blockly.Events.BlockCreate, - {'recordUndo': true, "type": eventUtils.BLOCK_CREATE}, - this.workspace.id, - 'testId'); - }); - - test('Grouping', function() { - const state = { - 'type': 'controls_if', - 'id': 'testId', - 'x': 42, - 'y': 42, - }; - Blockly.Events.setGroup('my group'); - Blockly.serialization.blocks.append(state, this.workspace); - assertEventFired( - this.eventsFireStub, - Blockly.Events.BlockCreate, - {'group': 'my group', "type": eventUtils.BLOCK_CREATE}, - this.workspace.id, - 'testId'); - }); - }); - }); - }); - - suite('Exceptions', function() { - setup(function() { - this.assertThrows = function(state, error) { - chai.assert.throws(() => { - Blockly.serialization.workspaces.load(state, this.workspace); - }, error); - }; - }); - - suite('Undefined block type', function() { - test('Name', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'not_a_real_block', - }, - ], - }, - }; - this.assertThrows(state, TypeError); - }); - - test('Casing', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'MATH_NUMBER', - }, - ], - }, - }; - this.assertThrows(state, TypeError); - }); - }); - - suite('Missing connection', function() { - test('Input name', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'logic_compare', - 'inputs': { - 'not_an_input': { - 'block': { - 'type': 'logic_boolean', - }, - }, - }, - }, - ], - }, - }; - this.assertThrows( - state, Blockly.serialization.exceptions.MissingConnection); - }); - - test('Input casing', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'logic_compare', - 'inputs': { - 'a': { - 'block': { - 'type': 'logic_boolean', - }, - }, - }, - }, - ], - }, - }; - this.assertThrows( - state, Blockly.serialization.exceptions.MissingConnection); - }); - - test('Next', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'logic_compare', - 'next': { - 'block': { - 'type': 'text_print', - }, - }, - }, - ], - }, - }; - this.assertThrows( - state, Blockly.serialization.exceptions.MissingConnection); - }); - - test('Previous', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'text_print', - 'next': { - 'block': { - 'type': 'logic_compare', - }, - }, - }, - ], - }, - }; - this.assertThrows( - state, Blockly.serialization.exceptions.MissingConnection); - }); - - test('Output', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'logic_compare', - 'inputs': { - 'A': { - 'block': { - 'type': 'text_print', - }, - }, - }, - }, - ], - }, - }; - this.assertThrows( - state, Blockly.serialization.exceptions.MissingConnection); - }); - }); - - suite('Bad connection check', function() { - test('Bad checks', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'logic_operation', - 'inputs': { - 'A': { - 'block': { - 'type': 'math_number', - }, - }, - }, - }, - ], - }, - }; - this.assertThrows( - state, Blockly.serialization.exceptions.BadConnectionCheck); - }); - }); - - suite('Real child of shadow', function() { - test('Input', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'logic_compare', - 'inputs': { - 'A': { - 'shadow': { - 'type': 'logic_compare', - 'inputs': { - 'A': { - 'block': { - 'type': 'logic_boolean', - }, - }, - }, - }, - }, - }, - }, - ], - }, - }; - this.assertThrows( - state, Blockly.serialization.exceptions.RealChildOfShadow); - }); - - test('Next', function() { - const state = { - 'blocks': { - 'blocks': [ - { - 'type': 'text_print', - 'next': { - 'shadow': { - 'type': 'text_print', - 'next': { - 'block': { - 'type': 'text_print', - }, - }, - }, - }, - }, - ], - }, - }; - this.assertThrows( - state, Blockly.serialization.exceptions.RealChildOfShadow); - }); - }); - }); - - test('Priority', function() { - const blocksSerializer = Blockly.registry.getClass( - Blockly.registry.Type.SERIALIZER, 'blocks'); - const variablesSerializer = Blockly.registry.getClass( - Blockly.registry.Type.SERIALIZER, 'variables'); - - Blockly.serialization.registry.unregister('blocks'); - Blockly.serialization.registry.unregister('variables'); - - const calls = []; - - const first = { - priority: 100, - save: () => null, - load: () => calls.push('first-load'), - clear: () => calls.push('first-clear'), - }; - const second = { - priority: 0, - save: () => null, - load: () => calls.push('second-load'), - clear: () => calls.push('second-clear'), - }; - const third = { - priority: -10, - save: () => null, - load: () => calls.push('third-load'), - clear: () => calls.push('third-clear'), - }; - - Blockly.serialization.registry.register('third', third); - Blockly.serialization.registry.register('first', first); - Blockly.serialization.registry.register('second', second); - - Blockly.serialization.workspaces.load( - {'first': {}, 'third': {}, 'second': {}}, this.workspace); - - Blockly.serialization.registry.unregister('first'); - Blockly.serialization.registry.unregister('second'); - Blockly.serialization.registry.unregister('third'); - - Blockly.serialization.registry.register('blocks', blocksSerializer); - Blockly.serialization.registry.register('variables', variablesSerializer); - - chai.assert.deepEqual( - calls, - [ - 'third-clear', - 'second-clear', - 'first-clear', - 'first-load', - 'second-load', - 'third-load', - ]); - }); - - suite('Extra state', function() { - // Most of this is covered by our round-trip tests. But we need one test - // for old xml hooks. - test('Xml hooks', function() { - Blockly.Blocks['test_block'] = { - init: function() { }, - - mutationToDom: function() { - const container = Blockly.utils.xml.createElement('mutation'); - container.setAttribute('value', 'some value'); - return container; - }, - - domToMutation: function(element) { - this.someProperty = element.getAttribute('value'); - }, - }; - - const block = Blockly.serialization.blocks.append( - { - 'type': 'test_block', - 'extraState': '', - }, - this.workspace); - - delete Blockly.Blocks['test_block']; - - chai.assert.equal(block.someProperty, 'some value'); - }); - }); -}); +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.jsoDeserialization'); + +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {assertEventFired} = goog.require('Blockly.test.helpers.events'); +const eventUtils = goog.require('Blockly.Events.utils'); + + +suite('JSO Deserialization', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('Events', function() { + suite('Finished loading', function() { + test('Just var', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'controls_if', + 'id': 'testId', + 'x': 42, + 'y': 42, + }, + ], + }, + }; + Blockly.serialization.workspaces.load(state, this.workspace); + assertEventFired( + this.eventsFireStub, + Blockly.Events.FinishedLoading, + {type: eventUtils.FINISHED_LOADING}, + this.workspace.id); + }); + + test('Explicit group', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'controls_if', + 'id': 'testId', + 'x': 42, + 'y': 42, + }, + ], + }, + }; + Blockly.Events.setGroup('my group'); + Blockly.serialization.workspaces.load(state, this.workspace); + assertEventFired( + this.eventsFireStub, Blockly.Events.FinishedLoading, + {'group': 'my group', "type": eventUtils.FINISHED_LOADING}, + this.workspace.id); + }); + + test('Automatic group', function() { + const state = { + 'variables': [ + { + 'name': 'test', + 'id': 'testId', + }, + ], + 'blocks': { + 'blocks': [ + { + 'type': 'variables_get', + 'id': 'blockId', + 'x': 42, + 'y': 42, + 'fields': { + 'VAR': { + 'id': 'testId', + }, + }, + }, + ], + }, + }; + Blockly.serialization.workspaces.load(state, this.workspace); + const calls = this.eventsFireStub.getCalls(); + const group = calls[0].args[0].group; + chai.assert.isTrue(calls.every((call) => call.args[0].group == group)); + }); + }); + + suite('Var create', function() { + test('Just var', function() { + const state = { + 'variables': [ + { + 'name': 'test', + 'id': 'testId', + }, + ], + }; + Blockly.serialization.workspaces.load(state, this.workspace); + assertEventFired( + this.eventsFireStub, Blockly.Events.VarCreate, { + 'varName': 'test', + 'varId': 'testId', + 'varType': '', + 'recordUndo': false, + "type": eventUtils.VAR_CREATE, + }, + this.workspace.id); + }); + + test('Record undo', function() { + const state = { + 'variables': [ + { + 'name': 'test', + 'id': 'testId', + }, + ], + }; + Blockly.serialization.workspaces.load(state, this.workspace, {recordUndo: true}); + assertEventFired( + this.eventsFireStub, Blockly.Events.VarCreate, { + 'varName': 'test', + 'varId': 'testId', + 'varType': '', + 'recordUndo': true, + "type": eventUtils.VAR_CREATE, + }, + this.workspace.id); + }); + + test('Grouping', function() { + const state = { + 'variables': [ + { + 'name': 'test', + 'id': 'testId', + }, + ], + }; + Blockly.Events.setGroup('my group'); + Blockly.serialization.workspaces.load(state, this.workspace); + assertEventFired( + this.eventsFireStub, Blockly.Events.VarCreate, { + 'varName': 'test', + 'varId': 'testId', + 'varType': '', + 'group': 'my group', + "type": eventUtils.VAR_CREATE, + }, + this.workspace.id); + }); + + test('Multiple vars grouped', function() { + const state = { + 'variables': [ + { + 'name': 'test', + 'id': 'testId', + }, + { + 'name': 'test2', + 'id': 'testId2', + }, + ], + }; + Blockly.serialization.workspaces.load(state, this.workspace); + const calls = this.eventsFireStub.getCalls(); + const group = calls[0].args[0].group; + chai.assert.isTrue(calls.every((call) => call.args[0].group == group)); + }); + + test('Var with block', function() { + const state = { + 'variables': [ + { + 'name': 'test', + 'id': 'testId', + }, + ], + 'blocks': { + 'blocks': [ + { + 'type': 'variables_get', + 'id': 'blockId', + 'x': 42, + 'y': 42, + 'fields': { + 'VAR': { + 'id': 'testId', + }, + }, + }, + ], + }, + }; + Blockly.serialization.workspaces.load(state, this.workspace); + const calls = this.eventsFireStub.getCalls(); + const count = calls.reduce((acc, call) => { + if (call.args[0] instanceof Blockly.Events.VarCreate) { + return acc + 1; + } + return acc; + }, 0); + chai.assert.equal(count, 1); + assertEventFired( + this.eventsFireStub, Blockly.Events.VarCreate, { + 'varName': 'test', + 'varId': 'testId', + 'varType': '', + "type": eventUtils.VAR_CREATE, + }, + this.workspace.id); + }); + }); + + suite('Block create', function() { + suite('Top-level call', function() { + test('No children', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'controls_if', + 'id': 'testId', + 'x': 42, + 'y': 42, + }, + ], + }, + }; + Blockly.serialization.workspaces.load(state, this.workspace); + assertEventFired( + this.eventsFireStub, + Blockly.Events.BlockCreate, + {'recordUndo': false, "type": eventUtils.BLOCK_CREATE}, + this.workspace.id, + 'testId'); + }); + + test('Record undo', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'controls_if', + 'id': 'testId', + 'x': 42, + 'y': 42, + }, + ], + }, + }; + Blockly.serialization.workspaces.load(state, this.workspace, {'recordUndo': true}); + assertEventFired( + this.eventsFireStub, + Blockly.Events.BlockCreate, + {'recordUndo': true, "type": eventUtils.BLOCK_CREATE}, + this.workspace.id, + 'testId'); + }); + + test('Grouping', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'controls_if', + 'id': 'testId', + 'x': 42, + 'y': 42, + }, + ], + }, + }; + Blockly.Events.setGroup('my group'); + Blockly.serialization.workspaces.load(state, this.workspace); + assertEventFired( + this.eventsFireStub, + Blockly.Events.BlockCreate, + {'group': 'my group', "type": eventUtils.BLOCK_CREATE}, + this.workspace.id, + 'testId'); + }); + + test('Multiple blocks grouped', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'controls_if', + 'id': 'testId', + 'x': 42, + 'y': 42, + }, + { + 'type': 'controls_if', + 'id': 'testId', + 'x': 84, + 'y': 84, + }, + ], + }, + }; + Blockly.serialization.workspaces.load(state, this.workspace); + const calls = this.eventsFireStub.getCalls(); + const group = calls[0].args[0].group; + chai.assert.isTrue(calls.every((call) => call.args[0].group == group)); + }); + + test('With children', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'controls_if', + 'id': 'id1', + 'x': 42, + 'y': 42, + 'inputs': { + 'DO0': { + 'block': { + 'type': 'controls_if', + 'id': 'id2', + }, + }, + }, + 'next': { + 'block': { + 'type': 'controls_if', + 'id': 'id3', + }, + }, + }, + ], + }, + }; + Blockly.serialization.workspaces.load(state, this.workspace); + assertEventFired( + this.eventsFireStub, + Blockly.Events.BlockCreate, + {type: eventUtils.BLOCK_CREATE}, + this.workspace.id, + 'id1'); + }); + }); + + suite('Direct call', function() { + test('No children', function() { + const state = { + 'type': 'controls_if', + 'id': 'testId', + 'x': 42, + 'y': 42, + }; + Blockly.serialization.blocks.append(state, this.workspace); + assertEventFired( + this.eventsFireStub, + Blockly.Events.BlockCreate, + {'recordUndo': false}, + this.workspace.id, + 'testId'); + }); + + test('Record undo', function() { + const state = { + 'type': 'controls_if', + 'id': 'testId', + 'x': 42, + 'y': 42, + }; + Blockly.serialization.blocks.append( + state, this.workspace, {'recordUndo': true}); + assertEventFired( + this.eventsFireStub, + Blockly.Events.BlockCreate, + {'recordUndo': true, "type": eventUtils.BLOCK_CREATE}, + this.workspace.id, + 'testId'); + }); + + test('Grouping', function() { + const state = { + 'type': 'controls_if', + 'id': 'testId', + 'x': 42, + 'y': 42, + }; + Blockly.Events.setGroup('my group'); + Blockly.serialization.blocks.append(state, this.workspace); + assertEventFired( + this.eventsFireStub, + Blockly.Events.BlockCreate, + {'group': 'my group', "type": eventUtils.BLOCK_CREATE}, + this.workspace.id, + 'testId'); + }); + }); + }); + }); + + suite('Exceptions', function() { + setup(function() { + this.assertThrows = function(state, error) { + chai.assert.throws(() => { + Blockly.serialization.workspaces.load(state, this.workspace); + }, error); + }; + }); + + suite('Undefined block type', function() { + test('Name', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'not_a_real_block', + }, + ], + }, + }; + this.assertThrows(state, TypeError); + }); + + test('Casing', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'MATH_NUMBER', + }, + ], + }, + }; + this.assertThrows(state, TypeError); + }); + }); + + suite('Missing connection', function() { + test('Input name', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'logic_compare', + 'inputs': { + 'not_an_input': { + 'block': { + 'type': 'logic_boolean', + }, + }, + }, + }, + ], + }, + }; + this.assertThrows( + state, Blockly.serialization.exceptions.MissingConnection); + }); + + test('Input casing', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'logic_compare', + 'inputs': { + 'a': { + 'block': { + 'type': 'logic_boolean', + }, + }, + }, + }, + ], + }, + }; + this.assertThrows( + state, Blockly.serialization.exceptions.MissingConnection); + }); + + test('Next', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'logic_compare', + 'next': { + 'block': { + 'type': 'text_print', + }, + }, + }, + ], + }, + }; + this.assertThrows( + state, Blockly.serialization.exceptions.MissingConnection); + }); + + test('Previous', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'text_print', + 'next': { + 'block': { + 'type': 'logic_compare', + }, + }, + }, + ], + }, + }; + this.assertThrows( + state, Blockly.serialization.exceptions.MissingConnection); + }); + + test('Output', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'logic_compare', + 'inputs': { + 'A': { + 'block': { + 'type': 'text_print', + }, + }, + }, + }, + ], + }, + }; + this.assertThrows( + state, Blockly.serialization.exceptions.MissingConnection); + }); + }); + + suite('Bad connection check', function() { + test('Bad checks', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'logic_operation', + 'inputs': { + 'A': { + 'block': { + 'type': 'math_number', + }, + }, + }, + }, + ], + }, + }; + this.assertThrows( + state, Blockly.serialization.exceptions.BadConnectionCheck); + }); + }); + + suite('Real child of shadow', function() { + test('Input', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'logic_compare', + 'inputs': { + 'A': { + 'shadow': { + 'type': 'logic_compare', + 'inputs': { + 'A': { + 'block': { + 'type': 'logic_boolean', + }, + }, + }, + }, + }, + }, + }, + ], + }, + }; + this.assertThrows( + state, Blockly.serialization.exceptions.RealChildOfShadow); + }); + + test('Next', function() { + const state = { + 'blocks': { + 'blocks': [ + { + 'type': 'text_print', + 'next': { + 'shadow': { + 'type': 'text_print', + 'next': { + 'block': { + 'type': 'text_print', + }, + }, + }, + }, + }, + ], + }, + }; + this.assertThrows( + state, Blockly.serialization.exceptions.RealChildOfShadow); + }); + }); + }); + + test('Priority', function() { + const blocksSerializer = Blockly.registry.getClass( + Blockly.registry.Type.SERIALIZER, 'blocks'); + const variablesSerializer = Blockly.registry.getClass( + Blockly.registry.Type.SERIALIZER, 'variables'); + + Blockly.serialization.registry.unregister('blocks'); + Blockly.serialization.registry.unregister('variables'); + + const calls = []; + + const first = { + priority: 100, + save: () => null, + load: () => calls.push('first-load'), + clear: () => calls.push('first-clear'), + }; + const second = { + priority: 0, + save: () => null, + load: () => calls.push('second-load'), + clear: () => calls.push('second-clear'), + }; + const third = { + priority: -10, + save: () => null, + load: () => calls.push('third-load'), + clear: () => calls.push('third-clear'), + }; + + Blockly.serialization.registry.register('third', third); + Blockly.serialization.registry.register('first', first); + Blockly.serialization.registry.register('second', second); + + Blockly.serialization.workspaces.load( + {'first': {}, 'third': {}, 'second': {}}, this.workspace); + + Blockly.serialization.registry.unregister('first'); + Blockly.serialization.registry.unregister('second'); + Blockly.serialization.registry.unregister('third'); + + Blockly.serialization.registry.register('blocks', blocksSerializer); + Blockly.serialization.registry.register('variables', variablesSerializer); + + chai.assert.deepEqual( + calls, + [ + 'third-clear', + 'second-clear', + 'first-clear', + 'first-load', + 'second-load', + 'third-load', + ]); + }); + + suite('Extra state', function() { + // Most of this is covered by our round-trip tests. But we need one test + // for old xml hooks. + test('Xml hooks', function() { + Blockly.Blocks['test_block'] = { + init: function() { }, + + mutationToDom: function() { + const container = Blockly.utils.xml.createElement('mutation'); + container.setAttribute('value', 'some value'); + return container; + }, + + domToMutation: function(element) { + this.someProperty = element.getAttribute('value'); + }, + }; + + const block = Blockly.serialization.blocks.append( + { + 'type': 'test_block', + 'extraState': '', + }, + this.workspace); + + delete Blockly.Blocks['test_block']; + + chai.assert.equal(block.someProperty, 'some value'); + }); + }); +}); diff --git a/tests/mocha/jso_serialization_test.js b/tests/mocha/jso_serialization_test.js index d4abd5ffb11..2b325202ac0 100644 --- a/tests/mocha/jso_serialization_test.js +++ b/tests/mocha/jso_serialization_test.js @@ -1,796 +1,796 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.jsoSerialization'); - -const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {defineRowBlock, defineStackBlock, defineStatementBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); - - -suite('JSO Serialization', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - - defineStackBlock(); - defineRowBlock(); - defineStatementBlock(); - - createGenUidStubWithReturns(new Array(10).fill().map((_, i) => 'id' + i)); - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - sharedTestTeardown.call(this); - }); - - function assertProperty(obj, property, value) { - chai.assert.deepEqual(obj[property], value); - } - - function assertNoProperty(obj, property) { - assertProperty(obj, property, undefined); - } - - - suite('Blocks', function() { - test('Null on insertionMarkers', function() { - const block = this.workspace.newBlock('row_block'); - block.setInsertionMarker(true); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.isNull(jso); - }); - - test('Basic', function() { - const block = this.workspace.newBlock('row_block'); - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'type', 'row_block'); - assertProperty(jso, 'id', 'id0'); - }); - - suite('Attributes', function() { - suite('Collapsed', function() { - test('True', function() { - const block = this.workspace.newBlock('row_block'); - block.setCollapsed(true); - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'collapsed', true); - }); - - test('False', function() { - const block = this.workspace.newBlock('row_block'); - block.setCollapsed(false); - const jso = Blockly.serialization.blocks.save(block); - assertNoProperty(jso, 'collapsed'); - }); - }); - - suite('Enabled', function() { - test('False', function() { - const block = this.workspace.newBlock('row_block'); - block.setEnabled(false); - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'enabled', false); - }); - - test('True', function() { - const block = this.workspace.newBlock('row_block'); - block.setEnabled(true); - const jso = Blockly.serialization.blocks.save(block); - assertNoProperty(jso, 'enabled'); - }); - }); - - suite('Inline', function() { - test('True', function() { - const block = this.workspace.newBlock('statement_block'); - block.setInputsInline(true); - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'inline', true); - }); - - test('False', function() { - const block = this.workspace.newBlock('statement_block'); - block.setInputsInline(false); - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'inline', false); - }); - - test('undefined', function() { - const block = this.workspace.newBlock('statement_block'); - const jso = Blockly.serialization.blocks.save(block); - assertNoProperty(jso, 'inline'); - }); - - test('True, matching default', function() { - const block = this.workspace.newBlock('statement_block'); - block.setInputsInline(true); - block.inputsInlineDefault = true; - const jso = Blockly.serialization.blocks.save(block); - assertNoProperty(jso, 'inline'); - }); - - test('False, matching default', function() { - const block = this.workspace.newBlock('statement_block'); - block.setInputsInline(false); - block.inputsInlineDefault = false; - const jso = Blockly.serialization.blocks.save(block); - assertNoProperty(jso, 'inline'); - }); - }); - - suite('Data', function() { - test('No data', function() { - const block = this.workspace.newBlock('row_block'); - const jso = Blockly.serialization.blocks.save(block); - assertNoProperty(jso, 'data'); - }); - - test('With data', function() { - const block = this.workspace.newBlock('row_block'); - block.data = 'some data'; - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'data', 'some data'); - }); - }); - }); - - suite('Coords', function() { - test('No coordinates', function() { - const block = this.workspace.newBlock('row_block'); - const jso = Blockly.serialization.blocks.save(block); - assertNoProperty(jso, 'x'); - assertNoProperty(jso, 'y'); - }); - - test('Simple', function() { - const block = this.workspace.newBlock('row_block'); - block.moveBy(42, 42); - const jso = - Blockly.serialization.blocks.save(block, {addCoordinates: true}); - assertProperty(jso, 'x', 42); - assertProperty(jso, 'y', 42); - }); - - test('Negative', function() { - const block = this.workspace.newBlock('row_block'); - block.moveBy(-42, -42); - const jso = - Blockly.serialization.blocks.save(block, {addCoordinates: true}); - assertProperty(jso, 'x', -42); - assertProperty(jso, 'y', -42); - }); - - test('Zero', function() { - const block = this.workspace.newBlock('row_block'); - const jso = - Blockly.serialization.blocks.save(block, {addCoordinates: true}); - assertProperty(jso, 'x', 0); - assertProperty(jso, 'y', 0); - }); - }); - - // Mutators. - suite('Extra state', function() { - test('Simple value', function() { - const block = this.workspace.newBlock('row_block'); - block.saveExtraState = function() { - return 'some extra state'; - }; - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'extraState', 'some extra state'); - }); - - test('Object', function() { - const block = this.workspace.newBlock('row_block'); - block.saveExtraState = function() { - return { - 'extra1': 'state1', - 'extra2': 42, - 'extra3': true, - }; - }; - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'extraState', { - 'extra1': 'state1', - 'extra2': 42, - 'extra3': true, - }); - }); - - test('Array', function() { - const block = this.workspace.newBlock('row_block'); - block.saveExtraState = function() { - return ['state1', 42, true]; - }; - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'extraState', ['state1', 42, true]); - }); - - test('Xml hooks', function() { - const block = this.workspace.newBlock('row_block'); - block.mutationToDom = function() { - const container = Blockly.utils.xml.createElement('mutation'); - container.setAttribute('value', 'some value'); - return container; - }; - const jso = Blockly.serialization.blocks.save(block); - assertProperty( - jso, 'extraState', ''); - }); - }); - - suite('Icons', function() { - suite('Comment', function() { - test('Basic', function() { - const block = this.workspace.newBlock('row_block'); - block.setCommentText('test'); - const jso = Blockly.serialization.blocks.save(block); - assertProperty( - jso, - 'icons', - { - 'comment': { - 'text': 'test', - 'pinned': false, - 'height': 80, - 'width': 160, - }, - }, - ); - }); - - test('Pinned', function() { - const block = this.workspace.newBlock('row_block'); - block.setCommentText('test'); - block.commentModel.pinned = true; - const jso = Blockly.serialization.blocks.save(block); - assertProperty( - jso, - 'icons', - { - 'comment': { - 'text': 'test', - 'pinned': true, - 'height': 80, - 'width': 160, - }, - }, - ); - }); - - test('Size', function() { - const block = this.workspace.newBlock('row_block'); - block.setCommentText('test'); - block.commentModel.size.height = 40; - block.commentModel.size.width = 320; - const jso = Blockly.serialization.blocks.save(block); - assertProperty( - jso, - 'icons', - { - 'comment': { - 'text': 'test', - 'pinned': false, - 'height': 40, - 'width': 320, - }, - }, - ); - }); - }); - }); - - suite('Fields', function() { - class StringStateField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - - saveState() { - return 'some state'; - } - } - - class ObjectStateField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - - saveState() { - return { - 'prop1': 'state1', - 'prop2': 42, - 'prop3': true, - }; - } - } - - class ArrayStateField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - - saveState() { - return ['state1', 42, true]; - } - } - - class XmlStateField extends Blockly.Field { - constructor(value, validator = undefined, config = undefined) { - super(value, validator, config); - this.SERIALIZABLE = true; - } - } - - test('Simple value', function() { - const block = this.workspace.newBlock('row_block'); - block.getInput('INPUT').appendField(new StringStateField(''), 'FIELD'); - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'fields', {'FIELD': 'some state'}); - }); - - test('Object', function() { - const block = this.workspace.newBlock('row_block'); - block.getInput('INPUT').appendField(new ObjectStateField(''), 'FIELD'); - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'fields', {'FIELD': { - 'prop1': 'state1', - 'prop2': 42, - 'prop3': true, - }}); - }); - - test('Array', function() { - const block = this.workspace.newBlock('row_block'); - block.getInput('INPUT').appendField(new ArrayStateField(''), 'FIELD'); - const jso = Blockly.serialization.blocks.save(block); - assertProperty(jso, 'fields', {'FIELD': ['state1', 42, true]}); - }); - }); - - suite('Connected blocks', function() { - setup(function() { - this.assertInput = function(jso, name, value) { - chai.assert.deepInclude(jso['inputs'][name], value); - }; - - this.createBlockWithChild = function(blockType, inputName) { - const block = this.workspace.newBlock(blockType); - const childBlock = this.workspace.newBlock(blockType); - block.getInput(inputName).connection.connect( - childBlock.outputConnection || childBlock.previousConnection); - return block; - }; - - this.createBlockWithShadow = function(blockType, inputName) { - const block = this.workspace.newBlock(blockType); - block.getInput(inputName).connection.setShadowDom( - Blockly.Xml.textToDom( - '')); - return block; - }; - - this.createBlockWithShadowAndChild = function(blockType, inputName) { - const block = this.workspace.newBlock(blockType); - const childBlock = this.workspace.newBlock(blockType); - block.getInput(inputName).connection.connect( - childBlock.outputConnection || childBlock.previousConnection); - block.getInput(inputName).connection.setShadowDom( - Blockly.Xml.textToDom( - '')); - return block; - }; - - this.assertChild = function(blockType, inputName) { - const block = this.createBlockWithChild(blockType, inputName); - const jso = Blockly.serialization.blocks.save(block); - this.assertInput( - jso, inputName, {'block': {'type': blockType, 'id': 'id2'}}); - }; - - this.assertShadow = function(blockType, inputName) { - const block = this.createBlockWithShadow(blockType, inputName); - const jso = Blockly.serialization.blocks.save(block); - this.assertInput( - jso, inputName, {'shadow': {'type': blockType, 'id': 'test'}}); - }; - - this.assertOverwrittenShadow = function(blockType, inputName) { - const block = - this.createBlockWithShadowAndChild(blockType, inputName); - const jso = Blockly.serialization.blocks.save(block); - this.assertInput( - jso, - inputName, - { - 'block': { - 'type': blockType, - 'id': 'id2', - }, - 'shadow': { - 'type': blockType, - 'id': 'test', - }, - }); - }; - - this.assertNoChild = function(blockType, inputName) { - const block = this.createBlockWithChild(blockType, inputName); - const jso = - Blockly.serialization.blocks.save(block, {addInputBlocks: false}); - chai.assert.isUndefined(jso['inputs']); - }; - - this.assertNoShadow = function(blockType, inputName) { - const block = this.createBlockWithShadow(blockType, inputName); - const jso = - Blockly.serialization.blocks.save(block, {addInputBlocks: false}); - chai.assert.isUndefined(jso['inputs']); - }; - - this.assertNoOverwrittenShadow = function(blockType, inputName) { - const block = - this.createBlockWithShadowAndChild(blockType, inputName); - const jso = - Blockly.serialization.blocks.save(block, {addInputBlocks: false}); - chai.assert.isUndefined(jso['inputs']); - }; - }); - - suite('Editing shadow value', function() { - test('Not overwritten', function() { - const block = this.workspace.newBlock('text_print'); - block.getInput('TEXT').connection.setShadowState({ - 'type': 'text', - 'id': 'id', - }); - block.getInputTargetBlock('TEXT').setFieldValue('new value', 'TEXT'); - const jso = Blockly.serialization.blocks.save(block); - this.assertInput( - jso, - 'TEXT', - { - 'shadow': { - 'type': 'text', - 'id': 'id', - 'fields': { - 'TEXT': 'new value', - }, - }, - }); - }); - - test('Overwritten', function() { - const block = this.workspace.newBlock('text_print'); - block.getInput('TEXT').connection.setShadowState({ - 'type': 'text', - 'id': 'id', - }); - block.getInputTargetBlock('TEXT').setFieldValue('new value', 'TEXT'); - const childBlock = this.workspace.newBlock('text'); - block.getInput('TEXT').connection.connect( - childBlock.outputConnection); - const jso = Blockly.serialization.blocks.save(block); - this.assertInput( - jso, - 'TEXT', - { - 'shadow': { - 'type': 'text', - 'id': 'id', - 'fields': { - 'TEXT': 'new value', - }, - }, - 'block': { - 'type': 'text', - 'id': 'id3', - 'fields': { - 'TEXT': '', - }, - }, - }); - }); - }); - - suite('Value', function() { - suite('With serialization', function() { - test('Child', function() { - this.assertChild('row_block', 'INPUT'); - }); - - test('Shadow', function() { - this.assertShadow('row_block', 'INPUT'); - }); - - test('Overwritten shadow', function() { - this.assertOverwrittenShadow('row_block', 'INPUT'); - }); - }); - - suite('Without serialization', function() { - test('Child', function() { - this.assertNoChild('row_block', 'INPUT'); - }); - - test('Shadow', function() { - this.assertNoShadow('row_block', 'INPUT'); - }); - - test('Overwritten shadow', function() { - this.assertNoOverwrittenShadow('row_block', 'INPUT'); - }); - }); - }); - - suite('Statement', function() { - suite('With serialization', function() { - test('Child', function() { - this.assertChild('statement_block', 'NAME'); - }); - - test('Shadow', function() { - this.assertShadow('statement_block', 'NAME'); - }); - - test('Overwritten shadow', function() { - this.assertOverwrittenShadow('statement_block', 'NAME'); - }); - - test('Child with next blocks', function() { - const block = this.workspace.newBlock('statement_block'); - const childBlock = this.workspace.newBlock('stack_block'); - const grandChildBlock = this.workspace.newBlock('stack_block'); - block.getInput('NAME').connection - .connect(childBlock.previousConnection); - childBlock.nextConnection - .connect(grandChildBlock.previousConnection); - const jso = Blockly.serialization.blocks.save(block); - this.assertInput( - jso, - 'NAME', - { - 'block': { - 'type': 'stack_block', - 'id': 'id2', - 'next': { - 'block': { - 'type': 'stack_block', - 'id': 'id4', - }, - }, - }, - } - ); - }); - }); - - suite('Without serialization', function() { - test('Child', function() { - this.assertNoChild('statement_block', 'NAME'); - }); - - test('Shadow', function() { - this.assertNoShadow('statement_block', 'NAME'); - }); - - test('Overwritten shadow', function() { - this.assertNoOverwrittenShadow('statement_block', 'NAME'); - }); - }); - }); - - suite('Next', function() { - setup(function() { - this.createNextWithChild = function() { - const block = this.workspace.newBlock('stack_block'); - const childBlock = this.workspace.newBlock('stack_block'); - block.nextConnection.connect(childBlock.previousConnection); - return block; - }; - - this.createNextWithShadow = function() { - const block = this.workspace.newBlock('stack_block'); - block.nextConnection.setShadowDom( - Blockly.Xml.textToDom( - '')); - return block; - }; - - this.createNextWithShadowAndChild = function() { - const block = this.workspace.newBlock('stack_block'); - const childBlock = this.workspace.newBlock('stack_block'); - block.nextConnection.connect(childBlock.previousConnection); - block.nextConnection.setShadowDom( - Blockly.Xml.textToDom( - '')); - return block; - }; - }); - - suite('With serialization', function() { - test('Child', function() { - const block = this.createNextWithChild(); - const jso = - Blockly.serialization.blocks.save(block); - chai.assert.deepInclude( - jso['next'], {'block': {'type': 'stack_block', 'id': 'id2'}}); - }); - - test('Shadow', function() { - const block = this.createNextWithShadow(); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepInclude( - jso['next'], {'shadow': {'type': 'stack_block', 'id': 'test'}}); - }); - - test('Overwritten shadow', function() { - const block = this.createNextWithShadowAndChild(); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepInclude( - jso['next'], - { - 'block': { - 'type': 'stack_block', - 'id': 'id2', - }, - 'shadow': { - 'type': 'stack_block', - 'id': 'test', - }, - }); - }); - - test('Next block with inputs', function() { - const block = this.workspace.newBlock('stack_block'); - const childBlock = this.workspace.newBlock('statement_block'); - const grandChildBlock = this.workspace.newBlock('stack_block'); - block.nextConnection.connect(childBlock.previousConnection); - childBlock.getInput('NAME').connection - .connect(grandChildBlock.previousConnection); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepInclude( - jso['next'], - { - 'block': { - 'type': 'statement_block', - 'id': 'id2', - 'inputs': { - 'NAME': { - 'block': { - 'type': 'stack_block', - 'id': 'id4', - }, - }, - }, - }, - } - ); - }); - }); - - suite('Without serialization', function() { - test('Child', function() { - const block = this.createNextWithChild(); - const jso = Blockly.serialization.blocks.save( - block, {addNextBlocks: false}); - chai.assert.isUndefined(jso['next']); - }); - - test('Shadow', function() { - const block = this.createNextWithShadow(); - const jso = Blockly.serialization.blocks.save( - block, {addNextBlocks: false}); - chai.assert.isUndefined(jso['next']); - }); - - test('Overwritten shadow', function() { - const block = this.createNextWithShadowAndChild(); - const jso = Blockly.serialization.blocks.save( - block, {addNextBlocks: false}); - chai.assert.isUndefined(jso['next']); - }); - }); - }); - }); - - suite('Do full serialization', function() { - suite('True', function() { - test('Single block', function() { - const block = this.workspace.newBlock('variables_get'); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual( - jso['fields']['VAR'], {'id': 'id2', 'name': 'item', 'type': ''}); - }); - - test('Input block', function() { - const block = this.workspace.newBlock('row_block'); - const childBlock = this.workspace.newBlock('variables_get'); - block.getInput('INPUT').connection.connect( - childBlock.outputConnection); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual( - jso['inputs']['INPUT']['block']['fields']['VAR'], - {'id': 'id4', 'name': 'item', 'type': ''}); - }); - - test('Next block', function() { - const block = this.workspace.newBlock('stack_block'); - const childBlock = this.workspace.newBlock('variables_set'); - block.nextConnection.connect(childBlock.previousConnection); - const jso = Blockly.serialization.blocks.save(block); - chai.assert.deepEqual( - jso['next']['block']['fields']['VAR'], - {'id': 'id4', 'name': 'item', 'type': ''}); - }); - }); - - suite('False', function() { - test('Single block', function() { - const block = this.workspace.newBlock('variables_get'); - const jso = Blockly.serialization.blocks.save( - block, {doFullSerialization: false}); - chai.assert.deepEqual(jso['fields']['VAR'], {'id': 'id2'}); - chai.assert.isUndefined(jso['fields']['VAR']['name']); - chai.assert.isUndefined(jso['fields']['VAR']['type']); - }); - - test('Input block', function() { - const block = this.workspace.newBlock('row_block'); - const childBlock = this.workspace.newBlock('variables_get'); - block.getInput('INPUT').connection.connect( - childBlock.outputConnection); - const jso = Blockly.serialization.blocks.save( - block, {doFullSerialization: false}); - chai.assert.deepEqual( - jso['inputs']['INPUT']['block']['fields']['VAR'], {'id': 'id4'}); - chai.assert.isUndefined( - jso['inputs']['INPUT']['block']['fields']['VAR']['name']); - chai.assert.isUndefined( - jso['inputs']['INPUT']['block']['fields']['VAR']['type']); - }); - - test('Next block', function() { - const block = this.workspace.newBlock('stack_block'); - const childBlock = this.workspace.newBlock('variables_set'); - block.nextConnection.connect(childBlock.previousConnection); - const jso = Blockly.serialization.blocks.save( - block, {doFullSerialization: false}); - chai.assert.deepEqual( - jso['next']['block']['fields']['VAR'], {'id': 'id4'}); - chai.assert.isUndefined( - jso['next']['block']['fields']['VAR']['name']); - chai.assert.isUndefined( - jso['next']['block']['fields']['VAR']['type']); - }); - }); - }); - }); - - suite('Variables', function() { - test('Without type', function() { - this.workspace.createVariable('testVar', '', 'testId'); - const jso = Blockly.serialization.workspaces.save(this.workspace); - const variable = jso['variables'][0]; - assertProperty(variable, 'name', 'testVar'); - assertProperty(variable, 'id', 'testId'); - assertNoProperty(variable, 'type'); - }); - - test('With type', function() { - this.workspace.createVariable('testVar', 'testType', 'testId'); - const jso = Blockly.serialization.workspaces.save(this.workspace); - const variable = jso['variables'][0]; - assertProperty(variable, 'name', 'testVar'); - assertProperty(variable, 'id', 'testId'); - assertProperty(variable, 'type', 'testType'); - }); - }); -}); +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.jsoSerialization'); + +const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {defineRowBlock, defineStackBlock, defineStatementBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); + + +suite('JSO Serialization', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + + defineStackBlock(); + defineRowBlock(); + defineStatementBlock(); + + createGenUidStubWithReturns(new Array(10).fill().map((_, i) => 'id' + i)); + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + sharedTestTeardown.call(this); + }); + + function assertProperty(obj, property, value) { + chai.assert.deepEqual(obj[property], value); + } + + function assertNoProperty(obj, property) { + assertProperty(obj, property, undefined); + } + + + suite('Blocks', function() { + test('Null on insertionMarkers', function() { + const block = this.workspace.newBlock('row_block'); + block.setInsertionMarker(true); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.isNull(jso); + }); + + test('Basic', function() { + const block = this.workspace.newBlock('row_block'); + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'type', 'row_block'); + assertProperty(jso, 'id', 'id0'); + }); + + suite('Attributes', function() { + suite('Collapsed', function() { + test('True', function() { + const block = this.workspace.newBlock('row_block'); + block.setCollapsed(true); + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'collapsed', true); + }); + + test('False', function() { + const block = this.workspace.newBlock('row_block'); + block.setCollapsed(false); + const jso = Blockly.serialization.blocks.save(block); + assertNoProperty(jso, 'collapsed'); + }); + }); + + suite('Enabled', function() { + test('False', function() { + const block = this.workspace.newBlock('row_block'); + block.setEnabled(false); + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'enabled', false); + }); + + test('True', function() { + const block = this.workspace.newBlock('row_block'); + block.setEnabled(true); + const jso = Blockly.serialization.blocks.save(block); + assertNoProperty(jso, 'enabled'); + }); + }); + + suite('Inline', function() { + test('True', function() { + const block = this.workspace.newBlock('statement_block'); + block.setInputsInline(true); + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'inline', true); + }); + + test('False', function() { + const block = this.workspace.newBlock('statement_block'); + block.setInputsInline(false); + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'inline', false); + }); + + test('undefined', function() { + const block = this.workspace.newBlock('statement_block'); + const jso = Blockly.serialization.blocks.save(block); + assertNoProperty(jso, 'inline'); + }); + + test('True, matching default', function() { + const block = this.workspace.newBlock('statement_block'); + block.setInputsInline(true); + block.inputsInlineDefault = true; + const jso = Blockly.serialization.blocks.save(block); + assertNoProperty(jso, 'inline'); + }); + + test('False, matching default', function() { + const block = this.workspace.newBlock('statement_block'); + block.setInputsInline(false); + block.inputsInlineDefault = false; + const jso = Blockly.serialization.blocks.save(block); + assertNoProperty(jso, 'inline'); + }); + }); + + suite('Data', function() { + test('No data', function() { + const block = this.workspace.newBlock('row_block'); + const jso = Blockly.serialization.blocks.save(block); + assertNoProperty(jso, 'data'); + }); + + test('With data', function() { + const block = this.workspace.newBlock('row_block'); + block.data = 'some data'; + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'data', 'some data'); + }); + }); + }); + + suite('Coords', function() { + test('No coordinates', function() { + const block = this.workspace.newBlock('row_block'); + const jso = Blockly.serialization.blocks.save(block); + assertNoProperty(jso, 'x'); + assertNoProperty(jso, 'y'); + }); + + test('Simple', function() { + const block = this.workspace.newBlock('row_block'); + block.moveBy(42, 42); + const jso = + Blockly.serialization.blocks.save(block, {addCoordinates: true}); + assertProperty(jso, 'x', 42); + assertProperty(jso, 'y', 42); + }); + + test('Negative', function() { + const block = this.workspace.newBlock('row_block'); + block.moveBy(-42, -42); + const jso = + Blockly.serialization.blocks.save(block, {addCoordinates: true}); + assertProperty(jso, 'x', -42); + assertProperty(jso, 'y', -42); + }); + + test('Zero', function() { + const block = this.workspace.newBlock('row_block'); + const jso = + Blockly.serialization.blocks.save(block, {addCoordinates: true}); + assertProperty(jso, 'x', 0); + assertProperty(jso, 'y', 0); + }); + }); + + // Mutators. + suite('Extra state', function() { + test('Simple value', function() { + const block = this.workspace.newBlock('row_block'); + block.saveExtraState = function() { + return 'some extra state'; + }; + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'extraState', 'some extra state'); + }); + + test('Object', function() { + const block = this.workspace.newBlock('row_block'); + block.saveExtraState = function() { + return { + 'extra1': 'state1', + 'extra2': 42, + 'extra3': true, + }; + }; + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'extraState', { + 'extra1': 'state1', + 'extra2': 42, + 'extra3': true, + }); + }); + + test('Array', function() { + const block = this.workspace.newBlock('row_block'); + block.saveExtraState = function() { + return ['state1', 42, true]; + }; + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'extraState', ['state1', 42, true]); + }); + + test('Xml hooks', function() { + const block = this.workspace.newBlock('row_block'); + block.mutationToDom = function() { + const container = Blockly.utils.xml.createElement('mutation'); + container.setAttribute('value', 'some value'); + return container; + }; + const jso = Blockly.serialization.blocks.save(block); + assertProperty( + jso, 'extraState', ''); + }); + }); + + suite('Icons', function() { + suite('Comment', function() { + test('Basic', function() { + const block = this.workspace.newBlock('row_block'); + block.setCommentText('test'); + const jso = Blockly.serialization.blocks.save(block); + assertProperty( + jso, + 'icons', + { + 'comment': { + 'text': 'test', + 'pinned': false, + 'height': 80, + 'width': 160, + }, + }, + ); + }); + + test('Pinned', function() { + const block = this.workspace.newBlock('row_block'); + block.setCommentText('test'); + block.commentModel.pinned = true; + const jso = Blockly.serialization.blocks.save(block); + assertProperty( + jso, + 'icons', + { + 'comment': { + 'text': 'test', + 'pinned': true, + 'height': 80, + 'width': 160, + }, + }, + ); + }); + + test('Size', function() { + const block = this.workspace.newBlock('row_block'); + block.setCommentText('test'); + block.commentModel.size.height = 40; + block.commentModel.size.width = 320; + const jso = Blockly.serialization.blocks.save(block); + assertProperty( + jso, + 'icons', + { + 'comment': { + 'text': 'test', + 'pinned': false, + 'height': 40, + 'width': 320, + }, + }, + ); + }); + }); + }); + + suite('Fields', function() { + class StringStateField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + + saveState() { + return 'some state'; + } + } + + class ObjectStateField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + + saveState() { + return { + 'prop1': 'state1', + 'prop2': 42, + 'prop3': true, + }; + } + } + + class ArrayStateField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + + saveState() { + return ['state1', 42, true]; + } + } + + class XmlStateField extends Blockly.Field { + constructor(value, validator = undefined, config = undefined) { + super(value, validator, config); + this.SERIALIZABLE = true; + } + } + + test('Simple value', function() { + const block = this.workspace.newBlock('row_block'); + block.getInput('INPUT').appendField(new StringStateField(''), 'FIELD'); + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'fields', {'FIELD': 'some state'}); + }); + + test('Object', function() { + const block = this.workspace.newBlock('row_block'); + block.getInput('INPUT').appendField(new ObjectStateField(''), 'FIELD'); + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'fields', {'FIELD': { + 'prop1': 'state1', + 'prop2': 42, + 'prop3': true, + }}); + }); + + test('Array', function() { + const block = this.workspace.newBlock('row_block'); + block.getInput('INPUT').appendField(new ArrayStateField(''), 'FIELD'); + const jso = Blockly.serialization.blocks.save(block); + assertProperty(jso, 'fields', {'FIELD': ['state1', 42, true]}); + }); + }); + + suite('Connected blocks', function() { + setup(function() { + this.assertInput = function(jso, name, value) { + chai.assert.deepInclude(jso['inputs'][name], value); + }; + + this.createBlockWithChild = function(blockType, inputName) { + const block = this.workspace.newBlock(blockType); + const childBlock = this.workspace.newBlock(blockType); + block.getInput(inputName).connection.connect( + childBlock.outputConnection || childBlock.previousConnection); + return block; + }; + + this.createBlockWithShadow = function(blockType, inputName) { + const block = this.workspace.newBlock(blockType); + block.getInput(inputName).connection.setShadowDom( + Blockly.Xml.textToDom( + '')); + return block; + }; + + this.createBlockWithShadowAndChild = function(blockType, inputName) { + const block = this.workspace.newBlock(blockType); + const childBlock = this.workspace.newBlock(blockType); + block.getInput(inputName).connection.connect( + childBlock.outputConnection || childBlock.previousConnection); + block.getInput(inputName).connection.setShadowDom( + Blockly.Xml.textToDom( + '')); + return block; + }; + + this.assertChild = function(blockType, inputName) { + const block = this.createBlockWithChild(blockType, inputName); + const jso = Blockly.serialization.blocks.save(block); + this.assertInput( + jso, inputName, {'block': {'type': blockType, 'id': 'id2'}}); + }; + + this.assertShadow = function(blockType, inputName) { + const block = this.createBlockWithShadow(blockType, inputName); + const jso = Blockly.serialization.blocks.save(block); + this.assertInput( + jso, inputName, {'shadow': {'type': blockType, 'id': 'test'}}); + }; + + this.assertOverwrittenShadow = function(blockType, inputName) { + const block = + this.createBlockWithShadowAndChild(blockType, inputName); + const jso = Blockly.serialization.blocks.save(block); + this.assertInput( + jso, + inputName, + { + 'block': { + 'type': blockType, + 'id': 'id2', + }, + 'shadow': { + 'type': blockType, + 'id': 'test', + }, + }); + }; + + this.assertNoChild = function(blockType, inputName) { + const block = this.createBlockWithChild(blockType, inputName); + const jso = + Blockly.serialization.blocks.save(block, {addInputBlocks: false}); + chai.assert.isUndefined(jso['inputs']); + }; + + this.assertNoShadow = function(blockType, inputName) { + const block = this.createBlockWithShadow(blockType, inputName); + const jso = + Blockly.serialization.blocks.save(block, {addInputBlocks: false}); + chai.assert.isUndefined(jso['inputs']); + }; + + this.assertNoOverwrittenShadow = function(blockType, inputName) { + const block = + this.createBlockWithShadowAndChild(blockType, inputName); + const jso = + Blockly.serialization.blocks.save(block, {addInputBlocks: false}); + chai.assert.isUndefined(jso['inputs']); + }; + }); + + suite('Editing shadow value', function() { + test('Not overwritten', function() { + const block = this.workspace.newBlock('text_print'); + block.getInput('TEXT').connection.setShadowState({ + 'type': 'text', + 'id': 'id', + }); + block.getInputTargetBlock('TEXT').setFieldValue('new value', 'TEXT'); + const jso = Blockly.serialization.blocks.save(block); + this.assertInput( + jso, + 'TEXT', + { + 'shadow': { + 'type': 'text', + 'id': 'id', + 'fields': { + 'TEXT': 'new value', + }, + }, + }); + }); + + test('Overwritten', function() { + const block = this.workspace.newBlock('text_print'); + block.getInput('TEXT').connection.setShadowState({ + 'type': 'text', + 'id': 'id', + }); + block.getInputTargetBlock('TEXT').setFieldValue('new value', 'TEXT'); + const childBlock = this.workspace.newBlock('text'); + block.getInput('TEXT').connection.connect( + childBlock.outputConnection); + const jso = Blockly.serialization.blocks.save(block); + this.assertInput( + jso, + 'TEXT', + { + 'shadow': { + 'type': 'text', + 'id': 'id', + 'fields': { + 'TEXT': 'new value', + }, + }, + 'block': { + 'type': 'text', + 'id': 'id3', + 'fields': { + 'TEXT': '', + }, + }, + }); + }); + }); + + suite('Value', function() { + suite('With serialization', function() { + test('Child', function() { + this.assertChild('row_block', 'INPUT'); + }); + + test('Shadow', function() { + this.assertShadow('row_block', 'INPUT'); + }); + + test('Overwritten shadow', function() { + this.assertOverwrittenShadow('row_block', 'INPUT'); + }); + }); + + suite('Without serialization', function() { + test('Child', function() { + this.assertNoChild('row_block', 'INPUT'); + }); + + test('Shadow', function() { + this.assertNoShadow('row_block', 'INPUT'); + }); + + test('Overwritten shadow', function() { + this.assertNoOverwrittenShadow('row_block', 'INPUT'); + }); + }); + }); + + suite('Statement', function() { + suite('With serialization', function() { + test('Child', function() { + this.assertChild('statement_block', 'NAME'); + }); + + test('Shadow', function() { + this.assertShadow('statement_block', 'NAME'); + }); + + test('Overwritten shadow', function() { + this.assertOverwrittenShadow('statement_block', 'NAME'); + }); + + test('Child with next blocks', function() { + const block = this.workspace.newBlock('statement_block'); + const childBlock = this.workspace.newBlock('stack_block'); + const grandChildBlock = this.workspace.newBlock('stack_block'); + block.getInput('NAME').connection + .connect(childBlock.previousConnection); + childBlock.nextConnection + .connect(grandChildBlock.previousConnection); + const jso = Blockly.serialization.blocks.save(block); + this.assertInput( + jso, + 'NAME', + { + 'block': { + 'type': 'stack_block', + 'id': 'id2', + 'next': { + 'block': { + 'type': 'stack_block', + 'id': 'id4', + }, + }, + }, + } + ); + }); + }); + + suite('Without serialization', function() { + test('Child', function() { + this.assertNoChild('statement_block', 'NAME'); + }); + + test('Shadow', function() { + this.assertNoShadow('statement_block', 'NAME'); + }); + + test('Overwritten shadow', function() { + this.assertNoOverwrittenShadow('statement_block', 'NAME'); + }); + }); + }); + + suite('Next', function() { + setup(function() { + this.createNextWithChild = function() { + const block = this.workspace.newBlock('stack_block'); + const childBlock = this.workspace.newBlock('stack_block'); + block.nextConnection.connect(childBlock.previousConnection); + return block; + }; + + this.createNextWithShadow = function() { + const block = this.workspace.newBlock('stack_block'); + block.nextConnection.setShadowDom( + Blockly.Xml.textToDom( + '')); + return block; + }; + + this.createNextWithShadowAndChild = function() { + const block = this.workspace.newBlock('stack_block'); + const childBlock = this.workspace.newBlock('stack_block'); + block.nextConnection.connect(childBlock.previousConnection); + block.nextConnection.setShadowDom( + Blockly.Xml.textToDom( + '')); + return block; + }; + }); + + suite('With serialization', function() { + test('Child', function() { + const block = this.createNextWithChild(); + const jso = + Blockly.serialization.blocks.save(block); + chai.assert.deepInclude( + jso['next'], {'block': {'type': 'stack_block', 'id': 'id2'}}); + }); + + test('Shadow', function() { + const block = this.createNextWithShadow(); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepInclude( + jso['next'], {'shadow': {'type': 'stack_block', 'id': 'test'}}); + }); + + test('Overwritten shadow', function() { + const block = this.createNextWithShadowAndChild(); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepInclude( + jso['next'], + { + 'block': { + 'type': 'stack_block', + 'id': 'id2', + }, + 'shadow': { + 'type': 'stack_block', + 'id': 'test', + }, + }); + }); + + test('Next block with inputs', function() { + const block = this.workspace.newBlock('stack_block'); + const childBlock = this.workspace.newBlock('statement_block'); + const grandChildBlock = this.workspace.newBlock('stack_block'); + block.nextConnection.connect(childBlock.previousConnection); + childBlock.getInput('NAME').connection + .connect(grandChildBlock.previousConnection); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepInclude( + jso['next'], + { + 'block': { + 'type': 'statement_block', + 'id': 'id2', + 'inputs': { + 'NAME': { + 'block': { + 'type': 'stack_block', + 'id': 'id4', + }, + }, + }, + }, + } + ); + }); + }); + + suite('Without serialization', function() { + test('Child', function() { + const block = this.createNextWithChild(); + const jso = Blockly.serialization.blocks.save( + block, {addNextBlocks: false}); + chai.assert.isUndefined(jso['next']); + }); + + test('Shadow', function() { + const block = this.createNextWithShadow(); + const jso = Blockly.serialization.blocks.save( + block, {addNextBlocks: false}); + chai.assert.isUndefined(jso['next']); + }); + + test('Overwritten shadow', function() { + const block = this.createNextWithShadowAndChild(); + const jso = Blockly.serialization.blocks.save( + block, {addNextBlocks: false}); + chai.assert.isUndefined(jso['next']); + }); + }); + }); + }); + + suite('Do full serialization', function() { + suite('True', function() { + test('Single block', function() { + const block = this.workspace.newBlock('variables_get'); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual( + jso['fields']['VAR'], {'id': 'id2', 'name': 'item', 'type': ''}); + }); + + test('Input block', function() { + const block = this.workspace.newBlock('row_block'); + const childBlock = this.workspace.newBlock('variables_get'); + block.getInput('INPUT').connection.connect( + childBlock.outputConnection); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual( + jso['inputs']['INPUT']['block']['fields']['VAR'], + {'id': 'id4', 'name': 'item', 'type': ''}); + }); + + test('Next block', function() { + const block = this.workspace.newBlock('stack_block'); + const childBlock = this.workspace.newBlock('variables_set'); + block.nextConnection.connect(childBlock.previousConnection); + const jso = Blockly.serialization.blocks.save(block); + chai.assert.deepEqual( + jso['next']['block']['fields']['VAR'], + {'id': 'id4', 'name': 'item', 'type': ''}); + }); + }); + + suite('False', function() { + test('Single block', function() { + const block = this.workspace.newBlock('variables_get'); + const jso = Blockly.serialization.blocks.save( + block, {doFullSerialization: false}); + chai.assert.deepEqual(jso['fields']['VAR'], {'id': 'id2'}); + chai.assert.isUndefined(jso['fields']['VAR']['name']); + chai.assert.isUndefined(jso['fields']['VAR']['type']); + }); + + test('Input block', function() { + const block = this.workspace.newBlock('row_block'); + const childBlock = this.workspace.newBlock('variables_get'); + block.getInput('INPUT').connection.connect( + childBlock.outputConnection); + const jso = Blockly.serialization.blocks.save( + block, {doFullSerialization: false}); + chai.assert.deepEqual( + jso['inputs']['INPUT']['block']['fields']['VAR'], {'id': 'id4'}); + chai.assert.isUndefined( + jso['inputs']['INPUT']['block']['fields']['VAR']['name']); + chai.assert.isUndefined( + jso['inputs']['INPUT']['block']['fields']['VAR']['type']); + }); + + test('Next block', function() { + const block = this.workspace.newBlock('stack_block'); + const childBlock = this.workspace.newBlock('variables_set'); + block.nextConnection.connect(childBlock.previousConnection); + const jso = Blockly.serialization.blocks.save( + block, {doFullSerialization: false}); + chai.assert.deepEqual( + jso['next']['block']['fields']['VAR'], {'id': 'id4'}); + chai.assert.isUndefined( + jso['next']['block']['fields']['VAR']['name']); + chai.assert.isUndefined( + jso['next']['block']['fields']['VAR']['type']); + }); + }); + }); + }); + + suite('Variables', function() { + test('Without type', function() { + this.workspace.createVariable('testVar', '', 'testId'); + const jso = Blockly.serialization.workspaces.save(this.workspace); + const variable = jso['variables'][0]; + assertProperty(variable, 'name', 'testVar'); + assertProperty(variable, 'id', 'testId'); + assertNoProperty(variable, 'type'); + }); + + test('With type', function() { + this.workspace.createVariable('testVar', 'testType', 'testId'); + const jso = Blockly.serialization.workspaces.save(this.workspace); + const variable = jso['variables'][0]; + assertProperty(variable, 'name', 'testVar'); + assertProperty(variable, 'id', 'testId'); + assertProperty(variable, 'type', 'testType'); + }); + }); +}); diff --git a/tests/mocha/json_test.js b/tests/mocha/json_test.js index 3e20926cb66..a085381ab54 100644 --- a/tests/mocha/json_test.js +++ b/tests/mocha/json_test.js @@ -1,287 +1,287 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.json'); - -const {addMessageToCleanup, sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {assertNoWarnings, assertWarnings} = goog.require('Blockly.test.helpers.warnings'); - - -suite('JSON Block Definitions', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace_ = new Blockly.Workspace(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('defineBlocksWithJsonArray', function() { - test('Basic block', function() { - /** Ensure a block can be instantiated from a JSON definition. */ - const BLOCK_TYPE = 'test_json_minimal'; - let block; - assertNoWarnings(() => { - Blockly.defineBlocksWithJsonArray([{ - "type": BLOCK_TYPE, - }]); - block = new Blockly.Block(this.workspace_, BLOCK_TYPE); - }); - - chai.assert.isNotNull(block); - chai.assert.equal(BLOCK_TYPE, block.type); - }); - - test('Null or undefined type id', function() { - const BLOCK_TYPE1 = 'test_json_before_bad_blocks'; - const BLOCK_TYPE2 = 'test_json_after_bad_blocks'; - - chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE1]); - chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE2]); - const blockTypeCount = Object.keys(Blockly.Blocks).length; - - assertWarnings(() => { - Blockly.defineBlocksWithJsonArray([ - {"type": BLOCK_TYPE1}, - {"type": undefined}, - {"type": null}, - {"type": BLOCK_TYPE2}]); - }, [/missing a type attribute/, /missing a type attribute/]); - chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE1], - 'Block before bad blocks should be defined.'); - chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE2], - 'Block after bad blocks should be defined.'); - chai.assert.equal(Object.keys(Blockly.Blocks).length, blockTypeCount + 2); - }); - - test('Null item', function() { - const BLOCK_TYPE1 = 'test_block_before_null'; - const BLOCK_TYPE2 = 'test_block_after_null'; - - chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE1]); - chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE2]); - const blockTypeCount = Object.keys(Blockly.Blocks).length; - - assertWarnings(() => { - Blockly.defineBlocksWithJsonArray([ - { - "type": BLOCK_TYPE1, - "message0": 'before', - }, - null, - { - "type": BLOCK_TYPE2, - "message0": 'after', - }]); - }, /is null/); - chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE1], - 'Block before null in array should be defined.'); - chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE2], - 'Block after null in array should be defined.'); - chai.assert.equal(Object.keys(Blockly.Blocks).length, blockTypeCount + 2); - }); - - test('Undefined item', function() { - const BLOCK_TYPE1 = 'test_block_before_undefined'; - const BLOCK_TYPE2 = 'test_block_after_undefined'; - - chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE1]); - chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE2]); - const blockTypeCount = Object.keys(Blockly.Blocks).length; - assertWarnings(() => { - Blockly.defineBlocksWithJsonArray([ - { - "type": BLOCK_TYPE1, - "message0": 'before', - }, - undefined, - { - "type": BLOCK_TYPE2, - "message0": 'after', - }]); - }, /is undefined/); - chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE1], - 'Block before undefined in array should be defined.'); - chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE2], - 'Block after undefined in array should be defined.'); - chai.assert.equal(Object.keys(Blockly.Blocks).length, blockTypeCount + 2); - }); - - test('message0 creates input', function() { - const BLOCK_TYPE = 'test_json_message0'; - const MESSAGE0 = 'message0'; - Blockly.defineBlocksWithJsonArray([{ - "type": BLOCK_TYPE, - "message0": MESSAGE0, - }]); - - const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); - chai.assert.equal(block.inputList.length, 1); - chai.assert.equal(block.inputList[0].fieldRow.length, 1); - const textField = block.inputList[0].fieldRow[0]; - chai.assert.equal(Blockly.FieldLabel, textField.constructor); - chai.assert.equal(MESSAGE0, textField.getText()); - }); - - test('message1 and message0 creates two inputs', function() { - /** Ensure message1 creates a new input. */ - const BLOCK_TYPE = 'test_json_message1'; - const MESSAGE0 = 'message0'; - const MESSAGE1 = 'message1'; - Blockly.defineBlocksWithJsonArray([{ - "type": BLOCK_TYPE, - "message0": MESSAGE0, - "message1": MESSAGE1, - }]); - - const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); - chai.assert.equal(block.inputList.length, 2); - - chai.assert.equal(block.inputList[0].fieldRow.length, 1); - const firstTextField = block.inputList[0].fieldRow[0]; - chai.assert.equal(Blockly.FieldLabel, firstTextField.constructor); - chai.assert.equal(MESSAGE0, firstTextField.getText()); - - chai.assert.equal(block.inputList[1].fieldRow.length, 1); - const secondTextField = block.inputList[1].fieldRow[0]; - chai.assert.equal(Blockly.FieldLabel, secondTextField.constructor); - chai.assert.equal(MESSAGE1, secondTextField.getText()); - }); - - test('Message string is dereferenced', function() { - const BLOCK_TYPE = 'test_json_message0_i18n'; - const MESSAGE0 = '%{BKY_MESSAGE}'; - const MESSAGE = 'message'; - - addMessageToCleanup(this.sharedCleanup, 'MESSAGE'); - Blockly.Msg['MESSAGE'] = MESSAGE; - Blockly.defineBlocksWithJsonArray([{ - "type": BLOCK_TYPE, - "message0": MESSAGE0, - }]); - - const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); - chai.assert.equal(block.inputList.length, 1); - chai.assert.equal(block.inputList[0].fieldRow.length, 1); - const textField = block.inputList[0].fieldRow[0]; - chai.assert.equal(Blockly.FieldLabel, textField.constructor); - chai.assert.equal(MESSAGE, textField.getText()); - }); - - test('Dropdown', function() { - const BLOCK_TYPE = 'test_json_dropdown'; - const FIELD_NAME = 'FIELD_NAME'; - const LABEL0 = 'LABEL0'; - const VALUE0 = 'VALUE0'; - const LABEL1 = 'LABEL1'; - const VALUE1 = 'VALUE1'; - Blockly.defineBlocksWithJsonArray([{ - "type": BLOCK_TYPE, - "message0": "%1", - "args0": [ - { - "type": "field_dropdown", - "name": FIELD_NAME, - "options": [ - [LABEL0, VALUE0], - [LABEL1, VALUE1], - ], - }, - ], - }]); - - const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); - chai.assert.equal(block.inputList.length, 1); - chai.assert.equal(block.inputList[0].fieldRow.length, 1); - const dropdown = block.inputList[0].fieldRow[0]; - chai.assert.equal(dropdown, block.getField(FIELD_NAME)); - chai.assert.equal(Blockly.FieldDropdown, dropdown.constructor); - chai.assert.equal(VALUE0, dropdown.getValue()); - - const options = dropdown.getOptions(); - chai.assert.equal(LABEL0, options[0][0]); - chai.assert.equal(VALUE0, options[0][1]); - chai.assert.equal(LABEL1, options[1][0]); - chai.assert.equal(VALUE1, options[1][1]); - }); - - - test('Dropdown with images', function() { - const BLOCK_TYPE = 'test_json_dropdown'; - const FIELD_NAME = 'FIELD_NAME'; - const IMAGE1_ALT_TEXT = 'Localized message.'; - addMessageToCleanup(this.sharedCleanup, 'ALT_TEXT'); - Blockly.Msg['ALT_TEXT'] = IMAGE1_ALT_TEXT; - const IMAGE0 = { - 'width': 12, - 'height': 34, - 'src': 'http://image0.src', - 'alt': 'IMAGE0 alt text', - }; - const VALUE0 = 'VALUE0'; - const IMAGE1 = { - 'width': 56, - 'height': 78, - 'src': 'http://image1.src', - 'alt': '%{BKY_ALT_TEXT}', - }; - const VALUE1 = 'VALUE1'; - const IMAGE2 = { - 'width': 90, - 'height': 123, - 'src': 'http://image2.src', - }; - const VALUE2 = 'VALUE2'; - - Blockly.defineBlocksWithJsonArray([{ - "type": BLOCK_TYPE, - "message0": "%1", - "args0": [ - { - "type": "field_dropdown", - "name": FIELD_NAME, - "options": [ - [IMAGE0, VALUE0], - [IMAGE1, VALUE1], - [IMAGE2, VALUE2], - ], - }, - ], - }]); - - const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); - chai.assert.equal(block.inputList.length, 1); - chai.assert.equal(block.inputList[0].fieldRow.length, 1); - const dropdown = block.inputList[0].fieldRow[0]; - chai.assert.equal(dropdown, block.getField(FIELD_NAME)); - chai.assert.equal(Blockly.FieldDropdown, dropdown.constructor); - chai.assert.equal(VALUE0, dropdown.getValue()); - - function assertImageEquals(actualImage, expectedImage) { - chai.assert.equal(actualImage.width, expectedImage.width); - chai.assert.equal(actualImage.height, expectedImage.height); - chai.assert.equal(actualImage.src, expectedImage.src); - } - - const options = dropdown.getOptions(); - const image0 = options[0][0]; - assertImageEquals(IMAGE0, image0); - chai.assert.equal(IMAGE0.alt, image0.alt); - chai.assert.equal(options[0][1], VALUE0); - - const image1 = options[1][0]; - assertImageEquals(IMAGE1, image1); - chai.assert.equal(IMAGE1.alt, IMAGE1_ALT_TEXT); // Via Msg reference - chai.assert.equal(VALUE1, options[1][1]); - - const image2 = options[2][0]; - assertImageEquals(IMAGE1, image1); - chai.assert.notExists(image2.alt); // No alt specified. - chai.assert.equal(VALUE2, options[2][1]); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.json'); + +const {addMessageToCleanup, sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {assertNoWarnings, assertWarnings} = goog.require('Blockly.test.helpers.warnings'); + + +suite('JSON Block Definitions', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace_ = new Blockly.Workspace(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('defineBlocksWithJsonArray', function() { + test('Basic block', function() { + /** Ensure a block can be instantiated from a JSON definition. */ + const BLOCK_TYPE = 'test_json_minimal'; + let block; + assertNoWarnings(() => { + Blockly.defineBlocksWithJsonArray([{ + "type": BLOCK_TYPE, + }]); + block = new Blockly.Block(this.workspace_, BLOCK_TYPE); + }); + + chai.assert.isNotNull(block); + chai.assert.equal(BLOCK_TYPE, block.type); + }); + + test('Null or undefined type id', function() { + const BLOCK_TYPE1 = 'test_json_before_bad_blocks'; + const BLOCK_TYPE2 = 'test_json_after_bad_blocks'; + + chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE1]); + chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE2]); + const blockTypeCount = Object.keys(Blockly.Blocks).length; + + assertWarnings(() => { + Blockly.defineBlocksWithJsonArray([ + {"type": BLOCK_TYPE1}, + {"type": undefined}, + {"type": null}, + {"type": BLOCK_TYPE2}]); + }, [/missing a type attribute/, /missing a type attribute/]); + chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE1], + 'Block before bad blocks should be defined.'); + chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE2], + 'Block after bad blocks should be defined.'); + chai.assert.equal(Object.keys(Blockly.Blocks).length, blockTypeCount + 2); + }); + + test('Null item', function() { + const BLOCK_TYPE1 = 'test_block_before_null'; + const BLOCK_TYPE2 = 'test_block_after_null'; + + chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE1]); + chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE2]); + const blockTypeCount = Object.keys(Blockly.Blocks).length; + + assertWarnings(() => { + Blockly.defineBlocksWithJsonArray([ + { + "type": BLOCK_TYPE1, + "message0": 'before', + }, + null, + { + "type": BLOCK_TYPE2, + "message0": 'after', + }]); + }, /is null/); + chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE1], + 'Block before null in array should be defined.'); + chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE2], + 'Block after null in array should be defined.'); + chai.assert.equal(Object.keys(Blockly.Blocks).length, blockTypeCount + 2); + }); + + test('Undefined item', function() { + const BLOCK_TYPE1 = 'test_block_before_undefined'; + const BLOCK_TYPE2 = 'test_block_after_undefined'; + + chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE1]); + chai.assert.isUndefined(Blockly.Blocks[BLOCK_TYPE2]); + const blockTypeCount = Object.keys(Blockly.Blocks).length; + assertWarnings(() => { + Blockly.defineBlocksWithJsonArray([ + { + "type": BLOCK_TYPE1, + "message0": 'before', + }, + undefined, + { + "type": BLOCK_TYPE2, + "message0": 'after', + }]); + }, /is undefined/); + chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE1], + 'Block before undefined in array should be defined.'); + chai.assert.isNotNull(Blockly.Blocks[BLOCK_TYPE2], + 'Block after undefined in array should be defined.'); + chai.assert.equal(Object.keys(Blockly.Blocks).length, blockTypeCount + 2); + }); + + test('message0 creates input', function() { + const BLOCK_TYPE = 'test_json_message0'; + const MESSAGE0 = 'message0'; + Blockly.defineBlocksWithJsonArray([{ + "type": BLOCK_TYPE, + "message0": MESSAGE0, + }]); + + const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); + chai.assert.equal(block.inputList.length, 1); + chai.assert.equal(block.inputList[0].fieldRow.length, 1); + const textField = block.inputList[0].fieldRow[0]; + chai.assert.equal(Blockly.FieldLabel, textField.constructor); + chai.assert.equal(MESSAGE0, textField.getText()); + }); + + test('message1 and message0 creates two inputs', function() { + /** Ensure message1 creates a new input. */ + const BLOCK_TYPE = 'test_json_message1'; + const MESSAGE0 = 'message0'; + const MESSAGE1 = 'message1'; + Blockly.defineBlocksWithJsonArray([{ + "type": BLOCK_TYPE, + "message0": MESSAGE0, + "message1": MESSAGE1, + }]); + + const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); + chai.assert.equal(block.inputList.length, 2); + + chai.assert.equal(block.inputList[0].fieldRow.length, 1); + const firstTextField = block.inputList[0].fieldRow[0]; + chai.assert.equal(Blockly.FieldLabel, firstTextField.constructor); + chai.assert.equal(MESSAGE0, firstTextField.getText()); + + chai.assert.equal(block.inputList[1].fieldRow.length, 1); + const secondTextField = block.inputList[1].fieldRow[0]; + chai.assert.equal(Blockly.FieldLabel, secondTextField.constructor); + chai.assert.equal(MESSAGE1, secondTextField.getText()); + }); + + test('Message string is dereferenced', function() { + const BLOCK_TYPE = 'test_json_message0_i18n'; + const MESSAGE0 = '%{BKY_MESSAGE}'; + const MESSAGE = 'message'; + + addMessageToCleanup(this.sharedCleanup, 'MESSAGE'); + Blockly.Msg['MESSAGE'] = MESSAGE; + Blockly.defineBlocksWithJsonArray([{ + "type": BLOCK_TYPE, + "message0": MESSAGE0, + }]); + + const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); + chai.assert.equal(block.inputList.length, 1); + chai.assert.equal(block.inputList[0].fieldRow.length, 1); + const textField = block.inputList[0].fieldRow[0]; + chai.assert.equal(Blockly.FieldLabel, textField.constructor); + chai.assert.equal(MESSAGE, textField.getText()); + }); + + test('Dropdown', function() { + const BLOCK_TYPE = 'test_json_dropdown'; + const FIELD_NAME = 'FIELD_NAME'; + const LABEL0 = 'LABEL0'; + const VALUE0 = 'VALUE0'; + const LABEL1 = 'LABEL1'; + const VALUE1 = 'VALUE1'; + Blockly.defineBlocksWithJsonArray([{ + "type": BLOCK_TYPE, + "message0": "%1", + "args0": [ + { + "type": "field_dropdown", + "name": FIELD_NAME, + "options": [ + [LABEL0, VALUE0], + [LABEL1, VALUE1], + ], + }, + ], + }]); + + const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); + chai.assert.equal(block.inputList.length, 1); + chai.assert.equal(block.inputList[0].fieldRow.length, 1); + const dropdown = block.inputList[0].fieldRow[0]; + chai.assert.equal(dropdown, block.getField(FIELD_NAME)); + chai.assert.equal(Blockly.FieldDropdown, dropdown.constructor); + chai.assert.equal(VALUE0, dropdown.getValue()); + + const options = dropdown.getOptions(); + chai.assert.equal(LABEL0, options[0][0]); + chai.assert.equal(VALUE0, options[0][1]); + chai.assert.equal(LABEL1, options[1][0]); + chai.assert.equal(VALUE1, options[1][1]); + }); + + + test('Dropdown with images', function() { + const BLOCK_TYPE = 'test_json_dropdown'; + const FIELD_NAME = 'FIELD_NAME'; + const IMAGE1_ALT_TEXT = 'Localized message.'; + addMessageToCleanup(this.sharedCleanup, 'ALT_TEXT'); + Blockly.Msg['ALT_TEXT'] = IMAGE1_ALT_TEXT; + const IMAGE0 = { + 'width': 12, + 'height': 34, + 'src': 'http://image0.src', + 'alt': 'IMAGE0 alt text', + }; + const VALUE0 = 'VALUE0'; + const IMAGE1 = { + 'width': 56, + 'height': 78, + 'src': 'http://image1.src', + 'alt': '%{BKY_ALT_TEXT}', + }; + const VALUE1 = 'VALUE1'; + const IMAGE2 = { + 'width': 90, + 'height': 123, + 'src': 'http://image2.src', + }; + const VALUE2 = 'VALUE2'; + + Blockly.defineBlocksWithJsonArray([{ + "type": BLOCK_TYPE, + "message0": "%1", + "args0": [ + { + "type": "field_dropdown", + "name": FIELD_NAME, + "options": [ + [IMAGE0, VALUE0], + [IMAGE1, VALUE1], + [IMAGE2, VALUE2], + ], + }, + ], + }]); + + const block = new Blockly.Block(this.workspace_, BLOCK_TYPE); + chai.assert.equal(block.inputList.length, 1); + chai.assert.equal(block.inputList[0].fieldRow.length, 1); + const dropdown = block.inputList[0].fieldRow[0]; + chai.assert.equal(dropdown, block.getField(FIELD_NAME)); + chai.assert.equal(Blockly.FieldDropdown, dropdown.constructor); + chai.assert.equal(VALUE0, dropdown.getValue()); + + function assertImageEquals(actualImage, expectedImage) { + chai.assert.equal(actualImage.width, expectedImage.width); + chai.assert.equal(actualImage.height, expectedImage.height); + chai.assert.equal(actualImage.src, expectedImage.src); + } + + const options = dropdown.getOptions(); + const image0 = options[0][0]; + assertImageEquals(IMAGE0, image0); + chai.assert.equal(IMAGE0.alt, image0.alt); + chai.assert.equal(options[0][1], VALUE0); + + const image1 = options[1][0]; + assertImageEquals(IMAGE1, image1); + chai.assert.equal(IMAGE1.alt, IMAGE1_ALT_TEXT); // Via Msg reference + chai.assert.equal(VALUE1, options[1][1]); + + const image2 = options[2][0]; + assertImageEquals(IMAGE1, image1); + chai.assert.notExists(image2.alt); // No alt specified. + chai.assert.equal(VALUE2, options[2][1]); + }); + }); +}); diff --git a/tests/mocha/keydown_test.js b/tests/mocha/keydown_test.js index a5e695448ae..28b7a65dc81 100644 --- a/tests/mocha/keydown_test.js +++ b/tests/mocha/keydown_test.js @@ -1,291 +1,291 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.keydown'); - -const {createKeyDownEvent} = goog.require('Blockly.test.helpers.userInput'); -const {defineStackBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Key Down', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = Blockly.inject('blocklyDiv', {}); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - /** - * Creates a block and sets it as Blockly.selected. - * @param {Blockly.Workspace} workspace The workspace to create a new block on. - */ - function setSelectedBlock(workspace) { - defineStackBlock(); - Blockly.common.setSelected(workspace.newBlock('stack_block')); - } - - /** - * Creates a test for not running keyDown events when the workspace is in read only mode. - * @param {Object} keyEvent Mocked key down event. Use createKeyDownEvent. - * @param {string=} opt_name An optional name for the test case. - */ - function runReadOnlyTest(keyEvent, opt_name) { - const name = opt_name ? opt_name : 'Not called when readOnly is true'; - test(name, function() { - this.workspace.options.readOnly = true; - document.dispatchEvent(keyEvent); - sinon.assert.notCalled(this.hideChaffSpy); - }); - } - - suite('Escape', function() { - setup(function() { - this.event = createKeyDownEvent(Blockly.utils.KeyCodes.ESC); - this.hideChaffSpy = sinon.spy( - Blockly.WorkspaceSvg.prototype, 'hideChaff'); - }); - test('Simple', function() { - document.dispatchEvent(this.event); - sinon.assert.calledOnce(this.hideChaffSpy); - }); - runReadOnlyTest(createKeyDownEvent(Blockly.utils.KeyCodes.ESC)); - test('Not called when focus is on an HTML input', function() { - const event = createKeyDownEvent(Blockly.utils.KeyCodes.ESC); - const input = document.createElement('textarea'); - input.dispatchEvent(event); - sinon.assert.notCalled(this.hideChaffSpy); - }); - test('Not called on hidden workspaces', function() { - this.workspace.isVisible_ = false; - document.dispatchEvent(this.event); - sinon.assert.notCalled(this.hideChaffSpy); - }); - }); - - suite('Delete Block', function() { - setup(function() { - this.hideChaffSpy = sinon.spy( - Blockly.WorkspaceSvg.prototype, 'hideChaff'); - setSelectedBlock(this.workspace); - this.deleteSpy = sinon.spy(Blockly.common.getSelected(), 'dispose'); - }); - const testCases = [ - ['Delete', createKeyDownEvent(Blockly.utils.KeyCodes.DELETE)], - ['Backspace', createKeyDownEvent(Blockly.utils.KeyCodes.BACKSPACE)], - ]; - // Delete a block. - suite('Simple', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - test(testCaseName, function() { - document.dispatchEvent(keyEvent); - sinon.assert.calledOnce(this.hideChaffSpy); - sinon.assert.calledOnce(this.deleteSpy); - }); - }); - }); - // Do not delete a block if workspace is in readOnly mode. - suite('Not called when readOnly is true', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - runReadOnlyTest(keyEvent, testCaseName); - }); - }); - }); - - suite('Copy', function() { - setup(function() { - setSelectedBlock(this.workspace); - this.copySpy = sinon.spy(Blockly.clipboard, 'copy'); - this.hideChaffSpy = sinon.spy( - Blockly.WorkspaceSvg.prototype, 'hideChaff'); - }); - const testCases = [ - ['Control C', createKeyDownEvent(Blockly.utils.KeyCodes.C, [Blockly.utils.KeyCodes.CTRL])], - ['Meta C', createKeyDownEvent(Blockly.utils.KeyCodes.C, [Blockly.utils.KeyCodes.META])], - ['Alt C', createKeyDownEvent(Blockly.utils.KeyCodes.C, [Blockly.utils.KeyCodes.ALT])], - ]; - // Copy a block. - suite('Simple', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - test(testCaseName, function() { - document.dispatchEvent(keyEvent); - sinon.assert.calledOnce(this.copySpy); - sinon.assert.calledOnce(this.hideChaffSpy); - }); - }); - }); - // Do not copy a block if a workspace is in readonly mode. - suite('Not called when readOnly is true', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - runReadOnlyTest(keyEvent, testCaseName); - }); - }); - // Do not copy a block if a gesture is in progress. - suite('Gesture in progress', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - test(testCaseName, function() { - sinon.stub(Blockly.Gesture, 'inProgress').returns(true); - document.dispatchEvent(keyEvent); - sinon.assert.notCalled(this.copySpy); - sinon.assert.notCalled(this.hideChaffSpy); - }); - }); - }); - // Do not copy a block if is is not deletable. - suite('Block is not deletable', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - test(testCaseName, function() { - sinon.stub(Blockly.common.getSelected(), 'isDeletable').returns(false); - document.dispatchEvent(keyEvent); - sinon.assert.notCalled(this.copySpy); - sinon.assert.notCalled(this.hideChaffSpy); - }); - }); - }); - // Do not copy a block if it is not movable. - suite('Block is not movable', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - test(testCaseName, function() { - sinon.stub(Blockly.common.getSelected(), 'isMovable').returns(false); - document.dispatchEvent(keyEvent); - sinon.assert.notCalled(this.copySpy); - sinon.assert.notCalled(this.hideChaffSpy); - }); - }); - }); - }); - - suite('Undo', function() { - setup(function() { - this.undoSpy = sinon.spy(this.workspace, 'undo'); - this.hideChaffSpy = sinon.spy( - Blockly.WorkspaceSvg.prototype, 'hideChaff'); - }); - const testCases = [ - ['Control Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.CTRL])], - ['Meta Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.META])], - ['Alt Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.ALT])], - ]; - // Undo. - suite('Simple', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - test(testCaseName, function() { - document.dispatchEvent(keyEvent); - sinon.assert.calledOnce(this.undoSpy); - sinon.assert.calledWith(this.undoSpy, false); - sinon.assert.calledOnce(this.hideChaffSpy); - }); - }); - }); - // Do not undo if a gesture is in progress. - suite('Gesture in progress', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - test(testCaseName, function() { - sinon.stub(Blockly.Gesture, 'inProgress').returns(true); - document.dispatchEvent(keyEvent); - sinon.assert.notCalled(this.undoSpy); - sinon.assert.notCalled(this.hideChaffSpy); - }); - }); - }); - // Do not undo if the workspace is in readOnly mode. - suite('Not called when readOnly is true', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - runReadOnlyTest(keyEvent, testCaseName); - }); - }); - }); - - suite('Redo', function() { - setup(function() { - this.redoSpy = sinon.spy(this.workspace, 'undo'); - this.hideChaffSpy = sinon.spy( - Blockly.WorkspaceSvg.prototype, 'hideChaff'); - }); - const testCases = [ - ['Control Shift Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.CTRL, Blockly.utils.KeyCodes.SHIFT])], - ['Meta Shift Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.META, Blockly.utils.KeyCodes.SHIFT])], - ['Alt Shift Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.ALT, Blockly.utils.KeyCodes.SHIFT])], - ]; - // Undo. - suite('Simple', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - test(testCaseName, function() { - document.dispatchEvent(keyEvent); - sinon.assert.calledOnce(this.redoSpy); - sinon.assert.calledWith(this.redoSpy, true); - sinon.assert.calledOnce(this.hideChaffSpy); - }); - }); - }); - // Do not undo if a gesture is in progress. - suite('Gesture in progress', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - test(testCaseName, function() { - sinon.stub(Blockly.Gesture, 'inProgress').returns(true); - document.dispatchEvent(keyEvent); - sinon.assert.notCalled(this.redoSpy); - sinon.assert.notCalled(this.hideChaffSpy); - }); - }); - }); - // Do not undo if the workspace is in readOnly mode. - suite('Not called when readOnly is true', function() { - testCases.forEach(function(testCase) { - const testCaseName = testCase[0]; - const keyEvent = testCase[1]; - runReadOnlyTest(keyEvent, testCaseName); - }); - }); - }); - - suite('UndoWindows', function() { - setup(function() { - this.ctrlYEvent = createKeyDownEvent(Blockly.utils.KeyCodes.Y, [Blockly.utils.KeyCodes.CTRL]); - this.undoSpy = sinon.spy(this.workspace, 'undo'); - this.hideChaffSpy = sinon.spy( - Blockly.WorkspaceSvg.prototype, 'hideChaff'); - }); - test('Simple', function() { - document.dispatchEvent(this.ctrlYEvent); - sinon.assert.calledOnce(this.undoSpy); - sinon.assert.calledWith(this.undoSpy, true); - sinon.assert.calledOnce(this.hideChaffSpy); - }); - test('Not called when a gesture is in progress', function() { - sinon.stub(Blockly.Gesture, 'inProgress').returns(true); - document.dispatchEvent(this.ctrlYEvent); - sinon.assert.notCalled(this.undoSpy); - sinon.assert.notCalled(this.hideChaffSpy); - }); - runReadOnlyTest(createKeyDownEvent(Blockly.utils.KeyCodes.Y, [Blockly.utils.KeyCodes.CTRL])); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.keydown'); + +const {createKeyDownEvent} = goog.require('Blockly.test.helpers.userInput'); +const {defineStackBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Key Down', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = Blockly.inject('blocklyDiv', {}); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + /** + * Creates a block and sets it as Blockly.selected. + * @param {Blockly.Workspace} workspace The workspace to create a new block on. + */ + function setSelectedBlock(workspace) { + defineStackBlock(); + Blockly.common.setSelected(workspace.newBlock('stack_block')); + } + + /** + * Creates a test for not running keyDown events when the workspace is in read only mode. + * @param {Object} keyEvent Mocked key down event. Use createKeyDownEvent. + * @param {string=} opt_name An optional name for the test case. + */ + function runReadOnlyTest(keyEvent, opt_name) { + const name = opt_name ? opt_name : 'Not called when readOnly is true'; + test(name, function() { + this.workspace.options.readOnly = true; + document.dispatchEvent(keyEvent); + sinon.assert.notCalled(this.hideChaffSpy); + }); + } + + suite('Escape', function() { + setup(function() { + this.event = createKeyDownEvent(Blockly.utils.KeyCodes.ESC); + this.hideChaffSpy = sinon.spy( + Blockly.WorkspaceSvg.prototype, 'hideChaff'); + }); + test('Simple', function() { + document.dispatchEvent(this.event); + sinon.assert.calledOnce(this.hideChaffSpy); + }); + runReadOnlyTest(createKeyDownEvent(Blockly.utils.KeyCodes.ESC)); + test('Not called when focus is on an HTML input', function() { + const event = createKeyDownEvent(Blockly.utils.KeyCodes.ESC); + const input = document.createElement('textarea'); + input.dispatchEvent(event); + sinon.assert.notCalled(this.hideChaffSpy); + }); + test('Not called on hidden workspaces', function() { + this.workspace.isVisible_ = false; + document.dispatchEvent(this.event); + sinon.assert.notCalled(this.hideChaffSpy); + }); + }); + + suite('Delete Block', function() { + setup(function() { + this.hideChaffSpy = sinon.spy( + Blockly.WorkspaceSvg.prototype, 'hideChaff'); + setSelectedBlock(this.workspace); + this.deleteSpy = sinon.spy(Blockly.common.getSelected(), 'dispose'); + }); + const testCases = [ + ['Delete', createKeyDownEvent(Blockly.utils.KeyCodes.DELETE)], + ['Backspace', createKeyDownEvent(Blockly.utils.KeyCodes.BACKSPACE)], + ]; + // Delete a block. + suite('Simple', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + test(testCaseName, function() { + document.dispatchEvent(keyEvent); + sinon.assert.calledOnce(this.hideChaffSpy); + sinon.assert.calledOnce(this.deleteSpy); + }); + }); + }); + // Do not delete a block if workspace is in readOnly mode. + suite('Not called when readOnly is true', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + runReadOnlyTest(keyEvent, testCaseName); + }); + }); + }); + + suite('Copy', function() { + setup(function() { + setSelectedBlock(this.workspace); + this.copySpy = sinon.spy(Blockly.clipboard, 'copy'); + this.hideChaffSpy = sinon.spy( + Blockly.WorkspaceSvg.prototype, 'hideChaff'); + }); + const testCases = [ + ['Control C', createKeyDownEvent(Blockly.utils.KeyCodes.C, [Blockly.utils.KeyCodes.CTRL])], + ['Meta C', createKeyDownEvent(Blockly.utils.KeyCodes.C, [Blockly.utils.KeyCodes.META])], + ['Alt C', createKeyDownEvent(Blockly.utils.KeyCodes.C, [Blockly.utils.KeyCodes.ALT])], + ]; + // Copy a block. + suite('Simple', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + test(testCaseName, function() { + document.dispatchEvent(keyEvent); + sinon.assert.calledOnce(this.copySpy); + sinon.assert.calledOnce(this.hideChaffSpy); + }); + }); + }); + // Do not copy a block if a workspace is in readonly mode. + suite('Not called when readOnly is true', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + runReadOnlyTest(keyEvent, testCaseName); + }); + }); + // Do not copy a block if a gesture is in progress. + suite('Gesture in progress', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + test(testCaseName, function() { + sinon.stub(Blockly.Gesture, 'inProgress').returns(true); + document.dispatchEvent(keyEvent); + sinon.assert.notCalled(this.copySpy); + sinon.assert.notCalled(this.hideChaffSpy); + }); + }); + }); + // Do not copy a block if is is not deletable. + suite('Block is not deletable', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + test(testCaseName, function() { + sinon.stub(Blockly.common.getSelected(), 'isDeletable').returns(false); + document.dispatchEvent(keyEvent); + sinon.assert.notCalled(this.copySpy); + sinon.assert.notCalled(this.hideChaffSpy); + }); + }); + }); + // Do not copy a block if it is not movable. + suite('Block is not movable', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + test(testCaseName, function() { + sinon.stub(Blockly.common.getSelected(), 'isMovable').returns(false); + document.dispatchEvent(keyEvent); + sinon.assert.notCalled(this.copySpy); + sinon.assert.notCalled(this.hideChaffSpy); + }); + }); + }); + }); + + suite('Undo', function() { + setup(function() { + this.undoSpy = sinon.spy(this.workspace, 'undo'); + this.hideChaffSpy = sinon.spy( + Blockly.WorkspaceSvg.prototype, 'hideChaff'); + }); + const testCases = [ + ['Control Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.CTRL])], + ['Meta Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.META])], + ['Alt Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.ALT])], + ]; + // Undo. + suite('Simple', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + test(testCaseName, function() { + document.dispatchEvent(keyEvent); + sinon.assert.calledOnce(this.undoSpy); + sinon.assert.calledWith(this.undoSpy, false); + sinon.assert.calledOnce(this.hideChaffSpy); + }); + }); + }); + // Do not undo if a gesture is in progress. + suite('Gesture in progress', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + test(testCaseName, function() { + sinon.stub(Blockly.Gesture, 'inProgress').returns(true); + document.dispatchEvent(keyEvent); + sinon.assert.notCalled(this.undoSpy); + sinon.assert.notCalled(this.hideChaffSpy); + }); + }); + }); + // Do not undo if the workspace is in readOnly mode. + suite('Not called when readOnly is true', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + runReadOnlyTest(keyEvent, testCaseName); + }); + }); + }); + + suite('Redo', function() { + setup(function() { + this.redoSpy = sinon.spy(this.workspace, 'undo'); + this.hideChaffSpy = sinon.spy( + Blockly.WorkspaceSvg.prototype, 'hideChaff'); + }); + const testCases = [ + ['Control Shift Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.CTRL, Blockly.utils.KeyCodes.SHIFT])], + ['Meta Shift Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.META, Blockly.utils.KeyCodes.SHIFT])], + ['Alt Shift Z', createKeyDownEvent(Blockly.utils.KeyCodes.Z, [Blockly.utils.KeyCodes.ALT, Blockly.utils.KeyCodes.SHIFT])], + ]; + // Undo. + suite('Simple', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + test(testCaseName, function() { + document.dispatchEvent(keyEvent); + sinon.assert.calledOnce(this.redoSpy); + sinon.assert.calledWith(this.redoSpy, true); + sinon.assert.calledOnce(this.hideChaffSpy); + }); + }); + }); + // Do not undo if a gesture is in progress. + suite('Gesture in progress', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + test(testCaseName, function() { + sinon.stub(Blockly.Gesture, 'inProgress').returns(true); + document.dispatchEvent(keyEvent); + sinon.assert.notCalled(this.redoSpy); + sinon.assert.notCalled(this.hideChaffSpy); + }); + }); + }); + // Do not undo if the workspace is in readOnly mode. + suite('Not called when readOnly is true', function() { + testCases.forEach(function(testCase) { + const testCaseName = testCase[0]; + const keyEvent = testCase[1]; + runReadOnlyTest(keyEvent, testCaseName); + }); + }); + }); + + suite('UndoWindows', function() { + setup(function() { + this.ctrlYEvent = createKeyDownEvent(Blockly.utils.KeyCodes.Y, [Blockly.utils.KeyCodes.CTRL]); + this.undoSpy = sinon.spy(this.workspace, 'undo'); + this.hideChaffSpy = sinon.spy( + Blockly.WorkspaceSvg.prototype, 'hideChaff'); + }); + test('Simple', function() { + document.dispatchEvent(this.ctrlYEvent); + sinon.assert.calledOnce(this.undoSpy); + sinon.assert.calledWith(this.undoSpy, true); + sinon.assert.calledOnce(this.hideChaffSpy); + }); + test('Not called when a gesture is in progress', function() { + sinon.stub(Blockly.Gesture, 'inProgress').returns(true); + document.dispatchEvent(this.ctrlYEvent); + sinon.assert.notCalled(this.undoSpy); + sinon.assert.notCalled(this.hideChaffSpy); + }); + runReadOnlyTest(createKeyDownEvent(Blockly.utils.KeyCodes.Y, [Blockly.utils.KeyCodes.CTRL])); + }); +}); diff --git a/tests/mocha/logic_ternary_test.js b/tests/mocha/logic_ternary_test.js index 5f4c82580e8..8486a085b65 100644 --- a/tests/mocha/logic_ternary_test.js +++ b/tests/mocha/logic_ternary_test.js @@ -1,253 +1,253 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.logicTernary'); - -const eventUtils = goog.require('Blockly.Events.utils'); -const {runSerializationTestSuite} = goog.require('Blockly.test.helpers.serialization'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Logic ternary', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - /** - * Asserts that the logic ternary block has the expected inputs and fields. - * @param {!Blockly.Block} block The block to check. - * @param {boolean=} inputsInline Whether the inputs are expected to be - * inline. - */ - function assertBlockStructure(block, inputsInline = false) { - chai.assert.equal(block.type, 'logic_ternary'); - const inputs = block.inputList; - chai.assert.exists(inputs, 'Has inputList'); - chai.assert.lengthOf(inputs, 3); - const ifInput = block.getInput('IF'); - chai.assert.exists(ifInput, 'Has "IF" input'); - chai.assert.equal(ifInput.connection.check_.length, 1); - chai.assert.equal(ifInput.connection.check_[0], 'Boolean'); - chai.assert.exists(block.onchangeWrapper_, 'Has onchange handler'); - if (inputsInline) { - chai.assert.isTrue(block.inputsInline); - } else { - // inputsInline can be undefined - chai.assert.isNotTrue(block.inputsInline); - } - } - - test('Structure', function() { - const block = this.workspace.newBlock('logic_ternary'); - assertBlockStructure(block); - }); - - /** - * Test cases for serialization tests. - * @type {Array} - */ - const testCases = [ - {title: 'Empty XML', xml: '', - expectedXml: - '', - assertBlockStructure: - (block) => { - assertBlockStructure(block); - }, - }, - {title: 'Inputs inline', - xml: - '', - assertBlockStructure: - (block) => { - assertBlockStructure(block, true); - }, - }, - ]; - runSerializationTestSuite(testCases); - - suite('Connections', function() { - function connectParentAndCheckConnections( - block, parent, parentInputName, opt_thenInput, opt_elseInput) { - parent.getInput(parentInputName).connection.connect(block.outputConnection); - eventUtils.TEST_ONLY.fireNow(); // Force synchronous onchange() call. - chai.assert.equal(block.getParent(), parent, - 'Successful connection to parent'); - if (opt_thenInput) { - chai.assert.equal(opt_thenInput.getParent(), block, - 'Input THEN still connected after connecting parent'); - } - if (opt_elseInput) { - chai.assert.equal(opt_elseInput.getParent(), block, - 'Input ELSE still connected after connecting parent'); - } - } - function connectThenInputAndCheckConnections( - block, thenInput, opt_elseInput, opt_parent) { - block.getInput('THEN').connection.connect(thenInput.outputConnection); - eventUtils.TEST_ONLY.fireNow(); // Force synchronous onchange() call. - chai.assert.equal(thenInput.getParent(), block, 'THEN is connected'); - if (opt_parent) { - chai.assert.equal(block.getParent(), opt_parent, - 'Still connected to parent after connecting THEN'); - } - if (opt_elseInput) { - chai.assert.equal(opt_elseInput.getParent(), block, - 'Input ELSE still connected after connecting THEN'); - } - } - function connectElseInputAndCheckConnections( - block, elseInput, opt_thenInput, opt_parent) { - block.getInput('ELSE').connection.connect(elseInput.outputConnection); - eventUtils.TEST_ONLY.fireNow(); // Force synchronous onchange() call. - chai.assert.equal(elseInput.getParent(), block, 'ELSE is connected'); - if (opt_parent) { - chai.assert.equal(block.getParent(), opt_parent, - 'Still connected to parent after connecting ELSE'); - } - if (opt_thenInput) { - chai.assert.equal(opt_thenInput.getParent(), block, - 'Input THEN still connected after connecting ELSE'); - } - } - function connectInputsAndCheckConnections( - block, thenInput, elseInput, opt_parent) { - connectThenInputAndCheckConnections(block, thenInput, null, opt_parent); - connectElseInputAndCheckConnections(block, elseInput, thenInput, opt_parent); - } - setup(function() { - this.block = this.workspace.newBlock('logic_ternary'); - }); - suite('No parent', function() { - test('Attach inputs same type', function() { - const string1 = this.workspace.newBlock('text'); - const string2 = this.workspace.newBlock('text_charAt'); - - connectInputsAndCheckConnections(this.block, string1, string2); - }); - test('Attach inputs different types', function() { - const string = this.workspace.newBlock('text'); - const number = this.workspace.newBlock('math_number'); - - connectInputsAndCheckConnections(this.block, string, number); - }); - }); - suite('With parent already attached', function() { - test('Attach inputs same type with matching parent', function() { - const parent = this.workspace.newBlock('text_trim'); - - connectParentAndCheckConnections(this.block, parent, 'TEXT'); - - const string1 = this.workspace.newBlock('text'); - const string2 = this.workspace.newBlock('text_charAt'); - - connectInputsAndCheckConnections(this.block, string1, string2, parent); - }); - test('Attach inputs different types with unchecked parent', function() { - const parent = this.workspace.newBlock('text_print'); - - connectParentAndCheckConnections(this.block, parent, 'TEXT'); - - const string = this.workspace.newBlock('text'); - const number = this.workspace.newBlock('math_number'); - - connectInputsAndCheckConnections(this.block, string, number, parent); - }); - test('Attach inputs different types with permissive parent', function() { - const parent = this.workspace.newBlock('text_length'); // Allows String or Array - - connectParentAndCheckConnections(this.block, parent, 'VALUE'); - - const string = this.workspace.newBlock('text'); - const array = this.workspace.newBlock('lists_create_empty'); - - connectInputsAndCheckConnections(this.block, string, array, parent); - }); - test('Attach mismatch type to then causes break with parent', function() { - const parent = this.workspace.newBlock('text_length'); // Allows String or Array - - connectParentAndCheckConnections(this.block, parent, 'VALUE'); - - const string = this.workspace.newBlock('text'); - const number = this.workspace.newBlock('math_number'); - - connectElseInputAndCheckConnections(this.block, string, null, parent); - - // Adding mismatching number. - connectThenInputAndCheckConnections(this.block, number, string); - chai.assert.equal(this.block.getRootBlock(), this.block, - 'Disconnected from parent'); - }); - test('Attach mismatch type to else causes break with parent', function() { - const parent = this.workspace.newBlock('text_length'); // Allows String or Array - - connectParentAndCheckConnections(this.block, parent, 'VALUE'); - - const string = this.workspace.newBlock('text'); - const number = this.workspace.newBlock('math_number'); - - connectThenInputAndCheckConnections(this.block, string, null, parent); - - // Adding mismatching number. - connectElseInputAndCheckConnections(this.block, number, string); - chai.assert.equal(this.block.getRootBlock(), this.block, - 'Disconnected from parent'); - }); - }); - suite('Attaching parent after inputs', function() { - test('Unchecked parent with inputs different types', function() { - const string = this.workspace.newBlock('text'); - const number = this.workspace.newBlock('math_number'); - - connectInputsAndCheckConnections(this.block, string, number); - - const parent = this.workspace.newBlock('text_print'); - connectParentAndCheckConnections( - this.block, parent, 'TEXT', string, number); - }); - test('Permissive parent with inputs different types', function() { - const string = this.workspace.newBlock('text'); - const array = this.workspace.newBlock('lists_create_empty'); - - connectInputsAndCheckConnections(this.block, string, array); - - const parent = this.workspace.newBlock('text_print'); - connectParentAndCheckConnections( - this.block, parent, 'TEXT', string, array); - }); - test('Mismatch with then causes break with then', function() { - const number = this.workspace.newBlock('math_number'); - const string = this.workspace.newBlock('text'); - - connectInputsAndCheckConnections(this.block, number, string); - - const parent = this.workspace.newBlock('text_trim'); - connectParentAndCheckConnections( - this.block, parent, 'TEXT', null, string); - chai.assert.equal(number.getRootBlock(), number, - 'Input THEN disconnected'); - }); - test('Mismatch with else causes break with else', function() { - const string = this.workspace.newBlock('text'); - const number = this.workspace.newBlock('math_number'); - - connectInputsAndCheckConnections(this.block, string, number); - - const parent = this.workspace.newBlock('text_trim'); - connectParentAndCheckConnections(this.block, parent, 'TEXT', string); - chai.assert.equal(number.getRootBlock(), number, - 'Input ELSE disconnected'); - }); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.logicTernary'); + +const eventUtils = goog.require('Blockly.Events.utils'); +const {runSerializationTestSuite} = goog.require('Blockly.test.helpers.serialization'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Logic ternary', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + /** + * Asserts that the logic ternary block has the expected inputs and fields. + * @param {!Blockly.Block} block The block to check. + * @param {boolean=} inputsInline Whether the inputs are expected to be + * inline. + */ + function assertBlockStructure(block, inputsInline = false) { + chai.assert.equal(block.type, 'logic_ternary'); + const inputs = block.inputList; + chai.assert.exists(inputs, 'Has inputList'); + chai.assert.lengthOf(inputs, 3); + const ifInput = block.getInput('IF'); + chai.assert.exists(ifInput, 'Has "IF" input'); + chai.assert.equal(ifInput.connection.check_.length, 1); + chai.assert.equal(ifInput.connection.check_[0], 'Boolean'); + chai.assert.exists(block.onchangeWrapper_, 'Has onchange handler'); + if (inputsInline) { + chai.assert.isTrue(block.inputsInline); + } else { + // inputsInline can be undefined + chai.assert.isNotTrue(block.inputsInline); + } + } + + test('Structure', function() { + const block = this.workspace.newBlock('logic_ternary'); + assertBlockStructure(block); + }); + + /** + * Test cases for serialization tests. + * @type {Array} + */ + const testCases = [ + {title: 'Empty XML', xml: '', + expectedXml: + '', + assertBlockStructure: + (block) => { + assertBlockStructure(block); + }, + }, + {title: 'Inputs inline', + xml: + '', + assertBlockStructure: + (block) => { + assertBlockStructure(block, true); + }, + }, + ]; + runSerializationTestSuite(testCases); + + suite('Connections', function() { + function connectParentAndCheckConnections( + block, parent, parentInputName, opt_thenInput, opt_elseInput) { + parent.getInput(parentInputName).connection.connect(block.outputConnection); + eventUtils.TEST_ONLY.fireNow(); // Force synchronous onchange() call. + chai.assert.equal(block.getParent(), parent, + 'Successful connection to parent'); + if (opt_thenInput) { + chai.assert.equal(opt_thenInput.getParent(), block, + 'Input THEN still connected after connecting parent'); + } + if (opt_elseInput) { + chai.assert.equal(opt_elseInput.getParent(), block, + 'Input ELSE still connected after connecting parent'); + } + } + function connectThenInputAndCheckConnections( + block, thenInput, opt_elseInput, opt_parent) { + block.getInput('THEN').connection.connect(thenInput.outputConnection); + eventUtils.TEST_ONLY.fireNow(); // Force synchronous onchange() call. + chai.assert.equal(thenInput.getParent(), block, 'THEN is connected'); + if (opt_parent) { + chai.assert.equal(block.getParent(), opt_parent, + 'Still connected to parent after connecting THEN'); + } + if (opt_elseInput) { + chai.assert.equal(opt_elseInput.getParent(), block, + 'Input ELSE still connected after connecting THEN'); + } + } + function connectElseInputAndCheckConnections( + block, elseInput, opt_thenInput, opt_parent) { + block.getInput('ELSE').connection.connect(elseInput.outputConnection); + eventUtils.TEST_ONLY.fireNow(); // Force synchronous onchange() call. + chai.assert.equal(elseInput.getParent(), block, 'ELSE is connected'); + if (opt_parent) { + chai.assert.equal(block.getParent(), opt_parent, + 'Still connected to parent after connecting ELSE'); + } + if (opt_thenInput) { + chai.assert.equal(opt_thenInput.getParent(), block, + 'Input THEN still connected after connecting ELSE'); + } + } + function connectInputsAndCheckConnections( + block, thenInput, elseInput, opt_parent) { + connectThenInputAndCheckConnections(block, thenInput, null, opt_parent); + connectElseInputAndCheckConnections(block, elseInput, thenInput, opt_parent); + } + setup(function() { + this.block = this.workspace.newBlock('logic_ternary'); + }); + suite('No parent', function() { + test('Attach inputs same type', function() { + const string1 = this.workspace.newBlock('text'); + const string2 = this.workspace.newBlock('text_charAt'); + + connectInputsAndCheckConnections(this.block, string1, string2); + }); + test('Attach inputs different types', function() { + const string = this.workspace.newBlock('text'); + const number = this.workspace.newBlock('math_number'); + + connectInputsAndCheckConnections(this.block, string, number); + }); + }); + suite('With parent already attached', function() { + test('Attach inputs same type with matching parent', function() { + const parent = this.workspace.newBlock('text_trim'); + + connectParentAndCheckConnections(this.block, parent, 'TEXT'); + + const string1 = this.workspace.newBlock('text'); + const string2 = this.workspace.newBlock('text_charAt'); + + connectInputsAndCheckConnections(this.block, string1, string2, parent); + }); + test('Attach inputs different types with unchecked parent', function() { + const parent = this.workspace.newBlock('text_print'); + + connectParentAndCheckConnections(this.block, parent, 'TEXT'); + + const string = this.workspace.newBlock('text'); + const number = this.workspace.newBlock('math_number'); + + connectInputsAndCheckConnections(this.block, string, number, parent); + }); + test('Attach inputs different types with permissive parent', function() { + const parent = this.workspace.newBlock('text_length'); // Allows String or Array + + connectParentAndCheckConnections(this.block, parent, 'VALUE'); + + const string = this.workspace.newBlock('text'); + const array = this.workspace.newBlock('lists_create_empty'); + + connectInputsAndCheckConnections(this.block, string, array, parent); + }); + test('Attach mismatch type to then causes break with parent', function() { + const parent = this.workspace.newBlock('text_length'); // Allows String or Array + + connectParentAndCheckConnections(this.block, parent, 'VALUE'); + + const string = this.workspace.newBlock('text'); + const number = this.workspace.newBlock('math_number'); + + connectElseInputAndCheckConnections(this.block, string, null, parent); + + // Adding mismatching number. + connectThenInputAndCheckConnections(this.block, number, string); + chai.assert.equal(this.block.getRootBlock(), this.block, + 'Disconnected from parent'); + }); + test('Attach mismatch type to else causes break with parent', function() { + const parent = this.workspace.newBlock('text_length'); // Allows String or Array + + connectParentAndCheckConnections(this.block, parent, 'VALUE'); + + const string = this.workspace.newBlock('text'); + const number = this.workspace.newBlock('math_number'); + + connectThenInputAndCheckConnections(this.block, string, null, parent); + + // Adding mismatching number. + connectElseInputAndCheckConnections(this.block, number, string); + chai.assert.equal(this.block.getRootBlock(), this.block, + 'Disconnected from parent'); + }); + }); + suite('Attaching parent after inputs', function() { + test('Unchecked parent with inputs different types', function() { + const string = this.workspace.newBlock('text'); + const number = this.workspace.newBlock('math_number'); + + connectInputsAndCheckConnections(this.block, string, number); + + const parent = this.workspace.newBlock('text_print'); + connectParentAndCheckConnections( + this.block, parent, 'TEXT', string, number); + }); + test('Permissive parent with inputs different types', function() { + const string = this.workspace.newBlock('text'); + const array = this.workspace.newBlock('lists_create_empty'); + + connectInputsAndCheckConnections(this.block, string, array); + + const parent = this.workspace.newBlock('text_print'); + connectParentAndCheckConnections( + this.block, parent, 'TEXT', string, array); + }); + test('Mismatch with then causes break with then', function() { + const number = this.workspace.newBlock('math_number'); + const string = this.workspace.newBlock('text'); + + connectInputsAndCheckConnections(this.block, number, string); + + const parent = this.workspace.newBlock('text_trim'); + connectParentAndCheckConnections( + this.block, parent, 'TEXT', null, string); + chai.assert.equal(number.getRootBlock(), number, + 'Input THEN disconnected'); + }); + test('Mismatch with else causes break with else', function() { + const string = this.workspace.newBlock('text'); + const number = this.workspace.newBlock('math_number'); + + connectInputsAndCheckConnections(this.block, string, number); + + const parent = this.workspace.newBlock('text_trim'); + connectParentAndCheckConnections(this.block, parent, 'TEXT', string); + chai.assert.equal(number.getRootBlock(), number, + 'Input ELSE disconnected'); + }); + }); + }); +}); diff --git a/tests/mocha/metrics_test.js b/tests/mocha/metrics_test.js index 5fcc0b69c7b..21470be0128 100644 --- a/tests/mocha/metrics_test.js +++ b/tests/mocha/metrics_test.js @@ -1,508 +1,508 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.metrics'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Metrics', function() { - const SCROLL_X = 10; - const SCROLL_Y = 10; - function assertDimensionsMatch(toCheck, left, top, width, height) { - chai.assert.equal(top, toCheck.top, 'Top did not match.'); - chai.assert.equal(left, toCheck.left, 'Left did not match.'); - chai.assert.equal(width, toCheck.width, 'Width did not match.'); - chai.assert.equal(height, toCheck.height, 'Height did not match.'); - } - - // Make a mock workspace object with two properties: - // getBlocksBoundingBox and scale. - function makeMockWs(scale, x, y, width, height) { - return { - getBlocksBoundingBox: function() { - return {top: y, bottom: y + height, left: x, right: x + width}; - }, - getToolbox: function() {}, - getFlyout: function() {}, - scale: scale, - scrollX: SCROLL_X, - scrollY: SCROLL_Y, - isMovableHorizontally: function() {return true;}, - isMovableVertically: function() {return true;}, - }; - } - - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('getAbsoluteMetrics', function() { - setup(function() { - this.ws = makeMockWs(1, 0, 0, 0, 0); - this.metricsManager = new Blockly.MetricsManager(this.ws); - this.toolboxMetricsStub = - sinon.stub(this.metricsManager, 'getToolboxMetrics'); - this.flyoutMetricsStub = - sinon.stub(this.metricsManager, 'getFlyoutMetrics'); - this.getToolboxStub = - sinon.stub(this.metricsManager.workspace_, 'getToolbox'); - this.getFlyoutStub = - sinon.stub(this.metricsManager.workspace_, 'getFlyout'); - }); - test('Toolbox at left', function() { - this.toolboxMetricsStub.returns({width: 107, height: 0, position: 2}); - this.flyoutMetricsStub.returns({}); - this.getToolboxStub.returns(true); - this.getFlyoutStub.returns(false); - - const absoluteMetrics = this.metricsManager.getAbsoluteMetrics(); - - assertDimensionsMatch(absoluteMetrics, 107, 0); - }); - test('Toolbox at top', function() { - this.toolboxMetricsStub.returns({width: 0, height: 107, position: 0}); - this.flyoutMetricsStub.returns({}); - this.getToolboxStub.returns(true); - this.getFlyoutStub.returns(false); - - const absoluteMetrics = this.metricsManager.getAbsoluteMetrics(); - - assertDimensionsMatch(absoluteMetrics, 0, 107); - }); - test('Flyout at left', function() { - this.toolboxMetricsStub.returns({}); - this.flyoutMetricsStub.returns({width: 107, height: 0, position: 2}); - this.getToolboxStub.returns(false); - this.getFlyoutStub.returns(true); - - const absoluteMetrics = this.metricsManager.getAbsoluteMetrics(); - - assertDimensionsMatch(absoluteMetrics, 107, 0); - }); - test('Flyout at top', function() { - this.toolboxMetricsStub.returns({}); - this.flyoutMetricsStub.returns({width: 0, height: 107, position: 0}); - this.getToolboxStub.returns(false); - this.getFlyoutStub.returns(true); - - const absoluteMetrics = this.metricsManager.getAbsoluteMetrics(); - - assertDimensionsMatch(absoluteMetrics, 0, 107); - }); - }); - - suite('getViewMetrics', function() { - setup(function() { - this.ws = makeMockWs(1, 0, 0, 0, 0); - this.metricsManager = new Blockly.MetricsManager(this.ws); - this.toolboxMetricsStub = - sinon.stub(this.metricsManager, 'getToolboxMetrics'); - this.flyoutMetricsStub = - sinon.stub(this.metricsManager, 'getFlyoutMetrics'); - this.getToolboxStub = - sinon.stub(this.metricsManager.workspace_, 'getToolbox'); - this.getFlyoutStub = - sinon.stub(this.metricsManager.workspace_, 'getFlyout'); - this.svgMetricsStub = sinon.stub(this.metricsManager, 'getSvgMetrics'); - }); - test('Toolbox at left', function() { - this.toolboxMetricsStub.returns({width: 107, height: 0, position: 2}); - this.flyoutMetricsStub.returns({}); - this.svgMetricsStub.returns({width: 500, height: 500}); - this.getToolboxStub.returns(true); - this.getFlyoutStub.returns(false); - - const viewMetrics = this.metricsManager.getViewMetrics(); - - assertDimensionsMatch(viewMetrics, -SCROLL_X, -SCROLL_Y, 393, 500); - }); - test('Toolbox at top', function() { - this.toolboxMetricsStub.returns({width: 0, height: 107, position: 0}); - this.flyoutMetricsStub.returns({}); - this.svgMetricsStub.returns({width: 500, height: 500}); - this.getToolboxStub.returns(true); - this.getFlyoutStub.returns(false); - - const viewMetrics = this.metricsManager.getViewMetrics(); - - assertDimensionsMatch(viewMetrics, -SCROLL_X, -SCROLL_Y, 500, 393); - }); - test('Flyout at left', function() { - this.toolboxMetricsStub.returns({}); - this.flyoutMetricsStub.returns({width: 107, height: 0, position: 2}); - this.svgMetricsStub.returns({width: 500, height: 500}); - this.getToolboxStub.returns(false); - this.getFlyoutStub.returns(true); - - const viewMetrics = this.metricsManager.getViewMetrics(); - - assertDimensionsMatch(viewMetrics, -SCROLL_X, -SCROLL_Y, 393, 500); - }); - test('Flyout at top', function() { - this.toolboxMetricsStub.returns({}); - this.flyoutMetricsStub.returns({width: 0, height: 107, position: 0}); - this.svgMetricsStub.returns({width: 500, height: 500}); - this.getToolboxStub.returns(false); - this.getFlyoutStub.returns(true); - - const viewMetrics = this.metricsManager.getViewMetrics(); - - assertDimensionsMatch(viewMetrics, -SCROLL_X, -SCROLL_Y, 500, 393); - }); - test('Get view metrics in workspace coordinates ', function() { - const scale = 2; - const getWorkspaceCoordinates = true; - - this.ws.scale = scale; - this.toolboxMetricsStub.returns({}); - this.flyoutMetricsStub.returns({width: 0, height: 107, position: 0}); - this.svgMetricsStub.returns({width: 500, height: 500}); - this.getToolboxStub.returns(false); - this.getFlyoutStub.returns(true); - - const viewMetrics = - this.metricsManager.getViewMetrics(getWorkspaceCoordinates); - - assertDimensionsMatch( - viewMetrics, -SCROLL_X / scale, -SCROLL_Y / scale, 500 / scale, - 393 / scale); - }); - }); - - suite('getContentMetrics', function() { - test('Empty in ws coordinates', function() { - const ws = makeMockWs(1, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); - }); - test('Empty zoom-in in ws coordinates', function() { - const ws = makeMockWs(2, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); - }); - test('Empty zoom-out in ws coordinates', function() { - const ws = makeMockWs(.5, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); - }); - test('Non empty at origin ws coordinates', function() { - const ws = makeMockWs(1, 0, 0, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - assertDimensionsMatch(contentMetrics, 0, 0, 100, 100); - }); - test('Non empty at origin zoom-in ws coordinates', function() { - const ws = makeMockWs(2, 0, 0, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - assertDimensionsMatch(contentMetrics, 0, 0, 100, 100); - }); - test('Non empty at origin zoom-out ws coordinates', function() { - const ws = makeMockWs(.5, 0, 0, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - assertDimensionsMatch(contentMetrics, 0, 0, 100, 100); - }); - test('Non empty positive origin ws coordinates', function() { - const ws = makeMockWs(1, 10, 10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - assertDimensionsMatch(contentMetrics, 10, 10, 100, 100); - }); - test('Non empty positive origin zoom-in ws coordinates', function() { - const ws = makeMockWs(2, 10, 10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - // 1 ws unit = 2 pixels at this zoom level. - assertDimensionsMatch(contentMetrics, 10, 10, 100, 100); - }); - test('Non empty positive origin zoom-out ws coordinates', function() { - const ws = makeMockWs(.5, 10, 10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - // 1 ws unit = 0.5 pixels at this zoom level. - assertDimensionsMatch(contentMetrics, 10, 10, 100, 100); - }); - test('Non empty negative origin ws coordinates', function() { - const ws = makeMockWs(1, -10, -10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - // Pixel and ws units are the same at default zoom. - assertDimensionsMatch(contentMetrics, -10, -10, 100, 100); - }); - test('Non empty negative origin zoom-in ws coordinates', function() { - const ws = makeMockWs(2, -10, -10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - assertDimensionsMatch(contentMetrics, -10, -10, 100, 100); - }); - test('Non empty negative origin zoom-out ws coordinates', function() { - const ws = makeMockWs(.5, -10, -10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(true); - assertDimensionsMatch(contentMetrics, -10, -10, 100, 100); - }); - test('Empty in pixel coordinates', function() { - const ws = makeMockWs(1, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); - }); - test('Empty zoom-in in pixel coordinates', function() { - const ws = makeMockWs(2, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); - }); - test('Empty zoom-out in pixel coordinates', function() { - const ws = makeMockWs(.5, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); - }); - test('Non empty at origin pixel coordinates', function() { - const ws = makeMockWs(1, 0, 0, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - // Pixel and ws units are the same at default zoom. - assertDimensionsMatch(contentMetrics, 0, 0, 100, 100); - }); - test('Non empty at origin zoom-in pixel coordinates', function() { - const ws = makeMockWs(2, 0, 0, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - // 1 ws unit = 2 pixels at this zoom level. - assertDimensionsMatch(contentMetrics, 0, 0, 200, 200); - }); - test('Non empty at origin zoom-out pixel coordinates', function() { - const ws = makeMockWs(.5, 0, 0, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - // 1 ws unit = 0.5 pixels at this zoom level. - assertDimensionsMatch(contentMetrics, 0, 0, 50, 50); - }); - test('Non empty positive origin pixel coordinates', function() { - const ws = makeMockWs(1, 10, 10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - // Pixel and ws units are the same at default zoom. - assertDimensionsMatch(contentMetrics, 10, 10, 100, 100); - }); - test('Non empty positive origin zoom-in pixel coordinates', function() { - const ws = makeMockWs(2, 10, 10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - // 1 ws unit = 2 pixels at this zoom level. - assertDimensionsMatch(contentMetrics, 20, 20, 200, 200); - }); - test('Non empty positive origin zoom-out pixel coordinates', function() { - const ws = makeMockWs(.5, 10, 10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - // 1 ws unit = 0.5 pixels at this zoom level. - assertDimensionsMatch(contentMetrics, 5, 5, 50, 50); - }); - test('Non empty negative origin pixel coordinates', function() { - const ws = makeMockWs(1, -10, -10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - // Pixel and ws units are the same at default zoom. - assertDimensionsMatch(contentMetrics, -10, -10, 100, 100); - }); - test('Non empty negative origin zoom-in pixel coordinates', function() { - const ws = makeMockWs(2, -10, -10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - // 1 ws unit = 2 pixels at this zoom level. - assertDimensionsMatch(contentMetrics, -20, -20, 200, 200); - }); - test('Non empty negative origin zoom-out pixel coordinates', function() { - const ws = makeMockWs(.5, -10, -10, 100, 100); - const metricsManager = new Blockly.MetricsManager(ws); - const contentMetrics = metricsManager.getContentMetrics(false); - // 1 ws unit = 0.5 pixels at this zoom level. - assertDimensionsMatch(contentMetrics, -5, -5, 50, 50); - }); - }); - - suite('getScrollMetrics', function() { - test('Empty workspace in ws coordinates', function() { - const ws = makeMockWs(1, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; - - const contentMetrics = - metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); - - // Should add half the view width to all sides. - assertDimensionsMatch(contentMetrics, -200, -200, 400, 400); - }); - test('Empty workspace zoom-in in ws coordinates', function() { - const ws = makeMockWs(2, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; - - const contentMetrics = - metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); - - // Should add half the view width to all sides. - assertDimensionsMatch(contentMetrics, -100, -100, 200, 200); - }); - test('Empty workspace zoom-out in ws coordinates', function() { - const ws = makeMockWs(0.5, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; - - const contentMetrics = - metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); - - // Should add half the view width to all sides. - assertDimensionsMatch(contentMetrics, -400, -400, 800, 800); - }); - test('Non empty workspace in ws coordinates', function() { - const ws = makeMockWs(1, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; - - const contentMetrics = - metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); - - // Should add half of the view width to all sides. - assertDimensionsMatch(contentMetrics, -50, -50, 350, 350); - }); - test('Non empty workspace zoom-in in ws coordinates', function() { - const ws = makeMockWs(2, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; - - const contentMetrics = - metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); - - // Should add half of the view width to all sides. - assertDimensionsMatch(contentMetrics, -25, -25, 175, 175); - }); - test('Non empty workspace zoom-out in ws coordinates', function() { - const ws = makeMockWs(0.5, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; - - const contentMetrics = - metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); - - // Should add half of the view width to all sides. - assertDimensionsMatch(contentMetrics, -100, -100, 700, 700); - }); - test('Empty workspace in pixel coordinates', function() { - const ws = makeMockWs(1, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; - - const contentMetrics = - metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); - - // Should add half the view width to all sides. - assertDimensionsMatch(contentMetrics, -200, -200, 400, 400); - }); - test('Empty workspace zoom-in in pixel coordinates', function() { - const ws = makeMockWs(2, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; - - const contentMetrics = - metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); - - // Should add half the view width to all sides. - assertDimensionsMatch(contentMetrics, -200, -200, 400, 400); - }); - test('Empty workspace zoom-out in pixel coordinates', function() { - const ws = makeMockWs(0.5, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; - - const contentMetrics = - metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); - - // Should add half the view width to all sides. - assertDimensionsMatch(contentMetrics, -200, -200, 400, 400); - }); - test('Non empty workspace in pixel coordinates', function() { - const ws = makeMockWs(1, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; - - const contentMetrics = - metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); - - // Should add half of the view width to all sides. - assertDimensionsMatch(contentMetrics, -50, -50, 350, 350); - }); - test('Non empty workspace zoom-in in pixel coordinates', function() { - const ws = makeMockWs(2, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; - - const contentMetrics = - metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); - - // Should add half of the view width to all sides. - assertDimensionsMatch(contentMetrics, -50, -50, 350, 350); - }); - test('Non empty workspace zoom-out in pixel coordinates', function() { - const ws = makeMockWs(0.5, 0, 0, 0, 0); - const metricsManager = new Blockly.MetricsManager(ws); - // The location of the viewport. - const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; - // The bounding box around the blocks on the screen. - const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; - - const contentMetrics = - metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); - - // Should add half of the view width to all sides. - assertDimensionsMatch(contentMetrics, -50, -50, 350, 350); - }); - }); -}); +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.metrics'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Metrics', function() { + const SCROLL_X = 10; + const SCROLL_Y = 10; + function assertDimensionsMatch(toCheck, left, top, width, height) { + chai.assert.equal(top, toCheck.top, 'Top did not match.'); + chai.assert.equal(left, toCheck.left, 'Left did not match.'); + chai.assert.equal(width, toCheck.width, 'Width did not match.'); + chai.assert.equal(height, toCheck.height, 'Height did not match.'); + } + + // Make a mock workspace object with two properties: + // getBlocksBoundingBox and scale. + function makeMockWs(scale, x, y, width, height) { + return { + getBlocksBoundingBox: function() { + return {top: y, bottom: y + height, left: x, right: x + width}; + }, + getToolbox: function() {}, + getFlyout: function() {}, + scale: scale, + scrollX: SCROLL_X, + scrollY: SCROLL_Y, + isMovableHorizontally: function() {return true;}, + isMovableVertically: function() {return true;}, + }; + } + + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('getAbsoluteMetrics', function() { + setup(function() { + this.ws = makeMockWs(1, 0, 0, 0, 0); + this.metricsManager = new Blockly.MetricsManager(this.ws); + this.toolboxMetricsStub = + sinon.stub(this.metricsManager, 'getToolboxMetrics'); + this.flyoutMetricsStub = + sinon.stub(this.metricsManager, 'getFlyoutMetrics'); + this.getToolboxStub = + sinon.stub(this.metricsManager.workspace_, 'getToolbox'); + this.getFlyoutStub = + sinon.stub(this.metricsManager.workspace_, 'getFlyout'); + }); + test('Toolbox at left', function() { + this.toolboxMetricsStub.returns({width: 107, height: 0, position: 2}); + this.flyoutMetricsStub.returns({}); + this.getToolboxStub.returns(true); + this.getFlyoutStub.returns(false); + + const absoluteMetrics = this.metricsManager.getAbsoluteMetrics(); + + assertDimensionsMatch(absoluteMetrics, 107, 0); + }); + test('Toolbox at top', function() { + this.toolboxMetricsStub.returns({width: 0, height: 107, position: 0}); + this.flyoutMetricsStub.returns({}); + this.getToolboxStub.returns(true); + this.getFlyoutStub.returns(false); + + const absoluteMetrics = this.metricsManager.getAbsoluteMetrics(); + + assertDimensionsMatch(absoluteMetrics, 0, 107); + }); + test('Flyout at left', function() { + this.toolboxMetricsStub.returns({}); + this.flyoutMetricsStub.returns({width: 107, height: 0, position: 2}); + this.getToolboxStub.returns(false); + this.getFlyoutStub.returns(true); + + const absoluteMetrics = this.metricsManager.getAbsoluteMetrics(); + + assertDimensionsMatch(absoluteMetrics, 107, 0); + }); + test('Flyout at top', function() { + this.toolboxMetricsStub.returns({}); + this.flyoutMetricsStub.returns({width: 0, height: 107, position: 0}); + this.getToolboxStub.returns(false); + this.getFlyoutStub.returns(true); + + const absoluteMetrics = this.metricsManager.getAbsoluteMetrics(); + + assertDimensionsMatch(absoluteMetrics, 0, 107); + }); + }); + + suite('getViewMetrics', function() { + setup(function() { + this.ws = makeMockWs(1, 0, 0, 0, 0); + this.metricsManager = new Blockly.MetricsManager(this.ws); + this.toolboxMetricsStub = + sinon.stub(this.metricsManager, 'getToolboxMetrics'); + this.flyoutMetricsStub = + sinon.stub(this.metricsManager, 'getFlyoutMetrics'); + this.getToolboxStub = + sinon.stub(this.metricsManager.workspace_, 'getToolbox'); + this.getFlyoutStub = + sinon.stub(this.metricsManager.workspace_, 'getFlyout'); + this.svgMetricsStub = sinon.stub(this.metricsManager, 'getSvgMetrics'); + }); + test('Toolbox at left', function() { + this.toolboxMetricsStub.returns({width: 107, height: 0, position: 2}); + this.flyoutMetricsStub.returns({}); + this.svgMetricsStub.returns({width: 500, height: 500}); + this.getToolboxStub.returns(true); + this.getFlyoutStub.returns(false); + + const viewMetrics = this.metricsManager.getViewMetrics(); + + assertDimensionsMatch(viewMetrics, -SCROLL_X, -SCROLL_Y, 393, 500); + }); + test('Toolbox at top', function() { + this.toolboxMetricsStub.returns({width: 0, height: 107, position: 0}); + this.flyoutMetricsStub.returns({}); + this.svgMetricsStub.returns({width: 500, height: 500}); + this.getToolboxStub.returns(true); + this.getFlyoutStub.returns(false); + + const viewMetrics = this.metricsManager.getViewMetrics(); + + assertDimensionsMatch(viewMetrics, -SCROLL_X, -SCROLL_Y, 500, 393); + }); + test('Flyout at left', function() { + this.toolboxMetricsStub.returns({}); + this.flyoutMetricsStub.returns({width: 107, height: 0, position: 2}); + this.svgMetricsStub.returns({width: 500, height: 500}); + this.getToolboxStub.returns(false); + this.getFlyoutStub.returns(true); + + const viewMetrics = this.metricsManager.getViewMetrics(); + + assertDimensionsMatch(viewMetrics, -SCROLL_X, -SCROLL_Y, 393, 500); + }); + test('Flyout at top', function() { + this.toolboxMetricsStub.returns({}); + this.flyoutMetricsStub.returns({width: 0, height: 107, position: 0}); + this.svgMetricsStub.returns({width: 500, height: 500}); + this.getToolboxStub.returns(false); + this.getFlyoutStub.returns(true); + + const viewMetrics = this.metricsManager.getViewMetrics(); + + assertDimensionsMatch(viewMetrics, -SCROLL_X, -SCROLL_Y, 500, 393); + }); + test('Get view metrics in workspace coordinates ', function() { + const scale = 2; + const getWorkspaceCoordinates = true; + + this.ws.scale = scale; + this.toolboxMetricsStub.returns({}); + this.flyoutMetricsStub.returns({width: 0, height: 107, position: 0}); + this.svgMetricsStub.returns({width: 500, height: 500}); + this.getToolboxStub.returns(false); + this.getFlyoutStub.returns(true); + + const viewMetrics = + this.metricsManager.getViewMetrics(getWorkspaceCoordinates); + + assertDimensionsMatch( + viewMetrics, -SCROLL_X / scale, -SCROLL_Y / scale, 500 / scale, + 393 / scale); + }); + }); + + suite('getContentMetrics', function() { + test('Empty in ws coordinates', function() { + const ws = makeMockWs(1, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); + }); + test('Empty zoom-in in ws coordinates', function() { + const ws = makeMockWs(2, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); + }); + test('Empty zoom-out in ws coordinates', function() { + const ws = makeMockWs(.5, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); + }); + test('Non empty at origin ws coordinates', function() { + const ws = makeMockWs(1, 0, 0, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + assertDimensionsMatch(contentMetrics, 0, 0, 100, 100); + }); + test('Non empty at origin zoom-in ws coordinates', function() { + const ws = makeMockWs(2, 0, 0, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + assertDimensionsMatch(contentMetrics, 0, 0, 100, 100); + }); + test('Non empty at origin zoom-out ws coordinates', function() { + const ws = makeMockWs(.5, 0, 0, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + assertDimensionsMatch(contentMetrics, 0, 0, 100, 100); + }); + test('Non empty positive origin ws coordinates', function() { + const ws = makeMockWs(1, 10, 10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + assertDimensionsMatch(contentMetrics, 10, 10, 100, 100); + }); + test('Non empty positive origin zoom-in ws coordinates', function() { + const ws = makeMockWs(2, 10, 10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + // 1 ws unit = 2 pixels at this zoom level. + assertDimensionsMatch(contentMetrics, 10, 10, 100, 100); + }); + test('Non empty positive origin zoom-out ws coordinates', function() { + const ws = makeMockWs(.5, 10, 10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + // 1 ws unit = 0.5 pixels at this zoom level. + assertDimensionsMatch(contentMetrics, 10, 10, 100, 100); + }); + test('Non empty negative origin ws coordinates', function() { + const ws = makeMockWs(1, -10, -10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + // Pixel and ws units are the same at default zoom. + assertDimensionsMatch(contentMetrics, -10, -10, 100, 100); + }); + test('Non empty negative origin zoom-in ws coordinates', function() { + const ws = makeMockWs(2, -10, -10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + assertDimensionsMatch(contentMetrics, -10, -10, 100, 100); + }); + test('Non empty negative origin zoom-out ws coordinates', function() { + const ws = makeMockWs(.5, -10, -10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(true); + assertDimensionsMatch(contentMetrics, -10, -10, 100, 100); + }); + test('Empty in pixel coordinates', function() { + const ws = makeMockWs(1, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); + }); + test('Empty zoom-in in pixel coordinates', function() { + const ws = makeMockWs(2, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); + }); + test('Empty zoom-out in pixel coordinates', function() { + const ws = makeMockWs(.5, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + assertDimensionsMatch(contentMetrics, 0, 0, 0, 0); + }); + test('Non empty at origin pixel coordinates', function() { + const ws = makeMockWs(1, 0, 0, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + // Pixel and ws units are the same at default zoom. + assertDimensionsMatch(contentMetrics, 0, 0, 100, 100); + }); + test('Non empty at origin zoom-in pixel coordinates', function() { + const ws = makeMockWs(2, 0, 0, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + // 1 ws unit = 2 pixels at this zoom level. + assertDimensionsMatch(contentMetrics, 0, 0, 200, 200); + }); + test('Non empty at origin zoom-out pixel coordinates', function() { + const ws = makeMockWs(.5, 0, 0, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + // 1 ws unit = 0.5 pixels at this zoom level. + assertDimensionsMatch(contentMetrics, 0, 0, 50, 50); + }); + test('Non empty positive origin pixel coordinates', function() { + const ws = makeMockWs(1, 10, 10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + // Pixel and ws units are the same at default zoom. + assertDimensionsMatch(contentMetrics, 10, 10, 100, 100); + }); + test('Non empty positive origin zoom-in pixel coordinates', function() { + const ws = makeMockWs(2, 10, 10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + // 1 ws unit = 2 pixels at this zoom level. + assertDimensionsMatch(contentMetrics, 20, 20, 200, 200); + }); + test('Non empty positive origin zoom-out pixel coordinates', function() { + const ws = makeMockWs(.5, 10, 10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + // 1 ws unit = 0.5 pixels at this zoom level. + assertDimensionsMatch(contentMetrics, 5, 5, 50, 50); + }); + test('Non empty negative origin pixel coordinates', function() { + const ws = makeMockWs(1, -10, -10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + // Pixel and ws units are the same at default zoom. + assertDimensionsMatch(contentMetrics, -10, -10, 100, 100); + }); + test('Non empty negative origin zoom-in pixel coordinates', function() { + const ws = makeMockWs(2, -10, -10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + // 1 ws unit = 2 pixels at this zoom level. + assertDimensionsMatch(contentMetrics, -20, -20, 200, 200); + }); + test('Non empty negative origin zoom-out pixel coordinates', function() { + const ws = makeMockWs(.5, -10, -10, 100, 100); + const metricsManager = new Blockly.MetricsManager(ws); + const contentMetrics = metricsManager.getContentMetrics(false); + // 1 ws unit = 0.5 pixels at this zoom level. + assertDimensionsMatch(contentMetrics, -5, -5, 50, 50); + }); + }); + + suite('getScrollMetrics', function() { + test('Empty workspace in ws coordinates', function() { + const ws = makeMockWs(1, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; + + const contentMetrics = + metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); + + // Should add half the view width to all sides. + assertDimensionsMatch(contentMetrics, -200, -200, 400, 400); + }); + test('Empty workspace zoom-in in ws coordinates', function() { + const ws = makeMockWs(2, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; + + const contentMetrics = + metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); + + // Should add half the view width to all sides. + assertDimensionsMatch(contentMetrics, -100, -100, 200, 200); + }); + test('Empty workspace zoom-out in ws coordinates', function() { + const ws = makeMockWs(0.5, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; + + const contentMetrics = + metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); + + // Should add half the view width to all sides. + assertDimensionsMatch(contentMetrics, -400, -400, 800, 800); + }); + test('Non empty workspace in ws coordinates', function() { + const ws = makeMockWs(1, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; + + const contentMetrics = + metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); + + // Should add half of the view width to all sides. + assertDimensionsMatch(contentMetrics, -50, -50, 350, 350); + }); + test('Non empty workspace zoom-in in ws coordinates', function() { + const ws = makeMockWs(2, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; + + const contentMetrics = + metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); + + // Should add half of the view width to all sides. + assertDimensionsMatch(contentMetrics, -25, -25, 175, 175); + }); + test('Non empty workspace zoom-out in ws coordinates', function() { + const ws = makeMockWs(0.5, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; + + const contentMetrics = + metricsManager.getScrollMetrics(true, mockViewMetrics, mockContentMetrics); + + // Should add half of the view width to all sides. + assertDimensionsMatch(contentMetrics, -100, -100, 700, 700); + }); + test('Empty workspace in pixel coordinates', function() { + const ws = makeMockWs(1, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; + + const contentMetrics = + metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); + + // Should add half the view width to all sides. + assertDimensionsMatch(contentMetrics, -200, -200, 400, 400); + }); + test('Empty workspace zoom-in in pixel coordinates', function() { + const ws = makeMockWs(2, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; + + const contentMetrics = + metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); + + // Should add half the view width to all sides. + assertDimensionsMatch(contentMetrics, -200, -200, 400, 400); + }); + test('Empty workspace zoom-out in pixel coordinates', function() { + const ws = makeMockWs(0.5, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 0, left: 0, width: 0, height: 0}; + + const contentMetrics = + metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); + + // Should add half the view width to all sides. + assertDimensionsMatch(contentMetrics, -200, -200, 400, 400); + }); + test('Non empty workspace in pixel coordinates', function() { + const ws = makeMockWs(1, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; + + const contentMetrics = + metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); + + // Should add half of the view width to all sides. + assertDimensionsMatch(contentMetrics, -50, -50, 350, 350); + }); + test('Non empty workspace zoom-in in pixel coordinates', function() { + const ws = makeMockWs(2, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; + + const contentMetrics = + metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); + + // Should add half of the view width to all sides. + assertDimensionsMatch(contentMetrics, -50, -50, 350, 350); + }); + test('Non empty workspace zoom-out in pixel coordinates', function() { + const ws = makeMockWs(0.5, 0, 0, 0, 0); + const metricsManager = new Blockly.MetricsManager(ws); + // The location of the viewport. + const mockViewMetrics = {top: 0, left: 0, width: 200, height: 200}; + // The bounding box around the blocks on the screen. + const mockContentMetrics = {top: 100, left: 100, width: 50, height: 50}; + + const contentMetrics = + metricsManager.getScrollMetrics(false, mockViewMetrics, mockContentMetrics); + + // Should add half of the view width to all sides. + assertDimensionsMatch(contentMetrics, -50, -50, 350, 350); + }); + }); +}); diff --git a/tests/mocha/mutator_test.js b/tests/mocha/mutator_test.js index f08d9879c23..10fc05a895d 100644 --- a/tests/mocha/mutator_test.js +++ b/tests/mocha/mutator_test.js @@ -1,72 +1,72 @@ - -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.mutator'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {createRenderedBlock, defineMutatorBlocks} = goog.require('Blockly.test.helpers.blockDefinitions'); - - -suite('Mutator', function() { - setup(function() { - sharedTestSetup.call(this); - }); - - suite('Firing change event', function() { - setup(function() { - this.workspace = Blockly.inject('blocklyDiv', {}); - defineMutatorBlocks(); - }); - - teardown(function() { - Blockly.Extensions.unregister('xml_mutator'); - Blockly.Extensions.unregister('jso_mutator'); - sharedTestTeardown.call(this); - }); - - test('No change', function() { - const block = createRenderedBlock(this.workspace, 'xml_block'); - block.mutator.setVisible(true); - const mutatorWorkspace = block.mutator.getWorkspace(); - // Trigger mutator change listener. - createRenderedBlock(mutatorWorkspace, 'checkbox_block'); - chai.assert.isTrue( - this.eventsFireStub.getCalls().every( - ({args}) => - args[0].type !== Blockly.Events.BLOCK_CHANGE || - args[0].element !== 'mutation')); - }); - - test('XML', function() { - const block = createRenderedBlock(this.workspace, 'xml_block'); - block.mutator.setVisible(true); - const mutatorWorkspace = block.mutator.getWorkspace(); - mutatorWorkspace.getBlockById('check_block') - .setFieldValue('TRUE', 'CHECK'); - chai.assert.isTrue( - this.eventsFireStub.getCalls().some( - ({args}) => - args[0].type === Blockly.Events.BLOCK_CHANGE && - args[0].element === 'mutation' && - /<\/mutation>/.test(args[0].newValue))); - }); - - test('JSO', function() { - const block = createRenderedBlock(this.workspace, 'jso_block'); - block.mutator.setVisible(true); - const mutatorWorkspace = block.mutator.getWorkspace(); - mutatorWorkspace.getBlockById('check_block') - .setFieldValue('TRUE', 'CHECK'); - chai.assert.isTrue( - this.eventsFireStub.getCalls().some( - ({args}) => - args[0].type === Blockly.Events.BLOCK_CHANGE && - args[0].element === 'mutation' && - args[0].newValue === '{"hasInput":true}')); - }); - }); -}); + +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.mutator'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {createRenderedBlock, defineMutatorBlocks} = goog.require('Blockly.test.helpers.blockDefinitions'); + + +suite('Mutator', function() { + setup(function() { + sharedTestSetup.call(this); + }); + + suite('Firing change event', function() { + setup(function() { + this.workspace = Blockly.inject('blocklyDiv', {}); + defineMutatorBlocks(); + }); + + teardown(function() { + Blockly.Extensions.unregister('xml_mutator'); + Blockly.Extensions.unregister('jso_mutator'); + sharedTestTeardown.call(this); + }); + + test('No change', function() { + const block = createRenderedBlock(this.workspace, 'xml_block'); + block.mutator.setVisible(true); + const mutatorWorkspace = block.mutator.getWorkspace(); + // Trigger mutator change listener. + createRenderedBlock(mutatorWorkspace, 'checkbox_block'); + chai.assert.isTrue( + this.eventsFireStub.getCalls().every( + ({args}) => + args[0].type !== Blockly.Events.BLOCK_CHANGE || + args[0].element !== 'mutation')); + }); + + test('XML', function() { + const block = createRenderedBlock(this.workspace, 'xml_block'); + block.mutator.setVisible(true); + const mutatorWorkspace = block.mutator.getWorkspace(); + mutatorWorkspace.getBlockById('check_block') + .setFieldValue('TRUE', 'CHECK'); + chai.assert.isTrue( + this.eventsFireStub.getCalls().some( + ({args}) => + args[0].type === Blockly.Events.BLOCK_CHANGE && + args[0].element === 'mutation' && + /<\/mutation>/.test(args[0].newValue))); + }); + + test('JSO', function() { + const block = createRenderedBlock(this.workspace, 'jso_block'); + block.mutator.setVisible(true); + const mutatorWorkspace = block.mutator.getWorkspace(); + mutatorWorkspace.getBlockById('check_block') + .setFieldValue('TRUE', 'CHECK'); + chai.assert.isTrue( + this.eventsFireStub.getCalls().some( + ({args}) => + args[0].type === Blockly.Events.BLOCK_CHANGE && + args[0].element === 'mutation' && + args[0].newValue === '{"hasInput":true}')); + }); + }); +}); diff --git a/tests/mocha/names_test.js b/tests/mocha/names_test.js index 705a3ff9b62..c58ef36f25b 100644 --- a/tests/mocha/names_test.js +++ b/tests/mocha/names_test.js @@ -1,63 +1,63 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.names'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Names', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - test('Safe name', function() { - const varDB = new Blockly.Names('window,door'); - chai.assert.equal(varDB.safeName_(''), 'unnamed', 'SafeName empty.'); - chai.assert.equal(varDB.safeName_('foobar'), 'foobar', 'SafeName ok.'); - chai.assert.equal(varDB.safeName_('9lives'), 'my_9lives', 'SafeName number start.'); - chai.assert.equal(varDB.safeName_('lives9'), 'lives9', 'SafeName number end.'); - chai.assert.equal(varDB.safeName_('!@#$'), '____', 'SafeName special chars.'); - chai.assert.equal(varDB.safeName_('door'), 'door', 'SafeName reserved.'); - }); - - test('Get name', function() { - const varDB = new Blockly.Names('window,door'); - chai.assert.equal(varDB.getName('Foo.bar', 'var'), 'Foo_bar', 'Name add #1.'); - chai.assert.equal(varDB.getName('Foo.bar', 'var'), 'Foo_bar', 'Name get #1.'); - chai.assert.equal(varDB.getName('Foo bar', 'var'), 'Foo_bar2', 'Name add #2.'); - chai.assert.equal(varDB.getName('foo BAR', 'var'), 'Foo_bar2', 'Name get #2.'); - chai.assert.equal(varDB.getName('door', 'var'), 'door2', 'Name add #3.'); - chai.assert.equal(varDB.getName('Foo.bar', 'proc'), 'Foo_bar3', 'Name add #4.'); - chai.assert.equal(varDB.getName('Foo.bar', 'var'), 'Foo_bar', 'Name get #1b.'); - chai.assert.equal(varDB.getName('Foo.bar', 'proc'), 'Foo_bar3', 'Name get #4.'); - - chai.assert.equal(String(varDB.getUserNames('var')), 'foo.bar,foo bar,door', 'Get var names.'); - chai.assert.equal(String(varDB.getUserNames('proc')), 'foo.bar', 'Get proc names.'); - }); - - test('Get distinct name', function() { - const varDB = new Blockly.Names('window,door'); - chai.assert.equal(varDB.getDistinctName('Foo.bar', 'var'), 'Foo_bar', - 'Name distinct #1.'); - chai.assert.equal(varDB.getDistinctName('Foo.bar', 'var'), 'Foo_bar2', - 'Name distinct #2.'); - chai.assert.equal(varDB.getDistinctName('Foo.bar', 'proc'), 'Foo_bar3', - 'Name distinct #3.'); - varDB.reset(); - chai.assert.equal(varDB.getDistinctName('Foo.bar', 'var'), 'Foo_bar', - 'Name distinct #4.'); - }); - - test('name equals', function() { - chai.assert.isTrue(Blockly.Names.equals('Foo.bar', 'Foo.bar'), 'Name equals #1.'); - chai.assert.isFalse(Blockly.Names.equals('Foo.bar', 'Foo_bar'), 'Name equals #2.'); - chai.assert.isTrue(Blockly.Names.equals('Foo.bar', 'FOO.BAR'), 'Name equals #3.'); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.names'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Names', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + test('Safe name', function() { + const varDB = new Blockly.Names('window,door'); + chai.assert.equal(varDB.safeName_(''), 'unnamed', 'SafeName empty.'); + chai.assert.equal(varDB.safeName_('foobar'), 'foobar', 'SafeName ok.'); + chai.assert.equal(varDB.safeName_('9lives'), 'my_9lives', 'SafeName number start.'); + chai.assert.equal(varDB.safeName_('lives9'), 'lives9', 'SafeName number end.'); + chai.assert.equal(varDB.safeName_('!@#$'), '____', 'SafeName special chars.'); + chai.assert.equal(varDB.safeName_('door'), 'door', 'SafeName reserved.'); + }); + + test('Get name', function() { + const varDB = new Blockly.Names('window,door'); + chai.assert.equal(varDB.getName('Foo.bar', 'var'), 'Foo_bar', 'Name add #1.'); + chai.assert.equal(varDB.getName('Foo.bar', 'var'), 'Foo_bar', 'Name get #1.'); + chai.assert.equal(varDB.getName('Foo bar', 'var'), 'Foo_bar2', 'Name add #2.'); + chai.assert.equal(varDB.getName('foo BAR', 'var'), 'Foo_bar2', 'Name get #2.'); + chai.assert.equal(varDB.getName('door', 'var'), 'door2', 'Name add #3.'); + chai.assert.equal(varDB.getName('Foo.bar', 'proc'), 'Foo_bar3', 'Name add #4.'); + chai.assert.equal(varDB.getName('Foo.bar', 'var'), 'Foo_bar', 'Name get #1b.'); + chai.assert.equal(varDB.getName('Foo.bar', 'proc'), 'Foo_bar3', 'Name get #4.'); + + chai.assert.equal(String(varDB.getUserNames('var')), 'foo.bar,foo bar,door', 'Get var names.'); + chai.assert.equal(String(varDB.getUserNames('proc')), 'foo.bar', 'Get proc names.'); + }); + + test('Get distinct name', function() { + const varDB = new Blockly.Names('window,door'); + chai.assert.equal(varDB.getDistinctName('Foo.bar', 'var'), 'Foo_bar', + 'Name distinct #1.'); + chai.assert.equal(varDB.getDistinctName('Foo.bar', 'var'), 'Foo_bar2', + 'Name distinct #2.'); + chai.assert.equal(varDB.getDistinctName('Foo.bar', 'proc'), 'Foo_bar3', + 'Name distinct #3.'); + varDB.reset(); + chai.assert.equal(varDB.getDistinctName('Foo.bar', 'var'), 'Foo_bar', + 'Name distinct #4.'); + }); + + test('name equals', function() { + chai.assert.isTrue(Blockly.Names.equals('Foo.bar', 'Foo.bar'), 'Name equals #1.'); + chai.assert.isFalse(Blockly.Names.equals('Foo.bar', 'Foo_bar'), 'Name equals #2.'); + chai.assert.isTrue(Blockly.Names.equals('Foo.bar', 'FOO.BAR'), 'Name equals #3.'); + }); +}); diff --git a/tests/mocha/procedures_test.js b/tests/mocha/procedures_test.js index 6d7888a9f2e..76122524736 100644 --- a/tests/mocha/procedures_test.js +++ b/tests/mocha/procedures_test.js @@ -1,1213 +1,1213 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.procedures'); - -goog.require('Blockly'); -goog.require('Blockly.Msg'); -const {assertCallBlockStructure, assertDefBlockStructure, createProcDefBlock, createProcCallBlock} = goog.require('Blockly.test.helpers.procedures'); -const {runSerializationTestSuite} = goog.require('Blockly.test.helpers.serialization'); -const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Procedures', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - this.workspace.createVariable('preCreatedVar', '', 'preCreatedVarId'); - this.workspace.createVariable( - 'preCreatedTypedVar', 'type', 'preCreatedTypedVarId'); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('allProcedures', function() { - test('Only Procedures', function() { - const noReturnBlock = new Blockly.Block(this.workspace, 'procedures_defnoreturn'); - noReturnBlock.setFieldValue('no return', 'NAME'); - const returnBlock = new Blockly.Block(this.workspace, 'procedures_defreturn'); - returnBlock.setFieldValue('return', 'NAME'); - - const allProcedures = Blockly.Procedures.allProcedures(this.workspace); - chai.assert.lengthOf(allProcedures, 2); - - chai.assert.lengthOf(allProcedures[0], 1); - chai.assert.equal(allProcedures[0][0][0], 'no return'); - - chai.assert.lengthOf(allProcedures[1], 1); - chai.assert.equal(allProcedures[1][0][0], 'return'); - }); - test('Multiple Blocks', function() { - const noReturnBlock = new Blockly.Block(this.workspace, 'procedures_defnoreturn'); - noReturnBlock.setFieldValue('no return', 'NAME'); - const returnBlock = new Blockly.Block(this.workspace, 'procedures_defreturn'); - returnBlock.setFieldValue('return', 'NAME'); - const returnBlock2 = new Blockly.Block(this.workspace, 'procedures_defreturn'); - returnBlock2.setFieldValue('return2', 'NAME'); - const _ = new Blockly.Block(this.workspace, 'controls_if'); - - const allProcedures = Blockly.Procedures.allProcedures(this.workspace); - chai.assert.lengthOf(allProcedures, 2); - - chai.assert.lengthOf(allProcedures[0], 1); - chai.assert.equal(allProcedures[0][0][0], 'no return'); - - chai.assert.lengthOf(allProcedures[1], 2); - chai.assert.equal(allProcedures[1][0][0], 'return'); - chai.assert.equal(allProcedures[1][1][0], 'return2'); - }); - test('No Procedures', function() { - const _ = new Blockly.Block(this.workspace, 'controls_if'); - const allProcedures = Blockly.Procedures.allProcedures(this.workspace); - chai.assert.lengthOf(allProcedures, 2); - chai.assert.lengthOf(allProcedures[0], 0, 'No procedures_defnoreturn blocks expected'); - chai.assert.lengthOf(allProcedures[1], 0, 'No procedures_defreturn blocks expected'); - }); - }); - - suite('isNameUsed', function() { - test('No Blocks', function() { - chai.assert.isFalse( - Blockly.Procedures.isNameUsed('name1', this.workspace) - ); - }); - }); - - suite('Enable/Disable', function() { - setup(function() { - const toolbox = document.getElementById('toolbox-categories'); - this.workspaceSvg = Blockly.inject('blocklyDiv', {toolbox: toolbox}); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspaceSvg); - sinon.restore(); - }); - suite('Inherited disabled', function() { - setup(function() { - const dom = Blockly.Xml.textToDom( - '' + - '' + - 'bar' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - 'foo' + - '' + - '' + - 'baz' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); - Blockly.Events.disable(); - Blockly.Xml.appendDomToWorkspace(dom, this.workspaceSvg); - Blockly.Events.enable(); - - this.barDef = this.workspaceSvg.getBlockById('bar-def'); - this.fooDef = this.workspaceSvg.getBlockById('foo-def'); - this.bazDef = this.workspaceSvg.getBlockById('baz-def'); - - this.barCalls = [ - this.workspaceSvg.getBlockById('bar-c1'), - this.workspaceSvg.getBlockById('bar-c2')]; - this.fooCalls = [ - this.workspaceSvg.getBlockById('foo-c1'), - this.workspaceSvg.getBlockById('foo-c2')]; - this.bazCall = this.workspaceSvg.getBlockById('baz-c1'); - }); - test('Nested caller', function() { - this.barDef.setEnabled(false); - - for (let i = 0; i < 2; i++) { - chai.assert.isFalse(this.barCalls[i].isEnabled(), - 'Callers are disabled when their definition is disabled ' + - '(bar call ' + i + ')'); - } - chai.assert.isTrue(this.fooCalls[0].isEnabled(), - 'Callers in definitions are disabled by inheritance'); - chai.assert.isTrue(this.fooCalls[0].getInheritedDisabled(), - 'Callers in definitions are disabled by inheritance'); - - this.fooDef.setEnabled(false); - - for (let i = 0; i < 2; i++) { - chai.assert.isFalse(this.fooCalls[i].isEnabled(), - 'Callers are disabled when their definition is disabled ' + - '(foo call ' + i + ')'); - } - - this.barDef.setEnabled(true); - - for (let i = 0; i < 2; i++) { - chai.assert.isTrue(this.barCalls[i].isEnabled(), - 'Callers are reenabled with their definition ' + - '(bar call ' + i + ')'); - } - chai.assert.isFalse(this.fooCalls[0].isEnabled(), - 'Nested disabled callers remain disabled'); - chai.assert.isFalse(this.fooCalls[0].getInheritedDisabled(), - 'Nested disabled callers remain disabled, not by inheritance'); - }); - test('Caller in return', function() { - this.bazDef.setEnabled(false); - - chai.assert.isFalse(this.bazCall.isEnabled(), - 'Caller is disabled with its definition'); - - chai.assert.isTrue(this.barCalls[1].isEnabled(), - 'Caller in the return is disabled by inheritance'); - chai.assert.isTrue(this.barCalls[1].getInheritedDisabled(), - 'Caller in the return is disabled by inheritance'); - - this.barDef.setEnabled(false); - - for (let i = 0; i < 2; i++) { - chai.assert.isFalse(this.barCalls[i].isEnabled(), - 'Callers are disabled when their definition is disabled ' + - '(bar call ' + i + ')'); - } - - this.bazDef.setEnabled(true); - - chai.assert.isFalse(this.barCalls[1].isEnabled(), - 'Caller in return remains disabled'); - chai.assert.isFalse(this.barCalls[1].getInheritedDisabled(), - 'Caller in return remains disabled, not by inheritance'); - }); - }); - }); - - suite('Multiple block serialization', function() { - function assertDefAndCallBlocks(workspace, noReturnNames, returnNames, hasCallers) { - const allProcedures = Blockly.Procedures.allProcedures(workspace); - const defNoReturnBlocks = allProcedures[0]; - chai.assert.lengthOf(defNoReturnBlocks, noReturnNames.length); - for (let i = 0; i < noReturnNames.length; i++) { - const expectedName = noReturnNames[i]; - chai.assert.equal(defNoReturnBlocks[i][0], expectedName); - if (hasCallers) { - const callers = - Blockly.Procedures.getCallers(expectedName, workspace); - chai.assert.lengthOf(callers, 1); - } - } - const defReturnBlocks = allProcedures[1]; - chai.assert.lengthOf(defReturnBlocks, returnNames.length); - for (let i = 0; i < returnNames.length; i++) { - const expectedName = returnNames[i]; - chai.assert.equal(defReturnBlocks[i][0], expectedName); - if (hasCallers) { - const callers = - Blockly.Procedures.getCallers(expectedName, workspace); - chai.assert.lengthOf(callers, 1); - } - } - - // Expecting def and caller blocks are the only blocks on workspace - let expectedCount = noReturnNames.length + returnNames.length; - if (hasCallers) { - expectedCount *= 2; - } - const blocks = workspace.getAllBlocks(false); - chai.assert.lengthOf(blocks, expectedCount); - } - suite('no name renamed to unnamed', function() { - test('defnoreturn and defreturn', function() { - const xml = Blockly.Xml.textToDom(` - - - - `); - Blockly.Xml.domToWorkspace(xml, this.workspace); - assertDefAndCallBlocks( - this.workspace, ['unnamed'], ['unnamed2'], false); - }); - test('defreturn and defnoreturn', function() { - const xml = Blockly.Xml.textToDom(` - - - - `); - Blockly.Xml.domToWorkspace(xml, this.workspace); - assertDefAndCallBlocks( - this.workspace, ['unnamed2'], ['unnamed'], false); - }); - test('callnoreturn (no def in xml)', function() { - const xml = Blockly.Xml.textToDom(` - - - `); - Blockly.Xml.domToWorkspace(xml, this.workspace); - assertDefAndCallBlocks( - this.workspace, ['unnamed'], [], true); - }); - test('callreturn (no def in xml)', function() { - const xml = Blockly.Xml.textToDom(` - - - `); - Blockly.Xml.domToWorkspace(xml, this.workspace); - assertDefAndCallBlocks( - this.workspace, [], ['unnamed'], true); - }); - test('callnoreturn and callreturn (no def in xml)', function() { - const xml = Blockly.Xml.textToDom(` - - - - `); - Blockly.Xml.domToWorkspace(xml, this.workspace); - assertDefAndCallBlocks( - this.workspace, ['unnamed'], ['unnamed2'], true); - }); - test('callreturn and callnoreturn (no def in xml)', function() { - const xml = Blockly.Xml.textToDom(` - - - - `); - Blockly.Xml.domToWorkspace(xml, this.workspace); - assertDefAndCallBlocks( - this.workspace, ['unnamed2'], ['unnamed'], true); - }); - }); - suite('caller param mismatch', function() { - setup(function() { - this.TEST_VAR_ID = 'test-id'; - this.genUidStub = createGenUidStubWithReturns(this.TEST_VAR_ID); - }); - - test('callreturn with missing args', function() { - const defBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` - - do something - - - - - `), this.workspace); - const callBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ), this.workspace); - assertDefBlockStructure(defBlock, true, ['x'], ['arg']); - assertCallBlockStructure(callBlock, [], [], 'do something2'); - }); - test('callreturn with bad args', function() { - const defBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` - - do something - - - - - `), this.workspace); - const callBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` - - - - - - `), this.workspace); - assertDefBlockStructure(defBlock, true, ['x'], ['arg']); - assertCallBlockStructure( - callBlock, ['y'], [this.TEST_VAR_ID], 'do something2'); - }); - test('callnoreturn with missing args', function() { - const defBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` - - do something - - - - - `), this.workspace); - const callBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ), this.workspace); - assertDefBlockStructure(defBlock, false, ['x'], ['arg']); - assertCallBlockStructure(callBlock, [], [], 'do something2'); - }); - test('callnoreturn with bad args', function() { - const defBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` - - do something - - - - - `), this.workspace); - const callBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` - - - - - - `), this.workspace); - assertDefBlockStructure(defBlock, false, ['x'], ['arg']); - assertCallBlockStructure( - callBlock, ['y'], [this.TEST_VAR_ID], 'do something2'); - }); - }); - }); - - suite('getDefinition - Modified cases', function() { - setup(function() { - Blockly.Blocks['new_proc'] = { - init: function() { }, - getProcedureDef: function() { - return [this.name, [], false]; - }, - name: 'test', - }; - - Blockly.Blocks['nested_proc'] = { - init: function() { - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - }, - getProcedureDef: function() { - return [this.name, [], false]; - }, - name: 'test', - }; - }); - - teardown(function() { - delete Blockly.Blocks['new_proc']; - delete Blockly.Blocks['nested_proc']; - }); - - test('Custom procedure block', function() { - // Do not require procedures to be the built-in procedures. - const defBlock = new Blockly.Block(this.workspace, 'new_proc'); - const def = Blockly.Procedures.getDefinition('test', this.workspace); - chai.assert.equal(def, defBlock); - }); - - test('Stacked procedures', function() { - const blockA = new Blockly.Block(this.workspace, 'nested_proc'); - const blockB = new Blockly.Block(this.workspace, 'nested_proc'); - blockA.name = 'a'; - blockB.name = 'b'; - blockA.nextConnection.connect(blockB.previousConnection); - const def = Blockly.Procedures.getDefinition('b', this.workspace); - chai.assert.equal(def, blockB); - }); - }); - - const testSuites = [ - {title: 'procedures_defreturn', hasReturn: true, - defType: 'procedures_defreturn', callType: 'procedures_callreturn'}, - {title: 'procedures_defnoreturn', hasReturn: false, - defType: 'procedures_defnoreturn', callType: 'procedures_callnoreturn'}, - ]; - - testSuites.forEach((testSuite) => { - suite(testSuite.title, function() { - suite('Structure', function() { - setup(function() { - this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); - this.defBlock.setFieldValue('proc name', 'NAME'); - }); - test('Definition block', function() { - assertDefBlockStructure(this.defBlock, testSuite.hasReturn); - }); - - test('Call block', function() { - this.callBlock = new Blockly.Block( - this.workspace, testSuite.callType); - this.callBlock.setFieldValue('proc name', 'NAME'); - assertCallBlockStructure(this.callBlock); - }); - }); - suite('isNameUsed', function() { - setup(function() { - this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); - this.defBlock.setFieldValue('proc name', 'NAME'); - this.callBlock = new Blockly.Block( - this.workspace, testSuite.callType); - this.callBlock.setFieldValue('proc name', 'NAME'); - }); - test('True', function() { - chai.assert.isTrue( - Blockly.Procedures.isNameUsed('proc name', this.workspace)); - }); - test('False', function() { - chai.assert.isFalse( - Blockly.Procedures.isNameUsed('unused proc name', this.workspace)); - }); - }); - suite('rename', function() { - setup(function() { - this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); - this.defBlock.setFieldValue('proc name', 'NAME'); - this.callBlock = new Blockly.Block( - this.workspace, testSuite.callType); - this.callBlock.setFieldValue('proc name', 'NAME'); - sinon.stub(this.defBlock.getField('NAME'), 'resizeEditor_'); - }); - test('Simple, Programmatic', function() { - this.defBlock.setFieldValue( - this.defBlock.getFieldValue('NAME') + '2', - 'NAME' - ); - chai.assert.equal( - this.defBlock.getFieldValue('NAME'), 'proc name2'); - chai.assert.equal( - this.callBlock.getFieldValue('NAME'), 'proc name2'); - }); - test('Simple, Input', function() { - const defInput = this.defBlock.getField('NAME'); - defInput.htmlInput_ = Object.create(null); - defInput.htmlInput_.oldValue_ = 'proc name'; - defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; - - defInput.htmlInput_.value = defInput.htmlInput_.oldValue_ + '2'; - defInput.onHtmlInputChange_(null); - chai.assert.equal( - this.defBlock.getFieldValue('NAME'), 'proc name2'); - chai.assert.equal( - this.callBlock.getFieldValue('NAME'), 'proc name2'); - }); - test('lower -> CAPS', function() { - const defInput = this.defBlock.getField('NAME'); - defInput.htmlInput_ = Object.create(null); - defInput.htmlInput_.oldValue_ = 'proc name'; - defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; - - defInput.htmlInput_.value = 'PROC NAME'; - defInput.onHtmlInputChange_(null); - chai.assert.equal( - this.defBlock.getFieldValue('NAME'), 'PROC NAME'); - chai.assert.equal( - this.callBlock.getFieldValue('NAME'), 'PROC NAME'); - }); - test('CAPS -> lower', function() { - this.defBlock.setFieldValue('PROC NAME', 'NAME'); - this.callBlock.setFieldValue('PROC NAME', 'NAME'); - const defInput = this.defBlock.getField('NAME'); - defInput.htmlInput_ = Object.create(null); - defInput.htmlInput_.oldValue_ = 'PROC NAME'; - defInput.htmlInput_.untypedDefaultValue_ = 'PROC NAME'; - - defInput.htmlInput_.value = 'proc name'; - defInput.onHtmlInputChange_(null); - chai.assert.equal( - this.defBlock.getFieldValue('NAME'), 'proc name'); - chai.assert.equal( - this.callBlock.getFieldValue('NAME'), 'proc name'); - }); - test('Whitespace', function() { - const defInput = this.defBlock.getField('NAME'); - defInput.htmlInput_ = Object.create(null); - defInput.htmlInput_.oldValue_ = 'proc name'; - defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; - - defInput.htmlInput_.value = defInput.htmlInput_.oldValue_ + ' '; - defInput.onHtmlInputChange_(null); - chai.assert.equal( - this.defBlock.getFieldValue('NAME'), 'proc name'); - chai.assert.equal( - this.callBlock.getFieldValue('NAME'), 'proc name'); - }); - test('Whitespace then Text', function() { - const defInput = this.defBlock.getField('NAME'); - defInput.htmlInput_ = Object.create(null); - defInput.htmlInput_.oldValue_ = 'proc name'; - defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; - - defInput.htmlInput_.value = defInput.htmlInput_.oldValue_ + ' '; - defInput.onHtmlInputChange_(null); - defInput.htmlInput_.value = defInput.htmlInput_.oldValue_ + '2'; - defInput.onHtmlInputChange_(null); - chai.assert.equal( - this.defBlock.getFieldValue('NAME'), 'proc name 2'); - chai.assert.equal( - this.callBlock.getFieldValue('NAME'), 'proc name 2'); - }); - test('Set Empty', function() { - const defInput = this.defBlock.getField('NAME'); - defInput.htmlInput_ = Object.create(null); - defInput.htmlInput_.oldValue_ = 'proc name'; - defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; - - defInput.htmlInput_.value = ''; - defInput.onHtmlInputChange_(null); - chai.assert.equal( - this.defBlock.getFieldValue('NAME'), - Blockly.Msg['UNNAMED_KEY']); - chai.assert.equal( - this.callBlock.getFieldValue('NAME'), - Blockly.Msg['UNNAMED_KEY']); - }); - test('Set Empty, and Create New', function() { - const defInput = this.defBlock.getField('NAME'); - defInput.htmlInput_ = Object.create(null); - defInput.htmlInput_.oldValue_ = 'proc name'; - defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; - - defInput.htmlInput_.value = ''; - defInput.onHtmlInputChange_(null); - const newDefBlock = new Blockly.Block(this.workspace, testSuite.defType); - newDefBlock.setFieldValue('new name', 'NAME'); - chai.assert.equal( - this.defBlock.getFieldValue('NAME'), - Blockly.Msg['UNNAMED_KEY']); - chai.assert.equal( - this.callBlock.getFieldValue('NAME'), - Blockly.Msg['UNNAMED_KEY']); - }); - }); - suite('getCallers', function() { - setup(function() { - this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); - this.defBlock.setFieldValue('proc name', 'NAME'); - this.callBlock = new Blockly.Block( - this.workspace, testSuite.callType); - this.callBlock.setFieldValue('proc name', 'NAME'); - }); - test('Simple', function() { - const callers = - Blockly.Procedures.getCallers('proc name', this.workspace); - chai.assert.equal(callers.length, 1); - chai.assert.equal(callers[0], this.callBlock); - }); - test('Multiple Callers', function() { - const caller2 = new Blockly.Block(this.workspace, testSuite.callType); - caller2.setFieldValue('proc name', 'NAME'); - const caller3 = new Blockly.Block(this.workspace, testSuite.callType); - caller3.setFieldValue('proc name', 'NAME'); - - const callers = - Blockly.Procedures.getCallers('proc name', this.workspace); - chai.assert.equal(callers.length, 3); - chai.assert.equal(callers[0], this.callBlock); - chai.assert.equal(callers[1], caller2); - chai.assert.equal(callers[2], caller3); - }); - test('Multiple Procedures', function() { - const def2 = new Blockly.Block(this.workspace, testSuite.defType); - def2.setFieldValue('proc name2', 'NAME'); - const caller2 = new Blockly.Block(this.workspace, testSuite.callType); - caller2.setFieldValue('proc name2', 'NAME'); - - const callers = - Blockly.Procedures.getCallers('proc name', this.workspace); - chai.assert.equal(callers.length, 1); - chai.assert.equal(callers[0], this.callBlock); - }); - // This can occur if you: - // 1) Create an uppercase definition and call block. - // 2) Delete both blocks. - // 3) Create a lowercase definition and call block. - // 4) Retrieve the uppercase call block from the trashcan. - // (And vise versa for creating lowercase blocks first) - // When converted to code all function names will be lowercase, so a - // caller should still be returned for a differently-cased procedure. - test('Call Different Case', function() { - this.callBlock.setFieldValue('PROC NAME', 'NAME'); - const callers = - Blockly.Procedures.getCallers('proc name', this.workspace); - chai.assert.equal(callers.length, 1); - chai.assert.equal(callers[0], this.callBlock); - }); - test('Multiple Workspaces', function() { - const workspace = new Blockly.Workspace(); - try { - const def2 = new Blockly.Block(workspace, testSuite.defType); - def2.setFieldValue('proc name', 'NAME'); - const caller2 = new Blockly.Block(workspace, testSuite.callType); - caller2.setFieldValue('proc name', 'NAME'); - - let callers = - Blockly.Procedures.getCallers('proc name', this.workspace); - chai.assert.equal(callers.length, 1); - chai.assert.equal(callers[0], this.callBlock); - - callers = Blockly.Procedures.getCallers('proc name', workspace); - chai.assert.equal(callers.length, 1); - chai.assert.equal(callers[0], caller2); - } finally { - workspaceTeardown.call(this, workspace); - } - }); - }); - suite('getDefinition', function() { - setup(function() { - this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); - this.defBlock.setFieldValue('proc name', 'NAME'); - this.callBlock = new Blockly.Block( - this.workspace, testSuite.callType); - this.callBlock.setFieldValue('proc name', 'NAME'); - }); - test('Simple', function() { - const def = - Blockly.Procedures.getDefinition('proc name', this.workspace); - chai.assert.equal(def, this.defBlock); - }); - test('Multiple Procedures', function() { - const def2 = new Blockly.Block(this.workspace, testSuite.defType); - def2.setFieldValue('proc name2', 'NAME'); - const caller2 = new Blockly.Block(this.workspace, testSuite.callType); - caller2.setFieldValue('proc name2', 'NAME'); - - const def = - Blockly.Procedures.getDefinition('proc name', this.workspace); - chai.assert.equal(def, this.defBlock); - }); - test('Multiple Workspaces', function() { - const workspace = new Blockly.Workspace(); - try { - const def2 = new Blockly.Block(workspace, testSuite.defType); - def2.setFieldValue('proc name', 'NAME'); - const caller2 = new Blockly.Block(workspace, testSuite.callType); - caller2.setFieldValue('proc name', 'NAME'); - - let def = - Blockly.Procedures.getDefinition('proc name', this.workspace); - chai.assert.equal(def, this.defBlock); - - def = Blockly.Procedures.getDefinition('proc name', workspace); - chai.assert.equal(def, def2); - } finally { - workspaceTeardown.call(this, workspace); - } - }); - }); - - suite('Enable/Disable', function() { - setup(function() { - const toolbox = document.getElementById('toolbox-categories'); - this.workspaceSvg = Blockly.inject('blocklyDiv', {toolbox: toolbox}); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspaceSvg); - }); - const domText = (testSuite.defType === 'procedures_defreturn') ? - ('' + - '' + - 'bar' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '') : - ('' + - '' + - 'bar' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); - setup(function() { - const dom = Blockly.Xml.textToDom(domText); - - Blockly.Xml.appendDomToWorkspace(dom, this.workspaceSvg); - this.barDef = this.workspaceSvg.getBlockById('bar-def'); - this.barCalls = [ - this.workspaceSvg.getBlockById('bar-c1'), - this.workspaceSvg.getBlockById('bar-c2'), - ]; - }); - - test('Set disabled updates callers', function() { - this.workspaceSvg.clearUndo(); - Blockly.Events.setGroup('g1'); - this.barDef.setEnabled(false); - Blockly.Events.setGroup(false); - - for (let i = 0; i < 2; i++) { - chai.assert.isFalse(this.barCalls[i].isEnabled(), - 'Callers are disabled when their definition is disabled (call ' + - i + ')'); - } - const firedEvents = this.workspaceSvg.undoStack_; - chai.assert.equal(firedEvents.length, 3, - 'An event was fired for the definition and each caller'); - for (let i = 0; i < 3; i++) { - chai.assert.equal(firedEvents[i].group, 'g1', - 'Disable events are in the same group (event ' + i + ')'); - } - - this.workspaceSvg.clearUndo(); - Blockly.Events.setGroup('g2'); - this.barDef.setEnabled(true); - Blockly.Events.setGroup(false); - - for (let i = 0; i < 2; i++) { - chai.assert.isTrue(this.barCalls[i].isEnabled(), - 'Callers are enabled when their definition is enabled (call ' + - i + ')'); - } - chai.assert.equal(firedEvents.length, 3, - 'An event was fired for the definition and each caller'); - for (let i = 0; i < 3; i++) { - chai.assert.equal(firedEvents[i].group, 'g2', - 'Enable events are in the same group (event ' + i + ')'); - } - }); - test('Set disabled updates callers while remembering old caller state', function() { - this.barCalls[0].setEnabled(false); - this.workspaceSvg.clearUndo(); - Blockly.Events.setGroup('g1'); - this.barDef.setEnabled(false); - Blockly.Events.setGroup(false); - - for (let i = 0; i < 2; i++) { - chai.assert.isFalse(this.barCalls[i].isEnabled(), - 'Callers are disabled when their definition is disabled (call ' + - i + ')'); - } - const firedEvents = this.workspaceSvg.undoStack_; - chai.assert.equal(firedEvents.length, 2, - 'An event was fired for the definition and the enabled caller'); - for (let i = 0; i < 2; i++) { - chai.assert.equal(firedEvents[i].group, 'g1', - 'Disable events are in the same group (event ' + i + ')'); - } - - this.workspaceSvg.clearUndo(); - Blockly.Events.setGroup('g2'); - this.barDef.setEnabled(true); - Blockly.Events.setGroup(false); - - chai.assert.isFalse(this.barCalls[0].isEnabled(), - 'Caller remains in disabled state when the definition is enabled'); - chai.assert.isTrue(this.barCalls[1].isEnabled(), - 'Caller returns to previous enabled state when the definition is enabled'); - chai.assert.equal(firedEvents.length, 2, - 'An event was fired for the definition and the enabled caller'); - for (let i = 0; i < 2; i++) { - chai.assert.equal(firedEvents[i].group, 'g2', - 'Enable events are in the same group (event ' + i + ')'); - } - }); - }); - suite('Mutation', function() { - setup(function() { - this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); - this.defBlock.setFieldValue('proc name', 'NAME'); - this.callBlock = new Blockly.Block( - this.workspace, testSuite.callType); - this.callBlock.setFieldValue('proc name', 'NAME'); - this.findParentStub = sinon.stub(Blockly.Mutator, 'findParentWs') - .returns(this.workspace); - }); - teardown(function() { - this.findParentStub.restore(); - }); - suite('Composition', function() { - suite('Statements', function() { - function setStatementValue(mainWorkspace, defBlock, value) { - const mutatorWorkspace = new Blockly.Workspace( - new Blockly.Options({ - parentWorkspace: mainWorkspace, - })); - defBlock.decompose(mutatorWorkspace); - const containerBlock = mutatorWorkspace.getTopBlocks()[0]; - const statementField = containerBlock.getField('STATEMENTS'); - statementField.setValue(value); - defBlock.compose(containerBlock); - } - if (testSuite.defType === 'procedures_defreturn') { - test('Has Statements', function() { - setStatementValue(this.workspace, this.defBlock, true); - chai.assert.isTrue(this.defBlock.hasStatements_); - }); - test('Has No Statements', function() { - setStatementValue(this.workspace, this.defBlock, false); - chai.assert.isFalse(this.defBlock.hasStatements_); - }); - test('Saving Statements', function() { - const blockXml = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - '' - ); - const defBlock = Blockly.Xml.domToBlock(blockXml, this.workspace); - setStatementValue(this.workspace, defBlock, false); - chai.assert.isNull(defBlock.getInput('STACK')); - setStatementValue(this.workspace, defBlock, true); - chai.assert.isNotNull(defBlock.getInput('STACK')); - const statementBlocks = defBlock.getChildren(); - chai.assert.equal(statementBlocks.length, 1); - const block = statementBlocks[0]; - chai.assert.equal(block.type, 'procedures_ifreturn'); - chai.assert.equal(block.id, 'test'); - }); - } - }); - suite('Untyped Arguments', function() { - function createMutator(argArray) { - this.mutatorWorkspace = new Blockly.Workspace( - new Blockly.Options({ - parentWorkspace: this.workspace, - })); - this.containerBlock = this.defBlock.decompose(this.mutatorWorkspace); - this.connection = this.containerBlock.getInput('STACK').connection; - for (let i = 0; i < argArray.length; i++) { - this.argBlock = new Blockly.Block( - this.mutatorWorkspace, 'procedures_mutatorarg'); - this.argBlock.setFieldValue(argArray[i], 'NAME'); - this.connection.connect(this.argBlock.previousConnection); - this.connection = this.argBlock.nextConnection; - } - this.defBlock.compose(this.containerBlock); - } - function assertArgs(argArray) { - chai.assert.equal(this.defBlock.arguments_.length, argArray.length); - for (let i = 0; i < argArray.length; i++) { - chai.assert.equal(this.defBlock.arguments_[i], argArray[i]); - } - chai.assert.equal(this.callBlock.arguments_.length, argArray.length); - for (let i = 0; i < argArray.length; i++) { - chai.assert.equal(this.callBlock.arguments_[i], argArray[i]); - } - } - test('Simple Add Arg', function() { - const args = ['arg1']; - createMutator.call(this, args); - assertArgs.call(this, args); - }); - test('Multiple Args', function() { - const args = ['arg1', 'arg2', 'arg3']; - createMutator.call(this, args); - assertArgs.call(this, args); - }); - test('Simple Change Arg', function() { - createMutator.call(this, ['arg1']); - this.argBlock.setFieldValue('arg2', 'NAME'); - this.defBlock.compose(this.containerBlock); - assertArgs.call(this, ['arg2']); - }); - test('lower -> CAPS', function() { - createMutator.call(this, ['arg']); - this.argBlock.setFieldValue('ARG', 'NAME'); - this.defBlock.compose(this.containerBlock); - assertArgs.call(this, ['ARG']); - }); - test('CAPS -> lower', function() { - createMutator.call(this, ['ARG']); - this.argBlock.setFieldValue('arg', 'NAME'); - this.defBlock.compose(this.containerBlock); - assertArgs.call(this, ['arg']); - }); - // Test case for #1958 - test('Set Arg Empty', function() { - const args = ['arg1']; - createMutator.call(this, args); - this.argBlock.setFieldValue('', 'NAME'); - this.defBlock.compose(this.containerBlock); - assertArgs.call(this, args); - }); - test('Whitespace', function() { - const args = ['arg1']; - createMutator.call(this, args); - this.argBlock.setFieldValue(' ', 'NAME'); - this.defBlock.compose(this.containerBlock); - assertArgs.call(this, args); - }); - test('Whitespace and Text', function() { - createMutator.call(this, ['arg1']); - this.argBlock.setFieldValue(' text ', 'NAME'); - this.defBlock.compose(this.containerBlock); - assertArgs.call(this, ['text']); - }); - test('<>', function() { - const args = ['<>']; - createMutator.call(this, args); - assertArgs.call(this, args); - }); - }); - }); - suite('Decomposition', function() { - suite('Statements', function() { - if (testSuite.defType === 'procedures_defreturn') { - test('Has Statement Input', function() { - const mutatorWorkspace = new Blockly.Workspace( - new Blockly.Options({ - parentWorkspace: this.workspace, - })); - this.defBlock.decompose(mutatorWorkspace); - const statementInput = mutatorWorkspace.getTopBlocks()[0] - .getInput('STATEMENT_INPUT'); - chai.assert.isNotNull(statementInput); - }); - test('Has Statements', function() { - this.defBlock.hasStatements_ = true; - const mutatorWorkspace = new Blockly.Workspace( - new Blockly.Options({ - parentWorkspace: this.workspace, - })); - this.defBlock.decompose(mutatorWorkspace); - const statementValue = mutatorWorkspace.getTopBlocks()[0] - .getField('STATEMENTS').getValueBoolean(); - chai.assert.isTrue(statementValue); - }); - test('No Has Statements', function() { - this.defBlock.hasStatements_ = false; - const mutatorWorkspace = new Blockly.Workspace( - new Blockly.Options({ - parentWorkspace: this.workspace, - })); - this.defBlock.decompose(mutatorWorkspace); - const statementValue = mutatorWorkspace.getTopBlocks()[0] - .getField('STATEMENTS').getValueBoolean(); - chai.assert.isFalse(statementValue); - }); - } else { - test('Has no Statement Input', function() { - const mutatorWorkspace = new Blockly.Workspace( - new Blockly.Options({ - parentWorkspace: this.workspace, - })); - this.defBlock.decompose(mutatorWorkspace); - const statementInput = mutatorWorkspace.getTopBlocks()[0] - .getInput('STATEMENT_INPUT'); - chai.assert.isNull(statementInput); - }); - } - }); - suite('Untyped Arguments', function() { - function assertArguments(argumentsArray) { - this.defBlock.arguments_ = argumentsArray; - const mutatorWorkspace = new Blockly.Workspace( - new Blockly.Options({ - parentWorkspace: this.workspace, - })); - this.defBlock.decompose(mutatorWorkspace); - const argBlocks = mutatorWorkspace.getBlocksByType('procedures_mutatorarg'); - chai.assert.equal(argBlocks.length, argumentsArray.length); - - for (let i = 0; i < argumentsArray.length; i++) { - const argString = argumentsArray[i]; - const argBlockValue = argBlocks[i].getFieldValue('NAME'); - chai.assert.equal(argBlockValue, argString); - } - } - test('Simple Single Arg', function() { - assertArguments.call(this, ['arg']); - }); - test('Multiple Args', function() { - assertArguments.call(this, ['arg1', 'arg2']); - }); - test('<>', function() { - assertArguments.call(this, ['<>']); - }); - }); - }); - }); - /** - * Test cases for serialization tests. - * @type {Array} - */ - const testCases = [ - { - title: 'Minimal definition', - xml: '', - expectedXml: - '\n' + - ' unnamed\n' + - '', - assertBlockStructure: - (block) => { - assertDefBlockStructure(block, testSuite.hasReturn); - }, - }, - { - title: 'Common definition', - xml: - '' + - ' do something' + - '', - expectedXml: - '\n' + - ' do something\n' + - '', - assertBlockStructure: - (block) => { - assertDefBlockStructure(block, testSuite.hasReturn); - }, - }, - { - title: 'With vars definition', - xml: - '\n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' do something\n' + - '', - expectedXml: - '\n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' do something\n' + - '', - assertBlockStructure: - (block) => { - assertDefBlockStructure( - block, testSuite.hasReturn, ['x', 'y'], ['arg1', 'arg2']); - }, - }, - { - title: 'With pre-created vars definition', - xml: - '\n' + - ' \n' + - ' \n' + - ' \n' + - ' do something\n' + - '', - expectedXml: - '\n' + - ' \n' + - ' \n' + - ' \n' + - ' do something\n' + - '', - assertBlockStructure: - (block) => { - assertDefBlockStructure(block, testSuite.hasReturn, - ['preCreatedVar'], ['preCreatedVarId']); - }, - }, - { - title: 'With pre-created typed vars definition', - xml: - '\n' + - ' \n' + - ' \n' + - ' \n' + - ' do something\n' + - '', - expectedXml: - '\n' + - ' \n' + - ' \n' + - ' \n' + - ' do something\n' + - '', - assertBlockStructure: - (block) => { - assertDefBlockStructure(block, testSuite.hasReturn, - ['preCreatedTypedVar'], ['preCreatedTypedVarId']); - }, - }, - { - title: 'No statements definition', - xml: - '\n' + - ' \n' + - ' do something\n' + - '', - expectedXml: - '\n' + - ' \n' + - ' do something\n' + - '', - assertBlockStructure: - (block) => { - assertDefBlockStructure(block, true, [], [], false); - }, - }, - { - title: 'Minimal caller', - xml: '', - expectedXml: - '\n' + - ' \n' + - '', - assertBlockStructure: - (block) => { - assertCallBlockStructure(block); - }, - }, - { - title: 'Common caller', - xml: - '\n' + - ' \n' + - '', - expectedXml: - '\n' + - ' \n' + - '', - assertBlockStructure: - (block) => { - assertCallBlockStructure(block); - }, - }, - { - title: 'With pre-created vars caller', - xml: - '\n' + - ' \n' + - ' \n' + - ' \n' + - '', - expectedXml: - '\n' + - ' \n' + - ' \n' + - ' \n' + - '', - assertBlockStructure: - (block) => { - assertCallBlockStructure(block, ['preCreatedVar'], ['preCreatedVarId']); - }, - }, - ]; - runSerializationTestSuite(testCases); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.procedures'); + +goog.require('Blockly'); +goog.require('Blockly.Msg'); +const {assertCallBlockStructure, assertDefBlockStructure, createProcDefBlock, createProcCallBlock} = goog.require('Blockly.test.helpers.procedures'); +const {runSerializationTestSuite} = goog.require('Blockly.test.helpers.serialization'); +const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Procedures', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + this.workspace.createVariable('preCreatedVar', '', 'preCreatedVarId'); + this.workspace.createVariable( + 'preCreatedTypedVar', 'type', 'preCreatedTypedVarId'); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('allProcedures', function() { + test('Only Procedures', function() { + const noReturnBlock = new Blockly.Block(this.workspace, 'procedures_defnoreturn'); + noReturnBlock.setFieldValue('no return', 'NAME'); + const returnBlock = new Blockly.Block(this.workspace, 'procedures_defreturn'); + returnBlock.setFieldValue('return', 'NAME'); + + const allProcedures = Blockly.Procedures.allProcedures(this.workspace); + chai.assert.lengthOf(allProcedures, 2); + + chai.assert.lengthOf(allProcedures[0], 1); + chai.assert.equal(allProcedures[0][0][0], 'no return'); + + chai.assert.lengthOf(allProcedures[1], 1); + chai.assert.equal(allProcedures[1][0][0], 'return'); + }); + test('Multiple Blocks', function() { + const noReturnBlock = new Blockly.Block(this.workspace, 'procedures_defnoreturn'); + noReturnBlock.setFieldValue('no return', 'NAME'); + const returnBlock = new Blockly.Block(this.workspace, 'procedures_defreturn'); + returnBlock.setFieldValue('return', 'NAME'); + const returnBlock2 = new Blockly.Block(this.workspace, 'procedures_defreturn'); + returnBlock2.setFieldValue('return2', 'NAME'); + const _ = new Blockly.Block(this.workspace, 'controls_if'); + + const allProcedures = Blockly.Procedures.allProcedures(this.workspace); + chai.assert.lengthOf(allProcedures, 2); + + chai.assert.lengthOf(allProcedures[0], 1); + chai.assert.equal(allProcedures[0][0][0], 'no return'); + + chai.assert.lengthOf(allProcedures[1], 2); + chai.assert.equal(allProcedures[1][0][0], 'return'); + chai.assert.equal(allProcedures[1][1][0], 'return2'); + }); + test('No Procedures', function() { + const _ = new Blockly.Block(this.workspace, 'controls_if'); + const allProcedures = Blockly.Procedures.allProcedures(this.workspace); + chai.assert.lengthOf(allProcedures, 2); + chai.assert.lengthOf(allProcedures[0], 0, 'No procedures_defnoreturn blocks expected'); + chai.assert.lengthOf(allProcedures[1], 0, 'No procedures_defreturn blocks expected'); + }); + }); + + suite('isNameUsed', function() { + test('No Blocks', function() { + chai.assert.isFalse( + Blockly.Procedures.isNameUsed('name1', this.workspace) + ); + }); + }); + + suite('Enable/Disable', function() { + setup(function() { + const toolbox = document.getElementById('toolbox-categories'); + this.workspaceSvg = Blockly.inject('blocklyDiv', {toolbox: toolbox}); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspaceSvg); + sinon.restore(); + }); + suite('Inherited disabled', function() { + setup(function() { + const dom = Blockly.Xml.textToDom( + '' + + '' + + 'bar' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'foo' + + '' + + '' + + 'baz' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); + Blockly.Events.disable(); + Blockly.Xml.appendDomToWorkspace(dom, this.workspaceSvg); + Blockly.Events.enable(); + + this.barDef = this.workspaceSvg.getBlockById('bar-def'); + this.fooDef = this.workspaceSvg.getBlockById('foo-def'); + this.bazDef = this.workspaceSvg.getBlockById('baz-def'); + + this.barCalls = [ + this.workspaceSvg.getBlockById('bar-c1'), + this.workspaceSvg.getBlockById('bar-c2')]; + this.fooCalls = [ + this.workspaceSvg.getBlockById('foo-c1'), + this.workspaceSvg.getBlockById('foo-c2')]; + this.bazCall = this.workspaceSvg.getBlockById('baz-c1'); + }); + test('Nested caller', function() { + this.barDef.setEnabled(false); + + for (let i = 0; i < 2; i++) { + chai.assert.isFalse(this.barCalls[i].isEnabled(), + 'Callers are disabled when their definition is disabled ' + + '(bar call ' + i + ')'); + } + chai.assert.isTrue(this.fooCalls[0].isEnabled(), + 'Callers in definitions are disabled by inheritance'); + chai.assert.isTrue(this.fooCalls[0].getInheritedDisabled(), + 'Callers in definitions are disabled by inheritance'); + + this.fooDef.setEnabled(false); + + for (let i = 0; i < 2; i++) { + chai.assert.isFalse(this.fooCalls[i].isEnabled(), + 'Callers are disabled when their definition is disabled ' + + '(foo call ' + i + ')'); + } + + this.barDef.setEnabled(true); + + for (let i = 0; i < 2; i++) { + chai.assert.isTrue(this.barCalls[i].isEnabled(), + 'Callers are reenabled with their definition ' + + '(bar call ' + i + ')'); + } + chai.assert.isFalse(this.fooCalls[0].isEnabled(), + 'Nested disabled callers remain disabled'); + chai.assert.isFalse(this.fooCalls[0].getInheritedDisabled(), + 'Nested disabled callers remain disabled, not by inheritance'); + }); + test('Caller in return', function() { + this.bazDef.setEnabled(false); + + chai.assert.isFalse(this.bazCall.isEnabled(), + 'Caller is disabled with its definition'); + + chai.assert.isTrue(this.barCalls[1].isEnabled(), + 'Caller in the return is disabled by inheritance'); + chai.assert.isTrue(this.barCalls[1].getInheritedDisabled(), + 'Caller in the return is disabled by inheritance'); + + this.barDef.setEnabled(false); + + for (let i = 0; i < 2; i++) { + chai.assert.isFalse(this.barCalls[i].isEnabled(), + 'Callers are disabled when their definition is disabled ' + + '(bar call ' + i + ')'); + } + + this.bazDef.setEnabled(true); + + chai.assert.isFalse(this.barCalls[1].isEnabled(), + 'Caller in return remains disabled'); + chai.assert.isFalse(this.barCalls[1].getInheritedDisabled(), + 'Caller in return remains disabled, not by inheritance'); + }); + }); + }); + + suite('Multiple block serialization', function() { + function assertDefAndCallBlocks(workspace, noReturnNames, returnNames, hasCallers) { + const allProcedures = Blockly.Procedures.allProcedures(workspace); + const defNoReturnBlocks = allProcedures[0]; + chai.assert.lengthOf(defNoReturnBlocks, noReturnNames.length); + for (let i = 0; i < noReturnNames.length; i++) { + const expectedName = noReturnNames[i]; + chai.assert.equal(defNoReturnBlocks[i][0], expectedName); + if (hasCallers) { + const callers = + Blockly.Procedures.getCallers(expectedName, workspace); + chai.assert.lengthOf(callers, 1); + } + } + const defReturnBlocks = allProcedures[1]; + chai.assert.lengthOf(defReturnBlocks, returnNames.length); + for (let i = 0; i < returnNames.length; i++) { + const expectedName = returnNames[i]; + chai.assert.equal(defReturnBlocks[i][0], expectedName); + if (hasCallers) { + const callers = + Blockly.Procedures.getCallers(expectedName, workspace); + chai.assert.lengthOf(callers, 1); + } + } + + // Expecting def and caller blocks are the only blocks on workspace + let expectedCount = noReturnNames.length + returnNames.length; + if (hasCallers) { + expectedCount *= 2; + } + const blocks = workspace.getAllBlocks(false); + chai.assert.lengthOf(blocks, expectedCount); + } + suite('no name renamed to unnamed', function() { + test('defnoreturn and defreturn', function() { + const xml = Blockly.Xml.textToDom(` + + + + `); + Blockly.Xml.domToWorkspace(xml, this.workspace); + assertDefAndCallBlocks( + this.workspace, ['unnamed'], ['unnamed2'], false); + }); + test('defreturn and defnoreturn', function() { + const xml = Blockly.Xml.textToDom(` + + + + `); + Blockly.Xml.domToWorkspace(xml, this.workspace); + assertDefAndCallBlocks( + this.workspace, ['unnamed2'], ['unnamed'], false); + }); + test('callnoreturn (no def in xml)', function() { + const xml = Blockly.Xml.textToDom(` + + + `); + Blockly.Xml.domToWorkspace(xml, this.workspace); + assertDefAndCallBlocks( + this.workspace, ['unnamed'], [], true); + }); + test('callreturn (no def in xml)', function() { + const xml = Blockly.Xml.textToDom(` + + + `); + Blockly.Xml.domToWorkspace(xml, this.workspace); + assertDefAndCallBlocks( + this.workspace, [], ['unnamed'], true); + }); + test('callnoreturn and callreturn (no def in xml)', function() { + const xml = Blockly.Xml.textToDom(` + + + + `); + Blockly.Xml.domToWorkspace(xml, this.workspace); + assertDefAndCallBlocks( + this.workspace, ['unnamed'], ['unnamed2'], true); + }); + test('callreturn and callnoreturn (no def in xml)', function() { + const xml = Blockly.Xml.textToDom(` + + + + `); + Blockly.Xml.domToWorkspace(xml, this.workspace); + assertDefAndCallBlocks( + this.workspace, ['unnamed2'], ['unnamed'], true); + }); + }); + suite('caller param mismatch', function() { + setup(function() { + this.TEST_VAR_ID = 'test-id'; + this.genUidStub = createGenUidStubWithReturns(this.TEST_VAR_ID); + }); + + test('callreturn with missing args', function() { + const defBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` + + do something + + + + + `), this.workspace); + const callBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ), this.workspace); + assertDefBlockStructure(defBlock, true, ['x'], ['arg']); + assertCallBlockStructure(callBlock, [], [], 'do something2'); + }); + test('callreturn with bad args', function() { + const defBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` + + do something + + + + + `), this.workspace); + const callBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` + + + + + + `), this.workspace); + assertDefBlockStructure(defBlock, true, ['x'], ['arg']); + assertCallBlockStructure( + callBlock, ['y'], [this.TEST_VAR_ID], 'do something2'); + }); + test('callnoreturn with missing args', function() { + const defBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` + + do something + + + + + `), this.workspace); + const callBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ), this.workspace); + assertDefBlockStructure(defBlock, false, ['x'], ['arg']); + assertCallBlockStructure(callBlock, [], [], 'do something2'); + }); + test('callnoreturn with bad args', function() { + const defBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` + + do something + + + + + `), this.workspace); + const callBlock = Blockly.Xml.domToBlock(Blockly.Xml.textToDom(` + + + + + + `), this.workspace); + assertDefBlockStructure(defBlock, false, ['x'], ['arg']); + assertCallBlockStructure( + callBlock, ['y'], [this.TEST_VAR_ID], 'do something2'); + }); + }); + }); + + suite('getDefinition - Modified cases', function() { + setup(function() { + Blockly.Blocks['new_proc'] = { + init: function() { }, + getProcedureDef: function() { + return [this.name, [], false]; + }, + name: 'test', + }; + + Blockly.Blocks['nested_proc'] = { + init: function() { + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + }, + getProcedureDef: function() { + return [this.name, [], false]; + }, + name: 'test', + }; + }); + + teardown(function() { + delete Blockly.Blocks['new_proc']; + delete Blockly.Blocks['nested_proc']; + }); + + test('Custom procedure block', function() { + // Do not require procedures to be the built-in procedures. + const defBlock = new Blockly.Block(this.workspace, 'new_proc'); + const def = Blockly.Procedures.getDefinition('test', this.workspace); + chai.assert.equal(def, defBlock); + }); + + test('Stacked procedures', function() { + const blockA = new Blockly.Block(this.workspace, 'nested_proc'); + const blockB = new Blockly.Block(this.workspace, 'nested_proc'); + blockA.name = 'a'; + blockB.name = 'b'; + blockA.nextConnection.connect(blockB.previousConnection); + const def = Blockly.Procedures.getDefinition('b', this.workspace); + chai.assert.equal(def, blockB); + }); + }); + + const testSuites = [ + {title: 'procedures_defreturn', hasReturn: true, + defType: 'procedures_defreturn', callType: 'procedures_callreturn'}, + {title: 'procedures_defnoreturn', hasReturn: false, + defType: 'procedures_defnoreturn', callType: 'procedures_callnoreturn'}, + ]; + + testSuites.forEach((testSuite) => { + suite(testSuite.title, function() { + suite('Structure', function() { + setup(function() { + this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); + this.defBlock.setFieldValue('proc name', 'NAME'); + }); + test('Definition block', function() { + assertDefBlockStructure(this.defBlock, testSuite.hasReturn); + }); + + test('Call block', function() { + this.callBlock = new Blockly.Block( + this.workspace, testSuite.callType); + this.callBlock.setFieldValue('proc name', 'NAME'); + assertCallBlockStructure(this.callBlock); + }); + }); + suite('isNameUsed', function() { + setup(function() { + this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); + this.defBlock.setFieldValue('proc name', 'NAME'); + this.callBlock = new Blockly.Block( + this.workspace, testSuite.callType); + this.callBlock.setFieldValue('proc name', 'NAME'); + }); + test('True', function() { + chai.assert.isTrue( + Blockly.Procedures.isNameUsed('proc name', this.workspace)); + }); + test('False', function() { + chai.assert.isFalse( + Blockly.Procedures.isNameUsed('unused proc name', this.workspace)); + }); + }); + suite('rename', function() { + setup(function() { + this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); + this.defBlock.setFieldValue('proc name', 'NAME'); + this.callBlock = new Blockly.Block( + this.workspace, testSuite.callType); + this.callBlock.setFieldValue('proc name', 'NAME'); + sinon.stub(this.defBlock.getField('NAME'), 'resizeEditor_'); + }); + test('Simple, Programmatic', function() { + this.defBlock.setFieldValue( + this.defBlock.getFieldValue('NAME') + '2', + 'NAME' + ); + chai.assert.equal( + this.defBlock.getFieldValue('NAME'), 'proc name2'); + chai.assert.equal( + this.callBlock.getFieldValue('NAME'), 'proc name2'); + }); + test('Simple, Input', function() { + const defInput = this.defBlock.getField('NAME'); + defInput.htmlInput_ = Object.create(null); + defInput.htmlInput_.oldValue_ = 'proc name'; + defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; + + defInput.htmlInput_.value = defInput.htmlInput_.oldValue_ + '2'; + defInput.onHtmlInputChange_(null); + chai.assert.equal( + this.defBlock.getFieldValue('NAME'), 'proc name2'); + chai.assert.equal( + this.callBlock.getFieldValue('NAME'), 'proc name2'); + }); + test('lower -> CAPS', function() { + const defInput = this.defBlock.getField('NAME'); + defInput.htmlInput_ = Object.create(null); + defInput.htmlInput_.oldValue_ = 'proc name'; + defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; + + defInput.htmlInput_.value = 'PROC NAME'; + defInput.onHtmlInputChange_(null); + chai.assert.equal( + this.defBlock.getFieldValue('NAME'), 'PROC NAME'); + chai.assert.equal( + this.callBlock.getFieldValue('NAME'), 'PROC NAME'); + }); + test('CAPS -> lower', function() { + this.defBlock.setFieldValue('PROC NAME', 'NAME'); + this.callBlock.setFieldValue('PROC NAME', 'NAME'); + const defInput = this.defBlock.getField('NAME'); + defInput.htmlInput_ = Object.create(null); + defInput.htmlInput_.oldValue_ = 'PROC NAME'; + defInput.htmlInput_.untypedDefaultValue_ = 'PROC NAME'; + + defInput.htmlInput_.value = 'proc name'; + defInput.onHtmlInputChange_(null); + chai.assert.equal( + this.defBlock.getFieldValue('NAME'), 'proc name'); + chai.assert.equal( + this.callBlock.getFieldValue('NAME'), 'proc name'); + }); + test('Whitespace', function() { + const defInput = this.defBlock.getField('NAME'); + defInput.htmlInput_ = Object.create(null); + defInput.htmlInput_.oldValue_ = 'proc name'; + defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; + + defInput.htmlInput_.value = defInput.htmlInput_.oldValue_ + ' '; + defInput.onHtmlInputChange_(null); + chai.assert.equal( + this.defBlock.getFieldValue('NAME'), 'proc name'); + chai.assert.equal( + this.callBlock.getFieldValue('NAME'), 'proc name'); + }); + test('Whitespace then Text', function() { + const defInput = this.defBlock.getField('NAME'); + defInput.htmlInput_ = Object.create(null); + defInput.htmlInput_.oldValue_ = 'proc name'; + defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; + + defInput.htmlInput_.value = defInput.htmlInput_.oldValue_ + ' '; + defInput.onHtmlInputChange_(null); + defInput.htmlInput_.value = defInput.htmlInput_.oldValue_ + '2'; + defInput.onHtmlInputChange_(null); + chai.assert.equal( + this.defBlock.getFieldValue('NAME'), 'proc name 2'); + chai.assert.equal( + this.callBlock.getFieldValue('NAME'), 'proc name 2'); + }); + test('Set Empty', function() { + const defInput = this.defBlock.getField('NAME'); + defInput.htmlInput_ = Object.create(null); + defInput.htmlInput_.oldValue_ = 'proc name'; + defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; + + defInput.htmlInput_.value = ''; + defInput.onHtmlInputChange_(null); + chai.assert.equal( + this.defBlock.getFieldValue('NAME'), + Blockly.Msg['UNNAMED_KEY']); + chai.assert.equal( + this.callBlock.getFieldValue('NAME'), + Blockly.Msg['UNNAMED_KEY']); + }); + test('Set Empty, and Create New', function() { + const defInput = this.defBlock.getField('NAME'); + defInput.htmlInput_ = Object.create(null); + defInput.htmlInput_.oldValue_ = 'proc name'; + defInput.htmlInput_.untypedDefaultValue_ = 'proc name'; + + defInput.htmlInput_.value = ''; + defInput.onHtmlInputChange_(null); + const newDefBlock = new Blockly.Block(this.workspace, testSuite.defType); + newDefBlock.setFieldValue('new name', 'NAME'); + chai.assert.equal( + this.defBlock.getFieldValue('NAME'), + Blockly.Msg['UNNAMED_KEY']); + chai.assert.equal( + this.callBlock.getFieldValue('NAME'), + Blockly.Msg['UNNAMED_KEY']); + }); + }); + suite('getCallers', function() { + setup(function() { + this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); + this.defBlock.setFieldValue('proc name', 'NAME'); + this.callBlock = new Blockly.Block( + this.workspace, testSuite.callType); + this.callBlock.setFieldValue('proc name', 'NAME'); + }); + test('Simple', function() { + const callers = + Blockly.Procedures.getCallers('proc name', this.workspace); + chai.assert.equal(callers.length, 1); + chai.assert.equal(callers[0], this.callBlock); + }); + test('Multiple Callers', function() { + const caller2 = new Blockly.Block(this.workspace, testSuite.callType); + caller2.setFieldValue('proc name', 'NAME'); + const caller3 = new Blockly.Block(this.workspace, testSuite.callType); + caller3.setFieldValue('proc name', 'NAME'); + + const callers = + Blockly.Procedures.getCallers('proc name', this.workspace); + chai.assert.equal(callers.length, 3); + chai.assert.equal(callers[0], this.callBlock); + chai.assert.equal(callers[1], caller2); + chai.assert.equal(callers[2], caller3); + }); + test('Multiple Procedures', function() { + const def2 = new Blockly.Block(this.workspace, testSuite.defType); + def2.setFieldValue('proc name2', 'NAME'); + const caller2 = new Blockly.Block(this.workspace, testSuite.callType); + caller2.setFieldValue('proc name2', 'NAME'); + + const callers = + Blockly.Procedures.getCallers('proc name', this.workspace); + chai.assert.equal(callers.length, 1); + chai.assert.equal(callers[0], this.callBlock); + }); + // This can occur if you: + // 1) Create an uppercase definition and call block. + // 2) Delete both blocks. + // 3) Create a lowercase definition and call block. + // 4) Retrieve the uppercase call block from the trashcan. + // (And vise versa for creating lowercase blocks first) + // When converted to code all function names will be lowercase, so a + // caller should still be returned for a differently-cased procedure. + test('Call Different Case', function() { + this.callBlock.setFieldValue('PROC NAME', 'NAME'); + const callers = + Blockly.Procedures.getCallers('proc name', this.workspace); + chai.assert.equal(callers.length, 1); + chai.assert.equal(callers[0], this.callBlock); + }); + test('Multiple Workspaces', function() { + const workspace = new Blockly.Workspace(); + try { + const def2 = new Blockly.Block(workspace, testSuite.defType); + def2.setFieldValue('proc name', 'NAME'); + const caller2 = new Blockly.Block(workspace, testSuite.callType); + caller2.setFieldValue('proc name', 'NAME'); + + let callers = + Blockly.Procedures.getCallers('proc name', this.workspace); + chai.assert.equal(callers.length, 1); + chai.assert.equal(callers[0], this.callBlock); + + callers = Blockly.Procedures.getCallers('proc name', workspace); + chai.assert.equal(callers.length, 1); + chai.assert.equal(callers[0], caller2); + } finally { + workspaceTeardown.call(this, workspace); + } + }); + }); + suite('getDefinition', function() { + setup(function() { + this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); + this.defBlock.setFieldValue('proc name', 'NAME'); + this.callBlock = new Blockly.Block( + this.workspace, testSuite.callType); + this.callBlock.setFieldValue('proc name', 'NAME'); + }); + test('Simple', function() { + const def = + Blockly.Procedures.getDefinition('proc name', this.workspace); + chai.assert.equal(def, this.defBlock); + }); + test('Multiple Procedures', function() { + const def2 = new Blockly.Block(this.workspace, testSuite.defType); + def2.setFieldValue('proc name2', 'NAME'); + const caller2 = new Blockly.Block(this.workspace, testSuite.callType); + caller2.setFieldValue('proc name2', 'NAME'); + + const def = + Blockly.Procedures.getDefinition('proc name', this.workspace); + chai.assert.equal(def, this.defBlock); + }); + test('Multiple Workspaces', function() { + const workspace = new Blockly.Workspace(); + try { + const def2 = new Blockly.Block(workspace, testSuite.defType); + def2.setFieldValue('proc name', 'NAME'); + const caller2 = new Blockly.Block(workspace, testSuite.callType); + caller2.setFieldValue('proc name', 'NAME'); + + let def = + Blockly.Procedures.getDefinition('proc name', this.workspace); + chai.assert.equal(def, this.defBlock); + + def = Blockly.Procedures.getDefinition('proc name', workspace); + chai.assert.equal(def, def2); + } finally { + workspaceTeardown.call(this, workspace); + } + }); + }); + + suite('Enable/Disable', function() { + setup(function() { + const toolbox = document.getElementById('toolbox-categories'); + this.workspaceSvg = Blockly.inject('blocklyDiv', {toolbox: toolbox}); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspaceSvg); + }); + const domText = (testSuite.defType === 'procedures_defreturn') ? + ('' + + '' + + 'bar' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '') : + ('' + + '' + + 'bar' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); + setup(function() { + const dom = Blockly.Xml.textToDom(domText); + + Blockly.Xml.appendDomToWorkspace(dom, this.workspaceSvg); + this.barDef = this.workspaceSvg.getBlockById('bar-def'); + this.barCalls = [ + this.workspaceSvg.getBlockById('bar-c1'), + this.workspaceSvg.getBlockById('bar-c2'), + ]; + }); + + test('Set disabled updates callers', function() { + this.workspaceSvg.clearUndo(); + Blockly.Events.setGroup('g1'); + this.barDef.setEnabled(false); + Blockly.Events.setGroup(false); + + for (let i = 0; i < 2; i++) { + chai.assert.isFalse(this.barCalls[i].isEnabled(), + 'Callers are disabled when their definition is disabled (call ' + + i + ')'); + } + const firedEvents = this.workspaceSvg.undoStack_; + chai.assert.equal(firedEvents.length, 3, + 'An event was fired for the definition and each caller'); + for (let i = 0; i < 3; i++) { + chai.assert.equal(firedEvents[i].group, 'g1', + 'Disable events are in the same group (event ' + i + ')'); + } + + this.workspaceSvg.clearUndo(); + Blockly.Events.setGroup('g2'); + this.barDef.setEnabled(true); + Blockly.Events.setGroup(false); + + for (let i = 0; i < 2; i++) { + chai.assert.isTrue(this.barCalls[i].isEnabled(), + 'Callers are enabled when their definition is enabled (call ' + + i + ')'); + } + chai.assert.equal(firedEvents.length, 3, + 'An event was fired for the definition and each caller'); + for (let i = 0; i < 3; i++) { + chai.assert.equal(firedEvents[i].group, 'g2', + 'Enable events are in the same group (event ' + i + ')'); + } + }); + test('Set disabled updates callers while remembering old caller state', function() { + this.barCalls[0].setEnabled(false); + this.workspaceSvg.clearUndo(); + Blockly.Events.setGroup('g1'); + this.barDef.setEnabled(false); + Blockly.Events.setGroup(false); + + for (let i = 0; i < 2; i++) { + chai.assert.isFalse(this.barCalls[i].isEnabled(), + 'Callers are disabled when their definition is disabled (call ' + + i + ')'); + } + const firedEvents = this.workspaceSvg.undoStack_; + chai.assert.equal(firedEvents.length, 2, + 'An event was fired for the definition and the enabled caller'); + for (let i = 0; i < 2; i++) { + chai.assert.equal(firedEvents[i].group, 'g1', + 'Disable events are in the same group (event ' + i + ')'); + } + + this.workspaceSvg.clearUndo(); + Blockly.Events.setGroup('g2'); + this.barDef.setEnabled(true); + Blockly.Events.setGroup(false); + + chai.assert.isFalse(this.barCalls[0].isEnabled(), + 'Caller remains in disabled state when the definition is enabled'); + chai.assert.isTrue(this.barCalls[1].isEnabled(), + 'Caller returns to previous enabled state when the definition is enabled'); + chai.assert.equal(firedEvents.length, 2, + 'An event was fired for the definition and the enabled caller'); + for (let i = 0; i < 2; i++) { + chai.assert.equal(firedEvents[i].group, 'g2', + 'Enable events are in the same group (event ' + i + ')'); + } + }); + }); + suite('Mutation', function() { + setup(function() { + this.defBlock = new Blockly.Block(this.workspace, testSuite.defType); + this.defBlock.setFieldValue('proc name', 'NAME'); + this.callBlock = new Blockly.Block( + this.workspace, testSuite.callType); + this.callBlock.setFieldValue('proc name', 'NAME'); + this.findParentStub = sinon.stub(Blockly.Mutator, 'findParentWs') + .returns(this.workspace); + }); + teardown(function() { + this.findParentStub.restore(); + }); + suite('Composition', function() { + suite('Statements', function() { + function setStatementValue(mainWorkspace, defBlock, value) { + const mutatorWorkspace = new Blockly.Workspace( + new Blockly.Options({ + parentWorkspace: mainWorkspace, + })); + defBlock.decompose(mutatorWorkspace); + const containerBlock = mutatorWorkspace.getTopBlocks()[0]; + const statementField = containerBlock.getField('STATEMENTS'); + statementField.setValue(value); + defBlock.compose(containerBlock); + } + if (testSuite.defType === 'procedures_defreturn') { + test('Has Statements', function() { + setStatementValue(this.workspace, this.defBlock, true); + chai.assert.isTrue(this.defBlock.hasStatements_); + }); + test('Has No Statements', function() { + setStatementValue(this.workspace, this.defBlock, false); + chai.assert.isFalse(this.defBlock.hasStatements_); + }); + test('Saving Statements', function() { + const blockXml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + const defBlock = Blockly.Xml.domToBlock(blockXml, this.workspace); + setStatementValue(this.workspace, defBlock, false); + chai.assert.isNull(defBlock.getInput('STACK')); + setStatementValue(this.workspace, defBlock, true); + chai.assert.isNotNull(defBlock.getInput('STACK')); + const statementBlocks = defBlock.getChildren(); + chai.assert.equal(statementBlocks.length, 1); + const block = statementBlocks[0]; + chai.assert.equal(block.type, 'procedures_ifreturn'); + chai.assert.equal(block.id, 'test'); + }); + } + }); + suite('Untyped Arguments', function() { + function createMutator(argArray) { + this.mutatorWorkspace = new Blockly.Workspace( + new Blockly.Options({ + parentWorkspace: this.workspace, + })); + this.containerBlock = this.defBlock.decompose(this.mutatorWorkspace); + this.connection = this.containerBlock.getInput('STACK').connection; + for (let i = 0; i < argArray.length; i++) { + this.argBlock = new Blockly.Block( + this.mutatorWorkspace, 'procedures_mutatorarg'); + this.argBlock.setFieldValue(argArray[i], 'NAME'); + this.connection.connect(this.argBlock.previousConnection); + this.connection = this.argBlock.nextConnection; + } + this.defBlock.compose(this.containerBlock); + } + function assertArgs(argArray) { + chai.assert.equal(this.defBlock.arguments_.length, argArray.length); + for (let i = 0; i < argArray.length; i++) { + chai.assert.equal(this.defBlock.arguments_[i], argArray[i]); + } + chai.assert.equal(this.callBlock.arguments_.length, argArray.length); + for (let i = 0; i < argArray.length; i++) { + chai.assert.equal(this.callBlock.arguments_[i], argArray[i]); + } + } + test('Simple Add Arg', function() { + const args = ['arg1']; + createMutator.call(this, args); + assertArgs.call(this, args); + }); + test('Multiple Args', function() { + const args = ['arg1', 'arg2', 'arg3']; + createMutator.call(this, args); + assertArgs.call(this, args); + }); + test('Simple Change Arg', function() { + createMutator.call(this, ['arg1']); + this.argBlock.setFieldValue('arg2', 'NAME'); + this.defBlock.compose(this.containerBlock); + assertArgs.call(this, ['arg2']); + }); + test('lower -> CAPS', function() { + createMutator.call(this, ['arg']); + this.argBlock.setFieldValue('ARG', 'NAME'); + this.defBlock.compose(this.containerBlock); + assertArgs.call(this, ['ARG']); + }); + test('CAPS -> lower', function() { + createMutator.call(this, ['ARG']); + this.argBlock.setFieldValue('arg', 'NAME'); + this.defBlock.compose(this.containerBlock); + assertArgs.call(this, ['arg']); + }); + // Test case for #1958 + test('Set Arg Empty', function() { + const args = ['arg1']; + createMutator.call(this, args); + this.argBlock.setFieldValue('', 'NAME'); + this.defBlock.compose(this.containerBlock); + assertArgs.call(this, args); + }); + test('Whitespace', function() { + const args = ['arg1']; + createMutator.call(this, args); + this.argBlock.setFieldValue(' ', 'NAME'); + this.defBlock.compose(this.containerBlock); + assertArgs.call(this, args); + }); + test('Whitespace and Text', function() { + createMutator.call(this, ['arg1']); + this.argBlock.setFieldValue(' text ', 'NAME'); + this.defBlock.compose(this.containerBlock); + assertArgs.call(this, ['text']); + }); + test('<>', function() { + const args = ['<>']; + createMutator.call(this, args); + assertArgs.call(this, args); + }); + }); + }); + suite('Decomposition', function() { + suite('Statements', function() { + if (testSuite.defType === 'procedures_defreturn') { + test('Has Statement Input', function() { + const mutatorWorkspace = new Blockly.Workspace( + new Blockly.Options({ + parentWorkspace: this.workspace, + })); + this.defBlock.decompose(mutatorWorkspace); + const statementInput = mutatorWorkspace.getTopBlocks()[0] + .getInput('STATEMENT_INPUT'); + chai.assert.isNotNull(statementInput); + }); + test('Has Statements', function() { + this.defBlock.hasStatements_ = true; + const mutatorWorkspace = new Blockly.Workspace( + new Blockly.Options({ + parentWorkspace: this.workspace, + })); + this.defBlock.decompose(mutatorWorkspace); + const statementValue = mutatorWorkspace.getTopBlocks()[0] + .getField('STATEMENTS').getValueBoolean(); + chai.assert.isTrue(statementValue); + }); + test('No Has Statements', function() { + this.defBlock.hasStatements_ = false; + const mutatorWorkspace = new Blockly.Workspace( + new Blockly.Options({ + parentWorkspace: this.workspace, + })); + this.defBlock.decompose(mutatorWorkspace); + const statementValue = mutatorWorkspace.getTopBlocks()[0] + .getField('STATEMENTS').getValueBoolean(); + chai.assert.isFalse(statementValue); + }); + } else { + test('Has no Statement Input', function() { + const mutatorWorkspace = new Blockly.Workspace( + new Blockly.Options({ + parentWorkspace: this.workspace, + })); + this.defBlock.decompose(mutatorWorkspace); + const statementInput = mutatorWorkspace.getTopBlocks()[0] + .getInput('STATEMENT_INPUT'); + chai.assert.isNull(statementInput); + }); + } + }); + suite('Untyped Arguments', function() { + function assertArguments(argumentsArray) { + this.defBlock.arguments_ = argumentsArray; + const mutatorWorkspace = new Blockly.Workspace( + new Blockly.Options({ + parentWorkspace: this.workspace, + })); + this.defBlock.decompose(mutatorWorkspace); + const argBlocks = mutatorWorkspace.getBlocksByType('procedures_mutatorarg'); + chai.assert.equal(argBlocks.length, argumentsArray.length); + + for (let i = 0; i < argumentsArray.length; i++) { + const argString = argumentsArray[i]; + const argBlockValue = argBlocks[i].getFieldValue('NAME'); + chai.assert.equal(argBlockValue, argString); + } + } + test('Simple Single Arg', function() { + assertArguments.call(this, ['arg']); + }); + test('Multiple Args', function() { + assertArguments.call(this, ['arg1', 'arg2']); + }); + test('<>', function() { + assertArguments.call(this, ['<>']); + }); + }); + }); + }); + /** + * Test cases for serialization tests. + * @type {Array} + */ + const testCases = [ + { + title: 'Minimal definition', + xml: '', + expectedXml: + '\n' + + ' unnamed\n' + + '', + assertBlockStructure: + (block) => { + assertDefBlockStructure(block, testSuite.hasReturn); + }, + }, + { + title: 'Common definition', + xml: + '' + + ' do something' + + '', + expectedXml: + '\n' + + ' do something\n' + + '', + assertBlockStructure: + (block) => { + assertDefBlockStructure(block, testSuite.hasReturn); + }, + }, + { + title: 'With vars definition', + xml: + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' do something\n' + + '', + expectedXml: + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' do something\n' + + '', + assertBlockStructure: + (block) => { + assertDefBlockStructure( + block, testSuite.hasReturn, ['x', 'y'], ['arg1', 'arg2']); + }, + }, + { + title: 'With pre-created vars definition', + xml: + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' do something\n' + + '', + expectedXml: + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' do something\n' + + '', + assertBlockStructure: + (block) => { + assertDefBlockStructure(block, testSuite.hasReturn, + ['preCreatedVar'], ['preCreatedVarId']); + }, + }, + { + title: 'With pre-created typed vars definition', + xml: + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' do something\n' + + '', + expectedXml: + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' do something\n' + + '', + assertBlockStructure: + (block) => { + assertDefBlockStructure(block, testSuite.hasReturn, + ['preCreatedTypedVar'], ['preCreatedTypedVarId']); + }, + }, + { + title: 'No statements definition', + xml: + '\n' + + ' \n' + + ' do something\n' + + '', + expectedXml: + '\n' + + ' \n' + + ' do something\n' + + '', + assertBlockStructure: + (block) => { + assertDefBlockStructure(block, true, [], [], false); + }, + }, + { + title: 'Minimal caller', + xml: '', + expectedXml: + '\n' + + ' \n' + + '', + assertBlockStructure: + (block) => { + assertCallBlockStructure(block); + }, + }, + { + title: 'Common caller', + xml: + '\n' + + ' \n' + + '', + expectedXml: + '\n' + + ' \n' + + '', + assertBlockStructure: + (block) => { + assertCallBlockStructure(block); + }, + }, + { + title: 'With pre-created vars caller', + xml: + '\n' + + ' \n' + + ' \n' + + ' \n' + + '', + expectedXml: + '\n' + + ' \n' + + ' \n' + + ' \n' + + '', + assertBlockStructure: + (block) => { + assertCallBlockStructure(block, ['preCreatedVar'], ['preCreatedVarId']); + }, + }, + ]; + runSerializationTestSuite(testCases); + }); + }); +}); diff --git a/tests/mocha/registry_test.js b/tests/mocha/registry_test.js index b6fabfea106..1d10451ec37 100644 --- a/tests/mocha/registry_test.js +++ b/tests/mocha/registry_test.js @@ -1,266 +1,266 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.registry'); - -const {assertWarnings} = goog.require('Blockly.test.helpers.warnings'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Registry', function() { - const TestClass = function() {}; - TestClass.prototype.testMethod = function() { - return 'something'; - }; - - setup(function() { - sharedTestSetup.call(this); - }); - - teardown(function() { - sharedTestTeardown.call(this); - if (Blockly.registry.hasItem('test', 'test_name')) { - Blockly.registry.unregister('test', 'test_name'); - } - }); - - suite('Registration', function() { - test('Simple', function() { - Blockly.registry.register('test', 'test_name', TestClass); - }); - - test('Empty String Key', function() { - chai.assert.throws(function() { - Blockly.registry.register('test', '', TestClass); - }, 'Invalid name'); - }); - - test('Class as Key', function() { - chai.assert.throws(function() { - Blockly.registry.register('test', TestClass, ''); - }, 'Invalid name'); - }); - - test('Overwrite a Key', function() { - Blockly.registry.register('test', 'test_name', TestClass); - chai.assert.throws(function() { - Blockly.registry.register('test', 'test_name', TestClass); - }, 'already registered'); - }); - - test('Null Value', function() { - chai.assert.throws(function() { - Blockly.registry.register('test', 'field_custom_test', null); - }, 'Can not register a null value'); - }); - }); - - suite('hasItem', function() { - setup(function() { - Blockly.registry.register('test', 'test_name', TestClass); - }); - - test('Has', function() { - chai.assert.isTrue(Blockly.registry.hasItem('test', 'test_name')); - }); - - suite('Does not have', function() { - test('Type', function() { - chai.assert.isFalse(Blockly.registry.hasItem('bad_type', 'test_name')); - }); - - test('Name', function() { - chai.assert.isFalse(Blockly.registry.hasItem('test', 'bad_name')); - }); - }); - - suite('Case', function() { - test('Caseless type', function() { - chai.assert.isTrue(Blockly.registry.hasItem('TEST', 'test_name')); - }); - - test('Caseless name', function() { - chai.assert.isTrue(Blockly.registry.hasItem('test', 'TEST_NAME')); - }); - }); - }); - - suite('getClass', function() { - setup(function() { - Blockly.registry.register('test', 'test_name', TestClass); - }); - - test('Has', function() { - chai.assert.isNotNull(Blockly.registry.getClass('test', 'test_name')); - }); - - suite('Does not have', function() { - test('Type', function() { - assertWarnings(() => { - chai.assert.isNull(Blockly.registry.getClass('bad_type', 'test_name')); - }, /Unable to find/); - }); - - test('Name', function() { - assertWarnings(() => { - chai.assert.isNull(Blockly.registry.getClass('test', 'bad_name')); - }, /Unable to find/); - }); - - test('Throw if missing', function() { - chai.assert.throws(function() { - Blockly.registry.getClass('test', 'bad_name', true); - }); - }); - }); - - suite('Case', function() { - test('Caseless type', function() { - chai.assert.isNotNull(Blockly.registry.getClass('TEST', 'test_name')); - }); - - test('Caseless name', function() { - chai.assert.isNotNull(Blockly.registry.getClass('test', 'TEST_NAME')); - }); - }); - }); - - suite('getObject', function() { - setup(function() { - Blockly.registry.register('test', 'test_name', {}); - }); - - test('Has', function() { - chai.assert.isNotNull(Blockly.registry.getObject('test', 'test_name')); - }); - - suite('Does not have', function() { - test('Type', function() { - assertWarnings(() => { - chai.assert.isNull(Blockly.registry.getObject('bad_type', 'test_name')); - }, /Unable to find/); - }); - - test('Name', function() { - assertWarnings(() => { - chai.assert.isNull(Blockly.registry.getObject('test', 'bad_name')); - }, /Unable to find/); - }); - - test('Throw if missing', function() { - chai.assert.throws(function() { - Blockly.registry.getObject('test', 'bad_name', true); - }); - }); - }); - - suite('Case', function() { - test('Caseless type', function() { - chai.assert.isNotNull(Blockly.registry.getObject('TEST', 'test_name')); - }); - - test('Caseless name', function() { - chai.assert.isNotNull(Blockly.registry.getObject('test', 'TEST_NAME')); - }); - }); - }); - - suite('getAllItems', function() { - setup(function() { - Blockly.registry.register('test', 'test_name', {}); - Blockly.registry.register('test', 'casedNAME', {}); - }); - - teardown(function() { - Blockly.registry.unregister('test', 'casedname'); - }); - - test('Has', function() { - chai.assert.isNotNull(Blockly.registry.getAllItems('test')); - }); - - test('Does not have', function() { - assertWarnings(() => { - chai.assert.isNull(Blockly.registry.getAllItems('bad_type')); - }, /Unable to find/); - }); - - test('Throw if missing', function() { - chai.assert.throws(function() { - Blockly.registry.getAllItems('bad_type', false, true); - }); - }); - - test('Ignore type case', function() { - chai.assert.isNotNull(Blockly.registry.getAllItems('TEST')); - }); - - test('Respect name case', function() { - chai.assert.deepEqual( - Blockly.registry.getAllItems('test', true), - { - 'test_name': {}, - 'casedNAME': {}, - }); - }); - - test('Respect overwriting name case', function() { - Blockly.registry.register('test', 'CASEDname', {}, true); - chai.assert.deepEqual( - Blockly.registry.getAllItems('test', true), - { - 'test_name': {}, - 'CASEDname': {}, - }); - }); - }); - - suite('getClassFromOptions', function() { - setup(function() { - this.defaultClass = function() {}; - this.defaultClass.prototype.testMethod = function() { - return 'default'; - }; - this.options = { - 'plugins': { - 'test': 'test_name', - }, - }; - Blockly.registry.register('test', 'test_name', TestClass); - Blockly.registry.register('test', 'default', this.defaultClass); - }); - - teardown(function() { - Blockly.registry.unregister('test', 'default'); - }); - - test('Simple - Plugin name given', function() { - const testClass = Blockly.registry.getClassFromOptions('test', this.options); - chai.assert.instanceOf(new testClass(), TestClass); - }); - - test('Simple - Plugin class given', function() { - this.options.plugins['test'] = TestClass; - const testClass = Blockly.registry.getClassFromOptions('test', this.options); - chai.assert.instanceOf(new testClass(), TestClass); - }); - - test('No Plugin Name Given', function() { - delete this.options['plugins']['test']; - const testClass = Blockly.registry.getClassFromOptions('test', this.options); - chai.assert.instanceOf(new testClass(), this.defaultClass); - }); - - test('Incorrect Plugin Name', function() { - this.options['plugins']['test'] = 'random'; - let testClass; - assertWarnings(() => { - testClass = Blockly.registry.getClassFromOptions('test', this.options); - }, /Unable to find/); - chai.assert.isNull(testClass); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.registry'); + +const {assertWarnings} = goog.require('Blockly.test.helpers.warnings'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Registry', function() { + const TestClass = function() {}; + TestClass.prototype.testMethod = function() { + return 'something'; + }; + + setup(function() { + sharedTestSetup.call(this); + }); + + teardown(function() { + sharedTestTeardown.call(this); + if (Blockly.registry.hasItem('test', 'test_name')) { + Blockly.registry.unregister('test', 'test_name'); + } + }); + + suite('Registration', function() { + test('Simple', function() { + Blockly.registry.register('test', 'test_name', TestClass); + }); + + test('Empty String Key', function() { + chai.assert.throws(function() { + Blockly.registry.register('test', '', TestClass); + }, 'Invalid name'); + }); + + test('Class as Key', function() { + chai.assert.throws(function() { + Blockly.registry.register('test', TestClass, ''); + }, 'Invalid name'); + }); + + test('Overwrite a Key', function() { + Blockly.registry.register('test', 'test_name', TestClass); + chai.assert.throws(function() { + Blockly.registry.register('test', 'test_name', TestClass); + }, 'already registered'); + }); + + test('Null Value', function() { + chai.assert.throws(function() { + Blockly.registry.register('test', 'field_custom_test', null); + }, 'Can not register a null value'); + }); + }); + + suite('hasItem', function() { + setup(function() { + Blockly.registry.register('test', 'test_name', TestClass); + }); + + test('Has', function() { + chai.assert.isTrue(Blockly.registry.hasItem('test', 'test_name')); + }); + + suite('Does not have', function() { + test('Type', function() { + chai.assert.isFalse(Blockly.registry.hasItem('bad_type', 'test_name')); + }); + + test('Name', function() { + chai.assert.isFalse(Blockly.registry.hasItem('test', 'bad_name')); + }); + }); + + suite('Case', function() { + test('Caseless type', function() { + chai.assert.isTrue(Blockly.registry.hasItem('TEST', 'test_name')); + }); + + test('Caseless name', function() { + chai.assert.isTrue(Blockly.registry.hasItem('test', 'TEST_NAME')); + }); + }); + }); + + suite('getClass', function() { + setup(function() { + Blockly.registry.register('test', 'test_name', TestClass); + }); + + test('Has', function() { + chai.assert.isNotNull(Blockly.registry.getClass('test', 'test_name')); + }); + + suite('Does not have', function() { + test('Type', function() { + assertWarnings(() => { + chai.assert.isNull(Blockly.registry.getClass('bad_type', 'test_name')); + }, /Unable to find/); + }); + + test('Name', function() { + assertWarnings(() => { + chai.assert.isNull(Blockly.registry.getClass('test', 'bad_name')); + }, /Unable to find/); + }); + + test('Throw if missing', function() { + chai.assert.throws(function() { + Blockly.registry.getClass('test', 'bad_name', true); + }); + }); + }); + + suite('Case', function() { + test('Caseless type', function() { + chai.assert.isNotNull(Blockly.registry.getClass('TEST', 'test_name')); + }); + + test('Caseless name', function() { + chai.assert.isNotNull(Blockly.registry.getClass('test', 'TEST_NAME')); + }); + }); + }); + + suite('getObject', function() { + setup(function() { + Blockly.registry.register('test', 'test_name', {}); + }); + + test('Has', function() { + chai.assert.isNotNull(Blockly.registry.getObject('test', 'test_name')); + }); + + suite('Does not have', function() { + test('Type', function() { + assertWarnings(() => { + chai.assert.isNull(Blockly.registry.getObject('bad_type', 'test_name')); + }, /Unable to find/); + }); + + test('Name', function() { + assertWarnings(() => { + chai.assert.isNull(Blockly.registry.getObject('test', 'bad_name')); + }, /Unable to find/); + }); + + test('Throw if missing', function() { + chai.assert.throws(function() { + Blockly.registry.getObject('test', 'bad_name', true); + }); + }); + }); + + suite('Case', function() { + test('Caseless type', function() { + chai.assert.isNotNull(Blockly.registry.getObject('TEST', 'test_name')); + }); + + test('Caseless name', function() { + chai.assert.isNotNull(Blockly.registry.getObject('test', 'TEST_NAME')); + }); + }); + }); + + suite('getAllItems', function() { + setup(function() { + Blockly.registry.register('test', 'test_name', {}); + Blockly.registry.register('test', 'casedNAME', {}); + }); + + teardown(function() { + Blockly.registry.unregister('test', 'casedname'); + }); + + test('Has', function() { + chai.assert.isNotNull(Blockly.registry.getAllItems('test')); + }); + + test('Does not have', function() { + assertWarnings(() => { + chai.assert.isNull(Blockly.registry.getAllItems('bad_type')); + }, /Unable to find/); + }); + + test('Throw if missing', function() { + chai.assert.throws(function() { + Blockly.registry.getAllItems('bad_type', false, true); + }); + }); + + test('Ignore type case', function() { + chai.assert.isNotNull(Blockly.registry.getAllItems('TEST')); + }); + + test('Respect name case', function() { + chai.assert.deepEqual( + Blockly.registry.getAllItems('test', true), + { + 'test_name': {}, + 'casedNAME': {}, + }); + }); + + test('Respect overwriting name case', function() { + Blockly.registry.register('test', 'CASEDname', {}, true); + chai.assert.deepEqual( + Blockly.registry.getAllItems('test', true), + { + 'test_name': {}, + 'CASEDname': {}, + }); + }); + }); + + suite('getClassFromOptions', function() { + setup(function() { + this.defaultClass = function() {}; + this.defaultClass.prototype.testMethod = function() { + return 'default'; + }; + this.options = { + 'plugins': { + 'test': 'test_name', + }, + }; + Blockly.registry.register('test', 'test_name', TestClass); + Blockly.registry.register('test', 'default', this.defaultClass); + }); + + teardown(function() { + Blockly.registry.unregister('test', 'default'); + }); + + test('Simple - Plugin name given', function() { + const testClass = Blockly.registry.getClassFromOptions('test', this.options); + chai.assert.instanceOf(new testClass(), TestClass); + }); + + test('Simple - Plugin class given', function() { + this.options.plugins['test'] = TestClass; + const testClass = Blockly.registry.getClassFromOptions('test', this.options); + chai.assert.instanceOf(new testClass(), TestClass); + }); + + test('No Plugin Name Given', function() { + delete this.options['plugins']['test']; + const testClass = Blockly.registry.getClassFromOptions('test', this.options); + chai.assert.instanceOf(new testClass(), this.defaultClass); + }); + + test('Incorrect Plugin Name', function() { + this.options['plugins']['test'] = 'random'; + let testClass; + assertWarnings(() => { + testClass = Blockly.registry.getClassFromOptions('test', this.options); + }, /Unable to find/); + chai.assert.isNull(testClass); + }); + }); +}); diff --git a/tests/mocha/run_mocha_tests_in_browser.js b/tests/mocha/run_mocha_tests_in_browser.js index 217c9992bc6..f9454e15d47 100644 --- a/tests/mocha/run_mocha_tests_in_browser.js +++ b/tests/mocha/run_mocha_tests_in_browser.js @@ -1,98 +1,98 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Node.js script to run Mocha tests in Chrome, via webdriver. - */ -var webdriverio = require('webdriverio'); - -module.exports = runMochaTestsInBrowser; - -/** - * Runs the Mocha tests in this directory in Chrome. It uses webdriverio to - * launch Chrome and load index.html. Outputs a summary of the test results - * to the console. - * @return {number} 0 on success, 1 on failure. - */ -async function runMochaTestsInBrowser() { - var options = { - capabilities: { - browserName: 'chrome' - }, - services: [ - ['selenium-standalone'] - ], - logLevel: 'warn' - }; - // Run in headless mode on Github Actions. - if (process.env.CI) { - options.capabilities['goog:chromeOptions'] = { - args: [ - '--headless', '--no-sandbox', '--disable-dev-shm-usage', - '--allow-file-access-from-files', - ] - }; - } else { - // --disable-gpu is needed to prevent Chrome from hanging on Linux with - // NVIDIA drivers older than v295.20. See - // https://github.com/google/blockly/issues/5345 for details. - options.capabilities['goog:chromeOptions'] = { - args: ['--allow-file-access-from-files', '--disable-gpu'] - }; - } - - var url = 'file://' + __dirname + '/index.html'; - console.log('Starting webdriverio...'); - const browser = await webdriverio.remote(options); - console.log('Initialized.\nLoading url: ' + url); - await browser.url(url); - - await browser.waitUntil(async () => { - var elem = await browser.$('#failureCount'); - var text = await elem.getAttribute('tests_failed'); - return text != 'unset'; - }, { - timeout: 50000 - }); - - const elem = await browser.$('#failureCount'); - const numOfFailure = await elem.getAttribute('tests_failed'); - - if (numOfFailure > 0) { - console.log('============Blockly Mocha Test Failures================') - const failureMessagesEls = await browser.$$('#failureMessages p'); - if (!failureMessagesEls.length) { - console.log('There is at least one test failure, but no messages reported. Mocha may be failing because no tests are being run.'); - } - for (let el of failureMessagesEls) { - console.log(await el.getText()); - } - } - - console.log('============Blockly Mocha Test Summary================='); - console.log(numOfFailure + ' tests failed'); - console.log('============Blockly Mocha Test Summary================='); - if (parseInt(numOfFailure) !== 0) { - return 1; - } - await browser.deleteSession(); - return 0; -} - -if (require.main === module) { - runMochaTestsInBrowser().catch(e => { - console.error(e); - process.exit(1); - }).then(function(result) { - if (result) { - console.log('Mocha tests failed'); - process.exit(1); - } else { - console.log('Mocha tests passed'); - process.exit(0); - } - }); -} +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Node.js script to run Mocha tests in Chrome, via webdriver. + */ +var webdriverio = require('webdriverio'); + +module.exports = runMochaTestsInBrowser; + +/** + * Runs the Mocha tests in this directory in Chrome. It uses webdriverio to + * launch Chrome and load index.html. Outputs a summary of the test results + * to the console. + * @return {number} 0 on success, 1 on failure. + */ +async function runMochaTestsInBrowser() { + var options = { + capabilities: { + browserName: 'chrome' + }, + services: [ + ['selenium-standalone'] + ], + logLevel: 'warn' + }; + // Run in headless mode on Github Actions. + if (process.env.CI) { + options.capabilities['goog:chromeOptions'] = { + args: [ + '--headless', '--no-sandbox', '--disable-dev-shm-usage', + '--allow-file-access-from-files', + ] + }; + } else { + // --disable-gpu is needed to prevent Chrome from hanging on Linux with + // NVIDIA drivers older than v295.20. See + // https://github.com/google/blockly/issues/5345 for details. + options.capabilities['goog:chromeOptions'] = { + args: ['--allow-file-access-from-files', '--disable-gpu'] + }; + } + + var url = 'file://' + __dirname + '/index.html'; + console.log('Starting webdriverio...'); + const browser = await webdriverio.remote(options); + console.log('Initialized.\nLoading url: ' + url); + await browser.url(url); + + await browser.waitUntil(async () => { + var elem = await browser.$('#failureCount'); + var text = await elem.getAttribute('tests_failed'); + return text != 'unset'; + }, { + timeout: 50000 + }); + + const elem = await browser.$('#failureCount'); + const numOfFailure = await elem.getAttribute('tests_failed'); + + if (numOfFailure > 0) { + console.log('============Blockly Mocha Test Failures================') + const failureMessagesEls = await browser.$$('#failureMessages p'); + if (!failureMessagesEls.length) { + console.log('There is at least one test failure, but no messages reported. Mocha may be failing because no tests are being run.'); + } + for (let el of failureMessagesEls) { + console.log(await el.getText()); + } + } + + console.log('============Blockly Mocha Test Summary================='); + console.log(numOfFailure + ' tests failed'); + console.log('============Blockly Mocha Test Summary================='); + if (parseInt(numOfFailure) !== 0) { + return 1; + } + await browser.deleteSession(); + return 0; +} + +if (require.main === module) { + runMochaTestsInBrowser().catch(e => { + console.error(e); + process.exit(1); + }).then(function(result) { + if (result) { + console.log('Mocha tests failed'); + process.exit(1); + } else { + console.log('Mocha tests passed'); + process.exit(0); + } + }); +} diff --git a/tests/mocha/serializer_test.js b/tests/mocha/serializer_test.js index 9ddb4a90e32..a99fcea14fc 100644 --- a/tests/mocha/serializer_test.js +++ b/tests/mocha/serializer_test.js @@ -1,1870 +1,1870 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.serialization'); - -const {TestCase, TestSuite, runTestCases, runTestSuites} = goog.require('Blockly.test.helpers.common'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -// TODO: Move this into samples as part of the dev-tools package. -// TODO: Fix up typing of SerializerTestCase & SerializerTestSuite to match -// decision in google/blockly-samples#819. -/** - * Constructs a serializer test. - * @param {string} title The title of this testcase. - * @param {string} xml The XML to use for the round-trip test. - * @constructor - * @implements {TestCase} - */ -function SerializerTestCase(title, xml) { - this.title = title; - this.xml = xml; -} -SerializerTestCase.prototype = new TestCase(); - -/** - * The XML we want to ensure round-trips through the serializer. - */ -SerializerTestCase.prototype.xml = ''; - - -/** - * Constructs a serializer test suite. - * @param {string} title The title of this test suite. - * @extends {TestSuite} - */ -function SerializerTestSuite(title) { - this.title = title; -} -SerializerTestSuite.prototype = new TestSuite(); - -const Serializer = new SerializerTestSuite('Serializer'); - -// TODO: Make sure all of these properties are documented ad exported properly. -Serializer.Empty = new SerializerTestCase('Empty', - '' -); -Serializer.Data = new SerializerTestCase('Data', - '' + - '' + - 'test data' + - '' + - ''); -Serializer.testCases = [ - Serializer.Empty, - Serializer.Data, -]; - -Serializer.Attributes = new SerializerTestSuite('Attributes'); -Serializer.Attributes.Basic = new SerializerTestCase('Basic', - '' + - '' + - ''); -Serializer.Attributes.Collapsed = new SerializerTestCase('Collapsed', - '' + - '' + - ''); -Serializer.Attributes.Disabled = new SerializerTestCase('Disabled', - '' + - '' + - ''); -Serializer.Attributes.testCases = [ - Serializer.Attributes.Basic, - Serializer.Attributes.Collapsed, - Serializer.Attributes.Disabled, -]; - -Serializer.Attributes.Inline = new SerializerTestSuite('Inline'); -Serializer.Attributes.Inline.True = new SerializerTestCase('True', - '' + - '' + - ''); -Serializer.Attributes.Inline.False = new SerializerTestCase('False', - '' + - '' + - ''); -Serializer.Attributes.Inline.testCases = [ - Serializer.Attributes.Inline.True, - Serializer.Attributes.Inline.False, -]; - -Serializer.Attributes.Coordinates = new SerializerTestSuite('Coordinates'); -Serializer.Attributes.Coordinates.Simple = new SerializerTestCase('Simple', - '' + - '' + - ''); -Serializer.Attributes.Coordinates.Negative = new SerializerTestCase('Negative', - '' + - '' + - ''); -Serializer.Attributes.Coordinates.Zero = new SerializerTestCase('Zero', - '' + - '' + - ''); -Serializer.Attributes.Coordinates.testCases = [ - Serializer.Attributes.Coordinates.Simple, - Serializer.Attributes.Coordinates.Negative, - Serializer.Attributes.Coordinates.Zero, -]; - -Serializer.Attributes.Id = new SerializerTestSuite('Ids'); - -Serializer.Attributes.Id.Length = new SerializerTestSuite('Length'); -Serializer.Attributes.Id.Length.Short = new SerializerTestCase('Short', - '' + - '' + - ''); -Serializer.Attributes.Id.Length.Long = new SerializerTestCase('Long', - '' + - '' + - '' + - ''); -Serializer.Attributes.Id.Length.testCases = [ - Serializer.Attributes.Id.Length.Short, - Serializer.Attributes.Id.Length.Long, -]; - -Serializer.Attributes.Id.Chars = new SerializerTestSuite('Chars'); -Serializer.Attributes.Id.Chars.Symbols = new SerializerTestCase('Symbols', - '' + - '' + - '' + - ''); -Serializer.Attributes.Id.Chars.Uppercase = new SerializerTestCase('Uppercase', - '' + - '' + - '' + - ''); -Serializer.Attributes.Id.Chars.Lowercase = new SerializerTestCase('Lowercase', - '' + - '' + - '' + - ''); -Serializer.Attributes.Id.Chars.Numbers = new SerializerTestCase('Numbers', - '' + - '' + - ''); -Serializer.Attributes.Id.Chars.testCases = [ - Serializer.Attributes.Id.Chars.Symbols, - Serializer.Attributes.Id.Chars.Uppercase, - Serializer.Attributes.Id.Chars.Lowercase, - Serializer.Attributes.Id.Chars.Numbers, -]; - -Serializer.Attributes.Id.testSuites = [ - Serializer.Attributes.Id.Length, - Serializer.Attributes.Id.Chars, -]; - -Serializer.Attributes.testSuites = [ - Serializer.Attributes.Inline, - Serializer.Attributes.Coordinates, - Serializer.Attributes.Id, -]; - -Serializer.Fields = new SerializerTestSuite('Fields'); -Serializer.Fields.skip = true; - -Serializer.Fields.Angle = new SerializerTestSuite('Angle'); -Serializer.Fields.Angle.Simple = new SerializerTestCase('Simple', - '' + - '' + - '90' + - '' + - ''); -Serializer.Fields.Angle.Negative = new SerializerTestCase( - 'Negative', - '' + - '' + - '-90' + - '' + - ''); -Serializer.Fields.Angle.Decimals = new SerializerTestCase('Decimals', - '' + - '' + - '1.5' + - '' + - ''); -Serializer.Fields.Angle.MaxPrecision = new SerializerTestCase( - 'MaxPrecision', - '' + - '' + - '1.000000000000001' + - '' + - ''); -Serializer.Fields.Angle.SmallestNumber = new SerializerTestCase( - 'SmallestNumber', - '' + - '' + - '5e-324' + - '' + - ''); -Serializer.Fields.Angle.testCases = [ - Serializer.Fields.Angle.Simple, - Serializer.Fields.Angle.Negative, - Serializer.Fields.Angle.Decimals, - Serializer.Fields.Angle.MaxPrecision, - Serializer.Fields.Angle.SmallestNumber, -]; - -Serializer.Fields.Checkbox = new SerializerTestSuite('Checkbox'); -Serializer.Fields.Checkbox.True = new SerializerTestCase('True', - '' + - '' + - 'TRUE' + - '' + - ''); -Serializer.Fields.Checkbox.False = new SerializerTestCase('False', - '' + - '' + - 'FALSE' + - '' + - ''); -Serializer.Fields.Checkbox.testCases = [ - Serializer.Fields.Checkbox.True, - Serializer.Fields.Checkbox.False, -]; - -Serializer.Fields.Colour = new SerializerTestSuite('Colour'); -Serializer.Fields.Colour.ThreeChar = new SerializerTestCase('ThreeChar', - '' + - '' + - '#ffcc00' + // Could use a 3 char code. - '' + - ''); -Serializer.Fields.Colour.SixChar = new SerializerTestCase('SixChar', - '' + - '' + - '#f1c101' + - '' + - ''); -Serializer.Fields.Colour.Black = new SerializerTestCase('Black', - '' + - '' + - '#000000' + - '' + - ''); -Serializer.Fields.Colour.testCases = [ - Serializer.Fields.Colour.ThreeChar, - Serializer.Fields.Colour.SixChar, - Serializer.Fields.Colour.Black, -]; - -Serializer.Fields.Dropdown = new SerializerTestSuite('Dropdown'); -Serializer.Fields.Dropdown.Default = new SerializerTestCase('Default', - '' + - '' + - 'ITEM1' + - '' + - ''); -Serializer.Fields.Dropdown.NotDefault = new SerializerTestCase('NotDefault', - '' + - '' + - 'ITEM32' + - '' + - ''); -Serializer.Fields.Dropdown.Dynamic = new SerializerTestCase( - 'Dynamic', - '' + - '' + - '0' + - '' + - ''); -Serializer.Fields.Dropdown.testCases = [ - Serializer.Fields.Dropdown.Default, - Serializer.Fields.Dropdown.NotDefault, - Serializer.Fields.Dropdown.Dynamic, -]; - - -Serializer.Fields.LabelSerializable = new SerializerTestSuite( - 'LabelSerializable'); -Serializer.Fields.LabelSerializable.Simple = new SerializerTestCase('Simple', - '' + - '' + - 'test' + - '' + - ''); -Serializer.Fields.LabelSerializable.Symbols = new SerializerTestCase('Symbols', - '' + - '' + - '~`!@#$%^*()_+-={[}]|\\:;,.?/' + - '' + - ''); -Serializer.Fields.LabelSerializable.EscapedSymbols = new SerializerTestCase( - 'EscapedSymbols', - '' + - '' + - '&<>' + - '' + - ''); -Serializer.Fields.LabelSerializable.SingleQuotes = new SerializerTestCase( - 'SingleQuotes', - '' + - '' + - '\'test\'' + - '' + - ''); -Serializer.Fields.LabelSerializable.DoubleQuotes = new SerializerTestCase( - 'DoubleQuotes', - '' + - '' + - '"test"' + - '' + - ''); -Serializer.Fields.LabelSerializable.Numbers = new SerializerTestCase( - 'Numbers', - '' + - '' + - '1234567890a123a123a' + - '' + - ''); -Serializer.Fields.LabelSerializable.Emoji = new SerializerTestCase( - 'Emoji', - '' + - '' + - '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + - '' + - ''); -Serializer.Fields.LabelSerializable.Russian = new SerializerTestCase( - 'Russian', - '' + - '' + - 'ты любопытный кот' + - '' + - ''); -Serializer.Fields.LabelSerializable.Japanese = new SerializerTestCase( - 'Japanese', - '' + - '' + - 'あなたは好奇心旺盛な猫です' + - '' + - ''); -Serializer.Fields.LabelSerializable.Zalgo = new SerializerTestCase( - 'Zalgo', - '' + - '' + - 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + - '' + - ''); -Serializer.Fields.LabelSerializable.ControlChars = new SerializerTestCase( - 'ControlChars', - '' + - '' + - '' + - '' + - ''); -Serializer.Fields.LabelSerializable.testCases = [ - Serializer.Fields.LabelSerializable.Simple, - Serializer.Fields.LabelSerializable.Symbols, - Serializer.Fields.LabelSerializable.EscapedSymbols, - Serializer.Fields.LabelSerializable.SingleQuotes, - Serializer.Fields.LabelSerializable.DoubleQuotes, - Serializer.Fields.LabelSerializable.Numbers, - Serializer.Fields.LabelSerializable.Emoji, - Serializer.Fields.LabelSerializable.Russian, - Serializer.Fields.LabelSerializable.Japanese, - Serializer.Fields.LabelSerializable.Zalgo, - // TODO: Uncoment once #4945 is merged. - // Serializer.Fields.LabelSerializable.ControlChars, -]; - -Serializer.Fields.MultilineInput = new SerializerTestSuite('MultilineInput'); -Serializer.Fields.MultilineInput.SingleLine = new SerializerTestCase( - 'SingleLine', - '' + - '' + - 'test' + - '' + - ''); -Serializer.Fields.MultilineInput.MultipleLines = new SerializerTestCase( - 'MultipleLines', - '' + - '' + - 'line1&#10;line2&#10;line3' + - '' + - ''); -Serializer.Fields.MultilineInput.Indentation = new SerializerTestCase( - 'Indentation', - '' + - '' + - 'line1&#10; line2&#10; line3' + - '' + - ''); -/* eslint-disable no-tabs */ -Serializer.Fields.MultilineInput.Tabs = new SerializerTestCase( - 'Tabs', - '' + - '' + - '' + - 'line1&#10; line2&#10; line3' + - '' + - '' + - ''); -/* eslint-enable no-tabs */ -Serializer.Fields.MultilineInput.Symbols = new SerializerTestCase('Symbols', - '' + - '' + - '~`!@#$%^*()_+-={[}]|\\:;,.?/' + - '' + - ''); -Serializer.Fields.MultilineInput.EscapedSymbols = new SerializerTestCase( - 'EscapedSymbols', - '' + - '' + - '&<>' + - '' + - ''); -Serializer.Fields.MultilineInput.SingleQuotes = new SerializerTestCase( - 'SingleQuotes', - '' + - '' + - '\'test\'' + - '' + - ''); -Serializer.Fields.MultilineInput.DoubleQuotes = new SerializerTestCase( - 'DoubleQuotes', - '' + - '' + - '"test"' + - '' + - ''); -Serializer.Fields.MultilineInput.Numbers = new SerializerTestCase( - 'Numbers', - '' + - '' + - '1234567890a123a123a' + - '' + - ''); -Serializer.Fields.MultilineInput.Emoji = new SerializerTestCase( - 'Emoji', - '' + - '' + - '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + - '' + - ''); -Serializer.Fields.MultilineInput.Russian = new SerializerTestCase( - 'Russian', - '' + - '' + - 'ты любопытный кот' + - '' + - ''); -Serializer.Fields.MultilineInput.Japanese = new SerializerTestCase( - 'Japanese', - '' + - '' + - 'あなたは好奇心旺盛な猫です' + - '' + - ''); -Serializer.Fields.MultilineInput.Zalgo = new SerializerTestCase( - 'Zalgo', - '' + - '' + - 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + - '' + - ''); -Serializer.Fields.MultilineInput.ControlChars = new SerializerTestCase( - 'ControlChars', - '' + - '' + - '' + - '' + - ''); -Serializer.Fields.MultilineInput.testCases = [ - Serializer.Fields.MultilineInput.SingleLine, - Serializer.Fields.MultilineInput.MultipleLines, - Serializer.Fields.MultilineInput.Indentation, - Serializer.Fields.MultilineInput.Tabs, - Serializer.Fields.MultilineInput.Symbols, - Serializer.Fields.MultilineInput.EscapedSymbols, - Serializer.Fields.MultilineInput.SingleQuotes, - Serializer.Fields.MultilineInput.DoubleQuotes, - Serializer.Fields.MultilineInput.Numbers, - Serializer.Fields.MultilineInput.Emoji, - Serializer.Fields.MultilineInput.Russian, - Serializer.Fields.MultilineInput.Japanese, - Serializer.Fields.MultilineInput.Zalgo, - // TODO: Uncoment once #4945 is merged. - // Serializer.Fields.MultilineInput.ControlChars, -]; - -Serializer.Fields.Number = new SerializerTestSuite('Number'); -Serializer.Fields.Number.Simple = new SerializerTestCase('Simple', - '' + - '' + - '123' + - '' + - ''); -Serializer.Fields.Number.Negative = new SerializerTestCase('Negative', - '' + - '' + - '-123' + - '' + - ''); -Serializer.Fields.Number.PosInfinity = new SerializerTestCase('PosInfinity', - '' + - '' + - 'Infinity' + - '' + - ''); -Serializer.Fields.Number.NegInfinity = new SerializerTestCase('NegInfinity', - '' + - '' + - '-Infinity' + - '' + - ''); -Serializer.Fields.Number.Decimals = new SerializerTestCase('Decimals', - '' + - '' + - '1.5' + - '' + - ''); -Serializer.Fields.Number.Smallest = new SerializerTestCase('Smallest', - '' + - '' + - '5e-324' + - '' + - ''); -Serializer.Fields.Number.Largest = new SerializerTestCase('Largest', - '' + - '' + - '1.7976931348623157e+308' + - '' + - ''); -Serializer.Fields.Number.MaxPrecisionSmall = new SerializerTestCase( - 'MaxPrecisionSmall', - '' + - '' + - '1.000000000000001' + - '' + - ''); -Serializer.Fields.Number.MaxPrecisionLarge = new SerializerTestCase( - 'MaxPrecisionLarge', - '' + - '' + - '1000000000000001' + - '' + - ''); -Serializer.Fields.Number.testCases = [ - Serializer.Fields.Number.Simple, - Serializer.Fields.Number.Negative, - Serializer.Fields.Number.PosInfinity, - Serializer.Fields.Number.NegInfinity, - Serializer.Fields.Number.Decimals, - Serializer.Fields.Number.Smallest, - Serializer.Fields.Number.Largest, - Serializer.Fields.Number.MaxPrecisionSmall, - Serializer.Fields.Number.MaxPrecisionLarge, -]; - -Serializer.Fields.TextInput = new SerializerTestSuite('TextInput'); -Serializer.Fields.TextInput.Simple = new SerializerTestCase('Simple', - '' + - '' + - 'test' + - '' + - ''); -/* eslint-disable no-tabs */ -Serializer.Fields.TextInput.Tabs = new SerializerTestCase('Tabs', - '' + - '' + - 'line1 line2 line3' + - '' + - ''); -/* eslint-enable no-tabs */ -Serializer.Fields.TextInput.Symbols = new SerializerTestCase('Symbols', - '' + - '' + - '~`!@#$%^*()_+-={[}]|\\:;,.?/' + - '' + - ''); -Serializer.Fields.TextInput.EscapedSymbols = new SerializerTestCase( - 'EscapedSymbols', - '' + - '' + - '&<>' + - '' + - ''); -Serializer.Fields.TextInput.SingleQuotes = new SerializerTestCase( - 'SingleQuotes', - '' + - '' + - '\'test\'' + - '' + - ''); -Serializer.Fields.TextInput.DoubleQuotes = new SerializerTestCase( - 'DoubleQuotes', - '' + - '' + - '"test"' + - '' + - ''); -Serializer.Fields.TextInput.Numbers = new SerializerTestCase( - 'Numbers', - '' + - '' + - '1234567890a123a123a' + - '' + - ''); -Serializer.Fields.TextInput.Emoji = new SerializerTestCase( - 'Emoji', - '' + - '' + - '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + - '' + - ''); -Serializer.Fields.TextInput.Russian = new SerializerTestCase( - 'Russian', - '' + - '' + - 'ты любопытный кот' + - '' + - ''); -Serializer.Fields.TextInput.Japanese = new SerializerTestCase( - 'Japanese', - '' + - '' + - 'あなたは好奇心旺盛な猫です' + - '' + - ''); -Serializer.Fields.TextInput.Zalgo = new SerializerTestCase( - 'Zalgo', - '' + - '' + - 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + - '' + - ''); -Serializer.Fields.TextInput.ControlChars = new SerializerTestCase( - 'ControlChars', - '' + - '' + - '' + - '' + - ''); -Serializer.Fields.TextInput.testCases = [ - Serializer.Fields.TextInput.Simple, - Serializer.Fields.TextInput.Tabs, - Serializer.Fields.TextInput.Symbols, - Serializer.Fields.TextInput.EscapedSymbols, - Serializer.Fields.TextInput.SingleQuotes, - Serializer.Fields.TextInput.DoubleQuotes, - Serializer.Fields.TextInput.Numbers, - Serializer.Fields.TextInput.Emoji, - Serializer.Fields.TextInput.Russian, - Serializer.Fields.TextInput.Japanese, - Serializer.Fields.TextInput.Zalgo, - // TODO: Uncoment once #4945 is merged. - // Serializer.Fields.TextInput.ControlChars, -]; - -Serializer.Fields.Variable = new SerializerTestSuite('Variable'); -Serializer.Fields.Variable.Simple = new SerializerTestCase('Simple', - '' + - '' + - 'test' + - '' + - '' + - 'test' + - '' + - ''); -Serializer.Fields.Variable.Types = new SerializerTestCase('Types', - '' + - '' + - 'test' + - 'test2' + - 'test3' + - '' + - '' + - 'test' + - '' + - '' + - 'test2' + - '' + - '' + - 'test3' + - '' + - ''); -/* eslint-disable no-tabs */ -Serializer.Fields.Variable.Tabs = new SerializerTestCase('Tabs', - '' + - '' + - 'line1 line2 line3' + - '' + - '' + - 'line1 line2 line3' + - '' + - ''); -/* eslint-enable no-tabs */ -Serializer.Fields.Variable.Symbols = new SerializerTestCase('Symbols', - '' + - '' + - '~`!@#$%^*()_+-={[}]|\\:;,.?/' + - '' + - '' + - '~`!@#$%^*()_+-={[}]|\\:;,.?/' + - '' + - ''); -Serializer.Fields.Variable.EscapedSymbols = new SerializerTestCase( - 'EscapedSymbols', - '' + - '' + - '&<>' + - '' + - '' + - '&<>' + - '' + - ''); -Serializer.Fields.Variable.SingleQuotes = new SerializerTestCase( - 'SingleQuotes', - '' + - '' + - '\'test\'' + - '' + - '' + - '\'test\'' + - '' + - ''); -Serializer.Fields.Variable.DoubleQuotes = new SerializerTestCase( - 'DoubleQuotes', - '' + - '' + - '"test"' + - '' + - '' + - '"test"' + - '' + - ''); -Serializer.Fields.Variable.Numbers = new SerializerTestCase( - 'Numbers', - '' + - '' + - '1234567890a123a123a' + - '' + - '' + - '1234567890a123a123a' + - '' + - ''); -Serializer.Fields.Variable.Emoji = new SerializerTestCase( - 'Emoji', - '' + - '' + - '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + - '' + - '' + - '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + - '' + - ''); -Serializer.Fields.Variable.Russian = new SerializerTestCase( - 'Russian', - '' + - '' + - 'ты любопытный кот' + - '' + - '' + - 'ты любопытный кот' + - '' + - ''); -Serializer.Fields.Variable.Japanese = new SerializerTestCase( - 'Japanese', - '' + - '' + - 'あなたは好奇心旺盛な猫です' + - '' + - '' + - 'あなたは好奇心旺盛な猫です' + - '' + - ''); -Serializer.Fields.Variable.Zalgo = new SerializerTestCase( - 'Zalgo', - '' + - '' + - 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + - '' + - '' + - 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + - '' + - ''); -Serializer.Fields.Variable.ControlChars = new SerializerTestCase( - 'ControlChars', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Fields.Variable.testCases = [ - Serializer.Fields.Variable.Simple, - Serializer.Fields.Variable.Types, - Serializer.Fields.Variable.Tabs, - Serializer.Fields.Variable.Symbols, - Serializer.Fields.Variable.EscapedSymbols, - Serializer.Fields.Variable.SingleQuotes, - Serializer.Fields.Variable.DoubleQuotes, - Serializer.Fields.Variable.Numbers, - Serializer.Fields.Variable.Emoji, - Serializer.Fields.Variable.Russian, - Serializer.Fields.Variable.Japanese, - Serializer.Fields.Variable.Zalgo, - // TODO: Uncoment once #4945 is merged. - // Serializer.Fields.Variable.ControlChars, -]; - -Serializer.Fields.Variable.Id = new SerializerTestSuite('Id'); - -Serializer.Fields.Variable.Id.Length = new SerializerTestSuite('Length'); -Serializer.Fields.Variable.Id.Length.Short = new SerializerTestCase('Short', - '' + - '' + - 'test' + - '' + - '' + - 'test' + - '' + - ''); -Serializer.Fields.Variable.Id.Length.Long = new SerializerTestCase('Long', - '' + - '' + - 'test' + - '' + - '' + - 'test' + - '' + - ''); -Serializer.Fields.Variable.Id.Length.testCases = [ - Serializer.Fields.Variable.Id.Length.Short, - Serializer.Fields.Variable.Id.Length.Long, -]; - -Serializer.Fields.Variable.Id.Chars = new SerializerTestSuite('Chars'); -Serializer.Fields.Variable.Id.Chars.Symbols = new SerializerTestCase('Symbols', - '' + - '' + - 'test' + - 'test2' + - '' + - '' + - 'test' + - '' + - '' + - 'test2' + - '' + - ''); -Serializer.Fields.Variable.Id.Chars.Uppercase = new SerializerTestCase('Uppercase', - '' + - '' + - 'test' + - 'test2' + - '' + - '' + - 'test' + - '' + - '' + - 'test2' + - '' + - ''); -Serializer.Fields.Variable.Id.Chars.Lowercase = new SerializerTestCase('Lowercase', - '' + - '' + - 'test' + - 'test2' + - '' + - '' + - 'test' + - '' + - '' + - 'test2' + - '' + - ''); -Serializer.Fields.Variable.Id.Chars.Numbers = new SerializerTestCase('Numbers', - '' + - '' + - 'test' + - '' + - '' + - 'test' + - '' + - ''); -Serializer.Fields.Variable.Id.Chars.testCases = [ - Serializer.Fields.Variable.Id.Chars.Symbols, - Serializer.Fields.Variable.Id.Chars.Uppercase, - Serializer.Fields.Variable.Id.Chars.Lowercase, - Serializer.Fields.Variable.Id.Chars.Numbers, -]; - -Serializer.Fields.Variable.Id.testSuites = [ - Serializer.Fields.Variable.Id.Length, - Serializer.Fields.Variable.Id.Chars, -]; - -Serializer.Fields.Variable.testSuites = [ - Serializer.Fields.Variable.Id, -]; - -Serializer.Fields.testSuites = [ - Serializer.Fields.Angle, - Serializer.Fields.Checkbox, - Serializer.Fields.Colour, - Serializer.Fields.Dropdown, - Serializer.Fields.LabelSerializable, - Serializer.Fields.MultilineInput, - Serializer.Fields.Number, - Serializer.Fields.TextInput, - Serializer.Fields.Variable, -]; - -Serializer.Icons = new SerializerTestSuite('Icons'); - -Serializer.Icons.Comment = new SerializerTestSuite('Comment'); -Serializer.Icons.Comment.Basic = new SerializerTestCase('Basic', - '' + - '' + - 'test' + - '' + - ''); - -Serializer.Icons.Comment.Size = new SerializerTestSuite('Size'); -Serializer.Icons.Comment.Size.Different = new SerializerTestCase('Different', - '' + - '' + - 'test' + - '' + - ''); -Serializer.Icons.Comment.Size.Large = new SerializerTestCase('Large', - '' + - '' + - 'test' + - '' + - ''); -Serializer.Icons.Comment.Size.testCases = [ - Serializer.Icons.Comment.Size.Different, - Serializer.Icons.Comment.Size.Large, -]; - -Serializer.Icons.Comment.Pinned = new SerializerTestSuite('Pinned'); -Serializer.Icons.Comment.Pinned.True = new SerializerTestCase('True', - '' + - '' + - 'test' + - '' + - ''); -Serializer.Icons.Comment.Pinned.False = new SerializerTestCase('False', - '' + - '' + - 'test' + - '' + - ''); -Serializer.Icons.Comment.Pinned.testCases = [ - Serializer.Icons.Comment.Pinned.True, - Serializer.Icons.Comment.Pinned.False, -]; - -Serializer.Icons.Comment.Text = new SerializerTestSuite('Text'); -Serializer.Icons.Comment.Text.Symbols = new SerializerTestCase('Symbols', - '' + - '' + - '~`!@#$%^*()_+-={[}]|\\:;,.?/' + - '' + - ''); -Serializer.Icons.Comment.Text.EscapedSymbols = new SerializerTestCase( - 'EscapedSymbols', - '' + - '' + - '&<>' + - '' + - ''); -Serializer.Icons.Comment.Text.SingleQuotes = new SerializerTestCase( - 'SingleQuotes', - '' + - '' + - '\'test\'' + - '' + - ''); -Serializer.Icons.Comment.Text.DoubleQuotes = new SerializerTestCase( - 'DoubleQuotes', - '' + - '' + - '"test"' + - '' + - ''); -Serializer.Icons.Comment.Text.Numbers = new SerializerTestCase( - 'Numbers', - '' + - '' + - '1234567890a123a123a' + - '' + - ''); -Serializer.Icons.Comment.Text.Emoji = new SerializerTestCase( - 'Emoji', - '' + - '' + - '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + - '' + - ''); -Serializer.Icons.Comment.Text.Russian = new SerializerTestCase( - 'Russian', - '' + - '' + - 'ты любопытный кот' + - '' + - ''); -Serializer.Icons.Comment.Text.Japanese = new SerializerTestCase( - 'Japanese', - '' + - '' + - 'あなたは好奇心旺盛な猫です' + - '' + - ''); -Serializer.Icons.Comment.Text.Zalgo = new SerializerTestCase( - 'Zalgo', - '' + - '' + - 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + - '' + - ''); -Serializer.Icons.Comment.Text.ControlChars = new SerializerTestCase( - 'ControlChars', - '' + - '' + - '' + - '' + - ''); -Serializer.Icons.Comment.Text.testCases = [ - Serializer.Icons.Comment.Text.Symbols, - Serializer.Icons.Comment.Text.EscapedSymbols, - Serializer.Icons.Comment.Text.SingleQuotes, - Serializer.Icons.Comment.Text.DoubleQuotes, - Serializer.Icons.Comment.Text.Numbers, - Serializer.Icons.Comment.Text.Emoji, - Serializer.Icons.Comment.Text.Russian, - Serializer.Icons.Comment.Text.Japanese, - Serializer.Icons.Comment.Text.Zalgo, - // TODO: Uncoment once #4945 is merged. - // Serializer.Icons.Comment.Text.ControlChars, -]; - -Serializer.Icons.Comment.testSuites = [ - Serializer.Icons.Comment.Size, - Serializer.Icons.Comment.Pinned, - Serializer.Icons.Comment.Text, -]; - -Serializer.Icons.Comment.testCases = [ - Serializer.Icons.Comment.Basic, -]; - -Serializer.Icons.testSuites = [Serializer.Icons.Comment]; - -Serializer.Connections = new SerializerTestSuite('Connections'); - -Serializer.Connections.Child = new SerializerTestSuite('Child'); -Serializer.Connections.Child.Value = new SerializerTestCase('Value', - '' + - '' + - '' + - '' + - 'TRUE' + - '' + - '' + - '' + - ''); -Serializer.Connections.Child.Statement = new SerializerTestCase('Statement', - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Child.Next = new SerializerTestCase('Next', - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Child.Row = new SerializerTestCase('Row', - '' + - '' + - '' + - '' + - '' + - '' + - 'TRUE' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Child.Nested = new SerializerTestCase('Nested', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Child.Stack = new SerializerTestCase('Stack', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Child.testCases = [ - Serializer.Connections.Child.Value, - Serializer.Connections.Child.Statement, - Serializer.Connections.Child.Next, - Serializer.Connections.Child.Row, - Serializer.Connections.Child.Nested, - Serializer.Connections.Child.Stack, -]; - -Serializer.Connections.Shadow = new SerializerTestSuite('Shadow'); -Serializer.Connections.Shadow.Value = new SerializerTestCase('Value', - '' + - '' + - '' + - '' + - 'TRUE' + - '' + - '' + - '' + - ''); -Serializer.Connections.Shadow.Statement = new SerializerTestCase('Statement', - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Shadow.Next = new SerializerTestCase('Next', - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Shadow.Row = new SerializerTestCase('Row', - '' + - '' + - '' + - '' + - '' + - '' + - 'TRUE' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Shadow.Nested = new SerializerTestCase('Nested', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Shadow.Stack = new SerializerTestCase('Stack', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.Shadow.testCases = [ - Serializer.Connections.Shadow.Value, - Serializer.Connections.Shadow.Statement, - Serializer.Connections.Shadow.Next, - Serializer.Connections.Shadow.Row, - Serializer.Connections.Shadow.Nested, - Serializer.Connections.Shadow.Stack, -]; - -Serializer.Connections.OverwrittenShadow = - new SerializerTestSuite('OverwrittenShadow'); -Serializer.Connections.OverwrittenShadow.Value = new SerializerTestCase( - 'Value', - '' + - '' + - '' + - '' + - 'TRUE' + - '' + - '' + - 'TRUE' + - '' + - '' + - '' + - ''); -Serializer.Connections.OverwrittenShadow.Statement = new SerializerTestCase( - 'Statement', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.OverwrittenShadow.Next = new SerializerTestCase('Next', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.OverwrittenShadow.Row = new SerializerTestCase('Row', - '' + - '' + - '' + - '' + - '' + - '' + - 'TRUE' + - '' + - '' + - '' + - '' + - 'TRUE' + - '' + - '' + - '' + - ''); -Serializer.Connections.OverwrittenShadow.Nested = new SerializerTestCase( - 'Nested', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.OverwrittenShadow.Stack = new SerializerTestCase('Stack', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Connections.OverwrittenShadow.testCases = [ - Serializer.Connections.OverwrittenShadow.Value, - Serializer.Connections.OverwrittenShadow.Statement, - Serializer.Connections.OverwrittenShadow.Next, - Serializer.Connections.OverwrittenShadow.Row, - Serializer.Connections.OverwrittenShadow.Nested, - Serializer.Connections.OverwrittenShadow.Stack, -]; - -Serializer.Connections.testSuites = [ - Serializer.Connections.Child, - Serializer.Connections.Shadow, - Serializer.Connections.OverwrittenShadow, -]; - -Serializer.Mutations = new SerializerTestSuite('Mutations'); -Serializer.Mutations.ListGetIndex = new SerializerTestCase('ListGetIndex', - '' + - '' + - '' + - 'REMOVE' + - 'LAST' + - '' + - ''); -Serializer.Mutations.ListSetIndex = new SerializerTestCase('ListSetIndex', - '' + - '' + - '' + - 'SET' + - 'LAST' + - '' + - ''); -Serializer.Mutations.ListGetSublist = new SerializerTestCase('ListGetSublist', - '' + - '' + - '' + - 'FIRST' + - 'LAST' + - '' + - ''); -Serializer.Mutations.MathNumberProperty = new SerializerTestCase( - 'MathNumberProperty', - '' + - '' + - '' + - 'DIVISIBLE_BY' + - '' + - ''); -Serializer.Mutations.MathOnList = new SerializerTestCase( - 'MathOnList', - '' + - '' + - '' + - 'MODE' + - '' + - ''); -Serializer.Mutations.TextJoin = new SerializerTestCase( - 'TextJoin', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.TextCharAt = new SerializerTestCase( - 'TextCharAt', - '' + - '' + - '' + - 'FIRST' + - '' + - ''); -Serializer.Mutations.TextGetSubstring = new SerializerTestCase( - 'TextGetSubstring', - '' + - '' + - '' + - 'FROM_START' + - 'LAST' + - '' + - ''); -Serializer.Mutations.TextPromptExt = new SerializerTestCase( - 'TextPromptExt', - '' + - '' + - '' + - 'NUMBER' + - '' + - ''); -Serializer.Mutations.TextPrompt = new SerializerTestCase( - 'TextPrompt', - '' + - '' + - '' + - 'NUMBER' + - '' + - '' + - ''); -Serializer.Mutations.testCases = [ - Serializer.Mutations.ListGetIndex, - Serializer.Mutations.ListSetIndex, - Serializer.Mutations.ListGetSublist, - Serializer.Mutations.MathNumberProperty, - Serializer.Mutations.MathOnList, - Serializer.Mutations.TextJoin, - Serializer.Mutations.TextCharAt, - Serializer.Mutations.TextGetSubstring, - Serializer.Mutations.TextPromptExt, - Serializer.Mutations.TextPrompt, -]; - -Serializer.Mutations.ControlsIf = new SerializerTestSuite('ControlsIf'); -Serializer.Mutations.ControlsIf.NoMutation = new SerializerTestCase( - 'NoMutation', - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.ElseIfAndElse = new SerializerTestCase( - 'ElseIfAndElse', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.MultipleElseIfs = new SerializerTestCase( - 'MultipleElseIfs', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.MutlipleElseIfsAndElse = new SerializerTestCase( - 'MutlipleElseIfsAndElse', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.testCases = [ - Serializer.Mutations.ControlsIf.NoMutation, - Serializer.Mutations.ControlsIf.ElseIfAndElse, - Serializer.Mutations.ControlsIf.MultipleElseIfs, - Serializer.Mutations.ControlsIf.MutlipleElseIfsAndElse, -]; - -Serializer.Mutations.ControlsIf.ElseIf = new SerializerTestSuite('ElseIf'); -Serializer.Mutations.ControlsIf.ElseIf.NoChild = new SerializerTestCase( - 'NoChild', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.ElseIf.Child = new SerializerTestCase( - 'Child', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.ElseIf.Shadow = new SerializerTestCase( - 'Shadow', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.ElseIf.OverwrittenShadow = new SerializerTestCase( - 'OverwrittenShadow', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.ElseIf.testCases = [ - Serializer.Mutations.ControlsIf.ElseIf.NoChild, - Serializer.Mutations.ControlsIf.ElseIf.Child, - Serializer.Mutations.ControlsIf.ElseIf.Shadow, - Serializer.Mutations.ControlsIf.ElseIf.OverwrittenShadow, -]; - -Serializer.Mutations.ControlsIf.Else = new SerializerTestSuite('Else'); -Serializer.Mutations.ControlsIf.Else.NoChild = new SerializerTestCase( - 'NoChild', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.Else.Child = new SerializerTestCase( - 'Child', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.Else.Shadow = new SerializerTestCase( - 'Shadow', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.Else.OverwrittenShadow = new SerializerTestCase( - 'OverwrittenShadow', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ControlsIf.Else.testCases = [ - Serializer.Mutations.ControlsIf.Else.NoChild, - Serializer.Mutations.ControlsIf.Else.Child, - Serializer.Mutations.ControlsIf.Else.Shadow, - Serializer.Mutations.ControlsIf.Else.OverwrittenShadow, -]; - -Serializer.Mutations.ControlsIf.testSuites = [ - Serializer.Mutations.ControlsIf.ElseIf, - Serializer.Mutations.ControlsIf.Else, -]; - -Serializer.Mutations.ListCreate = new SerializerTestSuite('ListCreate'); -Serializer.Mutations.ListCreate.Default = new SerializerTestCase( - 'Default', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ListCreate.ZeroInputs = new SerializerTestCase( - 'ZeroInputs', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ListCreate.MultipleInputs = new SerializerTestCase( - 'MultipleInputs', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ListCreate.testCases = [ - Serializer.Mutations.ListCreate.Default, - Serializer.Mutations.ListCreate.ZeroInputs, - Serializer.Mutations.ListCreate.MultipleInputs, -]; - -Serializer.Mutations.ListCreate.OneInput = new SerializerTestSuite('OneIput'); -Serializer.Mutations.ListCreate.OneInput.NoChild = new SerializerTestCase( - 'NoChild', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ListCreate.OneInput.Child = new SerializerTestCase( - 'Child', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ListCreate.OneInput.Shadow = new SerializerTestCase( - 'Shadow', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ListCreate.OneInput.OverwrittenShadow = - new SerializerTestCase( - 'OverwrittenShadow', - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.ListCreate.OneInput.testCases = [ - Serializer.Mutations.ListCreate.OneInput.NoChild, - Serializer.Mutations.ListCreate.OneInput.Child, - Serializer.Mutations.ListCreate.OneInput.Shadow, - Serializer.Mutations.ListCreate.OneInput.OverwrittenShadow, -]; - -Serializer.Mutations.ListCreate.testSuites = [ - Serializer.Mutations.ListCreate.OneInput, -]; - -Serializer.Mutations.Procedure = new SerializerTestSuite('Procedure'); -Serializer.Mutations.Procedure.NoMutation = new SerializerTestCase('NoMutation', - '' + - '' + - 'do something' + - '' + - ''); -Serializer.Mutations.Procedure.Variables = new SerializerTestCase('Variables', - '' + - '' + - 'x' + - 'y' + - 'z' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - 'do something' + - '' + - ''); -Serializer.Mutations.Procedure.NoStatements = new SerializerTestCase( - 'NoStatements', - '' + - '' + - '' + - 'do something' + - '' + - ''); -Serializer.Mutations.Procedure.IfReturn = new SerializerTestCase( - 'IfReturn', - '' + - '' + - 'do something' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.Procedure.Caller = new SerializerTestCase( - 'Caller', - '' + - '' + - 'x' + - 'y' + - '' + - '' + - '' + - '' + - '' + - '' + - 'do something' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.Procedure.CollapsedProceduresCallreturn = new SerializerTestCase( - 'CollapsedProceduresCallreturn', - '' + - '' + - 'x' + - '' + - '' + - '' + - '' + - '' + - 'do something' + - 'Describe this function...' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.Procedure.CollapsedProceduresCallnoreturn = new SerializerTestCase( - 'CollapsedProceduresCallnoreturn', - '' + - '' + - 'x' + - '' + - '' + - '' + - '' + - '' + - 'do something' + - 'Describe this function...' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.Procedure.testCases = [ - Serializer.Mutations.Procedure.NoMutation, - Serializer.Mutations.Procedure.Variables, - Serializer.Mutations.Procedure.NoStatements, - Serializer.Mutations.Procedure.IfReturn, - Serializer.Mutations.Procedure.Caller, - Serializer.Mutations.Procedure.CollapsedProceduresCallreturn, - Serializer.Mutations.Procedure.CollapsedProceduresCallnoreturn, -]; - -Serializer.Mutations.Procedure.Names = new SerializerTestSuite('Names'); -Serializer.Mutations.Procedure.Names.Symbols = new SerializerTestCase('Symbols', - '' + - '' + - '~`!@#$%^*()_+-={[}]|\\:;,.?/' + - '' + - ''); -Serializer.Mutations.Procedure.Names.EscapedSymbols = new SerializerTestCase( - 'EscapedSymbols', - '' + - '' + - '&<>' + - '' + - ''); -Serializer.Mutations.Procedure.Names.SingleQuotes = new SerializerTestCase( - 'SingleQuotes', - '' + - '' + - '\'test\'' + - '' + - ''); -Serializer.Mutations.Procedure.Names.DoubleQuotes = new SerializerTestCase( - 'DoubleQuotes', - '' + - '' + - '"test"' + - '' + - ''); -Serializer.Mutations.Procedure.Names.Numbers = new SerializerTestCase( - 'Numbers', - '' + - '' + - '1234567890a123a123a' + - '' + - ''); -Serializer.Mutations.Procedure.Names.Emoji = new SerializerTestCase( - 'Emoji', - '' + - '' + - '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + - '' + - ''); -Serializer.Mutations.Procedure.Names.Russian = new SerializerTestCase( - 'Russian', - '' + - '' + - 'ты любопытный кот' + - '' + - ''); -Serializer.Mutations.Procedure.Names.Japanese = new SerializerTestCase( - 'Japanese', - '' + - '' + - 'あなたは好奇心旺盛な猫です' + - '' + - ''); -Serializer.Mutations.Procedure.Names.Zalgo = new SerializerTestCase( - 'Zalgo', - '' + - '' + - 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + - '' + - ''); -Serializer.Mutations.Procedure.Names.ControlChars = new SerializerTestCase( - 'ControlChars', - '' + - '' + - '' + - '' + - ''); -Serializer.Mutations.Procedure.Names.testCases = [ - Serializer.Mutations.Procedure.Names.Symbols, - Serializer.Mutations.Procedure.Names.EscapedSymbols, - Serializer.Mutations.Procedure.Names.SingleQuotes, - Serializer.Mutations.Procedure.Names.DoubleQuotes, - Serializer.Mutations.Procedure.Names.Numbers, - Serializer.Mutations.Procedure.Names.Emoji, - Serializer.Mutations.Procedure.Names.Russian, - Serializer.Mutations.Procedure.Names.Japanese, - Serializer.Mutations.Procedure.Names.Zalgo, - // TODO: Uncoment once #4945 is merged. - // Serializer.Mutations.Procedure.Names.ControlChars, -]; - -Serializer.Mutations.Procedure.testSuites = [ - Serializer.Mutations.Procedure.Names, -]; - -Serializer.Mutations.testSuites = [ - Serializer.Mutations.ControlsIf, - Serializer.Mutations.ListCreate, - Serializer.Mutations.Procedure, -]; - -Serializer.testSuites = [ - Serializer.Attributes, - Serializer.Fields, - Serializer.Icons, - Serializer.Connections, - Serializer.Mutations, -]; - -const runSerializerTestSuite = (serializer, deserializer, testSuite) => { - const workspaces = Blockly.serialization.workspaces; - - const createTestFunction = function(test) { - return function() { - Blockly.Xml.domToWorkspace( - Blockly.Xml.textToDom(test.xml), this.workspace); - if (serializer && deserializer) { - const save = serializer(workspaces.save(this.workspace)); - this.workspace.clear(); - workspaces.load(deserializer(save), this.workspace); - } - const newXml = Blockly.Xml.workspaceToDom(this.workspace); - chai.assert.equal(Blockly.Xml.domToText(newXml), test.xml); - }; - }; - - // This takes in a suite, but we don't care. - const createTestCaseFunction = function(_) { - return createTestFunction; - }; - - let suiteCall = (testSuite.skip ? suite.skip : suite); - suiteCall = (testSuite.only ? suite.only : suiteCall); - - suiteCall(testSuite.title, function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspace); - sharedTestTeardown.call(this); - }); - - runTestSuites( - testSuite.testSuites, createTestCaseFunction); - runTestCases(testSuite.testCases, createTestFunction); - }); -}; - -runSerializerTestSuite(null, null, Serializer); -runSerializerTestSuite((state) => state, (state) => state, Serializer); +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.serialization'); + +const {TestCase, TestSuite, runTestCases, runTestSuites} = goog.require('Blockly.test.helpers.common'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +// TODO: Move this into samples as part of the dev-tools package. +// TODO: Fix up typing of SerializerTestCase & SerializerTestSuite to match +// decision in google/blockly-samples#819. +/** + * Constructs a serializer test. + * @param {string} title The title of this testcase. + * @param {string} xml The XML to use for the round-trip test. + * @constructor + * @implements {TestCase} + */ +function SerializerTestCase(title, xml) { + this.title = title; + this.xml = xml; +} +SerializerTestCase.prototype = new TestCase(); + +/** + * The XML we want to ensure round-trips through the serializer. + */ +SerializerTestCase.prototype.xml = ''; + + +/** + * Constructs a serializer test suite. + * @param {string} title The title of this test suite. + * @extends {TestSuite} + */ +function SerializerTestSuite(title) { + this.title = title; +} +SerializerTestSuite.prototype = new TestSuite(); + +const Serializer = new SerializerTestSuite('Serializer'); + +// TODO: Make sure all of these properties are documented ad exported properly. +Serializer.Empty = new SerializerTestCase('Empty', + '' +); +Serializer.Data = new SerializerTestCase('Data', + '' + + '' + + 'test data' + + '' + + ''); +Serializer.testCases = [ + Serializer.Empty, + Serializer.Data, +]; + +Serializer.Attributes = new SerializerTestSuite('Attributes'); +Serializer.Attributes.Basic = new SerializerTestCase('Basic', + '' + + '' + + ''); +Serializer.Attributes.Collapsed = new SerializerTestCase('Collapsed', + '' + + '' + + ''); +Serializer.Attributes.Disabled = new SerializerTestCase('Disabled', + '' + + '' + + ''); +Serializer.Attributes.testCases = [ + Serializer.Attributes.Basic, + Serializer.Attributes.Collapsed, + Serializer.Attributes.Disabled, +]; + +Serializer.Attributes.Inline = new SerializerTestSuite('Inline'); +Serializer.Attributes.Inline.True = new SerializerTestCase('True', + '' + + '' + + ''); +Serializer.Attributes.Inline.False = new SerializerTestCase('False', + '' + + '' + + ''); +Serializer.Attributes.Inline.testCases = [ + Serializer.Attributes.Inline.True, + Serializer.Attributes.Inline.False, +]; + +Serializer.Attributes.Coordinates = new SerializerTestSuite('Coordinates'); +Serializer.Attributes.Coordinates.Simple = new SerializerTestCase('Simple', + '' + + '' + + ''); +Serializer.Attributes.Coordinates.Negative = new SerializerTestCase('Negative', + '' + + '' + + ''); +Serializer.Attributes.Coordinates.Zero = new SerializerTestCase('Zero', + '' + + '' + + ''); +Serializer.Attributes.Coordinates.testCases = [ + Serializer.Attributes.Coordinates.Simple, + Serializer.Attributes.Coordinates.Negative, + Serializer.Attributes.Coordinates.Zero, +]; + +Serializer.Attributes.Id = new SerializerTestSuite('Ids'); + +Serializer.Attributes.Id.Length = new SerializerTestSuite('Length'); +Serializer.Attributes.Id.Length.Short = new SerializerTestCase('Short', + '' + + '' + + ''); +Serializer.Attributes.Id.Length.Long = new SerializerTestCase('Long', + '' + + '' + + '' + + ''); +Serializer.Attributes.Id.Length.testCases = [ + Serializer.Attributes.Id.Length.Short, + Serializer.Attributes.Id.Length.Long, +]; + +Serializer.Attributes.Id.Chars = new SerializerTestSuite('Chars'); +Serializer.Attributes.Id.Chars.Symbols = new SerializerTestCase('Symbols', + '' + + '' + + '' + + ''); +Serializer.Attributes.Id.Chars.Uppercase = new SerializerTestCase('Uppercase', + '' + + '' + + '' + + ''); +Serializer.Attributes.Id.Chars.Lowercase = new SerializerTestCase('Lowercase', + '' + + '' + + '' + + ''); +Serializer.Attributes.Id.Chars.Numbers = new SerializerTestCase('Numbers', + '' + + '' + + ''); +Serializer.Attributes.Id.Chars.testCases = [ + Serializer.Attributes.Id.Chars.Symbols, + Serializer.Attributes.Id.Chars.Uppercase, + Serializer.Attributes.Id.Chars.Lowercase, + Serializer.Attributes.Id.Chars.Numbers, +]; + +Serializer.Attributes.Id.testSuites = [ + Serializer.Attributes.Id.Length, + Serializer.Attributes.Id.Chars, +]; + +Serializer.Attributes.testSuites = [ + Serializer.Attributes.Inline, + Serializer.Attributes.Coordinates, + Serializer.Attributes.Id, +]; + +Serializer.Fields = new SerializerTestSuite('Fields'); +Serializer.Fields.skip = true; + +Serializer.Fields.Angle = new SerializerTestSuite('Angle'); +Serializer.Fields.Angle.Simple = new SerializerTestCase('Simple', + '' + + '' + + '90' + + '' + + ''); +Serializer.Fields.Angle.Negative = new SerializerTestCase( + 'Negative', + '' + + '' + + '-90' + + '' + + ''); +Serializer.Fields.Angle.Decimals = new SerializerTestCase('Decimals', + '' + + '' + + '1.5' + + '' + + ''); +Serializer.Fields.Angle.MaxPrecision = new SerializerTestCase( + 'MaxPrecision', + '' + + '' + + '1.000000000000001' + + '' + + ''); +Serializer.Fields.Angle.SmallestNumber = new SerializerTestCase( + 'SmallestNumber', + '' + + '' + + '5e-324' + + '' + + ''); +Serializer.Fields.Angle.testCases = [ + Serializer.Fields.Angle.Simple, + Serializer.Fields.Angle.Negative, + Serializer.Fields.Angle.Decimals, + Serializer.Fields.Angle.MaxPrecision, + Serializer.Fields.Angle.SmallestNumber, +]; + +Serializer.Fields.Checkbox = new SerializerTestSuite('Checkbox'); +Serializer.Fields.Checkbox.True = new SerializerTestCase('True', + '' + + '' + + 'TRUE' + + '' + + ''); +Serializer.Fields.Checkbox.False = new SerializerTestCase('False', + '' + + '' + + 'FALSE' + + '' + + ''); +Serializer.Fields.Checkbox.testCases = [ + Serializer.Fields.Checkbox.True, + Serializer.Fields.Checkbox.False, +]; + +Serializer.Fields.Colour = new SerializerTestSuite('Colour'); +Serializer.Fields.Colour.ThreeChar = new SerializerTestCase('ThreeChar', + '' + + '' + + '#ffcc00' + // Could use a 3 char code. + '' + + ''); +Serializer.Fields.Colour.SixChar = new SerializerTestCase('SixChar', + '' + + '' + + '#f1c101' + + '' + + ''); +Serializer.Fields.Colour.Black = new SerializerTestCase('Black', + '' + + '' + + '#000000' + + '' + + ''); +Serializer.Fields.Colour.testCases = [ + Serializer.Fields.Colour.ThreeChar, + Serializer.Fields.Colour.SixChar, + Serializer.Fields.Colour.Black, +]; + +Serializer.Fields.Dropdown = new SerializerTestSuite('Dropdown'); +Serializer.Fields.Dropdown.Default = new SerializerTestCase('Default', + '' + + '' + + 'ITEM1' + + '' + + ''); +Serializer.Fields.Dropdown.NotDefault = new SerializerTestCase('NotDefault', + '' + + '' + + 'ITEM32' + + '' + + ''); +Serializer.Fields.Dropdown.Dynamic = new SerializerTestCase( + 'Dynamic', + '' + + '' + + '0' + + '' + + ''); +Serializer.Fields.Dropdown.testCases = [ + Serializer.Fields.Dropdown.Default, + Serializer.Fields.Dropdown.NotDefault, + Serializer.Fields.Dropdown.Dynamic, +]; + + +Serializer.Fields.LabelSerializable = new SerializerTestSuite( + 'LabelSerializable'); +Serializer.Fields.LabelSerializable.Simple = new SerializerTestCase('Simple', + '' + + '' + + 'test' + + '' + + ''); +Serializer.Fields.LabelSerializable.Symbols = new SerializerTestCase('Symbols', + '' + + '' + + '~`!@#$%^*()_+-={[}]|\\:;,.?/' + + '' + + ''); +Serializer.Fields.LabelSerializable.EscapedSymbols = new SerializerTestCase( + 'EscapedSymbols', + '' + + '' + + '&<>' + + '' + + ''); +Serializer.Fields.LabelSerializable.SingleQuotes = new SerializerTestCase( + 'SingleQuotes', + '' + + '' + + '\'test\'' + + '' + + ''); +Serializer.Fields.LabelSerializable.DoubleQuotes = new SerializerTestCase( + 'DoubleQuotes', + '' + + '' + + '"test"' + + '' + + ''); +Serializer.Fields.LabelSerializable.Numbers = new SerializerTestCase( + 'Numbers', + '' + + '' + + '1234567890a123a123a' + + '' + + ''); +Serializer.Fields.LabelSerializable.Emoji = new SerializerTestCase( + 'Emoji', + '' + + '' + + '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + + '' + + ''); +Serializer.Fields.LabelSerializable.Russian = new SerializerTestCase( + 'Russian', + '' + + '' + + 'ты любопытный кот' + + '' + + ''); +Serializer.Fields.LabelSerializable.Japanese = new SerializerTestCase( + 'Japanese', + '' + + '' + + 'あなたは好奇心旺盛な猫です' + + '' + + ''); +Serializer.Fields.LabelSerializable.Zalgo = new SerializerTestCase( + 'Zalgo', + '' + + '' + + 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + + '' + + ''); +Serializer.Fields.LabelSerializable.ControlChars = new SerializerTestCase( + 'ControlChars', + '' + + '' + + '' + + '' + + ''); +Serializer.Fields.LabelSerializable.testCases = [ + Serializer.Fields.LabelSerializable.Simple, + Serializer.Fields.LabelSerializable.Symbols, + Serializer.Fields.LabelSerializable.EscapedSymbols, + Serializer.Fields.LabelSerializable.SingleQuotes, + Serializer.Fields.LabelSerializable.DoubleQuotes, + Serializer.Fields.LabelSerializable.Numbers, + Serializer.Fields.LabelSerializable.Emoji, + Serializer.Fields.LabelSerializable.Russian, + Serializer.Fields.LabelSerializable.Japanese, + Serializer.Fields.LabelSerializable.Zalgo, + // TODO: Uncoment once #4945 is merged. + // Serializer.Fields.LabelSerializable.ControlChars, +]; + +Serializer.Fields.MultilineInput = new SerializerTestSuite('MultilineInput'); +Serializer.Fields.MultilineInput.SingleLine = new SerializerTestCase( + 'SingleLine', + '' + + '' + + 'test' + + '' + + ''); +Serializer.Fields.MultilineInput.MultipleLines = new SerializerTestCase( + 'MultipleLines', + '' + + '' + + 'line1&#10;line2&#10;line3' + + '' + + ''); +Serializer.Fields.MultilineInput.Indentation = new SerializerTestCase( + 'Indentation', + '' + + '' + + 'line1&#10; line2&#10; line3' + + '' + + ''); +/* eslint-disable no-tabs */ +Serializer.Fields.MultilineInput.Tabs = new SerializerTestCase( + 'Tabs', + '' + + '' + + '' + + 'line1&#10; line2&#10; line3' + + '' + + '' + + ''); +/* eslint-enable no-tabs */ +Serializer.Fields.MultilineInput.Symbols = new SerializerTestCase('Symbols', + '' + + '' + + '~`!@#$%^*()_+-={[}]|\\:;,.?/' + + '' + + ''); +Serializer.Fields.MultilineInput.EscapedSymbols = new SerializerTestCase( + 'EscapedSymbols', + '' + + '' + + '&<>' + + '' + + ''); +Serializer.Fields.MultilineInput.SingleQuotes = new SerializerTestCase( + 'SingleQuotes', + '' + + '' + + '\'test\'' + + '' + + ''); +Serializer.Fields.MultilineInput.DoubleQuotes = new SerializerTestCase( + 'DoubleQuotes', + '' + + '' + + '"test"' + + '' + + ''); +Serializer.Fields.MultilineInput.Numbers = new SerializerTestCase( + 'Numbers', + '' + + '' + + '1234567890a123a123a' + + '' + + ''); +Serializer.Fields.MultilineInput.Emoji = new SerializerTestCase( + 'Emoji', + '' + + '' + + '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + + '' + + ''); +Serializer.Fields.MultilineInput.Russian = new SerializerTestCase( + 'Russian', + '' + + '' + + 'ты любопытный кот' + + '' + + ''); +Serializer.Fields.MultilineInput.Japanese = new SerializerTestCase( + 'Japanese', + '' + + '' + + 'あなたは好奇心旺盛な猫です' + + '' + + ''); +Serializer.Fields.MultilineInput.Zalgo = new SerializerTestCase( + 'Zalgo', + '' + + '' + + 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + + '' + + ''); +Serializer.Fields.MultilineInput.ControlChars = new SerializerTestCase( + 'ControlChars', + '' + + '' + + '' + + '' + + ''); +Serializer.Fields.MultilineInput.testCases = [ + Serializer.Fields.MultilineInput.SingleLine, + Serializer.Fields.MultilineInput.MultipleLines, + Serializer.Fields.MultilineInput.Indentation, + Serializer.Fields.MultilineInput.Tabs, + Serializer.Fields.MultilineInput.Symbols, + Serializer.Fields.MultilineInput.EscapedSymbols, + Serializer.Fields.MultilineInput.SingleQuotes, + Serializer.Fields.MultilineInput.DoubleQuotes, + Serializer.Fields.MultilineInput.Numbers, + Serializer.Fields.MultilineInput.Emoji, + Serializer.Fields.MultilineInput.Russian, + Serializer.Fields.MultilineInput.Japanese, + Serializer.Fields.MultilineInput.Zalgo, + // TODO: Uncoment once #4945 is merged. + // Serializer.Fields.MultilineInput.ControlChars, +]; + +Serializer.Fields.Number = new SerializerTestSuite('Number'); +Serializer.Fields.Number.Simple = new SerializerTestCase('Simple', + '' + + '' + + '123' + + '' + + ''); +Serializer.Fields.Number.Negative = new SerializerTestCase('Negative', + '' + + '' + + '-123' + + '' + + ''); +Serializer.Fields.Number.PosInfinity = new SerializerTestCase('PosInfinity', + '' + + '' + + 'Infinity' + + '' + + ''); +Serializer.Fields.Number.NegInfinity = new SerializerTestCase('NegInfinity', + '' + + '' + + '-Infinity' + + '' + + ''); +Serializer.Fields.Number.Decimals = new SerializerTestCase('Decimals', + '' + + '' + + '1.5' + + '' + + ''); +Serializer.Fields.Number.Smallest = new SerializerTestCase('Smallest', + '' + + '' + + '5e-324' + + '' + + ''); +Serializer.Fields.Number.Largest = new SerializerTestCase('Largest', + '' + + '' + + '1.7976931348623157e+308' + + '' + + ''); +Serializer.Fields.Number.MaxPrecisionSmall = new SerializerTestCase( + 'MaxPrecisionSmall', + '' + + '' + + '1.000000000000001' + + '' + + ''); +Serializer.Fields.Number.MaxPrecisionLarge = new SerializerTestCase( + 'MaxPrecisionLarge', + '' + + '' + + '1000000000000001' + + '' + + ''); +Serializer.Fields.Number.testCases = [ + Serializer.Fields.Number.Simple, + Serializer.Fields.Number.Negative, + Serializer.Fields.Number.PosInfinity, + Serializer.Fields.Number.NegInfinity, + Serializer.Fields.Number.Decimals, + Serializer.Fields.Number.Smallest, + Serializer.Fields.Number.Largest, + Serializer.Fields.Number.MaxPrecisionSmall, + Serializer.Fields.Number.MaxPrecisionLarge, +]; + +Serializer.Fields.TextInput = new SerializerTestSuite('TextInput'); +Serializer.Fields.TextInput.Simple = new SerializerTestCase('Simple', + '' + + '' + + 'test' + + '' + + ''); +/* eslint-disable no-tabs */ +Serializer.Fields.TextInput.Tabs = new SerializerTestCase('Tabs', + '' + + '' + + 'line1 line2 line3' + + '' + + ''); +/* eslint-enable no-tabs */ +Serializer.Fields.TextInput.Symbols = new SerializerTestCase('Symbols', + '' + + '' + + '~`!@#$%^*()_+-={[}]|\\:;,.?/' + + '' + + ''); +Serializer.Fields.TextInput.EscapedSymbols = new SerializerTestCase( + 'EscapedSymbols', + '' + + '' + + '&<>' + + '' + + ''); +Serializer.Fields.TextInput.SingleQuotes = new SerializerTestCase( + 'SingleQuotes', + '' + + '' + + '\'test\'' + + '' + + ''); +Serializer.Fields.TextInput.DoubleQuotes = new SerializerTestCase( + 'DoubleQuotes', + '' + + '' + + '"test"' + + '' + + ''); +Serializer.Fields.TextInput.Numbers = new SerializerTestCase( + 'Numbers', + '' + + '' + + '1234567890a123a123a' + + '' + + ''); +Serializer.Fields.TextInput.Emoji = new SerializerTestCase( + 'Emoji', + '' + + '' + + '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + + '' + + ''); +Serializer.Fields.TextInput.Russian = new SerializerTestCase( + 'Russian', + '' + + '' + + 'ты любопытный кот' + + '' + + ''); +Serializer.Fields.TextInput.Japanese = new SerializerTestCase( + 'Japanese', + '' + + '' + + 'あなたは好奇心旺盛な猫です' + + '' + + ''); +Serializer.Fields.TextInput.Zalgo = new SerializerTestCase( + 'Zalgo', + '' + + '' + + 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + + '' + + ''); +Serializer.Fields.TextInput.ControlChars = new SerializerTestCase( + 'ControlChars', + '' + + '' + + '' + + '' + + ''); +Serializer.Fields.TextInput.testCases = [ + Serializer.Fields.TextInput.Simple, + Serializer.Fields.TextInput.Tabs, + Serializer.Fields.TextInput.Symbols, + Serializer.Fields.TextInput.EscapedSymbols, + Serializer.Fields.TextInput.SingleQuotes, + Serializer.Fields.TextInput.DoubleQuotes, + Serializer.Fields.TextInput.Numbers, + Serializer.Fields.TextInput.Emoji, + Serializer.Fields.TextInput.Russian, + Serializer.Fields.TextInput.Japanese, + Serializer.Fields.TextInput.Zalgo, + // TODO: Uncoment once #4945 is merged. + // Serializer.Fields.TextInput.ControlChars, +]; + +Serializer.Fields.Variable = new SerializerTestSuite('Variable'); +Serializer.Fields.Variable.Simple = new SerializerTestCase('Simple', + '' + + '' + + 'test' + + '' + + '' + + 'test' + + '' + + ''); +Serializer.Fields.Variable.Types = new SerializerTestCase('Types', + '' + + '' + + 'test' + + 'test2' + + 'test3' + + '' + + '' + + 'test' + + '' + + '' + + 'test2' + + '' + + '' + + 'test3' + + '' + + ''); +/* eslint-disable no-tabs */ +Serializer.Fields.Variable.Tabs = new SerializerTestCase('Tabs', + '' + + '' + + 'line1 line2 line3' + + '' + + '' + + 'line1 line2 line3' + + '' + + ''); +/* eslint-enable no-tabs */ +Serializer.Fields.Variable.Symbols = new SerializerTestCase('Symbols', + '' + + '' + + '~`!@#$%^*()_+-={[}]|\\:;,.?/' + + '' + + '' + + '~`!@#$%^*()_+-={[}]|\\:;,.?/' + + '' + + ''); +Serializer.Fields.Variable.EscapedSymbols = new SerializerTestCase( + 'EscapedSymbols', + '' + + '' + + '&<>' + + '' + + '' + + '&<>' + + '' + + ''); +Serializer.Fields.Variable.SingleQuotes = new SerializerTestCase( + 'SingleQuotes', + '' + + '' + + '\'test\'' + + '' + + '' + + '\'test\'' + + '' + + ''); +Serializer.Fields.Variable.DoubleQuotes = new SerializerTestCase( + 'DoubleQuotes', + '' + + '' + + '"test"' + + '' + + '' + + '"test"' + + '' + + ''); +Serializer.Fields.Variable.Numbers = new SerializerTestCase( + 'Numbers', + '' + + '' + + '1234567890a123a123a' + + '' + + '' + + '1234567890a123a123a' + + '' + + ''); +Serializer.Fields.Variable.Emoji = new SerializerTestCase( + 'Emoji', + '' + + '' + + '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + + '' + + '' + + '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + + '' + + ''); +Serializer.Fields.Variable.Russian = new SerializerTestCase( + 'Russian', + '' + + '' + + 'ты любопытный кот' + + '' + + '' + + 'ты любопытный кот' + + '' + + ''); +Serializer.Fields.Variable.Japanese = new SerializerTestCase( + 'Japanese', + '' + + '' + + 'あなたは好奇心旺盛な猫です' + + '' + + '' + + 'あなたは好奇心旺盛な猫です' + + '' + + ''); +Serializer.Fields.Variable.Zalgo = new SerializerTestCase( + 'Zalgo', + '' + + '' + + 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + + '' + + '' + + 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + + '' + + ''); +Serializer.Fields.Variable.ControlChars = new SerializerTestCase( + 'ControlChars', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Fields.Variable.testCases = [ + Serializer.Fields.Variable.Simple, + Serializer.Fields.Variable.Types, + Serializer.Fields.Variable.Tabs, + Serializer.Fields.Variable.Symbols, + Serializer.Fields.Variable.EscapedSymbols, + Serializer.Fields.Variable.SingleQuotes, + Serializer.Fields.Variable.DoubleQuotes, + Serializer.Fields.Variable.Numbers, + Serializer.Fields.Variable.Emoji, + Serializer.Fields.Variable.Russian, + Serializer.Fields.Variable.Japanese, + Serializer.Fields.Variable.Zalgo, + // TODO: Uncoment once #4945 is merged. + // Serializer.Fields.Variable.ControlChars, +]; + +Serializer.Fields.Variable.Id = new SerializerTestSuite('Id'); + +Serializer.Fields.Variable.Id.Length = new SerializerTestSuite('Length'); +Serializer.Fields.Variable.Id.Length.Short = new SerializerTestCase('Short', + '' + + '' + + 'test' + + '' + + '' + + 'test' + + '' + + ''); +Serializer.Fields.Variable.Id.Length.Long = new SerializerTestCase('Long', + '' + + '' + + 'test' + + '' + + '' + + 'test' + + '' + + ''); +Serializer.Fields.Variable.Id.Length.testCases = [ + Serializer.Fields.Variable.Id.Length.Short, + Serializer.Fields.Variable.Id.Length.Long, +]; + +Serializer.Fields.Variable.Id.Chars = new SerializerTestSuite('Chars'); +Serializer.Fields.Variable.Id.Chars.Symbols = new SerializerTestCase('Symbols', + '' + + '' + + 'test' + + 'test2' + + '' + + '' + + 'test' + + '' + + '' + + 'test2' + + '' + + ''); +Serializer.Fields.Variable.Id.Chars.Uppercase = new SerializerTestCase('Uppercase', + '' + + '' + + 'test' + + 'test2' + + '' + + '' + + 'test' + + '' + + '' + + 'test2' + + '' + + ''); +Serializer.Fields.Variable.Id.Chars.Lowercase = new SerializerTestCase('Lowercase', + '' + + '' + + 'test' + + 'test2' + + '' + + '' + + 'test' + + '' + + '' + + 'test2' + + '' + + ''); +Serializer.Fields.Variable.Id.Chars.Numbers = new SerializerTestCase('Numbers', + '' + + '' + + 'test' + + '' + + '' + + 'test' + + '' + + ''); +Serializer.Fields.Variable.Id.Chars.testCases = [ + Serializer.Fields.Variable.Id.Chars.Symbols, + Serializer.Fields.Variable.Id.Chars.Uppercase, + Serializer.Fields.Variable.Id.Chars.Lowercase, + Serializer.Fields.Variable.Id.Chars.Numbers, +]; + +Serializer.Fields.Variable.Id.testSuites = [ + Serializer.Fields.Variable.Id.Length, + Serializer.Fields.Variable.Id.Chars, +]; + +Serializer.Fields.Variable.testSuites = [ + Serializer.Fields.Variable.Id, +]; + +Serializer.Fields.testSuites = [ + Serializer.Fields.Angle, + Serializer.Fields.Checkbox, + Serializer.Fields.Colour, + Serializer.Fields.Dropdown, + Serializer.Fields.LabelSerializable, + Serializer.Fields.MultilineInput, + Serializer.Fields.Number, + Serializer.Fields.TextInput, + Serializer.Fields.Variable, +]; + +Serializer.Icons = new SerializerTestSuite('Icons'); + +Serializer.Icons.Comment = new SerializerTestSuite('Comment'); +Serializer.Icons.Comment.Basic = new SerializerTestCase('Basic', + '' + + '' + + 'test' + + '' + + ''); + +Serializer.Icons.Comment.Size = new SerializerTestSuite('Size'); +Serializer.Icons.Comment.Size.Different = new SerializerTestCase('Different', + '' + + '' + + 'test' + + '' + + ''); +Serializer.Icons.Comment.Size.Large = new SerializerTestCase('Large', + '' + + '' + + 'test' + + '' + + ''); +Serializer.Icons.Comment.Size.testCases = [ + Serializer.Icons.Comment.Size.Different, + Serializer.Icons.Comment.Size.Large, +]; + +Serializer.Icons.Comment.Pinned = new SerializerTestSuite('Pinned'); +Serializer.Icons.Comment.Pinned.True = new SerializerTestCase('True', + '' + + '' + + 'test' + + '' + + ''); +Serializer.Icons.Comment.Pinned.False = new SerializerTestCase('False', + '' + + '' + + 'test' + + '' + + ''); +Serializer.Icons.Comment.Pinned.testCases = [ + Serializer.Icons.Comment.Pinned.True, + Serializer.Icons.Comment.Pinned.False, +]; + +Serializer.Icons.Comment.Text = new SerializerTestSuite('Text'); +Serializer.Icons.Comment.Text.Symbols = new SerializerTestCase('Symbols', + '' + + '' + + '~`!@#$%^*()_+-={[}]|\\:;,.?/' + + '' + + ''); +Serializer.Icons.Comment.Text.EscapedSymbols = new SerializerTestCase( + 'EscapedSymbols', + '' + + '' + + '&<>' + + '' + + ''); +Serializer.Icons.Comment.Text.SingleQuotes = new SerializerTestCase( + 'SingleQuotes', + '' + + '' + + '\'test\'' + + '' + + ''); +Serializer.Icons.Comment.Text.DoubleQuotes = new SerializerTestCase( + 'DoubleQuotes', + '' + + '' + + '"test"' + + '' + + ''); +Serializer.Icons.Comment.Text.Numbers = new SerializerTestCase( + 'Numbers', + '' + + '' + + '1234567890a123a123a' + + '' + + ''); +Serializer.Icons.Comment.Text.Emoji = new SerializerTestCase( + 'Emoji', + '' + + '' + + '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + + '' + + ''); +Serializer.Icons.Comment.Text.Russian = new SerializerTestCase( + 'Russian', + '' + + '' + + 'ты любопытный кот' + + '' + + ''); +Serializer.Icons.Comment.Text.Japanese = new SerializerTestCase( + 'Japanese', + '' + + '' + + 'あなたは好奇心旺盛な猫です' + + '' + + ''); +Serializer.Icons.Comment.Text.Zalgo = new SerializerTestCase( + 'Zalgo', + '' + + '' + + 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + + '' + + ''); +Serializer.Icons.Comment.Text.ControlChars = new SerializerTestCase( + 'ControlChars', + '' + + '' + + '' + + '' + + ''); +Serializer.Icons.Comment.Text.testCases = [ + Serializer.Icons.Comment.Text.Symbols, + Serializer.Icons.Comment.Text.EscapedSymbols, + Serializer.Icons.Comment.Text.SingleQuotes, + Serializer.Icons.Comment.Text.DoubleQuotes, + Serializer.Icons.Comment.Text.Numbers, + Serializer.Icons.Comment.Text.Emoji, + Serializer.Icons.Comment.Text.Russian, + Serializer.Icons.Comment.Text.Japanese, + Serializer.Icons.Comment.Text.Zalgo, + // TODO: Uncoment once #4945 is merged. + // Serializer.Icons.Comment.Text.ControlChars, +]; + +Serializer.Icons.Comment.testSuites = [ + Serializer.Icons.Comment.Size, + Serializer.Icons.Comment.Pinned, + Serializer.Icons.Comment.Text, +]; + +Serializer.Icons.Comment.testCases = [ + Serializer.Icons.Comment.Basic, +]; + +Serializer.Icons.testSuites = [Serializer.Icons.Comment]; + +Serializer.Connections = new SerializerTestSuite('Connections'); + +Serializer.Connections.Child = new SerializerTestSuite('Child'); +Serializer.Connections.Child.Value = new SerializerTestCase('Value', + '' + + '' + + '' + + '' + + 'TRUE' + + '' + + '' + + '' + + ''); +Serializer.Connections.Child.Statement = new SerializerTestCase('Statement', + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Child.Next = new SerializerTestCase('Next', + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Child.Row = new SerializerTestCase('Row', + '' + + '' + + '' + + '' + + '' + + '' + + 'TRUE' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Child.Nested = new SerializerTestCase('Nested', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Child.Stack = new SerializerTestCase('Stack', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Child.testCases = [ + Serializer.Connections.Child.Value, + Serializer.Connections.Child.Statement, + Serializer.Connections.Child.Next, + Serializer.Connections.Child.Row, + Serializer.Connections.Child.Nested, + Serializer.Connections.Child.Stack, +]; + +Serializer.Connections.Shadow = new SerializerTestSuite('Shadow'); +Serializer.Connections.Shadow.Value = new SerializerTestCase('Value', + '' + + '' + + '' + + '' + + 'TRUE' + + '' + + '' + + '' + + ''); +Serializer.Connections.Shadow.Statement = new SerializerTestCase('Statement', + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Shadow.Next = new SerializerTestCase('Next', + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Shadow.Row = new SerializerTestCase('Row', + '' + + '' + + '' + + '' + + '' + + '' + + 'TRUE' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Shadow.Nested = new SerializerTestCase('Nested', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Shadow.Stack = new SerializerTestCase('Stack', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.Shadow.testCases = [ + Serializer.Connections.Shadow.Value, + Serializer.Connections.Shadow.Statement, + Serializer.Connections.Shadow.Next, + Serializer.Connections.Shadow.Row, + Serializer.Connections.Shadow.Nested, + Serializer.Connections.Shadow.Stack, +]; + +Serializer.Connections.OverwrittenShadow = + new SerializerTestSuite('OverwrittenShadow'); +Serializer.Connections.OverwrittenShadow.Value = new SerializerTestCase( + 'Value', + '' + + '' + + '' + + '' + + 'TRUE' + + '' + + '' + + 'TRUE' + + '' + + '' + + '' + + ''); +Serializer.Connections.OverwrittenShadow.Statement = new SerializerTestCase( + 'Statement', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.OverwrittenShadow.Next = new SerializerTestCase('Next', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.OverwrittenShadow.Row = new SerializerTestCase('Row', + '' + + '' + + '' + + '' + + '' + + '' + + 'TRUE' + + '' + + '' + + '' + + '' + + 'TRUE' + + '' + + '' + + '' + + ''); +Serializer.Connections.OverwrittenShadow.Nested = new SerializerTestCase( + 'Nested', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.OverwrittenShadow.Stack = new SerializerTestCase('Stack', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Connections.OverwrittenShadow.testCases = [ + Serializer.Connections.OverwrittenShadow.Value, + Serializer.Connections.OverwrittenShadow.Statement, + Serializer.Connections.OverwrittenShadow.Next, + Serializer.Connections.OverwrittenShadow.Row, + Serializer.Connections.OverwrittenShadow.Nested, + Serializer.Connections.OverwrittenShadow.Stack, +]; + +Serializer.Connections.testSuites = [ + Serializer.Connections.Child, + Serializer.Connections.Shadow, + Serializer.Connections.OverwrittenShadow, +]; + +Serializer.Mutations = new SerializerTestSuite('Mutations'); +Serializer.Mutations.ListGetIndex = new SerializerTestCase('ListGetIndex', + '' + + '' + + '' + + 'REMOVE' + + 'LAST' + + '' + + ''); +Serializer.Mutations.ListSetIndex = new SerializerTestCase('ListSetIndex', + '' + + '' + + '' + + 'SET' + + 'LAST' + + '' + + ''); +Serializer.Mutations.ListGetSublist = new SerializerTestCase('ListGetSublist', + '' + + '' + + '' + + 'FIRST' + + 'LAST' + + '' + + ''); +Serializer.Mutations.MathNumberProperty = new SerializerTestCase( + 'MathNumberProperty', + '' + + '' + + '' + + 'DIVISIBLE_BY' + + '' + + ''); +Serializer.Mutations.MathOnList = new SerializerTestCase( + 'MathOnList', + '' + + '' + + '' + + 'MODE' + + '' + + ''); +Serializer.Mutations.TextJoin = new SerializerTestCase( + 'TextJoin', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.TextCharAt = new SerializerTestCase( + 'TextCharAt', + '' + + '' + + '' + + 'FIRST' + + '' + + ''); +Serializer.Mutations.TextGetSubstring = new SerializerTestCase( + 'TextGetSubstring', + '' + + '' + + '' + + 'FROM_START' + + 'LAST' + + '' + + ''); +Serializer.Mutations.TextPromptExt = new SerializerTestCase( + 'TextPromptExt', + '' + + '' + + '' + + 'NUMBER' + + '' + + ''); +Serializer.Mutations.TextPrompt = new SerializerTestCase( + 'TextPrompt', + '' + + '' + + '' + + 'NUMBER' + + '' + + '' + + ''); +Serializer.Mutations.testCases = [ + Serializer.Mutations.ListGetIndex, + Serializer.Mutations.ListSetIndex, + Serializer.Mutations.ListGetSublist, + Serializer.Mutations.MathNumberProperty, + Serializer.Mutations.MathOnList, + Serializer.Mutations.TextJoin, + Serializer.Mutations.TextCharAt, + Serializer.Mutations.TextGetSubstring, + Serializer.Mutations.TextPromptExt, + Serializer.Mutations.TextPrompt, +]; + +Serializer.Mutations.ControlsIf = new SerializerTestSuite('ControlsIf'); +Serializer.Mutations.ControlsIf.NoMutation = new SerializerTestCase( + 'NoMutation', + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.ElseIfAndElse = new SerializerTestCase( + 'ElseIfAndElse', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.MultipleElseIfs = new SerializerTestCase( + 'MultipleElseIfs', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.MutlipleElseIfsAndElse = new SerializerTestCase( + 'MutlipleElseIfsAndElse', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.testCases = [ + Serializer.Mutations.ControlsIf.NoMutation, + Serializer.Mutations.ControlsIf.ElseIfAndElse, + Serializer.Mutations.ControlsIf.MultipleElseIfs, + Serializer.Mutations.ControlsIf.MutlipleElseIfsAndElse, +]; + +Serializer.Mutations.ControlsIf.ElseIf = new SerializerTestSuite('ElseIf'); +Serializer.Mutations.ControlsIf.ElseIf.NoChild = new SerializerTestCase( + 'NoChild', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.ElseIf.Child = new SerializerTestCase( + 'Child', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.ElseIf.Shadow = new SerializerTestCase( + 'Shadow', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.ElseIf.OverwrittenShadow = new SerializerTestCase( + 'OverwrittenShadow', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.ElseIf.testCases = [ + Serializer.Mutations.ControlsIf.ElseIf.NoChild, + Serializer.Mutations.ControlsIf.ElseIf.Child, + Serializer.Mutations.ControlsIf.ElseIf.Shadow, + Serializer.Mutations.ControlsIf.ElseIf.OverwrittenShadow, +]; + +Serializer.Mutations.ControlsIf.Else = new SerializerTestSuite('Else'); +Serializer.Mutations.ControlsIf.Else.NoChild = new SerializerTestCase( + 'NoChild', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.Else.Child = new SerializerTestCase( + 'Child', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.Else.Shadow = new SerializerTestCase( + 'Shadow', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.Else.OverwrittenShadow = new SerializerTestCase( + 'OverwrittenShadow', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ControlsIf.Else.testCases = [ + Serializer.Mutations.ControlsIf.Else.NoChild, + Serializer.Mutations.ControlsIf.Else.Child, + Serializer.Mutations.ControlsIf.Else.Shadow, + Serializer.Mutations.ControlsIf.Else.OverwrittenShadow, +]; + +Serializer.Mutations.ControlsIf.testSuites = [ + Serializer.Mutations.ControlsIf.ElseIf, + Serializer.Mutations.ControlsIf.Else, +]; + +Serializer.Mutations.ListCreate = new SerializerTestSuite('ListCreate'); +Serializer.Mutations.ListCreate.Default = new SerializerTestCase( + 'Default', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ListCreate.ZeroInputs = new SerializerTestCase( + 'ZeroInputs', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ListCreate.MultipleInputs = new SerializerTestCase( + 'MultipleInputs', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ListCreate.testCases = [ + Serializer.Mutations.ListCreate.Default, + Serializer.Mutations.ListCreate.ZeroInputs, + Serializer.Mutations.ListCreate.MultipleInputs, +]; + +Serializer.Mutations.ListCreate.OneInput = new SerializerTestSuite('OneIput'); +Serializer.Mutations.ListCreate.OneInput.NoChild = new SerializerTestCase( + 'NoChild', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ListCreate.OneInput.Child = new SerializerTestCase( + 'Child', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ListCreate.OneInput.Shadow = new SerializerTestCase( + 'Shadow', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ListCreate.OneInput.OverwrittenShadow = + new SerializerTestCase( + 'OverwrittenShadow', + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.ListCreate.OneInput.testCases = [ + Serializer.Mutations.ListCreate.OneInput.NoChild, + Serializer.Mutations.ListCreate.OneInput.Child, + Serializer.Mutations.ListCreate.OneInput.Shadow, + Serializer.Mutations.ListCreate.OneInput.OverwrittenShadow, +]; + +Serializer.Mutations.ListCreate.testSuites = [ + Serializer.Mutations.ListCreate.OneInput, +]; + +Serializer.Mutations.Procedure = new SerializerTestSuite('Procedure'); +Serializer.Mutations.Procedure.NoMutation = new SerializerTestCase('NoMutation', + '' + + '' + + 'do something' + + '' + + ''); +Serializer.Mutations.Procedure.Variables = new SerializerTestCase('Variables', + '' + + '' + + 'x' + + 'y' + + 'z' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + 'do something' + + '' + + ''); +Serializer.Mutations.Procedure.NoStatements = new SerializerTestCase( + 'NoStatements', + '' + + '' + + '' + + 'do something' + + '' + + ''); +Serializer.Mutations.Procedure.IfReturn = new SerializerTestCase( + 'IfReturn', + '' + + '' + + 'do something' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.Procedure.Caller = new SerializerTestCase( + 'Caller', + '' + + '' + + 'x' + + 'y' + + '' + + '' + + '' + + '' + + '' + + '' + + 'do something' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.Procedure.CollapsedProceduresCallreturn = new SerializerTestCase( + 'CollapsedProceduresCallreturn', + '' + + '' + + 'x' + + '' + + '' + + '' + + '' + + '' + + 'do something' + + 'Describe this function...' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.Procedure.CollapsedProceduresCallnoreturn = new SerializerTestCase( + 'CollapsedProceduresCallnoreturn', + '' + + '' + + 'x' + + '' + + '' + + '' + + '' + + '' + + 'do something' + + 'Describe this function...' + + '' + + '' + + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.Procedure.testCases = [ + Serializer.Mutations.Procedure.NoMutation, + Serializer.Mutations.Procedure.Variables, + Serializer.Mutations.Procedure.NoStatements, + Serializer.Mutations.Procedure.IfReturn, + Serializer.Mutations.Procedure.Caller, + Serializer.Mutations.Procedure.CollapsedProceduresCallreturn, + Serializer.Mutations.Procedure.CollapsedProceduresCallnoreturn, +]; + +Serializer.Mutations.Procedure.Names = new SerializerTestSuite('Names'); +Serializer.Mutations.Procedure.Names.Symbols = new SerializerTestCase('Symbols', + '' + + '' + + '~`!@#$%^*()_+-={[}]|\\:;,.?/' + + '' + + ''); +Serializer.Mutations.Procedure.Names.EscapedSymbols = new SerializerTestCase( + 'EscapedSymbols', + '' + + '' + + '&<>' + + '' + + ''); +Serializer.Mutations.Procedure.Names.SingleQuotes = new SerializerTestCase( + 'SingleQuotes', + '' + + '' + + '\'test\'' + + '' + + ''); +Serializer.Mutations.Procedure.Names.DoubleQuotes = new SerializerTestCase( + 'DoubleQuotes', + '' + + '' + + '"test"' + + '' + + ''); +Serializer.Mutations.Procedure.Names.Numbers = new SerializerTestCase( + 'Numbers', + '' + + '' + + '1234567890a123a123a' + + '' + + ''); +Serializer.Mutations.Procedure.Names.Emoji = new SerializerTestCase( + 'Emoji', + '' + + '' + + '😀👋🏿👋🏾👋🏽👋🏼👋🏻😀❤❤❤' + + '' + + ''); +Serializer.Mutations.Procedure.Names.Russian = new SerializerTestCase( + 'Russian', + '' + + '' + + 'ты любопытный кот' + + '' + + ''); +Serializer.Mutations.Procedure.Names.Japanese = new SerializerTestCase( + 'Japanese', + '' + + '' + + 'あなたは好奇心旺盛な猫です' + + '' + + ''); +Serializer.Mutations.Procedure.Names.Zalgo = new SerializerTestCase( + 'Zalgo', + '' + + '' + + 'z̴̪͈̲̜͕̽̈̀͒͂̓̋̉̍a̸̧̧̜̻̘̤̫̱̲͎̞̻͆̋ļ̸̛̖̜̳͚̖͔̟̈́͂̉̀͑̑͑̎ǵ̸̫̳̽̐̃̑̚̕o̶͇̫͔̮̼̭͕̹̘̬͋̀͆̂̇̋͊̒̽' + + '' + + ''); +Serializer.Mutations.Procedure.Names.ControlChars = new SerializerTestCase( + 'ControlChars', + '' + + '' + + '' + + '' + + ''); +Serializer.Mutations.Procedure.Names.testCases = [ + Serializer.Mutations.Procedure.Names.Symbols, + Serializer.Mutations.Procedure.Names.EscapedSymbols, + Serializer.Mutations.Procedure.Names.SingleQuotes, + Serializer.Mutations.Procedure.Names.DoubleQuotes, + Serializer.Mutations.Procedure.Names.Numbers, + Serializer.Mutations.Procedure.Names.Emoji, + Serializer.Mutations.Procedure.Names.Russian, + Serializer.Mutations.Procedure.Names.Japanese, + Serializer.Mutations.Procedure.Names.Zalgo, + // TODO: Uncoment once #4945 is merged. + // Serializer.Mutations.Procedure.Names.ControlChars, +]; + +Serializer.Mutations.Procedure.testSuites = [ + Serializer.Mutations.Procedure.Names, +]; + +Serializer.Mutations.testSuites = [ + Serializer.Mutations.ControlsIf, + Serializer.Mutations.ListCreate, + Serializer.Mutations.Procedure, +]; + +Serializer.testSuites = [ + Serializer.Attributes, + Serializer.Fields, + Serializer.Icons, + Serializer.Connections, + Serializer.Mutations, +]; + +const runSerializerTestSuite = (serializer, deserializer, testSuite) => { + const workspaces = Blockly.serialization.workspaces; + + const createTestFunction = function(test) { + return function() { + Blockly.Xml.domToWorkspace( + Blockly.Xml.textToDom(test.xml), this.workspace); + if (serializer && deserializer) { + const save = serializer(workspaces.save(this.workspace)); + this.workspace.clear(); + workspaces.load(deserializer(save), this.workspace); + } + const newXml = Blockly.Xml.workspaceToDom(this.workspace); + chai.assert.equal(Blockly.Xml.domToText(newXml), test.xml); + }; + }; + + // This takes in a suite, but we don't care. + const createTestCaseFunction = function(_) { + return createTestFunction; + }; + + let suiteCall = (testSuite.skip ? suite.skip : suite); + suiteCall = (testSuite.only ? suite.only : suiteCall); + + suiteCall(testSuite.title, function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + sharedTestTeardown.call(this); + }); + + runTestSuites( + testSuite.testSuites, createTestCaseFunction); + runTestCases(testSuite.testCases, createTestFunction); + }); +}; + +runSerializerTestSuite(null, null, Serializer); +runSerializerTestSuite((state) => state, (state) => state, Serializer); diff --git a/tests/mocha/shortcut_registry_test.js b/tests/mocha/shortcut_registry_test.js index c5bbf1d9a92..f888e884617 100644 --- a/tests/mocha/shortcut_registry_test.js +++ b/tests/mocha/shortcut_registry_test.js @@ -1,363 +1,363 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.shortcutRegistry'); - -const {createKeyDownEvent} = goog.require('Blockly.test.helpers.userInput'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Keyboard Shortcut Registry Test', function() { - setup(function() { - sharedTestSetup.call(this); - this.registry = Blockly.ShortcutRegistry.registry; - this.registry.reset(); - Blockly.ShortcutItems.registerDefaultShortcuts(); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('Registering', function() { - test('Registering a shortcut', function() { - const testShortcut = {'name': 'test_shortcut'}; - this.registry.register(testShortcut, true); - const shortcut = this.registry.registry_['test_shortcut']; - chai.assert.equal(shortcut.name, 'test_shortcut'); - }); - test('Registers shortcut with same name', function() { - const registry = this.registry; - const testShortcut = {'name': 'test_shortcut'}; - - registry.registry_['test_shortcut'] = [testShortcut]; - - const shouldThrow = function() { - registry.register(testShortcut); - }; - chai.assert.throws( - shouldThrow, Error, - 'Shortcut with name "test_shortcut" already exists.'); - }); - test( - 'Registers shortcut with same name opt_allowOverrides=true', - function() { - const registry = this.registry; - const testShortcut = {'name': 'test_shortcut'}; - const otherShortcut = { - 'name': 'test_shortcut', - 'callback': function() {}, - }; - - registry.registry_['test_shortcut'] = [testShortcut]; - - const shouldNotThrow = function() { - registry.register(otherShortcut, true); - }; - chai.assert.doesNotThrow(shouldNotThrow); - chai.assert.exists(registry.registry_['test_shortcut'].callback); - }); - }); - - suite('Unregistering', function() { - test('Unregistering a shortcut', function() { - const testShortcut = {'name': 'test_shortcut'}; - this.registry.registry_['test'] = [testShortcut]; - chai.assert.isOk(this.registry.registry_['test']); - this.registry.unregister('test', 'test_shortcut'); - chai.assert.isUndefined(this.registry.registry_['test']); - }); - test('Unregistering a nonexistent shortcut', function() { - const consoleStub = sinon.stub(console, 'warn'); - chai.assert.isUndefined(this.registry.registry_['test']); - - const registry = this.registry; - chai.assert.isFalse(registry.unregister('test', 'test_shortcut')); - sinon.assert.calledOnceWithExactly(consoleStub, 'Keyboard shortcut with name "test" not found.'); - }); - test('Unregistering a shortcut with key mappings', function() { - const testShortcut = {'name': 'test_shortcut'}; - this.registry.keyMap_['keyCode'] = ['test_shortcut']; - this.registry.registry_['test_shortcut'] = testShortcut; - - this.registry.unregister('test_shortcut'); - - const shortcut = this.registry.registry_['test']; - const keyMappings = this.registry.keyMap_['keyCode']; - chai.assert.isUndefined(shortcut); - chai.assert.isUndefined(keyMappings); - }); - test('Unregistering a shortcut with colliding key mappings', function() { - const testShortcut = {'name': 'test_shortcut'}; - this.registry.keyMap_['keyCode'] = ['test_shortcut', 'other_shortcutt']; - this.registry.registry_['test_shortcut'] = testShortcut; - - this.registry.unregister('test_shortcut'); - - const shortcut = this.registry.registry_['test']; - const keyMappings = this.registry.keyMap_['keyCode']; - chai.assert.lengthOf(keyMappings, 1); - chai.assert.isUndefined(shortcut); - }); - }); - - suite('addKeyMapping', function() { - test('Adds a key mapping', function() { - this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; - - this.registry.addKeyMapping('keyCode', 'test_shortcut'); - - const shortcutNames = this.registry.keyMap_['keyCode']; - chai.assert.lengthOf(shortcutNames, 1); - chai.assert.equal(shortcutNames[0], 'test_shortcut'); - }); - test('Adds a colliding key mapping - opt_allowCollision=true', function() { - this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; - this.registry.keyMap_['keyCode'] = ['test_shortcut_2']; - - this.registry.addKeyMapping('keyCode', 'test_shortcut', true); - - const shortcutNames = this.registry.keyMap_['keyCode']; - chai.assert.lengthOf(shortcutNames, 2); - chai.assert.equal(shortcutNames[0], 'test_shortcut'); - chai.assert.equal(shortcutNames[1], 'test_shortcut_2'); - }); - test('Adds a colliding key mapping - opt_allowCollision=false', function() { - this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; - this.registry.keyMap_['keyCode'] = ['test_shortcut_2']; - - const registry = this.registry; - const shouldThrow = function() { - registry.addKeyMapping('keyCode', 'test_shortcut'); - }; - chai.assert.throws( - shouldThrow, Error, - 'Shortcut with name "test_shortcut" collides with shortcuts test_shortcut_2'); - }); - }); - - suite('removeKeyMapping', function() { - test('Removes a key mapping', function() { - this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; - this.registry.keyMap_['keyCode'] = ['test_shortcut', 'test_shortcut_2']; - - const isRemoved = - this.registry.removeKeyMapping('keyCode', 'test_shortcut'); - - const shortcutNames = this.registry.keyMap_['keyCode']; - chai.assert.lengthOf(shortcutNames, 1); - chai.assert.equal(shortcutNames[0], 'test_shortcut_2'); - chai.assert.isTrue(isRemoved); - }); - test('Removes last key mapping for a key', function() { - this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; - this.registry.keyMap_['keyCode'] = ['test_shortcut']; - - this.registry.removeKeyMapping('keyCode', 'test_shortcut'); - - const shortcutNames = this.registry.keyMap_['keyCode']; - chai.assert.isUndefined(shortcutNames); - }); - test('Removes a key map that does not exist opt_quiet=false', function() { - const consoleStub = sinon.stub(console, 'warn'); - this.registry.keyMap_['keyCode'] = ['test_shortcut_2']; - - const isRemoved = - this.registry.removeKeyMapping('keyCode', 'test_shortcut'); - - chai.assert.isFalse(isRemoved); - sinon.assert.calledOnceWithExactly( - consoleStub, - 'No keyboard shortcut with name "test_shortcut" registered with key code "keyCode"'); - }); - test( - 'Removes a key map that does not exist from empty key mapping opt_quiet=false', - function() { - const consoleStub = sinon.stub(console, 'warn'); - - const isRemoved = - this.registry.removeKeyMapping('keyCode', 'test_shortcut'); - - chai.assert.isFalse(isRemoved); - sinon.assert.calledOnceWithExactly( - consoleStub, - 'No keyboard shortcut with name "test_shortcut" registered with key code "keyCode"'); - }); - }); - - suite('Setters/Getters', function() { - test('Sets the key map', function() { - this.registry.setKeyMap({'keyCode': ['test_shortcut']}); - chai.assert.lengthOf(Object.keys(this.registry.keyMap_), 1); - chai.assert.equal(this.registry.keyMap_['keyCode'][0], 'test_shortcut'); - }); - test('Gets a copy of the key map', function() { - this.registry.keyMap_['keyCode'] = ['a']; - const keyMapCopy = this.registry.getKeyMap(); - keyMapCopy['keyCode'] = ['b']; - chai.assert.equal(this.registry.keyMap_['keyCode'][0], 'a'); - }); - test('Gets a copy of the registry', function() { - this.registry.registry_['shortcutName'] = {'name': 'shortcutName'}; - const registrycopy = this.registry.getRegistry(); - registrycopy['shortcutName']['name'] = 'shortcutName1'; - chai.assert.equal( - this.registry.registry_['shortcutName']['name'], 'shortcutName'); - }); - test('Gets keyboard shortcuts from a key code', function() { - this.registry.keyMap_['keyCode'] = ['shortcutName']; - const shortcutNames = this.registry.getShortcutNamesByKeyCode('keyCode'); - chai.assert.equal(shortcutNames[0], 'shortcutName'); - }); - test('Gets keycodes by shortcut name', function() { - this.registry.keyMap_['keyCode'] = ['shortcutName']; - this.registry.keyMap_['keyCode1'] = ['shortcutName']; - const shortcutNames = - this.registry.getKeyCodesByShortcutName('shortcutName'); - chai.assert.lengthOf(shortcutNames, 2); - chai.assert.equal(shortcutNames[0], 'keyCode'); - chai.assert.equal(shortcutNames[1], 'keyCode1'); - }); - }); - - suite('onKeyDown', function() { - function addShortcut(registry, shortcut, keyCode, returns) { - registry.register(shortcut, true); - registry.addKeyMapping(keyCode, shortcut.name, true); - return sinon.stub(shortcut, 'callback').returns(returns); - } - - setup(function() { - this.testShortcut = { - 'name': 'test_shortcut', - 'callback': function() { - return true; - }, - 'precondition': function() { - return true; - }, - }; - this.callBackStub = - addShortcut(this.registry, this.testShortcut, Blockly.utils.KeyCodes.C, true); - }); - test('Execute a shortcut from event', function() { - const event = createKeyDownEvent(Blockly.utils.KeyCodes.C); - chai.assert.isTrue(this.registry.onKeyDown(this.workspace, event)); - sinon.assert.calledOnce(this.callBackStub); - }); - test('No shortcut executed from event', function() { - const event = createKeyDownEvent(Blockly.utils.KeyCodes.D); - chai.assert.isFalse(this.registry.onKeyDown(this.workspace, event)); - }); - test('No precondition available - execute callback', function() { - delete this.testShortcut['precondition']; - const event = createKeyDownEvent(Blockly.utils.KeyCodes.C); - chai.assert.isTrue(this.registry.onKeyDown(this.workspace, event)); - sinon.assert.calledOnce(this.callBackStub); - }); - test('Execute all shortcuts in list', function() { - const event = createKeyDownEvent(Blockly.utils.KeyCodes.C); - const testShortcut2 = { - 'name': 'test_shortcut_2', - 'callback': function() { - return false; - }, - 'precondition': function() { - return false; - }, - }; - const testShortcut2Stub = - addShortcut(this.registry, testShortcut2, Blockly.utils.KeyCodes.C, false); - chai.assert.isTrue(this.registry.onKeyDown(this.workspace, event)); - sinon.assert.calledOnce(testShortcut2Stub); - sinon.assert.calledOnce(this.callBackStub); - }); - test('Stop executing shortcut when event is handled', function() { - const event = createKeyDownEvent(Blockly.utils.KeyCodes.C); - const testShortcut2 = { - 'name': 'test_shortcut_2', - 'callback': function() { - return false; - }, - 'precondition': function() { - return false; - }, - }; - const testShortcut2Stub = - addShortcut(this.registry, testShortcut2, Blockly.utils.KeyCodes.C, true); - chai.assert.isTrue(this.registry.onKeyDown(this.workspace, event)); - sinon.assert.calledOnce(testShortcut2Stub); - sinon.assert.notCalled(this.callBackStub); - }); - }); - - suite('createSerializedKey', function() { - test('Serialize key', function() { - const serializedKey = - this.registry.createSerializedKey(Blockly.utils.KeyCodes.A); - chai.assert.equal(serializedKey, '65'); - }); - - test('Serialize key code and modifier', function() { - const serializedKey = this.registry.createSerializedKey( - Blockly.utils.KeyCodes.A, [Blockly.utils.KeyCodes.CTRL]); - chai.assert.equal(serializedKey, 'Control+65'); - }); - test('Serialize only a modifier', function() { - const serializedKey = this.registry.createSerializedKey( - null, [Blockly.utils.KeyCodes.CTRL]); - chai.assert.equal(serializedKey, 'Control'); - }); - test('Serialize multiple modifiers', function() { - const serializedKey = this.registry.createSerializedKey( - null, [Blockly.utils.KeyCodes.CTRL, Blockly.utils.KeyCodes.SHIFT]); - chai.assert.equal(serializedKey, 'Shift+Control'); - }); - test('Order of modifiers should result in same serialized key', function() { - const serializedKey = this.registry.createSerializedKey( - null, [Blockly.utils.KeyCodes.CTRL, Blockly.utils.KeyCodes.SHIFT]); - chai.assert.equal(serializedKey, 'Shift+Control'); - const serializedKeyNewOrder = this.registry.createSerializedKey( - null, [Blockly.utils.KeyCodes.SHIFT, Blockly.utils.KeyCodes.CTRL]); - chai.assert.equal(serializedKeyNewOrder, 'Shift+Control'); - }); - }); - - suite('serializeKeyEvent', function() { - test('Serialize key', function() { - const mockEvent = createKeyDownEvent(Blockly.utils.KeyCodes.A); - const serializedKey = this.registry.serializeKeyEvent_(mockEvent); - chai.assert.equal(serializedKey, '65'); - }); - test('Serialize key code and modifier', function() { - const mockEvent = createKeyDownEvent( - Blockly.utils.KeyCodes.A, [Blockly.utils.KeyCodes.CTRL]); - const serializedKey = this.registry.serializeKeyEvent_(mockEvent); - chai.assert.equal(serializedKey, 'Control+65'); - }); - test('Serialize only a modifier', function() { - const mockEvent = - createKeyDownEvent(null, [Blockly.utils.KeyCodes.CTRL]); - const serializedKey = this.registry.serializeKeyEvent_(mockEvent); - chai.assert.equal(serializedKey, 'Control'); - }); - test('Serialize multiple modifiers', function() { - const mockEvent = createKeyDownEvent( - null, - [Blockly.utils.KeyCodes.CTRL, Blockly.utils.KeyCodes.SHIFT]); - const serializedKey = this.registry.serializeKeyEvent_(mockEvent); - chai.assert.equal(serializedKey, 'Shift+Control'); - }); - test('Throw error when incorrect modifier', function() { - const registry = this.registry; - const shouldThrow = function() { - registry.createSerializedKey(Blockly.utils.KeyCodes.K, ['s']); - }; - chai.assert.throws(shouldThrow, Error, 's is not a valid modifier key.'); - }); - }); - - teardown(function() {}); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.shortcutRegistry'); + +const {createKeyDownEvent} = goog.require('Blockly.test.helpers.userInput'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Keyboard Shortcut Registry Test', function() { + setup(function() { + sharedTestSetup.call(this); + this.registry = Blockly.ShortcutRegistry.registry; + this.registry.reset(); + Blockly.ShortcutItems.registerDefaultShortcuts(); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('Registering', function() { + test('Registering a shortcut', function() { + const testShortcut = {'name': 'test_shortcut'}; + this.registry.register(testShortcut, true); + const shortcut = this.registry.registry_['test_shortcut']; + chai.assert.equal(shortcut.name, 'test_shortcut'); + }); + test('Registers shortcut with same name', function() { + const registry = this.registry; + const testShortcut = {'name': 'test_shortcut'}; + + registry.registry_['test_shortcut'] = [testShortcut]; + + const shouldThrow = function() { + registry.register(testShortcut); + }; + chai.assert.throws( + shouldThrow, Error, + 'Shortcut with name "test_shortcut" already exists.'); + }); + test( + 'Registers shortcut with same name opt_allowOverrides=true', + function() { + const registry = this.registry; + const testShortcut = {'name': 'test_shortcut'}; + const otherShortcut = { + 'name': 'test_shortcut', + 'callback': function() {}, + }; + + registry.registry_['test_shortcut'] = [testShortcut]; + + const shouldNotThrow = function() { + registry.register(otherShortcut, true); + }; + chai.assert.doesNotThrow(shouldNotThrow); + chai.assert.exists(registry.registry_['test_shortcut'].callback); + }); + }); + + suite('Unregistering', function() { + test('Unregistering a shortcut', function() { + const testShortcut = {'name': 'test_shortcut'}; + this.registry.registry_['test'] = [testShortcut]; + chai.assert.isOk(this.registry.registry_['test']); + this.registry.unregister('test', 'test_shortcut'); + chai.assert.isUndefined(this.registry.registry_['test']); + }); + test('Unregistering a nonexistent shortcut', function() { + const consoleStub = sinon.stub(console, 'warn'); + chai.assert.isUndefined(this.registry.registry_['test']); + + const registry = this.registry; + chai.assert.isFalse(registry.unregister('test', 'test_shortcut')); + sinon.assert.calledOnceWithExactly(consoleStub, 'Keyboard shortcut with name "test" not found.'); + }); + test('Unregistering a shortcut with key mappings', function() { + const testShortcut = {'name': 'test_shortcut'}; + this.registry.keyMap_['keyCode'] = ['test_shortcut']; + this.registry.registry_['test_shortcut'] = testShortcut; + + this.registry.unregister('test_shortcut'); + + const shortcut = this.registry.registry_['test']; + const keyMappings = this.registry.keyMap_['keyCode']; + chai.assert.isUndefined(shortcut); + chai.assert.isUndefined(keyMappings); + }); + test('Unregistering a shortcut with colliding key mappings', function() { + const testShortcut = {'name': 'test_shortcut'}; + this.registry.keyMap_['keyCode'] = ['test_shortcut', 'other_shortcutt']; + this.registry.registry_['test_shortcut'] = testShortcut; + + this.registry.unregister('test_shortcut'); + + const shortcut = this.registry.registry_['test']; + const keyMappings = this.registry.keyMap_['keyCode']; + chai.assert.lengthOf(keyMappings, 1); + chai.assert.isUndefined(shortcut); + }); + }); + + suite('addKeyMapping', function() { + test('Adds a key mapping', function() { + this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; + + this.registry.addKeyMapping('keyCode', 'test_shortcut'); + + const shortcutNames = this.registry.keyMap_['keyCode']; + chai.assert.lengthOf(shortcutNames, 1); + chai.assert.equal(shortcutNames[0], 'test_shortcut'); + }); + test('Adds a colliding key mapping - opt_allowCollision=true', function() { + this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; + this.registry.keyMap_['keyCode'] = ['test_shortcut_2']; + + this.registry.addKeyMapping('keyCode', 'test_shortcut', true); + + const shortcutNames = this.registry.keyMap_['keyCode']; + chai.assert.lengthOf(shortcutNames, 2); + chai.assert.equal(shortcutNames[0], 'test_shortcut'); + chai.assert.equal(shortcutNames[1], 'test_shortcut_2'); + }); + test('Adds a colliding key mapping - opt_allowCollision=false', function() { + this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; + this.registry.keyMap_['keyCode'] = ['test_shortcut_2']; + + const registry = this.registry; + const shouldThrow = function() { + registry.addKeyMapping('keyCode', 'test_shortcut'); + }; + chai.assert.throws( + shouldThrow, Error, + 'Shortcut with name "test_shortcut" collides with shortcuts test_shortcut_2'); + }); + }); + + suite('removeKeyMapping', function() { + test('Removes a key mapping', function() { + this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; + this.registry.keyMap_['keyCode'] = ['test_shortcut', 'test_shortcut_2']; + + const isRemoved = + this.registry.removeKeyMapping('keyCode', 'test_shortcut'); + + const shortcutNames = this.registry.keyMap_['keyCode']; + chai.assert.lengthOf(shortcutNames, 1); + chai.assert.equal(shortcutNames[0], 'test_shortcut_2'); + chai.assert.isTrue(isRemoved); + }); + test('Removes last key mapping for a key', function() { + this.registry.registry_['test_shortcut'] = {'name': 'test_shortcut'}; + this.registry.keyMap_['keyCode'] = ['test_shortcut']; + + this.registry.removeKeyMapping('keyCode', 'test_shortcut'); + + const shortcutNames = this.registry.keyMap_['keyCode']; + chai.assert.isUndefined(shortcutNames); + }); + test('Removes a key map that does not exist opt_quiet=false', function() { + const consoleStub = sinon.stub(console, 'warn'); + this.registry.keyMap_['keyCode'] = ['test_shortcut_2']; + + const isRemoved = + this.registry.removeKeyMapping('keyCode', 'test_shortcut'); + + chai.assert.isFalse(isRemoved); + sinon.assert.calledOnceWithExactly( + consoleStub, + 'No keyboard shortcut with name "test_shortcut" registered with key code "keyCode"'); + }); + test( + 'Removes a key map that does not exist from empty key mapping opt_quiet=false', + function() { + const consoleStub = sinon.stub(console, 'warn'); + + const isRemoved = + this.registry.removeKeyMapping('keyCode', 'test_shortcut'); + + chai.assert.isFalse(isRemoved); + sinon.assert.calledOnceWithExactly( + consoleStub, + 'No keyboard shortcut with name "test_shortcut" registered with key code "keyCode"'); + }); + }); + + suite('Setters/Getters', function() { + test('Sets the key map', function() { + this.registry.setKeyMap({'keyCode': ['test_shortcut']}); + chai.assert.lengthOf(Object.keys(this.registry.keyMap_), 1); + chai.assert.equal(this.registry.keyMap_['keyCode'][0], 'test_shortcut'); + }); + test('Gets a copy of the key map', function() { + this.registry.keyMap_['keyCode'] = ['a']; + const keyMapCopy = this.registry.getKeyMap(); + keyMapCopy['keyCode'] = ['b']; + chai.assert.equal(this.registry.keyMap_['keyCode'][0], 'a'); + }); + test('Gets a copy of the registry', function() { + this.registry.registry_['shortcutName'] = {'name': 'shortcutName'}; + const registrycopy = this.registry.getRegistry(); + registrycopy['shortcutName']['name'] = 'shortcutName1'; + chai.assert.equal( + this.registry.registry_['shortcutName']['name'], 'shortcutName'); + }); + test('Gets keyboard shortcuts from a key code', function() { + this.registry.keyMap_['keyCode'] = ['shortcutName']; + const shortcutNames = this.registry.getShortcutNamesByKeyCode('keyCode'); + chai.assert.equal(shortcutNames[0], 'shortcutName'); + }); + test('Gets keycodes by shortcut name', function() { + this.registry.keyMap_['keyCode'] = ['shortcutName']; + this.registry.keyMap_['keyCode1'] = ['shortcutName']; + const shortcutNames = + this.registry.getKeyCodesByShortcutName('shortcutName'); + chai.assert.lengthOf(shortcutNames, 2); + chai.assert.equal(shortcutNames[0], 'keyCode'); + chai.assert.equal(shortcutNames[1], 'keyCode1'); + }); + }); + + suite('onKeyDown', function() { + function addShortcut(registry, shortcut, keyCode, returns) { + registry.register(shortcut, true); + registry.addKeyMapping(keyCode, shortcut.name, true); + return sinon.stub(shortcut, 'callback').returns(returns); + } + + setup(function() { + this.testShortcut = { + 'name': 'test_shortcut', + 'callback': function() { + return true; + }, + 'precondition': function() { + return true; + }, + }; + this.callBackStub = + addShortcut(this.registry, this.testShortcut, Blockly.utils.KeyCodes.C, true); + }); + test('Execute a shortcut from event', function() { + const event = createKeyDownEvent(Blockly.utils.KeyCodes.C); + chai.assert.isTrue(this.registry.onKeyDown(this.workspace, event)); + sinon.assert.calledOnce(this.callBackStub); + }); + test('No shortcut executed from event', function() { + const event = createKeyDownEvent(Blockly.utils.KeyCodes.D); + chai.assert.isFalse(this.registry.onKeyDown(this.workspace, event)); + }); + test('No precondition available - execute callback', function() { + delete this.testShortcut['precondition']; + const event = createKeyDownEvent(Blockly.utils.KeyCodes.C); + chai.assert.isTrue(this.registry.onKeyDown(this.workspace, event)); + sinon.assert.calledOnce(this.callBackStub); + }); + test('Execute all shortcuts in list', function() { + const event = createKeyDownEvent(Blockly.utils.KeyCodes.C); + const testShortcut2 = { + 'name': 'test_shortcut_2', + 'callback': function() { + return false; + }, + 'precondition': function() { + return false; + }, + }; + const testShortcut2Stub = + addShortcut(this.registry, testShortcut2, Blockly.utils.KeyCodes.C, false); + chai.assert.isTrue(this.registry.onKeyDown(this.workspace, event)); + sinon.assert.calledOnce(testShortcut2Stub); + sinon.assert.calledOnce(this.callBackStub); + }); + test('Stop executing shortcut when event is handled', function() { + const event = createKeyDownEvent(Blockly.utils.KeyCodes.C); + const testShortcut2 = { + 'name': 'test_shortcut_2', + 'callback': function() { + return false; + }, + 'precondition': function() { + return false; + }, + }; + const testShortcut2Stub = + addShortcut(this.registry, testShortcut2, Blockly.utils.KeyCodes.C, true); + chai.assert.isTrue(this.registry.onKeyDown(this.workspace, event)); + sinon.assert.calledOnce(testShortcut2Stub); + sinon.assert.notCalled(this.callBackStub); + }); + }); + + suite('createSerializedKey', function() { + test('Serialize key', function() { + const serializedKey = + this.registry.createSerializedKey(Blockly.utils.KeyCodes.A); + chai.assert.equal(serializedKey, '65'); + }); + + test('Serialize key code and modifier', function() { + const serializedKey = this.registry.createSerializedKey( + Blockly.utils.KeyCodes.A, [Blockly.utils.KeyCodes.CTRL]); + chai.assert.equal(serializedKey, 'Control+65'); + }); + test('Serialize only a modifier', function() { + const serializedKey = this.registry.createSerializedKey( + null, [Blockly.utils.KeyCodes.CTRL]); + chai.assert.equal(serializedKey, 'Control'); + }); + test('Serialize multiple modifiers', function() { + const serializedKey = this.registry.createSerializedKey( + null, [Blockly.utils.KeyCodes.CTRL, Blockly.utils.KeyCodes.SHIFT]); + chai.assert.equal(serializedKey, 'Shift+Control'); + }); + test('Order of modifiers should result in same serialized key', function() { + const serializedKey = this.registry.createSerializedKey( + null, [Blockly.utils.KeyCodes.CTRL, Blockly.utils.KeyCodes.SHIFT]); + chai.assert.equal(serializedKey, 'Shift+Control'); + const serializedKeyNewOrder = this.registry.createSerializedKey( + null, [Blockly.utils.KeyCodes.SHIFT, Blockly.utils.KeyCodes.CTRL]); + chai.assert.equal(serializedKeyNewOrder, 'Shift+Control'); + }); + }); + + suite('serializeKeyEvent', function() { + test('Serialize key', function() { + const mockEvent = createKeyDownEvent(Blockly.utils.KeyCodes.A); + const serializedKey = this.registry.serializeKeyEvent_(mockEvent); + chai.assert.equal(serializedKey, '65'); + }); + test('Serialize key code and modifier', function() { + const mockEvent = createKeyDownEvent( + Blockly.utils.KeyCodes.A, [Blockly.utils.KeyCodes.CTRL]); + const serializedKey = this.registry.serializeKeyEvent_(mockEvent); + chai.assert.equal(serializedKey, 'Control+65'); + }); + test('Serialize only a modifier', function() { + const mockEvent = + createKeyDownEvent(null, [Blockly.utils.KeyCodes.CTRL]); + const serializedKey = this.registry.serializeKeyEvent_(mockEvent); + chai.assert.equal(serializedKey, 'Control'); + }); + test('Serialize multiple modifiers', function() { + const mockEvent = createKeyDownEvent( + null, + [Blockly.utils.KeyCodes.CTRL, Blockly.utils.KeyCodes.SHIFT]); + const serializedKey = this.registry.serializeKeyEvent_(mockEvent); + chai.assert.equal(serializedKey, 'Shift+Control'); + }); + test('Throw error when incorrect modifier', function() { + const registry = this.registry; + const shouldThrow = function() { + registry.createSerializedKey(Blockly.utils.KeyCodes.K, ['s']); + }; + chai.assert.throws(shouldThrow, Error, 's is not a valid modifier key.'); + }); + }); + + teardown(function() {}); +}); diff --git a/tests/mocha/test_helpers/block_definitions.js b/tests/mocha/test_helpers/block_definitions.js index a30d7defe91..d9c7b8446b8 100644 --- a/tests/mocha/test_helpers/block_definitions.js +++ b/tests/mocha/test_helpers/block_definitions.js @@ -1,185 +1,185 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.blockDefinitions'); - - -function defineStackBlock(name = 'stack_block') { - Blockly.defineBlocksWithJsonArray([{ - "type": name, - "message0": "", - "previousStatement": null, - "nextStatement": null, - }]); -} -exports.defineStackBlock = defineStackBlock; - -function defineRowBlock(name = 'row_block') { - Blockly.defineBlocksWithJsonArray([{ - "type": name, - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - }, - ], - "output": null, - }]); -} -exports.defineRowBlock = defineRowBlock; - -function defineStatementBlock(name = 'statement_block') { - Blockly.defineBlocksWithJsonArray([{ - "type": name, - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - }, - ], - "previousStatement": null, - "nextStatement": null, - "colour": 230, - "tooltip": "", - "helpUrl": "", - }]); -} -exports.defineStatementBlock = defineStatementBlock; - -function defineBasicBlockWithField(name = 'test_field_block') { - Blockly.defineBlocksWithJsonArray([{ - "type": name, - "message0": "%1", - "args0": [ - { - "type": "field_input", - "name": "NAME", - }, - ], - "output": null, - }]); -} -exports.defineBasicBlockWithField = defineBasicBlockWithField; - -function defineMutatorBlocks() { - Blockly.defineBlocksWithJsonArray([ - { - 'type': 'xml_block', - 'mutator': 'xml_mutator', - }, - { - 'type': 'jso_block', - 'mutator': 'jso_mutator', - }, - { - 'type': 'checkbox_block', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_checkbox', - 'name': 'CHECK', - }, - ], - }, - ]); - - const xmlMutator = { - hasInput: false, - - mutationToDom: function() { - const mutation = Blockly.utils.xml.createElement('mutation'); - mutation.setAttribute('hasInput', this.hasInput); - return mutation; - }, - - domToMutation: function(mutation) { - this.hasInput = mutation.getAttribute('hasInput') == 'true'; - this.updateShape(); - }, - - decompose: function(workspace) { - const topBlock = workspace.newBlock('checkbox_block', 'check_block'); - topBlock.initSvg(); - topBlock.render(); - return topBlock; - }, - - compose: function(topBlock) { - this.hasInput = topBlock.getFieldValue('CHECK') == 'TRUE'; - this.updateShape(); - }, - - updateShape: function() { - if (this.hasInput && !this.getInput('INPUT')) { - this.appendValueInput('INPUT'); - } else if (!this.hasInput && this.getInput('INPUT')) { - this.removeInput('INPUT'); - } - }, - }; - Blockly.Extensions.registerMutator('xml_mutator', xmlMutator); - - const jsoMutator = { - hasInput: false, - - saveExtraState: function() { - return {hasInput: this.hasInput}; - }, - - loadExtraState: function(state) { - this.hasInput = state.hasInput || false; - this.updateShape(); - }, - - decompose: function(workspace) { - const topBlock = workspace.newBlock('checkbox_block', 'check_block'); - topBlock.initSvg(); - topBlock.render(); - return topBlock; - }, - - compose: function(topBlock) { - this.hasInput = topBlock.getFieldValue('CHECK') == 'TRUE'; - this.updateShape(); - }, - - updateShape: function() { - if (this.hasInput && !this.getInput('INPUT')) { - this.appendValueInput('INPUT'); - } else if (!this.hasInput && this.getInput('INPUT')) { - this.removeInput('INPUT'); - } - }, - }; - Blockly.Extensions.registerMutator('jso_mutator', jsoMutator); -} -exports.defineMutatorBlocks = defineMutatorBlocks; - -function createTestBlock() { - return { - 'id': 'test', - 'rendered': false, - 'workspace': { - 'rendered': false, - }, - 'isShadow': function() { - return false; - }, - 'renameVarById': Blockly.Block.prototype.renameVarById, - 'updateVarName': Blockly.Block.prototype.updateVarName, - }; -} -exports.createTestBlock = createTestBlock; - -function createRenderedBlock(workspaceSvg, type) { - const block = workspaceSvg.newBlock(type); - block.initSvg(); - block.render(); - return block; -} -exports.createRenderedBlock = createRenderedBlock; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.blockDefinitions'); + + +function defineStackBlock(name = 'stack_block') { + Blockly.defineBlocksWithJsonArray([{ + "type": name, + "message0": "", + "previousStatement": null, + "nextStatement": null, + }]); +} +exports.defineStackBlock = defineStackBlock; + +function defineRowBlock(name = 'row_block') { + Blockly.defineBlocksWithJsonArray([{ + "type": name, + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + }, + ], + "output": null, + }]); +} +exports.defineRowBlock = defineRowBlock; + +function defineStatementBlock(name = 'statement_block') { + Blockly.defineBlocksWithJsonArray([{ + "type": name, + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "NAME", + }, + ], + "previousStatement": null, + "nextStatement": null, + "colour": 230, + "tooltip": "", + "helpUrl": "", + }]); +} +exports.defineStatementBlock = defineStatementBlock; + +function defineBasicBlockWithField(name = 'test_field_block') { + Blockly.defineBlocksWithJsonArray([{ + "type": name, + "message0": "%1", + "args0": [ + { + "type": "field_input", + "name": "NAME", + }, + ], + "output": null, + }]); +} +exports.defineBasicBlockWithField = defineBasicBlockWithField; + +function defineMutatorBlocks() { + Blockly.defineBlocksWithJsonArray([ + { + 'type': 'xml_block', + 'mutator': 'xml_mutator', + }, + { + 'type': 'jso_block', + 'mutator': 'jso_mutator', + }, + { + 'type': 'checkbox_block', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_checkbox', + 'name': 'CHECK', + }, + ], + }, + ]); + + const xmlMutator = { + hasInput: false, + + mutationToDom: function() { + const mutation = Blockly.utils.xml.createElement('mutation'); + mutation.setAttribute('hasInput', this.hasInput); + return mutation; + }, + + domToMutation: function(mutation) { + this.hasInput = mutation.getAttribute('hasInput') == 'true'; + this.updateShape(); + }, + + decompose: function(workspace) { + const topBlock = workspace.newBlock('checkbox_block', 'check_block'); + topBlock.initSvg(); + topBlock.render(); + return topBlock; + }, + + compose: function(topBlock) { + this.hasInput = topBlock.getFieldValue('CHECK') == 'TRUE'; + this.updateShape(); + }, + + updateShape: function() { + if (this.hasInput && !this.getInput('INPUT')) { + this.appendValueInput('INPUT'); + } else if (!this.hasInput && this.getInput('INPUT')) { + this.removeInput('INPUT'); + } + }, + }; + Blockly.Extensions.registerMutator('xml_mutator', xmlMutator); + + const jsoMutator = { + hasInput: false, + + saveExtraState: function() { + return {hasInput: this.hasInput}; + }, + + loadExtraState: function(state) { + this.hasInput = state.hasInput || false; + this.updateShape(); + }, + + decompose: function(workspace) { + const topBlock = workspace.newBlock('checkbox_block', 'check_block'); + topBlock.initSvg(); + topBlock.render(); + return topBlock; + }, + + compose: function(topBlock) { + this.hasInput = topBlock.getFieldValue('CHECK') == 'TRUE'; + this.updateShape(); + }, + + updateShape: function() { + if (this.hasInput && !this.getInput('INPUT')) { + this.appendValueInput('INPUT'); + } else if (!this.hasInput && this.getInput('INPUT')) { + this.removeInput('INPUT'); + } + }, + }; + Blockly.Extensions.registerMutator('jso_mutator', jsoMutator); +} +exports.defineMutatorBlocks = defineMutatorBlocks; + +function createTestBlock() { + return { + 'id': 'test', + 'rendered': false, + 'workspace': { + 'rendered': false, + }, + 'isShadow': function() { + return false; + }, + 'renameVarById': Blockly.Block.prototype.renameVarById, + 'updateVarName': Blockly.Block.prototype.updateVarName, + }; +} +exports.createTestBlock = createTestBlock; + +function createRenderedBlock(workspaceSvg, type) { + const block = workspaceSvg.newBlock(type); + block.initSvg(); + block.render(); + return block; +} +exports.createRenderedBlock = createRenderedBlock; diff --git a/tests/mocha/test_helpers/code_generation.js b/tests/mocha/test_helpers/code_generation.js index 72d520c7f98..f1c2f9faf74 100644 --- a/tests/mocha/test_helpers/code_generation.js +++ b/tests/mocha/test_helpers/code_generation.js @@ -1,118 +1,118 @@ -/* eslint-disable valid-jsdoc */ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.codeGeneration'); - -const {runTestSuites} = goog.require('Blockly.test.helpers.common'); - - -/** - * Code generation test case configuration. - * @implements {TestCase} - * @record - */ -class CodeGenerationTestCase { - /** - * Class for a code generation test case. - */ - constructor() { - /** - * @type {string} The expected code. - */ - this.expectedCode; - /** - * @type {boolean|undefined} Whether to use workspaceToCode instead of - * blockToCode for test. - */ - this.useWorkspaceToCode; - /** - * @type {number|undefined} The expected inner order. - */ - this.expectedInnerOrder; - } - - /** - * Creates the block to use for this test case. - * @param {!Blockly.Workspace} workspace The workspace context for this - * test. - * @return {!Blockly.Block} The block to use for the test case. - */ - createBlock(workspace) {} -} -exports.CodeGenerationTestCase = CodeGenerationTestCase; - -/** - * Code generation test suite. - * @extends {TestSuite} - * @record - */ -class CodeGenerationTestSuite { - /** - * Class for a code generation test suite. - */ - constructor() { - /** - * @type {!Blockly.Generator} The generator to use for running test cases. - */ - this.generator; - } -} -exports.CodeGenerationTestSuite = CodeGenerationTestSuite; - -/** - * Returns mocha test callback for code generation based on provided - * generator. - * @param {!Blockly.Generator} generator The generator to use in test. - * @return {function(!CodeGenerationTestCase):!Function} Function that - * returns mocha test callback based on test case. - * @private - */ -const createCodeGenerationTestFn_ = (generator) => { - return (testCase) => { - return function() { - const block = testCase.createBlock(this.workspace); - let code; - let innerOrder; - if (testCase.useWorkspaceToCode) { - code = generator.workspaceToCode(this.workspace); - } else { - generator.init(this.workspace); - code = generator.blockToCode(block); - if (Array.isArray(code)) { - innerOrder = code[1]; - code = code[0]; - } - } - const assertFunc = (typeof testCase.expectedCode === 'string') ? - chai.assert.equal : chai.assert.match; - assertFunc(code, testCase.expectedCode); - if (!testCase.useWorkspaceToCode && - testCase.expectedInnerOrder !== undefined) { - chai.assert.equal(innerOrder, testCase.expectedInnerOrder); - } - }; - }; -}; - -/** - * Runs blockToCode test suites. - * @param {!Array} testSuites The test suites to run. - */ -const runCodeGenerationTestSuites = (testSuites) => { - /** - * Creates function used to generate mocha test callback. - * @param {!CodeGenerationTestSuite} suiteInfo The test suite information. - * @return {function(!CodeGenerationTestCase):!Function} Function that - * creates mocha test callback. - */ - const createTestFn = (suiteInfo) => { - return createCodeGenerationTestFn_(suiteInfo.generator); - }; - - runTestSuites(testSuites, createTestFn); -}; -exports.runCodeGenerationTestSuites = runCodeGenerationTestSuites; +/* eslint-disable valid-jsdoc */ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.codeGeneration'); + +const {runTestSuites} = goog.require('Blockly.test.helpers.common'); + + +/** + * Code generation test case configuration. + * @implements {TestCase} + * @record + */ +class CodeGenerationTestCase { + /** + * Class for a code generation test case. + */ + constructor() { + /** + * @type {string} The expected code. + */ + this.expectedCode; + /** + * @type {boolean|undefined} Whether to use workspaceToCode instead of + * blockToCode for test. + */ + this.useWorkspaceToCode; + /** + * @type {number|undefined} The expected inner order. + */ + this.expectedInnerOrder; + } + + /** + * Creates the block to use for this test case. + * @param {!Blockly.Workspace} workspace The workspace context for this + * test. + * @return {!Blockly.Block} The block to use for the test case. + */ + createBlock(workspace) {} +} +exports.CodeGenerationTestCase = CodeGenerationTestCase; + +/** + * Code generation test suite. + * @extends {TestSuite} + * @record + */ +class CodeGenerationTestSuite { + /** + * Class for a code generation test suite. + */ + constructor() { + /** + * @type {!Blockly.Generator} The generator to use for running test cases. + */ + this.generator; + } +} +exports.CodeGenerationTestSuite = CodeGenerationTestSuite; + +/** + * Returns mocha test callback for code generation based on provided + * generator. + * @param {!Blockly.Generator} generator The generator to use in test. + * @return {function(!CodeGenerationTestCase):!Function} Function that + * returns mocha test callback based on test case. + * @private + */ +const createCodeGenerationTestFn_ = (generator) => { + return (testCase) => { + return function() { + const block = testCase.createBlock(this.workspace); + let code; + let innerOrder; + if (testCase.useWorkspaceToCode) { + code = generator.workspaceToCode(this.workspace); + } else { + generator.init(this.workspace); + code = generator.blockToCode(block); + if (Array.isArray(code)) { + innerOrder = code[1]; + code = code[0]; + } + } + const assertFunc = (typeof testCase.expectedCode === 'string') ? + chai.assert.equal : chai.assert.match; + assertFunc(code, testCase.expectedCode); + if (!testCase.useWorkspaceToCode && + testCase.expectedInnerOrder !== undefined) { + chai.assert.equal(innerOrder, testCase.expectedInnerOrder); + } + }; + }; +}; + +/** + * Runs blockToCode test suites. + * @param {!Array} testSuites The test suites to run. + */ +const runCodeGenerationTestSuites = (testSuites) => { + /** + * Creates function used to generate mocha test callback. + * @param {!CodeGenerationTestSuite} suiteInfo The test suite information. + * @return {function(!CodeGenerationTestCase):!Function} Function that + * creates mocha test callback. + */ + const createTestFn = (suiteInfo) => { + return createCodeGenerationTestFn_(suiteInfo.generator); + }; + + runTestSuites(testSuites, createTestFn); +}; +exports.runCodeGenerationTestSuites = runCodeGenerationTestSuites; diff --git a/tests/mocha/test_helpers/common.js b/tests/mocha/test_helpers/common.js index fcb61021a64..3b3be9e24f0 100644 --- a/tests/mocha/test_helpers/common.js +++ b/tests/mocha/test_helpers/common.js @@ -1,112 +1,112 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.common'); - -/** - * Test case configuration. - * @record - */ -class TestCase { - /** - * Class for a test case configuration. - */ - constructor() { - /** - * @type {string} The title for the test case. - */ - this.title; - /** - * @type {boolean|undefined} Whether this test case should be skipped. - * Used to skip buggy test case and should have an associated bug. - */ - this.skip; - /** - * @type {boolean|undefined} Whether this test case should be called as - * only. Used for debugging. - */ - this.only; - } -} -exports.TestCase = TestCase; - -/** - * Test suite configuration. - * @record - * @template {TestCase} T - * @template {TestSuite} U - */ -class TestSuite { - /** - * Class for a test suite configuration. - */ - constructor() { - /** - * @type {string} The title for the test case. - */ - this.title; - /** - * @type {?Array} The associated test cases. - */ - this.testCases; - /** - * @type {?Array} List of nested inner test suites. - */ - this.testSuites; - /** - * @type {boolean|undefined} Whether this test suite should be skipped. - * Used to skip buggy test case and should have an associated bug. - */ - this.skip; - /** - * @type {boolean|undefined} Whether this test suite should be called as - * only. Used for debugging. - */ - this.only; - } -} -exports.TestSuite = TestSuite; - -/** - * Runs provided test cases. - * @template {TestCase} T - * @param {!Array} testCases The test cases to run. - * @param {function(T):Function} createTestCallback Creates test - * callback using given test case. - */ -function runTestCases(testCases, createTestCallback) { - testCases.forEach((testCase) => { - let testCall = (testCase.skip ? test.skip : test); - testCall = (testCase.only ? test.only : testCall); - testCall(testCase.title, createTestCallback(testCase)); - }); -} -exports.runTestCases = runTestCases; - -/** - * Runs provided test suite. - * @template {TestCase} T - * @template {TestSuite} U - * @param {Array} testSuites The test suites to run. - * @param {function(!U):(function(T):!Function) - * } createTestCaseCallback Creates test case callback using given test - * suite. - */ -function runTestSuites(testSuites, createTestCaseCallback) { - testSuites.forEach((testSuite) => { - let suiteCall = (testSuite.skip ? suite.skip : suite); - suiteCall = (testSuite.only ? suite.only : suiteCall); - suiteCall(testSuite.title, function() { - if (testSuite.testSuites && testSuite.testSuites.length) { - runTestSuites(testSuite.testSuites, createTestCaseCallback); - } - if (testSuite.testCases && testSuite.testCases.length) { - runTestCases(testSuite.testCases, createTestCaseCallback(testSuite)); - } - }); - }); -} -exports.runTestSuites = runTestSuites; +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.common'); + +/** + * Test case configuration. + * @record + */ +class TestCase { + /** + * Class for a test case configuration. + */ + constructor() { + /** + * @type {string} The title for the test case. + */ + this.title; + /** + * @type {boolean|undefined} Whether this test case should be skipped. + * Used to skip buggy test case and should have an associated bug. + */ + this.skip; + /** + * @type {boolean|undefined} Whether this test case should be called as + * only. Used for debugging. + */ + this.only; + } +} +exports.TestCase = TestCase; + +/** + * Test suite configuration. + * @record + * @template {TestCase} T + * @template {TestSuite} U + */ +class TestSuite { + /** + * Class for a test suite configuration. + */ + constructor() { + /** + * @type {string} The title for the test case. + */ + this.title; + /** + * @type {?Array} The associated test cases. + */ + this.testCases; + /** + * @type {?Array} List of nested inner test suites. + */ + this.testSuites; + /** + * @type {boolean|undefined} Whether this test suite should be skipped. + * Used to skip buggy test case and should have an associated bug. + */ + this.skip; + /** + * @type {boolean|undefined} Whether this test suite should be called as + * only. Used for debugging. + */ + this.only; + } +} +exports.TestSuite = TestSuite; + +/** + * Runs provided test cases. + * @template {TestCase} T + * @param {!Array} testCases The test cases to run. + * @param {function(T):Function} createTestCallback Creates test + * callback using given test case. + */ +function runTestCases(testCases, createTestCallback) { + testCases.forEach((testCase) => { + let testCall = (testCase.skip ? test.skip : test); + testCall = (testCase.only ? test.only : testCall); + testCall(testCase.title, createTestCallback(testCase)); + }); +} +exports.runTestCases = runTestCases; + +/** + * Runs provided test suite. + * @template {TestCase} T + * @template {TestSuite} U + * @param {Array} testSuites The test suites to run. + * @param {function(!U):(function(T):!Function) + * } createTestCaseCallback Creates test case callback using given test + * suite. + */ +function runTestSuites(testSuites, createTestCaseCallback) { + testSuites.forEach((testSuite) => { + let suiteCall = (testSuite.skip ? suite.skip : suite); + suiteCall = (testSuite.only ? suite.only : suiteCall); + suiteCall(testSuite.title, function() { + if (testSuite.testSuites && testSuite.testSuites.length) { + runTestSuites(testSuite.testSuites, createTestCaseCallback); + } + if (testSuite.testCases && testSuite.testCases.length) { + runTestCases(testSuite.testCases, createTestCaseCallback(testSuite)); + } + }); + }); +} +exports.runTestSuites = runTestSuites; diff --git a/tests/mocha/test_helpers/events.js b/tests/mocha/test_helpers/events.js index e69573318d1..c01212b8d91 100644 --- a/tests/mocha/test_helpers/events.js +++ b/tests/mocha/test_helpers/events.js @@ -1,204 +1,204 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.events'); - - -/** - * Creates spy for workspace fireChangeListener - * @param {!Blockly.Workspace} workspace The workspace to spy fireChangeListener - * calls on. - * @return {!SinonSpy} The created spy. - */ -function createFireChangeListenerSpy(workspace) { - return sinon.spy(workspace, 'fireChangeListener'); -} -exports.createFireChangeListenerSpy = createFireChangeListenerSpy; - -/** - * Asserts whether the given xml property has the expected property. - * @param {!Node} xmlValue The xml value to check. - * @param {!Node|string} expectedValue The expected value. - * @param {string=} message Optional message to use in assert message. - * @private - */ -function assertXmlPropertyEqual_(xmlValue, expectedValue, message) { - const value = Blockly.Xml.domToText(xmlValue); - if (expectedValue instanceof Node) { - expectedValue = Blockly.Xml.domToText(expectedValue); - } - chai.assert.equal(value, expectedValue, message); -} - -/** - * Asserts that the given object has the expected xml properties. - * @param {Object} obj The object to check. - * @param {Object} expectedXmlProperties The expected xml - * properties. - * @private - */ -function assertXmlProperties_(obj, expectedXmlProperties) { - Object.keys(expectedXmlProperties).map((key) => { - const value = obj[key]; - const expectedValue = expectedXmlProperties[key]; - if (expectedValue === undefined) { - chai.assert.isUndefined(value, - 'Expected ' + key + ' property to be undefined'); - return; - } - chai.assert.exists(value, 'Expected ' + key + ' property to exist'); - assertXmlPropertyEqual_(value, expectedValue, 'Checking property ' + key); - }); -} - -/** - * Whether given key indicates that the property is xml. - * @param {string} key The key to check. - * @return {boolean} Whether the given key is for xml property. - * @private - */ -function isXmlProperty_(key) { - return key.toLowerCase().endsWith('xml'); -} - -/** - * Asserts that the given event has the expected values. - * @param {!Blockly.Events.Abstract} event The event to check. - * @param {string} expectedType Expected type of event fired. - * @param {string} expectedWorkspaceId Expected workspace id of event fired. - * @param {?string} expectedBlockId Expected block id of event fired. - * @param {!Object} expectedProperties Map of of additional expected - * properties to check on fired event. - * @param {boolean=} [isUiEvent=false] Whether the event is a UI event. - * @param {string=} message Optional message to prepend assert messages. - */ -function assertEventEquals(event, expectedType, - expectedWorkspaceId, expectedBlockId, expectedProperties, isUiEvent = false, message) { - let prependMessage = message ? message + ' ' : ''; - prependMessage += 'Event fired '; - chai.assert.equal(event.type, expectedType, - prependMessage + 'type'); - chai.assert.equal(event.workspaceId, expectedWorkspaceId, - prependMessage + 'workspace id'); - chai.assert.equal(event.blockId, expectedBlockId, - prependMessage + 'block id'); - Object.keys(expectedProperties).map((key) => { - const value = event[key]; - const expectedValue = expectedProperties[key]; - if (expectedValue === undefined) { - chai.assert.isUndefined(value, prependMessage + key); - return; - } - chai.assert.exists(value, prependMessage + key); - if (isXmlProperty_(key)) { - assertXmlPropertyEqual_(value, expectedValue, - prependMessage + key); - } else { - chai.assert.equal(value, expectedValue, - prependMessage + key); - } - }); - if (isUiEvent) { - chai.assert.isTrue(event.isUiEvent); - } else { - chai.assert.isFalse(event.isUiEvent); - } -} -exports.assertEventEquals = assertEventEquals; - -/** - * Asserts that an event with the given values was fired. - * @param {!SinonSpy|!SinonSpyCall} spy The spy or spy call to use. - * @param {function(new:Blockly.Events.Abstract)} instanceType Expected instance - * type of event fired. - * @param {!Object} expectedProperties Map of of expected properties - * to check on fired event. - * @param {string} expectedWorkspaceId Expected workspace id of event fired. - * @param {?string=} expectedBlockId Expected block id of event fired. - */ -function assertEventFired(spy, instanceType, expectedProperties, - expectedWorkspaceId, expectedBlockId) { - expectedProperties = Object.assign({ - workspaceId: expectedWorkspaceId, - blockId: expectedBlockId, - }, expectedProperties); - const expectedEvent = - sinon.match.instanceOf(instanceType).and(sinon.match(expectedProperties)); - sinon.assert.calledWith(spy, expectedEvent); -} -exports.assertEventFired = assertEventFired; - -/** - * Asserts that an event with the given values was not fired. - * @param {!SpyCall} spy The spy to use. - * @param {function(new:Blockly.Events.Abstract)} instanceType Expected instance - * type of event fired. - * @param {!Object} expectedProperties Map of of expected properties - * to check on fired event. - * @param {string=} expectedWorkspaceId Expected workspace id of event fired. - * @param {?string=} expectedBlockId Expected block id of event fired. - */ -function assertEventNotFired(spy, instanceType, expectedProperties, - expectedWorkspaceId, expectedBlockId) { - expectedProperties.type = instanceType.prototype.type; - if (expectedWorkspaceId !== undefined) { - expectedProperties.workspaceId = expectedWorkspaceId; - } - if (expectedBlockId !== undefined) { - expectedProperties.blockId = expectedBlockId; - } - const expectedEvent = - sinon.match.instanceOf(instanceType).and(sinon.match(expectedProperties)); - sinon.assert.neverCalledWith(spy, expectedEvent); -} -exports.assertEventNotFired = assertEventNotFired; - -/** - * Filters out xml properties from given object based on key. - * @param {Object} properties The properties to filter. - * @return {Array>} A list containing split non - * xml properties and xml properties. [Object, Object] - * @private - */ -function splitByXmlProperties_(properties) { - const xmlProperties = {}; - const nonXmlProperties = {}; - Object.keys(properties).forEach((key) => { - if (isXmlProperty_(key)) { - xmlProperties[key] = properties[key]; - return false; - } else { - nonXmlProperties[key] = properties[key]; - } - }); - return [nonXmlProperties, xmlProperties]; -} - -/** - * Asserts that the event passed to the nth call of the given spy has the - * expected values. Assumes that the event is passed as the first argument. - * @param {!SinonSpy} spy The spy to use. - * @param {number} n Which call to check. - * @param {function(new:Blockly.Events.Abstract)} instanceType Expected instance - * type of event fired. - * @param {Object} expectedProperties Map of of expected properties - * to check on fired event. - * @param {string} expectedWorkspaceId Expected workspace id of event fired. - * @param {?string=} expectedBlockId Expected block id of event fired. - */ -function assertNthCallEventArgEquals(spy, n, instanceType, expectedProperties, - expectedWorkspaceId, expectedBlockId) { - const nthCall = spy.getCall(n); - const splitProperties = splitByXmlProperties_(expectedProperties); - const nonXmlProperties = splitProperties[0]; - const xmlProperties = splitProperties[1]; - - assertEventFired(nthCall, instanceType, nonXmlProperties, expectedWorkspaceId, - expectedBlockId); - const eventArg = nthCall.firstArg; - assertXmlProperties_(eventArg, xmlProperties); -} -exports.assertNthCallEventArgEquals = assertNthCallEventArgEquals; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.events'); + + +/** + * Creates spy for workspace fireChangeListener + * @param {!Blockly.Workspace} workspace The workspace to spy fireChangeListener + * calls on. + * @return {!SinonSpy} The created spy. + */ +function createFireChangeListenerSpy(workspace) { + return sinon.spy(workspace, 'fireChangeListener'); +} +exports.createFireChangeListenerSpy = createFireChangeListenerSpy; + +/** + * Asserts whether the given xml property has the expected property. + * @param {!Node} xmlValue The xml value to check. + * @param {!Node|string} expectedValue The expected value. + * @param {string=} message Optional message to use in assert message. + * @private + */ +function assertXmlPropertyEqual_(xmlValue, expectedValue, message) { + const value = Blockly.Xml.domToText(xmlValue); + if (expectedValue instanceof Node) { + expectedValue = Blockly.Xml.domToText(expectedValue); + } + chai.assert.equal(value, expectedValue, message); +} + +/** + * Asserts that the given object has the expected xml properties. + * @param {Object} obj The object to check. + * @param {Object} expectedXmlProperties The expected xml + * properties. + * @private + */ +function assertXmlProperties_(obj, expectedXmlProperties) { + Object.keys(expectedXmlProperties).map((key) => { + const value = obj[key]; + const expectedValue = expectedXmlProperties[key]; + if (expectedValue === undefined) { + chai.assert.isUndefined(value, + 'Expected ' + key + ' property to be undefined'); + return; + } + chai.assert.exists(value, 'Expected ' + key + ' property to exist'); + assertXmlPropertyEqual_(value, expectedValue, 'Checking property ' + key); + }); +} + +/** + * Whether given key indicates that the property is xml. + * @param {string} key The key to check. + * @return {boolean} Whether the given key is for xml property. + * @private + */ +function isXmlProperty_(key) { + return key.toLowerCase().endsWith('xml'); +} + +/** + * Asserts that the given event has the expected values. + * @param {!Blockly.Events.Abstract} event The event to check. + * @param {string} expectedType Expected type of event fired. + * @param {string} expectedWorkspaceId Expected workspace id of event fired. + * @param {?string} expectedBlockId Expected block id of event fired. + * @param {!Object} expectedProperties Map of of additional expected + * properties to check on fired event. + * @param {boolean=} [isUiEvent=false] Whether the event is a UI event. + * @param {string=} message Optional message to prepend assert messages. + */ +function assertEventEquals(event, expectedType, + expectedWorkspaceId, expectedBlockId, expectedProperties, isUiEvent = false, message) { + let prependMessage = message ? message + ' ' : ''; + prependMessage += 'Event fired '; + chai.assert.equal(event.type, expectedType, + prependMessage + 'type'); + chai.assert.equal(event.workspaceId, expectedWorkspaceId, + prependMessage + 'workspace id'); + chai.assert.equal(event.blockId, expectedBlockId, + prependMessage + 'block id'); + Object.keys(expectedProperties).map((key) => { + const value = event[key]; + const expectedValue = expectedProperties[key]; + if (expectedValue === undefined) { + chai.assert.isUndefined(value, prependMessage + key); + return; + } + chai.assert.exists(value, prependMessage + key); + if (isXmlProperty_(key)) { + assertXmlPropertyEqual_(value, expectedValue, + prependMessage + key); + } else { + chai.assert.equal(value, expectedValue, + prependMessage + key); + } + }); + if (isUiEvent) { + chai.assert.isTrue(event.isUiEvent); + } else { + chai.assert.isFalse(event.isUiEvent); + } +} +exports.assertEventEquals = assertEventEquals; + +/** + * Asserts that an event with the given values was fired. + * @param {!SinonSpy|!SinonSpyCall} spy The spy or spy call to use. + * @param {function(new:Blockly.Events.Abstract)} instanceType Expected instance + * type of event fired. + * @param {!Object} expectedProperties Map of of expected properties + * to check on fired event. + * @param {string} expectedWorkspaceId Expected workspace id of event fired. + * @param {?string=} expectedBlockId Expected block id of event fired. + */ +function assertEventFired(spy, instanceType, expectedProperties, + expectedWorkspaceId, expectedBlockId) { + expectedProperties = Object.assign({ + workspaceId: expectedWorkspaceId, + blockId: expectedBlockId, + }, expectedProperties); + const expectedEvent = + sinon.match.instanceOf(instanceType).and(sinon.match(expectedProperties)); + sinon.assert.calledWith(spy, expectedEvent); +} +exports.assertEventFired = assertEventFired; + +/** + * Asserts that an event with the given values was not fired. + * @param {!SpyCall} spy The spy to use. + * @param {function(new:Blockly.Events.Abstract)} instanceType Expected instance + * type of event fired. + * @param {!Object} expectedProperties Map of of expected properties + * to check on fired event. + * @param {string=} expectedWorkspaceId Expected workspace id of event fired. + * @param {?string=} expectedBlockId Expected block id of event fired. + */ +function assertEventNotFired(spy, instanceType, expectedProperties, + expectedWorkspaceId, expectedBlockId) { + expectedProperties.type = instanceType.prototype.type; + if (expectedWorkspaceId !== undefined) { + expectedProperties.workspaceId = expectedWorkspaceId; + } + if (expectedBlockId !== undefined) { + expectedProperties.blockId = expectedBlockId; + } + const expectedEvent = + sinon.match.instanceOf(instanceType).and(sinon.match(expectedProperties)); + sinon.assert.neverCalledWith(spy, expectedEvent); +} +exports.assertEventNotFired = assertEventNotFired; + +/** + * Filters out xml properties from given object based on key. + * @param {Object} properties The properties to filter. + * @return {Array>} A list containing split non + * xml properties and xml properties. [Object, Object] + * @private + */ +function splitByXmlProperties_(properties) { + const xmlProperties = {}; + const nonXmlProperties = {}; + Object.keys(properties).forEach((key) => { + if (isXmlProperty_(key)) { + xmlProperties[key] = properties[key]; + return false; + } else { + nonXmlProperties[key] = properties[key]; + } + }); + return [nonXmlProperties, xmlProperties]; +} + +/** + * Asserts that the event passed to the nth call of the given spy has the + * expected values. Assumes that the event is passed as the first argument. + * @param {!SinonSpy} spy The spy to use. + * @param {number} n Which call to check. + * @param {function(new:Blockly.Events.Abstract)} instanceType Expected instance + * type of event fired. + * @param {Object} expectedProperties Map of of expected properties + * to check on fired event. + * @param {string} expectedWorkspaceId Expected workspace id of event fired. + * @param {?string=} expectedBlockId Expected block id of event fired. + */ +function assertNthCallEventArgEquals(spy, n, instanceType, expectedProperties, + expectedWorkspaceId, expectedBlockId) { + const nthCall = spy.getCall(n); + const splitProperties = splitByXmlProperties_(expectedProperties); + const nonXmlProperties = splitProperties[0]; + const xmlProperties = splitProperties[1]; + + assertEventFired(nthCall, instanceType, nonXmlProperties, expectedWorkspaceId, + expectedBlockId); + const eventArg = nthCall.firstArg; + assertXmlProperties_(eventArg, xmlProperties); +} +exports.assertNthCallEventArgEquals = assertNthCallEventArgEquals; diff --git a/tests/mocha/test_helpers/fields.js b/tests/mocha/test_helpers/fields.js index dd89e55fa35..13c51e4057a 100644 --- a/tests/mocha/test_helpers/fields.js +++ b/tests/mocha/test_helpers/fields.js @@ -1,282 +1,282 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.fields'); - -const {runTestCases, TestCase} = goog.require('Blockly.test.helpers.common'); - - -/** - * Field value test case. - * @implements {TestCase} - * @record - */ -class FieldValueTestCase { - /** - * Class for a a field value test case. - */ - constructor() { - /** - * @type {*} The value to use in test. - */ - this.value; - /** - * @type {*} The expected value. - */ - this.expectedValue; - /** - * @type {string|undefined} The expected text value. Provided if different - * from String(expectedValue). - */ - this.expectedText; - /** - * @type {!RegExp|string|undefined} The optional error message matcher. - * Provided if test case is expected to throw. - */ - this.errMsgMatcher; - } -} -exports.FieldValueTestCase = FieldValueTestCase; - -/** - * Field creation test case. - * @extends {FieldValueTestCase} - * @record - */ -class FieldCreationTestCase { - /** - * Class for a field creation test case. - */ - constructor() { - /** - * @type {Array<*>} The arguments to pass to field constructor. - */ - this.args; - /** - * @type {string} The json to use in field creation. - */ - this.json; - } -} -exports.FieldCreationTestCase = FieldCreationTestCase; - -/** - * Assert a field's value is the same as the expected value. - * @param {!Blockly.Field} field The field. - * @param {*} expectedValue The expected value. - * @param {string=} expectedText The expected text. - */ -function assertFieldValue(field, expectedValue, expectedText = undefined) { - const actualValue = field.getValue(); - const actualText = field.getText(); - if (expectedText === undefined) { - expectedText = String(expectedValue); - } - chai.assert.equal(actualValue, expectedValue, 'Value'); - chai.assert.equal(actualText, expectedText, 'Text'); -} -exports.assertFieldValue = assertFieldValue; - -/** - * Runs provided creation test cases. - * @param {!Array} testCases The test cases to run. - * @param {function(!Blockly.Field, !FieldCreationTestCase)} assertion The - * assertion to use. - * @param {function(new:Blockly.Field,!FieldCreationTestCase):Blockly.Field - * } creation A function that returns an instance of the field based on the - * provided test case. - * @private - */ -function runCreationTests_(testCases, assertion, creation) { - /** - * Creates test callback for creation test. - * @param {FieldCreationTestCase} testCase The test case to use. - * @return {Function} The test callback. - */ - const createTestFn = (testCase) => { - return function() { - const field = creation.call(this, testCase); - assertion(field, testCase); - }; - }; - runTestCases(testCases, createTestFn); -} - -/** - * Runs provided creation test cases. - * @param {!Array} testCases The test cases to run. - * @param {function(new:Blockly.Field,!FieldCreationTestCase):Blockly.Field - * } creation A function that returns an instance of the field based on the - * provided test case. - * @private - */ -function runCreationTestsAssertThrows_(testCases, creation) { - /** - * Creates test callback for creation test. - * @param {!FieldCreationTestCase} testCase The test case to use. - * @return {!Function} The test callback. - */ - const createTestFn = (testCase) => { - return function() { - chai.assert.throws(function() { - creation.call(this, testCase); - }, testCase.errMsgMatcher); - }; - }; - runTestCases(testCases, createTestFn); -} - -/** - * Runs suite of tests for constructor for the specified field. - * @param {function(new:Blockly.Field, *=)} TestedField The class of the field - * being tested. - * @param {Array} validValueTestCases Test cases with - * valid values for given field. - * @param {Array} invalidValueTestCases Test cases with - * invalid values for given field. - * @param {function(!Blockly.Field, !FieldCreationTestCase) - * } validRunAssertField Asserts that field has expected values. - * @param {function(!Blockly.Field)=} assertFieldDefault Asserts that field has - * default values. If undefined, tests will check that field throws when - * invalid value is passed rather than asserting default. - * @param {function(!FieldCreationTestCase=)=} customCreateWithJs Custom - * creation function to use in tests. - */ -function runConstructorSuiteTests(TestedField, validValueTestCases, - invalidValueTestCases, validRunAssertField, assertFieldDefault, - customCreateWithJs) { - suite('Constructor', function() { - if (assertFieldDefault) { - test('Empty', function() { - const field = customCreateWithJs ? customCreateWithJs.call(this) : - new TestedField(); - assertFieldDefault(field); - }); - } else { - test('Empty', function() { - chai.assert.throws(function() { - customCreateWithJs ? customCreateWithJs.call(this) : - new TestedField(); - }); - }); - } - - /** - * Creates a field using its constructor and the provided test case. - * @param {!FieldCreationTestCase} testCase The test case information. - * @return {!Blockly.Field} The instantiated field. - */ - const createWithJs = function(testCase) { - return customCreateWithJs ? customCreateWithJs.call(this, testCase) : - new TestedField(...testCase.args); - }; - if (assertFieldDefault) { - runCreationTests_( - invalidValueTestCases, assertFieldDefault, createWithJs); - } else { - runCreationTestsAssertThrows_(invalidValueTestCases, createWithJs); - } - runCreationTests_(validValueTestCases, validRunAssertField, createWithJs); - }); -} -exports.runConstructorSuiteTests = runConstructorSuiteTests; - -/** - * Runs suite of tests for fromJson creation of specified field. - * @param {function(new:Blockly.Field, *=)} TestedField The class of the field - * being tested. - * @param {!Array} validValueTestCases Test cases with - * valid values for given field. - * @param {!Array} invalidValueTestCases Test cases with - * invalid values for given field. - * @param {function(!Blockly.Field, !FieldValueTestCase) - * } validRunAssertField Asserts that field has expected values. - * @param {function(!Blockly.Field)=} assertFieldDefault Asserts that field has - * default values. If undefined, tests will check that field throws when - * invalid value is passed rather than asserting default. - * @param {function(!FieldCreationTestCase=)=} customCreateWithJson Custom - * creation function to use in tests. - */ -function runFromJsonSuiteTests(TestedField, validValueTestCases, - invalidValueTestCases, validRunAssertField, assertFieldDefault, - customCreateWithJson) { - suite('fromJson', function() { - if (assertFieldDefault) { - test('Empty', function() { - const field = customCreateWithJson ? customCreateWithJson.call(this) : - TestedField.fromJson({}); - assertFieldDefault(field); - }); - } else { - test('Empty', function() { - chai.assert.throws(function() { - customCreateWithJson ? customCreateWithJson.call(this) : - TestedField.fromJson({}); - }); - }); - } - - /** - * Creates a field using fromJson and the provided test case. - * @param {!FieldCreationTestCase} testCase The test case information. - * @return {!Blockly.Field} The instantiated field. - */ - const createWithJson = function(testCase) { - return customCreateWithJson ? customCreateWithJson.call(this, testCase) : - TestedField.fromJson(testCase.json); - }; - if (assertFieldDefault) { - runCreationTests_( - invalidValueTestCases, assertFieldDefault, createWithJson); - } else { - runCreationTestsAssertThrows_(invalidValueTestCases, createWithJson); - } - runCreationTests_(validValueTestCases, validRunAssertField, createWithJson); - }); -} -exports.runFromJsonSuiteTests = runFromJsonSuiteTests; - -/** - * Runs tests for setValue calls. - * @param {!Array} validValueTestCases Test cases with - * valid values. - * @param {!Array} invalidValueTestCases Test cases with - * invalid values. - * @param {*} invalidRunExpectedValue Expected value for field after invalid - * call to setValue. - * @param {string=} invalidRunExpectedText Expected text for field after invalid - * call to setValue. - */ -function runSetValueTests(validValueTestCases, invalidValueTestCases, - invalidRunExpectedValue, invalidRunExpectedText) { - /** - * Creates test callback for invalid setValue test. - * @param {!FieldValueTestCase} testCase The test case information. - * @return {!Function} The test callback. - */ - const createInvalidSetValueTestCallback = (testCase) => { - return function() { - this.field.setValue(testCase.value); - assertFieldValue( - this.field, invalidRunExpectedValue, invalidRunExpectedText); - }; - }; - /** - * Creates test callback for valid setValue test. - * @param {!FieldValueTestCase} testCase The test case information. - * @return {!Function} The test callback. - */ - const createValidSetValueTestCallback = (testCase) => { - return function() { - this.field.setValue(testCase.value); - assertFieldValue( - this.field, testCase.expectedValue, testCase.expectedText); - }; - }; - runTestCases(invalidValueTestCases, createInvalidSetValueTestCallback); - runTestCases(validValueTestCases, createValidSetValueTestCallback); -} -exports.runSetValueTests = runSetValueTests; +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.fields'); + +const {runTestCases, TestCase} = goog.require('Blockly.test.helpers.common'); + + +/** + * Field value test case. + * @implements {TestCase} + * @record + */ +class FieldValueTestCase { + /** + * Class for a a field value test case. + */ + constructor() { + /** + * @type {*} The value to use in test. + */ + this.value; + /** + * @type {*} The expected value. + */ + this.expectedValue; + /** + * @type {string|undefined} The expected text value. Provided if different + * from String(expectedValue). + */ + this.expectedText; + /** + * @type {!RegExp|string|undefined} The optional error message matcher. + * Provided if test case is expected to throw. + */ + this.errMsgMatcher; + } +} +exports.FieldValueTestCase = FieldValueTestCase; + +/** + * Field creation test case. + * @extends {FieldValueTestCase} + * @record + */ +class FieldCreationTestCase { + /** + * Class for a field creation test case. + */ + constructor() { + /** + * @type {Array<*>} The arguments to pass to field constructor. + */ + this.args; + /** + * @type {string} The json to use in field creation. + */ + this.json; + } +} +exports.FieldCreationTestCase = FieldCreationTestCase; + +/** + * Assert a field's value is the same as the expected value. + * @param {!Blockly.Field} field The field. + * @param {*} expectedValue The expected value. + * @param {string=} expectedText The expected text. + */ +function assertFieldValue(field, expectedValue, expectedText = undefined) { + const actualValue = field.getValue(); + const actualText = field.getText(); + if (expectedText === undefined) { + expectedText = String(expectedValue); + } + chai.assert.equal(actualValue, expectedValue, 'Value'); + chai.assert.equal(actualText, expectedText, 'Text'); +} +exports.assertFieldValue = assertFieldValue; + +/** + * Runs provided creation test cases. + * @param {!Array} testCases The test cases to run. + * @param {function(!Blockly.Field, !FieldCreationTestCase)} assertion The + * assertion to use. + * @param {function(new:Blockly.Field,!FieldCreationTestCase):Blockly.Field + * } creation A function that returns an instance of the field based on the + * provided test case. + * @private + */ +function runCreationTests_(testCases, assertion, creation) { + /** + * Creates test callback for creation test. + * @param {FieldCreationTestCase} testCase The test case to use. + * @return {Function} The test callback. + */ + const createTestFn = (testCase) => { + return function() { + const field = creation.call(this, testCase); + assertion(field, testCase); + }; + }; + runTestCases(testCases, createTestFn); +} + +/** + * Runs provided creation test cases. + * @param {!Array} testCases The test cases to run. + * @param {function(new:Blockly.Field,!FieldCreationTestCase):Blockly.Field + * } creation A function that returns an instance of the field based on the + * provided test case. + * @private + */ +function runCreationTestsAssertThrows_(testCases, creation) { + /** + * Creates test callback for creation test. + * @param {!FieldCreationTestCase} testCase The test case to use. + * @return {!Function} The test callback. + */ + const createTestFn = (testCase) => { + return function() { + chai.assert.throws(function() { + creation.call(this, testCase); + }, testCase.errMsgMatcher); + }; + }; + runTestCases(testCases, createTestFn); +} + +/** + * Runs suite of tests for constructor for the specified field. + * @param {function(new:Blockly.Field, *=)} TestedField The class of the field + * being tested. + * @param {Array} validValueTestCases Test cases with + * valid values for given field. + * @param {Array} invalidValueTestCases Test cases with + * invalid values for given field. + * @param {function(!Blockly.Field, !FieldCreationTestCase) + * } validRunAssertField Asserts that field has expected values. + * @param {function(!Blockly.Field)=} assertFieldDefault Asserts that field has + * default values. If undefined, tests will check that field throws when + * invalid value is passed rather than asserting default. + * @param {function(!FieldCreationTestCase=)=} customCreateWithJs Custom + * creation function to use in tests. + */ +function runConstructorSuiteTests(TestedField, validValueTestCases, + invalidValueTestCases, validRunAssertField, assertFieldDefault, + customCreateWithJs) { + suite('Constructor', function() { + if (assertFieldDefault) { + test('Empty', function() { + const field = customCreateWithJs ? customCreateWithJs.call(this) : + new TestedField(); + assertFieldDefault(field); + }); + } else { + test('Empty', function() { + chai.assert.throws(function() { + customCreateWithJs ? customCreateWithJs.call(this) : + new TestedField(); + }); + }); + } + + /** + * Creates a field using its constructor and the provided test case. + * @param {!FieldCreationTestCase} testCase The test case information. + * @return {!Blockly.Field} The instantiated field. + */ + const createWithJs = function(testCase) { + return customCreateWithJs ? customCreateWithJs.call(this, testCase) : + new TestedField(...testCase.args); + }; + if (assertFieldDefault) { + runCreationTests_( + invalidValueTestCases, assertFieldDefault, createWithJs); + } else { + runCreationTestsAssertThrows_(invalidValueTestCases, createWithJs); + } + runCreationTests_(validValueTestCases, validRunAssertField, createWithJs); + }); +} +exports.runConstructorSuiteTests = runConstructorSuiteTests; + +/** + * Runs suite of tests for fromJson creation of specified field. + * @param {function(new:Blockly.Field, *=)} TestedField The class of the field + * being tested. + * @param {!Array} validValueTestCases Test cases with + * valid values for given field. + * @param {!Array} invalidValueTestCases Test cases with + * invalid values for given field. + * @param {function(!Blockly.Field, !FieldValueTestCase) + * } validRunAssertField Asserts that field has expected values. + * @param {function(!Blockly.Field)=} assertFieldDefault Asserts that field has + * default values. If undefined, tests will check that field throws when + * invalid value is passed rather than asserting default. + * @param {function(!FieldCreationTestCase=)=} customCreateWithJson Custom + * creation function to use in tests. + */ +function runFromJsonSuiteTests(TestedField, validValueTestCases, + invalidValueTestCases, validRunAssertField, assertFieldDefault, + customCreateWithJson) { + suite('fromJson', function() { + if (assertFieldDefault) { + test('Empty', function() { + const field = customCreateWithJson ? customCreateWithJson.call(this) : + TestedField.fromJson({}); + assertFieldDefault(field); + }); + } else { + test('Empty', function() { + chai.assert.throws(function() { + customCreateWithJson ? customCreateWithJson.call(this) : + TestedField.fromJson({}); + }); + }); + } + + /** + * Creates a field using fromJson and the provided test case. + * @param {!FieldCreationTestCase} testCase The test case information. + * @return {!Blockly.Field} The instantiated field. + */ + const createWithJson = function(testCase) { + return customCreateWithJson ? customCreateWithJson.call(this, testCase) : + TestedField.fromJson(testCase.json); + }; + if (assertFieldDefault) { + runCreationTests_( + invalidValueTestCases, assertFieldDefault, createWithJson); + } else { + runCreationTestsAssertThrows_(invalidValueTestCases, createWithJson); + } + runCreationTests_(validValueTestCases, validRunAssertField, createWithJson); + }); +} +exports.runFromJsonSuiteTests = runFromJsonSuiteTests; + +/** + * Runs tests for setValue calls. + * @param {!Array} validValueTestCases Test cases with + * valid values. + * @param {!Array} invalidValueTestCases Test cases with + * invalid values. + * @param {*} invalidRunExpectedValue Expected value for field after invalid + * call to setValue. + * @param {string=} invalidRunExpectedText Expected text for field after invalid + * call to setValue. + */ +function runSetValueTests(validValueTestCases, invalidValueTestCases, + invalidRunExpectedValue, invalidRunExpectedText) { + /** + * Creates test callback for invalid setValue test. + * @param {!FieldValueTestCase} testCase The test case information. + * @return {!Function} The test callback. + */ + const createInvalidSetValueTestCallback = (testCase) => { + return function() { + this.field.setValue(testCase.value); + assertFieldValue( + this.field, invalidRunExpectedValue, invalidRunExpectedText); + }; + }; + /** + * Creates test callback for valid setValue test. + * @param {!FieldValueTestCase} testCase The test case information. + * @return {!Function} The test callback. + */ + const createValidSetValueTestCallback = (testCase) => { + return function() { + this.field.setValue(testCase.value); + assertFieldValue( + this.field, testCase.expectedValue, testCase.expectedText); + }; + }; + runTestCases(invalidValueTestCases, createInvalidSetValueTestCallback); + runTestCases(validValueTestCases, createValidSetValueTestCallback); +} +exports.runSetValueTests = runSetValueTests; diff --git a/tests/mocha/test_helpers/procedures.js b/tests/mocha/test_helpers/procedures.js index 23843c9f62d..a5a17bfffce 100644 --- a/tests/mocha/test_helpers/procedures.js +++ b/tests/mocha/test_helpers/procedures.js @@ -1,152 +1,152 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ -goog.module('Blockly.test.helpers.procedures'); - -const {ConnectionType} = goog.require('Blockly.ConnectionType'); - - -/** - * Asserts that the procedure definition or call block has the expected var - * models. - * @param {!Blockly.Block} block The procedure definition or call block to - * check. - * @param {!Array} varIds An array of variable ids. - */ -function assertBlockVarModels(block, varIds) { - const expectedVarModels = []; - for (let i = 0; i < varIds.length; i++) { - expectedVarModels.push(block.workspace.getVariableById(varIds[i])); - } - chai.assert.sameDeepOrderedMembers(block.getVarModels(), expectedVarModels); -} - -/** - * Asserts that the procedure call block has the expected arguments. - * @param {!Blockly.Block} callBlock The procedure definition block. - * @param {Array=} args An array of argument names. - */ -function assertCallBlockArgsStructure(callBlock, args) { - // inputList also contains "TOPROW" - chai.assert.equal(callBlock.inputList.length - 1, args.length, - 'call block has the expected number of args'); - - for (let i = 0; i < args.length; i++) { - const expectedName = args[i]; - const callInput = callBlock.inputList[i + 1]; - chai.assert.equal(callInput.type, ConnectionType.INPUT_VALUE); - chai.assert.equal(callInput.name, 'ARG' + i); - chai.assert.equal(callInput.fieldRow[0].getValue(), expectedName, - 'Call block consts did not match expected.'); - } - chai.assert.sameOrderedMembers(callBlock.getVars(), args); -} - -/** - * Asserts that the procedure definition block has the expected inputs and - * fields. - * @param {!Blockly.Block} defBlock The procedure definition block. - * @param {boolean=} hasReturn If we expect the procedure def to have a return - * input or not. - * @param {Array=} args An array of argument names. - * @param {Array=} varIds An array of variable ids. - * @param {boolean=} hasStatements If we expect the procedure def to have a - * statement input or not. - */ -function assertDefBlockStructure(defBlock, hasReturn = false, - args = [], varIds = [], hasStatements = true) { - if (hasStatements) { - chai.assert.isNotNull(defBlock.getInput('STACK'), - 'Def block should have STACK input'); - } else { - chai.assert.isNull(defBlock.getInput('STACK'), - 'Def block should not have STACK input'); - } - if (hasReturn) { - chai.assert.isNotNull(defBlock.getInput('RETURN'), - 'Def block should have RETURN input'); - } else { - chai.assert.isNull(defBlock.getInput('RETURN'), - 'Def block should not have RETURN input'); - } - if (args.length) { - chai.assert.include(defBlock.toString(), 'with', - 'Def block string should include "with"'); - } else { - chai.assert.notInclude(defBlock.toString(), 'with', - 'Def block string should not include "with"'); - } - - chai.assert.sameOrderedMembers(defBlock.getVars(), args); - assertBlockVarModels(defBlock, varIds); -} -exports.assertDefBlockStructure = assertDefBlockStructure; - -/** - * Asserts that the procedure call block has the expected inputs and - * fields. - * @param {!Blockly.Block} callBlock The procedure call block. - * @param {Array=} args An array of argument names. - * @param {Array=} varIds An array of variable ids. - * @param {string=} name The name we expect the caller to have. - */ -function assertCallBlockStructure( - callBlock, args = [], varIds = [], name = undefined) { - if (args.length) { - chai.assert.include(callBlock.toString(), 'with'); - } else { - chai.assert.notInclude(callBlock.toString(), 'with'); - } - - assertCallBlockArgsStructure(callBlock, args); - assertBlockVarModels(callBlock, varIds); - if (name !== undefined) { - chai.assert(callBlock.getFieldValue('NAME'), name); - } -} -exports.assertCallBlockStructure = assertCallBlockStructure; - -/** - * Creates procedure definition block using domToBlock call. - * @param {!Blockly.Workspace} workspace The Blockly workspace. - * @param {boolean=} hasReturn Whether the procedure definition should have - * return. - * @param {Array=} args An array of argument names. - * @return {Blockly.Block} The created block. - */ -function createProcDefBlock( - workspace, hasReturn = false, args = []) { - const type = hasReturn ? - 'procedures_defreturn' : 'procedures_defnoreturn'; - let xml = ''; - for (let i = 0; i < args.length; i ++) { - xml += - ' \n'; - } - xml += - ' proc name' + - ''; - return Blockly.Xml.domToBlock(Blockly.Xml.textToDom(xml), workspace); -} -exports.createProcDefBlock = createProcDefBlock; - -/** - * Creates procedure call block using domToBlock call. - * @param {!Blockly.Workspace} workspace The Blockly workspace. - * @param {boolean=} hasReturn Whether the corresponding procedure definition - * has return. - * @return {Blockly.Block} The created block. - */ -function createProcCallBlock( - workspace, hasReturn = false) { - const type = hasReturn ? - 'procedures_callreturn' : 'procedures_callnoreturn'; - return Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ), workspace); -} -exports.createProcCallBlock = createProcCallBlock; +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ +goog.module('Blockly.test.helpers.procedures'); + +const {ConnectionType} = goog.require('Blockly.ConnectionType'); + + +/** + * Asserts that the procedure definition or call block has the expected var + * models. + * @param {!Blockly.Block} block The procedure definition or call block to + * check. + * @param {!Array} varIds An array of variable ids. + */ +function assertBlockVarModels(block, varIds) { + const expectedVarModels = []; + for (let i = 0; i < varIds.length; i++) { + expectedVarModels.push(block.workspace.getVariableById(varIds[i])); + } + chai.assert.sameDeepOrderedMembers(block.getVarModels(), expectedVarModels); +} + +/** + * Asserts that the procedure call block has the expected arguments. + * @param {!Blockly.Block} callBlock The procedure definition block. + * @param {Array=} args An array of argument names. + */ +function assertCallBlockArgsStructure(callBlock, args) { + // inputList also contains "TOPROW" + chai.assert.equal(callBlock.inputList.length - 1, args.length, + 'call block has the expected number of args'); + + for (let i = 0; i < args.length; i++) { + const expectedName = args[i]; + const callInput = callBlock.inputList[i + 1]; + chai.assert.equal(callInput.type, ConnectionType.INPUT_VALUE); + chai.assert.equal(callInput.name, 'ARG' + i); + chai.assert.equal(callInput.fieldRow[0].getValue(), expectedName, + 'Call block consts did not match expected.'); + } + chai.assert.sameOrderedMembers(callBlock.getVars(), args); +} + +/** + * Asserts that the procedure definition block has the expected inputs and + * fields. + * @param {!Blockly.Block} defBlock The procedure definition block. + * @param {boolean=} hasReturn If we expect the procedure def to have a return + * input or not. + * @param {Array=} args An array of argument names. + * @param {Array=} varIds An array of variable ids. + * @param {boolean=} hasStatements If we expect the procedure def to have a + * statement input or not. + */ +function assertDefBlockStructure(defBlock, hasReturn = false, + args = [], varIds = [], hasStatements = true) { + if (hasStatements) { + chai.assert.isNotNull(defBlock.getInput('STACK'), + 'Def block should have STACK input'); + } else { + chai.assert.isNull(defBlock.getInput('STACK'), + 'Def block should not have STACK input'); + } + if (hasReturn) { + chai.assert.isNotNull(defBlock.getInput('RETURN'), + 'Def block should have RETURN input'); + } else { + chai.assert.isNull(defBlock.getInput('RETURN'), + 'Def block should not have RETURN input'); + } + if (args.length) { + chai.assert.include(defBlock.toString(), 'with', + 'Def block string should include "with"'); + } else { + chai.assert.notInclude(defBlock.toString(), 'with', + 'Def block string should not include "with"'); + } + + chai.assert.sameOrderedMembers(defBlock.getVars(), args); + assertBlockVarModels(defBlock, varIds); +} +exports.assertDefBlockStructure = assertDefBlockStructure; + +/** + * Asserts that the procedure call block has the expected inputs and + * fields. + * @param {!Blockly.Block} callBlock The procedure call block. + * @param {Array=} args An array of argument names. + * @param {Array=} varIds An array of variable ids. + * @param {string=} name The name we expect the caller to have. + */ +function assertCallBlockStructure( + callBlock, args = [], varIds = [], name = undefined) { + if (args.length) { + chai.assert.include(callBlock.toString(), 'with'); + } else { + chai.assert.notInclude(callBlock.toString(), 'with'); + } + + assertCallBlockArgsStructure(callBlock, args); + assertBlockVarModels(callBlock, varIds); + if (name !== undefined) { + chai.assert(callBlock.getFieldValue('NAME'), name); + } +} +exports.assertCallBlockStructure = assertCallBlockStructure; + +/** + * Creates procedure definition block using domToBlock call. + * @param {!Blockly.Workspace} workspace The Blockly workspace. + * @param {boolean=} hasReturn Whether the procedure definition should have + * return. + * @param {Array=} args An array of argument names. + * @return {Blockly.Block} The created block. + */ +function createProcDefBlock( + workspace, hasReturn = false, args = []) { + const type = hasReturn ? + 'procedures_defreturn' : 'procedures_defnoreturn'; + let xml = ''; + for (let i = 0; i < args.length; i ++) { + xml += + ' \n'; + } + xml += + ' proc name' + + ''; + return Blockly.Xml.domToBlock(Blockly.Xml.textToDom(xml), workspace); +} +exports.createProcDefBlock = createProcDefBlock; + +/** + * Creates procedure call block using domToBlock call. + * @param {!Blockly.Workspace} workspace The Blockly workspace. + * @param {boolean=} hasReturn Whether the corresponding procedure definition + * has return. + * @return {Blockly.Block} The created block. + */ +function createProcCallBlock( + workspace, hasReturn = false) { + const type = hasReturn ? + 'procedures_callreturn' : 'procedures_callnoreturn'; + return Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ), workspace); +} +exports.createProcCallBlock = createProcCallBlock; diff --git a/tests/mocha/test_helpers/serialization.js b/tests/mocha/test_helpers/serialization.js index c8b90ba7f16..cc30e701f21 100644 --- a/tests/mocha/test_helpers/serialization.js +++ b/tests/mocha/test_helpers/serialization.js @@ -1,132 +1,132 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.serialization'); - -const {runTestCases} = goog.require('Blockly.test.helpers.common'); - -/** - * Serialization test case. - * @implements {TestCase} - * @record - */ -class SerializationTestCase { - /** - * Class for a block serialization test case. - */ - constructor() { - /** - * @type {string} The block xml to use for test. Do not provide if json is - * provided. - */ - this.xml; - /** - * @type {string|undefined} The expected xml after round trip. Provided if - * it different from xml that was passed in. - */ - this.expectedXml; - /** - * @type {string} The block json to use for test. Do not provide if xml is - * provided. - */ - this.json; - /** - * @type {string|undefined} The expected json after round trip. Provided if - * it is different from json that was passed in. - */ - this.expectedJson; - } - /** - * Asserts that the block created from xml has the expected structure. - * @param {!Blockly.Block} block The block to check. - */ - assertBlockStructure(block) {} -} -exports.SerializationTestCase = SerializationTestCase; - -/** - * Runs serialization test suite. - * @param {!Array} testCases The test cases to run. - */ -const runSerializationTestSuite = (testCases) => { - /** - * Creates test callback for xmlToBlock test. - * @param {!SerializationTestCase} testCase The test case information. - * @return {!Function} The test callback. - */ - const createSerializedDataToBlockTestCallback = (testCase) => { - return function() { - let block; - if (testCase.json) { - block = Blockly.serialization.blocks.append( - testCase.json, this.workspace); - } else { - block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - testCase.xml), this.workspace); - } - testCase.assertBlockStructure(block); - }; - }; - /** - * Creates test callback for xml round trip test. - * @param {!SerializationTestCase} testCase The test case information. - * @return {!Function} The test callback. - */ - const createRoundTripTestCallback = (testCase) => { - return function() { - if (testCase.json) { - const block = Blockly.serialization.blocks.append( - testCase.json, this.workspace); - const generatedJson = Blockly.serialization.blocks.save(block); - const expectedJson = testCase.expectedJson || testCase.json; - chai.assert.deepEqual(generatedJson, expectedJson); - } else { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - testCase.xml), this.workspace); - const generatedXml = - Blockly.Xml.domToPrettyText( - Blockly.Xml.blockToDom(block)); - const expectedXml = testCase.expectedXml || testCase.xml; - chai.assert.equal(generatedXml, expectedXml); - } - }; - }; - suite('Serialization', function() { - suite('xmlToBlock', function() { - runTestCases(testCases, createSerializedDataToBlockTestCallback); - }); - suite('xml round-trip', function() { - setup(function() { - // The genUid is undergoing change as part of the 2021Q3 - // goog.module migration: - // - // - It is being moved from Blockly.utils to - // Blockly.utils.idGenerator (which itself is being renamed - // from IdGenerator). - // - For compatibility with changes to the module system (from - // goog.provide to goog.module and in future to ES modules), - // .genUid is now a wrapper around .TEST_ONLY.genUid, which - // can be safely stubbed by sinon or other similar - // frameworks in a way that will continue to work. - if (Blockly.utils.idGenerator && - Blockly.utils.idGenerator.TEST_ONLY) { - sinon.stub(Blockly.utils.idGenerator.TEST_ONLY, 'genUid') - .returns('1'); - } else { - // Fall back to stubbing original version on Blockly.utils. - sinon.stub(Blockly.utils, 'genUid').returns('1'); - } - }); - - teardown(function() { - sinon.restore(); - }); - - runTestCases(testCases, createRoundTripTestCallback); - }); - }); -}; -exports.runSerializationTestSuite = runSerializationTestSuite; +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.serialization'); + +const {runTestCases} = goog.require('Blockly.test.helpers.common'); + +/** + * Serialization test case. + * @implements {TestCase} + * @record + */ +class SerializationTestCase { + /** + * Class for a block serialization test case. + */ + constructor() { + /** + * @type {string} The block xml to use for test. Do not provide if json is + * provided. + */ + this.xml; + /** + * @type {string|undefined} The expected xml after round trip. Provided if + * it different from xml that was passed in. + */ + this.expectedXml; + /** + * @type {string} The block json to use for test. Do not provide if xml is + * provided. + */ + this.json; + /** + * @type {string|undefined} The expected json after round trip. Provided if + * it is different from json that was passed in. + */ + this.expectedJson; + } + /** + * Asserts that the block created from xml has the expected structure. + * @param {!Blockly.Block} block The block to check. + */ + assertBlockStructure(block) {} +} +exports.SerializationTestCase = SerializationTestCase; + +/** + * Runs serialization test suite. + * @param {!Array} testCases The test cases to run. + */ +const runSerializationTestSuite = (testCases) => { + /** + * Creates test callback for xmlToBlock test. + * @param {!SerializationTestCase} testCase The test case information. + * @return {!Function} The test callback. + */ + const createSerializedDataToBlockTestCallback = (testCase) => { + return function() { + let block; + if (testCase.json) { + block = Blockly.serialization.blocks.append( + testCase.json, this.workspace); + } else { + block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + testCase.xml), this.workspace); + } + testCase.assertBlockStructure(block); + }; + }; + /** + * Creates test callback for xml round trip test. + * @param {!SerializationTestCase} testCase The test case information. + * @return {!Function} The test callback. + */ + const createRoundTripTestCallback = (testCase) => { + return function() { + if (testCase.json) { + const block = Blockly.serialization.blocks.append( + testCase.json, this.workspace); + const generatedJson = Blockly.serialization.blocks.save(block); + const expectedJson = testCase.expectedJson || testCase.json; + chai.assert.deepEqual(generatedJson, expectedJson); + } else { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + testCase.xml), this.workspace); + const generatedXml = + Blockly.Xml.domToPrettyText( + Blockly.Xml.blockToDom(block)); + const expectedXml = testCase.expectedXml || testCase.xml; + chai.assert.equal(generatedXml, expectedXml); + } + }; + }; + suite('Serialization', function() { + suite('xmlToBlock', function() { + runTestCases(testCases, createSerializedDataToBlockTestCallback); + }); + suite('xml round-trip', function() { + setup(function() { + // The genUid is undergoing change as part of the 2021Q3 + // goog.module migration: + // + // - It is being moved from Blockly.utils to + // Blockly.utils.idGenerator (which itself is being renamed + // from IdGenerator). + // - For compatibility with changes to the module system (from + // goog.provide to goog.module and in future to ES modules), + // .genUid is now a wrapper around .TEST_ONLY.genUid, which + // can be safely stubbed by sinon or other similar + // frameworks in a way that will continue to work. + if (Blockly.utils.idGenerator && + Blockly.utils.idGenerator.TEST_ONLY) { + sinon.stub(Blockly.utils.idGenerator.TEST_ONLY, 'genUid') + .returns('1'); + } else { + // Fall back to stubbing original version on Blockly.utils. + sinon.stub(Blockly.utils, 'genUid').returns('1'); + } + }); + + teardown(function() { + sinon.restore(); + }); + + runTestCases(testCases, createRoundTripTestCallback); + }); + }); +}; +exports.runSerializationTestSuite = runSerializationTestSuite; diff --git a/tests/mocha/test_helpers/setup_teardown.js b/tests/mocha/test_helpers/setup_teardown.js index e1b085be15b..de1bc8d49e5 100644 --- a/tests/mocha/test_helpers/setup_teardown.js +++ b/tests/mocha/test_helpers/setup_teardown.js @@ -1,208 +1,208 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.setupTeardown'); - -const eventUtils = goog.require('Blockly.Events.utils'); -const {Blocks} = goog.require('Blockly.blocks'); - - -/** - * Safely disposes of Blockly workspace, logging any errors. - * Assumes that sharedTestSetup has also been called. This should be called - * using workspaceTeardown.call(this). - * @param {!Blockly.Workspace} workspace The workspace to dispose. - */ -function workspaceTeardown(workspace) { - try { - this.clock.runAll(); // Run all queued setTimeout calls. - workspace.dispose(); - this.clock.runAll(); // Run all remaining queued setTimeout calls. - } catch (e) { - const testRef = this.currentTest || this.test; - console.error(testRef.fullTitle() + '\n', e); - } -} -exports.workspaceTeardown = workspaceTeardown; - -/** - * Creates stub for Blockly.Events.fire that advances the clock forward after - * the event fires so it is processed immediately instead of on a timeout. - * @param {!SinonClock} clock The sinon clock. - * @return {!SinonStub} The created stub. - * @private - */ -function createEventsFireStubFireImmediately_(clock) { - const stub = sinon.stub(eventUtils, 'fire'); - stub.callsFake(function(event) { - // Call original method. - stub.wrappedMethod.call(this, ...arguments); - // Advance clock forward to run any queued events. - clock.runAll(); - }); - return stub; -} - -/** - * Adds message to shared cleanup object so that it is cleaned from - * Blockly.Messages global in sharedTestTeardown. - * @param {!Object} sharedCleanupObj The shared cleanup object created in - * sharedTestSetup. - * @param {string} message The message to add to shared cleanup object. - */ -function addMessageToCleanup(sharedCleanupObj, message) { - sharedCleanupObj.messagesCleanup_.push(message); -} -exports.addMessageToCleanup = addMessageToCleanup; - -/** - * Adds block type to shared cleanup object so that it is cleaned from - * Blockly.Blocks global in sharedTestTeardown. - * @param {!Object} sharedCleanupObj The shared cleanup object created in - * sharedTestSetup. - * @param {string} blockType The block type to add to shared cleanup object. - */ -function addBlockTypeToCleanup(sharedCleanupObj, blockType) { - sharedCleanupObj.blockTypesCleanup_.push(blockType); -} -exports.addBlockTypeToCleanup = addBlockTypeToCleanup; - -/** - * Wraps Blockly.defineBlocksWithJsonArray using stub in order to keep track of - * block types passed in to method on shared cleanup object so they are cleaned - * from Blockly.Blocks global in sharedTestTeardown. - * @param {!Object} sharedCleanupObj The shared cleanup object created in - * sharedTestSetup. - * @private - */ -function wrapDefineBlocksWithJsonArrayWithCleanup_(sharedCleanupObj) { - const stub = sinon.stub(Blockly, 'defineBlocksWithJsonArray'); - stub.callsFake(function(jsonArray) { - if (jsonArray) { - jsonArray.forEach((jsonBlock) => { - if (jsonBlock) { - addBlockTypeToCleanup(sharedCleanupObj, jsonBlock['type']); - } - }); - } - // Calls original method. - stub.wrappedMethod.call(this, ...arguments); - }); -} - -/** - * Shared setup method that sets up fake timer for clock so that pending - * setTimeout calls can be cleared in test teardown along with other common - * stubs. Should be called in setup of outermost suite using - * sharedTestSetup.call(this). - * The sinon fake timer defined on this.clock_ should not be reset in tests to - * avoid causing issues with cleanup in sharedTestTeardown. - * - * Stubs created in this setup (unless disabled by options passed): - * - Blockly.Events.fire - this.eventsFireStub - wraps fire event to trigger - * fireNow_ call immediately, rather than on timeout - * - Blockly.defineBlocksWithJsonArray - thin wrapper that adds logic to keep - * track of block types defined so that they can be undefined in - * sharedTestTeardown and calls original method. - * - * @param {Object} options Options to enable/disable setup - * of certain stubs. - */ -function sharedTestSetup(options = {}) { - this.sharedSetupCalled_ = true; - // Sandbox created for greater control when certain stubs are cleared. - this.sharedSetupSandbox_ = sinon.createSandbox(); - this.clock = this.sharedSetupSandbox_.useFakeTimers(); - if (options['fireEventsNow'] === undefined || options['fireEventsNow']) { - // Stubs event firing unless passed option "fireEventsNow: false" - this.eventsFireStub = createEventsFireStubFireImmediately_(this.clock); - } - this.sharedCleanup = { - blockTypesCleanup_: [], - messagesCleanup_: [], - }; - this.blockTypesCleanup_ = this.sharedCleanup.blockTypesCleanup_; - this.messagesCleanup_ = this.sharedCleanup.messagesCleanup_; - wrapDefineBlocksWithJsonArrayWithCleanup_(this.sharedCleanup); -} -exports.sharedTestSetup = sharedTestSetup; - -/** - * Shared cleanup method that clears up pending setTimeout calls, disposes of - * workspace, and resets global variables. Should be called in setup of - * outermost suite using sharedTestTeardown.call(this). - */ -function sharedTestTeardown() { - const testRef = this.currentTest || this.test; - if (!this.sharedSetupCalled_) { - console.error('"' + testRef.fullTitle() + '" did not call sharedTestSetup'); - } - - try { - if (this.workspace) { - workspaceTeardown.call(this, this.workspace); - this.workspace = null; - } else { - this.clock.runAll(); // Run all queued setTimeout calls. - } - } catch (e) { - console.error(testRef.fullTitle() + '\n', e); - } finally { - // Clear Blockly.Event state. - eventUtils.setGroup(false); - while (!eventUtils.isEnabled()) { - eventUtils.enable(); - } - eventUtils.setRecordUndo(true); - if (eventUtils.TEST_ONLY.FIRE_QUEUE.length) { - // If this happens, it may mean that some previous test is missing cleanup - // (i.e. a previous test added an event to the queue on a timeout that - // did not use a stubbed clock). - eventUtils.TEST_ONLY.FIRE_QUEUE.length = 0; - console.warn('"' + testRef.fullTitle() + - '" needed cleanup of Blockly.Events.TEST_ONLY.FIRE_QUEUE. This may ' + - 'indicate leakage from an earlier test'); - } - - // Restore all stubbed methods. - this.sharedSetupSandbox_.restore(); - sinon.restore(); - - const blockTypes = this.sharedCleanup.blockTypesCleanup_; - for (let i = 0; i < blockTypes.length; i++) { - delete Blocks[blockTypes[i]]; - } - const messages = this.sharedCleanup.messagesCleanup_; - for (let i = 0; i < messages.length; i++) { - delete Blockly.Msg[messages[i]]; - } - - Blockly.WidgetDiv.testOnly_setDiv(null); - } -} -exports.sharedTestTeardown = sharedTestTeardown; - -/** - * Creates stub for Blockly.utils.genUid that returns the provided id or ids. - * Recommended to also assert that the stub is called the expected number of - * times. - * @param {string|!Array} returnIds The return values to use for the - * created stub. If a single value is passed, then the stub always returns - * that value. - * @return {!SinonStub} The created stub. - */ -function createGenUidStubWithReturns(returnIds) { - const stub = sinon.stub(Blockly.utils.idGenerator.TEST_ONLY, "genUid"); - if (Array.isArray(returnIds)) { - for (let i = 0; i < returnIds.length; i++) { - stub.onCall(i).returns(returnIds[i]); - } - } else { - stub.returns(returnIds); - } - return stub; -} -exports.createGenUidStubWithReturns = createGenUidStubWithReturns; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.setupTeardown'); + +const eventUtils = goog.require('Blockly.Events.utils'); +const {Blocks} = goog.require('Blockly.blocks'); + + +/** + * Safely disposes of Blockly workspace, logging any errors. + * Assumes that sharedTestSetup has also been called. This should be called + * using workspaceTeardown.call(this). + * @param {!Blockly.Workspace} workspace The workspace to dispose. + */ +function workspaceTeardown(workspace) { + try { + this.clock.runAll(); // Run all queued setTimeout calls. + workspace.dispose(); + this.clock.runAll(); // Run all remaining queued setTimeout calls. + } catch (e) { + const testRef = this.currentTest || this.test; + console.error(testRef.fullTitle() + '\n', e); + } +} +exports.workspaceTeardown = workspaceTeardown; + +/** + * Creates stub for Blockly.Events.fire that advances the clock forward after + * the event fires so it is processed immediately instead of on a timeout. + * @param {!SinonClock} clock The sinon clock. + * @return {!SinonStub} The created stub. + * @private + */ +function createEventsFireStubFireImmediately_(clock) { + const stub = sinon.stub(eventUtils, 'fire'); + stub.callsFake(function(event) { + // Call original method. + stub.wrappedMethod.call(this, ...arguments); + // Advance clock forward to run any queued events. + clock.runAll(); + }); + return stub; +} + +/** + * Adds message to shared cleanup object so that it is cleaned from + * Blockly.Messages global in sharedTestTeardown. + * @param {!Object} sharedCleanupObj The shared cleanup object created in + * sharedTestSetup. + * @param {string} message The message to add to shared cleanup object. + */ +function addMessageToCleanup(sharedCleanupObj, message) { + sharedCleanupObj.messagesCleanup_.push(message); +} +exports.addMessageToCleanup = addMessageToCleanup; + +/** + * Adds block type to shared cleanup object so that it is cleaned from + * Blockly.Blocks global in sharedTestTeardown. + * @param {!Object} sharedCleanupObj The shared cleanup object created in + * sharedTestSetup. + * @param {string} blockType The block type to add to shared cleanup object. + */ +function addBlockTypeToCleanup(sharedCleanupObj, blockType) { + sharedCleanupObj.blockTypesCleanup_.push(blockType); +} +exports.addBlockTypeToCleanup = addBlockTypeToCleanup; + +/** + * Wraps Blockly.defineBlocksWithJsonArray using stub in order to keep track of + * block types passed in to method on shared cleanup object so they are cleaned + * from Blockly.Blocks global in sharedTestTeardown. + * @param {!Object} sharedCleanupObj The shared cleanup object created in + * sharedTestSetup. + * @private + */ +function wrapDefineBlocksWithJsonArrayWithCleanup_(sharedCleanupObj) { + const stub = sinon.stub(Blockly, 'defineBlocksWithJsonArray'); + stub.callsFake(function(jsonArray) { + if (jsonArray) { + jsonArray.forEach((jsonBlock) => { + if (jsonBlock) { + addBlockTypeToCleanup(sharedCleanupObj, jsonBlock['type']); + } + }); + } + // Calls original method. + stub.wrappedMethod.call(this, ...arguments); + }); +} + +/** + * Shared setup method that sets up fake timer for clock so that pending + * setTimeout calls can be cleared in test teardown along with other common + * stubs. Should be called in setup of outermost suite using + * sharedTestSetup.call(this). + * The sinon fake timer defined on this.clock_ should not be reset in tests to + * avoid causing issues with cleanup in sharedTestTeardown. + * + * Stubs created in this setup (unless disabled by options passed): + * - Blockly.Events.fire - this.eventsFireStub - wraps fire event to trigger + * fireNow_ call immediately, rather than on timeout + * - Blockly.defineBlocksWithJsonArray - thin wrapper that adds logic to keep + * track of block types defined so that they can be undefined in + * sharedTestTeardown and calls original method. + * + * @param {Object} options Options to enable/disable setup + * of certain stubs. + */ +function sharedTestSetup(options = {}) { + this.sharedSetupCalled_ = true; + // Sandbox created for greater control when certain stubs are cleared. + this.sharedSetupSandbox_ = sinon.createSandbox(); + this.clock = this.sharedSetupSandbox_.useFakeTimers(); + if (options['fireEventsNow'] === undefined || options['fireEventsNow']) { + // Stubs event firing unless passed option "fireEventsNow: false" + this.eventsFireStub = createEventsFireStubFireImmediately_(this.clock); + } + this.sharedCleanup = { + blockTypesCleanup_: [], + messagesCleanup_: [], + }; + this.blockTypesCleanup_ = this.sharedCleanup.blockTypesCleanup_; + this.messagesCleanup_ = this.sharedCleanup.messagesCleanup_; + wrapDefineBlocksWithJsonArrayWithCleanup_(this.sharedCleanup); +} +exports.sharedTestSetup = sharedTestSetup; + +/** + * Shared cleanup method that clears up pending setTimeout calls, disposes of + * workspace, and resets global variables. Should be called in setup of + * outermost suite using sharedTestTeardown.call(this). + */ +function sharedTestTeardown() { + const testRef = this.currentTest || this.test; + if (!this.sharedSetupCalled_) { + console.error('"' + testRef.fullTitle() + '" did not call sharedTestSetup'); + } + + try { + if (this.workspace) { + workspaceTeardown.call(this, this.workspace); + this.workspace = null; + } else { + this.clock.runAll(); // Run all queued setTimeout calls. + } + } catch (e) { + console.error(testRef.fullTitle() + '\n', e); + } finally { + // Clear Blockly.Event state. + eventUtils.setGroup(false); + while (!eventUtils.isEnabled()) { + eventUtils.enable(); + } + eventUtils.setRecordUndo(true); + if (eventUtils.TEST_ONLY.FIRE_QUEUE.length) { + // If this happens, it may mean that some previous test is missing cleanup + // (i.e. a previous test added an event to the queue on a timeout that + // did not use a stubbed clock). + eventUtils.TEST_ONLY.FIRE_QUEUE.length = 0; + console.warn('"' + testRef.fullTitle() + + '" needed cleanup of Blockly.Events.TEST_ONLY.FIRE_QUEUE. This may ' + + 'indicate leakage from an earlier test'); + } + + // Restore all stubbed methods. + this.sharedSetupSandbox_.restore(); + sinon.restore(); + + const blockTypes = this.sharedCleanup.blockTypesCleanup_; + for (let i = 0; i < blockTypes.length; i++) { + delete Blocks[blockTypes[i]]; + } + const messages = this.sharedCleanup.messagesCleanup_; + for (let i = 0; i < messages.length; i++) { + delete Blockly.Msg[messages[i]]; + } + + Blockly.WidgetDiv.testOnly_setDiv(null); + } +} +exports.sharedTestTeardown = sharedTestTeardown; + +/** + * Creates stub for Blockly.utils.genUid that returns the provided id or ids. + * Recommended to also assert that the stub is called the expected number of + * times. + * @param {string|!Array} returnIds The return values to use for the + * created stub. If a single value is passed, then the stub always returns + * that value. + * @return {!SinonStub} The created stub. + */ +function createGenUidStubWithReturns(returnIds) { + const stub = sinon.stub(Blockly.utils.idGenerator.TEST_ONLY, "genUid"); + if (Array.isArray(returnIds)) { + for (let i = 0; i < returnIds.length; i++) { + stub.onCall(i).returns(returnIds[i]); + } + } else { + stub.returns(returnIds); + } + return stub; +} +exports.createGenUidStubWithReturns = createGenUidStubWithReturns; diff --git a/tests/mocha/test_helpers/toolbox_definitions.js b/tests/mocha/test_helpers/toolbox_definitions.js index ee7ff576fce..95ac30f92d0 100644 --- a/tests/mocha/test_helpers/toolbox_definitions.js +++ b/tests/mocha/test_helpers/toolbox_definitions.js @@ -1,265 +1,265 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.toolboxDefinitions'); - - -/** - * Get JSON for a toolbox that contains categories. - * @return {Blockly.utils.toolbox.ToolboxJson} The array holding information - * for a toolbox. - */ -function getCategoryJSON() { - return {"contents": [ - { - "kind": "CATEGORY", - "cssconfig": { - "container": "something", - }, - "contents": [ - { - "kind": "BLOCK", - "blockxml": 'FirstCategory-FirstBlock', - }, - { - "kind": "BLOCK", - "blockxml": 'FirstCategory-SecondBlock', - }, - ], - "name": "First", - }, - { - "kind": "CATEGORY", - "contents": [ - { - "kind": "BLOCK", - "blockxml": 'SecondCategory-FirstBlock', - }, - ], - "name": "Second", - }]}; -} -exports.getCategoryJSON = getCategoryJSON; - -/** - * Get JSON for a simple toolbox. - * @return {Blockly.utils.toolbox.ToolboxJson} The array holding information - * for a simple toolbox. - */ -function getSimpleJson() { - return {"contents": [ - { - "kind": "BLOCK", - "blockxml": - ` - NEQ - - - 1 - - - - - 2 - - - `, - }, - { - "kind": "SEP", - "gap": "20", - }, - { - "kind": "BUTTON", - "text": "insert", - "callbackkey": "insertConnectionRows", - }, - { - "kind": "LABEL", - "text": "tooltips", - }, - ]}; -} -exports.getSimpleJson = getSimpleJson; - -function getProperSimpleJson() { - return { - "contents": [ - { - "kind": "BLOCK", - "type": "logic_compare", - "fields": { - "OP": "NEQ", - }, - "inputs": { - "A": { - "shadow": { - "type": "math_number", - "fields": { - "NUM": 1, - }, - }, - }, - "B": { - "block": { - "type": "math_number", - "fields": { - "NUM": 2, - }, - }, - }, - }, - }, - { - "kind": "SEP", - "gap": "20", - }, - { - "kind": "BUTTON", - "text": "insert", - "callbackkey": "insertConnectionRows", - }, - { - "kind": "LABEL", - "text": "tooltips", - }, - ]}; -} -exports.getProperSimpleJson = getProperSimpleJson; - -/** - * Get JSON for a toolbox that contains categories that contain categories. - * @return {Blockly.utils.toolbox.ToolboxJson} The array holding information - * for a toolbox. - */ -function getDeeplyNestedJSON() { - return {"contents": [ - { - "kind": "CATEGORY", - "cssconfig": { - "container": "something", - }, - "contents": [{ - "kind": "CATEGORY", - "contents": [{ - "kind": "CATEGORY", - "contents": [ - { - "kind": "BLOCK", - "blockxml": 'NestedCategory-FirstBlock', - }, - { - "kind": "BLOCK", - "blockxml": 'NestedCategory-SecondBlock', - }, - ], - "name": "NestedCategoryInner", - }], - "name": "NestedCategoryMiddle", - }], - "name": "NestedCategoryOuter", - }, - { - "kind": "CATEGORY", - "contents": [ - { - "kind": "BLOCK", - "blockxml": 'SecondCategory-FirstBlock', - }, - ], - "name": "Second", - }]}; -} -exports.getDeeplyNestedJSON = getDeeplyNestedJSON; - -/** - * Get an array filled with xml elements. - * @return {Array} Array holding xml elements for a toolbox. - */ -function getXmlArray() { - const block = Blockly.Xml.textToDom( - ` - NEQ - - - 1 - - - - - 2 - - - `); - const separator = Blockly.Xml.textToDom(''); - const button = Blockly.Xml.textToDom(''); - const label = Blockly.Xml.textToDom(''); - return [block, separator, button, label]; -} -exports.getXmlArray = getXmlArray; - -function getInjectedToolbox() { - /** - * Category: First - * sep - * basic_block - * basic_block - * Category: second - * basic_block - * Category: Variables - * custom: VARIABLE - * Category: NestedCategory - * Category: NestedItemOne - */ - const toolboxXml = document.getElementById('toolbox-test'); - const workspace = Blockly.inject('blocklyDiv', - { - toolbox: toolboxXml, - }); - return workspace.getToolbox(); -} -exports.getInjectedToolbox = getInjectedToolbox; - -function getBasicToolbox() { - const workspace = new Blockly.WorkspaceSvg(new Blockly.Options({})); - const toolbox = new Blockly.Toolbox(workspace); - toolbox.HtmlDiv = document.createElement('div'); - toolbox.flyout_ = sinon.createStubInstance(Blockly.VerticalFlyout); - return toolbox; -} -exports.getBasicToolbox = getBasicToolbox; - -function getCollapsibleItem(toolbox) { - const contents = toolbox.contents_; - for (let i = 0; i < contents.length; i++) { - const item = contents[i]; - if (item.isCollapsible()) { - return item; - } - } -} -exports.getCollapsibleItem = getCollapsibleItem; - -function getNonCollapsibleItem(toolbox) { - const contents = toolbox.contents_; - for (let i = 0; i < contents.length; i++) { - const item = contents[i]; - if (!item.isCollapsible()) { - return item; - } - } -} -exports.getNonCollapsibleItem = getNonCollapsibleItem; - -function getChildItem(toolbox) { - return toolbox.getToolboxItemById('nestedCategory'); -} -exports.getChildItem = getChildItem; - -function getSeparator(toolbox) { - return toolbox.getToolboxItemById('separator'); -} -exports.getSeparator = getSeparator; +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.toolboxDefinitions'); + + +/** + * Get JSON for a toolbox that contains categories. + * @return {Blockly.utils.toolbox.ToolboxJson} The array holding information + * for a toolbox. + */ +function getCategoryJSON() { + return {"contents": [ + { + "kind": "CATEGORY", + "cssconfig": { + "container": "something", + }, + "contents": [ + { + "kind": "BLOCK", + "blockxml": 'FirstCategory-FirstBlock', + }, + { + "kind": "BLOCK", + "blockxml": 'FirstCategory-SecondBlock', + }, + ], + "name": "First", + }, + { + "kind": "CATEGORY", + "contents": [ + { + "kind": "BLOCK", + "blockxml": 'SecondCategory-FirstBlock', + }, + ], + "name": "Second", + }]}; +} +exports.getCategoryJSON = getCategoryJSON; + +/** + * Get JSON for a simple toolbox. + * @return {Blockly.utils.toolbox.ToolboxJson} The array holding information + * for a simple toolbox. + */ +function getSimpleJson() { + return {"contents": [ + { + "kind": "BLOCK", + "blockxml": + ` + NEQ + + + 1 + + + + + 2 + + + `, + }, + { + "kind": "SEP", + "gap": "20", + }, + { + "kind": "BUTTON", + "text": "insert", + "callbackkey": "insertConnectionRows", + }, + { + "kind": "LABEL", + "text": "tooltips", + }, + ]}; +} +exports.getSimpleJson = getSimpleJson; + +function getProperSimpleJson() { + return { + "contents": [ + { + "kind": "BLOCK", + "type": "logic_compare", + "fields": { + "OP": "NEQ", + }, + "inputs": { + "A": { + "shadow": { + "type": "math_number", + "fields": { + "NUM": 1, + }, + }, + }, + "B": { + "block": { + "type": "math_number", + "fields": { + "NUM": 2, + }, + }, + }, + }, + }, + { + "kind": "SEP", + "gap": "20", + }, + { + "kind": "BUTTON", + "text": "insert", + "callbackkey": "insertConnectionRows", + }, + { + "kind": "LABEL", + "text": "tooltips", + }, + ]}; +} +exports.getProperSimpleJson = getProperSimpleJson; + +/** + * Get JSON for a toolbox that contains categories that contain categories. + * @return {Blockly.utils.toolbox.ToolboxJson} The array holding information + * for a toolbox. + */ +function getDeeplyNestedJSON() { + return {"contents": [ + { + "kind": "CATEGORY", + "cssconfig": { + "container": "something", + }, + "contents": [{ + "kind": "CATEGORY", + "contents": [{ + "kind": "CATEGORY", + "contents": [ + { + "kind": "BLOCK", + "blockxml": 'NestedCategory-FirstBlock', + }, + { + "kind": "BLOCK", + "blockxml": 'NestedCategory-SecondBlock', + }, + ], + "name": "NestedCategoryInner", + }], + "name": "NestedCategoryMiddle", + }], + "name": "NestedCategoryOuter", + }, + { + "kind": "CATEGORY", + "contents": [ + { + "kind": "BLOCK", + "blockxml": 'SecondCategory-FirstBlock', + }, + ], + "name": "Second", + }]}; +} +exports.getDeeplyNestedJSON = getDeeplyNestedJSON; + +/** + * Get an array filled with xml elements. + * @return {Array} Array holding xml elements for a toolbox. + */ +function getXmlArray() { + const block = Blockly.Xml.textToDom( + ` + NEQ + + + 1 + + + + + 2 + + + `); + const separator = Blockly.Xml.textToDom(''); + const button = Blockly.Xml.textToDom(''); + const label = Blockly.Xml.textToDom(''); + return [block, separator, button, label]; +} +exports.getXmlArray = getXmlArray; + +function getInjectedToolbox() { + /** + * Category: First + * sep + * basic_block + * basic_block + * Category: second + * basic_block + * Category: Variables + * custom: VARIABLE + * Category: NestedCategory + * Category: NestedItemOne + */ + const toolboxXml = document.getElementById('toolbox-test'); + const workspace = Blockly.inject('blocklyDiv', + { + toolbox: toolboxXml, + }); + return workspace.getToolbox(); +} +exports.getInjectedToolbox = getInjectedToolbox; + +function getBasicToolbox() { + const workspace = new Blockly.WorkspaceSvg(new Blockly.Options({})); + const toolbox = new Blockly.Toolbox(workspace); + toolbox.HtmlDiv = document.createElement('div'); + toolbox.flyout_ = sinon.createStubInstance(Blockly.VerticalFlyout); + return toolbox; +} +exports.getBasicToolbox = getBasicToolbox; + +function getCollapsibleItem(toolbox) { + const contents = toolbox.contents_; + for (let i = 0; i < contents.length; i++) { + const item = contents[i]; + if (item.isCollapsible()) { + return item; + } + } +} +exports.getCollapsibleItem = getCollapsibleItem; + +function getNonCollapsibleItem(toolbox) { + const contents = toolbox.contents_; + for (let i = 0; i < contents.length; i++) { + const item = contents[i]; + if (!item.isCollapsible()) { + return item; + } + } +} +exports.getNonCollapsibleItem = getNonCollapsibleItem; + +function getChildItem(toolbox) { + return toolbox.getToolboxItemById('nestedCategory'); +} +exports.getChildItem = getChildItem; + +function getSeparator(toolbox) { + return toolbox.getToolboxItemById('separator'); +} +exports.getSeparator = getSeparator; diff --git a/tests/mocha/test_helpers/user_input.js b/tests/mocha/test_helpers/user_input.js index 9482a7909d7..dbbb77abe1a 100644 --- a/tests/mocha/test_helpers/user_input.js +++ b/tests/mocha/test_helpers/user_input.js @@ -1,68 +1,68 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.userInput'); - -const {KeyCodes} = goog.require('Blockly.utils.KeyCodes'); - - -/** - * Triggers pointer event on target. - * @param {!EventTarget} target The object receiving the event. - * @param {string} type The type of mouse event (eg: mousedown, mouseup, - * click). - * @param {Object=} properties Properties to pass into event - * constructor. - */ -function dispatchPointerEvent(target, type, properties) { - const eventInitDict = { - cancelable: true, - bubbles: true, - isPrimary: true, - pressure: 0.5, - clientX: 10, - clientY: 10, - }; - if (properties) { - Object.assign(eventInitDict, properties); - } - const event = new PointerEvent(type, eventInitDict); - target.dispatchEvent(event); -} -exports.dispatchPointerEvent = dispatchPointerEvent; - -/** - * Creates a key down event used for testing. - * @param {number} keyCode The keycode for the event. Use Blockly.utils.KeyCodes enum. - * @param {!Array=} modifiers A list of modifiers. Use Blockly.utils.KeyCodes enum. - * @return {!KeyboardEvent} The mocked keydown event. - */ -function createKeyDownEvent(keyCode, modifiers) { - const event = { - keyCode: keyCode, - }; - if (modifiers && modifiers.length > 0) { - event.altKey = modifiers.indexOf(KeyCodes.ALT) > -1; - event.ctrlKey = modifiers.indexOf(KeyCodes.CTRL) > -1; - event.metaKey = modifiers.indexOf(KeyCodes.META) > -1; - event.shiftKey = modifiers.indexOf(KeyCodes.SHIFT) > -1; - } - return new KeyboardEvent('keydown', event); -} -exports.createKeyDownEvent = createKeyDownEvent; - -/** - * Simulates mouse click by triggering relevant mouse events. - * @param {!EventTarget} target The object receiving the event. - * @param {Object=} properties Properties to pass into event - * constructor. - */ -function simulateClick(target, properties) { - dispatchPointerEvent(target, 'pointerdown', properties); - dispatchPointerEvent(target, 'pointerup', properties); - dispatchPointerEvent(target, 'click', properties); -} -exports.simulateClick = simulateClick; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.userInput'); + +const {KeyCodes} = goog.require('Blockly.utils.KeyCodes'); + + +/** + * Triggers pointer event on target. + * @param {!EventTarget} target The object receiving the event. + * @param {string} type The type of mouse event (eg: mousedown, mouseup, + * click). + * @param {Object=} properties Properties to pass into event + * constructor. + */ +function dispatchPointerEvent(target, type, properties) { + const eventInitDict = { + cancelable: true, + bubbles: true, + isPrimary: true, + pressure: 0.5, + clientX: 10, + clientY: 10, + }; + if (properties) { + Object.assign(eventInitDict, properties); + } + const event = new PointerEvent(type, eventInitDict); + target.dispatchEvent(event); +} +exports.dispatchPointerEvent = dispatchPointerEvent; + +/** + * Creates a key down event used for testing. + * @param {number} keyCode The keycode for the event. Use Blockly.utils.KeyCodes enum. + * @param {!Array=} modifiers A list of modifiers. Use Blockly.utils.KeyCodes enum. + * @return {!KeyboardEvent} The mocked keydown event. + */ +function createKeyDownEvent(keyCode, modifiers) { + const event = { + keyCode: keyCode, + }; + if (modifiers && modifiers.length > 0) { + event.altKey = modifiers.indexOf(KeyCodes.ALT) > -1; + event.ctrlKey = modifiers.indexOf(KeyCodes.CTRL) > -1; + event.metaKey = modifiers.indexOf(KeyCodes.META) > -1; + event.shiftKey = modifiers.indexOf(KeyCodes.SHIFT) > -1; + } + return new KeyboardEvent('keydown', event); +} +exports.createKeyDownEvent = createKeyDownEvent; + +/** + * Simulates mouse click by triggering relevant mouse events. + * @param {!EventTarget} target The object receiving the event. + * @param {Object=} properties Properties to pass into event + * constructor. + */ +function simulateClick(target, properties) { + dispatchPointerEvent(target, 'pointerdown', properties); + dispatchPointerEvent(target, 'pointerup', properties); + dispatchPointerEvent(target, 'click', properties); +} +exports.simulateClick = simulateClick; diff --git a/tests/mocha/test_helpers/variables.js b/tests/mocha/test_helpers/variables.js index f550e960bb4..310b8a62c98 100644 --- a/tests/mocha/test_helpers/variables.js +++ b/tests/mocha/test_helpers/variables.js @@ -1,25 +1,25 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.variables'); - - -/** - * Check if a variable with the given values exists. - * @param {Blockly.Workspace|Blockly.VariableMap} container The workspace or - * variableMap the checked variable belongs to. - * @param {!string} name The expected name of the variable. - * @param {!string} type The expected type of the variable. - * @param {!string} id The expected id of the variable. - */ -function assertVariableValues(container, name, type, id) { - const variable = container.getVariableById(id); - chai.assert.isDefined(variable); - chai.assert.equal(variable.name, name); - chai.assert.equal(variable.type, type); - chai.assert.equal(variable.getId(), id); -} -exports.assertVariableValues = assertVariableValues; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.variables'); + + +/** + * Check if a variable with the given values exists. + * @param {Blockly.Workspace|Blockly.VariableMap} container The workspace or + * variableMap the checked variable belongs to. + * @param {!string} name The expected name of the variable. + * @param {!string} type The expected type of the variable. + * @param {!string} id The expected id of the variable. + */ +function assertVariableValues(container, name, type, id) { + const variable = container.getVariableById(id); + chai.assert.isDefined(variable); + chai.assert.equal(variable.name, name); + chai.assert.equal(variable.type, type); + chai.assert.equal(variable.getId(), id); +} +exports.assertVariableValues = assertVariableValues; diff --git a/tests/mocha/test_helpers/warnings.js b/tests/mocha/test_helpers/warnings.js index 0457395cce7..17b8dca2a28 100644 --- a/tests/mocha/test_helpers/warnings.js +++ b/tests/mocha/test_helpers/warnings.js @@ -1,90 +1,90 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.warnings'); - - -/** - * Captures the strings sent to console.warn() when calling a function. - * Copies from core. - * @param {Function} innerFunc The function where warnings may called. - * @return {Array} The warning messages (only the first arguments). - */ -function captureWarnings(innerFunc) { - const msgs = []; - const nativeConsoleWarn = console.warn; - try { - console.warn = function(msg) { - msgs.push(msg); - }; - innerFunc(); - } finally { - console.warn = nativeConsoleWarn; - } - return msgs; -} -exports.captureWarnings = captureWarnings; - -/** - * Asserts that the given function logs the provided warning messages. - * @param {function()} innerFunc The function to call. - * @param {Array|!RegExp} messages A list of regex for the expected - * messages (in the expected order). - */ -function assertWarnings(innerFunc, messages) { - if (!Array.isArray(messages)) { - messages = [messages]; - } - const warnings = captureWarnings(innerFunc); - chai.assert.lengthOf(warnings, messages.length); - messages.forEach((message, i) => { - chai.assert.match(warnings[i], message); - }); -} -exports.assertWarnings = assertWarnings; - -/** - * Asserts that the given function logs no warning messages. - * @param {function()} innerFunc The function to call. - */ -function assertNoWarnings(innerFunc) { - assertWarnings(innerFunc, []); -} -exports.assertNoWarnings = assertNoWarnings; - -/** - * Stubs Blockly.utils.deprecation.warn call. - * @return {!SinonStub} The created stub. - */ -function createDeprecationWarningStub() { - return sinon.stub(Blockly.utils.deprecation, 'warn'); -} -exports.createDeprecationWarningStub = createDeprecationWarningStub; - -/** - * Asserts whether the given deprecation warning stub or call was called with - * the expected functionName. - * @param {!SinonSpy|!SinonSpyCall} spyOrSpyCall The spy or spy call to use. - * @param {string} functionName The function name to check that the given spy or - * spy call was called with. - */ -function assertDeprecationWarningCall(spyOrSpyCall, functionName) { - sinon.assert.calledWith(spyOrSpyCall, functionName); -} -exports.assertDeprecationWarningCall = assertDeprecationWarningCall; - -/** - * Asserts that there was a single deprecation warning call with the given - * functionName passed. - * @param {!SinonSpy} spy The spy to use. - * @param {string} functionName The function name to check that the given spy - * was called with. - */ -function assertSingleDeprecationWarningCall(spy, functionName) { - sinon.assert.calledOnce(spy); - assertDeprecationWarningCall(spy.getCall(0), functionName); -} -exports.assertSingleDeprecationWarningCall = assertSingleDeprecationWarningCall; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.warnings'); + + +/** + * Captures the strings sent to console.warn() when calling a function. + * Copies from core. + * @param {Function} innerFunc The function where warnings may called. + * @return {Array} The warning messages (only the first arguments). + */ +function captureWarnings(innerFunc) { + const msgs = []; + const nativeConsoleWarn = console.warn; + try { + console.warn = function(msg) { + msgs.push(msg); + }; + innerFunc(); + } finally { + console.warn = nativeConsoleWarn; + } + return msgs; +} +exports.captureWarnings = captureWarnings; + +/** + * Asserts that the given function logs the provided warning messages. + * @param {function()} innerFunc The function to call. + * @param {Array|!RegExp} messages A list of regex for the expected + * messages (in the expected order). + */ +function assertWarnings(innerFunc, messages) { + if (!Array.isArray(messages)) { + messages = [messages]; + } + const warnings = captureWarnings(innerFunc); + chai.assert.lengthOf(warnings, messages.length); + messages.forEach((message, i) => { + chai.assert.match(warnings[i], message); + }); +} +exports.assertWarnings = assertWarnings; + +/** + * Asserts that the given function logs no warning messages. + * @param {function()} innerFunc The function to call. + */ +function assertNoWarnings(innerFunc) { + assertWarnings(innerFunc, []); +} +exports.assertNoWarnings = assertNoWarnings; + +/** + * Stubs Blockly.utils.deprecation.warn call. + * @return {!SinonStub} The created stub. + */ +function createDeprecationWarningStub() { + return sinon.stub(Blockly.utils.deprecation, 'warn'); +} +exports.createDeprecationWarningStub = createDeprecationWarningStub; + +/** + * Asserts whether the given deprecation warning stub or call was called with + * the expected functionName. + * @param {!SinonSpy|!SinonSpyCall} spyOrSpyCall The spy or spy call to use. + * @param {string} functionName The function name to check that the given spy or + * spy call was called with. + */ +function assertDeprecationWarningCall(spyOrSpyCall, functionName) { + sinon.assert.calledWith(spyOrSpyCall, functionName); +} +exports.assertDeprecationWarningCall = assertDeprecationWarningCall; + +/** + * Asserts that there was a single deprecation warning call with the given + * functionName passed. + * @param {!SinonSpy} spy The spy to use. + * @param {string} functionName The function name to check that the given spy + * was called with. + */ +function assertSingleDeprecationWarningCall(spy, functionName) { + sinon.assert.calledOnce(spy); + assertDeprecationWarningCall(spy.getCall(0), functionName); +} +exports.assertSingleDeprecationWarningCall = assertSingleDeprecationWarningCall; diff --git a/tests/mocha/test_helpers/workspace.js b/tests/mocha/test_helpers/workspace.js index 204a46df685..e46be83c1a9 100644 --- a/tests/mocha/test_helpers/workspace.js +++ b/tests/mocha/test_helpers/workspace.js @@ -1,1531 +1,1531 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.helpers.workspace'); - -const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); -const {assertWarnings} = goog.require('Blockly.test.helpers.warnings'); -const eventUtils = goog.require('Blockly.Events.utils'); -const {workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -function testAWorkspace() { - setup(function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "get_var_block", - "message0": "%1", - "args0": [ - { - "type": "field_variable", - "name": "VAR", - "variableTypes": ["", "type1", "type2"], - }, - ], - }]); - }); - - teardown(function() { - // Clear Blockly.Event state. - eventUtils.setGroup(false); - while (!eventUtils.isEnabled()) { - eventUtils.enable(); - } - sinon.restore(); - }); - - function assertBlockVarModelName(workspace, blockIndex, name) { - const block = workspace.topBlocks_[blockIndex]; - chai.assert.exists(block, 'Block at topBlocks_[' + blockIndex + ']'); - const varModel = block.getVarModels()[0]; - chai.assert.exists(varModel, - 'VariableModel for block at topBlocks_[' + blockIndex + ']'); - const blockVarName = varModel.name; - chai.assert.equal(blockVarName, name, - 'VariableModel name for block at topBlocks_[' + blockIndex + ']'); - } - - function createVarBlocksNoEvents(workspace, ids) { - const blocks = []; - // Turn off events to avoid testing XML at the same time. - eventUtils.disable(); - for (let i = 0, id; (id = ids[i]); i++) { - const block = new Blockly.Block(workspace, 'get_var_block'); - block.inputList[0].fieldRow[0].setValue(id); - blocks.push(block); - } - eventUtils.enable(); - return blocks; - } - - suite('clear', function() { - test('Trivial', function() { - sinon.stub(eventUtils, "setGroup").returns(null); - this.workspace.createVariable('name1', 'type1', 'id1'); - this.workspace.createVariable('name2', 'type2', 'id2'); - this.workspace.newBlock(''); - - this.workspace.clear(); - chai.assert.equal(this.workspace.topBlocks_.length, 0); - const varMapLength = - Object.keys(this.workspace.variableMap_.variableMap_).length; - chai.assert.equal(varMapLength, 0); - }); - - test('No variables', function() { - sinon.stub(eventUtils, "setGroup").returns(null); - this.workspace.newBlock(''); - - this.workspace.clear(); - chai.assert.equal(this.workspace.topBlocks_.length, 0); - const varMapLength = - Object.keys(this.workspace.variableMap_.variableMap_).length; - chai.assert.equal(varMapLength, 0); - }); - }); - - suite('deleteVariable', function() { - setup(function() { - // Create two variables of different types. - this.var1 = this.workspace.createVariable('name1', 'type1', 'id1'); - this.var2 = this.workspace.createVariable('name2', 'type2', 'id2'); - // Create blocks to refer to both of them. - createVarBlocksNoEvents(this.workspace, ['id1', 'id1', 'id2']); - }); - - test('deleteVariableById(id2) one usage', function() { - // Deleting variable one usage should not trigger confirm dialog. - const stub = - sinon.stub(Blockly.dialog, "confirm").callsArgWith(1, true); - this.workspace.deleteVariableById('id2'); - - sinon.assert.notCalled(stub); - const variable = this.workspace.getVariableById('id2'); - chai.assert.isNull(variable); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertBlockVarModelName(this.workspace, 0, 'name1'); - }); - - test('deleteVariableById(id1) multiple usages confirm', function() { - // Deleting variable with multiple usages triggers confirm dialog. - const stub = - sinon.stub(Blockly.dialog, "confirm").callsArgWith(1, true); - this.workspace.deleteVariableById('id1'); - - sinon.assert.calledOnce(stub); - const variable = this.workspace.getVariableById('id1'); - chai.assert.isNull(variable); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - assertBlockVarModelName(this.workspace, 0, 'name2'); - }); - - test('deleteVariableById(id1) multiple usages cancel', function() { - // Deleting variable with multiple usages triggers confirm dialog. - const stub = - sinon.stub(Blockly.dialog, "confirm").callsArgWith(1, false); - this.workspace.deleteVariableById('id1'); - - sinon.assert.calledOnce(stub); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - assertBlockVarModelName(this.workspace, 0, 'name1'); - assertBlockVarModelName(this.workspace, 1, 'name1'); - assertBlockVarModelName(this.workspace, 2, 'name2'); - }); - }); - - suite('renameVariableById', function() { - setup(function() { - this.workspace.createVariable('name1', 'type1', 'id1'); - }); - - test('No references rename to name2', function() { - this.workspace.renameVariableById('id1', 'name2'); - assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); - // Renaming should not have created a new variable. - chai.assert.equal(this.workspace.getAllVariables().length, 1); - }); - - test('Reference exists rename to name2', function() { - createVarBlocksNoEvents(this.workspace, ['id1']); - - this.workspace.renameVariableById('id1', 'name2'); - assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); - // Renaming should not have created a new variable. - chai.assert.equal(this.workspace.getAllVariables().length, 1); - assertBlockVarModelName(this.workspace, 0, 'name2'); - }); - - test('Reference exists different capitalization rename to Name1', function() { - createVarBlocksNoEvents(this.workspace, ['id1']); - - this.workspace.renameVariableById('id1', 'Name1'); - assertVariableValues(this.workspace, 'Name1', 'type1', 'id1'); - // Renaming should not have created a new variable. - chai.assert.equal(this.workspace.getAllVariables().length, 1); - assertBlockVarModelName(this.workspace, 0, 'Name1'); - }); - - suite('Two variables rename overlap', function() { - test('Same type rename variable with id1 to name2', function() { - this.workspace.createVariable('name2', 'type1', 'id2'); - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - - this.workspace.renameVariableById('id1', 'name2'); - - // The second variable should remain unchanged. - assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); - // The first variable should have been deleted. - const variable = this.workspace.getVariableById('id1'); - chai.assert.isNull(variable); - // There should only be one variable left. - chai.assert.equal(this.workspace.getAllVariables().length, 1); - - // Both blocks should now reference variable with name2. - assertBlockVarModelName(this.workspace, 0, 'name2'); - assertBlockVarModelName(this.workspace, 1, 'name2'); - }); - - test('Different type rename variable with id1 to name2', function() { - this.workspace.createVariable('name2', 'type2', 'id2'); - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - - this.workspace.renameVariableById('id1', 'name2'); - - // Variables with different type are allowed to have the same name. - assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - // Both blocks should now reference variable with name2. - assertBlockVarModelName(this.workspace, 0, 'name2'); - assertBlockVarModelName(this.workspace, 1, 'name2'); - }); - - test('Same type different capitalization rename variable with id1 to Name2', function() { - this.workspace.createVariable('name2', 'type1', 'id2'); - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - - this.workspace.renameVariableById('id1', 'Name2'); - - // The second variable should be updated. - assertVariableValues(this.workspace, 'Name2', 'type1', 'id2'); - // The first variable should have been deleted. - const variable = this.workspace.getVariableById('id1'); - chai.assert.isNull(variable); - // There should only be one variable left. - chai.assert.equal(this.workspace.getAllVariables().length, 1); - - // Both blocks should now reference variable with Name2. - assertBlockVarModelName(this.workspace, 0, 'Name2'); - assertBlockVarModelName(this.workspace, 1, 'Name2'); - }); - - test('Different type different capitalization rename variable with id1 to Name2', function() { - this.workspace.createVariable('name2', 'type2', 'id2'); - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - - this.workspace.renameVariableById('id1', 'Name2'); - - // Variables with different type are allowed to have the same name. - assertVariableValues(this.workspace, 'Name2', 'type1', 'id1'); - // Second variable should remain unchanged. - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - // Only first block should use new capitalization. - assertBlockVarModelName(this.workspace, 0, 'Name2'); - assertBlockVarModelName(this.workspace, 1, 'name2'); - }); - }); - }); - - suite('getTopBlocks(ordered=true)', function() { - test('Empty workspace', function() { - chai.assert.equal(this.workspace.getTopBlocks(true).length, 0); - }); - - test('Flat workspace one block', function() { - this.workspace.newBlock(''); - chai.assert.equal(this.workspace.getTopBlocks(true).length, 1); - }); - - test('Flat workspace one block after dispose', function() { - const blockA = this.workspace.newBlock(''); - this.workspace.newBlock(''); - blockA.dispose(); - chai.assert.equal(this.workspace.getTopBlocks(true).length, 1); - }); - - test('Flat workspace two blocks', function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - chai.assert.equal(this.workspace.getTopBlocks(true).length, 2); - }); - - test('Clear', function() { - this.workspace.clear(); - chai.assert.equal(this.workspace.getTopBlocks(true).length, 0, - 'Clear empty workspace'); - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.clear(); - chai.assert.equal(this.workspace.getTopBlocks(true).length, 0); - }); - }); - - suite('getTopBlocks(ordered=false)', function() { - test('Empty workspace', function() { - chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); - }); - - test('Flat workspace one block', function() { - this.workspace.newBlock(''); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 1); - }); - - test('Flat workspace one block after dispose', function() { - const blockA = this.workspace.newBlock(''); - this.workspace.newBlock(''); - blockA.dispose(); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 1); - }); - - test('Flat workspace two blocks', function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 2); - }); - - test('Clear empty workspace', function() { - this.workspace.clear(); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); - }); - - test('Clear non-empty workspace', function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.clear(); - chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); - }); - }); - - suite('getAllBlocks', function() { - test('Empty workspace', function() { - chai.assert.equal(this.workspace.getAllBlocks(true).length, 0); - }); - - test('Flat workspace one block', function() { - this.workspace.newBlock(''); - chai.assert.equal(this.workspace.getAllBlocks(true).length, 1); - }); - - test('Flat workspace one block after dispose', function() { - const blockA = this.workspace.newBlock(''); - this.workspace.newBlock(''); - blockA.dispose(); - chai.assert.equal(this.workspace.getAllBlocks(true).length, 1); - }); - - test('Flat workspace two blocks', function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - chai.assert.equal(this.workspace.getAllBlocks(true).length, 2); - }); - - test('Clear', function() { - this.workspace.clear(); - chai.assert.equal(this.workspace.getAllBlocks(true).length, 0, - 'Clear empty workspace'); - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.clear(); - chai.assert.equal(this.workspace.getAllBlocks(true).length, 0); - }); - }); - - suite('remainingCapacity', function() { - setup(function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - }); - - test('No block limit', function() { - chai.assert.equal(this.workspace.remainingCapacity(), Infinity); - }); - - test('Under block limit', function() { - this.workspace.options.maxBlocks = 3; - chai.assert.equal(this.workspace.remainingCapacity(), 1); - this.workspace.options.maxBlocks = 4; - chai.assert.equal(this.workspace.remainingCapacity(), 2); - }); - - test('At block limit', function() { - this.workspace.options.maxBlocks = 2; - chai.assert.equal(this.workspace.remainingCapacity(), 0); - }); - - test('At block limit of 0 after clear', function() { - this.workspace.options.maxBlocks = 0; - this.workspace.clear(); - chai.assert.equal(this.workspace.remainingCapacity(), 0); - }); - - test('Over block limit', function() { - this.workspace.options.maxBlocks = 1; - chai.assert.equal(this.workspace.remainingCapacity(), -1); - }); - - test('Over block limit of 0', function() { - this.workspace.options.maxBlocks = 0; - chai.assert.equal(this.workspace.remainingCapacity(), -2); - }); - }); - - suite('remainingCapacityOfType', function() { - setup(function() { - this.workspace.newBlock('get_var_block'); - this.workspace.newBlock('get_var_block'); - this.workspace.options.maxInstances = {}; - }); - - test('No instance limit', function() { - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - Infinity); - }); - - test('Under instance limit', function() { - this.workspace.options.maxInstances['get_var_block'] = 3; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - 1, 'With maxInstances limit 3'); - this.workspace.options.maxInstances['get_var_block'] = 4; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - 2, 'With maxInstances limit 4'); - }); - - test('Under instance limit with multiple block types', function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.options.maxInstances['get_var_block'] = 3; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - 1, 'With maxInstances limit 3'); - this.workspace.options.maxInstances['get_var_block'] = 4; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - 2, 'With maxInstances limit 4'); - }); - - test('At instance limit', function() { - this.workspace.options.maxInstances['get_var_block'] = 2; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - 0, 'With maxInstances limit 2'); - }); - - test('At instance limit of 0 after clear', function() { - this.workspace.clear(); - this.workspace.options.maxInstances['get_var_block'] = 0; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - 0); - }); - - test('At instance limit with multiple block types', function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.options.maxInstances['get_var_block'] = 2; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - 0, 'With maxInstances limit 2'); - }); - - test('At instance limit of 0 with multiple block types', function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.options.maxInstances['get_var_block'] = 0; - this.workspace.clear(); - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - 0); - }); - - test('Over instance limit', function() { - this.workspace.options.maxInstances['get_var_block'] = 1; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - -1, 'With maxInstances limit 1'); - }); - - test('Over instance limit of 0', function() { - this.workspace.options.maxInstances['get_var_block'] = 0; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - -2, 'With maxInstances limit 0'); - }); - - test('Over instance limit with multiple block types', function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.options.maxInstances['get_var_block'] = 1; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - -1, 'With maxInstances limit 1'); - }); - - test('Over instance limit of 0 with multiple block types', function() { - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.newBlock(''); - this.workspace.options.maxInstances['get_var_block'] = 0; - chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), - -2, 'With maxInstances limit 0'); - }); - }); - - suite('isCapacityAvailable', function() { - setup(function() { - this.workspace.newBlock('get_var_block'); - this.workspace.newBlock('get_var_block'); - this.workspace.options.maxInstances = {}; - }); - - test('Under block limit and no instance limit', function() { - this.workspace.options.maxBlocks = 3; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isTrue(this.workspace.isCapacityAvailable(typeCountsMap)); - }); - - test('At block limit and no instance limit', function() { - this.workspace.options.maxBlocks = 2; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap)); - }); - - test('Over block limit of 0 and no instance limit', function() { - this.workspace.options.maxBlocks = 0; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap)); - }); - - test('Over block limit but under instance limit', function() { - this.workspace.options.maxBlocks = 1; - this.workspace.options.maxInstances['get_var_block'] = 3; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), - 'With maxBlocks limit 1 and maxInstances limit 3'); - }); - - test('Over block limit of 0 but under instance limit', function() { - this.workspace.options.maxBlocks = 0; - this.workspace.options.maxInstances['get_var_block'] = 3; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), - 'With maxBlocks limit 0 and maxInstances limit 3'); - }); - - test('Over block limit but at instance limit', function() { - this.workspace.options.maxBlocks = 1; - this.workspace.options.maxInstances['get_var_block'] = 2; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), - 'With maxBlocks limit 1 and maxInstances limit 2'); - }); - - test('Over block limit and over instance limit', function() { - this.workspace.options.maxBlocks = 1; - this.workspace.options.maxInstances['get_var_block'] = 1; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), - 'With maxBlocks limit 1 and maxInstances limit 1'); - }); - - test('Over block limit of 0 and over instance limit', function() { - this.workspace.options.maxBlocks = 0; - this.workspace.options.maxInstances['get_var_block'] = 1; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), - 'With maxBlocks limit 0 and maxInstances limit 1'); - }); - - test('Over block limit and over instance limit of 0', function() { - this.workspace.options.maxBlocks = 1; - this.workspace.options.maxInstances['get_var_block'] = 0; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), - 'With maxBlocks limit 1 and maxInstances limit 0'); - }); - - test('Over block limit of 0 and over instance limit of 0', function() { - this.workspace.options.maxBlocks = 0; - this.workspace.options.maxInstances['get_var_block'] = 0; - const typeCountsMap = {'get_var_block': 1}; - chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap)); - }); - }); - - suite('getById', function() { - setup(function() { - this.workspaceB = this.workspace.rendered ? - new Blockly.WorkspaceSvg(new Blockly.Options({})) : - new Blockly.Workspace(); - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspaceB); - }); - - test('Trivial', function() { - chai.assert.equal(Blockly.Workspace.getById( - this.workspace.id), this.workspace, 'Find workspace'); - chai.assert.equal(Blockly.Workspace.getById( - this.workspaceB.id), this.workspaceB, 'Find workspaceB'); - }); - - test('Null id', function() { - chai.assert.isNull(Blockly.Workspace.getById(null)); - }); - - test('Non-existent id', function() { - chai.assert.isNull(Blockly.Workspace.getById('badId')); - }); - - test('After dispose', function() { - this.workspaceB.dispose(); - chai.assert.isNull(Blockly.Workspace.getById(this.workspaceB.id)); - }); - }); - - suite('getBlockById', function() { - setup(function() { - this.blockA = this.workspace.newBlock(''); - this.blockB = this.workspace.newBlock(''); - this.workspaceB = this.workspace.rendered ? - new Blockly.WorkspaceSvg(new Blockly.Options({})) : - new Blockly.Workspace(); - }); - - teardown(function() { - workspaceTeardown.call(this, this.workspaceB); - }); - - test('Trivial', function() { - chai.assert.equal( - this.workspace.getBlockById(this.blockA.id), this.blockA); - chai.assert.equal( - this.workspace.getBlockById(this.blockB.id), this.blockB); - }); - - test('Null id', function() { - chai.assert.isNull(this.workspace.getBlockById(null)); - }); - - test('Non-existent id', function() { - chai.assert.isNull(this.workspace.getBlockById('badId')); - }); - - test('After dispose', function() { - this.blockA.dispose(); - chai.assert.isNull(this.workspace.getBlockById(this.blockA.id)); - chai.assert.equal( - this.workspace.getBlockById(this.blockB.id), this.blockB); - }); - - test('After clear', function() { - this.workspace.clear(); - chai.assert.isNull(this.workspace.getBlockById(this.blockA.id)); - chai.assert.isNull(this.workspace.getBlockById(this.blockB.id)); - }); - }); - - suite('Undo/Redo', function() { - /** - * Assert that two nodes are equal. - * @param {!Element} actual the actual node. - * @param {!Element} expected the expected node. - */ - function assertNodesEqual(actual, expected) { - const actualString = '\n' + Blockly.Xml.domToPrettyText(actual) + '\n'; - const expectedString = '\n' + Blockly.Xml.domToPrettyText(expected) + '\n'; - - chai.assert.equal(actual.tagName, expected.tagName); - for (let i = 0, attr; (attr = expected.attributes[i]); i++) { - chai.assert.equal(actual.getAttribute(attr.name), attr.value, - `expected attribute ${attr.name} on ${actualString} to match ` + - `${expectedString}`); - } - chai.assert.equal(actual.childElementCount, expected.childElementCount, - `expected node ${actualString} to have the same children as node ` + - `${expectedString}`); - for (let i = 0; i < expected.childElementCount; i++) { - assertNodesEqual(actual.children[i], expected.children[i]); - } - } - - suite('Undo Delete', function() { - setup(function() { - Blockly.defineBlocksWithJsonArray([ - { - "type": "stack_block", - "message0": "", - "previousStatement": null, - "nextStatement": null, - }, - { - "type": "row_block", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - }, - ], - "output": null, - }, - { - "type": "statement_block", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "STATEMENT", - }, - ], - "previousStatement": null, - "nextStatement": null, - }]); - }); - - teardown(function() { - delete Blockly.Blocks['stack_block']; - delete Blockly.Blocks['row_block']; - delete Blockly.Blocks['statement_block']; - }); - - function testUndoDelete(xmlText) { - const xml = Blockly.Xml.textToDom(xmlText); - Blockly.Xml.domToBlock(xml, this.workspace); - this.workspace.getTopBlocks()[0].dispose(false); - this.workspace.undo(); - const newXml = Blockly.Xml.workspaceToDom(this.workspace); - assertNodesEqual(newXml.firstChild, xml); - } - - test('Stack', function() { - testUndoDelete.call(this, ''); - }); - - test('Row', function() { - testUndoDelete.call(this, ''); - }); - - test('Statement', function() { - testUndoDelete.call(this, ''); - }); - - test('Stack w/ child', function() { - testUndoDelete.call(this, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - }); - - test('Row w/ child', function() { - testUndoDelete.call(this, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - }); - - test('Statement w/ child', function() { - testUndoDelete.call(this, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - }); - - test('Stack w/ shadow', function() { - testUndoDelete.call(this, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - }); - - test('Row w/ shadow', function() { - testUndoDelete.call(this, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - }); - - test('Statement w/ shadow', function() { - testUndoDelete.call(this, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - }); - }); - - suite('Undo Connect', function() { - setup(function() { - Blockly.defineBlocksWithJsonArray([ - { - "type": "stack_block", - "message0": "", - "previousStatement": null, - "nextStatement": null, - }, - { - "type": "row_block", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - }, - ], - "output": null, - }, - { - "type": "statement_block", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "STATEMENT", - }, - ], - "previousStatement": null, - "nextStatement": null, - }]); - }); - - teardown(function() { - delete Blockly.Blocks['stack_block']; - delete Blockly.Blocks['row_block']; - delete Blockly.Blocks['statement_block']; - }); - - function testUndoConnect(xmlText, parentId, childId, func) { - const xml = Blockly.Xml.textToDom(xmlText); - Blockly.Xml.domToWorkspace(xml, this.workspace); - - const parent = this.workspace.getBlockById(parentId); - const child = this.workspace.getBlockById(childId); - func.call(this, parent, child); - this.workspace.undo(); - - const newXml = Blockly.Xml.workspaceToDom(this.workspace); - assertNodesEqual(newXml, xml); - } - - test('Stack', function() { - const xml = - '' + - ' ' + - ' ' + - ''; - - testUndoConnect.call(this, xml, 1, 2, (parent, child) => { - parent.nextConnection.connect(child.previousConnection); - }); - }); - - test('Row', function() { - const xml = - '' + - ' ' + - ' ' + - ''; - - testUndoConnect.call(this, xml, 1, 2, (parent, child) => { - parent.getInput('INPUT').connection.connect(child.outputConnection); - }); - }); - - test('Statement', function() { - const xml = - '' + - ' ' + - ' ' + - ''; - - testUndoConnect.call(this, xml, 1, 2, (parent, child) => { - parent.getInput('STATEMENT').connection - .connect(child.previousConnection); - }); - }); - - test('Stack w/ child', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - - testUndoConnect.call(this, xml, 1, 2, (parent, child) => { - parent.nextConnection.connect(child.previousConnection); - }); - }); - - test('Row w/ child', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - - testUndoConnect.call(this, xml, 1, 2, (parent, child) => { - parent.getInput('INPUT').connection.connect(child.outputConnection); - }); - }); - - test('Statement w/ child', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - - testUndoConnect.call(this, xml, 1, 2, (parent, child) => { - parent.getInput('STATEMENT').connection - .connect(child.previousConnection); - }); - }); - - test('Stack w/ shadow', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - - testUndoConnect.call(this, xml, 1, 2, (parent, child) => { - parent.nextConnection.connect(child.previousConnection); - }); - }); - - test('Row w/ shadow', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - - testUndoConnect.call(this, xml, 1, 2, (parent, child) => { - parent.getInput('INPUT').connection.connect(child.outputConnection); - }); - }); - - test('Statement w/ shadow', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - - testUndoConnect.call(this, xml, 1, 2, (parent, child) => { - parent.getInput('STATEMENT').connection - .connect(child.previousConnection); - }); - }); - }); - - suite('Undo Disconnect', function() { - setup(function() { - Blockly.defineBlocksWithJsonArray([ - { - "type": "stack_block", - "message0": "", - "previousStatement": null, - "nextStatement": null, - }, - { - "type": "row_block", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - }, - ], - "output": null, - }, - { - "type": "statement_block", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "STATEMENT", - }, - ], - "previousStatement": null, - "nextStatement": null, - }]); - }); - - teardown(function() { - delete Blockly.Blocks['stack_block']; - delete Blockly.Blocks['row_block']; - delete Blockly.Blocks['statement_block']; - }); - - function testUndoDisconnect(xmlText, childId) { - const xml = Blockly.Xml.textToDom(xmlText); - Blockly.Xml.domToWorkspace(xml, this.workspace); - - const child = this.workspace.getBlockById(childId); - if (child.outputConnection) { - child.outputConnection.disconnect(); - } else { - child.previousConnection.disconnect(); - } - this.workspace.undo(); - - const newXml = Blockly.Xml.workspaceToDom(this.workspace); - assertNodesEqual(newXml, xml); - } - - test('Stack', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - testUndoDisconnect.call(this, xml, 2); - }); - - test('Row', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - testUndoDisconnect.call(this, xml, 2); - }); - - test('Statement', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - testUndoDisconnect.call(this, xml, 2); - }); - - test('Stack w/ child', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - testUndoDisconnect.call(this, xml, 2); - }); - - test('Row w/ child', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - testUndoDisconnect.call(this, xml, 2); - }); - - test('Statement w/ child', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - testUndoDisconnect.call(this, xml, 2); - }); - - test('Stack w/ shadow', function() { - // TODO: For some reason on next connections shadows are - // serialized second. - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - testUndoDisconnect.call(this, xml, 2); - chai.assert.equal(this.workspace.getAllBlocks().length, 2, - 'expected there to only be 2 blocks on the workspace ' + - '(check for shadows)'); - }); - - test('Row w/ shadow', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - testUndoDisconnect.call(this, xml, 2); - chai.assert.equal(this.workspace.getAllBlocks().length, 2, - 'expected there to only be 2 blocks on the workspace ' + - '(check for shadows)'); - }); - - test('Statement w/ shadow', function() { - const xml = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ''; - testUndoDisconnect.call(this, xml, 2); - }); - }); - - suite('Variables', function() { - function createTwoVarsDifferentTypes(workspace) { - workspace.createVariable('name1', 'type1', 'id1'); - workspace.createVariable('name2', 'type2', 'id2'); - } - - suite('createVariable', function() { - test('Undo only', function() { - createTwoVarsDifferentTypes(this.workspace); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - chai.assert.isNull(this.workspace.getVariableById('id2')); - - this.workspace.undo(); - chai.assert.isNull(this.workspace.getVariableById('id1')); - chai.assert.isNull(this.workspace.getVariableById('id2')); - }); - - test('Undo and redo', function() { - createTwoVarsDifferentTypes(this.workspace); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - chai.assert.isNull(this.workspace.getVariableById('id2')); - - this.workspace.undo(true); - - // Expect that variable 'id2' is recreated - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - this.workspace.undo(); - this.workspace.undo(); - chai.assert.isNull(this.workspace.getVariableById('id1')); - chai.assert.isNull(this.workspace.getVariableById('id2')); - this.workspace.undo(true); - - // Expect that variable 'id1' is recreated - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - chai.assert.isNull(this.workspace.getVariableById('id2')); - }); - }); - - suite('deleteVariableById', function() { - test('Undo only no usages', function() { - createTwoVarsDifferentTypes(this.workspace); - this.workspace.deleteVariableById('id1'); - this.workspace.deleteVariableById('id2'); - - this.workspace.undo(); - chai.assert.isNull(this.workspace.getVariableById('id1')); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - }); - - test('Undo only with usages', function() { - createTwoVarsDifferentTypes(this.workspace); - // Create blocks to refer to both of them. - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - this.workspace.deleteVariableById('id1'); - this.workspace.deleteVariableById('id2'); - - this.workspace.undo(); - assertBlockVarModelName(this.workspace, 0, 'name2'); - chai.assert.isNull(this.workspace.getVariableById('id1')); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - this.workspace.undo(); - assertBlockVarModelName(this.workspace, 0, 'name2'); - assertBlockVarModelName(this.workspace, 1, 'name1'); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - }); - - test('Reference exists no usages', function() { - createTwoVarsDifferentTypes(this.workspace); - this.workspace.deleteVariableById('id1'); - this.workspace.deleteVariableById('id2'); - - this.workspace.undo(); - chai.assert.isNull(this.workspace.getVariableById('id1')); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - this.workspace.undo(true); - // Expect that both variables are deleted - chai.assert.isNull(this.workspace.getVariableById('id1')); - chai.assert.isNull(this.workspace.getVariableById('id2')); - - this.workspace.undo(); - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - this.workspace.undo(true); - // Expect that variable 'id2' is recreated - chai.assert.isNull(this.workspace.getVariableById('id1')); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - }); - - test('Reference exists with usages', function() { - createTwoVarsDifferentTypes(this.workspace); - // Create blocks to refer to both of them. - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - this.workspace.deleteVariableById('id1'); - this.workspace.deleteVariableById('id2'); - - this.workspace.undo(); - assertBlockVarModelName(this.workspace, 0, 'name2'); - chai.assert.isNull(this.workspace.getVariableById('id1')); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - this.workspace.undo(true); - // Expect that both variables are deleted - chai.assert.equal(this.workspace.topBlocks_.length, 0); - chai.assert.isNull(this.workspace.getVariableById('id1')); - chai.assert.isNull(this.workspace.getVariableById('id2')); - - this.workspace.undo(); - this.workspace.undo(); - assertBlockVarModelName(this.workspace, 0, 'name2'); - assertBlockVarModelName(this.workspace, 1, 'name1'); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - this.workspace.undo(true); - // Expect that variable 'id2' is recreated - assertBlockVarModelName(this.workspace, 0, 'name2'); - chai.assert.isNull(this.workspace.getVariableById('id1')); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - }); - - test('Delete same variable twice no usages', function() { - this.workspace.createVariable('name1', 'type1', 'id1'); - this.workspace.deleteVariableById('id1'); - const workspace = this.workspace; - assertWarnings(() => { - workspace.deleteVariableById('id1'); - }, /Can't delete/); - - // Check the undoStack only recorded one delete event. - const undoStack = this.workspace.undoStack_; - chai.assert.equal(undoStack[undoStack.length - 1].type, 'var_delete'); - chai.assert.notEqual(undoStack[undoStack.length - 2].type, 'var_delete'); - - // Undo delete - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - - // Redo delete - this.workspace.undo(true); - chai.assert.isNull(this.workspace.getVariableById('id1')); - - // Redo delete, nothing should happen - this.workspace.undo(true); - chai.assert.isNull(this.workspace.getVariableById('id1')); - }); - - test('Delete same variable twice with usages', function() { - this.workspace.createVariable('name1', 'type1', 'id1'); - createVarBlocksNoEvents(this.workspace, ['id1']); - this.workspace.deleteVariableById('id1'); - const workspace = this.workspace; - assertWarnings(() => { - workspace.deleteVariableById('id1'); - }, /Can't delete/); - - // Check the undoStack only recorded one delete event. - const undoStack = this.workspace.undoStack_; - chai.assert.equal(undoStack[undoStack.length - 1].type, 'var_delete'); - chai.assert.equal(undoStack[undoStack.length - 2].type, 'delete'); - chai.assert.notEqual(undoStack[undoStack.length - 3].type, 'var_delete'); - - // Undo delete - this.workspace.undo(); - assertBlockVarModelName(this.workspace, 0, 'name1'); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - - // Redo delete - this.workspace.undo(true); - chai.assert.equal(this.workspace.topBlocks_.length, 0); - chai.assert.isNull(this.workspace.getVariableById('id1')); - - // Redo delete, nothing should happen - this.workspace.undo(true); - chai.assert.equal(this.workspace.topBlocks_.length, 0); - chai.assert.isNull(this.workspace.getVariableById('id1')); - }); - }); - - suite('renameVariableById', function() { - setup(function() { - this.workspace.createVariable('name1', 'type1', 'id1'); - }); - - test('Reference exists no usages rename to name2', function() { - this.workspace.renameVariableById('id1', 'name2'); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); - }); - - test('Reference exists with usages rename to name2', function() { - createVarBlocksNoEvents(this.workspace, ['id1']); - this.workspace.renameVariableById('id1', 'name2'); - - this.workspace.undo(); - assertBlockVarModelName(this.workspace, 0, 'name1'); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - - this.workspace.undo(true); - assertBlockVarModelName(this.workspace, 0, 'name2'); - assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); - }); - - test('Reference exists different capitalization no usages rename to Name1', function() { - this.workspace.renameVariableById('id1', 'Name1'); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'Name1', 'type1', 'id1'); - }); - - test('Reference exists different capitalization with usages rename to Name1', function() { - createVarBlocksNoEvents(this.workspace, ['id1']); - this.workspace.renameVariableById('id1', 'Name1'); - - this.workspace.undo(); - assertBlockVarModelName(this.workspace, 0, 'name1'); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - - this.workspace.undo(true); - assertBlockVarModelName(this.workspace, 0, 'Name1'); - assertVariableValues(this.workspace, 'Name1', 'type1', 'id1'); - }); - - suite('Two variables rename overlap', function() { - test('Same type no usages rename variable with id1 to name2', function() { - this.workspace.createVariable('name2', 'type1', 'id2'); - this.workspace.renameVariableById('id1', 'name2'); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); - chai.assert.isNull(this.workspace.getVariableById('id1')); - }); - - test('Same type with usages rename variable with id1 to name2', function() { - this.workspace.createVariable('name2', 'type1', 'id2'); - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - this.workspace.renameVariableById('id1', 'name2'); - - this.workspace.undo(); - assertBlockVarModelName(this.workspace, 0, 'name1'); - assertBlockVarModelName(this.workspace, 1, 'name2'); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); - chai.assert.isNull(this.workspace.getVariableById('id1')); - }); - - test('Same type different capitalization no usages rename variable with id1 to Name2', function() { - this.workspace.createVariable('name2', 'type1', 'id2'); - this.workspace.renameVariableById('id1', 'Name2'); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'Name2', 'type1', 'id2'); - chai.assert.isNull(this.workspace.getVariable('name1')); - }); - - test('Same type different capitalization with usages rename variable with id1 to Name2', function() { - this.workspace.createVariable('name2', 'type1', 'id2'); - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - this.workspace.renameVariableById('id1', 'Name2'); - - this.workspace.undo(); - assertBlockVarModelName(this.workspace, 0, 'name1'); - assertBlockVarModelName(this.workspace, 1, 'name2'); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'Name2', 'type1', 'id2'); - chai.assert.isNull(this.workspace.getVariableById('id1')); - assertBlockVarModelName(this.workspace, 0, 'Name2'); - assertBlockVarModelName(this.workspace, 1, 'Name2'); - }); - - test('Different type no usages rename variable with id1 to name2', function() { - this.workspace.createVariable('name2', 'type2', 'id2'); - this.workspace.renameVariableById('id1', 'name2'); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - }); - - test('Different type with usages rename variable with id1 to name2', function() { - this.workspace.createVariable('name2', 'type2', 'id2'); - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - this.workspace.renameVariableById('id1', 'name2'); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - assertBlockVarModelName(this.workspace, 0, 'name1'); - assertBlockVarModelName(this.workspace, 1, 'name2'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - assertBlockVarModelName(this.workspace, 0, 'name2'); - assertBlockVarModelName(this.workspace, 1, 'name2'); - }); - - test('Different type different capitalization no usages rename variable with id1 to Name2', function() { - this.workspace.createVariable('name2', 'type2', 'id2'); - this.workspace.renameVariableById('id1', 'Name2'); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'Name2', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - }); - - test('Different type different capitalization with usages rename variable with id1 to Name2', function() { - this.workspace.createVariable('name2', 'type2', 'id2'); - createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); - this.workspace.renameVariableById('id1', 'Name2'); - - this.workspace.undo(); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - assertBlockVarModelName(this.workspace, 0, 'name1'); - assertBlockVarModelName(this.workspace, 1, 'name2'); - - this.workspace.undo(true); - assertVariableValues(this.workspace, 'Name2', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - assertBlockVarModelName(this.workspace, 0, 'Name2'); - assertBlockVarModelName(this.workspace, 1, 'name2'); - }); - }); - }); - }); - }); -} -exports.testAWorkspace = testAWorkspace; +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.helpers.workspace'); + +const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); +const {assertWarnings} = goog.require('Blockly.test.helpers.warnings'); +const eventUtils = goog.require('Blockly.Events.utils'); +const {workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +function testAWorkspace() { + setup(function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "get_var_block", + "message0": "%1", + "args0": [ + { + "type": "field_variable", + "name": "VAR", + "variableTypes": ["", "type1", "type2"], + }, + ], + }]); + }); + + teardown(function() { + // Clear Blockly.Event state. + eventUtils.setGroup(false); + while (!eventUtils.isEnabled()) { + eventUtils.enable(); + } + sinon.restore(); + }); + + function assertBlockVarModelName(workspace, blockIndex, name) { + const block = workspace.topBlocks_[blockIndex]; + chai.assert.exists(block, 'Block at topBlocks_[' + blockIndex + ']'); + const varModel = block.getVarModels()[0]; + chai.assert.exists(varModel, + 'VariableModel for block at topBlocks_[' + blockIndex + ']'); + const blockVarName = varModel.name; + chai.assert.equal(blockVarName, name, + 'VariableModel name for block at topBlocks_[' + blockIndex + ']'); + } + + function createVarBlocksNoEvents(workspace, ids) { + const blocks = []; + // Turn off events to avoid testing XML at the same time. + eventUtils.disable(); + for (let i = 0, id; (id = ids[i]); i++) { + const block = new Blockly.Block(workspace, 'get_var_block'); + block.inputList[0].fieldRow[0].setValue(id); + blocks.push(block); + } + eventUtils.enable(); + return blocks; + } + + suite('clear', function() { + test('Trivial', function() { + sinon.stub(eventUtils, "setGroup").returns(null); + this.workspace.createVariable('name1', 'type1', 'id1'); + this.workspace.createVariable('name2', 'type2', 'id2'); + this.workspace.newBlock(''); + + this.workspace.clear(); + chai.assert.equal(this.workspace.topBlocks_.length, 0); + const varMapLength = + Object.keys(this.workspace.variableMap_.variableMap_).length; + chai.assert.equal(varMapLength, 0); + }); + + test('No variables', function() { + sinon.stub(eventUtils, "setGroup").returns(null); + this.workspace.newBlock(''); + + this.workspace.clear(); + chai.assert.equal(this.workspace.topBlocks_.length, 0); + const varMapLength = + Object.keys(this.workspace.variableMap_.variableMap_).length; + chai.assert.equal(varMapLength, 0); + }); + }); + + suite('deleteVariable', function() { + setup(function() { + // Create two variables of different types. + this.var1 = this.workspace.createVariable('name1', 'type1', 'id1'); + this.var2 = this.workspace.createVariable('name2', 'type2', 'id2'); + // Create blocks to refer to both of them. + createVarBlocksNoEvents(this.workspace, ['id1', 'id1', 'id2']); + }); + + test('deleteVariableById(id2) one usage', function() { + // Deleting variable one usage should not trigger confirm dialog. + const stub = + sinon.stub(Blockly.dialog, "confirm").callsArgWith(1, true); + this.workspace.deleteVariableById('id2'); + + sinon.assert.notCalled(stub); + const variable = this.workspace.getVariableById('id2'); + chai.assert.isNull(variable); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertBlockVarModelName(this.workspace, 0, 'name1'); + }); + + test('deleteVariableById(id1) multiple usages confirm', function() { + // Deleting variable with multiple usages triggers confirm dialog. + const stub = + sinon.stub(Blockly.dialog, "confirm").callsArgWith(1, true); + this.workspace.deleteVariableById('id1'); + + sinon.assert.calledOnce(stub); + const variable = this.workspace.getVariableById('id1'); + chai.assert.isNull(variable); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + assertBlockVarModelName(this.workspace, 0, 'name2'); + }); + + test('deleteVariableById(id1) multiple usages cancel', function() { + // Deleting variable with multiple usages triggers confirm dialog. + const stub = + sinon.stub(Blockly.dialog, "confirm").callsArgWith(1, false); + this.workspace.deleteVariableById('id1'); + + sinon.assert.calledOnce(stub); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + assertBlockVarModelName(this.workspace, 0, 'name1'); + assertBlockVarModelName(this.workspace, 1, 'name1'); + assertBlockVarModelName(this.workspace, 2, 'name2'); + }); + }); + + suite('renameVariableById', function() { + setup(function() { + this.workspace.createVariable('name1', 'type1', 'id1'); + }); + + test('No references rename to name2', function() { + this.workspace.renameVariableById('id1', 'name2'); + assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); + // Renaming should not have created a new variable. + chai.assert.equal(this.workspace.getAllVariables().length, 1); + }); + + test('Reference exists rename to name2', function() { + createVarBlocksNoEvents(this.workspace, ['id1']); + + this.workspace.renameVariableById('id1', 'name2'); + assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); + // Renaming should not have created a new variable. + chai.assert.equal(this.workspace.getAllVariables().length, 1); + assertBlockVarModelName(this.workspace, 0, 'name2'); + }); + + test('Reference exists different capitalization rename to Name1', function() { + createVarBlocksNoEvents(this.workspace, ['id1']); + + this.workspace.renameVariableById('id1', 'Name1'); + assertVariableValues(this.workspace, 'Name1', 'type1', 'id1'); + // Renaming should not have created a new variable. + chai.assert.equal(this.workspace.getAllVariables().length, 1); + assertBlockVarModelName(this.workspace, 0, 'Name1'); + }); + + suite('Two variables rename overlap', function() { + test('Same type rename variable with id1 to name2', function() { + this.workspace.createVariable('name2', 'type1', 'id2'); + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + + this.workspace.renameVariableById('id1', 'name2'); + + // The second variable should remain unchanged. + assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); + // The first variable should have been deleted. + const variable = this.workspace.getVariableById('id1'); + chai.assert.isNull(variable); + // There should only be one variable left. + chai.assert.equal(this.workspace.getAllVariables().length, 1); + + // Both blocks should now reference variable with name2. + assertBlockVarModelName(this.workspace, 0, 'name2'); + assertBlockVarModelName(this.workspace, 1, 'name2'); + }); + + test('Different type rename variable with id1 to name2', function() { + this.workspace.createVariable('name2', 'type2', 'id2'); + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + + this.workspace.renameVariableById('id1', 'name2'); + + // Variables with different type are allowed to have the same name. + assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + // Both blocks should now reference variable with name2. + assertBlockVarModelName(this.workspace, 0, 'name2'); + assertBlockVarModelName(this.workspace, 1, 'name2'); + }); + + test('Same type different capitalization rename variable with id1 to Name2', function() { + this.workspace.createVariable('name2', 'type1', 'id2'); + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + + this.workspace.renameVariableById('id1', 'Name2'); + + // The second variable should be updated. + assertVariableValues(this.workspace, 'Name2', 'type1', 'id2'); + // The first variable should have been deleted. + const variable = this.workspace.getVariableById('id1'); + chai.assert.isNull(variable); + // There should only be one variable left. + chai.assert.equal(this.workspace.getAllVariables().length, 1); + + // Both blocks should now reference variable with Name2. + assertBlockVarModelName(this.workspace, 0, 'Name2'); + assertBlockVarModelName(this.workspace, 1, 'Name2'); + }); + + test('Different type different capitalization rename variable with id1 to Name2', function() { + this.workspace.createVariable('name2', 'type2', 'id2'); + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + + this.workspace.renameVariableById('id1', 'Name2'); + + // Variables with different type are allowed to have the same name. + assertVariableValues(this.workspace, 'Name2', 'type1', 'id1'); + // Second variable should remain unchanged. + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + // Only first block should use new capitalization. + assertBlockVarModelName(this.workspace, 0, 'Name2'); + assertBlockVarModelName(this.workspace, 1, 'name2'); + }); + }); + }); + + suite('getTopBlocks(ordered=true)', function() { + test('Empty workspace', function() { + chai.assert.equal(this.workspace.getTopBlocks(true).length, 0); + }); + + test('Flat workspace one block', function() { + this.workspace.newBlock(''); + chai.assert.equal(this.workspace.getTopBlocks(true).length, 1); + }); + + test('Flat workspace one block after dispose', function() { + const blockA = this.workspace.newBlock(''); + this.workspace.newBlock(''); + blockA.dispose(); + chai.assert.equal(this.workspace.getTopBlocks(true).length, 1); + }); + + test('Flat workspace two blocks', function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + chai.assert.equal(this.workspace.getTopBlocks(true).length, 2); + }); + + test('Clear', function() { + this.workspace.clear(); + chai.assert.equal(this.workspace.getTopBlocks(true).length, 0, + 'Clear empty workspace'); + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.clear(); + chai.assert.equal(this.workspace.getTopBlocks(true).length, 0); + }); + }); + + suite('getTopBlocks(ordered=false)', function() { + test('Empty workspace', function() { + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); + }); + + test('Flat workspace one block', function() { + this.workspace.newBlock(''); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 1); + }); + + test('Flat workspace one block after dispose', function() { + const blockA = this.workspace.newBlock(''); + this.workspace.newBlock(''); + blockA.dispose(); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 1); + }); + + test('Flat workspace two blocks', function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 2); + }); + + test('Clear empty workspace', function() { + this.workspace.clear(); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); + }); + + test('Clear non-empty workspace', function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.clear(); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); + }); + }); + + suite('getAllBlocks', function() { + test('Empty workspace', function() { + chai.assert.equal(this.workspace.getAllBlocks(true).length, 0); + }); + + test('Flat workspace one block', function() { + this.workspace.newBlock(''); + chai.assert.equal(this.workspace.getAllBlocks(true).length, 1); + }); + + test('Flat workspace one block after dispose', function() { + const blockA = this.workspace.newBlock(''); + this.workspace.newBlock(''); + blockA.dispose(); + chai.assert.equal(this.workspace.getAllBlocks(true).length, 1); + }); + + test('Flat workspace two blocks', function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + chai.assert.equal(this.workspace.getAllBlocks(true).length, 2); + }); + + test('Clear', function() { + this.workspace.clear(); + chai.assert.equal(this.workspace.getAllBlocks(true).length, 0, + 'Clear empty workspace'); + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.clear(); + chai.assert.equal(this.workspace.getAllBlocks(true).length, 0); + }); + }); + + suite('remainingCapacity', function() { + setup(function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + }); + + test('No block limit', function() { + chai.assert.equal(this.workspace.remainingCapacity(), Infinity); + }); + + test('Under block limit', function() { + this.workspace.options.maxBlocks = 3; + chai.assert.equal(this.workspace.remainingCapacity(), 1); + this.workspace.options.maxBlocks = 4; + chai.assert.equal(this.workspace.remainingCapacity(), 2); + }); + + test('At block limit', function() { + this.workspace.options.maxBlocks = 2; + chai.assert.equal(this.workspace.remainingCapacity(), 0); + }); + + test('At block limit of 0 after clear', function() { + this.workspace.options.maxBlocks = 0; + this.workspace.clear(); + chai.assert.equal(this.workspace.remainingCapacity(), 0); + }); + + test('Over block limit', function() { + this.workspace.options.maxBlocks = 1; + chai.assert.equal(this.workspace.remainingCapacity(), -1); + }); + + test('Over block limit of 0', function() { + this.workspace.options.maxBlocks = 0; + chai.assert.equal(this.workspace.remainingCapacity(), -2); + }); + }); + + suite('remainingCapacityOfType', function() { + setup(function() { + this.workspace.newBlock('get_var_block'); + this.workspace.newBlock('get_var_block'); + this.workspace.options.maxInstances = {}; + }); + + test('No instance limit', function() { + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + Infinity); + }); + + test('Under instance limit', function() { + this.workspace.options.maxInstances['get_var_block'] = 3; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + 1, 'With maxInstances limit 3'); + this.workspace.options.maxInstances['get_var_block'] = 4; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + 2, 'With maxInstances limit 4'); + }); + + test('Under instance limit with multiple block types', function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.options.maxInstances['get_var_block'] = 3; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + 1, 'With maxInstances limit 3'); + this.workspace.options.maxInstances['get_var_block'] = 4; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + 2, 'With maxInstances limit 4'); + }); + + test('At instance limit', function() { + this.workspace.options.maxInstances['get_var_block'] = 2; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + 0, 'With maxInstances limit 2'); + }); + + test('At instance limit of 0 after clear', function() { + this.workspace.clear(); + this.workspace.options.maxInstances['get_var_block'] = 0; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + 0); + }); + + test('At instance limit with multiple block types', function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.options.maxInstances['get_var_block'] = 2; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + 0, 'With maxInstances limit 2'); + }); + + test('At instance limit of 0 with multiple block types', function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.options.maxInstances['get_var_block'] = 0; + this.workspace.clear(); + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + 0); + }); + + test('Over instance limit', function() { + this.workspace.options.maxInstances['get_var_block'] = 1; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + -1, 'With maxInstances limit 1'); + }); + + test('Over instance limit of 0', function() { + this.workspace.options.maxInstances['get_var_block'] = 0; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + -2, 'With maxInstances limit 0'); + }); + + test('Over instance limit with multiple block types', function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.options.maxInstances['get_var_block'] = 1; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + -1, 'With maxInstances limit 1'); + }); + + test('Over instance limit of 0 with multiple block types', function() { + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.newBlock(''); + this.workspace.options.maxInstances['get_var_block'] = 0; + chai.assert.equal(this.workspace.remainingCapacityOfType('get_var_block'), + -2, 'With maxInstances limit 0'); + }); + }); + + suite('isCapacityAvailable', function() { + setup(function() { + this.workspace.newBlock('get_var_block'); + this.workspace.newBlock('get_var_block'); + this.workspace.options.maxInstances = {}; + }); + + test('Under block limit and no instance limit', function() { + this.workspace.options.maxBlocks = 3; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isTrue(this.workspace.isCapacityAvailable(typeCountsMap)); + }); + + test('At block limit and no instance limit', function() { + this.workspace.options.maxBlocks = 2; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap)); + }); + + test('Over block limit of 0 and no instance limit', function() { + this.workspace.options.maxBlocks = 0; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap)); + }); + + test('Over block limit but under instance limit', function() { + this.workspace.options.maxBlocks = 1; + this.workspace.options.maxInstances['get_var_block'] = 3; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), + 'With maxBlocks limit 1 and maxInstances limit 3'); + }); + + test('Over block limit of 0 but under instance limit', function() { + this.workspace.options.maxBlocks = 0; + this.workspace.options.maxInstances['get_var_block'] = 3; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), + 'With maxBlocks limit 0 and maxInstances limit 3'); + }); + + test('Over block limit but at instance limit', function() { + this.workspace.options.maxBlocks = 1; + this.workspace.options.maxInstances['get_var_block'] = 2; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), + 'With maxBlocks limit 1 and maxInstances limit 2'); + }); + + test('Over block limit and over instance limit', function() { + this.workspace.options.maxBlocks = 1; + this.workspace.options.maxInstances['get_var_block'] = 1; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), + 'With maxBlocks limit 1 and maxInstances limit 1'); + }); + + test('Over block limit of 0 and over instance limit', function() { + this.workspace.options.maxBlocks = 0; + this.workspace.options.maxInstances['get_var_block'] = 1; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), + 'With maxBlocks limit 0 and maxInstances limit 1'); + }); + + test('Over block limit and over instance limit of 0', function() { + this.workspace.options.maxBlocks = 1; + this.workspace.options.maxInstances['get_var_block'] = 0; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap), + 'With maxBlocks limit 1 and maxInstances limit 0'); + }); + + test('Over block limit of 0 and over instance limit of 0', function() { + this.workspace.options.maxBlocks = 0; + this.workspace.options.maxInstances['get_var_block'] = 0; + const typeCountsMap = {'get_var_block': 1}; + chai.assert.isFalse(this.workspace.isCapacityAvailable(typeCountsMap)); + }); + }); + + suite('getById', function() { + setup(function() { + this.workspaceB = this.workspace.rendered ? + new Blockly.WorkspaceSvg(new Blockly.Options({})) : + new Blockly.Workspace(); + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspaceB); + }); + + test('Trivial', function() { + chai.assert.equal(Blockly.Workspace.getById( + this.workspace.id), this.workspace, 'Find workspace'); + chai.assert.equal(Blockly.Workspace.getById( + this.workspaceB.id), this.workspaceB, 'Find workspaceB'); + }); + + test('Null id', function() { + chai.assert.isNull(Blockly.Workspace.getById(null)); + }); + + test('Non-existent id', function() { + chai.assert.isNull(Blockly.Workspace.getById('badId')); + }); + + test('After dispose', function() { + this.workspaceB.dispose(); + chai.assert.isNull(Blockly.Workspace.getById(this.workspaceB.id)); + }); + }); + + suite('getBlockById', function() { + setup(function() { + this.blockA = this.workspace.newBlock(''); + this.blockB = this.workspace.newBlock(''); + this.workspaceB = this.workspace.rendered ? + new Blockly.WorkspaceSvg(new Blockly.Options({})) : + new Blockly.Workspace(); + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspaceB); + }); + + test('Trivial', function() { + chai.assert.equal( + this.workspace.getBlockById(this.blockA.id), this.blockA); + chai.assert.equal( + this.workspace.getBlockById(this.blockB.id), this.blockB); + }); + + test('Null id', function() { + chai.assert.isNull(this.workspace.getBlockById(null)); + }); + + test('Non-existent id', function() { + chai.assert.isNull(this.workspace.getBlockById('badId')); + }); + + test('After dispose', function() { + this.blockA.dispose(); + chai.assert.isNull(this.workspace.getBlockById(this.blockA.id)); + chai.assert.equal( + this.workspace.getBlockById(this.blockB.id), this.blockB); + }); + + test('After clear', function() { + this.workspace.clear(); + chai.assert.isNull(this.workspace.getBlockById(this.blockA.id)); + chai.assert.isNull(this.workspace.getBlockById(this.blockB.id)); + }); + }); + + suite('Undo/Redo', function() { + /** + * Assert that two nodes are equal. + * @param {!Element} actual the actual node. + * @param {!Element} expected the expected node. + */ + function assertNodesEqual(actual, expected) { + const actualString = '\n' + Blockly.Xml.domToPrettyText(actual) + '\n'; + const expectedString = '\n' + Blockly.Xml.domToPrettyText(expected) + '\n'; + + chai.assert.equal(actual.tagName, expected.tagName); + for (let i = 0, attr; (attr = expected.attributes[i]); i++) { + chai.assert.equal(actual.getAttribute(attr.name), attr.value, + `expected attribute ${attr.name} on ${actualString} to match ` + + `${expectedString}`); + } + chai.assert.equal(actual.childElementCount, expected.childElementCount, + `expected node ${actualString} to have the same children as node ` + + `${expectedString}`); + for (let i = 0; i < expected.childElementCount; i++) { + assertNodesEqual(actual.children[i], expected.children[i]); + } + } + + suite('Undo Delete', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([ + { + "type": "stack_block", + "message0": "", + "previousStatement": null, + "nextStatement": null, + }, + { + "type": "row_block", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + }, + ], + "output": null, + }, + { + "type": "statement_block", + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "STATEMENT", + }, + ], + "previousStatement": null, + "nextStatement": null, + }]); + }); + + teardown(function() { + delete Blockly.Blocks['stack_block']; + delete Blockly.Blocks['row_block']; + delete Blockly.Blocks['statement_block']; + }); + + function testUndoDelete(xmlText) { + const xml = Blockly.Xml.textToDom(xmlText); + Blockly.Xml.domToBlock(xml, this.workspace); + this.workspace.getTopBlocks()[0].dispose(false); + this.workspace.undo(); + const newXml = Blockly.Xml.workspaceToDom(this.workspace); + assertNodesEqual(newXml.firstChild, xml); + } + + test('Stack', function() { + testUndoDelete.call(this, ''); + }); + + test('Row', function() { + testUndoDelete.call(this, ''); + }); + + test('Statement', function() { + testUndoDelete.call(this, ''); + }); + + test('Stack w/ child', function() { + testUndoDelete.call(this, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + }); + + test('Row w/ child', function() { + testUndoDelete.call(this, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + }); + + test('Statement w/ child', function() { + testUndoDelete.call(this, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + }); + + test('Stack w/ shadow', function() { + testUndoDelete.call(this, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + }); + + test('Row w/ shadow', function() { + testUndoDelete.call(this, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + }); + + test('Statement w/ shadow', function() { + testUndoDelete.call(this, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + }); + }); + + suite('Undo Connect', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([ + { + "type": "stack_block", + "message0": "", + "previousStatement": null, + "nextStatement": null, + }, + { + "type": "row_block", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + }, + ], + "output": null, + }, + { + "type": "statement_block", + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "STATEMENT", + }, + ], + "previousStatement": null, + "nextStatement": null, + }]); + }); + + teardown(function() { + delete Blockly.Blocks['stack_block']; + delete Blockly.Blocks['row_block']; + delete Blockly.Blocks['statement_block']; + }); + + function testUndoConnect(xmlText, parentId, childId, func) { + const xml = Blockly.Xml.textToDom(xmlText); + Blockly.Xml.domToWorkspace(xml, this.workspace); + + const parent = this.workspace.getBlockById(parentId); + const child = this.workspace.getBlockById(childId); + func.call(this, parent, child); + this.workspace.undo(); + + const newXml = Blockly.Xml.workspaceToDom(this.workspace); + assertNodesEqual(newXml, xml); + } + + test('Stack', function() { + const xml = + '' + + ' ' + + ' ' + + ''; + + testUndoConnect.call(this, xml, 1, 2, (parent, child) => { + parent.nextConnection.connect(child.previousConnection); + }); + }); + + test('Row', function() { + const xml = + '' + + ' ' + + ' ' + + ''; + + testUndoConnect.call(this, xml, 1, 2, (parent, child) => { + parent.getInput('INPUT').connection.connect(child.outputConnection); + }); + }); + + test('Statement', function() { + const xml = + '' + + ' ' + + ' ' + + ''; + + testUndoConnect.call(this, xml, 1, 2, (parent, child) => { + parent.getInput('STATEMENT').connection + .connect(child.previousConnection); + }); + }); + + test('Stack w/ child', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + + testUndoConnect.call(this, xml, 1, 2, (parent, child) => { + parent.nextConnection.connect(child.previousConnection); + }); + }); + + test('Row w/ child', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + + testUndoConnect.call(this, xml, 1, 2, (parent, child) => { + parent.getInput('INPUT').connection.connect(child.outputConnection); + }); + }); + + test('Statement w/ child', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + + testUndoConnect.call(this, xml, 1, 2, (parent, child) => { + parent.getInput('STATEMENT').connection + .connect(child.previousConnection); + }); + }); + + test('Stack w/ shadow', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + + testUndoConnect.call(this, xml, 1, 2, (parent, child) => { + parent.nextConnection.connect(child.previousConnection); + }); + }); + + test('Row w/ shadow', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + + testUndoConnect.call(this, xml, 1, 2, (parent, child) => { + parent.getInput('INPUT').connection.connect(child.outputConnection); + }); + }); + + test('Statement w/ shadow', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + + testUndoConnect.call(this, xml, 1, 2, (parent, child) => { + parent.getInput('STATEMENT').connection + .connect(child.previousConnection); + }); + }); + }); + + suite('Undo Disconnect', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([ + { + "type": "stack_block", + "message0": "", + "previousStatement": null, + "nextStatement": null, + }, + { + "type": "row_block", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + }, + ], + "output": null, + }, + { + "type": "statement_block", + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "STATEMENT", + }, + ], + "previousStatement": null, + "nextStatement": null, + }]); + }); + + teardown(function() { + delete Blockly.Blocks['stack_block']; + delete Blockly.Blocks['row_block']; + delete Blockly.Blocks['statement_block']; + }); + + function testUndoDisconnect(xmlText, childId) { + const xml = Blockly.Xml.textToDom(xmlText); + Blockly.Xml.domToWorkspace(xml, this.workspace); + + const child = this.workspace.getBlockById(childId); + if (child.outputConnection) { + child.outputConnection.disconnect(); + } else { + child.previousConnection.disconnect(); + } + this.workspace.undo(); + + const newXml = Blockly.Xml.workspaceToDom(this.workspace); + assertNodesEqual(newXml, xml); + } + + test('Stack', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + testUndoDisconnect.call(this, xml, 2); + }); + + test('Row', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + testUndoDisconnect.call(this, xml, 2); + }); + + test('Statement', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + testUndoDisconnect.call(this, xml, 2); + }); + + test('Stack w/ child', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + testUndoDisconnect.call(this, xml, 2); + }); + + test('Row w/ child', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + testUndoDisconnect.call(this, xml, 2); + }); + + test('Statement w/ child', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + testUndoDisconnect.call(this, xml, 2); + }); + + test('Stack w/ shadow', function() { + // TODO: For some reason on next connections shadows are + // serialized second. + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + testUndoDisconnect.call(this, xml, 2); + chai.assert.equal(this.workspace.getAllBlocks().length, 2, + 'expected there to only be 2 blocks on the workspace ' + + '(check for shadows)'); + }); + + test('Row w/ shadow', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + testUndoDisconnect.call(this, xml, 2); + chai.assert.equal(this.workspace.getAllBlocks().length, 2, + 'expected there to only be 2 blocks on the workspace ' + + '(check for shadows)'); + }); + + test('Statement w/ shadow', function() { + const xml = + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ''; + testUndoDisconnect.call(this, xml, 2); + }); + }); + + suite('Variables', function() { + function createTwoVarsDifferentTypes(workspace) { + workspace.createVariable('name1', 'type1', 'id1'); + workspace.createVariable('name2', 'type2', 'id2'); + } + + suite('createVariable', function() { + test('Undo only', function() { + createTwoVarsDifferentTypes(this.workspace); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + chai.assert.isNull(this.workspace.getVariableById('id2')); + + this.workspace.undo(); + chai.assert.isNull(this.workspace.getVariableById('id1')); + chai.assert.isNull(this.workspace.getVariableById('id2')); + }); + + test('Undo and redo', function() { + createTwoVarsDifferentTypes(this.workspace); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + chai.assert.isNull(this.workspace.getVariableById('id2')); + + this.workspace.undo(true); + + // Expect that variable 'id2' is recreated + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + this.workspace.undo(); + this.workspace.undo(); + chai.assert.isNull(this.workspace.getVariableById('id1')); + chai.assert.isNull(this.workspace.getVariableById('id2')); + this.workspace.undo(true); + + // Expect that variable 'id1' is recreated + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + chai.assert.isNull(this.workspace.getVariableById('id2')); + }); + }); + + suite('deleteVariableById', function() { + test('Undo only no usages', function() { + createTwoVarsDifferentTypes(this.workspace); + this.workspace.deleteVariableById('id1'); + this.workspace.deleteVariableById('id2'); + + this.workspace.undo(); + chai.assert.isNull(this.workspace.getVariableById('id1')); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + }); + + test('Undo only with usages', function() { + createTwoVarsDifferentTypes(this.workspace); + // Create blocks to refer to both of them. + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + this.workspace.deleteVariableById('id1'); + this.workspace.deleteVariableById('id2'); + + this.workspace.undo(); + assertBlockVarModelName(this.workspace, 0, 'name2'); + chai.assert.isNull(this.workspace.getVariableById('id1')); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + this.workspace.undo(); + assertBlockVarModelName(this.workspace, 0, 'name2'); + assertBlockVarModelName(this.workspace, 1, 'name1'); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + }); + + test('Reference exists no usages', function() { + createTwoVarsDifferentTypes(this.workspace); + this.workspace.deleteVariableById('id1'); + this.workspace.deleteVariableById('id2'); + + this.workspace.undo(); + chai.assert.isNull(this.workspace.getVariableById('id1')); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + this.workspace.undo(true); + // Expect that both variables are deleted + chai.assert.isNull(this.workspace.getVariableById('id1')); + chai.assert.isNull(this.workspace.getVariableById('id2')); + + this.workspace.undo(); + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + this.workspace.undo(true); + // Expect that variable 'id2' is recreated + chai.assert.isNull(this.workspace.getVariableById('id1')); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + }); + + test('Reference exists with usages', function() { + createTwoVarsDifferentTypes(this.workspace); + // Create blocks to refer to both of them. + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + this.workspace.deleteVariableById('id1'); + this.workspace.deleteVariableById('id2'); + + this.workspace.undo(); + assertBlockVarModelName(this.workspace, 0, 'name2'); + chai.assert.isNull(this.workspace.getVariableById('id1')); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + this.workspace.undo(true); + // Expect that both variables are deleted + chai.assert.equal(this.workspace.topBlocks_.length, 0); + chai.assert.isNull(this.workspace.getVariableById('id1')); + chai.assert.isNull(this.workspace.getVariableById('id2')); + + this.workspace.undo(); + this.workspace.undo(); + assertBlockVarModelName(this.workspace, 0, 'name2'); + assertBlockVarModelName(this.workspace, 1, 'name1'); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + this.workspace.undo(true); + // Expect that variable 'id2' is recreated + assertBlockVarModelName(this.workspace, 0, 'name2'); + chai.assert.isNull(this.workspace.getVariableById('id1')); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + }); + + test('Delete same variable twice no usages', function() { + this.workspace.createVariable('name1', 'type1', 'id1'); + this.workspace.deleteVariableById('id1'); + const workspace = this.workspace; + assertWarnings(() => { + workspace.deleteVariableById('id1'); + }, /Can't delete/); + + // Check the undoStack only recorded one delete event. + const undoStack = this.workspace.undoStack_; + chai.assert.equal(undoStack[undoStack.length - 1].type, 'var_delete'); + chai.assert.notEqual(undoStack[undoStack.length - 2].type, 'var_delete'); + + // Undo delete + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + + // Redo delete + this.workspace.undo(true); + chai.assert.isNull(this.workspace.getVariableById('id1')); + + // Redo delete, nothing should happen + this.workspace.undo(true); + chai.assert.isNull(this.workspace.getVariableById('id1')); + }); + + test('Delete same variable twice with usages', function() { + this.workspace.createVariable('name1', 'type1', 'id1'); + createVarBlocksNoEvents(this.workspace, ['id1']); + this.workspace.deleteVariableById('id1'); + const workspace = this.workspace; + assertWarnings(() => { + workspace.deleteVariableById('id1'); + }, /Can't delete/); + + // Check the undoStack only recorded one delete event. + const undoStack = this.workspace.undoStack_; + chai.assert.equal(undoStack[undoStack.length - 1].type, 'var_delete'); + chai.assert.equal(undoStack[undoStack.length - 2].type, 'delete'); + chai.assert.notEqual(undoStack[undoStack.length - 3].type, 'var_delete'); + + // Undo delete + this.workspace.undo(); + assertBlockVarModelName(this.workspace, 0, 'name1'); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + + // Redo delete + this.workspace.undo(true); + chai.assert.equal(this.workspace.topBlocks_.length, 0); + chai.assert.isNull(this.workspace.getVariableById('id1')); + + // Redo delete, nothing should happen + this.workspace.undo(true); + chai.assert.equal(this.workspace.topBlocks_.length, 0); + chai.assert.isNull(this.workspace.getVariableById('id1')); + }); + }); + + suite('renameVariableById', function() { + setup(function() { + this.workspace.createVariable('name1', 'type1', 'id1'); + }); + + test('Reference exists no usages rename to name2', function() { + this.workspace.renameVariableById('id1', 'name2'); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); + }); + + test('Reference exists with usages rename to name2', function() { + createVarBlocksNoEvents(this.workspace, ['id1']); + this.workspace.renameVariableById('id1', 'name2'); + + this.workspace.undo(); + assertBlockVarModelName(this.workspace, 0, 'name1'); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + + this.workspace.undo(true); + assertBlockVarModelName(this.workspace, 0, 'name2'); + assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); + }); + + test('Reference exists different capitalization no usages rename to Name1', function() { + this.workspace.renameVariableById('id1', 'Name1'); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'Name1', 'type1', 'id1'); + }); + + test('Reference exists different capitalization with usages rename to Name1', function() { + createVarBlocksNoEvents(this.workspace, ['id1']); + this.workspace.renameVariableById('id1', 'Name1'); + + this.workspace.undo(); + assertBlockVarModelName(this.workspace, 0, 'name1'); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + + this.workspace.undo(true); + assertBlockVarModelName(this.workspace, 0, 'Name1'); + assertVariableValues(this.workspace, 'Name1', 'type1', 'id1'); + }); + + suite('Two variables rename overlap', function() { + test('Same type no usages rename variable with id1 to name2', function() { + this.workspace.createVariable('name2', 'type1', 'id2'); + this.workspace.renameVariableById('id1', 'name2'); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); + chai.assert.isNull(this.workspace.getVariableById('id1')); + }); + + test('Same type with usages rename variable with id1 to name2', function() { + this.workspace.createVariable('name2', 'type1', 'id2'); + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + this.workspace.renameVariableById('id1', 'name2'); + + this.workspace.undo(); + assertBlockVarModelName(this.workspace, 0, 'name1'); + assertBlockVarModelName(this.workspace, 1, 'name2'); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); + chai.assert.isNull(this.workspace.getVariableById('id1')); + }); + + test('Same type different capitalization no usages rename variable with id1 to Name2', function() { + this.workspace.createVariable('name2', 'type1', 'id2'); + this.workspace.renameVariableById('id1', 'Name2'); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'Name2', 'type1', 'id2'); + chai.assert.isNull(this.workspace.getVariable('name1')); + }); + + test('Same type different capitalization with usages rename variable with id1 to Name2', function() { + this.workspace.createVariable('name2', 'type1', 'id2'); + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + this.workspace.renameVariableById('id1', 'Name2'); + + this.workspace.undo(); + assertBlockVarModelName(this.workspace, 0, 'name1'); + assertBlockVarModelName(this.workspace, 1, 'name2'); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type1', 'id2'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'Name2', 'type1', 'id2'); + chai.assert.isNull(this.workspace.getVariableById('id1')); + assertBlockVarModelName(this.workspace, 0, 'Name2'); + assertBlockVarModelName(this.workspace, 1, 'Name2'); + }); + + test('Different type no usages rename variable with id1 to name2', function() { + this.workspace.createVariable('name2', 'type2', 'id2'); + this.workspace.renameVariableById('id1', 'name2'); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + }); + + test('Different type with usages rename variable with id1 to name2', function() { + this.workspace.createVariable('name2', 'type2', 'id2'); + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + this.workspace.renameVariableById('id1', 'name2'); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + assertBlockVarModelName(this.workspace, 0, 'name1'); + assertBlockVarModelName(this.workspace, 1, 'name2'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'name2', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + assertBlockVarModelName(this.workspace, 0, 'name2'); + assertBlockVarModelName(this.workspace, 1, 'name2'); + }); + + test('Different type different capitalization no usages rename variable with id1 to Name2', function() { + this.workspace.createVariable('name2', 'type2', 'id2'); + this.workspace.renameVariableById('id1', 'Name2'); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'Name2', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + }); + + test('Different type different capitalization with usages rename variable with id1 to Name2', function() { + this.workspace.createVariable('name2', 'type2', 'id2'); + createVarBlocksNoEvents(this.workspace, ['id1', 'id2']); + this.workspace.renameVariableById('id1', 'Name2'); + + this.workspace.undo(); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + assertBlockVarModelName(this.workspace, 0, 'name1'); + assertBlockVarModelName(this.workspace, 1, 'name2'); + + this.workspace.undo(true); + assertVariableValues(this.workspace, 'Name2', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + assertBlockVarModelName(this.workspace, 0, 'Name2'); + assertBlockVarModelName(this.workspace, 1, 'name2'); + }); + }); + }); + }); + }); +} +exports.testAWorkspace = testAWorkspace; diff --git a/tests/mocha/theme_test.js b/tests/mocha/theme_test.js index 95d61ce0d04..283b7cc90e6 100644 --- a/tests/mocha/theme_test.js +++ b/tests/mocha/theme_test.js @@ -1,277 +1,277 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.theme'); - -const {assertEventFired} = goog.require('Blockly.test.helpers.events'); -const eventUtils = goog.require('Blockly.Events.utils'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Theme', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - // Clear all registered themes. - Blockly.registry.TEST_ONLY.typeMap['theme'] = {}; - }); - - function defineThemeTestBlocks() { - Blockly.defineBlocksWithJsonArray([{ - "type": "stack_block", - "message0": "", - "previousStatement": null, - "nextStatement": null, - }, - { - "type": "row_block", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "INPUT", - }, - ], - "output": null, - }]); - } - - function createBlockStyles() { - return { - "styleOne": { - "colourPrimary": "#aaaaaa", - "colourSecondary": "#bbbbbb", - "colourTertiary": "#cccccc", - "hat": 'cap', - }, - }; - } - - function createMultipleBlockStyles() { - return { - "styleOne": { - "colourPrimary": "#aaaaaa", - "colourSecondary": "#bbbbbb", - "colourTertiary": "#cccccc", - "hat": 'cap', - }, - "styleTwo": { - "colourPrimary": "#000000", - "colourSecondary": "#999999", - "colourTertiary": "#4d4d4d", - "hat": '', - }, - }; - } - - function stringifyAndCompare(val1, val2) { - const stringVal1 = JSON.stringify(val1); - const stringVal2 = JSON.stringify(val2); - chai.assert.equal(stringVal1, stringVal2); - } - - test('Set All BlockStyles', function() { - const theme = new Blockly.Theme('test', createBlockStyles()); - stringifyAndCompare(createBlockStyles(), theme.blockStyles); - const blockStyles = createMultipleBlockStyles(); - for (const key in blockStyles) { - theme.blockStyles[key] = blockStyles[key]; - } - stringifyAndCompare(createMultipleBlockStyles(), theme.blockStyles); - }); - - test('Get All BlockStyles', function() { - const theme = new Blockly.Theme('test', createMultipleBlockStyles()); - const allBlocks = theme.blockStyles; - stringifyAndCompare(createMultipleBlockStyles(), allBlocks); - }); - - test('Get BlockStyles', function() { - const theme = new Blockly.Theme('test', createBlockStyles()); - const blockStyle = theme.blockStyles['styleOne']; - - stringifyAndCompare(blockStyle, createBlockStyles().styleOne); - }); - - test('Set BlockStyle Update', function() { - const theme = new Blockly.Theme('test', createBlockStyles()); - const blockStyle = createBlockStyles(); - blockStyle.styleOne.colourPrimary = '#00ff00'; - - theme.blockStyles['styleOne'] = blockStyle.styleOne; - - stringifyAndCompare(theme.blockStyles, blockStyle); - }); - - test('Set BlockStyle Add', function() { - const theme = new Blockly.Theme('test', createBlockStyles()); - const blockStyle = createMultipleBlockStyles(); - - theme.blockStyles['styleTwo'] = blockStyle.styleTwo; - - stringifyAndCompare(theme.blockStyles, blockStyle); - }); - - test('Set Theme', function() { - defineThemeTestBlocks(); - let workspace; - try { - const blockStyles = createBlockStyles(); - const theme = new Blockly.Theme('themeName', blockStyles); - workspace = new Blockly.WorkspaceSvg(new Blockly.Options({})); - const blockA = workspace.newBlock('stack_block'); - - blockA.setStyle = function() {this.styleName_ = 'styleTwo';}; - const refreshToolboxSelectionStub = - sinon.stub(workspace, 'refreshToolboxSelection'); - blockA.styleName_ = 'styleOne'; - - // Stubs are cleaned up in sharedTestTeardown - sinon.stub(Blockly, "getMainWorkspace").returns(workspace); - sinon.stub(Blockly, "hideChaff"); - - workspace.setTheme(theme); - - // Checks that the theme was set correctly on Blockly namespace - stringifyAndCompare(workspace.getTheme(), theme); - - // Checks that the setTheme function was called on the block - chai.assert.equal(blockA.getStyleName(), 'styleTwo'); - - // Checks that the toolbox refreshed method was called - sinon.assert.calledOnce(refreshToolboxSelectionStub); - - assertEventFired( - this.eventsFireStub, Blockly.Events.ThemeChange, - {themeName: 'themeName', type: eventUtils.THEME_CHANGE}, workspace.id); - } finally { - workspaceTeardown.call(this, workspace); - } - }); - - suite('Validate block styles', function() { - setup(function() { - this.constants = new Blockly.blockRendering.ConstantProvider(); - }); - - test('Null', function() { - const inputStyle = null; - const expectedOutput = { - "colourPrimary": "#000000", - "colourSecondary": "#999999", - "colourTertiary": "#4d4d4d", - "hat": '', - }; - stringifyAndCompare( - this.constants.validatedBlockStyle_(inputStyle), expectedOutput); - }); - - test('Empty', function() { - const inputStyle = {}; - const expectedOutput = { - "colourPrimary": "#000000", - "colourSecondary": "#999999", - "colourTertiary": "#4d4d4d", - "hat": '', - }; - stringifyAndCompare( - this.constants.validatedBlockStyle_(inputStyle), expectedOutput); - }); - - test('Incomplete hex', function() { - const inputStyle = { - "colourPrimary": "#012345", - }; - const expectedOutput = { - "colourPrimary": "#012345", - "colourSecondary": "#99a7b5", - "colourTertiary": "#4d657d", - "hat": '', - }; - stringifyAndCompare( - this.constants.validatedBlockStyle_(inputStyle), expectedOutput); - }); - - test('Complete hex', function() { - const inputStyle = { - "colourPrimary": "#aaaaaa", - "colourSecondary": "#bbbbbb", - "colourTertiary": "#cccccc", - "hat": 'cap', - }; - const expectedOutput = { - "colourPrimary": "#aaaaaa", - "colourSecondary": "#bbbbbb", - "colourTertiary": "#cccccc", - "hat": 'cap', - }; - stringifyAndCompare( - this.constants.validatedBlockStyle_(inputStyle), expectedOutput); - }); - - test('Complete hue', function() { - const inputStyle = { - "colourPrimary": "20", - "colourSecondary": "40", - "colourTertiary": "60", - }; - const expectedOutput = { - "colourPrimary": "#a5745b", - "colourSecondary": "#a58c5b", - "colourTertiary": "#a5a55b", - "hat": '', - }; - stringifyAndCompare( - this.constants.validatedBlockStyle_(inputStyle), expectedOutput); - }); - - test('Incomplete hue', function() { - const inputStyle = { - "colourPrimary": "20", - }; - const expectedOutput = { - "colourPrimary": "#a5745b", - "colourSecondary": "#dbc7bd", - "colourTertiary": "#c09e8c", - "hat": '', - }; - stringifyAndCompare( - this.constants.validatedBlockStyle_(inputStyle), expectedOutput); - }); - - test('Complete css colour name', function() { - const inputStyle = { - "colourPrimary": "red", - "colourSecondary": "white", - "colourTertiary": "blue", - }; - const expectedOutput = { - "colourPrimary": "#ff0000", - "colourSecondary": "#ffffff", - "colourTertiary": "#0000ff", - "hat": '', - }; - stringifyAndCompare( - this.constants.validatedBlockStyle_(inputStyle), expectedOutput); - }); - - test('Incomplete css colour name', function() { - const inputStyle = { - "colourPrimary": "black", - }; - const expectedOutput = { - "colourPrimary": "#000000", - "colourSecondary": "#999999", - "colourTertiary": "#4d4d4d", - "hat": '', - }; - stringifyAndCompare( - this.constants.validatedBlockStyle_(inputStyle), expectedOutput); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.theme'); + +const {assertEventFired} = goog.require('Blockly.test.helpers.events'); +const eventUtils = goog.require('Blockly.Events.utils'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Theme', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + // Clear all registered themes. + Blockly.registry.TEST_ONLY.typeMap['theme'] = {}; + }); + + function defineThemeTestBlocks() { + Blockly.defineBlocksWithJsonArray([{ + "type": "stack_block", + "message0": "", + "previousStatement": null, + "nextStatement": null, + }, + { + "type": "row_block", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT", + }, + ], + "output": null, + }]); + } + + function createBlockStyles() { + return { + "styleOne": { + "colourPrimary": "#aaaaaa", + "colourSecondary": "#bbbbbb", + "colourTertiary": "#cccccc", + "hat": 'cap', + }, + }; + } + + function createMultipleBlockStyles() { + return { + "styleOne": { + "colourPrimary": "#aaaaaa", + "colourSecondary": "#bbbbbb", + "colourTertiary": "#cccccc", + "hat": 'cap', + }, + "styleTwo": { + "colourPrimary": "#000000", + "colourSecondary": "#999999", + "colourTertiary": "#4d4d4d", + "hat": '', + }, + }; + } + + function stringifyAndCompare(val1, val2) { + const stringVal1 = JSON.stringify(val1); + const stringVal2 = JSON.stringify(val2); + chai.assert.equal(stringVal1, stringVal2); + } + + test('Set All BlockStyles', function() { + const theme = new Blockly.Theme('test', createBlockStyles()); + stringifyAndCompare(createBlockStyles(), theme.blockStyles); + const blockStyles = createMultipleBlockStyles(); + for (const key in blockStyles) { + theme.blockStyles[key] = blockStyles[key]; + } + stringifyAndCompare(createMultipleBlockStyles(), theme.blockStyles); + }); + + test('Get All BlockStyles', function() { + const theme = new Blockly.Theme('test', createMultipleBlockStyles()); + const allBlocks = theme.blockStyles; + stringifyAndCompare(createMultipleBlockStyles(), allBlocks); + }); + + test('Get BlockStyles', function() { + const theme = new Blockly.Theme('test', createBlockStyles()); + const blockStyle = theme.blockStyles['styleOne']; + + stringifyAndCompare(blockStyle, createBlockStyles().styleOne); + }); + + test('Set BlockStyle Update', function() { + const theme = new Blockly.Theme('test', createBlockStyles()); + const blockStyle = createBlockStyles(); + blockStyle.styleOne.colourPrimary = '#00ff00'; + + theme.blockStyles['styleOne'] = blockStyle.styleOne; + + stringifyAndCompare(theme.blockStyles, blockStyle); + }); + + test('Set BlockStyle Add', function() { + const theme = new Blockly.Theme('test', createBlockStyles()); + const blockStyle = createMultipleBlockStyles(); + + theme.blockStyles['styleTwo'] = blockStyle.styleTwo; + + stringifyAndCompare(theme.blockStyles, blockStyle); + }); + + test('Set Theme', function() { + defineThemeTestBlocks(); + let workspace; + try { + const blockStyles = createBlockStyles(); + const theme = new Blockly.Theme('themeName', blockStyles); + workspace = new Blockly.WorkspaceSvg(new Blockly.Options({})); + const blockA = workspace.newBlock('stack_block'); + + blockA.setStyle = function() {this.styleName_ = 'styleTwo';}; + const refreshToolboxSelectionStub = + sinon.stub(workspace, 'refreshToolboxSelection'); + blockA.styleName_ = 'styleOne'; + + // Stubs are cleaned up in sharedTestTeardown + sinon.stub(Blockly, "getMainWorkspace").returns(workspace); + sinon.stub(Blockly, "hideChaff"); + + workspace.setTheme(theme); + + // Checks that the theme was set correctly on Blockly namespace + stringifyAndCompare(workspace.getTheme(), theme); + + // Checks that the setTheme function was called on the block + chai.assert.equal(blockA.getStyleName(), 'styleTwo'); + + // Checks that the toolbox refreshed method was called + sinon.assert.calledOnce(refreshToolboxSelectionStub); + + assertEventFired( + this.eventsFireStub, Blockly.Events.ThemeChange, + {themeName: 'themeName', type: eventUtils.THEME_CHANGE}, workspace.id); + } finally { + workspaceTeardown.call(this, workspace); + } + }); + + suite('Validate block styles', function() { + setup(function() { + this.constants = new Blockly.blockRendering.ConstantProvider(); + }); + + test('Null', function() { + const inputStyle = null; + const expectedOutput = { + "colourPrimary": "#000000", + "colourSecondary": "#999999", + "colourTertiary": "#4d4d4d", + "hat": '', + }; + stringifyAndCompare( + this.constants.validatedBlockStyle_(inputStyle), expectedOutput); + }); + + test('Empty', function() { + const inputStyle = {}; + const expectedOutput = { + "colourPrimary": "#000000", + "colourSecondary": "#999999", + "colourTertiary": "#4d4d4d", + "hat": '', + }; + stringifyAndCompare( + this.constants.validatedBlockStyle_(inputStyle), expectedOutput); + }); + + test('Incomplete hex', function() { + const inputStyle = { + "colourPrimary": "#012345", + }; + const expectedOutput = { + "colourPrimary": "#012345", + "colourSecondary": "#99a7b5", + "colourTertiary": "#4d657d", + "hat": '', + }; + stringifyAndCompare( + this.constants.validatedBlockStyle_(inputStyle), expectedOutput); + }); + + test('Complete hex', function() { + const inputStyle = { + "colourPrimary": "#aaaaaa", + "colourSecondary": "#bbbbbb", + "colourTertiary": "#cccccc", + "hat": 'cap', + }; + const expectedOutput = { + "colourPrimary": "#aaaaaa", + "colourSecondary": "#bbbbbb", + "colourTertiary": "#cccccc", + "hat": 'cap', + }; + stringifyAndCompare( + this.constants.validatedBlockStyle_(inputStyle), expectedOutput); + }); + + test('Complete hue', function() { + const inputStyle = { + "colourPrimary": "20", + "colourSecondary": "40", + "colourTertiary": "60", + }; + const expectedOutput = { + "colourPrimary": "#a5745b", + "colourSecondary": "#a58c5b", + "colourTertiary": "#a5a55b", + "hat": '', + }; + stringifyAndCompare( + this.constants.validatedBlockStyle_(inputStyle), expectedOutput); + }); + + test('Incomplete hue', function() { + const inputStyle = { + "colourPrimary": "20", + }; + const expectedOutput = { + "colourPrimary": "#a5745b", + "colourSecondary": "#dbc7bd", + "colourTertiary": "#c09e8c", + "hat": '', + }; + stringifyAndCompare( + this.constants.validatedBlockStyle_(inputStyle), expectedOutput); + }); + + test('Complete css colour name', function() { + const inputStyle = { + "colourPrimary": "red", + "colourSecondary": "white", + "colourTertiary": "blue", + }; + const expectedOutput = { + "colourPrimary": "#ff0000", + "colourSecondary": "#ffffff", + "colourTertiary": "#0000ff", + "hat": '', + }; + stringifyAndCompare( + this.constants.validatedBlockStyle_(inputStyle), expectedOutput); + }); + + test('Incomplete css colour name', function() { + const inputStyle = { + "colourPrimary": "black", + }; + const expectedOutput = { + "colourPrimary": "#000000", + "colourSecondary": "#999999", + "colourTertiary": "#4d4d4d", + "hat": '', + }; + stringifyAndCompare( + this.constants.validatedBlockStyle_(inputStyle), expectedOutput); + }); + }); +}); diff --git a/tests/mocha/toolbox_test.js b/tests/mocha/toolbox_test.js index 65acef5b492..1881719d007 100644 --- a/tests/mocha/toolbox_test.js +++ b/tests/mocha/toolbox_test.js @@ -1,660 +1,660 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.toolbox'); - -const {defineStackBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {getBasicToolbox, getCategoryJSON, getChildItem, getCollapsibleItem, getDeeplyNestedJSON, getInjectedToolbox, getNonCollapsibleItem, getSeparator, getSimpleJson, getXmlArray} = goog.require('Blockly.test.helpers.toolboxDefinitions'); - - -suite('Toolbox', function() { - setup(function() { - sharedTestSetup.call(this); - defineStackBlock(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('init', function() { - setup(function() { - this.toolbox = getInjectedToolbox(); - }); - teardown(function() { - this.toolbox.dispose(); - }); - - test('Init called -> HtmlDiv is created', function() { - chai.assert.isDefined(this.toolbox.HtmlDiv); - }); - test('Init called -> HtmlDiv is inserted before parent node', function() { - const toolboxDiv = Blockly.common.getMainWorkspace().getInjectionDiv().childNodes[0]; - chai.assert.equal(toolboxDiv.className, - 'blocklyToolboxDiv blocklyNonSelectable'); - }); - test('Init called -> Toolbox is subscribed to background and foreground colour', function() { - const themeManager = this.toolbox.workspace_.getThemeManager(); - const themeManagerSpy = sinon.spy(themeManager, 'subscribe'); - const componentManager = this.toolbox.workspace_.getComponentManager(); - sinon.stub(componentManager, 'addComponent'); - this.toolbox.init(); - sinon.assert.calledWith(themeManagerSpy, this.toolbox.HtmlDiv, - 'toolboxBackgroundColour', 'background-color'); - sinon.assert.calledWith(themeManagerSpy, this.toolbox.HtmlDiv, - 'toolboxForegroundColour', 'color'); - }); - test('Init called -> Render is called', function() { - const renderSpy = sinon.spy(this.toolbox, 'render'); - const componentManager = this.toolbox.workspace_.getComponentManager(); - sinon.stub(componentManager, 'addComponent'); - this.toolbox.init(); - sinon.assert.calledOnce(renderSpy); - }); - test('Init called -> Flyout is initialized', function() { - const componentManager = this.toolbox.workspace_.getComponentManager(); - sinon.stub(componentManager, 'addComponent'); - this.toolbox.init(); - chai.assert.isDefined(this.toolbox.flyout_); - }); - }); - - suite('render', function() { - setup(function() { - this.toolbox = getInjectedToolbox(); - }); - teardown(function() { - this.toolbox.dispose(); - }); - test('Render called with valid toolboxDef -> Contents are created', function() { - const positionStub = sinon.stub(this.toolbox, 'position'); - this.toolbox.render({'contents': [ - {'kind': 'category', 'contents': []}, - {'kind': 'category', 'contents': []}, - ]}); - chai.assert.lengthOf(this.toolbox.contents_, 2); - sinon.assert.called(positionStub); - }); - // TODO: Uncomment once implemented. - test.skip('Toolbox definition with both blocks and categories -> Should throw an error', function() { - const toolbox = this.toolbox; - const badToolboxDef = [ - { - "kind": "block", - }, - { - "kind": "category", - }, - ]; - chai.assert.throws(function() { - toolbox.render({'contents': badToolboxDef}); - }, 'Toolbox cannot have both blocks and categories in the root level.'); - }); - // TODO: Uncomment once implemented. - test.skip('Expanded set to true for a non collapsible toolbox item -> Should open flyout', function() { - this.toolbox.render(this.toolboxXml); - const selectedNode = this.toolbox.tree_.children_[0]; - chai.assert.isTrue(selectedNode.selected_); - }); - test('JSON toolbox definition -> Should create toolbox with contents', function() { - const jsonDef = {'contents': [ - { - "kind": "category", - "contents": [ - { - "kind": "block", - "blockxml": 'FirstCategory-FirstBlock', - }, - { - "kind": "label", - "text": "Input/Output:", - "web-class": "ioLabel", - }, - { - "kind": "button", - "text": "insert", - "callbackkey": "insertConnectionStacks", - "web-class": "ioLabel", - }, - { - "kind": "sep", - "gap": "7", - }, - ], - }, - ]}; - this.toolbox.render(jsonDef); - chai.assert.lengthOf(this.toolbox.contents_, 1); - }); - }); - - suite('onClick_', function() { - setup(function() { - this.toolbox = getInjectedToolbox(); - }); - teardown(function() { - this.toolbox.dispose(); - }); - - test('Toolbox clicked -> Should close flyout', function() { - const hideChaffStub = sinon.stub( - Blockly.WorkspaceSvg.prototype, "hideChaff"); - const evt = new MouseEvent('click', {}); - this.toolbox.HtmlDiv.dispatchEvent(evt); - sinon.assert.calledOnce(hideChaffStub); - }); - test('Category clicked -> Should select category', function() { - const categoryXml = document.getElementsByClassName('blocklyTreeRow')[0]; - const evt = { - 'target': categoryXml, - }; - const item = this.toolbox.contentMap_[categoryXml.getAttribute('id')]; - const setSelectedSpy = sinon.spy(this.toolbox, 'setSelectedItem'); - const onClickSpy = sinon.spy(item, 'onClick'); - this.toolbox.onClick_(evt); - sinon.assert.calledOnce(setSelectedSpy); - sinon.assert.calledOnce(onClickSpy); - }); - }); - - suite('onKeyDown_', function() { - setup(function() { - this.toolbox = getInjectedToolbox(); - }); - teardown(function() { - this.toolbox.dispose(); - }); - - function createKeyDownMock(keyCode) { - return { - 'keyCode': keyCode, - 'preventDefault': function() {}, - }; - } - - function testCorrectFunctionCalled(toolbox, keyCode, funcName) { - const event = createKeyDownMock(keyCode); - const preventDefaultEvent = sinon.stub(event, 'preventDefault'); - const selectMethodStub = sinon.stub(toolbox, funcName); - selectMethodStub.returns(true); - toolbox.onKeyDown_(event); - sinon.assert.called(selectMethodStub); - sinon.assert.called(preventDefaultEvent); - } - - test('Down button is pushed -> Should call selectNext_', function() { - testCorrectFunctionCalled(this.toolbox, Blockly.utils.KeyCodes.DOWN, 'selectNext_', true); - }); - test('Up button is pushed -> Should call selectPrevious_', function() { - testCorrectFunctionCalled(this.toolbox, Blockly.utils.KeyCodes.UP, 'selectPrevious_', true); - }); - test('Left button is pushed -> Should call selectParent_', function() { - testCorrectFunctionCalled(this.toolbox, Blockly.utils.KeyCodes.LEFT, 'selectParent_', true); - }); - test('Right button is pushed -> Should call selectChild_', function() { - testCorrectFunctionCalled(this.toolbox, Blockly.utils.KeyCodes.RIGHT, 'selectChild_', true); - }); - test('Enter button is pushed -> Should toggle expandedd', function() { - this.toolbox.selectedItem_ = getCollapsibleItem(this.toolbox); - const toggleExpandedStub = sinon.stub(this.toolbox.selectedItem_, 'toggleExpanded'); - const event = createKeyDownMock(Blockly.utils.KeyCodes.ENTER); - const preventDefaultEvent = sinon.stub(event, 'preventDefault'); - this.toolbox.onKeyDown_(event); - sinon.assert.called(toggleExpandedStub); - sinon.assert.called(preventDefaultEvent); - }); - test('Enter button is pushed when no item is selected -> Should not call prevent default', function() { - this.toolbox.selectedItem_ = null; - const event = createKeyDownMock(Blockly.utils.KeyCodes.ENTER); - const preventDefaultEvent = sinon.stub(event, 'preventDefault'); - this.toolbox.onKeyDown_(event); - sinon.assert.notCalled(preventDefaultEvent); - }); - }); - - suite('Select Methods', function() { - setup(function() { - this.toolbox = getInjectedToolbox(); - }); - teardown(function() { - this.toolbox.dispose(); - }); - - suite('selectChild_', function() { - test('No item is selected -> Should not handle event', function() { - this.toolbox.selectedItem_ = null; - const handled = this.toolbox.selectChild_(); - chai.assert.isFalse(handled); - }); - test('Selected item is not collapsible -> Should not handle event', function() { - this.toolbox.selectedItem_ = getNonCollapsibleItem(this.toolbox); - const handled = this.toolbox.selectChild_(); - chai.assert.isFalse(handled); - }); - test('Selected item is collapsible -> Should expand', function() { - const collapsibleItem = getCollapsibleItem(this.toolbox); - this.toolbox.selectedItem_ = collapsibleItem; - const handled = this.toolbox.selectChild_(); - chai.assert.isTrue(handled); - chai.assert.isTrue(collapsibleItem.isExpanded()); - chai.assert.equal(this.toolbox.selectedItem_, collapsibleItem); - }); - - test('Selected item is expanded -> Should select child', function() { - const collapsibleItem = getCollapsibleItem(this.toolbox); - collapsibleItem.expanded_ = true; - const selectNextStub = sinon.stub(this.toolbox, 'selectNext_'); - this.toolbox.selectedItem_ = collapsibleItem; - const handled = this.toolbox.selectChild_(); - chai.assert.isTrue(handled); - sinon.assert.called(selectNextStub); - }); - }); - - suite('selectParent_', function() { - test('No item selected -> Should not handle event', function() { - this.toolbox.selectedItem_ = null; - const handled = this.toolbox.selectParent_(); - chai.assert.isFalse(handled); - }); - test('Selected item is expanded -> Should collapse', function() { - const collapsibleItem = getCollapsibleItem(this.toolbox); - collapsibleItem.expanded_ = true; - this.toolbox.selectedItem_ = collapsibleItem; - const handled = this.toolbox.selectParent_(); - chai.assert.isTrue(handled); - chai.assert.isFalse(collapsibleItem.isExpanded()); - chai.assert.equal(this.toolbox.selectedItem_, collapsibleItem); - }); - test('Selected item is not expanded -> Should get parent', function() { - const childItem = getChildItem(this.toolbox); - this.toolbox.selectedItem_ = childItem; - const handled = this.toolbox.selectParent_(); - chai.assert.isTrue(handled); - chai.assert.equal(this.toolbox.selectedItem_, childItem.getParent()); - }); - }); - - suite('selectNext_', function() { - test('No item is selected -> Should not handle event', function() { - this.toolbox.selectedItem_ = null; - const handled = this.toolbox.selectNext_(); - chai.assert.isFalse(handled); - }); - test('Next item is selectable -> Should select next item', function() { - const item = this.toolbox.contents_[0]; - this.toolbox.selectedItem_ = item; - const handled = this.toolbox.selectNext_(); - chai.assert.isTrue(handled); - chai.assert.equal(this.toolbox.selectedItem_, this.toolbox.contents_[1]); - }); - test('Selected item is last item -> Should not handle event', function() { - const item = this.toolbox.contents_[this.toolbox.contents_.length - 1]; - this.toolbox.selectedItem_ = item; - const handled = this.toolbox.selectNext_(); - chai.assert.isFalse(handled); - chai.assert.equal(this.toolbox.selectedItem_, item); - }); - test('Selected item is collapsed -> Should skip over its children', function() { - const item = getCollapsibleItem(this.toolbox); - const childItem = item.flyoutItems_[0]; - item.expanded_ = false; - this.toolbox.selectedItem_ = item; - const handled = this.toolbox.selectNext_(); - chai.assert.isTrue(handled); - chai.assert.notEqual(this.toolbox.selectedItem_, childItem); - }); - }); - - suite('selectPrevious', function() { - test('No item is selected -> Should not handle event', function() { - this.toolbox.selectedItem_ = null; - const handled = this.toolbox.selectPrevious_(); - chai.assert.isFalse(handled); - }); - test('Selected item is first item -> Should not handle event', function() { - const item = this.toolbox.contents_[0]; - this.toolbox.selectedItem_ = item; - const handled = this.toolbox.selectPrevious_(); - chai.assert.isFalse(handled); - chai.assert.equal(this.toolbox.selectedItem_, item); - }); - test('Previous item is selectable -> Should select previous item', function() { - const item = this.toolbox.contents_[1]; - const prevItem = this.toolbox.contents_[0]; - this.toolbox.selectedItem_ = item; - const handled = this.toolbox.selectPrevious_(); - chai.assert.isTrue(handled); - chai.assert.equal(this.toolbox.selectedItem_, prevItem); - }); - test('Previous item is collapsed -> Should skip over children of the previous item', function() { - const childItem = getChildItem(this.toolbox); - const parentItem = childItem.getParent(); - const parentIdx = this.toolbox.contents_.indexOf(parentItem); - // Gets the item after the parent. - const item = this.toolbox.contents_[parentIdx + 1]; - this.toolbox.selectedItem_ = item; - const handled = this.toolbox.selectPrevious_(); - chai.assert.isTrue(handled); - chai.assert.notEqual(this.toolbox.selectedItem_, childItem); - }); - }); - }); - - suite('setSelectedItem', function() { - setup(function() { - this.toolbox = getInjectedToolbox(); - }); - teardown(function() { - this.toolbox.dispose(); - }); - - function setupSetSelected(toolbox, oldItem, newItem) { - toolbox.selectedItem_ = oldItem; - const newItemStub = sinon.stub(newItem, 'setSelected'); - toolbox.setSelectedItem(newItem); - return newItemStub; - } - - test('Selected item and new item are null -> Should not update the flyout', function() { - this.selectedItem_ = null; - this.toolbox.setSelectedItem(null); - const updateFlyoutStub = sinon.stub(this.toolbox, 'updateFlyout_'); - sinon.assert.notCalled(updateFlyoutStub); - }); - test('New item is not selectable -> Should not update the flyout', function() { - const separator = getSeparator(this.toolbox); - this.toolbox.setSelectedItem(separator); - const updateFlyoutStub = sinon.stub(this.toolbox, 'updateFlyout_'); - sinon.assert.notCalled(updateFlyoutStub); - }); - test('Select an item with no children -> Should select item', function() { - const oldItem = getCollapsibleItem(this.toolbox); - const oldItemStub = sinon.stub(oldItem, 'setSelected'); - const newItem = getNonCollapsibleItem(this.toolbox); - const newItemStub = setupSetSelected(this.toolbox, oldItem, newItem); - sinon.assert.calledWith(oldItemStub, false); - sinon.assert.calledWith(newItemStub, true); - }); - test('Select previously selected item with no children -> Should deselect', function() { - const newItem = getNonCollapsibleItem(this.toolbox); - const newItemStub = setupSetSelected(this.toolbox, newItem, newItem); - sinon.assert.calledWith(newItemStub, false); - }); - test('Select collapsible item -> Should select item', function() { - const newItem = getCollapsibleItem(this.toolbox); - const newItemStub = setupSetSelected(this.toolbox, null, newItem); - sinon.assert.calledWith(newItemStub, true); - }); - test('Select previously selected collapsible item -> Should not deselect', function() { - const newItem = getCollapsibleItem(this.toolbox); - const newItemStub = setupSetSelected(this.toolbox, newItem, newItem); - sinon.assert.notCalled(newItemStub); - }); - }); - - suite('updateFlyout_', function() { - setup(function() { - this.toolbox = getInjectedToolbox(); - }); - teardown(function() { - this.toolbox.dispose(); - }); - - function testHideFlyout(toolbox, oldItem, newItem) { - const updateFlyoutStub = sinon.stub(toolbox.flyout_, 'hide'); - toolbox.updateFlyout_(oldItem, newItem); - sinon.assert.called(updateFlyoutStub); - } - - test('Select previously selected item -> Should close flyout', function() { - const newItem = getNonCollapsibleItem(this.toolbox); - testHideFlyout(this.toolbox, newItem, newItem); - }); - test('No new item -> Should close flyout', function() { - testHideFlyout(this.toolbox, null, null); - }); - test('Old item but no new item -> Should close flyout', function() { - const oldItem = getNonCollapsibleItem(this.toolbox); - testHideFlyout(this.toolbox, oldItem, null); - }); - test('Select collapsible item -> Should close flyout', function() { - const newItem = getCollapsibleItem(this.toolbox); - testHideFlyout(this.toolbox, null, newItem); - }); - test('Select selectable item -> Should open flyout', function() { - const showFlyoutstub = sinon.stub(this.toolbox.flyout_, 'show'); - const scrollToStartFlyout = sinon.stub(this.toolbox.flyout_, 'scrollToStart'); - const newItem = getNonCollapsibleItem(this.toolbox); - this.toolbox.updateFlyout_(null, newItem); - sinon.assert.called(showFlyoutstub); - sinon.assert.called(scrollToStartFlyout); - }); - }); - - suite('position', function() { - setup(function() { - this.toolbox = getBasicToolbox(); - const metricsStub = sinon.stub(this.toolbox.workspace_, 'getMetrics'); - metricsStub.returns({}); - }); - - function checkHorizontalToolbox(toolbox) { - chai.assert.equal(toolbox.HtmlDiv.style.left, '0px', 'Check left position'); - chai.assert.equal(toolbox.HtmlDiv.style.height, 'auto', 'Check height'); - chai.assert.equal(toolbox.HtmlDiv.style.width, '100%', 'Check width'); - chai.assert.equal(toolbox.height_, toolbox.HtmlDiv.offsetHeight, 'Check height'); - } - function checkVerticalToolbox(toolbox) { - chai.assert.equal(toolbox.HtmlDiv.style.height, '100%', 'Check height'); - chai.assert.equal(toolbox.width_, toolbox.HtmlDiv.offsetWidth, 'Check width'); - } - test('HtmlDiv is not created -> Should not resize', function() { - const toolbox = this.toolbox; - toolbox.HtmlDiv = null; - toolbox.horizontalLayout_ = true; - toolbox.position(); - chai.assert.equal(toolbox.height_, 0); - }); - test('Horizontal toolbox at top -> Should anchor horizontal toolbox to top', function() { - const toolbox = this.toolbox; - toolbox.toolboxPosition = Blockly.utils.toolbox.Position.TOP; - toolbox.horizontalLayout_ = true; - toolbox.position(); - checkHorizontalToolbox(toolbox); - chai.assert.equal(toolbox.HtmlDiv.style.top, '0px', 'Check top'); - }); - test('Horizontal toolbox at bottom -> Should anchor horizontal toolbox to bottom', function() { - const toolbox = this.toolbox; - toolbox.toolboxPosition = Blockly.utils.toolbox.Position.BOTTOM; - toolbox.horizontalLayout_ = true; - toolbox.position(); - checkHorizontalToolbox(toolbox); - chai.assert.equal(toolbox.HtmlDiv.style.bottom, '0px', 'Check bottom'); - }); - test('Vertical toolbox at right -> Should anchor to right', function() { - const toolbox = this.toolbox; - toolbox.toolboxPosition = Blockly.utils.toolbox.Position.RIGHT; - toolbox.horizontalLayout_ = false; - toolbox.position(); - chai.assert.equal(toolbox.HtmlDiv.style.right, '0px', 'Check right'); - checkVerticalToolbox(toolbox); - }); - test('Vertical toolbox at left -> Should anchor to left', function() { - const toolbox = this.toolbox; - toolbox.toolboxPosition = Blockly.utils.toolbox.Position.LEFT; - toolbox.horizontalLayout_ = false; - toolbox.position(); - chai.assert.equal(toolbox.HtmlDiv.style.left, '0px', 'Check left'); - checkVerticalToolbox(toolbox); - }); - }); - - suite('parseMethods', function() { - setup(function() { - this.categoryToolboxJSON = getCategoryJSON(); - this.simpleToolboxJSON = getSimpleJson(); - }); - - function checkValue(actual, expected, value) { - const actualVal = actual[value]; - const expectedVal = expected[value]; - chai.assert.equal(actualVal.toUpperCase(), expectedVal.toUpperCase(), 'Checking value for: ' + value); - } - function checkContents(actualContents, expectedContents) { - chai.assert.equal(actualContents.length, expectedContents.length); - for (let i = 0; i < actualContents.length; i++) { - // TODO: Check the values as well as all the keys. - chai.assert.containsAllKeys(actualContents[i], Object.keys(expectedContents[i])); - } - } - function checkCategory(actual, expected) { - checkValue(actual, expected, 'kind'); - checkValue(actual, expected, 'name'); - chai.assert.deepEqual(actual['cssconfig'], expected['cssconfig']); - checkContents(actual.contents, expected.contents); - } - function checkCategoryToolbox(actual, expected) { - const actualContents = actual['contents']; - const expectedContents = expected['contents']; - chai.assert.equal(actualContents.length, expectedContents.length); - for (let i = 0; i < expected.length; i++) { - checkCategory(actualContents[i], expected[i]); - } - } - function checkSimpleToolbox(actual, expected) { - checkContents(actual['contents'], expected['contents']); - } - - suite('parseToolbox', function() { - test('Category Toolbox: JSON', function() { - const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(this.categoryToolboxJSON); - chai.assert.isNotNull(toolboxDef); - checkCategoryToolbox(toolboxDef, this.categoryToolboxJSON); - }); - test('Simple Toolbox: JSON', function() { - const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(this.simpleToolboxJSON); - chai.assert.isNotNull(toolboxDef); - checkSimpleToolbox(toolboxDef, this.simpleToolboxJSON); - }); - test('Category Toolbox: xml', function() { - const toolboxXml = document.getElementById('toolbox-categories'); - const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(toolboxXml); - chai.assert.isNotNull(toolboxDef); - checkCategoryToolbox(toolboxDef, this.categoryToolboxJSON); - }); - test('Simple Toolbox: xml', function() { - const toolboxXml = document.getElementById('toolbox-simple'); - const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(toolboxXml); - chai.assert.isNotNull(toolboxDef); - checkSimpleToolbox(toolboxDef, this.simpleToolboxJSON); - }); - test('Simple Toolbox: string', function() { - let toolbox = ''; - toolbox += ' '; - toolbox += ' '; - toolbox += ''; - - const toolboxJson = { - 'contents': [ - { - 'kind': 'block', - 'type': 'controls_if', - }, - { - 'kind': 'block', - 'type': 'controls_if', - }, - ], - }; - - const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(toolbox); - chai.assert.isNotNull(toolboxDef); - checkSimpleToolbox(toolboxDef, toolboxJson); - }); - test('Category Toolbox: string', function() { - let toolbox = ''; - toolbox += ' '; - toolbox += ' '; - toolbox += ''; - - const toolboxJson = { - 'contents': [ - { - 'kind': 'category', - 'name': 'a', - }, - { - 'kind': 'category', - 'name': 'b', - }, - ], - }; - - const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(toolbox); - chai.assert.isNotNull(toolboxDef); - checkSimpleToolbox(toolboxDef, toolboxJson); - }); - }); - suite('parseFlyout', function() { - test('Array of Nodes', function() { - const xmlList = getXmlArray(); - const flyoutDef = Blockly.utils.toolbox.convertFlyoutDefToJsonArray(xmlList); - checkContents(flyoutDef, this.simpleToolboxJSON['contents']); - }); - test('NodeList', function() { - const nodeList = document.getElementById('toolbox-simple').childNodes; - const flyoutDef = Blockly.utils.toolbox.convertFlyoutDefToJsonArray(nodeList); - checkContents(flyoutDef, this.simpleToolboxJSON['contents']); - }); - test('List of json', function() { - const jsonList = this.simpleToolboxJSON['contents']; - const flyoutDef = Blockly.utils.toolbox.convertFlyoutDefToJsonArray(jsonList); - checkContents(flyoutDef, this.simpleToolboxJSON['contents']); - }); - test('Json', function() { - const flyoutDef = Blockly.utils.toolbox.convertFlyoutDefToJsonArray(this.simpleToolboxJSON); - checkContents(flyoutDef, this.simpleToolboxJSON['contents']); - }); - }); - }); - suite('Nested Categories', function() { - setup(function() { - this.toolbox = getInjectedToolbox(); - }); - teardown(function() { - this.toolbox.dispose(); - }); - test('Child categories visible if all ancestors expanded', function() { - this.toolbox.render(getDeeplyNestedJSON()); - const outerCategory = this.toolbox.contents_[0]; - const middleCategory = this.toolbox.contents_[1]; - const innerCategory = this.toolbox.contents_[2]; - - outerCategory.toggleExpanded(); - middleCategory.toggleExpanded(); - innerCategory.show(); - - chai.assert.isTrue(innerCategory.isVisible(), - 'All ancestors are expanded, so category should be visible'); - }); - test('Child categories not visible if any ancestor not expanded', function() { - this.toolbox.render(getDeeplyNestedJSON()); - const middleCategory = this.toolbox.contents_[1]; - const innerCategory = this.toolbox.contents_[2]; - - // Don't expand the outermost category - // Even though the direct parent of inner is expanded, it shouldn't be visible - // because all ancestor categories need to be visible, not just parent - middleCategory.toggleExpanded(); - innerCategory.show(); - - chai.assert.isFalse(innerCategory.isVisible(), - 'Not all ancestors are expanded, so category should not be visible'); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.toolbox'); + +const {defineStackBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {getBasicToolbox, getCategoryJSON, getChildItem, getCollapsibleItem, getDeeplyNestedJSON, getInjectedToolbox, getNonCollapsibleItem, getSeparator, getSimpleJson, getXmlArray} = goog.require('Blockly.test.helpers.toolboxDefinitions'); + + +suite('Toolbox', function() { + setup(function() { + sharedTestSetup.call(this); + defineStackBlock(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('init', function() { + setup(function() { + this.toolbox = getInjectedToolbox(); + }); + teardown(function() { + this.toolbox.dispose(); + }); + + test('Init called -> HtmlDiv is created', function() { + chai.assert.isDefined(this.toolbox.HtmlDiv); + }); + test('Init called -> HtmlDiv is inserted before parent node', function() { + const toolboxDiv = Blockly.common.getMainWorkspace().getInjectionDiv().childNodes[0]; + chai.assert.equal(toolboxDiv.className, + 'blocklyToolboxDiv blocklyNonSelectable'); + }); + test('Init called -> Toolbox is subscribed to background and foreground colour', function() { + const themeManager = this.toolbox.workspace_.getThemeManager(); + const themeManagerSpy = sinon.spy(themeManager, 'subscribe'); + const componentManager = this.toolbox.workspace_.getComponentManager(); + sinon.stub(componentManager, 'addComponent'); + this.toolbox.init(); + sinon.assert.calledWith(themeManagerSpy, this.toolbox.HtmlDiv, + 'toolboxBackgroundColour', 'background-color'); + sinon.assert.calledWith(themeManagerSpy, this.toolbox.HtmlDiv, + 'toolboxForegroundColour', 'color'); + }); + test('Init called -> Render is called', function() { + const renderSpy = sinon.spy(this.toolbox, 'render'); + const componentManager = this.toolbox.workspace_.getComponentManager(); + sinon.stub(componentManager, 'addComponent'); + this.toolbox.init(); + sinon.assert.calledOnce(renderSpy); + }); + test('Init called -> Flyout is initialized', function() { + const componentManager = this.toolbox.workspace_.getComponentManager(); + sinon.stub(componentManager, 'addComponent'); + this.toolbox.init(); + chai.assert.isDefined(this.toolbox.flyout_); + }); + }); + + suite('render', function() { + setup(function() { + this.toolbox = getInjectedToolbox(); + }); + teardown(function() { + this.toolbox.dispose(); + }); + test('Render called with valid toolboxDef -> Contents are created', function() { + const positionStub = sinon.stub(this.toolbox, 'position'); + this.toolbox.render({'contents': [ + {'kind': 'category', 'contents': []}, + {'kind': 'category', 'contents': []}, + ]}); + chai.assert.lengthOf(this.toolbox.contents_, 2); + sinon.assert.called(positionStub); + }); + // TODO: Uncomment once implemented. + test.skip('Toolbox definition with both blocks and categories -> Should throw an error', function() { + const toolbox = this.toolbox; + const badToolboxDef = [ + { + "kind": "block", + }, + { + "kind": "category", + }, + ]; + chai.assert.throws(function() { + toolbox.render({'contents': badToolboxDef}); + }, 'Toolbox cannot have both blocks and categories in the root level.'); + }); + // TODO: Uncomment once implemented. + test.skip('Expanded set to true for a non collapsible toolbox item -> Should open flyout', function() { + this.toolbox.render(this.toolboxXml); + const selectedNode = this.toolbox.tree_.children_[0]; + chai.assert.isTrue(selectedNode.selected_); + }); + test('JSON toolbox definition -> Should create toolbox with contents', function() { + const jsonDef = {'contents': [ + { + "kind": "category", + "contents": [ + { + "kind": "block", + "blockxml": 'FirstCategory-FirstBlock', + }, + { + "kind": "label", + "text": "Input/Output:", + "web-class": "ioLabel", + }, + { + "kind": "button", + "text": "insert", + "callbackkey": "insertConnectionStacks", + "web-class": "ioLabel", + }, + { + "kind": "sep", + "gap": "7", + }, + ], + }, + ]}; + this.toolbox.render(jsonDef); + chai.assert.lengthOf(this.toolbox.contents_, 1); + }); + }); + + suite('onClick_', function() { + setup(function() { + this.toolbox = getInjectedToolbox(); + }); + teardown(function() { + this.toolbox.dispose(); + }); + + test('Toolbox clicked -> Should close flyout', function() { + const hideChaffStub = sinon.stub( + Blockly.WorkspaceSvg.prototype, "hideChaff"); + const evt = new MouseEvent('click', {}); + this.toolbox.HtmlDiv.dispatchEvent(evt); + sinon.assert.calledOnce(hideChaffStub); + }); + test('Category clicked -> Should select category', function() { + const categoryXml = document.getElementsByClassName('blocklyTreeRow')[0]; + const evt = { + 'target': categoryXml, + }; + const item = this.toolbox.contentMap_[categoryXml.getAttribute('id')]; + const setSelectedSpy = sinon.spy(this.toolbox, 'setSelectedItem'); + const onClickSpy = sinon.spy(item, 'onClick'); + this.toolbox.onClick_(evt); + sinon.assert.calledOnce(setSelectedSpy); + sinon.assert.calledOnce(onClickSpy); + }); + }); + + suite('onKeyDown_', function() { + setup(function() { + this.toolbox = getInjectedToolbox(); + }); + teardown(function() { + this.toolbox.dispose(); + }); + + function createKeyDownMock(keyCode) { + return { + 'keyCode': keyCode, + 'preventDefault': function() {}, + }; + } + + function testCorrectFunctionCalled(toolbox, keyCode, funcName) { + const event = createKeyDownMock(keyCode); + const preventDefaultEvent = sinon.stub(event, 'preventDefault'); + const selectMethodStub = sinon.stub(toolbox, funcName); + selectMethodStub.returns(true); + toolbox.onKeyDown_(event); + sinon.assert.called(selectMethodStub); + sinon.assert.called(preventDefaultEvent); + } + + test('Down button is pushed -> Should call selectNext_', function() { + testCorrectFunctionCalled(this.toolbox, Blockly.utils.KeyCodes.DOWN, 'selectNext_', true); + }); + test('Up button is pushed -> Should call selectPrevious_', function() { + testCorrectFunctionCalled(this.toolbox, Blockly.utils.KeyCodes.UP, 'selectPrevious_', true); + }); + test('Left button is pushed -> Should call selectParent_', function() { + testCorrectFunctionCalled(this.toolbox, Blockly.utils.KeyCodes.LEFT, 'selectParent_', true); + }); + test('Right button is pushed -> Should call selectChild_', function() { + testCorrectFunctionCalled(this.toolbox, Blockly.utils.KeyCodes.RIGHT, 'selectChild_', true); + }); + test('Enter button is pushed -> Should toggle expandedd', function() { + this.toolbox.selectedItem_ = getCollapsibleItem(this.toolbox); + const toggleExpandedStub = sinon.stub(this.toolbox.selectedItem_, 'toggleExpanded'); + const event = createKeyDownMock(Blockly.utils.KeyCodes.ENTER); + const preventDefaultEvent = sinon.stub(event, 'preventDefault'); + this.toolbox.onKeyDown_(event); + sinon.assert.called(toggleExpandedStub); + sinon.assert.called(preventDefaultEvent); + }); + test('Enter button is pushed when no item is selected -> Should not call prevent default', function() { + this.toolbox.selectedItem_ = null; + const event = createKeyDownMock(Blockly.utils.KeyCodes.ENTER); + const preventDefaultEvent = sinon.stub(event, 'preventDefault'); + this.toolbox.onKeyDown_(event); + sinon.assert.notCalled(preventDefaultEvent); + }); + }); + + suite('Select Methods', function() { + setup(function() { + this.toolbox = getInjectedToolbox(); + }); + teardown(function() { + this.toolbox.dispose(); + }); + + suite('selectChild_', function() { + test('No item is selected -> Should not handle event', function() { + this.toolbox.selectedItem_ = null; + const handled = this.toolbox.selectChild_(); + chai.assert.isFalse(handled); + }); + test('Selected item is not collapsible -> Should not handle event', function() { + this.toolbox.selectedItem_ = getNonCollapsibleItem(this.toolbox); + const handled = this.toolbox.selectChild_(); + chai.assert.isFalse(handled); + }); + test('Selected item is collapsible -> Should expand', function() { + const collapsibleItem = getCollapsibleItem(this.toolbox); + this.toolbox.selectedItem_ = collapsibleItem; + const handled = this.toolbox.selectChild_(); + chai.assert.isTrue(handled); + chai.assert.isTrue(collapsibleItem.isExpanded()); + chai.assert.equal(this.toolbox.selectedItem_, collapsibleItem); + }); + + test('Selected item is expanded -> Should select child', function() { + const collapsibleItem = getCollapsibleItem(this.toolbox); + collapsibleItem.expanded_ = true; + const selectNextStub = sinon.stub(this.toolbox, 'selectNext_'); + this.toolbox.selectedItem_ = collapsibleItem; + const handled = this.toolbox.selectChild_(); + chai.assert.isTrue(handled); + sinon.assert.called(selectNextStub); + }); + }); + + suite('selectParent_', function() { + test('No item selected -> Should not handle event', function() { + this.toolbox.selectedItem_ = null; + const handled = this.toolbox.selectParent_(); + chai.assert.isFalse(handled); + }); + test('Selected item is expanded -> Should collapse', function() { + const collapsibleItem = getCollapsibleItem(this.toolbox); + collapsibleItem.expanded_ = true; + this.toolbox.selectedItem_ = collapsibleItem; + const handled = this.toolbox.selectParent_(); + chai.assert.isTrue(handled); + chai.assert.isFalse(collapsibleItem.isExpanded()); + chai.assert.equal(this.toolbox.selectedItem_, collapsibleItem); + }); + test('Selected item is not expanded -> Should get parent', function() { + const childItem = getChildItem(this.toolbox); + this.toolbox.selectedItem_ = childItem; + const handled = this.toolbox.selectParent_(); + chai.assert.isTrue(handled); + chai.assert.equal(this.toolbox.selectedItem_, childItem.getParent()); + }); + }); + + suite('selectNext_', function() { + test('No item is selected -> Should not handle event', function() { + this.toolbox.selectedItem_ = null; + const handled = this.toolbox.selectNext_(); + chai.assert.isFalse(handled); + }); + test('Next item is selectable -> Should select next item', function() { + const item = this.toolbox.contents_[0]; + this.toolbox.selectedItem_ = item; + const handled = this.toolbox.selectNext_(); + chai.assert.isTrue(handled); + chai.assert.equal(this.toolbox.selectedItem_, this.toolbox.contents_[1]); + }); + test('Selected item is last item -> Should not handle event', function() { + const item = this.toolbox.contents_[this.toolbox.contents_.length - 1]; + this.toolbox.selectedItem_ = item; + const handled = this.toolbox.selectNext_(); + chai.assert.isFalse(handled); + chai.assert.equal(this.toolbox.selectedItem_, item); + }); + test('Selected item is collapsed -> Should skip over its children', function() { + const item = getCollapsibleItem(this.toolbox); + const childItem = item.flyoutItems_[0]; + item.expanded_ = false; + this.toolbox.selectedItem_ = item; + const handled = this.toolbox.selectNext_(); + chai.assert.isTrue(handled); + chai.assert.notEqual(this.toolbox.selectedItem_, childItem); + }); + }); + + suite('selectPrevious', function() { + test('No item is selected -> Should not handle event', function() { + this.toolbox.selectedItem_ = null; + const handled = this.toolbox.selectPrevious_(); + chai.assert.isFalse(handled); + }); + test('Selected item is first item -> Should not handle event', function() { + const item = this.toolbox.contents_[0]; + this.toolbox.selectedItem_ = item; + const handled = this.toolbox.selectPrevious_(); + chai.assert.isFalse(handled); + chai.assert.equal(this.toolbox.selectedItem_, item); + }); + test('Previous item is selectable -> Should select previous item', function() { + const item = this.toolbox.contents_[1]; + const prevItem = this.toolbox.contents_[0]; + this.toolbox.selectedItem_ = item; + const handled = this.toolbox.selectPrevious_(); + chai.assert.isTrue(handled); + chai.assert.equal(this.toolbox.selectedItem_, prevItem); + }); + test('Previous item is collapsed -> Should skip over children of the previous item', function() { + const childItem = getChildItem(this.toolbox); + const parentItem = childItem.getParent(); + const parentIdx = this.toolbox.contents_.indexOf(parentItem); + // Gets the item after the parent. + const item = this.toolbox.contents_[parentIdx + 1]; + this.toolbox.selectedItem_ = item; + const handled = this.toolbox.selectPrevious_(); + chai.assert.isTrue(handled); + chai.assert.notEqual(this.toolbox.selectedItem_, childItem); + }); + }); + }); + + suite('setSelectedItem', function() { + setup(function() { + this.toolbox = getInjectedToolbox(); + }); + teardown(function() { + this.toolbox.dispose(); + }); + + function setupSetSelected(toolbox, oldItem, newItem) { + toolbox.selectedItem_ = oldItem; + const newItemStub = sinon.stub(newItem, 'setSelected'); + toolbox.setSelectedItem(newItem); + return newItemStub; + } + + test('Selected item and new item are null -> Should not update the flyout', function() { + this.selectedItem_ = null; + this.toolbox.setSelectedItem(null); + const updateFlyoutStub = sinon.stub(this.toolbox, 'updateFlyout_'); + sinon.assert.notCalled(updateFlyoutStub); + }); + test('New item is not selectable -> Should not update the flyout', function() { + const separator = getSeparator(this.toolbox); + this.toolbox.setSelectedItem(separator); + const updateFlyoutStub = sinon.stub(this.toolbox, 'updateFlyout_'); + sinon.assert.notCalled(updateFlyoutStub); + }); + test('Select an item with no children -> Should select item', function() { + const oldItem = getCollapsibleItem(this.toolbox); + const oldItemStub = sinon.stub(oldItem, 'setSelected'); + const newItem = getNonCollapsibleItem(this.toolbox); + const newItemStub = setupSetSelected(this.toolbox, oldItem, newItem); + sinon.assert.calledWith(oldItemStub, false); + sinon.assert.calledWith(newItemStub, true); + }); + test('Select previously selected item with no children -> Should deselect', function() { + const newItem = getNonCollapsibleItem(this.toolbox); + const newItemStub = setupSetSelected(this.toolbox, newItem, newItem); + sinon.assert.calledWith(newItemStub, false); + }); + test('Select collapsible item -> Should select item', function() { + const newItem = getCollapsibleItem(this.toolbox); + const newItemStub = setupSetSelected(this.toolbox, null, newItem); + sinon.assert.calledWith(newItemStub, true); + }); + test('Select previously selected collapsible item -> Should not deselect', function() { + const newItem = getCollapsibleItem(this.toolbox); + const newItemStub = setupSetSelected(this.toolbox, newItem, newItem); + sinon.assert.notCalled(newItemStub); + }); + }); + + suite('updateFlyout_', function() { + setup(function() { + this.toolbox = getInjectedToolbox(); + }); + teardown(function() { + this.toolbox.dispose(); + }); + + function testHideFlyout(toolbox, oldItem, newItem) { + const updateFlyoutStub = sinon.stub(toolbox.flyout_, 'hide'); + toolbox.updateFlyout_(oldItem, newItem); + sinon.assert.called(updateFlyoutStub); + } + + test('Select previously selected item -> Should close flyout', function() { + const newItem = getNonCollapsibleItem(this.toolbox); + testHideFlyout(this.toolbox, newItem, newItem); + }); + test('No new item -> Should close flyout', function() { + testHideFlyout(this.toolbox, null, null); + }); + test('Old item but no new item -> Should close flyout', function() { + const oldItem = getNonCollapsibleItem(this.toolbox); + testHideFlyout(this.toolbox, oldItem, null); + }); + test('Select collapsible item -> Should close flyout', function() { + const newItem = getCollapsibleItem(this.toolbox); + testHideFlyout(this.toolbox, null, newItem); + }); + test('Select selectable item -> Should open flyout', function() { + const showFlyoutstub = sinon.stub(this.toolbox.flyout_, 'show'); + const scrollToStartFlyout = sinon.stub(this.toolbox.flyout_, 'scrollToStart'); + const newItem = getNonCollapsibleItem(this.toolbox); + this.toolbox.updateFlyout_(null, newItem); + sinon.assert.called(showFlyoutstub); + sinon.assert.called(scrollToStartFlyout); + }); + }); + + suite('position', function() { + setup(function() { + this.toolbox = getBasicToolbox(); + const metricsStub = sinon.stub(this.toolbox.workspace_, 'getMetrics'); + metricsStub.returns({}); + }); + + function checkHorizontalToolbox(toolbox) { + chai.assert.equal(toolbox.HtmlDiv.style.left, '0px', 'Check left position'); + chai.assert.equal(toolbox.HtmlDiv.style.height, 'auto', 'Check height'); + chai.assert.equal(toolbox.HtmlDiv.style.width, '100%', 'Check width'); + chai.assert.equal(toolbox.height_, toolbox.HtmlDiv.offsetHeight, 'Check height'); + } + function checkVerticalToolbox(toolbox) { + chai.assert.equal(toolbox.HtmlDiv.style.height, '100%', 'Check height'); + chai.assert.equal(toolbox.width_, toolbox.HtmlDiv.offsetWidth, 'Check width'); + } + test('HtmlDiv is not created -> Should not resize', function() { + const toolbox = this.toolbox; + toolbox.HtmlDiv = null; + toolbox.horizontalLayout_ = true; + toolbox.position(); + chai.assert.equal(toolbox.height_, 0); + }); + test('Horizontal toolbox at top -> Should anchor horizontal toolbox to top', function() { + const toolbox = this.toolbox; + toolbox.toolboxPosition = Blockly.utils.toolbox.Position.TOP; + toolbox.horizontalLayout_ = true; + toolbox.position(); + checkHorizontalToolbox(toolbox); + chai.assert.equal(toolbox.HtmlDiv.style.top, '0px', 'Check top'); + }); + test('Horizontal toolbox at bottom -> Should anchor horizontal toolbox to bottom', function() { + const toolbox = this.toolbox; + toolbox.toolboxPosition = Blockly.utils.toolbox.Position.BOTTOM; + toolbox.horizontalLayout_ = true; + toolbox.position(); + checkHorizontalToolbox(toolbox); + chai.assert.equal(toolbox.HtmlDiv.style.bottom, '0px', 'Check bottom'); + }); + test('Vertical toolbox at right -> Should anchor to right', function() { + const toolbox = this.toolbox; + toolbox.toolboxPosition = Blockly.utils.toolbox.Position.RIGHT; + toolbox.horizontalLayout_ = false; + toolbox.position(); + chai.assert.equal(toolbox.HtmlDiv.style.right, '0px', 'Check right'); + checkVerticalToolbox(toolbox); + }); + test('Vertical toolbox at left -> Should anchor to left', function() { + const toolbox = this.toolbox; + toolbox.toolboxPosition = Blockly.utils.toolbox.Position.LEFT; + toolbox.horizontalLayout_ = false; + toolbox.position(); + chai.assert.equal(toolbox.HtmlDiv.style.left, '0px', 'Check left'); + checkVerticalToolbox(toolbox); + }); + }); + + suite('parseMethods', function() { + setup(function() { + this.categoryToolboxJSON = getCategoryJSON(); + this.simpleToolboxJSON = getSimpleJson(); + }); + + function checkValue(actual, expected, value) { + const actualVal = actual[value]; + const expectedVal = expected[value]; + chai.assert.equal(actualVal.toUpperCase(), expectedVal.toUpperCase(), 'Checking value for: ' + value); + } + function checkContents(actualContents, expectedContents) { + chai.assert.equal(actualContents.length, expectedContents.length); + for (let i = 0; i < actualContents.length; i++) { + // TODO: Check the values as well as all the keys. + chai.assert.containsAllKeys(actualContents[i], Object.keys(expectedContents[i])); + } + } + function checkCategory(actual, expected) { + checkValue(actual, expected, 'kind'); + checkValue(actual, expected, 'name'); + chai.assert.deepEqual(actual['cssconfig'], expected['cssconfig']); + checkContents(actual.contents, expected.contents); + } + function checkCategoryToolbox(actual, expected) { + const actualContents = actual['contents']; + const expectedContents = expected['contents']; + chai.assert.equal(actualContents.length, expectedContents.length); + for (let i = 0; i < expected.length; i++) { + checkCategory(actualContents[i], expected[i]); + } + } + function checkSimpleToolbox(actual, expected) { + checkContents(actual['contents'], expected['contents']); + } + + suite('parseToolbox', function() { + test('Category Toolbox: JSON', function() { + const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(this.categoryToolboxJSON); + chai.assert.isNotNull(toolboxDef); + checkCategoryToolbox(toolboxDef, this.categoryToolboxJSON); + }); + test('Simple Toolbox: JSON', function() { + const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(this.simpleToolboxJSON); + chai.assert.isNotNull(toolboxDef); + checkSimpleToolbox(toolboxDef, this.simpleToolboxJSON); + }); + test('Category Toolbox: xml', function() { + const toolboxXml = document.getElementById('toolbox-categories'); + const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(toolboxXml); + chai.assert.isNotNull(toolboxDef); + checkCategoryToolbox(toolboxDef, this.categoryToolboxJSON); + }); + test('Simple Toolbox: xml', function() { + const toolboxXml = document.getElementById('toolbox-simple'); + const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(toolboxXml); + chai.assert.isNotNull(toolboxDef); + checkSimpleToolbox(toolboxDef, this.simpleToolboxJSON); + }); + test('Simple Toolbox: string', function() { + let toolbox = ''; + toolbox += ' '; + toolbox += ' '; + toolbox += ''; + + const toolboxJson = { + 'contents': [ + { + 'kind': 'block', + 'type': 'controls_if', + }, + { + 'kind': 'block', + 'type': 'controls_if', + }, + ], + }; + + const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(toolbox); + chai.assert.isNotNull(toolboxDef); + checkSimpleToolbox(toolboxDef, toolboxJson); + }); + test('Category Toolbox: string', function() { + let toolbox = ''; + toolbox += ' '; + toolbox += ' '; + toolbox += ''; + + const toolboxJson = { + 'contents': [ + { + 'kind': 'category', + 'name': 'a', + }, + { + 'kind': 'category', + 'name': 'b', + }, + ], + }; + + const toolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(toolbox); + chai.assert.isNotNull(toolboxDef); + checkSimpleToolbox(toolboxDef, toolboxJson); + }); + }); + suite('parseFlyout', function() { + test('Array of Nodes', function() { + const xmlList = getXmlArray(); + const flyoutDef = Blockly.utils.toolbox.convertFlyoutDefToJsonArray(xmlList); + checkContents(flyoutDef, this.simpleToolboxJSON['contents']); + }); + test('NodeList', function() { + const nodeList = document.getElementById('toolbox-simple').childNodes; + const flyoutDef = Blockly.utils.toolbox.convertFlyoutDefToJsonArray(nodeList); + checkContents(flyoutDef, this.simpleToolboxJSON['contents']); + }); + test('List of json', function() { + const jsonList = this.simpleToolboxJSON['contents']; + const flyoutDef = Blockly.utils.toolbox.convertFlyoutDefToJsonArray(jsonList); + checkContents(flyoutDef, this.simpleToolboxJSON['contents']); + }); + test('Json', function() { + const flyoutDef = Blockly.utils.toolbox.convertFlyoutDefToJsonArray(this.simpleToolboxJSON); + checkContents(flyoutDef, this.simpleToolboxJSON['contents']); + }); + }); + }); + suite('Nested Categories', function() { + setup(function() { + this.toolbox = getInjectedToolbox(); + }); + teardown(function() { + this.toolbox.dispose(); + }); + test('Child categories visible if all ancestors expanded', function() { + this.toolbox.render(getDeeplyNestedJSON()); + const outerCategory = this.toolbox.contents_[0]; + const middleCategory = this.toolbox.contents_[1]; + const innerCategory = this.toolbox.contents_[2]; + + outerCategory.toggleExpanded(); + middleCategory.toggleExpanded(); + innerCategory.show(); + + chai.assert.isTrue(innerCategory.isVisible(), + 'All ancestors are expanded, so category should be visible'); + }); + test('Child categories not visible if any ancestor not expanded', function() { + this.toolbox.render(getDeeplyNestedJSON()); + const middleCategory = this.toolbox.contents_[1]; + const innerCategory = this.toolbox.contents_[2]; + + // Don't expand the outermost category + // Even though the direct parent of inner is expanded, it shouldn't be visible + // because all ancestor categories need to be visible, not just parent + middleCategory.toggleExpanded(); + innerCategory.show(); + + chai.assert.isFalse(innerCategory.isVisible(), + 'Not all ancestors are expanded, so category should not be visible'); + }); + }); +}); diff --git a/tests/mocha/tooltip_test.js b/tests/mocha/tooltip_test.js index 5483ea3903f..3bab8445fea 100644 --- a/tests/mocha/tooltip_test.js +++ b/tests/mocha/tooltip_test.js @@ -1,269 +1,269 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.tooltip'); - -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Tooltip', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - - Blockly.defineBlocksWithJsonArray([ - { - 'type': 'test_block', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_input', - 'name': 'FIELD', - }, - ], - }, - ]); - }); - - teardown(function() { - delete Blockly.Blocks['test_block']; - sharedTestTeardown.call(this); - }); - - suite('Custom Tooltip', function() { - setup(function() { - this.renderedWorkspace = Blockly.inject('blocklyDiv', {}); - }); - - teardown(function() { - workspaceTeardown.call(this, this.renderedWorkspace); - }); - - test('Custom function is called', function() { - // Custom tooltip function is registered and should be called when mouse - // events are fired. - let wasCalled = false; - const customFn = function() { - wasCalled = true; - }; - Blockly.Tooltip.setCustomTooltip(customFn); - - this.block = this.renderedWorkspace.newBlock('test_block'); - this.block.setTooltip('Test Tooltip'); - - // Fire pointer events directly on the relevant SVG. - // Note the 'pointerover', due to the events registered through - // Blockly.browserEvents.bind being registered as pointer events rather - // than mouse events. Mousemove event is registered directly on the - // element rather than through browserEvents. - this.block.pathObject.svgPath.dispatchEvent( - new MouseEvent('pointerover')); - this.block.pathObject.svgPath.dispatchEvent(new MouseEvent('mousemove')); - this.clock.runAll(); - - chai.assert.isTrue( - wasCalled, 'Expected custom tooltip function to have been called'); - }); - }); - - suite('set/getTooltip', function() { - const tooltipText = 'testTooltip'; - - function assertTooltip(obj) { - chai.assert.equal(obj.getTooltip(), tooltipText); - } - - function setStringTooltip(obj) { - obj.setTooltip(tooltipText); - } - - function setFunctionTooltip(obj) { - obj.setTooltip(() => tooltipText); - } - - function setNestedFunctionTooltip(obj) { - function nestFunction(fn, count) { - if (!count) { - return fn; - } - return () => nestFunction(fn, --count); - } - obj.setTooltip(nestFunction(() => tooltipText, 5)); - } - - function setFunctionReturningObjectTooltip(obj) { - obj.setTooltip(() => { - return { - tooltip: tooltipText, - }; - }); - } - - function setObjectTooltip(obj) { - obj.setTooltip({tooltip: tooltipText}); - } - - suite('Headless Blocks', function() { - setup(function() { - this.block = this.workspace.newBlock('test_block'); - }); - - test('String', function() { - setStringTooltip(this.block); - assertTooltip(this.block); - }); - - test('Function', function() { - setFunctionTooltip(this.block); - assertTooltip(this.block); - }); - - test('Nested Function', function() { - setNestedFunctionTooltip(this.block); - assertTooltip(this.block); - }); - - test('Function returning object', function() { - setFunctionReturningObjectTooltip(this.block); - chai.assert.throws( - this.block.getTooltip.bind(this.block), - 'Tooltip function must return a string.'); - }); - - test('Object', function() { - setObjectTooltip(this.block); - assertTooltip(this.block); - }); - }); - - suite('Rendered Blocks', function() { - setup(function() { - this.renderedWorkspace = Blockly.inject('blocklyDiv'); - this.block = this.renderedWorkspace.newBlock('test_block'); - this.block.initSvg(); - this.block.render(); - }); - - teardown(function() { - workspaceTeardown.call(this, this.renderedWorkspace); - }); - - test('String', function() { - setStringTooltip(this.block); - assertTooltip(this.block); - }); - - test('Function', function() { - setFunctionTooltip(this.block); - assertTooltip(this.block); - }); - - test('Nested Function', function() { - setNestedFunctionTooltip(this.block); - assertTooltip(this.block); - }); - - test('Function returning object', function() { - setFunctionReturningObjectTooltip(this.block); - chai.assert.throws( - this.block.getTooltip.bind(this.block), - 'Tooltip function must return a string.'); - }); - - test('Object', function() { - setObjectTooltip(this.block); - assertTooltip(this.block); - }); - }); - - suite('Headless Fields', function() { - setup(function() { - this.block = this.workspace.newBlock('test_block'); - this.field = this.block.getField('FIELD'); - }); - - test('String', function() { - setStringTooltip(this.field); - assertTooltip(this.field); - }); - - test('Function', function() { - setFunctionTooltip(this.field); - assertTooltip(this.field); - }); - - test('Nested Function', function() { - setNestedFunctionTooltip(this.field); - assertTooltip(this.field); - }); - - test('Function returning object', function() { - setFunctionReturningObjectTooltip(this.field); - chai.assert.throws( - this.field.getTooltip.bind(this.field), - 'Tooltip function must return a string.'); - }); - - test('Object', function() { - setObjectTooltip(this.field); - assertTooltip(this.field); - }); - - test('Null', function() { - setStringTooltip(this.block); - this.field.setTooltip(null); - assertTooltip(this.field); - }); - }); - - suite('Rendered Fields', function() { - setup(function() { - this.renderedWorkspace = Blockly.inject('blocklyDiv'); - this.block = this.renderedWorkspace.newBlock('test_block'); - this.block.initSvg(); - this.block.render(); - this.field = this.block.getField('FIELD'); - }); - - teardown(function() { - workspaceTeardown.call(this, this.renderedWorkspace); - }); - - test('String', function() { - setStringTooltip(this.field); - assertTooltip(this.field); - }); - - test('Function', function() { - setFunctionTooltip(this.field); - assertTooltip(this.field); - }); - - test('Nested Function', function() { - setNestedFunctionTooltip(this.field); - assertTooltip(this.field); - }); - - test('Function returning object', function() { - setFunctionReturningObjectTooltip(this.field); - chai.assert.throws( - this.field.getTooltip.bind(this.field), - 'Tooltip function must return a string.'); - }); - - test('Object', function() { - setObjectTooltip(this.field); - assertTooltip(this.field); - }); - - test('Null', function() { - setStringTooltip(this.block); - this.field.setTooltip(null); - assertTooltip(this.field); - }); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.tooltip'); + +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Tooltip', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + + Blockly.defineBlocksWithJsonArray([ + { + 'type': 'test_block', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_input', + 'name': 'FIELD', + }, + ], + }, + ]); + }); + + teardown(function() { + delete Blockly.Blocks['test_block']; + sharedTestTeardown.call(this); + }); + + suite('Custom Tooltip', function() { + setup(function() { + this.renderedWorkspace = Blockly.inject('blocklyDiv', {}); + }); + + teardown(function() { + workspaceTeardown.call(this, this.renderedWorkspace); + }); + + test('Custom function is called', function() { + // Custom tooltip function is registered and should be called when mouse + // events are fired. + let wasCalled = false; + const customFn = function() { + wasCalled = true; + }; + Blockly.Tooltip.setCustomTooltip(customFn); + + this.block = this.renderedWorkspace.newBlock('test_block'); + this.block.setTooltip('Test Tooltip'); + + // Fire pointer events directly on the relevant SVG. + // Note the 'pointerover', due to the events registered through + // Blockly.browserEvents.bind being registered as pointer events rather + // than mouse events. Mousemove event is registered directly on the + // element rather than through browserEvents. + this.block.pathObject.svgPath.dispatchEvent( + new MouseEvent('pointerover')); + this.block.pathObject.svgPath.dispatchEvent(new MouseEvent('mousemove')); + this.clock.runAll(); + + chai.assert.isTrue( + wasCalled, 'Expected custom tooltip function to have been called'); + }); + }); + + suite('set/getTooltip', function() { + const tooltipText = 'testTooltip'; + + function assertTooltip(obj) { + chai.assert.equal(obj.getTooltip(), tooltipText); + } + + function setStringTooltip(obj) { + obj.setTooltip(tooltipText); + } + + function setFunctionTooltip(obj) { + obj.setTooltip(() => tooltipText); + } + + function setNestedFunctionTooltip(obj) { + function nestFunction(fn, count) { + if (!count) { + return fn; + } + return () => nestFunction(fn, --count); + } + obj.setTooltip(nestFunction(() => tooltipText, 5)); + } + + function setFunctionReturningObjectTooltip(obj) { + obj.setTooltip(() => { + return { + tooltip: tooltipText, + }; + }); + } + + function setObjectTooltip(obj) { + obj.setTooltip({tooltip: tooltipText}); + } + + suite('Headless Blocks', function() { + setup(function() { + this.block = this.workspace.newBlock('test_block'); + }); + + test('String', function() { + setStringTooltip(this.block); + assertTooltip(this.block); + }); + + test('Function', function() { + setFunctionTooltip(this.block); + assertTooltip(this.block); + }); + + test('Nested Function', function() { + setNestedFunctionTooltip(this.block); + assertTooltip(this.block); + }); + + test('Function returning object', function() { + setFunctionReturningObjectTooltip(this.block); + chai.assert.throws( + this.block.getTooltip.bind(this.block), + 'Tooltip function must return a string.'); + }); + + test('Object', function() { + setObjectTooltip(this.block); + assertTooltip(this.block); + }); + }); + + suite('Rendered Blocks', function() { + setup(function() { + this.renderedWorkspace = Blockly.inject('blocklyDiv'); + this.block = this.renderedWorkspace.newBlock('test_block'); + this.block.initSvg(); + this.block.render(); + }); + + teardown(function() { + workspaceTeardown.call(this, this.renderedWorkspace); + }); + + test('String', function() { + setStringTooltip(this.block); + assertTooltip(this.block); + }); + + test('Function', function() { + setFunctionTooltip(this.block); + assertTooltip(this.block); + }); + + test('Nested Function', function() { + setNestedFunctionTooltip(this.block); + assertTooltip(this.block); + }); + + test('Function returning object', function() { + setFunctionReturningObjectTooltip(this.block); + chai.assert.throws( + this.block.getTooltip.bind(this.block), + 'Tooltip function must return a string.'); + }); + + test('Object', function() { + setObjectTooltip(this.block); + assertTooltip(this.block); + }); + }); + + suite('Headless Fields', function() { + setup(function() { + this.block = this.workspace.newBlock('test_block'); + this.field = this.block.getField('FIELD'); + }); + + test('String', function() { + setStringTooltip(this.field); + assertTooltip(this.field); + }); + + test('Function', function() { + setFunctionTooltip(this.field); + assertTooltip(this.field); + }); + + test('Nested Function', function() { + setNestedFunctionTooltip(this.field); + assertTooltip(this.field); + }); + + test('Function returning object', function() { + setFunctionReturningObjectTooltip(this.field); + chai.assert.throws( + this.field.getTooltip.bind(this.field), + 'Tooltip function must return a string.'); + }); + + test('Object', function() { + setObjectTooltip(this.field); + assertTooltip(this.field); + }); + + test('Null', function() { + setStringTooltip(this.block); + this.field.setTooltip(null); + assertTooltip(this.field); + }); + }); + + suite('Rendered Fields', function() { + setup(function() { + this.renderedWorkspace = Blockly.inject('blocklyDiv'); + this.block = this.renderedWorkspace.newBlock('test_block'); + this.block.initSvg(); + this.block.render(); + this.field = this.block.getField('FIELD'); + }); + + teardown(function() { + workspaceTeardown.call(this, this.renderedWorkspace); + }); + + test('String', function() { + setStringTooltip(this.field); + assertTooltip(this.field); + }); + + test('Function', function() { + setFunctionTooltip(this.field); + assertTooltip(this.field); + }); + + test('Nested Function', function() { + setNestedFunctionTooltip(this.field); + assertTooltip(this.field); + }); + + test('Function returning object', function() { + setFunctionReturningObjectTooltip(this.field); + chai.assert.throws( + this.field.getTooltip.bind(this.field), + 'Tooltip function must return a string.'); + }); + + test('Object', function() { + setObjectTooltip(this.field); + assertTooltip(this.field); + }); + + test('Null', function() { + setStringTooltip(this.block); + this.field.setTooltip(null); + assertTooltip(this.field); + }); + }); + }); +}); diff --git a/tests/mocha/trashcan_test.js b/tests/mocha/trashcan_test.js index c57d6cb6f8a..6f022c4a172 100644 --- a/tests/mocha/trashcan_test.js +++ b/tests/mocha/trashcan_test.js @@ -1,321 +1,321 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.trashcan'); - -const {assertEventFired, assertEventNotFired} = goog.require('Blockly.test.helpers.events'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {defineBasicBlockWithField, defineMutatorBlocks, defineRowBlock, defineStackBlock, defineStatementBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const eventUtils = goog.require('Blockly.Events.utils'); -const {simulateClick} = goog.require('Blockly.test.helpers.userInput'); - - -suite("Trashcan", function() { - function fireDeleteEvent(workspace, xmlString) { - let xml = Blockly.Xml.textToDom( - '' + - xmlString + ''); - xml = xml.children[0]; - const block = Blockly.Xml.domToBlock(xml, workspace); - const event = new Blockly.Events.BlockDelete(block); - eventUtils.fire(event); - } - function fireNonDeleteEvent(workspace, oldXml) { - const event = new Blockly.Events.Abstract(); - event.type = 'test_field_block'; - event.workspaceId = workspace.id; - if (oldXml) { - event.oldXml = oldXml; - } - eventUtils.fire(/** @type {Blockly.Events.Abstract} */ event); - } - - setup(function() { - sharedTestSetup.call(this); - defineBasicBlockWithField(); - defineRowBlock(); - defineRowBlock('row_block2'); - defineStatementBlock(); - defineStatementBlock('statement_block2'); - defineStackBlock(); - defineStackBlock('stack_block2'); - defineMutatorBlocks(); - this.workspace = Blockly.inject('blocklyDiv', - {'trashcan': true, 'maxTrashcanContents': Infinity}); - this.trashcan = this.workspace.trashcan; - }); - teardown(function() { - sharedTestTeardown.call(this); - Blockly.Extensions.unregister('xml_mutator'); - Blockly.Extensions.unregister('jso_mutator'); - }); - - suite("Events", function() { - test("Delete", function() { - fireDeleteEvent(this.workspace, ''); - chai.assert.equal(this.trashcan.contents_.length, 1); - }); - test("Non-Delete", function() { - fireNonDeleteEvent(this.workspace); - chai.assert.equal(this.trashcan.contents_.length, 0); - }); - test("Non-Delete w/ oldXml", function() { - let xml = Blockly.Xml.textToDom( - '' + - ' ' + - '' - ); - xml = xml.children[0]; - fireNonDeleteEvent(this.workspace, xml); - chai.assert.equal(this.trashcan.contents_.length, 0); - }); - test("Shadow Delete", function() { - fireDeleteEvent(this.workspace, ''); - chai.assert.equal(this.trashcan.contents_.length, 0); - }); - test("Click without contents - fires workspace click", function() { - simulateClick(this.trashcan.svgGroup_); - - assertEventNotFired( - this.eventsFireStub, Blockly.Events.TrashcanOpen, {type: eventUtils.CLICK}); - assertEventFired( - this.eventsFireStub, Blockly.Events.Click, {targetType: 'workspace', type: eventUtils.CLICK}, - this.workspace.id, null); - }); - test("Click with contents - fires trashcanOpen", function() { - fireDeleteEvent(this.workspace, ''); - chai.assert.equal(this.trashcan.contents_.length, 1); - // Stub flyout interaction. - const showFlyoutStub = sinon.stub(this.trashcan.flyout, "show"); - - simulateClick(this.trashcan.svgGroup_); - - sinon.assert.calledOnce(showFlyoutStub); - - assertEventFired( - this.eventsFireStub, Blockly.Events.TrashcanOpen, - {isOpen: true, type: eventUtils.TRASHCAN_OPEN}, this.workspace.id); - assertEventNotFired( - this.eventsFireStub, Blockly.Events.Click, {type: eventUtils.TRASHCAN_OPEN}); - }); - test("Click outside trashcan - fires trashcanClose", function() { - sinon.stub(this.trashcan.flyout, 'isVisible').returns(true); - // Stub flyout interaction. - const hideFlyoutStub = sinon.stub(this.trashcan.flyout, "hide"); - - simulateClick(this.workspace.svgGroup_); - - sinon.assert.calledOnce(hideFlyoutStub); - - assertEventFired( - this.eventsFireStub, Blockly.Events.TrashcanOpen, - {isOpen: false, type: eventUtils.TRASHCAN_OPEN}, this.workspace.id); - assertEventFired( - this.eventsFireStub, Blockly.Events.Click, {targetType: 'workspace', type: eventUtils.CLICK}, - this.workspace.id, null); - }); - }); - suite("Unique Contents", function() { - test("Simple", function() { - fireDeleteEvent(this.workspace, ''); - fireDeleteEvent(this.workspace, ''); - chai.assert.equal(this.trashcan.contents_.length, 1); - }); - test("Different Coords", function() { - fireDeleteEvent( - this.workspace, ''); - fireDeleteEvent( - this.workspace, ''); - chai.assert.equal(this.trashcan.contents_.length, 1); - }); - test("Different IDs", function() { - fireDeleteEvent( - this.workspace, ''); - fireDeleteEvent( - this.workspace, ''); - chai.assert.equal(this.trashcan.contents_.length, 1); - }); - test("No Disabled - Disabled True", function() { - fireDeleteEvent( - this.workspace, ''); - fireDeleteEvent( - this.workspace, ''); - // Disabled tags get removed because disabled blocks aren't allowed to - // be dragged from flyouts. See #2239 and #3243. - chai.assert.equal(this.trashcan.contents_.length, 1); - }); - test("Different Field Values", function() { - fireDeleteEvent(this.workspace, - '' + - ' dummy_value1' + - '' - ); - fireDeleteEvent(this.workspace, - '' + - ' dummy_value2' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - test("No Values - Values", function() { - fireDeleteEvent(this.workspace, ''); - fireDeleteEvent(this.workspace, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - test("Different Value Blocks", function() { - fireDeleteEvent(this.workspace, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - fireDeleteEvent(this.workspace, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - test("No Statements - Statements", function() { - fireDeleteEvent(this.workspace, ''); - fireDeleteEvent(this.workspace, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - test("Different Statement Blocks", function() { - fireDeleteEvent(this.workspace, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - fireDeleteEvent(this.workspace, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - test("No Next - Next", function() { - fireDeleteEvent(this.workspace, ''); - fireDeleteEvent(this.workspace, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - test("Different Next Blocks", function() { - fireDeleteEvent(this.workspace, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - fireDeleteEvent(this.workspace, - '' + - ' ' + - ' ' + - ' ' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - test("No Comment - Comment", function() { - fireDeleteEvent(this.workspace, ''); - fireDeleteEvent(this.workspace, - '' + - ' comment_text' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - test("Different Comment Text", function() { - fireDeleteEvent(this.workspace, - '' + - ' comment_text1' + - '' - ); - fireDeleteEvent(this.workspace, - '' + - ' comment_text2' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - test("Different Comment Size", function() { - fireDeleteEvent(this.workspace, - '' + - ' comment_text' + - '' - ); - fireDeleteEvent(this.workspace, - '' + - ' comment_text' + - '' - ); - // h & w tags are removed b/c the blocks appear the same. - chai.assert.equal(this.trashcan.contents_.length, 1); - }); - test("Different Comment Pinned", function() { - fireDeleteEvent(this.workspace, - '' + - ' comment_text' + - '' - ); - fireDeleteEvent(this.workspace, - '' + - ' comment_text' + - '' - ); - // pinned tags are removed b/c the blocks appear the same. - chai.assert.equal(this.trashcan.contents_.length, 1); - }); - test("Different Mutator", function() { - fireDeleteEvent(this.workspace, - '' + - ' ' + - '' - ); - fireDeleteEvent(this.workspace, - '' + - ' ' + - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 2); - }); - }); - suite("Max Contents", function() { - test("Max 0", function() { - this.workspace.options.maxTrashcanContents = 0; - fireDeleteEvent(this.workspace, - '' - ); - chai.assert.equal(this.trashcan.contents_.length, 0); - this.workspace.options.maxTrashcanContents = Infinity; - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.trashcan'); + +const {assertEventFired, assertEventNotFired} = goog.require('Blockly.test.helpers.events'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {defineBasicBlockWithField, defineMutatorBlocks, defineRowBlock, defineStackBlock, defineStatementBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const eventUtils = goog.require('Blockly.Events.utils'); +const {simulateClick} = goog.require('Blockly.test.helpers.userInput'); + + +suite("Trashcan", function() { + function fireDeleteEvent(workspace, xmlString) { + let xml = Blockly.Xml.textToDom( + '' + + xmlString + ''); + xml = xml.children[0]; + const block = Blockly.Xml.domToBlock(xml, workspace); + const event = new Blockly.Events.BlockDelete(block); + eventUtils.fire(event); + } + function fireNonDeleteEvent(workspace, oldXml) { + const event = new Blockly.Events.Abstract(); + event.type = 'test_field_block'; + event.workspaceId = workspace.id; + if (oldXml) { + event.oldXml = oldXml; + } + eventUtils.fire(/** @type {Blockly.Events.Abstract} */ event); + } + + setup(function() { + sharedTestSetup.call(this); + defineBasicBlockWithField(); + defineRowBlock(); + defineRowBlock('row_block2'); + defineStatementBlock(); + defineStatementBlock('statement_block2'); + defineStackBlock(); + defineStackBlock('stack_block2'); + defineMutatorBlocks(); + this.workspace = Blockly.inject('blocklyDiv', + {'trashcan': true, 'maxTrashcanContents': Infinity}); + this.trashcan = this.workspace.trashcan; + }); + teardown(function() { + sharedTestTeardown.call(this); + Blockly.Extensions.unregister('xml_mutator'); + Blockly.Extensions.unregister('jso_mutator'); + }); + + suite("Events", function() { + test("Delete", function() { + fireDeleteEvent(this.workspace, ''); + chai.assert.equal(this.trashcan.contents_.length, 1); + }); + test("Non-Delete", function() { + fireNonDeleteEvent(this.workspace); + chai.assert.equal(this.trashcan.contents_.length, 0); + }); + test("Non-Delete w/ oldXml", function() { + let xml = Blockly.Xml.textToDom( + '' + + ' ' + + '' + ); + xml = xml.children[0]; + fireNonDeleteEvent(this.workspace, xml); + chai.assert.equal(this.trashcan.contents_.length, 0); + }); + test("Shadow Delete", function() { + fireDeleteEvent(this.workspace, ''); + chai.assert.equal(this.trashcan.contents_.length, 0); + }); + test("Click without contents - fires workspace click", function() { + simulateClick(this.trashcan.svgGroup_); + + assertEventNotFired( + this.eventsFireStub, Blockly.Events.TrashcanOpen, {type: eventUtils.CLICK}); + assertEventFired( + this.eventsFireStub, Blockly.Events.Click, {targetType: 'workspace', type: eventUtils.CLICK}, + this.workspace.id, null); + }); + test("Click with contents - fires trashcanOpen", function() { + fireDeleteEvent(this.workspace, ''); + chai.assert.equal(this.trashcan.contents_.length, 1); + // Stub flyout interaction. + const showFlyoutStub = sinon.stub(this.trashcan.flyout, "show"); + + simulateClick(this.trashcan.svgGroup_); + + sinon.assert.calledOnce(showFlyoutStub); + + assertEventFired( + this.eventsFireStub, Blockly.Events.TrashcanOpen, + {isOpen: true, type: eventUtils.TRASHCAN_OPEN}, this.workspace.id); + assertEventNotFired( + this.eventsFireStub, Blockly.Events.Click, {type: eventUtils.TRASHCAN_OPEN}); + }); + test("Click outside trashcan - fires trashcanClose", function() { + sinon.stub(this.trashcan.flyout, 'isVisible').returns(true); + // Stub flyout interaction. + const hideFlyoutStub = sinon.stub(this.trashcan.flyout, "hide"); + + simulateClick(this.workspace.svgGroup_); + + sinon.assert.calledOnce(hideFlyoutStub); + + assertEventFired( + this.eventsFireStub, Blockly.Events.TrashcanOpen, + {isOpen: false, type: eventUtils.TRASHCAN_OPEN}, this.workspace.id); + assertEventFired( + this.eventsFireStub, Blockly.Events.Click, {targetType: 'workspace', type: eventUtils.CLICK}, + this.workspace.id, null); + }); + }); + suite("Unique Contents", function() { + test("Simple", function() { + fireDeleteEvent(this.workspace, ''); + fireDeleteEvent(this.workspace, ''); + chai.assert.equal(this.trashcan.contents_.length, 1); + }); + test("Different Coords", function() { + fireDeleteEvent( + this.workspace, ''); + fireDeleteEvent( + this.workspace, ''); + chai.assert.equal(this.trashcan.contents_.length, 1); + }); + test("Different IDs", function() { + fireDeleteEvent( + this.workspace, ''); + fireDeleteEvent( + this.workspace, ''); + chai.assert.equal(this.trashcan.contents_.length, 1); + }); + test("No Disabled - Disabled True", function() { + fireDeleteEvent( + this.workspace, ''); + fireDeleteEvent( + this.workspace, ''); + // Disabled tags get removed because disabled blocks aren't allowed to + // be dragged from flyouts. See #2239 and #3243. + chai.assert.equal(this.trashcan.contents_.length, 1); + }); + test("Different Field Values", function() { + fireDeleteEvent(this.workspace, + '' + + ' dummy_value1' + + '' + ); + fireDeleteEvent(this.workspace, + '' + + ' dummy_value2' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + test("No Values - Values", function() { + fireDeleteEvent(this.workspace, ''); + fireDeleteEvent(this.workspace, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + test("Different Value Blocks", function() { + fireDeleteEvent(this.workspace, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + fireDeleteEvent(this.workspace, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + test("No Statements - Statements", function() { + fireDeleteEvent(this.workspace, ''); + fireDeleteEvent(this.workspace, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + test("Different Statement Blocks", function() { + fireDeleteEvent(this.workspace, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + fireDeleteEvent(this.workspace, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + test("No Next - Next", function() { + fireDeleteEvent(this.workspace, ''); + fireDeleteEvent(this.workspace, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + test("Different Next Blocks", function() { + fireDeleteEvent(this.workspace, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + fireDeleteEvent(this.workspace, + '' + + ' ' + + ' ' + + ' ' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + test("No Comment - Comment", function() { + fireDeleteEvent(this.workspace, ''); + fireDeleteEvent(this.workspace, + '' + + ' comment_text' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + test("Different Comment Text", function() { + fireDeleteEvent(this.workspace, + '' + + ' comment_text1' + + '' + ); + fireDeleteEvent(this.workspace, + '' + + ' comment_text2' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + test("Different Comment Size", function() { + fireDeleteEvent(this.workspace, + '' + + ' comment_text' + + '' + ); + fireDeleteEvent(this.workspace, + '' + + ' comment_text' + + '' + ); + // h & w tags are removed b/c the blocks appear the same. + chai.assert.equal(this.trashcan.contents_.length, 1); + }); + test("Different Comment Pinned", function() { + fireDeleteEvent(this.workspace, + '' + + ' comment_text' + + '' + ); + fireDeleteEvent(this.workspace, + '' + + ' comment_text' + + '' + ); + // pinned tags are removed b/c the blocks appear the same. + chai.assert.equal(this.trashcan.contents_.length, 1); + }); + test("Different Mutator", function() { + fireDeleteEvent(this.workspace, + '' + + ' ' + + '' + ); + fireDeleteEvent(this.workspace, + '' + + ' ' + + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 2); + }); + }); + suite("Max Contents", function() { + test("Max 0", function() { + this.workspace.options.maxTrashcanContents = 0; + fireDeleteEvent(this.workspace, + '' + ); + chai.assert.equal(this.trashcan.contents_.length, 0); + this.workspace.options.maxTrashcanContents = Infinity; + }); + }); +}); diff --git a/tests/mocha/utils_test.js b/tests/mocha/utils_test.js index 57ce83f1029..00b90bff3fa 100644 --- a/tests/mocha/utils_test.js +++ b/tests/mocha/utils_test.js @@ -1,451 +1,451 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.utils'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Utils', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - test('genUid', function() { - const uuids = {}; - chai.assert.equal([1, 2, 3].indexOf(4), -1); - for (let i = 0; i < 1000; i++) { - const uuid = Blockly.utils.idGenerator.genUid(); - chai.assert.isFalse(uuid in uuids, 'UUID different: ' + uuid); - uuids[uuid] = true; - } - }); - - suite('tokenizeInterpolation', function() { - suite('Basic', function() { - test('Empty string', function() { - chai.assert.deepEqual(Blockly.utils.parsing.tokenizeInterpolation(''), []); - }); - - test('No interpolation', function() { - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('Hello'), ['Hello']); - }); - - test('Unescaped %', function() { - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('Hello%World'), - ['Hello%World']); - }); - - test('Escaped %', function() { - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('Hello%%World'), - ['Hello%World']); - }); - }); - - suite('Number interpolation', function() { - test('Single-digit number interpolation', function() { - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('Hello%1World'), - ['Hello', 1, 'World']); - }); - - test('Multi-digit number interpolation', function() { - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%123Hello%456World%789'), - [123, 'Hello', 456, 'World', 789]); - }); - - test('Escaped number', function() { - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('Hello %%1 World'), - ['Hello %1 World']); - }); - - test('Crazy interpolation', function() { - // No idea what this is supposed to tell you if it breaks. But might - // as well keep it. - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%%%x%%0%00%01%'), - ['%%x%0', 0, 1, '%']); - }); - }); - - suite('String table interpolation', function() { - setup(function() { - Blockly.Msg = Blockly.Msg || { }; - }); - - test('Simple interpolation', function() { - Blockly.Msg.STRING_REF = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_string_ref}'), - ['test string']); - }); - - test('Case', function() { - Blockly.Msg.STRING_REF = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{BkY_StRiNg_ReF}'), - ['test string']); - }); - - test('Surrounding text', function() { - Blockly.Msg.STRING_REF = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation( - 'before %{bky_string_ref} after'), - ['before test string after']); - }); - - test('With param', function() { - Blockly.Msg.WITH_PARAM = 'before %1 after'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_with_param}'), - ['before ', 1, ' after']); - }); - - test('Recursive reference', function() { - Blockly.Msg.STRING_REF = 'test string'; - Blockly.Msg.RECURSE = 'before %{bky_string_ref} after'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_recurse}'), - ['before test string after']); - }); - - test('Number reference', function() { - Blockly.Msg['1'] = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_1}'), ['test string']); - }); - - test('Undefined reference', function() { - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_undefined}'), - ['%{bky_undefined}']); - }); - - test('Not prefixed', function() { - Blockly.Msg.STRING_REF = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{string_ref}'), - ['%{string_ref}']); - }); - - test('Not prefixed, number', function() { - Blockly.Msg['1'] = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{1}'), - ['%{1}']); - }); - - test('Space in ref', function() { - Blockly.Msg['string ref'] = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_string ref}'), - ['%{bky_string ref}']); - }); - - test('Dash in ref', function() { - Blockly.Msg['string-ref'] = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_string-ref}'), - ['%{bky_string-ref}']); - }); - - test('Period in ref', function() { - Blockly.Msg['string.ref'] = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_string.ref}'), - ['%{bky_string.ref}']); - }); - - test('Ampersand in ref', function() { - Blockly.Msg['string&ref'] = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_string&ref}'), - ['%{bky_string&ref}']); - }); - - test('Unclosed reference', function() { - Blockly.Msg.UNCLOSED = 'test string'; - chai.assert.deepEqual( - Blockly.utils.parsing.tokenizeInterpolation('%{bky_unclosed'), - ['%{bky_unclosed']); - }); - }); - }); - - test('replaceMessageReferences', function() { - Blockly.Msg = Blockly.Msg || {}; - Blockly.Msg.STRING_REF = 'test string'; - Blockly.Msg.SUBREF = 'subref'; - Blockly.Msg.STRING_REF_WITH_ARG = 'test %1 string'; - Blockly.Msg.STRING_REF_WITH_SUBREF = 'test %{bky_subref} string'; - - let resultString = Blockly.utils.parsing.replaceMessageReferences(''); - chai.assert.equal(resultString, '', 'Empty string produces empty string'); - - resultString = Blockly.utils.parsing.replaceMessageReferences('%%'); - chai.assert.equal(resultString, '%', 'Escaped %'); - resultString = - Blockly.utils.parsing.replaceMessageReferences('%%{bky_string_ref}'); - chai.assert.equal(resultString, '%{bky_string_ref}', 'Escaped %'); - - resultString = Blockly.utils.parsing.replaceMessageReferences('%a'); - chai.assert.equal(resultString, '%a', 'Unrecognized % escape code treated as literal'); - - resultString = Blockly.utils.parsing.replaceMessageReferences('%1'); - chai.assert.equal(resultString, '%1', 'Interpolation tokens ignored.'); - resultString = Blockly.utils.parsing.replaceMessageReferences('%1 %2'); - chai.assert.equal(resultString, '%1 %2', 'Interpolation tokens ignored.'); - resultString = - Blockly.utils.parsing.replaceMessageReferences('before %1 after'); - chai.assert.equal(resultString, 'before %1 after', 'Interpolation tokens ignored.'); - - // Blockly.Msg.STRING_REF cases: - resultString = - Blockly.utils.parsing.replaceMessageReferences('%{bky_string_ref}'); - chai.assert.equal(resultString, 'test string', 'Message ref dereferenced.'); - resultString = Blockly.utils.parsing.replaceMessageReferences( - 'before %{bky_string_ref} after'); - chai.assert.equal(resultString, 'before test string after', 'Message ref dereferenced.'); - - // Blockly.Msg.STRING_REF_WITH_ARG cases: - resultString = Blockly.utils.parsing.replaceMessageReferences( - '%{bky_string_ref_with_arg}'); - chai.assert.equal(resultString, 'test %1 string', 'Message ref dereferenced with argument preserved.'); - resultString = Blockly.utils.parsing.replaceMessageReferences( - 'before %{bky_string_ref_with_arg} after'); - chai.assert.equal(resultString, 'before test %1 string after', 'Message ref dereferenced with argument preserved.'); - - // Blockly.Msg.STRING_REF_WITH_SUBREF cases: - resultString = Blockly.utils.parsing.replaceMessageReferences( - '%{bky_string_ref_with_subref}'); - chai.assert.equal(resultString, 'test subref string', 'Message ref and subref dereferenced.'); - resultString = Blockly.utils.parsing.replaceMessageReferences( - 'before %{bky_string_ref_with_subref} after'); - chai.assert.equal(resultString, 'before test subref string after', 'Message ref and subref dereferenced.'); - }); - - test('arrayRemove', function() { - const arr = [1, 2, 3, 2]; - chai.assert.isFalse(Blockly.utils.arrayRemove(arr, 0), 'Remove Not found'); - chai.assert.equal(arr.join(','), '1,2,3,2', 'Remove Not found result'); - chai.assert.isTrue(Blockly.utils.arrayRemove(arr, 2), 'Remove item'); - chai.assert.equal(arr.join(','), '1,3,2', 'Remove item result'); - chai.assert.isTrue(Blockly.utils.arrayRemove(arr, 2), 'Remove item again'); - chai.assert.equal(arr.join(','), '1,3', 'Remove item again result'); - }); - - test('XY_REGEX_', function() { - const regex = Blockly.utils.svgMath.TEST_ONLY.XY_REGEX; - let m; - m = 'INVALID'.match(regex); - chai.assert.isNull(m); - - m = 'translate(10)'.match(regex); - chai.assert.equal(m[1], '10', 'translate(10), x'); - chai.assert.isUndefined(m[3], 'translate(10), y'); - - m = 'translate(11, 12)'.match(regex); - chai.assert.equal(m[1], '11', 'translate(11, 12), x'); - chai.assert.equal(m[3], '12', 'translate(11, 12), y'); - - m = 'translate(13,14)'.match(regex); - chai.assert.equal(m[1], '13', 'translate(13,14), x'); - chai.assert.equal(m[3], '14', 'translate(13,14), y'); - - m = 'translate(15 16)'.match(regex); - chai.assert.equal(m[1], '15', 'translate(15 16), x'); - chai.assert.equal(m[3], '16', 'translate(15 16), y'); - - m = 'translate(1.23456e+42 0.123456e-42)'.match(regex); - chai.assert.equal(m[1], '1.23456e+42', 'translate(1.23456e+42 0.123456e-42), x'); - chai.assert.equal(m[3], '0.123456e-42', 'translate(1.23456e+42 0.123456e-42), y'); - }); - - test('XY_STYLE_REGEX_', function() { - const regex = Blockly.utils.svgMath.TEST_ONLY.XY_STYLE_REGEX; - let m; - m = 'INVALID'.match(regex); - chai.assert.isNull(m); - - m = 'transform:translate(9px)'.match(regex); - chai.assert.equal(m[1], '9', 'transform:translate(9px), x'); - chai.assert.isUndefined(m[3], 'transform:translate(9px), y'); - - m = 'transform:translate3d(10px)'.match(regex); - chai.assert.equal(m[1], '10', 'transform:translate3d(10px), x'); - chai.assert.isUndefined(m[3], 'transform:translate(10px), y'); - - m = 'transform: translate(11px, 12px)'.match(regex); - chai.assert.equal(m[1], '11', 'transform: translate(11px, 12px), x'); - chai.assert.equal(m[3], '12', 'transform: translate(11px, 12px), y'); - - m = 'transform: translate(13px,14px)'.match(regex); - chai.assert.equal(m[1], '13', 'transform: translate(13px,14px), x'); - chai.assert.equal(m[3], '14', 'transform: translate(13px,14px), y'); - - m = 'transform: translate(15px 16px)'.match(regex); - chai.assert.equal(m[1], '15', 'transform: translate(15px 16px), x'); - chai.assert.equal(m[3], '16', 'transform: translate(15px 16px), y'); - - m = 'transform: translate(1.23456e+42px 0.123456e-42px)'.match(regex); - chai.assert.equal(m[1], '1.23456e+42', 'transform: translate(1.23456e+42px 0.123456e-42px), x'); - chai.assert.equal(m[3], '0.123456e-42', 'transform: translate(1.23456e+42px 0.123456e-42px), y'); - - m = 'transform:translate3d(20px, 21px, 22px)'.match(regex); - chai.assert.equal(m[1], '20', 'transform:translate3d(20px, 21px, 22px), x'); - chai.assert.equal(m[3], '21', 'transform:translate3d(20px, 21px, 22px), y'); - - m = 'transform:translate3d(23px,24px,25px)'.match(regex); - chai.assert.equal(m[1], '23', 'transform:translate3d(23px,24px,25px), x'); - chai.assert.equal(m[3], '24', 'transform:translate3d(23px,24px,25px), y'); - - m = 'transform:translate3d(26px 27px 28px)'.match(regex); - chai.assert.equal(m[1], '26', 'transform:translate3d(26px 27px 28px), x'); - chai.assert.equal(m[3], '27', 'transform:translate3d(26px 27px 28px), y'); - - m = 'transform:translate3d(1.23456e+42px 0.123456e-42px 42px)'.match(regex); - chai.assert.equal(m[1], '1.23456e+42', 'transform:translate3d(1.23456e+42px 0.123456e-42px 42px), x'); - chai.assert.equal(m[3], '0.123456e-42', 'transform:translate3d(1.23456e+42px 0.123456e-42px 42px), y'); - }); - - suite('DOM', function() { - test('addClass', function() { - const p = document.createElement('p'); - Blockly.utils.dom.addClass(p, 'one'); - chai.assert.equal(p.className, 'one', 'Adding "one"'); - Blockly.utils.dom.addClass(p, 'one'); - chai.assert.equal(p.className, 'one', 'Adding duplicate "one"'); - Blockly.utils.dom.addClass(p, 'two'); - chai.assert.equal(p.className, 'one two', 'Adding "two"'); - Blockly.utils.dom.addClass(p, 'two'); - chai.assert.equal(p.className, 'one two', 'Adding duplicate "two"'); - Blockly.utils.dom.addClass(p, 'three'); - chai.assert.equal(p.className, 'one two three', 'Adding "three"'); - }); - - test('hasClass', function() { - const p = document.createElement('p'); - p.className = ' one three two three '; - chai.assert.isTrue(Blockly.utils.dom.hasClass(p, 'one'), 'Has "one"'); - chai.assert.isTrue(Blockly.utils.dom.hasClass(p, 'two'), 'Has "two"'); - chai.assert.isTrue(Blockly.utils.dom.hasClass(p, 'three'), 'Has "three"'); - chai.assert.isFalse(Blockly.utils.dom.hasClass(p, 'four'), 'Has no "four"'); - chai.assert.isFalse(Blockly.utils.dom.hasClass(p, 't'), 'Has no "t"'); - }); - - test('removeClass', function() { - const p = document.createElement('p'); - p.className = ' one three two three '; - Blockly.utils.dom.removeClass(p, 'two'); - chai.assert.equal(p.className, 'one three three', 'Removing "two"'); - Blockly.utils.dom.removeClass(p, 'four'); - chai.assert.equal(p.className, 'one three three', 'Removing "four"'); - Blockly.utils.dom.removeClass(p, 'three'); - chai.assert.equal(p.className, 'one', 'Removing "three"'); - Blockly.utils.dom.removeClass(p, 'ne'); - chai.assert.equal(p.className, 'one', 'Removing "ne"'); - Blockly.utils.dom.removeClass(p, 'one'); - chai.assert.equal(p.className, '', 'Removing "one"'); - Blockly.utils.dom.removeClass(p, 'zero'); - chai.assert.equal(p.className, '', 'Removing "zero"'); - }); - }); - - suite('String', function() { - test('starts with', function() { - chai.assert.isFalse(Blockly.utils.string.startsWith('123', '2'), 'Does not start with'); - chai.assert.isTrue(Blockly.utils.string.startsWith('123', '12'), 'Start with'); - chai.assert.isTrue(Blockly.utils.string.startsWith('123', ''), 'Start with empty string 1'); - chai.assert.isTrue(Blockly.utils.string.startsWith('', ''), 'Start with empty string 12'); - }); - - test('shortest string length', function() { - let len = Blockly.utils.string.shortestStringLength('one,two,three,four,five'.split(',')); - chai.assert.equal(len, 3, 'Length of "one"'); - len = Blockly.utils.string.shortestStringLength('one,two,three,four,five,'.split(',')); - chai.assert.equal(len, 0, 'Length of ""'); - len = Blockly.utils.string.shortestStringLength(['Hello World']); - chai.assert.equal(len, 11, 'List of one'); - len = Blockly.utils.string.shortestStringLength([]); - chai.assert.equal(len, 0, 'Empty list'); - }); - - test('comment word prefix', function() { - let len = Blockly.utils.string.commonWordPrefix('one,two,three,four,five'.split(',')); - chai.assert.equal(len, 0, 'No prefix'); - len = Blockly.utils.string.commonWordPrefix('Xone,Xtwo,Xthree,Xfour,Xfive'.split(',')); - chai.assert.equal(len, 0, 'No word prefix'); - len = Blockly.utils.string.commonWordPrefix('abc de,abc de,abc de,abc de'.split(',')); - chai.assert.equal(len, 6, 'Full equality'); - len = Blockly.utils.string.commonWordPrefix('abc deX,abc deY'.split(',')); - chai.assert.equal(len, 4, 'One word prefix'); - len = Blockly.utils.string.commonWordPrefix('abc de,abc deY'.split(',')); - chai.assert.equal(len, 4, 'Overflow no'); - len = Blockly.utils.string.commonWordPrefix('abc de,abc de Y'.split(',')); - chai.assert.equal(len, 6, 'Overflow yes'); - len = Blockly.utils.string.commonWordPrefix(['Hello World']); - chai.assert.equal(len, 11, 'List of one'); - len = Blockly.utils.string.commonWordPrefix([]); - chai.assert.equal(len, 0, 'Empty list'); - len = Blockly.utils.string.commonWordPrefix('turn left,turn right'.split(',')); - chai.assert.equal(len, 0, 'No prefix due to &nbsp;'); - len = Blockly.utils.string.commonWordPrefix('turn\u00A0left,turn\u00A0right'.split(',')); - chai.assert.equal(len, 0, 'No prefix due to \\u00A0'); - }); - - test('comment word suffix', function() { - let len = Blockly.utils.string.commonWordSuffix('one,two,three,four,five'.split(',')); - chai.assert.equal(len, 0, 'No suffix'); - len = Blockly.utils.string.commonWordSuffix('oneX,twoX,threeX,fourX,fiveX'.split(',')); - chai.assert.equal(len, 0, 'No word suffix'); - len = Blockly.utils.string.commonWordSuffix('abc de,abc de,abc de,abc de'.split(',')); - chai.assert.equal(len, 6, 'Full equality'); - len = Blockly.utils.string.commonWordSuffix('Xabc de,Yabc de'.split(',')); - chai.assert.equal(len, 3, 'One word suffix'); - len = Blockly.utils.string.commonWordSuffix('abc de,Yabc de'.split(',')); - chai.assert.equal(len, 3, 'Overflow no'); - len = Blockly.utils.string.commonWordSuffix('abc de,Y abc de'.split(',')); - chai.assert.equal(len, 6, 'Overflow yes'); - len = Blockly.utils.string.commonWordSuffix(['Hello World']); - chai.assert.equal(len, 11, 'List of one'); - len = Blockly.utils.string.commonWordSuffix([]); - chai.assert.equal(len, 0, 'Empty list'); - }); - }); - - suite('Math', function() { - test('toRadians', function() { - const quarter = Math.PI / 2; - chai.assert.equal(Blockly.utils.math.toRadians(-90), -quarter, '-90'); - chai.assert.equal(Blockly.utils.math.toRadians(0), 0, '0'); - chai.assert.equal(Blockly.utils.math.toRadians(90), quarter, '90'); - chai.assert.equal(Blockly.utils.math.toRadians(180), 2 * quarter, '180'); - chai.assert.equal(Blockly.utils.math.toRadians(270), 3 * quarter, '270'); - chai.assert.equal(Blockly.utils.math.toRadians(360), 4 * quarter, '360'); - chai.assert.equal(Blockly.utils.math.toRadians(360 + 90), 5 * quarter, '450'); - }); - - test('toDegrees', function() { - const quarter = Math.PI / 2; - chai.assert.equal(Blockly.utils.math.toDegrees(-quarter), -90, '-90'); - chai.assert.equal(Blockly.utils.math.toDegrees(0), 0, '0'); - chai.assert.equal(Blockly.utils.math.toDegrees(quarter), 90, '90'); - chai.assert.equal(Blockly.utils.math.toDegrees(2 * quarter), 180, '180'); - chai.assert.equal(Blockly.utils.math.toDegrees(3 * quarter), 270, '270'); - chai.assert.equal(Blockly.utils.math.toDegrees(4 * quarter), 360, '360'); - chai.assert.equal(Blockly.utils.math.toDegrees(5 * quarter), 360 + 90, '450'); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.utils'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Utils', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + test('genUid', function() { + const uuids = {}; + chai.assert.equal([1, 2, 3].indexOf(4), -1); + for (let i = 0; i < 1000; i++) { + const uuid = Blockly.utils.idGenerator.genUid(); + chai.assert.isFalse(uuid in uuids, 'UUID different: ' + uuid); + uuids[uuid] = true; + } + }); + + suite('tokenizeInterpolation', function() { + suite('Basic', function() { + test('Empty string', function() { + chai.assert.deepEqual(Blockly.utils.parsing.tokenizeInterpolation(''), []); + }); + + test('No interpolation', function() { + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('Hello'), ['Hello']); + }); + + test('Unescaped %', function() { + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('Hello%World'), + ['Hello%World']); + }); + + test('Escaped %', function() { + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('Hello%%World'), + ['Hello%World']); + }); + }); + + suite('Number interpolation', function() { + test('Single-digit number interpolation', function() { + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('Hello%1World'), + ['Hello', 1, 'World']); + }); + + test('Multi-digit number interpolation', function() { + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%123Hello%456World%789'), + [123, 'Hello', 456, 'World', 789]); + }); + + test('Escaped number', function() { + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('Hello %%1 World'), + ['Hello %1 World']); + }); + + test('Crazy interpolation', function() { + // No idea what this is supposed to tell you if it breaks. But might + // as well keep it. + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%%%x%%0%00%01%'), + ['%%x%0', 0, 1, '%']); + }); + }); + + suite('String table interpolation', function() { + setup(function() { + Blockly.Msg = Blockly.Msg || { }; + }); + + test('Simple interpolation', function() { + Blockly.Msg.STRING_REF = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_string_ref}'), + ['test string']); + }); + + test('Case', function() { + Blockly.Msg.STRING_REF = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{BkY_StRiNg_ReF}'), + ['test string']); + }); + + test('Surrounding text', function() { + Blockly.Msg.STRING_REF = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation( + 'before %{bky_string_ref} after'), + ['before test string after']); + }); + + test('With param', function() { + Blockly.Msg.WITH_PARAM = 'before %1 after'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_with_param}'), + ['before ', 1, ' after']); + }); + + test('Recursive reference', function() { + Blockly.Msg.STRING_REF = 'test string'; + Blockly.Msg.RECURSE = 'before %{bky_string_ref} after'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_recurse}'), + ['before test string after']); + }); + + test('Number reference', function() { + Blockly.Msg['1'] = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_1}'), ['test string']); + }); + + test('Undefined reference', function() { + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_undefined}'), + ['%{bky_undefined}']); + }); + + test('Not prefixed', function() { + Blockly.Msg.STRING_REF = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{string_ref}'), + ['%{string_ref}']); + }); + + test('Not prefixed, number', function() { + Blockly.Msg['1'] = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{1}'), + ['%{1}']); + }); + + test('Space in ref', function() { + Blockly.Msg['string ref'] = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_string ref}'), + ['%{bky_string ref}']); + }); + + test('Dash in ref', function() { + Blockly.Msg['string-ref'] = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_string-ref}'), + ['%{bky_string-ref}']); + }); + + test('Period in ref', function() { + Blockly.Msg['string.ref'] = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_string.ref}'), + ['%{bky_string.ref}']); + }); + + test('Ampersand in ref', function() { + Blockly.Msg['string&ref'] = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_string&ref}'), + ['%{bky_string&ref}']); + }); + + test('Unclosed reference', function() { + Blockly.Msg.UNCLOSED = 'test string'; + chai.assert.deepEqual( + Blockly.utils.parsing.tokenizeInterpolation('%{bky_unclosed'), + ['%{bky_unclosed']); + }); + }); + }); + + test('replaceMessageReferences', function() { + Blockly.Msg = Blockly.Msg || {}; + Blockly.Msg.STRING_REF = 'test string'; + Blockly.Msg.SUBREF = 'subref'; + Blockly.Msg.STRING_REF_WITH_ARG = 'test %1 string'; + Blockly.Msg.STRING_REF_WITH_SUBREF = 'test %{bky_subref} string'; + + let resultString = Blockly.utils.parsing.replaceMessageReferences(''); + chai.assert.equal(resultString, '', 'Empty string produces empty string'); + + resultString = Blockly.utils.parsing.replaceMessageReferences('%%'); + chai.assert.equal(resultString, '%', 'Escaped %'); + resultString = + Blockly.utils.parsing.replaceMessageReferences('%%{bky_string_ref}'); + chai.assert.equal(resultString, '%{bky_string_ref}', 'Escaped %'); + + resultString = Blockly.utils.parsing.replaceMessageReferences('%a'); + chai.assert.equal(resultString, '%a', 'Unrecognized % escape code treated as literal'); + + resultString = Blockly.utils.parsing.replaceMessageReferences('%1'); + chai.assert.equal(resultString, '%1', 'Interpolation tokens ignored.'); + resultString = Blockly.utils.parsing.replaceMessageReferences('%1 %2'); + chai.assert.equal(resultString, '%1 %2', 'Interpolation tokens ignored.'); + resultString = + Blockly.utils.parsing.replaceMessageReferences('before %1 after'); + chai.assert.equal(resultString, 'before %1 after', 'Interpolation tokens ignored.'); + + // Blockly.Msg.STRING_REF cases: + resultString = + Blockly.utils.parsing.replaceMessageReferences('%{bky_string_ref}'); + chai.assert.equal(resultString, 'test string', 'Message ref dereferenced.'); + resultString = Blockly.utils.parsing.replaceMessageReferences( + 'before %{bky_string_ref} after'); + chai.assert.equal(resultString, 'before test string after', 'Message ref dereferenced.'); + + // Blockly.Msg.STRING_REF_WITH_ARG cases: + resultString = Blockly.utils.parsing.replaceMessageReferences( + '%{bky_string_ref_with_arg}'); + chai.assert.equal(resultString, 'test %1 string', 'Message ref dereferenced with argument preserved.'); + resultString = Blockly.utils.parsing.replaceMessageReferences( + 'before %{bky_string_ref_with_arg} after'); + chai.assert.equal(resultString, 'before test %1 string after', 'Message ref dereferenced with argument preserved.'); + + // Blockly.Msg.STRING_REF_WITH_SUBREF cases: + resultString = Blockly.utils.parsing.replaceMessageReferences( + '%{bky_string_ref_with_subref}'); + chai.assert.equal(resultString, 'test subref string', 'Message ref and subref dereferenced.'); + resultString = Blockly.utils.parsing.replaceMessageReferences( + 'before %{bky_string_ref_with_subref} after'); + chai.assert.equal(resultString, 'before test subref string after', 'Message ref and subref dereferenced.'); + }); + + test('arrayRemove', function() { + const arr = [1, 2, 3, 2]; + chai.assert.isFalse(Blockly.utils.arrayRemove(arr, 0), 'Remove Not found'); + chai.assert.equal(arr.join(','), '1,2,3,2', 'Remove Not found result'); + chai.assert.isTrue(Blockly.utils.arrayRemove(arr, 2), 'Remove item'); + chai.assert.equal(arr.join(','), '1,3,2', 'Remove item result'); + chai.assert.isTrue(Blockly.utils.arrayRemove(arr, 2), 'Remove item again'); + chai.assert.equal(arr.join(','), '1,3', 'Remove item again result'); + }); + + test('XY_REGEX_', function() { + const regex = Blockly.utils.svgMath.TEST_ONLY.XY_REGEX; + let m; + m = 'INVALID'.match(regex); + chai.assert.isNull(m); + + m = 'translate(10)'.match(regex); + chai.assert.equal(m[1], '10', 'translate(10), x'); + chai.assert.isUndefined(m[3], 'translate(10), y'); + + m = 'translate(11, 12)'.match(regex); + chai.assert.equal(m[1], '11', 'translate(11, 12), x'); + chai.assert.equal(m[3], '12', 'translate(11, 12), y'); + + m = 'translate(13,14)'.match(regex); + chai.assert.equal(m[1], '13', 'translate(13,14), x'); + chai.assert.equal(m[3], '14', 'translate(13,14), y'); + + m = 'translate(15 16)'.match(regex); + chai.assert.equal(m[1], '15', 'translate(15 16), x'); + chai.assert.equal(m[3], '16', 'translate(15 16), y'); + + m = 'translate(1.23456e+42 0.123456e-42)'.match(regex); + chai.assert.equal(m[1], '1.23456e+42', 'translate(1.23456e+42 0.123456e-42), x'); + chai.assert.equal(m[3], '0.123456e-42', 'translate(1.23456e+42 0.123456e-42), y'); + }); + + test('XY_STYLE_REGEX_', function() { + const regex = Blockly.utils.svgMath.TEST_ONLY.XY_STYLE_REGEX; + let m; + m = 'INVALID'.match(regex); + chai.assert.isNull(m); + + m = 'transform:translate(9px)'.match(regex); + chai.assert.equal(m[1], '9', 'transform:translate(9px), x'); + chai.assert.isUndefined(m[3], 'transform:translate(9px), y'); + + m = 'transform:translate3d(10px)'.match(regex); + chai.assert.equal(m[1], '10', 'transform:translate3d(10px), x'); + chai.assert.isUndefined(m[3], 'transform:translate(10px), y'); + + m = 'transform: translate(11px, 12px)'.match(regex); + chai.assert.equal(m[1], '11', 'transform: translate(11px, 12px), x'); + chai.assert.equal(m[3], '12', 'transform: translate(11px, 12px), y'); + + m = 'transform: translate(13px,14px)'.match(regex); + chai.assert.equal(m[1], '13', 'transform: translate(13px,14px), x'); + chai.assert.equal(m[3], '14', 'transform: translate(13px,14px), y'); + + m = 'transform: translate(15px 16px)'.match(regex); + chai.assert.equal(m[1], '15', 'transform: translate(15px 16px), x'); + chai.assert.equal(m[3], '16', 'transform: translate(15px 16px), y'); + + m = 'transform: translate(1.23456e+42px 0.123456e-42px)'.match(regex); + chai.assert.equal(m[1], '1.23456e+42', 'transform: translate(1.23456e+42px 0.123456e-42px), x'); + chai.assert.equal(m[3], '0.123456e-42', 'transform: translate(1.23456e+42px 0.123456e-42px), y'); + + m = 'transform:translate3d(20px, 21px, 22px)'.match(regex); + chai.assert.equal(m[1], '20', 'transform:translate3d(20px, 21px, 22px), x'); + chai.assert.equal(m[3], '21', 'transform:translate3d(20px, 21px, 22px), y'); + + m = 'transform:translate3d(23px,24px,25px)'.match(regex); + chai.assert.equal(m[1], '23', 'transform:translate3d(23px,24px,25px), x'); + chai.assert.equal(m[3], '24', 'transform:translate3d(23px,24px,25px), y'); + + m = 'transform:translate3d(26px 27px 28px)'.match(regex); + chai.assert.equal(m[1], '26', 'transform:translate3d(26px 27px 28px), x'); + chai.assert.equal(m[3], '27', 'transform:translate3d(26px 27px 28px), y'); + + m = 'transform:translate3d(1.23456e+42px 0.123456e-42px 42px)'.match(regex); + chai.assert.equal(m[1], '1.23456e+42', 'transform:translate3d(1.23456e+42px 0.123456e-42px 42px), x'); + chai.assert.equal(m[3], '0.123456e-42', 'transform:translate3d(1.23456e+42px 0.123456e-42px 42px), y'); + }); + + suite('DOM', function() { + test('addClass', function() { + const p = document.createElement('p'); + Blockly.utils.dom.addClass(p, 'one'); + chai.assert.equal(p.className, 'one', 'Adding "one"'); + Blockly.utils.dom.addClass(p, 'one'); + chai.assert.equal(p.className, 'one', 'Adding duplicate "one"'); + Blockly.utils.dom.addClass(p, 'two'); + chai.assert.equal(p.className, 'one two', 'Adding "two"'); + Blockly.utils.dom.addClass(p, 'two'); + chai.assert.equal(p.className, 'one two', 'Adding duplicate "two"'); + Blockly.utils.dom.addClass(p, 'three'); + chai.assert.equal(p.className, 'one two three', 'Adding "three"'); + }); + + test('hasClass', function() { + const p = document.createElement('p'); + p.className = ' one three two three '; + chai.assert.isTrue(Blockly.utils.dom.hasClass(p, 'one'), 'Has "one"'); + chai.assert.isTrue(Blockly.utils.dom.hasClass(p, 'two'), 'Has "two"'); + chai.assert.isTrue(Blockly.utils.dom.hasClass(p, 'three'), 'Has "three"'); + chai.assert.isFalse(Blockly.utils.dom.hasClass(p, 'four'), 'Has no "four"'); + chai.assert.isFalse(Blockly.utils.dom.hasClass(p, 't'), 'Has no "t"'); + }); + + test('removeClass', function() { + const p = document.createElement('p'); + p.className = ' one three two three '; + Blockly.utils.dom.removeClass(p, 'two'); + chai.assert.equal(p.className, 'one three three', 'Removing "two"'); + Blockly.utils.dom.removeClass(p, 'four'); + chai.assert.equal(p.className, 'one three three', 'Removing "four"'); + Blockly.utils.dom.removeClass(p, 'three'); + chai.assert.equal(p.className, 'one', 'Removing "three"'); + Blockly.utils.dom.removeClass(p, 'ne'); + chai.assert.equal(p.className, 'one', 'Removing "ne"'); + Blockly.utils.dom.removeClass(p, 'one'); + chai.assert.equal(p.className, '', 'Removing "one"'); + Blockly.utils.dom.removeClass(p, 'zero'); + chai.assert.equal(p.className, '', 'Removing "zero"'); + }); + }); + + suite('String', function() { + test('starts with', function() { + chai.assert.isFalse(Blockly.utils.string.startsWith('123', '2'), 'Does not start with'); + chai.assert.isTrue(Blockly.utils.string.startsWith('123', '12'), 'Start with'); + chai.assert.isTrue(Blockly.utils.string.startsWith('123', ''), 'Start with empty string 1'); + chai.assert.isTrue(Blockly.utils.string.startsWith('', ''), 'Start with empty string 12'); + }); + + test('shortest string length', function() { + let len = Blockly.utils.string.shortestStringLength('one,two,three,four,five'.split(',')); + chai.assert.equal(len, 3, 'Length of "one"'); + len = Blockly.utils.string.shortestStringLength('one,two,three,four,five,'.split(',')); + chai.assert.equal(len, 0, 'Length of ""'); + len = Blockly.utils.string.shortestStringLength(['Hello World']); + chai.assert.equal(len, 11, 'List of one'); + len = Blockly.utils.string.shortestStringLength([]); + chai.assert.equal(len, 0, 'Empty list'); + }); + + test('comment word prefix', function() { + let len = Blockly.utils.string.commonWordPrefix('one,two,three,four,five'.split(',')); + chai.assert.equal(len, 0, 'No prefix'); + len = Blockly.utils.string.commonWordPrefix('Xone,Xtwo,Xthree,Xfour,Xfive'.split(',')); + chai.assert.equal(len, 0, 'No word prefix'); + len = Blockly.utils.string.commonWordPrefix('abc de,abc de,abc de,abc de'.split(',')); + chai.assert.equal(len, 6, 'Full equality'); + len = Blockly.utils.string.commonWordPrefix('abc deX,abc deY'.split(',')); + chai.assert.equal(len, 4, 'One word prefix'); + len = Blockly.utils.string.commonWordPrefix('abc de,abc deY'.split(',')); + chai.assert.equal(len, 4, 'Overflow no'); + len = Blockly.utils.string.commonWordPrefix('abc de,abc de Y'.split(',')); + chai.assert.equal(len, 6, 'Overflow yes'); + len = Blockly.utils.string.commonWordPrefix(['Hello World']); + chai.assert.equal(len, 11, 'List of one'); + len = Blockly.utils.string.commonWordPrefix([]); + chai.assert.equal(len, 0, 'Empty list'); + len = Blockly.utils.string.commonWordPrefix('turn left,turn right'.split(',')); + chai.assert.equal(len, 0, 'No prefix due to &nbsp;'); + len = Blockly.utils.string.commonWordPrefix('turn\u00A0left,turn\u00A0right'.split(',')); + chai.assert.equal(len, 0, 'No prefix due to \\u00A0'); + }); + + test('comment word suffix', function() { + let len = Blockly.utils.string.commonWordSuffix('one,two,three,four,five'.split(',')); + chai.assert.equal(len, 0, 'No suffix'); + len = Blockly.utils.string.commonWordSuffix('oneX,twoX,threeX,fourX,fiveX'.split(',')); + chai.assert.equal(len, 0, 'No word suffix'); + len = Blockly.utils.string.commonWordSuffix('abc de,abc de,abc de,abc de'.split(',')); + chai.assert.equal(len, 6, 'Full equality'); + len = Blockly.utils.string.commonWordSuffix('Xabc de,Yabc de'.split(',')); + chai.assert.equal(len, 3, 'One word suffix'); + len = Blockly.utils.string.commonWordSuffix('abc de,Yabc de'.split(',')); + chai.assert.equal(len, 3, 'Overflow no'); + len = Blockly.utils.string.commonWordSuffix('abc de,Y abc de'.split(',')); + chai.assert.equal(len, 6, 'Overflow yes'); + len = Blockly.utils.string.commonWordSuffix(['Hello World']); + chai.assert.equal(len, 11, 'List of one'); + len = Blockly.utils.string.commonWordSuffix([]); + chai.assert.equal(len, 0, 'Empty list'); + }); + }); + + suite('Math', function() { + test('toRadians', function() { + const quarter = Math.PI / 2; + chai.assert.equal(Blockly.utils.math.toRadians(-90), -quarter, '-90'); + chai.assert.equal(Blockly.utils.math.toRadians(0), 0, '0'); + chai.assert.equal(Blockly.utils.math.toRadians(90), quarter, '90'); + chai.assert.equal(Blockly.utils.math.toRadians(180), 2 * quarter, '180'); + chai.assert.equal(Blockly.utils.math.toRadians(270), 3 * quarter, '270'); + chai.assert.equal(Blockly.utils.math.toRadians(360), 4 * quarter, '360'); + chai.assert.equal(Blockly.utils.math.toRadians(360 + 90), 5 * quarter, '450'); + }); + + test('toDegrees', function() { + const quarter = Math.PI / 2; + chai.assert.equal(Blockly.utils.math.toDegrees(-quarter), -90, '-90'); + chai.assert.equal(Blockly.utils.math.toDegrees(0), 0, '0'); + chai.assert.equal(Blockly.utils.math.toDegrees(quarter), 90, '90'); + chai.assert.equal(Blockly.utils.math.toDegrees(2 * quarter), 180, '180'); + chai.assert.equal(Blockly.utils.math.toDegrees(3 * quarter), 270, '270'); + chai.assert.equal(Blockly.utils.math.toDegrees(4 * quarter), 360, '360'); + chai.assert.equal(Blockly.utils.math.toDegrees(5 * quarter), 360 + 90, '450'); + }); + }); +}); diff --git a/tests/mocha/variable_map_test.js b/tests/mocha/variable_map_test.js index 14bc0168ed5..f4ef89db42d 100644 --- a/tests/mocha/variable_map_test.js +++ b/tests/mocha/variable_map_test.js @@ -1,256 +1,256 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.variableMap'); - -const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); -const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Variable Map', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - this.variableMap = new Blockly.VariableMap(this.workspace); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('createVariable', function() { - test('Trivial', function() { - this.variableMap.createVariable('name1', 'type1', 'id1'); - assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); - }); - - test('Already exists', function() { - // Expect that when the variable already exists, the variableMap_ is unchanged. - this.variableMap.createVariable('name1', 'type1', 'id1'); - - // Assert there is only one variable in the this.variableMap. - let keys = Object.keys(this.variableMap.variableMap_); - chai.assert.equal(keys.length, 1); - let varMapLength = this.variableMap.variableMap_[keys[0]].length; - chai.assert.equal(varMapLength, 1); - - this.variableMap.createVariable('name1', 'type1'); - assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); - // Check that the size of the variableMap_ did not change. - keys = Object.keys(this.variableMap.variableMap_); - chai.assert.equal(keys.length, 1); - varMapLength = this.variableMap.variableMap_[keys[0]].length; - chai.assert.equal(varMapLength, 1); - }); - - test('Name already exists', function() { - // Expect that when a variable with the same name but a different type already - // exists, the new variable is created. - this.variableMap.createVariable('name1', 'type1', 'id1'); - - // Assert there is only one variable in the this.variableMap. - let keys = Object.keys(this.variableMap.variableMap_); - chai.assert.equal(keys.length, 1); - const varMapLength = this.variableMap.variableMap_[keys[0]].length; - chai.assert.equal(varMapLength, 1); - - this.variableMap.createVariable('name1', 'type2', 'id2'); - assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); - assertVariableValues(this.variableMap, 'name1', 'type2', 'id2'); - // Check that the size of the variableMap_ did change. - keys = Object.keys(this.variableMap.variableMap_); - chai.assert.equal(keys.length, 2); - }); - - test('Null type', function() { - this.variableMap.createVariable('name1', null, 'id1'); - assertVariableValues(this.variableMap, 'name1', '', 'id1'); - }); - - test('Undefined type', function() { - this.variableMap.createVariable('name2', undefined, 'id2'); - assertVariableValues(this.variableMap, 'name2', '', 'id2'); - }); - - test('Null id', function() { - createGenUidStubWithReturns('1'); - this.variableMap.createVariable('name1', 'type1', null); - assertVariableValues(this.variableMap, 'name1', 'type1', '1'); - }); - - test('Undefined id', function() { - createGenUidStubWithReturns('1'); - this.variableMap.createVariable('name1', 'type1', undefined); - assertVariableValues(this.variableMap, 'name1', 'type1', '1'); - }); - - test('Two variables same type', function() { - this.variableMap.createVariable('name1', 'type1', 'id1'); - this.variableMap.createVariable('name2', 'type1', 'id2'); - - assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); - assertVariableValues(this.variableMap, 'name2', 'type1', 'id2'); - }); - - test('Two variables same name', function() { - this.variableMap.createVariable('name1', 'type1', 'id1'); - this.variableMap.createVariable('name1', 'type2', 'id2'); - - assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); - assertVariableValues(this.variableMap, 'name1', 'type2', 'id2'); - }); - - suite('Error cases', function() { - test('Id already exists', function() { - this.variableMap.createVariable('name1', 'type1', 'id1'); - const variableMap = this.variableMap; - chai.assert.throws(function() { - variableMap.createVariable('name2', 'type2', 'id1'); - }, /"id1".*in use/); - assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); - }); - - test('Mismatched id', function() { - this.variableMap.createVariable('name1', 'type1', 'id1'); - const variableMap = this.variableMap; - chai.assert.throws(function() { - variableMap.createVariable('name1', 'type1', 'id2'); - }, /"name1".*in use/); - assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); - }); - - test('Mismatched type', function() { - this.variableMap.createVariable('name1', 'type1', 'id1'); - const variableMap = this.variableMap; - chai.assert.throws(function() { - variableMap.createVariable('name1', 'type2', 'id1'); - }); - assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); - chai.assert.isNull(this.variableMap.getVariableById('id2')); - }); - }); - }); - - suite('getVariable', function() { - test('By name and type', function() { - const var1 = this.variableMap.createVariable('name1', 'type1', 'id1'); - const var2 = this.variableMap.createVariable('name2', 'type1', 'id2'); - const var3 = this.variableMap.createVariable('name3', 'type2', 'id3'); - const result1 = this.variableMap.getVariable('name1', 'type1'); - const result2 = this.variableMap.getVariable('name2', 'type1'); - const result3 = this.variableMap.getVariable('name3', 'type2'); - - // Searching by name + type is correct. - chai.assert.equal(result1, var1); - chai.assert.equal(result2, var2); - chai.assert.equal(result3, var3); - - // Searching only by name defaults to the '' type. - chai.assert.isNull(this.variableMap.getVariable('name1')); - chai.assert.isNull(this.variableMap.getVariable('name2')); - chai.assert.isNull(this.variableMap.getVariable('name3')); - }); - - test('Not found', function() { - const result = this.variableMap.getVariable('name1'); - chai.assert.isNull(result); - }); - }); - - suite('getVariableById', function() { - test('Trivial', function() { - const var1 = this.variableMap.createVariable('name1', 'type1', 'id1'); - const var2 = this.variableMap.createVariable('name2', 'type1', 'id2'); - const var3 = this.variableMap.createVariable('name3', 'type2', 'id3'); - const result1 = this.variableMap.getVariableById('id1'); - const result2 = this.variableMap.getVariableById('id2'); - const result3 = this.variableMap.getVariableById('id3'); - - chai.assert.equal(result1, var1); - chai.assert.equal(result2, var2); - chai.assert.equal(result3, var3); - }); - - test('Not found', function() { - const result = this.variableMap.getVariableById('id1'); - chai.assert.isNull(result); - }); - }); - - suite('getVariableTypes', function() { - test('Trivial', function() { - this.variableMap.createVariable('name1', 'type1', 'id1'); - this.variableMap.createVariable('name2', 'type1', 'id2'); - this.variableMap.createVariable('name3', 'type2', 'id3'); - this.variableMap.createVariable('name4', 'type3', 'id4'); - const resultArray = this.variableMap.getVariableTypes(); - // The empty string is always an option. - chai.assert.deepEqual(resultArray, ['type1', 'type2', 'type3', '']); - }); - - test('None', function() { - // The empty string is always an option. - const resultArray = this.variableMap.getVariableTypes(); - chai.assert.deepEqual(resultArray, ['']); - }); - }); - - suite('getVariablesOfType', function() { - test('Trivial', function() { - const var1 = this.variableMap.createVariable('name1', 'type1', 'id1'); - const var2 = this.variableMap.createVariable('name2', 'type1', 'id2'); - this.variableMap.createVariable('name3', 'type2', 'id3'); - this.variableMap.createVariable('name4', 'type3', 'id4'); - const resultArray1 = this.variableMap.getVariablesOfType('type1'); - const resultArray2 = this.variableMap.getVariablesOfType('type5'); - chai.assert.deepEqual(resultArray1, [var1, var2]); - chai.assert.deepEqual(resultArray2, []); - }); - - test('Null', function() { - const var1 = this.variableMap.createVariable('name1', '', 'id1'); - const var2 = this.variableMap.createVariable('name2', '', 'id2'); - const var3 = this.variableMap.createVariable('name3', '', 'id3'); - this.variableMap.createVariable('name4', 'type1', 'id4'); - const resultArray = this.variableMap.getVariablesOfType(null); - chai.assert.deepEqual(resultArray, [var1, var2, var3]); - }); - - test('Empty string', function() { - const var1 = this.variableMap.createVariable('name1', null, 'id1'); - const var2 = this.variableMap.createVariable('name2', null, 'id2'); - const resultArray = this.variableMap.getVariablesOfType(''); - chai.assert.deepEqual(resultArray, [var1, var2]); - }); - - test('Deleted', function() { - const variable = this.variableMap.createVariable('name1', null, 'id1'); - this.variableMap.deleteVariable(variable); - const resultArray = this.variableMap.getVariablesOfType(''); - chai.assert.deepEqual(resultArray, []); - }); - - test('Does not exist', function() { - const resultArray = this.variableMap.getVariablesOfType('type1'); - chai.assert.deepEqual(resultArray, []); - }); - }); - - suite('getAllVariables', function() { - test('Trivial', function() { - const var1 = this.variableMap.createVariable('name1', 'type1', 'id1'); - const var2 = this.variableMap.createVariable('name2', 'type1', 'id2'); - const var3 = this.variableMap.createVariable('name3', 'type2', 'id3'); - const resultArray = this.variableMap.getAllVariables(); - chai.assert.deepEqual(resultArray, [var1, var2, var3]); - }); - - test('None', function() { - const resultArray = this.variableMap.getAllVariables(); - chai.assert.deepEqual(resultArray, []); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.variableMap'); + +const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); +const {createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Variable Map', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + this.variableMap = new Blockly.VariableMap(this.workspace); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('createVariable', function() { + test('Trivial', function() { + this.variableMap.createVariable('name1', 'type1', 'id1'); + assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); + }); + + test('Already exists', function() { + // Expect that when the variable already exists, the variableMap_ is unchanged. + this.variableMap.createVariable('name1', 'type1', 'id1'); + + // Assert there is only one variable in the this.variableMap. + let keys = Object.keys(this.variableMap.variableMap_); + chai.assert.equal(keys.length, 1); + let varMapLength = this.variableMap.variableMap_[keys[0]].length; + chai.assert.equal(varMapLength, 1); + + this.variableMap.createVariable('name1', 'type1'); + assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); + // Check that the size of the variableMap_ did not change. + keys = Object.keys(this.variableMap.variableMap_); + chai.assert.equal(keys.length, 1); + varMapLength = this.variableMap.variableMap_[keys[0]].length; + chai.assert.equal(varMapLength, 1); + }); + + test('Name already exists', function() { + // Expect that when a variable with the same name but a different type already + // exists, the new variable is created. + this.variableMap.createVariable('name1', 'type1', 'id1'); + + // Assert there is only one variable in the this.variableMap. + let keys = Object.keys(this.variableMap.variableMap_); + chai.assert.equal(keys.length, 1); + const varMapLength = this.variableMap.variableMap_[keys[0]].length; + chai.assert.equal(varMapLength, 1); + + this.variableMap.createVariable('name1', 'type2', 'id2'); + assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); + assertVariableValues(this.variableMap, 'name1', 'type2', 'id2'); + // Check that the size of the variableMap_ did change. + keys = Object.keys(this.variableMap.variableMap_); + chai.assert.equal(keys.length, 2); + }); + + test('Null type', function() { + this.variableMap.createVariable('name1', null, 'id1'); + assertVariableValues(this.variableMap, 'name1', '', 'id1'); + }); + + test('Undefined type', function() { + this.variableMap.createVariable('name2', undefined, 'id2'); + assertVariableValues(this.variableMap, 'name2', '', 'id2'); + }); + + test('Null id', function() { + createGenUidStubWithReturns('1'); + this.variableMap.createVariable('name1', 'type1', null); + assertVariableValues(this.variableMap, 'name1', 'type1', '1'); + }); + + test('Undefined id', function() { + createGenUidStubWithReturns('1'); + this.variableMap.createVariable('name1', 'type1', undefined); + assertVariableValues(this.variableMap, 'name1', 'type1', '1'); + }); + + test('Two variables same type', function() { + this.variableMap.createVariable('name1', 'type1', 'id1'); + this.variableMap.createVariable('name2', 'type1', 'id2'); + + assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); + assertVariableValues(this.variableMap, 'name2', 'type1', 'id2'); + }); + + test('Two variables same name', function() { + this.variableMap.createVariable('name1', 'type1', 'id1'); + this.variableMap.createVariable('name1', 'type2', 'id2'); + + assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); + assertVariableValues(this.variableMap, 'name1', 'type2', 'id2'); + }); + + suite('Error cases', function() { + test('Id already exists', function() { + this.variableMap.createVariable('name1', 'type1', 'id1'); + const variableMap = this.variableMap; + chai.assert.throws(function() { + variableMap.createVariable('name2', 'type2', 'id1'); + }, /"id1".*in use/); + assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); + }); + + test('Mismatched id', function() { + this.variableMap.createVariable('name1', 'type1', 'id1'); + const variableMap = this.variableMap; + chai.assert.throws(function() { + variableMap.createVariable('name1', 'type1', 'id2'); + }, /"name1".*in use/); + assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); + }); + + test('Mismatched type', function() { + this.variableMap.createVariable('name1', 'type1', 'id1'); + const variableMap = this.variableMap; + chai.assert.throws(function() { + variableMap.createVariable('name1', 'type2', 'id1'); + }); + assertVariableValues(this.variableMap, 'name1', 'type1', 'id1'); + chai.assert.isNull(this.variableMap.getVariableById('id2')); + }); + }); + }); + + suite('getVariable', function() { + test('By name and type', function() { + const var1 = this.variableMap.createVariable('name1', 'type1', 'id1'); + const var2 = this.variableMap.createVariable('name2', 'type1', 'id2'); + const var3 = this.variableMap.createVariable('name3', 'type2', 'id3'); + const result1 = this.variableMap.getVariable('name1', 'type1'); + const result2 = this.variableMap.getVariable('name2', 'type1'); + const result3 = this.variableMap.getVariable('name3', 'type2'); + + // Searching by name + type is correct. + chai.assert.equal(result1, var1); + chai.assert.equal(result2, var2); + chai.assert.equal(result3, var3); + + // Searching only by name defaults to the '' type. + chai.assert.isNull(this.variableMap.getVariable('name1')); + chai.assert.isNull(this.variableMap.getVariable('name2')); + chai.assert.isNull(this.variableMap.getVariable('name3')); + }); + + test('Not found', function() { + const result = this.variableMap.getVariable('name1'); + chai.assert.isNull(result); + }); + }); + + suite('getVariableById', function() { + test('Trivial', function() { + const var1 = this.variableMap.createVariable('name1', 'type1', 'id1'); + const var2 = this.variableMap.createVariable('name2', 'type1', 'id2'); + const var3 = this.variableMap.createVariable('name3', 'type2', 'id3'); + const result1 = this.variableMap.getVariableById('id1'); + const result2 = this.variableMap.getVariableById('id2'); + const result3 = this.variableMap.getVariableById('id3'); + + chai.assert.equal(result1, var1); + chai.assert.equal(result2, var2); + chai.assert.equal(result3, var3); + }); + + test('Not found', function() { + const result = this.variableMap.getVariableById('id1'); + chai.assert.isNull(result); + }); + }); + + suite('getVariableTypes', function() { + test('Trivial', function() { + this.variableMap.createVariable('name1', 'type1', 'id1'); + this.variableMap.createVariable('name2', 'type1', 'id2'); + this.variableMap.createVariable('name3', 'type2', 'id3'); + this.variableMap.createVariable('name4', 'type3', 'id4'); + const resultArray = this.variableMap.getVariableTypes(); + // The empty string is always an option. + chai.assert.deepEqual(resultArray, ['type1', 'type2', 'type3', '']); + }); + + test('None', function() { + // The empty string is always an option. + const resultArray = this.variableMap.getVariableTypes(); + chai.assert.deepEqual(resultArray, ['']); + }); + }); + + suite('getVariablesOfType', function() { + test('Trivial', function() { + const var1 = this.variableMap.createVariable('name1', 'type1', 'id1'); + const var2 = this.variableMap.createVariable('name2', 'type1', 'id2'); + this.variableMap.createVariable('name3', 'type2', 'id3'); + this.variableMap.createVariable('name4', 'type3', 'id4'); + const resultArray1 = this.variableMap.getVariablesOfType('type1'); + const resultArray2 = this.variableMap.getVariablesOfType('type5'); + chai.assert.deepEqual(resultArray1, [var1, var2]); + chai.assert.deepEqual(resultArray2, []); + }); + + test('Null', function() { + const var1 = this.variableMap.createVariable('name1', '', 'id1'); + const var2 = this.variableMap.createVariable('name2', '', 'id2'); + const var3 = this.variableMap.createVariable('name3', '', 'id3'); + this.variableMap.createVariable('name4', 'type1', 'id4'); + const resultArray = this.variableMap.getVariablesOfType(null); + chai.assert.deepEqual(resultArray, [var1, var2, var3]); + }); + + test('Empty string', function() { + const var1 = this.variableMap.createVariable('name1', null, 'id1'); + const var2 = this.variableMap.createVariable('name2', null, 'id2'); + const resultArray = this.variableMap.getVariablesOfType(''); + chai.assert.deepEqual(resultArray, [var1, var2]); + }); + + test('Deleted', function() { + const variable = this.variableMap.createVariable('name1', null, 'id1'); + this.variableMap.deleteVariable(variable); + const resultArray = this.variableMap.getVariablesOfType(''); + chai.assert.deepEqual(resultArray, []); + }); + + test('Does not exist', function() { + const resultArray = this.variableMap.getVariablesOfType('type1'); + chai.assert.deepEqual(resultArray, []); + }); + }); + + suite('getAllVariables', function() { + test('Trivial', function() { + const var1 = this.variableMap.createVariable('name1', 'type1', 'id1'); + const var2 = this.variableMap.createVariable('name2', 'type1', 'id2'); + const var3 = this.variableMap.createVariable('name3', 'type2', 'id3'); + const resultArray = this.variableMap.getAllVariables(); + chai.assert.deepEqual(resultArray, [var1, var2, var3]); + }); + + test('None', function() { + const resultArray = this.variableMap.getAllVariables(); + chai.assert.deepEqual(resultArray, []); + }); + }); +}); diff --git a/tests/mocha/variable_model_test.js b/tests/mocha/variable_model_test.js index 08a1346424e..d6e4c5c1c28 100644 --- a/tests/mocha/variable_model_test.js +++ b/tests/mocha/variable_model_test.js @@ -1,64 +1,64 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.variableModel'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Variable Model', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - test('Trivial', function() { - const variable = new Blockly.VariableModel( - this.workspace, 'test', 'test_type', 'test_id'); - chai.assert.equal(variable.name, 'test'); - chai.assert.equal(variable.type, 'test_type'); - chai.assert.equal(variable.id_, 'test_id'); - }); - - test('Null type', function() { - const variable = new Blockly.VariableModel( - this.workspace, 'test', null, 'test_id'); - chai.assert.equal(variable.type, ''); - }); - - test('Undefined type', function() { - const variable = new Blockly.VariableModel( - this.workspace, 'test', undefined, 'test_id'); - chai.assert.equal(variable.type, ''); - }); - - test('Null id', function() { - const variable = new Blockly.VariableModel( - this.workspace, 'test', 'test_type', null); - chai.assert.equal(variable.name, 'test'); - chai.assert.equal(variable.type, 'test_type'); - chai.assert.exists(variable.id_); - }); - - test('Undefined id', function() { - const variable = new Blockly.VariableModel( - this.workspace, 'test', 'test_type', undefined); - chai.assert.equal(variable.name, 'test'); - chai.assert.equal(variable.type, 'test_type'); - chai.assert.exists(variable.id_); - }); - - test('Only name provided', function() { - const variable = new Blockly.VariableModel(this.workspace, 'test'); - chai.assert.equal(variable.name, 'test'); - chai.assert.equal(variable.type, ''); - chai.assert.exists(variable.id_); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.variableModel'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Variable Model', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + test('Trivial', function() { + const variable = new Blockly.VariableModel( + this.workspace, 'test', 'test_type', 'test_id'); + chai.assert.equal(variable.name, 'test'); + chai.assert.equal(variable.type, 'test_type'); + chai.assert.equal(variable.id_, 'test_id'); + }); + + test('Null type', function() { + const variable = new Blockly.VariableModel( + this.workspace, 'test', null, 'test_id'); + chai.assert.equal(variable.type, ''); + }); + + test('Undefined type', function() { + const variable = new Blockly.VariableModel( + this.workspace, 'test', undefined, 'test_id'); + chai.assert.equal(variable.type, ''); + }); + + test('Null id', function() { + const variable = new Blockly.VariableModel( + this.workspace, 'test', 'test_type', null); + chai.assert.equal(variable.name, 'test'); + chai.assert.equal(variable.type, 'test_type'); + chai.assert.exists(variable.id_); + }); + + test('Undefined id', function() { + const variable = new Blockly.VariableModel( + this.workspace, 'test', 'test_type', undefined); + chai.assert.equal(variable.name, 'test'); + chai.assert.equal(variable.type, 'test_type'); + chai.assert.exists(variable.id_); + }); + + test('Only name provided', function() { + const variable = new Blockly.VariableModel(this.workspace, 'test'); + chai.assert.equal(variable.name, 'test'); + chai.assert.equal(variable.type, ''); + chai.assert.exists(variable.id_); + }); +}); diff --git a/tests/mocha/variables_test.js b/tests/mocha/variables_test.js index e128576d063..1b66d1c191a 100644 --- a/tests/mocha/variables_test.js +++ b/tests/mocha/variables_test.js @@ -1,142 +1,142 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.variables'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Variables', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - Blockly.defineBlocksWithJsonArray([{ - "type": "get_var_block", - "message0": "%1", - "args0": [ - { - "type": "field_variable", - "name": "VAR", - "variableTypes": ["", "type1", "type2"], - }, - ], - }]); - this.workspace.createVariable('foo', 'type1', '1'); - this.workspace.createVariable('bar', 'type1', '2'); - this.workspace.createVariable('baz', 'type1', '3'); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - /** - * Create a test get_var_block. - * Will fail if get_var_block isn't defined. - * @param {!Blockly.Workspace} workspace The workspace on which to create the - * block. - * @param {!string} variableId The id of the variable to reference. - * @return {!Blockly.Block} The created block. - */ - function createTestVarBlock(workspace, variableId) { - // Turn off events to avoid testing XML at the same time. - Blockly.Events.disable(); - const block = new Blockly.Block(workspace, 'get_var_block'); - block.inputList[0].fieldRow[0].setValue(variableId); - Blockly.Events.enable(); - return block; - } - - suite('allUsedVarModels', function() { - test('All used', function() { - createTestVarBlock(this.workspace, '1'); - createTestVarBlock(this.workspace, '2'); - createTestVarBlock(this.workspace, '3'); - - const result = Blockly.Variables.allUsedVarModels(this.workspace); - chai.assert.equal(result.length, 3, - 'Expected three variables in the list of used variables'); - }); - - test('Some unused', function() { - createTestVarBlock(this.workspace, '2'); - - const result = Blockly.Variables.allUsedVarModels(this.workspace); - chai.assert.equal(result.length, 1, - 'Expected one variable in the list of used variables'); - chai.assert.equal(result[0].getId(), '2', - 'Expected variable with ID 2 in the list of used variables'); - }); - - test('Var used twice', function() { - createTestVarBlock(this.workspace, '2'); - createTestVarBlock(this.workspace, '2'); - - const result = Blockly.Variables.allUsedVarModels(this.workspace); - // Using the same variable multiple times should not change the number of - // elements in the list. - chai.assert.equal(result.length, 1, - 'Expected one variable in the list of used variables'); - chai.assert.equal(result[0].getId(), '2', - 'Expected variable with ID 2 in the list of used variables'); - }); - - test('All unused', function() { - const result = Blockly.Variables.allUsedVarModels(this.workspace); - chai.assert.equal(result.length, 0, - 'Expected no variables in the list of used variables'); - }); - }); - - suite('getVariable', function() { - test('By id', function() { - const var1 = this.workspace.createVariable('name1', 'type1', 'id1'); - const var2 = this.workspace.createVariable('name2', 'type1', 'id2'); - const var3 = this.workspace.createVariable('name3', 'type2', 'id3'); - const result1 = Blockly.Variables.getVariable(this.workspace, 'id1'); - const result2 = Blockly.Variables.getVariable(this.workspace, 'id2'); - const result3 = Blockly.Variables.getVariable(this.workspace, 'id3'); - - chai.assert.equal(var1, result1); - chai.assert.equal(var2, result2); - chai.assert.equal(var3, result3); - }); - - test('By name and type', function() { - const var1 = this.workspace.createVariable('name1', 'type1', 'id1'); - const var2 = this.workspace.createVariable('name2', 'type1', 'id2'); - const var3 = this.workspace.createVariable('name3', 'type2', 'id3'); - const result1 = - Blockly.Variables.getVariable(this.workspace, null, 'name1', 'type1'); - const result2 = - Blockly.Variables.getVariable(this.workspace, null, 'name2', 'type1'); - const result3 = - Blockly.Variables.getVariable(this.workspace, null, 'name3', 'type2'); - - // Searching by name + type is correct. - chai.assert.equal(var1, result1); - chai.assert.equal(var2, result2); - chai.assert.equal(var3, result3); - }); - - test('Bad id with name and type fallback', function() { - const var1 = this.workspace.createVariable('name1', 'type1', 'id1'); - const var2 = this.workspace.createVariable('name2', 'type1', 'id2'); - const var3 = this.workspace.createVariable('name3', 'type2', 'id3'); - const result1 = - Blockly.Variables.getVariable(this.workspace, 'badId', 'name1', 'type1'); - const result2 = - Blockly.Variables.getVariable(this.workspace, 'badId', 'name2', 'type1'); - const result3 = - Blockly.Variables.getVariable(this.workspace, 'badId', 'name3', 'type2'); - - // Searching by ID failed, but falling back onto name + type is correct. - chai.assert.equal(var1, result1); - chai.assert.equal(var2, result2); - chai.assert.equal(var3, result3); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.variables'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Variables', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + Blockly.defineBlocksWithJsonArray([{ + "type": "get_var_block", + "message0": "%1", + "args0": [ + { + "type": "field_variable", + "name": "VAR", + "variableTypes": ["", "type1", "type2"], + }, + ], + }]); + this.workspace.createVariable('foo', 'type1', '1'); + this.workspace.createVariable('bar', 'type1', '2'); + this.workspace.createVariable('baz', 'type1', '3'); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + /** + * Create a test get_var_block. + * Will fail if get_var_block isn't defined. + * @param {!Blockly.Workspace} workspace The workspace on which to create the + * block. + * @param {!string} variableId The id of the variable to reference. + * @return {!Blockly.Block} The created block. + */ + function createTestVarBlock(workspace, variableId) { + // Turn off events to avoid testing XML at the same time. + Blockly.Events.disable(); + const block = new Blockly.Block(workspace, 'get_var_block'); + block.inputList[0].fieldRow[0].setValue(variableId); + Blockly.Events.enable(); + return block; + } + + suite('allUsedVarModels', function() { + test('All used', function() { + createTestVarBlock(this.workspace, '1'); + createTestVarBlock(this.workspace, '2'); + createTestVarBlock(this.workspace, '3'); + + const result = Blockly.Variables.allUsedVarModels(this.workspace); + chai.assert.equal(result.length, 3, + 'Expected three variables in the list of used variables'); + }); + + test('Some unused', function() { + createTestVarBlock(this.workspace, '2'); + + const result = Blockly.Variables.allUsedVarModels(this.workspace); + chai.assert.equal(result.length, 1, + 'Expected one variable in the list of used variables'); + chai.assert.equal(result[0].getId(), '2', + 'Expected variable with ID 2 in the list of used variables'); + }); + + test('Var used twice', function() { + createTestVarBlock(this.workspace, '2'); + createTestVarBlock(this.workspace, '2'); + + const result = Blockly.Variables.allUsedVarModels(this.workspace); + // Using the same variable multiple times should not change the number of + // elements in the list. + chai.assert.equal(result.length, 1, + 'Expected one variable in the list of used variables'); + chai.assert.equal(result[0].getId(), '2', + 'Expected variable with ID 2 in the list of used variables'); + }); + + test('All unused', function() { + const result = Blockly.Variables.allUsedVarModels(this.workspace); + chai.assert.equal(result.length, 0, + 'Expected no variables in the list of used variables'); + }); + }); + + suite('getVariable', function() { + test('By id', function() { + const var1 = this.workspace.createVariable('name1', 'type1', 'id1'); + const var2 = this.workspace.createVariable('name2', 'type1', 'id2'); + const var3 = this.workspace.createVariable('name3', 'type2', 'id3'); + const result1 = Blockly.Variables.getVariable(this.workspace, 'id1'); + const result2 = Blockly.Variables.getVariable(this.workspace, 'id2'); + const result3 = Blockly.Variables.getVariable(this.workspace, 'id3'); + + chai.assert.equal(var1, result1); + chai.assert.equal(var2, result2); + chai.assert.equal(var3, result3); + }); + + test('By name and type', function() { + const var1 = this.workspace.createVariable('name1', 'type1', 'id1'); + const var2 = this.workspace.createVariable('name2', 'type1', 'id2'); + const var3 = this.workspace.createVariable('name3', 'type2', 'id3'); + const result1 = + Blockly.Variables.getVariable(this.workspace, null, 'name1', 'type1'); + const result2 = + Blockly.Variables.getVariable(this.workspace, null, 'name2', 'type1'); + const result3 = + Blockly.Variables.getVariable(this.workspace, null, 'name3', 'type2'); + + // Searching by name + type is correct. + chai.assert.equal(var1, result1); + chai.assert.equal(var2, result2); + chai.assert.equal(var3, result3); + }); + + test('Bad id with name and type fallback', function() { + const var1 = this.workspace.createVariable('name1', 'type1', 'id1'); + const var2 = this.workspace.createVariable('name2', 'type1', 'id2'); + const var3 = this.workspace.createVariable('name3', 'type2', 'id3'); + const result1 = + Blockly.Variables.getVariable(this.workspace, 'badId', 'name1', 'type1'); + const result2 = + Blockly.Variables.getVariable(this.workspace, 'badId', 'name2', 'type1'); + const result3 = + Blockly.Variables.getVariable(this.workspace, 'badId', 'name3', 'type2'); + + // Searching by ID failed, but falling back onto name + type is correct. + chai.assert.equal(var1, result1); + chai.assert.equal(var2, result2); + chai.assert.equal(var3, result3); + }); + }); +}); diff --git a/tests/mocha/widget_div_test.js b/tests/mocha/widget_div_test.js index dade0287845..1265f646775 100644 --- a/tests/mocha/widget_div_test.js +++ b/tests/mocha/widget_div_test.js @@ -1,172 +1,172 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.widgetDiv'); - -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('WidgetDiv', function() { - setup(function() { - sharedTestSetup.call(this); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('positionWithAnchor', function() { - function makeBBox(left, top, width, height) { - return { - left: left, - right: left + width, - top: top, - bottom: top + height, - width: width, - height: height, - }; - } - - setup(function() { - Blockly.WidgetDiv.createDom(); - this.viewportBBox = makeBBox(0, 0, 1000, 1003); - this.widgetSize = { - width: 100, - height: 102, - }; - this.anchorSize = { - width: 90, - height: 91, - }; - - this.testWidgetPosition = function( - anchorBBox, rtl, expectedX, expectedY, expectedHeight) { - Blockly.WidgetDiv.positionWithAnchor( - this.viewportBBox, anchorBBox, this.widgetSize, rtl); - const style = Blockly.WidgetDiv.getDiv().style; - chai.assert.equal(style.left, expectedX + 'px', 'Left'); - chai.assert.equal(style.top, expectedY + 'px', 'Top'); - chai.assert.equal(style.height, expectedHeight + 'px', 'Height'); - }; - }); - - suite('LTR', function() { - test('noConflict', function() { - // Anchor placed in the middle. - const anchorBBox = - makeBBox(500, 500, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed just below at the left side of the - // anchor. - const expectedX = anchorBBox.left; - const expectedY = anchorBBox.top + this.anchorSize.height; - this.testWidgetPosition( - anchorBBox, false, expectedX, expectedY, this.widgetSize.height); - }); - - test('topConflict', function() { - // Anchor close to the top. - const anchorBBox = - makeBBox(500, 50, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed just below the anchor. - const expectedX = anchorBBox.left; - const expectedY = anchorBBox.top + this.anchorSize.height; - this.testWidgetPosition( - anchorBBox, false, expectedX, expectedY, this.widgetSize.height); - }); - - test('bottomConflict', function() { - // Anchor placed close to the bottom. - const anchorBBox = - makeBBox(500, 900, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed just above the anchor. - const expectedX = anchorBBox.left; - const expectedY = anchorBBox.top - this.widgetSize.height; - this.testWidgetPosition( - anchorBBox, false, expectedX, expectedY, this.widgetSize.height); - }); - - test('leftConflict', function() { - // Anchor placed close to the left side. - const anchorBBox = - makeBBox(50, 500, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed at the anchor. - const expectedX = anchorBBox.left; - const expectedY = anchorBBox.top + this.anchorSize.height; - this.testWidgetPosition( - anchorBBox, false, expectedX, expectedY, this.widgetSize.height); - }); - - test('rightConflict', function() { - // Anchor placed close to the right side. - const anchorBBox = - makeBBox(950, 500, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed as far right as possible--at the edge of - // the screen. - const expectedX = this.viewportBBox.width - this.widgetSize.width; - const expectedY = anchorBBox.top + this.anchorSize.height; - this.testWidgetPosition( - anchorBBox, false, expectedX, expectedY, this.widgetSize.height); - }); - }); - suite('RTL', function() { - test('noConflict', function() { - // Anchor placed in the middle - const anchorBBox = - makeBBox(500, 500, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed at the right side of the anchor. - const expectedX = anchorBBox.right - this.widgetSize.width; - const expectedY = anchorBBox.top + this.anchorSize.height; - this.testWidgetPosition( - anchorBBox, true, expectedX, expectedY, this.widgetSize.height); - }); - - test('topConflict', function() { - // Anchor close to the top. - const anchorBBox = - makeBBox(500, 50, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed just below the anchor. - const expectedX = anchorBBox.right - this.widgetSize.width; - const expectedY = anchorBBox.top + this.anchorSize.height; - this.testWidgetPosition( - anchorBBox, true, expectedX, expectedY, this.widgetSize.height); - }); - - test('bottomConflict', function() { - // Anchor placed close to the bottom. - const anchorBBox = - makeBBox(500, 900, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed just above the anchor. - const expectedX = anchorBBox.right - this.widgetSize.width; - const expectedY = anchorBBox.top - this.widgetSize.height; - this.testWidgetPosition( - anchorBBox, true, expectedX, expectedY, this.widgetSize.height); - }); - - test('leftConflict', function() { - // Anchor placed close to the left side. - const anchorBBox = - makeBBox(10, 500, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed as far left as possible--at the edge of - // the screen. - const expectedX = 0; - const expectedY = anchorBBox.top + this.anchorSize.height; - this.testWidgetPosition( - anchorBBox, true, expectedX, expectedY, this.widgetSize.height); - }); - - test('rightConflict', function() { - // Anchor placed close to the right side. - const anchorBBox = - makeBBox(950, 500, this.anchorSize.width, this.anchorSize.height); - // The widget div should be placed as far right as possible--at the edge of - // the screen. - const expectedX = this.viewportBBox.width - this.widgetSize.width; - const expectedY = anchorBBox.top + this.anchorSize.height; - this.testWidgetPosition( - anchorBBox, true, expectedX, expectedY, this.widgetSize.height); - }); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.widgetDiv'); + +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('WidgetDiv', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('positionWithAnchor', function() { + function makeBBox(left, top, width, height) { + return { + left: left, + right: left + width, + top: top, + bottom: top + height, + width: width, + height: height, + }; + } + + setup(function() { + Blockly.WidgetDiv.createDom(); + this.viewportBBox = makeBBox(0, 0, 1000, 1003); + this.widgetSize = { + width: 100, + height: 102, + }; + this.anchorSize = { + width: 90, + height: 91, + }; + + this.testWidgetPosition = function( + anchorBBox, rtl, expectedX, expectedY, expectedHeight) { + Blockly.WidgetDiv.positionWithAnchor( + this.viewportBBox, anchorBBox, this.widgetSize, rtl); + const style = Blockly.WidgetDiv.getDiv().style; + chai.assert.equal(style.left, expectedX + 'px', 'Left'); + chai.assert.equal(style.top, expectedY + 'px', 'Top'); + chai.assert.equal(style.height, expectedHeight + 'px', 'Height'); + }; + }); + + suite('LTR', function() { + test('noConflict', function() { + // Anchor placed in the middle. + const anchorBBox = + makeBBox(500, 500, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed just below at the left side of the + // anchor. + const expectedX = anchorBBox.left; + const expectedY = anchorBBox.top + this.anchorSize.height; + this.testWidgetPosition( + anchorBBox, false, expectedX, expectedY, this.widgetSize.height); + }); + + test('topConflict', function() { + // Anchor close to the top. + const anchorBBox = + makeBBox(500, 50, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed just below the anchor. + const expectedX = anchorBBox.left; + const expectedY = anchorBBox.top + this.anchorSize.height; + this.testWidgetPosition( + anchorBBox, false, expectedX, expectedY, this.widgetSize.height); + }); + + test('bottomConflict', function() { + // Anchor placed close to the bottom. + const anchorBBox = + makeBBox(500, 900, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed just above the anchor. + const expectedX = anchorBBox.left; + const expectedY = anchorBBox.top - this.widgetSize.height; + this.testWidgetPosition( + anchorBBox, false, expectedX, expectedY, this.widgetSize.height); + }); + + test('leftConflict', function() { + // Anchor placed close to the left side. + const anchorBBox = + makeBBox(50, 500, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed at the anchor. + const expectedX = anchorBBox.left; + const expectedY = anchorBBox.top + this.anchorSize.height; + this.testWidgetPosition( + anchorBBox, false, expectedX, expectedY, this.widgetSize.height); + }); + + test('rightConflict', function() { + // Anchor placed close to the right side. + const anchorBBox = + makeBBox(950, 500, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed as far right as possible--at the edge of + // the screen. + const expectedX = this.viewportBBox.width - this.widgetSize.width; + const expectedY = anchorBBox.top + this.anchorSize.height; + this.testWidgetPosition( + anchorBBox, false, expectedX, expectedY, this.widgetSize.height); + }); + }); + suite('RTL', function() { + test('noConflict', function() { + // Anchor placed in the middle + const anchorBBox = + makeBBox(500, 500, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed at the right side of the anchor. + const expectedX = anchorBBox.right - this.widgetSize.width; + const expectedY = anchorBBox.top + this.anchorSize.height; + this.testWidgetPosition( + anchorBBox, true, expectedX, expectedY, this.widgetSize.height); + }); + + test('topConflict', function() { + // Anchor close to the top. + const anchorBBox = + makeBBox(500, 50, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed just below the anchor. + const expectedX = anchorBBox.right - this.widgetSize.width; + const expectedY = anchorBBox.top + this.anchorSize.height; + this.testWidgetPosition( + anchorBBox, true, expectedX, expectedY, this.widgetSize.height); + }); + + test('bottomConflict', function() { + // Anchor placed close to the bottom. + const anchorBBox = + makeBBox(500, 900, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed just above the anchor. + const expectedX = anchorBBox.right - this.widgetSize.width; + const expectedY = anchorBBox.top - this.widgetSize.height; + this.testWidgetPosition( + anchorBBox, true, expectedX, expectedY, this.widgetSize.height); + }); + + test('leftConflict', function() { + // Anchor placed close to the left side. + const anchorBBox = + makeBBox(10, 500, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed as far left as possible--at the edge of + // the screen. + const expectedX = 0; + const expectedY = anchorBBox.top + this.anchorSize.height; + this.testWidgetPosition( + anchorBBox, true, expectedX, expectedY, this.widgetSize.height); + }); + + test('rightConflict', function() { + // Anchor placed close to the right side. + const anchorBBox = + makeBBox(950, 500, this.anchorSize.width, this.anchorSize.height); + // The widget div should be placed as far right as possible--at the edge of + // the screen. + const expectedX = this.viewportBBox.width - this.widgetSize.width; + const expectedY = anchorBBox.top + this.anchorSize.height; + this.testWidgetPosition( + anchorBBox, true, expectedX, expectedY, this.widgetSize.height); + }); + }); + }); +}); diff --git a/tests/mocha/workspace_comment_test.js b/tests/mocha/workspace_comment_test.js index 233e42e3918..ca643837dbf 100644 --- a/tests/mocha/workspace_comment_test.js +++ b/tests/mocha/workspace_comment_test.js @@ -1,200 +1,200 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.workspaceComment'); - -goog.require('Blockly.WorkspaceComment'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); - - -suite('Workspace comment', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite('getTopComments(ordered=true)', function() { - test('No comments', function() { - chai.assert.equal(this.workspace.getTopComments(true).length, 0); - }); - - test('One comment', function() { - const comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - chai.assert.equal(this.workspace.getTopComments(true).length, 1); - chai.assert.equal(this.workspace.commentDB_['comment id'], comment); - }); - - test('After clear empty workspace', function() { - this.workspace.clear(); - chai.assert.equal(this.workspace.getTopComments(true).length, 0); - }); - - test('After clear non-empty workspace', function() { - new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - this.workspace.clear(); - chai.assert.equal(this.workspace.getTopComments(true).length, 0); - chai.assert.isFalse('comment id' in this.workspace.commentDB_); - }); - - test('After dispose', function() { - const comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - comment.dispose(); - chai.assert.equal(this.workspace.getTopComments(true).length, 0); - chai.assert.isFalse('comment id' in this.workspace.commentDB_); - }); - }); - - suite('getTopComments(ordered=false)', function() { - test('No comments', function() { - chai.assert.equal(this.workspace.getTopComments(false).length, 0); - }); - - test('One comment', function() { - const comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - chai.assert.equal(this.workspace.getTopComments(false).length, 1); - chai.assert.equal(this.workspace.commentDB_['comment id'], comment); - }); - - test('After clear empty workspace', function() { - this.workspace.clear(); - chai.assert.equal(this.workspace.getTopComments(false).length, 0); - }); - - test('After clear non-empty workspace', function() { - new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - this.workspace.clear(); - chai.assert.equal(this.workspace.getTopComments(false).length, 0); - chai.assert.isFalse('comment id' in this.workspace.commentDB_); - }); - - test('After dispose', function() { - const comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - comment.dispose(); - chai.assert.equal(this.workspace.getTopComments(false).length, 0); - chai.assert.isFalse('comment id' in this.workspace.commentDB_); - }); - }); - - suite('getCommentById', function() { - test('Trivial', function() { - const comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - chai.assert.equal(this.workspace.getCommentById(comment.id), comment); - }); - - test('Null id', function() { - chai.assert.isNull(this.workspace.getCommentById(null)); - }); - - test('Non-existent id', function() { - chai.assert.isNull(this.workspace.getCommentById('badId')); - }); - - test('After dispose', function() { - const comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - comment.dispose(); - chai.assert.isNull(this.workspace.getCommentById(comment.id)); - }); - }); - - suite('dispose', function() { - test('Called twice', function() { - const comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - comment.dispose(); - // Nothing should go wrong the second time dispose is called. - comment.dispose(); - }); - }); - - suite('Width and height', function() { - setup(function() { - this.comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 10, 20, 'comment id'); - }); - - test('Initial values', function() { - chai.assert.equal(this.comment.getWidth(), 20, 'Width'); - chai.assert.equal(this.comment.getHeight(), 10, 'Height'); - }); - - test('setWidth does not affect height', function() { - this.comment.setWidth(30); - chai.assert.equal(this.comment.getWidth(), 30, 'Width'); - chai.assert.equal(this.comment.getHeight(), 10, 'Height'); - }); - - test('setHeight does not affect width', function() { - this.comment.setHeight(30); - chai.assert.equal(this.comment.getWidth(), 20, 'Width'); - chai.assert.equal(this.comment.getHeight(), 30, 'Height'); - }); - }); - - suite('XY position', function() { - setup(function() { - this.comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 10, 20, 'comment id'); - }); - - test('Initial position', function() { - const xy = this.comment.getXY(); - chai.assert.equal(xy.x, 0, 'Initial X position'); - chai.assert.equal(xy.y, 0, 'Initial Y position'); - }); - - test('moveBy', function() { - this.comment.moveBy(10, 100); - const xy = this.comment.getXY(); - chai.assert.equal(xy.x, 10, 'New X position'); - chai.assert.equal(xy.y, 100, 'New Y position'); - }); - }); - - suite('Content', function() { - setup(function() { - this.comment = new Blockly.WorkspaceComment( - this.workspace, 'comment text', 0, 0, 'comment id'); - }); - - teardown(function() { - sinon.restore(); - }); - - test('After creation', function() { - chai.assert.equal( - this.comment.getContent(), 'comment text'); - chai.assert.equal( - this.workspace.undoStack_.length, 1, 'Workspace undo stack'); - }); - - test('Set to same value', function() { - this.comment.setContent('comment text'); - chai.assert.equal(this.comment.getContent(), 'comment text'); - // Setting the text to the old value does not fire an event. - chai.assert.equal( - this.workspace.undoStack_.length, 1, 'Workspace undo stack'); - }); - - test('Set to different value', function() { - this.comment.setContent('new comment text'); - chai.assert.equal(this.comment.getContent(), 'new comment text'); - chai.assert.equal( - this.workspace.undoStack_.length, 2, 'Workspace undo stack'); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.workspaceComment'); + +goog.require('Blockly.WorkspaceComment'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); + + +suite('Workspace comment', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('getTopComments(ordered=true)', function() { + test('No comments', function() { + chai.assert.equal(this.workspace.getTopComments(true).length, 0); + }); + + test('One comment', function() { + const comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + chai.assert.equal(this.workspace.getTopComments(true).length, 1); + chai.assert.equal(this.workspace.commentDB_['comment id'], comment); + }); + + test('After clear empty workspace', function() { + this.workspace.clear(); + chai.assert.equal(this.workspace.getTopComments(true).length, 0); + }); + + test('After clear non-empty workspace', function() { + new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + this.workspace.clear(); + chai.assert.equal(this.workspace.getTopComments(true).length, 0); + chai.assert.isFalse('comment id' in this.workspace.commentDB_); + }); + + test('After dispose', function() { + const comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + comment.dispose(); + chai.assert.equal(this.workspace.getTopComments(true).length, 0); + chai.assert.isFalse('comment id' in this.workspace.commentDB_); + }); + }); + + suite('getTopComments(ordered=false)', function() { + test('No comments', function() { + chai.assert.equal(this.workspace.getTopComments(false).length, 0); + }); + + test('One comment', function() { + const comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + chai.assert.equal(this.workspace.getTopComments(false).length, 1); + chai.assert.equal(this.workspace.commentDB_['comment id'], comment); + }); + + test('After clear empty workspace', function() { + this.workspace.clear(); + chai.assert.equal(this.workspace.getTopComments(false).length, 0); + }); + + test('After clear non-empty workspace', function() { + new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + this.workspace.clear(); + chai.assert.equal(this.workspace.getTopComments(false).length, 0); + chai.assert.isFalse('comment id' in this.workspace.commentDB_); + }); + + test('After dispose', function() { + const comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + comment.dispose(); + chai.assert.equal(this.workspace.getTopComments(false).length, 0); + chai.assert.isFalse('comment id' in this.workspace.commentDB_); + }); + }); + + suite('getCommentById', function() { + test('Trivial', function() { + const comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + chai.assert.equal(this.workspace.getCommentById(comment.id), comment); + }); + + test('Null id', function() { + chai.assert.isNull(this.workspace.getCommentById(null)); + }); + + test('Non-existent id', function() { + chai.assert.isNull(this.workspace.getCommentById('badId')); + }); + + test('After dispose', function() { + const comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + comment.dispose(); + chai.assert.isNull(this.workspace.getCommentById(comment.id)); + }); + }); + + suite('dispose', function() { + test('Called twice', function() { + const comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + comment.dispose(); + // Nothing should go wrong the second time dispose is called. + comment.dispose(); + }); + }); + + suite('Width and height', function() { + setup(function() { + this.comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 10, 20, 'comment id'); + }); + + test('Initial values', function() { + chai.assert.equal(this.comment.getWidth(), 20, 'Width'); + chai.assert.equal(this.comment.getHeight(), 10, 'Height'); + }); + + test('setWidth does not affect height', function() { + this.comment.setWidth(30); + chai.assert.equal(this.comment.getWidth(), 30, 'Width'); + chai.assert.equal(this.comment.getHeight(), 10, 'Height'); + }); + + test('setHeight does not affect width', function() { + this.comment.setHeight(30); + chai.assert.equal(this.comment.getWidth(), 20, 'Width'); + chai.assert.equal(this.comment.getHeight(), 30, 'Height'); + }); + }); + + suite('XY position', function() { + setup(function() { + this.comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 10, 20, 'comment id'); + }); + + test('Initial position', function() { + const xy = this.comment.getXY(); + chai.assert.equal(xy.x, 0, 'Initial X position'); + chai.assert.equal(xy.y, 0, 'Initial Y position'); + }); + + test('moveBy', function() { + this.comment.moveBy(10, 100); + const xy = this.comment.getXY(); + chai.assert.equal(xy.x, 10, 'New X position'); + chai.assert.equal(xy.y, 100, 'New Y position'); + }); + }); + + suite('Content', function() { + setup(function() { + this.comment = new Blockly.WorkspaceComment( + this.workspace, 'comment text', 0, 0, 'comment id'); + }); + + teardown(function() { + sinon.restore(); + }); + + test('After creation', function() { + chai.assert.equal( + this.comment.getContent(), 'comment text'); + chai.assert.equal( + this.workspace.undoStack_.length, 1, 'Workspace undo stack'); + }); + + test('Set to same value', function() { + this.comment.setContent('comment text'); + chai.assert.equal(this.comment.getContent(), 'comment text'); + // Setting the text to the old value does not fire an event. + chai.assert.equal( + this.workspace.undoStack_.length, 1, 'Workspace undo stack'); + }); + + test('Set to different value', function() { + this.comment.setContent('new comment text'); + chai.assert.equal(this.comment.getContent(), 'new comment text'); + chai.assert.equal( + this.workspace.undoStack_.length, 2, 'Workspace undo stack'); + }); + }); +}); diff --git a/tests/mocha/workspace_svg_test.js b/tests/mocha/workspace_svg_test.js index f5fe4cd70ba..ab7f2a31a3c 100644 --- a/tests/mocha/workspace_svg_test.js +++ b/tests/mocha/workspace_svg_test.js @@ -1,354 +1,354 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.workspaceSvg'); - -const {assertEventFired, assertEventNotFired, createFireChangeListenerSpy} = goog.require('Blockly.test.helpers.events'); -const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); -const {defineStackBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); -const eventUtils = goog.require('Blockly.Events.utils'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {testAWorkspace} = goog.require('Blockly.test.helpers.workspace'); - - -suite('WorkspaceSvg', function() { - setup(function() { - sharedTestSetup.call(this); - const toolbox = document.getElementById('toolbox-categories'); - this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); - Blockly.defineBlocksWithJsonArray([{ - 'type': 'simple_test_block', - 'message0': 'simple test block', - 'output': null, - }, - { - 'type': 'test_val_in', - 'message0': 'test in %1', - 'args0': [ - { - 'type': 'input_value', - 'name': 'NAME', - }, - ], - }]); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - test('dispose of WorkspaceSvg without dom throws no error', function() { - const ws = new Blockly.WorkspaceSvg(new Blockly.Options({})); - ws.dispose(); - }); - - test('appendDomToWorkspace alignment', function() { - const dom = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ''); - Blockly.Xml.appendDomToWorkspace(dom, this.workspace); - chai.assert.equal(this.workspace.getAllBlocks(false).length, 1, - 'Block count'); - Blockly.Xml.appendDomToWorkspace(dom, this.workspace); - chai.assert.equal(this.workspace.getAllBlocks(false).length, 2, - 'Block count'); - const blocks = this.workspace.getAllBlocks(false); - chai.assert.equal(blocks[0].getRelativeToSurfaceXY().x, 21, - 'Block 1 position x'); - chai.assert.equal(blocks[0].getRelativeToSurfaceXY().y, 23, - 'Block 1 position y'); - chai.assert.equal(blocks[1].getRelativeToSurfaceXY().x, 21, - 'Block 2 position x'); - // Y separation value defined in appendDomToWorkspace as 10 - chai.assert.equal(blocks[1].getRelativeToSurfaceXY().y, - 23 + blocks[0].getHeightWidth().height + 10, - 'Block 2 position y'); - }); - - test('Replacing shadow disposes svg', function() { - const dom = Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '' + - '' + - ''); - - Blockly.Xml.appendDomToWorkspace(dom, this.workspace); - const blocks = this.workspace.getAllBlocks(false); - chai.assert.equal(blocks.length, 2, 'Block count'); - const shadowBlock = blocks[1]; - chai.assert.exists(shadowBlock.getSvgRoot()); - - const block = this.workspace.newBlock('simple_test_block'); - block.initSvg(); - - const inputConnection = - this.workspace.getTopBlocks()[0].getInput('NAME').connection; - inputConnection.connect(block.outputConnection); - chai.assert.exists(block.getSvgRoot()); - chai.assert.notExists(shadowBlock.getSvgRoot()); - }); - - suite('updateToolbox', function() { - test('Passes in null when toolbox exists', function() { - chai.assert.throws(function() { - this.workspace.updateToolbox(null); - }.bind(this), 'Can\'t nullify an existing toolbox.'); - }); - test('Passes in toolbox def when current toolbox is null', function() { - this.workspace.options.languageTree = null; - chai.assert.throws(function() { - this.workspace.updateToolbox({'contents': []}); - }.bind(this), 'Existing toolbox is null. Can\'t create new toolbox.'); - }); - test('Existing toolbox has no categories', function() { - sinon.stub(Blockly.utils.toolbox, 'hasCategories').returns(true); - this.workspace.toolbox_ = null; - chai.assert.throws(function() { - this.workspace.updateToolbox({'contents': []}); - }.bind(this), 'Existing toolbox has no categories. Can\'t change mode.'); - }); - test('Existing toolbox has categories', function() { - sinon.stub(Blockly.utils.toolbox, 'hasCategories').returns(false); - this.workspace.flyout_ = null; - chai.assert.throws(function() { - this.workspace.updateToolbox({'contents': []}); - }.bind(this), 'Existing toolbox has categories. Can\'t change mode.'); - }); - }); - - suite('addTopBlock', function() { - setup(function() { - this.targetWorkspace = new Blockly.Workspace(); - this.workspace.isFlyout = true; - this.workspace.targetWorkspace = this.targetWorkspace; - Blockly.defineBlocksWithJsonArray([{ - "type": "get_var_block", - "message0": "%1", - "args0": [ - { - "type": "field_variable", - "name": "VAR", - "variableTypes": ["", "type1", "type2"], - }, - ], - }]); - }); - - teardown(function() { - // Have to dispose of the main workspace after the flyout workspace - // because it holds the variable map. - // Normally the main workspace disposes of the flyout workspace. - workspaceTeardown.call(this, this.targetWorkspace); - }); - - test('Trivial Flyout is True', function() { - this.targetWorkspace.createVariable('name1', '', '1'); - - // Flyout.init usually does this binding. - this.workspace.variableMap_ = this.targetWorkspace.getVariableMap(); - - Blockly.Events.disable(); - const block = new Blockly.Block(this.workspace, 'get_var_block'); - block.inputList[0].fieldRow[0].setValue('1'); - Blockly.Events.enable(); - - this.workspace.removeTopBlock(block); - this.workspace.addTopBlock(block); - assertVariableValues(this.workspace, 'name1', '', '1'); - }); - }); - - suite('Viewport change events', function() { - function resetEventHistory(eventsFireStub, changeListenerSpy) { - eventsFireStub.resetHistory(); - changeListenerSpy.resetHistory(); - } - function assertSpyFiredViewportEvent(spy, workspace, expectedProperties) { - assertEventFired( - spy, Blockly.Events.ViewportChange, expectedProperties, - workspace.id); - assertEventFired(spy, Blockly.Events.ViewportChange, expectedProperties, - workspace.id); - } - function assertViewportEventFired(eventsFireStub, changeListenerSpy, - workspace, expectedEventCount = 1) { - const metrics = workspace.getMetrics(); - const expectedProperties = { - scale: workspace.scale, - oldScale: 1, - viewTop: metrics.viewTop, - viewLeft: metrics.viewLeft, - type: eventUtils.VIEWPORT_CHANGE, - }; - assertSpyFiredViewportEvent( - eventsFireStub, workspace, expectedProperties); - assertSpyFiredViewportEvent( - changeListenerSpy, workspace, expectedProperties); - sinon.assert.callCount(changeListenerSpy, expectedEventCount); - sinon.assert.callCount(eventsFireStub, expectedEventCount); - } - function runViewportEventTest(eventTriggerFunc, eventsFireStub, - changeListenerSpy, workspace, clock, expectedEventCount = 1) { - clock.runAll(); - resetEventHistory(eventsFireStub, changeListenerSpy); - eventTriggerFunc(); - assertViewportEventFired( - eventsFireStub, changeListenerSpy, workspace, expectedEventCount); - } - setup(function() { - defineStackBlock(); - this.changeListenerSpy = createFireChangeListenerSpy(this.workspace); - }); - teardown(function() { - delete Blockly.Blocks['stack_block']; - }); - - suite('zoom', function() { - test('setScale', function() { - runViewportEventTest(() => this.workspace.setScale(2), - this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock); - }); - test('zoom(50, 50, 1)', function() { - runViewportEventTest(() => this.workspace.zoom(50, 50, 1), - this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock); - }); - test('zoom(50, 50, -1)', function() { - runViewportEventTest(() => this.workspace.zoom(50, 50, -1), - this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock); - }); - test('zoomCenter(1)', function() { - runViewportEventTest(() => this.workspace.zoomCenter(1), - this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock); - }); - test('zoomCenter(-1)', function() { - runViewportEventTest(() => this.workspace.zoomCenter(-1), - this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock); - }); - test('zoomToFit', function() { - const block = this.workspace.newBlock('stack_block'); - block.initSvg(); - block.render(); - runViewportEventTest(() => this.workspace.zoomToFit(), - this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock); - }); - }); - suite('scroll', function() { - test('centerOnBlock', function() { - const block = this.workspace.newBlock('stack_block'); - block.initSvg(); - block.render(); - runViewportEventTest(() => this.workspace.zoomToFit(block.id), - this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock); - }); - test('scroll', function() { - runViewportEventTest(() => this.workspace.scroll(50, 50), - this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock); - }); - test('scrollCenter', function() { - runViewportEventTest(() => this.workspace.scrollCenter(), - this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock); - }); - }); - suite('Blocks triggering viewport changes', function() { - test('block move that triggers scroll', function() { - const block = this.workspace.newBlock('stack_block'); - block.initSvg(); - block.render(); - this.clock.runAll(); - resetEventHistory(this.eventsFireStub, this.changeListenerSpy); - // Expect 2 events, 1 move, 1 viewport - runViewportEventTest(() => { - block.moveBy(1000, 1000); - }, this.eventsFireStub, this.changeListenerSpy, this.workspace, - this.clock, 2); - }); - test('domToWorkspace that doesn\'t trigger scroll', function() { - // 4 blocks with space in center. - Blockly.Xml.domToWorkspace( - Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '' + - ''), - this.workspace); - const xmlDom = Blockly.Xml.textToDom( - ''); - this.clock.runAll(); - resetEventHistory(this.eventsFireStub, this.changeListenerSpy); - // Add block in center of other blocks, not triggering scroll. - Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom( - ''), this.workspace); - this.clock.runAll(); - assertEventNotFired( - this.eventsFireStub, Blockly.Events.ViewportChange, {type: eventUtils.VIEWPORT_CHANGE}); - assertEventNotFired( - this.changeListenerSpy, Blockly.Events.ViewportChange, - {type: eventUtils.VIEWPORT_CHANGE}); - }); - test('domToWorkspace at 0,0 that doesn\'t trigger scroll', function() { - // 4 blocks with space in center. - Blockly.Xml.domToWorkspace( - Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '' + - ''), - this.workspace); - const xmlDom = Blockly.Xml.textToDom( - ''); - this.clock.runAll(); - resetEventHistory(this.eventsFireStub, this.changeListenerSpy); - // Add block in center of other blocks, not triggering scroll. - Blockly.Xml.domToWorkspace(xmlDom, this.workspace); - this.clock.runAll(); - assertEventNotFired( - this.eventsFireStub, Blockly.Events.ViewportChange, - {type: eventUtils.VIEWPORT_CHANGE}); - assertEventNotFired( - this.changeListenerSpy, Blockly.Events.ViewportChange, - {type: eventUtils.VIEWPORT_CHANGE}); - }); - test.skip('domToWorkspace multiple blocks triggers one viewport event', function() { - // TODO: Un-skip after adding filtering for consecutive viewport events. - const addingMultipleBlocks = () => { - Blockly.Xml.domToWorkspace( - Blockly.Xml.textToDom( - '' + - '' + - '' + - '' + - '' + - ''), - this.workspace); - }; - // Expect 10 events, 4 create, 4 move, 1 viewport, 1 finished loading - runViewportEventTest(addingMultipleBlocks, this.eventsFireStub, - this.changeListenerSpy, this.workspace, this.clock, 10); - }); - }); - }); - suite('Workspace Base class', function() { - testAWorkspace(); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.workspaceSvg'); + +const {assertEventFired, assertEventNotFired, createFireChangeListenerSpy} = goog.require('Blockly.test.helpers.events'); +const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); +const {defineStackBlock} = goog.require('Blockly.test.helpers.blockDefinitions'); +const eventUtils = goog.require('Blockly.Events.utils'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {testAWorkspace} = goog.require('Blockly.test.helpers.workspace'); + + +suite('WorkspaceSvg', function() { + setup(function() { + sharedTestSetup.call(this); + const toolbox = document.getElementById('toolbox-categories'); + this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); + Blockly.defineBlocksWithJsonArray([{ + 'type': 'simple_test_block', + 'message0': 'simple test block', + 'output': null, + }, + { + 'type': 'test_val_in', + 'message0': 'test in %1', + 'args0': [ + { + 'type': 'input_value', + 'name': 'NAME', + }, + ], + }]); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + test('dispose of WorkspaceSvg without dom throws no error', function() { + const ws = new Blockly.WorkspaceSvg(new Blockly.Options({})); + ws.dispose(); + }); + + test('appendDomToWorkspace alignment', function() { + const dom = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ''); + Blockly.Xml.appendDomToWorkspace(dom, this.workspace); + chai.assert.equal(this.workspace.getAllBlocks(false).length, 1, + 'Block count'); + Blockly.Xml.appendDomToWorkspace(dom, this.workspace); + chai.assert.equal(this.workspace.getAllBlocks(false).length, 2, + 'Block count'); + const blocks = this.workspace.getAllBlocks(false); + chai.assert.equal(blocks[0].getRelativeToSurfaceXY().x, 21, + 'Block 1 position x'); + chai.assert.equal(blocks[0].getRelativeToSurfaceXY().y, 23, + 'Block 1 position y'); + chai.assert.equal(blocks[1].getRelativeToSurfaceXY().x, 21, + 'Block 2 position x'); + // Y separation value defined in appendDomToWorkspace as 10 + chai.assert.equal(blocks[1].getRelativeToSurfaceXY().y, + 23 + blocks[0].getHeightWidth().height + 10, + 'Block 2 position y'); + }); + + test('Replacing shadow disposes svg', function() { + const dom = Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '' + + '' + + ''); + + Blockly.Xml.appendDomToWorkspace(dom, this.workspace); + const blocks = this.workspace.getAllBlocks(false); + chai.assert.equal(blocks.length, 2, 'Block count'); + const shadowBlock = blocks[1]; + chai.assert.exists(shadowBlock.getSvgRoot()); + + const block = this.workspace.newBlock('simple_test_block'); + block.initSvg(); + + const inputConnection = + this.workspace.getTopBlocks()[0].getInput('NAME').connection; + inputConnection.connect(block.outputConnection); + chai.assert.exists(block.getSvgRoot()); + chai.assert.notExists(shadowBlock.getSvgRoot()); + }); + + suite('updateToolbox', function() { + test('Passes in null when toolbox exists', function() { + chai.assert.throws(function() { + this.workspace.updateToolbox(null); + }.bind(this), 'Can\'t nullify an existing toolbox.'); + }); + test('Passes in toolbox def when current toolbox is null', function() { + this.workspace.options.languageTree = null; + chai.assert.throws(function() { + this.workspace.updateToolbox({'contents': []}); + }.bind(this), 'Existing toolbox is null. Can\'t create new toolbox.'); + }); + test('Existing toolbox has no categories', function() { + sinon.stub(Blockly.utils.toolbox, 'hasCategories').returns(true); + this.workspace.toolbox_ = null; + chai.assert.throws(function() { + this.workspace.updateToolbox({'contents': []}); + }.bind(this), 'Existing toolbox has no categories. Can\'t change mode.'); + }); + test('Existing toolbox has categories', function() { + sinon.stub(Blockly.utils.toolbox, 'hasCategories').returns(false); + this.workspace.flyout_ = null; + chai.assert.throws(function() { + this.workspace.updateToolbox({'contents': []}); + }.bind(this), 'Existing toolbox has categories. Can\'t change mode.'); + }); + }); + + suite('addTopBlock', function() { + setup(function() { + this.targetWorkspace = new Blockly.Workspace(); + this.workspace.isFlyout = true; + this.workspace.targetWorkspace = this.targetWorkspace; + Blockly.defineBlocksWithJsonArray([{ + "type": "get_var_block", + "message0": "%1", + "args0": [ + { + "type": "field_variable", + "name": "VAR", + "variableTypes": ["", "type1", "type2"], + }, + ], + }]); + }); + + teardown(function() { + // Have to dispose of the main workspace after the flyout workspace + // because it holds the variable map. + // Normally the main workspace disposes of the flyout workspace. + workspaceTeardown.call(this, this.targetWorkspace); + }); + + test('Trivial Flyout is True', function() { + this.targetWorkspace.createVariable('name1', '', '1'); + + // Flyout.init usually does this binding. + this.workspace.variableMap_ = this.targetWorkspace.getVariableMap(); + + Blockly.Events.disable(); + const block = new Blockly.Block(this.workspace, 'get_var_block'); + block.inputList[0].fieldRow[0].setValue('1'); + Blockly.Events.enable(); + + this.workspace.removeTopBlock(block); + this.workspace.addTopBlock(block); + assertVariableValues(this.workspace, 'name1', '', '1'); + }); + }); + + suite('Viewport change events', function() { + function resetEventHistory(eventsFireStub, changeListenerSpy) { + eventsFireStub.resetHistory(); + changeListenerSpy.resetHistory(); + } + function assertSpyFiredViewportEvent(spy, workspace, expectedProperties) { + assertEventFired( + spy, Blockly.Events.ViewportChange, expectedProperties, + workspace.id); + assertEventFired(spy, Blockly.Events.ViewportChange, expectedProperties, + workspace.id); + } + function assertViewportEventFired(eventsFireStub, changeListenerSpy, + workspace, expectedEventCount = 1) { + const metrics = workspace.getMetrics(); + const expectedProperties = { + scale: workspace.scale, + oldScale: 1, + viewTop: metrics.viewTop, + viewLeft: metrics.viewLeft, + type: eventUtils.VIEWPORT_CHANGE, + }; + assertSpyFiredViewportEvent( + eventsFireStub, workspace, expectedProperties); + assertSpyFiredViewportEvent( + changeListenerSpy, workspace, expectedProperties); + sinon.assert.callCount(changeListenerSpy, expectedEventCount); + sinon.assert.callCount(eventsFireStub, expectedEventCount); + } + function runViewportEventTest(eventTriggerFunc, eventsFireStub, + changeListenerSpy, workspace, clock, expectedEventCount = 1) { + clock.runAll(); + resetEventHistory(eventsFireStub, changeListenerSpy); + eventTriggerFunc(); + assertViewportEventFired( + eventsFireStub, changeListenerSpy, workspace, expectedEventCount); + } + setup(function() { + defineStackBlock(); + this.changeListenerSpy = createFireChangeListenerSpy(this.workspace); + }); + teardown(function() { + delete Blockly.Blocks['stack_block']; + }); + + suite('zoom', function() { + test('setScale', function() { + runViewportEventTest(() => this.workspace.setScale(2), + this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock); + }); + test('zoom(50, 50, 1)', function() { + runViewportEventTest(() => this.workspace.zoom(50, 50, 1), + this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock); + }); + test('zoom(50, 50, -1)', function() { + runViewportEventTest(() => this.workspace.zoom(50, 50, -1), + this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock); + }); + test('zoomCenter(1)', function() { + runViewportEventTest(() => this.workspace.zoomCenter(1), + this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock); + }); + test('zoomCenter(-1)', function() { + runViewportEventTest(() => this.workspace.zoomCenter(-1), + this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock); + }); + test('zoomToFit', function() { + const block = this.workspace.newBlock('stack_block'); + block.initSvg(); + block.render(); + runViewportEventTest(() => this.workspace.zoomToFit(), + this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock); + }); + }); + suite('scroll', function() { + test('centerOnBlock', function() { + const block = this.workspace.newBlock('stack_block'); + block.initSvg(); + block.render(); + runViewportEventTest(() => this.workspace.zoomToFit(block.id), + this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock); + }); + test('scroll', function() { + runViewportEventTest(() => this.workspace.scroll(50, 50), + this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock); + }); + test('scrollCenter', function() { + runViewportEventTest(() => this.workspace.scrollCenter(), + this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock); + }); + }); + suite('Blocks triggering viewport changes', function() { + test('block move that triggers scroll', function() { + const block = this.workspace.newBlock('stack_block'); + block.initSvg(); + block.render(); + this.clock.runAll(); + resetEventHistory(this.eventsFireStub, this.changeListenerSpy); + // Expect 2 events, 1 move, 1 viewport + runViewportEventTest(() => { + block.moveBy(1000, 1000); + }, this.eventsFireStub, this.changeListenerSpy, this.workspace, + this.clock, 2); + }); + test('domToWorkspace that doesn\'t trigger scroll', function() { + // 4 blocks with space in center. + Blockly.Xml.domToWorkspace( + Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '' + + ''), + this.workspace); + const xmlDom = Blockly.Xml.textToDom( + ''); + this.clock.runAll(); + resetEventHistory(this.eventsFireStub, this.changeListenerSpy); + // Add block in center of other blocks, not triggering scroll. + Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom( + ''), this.workspace); + this.clock.runAll(); + assertEventNotFired( + this.eventsFireStub, Blockly.Events.ViewportChange, {type: eventUtils.VIEWPORT_CHANGE}); + assertEventNotFired( + this.changeListenerSpy, Blockly.Events.ViewportChange, + {type: eventUtils.VIEWPORT_CHANGE}); + }); + test('domToWorkspace at 0,0 that doesn\'t trigger scroll', function() { + // 4 blocks with space in center. + Blockly.Xml.domToWorkspace( + Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '' + + ''), + this.workspace); + const xmlDom = Blockly.Xml.textToDom( + ''); + this.clock.runAll(); + resetEventHistory(this.eventsFireStub, this.changeListenerSpy); + // Add block in center of other blocks, not triggering scroll. + Blockly.Xml.domToWorkspace(xmlDom, this.workspace); + this.clock.runAll(); + assertEventNotFired( + this.eventsFireStub, Blockly.Events.ViewportChange, + {type: eventUtils.VIEWPORT_CHANGE}); + assertEventNotFired( + this.changeListenerSpy, Blockly.Events.ViewportChange, + {type: eventUtils.VIEWPORT_CHANGE}); + }); + test.skip('domToWorkspace multiple blocks triggers one viewport event', function() { + // TODO: Un-skip after adding filtering for consecutive viewport events. + const addingMultipleBlocks = () => { + Blockly.Xml.domToWorkspace( + Blockly.Xml.textToDom( + '' + + '' + + '' + + '' + + '' + + ''), + this.workspace); + }; + // Expect 10 events, 4 create, 4 move, 1 viewport, 1 finished loading + runViewportEventTest(addingMultipleBlocks, this.eventsFireStub, + this.changeListenerSpy, this.workspace, this.clock, 10); + }); + }); + }); + suite('Workspace Base class', function() { + testAWorkspace(); + }); +}); diff --git a/tests/mocha/workspace_test.js b/tests/mocha/workspace_test.js index 8153518b09e..9ecaf1fdad1 100644 --- a/tests/mocha/workspace_test.js +++ b/tests/mocha/workspace_test.js @@ -1,26 +1,26 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.workspace'); - -const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); -const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {testAWorkspace} = goog.require('Blockly.test.helpers.workspace'); - - -suite('Workspace', function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = new Blockly.Workspace(); - }); - - teardown(function() { - sharedTestTeardown.call(this); - }); - - // eslint-disable-next-line no-use-before-define - testAWorkspace(); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.workspace'); + +const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); +const {sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {testAWorkspace} = goog.require('Blockly.test.helpers.workspace'); + + +suite('Workspace', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = new Blockly.Workspace(); + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + // eslint-disable-next-line no-use-before-define + testAWorkspace(); +}); diff --git a/tests/mocha/xml_test.js b/tests/mocha/xml_test.js index 78ddeeeefae..06e74c00f95 100644 --- a/tests/mocha/xml_test.js +++ b/tests/mocha/xml_test.js @@ -1,798 +1,798 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.xml'); - -const {addBlockTypeToCleanup, createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); - - -suite('XML', function() { - const assertSimpleFieldDom = function(fieldDom, name, text) { - chai.assert.equal(text, fieldDom.textContent); - chai.assert.equal(name, fieldDom.getAttribute('name')); - }; - const assertNonSerializingFieldDom = function(fieldDom) { - chai.assert.isUndefined(fieldDom.childNodes[0]); - }; - const assertNonVariableField = function(fieldDom, name, text) { - assertSimpleFieldDom(fieldDom, name, text); - chai.assert.isNull(fieldDom.getAttribute('id'), 'id'); - chai.assert.isNull(fieldDom.getAttribute('variabletype'), 'variabletype'); - }; - const assertVariableDomField = function(fieldDom, name, type, id, text) { - assertSimpleFieldDom(fieldDom, name, text); - chai.assert.equal(fieldDom.getAttribute('variabletype'), type); - chai.assert.equal(fieldDom.getAttribute('id'), id); - }; - const assertVariableDom = function(fieldDom, type, id, text) { - chai.assert.equal(fieldDom.getAttribute('type'), type); - chai.assert.equal(fieldDom.getAttribute('id'), id); - chai.assert.equal(fieldDom.textContent, text); - }; - setup(function() { - sharedTestSetup.call(this); - Blockly.defineBlocksWithJsonArray([ - { - "type": "empty_block", - "message0": "", - "args0": [], - }, - ]); - this.complexXmlText = [ - '', - ' ', - ' ', - ' ', - ' 10', - ' ', - ' ', - ' ', - ' ', - ' item', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' Hello', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ' ', - ''].join('\n'); - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - suite('textToDom', function() { - test('Basic', function() { - const dom = Blockly.Xml.textToDom(this.complexXmlText); - chai.assert.equal(dom.nodeName, 'xml', 'XML tag'); - chai.assert.equal(dom.getElementsByTagName('block').length, 6, 'Block tags'); - }); - }); - suite('blockToDom', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - suite('Fields', function() { - test('Angle', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "field_angle_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_angle", - "name": "ANGLE", - "angle": 90, - }, - ], - }]); - const block = new Blockly.Block(this.workspace, - 'field_angle_test_block'); - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - assertNonVariableField(resultFieldDom, 'ANGLE', '90'); - }); - test('Checkbox', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "field_checkbox_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_checkbox", - "name": "CHECKBOX", - "checked": true, - }, - ], - }]); - const block = new Blockly.Block(this.workspace, - 'field_checkbox_test_block'); - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - assertNonVariableField(resultFieldDom, 'CHECKBOX', 'TRUE'); - }); - test('Colour', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "field_colour_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_colour", - "name": "COLOUR", - "colour": '#000099', - }, - ], - }]); - const block = new Blockly.Block(this.workspace, - 'field_colour_test_block'); - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - assertNonVariableField(resultFieldDom, 'COLOUR', '#000099'); - }); - test('Dropdown', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "field_dropdown_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_dropdown", - "name": "DROPDOWN", - "options": [ - [ - "a", - "A", - ], - [ - "b", - "B", - ], - [ - "c", - "C", - ], - ], - }, - ], - }]); - const block = new Blockly.Block(this.workspace, - 'field_dropdown_test_block'); - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - assertNonVariableField(resultFieldDom, 'DROPDOWN', 'A'); - }); - test('Image', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "field_image_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_image", - "name": "IMAGE", - "src": "https://blockly-demo.appspot.com/static/tests/media/a.png", - "width": 32, - "height": 32, - "alt": "A", - }, - ], - }]); - const block = new Blockly.Block(this.workspace, - 'field_image_test_block'); - const resultFieldDom = Blockly.Xml.blockToDom(block); - assertNonSerializingFieldDom(resultFieldDom); - }); - test('Label', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "field_label_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_label", - "name": "LABEL", - "text": "default", - }, - ], - }]); - const block = new Blockly.Block(this.workspace, - 'field_label_test_block'); - const resultFieldDom = Blockly.Xml.blockToDom(block); - assertNonSerializingFieldDom(resultFieldDom); - }); - test('Label Serializable', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "field_label_serializable_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_label_serializable", - "name": "LABEL", - "text": "default", - }, - ], - }]); - const block = new Blockly.Block(this.workspace, - 'field_label_serializable_test_block'); - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - assertNonVariableField(resultFieldDom, 'LABEL', 'default'); - }); - test('Number', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "field_number_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_number", - "name": "NUMBER", - "value": 97, - }, - ], - }]); - const block = new Blockly.Block(this.workspace, - 'field_number_test_block'); - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - assertNonVariableField(resultFieldDom, 'NUMBER', '97'); - }); - test('Text Input', function() { - Blockly.defineBlocksWithJsonArray([{ - "type": "field_text_input_test_block", - "message0": "%1", - "args0": [ - { - "type": "field_input", - "name": "TEXT", - "text": "default", - }, - ], - }]); - const block = new Blockly.Block(this.workspace, - 'field_text_input_test_block'); - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - assertNonVariableField(resultFieldDom, 'TEXT', 'default'); - }); - suite('Variable Fields', function() { - setup(function() { - Blockly.defineBlocksWithJsonArray([{ - 'type': 'field_variable_test_block', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': 'item', - }, - ], - }]); - }); - test('Variable Trivial', function() { - this.workspace.createVariable('name1', '', 'id1'); - const block = new Blockly.Block(this.workspace, - 'field_variable_test_block'); - block.inputList[0].fieldRow[0].setValue('id1'); - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - assertVariableDomField(resultFieldDom, 'VAR', null, 'id1', 'name1'); - }); - test('Variable Typed', function() { - this.workspace.createVariable('name1', 'string', 'id1'); - const block = new Blockly.Block(this.workspace, - 'field_variable_test_block'); - block.inputList[0].fieldRow[0].setValue('id1'); - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - assertVariableDomField(resultFieldDom, 'VAR', 'string', 'id1', 'name1'); - }); - test('Variable Default Case', function() { - createGenUidStubWithReturns('1'); - this.workspace.createVariable('name1'); - - Blockly.Events.disable(); - const block = new Blockly.Block(this.workspace, - 'field_variable_test_block'); - block.inputList[0].fieldRow[0].setValue('1'); - Blockly.Events.enable(); - - const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; - // Expect type is null and ID is '1' since we don't specify type and ID. - assertVariableDomField(resultFieldDom, 'VAR', null, '1', 'name1'); - }); - }); - }); - suite('Comments', function() { - suite('Headless', function() { - setup(function() { - this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - }); - test('Text', function() { - this.block.setCommentText('test text'); - const xml = Blockly.Xml.blockToDom(this.block); - const commentXml = xml.firstChild; - chai.assert.equal(commentXml.tagName, 'comment'); - chai.assert.equal(commentXml.innerHTML, 'test text'); - }); - test('No Text', function() { - const xml = Blockly.Xml.blockToDom(this.block); - chai.assert.isNull(xml.firstChild); - }); - test('Empty Text', function() { - this.block.setCommentText(''); - const xml = Blockly.Xml.blockToDom(this.block); - chai.assert.isNull(xml.firstChild); - }); - }); - suite('Rendered', function() { - setup(function() { - // Let the parent teardown dispose of it. - this.workspace = Blockly.inject('blocklyDiv', {comments: true}); - this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.workspace); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - test('Text', function() { - this.block.setCommentText('test text'); - const xml = Blockly.Xml.blockToDom(this.block); - const commentXml = xml.firstChild; - chai.assert.equal(commentXml.tagName, 'comment'); - chai.assert.equal(commentXml.innerHTML, 'test text'); - }); - test('No Text', function() { - const xml = Blockly.Xml.blockToDom(this.block); - chai.assert.isNull(xml.firstChild); - }); - test('Empty Text', function() { - this.block.setCommentText(''); - const xml = Blockly.Xml.blockToDom(this.block); - chai.assert.isNull(xml.firstChild); - }); - test('Size', function() { - this.block.setCommentText('test text'); - this.block.getCommentIcon().setBubbleSize(100, 200); - const xml = Blockly.Xml.blockToDom(this.block); - const commentXml = xml.firstChild; - chai.assert.equal(commentXml.tagName, 'comment'); - chai.assert.equal(commentXml.getAttribute('w'), 100); - chai.assert.equal(commentXml.getAttribute('h'), 200); - }); - test('Pinned True', function() { - this.block.setCommentText('test text'); - this.block.getCommentIcon().setVisible(true); - const xml = Blockly.Xml.blockToDom(this.block); - const commentXml = xml.firstChild; - chai.assert.equal(commentXml.tagName, 'comment'); - chai.assert.equal(commentXml.getAttribute('pinned'), 'true'); - }); - test('Pinned False', function() { - this.block.setCommentText('test text'); - const xml = Blockly.Xml.blockToDom(this.block); - const commentXml = xml.firstChild; - chai.assert.equal(commentXml.tagName, 'comment'); - chai.assert.equal(commentXml.getAttribute('pinned'), 'false'); - }); - }); - }); - }); - suite('variablesToDom', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - Blockly.defineBlocksWithJsonArray([{ - 'type': 'field_variable_test_block', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': 'item', - }, - ], - }]); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - test('One Variable', function() { - createGenUidStubWithReturns('1'); - this.workspace.createVariable('name1'); - const resultDom = - Blockly.Xml.variablesToDom(this.workspace.getAllVariables()); - chai.assert.equal(resultDom.children.length, 1); - const resultVariableDom = resultDom.children[0]; - chai.assert.equal(resultVariableDom.textContent, 'name1'); - chai.assert.isNull(resultVariableDom.getAttribute('type')); - chai.assert.equal(resultVariableDom.getAttribute('id'), '1'); - }); - test('Two Variable one block', function() { - this.workspace.createVariable('name1', '', 'id1'); - this.workspace.createVariable('name2', 'type2', 'id2'); - // If events are enabled during block construction, it will create a - // default variable. - Blockly.Events.disable(); - const block = new Blockly.Block(this.workspace, 'field_variable_test_block'); - block.inputList[0].fieldRow[0].setValue('id1'); - Blockly.Events.enable(); - - const resultDom = Blockly.Xml.variablesToDom(this.workspace.getAllVariables()); - chai.assert.equal(resultDom.children.length, 2); - assertVariableDom(resultDom.children[0], null, 'id1', - 'name1'); - assertVariableDom(resultDom.children[1], 'type2', 'id2', - 'name2'); - }); - test('No variables', function() { - const resultDom = - Blockly.Xml.variablesToDom(this.workspace.getAllVariables()); - chai.assert.equal(resultDom.children.length, 0); - }); - }); - suite('domToText', function() { - test('Round tripping', function() { - const dom = Blockly.Xml.textToDom(this.complexXmlText); - const text = Blockly.Xml.domToText(dom); - chai.assert.equal(text.replace(/\s+/g, ''), - this.complexXmlText.replace(/\s+/g, ''), 'Round trip'); - }); - }); - suite('domToPrettyText', function() { - test('Round tripping', function() { - const dom = Blockly.Xml.textToDom(this.complexXmlText); - const text = Blockly.Xml.domToPrettyText(dom); - chai.assert.equal(text.replace(/\s+/g, ''), - this.complexXmlText.replace(/\s+/g, ''), 'Round trip'); - }); - }); - suite('domToBlock', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - suite('Dynamic Category Blocks', function() { - test('Untyped Variables', function() { - this.workspace.createVariable('name1', '', 'id1'); - const blocksArray = - Blockly.Variables.flyoutCategoryBlocks(this.workspace); - for (let i = 0, xml; (xml = blocksArray[i]); i++) { - Blockly.Xml.domToBlock(xml, this.workspace); - } - }); - test('Typed Variables', function() { - this.workspace.createVariable('name1', 'String', 'id1'); - this.workspace.createVariable('name2', 'Number', 'id2'); - this.workspace.createVariable('name3', 'Colour', 'id3'); - const blocksArray = - Blockly.VariablesDynamic.flyoutCategoryBlocks(this.workspace); - for (let i = 0, xml; (xml = blocksArray[i]); i++) { - Blockly.Xml.domToBlock(xml, this.workspace); - } - }); - }); - suite('Comments', function() { - suite('Headless', function() { - test('Text', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - chai.assert.equal(block.getCommentText(), 'test text'); - }); - test('No Text', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ), this.workspace); - chai.assert.equal(block.getCommentText(), ''); - }); - test('Size', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - chai.assert.deepEqual(block.commentModel.size, - {width: 100, height: 200}); - }); - test('Pinned True', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - chai.assert.isTrue(block.commentModel.pinned); - }); - test('Pinned False', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - chai.assert.isFalse(block.commentModel.pinned); - }); - test('Pinned Undefined', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - chai.assert.isFalse(block.commentModel.pinned); - }); - }); - suite('Rendered', function() { - setup(function() { - this.workspace = Blockly.inject('blocklyDiv', {comments: true}); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - - test('Text', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - chai.assert.equal(block.getCommentText(), 'test text'); - chai.assert.isNotNull(block.getCommentIcon()); - }); - test('No Text', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' ' + - '' - ), this.workspace); - chai.assert.equal(block.getCommentText(), ''); - chai.assert.isNotNull(block.getCommentIcon()); - }); - test('Size', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - chai.assert.deepEqual(block.commentModel.size, - {width: 100, height: 200}); - chai.assert.isNotNull(block.getCommentIcon()); - chai.assert.deepEqual(block.getCommentIcon().getBubbleSize(), - {width: 100, height: 200}); - }); - suite('Pinned', function() { - test('Pinned True', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - this.clock.runAll(); - chai.assert.isTrue(block.commentModel.pinned); - chai.assert.isNotNull(block.getCommentIcon()); - chai.assert.isTrue(block.getCommentIcon().isVisible()); - }); - test('Pinned False', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - this.clock.runAll(); - chai.assert.isFalse(block.commentModel.pinned); - chai.assert.isNotNull(block.getCommentIcon()); - chai.assert.isFalse(block.getCommentIcon().isVisible()); - }); - test('Pinned Undefined', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' + - ' test text' + - '' - ), this.workspace); - this.clock.runAll(); - chai.assert.isFalse(block.commentModel.pinned); - chai.assert.isNotNull(block.getCommentIcon()); - chai.assert.isFalse(block.getCommentIcon().isVisible()); - }); - }); - }); - }); - }); - suite('domToWorkspace', function() { - setup(function() { - this.workspace = new Blockly.Workspace(); - Blockly.defineBlocksWithJsonArray([{ - 'type': 'field_variable_test_block', - 'message0': '%1', - 'args0': [ - { - 'type': 'field_variable', - 'name': 'VAR', - 'variable': 'item', - }, - ], - }]); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - test('Backwards compatibility', function() { - createGenUidStubWithReturns('1'); - const dom = Blockly.Xml.textToDom( - '' + - ' ' + - ' name1' + - ' ' + - ''); - Blockly.Xml.domToWorkspace(dom, this.workspace); - chai.assert.equal(this.workspace.getAllBlocks(false).length, 1, 'Block count'); - assertVariableValues(this.workspace, 'name1', '', '1'); - }); - test('Variables at top', function() { - const dom = Blockly.Xml.textToDom( - '' + - ' ' + - ' name1' + - ' name2' + - ' name3' + - ' ' + - ' ' + - ' name3' + - ' ' + - ''); - Blockly.Xml.domToWorkspace(dom, this.workspace); - chai.assert.equal(this.workspace.getAllBlocks(false).length, 1, 'Block count'); - assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); - assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); - assertVariableValues(this.workspace, 'name3', '', 'id3'); - }); - test('Variables at top duplicated variables tag', function() { - const dom = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ''); - chai.assert.throws(function() { - Blockly.Xml.domToWorkspace(dom, this.workspace); - }); - }); - test('Variables at top missing type', function() { - const dom = Blockly.Xml.textToDom( - '' + - ' ' + - ' name1' + - ' ' + - ' ' + - ' name3' + - ' ' + - ''); - chai.assert.throws(function() { - Blockly.Xml.domToWorkspace(dom, this.workspace); - }); - }); - test('Variables at top mismatch block type', function() { - const dom = Blockly.Xml.textToDom( - '' + - ' ' + - ' name1' + - ' ' + - ' ' + - ' name1' + - ' ' + - ''); - chai.assert.throws(function() { - Blockly.Xml.domToWorkspace(dom, this.workspace); - }); - }); - }); - suite('appendDomToWorkspace', function() { - setup(function() { - addBlockTypeToCleanup(this.sharedCleanup, 'test_block'); - Blockly.Blocks['test_block'] = { - init: function() { - this.jsonInit({ - message0: 'test', - }); - }, - }; - this.workspace = new Blockly.Workspace(); - }); - teardown(function() { - workspaceTeardown.call(this, this.workspace); - }); - test('Headless', function() { - const dom = Blockly.Xml.textToDom( - '' + - ' ' + - ' ' + - ''); - Blockly.Xml.appendDomToWorkspace(dom, this.workspace); - chai.assert.equal(this.workspace.getAllBlocks(false).length, 1, 'Block count'); - const newBlockIds = Blockly.Xml.appendDomToWorkspace(dom, this.workspace); - chai.assert.equal(this.workspace.getAllBlocks(false).length, 2, 'Block count'); - chai.assert.equal(newBlockIds.length, 1, 'Number of new block ids'); - }); - }); - suite('workspaceToDom -> domToWorkspace -> workspaceToDom', function() { - setup(function() { - const options = { - comments: true, - }; - this.renderedWorkspace = Blockly.inject('blocklyDiv', options); - this.headlessWorkspace = - new Blockly.Workspace(new Blockly.Options(options)); - }); - teardown(function() { - workspaceTeardown.call(this, this.renderedWorkspace); - workspaceTeardown.call(this, this.headlessWorkspace); - }); - const assertRoundTrip = function(originWs, targetWs) { - const originXml = Blockly.Xml.workspaceToDom(originWs); - Blockly.Xml.domToWorkspace(originXml, targetWs); - const targetXml = Blockly.Xml.workspaceToDom(targetWs); - - const expectedXmlText = Blockly.Xml.domToText(originXml); - const actualXmlText = Blockly.Xml.domToText(targetXml); - - chai.assert.equal(actualXmlText, expectedXmlText); - }; - suite('Rendered -> XML -> Headless -> XML', function() { - test('Comment', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.renderedWorkspace); - block.setCommentText('test text'); - block.getCommentIcon().setBubbleSize(100, 100); - block.getCommentIcon().setVisible(true); - assertRoundTrip(this.renderedWorkspace, this.headlessWorkspace); - }); - }); - suite('Headless -> XML -> Rendered -> XML', function() { - test('Comment', function() { - const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( - '' - ), this.headlessWorkspace); - block.setCommentText('test text'); - block.commentModel.size = new Blockly.utils.Size(100, 100); - block.commentModel.pinned = true; - - this.clock.runAll(); - - assertRoundTrip(this.headlessWorkspace, this.renderedWorkspace); - }); - }); - }); - suite('generateVariableFieldDom', function() { - test('Case Sensitive', function() { - const varId = 'testId'; - const type = 'testType'; - const name = 'testName'; - - const mockVariableModel = { - type: type, - name: name, - getId: function() { - return varId; - }, - }; - - const generatedXml = Blockly.Xml.domToText( - Blockly.Variables.generateVariableFieldDom(mockVariableModel)); - const expectedXml = - '' + name + ''; - chai.assert.equal(generatedXml, expectedXml); - }); - }); -}); +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.xml'); + +const {addBlockTypeToCleanup, createGenUidStubWithReturns, sharedTestSetup, sharedTestTeardown, workspaceTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {assertVariableValues} = goog.require('Blockly.test.helpers.variables'); + + +suite('XML', function() { + const assertSimpleFieldDom = function(fieldDom, name, text) { + chai.assert.equal(text, fieldDom.textContent); + chai.assert.equal(name, fieldDom.getAttribute('name')); + }; + const assertNonSerializingFieldDom = function(fieldDom) { + chai.assert.isUndefined(fieldDom.childNodes[0]); + }; + const assertNonVariableField = function(fieldDom, name, text) { + assertSimpleFieldDom(fieldDom, name, text); + chai.assert.isNull(fieldDom.getAttribute('id'), 'id'); + chai.assert.isNull(fieldDom.getAttribute('variabletype'), 'variabletype'); + }; + const assertVariableDomField = function(fieldDom, name, type, id, text) { + assertSimpleFieldDom(fieldDom, name, text); + chai.assert.equal(fieldDom.getAttribute('variabletype'), type); + chai.assert.equal(fieldDom.getAttribute('id'), id); + }; + const assertVariableDom = function(fieldDom, type, id, text) { + chai.assert.equal(fieldDom.getAttribute('type'), type); + chai.assert.equal(fieldDom.getAttribute('id'), id); + chai.assert.equal(fieldDom.textContent, text); + }; + setup(function() { + sharedTestSetup.call(this); + Blockly.defineBlocksWithJsonArray([ + { + "type": "empty_block", + "message0": "", + "args0": [], + }, + ]); + this.complexXmlText = [ + '', + ' ', + ' ', + ' ', + ' 10', + ' ', + ' ', + ' ', + ' ', + ' item', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' Hello', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ''].join('\n'); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + suite('textToDom', function() { + test('Basic', function() { + const dom = Blockly.Xml.textToDom(this.complexXmlText); + chai.assert.equal(dom.nodeName, 'xml', 'XML tag'); + chai.assert.equal(dom.getElementsByTagName('block').length, 6, 'Block tags'); + }); + }); + suite('blockToDom', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + suite('Fields', function() { + test('Angle', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "field_angle_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_angle", + "name": "ANGLE", + "angle": 90, + }, + ], + }]); + const block = new Blockly.Block(this.workspace, + 'field_angle_test_block'); + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + assertNonVariableField(resultFieldDom, 'ANGLE', '90'); + }); + test('Checkbox', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "field_checkbox_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_checkbox", + "name": "CHECKBOX", + "checked": true, + }, + ], + }]); + const block = new Blockly.Block(this.workspace, + 'field_checkbox_test_block'); + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + assertNonVariableField(resultFieldDom, 'CHECKBOX', 'TRUE'); + }); + test('Colour', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "field_colour_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_colour", + "name": "COLOUR", + "colour": '#000099', + }, + ], + }]); + const block = new Blockly.Block(this.workspace, + 'field_colour_test_block'); + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + assertNonVariableField(resultFieldDom, 'COLOUR', '#000099'); + }); + test('Dropdown', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "field_dropdown_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_dropdown", + "name": "DROPDOWN", + "options": [ + [ + "a", + "A", + ], + [ + "b", + "B", + ], + [ + "c", + "C", + ], + ], + }, + ], + }]); + const block = new Blockly.Block(this.workspace, + 'field_dropdown_test_block'); + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + assertNonVariableField(resultFieldDom, 'DROPDOWN', 'A'); + }); + test('Image', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "field_image_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_image", + "name": "IMAGE", + "src": "https://blockly-demo.appspot.com/static/tests/media/a.png", + "width": 32, + "height": 32, + "alt": "A", + }, + ], + }]); + const block = new Blockly.Block(this.workspace, + 'field_image_test_block'); + const resultFieldDom = Blockly.Xml.blockToDom(block); + assertNonSerializingFieldDom(resultFieldDom); + }); + test('Label', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "field_label_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_label", + "name": "LABEL", + "text": "default", + }, + ], + }]); + const block = new Blockly.Block(this.workspace, + 'field_label_test_block'); + const resultFieldDom = Blockly.Xml.blockToDom(block); + assertNonSerializingFieldDom(resultFieldDom); + }); + test('Label Serializable', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "field_label_serializable_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_label_serializable", + "name": "LABEL", + "text": "default", + }, + ], + }]); + const block = new Blockly.Block(this.workspace, + 'field_label_serializable_test_block'); + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + assertNonVariableField(resultFieldDom, 'LABEL', 'default'); + }); + test('Number', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "field_number_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_number", + "name": "NUMBER", + "value": 97, + }, + ], + }]); + const block = new Blockly.Block(this.workspace, + 'field_number_test_block'); + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + assertNonVariableField(resultFieldDom, 'NUMBER', '97'); + }); + test('Text Input', function() { + Blockly.defineBlocksWithJsonArray([{ + "type": "field_text_input_test_block", + "message0": "%1", + "args0": [ + { + "type": "field_input", + "name": "TEXT", + "text": "default", + }, + ], + }]); + const block = new Blockly.Block(this.workspace, + 'field_text_input_test_block'); + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + assertNonVariableField(resultFieldDom, 'TEXT', 'default'); + }); + suite('Variable Fields', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([{ + 'type': 'field_variable_test_block', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': 'item', + }, + ], + }]); + }); + test('Variable Trivial', function() { + this.workspace.createVariable('name1', '', 'id1'); + const block = new Blockly.Block(this.workspace, + 'field_variable_test_block'); + block.inputList[0].fieldRow[0].setValue('id1'); + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + assertVariableDomField(resultFieldDom, 'VAR', null, 'id1', 'name1'); + }); + test('Variable Typed', function() { + this.workspace.createVariable('name1', 'string', 'id1'); + const block = new Blockly.Block(this.workspace, + 'field_variable_test_block'); + block.inputList[0].fieldRow[0].setValue('id1'); + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + assertVariableDomField(resultFieldDom, 'VAR', 'string', 'id1', 'name1'); + }); + test('Variable Default Case', function() { + createGenUidStubWithReturns('1'); + this.workspace.createVariable('name1'); + + Blockly.Events.disable(); + const block = new Blockly.Block(this.workspace, + 'field_variable_test_block'); + block.inputList[0].fieldRow[0].setValue('1'); + Blockly.Events.enable(); + + const resultFieldDom = Blockly.Xml.blockToDom(block).childNodes[0]; + // Expect type is null and ID is '1' since we don't specify type and ID. + assertVariableDomField(resultFieldDom, 'VAR', null, '1', 'name1'); + }); + }); + }); + suite('Comments', function() { + suite('Headless', function() { + setup(function() { + this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + }); + test('Text', function() { + this.block.setCommentText('test text'); + const xml = Blockly.Xml.blockToDom(this.block); + const commentXml = xml.firstChild; + chai.assert.equal(commentXml.tagName, 'comment'); + chai.assert.equal(commentXml.innerHTML, 'test text'); + }); + test('No Text', function() { + const xml = Blockly.Xml.blockToDom(this.block); + chai.assert.isNull(xml.firstChild); + }); + test('Empty Text', function() { + this.block.setCommentText(''); + const xml = Blockly.Xml.blockToDom(this.block); + chai.assert.isNull(xml.firstChild); + }); + }); + suite('Rendered', function() { + setup(function() { + // Let the parent teardown dispose of it. + this.workspace = Blockly.inject('blocklyDiv', {comments: true}); + this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.workspace); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + test('Text', function() { + this.block.setCommentText('test text'); + const xml = Blockly.Xml.blockToDom(this.block); + const commentXml = xml.firstChild; + chai.assert.equal(commentXml.tagName, 'comment'); + chai.assert.equal(commentXml.innerHTML, 'test text'); + }); + test('No Text', function() { + const xml = Blockly.Xml.blockToDom(this.block); + chai.assert.isNull(xml.firstChild); + }); + test('Empty Text', function() { + this.block.setCommentText(''); + const xml = Blockly.Xml.blockToDom(this.block); + chai.assert.isNull(xml.firstChild); + }); + test('Size', function() { + this.block.setCommentText('test text'); + this.block.getCommentIcon().setBubbleSize(100, 200); + const xml = Blockly.Xml.blockToDom(this.block); + const commentXml = xml.firstChild; + chai.assert.equal(commentXml.tagName, 'comment'); + chai.assert.equal(commentXml.getAttribute('w'), 100); + chai.assert.equal(commentXml.getAttribute('h'), 200); + }); + test('Pinned True', function() { + this.block.setCommentText('test text'); + this.block.getCommentIcon().setVisible(true); + const xml = Blockly.Xml.blockToDom(this.block); + const commentXml = xml.firstChild; + chai.assert.equal(commentXml.tagName, 'comment'); + chai.assert.equal(commentXml.getAttribute('pinned'), 'true'); + }); + test('Pinned False', function() { + this.block.setCommentText('test text'); + const xml = Blockly.Xml.blockToDom(this.block); + const commentXml = xml.firstChild; + chai.assert.equal(commentXml.tagName, 'comment'); + chai.assert.equal(commentXml.getAttribute('pinned'), 'false'); + }); + }); + }); + }); + suite('variablesToDom', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + Blockly.defineBlocksWithJsonArray([{ + 'type': 'field_variable_test_block', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': 'item', + }, + ], + }]); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + test('One Variable', function() { + createGenUidStubWithReturns('1'); + this.workspace.createVariable('name1'); + const resultDom = + Blockly.Xml.variablesToDom(this.workspace.getAllVariables()); + chai.assert.equal(resultDom.children.length, 1); + const resultVariableDom = resultDom.children[0]; + chai.assert.equal(resultVariableDom.textContent, 'name1'); + chai.assert.isNull(resultVariableDom.getAttribute('type')); + chai.assert.equal(resultVariableDom.getAttribute('id'), '1'); + }); + test('Two Variable one block', function() { + this.workspace.createVariable('name1', '', 'id1'); + this.workspace.createVariable('name2', 'type2', 'id2'); + // If events are enabled during block construction, it will create a + // default variable. + Blockly.Events.disable(); + const block = new Blockly.Block(this.workspace, 'field_variable_test_block'); + block.inputList[0].fieldRow[0].setValue('id1'); + Blockly.Events.enable(); + + const resultDom = Blockly.Xml.variablesToDom(this.workspace.getAllVariables()); + chai.assert.equal(resultDom.children.length, 2); + assertVariableDom(resultDom.children[0], null, 'id1', + 'name1'); + assertVariableDom(resultDom.children[1], 'type2', 'id2', + 'name2'); + }); + test('No variables', function() { + const resultDom = + Blockly.Xml.variablesToDom(this.workspace.getAllVariables()); + chai.assert.equal(resultDom.children.length, 0); + }); + }); + suite('domToText', function() { + test('Round tripping', function() { + const dom = Blockly.Xml.textToDom(this.complexXmlText); + const text = Blockly.Xml.domToText(dom); + chai.assert.equal(text.replace(/\s+/g, ''), + this.complexXmlText.replace(/\s+/g, ''), 'Round trip'); + }); + }); + suite('domToPrettyText', function() { + test('Round tripping', function() { + const dom = Blockly.Xml.textToDom(this.complexXmlText); + const text = Blockly.Xml.domToPrettyText(dom); + chai.assert.equal(text.replace(/\s+/g, ''), + this.complexXmlText.replace(/\s+/g, ''), 'Round trip'); + }); + }); + suite('domToBlock', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + suite('Dynamic Category Blocks', function() { + test('Untyped Variables', function() { + this.workspace.createVariable('name1', '', 'id1'); + const blocksArray = + Blockly.Variables.flyoutCategoryBlocks(this.workspace); + for (let i = 0, xml; (xml = blocksArray[i]); i++) { + Blockly.Xml.domToBlock(xml, this.workspace); + } + }); + test('Typed Variables', function() { + this.workspace.createVariable('name1', 'String', 'id1'); + this.workspace.createVariable('name2', 'Number', 'id2'); + this.workspace.createVariable('name3', 'Colour', 'id3'); + const blocksArray = + Blockly.VariablesDynamic.flyoutCategoryBlocks(this.workspace); + for (let i = 0, xml; (xml = blocksArray[i]); i++) { + Blockly.Xml.domToBlock(xml, this.workspace); + } + }); + }); + suite('Comments', function() { + suite('Headless', function() { + test('Text', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + chai.assert.equal(block.getCommentText(), 'test text'); + }); + test('No Text', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ), this.workspace); + chai.assert.equal(block.getCommentText(), ''); + }); + test('Size', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + chai.assert.deepEqual(block.commentModel.size, + {width: 100, height: 200}); + }); + test('Pinned True', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + chai.assert.isTrue(block.commentModel.pinned); + }); + test('Pinned False', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + chai.assert.isFalse(block.commentModel.pinned); + }); + test('Pinned Undefined', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + chai.assert.isFalse(block.commentModel.pinned); + }); + }); + suite('Rendered', function() { + setup(function() { + this.workspace = Blockly.inject('blocklyDiv', {comments: true}); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + + test('Text', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + chai.assert.equal(block.getCommentText(), 'test text'); + chai.assert.isNotNull(block.getCommentIcon()); + }); + test('No Text', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + '' + ), this.workspace); + chai.assert.equal(block.getCommentText(), ''); + chai.assert.isNotNull(block.getCommentIcon()); + }); + test('Size', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + chai.assert.deepEqual(block.commentModel.size, + {width: 100, height: 200}); + chai.assert.isNotNull(block.getCommentIcon()); + chai.assert.deepEqual(block.getCommentIcon().getBubbleSize(), + {width: 100, height: 200}); + }); + suite('Pinned', function() { + test('Pinned True', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + this.clock.runAll(); + chai.assert.isTrue(block.commentModel.pinned); + chai.assert.isNotNull(block.getCommentIcon()); + chai.assert.isTrue(block.getCommentIcon().isVisible()); + }); + test('Pinned False', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + this.clock.runAll(); + chai.assert.isFalse(block.commentModel.pinned); + chai.assert.isNotNull(block.getCommentIcon()); + chai.assert.isFalse(block.getCommentIcon().isVisible()); + }); + test('Pinned Undefined', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' test text' + + '' + ), this.workspace); + this.clock.runAll(); + chai.assert.isFalse(block.commentModel.pinned); + chai.assert.isNotNull(block.getCommentIcon()); + chai.assert.isFalse(block.getCommentIcon().isVisible()); + }); + }); + }); + }); + }); + suite('domToWorkspace', function() { + setup(function() { + this.workspace = new Blockly.Workspace(); + Blockly.defineBlocksWithJsonArray([{ + 'type': 'field_variable_test_block', + 'message0': '%1', + 'args0': [ + { + 'type': 'field_variable', + 'name': 'VAR', + 'variable': 'item', + }, + ], + }]); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + test('Backwards compatibility', function() { + createGenUidStubWithReturns('1'); + const dom = Blockly.Xml.textToDom( + '' + + ' ' + + ' name1' + + ' ' + + ''); + Blockly.Xml.domToWorkspace(dom, this.workspace); + chai.assert.equal(this.workspace.getAllBlocks(false).length, 1, 'Block count'); + assertVariableValues(this.workspace, 'name1', '', '1'); + }); + test('Variables at top', function() { + const dom = Blockly.Xml.textToDom( + '' + + ' ' + + ' name1' + + ' name2' + + ' name3' + + ' ' + + ' ' + + ' name3' + + ' ' + + ''); + Blockly.Xml.domToWorkspace(dom, this.workspace); + chai.assert.equal(this.workspace.getAllBlocks(false).length, 1, 'Block count'); + assertVariableValues(this.workspace, 'name1', 'type1', 'id1'); + assertVariableValues(this.workspace, 'name2', 'type2', 'id2'); + assertVariableValues(this.workspace, 'name3', '', 'id3'); + }); + test('Variables at top duplicated variables tag', function() { + const dom = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ''); + chai.assert.throws(function() { + Blockly.Xml.domToWorkspace(dom, this.workspace); + }); + }); + test('Variables at top missing type', function() { + const dom = Blockly.Xml.textToDom( + '' + + ' ' + + ' name1' + + ' ' + + ' ' + + ' name3' + + ' ' + + ''); + chai.assert.throws(function() { + Blockly.Xml.domToWorkspace(dom, this.workspace); + }); + }); + test('Variables at top mismatch block type', function() { + const dom = Blockly.Xml.textToDom( + '' + + ' ' + + ' name1' + + ' ' + + ' ' + + ' name1' + + ' ' + + ''); + chai.assert.throws(function() { + Blockly.Xml.domToWorkspace(dom, this.workspace); + }); + }); + }); + suite('appendDomToWorkspace', function() { + setup(function() { + addBlockTypeToCleanup(this.sharedCleanup, 'test_block'); + Blockly.Blocks['test_block'] = { + init: function() { + this.jsonInit({ + message0: 'test', + }); + }, + }; + this.workspace = new Blockly.Workspace(); + }); + teardown(function() { + workspaceTeardown.call(this, this.workspace); + }); + test('Headless', function() { + const dom = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ''); + Blockly.Xml.appendDomToWorkspace(dom, this.workspace); + chai.assert.equal(this.workspace.getAllBlocks(false).length, 1, 'Block count'); + const newBlockIds = Blockly.Xml.appendDomToWorkspace(dom, this.workspace); + chai.assert.equal(this.workspace.getAllBlocks(false).length, 2, 'Block count'); + chai.assert.equal(newBlockIds.length, 1, 'Number of new block ids'); + }); + }); + suite('workspaceToDom -> domToWorkspace -> workspaceToDom', function() { + setup(function() { + const options = { + comments: true, + }; + this.renderedWorkspace = Blockly.inject('blocklyDiv', options); + this.headlessWorkspace = + new Blockly.Workspace(new Blockly.Options(options)); + }); + teardown(function() { + workspaceTeardown.call(this, this.renderedWorkspace); + workspaceTeardown.call(this, this.headlessWorkspace); + }); + const assertRoundTrip = function(originWs, targetWs) { + const originXml = Blockly.Xml.workspaceToDom(originWs); + Blockly.Xml.domToWorkspace(originXml, targetWs); + const targetXml = Blockly.Xml.workspaceToDom(targetWs); + + const expectedXmlText = Blockly.Xml.domToText(originXml); + const actualXmlText = Blockly.Xml.domToText(targetXml); + + chai.assert.equal(actualXmlText, expectedXmlText); + }; + suite('Rendered -> XML -> Headless -> XML', function() { + test('Comment', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.renderedWorkspace); + block.setCommentText('test text'); + block.getCommentIcon().setBubbleSize(100, 100); + block.getCommentIcon().setVisible(true); + assertRoundTrip(this.renderedWorkspace, this.headlessWorkspace); + }); + }); + suite('Headless -> XML -> Rendered -> XML', function() { + test('Comment', function() { + const block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), this.headlessWorkspace); + block.setCommentText('test text'); + block.commentModel.size = new Blockly.utils.Size(100, 100); + block.commentModel.pinned = true; + + this.clock.runAll(); + + assertRoundTrip(this.headlessWorkspace, this.renderedWorkspace); + }); + }); + }); + suite('generateVariableFieldDom', function() { + test('Case Sensitive', function() { + const varId = 'testId'; + const type = 'testType'; + const name = 'testName'; + + const mockVariableModel = { + type: type, + name: name, + getId: function() { + return varId; + }, + }; + + const generatedXml = Blockly.Xml.domToText( + Blockly.Variables.generateVariableFieldDom(mockVariableModel)); + const expectedXml = + '' + name + ''; + chai.assert.equal(generatedXml, expectedXml); + }); + }); +}); diff --git a/tests/mocha/zoom_controls_test.js b/tests/mocha/zoom_controls_test.js index 573e8b8ffd8..b407ff1fdd0 100644 --- a/tests/mocha/zoom_controls_test.js +++ b/tests/mocha/zoom_controls_test.js @@ -1,66 +1,66 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -goog.module('Blockly.test.zoomControls'); - -const {assertEventFired, assertEventNotFired} = goog.require('Blockly.test.helpers.events'); -const eventUtils = goog.require('Blockly.Events.utils'); -const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); -const {simulateClick} = goog.require('Blockly.test.helpers.userInput'); - - -suite("Zoom Controls", function() { - setup(function() { - sharedTestSetup.call(this); - this.workspace = Blockly.inject('blocklyDiv', - {'zoom': {'controls': true}}); - this.zoomControls = this.workspace.zoomControls_; - }); - teardown(function() { - sharedTestTeardown.call(this); - }); - - suite("Events", function() { - function closeToMatcher(expectedValue, delta) { - return sinon.match(function(value) { - return Math.abs(value - expectedValue) <= delta; - }); - } - test("Zoom in", function() { - simulateClick(this.zoomControls.zoomInGroup_); - - assertEventFired( - this.eventsFireStub, Blockly.Events.Click, - {targetType: 'zoom_controls', type: eventUtils.CLICK}, this.workspace.id, null); - assertEventNotFired( - this.eventsFireStub, Blockly.Events.Click, - {targetType: 'workspace', type: eventUtils.CLICK}); - chai.assert.closeTo(this.workspace.getScale(), 1.2, 0.05); - }); - test("Zoom out", function() { - simulateClick(this.zoomControls.zoomOutGroup_); - - assertEventFired( - this.eventsFireStub, Blockly.Events.Click, - {targetType: 'zoom_controls', type: eventUtils.CLICK}, this.workspace.id, null); - assertEventNotFired( - this.eventsFireStub, Blockly.Events.Click, - {targetType: 'workspace', type: eventUtils.CLICK}); - chai.assert.closeTo(this.workspace.getScale(), 0.8, 0.05); - }); - test("Reset zoom", function() { - simulateClick(this.zoomControls.zoomResetGroup_); - - assertEventFired( - this.eventsFireStub, Blockly.Events.Click, - {targetType: 'zoom_controls', type: eventUtils.CLICK}, this.workspace.id, null); - assertEventNotFired( - this.eventsFireStub, Blockly.Events.Click, - {targetType: 'workspace', type: eventUtils.CLICK}); - chai.assert.equal(this.workspace.getScale(), 1); - }); - }); -}); +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +goog.module('Blockly.test.zoomControls'); + +const {assertEventFired, assertEventNotFired} = goog.require('Blockly.test.helpers.events'); +const eventUtils = goog.require('Blockly.Events.utils'); +const {sharedTestSetup, sharedTestTeardown} = goog.require('Blockly.test.helpers.setupTeardown'); +const {simulateClick} = goog.require('Blockly.test.helpers.userInput'); + + +suite("Zoom Controls", function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = Blockly.inject('blocklyDiv', + {'zoom': {'controls': true}}); + this.zoomControls = this.workspace.zoomControls_; + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite("Events", function() { + function closeToMatcher(expectedValue, delta) { + return sinon.match(function(value) { + return Math.abs(value - expectedValue) <= delta; + }); + } + test("Zoom in", function() { + simulateClick(this.zoomControls.zoomInGroup_); + + assertEventFired( + this.eventsFireStub, Blockly.Events.Click, + {targetType: 'zoom_controls', type: eventUtils.CLICK}, this.workspace.id, null); + assertEventNotFired( + this.eventsFireStub, Blockly.Events.Click, + {targetType: 'workspace', type: eventUtils.CLICK}); + chai.assert.closeTo(this.workspace.getScale(), 1.2, 0.05); + }); + test("Zoom out", function() { + simulateClick(this.zoomControls.zoomOutGroup_); + + assertEventFired( + this.eventsFireStub, Blockly.Events.Click, + {targetType: 'zoom_controls', type: eventUtils.CLICK}, this.workspace.id, null); + assertEventNotFired( + this.eventsFireStub, Blockly.Events.Click, + {targetType: 'workspace', type: eventUtils.CLICK}); + chai.assert.closeTo(this.workspace.getScale(), 0.8, 0.05); + }); + test("Reset zoom", function() { + simulateClick(this.zoomControls.zoomResetGroup_); + + assertEventFired( + this.eventsFireStub, Blockly.Events.Click, + {targetType: 'zoom_controls', type: eventUtils.CLICK}, this.workspace.id, null); + assertEventNotFired( + this.eventsFireStub, Blockly.Events.Click, + {targetType: 'workspace', type: eventUtils.CLICK}); + chai.assert.equal(this.workspace.getScale(), 1); + }); + }); +}); diff --git a/tests/multi_playground.html b/tests/multi_playground.html index da48e2c8567..81661226511 100644 --- a/tests/multi_playground.html +++ b/tests/multi_playground.html @@ -1,485 +1,485 @@ - - - - -Multi-toolbox Playground - - - - - - - - - -

      Blockly Multi Playground

      - -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      LTR, Vertical, StartRTL, Vertical, Start
      LTR, Vertical, EndRTL, Vertical, End
      LTR, Horizontal, StartRTL, Horizontal, Start
      LTR, Horizontal, EndRTL, Horizontal, End
      - - - - - - + + + + +Multi-toolbox Playground + + + + + + + + + +

      Blockly Multi Playground

      + +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      LTR, Vertical, StartRTL, Vertical, Start
      LTR, Vertical, EndRTL, Vertical, End
      LTR, Horizontal, StartRTL, Horizontal, Start
      LTR, Horizontal, EndRTL, Horizontal, End
      + + + + + + diff --git a/tests/node/.eslintrc.json b/tests/node/.eslintrc.json index 287b288a6b5..c01ed9c93fa 100644 --- a/tests/node/.eslintrc.json +++ b/tests/node/.eslintrc.json @@ -1,12 +1,12 @@ -{ - "env": { - "node": true, - "browser": false, - "mocha": true - }, - "globals": { - "console": true, - "require": true - }, - "extends": "../../.eslintrc.json" -} +{ + "env": { + "node": true, + "browser": false, + "mocha": true + }, + "globals": { + "console": true, + "require": true + }, + "extends": "../../.eslintrc.json" +} diff --git a/tests/node/.mocharc.js b/tests/node/.mocharc.js index 0928b25d275..d03c2cfd8cc 100644 --- a/tests/node/.mocharc.js +++ b/tests/node/.mocharc.js @@ -1,6 +1,6 @@ -'use strict'; - -module.exports = { - ui: 'tdd', - reporter: 'landing' -}; +'use strict'; + +module.exports = { + ui: 'tdd', + reporter: 'landing' +}; diff --git a/tests/node/run_node_test.js b/tests/node/run_node_test.js index 69d095d51b9..7fdce9fc18d 100644 --- a/tests/node/run_node_test.js +++ b/tests/node/run_node_test.js @@ -1,57 +1,57 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Mocha tests that test Blockly in Node. - */ - -const assert = require('chai').assert; -const Blockly = require('../../dist/'); - -const xmlText = '\n' + -' \n' + -' \n' + -' \n' + -' Hello from Blockly!\n' + -' \n' + -' \n' + -' \n' + -''; - -suite('Test Node.js', function() { - test('Import XML', function() { - const xml = Blockly.Xml.textToDom(xmlText); - - // Create workspace and import the XML - const workspace = new Blockly.Workspace(); - Blockly.Xml.domToWorkspace(xml, workspace); - }); - test('Roundtrip XML', function() { - const xml = Blockly.Xml.textToDom(xmlText); - - const workspace = new Blockly.Workspace(); - Blockly.Xml.domToWorkspace(xml, workspace); - - const headlessXml = Blockly.Xml.workspaceToDom(workspace, true); - const headlessText = Blockly.Xml.domToPrettyText(headlessXml); - - assert.equal(headlessText, xmlText, 'equal'); - }); - test('Generate Code', function() { - const xml = Blockly.Xml.textToDom(xmlText); - - // Create workspace and import the XML - const workspace = new Blockly.Workspace(); - Blockly.Xml.domToWorkspace(xml, workspace); - - // Convert code - const code = Blockly.JavaScript.workspaceToCode(workspace); - - // Check output - assert.equal('window.alert(\'Hello from Blockly!\');', code.trim(), 'equal'); - }); -}); - +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Mocha tests that test Blockly in Node. + */ + +const assert = require('chai').assert; +const Blockly = require('../../dist/'); + +const xmlText = '\n' + +' \n' + +' \n' + +' \n' + +' Hello from Blockly!\n' + +' \n' + +' \n' + +' \n' + +''; + +suite('Test Node.js', function() { + test('Import XML', function() { + const xml = Blockly.Xml.textToDom(xmlText); + + // Create workspace and import the XML + const workspace = new Blockly.Workspace(); + Blockly.Xml.domToWorkspace(xml, workspace); + }); + test('Roundtrip XML', function() { + const xml = Blockly.Xml.textToDom(xmlText); + + const workspace = new Blockly.Workspace(); + Blockly.Xml.domToWorkspace(xml, workspace); + + const headlessXml = Blockly.Xml.workspaceToDom(workspace, true); + const headlessText = Blockly.Xml.domToPrettyText(headlessXml); + + assert.equal(headlessText, xmlText, 'equal'); + }); + test('Generate Code', function() { + const xml = Blockly.Xml.textToDom(xmlText); + + // Create workspace and import the XML + const workspace = new Blockly.Workspace(); + Blockly.Xml.domToWorkspace(xml, workspace); + + // Convert code + const code = Blockly.JavaScript.workspaceToCode(workspace); + + // Check output + assert.equal('window.alert(\'Hello from Blockly!\');', code.trim(), 'equal'); + }); +}); + diff --git a/tests/playground.html b/tests/playground.html index 7a555392fb8..149b4047329 100644 --- a/tests/playground.html +++ b/tests/playground.html @@ -1,1247 +1,1266 @@ - - - - -Blockly Playground - - - - - - - - - - - -
      - -

      Blockly Playground

      - -

      - - - - - Advanced -

      - -
      - - -
      -

      - - - -
      - - - - - -
      - -

      - -

      - Stress test:   - - - -

      -
        -
      • - - -
      • -
      • - - -
      • -
      - - - - - - - - - - - - - - + + + + +Blockly Playground + + + + + + + + + + + + +
      + +

      Blockly Playground

      + +

      + - + - + Advanced +

      + +
      + + +
      +

      + + + +
      + + + + + +
      + +

      + +

      + Stress test:   + + + +

      +
        +
      • + + +
      • +
      • + + +
      • +
      + + + + + + + + + + + + + + diff --git a/tests/playgrounds/advanced_playground.html b/tests/playgrounds/advanced_playground.html index 1510555b71e..d73906ff862 100644 --- a/tests/playgrounds/advanced_playground.html +++ b/tests/playgrounds/advanced_playground.html @@ -1,160 +1,160 @@ - - - - -Advanced Blockly Playground - - - - - - - - - - - -
      - - + + + + +Advanced Blockly Playground + + + + + + + + + + + +
      + + diff --git a/tests/playgrounds/blockly.mjs b/tests/playgrounds/blockly.mjs index cb836f5399b..f24dcf17337 100644 --- a/tests/playgrounds/blockly.mjs +++ b/tests/playgrounds/blockly.mjs @@ -1,39 +1,39 @@ -/** - * @license - * Copyright 2022 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Finishes loading Blockly and exports it as this - * module's default export. - * - * It is exported as the default export to avoid having to - * re-export each property on Blockly individually, because you - * can't do: - * - * export * from ; // SYNTAX ERROR - * - * You must use a - - -

      Outer Frame

      - - - + + + + +Blockly <iframe> Playground + + + + +

      Outer Frame

      + + + diff --git a/tests/playgrounds/load_all.js b/tests/playgrounds/load_all.js index 5eaa65e03d1..f31483d1fe4 100644 --- a/tests/playgrounds/load_all.js +++ b/tests/playgrounds/load_all.js @@ -1,53 +1,53 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Loads uncompressed Blockly when running locally. Loads - * compressed otherwise. - */ -'use strict'; - - -/** - * Loads all the compressed or uncompressed dependencies necessary to run the - * playground. This is necessary since the goog.module conversion. Please see - * issue #5557 for more information. - */ -(function() { -const isIe = navigator.userAgent.indexOf('MSIE') !== -1 || - navigator.appVersion.indexOf('Trident/') > -1; - -if ((location.hostname === 'localhost' || location.hostname === '127.0.0.1' || - location.hostname === '[::1]') && - !isIe) { - document.write( - ``); - document.write(``); - document.write(``); - document.write( - ``); - document.write(``); -} else { - document.write( - ``); - document.write(``); - document.write(``); - document.write(``); - document.write(``); - document.write(``); - document.write(``); - document.write(``); -} -})(); +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Loads uncompressed Blockly when running locally. Loads + * compressed otherwise. + */ +'use strict'; + + +/** + * Loads all the compressed or uncompressed dependencies necessary to run the + * playground. This is necessary since the goog.module conversion. Please see + * issue #5557 for more information. + */ +(function() { +const isIe = navigator.userAgent.indexOf('MSIE') !== -1 || + navigator.appVersion.indexOf('Trident/') > -1; + +if ((location.hostname === 'localhost' || location.hostname === '127.0.0.1' || + location.hostname === '[::1]') && + !isIe) { + document.write( + ``); + document.write(``); + document.write(``); + document.write( + ``); + document.write(``); +} else { + document.write( + ``); + document.write(``); + document.write(``); + document.write(``); + document.write(``); + document.write(``); + document.write(``); + document.write(``); +} +})(); diff --git a/tests/playgrounds/prepare.js b/tests/playgrounds/prepare.js index d428b952410..66387b28586 100644 --- a/tests/playgrounds/prepare.js +++ b/tests/playgrounds/prepare.js @@ -1,99 +1,100 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Load this file in a '); - // Load dependency graph info from test/deps.js. To update - // deps.js, run `npm run build:deps`. - document.write(''); - - // Msg loading kludge. This should go away once #5409 and/or - // #1895 are fixed. - - // Load messages into a temporary Blockly.Msg object, deleting it - // afterwards (after saving the messages!) - window.Blockly = {Msg: Object.create(null)}; - document.write(''); - document.write(` - `); - - document.write(` - `); - } else { - // The below code is necessary for a few reasons: - // - We need an absolute path instead of relative path because the - // advanced_playground the and regular playground are in different folders. - // - We need to get the root directory for blockly because it is - // different for github.io, appspot and local. - const files = [ - 'blockly_compressed.js', - 'msg/messages.js', - 'blocks_compressed.js', - 'dart_compressed.js', - 'javascript_compressed.js', - 'lua_compressed.js', - 'php_compressed.js', - 'python_compressed.js', - ]; - - // We need to load Blockly in compiled mode. - const hostName = window.location.host.replaceAll('.', '\\.'); - const matches = new RegExp(hostName + '\\/(.*)tests').exec(window.location.href); - const root = matches && matches[1] ? matches[1] : ''; - - // Load blockly_compressed.js et al. using '); - } - } -})(); +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Load this file in a '); + // Load dependency graph info from test/deps.js. To update + // deps.js, run `npm run build:deps`. + document.write(''); + + // Msg loading kludge. This should go away once #5409 and/or + // #1895 are fixed. + + // Load messages into a temporary Blockly.Msg object, deleting it + // afterwards (after saving the messages!) + window.Blockly = {Msg: Object.create(null)}; + //document.write(''); + document.write(''); + document.write(` + `); + + document.write(` + `); + } else { + // The below code is necessary for a few reasons: + // - We need an absolute path instead of relative path because the + // advanced_playground the and regular playground are in different folders. + // - We need to get the root directory for blockly because it is + // different for github.io, appspot and local. + const files = [ + 'blockly_compressed.js', + 'msg/messages.js', + 'blocks_compressed.js', + 'dart_compressed.js', + 'javascript_compressed.js', + 'lua_compressed.js', + 'php_compressed.js', + 'python_compressed.js', + ]; + + // We need to load Blockly in compiled mode. + const hostName = window.location.host.replaceAll('.', '\\.'); + const matches = new RegExp(hostName + '\\/(.*)tests').exec(window.location.href); + const root = matches && matches[1] ? matches[1] : ''; + + // Load blockly_compressed.js et al. using '); + } + } +})(); diff --git a/tests/playgrounds/screenshot.js b/tests/playgrounds/screenshot.js index 59d0594e280..46c56223383 100644 --- a/tests/playgrounds/screenshot.js +++ b/tests/playgrounds/screenshot.js @@ -1,108 +1,108 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Download screenshot. - */ -'use strict'; - -/** - * Convert an SVG datauri into a PNG datauri. - * @param {string} data SVG datauri. - * @param {number} width Image width. - * @param {number} height Image height. - * @param {!Function} callback Callback. - */ -function svgToPng_(data, width, height, callback) { - const canvas = document.createElement("canvas"); - const context = canvas.getContext("2d"); - const img = new Image(); - - const pixelDensity = 10; - canvas.width = width * pixelDensity; - canvas.height = height * pixelDensity; - img.onload = function() { - context.drawImage( - img, 0, 0, width, height, 0, 0, canvas.width, canvas.height); - try { - const dataUri = canvas.toDataURL('image/png'); - callback(dataUri); - } catch (err) { - console.warn('Error converting the workspace svg to a png'); - callback(''); - } - }; - img.src = data; -} - -/** - * Create an SVG of the blocks on the workspace. - * @param {!Blockly.WorkspaceSvg} workspace The workspace. - * @param {!Function} callback Callback. - * @param {string=} customCss Custom CSS to append to the SVG. - */ -function workspaceToSvg_(workspace, callback, customCss) { - // Go through all text areas and set their value. - const textAreas = document.getElementsByTagName("textarea"); - for (let i = 0; i < textAreas.length; i++) { - textAreas[i].innerHTML = textAreas[i].value; - } - - const bBox = workspace.getBlocksBoundingBox(); - const x = bBox.x || bBox.left; - const y = bBox.y || bBox.top; - const width = bBox.width || bBox.right - x; - const height = bBox.height || bBox.bottom - y; - - const blockCanvas = workspace.getCanvas(); - const clone = blockCanvas.cloneNode(true); - clone.removeAttribute('transform'); - - const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); - svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); - svg.appendChild(clone); - svg.setAttribute('viewBox', - x + ' ' + y + ' ' + width + ' ' + height); - - svg.setAttribute('class', 'blocklySvg ' + - (workspace.options.renderer || 'geras') + '-renderer ' + - (workspace.getTheme ? workspace.getTheme().name + '-theme' : '')); - svg.setAttribute('width', width); - svg.setAttribute('height', height); - svg.setAttribute("style", 'background-color: transparent'); - - const css = [].slice.call(document.head.querySelectorAll('style')) - .filter( - (el) => /\.blocklySvg/.test(el.innerText) || - (el.id.indexOf('blockly-') === 0)) - .map((el) => el.innerText) - .join('\n'); - const style = document.createElement('style'); - style.innerHTML = css + '\n' + customCss; - svg.insertBefore(style, svg.firstChild); - - let svgAsXML = (new XMLSerializer).serializeToString(svg); - svgAsXML = svgAsXML.replace(/ /g, ' '); - const data = 'data:image/svg+xml,' + encodeURIComponent(svgAsXML); - - svgToPng_(data, width, height, callback); -} - -/** - * Download a screenshot of the blocks on a Blockly workspace. - * @param {!Blockly.WorkspaceSvg} workspace The Blockly workspace. - */ -function downloadScreenshot(workspace) { - workspaceToSvg_(workspace, function(datauri) { - const a = document.createElement('a'); - a.download = 'screenshot.png'; - a.target = '_self'; - a.href = datauri; - document.body.appendChild(a); - a.click(); - a.parentNode.removeChild(a); - }); -} +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Download screenshot. + */ +'use strict'; + +/** + * Convert an SVG datauri into a PNG datauri. + * @param {string} data SVG datauri. + * @param {number} width Image width. + * @param {number} height Image height. + * @param {!Function} callback Callback. + */ +function svgToPng_(data, width, height, callback) { + const canvas = document.createElement("canvas"); + const context = canvas.getContext("2d"); + const img = new Image(); + + const pixelDensity = 10; + canvas.width = width * pixelDensity; + canvas.height = height * pixelDensity; + img.onload = function() { + context.drawImage( + img, 0, 0, width, height, 0, 0, canvas.width, canvas.height); + try { + const dataUri = canvas.toDataURL('image/png'); + callback(dataUri); + } catch (err) { + console.warn('Error converting the workspace svg to a png'); + callback(''); + } + }; + img.src = data; +} + +/** + * Create an SVG of the blocks on the workspace. + * @param {!Blockly.WorkspaceSvg} workspace The workspace. + * @param {!Function} callback Callback. + * @param {string=} customCss Custom CSS to append to the SVG. + */ +function workspaceToSvg_(workspace, callback, customCss) { + // Go through all text areas and set their value. + const textAreas = document.getElementsByTagName("textarea"); + for (let i = 0; i < textAreas.length; i++) { + textAreas[i].innerHTML = textAreas[i].value; + } + + const bBox = workspace.getBlocksBoundingBox(); + const x = bBox.x || bBox.left; + const y = bBox.y || bBox.top; + const width = bBox.width || bBox.right - x; + const height = bBox.height || bBox.bottom - y; + + const blockCanvas = workspace.getCanvas(); + const clone = blockCanvas.cloneNode(true); + clone.removeAttribute('transform'); + + const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); + svg.appendChild(clone); + svg.setAttribute('viewBox', + x + ' ' + y + ' ' + width + ' ' + height); + + svg.setAttribute('class', 'blocklySvg ' + + (workspace.options.renderer || 'geras') + '-renderer ' + + (workspace.getTheme ? workspace.getTheme().name + '-theme' : '')); + svg.setAttribute('width', width); + svg.setAttribute('height', height); + svg.setAttribute("style", 'background-color: transparent'); + + const css = [].slice.call(document.head.querySelectorAll('style')) + .filter( + (el) => /\.blocklySvg/.test(el.innerText) || + (el.id.indexOf('blockly-') === 0)) + .map((el) => el.innerText) + .join('\n'); + const style = document.createElement('style'); + style.innerHTML = css + '\n' + customCss; + svg.insertBefore(style, svg.firstChild); + + let svgAsXML = (new XMLSerializer).serializeToString(svg); + svgAsXML = svgAsXML.replace(/ /g, ' '); + const data = 'data:image/svg+xml,' + encodeURIComponent(svgAsXML); + + svgToPng_(data, width, height, callback); +} + +/** + * Download a screenshot of the blocks on a Blockly workspace. + * @param {!Blockly.WorkspaceSvg} workspace The Blockly workspace. + */ +function downloadScreenshot(workspace) { + workspaceToSvg_(workspace, function(datauri) { + const a = document.createElement('a'); + a.download = 'screenshot.png'; + a.target = '_self'; + a.href = datauri; + document.body.appendChild(a); + a.click(); + a.parentNode.removeChild(a); + }); +} diff --git a/tests/rendering/svg_paths.html b/tests/rendering/svg_paths.html index fe415c2f69b..b0dac622903 100644 --- a/tests/rendering/svg_paths.html +++ b/tests/rendering/svg_paths.html @@ -1,98 +1,98 @@ - - - - - - SVG Path Playground - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + SVG Path Playground + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/rendering/zelos/README.md b/tests/rendering/zelos/README.md index d8cf459dfe1..137ec0f1c0a 100644 --- a/tests/rendering/zelos/README.md +++ b/tests/rendering/zelos/README.md @@ -1,19 +1,19 @@ -# Zelos Rendering / PXT-Blockly Comparison Playground - -## Dependencies -``` -npm install -g http-server -``` - -## Running the Playground: - -In Blockly's root directory, run: -``` -http-server ./ -``` - -and browse to: -``` -http://127.0.0.1:8080/tests/rendering/zelos -``` - +# Zelos Rendering / PXT-Blockly Comparison Playground + +## Dependencies +``` +npm install -g http-server +``` + +## Running the Playground: + +In Blockly's root directory, run: +``` +http-server ./ +``` + +and browse to: +``` +http://127.0.0.1:8080/tests/rendering/zelos +``` + diff --git a/tests/rendering/zelos/index.html b/tests/rendering/zelos/index.html index 4516b79be8e..1860636c089 100644 --- a/tests/rendering/zelos/index.html +++ b/tests/rendering/zelos/index.html @@ -1,247 +1,247 @@ - - - - - - - - -
      -
      -
      -

      Zelos Rendering

      -
      -
      -

      PXT-Blockly Rendering

      -
      -
      -
      -
      - -
      -
      - -
      -
      -
      -
      -
      -

      Zelos Rendering

      - -
      -
      -

      PXT-Blockly Rendering

      - -
      -
      -
      -
      - - - - + + + + + + + + +
      +
      +
      +

      Zelos Rendering

      +
      +
      +

      PXT-Blockly Rendering

      +
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +

      Zelos Rendering

      + +
      +
      +

      PXT-Blockly Rendering

      + +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/tests/rendering/zelos/pxtblockly.html b/tests/rendering/zelos/pxtblockly.html index d3aa9dffef8..250007ddcba 100644 --- a/tests/rendering/zelos/pxtblockly.html +++ b/tests/rendering/zelos/pxtblockly.html @@ -1,66 +1,66 @@ - - - - - - - - - - -
      - - - + + + + + + + + + + +
      + + + \ No newline at end of file diff --git a/tests/rendering/zelos/pxtblockly/index.html b/tests/rendering/zelos/pxtblockly/index.html index 6a53da07292..fc4f53c076d 100644 --- a/tests/rendering/zelos/pxtblockly/index.html +++ b/tests/rendering/zelos/pxtblockly/index.html @@ -1,166 +1,166 @@ - - - - - - - - - - - - Scratch-Blocks - -
      -
      -
      -

      Zelos Rendering

      -
      -
      -

      PXT-Blockly Rendering

      -
      -
      -
      -
      - -
      -
      - -
      -
      -
      -
      -
      -

      Zelos Rendering

      - -
      -
      -

      PXT-Blockly Rendering

      - -
      -
      -
      -
      - - - - + + + + + + + + + + + + Scratch-Blocks + +
      +
      +
      +

      Zelos Rendering

      +
      +
      +

      PXT-Blockly Rendering

      +
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +

      Zelos Rendering

      + +
      +
      +

      PXT-Blockly Rendering

      + +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/tests/rendering/zelos/pxtblockly/pxtblockly.html b/tests/rendering/zelos/pxtblockly/pxtblockly.html index 8ee2e956087..1cc91544df9 100644 --- a/tests/rendering/zelos/pxtblockly/pxtblockly.html +++ b/tests/rendering/zelos/pxtblockly/pxtblockly.html @@ -1,68 +1,68 @@ - - - - - - - - - - -
      - - - + + + + + + + + + + +
      + + + \ No newline at end of file diff --git a/tests/rendering/zelos/pxtblockly/zelos.html b/tests/rendering/zelos/pxtblockly/zelos.html index 4568ba25ec5..b65a57dbe24 100644 --- a/tests/rendering/zelos/pxtblockly/zelos.html +++ b/tests/rendering/zelos/pxtblockly/zelos.html @@ -1,79 +1,79 @@ - - - - - - - - - - -
      - - - + + + + + + + + + + +
      + + + \ No newline at end of file diff --git a/tests/rendering/zelos/scratchblocks/index.html b/tests/rendering/zelos/scratchblocks/index.html index 9814d5eaf20..87bd38b583d 100644 --- a/tests/rendering/zelos/scratchblocks/index.html +++ b/tests/rendering/zelos/scratchblocks/index.html @@ -1,166 +1,166 @@ - - - - - - - - - - - PXT-Blockly - -
      -
      -
      -

      Zelos Rendering

      -
      -
      -

      Scratch-Blocks Rendering

      -
      -
      -
      -
      - -
      -
      - -
      -
      -
      -
      -
      -

      Zelos Rendering

      - -
      -
      -

      Scratch-Blocks Rendering

      - -
      -
      -
      -
      - - - - + + + + + + + + + + + PXT-Blockly + +
      +
      +
      +

      Zelos Rendering

      +
      +
      +

      Scratch-Blocks Rendering

      +
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +

      Zelos Rendering

      + +
      +
      +

      Scratch-Blocks Rendering

      + +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/tests/rendering/zelos/scratchblocks/scratchblocks.html b/tests/rendering/zelos/scratchblocks/scratchblocks.html index 801123097b1..a151ca77e6a 100644 --- a/tests/rendering/zelos/scratchblocks/scratchblocks.html +++ b/tests/rendering/zelos/scratchblocks/scratchblocks.html @@ -1,70 +1,70 @@ - - - - - - - - - - -
      - - - + + + + + + + + + + +
      + + + \ No newline at end of file diff --git a/tests/rendering/zelos/scratchblocks/zelos.html b/tests/rendering/zelos/scratchblocks/zelos.html index 877c4f4cb8a..fe01389628a 100644 --- a/tests/rendering/zelos/scratchblocks/zelos.html +++ b/tests/rendering/zelos/scratchblocks/zelos.html @@ -1,105 +1,105 @@ - - - - - - - - - - - -
      - - - + + + + + + + + + + + +
      + + + \ No newline at end of file diff --git a/tests/rendering/zelos/zelos.html b/tests/rendering/zelos/zelos.html index 13b6f06c5e2..62fe3df909f 100644 --- a/tests/rendering/zelos/zelos.html +++ b/tests/rendering/zelos/zelos.html @@ -1,79 +1,79 @@ - - - - - - - - - - -
      - - - + + + + + + + + + + +
      + + + \ No newline at end of file diff --git a/tests/run_all_tests.sh b/tests/run_all_tests.sh index 1d169be4f89..7679e969b8c 100755 --- a/tests/run_all_tests.sh +++ b/tests/run_all_tests.sh @@ -1,95 +1,95 @@ -#!/bin/bash - -if [ ! -z $CI ]; then echo "Executing run_all_tests.sh from $(pwd)"; fi - -# ANSI colors -BOLD_GREEN='\033[1;32m' -BOLD_RED='\033[1;31m' -ANSI_RESET='\033[0m' - -gh_actions_fold () { - local startOrEnd=$1 # Either "start" or "end" - - if [ ! -z $CI ]; then - echo "::$startOrEnd::" - fi -} - -# Find the Blockly project root if pwd is the root -# or if pwd is the directory containing this script. -if [ -f ./run_all_tests.js ]; then - BLOCKLY_ROOT=".." -elif [ -f tests/run_all_tests.sh ]; then - BLOCKLY_ROOT="." -else - echo -e "${BOLD_RED}ERROR: Cannot determine BLOCKLY_ROOT${ANSI_RESET}" 1>&2; - exit 1 -fi -pushd $BLOCKLY_ROOT -echo "pwd: $(pwd)" - -FAILURE_COUNT=0 - -run_test_command () { - local test_id=$1 # The id to use for folds and similar. No spaces. - local command=$2 # The command to run. - - echo "=======================================" - echo "== $test_id" - gh_actions_fold group - $command - local test_result=$? - gh_actions_fold endgroup - if [ $test_result -eq 0 ]; then - echo -e "${BOLD_GREEN}SUCCESS:${ANSI_RESET} ${test_id}" - else - echo -e "${BOLD_RED}FAILED:${ANSI_RESET} ${test_id}" - FAILURE_COUNT=$((FAILURE_COUNT+1)) - fi -} - -# Lint the codebase. -# Skip for CI environments, because linting is run separately. -if [ -z $CI ]; then - run_test_command "eslint" "eslint ." -fi - -# Run the full usual build process, checking to ensure there are no -# closure compiler warnings / errors. -run_test_command "build-debug" "npm run build-debug" - -# Generate TypeScript typings and ensure there are no errors. -# TODO(5621): Re-enable this test once typings generation is fixed. -# run_test_command "typings" "npm run typings" - -# Run renaming validation test. -run_test_command "renamings" "tests/migration/validate-renamings.js" - -# Check the sizes of built files for unexpected growth. -run_test_command "metadata" "tests/scripts/check_metadata.sh" - -# Run Mocha tests inside a browser. -run_test_command "mocha" "node tests/mocha/run_mocha_tests_in_browser.js" - -# Run generator tests inside a browser and check the results. -run_test_command "generators" "tests/scripts/run_generators.sh" - -# Run the package build process, as Node tests depend on it. -run_test_command "package" "npm run package" - -# Run Node tests. -run_test_command "node" "./node_modules/.bin/mocha tests/node --config tests/node/.mocharc.js" - -# Attempt advanced compilation of a Blockly app. -run_test_command "advanced_compile" "npm run test:compile:advanced" - -# End of tests. -popd -echo "=======================================" -if [ "$FAILURE_COUNT" -eq "0" ]; then - echo -e "${BOLD_GREEN}All tests passed.${ANSI_RESET}" - exit 0 -else - echo -e "${BOLD_RED}Failures in ${FAILURE_COUNT} test groups.${ANSI_RESET}" - exit 1 -fi +#!/bin/bash + +if [ ! -z $CI ]; then echo "Executing run_all_tests.sh from $(pwd)"; fi + +# ANSI colors +BOLD_GREEN='\033[1;32m' +BOLD_RED='\033[1;31m' +ANSI_RESET='\033[0m' + +gh_actions_fold () { + local startOrEnd=$1 # Either "start" or "end" + + if [ ! -z $CI ]; then + echo "::$startOrEnd::" + fi +} + +# Find the Blockly project root if pwd is the root +# or if pwd is the directory containing this script. +if [ -f ./run_all_tests.js ]; then + BLOCKLY_ROOT=".." +elif [ -f tests/run_all_tests.sh ]; then + BLOCKLY_ROOT="." +else + echo -e "${BOLD_RED}ERROR: Cannot determine BLOCKLY_ROOT${ANSI_RESET}" 1>&2; + exit 1 +fi +pushd $BLOCKLY_ROOT +echo "pwd: $(pwd)" + +FAILURE_COUNT=0 + +run_test_command () { + local test_id=$1 # The id to use for folds and similar. No spaces. + local command=$2 # The command to run. + + echo "=======================================" + echo "== $test_id" + gh_actions_fold group + $command + local test_result=$? + gh_actions_fold endgroup + if [ $test_result -eq 0 ]; then + echo -e "${BOLD_GREEN}SUCCESS:${ANSI_RESET} ${test_id}" + else + echo -e "${BOLD_RED}FAILED:${ANSI_RESET} ${test_id}" + FAILURE_COUNT=$((FAILURE_COUNT+1)) + fi +} + +# Lint the codebase. +# Skip for CI environments, because linting is run separately. +if [ -z $CI ]; then + run_test_command "eslint" "eslint ." +fi + +# Run the full usual build process, checking to ensure there are no +# closure compiler warnings / errors. +run_test_command "build-debug" "npm run build-debug" + +# Generate TypeScript typings and ensure there are no errors. +# TODO(5621): Re-enable this test once typings generation is fixed. +# run_test_command "typings" "npm run typings" + +# Run renaming validation test. +run_test_command "renamings" "tests/migration/validate-renamings.js" + +# Check the sizes of built files for unexpected growth. +run_test_command "metadata" "tests/scripts/check_metadata.sh" + +# Run Mocha tests inside a browser. +run_test_command "mocha" "node tests/mocha/run_mocha_tests_in_browser.js" + +# Run generator tests inside a browser and check the results. +run_test_command "generators" "tests/scripts/run_generators.sh" + +# Run the package build process, as Node tests depend on it. +run_test_command "package" "npm run package" + +# Run Node tests. +run_test_command "node" "./node_modules/.bin/mocha tests/node --config tests/node/.mocharc.js" + +# Attempt advanced compilation of a Blockly app. +run_test_command "advanced_compile" "npm run test:compile:advanced" + +# End of tests. +popd +echo "=======================================" +if [ "$FAILURE_COUNT" -eq "0" ]; then + echo -e "${BOLD_GREEN}All tests passed.${ANSI_RESET}" + exit 0 +else + echo -e "${BOLD_RED}Failures in ${FAILURE_COUNT} test groups.${ANSI_RESET}" + exit 1 +fi diff --git a/tests/scripts/check_metadata.sh b/tests/scripts/check_metadata.sh index 7bf9e38e2b2..d9038191d25 100755 --- a/tests/scripts/check_metadata.sh +++ b/tests/scripts/check_metadata.sh @@ -1,126 +1,126 @@ -#!/bin/bash - -# Checks the size of generated files and verifies they aren't growing -# unreasonably. Assumes the compressed files have already been built. - -# The ..._EXPECTED values should be updated with each release. -# Run this script to get the new values. - -# Location of the pre-built compressed files. -# -# (TODO(#5007): Should fetch this from scripts/gulpfiles/config.js -# instead of hardcoding it here. -readonly BUILD_DIR='build' - -# These values should be updated with each release. (Note that the -# historic values are tab-delimited.) - -# Size of blockly_compressed.js -# Q2 2019 2.20190722.0 812688 -# Q3 2019 3.20191014.0 538781 -# Q4 2019 3.20200123.0 609855 -# Q1 2020 3.20200402.0 619341 -# Q2 2020 3.20200625.0 621811 -# Q3 2020 3.20200924.0 641216 -# Q4 2020 4.20201217.0 653624 -# Q1 2021 5.20210325.0 653957 -# Q2 2021 6.20210701.0 664497 -# Q3 2021 6.20210701.0 731695 (mid-quarter goog.module conversion) -# Q3 2021 6.20210701.0 808807 (late-quarter goog.module conversion) -# Q4 2021 7.20211209.0-beta.0 920002 -# Q4 2021 7.20211209.0 929665 -readonly BLOCKLY_SIZE_EXPECTED=929665 - -# Size of blocks_compressed.js -# Q2 2019 2.20190722.0 75618 -# Q3 2019 3.20191014.0 76455 -# Q4 2019 3.20200123.0 75629 -# Q1 2020 3.20200402.0 75805 -# Q2 2020 3.20200625.0 76360 -# Q3 2020 3.20200924.0 76429 -# Q4 2020 4.20201217.0 76693 -# Q1 2021 5.20210325.0 76693 -# Q2 2021 6.20210701.0 76669 -# Q3 2021 6.20210701.0 76669 -# Q4 2021 7.20211209.0-beta.0 82054 -# Q4 2021 7.20211209.0 86966 -readonly BLOCKS_SIZE_EXPECTED=86966 - -# Size of blockly_compressed.js.gz -# Q2 2019 2.20190722.0 180925 -# Q3 2019 3.20191014.0 119064 -# Q4 2019 3.20200123.0 131897 -# Q1 2020 3.20200402.0 134133 -# Q2 2020 3.20200625.0 135181 -# Q3 2020 3.20200924.0 138003 -# Q4 2020 4.20201217.0 138115 -# Q1 2021 5.20210325.0 136118 -# Q2 2021 6.20210701.0 142112 -# Q3 2021 6.20210701.0 147476 (mid-quarter goog.module conversion) -# Q3 2021 6.20210701.0 152025 (late-quarter goog.module conversion) -# Q4 2021 7.20211209.0-beta.0 169863 -# Q4 2021 7.20211209.0 171759 -readonly BLOCKLY_GZ_SIZE_EXPECTED=171759 - -# Size of blocks_compressed.js.gz -# Q2 2019 2.20190722.0 14552 -# Q3 2019 3.20191014.0 15064 -# Q4 2019 3.20200123.0 14897 -# Q1 2020 3.20200402.0 14966 -# Q2 2020 3.20200625.0 15195 -# Q3 2020 3.20200924.0 15231 -# Q4 2020 4.20201217.0 15224 -# Q1 2021 5.20210325.0 15285 -# Q2 2021 6.20210701.0 15275 -# Q3 2021 6.20210701.0 15284 -# Q4 2021 7.20211209.0-beta.0 16616 -# Q4 2021 7.20211209.0 15760 -readonly BLOCKS_GZ_SIZE_EXPECTED=15760 - -# ANSI colors -readonly BOLD_GREEN='\033[1;32m' -readonly BOLD_RED='\033[1;31m' -readonly ANSI_RESET='\033[0m' - -# Terminate immediately with non-zero status if any command exits -# with non-zero status, printing a nice message. -set -e -function fail { - echo -e "${BOLD_RED}Error while checking metadata.${ANSI_RESET}" >&2 -} -trap fail ERR - -# GZip them for additional size comparisons (keep originals, force -# overwite previously-gzipped copies). -echo "Zipping the compressed files" -gzip -kf "${BUILD_DIR}/blockly_compressed.js" -gzip -kf "${BUILD_DIR}/blocks_compressed.js" - -# Check the sizes of the files - -has_failed=0 - -compare_size() { - local name="$1" - local expected="$2" - local compare=$(echo "${expected} * 1.1 / 1" | bc) - - local size=$(wc -c <"${name}") - - if (( $size > $compare)) - then - echo -ne "${BOLD_RED}Failed: Size of ${name} has grown more than 10%. " >&2 - echo -e "${size} vs ${expected} ${ANSI_RESET}" >&2 - has_failed=1 - else - echo -ne "${BOLD_GREEN}Size of ${name} at ${size} compared to previous " >&2 - echo -e "${expected}.${ANSI_RESET}" - fi -} - -compare_size "${BUILD_DIR}/blockly_compressed.js" $BLOCKLY_SIZE_EXPECTED -compare_size "${BUILD_DIR}/blocks_compressed.js" $BLOCKS_SIZE_EXPECTED -compare_size "${BUILD_DIR}/blockly_compressed.js.gz" $BLOCKLY_GZ_SIZE_EXPECTED -compare_size "${BUILD_DIR}/blocks_compressed.js.gz" $BLOCKS_GZ_SIZE_EXPECTED - -exit $has_failed +#!/bin/bash + +# Checks the size of generated files and verifies they aren't growing +# unreasonably. Assumes the compressed files have already been built. + +# The ..._EXPECTED values should be updated with each release. +# Run this script to get the new values. + +# Location of the pre-built compressed files. +# +# (TODO(#5007): Should fetch this from scripts/gulpfiles/config.js +# instead of hardcoding it here. +readonly BUILD_DIR='build' + +# These values should be updated with each release. (Note that the +# historic values are tab-delimited.) + +# Size of blockly_compressed.js +# Q2 2019 2.20190722.0 812688 +# Q3 2019 3.20191014.0 538781 +# Q4 2019 3.20200123.0 609855 +# Q1 2020 3.20200402.0 619341 +# Q2 2020 3.20200625.0 621811 +# Q3 2020 3.20200924.0 641216 +# Q4 2020 4.20201217.0 653624 +# Q1 2021 5.20210325.0 653957 +# Q2 2021 6.20210701.0 664497 +# Q3 2021 6.20210701.0 731695 (mid-quarter goog.module conversion) +# Q3 2021 6.20210701.0 808807 (late-quarter goog.module conversion) +# Q4 2021 7.20211209.0-beta.0 920002 +# Q4 2021 7.20211209.0 929665 +readonly BLOCKLY_SIZE_EXPECTED=929665 + +# Size of blocks_compressed.js +# Q2 2019 2.20190722.0 75618 +# Q3 2019 3.20191014.0 76455 +# Q4 2019 3.20200123.0 75629 +# Q1 2020 3.20200402.0 75805 +# Q2 2020 3.20200625.0 76360 +# Q3 2020 3.20200924.0 76429 +# Q4 2020 4.20201217.0 76693 +# Q1 2021 5.20210325.0 76693 +# Q2 2021 6.20210701.0 76669 +# Q3 2021 6.20210701.0 76669 +# Q4 2021 7.20211209.0-beta.0 82054 +# Q4 2021 7.20211209.0 86966 +readonly BLOCKS_SIZE_EXPECTED=86966 + +# Size of blockly_compressed.js.gz +# Q2 2019 2.20190722.0 180925 +# Q3 2019 3.20191014.0 119064 +# Q4 2019 3.20200123.0 131897 +# Q1 2020 3.20200402.0 134133 +# Q2 2020 3.20200625.0 135181 +# Q3 2020 3.20200924.0 138003 +# Q4 2020 4.20201217.0 138115 +# Q1 2021 5.20210325.0 136118 +# Q2 2021 6.20210701.0 142112 +# Q3 2021 6.20210701.0 147476 (mid-quarter goog.module conversion) +# Q3 2021 6.20210701.0 152025 (late-quarter goog.module conversion) +# Q4 2021 7.20211209.0-beta.0 169863 +# Q4 2021 7.20211209.0 171759 +readonly BLOCKLY_GZ_SIZE_EXPECTED=171759 + +# Size of blocks_compressed.js.gz +# Q2 2019 2.20190722.0 14552 +# Q3 2019 3.20191014.0 15064 +# Q4 2019 3.20200123.0 14897 +# Q1 2020 3.20200402.0 14966 +# Q2 2020 3.20200625.0 15195 +# Q3 2020 3.20200924.0 15231 +# Q4 2020 4.20201217.0 15224 +# Q1 2021 5.20210325.0 15285 +# Q2 2021 6.20210701.0 15275 +# Q3 2021 6.20210701.0 15284 +# Q4 2021 7.20211209.0-beta.0 16616 +# Q4 2021 7.20211209.0 15760 +readonly BLOCKS_GZ_SIZE_EXPECTED=15760 + +# ANSI colors +readonly BOLD_GREEN='\033[1;32m' +readonly BOLD_RED='\033[1;31m' +readonly ANSI_RESET='\033[0m' + +# Terminate immediately with non-zero status if any command exits +# with non-zero status, printing a nice message. +set -e +function fail { + echo -e "${BOLD_RED}Error while checking metadata.${ANSI_RESET}" >&2 +} +trap fail ERR + +# GZip them for additional size comparisons (keep originals, force +# overwite previously-gzipped copies). +echo "Zipping the compressed files" +gzip -kf "${BUILD_DIR}/blockly_compressed.js" +gzip -kf "${BUILD_DIR}/blocks_compressed.js" + +# Check the sizes of the files + +has_failed=0 + +compare_size() { + local name="$1" + local expected="$2" + local compare=$(echo "${expected} * 1.1 / 1" | bc) + + local size=$(wc -c <"${name}") + + if (( $size > $compare)) + then + echo -ne "${BOLD_RED}Failed: Size of ${name} has grown more than 10%. " >&2 + echo -e "${size} vs ${expected} ${ANSI_RESET}" >&2 + has_failed=1 + else + echo -ne "${BOLD_GREEN}Size of ${name} at ${size} compared to previous " >&2 + echo -e "${expected}.${ANSI_RESET}" + fi +} + +compare_size "${BUILD_DIR}/blockly_compressed.js" $BLOCKLY_SIZE_EXPECTED +compare_size "${BUILD_DIR}/blocks_compressed.js" $BLOCKS_SIZE_EXPECTED +compare_size "${BUILD_DIR}/blockly_compressed.js.gz" $BLOCKLY_GZ_SIZE_EXPECTED +compare_size "${BUILD_DIR}/blocks_compressed.js.gz" $BLOCKS_GZ_SIZE_EXPECTED + +exit $has_failed diff --git a/tests/scripts/compile_typings.sh b/tests/scripts/compile_typings.sh index 35e9d56dc53..c7380274dd7 100755 --- a/tests/scripts/compile_typings.sh +++ b/tests/scripts/compile_typings.sh @@ -1,32 +1,32 @@ -#!/bin/bash - -# Location that npm run typings will write .d.ts files to. -# -# (TODO(#5007): Should fetch this from scripts/gulpfiles/config.js -# instead of hardcoding it here. -readonly BUILD_DIR='build' - -# ANSI colors -BOLD_GREEN='\033[1;32m' -BOLD_RED='\033[1;31m' -ANSI_RESET='\033[0m' - -# Terminate immediately with non-zero status if any command exits -# with non-zero status, printing a nice message. -set -e -function fail { - echo -e "${BOLD_RED}Failed to compile TypeScript typings.${ANSI_RESET}" >&2 -} -trap fail ERR - -# Generate Blockly typings. -echo "Generating Blockly typings" -npm run typings - -# Use the TypeScript compiler to compile the generated typings. -echo "Compiling typings" - -cd "${BUILD_DIR}" -../node_modules/.bin/tsc blockly.d.ts - -echo -e "${BOLD_GREEN}TypeScript typings compiled successfully.${ANSI_RESET}" +#!/bin/bash + +# Location that npm run typings will write .d.ts files to. +# +# (TODO(#5007): Should fetch this from scripts/gulpfiles/config.js +# instead of hardcoding it here. +readonly BUILD_DIR='build' + +# ANSI colors +BOLD_GREEN='\033[1;32m' +BOLD_RED='\033[1;31m' +ANSI_RESET='\033[0m' + +# Terminate immediately with non-zero status if any command exits +# with non-zero status, printing a nice message. +set -e +function fail { + echo -e "${BOLD_RED}Failed to compile TypeScript typings.${ANSI_RESET}" >&2 +} +trap fail ERR + +# Generate Blockly typings. +echo "Generating Blockly typings" +npm run typings + +# Use the TypeScript compiler to compile the generated typings. +echo "Compiling typings" + +cd "${BUILD_DIR}" +../node_modules/.bin/tsc blockly.d.ts + +echo -e "${BOLD_GREEN}TypeScript typings compiled successfully.${ANSI_RESET}" diff --git a/tests/scripts/run_generators.sh b/tests/scripts/run_generators.sh index 8c461f8e085..a1c73981b10 100755 --- a/tests/scripts/run_generators.sh +++ b/tests/scripts/run_generators.sh @@ -1,57 +1,57 @@ -#!/bin/bash - -# ANSI colors -BOLD_GREEN='\033[1;32m' -BOLD_RED='\033[1;31m' -ANSI_RESET='\033[0m' -SUCCESS_PREFIX="${BOLD_GREEN}SUCCESS:${ANSI_RESET}" -FAILURE_PREFIX="${BOLD_RED}FAILED:${ANSI_RESET}" - -TMP_DIR="tests/generators/tmp/" -GOLDEN_DIR="tests/generators/golden/" - -FAILURE_COUNT=0 -check_result() { - local suffix=$1 # One of: js, py, dart, lua, php - local tmp_filename="${TMP_DIR}generated.$suffix" - - if [ -f $tmp_filename ]; then - local golden_filename="${GOLDEN_DIR}generated.$suffix" - if [ -f $golden_filename ]; then - if cmp $tmp_filename $golden_filename; then - echo -e "$SUCCESS_PREFIX $suffix: $tmp_filename matches $golden_filename" - else - echo -e "$FAILURE_PREFIX $suffix: $tmp_filename does not match $golden_filename" - FAILURE_COUNT=$((FAILURE_COUNT+1)) - fi - else - echo "File $golden_filename not found!" - FAILURE_COUNT=$((FAILURE_COUNT+1)) - fi - else - echo "File $tmp_filename not found!" - FAILURE_COUNT=$((FAILURE_COUNT+1)) - fi -} - - -mkdir $TMP_DIR - -node tests/generators/run_generators_in_browser.js -generator_suffixes=( "js" "py" "dart" "lua" "php" ) -for i in "${generator_suffixes[@]}" -do - check_result "$i" -done - - -# Clean up. -rm -r $TMP_DIR - -if [ "$FAILURE_COUNT" -eq "0" ]; then - echo -e "${BOLD_GREEN}All generator tests passed.${ANSI_RESET}" - exit 0 -else - echo -e "${BOLD_RED}Failures in ${FAILURE_COUNT} generator tests.${ANSI_RESET}" - exit 1 -fi +#!/bin/bash + +# ANSI colors +BOLD_GREEN='\033[1;32m' +BOLD_RED='\033[1;31m' +ANSI_RESET='\033[0m' +SUCCESS_PREFIX="${BOLD_GREEN}SUCCESS:${ANSI_RESET}" +FAILURE_PREFIX="${BOLD_RED}FAILED:${ANSI_RESET}" + +TMP_DIR="tests/generators/tmp/" +GOLDEN_DIR="tests/generators/golden/" + +FAILURE_COUNT=0 +check_result() { + local suffix=$1 # One of: js, py, dart, lua, php + local tmp_filename="${TMP_DIR}generated.$suffix" + + if [ -f $tmp_filename ]; then + local golden_filename="${GOLDEN_DIR}generated.$suffix" + if [ -f $golden_filename ]; then + if cmp $tmp_filename $golden_filename; then + echo -e "$SUCCESS_PREFIX $suffix: $tmp_filename matches $golden_filename" + else + echo -e "$FAILURE_PREFIX $suffix: $tmp_filename does not match $golden_filename" + FAILURE_COUNT=$((FAILURE_COUNT+1)) + fi + else + echo "File $golden_filename not found!" + FAILURE_COUNT=$((FAILURE_COUNT+1)) + fi + else + echo "File $tmp_filename not found!" + FAILURE_COUNT=$((FAILURE_COUNT+1)) + fi +} + + +mkdir $TMP_DIR + +node tests/generators/run_generators_in_browser.js +generator_suffixes=( "js" "py" "dart" "lua" "php" ) +for i in "${generator_suffixes[@]}" +do + check_result "$i" +done + + +# Clean up. +rm -r $TMP_DIR + +if [ "$FAILURE_COUNT" -eq "0" ]; then + echo -e "${BOLD_GREEN}All generator tests passed.${ANSI_RESET}" + exit 0 +else + echo -e "${BOLD_RED}Failures in ${FAILURE_COUNT} generator tests.${ANSI_RESET}" + exit 1 +fi diff --git a/tests/scripts/selenium-config.js b/tests/scripts/selenium-config.js index b0e2ab7c402..40dccfe71c0 100644 --- a/tests/scripts/selenium-config.js +++ b/tests/scripts/selenium-config.js @@ -1,27 +1,27 @@ -/* eslint-disable */ - -module.exports = { - // check for more recent versions of selenium here: - // https://selenium-release.storage.googleapis.com/index.html - version: '3.9.1', - baseURL: 'https://selenium-release.storage.googleapis.com', - drivers: { - chrome: { - // check for more recent versions of chrome driver here: - // https://chromedriver.storage.googleapis.com/index.html - version: '91.0.4472.19', - arch: process.arch, - baseURL: 'https://chromedriver.storage.googleapis.com' - }, - firefox: { - // check for more recent versions of chrome driver here: - // https://chromedriver.storage.googleapis.com/index.html - version: '0.21.0', - arch: process.arch, - baseURL: 'https://github.com/mozilla/geckodriver/releases/download' - }, - }, - requestOpts: { // see https://github.com/request/request#requestoptions-callback - timeout: 10000 - }, -}; +/* eslint-disable */ + +module.exports = { + // check for more recent versions of selenium here: + // https://selenium-release.storage.googleapis.com/index.html + version: '3.9.1', + baseURL: 'https://selenium-release.storage.googleapis.com', + drivers: { + chrome: { + // check for more recent versions of chrome driver here: + // https://chromedriver.storage.googleapis.com/index.html + version: '91.0.4472.19', + arch: process.arch, + baseURL: 'https://chromedriver.storage.googleapis.com' + }, + firefox: { + // check for more recent versions of chrome driver here: + // https://chromedriver.storage.googleapis.com/index.html + version: '0.21.0', + arch: process.arch, + baseURL: 'https://github.com/mozilla/geckodriver/releases/download' + }, + }, + requestOpts: { // see https://github.com/request/request#requestoptions-callback + timeout: 10000 + }, +}; diff --git a/tests/scripts/setup_linux_env.sh b/tests/scripts/setup_linux_env.sh index 3a24ac784b5..62a326f19dd 100755 --- a/tests/scripts/setup_linux_env.sh +++ b/tests/scripts/setup_linux_env.sh @@ -1,8 +1,8 @@ -#!/bin/bash - -if [ "${RUNNER_OS}" == "Linux" ] - then - Xvfb :99 & - export DISPLAY=:99 & - npm run test:prepare > /dev/null & -fi +#!/bin/bash + +if [ "${RUNNER_OS}" == "Linux" ] + then + Xvfb :99 & + export DISPLAY=:99 & + npm run test:prepare > /dev/null & +fi diff --git a/tests/scripts/setup_osx_env.sh b/tests/scripts/setup_osx_env.sh index 02a2ff7d710..3c2a98e6d59 100755 --- a/tests/scripts/setup_osx_env.sh +++ b/tests/scripts/setup_osx_env.sh @@ -1,7 +1,7 @@ -#!/bin/bash - -if [ "${RUNNER_OS}" == "macOS" ] - then - export CHROME_BIN="/Applications/Google Chrome.app" - npm run test:prepare > /dev/null & -fi +#!/bin/bash + +if [ "${RUNNER_OS}" == "macOS" ] + then + export CHROME_BIN="/Applications/Google Chrome.app" + npm run test:prepare > /dev/null & +fi diff --git a/tests/scripts/update_metadata.sh b/tests/scripts/update_metadata.sh index c6afc8ad00d..e9a90b5beac 100755 --- a/tests/scripts/update_metadata.sh +++ b/tests/scripts/update_metadata.sh @@ -1,38 +1,38 @@ -#!/bin/bash - -# Determines the size of generated files and updates check_metadata.sh to -# reflect the new values. - -gzip -k build/blockly_compressed.js -gzip -k build/blocks_compressed.js - -blockly_size=$(wc -c < "build/blockly_compressed.js") -blocks_size=$(wc -c < "build/blocks_compressed.js") -blockly_gz_size=$(wc -c < "build/blockly_compressed.js.gz") -blocks_gz_size=$(wc -c < "build/blocks_compressed.js.gz") -quarters=(1 1 1 2 2 2 3 3 3 4 4 4) -month=$(date +%-m) -quarter=$(echo Q${quarters[$month - 1]} $(date +%Y)) -version=$(npx -c 'echo "$npm_package_version"') - -replacement="# ${quarter}\t${version}\t${blockly_size}\n" -replacement+="readonly BLOCKLY_SIZE_EXPECTED=${blockly_size}" -sed -ri.bak "s/readonly BLOCKLY_SIZE_EXPECTED=[0-9]+/${replacement}/g" \ - tests/scripts/check_metadata.sh - -replacement="# ${quarter}\t${version}\t${blocks_size}\n" -replacement+="readonly BLOCKS_SIZE_EXPECTED=${blocks_size}" -sed -ri.bak "s/readonly BLOCKS_SIZE_EXPECTED=[0-9]+/${replacement}/g" \ - tests/scripts/check_metadata.sh - -replacement="# ${quarter}\t${version}\t${blockly_gz_size}\n" -replacement+="readonly BLOCKLY_GZ_SIZE_EXPECTED=${blockly_gz_size}" -sed -ri.bak "s/readonly BLOCKLY_GZ_SIZE_EXPECTED=[0-9]+/${replacement}/g" \ - tests/scripts/check_metadata.sh - -replacement="# ${quarter}\t${version}\t${blocks_gz_size}\n" -replacement+="readonly BLOCKS_GZ_SIZE_EXPECTED=${blocks_gz_size}" -sed -ri.bak "s/readonly BLOCKS_GZ_SIZE_EXPECTED=[0-9]+/${replacement}/g" \ - tests/scripts/check_metadata.sh - +#!/bin/bash + +# Determines the size of generated files and updates check_metadata.sh to +# reflect the new values. + +gzip -k build/blockly_compressed.js +gzip -k build/blocks_compressed.js + +blockly_size=$(wc -c < "build/blockly_compressed.js") +blocks_size=$(wc -c < "build/blocks_compressed.js") +blockly_gz_size=$(wc -c < "build/blockly_compressed.js.gz") +blocks_gz_size=$(wc -c < "build/blocks_compressed.js.gz") +quarters=(1 1 1 2 2 2 3 3 3 4 4 4) +month=$(date +%-m) +quarter=$(echo Q${quarters[$month - 1]} $(date +%Y)) +version=$(npx -c 'echo "$npm_package_version"') + +replacement="# ${quarter}\t${version}\t${blockly_size}\n" +replacement+="readonly BLOCKLY_SIZE_EXPECTED=${blockly_size}" +sed -ri.bak "s/readonly BLOCKLY_SIZE_EXPECTED=[0-9]+/${replacement}/g" \ + tests/scripts/check_metadata.sh + +replacement="# ${quarter}\t${version}\t${blocks_size}\n" +replacement+="readonly BLOCKS_SIZE_EXPECTED=${blocks_size}" +sed -ri.bak "s/readonly BLOCKS_SIZE_EXPECTED=[0-9]+/${replacement}/g" \ + tests/scripts/check_metadata.sh + +replacement="# ${quarter}\t${version}\t${blockly_gz_size}\n" +replacement+="readonly BLOCKLY_GZ_SIZE_EXPECTED=${blockly_gz_size}" +sed -ri.bak "s/readonly BLOCKLY_GZ_SIZE_EXPECTED=[0-9]+/${replacement}/g" \ + tests/scripts/check_metadata.sh + +replacement="# ${quarter}\t${version}\t${blocks_gz_size}\n" +replacement+="readonly BLOCKS_GZ_SIZE_EXPECTED=${blocks_gz_size}" +sed -ri.bak "s/readonly BLOCKS_GZ_SIZE_EXPECTED=[0-9]+/${replacement}/g" \ + tests/scripts/check_metadata.sh + rm tests/scripts/check_metadata.sh.bak \ No newline at end of file diff --git a/tests/themes/test_themes.js b/tests/themes/test_themes.js index ad42d50af99..9a131233235 100644 --- a/tests/themes/test_themes.js +++ b/tests/themes/test_themes.js @@ -1,62 +1,62 @@ -/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ -'use strict'; - - -/** - * A theme with classic colours but enables start hats. - */ -const TestHatsTheme = Blockly.Theme.defineTheme('testhats', { - 'base': Blockly.Themes.Classic -}); -TestHatsTheme.setStartHats(true); - -/** - * A theme with classic colours but a different font. - */ -const TestFontTheme = Blockly.Theme.defineTheme('testfont', { - 'base': Blockly.Themes.Classic -}); -TestFontTheme.setFontStyle({ - 'family': '"Times New Roman", Times, serif', - 'weight': null, // Use default font-weight - 'size': 16 -}); - -/** - * Holds the test theme name to Theme instance mapping. - * @type {!Object} - * @private - */ -const testThemes_ = { - 'Test Hats': TestHatsTheme, - 'Test Font': TestFontTheme -}; - -/** - * Get a test theme by name. - * @param {string} value The theme name. - * @return {Blockly.Theme} A theme object or undefined if one doesn't exist. - * @package - */ -function getTestTheme(value) { - return testThemes_[value]; -} - -/** - * Populate the theme changer dropdown to list the set of test themes. - * @package - */ -function populateTestThemes() { - var themeChanger = document.getElementById('themeChanger'); - var keys = Object.keys(testThemes_); - for (var i = 0, key; (key = keys[i]); i++) { - var option = document.createElement('option'); - option.setAttribute('value', key); - option.textContent = key; - themeChanger.appendChild(option); - } -} +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ +'use strict'; + + +/** + * A theme with classic colours but enables start hats. + */ +const TestHatsTheme = Blockly.Theme.defineTheme('testhats', { + 'base': Blockly.Themes.Classic +}); +TestHatsTheme.setStartHats(true); + +/** + * A theme with classic colours but a different font. + */ +const TestFontTheme = Blockly.Theme.defineTheme('testfont', { + 'base': Blockly.Themes.Classic +}); +TestFontTheme.setFontStyle({ + 'family': '"Times New Roman", Times, serif', + 'weight': null, // Use default font-weight + 'size': 16 +}); + +/** + * Holds the test theme name to Theme instance mapping. + * @type {!Object} + * @private + */ +const testThemes_ = { + 'Test Hats': TestHatsTheme, + 'Test Font': TestFontTheme +}; + +/** + * Get a test theme by name. + * @param {string} value The theme name. + * @return {Blockly.Theme} A theme object or undefined if one doesn't exist. + * @package + */ +function getTestTheme(value) { + return testThemes_[value]; +} + +/** + * Populate the theme changer dropdown to list the set of test themes. + * @package + */ +function populateTestThemes() { + var themeChanger = document.getElementById('themeChanger'); + var keys = Object.keys(testThemes_); + for (var i = 0, key; (key = keys[i]); i++) { + var option = document.createElement('option'); + option.setAttribute('value', key); + option.textContent = key; + themeChanger.appendChild(option); + } +} diff --git a/tests/xml/README.txt b/tests/xml/README.txt index 8fe34d8c1cd..e92ed558b42 100644 --- a/tests/xml/README.txt +++ b/tests/xml/README.txt @@ -1,11 +1,11 @@ -This directory contains the schema for validating Blockly XML files: -* blockly.xsd - -Also included are three sample XML files: -* workspace.xml - XML for a complicated workspace. -* toolbox.xml - XML for a complicated toolbox with categories and separators. -* invalid.xml - XML that violates the DTD. - -Testing can be performed using an online tool: -https://www.corefiling.com/opensource/schemaValidate/ -http://www.utilities-online.info/xsdvalidation/ +This directory contains the schema for validating Blockly XML files: +* blockly.xsd + +Also included are three sample XML files: +* workspace.xml - XML for a complicated workspace. +* toolbox.xml - XML for a complicated toolbox with categories and separators. +* invalid.xml - XML that violates the DTD. + +Testing can be performed using an online tool: +https://www.corefiling.com/opensource/schemaValidate/ +http://www.utilities-online.info/xsdvalidation/ diff --git a/tests/xml/blockly.xsd b/tests/xml/blockly.xsd index 67562c4c086..f395736d806 100644 --- a/tests/xml/blockly.xsd +++ b/tests/xml/blockly.xsd @@ -1,178 +1,178 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/xml/invalid.xml b/tests/xml/invalid.xml index 5debaafd47a..abc8bffbeca 100644 --- a/tests/xml/invalid.xml +++ b/tests/xml/invalid.xml @@ -1,6 +1,6 @@ - - - - - - + + + + + + diff --git a/tests/xml/toolbox.xml b/tests/xml/toolbox.xml index 63474ece718..ef3fb0b8383 100644 --- a/tests/xml/toolbox.xml +++ b/tests/xml/toolbox.xml @@ -1,311 +1,311 @@ - - - - - - - - - - - - - - - - - - - - - - - - - 10 - - - - - - i - - - 1 - - - - - 10 - - - - - 1 - - - - - - - - - 123 - - - - - - - - - - - - - 1 - - - - - 100 - - - - - - - 1 - - - - - 100 - - - - - - - - - - - - - 5 - - - - - - - - - - - - - - - - - - - - - - randomize - - - x - - - 1 - - - - - - - list - - - - - - - 1 - - - - - y - - - - - 1 - - - - - - - list - - - - - - - - - temp - - - - GET - FROM_START - - - y - - - - - list - - - - - - - - - y - - - - - list - - - - - - GET - FROM_START - - - x - - - - - list - - - - - - - - - x - - - - - list - - - - - temp - - - - - - - - - - - - - - - - - - - 'Twas brillig, and the slithy toves - - - - - - - Did gyre and gimble in the wabe: - - - - - - - All mimsy were the borogroves, - - - - - - - And the mome raths outgrabe. - - - - - - - - - - - - - "Beware the Jabberwock, my son! - - - - - - - The jaws that bite, the claws that catch! - - - - - - - Beware the Jubjub bird, and shun - - - - - - - The frumious Bandersnatch!" - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + 10 + + + + + + i + + + 1 + + + + + 10 + + + + + 1 + + + + + + + + + 123 + + + + + + + + + + + + + 1 + + + + + 100 + + + + + + + 1 + + + + + 100 + + + + + + + + + + + + + 5 + + + + + + + + + + + + + + + + + + + + + + randomize + + + x + + + 1 + + + + + + + list + + + + + + + 1 + + + + + y + + + + + 1 + + + + + + + list + + + + + + + + + temp + + + + GET + FROM_START + + + y + + + + + list + + + + + + + + + y + + + + + list + + + + + + GET + FROM_START + + + x + + + + + list + + + + + + + + + x + + + + + list + + + + + temp + + + + + + + + + + + + + + + + + + + 'Twas brillig, and the slithy toves + + + + + + + Did gyre and gimble in the wabe: + + + + + + + All mimsy were the borogroves, + + + + + + + And the mome raths outgrabe. + + + + + + + + + + + + + "Beware the Jabberwock, my son! + + + + + + + The jaws that bite, the claws that catch! + + + + + + + Beware the Jubjub bird, and shun + + + + + + + The frumious Bandersnatch!" + + + + + + + + + + + + diff --git a/tests/xml/workspace.xml b/tests/xml/workspace.xml index 19ae997d0d1..9d71ed8dc50 100644 --- a/tests/xml/workspace.xml +++ b/tests/xml/workspace.xml @@ -1,114 +1,114 @@ - - - x - i - text - - This is a workspace comment. - This is a new line on the workspace comment. - - - - - - - bar - Describe this function... - - - - - - LT - - - - FIRST - FROM_START - - - text - - - - - - - - - - - - - - - - - - - - - <html> - - - - - - - i - - - 1 - - - - - - - - - - foo - This function does... - -...nothing! - - - - - - - TRUE - - - - - - - 100 - - - - - 50 - - - - - 0 - - - - - - - - - - - - - - - - + + + x + i + text + + This is a workspace comment. + This is a new line on the workspace comment. + + + + + + + bar + Describe this function... + + + + + + LT + + + + FIRST + FROM_START + + + text + + + + + + + + + + + + + + + + + + + + + <html> + + + + + + + i + + + 1 + + + + + + + + + + foo + This function does... + +...nothing! + + + + + + + TRUE + + + + + + + 100 + + + + + 50 + + + + + 0 + + + + + + + + + + + + + + + + diff --git a/tsconfig.json b/tsconfig.json index 88c95700b9e..c2845ec306a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,25 +1,33 @@ -{ - "include": [ - "core/**/*", - "closure/goog/base_minimal.js", - ], - "compilerOptions": { - // Tells TypeScript to read JS files, as - // normally they are ignored as source files - "allowJs": true, - - // Enable the next few options for type declarations. - // Generate d.ts files - //"declaration": true, - // Types should go into this directory. - // Removing this would place the .d.ts files - // next to the .js files - //"declarationDir": "build/ts/declarations", - - "outDir": "build/ts", - "module": "ES2015", - "moduleResolution": "node", - "target": "ES2020", - "strict": true, - } -} +{ + "include": [ + "core/**/*", + "closure/goog/base_minimal.js", + ], + "compilerOptions": { + // Tells TypeScript to read JS files, as + // normally they are ignored as source files + "allowJs": true, + "sourceMap": true, + + // Enable the next few options for type declarations. + // Generate d.ts files + "declaration": true, + // Types should go into this directory. + // Removing this would place the .d.ts files + // next to the .js files + //"declarationDir": "build/ts/declarations", + + "outDir": "build/ts", + "module": "ES2015", + "moduleResolution": "node", + "target": "ES2020", + "strict": false, + "lib": [ + "dom", + "es2021", + "WebWorker", + ], + "skipLibCheck": true, + + } +} diff --git a/typings/README.md b/typings/README.md index df9268c4366..af0075cb5e3 100644 --- a/typings/README.md +++ b/typings/README.md @@ -1,13 +1,13 @@ -# blockly.d.ts - -This ``blockly.d.ts`` file describes the TypeScript type definitions for Blockly. -If you consume Blockly through ``npm``, this file is already included in the ``npm`` package. -Otherwise, you can include a copy of this file with your sources and reference it through a [Triple-Slash directive](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html). - - -## Generating a new version - -To generate a new version of the Typings file, from the Blockly root directory run ``npm run typings``. -You will need to run ``npm install`` for this to work. - -Note: In order to check for errors in the typings file, run ``tsc`` in the ``typings/`` directory. +# blockly.d.ts + +This ``blockly.d.ts`` file describes the TypeScript type definitions for Blockly. +If you consume Blockly through ``npm``, this file is already included in the ``npm`` package. +Otherwise, you can include a copy of this file with your sources and reference it through a [Triple-Slash directive](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html). + + +## Generating a new version + +To generate a new version of the Typings file, from the Blockly root directory run ``npm run typings``. +You will need to run ``npm install`` for this to work. + +Note: In order to check for errors in the typings file, run ``tsc`` in the ``typings/`` directory. diff --git a/typings/blockly.d.ts b/typings/blockly.d.ts index 48988290fdd..c7af13054b3 100644 --- a/typings/blockly.d.ts +++ b/typings/blockly.d.ts @@ -1,26127 +1,26127 @@ -declare module "core/utils/colour" { - /** - * Get the richness of block colours, regardless of the hue. - * @alias Blockly.utils.colour.getHsvSaturation - * @return {number} The current richness. - * @package - */ - export function getHsvSaturation(): number; - /** - * Set the richness of block colours, regardless of the hue. - * @param {number} newSaturation The new richness, in the range of 0 - * (inclusive) to 1 (exclusive) - * @alias Blockly.utils.colour.setHsvSaturation - * @package - */ - export function setHsvSaturation(newSaturation: number): void; - /** - * Get the intensity of block colours, regardless of the hue. - * @alias Blockly.utils.colour.getHsvValue - * @return {number} The current intensity. - * @package - */ - export function getHsvValue(): number; - /** - * Set the intensity of block colours, regardless of the hue. - * @param {number} newValue The new intensity, in the range of 0 - * (inclusive) to 1 (exclusive) - * @alias Blockly.utils.colour.setHsvValue - * @package - */ - export function setHsvValue(newValue: number): void; - /** - * Parses a colour from a string. - * .parse('red') -> '#ff0000' - * .parse('#f00') -> '#ff0000' - * .parse('#ff0000') -> '#ff0000' - * .parse('0xff0000') -> '#ff0000' - * .parse('rgb(255, 0, 0)') -> '#ff0000' - * @param {string|number} str Colour in some CSS format. - * @return {?string} A string containing a hex representation of the colour, - * or null if can't be parsed. - * @alias Blockly.utils.colour.parse - */ - export function parse(str: string | number): string | null; - /** - * Converts a colour from RGB to hex representation. - * @param {number} r Amount of red, int between 0 and 255. - * @param {number} g Amount of green, int between 0 and 255. - * @param {number} b Amount of blue, int between 0 and 255. - * @return {string} Hex representation of the colour. - * @alias Blockly.utils.colour.rgbToHex - */ - export function rgbToHex(r: number, g: number, b: number): string; - /** - * Converts a colour to RGB. - * @param {string} colour String representing colour in any - * colour format ('#ff0000', 'red', '0xff000', etc). - * @return {!Array} RGB representation of the colour. - * @alias Blockly.utils.colour.hexToRgb - */ - export function hexToRgb(colour: string): Array; - /** - * Converts an HSV triplet to hex representation. - * @param {number} h Hue value in [0, 360]. - * @param {number} s Saturation value in [0, 1]. - * @param {number} v Brightness in [0, 255]. - * @return {string} Hex representation of the colour. - * @alias Blockly.utils.colour.hsvToHex - */ - export function hsvToHex(h: number, s: number, v: number): string; - /** - * Blend two colours together, using the specified factor to indicate the - * weight given to the first colour. - * @param {string} colour1 First colour. - * @param {string} colour2 Second colour. - * @param {number} factor The weight to be given to colour1 over colour2. - * Values should be in the range [0, 1]. - * @return {?string} Combined colour represented in hex. - * @alias Blockly.utils.colour.blend - */ - export function blend(colour1: string, colour2: string, factor: number): string | null; - /** - * A map that contains the 16 basic colour keywords as defined by W3C: - * https://www.w3.org/TR/2018/REC-css-color-3-20180619/#html4 - * The keys of this map are the lowercase "readable" names of the colours, - * while the values are the "hex" values. - * - * @type {!Object} - * @alias Blockly.utils.colour.names - */ - export const names: { - [x: string]: string; - }; - /** - * Convert a hue (HSV model) into an RGB hex triplet. - * @param {number} hue Hue on a colour wheel (0-360). - * @return {string} RGB code, e.g. '#5ba65b'. - * @alias Blockly.utils.colour.hueToHex - */ - export function hueToHex(hue: number): string; -} -declare module "core/utils/string" { - /** - * Fast prefix-checker. - * Copied from Closure's goog.string.startsWith. - * @param {string} str The string to check. - * @param {string} prefix A string to look for at the start of `str`. - * @return {boolean} True if `str` begins with `prefix`. - * @alias Blockly.utils.string.startsWith - */ - export function startsWith(str: string, prefix: string): boolean; - /** - * Given an array of strings, return the length of the shortest one. - * @param {!Array} array Array of strings. - * @return {number} Length of shortest string. - * @alias Blockly.utils.string.shortestStringLength - */ - export function shortestStringLength(array: Array): number; - /** - * Given an array of strings, return the length of the common prefix. - * Words may not be split. Any space after a word is included in the length. - * @param {!Array} array Array of strings. - * @param {number=} opt_shortest Length of shortest string. - * @return {number} Length of common prefix. - * @alias Blockly.utils.string.commonWordPrefix - */ - export function commonWordPrefix(array: Array, opt_shortest?: number | undefined): number; - /** - * Given an array of strings, return the length of the common suffix. - * Words may not be split. Any space after a word is included in the length. - * @param {!Array} array Array of strings. - * @param {number=} opt_shortest Length of shortest string. - * @return {number} Length of common suffix. - * @alias Blockly.utils.string.commonWordSuffix - */ - export function commonWordSuffix(array: Array, opt_shortest?: number | undefined): number; - /** - * Wrap text to the specified width. - * @param {string} text Text to wrap. - * @param {number} limit Width to wrap each line. - * @return {string} Wrapped text. - * @alias Blockly.utils.string.wrap - */ - export function wrap(text: string, limit: number): string; - /** - * Is the given string a number (includes negative and decimals). - * @param {string} str Input string. - * @return {boolean} True if number, false otherwise. - * @alias Blockly.utils.string.isNumber - */ - export function isNumber(str: string): boolean; -} -declare module "core/msg" { - /** - * A dictionary of localised messages. - * @type {!Object} - */ - export const Msg: any; -} -declare module "core/utils/parsing" { - /** - * Parse a string with any number of interpolation tokens (%1, %2, ...). - * It will also replace string table references (e.g., %{bky_my_msg} and - * %{BKY_MY_MSG} will both be replaced with the value in - * Msg['MY_MSG']). Percentage sign characters '%' may be self-escaped - * (e.g., '%%'). - * @param {string} message Text which might contain string table references and - * interpolation tokens. - * @return {!Array} Array of strings and numbers. - * @alias Blockly.utils.parsing.tokenizeInterpolation - */ - export function tokenizeInterpolation(message: string): Array; - /** - * Replaces string table references in a message, if the message is a string. - * For example, "%{bky_my_msg}" and "%{BKY_MY_MSG}" will both be replaced with - * the value in Msg['MY_MSG']. - * @param {string|?} message Message, which may be a string that contains - * string table references. - * @return {string} String with message references replaced. - * @alias Blockly.utils.parsing.replaceMessageReferences - */ - export function replaceMessageReferences(message: string | unknown): string; - /** - * Validates that any %{MSG_KEY} references in the message refer to keys of - * the Msg string table. - * @param {string} message Text which might contain string table references. - * @return {boolean} True if all message references have matching values. - * Otherwise, false. - * @alias Blockly.utils.parsing.checkMessageReferences - */ - export function checkMessageReferences(message: string): boolean; - /** - * Parse a block colour from a number or string, as provided in a block - * definition. - * @param {number|string} colour HSV hue value (0 to 360), #RRGGBB string, - * or a message reference string pointing to one of those two values. - * @return {{hue: ?number, hex: string}} An object containing the colour as - * a #RRGGBB string, and the hue if the input was an HSV hue value. - * @throws {Error} If the colour cannot be parsed. - * @alias Blockly.utils.parsing.parseBlockColour - */ - export function parseBlockColour(colour: number | string): { - hue: number | null; - hex: string; - }; -} -declare module "core/utils/aria" { - /** - * * - */ - export type Role = string; - export namespace Role { - const GRID: string; - const GRIDCELL: string; - const GROUP: string; - const LISTBOX: string; - const MENU: string; - const MENUITEM: string; - const MENUITEMCHECKBOX: string; - const OPTION: string; - const PRESENTATION: string; - const ROW: string; - const TREE: string; - const TREEITEM: string; - } - /** - * * - */ - export type State = string; - export namespace State { - const ACTIVEDESCENDANT: string; - const COLCOUNT: string; - const DISABLED: string; - const EXPANDED: string; - const INVALID: string; - const LABEL: string; - const LABELLEDBY: string; - const LEVEL: string; - const ORIENTATION: string; - const POSINSET: string; - const ROWCOUNT: string; - const SELECTED: string; - const SETSIZE: string; - const VALUEMAX: string; - const VALUEMIN: string; - } - /** - * Sets the role of an element. - * - * Similar to Closure's goog.a11y.aria - * - * @param {!Element} element DOM node to set role of. - * @param {!Role} roleName Role name. - * @alias Blockly.utils.aria.setRole - */ - export function setRole(element: Element, roleName: Role): void; - /** - * Sets the state or property of an element. - * Copied from Closure's goog.a11y.aria - * @param {!Element} element DOM node where we set state. - * @param {!State} stateName State attribute being set. - * Automatically adds prefix 'aria-' to the state name if the attribute is - * not an extra attribute. - * @param {string|boolean|number|!Array} value Value - * for the state attribute. - * @alias Blockly.utils.aria.setState - */ - export function setState(element: Element, stateName: State, value: string | boolean | number | Array): void; -} -declare module "core/utils/global" { - /** - * Reference to the global object. - * - * More info on this implementation here: - * https://docs.google.com/document/d/1NAeW4Wk7I7FV0Y2tcUFvQdGMc89k2vdgSXInw8_nvCI - */ - export var globalThis: any; -} -declare module "core/utils/useragent" { - /** - * The raw useragent string. - * @type {string} - */ - let rawUserAgent: string; - /** @type {boolean} */ - let isIe: boolean; - /** @type {boolean} */ - let isEdge: boolean; - /** @type {boolean} */ - let isJavaFx: boolean; - /** @type {boolean} */ - let isChrome: boolean; - /** @type {boolean} */ - let isWebKit: boolean; - /** @type {boolean} */ - let isGecko: boolean; - /** @type {boolean} */ - let isAndroid: boolean; - /** @type {boolean} */ - let isIPad: boolean; - /** @type {boolean} */ - let isIPod: boolean; - /** @type {boolean} */ - let isIPhone: boolean; - /** @type {boolean} */ - let isMac: boolean; - /** @type {boolean} */ - let isTablet: boolean; - /** @type {boolean} */ - let isMobile: boolean; - export { rawUserAgent as raw, isIe as IE, isEdge as EDGE, isJavaFx as JavaFx, isChrome as CHROME, isWebKit as WEBKIT, isGecko as GECKO, isAndroid as ANDROID, isIPad as IPAD, isIPod as IPOD, isIPhone as IPHONE, isMac as MAC, isTablet as TABLET, isMobile as MOBILE }; -} -declare module "core/utils/svg" { - /** - * A name with the type of the SVG element stored in the generic. - * @template T - * @alias Blockly.utils.Svg - */ - export class Svg { - /** - * @param {string} tagName The SVG element tag name. - * @package - */ - constructor(tagName: string); - /** - * @type {string} - * @private - */ - private tagName_; - /** - * Returns the SVG element tag name. - * @return {string} The name. - */ - toString(): string; - } - export namespace Svg { - const ANIMATE: Svg; - const CIRCLE: Svg; - const CLIPPATH: Svg; - const DEFS: Svg; - const FECOMPOSITE: Svg; - const FECOMPONENTTRANSFER: Svg; - const FEFLOOD: Svg; - const FEFUNCA: Svg; - const FEGAUSSIANBLUR: Svg; - const FEPOINTLIGHT: Svg; - const FESPECULARLIGHTING: Svg; - const FILTER: Svg; - const FOREIGNOBJECT: Svg; - const G: Svg; - const IMAGE: Svg; - const LINE: Svg; - const PATH: Svg; - const PATTERN: Svg; - const POLYGON: Svg; - const RECT: Svg; - const SVG: Svg; - const TEXT: Svg; - const TSPAN: Svg; - } -} -declare module "core/utils/dom" { - /** - * Required name space for SVG elements. - * @const - * @alias Blockly.utils.dom.SVG_NS - */ - export const SVG_NS: "http://www.w3.org/2000/svg"; - /** - * Required name space for HTML elements. - * @const - * @alias Blockly.utils.dom.HTML_NS - */ - export const HTML_NS: "http://www.w3.org/1999/xhtml"; - /** - * Required name space for XLINK elements. - * @const - * @alias Blockly.utils.dom.XLINK_NS - */ - export const XLINK_NS: "http://www.w3.org/1999/xlink"; - /** - * * - */ - export type NodeType = number; - export namespace NodeType { - const ELEMENT_NODE: number; - const TEXT_NODE: number; - const COMMENT_NODE: number; - const DOCUMENT_POSITION_CONTAINED_BY: number; - } - /** - * Helper method for creating SVG elements. - * @param {string|Svg} name Element's tag name. - * @param {!Object} attrs Dictionary of attribute names and values. - * @param {Element=} opt_parent Optional parent on which to append the element. - * @return {T} Newly created SVG element. The return type is {!SVGElement} if - * name is a string or a more specific type if it a member of Svg. - * @template T - * @alias Blockly.utils.dom.createSvgElement - */ - export function createSvgElement(name: string | Svg, attrs: Object, opt_parent?: Element | undefined): T; - /** - * Add a CSS class to a element. - * Similar to Closure's goog.dom.classes.add, except it handles SVG elements. - * @param {!Element} element DOM element to add class to. - * @param {string} className Name of class to add. - * @return {boolean} True if class was added, false if already present. - * @alias Blockly.utils.dom.addClass - */ - export function addClass(element: Element, className: string): boolean; - /** - * Removes multiple calsses from an element. - * @param {!Element} element DOM element to remove classes from. - * @param {string} classNames A string of one or multiple class names for an - * element. - * @alias Blockly.utils.dom.removeClasses - */ - export function removeClasses(element: Element, classNames: string): void; - /** - * Remove a CSS class from a element. - * Similar to Closure's goog.dom.classes.remove, except it handles SVG elements. - * @param {!Element} element DOM element to remove class from. - * @param {string} className Name of class to remove. - * @return {boolean} True if class was removed, false if never present. - * @alias Blockly.utils.dom.removeClass - */ - export function removeClass(element: Element, className: string): boolean; - /** - * Checks if an element has the specified CSS class. - * Similar to Closure's goog.dom.classes.has, except it handles SVG elements. - * @param {!Element} element DOM element to check. - * @param {string} className Name of class to check. - * @return {boolean} True if class exists, false otherwise. - * @alias Blockly.utils.dom.hasClass - */ - export function hasClass(element: Element, className: string): boolean; - /** - * Removes a node from its parent. No-op if not attached to a parent. - * @param {?Node} node The node to remove. - * @return {?Node} The node removed if removed; else, null. - * @alias Blockly.utils.dom.removeNode - */ - export function removeNode(node: Node | null): Node | null; - /** - * Insert a node after a reference node. - * Contrast with node.insertBefore function. - * @param {!Element} newNode New element to insert. - * @param {!Element} refNode Existing element to precede new node. - * @alias Blockly.utils.dom.insertAfter - */ - export function insertAfter(newNode: Element, refNode: Element): void; - /** - * Whether a node contains another node. - * @param {!Node} parent The node that should contain the other node. - * @param {!Node} descendant The node to test presence of. - * @return {boolean} Whether the parent node contains the descendant node. - * @alias Blockly.utils.dom.containsNode - */ - export function containsNode(parent: Node, descendant: Node): boolean; - /** - * Sets the CSS transform property on an element. This function sets the - * non-vendor-prefixed and vendor-prefixed versions for backwards compatibility - * with older browsers. See https://caniuse.com/#feat=transforms2d - * @param {!Element} element Element to which the CSS transform will be applied. - * @param {string} transform The value of the CSS `transform` property. - * @alias Blockly.utils.dom.setCssTransform - */ - export function setCssTransform(element: Element, transform: string): void; - /** - * Start caching text widths. Every call to this function MUST also call - * stopTextWidthCache. Caches must not survive between execution threads. - * @alias Blockly.utils.dom.startTextWidthCache - */ - export function startTextWidthCache(): void; - /** - * Stop caching field widths. Unless caching was already on when the - * corresponding call to startTextWidthCache was made. - * @alias Blockly.utils.dom.stopTextWidthCache - */ - export function stopTextWidthCache(): void; - /** - * Gets the width of a text element, caching it in the process. - * @param {!Element} textElement An SVG 'text' element. - * @return {number} Width of element. - * @alias Blockly.utils.dom.getTextWidth - */ - export function getTextWidth(textElement: Element): number; - /** - * Gets the width of a text element using a faster method than `getTextWidth`. - * This method requires that we know the text element's font family and size in - * advance. Similar to `getTextWidth`, we cache the width we compute. - * @param {!Element} textElement An SVG 'text' element. - * @param {number} fontSize The font size to use. - * @param {string} fontWeight The font weight to use. - * @param {string} fontFamily The font family to use. - * @return {number} Width of element. - * @alias Blockly.utils.dom.getFastTextWidth - */ - export function getFastTextWidth(textElement: Element, fontSize: number, fontWeight: string, fontFamily: string): number; - /** - * Gets the width of a text element using a faster method than `getTextWidth`. - * This method requires that we know the text element's font family and size in - * advance. Similar to `getTextWidth`, we cache the width we compute. - * This method is similar to ``getFastTextWidth`` but expects the font size - * parameter to be a string. - * @param {!Element} textElement An SVG 'text' element. - * @param {string} fontSize The font size to use. - * @param {string} fontWeight The font weight to use. - * @param {string} fontFamily The font family to use. - * @return {number} Width of element. - * @alias Blockly.utils.dom.getFastTextWidthWithSizeString - */ - export function getFastTextWidthWithSizeString(textElement: Element, fontSize: string, fontWeight: string, fontFamily: string): number; - /** - * Measure a font's metrics. The height and baseline values. - * @param {string} text Text to measure the font dimensions of. - * @param {string} fontSize The font size to use. - * @param {string} fontWeight The font weight to use. - * @param {string} fontFamily The font family to use. - * @return {{height: number, baseline: number}} Font measurements. - * @alias Blockly.utils.dom.measureFontMetrics - */ - export function measureFontMetrics(text: string, fontSize: string, fontWeight: string, fontFamily: string): { - height: number; - baseline: number; - }; - import { Svg } from "core/utils/svg"; -} -declare module "core/blocks" { - /** - * A block definition. For now this very lose, but it can potentially - * be refined e.g. by replacing this typedef with a class definition. - */ - export type BlockDefinition = any; - /** - * A block definition. For now this very lose, but it can potentially - * be refined e.g. by replacing this typedef with a class definition. - * @typedef {!Object} - */ - // export let BlockDefinition: any; - /** - * A mapping of block type names to block prototype objects. - * @type {!Object} - * @alias Blockly.blocks.Blocks - */ - export const Blocks: { - [x: string]: BlockDefinition; - }; -} -declare module "core/utils/idgenerator" { - namespace internal { - /** - * Generate a random unique ID. This should be globally unique. - * 87 characters ^ 20 length > 128 bits (better than a UUID). - * @return {string} A globally unique ID string. - */ - function genUid(): string; - } - /** - * Generate the next unique element IDs. - * IDs are compatible with the HTML4 id attribute restrictions: - * Use only ASCII letters, digits, '_', '-' and '.' - * - * For UUIDs use genUid (below) instead; this ID generator should - * primarily be used for IDs that end up in the DOM. - * - * @return {string} The next unique identifier. - * @alias Blockly.utils.idGenerator.getNextUniqueId - */ - export function getNextUniqueId(): string; - /** - * Generate a random unique ID. - * @see internal.genUid - * @return {string} A globally unique ID string. - * @alias Blockly.utils.idGenerator.genUid - */ - export function genUid(): string; - export { internal as TEST_ONLY }; -} -declare module "core/utils/array" { - /** - * Removes the first occurrence of a particular value from an array. - * @param {!Array} arr Array from which to remove value. - * @param {*} value Value to remove. - * @return {boolean} True if an element was removed. - * @alias Blockly.array.removeElem - * @package - */ - export function removeElem(arr: any[], value: any): boolean; -} -declare module "core/utils/math" { - /** - * Converts degrees to radians. - * Copied from Closure's goog.math.toRadians. - * @param {number} angleDegrees Angle in degrees. - * @return {number} Angle in radians. - * @alias Blockly.utils.math.toRadians - */ - export function toRadians(angleDegrees: number): number; - /** - * Converts radians to degrees. - * Copied from Closure's goog.math.toDegrees. - * @param {number} angleRadians Angle in radians. - * @return {number} Angle in degrees. - * @alias Blockly.utils.math.toDegrees - */ - export function toDegrees(angleRadians: number): number; - /** - * Clamp the provided number between the lower bound and the upper bound. - * @param {number} lowerBound The desired lower bound. - * @param {number} number The number to clamp. - * @param {number} upperBound The desired upper bound. - * @return {number} The clamped number. - * @alias Blockly.utils.math.clamp - */ - export function clamp(lowerBound: number, number: number, upperBound: number): number; -} -declare module "core/serialization/priorities" { - /** - * The priority for deserializing variables. - * @type {number} - * @const - * @alias Blockly.serialization.priorities.VARIABLES - */ - export const VARIABLES: number; - /** - * The priority for deserializing blocks. - * @type {number} - * @const - * @alias Blockly.serialization.priorities.BLOCKS - */ - export const BLOCKS: number; -} -declare module "core/interfaces/i_serializer" { - /** - * Serializes and deserializes a plugin or system. - * @interface - * @alias Blockly.serialization.ISerializer.ISerializer - */ - export class ISerializer { - /** - * A priority value used to determine the order of deserializing state. - * More positive priorities are deserialized before less positive - * priorities. Eg if you have priorities (0, -10, 10, 100) the order of - * deserialiation will be (100, 10, 0, -10). - * If two serializers have the same priority, they are deserialized in an - * arbitrary order relative to each other. - * @type {number} - */ - priority: number; - /** - * Saves the state of the plugin or system. - * @param {!Workspace} workspace The workspace the system to serialize is - * associated with. - * @return {?} A JS object containing the system's state, or null if - * there is no state to record. - */ - save(workspace: Workspace): unknown; - /** - * Loads the state of the plugin or system. - * @param {?} state The state of the system to deserialize. This will always - * be non-null. - * @param {!Workspace} workspace The workspace the system to deserialize is - * associated with. - */ - load(state: unknown, workspace: Workspace): void; - /** - * Clears the state of the plugin or system. - * @param {!Workspace} workspace The workspace the system to clear the state - * of is associated with. - */ - clear(workspace: Workspace): void; - } - import { Workspace } from "core/workspace"; -} -declare module "core/serialization/registry" { - /** - * Registers the given serializer so that it can be used for serialization and - * deserialization. - * @param {string} name The name of the serializer to register. - * @param {ISerializer} serializer The serializer to register. - * @alias Blockly.serialization.registry.register - */ - export function register(name: string, serializer: ISerializer): void; - /** - * Unregisters the serializer associated with the given name. - * @param {string} name The name of the serializer to unregister. - * @alias Blockly.serialization.registry.unregister - */ - export function unregister(name: string): void; - import { ISerializer } from "core/interfaces/i_serializer"; -} -declare module "core/serialization/exceptions" { - /** - * @alias Blockly.serialization.exceptions.DeserializationError - */ - export class DeserializationError extends Error { - } - /** - * Represents an error where the serialized state is expected to provide a - * block type, but it is not provided. - * @alias Blockly.serialization.exceptions.MissingBlockType - */ - export class MissingBlockType extends DeserializationError { - /** - * @param {!State} state The state object which is missing the block type. - * @package - */ - constructor(state: any); - /** - * The state object containing the bad name. - * @type {!State} - */ - state: any; - } - /** - * Represents an error where deserialization encountered a block that did - * not have a connection that was defined in the serialized state. - * @alias Blockly.serialization.exceptions.MissingConnection - */ - export class MissingConnection extends DeserializationError { - /** - * @param {string} connection The name of the connection that is missing. E.g. - * 'IF0', or 'next'. - * @param {!Block} block The block missing the connection. - * @param {!State} state The state object containing the bad connection. - * @package - */ - constructor(connection: string, block: Block, state: any); - /** - * The block missing the connection. - * @type {!Block} - */ - block: Block; - /** - * The state object containing the bad name. - * @type {!State} - */ - state: any; - } - /** - * Represents an error where deserialization tried to connect two connections - * that were not compatible. - * @alias Blockly.serialization.exceptions.BadConnectionCheck - */ - export class BadConnectionCheck extends DeserializationError { - /** - * @param {string} reason The reason the connections were not compatible. - * @param {string} childConnection The name of the incompatible child - * connection. E.g. 'output' or 'previous'. - * @param {!Block} childBlock The child block that could not connect - * to its parent. - * @param {!State} childState The state object representing the child block. - * @package - */ - constructor(reason: string, childConnection: string, childBlock: Block, childState: any); - /** - * The block that could not connect to its parent. - * @type {!Block} - */ - childBlock: Block; - /** - * The state object representing the block that could not connect to its - * parent. - * @type {!State} - */ - childState: any; - } - /** - * Represents an error where deserialization encountered a real block as it - * was deserializing children of a shadow. - * This is an error because it is an invariant of Blockly that shadow blocks - * do not have real children. - * @alias Blockly.serialization.exceptions.RealChildOfShadow - */ - export class RealChildOfShadow extends DeserializationError { - /** - * @param {!State} state The state object representing the real block. - * @package - */ - constructor(state: any); - /** - * The state object representing the real block. - * @type {!State} - */ - state: any; - } - import { Block } from "core/block"; -} -declare module "core/utils/rect" { - /** - * Class for representing rectangular regions. - * @alias Blockly.utils.Rect - */ - export const Rect: { - new (top: number, bottom: number, left: number, right: number): { - /** @type {number} */ - top: number; - /** @type {number} */ - bottom: number; - /** @type {number} */ - left: number; - /** @type {number} */ - right: number; - /** - * Tests whether this rectangle contains a x/y coordinate. - * - * @param {number} x The x coordinate to test for containment. - * @param {number} y The y coordinate to test for containment. - * @return {boolean} Whether this rectangle contains given coordinate. - */ - contains(x: number, y: number): boolean; - /** - * Tests whether this rectangle intersects the provided rectangle. - * Assumes that the coordinate system increases going down and left. - * @param {!Rect} other The other rectangle to check for - * intersection with. - * @return {boolean} Whether this rectangle intersects the provided rectangle. - */ - intersects(other: any): boolean; - }; - }; -} -declare module "core/utils/size" { - /** - * Class for representing sizes consisting of a width and height. - * @alias Blockly.utils.Size - */ - export const Size: { - new (width: number, height: number): { - /** - * Width - * @type {number} - */ - width: number; - /** - * Height - * @type {number} - */ - height: number; - }; - /** - * Compares sizes for equality. - * @param {?Size} a A Size. - * @param {?Size} b A Size. - * @return {boolean} True iff the sizes have equal widths and equal - * heights, or if both are null. - */ - equals(a: { - /** - * Width - * @type {number} - */ - width: number; - /** - * Height - * @type {number} - */ - height: number; - } | null, b: { - /** - * Width - * @type {number} - */ - width: number; - /** - * Height - * @type {number} - */ - height: number; - } | null): boolean; - }; -} -declare module "core/dialog" { - /** - * Wrapper to window.alert() that app developers may override via setAlert to - * provide alternatives to the modal browser window. - * @param {string} message The message to display to the user. - * @param {function()=} opt_callback The callback when the alert is dismissed. - * @alias Blockly.dialog.alert - */ - export function alert(message: string, opt_callback?: (() => any) | undefined): void; - /** - * Sets the function to be run when Blockly.dialog.alert() is called. - * @param {!function(string, function()=)} alertFunction The function to be run. - * @see Blockly.dialog.alert - * @alias Blockly.dialog.setAlert - */ - export function setAlert(alertFunction: (arg0: string, arg1: (() => any) | undefined) => any): void; - /** - * Wrapper to window.confirm() that app developers may override via setConfirm - * to provide alternatives to the modal browser window. - * @param {string} message The message to display to the user. - * @param {!function(boolean)} callback The callback for handling user response. - * @alias Blockly.dialog.confirm - */ - export function confirm(message: string, callback: (arg0: boolean) => any): void; - /** - * Sets the function to be run when Blockly.dialog.confirm() is called. - * @param {!function(string, !function(boolean))} confirmFunction The function - * to be run. - * @see Blockly.dialog.confirm - * @alias Blockly.dialog.setConfirm - */ - export function setConfirm(confirmFunction: (arg0: string, arg1: (arg0: boolean) => any) => any): void; - /** - * Wrapper to window.prompt() that app developers may override via setPrompt to - * provide alternatives to the modal browser window. Built-in browser prompts - * are often used for better text input experience on mobile device. We strongly - * recommend testing mobile when overriding this. - * @param {string} message The message to display to the user. - * @param {string} defaultValue The value to initialize the prompt with. - * @param {!function(?string)} callback The callback for handling user response. - * @alias Blockly.dialog.prompt - */ - export function prompt(message: string, defaultValue: string, callback: (arg0: string | null) => any): void; - /** - * Sets the function to be run when Blockly.dialog.prompt() is called. - * @param {!function(string, string, !function(?string))} promptFunction The - * function to be run. - * @see Blockly.dialog.prompt - * @alias Blockly.dialog.setPrompt - */ - export function setPrompt(promptFunction: (arg0: string, arg1: string, arg2: (arg0: string | null) => any) => any): void; -} -declare module "core/utils/xml" { - /** - * Namespace for Blockly's XML. - * @alias Blockly.utils.xml.NAME_SPACE - */ - export const NAME_SPACE: "https://developers.google.com/blockly/xml"; - /** - * Get the document object to use for XML serialization. - * @return {!Document} The document object. - * @alias Blockly.utils.xml.getDocument - */ - export function getDocument(): Document; - /** - * Get the document object to use for XML serialization. - * @param {!Document} document The document object to use. - * @alias Blockly.utils.xml.setDocument - */ - export function setDocument(document: Document): void; - /** - * Create DOM element for XML. - * @param {string} tagName Name of DOM element. - * @return {!Element} New DOM element. - * @alias Blockly.utils.xml.createElement - */ - export function createElement(tagName: string): Element; - /** - * Create text element for XML. - * @param {string} text Text content. - * @return {!Text} New DOM text node. - * @alias Blockly.utils.xml.createTextNode - */ - export function createTextNode(text: string): Text; - /** - * Converts an XML string into a DOM tree. - * @param {string} text XML string. - * @return {Document} The DOM document. - * @throws if XML doesn't parse. - * @alias Blockly.utils.xml.textToDomDocument - */ - export function textToDomDocument(text: string): Document; - /** - * Converts a DOM structure into plain text. - * Currently the text format is fairly ugly: all one line with no whitespace. - * @param {!Node} dom A tree of XML nodes. - * @return {string} Text representation. - * @alias Blockly.utils.xml.domToText - */ - export function domToText(dom: Node): string; -} -declare module "core/events/events_var_base" { - /** - * Abstract class for a variable event. - * @extends {AbstractEvent} - * @alias Blockly.Events.VarBase - */ - export class VarBase extends AbstractEvent { - /** - * @param {!VariableModel=} opt_variable The variable this event - * corresponds to. Undefined for a blank event. - */ - constructor(opt_variable?: VariableModel | undefined); - /** - * The variable id for the variable this event pertains to. - * @type {string} - */ - varId: string; - } - import { Abstract as AbstractEvent } from "core/events/events_abstract"; - import { VariableModel } from "core/variable_model"; -} -declare module "core/events/events_var_create" { - /** - * Class for a variable creation event. - * @extends {VarBase} - * @alias Blockly.Events.VarCreate - */ - export class VarCreate extends VarBase { - varType: string | undefined; - varName: string | undefined; - } - import { VarBase } from "core/events/events_var_base"; -} -declare module "core/variable_model" { - /** - * Class for a variable model. - * Holds information for the variable including name, ID, and type. - * @see {Blockly.FieldVariable} - * @alias Blockly.VariableModel - */ - export class VariableModel { - /** - * A custom compare function for the VariableModel objects. - * @param {VariableModel} var1 First variable to compare. - * @param {VariableModel} var2 Second variable to compare. - * @return {number} -1 if name of var1 is less than name of var2, 0 if equal, - * and 1 if greater. - * @package - */ - static compareByName(var1: VariableModel, var2: VariableModel): number; - /** - * @param {!Workspace} workspace The variable's workspace. - * @param {string} name The name of the variable. This is the user-visible - * name (e.g. 'my var' or '私の変数'), not the generated name. - * @param {string=} opt_type The type of the variable like 'int' or 'string'. - * Does not need to be unique. Field_variable can filter variables based - * on their type. This will default to '' which is a specific type. - * @param {string=} opt_id The unique ID of the variable. This will default to - * a UUID. - */ - constructor(workspace: Workspace, name: string, opt_type?: string | undefined, opt_id?: string | undefined); - /** - * The workspace the variable is in. - * @type {!Workspace} - */ - workspace: Workspace; - /** - * The name of the variable, typically defined by the user. It may be - * changed by the user. - * @type {string} - */ - name: string; - /** - * The type of the variable, such as 'int' or 'sound_effect'. This may be - * used to build a list of variables of a specific type. By default this is - * the empty string '', which is a specific type. - * @see {Blockly.FieldVariable} - * @type {string} - */ - type: string; - /** - * A unique ID for the variable. This should be defined at creation and - * not change, even if the name changes. In most cases this should be a - * UUID. - * @type {string} - * @private - */ - private id_; - /** - * @return {string} The ID for the variable. - */ - getId(): string; - } - import { Workspace } from "core/workspace"; -} -declare module "core/variables" { - /** - * String for use in the "custom" attribute of a category in toolbox XML. - * This string indicates that the category should be dynamically populated with - * variable blocks. - * See also Blockly.Procedures.CATEGORY_NAME and - * Blockly.VariablesDynamic.CATEGORY_NAME. - * @const {string} - * @alias Blockly.Variables.CATEGORY_NAME - */ - export const CATEGORY_NAME: "VARIABLE"; - /** - * Find all user-created variables that are in use in the workspace. - * For use by generators. - * To get a list of all variables on a workspace, including unused variables, - * call Workspace.getAllVariables. - * @param {!Workspace} ws The workspace to search for variables. - * @return {!Array} Array of variable models. - * @alias Blockly.Variables.allUsedVarModels - */ - export function allUsedVarModels(ws: Workspace): Array; - /** - * Find all developer variables used by blocks in the workspace. - * Developer variables are never shown to the user, but are declared as global - * variables in the generated code. - * To declare developer variables, define the getDeveloperVariables function on - * your block and return a list of variable names. - * For use by generators. - * @param {!Workspace} workspace The workspace to search. - * @return {!Array} A list of non-duplicated variable names. - * @alias Blockly.Variables.allDeveloperVariables - */ - export function allDeveloperVariables(workspace: Workspace): Array; - /** - * Construct the elements (blocks and button) required by the flyout for the - * variable category. - * @param {!WorkspaceSvg} workspace The workspace containing variables. - * @return {!Array} Array of XML elements. - * @alias Blockly.Variables.flyoutCategory - */ - export function flyoutCategory(workspace: WorkspaceSvg): Array; - /** - * Construct the blocks required by the flyout for the variable category. - * @param {!Workspace} workspace The workspace containing variables. - * @return {!Array} Array of XML block elements. - * @alias Blockly.Variables.flyoutCategoryBlocks - */ - export function flyoutCategoryBlocks(workspace: Workspace): Array; - /** - * @alias Blockly.Variables.VAR_LETTER_OPTIONS - */ - export const VAR_LETTER_OPTIONS: "ijkmnopqrstuvwxyzabcdefgh"; - /** - * Return a new variable name that is not yet being used. This will try to - * generate single letter variable names in the range 'i' to 'z' to start with. - * If no unique name is located it will try 'i' to 'z', 'a' to 'h', - * then 'i2' to 'z2' etc. Skip 'l'. - * @param {!Workspace} workspace The workspace to be unique in. - * @return {string} New variable name. - * @alias Blockly.Variables.generateUniqueName - */ - export function generateUniqueName(workspace: Workspace): string; - /** - * Returns a unique name that is not present in the usedNames array. This - * will try to generate single letter names in the range a -> z (skip l). It - * will start with the character passed to startChar. - * @param {string} startChar The character to start the search at. - * @param {!Array} usedNames A list of all of the used names. - * @return {string} A unique name that is not present in the usedNames array. - * @alias Blockly.Variables.generateUniqueNameFromOptions - */ - export function generateUniqueNameFromOptions(startChar: string, usedNames: Array): string; - /** - * Handles "Create Variable" button in the default variables toolbox category. - * It will prompt the user for a variable name, including re-prompts if a name - * is already in use among the workspace's variables. - * - * Custom button handlers can delegate to this function, allowing variables - * types and after-creation processing. More complex customization (e.g., - * prompting for variable type) is beyond the scope of this function. - * - * @param {!Workspace} workspace The workspace on which to create the - * variable. - * @param {function(?string=)=} opt_callback A callback. It will be passed an - * acceptable new variable name, or null if change is to be aborted (cancel - * button), or undefined if an existing variable was chosen. - * @param {string=} opt_type The type of the variable like 'int', 'string', or - * ''. This will default to '', which is a specific type. - * @alias Blockly.Variables.createVariableButtonHandler - */ - export function createVariableButtonHandler(workspace: Workspace, opt_callback?: ((arg0: (string | null) | undefined) => any) | undefined, opt_type?: string | undefined): void; - /** - * Opens a prompt that allows the user to enter a new name for a variable. - * Triggers a rename if the new name is valid. Or re-prompts if there is a - * collision. - * @param {!Workspace} workspace The workspace on which to rename the - * variable. - * @param {!VariableModel} variable Variable to rename. - * @param {function(?string=)=} opt_callback A callback. It will - * be passed an acceptable new variable name, or null if change is to be - * aborted (cancel button), or undefined if an existing variable was chosen. - * @alias Blockly.Variables.renameVariable - */ - export function renameVariable(workspace: Workspace, variable: VariableModel, opt_callback?: ((arg0: (string | null) | undefined) => any) | undefined): void; - /** - * Prompt the user for a new variable name. - * @param {string} promptText The string of the prompt. - * @param {string} defaultText The default value to show in the prompt's field. - * @param {function(?string)} callback A callback. It will return the new - * variable name, or null if the user picked something illegal. - * @alias Blockly.Variables.promptName - */ - export function promptName(promptText: string, defaultText: string, callback: (arg0: string | null) => any): void; - /** - * Check whether there exists a variable with the given name of any type. - * @param {string} name The name to search for. - * @param {!Workspace} workspace The workspace to search for the - * variable. - * @return {?VariableModel} The variable with the given name, - * or null if none was found. - * @alias Blockly.Variables.nameUsedWithAnyType - */ - export function nameUsedWithAnyType(name: string, workspace: Workspace): VariableModel | null; - /** - * Generate DOM objects representing a variable field. - * @param {!VariableModel} variableModel The variable model to - * represent. - * @return {?Element} The generated DOM. - * @alias Blockly.Variables.generateVariableFieldDom - */ - export function generateVariableFieldDom(variableModel: VariableModel): Element | null; - /** - * Helper function to look up or create a variable on the given workspace. - * If no variable exists, creates and returns it. - * @param {!Workspace} workspace The workspace to search for the - * variable. It may be a flyout workspace or main workspace. - * @param {?string} id The ID to use to look up or create the variable, or null. - * @param {string=} opt_name The string to use to look up or create the - * variable. - * @param {string=} opt_type The type to use to look up or create the variable. - * @return {!VariableModel} The variable corresponding to the given ID - * or name + type combination. - * @alias Blockly.Variables.getOrCreateVariablePackage - */ - export function getOrCreateVariablePackage(workspace: Workspace, id: string | null, opt_name?: string | undefined, opt_type?: string | undefined): VariableModel; - /** - * Look up a variable on the given workspace. - * Always looks in the main workspace before looking in the flyout workspace. - * Always prefers lookup by ID to lookup by name + type. - * @param {!Workspace} workspace The workspace to search for the - * variable. It may be a flyout workspace or main workspace. - * @param {?string} id The ID to use to look up the variable, or null. - * @param {string=} opt_name The string to use to look up the variable. - * Only used if lookup by ID fails. - * @param {string=} opt_type The type to use to look up the variable. - * Only used if lookup by ID fails. - * @return {?VariableModel} The variable corresponding to the given ID - * or name + type combination, or null if not found. - * @alias Blockly.Variables.getVariable - */ - export function getVariable(workspace: Workspace, id: string | null, opt_name?: string | undefined, opt_type?: string | undefined): VariableModel | null; - /** - * Helper function to get the list of variables that have been added to the - * workspace after adding a new block, using the given list of variables that - * were in the workspace before the new block was added. - * @param {!Workspace} workspace The workspace to inspect. - * @param {!Array} originalVariables The array of - * variables that existed in the workspace before adding the new block. - * @return {!Array} The new array of variables that - * were freshly added to the workspace after creating the new block, - * or [] if no new variables were added to the workspace. - * @alias Blockly.Variables.getAddedVariables - * @package - */ - export function getAddedVariables(workspace: Workspace, originalVariables: Array): Array; - import { Workspace } from "core/workspace"; - import { VariableModel } from "core/variable_model"; - import { WorkspaceSvg } from "core/workspace_svg"; -} -declare module "core/events/events_ui_base" { - /** - * Base class for a UI event. - * UI events are events that don't need to be sent over the wire for multi-user - * editing to work (e.g. scrolling the workspace, zooming, opening toolbox - * categories). - * UI events do not undo or redo. - * @extends {AbstractEvent} - * @alias Blockly.Events.UiBase - */ - export class UiBase extends AbstractEvent { - /** - * @param {string=} opt_workspaceId The workspace identifier for this event. - * Undefined for a blank event. - */ - constructor(opt_workspaceId?: string | undefined); - } - import { Abstract as AbstractEvent } from "core/events/events_abstract"; -} -declare module "core/events/events_bubble_open" { - /** - * Class for a bubble open event. - * @extends {UiBase} - * @alias Blockly.Events.BubbleOpen - */ - export class BubbleOpen extends UiBase { - /** - * @param {BlockSvg} opt_block The associated block. Undefined for a - * blank event. - * @param {boolean=} opt_isOpen Whether the bubble is opening (false if - * closing). Undefined for a blank event. - * @param {string=} opt_bubbleType The type of bubble. One of 'mutator', - * 'comment' - * or 'warning'. Undefined for a blank event. - */ - constructor(opt_block: BlockSvg, opt_isOpen?: boolean | undefined, opt_bubbleType?: string | undefined); - blockId: string | null; - /** - * Whether the bubble is opening (false if closing). - * @type {boolean|undefined} - */ - isOpen: boolean | undefined; - /** - * The type of bubble. One of 'mutator', 'comment', or 'warning'. - * @type {string|undefined} - */ - bubbleType: string | undefined; - } - import { UiBase } from "core/events/events_ui_base"; - import { BlockSvg } from "core/block_svg"; -} -declare module "core/block_animations" { - /** - * Play some UI effects (sound, animation) when disposing of a block. - * @param {!BlockSvg} block The block being disposed of. - * @alias Blockly.blockAnimations.disposeUiEffect - * @package - */ - export function disposeUiEffect(block: BlockSvg): void; - /** - * Play some UI effects (sound, ripple) after a connection has been established. - * @param {!BlockSvg} block The block being connected. - * @alias Blockly.blockAnimations.connectionUiEffect - * @package - */ - export function connectionUiEffect(block: BlockSvg): void; - /** - * Play some UI effects (sound, animation) when disconnecting a block. - * @param {!BlockSvg} block The block being disconnected. - * @alias Blockly.blockAnimations.disconnectUiEffect - * @package - */ - export function disconnectUiEffect(block: BlockSvg): void; - /** - * Stop the disconnect UI animation immediately. - * @alias Blockly.blockAnimations.disconnectUiStop - * @package - */ - export function disconnectUiStop(): void; - import { BlockSvg } from "core/block_svg"; -} -declare module "core/connection_type" { - /** - * * - */ - export type ConnectionType = number; - export namespace ConnectionType { - const INPUT_VALUE: number; - const OUTPUT_VALUE: number; - const NEXT_STATEMENT: number; - const PREVIOUS_STATEMENT: number; - } -} -declare module "core/internal_constants" { - /** - * Number of characters to truncate a collapsed block to. - * @alias Blockly.internalConstants.COLLAPSE_CHARS - */ - export const COLLAPSE_CHARS: 30; - /** - * When dragging a block out of a stack, split the stack in two (true), or drag - * out the block healing the stack (false). - * @alias Blockly.internalConstants.DRAG_STACK - */ - export const DRAG_STACK: true; - /** - * Lookup table for determining the opposite type of a connection. - * @const - * @alias Blockly.internalConstants.OPPOSITE_TYPE - */ - export const OPPOSITE_TYPE: any[]; - /** - * String for use in the dropdown created in field_variable. - * This string indicates that this option in the dropdown is 'Rename - * variable...' and if selected, should trigger the prompt to rename a variable. - * @const {string} - * @alias Blockly.internalConstants.RENAME_VARIABLE_ID - */ - export const RENAME_VARIABLE_ID: "RENAME_VARIABLE_ID"; - /** - * String for use in the dropdown created in field_variable. - * This string indicates that this option in the dropdown is 'Delete the "%1" - * variable' and if selected, should trigger the prompt to delete a variable. - * @const {string} - * @alias Blockly.internalConstants.DELETE_VARIABLE_ID - */ - export const DELETE_VARIABLE_ID: "DELETE_VARIABLE_ID"; -} -declare module "core/utils/deprecation" { - /** - * Warn developers that a function or property is deprecated. - * @param {string} name The name of the function or property. - * @param {string} deprecationDate The date of deprecation. - * Prefer 'month yyyy' or 'quarter yyyy' format. - * @param {string} deletionDate The date of deletion, in the same format as the - * deprecation date. - * @param {string=} opt_use The name of a function or property to use instead, - * if any. - * @alias Blockly.utils.deprecation.warn - * @package - */ - export function warn(name: string, deprecationDate: string, deletionDate: string, opt_use?: string | undefined): void; -} -declare module "core/utils/coordinate" { - /** - * Class for representing coordinates and positions. - * @alias Blockly.utils.Coordinate - */ - export const Coordinate: { - new (x: number, y: number): { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - }; - /** - * Compares coordinates for equality. - * @param {?Coordinate} a A Coordinate. - * @param {?Coordinate} b A Coordinate. - * @return {boolean} True iff the coordinates are equal, or if both are null. - */ - equals(a: { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - } | null, b: { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - } | null): boolean; - /** - * Returns the distance between two coordinates. - * @param {!Coordinate} a A Coordinate. - * @param {!Coordinate} b A Coordinate. - * @return {number} The distance between `a` and `b`. - */ - distance(a: { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - }, b: { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - }): number; - /** - * Returns the magnitude of a coordinate. - * @param {!Coordinate} a A Coordinate. - * @return {number} The distance between the origin and `a`. - */ - magnitude(a: { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - }): number; - /** - * Returns the difference between two coordinates as a new - * Coordinate. - * @param {!Coordinate|!SVGPoint} a An x/y coordinate. - * @param {!Coordinate|!SVGPoint} b An x/y coordinate. - * @return {!Coordinate} A Coordinate representing the difference - * between `a` and `b`. - */ - difference(a: { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - } | SVGPoint, b: { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - } | SVGPoint): { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - }; - /** - * Returns the sum of two coordinates as a new Coordinate. - * @param {!Coordinate|!SVGPoint} a An x/y coordinate. - * @param {!Coordinate|!SVGPoint} b An x/y coordinate. - * @return {!Coordinate} A Coordinate representing the sum of - * the two coordinates. - */ - sum(a: { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - } | SVGPoint, b: { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - } | SVGPoint): { - /** - * X-value - * @type {number} - */ - x: number; - /** - * Y-value - * @type {number} - */ - y: number; - /** - * Creates a new copy of this coordinate. - * @return {!Coordinate} A copy of this coordinate. - */ - clone(): any; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Coordinate} This coordinate after scaling. - */ - scale(s: number): any; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): any; - }; - }; -} -declare module "core/utils/style" { - /** - * Gets the height and width of an element. - * Similar to Closure's goog.style.getSize - * @param {!Element} element Element to get size of. - * @return {!Size} Object with width/height properties. - * @alias Blockly.utils.style.getSize - */ - export function getSize(element: Element): { - width: number; - height: number; - }; - /** - * Retrieves a computed style value of a node. It returns empty string if the - * value cannot be computed (which will be the case in Internet Explorer) or - * "none" if the property requested is an SVG one and it has not been - * explicitly set (firefox and webkit). - * - * Copied from Closure's goog.style.getComputedStyle - * - * @param {!Element} element Element to get style of. - * @param {string} property Property to get (camel-case). - * @return {string} Style value. - * @alias Blockly.utils.style.getComputedStyle - */ - export function getComputedStyle(element: Element, property: string): string; - /** - * Gets the cascaded style value of a node, or null if the value cannot be - * computed (only Internet Explorer can do this). - * - * Copied from Closure's goog.style.getCascadedStyle - * - * @param {!Element} element Element to get style of. - * @param {string} style Property to get (camel-case). - * @return {string} Style value. - * @alias Blockly.utils.style.getCascadedStyle - */ - export function getCascadedStyle(element: Element, style: string): string; - /** - * Returns a Coordinate object relative to the top-left of the HTML document. - * Similar to Closure's goog.style.getPageOffset - * @param {!Element} el Element to get the page offset for. - * @return {!Coordinate} The page offset. - * @alias Blockly.utils.style.getPageOffset - */ - export function getPageOffset(el: Element): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Calculates the viewport coordinates relative to the document. - * Similar to Closure's goog.style.getViewportPageOffset - * @return {!Coordinate} The page offset of the viewport. - * @alias Blockly.utils.style.getViewportPageOffset - */ - export function getViewportPageOffset(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Shows or hides an element from the page. Hiding the element is done by - * setting the display property to "none", removing the element from the - * rendering hierarchy so it takes up no space. To show the element, the default - * inherited display property is restored (defined either in stylesheets or by - * the browser's default style rules). - * Copied from Closure's goog.style.getViewportPageOffset - * - * @param {!Element} el Element to show or hide. - * @param {*} isShown True to render the element in its default style, - * false to disable rendering the element. - * @alias Blockly.utils.style.setElementShown - */ - export function setElementShown(el: Element, isShown: any): void; - /** - * Returns true if the element is using right to left (RTL) direction. - * Copied from Closure's goog.style.isRightToLeft - * - * @param {!Element} el The element to test. - * @return {boolean} True for right to left, false for left to right. - * @alias Blockly.utils.style.isRightToLeft - */ - export function isRightToLeft(el: Element): boolean; - /** - * Gets the computed border widths (on all sides) in pixels - * Copied from Closure's goog.style.getBorderBox - * @param {!Element} element The element to get the border widths for. - * @return {!Object} The computed border widths. - * @alias Blockly.utils.style.getBorderBox - */ - export function getBorderBox(element: Element): Object; - /** - * Changes the scroll position of `container` with the minimum amount so - * that the content and the borders of the given `element` become visible. - * If the element is bigger than the container, its top left corner will be - * aligned as close to the container's top left corner as possible. - * Copied from Closure's goog.style.scrollIntoContainerView - * - * @param {!Element} element The element to make visible. - * @param {!Element} container The container to scroll. If not set, then the - * document scroll element will be used. - * @param {boolean=} opt_center Whether to center the element in the container. - * Defaults to false. - * @alias Blockly.utils.style.scrollIntoContainerView - */ - export function scrollIntoContainerView(element: Element, container: Element, opt_center?: boolean | undefined): void; - /** - * Calculate the scroll position of `container` with the minimum amount so - * that the content and the borders of the given `element` become visible. - * If the element is bigger than the container, its top left corner will be - * aligned as close to the container's top left corner as possible. - * Copied from Closure's goog.style.getContainerOffsetToScrollInto - * - * @param {!Element} element The element to make visible. - * @param {!Element} container The container to scroll. If not set, then the - * document scroll element will be used. - * @param {boolean=} opt_center Whether to center the element in the container. - * Defaults to false. - * @return {!Coordinate} The new scroll position of the container, - * in form of goog.math.Coordinate(scrollLeft, scrollTop). - * @alias Blockly.utils.style.getContainerOffsetToScrollInto - */ - export function getContainerOffsetToScrollInto(element: Element, container: Element, opt_center?: boolean | undefined): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; -} -declare module "core/utils/svg_math" { - export namespace TEST_ONLY { - export { XY_REGEX }; - export { XY_STYLE_REGEX }; - } - /** - * Return the coordinates of the top-left corner of this element relative to - * its parent. Only for SVG elements and children (e.g. rect, g, path). - * @param {!Element} element SVG element to find the coordinates of. - * @return {!Coordinate} Object with .x and .y properties. - * @alias Blockly.utils.svgMath.getRelativeXY - */ - export function getRelativeXY(element: Element): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Return the coordinates of the top-left corner of this element relative to - * the div Blockly was injected into. - * @param {!Element} element SVG element to find the coordinates of. If this is - * not a child of the div Blockly was injected into, the behaviour is - * undefined. - * @return {!Coordinate} Object with .x and .y properties. - * @alias Blockly.utils.svgMath.getInjectionDivXY - */ - export function getInjectionDivXY(element: Element): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Check if 3D transforms are supported by adding an element - * and attempting to set the property. - * @return {boolean} True if 3D transforms are supported. - * @alias Blockly.utils.svgMath.is3dSupported - */ - export function is3dSupported(): boolean; - /** - * Get the position of the current viewport in window coordinates. This takes - * scroll into account. - * @return {!Rect} An object containing window width, height, and - * scroll position in window coordinates. - * @alias Blockly.utils.svgMath.getViewportBBox - * @package - */ - export function getViewportBBox(): { - top: number; - bottom: number; - left: number; - right: number; - contains(x: number, y: number): boolean; - intersects(other: any): boolean; - }; - /** - * Gets the document scroll distance as a coordinate object. - * Copied from Closure's goog.dom.getDocumentScroll. - * @return {!Coordinate} Object with values 'x' and 'y'. - * @alias Blockly.utils.svgMath.getDocumentScroll - */ - export function getDocumentScroll(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Converts screen coordinates to workspace coordinates. - * @param {!WorkspaceSvg} ws The workspace to find the coordinates on. - * @param {!Coordinate} screenCoordinates The screen coordinates to - * be converted to workspace coordinates - * @return {!Coordinate} The workspace coordinates. - * @alias Blockly.utils.svgMath.screenToWsCoordinates - */ - export function screenToWsCoordinates(ws: WorkspaceSvg, screenCoordinates: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Returns the dimensions of the specified SVG image. - * @param {!SVGElement} svg SVG image. - * @return {!Size} Contains width and height properties. - * @deprecated Use workspace.getCachedParentSvgSize. (2021 March 5) - * @alias Blockly.utils.svgMath.svgSize - */ - export function svgSize(svg: SVGElement): { - width: number; - height: number; - }; - /** - * Static regex to pull the x,y values out of an SVG translate() directive. - * Note that Firefox and IE (9,10) return 'translate(12)' instead of - * 'translate(12, 0)'. - * Note that IE (9,10) returns 'translate(16 8)' instead of 'translate(16, 8)'. - * Note that IE has been reported to return scientific notation (0.123456e-42). - * @type {!RegExp} - */ - const XY_REGEX: RegExp; - /** - * Static regex to pull the x,y values out of a translate() or translate3d() - * style property. - * Accounts for same exceptions as XY_REGEX. - * @type {!RegExp} - */ - const XY_STYLE_REGEX: RegExp; - import { WorkspaceSvg } from "core/workspace_svg"; - export {}; -} -declare module "core/block_drag_surface" { - /** - * Class for a drag surface for the currently dragged block. This is a separate - * SVG that contains only the currently moving block, or nothing. - * @alias Blockly.BlockDragSurfaceSvg - */ - export const BlockDragSurfaceSvg: { - new (container: Element): { - /** - * The SVG drag surface. Set once by BlockDragSurfaceSvg.createDom. - * @type {?SVGElement} - * @private - */ - SVG_: SVGElement | null; - /** - * This is where blocks live while they are being dragged if the drag - * surface is enabled. - * @type {?SVGElement} - * @private - */ - dragGroup_: SVGElement | null; - /** - * Containing HTML element; parent of the workspace and the drag surface. - * @type {!Element} - * @private - */ - container_: Element; - /** - * Cached value for the scale of the drag surface. - * Used to set/get the correct translation during and after a drag. - * @type {number} - * @private - */ - scale_: number; - /** - * Cached value for the translation of the drag surface. - * This translation is in pixel units, because the scale is applied to the - * drag group rather than the top-level SVG. - * @type {?Coordinate} - * @private - */ - surfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - } | null; - /** - * Cached value for the translation of the child drag surface in pixel - * units. Since the child drag surface tracks the translation of the - * workspace this is ultimately the translation of the workspace. - * @type {!Coordinate} - * @private - */ - childSurfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Create the drag surface and inject it into the container. - */ - createDom(): void; - /** - * Set the SVG blocks on the drag surface's group and show the surface. - * Only one block group should be on the drag surface at a time. - * @param {!SVGElement} blocks Block or group of blocks to place on the drag - * surface. - */ - setBlocksAndShow(blocks: SVGElement): void; - /** - * Translate and scale the entire drag surface group to the given position, to - * keep in sync with the workspace. - * @param {number} x X translation in pixel coordinates. - * @param {number} y Y translation in pixel coordinates. - * @param {number} scale Scale of the group. - */ - translateAndScaleGroup(x: number, y: number, scale: number): void; - /** - * Translate the drag surface's SVG based on its internal state. - * @private - */ - translateSurfaceInternal_(): void; - /** - * Translates the entire surface by a relative offset. - * @param {number} deltaX Horizontal offset in pixel units. - * @param {number} deltaY Vertical offset in pixel units. - */ - translateBy(deltaX: number, deltaY: number): void; - /** - * Translate the entire drag surface during a drag. - * We translate the drag surface instead of the blocks inside the surface - * so that the browser avoids repainting the SVG. - * Because of this, the drag coordinates must be adjusted by scale. - * @param {number} x X translation for the entire surface. - * @param {number} y Y translation for the entire surface. - */ - translateSurface(x: number, y: number): void; - /** - * Reports the surface translation in scaled workspace coordinates. - * Use this when finishing a drag to return blocks to the correct position. - * @return {!Coordinate} Current translation of the surface. - */ - getSurfaceTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Provide a reference to the drag group (primarily for - * BlockSvg.getRelativeToSurfaceXY). - * @return {?SVGElement} Drag surface group element. - */ - getGroup(): SVGElement | null; - /** - * Returns the SVG drag surface. - * @returns {?SVGElement} The SVG drag surface. - */ - getSvgRoot(): SVGElement | null; - /** - * Get the current blocks on the drag surface, if any (primarily - * for BlockSvg.getRelativeToSurfaceXY). - * @return {?Element} Drag surface block DOM element, or null if no blocks - * exist. - */ - getCurrentBlock(): Element | null; - /** - * Gets the translation of the child block surface - * This surface is in charge of keeping track of how much the workspace has - * moved. - * @return {!Coordinate} The amount the workspace has been moved. - */ - getWsTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Clear the group and hide the surface; move the blocks off onto the provided - * element. - * If the block is being deleted it doesn't need to go back to the original - * surface, since it would be removed immediately during dispose. - * @param {Element=} opt_newSurface Surface the dragging blocks should be - * moved to, or null if the blocks should be removed from this surface - * without being moved to a different surface. - */ - clearAndHide(opt_newSurface?: Element | undefined): void; - }; - }; -} -declare module "core/events/events_comment_change" { - /** - * Class for a comment change event. - * @extends {CommentBase} - * @alias Blockly.Events.CommentChange - */ - export class CommentChange extends CommentBase { - /** - * @param {!WorkspaceComment=} opt_comment The comment that is being - * changed. Undefined for a blank event. - * @param {string=} opt_oldContents Previous contents of the comment. - * @param {string=} opt_newContents New contents of the comment. - */ - constructor(opt_comment?: WorkspaceComment | undefined, opt_oldContents?: string | undefined, opt_newContents?: string | undefined); - oldContents_: string | undefined; - newContents_: string | undefined; - } - import { CommentBase } from "core/events/events_comment_base"; - import { WorkspaceComment } from "core/workspace_comment"; -} -declare module "core/events/events_comment_delete" { - /** - * Class for a comment deletion event. - * @extends {CommentBase} - * @alias Blockly.Events.CommentDelete - */ - export class CommentDelete extends CommentBase { - xml: Element | undefined; - } - import { CommentBase } from "core/events/events_comment_base"; -} -declare module "core/workspace_comment" { - /** - * Class for a workspace comment. - * @alias Blockly.WorkspaceComment - */ - export class WorkspaceComment { - /** - * Fire a create event for the given workspace comment, if comments are - * enabled. - * @param {!WorkspaceComment} comment The comment that was just created. - * @package - */ - static fireCreateEvent(comment: WorkspaceComment): void; - /** - * Decode an XML comment tag and create a comment on the workspace. - * @param {!Element} xmlComment XML comment element. - * @param {!Workspace} workspace The workspace. - * @return {!WorkspaceComment} The created workspace comment. - * @package - */ - static fromXml(xmlComment: Element, workspace: Workspace): WorkspaceComment; - /** - * Decode an XML comment tag and return the results in an object. - * @param {!Element} xml XML comment element. - * @return {{w: number, h: number, x: number, y: number, content: string}} An - * object containing the id, size, position, and comment string. - * @package - */ - static parseAttributes(xml: Element): { - w: number; - h: number; - x: number; - y: number; - content: string; - }; - /** - * @param {!Workspace} workspace The block's workspace. - * @param {string} content The content of this workspace comment. - * @param {number} height Height of the comment. - * @param {number} width Width of the comment. - * @param {string=} opt_id Optional ID. Use this ID if provided, otherwise - * create a new ID. - */ - constructor(workspace: Workspace, content: string, height: number, width: number, opt_id?: string | undefined); - /** @type {string} */ - id: string; - /** - * The comment's position in workspace units. (0, 0) is at the workspace's - * origin; scale does not change this value. - * @type {!Coordinate} - * @protected - */ - protected xy_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * The comment's height in workspace units. Scale does not change this - * value. - * @type {number} - * @protected - */ - protected height_: number; - /** - * The comment's width in workspace units. Scale does not change this - * value. - * @type {number} - * @protected - */ - protected width_: number; - /** - * @type {!Workspace} - */ - workspace: Workspace; - /** - * @protected - * @type {boolean} - */ - protected RTL: boolean; - /** - * @type {boolean} - * @private - */ - private deletable_; - /** - * @type {boolean} - * @private - */ - private movable_; - /** - * @type {boolean} - * @private - */ - private editable_; - /** - * @protected - * @type {string} - */ - protected content_: string; - /** - * Whether this comment has been disposed. - * @protected - * @type {boolean} - */ - protected disposed_: boolean; - /** - * @package - * @type {boolean} - */ - isComment: boolean; - /** - * Dispose of this comment. - * @package - */ - dispose(): void; - /** - * Get comment height. - * @return {number} Comment height. - * @package - */ - getHeight(): number; - /** - * Set comment height. - * @param {number} height Comment height. - * @package - */ - setHeight(height: number): void; - /** - * Get comment width. - * @return {number} Comment width. - * @package - */ - getWidth(): number; - /** - * Set comment width. - * @param {number} width comment width. - * @package - */ - setWidth(width: number): void; - /** - * Get stored location. - * @return {!Coordinate} The comment's stored location. - * This is not valid if the comment is currently being dragged. - * @package - */ - getXY(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Move a comment by a relative offset. - * @param {number} dx Horizontal offset, in workspace units. - * @param {number} dy Vertical offset, in workspace units. - * @package - */ - moveBy(dx: number, dy: number): void; - /** - * Get whether this comment is deletable or not. - * @return {boolean} True if deletable. - * @package - */ - isDeletable(): boolean; - /** - * Set whether this comment is deletable or not. - * @param {boolean} deletable True if deletable. - * @package - */ - setDeletable(deletable: boolean): void; - /** - * Get whether this comment is movable or not. - * @return {boolean} True if movable. - * @package - */ - isMovable(): boolean; - /** - * Set whether this comment is movable or not. - * @param {boolean} movable True if movable. - * @package - */ - setMovable(movable: boolean): void; - /** - * Get whether this comment is editable or not. - * @return {boolean} True if editable. - */ - isEditable(): boolean; - /** - * Set whether this comment is editable or not. - * @param {boolean} editable True if editable. - */ - setEditable(editable: boolean): void; - /** - * Returns this comment's text. - * @return {string} Comment text. - * @package - */ - getContent(): string; - /** - * Set this comment's content. - * @param {string} content Comment content. - * @package - */ - setContent(content: string): void; - /** - * Encode a comment subtree as XML with XY coordinates. - * @param {boolean=} opt_noId True if the encoder should skip the comment ID. - * @return {!Element} Tree of XML elements. - * @package - */ - toXmlWithXY(opt_noId?: boolean | undefined): Element; - /** - * Encode a comment subtree as XML, but don't serialize the XY coordinates. - * This method avoids some expensive metrics-related calls that are made in - * toXmlWithXY(). - * @param {boolean=} opt_noId True if the encoder should skip the comment ID. - * @return {!Element} Tree of XML elements. - * @package - */ - toXml(opt_noId?: boolean | undefined): Element; - } - import { Workspace } from "core/workspace"; -} -declare module "core/events/events_comment_create" { - /** - * Class for a comment creation event. - * @extends {CommentBase} - * @alias Blockly.Events.CommentCreate - */ - export class CommentCreate extends CommentBase { - xml: Element | undefined; - } - import { CommentBase } from "core/events/events_comment_base"; -} -declare module "core/events/events_comment_base" { - /** - * Abstract class for a comment event. - * @extends {AbstractEvent} - * @alias Blockly.Events.CommentBase - */ - export class CommentBase extends AbstractEvent { - /** - * Helper function for Comment[Create|Delete] - * @param {!CommentCreate|!CommentDelete} event - * The event to run. - * @param {boolean} create if True then Create, if False then Delete - */ - static CommentCreateDeleteHelper(event: CommentCreate | CommentDelete, create: boolean): void; - /** - * @param {!WorkspaceComment=} opt_comment The comment this event - * corresponds to. Undefined for a blank event. - */ - constructor(opt_comment?: WorkspaceComment | undefined); - /** - * The ID of the comment this event pertains to. - * @type {string} - */ - commentId: string; - } - import { Abstract as AbstractEvent } from "core/events/events_abstract"; - import { CommentCreate } from "core/events/events_comment_create"; - import { CommentDelete } from "core/events/events_comment_delete"; - import { WorkspaceComment } from "core/workspace_comment"; -} -declare module "core/events/events_comment_move" { - /** - * Class for a comment move event. Created before the move. - * @extends {CommentBase} - * @alias Blockly.Events.CommentMove - */ - export class CommentMove extends CommentBase { - /** - * The comment that is being moved. Will be cleared after recording the new - * location. - * @type {WorkspaceComment} - */ - comment_: WorkspaceComment; - /** - * The location before the move, in workspace coordinates. - * @type {!Coordinate} - */ - oldCoordinate_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * The location after the move, in workspace coordinates. - * @type {Coordinate} - */ - newCoordinate_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Record the comment's new location. Called after the move. Can only be - * called once. - */ - recordNew(): void; - /** - * Override the location before the move. Use this if you don't create the - * event until the end of the move, but you know the original location. - * @param {!Coordinate} xy The location before the move, - * in workspace coordinates. - */ - setOldCoordinate(xy: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - } - import { CommentBase } from "core/events/events_comment_base"; - import { WorkspaceComment } from "core/workspace_comment"; -} -declare module "core/interfaces/i_component" { - /** - * The interface for a workspace component that can be registered with the - * ComponentManager. - * @interface - * @alias Blockly.IComponent - */ - export function IComponent(): void; - export namespace IComponent { - const id: string; - } -} -declare module "core/interfaces/i_autohideable" { - /** - * Interface for a component that can be automatically hidden. - * @extends {IComponent} - * @interface - * @alias Blockly.IAutoHideable - */ - export class IAutoHideable {} -} -declare module "core/interfaces/i_deletable" { - /** - * The interface for an object that can be deleted. - * @interface - * @alias Blockly.IDeletable - */ - export class IDeletable {} -} -declare module "core/interfaces/i_draggable" { - /** - * The interface for an object that can be dragged. - * @extends {IDeletable} - * @interface - * @alias Blockly.IDraggable - */ - export class IDraggable {} -} -declare module "core/interfaces/i_drag_target" { - /** - * Interface for a component with custom behaviour when a block or bubble is - * dragged over or dropped on top of it. - * @extends {IComponent} - * @interface - * @alias Blockly.IDragTarget - */ - export class IDragTarget {} -} -declare module "core/interfaces/i_delete_area" { - /** - * Interface for a component that can delete a block or bubble that is dropped - * on top of it. - * @extends {IDragTarget} - * @interface - * @alias Blockly.IDeleteArea - */ - export class IDeleteArea {} -} -declare module "core/interfaces/i_registrable" { - /** - * The interface for a Blockly component that can be registered. - * @interface - * @alias Blockly.IRegistrable - */ - export class IRegistrable {} -} -declare module "core/interfaces/i_flyout" { - export class IFlyout { - /** - * Whether the flyout is laid out horizontally or not. - * @type {boolean} - */ - horizontalLayout: boolean; - /** - * Is RTL vs LTR. - * @type {boolean} - */ - RTL: boolean; - /** - * The target workspace - * @type {?WorkspaceSvg} - */ - targetWorkspace: WorkspaceSvg | null; - /** - * Margin around the edges of the blocks in the flyout. - * @type {number} - * @const - */ - MARGIN: number; - /** - * Does the flyout automatically close when a block is created? - * @type {boolean} - */ - autoClose: boolean; - /** - * Corner radius of the flyout background. - * @type {number} - * @const - */ - CORNER_RADIUS: number; - } - import { WorkspaceSvg } from "core/workspace_svg"; -} -declare module "core/utils/metrics" { - /** - * @record - * @alias Blockly.utils.Metrics - */ - export class Metrics { - /** - * Height of the visible portion of the workspace. - * @type {number} - */ - viewHeight: number; - /** - * Width of the visible portion of the workspace. - * @type {number} - */ - viewWidth: number; - /** - * Height of the content. - * @type {number} - */ - contentHeight: number; - /** - * Width of the content. - * @type {number} - */ - contentWidth: number; - /** - * Height of the scroll area. - * @type {number} - */ - scrollHeight: number; - /** - * Width of the scroll area. - * @type {number} - */ - scrollWidth: number; - /** - * Top-edge of the visible portion of the workspace, relative to the workspace - * origin. - * @type {number} - */ - viewTop: number; - /** - * Left-edge of the visible portion of the workspace, relative to the workspace - * origin. - * @type {number} - */ - viewLeft: number; - /** - * Top-edge of the content, relative to the workspace origin. - * @type {number} - */ - contentTop: number; - /** - * Left-edge of the content relative to the workspace origin. - * @type {number} - */ - contentLeft: number; - /** - * Top-edge of the scroll area, relative to the workspace origin. - * @type {number} - */ - scrollTop: number; - /** - * Left-edge of the scroll area relative to the workspace origin. - * @type {number} - */ - scrollLeft: number; - /** - * Top-edge of the visible portion of the workspace, relative to the blocklyDiv. - * @type {number} - */ - absoluteTop: number; - /** - * Left-edge of the visible portion of the workspace, relative to the - * blocklyDiv. - * @type {number} - */ - absoluteLeft: number; - /** - * Height of the Blockly div (the view + the toolbox, simple of otherwise). - * @type {number} - */ - svgHeight: number; - /** - * Width of the Blockly div (the view + the toolbox, simple or otherwise). - * @type {number} - */ - svgWidth: number; - /** - * Width of the toolbox, if it exists. Otherwise zero. - * @type {number} - */ - toolboxWidth: number; - /** - * Height of the toolbox, if it exists. Otherwise zero. - * @type {number} - */ - toolboxHeight: number; - /** - * Top, bottom, left or right. Use TOOLBOX_AT constants to compare. - * @type {number} - */ - toolboxPosition: number; - /** - * Width of the flyout if it is always open. Otherwise zero. - * @type {number} - */ - flyoutWidth: number; - /** - * Height of the flyout if it is always open. Otherwise zero. - * @type {number} - */ - flyoutHeight: number; - } -} -declare module "core/interfaces/i_metrics_manager" { - /** - * Interface for a metrics manager. - * @interface - * @alias Blockly.IMetricsManager - */ - export class IMetricsManager {} -} -declare module "core/interfaces/i_toolbox_item" { - /** - * Interface for an item in the toolbox. - * @interface - * @alias Blockly.IToolboxItem - */ - export class IToolboxItem {} -} -declare module "core/interfaces/i_toolbox" { - /** - * Interface for a toolbox. - * @extends {IRegistrable} - * @interface - * @alias Blockly.IToolbox - */ - export class IToolbox {} -} -declare module "core/metrics_manager" { - /** - * The manager for all workspace metrics calculations. - * @implements {IMetricsManager} - * @alias Blockly.MetricsManager - */ - export class MetricsManager implements IMetricsManager { - /** - * @param {!WorkspaceSvg} workspace The workspace to calculate metrics - * for. - */ - constructor(workspace: WorkspaceSvg); - /** - * The workspace to calculate metrics for. - * @type {!WorkspaceSvg} - * @protected - */ - protected workspace_: WorkspaceSvg; - /** - * Gets the dimensions of the given workspace component, in pixel coordinates. - * @param {?IToolbox|?IFlyout} elem The element to get the - * dimensions of, or null. It should be a toolbox or flyout, and should - * implement getWidth() and getHeight(). - * @return {!Size} An object containing width and height - * attributes, which will both be zero if elem did not exist. - * @protected - */ - protected getDimensionsPx_(elem: ((() => void) | (IFlyout | null)) | null): { - width: number; - height: number; - }; - /** - * Gets the width and the height of the flyout on the workspace in pixel - * coordinates. Returns 0 for the width and height if the workspace has a - * category toolbox instead of a simple toolbox. - * @param {boolean=} opt_own Whether to only return the workspace's own - * flyout. - * @return {!MetricsManager.ToolboxMetrics} The width and height of the - * flyout. - * @public - */ - public getFlyoutMetrics(opt_own?: boolean | undefined): MetricsManager.ToolboxMetrics; - /** - * Gets the width, height and position of the toolbox on the workspace in - * pixel coordinates. Returns 0 for the width and height if the workspace has - * a simple toolbox instead of a category toolbox. To get the width and height - * of a - * simple toolbox @see {@link getFlyoutMetrics}. - * @return {!MetricsManager.ToolboxMetrics} The object with the width, - * height and position of the toolbox. - * @public - */ - public getToolboxMetrics(): MetricsManager.ToolboxMetrics; - /** - * Gets the width and height of the workspace's parent SVG element in pixel - * coordinates. This area includes the toolbox and the visible workspace area. - * @return {!Size} The width and height of the workspace's parent - * SVG element. - * @public - */ - public getSvgMetrics(): { - width: number; - height: number; - }; - /** - * Gets the absolute left and absolute top in pixel coordinates. - * This is where the visible workspace starts in relation to the SVG - * container. - * @return {!MetricsManager.AbsoluteMetrics} The absolute metrics for - * the workspace. - * @public - */ - public getAbsoluteMetrics(): MetricsManager.AbsoluteMetrics; - /** - * Gets the metrics for the visible workspace in either pixel or workspace - * coordinates. The visible workspace does not include the toolbox or flyout. - * @param {boolean=} opt_getWorkspaceCoordinates True to get the view metrics - * in workspace coordinates, false to get them in pixel coordinates. - * @return {!MetricsManager.ContainerRegion} The width, height, top and - * left of the viewport in either workspace coordinates or pixel - * coordinates. - * @public - */ - public getViewMetrics(opt_getWorkspaceCoordinates?: boolean | undefined): MetricsManager.ContainerRegion; - /** - * Gets content metrics in either pixel or workspace coordinates. - * The content area is a rectangle around all the top bounded elements on the - * workspace (workspace comments and blocks). - * @param {boolean=} opt_getWorkspaceCoordinates True to get the content - * metrics in workspace coordinates, false to get them in pixel - * coordinates. - * @return {!MetricsManager.ContainerRegion} The - * metrics for the content container. - * @public - */ - public getContentMetrics(opt_getWorkspaceCoordinates?: boolean | undefined): MetricsManager.ContainerRegion; - /** - * Returns whether the scroll area has fixed edges. - * @return {boolean} Whether the scroll area has fixed edges. - * @package - */ - hasFixedEdges(): boolean; - /** - * Computes the fixed edges of the scroll area. - * @param {!MetricsManager.ContainerRegion=} opt_viewMetrics The view - * metrics if they have been previously computed. Passing in null may - * cause the view metrics to be computed again, if it is needed. - * @return {!MetricsManager.FixedEdges} The fixed edges of the scroll - * area. - * @protected - */ - protected getComputedFixedEdges_(opt_viewMetrics?: MetricsManager.ContainerRegion | undefined): MetricsManager.FixedEdges; - /** - * Returns the content area with added padding. - * @param {!MetricsManager.ContainerRegion} viewMetrics The view - * metrics. - * @param {!MetricsManager.ContainerRegion} contentMetrics The content - * metrics. - * @return {{top: number, bottom: number, left: number, right: number}} The - * padded content area. - * @protected - */ - protected getPaddedContent_(viewMetrics: MetricsManager.ContainerRegion, contentMetrics: MetricsManager.ContainerRegion): { - top: number; - bottom: number; - left: number; - right: number; - }; - /** - * Returns the metrics for the scroll area of the workspace. - * @param {boolean=} opt_getWorkspaceCoordinates True to get the scroll - * metrics in workspace coordinates, false to get them in pixel - * coordinates. - * @param {!MetricsManager.ContainerRegion=} opt_viewMetrics The view - * metrics if they have been previously computed. Passing in null may - * cause the view metrics to be computed again, if it is needed. - * @param {!MetricsManager.ContainerRegion=} opt_contentMetrics The - * content metrics if they have been previously computed. Passing in null - * may cause the content metrics to be computed again, if it is needed. - * @return {!MetricsManager.ContainerRegion} The metrics for the scroll - * container. - */ - getScrollMetrics(opt_getWorkspaceCoordinates?: boolean | undefined, opt_viewMetrics?: MetricsManager.ContainerRegion | undefined, opt_contentMetrics?: MetricsManager.ContainerRegion | undefined): MetricsManager.ContainerRegion; - /** - * Returns common metrics used by UI elements. - * @return {!MetricsManager.UiMetrics} The UI metrics. - */ - getUiMetrics(): MetricsManager.UiMetrics; - /** - * Returns an object with all the metrics required to size scrollbars for a - * top level workspace. The following properties are computed: - * Coordinate system: pixel coordinates, -left, -up, +right, +down - * .viewHeight: Height of the visible portion of the workspace. - * .viewWidth: Width of the visible portion of the workspace. - * .contentHeight: Height of the content. - * .contentWidth: Width of the content. - * .scrollHeight: Height of the scroll area. - * .scrollWidth: Width of the scroll area. - * .svgHeight: Height of the Blockly div (the view + the toolbox, - * simple or otherwise), - * .svgWidth: Width of the Blockly div (the view + the toolbox, - * simple or otherwise), - * .viewTop: Top-edge of the visible portion of the workspace, relative to - * the workspace origin. - * .viewLeft: Left-edge of the visible portion of the workspace, relative to - * the workspace origin. - * .contentTop: Top-edge of the content, relative to the workspace origin. - * .contentLeft: Left-edge of the content relative to the workspace origin. - * .scrollTop: Top-edge of the scroll area, relative to the workspace origin. - * .scrollLeft: Left-edge of the scroll area relative to the workspace origin. - * .absoluteTop: Top-edge of the visible portion of the workspace, relative - * to the blocklyDiv. - * .absoluteLeft: Left-edge of the visible portion of the workspace, relative - * to the blocklyDiv. - * .toolboxWidth: Width of the toolbox, if it exists. Otherwise zero. - * .toolboxHeight: Height of the toolbox, if it exists. Otherwise zero. - * .flyoutWidth: Width of the flyout if it is always open. Otherwise zero. - * .flyoutHeight: Height of the flyout if it is always open. Otherwise zero. - * .toolboxPosition: Top, bottom, left or right. Use TOOLBOX_AT constants to - * compare. - * @return {!Metrics} Contains size and position metrics of a top - * level workspace. - * @public - */ - public getMetrics(): Metrics; - } - export namespace MetricsManager { - /** - * Describes the width, height and location of the toolbox on the main - * workspace. - */ - type ToolboxMetrics = { - width: number; - height: number; - position: toolboxUtils.Position; - }; - /** - * Describes where the viewport starts in relation to the workspace SVG. - */ - type AbsoluteMetrics = { - left: number; - top: number; - }; - /** - * All the measurements needed to describe the size and location of a - * container. - */ - type ContainerRegion = { - height: number; - width: number; - top: number; - left: number; - }; - /** - * Describes fixed edges of the workspace. - */ - type FixedEdges = { - top: (number | undefined); - bottom: (number | undefined); - left: (number | undefined); - right: (number | undefined); - }; - /** - * Common metrics used for UI elements. - */ - type UiMetrics = { - viewMetrics: MetricsManager.ContainerRegion; - absoluteMetrics: MetricsManager.AbsoluteMetrics; - toolboxMetrics: MetricsManager.ToolboxMetrics; - }; - } - import { IMetricsManager } from "core/interfaces/i_metrics_manager"; - import { WorkspaceSvg } from "core/workspace_svg"; - import { IFlyout } from "core/interfaces/i_flyout"; - import { Metrics } from "core/utils/metrics"; - import * as toolboxUtils from "core/utils/toolbox"; -} -declare module "core/interfaces/i_positionable" { - /** - * Interface for a component that is positioned on top of the workspace. - * @extends {IComponent} - * @interface - * @alias Blockly.IPositionable - */ - export class IPositionable {} -} -declare module "core/component_manager" { - /** - * Manager for all items registered with the workspace. - * @alias Blockly.ComponentManager - */ - export class ComponentManager { - /** - * A map of the components registered with the workspace, mapped to id. - * @type {!Object} - * @private - */ - private componentData_; - /** - * A map of capabilities to component IDs. - * @type {!Object>} - * @private - */ - private capabilityToComponentIds_; - /** - * Adds a component. - * @param {!ComponentManager.ComponentDatum} componentInfo The data for - * the component to register. - * @param {boolean=} opt_allowOverrides True to prevent an error when - * overriding an already registered item. - */ - addComponent(componentInfo: ComponentManager.ComponentDatum, opt_allowOverrides?: boolean | undefined): void; - /** - * Removes a component. - * @param {string} id The ID of the component to remove. - */ - removeComponent(id: string): void; - /** - * Adds a capability to a existing registered component. - * @param {string} id The ID of the component to add the capability to. - * @param {string|!ComponentManager.Capability} capability The - * capability to add. - * @template T - */ - addCapability(id: string, capability: string | { - /** - * @type {string} - * @private - */ - name_: string; - /** - * Returns the name of the capability. - * @return {string} The name. - * @override - */ - toString(): string; - }): void; - /** - * Removes a capability from an existing registered component. - * @param {string} id The ID of the component to remove the capability from. - * @param {string|!ComponentManager.Capability} capability The - * capability to remove. - * @template T - */ - removeCapability(id: string, capability: string | { - /** - * @type {string} - * @private - */ - name_: string; - /** - * Returns the name of the capability. - * @return {string} The name. - * @override - */ - toString(): string; - }): void; - /** - * Returns whether the component with this id has the specified capability. - * @param {string} id The ID of the component to check. - * @param {string|!ComponentManager.Capability} capability The - * capability to check for. - * @return {boolean} Whether the component has the capability. - * @template T - */ - hasCapability(id: string, capability: string | { - /** - * @type {string} - * @private - */ - name_: string; - /** - * Returns the name of the capability. - * @return {string} The name. - * @override - */ - toString(): string; - }): boolean; - /** - * Gets the component with the given ID. - * @param {string} id The ID of the component to get. - * @return {!IComponent|undefined} The component with the given name - * or undefined if not found. - */ - getComponent(id: string): { - (): void; - id: string; - } | undefined; - /** - * Gets all the components with the specified capability. - * @param {string|!ComponentManager.Capability - * } capability The capability of the component. - * @param {boolean} sorted Whether to return list ordered by weights. - * @return {!Array} The components that match the specified capability. - * @template T - */ - getComponents(capability: string | { - /** - * @type {string} - * @private - */ - name_: string; - /** - * Returns the name of the capability. - * @return {string} The name. - * @override - */ - toString(): string; - }, sorted: boolean): T_4[]; - } - export namespace ComponentManager { - export { Capability }; - /** - * An object storing component information. - */ - export type ComponentDatum = { - component: { - (): void; - id: string; - }; - capabilities: (Array); - weight: number; - }; - } - class Capability { - /** - * @param {string} name The name of the component capability. - */ - constructor(name: string); - /** - * @type {string} - * @private - */ - private name_; - /** - * Returns the name of the capability. - * @return {string} The name. - * @override - */ - toString(): string; - } - export {}; -} -declare module "core/interfaces/i_contextmenu" { - /** - * @interface - * @alias Blockly.IContextMenu - */ - export class IContextMenu {} -} -declare module "core/interfaces/i_bubble" { - /** - * A bubble interface. - * @interface - * @extends {IDraggable} - * @extends {IContextMenu} - * @alias Blockly.IBubble - */ - export class IBubble {} -} -declare module "core/css" { - /** - * Add some CSS to the blob that will be injected later. Allows optional - * components such as fields and the toolbox to store separate CSS. - * @param {string|!Array} cssContent Multiline CSS string or an array of - * single lines of CSS. - * @alias Blockly.Css.register - */ - export function register(cssContent: string | Array): void; - /** - * Inject the CSS into the DOM. This is preferable over using a regular CSS - * file since: - * a) It loads synchronously and doesn't force a redraw later. - * b) It speeds up loading by not blocking on a separate HTTP transfer. - * c) The CSS content may be made dynamic depending on init options. - * @param {boolean} hasCss If false, don't inject CSS - * (providing CSS becomes the document's responsibility). - * @param {string} pathToMedia Path from page to the Blockly media directory. - * @alias Blockly.Css.inject - */ - export function inject(hasCss: boolean, pathToMedia: string): void; - /** - * The CSS content for Blockly. - * @alias Blockly.Css.content - */ - export let content: string; -} -declare module "core/interfaces/i_bounded_element" { - /** - * A bounded element interface. - * @interface - * @alias Blockly.IBoundedElement - */ - export class IBoundedElement {} -} -declare module "core/interfaces/i_movable" { - /** - * The interface for an object that is movable. - * @interface - * @alias Blockly.IMovable - */ - export class IMovable {} -} -declare module "core/interfaces/i_selectable" { - export class ISelectable { - /** - * @type {string} - */ - id: string; - } -} -declare module "core/interfaces/i_copyable" { - /** - * @extends {ISelectable} - * @interface - * @alias Blockly.ICopyable - */ - export class ICopyable {} - export namespace ICopyable { - /** - * Copy Metadata. - */ - type CopyData = { - saveInfo: (Object | Element); - source: WorkspaceSvg; - typeCounts: Object | null; - }; - } - import { WorkspaceSvg } from "core/workspace_svg"; -} -declare module "core/events/events_selected" { - /** - * Class for a selected event. - * @extends {UiBase} - * @alias Blockly.Events.Selected - */ - export class Selected extends UiBase { - /** - * @param {?string=} opt_oldElementId The ID of the previously selected - * element. Null if no element last selected. Undefined for a blank event. - * @param {?string=} opt_newElementId The ID of the selected element. Null if - * no element currently selected (deselect). Undefined for a blank event. - * @param {string=} opt_workspaceId The workspace identifier for this event. - * Null if no element previously selected. Undefined for a blank event. - */ - constructor(opt_oldElementId?: (string | null) | undefined, opt_newElementId?: (string | null) | undefined, opt_workspaceId?: string | undefined); - /** - * The id of the last selected element. - * @type {?string|undefined} - */ - oldElementId: (string | undefined) | null; - /** - * The id of the selected element. - * @type {?string|undefined} - */ - newElementId: (string | undefined) | null; - } - import { UiBase } from "core/events/events_ui_base"; -} -declare module "core/workspace_comment_svg" { - /** - * Class for a workspace comment's SVG representation. - * @extends {WorkspaceComment} - * @implements {IBoundedElement} - * @implements {IBubble} - * @implements {ICopyable} - * @alias Blockly.WorkspaceCommentSvg - */ - export class WorkspaceCommentSvg extends WorkspaceComment implements IBoundedElement, IBubble, ICopyable { - /** - * Decode an XML comment tag and create a rendered comment on the workspace. - * @param {!Element} xmlComment XML comment element. - * @param {!WorkspaceSvg} workspace The workspace. - * @param {number=} opt_wsWidth The width of the workspace, which is used to - * position comments correctly in RTL. - * @return {!WorkspaceCommentSvg} The created workspace comment. - * @package - */ - static fromXmlRendered(xmlComment: Element, workspace: WorkspaceSvg, opt_wsWidth?: number | undefined): WorkspaceCommentSvg; - /** - * @param {!WorkspaceSvg} workspace The block's workspace. - * @param {string} content The content of this workspace comment. - * @param {number} height Height of the comment. - * @param {number} width Width of the comment. - * @param {string=} opt_id Optional ID. Use this ID if provided, otherwise - * create a new ID. - */ - constructor(workspace: WorkspaceSvg, content: string, height: number, width: number, opt_id?: string | undefined); - /** - * Mouse up event data. - * @type {?browserEvents.Data} - * @private - */ - private onMouseUpWrapper_; - /** - * Mouse move event data. - * @type {?browserEvents.Data} - * @private - */ - private onMouseMoveWrapper_; - /** - * Whether event handlers have been initialized. - * @type {boolean} - * @private - */ - private eventsInit_; - /** - * @type {?Element} - * @private - */ - private textarea_; - /** - * @type {?SVGRectElement} - * @private - */ - private svgRectTarget_; - /** - * @type {?SVGRectElement} - * @private - */ - private svgHandleTarget_; - /** - * @type {?SVGForeignObjectElement} - * @private - */ - private foreignObject_; - /** - * @type {?SVGGElement} - * @private - */ - private resizeGroup_; - /** - * @type {?SVGGElement} - * @private - */ - private deleteGroup_; - /** - * @type {?SVGCircleElement} - * @private - */ - private deleteIconBorder_; - /** - * @type {boolean} - * @private - */ - private focused_; - /** - * @type {boolean} - * @private - */ - private autoLayout_; - /** - * @type {!SVGElement} - * @private - */ - private svgGroup_; - svgRect_: SVGRectElement; - /** - * Whether the comment is rendered onscreen and is a part of the DOM. - * @type {boolean} - * @private - */ - private rendered_; - /** - * Whether to move the comment to the drag surface when it is dragged. - * True if it should move, false if it should be translated directly. - * @type {boolean} - * @private - */ - private useDragSurface_; - /** - * Create and initialize the SVG representation of a workspace comment. - * May be called more than once. - * - * @param {boolean=} opt_noSelect Text inside text area will be selected if - * false - * - * @package - */ - initSvg(opt_noSelect?: boolean | undefined): void; - /** - * Handle a mouse-down on an SVG comment. - * @param {!Event} e Mouse down event or touch start event. - * @private - */ - private pathMouseDown_; - /** - * Show the context menu for this workspace comment. - * @param {!Event} e Mouse event. - * @package - */ - showContextMenu(e: Event): void; - /** - * Select this comment. Highlight it visually. - * @package - */ - select(): void; - /** - * Unselect this comment. Remove its highlighting. - * @package - */ - unselect(): void; - /** - * Select this comment. Highlight it visually. - * @package - */ - addSelect(): void; - /** - * Unselect this comment. Remove its highlighting. - * @package - */ - removeSelect(): void; - /** - * Focus this comment. Highlight it visually. - * @package - */ - addFocus(): void; - /** - * Unfocus this comment. Remove its highlighting. - * @package - */ - removeFocus(): void; - /** - * Return the coordinates of the top-left corner of this comment relative to - * the drawing surface's origin (0,0), in workspace units. - * If the comment is on the workspace, (0, 0) is the origin of the workspace - * coordinate system. - * This does not change with workspace scale. - * @return {!Coordinate} Object with .x and .y properties in - * workspace coordinates. - * @package - */ - getRelativeToSurfaceXY(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Transforms a comment by setting the translation on the transform attribute - * of the block's SVG. - * @param {number} x The x coordinate of the translation in workspace units. - * @param {number} y The y coordinate of the translation in workspace units. - * @package - */ - translate(x: number, y: number): void; - /** - * Move this comment to its workspace's drag surface, accounting for - * positioning. Generally should be called at the same time as - * setDragging(true). Does nothing if useDragSurface_ is false. - * @package - */ - moveToDragSurface(): void; - /** - * Move this comment during a drag, taking into account whether we are using a - * drag surface to translate blocks. - * @param {BlockDragSurfaceSvg} dragSurface The surface that carries - * rendered items during a drag, or null if no drag surface is in use. - * @param {!Coordinate} newLoc The location to translate to, in - * workspace coordinates. - * @package - */ - moveDuringDrag(dragSurface: { - SVG_: SVGElement | null; - dragGroup_: SVGElement | null; - container_: Element; - scale_: number; - surfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - } | null; - childSurfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - createDom(): void; /** - * @type {?SVGRectElement} - * @private - */ - setBlocksAndShow(blocks: SVGElement): void; /** - * @type {boolean} - * @private - */ - translateAndScaleGroup(x: number, y: number, scale: number): void; - translateSurfaceInternal_(): void; - translateBy(deltaX: number, deltaY: number): void; - translateSurface(x: number, y: number): void; - getSurfaceTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - getGroup(): SVGElement | null; - getSvgRoot(): SVGElement | null; - getCurrentBlock(): Element | null; - getWsTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - clearAndHide(opt_newSurface?: Element | undefined): void; - }, newLoc: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Move the bubble group to the specified location in workspace coordinates. - * @param {number} x The x position to move to. - * @param {number} y The y position to move to. - * @package - */ - moveTo(x: number, y: number): void; - /** - * Clear the comment of transform="..." attributes. - * Used when the comment is switching from 3d to 2d transform or vice versa. - * @private - */ - private clearTransformAttributes_; - /** - * Returns the coordinates of a bounding box describing the dimensions of this - * comment. - * Coordinate system: workspace coordinates. - * @return {!Rect} Object with coordinates of the bounding box. - * @package - */ - getBoundingRectangle(): { - top: number; - bottom: number; - left: number; - right: number; - contains(x: number, y: number): boolean; - intersects(other: any): boolean; - }; - /** - * Add or remove the UI indicating if this comment is movable or not. - * @package - */ - updateMovable(): void; - /** - * Recursively adds or removes the dragging class to this node and its - * children. - * @param {boolean} adding True if adding, false if removing. - * @package - */ - setDragging(adding: boolean): void; - /** - * Return the root node of the SVG or null if none exists. - * @return {!SVGElement} The root SVG node (probably a group). - * @package - */ - getSvgRoot(): SVGElement; - /** - * Update the cursor over this comment by adding or removing a class. - * @param {boolean} enable True if the delete cursor should be shown, false - * otherwise. - * @package - */ - setDeleteStyle(enable: boolean): void; - /** - * Set whether auto-layout of this bubble is enabled. The first time a bubble - * is shown it positions itself to not cover any blocks. Once a user has - * dragged it to reposition, it renders where the user put it. - * @param {boolean} _enable True if auto-layout should be enabled, false - * otherwise. - * @package - */ - setAutoLayout(_enable: boolean): void; - /** - * Encode a comment for copying. - * @return {!ICopyable.CopyData} Copy metadata. - * @package - */ - toCopyData(): ICopyable.CopyData; - /** - * Returns a bounding box describing the dimensions of this comment. - * @return {!{height: number, width: number}} Object with height and width - * properties in workspace units. - * @package - */ - getHeightWidth(): { - height: number; - width: number; - }; - /** - * Renders the workspace comment. - * @package - */ - render(): void; - /** - * Create the text area for the comment. - * @return {!Element} The top-level node of the editor. - * @private - */ - private createEditor_; - /** - * Add the resize icon to the DOM - * @private - */ - private addResizeDom_; - /** - * Add the delete icon to the DOM - * @private - */ - private addDeleteDom_; - /** - * Handle a mouse-down on comment's resize corner. - * @param {!Event} e Mouse down event. - * @private - */ - private resizeMouseDown_; - /** - * Handle a mouse-down on comment's delete icon. - * @param {!Event} e Mouse down event. - * @private - */ - private deleteMouseDown_; - /** - * Handle a mouse-out on comment's delete icon. - * @param {!Event} _e Mouse out event. - * @private - */ - private deleteMouseOut_; - /** - * Handle a mouse-up on comment's delete icon. - * @param {!Event} e Mouse up event. - * @private - */ - private deleteMouseUp_; - /** - * Stop binding to the global mouseup and mousemove events. - * @private - */ - private unbindDragEvents_; - /** - * Handle a mouse-up event while dragging a comment's border or resize handle. - * @param {!Event} _e Mouse up event. - * @private - */ - private resizeMouseUp_; - /** - * Resize this comment to follow the mouse. - * @param {!Event} e Mouse move event. - * @private - */ - private resizeMouseMove_; - /** - * Callback function triggered when the comment has resized. - * Resize the text area accordingly. - * @private - */ - private resizeComment_; - /** - * Set size - * @param {number} width width of the container - * @param {number} height height of the container - * @private - */ - private setSize_; - /** - * Dispose of any rendered comment components. - * @private - */ - private disposeInternal_; - /** - * Set the focus on the text area. - * @package - */ - setFocus(): void; - /** - * Remove focus from the text area. - * @package - */ - blurFocus(): void; - } - export namespace WorkspaceCommentSvg { - const DEFAULT_SIZE: number; - const TOP_OFFSET: number; - } - import { IBoundedElement } from "core/interfaces/i_bounded_element"; - import { IBubble } from "core/interfaces/i_bubble"; - import { ICopyable } from "core/interfaces/i_copyable"; - import { WorkspaceComment } from "core/workspace_comment"; - import { WorkspaceSvg } from "core/workspace_svg"; -} -declare module "core/scrollbar" { - /** - * A note on units: most of the numbers that are in CSS pixels are scaled if the - * scrollbar is in a mutator. - */ - /** - * Class for a pure SVG scrollbar. - * This technique offers a scrollbar that is guaranteed to work, but may not - * look or behave like the system's scrollbars. - * @alias Blockly.Scrollbar - */ - export class Scrollbar { - /** - * @param {!Metrics} first An object containing computed - * measurements of a workspace. - * @param {!Metrics} second Another object containing computed - * measurements of a workspace. - * @return {boolean} Whether the two sets of metrics are equivalent. - * @private - */ - private static metricsAreEquivalent_; - /** - * @param {!WorkspaceSvg} workspace Workspace to bind the scrollbar to. - * @param {boolean} horizontal True if horizontal, false if vertical. - * @param {boolean=} opt_pair True if scrollbar is part of a horiz/vert pair. - * @param {string=} opt_class A class to be applied to this scrollbar. - * @param {number=} opt_margin The margin to apply to this scrollbar. - */ - constructor(workspace: WorkspaceSvg, horizontal: boolean, opt_pair?: boolean | undefined, opt_class?: string | undefined, opt_margin?: number | undefined); - /** - * The workspace this scrollbar is bound to. - * @type {!WorkspaceSvg} - * @private - */ - private workspace_; - /** - * Whether this scrollbar is part of a pair. - * @type {boolean} - * @private - */ - private pair_; - /** - * Whether this is a horizontal scrollbar. - * @type {boolean} - * @private - */ - private horizontal_; - /** - * Margin around the scrollbar (between the scrollbar and the edge of the - * viewport in pixels). - * @type {number} - * @const - * @private - */ - private margin_; - /** - * Previously recorded metrics from the workspace. - * @type {?Metrics} - * @private - */ - private oldHostMetrics_; - /** - * The ratio of handle position offset to workspace content displacement. - * @type {?number} - * @package - */ - ratio: number | null; - /** - * The location of the origin of the workspace that the scrollbar is in, - * measured in CSS pixels relative to the injection div origin. This is - * usually (0, 0). When the scrollbar is in a flyout it may have a - * different origin. - * @type {Coordinate} - * @private - */ - private origin_; - /** - * The position of the mouse along this scrollbar's major axis at the start - * of the most recent drag. Units are CSS pixels, with (0, 0) at the top - * left of the browser window. For a horizontal scrollbar this is the x - * coordinate of the mouse down event; for a vertical scrollbar it's the y - * coordinate of the mouse down event. - * @type {number} - * @private - */ - private startDragMouse_; - /** - * The length of the scrollbars (including the handle and the background), - * in CSS pixels. This is equivalent to scrollbar background length and the - * area within which the scrollbar handle can move. - * @type {number} - * @private - */ - private scrollbarLength_; - /** - * The length of the scrollbar handle in CSS pixels. - * @type {number} - * @private - */ - private handleLength_; - /** - * The offset of the start of the handle from the scrollbar position, in CSS - * pixels. - * @type {number} - * @private - */ - private handlePosition_; - /** - * @type {number} - * @private - */ - private startDragHandle; - /** - * Whether the scrollbar handle is visible. - * @type {boolean} - * @private - */ - private isVisible_; - /** - * Whether the workspace containing this scrollbar is visible. - * @type {boolean} - * @private - */ - private containerVisible_; - /** - * @type {?SVGRectElement} - * @private - */ - private svgBackground_; - /** - * @type {?SVGRectElement} - * @private - */ - private svgHandle_; - /** - * @type {?SVGSVGElement} - * @private - */ - private outerSvg_; - /** - * @type {?SVGGElement} - * @private - */ - private svgGroup_; - /** - * The upper left corner of the scrollbar's SVG group in CSS pixels relative - * to the scrollbar's origin. This is usually relative to the injection div - * origin. - * @type {Coordinate} - * @package - */ - position: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - lengthAttribute_: string; - positionAttribute_: string; - onMouseDownBarWrapper_: any[][]; - onMouseDownHandleWrapper_: any[][]; - /** - * Dispose of this scrollbar. - * Unlink from all DOM elements to prevent memory leaks. - * @suppress {checkTypes} - */ - dispose(): void; - /** - * Constrain the handle's length within the minimum (0) and maximum - * (scrollbar background) values allowed for the scrollbar. - * @param {number} value Value that is potentially out of bounds, in CSS - * pixels. - * @return {number} Constrained value, in CSS pixels. - * @private - */ - private constrainHandleLength_; - /** - * Set the length of the scrollbar's handle and change the SVG attribute - * accordingly. - * @param {number} newLength The new scrollbar handle length in CSS pixels. - * @private - */ - private setHandleLength_; - /** - * Constrain the handle's position within the minimum (0) and maximum values - * allowed for the scrollbar. - * @param {number} value Value that is potentially out of bounds, in CSS - * pixels. - * @return {number} Constrained value, in CSS pixels. - * @private - */ - private constrainHandlePosition_; - /** - * Set the offset of the scrollbar's handle from the scrollbar's position, and - * change the SVG attribute accordingly. - * @param {number} newPosition The new scrollbar handle offset in CSS pixels. - */ - setHandlePosition(newPosition: number): void; - /** - * Set the size of the scrollbar's background and change the SVG attribute - * accordingly. - * @param {number} newSize The new scrollbar background length in CSS pixels. - * @private - */ - private setScrollbarLength_; - /** - * Set the position of the scrollbar's SVG group in CSS pixels relative to the - * scrollbar's origin. This sets the scrollbar's location within the - * workspace. - * @param {number} x The new x coordinate. - * @param {number} y The new y coordinate. - * @package - */ - setPosition(x: number, y: number): void; - /** - * Recalculate the scrollbar's location and its length. - * @param {Metrics=} opt_metrics A data structure of from the - * describing all the required dimensions. If not provided, it will be - * fetched from the host object. - */ - resize(opt_metrics?: Metrics | undefined): void; - /** - * Returns whether the a resizeView is necessary by comparing the passed - * hostMetrics with cached old host metrics. - * @param {!Metrics} hostMetrics A data structure describing all - * the required dimensions, possibly fetched from the host object. - * @return {boolean} Whether a resizeView is necessary. - * @private - */ - private requiresViewResize_; - /** - * Recalculate a horizontal scrollbar's location and length. - * @param {!Metrics} hostMetrics A data structure describing all - * the required dimensions, possibly fetched from the host object. - * @private - */ - private resizeHorizontal_; - /** - * Recalculate a horizontal scrollbar's location on the screen and path - * length. This should be called when the layout or size of the window has - * changed. - * @param {!Metrics} hostMetrics A data structure describing all - * the required dimensions, possibly fetched from the host object. - */ - resizeViewHorizontal(hostMetrics: Metrics): void; - /** - * Recalculate a horizontal scrollbar's location within its path and length. - * This should be called when the contents of the workspace have changed. - * @param {!Metrics} hostMetrics A data structure describing all - * the required dimensions, possibly fetched from the host object. - */ - resizeContentHorizontal(hostMetrics: Metrics): void; - /** - * Recalculate a vertical scrollbar's location and length. - * @param {!Metrics} hostMetrics A data structure describing all - * the required dimensions, possibly fetched from the host object. - * @private - */ - private resizeVertical_; - /** - * Recalculate a vertical scrollbar's location on the screen and path length. - * This should be called when the layout or size of the window has changed. - * @param {!Metrics} hostMetrics A data structure describing all - * the required dimensions, possibly fetched from the host object. - */ - resizeViewVertical(hostMetrics: Metrics): void; - /** - * Recalculate a vertical scrollbar's location within its path and length. - * This should be called when the contents of the workspace have changed. - * @param {!Metrics} hostMetrics A data structure describing all - * the required dimensions, possibly fetched from the host object. - */ - resizeContentVertical(hostMetrics: Metrics): void; - /** - * Create all the DOM elements required for a scrollbar. - * The resulting widget is not sized. - * @param {string=} opt_class A class to be applied to this scrollbar. - * @private - */ - private createDom_; - /** - * Is the scrollbar visible. Non-paired scrollbars disappear when they aren't - * needed. - * @return {boolean} True if visible. - */ - isVisible(): boolean; - /** - * Set whether the scrollbar's container is visible and update - * display accordingly if visibility has changed. - * @param {boolean} visible Whether the container is visible - */ - setContainerVisible(visible: boolean): void; - /** - * Set whether the scrollbar is visible. - * Only applies to non-paired scrollbars. - * @param {boolean} visible True if visible. - */ - setVisible(visible: boolean): void; - /** - * Update visibility of scrollbar based on whether it thinks it should - * be visible and whether its containing workspace is visible. - * We cannot rely on the containing workspace being hidden to hide us - * because it is not necessarily our parent in the DOM. - */ - updateDisplay_(): void; - /** - * Scroll by one pageful. - * Called when scrollbar background is clicked. - * @param {!Event} e Mouse down event. - * @private - */ - private onMouseDownBar_; - /** - * Start a dragging operation. - * Called when scrollbar handle is clicked. - * @param {!Event} e Mouse down event. - * @private - */ - private onMouseDownHandle_; - /** - * Drag the scrollbar's handle. - * @param {!Event} e Mouse up event. - * @private - */ - private onMouseMoveHandle_; - /** - * Release the scrollbar handle and reset state accordingly. - * @private - */ - private onMouseUpHandle_; - /** - * Hide chaff and stop binding to mouseup and mousemove events. Call this to - * wrap up loose ends associated with the scrollbar. - * @private - */ - private cleanUp_; - /** - * Helper to calculate the ratio of handle position to scrollbar view size. - * @return {number} Ratio. - * @package - */ - getRatio_(): number; - /** - * Updates workspace metrics based on new scroll ratio. Called when scrollbar - * is moved. - * @private - */ - private updateMetrics_; - /** - * Set the scrollbar handle's position. - * @param {number} value The content displacement, relative to the view in - * pixels. - * @param {boolean=} updateMetrics Whether to update metrics on this set call. - * Defaults to true. - */ - set(value: number, updateMetrics?: boolean | undefined): void; - /** - * Record the origin of the workspace that the scrollbar is in, in pixels - * relative to the injection div origin. This is for times when the scrollbar - * is used in an object whose origin isn't the same as the main workspace - * (e.g. in a flyout.) - * @param {number} x The x coordinate of the scrollbar's origin, in CSS - * pixels. - * @param {number} y The y coordinate of the scrollbar's origin, in CSS - * pixels. - */ - setOrigin(x: number, y: number): void; - } - export namespace Scrollbar { - const scrollbarThickness: number; - const DEFAULT_SCROLLBAR_MARGIN: number; - } - import { Metrics } from "core/utils/metrics"; - import { WorkspaceSvg } from "core/workspace_svg"; -} -declare module "core/bubble" { - /** - * Class for UI bubble. - * @implements {IBubble} - * @alias Blockly.Bubble - */ - export const Bubble: { - new (workspace: WorkspaceSvg, content: Element, shape: Element, anchorXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }, bubbleWidth: number | null, bubbleHeight: number | null): { - workspace_: WorkspaceSvg; - content_: Element; - shape_: Element; - /** - * Flag to stop incremental rendering during construction. - * @type {boolean} - * @private - */ - rendered_: boolean; - /** - * The SVG group containing all parts of the bubble. - * @type {SVGGElement} - * @private - */ - bubbleGroup_: SVGGElement; - /** - * The SVG path for the arrow from the bubble to the icon on the block. - * @type {SVGPathElement} - * @private - */ - bubbleArrow_: SVGPathElement; - /** - * The SVG rect for the main body of the bubble. - * @type {SVGRectElement} - * @private - */ - bubbleBack_: SVGRectElement; - /** - * The SVG group for the resize hash marks on some bubbles. - * @type {SVGGElement} - * @private - */ - resizeGroup_: SVGGElement; - /** - * Absolute coordinate of anchor point, in workspace coordinates. - * @type {Coordinate} - * @private - */ - anchorXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Relative X coordinate of bubble with respect to the anchor's centre, - * in workspace units. - * In RTL mode the initial value is negated. - * @type {number} - * @private - */ - relativeLeft_: number; - /** - * Relative Y coordinate of bubble with respect to the anchor's centre, in - * workspace units. - * @type {number} - * @private - */ - relativeTop_: number; - /** - * Width of bubble, in workspace units. - * @type {number} - * @private - */ - width_: number; - /** - * Height of bubble, in workspace units. - * @type {number} - * @private - */ - height_: number; - /** - * Automatically position and reposition the bubble. - * @type {boolean} - * @private - */ - autoLayout_: boolean; - /** - * Method to call on resize of bubble. - * @type {?function()} - * @private - */ - resizeCallback_: (() => any) | null; - /** - * Method to call on move of bubble. - * @type {?function()} - * @private - */ - moveCallback_: (() => any) | null; - /** - * Mouse down on bubbleBack_ event data. - * @type {?browserEvents.Data} - * @private - */ - onMouseDownBubbleWrapper_: any[][] | null; - /** - * Mouse down on resizeGroup_ event data. - * @type {?browserEvents.Data} - * @private - */ - onMouseDownResizeWrapper_: any[][] | null; - /** - * Describes whether this bubble has been disposed of (nodes and event - * listeners removed from the page) or not. - * @type {boolean} - * @package - */ - disposed: boolean; - arrow_radians_: number; - /** - * Create the bubble's DOM. - * @param {!Element} content SVG content for the bubble. - * @param {boolean} hasResize Add diagonal resize gripper if true. - * @return {!SVGElement} The bubble's SVG group. - * @private - */ - createDom_(content: Element, hasResize: boolean): SVGElement; - /** - * Return the root node of the bubble's SVG group. - * @return {!SVGElement} The root SVG node of the bubble's group. - */ - getSvgRoot(): SVGElement; - /** - * Expose the block's ID on the bubble's top-level SVG group. - * @param {string} id ID of block. - */ - setSvgId(id: string): void; - /** - * Handle a mouse-down on bubble's border. - * @param {!Event} e Mouse down event. - * @private - */ - bubbleMouseDown_(e: Event): void; - /** - * Show the context menu for this bubble. - * @param {!Event} _e Mouse event. - * @package - */ - showContextMenu(_e: Event): void; - /** - * Get whether this bubble is deletable or not. - * @return {boolean} True if deletable. - * @package - */ - isDeletable(): boolean; - /** - * Update the style of this bubble when it is dragged over a delete area. - * @param {boolean} _enable True if the bubble is about to be deleted, false - * otherwise. - */ - setDeleteStyle(_enable: boolean): void; - /** - * Handle a mouse-down on bubble's resize corner. - * @param {!Event} e Mouse down event. - * @private - */ - resizeMouseDown_(e: Event): void; - /** - * Resize this bubble to follow the mouse. - * @param {!Event} e Mouse move event. - * @private - */ - resizeMouseMove_(e: Event): void; - /** - * Register a function as a callback event for when the bubble is resized. - * @param {!Function} callback The function to call on resize. - */ - registerResizeEvent(callback: Function): void; - /** - * Register a function as a callback event for when the bubble is moved. - * @param {!Function} callback The function to call on move. - */ - registerMoveEvent(callback: Function): void; - /** - * Move this bubble to the top of the stack. - * @return {boolean} Whether or not the bubble has been moved. - * @package - */ - promote(): boolean; - /** - * Notification that the anchor has moved. - * Update the arrow and bubble accordingly. - * @param {!Coordinate} xy Absolute location. - */ - setAnchorLocation(xy: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Position the bubble so that it does not fall off-screen. - * @private - */ - layoutBubble_(): void; - /** - * Calculate the what percentage of the bubble overlaps with the visible - * workspace (what percentage of the bubble is visible). - * @param {!{x: number, y: number}} relativeMin The position of the top-left - * corner of the bubble relative to the anchor point. - * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics - * of the workspace the bubble will appear in. - * @return {number} The percentage of the bubble that is visible. - * @private - */ - getOverlap_(relativeMin: { - x: number; - y: number; - }, viewMetrics: MetricsManager.ContainerRegion): number; - /** - * Calculate what the optimal horizontal position of the top-left corner of - * the bubble is (relative to the anchor point) so that the most area of the - * bubble is shown. - * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics - * of the workspace the bubble will appear in. - * @return {number} The optimal horizontal position of the top-left corner - * of the bubble. - * @private - */ - getOptimalRelativeLeft_(viewMetrics: MetricsManager.ContainerRegion): number; - /** - * Calculate what the optimal vertical position of the top-left corner of - * the bubble is (relative to the anchor point) so that the most area of the - * bubble is shown. - * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics - * of the workspace the bubble will appear in. - * @return {number} The optimal vertical position of the top-left corner - * of the bubble. - * @private - */ - getOptimalRelativeTop_(viewMetrics: MetricsManager.ContainerRegion): number; - /** - * Move the bubble to a location relative to the anchor's centre. - * @private - */ - positionBubble_(): void; - /** - * Move the bubble group to the specified location in workspace coordinates. - * @param {number} x The x position to move to. - * @param {number} y The y position to move to. - * @package - */ - moveTo(x: number, y: number): void; - /** - * Triggers a move callback if one exists at the end of a drag. - * @param {boolean} adding True if adding, false if removing. - * @package - */ - setDragging(adding: boolean): void; - /** - * Get the dimensions of this bubble. - * @return {!Size} The height and width of the bubble. - */ - getBubbleSize(): { - width: number; - height: number; - }; - /** - * Size this bubble. - * @param {number} width Width of the bubble. - * @param {number} height Height of the bubble. - */ - setBubbleSize(width: number, height: number): void; - /** - * Draw the arrow between the bubble and the origin. - * @private - */ - renderArrow_(): void; - /** - * Change the colour of a bubble. - * @param {string} hexColour Hex code of colour. - */ - setColour(hexColour: string): void; - /** - * Dispose of this bubble. - */ - dispose(): void; - /** - * Move this bubble during a drag, taking into account whether or not there is - * a drag surface. - * @param {BlockDragSurfaceSvg} dragSurface The surface that carries - * rendered items during a drag, or null if no drag surface is in use. - * @param {!Coordinate} newLoc The location to translate to, in - * workspace coordinates. - * @package - */ - moveDuringDrag(dragSurface: { - SVG_: SVGElement | null; - dragGroup_: SVGElement | null; - container_: Element; - scale_: number; - surfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - } | null; - childSurfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - createDom(): void; - setBlocksAndShow(blocks: SVGElement): void; - translateAndScaleGroup(x: number, y: number, scale: number): void; - translateSurfaceInternal_(): void; - translateBy(deltaX: number, deltaY: number): void; - translateSurface(x: number, y: number): void; - getSurfaceTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - getGroup(): SVGElement | null; - getSvgRoot(): SVGElement | null; - getCurrentBlock(): Element | null; - getWsTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - clearAndHide(opt_newSurface?: Element | undefined): void; - }, newLoc: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Return the coordinates of the top-left corner of this bubble's body - * relative to the drawing surface's origin (0,0), in workspace units. - * @return {!Coordinate} Object with .x and .y properties. - */ - getRelativeToSurfaceXY(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Set whether auto-layout of this bubble is enabled. The first time a bubble - * is shown it positions itself to not cover any blocks. Once a user has - * dragged it to reposition, it renders where the user put it. - * @param {boolean} enable True if auto-layout should be enabled, false - * otherwise. - * @package - */ - setAutoLayout(enable: boolean): void; - }; - /** - * Stop binding to the global mouseup and mousemove events. - * @private - */ - unbindDragEvents_(): void; - /** - * Handle a mouse-up event while dragging a bubble's border or resize handle. - * @param {!Event} _e Mouse up event. - * @private - */ - bubbleMouseUp_(_e: Event): void; - /** - * Create the text for a non editable bubble. - * @param {string} text The text to display. - * @return {!SVGTextElement} The top-level node of the text. - * @package - */ - textToDom(text: string): SVGTextElement; - /** - * Creates a bubble that can not be edited. - * @param {!SVGTextElement} paragraphElement The text element for the non - * editable bubble. - * @param {!BlockSvg} block The block that the bubble is attached to. - * @param {!Coordinate} iconXY The coordinate of the icon. - * @return {!Bubble} The non editable bubble. - * @package - */ - createNonEditableBubble(paragraphElement: SVGTextElement, block: BlockSvg, iconXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): { - workspace_: WorkspaceSvg; - content_: Element; - shape_: Element; - /** - * Flag to stop incremental rendering during construction. - * @type {boolean} - * @private - */ - rendered_: boolean; - /** - * The SVG group containing all parts of the bubble. - * @type {SVGGElement} - * @private - */ - bubbleGroup_: SVGGElement; - /** - * The SVG path for the arrow from the bubble to the icon on the block. - * @type {SVGPathElement} - * @private - */ - bubbleArrow_: SVGPathElement; - /** - * The SVG rect for the main body of the bubble. - * @type {SVGRectElement} - * @private - */ - bubbleBack_: SVGRectElement; - /** - * The SVG group for the resize hash marks on some bubbles. - * @type {SVGGElement} - * @private - */ - resizeGroup_: SVGGElement; - /** - * Absolute coordinate of anchor point, in workspace coordinates. - * @type {Coordinate} - * @private - */ - anchorXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Relative X coordinate of bubble with respect to the anchor's centre, - * in workspace units. - * In RTL mode the initial value is negated. - * @type {number} - * @private - */ - relativeLeft_: number; - /** - * Relative Y coordinate of bubble with respect to the anchor's centre, in - * workspace units. - * @type {number} - * @private - */ - relativeTop_: number; - /** - * Width of bubble, in workspace units. - * @type {number} - * @private - */ - width_: number; - /** - * Height of bubble, in workspace units. - * @type {number} - * @private - */ - height_: number; - /** - * Automatically position and reposition the bubble. - * @type {boolean} - * @private - */ - autoLayout_: boolean; - /** - * Method to call on resize of bubble. - * @type {?function()} - * @private - */ - resizeCallback_: (() => any) | null; - /** - * Method to call on move of bubble. - * @type {?function()} - * @private - */ - moveCallback_: (() => any) | null; - /** - * Mouse down on bubbleBack_ event data. - * @type {?browserEvents.Data} - * @private - */ - onMouseDownBubbleWrapper_: any[][] | null; - /** - * Mouse down on resizeGroup_ event data. - * @type {?browserEvents.Data} - * @private - */ - onMouseDownResizeWrapper_: any[][] | null; - /** - * Describes whether this bubble has been disposed of (nodes and event - * listeners removed from the page) or not. - * @type {boolean} - * @package - */ - disposed: boolean; - arrow_radians_: number; - /** - * Create the bubble's DOM. - * @param {!Element} content SVG content for the bubble. - * @param {boolean} hasResize Add diagonal resize gripper if true. - * @return {!SVGElement} The bubble's SVG group. - * @private - */ - createDom_(content: Element, hasResize: boolean): SVGElement; - /** - * Return the root node of the bubble's SVG group. - * @return {!SVGElement} The root SVG node of the bubble's group. - */ - getSvgRoot(): SVGElement; - /** - * Expose the block's ID on the bubble's top-level SVG group. - * @param {string} id ID of block. - */ - setSvgId(id: string): void; - /** - * Handle a mouse-down on bubble's border. - * @param {!Event} e Mouse down event. - * @private - */ - bubbleMouseDown_(e: Event): void; - /** - * Show the context menu for this bubble. - * @param {!Event} _e Mouse event. - * @package - */ - showContextMenu(_e: Event): void; - /** - * Get whether this bubble is deletable or not. - * @return {boolean} True if deletable. - * @package - */ - isDeletable(): boolean; - /** - * Update the style of this bubble when it is dragged over a delete area. - * @param {boolean} _enable True if the bubble is about to be deleted, false - * otherwise. - */ - setDeleteStyle(_enable: boolean): void; - /** - * Handle a mouse-down on bubble's resize corner. - * @param {!Event} e Mouse down event. - * @private - */ - resizeMouseDown_(e: Event): void; - /** - * Resize this bubble to follow the mouse. - * @param {!Event} e Mouse move event. - * @private - */ - resizeMouseMove_(e: Event): void; - /** - * Register a function as a callback event for when the bubble is resized. - * @param {!Function} callback The function to call on resize. - */ - registerResizeEvent(callback: Function): void; - /** - * Register a function as a callback event for when the bubble is moved. - * @param {!Function} callback The function to call on move. - */ - registerMoveEvent(callback: Function): void; - /** - * Move this bubble to the top of the stack. - * @return {boolean} Whether or not the bubble has been moved. - * @package - */ - promote(): boolean; - /** - * Notification that the anchor has moved. - * Update the arrow and bubble accordingly. - * @param {!Coordinate} xy Absolute location. - */ - setAnchorLocation(xy: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Position the bubble so that it does not fall off-screen. - * @private - */ - layoutBubble_(): void; - /** - * Calculate the what percentage of the bubble overlaps with the visible - * workspace (what percentage of the bubble is visible). - * @param {!{x: number, y: number}} relativeMin The position of the top-left - * corner of the bubble relative to the anchor point. - * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics - * of the workspace the bubble will appear in. - * @return {number} The percentage of the bubble that is visible. - * @private - */ - getOverlap_(relativeMin: { - x: number; - y: number; - }, viewMetrics: MetricsManager.ContainerRegion): number; - /** - * Calculate what the optimal horizontal position of the top-left corner of - * the bubble is (relative to the anchor point) so that the most area of the - * bubble is shown. - * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics - * of the workspace the bubble will appear in. - * @return {number} The optimal horizontal position of the top-left corner - * of the bubble. - * @private - */ - getOptimalRelativeLeft_(viewMetrics: MetricsManager.ContainerRegion): number; - /** - * Calculate what the optimal vertical position of the top-left corner of - * the bubble is (relative to the anchor point) so that the most area of the - * bubble is shown. - * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics - * of the workspace the bubble will appear in. - * @return {number} The optimal vertical position of the top-left corner - * of the bubble. - * @private - */ - getOptimalRelativeTop_(viewMetrics: MetricsManager.ContainerRegion): number; - /** - * Move the bubble to a location relative to the anchor's centre. - * @private - */ - positionBubble_(): void; - /** - * Move the bubble group to the specified location in workspace coordinates. - * @param {number} x The x position to move to. - * @param {number} y The y position to move to. - * @package - */ - moveTo(x: number, y: number): void; - /** - * Triggers a move callback if one exists at the end of a drag. - * @param {boolean} adding True if adding, false if removing. - * @package - */ - setDragging(adding: boolean): void; - /** - * Get the dimensions of this bubble. - * @return {!Size} The height and width of the bubble. - */ - getBubbleSize(): { - width: number; - height: number; - }; - /** - * Size this bubble. - * @param {number} width Width of the bubble. - * @param {number} height Height of the bubble. - */ - setBubbleSize(width: number, height: number): void; - /** - * Draw the arrow between the bubble and the origin. - * @private - */ - renderArrow_(): void; - /** - * Change the colour of a bubble. - * @param {string} hexColour Hex code of colour. - */ - setColour(hexColour: string): void; - /** - * Dispose of this bubble. - */ - dispose(): void; - /** - * Move this bubble during a drag, taking into account whether or not there is - * a drag surface. - * @param {BlockDragSurfaceSvg} dragSurface The surface that carries - * rendered items during a drag, or null if no drag surface is in use. - * @param {!Coordinate} newLoc The location to translate to, in - * workspace coordinates. - * @package - */ - moveDuringDrag(dragSurface: { - SVG_: SVGElement | null; - dragGroup_: SVGElement | null; - container_: Element; - scale_: number; - surfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - } | null; - childSurfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - createDom(): void; - setBlocksAndShow(blocks: SVGElement): void; - translateAndScaleGroup(x: number, y: number, scale: number): void; - translateSurfaceInternal_(): void; - translateBy(deltaX: number, deltaY: number): void; - translateSurface(x: number, y: number): void; - getSurfaceTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - getGroup(): SVGElement | null; - getSvgRoot(): SVGElement | null; - getCurrentBlock(): Element | null; - getWsTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - clearAndHide(opt_newSurface?: Element | undefined): void; - }, newLoc: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Return the coordinates of the top-left corner of this bubble's body - * relative to the drawing surface's origin (0,0), in workspace units. - * @return {!Coordinate} Object with .x and .y properties. - */ - getRelativeToSurfaceXY(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Set whether auto-layout of this bubble is enabled. The first time a bubble - * is shown it positions itself to not cover any blocks. Once a user has - * dragged it to reposition, it renders where the user put it. - * @param {boolean} enable True if auto-layout should be enabled, false - * otherwise. - * @package - */ - setAutoLayout(enable: boolean): void; - }; - /** - * Width of the border around the bubble. - */ - BORDER_WIDTH: number; - /** - * Determines the thickness of the base of the arrow in relation to the size - * of the bubble. Higher numbers result in thinner arrows. - */ - ARROW_THICKNESS: number; - /** - * The number of degrees that the arrow bends counter-clockwise. - */ - ARROW_ANGLE: number; - /** - * The sharpness of the arrow's bend. Higher numbers result in smoother arrows. - */ - ARROW_BEND: number; - /** - * Distance between arrow point and anchor point. - */ - ANCHOR_RADIUS: number; - /** - * Mouse up event data. - * @type {?browserEvents.Data} - * @private - */ - onMouseUpWrapper_: any[][] | null; - /** - * Mouse move event data. - * @type {?browserEvents.Data} - * @private - */ - onMouseMoveWrapper_: any[][] | null; - }; - import { WorkspaceSvg } from "core/workspace_svg"; - import { MetricsManager } from "core/metrics_manager"; - import { BlockSvg } from "core/block_svg"; -} -declare module "core/constants" { - /** - * The language-neutral ID given to the collapsed input. - * @const {string} - * @alias Blockly.constants.COLLAPSED_INPUT_NAME - */ - export const COLLAPSED_INPUT_NAME: "_TEMP_COLLAPSED_INPUT"; - /** - * The language-neutral ID given to the collapsed field. - * @const {string} - * @alias Blockly.constants.COLLAPSED_FIELD_NAME - */ - export const COLLAPSED_FIELD_NAME: "_TEMP_COLLAPSED_FIELD"; -} -declare module "core/bubble_dragger" { - /** - * Class for a bubble dragger. It moves things on the bubble canvas around the - * workspace when they are being dragged by a mouse or touch. These can be - * block comments, mutators, warnings, or workspace comments. - * @alias Blockly.BubbleDragger - */ - export const BubbleDragger: { - new (bubble: () => void, workspace: WorkspaceSvg): { - /** - * The item on the bubble canvas that is being dragged. - * @type {!IBubble} - * @private - */ - draggingBubble_: () => void; - /** - * The workspace on which the bubble is being dragged. - * @type {!WorkspaceSvg} - * @private - */ - workspace_: WorkspaceSvg; - /** - * Which drag target the mouse pointer is over, if any. - * @type {?IDragTarget} - * @private - */ - dragTarget_: (() => void) | null; - /** - * Whether the bubble would be deleted if dropped immediately. - * @type {boolean} - * @private - */ - wouldDeleteBubble_: boolean; - /** - * The location of the top left corner of the dragging bubble's body at the - * beginning of the drag, in workspace coordinates. - * @type {!Coordinate} - * @private - */ - startXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * The drag surface to move bubbles to during a drag, or null if none should - * be used. Block dragging and bubble dragging use the same surface. - * @type {BlockDragSurfaceSvg} - * @private - */ - dragSurface_: { - SVG_: SVGElement | null; - dragGroup_: SVGElement | null; - container_: Element; - scale_: number; - surfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - } | null; - childSurfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - createDom(): void; - setBlocksAndShow(blocks: SVGElement): void; - translateAndScaleGroup(x: number, y: number, scale: number): void; - translateSurfaceInternal_(): void; - translateBy(deltaX: number, deltaY: number): void; - translateSurface(x: number, y: number): void; - getSurfaceTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - getGroup(): SVGElement | null; - getSvgRoot(): SVGElement | null; - getCurrentBlock(): Element | null; - getWsTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - clearAndHide(opt_newSurface?: Element | undefined): void; - }; - /** - * Sever all links from this object. - * @package - * @suppress {checkTypes} - */ - dispose(): void; - /** - * Start dragging a bubble. This includes moving it to the drag surface. - * @package - */ - startBubbleDrag(): void; - /** - * Execute a step of bubble dragging, based on the given event. Update the - * display accordingly. - * @param {!Event} e The most recent move event. - * @param {!Coordinate} currentDragDeltaXY How far the pointer has - * moved from the position at the start of the drag, in pixel units. - * @package - */ - dragBubble(e: Event, currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Whether ending the drag would delete the bubble. - * @param {?IDragTarget} dragTarget The drag target that the bubblee is - * currently over. - * @return {boolean} Whether dropping the bubble immediately would delete the - * block. - * @private - */ - shouldDelete_(dragTarget: (() => void) | null): boolean; - /** - * Update the cursor (and possibly the trash can lid) to reflect whether the - * dragging bubble would be deleted if released immediately. - * @private - */ - updateCursorDuringBubbleDrag_(): void; - /** - * Finish a bubble drag and put the bubble back on the workspace. - * @param {!Event} e The mouseup/touchend event. - * @param {!Coordinate} currentDragDeltaXY How far the pointer has - * moved from the position at the start of the drag, in pixel units. - * @package - */ - endBubbleDrag(e: Event, currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Fire a move event at the end of a bubble drag. - * @private - */ - fireMoveEvent_(): void; - /** - * Convert a coordinate object from pixels to workspace units, including a - * correction for mutator workspaces. - * This function does not consider differing origins. It simply scales the - * input's x and y values. - * @param {!Coordinate} pixelCoord A coordinate with x and y - * values in CSS pixel units. - * @return {!Coordinate} The input coordinate divided by the - * workspace scale. - * @private - */ - pixelsToWorkspaceUnits_(pixelCoord: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Move the bubble onto the drag surface at the beginning of a drag. Move the - * drag surface to preserve the apparent location of the bubble. - * @private - */ - moveToDragSurface_(): void; - }; - }; - import { WorkspaceSvg } from "core/workspace_svg"; -} -declare module "core/config" { - /** - * Object holding all the values on Blockly that we expect developers to be - * able to change. - * @type {Config} - */ - export const config: Config; - /** - * All the values that we expect developers to be able to change - * before injecting Blockly. - */ - type Config = { - dragRadius: number; - flyoutDragRadius: number; - snapRadius: number; - currentConnectionPreference: number; - bumpDelay: number; - connectingSnapRadius: number; - }; - /** - * All the values that we expect developers to be able to change - * before injecting Blockly. - * @typedef {{ - * dragRadius: number, - * flyoutDragRadius: number, - * snapRadius: number, - * currentConnectionPreference: number, - * bumpDelay: number, - * connectingSnapRadius: number - * }} - */ - let Config: any; - export {}; -} -declare module "core/interfaces/i_block_dragger" { - /** - * A block dragger interface. - * @interface - * @alias Blockly.IBlockDragger - */ - export function IBlockDragger(): void; -} -declare module "core/workspace_dragger" { - /** - * Class for a workspace dragger. It moves the workspace around when it is - * being dragged by a mouse or touch. - * Note that the workspace itself manages whether or not it has a drag surface - * and how to do translations based on that. This simply passes the right - * commands based on events. - * @alias Blockly.WorkspaceDragger - */ - export class WorkspaceDragger { - /** - * @param {!WorkspaceSvg} workspace The workspace to drag. - */ - constructor(workspace: WorkspaceSvg); - /** - * @type {!WorkspaceSvg} - * @private - */ - private workspace_; - /** - * Whether horizontal scroll is enabled. - * @type {boolean} - * @private - */ - private horizontalScrollEnabled_; - /** - * Whether vertical scroll is enabled. - * @type {boolean} - * @private - */ - private verticalScrollEnabled_; - /** - * The scroll position of the workspace at the beginning of the drag. - * Coordinate system: pixel coordinates. - * @type {!Coordinate} - * @protected - */ - protected startScrollXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Sever all links from this object. - * @package - * @suppress {checkTypes} - */ - dispose(): void; - /** - * Start dragging the workspace. - * @package - */ - startDrag(): void; - /** - * Finish dragging the workspace and put everything back where it belongs. - * @param {!Coordinate} currentDragDeltaXY How far the pointer has - * moved from the position at the start of the drag, in pixel coordinates. - * @package - */ - endDrag(currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Move the workspace based on the most recent mouse movements. - * @param {!Coordinate} currentDragDeltaXY How far the pointer has - * moved from the position at the start of the drag, in pixel coordinates. - * @package - */ - drag(currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - } - import { WorkspaceSvg } from "core/workspace_svg"; -} -declare module "core/events/events_viewport" { - /** - * Class for a viewport change event. - * @extends {UiBase} - * @alias Blockly.Events.ViewportChange - */ - export class ViewportChange extends UiBase { - /** - * @param {number=} opt_top Top-edge of the visible portion of the workspace, - * relative to the workspace origin. Undefined for a blank event. - * @param {number=} opt_left Left-edge of the visible portion of the - * workspace relative to the workspace origin. Undefined for a blank - * event. - * @param {number=} opt_scale The scale of the workspace. Undefined for a - * blank event. - * @param {string=} opt_workspaceId The workspace identifier for this event. - * Undefined for a blank event. - * @param {number=} opt_oldScale The old scale of the workspace. Undefined for - * a blank event. - */ - constructor(opt_top?: number | undefined, opt_left?: number | undefined, opt_scale?: number | undefined, opt_workspaceId?: string | undefined, opt_oldScale?: number | undefined); - /** - * Top-edge of the visible portion of the workspace, relative to the - * workspace origin. - * @type {number|undefined} - */ - viewTop: number | undefined; - /** - * Left-edge of the visible portion of the workspace, relative to the - * workspace origin. - * @type {number|undefined} - */ - viewLeft: number | undefined; - /** - * The scale of the workspace. - * @type {number|undefined} - */ - scale: number | undefined; - /** - * The old scale of the workspace. - * @type {number|undefined} - */ - oldScale: number | undefined; - } - import { UiBase } from "core/events/events_ui_base"; -} -declare module "core/bump_objects" { - /** - * Bumps the given object that has passed out of bounds. - * @param {!WorkspaceSvg} workspace The workspace containing the object. - * @param {!MetricsManager.ContainerRegion} scrollMetrics Scroll metrics - * in workspace coordinates. - * @param {!IBoundedElement} object The object to bump. - * @return {boolean} True if block was bumped. - * @alias Blockly.bumpObjects.bumpIntoBounds - */ - function bumpObjectIntoBounds(workspace: WorkspaceSvg, scrollMetrics: MetricsManager.ContainerRegion, object: () => void): boolean; - /** - * Creates a handler for bumping objects when they cross fixed bounds. - * @param {!WorkspaceSvg} workspace The workspace to handle. - * @return {function(Abstract)} The event handler. - * @alias Blockly.bumpObjects.bumpIntoBoundsHandler - */ - export function bumpIntoBoundsHandler(workspace: WorkspaceSvg): (arg0: Abstract) => any; - /** - * Bumps the top objects in the given workspace into bounds. - * @param {!WorkspaceSvg} workspace The workspace. - * @alias Blockly.bumpObjects.bumpTopObjectsIntoBounds - */ - export function bumpTopObjectsIntoBounds(workspace: WorkspaceSvg): void; - import { WorkspaceSvg } from "core/workspace_svg"; - import { MetricsManager } from "core/metrics_manager"; - import { Abstract } from "core/events/events_abstract"; - export { bumpObjectIntoBounds as bumpIntoBounds }; -} -declare module "core/events/events_block_base" { - /** - * Abstract class for a block event. - * @extends {AbstractEvent} - * @alias Blockly.Events.BlockBase - */ - export class BlockBase extends AbstractEvent { - /** - * @param {!Block=} opt_block The block this event corresponds to. - * Undefined for a blank event. - */ - constructor(opt_block?: Block | undefined); - /** - * The block ID for the block this event pertains to - * @type {string} - */ - blockId: string; - } - import { Abstract as AbstractEvent } from "core/events/events_abstract"; - import { Block } from "core/block"; -} -declare module "core/events/events_block_move" { - /** - * Class for a block move event. Created before the move. - * @extends {BlockBase} - * @alias Blockly.Events.BlockMove - */ - export class BlockMove extends BlockBase { - oldParentId: any; - oldInputName: any; - oldCoordinate: any; - newParentId: any; - newInputName: any; - newCoordinate: any; - /** - * Record the block's new location. Called after the move. - */ - recordNew(): void; - /** - * Returns the parentId and input if the block is connected, - * or the XY location if disconnected. - * @return {!Object} Collection of location info. - * @private - */ - private currentLocation_; - } - import { BlockBase } from "core/events/events_block_base"; -} -declare module "core/utils/svg_paths" { - /** - * Create a string representing the given x, y pair. It does not matter whether - * the coordinate is relative or absolute. The result has leading - * and trailing spaces, and separates the x and y coordinates with a comma but - * no space. - * @param {number} x The x coordinate. - * @param {number} y The y coordinate. - * @return {string} A string of the format ' x,y ' - * @alias Blockly.utils.svgPaths.point - */ - export function point(x: number, y: number): string; - /** - * Draw a cubic or quadratic curve. See - * developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Cubic_B%C3%A9zier_Curve - * These coordinates are unitless and hence in the user coordinate system. - * @param {string} command The command to use. - * Should be one of: c, C, s, S, q, Q. - * @param {!Array} points An array containing all of the points to pass - * to the curve command, in order. The points are represented as strings of - * the format ' x, y '. - * @return {string} A string defining one or more Bezier curves. See the MDN - * documentation for exact format. - * @alias Blockly.utils.svgPaths.curve - */ - export function curve(command: string, points: Array): string; - /** - * Move the cursor to the given position without drawing a line. - * The coordinates are absolute. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands - * @param {number} x The absolute x coordinate. - * @param {number} y The absolute y coordinate. - * @return {string} A string of the format ' M x,y ' - * @alias Blockly.utils.svgPaths.moveTo - */ - export function moveTo(x: number, y: number): string; - /** - * Move the cursor to the given position without drawing a line. - * Coordinates are relative. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands - * @param {number} dx The relative x coordinate. - * @param {number} dy The relative y coordinate. - * @return {string} A string of the format ' m dx,dy ' - * @alias Blockly.utils.svgPaths.moveBy - */ - export function moveBy(dx: number, dy: number): string; - /** - * Draw a line from the current point to the end point, which is the current - * point shifted by dx along the x-axis and dy along the y-axis. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands - * @param {number} dx The relative x coordinate. - * @param {number} dy The relative y coordinate. - * @return {string} A string of the format ' l dx,dy ' - * @alias Blockly.utils.svgPaths.lineTo - */ - export function lineTo(dx: number, dy: number): string; - /** - * Draw multiple lines connecting all of the given points in order. This is - * equivalent to a series of 'l' commands. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands - * @param {!Array} points An array containing all of the points to - * draw lines to, in order. The points are represented as strings of the - * format ' dx,dy '. - * @return {string} A string of the format ' l (dx,dy)+ ' - * @alias Blockly.utils.svgPaths.line - */ - export function line(points: Array): string; - /** - * Draw a horizontal or vertical line. - * The first argument specifies the direction and whether the given position is - * relative or absolute. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#LineTo_path_commands - * @param {string} command The command to prepend to the coordinate. This - * should be one of: V, v, H, h. - * @param {number} val The coordinate to pass to the command. It may be - * absolute or relative. - * @return {string} A string of the format ' command val ' - * @alias Blockly.utils.svgPaths.lineOnAxis - */ - export function lineOnAxis(command: string, val: number): string; - /** - * Draw an elliptical arc curve. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Elliptical_Arc_Curve - * @param {string} command The command string. Either 'a' or 'A'. - * @param {string} flags The flag string. See the MDN documentation for a - * description and examples. - * @param {number} radius The radius of the arc to draw. - * @param {string} point The point to move the cursor to after drawing the arc, - * specified either in absolute or relative coordinates depending on the - * command. - * @return {string} A string of the format 'command radius radius flags point' - * @alias Blockly.utils.svgPaths.arc - */ - export function arc(command: string, flags: string, radius: number, point: string): string; -} -declare module "core/interfaces/i_connection_checker" { - /** - * Class for connection type checking logic. - * @interface - * @alias Blockly.IConnectionChecker - */ - export class IConnectionChecker {} -} -declare module "core/connection_db" { - /** - * Database of connections. - * Connections are stored in order of their vertical component. This way - * connections in an area may be looked up quickly using a binary search. - * @alias Blockly.ConnectionDB - */ - export class ConnectionDB { - /** - * Initialize a set of connection DBs for a workspace. - * @param {!IConnectionChecker} checker The workspace's - * connection checker, used to decide if connections are valid during a - * drag. - * @return {!Array} Array of databases. - */ - static init(checker: () => void): Array; - /** - * @param {!IConnectionChecker} checker The workspace's - * connection type checker, used to decide if connections are valid during - * a drag. - */ - constructor(checker: () => void); - /** - * Array of connections sorted by y position in workspace units. - * @type {!Array} - * @private - */ - private connections_; - /** - * The workspace's connection type checker, used to decide if connections - * are valid during a drag. - * @type {!IConnectionChecker} - * @private - */ - private connectionChecker_; - /** - * Add a connection to the database. Should not already exist in the database. - * @param {!RenderedConnection} connection The connection to be added. - * @param {number} yPos The y position used to decide where to insert the - * connection. - * @package - */ - addConnection(connection: RenderedConnection, yPos: number): void; - /** - * Finds the index of the given connection. - * - * Starts by doing a binary search to find the approximate location, then - * linearly searches nearby for the exact connection. - * @param {!RenderedConnection} conn The connection to find. - * @param {number} yPos The y position used to find the index of the - * connection. - * @return {number} The index of the connection, or -1 if the connection was - * not found. - * @private - */ - private findIndexOfConnection_; - /** - * Finds the correct index for the given y position. - * @param {number} yPos The y position used to decide where to - * insert the connection. - * @return {number} The candidate index. - * @private - */ - private calculateIndexForYPos_; - /** - * Remove a connection from the database. Must already exist in DB. - * @param {!RenderedConnection} connection The connection to be removed. - * @param {number} yPos The y position used to find the index of the - * connection. - * @throws {Error} If the connection cannot be found in the database. - */ - removeConnection(connection: RenderedConnection, yPos: number): void; - /** - * Find all nearby connections to the given connection. - * Type checking does not apply, since this function is used for bumping. - * @param {!RenderedConnection} connection The connection whose - * neighbours should be returned. - * @param {number} maxRadius The maximum radius to another connection. - * @return {!Array} List of connections. - */ - getNeighbours(connection: RenderedConnection, maxRadius: number): Array; - /** - * Is the candidate connection close to the reference connection. - * Extremely fast; only looks at Y distance. - * @param {number} index Index in database of candidate connection. - * @param {number} baseY Reference connection's Y value. - * @param {number} maxRadius The maximum radius to another connection. - * @return {boolean} True if connection is in range. - * @private - */ - private isInYRange_; - /** - * Find the closest compatible connection to this connection. - * @param {!RenderedConnection} conn The connection searching for a compatible - * mate. - * @param {number} maxRadius The maximum radius to another connection. - * @param {!Coordinate} dxy Offset between this connection's - * location in the database and the current location (as a result of - * dragging). - * @return {!{connection: RenderedConnection, radius: number}} - * Contains two properties: 'connection' which is either another - * connection or null, and 'radius' which is the distance. - */ - searchForClosest(conn: RenderedConnection, maxRadius: number, dxy: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): { - connection: RenderedConnection; - radius: number; - }; - } - import { RenderedConnection } from "core/rendered_connection"; -} -declare module "core/rendered_connection" { - /** - * Class for a connection between blocks that may be rendered on screen. - * @extends {Connection} - * @alias Blockly.RenderedConnection - */ - export class RenderedConnection extends Connection { - /** - * @param {!BlockSvg} source The block establishing this connection. - * @param {number} type The type of the connection. - */ - constructor(source: BlockSvg, type: number); - /** - * Connection database for connections of this type on the current - * workspace. - * @const {!ConnectionDB} - * @private - */ - private db_; - /** - * Connection database for connections compatible with this type on the - * current workspace. - * @const {!ConnectionDB} - * @private - */ - private dbOpposite_; - /** - * Workspace units, (0, 0) is top left of block. - * @type {!Coordinate} - * @private - */ - private offsetInBlock_; - /** - * Describes the state of this connection's tracked-ness. - * @type {RenderedConnection.TrackedState} - * @private - */ - private trackedState_; - /** - * Returns the distance between this connection and another connection in - * workspace units. - * @param {!Connection} otherConnection The other connection to measure - * the distance to. - * @return {number} The distance between connections, in workspace units. - */ - distanceFrom(otherConnection: Connection): number; - /** - * Move the block(s) belonging to the connection to a point where they don't - * visually interfere with the specified connection. - * @param {!RenderedConnection} staticConnection The connection to move away - * from. - * @package - */ - bumpAwayFrom(staticConnection: RenderedConnection): void; - /** - * Change the connection's coordinates. - * @param {number} x New absolute x coordinate, in workspace coordinates. - * @param {number} y New absolute y coordinate, in workspace coordinates. - */ - moveTo(x: number, y: number): void; - /** - * Change the connection's coordinates. - * @param {number} dx Change to x coordinate, in workspace units. - * @param {number} dy Change to y coordinate, in workspace units. - */ - moveBy(dx: number, dy: number): void; - /** - * Move this connection to the location given by its offset within the block - * and the location of the block's top left corner. - * @param {!Coordinate} blockTL The location of the top left - * corner of the block, in workspace coordinates. - */ - moveToOffset(blockTL: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Set the offset of this connection relative to the top left of its block. - * @param {number} x The new relative x, in workspace units. - * @param {number} y The new relative y, in workspace units. - */ - setOffsetInBlock(x: number, y: number): void; - /** - * Get the offset of this connection relative to the top left of its block. - * @return {!Coordinate} The offset of the connection. - * @package - */ - getOffsetInBlock(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Move the blocks on either side of this connection right next to each other. - * @package - */ - tighten(): void; - /** - * Find the closest compatible connection to this connection. - * All parameters are in workspace units. - * @param {number} maxLimit The maximum radius to another connection. - * @param {!Coordinate} dxy Offset between this connection's location - * in the database and the current location (as a result of dragging). - * @return {!{connection: ?Connection, radius: number}} Contains two - * properties: 'connection' which is either another connection or null, - * and 'radius' which is the distance. - */ - closest(maxLimit: number, dxy: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): { - connection: Connection | null; - radius: number; - }; - /** - * Add highlighting around this connection. - */ - highlight(): void; - /** - * Remove the highlighting around this connection. - */ - unhighlight(): void; - /** - * Set whether this connections is tracked in the database or not. - * @param {boolean} doTracking If true, start tracking. If false, stop - * tracking. - * @package - */ - setTracking(doTracking: boolean): void; - /** - * Stop tracking this connection, as well as all down-stream connections on - * any block attached to this connection. This happens when a block is - * collapsed. - * - * Also closes down-stream icons/bubbles. - * @package - */ - stopTrackingAll(): void; - /** - * Start tracking this connection, as well as all down-stream connections on - * any block attached to this connection. This happens when a block is - * expanded. - * @return {!Array} List of blocks to render. - */ - startTrackingAll(): Array; - } - export namespace RenderedConnection { - namespace TrackedState { - const WILL_TRACK: number; - const UNTRACKED: number; - const TRACKED: number; - } - /** - * Enum for different kinds of tracked states. - * - * WILL_TRACK means that this connection will add itself to - * the db on the next moveTo call it receives. - * - * UNTRACKED means that this connection will not add - * itself to the database until setTracking(true) is explicitly called. - * - * TRACKED means that this connection is currently being tracked. - */ - type TrackedState = number; - } - import { Connection } from "core/connection"; - import { Block } from "core/block"; - import { BlockSvg } from "core/block_svg"; -} -declare module "core/insertion_marker_manager" { - /** - * Class that controls updates to connections during drags. It is primarily - * responsible for finding the closest eligible connection and highlighting or - * unhighlighting it as needed during a drag. - * @alias Blockly.InsertionMarkerManager - */ - export class InsertionMarkerManager { - /** - * @param {!BlockSvg} block The top block in the stack being dragged. - */ - constructor(block: BlockSvg); - /** - * The top block in the stack being dragged. - * Does not change during a drag. - * @type {!BlockSvg} - * @private - */ - private topBlock_; - /** - * The workspace on which these connections are being dragged. - * Does not change during a drag. - * @type {!WorkspaceSvg} - * @private - */ - private workspace_; - /** - * The last connection on the stack, if it's not the last connection on the - * first block. - * Set in initAvailableConnections, if at all. - * @type {RenderedConnection} - * @private - */ - private lastOnStack_; - /** - * The insertion marker corresponding to the last block in the stack, if - * that's not the same as the first block in the stack. - * Set in initAvailableConnections, if at all - * @type {BlockSvg} - * @private - */ - private lastMarker_; - /** - * The insertion marker that shows up between blocks to show where a block - * would go if dropped immediately. - * @type {BlockSvg} - * @private - */ - private firstMarker_; - /** - * The connection that this block would connect to if released immediately. - * Updated on every mouse move. - * This is not on any of the blocks that are being dragged. - * @type {RenderedConnection} - * @private - */ - private closestConnection_; - /** - * The connection that would connect to this.closestConnection_ if this - * block were released immediately. Updated on every mouse move. This is on - * the top block that is being dragged or the last block in the dragging - * stack. - * @type {RenderedConnection} - * @private - */ - private localConnection_; - /** - * Whether the block would be deleted if it were dropped immediately. - * Updated on every mouse move. - * @type {boolean} - * @private - */ - private wouldDeleteBlock_; - /** - * Connection on the insertion marker block that corresponds to - * this.localConnection_ on the currently dragged block. - * @type {RenderedConnection} - * @private - */ - private markerConnection_; - /** - * The block that currently has an input being highlighted, or null. - * @type {BlockSvg} - * @private - */ - private highlightedBlock_; - /** - * The block being faded to indicate replacement, or null. - * @type {BlockSvg} - * @private - */ - private fadedBlock_; - /** - * The connections on the dragging blocks that are available to connect to - * other blocks. This includes all open connections on the top block, as - * well as the last connection on the block stack. Does not change during a - * drag. - * @type {!Array} - * @private - */ - private availableConnections_; - /** - * Sever all links from this object. - * @package - */ - dispose(): void; - /** - * Update the available connections for the top block. These connections can - * change if a block is unplugged and the stack is healed. - * @package - */ - updateAvailableConnections(): void; - /** - * Return whether the block would be deleted if dropped immediately, based on - * information from the most recent move event. - * @return {boolean} True if the block would be deleted if dropped - * immediately. - * @package - */ - wouldDeleteBlock(): boolean; - /** - * Return whether the block would be connected if dropped immediately, based - * on information from the most recent move event. - * @return {boolean} True if the block would be connected if dropped - * immediately. - * @package - */ - wouldConnectBlock(): boolean; - /** - * Connect to the closest connection and render the results. - * This should be called at the end of a drag. - * @package - */ - applyConnections(): void; - /** - * Update connections based on the most recent move location. - * @param {!Coordinate} dxy Position relative to drag start, - * in workspace units. - * @param {?IDragTarget} dragTarget The drag target that the block is - * currently over. - * @package - */ - update(dxy: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }, dragTarget: (() => void) | null): void; - /** - * Create an insertion marker that represents the given block. - * @param {!BlockSvg} sourceBlock The block that the insertion marker - * will represent. - * @return {!BlockSvg} The insertion marker that represents the given - * block. - * @private - */ - private createMarkerBlock_; - /** - * Populate the list of available connections on this block stack. This - * should only be called once, at the beginning of a drag. If the stack has - * more than one block, this function will populate lastOnStack_ and create - * the corresponding insertion marker. - * @return {!Array} A list of available - * connections. - * @private - */ - private initAvailableConnections_; - /** - * Whether the previews (insertion marker and replacement marker) should be - * updated based on the closest candidate and the current drag distance. - * @param {!Object} candidate An object containing a local connection, a - * closest connection, and a radius. Returned by getCandidate_. - * @param {!Coordinate} dxy Position relative to drag start, - * in workspace units. - * @return {boolean} Whether the preview should be updated. - * @private - */ - private shouldUpdatePreviews_; - /** - * Find the nearest valid connection, which may be the same as the current - * closest connection. - * @param {!Coordinate} dxy Position relative to drag start, - * in workspace units. - * @return {!Object} An object containing a local connection, a closest - * connection, and a radius. - * @private - */ - private getCandidate_; - /** - * Decide the radius at which to start searching for the closest connection. - * @return {number} The radius at which to start the search for the closest - * connection. - * @private - */ - private getStartRadius_; - /** - * Whether ending the drag would delete the block. - * @param {!Object} candidate An object containing a local connection, a - * closest - * connection, and a radius. - * @param {?IDragTarget} dragTarget The drag target that the block is - * currently over. - * @return {boolean} Whether dropping the block immediately would delete the - * block. - * @private - */ - private shouldDelete_; - /** - * Show an insertion marker or replacement highlighting during a drag, if - * needed. - * At the beginning of this function, this.localConnection_ and - * this.closestConnection_ should both be null. - * @param {!Object} candidate An object containing a local connection, a - * closest connection, and a radius. - * @private - */ - private maybeShowPreview_; - /** - * A preview should be shown. This function figures out if it should be a - * block highlight or an insertion marker, and shows the appropriate one. - * @private - */ - private showPreview_; - /** - * Show an insertion marker or replacement highlighting during a drag, if - * needed. - * At the end of this function, this.localConnection_ and - * this.closestConnection_ should both be null. - * @param {!Object} candidate An object containing a local connection, a - * closest connection, and a radius. - * @private - */ - private maybeHidePreview_; - /** - * A preview should be hidden. This function figures out if it is a block - * highlight or an insertion marker, and hides the appropriate one. - * @private - */ - private hidePreview_; - /** - * Shows an insertion marker connected to the appropriate blocks (based on - * manager state). - * @private - */ - private showInsertionMarker_; - /** - * Disconnects and hides the current insertion marker. Should return the - * blocks to their original state. - * @private - */ - private hideInsertionMarker_; - /** - * Shows an outline around the input the closest connection belongs to. - * @private - */ - private showInsertionInputOutline_; - /** - * Hides any visible input outlines. - * @private - */ - private hideInsertionInputOutline_; - /** - * Shows a replacement fade affect on the closest connection's target block - * (the block that is currently connected to it). - * @private - */ - private showReplacementFade_; - /** - * Hides/Removes any visible fade affects. - * @private - */ - private hideReplacementFade_; - /** - * Get a list of the insertion markers that currently exist. Drags have 0, 1, - * or 2 insertion markers. - * @return {!Array} A possibly empty list of insertion - * marker blocks. - * @package - */ - getInsertionMarkers(): Array; - } - export namespace InsertionMarkerManager { - namespace PREVIEW_TYPE { - const INSERTION_MARKER: number; - const INPUT_OUTLINE: number; - const REPLACEMENT_FADE: number; - } - /** - * An enum describing different kinds of previews the InsertionMarkerManager - * could display. - */ - type PREVIEW_TYPE = number; - } - import { BlockSvg } from "core/block_svg"; -} -declare module "core/events/events_block_drag" { - /** - * Class for a block drag event. - * @extends {UiBase} - * @alias Blockly.Events.BlockDrag - */ - export class BlockDrag extends UiBase { - /** - * @param {!Block=} opt_block The top block in the stack that is being - * dragged. Undefined for a blank event. - * @param {boolean=} opt_isStart Whether this is the start of a block drag. - * Undefined for a blank event. - * @param {!Array=} opt_blocks The blocks affected by this - * drag. Undefined for a blank event. - */ - constructor(opt_block?: Block | undefined, opt_isStart?: boolean | undefined, opt_blocks?: Array | undefined); - blockId: string | null; - /** - * Whether this is the start of a block drag. - * @type {boolean|undefined} - */ - isStart: boolean | undefined; - /** - * The blocks affected by this drag event. - * @type {!Array|undefined} - */ - blocks: Array | undefined; - } - import { UiBase } from "core/events/events_ui_base"; - import { Block } from "core/block"; -} -declare module "core/block_dragger" { - /** - * Class for a block dragger. It moves blocks around the workspace when they - * are being dragged by a mouse or touch. - * @implements {IBlockDragger} - * @alias Blockly.BlockDragger - */ - export const BlockDragger: { - new (block: BlockSvg, workspace: WorkspaceSvg): { - /** - * The top block in the stack that is being dragged. - * @type {!BlockSvg} - * @protected - */ - draggingBlock_: BlockSvg; - /** - * The workspace on which the block is being dragged. - * @type {!WorkspaceSvg} - * @protected - */ - workspace_: WorkspaceSvg; - /** - * Object that keeps track of connections on dragged blocks. - * @type {!InsertionMarkerManager} - * @protected - */ - draggedConnectionManager_: InsertionMarkerManager; - /** - * Which drag area the mouse pointer is over, if any. - * @type {?IDragTarget} - * @private - */ - dragTarget_: (() => void) | null; - /** - * Whether the block would be deleted if dropped immediately. - * @type {boolean} - * @protected - */ - wouldDeleteBlock_: boolean; - /** - * The location of the top left corner of the dragging block at the - * beginning of the drag in workspace coordinates. - * @type {!Coordinate} - * @protected - */ - startXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * A list of all of the icons (comment, warning, and mutator) that are - * on this block and its descendants. Moving an icon moves the bubble that - * extends from it if that bubble is open. - * @type {Array} - * @protected - */ - dragIconData_: Array; - /** - * Sever all links from this object. - * @package - */ - dispose(): void; - /** - * Start dragging a block. This includes moving it to the drag surface. - * @param {!Coordinate} currentDragDeltaXY How far the pointer has - * moved from the position at mouse down, in pixel units. - * @param {boolean} healStack Whether or not to heal the stack after - * disconnecting. - * @public - */ - startDrag(currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }, healStack: boolean): void; - /** - * Whether or not we should disconnect the block when a drag is started. - * @param {boolean} healStack Whether or not to heal the stack after - * disconnecting. - * @return {boolean} True to disconnect the block, false otherwise. - * @protected - */ - shouldDisconnect_(healStack: boolean): boolean; - /** - * Disconnects the block and moves it to a new location. - * @param {boolean} healStack Whether or not to heal the stack after - * disconnecting. - * @param {!Coordinate} currentDragDeltaXY How far the pointer has - * moved from the position at mouse down, in pixel units. - * @protected - */ - disconnectBlock_(healStack: boolean, currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Fire a UI event at the start of a block drag. - * @protected - */ - fireDragStartEvent_(): void; - /** - * Execute a step of block dragging, based on the given event. Update the - * display accordingly. - * @param {!Event} e The most recent move event. - * @param {!Coordinate} currentDragDeltaXY How far the pointer has - * moved from the position at the start of the drag, in pixel units. - * @public - */ - drag(e: Event, currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Finish a block drag and put the block back on the workspace. - * @param {!Event} e The mouseup/touchend event. - * @param {!Coordinate} currentDragDeltaXY How far the pointer has - * moved from the position at the start of the drag, in pixel units. - * @public - */ - endDrag(e: Event, currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Calculates the drag delta and new location values after a block is dragged. - * @param {!Coordinate} currentDragDeltaXY How far the pointer has - * moved from the start of the drag, in pixel units. - * @return {{delta: !Coordinate, newLocation: - * !Coordinate}} New location after drag. delta is in - * workspace units. newLocation is the new coordinate where the block - * should end up. - * @protected - */ - getNewLocationAfterDrag_(currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): { - delta: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - newLocation: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - }; - /** - * May delete the dragging block, if allowed. If `this.wouldDeleteBlock_` is - * not true, the block will not be deleted. This should be called at the end - * of a block drag. - * @return {boolean} True if the block was deleted. - * @protected - */ - maybeDeleteBlock_(): boolean; - /** - * Updates the necessary information to place a block at a certain location. - * @param {!Coordinate} delta The change in location from where - * the block started the drag to where it ended the drag. - * @protected - */ - updateBlockAfterMove_(delta: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Fire a UI event at the end of a block drag. - * @protected - */ - fireDragEndEvent_(): void; - /** - * Adds or removes the style of the cursor for the toolbox. - * This is what changes the cursor to display an x when a deletable block is - * held over the toolbox. - * @param {boolean} isEnd True if we are at the end of a drag, false - * otherwise. - * @protected - */ - updateToolboxStyle_(isEnd: boolean): void; - /** - * Fire a move event at the end of a block drag. - * @protected - */ - fireMoveEvent_(): void; - /** - * Update the cursor (and possibly the trash can lid) to reflect whether the - * dragging block would be deleted if released immediately. - * @protected - */ - updateCursorDuringBlockDrag_(): void; - /** - * Convert a coordinate object from pixels to workspace units, including a - * correction for mutator workspaces. - * This function does not consider differing origins. It simply scales the - * input's x and y values. - * @param {!Coordinate} pixelCoord A coordinate with x and y - * values in CSS pixel units. - * @return {!Coordinate} The input coordinate divided by the - * workspace scale. - * @protected - */ - pixelsToWorkspaceUnits_(pixelCoord: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - /** - * Move all of the icons connected to this drag. - * @param {!Coordinate} dxy How far to move the icons from their - * original positions, in workspace units. - * @protected - */ - dragIcons_(dxy: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - /** - * Get a list of the insertion markers that currently exist. Drags have 0, 1, - * or 2 insertion markers. - * @return {!Array} A possibly empty list of insertion - * marker blocks. - * @public - */ - getInsertionMarkers(): Array; - }; - }; - import { BlockSvg } from "core/block_svg"; - import { WorkspaceSvg } from "core/workspace_svg"; - import { InsertionMarkerManager } from "core/insertion_marker_manager"; -} -declare module "core/events/events_click" { - /** - * Class for a click event. - * @extends {UiBase} - * @alias Blockly.Events.Click - */ - export class Click extends UiBase { - /** - * @param {?Block=} opt_block The affected block. Null for click events - * that do not have an associated block (i.e. workspace click). Undefined - * for a blank event. - * @param {?string=} opt_workspaceId The workspace identifier for this event. - * Not used if block is passed. Undefined for a blank event. - * @param {string=} opt_targetType The type of element targeted by this click - * event. Undefined for a blank event. - */ - constructor(opt_block?: (Block | null) | undefined, opt_workspaceId?: (string | null) | undefined, opt_targetType?: string | undefined); - blockId: string | null; - /** - * The type of element targeted by this click event. - * @type {string|undefined} - */ - targetType: string | undefined; - } - import { UiBase } from "core/events/events_ui_base"; - import { Block } from "core/block"; -} -declare module "core/gesture" { - /** - * Note: In this file "start" refers to touchstart, mousedown, and pointerstart - * events. "End" refers to touchend, mouseup, and pointerend events. - */ - /** - * Class for one gesture. - * @alias Blockly.Gesture - */ - export class Gesture { - /** - * Is a drag or other gesture currently in progress on any workspace? - * @return {boolean} True if gesture is occurring. - */ - static inProgress(): boolean; - /** - * @param {!Event} e The event that kicked off this gesture. - * @param {!WorkspaceSvg} creatorWorkspace The workspace that created - * this gesture and has a reference to it. - */ - constructor(e: Event, creatorWorkspace: WorkspaceSvg); - /** - * The position of the mouse when the gesture started. Units are CSS - * pixels, with (0, 0) at the top left of the browser window (mouseEvent - * clientX/Y). - * @type {Coordinate} - * @private - */ - private mouseDownXY_; - /** - * How far the mouse has moved during this drag, in pixel units. - * (0, 0) is at this.mouseDownXY_. - * @type {!Coordinate} - * @private - */ - private currentDragDeltaXY_; - /** - * The bubble that the gesture started on, or null if it did not start on a - * bubble. - * @type {IBubble} - * @private - */ - private startBubble_; - /** - * The field that the gesture started on, or null if it did not start on a - * field. - * @type {Field} - * @private - */ - private startField_; - /** - * The block that the gesture started on, or null if it did not start on a - * block. - * @type {BlockSvg} - * @private - */ - private startBlock_; - /** - * The block that this gesture targets. If the gesture started on a - * shadow block, this is the first non-shadow parent of the block. If the - * gesture started in the flyout, this is the root block of the block group - * that was clicked or dragged. - * @type {BlockSvg} - * @private - */ - private targetBlock_; - /** - * The workspace that the gesture started on. There may be multiple - * workspaces on a page; this is more accurate than using - * Blockly.common.getMainWorkspace(). - * @type {WorkspaceSvg} - * @protected - */ - protected startWorkspace_: WorkspaceSvg; - /** - * The workspace that created this gesture. This workspace keeps a - * reference to the gesture, which will need to be cleared at deletion. This - * may be different from the start workspace. For instance, a flyout is a - * workspace, but its parent workspace manages gestures for it. - * @type {!WorkspaceSvg} - * @private - */ - private creatorWorkspace_; - /** - * Whether the pointer has at any point moved out of the drag radius. - * A gesture that exceeds the drag radius is a drag even if it ends exactly - * at its start point. - * @type {boolean} - * @private - */ - private hasExceededDragRadius_; - /** - * Whether the workspace is currently being dragged. - * @type {boolean} - * @private - */ - private isDraggingWorkspace_; - /** - * Whether the block is currently being dragged. - * @type {boolean} - * @private - */ - private isDraggingBlock_; - /** - * Whether the bubble is currently being dragged. - * @type {boolean} - * @private - */ - private isDraggingBubble_; - /** - * The event that most recently updated this gesture. - * @type {!Event} - * @private - */ - private mostRecentEvent_; - /** - * A handle to use to unbind a mouse move listener at the end of a drag. - * Opaque data returned from Blockly.bindEventWithChecks_. - * @type {?browserEvents.Data} - * @protected - */ - protected onMoveWrapper_: any[][] | null; - /** - * A handle to use to unbind a mouse up listener at the end of a drag. - * Opaque data returned from Blockly.bindEventWithChecks_. - * @type {?browserEvents.Data} - * @protected - */ - protected onUpWrapper_: any[][] | null; - /** - * The object tracking a bubble drag, or null if none is in progress. - * @type {BubbleDragger} - * @private - */ - private bubbleDragger_; - /** - * The object tracking a block drag, or null if none is in progress. - * @type {?IBlockDragger} - * @private - */ - private blockDragger_; - /** - * The object tracking a workspace or flyout workspace drag, or null if none - * is in progress. - * @type {WorkspaceDragger} - * @private - */ - private workspaceDragger_; - /** - * The flyout a gesture started in, if any. - * @type {IFlyout} - * @private - */ - private flyout_; - /** - * Boolean for sanity-checking that some code is only called once. - * @type {boolean} - * @private - */ - private calledUpdateIsDragging_; - /** - * Boolean for sanity-checking that some code is only called once. - * @type {boolean} - * @private - */ - private hasStarted_; - /** - * Boolean used internally to break a cycle in disposal. - * @type {boolean} - * @protected - */ - protected isEnding_: boolean; - /** - * Boolean used to indicate whether or not to heal the stack after - * disconnecting a block. - * @type {boolean} - * @private - */ - private healStack_; - /** - * Sever all links from this object. - * @package - */ - dispose(): void; - /** - * Update internal state based on an event. - * @param {!Event} e The most recent mouse or touch event. - * @private - */ - private updateFromEvent_; - /** - * DO MATH to set currentDragDeltaXY_ based on the most recent mouse position. - * @param {!Coordinate} currentXY The most recent mouse/pointer - * position, in pixel units, with (0, 0) at the window's top left corner. - * @return {boolean} True if the drag just exceeded the drag radius for the - * first time. - * @private - */ - private updateDragDelta_; - /** - * Update this gesture to record whether a block is being dragged from the - * flyout. - * This function should be called on a mouse/touch move event the first time - * the drag radius is exceeded. It should be called no more than once per - * gesture. If a block should be dragged from the flyout this function creates - * the new block on the main workspace and updates targetBlock_ and - * startWorkspace_. - * @return {boolean} True if a block is being dragged from the flyout. - * @private - */ - private updateIsDraggingFromFlyout_; - /** - * Update this gesture to record whether a bubble is being dragged. - * This function should be called on a mouse/touch move event the first time - * the drag radius is exceeded. It should be called no more than once per - * gesture. If a bubble should be dragged this function creates the necessary - * BubbleDragger and starts the drag. - * @return {boolean} True if a bubble is being dragged. - * @private - */ - private updateIsDraggingBubble_; - /** - * Update this gesture to record whether a block is being dragged. - * This function should be called on a mouse/touch move event the first time - * the drag radius is exceeded. It should be called no more than once per - * gesture. If a block should be dragged, either from the flyout or in the - * workspace, this function creates the necessary BlockDragger and starts the - * drag. - * @return {boolean} True if a block is being dragged. - * @private - */ - private updateIsDraggingBlock_; - /** - * Update this gesture to record whether a workspace is being dragged. - * This function should be called on a mouse/touch move event the first time - * the drag radius is exceeded. It should be called no more than once per - * gesture. If a workspace is being dragged this function creates the - * necessary WorkspaceDragger and starts the drag. - * @private - */ - private updateIsDraggingWorkspace_; - /** - * Update this gesture to record whether anything is being dragged. - * This function should be called on a mouse/touch move event the first time - * the drag radius is exceeded. It should be called no more than once per - * gesture. - * @private - */ - private updateIsDragging_; - /** - * Create a block dragger and start dragging the selected block. - * @private - */ - private startDraggingBlock_; - /** - * Create a bubble dragger and start dragging the selected bubble. - * @private - */ - private startDraggingBubble_; - /** - * Start a gesture: update the workspace to indicate that a gesture is in - * progress and bind mousemove and mouseup handlers. - * @param {!Event} e A mouse down or touch start event. - * @package - */ - doStart(e: Event): void; - /** - * Bind gesture events. - * @param {!Event} e A mouse down or touch start event. - * @package - */ - bindMouseEvents(e: Event): void; - /** - * Handle a mouse move or touch move event. - * @param {!Event} e A mouse move or touch move event. - * @package - */ - handleMove(e: Event): void; - /** - * Handle a mouse up or touch end event. - * @param {!Event} e A mouse up or touch end event. - * @package - */ - handleUp(e: Event): void; - /** - * Cancel an in-progress gesture. If a workspace or block drag is in - * progress, end the drag at the most recent location. - * @package - */ - cancel(): void; - /** - * Handle a real or faked right-click event by showing a context menu. - * @param {!Event} e A mouse move or touch move event. - * @package - */ - handleRightClick(e: Event): void; - /** - * Handle a mousedown/touchstart event on a workspace. - * @param {!Event} e A mouse down or touch start event. - * @param {!WorkspaceSvg} ws The workspace the event hit. - * @package - */ - handleWsStart(e: Event, ws: WorkspaceSvg): void; - /** - * Fires a workspace click event. - * @param {!WorkspaceSvg} ws The workspace that a user clicks on. - * @private - */ - private fireWorkspaceClick_; - /** - * Handle a mousedown/touchstart event on a flyout. - * @param {!Event} e A mouse down or touch start event. - * @param {!IFlyout} flyout The flyout the event hit. - * @package - */ - handleFlyoutStart(e: Event, flyout: IFlyout): void; - /** - * Handle a mousedown/touchstart event on a block. - * @param {!Event} e A mouse down or touch start event. - * @param {!BlockSvg} block The block the event hit. - * @package - */ - handleBlockStart(e: Event, block: BlockSvg): void; - /** - * Handle a mousedown/touchstart event on a bubble. - * @param {!Event} e A mouse down or touch start event. - * @param {!IBubble} bubble The bubble the event hit. - * @package - */ - handleBubbleStart(e: Event, bubble: () => void): void; - /** - * Execute a bubble click. - * @private - */ - private doBubbleClick_; - /** - * Execute a field click. - * @private - */ - private doFieldClick_; - /** - * Execute a block click. - * @private - */ - private doBlockClick_; - /** - * Execute a workspace click. When in accessibility mode shift clicking will - * move the cursor. - * @param {!Event} _e A mouse up or touch end event. - * @private - */ - private doWorkspaceClick_; - /** - * Move the dragged/clicked block to the front of the workspace so that it is - * not occluded by other blocks. - * @private - */ - private bringBlockToFront_; - /** - * Record the field that a gesture started on. - * @param {Field} field The field the gesture started on. - * @package - */ - setStartField(field: Field): void; - /** - * Record the bubble that a gesture started on - * @param {IBubble} bubble The bubble the gesture started on. - * @package - */ - setStartBubble(bubble: () => void): void; - /** - * Record the block that a gesture started on, and set the target block - * appropriately. - * @param {BlockSvg} block The block the gesture started on. - * @package - */ - setStartBlock(block: BlockSvg): void; - /** - * Record the block that a gesture targets, meaning the block that will be - * dragged if this turns into a drag. If this block is a shadow, that will be - * its first non-shadow parent. - * @param {BlockSvg} block The block the gesture targets. - * @private - */ - private setTargetBlock_; - /** - * Record the workspace that a gesture started on. - * @param {WorkspaceSvg} ws The workspace the gesture started on. - * @private - */ - private setStartWorkspace_; - /** - * Record the flyout that a gesture started on. - * @param {IFlyout} flyout The flyout the gesture started on. - * @private - */ - private setStartFlyout_; - /** - * Whether this gesture is a click on a bubble. This should only be called - * when ending a gesture (mouse up, touch end). - * @return {boolean} Whether this gesture was a click on a bubble. - * @private - */ - private isBubbleClick_; - /** - * Whether this gesture is a click on a block. This should only be called - * when ending a gesture (mouse up, touch end). - * @return {boolean} Whether this gesture was a click on a block. - * @private - */ - private isBlockClick_; - /** - * Whether this gesture is a click on a field. This should only be called - * when ending a gesture (mouse up, touch end). - * @return {boolean} Whether this gesture was a click on a field. - * @private - */ - private isFieldClick_; - /** - * Whether this gesture is a click on a workspace. This should only be called - * when ending a gesture (mouse up, touch end). - * @return {boolean} Whether this gesture was a click on a workspace. - * @private - */ - private isWorkspaceClick_; - /** - * Whether this gesture is a drag of either a workspace or block. - * This function is called externally to block actions that cannot be taken - * mid-drag (e.g. using the keyboard to delete the selected blocks). - * @return {boolean} True if this gesture is a drag of a workspace or block. - * @package - */ - isDragging(): boolean; - /** - * Whether this gesture has already been started. In theory every mouse down - * has a corresponding mouse up, but in reality it is possible to lose a - * mouse up, leaving an in-process gesture hanging. - * @return {boolean} Whether this gesture was a click on a workspace. - * @package - */ - hasStarted(): boolean; - /** - * Get a list of the insertion markers that currently exist. Block drags have - * 0, 1, or 2 insertion markers. - * @return {!Array} A possibly empty list of insertion - * marker blocks. - * @package - */ - getInsertionMarkers(): Array; - /** - * Gets the current dragger if an item is being dragged. Null if nothing is - * being dragged. - * @return {!WorkspaceDragger|!BubbleDragger|!IBlockDragger|null} - * The dragger that is currently in use or null if no drag is in progress. - */ - getCurrentDragger(): WorkspaceDragger | { - draggingBubble_: () => void; - workspace_: WorkspaceSvg; - dragTarget_: (() => void) | null; - wouldDeleteBubble_: boolean; - startXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - dragSurface_: { - SVG_: SVGElement | null; - dragGroup_: SVGElement | null; - container_: Element; - scale_: number; - surfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - } | null; - childSurfaceXY_: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - createDom(): void; - setBlocksAndShow(blocks: SVGElement): void; - translateAndScaleGroup(x: number, y: number, scale: number): void; - translateSurfaceInternal_(): void; - translateBy(deltaX: number, deltaY: number): void; - translateSurface(x: number, y: number): void; - getSurfaceTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - getGroup(): SVGElement | null; - getSvgRoot(): SVGElement | null; - getCurrentBlock(): Element | null; - getWsTranslation(): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - clearAndHide(opt_newSurface?: Element | undefined): void; - }; - dispose(): void; - startBubbleDrag(): void; - dragBubble(e: Event, currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - shouldDelete_(dragTarget: (() => void) | null): boolean; - updateCursorDuringBubbleDrag_(): void; - endBubbleDrag(e: Event, currentDragDeltaXY: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): void; - fireMoveEvent_(): void; - pixelsToWorkspaceUnits_(pixelCoord: { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }): { - x: number; - y: number; - clone(): any; - scale(s: number): any; - translate(tx: number, ty: number): any; - }; - moveToDragSurface_(): void; - } | (() => void) | null; - } - import { WorkspaceSvg } from "core/workspace_svg"; - import { IFlyout } from "core/interfaces/i_flyout"; - import { BlockSvg } from "core/block_svg"; - import { Field } from "core/field"; - import { WorkspaceDragger } from "core/workspace_dragger"; -} -declare module "core/touch" { - /** - * Whether touch is enabled in the browser. - * Copied from Closure's goog.events.BrowserFeature.TOUCH_ENABLED - * @const - */ - export const TOUCH_ENABLED: boolean; - /** - * The TOUCH_MAP lookup dictionary specifies additional touch events to fire, - * in conjunction with mouse events. - * @type {Object} - * @alias Blockly.Touch.TOUCH_MAP - */ - export let TOUCH_MAP: Object; - /** - * Context menus on touch devices are activated using a long-press. - * Unfortunately the contextmenu touch event is currently (2015) only supported - * by Chrome. This function is fired on any touchstart event, queues a task, - * which after about a second opens the context menu. The tasks is killed - * if the touch event terminates early. - * @param {!Event} e Touch start event. - * @param {Gesture} gesture The gesture that triggered this longStart. - * @alias Blockly.Touch.longStart - * @package - */ - export function longStart(e: Event, gesture: Gesture): void; - /** - * Nope, that's not a long-press. Either touchend or touchcancel was fired, - * or a drag hath begun. Kill the queued long-press task. - * @alias Blockly.Touch.longStop - * @package - */ - export function longStop(): void; - /** - * Clear the touch identifier that tracks which touch stream to pay attention - * to. This ends the current drag/gesture and allows other pointers to be - * captured. - * @alias Blockly.Touch.clearTouchIdentifier - */ - export function clearTouchIdentifier(): void; - /** - * Decide whether Blockly should handle or ignore this event. - * Mouse and touch events require special checks because we only want to deal - * with one touch stream at a time. All other events should always be handled. - * @param {!Event} e The event to check. - * @return {boolean} True if this event should be passed through to the - * registered handler; false if it should be blocked. - * @alias Blockly.Touch.shouldHandleEvent - */ - export function shouldHandleEvent(e: Event): boolean; - /** - * Get the touch identifier from the given event. If it was a mouse event, the - * identifier is the string 'mouse'. - * @param {!Event} e Mouse event or touch event. - * @return {string} The touch identifier from the first changed touch, if - * defined. Otherwise 'mouse'. - * @alias Blockly.Touch.getTouchIdentifierFromEvent - */ - export function getTouchIdentifierFromEvent(e: Event): string; - /** - * Check whether the touch identifier on the event matches the current saved - * identifier. If there is no identifier, that means it's a mouse event and - * we'll use the identifier "mouse". This means we won't deal well with - * multiple mice being used at the same time. That seems okay. - * If the current identifier was unset, save the identifier from the - * event. This starts a drag/gesture, during which touch events with other - * identifiers will be silently ignored. - * @param {!Event} e Mouse event or touch event. - * @return {boolean} Whether the identifier on the event matches the current - * saved identifier. - * @alias Blockly.Touch.checkTouchIdentifier - */ - export function checkTouchIdentifier(e: Event): boolean; - /** - * Set an event's clientX and clientY from its first changed touch. Use this to - * make a touch event work in a mouse event handler. - * @param {!Event} e A touch event. - * @alias Blockly.Touch.setClientFromTouch - */ - export function setClientFromTouch(e: Event): void; - /** - * Check whether a given event is a mouse or touch event. - * @param {!Event} e An event. - * @return {boolean} True if it is a mouse or touch event; false otherwise. - * @alias Blockly.Touch.isMouseOrTouchEvent - */ - export function isMouseOrTouchEvent(e: Event): boolean; - /** - * Check whether a given event is a touch event or a pointer event. - * @param {!Event} e An event. - * @return {boolean} True if it is a touch event; false otherwise. - * @alias Blockly.Touch.isTouchEvent - */ - export function isTouchEvent(e: Event): boolean; - /** - * Split an event into an array of events, one per changed touch or mouse - * point. - * @param {!Event} e A mouse event or a touch event with one or more changed - * touches. - * @return {!Array} An array of mouse or touch events. Each touch - * event will have exactly one changed touch. - * @alias Blockly.Touch.splitEventByTouches - */ - export function splitEventByTouches(e: Event): Array; - import { Gesture } from "core/gesture"; -} -declare module "core/browser_events" { - /** - * Blockly opaque event data used to unbind events when using - * `bind` and `conditionalBind`. - */ - export type Data = Array; - /** - * Blockly opaque event data used to unbind events when using - * `bind` and `conditionalBind`. - * @typedef {!Array} - * @alias Blockly.browserEvents.Data - */ - export let Data: any; - /** - * Bind an event handler that can be ignored if it is not part of the active - * touch stream. - * Use this for events that either start or continue a multi-part gesture (e.g. - * mousedown or mousemove, which may be part of a drag or click). - * @param {!EventTarget} node Node upon which to listen. - * @param {string} name Event name to listen to (e.g. 'mousedown'). - * @param {?Object} thisObject The value of 'this' in the function. - * @param {!Function} func Function to call when event is triggered. - * @param {boolean=} opt_noCaptureIdentifier True if triggering on this event - * should not block execution of other event handlers on this touch or - * other simultaneous touches. False by default. - * @param {boolean=} opt_noPreventDefault True if triggering on this event - * should prevent the default handler. False by default. If - * opt_noPreventDefault is provided, opt_noCaptureIdentifier must also be - * provided. - * @return {!Data} Opaque data that can be passed to - * unbindEvent_. - * @alias Blockly.browserEvents.conditionalBind - */ - export function conditionalBind(node: EventTarget, name: string, thisObject: Object | null, func: Function, opt_noCaptureIdentifier?: boolean | undefined, opt_noPreventDefault?: boolean | undefined): any[][]; - /** - * Bind an event handler that should be called regardless of whether it is part - * of the active touch stream. - * Use this for events that are not part of a multi-part gesture (e.g. - * mouseover for tooltips). - * @param {!EventTarget} node Node upon which to listen. - * @param {string} name Event name to listen to (e.g. 'mousedown'). - * @param {?Object} thisObject The value of 'this' in the function. - * @param {!Function} func Function to call when event is triggered. - * @return {!Data} Opaque data that can be passed to - * unbindEvent_. - * @alias Blockly.browserEvents.bind - */ - export function bind(node: EventTarget, name: string, thisObject: Object | null, func: Function): any[][]; - /** - * Unbind one or more events event from a function call. - * @param {!Data} bindData Opaque data from bindEvent_. - * This list is emptied during the course of calling this function. - * @return {!Function} The function call. - * @alias Blockly.browserEvents.unbind - */ - export function unbind(bindData: any[][]): Function; - /** - * Returns true if this event is targeting a text input widget? - * @param {!Event} e An event. - * @return {boolean} True if text input. - * @alias Blockly.browserEvents.isTargetInput - */ - export function isTargetInput(e: Event): boolean; - /** - * Returns true this event is a right-click. - * @param {!Event} e Mouse event. - * @return {boolean} True if right-click. - * @alias Blockly.browserEvents.isRightButton - */ - export function isRightButton(e: Event): boolean; - /** - * Returns the converted coordinates of the given mouse event. - * The origin (0,0) is the top-left corner of the Blockly SVG. - * @param {!Event} e Mouse event. - * @param {!Element} svg SVG element. - * @param {?SVGMatrix} matrix Inverted screen CTM to use. - * @return {!SVGPoint} Object with .x and .y properties. - * @alias Blockly.browserEvents.mouseToSvg - */ - export function mouseToSvg(e: Event, svg: Element, matrix: SVGMatrix | null): SVGPoint; - /** - * Returns the scroll delta of a mouse event in pixel units. - * @param {!Event} e Mouse event. - * @return {{x: number, y: number}} Scroll delta object with .x and .y - * properties. - * @alias Blockly.browserEvents.getScrollDeltaPixels - */ - export function getScrollDeltaPixels(e: Event): { - x: number; - y: number; - }; -} -declare module "core/tooltip" { - /** - * A type which can define a tooltip. - * Either a string, an object containing a tooltip property, or a function which - * returns either a string, or another arbitrarily nested function which - * eventually unwinds to a string. - */ - export type TipInfo = string | { - tooltip: any; - } | (() => (string | Function)); - /** - * A type which can define a tooltip. - * Either a string, an object containing a tooltip property, or a function which - * returns either a string, or another arbitrarily nested function which - * eventually unwinds to a string. - * @typedef {string|{tooltip}|function(): (string|!Function)} - * @alias Blockly.Tooltip.TipInfo - */ - export let TipInfo: any; - /** - * A function that renders custom tooltip UI. - * 1st parameter: the div element to render content into. - * 2nd parameter: the element being moused over (i.e., the element for which the - * tooltip should be shown). - */ - export type CustomTooltip = (arg0: Element, arg1: Element) => any; - /** - * A function that renders custom tooltip UI. - * 1st parameter: the div element to render content into. - * 2nd parameter: the element being moused over (i.e., the element for which the - * tooltip should be shown). - * @typedef {function(!Element, !Element)} - * @alias Blockly.Tooltip.CustomTooltip - */ - export let CustomTooltip: any; - /** - * Sets a custom function that will be called if present instead of the default - * tooltip UI. - * @param {!CustomTooltip} customFn A custom tooltip used to render an alternate - * tooltip UI. - * @alias Blockly.Tooltip.setCustomTooltip - */ - export function setCustomTooltip(customFn: CustomTooltip): void; - /** - * Gets the custom tooltip function. - * @returns {!CustomTooltip|undefined} The custom tooltip function, if defined. - */ - export function getCustomTooltip(): CustomTooltip | undefined; - /** - * Returns whether or not a tooltip is showing - * @returns {boolean} True if a tooltip is showing - * @alias Blockly.Tooltip.isVisible - */ - export function isVisible(): boolean; - /** - * Maximum width (in characters) of a tooltip. - * @alias Blockly.Tooltip.LIMIT - */ - export const LIMIT: 50; - /** - * Horizontal offset between mouse cursor and tooltip. - * @alias Blockly.Tooltip.OFFSET_X - */ - export const OFFSET_X: 0; - /** - * Vertical offset between mouse cursor and tooltip. - * @alias Blockly.Tooltip.OFFSET_Y - */ - export const OFFSET_Y: 10; - /** - * Radius mouse can move before killing tooltip. - * @alias Blockly.Tooltip.RADIUS_OK - */ - export const RADIUS_OK: 10; - /** - * Delay before tooltip appears. - * @alias Blockly.Tooltip.HOVER_MS - */ - export const HOVER_MS: 750; - /** - * Horizontal padding between tooltip and screen edge. - * @alias Blockly.Tooltip.MARGINS - */ - export const MARGINS: 5; - /** - * Returns the HTML tooltip container. - * @returns {?HTMLDivElement} The HTML tooltip container. - * @alias Blockly.Tooltip.getDiv - */ - export function getDiv(): HTMLDivElement | null; - /** - * Returns the tooltip text for the given element. - * @param {?Object} object The object to get the tooltip text of. - * @return {string} The tooltip text of the element. - * @alias Blockly.Tooltip.getTooltipOfObject - */ - export function getTooltipOfObject(object: Object | null): string; - /** - * Create the tooltip div and inject it onto the page. - * @alias Blockly.Tooltip.createDom - */ - export function createDom(): void; - /** - * Binds the required mouse events onto an SVG element. - * @param {!Element} element SVG element onto which tooltip is to be bound. - * @alias Blockly.Tooltip.bindMouseEvents - */ - export function bindMouseEvents(element: Element): void; - /** - * Unbinds tooltip mouse events from the SVG element. - * @param {!Element} element SVG element onto which tooltip is bound. - * @alias Blockly.Tooltip.unbindMouseEvents - */ - export function unbindMouseEvents(element: Element): void; - /** - * Dispose of the tooltip. - * @alias Blockly.Tooltip.dispose - * @package - */ - export function dispose(): void; - /** - * Hide the tooltip. - * @alias Blockly.Tooltip.hide - */ - export function hide(): void; - /** - * Hide any in-progress tooltips and block showing new tooltips until the next - * call to unblock(). - * @alias Blockly.Tooltip.block - * @package - */ - export function block(): void; - /** - * Unblock tooltips: allow them to be scheduled and shown according to their own - * logic. - * @alias Blockly.Tooltip.unblock - * @package - */ - export function unblock(): void; -} -declare module "core/utils/object" { - /** - * Inherit the prototype methods from one constructor into another. - * @param {!Function} childCtor Child class. - * @param {!Function} parentCtor Parent class. - * @suppress {strictMissingProperties} superClass_ is not defined on Function. - * @alias Blockly.utils.object.inherits - */ - export function inherits(childCtor: Function, parentCtor: Function): void; - /** - * Copies all the members of a source object to a target object. - * @param {!Object} target Target. - * @param {!Object} source Source. - * @alias Blockly.utils.object.mixin - */ - export function mixin(target: Object, source: Object): void; - /** - * Complete a deep merge of all members of a source object with a target object. - * @param {!Object} target Target. - * @param {!Object} source Source. - * @return {!Object} The resulting object. - * @alias Blockly.utils.object.deepMerge - */ - export function deepMerge(target: Object, source: Object): Object; - /** - * Returns an array of a given object's own enumerable property values. - * @param {!Object} obj Object containing values. - * @return {!Array} Array of values. - * @alias Blockly.utils.object.values - */ - export function values(obj: Object): any[]; -} -declare module "core/theme" { - /** - * Class for a theme. - * @alias Blockly.Theme - */ - export class Theme { - /** - * Define a new Blockly theme. - * @param {string} name The name of the theme. - * @param {!Object} themeObj An object containing theme properties. - * @return {!Theme} A new Blockly theme. - */ - static defineTheme(name: string, themeObj: Object): Theme; - /** - * @param {string} name Theme name. - * @param {!Object=} opt_blockStyles A map - * from style names (strings) to objects with style attributes for blocks. - * @param {!Object=} opt_categoryStyles A - * map from style names (strings) to objects with style attributes for - * categories. - * @param {!Theme.ComponentStyle=} opt_componentStyles A map of Blockly - * component names to style value. - */ - constructor(name: string, opt_blockStyles?: { - [x: string]: Theme.BlockStyle; - } | undefined, opt_categoryStyles?: { - [x: string]: Theme.CategoryStyle; - } | undefined, opt_componentStyles?: Theme.ComponentStyle | undefined); - /** - * The theme name. This can be used to reference a specific theme in CSS. - * @type {string} - */ - name: string; - /** - * The block styles map. - * @type {!Object} - * @package - */ - blockStyles: { - [x: string]: Theme.BlockStyle; - }; - /** - * The category styles map. - * @type {!Object} - * @package - */ - categoryStyles: { - [x: string]: Theme.CategoryStyle; - }; - /** - * The UI components styles map. - * @type {!Theme.ComponentStyle} - * @package - */ - componentStyles: Theme.ComponentStyle; - /** - * The font style. - * @type {!Theme.FontStyle} - * @package - */ - fontStyle: Theme.FontStyle; - /** - * Whether or not to add a 'hat' on top of all blocks with no previous or - * output connections. - * @type {?boolean} - * @package - */ - startHats: boolean | null; - /** - * Gets the class name that identifies this theme. - * @return {string} The CSS class name. - * @package - */ - getClassName(): string; - /** - * Overrides or adds a style to the blockStyles map. - * @param {string} blockStyleName The name of the block style. - * @param {Theme.BlockStyle} blockStyle The block style. - */ - setBlockStyle(blockStyleName: string, blockStyle: Theme.BlockStyle): void; - /** - * Overrides or adds a style to the categoryStyles map. - * @param {string} categoryStyleName The name of the category style. - * @param {Theme.CategoryStyle} categoryStyle The category style. - */ - setCategoryStyle(categoryStyleName: string, categoryStyle: Theme.CategoryStyle): void; - /** - * Gets the style for a given Blockly UI component. If the style value is a - * string, we attempt to find the value of any named references. - * @param {string} componentName The name of the component. - * @return {?string} The style value. - */ - getComponentStyle(componentName: string): string | null; - /** - * Configure a specific Blockly UI component with a style value. - * @param {string} componentName The name of the component. - * @param {*} styleValue The style value. - */ - setComponentStyle(componentName: string, styleValue: any): void; - /** - * Configure a theme's font style. - * @param {Theme.FontStyle} fontStyle The font style. - */ - setFontStyle(fontStyle: Theme.FontStyle): void; - /** - * Configure a theme's start hats. - * @param {boolean} startHats True if the theme enables start hats, false - * otherwise. - */ - setStartHats(startHats: boolean): void; - } - export namespace Theme { - /** - * A block style. - */ - type BlockStyle = { - colourPrimary: string; - colourSecondary: string; - colourTertiary: string; - hat: string; - }; - /** - * A category style. - */ - type CategoryStyle = { - colour: string; - }; - /** - * A component style. - */ - type ComponentStyle = { - workspaceBackgroundColour: string | null; - toolboxBackgroundColour: string | null; - toolboxForegroundColour: string | null; - flyoutBackgroundColour: string | null; - flyoutForegroundColour: string | null; - flyoutOpacity: number | null; - scrollbarColour: string | null; - scrollbarOpacity: number | null; - insertionMarkerColour: string | null; - insertionMarkerOpacity: number | null; - markerColour: string | null; - cursorColour: string | null; - selectedGlowColour: string | null; - selectedGlowOpacity: number | null; - replacementGlowColour: string | null; - replacementGlowOpacity: number | null; - }; - /** - * A font style. - */ - type FontStyle = { - family: string | null; - weight: string | null; - size: number | null; - }; - } -} -declare module "core/renderers/common/constants" { - /** - * An object that provides constants for rendering blocks. - * @alias Blockly.blockRendering.ConstantProvider - */ - export class ConstantProvider { - /** - * The size of an empty spacer. - * @type {number} - */ - NO_PADDING: number; - /** - * The size of small padding. - * @type {number} - */ - SMALL_PADDING: number; - /** - * The size of medium padding. - * @type {number} - */ - MEDIUM_PADDING: number; - /** - * The size of medium-large padding. - * @type {number} - */ - MEDIUM_LARGE_PADDING: number; - /** - * The size of large padding. - * @type {number} - */ - LARGE_PADDING: number; - /** - * Offset from the top of the row for placing fields on inline input rows - * and statement input rows. - * Matches existing rendering (in 2019). - * @type {number} - */ - TALL_INPUT_FIELD_OFFSET_Y: number; - /** - * The height of the puzzle tab used for input and output connections. - * @type {number} - */ - TAB_HEIGHT: number; - /** - * The offset from the top of the block at which a puzzle tab is positioned. - * @type {number} - */ - TAB_OFFSET_FROM_TOP: number; - /** - * Vertical overlap of the puzzle tab, used to make it look more like a - * puzzle piece. - * @type {number} - */ - TAB_VERTICAL_OVERLAP: number; - /** - * The width of the puzzle tab used for input and output connections. - * @type {number} - */ - TAB_WIDTH: number; - /** - * The width of the notch used for previous and next connections. - * @type {number} - */ - NOTCH_WIDTH: number; - /** - * The height of the notch used for previous and next connections. - * @type {number} - */ - NOTCH_HEIGHT: number; - /** - * The minimum width of the block. - * @type {number} - */ - MIN_BLOCK_WIDTH: number; - EMPTY_BLOCK_SPACER_HEIGHT: number; - /** - * The minimum height of a dummy input row. - * @type {number} - */ - DUMMY_INPUT_MIN_HEIGHT: number; - /** - * The minimum height of a dummy input row in a shadow block. - * @type {number} - */ - DUMMY_INPUT_SHADOW_MIN_HEIGHT: number; - /** - * Rounded corner radius. - * @type {number} - */ - CORNER_RADIUS: number; - /** - * Offset from the left side of a block or the inside of a statement input - * to the left side of the notch. - * @type {number} - */ - NOTCH_OFFSET_LEFT: number; - /** - * Additional offset added to the statement input's width to account for the - * notch. - * @type {number} - */ - STATEMENT_INPUT_NOTCH_OFFSET: number; - STATEMENT_BOTTOM_SPACER: number; - STATEMENT_INPUT_PADDING_LEFT: number; - /** - * Vertical padding between consecutive statement inputs. - * @type {number} - */ - BETWEEN_STATEMENT_PADDING_Y: number; - /** - * The top row's minimum height. - * @type {number} - */ - TOP_ROW_MIN_HEIGHT: number; - /** - * The top row's minimum height if it precedes a statement. - * @type {number} - */ - TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT: number; - /** - * The bottom row's minimum height. - * @type {number} - */ - BOTTOM_ROW_MIN_HEIGHT: number; - /** - * The bottom row's minimum height if it follows a statement input. - * @type {number} - */ - BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT: number; - /** - * Whether to add a 'hat' on top of all blocks with no previous or output - * connections. Can be overridden by 'hat' property on Theme.BlockStyle. - * @type {boolean} - */ - ADD_START_HATS: boolean; - /** - * Height of the top hat. - * @type {number} - */ - START_HAT_HEIGHT: number; - /** - * Width of the top hat. - * @type {number} - */ - START_HAT_WIDTH: number; - SPACER_DEFAULT_HEIGHT: number; - MIN_BLOCK_HEIGHT: number; - EMPTY_INLINE_INPUT_PADDING: number; - /** - * The height of an empty inline input. - * @type {number} - */ - EMPTY_INLINE_INPUT_HEIGHT: number; - EXTERNAL_VALUE_INPUT_PADDING: number; - /** - * The height of an empty statement input. Note that in the old rendering - * this varies slightly depending on whether the block has external or - * inline inputs. In the new rendering this is consistent. It seems - * unlikely that the old behaviour was intentional. - * @type {number} - */ - EMPTY_STATEMENT_INPUT_HEIGHT: number; - START_POINT: string; - /** - * Height of SVG path for jagged teeth at the end of collapsed blocks. - * @type {number} - */ - JAGGED_TEETH_HEIGHT: number; - /** - * Width of SVG path for jagged teeth at the end of collapsed blocks. - * @type {number} - */ - JAGGED_TEETH_WIDTH: number; - /** - * Point size of text. - * @type {number} - */ - FIELD_TEXT_FONTSIZE: number; - /** - * Text font weight. - * @type {string} - */ - FIELD_TEXT_FONTWEIGHT: string; - /** - * Text font family. - * @type {string} - */ - FIELD_TEXT_FONTFAMILY: string; - /** - * Height of text. This constant is dynamically set in - * ``setFontConstants_`` to be the height of the text based on the font - * used. - * @type {number} - */ - FIELD_TEXT_HEIGHT: number; - /** - * Text baseline. This constant is dynamically set in ``setFontConstants_`` - * to be the baseline of the text based on the font used. - * @type {number} - */ - FIELD_TEXT_BASELINE: number; - /** - * A field's border rect corner radius. - * @type {number} - */ - FIELD_BORDER_RECT_RADIUS: number; - /** - * A field's border rect default height. - * @type {number} - */ - FIELD_BORDER_RECT_HEIGHT: number; - /** - * A field's border rect X padding. - * @type {number} - */ - FIELD_BORDER_RECT_X_PADDING: number; - /** - * A field's border rect Y padding. - * @type {number} - */ - FIELD_BORDER_RECT_Y_PADDING: number; - /** - * The backing colour of a field's border rect. - * @type {string} - * @package - */ - FIELD_BORDER_RECT_COLOUR: string; - /** - * A field's text element's dominant baseline. - * @type {boolean} - */ - FIELD_TEXT_BASELINE_CENTER: boolean; - /** - * A dropdown field's border rect height. - * @type {number} - */ - FIELD_DROPDOWN_BORDER_RECT_HEIGHT: number; - /** - * Whether or not a dropdown field should add a border rect when in a shadow - * block. - * @type {boolean} - */ - FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW: boolean; - /** - * Whether or not a dropdown field's div should be coloured to match the - * block colours. - * @type {boolean} - */ - FIELD_DROPDOWN_COLOURED_DIV: boolean; - /** - * Whether or not a dropdown field uses a text or SVG arrow. - * @type {boolean} - */ - FIELD_DROPDOWN_SVG_ARROW: boolean; - /** - * A dropdown field's SVG arrow padding. - * @type {number} - */ - FIELD_DROPDOWN_SVG_ARROW_PADDING: number; - /** - * A dropdown field's SVG arrow size. - * @type {number} - */ - FIELD_DROPDOWN_SVG_ARROW_SIZE: number; - /** - * A dropdown field's SVG arrow datauri. - * @type {string} - */ - FIELD_DROPDOWN_SVG_ARROW_DATAURI: string; - /** - * Whether or not to show a box shadow around the widget div. This is only a - * feature of full block fields. - * @type {boolean} - */ - FIELD_TEXTINPUT_BOX_SHADOW: boolean; - /** - * Whether or not the colour field should display its colour value on the - * entire block. - * @type {boolean} - */ - FIELD_COLOUR_FULL_BLOCK: boolean; - /** - * A colour field's default width. - * @type {number} - */ - FIELD_COLOUR_DEFAULT_WIDTH: number; - /** - * A colour field's default height. - * @type {number} - */ - FIELD_COLOUR_DEFAULT_HEIGHT: number; - /** - * A checkbox field's X offset. - * @type {number} - */ - FIELD_CHECKBOX_X_OFFSET: number; - /** - * A random identifier used to ensure a unique ID is used for each - * filter/pattern for the case of multiple Blockly instances on a page. - * @type {string} - * @package - */ - randomIdentifier: string; - /** - * The defs tag that contains all filters and patterns for this Blockly - * instance. - * @type {?SVGElement} - * @private - */ - private defs_; - /** - * The ID of the emboss filter, or the empty string if no filter is set. - * @type {string} - * @package - */ - embossFilterId: string; - /** - * The element to use for highlighting, or null if not set. - * @type {SVGElement} - * @private - */ - private embossFilter_; - /** - * The ID of the disabled pattern, or the empty string if no pattern is set. - * @type {string} - * @package - */ - disabledPatternId: string; - /** - * The element to use for disabled blocks, or null if not set. - * @type {SVGElement} - * @private - */ - private disabledPattern_; - /** - * The ID of the debug filter, or the empty string if no pattern is set. - * @type {string} - * @package - */ - debugFilterId: string; - /** - * The element to use for a debug highlight, or null if not set. - * @type {SVGElement} - * @private - */ - private debugFilter_; - /** - * The